<?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>Cataloger</name>
	<version>1.0.2</version>
    <mincmsversion>2.1</mincmsversion>
	<help><![CDATA[PGRpdiBpZD0icGFnZV90YWJzIj4NCiAgPGRpdiBpZD0iZ2VuZXJhbCI+DQogICAgV2hhdCBJcyBJdA0KICA8L2Rpdj4gICAgDQogIDxkaXYgaWQ9ImhvdyI+DQogICAgSG93IFRvIFVzZSBJdA0KICA8L2Rpdj4gICAgDQogIDxkaXYgaWQ9ImZlYXR1cmVsaXN0cyI+DQogICAgRmVhdHVyZSBMaXN0cw0KICA8L2Rpdj4gICAgDQogIDxkaXYgaWQ9ImltYWdlc3lzIj4NCiAgICBDYXRhbG9nZXIgSW1hZ2UgU3lzdGVtDQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJhZHZhbmNlZCI+DQogICAgQ3VzdG9taXphdGlvbiBhbmQgQWR2YW5jZWQgVG9waWNzDQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJ3aGF0c25ldyI+DQogICAgV2hhdCdzIG5ldw0KICA8L2Rpdj4NCiAgPGRpdiBpZD0iYWJvdXQiPg0KICAgIEFib3V0DQogIDwvZGl2Pg0KPC9kaXY+ICAgICAgIA0KDQoNCjxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+DQoNCg0KPGRpdiBpZD0icGFnZV9jb250ZW50Ij4NCg0KDQogIDxkaXYgaWQ9ImdlbmVyYWxfYyI+DQogICAgPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQogICAgPHA+VGhpcyBtb2R1bGUgbGV0cyB5b3UgY3JlYXRlIG9ubGluZSBjYXRhbG9ncyBvciBwb3J0Zm9saW9zLiBDYXRhbG9ncyBjb25zaXN0IG9mIDxzdHJvbmc+PC9zdHJvbmc+IkNhdGFsb2cgSXRlbXMiPC9zdHJvbmc+IHdoaWNoIGNvdWxkIGJlIHByb2R1Y3RzLCB3b3JrcyBvZiBhcnQsIG9yIHRoZSBsaWtlLCBhbmQgPHN0cm9uZz4iQ2F0YWxvZyBDYXRlZ29yaWVzIjwvc3Ryb25nPiB3aGljaCBjb3VsZCBiZSBpdGVtIGNhdGVnb3JpZXMgb3Igb3RoZXIgbmF0dXJhbCBkaXZpc2lvbnMgb2YgdGhlIGNhdGFsb2cuPC9wPg0KICAgIDxwPkNhdGVnb3JpZXMgbWF5IGJlIGRlZmluZWQgaGllcmFyY2hpY2FsbHkgKHVzaW5nIHRoZSBzdGFuZGFyZCBDTVMgTWFkZSBTaW1wbGUgY29udGVudCBsaXN0KS4gQ2F0ZWdvcnkgcGFnZXMgY2FuIGRpc3BsYXkgaXRlbXMgaW4gdGhlIGNhdGVnb3J5IGFuZC9vciBzdWJjYXRlZ29yaWVzLCBvcHRpb25hbGx5IHJlY3Vyc2luZyB0aHJvdWdoIHN1Yi1jYXRlZ29yaWVzLiBUaGlzIGJlaGF2aW9yIGNhbiBiZSBjb25maWd1cmVkIG9uIGEgcGVyLWNhdGVnb3J5IGJhc2lzLjwvUD4NCiAgICA8cD5UaGVyZSBpcyBhbHNvIGEgPHN0cm9uZz4iUHJpbnRhYmxlIENhdGFsb2ciPC9zdHJvbmc+LCB3aGljaCByZXByZXNlbnRzIHRoZSB3aG9sZSBjb2xsZWN0aW9uIG9mIENhdGFsb2cgSXRlbXMgb24gYSBzaW5nbGUgcGFnZS48L3A+DQogICAgPHA+VGhlIG1vZHVsZSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgPHN0cm9uZz4iQ29udGVudCBBbGlhc2VzIjwvc3Ryb25nPiAoYSBtb2R1bGUgYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudGFsaWFzZXMiPnRoZSBEZXZlbG9wZXIgRm9yZ2U8L2E+KSwgd2hpY2ggYWxsb3dzIHlvdSB0byBwbGFjZSBhbnkgQ2F0YWxvZyBJdGVtIGludG8gbXVsdGlwbGUgQ2F0YWxvZyBDYXRlZ29yaWVzLjwvcD4NCiAgICA8cD48ZGl2IGNsYXNzPSd3YXJuaW5nJz5BcyBvZiB2ZXJzaW9uIDEuMCBDYXRhbG9nZXIgb25seSB3b3JrcyBvbiBDTVNNUyAyLnguPC9kaXY+PC9wPg0KICA8L2Rpdj4NCiAgDQogIA0KICA8ZGl2IGlkPSJob3dfYyI+DQogICAgPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+DQogICAgPHA+V2hlbiB5b3UgaW5zdGFsbCB0aGlzIG1vZHVsZSwgaXQgY3JlYXRlcyB0aHJlZSBuZXcgQ29udGVudCBUeXBlczogPHN0cm9uZz5DYXRhbG9nIEl0ZW08L3N0cm9uZz4sIDxzdHJvbmc+Q2F0YWxvZyBDYXRlZ29yeTwvc3Ryb25nPiwgYW5kIDxzdHJvbmc+UHJpbnRhYmxlIENhdGFsb2c8L3N0cm9uZz4uIFdoZW4geW91J3JlIGluIHlvdXIgc2l0ZSBhZG1pbmlzdHJhdGlvbiBjYXRlZ29yeSwgeW91IGFkZCA8c3Ryb25nPkNhdGFsb2cgSXRlbXM8L3N0cm9uZz4gYW5kIDxzdHJvbmc+Q2F0YWxvZyBDYXRlZ29yaWVzPC9zdHJvbmc+IGp1c3QgYXMgeW91IHdvdWxkIGFueSBvdGhlciBraW5kIG9mIHBhZ2UuIFNlbGVjdCBDb250ZW50ICZndDsgUGFnZXMgJmd0OyBBZGQgQ29udGVudCwgYW5kIHRoZW4gc2VsZWN0IDxzdHJvbmc+IkNhdGFsb2cgSXRlbSI8L3N0cm9uZz4gb3IgPHN0cm9uZz4iQ2F0YWxvZyBDYXRlZ29yeSI8L3N0cm9uZz4gZnJvbSB0aGUgPHN0cm9uZz5Db250ZW50IFR5cGUgcHVsbGRvd248L3N0cm9uZz4uPC9wPg0KICAgIDxoND5DYXRhbG9nIEl0ZW1zPC9oND4NCiAgICA8cD5BZGRpbmcgYSA8c3Ryb25nPkNhdGFsb2cgSXRlbTwvc3Ryb25nPiBpcyBzaW1pbGFyIHRvIGFkZGluZyBhbiBvcmRpbmFyeSBwYWdlIHRvIHlvdXIgc2l0ZS4gVGhlIGRhdGEgZmllbGRzIGZvciB0aGUgSXRlbSBhcmUgbm90IGV4YWN0bHkgdGhlIHNhbWUsIGhvd2V2ZXIuIEFsc28gbm90ZSB0aGF0IGluIHRoZSAiSW1hZ2VzIiB0YWIsIHlvdSBjYW4gc2VsZWN0IG11bHRpcGxlIGltYWdlcyB0byB1cGxvYWQgZm9yIHRoZSBpdGVtLiBXaGVuIHlvdSB1cGxvYWQgaW1hZ2VzLCB0aGUgc3lzdGVtIHdpbGwgc2l6ZSB0aGVtIGFwcHJvcHJpYXRlbHkgZm9yIHRoZSBjYXRhbG9nLCBjcmVhdGUgdGh1bWJuYWlscyBmb3IgdXNlIGluIHRoZSBJdGVtJ3MgcGFnZSwgY3JlYXRlIHRodW1ibmFpbHMgZm9yIGFueSBDYXRlZ29yeSBwYWdlcywgYW5kIHNvIG9uLjwvcD4NCiAgICA8cD48ZGl2IGNsYXNzPSd3YXJuaW5nJz5TZWUgaW1hZ2UgdXNlIGJlbG93LjwvZGl2PjwvcD4NCg0KICAgIDxoND5DYXRhbG9nIENhdGVnb3JpZXM8L2g0Pg0KICAgIDxwPkEgPHN0cm9uZz5DYXRhbG9nIENhdGVnb3J5PC9zdHJvbmc+IGlzIHVzZWQgZm9yIG9yZ2FuaXppbmcgeW91ciBjYXRhbG9nIGl0ZW1zLiBJdCBwcm92aWRlcyBhIHBhZ2UgdGhhdCBsaXN0cyBDYXRhbG9nZXIgY29udGVudCB0aGF0IGlzIGNvbnRhaW5lZCBieSBpdC4gQSBDYXRhbG9nIEl0ZW0gaXMgY29uc2lkZXJlZCB0byBiZSBwYXJ0IG9mIGEgQ2F0YWxvZyBDYXRlZ29yeSBpZiBpdCBpcyBiZWxvdyB0aGF0IENhdGVnb3J5IGluIHRoZSBTaXRlIEhpZXJhcmNoeS4gQ2F0ZWdvcmllcyBjYW4gc2ltaWxhcmx5IGluY2x1ZGUgb3RoZXIgQ2F0ZWdvcmllcy48L3A+DQogICAgPHA+Q2F0YWxvZyBDYXRlZ29yaWVzIGhhdmUgYSBudW1iZXIgb2Ygc2V0dGluZ3MgdG8gZGV0ZXJtaW5lIGhvdyB0aGV5IHNob3VsZCBkaXNwbGF5IHRoZSBJdGVtcyBhbmQgQ2F0ZWdvcmllcyB0aGV5IGNvbnRhaW46IGlmIHlvdSBsb29rIGF0IHRoZSA8c3Ryb25nPiJPcHRpb25zIjwvc3Ryb25nPiB0YWIsIHlvdSBjYW4gY2hvb3NlIGhvdyBtYW55IGl0ZW1zIGFuZC9vciBjYXRlZ29yaWVzIHRvIHNob3csIHdoYXQgb3JkZXIgdG8gc2hvdyB0aGVtIGluLCB3aGV0aGVyIHRvIGRpc3BsYXkgb25seSBpdGVtcyBvciBvbmx5IGNhdGVnb3JpZXMgb3IgYm90aCwgYW5kIGhvdyBtYW55IGxldmVscyBvZiB0aGUgaGllcmFyY2h5IHRvIGRpc3BsYXkgYmVsb3cgdGhlIGNhdGVnb3J5IHBhZ2UuPC9wPg0KICAgIDxicj4NCiAgICA8cD5Gb3IgZXhhbXBsZSwgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6PC9wPg0KICAgIDxvbD4NCiAgICAgIDxsaT48Yj5IYXRzPC9iPg0KICAgICAgICA8b2w+DQogICAgICAgICAgPGxpPjxiPkZhc2hpb248L2I+DQogICAgICAgICAgICAgPG9sPg0KICAgICAgICAgICAgICAgPGxpPkZlYXRoZXJlZCBIYXQ8L2xpPjxsaT5GZWRvcmEgPC9saT48bGk+QmFzZWJhbGwgSGF0PC9saT4NCiAgICAgICAgICAgICA8L29sPg0KICAgICAgICAgICA8L2xpPg0KICAgICAgICAgICA8bGk+PGI+V29yayBIYXRzPC9iPg0KICAgICAgICAgICAgICA8b2w+DQogICAgICAgICAgICAgICAgPGxpPkhhcmQgSGF0PC9saT48bGk+RGl2aW5nIEhlbG1ldDwvbGk+DQogICAgICAgICAgICAgIDwvb2w+DQogICAgICAgICAgICA8L2xpPg0KICAgICAgICA8L29sPg0KICAgICAgPC9saT4NCiAgICA8L29sPg0KICAgIDxwPkluIHRoaXMgZGlhZ3JhbSwgaXRlbXMgaW4gYm9sZCBhcmUgQ2F0YWxvZyBDYXRlZ29yaWVzLCBhbGwgb3RoZXIgaXRlbXMgYXJlIENhdGFsb2cgSXRlbXMuIERlcGVuZGluZyB1cG9uIGhvdyB5b3Ugc2V0IHlvdXIgb3B0aW9ucywgdGhlIDxzdHJvbmc+SGF0czwvc3Ryb25nPiBDYXRlZ29yeSBQYWdlIGNhbiBzaG93IG9ubHkgZW50cmllcyBmb3IgdGhlIDxzdHJvbmc+RmFzaGlvbjwvc3Ryb25nPiBhbmQgPHN0cm9uZz5Xb3JrIEhhdHM8L3N0cm9uZz4gQ2F0ZWdvcnkgUGFnZXMsIG9yIGl0IGNhbiBzaG93IGVudHJpZXMgZm9yIDxzdHJvbmc+RmFzaGlvbjwvc3Ryb25nPiwgPHN0cm9uZz5Xb3JrIEhhdHM8L3N0cm9uZz4sIGFuZCBhbGwgdGhlIGhhdHMgbGlzdGVkIGJlbG93IHRoZW0uPC9wPg0KICAgIDxwPllvdSBjYW4gb3B0IHRvIHNob3cgdGhlIGl0ZW1zIGluICJuYXR1cmFsIiBvcmRlciAoaS5lLiwgdGhlIG9yZGVyIHRoZSBJdGVtcyBzaG93IHVwIGluIHRoZSBDTVMgQ29udGVudCBIaWVyYXJjaHkpLCBvciBpbiBhbHBoYWJldGljYWwgb3JkZXIuPC9QPg0KICAgIDxwPklmIHlvdSBoYXZlIGxhcmdlIG51bWJlcnMgb2YgaXRlbXMgaW4gYSBDYXRlZ29yeSwgeW91IGNhbiBzZXQgdGhlIG1heGltdW0gbnVtYmVyIHRvIGJlIGRpc3BsYXllZCBpbiBhIENhdGVnb3J5IFBhZ2UsIGFuZCB0aGUgcGFnZSB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGxpbmtzIHRvIG5hdmlnYXRlIHRocm91Z2ggdGhlIGxpc3QuPC9wPg0KICAgIDxwPkVhY2ggQ2F0ZWdvcnkgcGFnZSBjYW4gaGF2ZSBkaWZmZXJlbnQgc2V0dGluZ3MgZm9yIHNvcnQgb3JkZXIsIGxldmVscyB0byBkaXNwbGF5LCBhbmQgbnVtYmVyIG9mIGl0ZW1zLiBZb3UgY2FuIHNldCB0aGUgZGVmYXVsdCBmb3IgdGhlc2UgdmFsdWVzIGluIDxzdHJvbmc+PGVtPkV4dGVuc2lvbnMgJmd0OyBDYXRhbG9nZXIgJmd0OyBNYW5hZ2UgUHJlZmVyZW5jZXM8L2VtPjwvc3Ryb25nPi4gSWYsIGF0IGEgbGF0ZXIgZGF0ZSwgeW91IHdpc2ggdG8gY2hhbmdlIHNvbWUgc2V0dGluZyBvbiBhbGwgb2YgeW91ciBDYXRlZ29yeSBwYWdlcywgeW91IGNhbiBnbyBpbnRvIDxzdHJvbmc+PGVtPkV4dGVuc2lvbnMgJmd0OyBDYXRhbG9nZXIgJmd0OyBHbG9iYWwgQ2F0YWxvZyBPcHRpb25zPC9lbT48L3N0cm9uZz4sIGFuZCBtYWtlIHRob3NlIGNoYW5nZXMuPC9wPg0KICAgIDxoND5JbWFnZXM8L2g0Pg0KICAgIDxwPkNhdGFsb2dlciBhbGxvd3MgeW91IHRvIHNlbGVjdCBkaWZmZXJlbnQgc2l6ZSBpbWFnZXMgZm9yIEl0ZW0gcGFnZXMsIENhdGVnb3J5IHBhZ2VzLCBhbmQgdGhlIFByaW50YWJsZSBDYXRhbG9nLiBZb3UgY2FuIHNldCB0aGVzZSBkZWZhdWx0cyBpbiA8c3Ryb25nPjxlbT5FeHRlbnNpb25zICZndDsgQ2F0YWxvZ2VyICZndDsgTWFuYWdlIFByZWZlcmVuY2VzPC9lbT48L3N0cm9uZz4uPC9wPg0KICAgIDxwPldoZW4geW91IHVwbG9hZCBpbWFnZXMsIHRoZSBvcmlnaW5hbCBpcyBzdG9yZWQuIFdoZW4gc29tZW9uZSB2aXNpdHMgYSBwYWdlLCB0aGUgcmVkdWNlZCBzaXplIGltYWdlcyBhcmUgcmVxdWVzdGVkIHVzaW5nIGEgc3BlY2lhbCBVUkwsIHdoaWNoIHdpbGwgbG9hZCB0aGUgc2NhbGVkIGltYWdlIGlmIGl0IGV4aXN0cywgY3JlYXRpbmcgaXQgaWYgaXQgZG9lc24ndC4gVGhpcyBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiBpbWFnZXMsIHdpdGhvdXQgaGF2aW5nIHRvIHJlLXVwbG9hZCBhbGwgdGhlIGltYWdlcywgb3IgcmVzY2FsaW5nIHRoZW0gYWxsIGF0IG9uY2UuPC9wPg0KICAgIDxwPjxkaXYgY2xhc3M9J3dhcm5pbmcnPlRoZSBpbWFnZSByZXNjYWxpbmcgY29kZSByZXF1aXJlcyB0aGF0IHlvdSBoYXZlIGVpdGhlciBJbWFnZU1hZ2ljayBvciBHRCBsaWIgaW5zdGFsbGVkLjwvZGl2PjwvcD4NCiAgICA8cD48ZGl2IGNsYXNzPSdpbmZvcm1hdGlvbic+Q3VycmVudGx5LCBvbmx5IGpwZWcgZm9ybWF0IGltYWdlcyBhcmUgc3VwcG9ydGVkLjwvZGl2PjwvcD4NCiAgICA8aDQ+RmlsZXM8L2g0Pg0KICAgIDxwPkNhdGFsb2dlciBhbGxvd3MgeW91IHRvIGFzc29jaWF0ZSBhcmJpdHJhcnkgZmlsZXMgd2l0aCBhbnkgSXRlbSBwYWdlLiBUaGVzZSBhcmUgdXBsb2FkZWQgdmlhIHRoZSBhZG1pbiwganVzdCBsaWtlIGltYWdlcy4NCiAgICA8cD48ZGl2IGNsYXNzPSd3YXJuaW5nJz5UaGVyZSBoYXZlIGJlZW4gcnVkaW1lbnRhcnkgc2VjdXJpdHkgY29uc2lkZXJhdGlvbnMgKGUuZy4sIGZpbGUtZXh0ZW5zaW9uLWJhc2VkIHJlc3RyaWN0aW9ucyksIGhvd2V2ZXIsIGFzIHdpdGggYW55IGZpbGUgdXBsb2FkIGNhcGFiaWxpdHkgdGhhdCBwdXRzIGZpbGVzIGluc2lkZSB0aGUgd2ViIHJvb3QsIGlmIHlvdSBkbyBub3QgdHJ1c3QgeW91ciB1cGxvYWRlcnMsIHlvdSBhcmUgYXQgc29tZSBkZWdyZWUgb2Ygcmlzay4gWW91IGhhdmUgYmVlbiB3YXJuZWQuPC9kaXY+PC9wPg0KICA8L2Rpdj4NCiAgDQogIA0KICA8ZGl2IGlkPSJmZWF0dXJlbGlzdHNfYyI+DQogICAgPGgzPkZlYXR1cmUgTGlzdHM8L2gzPg0KICAgIDxwPllvdSBjYW4sIGFzIG9mIDxzdHJvbmc+dmVyc2lvbiAwLjQ8L3N0cm9uZz4sIGhhdmUgPHN0cm9uZz4iZmVhdHVyZSBsaXN0cyI8L3N0cm9uZz4gd2hpY2ggYXJlIHRoZSA8c3Ryb25nPjxlbT5uPC9lbT48L3N0cm9uZz4gbW9zdC1yZWNlbnRseSBhZGRlZCBjYXRhbG9nIGl0ZW1zLCBvciBhIGNvbGxlY3Rpb24gb2YgPHN0cm9uZz48ZW0+azwvZW0+PC9zdHJvbmc+IHJhbmRvbSBpdGVtcyBmcm9tIHRoZSBjYXRhbG9nLjwvcD4NCiAgICA8aDQ+IkFsbCIgRmVhdHVyZSBMaXN0PC9oND4NCiAgICA8cD5UbyBnZXQgYSBsaXN0IG9mIGFsbCBjYXRhbG9nIGl0ZW1zIChvcHRpb25hbGx5IHVuZGVyIGEgc3BlY2lmaWVkIHBhcnQgb2YgeW91ciBoaWVyYXJjaHkpIGZvciBwcm9jZXNzaW5nIHZpYSBhIHRlbXBsYXRlLCB5b3UgY2FuIHVzZQ0KICAgIHRoZSA8c3Ryb25nPiJhbGwiPC9zdHJvbmc+IGZlYXR1cmUgbGlzdC48L3A+DQogICAgPHA+VGhlIHN5bnRheCBmb3IgYW4gPHN0cm9uZz4iYWxsIjwvc3Ryb25nPiBsaXN0IGlzIGxpa2U6PC9wPg0KICAgIDxwcmU+PHN0cm9uZz4mIzEyMztDYXRhbG9nZXIgYWN0aW9uPSdhbGwnIHN1Yl90ZW1wbGF0ZT0nbXlfc3ViX3RlbXBsYXRlJ308L3N0cm9uZz48L3ByZT4NCiAgICA8cD53aGVyZSBzdWJfdGVtcGxhdGUgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGxpc3QuPC9wPg0KICAgIDxwPlRoZXJlIGlzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciwgPHN0cm9uZz5hbGlhcz0ncGFnZV9hbGlhcyc8L3N0cm9uZz4sIHdoZXJlIHBhZ2VfYWxpYXMgaW5kaWNhdGVzIHRoZSB0b3Agb2YgdGhlIHRyZWUgKGUuZy4sIGEgcGxhY2UgaW4geW91ciBtZW51DQogICAgaGllcmFyY2h5LCB0eXBpY2FsbHkgYSBjYXRlZ29yeSBwYWdlKSBpbiB3aGljaCB0byBsb29rIGZvciBuZXcgaXRlbXMuIEEgc3BlY2lhbCB2YWx1ZSBmb3IgPHN0cm9uZz4icGFnZV9hbGlhcyI8L3N0cm9uZz4gaXMgPHN0cm9uZz4iLyI8L3N0cm9uZz4sIHdoaWNoIG1lYW5zIHRvIHN0YXJ0IGF0IHRoZSByb290LjwvcD4NCiAgICA8cD5UaGlzIGlzIHVzZWZ1bCBmb3IgY2F0YWxvZy13aWRlIG9wZXJhdGlvbnMuIEZvciBleGFtcGxlLCB0byBnZXQgYSBsaXN0IG9mIGFsbCBjYXRlZ29yaWVzIChhbmQgZG8gc29tZXRoaW5nIHdpdGggdGhlbSksDQogICAgeW91IGNvdWxkIHVzZSB0aGUgdGFnOjwvcD4gDQogICAgPHByZT48c3Ryb25nPiYjMTIzO0NhdGFsb2dlciBhY3Rpb249J2FsbCcgc3ViX3RlbXBsYXRlPSdteV9zdWJfdGVtcGxhdGUnIGFsaWFzPScvJyByZWN1cnNlPSdjYXRlZ29yaWVzX2FsbCd9PC9zdHJvbmc+PC9wcmU+ICAgDQogICAgPHA+WW91ciB0ZW1wbGF0ZSBjb3VsZCB0aGVuIHRocm93IHRob3NlIGNhdGVnb3JpZXMgaW50byBhIHB1bGxkb3duIG1lbnUgdGhhdCByZWRpcmVjdGVkIHlvdSB0byB0aGF0IGNhdGVnb3J5J3MgcGFnZSwgZm9yIGV4YW1wbGU6PC9wPg0KICAgIDxwcmU+DQogICAgJmx0O3NlbGVjdCBuYW1lPSJmb28iIG9uY2hhbmdlPSJkb2N1bWVudC5sb2NhdGlvbj10aGlzLm9wdGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4XS52YWx1ZTsiPg0KICAgICZsdDtvcHRpb24gdmFsdWU9IiI+U2VsZWN0IEEgdGFyZ2V0Jmx0Oy9vcHRpb24+DQogICAgJiMxMjM7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPXRoaXNvbmV9DQogICAgICAgJmx0O29wdGlvbiB2YWx1ZT0iJiMxMjM7JHRoaXNvbmUubGlua30iPiYjMTIzOyR0aGlzb25lLnRpdGxlfSZsdDsvb3B0aW9uPg0KICAgICYjMTIzOy9mb3JlYWNofQ0KICAgICZsdDsvc2VsZWN0PjwvcHJlPg0KICAgIDxwPklmIHlvdSB3YW50ZWQgdGhhdCB0byBvbmx5IHNob3cgY2F0ZWdvcmllcyB0aGF0IHdlcmUgaW4gdGhlIHZlcnkgdG9wIGxldmVsIG9mIHlvdXIgaGllcmFyY2h5LCB5b3UnZCByZXBsYWNlIHRoZSA8c3Ryb25nPnJlY3Vyc2U9J2NhdGVnb3JpZXNfYWxsJzwvc3Ryb25nPiB3aXRoIDxzdHJvbmc+cmVjdXJzZT0nY2F0ZWdvcmllc19vbmUnPC9zdHJvbmc+LiBPciBpZiB5b3Ugd2FudGVkIGl0IHRvIGJlIGFsbCBjYXRhbG9nIEl0ZW1zIGluc3RlYWQgb2YgY2F0ZWdvcmllcywgeW91IGNvdWxkIHVzZSBhIHRhZyBsaWtlOjwvcD4NCiAgICA8cHJlPjxzdHJvbmc+JiMxMjM7Q2F0YWxvZ2VyIGFjdGlvbj0nYWxsJyBzdWJfdGVtcGxhdGU9J215X3N1Yl90ZW1wbGF0ZScgYWxpYXM9Jy8nIHJlY3Vyc2U9J2l0ZW1zX2FsbCd9PC9zdHJvbmc+PC9wcmU+DQogICAgPHA+U2ltaWxhcmx5LCB5b3UgY291bGQgaGF2ZSBpdCBsaXN0IG9ubHkgY2F0ZWdvcmllcyB1bmRlciB0aGUgY3VycmVudCBwYWdlIChieSBvbWl0dGluZyB0aGUgPHN0cm9uZz4iYWxpYXM9Jy8nIjwvc3Ryb25nPikuIFRoZSBjb21iaW5hdGlvbnMgYXJlIGJhc2ljYWxseSBsaW1pdGxlc3MhPC9wPg0KICAgIDxwPkFsbCBzdXBwb3J0ZWQgdmFsdWVzIG9mIHJlY3Vyc2UgaW5jbHVkZToNCiAgICA8dWw+DQogICAgICA8bGk+PHN0cm9uZz5pdGVtc19vbmU8L3N0cm9uZz4gLSBDYXRhbG9nIGl0ZW1zLCBubyBtb3JlIHRoYW4gb25lIGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQogICAgICA8bGk+PHN0cm9uZz5pdGVtc19hbGw8L3N0cm9uZz4gLSBDYXRhbG9nIGl0ZW1zLCBhdCBhbnkgbGV2ZWwgYmVsb3cgdGhlIGN1cnJlbnQgcGFnZSAob3IgYWxpYXMgcG9pbnQpPC9saT4NCiAgICAgIDxsaT48c3Ryb25nPmNhdGVnb3JpZXNfb25lPC9zdHJvbmc+IC0gQ2F0ZWdvcmllcywgbm8gbW9yZSB0aGFuIG9uZSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KICAgICAgPGxpPjxzdHJvbmc+Y2F0ZWdvcmllc19hbGw8L3N0cm9uZz4gLSBDYXRlZ29yaWVzLCBhdCBhbnkgbGV2ZWwgYmVsb3cgdGhlIGN1cnJlbnQgcGFnZSAob3IgYWxpYXMgcG9pbnQpPC9saT4NCiAgICAgIDxsaT48c3Ryb25nPm1peGVkX29uZTwvc3Ryb25nPiAtIENhdGFsb2cgaXRlbXMgYW5kIENhdGVnb3JpZXMsIG5vIG1vcmUgdGhhbiBvbmUgbGV2ZWwgYmVsb3cgdGhlIGN1cnJlbnQgcGFnZSAob3IgYWxpYXMgcG9pbnQpPC9saT4NCiAgICAgIDxsaT48c3Ryb25nPm1peGVkX2FsbDwvc3Ryb25nPiAtIENhdGFsb2cgaXRlbXMgYW5kIENhdGVnb3JpZXMsIGF0IGFueSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KICAgIDwvdWw+DQogICAgPC9wPg0KICAgIDxwPkl0ZW1zIGluIHRoZXNlIGxpc3RzIGNvbWUgYmFjayBpbiBoaWVyYXJjaHkgb3JkZXIuIFlvdSBjYW4gY2hhbmdlIHRoaXMgdXNpbmcgdGhlIDxzdHJvbmc+J2dsb2JhbF9zb3J0Jzwvc3Ryb25nPiBwYXJhbWV0ZXIuIFlvdXIgY2hvaWNlcyBhcmU6PC9wPg0KICAgIDx1bD4NCiAgICAgIDxsaT48c3Ryb25nPmFscGhhPC9zdHJvbmc+IC0gYWxwaGFiZXRpY2FsbHkgYnkgdGl0bGU8L2xpPg0KICAgICAgPGxpPjxzdHJvbmc+ZGF0ZTwvc3Ryb25nPiAtIGluIG9yZGVyIG9mIGl0ZW0gY3JlYXRpb24gZGF0ZTwvbGk+DQogICAgICA8bGk+PHN0cm9uZz5tZGF0ZTwvc3Ryb25nPiAtIGluIG9yZGVyIG9mIGl0ZW0gbW9kaWZpY2F0aW9uIGRhdGU8L2xpPg0KICAgIDwvdWw+DQogICAgPHA+WW91IG1heSBvcmRlciB0aGVzZSBzb3J0cyB1c2luZyB0aGUgPHN0cm9uZz4nZ2xvYmFsX3NvcnRfZGlyJzwvc3Ryb25nPiBwYXJhbWV0ZXIsIHdoaWNoIHdpbGwgYWxsb3cgPHN0cm9uZz4nYXNjJzwvc3Ryb25nPiBvciA8c3Ryb25nPidkZXNjJzwvc3Ryb25nPi48L3A+DQogICAgPHA+U28sIGZvciBhIHRob3JvdWdoIGV4YW1wbGU6PC9wPg0KICAgIDxwcmU+PHN0cm9uZz4mIzEyMztDYXRhbG9nZXIgYWN0aW9uPSdhbGwnIHN1Yl90ZW1wbGF0ZT0nbXlfc3ViX3RlbXBsYXRlJyBhbGlhcz0nLycgcmVjdXJzZT0nY2F0ZWdvcmllc19hbGwnIGdsb2JhbF9zb3J0PSdhbHBoYScgZ2xvYmFsX3NvcnRfZGlyPSdhc2MnfTwvc3Ryb25nPjwvcHJlPiANCiAgICA8aDQ+UmVjZW50bHkgQWRkZWQgRmVhdHVyZSBMaXN0PC9oND4NCiAgICA8cD5UbyB1c2UgYSAibW9zdC1yZWNlbnRseSBhZGRlZCIgbGlzdCB3aWxsIGFsbG93IHlvdSB0byBkaXNwbGF5IHRoZSBtb3N0IHJlY2VudGx5LWFkZGVkIGNhdGFsb2cgaXRlbXMgdW5kZXIgYSBzcGVjaWZpZWQgcGFydCBvZiB5b3VyIGhpZXJhcmNoeS48L3A+DQogICAgPHA+VGhlIHN5bnRheCBmb3IgYSAibW9zdCByZWNlbnRseSBhZGRlZCIgbGlzdCBpcyBsaWtlOjwvcD4NCiAgICA8cHJlPjxzdHJvbmc+JiMxMjM7Q2F0YWxvZ2VyIGFjdGlvbj0ncmVjZW50JyBzdWJfdGVtcGxhdGU9J215X3N1Yl90ZW1wbGF0ZSd9PC9zdHJvbmc+PC9wcmU+IA0KICAgIDxwPndoZXJlIHN1Yl90ZW1wbGF0ZSBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgbGlzdC4gVGhlcmUgYXJlIGZvdXIgb3B0aW9uYWwgcGFyYW1ldGVycywgPHN0cm9uZz5jb3VudD0nMyc8L3N0cm9uZz4sIDxzdHJvbmc+YWxpYXM9J3BhZ2VfYWxpYXMnPC9zdHJvbmc+LCA8c3Ryb25nPmdsb2JhbF9zb3J0PSdkYXRlJzwvc3Ryb25nPiwgPHN0cm9uZz5nbG9iYWxfc29ydF9kaXI9J2Rlc2MnPC9zdHJvbmc+IHdoZXJlIDxzdHJvbmc+Y291bnQ8L3N0cm9uZz4gaXMgdGhlIG51bWJlciBvZiBpdGVtcyB0byBpbmNsdWRlLCA8c3Ryb25nPnBhZ2VfYWxpYXM8L3N0cm9uZz4gaW5kaWNhdGVzIHRoZSB0b3Agb2YgdGhlIHRyZWUgKGUuZy4sIGEgcGxhY2UgaW4geW91ciBtZW51IGhpZXJhcmNoeSwgdHlwaWNhbGx5IGEgY2F0ZWdvcnkgcGFnZSkgaW4gd2hpY2ggdG8gbG9vayBmb3IgbmV3IGl0ZW1zLiBBIHNwZWNpYWwgdmFsdWUgZm9yIDxzdHJvbmc+InBhZ2VfYWxpYXMiPC9zdHJvbmc+IGlzIDxzdHJvbmc+Ii8iPC9zdHJvbmc+LCB3aGljaCBtZWFucyB0byB1c2UgPGk+YWxsPC9pPiBwYWdlcyBpbiB0aGUgc2l0ZS4gPHN0cm9uZz5nbG9iYWxfc29ydDwvc3Ryb25nPiBtYXkgYmUgPHN0cm9uZz4nZGF0ZSc8L3N0cm9uZz4gKGZvciBpdGVtIGNyZWF0aW9uIGRhdGUpIG9yIDwvc3Ryb25nPidtZGF0ZSc8L3N0cm9uZz4gZm9yIG1vZGlmaWNhdGlvbiBkYXRlLCBhbmQgPHN0cm9uZz5nbG9iYWxfc29ydF9kaXI8L3N0cm9uZz4gbWF5IGJlIDxzdHJvbmc+J2FzYyc8L3N0cm9uZz4gb3IgPHN0cm9uZz4nZGVzYyc8L3N0cm9uZz4uPC9wPg0KICAgIDxoND5SYW5kb20gSXRlbXMgRmVhdHVyZSBMaXN0PC9oND4NCiAgICA8cD5UaGUgc3ludGF4IGZvciBhICJyYW5kb20iIGxpc3QgaXMgbGlrZTo8L3A+DQogICAgPHByZT48c3Ryb25nPiYjMTIzO0NhdGFsb2dlciBhY3Rpb249J3JhbmRvbScgc3ViX3RlbXBsYXRlPSdteV9zdWJfdGVtcGxhdGUnfTwvc3Ryb25nPjwvcHJlPiANCiAgICA8cD53aGVyZSBzdWJfdGVtcGxhdGUgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGxpc3QuIFRoZXJlIGFyZSB0d28gb3B0aW9uYWwgcGFyYW1ldGVycywgPHN0cm9uZz5jb3VudD0nMyc8L3N0cm9uZz4gYW5kIDxzdHJvbmc+YWxpYXM9J3BhZ2VfYWxpYXMnPC9zdHJvbmc+LCB3aGVyZSA8c3Ryb25nPmNvdW50PC9zdHJvbmc+IGlzIHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gaW5jbHVkZSwgYW5kIDxzdHJvbmc+cGFnZV9hbGlhczwvc3Ryb25nPiBpbmRpY2F0ZXMgdGhlIHRvcCBvZiB0aGUgdHJlZSAoZS5nLiwgYSBwbGFjZSBpbiB5b3VyIG1lbnUgaGllcmFyY2h5LCB0eXBpY2FsbHkgYSBjYXRlZ29yeSBwYWdlKSBpbiB3aGljaCB0byBsb29rIGZvciBuZXcgaXRlbXMuIEEgc3BlY2lhbCB2YWx1ZSBmb3IgPHN0cm9uZz4icGFnZV9hbGlhcyI8L3N0cm9uZz4gaXMgPHN0cm9uZz4iLyI8L3N0cm9uZz4sIHdoaWNoIG1lYW5zIHRvIHVzZSA8aT5hbGw8L2k+IHBhZ2VzIGluIHRoZSBzaXRlLjwvcD4NCiAgPC9kaXY+DQogIA0KICANCiAgPGRpdiBpZD0iaW1hZ2VzeXNfYyI+DQogICAgPGgzPkNhdGFsb2dlciBJbWFnZSBTeXN0ZW08L2gzPg0KICAgIDxwPkNhdGFsb2dlciBoYXMgYW4gaW1hZ2Ugc3lzdGVtIHRoYXQgd2lsbCBhbGxvdyB5b3UgdG8gZHluYW1pY2FsbHkgY2hhbmdlIHRoZSBpbWFnZSBkaXNwbGF5IHNpemUuIElmIHlvdSBkbyBub3QgbGlrZSBpdCwgeW91IGNhbiBhbHRlcg0KICAgIHRoZSB0ZW1wbGF0ZXMgYW5kIHVzZSBhbnkgaW1hZ2Ugc3lzdGVtIHlvdSB3YW50LjwvcD4NCiAgICA8cD5XaGVuIHlvdSB1cGxvYWQgYW4gaW1hZ2UgdXNpbmcgQ2F0YWxvZ2VyLCBpdCBnZXRzIHB1dCBpbiBhIHNwZWNpYWwgc2V0IG9mIGRpcmVjdG9yaWVzIHRvIG1ha2UgdGhlIGltYWdpbmcgZWFzaWVyLiBZb3Ugd2lsbCBzZWUgbW9yZQ0KICAgIGFib3V0IHRoaXMgbGF0ZXIuPC9wPg0KICAgIDxwPkl0IHdvcmtzIGJ5IGNhbGxpbmcgYSBQSFAgcHJvZ3JhbSBpbnN0ZWFkIG9mIGRpcmVjdGx5IHJlZmVyZW5jaW5nIHRoZSBpbWFnZS4gVGhlIHByb2dyYW0gdXNlcyB0aGUgZmlsZW5hbWUgdG8gc2VlIGlmIHRoZQ0KICAgIGltYWdlIGFscmVhZHkgZXhpc3RzIGluIHRoZSBjb3JyZWN0IHNpemUuIElmIHNvLCBpdCB1c2VzIHRoYXQgaW1hZ2UuIE90aGVyd2lzZSwgaXQgdXNlcyB5b3VyIDxzdHJvbmc+R0RMSUI8L3N0cm9uZz4gb3IgPHN0cm9uZz5JbWFnZU1hZ2ljazwvc3Ryb25nPiB0byBjcmVhdGUgdGhlIGltYWdlIGluIHRoZSBjb3JyZWN0IHNpemUsIGFuZCB0aGVuIHJlZGlyZWN0cyB0byBpdC48L3A+DQogICAgPGg0PkNhdGFsb2dlciBJbWFnZSBGaWxlc3BlYyBFeHBsYW5hdGlvbjwvaDQ+DQogICAgPHA+QSBjYXRhbG9nZXIgaW1hZ2UgaGFzIGEgZmlsZXNwZWMgbGlrZTo8L3A+DQogICAgPHByZT4mbHNhcXVvO3Jvb3QmcnNhcXVvOy9jYXRhbG9nZXJfaW1hZ2UoLnBhZ2VfZXh0ZW50aW9uKT9pPWl0ZW1uYW1lX2ZfMV80MDBfMS5qcGcmYW1wO2FjPTgyODg4PC9wcmU+DQogICAgPHA+PGRpdiBjbGFzcz0naW5mb3JtYXRpb24nPlRoZXJlIGFyZSBkaWZmZXJlbmNlcyBpbiBpbWFnZSBoYW5kbGluZyBpbiA8c3Ryb25nPkNhdGFsb2dlcjwvc3Ryb25nPiBzaW5jZSA8c3Ryb25nPnZlcnNpb24gMS4wPC9zdHJvbmc+Ljxicj5UaGUgb2xkIHNwZWMgaGFzIGJlZW4gcmVtb3ZlZCwgYW5kIGlzIG5vIGxvbmdlciB1c2VkLDxicj4gaS5lLjogPHN0cm9uZz4mbHNhcXVvO3Jvb3RfcGF0aCZyc2FxdW87L21vZHVsZXMvQ2F0YWxvZ2VyL0NhdGFsb2dlci5JbWFnZS5waHA/aT1pdGVtbmFtZV9mXzFfNDAwXzEuanBnJmFjPTgyODg4PC9zdHJvbmc+IHNwZWMgYXMgZXhwbGFpbmVkIGFuZCB1c2VkIG9uIHByZXZpb3VzIHZlcnNpb25zIDxzdHJvbmc+bm8gbG9uZ2VyIHdvcmtzPC9zdHJvbmc+Ljxicj5UbyBiZSBtb3JlIHByZWNpc2UsIDxzdHJvbmc+Q2F0YWxvZ2VyLkltYWdlLnBocDwvc3Ryb25nPiBpcyBubyBsb25nZXIgdmFsaWQgYXMgaXQgdXNlZCBhbiB1bnN1cHBvcnRlZCBtZXRob2Qgb2YgY2FsbGluZyBDTVNNUyBjb3JlIGZ1bmN0aW9ucy4gSG93ZXZlciB0aGUgZmlsZW5hbWUgc3BlY3Mgc3RpbGwgYXBwbHksIHN1Y2ggYXMgPHN0cm9uZz5pdGVtbmFtZV9mXzFfNDAwXzEuanBnJmFjPTgyODg4PC9zdHJvbmc+IGFsb25nIHdpdGggdGhlIDxzdHJvbmc+YWM8L3N0cm9uZz4gcGFyYW1ldGVyIGFzIGV4cGxhaW5lZCBiZWxvdy48L2Rpdj48L3A+DQogICAgPHA+PGRpdiBjbGFzcz0nd2FybmluZyc+PHN0cm9uZz5DYXRhbG9nZXIuSW1hZ2UucGhwPC9zdHJvbmc+IGhhcyBiZWVuIHJlcGxhY2VkIGJ5IGEgbW9kdWxlIGFjdGlvbiBhbmQgPHN0cm9uZz5DYXRhbG9nZXI8L3N0cm9uZz4gd2lsbCB1c2UgdGhlIG5ldyBtZXRob2QgYXV0b21hdGljYWxseS4gTm8gY2hhbmdlcyBpbiB0aGUgc3ViLXRlbXBsYXRlcyBzaG91bGQgYmUgbmVlZGVkIHVubGVzcyB0aGUgZGV2ZWxvcGVyL2Rlc2lnbmVyIGhhcywgZm9yIHNvbWUgcmVhc29uLCBoYXJkLWNvZGVkIHBhcnQgb2YgdGhlIHVybCBvbiB0aGUgdGVtcGxhdGVzIGluc3RlYWQgb2YgdXNpbmcgdGhlIGdlbmVyYXRlZCBsaW5rcy48L2Rpdj48L3A+DQogICAgPHA+VGhlIGludGVyZXN0aW5nIHRoaW5nIGlzIDxzdHJvbmc+Iml0ZW1uYW1lX2ZfMV80MDBfMS5qcGciPC9zdHJvbmc+IC0gdGhlIHN0dWZmIGJlZm9yZSBpcyBqdXN0IGEgY2FsbCB0byB0aGUgcHJvZ3JhbSwgYW5kIHRoZSA8c3Ryb25nPiZhbXA7YWM9ODI4ODg8L3N0cm9uZz4gaXMgYSByYW5kb20gdGhpbmcgdGhhdCBpcyBkZXNpZ25lZCB0byBwcmV2ZW50IGJyb3dzZXIgY2FjaGluZy4gU28gZXhhbWluaW5nIHRoZSBuYW1lIHBpZWNlIGJ5IHBpZWNlIChzZXBhcmF0aW5nIGF0IHRoZSB1bmRlcnNjb3JlcyksIHdlIGhhdmU6PC9wPg0KICAgIDx1bD4NCiAgICAgIDxsaT48c3Ryb25nPml0ZW0gbmFtZTwvc3Ryb25nPiAtIHRoaXMgaXMgdGhlIGFsaWFzIG9mIHRoZSBpdGVtL2NhdGVnb3J5IHBhZ2UgY29udGFpbmluZyB0aGUgaW1hZ2UuPC9saT4NCiAgICAgIDxsaT48c3Ryb25nPmltYWdlIHR5cGU8L3N0cm9uZz4gLSB0aGlzIGlzIGEgZGVzaWduYXRpb24gZm9yIGltYWdlIHR5cGU6DQogICAgICAgIDx1bD4NCiAgICAgICAgICA8bGk+PHN0cm9uZz5mPC9zdHJvbmc+IC0gaXRlbSBmdWxsLXNpemUgaW1hZ2U8L2xpPg0KICAgICAgICAgIDxsaT48c3Ryb25nPnQ8L3N0cm9uZz4gLSBpdGVtIHRodW1ibmFpbDwvbGk+DQogICAgICAgICAgPGxpPjxzdHJvbmc+Y2Y8L3N0cm9uZz4gLSBjYXRlZ29yeSBmdWxsLXNpemVkIGltYWdlPC9saT4NCiAgICAgICAgICA8bGk+PHN0cm9uZz5jdDwvc3Ryb25nPiAtIGNhdGVnb3J5IHRodW1ibmFpbDwvbGk+DQogICAgICAgICAgPGxpPjxzdHJvbmc+Y3RmPC9zdHJvbmc+IC0gcHJpbnRhYmxlIGNhdGFsb2cgZnVsbC1zaXplZCBpbWFnZTwvbGk+DQogICAgICAgIDwvdWw+DQogICAgICA8L2xpPg0KICAgICAgPGxpPjxzdHJvbmc+aW1hZ2UgbnVtYmVyPC9zdHJvbmc+IC0gc28gYSBnaXZlbiBpdGVtL2NhdGFsb2cvZXRjIGNhbiBoYXZlIG11bHRpcGxlIGltYWdlczwvbGk+DQogICAgICA8bGk+PHN0cm9uZz5sb25nIGRpbWVuc2lvbjwvc3Ryb25nPiAtIGxvbmcgZGltZW5zaW9uIG9mIHRoZSBpbWFnZSwgaW4gcGl4ZWxzPC9saT4NCiAgICAgIDxsaT48c3Ryb25nPm1pc3NpbmcgZmxhZzwvc3Ryb25nPiAtIDEgaWYgeW91IHdhbnQgdG8gc2hvdyBhbiAiaW1hZ2UgbWlzc2luZyIgaW1hZ2UgaWYgdGhpcyBpbWFnZSBkb2Vzbid0IGV4aXN0LCAwIG90aGVyd2lzZTwvbGk+DQogICAgPC91bD4NCiAgICA8cD4NCiAgICBUaGlzIHdpbGwgdGFrZSBhbiBpbWFnZSBpbiA8c3Ryb25nPnJvb3RfcGF0aC91cGxvYWRzL2ltYWdlcy9jYXRhbG9nX3NyYy9pdGVtbmFtZV9zcmNfMTwvc3Ryb25nPg0KICAgIDxwPkFzIG9mIDxzdHJvbmc+dmVyc2lvbiAxLjAgQ2F0YWxvZ2VyPC9zdHJvbmc+IGhhcyBjaGFuZ2VkIHRoZSB3YXkgaXQgaGFuZGxlcyBpbWFnZXMuIFRoZSA8c3Ryb25nPkNhdGFsb2dlci5JbWFnZS5waHA8L3N0cm9uZz4gZmlsZSBhcyBiZWVuIHJlbW92ZWQgYW5kIGFsbCBpbWFnZSBoYW5kbGluZyBpcyBkb25lIHRocm91Z2ggYSBtb2R1bGUgYWN0aW9uIHVzZWQgc3BlY2lmaWNhbGx5IGZvciB0aGF0IHB1cnBvc2UuICBUaGlzIGFsbG93ZWQgYmV0dGVyIHN1cHBvcnQgdG8gcHJldHR5IFVSTHMsIGFuZCBmaWxlIG9iZnVzY2F0aW9uIGFzIHRoZSBhY3Rpb24gZG9lc24ndCByZWRpcmVjdCB0byB0aGUgZ2VuZXJhdGVkIGltYWdlIGJ1dCBnZW5lcmF0ZXMgYSBjb3B5IG9mIHRoZSBpbWFnZSB3aXRob3V0IHJldmVhbGluZyB0aGUgb3JpZ2luYWwgaW1hZ2UgbG9jYXRpb24uPC9wPg0KICAgIDxoND5BY2Nlc3NpbmcgeW91ciBPcmlnaW5hbCBJbWFnZTwvaDQ+DQogICAgPHA+V2hlbiBDYXRhbG9nZXIgdXBsb2FkcyBpbWFnZXMsIGl0IHB1dHMgdGhlbSBpbnRvIGEgZGlyZWN0b3J5IGNhbGxlZCA8c3Ryb25nPiJjYXRhbG9nZXJfc3JjIjwvc3Ryb25nPiBpbiB5b3VyIDxzdHJvbmc+dXBsb2Fkcy9pbWFnZXMvPC9zdHJvbmc+IGRpcmVjdG9yeS4gVGhlIGltYWdlcyBhcmUgbmFtZWQgYWNjb3JkaW5nIHRvIHRoZSBhbGlhcyBvZiB0aGUgcGFnZTogPHN0cm9uZz5hbGlhc19zcmNfIy5qcGc8L3N0cm9uZz4gd2hlcmUgIyBpcyB0aGUgaW1hZ2UgbnVtYmVyIGZvciB0aGF0IHBhZ2UuPC9wPg0KICAgIDxwPlNvLCB0byBhY2Nlc3MgdGhlIG9yaWdpbmFsbHkgdXBsb2FkZWQgaW1hZ2VzIG9uIGEgQ2F0ZWdvcnkgcGFnZSwgeW91J2QgZ2VuZXJhdGUgdGhlIFVSTCBtYW51YWxseS48L3A+DQogICAgPHA+U28gb24gYSBjYXRlZ29yeSBwYWdlLCBmb3IgZXhhbXBsZSwgaW5zdGVhZCBvZiB1c2luZyA8c3Ryb25nPnskaXRlbXNbbnVtbG9vcF0uaW1hZ2V9PC9zdHJvbmc+IHlvdSdkIHVzZSA8c3Ryb25nPiIvdXBsb2Fkcy9pbWFnZXMvY2F0YWxvZ2VyX3NyYy97JGl0ZW1zW251bWxvb3BdLmFsaWFzfV9zcmNfMS5qcGciPC9zdHJvbmc+LjwvcD4NCiAgPC9kaXY+DQogIA0KICANCiAgPGRpdiBpZD0iYWR2YW5jZWRfYyI+DQogICAgPGgzPkN1c3RvbWl6YXRpb24gYW5kIEFkdmFuY2VkIFRvcGljczwvaDM+DQogICAgPGg0PkNhdGFsb2cgSXRlbSBBdHRyaWJ1dGVzPC9oND4NCiAgICA8cD5UaGUgZGVmYXVsdCBpdGVtIGF0dHJpYnV0ZXMgYXJlIHR5cGljYWwgZm9yIGEgY2F0YWxvZyBvZiBwcm9kdWN0cyBvciBhcnR3b3JrcywgYnV0IGJ5IGdvaW5nIGludG8gPHN0cm9uZz48ZW0+RXh0ZW5zaW9ucyAmZ3Q7IENhdGFsb2dlciAmZ3Q7IE1hbmFnZSBVc2VyLURlZmluZWQgQXR0cmlidXRlczwvZW0+PC9zdHJvbmc+LCB5b3UgY2FuIGNoYW5nZSB0aGUgYXR0cmlidXRlcy4gSXQncyBiZXN0IHRvIGRlZmluZSB0aGUgYXR0cmlidXRlcyBiZWZvcmUgeW91IHN0YXJ0IGVudGVyaW5nIENhdGFsb2cgSXRlbXMuPC9wPg0KICAgIDxwPjxkaXYgY2xhc3M9J2luZm9ybWF0aW9uJz5Ob3RlIHRoYXQgdGhlIGF0dHJpYnV0ZXMgeW91IGRlZmluZSBtYXkgbmVlZCB0byBiZSBhZGRlZCB0byB0aGUgdGVtcGxhdGUgdGhhdCB5b3UncmUgdXNpbmcgdG8gZGlzcGxheSBDYXRhbG9nIEl0ZW1zOiAgc2VlIEN1c3RvbSBUZW1wbGF0ZXMgYmVsb3cuPC9kaXY+PC9wPg0KICAgIDxoND5DYXRhbG9nIENhdGVnb3J5IEF0dHJpYnV0ZXM8L2g0Pg0KICAgIDxwPlNpbWlsYXJseSwgeW91IGNhbiBzZXQgYXR0cmlidXRlcyBmb3IgQ2F0ZWdvcmllcy4gQXMgd2l0aCBJdGVtcywgdGhlIGF0dHJpYnV0ZXMgeW91IGRlZmluZSBtYXkgbmVlZCB0byBiZSBhZGRlZCB0byB0aGUgdGVtcGxhdGUgdGhhdCB5b3UncmUgdXNpbmcgdG8gZGlzcGxheSBDYXRhbG9nIENhdGVnb3JpZXMuPC9wPg0KICAgIDxoND5QcmludGFibGUgQ2F0YWxvZyBBdHRyaWJ1dGVzPC9oND4NCiAgICA8cD5MaWtld2lzZSwgeW91IGNhbiBzZXQgYXR0cmlidXRlcyBmb3IgUHJpbnRhYmxlIENhdGFsb2dzLiBBcyB3aXRoIEl0ZW1zIGFuZCBDYXRlZ29yaWVzLCB0aGUgYXR0cmlidXRlcyB5b3UgZGVmaW5lIG1heSBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSB0ZW1wbGF0ZSB0aGF0IHlvdSdyZSB1c2luZyB0byBkaXNwbGF5IHlvdXIgUHJpbnRhYmxlIENhdGFsb2cuPC9wPg0KICAgIDxoND5WYXJpYWJsZSBBY3Rpb248L2g0Pg0KICAgIDxwPllvdSBjYW4gZ3JhYiB2YXJpYWJsZXMgKGF0dHJpYnV0ZXMpIG91dHNpZGUgb2YgeW91ciBDYXRhbG9nZXIgdGVtcGxhdGVzLCB1c2luZyB0aGUgPHN0cm9uZz52YXJpYWJsZTwvc3Ryb25nPiBhY3Rpb24gcGFyYW1ldGVyLiBUaGUgc3ludGF4IGxvb2tzIGxpa2U6PC9wPg0KICAgIDxwcmU+PHN0cm9uZz4mIzEyMztDYXRhbG9nZXIgYWN0aW9uPSd2YXJpYWJsZScgbmFtZT0naXRlbW5vdGVzJyBkZWZhdWx0PSdubyBub3Rlcyd9PC9zdHJvbmc+PC9wcmU+IA0KICAgIDxwPndoZXJlIG5hbWUgaXMgdGhlIGF0dHJpYnV0ZSB0byBkaXNwbGF5ICh1c2luZyB0aGUgc2FtZSBhbGwgbG93ZXItY2FzZSwgcHVuY3R1YXRpb24tZnJlZSByZXByZXNlbnRhdGlvbiBsaWtlIHRoZSBzbWFydHkgdGVtcGxhdGUgdmFyaWFibGVzKSwgYW5kIGRlZmF1bHQgaXMgdGhlIHZhbHVlIHRvIHVzZSBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBkZWZpbmVkLjwvcD4NCiAgICA8aDQ+SXRlbSBDb21wYXJpc29uczwvaDQ+DQogICAgPHA+QXMgb2YgPHN0cm9uZz52ZXJzaW9uIDAuNy43PC9zdHJvbmc+LCB0aGVyZSBpcyBhIDxzdHJvbmc+cHJvZHVjdCBjb21wYXJpc29uPC9zdHJvbmc+IGFjdGlvbjo8L3A+DQogICAgPHByZT48c3Ryb25nPiYjMTIzO0NhdGFsb2dlciBhY3Rpb249J2NvbXBhcmUnIHN1Yl90ZW1wbGF0ZT0nbXlfc3ViX3RlbXBsYXRlJyBpdGVtcz0naXRlbTEsaXRlbTIsaXRlbTMnfTwvc3Ryb25nPjwvcHJlPg0KICAgIDxwPndoZXJlIHN1Yl90ZW1wbGF0ZSBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgbGlzdCwgYW5kIGl0ZW1zIGlzIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgaXRlbSBwYWdlIGFsaWFzZXMgdG8gY29tcGFyZS4gQm9sZGVyIHVzZXJzIG1heSBhbHNvIGNob29zZSB0byBwYXNzIGluIHRoZSBpdGVtcyB0byBjb21wYXJlIGFzIHJlcXVlc3QgdmFyaWFibGVzLCB0aGVyZWJ5IGVuYWJsaW5nIGR5bmFtaWMgY29tcGFyaXNvbnMgYmFzZWQgb24gdXNlciBzZWxlY3Rpb25zLiBEbyB0aGlzIGJ5IHNldHRpbmcgdGhlIDxzdHJvbmc+Iml0ZW1zIjwvc3Ryb25nPiB2YXJpYWJsZSBvbiB0aGUgcmVxdWVzdCBwYXNzZWQgdG8gdGhlIHBhZ2UgY29udGFpbmluZyB0aGUgQ2F0YWxvZ2VyIHRhZyB3aXRoIGEgY29tcGFyZSBhY3Rpb24uPC9wPg0KICAgIDxwPlRoZSBkZWZhdWx0IGl0ZW0gY29tcGFyaXNvbiB0ZW1wbGF0ZSBjb3VsZCB1c2Ugc29tZSBzdHlsaW5nLCBlLmcuLDo8L3A+DQogICAgPHByZT4NCiAgICAuaXRlbV9jb21wYXJpc29uIHRoIHtmb250LXdlaWdodDogYm9sZDsgcGFkZGluZzogNXB4OyB0ZXh0LWFsaWduOmNlbnRlcjt9DQogICAgLml0ZW1fY29tcGFyaXNvbiB0ZCB7Ym9yZGVyOiAxcHggc29saWQgZ3JheTsgcGFkZGluZzogM3B4IDVweDt0ZXh0LWFsaWduOnJpZ2h0O308L3ByZT4NCiAgDQogICAgPGg0PkN1c3RvbSBUZW1wbGF0ZXM8L2g0Pg0KICAgIDxwPklmIHlvdSdyZSB3aWxsaW5nIHRvIG1lc3MgYXJvdW5kIHdpdGggPHN0cm9uZz5TbWFydHkgVGVtcGxhdGVzPC9zdHJvbmc+LCB5b3UgY2FuIGNoYW5nZSB0aGUgbGF5b3V0IG9mIGFueSBvZiB0aGUgcGFnZXMgZ2VuZXJhdGVkIGJ5IENhdGFsb2dlci4gVGhlcmUgYXJlIGZvdXIga2luZHMgb2YgdGVtcGxhdGVzOiBvbmUga2luZCBmb3IgPHN0cm9uZz5DYXRhbG9nIEl0ZW1zPC9zdHJvbmc+LCBvbmUga2luZCBmb3IgPHN0cm9uZz5DYXRhbG9nIENhdGVnb3JpZXM8L3N0cm9uZz4sIGFuZCBvbmUga2luZCBmb3IgPHN0cm9uZz5QcmludGFibGUgQ2F0YWxvZ3M8L3N0cm9uZz4sIGFuZCBvbmUga2luZCBmb3IgPHN0cm9uZz4iRmVhdHVyZSI8L3N0cm9uZz4gbGlzdHMsIHN1Y2ggYXMgcmVjZW50bHkgYWRkZWQgaXRlbXMgb3IgcmFuZG9tIHNlbGVjdGlvbnMuPC9wPg0KICAgIDxwPldoZW4gZWRpdGluZyBhIFRlbXBsYXRlLCB0aGUgYWRtaW4gc2NyZWVuIHdpbGwgZGlzcGxheSBhIGxpc3Qgb2YgU21hcnR5IHRhZ3MgYXZhaWxhYmxlIHRvIHlvdSBmb3IgdGhhdCBraW5kIG9mIHRlbXBsYXRlLiBUaGlzDQogICAgd2lsbCBvbmx5IGhhcHBlbiBvbmNlIHRoZSBtb2R1bGUga25vd3Mgd2hhdCBraW5kIG9mIHRlbXBsYXRlIHlvdSdyZSBlZGl0aW5nLCBzbyB3aGVuIHlvdSBmaXJzdCBjcmVhdGUgdGhlIHRlbXBsYXRlLCBpdCBkaXNwbGF5cyBhbGwNCiAgICB0aGUgU21hcnR5IHRhZ3MgaXQga25vd3MgYWJvdXQsIG9ubHkgc29tZSBvZiB3aGljaCBiZWluZyBhcHBsaWNhYmxlLjwvcD4NCiAgICA8aDQ+RGlzcGxheWluZyBBdHRyaWJ1dGVzIG9uIEl0ZW0gUGFnZXM8L2g0Pg0KICAgIDxwPkF0dHJpYnV0ZXMgYXJlIGF2YWlsYWJsZSB0byBTbWFydHkgYXMgdG9wLWxldmVsIHZhcmlhYmxlcy4gVGhleSBhcmUgc3RvcmVkIGFzIHNhbml0aXplZCB2ZXJzaW9ucyBvZiB0aGUgYXR0cmlidXRlIG5hbWVzLCB3aGljaCBtZWFucw0KICAgIGl0IGlzIGNvbnZlcnRlZCB0byBsb3dlciBjYXNlIGFuZCBhbGwgcHVuY3R1YXRpb24gYW5kIG5vbi1VUy1BU0NJSSBjaGFyYWN0ZXJzIGdldCByZW1vdmVkLiBUaGlzIGlzIGJlY2F1c2UgU21hcnR5IGlzIGZpbmlja3ksIGFuZCB3aWxsIG5vdCBoYW5kbGUgdGhlc2UgY2hhcmFjdGVycy48L3A+DQogICAgPHA+U28sIGZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBhbiBhdHRyaWJ1dGUgY2FsbGVkIDxzdHJvbmc+Ikdsw7xja2xpY2hrZWl0Ijwvc3Ryb25nPiwgdGhlcmUgd2lsbCBiZSBhIFNtYXJ0eSB2YXJpYWJsZSA8c3Ryb25nPnskZ2xja2xpY2hrZWl0fTwvc3Ryb25nPi4gTm90ZSB0aGF0IHRoZSAiw7wiIGlzIG9taXR0ZWQuPC9wPg0KICAgIDxwPkZvcnR1bmF0ZWx5LCB0aGlzIGlzIHNpbXBsaWZpZWQgYnkgdGhlICRhdHRybGlzdCBsaXN0IGF2YWlsYWJsZS4gVGhpcyBpcyBhIGxpc3Qgb2YgYXR0cmlidXRlcyBieSBmb3JtYWwgbmFtZSAoIkdsw7xja2xpY2hrZWl0IikgYW5kIHRoZWlyIGtleSAoImdsY2tsaWNoa2VpdCIpLiBGb3IgZXhhbXBsZToNCiAgICA8cHJlPg0KICAgICAge3NlY3Rpb24gbmFtZT1hdCBsb29wPSRhdHRybGlzdH0NCiAgICAgICZsdDtkaXYgY2xhc3M9Iml0ZW1fYXR0cmlidXRlX25hbWUiPnskYXR0cmxpc3RbYXRdLm5hbWV9OiZsdDsvZGl2PiZsdDtkaXYgY2xhc3M9Iml0ZW1fYXR0cmlidXRlX3ZhbCI+e2V2YWwgdmFyPSRhdHRybGlzdFthdF0ua2V5fSZsdDsvZGl2Pg0KICAgICAgey9zZWN0aW9ufTwvcHJlPg0KICAgIDxwPkFzIG9mIDxzdHJvbmc+dmVyc2lvbiAwLjg8L3N0cm9uZz4sIHlvdSBjYW4gYXNzaWduIGFuIGFsaWFzIHRvIGVhY2ggYXR0cmlidXRlLiBUaGVzZSBhbGlhc2VzIG5lZWQgdG8gYmUgVVMtQVNDSUkgYW5kIGNvbnRhaW4gbm8gcHVuY3R1YXRpb24uIFRoZXkgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgc2FuaXRpemVkIGF0dHJpYnV0ZSBuYW1lIChlLmcuLCB5b3UgY291bGQgdXNlIHRoZSBhbGlhcyAiZ2x1ZWNrbGljaGtlaXQiKS48L3A+DQogICAgPGg0PkRpc3BsYXlpbmcgQXR0cmlidXRlcyBvbiBQYWdlcyB3aXRoIExpc3RzIG9mIEl0ZW1zPC9oND4NCiAgICA8cD5BdHRyaWJ1dGVzIGFyZSBpbmNsdWRlZCBpbiB0aGUgPHN0cm9uZz4kaXRlbWxpc3RzWyNdPC9zdHJvbmc+IGluIHR3byBkaWZmZXJlbnQgd2F5czogdG9wLWxldmVsIGF0dHJpYnV0ZXMgb2YgdGhlIGl0ZW0sIGFuZCBhcyBwYXJ0IG9mIHRoZSBpdGVtJ3MgPHN0cm9uZz4iYXR0ciI8L3N0cm9uZz4gYXJyYXkuIFRoZXkgYXJlIHN0b3JlZCBhcyBzYW5pdGl6ZWQgdmVyc2lvbnMgb2YgdGhlIGF0dHJpYnV0ZSBuYW1lcywgd2hpY2ggbWVhbnMgdGhleSBhcmUgY29udmVydGVkIHRvIGxvd2VyIGNhc2UgYW5kIGFsbCBwdW5jdHVhdGlvbiBhbmQgbm9uLVVTLUFTQ0lJIGNoYXJhY3RlcnMgZ2V0IHJlbW92ZWQuIFRoaXMgaXMgYmVjYXVzZSBTbWFydHkgaXMgZmluaWNreSwgYW5kIHdpbGwgbm90IGhhbmRsZSB0aGVzZSBjaGFyYWN0ZXJzLjwvcD4NCiAgICA8cD5TbywgZm9yIGV4YW1wbGUsIGlmIHlvdSBoYXZlIGFuIGF0dHJpYnV0ZSBjYWxsZWQgPHN0cm9uZz4iR2zDvGNrbGljaGtlaXQiPC9zdHJvbmc+LCB0aGUgaXRlbSB3aWxsIGhhdmUgPHN0cm9uZz4kaXRlbS5nbGNrbGljaGtlaXQ8L3N0cm9uZz4gYW5kIDxzdHJvbmc+JGl0ZW0uYXR0cnNbJ2dsY2tsaWNoa2VpdCddPC9zdHJvbmc+LiBOb3RlIHRoYXQgdGhlIDxzdHJvbmc+IsO8Ijwvc3Ryb25nPiBpcyBvbWl0dGVkLiBZb3UgY2FuIHJlZmVyIHRvIHRoaXMgYXR0cmlidXRlIGluIHlvdXIgdGVtcGxhdGUNCiAgICB3aXRoIFNtYXJ0eSBjb2RlIGxpa2U6IDxzdHJvbmc+eyRpdGVtbGlzdFtpbmRleF0uZ2xja2xpY2trZWl0fTwvc3Ryb25nPiBvciA8c3Ryb25nPnskaXRlbWxpc3RbaW5kZXhdLmF0dHJzLmdsY2tsaWNoa2VpdH08L3N0cm9uZz4uPC9wPg0KICAgIDxwPkZvcnR1bmF0ZWx5LCB0aGlzIGlzIHNpbXBsaWZpZWQgYnkgdGhlIDxzdHJvbmc+JGF0dHJsaXN0PC9zdHJvbmc+IGxpc3QgYXZhaWxhYmxlLiBUaGlzIGlzIGEgbGlzdCBvZiBhdHRyaWJ1dGVzIGJ5IGZvcm1hbCBuYW1lICgiR2zDvGNrbGljaGtlaXQiKSBhbmQgdGhlaXIga2V5ICgiZ2xja2xpY2hrZWl0IikuIEZvciBleGFtcGxlOg0KICAgIDxwcmU+DQogICAgICAgIHtmb3JlYWNoIGZyb209JGF0dHJsaXN0IGl0ZW09YXR0ciBrZXk9a30NCiAgICAgICAgeyRhdHRyfTogeyRpdGVtc1tudW1sb29wXVska119DQogICAgICAgIHsvZm9yZWFjaH08L3ByZT4NCiAgICA8cD5BcyBvZiA8c3Ryb25nPnZlcnNpb24gMC44PC9zdHJvbmc+LCB5b3UgY2FuIGFzc2lnbiBhbiBhbGlhcyB0byBlYWNoIGF0dHJpYnV0ZS4gVGhlc2UgYWxpYXNlcyBuZWVkIHRvIGJlIDxzdHJvbmc+VVMtQVNDSUk8L3N0cm9uZz4gYW5kIGNvbnRhaW4gbm8gcHVuY3R1YXRpb24uIFRoZXkgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgc2FuaXRpemVkIGF0dHJpYnV0ZSBuYW1lIChlLmcuLCB5b3UgY291bGQgdXNlIHRoZSBhbGlhcyAiZ2x1ZWNrbGljaGtlaXQiKS48L3A+DQogICAgPGg0PlNtYXJ0eSB0YWdzIGluIEF0dHJpYnV0ZXM8L2g0Pg0KICAgIDxwPlNvbWV0aW1lcywgeW91J2xsIHdhbnQgdGhlIGRlc2NyaXB0aW9ucyBvZiB5b3VyIGl0ZW1zIHRvIGluY2x1ZGUgc21hcnR5IHRhZ3MgKGUuZy4sIGNtc19zZWxmbGluaykuIFRvIG1ha2UgdGhhdCB3b3JrLCB5b3UnbGwgbmVlZCB0bw0KICAgIHVwZGF0ZSB5b3VyIHRlbXBsYXRlLiBGb3IgdGhlIGF0dHJpYnV0ZXMgd2hlcmUgeW91IHdhbnQgc21hcnR5IHRhZ3MgdG8gYmUgYWN0aXZlLCB5b3UnbGwgbmVlZCB0byBuZXN0IHRoZSBzbWFydHkgZXZhbHVhdGlvbnMgaW4geW91ciB0ZW1wbGF0ZS4gRm9yIGV4YW1wbGU6PC9wPg0KICAgIDxwcmU+JiMxMjM7ZXZhbCB2YXI9JGF0dHJsaXN0W2F0XS5rZXl9PC9wcmU+DQogICAgPHA+YmVjb21lczo8L3A+DQogICAgPHByZT4mIzEyMztldmFsIHZhcj0kZW50cnktPmlucHV0IGFzc2lnbj10aGlzQXR0cn0mIzEyMztldmFsIHZhcj0kdGhpc0F0dHJ9PC9wcmU+DQogIDwvZGl2Pg0KICANCiAgDQogIDxkaXYgaWQ9IndoYXRzbmV3X2MiPg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICA8aDM+V2hhdCdzIG5ldzwvaDM+DQogICAgICA8cD5UaGlzIGlzIGEgc3VtbWFyeSBvZiB0aGUgbW9zdCBpbXBvcnRhbnQgY2hhbmdlcyB0aGUgbW9kdWxlIGFzIGdvbmUgdGhyb3VnaC4gRm9yIGRldGFpbHMsIHBsZWFzZSBjb25zdWx0IHRoZSBjaGFuZ2Vsb2cuPC9wPg0KICAgICAgPHVsPg0KICAgICAgICA8bGk+DQogICAgICAgICAgQ2F0YWxvZ2VyIGlzIG5vdyBleGNsdXNpdmVseSBjb21wYXRpYmxlIHdpdGggQ01TTVMgMi54Ow0KICAgICAgICA8L2xpPiANCiAgICAgICAgPGxpPg0KICAgICAgICAgIENhdGFsb2dlciBpcyBub3cgY29tcGF0aWJsZSBQSFAgNy54Ow0KICAgICAgICA8L2xpPiAgDQogICAgICAgIDxsaT4NCiAgICAgICAgICBDYXRhbG9nZXIgYWRtaW4gbWVudSBoYXMgbW92ZWQgdG8gY29udGVudCBzZWN0aW9uOw0KICAgICAgICA8L2xpPiANCiAgICAgICAgPGxpPg0KICAgICAgICAgIGNvbnRlbnQgdHlwZXMgbm93IGJlaGF2ZSwgZm9yIHRoZSBtb3N0IHBhcnQsIGxpa2UgQ01TTVMgY29yZSBjb250ZW50IHR5cGVzOg0KICAgICAgICAgIDx1bD4NCiAgICAgICAgICAgIDxsaT5hbGwgYXR0cmlidXRlIG9mIHRoZSB0eXBpY2FsIGNvbnRlbnQgdHlwZSBjYW4gYmUgZm91bmQgYW5kIHVzZWQ7PC9saT4NCiAgICAgICAgICAgIDxsaT5hZGRpdGlvbmFsIGNvbnRlbnQgYmxvY2tzIGNhbiBub3cgYmUgdXNlZCBvbiBwYWdlIHRlbXBsYXRlcyAtIENhdGFsb2dlciB3aWxsIGFsbG93IGl0J3MgdXNlOzwvbGk+DQogICAgICAgICAgICA8bGk+Y2F0YWxvZ2VyIHBhZ2VzIGNhbiBub3cgYmUgcHJldmlld2VkIGJ5IENvbnRlbnQgTWFuYWdlciAtIFByZXZpZXcgdGFiOzwvbGk+DQogICAgICAgICAgPC91bD4NCiAgICAgICAgPC9saT4NCiAgICAgICAgPGxpPg0KICAgICAgICAgIHN1YiB0ZW1wbGF0ZXMgaGF2ZSBhIG5ldyB2YXJpYWJsZSB3aXRoIHRoZSBtYWluIGNvbnRlbnQgYmxvY2sgZ2l2aW5nIHVzZXJzIHNvbWUgZnJlZWRvbSByZWdhcmRpbmcgaXRzIHBsYWNlbWVudDsNCiAgICAgICAgPC9saT4gDQogICAgICAgIDxsaT4NCiAgICAgICAgICBpbWFnZSB0YWJzIHdpbGwgb25seSBiZSB2aXNpYmxlIGlmIHRoZXJlIGFyZSBpbWFnZXMgc2V0IHRvIGJlIHVzZWQgaW4gdGhlIG1vZHVsZSBzZXR0aW5nczsNCiAgICAgICAgPC9saT4gIA0KICAgICAgICA8bGk+DQogICAgICAgICAgZmlsZSB0YWJzIHdpbGwgb25seSBiZSB2aXNpYmxlIGlmIHRoZXJlIGFyZSBmaWxlcyBzZXQgdG8gYmUgdXNlZCBpbiB0aGUgbW9kdWxlIHNldHRpbmdzOw0KICAgICAgICA8L2xpPiAgIA0KICAgICAgICA8bGk+DQogICAgICAgICAgdGhlcmUgaGF2ZSBiZWVuIHNvbWUgY2hhbmdlcyB0byBzdWItdGVtcGxhdGVzIGFsdGhvdWdoIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdhcyBrZXB0IGFzIG11Y2ggYXMgcG9zc2libGU7DQogICAgICAgIDwvbGk+ICAgIA0KICAgICAgICA8bGk+DQogICAgICAgICAgdGhlIGxvY2F0aW9uIGRpciBvZiB0aGUgaW1hZ2VzIGlzIG5vdyBjb25jZWFsZWQgaWYgQ2F0YWxvZ2VyIG5hdGl2ZSBpbWFnZSBoYW5kbGluZyBpcyB1c2VkOw0KICAgICAgICA8L2xpPiAgICANCiAgICAgICAgPGxpPg0KICAgICAgICAgIGEgaHVnZSBudW1iZXIgb2YgPGVtPnVuZGVyIHRoZSBob29kPC9lbT4gbW9kaWZpY2F0aW9ucyBhbmQgb3B0aW1pemF0aW9ucyB3ZXJlIG1hZGUgdG8gdGhlIGNvZGU7DQogICAgICAgIDwvbGk+ICAgICAgICAgDQogICAgICAgIDxsaT4NCiAgICAgICAgICBhIGh1Z2UgbnVtYmVyIG9mIDxzdHJvbmc+aW1wb3J0YW50IGZpeGVzPC9zdHJvbmc+IHdlcmUgbWFkZSBzaW5jZSB2ZXJzaW9uIDxzdHJvbmc+MS4wPC9zdHJvbmc+IGFuZCA8c3Ryb25nPjEuMC4xPC9zdHJvbmc+IHdpdGggcmVnYXJkIHRvIGlzc3VlcyB0aGF0IHNlZW1lZCBmaXhlZCBidXQgd2VyZW4ndCB3b3JraW5nIGFzIGV4cGVjdGVkOw0KICAgICAgICA8L2xpPiAgICANCiAgICAgIDwvdWw+DQogICAgICA8cD5BbHRob3VnaCBhbGwgZWZmb3J0cyBoYXZlIGJlZW4gbWFkZSB0byB0ZXN0IGFuZCBtYWtlIHN1cmUgdGhlIG1vZHVsZSB3b3JrcyB3aXRob3V0IGlzc3VlcywgZ2l2ZW4gdGhlIG51bWJlciBvZiBtb2RpZmljYXRpb25zLCBtaW5vciBidWdzIGFyZSBleHBlY3RlZCB0byBleGlzdCwgc28gcGxlYXNlIGZpbGUgYSBCdWcgUmVwb3J0IGlmIHlvdSBmaW5kIG9uZS48L3A+DQogICAgICA8cD48ZGl2IGNsYXNzPSd3YXJuaW5nJz5JdCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCBhIGZ1bGwgYmFja3VwIG9mIGZpbGVzIGFuZCBkYXRhYmFzZSBiZWZvcmUgYW4gdXBncmFkZS4gU29tZSwgbW9yZSBjb21wbGV4LCBpbnN0YWxsYXRpb25zIG1heSBoYXZlIGlzc3VlczogbW9zdCwgaWYgbm90IGFsbCwgb2YgdGhlbSBzaG91bGQgYmUgc29sdmVkIGJ5IGNsZWFyaW5nIENNU01TIGNhY2hlIGFuZC9vciB0d2Vha2luZyBzdWItdGVtcGxhdGVzLjwvZGl2PjwvcD4NCiAgICA8L2Rpdj4gDQogIDwvZGl2Pg0KICANCiAgDQogIDxkaXYgaWQ9ImFib3V0X2MiPg0KICAgIA0KICAgIDxoMz5TdXBwb3J0PC9oMz4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KICAgICAgPHVsPg0KICAgICAgICA8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgQ01TIE1hZGUgU2ltcGxlICA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnIj5EZXZlbG9wZXIgRm9yZ2U8L2E+LjwvbGk+DQogICAgICAgIDxsaT5UbyBvYnRhaW4gY29tbWVyY2lhbCBzdXBwb3J0LCBwbGVhc2Ugc2VuZCBhbiBlbWFpbCB0byB0aGUgYXV0aG9yIGF0IDxhIGhyZWY9Im1haWx0bzpqb21vcmdAc20tYXJ0LWxhYi5jb20iPiZsdDtqb21vcmdAc20tYXJ0LWxhYi5jb20mZ3Q7PC9hPi48L2xpPg0KICAgICAgICA8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+DQogICAgICAgIDxsaT5UaGUgYXV0aG9yIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+DQogICAgICAgIDxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseSBhbmQgZ3JvdmVsbGluZyBmb3IgZnJlZSBzdXBwb3J0LjwvbGk+DQogICAgICA8L3VsPg0KICAgICA8L2Rpdj4NCiAgICAgICANCiAgICA8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPiAgICANCiAgICAgIDxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dCBvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+DQoNCiAgICAgIDxwPkNvcHlyaWdodCAmY29weTsgMjAxMiAtIDIwMTYsIEZlcm5hbmRvIE1vcmdhZG8gKEpvTW9yZykgPGEgaHJlZj0ibWFpbHRvOmpvbW9yZ0BzbS1hcnQtbGFiLmNvbSI+Jmx0O2pvbW9yZ0BzbS1hcnQtbGFiLmNvbSZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQogICAgICA8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDgsIFNhbXVlbCBHb2xkc3RlaW4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPiAgDQogICAgICA8cCBzdHlsZT0iZm9udC1zaXplOjg1JTtmb250LXdlaWdodDogYm9sZDsiPlRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOzxiciAvPiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247PGJyIC8+IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uPC9wPg0KICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZTo4NSU7Zm9udC13ZWlnaHQ6IGJvbGQ7Ij5UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOzxiciAvPiB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLjwvcD4NCiAgICAgIDxwIHN0eWxlPSJmb250LXNpemU6ODUlO2ZvbnQtd2VpZ2h0OiBib2xkOyI+U2VlIHRoZUdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuPC9wPg0KICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZTo4NSU7Zm9udC13ZWlnaHQ6IGJvbGQ7Ij5Zb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTs8YnIgLz4gaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQSA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vciByZWFkIGl0IG9ubGluZTwvYT4uPC9wPg0KICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZTo4NSU7Zm9udC13ZWlnaHQ6IGJvbGQ7Ij5Zb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPg0KICAgIDwvZGl2Pg0KICAgIA0KICAgIDxoMz5DcmVkaXRzPC9oMz4NCiAgICA8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiBvcmlnaW5hbHkgY3JlYXRlZCwgZGV2ZWxvcGVkIGFuZCBtYWludGFpbmVkIGZvciBhIG51bWJlciBvZiB5ZWFycyBieSBTYW11ZWwgR29sZHN0ZWluLiBGZXJuYW5kbyBNb3JnYWRvIHRvb2sgb3ZlciBhbmQgaGFzIGJlZW4gbWFpbnRhaW5pbmcgaXQgKGZvciBiZXR0ZXIgb3IgZm9yIHdvcnN0KSBzaW5jZSAyMDEyLjwvcD4NCiAgICA8cD48L3A+DQogICAgPHVsPg0KICAgICAgPGxpPjxzdHJvbmc+U2FtdWVsIEdvbGRzdGVpbiAoc2pnKTwvc3Ryb25nPiAtIENyZWF0aW9uIGFuZCBkZXZlbG9wbWVudDs8L2xpPg0KICAgICAgPGxpPjxzdHJvbmc+TnVubzwvc3Ryb25nPiAtIGNvZGUgY29udHJpYnV0aW9uczs8L2xpPg0KICAgICAgPGxpPjxzdHJvbmc+TW9ydGVuIFBvdWxzZW4gKHNpbG1hcmlsbGlvbik8L3N0cm9uZz4gLSBjb2RlIGNvbnRyaWJ1dGlvbnM7PC9saT4NCiAgICAgIDxsaT48c3Ryb25nPkZlcm5hbmRvIE1vcmdhZG8gKEpvTW9yZyk8L3N0cm9uZz4gLSBkZXZlbG9wbWVudCBhbmQgbWFpbnRlbmFuY2U7PC9saT4NCiAgICAgIDxsaT48c3Ryb25nPlJvbGYgVGphc3NlbnMgKFJvbGYpPC9zdHJvbmc+IC0gdGVzdGluZyBhbmQgcXVhbGl0eSBhc3N1cmFuY2U7PC9saT4NCiAgICA8L3VsPg0KICAgIA0KICAgIDxoMz5Db250cmlidXRvcnM8L2gzPg0KICAgIDx1bD4NCiAgICAgIDxsaT48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3d3dy5pZC1hLmNvLnVrIiByZWw9ImV4dGVybmFsIj5QYXVsIENvb3BlcjwvYT4gLSBzcG9uc29yZWQgdGhlIGRldmVsb3BtZW50IG9mIHRleHRhcmVhIGF0dHJpYnV0ZXM7PC9saT4NCiAgICAgIDxsaT48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3d3dy5tYXR0aG9ybnNieS5jYSIgcmVsPSJleHRlcm5hbCI+TWF0dCBIb21zYnkgKERJR0kzKTwvYT4gLSBzcG9uc29yc2hpcDs8L2xpPg0KICAgIDwvdWw+DQogICAgPHA+VGhhbmtzIHRvIG51bWVyb3VzIHBhdGllbnQgdXNlcnMgYW5kIGJ1ZyB0ZXN0ZXJzIChtYW55IG9mIHdob20gaGFkIG5vIGlkZWEgd2hhdCB0aGV5IHdlcmUgZ2V0dGluZyBpbnRvKS48L3A+IA0KICA8L2Rpdj4NCjwvZGl2Pg0KDQoNCg==]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBKb01vcmcgJmx0O2pvbW9yZy5tb3JnQGdtYWlsLmNvbSZndDs8YnIgLz48YnIgLz5WZXJzaW9uOiAxLjAuMjxiciAvPjxiciAvPkNoYW5nZSBIaXN0b3J5OjxiciAvPjx1bD4KICA8bGk+VmVyc2lvbiAxLjAuMiAtIE5vdmVtYmVyIDIwMTYuCiAgICAgIDx1bD4KICAgICAgICA8bGk+UmVtb3ZlZCBzb21lIGxlZ2FjeSBjb2RlLjwvbGk+CiAgICAgICAgPGxpPkZpeGVkIGFjdGlvbnMgPHN0cm9uZz5hbGw8L3N0cm9uZz4sIDxzdHJvbmc+cmVjZW50PC9zdHJvbmc+LCA8c3Ryb25nPnJhbmRvbTwvc3Ryb25nPiBhbmQgPHN0cm9uZz5jb21wYXJlPC9zdHJvbmc+LjwvbGk+CiAgICAgICAgPGxpPkZpeGVkIGNhdGVnb3J5IHByZXZpZXdzLjwvbGk+CiAgICAgICAgPGxpPkZpeGVkIGRlZmF1bHQgdGVtcGxhdGVzLjwvbGk+CiAgICAgICAgPGxpPkZpeGVkIGEgYnVnIGluIGltYWdlIHByb2Nlc3Npbmcgd2hpY2ggcHJldmVudGVkIHByb2Nlc3NlZCBpbWFnZXMgdG8gYmUgc2F2ZWQgb24gdGhlIGNvcnJlY3QgZGlyZWN0b3J5LjwvbGk+CiAgICAgICAgPGxpPkZpeGVkIGEgYnVnIHdpdGggcm91dGVzIHdoaWNoIG1hZGUgaW1hZ2VzIGZyb250ZW5kIHJlbmRlcmluZyByYW5kb21seSBmYWlsLjwvbGk+CiAgICAgICAgPGxpPkEgaHVnZSBudW1iZXIgb2YgbWlub3IgZml4ZXMgYW5kIHR3ZWFrcy48L2xpPgogICAgICAgIDxsaT5VcGRhdGVkIHRoaXMgY2hhbmdlbG9nIHdoaWNoIHdhcyBiZWluZyBmb3Jnb3R0ZW4gc2luY2UgdmVyc2lvbiAwLjExLjMuPC9saT4KICAgICAgPC91bD4KICA8L2xpPgogIDxsaT5WZXJzaW9uIDEuMC4xIC0gT2N0b2JlciAyMDE2LgogICAgICA8dWw+CiAgICAgICAgPGxpPkZpeGVkIGEgc3R1cGlkIGVycm9yOiBmaWxlIG1pc3NpbmcsIGRlbGV0ZWQgYnkgbWlzdGFrZS48L2xpPgogICAgICA8L3VsPgogIDwvbGk+CiAgPGxpPlZlcnNpb24gMS4wIC0gT2N0b2JlciAyMDE2LgogICAgPHVsPgogICAgICA8bGk+CiAgICAgICAgQ2F0YWxvZ2VyIGlzIG5vdyBleGNsdXNpdmVseSBjb21wYXRpYmxlIHdpdGggQ01TTVMgMi54OwogICAgICA8L2xpPiAKICAgICAgPGxpPgogICAgICAgIENhdGFsb2dlciBpcyBub3cgY29tcGF0aWJsZSB3aXRoIFBIUCA3Lng7CiAgICAgIDwvbGk+ICAKICAgICAgPGxpPgogICAgICAgIENhdGFsb2dlciBhZG1pbiBtZW51IGhhcyBtb3ZlZCB0byBjb250ZW50IHNlY3Rpb247CiAgICAgIDwvbGk+IAogICAgICA8bGk+CiAgICAgICAgY29udGVudCB0eXBlcyBub3cgYmVoYXZlLCBmb3IgdGhlIG1vc3QgcGFydCwgbGlrZSBDTVNNUyBjb3JlIGNvbnRlbnQgdHlwZXM6CiAgICAgICAgPHVsPgogICAgICAgICAgPGxpPmFsbCBhdHRyaWJ1dGUgb2YgdGhlIHR5cGljYWwgY29udGVudCB0eXBlIGNhbiBiZSBmb3VuZCBhbmQgdXNlZDs8L2xpPgogICAgICAgICAgPGxpPmFkZGl0aW9uYWwgY29udGVudCBibG9ja3MgY2FuIG5vdyBiZSB1c2VkIG9uIHBhZ2UgdGVtcGxhdGVzIC0gQ2F0YWxvZ2VyIHdpbGwgYWxsb3cgaXQncyB1c2U7PC9saT4KICAgICAgICAgIDxsaT5jYXRhbG9nZXIgcGFnZXMgY2FuIG5vdyBiZSBwcmV2aWV3ZWQgYnkgQ29udGVudCBNYW5hZ2VyIC0gUHJldmlldyB0YWI7PC9saT4KICAgICAgICA8L3VsPgogICAgICA8L2xpPgogICAgICA8bGk+CiAgICAgICAgc3ViIHRlbXBsYXRlcyBoYXZlIGEgbmV3IHZhcmlhYmxlIHdpdGggdGhlIG1haW4gY29udGVudCBibG9jayBnaXZpbmcgdXNlcnMgc29tZSBmcmVlZG9tIHJlZ2FyZGluZyBpdHMgcGxhY2VtZW50OwogICAgICA8L2xpPiAKICAgICAgPGxpPgogICAgICAgIGltYWdlIHRhYnMgd2lsbCBvbmx5IGJlIHZpc2libGUgaWYgdGhlcmUgYXJlIGltYWdlcyBzZXQgdG8gYmUgdXNlZCBpbiB0aGUgbW9kdWxlIHNldHRpbmdzOwogICAgICA8L2xpPiAgCiAgICAgIDxsaT4KICAgICAgICBmaWxlIHRhYnMgd2lsbCBvbmx5IGJlIHZpc2libGUgaWYgdGhlcmUgYXJlIGZpbGVzIHNldCB0byBiZSB1c2VkIGluIHRoZSBtb2R1bGUgc2V0dGluZ3M7CiAgICAgIDwvbGk+ICAgCiAgICAgIDxsaT4KICAgICAgICB0aGVyZSBoYXZlIGJlZW4gc29tZSBjaGFuZ2VzIHRvIHN1Yi10ZW1wbGF0ZXMgYWx0aG91Z2ggYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2FzIGtlcHQgYXMgbXVjaCBhcyBwb3NzaWJsZTsKICAgICAgPC9saT4gICAgCiAgICAgIDxsaT4KICAgICAgICB0aGUgbG9jYXRpb24gZGlyIG9mIHRoZSBpbWFnZXMgaXMgbm93IGNvbmNlYWxlZCBpZiBDYXRhbG9nZXIgbmF0aXZlIGltYWdlIGhhbmRsaW5nIGlzIHVzZWQ7CiAgICAgIDwvbGk+ICAgIAogICAgICA8bGk+CiAgICAgICAgYSBodWdlIG51bWJlciBvZiA8ZW0+dW5kZXIgdGhlIGhvb2Q8L2VtPiBtb2RpZmljYXRpb25zIGFuZCBvcHRpbWl6YXRpb25zIHdhcyBtYWRlIHRvIHRoZSBjb2RlOwogICAgICA8L2xpPiAgICAKICAgIDwvdWw+CiAgPC9saT4KICA8bGk+VmVyc2lvbiAwLjExLjMgLSBEZWNlbWJlciAyMDEyLgogICAgICA8dWw+CiAgICAgICAgICA8bGk+PHN0cm9uZz5CdWcgZml4OiBbIzQ3ODFdIC0gIDwvc3Ryb25nPiBjbXNfc2VsZmxpbmsgZG9lc24ndCB3b3JrLjwvbGk+CiAgICAgIDwvdWw+CiAgPC9saT4KICA8bGk+VmVyc2lvbiAwLjExLjIgLSBOb3ZlbWJlciAyMDEyLgogICAgICA8dWw+CiAgICAgICAgICA8bGk+PHN0cm9uZz5CdWcgZml4OiAtIHtDYXRhbG9nZXIgYWN0aW9uPSdhbGwnIHN1Yl90ZW1wbGF0ZT0nbXlfc3ViX3RlbXBsYXRlJyBhbGlhcz0nLyd9PC9zdHJvbmc+IGJyZWFrcyB3aXRoIGEgUEhQIGVycm9yLjwvbGk+CiAgICAgIDwvdWw+CiAgPC9saT4KICA8bGk+VmVyc2lvbiAwLjExLjEgLSBPY3RvYmVyIDIwMTIuCiAgICAgIDx1bD4KICAgICAgICAgIDxsaT48c3Ryb25nPkJ1ZyBmaXg6IFsjODQwXSAtPC9zdHJvbmc+IFJlcGVhdGVkIGNvbnRlbnQgb3V0cHV0IGlmIG11bHRpcGxlIGNvbnRlbnQgdGFncyBpbiB0ZW1wbGF0ZS48L2xpPgogICAgICAgICAgPGxpPjxzdHJvbmc+QnVnIGZpeDogWyM4MzgxXSAtIHtwcm9jZXNzIHBhZ2VkYXRhfTwvc3Ryb25nPiBicmVha3MgY2F0YWxvZ2VyIHRlbXBsYXRlLjwvbGk+CiAgICAgIDwvdWw+CiAgPC9saT4KICA8bGk+VmVyc2lvbiAwLjExLjAgLSBBdWd1c3QgMjAxMi4KICAgIDx1bD4KICAgICAgPGxpPk51bWVyb3VzIGZpeGVzIGZvciBDTVNNUyAxLjExIGNvbXBhdGliaWxpdHk7PC9saT4KICAgICAgPGxpPkZvcmdlIFJ1bGVzIGNvbXBsaWFudDs8L2xpPgogICAgPC91bD4KICA8L2xpPgogIDxsaT5WZXJzaW9uIDAuOS4xIC0gSmFuIDIwMTEuIEJ1ZyBmaXggZm9yIGNoZWNrYm94IGl0ZW0gYXR0cmlidXRlIHR5cGVzLjwvbGk+CiAgPGxpPlZlcnNpb24gMC45IC0gTm92IDIwMTAuCiAgICA8dWw+CiAgICAgIDxsaT5OdW1lcm91cyBmaXhlcyBmb3IgQ01TTVMgMS45IGNvbXBhdGliaWxpdHk8L2xpPgogICAgICA8bGk+VGVkJ3MgZXhjZWxsZW50IGRyb3Bkb3duIGF0dHJpYnV0ZSB0eXBlPC9saT4KICAgIDxsaT5PcHRpbWl6ZWQgInJhbmRvbSIgYWN0aW9uIGZvciBzaXRlcyB3aXRoIGh1Z2UgbnVtYmVycyBvZiBpdGVtIHBhZ2VzPC9saT4KICAgICAgPGxpPkNoZWNrYm94IGF0dHJpYnV0ZSB0eXBlPC9saT4KICAgIDwvdWw+CiAgPC9saT4KICA8bGk+VmVyc2lvbiAwLjguMSAodW5yZWxlYXNlZCwgc2VlIDAuOSk8L2xpPgogIDxsaT5WZXJzaW9uIDAuOC4wIC0gU2VwIDIwMTAuCiAgICA8dWw+CiAgICAgIDxsaT5SZW9yZGVyaW5nIG9mIGF0dHJpYnV0ZXM8L2xpPgogICAgICA8bGk+QXR0cidzIG5vdyBjYW4gaGF2ZSBsZW5ndGhzIGFuZCBkZWZhdWx0IHZhbHVlczwvbGk+CiAgICAgIDxsaT5BcHBseSBidXR0b24gZm9yIHRlbXBsYXRlczwvbGk+CiAgICAgIDxsaT5GaXhlZCB0byBwcmludGFibGUgY2F0YWxvZy1zdHVmZjwvbGk+CiAgICAgIDxsaT5CdWlsdC1pbiBzb3J0aW5nIGZ1bmN0aW9uYWxpdHk8L2xpPgogICAgICA8bGk+QXNzb3J0ZWQgYnVnIGZpeGVzLCBjbGVhbnVwcyBldGM8L2xpPgogICAgPC91bD4KICA8L2xpPgogIDxsaT5WZXJzaW9uIDAuNy43IC0gRmViIDIwMTAuIEFkZGVkIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCBJdGVtcy4gQWRkZWQgaXRlbSBjb21wYXJpc29uIGFjdGlvbi48L2xpPgogIDxsaT5WZXJzaW9uIDAuNy42IC0gMTAgU2VwdCAyMDA5LiBGaXggZm9yIHRoYXQgbGFzdCBmaXguIERvaCE8L2xpPgogIDxsaT5WZXJzaW9uIDAuNy41IC0gMTAgU2VwdCAyMDA5LiBGaXhlZCBQcmludGFibGUgQ2F0YWxvZy4uLiBkaWQgdGhhdCBldmVyIHdvcms/PzwvbGk+CiAgPGxpPlZlcnNpb24gMC43LjQgLSAyMiBKdW5lIDIwMDkuIEluY29ycG9yYXRlZCBDYWxndXlcJ3MgZml4ZXMgZm9yIDEuNi48L2xpPgogIDxsaT5WZXJzaW9uIDAuNy4zIC0gMTYgSnVuZSAyMDA5LiBCdWcgZml4ZXMgYnkgTnVuby4gTWFkZSBtYXggQ01TIHZlcnNpb24gMS41LjQgaW4gcHJlcCBmb3IgQ01TIDEuNiByZWxlYXNlLjwvbGk+CiAgPGxpPlZlcnNpb24gMC43LjIgLSAxNCBNYXJjaCAyMDA5LiBCdWcgZml4ZXMgYnkgTnVubyBDb3N0YS48L2xpPgogIDxsaT5WZXJzaW9uIDAuNy4xIC0gMjkgU2VwdCAyMDA4LiBBZGRlZCBWYXJpYWJsZSBtZXRob2QgZm9yIEphdmllciBTYW4gSnVhbiBDb3N0aWxhcy48L2xpPgogIDxsaT5WZXJzaW9uIDAuNyAtIDE3IE1hcmNoIDIwMDguIDxlbT5GaW5hbGx5PC9lbT4gYWRkZWQgcGVyLXBhZ2UgbWV0YS1kYXRhLiBBbmQgdGhlcmUgd2FzIGdyZWF0IGNlbGVicmF0aW9uIGluIHRoZSBzdHJlZXRzLCBhbmQgZGFuY2luZyBpbiB0aGUgdG93biBzcXVhcmUuIEFsc28gYWRkZWQgaW4gbWFueSBIVE1MIGFuZCBsb2NhbGl6YXRpb24gZml4ZXMgY29udHJpYnV0ZWQgYnkgTnVubyBDb3N0YS48L2xpPgogIDxsaT5WZXJzaW9uIDAuNi4yIC0gNyBKYW51YXJ5IDIwMDcuIEZpeGVkIG5hc3R5IGJ1ZyB3aGVyZSB1cGdyYWRpbmcgbWFrZXMgaXQgbG9vayBsaWtlIGFsbCB5b3VyIG5vdGUgZmllbGRzIGFyZSBsb3N0LjwvbGk+CiAgPGxpPlZlcnNpb24gMC42LjEgLSAyIEphbnVhcnkgMjAwNy4gRml4ZWQgbmFzdHkgYnVnIHdoZXJlIGNoYW5naW5nIGNvbnRlbnQgdHlwZSBmcm9tICJjb250ZW50IiB0byBjYXRhbG9nIGNvbnRlbnQgdHlwZXMgcmVuYW1lZCBhbGwgY2F0YWxvZyBpbWFnZXMuPC9saT4KICA8bGk+VmVyc2lvbiAwLjYgLSAyOSBEZWNlbWJlciAyMDA3LiA8dWw+CiAgPGxpPkJ1ZyBmaXg6IEltYWdlcyBkb25cJ3QgZ2V0ICJsb3N0IiB3aGVuIHBhZ2UgYWxpYXMgY2hhbmdlcy48L2xpPgogIDxsaT5CdWcgZml4OiBBdHRyaWJ1dGUgY29udGVudCBkb2VzblwndCBnZXQgImxvc3QiIHdoZW4gYXR0cmlidXRlcyBhcmUgcmVuYW1lZC48L2xpPgogIDxsaT5CdWcgZml4OiBGaXhlZCBQcmludGFibGUgQ2F0YWxvZy4gV29ya3MgZm9yIGZpcnN0IHRpbWUgc2luY2Ugdi4wLjQgb3IgdGhlcmVhYm91dHMuPC9saT4KICA8bGk+QnVnIGZpeDogTm93IGhvbm9ycyBzeXN0ZW0gcHJlZmVyZW5jZSBmb3IgV1lTSVdZRyBlZGl0aW5nIG9mIHRleHQgYXJlYXMuPC9saT4KICA8bGk+RmVhdHVyZTogQXR0cmlidXRlcyBtYXkgbm93IGJlIHRleHQgYXJlYXMuPC9saT4KICA8L3VsPgogIDwvbGk+CiAgPGxpPlZlcnNpb24gMC41LjYgLSAxMCBEZWNlbWJlciAyMDA3LiBUYXJkeSByb2xsb3V0IG9mIGZpeGVzOiA8dWw+CiAgPGxpPkFkZGVkIGNvZGUgdG8gcHJldmVudCBzaG93aW5nIG9mIG5vbi11cGxvYWRlZCBpbWFnZXMsIGNhdGVnb3J5IHBhZ2UgYnVmZmVyIGZsdXNoaW5nIGZvciBleHRyZW1lIGNhc2VzLCBtaW5vciBidWcgZml4ZXM8L2xpPgogIDxsaT5GaXggZm9yICdyZWNlbnQnIGFjdGlvbiB3aGVuIGFsaWFzIGlzIC88L2xpPgogIDxsaT5GaXggZm9yIHRoZSBwcm9ibGVtIHdoZXJlIGNhdGFsb2dzIHdpdGggbW9yZSB0aGFuIHRlbiBjYXRlZ29yaWVzIGhhdmUgaXRlbXMgZGlzcGxheWVkIGluIGluY29ycmVjdCBjYXRlZ29yaWVzPC9saT48L3VsPjwvbGk+CiAgPGxpPlZlcnNpb24gMC41LjUgLSAyMCBKdW5lIDIwMDcuIEZpeCBmb3IgQ29udGVudCBBbGlhcyBzdXBwb3J0IC0gcmVxdWlyZXMgQ29udGVudCBBbGlhcyB2LiAwLjYuMS48L2xpPgogIDxsaT5WZXJzaW9uIDAuNS40IC0gMTkgSnVuZSAyMDA3LiBBZGRlZCAiYWxsIiBmZWF0dXJlIGxpc3QuPC9saT4KICA8bGk+VmVyc2lvbiAwLjUuMyAtIDIxIFNlcHRlbWJlciAyMDA2LiBBZGRlZCBsaW5rcyB0byBzb3VyY2UgKG5vbi1yZXNjYWxlZCkgaW1hZ2VzLCBhbmQgYWRkZWQgaW1hZ2UgZGVsZXRlIGZ1bmN0aW9uYWxpdHkuPC9saT4KICA8bGk+VmVyc2lvbiAwLjUuMiAtIDE3IFNlcHRlbWJlciAyMDA2LiBSZW1vdmVkIGRlYnVnIG91dHB1dCwgcmV2aXNlZCBpbWFnZSBzeXN0ZW0gKGZpeGVkIGJ1Z3MpLiBDYWNoaW5nIGJ1ZyBzZWVtcyB0byByZW1haW4uPC9saT4KICA8bGk+VmVyc2lvbiAwLjUuMSAtIDI0IEF1Z3VzdCAyMDA2LiAoY2FsZ3V5MTAwMCksIFVwcGVkIE1pbmltdW1DTVNWZXJzaW9uIHRvIDEuMC1zdm4sIGFuZCBtb3JlIDEuMCBjaGFuZ2VzIHdlcmUgYWRkZWQgKHJlbW92ZWQgc3RhdGljIG1ldGhvZHMpPC9saT4KICA8bGk+VmVyc2lvbiAwLjUgLSAxNiBBdWd1c3QgMjAwNi4gQXNzb3J0ZWQgY29udHJpYnV0ZWQgYnVnIGZpeGVzIGZvciBDTVMgTVMgMS4wLCAgbmV3IG9wdGlvbnMgZm9yIGltYWdlcy48L2xpPgogIDxsaT5WZXJzaW9uIDAuNC4yIC0gMjggTWF5IDIwMDYuIEJ1ZyBmaXggZm9yIGF0dHJpYnV0ZXMgaW4gY2F0ZWdvcnkgcGFnZXMuIEFkZGVkICIvIiBwYWdlX2FsaWFzIGZvciBmZWF0dXJlIGxpc3RzLjwvbGk+CiAgPGxpPlZlcnNpb24gMC40LjEgLSAyMyBNYXkgMjAwNi4gQnVnIGZpeCB0byBtYWtlIHdvcmsgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiBDTVMgTVMuPC9saT4KICA8bGk+VmVyc2lvbiAwLjQgLSAyMiBNYXkgMjAwNi4gQnVnIGZpeGVzLCBGZWF0dXJlIExpc3RzLjwvbGk+CiAgPGxpPlZlcnNpb24gMC4zIC0gKHVucmVsZWFzZWQsIHB1Ymxpc2hlZCBmcm9tIHN2bik8L2xpPgogIDxsaT5WZXJzaW9uIDAuMiAtIDIzIE1hcmNoIDIwMDYuIE51bWVyb3VzIGJ1ZyBmaXhlcy4gUGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzLiBNZW1vcnkgZm9vdHByaW50IG9wdGltaXphdGlvbnMuIE5vdyB1c2VzIHRoZSBDTVMgMC4xMiBNb2R1bGUgQVBJLjwvbGk+CiAgPGxpPlZlcnNpb24gMC4xLjUgLSAxNyBOb3ZlbWJlciAyMDA1LiBJbml0aWFsIFJlbGVhc2UuIEplc3VzLCB0aGF0IHRvb2sgYSBsb25nIHRpbWUuPC9saT4KICA8bGk+VmVyc2lvbiAwLjEgLSAxOSBNYXJjaCAyMDA1LiBQcm9qZWN0IEluaXRpYXRpb24uPC9saT4KPC91bD48YnIgLz4=]]></about>
	<description><![CDATA[Manage Catalog settings]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.adminattrs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCFkZWZpbmVkKCdDTVNfVkVSU0lPTicpKSBleGl0Ow0KaWYoISR0aGlzLT5DaGVja0FjY2VzcygpKSBleGl0Ow0KDQokdGhpcy0+aW5pdEFkbWluTmF2KCRpZCwgJHBhcmFtcywgJHJldHVybmlkKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdzdWJtaXRhdHRycycsICRyZXR1cm5pZCkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAnU3VibWl0JykpOw0KJGF0dHJpYnV0ZXMgICAgID0gYXJyYXkoKTsNCiRxdWVyeSAgICAgICAgICA9ICJTRUxFQ1QgaWQsIGF0dHJpYnV0ZSwgYWxpYXMsIGRlZmF1bHR2YWwsIHR5cGVfaWQsIGxlbmd0aCwgb3JkZXJfYnksIGZpZWxkX3R5cGUsIHNlbGVjdF92YWx1ZXMgRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9jYXRhbG9nX2F0dHIgT1JERVIgQlkgb3JkZXJfYnkgQVNDIjsNCiRkYnJlc3VsdCAgICAgICA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KDQokY291bnRieXR5cGUgICAgPSBhcnJheSgpOw0KJGNvdW50Ynl0eXBlWzFdID0gMDsNCiRjb3VudGJ5dHlwZVsyXSA9IDA7DQokY291bnRieXR5cGVbM10gPSAwOw0KDQp3aGlsZSgkZGJyZXN1bHQgIT09IGZhbHNlICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpDQp7DQogICRvbmVyb3cgICAgICAgICAgICAgICAgPSBuZXcgc3RkQ2xhc3MoKTsNCiAgJG9uZXJvdy0+aW5wdXQgICAgICAgICA9ICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnYXR0cl8nIC4gJHJvd1sndHlwZV9pZCddIC4gJ18nIC4gJGNvdW50Ynl0eXBlWyRyb3dbJ3R5cGVfaWQnXV0sICRyb3dbJ2F0dHJpYnV0ZSddLCAxNSwgMTAwKTsNCiAgJG9uZXJvdy0+ZGVmYXVsdGlucHV0ICA9ICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZGVmYXVsdF8nIC4gJHJvd1sndHlwZV9pZCddIC4gJ18nIC4gJGNvdW50Ynl0eXBlWyRyb3dbJ3R5cGVfaWQnXV0sICRyb3dbJ2RlZmF1bHR2YWwnXSwgMTUsIDEwMjQpOw0KICAkb25lcm93LT5sZW5pbnB1dCAgICAgID0gJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdsZW5fJyAuICRyb3dbJ3R5cGVfaWQnXSAuICdfJyAuICRjb3VudGJ5dHlwZVskcm93Wyd0eXBlX2lkJ11dLCAoIWVtcHR5KCRyb3dbJ2xlbmd0aCddKSA/ICRyb3dbJ2xlbmd0aCddIDogMjUpLCAyLCA0KTsNCiAgJG9uZXJvdy0+YWxpYXNpbnB1dCAgICA9ICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnYWxpYXNfJyAuICRyb3dbJ3R5cGVfaWQnXSAuICdfJyAuICRjb3VudGJ5dHlwZVskcm93Wyd0eXBlX2lkJ11dLCAkcm93WydhbGlhcyddLCAxNSwgMjU1KTsNCiAgJG9uZXJvdy0+aGlkZGVuICAgICAgICA9ICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdvbGRfJyAuICRyb3dbJ3R5cGVfaWQnXSAuICdfJyAuICRjb3VudGJ5dHlwZVskcm93Wyd0eXBlX2lkJ11dLCAkcm93WydpZCddKTsNCiAgJG9uZXJvdy0+dHlwZSAgICAgICAgICA9ICRyb3dbJ3R5cGVfaWQnXTsNCiAgJG9uZXJvdy0+ZmllbGRfdHlwZSAgICA9ICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2ZpZWxkX3R5cGVfJyAuICRyb3dbJ3R5cGVfaWQnXSAuICdfJyAuICRjb3VudGJ5dHlwZVskcm93Wyd0eXBlX2lkJ11dLCBhcnJheV9mbGlwKCR0aGlzLT5nZXRGaWVsZFR5cGVzKCkpLCAtIDEsICRyb3dbJ2ZpZWxkX3R5cGUnXSk7DQogICRvbmVyb3ctPnNlbGVjdF92YWx1ZXMgPSAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3NlbGVjdF92YWx1ZXNfJyAuICRyb3dbJ3R5cGVfaWQnXSAuICdfJyAuICRjb3VudGJ5dHlwZVskcm93Wyd0eXBlX2lkJ11dLCAkcm93WydzZWxlY3RfdmFsdWVzJ10sIDE1LCAyNTUpOw0KICAkb25lcm93LT5vcmRlcl9ieSAgICAgID0gJHJvd1snb3JkZXJfYnknXTsNCiAgJG9uZXJvdy0+Y2J0ICAgICAgICAgICA9ICRjb3VudGJ5dHlwZVskcm93Wyd0eXBlX2lkJ11dOw0KICAkb25lcm93LT5kZWxldGUgICAgICAgID0gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnZGVsZXRlXycgLiAkcm93Wyd0eXBlX2lkJ10gLiAnXycgLiAkY291bnRieXR5cGVbJHJvd1sndHlwZV9pZCddXSwgMSwgMCk7DQogICRjb3VudGJ5dHlwZVskcm93Wyd0eXBlX2lkJ11dKys7DQogIGFycmF5X3B1c2goJGF0dHJpYnV0ZXMsICRvbmVyb3cpOw0KfQ0KDQpmb3IoJGkgPSAwOyAkaSA8IDM7ICRpKyspDQp7DQogIGZvcigkaiA9IDE7ICRqIDwgNDsgJGorKykNCiAgew0KICAgICRvbmVyb3cgICAgICAgICAgICAgICAgPSBuZXcgc3RkQ2xhc3MoKTsNCiAgICAkb25lcm93LT5pbnB1dCAgICAgICAgID0gJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdhdHRyXycgLiAkaiAuICdfJyAuICRjb3VudGJ5dHlwZVskal0sICcnLCAxNSwgMjU1KTsNCiAgICAkb25lcm93LT5hbGlhc2lucHV0ICAgID0gJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdhbGlhc18nIC4gJGogLiAnXycgLiAkY291bnRieXR5cGVbJGpdLCAnJywgMTUsIDI1NSk7DQogICAgJG9uZXJvdy0+ZGVmYXVsdGlucHV0ICA9ICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZGVmYXVsdF8nIC4gJGogLiAnXycgLiAkY291bnRieXR5cGVbJGpdLCAnJywgMTUsIDEwMjQpOw0KICAgICRvbmVyb3ctPmxlbmlucHV0ICAgICAgPSAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2xlbl8nIC4gJGogLiAnXycgLiAkY291bnRieXR5cGVbJGpdLCAyNSwgMiwgNCk7DQogICAgJG9uZXJvdy0+ZmllbGRfdHlwZSAgICA9ICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2ZpZWxkX3R5cGVfJyAuICRqIC4gJ18nIC4gJGNvdW50Ynl0eXBlWyRqXSwgYXJyYXlfZmxpcCgkdGhpcy0+Z2V0RmllbGRUeXBlcygpKSwgLSAxLCAkcm93WydmaWVsZF90eXBlJ10pOw0KICAgICRvbmVyb3ctPnNlbGVjdF92YWx1ZXMgPSAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3NlbGVjdF92YWx1ZXNfJyAuICRqIC4gJ18nIC4gJGNvdW50Ynl0eXBlWyRqXSwgJycsIDE1LCAyNTUpOw0KICAgICRvbmVyb3ctPmRlbGV0ZSAgICAgICAgPSAnJzsNCiAgICAkb25lcm93LT5oaWRkZW4gICAgICAgID0gJyc7DQogICAgJG9uZXJvdy0+dHlwZSAgICAgICAgICA9ICRqOw0KICAgICRvbmVyb3ctPm9yZGVyX2J5ICAgICAgPSAkY291bnRieXR5cGVbJGpdICsgMTsNCiAgICAkb25lcm93LT5jYnQgICAgICAgICAgID0gJGNvdW50Ynl0eXBlWyRqXSsrOw0KICAgIGFycmF5X3B1c2goJGF0dHJpYnV0ZXMsICRvbmVyb3cpOw0KICB9DQp9DQoNCmZvcigkaSA9IDE7ICRpIDwgNDsgJGkrKykNCnsNCiAgJHNjID0gYXJyYXkoKTsNCiAgZm9yKCRqID0gMDsgJGogPD0gJGNvdW50Ynl0eXBlWyRpXTsgJGorKykNCiAgew0KICAgICRzY1skal0gPSAkajsNCiAgfQ0KICANCiAgZm9yKCRrID0gMDsgJGsgPCBjb3VudCgkYXR0cmlidXRlcyk7ICRrKyspDQogIHsNCiAgICBpZigkYXR0cmlidXRlc1ska10tPnR5cGUgPT0gJGkpDQogICAgew0KICAgICAgJGF0dHJpYnV0ZXNbJGtdLT5vcmRlcl9zZWwgPSAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdvcmRlcmJ5XycgLiAkaSAuICdfJyAuICRhdHRyaWJ1dGVzWyRrXS0+Y2J0LCAkc2MsIC0gMSwgJGF0dHJpYnV0ZXNbJGtdLT5vcmRlcl9ieSk7DQogICAgfQ0KICAgICRhdHRyaWJ1dGVzWyRrXS0+aXN0ZXh0ID0gRkFMU0U7DQogIH0NCn0NCg0KLy9kZWJ1Z19kaXNwbGF5KCRhdHRyaWJ1dGVzKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGFiX2hlYWRlcnMnLCAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCkgLiAkdGhpcy0+U2V0VGFiSGVhZGVyKCdpdGVtJywgJHRoaXMtPkxhbmcoJ3RpdGxlX2l0ZW1fdGFiJykpIC4gJHRoaXMtPlNldFRhYkhlYWRlcignY2F0ZWdvcnknLCAkdGhpcy0+TGFuZygndGl0bGVfY2F0ZWdvcnlfdGFiJykpIC4gJHRoaXMtPlNldFRhYkhlYWRlcignY2F0YWxvZycsICR0aGlzLT5MYW5nKCd0aXRsZV9wcmludGFibGVfdGFiJykpIC4gJHRoaXMtPkVuZFRhYkhlYWRlcnMoKSAuICR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZF90YWInLCAkdGhpcy0+RW5kVGFiKCkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0YWJfZm9vdGVycycsICR0aGlzLT5FbmRUYWJDb250ZW50KCkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9pdGVtX3RhYicsICR0aGlzLT5TdGFydFRhYignaXRlbScpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfY2F0ZWdvcnlfdGFiJywgJHRoaXMtPlN0YXJ0VGFiKCdjYXRlZ29yeScpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfY2F0YWxvZ190YWInLCAkdGhpcy0+U3RhcnRUYWIoJ2NhdGFsb2cnKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLCBpc3NldCgkcGFyYW1zWydtZXNzYWdlJ10pID8gJHBhcmFtc1snbWVzc2FnZSddIDogJycpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhdHRyaWJ1dGVfaW5wdXRzJywgJGF0dHJpYnV0ZXMpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV9pdGVtX2F0dHJpYnV0ZXMnLCAkdGhpcy0+TGFuZygndGl0bGVfaXRlbV90YWInKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2F0dHJfYWxpYXMnLCAkdGhpcy0+TGFuZygndGl0bGVfYXR0cl9hbGlhcycpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfYXR0cl9sZW5ndGgnLCAkdGhpcy0+TGFuZygndGl0bGVfYXR0cl9sZW5ndGgnKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2F0dHJfbGVuZ3RoX2hlbHAnLCAkdGhpcy0+TGFuZygndGl0bGVfYXR0cl9sZW5ndGhfaGVscCcpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfYXR0cl9kZWZhdWx0JywgJHRoaXMtPkxhbmcoJ3RpdGxlX2F0dHJfZGVmYXVsdCcpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfYXR0cl9vcmRlcl9ieScsICR0aGlzLT5MYW5nKCd0aXRsZV9hdHRyX29yZGVyX2J5JykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV9jYXRhbG9nX2F0dHJpYnV0ZXMnLCAkdGhpcy0+TGFuZygndGl0bGVfcHJpbnRhYmxlX3RhYicpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfY2F0ZWdvcnlfYXR0cmlidXRlcycsICR0aGlzLT5MYW5nKCd0aXRsZV9jYXRlZ29yeV90YWInKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2l0ZW1fYXR0cmlidXRlc19oZWxwJywgJHRoaXMtPkxhbmcoJ3RpdGxlX2l0ZW1fYXR0cmlidXRlc19oZWxwJykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV9jYXRhbG9nX2F0dHJpYnV0ZXNfaGVscCcsICR0aGlzLT5MYW5nKCd0aXRsZV9jYXRhbG9nX2F0dHJpYnV0ZXNfaGVscCcpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfY2F0ZWdvcnlfYXR0cmlidXRlc19oZWxwJywgJHRoaXMtPkxhbmcoJ3RpdGxlX2NhdGVnb3J5X2F0dHJpYnV0ZXNfaGVscCcpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfc2VsZWN0X3ZhbHVlcycsICR0aGlzLT5MYW5nKCd0aXRsZV9zZWxlY3RfdmFsdWVzJykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV9maWVsZF90eXBlJywgJHRoaXMtPkxhbmcoJ3RpdGxlX2ZpZWxkX3R5cGUnKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2RlbGV0ZScsICR0aGlzLT5MYW5nKCd0aXRsZV9kZWxldGUnKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NhdGVnb3J5JywgJHRoaXMtPkxhbmcoJ21hbmFnZWF0dHJzJykpOw0KLy8gRGlzcGxheSB0ZW1wbGF0ZQ0KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbmF0dHJzLnRwbCcpOw0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/action.adminprefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQppZiAoISAkdGhpcy0+Q2hlY2tBY2Nlc3MoKSkgZXhpdDsNCg0KCQkkdGhpcy0+aW5pdEFkbWluTmF2KCRpZCwgJHBhcmFtcywgJHJldHVybmlkKTsNCg0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnc3VibWl0cHJlZnMnLCAkcmV0dXJuaWQpKTsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbignc3VibWl0JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsICdTdWJtaXQnKSk7DQoNCiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0YWJfaGVhZGVycycsJHRoaXMtPlN0YXJ0VGFiSGVhZGVycygpLg0KICAgICAgICAkdGhpcy0+U2V0VGFiSGVhZGVyKCdpdGVtaW1hZ2UnLCR0aGlzLT5MYW5nKCd0aXRsZV9pdGVtX2ltYWdlX3RhYicpKS4NCiAgICAgICAgJHRoaXMtPlNldFRhYkhlYWRlcignZmlsZScsJHRoaXMtPkxhbmcoJ3RpdGxlX2ZpbGVfdGFiJykpLg0KICAgICAgICAkdGhpcy0+U2V0VGFiSGVhZGVyKCdjYXRlZ29yeWltYWdlJywkdGhpcy0+TGFuZygndGl0bGVfY2F0ZWdvcnlfaW1hZ2VfdGFiJykpLg0KICAgICAgICAkdGhpcy0+U2V0VGFiSGVhZGVyKCdwcmludGFibGUnLCR0aGlzLT5MYW5nKCd0aXRsZV9wcmludGFibGVfdGFiJykpLg0KICAgICAgICAkdGhpcy0+U2V0VGFiSGVhZGVyKCdpbWFnZScsJHRoaXMtPkxhbmcoJ3RpdGxlX2ltYWdlX3RhYicpKS4NCiAgICAgICAgJHRoaXMtPlNldFRhYkhlYWRlcigncGF0aCcsJHRoaXMtPkxhbmcoJ3RpdGxlX3BhdGhfdGFiJykpLg0KICAgICAgICAkdGhpcy0+RW5kVGFiSGVhZGVycygpLiR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKSk7DQogICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kX3RhYicsJHRoaXMtPkVuZFRhYigpKTsNCiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0YWJfZm9vdGVycycsJHRoaXMtPkVuZFRhYkNvbnRlbnQoKSk7DQogICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfaXRlbV9pbWFnZV90YWInLCR0aGlzLT5TdGFydFRhYignaXRlbWltYWdlJykpOw0KICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X2NhdGVnb3J5X2ltYWdlX3RhYicsJHRoaXMtPlN0YXJ0VGFiKCdjYXRlZ29yeWltYWdlJykpOw0KICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X3ByaW50YWJsZV90YWInLCR0aGlzLT5TdGFydFRhYigncHJpbnRhYmxlJykpOw0KICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X2ZpbGVfdGFiJywkdGhpcy0+U3RhcnRUYWIoJ2ZpbGUnKSk7DQogICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfcGF0aF90YWInLCR0aGlzLT5TdGFydFRhYigncGF0aCcpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X2ltYWdlX3RhYicsJHRoaXMtPlN0YXJ0VGFiKCdpbWFnZScpKTsNCg0KICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2l0ZW1faW1hZ2VfY291bnQnLCAkdGhpcy0+TGFuZygndGl0bGVfaXRlbV9pbWFnZV9jb3VudCcpKTsNCiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV9pdGVtX2ZpbGVfY291bnQnLCAkdGhpcy0+TGFuZygndGl0bGVfaXRlbV9maWxlX2NvdW50JykpOw0KICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfaXRlbV9maWxlX3R5cGVzJywgJHRoaXMtPkxhbmcoJ3RpdGxlX2l0ZW1fZmlsZV90eXBlcycpKTsNCiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV9mbHVzaF9jYXRzJywgJHRoaXMtPkxhbmcoJ3RpdGxlX2ZsdXNoX2NhdHMnKSk7DQogICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfc2hvd19vbmx5X2V4aXN0aW5nX2ltYWdlcycsDQogICAgICAgIAkkdGhpcy0+TGFuZygndGl0bGVfc2hvd19vbmx5X2V4aXN0aW5nX2ltYWdlcycpKTsNCiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV9zaG93X21pc3NpbmdfaW1hZ2VzJywNCiAgICAgICAgCSR0aGlzLT5MYW5nKCd0aXRsZV9zaG93X21pc3NpbmdfaW1hZ2VzJykpOw0KICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX2NvdW50JywgJHRoaXMtPkxhbmcoJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX2NvdW50JykpOw0KICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV9oZXJvJywgJHRoaXMtPkxhbmcoJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV9oZXJvJykpOw0KICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV90aHVtYm5haWwnLCAkdGhpcy0+TGFuZygndGl0bGVfaXRlbV9pbWFnZV9zaXplX3RodW1ibmFpbCcpKTsNCiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV9jYXRlZ29yeV9pbWFnZV9zaXplX2hlcm8nLCAkdGhpcy0+TGFuZygndGl0bGVfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV9oZXJvJykpOw0KICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX3NpemVfdGh1bWJuYWlsJywgJHRoaXMtPkxhbmcoJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX3NpemVfdGh1bWJuYWlsJykpOw0KICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV9jYXRlZ29yeScsICR0aGlzLT5MYW5nKCd0aXRsZV9pdGVtX2ltYWdlX3NpemVfY2F0ZWdvcnknKSk7DQogICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfaXRlbV9pbWFnZV9zaXplX2NhdGFsb2cnLCAkdGhpcy0+TGFuZygndGl0bGVfaXRlbV9pbWFnZV9zaXplX2NhdGFsb2cnKSk7DQogICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZScsJHRoaXMtPkxhbmcoJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2UnKSk7DQogICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfcHJpbnRhYmxlX3NvcnRfb3JkZXInLCR0aGlzLT5MYW5nKCd0aXRsZV9wcmludGFibGVfc29ydF9vcmRlcicpKTsNCg0KICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2ltYWdlX3VwbG9hZF9wYXRoJywkdGhpcy0+TGFuZygndGl0bGVfaW1hZ2VfdXBsb2FkX3BhdGgnKSk7DQogICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfZmlsZV91cGxvYWRfcGF0aCcsJHRoaXMtPkxhbmcoJ3RpdGxlX2ZpbGVfdXBsb2FkX3BhdGgnKSk7DQogICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfaW1hZ2VfcHJvY19wYXRoJywkdGhpcy0+TGFuZygndGl0bGVfaW1hZ2VfcHJvY19wYXRoJykpOw0KICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3BhdGhfaGVscCcsJHRoaXMtPkxhbmcoJ3BhdGhfaGVscCcpKTsNCg0KICAgICAgICAkbnVtYmVyID0gYXJyYXkoKTsNCiAgICAgICAgDQogICAgICAgIGZvciAoJGk9MDskaTwxNjskaSsrKQ0KICAgICAgICB7DQogICAgICAgIAkkbnVtYmVyWyRpXT0kaTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9pdGVtX2ltYWdlX2NvdW50JywgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnaXRlbV9pbWFnZV9jb3VudCcsICRudW1iZXIsIC0xLCAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2l0ZW1faW1hZ2VfY291bnQnLCAnMicpKSk7DQogICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfY2F0ZWdvcnlfaW1hZ2VfY291bnQnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdjYXRlZ29yeV9pbWFnZV9jb3VudCcsICRudW1iZXIsIC0xLCAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NhdGVnb3J5X2ltYWdlX2NvdW50JywgJzEnKSkpOw0KICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X2l0ZW1fZmlsZV9jb3VudCcsICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2l0ZW1fZmlsZV9jb3VudCcsICRudW1iZXIsIC0xLCAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2l0ZW1fZmlsZV9jb3VudCcsICcwJykpKTsNCiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9pdGVtX2ZpbGVfdHlwZXMnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2l0ZW1fZmlsZV90eXBlcycsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2l0ZW1fZmlsZV90eXBlcycsICdwZGYsc3dmLGZsdixkb2Msb2R0LG9kcyx4bHMnKSkpOw0KDQoJCQ0KICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfaW1hZ2VfdXBsb2FkX3BhdGgnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2ltYWdlX3VwbG9hZF9wYXRoJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaW1hZ2VfdXBsb2FkX3BhdGgnLCAkdGhpcy0+Z2V0QXNzZXRQYXRoKCdzJyx0cnVlKSkpKTsNCiAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X2ltYWdlX3Byb2NfcGF0aCcsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnaW1hZ2VfcHJvY19wYXRoJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaW1hZ2VfcHJvY19wYXRoJywgJHRoaXMtPmdldEFzc2V0UGF0aCgnaScsdHJ1ZSkpKSk7DQogICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9maWxlX3VwbG9hZF9wYXRoJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdmaWxlX3VwbG9hZF9wYXRoJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZmlsZV91cGxvYWRfcGF0aCcsICR0aGlzLT5nZXRBc3NldFBhdGgoJ2YnLHRydWUpKSkpOw0KDQoNCgkJJHJlY3Vyc2UgPSAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NhdGVnb3J5X3JlY3Vyc2UnLCAnbWl4ZWRfb25lJyk7IA0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X2NhdGVnb3J5X3JlY3Vyc2UnLA0KCQkJJzxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iJy4kaWQuJ2NhdGVnb3J5X3JlY3Vyc2UiIHZhbHVlPSJpdGVtc19hbGwiJyAuDQoJCQkJKCRyZWN1cnNlID09ICdpdGVtc19hbGwnPycgY2hlY2tlZD0iY2hlY2tlZCInOicnKS4nIC8+Jy4NCgkJCQkkdGhpcy0+TGFuZygndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9pdGVtc19hbGwnKS4nPGJyIC8+Jy4NCgkJCSc8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IicuJGlkLidjYXRlZ29yeV9yZWN1cnNlIiB2YWx1ZT0iaXRlbXNfb25lIicgLg0KCQkJCSgkcmVjdXJzZSA9PSAnaXRlbXNfb25lJz8nIGNoZWNrZWQ9ImNoZWNrZWQiJzonJykuJyAvPicuDQoJCQkJJHRoaXMtPkxhbmcoJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfaXRlbXNfb25lJykuJzxiciAvPicuDQoJCQknPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSInLiRpZC4nY2F0ZWdvcnlfcmVjdXJzZSIgdmFsdWU9ImNhdGVnb3JpZXNfYWxsIicgLg0KCQkJCSgkcmVjdXJzZSA9PSAnY2F0ZWdvcmllc19hbGwnPycgY2hlY2tlZD0iY2hlY2tlZCInOicnKS4nIC8+Jy4NCgkJCQkkdGhpcy0+TGFuZygndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9jYXRlZ29yaWVzX2FsbCcpLic8YnIgLz4nLg0KCQkJJzxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iJy4kaWQuJ2NhdGVnb3J5X3JlY3Vyc2UiIHZhbHVlPSJjYXRlZ29yaWVzX29uZSInIC4NCgkJCQkoJHJlY3Vyc2UgPT0gJ2NhdGVnb3JpZXNfb25lJz8nIGNoZWNrZWQ9ImNoZWNrZWQiJzonJykuJyAvPicuDQoJCQkJJHRoaXMtPkxhbmcoJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfY2F0ZWdvcmllc19vbmUnKS4nPGJyIC8+Jy4NCgkJCSc8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IicuJGlkLidjYXRlZ29yeV9yZWN1cnNlIiB2YWx1ZT0ibWl4ZWRfYWxsIicgLg0KCQkJCSgkcmVjdXJzZSA9PSAnbWl4ZWRfYWxsJz8nIGNoZWNrZWQ9ImNoZWNrZWQiJzonJykuJyAvPicuDQoJCQkJJHRoaXMtPkxhbmcoJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfbWl4ZWRfYWxsJykuJzxiciAvPicuDQoJCQknPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSInLiRpZC4nY2F0ZWdvcnlfcmVjdXJzZSIgdmFsdWU9Im1peGVkX29uZSInIC4NCgkJCQkoJHJlY3Vyc2UgPT0gJ21peGVkX29uZSc/JyBjaGVja2VkPSJjaGVja2VkIic6JycpLicgLz4nLg0KCQkJCSR0aGlzLT5MYW5nKCd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX21peGVkX29uZScpKTsNCiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9pdGVtX2ltYWdlX3NpemVfaGVybycsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnaXRlbV9pbWFnZV9zaXplX2hlcm8nLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaXRlbV9pbWFnZV9zaXplX2hlcm8nLCAnNDAwJyksIDEwLCAxMCkpOw0KICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X2l0ZW1faW1hZ2Vfc2l6ZV90aHVtYm5haWwnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2l0ZW1faW1hZ2Vfc2l6ZV90aHVtYm5haWwnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaXRlbV9pbWFnZV9zaXplX3RodW1ibmFpbCcsICc3MCcpLCAxMCwgMTApKTsNCiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9jYXRlZ29yeV9pbWFnZV9zaXplX2hlcm8nLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2NhdGVnb3J5X2ltYWdlX3NpemVfaGVybycsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjYXRlZ29yeV9pbWFnZV9zaXplX2hlcm8nLCAnNDAwJyksIDEwLCAxMCkpOw0KICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X2NhdGVnb3J5X2ltYWdlX3NpemVfdGh1bWJuYWlsJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdjYXRlZ29yeV9pbWFnZV9zaXplX3RodW1ibmFpbCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjYXRlZ29yeV9pbWFnZV9zaXplX3RodW1ibmFpbCcsICc5MCcpLCAxMCwgMTApKTsNCiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9pdGVtX2ltYWdlX3NpemVfY2F0ZWdvcnknLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2l0ZW1faW1hZ2Vfc2l6ZV9jYXRlZ29yeScsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2ltYWdlX3NpemVfY2F0ZWdvcnknLCAnNzAnKSwgMTAsIDEwKSk7DQogICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfaXRlbV9pbWFnZV9zaXplX2NhdGFsb2cnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2l0ZW1faW1hZ2Vfc2l6ZV9jYXRhbG9nJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2l0ZW1faW1hZ2Vfc2l6ZV9jYXRhbG9nJywgJzEwMCcpLCAxMCwgMTApKTsNCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zaG93X21pc3NpbmdfaW1hZ2VzJywkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdzaG93X21pc3NpbmcnLCcwJykuJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnc2hvd19taXNzaW5nJywgMSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Nob3dfbWlzc2luZycsJzEnKSkuICR0aGlzLT5MYW5nKCd0aXRsZV9zaG93X21pc3NpbmdfaW1hZ2VzX2xvbmcnKSk7CQkNCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zaG93X29ubHlfZXhpc3RpbmdfaW1hZ2VzJywkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdzaG93X2V4dGFudCcsJzAnKS4kdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdzaG93X2V4dGFudCcsIDEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzaG93X2V4dGFudCcsJzEnKSkuICR0aGlzLT5MYW5nKCd0aXRsZV9zaG93X29ubHlfZXhpc3RpbmdfaW1hZ2VzX2hlbHAnKSk7CQkNCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9mbHVzaF9jYXRzJywkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdmbHVzaF9jYXRzJywnMCcpLiR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ2ZsdXNoX2NhdHMnLCAxLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZmx1c2hfY2F0cycsJzAnKSkuICR0aGlzLT5MYW5nKCd0aXRsZV9mbHVzaF9jYXRzX2hlbHAnKSk7CQkNCg0KICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2l0ZW1zX3Blcl9wYWdlJywkdGhpcy0+TGFuZygndGl0bGVfaXRlbXNfcGVyX3BhZ2UnKSk7DQogICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfaXRlbXNfcGVyX3BhZ2UnLCR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwNCiAgICAgICAgIAkJJ2l0ZW1zX3Blcl9wYWdlJywNCiAgICAgICAgICAgICAgICBhcnJheSgnMSc9PicxJywnMic9PicyJywnMyc9PiczJywnNCc9Pic0JywnNSc9Pic1JywnNic9Pic2JywNCiAgICAgICAgICAgICAgICAJJzcnPT4nNycsJzgnPT4nOCcsJzknPT4nOScsJzEwJz0+JzEwJywnMTEnPT4nMTEnLCcxMic9PicxMicsDQogICAgICAgICAgICAgICAgCScxMyc9PicxMycsJzE0Jz0+JzE0JywnMTUnPT4nMTUnLCcxNic9PicxNicsJzE3Jz0+JzE3JywnMTgnPT4nMTgnLA0KICAgICAgICAgICAgICAgIAknMTknPT4nMTknLCcyMCc9PicyMCcsJzI0Jz0+JzI0JywnMjUnPT4nMjUnLCczMCc9PiczMCcsJzQwJz0+JzQwJywNCiAgICAgICAgICAgICAgICAJJzUwJz0+JzUwJywgJzEwMDAnPT4nMTAwMCcpLCAtMSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NhdGVnb3J5X2l0ZW1zX3Blcl9wYWdlJywnMTAnKSkpOw0KICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2l0ZW1fc29ydF9vcmRlcicsJHRoaXMtPkxhbmcoJ3RpdGxlX2l0ZW1fc29ydF9vcmRlcicpKTsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9pdGVtX3NvcnRfb3JkZXInLCR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwNCgkJIAknaXRlbV9zb3J0X29yZGVyJyxhcnJheSgkdGhpcy0+TGFuZygnbmF0dXJhbF9vcmRlcicpPT4nbmF0dXJhbCcsDQoJCSAJJHRoaXMtPkxhbmcoJ2FscGhhX29yZGVyJyk9PidhbHBoYScpLCAtMSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NhdGVnb3J5X3NvcnRfb3JkZXInLCduYXR1cmFsJykpKTsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9wcmludGFibGVfc29ydF9vcmRlcicsJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLA0KCQkgCSdwcmludGFibGVfc29ydF9vcmRlcicsYXJyYXkoJHRoaXMtPkxhbmcoJ25hdHVyYWxfb3JkZXInKT0+J25hdHVyYWwnLA0KCQkgCSR0aGlzLT5MYW5nKCdhbHBoYV9vcmRlcicpPT4nYWxwaGEnKSwgLTEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwcmludGFibGVfc29ydF9vcmRlcicsJ25hdHVyYWwnKSkpOw0KDQogICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignbWVzc2FnZScsaXNzZXQoJHBhcmFtc1snbWVzc2FnZSddKT8kcGFyYW1zWydtZXNzYWdlJ106JycpOw0KDQogICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignY2F0ZWdvcnknLCAkdGhpcy0+TGFuZygnbWFuYWdlcHJlZnMnKSk7DQoNCiAgICAgICAgI0Rpc3BsYXkgdGVtcGxhdGUNCiAgICAgICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbnByZWZzLnRwbCcpOw0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/action.all.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCgkJaWYoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgZXhpdDsNCgkJZm9yZWFjaCAoJHBhcmFtcyBhcyAka2V5PT4kdmFsKQ0KCQkJew0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCRrZXksICRwYXJhbXNbJGtleV0pOw0KCQkJfQ0KIAkJaWYgKCEgaXNzZXQoJHBhcmFtc1sncmVjdXJzZSddKSkNCiAJCQl7DQogCQkJJHBhcmFtc1sncmVjdXJzZSddID0gJ2l0ZW1zX2FsbCc7DQogCQkgCX0NCg0KICAgIGxpc3QoJGN1clBhZ2UsICRjYXRlZ29yeUl0ZW1zKSA9ICR0aGlzLT5nZXRDYXRhbG9nSXRlbXNMaXN0KCRwYXJhbXMpOw0KDQogICAgICAgIGlmIChpc3NldCgkcGFyYW1zWydnbG9iYWxfc29ydCddKSkNCiAJCQl7DQoJCQlpZiAoJHBhcmFtc1snZ2xvYmFsX3NvcnQnXSA9PSAnYWxwaGEnKQ0KICAgICAgICAgICAgCXsNCiAgICAgICAgICAgIAl1c29ydCgkY2F0ZWdvcnlJdGVtcyxhcnJheSgiQ2F0YWxvZ2VyIiwgImNvbnRlbnRhbHBoYSIpKTsNCiAgICAgICAgICAgIAl9DQoJCQllbHNlIGlmICgkcGFyYW1zWydnbG9iYWxfc29ydCddID09ICdkYXRlJykNCgkJCQl7DQoJICAgICAgICAgICAgdXNvcnQoJGNhdGVnb3J5SXRlbXMsYXJyYXkoIkNhdGFsb2dlciIsICJjcmVhdGVkIikpOw0KCQkJCX0NCgkJCWVsc2UgaWYgKCRwYXJhbXNbJ2dsb2JhbF9zb3J0J10gPT0gJ21kYXRlJykNCgkJCQl7DQoJICAgICAgICAgICAgdXNvcnQoJGNhdGVnb3J5SXRlbXMsYXJyYXkoIkNhdGFsb2dlciIsICJjaHJvbm8iKSk7DQoJCQkJfQ0KCQkJfQ0KCQlpZiAoaXNzZXQoJHBhcmFtc1snZ2xvYmFsX3NvcnRfZGlyJ10pICYmICRwYXJhbXNbJ2dsb2JhbF9zb3J0X2RpciddPT0nYXNjJykNCgkJCXsNCgkJCSRjYXRlZ29yeUl0ZW1zID0gYXJyYXlfcmV2ZXJzZSgkY2F0ZWdvcnlJdGVtcyk7DQoJCQl9DQoNCiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpdGVtcycsJGNhdGVnb3J5SXRlbXMpOw0KCQkkdGhpcy0+c21hcnR5QmFzaWNzKCk7DQoNCgkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGFiYXNlKCR0aGlzLT5nZXRUZW1wbGF0ZUZyb21BbGlhcygkcGFyYW1zWydzdWJfdGVtcGxhdGUnXSkpOw0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/action.compare.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQoNCiRpdGVtbGlzdCA9IGFycmF5KCk7DQoNCmlmIChpc3NldCgkX1JFUVVFU1RbJ2l0ZW1zJ10pKQ0Kew0KICAkcGFyYW1zWydpdGVtcyddID0gJF9SRVFVRVNUWydpdGVtcyddOw0KfQ0KDQppZiAoISBpc19hcnJheSgkcGFyYW1zWydpdGVtcyddKSkNCnsNCiAgJHBhcmFtc1snaXRlbXMnXSA9IGV4cGxvZGUoJywnLCRwYXJhbXNbJ2l0ZW1zJ10pOwkNCn0NCg0KZm9yZWFjaCAoJHBhcmFtc1snaXRlbXMnXSBhcyAkdGhpc0l0ZW0pDQp7DQogICRwYWdlID0gJHRoaXMtPmdldENhdGFsb2dJdGVtKCR0aGlzSXRlbSk7DQogIGFycmF5X3B1c2goJGl0ZW1saXN0LCAkcGFnZSk7CQ0KfQ0KDQppZiAoY291bnQoJGl0ZW1saXN0KSA+IDApDQp7DQogICRzbWFydHktPmFzc2lnbignYXR0cmxpc3QnLCBjYXRVc2VyRGVmQXR0cmlidXRlc09wczo6Z2V0VXNlckF0dHJpYnV0ZXMoJ2NhdGFsb2dfYXR0cnMnKSk7DQp9DQplbHNlDQp7DQogIC8vIGJsYW5rIGFycmF5DQogICR0aGlzLT5zbWFydHktPmFzc2lnbignYXR0cmxpc3QnLCAkaXRlbWxpc3QpOw0KfQ0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJGl0ZW1saXN0KTsNCiR0aGlzLT5zbWFydHlCYXNpY3MoKTsNCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkdGhpcy0+Z2V0VGVtcGxhdGVGcm9tQWxpYXMoJHBhcmFtc1snc3ViX3RlbXBsYXRlJ10pKTsNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQovLyBub3QgdXNlZCBmb3IgdGhlIG1vbWVudCBhbmQgbXkgYmUgcmVtb3ZlZCBhdCBhbnkgcG9pbnQgaW4gdGhlIGZ1dHVyZQ0KcmV0dXJuOw0KDQppZiggIWlzc2V0KCRwYXJhbXNbJ2FsaWFzJ10pICkgcmV0dXJuOw0KDQpmb3JlYWNoICgkcGFyYW1zIGFzICRrZXk9PiR2YWwpDQp7DQogICRzbWFydHktPmFzc2lnbigka2V5LCAkcGFyYW1zWyRrZXldKTsNCn0NCg0KJHNob3dNaXNzaW5nID0gJ18nIC4gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Nob3dfbWlzc2luZycsICcxJyk7DQokaW1hZ2VBcnJheSA9IGFycmF5KCk7DQokZmlsZUFycmF5ID0gYXJyYXkoKTsNCiRmaWxlVXJsQXJyYXkgPSBhcnJheSgpOw0KJGZpbGVUeXBlQXJyYXkgPSBhcnJheSgpOw0KJHNyY0ltZ0FycmF5ID0gYXJyYXkoKTsNCiR0aHVtYkFycmF5ID0gYXJyYXkoKTsNCiRpbWdjb3VudCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2ltYWdlX2NvdW50JywgMik7DQokZmlsZWNvdW50ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2l0ZW1fZmlsZV9jb3VudCcsIDApOw0KJGZ1bGxTaXplID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2l0ZW1faW1hZ2Vfc2l6ZV9oZXJvJywgJzQwMCcpOw0KJHRodW1iU2l6ZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2ltYWdlX3NpemVfdGh1bWJuYWlsJywgJzcwJyk7DQokcHJ1bmVsaXN0ID0gKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzaG93X2V4dGFudCcsJzEnKSA9PSAnMScpOw0KJGFjdHVhbGZpbGVjb3VudCA9IDA7DQoNCmlmICgkaW1nY291bnQgPiAwKQ0Kew0KCWZvciAoJGk9MTskaTw9JGltZ2NvdW50OyRpKyspDQogIHsNCiAgICBpZiAoISAkcHJ1bmVsaXN0IHx8ICR0aGlzLT5zcmNFeGlzdHMoJHBhcmFtc1snYWxpYXMnXSwgJGkpKQ0KICAgIHsNCgkgICAgYXJyYXlfcHVzaCgkaW1hZ2VBcnJheSwgDQoJCSAgICAkdGhpcy0+aW1hZ2VTcGVjKCRwYXJhbXNbJ2FsaWFzJ10sICdmJywgJGksICRmdWxsU2l6ZSkpOyAgICAgICAgICAgIA0KCSAgICBhcnJheV9wdXNoKCR0aHVtYkFycmF5LA0KCQkgICAgJHRoaXMtPmltYWdlU3BlYygkcGFyYW1zWydhbGlhcyddLCAndCcsICRpLCAkdGh1bWJTaXplKSk7DQoJICAgIGFycmF5X3B1c2goJHNyY0ltZ0FycmF5LA0KCQkgICAgJHRoaXMtPnNyY0ltYWdlU3BlYygkcGFyYW1zWydhbGlhcyddLCAkaSkpOw0KCSAgICAkc21hcnR5LT5hc3NpZ24oJ2ltYWdlXycuJGkuJ191cmwnLA0KCQkgICAgJHRoaXMtPmltYWdlU3BlYygkcGFyYW1zWydhbGlhcyddLCAnZicsICRpLCAkZnVsbFNpemUpKTsgICAgICAgICAgICANCgkgICAgJHNtYXJ0eS0+YXNzaWduKCdpbWFnZV90aHVtYl8nLiRpLidfdXJsJywNCgkJICAgICR0aGlzLT5pbWFnZVNwZWMoJHBhcmFtc1snYWxpYXMnXSwgJ3QnLCAkaSwgJHRodW1iU2l6ZSkpOw0KCSAgICAkc21hcnR5LT5hc3NpZ24oJ3NyY19pbWFnZV8nLiRpLidfdXJsJywNCgkJICAgICR0aGlzLT5zcmNJbWFnZVNwZWMoJHBhcmFtc1snYWxpYXMnXSwgJGkpKTsNCgkgIH0NCgkgICAgfQ0KfQ0KDQppZiAoJGZpbGVjb3VudCA+IDApDQp7DQogIGxpc3QoJGZpbGVBcnJheSwgJGZpbGVUeXBlQXJyYXkpID0gJHRoaXMtPmdldEZpbGVzKCRwYXJhbXNbJ2FsaWFzJ10pOw0KDQogIGZvcmVhY2ggKCRmaWxlQXJyYXkgYXMgJGk9PiR2KQ0KCXsNCgkgICRzbWFydHktPmFzc2lnbignZmlsZV8nLigkaSsxKS4nX3VybCcsDQoJCSAgJGdDbXMtPmNvbmZpZ1sndXBsb2Fkc191cmwnXS4kdGhpcy0+Z2V0QXNzZXRQYXRoKCdmJykuJy8nLiRwYXJhbXNbJ2FsaWFzJ10uJy8nLiRmaWxlQXJyYXlbJGldKTsNCgkgIGFycmF5X3B1c2goJGZpbGVVcmxBcnJheSwkZ0Ntcy0+Y29uZmlnWyd1cGxvYWRzX3VybCddLiR0aGlzLT5nZXRBc3NldFBhdGgoJ2YnKS4nLycuJHBhcmFtc1snYWxpYXMnXS4nLycuJGZpbGVBcnJheVskaV0pOw0KCSAgJHNtYXJ0eS0+YXNzaWduKCdmaWxlXycuKCRpKzEpLidfbmFtZScsDQoJCSAgJGZpbGVBcnJheVskaV0pOw0KCSAgJHNtYXJ0eS0+YXNzaWduKCdmaWxlXycuKCRpKzEpLidfZXh0JywNCgkJICAkZmlsZVR5cGVBcnJheVskaV0pOw0KCSAgJGFjdHVhbGZpbGVjb3VudCArPSAxOw0KICB9DQoNCn0NCiRzbWFydHktPmFzc2lnbignYXR0cmxpc3QnLCRwYXJhbXNbJ2F0dHJsaXN0J10pOw0KJHNtYXJ0eS0+YXNzaWduKCdpbWFnZV91cmxfYXJyYXknLCRpbWFnZUFycmF5KTsNCiRzbWFydHktPmFzc2lnbignZmlsZV91cmxfYXJyYXknLCRmaWxlVXJsQXJyYXkpOw0KJHNtYXJ0eS0+YXNzaWduKCdmaWxlX25hbWVfYXJyYXknLCRmaWxlQXJyYXkpOw0KJHNtYXJ0eS0+YXNzaWduKCdmaWxlX2V4dF9hcnJheScsJGZpbGVUeXBlQXJyYXkpOw0KJHNtYXJ0eS0+YXNzaWduKCdmaWxlX2NvdW50JywkYWN0dWFsZmlsZWNvdW50KTsNCiRzbWFydHktPmFzc2lnbignaW1hZ2VfdGh1bWJfdXJsX2FycmF5JywkdGh1bWJBcnJheSk7DQokc21hcnR5LT5hc3NpZ24oJ3NyY19pbWFnZV91cmxfYXJyYXknLCAkc3JjSW1nQXJyYXkpOw0KJHNtYXJ0eUJhc2ljcygpOw0KDQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJ2NhdGFsb2dfJyAuICRwYXJhbXNbJ3N1Yl90ZW1wbGF0ZSddKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQppZiAoISAkdGhpcy0+Q2hlY2tBY2Nlc3MoKSkgZXhpdDsNCiR0aGVtZSA9IGNtc191dGlsczo6Z2V0X3RoZW1lX29iamVjdCgpOw0KDQoJCSR0aGlzLT5pbml0QWRtaW5OYXYoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQpOw0KDQogICAgICAgIC8vTG9hZCB0aGUgc2hvd3MNCiAgICAgICAgJGVudHJ5YXJyYXkgPSBhcnJheSgpOw0KDQogICAgICAgICRxdWVyeSA9ICJTRUxFQ1QgdC5pZCwgdC50aXRsZSwgdHQubmFtZSBhcyB0eXBlIEZST00gIi4NCiAgICAgICAgCWNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2NhdGFsb2dfdGVtcGxhdGUgdCwgIi4NCiAgICAgICAgCWNtc19kYl9wcmVmaXgoKS4NCiAgICAgICAgCSJtb2R1bGVfY2F0YWxvZ190ZW1wbGF0ZV90eXBlIHR0IFdIRVJFIHQudHlwZV9pZCA9IHR0LnR5cGVfaWQgT1JERVIgYnkgdC50eXBlX2lkLCB0aXRsZSI7DQogICAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KDQogICAgICAgICRyb3djbGFzcyA9ICdyb3cxJzsNCg0KICAgICAgICB3aGlsZSAoJGRicmVzdWx0ICE9PSBmYWxzZSAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQ0KICAgICAgICB7DQoJICAgICAgICRvbmVyb3cgPSBuZXcgc3RkQ2xhc3MoKTsNCg0KCSAgICAgICAkb25lcm93LT5pZCA9ICRyb3dbJ2lkJ107DQoJICAgICAgICRvbmVyb3ctPnR5cGUgPSAkcm93Wyd0eXBlJ107DQoJICAgICAgICRvbmVyb3ctPnRpdGxlID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdHRlbXBsJywgJHJldHVybmlkLA0KCSAgICAgICAJCSRyb3dbJ3RpdGxlJ10sIGFycmF5KCd0ZW1wbGF0ZV9pZCc9PiRyb3dbJ2lkJ10pKTsNCgkgICAgICAgJG9uZXJvdy0+cm93Y2xhc3MgPSAkcm93Y2xhc3M7DQoNCgkgICAgICAgJG9uZXJvdy0+ZWRpdGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0dGVtcGwnLCAkcmV0dXJuaWQsDQoJICAgICAgIAkJJHRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsDQoJICAgICAgIAkJCSR0aGlzLT5MYW5nKCdlZGl0JyksJycsJycsJ3N5c3RlbWljb24nKSwNCgkgICAgICAgCQkgCWFycmF5KCd0ZW1wbGF0ZV9pZCc9PiRyb3dbJ2lkJ10pKTsNCgkgICAgICAgJG9uZXJvdy0+ZGVsZXRlbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZXRlbXBsJywgJHJldHVybmlkLA0KCSAgICAgICAJCSR0aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsDQoJICAgICAgIAkJCSR0aGlzLT5MYW5nKCdkZWxldGUnKSwnJywnJywnc3lzdGVtaWNvbicpLA0KCSAgICAgICAJCQlhcnJheSgndGVtcGxhdGVfaWQnPT4kcm93WydpZCddKSwgJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmUnLCdUZW1wbGF0ZScpKTsNCg0KCSAgICAgICBhcnJheV9wdXNoKCRlbnRyeWFycmF5LCAkb25lcm93KTsNCg0KCSAgICAgICAoJHJvd2NsYXNzPT0icm93MSI/JHJvd2NsYXNzPSJyb3cyIjokcm93Y2xhc3M9InJvdzEiKTsNCiAgICAgICAgfQ0KDQogICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbXMnLCAkZW50cnlhcnJheSk7DQogICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJGVudHJ5YXJyYXkpKTsNCiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjYXRlZ29yeScsJHRoaXMtPkxhbmcoJ3RlbXBsYXRlbGlzdCcpKTsNCiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV90ZW1wbGF0ZScsJHRoaXMtPkxhbmcoJ3RpdGxlX3RlbXBsYXRlJykpOw0KICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX3RlbXBsYXRlX3R5cGUnLCR0aGlzLT5MYW5nKCd0aXRsZV90ZW1wbGF0ZV90eXBlJykpOw0KICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ25vdGVtcGxhdGVzJywkdGhpcy0+TGFuZygnbm90ZW1wbGF0ZXMnKSk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbignbWVzc2FnZScsaXNzZXQoJHBhcmFtc1snbWVzc2FnZSddKT8kcGFyYW1zWydtZXNzYWdlJ106JycpOw0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3NlY3Rpb24nLCR0aGlzLT5MYW5nKCdzdWJ0ZW1wbGF0ZXMnKSk7DQoNCiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhZGRsaW5rJywNCiAgICAgICAgICAgICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXR0ZW1wbCcsICRyZXR1cm5pZCwNCiAgICAgICAgICAgICAgICAkdGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLA0KICAgICAgICAgICAgICAgICR0aGlzLT5MYW5nKCdhZGR0ZW1wbGF0ZScpLCcnLCcnLCdzeXN0ZW1pY29uJyksIGFycmF5KCksICcnLCBmYWxzZSwgZmFsc2UsICcnKSAuJyAnLg0KICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdHRlbXBsJywgJHJldHVybmlkLA0KICAgICAgICAgICAgICAgICR0aGlzLT5MYW5nKCdhZGR0ZW1wbGF0ZScpLCBhcnJheSgpLCAnJywgZmFsc2UsIGZhbHNlLCAnY2xhc3M9InBhZ2VvcHRpb25zIicpLg0KICAgICAgICAgICAgICAgICcmbmJzcDsmbmJzcDsnLg0KICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmVpbXBvcnQnLCAkcmV0dXJuaWQsDQogICAgICAgICAgICAgICAgJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy9tb2R1bGVzL0NhdGFsb2dlci9pbWFnZXMvcmVsb2FkLmdpZiIgY2xhc3M9InN5c3RlbWljb24iIGFsdD0iJy4kdGhpcy0+TGFuZygncmVpbXBvcnR0ZW1wbGF0ZXMnKS4nIiAgdGl0bGU9IicuJHRoaXMtPkxhbmcoJ3JlaW1wb3J0dGVtcGxhdGVzJykuJyIgLz4nLCBhcnJheSgpLCAnJywgZmFsc2UsIGZhbHNlLCAnJykgLicgJy4NCiAgICAgICAgICAgICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JlaW1wb3J0JywgJHJldHVybmlkLA0KICAgICAgICAgICAgICAgICR0aGlzLT5MYW5nKCdyZWltcG9ydHRlbXBsYXRlcycpLCBhcnJheSgpLCAnJywgZmFsc2UsIGZhbHNlLCAnY2xhc3M9InBhZ2VvcHRpb25zIicpICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICk7DQoNCiAgICAgICAgI0Rpc3BsYXkgdGVtcGxhdGUNCiAgICAgICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCd0ZW1wbGF0ZWxpc3QudHBsJyk7DQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/action.deletetempl.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgZXhpdDsKaWYgKCEgJHRoaXMtPkNoZWNrQWNjZXNzKCkpIGV4aXQ7CgoJCWlmICghIGVtcHR5KCRwYXJhbXNbJ3RlbXBsYXRlX2lkJ10pKQoJCQl7CgkJCSRxdWVyeSA9ICdERUxFVEUgRlJPTSAnLiBjbXNfZGJfcHJlZml4KCkuCgkJCQknbW9kdWxlX2NhdGFsb2dfdGVtcGxhdGUgV0hFUkUgaWQ9Pyc7CgkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHBhcmFtc1sndGVtcGxhdGVfaWQnXSkpOwoJCQl9CgkJJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCdnbG9zc2FyeV8nLiRwYXJhbXNbJ3RlbXBsYXRlX2lkJ10pOwoKCQkkcGFyYW1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygndGVtcGxhdGVkZWxldGVkJyk7CgkJJHRoaXMtPkRvQWN0aW9uKCdkZWZhdWx0YWRtaW4nLCAkaWQsICRwYXJhbXMpOwoKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.edittempl.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQppZiAoISAkdGhpcy0+Q2hlY2tBY2Nlc3MoKSkgZXhpdDsNCg0KJHRoaXMtPmluaXRBZG1pbk5hdigkaWQsICRwYXJhbXMsICRyZXR1cm5pZCk7DQoNCiRwYXJhbXNbJ21lc3NhZ2UnXT0nJzsNCmlmIChpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgfHwgaXNzZXQoJHBhcmFtc1snYXBwbHknXSkpDQp7DQoJaWYgKCEgZW1wdHkoJHBhcmFtc1sndGVtcGxhdGVfaWQnXSkpDQoJew0KCQkvLyB1cGRhdGluZyBhIHRlbXBsYXRlDQoJCSRxdWVyeSA9ICdVUERBVEUgJw0KICAgICAgICAgICAgICAuIGNtc19kYl9wcmVmaXgoKQ0KICAgICAgICAgICAgICAuICdtb2R1bGVfY2F0YWxvZ190ZW1wbGF0ZSBzZXQgdGl0bGU9PywgdGVtcGxhdGU9PywgdHlwZV9pZD0/IFdIRVJFIGlkPT8nOw0KICAgICAgICAgICAgICANCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ3RpdGxlJ10sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ3RlbXBsJ10sDQoJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ3R5cGVfaWQnXSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ3RlbXBsYXRlX2lkJ10NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCQkkdGVtcGxhdGVfaWQgPSAkcGFyYW1zWyd0ZW1wbGF0ZV9pZCddOw0KCX0NCgllbHNlDQoJew0KCQkvLyBjcmVhdGluZyBhIHRlbXBsYXRlDQoJCSRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnDQogICAgICAgICAgICAgIC4gY21zX2RiX3ByZWZpeCgpDQogICAgICAgICAgICAgIC4gJ21vZHVsZV9jYXRhbG9nX3RlbXBsYXRlIChpZCwgdGl0bGUsIHR5cGVfaWQsIHRlbXBsYXRlKSBWQUxVRVMgKD8sPyw/LD8pJzsNCiAgICAgICAgICAgICAgDQoJCSR0ZW1wbGF0ZV9pZCA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9jYXRhbG9nX3RlbXBsYXRlX3NlcScpOw0KICAgIA0KCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcXVlcnksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRlbXBsYXRlX2lkLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1zWyd0aXRsZSddLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1zWyd0eXBlX2lkJ10sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ3RlbXBsJ10NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KCX0NCg0KCS8vIGZvcmNlIGEgY2FjaGUgY2xlYXI/DQoJJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCdjYXRhbG9nXycuJHRlbXBsYXRlX2lkKTsNCgkvLyBhbmQgcmVjcmVhdGUNCgkkdGhpcy0+U2V0VGVtcGxhdGUoJ2NhdGFsb2dfJy4kdGVtcGxhdGVfaWQsJHBhcmFtc1sndGVtcGwnXSk7DQoNCgkkcGFyYW1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygndGVtcGxhdGV1cGRhdGVkJyk7DQoJDQoJaWYgKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSkNCgl7DQoJCSR0aGlzLT5Eb0FjdGlvbignZGVmYXVsdGFkbWluJywgJGlkLCAkcGFyYW1zKTsNCgkJcmV0dXJuOw0KCX0NCn0NCg0KDQokdHlwZWlkcyA9IGFycmF5KCk7DQokcXVlcnkgPSAnU0VMRUNUIHR5cGVfaWQsIG5hbWUgRlJPTSAnIA0KICAgICAgICAgLiBjbXNfZGJfcHJlZml4KCkNCiAgICAgICAgIC4gJ21vZHVsZV9jYXRhbG9nX3RlbXBsYXRlX3R5cGUnOw0KICAgICAgICAgDQokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsNCg0Kd2hpbGUgKCRkYnJlc3VsdCAhPT0gZmFsc2UgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkNCnsNCiAgJHR5cGVpZHNbJHJvd1snbmFtZSddXSA9ICRyb3dbJ3R5cGVfaWQnXTsNCn0NCg0KaWYgKGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlX2lkJ10pKQ0Kew0KCS8vIGVkaXRpbmcgYSB0ZW1wbGF0ZQ0KCSRxdWVyeSA9ICdTRUxFQ1QgdGl0bGUsIHRlbXBsYXRlLCB0eXBlX2lkIEZST00gJw0KICAgICAgICAgICAgLiBjbXNfZGJfcHJlZml4KCkNCiAgICAgICAgICAgIC4gJ21vZHVsZV9jYXRhbG9nX3RlbXBsYXRlIFdIRVJFIGlkPT8nOw0KICAgICAgICAgICAgDQoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcXVlcnksIGFycmF5KCAkcGFyYW1zWyd0ZW1wbGF0ZV9pZCddKSApOw0KICANCgkkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOw0KCSR0ZW1wbGF0ZWlkID0gJHBhcmFtc1sndGVtcGxhdGVfaWQnXTsNCgkkdGl0bGU9JHJvd1sndGl0bGUnXTsNCgkkdGVtcGxhdGU9JHJvd1sndGVtcGxhdGUnXTsNCgkkdHlwZV9pZD0kcm93Wyd0eXBlX2lkJ107DQoJJHNtYXJ0eS0+YXNzaWduKCdvcCcsICR0aGlzLT5MYW5nKCdlZGl0dGVtcGxhdGUnKSk7DQp9DQplbHNlDQp7DQoJLy8gYWRkaW5nIGEgdGVtcGxhdGUNCgkkdGVtcGxhdGVpZCA9ICcnOw0KCSR0aXRsZSA9ICcnOw0KCSR0ZW1wbGF0ZSA9ICcnOw0KCSRzbWFydHktPmFzc2lnbiggJ29wJywgJHRoaXMtPkxhbmcoJ2FkZHRlbXBsYXRlJykgKTsNCn0NCg0KJHF1ZXJ5ID0gIlNFTEVDVCBhdHRyaWJ1dGUsIGFsaWFzLCB0eXBlX2lkIEZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfY2F0YWxvZ19hdHRyIjsNCiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KICAgICAgICANCiRhdHRyc190aXRsZSA9ICc8aDM+JyAuICR0aGlzLT5MYW5nKCd0aXRsZV9pdGVtX3RlbXBsYXRlX3ZhcnMnKSAuICc8L2gzPic7DQokYXR0cnNfYXJyYXkgPSBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgICAneyR0aXRsZX0nLA0KICAgICAgICAgICAgICAgICAgICAgICd7JG1haW5fY29udGVudH0nDQogICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgIA0KJGNhdHRyc190aXRsZSA9ICc8aDM+JyAuICR0aGlzLT5MYW5nKCd0aXRsZV9jYXRfdGVtcGxhdGVfdmFycycpIC4gJzwvaDM+JzsNCiRjYXR0cnNfYXJyYXkgPSBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgICAgICd7JHRpdGxlfScsDQogICAgICAgICAgICAgICAgICAgICAgICAneyRtYWluX2NvbnRlbnR9JywNCiAgICAgICAgICAgICAgICAgICAgICAgICd7JHByZXZ9JywNCiAgICAgICAgICAgICAgICAgICAgICAgICd7JHByZXZ1cmx9JywNCiAgICAgICAgICAgICAgICAgICAgICAgICd7JG5hdnN0cn0nLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ3skbmV4dH0nLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ3skbmV4dHVybH0nLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ3skaXRlbXN9Jw0KICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgIA0KDQokcGNhdHRyc190aXRsZSA9ICc8aDM+JyAuICR0aGlzLT5MYW5nKCd0aXRsZV9jYXRhbG9nX3RlbXBsYXRlX3ZhcnMnKSAuICc8L2gzPic7DQokcGNhdHRyc19hcnJheSA9IGFycmF5KA0KICAgICAgICAgICAgICAgICAgICAgICAgJ3skaXRlbXN9JywNCiAgICAgICAgICAgICAgICAgICAgICAgICd7JG1haW5fY29udGVudH0nLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ3skYXR0cmxpc3R9JywNCiAgICAgICAgICAgICAgICAgICAgICAgICd7JHJvb3RfdXJsfScsDQogICAgICAgICAgICAgICAgICAgICAgICAneyRpbWFnZV9yb290fScNCiAgICAgICAgICAgICAgICAgICAgICApOyAgICAgICAgDQoNCiRjb21wYXR0cnNfdGl0bGUgPSAnPGgzPicgLiAkdGhpcy0+TGFuZygndGl0bGVfY29tcGFyZV90ZW1wbGF0ZV92YXJzJykgLiAnPC9oMz4nOw0KJGNvbXBhdHRyc19hcnJheSA9IGFycmF5KA0KICAgICAgICAgICAgICAgICAgICAgICAgICAneyRpdGVtc30nLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAneyRtYWluX2NvbnRlbnR9JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3skYXR0cmxpc3R9JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3skcm9vdF91cmx9JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3skaW1hZ2Vfcm9vdH0nDQogICAgICAgICAgICAgICAgICAgICAgICApOyANCg0KJGZlYXR0cnNfdGl0bGUgPSAnPGgzPicgLiAkdGhpcy0+TGFuZygndGl0bGVfZmVhdHVyZV90ZW1wbGF0ZV92YXJzJykgLiAnPC9oMz4nOw0KJGZlYXR0cnNfYXJyYXkgPSBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgICAgICd7JGl0ZW1zfScsDQogICAgICAgICAgICAgICAgICAgICAgICAneyRtYWluX2NvbnRlbnR9JywNCiAgICAgICAgICAgICAgICAgICAgICAgICd7JGF0dHJsaXN0fScsDQogICAgICAgICAgICAgICAgICAgICAgICAneyRyb290X3VybH0nLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ3skaW1hZ2Vfcm9vdH0nDQogICAgICAgICAgICAgICAgICAgICAgKTsNCg0Kd2hpbGUgKCRkYnJlc3VsdCAhPT0gZmFsc2UgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkNCnsNCiAgJHNhZmVhdHRyID0gc3RydG9sb3dlcihwcmVnX3JlcGxhY2UoJy9cVy8nLCcnLCRyb3dbJ2F0dHJpYnV0ZSddKSk7DQogIA0KICBpZiAoJHJvd1sndHlwZV9pZCddID09IENURU1QTEFURV9JVEVNKQ0KICB7DQogICAgJGF0dHJzX2FycmF5W10gPSAneyQnIC4gJHNhZmVhdHRyIC4gJ30nOw0KDQoJCWlmICgkcm93WydhbGlhcyddICE9ICcnKQ0KCQl7DQoJCQkkYXR0cnNfYXJyYXlbXSA9ICd7JCcgLiAkcm93WydhbGlhcyddIC4gJ30nOw0KCQl9DQogIH0NCiAgZWxzZSBpZiAoJHJvd1sndHlwZV9pZCddID09IENURU1QTEFURV9DQVRFR09SWSkNCiAgew0KCQkkY2F0dHJzX2FycmF5W10gPSAneyQnIC4gJHNhZmVhdHRyIC4gJ30nOw0KCQkNCiAgICBpZiAoJHJvd1snYWxpYXMnXSAhPSAnJykNCgkJew0KCQkJJGNhdHRyc19hcnJheVtdID0gJ3skJyAuICRyb3dbJ2FsaWFzJ10gLiAnfSc7DQoJCX0NCgl9DQogIGVsc2UgaWYgKCRyb3dbJ3R5cGVfaWQnXSA9PSBDVEVNUExBVEVfQ0FUQUxPRykNCiAgew0KCQkkcGNhdHRyc19hcnJheVtdID0gJ3skJyAuICRzYWZlYXR0ciAuICd9JzsNCgkJaWYgKCRyb3dbJ2FsaWFzJ10gIT0gJycpDQoJCXsNCgkJCSRwY2F0dHJzX2FycmF5W10gPSAneyQnIC4gJHJvd1snYWxpYXMnXSAuICd9JzsNCgkJfQ0KCX0NCn0NCiAgICAgICAgICANCiRpbWFnZV9jb3VudCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2ltYWdlX2NvdW50JywgJzEnKTsNCg0KZm9yICgkaT0xOyRpPD0kaW1hZ2VfY291bnQ7JGkrKykNCnsNCiAgJGF0dHJzX2FycmF5W10gPSAneyRpbWFnZV8nIC4gJGkgLiAnX3VybH0nOw0KICAkYXR0cnNfYXJyYXlbXSA9ICd7JGltYWdlX3RodW1iXycgLiAkaSAuICdfdXJsfSc7DQp9DQoNCiRhdHRyc19hcnJheVtdID0gJ3skaW1hZ2VfdXJsX2FycmF5fSc7DQokYXR0cnNfYXJyYXlbXSA9ICd7JHNyY19pbWFnZV91cmxfYXJyYXl9JzsNCiRhdHRyc19hcnJheVtdID0gJ3skaW1hZ2VfdGh1bWJfdXJsX2FycmF5fSc7DQoNCiRmaWxlX2NvdW50ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2l0ZW1fZmlsZV9jb3VudCcsIDApOw0KDQpmb3IgKCRpPTE7ICRpIDw9ICRmaWxlX2NvdW50OyAkaSsrKQ0Kew0KICAkYXR0cnNfYXJyYXlbXSA9ICd7JGZpbGVfY291bnR9LCB7JGZpbGVfJy4kaS4nX25hbWV9LCB7JGZpbGVfJy4kaS4nX3VybH0sIHskZmlsZV8nLiRpOw0KICAkYXR0cnNfYXJyYXlbXSA9ICdfZXh0fSwgJzsNCn0NCiAgICANCiRhdHRyc19hcnJheVtdID0gJ3skZmlsZV91cmxfYXJyYXl9JzsNCiRhdHRyc19hcnJheVtdID0gJ3skZmlsZV9uYW1lX2FycmF5fSc7DQokYXR0cnNfYXJyYXlbXSA9ICd7JGZpbGVfZXh0X2FycmF5fSc7DQokYXR0cnNfYXJyYXlbXSA9ICd7JHJvb3RfdXJsfSc7DQokYXR0cnNfYXJyYXlbXSA9ICd7JGltYWdlX3Jvb3R9JzsNCg0KJGF0dHJzID0gJGF0dHJzX3RpdGxlIC4gJzxwPjxzdHJvbmc+JyAuIGltcGxvZGUoJywgJywgJGF0dHJzX2FycmF5KS4gJzwvc3Ryb25nPjwvcD4nOw0KDQokaW1hZ2VfY291bnQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY2F0ZWdvcnlfaW1hZ2VfY291bnQnLCAnMScpOw0KDQpmb3IgKCRpPTE7JGk8PSRpbWFnZV9jb3VudDskaSsrKQ0Kew0KICAkY2F0dHJzX2FycmF5W10gPSAneyRpbWFnZV8nIC4gJGkgLiAnX3VybH0nOw0KICAkY2F0dHJzX2FycmF5W10gPSAneyRpbWFnZV90aHVtYl8nIC4gJGkgLiAnX3VybH0nOw0KICAkY2F0dHJzX2FycmF5W10gPSAneyRzcmNfaW1hZ2VfJyAuICRpIC4gJ191cmx9JzsNCn0NCg0KJGNhdHRyc19hcnJheVtdID0gJ3skaW1hZ2VfdXJsX2FycmF5fSwgJzsNCiRjYXR0cnNfYXJyYXlbXSA9ICd7JHNyY19pbWFnZV91cmxfYXJyYXl9LCAnOw0KJGNhdHRyc19hcnJheVtdID0gJ3skaW1hZ2VfdGh1bWJfdXJsX2FycmF5fSc7DQokY2F0dHJzX2FycmF5W10gPSAneyRyb290X3VybH0nOw0KJGNhdHRyc19hcnJheVtdID0gJ3skaW1hZ2Vfcm9vdH0nOw0KDQokY2F0dHJzID0gJGNhdHRyc190aXRsZSAuICc8cD48c3Ryb25nPicgLiBpbXBsb2RlKCcsICcsICRjYXR0cnNfYXJyYXkpLiAnPC9zdHJvbmc+PC9wPic7DQoNCiRjYXR0cnNfaXRfdGl0bGUgPSAnPGgzPiRpdGVtcyBhcnJheSBjb250ZW50czo8L2gzPic7DQokY2F0dHJzX2l0X2FycmF5ID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICAgICAgICckaXRlbXNbXS50aXRsZScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICckaXRlbXNbXS5saW5rJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyRpdGVtc1tdLmltYWdlJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyRpdGVtc1tdLmNhdCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICckaXRlbXNbXS48aT5hdHRyaWJ1dGVfbmFtZTwvaT4nLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAnJGl0ZW1zW10uPGk+YXR0cmlidXRlX2FsaWFzPC9pPicNCiAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgICAgICANCiRjYXR0cnMgLj0gJGNhdHRyc19pdF90aXRsZSAuICc8cD48c3Ryb25nPicgLiBpbXBsb2RlKCcsICcsICRjYXR0cnNfaXRfYXJyYXkpIC4gJzwvc3Ryb25nPjwvcD4nOw0KDQokcGNhdHRycyA9ICRwY2F0dHJzX3RpdGxlIC4gJzxwPjxzdHJvbmc+JyAuIGltcGxvZGUoJywgJywgJHBjYXR0cnNfYXJyYXkpLiAnPC9zdHJvbmc+PC9wPic7DQoNCiRwY2F0dHJzIC49ICc8aDM+JGl0ZW1zIGFycmF5IGNvbnRlbnRzOjwvaDM+JzsNCiRwY2F0dHJzIC49ICckaXRlbXNbXS50aXRsZSwgJGl0ZW1zW10ubGluaywgJGl0ZW1zW10uaW1hZ2UsICRpdGVtc1tdLmNhdCwgJGl0ZW1zW10uPGk+YXR0cmlidXRlX25hbWU8L2k+LCAkaXRlbXNbXS48aT5hdHRyaWJ1dGVfYWxpYXM8L2k+JzsNCiRwY2F0dHJzIC49ICc8aDM+JGF0dHJsaXN0IGFycmF5IGNvbnRlbnRzOjwvaDM+JzsNCiRwY2F0dHJzIC49ICckYXR0cmxpc3RbXS0+YXR0ciwgJGF0dHJsaXN0W10tPnNhZmUnOw0KDQokY29tcGF0dHJzID0gJGNvbXBhdHRyc190aXRsZSAuICc8cD48c3Ryb25nPicgLiBpbXBsb2RlKCcsICcsICRjb21wYXR0cnNfYXJyYXkpLiAnPC9zdHJvbmc+PC9wPic7DQokY29tcGF0dHJzIC49ICc8aDM+JGl0ZW1zIGFycmF5IGNvbnRlbnRzOjwvaDM+JzsNCiRjb21wYXR0cnMgLj0gJyRpdGVtc1tdLnRpdGxlLCAkaXRlbXNbXS5saW5rLCAkaXRlbXNbXS5pbWFnZSwgJGl0ZW1zW10uPGk+YXR0cmlidXRlX25hbWU8L2k+LCAkaXRlbXNbXS48aT5hdHRyaWJ1dGVfYWxpYXM8L2k+JzsNCiRjb21wYXR0cnMgLj0gJzxoMz4kYXR0cmxpc3QgYXJyYXkgY29udGVudHM6PC9oMz4nOw0KJGNvbXBhdHRycyAuPSAnJGF0dHJsaXN0W10tPmF0dHIsICRhdHRybGlzdFtdLT5zYWZlJzsNCg0KJGZlYXR0cnMgPSAkZmVhdHRyc190aXRsZSAuICc8cD48c3Ryb25nPicgLiBpbXBsb2RlKCcsICcsICRmZWF0dHJzX2FycmF5KS4gJzwvc3Ryb25nPjwvcD4nOw0KJGZlYXR0cnMgLj0gJzxoMz4kaXRlbXMgYXJyYXkgY29udGVudHM6PC9oMz4nOw0KJGZlYXR0cnMgLj0gJyRpdGVtc1tdLnRpdGxlLCAkaXRlbXNbXS5saW5rLCAkaXRlbXNbXS5pbWFnZSwgJGl0ZW1zW10uY2F0LCAkaXRlbXNbXS48aT5hdHRyaWJ1dGVfbmFtZTwvaT4sICRpdGVtc1tdLjxpPmF0dHJpYnV0ZV9hbGlhczwvaT4nOw0KDQogICAgDQokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnZWRpdHRlbXBsJywgJHJldHVybmlkKSk7DQokc21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsNCiRzbWFydHktPmFzc2lnbignaGlkZGVuJywkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAndGVtcGxhdGVfaWQnLCAkdGVtcGxhdGVpZCkpOw0KJHNtYXJ0eS0+YXNzaWduKCd0aXRsZV90aXRsZScsJHRoaXMtPkxhbmcoJ3RpdGxlX3RpdGxlJykpOw0KJHNtYXJ0eS0+YXNzaWduKCd0aXRsZV90ZW1wbGF0ZScsJHRoaXMtPkxhbmcoJ3RpdGxlX3RlbXBsYXRlJykpOw0KJHNtYXJ0eS0+YXNzaWduKCd0aXRsZV90ZW1wbGF0ZV90eXBlJywkdGhpcy0+TGFuZygndGl0bGVfdGVtcGxhdGVfdHlwZScpKTsNCiRzbWFydHktPmFzc2lnbigndGl0bGVfYXZhaWxfYXR0cnMnLCR0aGlzLT5MYW5nKCd0aXRsZV9hdmFpbF9hdHRycycpKTsNCg0KaWYgKGlzc2V0KCR0eXBlX2lkKSkNCnsNCiAgaWYgKCR0eXBlX2lkID09IENURU1QTEFURV9JVEVNKQ0KCXsNCgkgICRzbWFydHktPmFzc2lnbignYXZhaWxfYXR0cnMnLCRhdHRycyk7DQoJfQ0KICBlbHNlIGlmICgkdHlwZV9pZCA9PSBDVEVNUExBVEVfQ0FURUdPUlkpDQoJew0KCSAgJHNtYXJ0eS0+YXNzaWduKCdhdmFpbF9hdHRycycsJGNhdHRycyk7CQkNCgl9DQogIGVsc2UgaWYgKCR0eXBlX2lkID09IENURU1QTEFURV9DQVRBTE9HKQ0KCXsNCgkgICRzbWFydHktPmFzc2lnbignYXZhaWxfYXR0cnMnLCRwY2F0dHJzKTsJCQ0KCX0NCiAgZWxzZSBpZiAoJHR5cGVfaWQgPT0gQ1RFTVBMQVRFX0NPTVBBUklTT04pDQoJew0KCSAgJHNtYXJ0eS0+YXNzaWduKCdhdmFpbF9hdHRycycsJGNvbXBhdHRycyk7CQkNCgl9DQogIGVsc2UgaWYgKCR0eXBlX2lkID09IENURU1QTEFURV9GRUFUVVJFKQ0KCXsNCgkgICRzbWFydHktPmFzc2lnbignYXZhaWxfYXR0cnMnLCRmZWF0dHJzKTsJCQ0KCX0NCn0NCmVsc2UNCnsNCiAgJHNtYXJ0eS0+YXNzaWduKCdhdmFpbF9hdHRycycsICRhdHRycyAuICcsICcgLiAkY2F0dHJzLicsICcgLiAkZmVhdHRycyk7DQp9DQoNCi8vJHNtYXJ0eS0+YXNzaWduKCd0aXRsZV9hdmFpbF9pbWF0dHJzJywkdGhpcy0+TGFuZygndGl0bGVfYXZhaWxfaW1hdHRycycpKTsJCQ0KLy8kc21hcnR5LT5hc3NpZ24oJ2F2YWlsX2ltYXR0cnMnLCRpbWF0dHJzKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfdGVtcGxhdGVfdHlwZScsJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAndHlwZV9pZCcsICR0eXBlaWRzLCAtMSwgaXNzZXQoJHR5cGVfaWQpPyR0eXBlX2lkOicnKSk7DQoNCiRzbWFydHktPmFzc2lnbignbWVzc2FnZScsJHBhcmFtc1snbWVzc2FnZSddKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfdGl0bGUnLCR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAndGl0bGUnLCAkdGl0bGUsIDIwLCAyNTUpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfdGVtcGxhdGUnLCR0aGlzLT5DcmVhdGVUZXh0QXJlYShmYWxzZSwgJGlkLCAkdGVtcGxhdGUsICd0ZW1wbCcpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgbGFuZygnc3VibWl0JykpKTsNCiRzbWFydHktPmFzc2lnbignYXBwbHknLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnYXBwbHknLCBsYW5nKCdhcHBseScpKSk7DQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2VkaXR0ZW1wbGF0ZS50cGwnKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.globalops.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgZXhpdDsKaWYgKCEgJHRoaXMtPkNoZWNrQWNjZXNzKCkpIGV4aXQ7CgoJCSR0aGlzLT5pbml0QWRtaW5OYXYoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQpOwoKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnZ2xvYmFsc3VibWl0JywgJHJldHVybmlkKSk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgJ1VwZGF0ZSBFbnRpcmUgQ2F0YWxvZycpKTsKCiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlJywkdGhpcy0+TGFuZygndGl0bGVfZ2xvYmFsX2NhdGVnb3J5X3JlY3Vyc2UnKSk7CgoJCSR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfY2F0ZWdvcnlfcmVjdXJzZScsCgkJCSc8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IicuJGlkLidjYXRlZ29yeV9yZWN1cnNlIiB2YWx1ZT0ibm9jaGFuZ2UiIGNoZWNrZWQ9ImNoZWNrZWQiIC8+Jy4kdGhpcy0+TGFuZygnbm9nbG9iYWxjaGFuZ2UnKS4nPGJyIC8+JyAuCgkJCSc8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IicuJGlkLidjYXRlZ29yeV9yZWN1cnNlIiB2YWx1ZT0iaXRlbXNfYWxsIiAvPicuCgkJCQkkdGhpcy0+TGFuZygndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9pdGVtc19hbGwnKS4nPGJyIC8+Jy4KCQkJJzxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iJy4kaWQuJ2NhdGVnb3J5X3JlY3Vyc2UiIHZhbHVlPSJpdGVtc19vbmUiIC8+Jy4KCQkJCSR0aGlzLT5MYW5nKCd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2l0ZW1zX29uZScpLic8YnIgLz4nLgoJCQknPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSInLiRpZC4nY2F0ZWdvcnlfcmVjdXJzZSIgdmFsdWU9ImNhdGVnb3JpZXNfYWxsIiAvPicuCgkJCQkkdGhpcy0+TGFuZygndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9jYXRlZ29yaWVzX2FsbCcpLic8YnIgLz4nLgoJCQknPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSInLiRpZC4nY2F0ZWdvcnlfcmVjdXJzZSIgdmFsdWU9ImNhdGVnb3JpZXNfb25lIiAvPicuCgkJCQkkdGhpcy0+TGFuZygndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9jYXRlZ29yaWVzX29uZScpLic8YnIgLz4nLgoJCQknPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSInLiRpZC4nY2F0ZWdvcnlfcmVjdXJzZSIgdmFsdWU9Im1peGVkX2FsbCIgLz4nLgoJCQkJJHRoaXMtPkxhbmcoJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfbWl4ZWRfYWxsJykuJzxiciAvPicuCgkJCSc8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IicuJGlkLidjYXRlZ29yeV9yZWN1cnNlIiB2YWx1ZT0ibWl4ZWRfb25lIiAvPicuCgkJCQkkdGhpcy0+TGFuZygndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9taXhlZF9vbmUnKSk7CiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV9pdGVtc19wZXJfcGFnZScsJHRoaXMtPkxhbmcoJ3RpdGxlX2dsb2JhbF9pdGVtc19wZXJfcGFnZScpKTsKICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X2l0ZW1zX3Blcl9wYWdlJywkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsCiAgICAgICAgIAkJJ2l0ZW1zX3Blcl9wYWdlJywKICAgICAgICAgICAgICAgIGFycmF5KCR0aGlzLT5MYW5nKCdub2dsb2JhbGNoYW5nZScpPT4nLTEnLAogICAgICAgICAgICAgICAgCScxJz0+JzEnLCcyJz0+JzInLCczJz0+JzMnLCc0Jz0+JzQnLCc1Jz0+JzUnLCc2Jz0+JzYnLAogICAgICAgICAgICAgICAgCSc3Jz0+JzcnLCc4Jz0+JzgnLCc5Jz0+JzknLCcxMCc9PicxMCcsJzExJz0+JzExJywKICAgICAgICAgICAgICAgIAknMTInPT4nMTInLCAnMTMnPT4nMTMnLCcxNCc9PicxNCcsJzE1Jz0+JzE1JywnMTYnPT4nMTYnLAogICAgICAgICAgICAgICAgCScxNyc9PicxNycsJzE4Jz0+JzE4JywnMTknPT4nMTknLCcyMCc9PicyMCcsJzI0Jz0+JzI0JywKICAgICAgICAgICAgICAgIAknMjUnPT4nMjUnLCczMCc9PiczMCcsJzQwJz0+JzQwJywKICAgICAgICAgICAgICAgIAknNTAnPT4nNTAnLCAnMTAwMCc9PicxMDAwJyksIC0xLCAnLTEnKSk7CiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV9pdGVtX3NvcnRfb3JkZXInLCR0aGlzLT5MYW5nKCd0aXRsZV9nbG9iYWxfaXRlbV9zb3J0X29yZGVyJykpOwoJCSR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfaXRlbV9zb3J0X29yZGVyJywkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsCgkJIAknaXRlbV9zb3J0X29yZGVyJyxhcnJheSgkdGhpcy0+TGFuZygnbm9nbG9iYWxjaGFuZ2UnKT0+J25vY2hhbmdlJywKCQkgCSR0aGlzLT5MYW5nKCduYXR1cmFsX29yZGVyJyk9PiduYXR1cmFsJywKCQkgCSR0aGlzLT5MYW5nKCdhbHBoYV9vcmRlcicpPT4nYWxwaGEnKSwgLTEsICdub2NoYW5nZScpKTsKCiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtZXNzYWdlJywgaXNzZXQoJHBhcmFtc1snbWVzc2FnZSddKT8kcGFyYW1zWydtZXNzYWdlJ106JycpOwoKICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NhdGVnb3J5JywgJHRoaXMtPkxhbmcoJ2dsb2JhbG9wcycpKTsKCiAgICAgICAgI0Rpc3BsYXkgdGVtcGxhdGUKICAgICAgICBlY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluZ2xvYmFsb3BzLnRwbCcpOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.globalsubmit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgZXhpdDsKaWYgKCEgJHRoaXMtPkNoZWNrQWNjZXNzKCkpIGV4aXQ7CgogICAgICAgIC8qKgogICAgICAgICogVGhpcyBJUyBvbmUgb2YgdGhlIGFjdGlvbnMgdG8gY2hhbmdlIChKTSkKICAgICAgICAqLwogICAgICAgIAogICAgICAgICRjb250ZW50b3BzID0gY21zbXMoKS0+R2V0Q29udGVudE9wZXJhdGlvbnMoKTsKCQlpZiAoaXNzZXQoJHBhcmFtc1snaXRlbV9zb3J0X29yZGVyJ10pICYmCgkJCSRwYXJhbXNbJ2l0ZW1fc29ydF9vcmRlciddICE9ICdub2NoYW5nZScpCgkJCXsKCQkJLy8gdXBkYXRlIGFsbCBpdGVtIHNvcnQgb3JkZXIKCiAgICAgICAgICAgIC8vIG5ldyBsZWdhbCBjb2RlLiAoSk0pCiAgICAgICAgICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCBjLmNvbnRlbnRfaWQgZnJvbSAiIC4gCiAgICAgICAgICAgICAgICAgICAgICAgIGNtc19kYl9wcmVmaXgoKSAuICJjb250ZW50IGMsICIgLgogICAgICAgICAgICAgICAgICAgICAgICBjbXNfZGJfcHJlZml4KCkgLiAiY29udGVudF9wcm9wcyBwICIgLgogICAgICAgICAgICAgICAgICAgICAgICAid2hlcmUgYy50eXBlPSdjYXRhbG9nY2F0ZWdvcnknIGFuZCBjcC5wcm9wX25hbWU9J3NvcnRfb3JkZXInIGFuZCBjLmNvbnRlbnRfaWQ9cC5jb250ZW50X2lkIjsKCiAgICAgICAgICAgICAgICAkdG1wID0gJGRiLT5HZXRDb2woJHF1ZXJ5KTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGZvcmVhY2goICR0bXAgYXMgJG9uZSApIAogICAgICAgICAgICAgICAgeyAgCiAgICAgICAgICAgICAgICAgICAgJG9iaiA9ICRjb250ZW50b3BzLT5Mb2FkQ29udGVudEZyb21JZCgkb25lLFRSVUUpOwogICAgICAgICAgICAgICAgICAgICRvYmotPlNldFByb3BlcnR5VmFsdWUoJ3NvcnRfb3JkZXInLCRwYXJhbXNbJ2l0ZW1fc29ydF9vcmRlciddKTsKICAgICAgICAgICAgICAgICAgICAkb2JqLT5zYXZlKCk7IAogICAgICAgICAgICAgICAgfQoJCQl9CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2NhdGVnb3J5X3JlY3Vyc2UnXSkgJiYKCQkJJHBhcmFtc1snY2F0ZWdvcnlfcmVjdXJzZSddICE9ICdub2NoYW5nZScpCgkJCXsKCQkJLy8gdXBkYXRlIGRpc3BsYXkgcnVsZXMKICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBuZXcgbGVnYWwgY29kZS4gKEpNKQogICAgICAgICAgICAgCiAgICAgICAgICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCBjLmNvbnRlbnRfaWQgZnJvbSAiIC4gCiAgICAgICAgICAgICAgICAgICAgICAgIGNtc19kYl9wcmVmaXgoKSAuICJjb250ZW50IGMsICIgLgogICAgICAgICAgICAgICAgICAgICAgICBjbXNfZGJfcHJlZml4KCkgLiAiY29udGVudF9wcm9wcyBwICIgLgogICAgICAgICAgICAgICAgICAgICAgICAid2hlcmUgYy50eXBlPSdjYXRhbG9nY2F0ZWdvcnknIGFuZCBwLnByb3BfbmFtZT0ncmVjdXJzZScgYW5kIGMuY29udGVudF9pZD1wLmNvbnRlbnRfaWQiOwoKICAgICAgICAgICAgICAgICR0bXAgPSAkZGItPkdldENvbCgkcXVlcnkpOwogICAgICAgICAgICAgICAgZm9yZWFjaCggJHRtcCBhcyAkb25lICkgCiAgICAgICAgICAgICAgICB7ICAKICAgICAgICAgICAgICAgICAgICAkb2JqID0gJGNvbnRlbnRvcHMtPkxvYWRDb250ZW50RnJvbUlkKCRvbmUsVFJVRSk7CiAgICAgICAgICAgICAgICAgICAgJG9iai0+U2V0UHJvcGVydHlWYWx1ZSgnc29ydF9vcmRlcicsJHBhcmFtc1snY2F0ZWdvcnlfcmVjdXJzZSddKTsKICAgICAgICAgICAgICAgICAgICAkb2JqLT5zYXZlKCk7IAogICAgICAgICAgICAgICAgfQoJCQl9CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2l0ZW1zX3Blcl9wYWdlJ10pICYmCgkJCSRwYXJhbXNbJ2l0ZW1zX3Blcl9wYWdlJ10gIT0gLTEpCgkJCXsKCQkJLy8gdXBkYXRlIGRpc3BsYXkgcnVsZXMKICAgICAgICAgICAgCgogICAgICAgICAgICAkcXVlcnkgPSAiU0VMRUNUIGMuY29udGVudF9pZCBmcm9tICIgLiAKICAgICAgICAgICAgICAgICAgICBjbXNfZGJfcHJlZml4KCkgLiAiY29udGVudCBjLCAiIC4KICAgICAgICAgICAgICAgICAgICBjbXNfZGJfcHJlZml4KCkgLiAiY29udGVudF9wcm9wcyBwICIgLgogICAgICAgICAgICAgICAgICAgICJ3aGVyZSBjLnR5cGU9J2NhdGFsb2djYXRlZ29yeScgYW5kIGNwLnByb3BfbmFtZT0naXRlbXNfcGVyX3BhZ2UnIGFuZCBjLmNvbnRlbnRfaWQ9cC5jb250ZW50X2lkIjsgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICR0bXAgPSAkZGItPkdldENvbCgkcXVlcnkpOwogICAgICAgICAgICAgICAgZm9yZWFjaCggJHRtcCBhcyAkb25lICkgCiAgICAgICAgICAgICAgICB7ICAKICAgICAgICAgICAgICAgICAgICAkb2JqID0gJGNvbnRlbnRvcHMtPkxvYWRDb250ZW50RnJvbUlkKCRvbmUsVFJVRSk7CiAgICAgICAgICAgICAgICAgICAgJG9iai0+U2V0UHJvcGVydHlWYWx1ZSgnc29ydF9vcmRlcicsJHBhcmFtc1snaXRlbXNfcGVyX3BhZ2UnXSk7CiAgICAgICAgICAgICAgICAgICAgJG9iai0+c2F2ZSgpOyAKICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkJCX0KCgoJCSRwYXJhbXNbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdnbG9iYWxseXVwZGF0ZWQnKTsKICAgICAgICAkdGhpcy0+RG9BY3Rpb24oJ2dsb2JhbG9wcycsICRpZCwgJHBhcmFtcyk7Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.image.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgZXhpdDsKJGhhbmRsZXJzID0gb2JfbGlzdF9oYW5kbGVycygpOwpmb3IgKCRjbnQgPSAwOyAkY250IDwgc2l6ZW9mKCRoYW5kbGVycyk7ICRjbnQrKykgeyBvYl9lbmRfY2xlYW4oKTsgfQoKJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwokc3BlYyA9IGlzc2V0KCRfR0VUWydpJ10pID8gJF9HRVRbJ2knXSA6ICcnOwokZGVidWcgPSBpc3NldCgkX0dFVFsnZGVidWcnXSk7CiRhbnRpY2FjaGUgPSBpc3NldCgkX0dFVFsnYWMnXSk7CiRzcGVjID0gcHJlZ19yZXBsYWNlKCcvKFwuXC58XC8pLycsICcnLCAkc3BlYyk7CiRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKCiMgbm90IGEganBnPwppZiggIXByZWdfbWF0Y2goJy9cLmpwZyQvaScsICRzcGVjKSApCnsKICAkZm4gPSBjYXRGaWxlc09wZXJhdGlvbnM6OnJldHVybk1pc3NpbmcoJGNvbmZpZ1sncm9vdF9wYXRoJ10sIGNhdEZpbGVzT3BlcmF0aW9uczo6UkVUX01JU1NJTkdfUEFUSCwgVFJVRSwgJGRlYnVnKTsKICAKICBpZiggZmlsZV9leGlzdHMoJGZuKSApCiAgewogICAgY2F0RmlsZXNPcGVyYXRpb25zOjpTZW5kRmlsZSgkZm4pOyAjIGFuZCBleGl0cyBoZXJlIQogIH0KICBlbHNlCiAgewogICAgaGVhZGVyKCRfU0VSVkVSWydTRVJWRVJfUFJPVE9DT0wnXSAuICcgNDA0IE5vdCBGb3VuZCcsIFRSVUUsIDQwNCk7CiAgICBleGl0OwogIH0KfQoKIyBnZXQgdGhlIHByb2Nlc3NlZCBpbWFnZSBwYXRoCiRmbiA9IGNtc19qb2luX3BhdGgoJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10sIGNhdEZpbGVzT3BlcmF0aW9uczo6Z2V0QXNzZXRQYXRoKCdpJyksICRzcGVjKTsKCmlmKCRkZWJ1ZykgZXJyb3JfbG9nKCdDaGVja2luZyBvbiAnIC4gJGZuKTsKCiRzaXplZCA9IEBzdGF0KCRmbik7CiRzcGVjID0gc3Vic3RyKCRzcGVjLCAwLCBzdHJycG9zKCRzcGVjLCAnLicpKTsKJHBhcnRzID0gZXhwbG9kZSgnXycsICRzcGVjKTsKJHBhcnRzID0gYXJyYXlfcmV2ZXJzZSgkcGFydHMpOwogIAokc2hvd01pc3NpbmcgPSAoJHBhcnRzWzBdID09ICcxJyk7CiRzaXplID0gJHBhcnRzWzFdOwokaW1nbm8gPSAkcGFydHNbMl07CiR0eXBlID0gJHBhcnRzWzNdOwokbmFtZSA9ICcnOwoKZm9yKCRqID0gY291bnQoJHBhcnRzKSAtIDE7ICRqID4gMzsgJGotLSkKewogICRuYW1lIC49ICRwYXJ0c1skal0gLiAnXyc7Cn0KCiMgZ2V0IHRoZSBzb3VyY2UgZmlsZQokc3JjU3BlYyA9IGNtc19qb2luX3BhdGgoCiAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0RmlsZXNPcGVyYXRpb25zOjpnZXRBc3NldFBhdGgoJ3MnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSAKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiRzcmNTcGVjIC49ICdzcmNfJyAuICRpbWdubyAuICcuanBnJzsKCmlmICgkZGVidWcpCnsKICBlcnJvcl9sb2coIkNhdGFsb2dlckltYWdlOiBzcmMgaW1hZ2UgIiAuICRzcmNTcGVjKTsKfQoKJG9yaWcgPSBAc3RhdCgkc3JjU3BlYyk7CgokbmV3SW1hZ2UgPSBmYWxzZTsKCiMgb3JpZ2luYWwgaXMgbWlzc2luZwppZighKGJvb2wpJG9yaWcpCnsKICBpZiAoJGRlYnVnKSBlcnJvcl9sb2coJ0NhblwndCBmaW5kICcgLiAkc3JjU3BlYyk7CiAgCiAgJGZuID0gY2F0RmlsZXNPcGVyYXRpb25zOjpyZXR1cm5NaXNzaW5nKCRjb25maWdbJ3Jvb3RfcGF0aCddLCAkc2hvd01pc3NpbmcpOwogIAogIGlmKCBmaWxlX2V4aXN0cygkZm4pICkKICB7CiAgICBjYXRGaWxlc09wZXJhdGlvbnM6OlNlbmRGaWxlKCRmbik7ICMgYW5kIGV4aXRzIGhlcmUhCiAgfQogIAp9CgppZighKGJvb2wpJHNpemVkIHx8ICgkc2l6ZWRbJ210aW1lJ10gPCAkb3JpZ1snbXRpbWUnXSkgKQp7CiAgaWYoJGRlYnVnKSBlcnJvcl9sb2coJ25ld2VyIHRoYW4gZXhpc3RlbnQsIHRyYW5zZm9ybWluZycpOwogIAogICRkZXN0U3BlYyA9IGNtc19qb2luX3BhdGgoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb25maWdbJ3VwbG9hZHNfcGF0aCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRGaWxlc09wZXJhdGlvbnM6OmdldEFzc2V0UGF0aCgnaScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3BlYyAuICcuanBnJyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgCiAgY2F0RmlsZXNPcGVyYXRpb25zOjppbWFnZVRyYW5zZm9ybSgkc3JjU3BlYywgJGRlc3RTcGVjLCAkc2l6ZSwgJGNvbmZpZyk7CiAgJG5ld0ltYWdlID0gdHJ1ZTsKfQoKJGZuID0gY21zX2pvaW5fcGF0aCgKICAgICAgICAgICAgICAgICAgICAgICRjb25maWdbJ3VwbG9hZHNfcGF0aCddLAogICAgICAgICAgICAgICAgICAgICAgY2F0RmlsZXNPcGVyYXRpb25zOjpnZXRBc3NldFBhdGgoJ2knKSwKICAgICAgICAgICAgICAgICAgICAgICRzcGVjIC4gJy5qcGcnIAogICAgICAgICAgICAgICAgICAgICk7CiAgCgovL2lmKCRuZXdJbWFnZSB8fCAkYW50aWNhY2hlKQp7CiAgaWYoIGZpbGVfZXhpc3RzKCRmbikgKQogIHsKICAgIGNhdEZpbGVzT3BlcmF0aW9uczo6U2VuZEZpbGUoJGZuKTsjIGFuZCBleGl0cyBoZXJlIQogIH0KfQoKaWYoIGZpbGVfZXhpc3RzKCRzcmNTcGVjKSApCnsKICBjYXRGaWxlc09wZXJhdGlvbnM6OlNlbmRGaWxlKCRzcmNTcGVjKTsjIGFuZCBleGl0cyBoZXJlIQp9Ci8vIGZpbmFsbHkgaWYgbm90aGluZyBtYXRjaGVzIGlzc3VlIGFuZCBlcnJvciBhbmQgZXhpdC4uLi4KLy9UT0RPIGV4Y2VwdGlvbi4uLgpleGl0Owo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.random.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQoNCmZvcmVhY2ggKCRwYXJhbXMgYXMgJGtleT0+JHZhbCkNCnsNCiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCRrZXksICRwYXJhbXNbJGtleV0pOw0KfQ0KDQppZiAoISBpc3NldCgkcGFyYW1zWydyZWN1cnNlJ10pKQ0Kew0KICAkcGFyYW1zWydyZWN1cnNlJ10gPSAnaXRlbXNfYWxsJzsNCn0NCg0KJHBhcmFtc1snY291bnQnXSA9IGVtcHR5KCRwYXJhbXNbJ2NvdW50J10pID8gMyA6ICRwYXJhbXNbJ2NvdW50J107DQoNCiRsaXN0ID0gJHRoaXMtPmdldENhdGFsb2dJdGVtc0lETGlzdCgkcGFyYW1zKTsNCg0KJGNvdW50ID0gbWluKGNvdW50KCRsaXN0KSwgJHBhcmFtc1snY291bnQnXSk7DQokdGhpc1VybCA9ICRfU0VSVkVSWydSRVFVRVNUX1VSSSddOw0KJHRoaXNVcmwgPSBwcmVnX3JlcGxhY2UoJy8oXD8pKihcJikqc3RhcnQ9XGQrLycsJycsJHRoaXNVcmwpOw0KDQppZiAoJGNvdW50ID09IDApDQp7DQogICR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbXMnLGFycmF5KCkpOw0KfQ0KZWxzZQ0Kew0KICAkY2F0ZWdvcnlJdGVtS2V5cyA9IGFycmF5X3JhbmQoJGxpc3QsICRjb3VudCk7DQogIA0KICBpZiAoIWlzX2FycmF5KCRjYXRlZ29yeUl0ZW1LZXlzKSkNCiAgew0KICAgICRjYXRlZ29yeUl0ZW1LZXlzID0gYXJyYXkoJGNhdGVnb3J5SXRlbUtleXMpOw0KICB9DQogIA0KICAkY2F0VG1wID0gYXJyYXkoKTsNCiAgDQogIGZvcmVhY2goJGNhdGVnb3J5SXRlbUtleXMgYXMgJHRoaXNLZXkpDQogIHsNCiAgICAkbm9kZSA9ICR0aGlzLT5nZXRDYXRhbG9nSXRlbUJ5SWQoJGxpc3RbJHRoaXNLZXldKTsNCiAgICBhcnJheV9wdXNoKCRjYXRUbXAsICRub2RlKTsNCiAgfQ0KICANCiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRjYXRUbXApOw0KfQ0KDQokdGhpcy0+c21hcnR5QmFzaWNzKCk7DQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJHRoaXMtPmdldFRlbXBsYXRlRnJvbUFsaWFzKCRwYXJhbXNbJ3N1Yl90ZW1wbGF0ZSddKSk7DQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/action.recent.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQoNCmZvcmVhY2ggKCRwYXJhbXMgYXMgJGtleT0+JHZhbCkNCnsNCiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCRrZXksICRwYXJhbXNbJGtleV0pOw0KfQ0KDQppZiAoISBpc3NldCgkcGFyYW1zWydyZWN1cnNlJ10pKQ0Kew0KICAkcGFyYW1zWydyZWN1cnNlJ10gPSAnaXRlbXNfYWxsJzsNCn0NCg0KJHBhcmFtc1snY291bnQnXSA9IGVtcHR5KCRwYXJhbXNbJ2NvdW50J10pID8gMyA6ICRwYXJhbXNbJ2NvdW50J107DQoNCmxpc3QoJGN1clBhZ2UgLCRjYXRlZ29yeUl0ZW1zKSA9ICR0aGlzLT5nZXRDYXRhbG9nSXRlbXNMaXN0KCRwYXJhbXMpOw0KDQppZiAoIWlzc2V0KCRwYXJhbXNbJ2dsb2JhbF9zb3J0J10pIHx8ICRwYXJhbXNbJ2dsb2JhbF9zb3J0J109PSdkYXRlJykNCnsNCiAgdXNvcnQoJGNhdGVnb3J5SXRlbXMsIGFycmF5KCdjYXRfdXRpbHMnLCAnY3JlYXRlZCcpKTsNCn0NCmVsc2UNCnsNCiAgdXNvcnQoJGNhdGVnb3J5SXRlbXMsIGFycmF5KCdjYXRfdXRpbHMnLCAnY2hyb25vJykpOw0KfQ0KDQppZiAoaXNzZXQoJHBhcmFtc1snZ2xvYmFsX3NvcnRfZGlyJ10pICYmICRwYXJhbXNbJ2dsb2JhbF9zb3J0X2RpciddID09ICdhc2MnKQ0Kew0KICAkY2F0ZWdvcnlJdGVtcyA9IGFycmF5X3JldmVyc2UoJGNhdGVnb3J5SXRlbXMpOw0KfQ0KDQokY291bnQgPSBjb3VudCgkY2F0ZWdvcnlJdGVtcyk7DQokc3RhcnQgPSAwOw0KJGVuZCA9IG1pbigkY291bnQsICRwYXJhbXNbJ2NvdW50J10pOw0KJHRoaXNVcmwgPSAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXTsNCiR0aGlzVXJsID0gcHJlZ19yZXBsYWNlKCcvKFw/KSooXCYpKnN0YXJ0PVxkKy8nLCAnJywgJHRoaXNVcmwpOw0KJGNhdGVnb3J5SXRlbXMgPSBhcnJheV9zcGxpY2UoJGNhdGVnb3J5SXRlbXMsICRzdGFydCwgJGVuZCk7DQokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJGNhdGVnb3J5SXRlbXMpOw0KDQokdGhpcy0+c21hcnR5QmFzaWNzKCk7DQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJHRoaXMtPmdldFRlbXBsYXRlRnJvbUFsaWFzKCRwYXJhbXNbJ3N1Yl90ZW1wbGF0ZSddKSk7DQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/action.reimport.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgZXhpdDsKaWYgKCEgJHRoaXMtPkNoZWNrQWNjZXNzKCkpIGV4aXQ7CgkKCQkkdGhpcy0+aW1wb3J0U2FtcGxlVGVtcGxhdGVzKCk7CgkJJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ3JlaW1wb3J0ZWQnKTsKCQkkdGhpcy0+RG9BY3Rpb24oJ2RlZmF1bHRhZG1pbicsICRpZCwgJHBhcmFtcyk7Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.submitattrs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tBY2Nlc3MoKSApIGV4aXQ7CgokY29udGVudG9wcyA9IGNtc21zKCktPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CgokdHlwZXMgPSBhcnJheSgKICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICAnY2F0YWxvZ2l0ZW0nLAogICAgICAgICAgICAgICAgICdjYXRhbG9nY2F0ZWdvcnknLAogICAgICAgICAgICAgICAgICdjYXRhbG9ncHJpbnRhYmxlJwogICAgICAgICAgICAgICk7Cgpmb3JlYWNoKCRwYXJhbXMgYXMgJHRoaXNQYXJhbUtleSA9PiAkdGhpc1BhcmFtVmFsdWUpCnsKICBpZiggc3Vic3RyKCR0aGlzUGFyYW1LZXksIDAsIDQpID09ICdhdHRyJykgIyBpcyBhdHRyXypfKl8qICAgKEpNKQogIHsKICAgICMgYXQgdGhpcyBwb2ludCAkdGhpc1BhcmFtS2V5IHNob3VsZCBob2xkIHNvbWV0aGluZyBsaWtlICdhdHRyX2F0dHJUeXBlX2F0dHJOdW0nIHdoYXRldmVyIHRoZXkgbWF5IHJlcHJlc2VudC4uLiAoSk0pCiAgICBsaXN0KCRhdHRyLCAkYXR0clR5cGUsICRhdHRyTnVtKSA9IGV4cGxvZGUoJ18nLCAkdGhpc1BhcmFtS2V5KTsKICAgICR0aGlzYWxpYXMgPSAkcGFyYW1zWydhbGlhc18nIC4gJGF0dHJUeXBlIC4gJ18nIC4gJGF0dHJOdW1dOwoKICAgIGlmKCAKICAgICAgICAoc3RybGVuKCR0aGlzUGFyYW1WYWx1ZSkgPiAwKSAKICAgICAgICAmJiAoIWlzc2V0KCRwYXJhbXNbJ2RlbGV0ZV8nIC4gJGF0dHJUeXBlIC4gJ18nIC4gJGF0dHJOdW1dKQogICAgICAgIHx8ICRwYXJhbXNbJ2RlbGV0ZV8nIC4gJGF0dHJUeXBlIC4gJ18nIC4gJGF0dHJOdW1dID09ICcwJykgKQogICAgewogICAgICAvLyBuZXcgYXR0cmlidXRlIG9yIHVwZGF0aW5nIG9sZD8KICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ29sZF8nIC4gJGF0dHJUeXBlIC4gJ18nIC4gJGF0dHJOdW1dKSApCiAgICAgIHsKICAgICAgICAvLyBpdCdzIGFuIG9sZCByZWNvcmQKCiAgICAgICAgLy8gZ2V0IG9sZCB2YWx1ZSB0byB1cGRhdGUgY29udGVudCB0YWJsZQogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgYXR0cmlidXRlLGFsaWFzIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfY2F0YWxvZ19hdHRyIHdoZXJlIGlkPT8nOwogICAgICAgICRyID0gJGRiLT5HZXRBcnJheSggJHF1ZXJ5LCBhcnJheSAoJHBhcmFtc1snb2xkXycgLiAkYXR0clR5cGUgLiAnXycgLiAkYXR0ck51bV0pICk7ICAKICAgICAgICAvLyRyID0gJGRiLT5HZXRPbmUoJHF1ZXJ5LCBhcnJheSAoJHBhcmFtc1snb2xkXycgLiAkYXR0clR5cGUgLiAnXycgLiAkYXR0ck51bV0pKTsgIAovLyAgICAgICAgICAgICAgICAgICAKLy8gICAgICAgIGlmKCRyKQovLyAgICAgICAgewovLyAgICAgICAgICAkb2xkdmFsID0gJHJbJ2F0dHJpYnV0ZSddOwovLyAgICAgICAgICAkb2xkYWxpYXMgPSAkclsnYWxpYXMnXTsKLy8gICAgICAgIH0KICAgICAgICBpZigkcikKICAgICAgICB7CiAgICAgICAgICAkb2xkdmFsID0gaXNzZXQoJHJbJ2F0dHJpYnV0ZSddKSA/ICRyWydhdHRyaWJ1dGUnXSA6ICcnOwogICAgICAgICAgJG9sZHZhbCA9IGlzc2V0KCRyWydhbGlhcyddKSA/ICRyWydhbGlhcyddIDogJyc7CiAgICAgICAgfQogICAgICAgIC8vJG9sZHZhbCA9ICRkYi0+R2V0T25lKCRxdWVyeSwgYXJyYXkgKCRwYXJhbXNbJ29sZF8nIC4gJGF0dHJUeXBlIC4gJ18nIC4gJGF0dHJOdW1dKSk7CgoKICAgICAgICAvLyB3cml0ZSBuZXcgdmFsdWUKICAgICAgICAkcXVlcnkgPSAgJ1VQREFURSAnIAogICAgICAgICAgICAgICAgICAuIGNtc19kYl9wcmVmaXgoKQogICAgICAgICAgICAgICAgICAuICdtb2R1bGVfY2F0YWxvZ19hdHRyIFNFVCBhdHRyaWJ1dGU9PywgYWxpYXM9Pywgb3JkZXJfYnk9PywgZGVmYXVsdHZhbD0/LCBsZW5ndGg9Pywgc2VsZWN0X3ZhbHVlcz0/LCBmaWVsZF90eXBlPT8gd2hlcmUgaWQ9Pyc7CiAgICAgICAgICAgICAgICAgIAogICAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5CiAgICAgICAgKAogICAgICAgICAgICR0aGlzUGFyYW1WYWx1ZSwKICAgICAgICAgICAkcGFyYW1zWydhbGlhc18nICAgICAgICAgICAuICRhdHRyVHlwZSAuICdfJyAuICRhdHRyTnVtXSwKICAgICAgICAgICAkcGFyYW1zWydvcmRlcmJ5XycgICAgICAgICAuICRhdHRyVHlwZSAuICdfJyAuICRhdHRyTnVtXSwKICAgICAgICAgICAkcGFyYW1zWydkZWZhdWx0XycgICAgICAgICAuICRhdHRyVHlwZSAuICdfJyAuICRhdHRyTnVtXSwKICAgICAgICAgICAkcGFyYW1zWydsZW5fJyAgICAgICAgICAgICAuICRhdHRyVHlwZSAuICdfJyAuICRhdHRyTnVtXSwKICAgICAgICAgICAkcGFyYW1zWydzZWxlY3RfdmFsdWVzXycgICAuICRhdHRyVHlwZSAuICdfJyAuICRhdHRyTnVtXSwKICAgICAgICAgICAkcGFyYW1zWydmaWVsZF90eXBlXycgICAgICAuICRhdHRyVHlwZSAuICdfJyAuICRhdHRyTnVtXSwKICAgICAgICAgICAkcGFyYW1zWydvbGRfJyAgICAgICAgICAgICAuICRhdHRyVHlwZSAuICdfJyAuICRhdHRyTnVtXQogICAgICAgICkpOwoKICAgICAgICBpZiAoICRkYnJlc3VsdCA9PT0gZmFsc2UgKQogICAgICAgIHsKICAgICAgICAgIHJldHVybiAkdGhpcy0+ZGlzcGxheUVycm9yKCAkZGItPkVycm9yTXNnKCkgKTsKICAgICAgICB9CgogICAgICAgIC8vIHVwZGF0ZSBjb250ZW50IHRhYmxlCiAgICAgICAgaWYoJG9sZHZhbCAhPSAkdGhpc1BhcmFtVmFsdWUpCiAgICAgICAgewogICAgICAgICAgJHF1ZXJ5ID0gICdTRUxFQ1QgYy5jb250ZW50X2lkIGZyb20gJyAKICAgICAgICAgICAgICAgICAgICAuIGNtc19kYl9wcmVmaXgoKSAKICAgICAgICAgICAgICAgICAgICAuICdjb250ZW50IGMsICcgCiAgICAgICAgICAgICAgICAgICAgLiBjbXNfZGJfcHJlZml4KCkKICAgICAgICAgICAgICAgICAgICAuICdjb250ZW50X3Byb3BzIHAgd2hlcmUgYy50eXBlPT8gYW5kIHAucHJvcF9uYW1lPT8gYW5kIGMuY29udGVudF9pZD1wLmNvbnRlbnRfaWQnOwogICAgICAgICAgCiAgICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRxdWVyeSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGVzWyRhdHRyVHlwZV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb2xkdmFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgJGNsaXN0ID0gYXJyYXkgKCk7CgogICAgICAgICAgd2hpbGUoICRkYnJlc3VsdCAhPT0gZmFsc2UgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSApCiAgICAgICAgICB7CiAgICAgICAgICAgICRjbGlzdFtdID0gJHJvd1snY29udGVudF9pZCddOwogICAgICAgICAgfQoKICAgICAgICAgIGlmICggY291bnQoJGNsaXN0KSA+IDAgKSAjIGlmIG91ciBsaXN0IGlzbid0IGVtcHR5CiAgICAgICAgICB7CiAgICAgICAgICAgIGZvcmVhY2goICRjbGlzdCBhcyAkb25lICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICRvYmogPSAkY29udGVudG9wcy0+TG9hZENvbnRlbnRGcm9tSWQoJG9uZSwgVFJVRSk7CiAgICAgICAgICAgICAgJG9iai0+VXBkYXRlUHJvcGVydHlOYW1lKCRvbGRhbGlhcywgJHRoaXNhbGlhcyk7CiAgICAgICAgICAgICAgJG9iai0+c2F2ZSgpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGVsc2UgIyBpdCdzIGEgbmV3IGF0dHJpYnV0ZQogICAgICB7CiAgICAgICAgJG5ld19pZCA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9jYXRhbG9nX2F0dHJfc2VxJyk7CiAgICAgICAgCiAgICAgICAgJHF1ZXJ5ID0gICdJTlNFUlQgSU5UTyAnIAogICAgICAgICAgICAgICAgICAuIGNtc19kYl9wcmVmaXgoKQogICAgICAgICAgICAgICAgICAuICdtb2R1bGVfY2F0YWxvZ19hdHRyIChpZCx0eXBlX2lkLGF0dHJpYnV0ZSxhbGlhcyxkZWZhdWx0dmFsLGxlbmd0aCxvcmRlcl9ieSxzZWxlY3RfdmFsdWVzLGZpZWxkX3R5cGUpIFZBTFVFUyAoPyw/LD8sPyw/LD8sPyw/LD8pJzsKICAgICAgICAKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheQogICAgICAgICgKICAgICAgICAgICAkbmV3X2lkLAogICAgICAgICAgICRhdHRyVHlwZSwKICAgICAgICAgICAkdGhpc1BhcmFtVmFsdWUsCiAgICAgICAgICAgJHBhcmFtc1snYWxpYXNfJyAuICRhdHRyVHlwZSAuICdfJyAuICRhdHRyTnVtXSwKICAgICAgICAgICAkcGFyYW1zWydkZWZhdWx0XycgLiAkYXR0clR5cGUgLiAnXycgLiAkYXR0ck51bV0sCiAgICAgICAgICAgJHBhcmFtc1snbGVuXycgLiAkYXR0clR5cGUgLiAnXycgLiAkYXR0ck51bV0sCiAgICAgICAgICAgJHBhcmFtc1snb3JkZXJieV8nIC4gJGF0dHJUeXBlIC4gJ18nIC4gJGF0dHJOdW1dLAogICAgICAgICAgICRwYXJhbXNbJ3NlbGVjdF92YWx1ZXNfJyAuICRhdHRyVHlwZSAuICdfJyAuICRhdHRyTnVtXSwKICAgICAgICAgICAkcGFyYW1zWydmaWVsZF90eXBlXycgLiAkYXR0clR5cGUgLiAnXycgLiAkYXR0ck51bV0KICAgICAgICApKTsKCiAgICAgICAgaWYgKCAkZGJyZXN1bHQgPT09IGZhbHNlICkKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gJHRoaXMtPmRpc3BsYXlFcnJvcigkZGItPkVycm9yTXNnKCkpOwogICAgICAgIH0KCiAgICAgICAgLy8gdXBkYXRlIGNvbnRlbnQgdGFibGUgZm9yIGV4aXN0ZW50IHJlY29yZHMhCiAgICAgICAgaWYoICFlbXB0eSgkcGFyYW1zWydkZWZhdWx0XycgLiAkYXR0clR5cGUgLiAnXycgLiAkYXR0ck51bV0pICkKICAgICAgICB7CiAgICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIGNvbnRlbnRfaWQnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ2NvbnRlbnQgd2hlcmUgdHlwZT0/JzsKICAgICAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5ICgkdHlwZXNbJGF0dHJUeXBlXSkpOwogICAgICAgICAgJGNsaXN0ID0gYXJyYXkgKCk7CgogICAgICAgICAgd2hpbGUoICRkYnJlc3VsdCAhPT0gZmFsc2UgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSApCiAgICAgICAgICB7CiAgICAgICAgICAgICRjbGlzdFtdID0gJHJvd1snY29udGVudF9pZCddOwogICAgICAgICAgfQoKICAgICAgICAgIGlmICggY291bnQoJGNsaXN0KSA+IDAgKQogICAgICAgICAgewogICAgICAgICAgICBmb3JlYWNoKCAkY2xpc3QgYXMgJG9uZSApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAkb2JqID0gJGNvbnRlbnRvcHMtPkxvYWRDb250ZW50RnJvbUlkKCRvbmUsIFRSVUUpOwogICAgICAgICAgICAgICRvYmotPkFkZFByb3BlcnR5KCR0aGlzYWxpYXMpOwogICAgICAgICAgICAgICRvYmotPnNhdmUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogICAgZWxzZWlmKCBpc3NldCgkcGFyYW1zWydkZWxldGVfJyAuICRhdHRyVHlwZSAuICdfJyAuICRhdHRyTnVtXSkKICAgICAgICAmJiAkcGFyYW1zWydkZWxldGVfJyAuICRhdHRyVHlwZSAuICdfJyAuICRhdHRyTnVtXSA9PSAnMScgKQogICAgLy8gdGhpcyBpcyBhIGRlbGV0ZSBvcGVyYXRpb24gKEpNKQogICAgewogICAgICAvLyBkZWxldGUgZnJvbSBDb250ZW50IFRhYmxlIGFzIHdlbGwhCiAgICAgICRxdWVyeSA9ICdTRUxFQ1QgYXR0cmlidXRlIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfY2F0YWxvZ19hdHRyIHdoZXJlIGlkPT8nOwogICAgICAkZGlkID0gJGRiLT5HZXRPbmUoJHF1ZXJ5LCBhcnJheSAoJHBhcmFtc1snb2xkXycgLiAkYXR0clR5cGUgLiAnXycgLiAkYXR0ck51bV0pKTsKCiAgICAgICRxdWVyeSA9ICdTRUxFQ1QgY29udGVudF9pZCBmcm9tICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnY29udGVudCB3aGVyZSB0eXBlPT8nOwogICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSAoJHR5cGVzWyRhdHRyVHlwZV0pKTsKICAgICAgJGNsaXN0ID0gYXJyYXkgKCk7CgogICAgICB3aGlsZSggJGRicmVzdWx0ICE9PSBmYWxzZSAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpICkKICAgICAgewogICAgICAgICRjbGlzdFtdID0gJHJvd1snY29udGVudF9pZCddOwogICAgICB9CgogICAgICBpZiAoIGNvdW50KCRjbGlzdCkgPiAwICkKICAgICAgewogICAgICAgIGZvcmVhY2goICRjbGlzdCBhcyAkb25lICkKICAgICAgICB7CiAgICAgICAgICAkb2JqID0gJGNvbnRlbnRvcHMtPkxvYWRDb250ZW50RnJvbUlkKCRvbmUsIFRSVUUpOwogICAgICAgICAgJG9iai0+RGVsZXRlUHJvcGVydHkoJHRoaXNQYXJhbVZhbHVlKTsKICAgICAgICAgICRvYmotPnNhdmUoKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIGhhbmRsZSBkZWxldGVzIGV4cGxpY2l0bHkgbm93LgogICAgICAkcXVlcnkgPSAnREVMRVRFIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfY2F0YWxvZ19hdHRyIHdoZXJlIGlkPT8nOwogICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSAoJHBhcmFtc1snb2xkXycgLiAkYXR0clR5cGUgLiAnXycgLiAkYXR0ck51bV0pKTsKICAgIH0KICB9Cn0KCiRnQ21zID0gY21zbXMoKTsKLy8kZ0Ntcy0+Y2xlYXJfY2FjaGVkX2ZpbGVzKCk7ICAgLS0+IGFwcGFyZW50bHkgYW4gaWxsZWdhbCBvcCB0b28uLi4uIChKTSkgVW5sZXNzIGl0IG9ubHkgY2xlYXJzIG93biBjYWNoZWQgZmlsZXMuLi4KJHBhcmFtc1snbW9kdWxlX21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdhdHRyc3VwZGF0ZWQnKTsKJHRoaXMtPkRvQWN0aW9uKCdhZG1pbmF0dHJzJywgJGlkLCAkcGFyYW1zKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.submitprefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQppZiAoISAkdGhpcy0+Q2hlY2tBY2Nlc3MoKSkgZXhpdDsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdpdGVtX2ltYWdlX2NvdW50JywgaXNzZXQoJHBhcmFtc1snaXRlbV9pbWFnZV9jb3VudCddKT8kcGFyYW1zWydpdGVtX2ltYWdlX2NvdW50J106Mik7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnaXRlbV9maWxlX2NvdW50JywgaXNzZXQoJHBhcmFtc1snaXRlbV9maWxlX2NvdW50J10pPyRwYXJhbXNbJ2l0ZW1fZmlsZV9jb3VudCddOjIpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2l0ZW1fZmlsZV90eXBlcycsIGlzc2V0KCRwYXJhbXNbJ2l0ZW1fZmlsZV90eXBlcyddKT8kcGFyYW1zWydpdGVtX2ZpbGVfdHlwZXMnXToncGRmLHN3ZixmbHYsZG9jLG9kdCxvZHMseGxzJyk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnY2F0ZWdvcnlfaW1hZ2VfY291bnQnLCBpc3NldCgkcGFyYW1zWydjYXRlZ29yeV9pbWFnZV9jb3VudCddKT8kcGFyYW1zWydjYXRlZ29yeV9pbWFnZV9jb3VudCddOjEpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2l0ZW1faW1hZ2Vfc2l6ZV9oZXJvJywgaXNzZXQoJHBhcmFtc1snaXRlbV9pbWFnZV9zaXplX2hlcm8nXSk/JHBhcmFtc1snaXRlbV9pbWFnZV9zaXplX2hlcm8nXTonNDAwJyk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnaXRlbV9pbWFnZV9zaXplX3RodW1ibmFpbCcsIGlzc2V0KCRwYXJhbXNbJ2l0ZW1faW1hZ2Vfc2l6ZV90aHVtYm5haWwnXSk/JHBhcmFtc1snaXRlbV9pbWFnZV9zaXplX3RodW1ibmFpbCddOic3MCcpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2NhdGVnb3J5X2ltYWdlX3NpemVfaGVybycsIGlzc2V0KCRwYXJhbXNbJ2NhdGVnb3J5X2ltYWdlX3NpemVfaGVybyddKT8kcGFyYW1zWydjYXRlZ29yeV9pbWFnZV9zaXplX2hlcm8nXTonNDAwJyk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV90aHVtYm5haWwnLCBpc3NldCgkcGFyYW1zWydjYXRlZ29yeV9pbWFnZV9zaXplX3RodW1ibmFpbCddKT8kcGFyYW1zWydjYXRlZ29yeV9pbWFnZV9zaXplX3RodW1ibmFpbCddOic5MCcpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2l0ZW1faW1hZ2Vfc2l6ZV9jYXRlZ29yeScsIGlzc2V0KCRwYXJhbXNbJ2l0ZW1faW1hZ2Vfc2l6ZV9jYXRlZ29yeSddKT8kcGFyYW1zWydpdGVtX2ltYWdlX3NpemVfY2F0ZWdvcnknXTonNzAnKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdpdGVtX2ltYWdlX3NpemVfY2F0YWxvZycsIGlzc2V0KCRwYXJhbXNbJ2l0ZW1faW1hZ2Vfc2l6ZV9jYXRhbG9nJ10pPyRwYXJhbXNbJ2l0ZW1faW1hZ2Vfc2l6ZV9jYXRhbG9nJ106JzEwMCcpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2ZvcmNlX2FzcGVjdF9yYXRpbycsIGlzc2V0KCRwYXJhbXNbJ2ZvcmNlX2FzcGVjdF9yYXRpbyddKT8kcGFyYW1zWydmb3JjZV9hc3BlY3RfcmF0aW8nXTowKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdpbWFnZV9hc3BlY3RfcmF0aW8nLCBpc3NldCgkcGFyYW1zWydpbWFnZV9hc3BlY3RfcmF0aW8nXSk/JHBhcmFtc1snaW1hZ2VfYXNwZWN0X3JhdGlvJ106JzQ6MycpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2NhdGVnb3J5X3JlY3Vyc2UnLCBpc3NldCgkcGFyYW1zWydjYXRlZ29yeV9yZWN1cnNlJ10pPyRwYXJhbXNbJ2NhdGVnb3J5X3JlY3Vyc2UnXTonbWl4ZWRfb25lJyk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnY2F0ZWdvcnlfc29ydF9vcmRlcicsIGlzc2V0KCRwYXJhbXNbJ2l0ZW1fc29ydF9vcmRlciddKT8kcGFyYW1zWydpdGVtX3NvcnRfb3JkZXInXTonbmF0dXJhbCcpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2NhdGVnb3J5X2l0ZW1zX3Blcl9wYWdlJywgaXNzZXQoJHBhcmFtc1snaXRlbXNfcGVyX3BhZ2UnXSk/JHBhcmFtc1snaXRlbXNfcGVyX3BhZ2UnXTonMTAnKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdzaG93X2V4dGFudCcsIGlzc2V0KCRwYXJhbXNbJ3Nob3dfZXh0YW50J10pPyRwYXJhbXNbJ3Nob3dfZXh0YW50J106JzEnKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmbHVzaF9jYXRzJywgaXNzZXQoJHBhcmFtc1snZmx1c2hfY2F0cyddKT8kcGFyYW1zWydmbHVzaF9jYXRzJ106JzAnKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdpbWFnZV91cGxvYWRfcGF0aCcsaXNzZXQoJHBhcmFtc1snaW1hZ2VfdXBsb2FkX3BhdGgnXSk/JHBhcmFtc1snaW1hZ2VfdXBsb2FkX3BhdGgnXTokdGhpcy0+Z2V0QXNzZXRQYXRoKCdzJyx0cnVlKSk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZmlsZV91cGxvYWRfcGF0aCcsaXNzZXQoJHBhcmFtc1snZmlsZV91cGxvYWRfcGF0aCddKT8kcGFyYW1zWydmaWxlX3VwbG9hZF9wYXRoJ106JHRoaXMtPmdldEFzc2V0UGF0aCgnZicsdHJ1ZSkpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2ltYWdlX3Byb2NfcGF0aCcsaXNzZXQoJHBhcmFtc1snaW1hZ2VfcHJvY19wYXRoJ10pPyRwYXJhbXNbJ2ltYWdlX3Byb2NfcGF0aCddOiR0aGlzLT5nZXRBc3NldFBhdGgoJ2knLHRydWUpKTsJCQkNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdzaG93X21pc3NpbmcnLCBpc3NldCgkcGFyYW1zWydzaG93X21pc3NpbmcnXSk/JHBhcmFtc1snc2hvd19taXNzaW5nJ106MCk7DQokcGFyYW1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygncHJlZnN1cGRhdGVkJyk7DQokdGhpcy0+RG9BY3Rpb24oJ2FkbWlucHJlZnMnLCAkaWQsICRwYXJhbXMpOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.variable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCQlpZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwoJCWlmICghaXNzZXQoJHBhcmFtc1snbmFtZSddKSkKCQkJewoJCQllY2hvICc8IS0tIHBsZWFzZSBzcGVjaWZ5IGEgQ2F0YWxvZ2VyIHZhcmlhYmxlIG5hbWUgdG8gcmV0cmlldmUgLS0+JzsKCQkJcmV0dXJuOwoJCQl9CgoJCQkkZm91bmQgPSBmYWxzZTsKCQkJJGdDbXMgPSBjbXNtcygpOwoJCQkkY29udGVudG9wcyA9ICRnQ21zLT5HZXRDb250ZW50T3BlcmF0aW9ucygpOwoJCQkkY29udGVudF9vYmogPSAkY29udGVudG9wcy0+Z2V0Q29udGVudE9iamVjdCgpOwkJCQoJCWlmICgkY29udGVudF9vYmopCgkJCXsKCQkJaWYgKCRjb250ZW50X29iai0+VHlwZSgpICE9ICdjYXRhbG9naXRlbScgJiYgJGNvbnRlbnRfb2JqLT5UeXBlKCkgIT0gJ2NhdGFsb2djYXRlZ29yeScgJiYgJGNvbnRlbnRfb2JqLT5UeXBlKCkgIT0gJ2NhdGFsb2dwcmludGFibGUnKQoJCQkJewoJCQkJcmV0dXJuOwoJCQkJfQoJCQkkYXR0cnMgPSAkY29udGVudF9vYmotPmdldEF0dHJzKCk7CgkJCSR0ZXN0YXR0ciA9IHN0cnRvbG93ZXIoJHBhcmFtc1snbmFtZSddKTsKCQkJCgkJCWZvcmVhY2ggKCRhdHRycyBhcyAkdGhpc0F0dHIpCgkJCQl7CgkJCQkkY29tcGF0dHIgPSBzdHJ0b2xvd2VyKCR0aGlzQXR0ci0+YXR0cik7CgkJCQlpZiAoJGNvbXBhdHRyID09ICR0ZXN0YXR0cikKCQkJCQl7CgkJCQkJJHRtcCA9ICRjb250ZW50X29iai0+R2V0UHJvcGVydHlWYWx1ZSgkdGhpc0F0dHItPmF0dHIpOwoJCQkJCSRmb3VuZCA9IHRydWU7CgkJCQkJfQoJCQkJZWxzZSBpZiAoJHRoaXNBdHRyLT5hbGlhcyA9PSAkdGVzdGF0dHIpCgkJCQkJewoJCQkJCSR0bXAgPSAkY29udGVudF9vYmotPkdldFByb3BlcnR5VmFsdWUoJHRoaXNBdHRyLT5hbGlhcyk7CgkJCQkJJGZvdW5kID0gdHJ1ZTsKCQkJCQl9CgkJCQllbHNlCgkJCQkJewoJCQkJCSRzYWZlYXR0ciA9IHN0cnRvbG93ZXIocHJlZ19yZXBsYWNlKCcvXFcvJywnJywgJHBhcmFtc1snbmFtZSddKSk7CgkJCQkJaWYgKCRjb21wYXR0ciA9PSAgJHNhZmVhdHRyIHx8ICR0aGlzQXR0ci0+YWxpYXMgPT0gJHNhZmVhdHRyKQoJCQkJCQl7CgkJCQkJCSR0bXAgPSAkY29udGVudF9vYmotPkdldFByb3BlcnR5VmFsdWUoJHNhZmVhdHRyKTsKCQkJCQkJJGZvdW5kID0gdHJ1ZTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoKCQlpZiAoISAkZm91bmQpCgkJCXsKCQkJaWYgKGlzc2V0KCRwYXJhbXNbJ2RlZmF1bHQnXSkpCgkJCQl7CgkJCQkkdG1wID0gJHBhcmFtc1snZGVmYXVsdCddOwoJCQkJfQoJCQllbHNlCgkJCQl7CgkJCQkkdG1wID0gJyc7CgkJCQl9CgkJCX0KCQllY2hvICR0bXA7Cj8+]]></data>
	</file>
	<file>
	  <filename>/admin_default_new.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICggIWlzX29iamVjdCggY21zbXMoKSApICkgZXhpdDsNCg0KJHRoaXMtPmluaXRBZG1pbk5hdigkaWQsICRwYXJhbXMsICRyZXR1cm5pZCk7DQoNCiMgbm93IGZvciB0aGUgdGVtcGxhdGVzDQoNCiMgSXRlbXMgDQoNCiRJdGVtUGFnZUFycmF5ID0gYXJyYXkoKTsNCiANCiRxdWVyeSA9ICJTRUxFQ1QgaWQsIHRpdGxlIEZST00gIg0KICAgICAgICAgLiBjbXNfZGJfcHJlZml4KCkNCiAgICAgICAgIC4gIm1vZHVsZV9jYXRhbG9nX3RlbXBsYXRlIFdIRVJFIHR5cGVfaWQgPSAxIE9SREVSIGJ5IHRpdGxlIjsNCiAgICAgIA0KJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQoNCndoaWxlICgkZGJyZXN1bHQgIT09IGZhbHNlICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpDQp7DQogICRvbmVyb3cgPSBuZXcgc3RkQ2xhc3MoKTsNCg0KICAkb25lcm93LT5pZCA9ICRyb3dbJ2lkJ107DQogICRvbmVyb3ctPnR5cGUgPSAkcm93Wyd0eXBlJ107DQogICRvbmVyb3ctPnRpdGxlID0gJHRoaXMtPkNyZWF0ZUxpbmsoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0dGVtcGwnLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJldHVybmlkLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm93Wyd0aXRsZSddLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoJ3RlbXBsYXRlX2lkJyA9PiAkcm93WydpZCddLCAndHlwZV9pZCcgPT4gMSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogIA0KICAkSWNvbiA9ICRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ2VkaXQnKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzdGVtaWNvbicNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KDQogICRvbmVyb3ctPmVkaXRsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaWQsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXR0ZW1wbCcsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJldHVybmlkLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEljb24sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgndGVtcGxhdGVfaWQnID0+ICRyb3dbJ2lkJ10sICd0eXBlX2lkJyA9PiAxKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICRJY29uID0gJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5MYW5nKCdkZWxldGUnKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzdGVtaWNvbicNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgDQogICRvbmVyb3ctPmRlbGV0ZWxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlkLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZXRlbXBsJywgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXR1cm5pZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEljb24sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCd0ZW1wbGF0ZV9pZCcgPT4gJHJvd1snaWQnXSksIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+TGFuZygnYXJleW91c3VyZScsJ1RlbXBsYXRlJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgYXJyYXlfcHVzaCgkSXRlbVBhZ2VBcnJheSwgJG9uZXJvdyk7DQoNCn0NCg0KDQojIENhdGVnb3JpZXMNCg0KJENhdGVnb3J5UGFnZUFycmF5ID0gYXJyYXkoKTsNCiANCiRxdWVyeSA9ICJTRUxFQ1QgaWQsIHRpdGxlIEZST00gIg0KICAgICAgICAgLiBjbXNfZGJfcHJlZml4KCkNCiAgICAgICAgIC4gIm1vZHVsZV9jYXRhbG9nX3RlbXBsYXRlIFdIRVJFIHR5cGVfaWQgPSAyIE9SREVSIGJ5IHRpdGxlIjsNCiAgICAgIA0KJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQoNCndoaWxlICgkZGJyZXN1bHQgIT09IGZhbHNlICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpDQp7DQogICRvbmVyb3cgPSBuZXcgc3RkQ2xhc3MoKTsNCg0KICAkb25lcm93LT5pZCA9ICRyb3dbJ2lkJ107DQogICRvbmVyb3ctPnR5cGUgPSAkcm93Wyd0eXBlJ107DQogICRvbmVyb3ctPnRpdGxlID0gJHRoaXMtPkNyZWF0ZUxpbmsoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0dGVtcGwnLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJldHVybmlkLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm93Wyd0aXRsZSddLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoJ3RlbXBsYXRlX2lkJyA9PiAkcm93WydpZCddLCAndHlwZV9pZCcgPT4gMikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogIA0KICAkSWNvbiA9ICRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ2VkaXQnKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzdGVtaWNvbicNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KDQogICRvbmVyb3ctPmVkaXRsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaWQsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXR0ZW1wbCcsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJldHVybmlkLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEljb24sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgndGVtcGxhdGVfaWQnID0+ICRyb3dbJ2lkJ10sICd0eXBlX2lkJyA9PiAyKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICRJY29uID0gJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5MYW5nKCdkZWxldGUnKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzdGVtaWNvbicNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgDQogICRvbmVyb3ctPmRlbGV0ZWxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlkLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZXRlbXBsJywgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXR1cm5pZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEljb24sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCd0ZW1wbGF0ZV9pZCc9PiRyb3dbJ2lkJ10pLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmUnLCdUZW1wbGF0ZScpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogIGFycmF5X3B1c2goJENhdGVnb3J5UGFnZUFycmF5LCAkb25lcm93KTsNCg0KfQ0KDQojIFByaW50YWJsZSBDYXRhbG9nDQoNCiRQcmludGFibGVDYXRhbG9nQXJyYXkgPSBhcnJheSgpOw0KIA0KJHF1ZXJ5ID0gIlNFTEVDVCBpZCwgdGl0bGUgRlJPTSAiDQogICAgICAgICAuIGNtc19kYl9wcmVmaXgoKQ0KICAgICAgICAgLiAibW9kdWxlX2NhdGFsb2dfdGVtcGxhdGUgV0hFUkUgdHlwZV9pZCA9IDMgT1JERVIgYnkgdGl0bGUiOw0KICAgICAgDQokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsNCg0Kd2hpbGUgKCRkYnJlc3VsdCAhPT0gZmFsc2UgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkNCnsNCiAgJG9uZXJvdyA9IG5ldyBzdGRDbGFzcygpOw0KDQogICRvbmVyb3ctPmlkID0gJHJvd1snaWQnXTsNCiAgJG9uZXJvdy0+dHlwZSA9ICRyb3dbJ3R5cGUnXTsNCiAgJG9uZXJvdy0+dGl0bGUgPSAkdGhpcy0+Q3JlYXRlTGluaygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlkLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXR0ZW1wbCcsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuaWQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyb3dbJ3RpdGxlJ10sIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgndGVtcGxhdGVfaWQnID0+ICRyb3dbJ2lkJ10sICd0eXBlX2lkJyA9PiAzKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgDQogICRJY29uID0gJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+TGFuZygnZWRpdCcpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXN0ZW1pY29uJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQoNCiAgJG9uZXJvdy0+ZWRpdGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdHRlbXBsJywgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuaWQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSWNvbiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCd0ZW1wbGF0ZV9pZCcgPT4gJHJvd1snaWQnXSwgJ3R5cGVfaWQnID0+IDMpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgJEljb24gPSAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXN0ZW1pY29uJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICANCiAgJG9uZXJvdy0+ZGVsZXRlbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaWQsICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZXRlbXBsJywgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXR1cm5pZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEljb24sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCd0ZW1wbGF0ZV9pZCc9PiRyb3dbJ2lkJ10pLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmUnLCdUZW1wbGF0ZScpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogIGFycmF5X3B1c2goJFByaW50YWJsZUNhdGFsb2dBcnJheSwgJG9uZXJvdyk7DQoNCn0NCg0KDQojIEl0ZW0gQ29tcGFyaXNvbg0KDQokSXRlbUNvbXBhcmlzb25BcnJheSA9IGFycmF5KCk7DQogDQokcXVlcnkgPSAiU0VMRUNUIGlkLCB0aXRsZSBGUk9NICINCiAgICAgICAgIC4gY21zX2RiX3ByZWZpeCgpDQogICAgICAgICAuICJtb2R1bGVfY2F0YWxvZ190ZW1wbGF0ZSBXSEVSRSB0eXBlX2lkID0gNCBPUkRFUiBieSB0aXRsZSI7DQogICAgICANCiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KDQp3aGlsZSAoJGRicmVzdWx0ICE9PSBmYWxzZSAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQ0Kew0KICAkb25lcm93ID0gbmV3IHN0ZENsYXNzKCk7DQoNCiAgJG9uZXJvdy0+aWQgPSAkcm93WydpZCddOw0KICAkb25lcm93LT50eXBlID0gJHJvd1sndHlwZSddOw0KICAkb25lcm93LT50aXRsZSA9ICR0aGlzLT5DcmVhdGVMaW5rKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaWQsICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXR0ZW1wbCcsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuaWQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyb3dbJ3RpdGxlJ10sIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgndGVtcGxhdGVfaWQnID0+ICRyb3dbJ2lkJ10sICd0eXBlX2lkJyA9PiA0KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgDQogICRJY29uID0gJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+TGFuZygnZWRpdCcpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXN0ZW1pY29uJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQoNCiAgJG9uZXJvdy0+ZWRpdGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdHRlbXBsJywgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuaWQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSWNvbiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCd0ZW1wbGF0ZV9pZCcgPT4gJHJvd1snaWQnXSwgJ3R5cGVfaWQnID0+IDQpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgJEljb24gPSAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXN0ZW1pY29uJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICANCiAgJG9uZXJvdy0+ZGVsZXRlbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaWQsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVsZXRldGVtcGwnLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJldHVybmlkLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSWNvbiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoJ3RlbXBsYXRlX2lkJz0+JHJvd1snaWQnXSksIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+TGFuZygnYXJleW91c3VyZScsJ1RlbXBsYXRlJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgYXJyYXlfcHVzaCgkSXRlbUNvbXBhcmlzb25BcnJheSwgJG9uZXJvdyk7DQoNCn0NCg0KIyBGZWF0dXJlIExpc3QNCg0KJEZlYXR1cmVMaXN0QXJyYXkgPSBhcnJheSgpOw0KIA0KJHF1ZXJ5ID0gIlNFTEVDVCBpZCwgdGl0bGUgRlJPTSAiDQogICAgICAgICAuIGNtc19kYl9wcmVmaXgoKQ0KICAgICAgICAgLiAibW9kdWxlX2NhdGFsb2dfdGVtcGxhdGUgV0hFUkUgdHlwZV9pZCA9IDUgT1JERVIgYnkgdGl0bGUiOw0KICAgICAgDQokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsNCg0Kd2hpbGUgKCRkYnJlc3VsdCAhPT0gZmFsc2UgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkNCnsNCiAgJG9uZXJvdyA9IG5ldyBzdGRDbGFzcygpOw0KDQogICRvbmVyb3ctPmlkID0gJHJvd1snaWQnXTsNCiAgJG9uZXJvdy0+dHlwZSA9ICRyb3dbJ3R5cGUnXTsNCiAgJG9uZXJvdy0+dGl0bGUgPSAkdGhpcy0+Q3JlYXRlTGluaygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlkLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXR0ZW1wbCcsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuaWQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyb3dbJ3RpdGxlJ10sIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgndGVtcGxhdGVfaWQnID0+ICRyb3dbJ2lkJ10sICd0eXBlX2lkJyA9PiA1KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgDQogICRJY29uID0gJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+TGFuZygnZWRpdCcpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXN0ZW1pY29uJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQoNCiAgJG9uZXJvdy0+ZWRpdGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0dGVtcGwnLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXR1cm5pZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRJY29uLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoJ3RlbXBsYXRlX2lkJyA9PiAkcm93WydpZCddLCAndHlwZV9pZCcgPT4gNSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAkSWNvbiA9ICRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+TGFuZygnZGVsZXRlJyksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5c3RlbWljb24nDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgIA0KICAkb25lcm93LT5kZWxldGVsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZCwgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVsZXRldGVtcGwnLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJldHVybmlkLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSWNvbiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoJ3RlbXBsYXRlX2lkJz0+JHJvd1snaWQnXSksIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+TGFuZygnYXJleW91c3VyZScsJ1RlbXBsYXRlJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgYXJyYXlfcHVzaCgkRmVhdHVyZUxpc3RBcnJheSwgJG9uZXJvdyk7DQoNCn0NCg0KJGN1cnJlbnRfdGFiID0gaXNzZXQoJHBhcmFtc1sndGFiJ10pID8gJHBhcmFtc1sndGFiJ10gOiAnaXRlbV9wYWdlX3RlbXBsYXRlcyc7DQoNCi8qKg0KKiBTbWFydHkgc3R1ZmYNCiovDQoNCiR0YWJfaGVhZGVycyA9ICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKQ0KICAgICAgICAgICAgICAgLiAkdGhpcy0+U2V0VGFiSGVhZGVyKCdpdGVtX3BhZ2VfdGVtcGxhdGVzJywgICAgICAgICAkdGhpcy0+TGFuZygndGl0bGVfaXRlbV9wYWdlX3RlbXBsYXRlc190YWInKSwgJGN1cnJlbnRfdGFiID09ICdpdGVtX3BhZ2VfdGVtcGxhdGVzJykNCiAgICAgICAgICAgICAgIC4gJHRoaXMtPlNldFRhYkhlYWRlcignY2F0ZWdvcnlfcGFnZV90ZW1wbGF0ZXMnLCAgICAgJHRoaXMtPkxhbmcoJ3RpdGxlX2NhdGVnb3J5X3BhZ2VfdGVtcGxhdGVzX3RhYicpLCAkY3VycmVudF90YWIgPT0gJ2NhdGVnb3J5X3BhZ2VfdGVtcGxhdGVzJykNCiAgICAgICAgICAgICAgIC4gJHRoaXMtPlNldFRhYkhlYWRlcigncHJpbnRhYmxlX2NhdGFsb2dfdGVtcGxhdGVzJywgJHRoaXMtPkxhbmcoJ3RpdGxlX3ByaW50YWJsZV9jYXRhbG9nX3RlbXBsYXRlc190YWInKSwgJGN1cnJlbnRfdGFiID09ICdwcmludGFibGVfY2F0YWxvZ190ZW1wbGF0ZXMnKQ0KICAgICAgICAgICAgICAgLiAkdGhpcy0+U2V0VGFiSGVhZGVyKCdpdGVtX2NvbXBhcmlzb25fdGVtcGxhdGVzJywgICAkdGhpcy0+TGFuZygndGl0bGVfaXRlbV9jb21wYXJpc29uX3RlbXBsYXRlc190YWInKSwgJGN1cnJlbnRfdGFiID09ICdpdGVtX2NvbXBhcmlzb25fdGVtcGxhdGVzJykNCiAgICAgICAgICAgICAgIC4gJHRoaXMtPlNldFRhYkhlYWRlcignZmVhdHVyZV9saXN0X3RlbXBsYXRlcycsICAgICAgJHRoaXMtPkxhbmcoJ3RpdGxlX2ZlYXR1cmVfbGlzdF90ZW1wbGF0ZXNfdGFiJyksICRjdXJyZW50X3RhYiA9PSAnZmVhdHVyZV9saXN0X3RlbXBsYXRlcycpDQogICAgICAgICAgICAgICAuICR0aGlzLT5FbmRUYWJIZWFkZXJzKCkNCiAgICAgICAgICAgICAgIC4gJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3RhYl9oZWFkZXJzJywgJHRhYl9oZWFkZXJzKTsNCiAgICAgICAgICAgICAgICAgICAgICANCiRzbWFydHktPmFzc2lnbignZW5kX3RhYicsICR0aGlzLT5FbmRUYWIoKSk7DQoNCiRzbWFydHktPmFzc2lnbigndGFiX2Zvb3RlcnMnLCAkdGhpcy0+RW5kVGFiQ29udGVudCgpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdzdGFydF9pdGVtX3BhZ2VfdGVtcGxhdGVzX3RhYicsICR0aGlzLT5TdGFydFRhYignaXRlbV9wYWdlX3RlbXBsYXRlcycpKTsNCiRzbWFydHktPmFzc2lnbignc3RhcnRfY2F0ZWdvcnlfcGFnZV90ZW1wbGF0ZXNfdGFiJywgJHRoaXMtPlN0YXJ0VGFiKCdjYXRlZ29yeV9wYWdlX3RlbXBsYXRlcycpKTsNCiRzbWFydHktPmFzc2lnbignc3RhcnRfcHJpbnRhYmxlX2NhdGFsb2dfdGVtcGxhdGVzX3RhYicsICR0aGlzLT5TdGFydFRhYigncHJpbnRhYmxlX2NhdGFsb2dfdGVtcGxhdGVzJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdzdGFydF9pdGVtX2NvbXBhcmlzb25fdGVtcGxhdGVzX3RhYicsICR0aGlzLT5TdGFydFRhYignaXRlbV9jb21wYXJpc29uX3RlbXBsYXRlcycpKTsNCiRzbWFydHktPmFzc2lnbignc3RhcnRfZmVhdHVyZV9saXN0X3RlbXBsYXRlc190YWInLCAkdGhpcy0+U3RhcnRUYWIoJ2ZlYXR1cmVfbGlzdF90ZW1wbGF0ZXMnKSk7DQoNCiRzbWFydHktPmFzc2lnbignUGFnZUl0ZW1zJywgJEl0ZW1QYWdlQXJyYXkpOw0KJHNtYXJ0eS0+YXNzaWduKCdQYWdlQ2F0ZWdvcmllcycsICRDYXRlZ29yeVBhZ2VBcnJheSk7DQokc21hcnR5LT5hc3NpZ24oJ1ByaW50YWJsZUNhdGFsb2dzJywgJFByaW50YWJsZUNhdGFsb2dBcnJheSk7DQokc21hcnR5LT5hc3NpZ24oJ0l0ZW1Db21wYXJpc29ucycsICRJdGVtQ29tcGFyaXNvbkFycmF5KTsNCiRzbWFydHktPmFzc2lnbignRmVhdHVyZUxpc3RzJywgJEZlYXR1cmVMaXN0QXJyYXkpOw0KDQovLyBDb250ZW50IGRlZmluZXMgYW5kIEZvcm0gc3R1ZmYgZm9yIHRoZSBhZG1pbg0KJHNtYXJ0eS0+YXNzaWduKCdzdGFydF9mb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdzYXZlX2FkbWluX3ByZWZzJywgJHJldHVybmlkKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2FsbG93X2FkZCcsJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnYWxsb3dfYWRkJywgMSwNCiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhbGxvd19hZGQnLCcwJykpLiAkdGhpcy0+TGFuZygndGl0bGVfYWxsb3dfYWRkX2hlbHAnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCBsYW5nKCdzdWJtaXQnKSkpOw0KDQovLyB0cmFuc2xhdGVkIHN0cmluZ3MNCiRzbWFydHktPmFzc2lnbigndGl0bGVfYWxsb3dfYWRkJywkdGhpcy0+TGFuZygndGl0bGVfYWxsb3dfYWRkJykpOw0KJHNtYXJ0eS0+YXNzaWduKCd3ZWxjb21lX3RleHQnLCR0aGlzLT5MYW5nKCd3ZWxjb21lX3RleHQnKSk7IyMjDQokc21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLGlzc2V0KCRwYXJhbXNbJ21lc3NhZ2UnXSk/JHBhcmFtc1snbWVzc2FnZSddOicnKTsNCiRzbWFydHktPmFzc2lnbignc2VjdGlvbicsJHRoaXMtPkxhbmcoJ3N1YnRlbXBsYXRlcycpKTsNCg0KJGljb24gPSAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+TGFuZygnYWRkdGVtcGxhdGUnKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzdGVtaWNvbicNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCg0KJGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaWQsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0dGVtcGwnLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuaWQsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpY29uLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsICcnDQogICAgICAgICAgICAgICAgICAgICAgICAgICk7DQokbGluayAuPSAnICc7DQoNCiRsaW5rIC49ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXR0ZW1wbCcsICRyZXR1cm5pZCwNCiAgICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ2FkZHRlbXBsYXRlJyksIGFycmF5KCksICcnLCBmYWxzZSwgZmFsc2UsICdjbGFzcz0icGFnZW9wdGlvbnMiJyk7DQoNCiRsaW5rIC49ICcmbmJzcDsmbmJzcDsnOw0KDQokaWNvbiA9ICc8aW1nIHNyYz0iJw0KICAgICAgICAuICRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10NCiAgICAgICAgLiAnL21vZHVsZXMvQ2F0YWxvZ2VyL2ltYWdlcy9yZWxvYWQuZ2lmIiBjbGFzcz0ic3lzdGVtaWNvbiIgYWx0PSInDQogICAgICAgIC4gJHRoaXMtPkxhbmcoJ3JlaW1wb3J0dGVtcGxhdGVzJykNCiAgICAgICAgLiAnIiAgdGl0bGU9IicNCiAgICAgICAgLiAkdGhpcy0+TGFuZygncmVpbXBvcnR0ZW1wbGF0ZXMnKQ0KICAgICAgICAuICciIC8+JzsNCg0KJGxpbmsgLj0gJHRoaXMtPkNyZWF0ZUxpbmsoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlkLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVpbXBvcnQnLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuaWQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGljb24sIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCksIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnDQogICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KDQokbGluayAuPSAnICc7DQoNCiRsaW5rIC49ICR0aGlzLT5DcmVhdGVMaW5rKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlaW1wb3J0JywgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJldHVybmlkLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5MYW5nKCdyZWltcG9ydHRlbXBsYXRlcycpLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgpLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2xhc3M9InBhZ2VvcHRpb25zIicNCiAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCiRzbWFydHktPmFzc2lnbignYWRkbGluaycsICRsaW5rKTsNCg0KDQokc21hcnR5LT5hc3NpZ24oJ3RpdGxlX3RlbXBsYXRlJywkdGhpcy0+TGFuZygndGl0bGVfdGVtcGxhdGUnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3RpdGxlX3RlbXBsYXRlX3R5cGUnLCR0aGlzLT5MYW5nKCd0aXRsZV90ZW1wbGF0ZV90eXBlJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdub3RlbXBsYXRlcycsJHRoaXMtPkxhbmcoJ25vdGVtcGxhdGVzJykpOw0KDQovLyBUT0RPIDAgLW8gSm9Nb3JnIC1jIGJ1Z2ZpeCB0YXNrOiBkaWZmZXJlbnRpYXRlIGFkZGxpbmsgZm9yIGVhY2ggdHlwZSBvZiBzdWItdGVtcGxhdGUNCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5wYW5lbC50cGwnKTsNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/admin_default_old.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICggIWlzX29iamVjdCggY21zbXMoKSApICkgZXhpdDsNCg0KLy9Mb2FkIHRoZSBzaG93cw0KJGVudHJ5YXJyYXkgPSBhcnJheSgpOw0KDQokcXVlcnkgPSAiU0VMRUNUIHQuaWQsIHQudGl0bGUsIHR0Lm5hbWUgYXMgdHlwZSBGUk9NICINCiAgICAgICAgIC4gY21zX2RiX3ByZWZpeCgpDQogICAgICAgICAuICJtb2R1bGVfY2F0YWxvZ190ZW1wbGF0ZSB0LCAiDQogICAgICAgICAuIGNtc19kYl9wcmVmaXgoKQ0KICAgICAgICAgLiAibW9kdWxlX2NhdGFsb2dfdGVtcGxhdGVfdHlwZSB0dCBXSEVSRSB0LnR5cGVfaWQgPSB0dC50eXBlX2lkIE9SREVSIGJ5IHQudHlwZV9pZCwgdGl0bGUiOw0KICAgICAgDQokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsNCg0KJHJvd2NsYXNzID0gJ3JvdzEnOw0KDQp3aGlsZSAoJGRicmVzdWx0ICE9PSBmYWxzZSAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQ0Kew0KICAkb25lcm93ID0gbmV3IHN0ZENsYXNzKCk7DQoNCiAgJG9uZXJvdy0+aWQgPSAkcm93WydpZCddOw0KICAkb25lcm93LT50eXBlID0gJHJvd1sndHlwZSddOw0KICAkb25lcm93LT50aXRsZSA9ICR0aGlzLT5DcmVhdGVMaW5rKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaWQsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdHRlbXBsJywgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXR1cm5pZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJvd1sndGl0bGUnXSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCd0ZW1wbGF0ZV9pZCc9PiRyb3dbJ2lkJ10pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAkb25lcm93LT5yb3djbGFzcyA9ICRyb3djbGFzczsNCiAgDQogICRJY29uID0gJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+TGFuZygnZWRpdCcpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXN0ZW1pY29uJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQoNCiAgJG9uZXJvdy0+ZWRpdGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdHRlbXBsJywgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuaWQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSWNvbiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCd0ZW1wbGF0ZV9pZCc9PiRyb3dbJ2lkJ10pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgJEljb24gPSAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXN0ZW1pY29uJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICANCiAgJG9uZXJvdy0+ZGVsZXRlbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaWQsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVsZXRldGVtcGwnLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJldHVybmlkLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSWNvbiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoJ3RlbXBsYXRlX2lkJz0+JHJvd1snaWQnXSksIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+TGFuZygnYXJleW91c3VyZScsJ1RlbXBsYXRlJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQoNCiAgYXJyYXlfcHVzaCgkZW50cnlhcnJheSwgJG9uZXJvdyk7DQoNCiAgKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9InJvdzIiIDogJHJvd2NsYXNzPSJyb3cxIik7ICMgdG9nZ2xlIGNzcyBjbGFzc2VzDQp9DQoNCiR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbXMnLCAkZW50cnlhcnJheSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRlbnRyeWFycmF5KSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NhdGVnb3J5JywgJHRoaXMtPkxhbmcoJ3RlbXBsYXRlbGlzdCcpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfdGVtcGxhdGUnLCAkdGhpcy0+TGFuZygndGl0bGVfdGVtcGxhdGUnKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX3RlbXBsYXRlX3R5cGUnLCAkdGhpcy0+TGFuZygndGl0bGVfdGVtcGxhdGVfdHlwZScpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignbm90ZW1wbGF0ZXMnLCAkdGhpcy0+TGFuZygnbm90ZW1wbGF0ZXMnKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLCBpc3NldCgkcGFyYW1zWydtZXNzYWdlJ10pPyRwYXJhbXNbJ21lc3NhZ2UnXTonJyk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3NlY3Rpb24nLCAkdGhpcy0+TGFuZygnc3VidGVtcGxhdGVzJykpOw0KDQokaWNvbiA9ICRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5MYW5nKCdhZGR0ZW1wbGF0ZScpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXN0ZW1pY29uJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KDQokbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXR0ZW1wbCcsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXR1cm5pZCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGljb24sIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgJycNCiAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiRsaW5rIC49ICcgJzsNCg0KJGxpbmsgLj0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdHRlbXBsJywgJHJldHVybmlkLA0KICAgICAgICAgICAgICAkdGhpcy0+TGFuZygnYWRkdGVtcGxhdGUnKSwgYXJyYXkoKSwgJycsIGZhbHNlLCBmYWxzZSwgJ2NsYXNzPSJwYWdlb3B0aW9ucyInKTsNCg0KJGxpbmsgLj0gJyZuYnNwOyZuYnNwOyc7DQoNCiRpY29uID0gJzxpbWcgc3JjPSInDQogICAgICAgIC4gJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXQ0KICAgICAgICAuICcvbW9kdWxlcy9DYXRhbG9nZXIvaW1hZ2VzL3JlbG9hZC5naWYiIGNsYXNzPSJzeXN0ZW1pY29uIiBhbHQ9IicNCiAgICAgICAgLiAkdGhpcy0+TGFuZygncmVpbXBvcnR0ZW1wbGF0ZXMnKQ0KICAgICAgICAuICciICB0aXRsZT0iJw0KICAgICAgICAuICR0aGlzLT5MYW5nKCdyZWltcG9ydHRlbXBsYXRlcycpDQogICAgICAgIC4gJyIgLz4nOw0KDQokbGluayAuPSAkdGhpcy0+Q3JlYXRlTGluaygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaWQsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWltcG9ydCcsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXR1cm5pZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaWNvbiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoKSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJycNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQoNCiRsaW5rIC49ICcgJzsNCg0KJGxpbmsgLj0gJHRoaXMtPkNyZWF0ZUxpbmsoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlkLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVpbXBvcnQnLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuaWQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ3JlaW1wb3J0dGVtcGxhdGVzJyksIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCksIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGFzcz0icGFnZW9wdGlvbnMiJw0KICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhZGRsaW5rJywgJGxpbmspOw0KDQojRGlzcGxheSB0ZW1wbGF0ZQ0KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCd0ZW1wbGF0ZWxpc3QudHBsJyk7DQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/admin_edittempl_new.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICggIWlzX29iamVjdCggY21zbXMoKSApICkgZXhpdDsNCmlmICggISR0aGlzLT5DaGVja0FjY2VzcygpICkgZXhpdDsNCg0KaWYgKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSB8fCBpc3NldCgkcGFyYW1zWydhcHBseSddKSkNCnsNCiAgaWYgKCEgZW1wdHkoJHBhcmFtc1sndGVtcGxhdGVfaWQnXSkpDQogIHsNCiAgICAvLyB1cGRhdGluZyBhIHRlbXBsYXRlDQogICAgJHF1ZXJ5ID0gJ1VQREFURSAnDQogICAgICAgICAgICAgLiBjbXNfZGJfcHJlZml4KCkNCiAgICAgICAgICAgICAuICdtb2R1bGVfY2F0YWxvZ190ZW1wbGF0ZSBzZXQgdGl0bGU9PywgdGVtcGxhdGU9PywgdHlwZV9pZD0/IFdIRVJFIGlkPT8nOw0KICAgIA0KICAgICRxQXJyID0gYXJyYXkoJHBhcmFtc1sndGl0bGUnXSwNCiAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ3RlbXBsJ10sDQogICAgICAgICAgICAgICAgICAkcGFyYW1zWyd0eXBlX2lkJ10sIA0KICAgICAgICAgICAgICAgICAgJHBhcmFtc1sndGVtcGxhdGVfaWQnXSk7DQogICAgICAgICAgICAgDQogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgJHFBcnIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAkdGVtcGxhdGVfaWQgPSAkcGFyYW1zWyd0ZW1wbGF0ZV9pZCddOw0KICB9DQogIGVsc2UNCiAgew0KICAgIC8vIGNyZWF0aW5nIGEgdGVtcGxhdGUNCiAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJw0KICAgICAgICAgICAgIC4gY21zX2RiX3ByZWZpeCgpDQogICAgICAgICAgICAgLiAnbW9kdWxlX2NhdGFsb2dfdGVtcGxhdGUgKGlkLCB0aXRsZSwgdHlwZV9pZCwgdGVtcGxhdGUpIFZBTFVFUyAoPyw/LD8sPyknOw0KICAgICAgICAgICAgIA0KICAgICR0ZW1wbGF0ZV9pZCA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfY2F0YWxvZ190ZW1wbGF0ZV9zZXEnKTsNCiAgICANCiAgICAkcUFyciA9IGFycmF5KCR0ZW1wbGF0ZV9pZCwNCiAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ3RpdGxlJ10sDQogICAgICAgICAgICAgICAgICAkcGFyYW1zWyd0eXBlX2lkJ10sDQogICAgICAgICAgICAgICAgICAkcGFyYW1zWyd0ZW1wbCddKTsNCiAgICANCiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkcUFycik7DQogIH0NCg0KICAjIHRoaXMgRE9FUyBjbGVhciBDYXRhbG9nZXIgY2FjaGVkIGZpbGVzICg/Pz8/PykNCiAgJHRoaXMtPmNsZWFyX2NhY2hlKCk7DQogIA0KICAvLyBmb3JjZSBhIGNhY2hlIGNsZWFyPyAjIG5vdGU6IGZyb20gdGhpcyBwb2ludCBvbiwgdGhpbmdzIHNlZW0gdG8gYmUgZHVwbGljYXRlZCAoSk0pDQogICR0aGlzLT5EZWxldGVUZW1wbGF0ZSgnY2F0YWxvZ18nIC4gJHRlbXBsYXRlX2lkKTsNCiAgLy8gYW5kIHJlY3JlYXRlDQogICR0aGlzLT5TZXRUZW1wbGF0ZSgnY2F0YWxvZ18nIC4gJHRlbXBsYXRlX2lkLCAkcGFyYW1zWyd0ZW1wbCddKTsNCg0KICAkcGFyYW1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygndGVtcGxhdGV1cGRhdGVkJyk7DQoNCiAgaWYgKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSkNCiAgew0KICAgICR0aGlzLT5Eb0FjdGlvbignZGVmYXVsdGFkbWluJywgJGlkLCAkcGFyYW1zKTsNCiAgICByZXR1cm47DQogIH0NCn0NCg0KJHR5cGVpZHMgPSBhcnJheSgpOw0KJHR5cGVpZHMgPSBjYXRUZW1wbGF0ZU9wZXJhdGlvbnM6OkdldENhdGFsb2dlclRlbXBsYXRlVHlwZXMoKTsNCiNlY2hvICc8LS0tLS0tPic7DQojcHJpbnRfcigkdHlwZWlkcyk7DQojZGllKCk7DQoNCi8qIG9sZCBtZXRob2QgSk0NCiRxdWVyeSA9ICdTRUxFQ1QgdHlwZV9pZCwgbmFtZSBGUk9NICcgLg0KY21zX2RiX3ByZWZpeCgpLiAnbW9kdWxlX2NhdGFsb2dfdGVtcGxhdGVfdHlwZSc7DQokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsNCndoaWxlICgkZGJyZXN1bHQgIT09IGZhbHNlICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpDQp7DQogICR0eXBlaWRzWyRyb3dbJ25hbWUnXV0gPSAkcm93Wyd0eXBlX2lkJ107DQp9DQoqLw0KaWYgKGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlX2lkJ10pKQ0Kew0KICAvLyBlZGl0aW5nIGEgdGVtcGxhdGUNCiAgDQogICRxdWVyeSA9ICdTRUxFQ1QgdGl0bGUsIHRlbXBsYXRlLCB0eXBlX2lkIEZST00gJyANCiAgICAgICAgICAgLiBjbXNfZGJfcHJlZml4KCkNCiAgICAgICAgICAgLiAnbW9kdWxlX2NhdGFsb2dfdGVtcGxhdGUgV0hFUkUgaWQ9Pyc7DQogIA0KICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRwYXJhbXNbJ3RlbXBsYXRlX2lkJ10pKTsNCiAgDQogICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7DQogICR0ZW1wbGF0ZWlkID0gJHBhcmFtc1sndGVtcGxhdGVfaWQnXTsNCiAgJHRpdGxlPSRyb3dbJ3RpdGxlJ107DQogICR0ZW1wbGF0ZT0kcm93Wyd0ZW1wbGF0ZSddOw0KICAkdHlwZV9pZD0kcm93Wyd0eXBlX2lkJ107DQogICR0aGlzLT5zbWFydHktPmFzc2lnbignb3AnLCAkdGhpcy0+TGFuZygnZWRpdHRlbXBsYXRlJykpOw0KfQ0KZWxzZQ0Kew0KICAvLyBhZGRpbmcgYSB0ZW1wbGF0ZQ0KICAkdGVtcGxhdGVpZCA9ICcnOw0KICAkdGl0bGU9Jyc7DQogICR0ZW1wbGF0ZT0nJzsNCiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdvcCcsICR0aGlzLT5MYW5nKCdhZGR0ZW1wbGF0ZScpKTsNCn0NCiAgICAgICAgDQokcXVlcnkgPSAiU0VMRUNUIGF0dHJpYnV0ZSwgYWxpYXMsIHR5cGVfaWQgRlJPTSAiDQogICAgICAgICAuIGNtc19kYl9wcmVmaXgoKQ0KICAgICAgICAgLiAibW9kdWxlX2NhdGFsb2dfYXR0ciI7DQogICAgICAgICANCiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KICAgICAgICANCiRhdHRycyA9ICc8aDM+Jy4kdGhpcy0+TGFuZygndGl0bGVfaXRlbV90ZW1wbGF0ZV92YXJzJykNCiAgICAgICAgIC4gJzwvaDM+eyR0aXRsZX0sIHskbm90ZXN9LCAnOw0KICAgICAgICAgDQokY2F0dHJzID0gJzxoMz4nDQogICAgICAgICAgLiAkdGhpcy0+TGFuZygndGl0bGVfY2F0X3RlbXBsYXRlX3ZhcnMnKQ0KICAgICAgICAgIC4gJzwvaDM+eyR0aXRsZX0sIHskbm90ZXN9LCB7JHByZXZ9LCB7JHByZXZ1cmx9LCB7JG5hdnN0cn0sIHskbmV4dH0sIHskbmV4dHVybH0sIHskaXRlbXN9LCAnOw0KICAgICAgICAgIA0KJHBjYXR0cnMgPSAnPGgzPicNCiAgICAgICAgICAgLiAkdGhpcy0+TGFuZygndGl0bGVfY2F0YWxvZ190ZW1wbGF0ZV92YXJzJykNCiAgICAgICAgICAgLiAnPC9oMz57JGl0ZW1zfSwgeyRhdHRybGlzdH0sIHskcm9vdF91cmx9LCB7JGltYWdlX3Jvb3R9LCAnOw0KICAgICAgICAgICANCiRjb21wYXR0cnMgPSAnPGgzPicNCiAgICAgICAgICAgICAuICR0aGlzLT5MYW5nKCd0aXRsZV9jb21wYXJlX3RlbXBsYXRlX3ZhcnMnKQ0KICAgICAgICAgICAgIC4gJzwvaDM+eyRpdGVtc30sIHskYXR0cmxpc3R9LCB7JHJvb3RfdXJsfSwgeyRpbWFnZV9yb290fSc7DQogICAgICAgICAgICAgDQokZmVhdHRycyA9ICc8aDM+Jw0KICAgICAgICAgICAuICR0aGlzLT5MYW5nKCd0aXRsZV9mZWF0dXJlX3RlbXBsYXRlX3ZhcnMnKQ0KICAgICAgICAgICAuICc8L2gzPnskaXRlbXN9LCB7JHJvb3RfdXJsfSwgeyRpbWFnZV9yb290fSc7DQoNCndoaWxlICgkZGJyZXN1bHQgIT09IGZhbHNlICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpDQp7DQogICRzYWZlYXR0ciA9IHN0cnRvbG93ZXIocHJlZ19yZXBsYWNlKCcvXFcvJywnJywkcm93WydhdHRyaWJ1dGUnXSkpOw0KICANCiAgaWYgKCRyb3dbJ3R5cGVfaWQnXSA9PSBDVEVNUExBVEVfSVRFTSkNCiAgew0KICAgICRhdHRycyAuPSAneyQnLiRzYWZlYXR0ci4nfSwgJzsNCiAgICBpZiAoJHJvd1snYWxpYXMnXSAhPSAnJykNCiAgICB7DQogICAgICAkYXR0cnMgLj0gJ3skJy4kcm93WydhbGlhcyddLid9LCAnOw0KICAgIH0NCiAgfQ0KICBlbHNlIGlmICgkcm93Wyd0eXBlX2lkJ10gPT0gQ1RFTVBMQVRFX0NBVEVHT1JZKQ0KICB7DQogICAgJGNhdHRycyAuPSAneyQnLiRzYWZlYXR0ci4nfSwgJzsNCiAgICANCiAgICBpZiAoJHJvd1snYWxpYXMnXSAhPSAnJykNCiAgICB7DQogICAgICAkY2F0dHJzIC49ICd7JCcuJHJvd1snYWxpYXMnXS4nfSwgJzsNCiAgICB9DQogIH0NCiAgZWxzZSBpZiAoJHJvd1sndHlwZV9pZCddID09IENURU1QTEFURV9DQVRBTE9HKQ0KICB7DQogICAgJHBjYXR0cnMgLj0gJ3skJy4kc2FmZWF0dHIuJ30sICc7DQogICAgDQogICAgaWYgKCRyb3dbJ2FsaWFzJ10gIT0gJycpDQogICAgew0KICAgICAgJHBjYXR0cnMgLj0gJ3skJy4kcm93WydhbGlhcyddLid9LCAnOw0KICAgIH0NCiAgfQ0KfQ0KDQokaW1hZ2VfY291bnQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaXRlbV9pbWFnZV9jb3VudCcsICcxJyk7DQoNCmZvciAoJGk9MTskaTw9JGltYWdlX2NvdW50OyRpKyspDQp7DQogICRhdHRycyAuPSAneyRpbWFnZV8nLiRpLidfdXJsfSwgeyRpbWFnZV90aHVtYl8nLiRpOw0KICAkYXR0cnMgLj0gJ191cmx9LCB7JHNyY19pbWFnZV8nLiRpLidfdXJsfSwgJzsNCn0NCg0KJGF0dHJzIC49ICd7JGltYWdlX3VybF9hcnJheX0sICc7DQokYXR0cnMgLj0gJ3skc3JjX2ltYWdlX3VybF9hcnJheX0sICc7DQokYXR0cnMgLj0gJ3skaW1hZ2VfdGh1bWJfdXJsX2FycmF5fSc7DQokZmlsZV9jb3VudCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2ZpbGVfY291bnQnLCAwKTsNCg0KZm9yICgkaT0xOyRpPD0kZmlsZV9jb3VudDskaSsrKQ0Kew0KICAkYXR0cnMgLj0gJ3skZmlsZV9jb3VudH0sIHskZmlsZV8nLiRpLidfbmFtZX0sIHskZmlsZV8nLiRpLidfdXJsfSwgeyRmaWxlXycuJGk7DQogICRhdHRycyAuPSAnX2V4dH0sICc7DQp9DQoNCiRhdHRycyAuPSAneyRmaWxlX3VybF9hcnJheX0sIHskZmlsZV9uYW1lX2FycmF5fSwgJzsNCiRhdHRycyAuPSAneyRmaWxlX2V4dF9hcnJheX0sIHskcm9vdF91cmx9LCB7JGltYWdlX3Jvb3R9JzsNCiRhdHRycyA9IHJ0cmltKCRhdHRycywnLCAnKTsNCg0KJGltYWdlX2NvdW50ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NhdGVnb3J5X2ltYWdlX2NvdW50JywgJzEnKTsNCg0KZm9yICgkaT0xOyRpPD0kaW1hZ2VfY291bnQ7JGkrKykNCnsNCiAgJGNhdHRycyAuPSAneyRpbWFnZV8nLiRpLidfdXJsfSwgeyRpbWFnZV90aHVtYl8nLiRpOw0KICAkY2F0dHJzIC49ICdfdXJsfSwgeyRzcmNfaW1hZ2VfJy4kaS4nX3VybH0sICc7DQp9DQoNCiRjYXR0cnMgLj0gJ3skaW1hZ2VfdXJsX2FycmF5fSwgJzsNCiRjYXR0cnMgLj0gJ3skc3JjX2ltYWdlX3VybF9hcnJheX0sICc7DQokY2F0dHJzIC49ICd7JGltYWdlX3RodW1iX3VybF9hcnJheX0sIHskcm9vdF91cmx9LCB7JGltYWdlX3Jvb3R9JzsNCiRjYXR0cnMgPSBydHJpbSgkY2F0dHJzLCcsICcpOw0KJGNhdHRycyAuPSAnPGgzPiRpdGVtcyBhcnJheSBjb250ZW50czo8L2gzPic7DQokY2F0dHJzIC49ICckaXRlbXNbXS50aXRsZSwgJGl0ZW1zW10ubGluaywgJGl0ZW1zW10uaW1hZ2UsICRpdGVtc1tdLmNhdCwgJGl0ZW1zW10uPGk+YXR0cmlidXRlX25hbWU8L2k+LCAkaXRlbXNbXS48aT5hdHRyaWJ1dGVfYWxpYXM8L2k+JzsNCiRwY2F0dHJzIC49ICc8aDM+JGl0ZW1zIGFycmF5IGNvbnRlbnRzOjwvaDM+JzsNCiRwY2F0dHJzIC49ICckaXRlbXNbXS50aXRsZSwgJGl0ZW1zW10ubGluaywgJGl0ZW1zW10uaW1hZ2UsICRpdGVtc1tdLmNhdCwgJGl0ZW1zW10uPGk+YXR0cmlidXRlX25hbWU8L2k+LCAkaXRlbXNbXS48aT5hdHRyaWJ1dGVfYWxpYXM8L2k+JzsNCiRwY2F0dHJzIC49ICc8aDM+JGF0dHJsaXN0IGFycmF5IGNvbnRlbnRzOjwvaDM+JzsNCiRwY2F0dHJzIC49ICckYXR0cmxpc3RbXS0+YXR0ciwgJGF0dHJsaXN0W10tPnNhZmUnOw0KJGNvbXBhdHRycyAuPSAnPGgzPiRpdGVtcyBhcnJheSBjb250ZW50czo8L2gzPic7DQokY29tcGF0dHJzIC49ICckaXRlbXNbXS50aXRsZSwgJGl0ZW1zW10ubGluaywgJGl0ZW1zW10uaW1hZ2UsICRpdGVtc1tdLjxpPmF0dHJpYnV0ZV9uYW1lPC9pPiwgJGl0ZW1zW10uPGk+YXR0cmlidXRlX2FsaWFzPC9pPic7DQokY29tcGF0dHJzIC49ICc8aDM+JGF0dHJsaXN0IGFycmF5IGNvbnRlbnRzOjwvaDM+JzsNCiRjb21wYXR0cnMgLj0gJyRhdHRybGlzdFtdLT5hdHRyLCAkYXR0cmxpc3RbXS0+c2FmZSc7DQokZmVhdHRycyAuPSAnPGgzPiRpdGVtcyBhcnJheSBjb250ZW50czo8L2gzPic7DQokZmVhdHRycyAuPSAnJGl0ZW1zW10udGl0bGUsICRpdGVtc1tdLmxpbmssICRpdGVtc1tdLmltYWdlLCAkaXRlbXNbXS5jYXQsICRpdGVtc1tdLjxpPmF0dHJpYnV0ZV9uYW1lPC9pPiwgJGl0ZW1zW10uPGk+YXR0cmlidXRlX2FsaWFzPC9pPic7DQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQovKioNCiogU21hcnR5IHN0dWZmDQoqLw0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi8vIEdpdmUgdGhlIGZvcm0gaWQgdG8gc21hcnR5DQokc21hcnR5LT5hc3NpZ24oJ2Zvcm1pZCcsICRpZCk7DQoNCiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdzdWJtaXRwcmVmcycsICRyZXR1cm5pZCkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAnU3VibWl0JykpOw0KDQokdGFiX2hlYWRlcnMgPSAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCkNCiAgICAgICAgICAgICAgIC4gJHRoaXMtPlNldFRhYkhlYWRlcignaXRlbV9wYWdlX3RlbXBsYXRlcycsICAgICAgICAgJHRoaXMtPkxhbmcoJ2l0ZW1fcGFnZV90ZW1wbGF0ZXNfdGFiJykpDQogICAgICAgICAgICAgICAuICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2NhdGVnb3J5X3BhZ2VfdGVtcGxhdGVzJywgICAgICR0aGlzLT5MYW5nKCdjYXRlZ29yeV9wYWdlX3RlbXBsYXRlc190YWInKSkNCiAgICAgICAgICAgICAgIC4gJHRoaXMtPlNldFRhYkhlYWRlcignaXRlbV9wYWdlX3RlbXBsYXRlcycsICAgICAgICAgJHRoaXMtPkxhbmcoJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX3RhYicpKQ0KICAgICAgICAgICAgICAgLiAkdGhpcy0+U2V0VGFiSGVhZGVyKCdpdGVtX3BhZ2VfdGVtcGxhdGVzJywgICAgICAgICAkdGhpcy0+TGFuZygndGl0bGVfcHJpbnRhYmxlX3RhYicpKQ0KICAgICAgICAgICAgICAgLiAkdGhpcy0+U2V0VGFiSGVhZGVyKCdpdGVtX3BhZ2VfdGVtcGxhdGVzJywgICAgICAgICAkdGhpcy0+TGFuZygndGl0bGVfaW1hZ2VfdGFiJykpDQogICAgICAgICAgICAgICAuICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2l0ZW1fcGFnZV90ZW1wbGF0ZXMnLCAgICAgICAgICR0aGlzLT5MYW5nKCd0aXRsZV9wYXRoX3RhYicpKQ0KICAgICAgICAgICAgICAgLiAkdGhpcy0+RW5kVGFiSGVhZGVycygpDQogICAgICAgICAgICAgICAuICR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKTsNCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0YWJfaGVhZGVycycsICR0YWJfaGVhZGVycyk7DQogICAgICAgICAgICAgICAgICAgICAgDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZF90YWInLCAkdGhpcy0+RW5kVGFiKCkpOw0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RhYl9mb290ZXJzJywgJHRoaXMtPkVuZFRhYkNvbnRlbnQoKSk7DQoNCiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfaXRlbV9pbWFnZV90YWInLCAkdGhpcy0+U3RhcnRUYWIoJ2l0ZW1pbWFnZScpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfY2F0ZWdvcnlfaW1hZ2VfdGFiJywgJHRoaXMtPlN0YXJ0VGFiKCdjYXRlZ29yeWltYWdlJykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9wcmludGFibGVfdGFiJywgJHRoaXMtPlN0YXJ0VGFiKCdwcmludGFibGUnKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X2ZpbGVfdGFiJywgJHRoaXMtPlN0YXJ0VGFiKCdmaWxlJykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9wYXRoX3RhYicsICR0aGlzLT5TdGFydFRhYigncGF0aCcpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfaW1hZ2VfdGFiJywgJHRoaXMtPlN0YXJ0VGFiKCdpbWFnZScpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfaXRlbV9pbWFnZV9jb3VudCcsICR0aGlzLT5MYW5nKCd0aXRsZV9pdGVtX2ltYWdlX2NvdW50JykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV9pdGVtX2ZpbGVfY291bnQnLCAkdGhpcy0+TGFuZygndGl0bGVfaXRlbV9maWxlX2NvdW50JykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV9pdGVtX2ZpbGVfdHlwZXMnLCAkdGhpcy0+TGFuZygndGl0bGVfaXRlbV9maWxlX3R5cGVzJykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV9mbHVzaF9jYXRzJywgJHRoaXMtPkxhbmcoJ3RpdGxlX2ZsdXNoX2NhdHMnKSk7DQoNCiAgICAgIA0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2VkaXR0ZW1wbCcsICRyZXR1cm5pZCkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ3RlbXBsYXRlX2lkJywgJHRlbXBsYXRlaWQpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfdGl0bGUnLCR0aGlzLT5MYW5nKCd0aXRsZV90aXRsZScpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfdGVtcGxhdGUnLCR0aGlzLT5MYW5nKCd0aXRsZV90ZW1wbGF0ZScpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfdGVtcGxhdGVfdHlwZScsJHRoaXMtPkxhbmcoJ3RpdGxlX3RlbXBsYXRlX3R5cGUnKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2F2YWlsX2F0dHJzJywkdGhpcy0+TGFuZygndGl0bGVfYXZhaWxfYXR0cnMnKSk7DQoNCmlmIChpc3NldCgkdHlwZV9pZCkpDQp7DQogIGlmICgkdHlwZV9pZCA9PSBDVEVNUExBVEVfSVRFTSkNCiAgew0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2F2YWlsX2F0dHJzJywkYXR0cnMpOw0KICB9DQogIGVsc2UgaWYgKCR0eXBlX2lkID09IENURU1QTEFURV9DQVRFR09SWSkNCiAgew0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignYXZhaWxfYXR0cnMnLCRjYXR0cnMpOyAgICANCiAgfQ0KICBlbHNlIGlmICgkdHlwZV9pZCA9PSBDVEVNUExBVEVfQ0FUQUxPRykNCiAgew0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignYXZhaWxfYXR0cnMnLCRwY2F0dHJzKTsgICAgDQogIH0NCiAgZWxzZSBpZiAoJHR5cGVfaWQgPT0gQ1RFTVBMQVRFX0NPTVBBUklTT04pDQogIHsNCiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhdmFpbF9hdHRycycsJGNvbXBhdHRycyk7ICAgIA0KICB9DQogIGVsc2UgaWYgKCR0eXBlX2lkID09IENURU1QTEFURV9GRUFUVVJFKQ0KICB7DQogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhdmFpbF9hdHRycycsJGZlYXR0cnMpOyAgICANCiAgfQ0KfQ0KZWxzZQ0Kew0KICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2F2YWlsX2F0dHJzJywgJGF0dHJzIC4gJywgJyAuICRjYXR0cnMgLiAnLCAnIC4gJGZlYXR0cnMpOw0KfQ0KDQovLyAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2F2YWlsX2ltYXR0cnMnLCR0aGlzLT5MYW5nKCd0aXRsZV9hdmFpbF9pbWF0dHJzJykpOw0KLy8gICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhdmFpbF9pbWF0dHJzJywkaW1hdHRycyk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3RlbXBsYXRlX3R5cGUnLCR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3R5cGVfaWQnLCAkdHlwZWlkcywgLTEsIGlzc2V0KCR0eXBlX2lkKT8kdHlwZV9pZDonJykpOw0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLCRwYXJhbXNbJ21lc3NhZ2UnXSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3RpdGxlJywkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3RpdGxlJywgJHRpdGxlLCAyMCwgMjU1KSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3RlbXBsYXRlJywkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoZmFsc2UsICRpZCwgJHRlbXBsYXRlLCAndGVtcGwnKSk7DQoNCiR0aGlzLT5zbWFydHktPmFzc2lnbignc3VibWl0JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsIGxhbmcoJ3N1Ym1pdCcpKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2FwcGx5JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2FwcGx5JywgbGFuZygnYXBwbHknKSkpOw0KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdlZGl0dGVtcGxhdGUudHBsJyk7DQoNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/admin_edittempl_old.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICggIWlzX29iamVjdCggY21zbXMoKSApICkgZXhpdDsNCg0KJHR5cGVfaWQgPSAkcGFyYW1zWyd0eXBlX2lkJ107DQoNCmlmIChpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgfHwgaXNzZXQoJHBhcmFtc1snYXBwbHknXSkpDQp7DQogIGlmICggIWVtcHR5KCRwYXJhbXNbJ3RlbXBsYXRlX2lkJ10pICkNCiAgew0KICAgIC8vIHVwZGF0aW5nIGEgdGVtcGxhdGUNCiAgICBpZiAoICFjYXRUZW1wbGF0ZU9wZXJhdGlvbnM6OlNhdmVUZW1wbGF0ZUNoYW5nZXMoJHBhcmFtcykgKQ0KICAgIHsNCiAgICAgICRwYXJhbXNbJ2VyciddID0gJ0VSUk9SIFNBVklORyBDSEFOR0VTJzsgLy8gVE9ETyB0YXNrOiBhZGQgYSBsYW5nIGVudHJ5DQogICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAkdGVtcGxhdGVfaWQgPSAkcGFyYW1zWyd0ZW1wbGF0ZV9pZCddOw0KICB9DQogIGVsc2UNCiAgew0KICAgIC8vIGNyZWF0aW5nIGEgdGVtcGxhdGUNCiAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJw0KICAgICAgICAgICAgIC4gY21zX2RiX3ByZWZpeCgpDQogICAgICAgICAgICAgLiAnbW9kdWxlX2NhdGFsb2dfdGVtcGxhdGUgKGlkLCB0aXRsZSwgdHlwZV9pZCwgdGVtcGxhdGUpIFZBTFVFUyAoPyw/LD8sPyknOw0KICAgICAgICAgICAgIA0KICAgICR0ZW1wbGF0ZV9pZCA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfY2F0YWxvZ190ZW1wbGF0ZV9zZXEnKTsNCiAgICANCiAgICAkcUFyciA9IGFycmF5KCR0ZW1wbGF0ZV9pZCwNCiAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ3RpdGxlJ10sDQogICAgICAgICAgICAgICAgICAkcGFyYW1zWyd0eXBlX2lkJ10sDQogICAgICAgICAgICAgICAgICAkcGFyYW1zWyd0ZW1wbCddKTsNCiAgICANCiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkcUFycik7DQogIH0NCg0KICAvLyBmb3JjZSBhIGNhY2hlIGNsZWFyPw0KICAkdGhpcy0+RGVsZXRlVGVtcGxhdGUoJ2NhdGFsb2dfJyAuICR0ZW1wbGF0ZV9pZCk7DQogIC8vIGFuZCByZWNyZWF0ZQ0KICAkdGhpcy0+U2V0VGVtcGxhdGUoJ2NhdGFsb2dfJyAuICR0ZW1wbGF0ZV9pZCwgJHBhcmFtc1sndGVtcGwnXSk7DQoNCiAgJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ3RlbXBsYXRldXBkYXRlZCcpOw0KDQogIGlmIChpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkpDQogIHsNCiAgICAkdGhpcy0+RG9BY3Rpb24oJ2RlZmF1bHRhZG1pbicsICRpZCwgJHBhcmFtcyk7DQogICAgcmV0dXJuOw0KICB9DQp9DQoNCiR0eXBlaWRzID0gYXJyYXkoKTsNCiR0eXBlaWRzID0gY2F0VGVtcGxhdGVPcGVyYXRpb25zOjpHZXRDYXRhbG9nZXJUZW1wbGF0ZVR5cGVzKCk7DQoNCmlmIChpc3NldCgkcGFyYW1zWyd0ZW1wbGF0ZV9pZCddKSkNCnsNCiAgLy8gZWRpdGluZyBhIHRlbXBsYXRlICANCiAgJHJvdyA9IGNhdFRlbXBsYXRlT3BlcmF0aW9uczo6R2V0VGVtcGxhdGVGcm9tSUQoJHBhcmFtc1sndGVtcGxhdGVfaWQnXSk7DQogICR0ZW1wbGF0ZWlkID0gJHBhcmFtc1sndGVtcGxhdGVfaWQnXTsNCiAgJHRpdGxlPSRyb3dbJ3RpdGxlJ107DQogICR0ZW1wbGF0ZT0kcm93Wyd0ZW1wbGF0ZSddOw0KICAkdHlwZV9pZD0kcm93Wyd0eXBlX2lkJ107DQogICR0aGlzLT5zbWFydHktPmFzc2lnbignb3AnLCAkdGhpcy0+TGFuZygnZWRpdHRlbXBsYXRlJykpOw0KfQ0KZWxzZQ0Kew0KICAvLyBhZGRpbmcgYSB0ZW1wbGF0ZQ0KICAkdGVtcGxhdGVpZCA9ICcnOw0KICAkdGl0bGU9Jyc7DQogICR0ZW1wbGF0ZT0nJzsNCiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdvcCcsICR0aGlzLT5MYW5nKCdhZGR0ZW1wbGF0ZScpKTsNCn0NCiAgIA0KDQppZiAoaXNzZXQoJHR5cGVfaWQpKSANCnsNCiAgJGF0dHJzID0gYXJyYXkoKTsNCg0KICAkYXR0cnNbJ2ZpeGVkJ10gPSBjYXRUZW1wbGF0ZU9wZXJhdGlvbnM6OkdldEF0dExpc3RGcm9tVHlwZSggJHBhcmFtc1sndHlwZV9pZCddKTsNCiAgJGF0dHJzWyd1c2VyJ10gPSAgY2F0VGVtcGxhdGVPcGVyYXRpb25zOjpHZXRVc2VyQXR0TGlzdCggJHBhcmFtc1sndHlwZV9pZCddKTsNCg0KICAkaW1hZ2VfY291bnQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaXRlbV9pbWFnZV9jb3VudCcsICcxJyk7DQoNCiAgaWYgKCRpbWFnZV9jb3VudCA+IDApDQogIHsNCiAgICAkYXR0cnNbJ2ltYWdlcyddID0gYXJyYXkoKTsNCg0KICAgIGZvciAoJGk9MTskaTw9JGltYWdlX2NvdW50OyRpKyspDQogICAgew0KICAgICAgJGN1cnJJbWcgPSBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgICAgICdpbWFnZV91cmwnICAgICAgID0+ICd7JGltYWdlXycgLiAkaSAuICdfdXJsfScsDQogICAgICAgICAgICAgICAgICAgICAgICAnaW1hZ2VfdGh1bWJfdXJsJyA9PiAneyRpbWFnZV90aHVtYl8nIC4gJGkgLiAnX3VybH0nLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ2ltYWdlX3NyY191cmwnICAgPT4gJ3skc3JjX2ltYWdlXycgLiAkaSAuICdfdXJsfScNCiAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgDQogICAgICBhcnJheV9wdXNoKCRhdHRyc1snaW1hZ2VzJ10gLCAkY3VyckltZyk7DQogICAgfQ0KDQogICAgYXJyYXlfcHVzaCgkYXR0cnNbJ2ZpeGVkJ10gLCAneyRpbWFnZV91cmxfYXJyYXl9Jyk7DQogICAgYXJyYXlfcHVzaCgkYXR0cnNbJ2ZpeGVkJ10sICd7JHNyY19pbWFnZV91cmxfYXJyYXl9Jyk7DQogICAgYXJyYXlfcHVzaCgkYXR0cnNbJ2ZpeGVkJ10gLCAneyRpbWFnZV90aHVtYl91cmxfYXJyYXl9Jyk7DQoNCiAgfSAgDQoNCiAgJGZpbGVfY291bnQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaXRlbV9maWxlX2NvdW50JywgMCk7DQoNCiAgaWYgKCRmaWxlX2NvdW50ID4gMCkNCiAgew0KICAgICRhdHRyc1snZmlsZXMnXSA9IGFycmF5KCk7DQogICAgDQogICAgZm9yICgkaT0xOyRpPD0kZmlsZV9jb3VudDskaSsrKQ0KICAgIHsNCiAgICAgICRjdXJyRmlsZSA9IGFycmF5KA0KICAgICAgICAgICAgICAgICAgICAnZmlsZW5hbWUnICA9PiAneyRmaWxlXycuJGkuJ19uYW1lfScsDQogICAgICAgICAgICAgICAgICAgICd1cmwnICAgICAgID0+ICd7JGZpbGVfJy4kaS4nX3VybH0nLA0KICAgICAgICAgICAgICAgICAgICAnZXh0JyAgICAgICA9PiAneyRmaWxlXycuJGkuICdfZXh0fScNCiAgICAgICAgICAgICAgICAgICk7DQogICAgICBhcnJheV9wdXNoKCAkYXR0cnNbJ2ZpbGVzJ10gLCAkY3VyckZpbGUpOw0KICAgIH0NCg0KICAgIGFycmF5X3B1c2goJGF0dHJzWydmaXhlZCddICwgJ3skZmlsZV9jb3VudH0nKTsNCiAgICBhcnJheV9wdXNoKCRhdHRyc1snZml4ZWQnXSAsICd7JGZpbGVfbmFtZV9hcnJheScpOw0KICAgIGFycmF5X3B1c2goJGF0dHJzWydmaXhlZCddICwgJ3skZmlsZV91cmxfYXJyYXl9Jyk7DQogICAgYXJyYXlfcHVzaCgkYXR0cnNbJ2ZpeGVkJ10gLCAneyRmaWxlX2V4dF9hcnJheX0nKTsNCiAgICBhcnJheV9wdXNoKCRhdHRyc1snZml4ZWQnXSAsICd7JHJvb3RfdXJsfScpOw0KICAgIGFycmF5X3B1c2goJGF0dHJzWydmaXhlZCddICwgJ3skaW1hZ2Vfcm9vdH0nKTsNCiAgfQ0KICANCiAgaWYgKGlzc2V0KCR0eXBlX2lkKSkNCiAgeyANCiAgICBzd2l0Y2ggKCR0eXBlX2lkKQ0KICAgIHsNCiAgICAgIGNhc2UgQ1RFTVBMQVRFX0lURU06DQogICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfdGVtcGxhdGVfdmFycycsICR0aGlzLT5MYW5nKCd0aXRsZV9pdGVtX3RlbXBsYXRlX3ZhcnMnKSApOw0KICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdhdmFpbF9hdHRycycsICRhdHRycyk7DQogICAgICBicmVhazsgIA0KICAgICAgDQogICAgICBjYXNlIENURU1QTEFURV9DQVRFR09SWTogIA0KICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX3RlbXBsYXRlX3ZhcnMnLCAkdGhpcy0+TGFuZygndGl0bGVfY2F0X3RlbXBsYXRlX3ZhcnMnKSApOw0KICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdhdmFpbF9hdHRycycsICRjYXR0cnMpOyAgDQogICAgICBicmVhazsNCiAgICAgIA0KICAgICAgY2FzZSBDVEVNUExBVEVfQ0FUQUxPRzogDQogICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfdGVtcGxhdGVfdmFycycsICR0aGlzLT5MYW5nKCd0aXRsZV9jYXRhbG9nX3RlbXBsYXRlX3ZhcnMnKSApOw0KICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdhdmFpbF9hdHRycycsICRwY2F0dHJzKTsgICAgDQogICAgICBicmVhazsNCiAgICAgIA0KICAgICAgY2FzZSBDVEVNUExBVEVfQ09NUEFSSVNPTjoNCiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV90ZW1wbGF0ZV92YXJzJywgJHRoaXMtPkxhbmcoJ3RpdGxlX2NvbXBhcmVfdGVtcGxhdGVfdmFycycpICk7DQogICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2F2YWlsX2F0dHJzJywgJGNvbXBhdHRycyk7ICAgDQogICAgICBicmVhazsNCiAgICAgIA0KICAgICAgY2FzZSBDVEVNUExBVEVfRkVBVFVSRToNCiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV90ZW1wbGF0ZV92YXJzJywgJHRoaXMtPkxhbmcoJ3RpdGxlX2ZlYXR1cmVfdGVtcGxhdGVfdmFycycpICk7DQogICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2F2YWlsX2F0dHJzJywgJGZlYXR0cnMpOyAgICANCiAgICAgIGJyZWFrOw0KICAgIH0NCiAgfQ0KICBlbHNlIA0KICB7DQogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhdmFpbF9hdHRycycsJGF0dHJzLicsICcuJGNhdHRycy4nLCAnLiRmZWF0dHJzKTsgIA0KICB9ICAgICANCg0KLyoNCiRhdHRycyA9ICd7JHRpdGxlfSwgeyRub3Rlc30sICc7DQogICAgICAgICANCiRjYXR0cnMgPSAneyR0aXRsZX0sIHskbm90ZXN9LCB7JHByZXZ9LCB7JHByZXZ1cmx9LCB7JG5hdnN0cn0sIHskbmV4dH0sIHskbmV4dHVybH0sIHskaXRlbXN9LCAnOw0KICAgICAgICAgIA0KJHBjYXR0cnMgPSAneyRpdGVtc30sIHskYXR0cmxpc3R9LCB7JHJvb3RfdXJsfSwgeyRpbWFnZV9yb290fSwgJzsNCiAgICAgICAgICAgDQokY29tcGF0dHJzID0gJ3skaXRlbXN9LCB7JGF0dHJsaXN0fSwgeyRyb290X3VybH0sIHskaW1hZ2Vfcm9vdH0nOw0KICAgICAgICAgICAgIA0KJGZlYXR0cnMgPSAneyRpdGVtc30sIHskcm9vdF91cmx9LCB7JGltYWdlX3Jvb3R9JzsNCiovDQoNCg0KDQoNCi8qDQokaW1hZ2VfY291bnQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY2F0ZWdvcnlfaW1hZ2VfY291bnQnLCAnMScpOw0KDQpmb3IgKCRpPTE7JGk8PSRpbWFnZV9jb3VudDskaSsrKQ0Kew0KICAkY2F0dHJzIC49ICd7JGltYWdlXycuJGkuJ191cmx9LCB7JGltYWdlX3RodW1iXycuJGk7DQogICRjYXR0cnMgLj0gJ191cmx9LCB7JHNyY19pbWFnZV8nLiRpLidfdXJsfSwgJzsNCn0NCg0KJGNhdHRycyAuPSAneyRpbWFnZV91cmxfYXJyYXl9LCAnOw0KJGNhdHRycyAuPSAneyRzcmNfaW1hZ2VfdXJsX2FycmF5fSwgJzsNCiRjYXR0cnMgLj0gJ3skaW1hZ2VfdGh1bWJfdXJsX2FycmF5fSwgeyRyb290X3VybH0sIHskaW1hZ2Vfcm9vdH0nOw0KJGNhdHRycyA9IHJ0cmltKCRjYXR0cnMsJywgJyk7DQokY2F0dHJzIC49ICc8aDM+JGl0ZW1zIGFycmF5IGNvbnRlbnRzOjwvaDM+JzsNCiRjYXR0cnMgLj0gJyRpdGVtc1tdLnRpdGxlLCAkaXRlbXNbXS5saW5rLCAkaXRlbXNbXS5pbWFnZSwgJGl0ZW1zW10uY2F0LCAkaXRlbXNbXS48aT5hdHRyaWJ1dGVfbmFtZTwvaT4sICRpdGVtc1tdLjxpPmF0dHJpYnV0ZV9hbGlhczwvaT4nOw0KJHBjYXR0cnMgLj0gJzxoMz4kaXRlbXMgYXJyYXkgY29udGVudHM6PC9oMz4nOw0KJHBjYXR0cnMgLj0gJyRpdGVtc1tdLnRpdGxlLCAkaXRlbXNbXS5saW5rLCAkaXRlbXNbXS5pbWFnZSwgJGl0ZW1zW10uY2F0LCAkaXRlbXNbXS48aT5hdHRyaWJ1dGVfbmFtZTwvaT4sICRpdGVtc1tdLjxpPmF0dHJpYnV0ZV9hbGlhczwvaT4nOw0KJHBjYXR0cnMgLj0gJzxoMz4kYXR0cmxpc3QgYXJyYXkgY29udGVudHM6PC9oMz4nOw0KJHBjYXR0cnMgLj0gJyRhdHRybGlzdFtdLT5hdHRyLCAkYXR0cmxpc3RbXS0+c2FmZSc7DQokY29tcGF0dHJzIC49ICc8aDM+JGl0ZW1zIGFycmF5IGNvbnRlbnRzOjwvaDM+JzsNCiRjb21wYXR0cnMgLj0gJyRpdGVtc1tdLnRpdGxlLCAkaXRlbXNbXS5saW5rLCAkaXRlbXNbXS5pbWFnZSwgJGl0ZW1zW10uPGk+YXR0cmlidXRlX25hbWU8L2k+LCAkaXRlbXNbXS48aT5hdHRyaWJ1dGVfYWxpYXM8L2k+JzsNCiRjb21wYXR0cnMgLj0gJzxoMz4kYXR0cmxpc3QgYXJyYXkgY29udGVudHM6PC9oMz4nOw0KJGNvbXBhdHRycyAuPSAnJGF0dHJsaXN0W10tPmF0dHIsICRhdHRybGlzdFtdLT5zYWZlJzsNCiRmZWF0dHJzIC49ICc8aDM+JGl0ZW1zIGFycmF5IGNvbnRlbnRzOjwvaDM+JzsNCiRmZWF0dHJzIC49ICckaXRlbXNbXS50aXRsZSwgJGl0ZW1zW10ubGluaywgJGl0ZW1zW10uaW1hZ2UsICRpdGVtc1tdLmNhdCwgJGl0ZW1zW10uPGk+YXR0cmlidXRlX25hbWU8L2k+LCAkaXRlbXNbXS48aT5hdHRyaWJ1dGVfYWxpYXM8L2k+JzsNCiovDQogICAgICAgIA0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2VkaXR0ZW1wbCcsICRyZXR1cm5pZCkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ3RlbXBsYXRlX2lkJywgJHRlbXBsYXRlaWQpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfdGl0bGUnLCR0aGlzLT5MYW5nKCd0aXRsZV90aXRsZScpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfdGVtcGxhdGUnLCR0aGlzLT5MYW5nKCd0aXRsZV90ZW1wbGF0ZScpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfdGVtcGxhdGVfdHlwZScsJHRoaXMtPkxhbmcoJ3RpdGxlX3RlbXBsYXRlX3R5cGUnKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2F2YWlsX2F0dHJzJywkdGhpcy0+TGFuZygndGl0bGVfYXZhaWxfYXR0cnMnKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2ltYWdlX2NvdW50JywgJGltYWdlX2NvdW50KTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignZmlsZV9jb3VudCcsICRmaWxlX2NvdW50KTsNCg0KDQoNCi8vICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfYXZhaWxfaW1hdHRycycsJHRoaXMtPkxhbmcoJ3RpdGxlX2F2YWlsX2ltYXR0cnMnKSk7DQovLyAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdhdmFpbF9pbWF0dHJzJywkaW1hdHRycyk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3RlbXBsYXRlX3R5cGUnLCR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3R5cGVfaWQnLCAkdHlwZWlkcywgLTEsIGlzc2V0KCR0eXBlX2lkKT8kdHlwZV9pZDonJykpOw0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLCRwYXJhbXNbJ21lc3NhZ2UnXSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3RpdGxlJywkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3RpdGxlJywgJHRpdGxlLCAyMCwgMjU1KSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3RlbXBsYXRlJywkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoZmFsc2UsICRpZCwgJHRlbXBsYXRlLCAndGVtcGwnKSk7DQoNCiR0aGlzLT5zbWFydHktPmFzc2lnbignc3VibWl0JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsIGxhbmcoJ3N1Ym1pdCcpKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2FwcGx5JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2FwcGx5JywgbGFuZygnYXBwbHknKSkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnY2FuY2VsJywgbGFuZygnY2FuY2VsJykpKTsNCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdHRlbXBsYXRlLnRwbCcpOw0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/Cataloger.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENhdGFsb2dlciAtIGJ1aWxkIGEgY2F0YWxvZyBvciBwb3J0Zm9saW8gb2Ygc3R1ZmYKIyBWZXJzaW9uOiAxLjAKIwojIENvcHlyaWdodCAoYykgMjAxMiwgRmVybmFuZG8gTW9yZ2FkbyAoSm9Nb3JnKSBqb21vcmcubW9yZ0BnbWFpbC5jb20KIyBDb3B5cmlnaHQgKGMpIDIwMDYsIFNhbXVlbCBHb2xkc3RlaW4gPHNqZ0BjbXNtb2R1bGVzLmNvbT4KIyBGb3IgSW5mb3JtYXRpb24sIFN1cHBvcnQsIEJ1ZyBSZXBvcnRzLCBldGMsIHBsZWFzZSB2aXNpdCB0aGUKIyBDTVMgTWFkZSBTaW1wbGUgRm9yZ2UgYXQgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA2IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRlZmluZSgnQ1RFTVBMQVRFX0lURU0nLCAgICAgICAgMSk7CmRlZmluZSgnQ1RFTVBMQVRFX0NBVEVHT1JZJywgICAgMik7CmRlZmluZSgnQ1RFTVBMQVRFX0NBVEFMT0cnLCAgICAgMyk7CmRlZmluZSgnQ1RFTVBMQVRFX0NPTVBBUklTT04nLCAgNCk7CmRlZmluZSgnQ1RFTVBMQVRFX0ZFQVRVUkUnLCAgICAgNSk7CgpjbGFzcyBDYXRhbG9nZXIgZXh0ZW5kcyBDTVNNb2R1bGUKewogICMgZGVwcmVjYXRlZAogIHZhciAkYXR0cnMgPSBhcnJheSgpOwogIAogIHZhciAkZmV0Y2hlZCA9IGZhbHNlOwogIHZhciAkc2hvd01pc3NpbmcgPSAnJzsKCiAgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogIHsgCiAgICAkY250X3R5cGVzID0gYXJyYXkoJ0NhdGFsb2cgSXRlbScsICdDYXRhbG9nIENhdGVnb3J5JywgJ0NhdGFsb2cgUHJpbnRhYmxlJyk7CiAgICAKICAgICRwYXRoID0gY21zX2pvaW5fcGF0aCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5HZXRNb2R1bGVQYXRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGliJwogICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICRjb250ZW50b3BzID0gY21zbXMoKS0+R2V0Q29udGVudE9wZXJhdGlvbnMoKTsKCiAgICBmb3JlYWNoKCRjbnRfdHlwZXMgYXMgJGZyaWVuZGx5bmFtZSkKICAgIHsKICAgICAgJHR5cGUgPSBzdHJfcmVwbGFjZSgnICcsICcnLCAkZnJpZW5kbHluYW1lKTsKICAgICAgJGZpbGUgPSAnY2xhc3MuJyAuICR0eXBlIC4gJy5waHAnOwogICAgICAkZm4gPSBjbXNfam9pbl9wYXRoKCRwYXRoLCAkZmlsZSk7CiAgICAgICRvYmogPSBuZXcgQ21zQ29udGVudFR5cGVQbGFjZWhvbGRlcigpOwogICAgICAkb2JqLT5jbGFzcyA9ICR0eXBlOwogICAgICAkb2JqLT50eXBlID0gc3RydG9sb3dlcigkdHlwZSk7CiAgICAgICRvYmotPmZpbGVuYW1lID0gJGZuOwogICAgICAkb2JqLT5sb2FkZWQgPSBmYWxzZTsKICAgICAgJG9iai0+ZnJpZW5kbHluYW1lID0gKCRmcmllbmRseW5hbWUgIT0gJycgPyAkZnJpZW5kbHluYW1lIDogJHR5cGUpOwogICAgICAkcmVzdWx0ID0gJGNvbnRlbnRvcHMtPnJlZ2lzdGVyX2NvbnRlbnRfdHlwZSgkb2JqKTsgLy8gVE9ETyBlcnJvciBoYW5kbGluZwogICAgfQogICAgCiAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7IAogIH0KCiAgZnVuY3Rpb24gR2V0TmFtZSgpCiAgewogICAgcmV0dXJuICdDYXRhbG9nZXInOwogIH0KCiAgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpOwogIH0KCiAgZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKQogIHsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgZnVuY3Rpb24gSGFzQWRtaW4oKQogIHsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgZnVuY3Rpb24gR2V0VmVyc2lvbigpCiAgewogICAgcmV0dXJuICcxLjAuMic7CiAgfQoKICBmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpCiAgewogICAgcmV0dXJuICcyLjEnOwogIH0KCiAgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdhZG1pbmRlc2NyaXB0aW9uJyk7CiAgfQoKICBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygncG9zdGluc3RhbGwnKTsKICB9CgogIGZ1bmN0aW9uIFNldFBhcmFtZXRlcnMoKQogIHsKICAgICR0aGlzLT5SZWdpc3Rlck1vZHVsZVBsdWdpbigpOwogICAgJHRoaXMtPlJlc3RyaWN0VW5rbm93blBhcmFtcygpOwoKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdzdWJfdGVtcGxhdGUnLCAgICAgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdyZWNlbnQnLCAgICAgICAgICAgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdhbGlhcycsICAgICAgICAgICAgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdyYW5kb20nLCAgICAgICAgICAgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdhY3Rpb24nLCAgICAgICAgICAgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdyZWN1cnNlJywgICAgICAgICAgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdpdGVtcycsICAgICAgICAgICAgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdnbG9iYWxfc29ydCcsICAgICAgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdnbG9iYWxfc29ydF9kaXInLCAgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCduYW1lJywgICAgICAgICAgICAgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdkZWZhdWx0JywgICAgICAgICAgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjb3VudCcsICAgICAgICAgICAgQ0xFQU5fSU5UKTsKICAgIAogICAgJHRoaXMtPlJlZ2lzdGVyUm91dGUoICcvY2F0YWxvZ2VyX2ltYWdlJC8nLCBhcnJheSgnYWN0aW9uJyA9PiAnaW1hZ2UnKSApOwogIH0KCiAgZnVuY3Rpb24gZ2V0VGVtcGxhdGVGcm9tQWxpYXMoJGFsaWFzKQogIHsKICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU0VMRUNUIGlkIGZyb20gJyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiBjbXNfZGJfcHJlZml4KCkgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ21vZHVsZV9jYXRhbG9nX3RlbXBsYXRlIHdoZXJlIHRpdGxlPT8nLCBhcnJheSgkYWxpYXMpIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIAogICAgaWYoJGRicmVzdWx0ICE9PSBmYWxzZSAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpICkKICAgIHsKICAgICAgcmV0dXJuICdjYXRhbG9nXycgLiAkcm93WydpZCddOwogICAgfQogICAgcmV0dXJuICcnOwogIH0KCiAgZnVuY3Rpb24gaW1wb3J0U2FtcGxlVGVtcGxhdGVzKCRvbmx5dHlwZSA9ICdhbGwnKQogIHsKICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgCiAgICAkcGF0aCA9IGNtc19qb2luX3BhdGgoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+R2V0TW9kdWxlUGF0aCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVzJwogICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAkZGlyID0gb3BlbmRpcigkcGF0aCk7CiAgICAkdGVtcHMgPSBhcnJheSgpOwogICAgCiAgICB3aGlsZSgkZmlsZXNwZWMgPSByZWFkZGlyKCRkaXIpICkKICAgIHsKICAgICAgaWYoIXByZWdfbWF0Y2goJy9cLnRwbCQvaScsICRmaWxlc3BlYykgKQogICAgICB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgYXJyYXlfcHVzaCgkdGVtcHMsICRmaWxlc3BlYyk7CiAgICB9CiAgICAKICAgIHNvcnQoJHRlbXBzKTsKICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnIAogICAgICAgICAgICAgIC4gY21zX2RiX3ByZWZpeCgpIAogICAgICAgICAgICAgIC4gJ21vZHVsZV9jYXRhbG9nX3RlbXBsYXRlIChpZCwgdHlwZV9pZCwgdGl0bGUsIHRlbXBsYXRlKSBWQUxVRVMgKD8sPyw/LD8pJzsKCiAgICBmb3JlYWNoKCR0ZW1wcyBhcyAkZmlsZXNwZWMpCiAgICB7CiAgICAgICRmbiA9IGNtc19qb2luX3BhdGgoJHBhdGgsICRmaWxlc3BlYyk7CiAgICAgICRmaWxlID0gZmlsZSgkZm4pOwogICAgICAkdGVtcGxhdGUgPSBpbXBsb2RlKCcnLCAkZmlsZSk7CiAgICAgICR0ZW1wX25hbWUgPSBwcmVnX3JlcGxhY2UoJy9cLnRwbCQvaScsICcnLCAkZmlsZXNwZWMpOwogICAgICAvLyBjaGVjayBpZiBpdCBhbHJlYWR5IGV4aXN0cwogICAgICAkZXhjaGVjayA9ICdTRUxFQ1QgaWQgZnJvbSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9jYXRhbG9nX3RlbXBsYXRlIHdoZXJlIHRpdGxlPT8nOwogICAgICAkZGJjb3VudCA9ICRkYi0+RXhlY3V0ZSgkZXhjaGVjaywgYXJyYXkoJHRlbXBfbmFtZSkgKTsKICAgICAgCiAgICAgIHdoaWxlKCRkYmNvdW50ICYmICRkYmNvdW50LT5SZWNvcmRDb3VudCgpID4gMCkKICAgICAgewogICAgICAgICR0ZW1wX25hbWUgLj0gJ19uZXcnOwogICAgICAgICRkYmNvdW50ID0gJGRiLT5FeGVjdXRlKCRleGNoZWNrLCBhcnJheSgkdGVtcF9uYW1lKSApOwogICAgICB9CiAgICAgIAogICAgICAkdHlwZV9pZCA9ICAtIDE7CiAgICAgICR0eXBlID0gc3Vic3RyKCR0ZW1wX25hbWUsIDAsIHN0cnBvcygkdGVtcF9uYW1lLCAnLScpICk7CiAgICAgIAogICAgICBpZigkdHlwZSA9PSAnSXRlbScgJiYgKCRvbmx5dHlwZSA9PSAnYWxsJyB8fCAkb25seXR5cGUgPSAnSXRlbScpICkKICAgICAgewogICAgICAgICR0eXBlX2lkID0gQ1RFTVBMQVRFX0lURU07CiAgICAgIH0KICAgICAgZWxzZSBpZigkdHlwZSA9PSAnQ2F0ZWdvcnknICYmICgkb25seXR5cGUgPT0gJ2FsbCcgfHwgJG9ubHl0eXBlID0gJ0NhdGVnb3J5JykgKQogICAgICB7CiAgICAgICAgJHR5cGVfaWQgPSBDVEVNUExBVEVfQ0FURUdPUlk7CiAgICAgIH0KICAgICAgZWxzZSBpZigkdHlwZSA9PSAnUHJpbnRhYmxlJyAmJiAoJG9ubHl0eXBlID09ICdhbGwnIHx8ICRvbmx5dHlwZSA9ICdQcmludGFibGUnKSApCiAgICAgIHsKICAgICAgICAkdHlwZV9pZCA9IENURU1QTEFURV9DQVRBTE9HOwogICAgICB9CiAgICAgIGVsc2UgaWYoJHR5cGUgPT0gJ0NvbXBhcmlzb24nICYmICgkb25seXR5cGUgPT0gJ2FsbCcgfHwgJG9ubHl0eXBlID0gJ0NvbXBhcmlzb24nKSApCiAgICAgIHsKICAgICAgICAkdHlwZV9pZCA9IENURU1QTEFURV9DT01QQVJJU09OOwogICAgICB9CiAgICAgIGVsc2UgaWYoJHR5cGUgPT0gJ0ZlYXR1cmUnICYmICgkb25seXR5cGUgPT0gJ2FsbCcgfHwgJG9ubHl0eXBlID0gJ0ZlYXR1cmUnKSApCiAgICAgIHsKICAgICAgICAkdHlwZV9pZCA9IENURU1QTEFURV9GRUFUVVJFOwogICAgICB9CgogICAgICAkdGVtcF9pZCA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9jYXRhbG9nX3RlbXBsYXRlX3NlcScpOwogICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdGVtcF9pZCwgJHR5cGVfaWQsICR0ZW1wX25hbWUsICR0ZW1wbGF0ZSkgKTsKICAgICAgJHRoaXMtPlNldFRlbXBsYXRlKCdjYXRhbG9nXycgLiAkdGVtcF9pZCwgJHRlbXBsYXRlKTsKICAgIH0KCiAgfQoKICAjIGRlcHJlY2F0ZWQ6IG1vdmVkIHRvIGNhdF91dGlscwogIGZ1bmN0aW9uIGNvbnRlbnRhbHBoYSgkYSwgJGIpCiAgewogICAgcmV0dXJuIHN0cmNhc2VjbXAoJGFbJ3RpdGxlJ10sICRiWyd0aXRsZSddKTsKICB9CgogICMgZGVwcmVjYXRlZDogbW92ZWQgdG8gY2F0X3V0aWxzIAogIGZ1bmN0aW9uIGNocm9ubygkYSwgJGIpCiAgewogICAgaWYoJGFbJ21vZGlmaWVkZGF0ZSddID4gJGJbJ21vZGlmaWVkZGF0ZSddKQogICAgewogICAgICByZXR1cm4gLTE7CiAgICB9CiAgICAKICAgIGlmKCRhWydtb2RpZmllZGRhdGUnXSA8ICRiWydtb2RpZmllZGRhdGUnXSkKICAgIHsKICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICAKICAgIHJldHVybiAwOwogIH0KCiAgIyBkZXByZWNhdGVkOiBtb3ZlZCB0byBjYXRfdXRpbHMKICBmdW5jdGlvbiBjcmVhdGVkKCRhLCAkYikKICB7CiAgICBpZigkYVsnY3JlYXRlZGF0ZSddID4gJGJbJ2NyZWF0ZWRhdGUnXSkKICAgIHsKICAgICAgcmV0dXJuIC0xOwogICAgfQogICAgCiAgICBpZigkYVsnY3JlYXRlZGF0ZSddIDwgJGJbJ2NyZWF0ZWRhdGUnXSkKICAgIHsKICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICAKICAgIHJldHVybiAwOwogIH0KICAKICBmdW5jdGlvbiBfZGlzcGxheV9pY29uKCRpY29uID0gJycpCiAgewogICAgJGltYWdlX3BhdGggPSBjbXNfam9pbl9wYXRoKCR0aGlzLT5HZXRNb2R1bGVQYXRoKCksICdpbWFnZXMnLCAkaWNvbik7CiAgICByZXR1cm4gJGltYWdlX3BhdGg7CiAgfQoKICBmdW5jdGlvbiBpbml0QWRtaW5OYXYoJGlkLCAmJHBhcmFtcywgJHJldHVybmlkKQogIHsKICAgICRjb25maWcgPSAkdGhpcy0+R2V0Q29uZmlnKCk7CiAgICAkdmFycyA9ICR0aGlzLT5HZXRWYXJpYWJsZXMoKTsKICAgICRpbm5lcm5hdiA9ICI8ZGl2IGNsYXNzPSdwYWdlb3ZlcmZsb3cnPlxuIjsKICAgIAogICAgJHNlcCA9ICcgfCAnOwogICAgCiAgICAjIGRlZmF1bHQgYWRtaW4KICAgIAogICAgJHRlbXBJbWFnZSA9ICc8aW1nIGNsYXNzPSJzeXN0ZW1pY29uIiBhbHQ9IicKICAgICAgICAgICAgICAgICAgICAgLiAkdGhpcy0+TGFuZygnZ2xvYmFsb3BzJykKICAgICAgICAgICAgICAgICAgICAgLiAnIiB0aXRsZT0iJwogICAgICAgICAgICAgICAgICAgICAuICR0aGlzLT5MYW5nKCdnbG9iYWxvcHMnKQogICAgICAgICAgICAgICAgICAgICAuICciIHNyYz0iJwogICAgICAgICAgICAgICAgICAgICAuICRjb25maWdbJ3Jvb3RfdXJsJ10KICAgICAgICAgICAgICAgICAgICAgLiAnL21vZHVsZXMvQ2F0YWxvZ2VyL2ltYWdlcy90ZW1wbGF0ZXMucG5nIiAvPic7CiAgICAKICAgICRpbm5lcm5hdiAuPSAkdGhpcy0+Q3JlYXRlTGluaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlkLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHRhZG1pbicsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0ZW1wSW1hZ2UsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOyAgICAgCiAgICAKICAgICRpbm5lcm5hdiAuPSAnICc7CiAgICAKICAgICRpbm5lcm5hdiAuPSAkdGhpcy0+Q3JlYXRlTGluaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWZhdWx0YWRtaW4nLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ2xpc3R0ZW1wbCcpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7ICAKCiAgICAjIE1hbmFnZSBBdHRyaWJ1dGVzCiAgIAogICAgJHRlbXBJbWFnZSA9ICc8aW1nIGNsYXNzPSJzeXN0ZW1pY29uIiBhbHQ9IicKICAgICAgICAgICAgICAgICAgICAgLiAkdGhpcy0+TGFuZygnZ2xvYmFsb3BzJykKICAgICAgICAgICAgICAgICAgICAgLiAnIiB0aXRsZT0iJwogICAgICAgICAgICAgICAgICAgICAuICR0aGlzLT5MYW5nKCdnbG9iYWxvcHMnKQogICAgICAgICAgICAgICAgICAgICAuICciIHNyYz0iJwogICAgICAgICAgICAgICAgICAgICAuICRjb25maWdbJ3Jvb3RfdXJsJ10KICAgICAgICAgICAgICAgICAgICAgLiAnL21vZHVsZXMvQ2F0YWxvZ2VyL2ltYWdlcy9hdHRyaWJ1dGVzLnBuZyIgLz4nOwogICAgCiAgICAkaW5uZXJuYXYgLj0gJHNlcDsKICAgIAogICAgJGlubmVybmF2IC49ICR0aGlzLT5DcmVhdGVMaW5rKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRtaW5hdHRycycsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0ZW1wSW1hZ2UsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgCiAgICAKICAgICRpbm5lcm5hdiAuPSAnICcgLiAkdGhpcy0+Q3JlYXRlTGluaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlkLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FkbWluYXR0cnMnLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJldHVybmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+TGFuZygnbWFuYWdlYXR0cnMnKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAKICAgICRpbm5lcm5hdiAuPSAkc2VwOwogICAgCiAgICAjIEdsb2JhbCBPcGVyYXRpb25zCiAgICAKICAgICR0ZW1wSW1hZ2UgPSAnPGltZyBjbGFzcz0ic3lzdGVtaWNvbiIgYWx0PSInCiAgICAgICAgICAgICAgICAgICAgIC4gJHRoaXMtPkxhbmcoJ2dsb2JhbG9wcycpCiAgICAgICAgICAgICAgICAgICAgIC4gJyIgdGl0bGU9IicKICAgICAgICAgICAgICAgICAgICAgLiAkdGhpcy0+TGFuZygnZ2xvYmFsb3BzJykKICAgICAgICAgICAgICAgICAgICAgLiAnIiBzcmM9IicKICAgICAgICAgICAgICAgICAgICAgLiAkY29uZmlnWydyb290X3VybCddCiAgICAgICAgICAgICAgICAgICAgIC4gJy9tb2R1bGVzL0NhdGFsb2dlci9pbWFnZXMvZ2xvYmFsLnBuZyIgLz4nOwogICAgCiAgICAkaW5uZXJuYXYgLj0gJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnbG9iYWxvcHMnLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJldHVybmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGVtcEltYWdlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgCiAgICAkaW5uZXJuYXYgLj0gJyAnIC4gJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnbG9iYWxvcHMnLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJldHVybmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+TGFuZygnZ2xvYmFsb3BzJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICRpbm5lcm5hdiAuPSAkc2VwOwogICAgCiAgICAjIEFkbWluIFByZWZzCiAgIAogICAgJHRlbXBJbWFnZSA9ICc8aW1nIGNsYXNzPSJzeXN0ZW1pY29uIiBhbHQ9IicKICAgICAgICAgICAgICAgICAgICAgLiAkdGhpcy0+TGFuZygnZ2xvYmFsb3BzJykKICAgICAgICAgICAgICAgICAgICAgLiAnIiB0aXRsZT0iJwogICAgICAgICAgICAgICAgICAgICAuICR0aGlzLT5MYW5nKCdnbG9iYWxvcHMnKQogICAgICAgICAgICAgICAgICAgICAuICciIHNyYz0iJwogICAgICAgICAgICAgICAgICAgICAuICRjb25maWdbJ3Jvb3RfdXJsJ10KICAgICAgICAgICAgICAgICAgICAgLiAnL21vZHVsZXMvQ2F0YWxvZ2VyL2ltYWdlcy9hZG1pbi5wbmciIC8+JzsKICAgIAogICAgJGlubmVybmF2IC49ICR0aGlzLT5DcmVhdGVMaW5rKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRtaW5wcmVmcycsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0ZW1wSW1hZ2UsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOyAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgCiAgICAkaW5uZXJuYXYgLj0gJyAnIC4gJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhZG1pbnByZWZzJywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXR1cm5pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ21hbmFnZXByZWZzJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAkaW5uZXJuYXYgLj0gIlxuPC9kaXY+XG4iOwogICAgCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lubmVybmF2JywgJGlubmVybmF2KTsKCiAgfQoKICBmdW5jdGlvbiBHZXRBZG1pblNlY3Rpb24oKQogIHsKICAgIHJldHVybiAnY29udGVudCc7CiAgfQogIAogIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpCiAgewogICAgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBDYXRhbG9nIFNldHRpbmdzJyk7CiAgfQoKICBmdW5jdGlvbiBHZXRIZWxwKCRsYW5nID0gJ2VuX1VTJykKICB7CiAgICAvL3JldHVybiAkdGhpcy0+TGFuZygnaGVscHRleHQnKTsKICAgICRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKICAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKICAgICAgICAKICAgICRzbWFydHktPmFzc2lnbigncm9vdF91cmwnLCAkY29uZmlnWydyb290X3VybCddKTsKCiAgICAkc21hcnR5LT5hc3NpZ24oJ21vZCcsICR0aGlzKTsKICAgIHJldHVybiAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdoZWxwLnRwbCcpOwogIH0KCiAgZnVuY3Rpb24gR2V0QXV0aG9yKCkKICB7CiAgICByZXR1cm4gJ0pvTW9yZyc7CiAgfQoKICBmdW5jdGlvbiBDaGVja0FjY2VzcygkcGVybWlzc2lvbiA9ICdNb2RpZnkgQ2F0YWxvZyBTZXR0aW5ncycpCiAgewogICAgJGFjY2VzcyA9ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJHBlcm1pc3Npb24pOwoKICAgIGlmKCEkYWNjZXNzKQogICAgewogICAgICBlY2hvIjxwIGNsYXNzPVwiZXJyb3JcIj4iIC4gJHRoaXMtPkxhbmcoJ25lZWRwZXJtaXNzaW9uJywgJHBlcm1pc3Npb24pIC4gIjwvcD4iOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcmV0dXJuIHRydWU7CiAgfQoKCiAgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKQogIHsKICAgIHJldHVybiAnam9tb3JnLm1vcmdAZ21haWwuY29tJzsKICB9CgogIGZ1bmN0aW9uIEdldENoYW5nZUxvZygpCiAgewogICAgcmV0dXJuICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImNoYW5nZWxvZy50cGwiKTsKICAgIC8vJHRoaXMtPkxhbmcoJ2NoYW5nZWxvZycpOwogIH0KCgogIGZ1bmN0aW9uICZnZXRTdWJDb250ZW50KCRzdGFydE5vZGVJZCkKICB7CiAgICAkZ0NtcyA9IGNtc21zKCk7CiAgICAkY29udGVudCA9IGFycmF5KCk7CiAgICAkaG0gPSAkZ0Ntcy0+R2V0SGllcmFyY2h5TWFuYWdlcigpOwogICAgLyogV29ya3Mgd2l0aCBuZXcgYWRkaXRpb24gdG8gVHJlZSwgYnV0IGdldEZsYXRMaXN0IGlzIGRlZmF1bHQKICAgICRybiA9ICRobS0+c3VyZUdldE5vZGVCeUlkKCRzdGFydE5vZGVJZCk7CiAgICAkY291bnQgPSAwOwogICAgJGhtLT5nZXRGbGF0dGVuZWRDaGlsZHJlbigkcm4sICRjb250ZW50LCAkY291bnQpOwogICAgICovCiAgICAkY29udGVudCA9ICRobS0+Z2V0RmxhdExpc3QoKTsKICAgIHJldHVybiAkY29udGVudDsKICB9CgogIGZ1bmN0aW9uICZnZXRBbGxDb250ZW50KCkKICB7CiAgICAkZ0NtcyA9IGNtc21zKCk7CiAgICAkY29udGVudCA9IGFycmF5KCk7CiAgICAkaG0gPSAkZ0Ntcy0+R2V0SGllcmFyY2h5TWFuYWdlcigpOwoKICAgICRybiA9ICRobS0+R2V0Um9vdE5vZGUoKTsKICAgICRjb3VudCA9IDA7CiAgICAkaG0tPmdldEZsYXR0ZW5lZENoaWxkcmVuKCRybiwgJGNvbnRlbnQsICRjb3VudCk7CiAgICByZXR1cm4gJGNvbnRlbnQ7CiAgfQoKICAgLy8gZGVwcmVjYXRlZAovLyAgZnVuY3Rpb24gZ2V0VXNlckF0dHJpYnV0ZXMoJGdsb2JhbF9yZWYgPSAnY2F0YWxvZ19hdHRycycpCi8vICB7Ci8vICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7Ci8vICAgIGlmKCFpc3NldCgkdGhpcy0+YXR0cnNbJGdsb2JhbF9yZWZdKSB8fCAhaXNfYXJyYXkoJHRoaXMtPmF0dHJzWyRnbG9iYWxfcmVmXSkgKQovLyAgICB7Ci8vICAgICAgJHRoaXMtPmF0dHJzWyRnbG9iYWxfcmVmXSA9IGFycmF5KCk7Ci8vICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCBhdHRyaWJ1dGUsIGFsaWFzLCBkZWZhdWx0dmFsLCBsZW5ndGgsIGZpZWxkX3R5cGUsIHNlbGVjdF92YWx1ZXMgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2NhdGFsb2dfYXR0ciBXSEVSRSB0eXBlX2lkPT8gT1JERVIgQlkgb3JkZXJfYnkgQVNDIjsKLy8gICAgICAkdHlwZV9pZCA9IDE7Ci8vICAgICAgCi8vICAgICAgaWYoJGdsb2JhbF9yZWYgPT0gJ2NhdGFsb2dfY2F0X2F0dHJzJykKLy8gICAgICB7Ci8vICAgICAgICAkdHlwZV9pZCA9IDI7Ci8vICAgICAgfQovLyAgICAgIGVsc2VpZigkZ2xvYmFsX3JlZiA9PSAnY2F0YWxvZ19wcmludF9hdHRycycpCi8vICAgICAgewovLyAgICAgICAgJHR5cGVfaWQgPSAzOwovLyAgICAgIH0KLy8gICAgICAKLy8gICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdHlwZV9pZCkgKTsKLy8gICAgICAKLy8gICAgICB3aGlsZSgkZGJyZXN1bHQgIT09IGZhbHNlICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkgKQovLyAgICAgIHsKLy8gICAgICAgICR0aGlzQXR0ciA9IG5ldyBzdGRDbGFzcygpOwovLyAgICAgICAgJHRoaXNBdHRyLT5hdHRyID0gJHJvd1snYXR0cmlidXRlJ107Ci8vICAgICAgICAkdGhpc0F0dHItPmFsaWFzID0gJHJvd1snYWxpYXMnXTsKLy8gICAgICAgICR0aGlzQXR0ci0+bGVuZ3RoID0gJHJvd1snbGVuZ3RoJ107Ci8vICAgICAgICAkdGhpc0F0dHItPmRlZmF1bHQgPSAkcm93WydkZWZhdWx0dmFsJ107Ci8vICAgICAgICAkdGhpc0F0dHItPnNlbGVjdF92YWx1ZXMgPSAkcm93WydzZWxlY3RfdmFsdWVzJ107Ci8vICAgICAgICAkdGhpc0F0dHItPmZpZWxkX3R5cGUgPSAkcm93WydmaWVsZF90eXBlJ107Ci8vICAgICAgICAkdGhpc0F0dHItPnNhZmUgPSBzdHJ0b2xvd2VyKHByZWdfcmVwbGFjZSgnL1xXLycsICcnLCAkcm93WydhdHRyaWJ1dGUnXSkgKTsKLy8gICAgICAgIGFycmF5X3B1c2goJHRoaXMtPmF0dHJzWyRnbG9iYWxfcmVmXSwgJHRoaXNBdHRyKTsKLy8gICAgICB9Ci8vICAgIH0KLy8gICAgCi8vICAgIHJldHVybiAkdGhpcy0+YXR0cnM7Ci8vICB9CgogIGZ1bmN0aW9uICZnZXRDYXRhbG9nSXRlbSgkYWxpYXMpCiAgewogICAgJGdDbXMgPSBjbXNtcygpOwoKICAgICRobSA9ICRnQ21zLT5HZXRIaWVyYXJjaHlNYW5hZ2VyKCk7CiAgICAkcGFnZU5vZGUgPSAkaG0tPnN1cmVHZXROb2RlQnlBbGlhcygkYWxpYXMpOwogICAgJHBhZ2UgPSAkcGFnZU5vZGUtPkdldENvbnRlbnQoKTsKICAgICRub2RlID0gJHRoaXMtPml0ZW1Ub0FycmF5KCRwYWdlLCAnJyk7CiAgICByZXR1cm4gJG5vZGU7CiAgfQoKICBmdW5jdGlvbiAmIGdldENhdGFsb2dJdGVtQnlJZCgkaWQpCiAgewogICAgJGdDbXMgPSBjbXNtcygpOwoKICAgICRobSA9ICRnQ21zLT5HZXRIaWVyYXJjaHlNYW5hZ2VyKCk7CiAgICAkcGFnZU5vZGUgPSAkaG0tPnN1cmVHZXROb2RlQnlJZCgkaWQpOwogICAgJHBhZ2UgPSAkcGFnZU5vZGUtPkdldENvbnRlbnQoKTsKICAgICRub2RlID0gJHRoaXMtPml0ZW1Ub0FycmF5KCRwYWdlLCAnJyk7CiAgICByZXR1cm4gJG5vZGU7CiAgfQoKCiAgZnVuY3Rpb24gc21hcnR5QmFzaWNzKCkKICB7CiAgICAkY29uZmlnID0gJHRoaXMtPkdldENvbmZpZygpOwogICAgJHNtYXJ0eSA9ICR0aGlzLT5HZXRBY3Rpb25UZW1wbGF0ZU9iamVjdCgpOwogICAgCiAgICBpZiggZW1wdHkoJHNtYXJ0eSkgKSAkc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7CgogICAgJHByZXR0eV91cmwgPSAnY2F0YWxvZ2VyX2ltYWdlJzsKICAgICR1cmwgPSAkdGhpcy0+Y3JlYXRlX3VybCgnY250bnQwMScsICdpbWFnZScsICctMScsIGFycmF5KCksIEZBTFNFLCBGQUxTRSwgJHByZXR0eV91cmwpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdpbWFnZV9yb290JywgJHVybCk7CiAgICAKICAgICMgZGVwcmVjYXRlZAogICAgLy8kc21hcnR5LT5hc3NpZ24oJ3Jvb3RfdXJsJywgJGNvbmZpZ1sncm9vdF91cmwnXSk7CiAgICAvLyRzbWFydHktPmFzc2lnbigncm9vdF91cmwnLCAnJyk7CiAgICAKICAgIC8vIHR5cGUgY2FuIGJlICJzIiAtIHNvdXJjZSBpbWFnZSwgImkiIC0gcHJvY2Vzc2VkIGltYWdlLCBvciAiZiIgLSBmaWxlCiAgICAkc21hcnR5LT5hc3NpZ24oICdvcmlnaW5hbF9pbWFnZXNfcGF0aCcsIGNhdEZpbGVzT3BlcmF0aW9uczo6Z2V0QXNzZXRQYXRoKCdzJykgKTsKICAgICRzbWFydHktPmFzc2lnbiggJ3Byb2Nlc3NlZF9pbWFnZXNfcGF0aCcsIGNhdEZpbGVzT3BlcmF0aW9uczo6Z2V0QXNzZXRQYXRoKCdpJykgKTsKICAgICRzbWFydHktPmFzc2lnbiggJ2ZpbGVzX3BhdGgnLCBjYXRGaWxlc09wZXJhdGlvbnM6OmdldEFzc2V0UGF0aCgnZicpICk7IAogIH0KCiAgLy8gbW9yZSBmaXhlcyBuZWVkZWQgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4KICBmdW5jdGlvbiBnZXRDYXRhbG9nSXRlbXNJRExpc3QoJiRwYXJhbXMpCiAgewogICAgJGdDbXMgPSBjbXNtcygpOwogICAgJGRiID0gJGdDbXMtPkdldERiKCk7CiAgICAkcmV0ID0gYXJyYXkoKTsKICAgIAogICAgaWYoIWlzc2V0KCRwYXJhbXNbJ2FsaWFzJ10pIHx8ICRwYXJhbXNbJ2FsaWFzJ10gPT0gJy8nKQogICAgewogICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJ1NFTEVDVCBjb250ZW50X2lkIGZyb20gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnQgd2hlcmUgdHlwZT1cJ2NhdGFsb2dpdGVtXCcnKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgJGJhc2VfaGllcmFyY2h5ID0gJGRiLT5HZXRPbmUoJ1NFTEVDVCBoaWVyYXJjaHkgZnJvbSAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudCB3aGVyZSBjb250ZW50X2FsaWFzPT8nLCBhcnJheSgkcGFyYW1zWydhbGlhcyddKSApOwogICAgICAKICAgICAgaWYoISRiYXNlX2hpZXJhcmNoeSkKICAgICAgewogICAgICAgIHJldHVybiAkcmV0OwogICAgICB9CiAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU0VMRUNUIGNvbnRlbnRfaWQgZnJvbSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiBjbXNfZGJfcHJlZml4KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICdjb250ZW50IHdoZXJlIHR5cGU9XCdjYXRhbG9naXRlbVwnIGFuZCBoaWVyYXJjaHkgTElLRSBcJycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRiYXNlX2hpZXJhcmNoeS4nJVwnJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgfQogICAgCiAgICB3aGlsZSgkZGJyZXN1bHQgIT09IGZhbHNlICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkgKQogICAgewogICAgICBhcnJheV9wdXNoKCRyZXQsICRyb3dbJ2NvbnRlbnRfaWQnXSk7CiAgICB9CiAgICAKICAgIHJldHVybiAkcmV0OwogIH0KCiAgZnVuY3Rpb24gZ2V0Q2F0YWxvZ0l0ZW1zTGlzdCgmJHBhcmFtcykKICB7ICAKICAgICRnQ21zID0gY21zbXMoKTsKICAgICRobSA9ICRnQ21zLT5HZXRIaWVyYXJjaHlNYW5hZ2VyKCk7CiAgICAkY28gPSBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpOwogICAgJGxhc3RjYXQgPSAnJzsKICAgICRsYXN0Y2F0ZnVsbCA9IG51bGw7CgogICAgaWYoaXNzZXQoJHBhcmFtc1snYWxpYXMnXSkgJiYgJHBhcmFtc1snYWxpYXMnXSA9PSAnLycpCiAgICB7CiAgICAgICRjb250ZW50ID0gJGhtLT5nZXRGbGF0TGlzdCgpOwogICAgICAkY3VySGllckRlcHRoID0gaXNzZXQoJHBhcmFtc1snc3RhcnRfZGVwdGgnXSkgPyAkcGFyYW1zWydzdGFydF9kZXB0aCddOiAgLSAxOwogICAgICAkY3VySGllcmFyY2h5ID0gJyc7CiAgICAgICRjdXJIaWVyTGVuID0gMDsKICAgICAgJGN1clBhZ2UgPSBuZXcgQ29udGVudCgpOyAvLyBtYXkgbmVlZCB0byBiZSByZXZpc3RlZCAoSk0pCiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgIGlmKGlzc2V0KCRwYXJhbXNbJ2NvbnRlbnRfaWQnXSkgKQogICAgICB7CiAgICAgICAgLy8kY3VyUGFnZUlEID0gJHZhcnNbJHBhcmFtc1snY29udGVudF9pZCddXTsKICAgICAgICAkY3VyUGFnZUlEID0gJGdDbXMtPmdldF9jb250ZW50X2lkKCk7IC8vJHZhcnNbJHBhcmFtc1snY29udGVudF9pZCddXTsKICAgICAgICAkY3VyUGFnZU5vZGUgPSAkaG0tPnN1cmVHZXROb2RlQnlJZCgkY3VyUGFnZUlEKTsKICAgICAgICAkY3VyUGFnZSA9ICRjdXJQYWdlTm9kZS0+R2V0Q29udGVudCgpOwogICAgICB9CiAgICAgIGVsc2VpZihpc3NldCgkcGFyYW1zWydhbGlhcyddKSApCiAgICAgIHsKICAgICAgICAkY3VyUGFnZU5vZGUgPSAkaG0tPnN1cmVHZXROb2RlQnlBbGlhcygkcGFyYW1zWydhbGlhcyddKTsKICAgICAgICAkY3VyUGFnZSA9ICRjdXJQYWdlTm9kZS0+R2V0Q29udGVudCgpOwogICAgICAgICRjdXJQYWdlSUQgPSAkY3VyUGFnZS0+SWQoKTsKICAgICAgfQogICAgICBlbHNlCiAgICAgIHsgCiAgICAgICAgJGNpID0gJGdDbXMtPmdldF9jb250ZW50X2lkKCk7IAogICAgICAKICAgICAgICBpZiggaXNzZXQoJGNpKSApCiAgICAgICAgeyAjIG5vIGlkLCBubyBhbGlhczogZ2V0IGNvbnRlbnRfaWQgZnJvbSBDTVNNUwogICAgICAgICAgJGN1clBhZ2VJRCA9ICRjaTsKICAgICAgICAgICRjdXJQYWdlTm9kZSA9ICRobS0+c3VyZUdldE5vZGVCeUlkKCRjdXJQYWdlSUQpOwogICAgICAgICAgJGN1clBhZ2UgPSAkY3VyUGFnZU5vZGUtPkdldENvbnRlbnQoKTsKICAgICAgICB9CiAgICAgIH0gCiAgICAgIAogICAgICAkY3VySGllcmFyY2h5ID0gJGN1clBhZ2UtPkhpZXJhcmNoeSgpOwogICAgICAkY3VySGllckxlbiA9IHN0cmxlbigkY3VySGllcmFyY2h5KTsKICAgICAgJGN1ckhpZXJEZXB0aCA9IHN1YnN0cl9jb3VudCgkY3VySGllcmFyY2h5LCAnLicpOwogICAgICAkY29udGVudCA9ICR0aGlzLT5nZXRTdWJDb250ZW50KCRjdXJQYWdlSUQpOwogICAgfQogICAgCiAgICAkY2F0ZWdvcnlJdGVtcyA9IGFycmF5KCk7CgogICAgZm9yZWFjaCgkY29udGVudCBhcyAkdGhpc1BhZ2UpCiAgICB7CiAgICAgICR0aGlzcGFnZWNvbnRlbnQgPSAkdGhpc1BhZ2UtPkdldENvbnRlbnQoKTsKCiAgICAgIGlmKCEkdGhpc3BhZ2Vjb250ZW50KQogICAgICB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KCiAgICAgIGlmKG1ldGhvZF9leGlzdHMoJHRoaXNwYWdlY29udGVudCwgJ0FjdGl2ZScpICYmICEkdGhpc3BhZ2Vjb250ZW50LT5BY3RpdmUoKSApCiAgICAgIHsKICAgICAgICBjb250aW51ZTsKICAgICAgfQoKICAgICAgaWYoJHRoaXNwYWdlY29udGVudC0+SWQoKSA9PSAkY3VyUGFnZS0+SWQoKSApCiAgICAgIHsKICAgICAgICBjb250aW51ZTsKICAgICAgfQoKICAgICAgJHR5cGVfb2sgPSBmYWxzZTsKICAgICAgJGRlcHRoX29rID0gZmFsc2U7CgogICAgICBpZigkdGhpc3BhZ2Vjb250ZW50LT5UeXBlKCkgPT0gJ2NvbnRlbnRhbGlhcycpCiAgICAgIHsKICAgICAgICAkdGhpc3BhZ2Vjb250ZW50ID0gJHRoaXNwYWdlY29udGVudC0+R2V0QWxpYXNDb250ZW50KCk7CiAgICAgICAgJGN1ckhpZXJMZW4gPSBzdHJsZW4oJGN1ckhpZXJhcmNoeSk7CiAgICAgICAgJGN1ckhpZXJEZXB0aCA9IHN1YnN0cl9jb3VudCgkY3VySGllcmFyY2h5LCAnLicpOwogICAgICB9CgogICAgICBpZigkdGhpc3BhZ2Vjb250ZW50LT5UeXBlKCkgPT0gJ2NhdGFsb2djYXRlZ29yeScpCiAgICAgIHsKICAgICAgICAkbGFzdGNhdCA9ICR0aGlzcGFnZWNvbnRlbnQtPk5hbWUoKTsKICAgICAgICAvL2RlYnVnX2Rpc3BsYXkoJHRoaXNwYWdlY29udGVudCk7CiAgICAgIH0KCiAgICAgIGlmKCR0aGlzcGFnZWNvbnRlbnQtPlR5cGUoKSA9PSAnY2F0YWxvZ2l0ZW0nICYmICgkcGFyYW1zWydyZWN1cnNlJ10gPT0KICAgICAgICAnaXRlbXNfb25lJyB8fCAkcGFyYW1zWydyZWN1cnNlJ10gPT0gJ2l0ZW1zX2FsbCcgfHwgJHBhcmFtc1sncmVjdXJzZSddCiAgICAgICAgPT0gJ21peGVkX29uZScgfHwgJHBhcmFtc1sncmVjdXJzZSddID09ICdtaXhlZF9hbGwnCiAgICAgICkpCiAgICAgIHsKICAgICAgICAkdHlwZV9vayA9IHRydWU7CiAgICAgIH0KICAgICAgZWxzZSBpZigkdGhpc3BhZ2Vjb250ZW50LT5UeXBlKCkgPT0gJ2NhdGFsb2djYXRlZ29yeScgJiYKICAgICAgICAoJHBhcmFtc1sncmVjdXJzZSddID09ICdjYXRlZ29yaWVzX29uZScgfHwgJHBhcmFtc1sncmVjdXJzZSddID09CiAgICAgICAgJ2NhdGVnb3JpZXNfYWxsJyB8fCAkcGFyYW1zWydyZWN1cnNlJ10gPT0gJ21peGVkX29uZScgfHwKICAgICAgICAkcGFyYW1zWydyZWN1cnNlJ10gPT0gJ21peGVkX2FsbCcKICAgICAgKSkKICAgICAgewogICAgICAgICR0eXBlX29rID0gdHJ1ZTsKICAgICAgfQoKICAgICAgaWYoISR0eXBlX29rKQogICAgICB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KCiAgICAgIGlmKCgkcGFyYW1zWydyZWN1cnNlJ10gPT0gJ2l0ZW1zX29uZScgfHwgJHBhcmFtc1sncmVjdXJzZSddID09CiAgICAgICAgJ2NhdGVnb3JpZXNfb25lJyB8fCAkcGFyYW1zWydyZWN1cnNlJ10gPT0gJ21peGVkX29uZScpICYmIHN1YnN0cl9jb3VudAogICAgICAgICgkdGhpc3BhZ2Vjb250ZW50LT5IaWVyYXJjaHkoKSwgJy4nKSA9PSAoJGN1ckhpZXJEZXB0aCArIDEpICYmIHN1YnN0cgogICAgICAgICgkdGhpc3BhZ2Vjb250ZW50LT5IaWVyYXJjaHkoKSwgMCwgJGN1ckhpZXJMZW4gKyAxKSA9PSAkY3VySGllcmFyY2h5LicuJwogICAgICApCiAgICAgIHsKICAgICAgICAkZGVwdGhfb2sgPSB0cnVlOwogICAgICB9CiAgICAgIGVsc2VpZiggKGlzc2V0KCRwYXJhbXNbJ2FsaWFzJ10pICYmICRwYXJhbXNbJ2FsaWFzJ10gPT0gJy8nKSB8fCAoCiAgICAgICAgKCRwYXJhbXNbJ3JlY3Vyc2UnXSA9PSAnaXRlbXNfYWxsJyB8fCAkcGFyYW1zWydyZWN1cnNlJ10gPT0KICAgICAgICAnY2F0ZWdvcmllc19hbGwnIHx8ICRwYXJhbXNbJ3JlY3Vyc2UnXSA9PSAnbWl4ZWRfYWxsJykgJiYgc3Vic3RyCiAgICAgICAgKCR0aGlzcGFnZWNvbnRlbnQtPkhpZXJhcmNoeSgpLCAwLCAkY3VySGllckxlbiArIDEpID09ICRjdXJIaWVyYXJjaHkuJy4nCiAgICAgICkpCiAgICAgIHsKICAgICAgICAkZGVwdGhfb2sgPSB0cnVlOwogICAgICB9CgoKICAgICAgaWYoISRkZXB0aF9vaykKICAgICAgewogICAgICAgIGNvbnRpbnVlOwogICAgICB9CgogICAgICAvLyBpbiB0aGUgY2F0ZWdvcnksIGFuZCBhcHByb3ZlZCBmb3IgYWRkaXRpb24KICAgICAgJHRoaXNJdGVtID0gJHRoaXMtPml0ZW1Ub0FycmF5KCR0aGlzcGFnZWNvbnRlbnQsICRsYXN0Y2F0KTsKICAgICAgYXJyYXlfcHVzaCgkY2F0ZWdvcnlJdGVtcywgJHRoaXNJdGVtKTsKICAgIH0KCiAgICByZXR1cm4gYXJyYXkoJGN1clBhZ2UsICRjYXRlZ29yeUl0ZW1zKTsKICB9CgogIGZ1bmN0aW9uIGl0ZW1Ub0FycmF5KCRwYWdlY29udGVudCwgJGxhc3RjYXQpCiAgewogICAgJHRoaXNJdGVtID0gYXJyYXkoKTsKICAgICRjYXRUaHVtYlNpemUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV90aHVtYm5haWwnLCA5MCk7CiAgICAkaXRlbVRodW1iU2l6ZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2ltYWdlX3NpemVfY2F0ZWdvcnknLCA3MCk7CiAgICAkbWlzc2luZ0ltYWdlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Nob3dfbWlzc2luZycsICcxJyk7CiAgICBzd2l0Y2goJHBhZ2Vjb250ZW50LT5UeXBlKCkgKQogICAgewogICAgICBjYXNlICdjYXRhbG9naXRlbSc6CiAgICAgICAgJHRoaXNJdGVtWydpbWFnZSddID0gJHRoaXMtPmltYWdlU3BlYygkcGFnZWNvbnRlbnQtPkFsaWFzKCksICdzJywgMSwgJGl0ZW1UaHVtYlNpemUpOwogICAgICAgICR0aGlzSXRlbVsnaW1hZ2Vfc3JjJ10gPSAkdGhpcy0+c3JjSW1hZ2VTcGVjKCRwYWdlY29udGVudC0+QWxpYXMoKSwgMSk7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ2NhdGFsb2djYXRlZ29yeSc6CiAgICAgICAgJHRoaXNJdGVtWydpbWFnZSddID0gJHRoaXMtPmltYWdlU3BlYygkcGFnZWNvbnRlbnQtPkFsaWFzKCksICdjdCcsIDEsICRjYXRUaHVtYlNpemUpOwogICAgICAgIGJyZWFrOwogICAgfQogICAgJHRoaXNJdGVtWydsaW5rJ10gPSAkcGFnZWNvbnRlbnQtPkdldFVybCgpOwogICAgJHRoaXNJdGVtWyd0aXRsZSddID0gJHBhZ2Vjb250ZW50LT5OYW1lKCk7CiAgICAkdGhpc0l0ZW1bJ2FsaWFzJ10gPSAkcGFnZWNvbnRlbnQtPkFsaWFzKCk7CiAgICAkdGhpc0l0ZW1bJ21lbnV0aXRsZSddID0gJHBhZ2Vjb250ZW50LT5NZW51VGV4dCgpOwogICAgJHRoaXNJdGVtWydtb2RpZmllZGRhdGUnXSA9ICRwYWdlY29udGVudC0+R2V0TW9kaWZpZWREYXRlKCk7CiAgICAkdGhpc0l0ZW1bJ2NhdGVnb3J5J10gPSAkbGFzdGNhdDsKICAgICR0aGlzSXRlbVsnY2F0J10gPSAkbGFzdGNhdDsKICAgICR0aGlzSXRlbVsnY3JlYXRlZGF0ZSddID0gJHBhZ2Vjb250ZW50LT5HZXRDcmVhdGlvbkRhdGUoKTsKICAgICR0aGlzSXRlbVsnYXR0cnMnXSA9IGFycmF5KCk7CiAgICAkdGhlc2VBdHRycyA9ICRwYWdlY29udGVudC0+Z2V0QXR0cnMoKTsKICAgIGZvcmVhY2goJHRoZXNlQXR0cnMgYXMgJHRoaXNBdHRyKQogICAgewogICAgICAvLyRzYWZlYXR0ciA9IHN0cnRvbG93ZXIocHJlZ19yZXBsYWNlKCcvXFcvJywnJywkdGhpc0F0dHItPmF0dHIpKTsKICAgICAgJHRoaXNJdGVtWyR0aGlzQXR0ci0+c2FmZV0gPSAkcGFnZWNvbnRlbnQtPkdldFByb3BlcnR5VmFsdWUoJHRoaXNBdHRyLT5hdHRyKTsKICAgICAgJHRoaXNJdGVtWydhdHRycyddWyR0aGlzQXR0ci0+c2FmZV0gPSAkcGFnZWNvbnRlbnQtPkdldFByb3BlcnR5VmFsdWUoJHRoaXNBdHRyLT5hdHRyKTsKICAgICAgaWYoaXNzZXQoJHRoaXNBdHRyLT5hbGlhcykgJiYgJHRoaXNBdHRyLT5hbGlhcyAhPSAnJykKICAgICAgewogICAgICAgICR0aGlzSXRlbVskdGhpc0F0dHItPmFsaWFzXSA9ICRwYWdlY29udGVudC0+R2V0UHJvcGVydHlWYWx1ZSgkdGhpc0F0dHItPmF0dHIpOwogICAgICAgICR0aGlzSXRlbVsnYXR0cnMnXVskdGhpc0F0dHItPmFsaWFzXSA9ICRwYWdlY29udGVudC0+R2V0UHJvcGVydHlWYWx1ZSgkdGhpc0F0dHItPmF0dHIpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gJHRoaXNJdGVtOwoKICB9CgoKLy8gIGZ1bmN0aW9uIGltYWdlU3BlYygkYWxpYXMsICR0eXBlLCAkaW1hZ2VfbnVtYmVyLCAkc2l6ZSwgJGFudGljYWNoZSA9IHRydWUsICRmb3JjZXNob3dtaXNzaW5nID0gZmFsc2UpCi8vICB7Ci8vICAgICRjb25maWcgPSAkdGhpcy0+R2V0Q29uZmlnKCk7Ci8vICAgIGlmKCR0aGlzLT5zaG93TWlzc2luZyA9PSAnJykKLy8gICAgewovLyAgICAgICR0aGlzLT5zaG93TWlzc2luZyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzaG93X21pc3NpbmcnLCAnMScpOwovLyAgICB9Ci8vICAgICRleHRlbmRlciA9ICcnOwovLyAgICBpZigkYW50aWNhY2hlKQovLyAgICB7Ci8vICAgICAgJGV4dGVuZGVyID0gJyZhbXA7YWM9JzsKLy8gICAgICBmb3IoJHIgPSAwOyAkciA8IDU7ICRyKyspCi8vICAgICAgewovLyAgICAgICAgJGV4dGVuZGVyIC49IHJhbmQoMCwgOSk7Ci8vICAgICAgfQovLyAgICB9Ci8vCi8vICAgIHJldHVybiAkY29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy9DYXRhbG9nZXIvQ2F0YWxvZ2VyLkltYWdlLnBocD9pPScuJGFsaWFzLidfJy4kdHlwZS4nXycuJGltYWdlX251bWJlci4gJ18nLiRzaXplLigkZm9yY2VzaG93bWlzc2luZyA/ICdfMScgOiAnXycuJHRoaXMtPnNob3dNaXNzaW5nKS4nLmpwZycuJGV4dGVuZGVyOwovLyAgfQoKLy8gIGZ1bmN0aW9uIHNyY0ltYWdlU3BlYygkYWxpYXMsICRpbWFnZV9udW1iZXIpCi8vICB7Ci8vICAgICRjb25maWcgPSAkdGhpcy0+R2V0Q29uZmlnKCk7Ci8vICAgIGlmKCR0aGlzLT5zaG93TWlzc2luZyA9PSAnJykKLy8gICAgewovLyAgICAgICR0aGlzLT5zaG93TWlzc2luZyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzaG93X21pc3NpbmcnLCAnMScpOwovLyAgICB9Ci8vCi8vICAgIGlmKCEkdGhpcy0+c3JjRXhpc3RzKCRhbGlhcywgJGltYWdlX251bWJlcikgKQovLyAgICB7Ci8vICAgICAgaWYoJHRoaXMtPnNob3dNaXNzaW5nICE9ICcxJykKLy8gICAgICB7Ci8vICAgICAgICByZXR1cm4gJGNvbmZpZ1sncm9vdF91cmwnXS4nL21vZHVsZXMvQ2F0YWxvZ2VyL2ltYWdlcy90cmFucy5naWYnOwovLyAgICAgIH0KLy8gICAgICBlbHNlCi8vICAgICAgewovLyAgICAgICAgcmV0dXJuICRjb25maWdbJ3Jvb3RfdXJsJ10uJy9tb2R1bGVzL0NhdGFsb2dlci9pbWFnZXMvbm8taW1hZ2UuZ2lmJzsKLy8gICAgICB9Ci8vICAgIH0KLy8gICAgZWxzZQovLyAgICB7Ci8vICAgICAgcmV0dXJuICRjb25maWdbJ3VwbG9hZHNfdXJsJ10uJHRoaXMtPmdldEFzc2V0UGF0aCgncycpLicvJy4kYWxpYXMuJ19zcmNfJy4kaW1hZ2VfbnVtYmVyLicuanBnJzsKLy8gICAgfQovLyAgfQovLwovLyAgZnVuY3Rpb24gc3JjRXhpc3RzKCRhbGlhcywgJGltYWdlX251bWJlcikKLy8gIHsKLy8gICAgJGNvbmZpZyA9ICR0aGlzLT5HZXRDb25maWcoKTsKLy8gICAgJHNyY1NwZWMgPSAkY29uZmlnWyd1cGxvYWRzX3BhdGgnXS4kdGhpcy0+Z2V0QXNzZXRQYXRoKCdzJykuJy8nLiRhbGlhcy4nX3NyY18nLiRpbWFnZV9udW1iZXIuJy5qcGcnOwovLyAgICByZXR1cm4gZmlsZV9leGlzdHMoJHNyY1NwZWMpOwovLyAgfQovLwovLwovLyAgZnVuY3Rpb24gZ2V0RmlsZXMoJGFsaWFzKQovLyAgewovLyAgICAkY29uZmlnID0gJHRoaXMtPkdldENvbmZpZygpOwovLwovLyAgICAkZGlyc3BlYyA9ICRjb25maWdbJ3VwbG9hZHNfcGF0aCddLiR0aGlzLT5nZXRBc3NldFBhdGgoJ2YnKS4nLycuJGFsaWFzOwovLyAgICAkZmlsZXMgPSBhcnJheSgpOwovLyAgICAkdHlwZXMgPSBhcnJheSgpOwovLyAgICBpZihpc19kaXIoJGRpcnNwZWMpICkKLy8gICAgewovLyAgICAgICRkaCA9IG9wZW5kaXIoJGRpcnNwZWMpOwovLyAgICAgIHdoaWxlKGZhbHNlICE9PSAoJGZpbGVuYW1lID0gcmVhZGRpcigkZGgpICkgKQovLyAgICAgIHsKLy8gICAgICAgIGlmKCRmaWxlbmFtZSAhPSAnLicgJiYgJGZpbGVuYW1lICE9ICcuLicpCi8vICAgICAgICB7Ci8vICAgICAgICAgICRmaWxlc1tdID0gJGZpbGVuYW1lOwovLyAgICAgICAgICBpZihzdHJwb3MoJGZpbGVuYW1lLCAnLicpICE9PSBmYWxzZSkKLy8gICAgICAgICAgewovLyAgICAgICAgICAgICR0eXBlc1tdID0gc3Vic3RyKCRmaWxlbmFtZSwgc3RycnBvcygkZmlsZW5hbWUsICcuJykgKyAxKTsKLy8gICAgICAgICAgfQovLyAgICAgICAgICBlbHNlCi8vICAgICAgICAgIHsKLy8gICAgICAgICAgICAkdHlwZXNbXSA9ICc/JzsKLy8gICAgICAgICAgfQovLyAgICAgICAgfQovLyAgICAgIH0KLy8gICAgfQovLyAgICByZXR1cm4gYXJyYXkoJGZpbGVzLCAkdHlwZXMpOwovLyAgfQovLwovLyAgZnVuY3Rpb24gcHVyZ2VBbGxJbWFnZSgkYWxpYXMsICRpbWFnZU51bWJlcikKLy8gIHsKLy8gICAgJHRoaXMtPnB1cmdlU2NhbGVkSW1hZ2VzKCRhbGlhcywgJGltYWdlTnVtYmVyKTsKLy8gICAgJHRoaXMtPnB1cmdlU291cmNlSW1hZ2UoJGFsaWFzLCAkaW1hZ2VOdW1iZXIpOwovLyAgfQovLwovLyAgZnVuY3Rpb24gcHVyZ2VTY2FsZWRJbWFnZXMoJGFsaWFzLCAkaW1hZ2VOdW1iZXIpCi8vICB7Ci8vICAgICRjb25maWcgPSAkdGhpcy0+R2V0Q29uZmlnKCk7Ci8vICAgICRzcmNEaXIgPSAkY29uZmlnWyd1cGxvYWRzX3BhdGgnXS4kdGhpcy0+Z2V0QXNzZXRQYXRoKCdmJykuJy8nOwovLyAgICAkdG9EZWwgPSBhcnJheSgpOwovLyAgICBpZigkZGggPSBvcGVuZGlyKCRzcmNEaXIpICkKLy8gICAgewovLyAgICAgIHdoaWxlKCAoJGZpbGUgPSByZWFkZGlyKCRkaCkgKSAhPT0gZmFsc2UpCi8vICAgICAgewovLyAgICAgICAgJGZpbGVQYXJ0cyA9IGV4cGxvZGUoJ18nLCAkZmlsZSk7Ci8vICAgICAgICBpZigkZmlsZVBhcnRzWzBdID09ICRhbGlhcyAmJiAkZmlsZVBhcnRzWzJdID09ICRpbWFnZU51bWJlcikKLy8gICAgICAgIHsKLy8gICAgICAgICAgYXJyYXlfcHVzaCgkdG9EZWwsICRzcmNEaXIuJy8nLiRmaWxlKTsKLy8gICAgICAgIH0KLy8gICAgICB9Ci8vICAgICAgY2xvc2VkaXIoJGRoKTsKLy8gICAgfQovLyAgICBmb3JlYWNoKCR0b0RlbCBhcyAkdGhpc0RlbCkKLy8gICAgewovLyAgICAgIHVubGluaygkdGhpc0RlbCk7Ci8vICAgIH0KLy8gIH0KLy8KLy8gIGZ1bmN0aW9uIHB1cmdlU291cmNlSW1hZ2UoJGFsaWFzLCAkaW1hZ2VOdW1iZXIpCi8vICB7Ci8vICAgICRjb25maWcgPSAkdGhpcy0+R2V0Q29uZmlnKCk7Ci8vICAgICRzcmNTcGVjID0gJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10uJHRoaXMtPmdldEFzc2V0UGF0aCgncycpLicvJy4kYWxpYXMuJ19zcmNfJy4kaW1hZ2VOdW1iZXIuJy5qcGcnOwovLyAgICB1bmxpbmsoJHNyY1NwZWMpOwovLyAgfQovLwovLwovLyAgZnVuY3Rpb24gcmVuYW1lSW1hZ2VzKCRvbGQsICRuZXdBbGlhcykKLy8gIHsKLy8gICAgJGNvbmZpZyA9ICR0aGlzLT5HZXRDb25maWcoKTsKLy8gICAgaWYoJGhhbmRsZSA9IG9wZW5kaXIoJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10uJHRoaXMtPmdldEFzc2V0UGF0aCgncycpLicvJykgKQovLyAgICB7Ci8vICAgICAgd2hpbGUoZmFsc2UgIT09ICgkZmlsZSA9IHJlYWRkaXIoJGhhbmRsZSkgKSApCi8vICAgICAgewovLyAgICAgICAgaWYoc3Vic3RyKCRmaWxlLCAwLCBzdHJsZW4oJG9sZCkgKSA9PSAkb2xkKQovLyAgICAgICAgewovLyAgICAgICAgICAkbmV3c3BlYyA9ICRuZXdBbGlhcy5zdWJzdHIoJGZpbGUsIHN0cmxlbigkb2xkKSApOwovLyAgICAgICAgICByZW5hbWUoJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10uJHRoaXMtPmdldEFzc2V0UGF0aCgncycpLicvJy4kZmlsZSwgJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10uJHRoaXMtPmdldEFzc2V0UGF0aCgncycpLicvJy4kbmV3c3BlYyk7Ci8vICAgICAgICB9Ci8vICAgICAgfQovLyAgICAgIGNsb3NlZGlyKCRoYW5kbGUpOwovLyAgICB9Ci8vICB9CgoKICBmdW5jdGlvbiBkaXNwbGF5RXJyb3IoJG1lc3NhZ2UpCiAgewogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlcnJvcicsJG1lc3NhZ2UpOwogICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdlcnJvci50cGwnKTsKICB9CgogIGZ1bmN0aW9uIGdldEZpZWxkVHlwZXMoKQogIHsKICAgIHJldHVybiBhcnJheSgndGV4dCcgPT4gJHRoaXMtPkxhbmcoJ3RleHQnKSwgJ3NlbGVjdCcgPT4gJHRoaXMtPkxhbmcoJ2Ryb3Bkb3duJyksICd0ZXh0YXJlYScgPT4gJHRoaXMtPkxhbmcoJ3RleHRhcmVhJyksICdjaGVja2JveCcgPT4gJHRoaXMtPkxhbmcoJ2NoZWNrYm94JykpOwogIH0KCiAgLy8gZGVwcmVjYXRlZAogIGZ1bmN0aW9uIGF0dHJpYnV0ZUlucHV0KCRvd25lciwgJHRoaXNBdHRyLCAkd3lzaXd5ZyA9IHRydWUsICRzdHlsZXNoZWV0ID0gJycpCiAgewogICAgJHYgPSAkb3duZXItPkdldFByb3BlcnR5VmFsdWUoJHRoaXNBdHRyLT5hdHRyKTsKCiAgICBpZihlbXB0eSgkdikgJiYgIWVtcHR5KCR0aGlzQXR0ci0+ZGVmYXVsdCkgKQogICAgewogICAgICAkdiA9ICR0aGlzQXR0ci0+ZGVmYXVsdDsKICAgIH0KCiAgICBpZigkdGhpc0F0dHItPmZpZWxkX3R5cGUgPT0gJ3NlbGVjdCcpCiAgICB7CiAgICAgICRzZWxlY3RfdmFsdWVzID0gYXJyYXkoKTsKICAgICAgaWYoaXNzZXQoJHRoaXNBdHRyLT5zZWxlY3RfdmFsdWVzKSAmJiAkdGhpc0F0dHItPnNlbGVjdF92YWx1ZXMgIT0gJycpCiAgICAgIHsKICAgICAgICAkc2VsZWN0X3ZhbHVlcyA9IGFycmF5X21hcCgndHJpbScsIGV4cGxvZGUoJywnLCBodG1sc3BlY2lhbGNoYXJzKCR0aGlzQXR0ci0+c2VsZWN0X3ZhbHVlcywgRU5UX1FVT1RFUykgKSApOwogICAgICB9CiAgICAgIAogICAgICAkdG9fcmV0ID0gJzxzZWxlY3QgdHlwZT0iZHJvcGRvd24iIG5hbWU9IicuJHRoaXNBdHRyLT5zYWZlLiciPic7CiAgICAgIAogICAgICBmb3JlYWNoKCRzZWxlY3RfdmFsdWVzIGFzICRvbmVfdmFsKQogICAgICB7CiAgICAgICAgJHRvX3JldCAuPSAnPG9wdGlvbiB2YWx1ZT0iJy4kb25lX3ZhbC4nIic7CiAgICAgICAgaWYoaHRtbHNwZWNpYWxjaGFycygkdiwgRU5UX1FVT1RFUykgPT0gJG9uZV92YWwpCiAgICAgICAgewogICAgICAgICAgJHRvX3JldCAuPSAnIHNlbGVjdGVkPSJzZWxlY3RlZCInOwogICAgICAgIH0KICAgICAgICAkdG9fcmV0IC49ICc+Jy4kb25lX3ZhbC4nPC9vcHRpb24+JzsKICAgICAgfQogICAgICAKICAgICAgJHRvX3JldCAuPSAnPC9zZWxlY3Q+JzsKICAgICAgCiAgICAgIHJldHVybiBhcnJheSgkdGhpc0F0dHItPmF0dHIsICR0b19yZXQpOwogICAgfQogICAgZWxzZSBpZigkdGhpc0F0dHItPmZpZWxkX3R5cGUgPT0gJ3RleHRhcmVhJykKICAgIHsKICAgICAgcmV0dXJuIGFycmF5KCR0aGlzQXR0ci0+YXR0ciwgY3JlYXRlX3RleHRhcmVhKCR3eXNpd3lnLCAkdiwgJHRoaXNBdHRyLT5zYWZlLCAnJywgJHRoaXNBdHRyLT5hdHRyLCAnJywgJHN0eWxlc2hlZXQsIDgwLCAxMCkgKTsKICAgIH0KICAgIGVsc2UgaWYoJHRoaXNBdHRyLT5maWVsZF90eXBlID09ICdjaGVja2JveCcpCiAgICB7CiAgICAgIGlmKGlzc2V0KCR0aGlzQXR0ci0+c2VsZWN0X3ZhbHVlcykgJiYgc3RycG9zKCR0aGlzQXR0ci0+c2VsZWN0X3ZhbHVlcywgJywnKSAhPT0gZmFsc2UpCiAgICAgIHsKICAgICAgICBsaXN0KCRpcywgJGlzbnQpID0gZXhwbG9kZSgnLCcsICR0aGlzQXR0ci0+c2VsZWN0X3ZhbHVlcyk7CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgJGlzID0gJ1llcyc7CiAgICAgICAgJGlzbnQgPSAnTm8nOwogICAgICB9CiAgICAgIAogICAgICAkdG9fcmV0ID0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IicuJHRoaXNBdHRyLT5zYWZlLiciIHZhbHVlPSInLmh0bWxzcGVjaWFsY2hhcnMoJGlzbnQsIEVOVF9RVU9URVMpLiciLz4nOwogICAgICAkdG9fcmV0IC49ICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSInLiR0aGlzQXR0ci0+c2FmZSAuJyIgbmFtZT0iJy4kdGhpc0F0dHItPnNhZmUuJyIgdmFsdWU9IicuaHRtbHNwZWNpYWxjaGFycygkaXMsIEVOVF9RVU9URVMpLiciJzsKICAgICAgCiAgICAgIGlmKCR2ID09ICRpcykKICAgICAgewogICAgICAgICR0b19yZXQgLj0gJyBjaGVja2VkPSJjaGVja2VkIic7CiAgICAgIH0KICAgICAgJHRvX3JldCAuPSAnPjxsYWJlbCBmb3I9IicuJHRoaXNBdHRyLT5zYWZlLiciPicuJGlzLic8L2xhYmVsPic7CiAgICAgIHJldHVybiBhcnJheSgkdGhpc0F0dHItPmF0dHIsICR0b19yZXQpOwogICAgfQogICAgZWxzZQogICAgewogICAgICAkbCA9ICR0aGlzQXR0ci0+bGVuZ3RoOwoKICAgICAgaWYoZW1wdHkoJGwpICkKICAgICAgewogICAgICAgICRsID0gMjU7CiAgICAgICAgJG0gPSAxMDI0OwogICAgICB9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgICRtID0gJGw7CiAgICAgIH0KICAgICAgcmV0dXJuIGFycmF5KCR0aGlzQXR0ci0+YXR0ciwgJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSInLiR0aGlzQXR0ci0+c2FmZS4nIiB2YWx1ZT0iJy5odG1sc3BlY2lhbGNoYXJzKCR2LCBFTlRfUVVPVEVTKS4nIiBzaXplPSInLiRsLiciIG1heGxlbmd0aD0iJy4kbS4nIiAvPicpOwogICAgfQogIH0KCn0KPz4=]]></data>
	</file>
	<file>
	  <filename>/docs/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/docs/COPYING</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQ0KICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNw0KDQogQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiA8aHR0cDovL2ZzZi5vcmcvPg0KIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcw0KIG9mIHRoaXMgbGljZW5zZSBkb2N1bWVudCwgYnV0IGNoYW5naW5nIGl0IGlzIG5vdCBhbGxvd2VkLg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUNCg0KICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgYSBmcmVlLCBjb3B5bGVmdCBsaWNlbnNlIGZvcg0Kc29mdHdhcmUgYW5kIG90aGVyIGtpbmRzIG9mIHdvcmtzLg0KDQogIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhbmQgb3RoZXIgcHJhY3RpY2FsIHdvcmtzIGFyZSBkZXNpZ25lZA0KdG8gdGFrZSBhd2F5IHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIHRoZSB3b3Jrcy4gIEJ5IGNvbnRyYXN0LA0KdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8NCnNoYXJlIGFuZCBjaGFuZ2UgYWxsIHZlcnNpb25zIG9mIGEgcHJvZ3JhbS0tdG8gbWFrZSBzdXJlIGl0IHJlbWFpbnMgZnJlZQ0Kc29mdHdhcmUgZm9yIGFsbCBpdHMgdXNlcnMuICBXZSwgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgdXNlIHRoZQ0KR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vc3Qgb2Ygb3VyIHNvZnR3YXJlOyBpdCBhcHBsaWVzIGFsc28gdG8NCmFueSBvdGhlciB3b3JrIHJlbGVhc2VkIHRoaXMgd2F5IGJ5IGl0cyBhdXRob3JzLiAgWW91IGNhbiBhcHBseSBpdCB0bw0KeW91ciBwcm9ncmFtcywgdG9vLg0KDQogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QNCnByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UNCmhhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZSBmb3INCnRoZW0gaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQgaWYgeW91DQp3YW50IGl0LCB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBvciB1c2UgcGllY2VzIG9mIGl0IGluIG5ldw0KZnJlZSBwcm9ncmFtcywgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuDQoNCiAgVG8gcHJvdGVjdCB5b3VyIHJpZ2h0cywgd2UgbmVlZCB0byBwcmV2ZW50IG90aGVycyBmcm9tIGRlbnlpbmcgeW91DQp0aGVzZSByaWdodHMgb3IgYXNraW5nIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4gIFRoZXJlZm9yZSwgeW91IGhhdmUNCmNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZg0KeW91IG1vZGlmeSBpdDogcmVzcG9uc2liaWxpdGllcyB0byByZXNwZWN0IHRoZSBmcmVlZG9tIG9mIG90aGVycy4NCg0KICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyDQpncmF0aXMgb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBwYXNzIG9uIHRvIHRoZSByZWNpcGllbnRzIHRoZSBzYW1lDQpmcmVlZG9tcyB0aGF0IHlvdSByZWNlaXZlZC4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZQ0Kb3IgY2FuIGdldCB0aGUgc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkNCmtub3cgdGhlaXIgcmlnaHRzLg0KDQogIERldmVsb3BlcnMgdGhhdCB1c2UgdGhlIEdOVSBHUEwgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczoNCigxKSBhc3NlcnQgY29weXJpZ2h0IG9uIHRoZSBzb2Z0d2FyZSwgYW5kICgyKSBvZmZlciB5b3UgdGhpcyBMaWNlbnNlDQpnaXZpbmcgeW91IGxlZ2FsIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IGl0Lg0KDQogIEZvciB0aGUgZGV2ZWxvcGVycycgYW5kIGF1dGhvcnMnIHByb3RlY3Rpb24sIHRoZSBHUEwgY2xlYXJseSBleHBsYWlucw0KdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlIHNvZnR3YXJlLiAgRm9yIGJvdGggdXNlcnMnIGFuZA0KYXV0aG9ycycgc2FrZSwgdGhlIEdQTCByZXF1aXJlcyB0aGF0IG1vZGlmaWVkIHZlcnNpb25zIGJlIG1hcmtlZCBhcw0KY2hhbmdlZCwgc28gdGhhdCB0aGVpciBwcm9ibGVtcyB3aWxsIG5vdCBiZSBhdHRyaWJ1dGVkIGVycm9uZW91c2x5IHRvDQphdXRob3JzIG9mIHByZXZpb3VzIHZlcnNpb25zLg0KDQogIFNvbWUgZGV2aWNlcyBhcmUgZGVzaWduZWQgdG8gZGVueSB1c2VycyBhY2Nlc3MgdG8gaW5zdGFsbCBvciBydW4NCm1vZGlmaWVkIHZlcnNpb25zIG9mIHRoZSBzb2Z0d2FyZSBpbnNpZGUgdGhlbSwgYWx0aG91Z2ggdGhlIG1hbnVmYWN0dXJlcg0KY2FuIGRvIHNvLiAgVGhpcyBpcyBmdW5kYW1lbnRhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBhaW0gb2YNCnByb3RlY3RpbmcgdXNlcnMnIGZyZWVkb20gdG8gY2hhbmdlIHRoZSBzb2Z0d2FyZS4gIFRoZSBzeXN0ZW1hdGljDQpwYXR0ZXJuIG9mIHN1Y2ggYWJ1c2Ugb2NjdXJzIGluIHRoZSBhcmVhIG9mIHByb2R1Y3RzIGZvciBpbmRpdmlkdWFscyB0bw0KdXNlLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hlcmUgaXQgaXMgbW9zdCB1bmFjY2VwdGFibGUuICBUaGVyZWZvcmUsIHdlDQpoYXZlIGRlc2lnbmVkIHRoaXMgdmVyc2lvbiBvZiB0aGUgR1BMIHRvIHByb2hpYml0IHRoZSBwcmFjdGljZSBmb3IgdGhvc2UNCnByb2R1Y3RzLiAgSWYgc3VjaCBwcm9ibGVtcyBhcmlzZSBzdWJzdGFudGlhbGx5IGluIG90aGVyIGRvbWFpbnMsIHdlDQpzdGFuZCByZWFkeSB0byBleHRlbmQgdGhpcyBwcm92aXNpb24gdG8gdGhvc2UgZG9tYWlucyBpbiBmdXR1cmUgdmVyc2lvbnMNCm9mIHRoZSBHUEwsIGFzIG5lZWRlZCB0byBwcm90ZWN0IHRoZSBmcmVlZG9tIG9mIHVzZXJzLg0KDQogIEZpbmFsbHksIGV2ZXJ5IHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlIHBhdGVudHMuDQpTdGF0ZXMgc2hvdWxkIG5vdCBhbGxvdyBwYXRlbnRzIHRvIHJlc3RyaWN0IGRldmVsb3BtZW50IGFuZCB1c2Ugb2YNCnNvZnR3YXJlIG9uIGdlbmVyYWwtcHVycG9zZSBjb21wdXRlcnMsIGJ1dCBpbiB0aG9zZSB0aGF0IGRvLCB3ZSB3aXNoIHRvDQphdm9pZCB0aGUgc3BlY2lhbCBkYW5nZXIgdGhhdCBwYXRlbnRzIGFwcGxpZWQgdG8gYSBmcmVlIHByb2dyYW0gY291bGQNCm1ha2UgaXQgZWZmZWN0aXZlbHkgcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHRoZSBHUEwgYXNzdXJlcyB0aGF0DQpwYXRlbnRzIGNhbm5vdCBiZSB1c2VkIHRvIHJlbmRlciB0aGUgcHJvZ3JhbSBub24tZnJlZS4NCg0KICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZA0KbW9kaWZpY2F0aW9uIGZvbGxvdy4NCg0KICAgICAgICAgICAgICAgICAgICAgICBURVJNUyBBTkQgQ09ORElUSU9OUw0KDQogIDAuIERlZmluaXRpb25zLg0KDQogICJUaGlzIExpY2Vuc2UiIHJlZmVycyB0byB2ZXJzaW9uIDMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLg0KDQogICJDb3B5cmlnaHQiIGFsc28gbWVhbnMgY29weXJpZ2h0LWxpa2UgbGF3cyB0aGF0IGFwcGx5IHRvIG90aGVyIGtpbmRzIG9mDQp3b3Jrcywgc3VjaCBhcyBzZW1pY29uZHVjdG9yIG1hc2tzLg0KDQogICJUaGUgUHJvZ3JhbSIgcmVmZXJzIHRvIGFueSBjb3B5cmlnaHRhYmxlIHdvcmsgbGljZW5zZWQgdW5kZXIgdGhpcw0KTGljZW5zZS4gIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLiAgIkxpY2Vuc2VlcyIgYW5kDQoicmVjaXBpZW50cyIgbWF5IGJlIGluZGl2aWR1YWxzIG9yIG9yZ2FuaXphdGlvbnMuDQoNCiAgVG8gIm1vZGlmeSIgYSB3b3JrIG1lYW5zIHRvIGNvcHkgZnJvbSBvciBhZGFwdCBhbGwgb3IgcGFydCBvZiB0aGUgd29yaw0KaW4gYSBmYXNoaW9uIHJlcXVpcmluZyBjb3B5cmlnaHQgcGVybWlzc2lvbiwgb3RoZXIgdGhhbiB0aGUgbWFraW5nIG9mIGFuDQpleGFjdCBjb3B5LiAgVGhlIHJlc3VsdGluZyB3b3JrIGlzIGNhbGxlZCBhICJtb2RpZmllZCB2ZXJzaW9uIiBvZiB0aGUNCmVhcmxpZXIgd29yayBvciBhIHdvcmsgImJhc2VkIG9uIiB0aGUgZWFybGllciB3b3JrLg0KDQogIEEgImNvdmVyZWQgd29yayIgbWVhbnMgZWl0aGVyIHRoZSB1bm1vZGlmaWVkIFByb2dyYW0gb3IgYSB3b3JrIGJhc2VkDQpvbiB0aGUgUHJvZ3JhbS4NCg0KICBUbyAicHJvcGFnYXRlIiBhIHdvcmsgbWVhbnMgdG8gZG8gYW55dGhpbmcgd2l0aCBpdCB0aGF0LCB3aXRob3V0DQpwZXJtaXNzaW9uLCB3b3VsZCBtYWtlIHlvdSBkaXJlY3RseSBvciBzZWNvbmRhcmlseSBsaWFibGUgZm9yDQppbmZyaW5nZW1lbnQgdW5kZXIgYXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3LCBleGNlcHQgZXhlY3V0aW5nIGl0IG9uIGENCmNvbXB1dGVyIG9yIG1vZGlmeWluZyBhIHByaXZhdGUgY29weS4gIFByb3BhZ2F0aW9uIGluY2x1ZGVzIGNvcHlpbmcsDQpkaXN0cmlidXRpb24gKHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24pLCBtYWtpbmcgYXZhaWxhYmxlIHRvIHRoZQ0KcHVibGljLCBhbmQgaW4gc29tZSBjb3VudHJpZXMgb3RoZXIgYWN0aXZpdGllcyBhcyB3ZWxsLg0KDQogIFRvICJjb252ZXkiIGEgd29yayBtZWFucyBhbnkga2luZCBvZiBwcm9wYWdhdGlvbiB0aGF0IGVuYWJsZXMgb3RoZXINCnBhcnRpZXMgdG8gbWFrZSBvciByZWNlaXZlIGNvcGllcy4gIE1lcmUgaW50ZXJhY3Rpb24gd2l0aCBhIHVzZXIgdGhyb3VnaA0KYSBjb21wdXRlciBuZXR3b3JrLCB3aXRoIG5vIHRyYW5zZmVyIG9mIGEgY29weSwgaXMgbm90IGNvbnZleWluZy4NCg0KICBBbiBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZSBkaXNwbGF5cyAiQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcyINCnRvIHRoZSBleHRlbnQgdGhhdCBpdCBpbmNsdWRlcyBhIGNvbnZlbmllbnQgYW5kIHByb21pbmVudGx5IHZpc2libGUNCmZlYXR1cmUgdGhhdCAoMSkgZGlzcGxheXMgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSwgYW5kICgyKQ0KdGVsbHMgdGhlIHVzZXIgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhlIHdvcmsgKGV4Y2VwdCB0byB0aGUNCmV4dGVudCB0aGF0IHdhcnJhbnRpZXMgYXJlIHByb3ZpZGVkKSwgdGhhdCBsaWNlbnNlZXMgbWF5IGNvbnZleSB0aGUNCndvcmsgdW5kZXIgdGhpcyBMaWNlbnNlLCBhbmQgaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMgTGljZW5zZS4gIElmDQp0aGUgaW50ZXJmYWNlIHByZXNlbnRzIGEgbGlzdCBvZiB1c2VyIGNvbW1hbmRzIG9yIG9wdGlvbnMsIHN1Y2ggYXMgYQ0KbWVudSwgYSBwcm9taW5lbnQgaXRlbSBpbiB0aGUgbGlzdCBtZWV0cyB0aGlzIGNyaXRlcmlvbi4NCg0KICAxLiBTb3VyY2UgQ29kZS4NCg0KICBUaGUgInNvdXJjZSBjb2RlIiBmb3IgYSB3b3JrIG1lYW5zIHRoZSBwcmVmZXJyZWQgZm9ybSBvZiB0aGUgd29yaw0KZm9yIG1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgIk9iamVjdCBjb2RlIiBtZWFucyBhbnkgbm9uLXNvdXJjZQ0KZm9ybSBvZiBhIHdvcmsuDQoNCiAgQSAiU3RhbmRhcmQgSW50ZXJmYWNlIiBtZWFucyBhbiBpbnRlcmZhY2UgdGhhdCBlaXRoZXIgaXMgYW4gb2ZmaWNpYWwNCnN0YW5kYXJkIGRlZmluZWQgYnkgYSByZWNvZ25pemVkIHN0YW5kYXJkcyBib2R5LCBvciwgaW4gdGhlIGNhc2Ugb2YNCmludGVyZmFjZXMgc3BlY2lmaWVkIGZvciBhIHBhcnRpY3VsYXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIG9uZSB0aGF0DQppcyB3aWRlbHkgdXNlZCBhbW9uZyBkZXZlbG9wZXJzIHdvcmtpbmcgaW4gdGhhdCBsYW5ndWFnZS4NCg0KICBUaGUgIlN5c3RlbSBMaWJyYXJpZXMiIG9mIGFuIGV4ZWN1dGFibGUgd29yayBpbmNsdWRlIGFueXRoaW5nLCBvdGhlcg0KdGhhbiB0aGUgd29yayBhcyBhIHdob2xlLCB0aGF0IChhKSBpcyBpbmNsdWRlZCBpbiB0aGUgbm9ybWFsIGZvcm0gb2YNCnBhY2thZ2luZyBhIE1ham9yIENvbXBvbmVudCwgYnV0IHdoaWNoIGlzIG5vdCBwYXJ0IG9mIHRoYXQgTWFqb3INCkNvbXBvbmVudCwgYW5kIChiKSBzZXJ2ZXMgb25seSB0byBlbmFibGUgdXNlIG9mIHRoZSB3b3JrIHdpdGggdGhhdA0KTWFqb3IgQ29tcG9uZW50LCBvciB0byBpbXBsZW1lbnQgYSBTdGFuZGFyZCBJbnRlcmZhY2UgZm9yIHdoaWNoIGFuDQppbXBsZW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgdG8gdGhlIHB1YmxpYyBpbiBzb3VyY2UgY29kZSBmb3JtLiAgQQ0KIk1ham9yIENvbXBvbmVudCIsIGluIHRoaXMgY29udGV4dCwgbWVhbnMgYSBtYWpvciBlc3NlbnRpYWwgY29tcG9uZW50DQooa2VybmVsLCB3aW5kb3cgc3lzdGVtLCBhbmQgc28gb24pIG9mIHRoZSBzcGVjaWZpYyBvcGVyYXRpbmcgc3lzdGVtDQooaWYgYW55KSBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZSB3b3JrIHJ1bnMsIG9yIGEgY29tcGlsZXIgdXNlZCB0bw0KcHJvZHVjZSB0aGUgd29yaywgb3IgYW4gb2JqZWN0IGNvZGUgaW50ZXJwcmV0ZXIgdXNlZCB0byBydW4gaXQuDQoNCiAgVGhlICJDb3JyZXNwb25kaW5nIFNvdXJjZSIgZm9yIGEgd29yayBpbiBvYmplY3QgY29kZSBmb3JtIG1lYW5zIGFsbA0KdGhlIHNvdXJjZSBjb2RlIG5lZWRlZCB0byBnZW5lcmF0ZSwgaW5zdGFsbCwgYW5kIChmb3IgYW4gZXhlY3V0YWJsZQ0Kd29yaykgcnVuIHRoZSBvYmplY3QgY29kZSBhbmQgdG8gbW9kaWZ5IHRoZSB3b3JrLCBpbmNsdWRpbmcgc2NyaXB0cyB0bw0KY29udHJvbCB0aG9zZSBhY3Rpdml0aWVzLiAgSG93ZXZlciwgaXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgd29yaydzDQpTeXN0ZW0gTGlicmFyaWVzLCBvciBnZW5lcmFsLXB1cnBvc2UgdG9vbHMgb3IgZ2VuZXJhbGx5IGF2YWlsYWJsZSBmcmVlDQpwcm9ncmFtcyB3aGljaCBhcmUgdXNlZCB1bm1vZGlmaWVkIGluIHBlcmZvcm1pbmcgdGhvc2UgYWN0aXZpdGllcyBidXQNCndoaWNoIGFyZSBub3QgcGFydCBvZiB0aGUgd29yay4gIEZvciBleGFtcGxlLCBDb3JyZXNwb25kaW5nIFNvdXJjZQ0KaW5jbHVkZXMgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMgYXNzb2NpYXRlZCB3aXRoIHNvdXJjZSBmaWxlcyBmb3INCnRoZSB3b3JrLCBhbmQgdGhlIHNvdXJjZSBjb2RlIGZvciBzaGFyZWQgbGlicmFyaWVzIGFuZCBkeW5hbWljYWxseQ0KbGlua2VkIHN1YnByb2dyYW1zIHRoYXQgdGhlIHdvcmsgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIHJlcXVpcmUsDQpzdWNoIGFzIGJ5IGludGltYXRlIGRhdGEgY29tbXVuaWNhdGlvbiBvciBjb250cm9sIGZsb3cgYmV0d2VlbiB0aG9zZQ0Kc3VicHJvZ3JhbXMgYW5kIG90aGVyIHBhcnRzIG9mIHRoZSB3b3JrLg0KDQogIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBuZWVkIG5vdCBpbmNsdWRlIGFueXRoaW5nIHRoYXQgdXNlcnMNCmNhbiByZWdlbmVyYXRlIGF1dG9tYXRpY2FsbHkgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgQ29ycmVzcG9uZGluZw0KU291cmNlLg0KDQogIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBmb3IgYSB3b3JrIGluIHNvdXJjZSBjb2RlIGZvcm0gaXMgdGhhdA0Kc2FtZSB3b3JrLg0KDQogIDIuIEJhc2ljIFBlcm1pc3Npb25zLg0KDQogIEFsbCByaWdodHMgZ3JhbnRlZCB1bmRlciB0aGlzIExpY2Vuc2UgYXJlIGdyYW50ZWQgZm9yIHRoZSB0ZXJtIG9mDQpjb3B5cmlnaHQgb24gdGhlIFByb2dyYW0sIGFuZCBhcmUgaXJyZXZvY2FibGUgcHJvdmlkZWQgdGhlIHN0YXRlZA0KY29uZGl0aW9ucyBhcmUgbWV0LiAgVGhpcyBMaWNlbnNlIGV4cGxpY2l0bHkgYWZmaXJtcyB5b3VyIHVubGltaXRlZA0KcGVybWlzc2lvbiB0byBydW4gdGhlIHVubW9kaWZpZWQgUHJvZ3JhbS4gIFRoZSBvdXRwdXQgZnJvbSBydW5uaW5nIGENCmNvdmVyZWQgd29yayBpcyBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZSBvbmx5IGlmIHRoZSBvdXRwdXQsIGdpdmVuIGl0cw0KY29udGVudCwgY29uc3RpdHV0ZXMgYSBjb3ZlcmVkIHdvcmsuICBUaGlzIExpY2Vuc2UgYWNrbm93bGVkZ2VzIHlvdXINCnJpZ2h0cyBvZiBmYWlyIHVzZSBvciBvdGhlciBlcXVpdmFsZW50LCBhcyBwcm92aWRlZCBieSBjb3B5cmlnaHQgbGF3Lg0KDQogIFlvdSBtYXkgbWFrZSwgcnVuIGFuZCBwcm9wYWdhdGUgY292ZXJlZCB3b3JrcyB0aGF0IHlvdSBkbyBub3QNCmNvbnZleSwgd2l0aG91dCBjb25kaXRpb25zIHNvIGxvbmcgYXMgeW91ciBsaWNlbnNlIG90aGVyd2lzZSByZW1haW5zDQppbiBmb3JjZS4gIFlvdSBtYXkgY29udmV5IGNvdmVyZWQgd29ya3MgdG8gb3RoZXJzIGZvciB0aGUgc29sZSBwdXJwb3NlDQpvZiBoYXZpbmcgdGhlbSBtYWtlIG1vZGlmaWNhdGlvbnMgZXhjbHVzaXZlbHkgZm9yIHlvdSwgb3IgcHJvdmlkZSB5b3UNCndpdGggZmFjaWxpdGllcyBmb3IgcnVubmluZyB0aG9zZSB3b3JrcywgcHJvdmlkZWQgdGhhdCB5b3UgY29tcGx5IHdpdGgNCnRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UgaW4gY29udmV5aW5nIGFsbCBtYXRlcmlhbCBmb3Igd2hpY2ggeW91IGRvDQpub3QgY29udHJvbCBjb3B5cmlnaHQuICBUaG9zZSB0aHVzIG1ha2luZyBvciBydW5uaW5nIHRoZSBjb3ZlcmVkIHdvcmtzDQpmb3IgeW91IG11c3QgZG8gc28gZXhjbHVzaXZlbHkgb24geW91ciBiZWhhbGYsIHVuZGVyIHlvdXIgZGlyZWN0aW9uDQphbmQgY29udHJvbCwgb24gdGVybXMgdGhhdCBwcm9oaWJpdCB0aGVtIGZyb20gbWFraW5nIGFueSBjb3BpZXMgb2YNCnlvdXIgY29weXJpZ2h0ZWQgbWF0ZXJpYWwgb3V0c2lkZSB0aGVpciByZWxhdGlvbnNoaXAgd2l0aCB5b3UuDQoNCiAgQ29udmV5aW5nIHVuZGVyIGFueSBvdGhlciBjaXJjdW1zdGFuY2VzIGlzIHBlcm1pdHRlZCBzb2xlbHkgdW5kZXINCnRoZSBjb25kaXRpb25zIHN0YXRlZCBiZWxvdy4gIFN1YmxpY2Vuc2luZyBpcyBub3QgYWxsb3dlZDsgc2VjdGlvbiAxMA0KbWFrZXMgaXQgdW5uZWNlc3NhcnkuDQoNCiAgMy4gUHJvdGVjdGluZyBVc2VycycgTGVnYWwgUmlnaHRzIEZyb20gQW50aS1DaXJjdW12ZW50aW9uIExhdy4NCg0KICBObyBjb3ZlcmVkIHdvcmsgc2hhbGwgYmUgZGVlbWVkIHBhcnQgb2YgYW4gZWZmZWN0aXZlIHRlY2hub2xvZ2ljYWwNCm1lYXN1cmUgdW5kZXIgYW55IGFwcGxpY2FibGUgbGF3IGZ1bGZpbGxpbmcgb2JsaWdhdGlvbnMgdW5kZXIgYXJ0aWNsZQ0KMTEgb2YgdGhlIFdJUE8gY29weXJpZ2h0IHRyZWF0eSBhZG9wdGVkIG9uIDIwIERlY2VtYmVyIDE5OTYsIG9yDQpzaW1pbGFyIGxhd3MgcHJvaGliaXRpbmcgb3IgcmVzdHJpY3RpbmcgY2lyY3VtdmVudGlvbiBvZiBzdWNoDQptZWFzdXJlcy4NCg0KICBXaGVuIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHlvdSB3YWl2ZSBhbnkgbGVnYWwgcG93ZXIgdG8gZm9yYmlkDQpjaXJjdW12ZW50aW9uIG9mIHRlY2hub2xvZ2ljYWwgbWVhc3VyZXMgdG8gdGhlIGV4dGVudCBzdWNoIGNpcmN1bXZlbnRpb24NCmlzIGVmZmVjdGVkIGJ5IGV4ZXJjaXNpbmcgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZSB3aXRoIHJlc3BlY3QgdG8NCnRoZSBjb3ZlcmVkIHdvcmssIGFuZCB5b3UgZGlzY2xhaW0gYW55IGludGVudGlvbiB0byBsaW1pdCBvcGVyYXRpb24gb3INCm1vZGlmaWNhdGlvbiBvZiB0aGUgd29yayBhcyBhIG1lYW5zIG9mIGVuZm9yY2luZywgYWdhaW5zdCB0aGUgd29yaydzDQp1c2VycywgeW91ciBvciB0aGlyZCBwYXJ0aWVzJyBsZWdhbCByaWdodHMgdG8gZm9yYmlkIGNpcmN1bXZlbnRpb24gb2YNCnRlY2hub2xvZ2ljYWwgbWVhc3VyZXMuDQoNCiAgNC4gQ29udmV5aW5nIFZlcmJhdGltIENvcGllcy4NCg0KICBZb3UgbWF5IGNvbnZleSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhlIFByb2dyYW0ncyBzb3VyY2UgY29kZSBhcyB5b3UNCnJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91IGNvbnNwaWN1b3VzbHkgYW5kDQphcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2U7DQprZWVwIGludGFjdCBhbGwgbm90aWNlcyBzdGF0aW5nIHRoYXQgdGhpcyBMaWNlbnNlIGFuZCBhbnkNCm5vbi1wZXJtaXNzaXZlIHRlcm1zIGFkZGVkIGluIGFjY29yZCB3aXRoIHNlY3Rpb24gNyBhcHBseSB0byB0aGUgY29kZTsNCmtlZXAgaW50YWN0IGFsbCBub3RpY2VzIG9mIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsgYW5kIGdpdmUgYWxsDQpyZWNpcGllbnRzIGEgY29weSBvZiB0aGlzIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4NCg0KICBZb3UgbWF5IGNoYXJnZSBhbnkgcHJpY2Ugb3Igbm8gcHJpY2UgZm9yIGVhY2ggY29weSB0aGF0IHlvdSBjb252ZXksDQphbmQgeW91IG1heSBvZmZlciBzdXBwb3J0IG9yIHdhcnJhbnR5IHByb3RlY3Rpb24gZm9yIGEgZmVlLg0KDQogIDUuIENvbnZleWluZyBNb2RpZmllZCBTb3VyY2UgVmVyc2lvbnMuDQoNCiAgWW91IG1heSBjb252ZXkgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBvciB0aGUgbW9kaWZpY2F0aW9ucyB0bw0KcHJvZHVjZSBpdCBmcm9tIHRoZSBQcm9ncmFtLCBpbiB0aGUgZm9ybSBvZiBzb3VyY2UgY29kZSB1bmRlciB0aGUNCnRlcm1zIG9mIHNlY3Rpb24gNCwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOg0KDQogICAgYSkgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgeW91IG1vZGlmaWVkDQogICAgaXQsIGFuZCBnaXZpbmcgYSByZWxldmFudCBkYXRlLg0KDQogICAgYikgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgaXQgaXMNCiAgICByZWxlYXNlZCB1bmRlciB0aGlzIExpY2Vuc2UgYW5kIGFueSBjb25kaXRpb25zIGFkZGVkIHVuZGVyIHNlY3Rpb24NCiAgICA3LiAgVGhpcyByZXF1aXJlbWVudCBtb2RpZmllcyB0aGUgcmVxdWlyZW1lbnQgaW4gc2VjdGlvbiA0IHRvDQogICAgImtlZXAgaW50YWN0IGFsbCBub3RpY2VzIi4NCg0KICAgIGMpIFlvdSBtdXN0IGxpY2Vuc2UgdGhlIGVudGlyZSB3b3JrLCBhcyBhIHdob2xlLCB1bmRlciB0aGlzDQogICAgTGljZW5zZSB0byBhbnlvbmUgd2hvIGNvbWVzIGludG8gcG9zc2Vzc2lvbiBvZiBhIGNvcHkuICBUaGlzDQogICAgTGljZW5zZSB3aWxsIHRoZXJlZm9yZSBhcHBseSwgYWxvbmcgd2l0aCBhbnkgYXBwbGljYWJsZSBzZWN0aW9uIDcNCiAgICBhZGRpdGlvbmFsIHRlcm1zLCB0byB0aGUgd2hvbGUgb2YgdGhlIHdvcmssIGFuZCBhbGwgaXRzIHBhcnRzLA0KICAgIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZXkgYXJlIHBhY2thZ2VkLiAgVGhpcyBMaWNlbnNlIGdpdmVzIG5vDQogICAgcGVybWlzc2lvbiB0byBsaWNlbnNlIHRoZSB3b3JrIGluIGFueSBvdGhlciB3YXksIGJ1dCBpdCBkb2VzIG5vdA0KICAgIGludmFsaWRhdGUgc3VjaCBwZXJtaXNzaW9uIGlmIHlvdSBoYXZlIHNlcGFyYXRlbHkgcmVjZWl2ZWQgaXQuDQoNCiAgICBkKSBJZiB0aGUgd29yayBoYXMgaW50ZXJhY3RpdmUgdXNlciBpbnRlcmZhY2VzLCBlYWNoIG11c3QgZGlzcGxheQ0KICAgIEFwcHJvcHJpYXRlIExlZ2FsIE5vdGljZXM7IGhvd2V2ZXIsIGlmIHRoZSBQcm9ncmFtIGhhcyBpbnRlcmFjdGl2ZQ0KICAgIGludGVyZmFjZXMgdGhhdCBkbyBub3QgZGlzcGxheSBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzLCB5b3VyDQogICAgd29yayBuZWVkIG5vdCBtYWtlIHRoZW0gZG8gc28uDQoNCiAgQSBjb21waWxhdGlvbiBvZiBhIGNvdmVyZWQgd29yayB3aXRoIG90aGVyIHNlcGFyYXRlIGFuZCBpbmRlcGVuZGVudA0Kd29ya3MsIHdoaWNoIGFyZSBub3QgYnkgdGhlaXIgbmF0dXJlIGV4dGVuc2lvbnMgb2YgdGhlIGNvdmVyZWQgd29yaywNCmFuZCB3aGljaCBhcmUgbm90IGNvbWJpbmVkIHdpdGggaXQgc3VjaCBhcyB0byBmb3JtIGEgbGFyZ2VyIHByb2dyYW0sDQppbiBvciBvbiBhIHZvbHVtZSBvZiBhIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSwgaXMgY2FsbGVkIGFuDQoiYWdncmVnYXRlIiBpZiB0aGUgY29tcGlsYXRpb24gYW5kIGl0cyByZXN1bHRpbmcgY29weXJpZ2h0IGFyZSBub3QNCnVzZWQgdG8gbGltaXQgdGhlIGFjY2VzcyBvciBsZWdhbCByaWdodHMgb2YgdGhlIGNvbXBpbGF0aW9uJ3MgdXNlcnMNCmJleW9uZCB3aGF0IHRoZSBpbmRpdmlkdWFsIHdvcmtzIHBlcm1pdC4gIEluY2x1c2lvbiBvZiBhIGNvdmVyZWQgd29yaw0KaW4gYW4gYWdncmVnYXRlIGRvZXMgbm90IGNhdXNlIHRoaXMgTGljZW5zZSB0byBhcHBseSB0byB0aGUgb3RoZXINCnBhcnRzIG9mIHRoZSBhZ2dyZWdhdGUuDQoNCiAgNi4gQ29udmV5aW5nIE5vbi1Tb3VyY2UgRm9ybXMuDQoNCiAgWW91IG1heSBjb252ZXkgYSBjb3ZlcmVkIHdvcmsgaW4gb2JqZWN0IGNvZGUgZm9ybSB1bmRlciB0aGUgdGVybXMNCm9mIHNlY3Rpb25zIDQgYW5kIDUsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gY29udmV5IHRoZQ0KbWFjaGluZS1yZWFkYWJsZSBDb3JyZXNwb25kaW5nIFNvdXJjZSB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLA0KaW4gb25lIG9mIHRoZXNlIHdheXM6DQoNCiAgICBhKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGluLCBvciBlbWJvZGllZCBpbiwgYSBwaHlzaWNhbCBwcm9kdWN0DQogICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSB0aGUNCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSBmaXhlZCBvbiBhIGR1cmFibGUgcGh5c2ljYWwgbWVkaXVtDQogICAgY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2UuDQoNCiAgICBiKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGluLCBvciBlbWJvZGllZCBpbiwgYSBwaHlzaWNhbCBwcm9kdWN0DQogICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSBhDQogICAgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlIHllYXJzIGFuZCB2YWxpZCBmb3IgYXMNCiAgICBsb25nIGFzIHlvdSBvZmZlciBzcGFyZSBwYXJ0cyBvciBjdXN0b21lciBzdXBwb3J0IGZvciB0aGF0IHByb2R1Y3QNCiAgICBtb2RlbCwgdG8gZ2l2ZSBhbnlvbmUgd2hvIHBvc3Nlc3NlcyB0aGUgb2JqZWN0IGNvZGUgZWl0aGVyICgxKSBhDQogICAgY29weSBvZiB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgZm9yIGFsbCB0aGUgc29mdHdhcmUgaW4gdGhlDQogICAgcHJvZHVjdCB0aGF0IGlzIGNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlLCBvbiBhIGR1cmFibGUgcGh5c2ljYWwNCiAgICBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2UsIGZvciBhIHByaWNlIG5vDQogICAgbW9yZSB0aGFuIHlvdXIgcmVhc29uYWJsZSBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyB0aGlzDQogICAgY29udmV5aW5nIG9mIHNvdXJjZSwgb3IgKDIpIGFjY2VzcyB0byBjb3B5IHRoZQ0KICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGZyb20gYSBuZXR3b3JrIHNlcnZlciBhdCBubyBjaGFyZ2UuDQoNCiAgICBjKSBDb252ZXkgaW5kaXZpZHVhbCBjb3BpZXMgb2YgdGhlIG9iamVjdCBjb2RlIHdpdGggYSBjb3B5IG9mIHRoZQ0KICAgIHdyaXR0ZW4gb2ZmZXIgdG8gcHJvdmlkZSB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UuICBUaGlzDQogICAgYWx0ZXJuYXRpdmUgaXMgYWxsb3dlZCBvbmx5IG9jY2FzaW9uYWxseSBhbmQgbm9uY29tbWVyY2lhbGx5LCBhbmQNCiAgICBvbmx5IGlmIHlvdSByZWNlaXZlZCB0aGUgb2JqZWN0IGNvZGUgd2l0aCBzdWNoIGFuIG9mZmVyLCBpbiBhY2NvcmQNCiAgICB3aXRoIHN1YnNlY3Rpb24gNmIuDQoNCiAgICBkKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGJ5IG9mZmVyaW5nIGFjY2VzcyBmcm9tIGEgZGVzaWduYXRlZA0KICAgIHBsYWNlIChncmF0aXMgb3IgZm9yIGEgY2hhcmdlKSwgYW5kIG9mZmVyIGVxdWl2YWxlbnQgYWNjZXNzIHRvIHRoZQ0KICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGluIHRoZSBzYW1lIHdheSB0aHJvdWdoIHRoZSBzYW1lIHBsYWNlIGF0IG5vDQogICAgZnVydGhlciBjaGFyZ2UuICBZb3UgbmVlZCBub3QgcmVxdWlyZSByZWNpcGllbnRzIHRvIGNvcHkgdGhlDQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UgYWxvbmcgd2l0aCB0aGUgb2JqZWN0IGNvZGUuICBJZiB0aGUgcGxhY2UgdG8NCiAgICBjb3B5IHRoZSBvYmplY3QgY29kZSBpcyBhIG5ldHdvcmsgc2VydmVyLCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UNCiAgICBtYXkgYmUgb24gYSBkaWZmZXJlbnQgc2VydmVyIChvcGVyYXRlZCBieSB5b3Ugb3IgYSB0aGlyZCBwYXJ0eSkNCiAgICB0aGF0IHN1cHBvcnRzIGVxdWl2YWxlbnQgY29weWluZyBmYWNpbGl0aWVzLCBwcm92aWRlZCB5b3UgbWFpbnRhaW4NCiAgICBjbGVhciBkaXJlY3Rpb25zIG5leHQgdG8gdGhlIG9iamVjdCBjb2RlIHNheWluZyB3aGVyZSB0byBmaW5kIHRoZQ0KICAgIENvcnJlc3BvbmRpbmcgU291cmNlLiAgUmVnYXJkbGVzcyBvZiB3aGF0IHNlcnZlciBob3N0cyB0aGUNCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSwgeW91IHJlbWFpbiBvYmxpZ2F0ZWQgdG8gZW5zdXJlIHRoYXQgaXQgaXMNCiAgICBhdmFpbGFibGUgZm9yIGFzIGxvbmcgYXMgbmVlZGVkIHRvIHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLg0KDQogICAgZSkgQ29udmV5IHRoZSBvYmplY3QgY29kZSB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uLCBwcm92aWRlZA0KICAgIHlvdSBpbmZvcm0gb3RoZXIgcGVlcnMgd2hlcmUgdGhlIG9iamVjdCBjb2RlIGFuZCBDb3JyZXNwb25kaW5nDQogICAgU291cmNlIG9mIHRoZSB3b3JrIGFyZSBiZWluZyBvZmZlcmVkIHRvIHRoZSBnZW5lcmFsIHB1YmxpYyBhdCBubw0KICAgIGNoYXJnZSB1bmRlciBzdWJzZWN0aW9uIDZkLg0KDQogIEEgc2VwYXJhYmxlIHBvcnRpb24gb2YgdGhlIG9iamVjdCBjb2RlLCB3aG9zZSBzb3VyY2UgY29kZSBpcyBleGNsdWRlZA0KZnJvbSB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgYXMgYSBTeXN0ZW0gTGlicmFyeSwgbmVlZCBub3QgYmUNCmluY2x1ZGVkIGluIGNvbnZleWluZyB0aGUgb2JqZWN0IGNvZGUgd29yay4NCg0KICBBICJVc2VyIFByb2R1Y3QiIGlzIGVpdGhlciAoMSkgYSAiY29uc3VtZXIgcHJvZHVjdCIsIHdoaWNoIG1lYW5zIGFueQ0KdGFuZ2libGUgcGVyc29uYWwgcHJvcGVydHkgd2hpY2ggaXMgbm9ybWFsbHkgdXNlZCBmb3IgcGVyc29uYWwsIGZhbWlseSwNCm9yIGhvdXNlaG9sZCBwdXJwb3Nlcywgb3IgKDIpIGFueXRoaW5nIGRlc2lnbmVkIG9yIHNvbGQgZm9yIGluY29ycG9yYXRpb24NCmludG8gYSBkd2VsbGluZy4gIEluIGRldGVybWluaW5nIHdoZXRoZXIgYSBwcm9kdWN0IGlzIGEgY29uc3VtZXIgcHJvZHVjdCwNCmRvdWJ0ZnVsIGNhc2VzIHNoYWxsIGJlIHJlc29sdmVkIGluIGZhdm9yIG9mIGNvdmVyYWdlLiAgRm9yIGEgcGFydGljdWxhcg0KcHJvZHVjdCByZWNlaXZlZCBieSBhIHBhcnRpY3VsYXIgdXNlciwgIm5vcm1hbGx5IHVzZWQiIHJlZmVycyB0byBhDQp0eXBpY2FsIG9yIGNvbW1vbiB1c2Ugb2YgdGhhdCBjbGFzcyBvZiBwcm9kdWN0LCByZWdhcmRsZXNzIG9mIHRoZSBzdGF0dXMNCm9mIHRoZSBwYXJ0aWN1bGFyIHVzZXIgb3Igb2YgdGhlIHdheSBpbiB3aGljaCB0aGUgcGFydGljdWxhciB1c2VyDQphY3R1YWxseSB1c2VzLCBvciBleHBlY3RzIG9yIGlzIGV4cGVjdGVkIHRvIHVzZSwgdGhlIHByb2R1Y3QuICBBIHByb2R1Y3QNCmlzIGEgY29uc3VtZXIgcHJvZHVjdCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIHByb2R1Y3QgaGFzIHN1YnN0YW50aWFsDQpjb21tZXJjaWFsLCBpbmR1c3RyaWFsIG9yIG5vbi1jb25zdW1lciB1c2VzLCB1bmxlc3Mgc3VjaCB1c2VzIHJlcHJlc2VudA0KdGhlIG9ubHkgc2lnbmlmaWNhbnQgbW9kZSBvZiB1c2Ugb2YgdGhlIHByb2R1Y3QuDQoNCiAgIkluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiIgZm9yIGEgVXNlciBQcm9kdWN0IG1lYW5zIGFueSBtZXRob2RzLA0KcHJvY2VkdXJlcywgYXV0aG9yaXphdGlvbiBrZXlzLCBvciBvdGhlciBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBpbnN0YWxsDQphbmQgZXhlY3V0ZSBtb2RpZmllZCB2ZXJzaW9ucyBvZiBhIGNvdmVyZWQgd29yayBpbiB0aGF0IFVzZXIgUHJvZHVjdCBmcm9tDQphIG1vZGlmaWVkIHZlcnNpb24gb2YgaXRzIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhlIGluZm9ybWF0aW9uIG11c3QNCnN1ZmZpY2UgdG8gZW5zdXJlIHRoYXQgdGhlIGNvbnRpbnVlZCBmdW5jdGlvbmluZyBvZiB0aGUgbW9kaWZpZWQgb2JqZWN0DQpjb2RlIGlzIGluIG5vIGNhc2UgcHJldmVudGVkIG9yIGludGVyZmVyZWQgd2l0aCBzb2xlbHkgYmVjYXVzZQ0KbW9kaWZpY2F0aW9uIGhhcyBiZWVuIG1hZGUuDQoNCiAgSWYgeW91IGNvbnZleSBhbiBvYmplY3QgY29kZSB3b3JrIHVuZGVyIHRoaXMgc2VjdGlvbiBpbiwgb3Igd2l0aCwgb3INCnNwZWNpZmljYWxseSBmb3IgdXNlIGluLCBhIFVzZXIgUHJvZHVjdCwgYW5kIHRoZSBjb252ZXlpbmcgb2NjdXJzIGFzDQpwYXJ0IG9mIGEgdHJhbnNhY3Rpb24gaW4gd2hpY2ggdGhlIHJpZ2h0IG9mIHBvc3Nlc3Npb24gYW5kIHVzZSBvZiB0aGUNClVzZXIgUHJvZHVjdCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgcmVjaXBpZW50IGluIHBlcnBldHVpdHkgb3IgZm9yIGENCmZpeGVkIHRlcm0gKHJlZ2FyZGxlc3Mgb2YgaG93IHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyYWN0ZXJpemVkKSwgdGhlDQpDb3JyZXNwb25kaW5nIFNvdXJjZSBjb252ZXllZCB1bmRlciB0aGlzIHNlY3Rpb24gbXVzdCBiZSBhY2NvbXBhbmllZA0KYnkgdGhlIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbi4gIEJ1dCB0aGlzIHJlcXVpcmVtZW50IGRvZXMgbm90IGFwcGx5DQppZiBuZWl0aGVyIHlvdSBub3IgYW55IHRoaXJkIHBhcnR5IHJldGFpbnMgdGhlIGFiaWxpdHkgdG8gaW5zdGFsbA0KbW9kaWZpZWQgb2JqZWN0IGNvZGUgb24gdGhlIFVzZXIgUHJvZHVjdCAoZm9yIGV4YW1wbGUsIHRoZSB3b3JrIGhhcw0KYmVlbiBpbnN0YWxsZWQgaW4gUk9NKS4NCg0KICBUaGUgcmVxdWlyZW1lbnQgdG8gcHJvdmlkZSBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24gZG9lcyBub3QgaW5jbHVkZSBhDQpyZXF1aXJlbWVudCB0byBjb250aW51ZSB0byBwcm92aWRlIHN1cHBvcnQgc2VydmljZSwgd2FycmFudHksIG9yIHVwZGF0ZXMNCmZvciBhIHdvcmsgdGhhdCBoYXMgYmVlbiBtb2RpZmllZCBvciBpbnN0YWxsZWQgYnkgdGhlIHJlY2lwaWVudCwgb3IgZm9yDQp0aGUgVXNlciBQcm9kdWN0IGluIHdoaWNoIGl0IGhhcyBiZWVuIG1vZGlmaWVkIG9yIGluc3RhbGxlZC4gIEFjY2VzcyB0byBhDQpuZXR3b3JrIG1heSBiZSBkZW5pZWQgd2hlbiB0aGUgbW9kaWZpY2F0aW9uIGl0c2VsZiBtYXRlcmlhbGx5IGFuZA0KYWR2ZXJzZWx5IGFmZmVjdHMgdGhlIG9wZXJhdGlvbiBvZiB0aGUgbmV0d29yayBvciB2aW9sYXRlcyB0aGUgcnVsZXMgYW5kDQpwcm90b2NvbHMgZm9yIGNvbW11bmljYXRpb24gYWNyb3NzIHRoZSBuZXR3b3JrLg0KDQogIENvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkLCBhbmQgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIHByb3ZpZGVkLA0KaW4gYWNjb3JkIHdpdGggdGhpcyBzZWN0aW9uIG11c3QgYmUgaW4gYSBmb3JtYXQgdGhhdCBpcyBwdWJsaWNseQ0KZG9jdW1lbnRlZCAoYW5kIHdpdGggYW4gaW1wbGVtZW50YXRpb24gYXZhaWxhYmxlIHRvIHRoZSBwdWJsaWMgaW4NCnNvdXJjZSBjb2RlIGZvcm0pLCBhbmQgbXVzdCByZXF1aXJlIG5vIHNwZWNpYWwgcGFzc3dvcmQgb3Iga2V5IGZvcg0KdW5wYWNraW5nLCByZWFkaW5nIG9yIGNvcHlpbmcuDQoNCiAgNy4gQWRkaXRpb25hbCBUZXJtcy4NCg0KICAiQWRkaXRpb25hbCBwZXJtaXNzaW9ucyIgYXJlIHRlcm1zIHRoYXQgc3VwcGxlbWVudCB0aGUgdGVybXMgb2YgdGhpcw0KTGljZW5zZSBieSBtYWtpbmcgZXhjZXB0aW9ucyBmcm9tIG9uZSBvciBtb3JlIG9mIGl0cyBjb25kaXRpb25zLg0KQWRkaXRpb25hbCBwZXJtaXNzaW9ucyB0aGF0IGFyZSBhcHBsaWNhYmxlIHRvIHRoZSBlbnRpcmUgUHJvZ3JhbSBzaGFsbA0KYmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlIGluY2x1ZGVkIGluIHRoaXMgTGljZW5zZSwgdG8gdGhlIGV4dGVudA0KdGhhdCB0aGV5IGFyZSB2YWxpZCB1bmRlciBhcHBsaWNhYmxlIGxhdy4gIElmIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMNCmFwcGx5IG9ubHkgdG8gcGFydCBvZiB0aGUgUHJvZ3JhbSwgdGhhdCBwYXJ0IG1heSBiZSB1c2VkIHNlcGFyYXRlbHkNCnVuZGVyIHRob3NlIHBlcm1pc3Npb25zLCBidXQgdGhlIGVudGlyZSBQcm9ncmFtIHJlbWFpbnMgZ292ZXJuZWQgYnkNCnRoaXMgTGljZW5zZSB3aXRob3V0IHJlZ2FyZCB0byB0aGUgYWRkaXRpb25hbCBwZXJtaXNzaW9ucy4NCg0KICBXaGVuIHlvdSBjb252ZXkgYSBjb3B5IG9mIGEgY292ZXJlZCB3b3JrLCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uDQpyZW1vdmUgYW55IGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgZnJvbSB0aGF0IGNvcHksIG9yIGZyb20gYW55IHBhcnQgb2YNCml0LiAgKEFkZGl0aW9uYWwgcGVybWlzc2lvbnMgbWF5IGJlIHdyaXR0ZW4gdG8gcmVxdWlyZSB0aGVpciBvd24NCnJlbW92YWwgaW4gY2VydGFpbiBjYXNlcyB3aGVuIHlvdSBtb2RpZnkgdGhlIHdvcmsuKSAgWW91IG1heSBwbGFjZQ0KYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBvbiBtYXRlcmlhbCwgYWRkZWQgYnkgeW91IHRvIGEgY292ZXJlZCB3b3JrLA0KZm9yIHdoaWNoIHlvdSBoYXZlIG9yIGNhbiBnaXZlIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBwZXJtaXNzaW9uLg0KDQogIE5vdHdpdGhzdGFuZGluZyBhbnkgb3RoZXIgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSwgZm9yIG1hdGVyaWFsIHlvdQ0KYWRkIHRvIGEgY292ZXJlZCB3b3JrLCB5b3UgbWF5IChpZiBhdXRob3JpemVkIGJ5IHRoZSBjb3B5cmlnaHQgaG9sZGVycyBvZg0KdGhhdCBtYXRlcmlhbCkgc3VwcGxlbWVudCB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlIHdpdGggdGVybXM6DQoNCiAgICBhKSBEaXNjbGFpbWluZyB3YXJyYW50eSBvciBsaW1pdGluZyBsaWFiaWxpdHkgZGlmZmVyZW50bHkgZnJvbSB0aGUNCiAgICB0ZXJtcyBvZiBzZWN0aW9ucyAxNSBhbmQgMTYgb2YgdGhpcyBMaWNlbnNlOyBvcg0KDQogICAgYikgUmVxdWlyaW5nIHByZXNlcnZhdGlvbiBvZiBzcGVjaWZpZWQgcmVhc29uYWJsZSBsZWdhbCBub3RpY2VzIG9yDQogICAgYXV0aG9yIGF0dHJpYnV0aW9ucyBpbiB0aGF0IG1hdGVyaWFsIG9yIGluIHRoZSBBcHByb3ByaWF0ZSBMZWdhbA0KICAgIE5vdGljZXMgZGlzcGxheWVkIGJ5IHdvcmtzIGNvbnRhaW5pbmcgaXQ7IG9yDQoNCiAgICBjKSBQcm9oaWJpdGluZyBtaXNyZXByZXNlbnRhdGlvbiBvZiB0aGUgb3JpZ2luIG9mIHRoYXQgbWF0ZXJpYWwsIG9yDQogICAgcmVxdWlyaW5nIHRoYXQgbW9kaWZpZWQgdmVyc2lvbnMgb2Ygc3VjaCBtYXRlcmlhbCBiZSBtYXJrZWQgaW4NCiAgICByZWFzb25hYmxlIHdheXMgYXMgZGlmZmVyZW50IGZyb20gdGhlIG9yaWdpbmFsIHZlcnNpb247IG9yDQoNCiAgICBkKSBMaW1pdGluZyB0aGUgdXNlIGZvciBwdWJsaWNpdHkgcHVycG9zZXMgb2YgbmFtZXMgb2YgbGljZW5zb3JzIG9yDQogICAgYXV0aG9ycyBvZiB0aGUgbWF0ZXJpYWw7IG9yDQoNCiAgICBlKSBEZWNsaW5pbmcgdG8gZ3JhbnQgcmlnaHRzIHVuZGVyIHRyYWRlbWFyayBsYXcgZm9yIHVzZSBvZiBzb21lDQogICAgdHJhZGUgbmFtZXMsIHRyYWRlbWFya3MsIG9yIHNlcnZpY2UgbWFya3M7IG9yDQoNCiAgICBmKSBSZXF1aXJpbmcgaW5kZW1uaWZpY2F0aW9uIG9mIGxpY2Vuc29ycyBhbmQgYXV0aG9ycyBvZiB0aGF0DQogICAgbWF0ZXJpYWwgYnkgYW55b25lIHdobyBjb252ZXlzIHRoZSBtYXRlcmlhbCAob3IgbW9kaWZpZWQgdmVyc2lvbnMgb2YNCiAgICBpdCkgd2l0aCBjb250cmFjdHVhbCBhc3N1bXB0aW9ucyBvZiBsaWFiaWxpdHkgdG8gdGhlIHJlY2lwaWVudCwgZm9yDQogICAgYW55IGxpYWJpbGl0eSB0aGF0IHRoZXNlIGNvbnRyYWN0dWFsIGFzc3VtcHRpb25zIGRpcmVjdGx5IGltcG9zZSBvbg0KICAgIHRob3NlIGxpY2Vuc29ycyBhbmQgYXV0aG9ycy4NCg0KICBBbGwgb3RoZXIgbm9uLXBlcm1pc3NpdmUgYWRkaXRpb25hbCB0ZXJtcyBhcmUgY29uc2lkZXJlZCAiZnVydGhlcg0KcmVzdHJpY3Rpb25zIiB3aXRoaW4gdGhlIG1lYW5pbmcgb2Ygc2VjdGlvbiAxMC4gIElmIHRoZSBQcm9ncmFtIGFzIHlvdQ0KcmVjZWl2ZWQgaXQsIG9yIGFueSBwYXJ0IG9mIGl0LCBjb250YWlucyBhIG5vdGljZSBzdGF0aW5nIHRoYXQgaXQgaXMNCmdvdmVybmVkIGJ5IHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIGEgdGVybSB0aGF0IGlzIGEgZnVydGhlcg0KcmVzdHJpY3Rpb24sIHlvdSBtYXkgcmVtb3ZlIHRoYXQgdGVybS4gIElmIGEgbGljZW5zZSBkb2N1bWVudCBjb250YWlucw0KYSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGJ1dCBwZXJtaXRzIHJlbGljZW5zaW5nIG9yIGNvbnZleWluZyB1bmRlciB0aGlzDQpMaWNlbnNlLCB5b3UgbWF5IGFkZCB0byBhIGNvdmVyZWQgd29yayBtYXRlcmlhbCBnb3Zlcm5lZCBieSB0aGUgdGVybXMNCm9mIHRoYXQgbGljZW5zZSBkb2N1bWVudCwgcHJvdmlkZWQgdGhhdCB0aGUgZnVydGhlciByZXN0cmljdGlvbiBkb2VzDQpub3Qgc3Vydml2ZSBzdWNoIHJlbGljZW5zaW5nIG9yIGNvbnZleWluZy4NCg0KICBJZiB5b3UgYWRkIHRlcm1zIHRvIGEgY292ZXJlZCB3b3JrIGluIGFjY29yZCB3aXRoIHRoaXMgc2VjdGlvbiwgeW91DQptdXN0IHBsYWNlLCBpbiB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzLCBhIHN0YXRlbWVudCBvZiB0aGUNCmFkZGl0aW9uYWwgdGVybXMgdGhhdCBhcHBseSB0byB0aG9zZSBmaWxlcywgb3IgYSBub3RpY2UgaW5kaWNhdGluZw0Kd2hlcmUgdG8gZmluZCB0aGUgYXBwbGljYWJsZSB0ZXJtcy4NCg0KICBBZGRpdGlvbmFsIHRlcm1zLCBwZXJtaXNzaXZlIG9yIG5vbi1wZXJtaXNzaXZlLCBtYXkgYmUgc3RhdGVkIGluIHRoZQ0KZm9ybSBvZiBhIHNlcGFyYXRlbHkgd3JpdHRlbiBsaWNlbnNlLCBvciBzdGF0ZWQgYXMgZXhjZXB0aW9uczsNCnRoZSBhYm92ZSByZXF1aXJlbWVudHMgYXBwbHkgZWl0aGVyIHdheS4NCg0KICA4LiBUZXJtaW5hdGlvbi4NCg0KICBZb3UgbWF5IG5vdCBwcm9wYWdhdGUgb3IgbW9kaWZ5IGEgY292ZXJlZCB3b3JrIGV4Y2VwdCBhcyBleHByZXNzbHkNCnByb3ZpZGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEFueSBhdHRlbXB0IG90aGVyd2lzZSB0byBwcm9wYWdhdGUgb3INCm1vZGlmeSBpdCBpcyB2b2lkLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHRlcm1pbmF0ZSB5b3VyIHJpZ2h0cyB1bmRlcg0KdGhpcyBMaWNlbnNlIChpbmNsdWRpbmcgYW55IHBhdGVudCBsaWNlbnNlcyBncmFudGVkIHVuZGVyIHRoZSB0aGlyZA0KcGFyYWdyYXBoIG9mIHNlY3Rpb24gMTEpLg0KDQogIEhvd2V2ZXIsIGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhlbiB5b3VyDQpsaWNlbnNlIGZyb20gYSBwYXJ0aWN1bGFyIGNvcHlyaWdodCBob2xkZXIgaXMgcmVpbnN0YXRlZCAoYSkNCnByb3Zpc2lvbmFsbHksIHVubGVzcyBhbmQgdW50aWwgdGhlIGNvcHlyaWdodCBob2xkZXIgZXhwbGljaXRseSBhbmQNCmZpbmFsbHkgdGVybWluYXRlcyB5b3VyIGxpY2Vuc2UsIGFuZCAoYikgcGVybWFuZW50bHksIGlmIHRoZSBjb3B5cmlnaHQNCmhvbGRlciBmYWlscyB0byBub3RpZnkgeW91IG9mIHRoZSB2aW9sYXRpb24gYnkgc29tZSByZWFzb25hYmxlIG1lYW5zDQpwcmlvciB0byA2MCBkYXlzIGFmdGVyIHRoZSBjZXNzYXRpb24uDQoNCiAgTW9yZW92ZXIsIHlvdXIgbGljZW5zZSBmcm9tIGEgcGFydGljdWxhciBjb3B5cmlnaHQgaG9sZGVyIGlzDQpyZWluc3RhdGVkIHBlcm1hbmVudGx5IGlmIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vdGlmaWVzIHlvdSBvZiB0aGUNCnZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMsIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgeW91IGhhdmUNCnJlY2VpdmVkIG5vdGljZSBvZiB2aW9sYXRpb24gb2YgdGhpcyBMaWNlbnNlIChmb3IgYW55IHdvcmspIGZyb20gdGhhdA0KY29weXJpZ2h0IGhvbGRlciwgYW5kIHlvdSBjdXJlIHRoZSB2aW9sYXRpb24gcHJpb3IgdG8gMzAgZGF5cyBhZnRlcg0KeW91ciByZWNlaXB0IG9mIHRoZSBub3RpY2UuDQoNCiAgVGVybWluYXRpb24gb2YgeW91ciByaWdodHMgdW5kZXIgdGhpcyBzZWN0aW9uIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUNCmxpY2Vuc2VzIG9mIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzIG9yIHJpZ2h0cyBmcm9tIHlvdSB1bmRlcg0KdGhpcyBMaWNlbnNlLiAgSWYgeW91ciByaWdodHMgaGF2ZSBiZWVuIHRlcm1pbmF0ZWQgYW5kIG5vdCBwZXJtYW5lbnRseQ0KcmVpbnN0YXRlZCwgeW91IGRvIG5vdCBxdWFsaWZ5IHRvIHJlY2VpdmUgbmV3IGxpY2Vuc2VzIGZvciB0aGUgc2FtZQ0KbWF0ZXJpYWwgdW5kZXIgc2VjdGlvbiAxMC4NCg0KICA5LiBBY2NlcHRhbmNlIE5vdCBSZXF1aXJlZCBmb3IgSGF2aW5nIENvcGllcy4NCg0KICBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlIGluIG9yZGVyIHRvIHJlY2VpdmUgb3INCnJ1biBhIGNvcHkgb2YgdGhlIFByb2dyYW0uICBBbmNpbGxhcnkgcHJvcGFnYXRpb24gb2YgYSBjb3ZlcmVkIHdvcmsNCm9jY3VycmluZyBzb2xlbHkgYXMgYSBjb25zZXF1ZW5jZSBvZiB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uDQp0byByZWNlaXZlIGEgY29weSBsaWtld2lzZSBkb2VzIG5vdCByZXF1aXJlIGFjY2VwdGFuY2UuICBIb3dldmVyLA0Kbm90aGluZyBvdGhlciB0aGFuIHRoaXMgTGljZW5zZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gcHJvcGFnYXRlIG9yDQptb2RpZnkgYW55IGNvdmVyZWQgd29yay4gIFRoZXNlIGFjdGlvbnMgaW5mcmluZ2UgY29weXJpZ2h0IGlmIHlvdSBkbw0Kbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5IG1vZGlmeWluZyBvciBwcm9wYWdhdGluZyBhDQpjb3ZlcmVkIHdvcmssIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLg0KDQogIDEwLiBBdXRvbWF0aWMgTGljZW5zaW5nIG9mIERvd25zdHJlYW0gUmVjaXBpZW50cy4NCg0KICBFYWNoIHRpbWUgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5DQpyZWNlaXZlcyBhIGxpY2Vuc2UgZnJvbSB0aGUgb3JpZ2luYWwgbGljZW5zb3JzLCB0byBydW4sIG1vZGlmeSBhbmQNCnByb3BhZ2F0ZSB0aGF0IHdvcmssIHN1YmplY3QgdG8gdGhpcyBMaWNlbnNlLiAgWW91IGFyZSBub3QgcmVzcG9uc2libGUNCmZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHdpdGggdGhpcyBMaWNlbnNlLg0KDQogIEFuICJlbnRpdHkgdHJhbnNhY3Rpb24iIGlzIGEgdHJhbnNhY3Rpb24gdHJhbnNmZXJyaW5nIGNvbnRyb2wgb2YgYW4NCm9yZ2FuaXphdGlvbiwgb3Igc3Vic3RhbnRpYWxseSBhbGwgYXNzZXRzIG9mIG9uZSwgb3Igc3ViZGl2aWRpbmcgYW4NCm9yZ2FuaXphdGlvbiwgb3IgbWVyZ2luZyBvcmdhbml6YXRpb25zLiAgSWYgcHJvcGFnYXRpb24gb2YgYSBjb3ZlcmVkDQp3b3JrIHJlc3VsdHMgZnJvbSBhbiBlbnRpdHkgdHJhbnNhY3Rpb24sIGVhY2ggcGFydHkgdG8gdGhhdA0KdHJhbnNhY3Rpb24gd2hvIHJlY2VpdmVzIGEgY29weSBvZiB0aGUgd29yayBhbHNvIHJlY2VpdmVzIHdoYXRldmVyDQpsaWNlbnNlcyB0byB0aGUgd29yayB0aGUgcGFydHkncyBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCBoYWQgb3IgY291bGQNCmdpdmUgdW5kZXIgdGhlIHByZXZpb3VzIHBhcmFncmFwaCwgcGx1cyBhIHJpZ2h0IHRvIHBvc3Nlc3Npb24gb2YgdGhlDQpDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBmcm9tIHRoZSBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCwgaWYNCnRoZSBwcmVkZWNlc3NvciBoYXMgaXQgb3IgY2FuIGdldCBpdCB3aXRoIHJlYXNvbmFibGUgZWZmb3J0cy4NCg0KICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIgcmVzdHJpY3Rpb25zIG9uIHRoZSBleGVyY2lzZSBvZiB0aGUNCnJpZ2h0cyBncmFudGVkIG9yIGFmZmlybWVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEZvciBleGFtcGxlLCB5b3UgbWF5DQpub3QgaW1wb3NlIGEgbGljZW5zZSBmZWUsIHJveWFsdHksIG9yIG90aGVyIGNoYXJnZSBmb3IgZXhlcmNpc2Ugb2YNCnJpZ2h0cyBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIHlvdSBtYXkgbm90IGluaXRpYXRlIGxpdGlnYXRpb24NCihpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0DQphbnkgcGF0ZW50IGNsYWltIGlzIGluZnJpbmdlZCBieSBtYWtpbmcsIHVzaW5nLCBzZWxsaW5nLCBvZmZlcmluZyBmb3INCnNhbGUsIG9yIGltcG9ydGluZyB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbiBvZiBpdC4NCg0KICAxMS4gUGF0ZW50cy4NCg0KICBBICJjb250cmlidXRvciIgaXMgYSBjb3B5cmlnaHQgaG9sZGVyIHdobyBhdXRob3JpemVzIHVzZSB1bmRlciB0aGlzDQpMaWNlbnNlIG9mIHRoZSBQcm9ncmFtIG9yIGEgd29yayBvbiB3aGljaCB0aGUgUHJvZ3JhbSBpcyBiYXNlZC4gIFRoZQ0Kd29yayB0aHVzIGxpY2Vuc2VkIGlzIGNhbGxlZCB0aGUgY29udHJpYnV0b3IncyAiY29udHJpYnV0b3IgdmVyc2lvbiIuDQoNCiAgQSBjb250cmlidXRvcidzICJlc3NlbnRpYWwgcGF0ZW50IGNsYWltcyIgYXJlIGFsbCBwYXRlbnQgY2xhaW1zDQpvd25lZCBvciBjb250cm9sbGVkIGJ5IHRoZSBjb250cmlidXRvciwgd2hldGhlciBhbHJlYWR5IGFjcXVpcmVkIG9yDQpoZXJlYWZ0ZXIgYWNxdWlyZWQsIHRoYXQgd291bGQgYmUgaW5mcmluZ2VkIGJ5IHNvbWUgbWFubmVyLCBwZXJtaXR0ZWQNCmJ5IHRoaXMgTGljZW5zZSwgb2YgbWFraW5nLCB1c2luZywgb3Igc2VsbGluZyBpdHMgY29udHJpYnV0b3IgdmVyc2lvbiwNCmJ1dCBkbyBub3QgaW5jbHVkZSBjbGFpbXMgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgb25seSBhcyBhDQpjb25zZXF1ZW5jZSBvZiBmdXJ0aGVyIG1vZGlmaWNhdGlvbiBvZiB0aGUgY29udHJpYnV0b3IgdmVyc2lvbi4gIEZvcg0KcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAiY29udHJvbCIgaW5jbHVkZXMgdGhlIHJpZ2h0IHRvIGdyYW50DQpwYXRlbnQgc3VibGljZW5zZXMgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YNCnRoaXMgTGljZW5zZS4NCg0KICBFYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5b3UgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZQ0KcGF0ZW50IGxpY2Vuc2UgdW5kZXIgdGhlIGNvbnRyaWJ1dG9yJ3MgZXNzZW50aWFsIHBhdGVudCBjbGFpbXMsIHRvDQptYWtlLCB1c2UsIHNlbGwsIG9mZmVyIGZvciBzYWxlLCBpbXBvcnQgYW5kIG90aGVyd2lzZSBydW4sIG1vZGlmeSBhbmQNCnByb3BhZ2F0ZSB0aGUgY29udGVudHMgb2YgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24uDQoNCiAgSW4gdGhlIGZvbGxvd2luZyB0aHJlZSBwYXJhZ3JhcGhzLCBhICJwYXRlbnQgbGljZW5zZSIgaXMgYW55IGV4cHJlc3MNCmFncmVlbWVudCBvciBjb21taXRtZW50LCBob3dldmVyIGRlbm9taW5hdGVkLCBub3QgdG8gZW5mb3JjZSBhIHBhdGVudA0KKHN1Y2ggYXMgYW4gZXhwcmVzcyBwZXJtaXNzaW9uIHRvIHByYWN0aWNlIGEgcGF0ZW50IG9yIGNvdmVuYW50IG5vdCB0bw0Kc3VlIGZvciBwYXRlbnQgaW5mcmluZ2VtZW50KS4gIFRvICJncmFudCIgc3VjaCBhIHBhdGVudCBsaWNlbnNlIHRvIGENCnBhcnR5IG1lYW5zIHRvIG1ha2Ugc3VjaCBhbiBhZ3JlZW1lbnQgb3IgY29tbWl0bWVudCBub3QgdG8gZW5mb3JjZSBhDQpwYXRlbnQgYWdhaW5zdCB0aGUgcGFydHkuDQoNCiAgSWYgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywga25vd2luZ2x5IHJlbHlpbmcgb24gYSBwYXRlbnQgbGljZW5zZSwNCmFuZCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2Ugb2YgdGhlIHdvcmsgaXMgbm90IGF2YWlsYWJsZSBmb3IgYW55b25lDQp0byBjb3B5LCBmcmVlIG9mIGNoYXJnZSBhbmQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwgdGhyb3VnaCBhDQpwdWJsaWNseSBhdmFpbGFibGUgbmV0d29yayBzZXJ2ZXIgb3Igb3RoZXIgcmVhZGlseSBhY2Nlc3NpYmxlIG1lYW5zLA0KdGhlbiB5b3UgbXVzdCBlaXRoZXIgKDEpIGNhdXNlIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSB0byBiZSBzbw0KYXZhaWxhYmxlLCBvciAoMikgYXJyYW5nZSB0byBkZXByaXZlIHlvdXJzZWxmIG9mIHRoZSBiZW5lZml0IG9mIHRoZQ0KcGF0ZW50IGxpY2Vuc2UgZm9yIHRoaXMgcGFydGljdWxhciB3b3JrLCBvciAoMykgYXJyYW5nZSwgaW4gYSBtYW5uZXINCmNvbnNpc3RlbnQgd2l0aCB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoaXMgTGljZW5zZSwgdG8gZXh0ZW5kIHRoZSBwYXRlbnQNCmxpY2Vuc2UgdG8gZG93bnN0cmVhbSByZWNpcGllbnRzLiAgIktub3dpbmdseSByZWx5aW5nIiBtZWFucyB5b3UgaGF2ZQ0KYWN0dWFsIGtub3dsZWRnZSB0aGF0LCBidXQgZm9yIHRoZSBwYXRlbnQgbGljZW5zZSwgeW91ciBjb252ZXlpbmcgdGhlDQpjb3ZlcmVkIHdvcmsgaW4gYSBjb3VudHJ5LCBvciB5b3VyIHJlY2lwaWVudCdzIHVzZSBvZiB0aGUgY292ZXJlZCB3b3JrDQppbiBhIGNvdW50cnksIHdvdWxkIGluZnJpbmdlIG9uZSBvciBtb3JlIGlkZW50aWZpYWJsZSBwYXRlbnRzIGluIHRoYXQNCmNvdW50cnkgdGhhdCB5b3UgaGF2ZSByZWFzb24gdG8gYmVsaWV2ZSBhcmUgdmFsaWQuDQoNCiAgSWYsIHB1cnN1YW50IHRvIG9yIGluIGNvbm5lY3Rpb24gd2l0aCBhIHNpbmdsZSB0cmFuc2FjdGlvbiBvcg0KYXJyYW5nZW1lbnQsIHlvdSBjb252ZXksIG9yIHByb3BhZ2F0ZSBieSBwcm9jdXJpbmcgY29udmV5YW5jZSBvZiwgYQ0KY292ZXJlZCB3b3JrLCBhbmQgZ3JhbnQgYSBwYXRlbnQgbGljZW5zZSB0byBzb21lIG9mIHRoZSBwYXJ0aWVzDQpyZWNlaXZpbmcgdGhlIGNvdmVyZWQgd29yayBhdXRob3JpemluZyB0aGVtIHRvIHVzZSwgcHJvcGFnYXRlLCBtb2RpZnkNCm9yIGNvbnZleSBhIHNwZWNpZmljIGNvcHkgb2YgdGhlIGNvdmVyZWQgd29yaywgdGhlbiB0aGUgcGF0ZW50IGxpY2Vuc2UNCnlvdSBncmFudCBpcyBhdXRvbWF0aWNhbGx5IGV4dGVuZGVkIHRvIGFsbCByZWNpcGllbnRzIG9mIHRoZSBjb3ZlcmVkDQp3b3JrIGFuZCB3b3JrcyBiYXNlZCBvbiBpdC4NCg0KICBBIHBhdGVudCBsaWNlbnNlIGlzICJkaXNjcmltaW5hdG9yeSIgaWYgaXQgZG9lcyBub3QgaW5jbHVkZSB3aXRoaW4NCnRoZSBzY29wZSBvZiBpdHMgY292ZXJhZ2UsIHByb2hpYml0cyB0aGUgZXhlcmNpc2Ugb2YsIG9yIGlzDQpjb25kaXRpb25lZCBvbiB0aGUgbm9uLWV4ZXJjaXNlIG9mIG9uZSBvciBtb3JlIG9mIHRoZSByaWdodHMgdGhhdCBhcmUNCnNwZWNpZmljYWxseSBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIFlvdSBtYXkgbm90IGNvbnZleSBhIGNvdmVyZWQNCndvcmsgaWYgeW91IGFyZSBhIHBhcnR5IHRvIGFuIGFycmFuZ2VtZW50IHdpdGggYSB0aGlyZCBwYXJ0eSB0aGF0IGlzDQppbiB0aGUgYnVzaW5lc3Mgb2YgZGlzdHJpYnV0aW5nIHNvZnR3YXJlLCB1bmRlciB3aGljaCB5b3UgbWFrZSBwYXltZW50DQp0byB0aGUgdGhpcmQgcGFydHkgYmFzZWQgb24gdGhlIGV4dGVudCBvZiB5b3VyIGFjdGl2aXR5IG9mIGNvbnZleWluZw0KdGhlIHdvcmssIGFuZCB1bmRlciB3aGljaCB0aGUgdGhpcmQgcGFydHkgZ3JhbnRzLCB0byBhbnkgb2YgdGhlDQpwYXJ0aWVzIHdobyB3b3VsZCByZWNlaXZlIHRoZSBjb3ZlcmVkIHdvcmsgZnJvbSB5b3UsIGEgZGlzY3JpbWluYXRvcnkNCnBhdGVudCBsaWNlbnNlIChhKSBpbiBjb25uZWN0aW9uIHdpdGggY29waWVzIG9mIHRoZSBjb3ZlcmVkIHdvcmsNCmNvbnZleWVkIGJ5IHlvdSAob3IgY29waWVzIG1hZGUgZnJvbSB0aG9zZSBjb3BpZXMpLCBvciAoYikgcHJpbWFyaWx5DQpmb3IgYW5kIGluIGNvbm5lY3Rpb24gd2l0aCBzcGVjaWZpYyBwcm9kdWN0cyBvciBjb21waWxhdGlvbnMgdGhhdA0KY29udGFpbiB0aGUgY292ZXJlZCB3b3JrLCB1bmxlc3MgeW91IGVudGVyZWQgaW50byB0aGF0IGFycmFuZ2VtZW50LA0Kb3IgdGhhdCBwYXRlbnQgbGljZW5zZSB3YXMgZ3JhbnRlZCwgcHJpb3IgdG8gMjggTWFyY2ggMjAwNy4NCg0KICBOb3RoaW5nIGluIHRoaXMgTGljZW5zZSBzaGFsbCBiZSBjb25zdHJ1ZWQgYXMgZXhjbHVkaW5nIG9yIGxpbWl0aW5nDQphbnkgaW1wbGllZCBsaWNlbnNlIG9yIG90aGVyIGRlZmVuc2VzIHRvIGluZnJpbmdlbWVudCB0aGF0IG1heQ0Kb3RoZXJ3aXNlIGJlIGF2YWlsYWJsZSB0byB5b3UgdW5kZXIgYXBwbGljYWJsZSBwYXRlbnQgbGF3Lg0KDQogIDEyLiBObyBTdXJyZW5kZXIgb2YgT3RoZXJzJyBGcmVlZG9tLg0KDQogIElmIGNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3INCm90aGVyd2lzZSkgdGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgdGhleSBkbyBub3QNCmV4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90IGNvbnZleSBhDQpjb3ZlcmVkIHdvcmsgc28gYXMgdG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMNCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UgbWF5DQpub3QgY29udmV5IGl0IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiB5b3UgYWdyZWUgdG8gdGVybXMgdGhhdCBvYmxpZ2F0ZSB5b3UNCnRvIGNvbGxlY3QgYSByb3lhbHR5IGZvciBmdXJ0aGVyIGNvbnZleWluZyBmcm9tIHRob3NlIHRvIHdob20geW91IGNvbnZleQ0KdGhlIFByb2dyYW0sIHRoZSBvbmx5IHdheSB5b3UgY291bGQgc2F0aXNmeSBib3RoIHRob3NlIHRlcm1zIGFuZCB0aGlzDQpMaWNlbnNlIHdvdWxkIGJlIHRvIHJlZnJhaW4gZW50aXJlbHkgZnJvbSBjb252ZXlpbmcgdGhlIFByb2dyYW0uDQoNCiAgMTMuIFVzZSB3aXRoIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuDQoNCiAgTm90d2l0aHN0YW5kaW5nIGFueSBvdGhlciBwcm92aXNpb24gb2YgdGhpcyBMaWNlbnNlLCB5b3UgaGF2ZQ0KcGVybWlzc2lvbiB0byBsaW5rIG9yIGNvbWJpbmUgYW55IGNvdmVyZWQgd29yayB3aXRoIGEgd29yayBsaWNlbnNlZA0KdW5kZXIgdmVyc2lvbiAzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW50byBhIHNpbmdsZQ0KY29tYmluZWQgd29yaywgYW5kIHRvIGNvbnZleSB0aGUgcmVzdWx0aW5nIHdvcmsuICBUaGUgdGVybXMgb2YgdGhpcw0KTGljZW5zZSB3aWxsIGNvbnRpbnVlIHRvIGFwcGx5IHRvIHRoZSBwYXJ0IHdoaWNoIGlzIHRoZSBjb3ZlcmVkIHdvcmssDQpidXQgdGhlIHNwZWNpYWwgcmVxdWlyZW1lbnRzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsDQpzZWN0aW9uIDEzLCBjb25jZXJuaW5nIGludGVyYWN0aW9uIHRocm91Z2ggYSBuZXR3b3JrIHdpbGwgYXBwbHkgdG8gdGhlDQpjb21iaW5hdGlvbiBhcyBzdWNoLg0KDQogIDE0LiBSZXZpc2VkIFZlcnNpb25zIG9mIHRoaXMgTGljZW5zZS4NCg0KICBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucyBvZg0KdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAgU3VjaCBuZXcgdmVyc2lvbnMgd2lsbA0KYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvDQphZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4NCg0KICBFYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gIElmIHRoZQ0KUHJvZ3JhbSBzcGVjaWZpZXMgdGhhdCBhIGNlcnRhaW4gbnVtYmVyZWQgdmVyc2lvbiBvZiB0aGUgR05VIEdlbmVyYWwNClB1YmxpYyBMaWNlbnNlICJvciBhbnkgbGF0ZXIgdmVyc2lvbiIgYXBwbGllcyB0byBpdCwgeW91IGhhdmUgdGhlDQpvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBlaXRoZXIgb2YgdGhhdCBudW1iZXJlZA0KdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUNCkZvdW5kYXRpb24uICBJZiB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVyc2lvbiBudW1iZXIgb2YgdGhlDQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQNCmJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQoNCiAgSWYgdGhlIFByb2dyYW0gc3BlY2lmaWVzIHRoYXQgYSBwcm94eSBjYW4gZGVjaWRlIHdoaWNoIGZ1dHVyZQ0KdmVyc2lvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGNhbiBiZSB1c2VkLCB0aGF0IHByb3h5J3MNCnB1YmxpYyBzdGF0ZW1lbnQgb2YgYWNjZXB0YW5jZSBvZiBhIHZlcnNpb24gcGVybWFuZW50bHkgYXV0aG9yaXplcyB5b3UNCnRvIGNob29zZSB0aGF0IHZlcnNpb24gZm9yIHRoZSBQcm9ncmFtLg0KDQogIExhdGVyIGxpY2Vuc2UgdmVyc2lvbnMgbWF5IGdpdmUgeW91IGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50DQpwZXJtaXNzaW9ucy4gIEhvd2V2ZXIsIG5vIGFkZGl0aW9uYWwgb2JsaWdhdGlvbnMgYXJlIGltcG9zZWQgb24gYW55DQphdXRob3Igb3IgY29weXJpZ2h0IGhvbGRlciBhcyBhIHJlc3VsdCBvZiB5b3VyIGNob29zaW5nIHRvIGZvbGxvdyBhDQpsYXRlciB2ZXJzaW9uLg0KDQogIDE1LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5Lg0KDQogIFRIRVJFIElTIE5PIFdBUlJBTlRZIEZPUiBUSEUgUFJPR1JBTSwgVE8gVEhFIEVYVEVOVCBQRVJNSVRURUQgQlkNCkFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQNCkhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMgUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkNCk9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTU0VEIE9SIElNUExJRUQsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLA0KVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUyBUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0NCklTIFdJVEggWU9VLiAgU0hPVUxEIFRIRSBQUk9HUkFNIFBST1ZFIERFRkVDVElWRSwgWU9VIEFTU1VNRSBUSEUgQ09TVCBPRg0KQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLg0KDQogIDE2LiBMaW1pdGF0aW9uIG9mIExpYWJpbGl0eS4NCg0KICBJTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJTkcNCldJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTU9ESUZJRVMgQU5EL09SIENPTlZFWVMNClRIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWQ0KR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORyBPVVQgT0YgVEhFDQpVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUgUFJPR1JBTSAoSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBMT1NTIE9GDQpEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRA0KUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUiBQUk9HUkFNUyksDQpFVkVOIElGIFNVQ0ggSE9MREVSIE9SIE9USEVSIFBBUlRZIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GDQpTVUNIIERBTUFHRVMuDQoNCiAgMTcuIEludGVycHJldGF0aW9uIG9mIFNlY3Rpb25zIDE1IGFuZCAxNi4NCg0KICBJZiB0aGUgZGlzY2xhaW1lciBvZiB3YXJyYW50eSBhbmQgbGltaXRhdGlvbiBvZiBsaWFiaWxpdHkgcHJvdmlkZWQNCmFib3ZlIGNhbm5vdCBiZSBnaXZlbiBsb2NhbCBsZWdhbCBlZmZlY3QgYWNjb3JkaW5nIHRvIHRoZWlyIHRlcm1zLA0KcmV2aWV3aW5nIGNvdXJ0cyBzaGFsbCBhcHBseSBsb2NhbCBsYXcgdGhhdCBtb3N0IGNsb3NlbHkgYXBwcm94aW1hdGVzDQphbiBhYnNvbHV0ZSB3YWl2ZXIgb2YgYWxsIGNpdmlsIGxpYWJpbGl0eSBpbiBjb25uZWN0aW9uIHdpdGggdGhlDQpQcm9ncmFtLCB1bmxlc3MgYSB3YXJyYW50eSBvciBhc3N1bXB0aW9uIG9mIGxpYWJpbGl0eSBhY2NvbXBhbmllcyBhDQpjb3B5IG9mIHRoZSBQcm9ncmFtIGluIHJldHVybiBmb3IgYSBmZWUuDQoNCiAgICAgICAgICAgICAgICAgICAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUw0KDQogICAgICAgICAgICBIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMNCg0KICBJZiB5b3UgZGV2ZWxvcCBhIG5ldyBwcm9ncmFtLCBhbmQgeW91IHdhbnQgaXQgdG8gYmUgb2YgdGhlIGdyZWF0ZXN0DQpwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgdGhlIGJlc3Qgd2F5IHRvIGFjaGlldmUgdGhpcyBpcyB0byBtYWtlIGl0DQpmcmVlIHNvZnR3YXJlIHdoaWNoIGV2ZXJ5b25lIGNhbiByZWRpc3RyaWJ1dGUgYW5kIGNoYW5nZSB1bmRlciB0aGVzZSB0ZXJtcy4NCg0KICBUbyBkbyBzbywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgcHJvZ3JhbS4gIEl0IGlzIHNhZmVzdA0KdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQ0Kc3RhdGUgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdA0KdGhlICJjb3B5cmlnaHQiIGxpbmUgYW5kIGEgcG9pbnRlciB0byB3aGVyZSB0aGUgZnVsbCBub3RpY2UgaXMgZm91bmQuDQoNCiAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgcHJvZ3JhbSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPg0KICAgIENvcHlyaWdodCAoQykgPHllYXI+ICA8bmFtZSBvZiBhdXRob3I+DQoNCiAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3INCiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KDQogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCg0KICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uDQoNCkFsc28gYWRkIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjb250YWN0IHlvdSBieSBlbGVjdHJvbmljIGFuZCBwYXBlciBtYWlsLg0KDQogIElmIHRoZSBwcm9ncmFtIGRvZXMgdGVybWluYWwgaW50ZXJhY3Rpb24sIG1ha2UgaXQgb3V0cHV0IGEgc2hvcnQNCm5vdGljZSBsaWtlIHRoaXMgd2hlbiBpdCBzdGFydHMgaW4gYW4gaW50ZXJhY3RpdmUgbW9kZToNCg0KICAgIDxwcm9ncmFtPiAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4NCiAgICBUaGlzIHByb2dyYW0gY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZOyBmb3IgZGV0YWlscyB0eXBlIGBzaG93IHcnLg0KICAgIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2VsY29tZSB0byByZWRpc3RyaWJ1dGUgaXQNCiAgICB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnM7IHR5cGUgYHNob3cgYycgZm9yIGRldGFpbHMuDQoNClRoZSBoeXBvdGhldGljYWwgY29tbWFuZHMgYHNob3cgdycgYW5kIGBzaG93IGMnIHNob3VsZCBzaG93IHRoZSBhcHByb3ByaWF0ZQ0KcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBPZiBjb3Vyc2UsIHlvdXIgcHJvZ3JhbSdzIGNvbW1hbmRzDQptaWdodCBiZSBkaWZmZXJlbnQ7IGZvciBhIEdVSSBpbnRlcmZhY2UsIHlvdSB3b3VsZCB1c2UgYW4gImFib3V0IGJveCIuDQoNCiAgWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHNjaG9vbCwNCmlmIGFueSwgdG8gc2lnbiBhICJjb3B5cmlnaHQgZGlzY2xhaW1lciIgZm9yIHRoZSBwcm9ncmFtLCBpZiBuZWNlc3NhcnkuDQpGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzLCBhbmQgaG93IHRvIGFwcGx5IGFuZCBmb2xsb3cgdGhlIEdOVSBHUEwsIHNlZQ0KPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lg0KDQogIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBkb2VzIG5vdCBwZXJtaXQgaW5jb3Jwb3JhdGluZyB5b3VyIHByb2dyYW0NCmludG8gcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdQ0KbWF5IGNvbnNpZGVyIGl0IG1vcmUgdXNlZnVsIHRvIHBlcm1pdCBsaW5raW5nIHByb3ByaWV0YXJ5IGFwcGxpY2F0aW9ucyB3aXRoDQp0aGUgbGlicmFyeS4gIElmIHRoaXMgaXMgd2hhdCB5b3Ugd2FudCB0byBkbywgdXNlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwNClB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLiAgQnV0IGZpcnN0LCBwbGVhc2UgcmVhZA0KPGh0dHA6Ly93d3cuZ251Lm9yZy9waGlsb3NvcGh5L3doeS1ub3QtbGdwbC5odG1sPi4NCg==]]></data>
	</file>
	<file>
	  <filename>/docs/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/admin.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhIAAgAPfCAIKHNftGD6GmUj1HSLzGw/T09PLy8v7+/mRtcGBqbKWnplNbXUpcXWh4eWl6e0pTVObn5jlBQeDh4I+Uk0FKSzpBQXWMinR9fPj4+PX19e7u7m2EgWZuazpKSf3+/TtCQnB5fVtjYWN5eWp+e2lycW10cv7+/fHx8bvFv8HEwt/hxIuOmePk5fb372FlZvz8/IGVkrrCv1NeW1lraOPo55uenqqsr2dscPf4+Pn5+dzd3Jqcntna2cTHxT9IR1ZiXkhSUqi7tvj5+fv7952cp/Dw4+bm5neAfz5KSnqDiKCipk9hYISHh29wdayvrW+KiIaIioWHkpybq2Jqbu/v78XGyLe6ufDw8F1nZ8jLymJvbqSmqLe6vHl/fbCysZSXl+vu7p6opVNZXJCppGdvbl9obHqXk0xaWOHh4WFrbKyurWFrbcbIyX6SlDxERn6TlcnLybm7u0NWVOrr2GyCgDU8PLO7nGdwbj5GRTI5OWRrbXd8fOzs7JicnE1XVzpDQnyYmYOhnzZBQUxeXYyKmlhgZHqVkIGCj/r7+niBh5iXp3uYlHyFiY+loVdjYFpkYbCysuzt7Jeqqa+ysX+Di6+5ti01NLq9vH+Bi0JNTa2wrt/i4fT19Obn587Qz/X27WVucKWrqsLEw0JMS/X29l5hZ3d+ffDx8DtERllhZElZV5aZbHV+hIGZlVdpaf39/f///5udpN3h4Hh7gfT16zhEQ+bp6Pv8+/j5+EZTUWRpbeDi4Wd0dkVNUHB6eUlaWe7v4DxHR////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAMIALAAAAAAgACAAAAj/AIUJFBggwMCDCBMqRFgkgIqFECMSLPhJokWEBQteHHhgE4FKuxRmNLhRWIxFhsJwUggggAAAQzYaoBPI1kJaAAS8BLARjStAYBYCy7lzY5ZfTyTh8EADoQkARHlaLKBFzhIzY4I0SjgHKlQUEguQ6TBI1YxWMGQpbLEKgB0CBAos1HBBBIMzoUTBoRJRAtwOd+QivELCwgZHnUpCyMVAxAUNByX4ejMiBISSAg382GCBxCmBPGQ0cMDBAOaBGUKMaHPEiA4swWqVyHD6IAYODho8QsALSRcMtROWEDSgeJ8XwRNaMZVpgJ8EyQ8ecIIAwYBRQCgoOBD91YQpSShAiErwx0edFMlxfVnDCtUlgQosgUrgpfaJPQ9A4NF0UEEvRmVMcBEpbHCxhR4VfFBBDwlN4kYiaViUQyyHrBBFKgvk4QlEEYDwQESw2DBLDS5QgokYcVj0QQQQIaJGJMLw0YQUNwhx0QKFXLSDIkpEl5AHLBBBSBU+HmQAE7qUAsUtRTbp5JPBBQQAOw==]]></data>
	</file>
	<file>
	  <filename>/images/admin.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKhJREFUeNq1k0EKgCAQRb1EIHS/oG0QBN0mCLqBq1kJ4YmCIKiEHww2ahEtPg35fc6Mo3LOqYQIinpUBrBDjwADTtOnasQXgPBPIx4kgIV5ZRtDbfhaCeDpS2LzpQXeG6BiJp9Ff6qE+iCzKlWCVyc0rGPrMweQkGYhAArBR37BfAAYbpgzJbSxEmJNbNBtjTjbxM/XSMGwpAaJJMD0YpTHXx6TJANFPQebPshL7MfAkQAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/attributes.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAH9JREFUeNpjOHHiBAMQCwHxJSD+TyS+BNXDANLMCTXEDIg/EKH5A1QtWC+IOA/EilABUjBIzyUGqKlPyDAApOc/A5LTYBKEvICijiYGEIv/j3qBygY8J8MLz2EGXAViLTIMAOm5CmLwQAUMgPgtEV54C1UL1gszTZSM7AzSwwAAHFLfZLjCjywAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/global.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhIAAgAPf/ABQoU3WXyVyEyylGdEtVZGGN2muCiOHPykVtsVV9w5bL7GJod1yCxkFbiWOR3l6M2uLi4sfHyIq12GCJ00txssbQ4oS16DxruOzs7DVDZXWs8WuBk0JknKzH2XqUqHZ6hXKLpFyJ1kp5xWuBnGyFoUJqr5i71URXdp2hp4SPlLa3uLbGyktso7TDtDZKcHx7fFZzpmOT40p0u53E2mJ6m0ZMVnOe2sO9viQkK6zW6lN5vm5tbpG3ydvc3lWC0TpZjNjFxVNdaXGEoSdKghw6aVNkbXuRl3qg0UptqpabvIqjrRIaMmlyfkZqpitDbIOaoyxQiWt+nDlgnFZpi9XV1kNmoWx9gztjo4WQqnWl5lyG0XWUvFp/xHKJnYucx36p0Ier2fPz81B0siMzWERxujRYk5OHknSHmTJVill4m4yktaKjpF5qfjRcmIykm4Scrl2Dv4OHjaK8qGaa6jpkqYWTs1t8uWN1fvr6+nuq6S0+Y8rN0nuYsYSjvnWStEhonlFgd4CVqCEqSEBWg32Bi2yJrFt8skphh15yg32hxnGClh1DeGBkb3uNnWV5i3GJkg8TH3Gf4297kjJVkY6svzlemm+IpoufpkNhmExyrnCJjnaChnGk7zNThFhocmKBqzpQexUhP4qCjEBekmWX5kZvt1preFaG16S82Gd9kIqnuWl5izk8UU1bdY+Qk5WRlubn6D5oql9yfliByFiEzn6q12aBoD0+P3qIi26EqIG29u/v8NfX1y5Ofamks2Ftg4icq6C4x2CO4LKtzLe3zVF3t1Z6uWd/mzZeni1VkoGDoHuCmGqX4G2b5GB3k7SvumeR16G4v2mU0NXQyW2a34y0ynuFoHuNo5SswFiH23ux9ZO/5oGou2l+qmON0naf1Hem2GuFs3ym2UtmnlF9x1FjfZGqrVVoeHqo42Bvd2l5gGZ4fnByeF+Q3mRyi2V6hEJoq21zgTdgoTFgqVtumm+Fi2iV2XiDhm2i6Wul/HeZuYCCgM7QzoKLjYqKjf///yH5BAEAAP8ALAAAAAAgACAAAAj/AP8JHEgQww1XhD60agWITRwVsAhKnDgQQhx2kqJgIeYF0x8Ofw6VS9GDIkU8rggoS4IlCgsYhv40mdlE5hRXYUxWDLJgmbVcilalovGpGIuZFMRQaAKDCS+dVGoQCHIn3JYNRTxt0BfAgjcESY2JGQcjXgSKEKRKNYXIESJPskDU4jSnHTkZOuwYY4Gpm6inBPHUkDq1yLlzpmS9S8TplAwyMhLMYsAgQRUkSUTtIuhPUBACRYqYcmaLhCM+2gpwYaAjgZZZAiojqWJn2KuKODIECeIp3R0DGzRpqiWMiwBhr0No0cKAiw4kCAKYoSLwRSgXvNOts2KgnqZH4B4w/ygQw8GDECEmTJg1K4GxYlj2/du1ZAyBBb7VWfGuiZu2EFx4E0MB54XQTgECOEcBElywAYEKkOjGDhP6dfeIERLk045yAtASwgPtOODABAxk0kQmLHCwBjtLSPjBPZsY4MEXFvBggQ0PFHAggQ+I6M0EXIiFBAeM3BJKBq0k1A8u+uTRjg8SKJADOt/YYE8kDiz3wJYhtKcUATgIkgEoQqizSQri6ADHN0dIYEIAR0QSwxxzxBDCKXiG4MNdCAwCiZig0COEFf0kooMJOUwAhzTNkEJKJFlsYwE+uuCTjQ8+iIAAPH6K6cIgSNBwzzUB8LFFADNoEAMzM8zQQTCUmP9ASTUKZEGNPRRc0QAOAOjxKSbj0CCJLc5scMYMnDgggRJqYBONOYF0EQUP1ajyhBh0NGCkHhkMMsool+mg5jd91CKBGo288YY5SoBAghBRCKFIPZmUcMgO9TnxaQOYcFBFExSQU4A4efhhRCAgeOABCQwLMcIIx5BxwS/PQDKGHgOA8sMo/jaBRDET0OJAH0ZYAoIlKJNgCbwbWCICHSjAAkkovmr8AwdIJUDLLPYAc80IKZOQy8ojKOIHGVCUtAPNA/TSycYzIQBHASKrcU0UJNgyQheBPPHECBsYcoE7AvUACQBONP00B1dcJkMpMoCxQiPHHDNCIHLIYc4GhYjgcMUeA32wBBFp9/KDFFLAcwU8MsgggtyXXNJ1C3K40YU3F0hCUBisAEBE02j8MMkVCJQCtwgXQGNCBxC0cEALBnxCxiAREcSLIJ4PAEUZaLRRQiklIBBLCRfMc0EF/ABhuQxonDVRBLgTMcQkUECBDB3ytIFMCbFccQEq0wDxBByVqKATP50vAsUQ6iNzhRQllHDFFXTwccMzW7AAuE7zsRMKEepLRhmkUIk2lGGAyEiDL7xQh9rxTyB7YMT/FkHBIVQPCsmYxBSIUZIHTqQHa2DECUAxAH2dgA0o6KBJAgIAOw==]]></data>
	</file>
	<file>
	  <filename>/images/global.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAK1JREFUeNpjOHHiBAMlGETYA/FtIH4CxF1ArIJHgwpUzROoHnsGKOc/Gt4LxOFAzAbF4VAxdHVPGJA4ZkA8B4g/I4m9gmIY/zNUjRlMDNkAEDsNiCWg9BkkufNAnAnE0lA5BlwGzATi51CaKDl8LiBKbtQFVHLBcyjnJBAnE+GCZKhakPhzWF54jpbaQLYYI4kZAPE0IP6AJPYclhcYCKR3fPmEgVCOuwfFOHMqAK6A4/8vH/ZVAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhMAAwAPcAAAAAAP///8PDwwQEBKsyM5kWHJAUKX8EJ8O8w8PBwwQEPgQEFwQEDaenqKGhogQMUAQUTwQcXQQmYgQtbAQrYwQQIgQwbgRWuAQ3cwQIDQRIkwRFkQQ7ewQ2bQRBfQMQHARWmgRTlwRUlgRFegRCdgQeMwMQGwRuwwRdoQRZmwRWkgRQigRPiARNhgRNhQRLhARhoQRemwRalQRYkAROggRHdgRFdAQhNUKOwwRrqwRnqARlpQRfmQRclgRdkwRajgRWigRxrgRnogRnoQRlngRYiEGHrgRjlRF8shaFvhd9ryONwyt6ogRwowRrnQhvnxyAryeMvSuTwyuOvi2QvzmWwzx8mgl/sTabwzByjDNthFaClGCOoRReeBtjfjCawzaewzudw2mToz+iw0l1hEBaYgSYw6Wws0Grw0itw0JUWEyxw3iPkzI/QFS9w7C2tsDDw6mqqqeoqKWmpqKjo629vJ2lowoSDy42Mz+VWBEYEyMqJQR/BARzBARqBLy+vBSUBF2hSC2pBDjDBErDBE20BG+vQnzAPqWmpGrFBIvDOpnDVcPDucPDu8PDvcPDvsPDwcPDwrS0s7OzsrKysa6urcPBtsPBucOkOcPBusOUCMPBvMOHBL69u8N+BMO9ssO9tMO/ucN+HsNuBMNjBMO6scO9t6mnpaelo8PBv62rqainpqKhoMC/vr++vbGwr8O9uMNYBMO5sbGtqq+rqMO/vLVMA6ehnbSxr8C9u7evqsNKBLuxq8O6tb22sqqlorWwrbGsqa2opcO+u7y3tLQ+BMK4s8C2saKalsO9usC6t6yopqunpb27ure1tLa0s66sq8C+vcO0rbSppLKrqLKtq724trm0srSvrcC4tcMyBLGrqailpL67ur26ubq3tq6rqsK7ub25uIcEBG4EBGYEBFwEBFIEBEUEBDkEBCsEBBsEBMPAwMC9vaSior+9va2rq8HAwLq5ubSzs7Cvr6alpbGxsa6urq2traurq6ioqKampqWlpaCgoAMDA////yH5BAEAAP8ALAAAAAAwADAAAAj/AP8JHEiwoMGDCBMqFNiq1bt3rlrFiySgosWLGDMKWGhwWDhiIK2J6xaNncaTF+FU5Egwk6mXsJLVSkURpU2LLAc2YsQzUyNHkG4K3ZjzHyRIj5JCqjmgqdOnUKHiLIpyGrJbv4TRCjarmtdqs7bRWnYKkZ06U3MOXYuRwLicO2CkEKGBCdubBci95ZhjBwoQGjbctVnAHDmWSZAEEQIihMWokCFbNHCuHEspS5IEkWvRKlatXL+CFUvWLNqKBtCZW8hGDJctZLQMgTEY5YF05xSWUdMGzx49d4roqH3ygDp0Ck1kgGojB3GNB9alW+ivxI0KDBbw2PE4svemFhcV/0rE0k2aMEtyxOh8NevWrl/Dji171qIiQuQ5rhkjRYmQHhZFYskmjwRlUwIIIHCRIoMQwtJ5UyhBhAzPZXSIIIWwhAYWUSBBxAwVYmQIIIKw5hpssqkQ4kWB8AGIbrz5BlwRFFb03XcW5dEHHwp9sNxTNtQogGfuhRYfafSdJkAefvRBnXXYaafiihVhwokmGoKxBBI+rEBlRZqM4glLYFABxRM/sPClAJqQMgpLWExxZprd3SiZAHBwEgspLH0RhRJOAPECe5+9J5p8pdVXESe7xGLia7EN0cKanmizC4y9/RacC2uOoo02yf3olA2TfilKMbY8eV12PHhQp51SVf+0hhlmIHZFEz6MgAGhRcLnFaJJWlTFCSew1MQRQIzQwQRr4nBBsRz9QAMJHUgQwSNfGqEBCixxYIG1D9SwphUcrMBSRX+8cYYAkAAF650CZCEBCeda9AgjllziCJGg+TrafKZZ5AUEFJzrCL6flCKLMdlcc8033jTzTjQUVxxNO500I4412ZgClABdKJBTI6DIIg0vvOgCDC7OfCOPxBE1JHMr0byTsTfKwKIvUTn1ckzK1NBCCzjQwFMJPfZQMsk8kjQtyTzzTEKJPa+8gss1pjQSSVH/EIMNLcxwg0o99TSgTxz5wIMPPpXc43YllawNTz5pQ4OLL6FsXdQ70JxE4g4r/fTjgAN08GP4HPskrnjicxhu+Cqq4KIMzzlJkk8DjvMzRwMNyKHP56CHLgfnncdRyTO5cK366qy37vrrsMfuekAAOw==]]></data>
	</file>
	<file>
	  <filename>/images/icon.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAABiVJREFUeNrsmctvZEcVxn9Vdfu2u+2x52EnM7Zm8oTsIo8TCQSWkAEhIdZsyAr4B1ghZcEaRQQpUiCTZSKUFZFgM4OIEI6IN4hFxpvwkEg6M+PJjNt2v2737b63qg6Le9vxPGxPt+0LkSi5bEtulc9X53znO3WOEhG+yCt4lA/95f1VAfDeAyr7UhqlFFprUOpEjFteXj70YHWYB9ZW/yTiPIlNARAUSqkMgNZoYzDagDHHZrgDhqdVJyeXli5f/nB8D2hBiaccGhDy29agNWiTbY7XA3uvQjK3HyGEjAaTe0kAURmIIRDUica4MaZ2RA6U8o/5zFZFbvjnxq+srByr0aurq7u/12q1aHFx8QgcWFs7NE21bn/KTqtNqVzGBCWMMWhj0Lmn1H1eEgS84BGc8zgRrAh9EU6fv8BjYfmRiRwcx43NzD/BzPzJhNC7L7won65fjwz88CfWvjsygJXf3IAk/XxHCc8tneXN7z5VSJ5vbXxGTampOfjtwwinDz0hnIBSCCbI84Phn39rFCZUiTc0gJ1xQ2j28dPE/ZhuN4ZenGUla+/10gmS2OoKPSAeG8BsSNwLCcMKDR1B2oL4Xl7//p23jpXEe1ealIiAqVEB/PTV19ajidnnX0w9vW6HTtRkM4X18CJQLozEg44QAd1RAKz84Ef/0Gn8XLN+Bxt36EZtdnZ2GCQWvvMyzDxZGAcGONqjeuCDP7zXVP022IdE3vYWnH22MAB9HE3g1CgAbOPWV4Mg+LdaWHwao6GxDVEdqML8lyDtF0bip1cv87V6jQvn5a8jccBa+wzA9/+8Jt0WNJtwdwdu1Dag3SmMxD1usz0HZ5z6ylhZqBft2Z0dSBPw6X0kvsTM411Qpbw61Y8kMbvLZzW0WFDh/SHk6QH1cdOoS/KdWrz1IA4eqHAVmKnxYybHq0oP/qnrSjQbcKo6JoDUQeohdR6LAufA28JI3GkE1O9CdXJEAC+/9itpBae5lHp6UYeznSZTfVgPLoKYwgDstENad+Hm9Cg68NKPE5302FcH9HRhWeh2twItaNhRdODae23Vb53bVwfmpgvLQrGbhv7+D799dODmbBAEG2phcf6hOtCNCyslXjnzL3hifyU7SAcWAFZ+tya9FjTbUN9q0PmklqWlolb7OtwAZsfMQr0GxB1L3GoSt5tZBjq4UXDMDwKdVXLhmAC8B+c93gsiAsNdAIkdYJLB0QBYYZdkzgk4ybSgABLrrByFVt4cGQXAz16/ItvqFIvD90DcZFPD+pmL0NsohMRqCKADTIymA+5AHVAFNoQ7wOaIafSDa3+8q/rtC/vqwMTZ4gDMzNNauI2alg9HeQ/MB0HwiVpYfPKhOnDjVmFK/IsX3uHaHFDlcjqiDjwFMPfL96XbaZO22rDThFs16CWFKXF9A7gOnB8zCzVv3oSokz1i2h1od6HvC1PiSh/odKEyOWZrsb4FUQRRN9utCHoesMfVmTxwyaAO7TtQngKWxwBQ24ReL9vdfgbg618uxHiAtLsFnc+gfGo8D6y+8r2svZEOiPoJ3cRx6dzpXCcdELCy8q0TI3HUa8P2HSjHR+tOl0tlyqUy50izRp93mVbqEyZxqw1bm1CyRwGQAGlWyFmflRMCIhqPJZya4bHJmcxoY3aHf+qg4Z+AxyNeEO9R4tF4ApJctbJG8iBNoNlApsovjQmgD8kAUgvWkXq/i8ErjSiNCUpoYyA3WmmTT3MOmk0IiAblUUrv8ZQCl+aDMkP97Z8r3t7/lMMBxAnOOpLUYp3DOsHnnRAQUB5JLMpodD65zCInN0g9aPcwjEQkK2yzbxgFodFUKmE+lxPW1tYmlpeX+2MDGDihP7AkqcU5h/OS/fP8ttTw1kXQyucj2Mzq7Id6wPphNZ4BkN3CzWlADGaQEmoNAVSr1Xng47EBmLBC0o1JrMNahxePzw3Iht0OlMpuf2irUofOLmUPEhlGvVZIkA0TTRBgAsXS0tLHB1aswxu4cuVN9dHfPzLOOvXGG7++p+y4evWqxHGcAfBuGAWZkfmND8PlUYeuMqRBfppSCq0UpVLARBhSrUzwjW9+++iT+v/1pfmCr/8D+G+v/wwAJbCXLp3PAhMAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/images/no-image.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhRwAwANUAAP////7+/v39/fz8/Pv7+/r6+vn5+fj4+Pf39/b29vX19fT09PPz8/Ly8vHx8e/v7+7u7u3t7ezs7Ovr6+np6ejo6Ofn5+bm5uXl5eTk5OPj4+Li4uHh4eDg4N/f397e3t3d3dzc3Nvb29ra2tnZ2djY2NfX19bW1tTU1NLS0tHR0c/Pz8zMzP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAC0ALAAAAABHADAAAAb/QJZwSCwaj8ikcmlsOZ/QqHRKrVqvT2GLNQF4v+CweEwum8mSxZbVIng8ibN8Ti8jOh3EuuWNhCgDdYKDZBcoEV57XwYcIwqEkIIKJB0FX4pgEiUXApGeZAQXHxABYJhgBRsgC5+tXgohGwZip2EOJxulrpAYKg5ktWIaKL+7dQ0jGARlwWINHRqzxmYEGiUNZ81iBRggDbrTtikVc9pjDCYegeFeBhshj+VaghYnD+wQHxfLdOZlCiI6HNhVoAOJeHX8mZlwossnCCguQFJoxgCJEAMJIfjwAUEkimckiAAkqMIICeAIgTyD4I1HOQpGgLD0aaWcCCsomBlAIQRK/1c25QzoMIKVGAQgOGQEOm/aAxAY1nnJkKKYsaB0CGwggY0BCQ6dwmGt84CEWQcprzZl96BECRFo2QEYK0crVwBewbKja+ZpVDBUre7iO2Zo0TFIlaplswunzjI8faaduDZSSw8vz8Sc2YqwF5Ek65j8+bGyIIsYIW3sWJoxIYYOPUWISNl1HYACCRpE2M/0mXr3wuXbl9A3GXTq5AJwB6+37TLcvE0O52CcvOdjnkVTLqbatWzGvwwTzD0MMmXMwt/KVf5ML/KXfKda1X4OLFm0TGviVD+rKFKmrMWII/0NMkkl8bnmR2gFDmIIBIlo4QYcDXpyRx57cFGhK2nsgQ/FhyCGCCITJJZo4olCBAEAOw==]]></data>
	</file>
	<file>
	  <filename>/images/reload.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAPeXAAAAAP///4GkxYytzOL2/2eYxm6UuVN+q1aArAYHBwICAvj7//v+//n///r8//Pz842uzeHz+1N9qi80ONXs9y8wMkNGSU5OTpeZm+L0/M3p+1yAqfH6/9vl7dDR02doat7l7luJuVyFsMrm/c/k8d/y+1F8qmVucklUXFOJu+Hy+YaqyREREXd3d3WJmu3x9BUXGDMzNF9gYm5wcq+vr3t9f6mpqoCAgGiJqxQWF/7+/ubu9IyOkvP19vX6/2Jrbuv9/zg6Pef19xAREfj8/1uEsOT4/9/f3+71+l2Dqejz/2KKtKampnCNrIiftur0/9Xs+jpAQo+amhscHAQEBLy/wgYGBr3O00xQVElJSYKXt/P6/8Tk/FiEslRZXX+Kj3egxZyzwvb6/w8PEP3+/4uszEVjhFxeYbzb8khXYOLz+fb8/+X3//v7+9zi5yA0SOTz+gUGBvP29hETE5Cdojs7O0FBQeL1/b3M01xcXfz//yk4SFZjbCYxQFh/qQ4ODkBBQU1UVz5DRYeIiOz2/5CcofX19eL0+xsdHn+Eic/q+zdTcM/p/t7v8b+/vzM2N8bGxqCyvM7Q0leBrV2CqKm1uC4vMCxIEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJcALAAAAAAQABAAAAj2AC/hGABhgMGDA8pAWNHk0iUBASJGPFLHkcQABhxCjPigxR8AgDwsYKAn48MAOgzdAMASwJAZLxqYhPjAjhWWCmJYAiBDSAiNAdrQGJRnCoAaboIA+NIFaAAyDBxU+cDjyZU5ORZphGSjhwMiYpA0MhIhEIA3GrOwkLTABwc4Kgjc+QGgj8YLADBsIQQkAwECJaIA2OMQDBMFFTooYfNXTaEEE8w4LCDnDAALeCL8pQMjQaQkkxuAwAIAkZcTguJQkQKF0uQAa3YkGtPyUaVDFDY4TMFoBBc0LtKg4BNGAwlFfhw6MXFAgoQDB4ogQDBJxBItlwICADs=]]></data>
	</file>
	<file>
	  <filename>/images/templates.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJxJREFUeNq1U0EKwCAM8+TDPPmwgTDYezx59yGC4Ce2OqoUqdIhO0RmJDGtnYoxasABSIBbiIQarWBxH4QjXDUouDEAJYRBTVHErR3SkhrXIxPu1XEGjuF6ZIkBV1KPLDEY9zOeNQiLhrYUYWXg8dsyBhbP/K8l0CZa5vay+4ynxKAOywXIhMvIsYNUFo2bwdJR3vmZzjGyVNhLegBIuOj9M4S+bQAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/trans.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==]]></data>
	</file>
	<file>
	  <filename>/includes/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/includes/admin.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dGFibGUubW9kdWxlX2NhdF90YWJsZSB7Zm9udC1zaXplOiAxMHB4OyB3aWR0aDo3MDBweDsgbWFyZ2luOiAwO30KLmNhdF9sZWdfaGVhZHtjb2xvcjpzaWx2ZXI7YmFja2dyb3VuZC1jb2xvcjogIzIzMjMyMzt9Ci5jYXRfc3VibGVnX2hlYWR7Y29sb3I6c2lsdmVyO2JhY2tncm91bmQtY29sb3I6IGdyYXk7fQoubW9kdWxlX2NhdF9hcmVhX3dpZGUge3dpZHRoOiA1NTdweDt9Ci5tb2R1bGVfY2F0X2xlZ2VuZHtmb250LXNpemU6IDlweDsgbWFyZ2luOiA2cHggMDsgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IG1heC13aWR0aDo4MCU7bWluLXdpZHRoOjMwJTt9Ci5tb2R1bGVfY2F0X2FyZWFfc2hvcnQge3dpZHRoOiA1MDBweDsgaGVpZ2h0OiAxMDBweDt9Ci5tb2R1bGVfY2F0X2xpbmsge3RleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO30KLm1vZHVsZV9jYXRfZmllbGRzZXQge21hcmdpbi1ib3R0b206MmVtO30KLm1vZHVsZV9jYXRyX3RhYmxlIHRyLnJvdzE6aG92ZXIsIC5tb2R1bGVfY2F0cl90YWJsZSB0ci5yb3cyOmhvdmVye2JhY2tncm91bmQ6ICNDQ0RCREQ7fQoub2RkIHtiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO3RleHQtYWxpZ246bGVmdDt2ZXJ0aWNhbC1hbGlnbm1lbnQ6IHRvcDt9Ci5ldmVuIHtiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkO3RleHQtYWxpZ246bGVmdDt2ZXJ0aWNhbC1hbGlnbm1lbnQ6IHRvcDt9Ci5pbnB1dGhlbHAgIHsgY29sb3I6ICMzODQ2NTQ7IHBhZGRpbmc6IDA7IG1hcmdpbjogMDsgd2lkdGg6IGF1dG87IHRleHQtYWxpZ246bGVmdDsgfQ==]]></data>
	</file>
	<file>
	  <filename>/includes/Category-CSS-based.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRtYWluX2NvbnRlbnR9DXtzZWN0aW9uIG5hbWU9bnVtaW1nIGxvb3A9JGltYWdlX3VybF9hcnJheX0NICA8aW1nIHNyYz0ieyRpbWFnZV91cmxfYXJyYXlbbnVtaW1nXX0iIGFsdD0ie3RpdGxlfSIgdGl0bGU9Int0aXRsZX0iIC8+DXtzZWN0aW9uZWxzZX0Ney9zZWN0aW9ufQ08ZGl2IGNsYXNzPSJjYXRlZ29yeV9pdGVtcyI+DSAgIHtpZiAkaGFzbmF2ID09IDF9DTxkaXYgY2xhc3M9ImNhdG5hdiI+eyRwcmV2fXskbmF2c3RyfXskbmV4dH08L2Rpdj4NCXsvaWZ9DSAgICB7c2VjdGlvbiBuYW1lPW51bWxvb3AgbG9vcD0kaXRlbXN9DSAgICAgICAgPGRpdiBjbGFzcz0iY2F0ZWdvcnlfaXRlbSI+PGEgaHJlZj0ieyRpdGVtc1tudW1sb29wXS5saW5rfSI+PGltZyBzcmM9InskaXRlbXNbbnVtbG9vcF0uaW1hZ2V9IiB0aXRsZT0ieyRpdGVtc1tudW1sb29wXS50aXRsZX0iIGFsdD0ieyRpdGVtc1tudW1sb29wXS50aXRsZX0iLz48L2E+PGJyIC8+PGEgaHJlZj0ieyRpdGVtc1tudW1sb29wXS5saW5rfSI+eyRpdGVtc1tudW1sb29wXS50aXRsZX08L2E+PC9kaXY+DSAgICB7c2VjdGlvbmVsc2V9DSAgICB7L3NlY3Rpb259DSAgICB7aWYgJGhhc25hdiA9PSAxfQ17KiANVGhlIG51bWJlciB0aGF0IGlzIHdpdGhvdXQgYSBsaW5rIChhIGhyZWYpIGhhdmUgYSA8c3BhbiBjbGFzcz0ibm9saW5rIiApIGhhdmUgYSBsb29rIGluIHNvdXJjZSBjb2RlLWh0bWwNKn0NPGRpdiBjbGFzcz0iY2F0bmF2Ij57JHByZXZ9eyRuYXZzdHJ9eyRuZXh0fTwvZGl2Pg0Jey9pZn0NPC9kaXY+DQ==]]></data>
	</file>
	<file>
	  <filename>/includes/Category-Table-based.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9ImNvbHMiIHZhbHVlPSIzIn0NCnskbWFpbl9jb250ZW50fQ0Ke3NlY3Rpb24gbmFtZT1udW1pbWcgbG9vcD0kaW1hZ2VfdXJsX2FycmF5fQ0KICA8aW1nIHNyYz0ieyRpbWFnZV91cmxfYXJyYXlbbnVtaW1nXX0iIHRpdGxlPSJ7dGl0bGV9IiBhbHQ9Int0aXRsZX0iIC8+DQp7c2VjdGlvbmVsc2V9DQp7L3NlY3Rpb259DQo8dGFibGUgc3R5bGU9ImJvcmRlcjogc29saWQgMXB4IGJsYWNrOyI+DQo8dHI+DQogICAge3NlY3Rpb24gbmFtZT1udW1sb29wIGxvb3A9JGl0ZW1zfQ0KICAgICAgICA8dGQgc3R5bGU9IndpZHRoOiAyMDBweDsiPjxhIGhyZWY9InskaXRlbXNbbnVtbG9vcF0ubGlua30iPjxpbWcgc3JjPSJ7JGl0ZW1zW251bWxvb3BdLmltYWdlfSIgdGl0bGU9InskaXRlbXNbbnVtbG9vcF0udGl0bGV9IiBhbHQ9InskaXRlbXNbbnVtbG9vcF0udGl0bGV9Ii8+PC9hPjxiciAvPjxhIGhyZWY9InskaXRlbXNbbnVtbG9vcF0ubGlua30iPnskaXRlbXNbbnVtbG9vcF0udGl0bGV9PC9hPjwvdGQ+DQogICAgICAgIHtpZiBub3QgKCRzbWFydHkuc2VjdGlvbi5udW1sb29wLnJvd251bSBtb2QgJGNvbHMpfQ0KICAgICAgICAgICAgICAgIHtpZiBub3QgJHNtYXJ0eS5zZWN0aW9uLm51bWxvb3AubGFzdH0NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+PHRyPg0KICAgICAgICAgICAgICAgIHsvaWZ9DQogICAgICAgIHsvaWZ9DQogICAgICAgIHtpZiAkc21hcnR5LnNlY3Rpb24ubnVtbG9vcC5sYXN0fQ0KICAgICAgICAgICAgICAgIHttYXRoIGVxdWF0aW9uID0gIm4gLSBhICUgbiIgbj0kY29scyBhPSRpdGVtc3xAY291bnQgYXNzaWduPSJjZWxscyJ9DQogICAgICAgICAgICAgICAge2lmICRjZWxscyBuZSAkY29sc30NCiAgICAgICAgICAgICAgICB7c2VjdGlvbiBuYW1lPXBhZCBsb29wPSRjZWxsc30NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6IDIwMHB4OyI+Jm5ic3A7PC90ZD4NCiAgICAgICAgICAgICAgICB7L3NlY3Rpb259DQogICAgICAgICAgICAgICAgey9pZn0NCiAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICB7L2lmfQ0KICAgIHtzZWN0aW9uZWxzZX0NCiAgICB7L3NlY3Rpb259DQogICAge2lmICRoYXNuYXYgPT0gMX0NCjx0cj48dGR7aWYgJGNvbHMgZ3QgMX0gY29sc3Bhbj0ieyRjb2xzfSJ7L2lmfSBzdHlsZT0iYm9yZGVyLXRvcDogc29saWQgMXB4IGJsYWNrOyI+eyRwcmV2fXskbmF2c3RyfXskbmV4dH08L3RkPjwvdHI+DQoJey9pZn0NCjwvdGFibGU+DQo=]]></data>
	</file>
	<file>
	  <filename>/includes/Comparison-Table-based.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iaXRlbV9jb21wYXJpc29uIj4NPHRhYmxlPg0JPHRyPg0JCTx0aD48L3RoPg0gICAge2ZvcmVhY2ggJGF0dHJsaXN0IGFzICRvbmV9DQkJCTx0aD57JG9uZS0+YXR0cn08L3RoPg0gICAgey9mb3JlYWNofQ0JPC90cj4NCXtmb3JlYWNoICRpdGVtcyBhcyAkdGl9DQkJPHRyPg0JCQk8dGQ+DQkJCQk8YSBocmVmPSJ7JHRpLmxpbmt9Ij4NCQkJCTxpbWcgc3JjPSJ7JGltYWdlX3Jvb3R9P2k9eyR0aS5hbGlhc31fdF8xXzUwXzEuanBnIiAvPjwvYT48YnIgLz4NCQkJCXskdGkudGl0bGV9DQkJCTwvdGQ+DQkJCXtmb3JlYWNoICRhdHRybGlzdCBhcyAkb25lfQ0JCQkJPHRkPg0JCQkJCXskdGlbJG9uZS0+c2FmZV19DQkJCQk8L3RkPg0gICAgICAgIHsvZm9yZWFjaH0NCQk8L3RyPg0Jey9mb3JlYWNofQ08L3RhYmxlPg08L2Rpdj4=]]></data>
	</file>
	<file>
	  <filename>/includes/Feature-CSS-based.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iZmVhdHVyZV9pdGVtcyI+DSAgICB7c2VjdGlvbiBuYW1lPW51bWxvb3AgbG9vcD0kaXRlbXN9DSAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZV9pdGVtIj48YSBocmVmPSJ7JGl0ZW1zW251bWxvb3BdLmxpbmt9Ij48aW1nIHNyYz0ieyRpdGVtc1tudW1sb29wXS5pbWFnZX0iIHRpdGxlPSJ7JGl0ZW1zW251bWxvb3BdLnRpdGxlfSIgYWx0PSJ7JGl0ZW1zW251bWxvb3BdLnRpdGxlfSIvPjwvYT48YnIgLz48YSBocmVmPSJ7JGl0ZW1zW251bWxvb3BdLmxpbmt9Ij57JGl0ZW1zW251bWxvb3BdLnRpdGxlfTwvYT48L2Rpdj4NICAgIHtzZWN0aW9uZWxzZX0NICAgIHsvc2VjdGlvbn0NPC9kaXY+DQ==]]></data>
	</file>
	<file>
	  <filename>/includes/Feature-Table-based.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9ImNvbHMiIHZhbHVlPSIxIn0NCjx0YWJsZSBzdHlsZT0iYm9yZGVyOiBzb2xpZCAxcHggYmxhY2s7Ij4NCjx0cj4NCiAgICB7c2VjdGlvbiBuYW1lPW51bWxvb3AgbG9vcD0kaXRlbXN9DQogICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6IDIwMHB4OyI+PGEgaHJlZj0ieyRpdGVtc1tudW1sb29wXS5saW5rfSI+PGltZyBzcmM9InskaXRlbXNbbnVtbG9vcF0uaW1hZ2V9IiB0aXRsZT0ieyRpdGVtc1tudW1sb29wXS50aXRsZX0iIGFsdD0ieyRpdGVtc1tudW1sb29wXS50aXRsZX0iLz48L2E+PGJyIC8+PGEgaHJlZj0ieyRpdGVtc1tudW1sb29wXS5saW5rfSI+eyRpdGVtc1tudW1sb29wXS50aXRsZX08L2E+PC90ZD4NCiAgICAgICAge2lmIG5vdCAoJHNtYXJ0eS5zZWN0aW9uLm51bWxvb3Aucm93bnVtIG1vZCAkY29scyl9DQogICAgICAgICAgICAgICAge2lmIG5vdCAkc21hcnR5LnNlY3Rpb24ubnVtbG9vcC5sYXN0fQ0KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj48dHI+DQogICAgICAgICAgICAgICAgey9pZn0NCiAgICAgICAgey9pZn0NCiAgICAgICAge2lmICRzbWFydHkuc2VjdGlvbi5udW1sb29wLmxhc3R9DQogICAgICAgICAgICAgICAge21hdGggZXF1YXRpb24gPSAibiAtIGEgJSBuIiBuPSRjb2xzIGE9JGl0ZW1zfEBjb3VudCBhc3NpZ249ImNlbGxzIn0NCiAgICAgICAgICAgICAgICB7aWYgJGNlbGxzIG5lICRjb2xzfQ0KICAgICAgICAgICAgICAgICAge3NlY3Rpb24gbmFtZT1wYWQgbG9vcD0kY2VsbHN9DQogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6IDIwMHB4OyI+Jm5ic3A7PC90ZD4NCiAgICAgICAgICAgICAgICAgIHtzZWN0aW9uZWxzZX0NCiAgICAgICAgICAgICAgICAgIHsvc2VjdGlvbn0NCiAgICAgICAgICAgICAgICB7L2lmfQ0KICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgIHsvaWZ9DQogICAge3NlY3Rpb25lbHNlfQ0KICAgIHsvc2VjdGlvbn0NCjwvdGFibGU+DQo=]]></data>
	</file>
	<file>
	  <filename>/includes/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/includes/Item-CSS-based.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iY2F0YWxvZ19pdGVtIj4NPGRpdiBjbGFzcz0iaXRlbV9pbWFnZXMiPjxpbWcgaWQ9Iml0ZW1faW1hZ2UiIG5hbWU9Iml0ZW1faW1hZ2UiICBzcmM9InskaW1hZ2VfMV91cmx8ZGVmYXVsdDonJ30iIGFsdD0ie3RpdGxlfSIgdGl0bGU9Int0aXRsZX0iIC8+DXskbWFpbl9jb250ZW50fQ08ZGl2IGNsYXNzPSJpdGVtX3RodW1ibmFpbHMiPg0Ne3NlY3Rpb24gbmFtZT1pbmQgbG9vcD0kaW1hZ2VfdXJsX2FycmF5fQ08YSBocmVmPSJqYXZhc2NyaXB0OnJlcGwoJ3skaW1hZ2VfdXJsX2FycmF5W2luZF19JykiPjxpbWcgc3JjPSJ7JGltYWdlX3RodW1iX3VybF9hcnJheVtpbmRdfSIgdGl0bGU9Int0aXRsZX0iIGFsdD0ie3RpdGxlfSIgLz48L2E+DXsvc2VjdGlvbn08L2Rpdj48L2Rpdj4Ne3NlY3Rpb24gbmFtZT1hdCBsb29wPSRhdHRybGlzdH0NPGRpdiBjbGFzcz0iaXRlbV9hdHRyaWJ1dGVfbmFtZSI+eyRhdHRybGlzdFthdF0ubmFtZX06PC9kaXY+PGRpdiBjbGFzcz0iaXRlbV9hdHRyaWJ1dGVfdmFsIj57ZXZhbCB2YXI9JGF0dHJsaXN0W2F0XS5rZXl9PC9kaXY+DXtzZWN0aW9uZWxzZX0Ney9zZWN0aW9ufQ08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DWZ1bmN0aW9uIHJlcGwoaW1nKQ17DSAgZG9jdW1lbnQuaXRlbV9pbWFnZS5zcmM9aW1nOw19DTwvc2NyaXB0Pg0Ne2lmICRmaWxlX2NvdW50ID4gMH0NPHVsIGNsYXNzPSJmaWxlcyI+e3NlY3Rpb24gbmFtZT1pbmQgbG9vcD0kZmlsZV9uYW1lX2FycmF5fQ08bGk+PGEgaHJlZj0ieyRmaWxlX3VybF9hcnJheVtpbmRdfSI+eyRmaWxlX25hbWVfYXJyYXlbaW5kXX08L2E+PC9saT4Ne3NlY3Rpb25lbHNlfQ17L3NlY3Rpb259DTwvdWw+DXsvaWZ9DQ08L2Rpdj4=]]></data>
	</file>
	<file>
	  <filename>/includes/Item-Table-based.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iaXRlbSI+DXskbWFpbl9jb250ZW50fQ08dGFibGU+PHRyPjx0ZD48aW1nIGlkPSJpdGVtX2ltYWdlIiBuYW1lPSJpdGVtX2ltYWdlIiAgc3JjPSJ7JGltYWdlXzFfdXJsfGRlZmF1bHQ6Jyd9IiB0aXRsZT0ie3RpdGxlfSIgYWx0PSJ7dGl0bGV9IiAvPjwvdGQ+DTx0ZD57c2VjdGlvbiBuYW1lPWluZCBsb29wPSRpbWFnZV91cmxfYXJyYXl9DTxhIGhyZWY9ImphdmFzY3JpcHQ6cmVwbCgneyRpbWFnZV91cmxfYXJyYXlbaW5kXX0nKSI+PGltZyBzcmM9InskaW1hZ2VfdGh1bWJfdXJsX2FycmF5W2luZF19IiB0aXRsZT0ie3RpdGxlfSIgYWx0PSJ7dGl0bGV9IiAvPjwvYT4Ne3NlY3Rpb25lbHNlfQ17L3NlY3Rpb259PC90ZD48L3RyPjwvdGFibGU+DXtzZWN0aW9uIG5hbWU9YXQgbG9vcD0kYXR0cmxpc3R9DTxwPjxzdHJvbmc+eyRhdHRybGlzdFthdF0ubmFtZX08L3N0cm9uZz46IHtldmFsIHZhcj0kYXR0cmxpc3RbYXRdLmtleX08L3A+DXtzZWN0aW9uZWxzZX0Ney9zZWN0aW9ufQ08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DWZ1bmN0aW9uIHJlcGwoaW1nKQ17DSBkb2N1bWVudC5pdGVtX2ltYWdlLnNyYz1pbWc7DX0NPC9zY3JpcHQ+DTwvZGl2Pg0=]]></data>
	</file>
	<file>
	  <filename>/includes/misc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/includes/misc/fls_lst.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRjYXRfZmlsZXNfMl9yZW1vdmUgPSBhcnJheSgNCidjb250ZW50dHlwZS5jYXRhbG9nY2F0ZWdvcnkucGhwJywNCidjb250ZW50dHlwZS5jYXRhbG9naXRlbS5waHAnLA0KJ2NvbnRlbnR0eXBlLmNhdGFsb2dwcmludGFibGUucGhwJw0KKTsgIA0KPz4=]]></data>
	</file>
	<file>
	  <filename>/includes/misc/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/includes/Printable-Catalog-Table-based.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9ImNvbHMiIHZhbHVlPSIzIn0NPHRhYmxlIHN0eWxlPSJib3JkZXI6IHNvbGlkIDFweCBibGFjazsiPg08dHI+DXtzZWN0aW9uIG5hbWU9bnVtbG9vcCBsb29wPSRpdGVtc30NICAgICAgICA8dGQgc3R5bGU9IndpZHRoOiAyMDBweDsiPjxhIGhyZWY9InskaXRlbXNbbnVtbG9vcF0ubGlua30iPjxpbWcgc3JjPSJ7JGl0ZW1zW251bWxvb3BdLmltYWdlfSIgdGl0bGU9InskaXRlbXNbbnVtbG9vcF0udGl0bGV9IiBhbHQ9InskaXRlbXNbbnVtbG9vcF0udGl0bGV9Ii8+PC9hPjxiciAvPjxhIGhyZWY9InskaXRlbXNbbnVtbG9vcF0ubGlua30iPnskaXRlbXNbbnVtbG9vcF0udGl0bGV9PC9hPjxiciAvPkNhdGVnb3J5OiB7JGl0ZW1zW251bWxvb3BdLmNhdH08YnIgLz4NICB7Zm9yZWFjaCBmcm9tPSRhdHRybGlzdCBpdGVtPWF0dHIga2V5PWt9DSAgICB7JGF0dHJ9OiB7JGl0ZW1zW251bWxvb3BdWyRrXX0NICAgIDxiciAvPg0gIHsvZm9yZWFjaH0NICA8L3RkPg0gIHtpZiBub3QgKCRzbWFydHkuc2VjdGlvbi5udW1sb29wLnJvd251bSBtb2QgJGNvbHMpfQ0gICAgICAgICAge2lmIG5vdCAkc21hcnR5LnNlY3Rpb24ubnVtbG9vcC5sYXN0fQ0gICAgICAgICAgICAgICAgICA8L3RyPjx0cj4NICAgICAgICAgIHsvaWZ9DSAgey9pZn0NICB7aWYgJHNtYXJ0eS5zZWN0aW9uLm51bWxvb3AubGFzdH0NICAgICAgICAgIHttYXRoIGVxdWF0aW9uID0gIm4gLSBhICUgbiIgbj0kY29scyBhPSRpdGVtc3xAY291bnQgYXNzaWduPSJjZWxscyJ9DSAgICAgICAgICB7aWYgJGNlbGxzIG5lICRjb2xzfQ0gICAgICAgICAge3NlY3Rpb24gbmFtZT1wYWQgbG9vcD0kY2VsbHN9DSAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6IDIwMHB4OyI+Jm5ic3A7PC90ZD4NICAgICAgICAgIHsvc2VjdGlvbn0NICAgICAgICAgIHsvaWZ9DSAgICAgICAgICA8L3RyPg0gIHsvaWZ9DXtzZWN0aW9uZWxzZX0NPC90cj4Ney9zZWN0aW9ufQ08L3RhYmxlPg==]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ25hbWVpbWFnZXMnXT0nSW1hZ2VzJzsKJGxhbmdbJ25hbWVmaWxlcyddPSdGaWxlcyc7CiRsYW5nWyduYW1lZmlsZSddPSdGaWxlJzsKJGxhbmdbJ2RlbGV0ZWltYWdlJ109J0RlbGV0ZSBJbWFnZSc7CiRsYW5nWydkZWxldGVmaWxlJ109J0RlbGV0ZSBGaWxlJzsKJGxhbmdbJ093bmVyJ109J093bmVyJzsKJGxhbmdbJ0NhdGFsb2dJdGVtJ109J0l0ZW0gQ2F0YWxvZ2VyJzsKJGxhbmdbJ25hbWVwYWdlJ109J1BhZ2UnOwokbGFuZ1snUGVybWlzc2lvbnMnXT0nUGVybWlzc2lvbnMnOwokbGFuZ1snU3ViJ109J1N1YiAtJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtX3NvcnRfb3JkZXIyJ10gPSAnSXRlbSBTb3J0IE9yZGVyJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtc19wZXJfcGFnZTInXT0gJ0l0ZW1zIFBlciBQYWdlJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9jYXRlZ29yeV9yZWN1cnNlMiddID0gJ0Rpc3BsYXkgQmVoYXZpb3InOwokbGFuZ1snd2hpY2hfYXR0cmlidXRlcyddID0gJ1doaWNoIGF0dHJpYnV0ZXMgc2hvdWxkIGJlIHNob3duIGluIGNhdGFsb2cnOwokbGFuZ1snbmF2VGFiJ10gPSAnIHwgJzsgIAoKJGxhbmdbJ25lZWRwZXJtaXNzaW9uJ109J1lvdSBuZWVkICVzIHNldCB0byBkbyB0aGF0Lic7CiRsYW5nWydmcmllbmRseW5hbWUnXT0nQ2F0YWxvZ2VyJzsKJGxhbmdbJ2FkbWluZGVzY3JpcHRpb24nXT0nTWFuYWdlIENhdGFsb2cgc2V0dGluZ3MnOwokbGFuZ1snYXJleW91c3VyZSddPSdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgJXM/JzsKJGxhbmdbJ3VuaXF1ZWNvZGUnXT0nVW5pcXVlIENvZGUnOwokbGFuZ1sndGVtcGxhdGVsaXN0J109J1N1Yi10ZW1wbGF0ZXMnOwokbGFuZ1snbGlzdHRlbXBsJ109J01hbmFnZSBTdWItdGVtcGxhdGVzJzsKJGxhbmdbJ3RpdGxlX3VwbG9hZCddID0gJ1VwbG9hZCc7CiRsYW5nWyd0aXRsZV9maWVsZF90eXBlJ10gPSAnRmllbGQgVHlwZSc7CiRsYW5nWyd0aXRsZV9zZWxlY3RfdmFsdWVzJ10gPSAnVmFsdWUnOwokbGFuZ1sndGl0bGVfaXRlbV90YWInXT0nSXRlbSBBdHRyaWJ1dGVzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3RhYiddPSdDYXRlZ29yeSBBdHRyaWJ1dGVzJzsKJGxhbmdbJ3RpdGxlX3ByaW50YWJsZV90YWInXT0nUHJpbnRhYmxlIENhdGFsb2cgQXR0cmlidXRlcyc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3RhYiddPSdJdGVtIEltYWdlIFNldHRpbmdzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX3RhYiddPSdDYXRlZ29yeSBQYWdlIFNldHRpbmdzJzsKJGxhbmdbJ3RpdGxlX3ByaW50YWJsZV90YWInXT0nUHJpbnRhYmxlIENhdGFsb2cgU2V0dGluZ3MnOwokbGFuZ1sndGl0bGVfcGF0aF90YWInXT0nUGF0aHMnOwokbGFuZ1sndGl0bGVfZGVsZXRlJ109J0RlbGV0ZT8nOwokbGFuZ1sndGl0bGVfZmlsZV90YWInXT0nSXRlbSBGaWxlIFNldHRpbmdzJzsKJGxhbmdbJ3RpdGxlX2ltYWdlX3RhYiddPSdPdGhlciBJbWFnZSBTZXR0aW5ncyc7CiRsYW5nWyd0aXRsZV9pdGVtX3RlbXBsYXRlX3ZhcnMnXSA9ICdJdGVtIFRlbXBsYXRlIFZhcmlhYmxlcyc7CiRsYW5nWyd0aXRsZV9jYXRfdGVtcGxhdGVfdmFycyddID0gJ0NhdGVnb3J5IFRlbXBsYXRlIFZhcmlhYmxlcyc7CiRsYW5nWyd0aXRsZV9jYXRhbG9nX3RlbXBsYXRlX3ZhcnMnXT0nQ2F0YWxvZyBUZW1wbGF0ZSBWYXJpYWJsZXMnOwokbGFuZ1sndGl0bGVfY29tcGFyZV90ZW1wbGF0ZV92YXJzJ109J0NvbXBhcmlzb24gVGVtcGxhdGUgVmFyaWFibGVzJzsKJGxhbmdbJ3RpdGxlX2ZlYXR1cmVfdGVtcGxhdGVfdmFycyddPSdGZWF0dXJlIGxpc3QgVGVtcGxhdGUgVmFyaWFibGVzJzsKJGxhbmdbJ3RpdGxlX3Nob3dfb25seV9leGlzdGluZ19pbWFnZXMnXT0nRG9uXCd0IGluY2x1ZGUgbWlzc2luZyBpbWFnZXMnOwokbGFuZ1sndGl0bGVfc2hvd19vbmx5X2V4aXN0aW5nX2ltYWdlc19oZWxwJ109J1RoaXMgd2lsbCBvbmx5IHB1dCBpbWFnZSByZWZlcmVuY2VzIGludG8gbGlzdHMgaWYgdGhlIGltYWdlIGV4aXN0cy48YnIgLz4oTm9ybWFsbHksIHRoaXMgaXMgZmluZSwgYnV0IGlmIHlvdSBhcmUgZG9pbmcgc29tZXRoaW5nIGNsZXZlciB3aXRoIGltYWdlPGJyIC8+YXJyYXkgaW5kZXhlcywgdGhpcyBjb3VsZCBjYXVzZSB5b3UgdHJvdWJsZS4pJzsKJGxhbmdbJ3RpdGxlX2ZsdXNoX2NhdHMnXT0nRmx1c2ggY2F0ZWdvcnkgcGFnZSBidWZmZXJzJzsKJGxhbmdbJ3RpdGxlX2ZsdXNoX2NhdHNfaGVscCddPSdJZiB5b3UgaGF2ZSBhIGh1Z2UgbnVtYmVyIG9mIGl0ZW1zIGRpc3BsYXllZDxiciAvPmluIGEgY2F0ZWdvcnksIHNvbWUgUEhQIGluc3RhbGxzIHdpbGwgZmFpbCB0byBkaXNwbGF5IHRoZSBwYWdlPGJyIC8+Y29ycmVjdGx5LiBDaGVjayB0aGlzIGJveCB0byBzb2x2ZSB0aGlzIHByb2JsZW0gKHRlc3QgZm9yIHNpZGUgZWZmZWN0cykuJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fZmlsZV90eXBlcyddPSdQZXJtaXR0ZWQgZmlsZSB0eXBlcyc7CiRsYW5nWyd0aXRsZV9pbWFnZV91cGxvYWRfcGF0aCddPSdMb2NhdGlvbiBmb3IgdXBsb2FkZWQgaW1hZ2UgZmlsZXMnOwokbGFuZ1sndGl0bGVfZmlsZV91cGxvYWRfcGF0aCddPSdMb2NhdGlvbiBmb3Igb3RoZXIgdXBsb2FkZWQgaXRlbSBmaWxlcyc7CiRsYW5nWyd0aXRsZV9pbWFnZV9wcm9jX3BhdGgnXT0nTG9jYXRpb24gZm9yIHByb2Nlc3NlZCBpbWFnZXMgKHRodW1ibmFpbHMsIHNjYWxlZCBpbWFnZXMsIGV0YyknOwokbGFuZ1sncGF0aF9oZWxwJ109J1lvdSBjYW4gc3BlY2lmeSB3aGVyZSBDYXRhbG9nZXIgc3RvcmVzIGZpbGVzLiBUaGVzZSBwYXRocyBhcmUgcmVsYXRpdmUgdG8gdGhlIDxpPnVwbG9hZHNfcGF0aDwvaT4gZGVmaW5lZCBpbiB5b3VyIGNvbmZpZy5waHA8YnIgLz5OT1RFOiBJZiB5b3UgY2hhbmdlIHRoZXNlIHBhdGhzIGFmdGVyIGZpbGVzIG9yIGltYWdlcyBoYXZlIGJlZW4gdXBsb2FkZWQsIENhdGFsb2dlciB3aWxsIGxvc2UgdGhlIGFscmVhZHktdXBsb2FkZWQgYXNzZXRzICh0aGV5IHdpbGwgc3RpbGwgYmUgdGhlcmUsIGJ1dCBDYXRhbG9nZXIgd2lsbCBub3Qga25vdyBhYm91dCB0aGVtLCBzbyB5b3Ugd2lsbCBuZWVkIHRvIHJlLXVwbG9hZCB0aGVtIGZvciBDYXRhbG9nZXIgdG8gZmlndXJlIGl0IG91dCkuJzsKCiRsYW5nWydjYXRhbG9nZXInXT0nQ2F0YWxvZ2VyJzsKCiRsYW5nWyd0aXRsZV9hdHRyX29yZGVyX2J5J109J09yZGVyJzsKJGxhbmdbJ3RpdGxlX2F0dHJfYWxpYXMnXT0nQXR0cmlidXRlIEFsaWFzIChTbWFydHkgRnJpZW5kbHkpJzsKJGxhbmdbJ3RpdGxlX2F0dHJfbGVuZ3RoJ109J0xlbmd0aConOwokbGFuZ1sndGl0bGVfYXR0cl9kZWZhdWx0J109J0RlZmF1bHQgVmFsdWUnOwokbGFuZ1sndGl0bGVfYXR0cl9sZW5ndGhfaGVscCddPScqTGVuZ3RoIG9ubHkgYXBwbGllcyB0byAiVGV4dCI8YnIgLz5WYWx1ZSBpcyBhIGNvbW1hLWRlbGltaXRlZCBsaXN0IG9mIG9wdGlvbnMgZm9yIERyb3Bkb3duczxiciAvPlZhbHVlIHNob3VsZCBjb250YWluIHRoZSBjaGVja2VkIHZhbHVlLCBhIGNvbW1hLCBhbmQgdGhlIHVuY2hlY2tlZCB2YWx1ZSBmb3IgY2hlY2tib3gnOwoKJGxhbmdbJ3RleHQnXSA9ICdUZXh0JzsKJGxhbmdbJ2Ryb3Bkb3duJ10gPSAnRHJvcGRvd24nOwokbGFuZ1sndGV4dGFyZWEnXSA9ICdUZXh0IEFyZWEnOwokbGFuZ1snY2hlY2tib3gnXSA9ICdDaGVja2JveCc7CgokbGFuZ1sndGFiX2FkdmFuY2VkX29wdGlvbnMnXSA9ICdDYXRhbG9nZXIgQWR2LiBPcHRzJzsKJGxhbmdbJ3RhYl9maWVsZHNfbGlzdCddID0gJ0NhdGFsb2dlciBGaWVsZHMgTGlzdCc7CiRsYW5nWyd0YWJfaW1hZ2VzJ10gPSAnQ2F0YWxvZ2VyIEltYWdlcyc7CiRsYW5nWyd0YWJfZmlsZXMnXSA9ICdDYXRhbG9nZXIgRmlsZXMnOwoKCiRsYW5nWydpdGVtX3BhZ2UnXSA9ICdJdGVtIFBhZ2UnOwokbGFuZ1snY2F0ZWdvcnlfcGFnZSddID0gJ0NhdGVnb3J5IFBhZ2UnOwokbGFuZ1snY2F0YWxvZ19wcmludGFibGUnXSA9ICdQcmludGFibGUgQ2F0YWxvZyc7CiRsYW5nWydjYXRhbG9nX2RhdGFzaGVldCddID0gJ0NhdGFsb2cgRGF0YXNoZWV0JzsKJGxhbmdbJ2NhdGFsb2dfc2hvcnRfbGlzdCddPSdGZWF0dXJlIExpc3QnOwokbGFuZ1snaXRlbV9jb21wYXJpc29uJ10gPSAnSXRlbSBDb21wYXJpc29uJzsKCiRsYW5nWyd0aXRsZV9nbG9iYWxfaXRlbV9zb3J0X29yZGVyJ10gPSAnU2V0IGl0ZW0gc29ydCBvcmRlciB0byc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfaXRlbXNfcGVyX3BhZ2UnXT0gJ1NldCBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2UgdG8nOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2NhdGVnb3J5X3JlY3Vyc2UnXSA9ICdTZXQgQ2F0ZWdvcnkgRGlzcGxheSBCZWhhdmlvciB0byc7CgokbGFuZ1sndGl0bGVfaXRlbV9zb3J0X29yZGVyJ10gPSAnRGVmYXVsdCBpdGVtIHNvcnQgb3JkZXInOwokbGFuZ1sndGl0bGVfcHJpbnRhYmxlX3NvcnRfb3JkZXInXSA9ICdEZWZhdWx0IHByaW50YWJsZSBjYXRhbG9nIHNvcnQgb3JkZXInOwokbGFuZ1sndGl0bGVfaXRlbXNfcGVyX3BhZ2UnXT0gJ0RlZmF1bHQgbnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlJzsKJGxhbmdbJ3RpdGxlX2F2YWlsX2F0dHJzJ10gPSAnSXRlbSBhdHRyaWJ1dGVzIGF2YWlsYWJsZSBmb3IgdGhlIHRlbXBsYXRlJzsKJGxhbmdbJ3RpdGxlX2F2YWlsX2ltYXR0cnMnXSA9ICdJdGVtIGltYWdlcyBhdmFpbGFibGUgZm9yIHRoZSB0ZW1wbGF0ZSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfaGVybyddID0gJ0ltYWdlIHNpemUgZm9yIEl0ZW0gUGFnZSAobG9uZyBheGlzIGluIHBpeGVscyknOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX3RodW1ibmFpbCddID0gJ1RodW1iYWlsIGltYWdlIHNpemUgZm9yIEl0ZW0gUGFnZSAobG9uZyBheGlzIGluIHBpeGVscyknOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX2NhdGVnb3J5J10gPSAnVGh1bWJuYWlsIGltYWdlIHNpemUgZm9yIEl0ZW0gb24gQ2F0ZWdvcnkgUGFnZSAobG9uZyBheGlzIGluIHBpeGVscyknOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX2NhdGFsb2cnXSA9ICdUaHVtYm5haWwgaW1hZ2Ugc2l6ZSBmb3IgSXRlbSBvbiBDYXRhbG9nIFBhZ2UgKGxvbmcgYXhpcyBpbiBwaXhlbHMpJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX3NpemVfaGVybyddID0gJ0ltYWdlIHNpemUgZm9yIENhdGVnb3J5IFBhZ2UgKGxvbmcgYXhpcyBpbiBwaXhlbHMpJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX3NpemVfdGh1bWJuYWlsJ10gPSAnVGh1bWJhaWwgaW1hZ2Ugc2l6ZSBmb3IgQ2F0ZWdvcnkgUGFnZSAobG9uZyBheGlzIGluIHBpeGVscyknOwokbGFuZ1sndGl0bGVfdGVtcGxhdGUnXT0nVGVtcGxhdGUnOwokbGFuZ1sndGl0bGVfdGVtcGxhdGVfdHlwZSddPSdUZW1wbGF0ZSBUeXBlJzsKJGxhbmdbJ3RpdGxlX3RpdGxlJ109J1RpdGxlJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2VfY291bnQnXT0nTWF4aW11bSBudW1iZXIgb2Ygdmlld3MgZm9yIGVhY2ggSXRlbSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ZpbGVfY291bnQnXT0nTWF4aW11bSBudW1iZXIgb2Ygb3RoZXIgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggaXRlbSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9pbWFnZV9jb3VudCddPSdNYXhpbXVtIG51bWJlciBvZiBCYW5uZXIgaW1hZ2VzIGZvciBlYWNoIENhdGVnb3J5IFBhZ2UnOwokbGFuZ1sndGl0bGVfaXRlbV9hdHRyaWJ1dGVzX2hlbHAnXT0nRWFjaCBhdHRyaWJ1dGUgeW91IGVudGVyIGhlcmUgd2lsbCBiZSB0aGUgdGl0bGUgb2YgYSBmaWVsZCB0aGF0IHlvdSBjYW4gdXNlIHRvIGRlc2NyaWJlIGFuIGluZGl2aWR1YWwgaXRlbSwgYW5kIHdpbGwgYmUgZGlzcGxheWVkIHdpdGggdGhhdCBpdGVtLiBZb3UgbWF5IGhhdmUgdG8gdXBkYXRlIHlvdXIgdGVtcGxhdGUgdG8gcmVmbGVjdCB0aGVzZSBhdHRyaWJ1dGVzLic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9hdHRyaWJ1dGVzX2hlbHAnXT0nRWFjaCBhdHRyaWJ1dGUgeW91IGVudGVyIGhlcmUgd2lsbCBiZSB0aGUgdGl0bGUgb2YgYSBmaWVsZCB0aGF0IHlvdSBjYW4gdXNlIHRvIGRlc2NyaWJlIGFuIGl0ZW0gY2F0ZWdvcnksIGFuZCB3aWxsIGJlIGRpc3BsYXllZCBvbiB0aGF0IGNhdGVnb3J5IHBhZ2UuIFlvdSBtYXkgaGF2ZSB0byB1cGRhdGUgeW91ciB0ZW1wbGF0ZSB0byByZWZsZWN0IHRoZXNlIGF0dHJpYnV0ZXMuJzsKJGxhbmdbJ3RpdGxlX2NhdGFsb2dfYXR0cmlidXRlc19oZWxwJ109J0VhY2ggYXR0cmlidXRlIHlvdSBlbnRlciBoZXJlIHdpbGwgYmUgdGhlIHRpdGxlIG9mIGEgZmllbGQgdGhhdCB5b3UgY2FuIHVzZSB0byBkZXNjcmliZSB0aGUgZW50aXJlIGNhdGFsb2csIGFuZCB3aWxsIGJlIGRpc3BsYXllZCBvbiB0aGUgcHJpbnRhYmxlIGNhdGFsb2cgcGFnZS4gWW91IG1heSBoYXZlIHRvIHVwZGF0ZSB5b3VyIHRlbXBsYXRlIHRvIHJlZmxlY3QgdGhlc2UgYXR0cmlidXRlcy4nOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfc29ydCddID0gJ0NhdGVnb3J5IFBhZ2UgSXRlbS1saXN0IHNvcnQgb3JkZXInOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZSddID0gJ0RlZmF1bHQgQ2F0ZWdvcnkgRGlzcGxheSBCZWhhdmlvcic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2l0ZW1zX2FsbCddID0gJ0luY2x1ZGUgYWxsIEl0ZW1zIHdpdGhpbiB0aGlzIGNhdGVnb3J5LCBpbmNsdWRpbmcgaXRlbXMgaW4gc3ViLWNhdGVnb3JpZXMnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9pdGVtc19vbmUnXSA9ICdJbmNsdWRlIGFsbCBJdGVtcyBpbW1lZGlhdGVseSB3aXRoaW4gdGhpcyBjYXRlZ29yeSwgYnV0IG5vdCBpdGVtcyBpbiBzdWItY2F0ZWdvcmllcyc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2NhdGVnb3JpZXNfYWxsJ10gPSAnSW5jbHVkZSBhbGwgQ2F0ZWdvcmllcyB3aXRoaW4gdGhpcyBjYXRlZ29yeSwgaW5jbHVkaW5nIGNhdGVnb3JpZXMgaW4gc3ViLWNhdGVnb3JpZXMnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9jYXRlZ29yaWVzX29uZSddID0gJ0luY2x1ZGUgYWxsIENhdGVnb3JpZXMgaW1tZWRpYXRlbHkgd2l0aGluIHRoaXMgY2F0ZWdvcnksIGJ1dCBub3QgY2F0ZWdvcmllcyBpbiBzdWItY2F0ZWdvcmllcyc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX21peGVkX2FsbCddID0gJ0luY2x1ZGUgYWxsIEl0ZW1zIGFuZCBDYXRlZ29yaWVzIHdpdGhpbiB0aGlzIGNhdGVnb3J5LCBpbmNsdWRpbmcgaXRlbXMgYW5kIGNhdGVnb3JpZXMgaW4gc3ViLWNhdGVnb3JpZXMnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9taXhlZF9vbmUnXSA9ICdJbmNsdWRlIGFsbCBJdGVtcyBhbmQgQ2F0ZWdvcmllcyBpbW1lZGlhdGVseSB3aXRoaW4gdGhpcyBjYXRlZ29yeSwgYnV0IG5vdCBpdGVtcyBvciBjYXRlZ29yaWVzIGluIHN1Yi1jYXRlZ29yaWVzJzsKJGxhbmdbJ3RpdGxlX3Nob3dfbWlzc2luZ19pbWFnZXMnXSA9ICdTaG93ICJObyBJbWFnZSIgaW1hZ2UgZm9yIG1pc3NpbmcgaW1hZ2VzJzsKJGxhbmdbJ3RpdGxlX3Nob3dfbWlzc2luZ19pbWFnZXNfbG9uZyddID0gJ1Nob3cgYSBzcGVjaWFsICJObyBJbWFnZSIgaW1hZ2UgaWYgdGhlcmUgYXJlIG1pc3NpbmcgaW1hZ2VzICh1c2VmdWwgZm9yIGRlYnVnZ2luZy4gT3RoZXJ3aXNlIHdpbGwgdXNlIGEgc2luZ2xlIHBpeGVsIHRyYW5zcGFyZW50IGltYWdlKS4nOwokbGFuZ1snbmF0dXJhbF9vcmRlciddID0gJ05hdmlnYXRpb24gT3JkZXInOwokbGFuZ1snYWxwaGFfb3JkZXInXSA9ICdBbHBoYWJldGljYWwgT3JkZXInOwoKJGxhbmdbJ21hbmFnZXByZWZzJ109J01hbmFnZSBQcmVmZXJlbmNlcyc7CiRsYW5nWydtYW5hZ2VhdHRycyddPSdNYW5hZ2UgVXNlci1EZWZpbmVkIEF0dHJpYnV0ZXMnOwokbGFuZ1snZ2xvYmFsb3BzJ109J0dsb2JhbCBDYXRhbG9nIE9wZXJhdGlvbnMnOwokbGFuZ1snYWRkdGVtcGxhdGUnXT0nQWRkIGEgbmV3IFN1Yi10ZW1wbGF0ZSc7CiRsYW5nWydyZWltcG9ydHRlbXBsYXRlcyddPSdSZS1pbXBvcnQgZXhhbXBsZSBzdWItdGVtcGxhdGVzJzsKJGxhbmdbJ3JlaW1wb3J0ZWQnXSA9ICdTYW1wbGUgc3ViLXRlbXBsYXRlcyBoYXZlIGJlZW4gaW1wb3J0ZWQuJzsKJGxhbmdbJ3RlbXBsYXRldXBkYXRlZCddPSdUZW1wbGF0ZSBhZGRlZC91cGRhdGVkLic7CiRsYW5nWyd0ZW1wbGF0ZWRlbGV0ZWQnXT0nVGVtcGxhdGUgZGVsZXRlZC4nOwokbGFuZ1sncHJlZnN1cGRhdGVkJ109J1ByZWZlcmVuY2VzIHVwZGF0ZWQuJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsZSB2ZXJzaW9uICVzIGluc3RhbGxlZC4nOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bGUgdXBncmFkZWQgdG8gdmVyc2lvbiAlcy4nOwokbGFuZ1snYmFkZmlsZSddID0gJ0ZpbGUgIiVzIiBpcyBub3QgYW4gYWNjZXB0YWJsZSBmb3JtYXQuJzsKJGxhbmdbJ2JhZGltYWdlJ10gPSAnUHJvYmxlbSB1cGxvYWRpbmcgIiVzIiAoY2hlY2sgZmlsZSBzaXplIGFuZC9vciBzZXJ2ZXIgcGVybWlzc2lvbnMpLic7CiRsYW5nWydiYWRpbWFnZWZvcm1hdCddID0gJyIlcyIgaXMgbm90IHZhbGlkLiBPbmx5IGpwZWdzIGFyZSBzdXBwb3J0ZWQgZm9yIHRoZSB0aW1lIGJlaW5nLic7CiRsYW5nWyd1cGxvYWRlZCddID0gJ0ZpbGUgIiVzIiB1cGxvYWRlZCBmb3IgaXRlbSAlcy4nOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bGUgVW5pbnN0YWxsZWQuJzsKJGxhbmdbJ2F0dHJzdXBkYXRlZCddID0gJ0F0dHJpYnV0ZXMgdXBkYXRlZC4nOwokbGFuZ1snbm9nbG9iYWxjaGFuZ2UnXSA9ICdEbyBub3QgY2hhbmdlJzsKJGxhbmdbJ2dsb2JhbGx5dXBkYXRlZCddID0gJ0NoYW5nZXMgcHJvcGFnYXRlZCBnbG9iYWxseS4nOwokbGFuZ1snYWRkdGVtcGxhdGUnXSA9ICdBZGQgVGVtcGxhdGUnOwokbGFuZ1snZWRpdHRlbXBsYXRlJ10gPSAnRWRpdCBUZW1wbGF0ZSc7CiRsYW5nWydzdWJ0ZW1wbGF0ZXMnXSA9ICdDYXRhbG9nIFN1Yi10ZW1wbGF0ZXMnOwokbGFuZ1snbmV4dCddID0gJzomIzE4NzsnOwokbGFuZ1sncHJldiddID0gJyYjMTcxOzonOwokbGFuZ1snZWRpdCddID0gJ0VkaXQnOwokbGFuZ1snZGVsZXRlJ109J0RlbGV0ZSc7CiRsYW5nWydub3RlbXBsYXRlcyddPSdObyBTdWItdGVtcGxhdGVzIGFyZSBpbnN0YWxsZWQhJzsKCiRsYW5nWydoZWxwdGV4dCddPScKPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPlRoaXMgbW9kdWxlIGxldHMgeW91IGNyZWF0ZSBvbmxpbmUgY2F0YWxvZ3Mgb3IgcG9ydGZvbGlvcy4gQ2F0YWxvZ3MgY29uc2lzdCBvZiAiQ2F0YWxvZyBJdGVtcyIgd2hpY2ggY291bGQgYmUgcHJvZHVjdHMsIHdvcmtzIG9mIGFydCwgb3IgdGhlIGxpa2UsIGFuZCAiQ2F0YWxvZyBDYXRlZ29yaWVzIiB3aGljaCBjb3VsZCBiZSBpdGVtIGNhdGVnb3JpZXMgb3Igb3RoZXIgbmF0dXJhbCBkaXZpc2lvbnMgb2YgdGhlIGNhdGFsb2cuPC9wPgo8cD5DYXRlZ29yaWVzIG1heSBiZSBkZWZpbmVkIGhpZXJhcmNoaWNhbGx5ICh1c2luZyB0aGUgc3RhbmRhcmQgQ01TIE1hZGUgU2ltcGxlIGNvbnRlbnQgbGlzdCkuIENhdGVnb3J5IHBhZ2VzIGNhbiBkaXNwbGF5IGl0ZW1zIGluIHRoZSBjYXRlZ29yeSBhbmQvb3Igc3ViY2F0ZWdvcmllcywgb3B0aW9uYWxseSByZWN1cnNpbmcgdGhyb3VnaCBzdWItY2F0ZWdvcmllcy4gVGhpcyBiZWhhdmlvciBjYW4gYmUgY29uZmlndXJlZCBvbiBhIHBlci1jYXRlZ29yeSBiYXNpcy48L1A+CjxwPlRoZXJlIGlzIGFsc28gYSBQcmludGFibGUgQ2F0YWxvZywgd2hpY2ggcmVwcmVzZW50cyB0aGUgd2hvbGUgY29sbGVjdGlvbiBvZiBDYXRhbG9nIEl0ZW1zIG9uIGEgc2luZ2xlIHBhZ2UgKHRoaXMgaXMgY3VycmVudGx5IGltcGxlbWVudGVkIGJhZGx5LCBhbmQgd2lsbCBsb2FkIHNsb3dseSkuPC9wPgo8cD5UaGUgbW9kdWxlIGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciAiQ29udGVudCBBbGlhc2VzIiAoYSBtb2R1bGUgYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudGFsaWFzZXMvIj50aGUgRGV2ZWxvcGVyIEZvcmdlPC9hPiksIHdoaWNoIGFsbG93cyB5b3UgdG8gcGxhY2UgYW55IENhdGFsb2cgSXRlbSBpbnRvIG11bHRpcGxlIENhdGFsb2cgQ2F0ZWdvcmllcy48L3A+CjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPgo8cD5XaGVuIHlvdSBpbnN0YWxsIHRoaXMgbW9kdWxlLCBpdCBjcmVhdGVzIHRocmVlIG5ldyBDb250ZW50IFR5cGVzOiBDYXRhbG9nIEl0ZW0sIENhdGFsb2cgQ2F0ZWdvcnksIGFuZCBQcmludGFibGUgQ2F0YWxvZy4gV2hlbiB5b3VcJ3JlIGluIHlvdXIgc2l0ZSBhZG1pbmlzdHJhdGlvbiBjYXRlZ29yeSwgeW91IGFkZCBDYXRhbG9nIEl0ZW1zIGFuZCBDYXRhbG9nIENhdGVnb3JpZXMganVzdCBhcyB5b3Ugd291bGQgYW55IG90aGVyIGtpbmQgb2YgcGFnZS4gU2VsZWN0IENvbnRlbnQgJmd0OyBQYWdlcyAmZ3Q7IEFkZCBDb250ZW50LCBhbmQgdGhlbiBzZWxlY3QgIkNhdGFsb2cgSXRlbSIgb3IgIkNhdGFsb2cgQ2F0ZWdvcnkiIGZyb20gdGhlIENvbnRlbnQgVHlwZSBwdWxsZG93bi48L3A+CjxoND5DYXRhbG9nIEl0ZW1zPC9oND4KPHA+QWRkaW5nIGEgQ2F0YWxvZyBJdGVtIGlzIHNpbWlsYXIgdG8gYWRkaW5nIGFuIG9yZGluYXJ5IHBhZ2UgdG8geW91ciBzaXRlLiBUaGUgZGF0YSBmaWVsZHMgZm9yIHRoZSBJdGVtIGFyZSBub3QgZXhhY3RseSB0aGUgc2FtZSwgaG93ZXZlci4gQWxzbyBub3RlIHRoYXQgaW4gdGhlICJJbWFnZXMiIHRhYiwgeW91IGNhbiBzZWxlY3QgbXVsdGlwbGUgaW1hZ2VzIHRvIHVwbG9hZCBmb3IgdGhlIGl0ZW0uIFdoZW4geW91IHVwbG9hZCBpbWFnZXMsIHRoZSBzeXN0ZW0gd2lsbCBzaXplIHRoZW0gYXBwcm9wcmlhdGVseSBmb3IgdGhlIGNhdGFsb2csIGNyZWF0ZSB0aHVtYm5haWxzIGZvciB1c2UgaW4gdGhlIEl0ZW1cJ3MgcGFnZSwgY3JlYXRlIHRodW1ibmFpbHMgZm9yIGFueSBDYXRlZ29yeSBwYWdlcywgYW5kIHNvIG9uLiBUaGlzIHJlcXVpcmVzIHRoYXQgeW91IGhhdmUgR0Qgb3IgYSBzaW1pbGFyIGltYWdlIGxpYnJhcnkgaW5zdGFsbGVkLiBDdXJyZW50bHksIG9ubHkganBlZyBmb3JtYXQgaW1hZ2VzIGFyZSBzdXBwb3J0ZWQuPC9wPgo8aDQ+Q2F0YWxvZyBDYXRlZ29yaWVzPC9oND4KPHA+QSBDYXRhbG9nIENhdGVnb3J5IGlzIHVzZWQgZm9yIG9yZ2FuaXppbmcgeW91ciBjYXRhbG9nIGl0ZW1zLiBJdCBwcm92aWRlcyBhIHBhZ2UgdGhhdCBsaXN0cyBDYXRhbG9nZXIgY29udGVudCB0aGF0IGlzIGNvbnRhaW5lZCBieSBpdC4gQSBDYXRhbG9nIEl0ZW0gaXMgY29uc2lkZXJlZCB0byBiZSBwYXJ0IG9mIGEgQ2F0YWxvZyBDYXRlZ29yeSBpZiBpdCBpcyBiZWxvdyB0aGF0IENhdGVnb3J5IGluIHRoZSBTaXRlIEhpZXJhcmNoeS4gQ2F0ZWdvcmllcyBjYW4gc2ltaWxhcmx5IGluY2x1ZGUgb3RoZXIgQ2F0ZWdvcmllcy48L3A+CjxwPkNhdGFsb2cgQ2F0ZWdvcmllcyBoYXZlIGEgbnVtYmVyIG9mIHNldHRpbmdzIHRvIGRldGVybWluZSBob3cgdGhleSBzaG91bGQgZGlzcGxheSB0aGUgSXRlbXMgYW5kIENhdGVnb3JpZXMgdGhleSBjb250YWluOiBpZiB5b3UgbG9vayBhdCB0aGUgIk9wdGlvbnMiIHRhYiwgeW91IGNhbiBjaG9vc2UgaG93IG1hbnkgaXRlbXMgYW5kL29yIGNhdGVnb3JpZXMgdG8gc2hvdywgd2hhdCBvcmRlciB0byBzaG93IHRoZW0gaW4sIHdoZXRoZXIgdG8gZGlzcGxheSBvbmx5IGl0ZW1zIG9yIG9ubHkgY2F0ZWdvcmllcyBvciBib3RoLCBhbmQgaG93IG1hbnkgbGV2ZWxzIG9mIHRoZSBoaWVyYXJjaHkgdG8gZGlzcGxheSBiZWxvdyB0aGUgY2F0ZWdvcnkgcGFnZS48L3A+CjxwPkZvciBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTo8L3A+CjxvbD4KCTxsaT48Yj5IYXRzPC9iPgoJCTxvbD4KCQkJPGxpPjxiPkZhc2hpb248L2I+CgkJCSAJPG9sPgoJCQkgCQk8bGk+RmVhdGhlcmVkIEhhdDwvbGk+PGxpPkZlZG9yYSA8L2xpPjxsaT5CYXNlYmFsbCBIYXQ8L2xpPgoJCQkgCTwvb2w+CgkJCSA8L2xpPgoJCSAJPGxpPjxiPldvcmsgSGF0czwvYj4KCQkgICAgCTxvbD4KCQkgICAgCQk8bGk+SGFyZCBIYXQ8L2xpPjxsaT5EaXZpbmcgSGVsbWV0PC9saT4KCQkgICAgCTwvb2w+CgkJICAgIDwvbGk+CgkJPC9vbD4KCTwvbGk+Cjwvb2w+CjxwPkluIHRoaXMgZGlhZ3JhbSwgYm9sZGVkIGl0ZW1zIGFyZSBDYXRhbG9nIENhdGVnb3JpZXMsIGFuZCBub24tYm9sZGVkIGl0ZW1zIGFyZSBDYXRhbG9nIEl0ZW1zLiBEZXBlbmRpbmcgdXBvbiBob3cgeW91IHNldCB5b3VyIG9wdGlvbnMsIHRoZSBIYXRzIENhdGVnb3J5IFBhZ2UgY2FuIHNob3cgb25seSBlbnRyaWVzIGZvciB0aGUgRmFzaGlvbiBhbmQgV29yayBIYXRzIENhdGVnb3J5IFBhZ2VzLCBvciBpdCBjYW4gc2hvdyBlbnRyaWVzIGZvciBGYXNoaW9uLCBXb3JrIEhhdHMsIGFuZCBhbGwgdGhlIGhhdHMgbGlzdGVkIGJlbG93IHRoZW0uPC9wPgo8cD5Zb3UgY2FuIG9wdCB0byBzaG93IHRoZSBpdGVtcyBpbiAibmF0dXJhbCIgb3JkZXIgKGkuZS4sIHRoZSBvcmRlciB0aGUgSXRlbXMgc2hvdyB1cCBpbiB0aGUgQ01TIENvbnRlbnQgSGllcmFyY2h5KSwgb3IgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLjwvUD4KPHA+SWYgeW91IGhhdmUgbGFyZ2UgbnVtYmVycyBvZiBpdGVtcyBpbiBhIENhdGVnb3J5LCB5b3UgY2FuIHNldCB0aGUgbWF4aW11bSBudW1iZXIgdG8gYmUgZGlzcGxheWVkIGluIGEgQ2F0ZWdvcnkgUGFnZSwgYW5kIHRoZSBwYWdlIHdpbGwgYXV0b21hdGljYWxseSBjcmVhdGUgbGlua3MgdG8gbmF2aWdhdGUgdGhyb3VnaCB0aGUgbGlzdC48L3A+CjxwPkVhY2ggQ2F0ZWdvcnkgcGFnZSBjYW4gaGF2ZSBkaWZmZXJlbnQgc2V0dGluZ3MgZm9yIHNvcnQgb3JkZXIsIGxldmVscyB0byBkaXNwbGF5LCBhbmQgbnVtYmVyIG9mIGl0ZW1zLiBZb3UgY2FuIHNldCB0aGUgZGVmYXVsdCBmb3IgdGhlc2UgdmFsdWVzIGluIEV4dGVuc2lvbnMgJmd0OyBDYXRhbG9nZXIgJmd0OyBNYW5hZ2UgUHJlZmVyZW5jZXMuIElmLCBhdCBhIGxhdGVyIGRhdGUsIHlvdSB3aXNoIHRvIGNoYW5nZSBzb21lIHNldHRpbmcgb24gYWxsIG9mIHlvdXIgQ2F0ZWdvcnkgcGFnZXMsIHlvdSBjYW4gZ28gaW50byBFeHRlbnNpb25zICZndDsgQ2F0YWxvZ2VyICZndDsgR2xvYmFsIENhdGFsb2cgT3B0aW9ucywgYW5kIG1ha2UgdGhvc2UgY2hhbmdlcy48L3A+CjxoND5JbWFnZXM8L2g0Pgo8cD5DYXRhbG9nZXIgYWxsb3dzIHlvdSB0byBzZWxlY3QgZGlmZmVyZW50IHNpemUgaW1hZ2VzIGZvciBJdGVtIHBhZ2VzLCBDYXRlZ29yeSBwYWdlcywgYW5kIHRoZSBQcmludGFibGUgQ2F0YWxvZy4gWW91IGNhbiBzZXQgdGhlc2UgZGVmYXVsdHMgaW4gRXh0ZW5zaW9ucyAmZ3Q7IENhdGFsb2dlciAmZ3Q7IE1hbmFnZSBQcmVmZXJlbmNlcy48L3A+CjxwPldoZW4geW91IHVwbG9hZCBpbWFnZXMsIHRoZSBvcmlnaW5hbCBpcyBzdG9yZWQuIFdoZW4gc29tZW9uZSB2aXNpdHMgYSBwYWdlLCB0aGUgcmVkdWNlZCBzaXplIGltYWdlcyBhcmUgcmVxdWVzdGVkIHVzaW5nIGEgc3BlY2lhbCBVUkwsIHdoaWNoIHdpbGwgcmVkaXJlY3QgdGhlIHVzZXJcJ3MgYnJvd3NlciB0byB0aGUgc2NhbGVkIGltYWdlIGlmIGl0IGV4aXN0cywgYW5kIGNyZWF0aW5nIHRoZSBzY2FsZWQgaW1hZ2UgaWYgaXQgZG9lc25cJ3QuIFRoaXMgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgaW1hZ2VzLCB3aXRob3V0IGhhdmluZyB0byByZS11cGxvYWQgYWxsIHRoZSBpbWFnZXMsIG9yIHJlc2NhbGluZyB0aGVtIGFsbCBhdCBvbmNlLjwvcD4KPHA+VGhpcyBpbWFnZSByZXNjYWxpbmcgY29kZSByZXF1aXJlcyB0aGF0IHlvdSBoYXZlIGVpdGhlciBJbWFnZU1hZ2ljayBvciBHRCBsaWIgaW5zdGFsbGVkLCBhbmQgY29uZmlndXJlZCBpbiB5b3VyIENNUyBNYWRlIFNpbXBsZSBjb25maWcucGhwLjwvcD4KPGg0PkZpbGVzPC9oND4KPHA+Q2F0YWxvZ2VyIGFsbG93cyB5b3UgdG8gYXNzb2NpYXRlIGFyYml0cmFyeSBmaWxlcyB3aXRoIGFueSBJdGVtIHBhZ2UuIFRoZXNlIGFyZSB1cGxvYWRlZCB2aWEgdGhlIGFkbWluLCBqdXN0IGxpa2UgaW1hZ2VzLiBUaGVyZQpoYXZlIGJlZW4gcnVkaW1lbnRhcnkgc2VjdXJpdHkgY29uc2lkZXJhdGlvbnMgKGUuZy4sIGZpbGUtZXh0ZW5zaW9uLWJhc2VkIHJlc3RyaWN0aW9ucyksIGhvd2V2ZXIsIGFzIHdpdGggYW55IGZpbGUgdXBsb2FkCmNhcGFiaWxpdHkgdGhhdCBwdXRzIGZpbGVzIGluc2lkZSB0aGUgd2ViIHJvb3QsIGlmIHlvdSBkbyBub3QgdHJ1c3QgeW91ciB1cGxvYWRlcnMsIHlvdSBhcmUgYXQgc29tZSBkZWdyZWUgb2Ygcmlzay4gWW91IGhhdmUgYmVlbiB3YXJuZWQuPC9wPgo8aDM+RmVhdHVyZSBMaXN0czwvaDM+CjxwPllvdSBjYW4sIGFzIG9mIHZlcnNpb24gMC40LCBoYXZlICJmZWF0dXJlIGxpc3RzIiB3aGljaCBhcmUgdGhlIDxpPm48L2k+IG1vc3QtcmVjZW50bHkgYWRkZWQgY2F0YWxvZyBpdGVtcywgb3IgYSBjb2xsZWN0aW9uIG9mIDxpPms8L2k+IHJhbmRvbSBpdGVtcyBmcm9tIHRoZSBjYXRhbG9nLjwvcD4KPGg0PiJBbGwiIEZlYXR1cmUgTGlzdDwvaDQ+CjxwPlRvIGdldCBhIGxpc3Qgb2YgYWxsIGNhdGFsb2cgaXRlbXMgKG9wdGlvbmFsbHkgdW5kZXIgYSBzcGVjaWZpZWQgcGFydCBvZiB5b3VyIGhpZXJhcmNoeSkgZm9yIHByb2Nlc3NpbmcgdmlhIGEgdGVtcGxhdGUsIHlvdSBjYW4gdXNlCnRoZSAiYWxsIiBmZWF0dXJlIGxpc3QuPC9wPgo8cD5UaGUgc3ludGF4IGZvciBhbiAiYWxsIiBsaXN0IGlzIGxpa2U6PC9wPgo8cD4mIzEyMztDYXRhbG9nZXIgYWN0aW9uPVwnYWxsXCcgc3ViX3RlbXBsYXRlPVwnbXlfc3ViX3RlbXBsYXRlXCd9LCB3aGVyZSBzdWJfdGVtcGxhdGUgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGxpc3QuClRoZXJlIGlzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciwgYWxpYXM9XCdwYWdlX2FsaWFzXCcsIHdoZXJlIHBhZ2VfYWxpYXMgaW5kaWNhdGVzIHRoZSB0b3Agb2YgdGhlIHRyZWUgKGUuZy4sIGEgcGxhY2UgaW4geW91ciBtZW51CmhpZXJhcmNoeSwgdHlwaWNhbGx5IGEgY2F0ZWdvcnkgcGFnZSkgaW4gd2hpY2ggdG8gbG9vayBmb3IgbmV3IGl0ZW1zLiBBIHNwZWNpYWwgdmFsdWUgZm9yICJwYWdlX2FsaWFzIiBpcyAiLyIsIHdoaWNoIG1lYW5zIHRvCnN0YXJ0IGF0IHRoZSByb290LjwvcD4KPHA+VGhpcyBpcyB1c2VmdWwgZm9yIGNhdGFsb2ctd2lkZSBvcGVyYXRpb25zLiBGb3IgZXhhbXBsZSwgdG8gZ2V0IGEgbGlzdCBvZiBhbGwgY2F0ZWdvcmllcyAoYW5kIGRvIHNvbWV0aGluZyB3aXRoIHRoZW0pLAp5b3UgY291bGQgdXNlIHRoZSB0YWcgJiMxMjM7Q2F0YWxvZ2VyIGFjdGlvbj1cJ2FsbFwnIHN1Yl90ZW1wbGF0ZT1cJ215X3N1Yl90ZW1wbGF0ZVwnIGFsaWFzPVwnL1wnIHJlY3Vyc2U9XCdjYXRlZ29yaWVzX2FsbFwnfS4gWW91ciB0ZW1wbGF0ZSBjb3VsZCB0aGVuIHRocm93CnRob3NlIGNhdGVnb3JpZXMgaW50byBhIHB1bGxkb3duIG1lbnUgdGhhdCByZWRpcmVjdGVkIHlvdSB0byB0aGF0IGNhdGVnb3J5XCdzIHBhZ2UsIGZvciBleGFtcGxlOjwvcD4KPHByZT4KJmx0O3NlbGVjdCBuYW1lPSJmb28iIG9uY2hhbmdlPSJkb2N1bWVudC5sb2NhdGlvbj10aGlzLm9wdGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4XS52YWx1ZTsiPgombHQ7b3B0aW9uIHZhbHVlPSIiPlNlbGVjdCBBIHRhcmdldCZsdDsvb3B0aW9uPgomIzEyMztmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09dGhpc29uZX0KICAgJmx0O29wdGlvbiB2YWx1ZT0iJiMxMjM7JHRoaXNvbmUubGlua30iPiYjMTIzOyR0aGlzb25lLnRpdGxlfSZsdDsvb3B0aW9uPgomIzEyMzsvZm9yZWFjaH0KJmx0Oy9zZWxlY3Q+CjwvcHJlPgo8cD5JZiB5b3Ugd2FudGVkIHRoYXQgdG8gb25seSBzaG93IGNhdGVnb3JpZXMgdGhhdCB3ZXJlIGluIHRoZSB2ZXJ5IHRvcCBsZXZlbCBvZiB5b3VyIGhpZXJhcmNoeSwgeW91XCdkIHJlcGxhY2UgdGhlIHJlY3Vyc2U9XCdjYXRlZ29yaWVzX2FsbFwnIHdpdGgKcmVjdXJzZT1cJ2NhdGVnb3JpZXNfb25lXCcuIE9yIGlmIHlvdSB3YW50ZWQgaXQgdG8gYmUgYWxsIGNhdGFsb2cgSXRlbXMgaW5zdGVhZCBvZiBjYXRlZ29yaWVzLCB5b3UgY291bGQgdXNlIGEgdGFnIGxpa2U6CiYjMTIzO0NhdGFsb2dlciBhY3Rpb249XCdhbGxcJyBzdWJfdGVtcGxhdGU9XCdteV9zdWJfdGVtcGxhdGVcJyBhbGlhcz1cJy9cJyByZWN1cnNlPVwnaXRlbXNfYWxsXCd9CjxwPlNpbWlsYXJseSwgeW91IGNvdWxkIGhhdmUgaXQgbGlzdCBvbmx5IGNhdGVnb3JpZXMgdW5kZXIgdGhlIGN1cnJlbnQgcGFnZSAoYnkgb21pdHRpbmcgdGhlICJhbGlhcz1cJy9cJyIpLiBUaGUgY29tYmluYXRpb25zIGFyZSBiYXNpY2FsbHkgbGltaXRsZXNzITwvcD4KPHA+QWxsIHN1cHBvcnRlZCB2YWx1ZXMgb2YgcmVjdXJzZSBpbmNsdWRlOjx1bD4KPGxpPml0ZW1zX29uZSAtIENhdGFsb2cgaXRlbXMsIG5vIG1vcmUgdGhhbiBvbmUgbGV2ZWwgYmVsb3cgdGhlIGN1cnJlbnQgcGFnZSAob3IgYWxpYXMgcG9pbnQpPC9saT4KPGxpPml0ZW1zX2FsbCAtIENhdGFsb2cgaXRlbXMsIGF0IGFueSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPgo8bGk+Y2F0ZWdvcmllc19vbmUgLSBDYXRlZ29yaWVzLCBubyBtb3JlIHRoYW4gb25lIGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+CjxsaT5jYXRlZ29yaWVzX2FsbCAtIENhdGVnb3JpZXMsIGF0IGFueSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPgo8bGk+bWl4ZWRfb25lIC0gQ2F0YWxvZyBpdGVtcyBhbmQgQ2F0ZWdvcmllcywgbm8gbW9yZSB0aGFuIG9uZSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPgo8bGk+bWl4ZWRfYWxsIC0gQ2F0YWxvZyBpdGVtcyBhbmQgQ2F0ZWdvcmllcywgYXQgYW55IGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+CjwvdWw+CjwvcD4KPHA+SXRlbXMgaW4gdGhlc2UgbGlzdHMgY29tZSBiYWNrIGluIGhpZXJhcmNoeSBvcmRlci4gWW91IGNhbiBjaGFuZ2UgdGhpcyB1c2luZyB0aGUgXCdnbG9iYWxfc29ydFwnIHBhcmFtZXRlci4gWW91ciBjaG9pY2VzIGFyZTo8L3A+Cjx1bD4KPGxpPmFscGhhIC0gYWxwaGFiZXRpY2FsbHkgYnkgdGl0bGU8L2xpPgo8bGk+ZGF0ZSAtIGluIG9yZGVyIG9mIGl0ZW0gY3JlYXRpb24gZGF0ZTwvbGk+CjxsaT5tZGF0ZSAtIGluIG9yZGVyIG9mIGl0ZW0gbW9kaWZpY2F0aW9uIGRhdGU8L2xpPgo8L3VsPgo8cD5Zb3UgbWF5IG9yZGVyIHRoZXNlIHNvcnRzIHVzaW5nIHRoZSBcJ2dsb2JhbF9zb3J0X2RpclwnIHBhcmFtZXRlciwgd2hpY2ggd2lsbCBhbGxvdyBcJ2FzY1wnIG9yIFwnZGVzY1wnLjwvcD4KPHA+U28sIGZvciBhIHRob3JvdWdoIGV4YW1wbGU6PC9wPgo8cD4mIzEyMztDYXRhbG9nZXIgYWN0aW9uPVwnYWxsXCcgc3ViX3RlbXBsYXRlPVwnbXlfc3ViX3RlbXBsYXRlXCcgYWxpYXM9XCcvXCcgcmVjdXJzZT1cJ2NhdGVnb3JpZXNfYWxsXCcgZ2xvYmFsX3NvcnQ9XCdhbHBoYVwnIGdsb2JhbF9zb3J0X2Rpcj1cJ2FzY1wnfTwvcD4KPGg0PlJlY2VudGx5IEFkZGVkIEZlYXR1cmUgTGlzdDwvaDQ+CjxwPlRvIHVzZSBhICJtb3N0LXJlY2VudGx5IGFkZGVkIiBsaXN0IHdpbGwgYWxsb3cgeW91IHRvIGRpc3BsYXkgdGhlIG1vc3QgcmVjZW50bHktYWRkZWQgY2F0YWxvZyBpdGVtcyB1bmRlciBhIHNwZWNpZmllZCBwYXJ0IG9mIHlvdXIgaGllcmFyY2h5LjwvcD4KPHA+VGhlIHN5bnRheCBmb3IgYSAibW9zdCByZWNlbnRseSBhZGRlZCIgbGlzdCBpcyBsaWtlOjwvcD4KPHA+JiMxMjM7Q2F0YWxvZ2VyIGFjdGlvbj1cJ3JlY2VudFwnIHN1Yl90ZW1wbGF0ZT1cJ215X3N1Yl90ZW1wbGF0ZVwnfSwgd2hlcmUgc3ViX3RlbXBsYXRlIGlzIHRoZSB0ZW1wbGF0ZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBsaXN0LgpUaGVyZSBhcmUgZm91ciBvcHRpb25hbCBwYXJhbWV0ZXJzLCBjb3VudD1cJzNcJyBhbGlhcz1cJ3BhZ2VfYWxpYXNcJywgZ2xvYmFsX3NvcnQ9XCdkYXRlXCcsIGdsb2JhbF9zb3J0X2Rpcj1cJ2Rlc2NcJyB3aGVyZSBjb3VudAppcyB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRvIGluY2x1ZGUsIHBhZ2VfYWxpYXMgaW5kaWNhdGVzIHRoZSB0b3Agb2YgdGhlIHRyZWUgKGUuZy4sIGEgcGxhY2UgaW4geW91ciBtZW51IGhpZXJhcmNoeSwKdHlwaWNhbGx5IGEgY2F0ZWdvcnkgcGFnZSkgaW4gd2hpY2ggdG8gbG9vayBmb3IgbmV3IGl0ZW1zLiBBIHNwZWNpYWwgdmFsdWUgZm9yICJwYWdlX2FsaWFzIiBpcyAiLyIsIHdoaWNoIG1lYW5zCnRvIHVzZSA8aT5hbGw8L2k+IHBhZ2VzIGluIHRoZSBzaXRlLiBnbG9iYWxfc29ydCBtYXkgYmUgXCdkYXRlXCcgKGZvciBpdGVtIGNyZWF0aW9uIGRhdGUpIG9yIFwnbWRhdGVcJyBmb3IgbW9kaWZpY2F0aW9uIGRhdGUsIGFuZApnbG9iYWxfc29ydF9kaXIgbWF5IGJlIFwnYXNjXCcgb3IgXCdkZXNjXCcuPC9wPgo8aDQ+UmFuZG9tIEl0ZW1zIEZlYXR1cmUgTGlzdDwvaDQ+CjxwPlRoZSBzeW50YXggZm9yIGEgInJhbmRvbSIgbGlzdCBpcyBsaWtlOjwvcD4KPHA+JiMxMjM7Y0NhdGFsb2dlciBhY3Rpb249XCdyYW5kb21cJyBzdWJfdGVtcGxhdGU9XCdteV9zdWJfdGVtcGxhdGVcJ30sIHdoZXJlIHN1Yl90ZW1wbGF0ZSBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgbGlzdC4gVGhlcmUgYXJlIHR3byBvcHRpb25hbCBwYXJhbWV0ZXJzLCBjb3VudD1cJzNcJyBhbGlhcz1cJ3BhZ2VfYWxpYXNcJywgd2hlcmUgY291bnQgaXMgdGhlIG51bWJlciBvZiBpdGVtcyB0byBpbmNsdWRlLCBhbmQgcGFnZV9hbGlhcyBpbmRpY2F0ZXMgdGhlIHRvcCBvZiB0aGUgdHJlZSAoZS5nLiwgYSBwbGFjZSBpbiB5b3VyIG1lbnUgaGllcmFyY2h5LCB0eXBpY2FsbHkgYSBjYXRlZ29yeSBwYWdlKSBpbiB3aGljaCB0byBsb29rIGZvciBuZXcgaXRlbXMuIEEgc3BlY2lhbCB2YWx1ZSBmb3IgInBhZ2VfYWxpYXMiIGlzICIvIiwgd2hpY2ggbWVhbnMgdG8gdXNlIDxpPmFsbDwvaT4gcGFnZXMgaW4gdGhlIHNpdGUuPC9wPgo8aDQ+VmFyaWFibGU8L2g0Pgo8cD5Zb3UgY2FuIGdyYWIgdmFyaWFibGVzIChhdHRyaWJ1dGVzKSBvdXRzaWRlIG9mIHlvdXIgQ2F0YWxvZ2VyIHRlbXBsYXRlcywgc2F5IGluIGEgZ2xvYmFsIGNvbnRlbnQgYmxvY2ssIHVzaW5nIHRoZSB2YXJpYWJsZSBtZXRob2QuIFRoZSBzeW50YXggbG9va3MgbGlrZTo8L3A+CjxwPiYjMTIzO0NhdGFsb2dlciBhY3Rpb249XCd2YXJpYWJsZVwnIG5hbWU9XCdpdGVtbm90ZXNcJyBkZWZhdWx0PVwnbm8gbm90ZXNcJ30sIHdoZXJlIG5hbWUgaXMgdGhlIGF0dHJpYnV0ZSB0byBkaXNwbGF5ICh1c2luZyB0aGUgc2FtZSBhbGwgbG93ZXItY2FzZSwgcHVuY3R1YXRpb24tZnJlZSByZXByZXNlbnRhdGlvbiBsaWtlIHRoZSBzbWFydHkgdGVtcGxhdGUgdmFyaWFibGVzKSwgYW5kIGRlZmF1bHQgaXMgdGhlIHZhbHVlIHRvIHVzZSBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBkZWZpbmVkLjwvcD4KPGg0Pkl0ZW0gQ29tcGFyaXNvbnM8L2g0Pgo8cD5BcyBvZiB2ZXJzaW9uIDAuNy43LCB0aGVyZSBpcyBhIHByb2R1Y3QgY29tcGFyaXNvbiBhY3Rpb246PC9wPgo8cD4mIzEyMztjQ2F0YWxvZ2VyIGFjdGlvbj1cJ2NvbXBhcmVcJyBzdWJfdGVtcGxhdGU9XCdteV9zdWJfdGVtcGxhdGVcJyBpdGVtcz1cJ2l0ZW0xLGl0ZW0yLGl0ZW0zXCd9LCB3aGVyZSBzdWJfdGVtcGxhdGUgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGxpc3QsIGFuZCBpdGVtcyBpcyBhIGNvbW1hLWRlbGltaXRlZCBsaXN0IG9mIGl0ZW0gcGFnZSBhbGlhc2VzIHRvIGNvbXBhcmUuIEJvbGRlciB1c2VycyBtYXkgYWxzbyBjaG9vc2UgdG8gcGFzcyBpbiB0aGUgaXRlbXMgdG8gY29tcGFyZSBhcyByZXF1ZXN0IHZhcmlhYmxlcywgdGhlcmVieSBlbmFibGluZyBkeW5hbWljIGNvbXBhcmlzb25zIGJhc2VkIG9uIHVzZXIgc2VsZWN0aW9ucy4gRG8gdGhpcyBieSBzZXR0aW5nIHRoZSAiaXRlbXMiIHZhcmlhYmxlIG9uIHRoZSByZXF1ZXN0IHBhc3NlZCB0byB0aGUgcGFnZSBjb250YWluaW5nIHRoZSBDYXRhbG9nZXIgdGFnIHdpdGggYSBjb21wYXJlIGFjdGlvbi48L3A+CjxwPlRoZSBkZWZhdWx0IGl0ZW0gY29tcGFyaXNvbiB0ZW1wbGF0ZSBjb3VsZCB1c2Ugc29tZSBzdHlsaW5nLCBlLmcuLDo8L3A+CjxwcmU+Ci5pdGVtX2NvbXBhcmlzb24gdGgge2ZvbnQtd2VpZ2h0OiBib2xkOyBwYWRkaW5nOiA1cHg7IHRleHQtYWxpZ246Y2VudGVyO30KLml0ZW1fY29tcGFyaXNvbiB0ZCB7Ym9yZGVyOiAxcHggc29saWQgZ3JheTsgcGFkZGluZzogM3B4IDVweDt0ZXh0LWFsaWduOnJpZ2h0O30KPC9wcmU+CjxoMz5DdXN0b21pemF0aW9uIGFuZCBBZHZhbmNlZCBUb3BpY3M8L2gzPgo8aDQ+Q2F0YWxvZyBJdGVtIEF0dHJpYnV0ZXM8L2g0Pgo8cD5UaGUgZGVmYXVsdCBpdGVtIGF0dHJpYnV0ZXMgYXJlIHR5cGljYWwgZm9yIGEgY2F0YWxvZyBvZiBwcm9kdWN0cyBvciBhcnR3b3JrcywgYnV0IGJ5IGdvaW5nIGludG8gRXh0ZW5zaW9ucyAmZ3Q7IENhdGFsb2dlciAmZ3Q7IE1hbmFnZSBVc2VyLURlZmluZWQgQXR0cmlidXRlcywgeW91IGNhbiBjaGFuZ2UgdGhlIGF0dHJpYnV0ZXMuIEl0XCdzIGJlc3QgdG8gZGVmaW5lIHRoZSBhdHRyaWJ1dGVzIGJlZm9yZSB5b3Ugc3RhcnQgZW50ZXJpbmcgQ2F0YWxvZyBJdGVtcy48L3A+CjxwPk5vdGUgdGhhdCB0aGUgYXR0cmlidXRlcyB5b3UgZGVmaW5lIG1heSBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSB0ZW1wbGF0ZSB0aGF0IHlvdVwncmUgdXNpbmcgdG8gZGlzcGxheSBDYXRhbG9nIEl0ZW1zIC0tIHNlZSBDdXN0b20gVGVtcGxhdGVzIGJlbG93LjwvcD4KPGg0PkNhdGFsb2cgQ2F0ZWdvcnkgQXR0cmlidXRlczwvaDQ+CjxwPlNpbWlsYXJseSwgeW91IGNhbiBzZXQgYXR0cmlidXRlcyBmb3IgQ2F0ZWdvcmllcy4gQWdhaW4sIHRoZSBhdHRyaWJ1dGVzIHlvdSBkZWZpbmUgbWF5IG5lZWQgdG8gYmUgYWRkZWQgdG8gdGhlIHRlbXBsYXRlIHRoYXQgeW91XCdyZSB1c2luZyB0byBkaXNwbGF5IENhdGFsb2cgQ2F0ZWdvcmllcyAtLSBzZWUgQ3VzdG9tIFRlbXBsYXRlcyBiZWxvdy48L3A+CjxoND5QcmludGFibGUgQ2F0YWxvZyBBdHRyaWJ1dGVzPC9oND4KPHA+TGlrZXdpc2UsIHlvdSBjYW4gc2V0IGF0dHJpYnV0ZXMgZm9yIFByaW50YWJsZSBDYXRhbG9ncy4gQWdhaW4sIHRoZSBhdHRyaWJ1dGVzIHlvdSBkZWZpbmUgbWF5IG5lZWQgdG8gYmUgYWRkZWQgdG8gdGhlIHRlbXBsYXRlIHRoYXQgeW91XCdyZSB1c2luZyB0byBkaXNwbGF5IHlvdXIgUHJpbnRhYmxlIENhdGFsb2cgLS0gc2VlIEN1c3RvbSBUZW1wbGF0ZXMgYmVsb3cuPC9wPgo8aDQ+Q3VzdG9tIFRlbXBsYXRlczwvaDQ+CjxwPklmIHlvdVwncmUgd2lsbGluZyB0byBtZXNzIGFyb3VuZCB3aXRoIFNtYXJ0eSBUZW1wbGF0ZXMsIHlvdSBjYW4gY2hhbmdlIHRoZSBsYXlvdXQgb2YgYW55IG9mIHRoZSBwYWdlcyBnZW5lcmF0ZWQgYnkgQ2F0YWxvZ2VyLiBUaGlzIHNob3VsZCBtYWtlIGNlcnRhaW4gZGV2ZWxvcGVycyB2ZXJ5IGhhcHB5LCBldmVuIGlmIHRoZSBpbmVmZmljaWVuY3kgb2YgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgd2lsbCBub3QuIFRoZXJlIGFyZSBmb3VyIGtpbmRzIG9mIHRlbXBsYXRlczogb25lIGtpbmQgZm9yIENhdGFsb2cgSXRlbXMsIG9uZSBraW5kIGZvciBDYXRhbG9nIENhdGVnb3JpZXMsIGFuZCBvbmUga2luZCBmb3IgUHJpbnRhYmxlIENhdGFsb2dzLCBhbmQgb25lIGtpbmQgZm9yICJGZWF0dXJlIiBsaXN0cywgc3VjaCBhcyByZWNlbnRseSBhZGRlZCBpdGVtcyBvciByYW5kb20gc2VsZWN0aW9ucy48L3A+CjxwPldoZW4gZWRpdGluZyBhIFRlbXBsYXRlLCB0aGUgYWRtaW4gc2NyZWVuIHdpbGwgZGlzcGxheSBhIGxpc3Qgb2YgU21hcnR5IHRhZ3MgYXZhaWxhYmxlIHRvIHlvdSBmb3IgdGhhdCBraW5kIG9mIHRlbXBsYXRlLiBUaGlzCndpbGwgb25seSBoYXBwZW4gb25jZSB0aGUgbW9kdWxlIGtub3dzIHdoYXQga2luZCBvZiB0ZW1wbGF0ZSB5b3VcJ3JlIGVkaXRpbmcsIHNvIHdoZW4geW91IGZpcnN0IGNyZWF0ZSB0aGUgdGVtcGxhdGUsIGl0IGRpc3BsYXlzIGFsbAp0aGUgU21hcnR5IHRhZ3MgaXQga25vd3MgYWJvdXQsIG9ubHkgc29tZSBvZiB3aGljaCBiZWluZyBhcHBsaWNhYmxlLjwvcD4KPGg0PkRpc3BsYXlpbmcgQXR0cmlidXRlcyBvbiBJdGVtIFBhZ2VzPC9oND4KPHA+QXR0cmlidXRlcyBhcmUgYXZhaWxhYmxlIHRvIFNtYXJ0eSBhcyB0b3AtbGV2ZWwgdmFyaWFibGVzLiBUaGV5IGFyZSBzdG9yZWQgYXMgc2FuaXRpemVkIHZlcnNpb25zIG9mIHRoZSBhdHRyaWJ1dGUgbmFtZXMsIHdoaWNoIG1lYW5zCml0IGlzIGNvbnZlcnRlZCB0byBsb3dlciBjYXNlIGFuZCBhbGwgcHVuY3R1YXRpb24gYW5kIG5vbi1VUy1BU0NJSSBjaGFyYWN0ZXJzIGdldCByZW1vdmVkLiBUaGlzIGlzIGJlY2F1c2UgU21hcnR5IGlzIGZpbmlja3ksIGFuZCB3aWxsIG5vdCBoYW5kbGUgdGhlc2UgY2hhcmFjdGVycy48L3A+CjxwPlNvLCBmb3IgZXhhbXBsZSwgaWYgeW91IGhhdmUgYW4gYXR0cmlidXRlIGNhbGxlZCAiR2zDvGNrbGljaGtlaXQiLCB0aGVyZSB3aWxsIGJlIGEgU21hcnR5IHZhcmlhYmxlIHskZ2xja2xpY2hrZWl0fS4gTm90ZSB0aGF0IHRoZSAiw7wiIGlzIG9taXR0ZWQuPC9wPgo8cD5Gb3J0dW5hdGVseSwgdGhpcyBpcyBzaW1wbGlmaWVkIGJ5IHRoZSAkYXR0cmxpc3QgbGlzdCBhdmFpbGFibGUuIFRoaXMgaXMgYSBsaXN0IG9mIGF0dHJpYnV0ZXMgYnkgZm9ybWFsIG5hbWUgKCJHbMO8Y2tsaWNoa2VpdCIpIGFuZCB0aGVpciBrZXkgKCJnbGNrbGljaGtlaXQiKS4gRm9yIGV4YW1wbGU6CjxwcmU+Cgl7c2VjdGlvbiBuYW1lPWF0IGxvb3A9JGF0dHJsaXN0fQoJJmx0O2RpdiBjbGFzcz0iaXRlbV9hdHRyaWJ1dGVfbmFtZSI+eyRhdHRybGlzdFthdF0ubmFtZX06Jmx0Oy9kaXY+Jmx0O2RpdiBjbGFzcz0iaXRlbV9hdHRyaWJ1dGVfdmFsIj57ZXZhbCB2YXI9JGF0dHJsaXN0W2F0XS5rZXl9Jmx0Oy9kaXY+Cgl7L3NlY3Rpb259CjwvcHJlPgo8cD5BcyBvZiB2ZXJzaW9uIDAuOCwgeW91IGNhbiBhc3NpZ24gYW4gYWxpYXMgdG8gZWFjaCBhdHRyaWJ1dGUuIFRoZXNlIGFsaWFzZXMgbmVlZCB0byBiZSBVUy1BU0NJSSBhbmQgY29udGFpbiBubyBwdW5jdHVhdGlvbi4gVGhleSBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBzYW5pdGl6ZWQgYXR0cmlidXRlIG5hbWUgKGUuZy4sIHlvdSBjb3VsZCB1c2UgdGhlIGFsaWFzICJnbHVlY2tsaWNoa2VpdCIpLjwvcD4KPGg0PkRpc3BsYXlpbmcgQXR0cmlidXRlcyBvbiBQYWdlcyB3aXRoIExpc3RzIG9mIEl0ZW1zPC9oND4KPHA+QXR0cmlidXRlcyBhcmUgaW5jbHVkZWQgaW4gdGhlICRpdGVtbGlzdHNbI10gaW4gdHdvIGRpZmZlcmVudCB3YXlzOiB0b3AtbGV2ZWwgYXR0cmlidXRlcyBvZiB0aGUgaXRlbSwgYW5kIGFzIHBhcnQgb2YgdGhlIGl0ZW1cJ3MgImF0dHIiIGFycmF5LiBUaGV5IGFyZSBzdG9yZWQgYXMgc2FuaXRpemVkIHZlcnNpb25zIG9mIHRoZSBhdHRyaWJ1dGUgbmFtZXMsIHdoaWNoIG1lYW5zCml0IGlzIGNvbnZlcnRlZCB0byBsb3dlciBjYXNlIGFuZCBhbGwgcHVuY3R1YXRpb24gYW5kIG5vbi1VUy1BU0NJSSBjaGFyYWN0ZXJzIGdldCByZW1vdmVkLiBUaGlzIGlzIGJlY2F1c2UgU21hcnR5IGlzIGZpbmlja3ksIGFuZCB3aWxsIG5vdCBoYW5kbGUgdGhlc2UgY2hhcmFjdGVycy48L3A+CjxwPlNvLCBmb3IgZXhhbXBsZSwgaWYgeW91IGhhdmUgYW4gYXR0cmlidXRlIGNhbGxlZCAiR2zDvGNrbGljaGtlaXQiLCB0aGUgaXRlbSB3aWxsIGhhdmUgJGl0ZW0uZ2xja2xpY2hrZWl0IGFuZCAkaXRlbS5hdHRyc1tcJ2dsY2tsaWNoa2VpdFwnXS4gTm90ZSB0aGF0IHRoZSAiw7wiIGlzIG9taXR0ZWQuIFlvdSBjYW4gcmVmZXIgdG8gdGhpcyBhdHRyaWJ1dGUgaW4geW91ciB0ZW1wbGF0ZQp3aXRoIFNtYXJ0eSBjb2RlIGxpa2U6IHskaXRlbWxpc3RbaW5kZXhdLmdsY2tsaWNra2VpdH0gb3IgeyRpdGVtbGlzdFtpbmRleF0uYXR0cnMuZ2xja2xpY2hrZWl0fS48L3A+CjxwPkZvcnR1bmF0ZWx5LCB0aGlzIGlzIHNpbXBsaWZpZWQgYnkgdGhlICRhdHRybGlzdCBsaXN0IGF2YWlsYWJsZS4gVGhpcyBpcyBhIGxpc3Qgb2YgYXR0cmlidXRlcyBieSBmb3JtYWwgbmFtZSAoIkdsw7xja2xpY2hrZWl0IikgYW5kIHRoZWlyIGtleSAoImdsY2tsaWNoa2VpdCIpLiBGb3IgZXhhbXBsZToKPHByZT4KICAgIHtmb3JlYWNoIGZyb209JGF0dHJsaXN0IGl0ZW09YXR0ciBrZXk9a30KICAgIHskYXR0cn06IHskaXRlbXNbbnVtbG9vcF1bJGtdfQogICAgey9mb3JlYWNofQo8L3ByZT4KPHA+QXMgb2YgdmVyc2lvbiAwLjgsIHlvdSBjYW4gYXNzaWduIGFuIGFsaWFzIHRvIGVhY2ggYXR0cmlidXRlLiBUaGVzZSBhbGlhc2VzIG5lZWQgdG8gYmUgVVMtQVNDSUkgYW5kIGNvbnRhaW4gbm8gcHVuY3R1YXRpb24uIFRoZXkgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgc2FuaXRpemVkIGF0dHJpYnV0ZSBuYW1lIChlLmcuLCB5b3UgY291bGQgdXNlIHRoZSBhbGlhcyAiZ2x1ZWNrbGljaGtlaXQiKS48L3A+CjxoND5TbWFydHkgdGFncyBpbiBBdHRyaWJ1dGVzPC9oND4KPHA+U29tZXRpbWVzLCB5b3VcJ2xsIHdhbnQgdGhlIGRlc2NyaXB0aW9ucyBvZiB5b3VyIGl0ZW1zIHRvIGluY2x1ZGUgc21hcnR5IHRhZ3MgKGUuZy4sIGNtc19zZWxmbGluaykuIFRvIG1ha2UgdGhhdCB3b3JrLCB5b3VcJ2xsIG5lZWQgdG8KdXBkYXRlIHlvdXIgdGVtcGxhdGUuIEZvciB0aGUgYXR0cmlidXRlcyB3aGVyZSB5b3Ugd2FudCBzbWFydHkgdGFncyB0byBiZSBhY3RpdmUsIHlvdVwnbGwgbmVlZCB0byBuZXN0IHRoZSBzbWFydHkgZXZhbHVhdGlvbnMgaW4geW91ciB0ZW1wbGF0ZS4gRm9yIGV4YW1wbGU6PC9wPgo8cHJlPgomIzEyMztldmFsIHZhcj0kYXR0cmxpc3RbYXRdLmtleX0KPC9wcmU+CjxwPmJlY29tZXM6PC9wPgo8cHJlPgomIzEyMztldmFsIHZhcj0kZW50cnktPmlucHV0IGFzc2lnbj10aGlzQXR0cn0mIzEyMztldmFsIHZhcj0kdGhpc0F0dHJ9CjwvcHJlPgo8cD5VZ2x5PyBZdXAuIEJ1dCBpdCB3b3Jrcy48L3A+CjxoMz5DYXRhbG9nZXIgSW1hZ2UgU3lzdGVtPC9oMz4KPHA+Q2F0YWxvZ2VyIGhhcyBhbiBpbWFnZSBzeXN0ZW0gdGhhdCB3aWxsIGFsbG93IHlvdSB0byBkeW5hbWljYWxseSBjaGFuZ2UgdGhlIGltYWdlIGRpc3BsYXkgc2l6ZS4gSWYgeW91IGRvIG5vdCBsaWtlIGl0LCB5b3UgY2FuIGFsdGVyCnRoZSB0ZW1wbGF0ZXMgYW5kIHVzZSBhbnkgaW1hZ2Ugc3lzdGVtIHlvdSB3YW50LjwvcD4KPHA+V2hlbiB5b3UgdXBsb2FkIGFuIGltYWdlIHVzaW5nIENhdGFsb2dlciwgaXQgZ2V0cyBwdXQgaW4gYSBzcGVjaWFsIHNldCBvZiBkaXJlY3RvcmllcyB0byBtYWtlIHRoZSBpbWFnaW5nIGVhc2llci4gWW91IHdpbGwgc2VlIG1vcmUKYWJvdXQgdGhpcyBsYXRlci48L3A+CjxwPkl0IHdvcmtzIGJ5IGNhbGxpbmcgYSBQSFAgcHJvZ3JhbSBpbnN0ZWFkIG9mIGRpcmVjdGx5IHJlZmVyZW5jaW5nIHRoZSBpbWFnZS4gVGhlIHByb2dyYW0gdXNlcyB0aGUgZmlsZW5hbWUgdG8gc2VlIGlmIHRoZQppbWFnZSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgY29ycmVjdCBzaXplLiBJZiBzbywgaXQgcmVkaXJlY3RzIHRvIHRoYXQgaW1hZ2UuIE90aGVyd2lzZSwgaXQgdXNlcyB5b3VyIEdETElCIG9yIEltYWdlTWFnaWNrIHRvIGNyZWF0ZQp0aGUgaW1hZ2UgaW4gdGhlIGNvcnJlY3Qgc2l6ZSwgYW5kIHRoZW4gcmVkaXJlY3RzIHRvIGl0Lgo8L3A+CjxoND5DYXRhbG9nZXIgSW1hZ2UgRmlsZXNwZWMgRXhwbGFuYXRpb248L2g0Pgo8cD5BIGNhdGFsb2dlciBpbWFnZSBoYXMgYSBmaWxlc3BlYyBsaWtlOgo8YnIgLz4Kcm9vdF9wYXRoL21vZHVsZXMvQ2F0YWxvZ2VyL0NhdGFsb2dlci5JbWFnZS5waHA/aT1pdGVtbmFtZV9mXzFfNDAwXzEuanBnJmFtcDthYz04Mjg4OAo8L3A+CjxwPlRoZSBpbnRlcmVzdGluZyB0aGluZyBpcyAiaXRlbW5hbWVfZl8xXzQwMF8xLmpwZyIgLSB0aGUgc3R1ZmYgYmVmb3JlIGlzIGp1c3QgYSBjYWxsIHRvIHRoZSBwcm9ncmFtLCBhbmQgdGhlICZhbXA7YWM9ODI4ODggaXMgYSByYW5kb20gdGhpbmcgdGhhdAppcyBkZXNpZ25lZCB0byBwcmV2ZW50IGJyb3dzZXIgY2FjaGluZy4gU28gZXhhbWluaW5nIHRoZSBuYW1lIHBpZWNlIGJ5IHBpZWNlIChzZXBhcmF0aW5nIGF0IHRoZSB1bmRlcnNjb3JlcyksIHdlIGhhdmU6PC9wPgo8dWw+CjxsaT5pdGVtIG5hbWUgLSB0aGlzIGlzIHRoZSBhbGlhcyBvZiB0aGUgaXRlbS9jYXRlZ29yeSBwYWdlIGNvbnRhaW5pbmcgdGhlIGltYWdlLjwvbGk+CjxsaT5pbWFnZSB0eXBlIC0gdGhpcyBpcyBhIGRlc2lnbmF0aW9uIGZvciBpbWFnZSB0eXBlOjx1bD4KPGxpPmYgLSBpdGVtIGZ1bGwtc2l6ZSBpbWFnZTwvbGk+CjxsaT50IC0gaXRlbSB0aHVtYm5haWw8L2xpPgo8bGk+Y2YgLSBjYXRlZ29yeSBmdWxsLXNpemVkIGltYWdlPC9saT4KPGxpPmN0IC0gY2F0ZWdvcnkgdGh1bWJuYWlsPC9saT4KPGxpPmN0ZiAtIHByaW50YWJsZSBjYXRhbG9nIGZ1bGwtc2l6ZWQgaW1hZ2U8L2xpPgo8L3VsPgo8L2xpPgo8bGk+aW1hZ2UgbnVtYmVyIC0gc28gYSBnaXZlbiBpdGVtL2NhdGFsb2cvZXRjIGNhbiBoYXZlIG11bHRpcGxlIGltYWdlczwvbGk+CjxsaT5sb25nIGRpbWVuc2lvbiAtIGxvbmcgZGltZW5zaW9uIG9mIHRoZSBpbWFnZSwgaW4gcGl4ZWxzPC9saT4KPGxpPm1pc3NpbmcgZmxhZyAtIDEgaWYgeW91IHdhbnQgdG8gc2hvdyBhbiAiaW1hZ2UgbWlzc2luZyIgaW1hZ2UgaWYgdGhpcyBpbWFnZSBkb2VzblwndCBleGlzdCwgMCBvdGhlcndpc2U8L2xpPgo8L3VsPgo8cD4KVGhpcyB3aWxsIHRha2UgYW4gaW1hZ2UgaW4gcm9vdF9wYXRoL3VwbG9hZHMvaW1hZ2VzL2NhdGFsb2dfc3JjL2l0ZW1uYW1lX3NyY18xCjxoND5BY2Nlc3NpbmcgeW91ciBPcmlnaW5hbCBJbWFnZTwvaDQ+CjxwPldoZW4gQ2F0YWxvZ2VyIHVwbG9hZHMgaW1hZ2VzLCBpdCBwdXRzIHRoZW0gaW50byBhIGRpcmVjdG9yeSBjYWxsZWQgImNhdGFsb2dlcl9zcmMiIGluIHlvdXIgdXBsb2Fkcy9pbWFnZXMvIGRpcmVjdG9yeS4gVGhleSBpbWFnZXMgYXJlIG5hbWVkIGFjY29yZGluZyB0byB0aGUgYWxpYXMgb2YgdGhlIHBhZ2U6CmFsaWFzX3NyY18jLmpwZyB3aGVyZSAjIGlzIHRoZSBpbWFnZSBudW1iZXIgZm9yIHRoYXQgcGFnZS48L3A+CjxwPlNvLCB0byBhY2Nlc3MgdGhlIG9yaWdpbmFsbHkgdXBsb2FkZWQgaW1hZ2VzIG9uIGEgQ2F0ZWdvcnkgcGFnZSwgeW91XCdkIGdlbmVyYXRlIHRoZSBVUkwgbWFudWFsbHkuPC9wPgo8cD5TbyBvbiBhIGNhdGVnb3J5IHBhZ2UsIGZvciBleGFtcGxlLCBpbnN0ZWFkIG9mIHVzaW5nIHskaXRlbXNbbnVtbG9vcF0uaW1hZ2V9IHlvdVwnZCB1c2UgIi91cGxvYWRzL2ltYWdlcy9jYXRhbG9nZXJfc3JjL3skaXRlbXNbbnVtbG9vcF0uYWxpYXN9X3NyY18xLmpwZyIuPC9wPgo8aDM+Q3JlZGl0czwvaDM+CjxwPlRoYW5rcyB0byA8YSBocmVmPSJodHRwOi8vd3d3LmlkLWEuY28udWsiPlBhdWwgQ29vcGVyPC9hPiBmb3Igc3BvbnNvcmluZyB0aGUgZGV2ZWxvcG1lbnQgb2YgdGV4dGFyZWEgYXR0cmlidXRlcy48L3A+CjxwPlRoYW5rcyB0byBudW1lcm91cyBwYXRpZW50IHVzZXJzIGFuZCBidWcgdGVzdGVycyAobWFueSBvZiB3aG9tIGhhZCBubyBpZGVhIHdoYXQgdGhleSB3ZXJlIGdldHRpbmcgaW50by4pPC9wPiAKPGgzPlN1cHBvcnQ8L2gzPgo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+Cjx1bD4KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIENNUyBNYWRlIFNpbXBsZSAgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyI+RGV2ZWxvcGVyIEZvcmdlPC9hPi48L2xpPgo8bGk+VG8gb2J0YWluIGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHNlbmQgYW4gZW1haWwgdG8gdGhlIGF1dGhvciBhdCA8YSBocmVmPSJtYWlsdG86c2pnQGNtc21vZHVsZXMuY29tIj4mbHQ7c2pnQGNtc21vZHVsZXMuY29tJmd0OzwvYT4uPC9saT4KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPgo8bGk+VGhlIGF1dGhvciBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPgo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkgYW5kIGdyb3ZlbGxpbmcgZm9yIGZyZWUgc3VwcG9ydC48L2xpPgo8L3VsPgo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQKb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEyLCBGZXJuYW5kbyBNb3JnYWRvIChKb01vcmcpIDxhIGhyZWY9Im1haWx0bzpqb21vcmcubW9yZ0BnbWFpbC5jb20iPiZsdDtqb21vcmcubW9yZ0BnbWFpbC5jb20mZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDgsIFNhbXVlbCBHb2xkc3RlaW4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4nOwoKJGxhbmdbJ3Bvc3RpbnN0YWxsJ109J01ha2Ugc3VyZSB0byBzZXQgdGhlICJNb2RpZnkgQ2F0YWxvZyBTZXR0aW5ncyIgcGVybWlzc2lvbiBvbiB1c2VycyB3aG8gd2lsbCBiZSBhZG1pbmlzdGVyaW5nIHRoZSBjYXRhbG9nLic7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/cs_CZ.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ25lZWRwZXJtaXNzaW9uJ10gPSAnUHJvIHRvdG8gamUgdMWZZWJhIG5hc3Rhdml0ICVzLic7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdTcHImYWFjdXRlO3ZjZSBrYXRhbG9ndSc7CiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnVXByYXZpdCBuYXN0YXZlbiZpYWN1dGU7IGthdGFsb2d1JzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdPcHJhdmR1IGNoY2V0ZSBzbWF6YXQgJXM/JzsKJGxhbmdbJ3VuaXF1ZWNvZGUnXSA9ICdVbmlrJmFhY3V0ZTt0biZpYWN1dGU7IGsmb2FjdXRlO2QnOwokbGFuZ1sndGVtcGxhdGVsaXN0J10gPSAnUG9kLSZzY2Fyb247YWJsb25hJzsKJGxhbmdbJ2xpc3R0ZW1wbCddID0gJ1NwcmF2b3ZhdCBwb2QtJnNjYXJvbjthYmxvbnknOwokbGFuZ1sndGl0bGVfaXRlbV90YWInXSA9ICdWbGFzdG5vc3RpIHBvbG/Fvmt5JzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3RhYiddID0gJ1ZsYXN0bm9zdGkga2F0ZWdvcmllJzsKJGxhbmdbJ3RpdGxlX3ByaW50YWJsZV90YWInXSA9ICdOYXN0YXZlbiZpYWN1dGU7IHRpc2tudXRlbG4mZWFjdXRlO2hvIGthdGFsb2d1JzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2VfdGFiJ10gPSAnVmVsaWtvc3RpIG9iciZhYWN1dGU7emvFryBwb2xvxb5reSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9pbWFnZV90YWInXSA9ICdOYXN0YXZlbiZpYWN1dGU7IHN0ciZhYWN1dGU7bmt5IGthdGVnb3JpJmlhY3V0ZTsnOwokbGFuZ1sndGl0bGVfaXNfdGV4dGZpZWxkJ10gPSAnVGV4dCBBcmVhPyc7CiRsYW5nWyd0aXRsZV9kZWxldGUnXSA9ICdTbWF6YXQ/JzsKJGxhbmdbJ3RpdGxlX2FzcGVjdF90YWInXSA9ICdQb23Em3Igc3RyYW4gb2JyJmFhY3V0ZTt6a3UnOwokbGFuZ1sndGl0bGVfaW1hZ2VfdGFiJ10gPSAnSmluJmFhY3V0ZTsgbmFzdGF2ZW4maWFjdXRlOyBvYnImYWFjdXRlO3prxa8nOwokbGFuZ1sndGl0bGVfaXRlbV90ZW1wbGF0ZV92YXJzJ10gPSAnUHJvbcSbbm4mZWFjdXRlOyAmc2Nhcm9uO2FibG9ueSBwb2xvxb5layc7CiRsYW5nWyd0aXRsZV9jYXRfdGVtcGxhdGVfdmFycyddID0gJ1Byb23Em25uJmVhY3V0ZTsgJnNjYXJvbjthYmxvbnkga2F0ZWdvcmkmaWFjdXRlOyc7CiRsYW5nWyd0aXRsZV9mZWF0dXJlX3RlbXBsYXRlX3ZhcnMnXSA9ICdGZWF0dXJlcyBUZW1wbGF0ZSBWYXJpYWJsZXMnOwokbGFuZ1sndGl0bGVfc2hvd19vbmx5X2V4aXN0aW5nX2ltYWdlcyddID0gJ0RvbiYjMDM5O3QgaW5jbHVkZSBtaXNzaW5nIGltYWdlcyc7CiRsYW5nWyd0aXRsZV9zaG93X29ubHlfZXhpc3RpbmdfaW1hZ2VzX2hlbHAnXSA9ICdUaGlzIHdpbGwgb25seSBwdXQgaW1hZ2UgcmVmZXJlbmNlcyBpbnRvIGxpc3RzIGlmIHRoZSBpbWFnZSBleGlzdHMuPGJyIC8+KE5vcm1hbGx5LCB0aGlzIGlzIGZpbmUsIGJ1dCBpZiB5b3UgYXJlIGRvaW5nIHNvbWV0aGluZyBjbGV2ZXIgd2l0aCBpbWFnZTxiciAvPmFycmF5IGluZGV4ZXMsIHRoaXMgY291bGQgY2F1c2UgeW91IHRyb3VibGUuKSc7CiRsYW5nWyd0aXRsZV9mbHVzaF9jYXRzJ10gPSAnRmx1c2ggY2F0ZWdvcnkgcGFnZSBidWZmZXJzJzsKJGxhbmdbJ3RpdGxlX2ZsdXNoX2NhdHNfaGVscCddID0gJ0lmIHlvdSBoYXZlIGEgaHVnZSBudW1iZXIgb2YgaXRlbXMgZGlzcGxheWVkPGJyIC8+aW4gYSBjYXRlZ29yeSwgc29tZSBQSFAgaW5zdGFsbHMgd2lsbCBmYWlsIHRvIGRpc3BsYXkgdGhlIHBhZ2U8YnIgLz5jb3JyZWN0bHkuIENoZWNrIHRoaXMgYm94IHRvIHNvbHZlIHRoaXMgcHJvYmxlbSAodGVzdCBmb3Igc2lkZSBlZmZlY3RzKS4nOwokbGFuZ1snY2F0YWxvZ2VyJ10gPSAnU3ByJmFhY3V0ZTt2Y2Uga2F0YWxvZ3UnOwokbGFuZ1snaXRlbV9wYWdlJ10gPSAnU3RyJmFhY3V0ZTtua2EgcG9sb8W+a3knOwokbGFuZ1snY2F0ZWdvcnlfcGFnZSddID0gJ1N0ciZhYWN1dGU7bmthIGthdGVnb3JpZSc7CiRsYW5nWydjYXRhbG9nX3ByaW50YWJsZSddID0gJ1Rpc2tudXRlbG4meWFjdXRlOyBrYXRhbG9nJzsKJGxhbmdbJ2NhdGFsb2dfZGF0YXNoZWV0J10gPSAnS2F0YWxvZ292JnlhY3V0ZTsgbGlzdCc7CiRsYW5nWydjYXRhbG9nX3Nob3J0X2xpc3QnXSA9ICdTZXpuYW0gdmxhc3Rub3N0JmlhY3V0ZTsnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2l0ZW1fc29ydF9vcmRlciddID0gJ8WYYWRpdCBwb2xvxb5reSc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfaXRlbXNfcGVyX3BhZ2UnXSA9ICdOYXN0YXZpdCBwb8SNZXQgcG9sb8W+ZWsgbmEgc3RyJmFhY3V0ZTtua3UgbmEnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2NhdGVnb3J5X3JlY3Vyc2UnXSA9ICdOYXN0YXZpdCBjaG92JmFhY3V0ZTtuJmlhY3V0ZTsgem9icmF6b3YmYWFjdXRlO24maWFjdXRlOyBrYXRlZ29yaSZpYWN1dGU7IG5hJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fc29ydF9vcmRlciddID0gJ1YmeWFjdXRlO2Nob3omaWFjdXRlOyB0xZkmaWFjdXRlO2TEm24maWFjdXRlOyBwb2xvxb5layc7CiRsYW5nWyd0aXRsZV9wcmludGFibGVfc29ydF9vcmRlciddID0gJ1YmeWFjdXRlO2Nob3omaWFjdXRlOyB0xZkmaWFjdXRlO2TEm24maWFjdXRlOyB0aXNrbnV0ZWxuJmVhY3V0ZTtobyBrYXRhbG9ndSc7CiRsYW5nWyd0aXRsZV9pdGVtc19wZXJfcGFnZSddID0gJ1YmeWFjdXRlO2Nob3omaWFjdXRlOyBwb8SNZXQgcG9sb8W+ZWsgbmEgc3RyJmFhY3V0ZTtua3UnOwokbGFuZ1sndGl0bGVfYXZhaWxfYXR0cnMnXSA9ICdEb3N0dXBuJmVhY3V0ZTsgYXRyaWJ1dHkgcG9sb8W+a3kgcHJvICZzY2Fyb247YWJsb251JzsKJGxhbmdbJ3RpdGxlX2F2YWlsX2ltYXR0cnMnXSA9ICdEb3N0dXBuJmVhY3V0ZTsgb2JyJmFhY3V0ZTt6a3kgcG9sb8W+a3kgcHJvICZzY2Fyb247YWJsb251JzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV9oZXJvJ10gPSAnVmVsaWtvc3Qgb2JyJmFhY3V0ZTt6a3Ugc3RyJmFhY3V0ZTtua3kgcG9sb8W+a3kgKGRlbCZzY2Fyb247JmlhY3V0ZTsgc3RyYW5hIHYgcGl4ZWxlY2gpJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV90aHVtYm5haWwnXSA9ICdWZWxpa29zdCBuJmFhY3V0ZTtobGVkdSBzdHImYWFjdXRlO25reSBwb2xvxb5reSAoZGVsJnNjYXJvbjsmaWFjdXRlOyBzdHJhbmEgdiBwaXhlbGVjaCknOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX2NhdGVnb3J5J10gPSAnVmVsaWtvc3QgbiZhYWN1dGU7aGxlZHUgcG9sb8W+a3kgbmEgc3RyJmFhY3V0ZTtuY2Uga2F0ZWdvcmllIChkZWwmc2Nhcm9uOyZpYWN1dGU7IHN0cmFuYSB2IHBpeGVsZWNoKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfY2F0YWxvZyddID0gJ1ZlbGlrb3N0IG4mYWFjdXRlO2hsZWR1IHBvbG/Fvmt5IGthdGFsb2dvdiZlYWN1dGU7bSBsaXN0dSAoZGVsJnNjYXJvbjsmaWFjdXRlOyBzdHJhbmEgdiBwaXhlbGVjaCknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV9oZXJvJ10gPSAnVmVsaWtvc3Qgb2JyJmFhY3V0ZTt6a3Uga2F0YWxvZ292JmVhY3V0ZTtobyBsaXN0dSAoZGVsJnNjYXJvbjsmaWFjdXRlOyBzdHJhbmEgdiBwaXhlbGVjaCknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV90aHVtYm5haWwnXSA9ICdWZWxpa29zdCBuJmFhY3V0ZTtobGVkdSBrYXRhbG9nb3YmZWFjdXRlO2hvIGxpc3R1IChkZWwmc2Nhcm9uOyZpYWN1dGU7IHN0cmFuYSB2IHBpeGVsZWNoKSc7CiRsYW5nWyd0aXRsZV90ZW1wbGF0ZSddID0gJyZTY2Fyb247YWJsb25hJzsKJGxhbmdbJ3RpdGxlX3RlbXBsYXRlX3R5cGUnXSA9ICdUeXAgJnNjYXJvbjthYmxvbnknOwokbGFuZ1sndGl0bGVfdGl0bGUnXSA9ICdUaXR1bGVrJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2VfY291bnQnXSA9ICdNYXhpbSZhYWN1dGU7bG4maWFjdXRlOyBwb8SNZXQgem9icmF6ZW4maWFjdXRlOyBrYcW+ZCZlYWN1dGU7IHBvbG/Fvmt5JzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX2NvdW50J10gPSAnTWF4aW0mYWFjdXRlO2xuJmlhY3V0ZTsgcG/EjWV0IGJhbm5lcsWvIHBybyBrYcW+a291IHN0ciZhYWN1dGU7bmt1IGthdGVnb3JpJmlhY3V0ZTsnOwokbGFuZ1sndGl0bGVfaXRlbV9hdHRyaWJ1dGVzX2hlbHAnXSA9ICdFYWNoIGF0dHJpYnV0ZSB5b3UgZW50ZXIgaGVyZSB3aWxsIGJlIHRoZSB0aXRsZSBvZiBhIGZpZWxkIHRoYXQgeW91IGNhbiB1c2UgdG8gZGVzY3JpYmUgYW4gaW5kaXZpZHVhbCBpdGVtLCBhbmQgd2lsbCBiZSBkaXNwbGF5ZWQgd2l0aCB0aGF0IGl0ZW0uIFlvdSBtYXkgaGF2ZSB0byB1cGRhdGUgeW91ciB0ZW1wbGF0ZSB0byByZWZsZWN0IHRoZXNlIGF0dHJpYnV0ZXMuIEJsYW5rIG91dCBvciB0eXBlIG92ZXIgYW4gZXhpc3RpbmcgYXR0cmlidXRlIHRvIHJlbW92ZSBvciByZXBsYWNlIGl0Lic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9hdHRyaWJ1dGVzX2hlbHAnXSA9ICdFYWNoIGF0dHJpYnV0ZSB5b3UgZW50ZXIgaGVyZSB3aWxsIGJlIHRoZSB0aXRsZSBvZiBhIGZpZWxkIHRoYXQgeW91IGNhbiB1c2UgdG8gZGVzY3JpYmUgYW4gaXRlbSBjYXRlZ29yeSwgYW5kIHdpbGwgYmUgZGlzcGxheWVkIG9uIHRoYXQgY2F0ZWdvcnkgcGFnZS4gWW91IG1heSBoYXZlIHRvIHVwZGF0ZSB5b3VyIHRlbXBsYXRlIHRvIHJlZmxlY3QgdGhlc2UgYXR0cmlidXRlcy4gQmxhbmsgb3V0IG9yIHR5cGUgb3ZlciBhbiBleGlzdGluZyBhdHRyaWJ1dGUgdG8gcmVtb3ZlIG9yIHJlcGxhY2UgaXQuJzsKJGxhbmdbJ3RpdGxlX2NhdGFsb2dfYXR0cmlidXRlc19oZWxwJ10gPSAnRWFjaCBhdHRyaWJ1dGUgeW91IGVudGVyIGhlcmUgd2lsbCBiZSB0aGUgdGl0bGUgb2YgYSBmaWVsZCB0aGF0IHlvdSBjYW4gdXNlIHRvIGRlc2NyaWJlIHRoZSBlbnRpcmUgY2F0YWxvZywgYW5kIHdpbGwgYmUgZGlzcGxheWVkIG9uIHRoZSBwcmludGFibGUgY2F0YWxvZyBwYWdlLiBZb3UgbWF5IGhhdmUgdG8gdXBkYXRlIHlvdXIgdGVtcGxhdGUgdG8gcmVmbGVjdCB0aGVzZSBhdHRyaWJ1dGVzLiBCbGFuayBvdXQgb3IgdHlwZSBvdmVyIGFuIGV4aXN0aW5nIGF0dHJpYnV0ZSB0byByZW1vdmUgb3IgcmVwbGFjZSBpdC4nOwokbGFuZ1sndGl0bGVfZm9yY2VfYXNwZWN0X3JhdGlvJ10gPSAnVm51dGl0IG9iciZhYWN1dGU7emvFr20gdXLEjWl0JnlhY3V0ZTsgcG9txJtyIHN0cmFuPyc7CiRsYW5nWyd0aXRsZV9mb3JjZV9hc3BlY3RfcmF0aW9fbGFiZWwnXSA9ICdWbnV0aXQgcG9txJtyIHN0cmFuICh6YXQmaWFjdXRlO20gbmVkb3N0dXBuJmVhY3V0ZTspJzsKJGxhbmdbJ3RpdGxlX2ltYWdlX2FzcGVjdF9yYXRpbyddID0gJ1BvbcSbciBzdHJhbiAoemFkJmFhY3V0ZTt2JmFhY3V0ZTsgc2UgamFrbyAmcXVvdDs0OjMmcXVvdDsgb3IgJnF1b3Q7MToyLjUmcXVvdDspJzsKJGxhbmdbJ3RpdGxlX2FzcGVjdF9yYXRpb19oZWxwJ10gPSAnPGI+VGF0byBmdW5rY2UgbmVuJmlhY3V0ZTsgemF0JmlhY3V0ZTttIGltcGxlbWVudG92JmFhY3V0ZTtuYTwvYj4nOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfc29ydCddID0gJ0NhdGVnb3J5IFBhZ2UgSXRlbS1saXN0IHNvcnQgb3JkZXInOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZSddID0gJ1pvYnJhem92YXQgamFrbyB2ZSB2JnlhY3V0ZTtjaG96JmlhY3V0ZTsga2F0ZWdvcmlpJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfaXRlbXNfYWxsJ10gPSAnSW5jbHVkZSBhbGwgSXRlbXMgd2l0aGluIHRoaXMgY2F0ZWdvcnksIGluY2x1ZGluZyBpdGVtcyBpbiBzdWItY2F0ZWdvcmllcyc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2l0ZW1zX29uZSddID0gJ0luY2x1ZGUgYWxsIEl0ZW1zIGltbWVkaWF0ZWx5IHdpdGhpbiB0aGlzIGNhdGVnb3J5LCBidXQgbm90IGl0ZW1zIGluIHN1Yi1jYXRlZ29yaWVzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfY2F0ZWdvcmllc19hbGwnXSA9ICdJbmNsdWRlIGFsbCBDYXRlZ29yaWVzIHdpdGhpbiB0aGlzIGNhdGVnb3J5LCBpbmNsdWRpbmcgY2F0ZWdvcmllcyBpbiBzdWItY2F0ZWdvcmllcyc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2NhdGVnb3JpZXNfb25lJ10gPSAnSW5jbHVkZSBhbGwgQ2F0ZWdvcmllcyBpbW1lZGlhdGVseSB3aXRoaW4gdGhpcyBjYXRlZ29yeSwgYnV0IG5vdCBjYXRlZ29yaWVzIGluIHN1Yi1jYXRlZ29yaWVzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfbWl4ZWRfYWxsJ10gPSAnSW5jbHVkZSBhbGwgSXRlbXMgYW5kIENhdGVnb3JpZXMgd2l0aGluIHRoaXMgY2F0ZWdvcnksIGluY2x1ZGluZyBpdGVtcyBhbmQgY2F0ZWdvcmllcyBpbiBzdWItY2F0ZWdvcmllcyc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX21peGVkX29uZSddID0gJ0luY2x1ZGUgYWxsIEl0ZW1zIGFuZCBDYXRlZ29yaWVzIGltbWVkaWF0ZWx5IHdpdGhpbiB0aGlzIGNhdGVnb3J5LCBidXQgbm90IGl0ZW1zIG9yIGNhdGVnb3JpZXMgaW4gc3ViLWNhdGVnb3JpZXMnOwokbGFuZ1sndGl0bGVfc2hvd19taXNzaW5nX2ltYWdlcyddID0gJ1VrJmFhY3V0ZTt6YXQgb2JyJmFhY3V0ZTt6ZWsgJnF1b3Q7Tm8gaW1hZ2UmcXVvdDsgdiBwJmlhY3V0ZTtwYWTEmywgxb5lIG9iciZhYWN1dGU7emVrIGNoeWImaWFjdXRlOyc7CiRsYW5nWyd0aXRsZV9zaG93X21pc3NpbmdfaW1hZ2VzX2xvbmcnXSA9ICdVayZhYWN1dGU7xb5lIHNwZWNpJmFhY3V0ZTtsbiZpYWN1dGU7IG9iciZhYWN1dGU7emVrIHMgbiZhYWN1dGU7cGlzZW0gJnF1b3Q7Tm8gaW1hZ2UmcXVvdDsgbSZpYWN1dGU7c3RvIGNoeWLEm2omaWFjdXRlO2MmaWFjdXRlO2NoIG9iciZhYWN1dGU7emvFryAodcW+aXRlxI1uJmVhY3V0ZTsgcHJvIG9kc3RyYcWIb3YmYWFjdXRlO24maWFjdXRlOyBjaHliKS4gUG9rdWQgdm9sYmEgbmVuJmlhY3V0ZTsgenZvbGVuYSwgYnVkZSBwb3XFvml0IDFweCBwcsWvaGxlZG4meWFjdXRlOyBvYnImYWFjdXRlO3playc7CiRsYW5nWyduYXR1cmFsX29yZGVyJ10gPSAnUG/FmWFkJmlhY3V0ZTsgcG9kbGUgbmF2aWdhY2UnOwokbGFuZ1snYWxwaGFfb3JkZXInXSA9ICdQb8WZYWQmaWFjdXRlOyBwb2RsZSBhYmVjZWR5JzsKJGxhbmdbJ21hbmFnZXByZWZzJ10gPSAnU3ByYXZvdmF0IHZvbGJ5JzsKJGxhbmdbJ21hbmFnZWF0dHJzJ10gPSAnU3ByYXZvdmF0IHXFvml2YXRlbGVtIGRlZmlub3ZhbiZlYWN1dGU7IHZsYXN0bm9zdGknOwokbGFuZ1snZ2xvYmFsb3BzJ10gPSAnT3BlcmFjZSwgdCZ5YWN1dGU7a2FqJmlhY3V0ZTtjJmlhY3V0ZTsgc2UgY2VsJmVhY3V0ZTtobyBrYXRhbG9ndSc7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ1DFmWlkYXQgbnZvdSBwb2Qmc2Nhcm9uO2FibG9udSc7CiRsYW5nWydyZWltcG9ydHRlbXBsYXRlcyddID0gJ1pub3Z1IGltcG9ydG92YXQgcMWZJmlhY3V0ZTtrbGFkeSBkJmlhY3V0ZTtsxI0maWFjdXRlO2NoICZzY2Fyb247YWJsb24nOwokbGFuZ1sncmVpbXBvcnRlZCddID0gJ1DFmSZpYWN1dGU7a2xhZHkgZCZpYWN1dGU7bMSNJmlhY3V0ZTtjaCAmc2Nhcm9uO2FibG9uIGJ5bHkgaW1wb3J0b3YmYWFjdXRlO255Lic7CiRsYW5nWyd0ZW1wbGF0ZXVwZGF0ZWQnXSA9ICcmU2Nhcm9uO2FibG9uYSBieWxhIHDFmWlkJmFhY3V0ZTtuYSAvIGFrdHVsaXpvdiZhYWN1dGU7bmEnOwokbGFuZ1sndGVtcGxhdGVkZWxldGVkJ10gPSAnJlNjYXJvbjthYmxvbmEgc21heiZhYWN1dGU7bmEuJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ01vxb5ub3N0aSBha3R1YWxpem92JmFhY3V0ZTtueS4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWwgdmVyc3plICVzIGplIG5haW5zdGFsb3YmYWFjdXRlO24uJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWwgamUgYWt0dWFsaXpvdiZhYWN1dGU7biBuYSB2ZXJ6aSAlcy4nOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bCBvZGluc3RhbG92JmFhY3V0ZTtuLic7CiRsYW5nWydhdHRyc3VwZGF0ZWQnXSA9ICdWbGFzdG5vc3RpIGFrdHVhbGl6b3YmYWFjdXRlO255Lic7CiRsYW5nWydub2dsb2JhbGNoYW5nZSddID0gJ05lbcSbbml0JzsKJGxhbmdbJ2dsb2JhbGx5dXBkYXRlZCddID0gJ1ptxJtueSBieWx5IGdsb2ImYWFjdXRlO2xuxJsgcHJvdmVkZW55Lic7CiRsYW5nWydlZGl0dGVtcGxhdGUnXSA9ICdVcHJhdml0ICZzY2Fyb247YWJsb251JzsKJGxhbmdbJ3N1YnRlbXBsYXRlcyddID0gJ0QmaWFjdXRlO2zEjSZpYWN1dGU7ICZzY2Fyb247YWJsb255IGthdGFsb2d1JzsKJGxhbmdbJ25leHQnXSA9ICc6JnJhcXVvOyc7CiRsYW5nWydwcmV2J10gPSAnJmxhcXVvOzonOwokbGFuZ1snZWRpdCddID0gJ1VwcmF2aXQnOwokbGFuZ1snZGVsZXRlJ10gPSAnU21hemF0JzsKJGxhbmdbJ25vdGVtcGxhdGVzJ10gPSAnxb0mYWFjdXRlO2RuJmVhY3V0ZTsgcG9kJnNjYXJvbjthYmxvbnkgbmVqc291IG5haW5zdGFsb3YmYWFjdXRlO255ISc7CiRsYW5nWydoZWxwdGV4dCddID0gJzxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPg0KPHA+VGhpcyBtb2R1bGUgbGV0cyB5b3UgY3JlYXRlIG9ubGluZSBjYXRhbG9ncyBvciBwb3J0Zm9saW9zLiBDYXRhbG9ncyBjb25zaXN0IG9mICZxdW90O0NhdGFsb2cgSXRlbXMmcXVvdDsgd2hpY2ggY291bGQgYmUgcHJvZHVjdHMsIHdvcmtzIG9mIGFydCwgb3IgdGhlIGxpa2UsIGFuZCAmcXVvdDtDYXRhbG9nIENhdGVnb3JpZXMmcXVvdDsgd2hpY2ggY291bGQgYmUgaXRlbSBjYXRlZ29yaWVzIG9yIG90aGVyIG5hdHVyYWwgZGl2aXNpb25zIG9mIHRoZSBjYXRhbG9nLjwvcD4NCjxwPkNhdGVnb3JpZXMgbWF5IGJlIGRlZmluZWQgaGllcmFyY2hpY2FsbHkgKHVzaW5nIHRoZSBzdGFuZGFyZCBDTVMgTWFkZSBTaW1wbGUgY29udGVudCBsaXN0KS4gQ2F0ZWdvcnkgcGFnZXMgY2FuIGRpc3BsYXkgaXRlbXMgaW4gdGhlIGNhdGVnb3J5IGFuZC9vciBzdWJjYXRlZ29yaWVzLCBvcHRpb25hbGx5IHJlY3Vyc2luZyB0aHJvdWdoIHN1Yi1jYXRlZ29yaWVzLiBUaGlzIGJlaGF2aW9yIGNhbiBiZSBjb25maWd1cmVkIG9uIGEgcGVyLWNhdGVnb3J5IGJhc2lzLjwvUD4NCjxwPlRoZXJlIGlzIGFsc28gYSBQcmludGFibGUgQ2F0YWxvZywgd2hpY2ggcmVwcmVzZW50cyB0aGUgd2hvbGUgY29sbGVjdGlvbiBvZiBDYXRhbG9nIEl0ZW1zIG9uIGEgc2luZ2xlIHBhZ2UgKHRoaXMgaXMgY3VycmVudGx5IGltcGxlbWVudGVkIGJhZGx5LCBhbmQgd2lsbCBsb2FkIHNsb3dseSkuPC9wPg0KPHA+VGhlIG1vZHVsZSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgJnF1b3Q7Q29udGVudCBBbGlhc2VzJnF1b3Q7IChhIG1vZHVsZSBhdmFpbGFibGUgYXQgPGEgaHJlZj0mcXVvdDtodHRwOi8vd3d3LmNtc21vZHVsZXMuY29tL0NvbnRlbnRBbGlhc2VzLmh0bWwmcXVvdDs+Q01TTW9kdWxlcy5jb208L2E+KSwgd2hpY2ggYWxsb3dzIHlvdSB0byBwbGFjZSBhbnkgQ2F0YWxvZyBJdGVtIGludG8gbXVsdGlwbGUgQ2F0YWxvZyBDYXRlZ29yaWVzLjwvcD4NCjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPg0KPHA+V2hlbiB5b3UgaW5zdGFsbCB0aGlzIG1vZHVsZSwgaXQgY3JlYXRlcyB0aHJlZSBuZXcgQ29udGVudCBUeXBlczogQ2F0YWxvZyBJdGVtLCBDYXRhbG9nIENhdGVnb3J5LCBhbmQgUHJpbnRhYmxlIENhdGFsb2cuIFdoZW4geW91JiMwMzk7cmUgaW4geW91ciBzaXRlIGFkbWluaXN0cmF0aW9uIGNhdGVnb3J5LCB5b3UgYWRkIENhdGFsb2cgSXRlbXMgYW5kIENhdGFsb2cgQ2F0ZWdvcmllcyBqdXN0IGFzIHlvdSB3b3VsZCBhbnkgb3RoZXIga2luZCBvZiBwYWdlLiBTZWxlY3QgQ29udGVudCA+IFBhZ2VzID4gQWRkIENvbnRlbnQsIGFuZCB0aGVuIHNlbGVjdCAmcXVvdDtDYXRhbG9nIEl0ZW0mcXVvdDsgb3IgJnF1b3Q7Q2F0YWxvZyBDYXRlZ29yeSZxdW90OyBmcm9tIHRoZSBDb250ZW50IFR5cGUgcHVsbGRvd24uPC9wPg0KPGg0PkNhdGFsb2cgSXRlbXM8L2g0Pg0KPHA+QWRkaW5nIGEgQ2F0YWxvZyBJdGVtIGlzIHNpbWlsYXIgdG8gYWRkaW5nIGFuIG9yZGluYXJ5IHBhZ2UgdG8geW91ciBzaXRlLiBUaGUgZGF0YSBmaWVsZHMgZm9yIHRoZSBJdGVtIGFyZSBub3QgZXhhY3RseSB0aGUgc2FtZSwgaG93ZXZlci4gQWxzbyBub3RlIHRoYXQgaW4gdGhlICZxdW90O0ltYWdlcyZxdW90OyB0YWIsIHlvdSBjYW4gc2VsZWN0IG11bHRpcGxlIGltYWdlcyB0byB1cGxvYWQgZm9yIHRoZSBpdGVtLiBXaGVuIHlvdSB1cGxvYWQgaW1hZ2VzLCB0aGUgc3lzdGVtIHdpbGwgc2l6ZSB0aGVtIGFwcHJvcHJpYXRlbHkgZm9yIHRoZSBjYXRhbG9nLCBjcmVhdGUgdGh1bWJuYWlscyBmb3IgdXNlIGluIHRoZSBJdGVtJiMwMzk7cyBwYWdlLCBjcmVhdGUgdGh1bWJuYWlscyBmb3IgYW55IENhdGVnb3J5IHBhZ2VzLCBhbmQgc28gb24uIFRoaXMgcmVxdWlyZXMgdGhhdCB5b3UgaGF2ZSBHRCBvciBhIHNpbWlsYXIgaW1hZ2UgbGlicmFyeSBpbnN0YWxsZWQuIEN1cnJlbnRseSwgb25seSBqcGVnIGZvcm1hdCBpbWFnZXMgYXJlIHN1cHBvcnRlZC48L3A+DQo8aDQ+Q2F0YWxvZyBDYXRlZ29yaWVzPC9oND4NCjxwPkEgQ2F0YWxvZyBDYXRlZ29yeSBpcyB1c2VkIGZvciBvcmdhbml6aW5nIHlvdXIgY2F0YWxvZyBpdGVtcy4gSXQgcHJvdmlkZXMgYSBwYWdlIHRoYXQgbGlzdHMgQ2F0YWxvZ2VyIGNvbnRlbnQgdGhhdCBpcyBjb250YWluZWQgYnkgaXQuIEEgQ2F0YWxvZyBJdGVtIGlzIGNvbnNpZGVyZWQgdG8gYmUgcGFydCBvZiBhIENhdGFsb2cgQ2F0ZWdvcnkgaWYgaXQgaXMgYmVsb3cgdGhhdCBDYXRlZ29yeSBpbiB0aGUgU2l0ZSBIaWVyYXJjaHkuIENhdGVnb3JpZXMgY2FuIHNpbWlsYXJseSBpbmNsdWRlIG90aGVyIENhdGVnb3JpZXMuPC9wPg0KPHA+Q2F0YWxvZyBDYXRlZ29yaWVzIGhhdmUgYSBudW1iZXIgb2Ygc2V0dGluZ3MgdG8gZGV0ZXJtaW5lIGhvdyB0aGV5IHNob3VsZCBkaXNwbGF5IHRoZSBJdGVtcyBhbmQgQ2F0ZWdvcmllcyB0aGV5IGNvbnRhaW46IGlmIHlvdSBsb29rIGF0IHRoZSAmcXVvdDtPcHRpb25zJnF1b3Q7IHRhYiwgeW91IGNhbiBjaG9vc2UgaG93IG1hbnkgaXRlbXMgYW5kL29yIGNhdGVnb3JpZXMgdG8gc2hvdywgd2hhdCBvcmRlciB0byBzaG93IHRoZW0gaW4sIHdoZXRoZXIgdG8gZGlzcGxheSBvbmx5IGl0ZW1zIG9yIG9ubHkgY2F0ZWdvcmllcyBvciBib3RoLCBhbmQgaG93IG1hbnkgbGV2ZWxzIG9mIHRoZSBoaWVyYXJjaHkgdG8gZGlzcGxheSBiZWxvdyB0aGUgY2F0ZWdvcnkgcGFnZS48L3A+DQo8cD5Gb3IgZXhhbXBsZSwgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6PC9wPg0KPG9sPg0KCTxsaT48Yj5IYXRzPC9iPg0KCQk8b2w+DQoJCQk8bGk+PGI+RmFzaGlvbjwvYj4NCgkJCSAJPG9sPg0KCQkJIAkJPGxpPkZlYXRoZXJlZCBIYXQ8L2xpPjxsaT5GZWRvcmEgPC9saT48bGk+QmFzZWJhbGwgSGF0PC9saT4NCgkJCSAJPC9vbD4NCgkJCSA8L2xpPg0KCQkgCTxsaT48Yj5Xb3JrIEhhdHM8L2I+DQoJCSAgICAJPG9sPg0KCQkgICAgCQk8bGk+SGFyZCBIYXQ8L2xpPjxsaT5EaXZpbmcgSGVsbWV0PC9saT4NCgkJICAgIAk8L29sPg0KCQkgICAgPC9saT4NCgkJPC9vbD4NCgk8L2xpPg0KPC9vbD4NCjxwPkluIHRoaXMgZGlhZ3JhbSwgYm9sZGVkIGl0ZW1zIGFyZSBDYXRhbG9nIENhdGVnb3JpZXMsIGFuZCBub24tYm9sZGVkIGl0ZW1zIGFyZSBDYXRhbG9nIEl0ZW1zLiBEZXBlbmRpbmcgdXBvbiBob3cgeW91IHNldCB5b3VyIG9wdGlvbnMsIHRoZSBIYXRzIENhdGVnb3J5IFBhZ2UgY2FuIHNob3cgb25seSBlbnRyaWVzIGZvciB0aGUgRmFzaGlvbiBhbmQgV29yayBIYXRzIENhdGVnb3J5IFBhZ2VzLCBvciBpdCBjYW4gc2hvdyBlbnRyaWVzIGZvciBGYXNoaW9uLCBXb3JrIEhhdHMsIGFuZCBhbGwgdGhlIGhhdHMgbGlzdGVkIGJlbG93IHRoZW0uPC9wPg0KPHA+WW91IGNhbiBvcHQgdG8gc2hvdyB0aGUgaXRlbXMgaW4gJnF1b3Q7bmF0dXJhbCZxdW90OyBvcmRlciAoaS5lLiwgdGhlIG9yZGVyIHRoZSBJdGVtcyBzaG93IHVwIGluIHRoZSBDTVMgQ29udGVudCBIaWVyYXJjaHkpLCBvciBpbiBhbHBoYWJldGljYWwgb3JkZXIuPC9QPg0KPHA+SWYgeW91IGhhdmUgbGFyZ2UgbnVtYmVycyBvZiBpdGVtcyBpbiBhIENhdGVnb3J5LCB5b3UgY2FuIHNldCB0aGUgbWF4aW11bSBudW1iZXIgdG8gYmUgZGlzcGxheWVkIGluIGEgQ2F0ZWdvcnkgUGFnZSwgYW5kIHRoZSBwYWdlIHdpbGwgYXV0b21hdGljYWxseSBjcmVhdGUgbGlua3MgdG8gbmF2aWdhdGUgdGhyb3VnaCB0aGUgbGlzdC48L3A+DQo8cD5FYWNoIENhdGVnb3J5IHBhZ2UgY2FuIGhhdmUgZGlmZmVyZW50IHNldHRpbmdzIGZvciBzb3J0IG9yZGVyLCBsZXZlbHMgdG8gZGlzcGxheSwgYW5kIG51bWJlciBvZiBpdGVtcy4gWW91IGNhbiBzZXQgdGhlIGRlZmF1bHQgZm9yIHRoZXNlIHZhbHVlcyBpbiBFeHRlbnNpb25zID4gQ2F0YWxvZ2VyID4gTWFuYWdlIFByZWZlcmVuY2VzLiBJZiwgYXQgYSBsYXRlciBkYXRlLCB5b3Ugd2lzaCB0byBjaGFuZ2Ugc29tZSBzZXR0aW5nIG9uIGFsbCBvZiB5b3VyIENhdGVnb3J5IHBhZ2VzLCB5b3UgY2FuIGdvIGludG8gRXh0ZW5zaW9ucyA+IENhdGFsb2dlciA+IEdsb2JhbCBDYXRhbG9nIE9wdGlvbnMsIGFuZCBtYWtlIHRob3NlIGNoYW5nZXMuPC9wPg0KPGg0PkltYWdlczwvaDQ+DQo8cD5DYXRhbG9nZXIgYWxsb3dzIHlvdSB0byBzZWxlY3QgZGlmZmVyZW50IHNpemUgaW1hZ2VzIGZvciBJdGVtIHBhZ2VzLCBDYXRlZ29yeSBwYWdlcywgYW5kIHRoZSBQcmludGFibGUgQ2F0YWxvZy4gWW91IGNhbiBzZXQgdGhlc2UgZGVmYXVsdHMgaW4gRXh0ZW5zaW9ucyA+IENhdGFsb2dlciA+IE1hbmFnZSBQcmVmZXJlbmNlcy48L3A+DQo8cD5XaGVuIHlvdSB1cGxvYWQgaW1hZ2VzLCB0aGUgb3JpZ2luYWwgaXMgc3RvcmVkLiBXaGVuIHNvbWVvbmUgdmlzaXRzIGEgcGFnZSwgdGhlIHJlZHVjZWQgc2l6ZSBpbWFnZXMgYXJlIHJlcXVlc3RlZCB1c2luZyBhIHNwZWNpYWwgVVJMLCB3aGljaCB3aWxsIHJlZGlyZWN0IHRoZSB1c2VyJiMwMzk7cyBicm93c2VyIHRvIHRoZSBzY2FsZWQgaW1hZ2UgaWYgaXQgZXhpc3RzLCBhbmQgY3JlYXRpbmcgdGhlIHNjYWxlZCBpbWFnZSBpZiBpdCBkb2VzbiYjMDM5O3QuIFRoaXMgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgaW1hZ2VzLCB3aXRob3V0IGhhdmluZyB0byByZS11cGxvYWQgYWxsIHRoZSBpbWFnZXMsIG9yIHJlc2NhbGluZyB0aGVtIGFsbCBhdCBvbmNlLjwvcD4NCjxwPlRoaXMgaW1hZ2UgcmVzY2FsaW5nIGNvZGUgcmVxdWlyZXMgdGhhdCB5b3UgaGF2ZSBlaXRoZXIgSW1hZ2VNYWdpY2sgb3IgR0QgbGliIGluc3RhbGxlZCwgYW5kIGNvbmZpZ3VyZWQgaW4geW91ciBDTVMgTWFkZSBTaW1wbGUgY29uZmlnLnBocC48L3A+DQo8aDM+Q3VzdG9taXphdGlvbiBhbmQgQWR2YW5jZWQgVG9waWNzPC9oMz4NCjxoND5DYXRhbG9nIEl0ZW0gQXR0cmlidXRlczwvaDQ+DQo8cD5UaGUgZGVmYXVsdCBpdGVtIGF0dHJpYnV0ZXMgYXJlIHR5cGljYWwgZm9yIGEgY2F0YWxvZyBvZiBwcm9kdWN0cyBvciBhcnR3b3JrcywgYnV0IGJ5IGdvaW5nIGludG8gRXh0ZW5zaW9ucyA+IENhdGFsb2dlciA+IE1hbmFnZSBVc2VyLURlZmluZWQgQXR0cmlidXRlcywgeW91IGNhbiBjaGFuZ2UgdGhlIGF0dHJpYnV0ZXMuIEl0JiMwMzk7cyBiZXN0IHRvIGRlZmluZSB0aGUgYXR0cmlidXRlcyBiZWZvcmUgeW91IHN0YXJ0IGVudGVyaW5nIENhdGFsb2cgSXRlbXMuPC9wPg0KPHA+Tm90ZSB0aGF0IHRoZSBhdHRyaWJ1dGVzIHlvdSBkZWZpbmUgbWF5IG5lZWQgdG8gYmUgYWRkZWQgdG8gdGhlIHRlbXBsYXRlIHRoYXQgeW91JiMwMzk7cmUgdXNpbmcgdG8gZGlzcGxheSBDYXRhbG9nIEl0ZW1zIC0tIHNlZSBDdXN0b20gVGVtcGxhdGVzIGJlbG93LjwvcD4NCjxoND5DYXRhbG9nIENhdGVnb3J5IEF0dHJpYnV0ZXM8L2g0Pg0KPHA+U2ltaWxhcmx5LCB5b3UgY2FuIHNldCBhdHRyaWJ1dGVzIGZvciBDYXRlZ29yaWVzLiBBZ2FpbiwgdGhlIGF0dHJpYnV0ZXMgeW91IGRlZmluZSBtYXkgbmVlZCB0byBiZSBhZGRlZCB0byB0aGUgdGVtcGxhdGUgdGhhdCB5b3UmIzAzOTtyZSB1c2luZyB0byBkaXNwbGF5IENhdGFsb2cgQ2F0ZWdvcmllcyAtLSBzZWUgQ3VzdG9tIFRlbXBsYXRlcyBiZWxvdy48L3A+DQo8aDQ+UHJpbnRhYmxlIENhdGFsb2cgQXR0cmlidXRlczwvaDQ+DQo8cD5MaWtld2lzZSwgeW91IGNhbiBzZXQgYXR0cmlidXRlcyBmb3IgUHJpbnRhYmxlIENhdGFsb2dzLiBBZ2FpbiwgdGhlIGF0dHJpYnV0ZXMgeW91IGRlZmluZSBtYXkgbmVlZCB0byBiZSBhZGRlZCB0byB0aGUgdGVtcGxhdGUgdGhhdCB5b3UmIzAzOTtyZSB1c2luZyB0byBkaXNwbGF5IHlvdXIgUHJpbnRhYmxlIENhdGFsb2cgLS0gc2VlIEN1c3RvbSBUZW1wbGF0ZXMgYmVsb3cuPC9wPg0KPGg0PkN1c3RvbSBUZW1wbGF0ZXM8L2g0Pg0KPHA+SWYgeW91JiMwMzk7cmUgd2lsbGluZyB0byBtZXNzIGFyb3VuZCB3aXRoIFNtYXJ0eSBUZW1wbGF0ZXMsIHlvdSBjYW4gY2hhbmdlIHRoZSBsYXlvdXQgb2YgYW55IG9mIHRoZSBwYWdlcyBnZW5lcmF0ZWQgYnkgQ2F0YWxvZ2VyLiBUaGlzIHNob3VsZCBtYWtlIGNlcnRhaW4gZGV2ZWxvcGVycyB2ZXJ5IGhhcHB5LCBldmVuIGlmIHRoZSBpbmVmZmljaWVuY3kgb2YgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgd2lsbCBub3RlLiBUaGVyZSBhcmUgdGhyZWUga2luZHMgb2YgdGVtcGxhdGVzOiBvbmUga2luZCBmb3IgQ2F0YWxvZyBJdGVtcywgb25lIGtpbmQgZm9yIENhdGFsb2cgQ2F0ZWdvcmllcywgYW5kIG9uZSBraW5kIGZvciBQcmludGFibGUgQ2F0YWxvZ3MuPC9wPg0KPHA+V2hlbiBlZGl0aW5nIGEgVGVtcGxhdGUsIHRoZSBhZG1pbiBzY3JlZW4gd2lsbCBkaXNwbGF5IGEgbGlzdCBvZiBTbWFydHkgdGFncyBhdmFpbGFibGUgdG8geW91IGZvciB0aGF0IGtpbmQgb2YgdGVtcGxhdGUuIFRoaXMgd2lsbCBvbmx5IGhhcHBlbiBvbmNlIHRoZSBtb2R1bGUga25vd3Mgd2hhdCBraW5kIG9mIHRlbXBsYXRlIHlvdSYjMDM5O3JlIGVkaXRpbmcsIHNvIHdoZW4geW91IGZpcnN0IGNyZWF0ZSB0aGUgdGVtcGxhdGUsIGl0IGRpc3BsYXlzIGFsbCB0aGUgU21hcnR5IHRhZ3MgaXQga25vd3MgYWJvdXQsIG9ubHkgc29tZSBvZiB3aGljaCBiZWluZyBhcHBsaWNhYmxlLjwvcD4NCjxoMz5TdXBwb3J0PC9oMz4NCjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4NCjx1bD4NCjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCBvciBidXkgY29tbWVyY2lhbCBzdXBwb3J0LCBwbGVhc2UgdmlzaXQgU2pHJiMwMzk7cw0KbW9kdWxlIGhvbWVwYWdlIGF0IDxhIGhyZWY9JnF1b3Q7aHR0cDovL3d3dy5jbXNtb2R1bGVzLmNvbSZxdW90Oz5DTVNNb2R1bGVzLmNvbTwvYT4uPC9saT4NCjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9JnF1b3Q7aHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnJnF1b3Q7PkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+DQo8bGk+VGhlIGF1dGhvciwgU2pHLCBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9JnF1b3Q7aXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zJnF1b3Q7PkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4NCjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS48L2xpPiAgDQo8L3VsPg0KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0DQpvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+DQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAwNSwgU2FtdWVsIEdvbGRzdGVpbiA8YSBocmVmPSZxdW90O21haWx0bzpzamdAY21zbW9kdWxlcy5jb20mcXVvdDs+PHNqZ0BjbXNtb2R1bGVzLmNvbT48L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0mcXVvdDtodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwmcXVvdDs+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4nOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPGxpPlZlcnNpb24gMC4xLjUgLSAxNyBOb3ZlbWJlciAyMDA1LiBJbml0aWFsIFJlbGVhc2UuIEplc3VzLCB0aGF0IHRvb2sgYSBsb25nIHRpbWUuPC9saT4NCjxsaT5WZXJzaW9uIDAuMSAtIDE5IE1hcmNoIDIwMDUuIFByb2plY3QgSW5pdGlhdGlvbi48L2xpPg0KPC91bD4nOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdVamlzdMSbdGUgc2UsIMW+ZSBqc3RlIG5hc3RhdmlsaSAmcXVvdDtNb2RpZnkgQ2F0YWxvZyBTZXR0aW5ncyZxdW90OyBvcHImYWFjdXRlO3ZuxJtuJmlhY3V0ZTsgdiZzY2Fyb247ZW0gdcW+aXZhdGVsxa9tLCBrdGXFmSZpYWN1dGU7IGJ1ZG91IHNwcmF2b3ZhdCBrYXRhbG9nLic7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjExOTgwOTMxMDEuMjk2LjY1LnV0bWNjbj0ocmVmZXJyYWwpfHV0bWNzcj1mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZ3x1dG1jY3Q9L3x1dG1jbWQ9cmVmZXJyYWwnOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My44ODAyNjc4MzcuMTE4MDk5MTY2OS4xMTk4MTUyNDQ0LjExOTk0NzA4ODcuMjk4JzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/da_DK.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ25hbWVpbWFnZXMnXSA9ICdCaWxsZWRlcic7CiRsYW5nWydkZWxldGVpbWFnZSddID0gJ1NsZXQgYmlsbGVkZSc7CiRsYW5nWydPd25lciddID0gJ0VqZXInOwokbGFuZ1snQ2F0YWxvZ0l0ZW0nXSA9ICdLYXRhbG9naXMmZWFjdXRlO3IgZWxlbWVudCc7CiRsYW5nWyduYW1lcGFnZSddID0gJ1NpZGUnOwokbGFuZ1snUGVybWlzc2lvbnMnXSA9ICdUaWxsYWRlbHNlcic7CiRsYW5nWydTdWInXSA9ICdVbmRlciAtJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtX3NvcnRfb3JkZXIyJ10gPSAnU29ydGVyaW5nc29yZGVuIGZvciBlbGVtZW50JzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtc19wZXJfcGFnZTInXSA9ICdFbGVtZW50ZXIgcHIuIHNpZGUnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2NhdGVnb3J5X3JlY3Vyc2UyJ10gPSAnVmlzbmluZ3N0eXBlJzsKJGxhbmdbJ3doaWNoX2F0dHJpYnV0ZXMnXSA9ICdIdmlsa2UgZWdlbnNrYWJlciBza2FsIHZpc2VzIGkga2F0YWxvZ2V0JzsKJGxhbmdbJ25hdlRhYiddID0gJyB8ICc7CiRsYW5nWyduZWVkcGVybWlzc2lvbiddID0gJ0R1IGVyIG4mb3NsYXNoO2R0IHRpbCBhdCBzJmFlbGlnO3R0ZSAlcyBmb3IgYXQgZyZvc2xhc2g7cmUgcyZhcmluZztkYW4uJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0thdGFsb2dpc2VyaW5nJzsKJGxhbmdbJ2FkbWluZGVzY3JpcHRpb24nXSA9ICdLYXRhbG9naW5kc3RpbGxpbmdlcic7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnRXIgZHUgc2lra2VyIHAmYXJpbmc7LCBhdCBkdSB2aWwgc2xldHRlICVzPyc7CiRsYW5nWyd1bmlxdWVjb2RlJ10gPSAnVW5payBrb2RlJzsKJGxhbmdbJ3RlbXBsYXRlbGlzdCddID0gJ1VuZGVyc2thYmVsb25lcic7CiRsYW5nWydsaXN0dGVtcGwnXSA9ICdBZG1pbmlzdHJhdGlvbiBhZiB1bmRlcnNrYWJlbG9uZXInOwokbGFuZ1sndGl0bGVfaXRlbV90YWInXSA9ICdFZ2Vuc2thYmVyIGZvciBlbGVtZW50JzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3RhYiddID0gJ0VnZW5za2FiZXIgZm9yIGthdGVnb3JpJzsKJGxhbmdbJ3RpdGxlX3ByaW50YWJsZV90YWInXSA9ICdJbmRzdGlsbGluZ2VyIGZvciB1ZHNrcmlmdCBhZiBrYXRhbG9nJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2VfdGFiJ10gPSAnU3Qmb3NsYXNoO3JyZWxzZSBwJmFyaW5nOyBlbGVtZW50LWJpbGxlZGVyJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX3RhYiddID0gJ0luZHN0aWxsaW5nZXIgZm9yIGthdGVnb3JpLXNpZGVyJzsKJGxhbmdbJ3RpdGxlX2lzX3RleHRmaWVsZCddID0gJ1Rla3N0Ym9rcz8nOwokbGFuZ1sndGl0bGVfZGVsZXRlJ10gPSAnU2xldD8nOwokbGFuZ1sndGl0bGVfYXNwZWN0X3RhYiddID0gJ1N0Jm9zbGFzaDtycmVsc2VzZm9yaG9sZCBmb3IgYmlsbGVkZXInOwokbGFuZ1sndGl0bGVfaW1hZ2VfdGFiJ10gPSAnQW5kcmUgaW5kc3RpbGxpbmdlciBmb3IgYmlsbGVkZXInOwokbGFuZ1sndGl0bGVfaXRlbV90ZW1wbGF0ZV92YXJzJ10gPSAnVmFyaWFibGUgZm9yIGVsZW1lbnQtc2thYmVsb25lcic7CiRsYW5nWyd0aXRsZV9jYXRfdGVtcGxhdGVfdmFycyddID0gJ1ZhcmlhYmxlIGZvciBrYXRlZ29yaS1za2FiZWxvbmVyJzsKJGxhbmdbJ3RpdGxlX2ZlYXR1cmVfdGVtcGxhdGVfdmFycyddID0gJ0ZlYXR1cmVzIFRlbXBsYXRlIFZhcmlhYmxlcyc7CiRsYW5nWyd0aXRsZV9zaG93X29ubHlfZXhpc3RpbmdfaW1hZ2VzJ10gPSAnSW5rbHVkJmVhY3V0ZTtyIGlra2UgbWFuZ2xlbmRlIGJpbGxlZGVyJzsKJGxhbmdbJ3RpdGxlX3Nob3dfb25seV9leGlzdGluZ19pbWFnZXNfaGVscCddID0gJ1RoaXMgd2lsbCBvbmx5IHB1dCBpbWFnZSByZWZlcmVuY2VzIGludG8gbGlzdHMgaWYgdGhlIGltYWdlIGV4aXN0cy48YnIgLz4oTm9ybWFsbHksIHRoaXMgaXMgZmluZSwgYnV0IGlmIHlvdSBhcmUgZG9pbmcgc29tZXRoaW5nIGNsZXZlciB3aXRoIGltYWdlPGJyIC8+YXJyYXkgaW5kZXhlcywgdGhpcyBjb3VsZCBjYXVzZSB5b3UgdHJvdWJsZS4pJzsKJGxhbmdbJ3RpdGxlX2ZsdXNoX2NhdHMnXSA9ICdGbHVzaCBjYXRlZ29yeSBwYWdlIGJ1ZmZlcnMnOwokbGFuZ1sndGl0bGVfZmx1c2hfY2F0c19oZWxwJ10gPSAnSWYgeW91IGhhdmUgYSBodWdlIG51bWJlciBvZiBpdGVtcyBkaXNwbGF5ZWQ8YnIgLz5pbiBhIGNhdGVnb3J5LCBzb21lIFBIUCBpbnN0YWxscyB3aWxsIGZhaWwgdG8gZGlzcGxheSB0aGUgcGFnZTxiciAvPmNvcnJlY3RseS4gQ2hlY2sgdGhpcyBib3ggdG8gc29sdmUgdGhpcyBwcm9ibGVtICh0ZXN0IGZvciBzaWRlIGVmZmVjdHMpLic7CiRsYW5nWydjYXRhbG9nZXInXSA9ICdLYXRhbG9naXNlcmluZyc7CiRsYW5nWydpdGVtX3BhZ2UnXSA9ICdFbGVtZW50LXNpZGUnOwokbGFuZ1snY2F0ZWdvcnlfcGFnZSddID0gJ0thdGVnb3JpLXNpZGUnOwokbGFuZ1snY2F0YWxvZ19wcmludGFibGUnXSA9ICdVZHNrcml2bmluZyBhZiBrYXRhbG9nJzsKJGxhbmdbJ2NhdGFsb2dfZGF0YXNoZWV0J10gPSAnQ2F0YWxvZyBEYXRhc2hlZXQnOwokbGFuZ1snY2F0YWxvZ19zaG9ydF9saXN0J10gPSAnRmVhdHVyZSBMaXN0JzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtX3NvcnRfb3JkZXInXSA9ICdTZXQgaXRlbSBzb3J0IG9yZGVyIHRvJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtc19wZXJfcGFnZSddID0gJ1MmYWVsaWc7dCBhbnRhbGxldCBhZiBlbGVtZW50ZXIgcHIuIHNpZGUgdGlsJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9jYXRlZ29yeV9yZWN1cnNlJ10gPSAnU2V0IENhdGVnb3J5IERpc3BsYXkgQmVoYXZpb3IgdG8nOwokbGFuZ1sndGl0bGVfaXRlbV9zb3J0X29yZGVyJ10gPSAnRGVmYXVsdCBpdGVtIHNvcnQgb3JkZXInOwokbGFuZ1sndGl0bGVfcHJpbnRhYmxlX3NvcnRfb3JkZXInXSA9ICdEZWZhdWx0IHByaW50YWJsZSBjYXRhbG9nIHNvcnQgb3JkZXInOwokbGFuZ1sndGl0bGVfaXRlbXNfcGVyX3BhZ2UnXSA9ICdEZWZhdWx0IG51bWJlciBvZiBpdGVtcyBwZXIgcGFnZSc7CiRsYW5nWyd0aXRsZV9hdmFpbF9hdHRycyddID0gJ0l0ZW0gYXR0cmlidXRlcyBhdmFpbGFibGUgZm9yIHRoZSB0ZW1wbGF0ZSc7CiRsYW5nWyd0aXRsZV9hdmFpbF9pbWF0dHJzJ10gPSAnSXRlbSBpbWFnZXMgYXZhaWxhYmxlIGZvciB0aGUgdGVtcGxhdGUnOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX2hlcm8nXSA9ICdJbWFnZSBzaXplIGZvciBJdGVtIFBhZ2UgKGxvbmcgYXhpcyBpbiBwaXhlbHMpJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV90aHVtYm5haWwnXSA9ICdUaHVtYmFpbCBpbWFnZSBzaXplIGZvciBJdGVtIFBhZ2UgKGxvbmcgYXhpcyBpbiBwaXhlbHMpJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV9jYXRlZ29yeSddID0gJ1RodW1ibmFpbCBpbWFnZSBzaXplIGZvciBJdGVtIG9uIENhdGVnb3J5IFBhZ2UgKGxvbmcgYXhpcyBpbiBwaXhlbHMpJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV9jYXRhbG9nJ10gPSAnVGh1bWJuYWlsIGltYWdlIHNpemUgZm9yIEl0ZW0gb24gQ2F0YWxvZyBQYWdlIChsb25nIGF4aXMgaW4gcGl4ZWxzKSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9pbWFnZV9zaXplX2hlcm8nXSA9ICdJbWFnZSBzaXplIGZvciBDYXRlZ29yeSBQYWdlIChsb25nIGF4aXMgaW4gcGl4ZWxzKSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9pbWFnZV9zaXplX3RodW1ibmFpbCddID0gJ1RodW1iYWlsIGltYWdlIHNpemUgZm9yIENhdGVnb3J5IFBhZ2UgKGxvbmcgYXhpcyBpbiBwaXhlbHMpJzsKJGxhbmdbJ3RpdGxlX3RlbXBsYXRlJ10gPSAnVGVtcGxhdGUnOwokbGFuZ1sndGl0bGVfdGVtcGxhdGVfdHlwZSddID0gJ1RlbXBsYXRlIFR5cGUnOwokbGFuZ1sndGl0bGVfdGl0bGUnXSA9ICdUaXRsZSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX2NvdW50J10gPSAnTWF4aW11bSBudW1iZXIgb2Ygdmlld3MgZm9yIGVhY2ggSXRlbSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9pbWFnZV9jb3VudCddID0gJ01heGltdW0gbnVtYmVyIG9mIEJhbm5lciBpbWFnZXMgZm9yIGVhY2ggQ2F0ZWdvcnkgUGFnZSc7CiRsYW5nWyd0aXRsZV9pdGVtX2F0dHJpYnV0ZXNfaGVscCddID0gJ0VhY2ggYXR0cmlidXRlIHlvdSBlbnRlciBoZXJlIHdpbGwgYmUgdGhlIHRpdGxlIG9mIGEgZmllbGQgdGhhdCB5b3UgY2FuIHVzZSB0byBkZXNjcmliZSBhbiBpbmRpdmlkdWFsIGl0ZW0sIGFuZCB3aWxsIGJlIGRpc3BsYXllZCB3aXRoIHRoYXQgaXRlbS4gWW91IG1heSBoYXZlIHRvIHVwZGF0ZSB5b3VyIHRlbXBsYXRlIHRvIHJlZmxlY3QgdGhlc2UgYXR0cmlidXRlcy4nOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfYXR0cmlidXRlc19oZWxwJ10gPSAnRWFjaCBhdHRyaWJ1dGUgeW91IGVudGVyIGhlcmUgd2lsbCBiZSB0aGUgdGl0bGUgb2YgYSBmaWVsZCB0aGF0IHlvdSBjYW4gdXNlIHRvIGRlc2NyaWJlIGFuIGl0ZW0gY2F0ZWdvcnksIGFuZCB3aWxsIGJlIGRpc3BsYXllZCBvbiB0aGF0IGNhdGVnb3J5IHBhZ2UuIFlvdSBtYXkgaGF2ZSB0byB1cGRhdGUgeW91ciB0ZW1wbGF0ZSB0byByZWZsZWN0IHRoZXNlIGF0dHJpYnV0ZXMuJzsKJGxhbmdbJ3RpdGxlX2NhdGFsb2dfYXR0cmlidXRlc19oZWxwJ10gPSAnRWFjaCBhdHRyaWJ1dGUgeW91IGVudGVyIGhlcmUgd2lsbCBiZSB0aGUgdGl0bGUgb2YgYSBmaWVsZCB0aGF0IHlvdSBjYW4gdXNlIHRvIGRlc2NyaWJlIHRoZSBlbnRpcmUgY2F0YWxvZywgYW5kIHdpbGwgYmUgZGlzcGxheWVkIG9uIHRoZSBwcmludGFibGUgY2F0YWxvZyBwYWdlLiBZb3UgbWF5IGhhdmUgdG8gdXBkYXRlIHlvdXIgdGVtcGxhdGUgdG8gcmVmbGVjdCB0aGVzZSBhdHRyaWJ1dGVzLic7CiRsYW5nWyd0aXRsZV9mb3JjZV9hc3BlY3RfcmF0aW8nXSA9ICdGb3JjZSBpbWFnZXMgdG8gYSBzcGVjaWZpZWQgQXNwZWN0IHJhdGlvPyc7CiRsYW5nWyd0aXRsZV9mb3JjZV9hc3BlY3RfcmF0aW9fbGFiZWwnXSA9ICdGb3JjZSBhc3BlY3QgcmF0aW8gKG5vdCB5ZXQgaW1wbGVtZW50ZWQpJzsKJGxhbmdbJ3RpdGxlX2ltYWdlX2FzcGVjdF9yYXRpbyddID0gJ0FzcGVjdCByYXRpbyAoc3BlY2lmeSBhcyAmcXVvdDs0OjMmcXVvdDsgb3IgJnF1b3Q7MToyLjUmcXVvdDspJzsKJGxhbmdbJ3RpdGxlX2FzcGVjdF9yYXRpb19oZWxwJ10gPSAnSWYgeW91IGZvcmNlIGFuIGltYWdlIHRvIGEgc3BlY2lmaWVkIGFzcGVjdCByYXRpbywgaXQgd2lsbCBiZSBzY2FsZWQgdG8gZml0IGV4YWN0bHkgdGhhdCBhc3BlY3QgcmF0aW8gKG9yIGl0cyBpbnZlcnNlLCBzbyB5b3UgY2FuIGhhdmUgYm90aCBwb3J0cmFpdCBhbmQgbGFuZHNjYXBlIGZvcm1hdHMpLiBPdGhlcndpc2UsIGltYWdlcyB3aWxsIHByZXNlcnZlIHRoZWlyIGFzcGVjdCByYXRpbywgYW5kIGJlIHNjYWxlZCBzbyB0aGVpciBsb25nIGF4aXMgaXMgdGhlIHNpemUgc3BlY2lmaWVkLiA8Yj50aGlzIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQhPC9iPic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9zb3J0J10gPSAnQ2F0ZWdvcnkgUGFnZSBJdGVtLWxpc3Qgc29ydCBvcmRlcic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlJ10gPSAnRGVmYXVsdCBDYXRlZ29yeSBEaXNwbGF5IEJlaGF2aW9yJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfaXRlbXNfYWxsJ10gPSAnSW5jbHVkZSBhbGwgSXRlbXMgd2l0aGluIHRoaXMgY2F0ZWdvcnksIGluY2x1ZGluZyBpdGVtcyBpbiBzdWItY2F0ZWdvcmllcyc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2l0ZW1zX29uZSddID0gJ0luY2x1ZGUgYWxsIEl0ZW1zIGltbWVkaWF0ZWx5IHdpdGhpbiB0aGlzIGNhdGVnb3J5LCBidXQgbm90IGl0ZW1zIGluIHN1Yi1jYXRlZ29yaWVzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfY2F0ZWdvcmllc19hbGwnXSA9ICdJbmNsdWRlIGFsbCBDYXRlZ29yaWVzIHdpdGhpbiB0aGlzIGNhdGVnb3J5LCBpbmNsdWRpbmcgY2F0ZWdvcmllcyBpbiBzdWItY2F0ZWdvcmllcyc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2NhdGVnb3JpZXNfb25lJ10gPSAnSW5jbHVkZSBhbGwgQ2F0ZWdvcmllcyBpbW1lZGlhdGVseSB3aXRoaW4gdGhpcyBjYXRlZ29yeSwgYnV0IG5vdCBjYXRlZ29yaWVzIGluIHN1Yi1jYXRlZ29yaWVzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfbWl4ZWRfYWxsJ10gPSAnSW5jbHVkZSBhbGwgSXRlbXMgYW5kIENhdGVnb3JpZXMgd2l0aGluIHRoaXMgY2F0ZWdvcnksIGluY2x1ZGluZyBpdGVtcyBhbmQgY2F0ZWdvcmllcyBpbiBzdWItY2F0ZWdvcmllcyc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX21peGVkX29uZSddID0gJ0luY2x1ZGUgYWxsIEl0ZW1zIGFuZCBDYXRlZ29yaWVzIGltbWVkaWF0ZWx5IHdpdGhpbiB0aGlzIGNhdGVnb3J5LCBidXQgbm90IGl0ZW1zIG9yIGNhdGVnb3JpZXMgaW4gc3ViLWNhdGVnb3JpZXMnOwokbGFuZ1sndGl0bGVfc2hvd19taXNzaW5nX2ltYWdlcyddID0gJ1Nob3cgJnF1b3Q7Tm8gSW1hZ2UmcXVvdDsgaW1hZ2UgZm9yIG1pc3NpbmcgaW1hZ2VzJzsKJGxhbmdbJ3RpdGxlX3Nob3dfbWlzc2luZ19pbWFnZXNfbG9uZyddID0gJ1Nob3cgYSBzcGVjaWFsICZxdW90O05vIEltYWdlJnF1b3Q7IGltYWdlIGlmIHRoZXJlIGFyZSBtaXNzaW5nIGltYWdlcyAodXNlZnVsIGZvciBkZWJ1Z2dpbmcuIE90aGVyd2lzZSB3aWxsIHVzZSBhIHNpbmdsZSBwaXhlbCB0cmFuc3BhcmVudCBpbWFnZSkuJzsKJGxhbmdbJ25hdHVyYWxfb3JkZXInXSA9ICdOYXZpZ2F0aW9uIE9yZGVyJzsKJGxhbmdbJ2FscGhhX29yZGVyJ10gPSAnQWxwaGFiZXRpY2FsIE9yZGVyJzsKJGxhbmdbJ21hbmFnZXByZWZzJ10gPSAnTWFuYWdlIFByZWZlcmVuY2VzJzsKJGxhbmdbJ21hbmFnZWF0dHJzJ10gPSAnTWFuYWdlIFVzZXItRGVmaW5lZCBBdHRyaWJ1dGVzJzsKJGxhbmdbJ2dsb2JhbG9wcyddID0gJ0dsb2JhbCBDYXRhbG9nIE9wZXJhdGlvbnMnOwokbGFuZ1snYWRkdGVtcGxhdGUnXSA9ICdBZGQgVGVtcGxhdGUnOwokbGFuZ1sncmVpbXBvcnR0ZW1wbGF0ZXMnXSA9ICdSZS1pbXBvcnQgZXhhbXBsZSBzdWItdGVtcGxhdGVzJzsKJGxhbmdbJ3JlaW1wb3J0ZWQnXSA9ICdTYW1wbGUgc3ViLXRlbXBsYXRlcyBoYXZlIGJlZW4gaW1wb3J0ZWQuJzsKJGxhbmdbJ3RlbXBsYXRldXBkYXRlZCddID0gJ1RlbXBsYXRlIGFkZGVkL3VwZGF0ZWQuJzsKJGxhbmdbJ3RlbXBsYXRlZGVsZXRlZCddID0gJ1RlbXBsYXRlIGRlbGV0ZWQuJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ1ByZWZlcmVuY2VzIHVwZGF0ZWQuJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsZSB2ZXJzaW9uICVzIGluc3RhbGxlZC4nOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bGUgdXBncmFkZWQgdG8gdmVyc2lvbiAlcy4nOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bGUgVW5pbnN0YWxsZWQuJzsKJGxhbmdbJ2F0dHJzdXBkYXRlZCddID0gJ0F0dHJpYnV0ZXMgdXBkYXRlZC4nOwokbGFuZ1snbm9nbG9iYWxjaGFuZ2UnXSA9ICdEbyBub3QgY2hhbmdlJzsKJGxhbmdbJ2dsb2JhbGx5dXBkYXRlZCddID0gJ0NoYW5nZXMgcHJvcGFnYXRlZCBnbG9iYWxseS4nOwokbGFuZ1snZWRpdHRlbXBsYXRlJ10gPSAnRWRpdCBUZW1wbGF0ZSc7CiRsYW5nWydzdWJ0ZW1wbGF0ZXMnXSA9ICdDYXRhbG9nIFN1Yi10ZW1wbGF0ZXMnOwokbGFuZ1snbmV4dCddID0gJzomcmFxdW87JzsKJGxhbmdbJ3ByZXYnXSA9ICcmbGFxdW87Oic7CiRsYW5nWydlZGl0J10gPSAnRWRpdCc7CiRsYW5nWydkZWxldGUnXSA9ICdEZWxldGUnOwokbGFuZ1snbm90ZW1wbGF0ZXMnXSA9ICdObyBTdWItdGVtcGxhdGVzIGFyZSBpbnN0YWxsZWQhJzsKJGxhbmdbJ2hlbHB0ZXh0J10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5UaGlzIG1vZHVsZSBsZXRzIHlvdSBjcmVhdGUgb25saW5lIGNhdGFsb2dzIG9yIHBvcnRmb2xpb3MuIENhdGFsb2dzIGNvbnNpc3Qgb2YgJnF1b3Q7Q2F0YWxvZyBJdGVtcyZxdW90OyB3aGljaCBjb3VsZCBiZSBwcm9kdWN0cywgd29ya3Mgb2YgYXJ0LCBvciB0aGUgbGlrZSwgYW5kICZxdW90O0NhdGFsb2cgQ2F0ZWdvcmllcyZxdW90OyB3aGljaCBjb3VsZCBiZSBpdGVtIGNhdGVnb3JpZXMgb3Igb3RoZXIgbmF0dXJhbCBkaXZpc2lvbnMgb2YgdGhlIGNhdGFsb2cuPC9wPg0KPHA+Q2F0ZWdvcmllcyBtYXkgYmUgZGVmaW5lZCBoaWVyYXJjaGljYWxseSAodXNpbmcgdGhlIHN0YW5kYXJkIENNUyBNYWRlIFNpbXBsZSBjb250ZW50IGxpc3QpLiBDYXRlZ29yeSBwYWdlcyBjYW4gZGlzcGxheSBpdGVtcyBpbiB0aGUgY2F0ZWdvcnkgYW5kL29yIHN1YmNhdGVnb3JpZXMsIG9wdGlvbmFsbHkgcmVjdXJzaW5nIHRocm91Z2ggc3ViLWNhdGVnb3JpZXMuIFRoaXMgYmVoYXZpb3IgY2FuIGJlIGNvbmZpZ3VyZWQgb24gYSBwZXItY2F0ZWdvcnkgYmFzaXMuPC9QPg0KPHA+VGhlcmUgaXMgYWxzbyBhIFByaW50YWJsZSBDYXRhbG9nLCB3aGljaCByZXByZXNlbnRzIHRoZSB3aG9sZSBjb2xsZWN0aW9uIG9mIENhdGFsb2cgSXRlbXMgb24gYSBzaW5nbGUgcGFnZSAodGhpcyBpcyBjdXJyZW50bHkgaW1wbGVtZW50ZWQgYmFkbHksIGFuZCB3aWxsIGxvYWQgc2xvd2x5KS48L3A+DQo8cD5UaGUgbW9kdWxlIGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciAmcXVvdDtDb250ZW50IEFsaWFzZXMmcXVvdDsgKGEgbW9kdWxlIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnRhbGlhc2VzLyI+dGhlIERldmVsb3BlciBGb3JnZTwvYT4pLCB3aGljaCBhbGxvd3MgeW91IHRvIHBsYWNlIGFueSBDYXRhbG9nIEl0ZW0gaW50byBtdWx0aXBsZSBDYXRhbG9nIENhdGVnb3JpZXMuPC9wPg0KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+DQo8cD5XaGVuIHlvdSBpbnN0YWxsIHRoaXMgbW9kdWxlLCBpdCBjcmVhdGVzIHRocmVlIG5ldyBDb250ZW50IFR5cGVzOiBDYXRhbG9nIEl0ZW0sIENhdGFsb2cgQ2F0ZWdvcnksIGFuZCBQcmludGFibGUgQ2F0YWxvZy4gV2hlbiB5b3UmIzAzOTtyZSBpbiB5b3VyIHNpdGUgYWRtaW5pc3RyYXRpb24gY2F0ZWdvcnksIHlvdSBhZGQgQ2F0YWxvZyBJdGVtcyBhbmQgQ2F0YWxvZyBDYXRlZ29yaWVzIGp1c3QgYXMgeW91IHdvdWxkIGFueSBvdGhlciBraW5kIG9mIHBhZ2UuIFNlbGVjdCBDb250ZW50ID4gUGFnZXMgPiBBZGQgQ29udGVudCwgYW5kIHRoZW4gc2VsZWN0ICZxdW90O0NhdGFsb2cgSXRlbSZxdW90OyBvciAmcXVvdDtDYXRhbG9nIENhdGVnb3J5JnF1b3Q7IGZyb20gdGhlIENvbnRlbnQgVHlwZSBwdWxsZG93bi48L3A+DQo8aDQ+Q2F0YWxvZyBJdGVtczwvaDQ+DQo8cD5BZGRpbmcgYSBDYXRhbG9nIEl0ZW0gaXMgc2ltaWxhciB0byBhZGRpbmcgYW4gb3JkaW5hcnkgcGFnZSB0byB5b3VyIHNpdGUuIFRoZSBkYXRhIGZpZWxkcyBmb3IgdGhlIEl0ZW0gYXJlIG5vdCBleGFjdGx5IHRoZSBzYW1lLCBob3dldmVyLiBBbHNvIG5vdGUgdGhhdCBpbiB0aGUgJnF1b3Q7SW1hZ2VzJnF1b3Q7IHRhYiwgeW91IGNhbiBzZWxlY3QgbXVsdGlwbGUgaW1hZ2VzIHRvIHVwbG9hZCBmb3IgdGhlIGl0ZW0uIFdoZW4geW91IHVwbG9hZCBpbWFnZXMsIHRoZSBzeXN0ZW0gd2lsbCBzaXplIHRoZW0gYXBwcm9wcmlhdGVseSBmb3IgdGhlIGNhdGFsb2csIGNyZWF0ZSB0aHVtYm5haWxzIGZvciB1c2UgaW4gdGhlIEl0ZW0mIzAzOTtzIHBhZ2UsIGNyZWF0ZSB0aHVtYm5haWxzIGZvciBhbnkgQ2F0ZWdvcnkgcGFnZXMsIGFuZCBzbyBvbi4gVGhpcyByZXF1aXJlcyB0aGF0IHlvdSBoYXZlIEdEIG9yIGEgc2ltaWxhciBpbWFnZSBsaWJyYXJ5IGluc3RhbGxlZC4gQ3VycmVudGx5LCBvbmx5IGpwZWcgZm9ybWF0IGltYWdlcyBhcmUgc3VwcG9ydGVkLjwvcD4NCjxoND5DYXRhbG9nIENhdGVnb3JpZXM8L2g0Pg0KPHA+QSBDYXRhbG9nIENhdGVnb3J5IGlzIHVzZWQgZm9yIG9yZ2FuaXppbmcgeW91ciBjYXRhbG9nIGl0ZW1zLiBJdCBwcm92aWRlcyBhIHBhZ2UgdGhhdCBsaXN0cyBDYXRhbG9nZXIgY29udGVudCB0aGF0IGlzIGNvbnRhaW5lZCBieSBpdC4gQSBDYXRhbG9nIEl0ZW0gaXMgY29uc2lkZXJlZCB0byBiZSBwYXJ0IG9mIGEgQ2F0YWxvZyBDYXRlZ29yeSBpZiBpdCBpcyBiZWxvdyB0aGF0IENhdGVnb3J5IGluIHRoZSBTaXRlIEhpZXJhcmNoeS4gQ2F0ZWdvcmllcyBjYW4gc2ltaWxhcmx5IGluY2x1ZGUgb3RoZXIgQ2F0ZWdvcmllcy48L3A+DQo8cD5DYXRhbG9nIENhdGVnb3JpZXMgaGF2ZSBhIG51bWJlciBvZiBzZXR0aW5ncyB0byBkZXRlcm1pbmUgaG93IHRoZXkgc2hvdWxkIGRpc3BsYXkgdGhlIEl0ZW1zIGFuZCBDYXRlZ29yaWVzIHRoZXkgY29udGFpbjogaWYgeW91IGxvb2sgYXQgdGhlICZxdW90O09wdGlvbnMmcXVvdDsgdGFiLCB5b3UgY2FuIGNob29zZSBob3cgbWFueSBpdGVtcyBhbmQvb3IgY2F0ZWdvcmllcyB0byBzaG93LCB3aGF0IG9yZGVyIHRvIHNob3cgdGhlbSBpbiwgd2hldGhlciB0byBkaXNwbGF5IG9ubHkgaXRlbXMgb3Igb25seSBjYXRlZ29yaWVzIG9yIGJvdGgsIGFuZCBob3cgbWFueSBsZXZlbHMgb2YgdGhlIGhpZXJhcmNoeSB0byBkaXNwbGF5IGJlbG93IHRoZSBjYXRlZ29yeSBwYWdlLjwvcD4NCjxwPkZvciBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTo8L3A+DQo8b2w+DQoJPGxpPjxiPkhhdHM8L2I+DQoJCTxvbD4NCgkJCTxsaT48Yj5GYXNoaW9uPC9iPg0KCQkJIAk8b2w+DQoJCQkgCQk8bGk+RmVhdGhlcmVkIEhhdDwvbGk+PGxpPkZlZG9yYSA8L2xpPjxsaT5CYXNlYmFsbCBIYXQ8L2xpPg0KCQkJIAk8L29sPg0KCQkJIDwvbGk+DQoJCSAJPGxpPjxiPldvcmsgSGF0czwvYj4NCgkJICAgIAk8b2w+DQoJCSAgICAJCTxsaT5IYXJkIEhhdDwvbGk+PGxpPkRpdmluZyBIZWxtZXQ8L2xpPg0KCQkgICAgCTwvb2w+DQoJCSAgICA8L2xpPg0KCQk8L29sPg0KCTwvbGk+DQo8L29sPg0KPHA+SW4gdGhpcyBkaWFncmFtLCBib2xkZWQgaXRlbXMgYXJlIENhdGFsb2cgQ2F0ZWdvcmllcywgYW5kIG5vbi1ib2xkZWQgaXRlbXMgYXJlIENhdGFsb2cgSXRlbXMuIERlcGVuZGluZyB1cG9uIGhvdyB5b3Ugc2V0IHlvdXIgb3B0aW9ucywgdGhlIEhhdHMgQ2F0ZWdvcnkgUGFnZSBjYW4gc2hvdyBvbmx5IGVudHJpZXMgZm9yIHRoZSBGYXNoaW9uIGFuZCBXb3JrIEhhdHMgQ2F0ZWdvcnkgUGFnZXMsIG9yIGl0IGNhbiBzaG93IGVudHJpZXMgZm9yIEZhc2hpb24sIFdvcmsgSGF0cywgYW5kIGFsbCB0aGUgaGF0cyBsaXN0ZWQgYmVsb3cgdGhlbS48L3A+DQo8cD5Zb3UgY2FuIG9wdCB0byBzaG93IHRoZSBpdGVtcyBpbiAmcXVvdDtuYXR1cmFsJnF1b3Q7IG9yZGVyIChpLmUuLCB0aGUgb3JkZXIgdGhlIEl0ZW1zIHNob3cgdXAgaW4gdGhlIENNUyBDb250ZW50IEhpZXJhcmNoeSksIG9yIGluIGFscGhhYmV0aWNhbCBvcmRlci48L1A+DQo8cD5JZiB5b3UgaGF2ZSBsYXJnZSBudW1iZXJzIG9mIGl0ZW1zIGluIGEgQ2F0ZWdvcnksIHlvdSBjYW4gc2V0IHRoZSBtYXhpbXVtIG51bWJlciB0byBiZSBkaXNwbGF5ZWQgaW4gYSBDYXRlZ29yeSBQYWdlLCBhbmQgdGhlIHBhZ2Ugd2lsbCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBsaW5rcyB0byBuYXZpZ2F0ZSB0aHJvdWdoIHRoZSBsaXN0LjwvcD4NCjxwPkVhY2ggQ2F0ZWdvcnkgcGFnZSBjYW4gaGF2ZSBkaWZmZXJlbnQgc2V0dGluZ3MgZm9yIHNvcnQgb3JkZXIsIGxldmVscyB0byBkaXNwbGF5LCBhbmQgbnVtYmVyIG9mIGl0ZW1zLiBZb3UgY2FuIHNldCB0aGUgZGVmYXVsdCBmb3IgdGhlc2UgdmFsdWVzIGluIEV4dGVuc2lvbnMgPiBDYXRhbG9nZXIgPiBNYW5hZ2UgUHJlZmVyZW5jZXMuIElmLCBhdCBhIGxhdGVyIGRhdGUsIHlvdSB3aXNoIHRvIGNoYW5nZSBzb21lIHNldHRpbmcgb24gYWxsIG9mIHlvdXIgQ2F0ZWdvcnkgcGFnZXMsIHlvdSBjYW4gZ28gaW50byBFeHRlbnNpb25zID4gQ2F0YWxvZ2VyID4gR2xvYmFsIENhdGFsb2cgT3B0aW9ucywgYW5kIG1ha2UgdGhvc2UgY2hhbmdlcy48L3A+DQo8aDQ+SW1hZ2VzPC9oND4NCjxwPkNhdGFsb2dlciBhbGxvd3MgeW91IHRvIHNlbGVjdCBkaWZmZXJlbnQgc2l6ZSBpbWFnZXMgZm9yIEl0ZW0gcGFnZXMsIENhdGVnb3J5IHBhZ2VzLCBhbmQgdGhlIFByaW50YWJsZSBDYXRhbG9nLiBZb3UgY2FuIHNldCB0aGVzZSBkZWZhdWx0cyBpbiBFeHRlbnNpb25zID4gQ2F0YWxvZ2VyID4gTWFuYWdlIFByZWZlcmVuY2VzLjwvcD4NCjxwPldoZW4geW91IHVwbG9hZCBpbWFnZXMsIHRoZSBvcmlnaW5hbCBpcyBzdG9yZWQuIFdoZW4gc29tZW9uZSB2aXNpdHMgYSBwYWdlLCB0aGUgcmVkdWNlZCBzaXplIGltYWdlcyBhcmUgcmVxdWVzdGVkIHVzaW5nIGEgc3BlY2lhbCBVUkwsIHdoaWNoIHdpbGwgcmVkaXJlY3QgdGhlIHVzZXImIzAzOTtzIGJyb3dzZXIgdG8gdGhlIHNjYWxlZCBpbWFnZSBpZiBpdCBleGlzdHMsIGFuZCBjcmVhdGluZyB0aGUgc2NhbGVkIGltYWdlIGlmIGl0IGRvZXNuJiMwMzk7dC4gVGhpcyBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiBpbWFnZXMsIHdpdGhvdXQgaGF2aW5nIHRvIHJlLXVwbG9hZCBhbGwgdGhlIGltYWdlcywgb3IgcmVzY2FsaW5nIHRoZW0gYWxsIGF0IG9uY2UuPC9wPg0KPHA+VGhpcyBpbWFnZSByZXNjYWxpbmcgY29kZSByZXF1aXJlcyB0aGF0IHlvdSBoYXZlIGVpdGhlciBJbWFnZU1hZ2ljayBvciBHRCBsaWIgaW5zdGFsbGVkLCBhbmQgY29uZmlndXJlZCBpbiB5b3VyIENNUyBNYWRlIFNpbXBsZSBjb25maWcucGhwLjwvcD4NCjxoMz5GZWF0dXJlIExpc3RzPC9oMz4NCjxwPllvdSBjYW4sIGFzIG9mIHZlcnNpb24gMC40LCBoYXZlICZxdW90O2ZlYXR1cmUgbGlzdHMmcXVvdDsgd2hpY2ggYXJlIHRoZSA8aT5uPC9pPiBtb3N0LXJlY2VudGx5IGFkZGVkIGNhdGFsb2cgaXRlbXMsIG9yIGEgY29sbGVjdGlvbiBvZiA8aT5rPC9pPiByYW5kb20gaXRlbXMgZnJvbSB0aGUgY2F0YWxvZy48L3A+DQo8aDQ+JnF1b3Q7QWxsJnF1b3Q7IEZlYXR1cmUgTGlzdDwvaDQ+DQo8cD5UbyBnZXQgYSBsaXN0IG9mIGFsbCBjYXRhbG9nIGl0ZW1zIChvcHRpb25hbGx5IHVuZGVyIGEgc3BlY2lmaWVkIHBhcnQgb2YgeW91ciBoaWVyYXJjaHkpIGZvciBwcm9jZXNzaW5nIHZpYSBhIHRlbXBsYXRlLCB5b3UgY2FuIHVzZQ0KdGhlICZxdW90O2FsbCZxdW90OyBmZWF0dXJlIGxpc3QuPC9wPg0KPHA+VGhlIHN5bnRheCBmb3IgYW4gJnF1b3Q7YWxsJnF1b3Q7IGxpc3QgaXMgbGlrZTo8L3A+DQo8cD57Y21zX21vZHVsZSBtb2R1bGU9JiMwMzk7Q2F0YWxvZ2VyJiMwMzk7IGFjdGlvbj0mIzAzOTthbGwmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5O30sIHdoZXJlIHN1Yl90ZW1wbGF0ZSBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgbGlzdC4NClRoZXJlIGlzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciwgYWxpYXM9JiMwMzk7cGFnZV9hbGlhcyYjMDM5Oywgd2hlcmUgcGFnZV9hbGlhcyBpbmRpY2F0ZXMgdGhlIHRvcCBvZiB0aGUgdHJlZSAoZS5nLiwgYSBwbGFjZSBpbiB5b3VyIG1lbnUNCmhpZXJhcmNoeSwgdHlwaWNhbGx5IGEgY2F0ZWdvcnkgcGFnZSkgaW4gd2hpY2ggdG8gbG9vayBmb3IgbmV3IGl0ZW1zLiBBIHNwZWNpYWwgdmFsdWUgZm9yICZxdW90O3BhZ2VfYWxpYXMmcXVvdDsgaXMgJnF1b3Q7LyZxdW90Oywgd2hpY2ggbWVhbnMgdG8NCnN0YXJ0IGF0IHRoZSByb290LjwvcD4NCjxwPlRoaXMgaXMgdXNlZnVsIGZvciBjYXRhbG9nLXdpZGUgb3BlcmF0aW9ucy4gRm9yIGV4YW1wbGUsIHRvIGdldCBhIGxpc3Qgb2YgYWxsIGNhdGVnb3JpZXMgKGFuZCBkbyBzb21ldGhpbmcgd2l0aCB0aGVtKSwNCnlvdSBjb3VsZCB1c2UgdGhlIHRhZyB7Y21zX21vZHVsZSBtb2R1bGU9JiMwMzk7Q2F0YWxvZ2VyJiMwMzk7IGFjdGlvbj0mIzAzOTthbGwmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5OyBhbGlhcz0mIzAzOTsvJiMwMzk7IHJlY3Vyc2U9JiMwMzk7Y2F0ZWdvcmllc19hbGwmIzAzOTt9LiBZb3VyIHRlbXBsYXRlIGNvdWxkIHRoZW4gdGhyb3cNCnRob3NlIGNhdGVnb3JpZXMgaW50byBhIHB1bGxkb3duIG1lbnUgdGhhdCByZWRpcmVjdGVkIHlvdSB0byB0aGF0IGNhdGVnb3J5JiMwMzk7cyBwYWdlLCBmb3IgZXhhbXBsZTo8L3A+DQo8cHJlPg0KPHNlbGVjdCBuYW1lPSZxdW90O2ZvbyZxdW90OyBvbmNoYW5nZT0mcXVvdDtkb2N1bWVudC5sb2NhdGlvbj10aGlzLm9wdGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4XS52YWx1ZTsmcXVvdDs+DQo8b3B0aW9uIHZhbHVlPSZxdW90OyZxdW90Oz5TZWxlY3QgQSB0YXJnZXQ8L29wdGlvbj4NCntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09dGhpc29uZX0NCiAgIDxvcHRpb24gdmFsdWU9JnF1b3Q7eyR0aGlzb25lLmxpbmt9JnF1b3Q7PnskdGhpc29uZS50aXRsZX08L29wdGlvbj4NCnsvZm9yZWFjaH0NCjwvc2VsZWN0Pg0KPC9wcmU+DQo8cD5JZiB5b3Ugd2FudGVkIHRoYXQgdG8gb25seSBzaG93IGNhdGVnb3JpZXMgdGhhdCB3ZXJlIGluIHRoZSB2ZXJ5IHRvcCBsZXZlbCBvZiB5b3VyIGhlaXJhcmNoeSwgeW91JiMwMzk7ZCByZXBsYWNlIHRoZSByZWN1cnNlPSYjMDM5O2NhdGVnb3JpZXNfYWxsJiMwMzk7IHdpdGgNCnJlY3Vyc2U9JiMwMzk7Y2F0ZWdvcmllc19vbmUmIzAzOTsuIE9yIGlmIHlvdSB3YW50ZWQgaXQgdG8gYmUgYWxsIGNhdGFsb2cgSXRlbXMgaW5zdGVhZCBvZiBjYXRlZ29yaWVzLCB5b3UgY291bGQgdXNlIGEgdGFnIGxpa2U6DQp7Y21zX21vZHVsZSBtb2R1bGU9JiMwMzk7Q2F0YWxvZ2VyJiMwMzk7IGFjdGlvbj0mIzAzOTthbGwmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5OyBhbGlhcz0mIzAzOTsvJiMwMzk7IHJlY3Vyc2U9JiMwMzk7aXRlbXNfYWxsJiMwMzk7fQ0KPHA+U2ltaWxhcmx5LCB5b3UgY291bGQgaGF2ZSBpdCBsaXN0IG9ubHkgY2F0ZWdvcmllcyB1bmRlciB0aGUgY3VycmVudCBwYWdlIChieSBvbWl0dGluZyB0aGUgJnF1b3Q7YWxpYXM9JiMwMzk7LyYjMDM5OyZxdW90OykuIFRoZSBjb21iaW5hdGlvbnMgYXJlIGJhc2ljYWxseSBsaW1pdGxlc3MhPC9wPg0KPHA+QWxsIHN1cHBvcnRlZCB2YWx1ZXMgb2YgcmVjdXJzZSBpbmNsdWRlOjx1bD4NCjxsaT5pdGVtc19vbmUgLSBDYXRhbG9nIGl0ZW1zLCBubyBtb3JlIHRoYW4gb25lIGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+aXRlbXNfYWxsIC0gQ2F0YWxvZyBpdGVtcywgYXQgYW55IGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+Y2F0ZWdvcmllc19vbmUgLSBDYXRlZ29yaWVzLCBubyBtb3JlIHRoYW4gb25lIGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+Y2F0ZWdvcmllc19hbGwgLSBDYXRlZ29yaWVzLCBhdCBhbnkgbGV2ZWwgYmVsb3cgdGhlIGN1cnJlbnQgcGFnZSAob3IgYWxpYXMgcG9pbnQpPC9saT4NCjxsaT5taXhlZF9vbmUgLSBDYXRhbG9nIGl0ZW1zIGFuZCBDYXRlZ29yaWVzLCBubyBtb3JlIHRoYW4gb25lIGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+bWl4ZWRfYWxsIC0gQ2F0YWxvZyBpdGVtcyBhbmQgQ2F0ZWdvcmllcywgYXQgYW55IGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8L3VsPg0KPC9wPg0KPGg0PlJlY2VudGx5IEFkZGVkIEZlYXR1cmUgTGlzdDwvaDQ+DQo8cD5UbyB1c2UgYSAmcXVvdDttb3N0LXJlY2VudGx5IGFkZGVkJnF1b3Q7IGxpc3Qgd2lsbCBhbGxvdyB5b3UgdG8gZGlzcGxheSB0aGUgbW9zdCByZWNlbnRseS1hZGRlZCBjYXRhbG9nIGl0ZW1zIHVuZGVyIGEgc3BlY2lmaWVkIHBhcnQgb2YgeW91ciBoaWVyYXJjaHkuPC9wPg0KPHA+VGhlIHN5bnRheCBmb3IgYSAmcXVvdDttb3N0IHJlY2VudGx5IGFkZGVkJnF1b3Q7IGxpc3QgaXMgbGlrZTo8L3A+DQo8cD57Y21zX21vZHVsZSBtb2R1bGU9JiMwMzk7Q2F0YWxvZ2VyJiMwMzk7IGFjdGlvbj0mIzAzOTtyZWNlbnQmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5O30sIHdoZXJlIHN1Yl90ZW1wbGF0ZSBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgbGlzdC4gVGhlcmUgYXJlIHR3byBvcHRpb25hbCBwYXJhbWV0ZXJzLCBjb3VudD0mIzAzOTszJiMwMzk7IGFsaWFzPSYjMDM5O3BhZ2VfYWxpYXMmIzAzOTssIHdoZXJlIGNvdW50IGlzIHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gaW5jbHVkZSwgYW5kIHBhZ2VfYWxpYXMgaW5kaWNhdGVzIHRoZSB0b3Agb2YgdGhlIHRyZWUgKGUuZy4sIGEgcGxhY2UgaW4geW91ciBtZW51IGhpZXJhcmNoeSwgdHlwaWNhbGx5IGEgY2F0ZWdvcnkgcGFnZSkgaW4gd2hpY2ggdG8gbG9vayBmb3IgbmV3IGl0ZW1zLiBBIHNwZWNpYWwgdmFsdWUgZm9yICZxdW90O3BhZ2VfYWxpYXMmcXVvdDsgaXMgJnF1b3Q7LyZxdW90Oywgd2hpY2ggbWVhbnMgdG8gdXNlIDxpPmFsbDwvaT4gcGFnZXMgaW4gdGhlIHNpdGUuPC9wPg0KPGg0PlJhbmRvbSBJdGVtcyBGZWF0dXJlIExpc3Q8L2g0Pg0KPHA+VGhlIHN5bnRheCBmb3IgYSAmcXVvdDtyYW5kb20mcXVvdDsgbGlzdCBpcyBsaWtlOjwvcD4NCjxwPntjbXNfbW9kdWxlIG1vZHVsZT0mIzAzOTtDYXRhbG9nZXImIzAzOTsgYWN0aW9uPSYjMDM5O3JhbmRvbSYjMDM5OyBzdWJfdGVtcGxhdGU9JiMwMzk7bXlfc3ViX3RlbXBsYXRlJiMwMzk7fSwgd2hlcmUgc3ViX3RlbXBsYXRlIGlzIHRoZSB0ZW1wbGF0ZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBsaXN0LiBUaGVyZSBhcmUgdHdvIG9wdGlvbmFsIHBhcmFtZXRlcnMsIGNvdW50PSYjMDM5OzMmIzAzOTsgYWxpYXM9JiMwMzk7cGFnZV9hbGlhcyYjMDM5Oywgd2hlcmUgY291bnQgaXMgdGhlIG51bWJlciBvZiBpdGVtcyB0byBpbmNsdWRlLCBhbmQgcGFnZV9hbGlhcyBpbmRpY2F0ZXMgdGhlIHRvcCBvZiB0aGUgdHJlZSAoZS5nLiwgYSBwbGFjZSBpbiB5b3VyIG1lbnUgaGllcmFyY2h5LCB0eXBpY2FsbHkgYSBjYXRlZ29yeSBwYWdlKSBpbiB3aGljaCB0byBsb29rIGZvciBuZXcgaXRlbXMuIEEgc3BlY2lhbCB2YWx1ZSBmb3IgJnF1b3Q7cGFnZV9hbGlhcyZxdW90OyBpcyAmcXVvdDsvJnF1b3Q7LCB3aGljaCBtZWFucyB0byB1c2UgPGk+YWxsPC9pPiBwYWdlcyBpbiB0aGUgc2l0ZS48L3A+DQo8aDM+Q3VzdG9taXphdGlvbiBhbmQgQWR2YW5jZWQgVG9waWNzPC9oMz4NCjxoND5DYXRhbG9nIEl0ZW0gQXR0cmlidXRlczwvaDQ+DQo8cD5UaGUgZGVmYXVsdCBpdGVtIGF0dHJpYnV0ZXMgYXJlIHR5cGljYWwgZm9yIGEgY2F0YWxvZyBvZiBwcm9kdWN0cyBvciBhcnR3b3JrcywgYnV0IGJ5IGdvaW5nIGludG8gRXh0ZW5zaW9ucyA+IENhdGFsb2dlciA+IE1hbmFnZSBVc2VyLURlZmluZWQgQXR0cmlidXRlcywgeW91IGNhbiBjaGFuZ2UgdGhlIGF0dHJpYnV0ZXMuIEl0JiMwMzk7cyBiZXN0IHRvIGRlZmluZSB0aGUgYXR0cmlidXRlcyBiZWZvcmUgeW91IHN0YXJ0IGVudGVyaW5nIENhdGFsb2cgSXRlbXMuPC9wPg0KPHA+Tm90ZSB0aGF0IHRoZSBhdHRyaWJ1dGVzIHlvdSBkZWZpbmUgbWF5IG5lZWQgdG8gYmUgYWRkZWQgdG8gdGhlIHRlbXBsYXRlIHRoYXQgeW91JiMwMzk7cmUgdXNpbmcgdG8gZGlzcGxheSBDYXRhbG9nIEl0ZW1zIC0tIHNlZSBDdXN0b20gVGVtcGxhdGVzIGJlbG93LjwvcD4NCjxoND5DYXRhbG9nIENhdGVnb3J5IEF0dHJpYnV0ZXM8L2g0Pg0KPHA+U2ltaWxhcmx5LCB5b3UgY2FuIHNldCBhdHRyaWJ1dGVzIGZvciBDYXRlZ29yaWVzLiBBZ2FpbiwgdGhlIGF0dHJpYnV0ZXMgeW91IGRlZmluZSBtYXkgbmVlZCB0byBiZSBhZGRlZCB0byB0aGUgdGVtcGxhdGUgdGhhdCB5b3UmIzAzOTtyZSB1c2luZyB0byBkaXNwbGF5IENhdGFsb2cgQ2F0ZWdvcmllcyAtLSBzZWUgQ3VzdG9tIFRlbXBsYXRlcyBiZWxvdy48L3A+DQo8aDQ+UHJpbnRhYmxlIENhdGFsb2cgQXR0cmlidXRlczwvaDQ+DQo8cD5MaWtld2lzZSwgeW91IGNhbiBzZXQgYXR0cmlidXRlcyBmb3IgUHJpbnRhYmxlIENhdGFsb2dzLiBBZ2FpbiwgdGhlIGF0dHJpYnV0ZXMgeW91IGRlZmluZSBtYXkgbmVlZCB0byBiZSBhZGRlZCB0byB0aGUgdGVtcGxhdGUgdGhhdCB5b3UmIzAzOTtyZSB1c2luZyB0byBkaXNwbGF5IHlvdXIgUHJpbnRhYmxlIENhdGFsb2cgLS0gc2VlIEN1c3RvbSBUZW1wbGF0ZXMgYmVsb3cuPC9wPg0KPGg0PkN1c3RvbSBUZW1wbGF0ZXM8L2g0Pg0KPHA+SWYgeW91JiMwMzk7cmUgd2lsbGluZyB0byBtZXNzIGFyb3VuZCB3aXRoIFNtYXJ0eSBUZW1wbGF0ZXMsIHlvdSBjYW4gY2hhbmdlIHRoZSBsYXlvdXQgb2YgYW55IG9mIHRoZSBwYWdlcyBnZW5lcmF0ZWQgYnkgQ2F0YWxvZ2VyLiBUaGlzIHNob3VsZCBtYWtlIGNlcnRhaW4gZGV2ZWxvcGVycyB2ZXJ5IGhhcHB5LCBldmVuIGlmIHRoZSBpbmVmZmljaWVuY3kgb2YgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgd2lsbCBub3QuIFRoZXJlIGFyZSBmb3VyIGtpbmRzIG9mIHRlbXBsYXRlczogb25lIGtpbmQgZm9yIENhdGFsb2cgSXRlbXMsIG9uZSBraW5kIGZvciBDYXRhbG9nIENhdGVnb3JpZXMsIGFuZCBvbmUga2luZCBmb3IgUHJpbnRhYmxlIENhdGFsb2dzLCBhbmQgb25lIGtpbmQgZm9yICZxdW90O0ZlYXR1cmUmcXVvdDsgbGlzdHMsIHN1Y2ggYXMgcmVjZW50bHkgYWRkZWQgaXRlbXMgb3IgcmFuZG9tIHNlbGVjdGlvbnMuPC9wPg0KPHA+V2hlbiBlZGl0aW5nIGEgVGVtcGxhdGUsIHRoZSBhZG1pbiBzY3JlZW4gd2lsbCBkaXNwbGF5IGEgbGlzdCBvZiBTbWFydHkgdGFncyBhdmFpbGFibGUgdG8geW91IGZvciB0aGF0IGtpbmQgb2YgdGVtcGxhdGUuIFRoaXMNCndpbGwgb25seSBoYXBwZW4gb25jZSB0aGUgbW9kdWxlIGtub3dzIHdoYXQga2luZCBvZiB0ZW1wbGF0ZSB5b3UmIzAzOTtyZSBlZGl0aW5nLCBzbyB3aGVuIHlvdSBmaXJzdCBjcmVhdGUgdGhlIHRlbXBsYXRlLCBpdCBkaXNwbGF5cyBhbGwNCnRoZSBTbWFydHkgdGFncyBpdCBrbm93cyBhYm91dCwgb25seSBzb21lIG9mIHdoaWNoIGJlaW5nIGFwcGxpY2FibGUuPC9wPg0KPGg0PlNtYXJ0eSB0YWdzIGluIEF0dHJpYnV0ZXM8L2g0Pg0KPHA+U29tZXRpbWVzLCB5b3UmIzAzOTtsbCB3YW50IHRoZSBkZXNjcmlwdGlvbnMgb2YgeW91ciBpdGVtcyB0byBpbmNsdWRlIHNtYXJ0eSB0YWdzIChlLmcuLCBjbXNfc2VsZmxpbmspLiBUbyBtYWtlIHRoYXQgd29yaywgeW91JiMwMzk7bGwgbmVlZCB0bw0KdXBkYXRlIHlvdXIgdGVtcGxhdGUuIEZvciB0aGUgYXR0cmlidXRlcyB3aGVyZSB5b3Ugd2FudCBzbWFydHkgdGFncyB0byBiZSBhY3RpdmUsIHlvdSYjMDM5O2xsIG5lZWQgdG8gbmVzdCB0aGUgc21hcnR5IGV2YWx1YXRpb25zIGluIHlvdXIgdGVtcGxhdGUuIEZvciBleGFtcGxlOjwvcD4NCjxwcmU+DQp7ZXZhbCB2YXI9JGF0dHJsaXN0W2F0XS5rZXl9DQo8L3ByZT4NCjxwPmJlY29tZXM6PC9wPg0KPHByZT4NCntldmFsIHZhcj0kZW50cnktPmlucHV0IGFzc2lnbj10aGlzQXR0cn17ZXZhbCB2YXI9JHRoaXNBdHRyfQ0KPC9wcmU+DQo8cD5VZ2x5PyBZdXAuIEJ1dCBpdCB3b3Jrcy48L3A+DQo8aDM+Q2F0YWxvZ2VyIEltYWdlIFN5c3RlbTwvaDM+DQo8cD5DYXRhbG9nZXIgaGFzIGFuIGltYWdlIHN5c3RlbSB0aGF0IHdpbGwgYWxsb3cgeW91IHRvIGR5bmFtaWNhbGx5IGNoYW5nZSB0aGUgaW1hZ2UgZGlzcGxheSBzaXplLiBJZiB5b3UgZG8gbm90IGxpa2UgaXQsIHlvdSBjYW4gYWx0ZXINCnRoZSB0ZW1wbGF0ZXMgYW5kIHVzZSBhbnkgaW1hZ2Ugc3lzdGVtIHlvdSB3YW50LjwvcD4NCjxwPldoZW4geW91IHVwbG9hZCBhbiBpbWFnZSB1c2luZyBDYXRhbG9nZXIsIGl0IGdldHMgcHV0IGluIGEgc3BlY2lhbCBzZXQgb2YgZGlyZWN0b3JpZXMgdG8gbWFrZSB0aGUgaW1hZ2luZyBlYXNpZXIuIFlvdSB3aWxsIHNlZSBtb3JlDQphYm91dCB0aGlzIGxhdGVyLjwvcD4NCjxwPkl0IHdvcmtzIGJ5IGNhbGxpbmcgYSBQSFAgcHJvZ3JhbSBpbnN0ZWFkIG9mIGRpcmVjdGx5IHJlZmVyZW5jaW5nIHRoZSBpbWFnZS4gVGhlIHByb2dyYW0gdXNlcyB0aGUgZmlsZW5hbWUgdG8gc2VlIGlmIHRoZQ0KaW1hZ2UgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGNvcnJlY3Qgc2l6ZS4gSWYgc28sIGl0IHJlZGlyZWN0cyB0byB0aGF0IGltYWdlLiBPdGhlcndpc2UsIGl0IHVzZXMgeW91ciBHRExJQiBvciBJbWFnZU1hZ2ljayB0byBjcmVhdGUNCnRoZSBpbWFnZSBpbiB0aGUgY29ycmVjdCBzaXplLCBhbmQgdGhlbiByZWRpcmVjdHMgdG8gaXQuDQo8L3A+DQo8aDQ+Q2F0YWxvZ2VyIEltYWdlIEZpbGVzcGVjIEV4cGxhbmF0aW9uPC9oND4NCjxwPkEgY2F0YWxvZ2VyIGltYWdlIGhhcyBhIGZpbGVzcGVjIGxpa2U6DQo8YnIgLz4NCnJvb3RfcGF0aC9tb2R1bGVzL0NhdGFsb2dlci9DYXRhbG9nZXIuSW1hZ2UucGhwP2k9aXRlbW5hbWVfZl8xXzQwMF8xLmpwZyZhbXA7YWM9ODI4ODgNCjwvcD4NCjxwPlRoZSBpbnRlcmVzdGluZyB0aGluZyBpcyAmcXVvdDtpdGVtbmFtZV9mXzFfNDAwXzEuanBnJnF1b3Q7IC0gdGhlIHN0dWZmIGJlZm9yZSBpcyBqdXN0IGEgY2FsbCB0byB0aGUgcHJvZ3JhbSwgYW5kIHRoZSAmYW1wO2FjPTgyODg4IGlzIGEgcmFuZG9tIHRoaW5nIHRoYXQNCmlzIGRlc2lnbmVkIHRvIHByZXZlbnQgYnJvd3NlciBjYWNoaW5nLiBTbyBleGFtaW5pbmcgdGhlIG5hbWUgcGllY2UgYnkgcGllY2UgKHNlcGFyYXRpbmcgYXQgdGhlIHVuZGVyc2NvcmVzKSwgd2UgaGF2ZTo8L3A+DQo8dWw+DQo8bGk+aXRlbSBuYW1lIC0gdGhpcyBpcyB0aGUgYWxpYXMgb2YgdGhlIGl0ZW0vY2F0ZWdvcnkgcGFnZSBjb250YWluaW5nIHRoZSBpbWFnZS48L2xpPg0KPGxpPmltYWdlIHR5cGUgLSB0aGlzIGlzIGEgZGVzaWduYXRpb24gZm9yIGltYWdlIHR5cGU6PHVsPg0KPGxpPmYgLSBpdGVtIGZ1bGwtc2l6ZSBpbWFnZTwvbGk+DQo8bGk+dCAtIGl0ZW0gdGh1bWJuYWlsPC9saT4NCjxsaT5jZiAtIGNhdGVnb3J5IGZ1bGwtc2l6ZWQgaW1hZ2U8L2xpPg0KPGxpPmN0IC0gY2F0ZWdvcnkgdGh1bWJuYWlsPC9saT4NCjxsaT5jdGYgLSBwcmludGFibGUgY2F0YWxvZyBmdWxsLXNpemVkIGltYWdlPC9saT4NCjwvdWw+DQo8L2xpPg0KPGxpPmltYWdlIG51bWJlciAtIHNvIGEgZ2l2ZW4gaXRlbS9jYXRhbG9nL2V0YyBjYW4gaGF2ZSBtdWx0aXBsZSBpbWFnZXM8L2xpPg0KPGxpPmxvbmcgZGltZW5zaW9uIC0gbG9uZyBkaW1lbnNpb24gb2YgdGhlIGltYWdlLCBpbiBwaXhlbHM8L2xpPg0KPGxpPm1pc3NpbmcgZmxhZyAtIDEgaWYgeW91IHdhbnQgdG8gc2hvdyBhbiAmcXVvdDtpbWFnZSBtaXNzaW5nJnF1b3Q7IGltYWdlIGlmIHRoaXMgaW1hZ2UgZG9lc24mIzAzOTt0IGV4aXN0LCAwIG90aGVyd2lzZTwvbGk+DQo8L3VsPg0KPHA+DQpUaGlzIHdpbGwgdGFrZSBhbiBpbWFnZSBpbiByb290X3BhdGgvdXBsb2Fkcy9pbWFnZXMvY2F0YWxvZ19zcmMvaXRlbW5hbWVfc3JjXzENCjwvcD4NCjxoMz5DcmVkaXRzPC9oMz4NCjxwPlRoYW5rcyB0byA8YSBocmVmPSJodHRwOi8vd3d3LmlkLWEuY28udWsiPlBhdWwgQ29vcGVyPC9hPiBmb3Igc3BvbnNvcmluZyB0aGUgZGV2ZWxvcG1lbnQgb2YgdGV4dGFyZWEgYXR0cmlidXRlcy48L3A+DQo8cD5UaGFua3MgdG8gbnVtZXJvdXMgcGF0aWVudCB1c2VycyBhbmQgYnVnIHRlc3RlcnMgKG1hbnkgb2Ygd2hvbSBoYWQgbm8gaWRlYSB3aGF0IHRoZXkgd2VyZSBnZXR0aW5nIGludG8uKTwvcD4gDQo8aDM+U3VwcG9ydDwvaDM+DQo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+DQo8dWw+DQo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgQ01TIE1hZGUgU2ltcGxlICA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnIj5EZXZlbG9wZXIgRm9yZ2U8L2E+LjwvbGk+DQo8bGk+VG8gb2J0YWluIGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHNlbmQgYW4gZW1haWwgdG8gdGhlIGF1dGhvciBhdCA8YSBocmVmPSJtYWlsdG86c2pnQGNtc21vZHVsZXMuY29tIj48c2pnQGNtc21vZHVsZXMuY29tPjwvYT4uPC9saT4NCjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjxsaT5UaGUgYXV0aG9yIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkgYW5kIGdyb3ZlbGxpbmcgZm9yIGZyZWUgc3VwcG9ydC48L2xpPg0KPC91bD4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dA0Kb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDcsIFNhbXVlbCBHb2xkc3RlaW4gPGEgaHJlZj0ibWFpbHRvOnNqZ0BjbXNtb2R1bGVzLmNvbSI+PHNqZ0BjbXNtb2R1bGVzLmNvbT48L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+DQo8bGk+VmVyc2lvbiAwLjcgLSAxNyBNYXJjaCAyMDA4LiA8ZW0+RmluYWxseTwvZW0+IGFkZGVkIHBlci1wYWdlIG1ldGEtZGF0YS4gQW5kIHRoZXJlIHdhcyBncmVhdCBjZWxlYnJhdGlvbiBpbiB0aGUgc3RyZWV0cywgYW5kIGRhbmNpbmcgaW4gdGhlIHRvd24gc3F1YXJlLiBBbHNvIGFkZGVkIGluIG1hbnkgSFRNTCBhbmQgbG9jYWxpemF0aW9uIGZpeGVzIGNvbnRyaWJ1dGVkIGJ5IE51bm8gQ29zdGEuPC9saT4NCjxsaT5WZXJzaW9uIDAuNi4yIC0gNyBKYW51YXJ5IDIwMDcuIEZpeGVkIG5hc3R5IGJ1ZyB3aGVyZSB1cGdyYWRpbmcgbWFrZXMgaXQgbG9vayBsaWtlIGFsbCB5b3VyIG5vdGUgZmllbGRzIGFyZSBsb3N0LjwvbGk+DQo8bGk+VmVyc2lvbiAwLjYuMSAtIDIgSmFudWFyeSAyMDA3LiBGaXhlZCBuYXN0eSBidWcgd2hlcmUgY2hhbmdpbmcgY29udGVudCB0eXBlIGZyb20gJnF1b3Q7Y29udGVudCZxdW90OyB0byBjYXRhbG9nIGNvbnRlbnQgdHlwZXMgcmVuYW1lZCBhbGwgY2F0YWxvZyBpbWFnZXMuPC9saT4NCjxsaT5WZXJzaW9uIDAuNiAtIDI5IERlY2VtYmVyIDIwMDcuIDx1bD4NCjxsaT5CdWcgZml4OiBJbWFnZXMgZG9uJiMwMzk7dCBnZXQgJnF1b3Q7bG9zdCZxdW90OyB3aGVuIHBhZ2UgYWxpYXMgY2hhbmdlcy48L2xpPg0KPGxpPkJ1ZyBmaXg6IEF0dHJpYnV0ZSBjb250ZW50IGRvZXNuJiMwMzk7dCBnZXQgJnF1b3Q7bG9zdCZxdW90OyB3aGVuIGF0dHJpYnV0ZXMgYXJlIHJlbmFtZWQuPC9saT4NCjxsaT5CdWcgZml4OiBGaXhlZCBQcmludGFibGUgQ2F0YWxvZy4gV29ya3MgZm9yIGZpcnN0IHRpbWUgc2luY2Ugdi4wLjQgb3IgdGhlcmVhYm91dHMuPC9saT4NCjxsaT5CdWcgZml4OiBOb3cgaG9ub3JzIHN5c3RlbSBwcmVmZXJlbmNlIGZvciBXWVNJV1lHIGVkaXRpbmcgb2YgdGV4dCBhcmVhcy48L2xpPg0KPGxpPkZlYXR1cmU6IEF0dHJpYnV0ZXMgbWF5IG5vdyBiZSB0ZXh0IGFyZWFzLjwvbGk+DQo8L3VsPg0KPC9saT4NCjxsaT5WZXJzaW9uIDAuNS42IC0gMTAgRGVjZW1iZXIgMjAwNy4gVGFyZHkgcm9sbG91dCBvZiBmaXhlczogPHVsPg0KPGxpPkFkZGVkIGNvZGUgdG8gcHJldmVudCBzaG93aW5nIG9mIG5vbi11cGxvYWRlZCBpbWFnZXMsIGNhdGVnb3J5IHBhZ2UgYnVmZmVyIGZsdXNoaW5nIGZvciBleHRyZW1lIGNhc2VzLCBtaW5vciBidWcgZml4ZXM8L2xpPg0KPGxpPkZpeCBmb3IgJiMwMzk7cmVjZW50JiMwMzk7IGFjdGlvbiB3aGVuIGFsaWFzIGlzIC88L2xpPg0KPGxpPkZpeCBmb3IgdGhlIHByb2JsZW0gd2hlcmUgY2F0YWxvZ3Mgd2l0aCBtb3JlIHRoYW4gdGVuIGNhdGVnb3JpZXMgaGF2ZSBpdGVtcyBkaXNwbGF5ZWQgaW4gaW5jb3JyZWN0IGNhdGVnb3JpZXM8L2xpPjwvdWw+PC9saT4NCjxsaT5WZXJzaW9uIDAuNS41IC0gMjAgSnVuZSAyMDA3LiBGaXggZm9yIENvbnRlbnQgQWxpYXMgc3VwcG9ydCAtIHJlcXVpcmVzIENvbnRlbnQgQWxpYXMgdi4gMC42LjEuPC9saT4NCjxsaT5WZXJzaW9uIDAuNS40IC0gMTkgSnVuZSAyMDA3LiBBZGRlZCAmcXVvdDthbGwmcXVvdDsgZmVhdHVyZSBsaXN0LjwvbGk+DQo8bGk+VmVyc2lvbiAwLjUuMyAtIDIxIFNlcHRlbWJlciAyMDA2LiBBZGRlZCBsaW5rcyB0byBzb3VyY2UgKG5vbi1yZXNjYWxlZCkgaW1hZ2VzLCBhbmQgYWRkZWQgaW1hZ2UgZGVsZXRlIGZ1bmN0aW9uYWxpdHkuPC9saT4NCjxsaT5WZXJzaW9uIDAuNS4yIC0gMTcgU2VwdGVtYmVyIDIwMDYuIFJlbW92ZWQgZGVidWcgb3V0cHV0LCByZXZpc2VkIGltYWdlIHN5c3RlbSAoZml4ZWQgYnVncykuIENhY2hpbmcgYnVnIHNlZW1zIHRvIHJlbWFpbi48L2xpPg0KPGxpPlZlcnNpb24gMC41LjEgLSAyNCBBdWd1c3QgMjAwNi4gKGNhbGd1eTEwMDApLCBVcHBlZCBNaW5pbXVtQ01TVmVyc2lvbiB0byAxLjAtc3ZuLCBhbmQgbW9yZSAxLjAgY2hhbmdlcyB3ZXJlIGFkZGVkIChyZW1vdmVkIHN0YXRpYyBtZXRob2RzKTwvbGk+DQo8bGk+VmVyc2lvbiAwLjUgLSAxNiBBdWd1c3QgMjAwNi4gQXNzb3J0ZWQgY29udHJpYnV0ZWQgYnVnIGZpeGVzIGZvciBDTVMgTVMgMS4wLCAgbmV3IG9wdGlvbnMgZm9yIGltYWdlcy48L2xpPg0KPGxpPlZlcnNpb24gMC40LjIgLSAyOCBNYXkgMjAwNi4gQnVnIGZpeCBmb3IgYXR0cmlidXRlcyBpbiBjYXRlZ29yeSBwYWdlcy4gQWRkZWQgJnF1b3Q7LyZxdW90OyBwYWdlX2FsaWFzIGZvciBmZWF0dXJlIGxpc3RzLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjQuMSAtIDIzIE1heSAyMDA2LiBCdWcgZml4IHRvIG1ha2Ugd29yayB3aXRoIG9sZGVyIHZlcnNpb25zIG9mIENNUyBNUy48L2xpPg0KPGxpPlZlcnNpb24gMC40IC0gMjIgTWF5IDIwMDYuIEJ1ZyBmaXhlcywgRmVhdHVyZSBMaXN0cy48L2xpPg0KPGxpPlZlcnNpb24gMC4zIC0gKHVucmVsZWFzZWQsIHB1Ymxpc2hlZCBmcm9tIHN2bik8L2xpPg0KPGxpPlZlcnNpb24gMC4yIC0gMjMgTWFyY2ggMjAwNi4gTnVtZXJvdXMgYnVnIGZpeGVzLiBQZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMuIE1lbW9yeSBmb290cHJpbnQgb3B0aW1pemF0aW9ucy4gTm93IHVzZXMgdGhlIENNUyAwLjEyIE1vZHVsZSBBUEkuPC9saT4NCjxsaT5WZXJzaW9uIDAuMS41IC0gMTcgTm92ZW1iZXIgMjAwNS4gSW5pdGlhbCBSZWxlYXNlLiBKZXN1cywgdGhhdCB0b29rIGEgbG9uZyB0aW1lLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjEgLSAxOSBNYXJjaCAyMDA1LiBQcm9qZWN0IEluaXRpYXRpb24uPC9saT4NCjwvdWw+JzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnTWFrZSBzdXJlIHRvIHNldCB0aGUgJnF1b3Q7TW9kaWZ5IENhdGFsb2cgU2V0dGluZ3MmcXVvdDsgcGVybWlzc2lvbiBvbiB1c2VycyB3aG8gd2lsbCBiZSBhZG1pbmlzdGVyaW5nIHRoZSBjYXRhbG9nLic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjEwOTQxMTQ0MDQuMTIwNjYzNTYwMy4xMjE3MDQzNjQ2LjEyMTcwNDg3NDUuNTInOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjE2ODMwNzU0LjQwLjMxLnV0bWNzcj1nb29nbGV8dXRtY2NuPShvcmdhbmljKXx1dG1jbWQ9b3JnYW5pY3x1dG1jdHI9Y21zIG1hZGUgc2ltcGxlJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ25hbWVpbWFnZXMnXSA9ICdCaWxkZXInOwokbGFuZ1snbmFtZWZpbGVzJ10gPSAnRGF0ZWllbic7CiRsYW5nWyduYW1lZmlsZSddID0gJ0RhdGVpJzsKJGxhbmdbJ2RlbGV0ZWltYWdlJ10gPSAnQmlsZGVyIGwmb3VtbDtzY2hlbic7CiRsYW5nWydkZWxldGVmaWxlJ10gPSAnRGF0ZWkgbCZvdW1sO3NjaGVuJzsKJGxhbmdbJ093bmVyJ10gPSAnRWlnZW50JnV1bWw7bWVyJzsKJGxhbmdbJ0NhdGFsb2dJdGVtJ10gPSAnRWludHJhZ3MtS2F0YWxvZyc7CiRsYW5nWyduYW1lcGFnZSddID0gJ1NlaXRlJzsKJGxhbmdbJ1Blcm1pc3Npb25zJ10gPSAnQmVyZWNodGlndW5nZW4nOwokbGFuZ1snU3ViJ10gPSAnVW50ZXIgLSc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfaXRlbV9zb3J0X29yZGVyMiddID0gJ1NvcnRpZXJyZWloZW5mb2xnZSBkZXIgRWludHImYXVtbDtnZSc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfaXRlbXNfcGVyX3BhZ2UyJ10gPSAnRWludHImYXVtbDtnZSBwcm8gU2VpdGUnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2NhdGVnb3J5X3JlY3Vyc2UyJ10gPSAnRWlnZW5zY2hhZnRlbiBkZXIgQW56ZWlnZSc7CiRsYW5nWyd3aGljaF9hdHRyaWJ1dGVzJ10gPSAnV2VsY2hlIEF0cmlidXRlIHNvbGxlbiBpbSBLYXRhbG9nIGFuZ2V6ZWlndCB3ZXJkZW4nOwokbGFuZ1snbmF2VGFiJ10gPSAnIHwgJzsKJGxhbmdbJ25lZWRwZXJtaXNzaW9uJ10gPSAnU2llIG0mdXVtbDtzc2VuICVzIHNldHplbiwgdW0gZGFzIHp1IHR1bi4nOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnS2F0YWxvZyc7CiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnS2F0YWxvZ2VpbnN0ZWxsdW5nZW4gdmVyd2FsdGVuJzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdXb2xsZW4gU2llICVzIHdpcmtsaWNoIGwmb3VtbDtzY2hlbj8nOwokbGFuZ1sndW5pcXVlY29kZSddID0gJ0VpbmRldXRpZ2VyIENvZGUnOwokbGFuZ1sndGVtcGxhdGVsaXN0J10gPSAnVW50ZXJ0ZW1wbGF0ZXMnOwokbGFuZ1snbGlzdHRlbXBsJ10gPSAnVW50ZXJ0ZW1wbGF0ZXMgdmVyd2FsdGVuJzsKJGxhbmdbJ3RpdGxlX2ZpZWxkX3R5cGUnXSA9ICdGZWxkdHlwJzsKJGxhbmdbJ3RpdGxlX3NlbGVjdF92YWx1ZXMnXSA9ICdXZXJ0JzsKJGxhbmdbJ3RpdGxlX2l0ZW1fdGFiJ10gPSAnRWlnZW5zY2hhZnRlbiBkZXMgRWludHJhZ3MnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfdGFiJ10gPSAnRWlnZW5zY2hhZnRlbiBkZXIgS2F0ZWdvcmllJzsKJGxhbmdbJ3RpdGxlX3ByaW50YWJsZV90YWInXSA9ICdFaW5zdGVsbHVuZ2VuIGRlcyBkcnVja2JhcmVuIEthdGFsb2dzJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2VfdGFiJ10gPSAnQmlsZGdyJm91bWw7JnN6bGlnO2UgZGVyIEVpbnRyJmF1bWw7Z2UnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2VfdGFiJ10gPSAnRWluc3RlbGx1bmdlbiBkZXIgS2F0ZWdvcmllLVNlaXRlJzsKJGxhbmdbJ3RpdGxlX3BhdGhfdGFiJ10gPSAnUGZhZGUnOwokbGFuZ1sndGl0bGVfZGVsZXRlJ10gPSAnTCZvdW1sO3NjaGVuPyc7CiRsYW5nWyd0aXRsZV9maWxlX3RhYiddID0gJ0RhdGVpZWluc3RlbGx1bmdlbiBmJnV1bWw7ciBFaW50ciZhdW1sO2dlJzsKJGxhbmdbJ3RpdGxlX2ltYWdlX3RhYiddID0gJ1dlaXRlcmUgQmlsZGVpbnN0ZWxsdW5nZW4nOwokbGFuZ1sndGl0bGVfaXRlbV90ZW1wbGF0ZV92YXJzJ10gPSAnVmFyaWFibGVuIGRlcyBFaW50cmFncy1UZW1wbGF0ZXMnOwokbGFuZ1sndGl0bGVfY2F0X3RlbXBsYXRlX3ZhcnMnXSA9ICdWYXJpYWJsZW4gZGVzIEthdGVnb3JpZS1UZW1wbGF0ZXMnOwokbGFuZ1sndGl0bGVfY2F0YWxvZ190ZW1wbGF0ZV92YXJzJ10gPSAnS2F0YWxvZy1UZW1wbGF0ZS1WYXJpYWJsZW4nOwokbGFuZ1sndGl0bGVfY29tcGFyZV90ZW1wbGF0ZV92YXJzJ10gPSAnVmVyZ2xlaWNocy1UZW1wbGF0ZS1WYXJpYWJsZW4nOwokbGFuZ1sndGl0bGVfZmVhdHVyZV90ZW1wbGF0ZV92YXJzJ10gPSAnRmVhdHVyZXMtVGVtcGxhdGUtVmFyaWFibGVuJzsKJGxhbmdbJ3RpdGxlX3Nob3dfb25seV9leGlzdGluZ19pbWFnZXMnXSA9ICdGZWhsZW5kZSBCaWxkZXIgbmljaHQgbWl0IGVpbnNjaGxpZSZzemxpZztlbic7CiRsYW5nWyd0aXRsZV9zaG93X29ubHlfZXhpc3RpbmdfaW1hZ2VzX2hlbHAnXSA9ICdXZW5uIGRhcyBCaWxkIGV4aXN0aWVydCwgd2lyZCBtaXQgZGllc2VyIEZ1bmt0aW9uIG51ciBkaWUgUmVmZXJlbnogYXVmIGRhcyBCaWxkIGluIGRpZSBMaXN0ZSBhdWZnZW5vbW1lbi48YnIgLz4oTm9ybWFsZXJ3ZWlzZSBpc3QgZGFzIG5pY2h0IHNjaGxlY2h0LCBhYmVyIHdlbm4gU2llIHdlbm4gU2llIGNsZXZlcmUgU2FjaGVuIHdpZSBJbWFnZS08YnIgLz5BcnJheS1JbmRpemVzIHZlcndlbmRlbiwga2FubiBkaWVzIFByb2JsZW1lIHZlcnVyc2FjaGVuLiknOwokbGFuZ1sndGl0bGVfZmx1c2hfY2F0cyddID0gJ1p3aXNjaGVuc3BlaWNoZXIgZGVyIEthdGVnb3JpZS1TZWl0ZSBsJm91bWw7c2NoZW4nOwokbGFuZ1sndGl0bGVfZmx1c2hfY2F0c19oZWxwJ10gPSAnV2VubiBpbiBlaW5lciBLYXRlZ29yaWUgZWluZSBzZWhyIGdybyZzemxpZztlIEFuemFobCB2b24gRWludHImYXVtbDtnZW48YnIgLz5hbmdlemVpZ3Qgd2VyZGVuIHNvbGwsIGthbm4gZXMgYmVpIGJlc3RpbW10ZW4gUEhQLUluc3RhbGxhdGlvbmVuPGJyIC8+ZGF6dSBrb21tZW4sIGRhc3MgZGllIFNlaXRlIG5pY2h0IGtvcnJla3QgYW5nZXplaWd0IHdpcmQuIEFrdGl2aWVyZW4gU2llIGRpZXNlIEJveCwgdW0gZGFzIFByb2JsZW0genUgYmVoZWJlbi4nOwokbGFuZ1sndGl0bGVfaXRlbV9maWxlX3R5cGVzJ10gPSAnRXJsYXVidGUgRGF0ZWl0eXBlbic7CiRsYW5nWyd0aXRsZV9pbWFnZV91cGxvYWRfcGF0aCddID0gJ09ydCBmJnV1bWw7ciBob2NoZ2VsYWRlbmUgQmlsZGRhdGVpZW4nOwokbGFuZ1sndGl0bGVfZmlsZV91cGxvYWRfcGF0aCddID0gJ09ydCBmJnV1bWw7ciBhbmRlcmUgaG9jaGdlbGFkZW5lIEFydGlrZWwtRGF0ZWllbic7CiRsYW5nWyd0aXRsZV9pbWFnZV9wcm9jX3BhdGgnXSA9ICdPcnQgZiZ1dW1sO3IgYmVhcmJlaXRldGUgQmlsZGVyIChUaHVtYm5haWxzLCBza2FsaWVydGUgQmlsZGVyLCB1c3cuKSc7CiRsYW5nWydwYXRoX2hlbHAnXSA9ICdZb3UgY2FuIHNwZWNpZnkgd2hlcmUgQ2F0YWxvZ2VyIHN0b3JlcyBmaWxlcy4gVGhlc2UgcGF0aHMgYXJlIHJlbGF0aXZlIHRvIHRoZSA8aT51cGxvYWRzX3BhdGg8L2k+IGRlZmluZWQgaW4geW91ciBjb25maWcucGhwPGJyIC8+Tk9URTogSWYgeW91IGNoYW5nZSB0aGVzZSBwYXRocyBhZnRlciBmaWxlcyBvciBpbWFnZXMgaGF2ZSBiZWVuIHVwbG9hZGVkLCBDYXRhbG9nZXIgd2lsbCBsb3NlIHRoZSBhbHJlYWR5LXVwbG9hZGVkIGFzc2V0cyAodGhleSB3aWxsIHN0aWxsIGJlIHRoZXJlLCBidXQgQ2F0YWxvZ2VyIHdpbGwgbm90IGtub3cgYWJvdXQgdGhlbSwgc28geW91IHdpbGwgbmVlZCB0byByZS11cGxvYWQgdGhlbSBmb3IgQ2F0YWxvZ2VyIHRvIGZpZ3VyZSBpdCBvdXQpLic7CiRsYW5nWydjYXRhbG9nZXInXSA9ICdLYXRhbG9nJzsKJGxhbmdbJ3RpdGxlX2F0dHJfb3JkZXJfYnknXSA9ICdTb3J0aWVydW5nJzsKJGxhbmdbJ3RpdGxlX2F0dHJfYWxpYXMnXSA9ICdBdHRyaWJ1dC1BbGlhcyAoU21hcnR5LWZyZXVuZGxpY2gpJzsKJGxhbmdbJ3RpdGxlX2F0dHJfbGVuZ3RoJ10gPSAnTCZhdW1sO25nZSonOwokbGFuZ1sndGl0bGVfYXR0cl9kZWZhdWx0J10gPSAnVm9yZWluc3RlbGx0ZXIgV2VydCc7CiRsYW5nWyd0aXRsZV9hdHRyX2xlbmd0aF9oZWxwJ10gPSAnKCpEaWUgTCZhdW1sO25nZSBoYXQga2VpbmUgQXVzd2lya3VuZ2VuIGF1ZiBUZXh0YmVyZWljaGUpJzsKJGxhbmdbJ3RleHQnXSA9ICdUZXh0JzsKJGxhbmdbJ2Ryb3Bkb3duJ10gPSAnRHJvcGRvd24nOwokbGFuZ1sndGV4dGFyZWEnXSA9ICdUZXh0IEFyZWEnOwokbGFuZ1snY2hlY2tib3gnXSA9ICdDaGVja2JveCc7CiRsYW5nWydpdGVtX3BhZ2UnXSA9ICdFaW50cmFncy1TZWl0ZSc7CiRsYW5nWydjYXRlZ29yeV9wYWdlJ10gPSAnS2F0ZWdvcmllLVNlaXRlJzsKJGxhbmdbJ2NhdGFsb2dfcHJpbnRhYmxlJ10gPSAnS2F0YWxvZ2RydWNrJzsKJGxhbmdbJ2NhdGFsb2dfZGF0YXNoZWV0J10gPSAnS2F0YWxvZy1EYXRlbmJsYXR0JzsKJGxhbmdbJ2NhdGFsb2dfc2hvcnRfbGlzdCddID0gJ0ZlYXR1cmUtTGlzdGUnOwokbGFuZ1snaXRlbV9jb21wYXJpc29uJ10gPSAnRWludHJhZ3MtVmVyZ2xlaWNoJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtX3NvcnRfb3JkZXInXSA9ICdTb3J0aWVycmVpaGVuZm9sZ2UgZGVyIEVpbnRyJmF1bWw7Z2UnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2l0ZW1zX3Blcl9wYWdlJ10gPSAnQW56YWhsIGRlciBFaW50ciZhdW1sO2dlIHBybyBTZWl0ZSc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfY2F0ZWdvcnlfcmVjdXJzZSddID0gJ1ZlcmhhbHRlbiBkZXIgS2F0ZWdvcmllLUFuemVpZ2UnOwokbGFuZ1sndGl0bGVfaXRlbV9zb3J0X29yZGVyJ10gPSAnVm9yZWluZ2VzdGVsbHRlIFNvcnRpZXJyZWloZW5mb2xnZSBmJnV1bWw7ciBkaWUgRWludHImYXVtbDtnZSc7CiRsYW5nWyd0aXRsZV9wcmludGFibGVfc29ydF9vcmRlciddID0gJ1ZvcmVpbmdlc3RlbGx0ZSBTb3J0aWVycmVpaGVuZm9sZ2UgZiZ1dW1sO3IgZGVuIEthdGFsb2dkcnVjayc7CiRsYW5nWyd0aXRsZV9pdGVtc19wZXJfcGFnZSddID0gJ1ZvcmVpbmdlc3RlbGx0ZSBBbnphaGwgZGVyIEVpbnRyJmF1bWw7Z2UgcHJvIFNlaXRlJzsKJGxhbmdbJ3RpdGxlX2F2YWlsX2F0dHJzJ10gPSAnRiZ1dW1sO3IgZGFzIFRlbXBsYXRlIHZlcmYmdXVtbDtnYmFyZSBFaWdlbnNjaGFmdGVuIGRlciBFaW50ciZhdW1sO2dlJzsKJGxhbmdbJ3RpdGxlX2F2YWlsX2ltYXR0cnMnXSA9ICdGJnV1bWw7ciBkYXMgVGVtcGxhdGUgdmVyZiZ1dW1sO2diYXJlIEJpbGRlciBkZXIgRWludHImYXVtbDtnZSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfaGVybyddID0gJ0JpbGRnciZvdW1sOyZzemxpZztlIGYmdXVtbDtyIGRpZSBFaW50cmFncy1TZWl0ZSAoQnJlaXRlIGluIFBpeGVsKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfdGh1bWJuYWlsJ10gPSAnR3Imb3VtbDsmc3psaWc7ZSBkZXIgVm9yc2NoYXViaWxkZXIgZiZ1dW1sO3IgZGllIEVpbnRyYWdzLVNlaXRlIChCcmVpdGUgaW4gUGl4ZWwpJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV9jYXRlZ29yeSddID0gJ0dyJm91bWw7JnN6bGlnO2UgZGVyIFZvcnNjaGF1YmlsZGVyIGYmdXVtbDtyIGRpZSBFaW50ciZhdW1sO2dlIGF1ZiBkZXIgS2F0ZWdvcmllLVNlaXRlIChCcmVpdGUgaW4gUGl4ZWwpJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV9jYXRhbG9nJ10gPSAnR3Imb3VtbDsmc3psaWc7ZSBkZXIgVm9yc2NoYXViaWxkZXIgZiZ1dW1sO3IgRWludHImYXVtbDtnZSBhdWYgZGVyIEthdGFsb2ctU2VpdGUgKEJyZWl0ZSBpbiBQaXhlbCknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV9oZXJvJ10gPSAnQmlsZGdyJm91bWw7JnN6bGlnO2UgZiZ1dW1sO3IgZGllIEthdGVnb3JpZS1TZWl0ZSAoQnJlaXRlIGluIFBpeGVsKSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9pbWFnZV9zaXplX3RodW1ibmFpbCddID0gJ0dyJm91bWw7JnN6bGlnO2UgZGVyIFZvcnNjaGF1YmlsZGVyIGYmdXVtbDtyIGRpZSBLYXRlZ29yaWUtU2VpdGUgKEJyZWl0ZSBpbiBQaXhlbCknOwokbGFuZ1sndGl0bGVfdGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSAnOwokbGFuZ1sndGl0bGVfdGVtcGxhdGVfdHlwZSddID0gJ1RlbXBsYXRlLVR5cCc7CiRsYW5nWyd0aXRsZV90aXRsZSddID0gJ1RpdGVsJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2VfY291bnQnXSA9ICdNYXhpbWFsZSBBbnphaGwgZGVyIEFuemVpZ2VuIGYmdXVtbDtyIGplZGVuIEVpbnRyYWcnOwokbGFuZ1sndGl0bGVfaXRlbV9maWxlX2NvdW50J10gPSAnTWF4aW1hbGUgQW56YWhsIGRlciBhbmRlcmVuIERhdGVpZW4sIGRpZSBqZWRlbSBFaW50cmFnIHp1Z2VvcmRuZXQgd2VyZGVuIGsmb3VtbDtubmVuJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX2NvdW50J10gPSAnTWF4aW1hbGUgQW56YWhsIGRlciBCYW5uZXJiaWxkZXIgZiZ1dW1sO3IgamVkZSBLYXRlZ29yaWVzZWl0ZSc7CiRsYW5nWyd0aXRsZV9pdGVtX2F0dHJpYnV0ZXNfaGVscCddID0gJ0plZGUgaGllciBlaW5nZWdlYmVuZSBFaWdlbnNjaGFmdCB3aXJkIGRlciBUaXRlbCBlaW5lcyBGZWxkZXMgc2VpbiwgZGVuIHp1ciBCZXNjaHJlaWJ1bmcgZWluZXMgc3BlemllbGxlbiBFaW50cmFncyB2ZXJ3ZW5kZXQgd2VyZGVuIGthbm4uIERpZXNlcyBGZWxkIHdpcmQgZGFubiB6dXNhbW1lbiBtaXQgZGllc2VtIEVpbnRyYWcgYW5nZXplaWd0LiBadXIgQW56ZWlnZSBkaWVzZXIgRWlnZW5zY2hhZnRlbiBtJnV1bWw7c3NlbiBTaWUgenV2b3IgSWhyIFRlbXBsYXRlIGFrdHVhbGlzaWVyZW4uIFVtIGVpbmUgYmVyZWl0cyBleGlzdGllcmVuZGUgRWlnZW5zY2hhZnQgenUgJmF1bWw7bmRlcm4sIGwmb3VtbDtzY2hlbiBTaWUgZWluZSBiZXJlaXRzIGV4aXN0aWVyZW5kZSBFaWdlbnNjaGFmdCAgb2RlciAmdXVtbDtiZXJzY2hyZWliZW4gZGllc2UgbWl0IGRlbSBnZXcmdXVtbDtuc2NodGVuIFdlcnQuJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2F0dHJpYnV0ZXNfaGVscCddID0gJ0plZGUgaGllciBlaW5nZWdlYmVuZSBFaWdlbnNjaGFmdCB3aXJkIGRlciBUaXRlbCBlaW5lcyBGZWxkZXMgc2VpbiwgZGVuIHp1ciBCZXNjaHJlaWJ1bmcgZWluZXIgYmVzdGltbXRlbiBLYXRlZ29yaWUgdmVyd2VuZGV0IHdlcmRlbiBrYW5uLiBEaWVzZXMgRmVsZCB3aXJkIGRhbm4gYXVmIGRlciBLYXRlZ29yaWVzZWl0ZSBhbmdlemVpZ3QuIFp1ciBBbnplaWdlIGRpZXNlciBFaWdlbnNjaGFmdGVuIG0mdXVtbDtzc2VuIFNpZSB6dXZvciBJaHIgVGVtcGxhdGUgYWt0dWFsaXNpZXJlbi4gVW0gZWluZSBiZXJlaXRzIGV4aXN0aWVyZW5kZSBFaWdlbnNjaGFmdCB6dSAmYXVtbDtuZGVybiwgbCZvdW1sO3NjaGVuIFNpZSBkaWUgYmVyZWl0cyBleGlzdGllcmVuZGUgRWlnZW5zY2hhZnQgIG9kZXIgJnV1bWw7YmVyc2NocmVpYmVuIGRpZXNlIG1pdCBkZW0gZ2V3JnV1bWw7bnNjaHRlbiBXZXJ0Lic7CiRsYW5nWyd0aXRsZV9jYXRhbG9nX2F0dHJpYnV0ZXNfaGVscCddID0gJ0plZGUgaGllciBlaW5nZWdlYmVuZSBFaWdlbnNjaGFmdCB3aXJkIGRlciBUaXRlbCBlaW5lcyBGZWxkZXMgc2VpbiwgZGVuIFNpZSB6dXIgQmVzY2hyZWlidW5nIGRlcyBnZXNhbXRlbiBLYXRhbG9ncyB2ZXJ3ZW5kZW4gayZvdW1sO25uZW4uIERpZXNlcyBGZWxkIHdpcmQgZGFubiBhdWYgZGVyIGRydWNrYmFyZW4gS2F0YWxvZ3NlaXRlIGFuZ2V6ZWlndC4gWnVyIEFuemVpZ2UgZGllc2VyIEVpZ2Vuc2NoYWZ0ZW4gbSZ1dW1sO3NzZW4gU2llIHp1dm9yIElociBUZW1wbGF0ZSBha3R1YWxpc2llcmVuLiBVbSBlaW5lIGJlcmVpdHMgZXhpc3RpZXJlbmRlIEVpZ2Vuc2NoYWZ0IHp1ICZhdW1sO25kZXJuLCBsJm91bWw7c2NoZW4gU2llIGRpZSBiZXJlaXRzIGV4aXN0aWVyZW5kZSBFaWdlbnNjaGFmdCAgb2RlciAmdXVtbDtiZXJzY2hyZWliZW4gZGllc2UgbWl0IGRlbSBnZXcmdXVtbDtuc2NodGVuIFdlcnQuJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3NvcnQnXSA9ICdTb3J0aWVycmVpaGVuZm9sZ2UgZGVyIEVpbnRyJmF1bWw7Z2UgYXVmIGRlciBLYXRlZ29yaWUtU2VpdGUnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZSddID0gJ1ZvcmVpbmdlc3RlbGx0ZXMgVmVyaGFsdGVuIGYmdXVtbDtyIGRpZSBLYXRlZ29yaWUtQW56ZWlnZSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2l0ZW1zX2FsbCddID0gJ1NjaGxpZSZzemxpZzt0IGFsbGUgRWludHImYXVtbDtnZSBpbiBkZXIgS2F0ZWdvcmllIGVpbiAoYXVjaCBkaWUgRWludHImYXVtbDtnZSBpbiBVbnRlci1LYXRlZ29yaWVuKSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2l0ZW1zX29uZSddID0gJ1NjaGxpZSZzemxpZzt0IGFsbGUgRWludHImYXVtbDtnZSBpbiBkZXIgS2F0ZWdvcmllIGVpbiAoYWJlciBuaWNodCBkaWUgRWludHImYXVtbDtnZSBpbiBVbnRlci1LYXRlZ29yaWVuKSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2NhdGVnb3JpZXNfYWxsJ10gPSAnU2NobGllJnN6bGlnO3QgYWxsZSBLYXRlZ29yaWVuIGluIGRpZXNlciBLYXRlZ29yaWUgZWluIChhdWNoIGRpZSBLYXRlZ29yaWVuIGluIFVudGVyLUthdGVnb3JpZW4pJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfY2F0ZWdvcmllc19vbmUnXSA9ICdTY2hsaWUmc3psaWc7dCBhbGxlIEthdGVnb3JpZW4gaW4gZGllc2VyIEthdGVnb3JpZSBlaW4gKGFiZXIgbmljaHQgZGllIEthdGVnb3JpZW4gaW4gVW50ZXItS2F0ZWdvcmllbiknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9taXhlZF9hbGwnXSA9ICdTY2hsaWUmc3psaWc7dCBhbGxlIEVpbnRyJmF1bWw7Z2UgdW5kIEthdGVnb3JpZW4gaW4gZGllc2VyIEthdGVnb3JpZSBlaW4gKGF1Y2ggZGllIEVpbnRyJmF1bWw7Z2UgdW5kIEthdGVnb3JpZW4gaW4gVW50ZXItS2F0ZWdvcmllbiknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9taXhlZF9vbmUnXSA9ICdTY2hsaWUmc3psaWc7dCBhbGxlIEVpbnRyJmF1bWw7Z2UgdW5kIEthdGVnb3JpZW4gaW4gZGllc2VyIEthdGVnb3JpZSBlaW4gKGFiZXIgbmljaHQgZGllIEVpbnRyJmF1bWw7Z2UgdW5kIEthdGVnb3JpZW4gaW4gVW50ZXItS2F0ZWdvcmllbiknOwokbGFuZ1sndGl0bGVfc2hvd19taXNzaW5nX2ltYWdlcyddID0gJ0VpbiAmcXVvdDtObyBJbWFnZSZxdW90Oy1CaWxkIGYmdXVtbDtyIGZlaGxlbmRlIEJpbGRlciBhbnplaWdlbic7CiRsYW5nWyd0aXRsZV9zaG93X21pc3NpbmdfaW1hZ2VzX2xvbmcnXSA9ICdaZWlndCBlaW4gYmVzdGltbXRlcyAmcXVvdDtObyBJbWFnZSZxdW90Oy1CaWxkLCB3ZW5uIEJpbGRlciBmZWhsZW4gKGFuZGVyZW5mYWxscyB3aXJkIGVpbiB0cmFuc3BhcmVudGVzIEJpbGQgbWl0IDEgUGl4ZWwgR3Imb3VtbDsmc3psaWc7ZSB2ZXJ3ZW5kZXQpLic7CiRsYW5nWyduYXR1cmFsX29yZGVyJ10gPSAnTmF2aWdhdGlvbnNyZWloZW5mb2xnZSc7CiRsYW5nWydhbHBoYV9vcmRlciddID0gJ0FscGhhYmV0aXNjaGUgUmVpaGVuZm9sZ2UnOwokbGFuZ1snbWFuYWdlcHJlZnMnXSA9ICdFaW5zdGVsbHVuZ2VuIHZlcndhbHRlbic7CiRsYW5nWydtYW5hZ2VhdHRycyddID0gJ0JlbnV0emVyZGVmaW5pZXJ0ZSBFaWdlbnNjaGFmdGVuIHZlcndhbHRlbic7CiRsYW5nWydnbG9iYWxvcHMnXSA9ICdHbG9iYWxlIEthdGFsb2ctT3B0aW9uZW4nOwokbGFuZ1snYWRkdGVtcGxhdGUnXSA9ICdFaW4gbmV1ZXMgVW50ZXItVGVtcGxhdGUgaGluenVmJnV1bWw7Z2VuJzsKJGxhbmdbJ3JlaW1wb3J0dGVtcGxhdGVzJ10gPSAnQmVpc3BpZWwtVW50ZXItVGVtcGxhdGVzIGVybmV1dCBpbXBvcnRpZXJlbic7CiRsYW5nWydyZWltcG9ydGVkJ10gPSAnRGllIEJlaXNwaWVsLVVudGVyLVRlbXBsYXRlcyB3dXJkZW4gaW1wb3J0aWVydC4nOwokbGFuZ1sndGVtcGxhdGV1cGRhdGVkJ10gPSAnVGVtcGxhdGUgaGluenVnZWYmdXVtbDtndC9ha3R1YWxpc2llcnQuJzsKJGxhbmdbJ3RlbXBsYXRlZGVsZXRlZCddID0gJ1RlbXBsYXRlIGdlbCZvdW1sO3NjaHQuJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ0VpbnN0ZWxsdW5nZW4gYWt0dWFsaXNpZXJ0Lic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bHZlcnNpb24gJXMgaW5zdGFsbGllcnQuJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWwgYXVmIFZlcnNpb24gJXMgYWt0dWFsaXNpZXJ0Lic7CiRsYW5nWydiYWRmaWxlJ10gPSAnRmlsZSAmcXVvdDslcyZxdW90OyBpcyBub3QgYW4gYWNjZXB0YWJsZSBmb3JtYXQuJzsKJGxhbmdbJ2JhZGltYWdlJ10gPSAnUHJvYmxlbSB1cGxvYWRpbmcgJnF1b3Q7JXMmcXVvdDsgKGNoZWNrIGZpbGUgc2l6ZSBhbmQvb3Igc2VydmVyIHBlcm1pc3Npb25zKS4nOwokbGFuZ1snYmFkaW1hZ2Vmb3JtYXQnXSA9ICcmcXVvdDslcyZxdW90OyBpcyBub3QgdmFsaWQuIE9ubHkganBlZ3MgYXJlIHN1cHBvcnRlZCBmb3IgdGhlIHRpbWUgYmVpbmcuJzsKJGxhbmdbJ3VwbG9hZGVkJ10gPSAnRmlsZSAmcXVvdDslcyZxdW90OyB1cGxvYWRlZCBmb3IgaXRlbSAlcy4nOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bCBkZWluc3RhbGxpZXJ0Lic7CiRsYW5nWydhdHRyc3VwZGF0ZWQnXSA9ICdFaWdlbnNjaGFmdGVuIGFrdHVhbGlzaWVydC4nOwokbGFuZ1snbm9nbG9iYWxjaGFuZ2UnXSA9ICdCaXR0ZSBuaWNodCB2ZXImYXVtbDtuZGVybic7CiRsYW5nWydnbG9iYWxseXVwZGF0ZWQnXSA9ICdEaWUgJkF1bWw7bmRlcnVuZ2VuIHd1cmRlbiBnbG9iYWwgYW5nZXdlbmRldC4nOwokbGFuZ1snZWRpdHRlbXBsYXRlJ10gPSAnVGVtcGxhdGUgYmVhcmJlaXRlbic7CiRsYW5nWydzdWJ0ZW1wbGF0ZXMnXSA9ICdLYXRhbG9nLVVudGVydGVtcGxhdGVzJzsKJGxhbmdbJ25leHQnXSA9ICc6JnJhcXVvOyc7CiRsYW5nWydwcmV2J10gPSAnJmxhcXVvOzonOwokbGFuZ1snZWRpdCddID0gJ0JlYXJiZWl0ZW4nOwokbGFuZ1snZGVsZXRlJ10gPSAnTCZvdW1sO3NjaGVuJzsKJGxhbmdbJ25vdGVtcGxhdGVzJ10gPSAnRXMgc2luZCBrZWluZSBVbnRlcnRlbXBsYXRlcyBpbnN0YWxsaWVydCEnOwokbGFuZ1snaGVscHRleHQnXSA9ICc8aDM+V2FzIG1hY2h0IGRpZXNlcyBNb2R1bD88L2gzPg0KPHA+TWl0IGRpZXNlbSBNb2R1bCBrJm91bWw7bm5lbiBTaWUgT25saW5lLUthdGFsb2dlIGVyc3RlbGxlbi4gWnVtIGVpbmVuIGJlc3RlaGVuIEthdGFsb2dlIGF1cyBLYXRhbG9nLUVpbnRyJmF1bWw7Z2VuLiBEYXMgayZvdW1sO25uZW4gUHJvZHVrdGUsIEt1bnN0d2Vya2Ugb2RlciAmYXVtbDtobmxpY2hlcyBzZWluLiBadW0gYW5kZXJlbiBlbnRoYWx0ZW4gS2F0YWxvZ2UgZW50c3ByZWNoZW5kZSBLYXRhbG9nLUthdGVnb3JpZW4uIERpZXNlIHVudGVydGVpbGVuIGRlbiBLYXRhbG9nIGluIGJlc3RpbW10ZSBLYXRlZ29yaWVuIG9kZXIgYW5kZXJlIG5hdCZ1dW1sO3JsaWNoZSBUcmVubnVuZ2VuLjwvcD4NCjxwPkthdGVnb3JpZW4gbGFzc2VuIHNpY2ggbWl0IGRlciBTdGFuZGFyZGluaGFsdHNsaXN0ZSB2b24gQ01TIG1hZGUgc2ltcGxlIGhpZXJhcmNoaXNjaCBkZWZpbmllcmVuLiBEaWUgS2F0ZWdvcmllLVNlaXRlbiBrYW5uIGRpZSBFaW50ciZhdW1sO2dlIGluIGRlciBLYXRlZ29yaWUgdW5kL29kZXIgVW50ZXJrYXRlZ29yaWUgYW56ZWlnZW4sIG9wdGlvbmFsIGF1Y2ggcmVrdXJzaXYgaW4gZGVuIFVudGVya2F0ZWdvcmllbi4gRGllc2VzIFZlcmhhbHRlbiBrYW5uIGpld2VpbHMgcHJvIEthdGVnb3JpZSBlaW5nZXN0ZWxsdCB3ZXJkZW4uPC9wPg0KPHA+RXMgaXN0IGF1Y2ggZGVyIEF1c2RydWNrIGVpbmVzIEthdGFsb2dlcyBtJm91bWw7Z2xpY2guIERpZXNlciBzdGVsbHQgZGVuIGdlc2FtdGVuIEthdGFsb2dpbmhhbHQgYXVmIGVpbmVyIGVpbnplbG5lbiBTZWl0ZSBkYXIgKGFrdHVlbGwgaXN0IGRpZXMgamVkb2NoIHNjaGxlY2h0IGltcGxlbWVudGllcnQgdW5kIHp1ZGVtIHppZW1saWNoIGxhbmdzYW0pLjwvcD4NCjxwPkF1JnN6bGlnO2VyZGVtIGthbm4gZGFzIE1vZHVsIGF1Y2ggaW4gVmVyYmluZHVuZyBtaXQgZGVtICZxdW90O0NvbnRlbnQgQWxpYXNlcyZxdW90Oy1Nb2R1bCBlaW5nZXNldHp0IHdlcmRlbiwgdW0gZWluZW4gS2F0YWxvZy1FaW50cmFnIGluIG1laHJlcmVuIEthdGFsb2drYXRlZ29yaWVuIGFuemVpZ2VuIHp1IGxhc3Nlbi48L3A+DQo8aDM+V2llIHdpcmQgZXMgZWluZ2VzZXR6dD88L2gzPg0KPHA+V2VubiBTaWUgZGllc2VzIE1vZHVsIGluc3RhbGxpZXJlbiwgd2VyZGVuIGRyZWkgbmV1ZSBJbmhhbHRzdHlwZW4gZXJ6ZXVndDogJnF1b3Q7Q2F0YWxvZyBJdGVtJnF1b3Q7ICg9S2F0YWxvZy1FaW50cmFnKSwgJnF1b3Q7Q2F0YWxvZyBDYXRlZ29yeSZxdW90OyAoPUthdGFsb2ctS2F0ZWdvcmllKSB1bmQgJnF1b3Q7UHJpbnRhYmxlIENhdGFsb2cmcXVvdDsgKD1LYXRhbG9nZHJ1Y2spLiBEYXMgYmVkZXV0ZXQsIGRhc3MgU2llIGluIGRlciBBZG1pbmlzdHJhdGlvbiBLYXRhbG9nLUthdGVnb3JpZW4gdW5kIEthdGFsb2ctRWludHImYXVtbDtnZSB3aWUgamVkZSBhbmRlcmUgYmVsaWViaWdlIFNlaXRlIGVyemV1Z2VuIGsmb3VtbDtubmVuLiBLbGlja2VuIFNpZSBhdWYgJnF1b3Q7SW5oYWx0ZSA+IFNlaXRlbiA+IEluaGFsdCBoaW56dWYmdXVtbDtnZW4mcXVvdDsgYXVzLiBEYW5uIGsmb3VtbDtubmVuIFNpZSB1bnRlciBJbmhhbHRzdHlwICZxdW90O0NhdGFsb2cgSXRlbSZxdW90OyBvZGVyICZxdW90O0NhdGFsb2cgQ2F0ZWdvcnkmcXVvdDsgYXVzdyZhdW1sO2hsZW4uPC9wPg0KPGg0PkthdGFsb2ctRWludHImYXVtbDtnZTwvaDQ+DQo8cD5FaW4gS2F0YWxvZy1FaW50cmFnIHdpcmQgZ2VuYXUgc28gaGluenVnZWYmdXVtbDtndCB3aWUgZWluZSBnYW56IG5vcm1hbGUgU2VpdGUgdm9tIFR5cCAmcXVvdDtDb250ZW50JnF1b3Q7LiBMZWRpZ2xpY2ggZGllIERhdGVuZmVsZGVyIGYmdXVtbDtyIGRpZXNlbiBFaW50cmFnIHNpbmQgbmljaHQgZ2VuYXUgZGllIGdsZWljaGVuLiBJbSBSZWl0ZXIgJnF1b3Q7SW1hZ2VzJnF1b3Q7IGsmb3VtbDtubmVuIFNpZSBtZWhyZXJlIEJpbGRlciBmJnV1bWw7ciBlaW5lbiBFaW50cmFnIGhvY2ggbGFkZW4uIFdlbm4gU2llIGRpZSBCaWxkZXIgaG9jaGxhZGVuLCB3aXJkIGRlcmVuIEdyJm91bWw7JnN6bGlnO2UgZiZ1dW1sO3IgZGVuIEthdGFsb2cgYW5nZXBhc3N0LCBlaW4gVm9yc2NoYXViaWxkIGYmdXVtbDtyIGRpZSBTZWl0ZSBkZXIgS2F0YWxvZy1FaW50ciZhdW1sO2dlIHVuZCBkaWUgS2F0ZWdvcmllLVNlaXRlbiBlcnpldWd0LCB1c3cuIERhZiZ1dW1sO3IgaXN0IGVzIGplZG9jaCBlcmZvcmRlcmxpY2gsIGRhc3MgYXVmIElocmVtIEhvc3QgZGllIEdEIExpYiBvZGVyIGVpbiBhbmRlcmVzIFByb2dyYW1tIHp1ciBCaWxkdmVyYXJiZWl0dW5nIGluc3RhbGxpZXJ0IGlzdC4gQWt0dWVsbCB3aXJkIG51ciBkYXMgSlBFRy1Gb3JtYXQgdW50ZXJzdCZ1dW1sO3R6dC48L3A+DQo8aDQ+S2F0YWxvZy1LYXRlZ29yaWVuPC9oND4NCjxwPkVpbmUgS2F0YWxvZy1LYXRlZ29yaWUgd2lyZCB6dXIgT3JnYW5pc2F0aW9uIHZvbiBLYXRhbG9nLUVpbnRyJmF1bWw7Z2VuIGVpbmdlc2V0enQuIEVzIHdpcmQgZWluZSBMaXN0ZSBtaXQgZGVtIGdlc2FtdGVuIEluaGFsdCBkZXMgS2F0YWxvZ3MgYW5nZXplaWd0LiBFaW4gS2F0YWxvZy1FaW50cmFnIGlzdCBudXIgZGFubiBlaW4gVGVpbCBlaW5lciBLYXRhbG9nLUthdGVnb3JpZSwgd2VubiBlciBpbiBkZXIgU2VpdGVuaGllcmFyY2hpZSB1bnRlcmhhbGIgZGllc2VyIEthdGVnb3JpZSBlaW5nZW9yZG5ldCB3dXJkZS4gS2F0ZWdvcmllbiBrJm91bWw7bm5lbiBhdWNoIHdlaXRlcmUgVW50ZXJrYXRlZ29yaWVuIGVudGhhbHRlbi48L3A+DQo8cD5GJnV1bWw7ciBkaWUgS2F0YWxvZy1LYXRlZ29yaWVuIHNpbmQgZWluZSBSZWloZSB2b24gRWluc3RlbGx1bmdlbiB2ZXJmJnV1bWw7Z2JhciwgbWl0IGRlbmVuIGZlc3RnZWxlZ3Qgd2VyZGVuIGthbm4sIHdpZSBkaWUgS2F0ZWdvcmllbiB1bmQgZGllIGluIGlociBlbnRoYWx0ZW5lbiBFaW50ciZhdW1sO2dlIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbGVuOiBpbSBSZWl0ZXIgJnF1b3Q7T3B0aW9uZW4mcXVvdDsgayZvdW1sO25uZW4gU2llIGF1c3cmYXVtbDtobGVuLCB3aWUgdmllbGUgRWludHImYXVtbDtnZSB1bmQvb2RlciBLYXRlZ29yaWVuIHVuZCBpbiB3ZWxjaGVyIFJlaWhlbmZvbGdlIGRpZXNlIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbGVuLCBvYiBlbnR3ZWRlciBudXIgZGllIEVpbnRyJmF1bWw7Z2Ugb2RlciBudXIgZGllIEthdGVnb3JpZW4gb2RlciBiZWlkZXMgYW5nZXplaWd0IHdlcmRlbiBzb2xsZW4gdW5kIHdpZSB2aWVsZSBFYmVuZW4gZWluZXIgS2F0ZWdvcmllIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbGVuLjwvcD4NCjxwPk5laG1lbiB3aXIgenVtIEJlaXNwaWVsIG1hbCBkaWUgZm9sZ2VuZGUgU3RydWt0dXIgYW46PC9wPg0KPG9sPg0KCTxsaT48Yj5Lb3BmYmVrbGVpZHVuZzwvYj4NCgkJPG9sPg0KCQkJPGxpPjxiPk1vZGU8L2I+DQoJCQkgCTxvbD4NCgkJCSAJCTxsaT5GZWRlcmh1dDwvbGk+PGxpPkZpbHpodXQ8L2xpPjxsaT5CYXNlYmFsbG0mdXVtbDt0emU8L2xpPg0KCQkJIAk8L29sPg0KCQkJIDwvbGk+DQoJCSAJPGxpPjxiPkFyYmVpdDwvYj4NCgkJICAgIAk8b2w+DQoJCSAgICAJCTxsaT5TY2h1dHpoZWxtPC9saT48bGk+VGF1Y2hlcmhlbG08L2xpPg0KCQkgICAgCTwvb2w+DQoJCSAgICA8L2xpPg0KCQk8L29sPg0KCTwvbGk+DQo8L29sPg0KPHA+SW4gZGllc2VtIERpYWdyYW1tIGVudHNwcmVjaGVuIGRpZSBmZXR0IGdlZHJ1Y2t0ZW4gRWludHImYXVtbDtnZSBkZW4gS2FsYWxvZy1LYXRlZ29yaWVuIHVuZCBkaWUgZWluZmFjaCBkYXJnZXN0ZWxsdGVuIEVpbnRyJmF1bWw7Z2UgZGVuIEthdGFsb2ctRWludHImYXVtbDtnZS4gSW4gQWJoJmF1bWw7bmdpZ2tlaXQgdm9uIElocmVuIEVpbnN0ZWxsdW5nZW4ga2FubiBkaWUgS2F0ZWdvcmllLVNlaXRlICZxdW90O0tvcGZiZWtsZWlkdW5nJnF1b3Q7IGVudHdlZGVyIG51ciBkaWUgRWludHImYXVtbDtnZSBmJnV1bWw7ciBkaWUgS2F0ZWdvcmllbiAmcXVvdDtNb2RlJnF1b3Q7IHVuZCAmcXVvdDtBcmJlaXQmcXVvdDsgb2RlciBhYmVyIGF1Y2ggZGllIEVpbnRyJmF1bWw7Z2UgZiZ1dW1sO3IgZGllIEthdGVnb3JpZW4gJnF1b3Q7TW9kZSZxdW90OyB1bmQgJnF1b3Q7QXJiZWl0JnF1b3Q7IHVuZCBkZXJlbiBLYXRhbG9nLUVpbnRyJmF1bWw7Z2UgYW56ZWlnZW4uPC9wPg0KPHA+U2llIGsmb3VtbDtubmVuIGpldHp0IGVpbnN0ZWxsZW4sIG9iIGRpZSBFaW50ciZhdW1sO2dlIGluIGlocmVyICZxdW90O25hdCZ1dW1sO3JsaWNoZW4mcXVvdDsgUmVpaGVuZm9sZ2UgKGQuaC4gaW4gZGVyIFJlaWhlbmZvbGdlIGRlciBFaW50ciZhdW1sO2dlIGluIGRlciBDTVNtcy1JbmhhbHRzaGllcmFyY2hpZSksIG9kZXIgaW4gYWxwaGFiZXRpc2NoZXIgUmVpaGVuZm9sZ2UgZGFyZ2VzdGVsbHQgd2VyZGVuLjwvcD4NCjxwPldlbm4gU2llIGluIGVpbmVyIEthdGVnb3JpZSBlaW5lIGdybyZzemxpZztlIEFuemFobCB2b24gRWludHImYXVtbDtnZW4gaGFiZW4sIGsmb3VtbDtubmVuIFNpZSBmZXN0bGVnZW4sIHdpZXZpZWxlIEVpbnRyJmF1bWw7Z2UgYXVmIGVpbmVyIEthdGVnb3JpZXNlaXRlIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbGVuLiBBdWYgZGVyIFNlaXRlIHdlcmRlbiBkYW5uIGF1dG9tYXRpc2NoIExpbmtzIGF1ZiBkaWUgZm9sZ2VuZGVuIFNlaXRlbiBlcnpldWd0LjwvcD4NCjxwPlNpZSBrJm91bWw7bm5lbiBmJnV1bWw7ciBqZWRlIEthdGVnb3JpZXNlaXRlIGdldHJlbm50IGZlc3RsZWdlbiwgaW4gd2VsY2hlciBSZWloZW5mb2xnZSBkaWUgRWludHImYXVtbDtnZSBzb3J0aWVydCwgd2llIHZpZWxlIEViZW5lbiB1bmQgd2llIHZpZWxlIEVpbnRyJmF1bWw7Z2UgcHJvIFNlaXRlIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbGVuLiBEaWVzIGVyZm9sZ3QgaW4gZGVyIEFkbWluaXN0cmF0aW9uIGltIE1lbiZ1dW1sOyAmcXVvdDtFcndlaXRlcnVuZ2VuID4gQ2F0YWxvZ2VyID4gRWluc3RlbGx1bmdlbiB2ZXJ3YWx0ZW4mcXVvdDsuIFdlbm4gU2llIGRpZXMgc3AmYXVtbDt0ZXIgZiZ1dW1sO3IgZGVuIHMmYXVtbDttdGxpY2hlIEthdGFsb2dzZWl0ZW4gJmF1bWw7bmRlcm4gbSZvdW1sO2NodGVuLCBrJm91bWw7bm5lbiBTaWUgZGllcyBpbiBkZXIgQWRtaW5pc3RyYXRpb24gaW0gTWVuJnV1bWw7ICZxdW90O0Vyd2VpdGVydW5nZW4gPiBDYXRhbG9nZXIgPiBHbG9iYWxlIEthdGFsb2ctT3B0aW9uZW4mcXVvdDsgdHVuLjwvcD4NCjxoND5CaWxkZXI8L2g0Pg0KPHA+TWl0IGRlbSBDYXRhbG9nZXItTW9kdWwgayZvdW1sO25uZW4gU2llIGYmdXVtbDtyIGRpZSBLYXRlZ29yaWVzZWl0ZW4sIGRpZSBTZWl0ZW4gbWl0IGRlbiBlaW56ZWxuZW4gRWludHImYXVtbDtnZW4gdW5kIGRpZSBTZWl0ZW4gZGVyIERydWNrYXVzZ2FiZSB1bnRlcnNjaGllZGxpY2hlIEJpbGRnciZvdW1sOyZzemxpZztlbiAgZmVzdGxlZ2VuLiBEaWVzIGVyZm9sZ3QgaW4gZGVyIEFkbWluaXN0cmF0aW9uIGltIE1lbiZ1dW1sOyAmcXVvdDtFcndlaXRlcnVuZ2VuID4gQ2F0YWxvZ2VyID4gRWluc3RlbGx1bmdlbiB2ZXJ3YWx0ZW4mcXVvdDsuPC9wPg0KPHA+V2VubiBTaWUgQmlsZGVyIGhvY2hsYWRlbiwgd2lyZCBkYXMgT3JpZ2luYWwgZWluZ2VsYWdlcnQuIFdlbm4gZGFubiBqZW1hbmQgZWluZSBDYXRhbG9nZXItU2VpdGUgYmVzdWNodCwgd2VyZGVuIGRpZSByZWR1emllcnRlbiBHciZvdW1sOyZzemxpZztlbiBpbiBlaW5lciBzcGV6aWVsbGVuIFVSTCAmdXVtbDtiZXJnZWJlbiwgd2VsY2hlIGRhbm4gYXVmIGVpbiBza2FsaWVydGVzIEJpbGQgdW1nZWxlaXRldCB3aXJkLCBmYWxscyBkaWVzZXMgYmVyZWl0cyBleGlzdGllcnQgYnp3LiB6dW4mYXVtbDtjaHN0IGRhcyBza2FsaWVydGUgQmlsZCBlcnpldWd0LiBEYW1pdCBrJm91bWw7bm5lbiBTaWUgZGllIEdyJm91bWw7JnN6bGlnO2UgZGVyIEJpbGRlciAmYXVtbDtuZGVybiwgb2huZSBkaWVzZSBlcm5ldXQgaG9jaGxhZGVuIHp1IG0mdXVtbDtzc2VuIG9kZXIgZGllc2UgcGVyIGhhbmQgenUgc2thbGllcmVuLjwvcD4NCjxwPkYmdXVtbDtyIGRpZSBCaWxkc2thbGllcnVuZyBpc3QgZXMgZXJmb3JkZXJsaWNoLCBkYXNzIGVudHdlZGVyIEltYWdlTWFnaWNrIG9kZXIgZGllIEdEIGxpYiBmJnV1bWw7ciBJaHJlbiBIb3N0IGluc3RhbGxpZXJ0IGlzdCwgdW5kIGRpZXNlIGluIGRlciBjb25maWcucGhwIHZvbiBDTVMgbWFkZSBzaW1wbGUgZW50c3ByZWNoZW5kIGtvbmZpZ3VyaWVydCB3dXJkZS48L3A+DQo8aDM+RmVhdHVyZS1MaXN0ZW48L2gzPg0KPHA+U2VpdCBWZXJzaW9uIDAuNCBpc3QgZGllIEFuemVpZ2Ugc29nZW5hbm50ZXIgJnF1b3Q7RmVhdHVyZS1MaXN0ZW4mcXVvdDsgbSZvdW1sO2dsaWNoLCB3ZWxjaGUgZWluZSBiZXN0aW1tdGUgQW56YWhsIGRlciB6dWxldHp0IGhpbnp1Z2VmJnV1bWw7Z3RlbiBLYXRhbG9nZWludHImYXVtbDtnZSBvZGVyIGVpbmUgenVmJmF1bWw7bGxpZ2UgQXVzd2FobCBhdXMgYWxsZW4gS2F0YWxvZy1FaW50ciZhdW1sO2dlbiBhbnplaWd0LjwvcD4NCjxoND5GZWF0dXJlLUxpc3RlICZxdW90O3p1bGV0enQgaGluenVnZWYmdXVtbDtndGUgRWludHImYXVtbDtnZSZxdW90OzwvaDQ+DQo8cD5NaXQgZGllc2VtIEZlYXR1cmUgaXN0IGVzIG0mb3VtbDtnbGljaCwgZWluZSBiZXN0aW1tdGUgQW56YWhsIGRlciB6dWxldHp0IGhpbnp1Z2VmJnV1bWw7Z3RlbiBLYXRhbG9nLUVpbnRyJmF1bWw7Z2UgYXVzZ2VoZW5kIHZvbiBlaW5lciBiZXN0aW1tdGVuIFN0ZWxsZSBpbiBkZXIgSGllcmFyY2hpZSBJaHJlciBTZWl0ZSBhbnplaWdlbiB6dSBsYXNzZW4uPC9wPg0KPHA+RGVyIFN5bnRheCBmJnV1bWw7ciBlaW5lIExpc3RlIGRlciB6dWxldHp0IGhpbnp1Z2VmJnV1bWw7Z3RlbiBFaW50ciZhdW1sO2dlIGlzdCBmb2xnZW5kZXI6PC9wPg0KPHA+JmFtcDsjMTIzO2Ntc19tb2R1bGUgbW9kdWxlPSYjMDM5O0NhdGFsb2dlciYjMDM5OyBhY3Rpb249JiMwMzk7cmVjZW50JiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTt9LCB3b2JlaSBzdWJfdGVtcGxhdGUgZGFzIFRlbXBsYXRlIGlzdCwgd2VsY2hlcyB6dW0gUmVuZGVybiBkZXIgTGlzdGUgdmVyd2VuZGV0IHdpcmQuIEVzIGdpYnQgendlaSB3ZWl0ZXJlLCBvcHRpb25hbGUgUGFyYW1ldGVyLCBjb3VudD0mIzAzOTszJiMwMzk7IGFsaWFzPSYjMDM5O3BhZ2VfYWxpYXMmIzAzOTssIHdvYmVpIGNvdW50IGRpZSBBbnphaGwgZGVyIGFuenV6ZWlnZW5kZW4gRWludHImYXVtbDtnZSBtZWludCB1bmQgZGVyIFdlcnQgcGFnZV9hbGlhcyBmJnV1bWw7ciBkZW0gVXJzcHVuZyBkZXIgQW56ZWlnZSBzdGVodCAoei5Cc3AuIGVpbmUgU3RlbGxlIGluIElocmVyIE1lbiZ1dW1sOy1IaWVyYXJjaGllLCB0eXBpc2NoZXJ3ZWlzZSBlaW5lIEthdGVnb3JpZS1TZWl0ZSksIHVudGVyIGRlciBuYWNoIG5ldWVuIEVpbnRyJmF1bWw7Z2VuIGdlc3VjaHQgd2VyZGVuIHNvbGwuIEVpbiBiZXNvbmRlcmVyIFdlcnQgZiZ1dW1sO3IgJnF1b3Q7cGFnZV9hbGlhcyZxdW90OyBpc3QgJnF1b3Q7LyZxdW90OywgbWl0IGRlbSA8aT5hbGxlPC9pPiBTZWl0ZW4gZWluZXIgSG9tZXBhZ2UgdmVyd2VuZGV0IHdlcmRlbi48L3A+DQo8aDQ+RmVhdHVyZS1MaXN0ZSAmcXVvdDtadWZhbGxzLUVpbnRyJmF1bWw7Z2UmcXVvdDs8L2g0Pg0KPHA+RGVyIFN5bnRheCBmJnV1bWw7ciBlaW5lICZxdW90O3p1ZiZhdW1sO2xsaWdlJnF1b3Q7IExpc3RlIGlzdCBmb2xnZW5kZXI6PC9wPg0KPHA+JmFtcDsjMTIzO2Ntc19tb2R1bGUgbW9kdWxlPSYjMDM5O0NhdGFsb2dlciYjMDM5OyBhY3Rpb249JiMwMzk7cmFuZG9tJiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTt9LCB3b2JlaSBzdWJfdGVtcGxhdGUgZGFzIFRlbXBsYXRlIGlzdCwgd2VsY2hlcyB6dW0gUmVuZGVybiBkZXIgTGlzdGUgdmVyd2VuZGV0IHdpcmQuIEVzIGdpYnQgendlaSB3ZWl0ZXJlLCBvcHRpb25hbGUgUGFyYW1ldGVyLCBjb3VudD0mIzAzOTszJiMwMzk7IGFsaWFzPSYjMDM5O3BhZ2VfYWxpYXMmIzAzOTssIHdvYmVpIGNvdW50IGRpZSBBbnphaGwgZGVyIGFuenV6ZWlnZW5kZW4gRWludHImYXVtbDtnZSBtZWludCB1bmQgZGVyIFdlcnQgcGFnZV9hbGlhcyBmJnV1bWw7ciBkZW0gVXJzcHVuZyBkZXIgQW56ZWlnZSBzdGVodCAoei5Cc3AuIGVpbmUgU3RlbGxlIGluIElocmVyIE1lbiZ1dW1sOy1IaWVyYXJjaGllLCB0eXBpc2NoZXJ3ZWlzZSBlaW5lIEthdGVnb3JpZS1TZWl0ZSksIHVudGVyIGRlciBuYWNoIG5ldWVuIEVpbnRyJmF1bWw7Z2VuIGdlc3VjaHQgd2VyZGVuIHNvbGwuIEVpbiBiZXNvbmRlcmVyIFdlcnQgZiZ1dW1sO3IgJnF1b3Q7cGFnZV9hbGlhcyZxdW90OyBpc3QgJnF1b3Q7LyZxdW90OywgbWl0IGRlbSA8aT5hbGxlPC9pPiBTZWl0ZW4gZWluZXIgSG9tZXBhZ2UgdmVyd2VuZGV0IHdlcmRlbi48L3A+DQo8aDM+QW5wYXNzdW5nIHVuZCB3ZWl0ZXJlIFRoZW1lbjwvaDM+DQo8aDQ+RWlnZW5zY2hhZnRlbiBkZXIgS2F0YWxvZy1FaW50ciZhdW1sO2dlPC9oND4NCjxwPkRpZSBTdGFuZGFyZGVpZ2Vuc2NoYWZ0ZW4gZiZ1dW1sO3IgZGllIEthdGFsb2ctRWludHImYXVtbDtnZSBzaW5kIHR5cGlzY2ggZiZ1dW1sO3IgZWluZW4gUHJvZHVrdGthdGFsb2cuICZVdW1sO2JlciBkYXMgTWVuJnV1bWw7ICZxdW90O0Vyd2VpdGVydW5nZW4gPiBDYXRhbG9nZXIgPiBCZW51dHplcmRlZmluaWVydGUgRWlnZW5zY2hhZnRlbiB2ZXJ3YWx0ZW4mcXVvdDsgayZvdW1sO25uZW4gZGllIEVpZ2Vuc2NoYWZ0ZW4gZ2UmYXVtbDtuZGVydCB3ZXJkZW4uIEVzIGhhdCBzaWNoIGFscyBnJnV1bWw7bnN0aWcgZXJ3aWVzZW4sIHdlbm4gU2llIGRpZXNlIEVpZ2Vuc2NoYWZ0ZW4gZmVzdGxlZ2VuLCBiZXZvciBTaWUgbWl0IGRlciBFaW5nYWJlIGRlciBLYXRhbG9nLUVpbnRyJmF1bWw7Z2UgYmVnaW5uZW4uPC9wPg0KPHA+Qml0dGUgYmVhY2h0ZW4gU2llLCBkYXNzIGRpZSB2b24gSWhuZW4gZGVmaW5pZXJ0ZW4gRWlnZW5zY2hhZnRlbiBub2NoIGRlbSBmJnV1bWw7ciBkaWUgS2F0YWxvZy1FaW50ciZhdW1sO2dlIHZlcndlbmRldGVuIFRlbXBsYXRlIGhpbnp1Z2VmJnV1bWw7Z3Qgd2VyZGVuIG0mdXVtbDtzc2VuLiBXZWl0ZXJlIEluZm9ybWF0aW9uZW4gZGF6dSBmaW5kZW4gU2llIGltIGZvbGdlbmRlbiBBYnNjaG5pdHQgJnF1b3Q7QW5wYXNzdW5nIGRlciBUZW1wbGF0ZXMmcXVvdDsuPC9wPg0KPGg0PkVpZ2Vuc2NoYWZ0ZW4gZGVyIEthdGFsb2ctS2F0ZWdvcmllbjwvaDQ+DQo8cD5BdWNoIGYmdXVtbDtyIGRpZSBLYXRlZ29yaWVuIGsmb3VtbDtubmVuIEVpZ2Vuc2NoYWZ0ZW4gZmVzdGdlbGVndCB3ZXJkZW4uIFVuZCBhdWNoIGhpZXIgbSZ1dW1sO3NzZW4gZGllIHZvbiBJaG5lbiBkZWZpbmllcnRlbiBFaWdlbnNjaGFmdGVuIG5vY2ggZGVtIGYmdXVtbDtyIGRpZSBLYXRhbG9nLUthdGVnb3JpZW4gdmVyd2VuZGV0ZW4gVGVtcGxhdGUgaGluenVnZWYmdXVtbDtndCB3ZXJkZW4uIFdlaXRlcmUgSW5mb3JtYXRpb25lbiBkYXp1IGZpbmRlbiBTaWUgaW0gZm9sZ2VuZGVuIEFic2Nobml0dCAmcXVvdDtBbnBhc3N1bmcgZGVyIFRlbXBsYXRlcyZxdW90Oy48L3A+DQo8aDQ+RWlnZW5zY2hhZnRlbiBmJnV1bWw7ciBkaWUgRHJ1Y2thdXNnYWJlPC9oND4NCjxwPldpZSBzb2xsdGUgZXMgYXVjaCBhbmRlcnMgc2VpbiAtIGYmdXVtbDtyIGRpZSBEcnVja2F1c2dhYmUgayZvdW1sO25uZW4gZ2xlaWNoZXJtYSZzemxpZztlbiBFaWdlbnNjaGFmdGVuIGZlc3RnZWxlZ3Qgd2VyZGVuLCBkaWUgZWJlbmZhbGxzIG5vY2ggZGVtIGYmdXVtbDtyIGRpZSBEcnVja2F1c2dhYmUgdmVyd2VuZGV0ZW4gVGVtcGxhdGUgaGluenVnZWYmdXVtbDtndCB3ZXJkZW4gbSZ1dW1sO3NzZW4uIFdlaXRlcmUgSW5mb3JtYXRpb25lbiBkYXp1IGZpbmRlbiBTaWUgaW0gZm9sZ2VuZGVuIEFic2Nobml0dCAmcXVvdDtBbnBhc3N1bmcgZGVyIFRlbXBsYXRlcyZxdW90Oy48L3A+DQo8aDQ+QW5wYXNzdW5nIGRlciBUZW1wbGF0ZXM8L2g0Pg0KPHA+V2VubiBTaWUgc2ljaCBtaXQgZGVyIFZlcndlbmR1bmcgdm9uIFNtYXJ0eS1UZW1wbGF0ZXMgYXVza2VubmVuLCBrJm91bWw7bm5lbiBTaWUgZGFzIExheW91dCBqZWRlciB2b20gQ2F0YWxvZ2VyLU1vZHVsIGdlbmVyaWVydGVuIFNlaXRlbiB2ZXImYXVtbDtuZGVybi4gRGllcyBzb2xsdGUgamVkZW4gRW50d2lja2xlciBnbCZ1dW1sO2NrbGljaCBtYWNoZW4sIGRlciBSZXN0IGRlcyBpbmVmZml6aWVudGVuIENvZGVzIHNpY2hlcmxpY2ggbmljaHQuIEVzIHdlcmRlbiBkcmVpIFRlbXBsYXRlLVR5cGVuIG1pdGdlbGllZmVydDogZWlucyBmJnV1bWw7ciBkaWUgS2F0YWxvZy1FaW50ciZhdW1sO2dlLCBlaW5zIGYmdXVtbDtyIGRpZSBLYXRhbG9nLUthdGVnb3JpZW4gdW5kIGVpbnMgZiZ1dW1sO3IgZGllIERydWNrYXVzZ2FiZS48L3A+DQo8cD5XZW5uIFNpZSBlaW4gVGVtcGxhdGUgYmVhcmJlaXRlbiwgd2lyZCBpbiBkZXIgQWRtaW5pc3RyYXRpb24gZWluZSBMaXN0ZSBkZXIgZiZ1dW1sO3IgZGFzIGpld2VpbGlnZSBUZW1wbGF0ZSB2ZXJmJnV1bWw7Z2JhcmVuIFNtYXJ0eS1UYWdzIGFuZ2V6ZWlndC4gRGFzIGZ1bmt0aW9uaWVydCBqZWRvY2ggbnVyLCB3ZW5uIGRhcyBNb2R1bCB3ZWkmc3psaWc7LCB3ZWxjaGVuIFRlbXBsYXRlLVR5cCBTaWUgZ2VyYWRlIGJlYXJiZWl0ZW4uIFdlbm4gU2llIGRhcyBlcnN0ZSBNYWwgZWluIFRlbXBsYXRlIG1pdCBkZW0gQ2F0YWxvZ2VyLU1vZHVsIGVyc3RlbGxlbiwgd2VyZGVuIGFsbGUgYmVrYW5udGVuIFNtYXJ0eS1UYWdzIGFuZ2V6ZWlndCwgdm9uIGRlbmVuIGplZG9jaCBudXIgZWluaWdlIGVpbmdlc2V0enQgd2VyZGVuIGsmb3VtbDtubmVuLjwvcD4NCjxoMz5TdXBwb3J0PC9oMz4NCjxwPkRpZXNlcyBNb2R1bCBiZWluaGFsdGV0IGtlaW5lbiBrb21tZXJ6aWVsbGVuIFN1cHBvcnQuIFNpZSBrJm91bWw7bm5lbiBqZWRvY2ggJnV1bWw7YmVyIGZvbGdlbmRlIE0mb3VtbDtnbGljaGtlaXRlbiBIaWxmZSB6dSBkZW0gTW9kdWwgZXJoYWx0ZW46PC9wPg0KPHVsPg0KPGxpPkYmdXVtbDtyIGRpZSBsZXR6dGUgVmVyc2lvbiBkaWVzZXMgTW9kdWxzLCBGQVFzLCBkZW0gVmVyc2FuZCBlaW5lcyBGZWhsZXJyZXBvcnRzIG9kZXIgZGVtIEthdWYga29tbWVyemllbGxlbiBTdXBwb3J0IGJlc3VjaGVuIFNpZSBiaXR0ZSBTakdcJiMwMzk7cw0KTW9kdWwtSG9tZXBhZ2UgdW50ZXIgPGEgaHJlZj0iaHR0cDovL3d3dy5jbXNtb2R1bGVzLmNvbSI+Q01TTW9kdWxlcy5jb208L2E+LjwvbGk+DQo8bGk+RWluZSB3ZWl0ZXJlIERpc2t1c3Npb24genUgZGllc2VtIE1vZHVsIGlzdCBhdWNoIGluIGRlbiBGb3JlbiB2b24gPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGU8L2E+IHp1IGZpbmRlbi48L2xpPg0KPGxpPkRlciBBdXRvciBTakcgaXN0IGgmYXVtbDt1ZmlnIGltIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPiB6dSBmaW5kZW4uPC9saT4NCjxsaT5MZXR6dGxpY2ggZXJyZWljaGVuIFNpZSBkZW4gQXV0b3IgYXVjaCAmdXVtbDtiZXIgZWluZSBkaXJla3RlIEVtYWlsLjwvbGk+ICANCjwvdWw+DQo8cD5OYWNoIGRlciBHUEwgd2lyZCBkaWVzZSBTb2Z0d2FyZSBzbyB2ZXImb3VtbDtmZmVudGxpY2h0LCB3aWUgc2llIGlzdC4gQml0dGUgbGVzZW4gU2llIGRlbiBMaXplbnp0ZXh0IGYmdXVtbDtyIGRlbiB2b2xsZW4gSGFmdHVuZ3NhdXNzY2hsdXNzLjwvcD4NCjxoMz5Db3B5cmlnaHQgdW5kIExpemVuejwvaDM+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDYsIFNhbXVlbCBHb2xkc3RlaW4gPGEgaHJlZj0ibWFpbHRvOnNqZ0BjbXNtb2R1bGVzLmNvbSI+c2pnQGNtc21vZHVsZXMuY29tPC9hPi4gQWxsZSBSZWNodGUgdm9yYmVoYWx0ZW4uPC9wPg0KPHA+RGllc2VzIE1vZHVsIHd1cmRlIHVudGVyIGRlciA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4gdmVyJm91bWw7ZmZlbnRsaWNodC4gU2llIG0mdXVtbDtzc2VuIGRpZXNlciBMaXplbnogenVzdGltbWVuLCBiZXZvciBTaWUgZGFzIE1vZHVsIHZlcndlbmRlbi48L3A+JzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnU3RlbGxlbiBTaWUgc2ljaGVyLCBkYXNzIGRpZSBBbndlbmRlciwgZGllIGRlbiBLYXRhbG9nIGFkbWluaXN0cmllcmVuIHNvbGxlbiwgZGllIEJlcmVjaHRpZ3VuZyAmcXVvdDtNb2RpZnkgQ2F0YWxvZyBTZXR0aW5ncyZxdW90OyBoYWJlbi4nOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My40NDgzOTEyNC4xMzIyMzQxNjU5LjEzMjIzNDE2NTkuMTMyMjM3MjE3My4yJzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTMyMjM0MTY1OS4xLjEudXRtY2NuPShkaXJlY3QpfHV0bWNzcj0oZGlyZWN0KXx1dG1jbWQ9KG5vbmUpJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/es_ES.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ25hbWVpbWFnZXMnXSA9ICdJbWFnZW5lcyc7CiRsYW5nWydkZWxldGVpbWFnZSddID0gJ0JvcnJhciBJbWFnZW4nOwokbGFuZ1snT3duZXInXSA9ICdPd25lcic7CiRsYW5nWydDYXRhbG9nSXRlbSddID0gJ0l0ZW0gQ2F0YWxvZ2VyJzsKJGxhbmdbJ25hbWVwYWdlJ10gPSAnUCZhYWN1dGU7Z2luYSc7CiRsYW5nWydQZXJtaXNzaW9ucyddID0gJ1Blcm1pc29zJzsKJGxhbmdbJ1N1YiddID0gJ1N1YiAtJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtX3NvcnRfb3JkZXIyJ10gPSAnT3JkZW5hciBQcm9kdWN0byBQb3InOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2l0ZW1zX3Blcl9wYWdlMiddID0gJ1Byb2R1Y3RvcyBwb3IgUCZhYWN1dGU7Z2luYSc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfY2F0ZWdvcnlfcmVjdXJzZTInXSA9ICdEaXNwbGF5IEJlaGF2aW9yJzsKJGxhbmdbJ3doaWNoX2F0dHJpYnV0ZXMnXSA9ICdXaGljaCBhdHRyaWJ1dGVzIHNob3VsZCBiZSBzaG93biBpbiBjYXRhbG9nJzsKJGxhbmdbJ25hdlRhYiddID0gJyB8ICc7CiRsYW5nWyduZWVkcGVybWlzc2lvbiddID0gJ05lY2VzaXRhIGFjdGl2YXIgJXMgcGFyYSBoYWNlciBlc28uJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0NhdCZhYWN1dGU7bG9nbyc7CiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnQWRtaW5pc3RyYXIgQWp1c3RlcyBkZWwgQ2F0JmFhY3V0ZTtsb2dvJzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdFc3QmYWFjdXRlOyBzZWd1cm8gcXVlIGRlc2VhIGJvcnJhciBlc3RlICVzPyc7CiRsYW5nWyd1bmlxdWVjb2RlJ10gPSAnQyZvYWN1dGU7ZGlnbyAmVWFjdXRlO25pY28nOwokbGFuZ1sndGVtcGxhdGVsaXN0J10gPSAnU3ViLXBsYW50aWxsYXMnOwokbGFuZ1snbGlzdHRlbXBsJ10gPSAnQWRtaW5pc3RyYXIgU3ViLXBsYW50aWxsYXMnOwokbGFuZ1sndGl0bGVfaXRlbV90YWInXSA9ICdBdHJpYnV0b3MgZGVsIFByb2R1Y3RvJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3RhYiddID0gJ0F0cmlidXRvcyBkZSBDYXRlZ29yaWEnOwokbGFuZ1sndGl0bGVfcHJpbnRhYmxlX3RhYiddID0gJ0FqdXN0ZXMgQ2F0JmFhY3V0ZTtsb2dvIEltcHJpbWlibGUnOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV90YWInXSA9ICdJdGVtIEltYWdlIFNpemVzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX3RhYiddID0gJ0FqdXN0ZXMgUCZhYWN1dGU7Z2luYSBkZSBDYXRlZ29yJmlhY3V0ZTthJzsKJGxhbmdbJ3RpdGxlX2lzX3RleHRmaWVsZCddID0gJ0FyZWEgZGUgVGV4dG8/JzsKJGxhbmdbJ3RpdGxlX2RlbGV0ZSddID0gJ0JvcnJhcj8nOwokbGFuZ1sndGl0bGVfYXNwZWN0X3RhYiddID0gJ0ltYWdlIEFzcGVjdCBSYXRpb3MnOwokbGFuZ1sndGl0bGVfaW1hZ2VfdGFiJ10gPSAnT3Ryb3MgQWp1c3RlcyBkZSBJbWFnZW4nOwokbGFuZ1sndGl0bGVfaXRlbV90ZW1wbGF0ZV92YXJzJ10gPSAnVmFyaWFibGVzIFBsYW50aWxsYSBQcm9kdWN0byc7CiRsYW5nWyd0aXRsZV9jYXRfdGVtcGxhdGVfdmFycyddID0gJ1ZhcmlhYmxlcyBQbGFudGlsbGEgZGUgQ2F0ZWdvciZpYWN1dGU7YSc7CiRsYW5nWyd0aXRsZV9mZWF0dXJlX3RlbXBsYXRlX3ZhcnMnXSA9ICdWYXJpYWJsZXMgUGxhbnRpbGxhIERlc3RhY2Fkb3MnOwokbGFuZ1sndGl0bGVfc2hvd19vbmx5X2V4aXN0aW5nX2ltYWdlcyddID0gJ05vIGluY2x1aXIgaW1hZ2VuZXMgcXVlIGZhbHRhbic7CiRsYW5nWyd0aXRsZV9zaG93X29ubHlfZXhpc3RpbmdfaW1hZ2VzX2hlbHAnXSA9ICdUaGlzIHdpbGwgb25seSBwdXQgaW1hZ2UgcmVmZXJlbmNlcyBpbnRvIGxpc3RzIGlmIHRoZSBpbWFnZSBleGlzdHMuPGJyIC8+KE5vcm1hbGx5LCB0aGlzIGlzIGZpbmUsIGJ1dCBpZiB5b3UgYXJlIGRvaW5nIHNvbWV0aGluZyBjbGV2ZXIgd2l0aCBpbWFnZTxiciAvPmFycmF5IGluZGV4ZXMsIHRoaXMgY291bGQgY2F1c2UgeW91IHRyb3VibGUuKSc7CiRsYW5nWyd0aXRsZV9mbHVzaF9jYXRzJ10gPSAnRmx1c2ggY2F0ZWdvcnkgcGFnZSBidWZmZXJzJzsKJGxhbmdbJ3RpdGxlX2ZsdXNoX2NhdHNfaGVscCddID0gJ0lmIHlvdSBoYXZlIGEgaHVnZSBudW1iZXIgb2YgaXRlbXMgZGlzcGxheWVkPGJyIC8+aW4gYSBjYXRlZ29yeSwgc29tZSBQSFAgaW5zdGFsbHMgd2lsbCBmYWlsIHRvIGRpc3BsYXkgdGhlIHBhZ2U8YnIgLz5jb3JyZWN0bHkuIENoZWNrIHRoaXMgYm94IHRvIHNvbHZlIHRoaXMgcHJvYmxlbSAodGVzdCBmb3Igc2lkZSBlZmZlY3RzKS4nOwokbGFuZ1snY2F0YWxvZ2VyJ10gPSAnQ2F0JmFhY3V0ZTtsb2dvJzsKJGxhbmdbJ2l0ZW1fcGFnZSddID0gJ1AmYWFjdXRlO2dpbmEgZGUgUHJvZHVjdG8nOwokbGFuZ1snY2F0ZWdvcnlfcGFnZSddID0gJ1AmYWFjdXRlO2dpbmEgZGUgQ2F0ZWdvcmlhJzsKJGxhbmdbJ2NhdGFsb2dfcHJpbnRhYmxlJ10gPSAnQ2F0JmFhY3V0ZTtsb2dvIEltcHJpbWlibGUnOwokbGFuZ1snY2F0YWxvZ19kYXRhc2hlZXQnXSA9ICdEYXRhc2hlZXQgZGVsIENhdCZhYWN1dGU7bG9nbyc7CiRsYW5nWydjYXRhbG9nX3Nob3J0X2xpc3QnXSA9ICdMaXN0YSBkZSBDYXJhY3RlciZpYWN1dGU7c3RpY2FzJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtX3NvcnRfb3JkZXInXSA9ICdTZXQgaXRlbSBzb3J0IG9yZGVyIHRvJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtc19wZXJfcGFnZSddID0gJ1NldCBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2UgdG8nOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2NhdGVnb3J5X3JlY3Vyc2UnXSA9ICdTZXQgQ2F0ZWdvcnkgRGlzcGxheSBCZWhhdmlvciB0byc7CiRsYW5nWyd0aXRsZV9pdGVtX3NvcnRfb3JkZXInXSA9ICdPcmRlbiBwb3IgZGVmZWN0byBkZSBwcm9kdWN0b3MnOwokbGFuZ1sndGl0bGVfcHJpbnRhYmxlX3NvcnRfb3JkZXInXSA9ICdPcmRlbiBwb3IgZGVmZWN0byBkZWwgY2F0YWxnbyBpbXByaW1pYmxlJzsKJGxhbmdbJ3RpdGxlX2l0ZW1zX3Blcl9wYWdlJ10gPSAnRGVmYXVsdCBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2UnOwokbGFuZ1sndGl0bGVfYXZhaWxfYXR0cnMnXSA9ICdJdGVtIGF0dHJpYnV0ZXMgYXZhaWxhYmxlIGZvciB0aGUgdGVtcGxhdGUnOwokbGFuZ1sndGl0bGVfYXZhaWxfaW1hdHRycyddID0gJ0l0ZW0gaW1hZ2VzIGF2YWlsYWJsZSBmb3IgdGhlIHRlbXBsYXRlJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV9oZXJvJ10gPSAnSW1hZ2Ugc2l6ZSBmb3IgSXRlbSBQYWdlIChsb25nIGF4aXMgaW4gcGl4ZWxzKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfdGh1bWJuYWlsJ10gPSAnVGh1bWJhaWwgaW1hZ2Ugc2l6ZSBmb3IgSXRlbSBQYWdlIChsb25nIGF4aXMgaW4gcGl4ZWxzKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfY2F0ZWdvcnknXSA9ICdUaHVtYm5haWwgaW1hZ2Ugc2l6ZSBmb3IgSXRlbSBvbiBDYXRlZ29yeSBQYWdlIChsb25nIGF4aXMgaW4gcGl4ZWxzKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfY2F0YWxvZyddID0gJ1RodW1ibmFpbCBpbWFnZSBzaXplIGZvciBJdGVtIG9uIENhdGFsb2cgUGFnZSAobG9uZyBheGlzIGluIHBpeGVscyknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV9oZXJvJ10gPSAnSW1hZ2Ugc2l6ZSBmb3IgQ2F0ZWdvcnkgUGFnZSAobG9uZyBheGlzIGluIHBpeGVscyknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV90aHVtYm5haWwnXSA9ICdUaHVtYmFpbCBpbWFnZSBzaXplIGZvciBDYXRlZ29yeSBQYWdlIChsb25nIGF4aXMgaW4gcGl4ZWxzKSc7CiRsYW5nWyd0aXRsZV90ZW1wbGF0ZSddID0gJ1BsYW50aWxsYSc7CiRsYW5nWyd0aXRsZV90ZW1wbGF0ZV90eXBlJ10gPSAnVGlwbyBkZSBQbGFudGlsbGEnOwokbGFuZ1sndGl0bGVfdGl0bGUnXSA9ICdUaXR1bG8nOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9jb3VudCddID0gJ01heGltdW0gbnVtYmVyIG9mIHZpZXdzIGZvciBlYWNoIEl0ZW0nOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2VfY291bnQnXSA9ICdNYXhpbXVtIG51bWJlciBvZiBCYW5uZXIgaW1hZ2VzIGZvciBlYWNoIENhdGVnb3J5IFBhZ2UnOwokbGFuZ1sndGl0bGVfaXRlbV9hdHRyaWJ1dGVzX2hlbHAnXSA9ICdFYWNoIGF0dHJpYnV0ZSB5b3UgZW50ZXIgaGVyZSB3aWxsIGJlIHRoZSB0aXRsZSBvZiBhIGZpZWxkIHRoYXQgeW91IGNhbiB1c2UgdG8gZGVzY3JpYmUgYW4gaW5kaXZpZHVhbCBpdGVtLCBhbmQgd2lsbCBiZSBkaXNwbGF5ZWQgd2l0aCB0aGF0IGl0ZW0uIFlvdSBtYXkgaGF2ZSB0byB1cGRhdGUgeW91ciB0ZW1wbGF0ZSB0byByZWZsZWN0IHRoZXNlIGF0dHJpYnV0ZXMuIEJsYW5rIG91dCBvciB0eXBlIG92ZXIgYW4gZXhpc3RpbmcgYXR0cmlidXRlIHRvIHJlbW92ZSBvciByZXBsYWNlIGl0Lic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9hdHRyaWJ1dGVzX2hlbHAnXSA9ICdFYWNoIGF0dHJpYnV0ZSB5b3UgZW50ZXIgaGVyZSB3aWxsIGJlIHRoZSB0aXRsZSBvZiBhIGZpZWxkIHRoYXQgeW91IGNhbiB1c2UgdG8gZGVzY3JpYmUgYW4gaXRlbSBjYXRlZ29yeSwgYW5kIHdpbGwgYmUgZGlzcGxheWVkIG9uIHRoYXQgY2F0ZWdvcnkgcGFnZS4gWW91IG1heSBoYXZlIHRvIHVwZGF0ZSB5b3VyIHRlbXBsYXRlIHRvIHJlZmxlY3QgdGhlc2UgYXR0cmlidXRlcy4gQmxhbmsgb3V0IG9yIHR5cGUgb3ZlciBhbiBleGlzdGluZyBhdHRyaWJ1dGUgdG8gcmVtb3ZlIG9yIHJlcGxhY2UgaXQuJzsKJGxhbmdbJ3RpdGxlX2NhdGFsb2dfYXR0cmlidXRlc19oZWxwJ10gPSAnRWFjaCBhdHRyaWJ1dGUgeW91IGVudGVyIGhlcmUgd2lsbCBiZSB0aGUgdGl0bGUgb2YgYSBmaWVsZCB0aGF0IHlvdSBjYW4gdXNlIHRvIGRlc2NyaWJlIHRoZSBlbnRpcmUgY2F0YWxvZywgYW5kIHdpbGwgYmUgZGlzcGxheWVkIG9uIHRoZSBwcmludGFibGUgY2F0YWxvZyBwYWdlLiBZb3UgbWF5IGhhdmUgdG8gdXBkYXRlIHlvdXIgdGVtcGxhdGUgdG8gcmVmbGVjdCB0aGVzZSBhdHRyaWJ1dGVzLiBCbGFuayBvdXQgb3IgdHlwZSBvdmVyIGFuIGV4aXN0aW5nIGF0dHJpYnV0ZSB0byByZW1vdmUgb3IgcmVwbGFjZSBpdC4nOwokbGFuZ1sndGl0bGVfZm9yY2VfYXNwZWN0X3JhdGlvJ10gPSAnRm9yY2UgaW1hZ2VzIHRvIGEgc3BlY2lmaWVkIEFzcGVjdCByYXRpbz8nOwokbGFuZ1sndGl0bGVfZm9yY2VfYXNwZWN0X3JhdGlvX2xhYmVsJ10gPSAnRm9yY2UgYXNwZWN0IHJhdGlvIChub3QgeWV0IGltcGxlbWVudGVkKSc7CiRsYW5nWyd0aXRsZV9pbWFnZV9hc3BlY3RfcmF0aW8nXSA9ICdBc3BlY3QgcmF0aW8gKHNwZWNpZnkgYXMgJnF1b3Q7NDozJnF1b3Q7IG9yICZxdW90OzE6Mi41JnF1b3Q7KSc7CiRsYW5nWyd0aXRsZV9hc3BlY3RfcmF0aW9faGVscCddID0gJ0lmIHlvdSBmb3JjZSBhbiBpbWFnZSB0byBhIHNwZWNpZmllZCBhc3BlY3QgcmF0aW8sIGl0IHdpbGwgYmUgc2NhbGVkIHRvIGZpdCBleGFjdGx5IHRoYXQgYXNwZWN0IHJhdGlvIChvciBpdHMgaW52ZXJzZSwgc28geW91IGNhbiBoYXZlIGJvdGggcG9ydHJhaXQgYW5kIGxhbmRzY2FwZSBmb3JtYXRzKS4gT3RoZXJ3aXNlLCBpbWFnZXMgd2lsbCBwcmVzZXJ2ZSB0aGVpciBhc3BlY3QgcmF0aW8sIGFuZCBiZSBzY2FsZWQgc28gdGhlaXIgbG9uZyBheGlzIGlzIHRoZSBzaXplIHNwZWNpZmllZC4gPGI+dGhpcyBpcyBub3QgeWV0IGltcGxlbWVudGVkITwvYj4nOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfc29ydCddID0gJ0NhdGVnb3J5IFBhZ2UgSXRlbS1saXN0IHNvcnQgb3JkZXInOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZSddID0gJ0RlZmF1bHQgQ2F0ZWdvcnkgRGlzcGxheSBCZWhhdmlvcic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2l0ZW1zX2FsbCddID0gJ0luY2x1aXIgdG9kb3MgbG9zIHByb2R1Y3RvcyBpbm1lZGlhdGFzIGRlbnRybyBkZSBlc3RhIGNhdGVnb3ImaWFjdXRlO2EsIGluY2x1eWVuZG8gcHJvZHVjdG9zIGRlbnRybyBkZSBzdWItY2F0ZWdvciZpYWN1dGU7YXMnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9pdGVtc19vbmUnXSA9ICdJbmNsdWlyIHRvZG9zIGxvcyBwcm9kdWN0b3MgaW5tZWRpYXRhcyBkZW50cm8gZGUgZXN0YSBjYXRlZ29yJmlhY3V0ZTthLCBwZXJvIG5vIHByb2R1Y3RvcyBkZW50cm8gZGUgc3ViLWNhdGVnb3ImaWFjdXRlO2FzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfY2F0ZWdvcmllc19hbGwnXSA9ICdJbmNsdWlyIHRvZGFzIGxhcyBjYXRlZ29yJmlhY3V0ZTthcyBpbm1lZGlhdGFzIGRlbnRybyBkZSBlc3RhIGNhdGVnb3ImaWFjdXRlO2EsIGluY2x1eWVuZG8gY2F0ZWdvciZpYWN1dGU7YXMgZGVudHJvIGRlIHN1Yi1jYXRlZ29yJmlhY3V0ZTthcyc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2NhdGVnb3JpZXNfb25lJ10gPSAnSW5jbHVpciB0b2RhcyBsYXMgY2F0ZWdvciZpYWN1dGU7YXMgaW5tZWRpYXRhcyBkZW50cm8gZGUgZXN0YSBjYXRlZ29yJmlhY3V0ZTthLCBwZXJvIG5vIGNhdGVnb3ImaWFjdXRlO2FzIGRlbnRybyBkZSBzdWItY2F0ZWdvciZpYWN1dGU7YXMnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9taXhlZF9hbGwnXSA9ICdJbmNsdWlyIHRvZG9zIGxvcyBwcm9kdWN0b3MgeSBjYXRlZ29yJmlhY3V0ZTthcyBpbm1lZGlhdGFzIGRlbnRybyBkZSBlc3RhIGNhdGVnb3ImaWFjdXRlO2EsIGluY2x1eWVuZG8gcHJvZHVjdG9zIHkgY2F0ZWdvciZpYWN1dGU7YXMgZW4gc3ViLWNhdGVnb3ImaWFjdXRlO2FzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfbWl4ZWRfb25lJ10gPSAnSW5jbHVpciB0b2RvcyBsb3MgcHJvZHVjdG9zIHkgY2F0ZWdvciZpYWN1dGU7YXMgaW5tZWRpYXRhcyBkZW50cm8gZGUgZXN0YSBjYXRlZ29yJmlhY3V0ZTthLCBwZXJvIG5vIGxvcyBwcm9kdWN0b3MgJm9hY3V0ZTsgY2F0ZWdvciZpYWN1dGU7YXMgZW4gc3ViLWNhdGVnb3ImaWFjdXRlO2FzLic7CiRsYW5nWyd0aXRsZV9zaG93X21pc3NpbmdfaW1hZ2VzJ10gPSAnU2hvdyAmcXVvdDtObyBJbWFnZSZxdW90OyBpbWFnZSBmb3IgbWlzc2luZyBpbWFnZXMnOwokbGFuZ1sndGl0bGVfc2hvd19taXNzaW5nX2ltYWdlc19sb25nJ10gPSAnU2hvdyBhIHNwZWNpYWwgJnF1b3Q7Tm8gSW1hZ2UmcXVvdDsgaW1hZ2UgaWYgdGhlcmUgYXJlIG1pc3NpbmcgaW1hZ2VzICh1c2VmdWwgZm9yIGRlYnVnZ2luZy4gT3RoZXJ3aXNlIHdpbGwgdXNlIGEgc2luZ2xlIHBpeGVsIHRyYW5zcGFyZW50IGltYWdlKS4nOwokbGFuZ1snbmF0dXJhbF9vcmRlciddID0gJ09yZGVuIGRlIE5hdmVnYWNpJm9hY3V0ZTtuJzsKJGxhbmdbJ2FscGhhX29yZGVyJ10gPSAnT3JkZW4gQWxmYWJldGljbyc7CiRsYW5nWydtYW5hZ2VwcmVmcyddID0gJ0FkbWluaXN0cmFyIFByZWZlcmVuY2lhcyc7CiRsYW5nWydtYW5hZ2VhdHRycyddID0gJ0FkbWluaXN0cmFyIEF0cmlidXRvcyBEZWZpbmlkb3MgcG9yIGVsIFVzdWFyaW8nOwokbGFuZ1snZ2xvYmFsb3BzJ10gPSAnT3BlcmFjaW9uZXMgR2xvYmFsZXMgZGUgQ2F0JmFhY3V0ZTtsb2dvJzsKJGxhbmdbJ2FkZHRlbXBsYXRlJ10gPSAnQWdyZWdhciBQbGFudGlsbGEnOwokbGFuZ1sncmVpbXBvcnR0ZW1wbGF0ZXMnXSA9ICdSZS1pbXBvcnRhciBlamVtcGxvcyBkZSBTdWItUGxhbnRpbGxhcyc7CiRsYW5nWydyZWltcG9ydGVkJ10gPSAnTGFzIHN1Yi1wbGFudGlsbGFzIGRlIGVqZW1wbG8gaGFuIHNpZG8gaW1wb3J0YWRhcy4nOwokbGFuZ1sndGVtcGxhdGV1cGRhdGVkJ10gPSAnUGxhbnRpbGxhIEFncmVnYWRhL0FjdHVhbGl6YWRhJzsKJGxhbmdbJ3RlbXBsYXRlZGVsZXRlZCddID0gJ1BsYW50aWxsYSBFbGltaW5hZGEuJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ1ByZWZlY3JlbmNpYXMgQWN0dWFsaXphZGFzLic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdWZXJzaSZvYWN1dGU7biBkZSBNb2R1bG8gJXMgaW5zdGFsYWRhLic7CiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHVsbyBtZWpvcmFkbyBhIHZlcnNpJm9hY3V0ZTtuICVzLic7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsbyBkZXNpbnN0YWxhZG8nOwokbGFuZ1snYXR0cnN1cGRhdGVkJ10gPSAnQXRyaWJ1dG9zIGFjdHVhbGl6YWRvcy4nOwokbGFuZ1snbm9nbG9iYWxjaGFuZ2UnXSA9ICdObyBjYW1iaWFyJzsKJGxhbmdbJ2dsb2JhbGx5dXBkYXRlZCddID0gJ0NhbWJpb3MgcHJvcGFnYWRvcyBnbG9iYWxtZW50ZS4nOwokbGFuZ1snZWRpdHRlbXBsYXRlJ10gPSAnRWRpdGFyIFBsYW50aWxsYSc7CiRsYW5nWydzdWJ0ZW1wbGF0ZXMnXSA9ICdTdWItUGxhbnRpbGxhcyBkZSBDYXQmYWFjdXRlO2xvZ28nOwokbGFuZ1snbmV4dCddID0gJzomcmFxdW87JzsKJGxhbmdbJ3ByZXYnXSA9ICcmbGFxdW87Oic7CiRsYW5nWydlZGl0J10gPSAnRWRpdGFyJzsKJGxhbmdbJ2RlbGV0ZSddID0gJ0VsaW1pbmFyJzsKJGxhbmdbJ25vdGVtcGxhdGVzJ10gPSAnTm8gaGF5IFN1Yi1QbGFudGlsbGFzIGluc3RhbGFkYXMhJzsKJGxhbmdbJ2hlbHB0ZXh0J10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5UaGlzIG1vZHVsZSBsZXRzIHlvdSBjcmVhdGUgb25saW5lIGNhdGFsb2dzIG9yIHBvcnRmb2xpb3MuIENhdGFsb2dzIGNvbnNpc3Qgb2YgJnF1b3Q7Q2F0YWxvZyBJdGVtcyZxdW90OyB3aGljaCBjb3VsZCBiZSBwcm9kdWN0cywgd29ya3Mgb2YgYXJ0LCBvciB0aGUgbGlrZSwgYW5kICZxdW90O0NhdGFsb2cgQ2F0ZWdvcmllcyZxdW90OyB3aGljaCBjb3VsZCBiZSBpdGVtIGNhdGVnb3JpZXMgb3Igb3RoZXIgbmF0dXJhbCBkaXZpc2lvbnMgb2YgdGhlIGNhdGFsb2cuPC9wPg0KPHA+Q2F0ZWdvcmllcyBtYXkgYmUgZGVmaW5lZCBoaWVyYXJjaGljYWxseSAodXNpbmcgdGhlIHN0YW5kYXJkIENNUyBNYWRlIFNpbXBsZSBjb250ZW50IGxpc3QpLiBDYXRlZ29yeSBwYWdlcyBjYW4gZGlzcGxheSBpdGVtcyBpbiB0aGUgY2F0ZWdvcnkgYW5kL29yIHN1YmNhdGVnb3JpZXMsIG9wdGlvbmFsbHkgcmVjdXJzaW5nIHRocm91Z2ggc3ViLWNhdGVnb3JpZXMuIFRoaXMgYmVoYXZpb3IgY2FuIGJlIGNvbmZpZ3VyZWQgb24gYSBwZXItY2F0ZWdvcnkgYmFzaXMuPC9QPg0KPHA+VGhlcmUgaXMgYWxzbyBhIFByaW50YWJsZSBDYXRhbG9nLCB3aGljaCByZXByZXNlbnRzIHRoZSB3aG9sZSBjb2xsZWN0aW9uIG9mIENhdGFsb2cgSXRlbXMgb24gYSBzaW5nbGUgcGFnZSAodGhpcyBpcyBjdXJyZW50bHkgaW1wbGVtZW50ZWQgYmFkbHksIGFuZCB3aWxsIGxvYWQgc2xvd2x5KS48L3A+DQo8cD5UaGUgbW9kdWxlIGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciAmcXVvdDtDb250ZW50IEFsaWFzZXMmcXVvdDsgKGEgbW9kdWxlIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmNtc21vZHVsZXMuY29tL0NvbnRlbnRBbGlhc2VzLmh0bWwiPkNNU01vZHVsZXMuY29tPC9hPiksIHdoaWNoIGFsbG93cyB5b3UgdG8gcGxhY2UgYW55IENhdGFsb2cgSXRlbSBpbnRvIG11bHRpcGxlIENhdGFsb2cgQ2F0ZWdvcmllcy48L3A+DQo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4NCjxwPldoZW4geW91IGluc3RhbGwgdGhpcyBtb2R1bGUsIGl0IGNyZWF0ZXMgdGhyZWUgbmV3IENvbnRlbnQgVHlwZXM6IENhdGFsb2cgSXRlbSwgQ2F0YWxvZyBDYXRlZ29yeSwgYW5kIFByaW50YWJsZSBDYXRhbG9nLiBXaGVuIHlvdSYjMDM5O3JlIGluIHlvdXIgc2l0ZSBhZG1pbmlzdHJhdGlvbiBjYXRlZ29yeSwgeW91IGFkZCBDYXRhbG9nIEl0ZW1zIGFuZCBDYXRhbG9nIENhdGVnb3JpZXMganVzdCBhcyB5b3Ugd291bGQgYW55IG90aGVyIGtpbmQgb2YgcGFnZS4gU2VsZWN0IENvbnRlbnQgPiBQYWdlcyA+IEFkZCBDb250ZW50LCBhbmQgdGhlbiBzZWxlY3QgJnF1b3Q7Q2F0YWxvZyBJdGVtJnF1b3Q7IG9yICZxdW90O0NhdGFsb2cgQ2F0ZWdvcnkmcXVvdDsgZnJvbSB0aGUgQ29udGVudCBUeXBlIHB1bGxkb3duLjwvcD4NCjxoND5DYXRhbG9nIEl0ZW1zPC9oND4NCjxwPkFkZGluZyBhIENhdGFsb2cgSXRlbSBpcyBzaW1pbGFyIHRvIGFkZGluZyBhbiBvcmRpbmFyeSBwYWdlIHRvIHlvdXIgc2l0ZS4gVGhlIGRhdGEgZmllbGRzIGZvciB0aGUgSXRlbSBhcmUgbm90IGV4YWN0bHkgdGhlIHNhbWUsIGhvd2V2ZXIuIEFsc28gbm90ZSB0aGF0IGluIHRoZSAmcXVvdDtJbWFnZXMmcXVvdDsgdGFiLCB5b3UgY2FuIHNlbGVjdCBtdWx0aXBsZSBpbWFnZXMgdG8gdXBsb2FkIGZvciB0aGUgaXRlbS4gV2hlbiB5b3UgdXBsb2FkIGltYWdlcywgdGhlIHN5c3RlbSB3aWxsIHNpemUgdGhlbSBhcHByb3ByaWF0ZWx5IGZvciB0aGUgY2F0YWxvZywgY3JlYXRlIHRodW1ibmFpbHMgZm9yIHVzZSBpbiB0aGUgSXRlbSYjMDM5O3MgcGFnZSwgY3JlYXRlIHRodW1ibmFpbHMgZm9yIGFueSBDYXRlZ29yeSBwYWdlcywgYW5kIHNvIG9uLiBUaGlzIHJlcXVpcmVzIHRoYXQgeW91IGhhdmUgR0Qgb3IgYSBzaW1pbGFyIGltYWdlIGxpYnJhcnkgaW5zdGFsbGVkLiBDdXJyZW50bHksIG9ubHkganBlZyBmb3JtYXQgaW1hZ2VzIGFyZSBzdXBwb3J0ZWQuPC9wPg0KPGg0PkNhdGFsb2cgQ2F0ZWdvcmllczwvaDQ+DQo8cD5BIENhdGFsb2cgQ2F0ZWdvcnkgaXMgdXNlZCBmb3Igb3JnYW5pemluZyB5b3VyIGNhdGFsb2cgaXRlbXMuIEl0IHByb3ZpZGVzIGEgcGFnZSB0aGF0IGxpc3RzIENhdGFsb2dlciBjb250ZW50IHRoYXQgaXMgY29udGFpbmVkIGJ5IGl0LiBBIENhdGFsb2cgSXRlbSBpcyBjb25zaWRlcmVkIHRvIGJlIHBhcnQgb2YgYSBDYXRhbG9nIENhdGVnb3J5IGlmIGl0IGlzIGJlbG93IHRoYXQgQ2F0ZWdvcnkgaW4gdGhlIFNpdGUgSGllcmFyY2h5LiBDYXRlZ29yaWVzIGNhbiBzaW1pbGFybHkgaW5jbHVkZSBvdGhlciBDYXRlZ29yaWVzLjwvcD4NCjxwPkNhdGFsb2cgQ2F0ZWdvcmllcyBoYXZlIGEgbnVtYmVyIG9mIHNldHRpbmdzIHRvIGRldGVybWluZSBob3cgdGhleSBzaG91bGQgZGlzcGxheSB0aGUgSXRlbXMgYW5kIENhdGVnb3JpZXMgdGhleSBjb250YWluOiBpZiB5b3UgbG9vayBhdCB0aGUgJnF1b3Q7T3B0aW9ucyZxdW90OyB0YWIsIHlvdSBjYW4gY2hvb3NlIGhvdyBtYW55IGl0ZW1zIGFuZC9vciBjYXRlZ29yaWVzIHRvIHNob3csIHdoYXQgb3JkZXIgdG8gc2hvdyB0aGVtIGluLCB3aGV0aGVyIHRvIGRpc3BsYXkgb25seSBpdGVtcyBvciBvbmx5IGNhdGVnb3JpZXMgb3IgYm90aCwgYW5kIGhvdyBtYW55IGxldmVscyBvZiB0aGUgaGllcmFyY2h5IHRvIGRpc3BsYXkgYmVsb3cgdGhlIGNhdGVnb3J5IHBhZ2UuPC9wPg0KPHA+Rm9yIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOjwvcD4NCjxvbD4NCgk8bGk+PGI+SGF0czwvYj4NCgkJPG9sPg0KCQkJPGxpPjxiPkZhc2hpb248L2I+DQoJCQkgCTxvbD4NCgkJCSAJCTxsaT5GZWF0aGVyZWQgSGF0PC9saT48bGk+RmVkb3JhIDwvbGk+PGxpPkJhc2ViYWxsIEhhdDwvbGk+DQoJCQkgCTwvb2w+DQoJCQkgPC9saT4NCgkJIAk8bGk+PGI+V29yayBIYXRzPC9iPg0KCQkgICAgCTxvbD4NCgkJICAgIAkJPGxpPkhhcmQgSGF0PC9saT48bGk+RGl2aW5nIEhlbG1ldDwvbGk+DQoJCSAgICAJPC9vbD4NCgkJICAgIDwvbGk+DQoJCTwvb2w+DQoJPC9saT4NCjwvb2w+DQo8cD5JbiB0aGlzIGRpYWdyYW0sIGJvbGRlZCBpdGVtcyBhcmUgQ2F0YWxvZyBDYXRlZ29yaWVzLCBhbmQgbm9uLWJvbGRlZCBpdGVtcyBhcmUgQ2F0YWxvZyBJdGVtcy4gRGVwZW5kaW5nIHVwb24gaG93IHlvdSBzZXQgeW91ciBvcHRpb25zLCB0aGUgSGF0cyBDYXRlZ29yeSBQYWdlIGNhbiBzaG93IG9ubHkgZW50cmllcyBmb3IgdGhlIEZhc2hpb24gYW5kIFdvcmsgSGF0cyBDYXRlZ29yeSBQYWdlcywgb3IgaXQgY2FuIHNob3cgZW50cmllcyBmb3IgRmFzaGlvbiwgV29yayBIYXRzLCBhbmQgYWxsIHRoZSBoYXRzIGxpc3RlZCBiZWxvdyB0aGVtLjwvcD4NCjxwPllvdSBjYW4gb3B0IHRvIHNob3cgdGhlIGl0ZW1zIGluICZxdW90O25hdHVyYWwmcXVvdDsgb3JkZXIgKGkuZS4sIHRoZSBvcmRlciB0aGUgSXRlbXMgc2hvdyB1cCBpbiB0aGUgQ01TIENvbnRlbnQgSGllcmFyY2h5KSwgb3IgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLjwvUD4NCjxwPklmIHlvdSBoYXZlIGxhcmdlIG51bWJlcnMgb2YgaXRlbXMgaW4gYSBDYXRlZ29yeSwgeW91IGNhbiBzZXQgdGhlIG1heGltdW0gbnVtYmVyIHRvIGJlIGRpc3BsYXllZCBpbiBhIENhdGVnb3J5IFBhZ2UsIGFuZCB0aGUgcGFnZSB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGxpbmtzIHRvIG5hdmlnYXRlIHRocm91Z2ggdGhlIGxpc3QuPC9wPg0KPHA+RWFjaCBDYXRlZ29yeSBwYWdlIGNhbiBoYXZlIGRpZmZlcmVudCBzZXR0aW5ncyBmb3Igc29ydCBvcmRlciwgbGV2ZWxzIHRvIGRpc3BsYXksIGFuZCBudW1iZXIgb2YgaXRlbXMuIFlvdSBjYW4gc2V0IHRoZSBkZWZhdWx0IGZvciB0aGVzZSB2YWx1ZXMgaW4gRXh0ZW5zaW9ucyA+IENhdGFsb2dlciA+IE1hbmFnZSBQcmVmZXJlbmNlcy4gSWYsIGF0IGEgbGF0ZXIgZGF0ZSwgeW91IHdpc2ggdG8gY2hhbmdlIHNvbWUgc2V0dGluZyBvbiBhbGwgb2YgeW91ciBDYXRlZ29yeSBwYWdlcywgeW91IGNhbiBnbyBpbnRvIEV4dGVuc2lvbnMgPiBDYXRhbG9nZXIgPiBHbG9iYWwgQ2F0YWxvZyBPcHRpb25zLCBhbmQgbWFrZSB0aG9zZSBjaGFuZ2VzLjwvcD4NCjxoND5JbWFnZXM8L2g0Pg0KPHA+Q2F0YWxvZ2VyIGFsbG93cyB5b3UgdG8gc2VsZWN0IGRpZmZlcmVudCBzaXplIGltYWdlcyBmb3IgSXRlbSBwYWdlcywgQ2F0ZWdvcnkgcGFnZXMsIGFuZCB0aGUgUHJpbnRhYmxlIENhdGFsb2cuIFlvdSBjYW4gc2V0IHRoZXNlIGRlZmF1bHRzIGluIEV4dGVuc2lvbnMgPiBDYXRhbG9nZXIgPiBNYW5hZ2UgUHJlZmVyZW5jZXMuPC9wPg0KPHA+V2hlbiB5b3UgdXBsb2FkIGltYWdlcywgdGhlIG9yaWdpbmFsIGlzIHN0b3JlZC4gV2hlbiBzb21lb25lIHZpc2l0cyBhIHBhZ2UsIHRoZSByZWR1Y2VkIHNpemUgaW1hZ2VzIGFyZSByZXF1ZXN0ZWQgdXNpbmcgYSBzcGVjaWFsIFVSTCwgd2hpY2ggd2lsbCByZWRpcmVjdCB0aGUgdXNlciYjMDM5O3MgYnJvd3NlciB0byB0aGUgc2NhbGVkIGltYWdlIGlmIGl0IGV4aXN0cywgYW5kIGNyZWF0aW5nIHRoZSBzY2FsZWQgaW1hZ2UgaWYgaXQgZG9lc24mIzAzOTt0LiBUaGlzIGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBzaXplIG9mIGltYWdlcywgd2l0aG91dCBoYXZpbmcgdG8gcmUtdXBsb2FkIGFsbCB0aGUgaW1hZ2VzLCBvciByZXNjYWxpbmcgdGhlbSBhbGwgYXQgb25jZS48L3A+DQo8cD5UaGlzIGltYWdlIHJlc2NhbGluZyBjb2RlIHJlcXVpcmVzIHRoYXQgeW91IGhhdmUgZWl0aGVyIEltYWdlTWFnaWNrIG9yIEdEIGxpYiBpbnN0YWxsZWQsIGFuZCBjb25maWd1cmVkIGluIHlvdXIgQ01TIE1hZGUgU2ltcGxlIGNvbmZpZy5waHAuPC9wPg0KPGgzPkN1c3RvbWl6YXRpb24gYW5kIEFkdmFuY2VkIFRvcGljczwvaDM+DQo8aDQ+Q2F0YWxvZyBJdGVtIEF0dHJpYnV0ZXM8L2g0Pg0KPHA+VGhlIGRlZmF1bHQgaXRlbSBhdHRyaWJ1dGVzIGFyZSB0eXBpY2FsIGZvciBhIGNhdGFsb2cgb2YgcHJvZHVjdHMgb3IgYXJ0d29ya3MsIGJ1dCBieSBnb2luZyBpbnRvIEV4dGVuc2lvbnMgPiBDYXRhbG9nZXIgPiBNYW5hZ2UgVXNlci1EZWZpbmVkIEF0dHJpYnV0ZXMsIHlvdSBjYW4gY2hhbmdlIHRoZSBhdHRyaWJ1dGVzLiBJdCYjMDM5O3MgYmVzdCB0byBkZWZpbmUgdGhlIGF0dHJpYnV0ZXMgYmVmb3JlIHlvdSBzdGFydCBlbnRlcmluZyBDYXRhbG9nIEl0ZW1zLjwvcD4NCjxwPk5vdGUgdGhhdCB0aGUgYXR0cmlidXRlcyB5b3UgZGVmaW5lIG1heSBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSB0ZW1wbGF0ZSB0aGF0IHlvdSYjMDM5O3JlIHVzaW5nIHRvIGRpc3BsYXkgQ2F0YWxvZyBJdGVtcyAtLSBzZWUgQ3VzdG9tIFRlbXBsYXRlcyBiZWxvdy48L3A+DQo8aDQ+Q2F0YWxvZyBDYXRlZ29yeSBBdHRyaWJ1dGVzPC9oND4NCjxwPlNpbWlsYXJseSwgeW91IGNhbiBzZXQgYXR0cmlidXRlcyBmb3IgQ2F0ZWdvcmllcy4gQWdhaW4sIHRoZSBhdHRyaWJ1dGVzIHlvdSBkZWZpbmUgbWF5IG5lZWQgdG8gYmUgYWRkZWQgdG8gdGhlIHRlbXBsYXRlIHRoYXQgeW91JiMwMzk7cmUgdXNpbmcgdG8gZGlzcGxheSBDYXRhbG9nIENhdGVnb3JpZXMgLS0gc2VlIEN1c3RvbSBUZW1wbGF0ZXMgYmVsb3cuPC9wPg0KPGg0PlByaW50YWJsZSBDYXRhbG9nIEF0dHJpYnV0ZXM8L2g0Pg0KPHA+TGlrZXdpc2UsIHlvdSBjYW4gc2V0IGF0dHJpYnV0ZXMgZm9yIFByaW50YWJsZSBDYXRhbG9ncy4gQWdhaW4sIHRoZSBhdHRyaWJ1dGVzIHlvdSBkZWZpbmUgbWF5IG5lZWQgdG8gYmUgYWRkZWQgdG8gdGhlIHRlbXBsYXRlIHRoYXQgeW91JiMwMzk7cmUgdXNpbmcgdG8gZGlzcGxheSB5b3VyIFByaW50YWJsZSBDYXRhbG9nIC0tIHNlZSBDdXN0b20gVGVtcGxhdGVzIGJlbG93LjwvcD4NCjxoND5DdXN0b20gVGVtcGxhdGVzPC9oND4NCjxwPklmIHlvdSYjMDM5O3JlIHdpbGxpbmcgdG8gbWVzcyBhcm91bmQgd2l0aCBTbWFydHkgVGVtcGxhdGVzLCB5b3UgY2FuIGNoYW5nZSB0aGUgbGF5b3V0IG9mIGFueSBvZiB0aGUgcGFnZXMgZ2VuZXJhdGVkIGJ5IENhdGFsb2dlci4gVGhpcyBzaG91bGQgbWFrZSBjZXJ0YWluIGRldmVsb3BlcnMgdmVyeSBoYXBweSwgZXZlbiBpZiB0aGUgaW5lZmZpY2llbmN5IG9mIHRoZSByZXN0IG9mIHRoZSBjb2RlIHdpbGwgbm90ZS4gVGhlcmUgYXJlIHRocmVlIGtpbmRzIG9mIHRlbXBsYXRlczogb25lIGtpbmQgZm9yIENhdGFsb2cgSXRlbXMsIG9uZSBraW5kIGZvciBDYXRhbG9nIENhdGVnb3JpZXMsIGFuZCBvbmUga2luZCBmb3IgUHJpbnRhYmxlIENhdGFsb2dzLjwvcD4NCjxwPldoZW4gZWRpdGluZyBhIFRlbXBsYXRlLCB0aGUgYWRtaW4gc2NyZWVuIHdpbGwgZGlzcGxheSBhIGxpc3Qgb2YgU21hcnR5IHRhZ3MgYXZhaWxhYmxlIHRvIHlvdSBmb3IgdGhhdCBraW5kIG9mIHRlbXBsYXRlLiBUaGlzIHdpbGwgb25seSBoYXBwZW4gb25jZSB0aGUgbW9kdWxlIGtub3dzIHdoYXQga2luZCBvZiB0ZW1wbGF0ZSB5b3UmIzAzOTtyZSBlZGl0aW5nLCBzbyB3aGVuIHlvdSBmaXJzdCBjcmVhdGUgdGhlIHRlbXBsYXRlLCBpdCBkaXNwbGF5cyBhbGwgdGhlIFNtYXJ0eSB0YWdzIGl0IGtub3dzIGFib3V0LCBvbmx5IHNvbWUgb2Ygd2hpY2ggYmVpbmcgYXBwbGljYWJsZS48L3A+DQo8aDM+U3VwcG9ydDwvaDM+DQo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+DQo8dWw+DQo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQgb3IgYnV5IGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHZpc2l0IFNqRyYjMDM5O3MNCm1vZHVsZSBob21lcGFnZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmNtc21vZHVsZXMuY29tIj5DTVNNb2R1bGVzLmNvbTwvYT4uPC9saT4NCjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjxsaT5UaGUgYXV0aG9yLCBTakcsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkuPC9saT4gIA0KPC91bD4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dA0Kb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDUsIFNhbXVlbCBHb2xkc3RlaW4gPGEgaHJlZj0ibWFpbHRvOnNqZ0BjbXNtb2R1bGVzLmNvbSI+PHNqZ0BjbXNtb2R1bGVzLmNvbT48L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8bGk+VmVyc2lvbiAwLjEuNSAtIDE3IE5vdmllbWJyZSAyMDA1LiBMYW56YW1pZW50byBJbmljaWFsLiBKZXN1cywgVmF5YSBxdWUgdG9tJm9hY3V0ZTsgdGllbXBvIS48L2xpPg0KPGxpPlZlcnNpb24gMC4xIC0gMTkgTWFyem8gMjAwNS4gSW5pY2lhY2kmb2FjdXRlO24gZGVsIFByb3llY3RvLjwvbGk+DQo8L3VsPic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0FzZWd1cmVzZSBkZSBmaWphciBsb3MgcGVybWlzb3MgZGUgJnF1b3Q7QWp1c3RlcyBEZSBDYXQmYWFjdXRlO2xvZ28mcXVvdDsgcGFyYSB1c3VhcmlvcyBxdWUgdmFuIGEgYWRtaW5pc3RyYXIgZWwgY2F0JmFhY3V0ZTtsb2dvLic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjYwMjI5NDc4Ni4xMjIxNzgzNzcxLjEyMjMzMzc5MjMuMTIyMzQwMjM2Mi40NSc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyMjM0MDIzNjIuNDUuMzMudXRtY2NuPShyZWZlcnJhbCl8dXRtY3NyPWZvcnVtLmNtc21hZGVzaW1wbGUub3JnfHV0bWNjdD0vaW5kZXgucGhwL3RvcGljLDEzMTMzLjAuaHRtbHx1dG1jbWQ9cmVmZXJyYWwnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/et_EE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ25hbWVpbWFnZXMnXSA9ICdQaWxkaWQnOwokbGFuZ1snZGVsZXRlaW1hZ2UnXSA9ICdLdXN0dXRhIHBpbHQnOwokbGFuZ1snT3duZXInXSA9ICdPbWFuaWsnOwokbGFuZ1snQ2F0YWxvZ0l0ZW0nXSA9ICdFc2VtZSBrYXRhbG9naXNlZXJpamEnOwokbGFuZ1snbmFtZXBhZ2UnXSA9ICdMZWh0JzsKJGxhbmdbJ1Blcm1pc3Npb25zJ10gPSAnJk90aWxkZTtpZ3VzZWQnOwokbGFuZ1snU3ViJ10gPSAnQWxhbSAtJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtX3NvcnRfb3JkZXIyJ10gPSAnRXNlbWUgc29ydGltaXNqJmF1bWw7cmpla29yZCc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfaXRlbXNfcGVyX3BhZ2UyJ10gPSAnRXNlbWVpZCBsZWhlIGtvaHRhJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9jYXRlZ29yeV9yZWN1cnNlMiddID0gJ0Rpc3BsYXkgQmVoYXZpb3InOwokbGFuZ1snd2hpY2hfYXR0cmlidXRlcyddID0gJ01pbGxpc2VpZCBvbWFkdXNpIHBlYWtzIG4mYXVtbDtpdGFtYSBrYXRhbG9vZ2lzJzsKJGxhbmdbJ25hdlRhYiddID0gJyB8ICc7CiRsYW5nWyduZWVkcGVybWlzc2lvbiddID0gJ1NlbGxla3MgdGVnZXZ1c2VrcyBvbiBzdWwgdmFqYSAlcy4nOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnS2F0YWxvb2dpamEnOwokbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddID0gJ0hhbGRhIEthdGFsb29naSBTZWFkZWlkJzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdPbGVkIHNhIGtpbmRlbCwgZXQgc29vdmlkIGt1c3R1dGFkYSAlcz8nOwokbGFuZ1sndW5pcXVlY29kZSddID0gJ1VuaWthYWxuZSBLb29kJzsKJGxhbmdbJ3RlbXBsYXRlbGlzdCddID0gJ0FsYW0tbWFsbGlkJzsKJGxhbmdbJ2xpc3R0ZW1wbCddID0gJ0hhbGRhIEFsYW0tbWFsbGUnOwokbGFuZ1sndGl0bGVfaXRlbV90YWInXSA9ICdFc2VtZSBvbWFkdXNlZCc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV90YWInXSA9ICdLYXRlZ29vcmlhIG9tYWR1c2VkJzsKJGxhbmdbJ3RpdGxlX3ByaW50YWJsZV90YWInXSA9ICdQcmluZGl0YXZhIGthdGFsb29naSBzZWFkZWQnOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV90YWInXSA9ICdFc2VtZSBwaWxkaSBzdXVydXMnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2VfdGFiJ10gPSAnS2F0ZWdvb3JpYSBsZWhlIHNlYWRlZCc7CiRsYW5nWyd0aXRsZV9pc190ZXh0ZmllbGQnXSA9ICdUZWtzdGlhbGE/JzsKJGxhbmdbJ3RpdGxlX2RlbGV0ZSddID0gJ0t1c3R1dGE/JzsKJGxhbmdbJ3RpdGxlX2FzcGVjdF90YWInXSA9ICdQaWxkaSBsYWl1c2UgamEgayZvdGlsZGU7cmd1c2Ugc3VoZSc7CiRsYW5nWyd0aXRsZV9pbWFnZV90YWInXSA9ICdNdXVkIHBpbGRpIHNlYWRlZCc7CiRsYW5nWyd0aXRsZV9pdGVtX3RlbXBsYXRlX3ZhcnMnXSA9ICdFc2VtZSBtYWxsaSBtdXV0dWphZCc7CiRsYW5nWyd0aXRsZV9jYXRfdGVtcGxhdGVfdmFycyddID0gJ0thdGVnb29yaWEgbWFsbGkgbXV1dHVqYWQnOwokbGFuZ1sndGl0bGVfZmVhdHVyZV90ZW1wbGF0ZV92YXJzJ10gPSAnT21hZHVzdGUgbWFsbGkgbXV1dHVqYWQnOwokbGFuZ1sndGl0bGVfc2hvd19vbmx5X2V4aXN0aW5nX2ltYWdlcyddID0gJyZBdW1sO3JhIGxpc2EgcHV1ZHV2YWlkIHBpbHRlJzsKJGxhbmdbJ3RpdGxlX3Nob3dfb25seV9leGlzdGluZ19pbWFnZXNfaGVscCddID0gJ1RoaXMgd2lsbCBvbmx5IHB1dCBpbWFnZSByZWZlcmVuY2VzIGludG8gbGlzdHMgaWYgdGhlIGltYWdlIGV4aXN0cy48YnIgLz4oTm9ybWFsbHksIHRoaXMgaXMgZmluZSwgYnV0IGlmIHlvdSBhcmUgZG9pbmcgc29tZXRoaW5nIGNsZXZlciB3aXRoIGltYWdlPGJyIC8+YXJyYXkgaW5kZXhlcywgdGhpcyBjb3VsZCBjYXVzZSB5b3UgdHJvdWJsZS4pJzsKJGxhbmdbJ3RpdGxlX2ZsdXNoX2NhdHMnXSA9ICdUJnV1bWw7aGplbmRhIGthdGVnb29yaWEgbGVoZSBwdWh2cmlkJzsKJGxhbmdbJ3RpdGxlX2ZsdXNoX2NhdHNfaGVscCddID0gJ0lmIHlvdSBoYXZlIGEgaHVnZSBudW1iZXIgb2YgaXRlbXMgZGlzcGxheWVkPGJyIC8+aW4gYSBjYXRlZ29yeSwgc29tZSBQSFAgaW5zdGFsbHMgd2lsbCBmYWlsIHRvIGRpc3BsYXkgdGhlIHBhZ2U8YnIgLz5jb3JyZWN0bHkuIENoZWNrIHRoaXMgYm94IHRvIHNvbHZlIHRoaXMgcHJvYmxlbSAodGVzdCBmb3Igc2lkZSBlZmZlY3RzKS4nOwokbGFuZ1snY2F0YWxvZ2VyJ10gPSAnS2F0YWxvb2dpamEnOwokbGFuZ1snaXRlbV9wYWdlJ10gPSAnRXNlbWUgbGVodCc7CiRsYW5nWydjYXRlZ29yeV9wYWdlJ10gPSAnS2F0ZWdvb3JpYSBsZWh0JzsKJGxhbmdbJ2NhdGFsb2dfcHJpbnRhYmxlJ10gPSAnUHJpbmRpdGF2IGthdGFsb29nJzsKJGxhbmdbJ2NhdGFsb2dfZGF0YXNoZWV0J10gPSAnS2F0YWxvb2dpIGFuZG1lbGVodCc7CiRsYW5nWydjYXRhbG9nX3Nob3J0X2xpc3QnXSA9ICdPbWFkdXN0ZSBsaXN0JzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtX3NvcnRfb3JkZXInXSA9ICdFc2VtZXRlIHNvcnRlZXJpbWlzZSBqJmF1bWw7cmpla29yZCc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfaXRlbXNfcGVyX3BhZ2UnXSA9ICdFc2VtZXRlIGFydiAmdXVtbDtoZWwgbGVoZWwnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2NhdGVnb3J5X3JlY3Vyc2UnXSA9ICdLYXRlZ29vcmlhIHZhYXRlIGsmYXVtbDtpdHVtaW5lJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fc29ydF9vcmRlciddID0gJ1ZhaWtpbWlzaSBzb3J0ZWVyaW1pbmUnOwokbGFuZ1sndGl0bGVfcHJpbnRhYmxlX3NvcnRfb3JkZXInXSA9ICdWYWlraW1pc2kgcHJpbmRpdGF2YSBrYXRhbG9vZ2kgc29ydGVlcmltaW5lJzsKJGxhbmdbJ3RpdGxlX2l0ZW1zX3Blcl9wYWdlJ10gPSAnVmFpa2ltaXNpIGVzbWVpZCAmdXVtbDtoZWwgbGVoZWwnOwokbGFuZ1sndGl0bGVfYXZhaWxfYXR0cnMnXSA9ICdNYWxsaSBqYW9rcyBzYWFkYXZhbCBvbGV2YWQgZXNtZSBvbWFkdXNlZCc7CiRsYW5nWyd0aXRsZV9hdmFpbF9pbWF0dHJzJ10gPSAnTWFsbGkgamFva3Mgc2FhZGF2YWwgb2xldmFkIGVzbWUgcGlsZGlkJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV9oZXJvJ10gPSAnUGlsZGkgc3V1cnVzIGVzZW1lIGxlaGVsIChsYWl1cyBwaWtzbGl0ZXMpJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV90aHVtYm5haWwnXSA9ICdFZWx2YWF0ZSBwaWxkaSBzdXVydXMgKGxhaXN1IHBpa3NsaXRlcyknOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX2NhdGVnb3J5J10gPSAnVGh1bWJuYWlsIGltYWdlIHNpemUgZm9yIEl0ZW0gb24gQ2F0ZWdvcnkgUGFnZSAobG9uZyBheGlzIGluIHBpeGVscyknOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX2NhdGFsb2cnXSA9ICdUaHVtYm5haWwgaW1hZ2Ugc2l6ZSBmb3IgSXRlbSBvbiBDYXRhbG9nIFBhZ2UgKGxvbmcgYXhpcyBpbiBwaXhlbHMpJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX3NpemVfaGVybyddID0gJ0ltYWdlIHNpemUgZm9yIENhdGVnb3J5IFBhZ2UgKGxvbmcgYXhpcyBpbiBwaXhlbHMpJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX3NpemVfdGh1bWJuYWlsJ10gPSAnVGh1bWJhaWwgaW1hZ2Ugc2l6ZSBmb3IgQ2F0ZWdvcnkgUGFnZSAobG9uZyBheGlzIGluIHBpeGVscyknOwokbGFuZ1sndGl0bGVfdGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSc7CiRsYW5nWyd0aXRsZV90ZW1wbGF0ZV90eXBlJ10gPSAnVGVtcGxhdGUgVHlwZSc7CiRsYW5nWyd0aXRsZV90aXRsZSddID0gJ1RpdGxlJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2VfY291bnQnXSA9ICdNYXhpbXVtIG51bWJlciBvZiB2aWV3cyBmb3IgZWFjaCBJdGVtJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX2NvdW50J10gPSAnTWF4aW11bSBudW1iZXIgb2YgQmFubmVyIGltYWdlcyBmb3IgZWFjaCBDYXRlZ29yeSBQYWdlJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fYXR0cmlidXRlc19oZWxwJ10gPSAnRWFjaCBhdHRyaWJ1dGUgeW91IGVudGVyIGhlcmUgd2lsbCBiZSB0aGUgdGl0bGUgb2YgYSBmaWVsZCB0aGF0IHlvdSBjYW4gdXNlIHRvIGRlc2NyaWJlIGFuIGluZGl2aWR1YWwgaXRlbSwgYW5kIHdpbGwgYmUgZGlzcGxheWVkIHdpdGggdGhhdCBpdGVtLiBZb3UgbWF5IGhhdmUgdG8gdXBkYXRlIHlvdXIgdGVtcGxhdGUgdG8gcmVmbGVjdCB0aGVzZSBhdHRyaWJ1dGVzLiBCbGFuayBvdXQgb3IgdHlwZSBvdmVyIGFuIGV4aXN0aW5nIGF0dHJpYnV0ZSB0byByZW1vdmUgb3IgcmVwbGFjZSBpdC4nOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfYXR0cmlidXRlc19oZWxwJ10gPSAnRWFjaCBhdHRyaWJ1dGUgeW91IGVudGVyIGhlcmUgd2lsbCBiZSB0aGUgdGl0bGUgb2YgYSBmaWVsZCB0aGF0IHlvdSBjYW4gdXNlIHRvIGRlc2NyaWJlIGFuIGl0ZW0gY2F0ZWdvcnksIGFuZCB3aWxsIGJlIGRpc3BsYXllZCBvbiB0aGF0IGNhdGVnb3J5IHBhZ2UuIFlvdSBtYXkgaGF2ZSB0byB1cGRhdGUgeW91ciB0ZW1wbGF0ZSB0byByZWZsZWN0IHRoZXNlIGF0dHJpYnV0ZXMuIEJsYW5rIG91dCBvciB0eXBlIG92ZXIgYW4gZXhpc3RpbmcgYXR0cmlidXRlIHRvIHJlbW92ZSBvciByZXBsYWNlIGl0Lic7CiRsYW5nWyd0aXRsZV9jYXRhbG9nX2F0dHJpYnV0ZXNfaGVscCddID0gJ0VhY2ggYXR0cmlidXRlIHlvdSBlbnRlciBoZXJlIHdpbGwgYmUgdGhlIHRpdGxlIG9mIGEgZmllbGQgdGhhdCB5b3UgY2FuIHVzZSB0byBkZXNjcmliZSB0aGUgZW50aXJlIGNhdGFsb2csIGFuZCB3aWxsIGJlIGRpc3BsYXllZCBvbiB0aGUgcHJpbnRhYmxlIGNhdGFsb2cgcGFnZS4gWW91IG1heSBoYXZlIHRvIHVwZGF0ZSB5b3VyIHRlbXBsYXRlIHRvIHJlZmxlY3QgdGhlc2UgYXR0cmlidXRlcy4gQmxhbmsgb3V0IG9yIHR5cGUgb3ZlciBhbiBleGlzdGluZyBhdHRyaWJ1dGUgdG8gcmVtb3ZlIG9yIHJlcGxhY2UgaXQuJzsKJGxhbmdbJ3RpdGxlX2ZvcmNlX2FzcGVjdF9yYXRpbyddID0gJ0ZvcmNlIGltYWdlcyB0byBhIHNwZWNpZmllZCBBc3BlY3QgcmF0aW8/JzsKJGxhbmdbJ3RpdGxlX2ZvcmNlX2FzcGVjdF9yYXRpb19sYWJlbCddID0gJ0ZvcmNlIGFzcGVjdCByYXRpbyAobm90IHlldCBpbXBsZW1lbnRlZCknOwokbGFuZ1sndGl0bGVfaW1hZ2VfYXNwZWN0X3JhdGlvJ10gPSAnQXNwZWN0IHJhdGlvIChzcGVjaWZ5IGFzICZxdW90OzQ6MyZxdW90OyBvciAmcXVvdDsxOjIuNSZxdW90OyknOwokbGFuZ1sndGl0bGVfYXNwZWN0X3JhdGlvX2hlbHAnXSA9ICdJZiB5b3UgZm9yY2UgYW4gaW1hZ2UgdG8gYSBzcGVjaWZpZWQgYXNwZWN0IHJhdGlvLCBpdCB3aWxsIGJlIHNjYWxlZCB0byBmaXQgZXhhY3RseSB0aGF0IGFzcGVjdCByYXRpbyAob3IgaXRzIGludmVyc2UsIHNvIHlvdSBjYW4gaGF2ZSBib3RoIHBvcnRyYWl0IGFuZCBsYW5kc2NhcGUgZm9ybWF0cykuIE90aGVyd2lzZSwgaW1hZ2VzIHdpbGwgcHJlc2VydmUgdGhlaXIgYXNwZWN0IHJhdGlvLCBhbmQgYmUgc2NhbGVkIHNvIHRoZWlyIGxvbmcgYXhpcyBpcyB0aGUgc2l6ZSBzcGVjaWZpZWQuIDxiPnRoaXMgaXMgbm90IHlldCBpbXBsZW1lbnRlZCE8L2I+JzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3NvcnQnXSA9ICdDYXRlZ29yeSBQYWdlIEl0ZW0tbGlzdCBzb3J0IG9yZGVyJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2UnXSA9ICdEZWZhdWx0IENhdGVnb3J5IERpc3BsYXkgQmVoYXZpb3InOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9pdGVtc19hbGwnXSA9ICdJbmNsdWRlIGFsbCBJdGVtcyB3aXRoaW4gdGhpcyBjYXRlZ29yeSwgaW5jbHVkaW5nIGl0ZW1zIGluIHN1Yi1jYXRlZ29yaWVzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfaXRlbXNfb25lJ10gPSAnSW5jbHVkZSBhbGwgSXRlbXMgaW1tZWRpYXRlbHkgd2l0aGluIHRoaXMgY2F0ZWdvcnksIGJ1dCBub3QgaXRlbXMgaW4gc3ViLWNhdGVnb3JpZXMnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9jYXRlZ29yaWVzX2FsbCddID0gJ0luY2x1ZGUgYWxsIENhdGVnb3JpZXMgd2l0aGluIHRoaXMgY2F0ZWdvcnksIGluY2x1ZGluZyBjYXRlZ29yaWVzIGluIHN1Yi1jYXRlZ29yaWVzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfY2F0ZWdvcmllc19vbmUnXSA9ICdJbmNsdWRlIGFsbCBDYXRlZ29yaWVzIGltbWVkaWF0ZWx5IHdpdGhpbiB0aGlzIGNhdGVnb3J5LCBidXQgbm90IGNhdGVnb3JpZXMgaW4gc3ViLWNhdGVnb3JpZXMnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9taXhlZF9hbGwnXSA9ICdJbmNsdWRlIGFsbCBJdGVtcyBhbmQgQ2F0ZWdvcmllcyB3aXRoaW4gdGhpcyBjYXRlZ29yeSwgaW5jbHVkaW5nIGl0ZW1zIGFuZCBjYXRlZ29yaWVzIGluIHN1Yi1jYXRlZ29yaWVzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfbWl4ZWRfb25lJ10gPSAnSW5jbHVkZSBhbGwgSXRlbXMgYW5kIENhdGVnb3JpZXMgaW1tZWRpYXRlbHkgd2l0aGluIHRoaXMgY2F0ZWdvcnksIGJ1dCBub3QgaXRlbXMgb3IgY2F0ZWdvcmllcyBpbiBzdWItY2F0ZWdvcmllcyc7CiRsYW5nWyd0aXRsZV9zaG93X21pc3NpbmdfaW1hZ2VzJ10gPSAnU2hvdyAmcXVvdDtObyBJbWFnZSZxdW90OyBpbWFnZSBmb3IgbWlzc2luZyBpbWFnZXMnOwokbGFuZ1sndGl0bGVfc2hvd19taXNzaW5nX2ltYWdlc19sb25nJ10gPSAnU2hvdyBhIHNwZWNpYWwgJnF1b3Q7Tm8gSW1hZ2UmcXVvdDsgaW1hZ2UgaWYgdGhlcmUgYXJlIG1pc3NpbmcgaW1hZ2VzIChvdGhlcndpc2Ugd2lsbCB1c2UgYSBzaW5nbGUgcGl4ZWwgdHJhbnNwYXJlbnQgaW1hZ2UpLic7CiRsYW5nWyduYXR1cmFsX29yZGVyJ10gPSAnTmF2aWdhdGlvbiBPcmRlcic7CiRsYW5nWydhbHBoYV9vcmRlciddID0gJ0FscGhhYmV0aWNhbCBPcmRlcic7CiRsYW5nWydtYW5hZ2VwcmVmcyddID0gJ01hbmFnZSBQcmVmZXJlbmNlcyc7CiRsYW5nWydtYW5hZ2VhdHRycyddID0gJ01hbmFnZSBVc2VyLURlZmluZWQgQXR0cmlidXRlcyc7CiRsYW5nWydnbG9iYWxvcHMnXSA9ICdHbG9iYWwgQ2F0YWxvZyBPcGVyYXRpb25zJzsKJGxhbmdbJ2FkZHRlbXBsYXRlJ10gPSAnQWRkIFRlbXBsYXRlJzsKJGxhbmdbJ3JlaW1wb3J0dGVtcGxhdGVzJ10gPSAnUmUtaW1wb3J0IGV4YW1wbGUgc3ViLXRlbXBsYXRlcyc7CiRsYW5nWydyZWltcG9ydGVkJ10gPSAnU2FtcGxlIHN1Yi10ZW1wbGF0ZXMgaGF2ZSBiZWVuIGltcG9ydGVkLic7CiRsYW5nWyd0ZW1wbGF0ZXVwZGF0ZWQnXSA9ICdUZW1wbGF0ZSBhZGRlZC91cGRhdGVkLic7CiRsYW5nWyd0ZW1wbGF0ZWRlbGV0ZWQnXSA9ICdUZW1wbGF0ZSBkZWxldGVkLic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdQcmVmZXJlbmNlcyB1cGRhdGVkLic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bGUgdmVyc2lvbiAlcyBpbnN0YWxsZWQuJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWxlIHVwZ3JhZGVkIHRvIHZlcnNpb24gJXMuJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9vZHVsIGVlbWFsZGF0dWQuJzsKJGxhbmdbJ2F0dHJzdXBkYXRlZCddID0gJ09tYWR1c2VkIHV1ZW5kYXR1ZC4nOwokbGFuZ1snbm9nbG9iYWxjaGFuZ2UnXSA9ICcmQXVtbDtyYSBtdXVkYSc7CiRsYW5nWydnbG9iYWxseXVwZGF0ZWQnXSA9ICdDaGFuZ2VzIHByb3BhZ2F0ZWQgZ2xvYmFsbHkuJzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ011dWRhIG1hbGxpJzsKJGxhbmdbJ3N1YnRlbXBsYXRlcyddID0gJ0thdGFsb29naSBhbGFtLW1hbGxpZCc7CiRsYW5nWyduZXh0J10gPSAnOiZyYXF1bzsnOwokbGFuZ1sncHJldiddID0gJyZsYXF1bzs6JzsKJGxhbmdbJ2VkaXQnXSA9ICdNdXVkYSc7CiRsYW5nWydkZWxldGUnXSA9ICdLdXN0dXRhJzsKJGxhbmdbJ25vdGVtcGxhdGVzJ10gPSAnQWxhbS1tYWxsZSBlaSBvbGUgaW5zdGFsbGVlcml0dWQhJzsKJGxhbmdbJ2hlbHB0ZXh0J10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5UaGlzIG1vZHVsZSBsZXRzIHlvdSBjcmVhdGUgb25saW5lIGNhdGFsb2dzIG9yIHBvcnRmb2xpb3MuIENhdGFsb2dzIGNvbnNpc3Qgb2YgJnF1b3Q7Q2F0YWxvZyBJdGVtcyZxdW90OyB3aGljaCBjb3VsZCBiZSBwcm9kdWN0cywgd29ya3Mgb2YgYXJ0LCBvciB0aGUgbGlrZSwgYW5kICZxdW90O0NhdGFsb2cgQ2F0ZWdvcmllcyZxdW90OyB3aGljaCBjb3VsZCBiZSBpdGVtIGNhdGVnb3JpZXMgb3Igb3RoZXIgbmF0dXJhbCBkaXZpc2lvbnMgb2YgdGhlIGNhdGFsb2cuPC9wPg0KPHA+Q2F0ZWdvcmllcyBtYXkgYmUgZGVmaW5lZCBoaWVyYXJjaGljYWxseSAodXNpbmcgdGhlIHN0YW5kYXJkIENNUyBNYWRlIFNpbXBsZSBjb250ZW50IGxpc3QpLiBDYXRlZ29yeSBwYWdlcyBjYW4gZGlzcGxheSBpdGVtcyBpbiB0aGUgY2F0ZWdvcnkgYW5kL29yIHN1YmNhdGVnb3JpZXMsIG9wdGlvbmFsbHkgcmVjdXJzaW5nIHRocm91Z2ggc3ViLWNhdGVnb3JpZXMuIFRoaXMgYmVoYXZpb3IgY2FuIGJlIGNvbmZpZ3VyZWQgb24gYSBwZXItY2F0ZWdvcnkgYmFzaXMuPC9QPg0KPHA+VGhlcmUgaXMgYWxzbyBhIFByaW50YWJsZSBDYXRhbG9nLCB3aGljaCByZXByZXNlbnRzIHRoZSB3aG9sZSBjb2xsZWN0aW9uIG9mIENhdGFsb2cgSXRlbXMgb24gYSBzaW5nbGUgcGFnZSAodGhpcyBpcyBjdXJyZW50bHkgaW1wbGVtZW50ZWQgYmFkbHksIGFuZCB3aWxsIGxvYWQgc2xvd2x5KS48L3A+DQo8cD5UaGUgbW9kdWxlIGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciAmcXVvdDtDb250ZW50IEFsaWFzZXMmcXVvdDsgKGEgbW9kdWxlIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnRhbGlhc2VzLyI+dGhlIERldmVsb3BlciBGb3JnZTwvYT4pLCB3aGljaCBhbGxvd3MgeW91IHRvIHBsYWNlIGFueSBDYXRhbG9nIEl0ZW0gaW50byBtdWx0aXBsZSBDYXRhbG9nIENhdGVnb3JpZXMuPC9wPg0KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+DQo8cD5XaGVuIHlvdSBpbnN0YWxsIHRoaXMgbW9kdWxlLCBpdCBjcmVhdGVzIHRocmVlIG5ldyBDb250ZW50IFR5cGVzOiBDYXRhbG9nIEl0ZW0sIENhdGFsb2cgQ2F0ZWdvcnksIGFuZCBQcmludGFibGUgQ2F0YWxvZy4gV2hlbiB5b3UmIzAzOTtyZSBpbiB5b3VyIHNpdGUgYWRtaW5pc3RyYXRpb24gY2F0ZWdvcnksIHlvdSBhZGQgQ2F0YWxvZyBJdGVtcyBhbmQgQ2F0YWxvZyBDYXRlZ29yaWVzIGp1c3QgYXMgeW91IHdvdWxkIGFueSBvdGhlciBraW5kIG9mIHBhZ2UuIFNlbGVjdCBDb250ZW50ICZhbXA7Z3Q7IFBhZ2VzICZhbXA7Z3Q7IEFkZCBDb250ZW50LCBhbmQgdGhlbiBzZWxlY3QgJnF1b3Q7Q2F0YWxvZyBJdGVtJnF1b3Q7IG9yICZxdW90O0NhdGFsb2cgQ2F0ZWdvcnkmcXVvdDsgZnJvbSB0aGUgQ29udGVudCBUeXBlIHB1bGxkb3duLjwvcD4NCjxoND5DYXRhbG9nIEl0ZW1zPC9oND4NCjxwPkFkZGluZyBhIENhdGFsb2cgSXRlbSBpcyBzaW1pbGFyIHRvIGFkZGluZyBhbiBvcmRpbmFyeSBwYWdlIHRvIHlvdXIgc2l0ZS4gVGhlIGRhdGEgZmllbGRzIGZvciB0aGUgSXRlbSBhcmUgbm90IGV4YWN0bHkgdGhlIHNhbWUsIGhvd2V2ZXIuIEFsc28gbm90ZSB0aGF0IGluIHRoZSAmcXVvdDtJbWFnZXMmcXVvdDsgdGFiLCB5b3UgY2FuIHNlbGVjdCBtdWx0aXBsZSBpbWFnZXMgdG8gdXBsb2FkIGZvciB0aGUgaXRlbS4gV2hlbiB5b3UgdXBsb2FkIGltYWdlcywgdGhlIHN5c3RlbSB3aWxsIHNpemUgdGhlbSBhcHByb3ByaWF0ZWx5IGZvciB0aGUgY2F0YWxvZywgY3JlYXRlIHRodW1ibmFpbHMgZm9yIHVzZSBpbiB0aGUgSXRlbSYjMDM5O3MgcGFnZSwgY3JlYXRlIHRodW1ibmFpbHMgZm9yIGFueSBDYXRlZ29yeSBwYWdlcywgYW5kIHNvIG9uLiBUaGlzIHJlcXVpcmVzIHRoYXQgeW91IGhhdmUgR0Qgb3IgYSBzaW1pbGFyIGltYWdlIGxpYnJhcnkgaW5zdGFsbGVkLiBDdXJyZW50bHksIG9ubHkganBlZyBmb3JtYXQgaW1hZ2VzIGFyZSBzdXBwb3J0ZWQuPC9wPg0KPGg0PkNhdGFsb2cgQ2F0ZWdvcmllczwvaDQ+DQo8cD5BIENhdGFsb2cgQ2F0ZWdvcnkgaXMgdXNlZCBmb3Igb3JnYW5pemluZyB5b3VyIGNhdGFsb2cgaXRlbXMuIEl0IHByb3ZpZGVzIGEgcGFnZSB0aGF0IGxpc3RzIENhdGFsb2dlciBjb250ZW50IHRoYXQgaXMgY29udGFpbmVkIGJ5IGl0LiBBIENhdGFsb2cgSXRlbSBpcyBjb25zaWRlcmVkIHRvIGJlIHBhcnQgb2YgYSBDYXRhbG9nIENhdGVnb3J5IGlmIGl0IGlzIGJlbG93IHRoYXQgQ2F0ZWdvcnkgaW4gdGhlIFNpdGUgSGllcmFyY2h5LiBDYXRlZ29yaWVzIGNhbiBzaW1pbGFybHkgaW5jbHVkZSBvdGhlciBDYXRlZ29yaWVzLjwvcD4NCjxwPkNhdGFsb2cgQ2F0ZWdvcmllcyBoYXZlIGEgbnVtYmVyIG9mIHNldHRpbmdzIHRvIGRldGVybWluZSBob3cgdGhleSBzaG91bGQgZGlzcGxheSB0aGUgSXRlbXMgYW5kIENhdGVnb3JpZXMgdGhleSBjb250YWluOiBpZiB5b3UgbG9vayBhdCB0aGUgJnF1b3Q7T3B0aW9ucyZxdW90OyB0YWIsIHlvdSBjYW4gY2hvb3NlIGhvdyBtYW55IGl0ZW1zIGFuZC9vciBjYXRlZ29yaWVzIHRvIHNob3csIHdoYXQgb3JkZXIgdG8gc2hvdyB0aGVtIGluLCB3aGV0aGVyIHRvIGRpc3BsYXkgb25seSBpdGVtcyBvciBvbmx5IGNhdGVnb3JpZXMgb3IgYm90aCwgYW5kIGhvdyBtYW55IGxldmVscyBvZiB0aGUgaGllcmFyY2h5IHRvIGRpc3BsYXkgYmVsb3cgdGhlIGNhdGVnb3J5IHBhZ2UuPC9wPg0KPHA+Rm9yIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOjwvcD4NCjxvbD4NCgk8bGk+PGI+SGF0czwvYj4NCgkJPG9sPg0KCQkJPGxpPjxiPkZhc2hpb248L2I+DQoJCQkgCTxvbD4NCgkJCSAJCTxsaT5GZWF0aGVyZWQgSGF0PC9saT48bGk+RmVkb3JhIDwvbGk+PGxpPkJhc2ViYWxsIEhhdDwvbGk+DQoJCQkgCTwvb2w+DQoJCQkgPC9saT4NCgkJIAk8bGk+PGI+V29yayBIYXRzPC9iPg0KCQkgICAgCTxvbD4NCgkJICAgIAkJPGxpPkhhcmQgSGF0PC9saT48bGk+RGl2aW5nIEhlbG1ldDwvbGk+DQoJCSAgICAJPC9vbD4NCgkJICAgIDwvbGk+DQoJCTwvb2w+DQoJPC9saT4NCjwvb2w+DQo8cD5JbiB0aGlzIGRpYWdyYW0sIGJvbGRlZCBpdGVtcyBhcmUgQ2F0YWxvZyBDYXRlZ29yaWVzLCBhbmQgbm9uLWJvbGRlZCBpdGVtcyBhcmUgQ2F0YWxvZyBJdGVtcy4gRGVwZW5kaW5nIHVwb24gaG93IHlvdSBzZXQgeW91ciBvcHRpb25zLCB0aGUgSGF0cyBDYXRlZ29yeSBQYWdlIGNhbiBzaG93IG9ubHkgZW50cmllcyBmb3IgdGhlIEZhc2hpb24gYW5kIFdvcmsgSGF0cyBDYXRlZ29yeSBQYWdlcywgb3IgaXQgY2FuIHNob3cgZW50cmllcyBmb3IgRmFzaGlvbiwgV29yayBIYXRzLCBhbmQgYWxsIHRoZSBoYXRzIGxpc3RlZCBiZWxvdyB0aGVtLjwvcD4NCjxwPllvdSBjYW4gb3B0IHRvIHNob3cgdGhlIGl0ZW1zIGluICZxdW90O25hdHVyYWwmcXVvdDsgb3JkZXIgKGkuZS4sIHRoZSBvcmRlciB0aGUgSXRlbXMgc2hvdyB1cCBpbiB0aGUgQ01TIENvbnRlbnQgSGllcmFyY2h5KSwgb3IgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLjwvUD4NCjxwPklmIHlvdSBoYXZlIGxhcmdlIG51bWJlcnMgb2YgaXRlbXMgaW4gYSBDYXRlZ29yeSwgeW91IGNhbiBzZXQgdGhlIG1heGltdW0gbnVtYmVyIHRvIGJlIGRpc3BsYXllZCBpbiBhIENhdGVnb3J5IFBhZ2UsIGFuZCB0aGUgcGFnZSB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGxpbmtzIHRvIG5hdmlnYXRlIHRocm91Z2ggdGhlIGxpc3QuPC9wPg0KPHA+RWFjaCBDYXRlZ29yeSBwYWdlIGNhbiBoYXZlIGRpZmZlcmVudCBzZXR0aW5ncyBmb3Igc29ydCBvcmRlciwgbGV2ZWxzIHRvIGRpc3BsYXksIGFuZCBudW1iZXIgb2YgaXRlbXMuIFlvdSBjYW4gc2V0IHRoZSBkZWZhdWx0IGZvciB0aGVzZSB2YWx1ZXMgaW4gRXh0ZW5zaW9ucyAmYW1wO2d0OyBDYXRhbG9nZXIgJmFtcDtndDsgTWFuYWdlIFByZWZlcmVuY2VzLiBJZiwgYXQgYSBsYXRlciBkYXRlLCB5b3Ugd2lzaCB0byBjaGFuZ2Ugc29tZSBzZXR0aW5nIG9uIGFsbCBvZiB5b3VyIENhdGVnb3J5IHBhZ2VzLCB5b3UgY2FuIGdvIGludG8gRXh0ZW5zaW9ucyAmYW1wO2d0OyBDYXRhbG9nZXIgJmFtcDtndDsgR2xvYmFsIENhdGFsb2cgT3B0aW9ucywgYW5kIG1ha2UgdGhvc2UgY2hhbmdlcy48L3A+DQo8aDQ+SW1hZ2VzPC9oND4NCjxwPkNhdGFsb2dlciBhbGxvd3MgeW91IHRvIHNlbGVjdCBkaWZmZXJlbnQgc2l6ZSBpbWFnZXMgZm9yIEl0ZW0gcGFnZXMsIENhdGVnb3J5IHBhZ2VzLCBhbmQgdGhlIFByaW50YWJsZSBDYXRhbG9nLiBZb3UgY2FuIHNldCB0aGVzZSBkZWZhdWx0cyBpbiBFeHRlbnNpb25zICZhbXA7Z3Q7IENhdGFsb2dlciAmYW1wO2d0OyBNYW5hZ2UgUHJlZmVyZW5jZXMuPC9wPg0KPHA+V2hlbiB5b3UgdXBsb2FkIGltYWdlcywgdGhlIG9yaWdpbmFsIGlzIHN0b3JlZC4gV2hlbiBzb21lb25lIHZpc2l0cyBhIHBhZ2UsIHRoZSByZWR1Y2VkIHNpemUgaW1hZ2VzIGFyZSByZXF1ZXN0ZWQgdXNpbmcgYSBzcGVjaWFsIFVSTCwgd2hpY2ggd2lsbCByZWRpcmVjdCB0aGUgdXNlciYjMDM5O3MgYnJvd3NlciB0byB0aGUgc2NhbGVkIGltYWdlIGlmIGl0IGV4aXN0cywgYW5kIGNyZWF0aW5nIHRoZSBzY2FsZWQgaW1hZ2UgaWYgaXQgZG9lc24mIzAzOTt0LiBUaGlzIGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBzaXplIG9mIGltYWdlcywgd2l0aG91dCBoYXZpbmcgdG8gcmUtdXBsb2FkIGFsbCB0aGUgaW1hZ2VzLCBvciByZXNjYWxpbmcgdGhlbSBhbGwgYXQgb25jZS48L3A+DQo8cD5UaGlzIGltYWdlIHJlc2NhbGluZyBjb2RlIHJlcXVpcmVzIHRoYXQgeW91IGhhdmUgZWl0aGVyIEltYWdlTWFnaWNrIG9yIEdEIGxpYiBpbnN0YWxsZWQsIGFuZCBjb25maWd1cmVkIGluIHlvdXIgQ01TIE1hZGUgU2ltcGxlIGNvbmZpZy5waHAuPC9wPg0KPGgzPkZlYXR1cmUgTGlzdHM8L2gzPg0KPHA+WW91IGNhbiwgYXMgb2YgdmVyc2lvbiAwLjQsIGhhdmUgJnF1b3Q7ZmVhdHVyZSBsaXN0cyZxdW90OyB3aGljaCBhcmUgdGhlIDxpPm48L2k+IG1vc3QtcmVjZW50bHkgYWRkZWQgY2F0YWxvZyBpdGVtcywgb3IgYSBjb2xsZWN0aW9uIG9mIDxpPms8L2k+IHJhbmRvbSBpdGVtcyBmcm9tIHRoZSBjYXRhbG9nLjwvcD4NCjxoND4mcXVvdDtBbGwmcXVvdDsgRmVhdHVyZSBMaXN0PC9oND4NCjxwPlRvIGdldCBhIGxpc3Qgb2YgYWxsIGNhdGFsb2cgaXRlbXMgKG9wdGlvbmFsbHkgdW5kZXIgYSBzcGVjaWZpZWQgcGFydCBvZiB5b3VyIGhpZXJhcmNoeSkgZm9yIHByb2Nlc3NpbmcgdmlhIGEgdGVtcGxhdGUsIHlvdSBjYW4gdXNlDQp0aGUgJnF1b3Q7YWxsJnF1b3Q7IGZlYXR1cmUgbGlzdC48L3A+DQo8cD5UaGUgc3ludGF4IGZvciBhbiAmcXVvdDthbGwmcXVvdDsgbGlzdCBpcyBsaWtlOjwvcD4NCjxwPiZhbXA7IzEyMztjbXNfbW9kdWxlIG1vZHVsZT0mIzAzOTtDYXRhbG9nZXImIzAzOTsgYWN0aW9uPSYjMDM5O2FsbCYjMDM5OyBzdWJfdGVtcGxhdGU9JiMwMzk7bXlfc3ViX3RlbXBsYXRlJiMwMzk7fSwgd2hlcmUgc3ViX3RlbXBsYXRlIGlzIHRoZSB0ZW1wbGF0ZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBsaXN0Lg0KVGhlcmUgaXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyLCBhbGlhcz0mIzAzOTtwYWdlX2FsaWFzJiMwMzk7LCB3aGVyZSBwYWdlX2FsaWFzIGluZGljYXRlcyB0aGUgdG9wIG9mIHRoZSB0cmVlIChlLmcuLCBhIHBsYWNlIGluIHlvdXIgbWVudQ0KaGllcmFyY2h5LCB0eXBpY2FsbHkgYSBjYXRlZ29yeSBwYWdlKSBpbiB3aGljaCB0byBsb29rIGZvciBuZXcgaXRlbXMuIEEgc3BlY2lhbCB2YWx1ZSBmb3IgJnF1b3Q7cGFnZV9hbGlhcyZxdW90OyBpcyAmcXVvdDsvJnF1b3Q7LCB3aGljaCBtZWFucyB0bw0Kc3RhcnQgYXQgdGhlIHJvb3QuPC9wPg0KPHA+VGhpcyBpcyB1c2VmdWwgZm9yIGNhdGFsb2ctd2lkZSBvcGVyYXRpb25zLiBGb3IgZXhhbXBsZSwgdG8gZ2V0IGEgbGlzdCBvZiBhbGwgY2F0ZWdvcmllcyAoYW5kIGRvIHNvbWV0aGluZyB3aXRoIHRoZW0pLA0KeW91IGNvdWxkIHVzZSB0aGUgdGFnICZhbXA7IzEyMztjbXNfbW9kdWxlIG1vZHVsZT0mIzAzOTtDYXRhbG9nZXImIzAzOTsgYWN0aW9uPSYjMDM5O2FsbCYjMDM5OyBzdWJfdGVtcGxhdGU9JiMwMzk7bXlfc3ViX3RlbXBsYXRlJiMwMzk7IGFsaWFzPSYjMDM5Oy8mIzAzOTsgcmVjdXJzZT0mIzAzOTtjYXRlZ29yaWVzX2FsbCYjMDM5O30uIFlvdXIgdGVtcGxhdGUgY291bGQgdGhlbiB0aHJvdw0KdGhvc2UgY2F0ZWdvcmllcyBpbnRvIGEgcHVsbGRvd24gbWVudSB0aGF0IHJlZGlyZWN0ZWQgeW91IHRvIHRoYXQgY2F0ZWdvcnkmIzAzOTtzIHBhZ2UsIGZvciBleGFtcGxlOjwvcD4NCjxwcmU+DQomYW1wO2x0O3NlbGVjdCBuYW1lPSZxdW90O2ZvbyZxdW90OyBvbmNoYW5nZT0mcXVvdDtkb2N1bWVudC5sb2NhdGlvbj10aGlzLm9wdGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4XS52YWx1ZTsmcXVvdDs+DQomYW1wO2x0O29wdGlvbiB2YWx1ZT0mcXVvdDsmcXVvdDs+U2VsZWN0IEEgdGFyZ2V0JmFtcDtsdDsvb3B0aW9uPg0KJmFtcDsjMTIzO2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT10aGlzb25lfQ0KICAgJmFtcDtsdDtvcHRpb24gdmFsdWU9JnF1b3Q7JmFtcDsjMTIzOyR0aGlzb25lLmxpbmt9JnF1b3Q7PiZhbXA7IzEyMzskdGhpc29uZS50aXRsZX0mYW1wO2x0Oy9vcHRpb24+DQomYW1wOyMxMjM7L2ZvcmVhY2h9DQomYW1wO2x0Oy9zZWxlY3Q+DQo8L3ByZT4NCjxwPklmIHlvdSB3YW50ZWQgdGhhdCB0byBvbmx5IHNob3cgY2F0ZWdvcmllcyB0aGF0IHdlcmUgaW4gdGhlIHZlcnkgdG9wIGxldmVsIG9mIHlvdXIgaGVpcmFyY2h5LCB5b3UmIzAzOTtkIHJlcGxhY2UgdGhlIHJlY3Vyc2U9JiMwMzk7Y2F0ZWdvcmllc19hbGwmIzAzOTsgd2l0aA0KcmVjdXJzZT0mIzAzOTtjYXRlZ29yaWVzX29uZSYjMDM5Oy4gT3IgaWYgeW91IHdhbnRlZCBpdCB0byBiZSBhbGwgY2F0YWxvZyBJdGVtcyBpbnN0ZWFkIG9mIGNhdGVnb3JpZXMsIHlvdSBjb3VsZCB1c2UgYSB0YWcgbGlrZToNCiZhbXA7IzEyMztjbXNfbW9kdWxlIG1vZHVsZT0mIzAzOTtDYXRhbG9nZXImIzAzOTsgYWN0aW9uPSYjMDM5O2FsbCYjMDM5OyBzdWJfdGVtcGxhdGU9JiMwMzk7bXlfc3ViX3RlbXBsYXRlJiMwMzk7IGFsaWFzPSYjMDM5Oy8mIzAzOTsgcmVjdXJzZT0mIzAzOTtpdGVtc19hbGwmIzAzOTt9DQo8cD5TaW1pbGFybHksIHlvdSBjb3VsZCBoYXZlIGl0IGxpc3Qgb25seSBjYXRlZ29yaWVzIHVuZGVyIHRoZSBjdXJyZW50IHBhZ2UgKGJ5IG9taXR0aW5nIHRoZSAmcXVvdDthbGlhcz0mIzAzOTsvJiMwMzk7JnF1b3Q7KS4gVGhlIGNvbWJpbmF0aW9ucyBhcmUgYmFzaWNhbGx5IGxpbWl0bGVzcyE8L3A+DQo8cD5BbGwgc3VwcG9ydGVkIHZhbHVlcyBvZiByZWN1cnNlIGluY2x1ZGU6PHVsPg0KPGxpPml0ZW1zX29uZSAtIENhdGFsb2cgaXRlbXMsIG5vIG1vcmUgdGhhbiBvbmUgbGV2ZWwgYmVsb3cgdGhlIGN1cnJlbnQgcGFnZSAob3IgYWxpYXMgcG9pbnQpPC9saT4NCjxsaT5pdGVtc19hbGwgLSBDYXRhbG9nIGl0ZW1zLCBhdCBhbnkgbGV2ZWwgYmVsb3cgdGhlIGN1cnJlbnQgcGFnZSAob3IgYWxpYXMgcG9pbnQpPC9saT4NCjxsaT5jYXRlZ29yaWVzX29uZSAtIENhdGVnb3JpZXMsIG5vIG1vcmUgdGhhbiBvbmUgbGV2ZWwgYmVsb3cgdGhlIGN1cnJlbnQgcGFnZSAob3IgYWxpYXMgcG9pbnQpPC9saT4NCjxsaT5jYXRlZ29yaWVzX2FsbCAtIENhdGVnb3JpZXMsIGF0IGFueSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KPGxpPm1peGVkX29uZSAtIENhdGFsb2cgaXRlbXMgYW5kIENhdGVnb3JpZXMsIG5vIG1vcmUgdGhhbiBvbmUgbGV2ZWwgYmVsb3cgdGhlIGN1cnJlbnQgcGFnZSAob3IgYWxpYXMgcG9pbnQpPC9saT4NCjxsaT5taXhlZF9hbGwgLSBDYXRhbG9nIGl0ZW1zIGFuZCBDYXRlZ29yaWVzLCBhdCBhbnkgbGV2ZWwgYmVsb3cgdGhlIGN1cnJlbnQgcGFnZSAob3IgYWxpYXMgcG9pbnQpPC9saT4NCjwvdWw+DQo8L3A+DQo8aDQ+UmVjZW50bHkgQWRkZWQgRmVhdHVyZSBMaXN0PC9oND4NCjxwPlRvIHVzZSBhICZxdW90O21vc3QtcmVjZW50bHkgYWRkZWQmcXVvdDsgbGlzdCB3aWxsIGFsbG93IHlvdSB0byBkaXNwbGF5IHRoZSBtb3N0IHJlY2VudGx5LWFkZGVkIGNhdGFsb2cgaXRlbXMgdW5kZXIgYSBzcGVjaWZpZWQgcGFydCBvZiB5b3VyIGhpZXJhcmNoeS48L3A+DQo8cD5UaGUgc3ludGF4IGZvciBhICZxdW90O21vc3QgcmVjZW50bHkgYWRkZWQmcXVvdDsgbGlzdCBpcyBsaWtlOjwvcD4NCjxwPiZhbXA7IzEyMztjbXNfbW9kdWxlIG1vZHVsZT0mIzAzOTtDYXRhbG9nZXImIzAzOTsgYWN0aW9uPSYjMDM5O3JlY2VudCYjMDM5OyBzdWJfdGVtcGxhdGU9JiMwMzk7bXlfc3ViX3RlbXBsYXRlJiMwMzk7fSwgd2hlcmUgc3ViX3RlbXBsYXRlIGlzIHRoZSB0ZW1wbGF0ZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBsaXN0LiBUaGVyZSBhcmUgdHdvIG9wdGlvbmFsIHBhcmFtZXRlcnMsIGNvdW50PSYjMDM5OzMmIzAzOTsgYWxpYXM9JiMwMzk7cGFnZV9hbGlhcyYjMDM5Oywgd2hlcmUgY291bnQgaXMgdGhlIG51bWJlciBvZiBpdGVtcyB0byBpbmNsdWRlLCBhbmQgcGFnZV9hbGlhcyBpbmRpY2F0ZXMgdGhlIHRvcCBvZiB0aGUgdHJlZSAoZS5nLiwgYSBwbGFjZSBpbiB5b3VyIG1lbnUgaGllcmFyY2h5LCB0eXBpY2FsbHkgYSBjYXRlZ29yeSBwYWdlKSBpbiB3aGljaCB0byBsb29rIGZvciBuZXcgaXRlbXMuIEEgc3BlY2lhbCB2YWx1ZSBmb3IgJnF1b3Q7cGFnZV9hbGlhcyZxdW90OyBpcyAmcXVvdDsvJnF1b3Q7LCB3aGljaCBtZWFucyB0byB1c2UgPGk+YWxsPC9pPiBwYWdlcyBpbiB0aGUgc2l0ZS48L3A+DQo8aDQ+UmFuZG9tIEl0ZW1zIEZlYXR1cmUgTGlzdDwvaDQ+DQo8cD5UaGUgc3ludGF4IGZvciBhICZxdW90O3JhbmRvbSZxdW90OyBsaXN0IGlzIGxpa2U6PC9wPg0KPHA+JmFtcDsjMTIzO2Ntc19tb2R1bGUgbW9kdWxlPSYjMDM5O0NhdGFsb2dlciYjMDM5OyBhY3Rpb249JiMwMzk7cmFuZG9tJiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTt9LCB3aGVyZSBzdWJfdGVtcGxhdGUgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGxpc3QuIFRoZXJlIGFyZSB0d28gb3B0aW9uYWwgcGFyYW1ldGVycywgY291bnQ9JiMwMzk7MyYjMDM5OyBhbGlhcz0mIzAzOTtwYWdlX2FsaWFzJiMwMzk7LCB3aGVyZSBjb3VudCBpcyB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRvIGluY2x1ZGUsIGFuZCBwYWdlX2FsaWFzIGluZGljYXRlcyB0aGUgdG9wIG9mIHRoZSB0cmVlIChlLmcuLCBhIHBsYWNlIGluIHlvdXIgbWVudSBoaWVyYXJjaHksIHR5cGljYWxseSBhIGNhdGVnb3J5IHBhZ2UpIGluIHdoaWNoIHRvIGxvb2sgZm9yIG5ldyBpdGVtcy4gQSBzcGVjaWFsIHZhbHVlIGZvciAmcXVvdDtwYWdlX2FsaWFzJnF1b3Q7IGlzICZxdW90Oy8mcXVvdDssIHdoaWNoIG1lYW5zIHRvIHVzZSA8aT5hbGw8L2k+IHBhZ2VzIGluIHRoZSBzaXRlLjwvcD4NCjxoND5WYXJpYWJsZTwvaDQ+DQo8cD5Zb3UgY2FuIGdyYWIgdmFyaWFibGVzIChhdHRyaWJ1dGVzKSBvdXRzaWRlIG9mIHlvdXIgQ2F0YWxvZ2VyIHRlbXBsYXRlcywgc2F5IGluIGEgZ2xvYmFsIGNvbnRlbnQgYmxvY2ssIHVzaW5nIHRoZSB2YXJpYWJsZSBtZXRob2QuIFRoZSBzeW50YXggbG9va3MgbGlrZTo8L3A+DQo8cD4mYW1wOyMxMjM7Y21zX21vZHVsZSBtb2R1bGU9JiMwMzk7Q2F0YWxvZ2VyJiMwMzk7IGFjdGlvbj0mIzAzOTt2YXJpYWJsZSYjMDM5OyBuYW1lPSYjMDM5O2l0ZW1ub3RlcyYjMDM5OyBkZWZhdWx0PSYjMDM5O25vIG5vdGVzJiMwMzk7fSwgd2hlcmUgbmFtZSBpcyB0aGUgYXR0cmlidXRlIHRvIGRpc3BsYXkgKHVzaW5nIHRoZSBzYW1lIGFsbCBsb3dlci1jYXNlLCBwdW5jdHVhdGlvbi1mcmVlIHJlcHJlc2VudGF0aW9uIGxpa2UgdGhlIHNtYXJ0eSB0ZW1wbGF0ZSB2YXJpYWJsZXMpLCBhbmQgZGVmYXVsdCBpcyB0aGUgdmFsdWUgdG8gdXNlIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IGRlZmluZWQuPC9wPg0KPGgzPkN1c3RvbWl6YXRpb24gYW5kIEFkdmFuY2VkIFRvcGljczwvaDM+DQo8aDQ+Q2F0YWxvZyBJdGVtIEF0dHJpYnV0ZXM8L2g0Pg0KPHA+VGhlIGRlZmF1bHQgaXRlbSBhdHRyaWJ1dGVzIGFyZSB0eXBpY2FsIGZvciBhIGNhdGFsb2cgb2YgcHJvZHVjdHMgb3IgYXJ0d29ya3MsIGJ1dCBieSBnb2luZyBpbnRvIEV4dGVuc2lvbnMgJmFtcDtndDsgQ2F0YWxvZ2VyICZhbXA7Z3Q7IE1hbmFnZSBVc2VyLURlZmluZWQgQXR0cmlidXRlcywgeW91IGNhbiBjaGFuZ2UgdGhlIGF0dHJpYnV0ZXMuIEl0JiMwMzk7cyBiZXN0IHRvIGRlZmluZSB0aGUgYXR0cmlidXRlcyBiZWZvcmUgeW91IHN0YXJ0IGVudGVyaW5nIENhdGFsb2cgSXRlbXMuPC9wPg0KPHA+Tm90ZSB0aGF0IHRoZSBhdHRyaWJ1dGVzIHlvdSBkZWZpbmUgbWF5IG5lZWQgdG8gYmUgYWRkZWQgdG8gdGhlIHRlbXBsYXRlIHRoYXQgeW91JiMwMzk7cmUgdXNpbmcgdG8gZGlzcGxheSBDYXRhbG9nIEl0ZW1zIC0tIHNlZSBDdXN0b20gVGVtcGxhdGVzIGJlbG93LjwvcD4NCjxoND5DYXRhbG9nIENhdGVnb3J5IEF0dHJpYnV0ZXM8L2g0Pg0KPHA+U2ltaWxhcmx5LCB5b3UgY2FuIHNldCBhdHRyaWJ1dGVzIGZvciBDYXRlZ29yaWVzLiBBZ2FpbiwgdGhlIGF0dHJpYnV0ZXMgeW91IGRlZmluZSBtYXkgbmVlZCB0byBiZSBhZGRlZCB0byB0aGUgdGVtcGxhdGUgdGhhdCB5b3UmIzAzOTtyZSB1c2luZyB0byBkaXNwbGF5IENhdGFsb2cgQ2F0ZWdvcmllcyAtLSBzZWUgQ3VzdG9tIFRlbXBsYXRlcyBiZWxvdy48L3A+DQo8aDQ+UHJpbnRhYmxlIENhdGFsb2cgQXR0cmlidXRlczwvaDQ+DQo8cD5MaWtld2lzZSwgeW91IGNhbiBzZXQgYXR0cmlidXRlcyBmb3IgUHJpbnRhYmxlIENhdGFsb2dzLiBBZ2FpbiwgdGhlIGF0dHJpYnV0ZXMgeW91IGRlZmluZSBtYXkgbmVlZCB0byBiZSBhZGRlZCB0byB0aGUgdGVtcGxhdGUgdGhhdCB5b3UmIzAzOTtyZSB1c2luZyB0byBkaXNwbGF5IHlvdXIgUHJpbnRhYmxlIENhdGFsb2cgLS0gc2VlIEN1c3RvbSBUZW1wbGF0ZXMgYmVsb3cuPC9wPg0KPGg0PkN1c3RvbSBUZW1wbGF0ZXM8L2g0Pg0KPHA+SWYgeW91JiMwMzk7cmUgd2lsbGluZyB0byBtZXNzIGFyb3VuZCB3aXRoIFNtYXJ0eSBUZW1wbGF0ZXMsIHlvdSBjYW4gY2hhbmdlIHRoZSBsYXlvdXQgb2YgYW55IG9mIHRoZSBwYWdlcyBnZW5lcmF0ZWQgYnkgQ2F0YWxvZ2VyLiBUaGlzIHNob3VsZCBtYWtlIGNlcnRhaW4gZGV2ZWxvcGVycyB2ZXJ5IGhhcHB5LCBldmVuIGlmIHRoZSBpbmVmZmljaWVuY3kgb2YgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgd2lsbCBub3QuIFRoZXJlIGFyZSBmb3VyIGtpbmRzIG9mIHRlbXBsYXRlczogb25lIGtpbmQgZm9yIENhdGFsb2cgSXRlbXMsIG9uZSBraW5kIGZvciBDYXRhbG9nIENhdGVnb3JpZXMsIGFuZCBvbmUga2luZCBmb3IgUHJpbnRhYmxlIENhdGFsb2dzLCBhbmQgb25lIGtpbmQgZm9yICZxdW90O0ZlYXR1cmUmcXVvdDsgbGlzdHMsIHN1Y2ggYXMgcmVjZW50bHkgYWRkZWQgaXRlbXMgb3IgcmFuZG9tIHNlbGVjdGlvbnMuPC9wPg0KPHA+V2hlbiBlZGl0aW5nIGEgVGVtcGxhdGUsIHRoZSBhZG1pbiBzY3JlZW4gd2lsbCBkaXNwbGF5IGEgbGlzdCBvZiBTbWFydHkgdGFncyBhdmFpbGFibGUgdG8geW91IGZvciB0aGF0IGtpbmQgb2YgdGVtcGxhdGUuIFRoaXMNCndpbGwgb25seSBoYXBwZW4gb25jZSB0aGUgbW9kdWxlIGtub3dzIHdoYXQga2luZCBvZiB0ZW1wbGF0ZSB5b3UmIzAzOTtyZSBlZGl0aW5nLCBzbyB3aGVuIHlvdSBmaXJzdCBjcmVhdGUgdGhlIHRlbXBsYXRlLCBpdCBkaXNwbGF5cyBhbGwNCnRoZSBTbWFydHkgdGFncyBpdCBrbm93cyBhYm91dCwgb25seSBzb21lIG9mIHdoaWNoIGJlaW5nIGFwcGxpY2FibGUuPC9wPg0KPGg0PlNtYXJ0eSB0YWdzIGluIEF0dHJpYnV0ZXM8L2g0Pg0KPHA+U29tZXRpbWVzLCB5b3UmIzAzOTtsbCB3YW50IHRoZSBkZXNjcmlwdGlvbnMgb2YgeW91ciBpdGVtcyB0byBpbmNsdWRlIHNtYXJ0eSB0YWdzIChlLmcuLCBjbXNfc2VsZmxpbmspLiBUbyBtYWtlIHRoYXQgd29yaywgeW91JiMwMzk7bGwgbmVlZCB0bw0KdXBkYXRlIHlvdXIgdGVtcGxhdGUuIEZvciB0aGUgYXR0cmlidXRlcyB3aGVyZSB5b3Ugd2FudCBzbWFydHkgdGFncyB0byBiZSBhY3RpdmUsIHlvdSYjMDM5O2xsIG5lZWQgdG8gbmVzdCB0aGUgc21hcnR5IGV2YWx1YXRpb25zIGluIHlvdXIgdGVtcGxhdGUuIEZvciBleGFtcGxlOjwvcD4NCjxwcmU+DQomYW1wOyMxMjM7ZXZhbCB2YXI9JGF0dHJsaXN0W2F0XS5rZXl9DQo8L3ByZT4NCjxwPmJlY29tZXM6PC9wPg0KPHByZT4NCiZhbXA7IzEyMztldmFsIHZhcj0kZW50cnktPmlucHV0IGFzc2lnbj10aGlzQXR0cn0mYW1wOyMxMjM7ZXZhbCB2YXI9JHRoaXNBdHRyfQ0KPC9wcmU+DQo8cD5VZ2x5PyBZdXAuIEJ1dCBpdCB3b3Jrcy48L3A+DQo8aDM+Q2F0YWxvZ2VyIEltYWdlIFN5c3RlbTwvaDM+DQo8cD5DYXRhbG9nZXIgaGFzIGFuIGltYWdlIHN5c3RlbSB0aGF0IHdpbGwgYWxsb3cgeW91IHRvIGR5bmFtaWNhbGx5IGNoYW5nZSB0aGUgaW1hZ2UgZGlzcGxheSBzaXplLiBJZiB5b3UgZG8gbm90IGxpa2UgaXQsIHlvdSBjYW4gYWx0ZXINCnRoZSB0ZW1wbGF0ZXMgYW5kIHVzZSBhbnkgaW1hZ2Ugc3lzdGVtIHlvdSB3YW50LjwvcD4NCjxwPldoZW4geW91IHVwbG9hZCBhbiBpbWFnZSB1c2luZyBDYXRhbG9nZXIsIGl0IGdldHMgcHV0IGluIGEgc3BlY2lhbCBzZXQgb2YgZGlyZWN0b3JpZXMgdG8gbWFrZSB0aGUgaW1hZ2luZyBlYXNpZXIuIFlvdSB3aWxsIHNlZSBtb3JlDQphYm91dCB0aGlzIGxhdGVyLjwvcD4NCjxwPkl0IHdvcmtzIGJ5IGNhbGxpbmcgYSBQSFAgcHJvZ3JhbSBpbnN0ZWFkIG9mIGRpcmVjdGx5IHJlZmVyZW5jaW5nIHRoZSBpbWFnZS4gVGhlIHByb2dyYW0gdXNlcyB0aGUgZmlsZW5hbWUgdG8gc2VlIGlmIHRoZQ0KaW1hZ2UgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGNvcnJlY3Qgc2l6ZS4gSWYgc28sIGl0IHJlZGlyZWN0cyB0byB0aGF0IGltYWdlLiBPdGhlcndpc2UsIGl0IHVzZXMgeW91ciBHRExJQiBvciBJbWFnZU1hZ2ljayB0byBjcmVhdGUNCnRoZSBpbWFnZSBpbiB0aGUgY29ycmVjdCBzaXplLCBhbmQgdGhlbiByZWRpcmVjdHMgdG8gaXQuDQo8L3A+DQo8aDQ+Q2F0YWxvZ2VyIEltYWdlIEZpbGVzcGVjIEV4cGxhbmF0aW9uPC9oND4NCjxwPkEgY2F0YWxvZ2VyIGltYWdlIGhhcyBhIGZpbGVzcGVjIGxpa2U6DQo8YnIgLz4NCnJvb3RfcGF0aC9tb2R1bGVzL0NhdGFsb2dlci9DYXRhbG9nZXIuSW1hZ2UucGhwP2k9aXRlbW5hbWVfZl8xXzQwMF8xLmpwZyZhbXA7YW1wO2FjPTgyODg4DQo8L3A+DQo8cD5UaGUgaW50ZXJlc3RpbmcgdGhpbmcgaXMgJnF1b3Q7aXRlbW5hbWVfZl8xXzQwMF8xLmpwZyZxdW90OyAtIHRoZSBzdHVmZiBiZWZvcmUgaXMganVzdCBhIGNhbGwgdG8gdGhlIHByb2dyYW0sIGFuZCB0aGUgJmFtcDthbXA7YWM9ODI4ODggaXMgYSByYW5kb20gdGhpbmcgdGhhdA0KaXMgZGVzaWduZWQgdG8gcHJldmVudCBicm93c2VyIGNhY2hpbmcuIFNvIGV4YW1pbmluZyB0aGUgbmFtZSBwaWVjZSBieSBwaWVjZSAoc2VwYXJhdGluZyBhdCB0aGUgdW5kZXJzY29yZXMpLCB3ZSBoYXZlOjwvcD4NCjx1bD4NCjxsaT5pdGVtIG5hbWUgLSB0aGlzIGlzIHRoZSBhbGlhcyBvZiB0aGUgaXRlbS9jYXRlZ29yeSBwYWdlIGNvbnRhaW5pbmcgdGhlIGltYWdlLjwvbGk+DQo8bGk+aW1hZ2UgdHlwZSAtIHRoaXMgaXMgYSBkZXNpZ25hdGlvbiBmb3IgaW1hZ2UgdHlwZTo8dWw+DQo8bGk+ZiAtIGl0ZW0gZnVsbC1zaXplIGltYWdlPC9saT4NCjxsaT50IC0gaXRlbSB0aHVtYm5haWw8L2xpPg0KPGxpPmNmIC0gY2F0ZWdvcnkgZnVsbC1zaXplZCBpbWFnZTwvbGk+DQo8bGk+Y3QgLSBjYXRlZ29yeSB0aHVtYm5haWw8L2xpPg0KPGxpPmN0ZiAtIHByaW50YWJsZSBjYXRhbG9nIGZ1bGwtc2l6ZWQgaW1hZ2U8L2xpPg0KPC91bD4NCjwvbGk+DQo8bGk+aW1hZ2UgbnVtYmVyIC0gc28gYSBnaXZlbiBpdGVtL2NhdGFsb2cvZXRjIGNhbiBoYXZlIG11bHRpcGxlIGltYWdlczwvbGk+DQo8bGk+bG9uZyBkaW1lbnNpb24gLSBsb25nIGRpbWVuc2lvbiBvZiB0aGUgaW1hZ2UsIGluIHBpeGVsczwvbGk+DQo8bGk+bWlzc2luZyBmbGFnIC0gMSBpZiB5b3Ugd2FudCB0byBzaG93IGFuICZxdW90O2ltYWdlIG1pc3NpbmcmcXVvdDsgaW1hZ2UgaWYgdGhpcyBpbWFnZSBkb2VzbiYjMDM5O3QgZXhpc3QsIDAgb3RoZXJ3aXNlPC9saT4NCjwvdWw+DQo8cD4NClRoaXMgd2lsbCB0YWtlIGFuIGltYWdlIGluIHJvb3RfcGF0aC91cGxvYWRzL2ltYWdlcy9jYXRhbG9nX3NyYy9pdGVtbmFtZV9zcmNfMQ0KPC9wPg0KPGgzPkNyZWRpdHM8L2gzPg0KPHA+VGhhbmtzIHRvIDxhIGhyZWY9Imh0dHA6Ly93d3cuaWQtYS5jby51ayI+UGF1bCBDb29wZXI8L2E+IGZvciBzcG9uc29yaW5nIHRoZSBkZXZlbG9wbWVudCBvZiB0ZXh0YXJlYSBhdHRyaWJ1dGVzLjwvcD4NCjxwPlRoYW5rcyB0byBudW1lcm91cyBwYXRpZW50IHVzZXJzIGFuZCBidWcgdGVzdGVycyAobWFueSBvZiB3aG9tIGhhZCBubyBpZGVhIHdoYXQgdGhleSB3ZXJlIGdldHRpbmcgaW50by4pPC9wPiANCjxoMz5TdXBwb3J0PC9oMz4NCjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4NCjx1bD4NCjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBDTVMgTWFkZSBTaW1wbGUgIDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmciPkRldmVsb3BlciBGb3JnZTwvYT4uPC9saT4NCjxsaT5UbyBvYnRhaW4gY29tbWVyY2lhbCBzdXBwb3J0LCBwbGVhc2Ugc2VuZCBhbiBlbWFpbCB0byB0aGUgYXV0aG9yIGF0IDxhIGhyZWY9Im1haWx0bzpzamdAY21zbW9kdWxlcy5jb20iPiZhbXA7bHQ7c2pnQGNtc21vZHVsZXMuY29tJmFtcDtndDs8L2E+LjwvbGk+DQo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+DQo8bGk+VGhlIGF1dGhvciBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPg0KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yIGRpcmVjdGx5IGFuZCBncm92ZWxsaW5nIGZvciBmcmVlIHN1cHBvcnQuPC9saT4NCjwvdWw+DQo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQNCm9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4NCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KPHA+Q29weXJpZ2h0ICZhbXA7Y29weTsgMjAwOCwgU2FtdWVsIEdvbGRzdGVpbiA8YSBocmVmPSJtYWlsdG86c2pnQGNtc21vZHVsZXMuY29tIj4mYW1wO2x0O3NqZ0BjbXNtb2R1bGVzLmNvbSZhbXA7Z3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4nOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPHVsPg0KPGxpPlZlcnNpb24gMC43LjQgLSAyMiBKdW5lIDIwMDkuIEluY29ycG9yYXRlZCBDYWxndXkmIzAzOTtzIGZpeGVzIGZvciAxLjYuPC9saT4NCjxsaT5WZXJzaW9uIDAuNy4zIC0gMTYgSnVuZSAyMDA5LiBCdWcgZml4ZXMgYnkgTnVuby4gTWFkZSBtYXggQ01TIHZlcnNpb24gMS41LjQgaW4gcHJlcCBmb3IgQ01TIDEuNiByZWxlYXNlLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjcuMiAtIDE0IE1hcmNoIDIwMDkuIEJ1ZyBmaXhlcyBieSBOdW5vIENvc3RhLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjcuMSAtIDI5IFNlcHQgMjAwOC4gQWRkZWQgVmFyaWFibGUgbWV0aG9kIGZvciBKYXZpZXIgU2FuIEp1YW4gQ29zdGlsYXMuPC9saT4NCjxsaT5WZXJzaW9uIDAuNyAtIDE3IE1hcmNoIDIwMDguIDxlbT5GaW5hbGx5PC9lbT4gYWRkZWQgcGVyLXBhZ2UgbWV0YS1kYXRhLiBBbmQgdGhlcmUgd2FzIGdyZWF0IGNlbGVicmF0aW9uIGluIHRoZSBzdHJlZXRzLCBhbmQgZGFuY2luZyBpbiB0aGUgdG93biBzcXVhcmUuIEFsc28gYWRkZWQgaW4gbWFueSBIVE1MIGFuZCBsb2NhbGl6YXRpb24gZml4ZXMgY29udHJpYnV0ZWQgYnkgTnVubyBDb3N0YS48L2xpPg0KPGxpPlZlcnNpb24gMC42LjIgLSA3IEphbnVhcnkgMjAwNy4gRml4ZWQgbmFzdHkgYnVnIHdoZXJlIHVwZ3JhZGluZyBtYWtlcyBpdCBsb29rIGxpa2UgYWxsIHlvdXIgbm90ZSBmaWVsZHMgYXJlIGxvc3QuPC9saT4NCjxsaT5WZXJzaW9uIDAuNi4xIC0gMiBKYW51YXJ5IDIwMDcuIEZpeGVkIG5hc3R5IGJ1ZyB3aGVyZSBjaGFuZ2luZyBjb250ZW50IHR5cGUgZnJvbSAmcXVvdDtjb250ZW50JnF1b3Q7IHRvIGNhdGFsb2cgY29udGVudCB0eXBlcyByZW5hbWVkIGFsbCBjYXRhbG9nIGltYWdlcy48L2xpPg0KPGxpPlZlcnNpb24gMC42IC0gMjkgRGVjZW1iZXIgMjAwNy4gPHVsPg0KPGxpPkJ1ZyBmaXg6IEltYWdlcyBkb24mIzAzOTt0IGdldCAmcXVvdDtsb3N0JnF1b3Q7IHdoZW4gcGFnZSBhbGlhcyBjaGFuZ2VzLjwvbGk+DQo8bGk+QnVnIGZpeDogQXR0cmlidXRlIGNvbnRlbnQgZG9lc24mIzAzOTt0IGdldCAmcXVvdDtsb3N0JnF1b3Q7IHdoZW4gYXR0cmlidXRlcyBhcmUgcmVuYW1lZC48L2xpPg0KPGxpPkJ1ZyBmaXg6IEZpeGVkIFByaW50YWJsZSBDYXRhbG9nLiBXb3JrcyBmb3IgZmlyc3QgdGltZSBzaW5jZSB2LjAuNCBvciB0aGVyZWFib3V0cy48L2xpPg0KPGxpPkJ1ZyBmaXg6IE5vdyBob25vcnMgc3lzdGVtIHByZWZlcmVuY2UgZm9yIFdZU0lXWUcgZWRpdGluZyBvZiB0ZXh0IGFyZWFzLjwvbGk+DQo8bGk+RmVhdHVyZTogQXR0cmlidXRlcyBtYXkgbm93IGJlIHRleHQgYXJlYXMuPC9saT4NCjwvdWw+DQo8L2xpPg0KPGxpPlZlcnNpb24gMC41LjYgLSAxMCBEZWNlbWJlciAyMDA3LiBUYXJkeSByb2xsb3V0IG9mIGZpeGVzOiA8dWw+DQo8bGk+QWRkZWQgY29kZSB0byBwcmV2ZW50IHNob3dpbmcgb2Ygbm9uLXVwbG9hZGVkIGltYWdlcywgY2F0ZWdvcnkgcGFnZSBidWZmZXIgZmx1c2hpbmcgZm9yIGV4dHJlbWUgY2FzZXMsIG1pbm9yIGJ1ZyBmaXhlczwvbGk+DQo8bGk+Rml4IGZvciAmIzAzOTtyZWNlbnQmIzAzOTsgYWN0aW9uIHdoZW4gYWxpYXMgaXMgLzwvbGk+DQo8bGk+Rml4IGZvciB0aGUgcHJvYmxlbSB3aGVyZSBjYXRhbG9ncyB3aXRoIG1vcmUgdGhhbiB0ZW4gY2F0ZWdvcmllcyBoYXZlIGl0ZW1zIGRpc3BsYXllZCBpbiBpbmNvcnJlY3QgY2F0ZWdvcmllczwvbGk+PC91bD48L2xpPg0KPGxpPlZlcnNpb24gMC41LjUgLSAyMCBKdW5lIDIwMDcuIEZpeCBmb3IgQ29udGVudCBBbGlhcyBzdXBwb3J0IC0gcmVxdWlyZXMgQ29udGVudCBBbGlhcyB2LiAwLjYuMS48L2xpPg0KPGxpPlZlcnNpb24gMC41LjQgLSAxOSBKdW5lIDIwMDcuIEFkZGVkICZxdW90O2FsbCZxdW90OyBmZWF0dXJlIGxpc3QuPC9saT4NCjxsaT5WZXJzaW9uIDAuNS4zIC0gMjEgU2VwdGVtYmVyIDIwMDYuIEFkZGVkIGxpbmtzIHRvIHNvdXJjZSAobm9uLXJlc2NhbGVkKSBpbWFnZXMsIGFuZCBhZGRlZCBpbWFnZSBkZWxldGUgZnVuY3Rpb25hbGl0eS48L2xpPg0KPGxpPlZlcnNpb24gMC41LjIgLSAxNyBTZXB0ZW1iZXIgMjAwNi4gUmVtb3ZlZCBkZWJ1ZyBvdXRwdXQsIHJldmlzZWQgaW1hZ2Ugc3lzdGVtIChmaXhlZCBidWdzKS4gQ2FjaGluZyBidWcgc2VlbXMgdG8gcmVtYWluLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjUuMSAtIDI0IEF1Z3VzdCAyMDA2LiAoY2FsZ3V5MTAwMCksIFVwcGVkIE1pbmltdW1DTVNWZXJzaW9uIHRvIDEuMC1zdm4sIGFuZCBtb3JlIDEuMCBjaGFuZ2VzIHdlcmUgYWRkZWQgKHJlbW92ZWQgc3RhdGljIG1ldGhvZHMpPC9saT4NCjxsaT5WZXJzaW9uIDAuNSAtIDE2IEF1Z3VzdCAyMDA2LiBBc3NvcnRlZCBjb250cmlidXRlZCBidWcgZml4ZXMgZm9yIENNUyBNUyAxLjAsICBuZXcgb3B0aW9ucyBmb3IgaW1hZ2VzLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjQuMiAtIDI4IE1heSAyMDA2LiBCdWcgZml4IGZvciBhdHRyaWJ1dGVzIGluIGNhdGVnb3J5IHBhZ2VzLiBBZGRlZCAmcXVvdDsvJnF1b3Q7IHBhZ2VfYWxpYXMgZm9yIGZlYXR1cmUgbGlzdHMuPC9saT4NCjxsaT5WZXJzaW9uIDAuNC4xIC0gMjMgTWF5IDIwMDYuIEJ1ZyBmaXggdG8gbWFrZSB3b3JrIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgQ01TIE1TLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjQgLSAyMiBNYXkgMjAwNi4gQnVnIGZpeGVzLCBGZWF0dXJlIExpc3RzLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjMgLSAodW5yZWxlYXNlZCwgcHVibGlzaGVkIGZyb20gc3ZuKTwvbGk+DQo8bGk+VmVyc2lvbiAwLjIgLSAyMyBNYXJjaCAyMDA2LiBOdW1lcm91cyBidWcgZml4ZXMuIFBlcmZvcm1hbmNlIGltcHJvdmVtZW50cy4gTWVtb3J5IGZvb3RwcmludCBvcHRpbWl6YXRpb25zLiBOb3cgdXNlcyB0aGUgQ01TIDAuMTIgTW9kdWxlIEFQSS48L2xpPg0KPGxpPlZlcnNpb24gMC4xLjUgLSAxNyBOb3ZlbWJlciAyMDA1LiBJbml0aWFsIFJlbGVhc2UuIEplc3VzLCB0aGF0IHRvb2sgYSBsb25nIHRpbWUuPC9saT4NCjxsaT5WZXJzaW9uIDAuMSAtIDE5IE1hcmNoIDIwMDUuIFByb2plY3QgSW5pdGlhdGlvbi48L2xpPg0KPC91bD4nOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdNYWtlIHN1cmUgdG8gc2V0IHRoZSAmcXVvdDtNb2RpZnkgQ2F0YWxvZyBTZXR0aW5ncyZxdW90OyBwZXJtaXNzaW9uIG9uIHVzZXJzIHdobyB3aWxsIGJlIGFkbWluaXN0ZXJpbmcgdGhlIGNhdGFsb2cuJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMzIxNTU0NTI2NjczMjAxOTAwMC4xMjQxMDkxNzg3LjEyNTMxMTI5ODYuMTI1MzExODEwNi4xMTYnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjUzMTEyOTg2LjExNS4yNS51dG1jY249KHJlZmVycmFsKXx1dG1jc3I9Zm9ydW0uY21zbWFkZXNpbXBsZS5vcmd8dXRtY2N0PS9pbmRleC5waHAvdG9waWMsMTUzMTguMC5odG1sfHV0bWNtZD1yZWZlcnJhbCc7CiRsYW5nWydxY2EnXSA9ICcxMjQwNjgzNjE1LTU4NDA5OTczLTc5OTE1MzAzJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/fa_FA.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ25hbWVpbWFnZXMnXSA9ICfYqti12KfZiNuM2LEnOwokbGFuZ1snbmFtZWZpbGVzJ10gPSAn2YHYp9uM2YQg2YfYpyc7CiRsYW5nWyduYW1lZmlsZSddID0gJ9mB2KfbjNmEJzsKJGxhbmdbJ2RlbGV0ZWltYWdlJ10gPSAn2K3YsNmBINiq2LXZiNuM2LEnOwokbGFuZ1snZGVsZXRlZmlsZSddID0gJ9it2LDZgSDZgdin24zZhCc7CiRsYW5nWydPd25lciddID0gJ093bmVyJzsKJGxhbmdbJ0NhdGFsb2dJdGVtJ10gPSAnSXRlbSBDYXRhbG9nZXInOwokbGFuZ1snbmFtZXBhZ2UnXSA9ICfYtdmB2K3Zhyc7CiRsYW5nWydQZXJtaXNzaW9ucyddID0gJ1Blcm1pc3Npb25zJzsKJGxhbmdbJ1N1YiddID0gJ1N1YiAtJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtX3NvcnRfb3JkZXIyJ10gPSAnSXRlbSBTb3J0IE9yZGVyJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtc19wZXJfcGFnZTInXSA9ICdJdGVtcyBQZXIgUGFnZSc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfY2F0ZWdvcnlfcmVjdXJzZTInXSA9ICdEaXNwbGF5IEJlaGF2aW9yJzsKJGxhbmdbJ3doaWNoX2F0dHJpYnV0ZXMnXSA9ICdXaGljaCBhdHRyaWJ1dGVzIHNob3VsZCBiZSBzaG93biBpbiBjYXRhbG9nJzsKJGxhbmdbJ25hdlRhYiddID0gJyB8ICc7CiRsYW5nWyduZWVkcGVybWlzc2lvbiddID0gJ1lvdSBuZWVkICVzIHNldCB0byBkbyB0aGF0Lic7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdDYXRhbG9nZXInOwokbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddID0gJ01hbmFnZSBDYXRhbG9nIHNldHRpbmdzJzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgJXM/JzsKJGxhbmdbJ3VuaXF1ZWNvZGUnXSA9ICdVbmlxdWUgQ29kZSc7CiRsYW5nWyd0ZW1wbGF0ZWxpc3QnXSA9ICdTdWItdGVtcGxhdGVzJzsKJGxhbmdbJ2xpc3R0ZW1wbCddID0gJ01hbmFnZSBTdWItdGVtcGxhdGVzJzsKJGxhbmdbJ3RpdGxlX2ZpZWxkX3R5cGUnXSA9ICdGaWVsZCBUeXBlJzsKJGxhbmdbJ3RpdGxlX3NlbGVjdF92YWx1ZXMnXSA9ICdWYWx1ZSc7CiRsYW5nWyd0aXRsZV9pdGVtX3RhYiddID0gJ0l0ZW0gQXR0cmlidXRlcyc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV90YWInXSA9ICdDYXRlZ29yeSBBdHRyaWJ1dGVzJzsKJGxhbmdbJ3RpdGxlX3ByaW50YWJsZV90YWInXSA9ICdQcmludGFibGUgQ2F0YWxvZyBTZXR0aW5ncyc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3RhYiddID0gJ0l0ZW0gSW1hZ2UgU2V0dGluZ3MnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2VfdGFiJ10gPSAnQ2F0ZWdvcnkgUGFnZSBTZXR0aW5ncyc7CiRsYW5nWyd0aXRsZV9wYXRoX3RhYiddID0gJ1BhdGhzJzsKJGxhbmdbJ3RpdGxlX2RlbGV0ZSddID0gJ0RlbGV0ZT8nOwokbGFuZ1sndGl0bGVfZmlsZV90YWInXSA9ICdJdGVtIEZpbGUgU2V0dGluZ3MnOwokbGFuZ1sndGl0bGVfaW1hZ2VfdGFiJ10gPSAnT3RoZXIgSW1hZ2UgU2V0dGluZ3MnOwokbGFuZ1sndGl0bGVfaXRlbV90ZW1wbGF0ZV92YXJzJ10gPSAnSXRlbSBUZW1wbGF0ZSBWYXJpYWJsZXMnOwokbGFuZ1sndGl0bGVfY2F0X3RlbXBsYXRlX3ZhcnMnXSA9ICdDYXRlZ29yeSBUZW1wbGF0ZSBWYXJpYWJsZXMnOwokbGFuZ1sndGl0bGVfY2F0YWxvZ190ZW1wbGF0ZV92YXJzJ10gPSAnQ2F0YWxvZyBUZW1wbGF0ZSBWYXJpYWJsZXMnOwokbGFuZ1sndGl0bGVfY29tcGFyZV90ZW1wbGF0ZV92YXJzJ10gPSAnQ29tcGFyaXNvbiBUZW1wbGF0ZSBWYXJpYWJsZXMnOwokbGFuZ1sndGl0bGVfZmVhdHVyZV90ZW1wbGF0ZV92YXJzJ10gPSAnRmVhdHVyZSBsaXN0IFRlbXBsYXRlIFZhcmlhYmxlcyc7CiRsYW5nWyd0aXRsZV9zaG93X29ubHlfZXhpc3RpbmdfaW1hZ2VzJ10gPSAnRG9uJiMwMzk7dCBpbmNsdWRlIG1pc3NpbmcgaW1hZ2VzJzsKJGxhbmdbJ3RpdGxlX3Nob3dfb25seV9leGlzdGluZ19pbWFnZXNfaGVscCddID0gJ1RoaXMgd2lsbCBvbmx5IHB1dCBpbWFnZSByZWZlcmVuY2VzIGludG8gbGlzdHMgaWYgdGhlIGltYWdlIGV4aXN0cy48YnIgLz4oTm9ybWFsbHksIHRoaXMgaXMgZmluZSwgYnV0IGlmIHlvdSBhcmUgZG9pbmcgc29tZXRoaW5nIGNsZXZlciB3aXRoIGltYWdlPGJyIC8+YXJyYXkgaW5kZXhlcywgdGhpcyBjb3VsZCBjYXVzZSB5b3UgdHJvdWJsZS4pJzsKJGxhbmdbJ3RpdGxlX2ZsdXNoX2NhdHMnXSA9ICdGbHVzaCBjYXRlZ29yeSBwYWdlIGJ1ZmZlcnMnOwokbGFuZ1sndGl0bGVfZmx1c2hfY2F0c19oZWxwJ10gPSAnSWYgeW91IGhhdmUgYSBodWdlIG51bWJlciBvZiBpdGVtcyBkaXNwbGF5ZWQ8YnIgLz5pbiBhIGNhdGVnb3J5LCBzb21lIFBIUCBpbnN0YWxscyB3aWxsIGZhaWwgdG8gZGlzcGxheSB0aGUgcGFnZTxiciAvPmNvcnJlY3RseS4gQ2hlY2sgdGhpcyBib3ggdG8gc29sdmUgdGhpcyBwcm9ibGVtICh0ZXN0IGZvciBzaWRlIGVmZmVjdHMpLic7CiRsYW5nWyd0aXRsZV9pdGVtX2ZpbGVfdHlwZXMnXSA9ICdQZXJtaXR0ZWQgZmlsZSB0eXBlcyc7CiRsYW5nWyd0aXRsZV9pbWFnZV91cGxvYWRfcGF0aCddID0gJ0xvY2F0aW9uIGZvciB1cGxvYWRlZCBpbWFnZSBmaWxlcyc7CiRsYW5nWyd0aXRsZV9maWxlX3VwbG9hZF9wYXRoJ10gPSAnTG9jYXRpb24gZm9yIG90aGVyIHVwbG9hZGVkIGl0ZW0gZmlsZXMnOwokbGFuZ1sndGl0bGVfaW1hZ2VfcHJvY19wYXRoJ10gPSAnTG9jYXRpb24gZm9yIHByb2Nlc3NlZCBpbWFnZXMgKHRodW1ibmFpbHMsIHNjYWxlZCBpbWFnZXMsIGV0YyknOwokbGFuZ1sncGF0aF9oZWxwJ10gPSAnWW91IGNhbiBzcGVjaWZ5IHdoZXJlIENhdGFsb2dlciBzdG9yZXMgZmlsZXMuIFRoZXNlIHBhdGhzIGFyZSByZWxhdGl2ZSB0byB0aGUgPGk+dXBsb2Fkc19wYXRoPC9pPiBkZWZpbmVkIGluIHlvdXIgY29uZmlnLnBocDxiciAvPk5PVEU6IElmIHlvdSBjaGFuZ2UgdGhlc2UgcGF0aHMgYWZ0ZXIgZmlsZXMgb3IgaW1hZ2VzIGhhdmUgYmVlbiB1cGxvYWRlZCwgQ2F0YWxvZ2VyIHdpbGwgbG9zZSB0aGUgYWxyZWFkeS11cGxvYWRlZCBhc3NldHMgKHRoZXkgd2lsbCBzdGlsbCBiZSB0aGVyZSwgYnV0IENhdGFsb2dlciB3aWxsIG5vdCBrbm93IGFib3V0IHRoZW0sIHNvIHlvdSB3aWxsIG5lZWQgdG8gcmUtdXBsb2FkIHRoZW0gZm9yIENhdGFsb2dlciB0byBmaWd1cmUgaXQgb3V0KS4nOwokbGFuZ1snY2F0YWxvZ2VyJ10gPSAnQ2F0YWxvZ2VyJzsKJGxhbmdbJ3RpdGxlX2F0dHJfb3JkZXJfYnknXSA9ICfahtuM2YbYtCc7CiRsYW5nWyd0aXRsZV9hdHRyX2FsaWFzJ10gPSAnQXR0cmlidXRlIEFsaWFzIChTbWFydHkgRnJpZW5kbHkpJzsKJGxhbmdbJ3RpdGxlX2F0dHJfbGVuZ3RoJ10gPSAnTGVuZ3RoKic7CiRsYW5nWyd0aXRsZV9hdHRyX2RlZmF1bHQnXSA9ICdEZWZhdWx0IFZhbHVlJzsKJGxhbmdbJ3RpdGxlX2F0dHJfbGVuZ3RoX2hlbHAnXSA9ICcqTGVuZ3RoIG9ubHkgYXBwbGllcyB0byAmcXVvdDtUZXh0JnF1b3Q7PGJyIC8+VmFsdWUgaXMgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBvcHRpb25zIGZvciBEcm9wZG93bnM8YnIgLz5WYWx1ZSBzaG91bGQgY29udGFpbiB0aGUgY2hlY2tlZCB2YWx1ZSwgYSBjb21tYSwgYW5kIHRoZSB1bmNoZWNrZWQgdmFsdWUgZm9yIGNoZWNrYm94JzsKJGxhbmdbJ3RleHQnXSA9ICdUZXh0JzsKJGxhbmdbJ2Ryb3Bkb3duJ10gPSAnRHJvcGRvd24nOwokbGFuZ1sndGV4dGFyZWEnXSA9ICdUZXh0IEFyZWEnOwokbGFuZ1snY2hlY2tib3gnXSA9ICdDaGVja2JveCc7CiRsYW5nWydpdGVtX3BhZ2UnXSA9ICdJdGVtIFBhZ2UnOwokbGFuZ1snY2F0ZWdvcnlfcGFnZSddID0gJ0NhdGVnb3J5IFBhZ2UnOwokbGFuZ1snY2F0YWxvZ19wcmludGFibGUnXSA9ICdQcmludGFibGUgQ2F0YWxvZyc7CiRsYW5nWydjYXRhbG9nX2RhdGFzaGVldCddID0gJ0NhdGFsb2cgRGF0YXNoZWV0JzsKJGxhbmdbJ2NhdGFsb2dfc2hvcnRfbGlzdCddID0gJ0ZlYXR1cmUgTGlzdCc7CiRsYW5nWydpdGVtX2NvbXBhcmlzb24nXSA9ICdJdGVtIENvbXBhcmlzb24nOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2l0ZW1fc29ydF9vcmRlciddID0gJ1NldCBpdGVtIHNvcnQgb3JkZXIgdG8nOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2l0ZW1zX3Blcl9wYWdlJ10gPSAnU2V0IG51bWJlciBvZiBpdGVtcyBwZXIgcGFnZSB0byc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfY2F0ZWdvcnlfcmVjdXJzZSddID0gJ1NldCBDYXRlZ29yeSBEaXNwbGF5IEJlaGF2aW9yIHRvJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fc29ydF9vcmRlciddID0gJ0RlZmF1bHQgaXRlbSBzb3J0IG9yZGVyJzsKJGxhbmdbJ3RpdGxlX3ByaW50YWJsZV9zb3J0X29yZGVyJ10gPSAnRGVmYXVsdCBwcmludGFibGUgY2F0YWxvZyBzb3J0IG9yZGVyJzsKJGxhbmdbJ3RpdGxlX2l0ZW1zX3Blcl9wYWdlJ10gPSAnRGVmYXVsdCBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2UnOwokbGFuZ1sndGl0bGVfYXZhaWxfYXR0cnMnXSA9ICdJdGVtIGF0dHJpYnV0ZXMgYXZhaWxhYmxlIGZvciB0aGUgdGVtcGxhdGUnOwokbGFuZ1sndGl0bGVfYXZhaWxfaW1hdHRycyddID0gJ0l0ZW0gaW1hZ2VzIGF2YWlsYWJsZSBmb3IgdGhlIHRlbXBsYXRlJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV9oZXJvJ10gPSAnSW1hZ2Ugc2l6ZSBmb3IgSXRlbSBQYWdlIChsb25nIGF4aXMgaW4gcGl4ZWxzKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfdGh1bWJuYWlsJ10gPSAnVGh1bWJhaWwgaW1hZ2Ugc2l6ZSBmb3IgSXRlbSBQYWdlIChsb25nIGF4aXMgaW4gcGl4ZWxzKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfY2F0ZWdvcnknXSA9ICdUaHVtYm5haWwgaW1hZ2Ugc2l6ZSBmb3IgSXRlbSBvbiBDYXRlZ29yeSBQYWdlIChsb25nIGF4aXMgaW4gcGl4ZWxzKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfY2F0YWxvZyddID0gJ1RodW1ibmFpbCBpbWFnZSBzaXplIGZvciBJdGVtIG9uIENhdGFsb2cgUGFnZSAobG9uZyBheGlzIGluIHBpeGVscyknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV9oZXJvJ10gPSAnSW1hZ2Ugc2l6ZSBmb3IgQ2F0ZWdvcnkgUGFnZSAobG9uZyBheGlzIGluIHBpeGVscyknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV90aHVtYm5haWwnXSA9ICdUaHVtYmFpbCBpbWFnZSBzaXplIGZvciBDYXRlZ29yeSBQYWdlIChsb25nIGF4aXMgaW4gcGl4ZWxzKSc7CiRsYW5nWyd0aXRsZV90ZW1wbGF0ZSddID0gJ9mC2KfZhNioJzsKJGxhbmdbJ3RpdGxlX3RlbXBsYXRlX3R5cGUnXSA9ICdUZW1wbGF0ZSBUeXBlJzsKJGxhbmdbJ3RpdGxlX3RpdGxlJ10gPSAn2LnZhtmI2KfZhic7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX2NvdW50J10gPSAnTWF4aW11bSBudW1iZXIgb2Ygdmlld3MgZm9yIGVhY2ggSXRlbSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ZpbGVfY291bnQnXSA9ICdNYXhpbXVtIG51bWJlciBvZiBvdGhlciBmaWxlcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBpdGVtJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX2NvdW50J10gPSAnTWF4aW11bSBudW1iZXIgb2YgQmFubmVyIGltYWdlcyBmb3IgZWFjaCBDYXRlZ29yeSBQYWdlJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fYXR0cmlidXRlc19oZWxwJ10gPSAnRWFjaCBhdHRyaWJ1dGUgeW91IGVudGVyIGhlcmUgd2lsbCBiZSB0aGUgdGl0bGUgb2YgYSBmaWVsZCB0aGF0IHlvdSBjYW4gdXNlIHRvIGRlc2NyaWJlIGFuIGluZGl2aWR1YWwgaXRlbSwgYW5kIHdpbGwgYmUgZGlzcGxheWVkIHdpdGggdGhhdCBpdGVtLiBZb3UgbWF5IGhhdmUgdG8gdXBkYXRlIHlvdXIgdGVtcGxhdGUgdG8gcmVmbGVjdCB0aGVzZSBhdHRyaWJ1dGVzLic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9hdHRyaWJ1dGVzX2hlbHAnXSA9ICdFYWNoIGF0dHJpYnV0ZSB5b3UgZW50ZXIgaGVyZSB3aWxsIGJlIHRoZSB0aXRsZSBvZiBhIGZpZWxkIHRoYXQgeW91IGNhbiB1c2UgdG8gZGVzY3JpYmUgYW4gaXRlbSBjYXRlZ29yeSwgYW5kIHdpbGwgYmUgZGlzcGxheWVkIG9uIHRoYXQgY2F0ZWdvcnkgcGFnZS4gWW91IG1heSBoYXZlIHRvIHVwZGF0ZSB5b3VyIHRlbXBsYXRlIHRvIHJlZmxlY3QgdGhlc2UgYXR0cmlidXRlcy4nOwokbGFuZ1sndGl0bGVfY2F0YWxvZ19hdHRyaWJ1dGVzX2hlbHAnXSA9ICdFYWNoIGF0dHJpYnV0ZSB5b3UgZW50ZXIgaGVyZSB3aWxsIGJlIHRoZSB0aXRsZSBvZiBhIGZpZWxkIHRoYXQgeW91IGNhbiB1c2UgdG8gZGVzY3JpYmUgdGhlIGVudGlyZSBjYXRhbG9nLCBhbmQgd2lsbCBiZSBkaXNwbGF5ZWQgb24gdGhlIHByaW50YWJsZSBjYXRhbG9nIHBhZ2UuIFlvdSBtYXkgaGF2ZSB0byB1cGRhdGUgeW91ciB0ZW1wbGF0ZSB0byByZWZsZWN0IHRoZXNlIGF0dHJpYnV0ZXMuJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3NvcnQnXSA9ICdDYXRlZ29yeSBQYWdlIEl0ZW0tbGlzdCBzb3J0IG9yZGVyJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2UnXSA9ICdEZWZhdWx0IENhdGVnb3J5IERpc3BsYXkgQmVoYXZpb3InOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9pdGVtc19hbGwnXSA9ICdJbmNsdWRlIGFsbCBJdGVtcyB3aXRoaW4gdGhpcyBjYXRlZ29yeSwgaW5jbHVkaW5nIGl0ZW1zIGluIHN1Yi1jYXRlZ29yaWVzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfaXRlbXNfb25lJ10gPSAnSW5jbHVkZSBhbGwgSXRlbXMgaW1tZWRpYXRlbHkgd2l0aGluIHRoaXMgY2F0ZWdvcnksIGJ1dCBub3QgaXRlbXMgaW4gc3ViLWNhdGVnb3JpZXMnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9jYXRlZ29yaWVzX2FsbCddID0gJ0luY2x1ZGUgYWxsIENhdGVnb3JpZXMgd2l0aGluIHRoaXMgY2F0ZWdvcnksIGluY2x1ZGluZyBjYXRlZ29yaWVzIGluIHN1Yi1jYXRlZ29yaWVzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfY2F0ZWdvcmllc19vbmUnXSA9ICdJbmNsdWRlIGFsbCBDYXRlZ29yaWVzIGltbWVkaWF0ZWx5IHdpdGhpbiB0aGlzIGNhdGVnb3J5LCBidXQgbm90IGNhdGVnb3JpZXMgaW4gc3ViLWNhdGVnb3JpZXMnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9taXhlZF9hbGwnXSA9ICdJbmNsdWRlIGFsbCBJdGVtcyBhbmQgQ2F0ZWdvcmllcyB3aXRoaW4gdGhpcyBjYXRlZ29yeSwgaW5jbHVkaW5nIGl0ZW1zIGFuZCBjYXRlZ29yaWVzIGluIHN1Yi1jYXRlZ29yaWVzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfbWl4ZWRfb25lJ10gPSAnSW5jbHVkZSBhbGwgSXRlbXMgYW5kIENhdGVnb3JpZXMgaW1tZWRpYXRlbHkgd2l0aGluIHRoaXMgY2F0ZWdvcnksIGJ1dCBub3QgaXRlbXMgb3IgY2F0ZWdvcmllcyBpbiBzdWItY2F0ZWdvcmllcyc7CiRsYW5nWyd0aXRsZV9zaG93X21pc3NpbmdfaW1hZ2VzJ10gPSAnU2hvdyAmcXVvdDtObyBJbWFnZSZxdW90OyBpbWFnZSBmb3IgbWlzc2luZyBpbWFnZXMnOwokbGFuZ1sndGl0bGVfc2hvd19taXNzaW5nX2ltYWdlc19sb25nJ10gPSAnU2hvdyBhIHNwZWNpYWwgJnF1b3Q7Tm8gSW1hZ2UmcXVvdDsgaW1hZ2UgaWYgdGhlcmUgYXJlIG1pc3NpbmcgaW1hZ2VzICh1c2VmdWwgZm9yIGRlYnVnZ2luZy4gT3RoZXJ3aXNlIHdpbGwgdXNlIGEgc2luZ2xlIHBpeGVsIHRyYW5zcGFyZW50IGltYWdlKS4nOwokbGFuZ1snbmF0dXJhbF9vcmRlciddID0gJ05hdmlnYXRpb24gT3JkZXInOwokbGFuZ1snYWxwaGFfb3JkZXInXSA9ICdBbHBoYWJldGljYWwgT3JkZXInOwokbGFuZ1snbWFuYWdlcHJlZnMnXSA9ICdNYW5hZ2UgUHJlZmVyZW5jZXMnOwokbGFuZ1snbWFuYWdlYXR0cnMnXSA9ICdNYW5hZ2UgVXNlci1EZWZpbmVkIEF0dHJpYnV0ZXMnOwokbGFuZ1snZ2xvYmFsb3BzJ10gPSAnR2xvYmFsIENhdGFsb2cgT3BlcmF0aW9ucyc7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ9in2LbYp9mB2Ycg2qnYsdiv2YYg2YLYp9mE2KgnOwokbGFuZ1sncmVpbXBvcnR0ZW1wbGF0ZXMnXSA9ICdSZS1pbXBvcnQgZXhhbXBsZSBzdWItdGVtcGxhdGVzJzsKJGxhbmdbJ3JlaW1wb3J0ZWQnXSA9ICdTYW1wbGUgc3ViLXRlbXBsYXRlcyBoYXZlIGJlZW4gaW1wb3J0ZWQuJzsKJGxhbmdbJ3RlbXBsYXRldXBkYXRlZCddID0gJ1RlbXBsYXRlIGFkZGVkL3VwZGF0ZWQuJzsKJGxhbmdbJ3RlbXBsYXRlZGVsZXRlZCddID0gJ9mC2KfZhNioINit2LDZgSDYtNivLic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICfYqtmG2LjbjNmF2KfYqiDYqNix2YjYsiDYtNivLic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bGUgdmVyc2lvbiAlcyBpbnN0YWxsZWQuJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWxlIHVwZ3JhZGVkIHRvIHZlcnNpb24gJXMuJzsKJGxhbmdbJ2JhZGZpbGUnXSA9ICdGaWxlICZxdW90OyVzJnF1b3Q7IGlzIG5vdCBhbiBhY2NlcHRhYmxlIGZvcm1hdC4nOwokbGFuZ1snYmFkaW1hZ2UnXSA9ICdQcm9ibGVtIHVwbG9hZGluZyAmcXVvdDslcyZxdW90OyAoY2hlY2sgZmlsZSBzaXplIGFuZC9vciBzZXJ2ZXIgcGVybWlzc2lvbnMpLic7CiRsYW5nWydiYWRpbWFnZWZvcm1hdCddID0gJyZxdW90OyVzJnF1b3Q7IGlzIG5vdCB2YWxpZC4gT25seSBqcGVncyBhcmUgc3VwcG9ydGVkIGZvciB0aGUgdGltZSBiZWluZy4nOwokbGFuZ1sndXBsb2FkZWQnXSA9ICdGaWxlICZxdW90OyVzJnF1b3Q7IHVwbG9hZGVkIGZvciBpdGVtICVzLic7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBVbmluc3RhbGxlZC4nOwokbGFuZ1snYXR0cnN1cGRhdGVkJ10gPSAnQXR0cmlidXRlcyB1cGRhdGVkLic7CiRsYW5nWydub2dsb2JhbGNoYW5nZSddID0gJ0RvIG5vdCBjaGFuZ2UnOwokbGFuZ1snZ2xvYmFsbHl1cGRhdGVkJ10gPSAnQ2hhbmdlcyBwcm9wYWdhdGVkIGdsb2JhbGx5Lic7CiRsYW5nWydlZGl0dGVtcGxhdGUnXSA9ICfZiNuM2LHYp9uM2LQg2YLYp9mE2KgnOwokbGFuZ1snc3VidGVtcGxhdGVzJ10gPSAnQ2F0YWxvZyBTdWItdGVtcGxhdGVzJzsKJGxhbmdbJ25leHQnXSA9ICc6JnJhcXVvOyc7CiRsYW5nWydwcmV2J10gPSAnJmxhcXVvOzonOwokbGFuZ1snZWRpdCddID0gJ9mI24zYsdin24zYtCc7CiRsYW5nWydkZWxldGUnXSA9ICfYrdiw2YEnOwokbGFuZ1snbm90ZW1wbGF0ZXMnXSA9ICdObyBTdWItdGVtcGxhdGVzIGFyZSBpbnN0YWxsZWQhJzsKJGxhbmdbJ2hlbHB0ZXh0J10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5UaGlzIG1vZHVsZSBsZXRzIHlvdSBjcmVhdGUgb25saW5lIGNhdGFsb2dzIG9yIHBvcnRmb2xpb3MuIENhdGFsb2dzIGNvbnNpc3Qgb2YgJnF1b3Q7Q2F0YWxvZyBJdGVtcyZxdW90OyB3aGljaCBjb3VsZCBiZSBwcm9kdWN0cywgd29ya3Mgb2YgYXJ0LCBvciB0aGUgbGlrZSwgYW5kICZxdW90O0NhdGFsb2cgQ2F0ZWdvcmllcyZxdW90OyB3aGljaCBjb3VsZCBiZSBpdGVtIGNhdGVnb3JpZXMgb3Igb3RoZXIgbmF0dXJhbCBkaXZpc2lvbnMgb2YgdGhlIGNhdGFsb2cuPC9wPg0KPHA+Q2F0ZWdvcmllcyBtYXkgYmUgZGVmaW5lZCBoaWVyYXJjaGljYWxseSAodXNpbmcgdGhlIHN0YW5kYXJkIENNUyBNYWRlIFNpbXBsZSBjb250ZW50IGxpc3QpLiBDYXRlZ29yeSBwYWdlcyBjYW4gZGlzcGxheSBpdGVtcyBpbiB0aGUgY2F0ZWdvcnkgYW5kL29yIHN1YmNhdGVnb3JpZXMsIG9wdGlvbmFsbHkgcmVjdXJzaW5nIHRocm91Z2ggc3ViLWNhdGVnb3JpZXMuIFRoaXMgYmVoYXZpb3IgY2FuIGJlIGNvbmZpZ3VyZWQgb24gYSBwZXItY2F0ZWdvcnkgYmFzaXMuPC9QPg0KPHA+VGhlcmUgaXMgYWxzbyBhIFByaW50YWJsZSBDYXRhbG9nLCB3aGljaCByZXByZXNlbnRzIHRoZSB3aG9sZSBjb2xsZWN0aW9uIG9mIENhdGFsb2cgSXRlbXMgb24gYSBzaW5nbGUgcGFnZSAodGhpcyBpcyBjdXJyZW50bHkgaW1wbGVtZW50ZWQgYmFkbHksIGFuZCB3aWxsIGxvYWQgc2xvd2x5KS48L3A+DQo8cD5UaGUgbW9kdWxlIGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciAmcXVvdDtDb250ZW50IEFsaWFzZXMmcXVvdDsgKGEgbW9kdWxlIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnRhbGlhc2VzLyI+dGhlIERldmVsb3BlciBGb3JnZTwvYT4pLCB3aGljaCBhbGxvd3MgeW91IHRvIHBsYWNlIGFueSBDYXRhbG9nIEl0ZW0gaW50byBtdWx0aXBsZSBDYXRhbG9nIENhdGVnb3JpZXMuPC9wPg0KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+DQo8cD5XaGVuIHlvdSBpbnN0YWxsIHRoaXMgbW9kdWxlLCBpdCBjcmVhdGVzIHRocmVlIG5ldyBDb250ZW50IFR5cGVzOiBDYXRhbG9nIEl0ZW0sIENhdGFsb2cgQ2F0ZWdvcnksIGFuZCBQcmludGFibGUgQ2F0YWxvZy4gV2hlbiB5b3UmIzAzOTtyZSBpbiB5b3VyIHNpdGUgYWRtaW5pc3RyYXRpb24gY2F0ZWdvcnksIHlvdSBhZGQgQ2F0YWxvZyBJdGVtcyBhbmQgQ2F0YWxvZyBDYXRlZ29yaWVzIGp1c3QgYXMgeW91IHdvdWxkIGFueSBvdGhlciBraW5kIG9mIHBhZ2UuIFNlbGVjdCBDb250ZW50ID4gUGFnZXMgPiBBZGQgQ29udGVudCwgYW5kIHRoZW4gc2VsZWN0ICZxdW90O0NhdGFsb2cgSXRlbSZxdW90OyBvciAmcXVvdDtDYXRhbG9nIENhdGVnb3J5JnF1b3Q7IGZyb20gdGhlIENvbnRlbnQgVHlwZSBwdWxsZG93bi48L3A+DQo8aDQ+Q2F0YWxvZyBJdGVtczwvaDQ+DQo8cD5BZGRpbmcgYSBDYXRhbG9nIEl0ZW0gaXMgc2ltaWxhciB0byBhZGRpbmcgYW4gb3JkaW5hcnkgcGFnZSB0byB5b3VyIHNpdGUuIFRoZSBkYXRhIGZpZWxkcyBmb3IgdGhlIEl0ZW0gYXJlIG5vdCBleGFjdGx5IHRoZSBzYW1lLCBob3dldmVyLiBBbHNvIG5vdGUgdGhhdCBpbiB0aGUgJnF1b3Q7SW1hZ2VzJnF1b3Q7IHRhYiwgeW91IGNhbiBzZWxlY3QgbXVsdGlwbGUgaW1hZ2VzIHRvIHVwbG9hZCBmb3IgdGhlIGl0ZW0uIFdoZW4geW91IHVwbG9hZCBpbWFnZXMsIHRoZSBzeXN0ZW0gd2lsbCBzaXplIHRoZW0gYXBwcm9wcmlhdGVseSBmb3IgdGhlIGNhdGFsb2csIGNyZWF0ZSB0aHVtYm5haWxzIGZvciB1c2UgaW4gdGhlIEl0ZW0mIzAzOTtzIHBhZ2UsIGNyZWF0ZSB0aHVtYm5haWxzIGZvciBhbnkgQ2F0ZWdvcnkgcGFnZXMsIGFuZCBzbyBvbi4gVGhpcyByZXF1aXJlcyB0aGF0IHlvdSBoYXZlIEdEIG9yIGEgc2ltaWxhciBpbWFnZSBsaWJyYXJ5IGluc3RhbGxlZC4gQ3VycmVudGx5LCBvbmx5IGpwZWcgZm9ybWF0IGltYWdlcyBhcmUgc3VwcG9ydGVkLjwvcD4NCjxoND5DYXRhbG9nIENhdGVnb3JpZXM8L2g0Pg0KPHA+QSBDYXRhbG9nIENhdGVnb3J5IGlzIHVzZWQgZm9yIG9yZ2FuaXppbmcgeW91ciBjYXRhbG9nIGl0ZW1zLiBJdCBwcm92aWRlcyBhIHBhZ2UgdGhhdCBsaXN0cyBDYXRhbG9nZXIgY29udGVudCB0aGF0IGlzIGNvbnRhaW5lZCBieSBpdC4gQSBDYXRhbG9nIEl0ZW0gaXMgY29uc2lkZXJlZCB0byBiZSBwYXJ0IG9mIGEgQ2F0YWxvZyBDYXRlZ29yeSBpZiBpdCBpcyBiZWxvdyB0aGF0IENhdGVnb3J5IGluIHRoZSBTaXRlIEhpZXJhcmNoeS4gQ2F0ZWdvcmllcyBjYW4gc2ltaWxhcmx5IGluY2x1ZGUgb3RoZXIgQ2F0ZWdvcmllcy48L3A+DQo8cD5DYXRhbG9nIENhdGVnb3JpZXMgaGF2ZSBhIG51bWJlciBvZiBzZXR0aW5ncyB0byBkZXRlcm1pbmUgaG93IHRoZXkgc2hvdWxkIGRpc3BsYXkgdGhlIEl0ZW1zIGFuZCBDYXRlZ29yaWVzIHRoZXkgY29udGFpbjogaWYgeW91IGxvb2sgYXQgdGhlICZxdW90O09wdGlvbnMmcXVvdDsgdGFiLCB5b3UgY2FuIGNob29zZSBob3cgbWFueSBpdGVtcyBhbmQvb3IgY2F0ZWdvcmllcyB0byBzaG93LCB3aGF0IG9yZGVyIHRvIHNob3cgdGhlbSBpbiwgd2hldGhlciB0byBkaXNwbGF5IG9ubHkgaXRlbXMgb3Igb25seSBjYXRlZ29yaWVzIG9yIGJvdGgsIGFuZCBob3cgbWFueSBsZXZlbHMgb2YgdGhlIGhpZXJhcmNoeSB0byBkaXNwbGF5IGJlbG93IHRoZSBjYXRlZ29yeSBwYWdlLjwvcD4NCjxwPkZvciBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTo8L3A+DQo8b2w+DQoJPGxpPjxiPkhhdHM8L2I+DQoJCTxvbD4NCgkJCTxsaT48Yj5GYXNoaW9uPC9iPg0KCQkJIAk8b2w+DQoJCQkgCQk8bGk+RmVhdGhlcmVkIEhhdDwvbGk+PGxpPkZlZG9yYSA8L2xpPjxsaT5CYXNlYmFsbCBIYXQ8L2xpPg0KCQkJIAk8L29sPg0KCQkJIDwvbGk+DQoJCSAJPGxpPjxiPldvcmsgSGF0czwvYj4NCgkJICAgIAk8b2w+DQoJCSAgICAJCTxsaT5IYXJkIEhhdDwvbGk+PGxpPkRpdmluZyBIZWxtZXQ8L2xpPg0KCQkgICAgCTwvb2w+DQoJCSAgICA8L2xpPg0KCQk8L29sPg0KCTwvbGk+DQo8L29sPg0KPHA+SW4gdGhpcyBkaWFncmFtLCBib2xkZWQgaXRlbXMgYXJlIENhdGFsb2cgQ2F0ZWdvcmllcywgYW5kIG5vbi1ib2xkZWQgaXRlbXMgYXJlIENhdGFsb2cgSXRlbXMuIERlcGVuZGluZyB1cG9uIGhvdyB5b3Ugc2V0IHlvdXIgb3B0aW9ucywgdGhlIEhhdHMgQ2F0ZWdvcnkgUGFnZSBjYW4gc2hvdyBvbmx5IGVudHJpZXMgZm9yIHRoZSBGYXNoaW9uIGFuZCBXb3JrIEhhdHMgQ2F0ZWdvcnkgUGFnZXMsIG9yIGl0IGNhbiBzaG93IGVudHJpZXMgZm9yIEZhc2hpb24sIFdvcmsgSGF0cywgYW5kIGFsbCB0aGUgaGF0cyBsaXN0ZWQgYmVsb3cgdGhlbS48L3A+DQo8cD5Zb3UgY2FuIG9wdCB0byBzaG93IHRoZSBpdGVtcyBpbiAmcXVvdDtuYXR1cmFsJnF1b3Q7IG9yZGVyIChpLmUuLCB0aGUgb3JkZXIgdGhlIEl0ZW1zIHNob3cgdXAgaW4gdGhlIENNUyBDb250ZW50IEhpZXJhcmNoeSksIG9yIGluIGFscGhhYmV0aWNhbCBvcmRlci48L1A+DQo8cD5JZiB5b3UgaGF2ZSBsYXJnZSBudW1iZXJzIG9mIGl0ZW1zIGluIGEgQ2F0ZWdvcnksIHlvdSBjYW4gc2V0IHRoZSBtYXhpbXVtIG51bWJlciB0byBiZSBkaXNwbGF5ZWQgaW4gYSBDYXRlZ29yeSBQYWdlLCBhbmQgdGhlIHBhZ2Ugd2lsbCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBsaW5rcyB0byBuYXZpZ2F0ZSB0aHJvdWdoIHRoZSBsaXN0LjwvcD4NCjxwPkVhY2ggQ2F0ZWdvcnkgcGFnZSBjYW4gaGF2ZSBkaWZmZXJlbnQgc2V0dGluZ3MgZm9yIHNvcnQgb3JkZXIsIGxldmVscyB0byBkaXNwbGF5LCBhbmQgbnVtYmVyIG9mIGl0ZW1zLiBZb3UgY2FuIHNldCB0aGUgZGVmYXVsdCBmb3IgdGhlc2UgdmFsdWVzIGluIEV4dGVuc2lvbnMgPiBDYXRhbG9nZXIgPiBNYW5hZ2UgUHJlZmVyZW5jZXMuIElmLCBhdCBhIGxhdGVyIGRhdGUsIHlvdSB3aXNoIHRvIGNoYW5nZSBzb21lIHNldHRpbmcgb24gYWxsIG9mIHlvdXIgQ2F0ZWdvcnkgcGFnZXMsIHlvdSBjYW4gZ28gaW50byBFeHRlbnNpb25zID4gQ2F0YWxvZ2VyID4gR2xvYmFsIENhdGFsb2cgT3B0aW9ucywgYW5kIG1ha2UgdGhvc2UgY2hhbmdlcy48L3A+DQo8aDQ+SW1hZ2VzPC9oND4NCjxwPkNhdGFsb2dlciBhbGxvd3MgeW91IHRvIHNlbGVjdCBkaWZmZXJlbnQgc2l6ZSBpbWFnZXMgZm9yIEl0ZW0gcGFnZXMsIENhdGVnb3J5IHBhZ2VzLCBhbmQgdGhlIFByaW50YWJsZSBDYXRhbG9nLiBZb3UgY2FuIHNldCB0aGVzZSBkZWZhdWx0cyBpbiBFeHRlbnNpb25zID4gQ2F0YWxvZ2VyID4gTWFuYWdlIFByZWZlcmVuY2VzLjwvcD4NCjxwPldoZW4geW91IHVwbG9hZCBpbWFnZXMsIHRoZSBvcmlnaW5hbCBpcyBzdG9yZWQuIFdoZW4gc29tZW9uZSB2aXNpdHMgYSBwYWdlLCB0aGUgcmVkdWNlZCBzaXplIGltYWdlcyBhcmUgcmVxdWVzdGVkIHVzaW5nIGEgc3BlY2lhbCBVUkwsIHdoaWNoIHdpbGwgcmVkaXJlY3QgdGhlIHVzZXImIzAzOTtzIGJyb3dzZXIgdG8gdGhlIHNjYWxlZCBpbWFnZSBpZiBpdCBleGlzdHMsIGFuZCBjcmVhdGluZyB0aGUgc2NhbGVkIGltYWdlIGlmIGl0IGRvZXNuJiMwMzk7dC4gVGhpcyBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiBpbWFnZXMsIHdpdGhvdXQgaGF2aW5nIHRvIHJlLXVwbG9hZCBhbGwgdGhlIGltYWdlcywgb3IgcmVzY2FsaW5nIHRoZW0gYWxsIGF0IG9uY2UuPC9wPg0KPHA+VGhpcyBpbWFnZSByZXNjYWxpbmcgY29kZSByZXF1aXJlcyB0aGF0IHlvdSBoYXZlIGVpdGhlciBJbWFnZU1hZ2ljayBvciBHRCBsaWIgaW5zdGFsbGVkLCBhbmQgY29uZmlndXJlZCBpbiB5b3VyIENNUyBNYWRlIFNpbXBsZSBjb25maWcucGhwLjwvcD4NCjxoND5GaWxlczwvaDQ+DQo8cD5DYXRhbG9nZXIgYWxsb3dzIHlvdSB0byBhc3NvY2lhdGUgYXJiaXRyYXJ5IGZpbGVzIHdpdGggYW55IEl0ZW0gcGFnZS4gVGhlc2UgYXJlIHVwbG9hZGVkIHZpYSB0aGUgYWRtaW4sIGp1c3QgbGlrZSBpbWFnZXMuIFRoZXJlDQpoYXZlIGJlZW4gcnVkaW1lbnRhcnkgc2VjdXJpdHkgY29uc2lkZXJhdGlvbnMgKGUuZy4sIGZpbGUtZXh0ZW5zaW9uLWJhc2VkIHJlc3RyaWN0aW9ucyksIGhvd2V2ZXIsIGFzIHdpdGggYW55IGZpbGUgdXBsb2FkDQpjYXBhYmlsaXR5IHRoYXQgcHV0cyBmaWxlcyBpbnNpZGUgdGhlIHdlYiByb290LCBpZiB5b3UgZG8gbm90IHRydXN0IHlvdXIgdXBsb2FkZXJzLCB5b3UgYXJlIGF0IHNvbWUgZGVncmVlIG9mIHJpc2suIFlvdSBoYXZlIGJlZW4gd2FybmVkLjwvcD4NCjxoMz5GZWF0dXJlIExpc3RzPC9oMz4NCjxwPllvdSBjYW4sIGFzIG9mIHZlcnNpb24gMC40LCBoYXZlICZxdW90O2ZlYXR1cmUgbGlzdHMmcXVvdDsgd2hpY2ggYXJlIHRoZSA8aT5uPC9pPiBtb3N0LXJlY2VudGx5IGFkZGVkIGNhdGFsb2cgaXRlbXMsIG9yIGEgY29sbGVjdGlvbiBvZiA8aT5rPC9pPiByYW5kb20gaXRlbXMgZnJvbSB0aGUgY2F0YWxvZy48L3A+DQo8aDQ+JnF1b3Q7QWxsJnF1b3Q7IEZlYXR1cmUgTGlzdDwvaDQ+DQo8cD5UbyBnZXQgYSBsaXN0IG9mIGFsbCBjYXRhbG9nIGl0ZW1zIChvcHRpb25hbGx5IHVuZGVyIGEgc3BlY2lmaWVkIHBhcnQgb2YgeW91ciBoaWVyYXJjaHkpIGZvciBwcm9jZXNzaW5nIHZpYSBhIHRlbXBsYXRlLCB5b3UgY2FuIHVzZQ0KdGhlICZxdW90O2FsbCZxdW90OyBmZWF0dXJlIGxpc3QuPC9wPg0KPHA+VGhlIHN5bnRheCBmb3IgYW4gJnF1b3Q7YWxsJnF1b3Q7IGxpc3QgaXMgbGlrZTo8L3A+DQo8cD57Q2F0YWxvZ2VyIGFjdGlvbj0mIzAzOTthbGwmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5O30sIHdoZXJlIHN1Yl90ZW1wbGF0ZSBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgbGlzdC4NClRoZXJlIGlzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciwgYWxpYXM9JiMwMzk7cGFnZV9hbGlhcyYjMDM5Oywgd2hlcmUgcGFnZV9hbGlhcyBpbmRpY2F0ZXMgdGhlIHRvcCBvZiB0aGUgdHJlZSAoZS5nLiwgYSBwbGFjZSBpbiB5b3VyIG1lbnUNCmhpZXJhcmNoeSwgdHlwaWNhbGx5IGEgY2F0ZWdvcnkgcGFnZSkgaW4gd2hpY2ggdG8gbG9vayBmb3IgbmV3IGl0ZW1zLiBBIHNwZWNpYWwgdmFsdWUgZm9yICZxdW90O3BhZ2VfYWxpYXMmcXVvdDsgaXMgJnF1b3Q7LyZxdW90Oywgd2hpY2ggbWVhbnMgdG8NCnN0YXJ0IGF0IHRoZSByb290LjwvcD4NCjxwPlRoaXMgaXMgdXNlZnVsIGZvciBjYXRhbG9nLXdpZGUgb3BlcmF0aW9ucy4gRm9yIGV4YW1wbGUsIHRvIGdldCBhIGxpc3Qgb2YgYWxsIGNhdGVnb3JpZXMgKGFuZCBkbyBzb21ldGhpbmcgd2l0aCB0aGVtKSwNCnlvdSBjb3VsZCB1c2UgdGhlIHRhZyB7Q2F0YWxvZ2VyIGFjdGlvbj0mIzAzOTthbGwmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5OyBhbGlhcz0mIzAzOTsvJiMwMzk7IHJlY3Vyc2U9JiMwMzk7Y2F0ZWdvcmllc19hbGwmIzAzOTt9LiBZb3VyIHRlbXBsYXRlIGNvdWxkIHRoZW4gdGhyb3cNCnRob3NlIGNhdGVnb3JpZXMgaW50byBhIHB1bGxkb3duIG1lbnUgdGhhdCByZWRpcmVjdGVkIHlvdSB0byB0aGF0IGNhdGVnb3J5JiMwMzk7cyBwYWdlLCBmb3IgZXhhbXBsZTo8L3A+DQo8cHJlPg0KPHNlbGVjdCBuYW1lPSZxdW90O2ZvbyZxdW90OyBvbmNoYW5nZT0mcXVvdDtkb2N1bWVudC5sb2NhdGlvbj10aGlzLm9wdGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4XS52YWx1ZTsmcXVvdDs+DQo8b3B0aW9uIHZhbHVlPSZxdW90OyZxdW90Oz5TZWxlY3QgQSB0YXJnZXQ8L29wdGlvbj4NCntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09dGhpc29uZX0NCiAgIDxvcHRpb24gdmFsdWU9JnF1b3Q7eyR0aGlzb25lLmxpbmt9JnF1b3Q7PnskdGhpc29uZS50aXRsZX08L29wdGlvbj4NCnsvZm9yZWFjaH0NCjwvc2VsZWN0Pg0KPC9wcmU+DQo8cD5JZiB5b3Ugd2FudGVkIHRoYXQgdG8gb25seSBzaG93IGNhdGVnb3JpZXMgdGhhdCB3ZXJlIGluIHRoZSB2ZXJ5IHRvcCBsZXZlbCBvZiB5b3VyIGhpZXJhcmNoeSwgeW91JiMwMzk7ZCByZXBsYWNlIHRoZSByZWN1cnNlPSYjMDM5O2NhdGVnb3JpZXNfYWxsJiMwMzk7IHdpdGgNCnJlY3Vyc2U9JiMwMzk7Y2F0ZWdvcmllc19vbmUmIzAzOTsuIE9yIGlmIHlvdSB3YW50ZWQgaXQgdG8gYmUgYWxsIGNhdGFsb2cgSXRlbXMgaW5zdGVhZCBvZiBjYXRlZ29yaWVzLCB5b3UgY291bGQgdXNlIGEgdGFnIGxpa2U6DQp7Q2F0YWxvZ2VyIGFjdGlvbj0mIzAzOTthbGwmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5OyBhbGlhcz0mIzAzOTsvJiMwMzk7IHJlY3Vyc2U9JiMwMzk7aXRlbXNfYWxsJiMwMzk7fQ0KPHA+U2ltaWxhcmx5LCB5b3UgY291bGQgaGF2ZSBpdCBsaXN0IG9ubHkgY2F0ZWdvcmllcyB1bmRlciB0aGUgY3VycmVudCBwYWdlIChieSBvbWl0dGluZyB0aGUgJnF1b3Q7YWxpYXM9JiMwMzk7LyYjMDM5OyZxdW90OykuIFRoZSBjb21iaW5hdGlvbnMgYXJlIGJhc2ljYWxseSBsaW1pdGxlc3MhPC9wPg0KPHA+QWxsIHN1cHBvcnRlZCB2YWx1ZXMgb2YgcmVjdXJzZSBpbmNsdWRlOjx1bD4NCjxsaT5pdGVtc19vbmUgLSBDYXRhbG9nIGl0ZW1zLCBubyBtb3JlIHRoYW4gb25lIGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+aXRlbXNfYWxsIC0gQ2F0YWxvZyBpdGVtcywgYXQgYW55IGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+Y2F0ZWdvcmllc19vbmUgLSBDYXRlZ29yaWVzLCBubyBtb3JlIHRoYW4gb25lIGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+Y2F0ZWdvcmllc19hbGwgLSBDYXRlZ29yaWVzLCBhdCBhbnkgbGV2ZWwgYmVsb3cgdGhlIGN1cnJlbnQgcGFnZSAob3IgYWxpYXMgcG9pbnQpPC9saT4NCjxsaT5taXhlZF9vbmUgLSBDYXRhbG9nIGl0ZW1zIGFuZCBDYXRlZ29yaWVzLCBubyBtb3JlIHRoYW4gb25lIGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+bWl4ZWRfYWxsIC0gQ2F0YWxvZyBpdGVtcyBhbmQgQ2F0ZWdvcmllcywgYXQgYW55IGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8L3VsPg0KPC9wPg0KPHA+SXRlbXMgaW4gdGhlc2UgbGlzdHMgY29tZSBiYWNrIGluIGhpZXJhcmNoeSBvcmRlci4gWW91IGNhbiBjaGFuZ2UgdGhpcyB1c2luZyB0aGUgJiMwMzk7Z2xvYmFsX3NvcnQmIzAzOTsgcGFyYW1ldGVyLiBZb3VyIGNob2ljZXMgYXJlOjwvcD4NCjx1bD4NCjxsaT5hbHBoYSAtIGFscGhhYmV0aWNhbGx5IGJ5IHRpdGxlPC9saT4NCjxsaT5kYXRlIC0gaW4gb3JkZXIgb2YgaXRlbSBjcmVhdGlvbiBkYXRlPC9saT4NCjxsaT5tZGF0ZSAtIGluIG9yZGVyIG9mIGl0ZW0gbW9kaWZpY2F0aW9uIGRhdGU8L2xpPg0KPC91bD4NCjxwPllvdSBtYXkgb3JkZXIgdGhlc2Ugc29ydHMgdXNpbmcgdGhlICYjMDM5O2dsb2JhbF9zb3J0X2RpciYjMDM5OyBwYXJhbWV0ZXIsIHdoaWNoIHdpbGwgYWxsb3cgJiMwMzk7YXNjJiMwMzk7IG9yICYjMDM5O2Rlc2MmIzAzOTsuPC9wPg0KPHA+U28sIGZvciBhIHRob3JvdWdoIGV4YW1wbGU6PC9wPg0KPHA+e0NhdGFsb2dlciBhY3Rpb249JiMwMzk7YWxsJiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTsgYWxpYXM9JiMwMzk7LyYjMDM5OyByZWN1cnNlPSYjMDM5O2NhdGVnb3JpZXNfYWxsJiMwMzk7IGdsb2JhbF9zb3J0PSYjMDM5O2FscGhhJiMwMzk7IGdsb2JhbF9zb3J0X2Rpcj0mIzAzOTthc2MmIzAzOTt9PC9wPg0KPGg0PlJlY2VudGx5IEFkZGVkIEZlYXR1cmUgTGlzdDwvaDQ+DQo8cD5UbyB1c2UgYSAmcXVvdDttb3N0LXJlY2VudGx5IGFkZGVkJnF1b3Q7IGxpc3Qgd2lsbCBhbGxvdyB5b3UgdG8gZGlzcGxheSB0aGUgbW9zdCByZWNlbnRseS1hZGRlZCBjYXRhbG9nIGl0ZW1zIHVuZGVyIGEgc3BlY2lmaWVkIHBhcnQgb2YgeW91ciBoaWVyYXJjaHkuPC9wPg0KPHA+VGhlIHN5bnRheCBmb3IgYSAmcXVvdDttb3N0IHJlY2VudGx5IGFkZGVkJnF1b3Q7IGxpc3QgaXMgbGlrZTo8L3A+DQo8cD57Q2F0YWxvZ2VyIGFjdGlvbj0mIzAzOTtyZWNlbnQmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5O30sIHdoZXJlIHN1Yl90ZW1wbGF0ZSBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgbGlzdC4NClRoZXJlIGFyZSBmb3VyIG9wdGlvbmFsIHBhcmFtZXRlcnMsIGNvdW50PSYjMDM5OzMmIzAzOTsgYWxpYXM9JiMwMzk7cGFnZV9hbGlhcyYjMDM5OywgZ2xvYmFsX3NvcnQ9JiMwMzk7ZGF0ZSYjMDM5OywgZ2xvYmFsX3NvcnRfZGlyPSYjMDM5O2Rlc2MmIzAzOTsgd2hlcmUgY291bnQNCmlzIHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gaW5jbHVkZSwgcGFnZV9hbGlhcyBpbmRpY2F0ZXMgdGhlIHRvcCBvZiB0aGUgdHJlZSAoZS5nLiwgYSBwbGFjZSBpbiB5b3VyIG1lbnUgaGllcmFyY2h5LA0KdHlwaWNhbGx5IGEgY2F0ZWdvcnkgcGFnZSkgaW4gd2hpY2ggdG8gbG9vayBmb3IgbmV3IGl0ZW1zLiBBIHNwZWNpYWwgdmFsdWUgZm9yICZxdW90O3BhZ2VfYWxpYXMmcXVvdDsgaXMgJnF1b3Q7LyZxdW90Oywgd2hpY2ggbWVhbnMNCnRvIHVzZSA8aT5hbGw8L2k+IHBhZ2VzIGluIHRoZSBzaXRlLiBnbG9iYWxfc29ydCBtYXkgYmUgJiMwMzk7ZGF0ZSYjMDM5OyAoZm9yIGl0ZW0gY3JlYXRpb24gZGF0ZSkgb3IgJiMwMzk7bWRhdGUmIzAzOTsgZm9yIG1vZGlmaWNhdGlvbiBkYXRlLCBhbmQNCmdsb2JhbF9zb3J0X2RpciBtYXkgYmUgJiMwMzk7YXNjJiMwMzk7IG9yICYjMDM5O2Rlc2MmIzAzOTsuPC9wPg0KPGg0PlJhbmRvbSBJdGVtcyBGZWF0dXJlIExpc3Q8L2g0Pg0KPHA+VGhlIHN5bnRheCBmb3IgYSAmcXVvdDtyYW5kb20mcXVvdDsgbGlzdCBpcyBsaWtlOjwvcD4NCjxwPntjQ2F0YWxvZ2VyIGFjdGlvbj0mIzAzOTtyYW5kb20mIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5O30sIHdoZXJlIHN1Yl90ZW1wbGF0ZSBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgbGlzdC4gVGhlcmUgYXJlIHR3byBvcHRpb25hbCBwYXJhbWV0ZXJzLCBjb3VudD0mIzAzOTszJiMwMzk7IGFsaWFzPSYjMDM5O3BhZ2VfYWxpYXMmIzAzOTssIHdoZXJlIGNvdW50IGlzIHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gaW5jbHVkZSwgYW5kIHBhZ2VfYWxpYXMgaW5kaWNhdGVzIHRoZSB0b3Agb2YgdGhlIHRyZWUgKGUuZy4sIGEgcGxhY2UgaW4geW91ciBtZW51IGhpZXJhcmNoeSwgdHlwaWNhbGx5IGEgY2F0ZWdvcnkgcGFnZSkgaW4gd2hpY2ggdG8gbG9vayBmb3IgbmV3IGl0ZW1zLiBBIHNwZWNpYWwgdmFsdWUgZm9yICZxdW90O3BhZ2VfYWxpYXMmcXVvdDsgaXMgJnF1b3Q7LyZxdW90Oywgd2hpY2ggbWVhbnMgdG8gdXNlIDxpPmFsbDwvaT4gcGFnZXMgaW4gdGhlIHNpdGUuPC9wPg0KPGg0PlZhcmlhYmxlPC9oND4NCjxwPllvdSBjYW4gZ3JhYiB2YXJpYWJsZXMgKGF0dHJpYnV0ZXMpIG91dHNpZGUgb2YgeW91ciBDYXRhbG9nZXIgdGVtcGxhdGVzLCBzYXkgaW4gYSBnbG9iYWwgY29udGVudCBibG9jaywgdXNpbmcgdGhlIHZhcmlhYmxlIG1ldGhvZC4gVGhlIHN5bnRheCBsb29rcyBsaWtlOjwvcD4NCjxwPntDYXRhbG9nZXIgYWN0aW9uPSYjMDM5O3ZhcmlhYmxlJiMwMzk7IG5hbWU9JiMwMzk7aXRlbW5vdGVzJiMwMzk7IGRlZmF1bHQ9JiMwMzk7bm8gbm90ZXMmIzAzOTt9LCB3aGVyZSBuYW1lIGlzIHRoZSBhdHRyaWJ1dGUgdG8gZGlzcGxheSAodXNpbmcgdGhlIHNhbWUgYWxsIGxvd2VyLWNhc2UsIHB1bmN0dWF0aW9uLWZyZWUgcmVwcmVzZW50YXRpb24gbGlrZSB0aGUgc21hcnR5IHRlbXBsYXRlIHZhcmlhYmxlcyksIGFuZCBkZWZhdWx0IGlzIHRoZSB2YWx1ZSB0byB1c2UgaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgZGVmaW5lZC48L3A+DQo8aDQ+SXRlbSBDb21wYXJpc29uczwvaDQ+DQo8cD5BcyBvZiB2ZXJzaW9uIDAuNy43LCB0aGVyZSBpcyBhIHByb2R1Y3QgY29tcGFyaXNvbiBhY3Rpb246PC9wPg0KPHA+e2NDYXRhbG9nZXIgYWN0aW9uPSYjMDM5O2NvbXBhcmUmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5OyBpdGVtcz0mIzAzOTtpdGVtMSxpdGVtMixpdGVtMyYjMDM5O30sIHdoZXJlIHN1Yl90ZW1wbGF0ZSBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgbGlzdCwgYW5kIGl0ZW1zIGlzIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgaXRlbSBwYWdlIGFsaWFzZXMgdG8gY29tcGFyZS4gQm9sZGVyIHVzZXJzIG1heSBhbHNvIGNob29zZSB0byBwYXNzIGluIHRoZSBpdGVtcyB0byBjb21wYXJlIGFzIHJlcXVlc3QgdmFyaWFibGVzLCB0aGVyZWJ5IGVuYWJsaW5nIGR5bmFtaWMgY29tcGFyaXNvbnMgYmFzZWQgb24gdXNlciBzZWxlY3Rpb25zLiBEbyB0aGlzIGJ5IHNldHRpbmcgdGhlICZxdW90O2l0ZW1zJnF1b3Q7IHZhcmlhYmxlIG9uIHRoZSByZXF1ZXN0IHBhc3NlZCB0byB0aGUgcGFnZSBjb250YWluaW5nIHRoZSBDYXRhbG9nZXIgdGFnIHdpdGggYSBjb21wYXJlIGFjdGlvbi48L3A+DQo8cD5UaGUgZGVmYXVsdCBpdGVtIGNvbXBhcmlzb24gdGVtcGxhdGUgY291bGQgdXNlIHNvbWUgc3R5bGluZywgZS5nLiw6PC9wPg0KPHByZT4NCi5pdGVtX2NvbXBhcmlzb24gdGgge2ZvbnQtd2VpZ2h0OiBib2xkOyBwYWRkaW5nOiA1cHg7IHRleHQtYWxpZ246Y2VudGVyO30NCi5pdGVtX2NvbXBhcmlzb24gdGQge2JvcmRlcjogMXB4IHNvbGlkIGdyYXk7IHBhZGRpbmc6IDNweCA1cHg7dGV4dC1hbGlnbjpyaWdodDt9DQo8L3ByZT4NCjxoMz5DdXN0b21pemF0aW9uIGFuZCBBZHZhbmNlZCBUb3BpY3M8L2gzPg0KPGg0PkNhdGFsb2cgSXRlbSBBdHRyaWJ1dGVzPC9oND4NCjxwPlRoZSBkZWZhdWx0IGl0ZW0gYXR0cmlidXRlcyBhcmUgdHlwaWNhbCBmb3IgYSBjYXRhbG9nIG9mIHByb2R1Y3RzIG9yIGFydHdvcmtzLCBidXQgYnkgZ29pbmcgaW50byBFeHRlbnNpb25zID4gQ2F0YWxvZ2VyID4gTWFuYWdlIFVzZXItRGVmaW5lZCBBdHRyaWJ1dGVzLCB5b3UgY2FuIGNoYW5nZSB0aGUgYXR0cmlidXRlcy4gSXQmIzAzOTtzIGJlc3QgdG8gZGVmaW5lIHRoZSBhdHRyaWJ1dGVzIGJlZm9yZSB5b3Ugc3RhcnQgZW50ZXJpbmcgQ2F0YWxvZyBJdGVtcy48L3A+DQo8cD5Ob3RlIHRoYXQgdGhlIGF0dHJpYnV0ZXMgeW91IGRlZmluZSBtYXkgbmVlZCB0byBiZSBhZGRlZCB0byB0aGUgdGVtcGxhdGUgdGhhdCB5b3UmIzAzOTtyZSB1c2luZyB0byBkaXNwbGF5IENhdGFsb2cgSXRlbXMgLS0gc2VlIEN1c3RvbSBUZW1wbGF0ZXMgYmVsb3cuPC9wPg0KPGg0PkNhdGFsb2cgQ2F0ZWdvcnkgQXR0cmlidXRlczwvaDQ+DQo8cD5TaW1pbGFybHksIHlvdSBjYW4gc2V0IGF0dHJpYnV0ZXMgZm9yIENhdGVnb3JpZXMuIEFnYWluLCB0aGUgYXR0cmlidXRlcyB5b3UgZGVmaW5lIG1heSBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSB0ZW1wbGF0ZSB0aGF0IHlvdSYjMDM5O3JlIHVzaW5nIHRvIGRpc3BsYXkgQ2F0YWxvZyBDYXRlZ29yaWVzIC0tIHNlZSBDdXN0b20gVGVtcGxhdGVzIGJlbG93LjwvcD4NCjxoND5QcmludGFibGUgQ2F0YWxvZyBBdHRyaWJ1dGVzPC9oND4NCjxwPkxpa2V3aXNlLCB5b3UgY2FuIHNldCBhdHRyaWJ1dGVzIGZvciBQcmludGFibGUgQ2F0YWxvZ3MuIEFnYWluLCB0aGUgYXR0cmlidXRlcyB5b3UgZGVmaW5lIG1heSBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSB0ZW1wbGF0ZSB0aGF0IHlvdSYjMDM5O3JlIHVzaW5nIHRvIGRpc3BsYXkgeW91ciBQcmludGFibGUgQ2F0YWxvZyAtLSBzZWUgQ3VzdG9tIFRlbXBsYXRlcyBiZWxvdy48L3A+DQo8aDQ+Q3VzdG9tIFRlbXBsYXRlczwvaDQ+DQo8cD5JZiB5b3UmIzAzOTtyZSB3aWxsaW5nIHRvIG1lc3MgYXJvdW5kIHdpdGggU21hcnR5IFRlbXBsYXRlcywgeW91IGNhbiBjaGFuZ2UgdGhlIGxheW91dCBvZiBhbnkgb2YgdGhlIHBhZ2VzIGdlbmVyYXRlZCBieSBDYXRhbG9nZXIuIFRoaXMgc2hvdWxkIG1ha2UgY2VydGFpbiBkZXZlbG9wZXJzIHZlcnkgaGFwcHksIGV2ZW4gaWYgdGhlIGluZWZmaWNpZW5jeSBvZiB0aGUgcmVzdCBvZiB0aGUgY29kZSB3aWxsIG5vdC4gVGhlcmUgYXJlIGZvdXIga2luZHMgb2YgdGVtcGxhdGVzOiBvbmUga2luZCBmb3IgQ2F0YWxvZyBJdGVtcywgb25lIGtpbmQgZm9yIENhdGFsb2cgQ2F0ZWdvcmllcywgYW5kIG9uZSBraW5kIGZvciBQcmludGFibGUgQ2F0YWxvZ3MsIGFuZCBvbmUga2luZCBmb3IgJnF1b3Q7RmVhdHVyZSZxdW90OyBsaXN0cywgc3VjaCBhcyByZWNlbnRseSBhZGRlZCBpdGVtcyBvciByYW5kb20gc2VsZWN0aW9ucy48L3A+DQo8cD5XaGVuIGVkaXRpbmcgYSBUZW1wbGF0ZSwgdGhlIGFkbWluIHNjcmVlbiB3aWxsIGRpc3BsYXkgYSBsaXN0IG9mIFNtYXJ0eSB0YWdzIGF2YWlsYWJsZSB0byB5b3UgZm9yIHRoYXQga2luZCBvZiB0ZW1wbGF0ZS4gVGhpcw0Kd2lsbCBvbmx5IGhhcHBlbiBvbmNlIHRoZSBtb2R1bGUga25vd3Mgd2hhdCBraW5kIG9mIHRlbXBsYXRlIHlvdSYjMDM5O3JlIGVkaXRpbmcsIHNvIHdoZW4geW91IGZpcnN0IGNyZWF0ZSB0aGUgdGVtcGxhdGUsIGl0IGRpc3BsYXlzIGFsbA0KdGhlIFNtYXJ0eSB0YWdzIGl0IGtub3dzIGFib3V0LCBvbmx5IHNvbWUgb2Ygd2hpY2ggYmVpbmcgYXBwbGljYWJsZS48L3A+DQo8aDQ+RGlzcGxheWluZyBBdHRyaWJ1dGVzIG9uIEl0ZW0gUGFnZXM8L2g0Pg0KPHA+QXR0cmlidXRlcyBhcmUgYXZhaWxhYmxlIHRvIFNtYXJ0eSBhcyB0b3AtbGV2ZWwgdmFyaWFibGVzLiBUaGV5IGFyZSBzdG9yZWQgYXMgc2FuaXRpemVkIHZlcnNpb25zIG9mIHRoZSBhdHRyaWJ1dGUgbmFtZXMsIHdoaWNoIG1lYW5zDQppdCBpcyBjb252ZXJ0ZWQgdG8gbG93ZXIgY2FzZSBhbmQgYWxsIHB1bmN0dWF0aW9uIGFuZCBub24tVVMtQVNDSUkgY2hhcmFjdGVycyBnZXQgcmVtb3ZlZC4gVGhpcyBpcyBiZWNhdXNlIFNtYXJ0eSBpcyBmaW5pY2t5LCBhbmQgd2lsbCBub3QgaGFuZGxlIHRoZXNlIGNoYXJhY3RlcnMuPC9wPg0KPHA+U28sIGZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBhbiBhdHRyaWJ1dGUgY2FsbGVkICZxdW90O0dsJnV1bWw7Y2tsaWNoa2VpdCZxdW90OywgdGhlcmUgd2lsbCBiZSBhIFNtYXJ0eSB2YXJpYWJsZSB7JGdsY2tsaWNoa2VpdH0uIE5vdGUgdGhhdCB0aGUgJnF1b3Q7JnV1bWw7JnF1b3Q7IGlzIG9taXR0ZWQuPC9wPg0KPHA+Rm9ydHVuYXRlbHksIHRoaXMgaXMgc2ltcGxpZmllZCBieSB0aGUgJGF0dHJsaXN0IGxpc3QgYXZhaWxhYmxlLiBUaGlzIGlzIGEgbGlzdCBvZiBhdHRyaWJ1dGVzIGJ5IGZvcm1hbCBuYW1lICgmcXVvdDtHbCZ1dW1sO2NrbGljaGtlaXQmcXVvdDspIGFuZCB0aGVpciBrZXkgKCZxdW90O2dsY2tsaWNoa2VpdCZxdW90OykuIEZvciBleGFtcGxlOg0KPHByZT4NCgl7c2VjdGlvbiBuYW1lPWF0IGxvb3A9JGF0dHJsaXN0fQ0KCTxkaXYgY2xhc3M9JnF1b3Q7aXRlbV9hdHRyaWJ1dGVfbmFtZSZxdW90Oz57JGF0dHJsaXN0W2F0XS5uYW1lfTo8L2Rpdj48ZGl2IGNsYXNzPSZxdW90O2l0ZW1fYXR0cmlidXRlX3ZhbCZxdW90Oz57ZXZhbCB2YXI9JGF0dHJsaXN0W2F0XS5rZXl9PC9kaXY+DQoJey9zZWN0aW9ufQ0KPC9wcmU+DQo8cD5BcyBvZiB2ZXJzaW9uIDAuOCwgeW91IGNhbiBhc3NpZ24gYW4gYWxpYXMgdG8gZWFjaCBhdHRyaWJ1dGUuIFRoZXNlIGFsaWFzZXMgbmVlZCB0byBiZSBVUy1BU0NJSSBhbmQgY29udGFpbiBubyBwdW5jdHVhdGlvbi4gVGhleSBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBzYW5pdGl6ZWQgYXR0cmlidXRlIG5hbWUgKGUuZy4sIHlvdSBjb3VsZCB1c2UgdGhlIGFsaWFzICZxdW90O2dsdWVja2xpY2hrZWl0JnF1b3Q7KS48L3A+DQo8aDQ+RGlzcGxheWluZyBBdHRyaWJ1dGVzIG9uIFBhZ2VzIHdpdGggTGlzdHMgb2YgSXRlbXM8L2g0Pg0KPHA+QXR0cmlidXRlcyBhcmUgaW5jbHVkZWQgaW4gdGhlICRpdGVtbGlzdHNbI10gaW4gdHdvIGRpZmZlcmVudCB3YXlzOiB0b3AtbGV2ZWwgYXR0cmlidXRlcyBvZiB0aGUgaXRlbSwgYW5kIGFzIHBhcnQgb2YgdGhlIGl0ZW0mIzAzOTtzICZxdW90O2F0dHImcXVvdDsgYXJyYXkuIFRoZXkgYXJlIHN0b3JlZCBhcyBzYW5pdGl6ZWQgdmVyc2lvbnMgb2YgdGhlIGF0dHJpYnV0ZSBuYW1lcywgd2hpY2ggbWVhbnMNCml0IGlzIGNvbnZlcnRlZCB0byBsb3dlciBjYXNlIGFuZCBhbGwgcHVuY3R1YXRpb24gYW5kIG5vbi1VUy1BU0NJSSBjaGFyYWN0ZXJzIGdldCByZW1vdmVkLiBUaGlzIGlzIGJlY2F1c2UgU21hcnR5IGlzIGZpbmlja3ksIGFuZCB3aWxsIG5vdCBoYW5kbGUgdGhlc2UgY2hhcmFjdGVycy48L3A+DQo8cD5TbywgZm9yIGV4YW1wbGUsIGlmIHlvdSBoYXZlIGFuIGF0dHJpYnV0ZSBjYWxsZWQgJnF1b3Q7R2wmdXVtbDtja2xpY2hrZWl0JnF1b3Q7LCB0aGUgaXRlbSB3aWxsIGhhdmUgJGl0ZW0uZ2xja2xpY2hrZWl0IGFuZCAkaXRlbS5hdHRyc1smIzAzOTtnbGNrbGljaGtlaXQmIzAzOTtdLiBOb3RlIHRoYXQgdGhlICZxdW90OyZ1dW1sOyZxdW90OyBpcyBvbWl0dGVkLiBZb3UgY2FuIHJlZmVyIHRvIHRoaXMgYXR0cmlidXRlIGluIHlvdXIgdGVtcGxhdGUNCndpdGggU21hcnR5IGNvZGUgbGlrZTogeyRpdGVtbGlzdFtpbmRleF0uZ2xja2xpY2trZWl0fSBvciB7JGl0ZW1saXN0W2luZGV4XS5hdHRycy5nbGNrbGljaGtlaXR9LjwvcD4NCjxwPkZvcnR1bmF0ZWx5LCB0aGlzIGlzIHNpbXBsaWZpZWQgYnkgdGhlICRhdHRybGlzdCBsaXN0IGF2YWlsYWJsZS4gVGhpcyBpcyBhIGxpc3Qgb2YgYXR0cmlidXRlcyBieSBmb3JtYWwgbmFtZSAoJnF1b3Q7R2wmdXVtbDtja2xpY2hrZWl0JnF1b3Q7KSBhbmQgdGhlaXIga2V5ICgmcXVvdDtnbGNrbGljaGtlaXQmcXVvdDspLiBGb3IgZXhhbXBsZToNCjxwcmU+DQogICAge2ZvcmVhY2ggZnJvbT0kYXR0cmxpc3QgaXRlbT1hdHRyIGtleT1rfQ0KICAgIHskYXR0cn06IHskaXRlbXNbbnVtbG9vcF1bJGtdfQ0KICAgIHsvZm9yZWFjaH0NCjwvcHJlPg0KPHA+QXMgb2YgdmVyc2lvbiAwLjgsIHlvdSBjYW4gYXNzaWduIGFuIGFsaWFzIHRvIGVhY2ggYXR0cmlidXRlLiBUaGVzZSBhbGlhc2VzIG5lZWQgdG8gYmUgVVMtQVNDSUkgYW5kIGNvbnRhaW4gbm8gcHVuY3R1YXRpb24uIFRoZXkgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgc2FuaXRpemVkIGF0dHJpYnV0ZSBuYW1lIChlLmcuLCB5b3UgY291bGQgdXNlIHRoZSBhbGlhcyAmcXVvdDtnbHVlY2tsaWNoa2VpdCZxdW90OykuPC9wPg0KPGg0PlNtYXJ0eSB0YWdzIGluIEF0dHJpYnV0ZXM8L2g0Pg0KPHA+U29tZXRpbWVzLCB5b3UmIzAzOTtsbCB3YW50IHRoZSBkZXNjcmlwdGlvbnMgb2YgeW91ciBpdGVtcyB0byBpbmNsdWRlIHNtYXJ0eSB0YWdzIChlLmcuLCBjbXNfc2VsZmxpbmspLiBUbyBtYWtlIHRoYXQgd29yaywgeW91JiMwMzk7bGwgbmVlZCB0bw0KdXBkYXRlIHlvdXIgdGVtcGxhdGUuIEZvciB0aGUgYXR0cmlidXRlcyB3aGVyZSB5b3Ugd2FudCBzbWFydHkgdGFncyB0byBiZSBhY3RpdmUsIHlvdSYjMDM5O2xsIG5lZWQgdG8gbmVzdCB0aGUgc21hcnR5IGV2YWx1YXRpb25zIGluIHlvdXIgdGVtcGxhdGUuIEZvciBleGFtcGxlOjwvcD4NCjxwcmU+DQp7ZXZhbCB2YXI9JGF0dHJsaXN0W2F0XS5rZXl9DQo8L3ByZT4NCjxwPmJlY29tZXM6PC9wPg0KPHByZT4NCntldmFsIHZhcj0kZW50cnktPmlucHV0IGFzc2lnbj10aGlzQXR0cn17ZXZhbCB2YXI9JHRoaXNBdHRyfQ0KPC9wcmU+DQo8cD5VZ2x5PyBZdXAuIEJ1dCBpdCB3b3Jrcy48L3A+DQo8aDM+Q2F0YWxvZ2VyIEltYWdlIFN5c3RlbTwvaDM+DQo8cD5DYXRhbG9nZXIgaGFzIGFuIGltYWdlIHN5c3RlbSB0aGF0IHdpbGwgYWxsb3cgeW91IHRvIGR5bmFtaWNhbGx5IGNoYW5nZSB0aGUgaW1hZ2UgZGlzcGxheSBzaXplLiBJZiB5b3UgZG8gbm90IGxpa2UgaXQsIHlvdSBjYW4gYWx0ZXINCnRoZSB0ZW1wbGF0ZXMgYW5kIHVzZSBhbnkgaW1hZ2Ugc3lzdGVtIHlvdSB3YW50LjwvcD4NCjxwPldoZW4geW91IHVwbG9hZCBhbiBpbWFnZSB1c2luZyBDYXRhbG9nZXIsIGl0IGdldHMgcHV0IGluIGEgc3BlY2lhbCBzZXQgb2YgZGlyZWN0b3JpZXMgdG8gbWFrZSB0aGUgaW1hZ2luZyBlYXNpZXIuIFlvdSB3aWxsIHNlZSBtb3JlDQphYm91dCB0aGlzIGxhdGVyLjwvcD4NCjxwPkl0IHdvcmtzIGJ5IGNhbGxpbmcgYSBQSFAgcHJvZ3JhbSBpbnN0ZWFkIG9mIGRpcmVjdGx5IHJlZmVyZW5jaW5nIHRoZSBpbWFnZS4gVGhlIHByb2dyYW0gdXNlcyB0aGUgZmlsZW5hbWUgdG8gc2VlIGlmIHRoZQ0KaW1hZ2UgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGNvcnJlY3Qgc2l6ZS4gSWYgc28sIGl0IHJlZGlyZWN0cyB0byB0aGF0IGltYWdlLiBPdGhlcndpc2UsIGl0IHVzZXMgeW91ciBHRExJQiBvciBJbWFnZU1hZ2ljayB0byBjcmVhdGUNCnRoZSBpbWFnZSBpbiB0aGUgY29ycmVjdCBzaXplLCBhbmQgdGhlbiByZWRpcmVjdHMgdG8gaXQuDQo8L3A+DQo8aDQ+Q2F0YWxvZ2VyIEltYWdlIEZpbGVzcGVjIEV4cGxhbmF0aW9uPC9oND4NCjxwPkEgY2F0YWxvZ2VyIGltYWdlIGhhcyBhIGZpbGVzcGVjIGxpa2U6DQo8YnIgLz4NCnJvb3RfcGF0aC9tb2R1bGVzL0NhdGFsb2dlci9DYXRhbG9nZXIuSW1hZ2UucGhwP2k9aXRlbW5hbWVfZl8xXzQwMF8xLmpwZyZhbXA7YWM9ODI4ODgNCjwvcD4NCjxwPlRoZSBpbnRlcmVzdGluZyB0aGluZyBpcyAmcXVvdDtpdGVtbmFtZV9mXzFfNDAwXzEuanBnJnF1b3Q7IC0gdGhlIHN0dWZmIGJlZm9yZSBpcyBqdXN0IGEgY2FsbCB0byB0aGUgcHJvZ3JhbSwgYW5kIHRoZSAmYW1wO2FjPTgyODg4IGlzIGEgcmFuZG9tIHRoaW5nIHRoYXQNCmlzIGRlc2lnbmVkIHRvIHByZXZlbnQgYnJvd3NlciBjYWNoaW5nLiBTbyBleGFtaW5pbmcgdGhlIG5hbWUgcGllY2UgYnkgcGllY2UgKHNlcGFyYXRpbmcgYXQgdGhlIHVuZGVyc2NvcmVzKSwgd2UgaGF2ZTo8L3A+DQo8dWw+DQo8bGk+aXRlbSBuYW1lIC0gdGhpcyBpcyB0aGUgYWxpYXMgb2YgdGhlIGl0ZW0vY2F0ZWdvcnkgcGFnZSBjb250YWluaW5nIHRoZSBpbWFnZS48L2xpPg0KPGxpPmltYWdlIHR5cGUgLSB0aGlzIGlzIGEgZGVzaWduYXRpb24gZm9yIGltYWdlIHR5cGU6PHVsPg0KPGxpPmYgLSBpdGVtIGZ1bGwtc2l6ZSBpbWFnZTwvbGk+DQo8bGk+dCAtIGl0ZW0gdGh1bWJuYWlsPC9saT4NCjxsaT5jZiAtIGNhdGVnb3J5IGZ1bGwtc2l6ZWQgaW1hZ2U8L2xpPg0KPGxpPmN0IC0gY2F0ZWdvcnkgdGh1bWJuYWlsPC9saT4NCjxsaT5jdGYgLSBwcmludGFibGUgY2F0YWxvZyBmdWxsLXNpemVkIGltYWdlPC9saT4NCjwvdWw+DQo8L2xpPg0KPGxpPmltYWdlIG51bWJlciAtIHNvIGEgZ2l2ZW4gaXRlbS9jYXRhbG9nL2V0YyBjYW4gaGF2ZSBtdWx0aXBsZSBpbWFnZXM8L2xpPg0KPGxpPmxvbmcgZGltZW5zaW9uIC0gbG9uZyBkaW1lbnNpb24gb2YgdGhlIGltYWdlLCBpbiBwaXhlbHM8L2xpPg0KPGxpPm1pc3NpbmcgZmxhZyAtIDEgaWYgeW91IHdhbnQgdG8gc2hvdyBhbiAmcXVvdDtpbWFnZSBtaXNzaW5nJnF1b3Q7IGltYWdlIGlmIHRoaXMgaW1hZ2UgZG9lc24mIzAzOTt0IGV4aXN0LCAwIG90aGVyd2lzZTwvbGk+DQo8L3VsPg0KPHA+DQpUaGlzIHdpbGwgdGFrZSBhbiBpbWFnZSBpbiByb290X3BhdGgvdXBsb2Fkcy9pbWFnZXMvY2F0YWxvZ19zcmMvaXRlbW5hbWVfc3JjXzENCjxoND5BY2Nlc3NpbmcgeW91ciBPcmlnaW5hbCBJbWFnZTwvaDQ+DQo8cD5XaGVuIENhdGFsb2dlciB1cGxvYWRzIGltYWdlcywgaXQgcHV0cyB0aGVtIGludG8gYSBkaXJlY3RvcnkgY2FsbGVkICZxdW90O2NhdGFsb2dlcl9zcmMmcXVvdDsgaW4geW91ciB1cGxvYWRzL2ltYWdlcy8gZGlyZWN0b3J5LiBUaGV5IGltYWdlcyBhcmUgbmFtZWQgYWNjb3JkaW5nIHRvIHRoZSBhbGlhcyBvZiB0aGUgcGFnZToNCmFsaWFzX3NyY18jLmpwZyB3aGVyZSAjIGlzIHRoZSBpbWFnZSBudW1iZXIgZm9yIHRoYXQgcGFnZS48L3A+DQo8cD5TbywgdG8gYWNjZXNzIHRoZSBvcmlnaW5hbGx5IHVwbG9hZGVkIGltYWdlcyBvbiBhIENhdGVnb3J5IHBhZ2UsIHlvdSYjMDM5O2QgZ2VuZXJhdGUgdGhlIFVSTCBtYW51YWxseS48L3A+DQo8cD5TbyBvbiBhIGNhdGVnb3J5IHBhZ2UsIGZvciBleGFtcGxlLCBpbnN0ZWFkIG9mIHVzaW5nIHskaXRlbXNbbnVtbG9vcF0uaW1hZ2V9IHlvdSYjMDM5O2QgdXNlICZxdW90Oy91cGxvYWRzL2ltYWdlcy9jYXRhbG9nZXJfc3JjL3skaXRlbXNbbnVtbG9vcF0uYWxpYXN9X3NyY18xLmpwZyZxdW90Oy48L3A+DQo8aDM+Q3JlZGl0czwvaDM+DQo8cD5UaGFua3MgdG8gPGEgaHJlZj0iaHR0cDovL3d3dy5pZC1hLmNvLnVrIj5QYXVsIENvb3BlcjwvYT4gZm9yIHNwb25zb3JpbmcgdGhlIGRldmVsb3BtZW50IG9mIHRleHRhcmVhIGF0dHJpYnV0ZXMuPC9wPg0KPHA+VGhhbmtzIHRvIG51bWVyb3VzIHBhdGllbnQgdXNlcnMgYW5kIGJ1ZyB0ZXN0ZXJzIChtYW55IG9mIHdob20gaGFkIG5vIGlkZWEgd2hhdCB0aGV5IHdlcmUgZ2V0dGluZyBpbnRvLik8L3A+IA0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIENNUyBNYWRlIFNpbXBsZSAgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyI+RGV2ZWxvcGVyIEZvcmdlPC9hPi48L2xpPg0KPGxpPlRvIG9idGFpbiBjb21tZXJjaWFsIHN1cHBvcnQsIHBsZWFzZSBzZW5kIGFuIGVtYWlsIHRvIHRoZSBhdXRob3IgYXQgPGEgaHJlZj0ibWFpbHRvOnNqZ0BjbXNtb2R1bGVzLmNvbSI+PHNqZ0BjbXNtb2R1bGVzLmNvbT48L2E+LjwvbGk+DQo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+DQo8bGk+VGhlIGF1dGhvciBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPg0KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yIGRpcmVjdGx5IGFuZCBncm92ZWxsaW5nIGZvciBmcmVlIHN1cHBvcnQuPC9saT4NCjwvdWw+DQo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQNCm9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4NCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA4LCBTYW11ZWwgR29sZHN0ZWluIDxhIGhyZWY9Im1haWx0bzpzamdAY21zbW9kdWxlcy5jb20iPjxzamdAY21zbW9kdWxlcy5jb20+PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4nOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdNYWtlIHN1cmUgdG8gc2V0IHRoZSAmcXVvdDtNb2RpZnkgQ2F0YWxvZyBTZXR0aW5ncyZxdW90OyBwZXJtaXNzaW9uIG9uIHVzZXJzIHdobyB3aWxsIGJlIGFkbWluaXN0ZXJpbmcgdGhlIGNhdGFsb2cuJzsKJGxhbmdbJ3FjYSddID0gJ1AwLTEzMDYxMzAwOTMtMTMxNDc2OTY5OTAxMic7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEzMTY4MDA2NzguMTAuNS51dG1jc3I9Z29vZ2xlfHV0bWNjbj0ob3JnYW5pYyl8dXRtY21kPW9yZ2FuaWN8dXRtY3RyPW1hZGVzaW1wbGUnOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My41OTM5MDkzNDIuMTMxMDcyODA1MC4xMzE2ODAzMzM3LjEzMTY4ODk1ODMuMTInOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/fi_FI.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ25hbWVpbWFnZXMnXSA9ICdLdXZhdCc7CiRsYW5nWydkZWxldGVpbWFnZSddID0gJ1BvaXN0YSBrdXZhJzsKJGxhbmdbJ093bmVyJ10gPSAnT21pc3RhamEnOwokbGFuZ1snQ2F0YWxvZ0l0ZW0nXSA9ICdUdW90dGVpZGVuIGx1ZXR0ZWxvaWphJzsKJGxhbmdbJ25hbWVwYWdlJ10gPSAnU2l2dSc7CiRsYW5nWydQZXJtaXNzaW9ucyddID0gJ09pa2V1ZGV0JzsKJGxhbmdbJ1N1YiddID0gJ1N1YiAtJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtX3NvcnRfb3JkZXIyJ10gPSAnVHVvdHRlaWRlbiBqJmF1bWw7cmplc3R5c2tyaXRlZXJpJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtc19wZXJfcGFnZTInXSA9ICdUdW90dGVpdGEgcGVyIHNpdnUnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2NhdGVnb3J5X3JlY3Vyc2UyJ10gPSAnTiZhdW1sO3l0dCZvdW1sO3RhdmFuIGFzZXR1a3NldCc7CiRsYW5nWyd3aGljaF9hdHRyaWJ1dGVzJ10gPSAnTWl0ayZhdW1sOyB0aWVkb3QgbiZhdW1sO3l0ZXQmYXVtbDsmYXVtbDtuIGx1ZXR0ZWxvc3NhJzsKJGxhbmdbJ25hdlRhYiddID0gJyB8ICc7CiRsYW5nWyduZWVkcGVybWlzc2lvbiddID0gJ1RhcnZpdHNldCAlcyBzdW9yaXR0YWFrc2VzaSB0b2ltaW5ub24uJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0x1ZXR0ZWxvJzsKJGxhbmdbJ2FkbWluZGVzY3JpcHRpb24nXSA9ICdIYWxsaXRzZSBsdWV0dGVsb24gYXNldHVrc2lhLic7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnT2xldGtvIHZhcm1hIGV0dCZhdW1sOyBoYWx1YXQgdHVob3RhICVzPyc7CiRsYW5nWyd1bmlxdWVjb2RlJ10gPSAnVW5paWtraSBrb29kaSc7CiRsYW5nWyd0ZW1wbGF0ZWxpc3QnXSA9ICdBbGlwb2hqYSc7CiRsYW5nWydsaXN0dGVtcGwnXSA9ICdIYWxsaXRzZSBhbGlwb2hqaWEnOwokbGFuZ1sndGl0bGVfaXRlbV90YWInXSA9ICdUdW90dGVlbiBvbWluYWlzdXVkZXQnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfdGFiJ10gPSAnS2F0ZWdvcmlhbiBvbWluYWlzdXVkZXQnOwokbGFuZ1sndGl0bGVfcHJpbnRhYmxlX3RhYiddID0gJ1R1bG9zdGV0dGF2YW4gbHVldHRlbG9uIGFzZXR1a3NldCc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3RhYiddID0gJ1R1b3R0ZWVuIGt1dmFuIGtvb3QnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2VfdGFiJ10gPSAnS2F0ZWdvcmlhc2l2dW4gYXNldHVrc2V0JzsKJGxhbmdbJ3RpdGxlX2lzX3RleHRmaWVsZCddID0gJ1RleHQgQXJlYT8nOwokbGFuZ1sndGl0bGVfZGVsZXRlJ10gPSAnUG9pc3RhPyc7CiRsYW5nWyd0aXRsZV9hc3BlY3RfdGFiJ10gPSAnS3V2YXN1aGRlJzsKJGxhbmdbJ3RpdGxlX2ltYWdlX3RhYiddID0gJ011dXQga3V2YS1hc2V0dWtzZXQnOwokbGFuZ1sndGl0bGVfaXRlbV90ZW1wbGF0ZV92YXJzJ10gPSAnVHVvdGUgcG9oamFuIG11dXR0dWphdCc7CiRsYW5nWyd0aXRsZV9jYXRfdGVtcGxhdGVfdmFycyddID0gJ0thdGVnb3JpYXBvaGphbiBtdXV0dHVqYXQgJzsKJGxhbmdbJ3RpdGxlX2ZlYXR1cmVfdGVtcGxhdGVfdmFycyddID0gJ0ZlYXR1cmVzLXBvaGphbiBtdXV0dHVqYXQnOwokbGFuZ1sndGl0bGVfc2hvd19vbmx5X2V4aXN0aW5nX2ltYWdlcyddID0gJ0omYXVtbDt0JmF1bWw7IHBvaXMgcHV1dHR1dmF0IGt1dmF0JzsKJGxhbmdbJ3RpdGxlX3Nob3dfb25seV9leGlzdGluZ19pbWFnZXNfaGVscCddID0gJ1RoaXMgd2lsbCBvbmx5IHB1dCBpbWFnZSByZWZlcmVuY2VzIGludG8gbGlzdHMgaWYgdGhlIGltYWdlIGV4aXN0cy48YnIgLz4oTm9ybWFsbHksIHRoaXMgaXMgZmluZSwgYnV0IGlmIHlvdSBhcmUgZG9pbmcgc29tZXRoaW5nIGNsZXZlciB3aXRoIGltYWdlPGJyIC8+YXJyYXkgaW5kZXhlcywgdGhpcyBjb3VsZCBjYXVzZSB5b3UgdHJvdWJsZS4pJzsKJGxhbmdbJ3RpdGxlX2ZsdXNoX2NhdHMnXSA9ICdGbHVzaCBjYXRlZ29yeSBwYWdlIGJ1ZmZlcnMnOwokbGFuZ1sndGl0bGVfZmx1c2hfY2F0c19oZWxwJ10gPSAnSm9zIHNpbnVsbGEgb24gdmFsdGF2YSBtJmF1bWw7JmF1bWw7ciZhdW1sOyB0dW90dGVpdGEgbiZhdW1sO3l0ZXR0JmF1bWw7diZhdW1sO2tzaTxiciAvPmthdGVnb3JpYXNzYSwgam90a3V0IFBIUC1hc2VubnVrc2V0IGVwJmF1bWw7b25uaXN0dXZhdCBzaXZ1biBuJmF1bWw7eXR0JmF1bWw7bWlzZXNzJmF1bWw7PGJyIC8+b2lrZWluLiBWYWxpdHNlIHQmYXVtbDttJmF1bWw7IGtvcmphdGFrc2VzaSBvbmdlbG1hbiAodGVzdGFhIG15Jm91bWw7cyB0dWxlZWtvIHNpdnV2YWlrdXR1a3NpYSknOwokbGFuZ1snY2F0YWxvZ2VyJ10gPSAnTHVldHRlbG9pamEnOwokbGFuZ1snaXRlbV9wYWdlJ10gPSAnVHVvdGVzaXZ1JzsKJGxhbmdbJ2NhdGVnb3J5X3BhZ2UnXSA9ICdLYXRlZ29yaWFzaXZ1JzsKJGxhbmdbJ2NhdGFsb2dfcHJpbnRhYmxlJ10gPSAnVHVsb3N0ZXR0YXZhIGx1ZXR0ZWxvJzsKJGxhbmdbJ2NhdGFsb2dfZGF0YXNoZWV0J10gPSAnTHVldHRlbG9uIGRhdGFsZWh0aSc7CiRsYW5nWydjYXRhbG9nX3Nob3J0X2xpc3QnXSA9ICdPbWluYWlzdXVzbGlzdGEnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2l0ZW1fc29ydF9vcmRlciddID0gJ0FzZXRhIGomYXVtbDtyamVzdHlzJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtc19wZXJfcGFnZSddID0gJ0t1aW5rYSBtb250YSB0dW90ZXR0YSBzaXZ1bGxhJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9jYXRlZ29yeV9yZWN1cnNlJ10gPSAnS2F0ZWdvcmlhc3NhIG5heXRldCZhdW1sOyZhdW1sO24nOwokbGFuZ1sndGl0bGVfaXRlbV9zb3J0X29yZGVyJ10gPSAnT2xldHVzaiZhdW1sO3JqZXN0eXMnOwokbGFuZ1sndGl0bGVfcHJpbnRhYmxlX3NvcnRfb3JkZXInXSA9ICdUdWxvc3RldHRhdmFuIGx1ZXR0ZWxvbiBvbGV0dXNqJmF1bWw7cmplc3R5cyc7CiRsYW5nWyd0aXRsZV9pdGVtc19wZXJfcGFnZSddID0gJ1R1b3RldHRhIHNpdnVsbGEgb2xldHVzYXJ2byc7CiRsYW5nWyd0aXRsZV9hdmFpbF9hdHRycyddID0gJ1R1b3R0ZWVuIG9taW5haXN1dWRldCwgam9pdGEgdm9pdCBrJmF1bWw7eXR0JmF1bWw7JmF1bWw7IHQmYXVtbDtzcyZhdW1sOyBwb2hqYXNzYSc7CiRsYW5nWyd0aXRsZV9hdmFpbF9pbWF0dHJzJ10gPSAnVHVvdGVrdXZhdCwgam9pdGEgdm9pdCBrJmF1bWw7eXR0JmF1bWw7JmF1bWw7IHQmYXVtbDtzcyZhdW1sOyBwb2hqYXNzYSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfaGVybyddID0gJ0t1dmFuIGtva28gdHVvdGVzaXZ1bGxhIChwaXRrJmF1bWw7IHNpdnUgcGlrc2VsZWluJmF1bWw7KSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfdGh1bWJuYWlsJ10gPSAnUGllbm9pc2t1dmFuIGtva28gdHVvdGVzaXZ1bGxhIChwaXRrJmF1bWw7IHNpdnUgcGlrc2VsZWluJmF1bWw7KSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfY2F0ZWdvcnknXSA9ICdQaWVub2lza3V2YW4ga29rbyBrYXRlZ29yaWFzaXZ1bGxhIChwaXRrJmF1bWw7IHNpdnUgcGlrc2VsZWluJmF1bWw7KSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfY2F0YWxvZyddID0gJ1BpZW5vaXNrdXZhbiBrb2tvIGx1ZXR0ZWxvc2l2dWxsYSAocGl0ayZhdW1sOyBzaXZ1IHBpa3NlbGVpbiZhdW1sOyknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV9oZXJvJ10gPSAnS3V2YW4ga29rbyBrYXRlZ29yaWFzaXZ1bGxhIChwaXRrJmF1bWw7IHNpdnUgcGlrc2VsZWluJmF1bWw7KSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9pbWFnZV9zaXplX3RodW1ibmFpbCddID0gJ1BpZW5vaXNrdXZhbiBrb2tvIGthdGVnb3JpYXNpdnVsbGEgKHBpdGsmYXVtbDsgc2l2dSBwaWtzZWxlaW4mYXVtbDspJzsKJGxhbmdbJ3RpdGxlX3RlbXBsYXRlJ10gPSAnUG9oamEnOwokbGFuZ1sndGl0bGVfdGVtcGxhdGVfdHlwZSddID0gJ1BvaGphbiB0eXlwcGknOwokbGFuZ1sndGl0bGVfdGl0bGUnXSA9ICdPdHNpa2tvJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2VfY291bnQnXSA9ICdNYWtzaW1pbSZhdW1sOyZhdW1sO3ImYXVtbDsgbiZhdW1sO3l0dCZvdW1sO2omYXVtbDsga3VsbGVraW4gdHVvdHRlZWxsZSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9pbWFnZV9jb3VudCddID0gJ0Jhbm5lcmVpZGVuIG1ha3NpbWltJmF1bWw7JmF1bWw7ciZhdW1sOyBqb2lrYWlzZWxsZSBrYXRlZ29yaWFzaXZ1bGxlJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fYXR0cmlidXRlc19oZWxwJ10gPSAnSm9rYWluZW4gdCZhdW1sO2gmYXVtbDtuIHN5Jm91bWw7dHQmYXVtbDttJmF1bWw7c2kgb21pbmFpc3V1cyB0dWxlZSBvbGVtYWFuIG90c2lra28ga2VudCZhdW1sO2xsZSwgam90YSB2b2l0IGsmYXVtbDt5dHQmYXVtbDsmYXVtbDsgeWtzaXR0JmF1bWw7aXNlbiB0dW90dGVlbiBrdXZhYW1pc2VlbiBqYSBzZSBuJmF1bWw7eXRldCZhdW1sOyZhdW1sO24ga3lzZWlzZW4gdHVvdHRlZW4ga3V2YXVrc2Vzc2EuIFZvaXQgam91dHVhIHAmYXVtbDtpdml0dCZhdW1sO20mYXVtbDsmYXVtbDtuIHBvaGphbiwgam90dGEgbXV1dG9rc2V0IG4mYXVtbDtreXYmYXVtbDt0LiBUeWhqZW5uJmF1bWw7IG5pbWkgcG9pc3RhYWtzZXNpIG9taW5haXN1dWRlbi4nOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfYXR0cmlidXRlc19oZWxwJ10gPSAnSm9rYWluZW4gdCZhdW1sO2gmYXVtbDtuIHN5Jm91bWw7dHQmYXVtbDttJmF1bWw7c2kgb21pbmFpc3V1cyB0dWxlZSBvbGVtYWFuIG90c2lra28ga2VudCZhdW1sO2xsZSwgam90YSB2b2l0IGsmYXVtbDt5dHQmYXVtbDsmYXVtbDsgeWtzaXR0JmF1bWw7aXNlbiB0dW90dGVlbiBrdXZhYW1pc2VlbiBrYXRlZ29yaWEgc2l2dWxsYSBqYSBzZSBuJmF1bWw7eXRldCZhdW1sOyZhdW1sO24ga3lzZWlzZW4gdHVvdHRlZW4ga3V2YXVrc2Vzc2EuIFZvaXQgam91dHVhIHAmYXVtbDtpdml0dCZhdW1sO20mYXVtbDsmYXVtbDtuIHBvaGphbiwgam90dGEgbXV1dG9rc2V0IG4mYXVtbDtreXYmYXVtbDt0LiBUeWhqZW5uJmF1bWw7IG5pbWkgcG9pc3RhYWtzZXNpIG9taW5haXN1dWRlbi4nOwokbGFuZ1sndGl0bGVfY2F0YWxvZ19hdHRyaWJ1dGVzX2hlbHAnXSA9ICdKb2thaW5lbiB0JmF1bWw7aCZhdW1sO24gc3kmb3VtbDt0dCZhdW1sO20mYXVtbDtzaSBvbWluYWlzdXVzIHR1bGVlIG9sZW1hYW4gb3RzaWtrbyBrZW50JmF1bWw7bGxlLCBqb3RhIHZvaXQgayZhdW1sO3l0dCZhdW1sOyZhdW1sOyB5a3NpdHQmYXVtbDtpc2VuIHR1b3R0ZWVuIGt1dmFhbWlzZWVuIHR1bG9zdHVzIHNpdnVsbGEgamEgc2UgbiZhdW1sO3l0ZXQmYXVtbDsmYXVtbDtuIGt5c2Vpc2VuIHR1b3R0ZWVuIGt1dmF1a3Nlc3NhLiBWb2l0IGpvdXR1YSBwJmF1bWw7aXZpdHQmYXVtbDttJmF1bWw7JmF1bWw7biBwb2hqYW4sIGpvdHRhIG11dXRva3NldCBuJmF1bWw7a3l2JmF1bWw7dC4gVHloamVubiZhdW1sOyBuaW1pIHBvaXN0YWFrc2VzaSBvbWluYWlzdXVkZW4uJzsKJGxhbmdbJ3RpdGxlX2ZvcmNlX2FzcGVjdF9yYXRpbyddID0gJ1Bha290YSBrdXZhdCBtJmF1bWw7JmF1bWw7ciZhdW1sO3R0eXluIHN1aHRlZXNlZW4nOwokbGFuZ1sndGl0bGVfZm9yY2VfYXNwZWN0X3JhdGlvX2xhYmVsJ10gPSAnUGFrb3RhIHNpdnUgc3VoZGUnOwokbGFuZ1sndGl0bGVfaW1hZ2VfYXNwZWN0X3JhdGlvJ10gPSAnc2l2dSBzdWhkZSAoayZhdW1sO3l0JmF1bWw7IG11b3RvYSAmcXVvdDs0OjMmcXVvdDsgdGFpICZxdW90OzE6Mi41JnF1b3Q7KSc7CiRsYW5nWyd0aXRsZV9hc3BlY3RfcmF0aW9faGVscCddID0gJ0pvcyBwYWtvdGF0IGt1dmFuIG0mYXVtbDsmYXVtbDtyJmF1bWw7dHR5eW4gc2l2dXN1aHRlZXNlZW4gc2Ugc2thYWxhdGFhbiBtYWh0dW1hYW4ganV1cmkgdCZhdW1sO2gmYXVtbDtuIGtva29vbiAoa3VpdGVua2luIHRhcmtpc3RhZW4gb25rbyBreXNlZXNzJmF1bWw7IHB5c3R5IHZhaSB2YWFrYWt1dmEpLiBNdXV0ZW4ga3V2YW4gcyZhdW1sO2lseXR0JmF1bWw7diZhdW1sO3Qgb21hbiBzaXZ1c3VodGVlbnNhIGphIHNrYWFsYXRhYW4gbmlpbiwgZXR0JmF1bWw7IHBpZGVtcGkgYWtzZWxpIG9uIG0mYXVtbDsmYXVtbDtyJmF1bWw7dHluIGtva29pbmVuLiA8Yj5laSB2aWVsJmF1bWw7IHRvdGV1dGV0dHU8L2I+JzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3NvcnQnXSA9ICdLYXRlZ29yaWFzaXZ1biB0dW90dGVpZGVuIGomYXVtbDtyamVzdHlzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2UnXSA9ICdLYXRlZ29yaWFsaXN0YXVrc2VuIG9sZXR1cyBrJmF1bWw7eXR0JmF1bWw7eXR5bWluZW4nOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9pdGVtc19hbGwnXSA9ICdTaXMmYXVtbDtsbHl0JmF1bWw7IGthaWtraSB0dW90dGVldCwgbXVrYWFubHVraWVuIGFsaWthdGVnb3JpYXQuJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfaXRlbXNfb25lJ10gPSAnU2lzJmF1bWw7bGx5dCZhdW1sOyBrYWlra2kgdCZhdW1sO20mYXVtbDtuIGthdGVnb3JpYW4gdHVvdHRlZXQsIGVpIGFsaWthdGVnb3Jpb2l0YSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2NhdGVnb3JpZXNfYWxsJ10gPSAnU2lzJmF1bWw7bGx5dCZhdW1sOyBrYWlra2kga2F0ZWdvcmlhdCwgbXVrYWFubHVraWVuIGthdGVnb3JpYXQgYWxpa2F0ZWdvcmlvaXNzYSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2NhdGVnb3JpZXNfb25lJ10gPSAnU2lzJmF1bWw7bGx5dCZhdW1sOyBrYWlra2kgdCZhdW1sO20mYXVtbDtuIGthdGVnb3JpYW4ga2F0ZWdvcmlhdCwgZWkgYWxpLWFsaWthdGVnb3Jpb2l0YSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX21peGVkX2FsbCddID0gJ1NpcyZhdW1sO2xseXQmYXVtbDsga2Fpa2tpIHR1b3R0ZWV0IGphIGFsaWthdGVnb3JpYXQsIG11a2Fhbmx1a2llbiB0dW90dGVldCBqYSBrYXRlZ29yaWF0IGFsaWthdGVnb3Jpb2lzc2EnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9taXhlZF9vbmUnXSA9ICdTaXMmYXVtbDtsbHl0JmF1bWw7IGthaWtraSB0JmF1bWw7bSZhdW1sO24ga2F0ZWdvcmlhbiB0dW90dGVldCBqYSBhbGlrYXRlZ29yaWF0LCBlaSBhbGkga2F0ZWdvcmlvaXRhIHRhaSBuaWlkZW4gdHVvdHRlaXRhJzsKJGxhbmdbJ3RpdGxlX3Nob3dfbWlzc2luZ19pbWFnZXMnXSA9ICdOJmF1bWw7eXQmYXVtbDsgJnF1b3Q7ZWkga3V2YWEmcXVvdDsta3V2YSBwdXV0dHV2aWxsZSBrdXZpbGxlJzsKJGxhbmdbJ3RpdGxlX3Nob3dfbWlzc2luZ19pbWFnZXNfbG9uZyddID0gJ04mYXVtbDt5dCZhdW1sOyBlcml0eWluZW4gJnF1b3Q7ZWkga3V2YWEmcXVvdDsta3V2YSBwdXV0dHV2aWVuIGt1dmllbiBrb2hkYWxsYSAoQXV0dGFhIHZpcmhlZW5ldHNpbm4mYXVtbDtzcyZhdW1sOy4gTXV1dG9pbiBrJmF1bWw7eXRldCZhdW1sOyZhdW1sO24geWhkZW4gcGlrc2VsaW4ga29rb2lzdGEgbCZhdW1sO3BpbiZhdW1sO2t5diZhdW1sOyZhdW1sOyBrdXZhYS4pJzsKJGxhbmdbJ25hdHVyYWxfb3JkZXInXSA9ICdTZWxhaWx1aiZhdW1sO3JqZXN0eXMnOwokbGFuZ1snYWxwaGFfb3JkZXInXSA9ICdBYWtrb3NqJmF1bWw7cmplc3R5cyc7CiRsYW5nWydtYW5hZ2VwcmVmcyddID0gJ0hhbGxpdHNlIGFzZXR1a3NpYSc7CiRsYW5nWydtYW5hZ2VhdHRycyddID0gJ0hhbGxpdHNlIGsmYXVtbDt5dHQmYXVtbDtqJmF1bWw7biBtJmF1bWw7JmF1bWw7cml0dGVsZW1pJmF1bWw7IG9taW5haXN1dWtzaWEnOwokbGFuZ1snZ2xvYmFsb3BzJ10gPSAnR2xvYmFhbGl0IGx1ZXR0ZWxvamVuIHRvaW1lbnBpdGVldCc7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ0xpcyZhdW1sOyZhdW1sOyBwb2hqYSc7CiRsYW5nWydyZWltcG9ydHRlbXBsYXRlcyddID0gJ1R1byBhbGlwb2hqYXQgdXVkZWxsZWVuJzsKJGxhbmdbJ3JlaW1wb3J0ZWQnXSA9ICdFc2ltZXJra2lhbGlwb2hqYXQgb24gcGFsYXV0ZXR0dS4nOwokbGFuZ1sndGVtcGxhdGV1cGRhdGVkJ10gPSAnUG9oamEgbGlzJmF1bWw7dHR5IHRhaSBwJmF1bWw7aXZpdGV0dHkgb25uaXN0dW5lZXN0aSc7CiRsYW5nWyd0ZW1wbGF0ZWRlbGV0ZWQnXSA9ICdQb2hqYSBwb2lzdGV0dHUnOwokbGFuZ1sncHJlZnN1cGRhdGVkJ10gPSAnQXNldHVrc2V0IHAmYXVtbDtpdml0ZXR0eSc7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1dWxpbiB2ZXJzaW8gJXMgYXNlbm5ldHR1Lic7CiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHV1bGkgcCZhdW1sO2l2aXRldHR5IHZlcnNpb29uICVzLic7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHV1bGkgcG9pc3RldHR1Lic7CiRsYW5nWydhdHRyc3VwZGF0ZWQnXSA9ICdPbWluYWlzdXVkZXQgcCZhdW1sO2l2aXRldHR5JzsKJGxhbmdbJ25vZ2xvYmFsY2hhbmdlJ10gPSAnJkF1bWw7bCZhdW1sOyB2YWloZGEnOwokbGFuZ1snZ2xvYmFsbHl1cGRhdGVkJ10gPSAnTXV1dG9rc2V0IHRhbGxlbm5ldHR1IGdsb2JhYWxpc3RpJzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ011b2trYWEgcG9oamFhJzsKJGxhbmdbJ3N1YnRlbXBsYXRlcyddID0gJ0x1ZXR0ZWxvbiBhbGlwb2hqYXQnOwokbGFuZ1snbmV4dCddID0gJzomcmFxdW87JzsKJGxhbmdbJ3ByZXYnXSA9ICcmbGFxdW87Oic7CiRsYW5nWydlZGl0J10gPSAnTXVva2thYSc7CiRsYW5nWydkZWxldGUnXSA9ICdQb2lzdGEnOwokbGFuZ1snbm90ZW1wbGF0ZXMnXSA9ICdFaSBhbGlwb2hqaWEgYXNlbm5ldHR1bmEnOwokbGFuZ1snaGVscHRleHQnXSA9ICc8aDM+V2hhdCBEb2VzIFRoaXMgRG8/PC9oMz4NCjxwPlRoaXMgbW9kdWxlIGxldHMgeW91IGNyZWF0ZSBvbmxpbmUgY2F0YWxvZ3Mgb3IgcG9ydGZvbGlvcy4gQ2F0YWxvZ3MgY29uc2lzdCBvZiAmcXVvdDtDYXRhbG9nIEl0ZW1zJnF1b3Q7IHdoaWNoIGNvdWxkIGJlIHByb2R1Y3RzLCB3b3JrcyBvZiBhcnQsIG9yIHRoZSBsaWtlLCBhbmQgJnF1b3Q7Q2F0YWxvZyBDYXRlZ29yaWVzJnF1b3Q7IHdoaWNoIGNvdWxkIGJlIGl0ZW0gY2F0ZWdvcmllcyBvciBvdGhlciBuYXR1cmFsIGRpdmlzaW9ucyBvZiB0aGUgY2F0YWxvZy48L3A+DQo8cD5DYXRlZ29yaWVzIG1heSBiZSBkZWZpbmVkIGhpZXJhcmNoaWNhbGx5ICh1c2luZyB0aGUgc3RhbmRhcmQgQ01TIE1hZGUgU2ltcGxlIGNvbnRlbnQgbGlzdCkuIENhdGVnb3J5IHBhZ2VzIGNhbiBkaXNwbGF5IGl0ZW1zIGluIHRoZSBjYXRlZ29yeSBhbmQvb3Igc3ViY2F0ZWdvcmllcywgb3B0aW9uYWxseSByZWN1cnNpbmcgdGhyb3VnaCBzdWItY2F0ZWdvcmllcy4gVGhpcyBiZWhhdmlvciBjYW4gYmUgY29uZmlndXJlZCBvbiBhIHBlci1jYXRlZ29yeSBiYXNpcy48L1A+DQo8cD5UaGVyZSBpcyBhbHNvIGEgUHJpbnRhYmxlIENhdGFsb2csIHdoaWNoIHJlcHJlc2VudHMgdGhlIHdob2xlIGNvbGxlY3Rpb24gb2YgQ2F0YWxvZyBJdGVtcyBvbiBhIHNpbmdsZSBwYWdlICh0aGlzIGlzIGN1cnJlbnRseSBpbXBsZW1lbnRlZCBiYWRseSwgYW5kIHdpbGwgbG9hZCBzbG93bHkpLjwvcD4NCjxwPlRoZSBtb2R1bGUgaGFzIGJ1aWx0LWluIHN1cHBvcnQgZm9yICZxdW90O0NvbnRlbnQgQWxpYXNlcyZxdW90OyAoYSBtb2R1bGUgYXZhaWxhYmxlIGF0IDxhIGhyZWY9JnF1b3Q7aHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jb250ZW50YWxpYXNlcy8mcXVvdDs+dGhlIERldmVsb3BlciBGb3JnZTwvYT4pLCB3aGljaCBhbGxvd3MgeW91IHRvIHBsYWNlIGFueSBDYXRhbG9nIEl0ZW0gaW50byBtdWx0aXBsZSBDYXRhbG9nIENhdGVnb3JpZXMuPC9wPg0KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+DQo8cD5XaGVuIHlvdSBpbnN0YWxsIHRoaXMgbW9kdWxlLCBpdCBjcmVhdGVzIHRocmVlIG5ldyBDb250ZW50IFR5cGVzOiBDYXRhbG9nIEl0ZW0sIENhdGFsb2cgQ2F0ZWdvcnksIGFuZCBQcmludGFibGUgQ2F0YWxvZy4gV2hlbiB5b3UmIzAzOTtyZSBpbiB5b3VyIHNpdGUgYWRtaW5pc3RyYXRpb24gY2F0ZWdvcnksIHlvdSBhZGQgQ2F0YWxvZyBJdGVtcyBhbmQgQ2F0YWxvZyBDYXRlZ29yaWVzIGp1c3QgYXMgeW91IHdvdWxkIGFueSBvdGhlciBraW5kIG9mIHBhZ2UuIFNlbGVjdCBDb250ZW50ID4gUGFnZXMgPiBBZGQgQ29udGVudCwgYW5kIHRoZW4gc2VsZWN0ICZxdW90O0NhdGFsb2cgSXRlbSZxdW90OyBvciAmcXVvdDtDYXRhbG9nIENhdGVnb3J5JnF1b3Q7IGZyb20gdGhlIENvbnRlbnQgVHlwZSBwdWxsZG93bi48L3A+DQo8aDQ+Q2F0YWxvZyBJdGVtczwvaDQ+DQo8cD5BZGRpbmcgYSBDYXRhbG9nIEl0ZW0gaXMgc2ltaWxhciB0byBhZGRpbmcgYW4gb3JkaW5hcnkgcGFnZSB0byB5b3VyIHNpdGUuIFRoZSBkYXRhIGZpZWxkcyBmb3IgdGhlIEl0ZW0gYXJlIG5vdCBleGFjdGx5IHRoZSBzYW1lLCBob3dldmVyLiBBbHNvIG5vdGUgdGhhdCBpbiB0aGUgJnF1b3Q7SW1hZ2VzJnF1b3Q7IHRhYiwgeW91IGNhbiBzZWxlY3QgbXVsdGlwbGUgaW1hZ2VzIHRvIHVwbG9hZCBmb3IgdGhlIGl0ZW0uIFdoZW4geW91IHVwbG9hZCBpbWFnZXMsIHRoZSBzeXN0ZW0gd2lsbCBzaXplIHRoZW0gYXBwcm9wcmlhdGVseSBmb3IgdGhlIGNhdGFsb2csIGNyZWF0ZSB0aHVtYm5haWxzIGZvciB1c2UgaW4gdGhlIEl0ZW0mIzAzOTtzIHBhZ2UsIGNyZWF0ZSB0aHVtYm5haWxzIGZvciBhbnkgQ2F0ZWdvcnkgcGFnZXMsIGFuZCBzbyBvbi4gVGhpcyByZXF1aXJlcyB0aGF0IHlvdSBoYXZlIEdEIG9yIGEgc2ltaWxhciBpbWFnZSBsaWJyYXJ5IGluc3RhbGxlZC4gQ3VycmVudGx5LCBvbmx5IGpwZWcgZm9ybWF0IGltYWdlcyBhcmUgc3VwcG9ydGVkLjwvcD4NCjxoND5DYXRhbG9nIENhdGVnb3JpZXM8L2g0Pg0KPHA+QSBDYXRhbG9nIENhdGVnb3J5IGlzIHVzZWQgZm9yIG9yZ2FuaXppbmcgeW91ciBjYXRhbG9nIGl0ZW1zLiBJdCBwcm92aWRlcyBhIHBhZ2UgdGhhdCBsaXN0cyBDYXRhbG9nZXIgY29udGVudCB0aGF0IGlzIGNvbnRhaW5lZCBieSBpdC4gQSBDYXRhbG9nIEl0ZW0gaXMgY29uc2lkZXJlZCB0byBiZSBwYXJ0IG9mIGEgQ2F0YWxvZyBDYXRlZ29yeSBpZiBpdCBpcyBiZWxvdyB0aGF0IENhdGVnb3J5IGluIHRoZSBTaXRlIEhpZXJhcmNoeS4gQ2F0ZWdvcmllcyBjYW4gc2ltaWxhcmx5IGluY2x1ZGUgb3RoZXIgQ2F0ZWdvcmllcy48L3A+DQo8cD5DYXRhbG9nIENhdGVnb3JpZXMgaGF2ZSBhIG51bWJlciBvZiBzZXR0aW5ncyB0byBkZXRlcm1pbmUgaG93IHRoZXkgc2hvdWxkIGRpc3BsYXkgdGhlIEl0ZW1zIGFuZCBDYXRlZ29yaWVzIHRoZXkgY29udGFpbjogaWYgeW91IGxvb2sgYXQgdGhlICZxdW90O09wdGlvbnMmcXVvdDsgdGFiLCB5b3UgY2FuIGNob29zZSBob3cgbWFueSBpdGVtcyBhbmQvb3IgY2F0ZWdvcmllcyB0byBzaG93LCB3aGF0IG9yZGVyIHRvIHNob3cgdGhlbSBpbiwgd2hldGhlciB0byBkaXNwbGF5IG9ubHkgaXRlbXMgb3Igb25seSBjYXRlZ29yaWVzIG9yIGJvdGgsIGFuZCBob3cgbWFueSBsZXZlbHMgb2YgdGhlIGhpZXJhcmNoeSB0byBkaXNwbGF5IGJlbG93IHRoZSBjYXRlZ29yeSBwYWdlLjwvcD4NCjxwPkZvciBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTo8L3A+DQo8b2w+DQoJPGxpPjxiPkhhdHM8L2I+DQoJCTxvbD4NCgkJCTxsaT48Yj5GYXNoaW9uPC9iPg0KCQkJIAk8b2w+DQoJCQkgCQk8bGk+RmVhdGhlcmVkIEhhdDwvbGk+PGxpPkZlZG9yYSA8L2xpPjxsaT5CYXNlYmFsbCBIYXQ8L2xpPg0KCQkJIAk8L29sPg0KCQkJIDwvbGk+DQoJCSAJPGxpPjxiPldvcmsgSGF0czwvYj4NCgkJICAgIAk8b2w+DQoJCSAgICAJCTxsaT5IYXJkIEhhdDwvbGk+PGxpPkRpdmluZyBIZWxtZXQ8L2xpPg0KCQkgICAgCTwvb2w+DQoJCSAgICA8L2xpPg0KCQk8L29sPg0KCTwvbGk+DQo8L29sPg0KPHA+SW4gdGhpcyBkaWFncmFtLCBib2xkZWQgaXRlbXMgYXJlIENhdGFsb2cgQ2F0ZWdvcmllcywgYW5kIG5vbi1ib2xkZWQgaXRlbXMgYXJlIENhdGFsb2cgSXRlbXMuIERlcGVuZGluZyB1cG9uIGhvdyB5b3Ugc2V0IHlvdXIgb3B0aW9ucywgdGhlIEhhdHMgQ2F0ZWdvcnkgUGFnZSBjYW4gc2hvdyBvbmx5IGVudHJpZXMgZm9yIHRoZSBGYXNoaW9uIGFuZCBXb3JrIEhhdHMgQ2F0ZWdvcnkgUGFnZXMsIG9yIGl0IGNhbiBzaG93IGVudHJpZXMgZm9yIEZhc2hpb24sIFdvcmsgSGF0cywgYW5kIGFsbCB0aGUgaGF0cyBsaXN0ZWQgYmVsb3cgdGhlbS48L3A+DQo8cD5Zb3UgY2FuIG9wdCB0byBzaG93IHRoZSBpdGVtcyBpbiAmcXVvdDtuYXR1cmFsJnF1b3Q7IG9yZGVyIChpLmUuLCB0aGUgb3JkZXIgdGhlIEl0ZW1zIHNob3cgdXAgaW4gdGhlIENNUyBDb250ZW50IEhpZXJhcmNoeSksIG9yIGluIGFscGhhYmV0aWNhbCBvcmRlci48L1A+DQo8cD5JZiB5b3UgaGF2ZSBsYXJnZSBudW1iZXJzIG9mIGl0ZW1zIGluIGEgQ2F0ZWdvcnksIHlvdSBjYW4gc2V0IHRoZSBtYXhpbXVtIG51bWJlciB0byBiZSBkaXNwbGF5ZWQgaW4gYSBDYXRlZ29yeSBQYWdlLCBhbmQgdGhlIHBhZ2Ugd2lsbCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBsaW5rcyB0byBuYXZpZ2F0ZSB0aHJvdWdoIHRoZSBsaXN0LjwvcD4NCjxwPkVhY2ggQ2F0ZWdvcnkgcGFnZSBjYW4gaGF2ZSBkaWZmZXJlbnQgc2V0dGluZ3MgZm9yIHNvcnQgb3JkZXIsIGxldmVscyB0byBkaXNwbGF5LCBhbmQgbnVtYmVyIG9mIGl0ZW1zLiBZb3UgY2FuIHNldCB0aGUgZGVmYXVsdCBmb3IgdGhlc2UgdmFsdWVzIGluIEV4dGVuc2lvbnMgPiBDYXRhbG9nZXIgPiBNYW5hZ2UgUHJlZmVyZW5jZXMuIElmLCBhdCBhIGxhdGVyIGRhdGUsIHlvdSB3aXNoIHRvIGNoYW5nZSBzb21lIHNldHRpbmcgb24gYWxsIG9mIHlvdXIgQ2F0ZWdvcnkgcGFnZXMsIHlvdSBjYW4gZ28gaW50byBFeHRlbnNpb25zID4gQ2F0YWxvZ2VyID4gR2xvYmFsIENhdGFsb2cgT3B0aW9ucywgYW5kIG1ha2UgdGhvc2UgY2hhbmdlcy48L3A+DQo8aDQ+SW1hZ2VzPC9oND4NCjxwPkNhdGFsb2dlciBhbGxvd3MgeW91IHRvIHNlbGVjdCBkaWZmZXJlbnQgc2l6ZSBpbWFnZXMgZm9yIEl0ZW0gcGFnZXMsIENhdGVnb3J5IHBhZ2VzLCBhbmQgdGhlIFByaW50YWJsZSBDYXRhbG9nLiBZb3UgY2FuIHNldCB0aGVzZSBkZWZhdWx0cyBpbiBFeHRlbnNpb25zID4gQ2F0YWxvZ2VyID4gTWFuYWdlIFByZWZlcmVuY2VzLjwvcD4NCjxwPldoZW4geW91IHVwbG9hZCBpbWFnZXMsIHRoZSBvcmlnaW5hbCBpcyBzdG9yZWQuIFdoZW4gc29tZW9uZSB2aXNpdHMgYSBwYWdlLCB0aGUgcmVkdWNlZCBzaXplIGltYWdlcyBhcmUgcmVxdWVzdGVkIHVzaW5nIGEgc3BlY2lhbCBVUkwsIHdoaWNoIHdpbGwgcmVkaXJlY3QgdGhlIHVzZXImIzAzOTtzIGJyb3dzZXIgdG8gdGhlIHNjYWxlZCBpbWFnZSBpZiBpdCBleGlzdHMsIGFuZCBjcmVhdGluZyB0aGUgc2NhbGVkIGltYWdlIGlmIGl0IGRvZXNuJiMwMzk7dC4gVGhpcyBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiBpbWFnZXMsIHdpdGhvdXQgaGF2aW5nIHRvIHJlLXVwbG9hZCBhbGwgdGhlIGltYWdlcywgb3IgcmVzY2FsaW5nIHRoZW0gYWxsIGF0IG9uY2UuPC9wPg0KPHA+VGhpcyBpbWFnZSByZXNjYWxpbmcgY29kZSByZXF1aXJlcyB0aGF0IHlvdSBoYXZlIGVpdGhlciBJbWFnZU1hZ2ljayBvciBHRCBsaWIgaW5zdGFsbGVkLCBhbmQgY29uZmlndXJlZCBpbiB5b3VyIENNUyBNYWRlIFNpbXBsZSBjb25maWcucGhwLjwvcD4NCjxoMz5GZWF0dXJlIExpc3RzPC9oMz4NCjxwPllvdSBjYW4sIGFzIG9mIHZlcnNpb24gMC40LCBoYXZlICZxdW90O2ZlYXR1cmUgbGlzdHMmcXVvdDsgd2hpY2ggYXJlIHRoZSA8aT5uPC9pPiBtb3N0LXJlY2VudGx5IGFkZGVkIGNhdGFsb2cgaXRlbXMsIG9yIGEgY29sbGVjdGlvbiBvZiA8aT5rPC9pPiByYW5kb20gaXRlbXMgZnJvbSB0aGUgY2F0YWxvZy48L3A+DQo8aDQ+UmVjZW50bHkgQWRkZWQgRmVhdHVyZSBMaXN0PC9oND4NCjxwPlRvIHVzZSBhICZxdW90O21vc3QtcmVjZW50bHkgYWRkZWQmcXVvdDsgbGlzdCB3aWxsIGFsbG93IHlvdSB0byBkaXNwbGF5IHRoZSBtb3N0IHJlY2VudGx5LWFkZGVkIGNhdGFsb2cgaXRlbXMgdW5kZXIgYSBzcGVjaWZpZWQgcGFydCBvZiB5b3VyIGhpZXJhcmNoeS48L3A+DQo8cD5UaGUgc3ludGF4IGZvciBhICZxdW90O21vc3QgcmVjZW50bHkgYWRkZWQmcXVvdDsgbGlzdCBpcyBsaWtlOjwvcD4NCjxwPntjbXNfbW9kdWxlIG1vZHVsZT0mIzAzOTtDYXRhbG9nZXImIzAzOTsgYWN0aW9uPSYjMDM5O3JlY2VudCYjMDM5OyBzdWJfdGVtcGxhdGU9JiMwMzk7bXlfc3ViX3RlbXBsYXRlJiMwMzk7fSwgd2hlcmUgc3ViX3RlbXBsYXRlIGlzIHRoZSB0ZW1wbGF0ZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBsaXN0LiBUaGVyZSBhcmUgdHdvIG9wdGlvbmFsIHBhcmFtZXRlcnMsIGNvdW50PSYjMDM5OzMmIzAzOTsgYWxpYXM9JiMwMzk7cGFnZV9hbGlhcyYjMDM5Oywgd2hlcmUgY291bnQgaXMgdGhlIG51bWJlciBvZiBpdGVtcyB0byBpbmNsdWRlLCBhbmQgcGFnZV9hbGlhcyBpbmRpY2F0ZXMgdGhlIHRvcCBvZiB0aGUgdHJlZSAoZS5nLiwgYSBwbGFjZSBpbiB5b3VyIG1lbnUgaGllcmFyY2h5LCB0eXBpY2FsbHkgYSBjYXRlZ29yeSBwYWdlKSBpbiB3aGljaCB0byBsb29rIGZvciBuZXcgaXRlbXMuIEEgc3BlY2lhbCB2YWx1ZSBmb3IgJnF1b3Q7cGFnZV9hbGlhcyZxdW90OyBpcyAmcXVvdDsvJnF1b3Q7LCB3aGljaCBtZWFucyB0byB1c2UgPGk+YWxsPC9pPiBwYWdlcyBpbiB0aGUgc2l0ZS48L3A+DQo8aDQ+UmFuZG9tIEl0ZW1zIEZlYXR1cmUgTGlzdDwvaDQ+DQo8cD5UaGUgc3ludGF4IGZvciBhICZxdW90O3JhbmRvbSZxdW90OyBsaXN0IGlzIGxpa2U6PC9wPg0KPHA+e2Ntc19tb2R1bGUgbW9kdWxlPSYjMDM5O0NhdGFsb2dlciYjMDM5OyBhY3Rpb249JiMwMzk7cmFuZG9tJiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTt9LCB3aGVyZSBzdWJfdGVtcGxhdGUgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGxpc3QuIFRoZXJlIGFyZSB0d28gb3B0aW9uYWwgcGFyYW1ldGVycywgY291bnQ9JiMwMzk7MyYjMDM5OyBhbGlhcz0mIzAzOTtwYWdlX2FsaWFzJiMwMzk7LCB3aGVyZSBjb3VudCBpcyB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRvIGluY2x1ZGUsIGFuZCBwYWdlX2FsaWFzIGluZGljYXRlcyB0aGUgdG9wIG9mIHRoZSB0cmVlIChlLmcuLCBhIHBsYWNlIGluIHlvdXIgbWVudSBoaWVyYXJjaHksIHR5cGljYWxseSBhIGNhdGVnb3J5IHBhZ2UpIGluIHdoaWNoIHRvIGxvb2sgZm9yIG5ldyBpdGVtcy4gQSBzcGVjaWFsIHZhbHVlIGZvciAmcXVvdDtwYWdlX2FsaWFzJnF1b3Q7IGlzICZxdW90Oy8mcXVvdDssIHdoaWNoIG1lYW5zIHRvIHVzZSA8aT5hbGw8L2k+IHBhZ2VzIGluIHRoZSBzaXRlLjwvcD4NCjxoMz5DdXN0b21pemF0aW9uIGFuZCBBZHZhbmNlZCBUb3BpY3M8L2gzPg0KPGg0PkNhdGFsb2cgSXRlbSBBdHRyaWJ1dGVzPC9oND4NCjxwPlRoZSBkZWZhdWx0IGl0ZW0gYXR0cmlidXRlcyBhcmUgdHlwaWNhbCBmb3IgYSBjYXRhbG9nIG9mIHByb2R1Y3RzIG9yIGFydHdvcmtzLCBidXQgYnkgZ29pbmcgaW50byBFeHRlbnNpb25zID4gQ2F0YWxvZ2VyID4gTWFuYWdlIFVzZXItRGVmaW5lZCBBdHRyaWJ1dGVzLCB5b3UgY2FuIGNoYW5nZSB0aGUgYXR0cmlidXRlcy4gSXQmIzAzOTtzIGJlc3QgdG8gZGVmaW5lIHRoZSBhdHRyaWJ1dGVzIGJlZm9yZSB5b3Ugc3RhcnQgZW50ZXJpbmcgQ2F0YWxvZyBJdGVtcy48L3A+DQo8cD5Ob3RlIHRoYXQgdGhlIGF0dHJpYnV0ZXMgeW91IGRlZmluZSBtYXkgbmVlZCB0byBiZSBhZGRlZCB0byB0aGUgdGVtcGxhdGUgdGhhdCB5b3UmIzAzOTtyZSB1c2luZyB0byBkaXNwbGF5IENhdGFsb2cgSXRlbXMgLS0gc2VlIEN1c3RvbSBUZW1wbGF0ZXMgYmVsb3cuPC9wPg0KPGg0PkNhdGFsb2cgQ2F0ZWdvcnkgQXR0cmlidXRlczwvaDQ+DQo8cD5TaW1pbGFybHksIHlvdSBjYW4gc2V0IGF0dHJpYnV0ZXMgZm9yIENhdGVnb3JpZXMuIEFnYWluLCB0aGUgYXR0cmlidXRlcyB5b3UgZGVmaW5lIG1heSBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSB0ZW1wbGF0ZSB0aGF0IHlvdSYjMDM5O3JlIHVzaW5nIHRvIGRpc3BsYXkgQ2F0YWxvZyBDYXRlZ29yaWVzIC0tIHNlZSBDdXN0b20gVGVtcGxhdGVzIGJlbG93LjwvcD4NCjxoND5QcmludGFibGUgQ2F0YWxvZyBBdHRyaWJ1dGVzPC9oND4NCjxwPkxpa2V3aXNlLCB5b3UgY2FuIHNldCBhdHRyaWJ1dGVzIGZvciBQcmludGFibGUgQ2F0YWxvZ3MuIEFnYWluLCB0aGUgYXR0cmlidXRlcyB5b3UgZGVmaW5lIG1heSBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSB0ZW1wbGF0ZSB0aGF0IHlvdSYjMDM5O3JlIHVzaW5nIHRvIGRpc3BsYXkgeW91ciBQcmludGFibGUgQ2F0YWxvZyAtLSBzZWUgQ3VzdG9tIFRlbXBsYXRlcyBiZWxvdy48L3A+DQo8aDQ+Q3VzdG9tIFRlbXBsYXRlczwvaDQ+DQo8cD5JZiB5b3UmIzAzOTtyZSB3aWxsaW5nIHRvIG1lc3MgYXJvdW5kIHdpdGggU21hcnR5IFRlbXBsYXRlcywgeW91IGNhbiBjaGFuZ2UgdGhlIGxheW91dCBvZiBhbnkgb2YgdGhlIHBhZ2VzIGdlbmVyYXRlZCBieSBDYXRhbG9nZXIuIFRoaXMgc2hvdWxkIG1ha2UgY2VydGFpbiBkZXZlbG9wZXJzIHZlcnkgaGFwcHksIGV2ZW4gaWYgdGhlIGluZWZmaWNpZW5jeSBvZiB0aGUgcmVzdCBvZiB0aGUgY29kZSB3aWxsIG5vdC4gVGhlcmUgYXJlIGZvdXIga2luZHMgb2YgdGVtcGxhdGVzOiBvbmUga2luZCBmb3IgQ2F0YWxvZyBJdGVtcywgb25lIGtpbmQgZm9yIENhdGFsb2cgQ2F0ZWdvcmllcywgYW5kIG9uZSBraW5kIGZvciBQcmludGFibGUgQ2F0YWxvZ3MsIGFuZCBvbmUga2luZCBmb3IgJnF1b3Q7RmVhdHVyZSZxdW90OyBsaXN0cywgc3VjaCBhcyByZWNlbnRseSBhZGRlZCBpdGVtcyBvciByYW5kb20gc2VsZWN0aW9ucy48L3A+DQo8cD5XaGVuIGVkaXRpbmcgYSBUZW1wbGF0ZSwgdGhlIGFkbWluIHNjcmVlbiB3aWxsIGRpc3BsYXkgYSBsaXN0IG9mIFNtYXJ0eSB0YWdzIGF2YWlsYWJsZSB0byB5b3UgZm9yIHRoYXQga2luZCBvZiB0ZW1wbGF0ZS4gVGhpcyB3aWxsIG9ubHkgaGFwcGVuIG9uY2UgdGhlIG1vZHVsZSBrbm93cyB3aGF0IGtpbmQgb2YgdGVtcGxhdGUgeW91JiMwMzk7cmUgZWRpdGluZywgc28gd2hlbiB5b3UgZmlyc3QgY3JlYXRlIHRoZSB0ZW1wbGF0ZSwgaXQgZGlzcGxheXMgYWxsIHRoZSBTbWFydHkgdGFncyBpdCBrbm93cyBhYm91dCwgb25seSBzb21lIG9mIHdoaWNoIGJlaW5nIGFwcGxpY2FibGUuPC9wPg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIENNUyBNYWRlIFNpbXBsZSAgPGEgaHJlZj0mcXVvdDtodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnJnF1b3Q7PkRldmVsb3BlciBGb3JnZTwvYT4uPC9saT4NCjxsaT5UbyBvYnRhaW4gY29tbWVyY2lhbCBzdXBwb3J0LCBwbGVhc2Ugc2VuZCBhbiBlbWFpbCB0byB0aGUgYXV0aG9yIGF0IDxhIGhyZWY9JnF1b3Q7bWFpbHRvOnNqZ0BjbXNtb2R1bGVzLmNvbSZxdW90Oz48c2pnQGNtc21vZHVsZXMuY29tPjwvYT4uPC9saT4NCjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9JnF1b3Q7aHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnJnF1b3Q7PkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+DQo8bGk+VGhlIGF1dGhvciBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9JnF1b3Q7aXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zJnF1b3Q7PkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4NCjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseSBhbmQgZ3JvdmVsbGluZyBmb3IgZnJlZSBzdXBwb3J0LjwvbGk+ICANCjwvdWw+DQo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQNCm9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4NCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA2LCBTYW11ZWwgR29sZHN0ZWluIDxhIGhyZWY9JnF1b3Q7bWFpbHRvOnNqZ0BjbXNtb2R1bGVzLmNvbSZxdW90Oz48c2pnQGNtc21vZHVsZXMuY29tPjwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSZxdW90O2h0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCZxdW90Oz5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8bGk+VmVyc2lvbiAwLjQuMiAtIDI4IE1heSAyMDA2LiBCdWcgZml4IGZvciBhdHRyaWJ1dGVzIGluIGNhdGVnb3J5IHBhZ2VzLiBBZGRlZCAmcXVvdDsvJnF1b3Q7IHBhZ2VfYWxpYXMgZm9yIGZlYXR1cmUgbGlzdHMuPC9saT4NCjxsaT5WZXJzaW9uIDAuNC4xIC0gMjMgTWF5IDIwMDYuIEJ1ZyBmaXggdG8gbWFrZSB3b3JrIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgQ01TIE1TLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjQgLSAyMiBNYXkgMjAwNi4gQnVnIGZpeGVzLCBGZWF0dXJlIExpc3RzLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjMgLSAodW5yZWxlYXNlZCwgcHVibGlzaGVkIGZyb20gc3ZuKTwvbGk+DQo8bGk+VmVyc2lvbiAwLjIgLSAyMyBNYXJjaCAyMDA2LiBOdW1lcm91cyBidWcgZml4ZXMuIFBlcmZvcm1hbmNlIGltcHJvdmVtZW50cy4gTWVtb3J5IGZvb3RwcmludCBvcHRpbWl6YXRpb25zLiBOb3cgdXNlcyB0aGUgQ01TIDAuMTIgTW9kdWxlIEFQSS48L2xpPg0KPGxpPlZlcnNpb24gMC4xLjUgLSAxNyBOb3ZlbWJlciAyMDA1LiBJbml0aWFsIFJlbGVhc2UuIEplc3VzLCB0aGF0IHRvb2sgYSBsb25nIHRpbWUuPC9saT4NCjxsaT5WZXJzaW9uIDAuMSAtIDE5IE1hcmNoIDIwMDUuIFByb2plY3QgSW5pdGlhdGlvbi48L2xpPg0KPC91bD4nOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdBc2V0YSAmcXVvdDtNb2RpZnkgQ2F0YWxvZyBTZXR0aW5ncyZxdW90OyAtb2lrZXVkZXQgayZhdW1sO3l0dCZhdW1sO2ppbGxlLCBqb3RrYSB0dWxldmF0IGhhbGxpdHNlbWFhbiBsdWV0dGVsb2EuJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMTk1OTU0NzE5My4xMjEzODY1NzgzLjEyMTQxNzYzODQuMTIxNDIxMDM1NC4xOCc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyMTQwNTYzNDUuMTAuNC51dG1jY249KHJlZmVycmFsKXx1dG1jc3I9ZGV2LmNtc21hZGVzaW1wbGUub3JnfHV0bWNjdD0vZm9ydW0vZm9ydW0ucGhwfHV0bWNtZD1yZWZlcnJhbCc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/fr_FR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ29wdGlvbnNfdGFiJ10gPSAnT3B0aW9ucyBkdSBjYXRhbG9ndWUnOwokbGFuZ1snbmFtZWltYWdlcyddID0gJ0ltYWdlcyZuYnNwOyc7CiRsYW5nWyduYW1lZmlsZXMnXSA9ICdGaWNoaWVycyc7CiRsYW5nWyduYW1lZmlsZSddID0gJ0ZpY2hpZXInOwokbGFuZ1snZGVsZXRlaW1hZ2UnXSA9ICdTdXBwcmltZXIgbCYjMDM5O2ltYWdlJzsKJGxhbmdbJ2RlbGV0ZWZpbGUnXSA9ICdTdXBwcmltZXIgdW4gZmljaGllcic7CiRsYW5nWydPd25lciddID0gJ1Byb3ByaSZlYWN1dGU7dGFpcmUnOwokbGFuZ1snQ2F0YWxvZ0l0ZW0nXSA9ICdDYXRhbG9ndWUgZCYjMDM5O2FydGljbGVzJzsKJGxhbmdbJ25hbWVwYWdlJ10gPSAnUGFnZSZuYnNwOyc7CiRsYW5nWydQZXJtaXNzaW9ucyddID0gJ1Blcm1pc3Npb25zJm5ic3A7JzsKJGxhbmdbJ1N1YiddID0gJ1NvdXMgLSc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfaXRlbV9zb3J0X29yZGVyMiddID0gJ09yZHJlIGR1IHRyaSBkZXMgYXJ0aWNsZXMnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2l0ZW1zX3Blcl9wYWdlMiddID0gJ0FydGljbGVzIHBhciBwYWdlJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9jYXRlZ29yeV9yZWN1cnNlMiddID0gJ01vbnRyZXIgbGUgY29tcG9ydGVtZW50JzsKJGxhbmdbJ3doaWNoX2F0dHJpYnV0ZXMnXSA9ICdRdWVscyBhdHRyaWJ1dHMgZG9pdmVudCBmaWd1cmVyIGRhbnMgbGUgY2F0YWxvZ3VlJzsKJGxhbmdbJ25hdlRhYiddID0gJ3wmbmJzcDsnOwokbGFuZ1snbmVlZHBlcm1pc3Npb24nXSA9ICdWb3VzIGF2ZXogYmVzb2luIHF1ZSAlcyBzb2l0IGQmZWFjdXRlO2ZpbmkgcG91ciBlZmZlY3R1ZXIgY2V0dGUgYWN0aW9uLic7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdDYXRhbG9ndWUnOwokbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddID0gJ0dlc3Rpb24gZGVzIHBhcmFtJmVncmF2ZTt0cmVzIGR1IGNhdGFsb2d1ZSc7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnJkVjaXJjO3Rlcy12b3VzIHMmdWNpcmM7ciBkZSB2b3Vsb2lyIHN1cHByaW1lciAlcyA/JzsKJGxhbmdbJ3VuaXF1ZWNvZGUnXSA9ICdDb2RlIHVuaXF1ZSc7CiRsYW5nWyd0ZW1wbGF0ZWxpc3QnXSA9ICdTb3VzLWdhYmFyaXRzJzsKJGxhbmdbJ2xpc3R0ZW1wbCddID0gJ0dlc3Rpb24gZGVzIHNvdXMtZ2FiYXJpdHMnOwokbGFuZ1sndGl0bGVfZmllbGRfdHlwZSddID0gJ1R5cGUgZHUgY2hhbXAnOwokbGFuZ1sndGl0bGVfc2VsZWN0X3ZhbHVlcyddID0gJ1ZhbGV1cic7CiRsYW5nWyd0aXRsZV9pdGVtX3RhYiddID0gJ0F0dHJpYnV0cyBkJiMwMzk7YXJ0aWNsZSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV90YWInXSA9ICdBdHRyaWJ1dHMgZGUgY2F0JmVhY3V0ZTtnb3JpZXMnOwokbGFuZ1sndGl0bGVfcHJpbnRhYmxlX3RhYiddID0gJ1BhcmFtJmVncmF2ZTt0cmVzIGR1IGNhdGFsb2d1ZSBpbXByaW1hYmxlJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2VfdGFiJ10gPSAnVGFpbGxlcyBkZXMgaW1hZ2VzIGQmIzAzOTthcnRpY2xlcyc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9pbWFnZV90YWInXSA9ICdQYXJhbSZlZ3JhdmU7dHJlcyBkZXMgcGFnZXMgZGUgY2F0JmVhY3V0ZTtnb3JpZXMnOwokbGFuZ1sndGl0bGVfcGF0aF90YWInXSA9ICdDaGVtaW5zIGQmIzAzOTthY2MmZWdyYXZlO3MnOwokbGFuZ1sndGl0bGVfZGVsZXRlJ10gPSAnU3VwcHJpbWVyID8nOwokbGFuZ1sndGl0bGVfZmlsZV90YWInXSA9ICdBdXRyZXMgcGFyYW0mZWdyYXZlO3RyZXMgZGUgZmljaGllcnMnOwokbGFuZ1sndGl0bGVfaW1hZ2VfdGFiJ10gPSAnQXV0cmVzIHBhcmFtJmVncmF2ZTt0cmVzIGQmIzAzOTtpbWFnZXMnOwokbGFuZ1sndGl0bGVfaXRlbV90ZW1wbGF0ZV92YXJzJ10gPSAnVmFyaWFibGVzIGRlcyBnYWJhcml0cyBkJiMwMzk7YXJ0aWNsZXMnOwokbGFuZ1sndGl0bGVfY2F0X3RlbXBsYXRlX3ZhcnMnXSA9ICdWYXJpYWJsZXMgZGVzIGdhYmFyaXRzIGRlIGNhdCZlYWN1dGU7Z29yaWVzJzsKJGxhbmdbJ3RpdGxlX2NhdGFsb2dfdGVtcGxhdGVfdmFycyddID0gJ1ZhcmlhYmxlcyBkZSBnYWJhcml0IGNhdGFsb2d1ZSc7CiRsYW5nWyd0aXRsZV9jb21wYXJlX3RlbXBsYXRlX3ZhcnMnXSA9ICdWYXJpYWJsZXMgZGUgZ2FiYXJpdCBjb21wYXJhaXNvbic7CiRsYW5nWyd0aXRsZV9mZWF0dXJlX3RlbXBsYXRlX3ZhcnMnXSA9ICdWYXJpYWJsZXMgZHUgZ2FiYXJpdHMgZGVzIG9wdGlvbnMnOwokbGFuZ1sndGl0bGVfc2hvd19vbmx5X2V4aXN0aW5nX2ltYWdlcyddID0gJ04mIzAzOTtpbmNsdXQgcGFzIGxlcyBpbWFnZXMgbWFucXVhbnRlcyc7CiRsYW5nWyd0aXRsZV9zaG93X29ubHlfZXhpc3RpbmdfaW1hZ2VzX2hlbHAnXSA9ICdDZWNpIHZhIHNldWxlbWVudCBtZXR0cmUgbGVzIHImZWFjdXRlO2YmZWFjdXRlO3JlbmNlcyBkZXMgaW1hZ2VzIGRhbnMgZGVzIGxpc3RlcyBzaSBsJiMwMzk7aW1hZ2UgZXhpc3RlLjxiciAvPihOb3JtYWxlbWVudCwgY2VsYSBmb25jdGlvbm5lLCBtYWlzIHNpIHZvdXMgZmFpdGVzIGRlcyBvcCZlYWN1dGU7cmF0aW9ucyBjb21wbGV4ZXMgYXZlYyBsZXMgaW1hZ2VzIG91IGxlcyBhcnJheSBpbmRleCxjZWNpIHBldXQgcG9zZXIgZGVzIHByb2JsJmVncmF2ZTttZXMuKSc7CiRsYW5nWyd0aXRsZV9mbHVzaF9jYXRzJ10gPSAnVmlkZSBsYSBtJmVhY3V0ZTttb2lyZSB0YW1wb24gZGUgbGEgcGFnZSBjYXQmZWFjdXRlO2dvcmllJzsKJGxhbmdbJ3RpdGxlX2ZsdXNoX2NhdHNfaGVscCddID0gJ1NpIHZvdXMgYXZleiB1biBncmFuZCBub21icmUgZCYjMDM5O29iamV0cyBhZmZpY2gmZWFjdXRlO3MgZGFucyB1bmUgY2F0JmVhY3V0ZTtnb3JpZSwgY2VydGFpbmVzIGluc3RhbGxhdGlvbnMgZGUgUEhQIG4mIzAzOTthZmZpY2hlcm9udCBwYXMgbGEgcGFnZSBjb3JyZWN0ZW1lbnQuIENvY2hleiBjZXR0ZSBjYXNlIHBvdXIgciZlYWN1dGU7c291ZHJlIGNlIHByb2JsJmVncmF2ZTttZSAodGVzdGV6IHBvdXIgdiZlYWN1dGU7cmlmaWVyIHF1JiMwMzk7aWwgbiYjMDM5O3kgYWl0IHBhcyBkJiMwMzk7ZWZmZXQgc2Vjb25kYWlyZSkuJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fZmlsZV90eXBlcyddID0gJ1R5cGVzIGRlIGZpY2hpZXJzIGF1dG9yaXMmZWFjdXRlO3MnOwokbGFuZ1sndGl0bGVfaW1hZ2VfdXBsb2FkX3BhdGgnXSA9ICdFbXBsYWNlbWVudCBkZXMgZmljaGllcnMgZCYjMDM5O2ltYWdlcyBjaGFyZyZlYWN1dGU7cyBzdXIgbGUgc2VydmV1cic7CiRsYW5nWyd0aXRsZV9maWxlX3VwbG9hZF9wYXRoJ10gPSAnRW1wbGFjZW1lbnQgZGVzIGF1dHJlcyBmaWNoaWVycyBkJiMwMzk7YXJ0aWNsZXMgY2hhcmcmZWFjdXRlO3Mgc3VyIGxlIHNlcnZldXInOwokbGFuZ1sndGl0bGVfaW1hZ2VfcHJvY19wYXRoJ10gPSAnRW1wbGFjZW1lbnQgZGVzIGltYWdlcyBtb2RpZmkmZWFjdXRlO2VzICh2aWduZXR0ZXMsIGltYWdlcyByJmVhY3V0ZTtkdWl0ZXMsIGV0YyknOwokbGFuZ1sncGF0aF9oZWxwJ10gPSAnVm91cyBwb3V2ZXogcHImZWFjdXRlO2Npc2VyIG8mdWdyYXZlOyBsZSBDYXRhbG9nZXIgZW50cmVwb3NlIGxlcyBmaWNoaWVycy4gQ2VzIGNoZW1pbnMgZCYjMDM5O2FjYyZlZ3JhdmU7cyBzb250IHJlbGF0aWZzIGF1IGNoZW1pbiBkJiMwMzk7YWNjJmVncmF2ZTtzIDxpPnVwbG9hZHNfcGF0aDwvaT4gZCZlYWN1dGU7ZmluaSBkYW5zIGxlIGZpY2hpZXIgY29uZmlnLnBocDxiciAvPlJFTUFSUVVFIDogU2kgdm91cyBtb2RpZmlleiBjZXMgY2hlbWlucyBkJiMwMzk7YWNjJmVncmF2ZTtzIGFwciZlZ3JhdmU7cyBxdWUgZGVzIGZpY2hpZXJzIG91IGRlcyBpbWFnZXMgYWllbnQgJmVhY3V0ZTt0JmVhY3V0ZTsgY2hhcmcmZWFjdXRlO3Mgc3VyIGxlIHNlcnZldXIsIGxlIENhdGFsb2dlciBwZXJkcmEgbGVzIGZpY2hpZXJzIHF1aSBvbnQgZCZlYWN1dGU7aiZhZ3JhdmU7ICZlYWN1dGU7dCZlYWN1dGU7IGNoYXJnJmVhY3V0ZTtzIHN1ciBsZSBzZXJ2ZXVyIChpbHMgc2Vyb250IHRvdWpvdXJzIGwmYWdyYXZlOyBtYWlzIGxlIENhdGFsb2dlciBuZSBsZXMgdmVycmEgcGFzLiBWb3VzIGRldnJleiBkb25jIGxlcyBjaGFyZ2VyIGRlIG5vdXZlYXUgc3VyIGxlIHNlcnZldXIgcG91ciBxdSYjMDM5O2lsIHB1aXNzZSBsZXMgdm9pcikuJzsKJGxhbmdbJ2NhdGFsb2dlciddID0gJ0NhdGFsb2d1ZSc7CiRsYW5nWyd0aXRsZV9hdHRyX29yZGVyX2J5J10gPSAnT3JkcmUnOwokbGFuZ1sndGl0bGVfYXR0cl9hbGlhcyddID0gJ0FsaWFzIGRlIGwmIzAzOTthdHRyaWJ1dCAoY29tcGF0aWJsZSBhdmVjIFNtYXJ0eSknOwokbGFuZ1sndGl0bGVfYXR0cl9sZW5ndGgnXSA9ICdMb25ndWV1cionOwokbGFuZ1sndGl0bGVfYXR0cl9kZWZhdWx0J10gPSAnVmFsZXVyIHBhciBkJmVhY3V0ZTtmYXV0JzsKJGxhbmdbJ3RpdGxlX2F0dHJfbGVuZ3RoX2hlbHAnXSA9ICcqTGEgbG9uZ3VldXIgcyYjMDM5O2FwcGxpcXVlIHVuaXF1ZW1lbnQgYXV4IGNoYW1wcyAmcXVvdDtUZXh0ZSZxdW90OzxiciAvPlBvdXIgbGVzIG1lbnVzIGQmZWFjdXRlO3JvdWxhbnRzLCBsYSB2YWxldXIgZXN0IHVuZSBsaXN0ZSBkJiMwMzk7b3B0aW9ucyBzJmVhY3V0ZTtwYXImZWFjdXRlO2VzIHBhciB1bmUgdmlyZ3VsZTxiciAvPlBvdXIgbGVzIGNhc2UgJmFncmF2ZTsgY29jaGVyLCBsYSB2YWxldXIgZG9pdCBjb250ZW5pciBsYSB2YWxldXIgJmFncmF2ZTsgY29jaGVyLCB1bmUgdmlyZ3VsZSwgZXQgbGEgdmFsZXVyIG5vbi1jb2NoJmVhY3V0ZTtlJzsKJGxhbmdbJ3RleHQnXSA9ICdUZXh0ZSc7CiRsYW5nWydkcm9wZG93biddID0gJ01lbnUgZCZlYWN1dGU7cm91bGFudCc7CiRsYW5nWyd0ZXh0YXJlYSddID0gJ1pvbmUgZGUgdGV4dGUnOwokbGFuZ1snY2hlY2tib3gnXSA9ICdDYXNlICZhZ3JhdmU7IGNvY2hlcic7CiRsYW5nWydpdGVtX3BhZ2UnXSA9ICdQYWdlIEFydGljbGUnOwokbGFuZ1snY2F0ZWdvcnlfcGFnZSddID0gJ1BhZ2UgQ2F0JmVhY3V0ZTtnb3JpZSc7CiRsYW5nWydjYXRhbG9nX3ByaW50YWJsZSddID0gJ0NhdGFsb2d1ZSBpbXByaW1hYmxlJzsKJGxhbmdbJ2NhdGFsb2dfZGF0YXNoZWV0J10gPSAnRmV1aWxsZSBkZSBkb25uJmVhY3V0ZTtlIGR1IGNhdGFsb2d1ZSc7CiRsYW5nWydjYXRhbG9nX3Nob3J0X2xpc3QnXSA9ICdMaXN0ZSBkZXMgb3B0aW9ucyc7CiRsYW5nWydpdGVtX2NvbXBhcmlzb24nXSA9ICdDb21wYXJhaXNvbiBkJiMwMzk7YXJ0aWNsZXMnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2l0ZW1fc29ydF9vcmRlciddID0gJ0QmZWFjdXRlO2ZpbmlyIGwmIzAzOTtvcmRyZSBkZSB0cmkgZGVzIGFydGljbGVzICZhZ3JhdmU7JzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtc19wZXJfcGFnZSddID0gJ0QmZWFjdXRlO2ZpbmlyIGxlIG5vbWJyZSBkJiMwMzk7YXJ0aWNsZXMgcGFyIHBhZ2UgJmFncmF2ZTsnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2NhdGVnb3J5X3JlY3Vyc2UnXSA9ICdEJmVhY3V0ZTtmaW5pciBsJiMwMzk7YWZmaWNoYWdlIGRlcyBjYXQmZWFjdXRlO2dvcmllcyAmYWdyYXZlOyc7CiRsYW5nWyd0aXRsZV9pdGVtX3NvcnRfb3JkZXInXSA9ICdPcmRyZSBkZSB0cmkgZGVzIGFydGljbGVzIHBhciBkJmVhY3V0ZTtmYXV0JzsKJGxhbmdbJ3RpdGxlX3ByaW50YWJsZV9zb3J0X29yZGVyJ10gPSAnT3JkcmUgZGUgdHJpIGR1IGNhdGFsb2d1ZSBpbXByaW1hYmxlJzsKJGxhbmdbJ3RpdGxlX2l0ZW1zX3Blcl9wYWdlJ10gPSAnTm9tYnJlIGQmIzAzOTthcnRpY2xlcyBwYXIgcGFnZSBwYXIgZCZlYWN1dGU7ZmF1dCc7CiRsYW5nWyd0aXRsZV9hdmFpbF9hdHRycyddID0gJ0F0dGlidXRzIGQmIzAzOTthcnRpY2xlcyBkaXNwb25pYmxlcyBwb3VyIGxlIGdhYmFyaXQnOwokbGFuZ1sndGl0bGVfYXZhaWxfaW1hdHRycyddID0gJ0ltYWdlcyBkJiMwMzk7YXJ0aWNsZXMgZGlzcG9uaWJsZXMgcG91ciBsZSBnYWJhcml0JzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV9oZXJvJ10gPSAnVGFpbGxlIGRlIGwmIzAzOTtpbWFnZSBwb3VyIGxhIHBhZ2UgQXJ0aWNsZSAoYXhlIGxvbmcgZW4gcGl4ZWxzKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfdGh1bWJuYWlsJ10gPSAnVGFpbGxlIGRlIGxhIHZpZ25ldHRlIGRlIGwmIzAzOTtpbWFnZSBwb3VyIGxhIHBhZ2UgQXJ0aWNsZSAoYXhlIGxvbmcgZW4gcGl4ZWxzKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfY2F0ZWdvcnknXSA9ICdUYWlsbGUgZGUgbGEgdmlnbmV0dGUgZGUgbCYjMDM5O2ltYWdlIGRlIGwmIzAzOTthcnRpY2xlIHN1ciBsYSBwYWdlIENhdCZlYWN1dGU7Z29yaWUgKGF4ZSBsb25nIGVuIHBpeGVscyknOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX2NhdGFsb2cnXSA9ICdUYWlsbGUgZGUgbGEgdmlnbmV0dGUgZGUgbCYjMDM5O2ltYWdlIGRlIGwmIzAzOTthcnRpY2xlIHN1ciBsYSBwYWdlIENhdGFsb2d1ZSAoYXhlIGxvbmcgZW4gcGl4ZWxzKSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9pbWFnZV9zaXplX2hlcm8nXSA9ICdUYWlsbGUgZGUgbCYjMDM5O2ltYWdlIGRlIGwmIzAzOTthcnRpY2xlIHN1ciBsYSBwYWdlIENhdCZlYWN1dGU7Z29yaWUgKGF4ZSBsb25nIGVuIHBpeGVscyknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV90aHVtYm5haWwnXSA9ICdUYWlsbGUgZGUgbGEgdmlnbmV0dGUgZGUgbCYjMDM5O2ltYWdlIGRlIGwmIzAzOTthcnRpY2xlIHN1ciBsYSBwYWdlIENhdCZlYWN1dGU7Z29yaWUgKGF4ZSBsb25nIGVuIHBpeGVscyknOwokbGFuZ1sndGl0bGVfdGVtcGxhdGUnXSA9ICdHYWJhcml0JzsKJGxhbmdbJ3RpdGxlX3RlbXBsYXRlX3R5cGUnXSA9ICdUeXBlIGRlIGdhYmFyaXQnOwokbGFuZ1sndGl0bGVfdGl0bGUnXSA9ICdUaXRyZSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX2NvdW50J10gPSAnTm9tYnJlIG1heGltYWwgZGUgdnVlcyBwb3VyIGNoYXF1ZSBhcnRpY2xlJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fZmlsZV9jb3VudCddID0gJ05vbWJyZSBtYXhpbXVtIGQmIzAzOTthdXRyZXMgZmljaGllcnMgYXNzb2NpJmVhY3V0ZTtzICZhZ3JhdmU7IGNoYXF1ZSBhcnRpY2xlJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX2NvdW50J10gPSAnTm9tYnJlIG1heGltYWwgZCYjMDM5O2ltYWdlcyBiYW5uaSZlZ3JhdmU7cmVzIHBvdXIgY2hhcXVlIHBhZ2UgZGUgY2F0JmVhY3V0ZTtnb3JpZSc7CiRsYW5nWyd0aXRsZV9pdGVtX2F0dHJpYnV0ZXNfaGVscCddID0gJ0NoYXF1ZSBhdHRyaWJ1dCBlbnRyJmVhY3V0ZTsgaWNpIHNlcmEgbGUgdGl0cmUgZCYjMDM5O3VuIGNoYW1wIHF1ZSB2b3VzIHBvdXZleiB1dGlsaXNlciBwb3VyIGQmZWFjdXRlO2NyaXJlIHVuIGFydGljbGUsIGV0IHNlcmEgYWZmaWNoJmVhY3V0ZTsgYXZlYyBjZXQgYXJ0aWNsZS4gSWwgc2UgcGV1dCBxdWUgdm91cyBheWV6ICZhZ3JhdmU7IG1ldHRyZSAmYWdyYXZlOyBqb3VyIHZvdHJlIGdhYmFyaXQgcG91ciByZWZsJmVhY3V0ZTt0ZXIgY2VzIGF0dHJpYnV0cy4gVmlkZXogdW4gYXR0cmlidXQgZXhpc3RhbnQgcG91ciBsZSBzdXBwcmltZXIsIG91IHImZWFjdXRlOyZlYWN1dGU7Y3JpdmV6IHBhciBkZXNzdXMgcG91ciBsZSByZW1wbGFjZXIuJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2F0dHJpYnV0ZXNfaGVscCddID0gJ0NoYXF1ZSBhdHRyaWJ1dCBlbnRyJmVhY3V0ZTsgaWNpIHNlcmEgbGUgdGl0cmUgZCYjMDM5O3VuIGNoYW1wIHF1ZSB2b3VzIHBvdXZleiB1dGlsaXNlciBwb3VyIGQmZWFjdXRlO2NyaXJlIHVuZSBjYXQmZWFjdXRlO2dvcmllIGQmIzAzOTthcnRpY2xlcywgZXQgc2VyYSBhZmZpY2gmZWFjdXRlOyBzdXIgbGEgcGFnZSBjYXQmZWFjdXRlO2dvcmllLiBJbCBzZSBwZXV0IHF1ZSB2b3VzIGF5ZXogJmFncmF2ZTsgbWV0dHJlICZhZ3JhdmU7IGpvdXIgdm90cmUgZ2FiYXJpdCBwb3VyIHJlZmwmZWFjdXRlO3RlciBjZXMgYXR0cmlidXRzLiBWaWRleiB1biBhdHRyaWJ1dCBleGlzdGFudCBwb3VyIGxlIHN1cHByaW1lciwgb3UgciZlYWN1dGU7JmVhY3V0ZTtjcml2ZXogcGFyIGRlc3N1cyBwb3VyIGxlIHJlbXBsYWNlci4nOwokbGFuZ1sndGl0bGVfY2F0YWxvZ19hdHRyaWJ1dGVzX2hlbHAnXSA9ICdDaGFxdWUgYXR0cmlidXQgZW50ciZlYWN1dGU7IGljaSBzZXJhIGxlIHRpdHJlIGQmIzAzOTt1biBjaGFtcCBxdWUgdm91cyBwb3V2ZXogdXRpbGlzZXIgcG91ciBkJmVhY3V0ZTtjcmlyZSB1biBjYXRhbG9ndWUgZW50aWVyLCBldCBzZXJhIGFmZmljaCZlYWN1dGU7IHN1ciBsZSBjYXRhbG9ndWUuIElsIHNlIHBldXQgcXVlIHZvdXMgYXlleiAmYWdyYXZlOyBtZXR0cmUgJmFncmF2ZTsgam91ciB2b3RyZSBnYWJhcml0IHBvdXIgcmVmbCZlYWN1dGU7dGVyIGNlcyBhdHRyaWJ1dHMuIFZpZGV6IHVuIGF0dHJpYnV0IGV4aXN0YW50IHBvdXIgbGUgc3VwcHJpbWVyLCBvdSByJmVhY3V0ZTsmZWFjdXRlO2NyaXZleiBwYXIgZGVzc3VzIHBvdXIgbGUgcmVtcGxhY2VyLic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9zb3J0J10gPSAnT3JkcmUgZGUgdHJpIGRlIGxhIGxpc3RlIGRlcyBhcnRpY2xlcyBzdXIgbGEgcGFnZSBjYXQmZWFjdXRlO2dvcmllJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2UnXSA9ICdBZmZpY2hhZ2UgcGFyIGQmZWFjdXRlO2ZhdXQgZGUgbGEgY2F0JmVhY3V0ZTtnb3JpZSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2l0ZW1zX2FsbCddID0gJ0luY2x1cyB0b3VzIGxlcyBhcnRpY2xlcyBkZSBjZXR0ZSBjYXQmZWFjdXRlO2dvcmllLCB5IGNvbXByaXMgbGVzIGFydGljbGVzIGRhbnMgbGVzIHNvdXMtY2F0JmVhY3V0ZTtnb3JpZXMnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9pdGVtc19vbmUnXSA9ICdJbmNsdXMgdG91cyBsZXMgYXJ0aWNsZXMgZGUgY2V0dGUgY2F0JmVhY3V0ZTtnb3JpZSwgbWFpcyBwYXMgbGVzIGFydGljbGVzIGRlcyBzb3VzLWNhdCZlYWN1dGU7Z29yaWVzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfY2F0ZWdvcmllc19hbGwnXSA9ICdJbmNsdXMgdG91dGVzIGxlcyBzb3VzLWNhdCZlYWN1dGU7Z29yaWVzIGRhbnMgY2V0dGUgY2F0JmVhY3V0ZTtnb3JpZSwgeSBjb21wcmlzIGxlcyBzb3VzLWNhdCZlYWN1dGU7Z29yaWVzIGRlcyBzb3VzLWNhdCZlYWN1dGU7Z29yaWVzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfY2F0ZWdvcmllc19vbmUnXSA9ICdJbmNsdXMgdG91dGVzIGxlcyBzb3VzLWNhdCZlYWN1dGU7Z29yaWVzIGltbSZlYWN1dGU7ZGlhdGVtZW50IGRhbnMgY2V0dGUgY2F0JmVhY3V0ZTtnb3JpZSwgbWFpcyBwYXMgbGVzIHNvdXMtY2F0JmVhY3V0ZTtnb3JpZXMgZGVzIHNvdXMtY2F0JmVhY3V0ZTtnb3JpZXMnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9taXhlZF9hbGwnXSA9ICdJbmNsdXMgdG91cyBsZXMgYXJ0aWNsZXMgZXQgdG91dGVzIGxlcyBzb3VzLWNhdCZlYWN1dGU7Z29yaWVzIGRhbnMgY2V0dGUgY2F0JmVhY3V0ZTtnb3JpZSwgeSBjb21wcmlzIGxlcyBhcnRpY2xlcyBldCBzb3VzLWNhdCZlYWN1dGU7Z29yaWVzIGRlcyBzb3VzLWNhdCZlYWN1dGU7Z29yaWVzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfbWl4ZWRfb25lJ10gPSAnSW5jbHVzIHRvdXMgbGVzIGFydGljbGVzIGV0IHRvdXRlcyBsZXMgc291cy1jYXQmZWFjdXRlO2dvcmllcyBpbW0mZWFjdXRlO2RpYXRlbWVudCBkYW5zIGNldHRlIGNhdCZlYWN1dGU7Z29yaWUsIG1haXMgcGFzIGxlcyBhcnRpY2xlcyBldCBzb3VzLWNhdCZlYWN1dGU7Z29yaWVzIGRlcyBzb3VzLWNhdCZlYWN1dGU7Z29yaWVzJzsKJGxhbmdbJ3RpdGxlX3Nob3dfbWlzc2luZ19pbWFnZXMnXSA9ICdBZmZpY2hlIHVuZSBpbWFnZSAmcXVvdDtObyBJbWFnZSZxdW90OyBsb3JzcXUmIzAzOTt1bmUgaW1hZ2UgZXN0IG1hbnF1YW50ZSc7CiRsYW5nWyd0aXRsZV9zaG93X21pc3NpbmdfaW1hZ2VzX2xvbmcnXSA9ICdBZmZpY2hlIHVuZSBpbWFnZSAmcXVvdDtObyBJbWFnZSZxdW90OyBzcCZlYWN1dGU7Y2lhbGUgcyYjMDM5O2lsIHkgYSBkZXMgaW1hZ2VzIG1hbnF1YW50ZXMgKHV0aWxlIGxvcnMgZHUgZCZlYWN1dGU7Ym9nYWdlLCBhdXRyZW1lbnQgdW5lIHNpbXBsZSBpbWFnZSB0cmFuc3BhcmVudGUgZGUgMSBwaXhlbCBzZXJhIHV0aWxpcyZlYWN1dGU7ZSkuJzsKJGxhbmdbJ25hdHVyYWxfb3JkZXInXSA9ICdPcmRyZSBkZSBuYXZpZ2F0aW9uJzsKJGxhbmdbJ2FscGhhX29yZGVyJ10gPSAnT3JkcmUgYWxwaGFiJmVhY3V0ZTt0aXF1ZSc7CiRsYW5nWydtYW5hZ2VwcmVmcyddID0gJ0dlc3Rpb24gZGVzIHByJmVhY3V0ZTtmJmVhY3V0ZTtyZW5jZXMnOwokbGFuZ1snbWFuYWdlYXR0cnMnXSA9ICdHZXN0aW9uIGRlcyBhdHRyaWJ1dHMgZCZlYWN1dGU7ZmluaSBwYXIgbCYjMDM5O3V0aWxpc2F0ZXVyJzsKJGxhbmdbJ2dsb2JhbG9wcyddID0gJ09wJmVhY3V0ZTtyYXRpb25zIGdsb2JhbGVzIGR1IGNhdGFsb2d1ZSc7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ0Fqb3V0IGQmIzAzOTt1biBub3V2ZWF1IHNvdXMtZ2FiYXJpdCc7CiRsYW5nWydyZWltcG9ydHRlbXBsYXRlcyddID0gJ1ImZWFjdXRlO2ltcG9ydGF0aW9uIGRlcyBzb3VzLWdhYmFyaXRzIGQmIzAzOTtleGVtcGxlJzsKJGxhbmdbJ3JlaW1wb3J0ZWQnXSA9ICdMZXMgc291cy1nYWJhcml0cyBkJiMwMzk7ZXhlbXBsZSBvbnQgJmVhY3V0ZTt0JmVhY3V0ZTsgaW1wb3J0JmVhY3V0ZTtzLic7CiRsYW5nWyd0ZW1wbGF0ZXVwZGF0ZWQnXSA9ICdHYWJhcml0IGFqb3V0JmVhY3V0ZTsvbWlzICZhZ3JhdmU7IGpvdXIuJzsKJGxhbmdbJ3RlbXBsYXRlZGVsZXRlZCddID0gJ0dhYmFyaXQgc3VwcHJpbSZlYWN1dGU7Lic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdQciZlYWN1dGU7ZiZlYWN1dGU7cmVuY2VzIG1pc2VzICZhZ3JhdmU7IGpvdXInOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTGEgdmVyc2lvbiAlcyBkdSBtb2R1bGUgYSAmZWFjdXRlO3QmZWFjdXRlOyBpbnN0YWxsJmVhY3V0ZTtlLic7CiRsYW5nWyd1cGdyYWRlZCddID0gJ0xlIG1vZHVsZSBhICZlYWN1dGU7dCZlYWN1dGU7IG1pcyAmYWdyYXZlOyBqb3VyICZhZ3JhdmU7IGxhIHZlcnNpb24gJXMuJzsKJGxhbmdbJ2JhZGZpbGUnXSA9ICdMZSB0JmVhY3V0ZTtsJmVhY3V0ZTtjaGFyZ2VtZW50IGludmFsaWRlICZxdW90OyVzJnF1b3Q7IG4mIzAzOTthIHBhcyAmZWFjdXRlO3QmZWFjdXRlOyBlZmZlY3R1JmVhY3V0ZTsuJzsKJGxhbmdbJ2JhZGltYWdlJ10gPSAnUHJvYmwmZWdyYXZlO21lIGxvcnMgZHUgdCZlYWN1dGU7bCZlYWN1dGU7Y2hhcmdlbWVudCBkZSAmcXVvdDslcyZxdW90OyAodiZlYWN1dGU7cmlmaWV6IGxhIHRhaWxsZSBldC9vdSBsZXMgZHJvaXRzIGQmIzAzOTthY2MmZWdyYXZlO3MgYXUgc2VydmV1ciknOwokbGFuZ1snYmFkaW1hZ2Vmb3JtYXQnXSA9ICcmcXVvdDslcyZxdW90OyBuJiMwMzk7ZXN0IHBhcyB2YWxpZGUuIFNldWxzIGxlcyBqcGVncyBzb250IHN1cHBvcnQmZWFjdXRlO3MgcG91ciBsJiMwMzk7aW5zdGFudC4nOwokbGFuZ1sndXBsb2FkZWQnXSA9ICdMZSBmaWNoaWVyICZxdW90OyVzJnF1b3Q7IGEgJmVhY3V0ZTt0JmVhY3V0ZTsgdCZlYWN1dGU7bCZlYWN1dGU7Y2hhcmcmZWFjdXRlOyBwb3VyIGwmIzAzOTthcnRpY2xlICVzLic7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBkJmVhY3V0ZTtzaW5zdGFsbCZlYWN1dGU7Lic7CiRsYW5nWydhdHRyc3VwZGF0ZWQnXSA9ICdBdHRyaWJ1dHMgbWlzICZhZ3JhdmU7IGpvdXIuJzsKJGxhbmdbJ25vZ2xvYmFsY2hhbmdlJ10gPSAnTmUgY2hhbmdlIHBhcy4nOwokbGFuZ1snZ2xvYmFsbHl1cGRhdGVkJ10gPSAnQ2hhbmdlbWVudHMgcHJvcGFnJmVhY3V0ZTtzIGF1IG5pdmVhdSBnbG9iYWwnOwokbGFuZ1snZWRpdHRlbXBsYXRlJ10gPSAnJkVhY3V0ZTtkaXRlciBsZSBnYWJhcml0JzsKJGxhbmdbJ3N1YnRlbXBsYXRlcyddID0gJ1NvdXMtZ2FiYXJpdHMgZHUgY2F0YWxvZ3VlJzsKJGxhbmdbJ25leHQnXSA9ICc6JnJhcXVvOyc7CiRsYW5nWydwcmV2J10gPSAnJmxhcXVvOzonOwokbGFuZ1snZWRpdCddID0gJyZFYWN1dGU7ZGl0ZXInOwokbGFuZ1snZGVsZXRlJ10gPSAnU3VwcHJpbWVyJzsKJGxhbmdbJ25vdGVtcGxhdGVzJ10gPSAnQXVjdW4gc291cy1nYWJhcml0IGluc3RhbGwmZWFjdXRlOyAhJzsKJGxhbmdbJ2hlbHB0ZXh0J10gPSAnPGgzPlF1ZSBmYWl0IGNlIG1vZHVsZT88L2gzPg0KPHA+Q2UgbW9kdWxlIHZvdXMgcGVybWV0IGRlIGNyJmVhY3V0ZTtlciB1biBjYXRhbG9ndWUgb3UgdW4gcG9ydG9mb2xpby4gTGVzIGNhdGFsb2d1ZXMgc29udCBkZXMgbGlzdGVzIGQmIzAzOTthcnRpY2xlcyBxdWkgcGV1dmVudCAmZWNpcmM7dHJlIGRlcyBwcm9kdWl0cywgZGVzICZvZWxpZzt1dnJlcyBkJiMwMzk7YXJ0LCBvdSBkZXMgbGlzdGVzIHNpbWlsYWlyZXMsIGV0IGxlcyAmcXVvdDtjYXQmZWFjdXRlO2dvcmllcyBkZSBjYXRhbG9ndWUmcXVvdDsgcXVpIHNvbnQgbGVzIGNhdCZlYWN1dGU7Z29yaWVzIGQmIzAzOTthcnRpY2xlcyBvdSBhdXRyZXMgZGl2aXNpb24gbmF0dXJlbGxlcyBkdSBjYXRhbG9ndWUuPC9wPg0KPHA+TGVzIGNhdCZlYWN1dGU7Z29yaWVzIHBldXZlbnQgJmVjaXJjO3RyZSBkJmVhY3V0ZTtmaW5pZSBoaSZlYWN1dGU7cmFyY2hpcXVlbWVudCAodXRpbGlzZSBsYSBsaXN0ZSBkZSBjb250ZW51IHN0YW5kYXJkIGRlIENNUyBNYWRlIFNpbXBsZSkuIExlcyBwYWdlcyBkZSBjYXQmZWFjdXRlO2dvcmllcyBhZmZpY2hlbnQgbGVzIGFydGljbGVzIGRlIGNldHRlIGNhdCZlYWN1dGU7Z29yaWUgZXQvb3UgZGVzIHNvdXMtY2F0JmVhY3V0ZTtnb3JpZXMsIHImZWFjdXRlO2N1cnNpdmVtZW50IHN1ciBvcHRpb24uIENlIGNvbXBvcnRlbWVudCBwZXV0IGF1c3NpICZlY2lyYzt0cmUgY29uZmlndXImZWFjdXRlOyBwYXIgY2F0JmVhY3V0ZTtnb3JpZS48L3A+DQo8cD5VbiBjYXRhbG9ndWUgaW1wcmltYWJsZSBlc3QgZGlzcG9uaWJsZSwgY2UgcXVpIHJlcHImZWFjdXRlO3NlbnRlIHRvdXRlIGxlIGNvbGxlY3Rpb24gZGVzIGFydGljbGVzIGR1IGNhdGFsb2d1ZSBzdXIgdW5lIHBhZ2UgKGNlY2kgZXN0IHBvdXIgbGUgbW9tZW50IG1hbCBpbXBsJmVhY3V0ZTttZW50JmVhY3V0ZTsgZXQgcHJlbmRyYSBkdSB0ZW1wcyBhdSBjaGFyZ2VtZW50KS48L3A+DQo8cD5MZSBtb2R1bGUgaW5jbHVzIGxlIHN1cHBvcnQgcG91ciAmcXVvdDtDb250ZW50IEFsaWFzZXMmcXVvdDsgKHVuIG1vZHVsZSBlc3QgZGlzcG9uaWJsZSAmYWdyYXZlOyBsJiMwMzk7YWRyZXNzZSA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnRhbGlhc2VzLyIgdGFyZ2V0PSJfYmxhbmsiPkNNU01vZHVsZXMuY29tPC9hPiksIGV0IHZvdXMgcGVybWV0IGRlIHBsYWNlciB1biBhcnRpY2xlIGRhbnMgZGVzIGNhdCZlYWN1dGU7Z29yaWVzIG11bHRpcGxlcy48L3A+DQo8aDM+Q29tbWVudCBsJiMwMzk7dXRpbGlzZXI8L2gzPg0KPHA+UXVhbmQgdm91cyBpbnN0YWxsZXogY2UgbW9kdWxlLCBpbCBjciZlYWN1dGU7ZSB0cm9pcyBub3V2ZWF1eCB0eXBlcyBkZSBjb250ZW51Jm5ic3A7OiBDYXRhbG9nIEl0ZW0gKG9iamV0IGNhdGFsb2d1ZSksIENhdGFsb2cgQ2F0ZWdvcnkgKGNhdCZlYWN1dGU7Z29yaWUgZGUgY2F0YWxvZ3VlKSwgZXQgUHJpbnRhYmxlIENhdGFsb2cgIChjYXRhbG9ndWUgaW1wcmltYWJsZSkuIFF1YW5kIHZvdXMgJmVjaXJjO3RlcyBkYW5zIGwmIzAzOTthZG1pbmlzdHJhdGlvbiBkZSB2b3RyZSBjYXQmZWFjdXRlO2dvcmllLCB2b3VzIHBvdXZleiBham91dGVyIGRlcyBhcnRpY2xlcyBldCBkZXMgY2F0JmVhY3V0ZTtnb3JpZXMgZGUgY2F0YWxvZ3VlIGNvbW1lIHZvdXMgbGUgZmVyaWV6IHBvdXIgbiYjMDM5O2ltcG9ydGUgcXVlbGxlIGF1dHJlIHBhZ2UuIFMmZWFjdXRlO2xlY3Rpb25uZXogQ29udGVudSA+IFBhZ2VzID4gQWpvdXQgZCYjMDM5O3VuIG5vdXZlYXUgY29udGVudSwgZXQgcyZlYWN1dGU7bGVjdGlvbm5leiAmcXVvdDtDYXRhbG9nIEl0ZW0mcXVvdDsgb3UgJnF1b3Q7Q2F0YWxvZyBDYXRlZ29yeSZxdW90OyBkYW5zIGxhIGxpc3RlIGQmZWFjdXRlO3JvdWxhbnRlLjwvcD4NCjxoND5BcnRpY2xlcyBkZSBjYXRhbG9ndWU8L2g0Pg0KPHA+QWpvdXRlciB1biBhcnRpY2xlIGRlIGNhdGFsb2d1ZSBlc3QgdHImZWdyYXZlO3Mgc2ltaWxhaXJlICZhZ3JhdmU7IGwmIzAzOTtham91dCBkJiMwMzk7dW5lIHBhZ2Ugb3JkaW5haXJlIGRlIHZvdHJlIHNpdGUuIENlcGVuZGFudCwgbGVzIGNoYW1wcyBkJiMwMzk7YWpvdXQgbmUgc29udCBwYXMgZXhhY3RlbWVudCBsZXMgbSZlY2lyYzttZXMuIE5vdGV6IGF1c3NpIHF1ZSBkYW5zIGwmIzAzOTtvbmdsZXQgJnF1b3Q7aW1hZ2VzJnF1b3Q7LCB2b3VzIHBvdXZleiBzJmVhY3V0ZTtsZWN0aW9ubmVyIHBsdXNpZXVycyBpbWFnZXMgcG91ciBsZXMgdCZlYWN1dGU7bCZlYWN1dGU7Y2hhcmdlciBwb3VyIHZvdHJlIGFydGljbGUuIFF1YW5kIHZvdXMgdCZlYWN1dGU7bCZlYWN1dGU7Y2hhcmdleiBkZXMgaW1hZ2VzLCBsZSBzeXN0JmVncmF2ZTttZSB2YSBsZXMgcmVkaW1lbnNpb25uZXIgZGUgZmEmY2NlZGlsO29uIGFwcHJvcHJpJmVhY3V0ZTtlIHBvdXIgbGUgY2F0YWxvZ3VlLCB2YSBjciZlYWN1dGU7ZXIgbGVzIHZpZ25ldHRlcyBwb3VyIGxhIHBhZ2UgZCYjMDM5O2FydGljbGVzLCBjciZlYWN1dGU7ZXIgbGVzIHZpZ25ldHRlcyBwb3VyIGxlcyBwYWdlcyBkZSBjYXQmZWFjdXRlO2dvcmllcywgZXRjLiBDZWNpIHJlcXVpZXJ0IHF1ZSB2b3VzIGF5ZXogR0Qgb3UgdW5lIGxpYnJhaXJpZSBkJiMwMzk7aW1hZ2VzIGluc3RhbGwmZWFjdXRlO2Ugc3VyIHZvdHJlIHNlcnZldXIgaW50ZXJuZXQuIHNldWxlcyBsZXMgaW1hZ2VzIGF1IGZvcm1hdCBqcGVnIHNvbnQgc3VwcG9ydCZlYWN1dGU7ZXMuPC9wPg0KPGg0PkNhdCZlYWN1dGU7Z29yaWVzIGR1IGNhdGFsb2d1ZTwvaDQ+DQo8cD5VbmUgY2F0JmVhY3V0ZTtnb3JpZSBkZSBjYXRhbG9ndWUgZXN0IHV0aWxpcyZlYWN1dGU7ZSBwb3VyIGwmIzAzOTtvcmdhbmlzYXRpb24gZGVzIGFydGljbGVzIGRlIHZvdHJlIGNhdGFsb2d1ZS4gSWwgY29uc2lzdGUgZW4gdW5lIHBhZ2UgcXVpIGxpc3RlIGxlIGNvbnRlbnUgZHUgY2F0YWxvZ3VlLiBVbiBhcnRpY2xlIGRlIGNhdGFsb2d1ZSBlc3QgY29uc2lkJmVhY3V0ZTtyJmVhY3V0ZTsgY29tbWUgZmFpc2FudCBwYXJ0aWUgZCYjMDM5O3VuZSBjYXQmZWFjdXRlO2dvcmllIGRlIGNhdGFsb2d1ZSBldCBzZSB0cm91dmUgc291cyBjZXR0ZSBjYXQmZWFjdXRlO2dvcmllIGRhbnMgbGEgaGkmZWFjdXRlO3JhcmNoaWUgZHUgc2l0ZS4gRGUgbSZlY2lyYzttZSwgbGVzIGNhdCZlYWN1dGU7Z29yaWVzIHBldXZlbnQgJmVjaXJjO3RyZSBpbmNsdXNlcyAmYWdyYXZlOyBkJiMwMzk7YXV0cmVzIGNhdCZlYWN1dGU7Z29yaWVzLjwvcD4NCjxwPkxlcyBjYXQmZWFjdXRlO2dvcmllcyBkZSBjYXRhbG9ndWVzIG9udCBkZXMgcGFyYW0mZWdyYXZlO3RyZXMgcG91ciBkJmVhY3V0ZTtmaW5pciBjb21tZW50IGVsbGVzIGRvaXZlbnQgYWZmaWNoZXIgbGVzIGFydGljbGVzIGV0IHNvdXMtY2F0JmVhY3V0ZTtnb3JpZXMgcXUmIzAzOTtlbGxlcyBjb250aWVubmVudCZuYnNwOzogc2kgdm91cyByZWdhcmRleiBsJiMwMzk7b25nbGV0ICZxdW90O09wdGlvbnMmcXVvdDssIHZvdXMgcG91dmV6IGNob2lzaXIgbGUgbm9tYnJlIGQmIzAzOTthcnRpY2xlcyBldC9vdSBjYXQmZWFjdXRlO2dvcmllcyAmYWdyYXZlOyBhZmZpY2hlciwgZGFucyBxdWVsIG9yZHJlIGxlcyBhZmZpY2hlciwgcyYjMDM5O2lsIGZhdXQgYWZmaWNoZXIgbGVzIGFydGljbGVzIHNldWxzIG91IGxlcyBjYXQmZWFjdXRlO2dvcmllcyBzZXVsZXMsIG91IGxlcyBkZXV4LCBldCBjb21iaWVuIGRlIG5pdmVhdSBkZSBsYSBoaSZlYWN1dGU7cmFyY2hpZSBhZmZpY2hlciBkYW5zIGxhIHBhZ2UgZGUgY2F0JmVhY3V0ZTtnb3JpZS48L3A+DQo8cD5Db25zaWQmZWFjdXRlO3JlciwgcGFyIGV4ZW1wbGUsIGxhIHN0cnVjdHVyZSBzdWl2YW50ZSZuYnNwOzo8L3A+DQo8b2w+DQoJPGxpPjxiPkNoYXBlYXV4IGV0IGNvdXZyZS1jaGVmczwvYj4NCgkJPG9sPg0KCQkJPGxpPjxiPk1vZGU8L2I+DQoJCQkgCTxvbD4NCgkJCSAJCTxsaT5DaGFwZWF1ICZhZ3JhdmU7IHBsdW1lPC9saT48bGk+RmVkb3JhIDwvbGk+PGxpPkNhc3F1ZXR0ZSBkZSBiYXNlLWJhbGw8L2xpPg0KCQkJIAk8L29sPg0KCQkJIDwvbGk+DQoJCSAJPGxpPjxiPkNhc3F1ZXM8L2I+DQoJCSAgICAJPG9sPg0KCQkgICAgCQk8bGk+Q2FzcXVlIGR1cjwvbGk+PGxpPkNhc3F1ZSBkZSBwbG9uZyZlYWN1dGU7ZTwvbGk+DQoJCSAgICAJPC9vbD4NCgkJICAgIDwvbGk+DQoJCTwvb2w+DQoJPC9saT4NCjwvb2w+DQo8cD5EYW5zIGNlIGRpYWdyYW1tZSwgbGVzICZlYWN1dGU7bCZlYWN1dGU7bWVudHMgZW4gZ3JhcyBzb250IGxlcyBjYXQmZWFjdXRlO2dvcmllIGR1IGNhdGFsb2d1ZSwgZXQgY2V1eCBlbiBub24tZ3JhcyBzb250IGxlcyBhcnRpY2xlcy4gU2Vsb24gdm9zIG9wdGlvbnMsIGxhIHBhZ2UgZGUgbGEgY2F0JmVhY3V0ZTtnb3JpZSBDaGFwZWF1eCBldCBjb3V2cmUtY2hlZnMgcGV1dCBhZmZpY2hlciBsZXMgZW50ciZlYWN1dGU7ZXMgZGVzIHBhZ2VzIGRlcyBzb3VzLWNhdCZlYWN1dGU7Z29yaWVzIE1vZGUgZXQgQ2FzcXVlcyBzZXVsZW1lbnQsIG91IGFmZmljaGVyIGxlcyBhcnRpY2xlcyBwb3VyIE1vZGUgZXQgQ2FzcXVlcyBldCB0b3VzIGxlcyBhcnRpY2xlcyBsaXN0JmVhY3V0ZTtzIGVuLWRlc3NvdXMuPC9wPg0KPHA+Vm91cyBwb3V2ZXogb3B0ZXIgcG91ciBsJiMwMzk7YWZmaWNoYWdlIGVuIG9yZHJlICZxdW90O25hdHVyZWwmcXVvdDsgKGwmIzAzOTtvcmRyZSBkYW5zIGxlcXVlbCBsZXMgYXJ0aWNsZXMgYXBwYXJhaXNzZW50IGRhbnMgbGEgaGkmZWFjdXRlO3JhcmNoaWUgZGUgQ01TIE1hZGUgU2ltcGxlKSwgb3UgZGFucyBsJiMwMzk7b3JkcmUgYWxwaGFiJmVhY3V0ZTt0aXF1ZS48L3A+DQo8cD5TaSB2b3VzIGF2ZXogdW4gZ3JhbmQgbm9tYnJlIGQmIzAzOTthcnRpY2xlcyBkYW5zIHVuZSBjYXQmZWFjdXRlO2dvcmllLCB2b3VzIHBvdXZleiBkJmVhY3V0ZTtmaW5pciBsZSBub21icmUgbWF4aW1hbCAmYWdyYXZlOyBhZmZpY2hlciBkYW5zIHVuZSBwYWdlIGRlIGNhdCZlYWN1dGU7Z29yaWUsIGV0IGxhIHBhZ2UgdmEgYXV0b21hdGlxdWVtZW50IGNyJmVhY3V0ZTtlciBsZXMgbGllbnMgZGUgbmF2aWdhdGlvbiAmYWdyYXZlOyB0cmF2ZXJzIGxhIGxpc3RlLjwvcD4NCjxwPlRvdXRlcyBsZXMgcGFnZXMgZGUgY2F0JmVhY3V0ZTtnb3JpZSBwZXV2ZW50IGF2b2lyIGRlcyBwYXJhbSZlZ3JhdmU7dHJlcyBkaWZmJmVhY3V0ZTtyZW50cyBwb3VyIGwmIzAzOTtvcmRyZSBkJiMwMzk7YWZmaWNoYWdlLCBsZXMgbml2ZWF1ICZhZ3JhdmU7IGFmZmljaGVyLCBldCBsZSBub21icmUgZCYjMDM5O29iamV0cy4gVm91cyBwb3V2ZXogZCZlYWN1dGU7ZmluaXIgbGVzIHZhbGV1cnMgcGFyIGQmZWFjdXRlO2ZhdXQgZGFucyBFeHRlbnNpb25zIC0+IENhdGFsb2d1ZSAtPiBHZXN0aW9uIGRlcyBwciZlYWN1dGU7ZiZlYWN1dGU7cmVuY2VzLiBTaSwgJmFncmF2ZTsgdW5lIGRhdGUgdWx0JmVhY3V0ZTtyaWV1cmUsIHZvdXMgZCZlYWN1dGU7c2lyZXogY2hhbmdlciB1biBwYXJhbSZlZ3JhdmU7dHJlIHBvdXIgdG91dGVzIHZvcyBwYWdlcyBkZSBjYXQmZWFjdXRlO2dvcmllcywgdm91cyBwb3V2ZXogYWxsZXIgc291cyBFeHRlbnNpb25zIC0+IENhdGFsb2d1ZSAtPiBPcHRpb25zIGdsb2JhbGVzIGR1IGNhdGFsb2d1ZSwgZXQgZWZmZWN0dWVyIGNlcyBjaGFuZ2VtZW50cy48L3A+DQo8aDQ+SW1hZ2VzPC9oND4NCjxwPkxlIGNhdGFsb2d1ZSB2b3VzIHBlcm1ldCBkZSBzJmVhY3V0ZTtsZWN0aW9ubmVyIGRpZmYmZWFjdXRlO3JlbnRlcyB0YWlsbGVzIGQmIzAzOTtpbWFnZXMgcG91ciBsZXMgYXJ0aWNsZXMsIGxlcyBwYWdlcyBkZSBjYXQmZWFjdXRlO2dvcmllcywgZXQgbGUgY2F0YWxvZ3VlIGltcHJpbWFibGUuIFZvdXMgcG91dmV6IGQmZWFjdXRlO2ZpbmlyIGNlcyBvcHRpb25zIGRhbnMgRXh0ZW5zaW9ucyAtPiBDYXRhbG9ndWUgLT4gR2VzdGlvbiBkZXMgcHImZWFjdXRlO2YmZWFjdXRlO3JlbmNlcy48L3A+DQo8cD5RdWFuZCB2b3VzIHQmZWFjdXRlO2wmZWFjdXRlO2NoYXJnZXogZGVzIGltYWdlcywgbCYjMDM5O29yaWdpbmFsIGVzdCBlbnJlZ2lzdHImZWFjdXRlOy4gUXVhbmQgcXVlbHF1JiMwMzk7dW4gdmlzaXRlIGxhIHBhZ2UsIGxlcyBpbWFnZXMgciZlYWN1dGU7ZHVpdGVzIHNvbnQgYXBwZWwmZWFjdXRlO2VzIGF2ZWMgdW5lIFVSTCBzcCZlYWN1dGU7Y2lhbGUsIHF1aSByZWRpcmlnZXJhIGxlIG5hdmlnYXRldXIgZGUgbCYjMDM5O3V0aWxpc2F0ZXVyIHN1ciB1bmUgaW1hZ2UgcmVkaW1lbnNpb25uJmVhY3V0ZTtlLCBxdWkgc2VyYSBjciZlYWN1dGU7JmVhY3V0ZTtlIHNpIGVsbGUgbiYjMDM5O2V4aXN0ZSBwYXMuIENlY2kgdm91cyBwZXJtZXQgZGUgY2hhbmdlciBsYSB0YWlsbGUgZGVzIGltYWdlcywgc2FucyBhdm9pciBiZXNvaW4gZGUgdCZlYWN1dGU7bCZlYWN1dGU7Y2hhcmdlciAmYWdyYXZlOyBub3V2ZWF1IHRvdXRlcyBsZXMgaW1hZ2VzLCBvdSBkZSBsZXMgcmVkaW1lbnNpb25uZXIgdG91dGVzIGQmIzAzOTt1biBjb3VwLjwvcD4NCjxwPkxlIGNvZGUgZGUgcmVkaW1lbnNpb25uZW1lbnQgcmVxdWllcnQgcXVlIHZvdXMgYXlleiBzb2l0IEltYWdlTWFnaWNrIG91IGxhIGxpYnJhaXJpZSBHRCBpbnN0YWxsJmVhY3V0ZTssIGV0IGNvbmZpZ3VyJmVhY3V0ZTsgZGFucyBsZSBmaWNoaWVyIGNvbmZpZy5waHAgZGUgQ01TIE1hZGUgU2ltcGxlLjwvcD4NCg0KPGgzPkZlYXR1cmUgTGlzdHM8L2gzPg0KPHA+WW91IGNhbiwgYXMgb2YgdmVyc2lvbiAwLjQsIGhhdmUgJnF1b3Q7ZmVhdHVyZSBsaXN0cyZxdW90OyB3aGljaCBhcmUgdGhlIDxpPm48L2k+IG1vc3QtcmVjZW50bHkgYWRkZWQgY2F0YWxvZyBpdGVtcywgb3IgYSBjb2xsZWN0aW9uIG9mIDxpPms8L2k+IHJhbmRvbSBpdGVtcyBmcm9tIHRoZSBjYXRhbG9nLjwvcD4NCjxoND4mcXVvdDtBbGwmcXVvdDsgRmVhdHVyZSBMaXN0PC9oND4NCjxwPlRvIGdldCBhIGxpc3Qgb2YgYWxsIGNhdGFsb2cgaXRlbXMgKG9wdGlvbmFsbHkgdW5kZXIgYSBzcGVjaWZpZWQgcGFydCBvZiB5b3VyIGhpZXJhcmNoeSkgZm9yIHByb2Nlc3NpbmcgdmlhIGEgdGVtcGxhdGUsIHlvdSBjYW4gdXNlDQp0aGUgJnF1b3Q7YWxsJnF1b3Q7IGZlYXR1cmUgbGlzdC48L3A+DQo8cD5UaGUgc3ludGF4IGZvciBhbiAmcXVvdDthbGwmcXVvdDsgbGlzdCBpcyBsaWtlOjwvcD4NCjxwPiZhbXA7IzEyMztjbXNfbW9kdWxlIG1vZHVsZT0mIzAzOTtDYXRhbG9nZXImIzAzOTsgYWN0aW9uPSYjMDM5O2FsbCYjMDM5OyBzdWJfdGVtcGxhdGU9JiMwMzk7bXlfc3ViX3RlbXBsYXRlJiMwMzk7fSwgd2hlcmUgc3ViX3RlbXBsYXRlIGlzIHRoZSB0ZW1wbGF0ZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBsaXN0Lg0KVGhlcmUgaXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyLCBhbGlhcz0mIzAzOTtwYWdlX2FsaWFzJiMwMzk7LCB3aGVyZSBwYWdlX2FsaWFzIGluZGljYXRlcyB0aGUgdG9wIG9mIHRoZSB0cmVlIChlLmcuLCBhIHBsYWNlIGluIHlvdXIgbWVudQ0KaGllcmFyY2h5LCB0eXBpY2FsbHkgYSBjYXRlZ29yeSBwYWdlKSBpbiB3aGljaCB0byBsb29rIGZvciBuZXcgaXRlbXMuIEEgc3BlY2lhbCB2YWx1ZSBmb3IgJnF1b3Q7cGFnZV9hbGlhcyZxdW90OyBpcyAmcXVvdDsvJnF1b3Q7LCB3aGljaCBtZWFucyB0bw0Kc3RhcnQgYXQgdGhlIHJvb3QuPC9wPg0KPHA+VGhpcyBpcyB1c2VmdWwgZm9yIGNhdGFsb2ctd2lkZSBvcGVyYXRpb25zLiBGb3IgZXhhbXBsZSwgdG8gZ2V0IGEgbGlzdCBvZiBhbGwgY2F0ZWdvcmllcyAoYW5kIGRvIHNvbWV0aGluZyB3aXRoIHRoZW0pLA0KeW91IGNvdWxkIHVzZSB0aGUgdGFnICZhbXA7IzEyMztjbXNfbW9kdWxlIG1vZHVsZT0mIzAzOTtDYXRhbG9nZXImIzAzOTsgYWN0aW9uPSYjMDM5O2FsbCYjMDM5OyBzdWJfdGVtcGxhdGU9JiMwMzk7bXlfc3ViX3RlbXBsYXRlJiMwMzk7IGFsaWFzPSYjMDM5Oy8mIzAzOTsgcmVjdXJzZT0mIzAzOTtjYXRlZ29yaWVzX2FsbCYjMDM5O30uIFlvdXIgdGVtcGxhdGUgY291bGQgdGhlbiB0aHJvdw0KdGhvc2UgY2F0ZWdvcmllcyBpbnRvIGEgcHVsbGRvd24gbWVudSB0aGF0IHJlZGlyZWN0ZWQgeW91IHRvIHRoYXQgY2F0ZWdvcnkmIzAzOTtzIHBhZ2UsIGZvciBleGFtcGxlOjwvcD4NCjxwcmU+DQomYW1wO2x0O3NlbGVjdCBuYW1lPSZxdW90O2ZvbyZxdW90OyBvbmNoYW5nZT0mcXVvdDtkb2N1bWVudC5sb2NhdGlvbj10aGlzLm9wdGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4XS52YWx1ZTsmcXVvdDs+DQomYW1wO2x0O29wdGlvbiB2YWx1ZT0mcXVvdDsmcXVvdDs+U2VsZWN0IEEgdGFyZ2V0JmFtcDtsdDsvb3B0aW9uPg0KJmFtcDsjMTIzO2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT10aGlzb25lfQ0KICAgJmFtcDtsdDtvcHRpb24gdmFsdWU9JnF1b3Q7JmFtcDsjMTIzOyR0aGlzb25lLmxpbmt9JnF1b3Q7PiZhbXA7IzEyMzskdGhpc29uZS50aXRsZX0mYW1wO2x0Oy9vcHRpb24+DQomYW1wOyMxMjM7L2ZvcmVhY2h9DQomYW1wO2x0Oy9zZWxlY3Q+DQo8L3ByZT4NCjxwPklmIHlvdSB3YW50ZWQgdGhhdCB0byBvbmx5IHNob3cgY2F0ZWdvcmllcyB0aGF0IHdlcmUgaW4gdGhlIHZlcnkgdG9wIGxldmVsIG9mIHlvdXIgaGVpcmFyY2h5LCB5b3UmIzAzOTtkIHJlcGxhY2UgdGhlIHJlY3Vyc2U9JiMwMzk7Y2F0ZWdvcmllc19hbGwmIzAzOTsgd2l0aA0KcmVjdXJzZT0mIzAzOTtjYXRlZ29yaWVzX29uZSYjMDM5Oy4gT3IgaWYgeW91IHdhbnRlZCBpdCB0byBiZSBhbGwgY2F0YWxvZyBJdGVtcyBpbnN0ZWFkIG9mIGNhdGVnb3JpZXMsIHlvdSBjb3VsZCB1c2UgYSB0YWcgbGlrZToNCiZhbXA7IzEyMztjbXNfbW9kdWxlIG1vZHVsZT0mIzAzOTtDYXRhbG9nZXImIzAzOTsgYWN0aW9uPSYjMDM5O2FsbCYjMDM5OyBzdWJfdGVtcGxhdGU9JiMwMzk7bXlfc3ViX3RlbXBsYXRlJiMwMzk7IGFsaWFzPSYjMDM5Oy8mIzAzOTsgcmVjdXJzZT0mIzAzOTtpdGVtc19hbGwmIzAzOTt9DQo8cD5TaW1pbGFybHksIHlvdSBjb3VsZCBoYXZlIGl0IGxpc3Qgb25seSBjYXRlZ29yaWVzIHVuZGVyIHRoZSBjdXJyZW50IHBhZ2UgKGJ5IG9taXR0aW5nIHRoZSAmcXVvdDthbGlhcz0mIzAzOTsvJiMwMzk7JnF1b3Q7KS4gVGhlIGNvbWJpbmF0aW9ucyBhcmUgYmFzaWNhbGx5IGxpbWl0bGVzcyE8L3A+DQo8cD5BbGwgc3VwcG9ydGVkIHZhbHVlcyBvZiByZWN1cnNlIGluY2x1ZGU6PHVsPg0KPGxpPml0ZW1zX29uZSAtIENhdGFsb2cgaXRlbXMsIG5vIG1vcmUgdGhhbiBvbmUgbGV2ZWwgYmVsb3cgdGhlIGN1cnJlbnQgcGFnZSAob3IgYWxpYXMgcG9pbnQpPC9saT4NCjxsaT5pdGVtc19hbGwgLSBDYXRhbG9nIGl0ZW1zLCBhdCBhbnkgbGV2ZWwgYmVsb3cgdGhlIGN1cnJlbnQgcGFnZSAob3IgYWxpYXMgcG9pbnQpPC9saT4NCjxsaT5jYXRlZ29yaWVzX29uZSAtIENhdGVnb3JpZXMsIG5vIG1vcmUgdGhhbiBvbmUgbGV2ZWwgYmVsb3cgdGhlIGN1cnJlbnQgcGFnZSAob3IgYWxpYXMgcG9pbnQpPC9saT4NCjxsaT5jYXRlZ29yaWVzX2FsbCAtIENhdGVnb3JpZXMsIGF0IGFueSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KPGxpPm1peGVkX29uZSAtIENhdGFsb2cgaXRlbXMgYW5kIENhdGVnb3JpZXMsIG5vIG1vcmUgdGhhbiBvbmUgbGV2ZWwgYmVsb3cgdGhlIGN1cnJlbnQgcGFnZSAob3IgYWxpYXMgcG9pbnQpPC9saT4NCjxsaT5taXhlZF9hbGwgLSBDYXRhbG9nIGl0ZW1zIGFuZCBDYXRlZ29yaWVzLCBhdCBhbnkgbGV2ZWwgYmVsb3cgdGhlIGN1cnJlbnQgcGFnZSAob3IgYWxpYXMgcG9pbnQpPC9saT4NCjwvdWw+DQo8L3A+DQo8aDQ+UmVjZW50bHkgQWRkZWQgRmVhdHVyZSBMaXN0PC9oND4NCjxwPlRvIHVzZSBhICZxdW90O21vc3QtcmVjZW50bHkgYWRkZWQmcXVvdDsgbGlzdCB3aWxsIGFsbG93IHlvdSB0byBkaXNwbGF5IHRoZSBtb3N0IHJlY2VudGx5LWFkZGVkIGNhdGFsb2cgaXRlbXMgdW5kZXIgYSBzcGVjaWZpZWQgcGFydCBvZiB5b3VyIGhpZXJhcmNoeS48L3A+DQo8cD5UaGUgc3ludGF4IGZvciBhICZxdW90O21vc3QgcmVjZW50bHkgYWRkZWQmcXVvdDsgbGlzdCBpcyBsaWtlOjwvcD4NCjxwPiZhbXA7IzEyMztjbXNfbW9kdWxlIG1vZHVsZT0mIzAzOTtDYXRhbG9nZXImIzAzOTsgYWN0aW9uPSYjMDM5O3JlY2VudCYjMDM5OyBzdWJfdGVtcGxhdGU9JiMwMzk7bXlfc3ViX3RlbXBsYXRlJiMwMzk7fSwgd2hlcmUgc3ViX3RlbXBsYXRlIGlzIHRoZSB0ZW1wbGF0ZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBsaXN0LiBUaGVyZSBhcmUgdHdvIG9wdGlvbmFsIHBhcmFtZXRlcnMsIGNvdW50PSYjMDM5OzMmIzAzOTsgYWxpYXM9JiMwMzk7cGFnZV9hbGlhcyYjMDM5Oywgd2hlcmUgY291bnQgaXMgdGhlIG51bWJlciBvZiBpdGVtcyB0byBpbmNsdWRlLCBhbmQgcGFnZV9hbGlhcyBpbmRpY2F0ZXMgdGhlIHRvcCBvZiB0aGUgdHJlZSAoZS5nLiwgYSBwbGFjZSBpbiB5b3VyIG1lbnUgaGllcmFyY2h5LCB0eXBpY2FsbHkgYSBjYXRlZ29yeSBwYWdlKSBpbiB3aGljaCB0byBsb29rIGZvciBuZXcgaXRlbXMuIEEgc3BlY2lhbCB2YWx1ZSBmb3IgJnF1b3Q7cGFnZV9hbGlhcyZxdW90OyBpcyAmcXVvdDsvJnF1b3Q7LCB3aGljaCBtZWFucyB0byB1c2UgPGk+YWxsPC9pPiBwYWdlcyBpbiB0aGUgc2l0ZS48L3A+DQo8aDQ+UmFuZG9tIEl0ZW1zIEZlYXR1cmUgTGlzdDwvaDQ+DQo8cD5UaGUgc3ludGF4IGZvciBhICZxdW90O3JhbmRvbSZxdW90OyBsaXN0IGlzIGxpa2U6PC9wPg0KPHA+JmFtcDsjMTIzO2Ntc19tb2R1bGUgbW9kdWxlPSYjMDM5O0NhdGFsb2dlciYjMDM5OyBhY3Rpb249JiMwMzk7cmFuZG9tJiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTt9LCB3aGVyZSBzdWJfdGVtcGxhdGUgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGxpc3QuIFRoZXJlIGFyZSB0d28gb3B0aW9uYWwgcGFyYW1ldGVycywgY291bnQ9JiMwMzk7MyYjMDM5OyBhbGlhcz0mIzAzOTtwYWdlX2FsaWFzJiMwMzk7LCB3aGVyZSBjb3VudCBpcyB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRvIGluY2x1ZGUsIGFuZCBwYWdlX2FsaWFzIGluZGljYXRlcyB0aGUgdG9wIG9mIHRoZSB0cmVlIChlLmcuLCBhIHBsYWNlIGluIHlvdXIgbWVudSBoaWVyYXJjaHksIHR5cGljYWxseSBhIGNhdGVnb3J5IHBhZ2UpIGluIHdoaWNoIHRvIGxvb2sgZm9yIG5ldyBpdGVtcy4gQSBzcGVjaWFsIHZhbHVlIGZvciAmcXVvdDtwYWdlX2FsaWFzJnF1b3Q7IGlzICZxdW90Oy8mcXVvdDssIHdoaWNoIG1lYW5zIHRvIHVzZSA8aT5hbGw8L2k+IHBhZ2VzIGluIHRoZSBzaXRlLjwvcD4NCg0KPGg0PlZhcmlhYmxlPC9oND4NCjxwPllvdSBjYW4gZ3JhYiB2YXJpYWJsZXMgKGF0dHJpYnV0ZXMpIG91dHNpZGUgb2YgeW91ciBDYXRhbG9nZXIgdGVtcGxhdGVzLCBzYXkgaW4gYSBnbG9iYWwgY29udGVudCBibG9jaywgdXNpbmcgdGhlIHZhcmlhYmxlIG1ldGhvZC4gVGhlIHN5bnRheCBsb29rcyBsaWtlOjwvcD4NCjxwPiZhbXA7IzEyMztDYXRhbG9nZXIgYWN0aW9uPSYjMDM5O3ZhcmlhYmxlJiMwMzk7IG5hbWU9JiMwMzk7aXRlbW5vdGVzJiMwMzk7IGRlZmF1bHQ9JiMwMzk7bm8gbm90ZXMmIzAzOTt9LCB3aGVyZSBuYW1lIGlzIHRoZSBhdHRyaWJ1dGUgdG8gZGlzcGxheSAodXNpbmcgdGhlIHNhbWUgYWxsIGxvd2VyLWNhc2UsIHB1bmN0dWF0aW9uLWZyZWUgcmVwcmVzZW50YXRpb24gbGlrZSB0aGUgc21hcnR5IHRlbXBsYXRlIHZhcmlhYmxlcyksIGFuZCBkZWZhdWx0IGlzIHRoZSB2YWx1ZSB0byB1c2UgaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgZGVmaW5lZC48L3A+DQoNCjxoND5JdGVtIENvbXBhcmlzb25zPC9oND4NCjxwPkFzIG9mIHZlcnNpb24gMC43LjcsIHRoZXJlIGlzIGEgcHJvZHVjdCBjb21wYXJpc29uIGFjdGlvbjo8L3A+DQo8cD4mYW1wOyMxMjM7Y0NhdGFsb2dlciBhY3Rpb249JiMwMzk7Y29tcGFyZSYjMDM5OyBzdWJfdGVtcGxhdGU9JiMwMzk7bXlfc3ViX3RlbXBsYXRlJiMwMzk7IGl0ZW1zPSYjMDM5O2l0ZW0xLGl0ZW0yLGl0ZW0zJiMwMzk7fSwgd2hlcmUgc3ViX3RlbXBsYXRlIGlzIHRoZSB0ZW1wbGF0ZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBsaXN0LCBhbmQgaXRlbXMgaXMgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBpdGVtIHBhZ2UgYWxpYXNlcyB0byBjb21wYXJlLiBCb2xkZXIgdXNlcnMgbWF5IGFsc28gY2hvb3NlIHRvIHBhc3MgaW4gdGhlIGl0ZW1zIHRvIGNvbXBhcmUgYXMgcmVxdWVzdCB2YXJpYWJsZXMsIHRoZXJlYnkgZW5hYmxpbmcgZHluYW1pYyBjb21wYXJpc29ucyBiYXNlZCBvbiB1c2VyIHNlbGVjdGlvbnMuIERvIHRoaXMgYnkgc2V0dGluZyB0aGUgJnF1b3Q7aXRlbXMmcXVvdDsgdmFyaWFibGUgb24gdGhlIHJlcXVlc3QgcGFzc2VkIHRvIHRoZSBwYWdlIGNvbnRhaW5pbmcgdGhlIENhdGFsb2dlciB0YWcgd2l0aCBhIGNvbXBhcmUgYWN0aW9uLjwvcD4NCjxwPlRoZSBkZWZhdWx0IGl0ZW0gY29tcGFyaXNvbiB0ZW1wbGF0ZSBjb3VsZCB1c2Ugc29tZSBzdHlsaW5nLCBlLmcuLDo8L3A+DQo8cHJlPg0KLml0ZW1fY29tcGFyaXNvbiB0aCB7Zm9udC13ZWlnaHQ6IGJvbGQ7IHBhZGRpbmc6IDVweDsgdGV4dC1hbGlnbjpjZW50ZXI7fQ0KLml0ZW1fY29tcGFyaXNvbiB0ZCB7Ym9yZGVyOiAxcHggc29saWQgZ3JheTsgcGFkZGluZzogM3B4IDVweDt0ZXh0LWFsaWduOnJpZ2h0O30NCjwvcHJlPg0KDQo8aDM+UGVyc29uYWxpc2F0aW9uIGV0IGZvbmN0aW9ucyBhdmFuYyZlYWN1dGU7ZXM8L2gzPg0KPGg0PkF0dHJpYnV0cyBkJiMwMzk7YXJ0aWNsZXMgZHUgY2F0YWxvZ3VlPC9oND4NCjxwPkxlcyBhdHRyaWJ1dHMgcGFyIGQmZWFjdXRlO2ZhdXQgc29udCB0eXBpcXVlbWVudCB1dGlsZXMgcG91ciB1biBjYXRhbG9ndWUgZGUgcHJvZHVpdHMsIG91IGQmIzAzOTtvYmpldHMgZCYjMDM5O2FydCwgbWFpcyBlbiBhbGxhbnQgZGFucyBFeHRlbnNpb25zIC0+IENhdGFsb2d1ZSAtPiBHZXN0aW9uIGRlcyBhdHRyaWJ1dHMgcGVyc29ubmFsaXMmZWFjdXRlO3MsIHZvdXMgcG91dmV6IGNoYW5nZXIgbGVzIGF0dHJpYnV0cy4gSWwgZXN0IG1pZXV4IGRlIGQmZWFjdXRlO2ZpbmlyIGxlcyBhdHRyaWJ1dHMgYXZhbnQgZGUgY29tbWVuY2VyICZhZ3JhdmU7IGVudHJlciBkZXMgYXJ0aWNsZXMgZGFucyBsZSBjYXRhbG9ndWUuPC9wPg0KPHA+Tm90ZXogcXVlIGxlcyBhdHRyaWJ1dHMgcXVlIHZvdXMgZCZlYWN1dGU7ZmluaXNzZXogcGV1dmVudCBkZXZvaXIgJmVjaXJjO3RyZSBham91dCZlYWN1dGU7cyBhdSBnYWJhcml0IHF1ZSBhbGxleiB1dGlsaXNlciBwb3VyIGwmIzAzOTthZmZpY2hhZ2UgZGVzIGFydGljbGVzIGRlIGNhdGFsb2d1ZSAtLSB2b2lyIGdhYmFyaXRzIHBlcnNvbm5hbGlzJmVhY3V0ZTtzIGNpLWRlc3NvdXMuPC9wPg0KPGg0PkF0dHJpYnV0cyBkZXMgY2F0JmVhY3V0ZTtnb3JpZXMgZHUgY2F0YWxvZ3VlPC9oND4NCjxwPkRlIG0mZWNpcmM7bWUsIHZvdXMgcG91dmV6IGQmZWFjdXRlO2ZpbmlyIGxlcyBhdHRyaWJ1dHMgcG91ciBsZXMgY2F0JmVhY3V0ZTtnb3JpZXMuIERlIG5vdXZlYXUsIGxlcyBhdHRyaWJ1dHMgcXVlIHZvdXMgZCZlYWN1dGU7ZmluaXNzZXogcGV1dmVudCBkZXZvaXIgJmVjaXJjO3RyZSBham91dCZlYWN1dGU7cyBhdSBnYWJhcml0IHF1ZSB2b3VzIHV0aWxpc2VyZXogcG91ciBsJiMwMzk7YWZmaWNoYWdlIGRlcyBjYXQmZWFjdXRlO2dvcmllcyAtLSB2b2lyIGxlcyBnYWJhcml0cyBwZXJzb25uYWxpcyZlYWN1dGU7cyBjaS1kZXNzb3VzLjwvcD4NCjxoND5BdHRyaWJ1dHMgZHUgY2F0YWxvZ3VlIGltcHJpbWFibGU8L2g0Pg0KPHA+Vm91cyBwb3V2ZXogJmVhY3V0ZTtnYWxlbWVudCBkJmVhY3V0ZTtmaW5pciBsZXMgYXR0cmlidXRzIHBvdXIgbGUgY2F0YWxvZ3VlIGltcHJpbWFibGUuIERlIG5vdXZlYXUsIGxlcyBhdHRyaWJ1dHMgcXVlIHZvdXMgZCZlYWN1dGU7ZmluaXNzZXogcGV1dmVudCBkZXZvaXIgJmVjaXJjO3RyZSBham91dCZlYWN1dGU7cyBhdSBnYWJhcml0IHF1ZSB2b3VzIHV0aWxpc2VyZXogcG91ciBsJiMwMzk7YWZmaWNoYWdlIGR1IGNhdGFsb2d1ZSBpbXByaW1hYmxlIC0tIHZvaXIgbGVzIGdhYmFyaXRzIHBlcnNvbm5hbGlzJmVhY3V0ZTtzIGNpLWRlc3NvdXMuPC9wPg0KPGg0PkdhYmFyaXRzIHBlcnNvbm5hbGlzJmVhY3V0ZTtzPC9oND4NCjxwPlNpIHZvdXMgZCZlYWN1dGU7c2lyZXogdm91cyBhdHRhcXVlciBhdXggR2FiYXJpdHMgU21hcnR5LCB2b3VzIHBvdXJyZXogY2hhbmdlciBsYSBkaXNwb3NpdGlvbiBkZSBuJiMwMzk7aW1wb3J0ZSBxdWVsbGUgcGFnZSBnJmVhY3V0ZTtuJmVhY3V0ZTtyJmVhY3V0ZTtlIHBhciBsZSBDYXRhbG9ndWUuIENlY2kgZGV2cmFpdCBzYXRpc2ZhaXJlIGNlcnRhaW5zIGQmZWFjdXRlO3ZlbG9wcGV1cnMuIElsIHkgYSA0IHNvcnRlcyBkZSBnYWJhcml0cyZuYnNwOzogdW4gcG91ciBsZXMgYXJ0aWNsZXMsIHVuIHBvdXIgbGVzIGNhdCZlYWN1dGU7Z29yaWVzLHVuIHBvdXIgbGUgY2F0YWxvZ3VlIGltcHJpbWFibGUgZXQgdW4gcG91ciBsYSBsaXN0ZSBkZXMgZm9uY3Rpb25zLCB0ZWxsZSBxdWUgJnF1b3Q7YXJ0aWNsZXMgciZlYWN1dGU7Y2VtbWVudCBham91dCZlYWN1dGU7cywgb3UgZW5jb3JlIGxlcyBzJmVhY3V0ZTtsZWN0aW9ucyBhdSBoYXNhcmQ8L3A+DQo8cD5RdWFuZCB2b3VzICZlYWN1dGU7ZGl0ZXogdW4gZ2FiYXJpdCwgbCYjMDM5OyZlYWN1dGU7Y3JhbiBkJiMwMzk7YWRtaW5pc3RyYXRpb24gdmEgbGlzdGVyIGxlcyBiYWxpc2VzIFNtYXJ0eSBkaXNwb25pYmxlcyBwb3VyIGNlIHR5cGUgZGUgZ2FiYXJpdC4gQ2VsYSBuJiMwMzk7YXJyaXZlcmEgcXUmIzAzOTt1bmUgZm9pcyBxdWUgbGUgbW9kdWxlIHNhaXQgcXVlbCB0eXBlIGRlIGdhYmFyaXQgdm91cyAmZWNpcmM7dGVzIGVudHJhaW4gZCYjMDM5OyZlYWN1dGU7ZGl0ZXIsIGRvbmMgbG9yc3F1ZSB2b3VzIGNyJmVhY3V0ZTtleiBsZSBnYWJhcml0LCBpbCB2YSBsaXN0ZXIgdG91dGVzIGxlcyBiYWxpc2VzIFNtYXJ0eSBxdSYjMDM5O2lsIGNvbm5haXQsIGV0IHNldWxlbWVudCBjZXJ0YWluZXMgZCYjMDM5O2VudHJlIGVsbGVzIHNlcm9udCBhcHBsaWNhYmxlcy48L3A+DQoNCjxoND5EaXNwbGF5aW5nIEF0dHJpYnV0ZXMgb24gSXRlbSBQYWdlczwvaDQ+DQo8cD5BdHRyaWJ1dGVzIGFyZSBhdmFpbGFibGUgdG8gU21hcnR5IGFzIHRvcC1sZXZlbCB2YXJpYWJsZXMuIFRoZXkgYXJlIHN0b3JlZCBhcyBzYW5pdGl6ZWQgdmVyc2lvbnMgb2YgdGhlIGF0dHJpYnV0ZSBuYW1lcywgd2hpY2ggbWVhbnMNCml0IGlzIGNvbnZlcnRlZCB0byBsb3dlciBjYXNlIGFuZCBhbGwgcHVuY3R1YXRpb24gYW5kIG5vbi1VUy1BU0NJSSBjaGFyYWN0ZXJzIGdldCByZW1vdmVkLiBUaGlzIGlzIGJlY2F1c2UgU21hcnR5IGlzIGZpbmlja3ksIGFuZCB3aWxsIG5vdCBoYW5kbGUgdGhlc2UgY2hhcmFjdGVycy48L3A+DQo8cD5TbywgZm9yIGV4YW1wbGUsIGlmIHlvdSBoYXZlIGFuIGF0dHJpYnV0ZSBjYWxsZWQgJnF1b3Q7R2wmdXVtbDtja2xpY2hrZWl0JnF1b3Q7LCB0aGVyZSB3aWxsIGJlIGEgU21hcnR5IHZhcmlhYmxlIHskZ2xja2xpY2hrZWl0fS4gTm90ZSB0aGF0IHRoZSAmcXVvdDsmdXVtbDsmcXVvdDsgaXMgb21pdHRlZC48L3A+DQo8cD5Gb3J0dW5hdGVseSwgdGhpcyBpcyBzaW1wbGlmaWVkIGJ5IHRoZSAkYXR0cmxpc3QgbGlzdCBhdmFpbGFibGUuIFRoaXMgaXMgYSBsaXN0IG9mIGF0dHJpYnV0ZXMgYnkgZm9ybWFsIG5hbWUgKCZxdW90O0dsJnV1bWw7Y2tsaWNoa2VpdCZxdW90OykgYW5kIHRoZWlyIGtleSAoJnF1b3Q7Z2xja2xpY2hrZWl0JnF1b3Q7KS4gRm9yIGV4YW1wbGU6DQo8cHJlPg0KCXtzZWN0aW9uIG5hbWU9YXQgbG9vcD0kYXR0cmxpc3R9DQoJJmFtcDtsdDtkaXYgY2xhc3M9JnF1b3Q7aXRlbV9hdHRyaWJ1dGVfbmFtZSZxdW90Oz57JGF0dHJsaXN0W2F0XS5uYW1lfTomYW1wO2x0Oy9kaXY+JmFtcDtsdDtkaXYgY2xhc3M9JnF1b3Q7aXRlbV9hdHRyaWJ1dGVfdmFsJnF1b3Q7PntldmFsIHZhcj0kYXR0cmxpc3RbYXRdLmtleX0mYW1wO2x0Oy9kaXY+DQoJey9zZWN0aW9ufQ0KPC9wcmU+DQo8cD5BcyBvZiB2ZXJzaW9uIDAuOCwgeW91IGNhbiBhc3NpZ24gYW4gYWxpYXMgdG8gZWFjaCBhdHRyaWJ1dGUuIFRoZXNlIGFsaWFzZXMgbmVlZCB0byBiZSBVUy1BU0NJSSBhbmQgY29udGFpbiBubyBwdW5jdHVhdGlvbi4gVGhleSBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBzYW5pdGl6ZWQgYXR0cmlidXRlIG5hbWUgKGUuZy4sIHlvdSBjb3VsZCB1c2UgdGhlIGFsaWFzICZxdW90O2dsdWVja2xpY2hrZWl0JnF1b3Q7KS48L3A+DQo8aDQ+RGlzcGxheWluZyBBdHRyaWJ1dGVzIG9uIFBhZ2VzIHdpdGggTGlzdHMgb2YgSXRlbXM8L2g0Pg0KPHA+QXR0cmlidXRlcyBhcmUgaW5jbHVkZWQgaW4gdGhlICRpdGVtbGlzdHNbI10gaW4gdHdvIGRpZmZlcmVudCB3YXlzOiB0b3AtbGV2ZWwgYXR0cmlidXRlcyBvZiB0aGUgaXRlbSwgYW5kIGFzIHBhcnQgb2YgdGhlIGl0ZW0mIzAzOTtzICZxdW90O2F0dHImcXVvdDsgYXJyYXkuIFRoZXkgYXJlIHN0b3JlZCBhcyBzYW5pdGl6ZWQgdmVyc2lvbnMgb2YgdGhlIGF0dHJpYnV0ZSBuYW1lcywgd2hpY2ggbWVhbnMNCml0IGlzIGNvbnZlcnRlZCB0byBsb3dlciBjYXNlIGFuZCBhbGwgcHVuY3R1YXRpb24gYW5kIG5vbi1VUy1BU0NJSSBjaGFyYWN0ZXJzIGdldCByZW1vdmVkLiBUaGlzIGlzIGJlY2F1c2UgU21hcnR5IGlzIGZpbmlja3ksIGFuZCB3aWxsIG5vdCBoYW5kbGUgdGhlc2UgY2hhcmFjdGVycy48L3A+DQo8cD5TbywgZm9yIGV4YW1wbGUsIGlmIHlvdSBoYXZlIGFuIGF0dHJpYnV0ZSBjYWxsZWQgJnF1b3Q7R2wmdXVtbDtja2xpY2hrZWl0JnF1b3Q7LCB0aGUgaXRlbSB3aWxsIGhhdmUgJGl0ZW0uZ2xja2xpY2hrZWl0IGFuZCAkaXRlbS5hdHRyc1smIzAzOTtnbGNrbGljaGtlaXQmIzAzOTtdLiBOb3RlIHRoYXQgdGhlICZxdW90OyZ1dW1sOyZxdW90OyBpcyBvbWl0dGVkLiBZb3UgY2FuIHJlZmVyIHRvIHRoaXMgYXR0cmlidXRlIGluIHlvdXIgdGVtcGxhdGUNCndpdGggU21hcnR5IGNvZGUgbGlrZTogeyRpdGVtbGlzdFtpbmRleF0uZ2xja2xpY2trZWl0fSBvciB7JGl0ZW1saXN0W2luZGV4XS5hdHRycy5nbGNrbGljaGtlaXR9LjwvcD4NCjxwPkZvcnR1bmF0ZWx5LCB0aGlzIGlzIHNpbXBsaWZpZWQgYnkgdGhlICRhdHRybGlzdCBsaXN0IGF2YWlsYWJsZS4gVGhpcyBpcyBhIGxpc3Qgb2YgYXR0cmlidXRlcyBieSBmb3JtYWwgbmFtZSAoJnF1b3Q7R2wmdXVtbDtja2xpY2hrZWl0JnF1b3Q7KSBhbmQgdGhlaXIga2V5ICgmcXVvdDtnbGNrbGljaGtlaXQmcXVvdDspLiBGb3IgZXhhbXBsZToNCjxwcmU+DQogICAge2ZvcmVhY2ggZnJvbT0kYXR0cmxpc3QgaXRlbT1hdHRyIGtleT1rfQ0KICAgIHskYXR0cn06IHskaXRlbXNbbnVtbG9vcF1bJGtdfQ0KICAgIHsvZm9yZWFjaH0NCjwvcHJlPg0KPHA+QXMgb2YgdmVyc2lvbiAwLjgsIHlvdSBjYW4gYXNzaWduIGFuIGFsaWFzIHRvIGVhY2ggYXR0cmlidXRlLiBUaGVzZSBhbGlhc2VzIG5lZWQgdG8gYmUgVVMtQVNDSUkgYW5kIGNvbnRhaW4gbm8gcHVuY3R1YXRpb24uIFRoZXkgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgc2FuaXRpemVkIGF0dHJpYnV0ZSBuYW1lIChlLmcuLCB5b3UgY291bGQgdXNlIHRoZSBhbGlhcyAmcXVvdDtnbHVlY2tsaWNoa2VpdCZxdW90OykuPC9wPg0KPGg0PlNtYXJ0eSB0YWdzIGluIEF0dHJpYnV0ZXM8L2g0Pg0KPHA+U29tZXRpbWVzLCB5b3UmIzAzOTtsbCB3YW50IHRoZSBkZXNjcmlwdGlvbnMgb2YgeW91ciBpdGVtcyB0byBpbmNsdWRlIHNtYXJ0eSB0YWdzIChlLmcuLCBjbXNfc2VsZmxpbmspLiBUbyBtYWtlIHRoYXQgd29yaywgeW91JiMwMzk7bGwgbmVlZCB0bw0KdXBkYXRlIHlvdXIgdGVtcGxhdGUuIEZvciB0aGUgYXR0cmlidXRlcyB3aGVyZSB5b3Ugd2FudCBzbWFydHkgdGFncyB0byBiZSBhY3RpdmUsIHlvdSYjMDM5O2xsIG5lZWQgdG8gbmVzdCB0aGUgc21hcnR5IGV2YWx1YXRpb25zIGluIHlvdXIgdGVtcGxhdGUuIEZvciBleGFtcGxlOjwvcD4NCjxwcmU+DQomYW1wOyMxMjM7ZXZhbCB2YXI9JGF0dHJsaXN0W2F0XS5rZXl9DQo8L3ByZT4NCjxwPmJlY29tZXM6PC9wPg0KPHByZT4NCiZhbXA7IzEyMztldmFsIHZhcj0kZW50cnktPmlucHV0IGFzc2lnbj10aGlzQXR0cn0mYW1wOyMxMjM7ZXZhbCB2YXI9JHRoaXNBdHRyfQ0KPC9wcmU+DQo8cD5VZ2x5PyBZdXAuIEJ1dCBpdCB3b3Jrcy48L3A+DQo8aDM+Q2F0YWxvZ2VyIEltYWdlIFN5c3RlbTwvaDM+DQo8cD5DYXRhbG9nZXIgaGFzIGFuIGltYWdlIHN5c3RlbSB0aGF0IHdpbGwgYWxsb3cgeW91IHRvIGR5bmFtaWNhbGx5IGNoYW5nZSB0aGUgaW1hZ2UgZGlzcGxheSBzaXplLiBJZiB5b3UgZG8gbm90IGxpa2UgaXQsIHlvdSBjYW4gYWx0ZXINCnRoZSB0ZW1wbGF0ZXMgYW5kIHVzZSBhbnkgaW1hZ2Ugc3lzdGVtIHlvdSB3YW50LjwvcD4NCjxwPldoZW4geW91IHVwbG9hZCBhbiBpbWFnZSB1c2luZyBDYXRhbG9nZXIsIGl0IGdldHMgcHV0IGluIGEgc3BlY2lhbCBzZXQgb2YgZGlyZWN0b3JpZXMgdG8gbWFrZSB0aGUgaW1hZ2luZyBlYXNpZXIuIFlvdSB3aWxsIHNlZSBtb3JlDQphYm91dCB0aGlzIGxhdGVyLjwvcD4NCjxwPkl0IHdvcmtzIGJ5IGNhbGxpbmcgYSBQSFAgcHJvZ3JhbSBpbnN0ZWFkIG9mIGRpcmVjdGx5IHJlZmVyZW5jaW5nIHRoZSBpbWFnZS4gVGhlIHByb2dyYW0gdXNlcyB0aGUgZmlsZW5hbWUgdG8gc2VlIGlmIHRoZQ0KaW1hZ2UgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGNvcnJlY3Qgc2l6ZS4gSWYgc28sIGl0IHJlZGlyZWN0cyB0byB0aGF0IGltYWdlLiBPdGhlcndpc2UsIGl0IHVzZXMgeW91ciBHRExJQiBvciBJbWFnZU1hZ2ljayB0byBjcmVhdGUNCnRoZSBpbWFnZSBpbiB0aGUgY29ycmVjdCBzaXplLCBhbmQgdGhlbiByZWRpcmVjdHMgdG8gaXQuDQo8L3A+DQo8aDQ+Q2F0YWxvZ2VyIEltYWdlIEZpbGVzcGVjIEV4cGxhbmF0aW9uPC9oND4NCjxwPkEgY2F0YWxvZ2VyIGltYWdlIGhhcyBhIGZpbGVzcGVjIGxpa2U6DQo8YnIgLz4NCnJvb3RfcGF0aC9tb2R1bGVzL0NhdGFsb2dlci9DYXRhbG9nZXIuSW1hZ2UucGhwP2k9aXRlbW5hbWVfZl8xXzQwMF8xLmpwZyZhbXA7YW1wO2FjPTgyODg4DQo8L3A+DQo8cD5UaGUgaW50ZXJlc3RpbmcgdGhpbmcgaXMgJnF1b3Q7aXRlbW5hbWVfZl8xXzQwMF8xLmpwZyZxdW90OyAtIHRoZSBzdHVmZiBiZWZvcmUgaXMganVzdCBhIGNhbGwgdG8gdGhlIHByb2dyYW0sIGFuZCB0aGUgJmFtcDthbXA7YWM9ODI4ODggaXMgYSByYW5kb20gdGhpbmcgdGhhdA0KaXMgZGVzaWduZWQgdG8gcHJldmVudCBicm93c2VyIGNhY2hpbmcuIFNvIGV4YW1pbmluZyB0aGUgbmFtZSBwaWVjZSBieSBwaWVjZSAoc2VwYXJhdGluZyBhdCB0aGUgdW5kZXJzY29yZXMpLCB3ZSBoYXZlOjwvcD4NCjx1bD4NCjxsaT5pdGVtIG5hbWUgLSB0aGlzIGlzIHRoZSBhbGlhcyBvZiB0aGUgaXRlbS9jYXRlZ29yeSBwYWdlIGNvbnRhaW5pbmcgdGhlIGltYWdlLjwvbGk+DQo8bGk+aW1hZ2UgdHlwZSAtIHRoaXMgaXMgYSBkZXNpZ25hdGlvbiBmb3IgaW1hZ2UgdHlwZTo8dWw+DQo8bGk+ZiAtIGl0ZW0gZnVsbC1zaXplIGltYWdlPC9saT4NCjxsaT50IC0gaXRlbSB0aHVtYm5haWw8L2xpPg0KPGxpPmNmIC0gY2F0ZWdvcnkgZnVsbC1zaXplZCBpbWFnZTwvbGk+DQo8bGk+Y3QgLSBjYXRlZ29yeSB0aHVtYm5haWw8L2xpPg0KPGxpPmN0ZiAtIHByaW50YWJsZSBjYXRhbG9nIGZ1bGwtc2l6ZWQgaW1hZ2U8L2xpPg0KPC91bD4NCjwvbGk+DQo8bGk+aW1hZ2UgbnVtYmVyIC0gc28gYSBnaXZlbiBpdGVtL2NhdGFsb2cvZXRjIGNhbiBoYXZlIG11bHRpcGxlIGltYWdlczwvbGk+DQo8bGk+bG9uZyBkaW1lbnNpb24gLSBsb25nIGRpbWVuc2lvbiBvZiB0aGUgaW1hZ2UsIGluIHBpeGVsczwvbGk+DQo8bGk+bWlzc2luZyBmbGFnIC0gMSBpZiB5b3Ugd2FudCB0byBzaG93IGFuICZxdW90O2ltYWdlIG1pc3NpbmcmcXVvdDsgaW1hZ2UgaWYgdGhpcyBpbWFnZSBkb2VzbiYjMDM5O3QgZXhpc3QsIDAgb3RoZXJ3aXNlPC9saT4NCjwvdWw+DQo8cD4NClRoaXMgd2lsbCB0YWtlIGFuIGltYWdlIGluIHJvb3RfcGF0aC91cGxvYWRzL2ltYWdlcy9jYXRhbG9nX3NyYy9pdGVtbmFtZV9zcmNfMQ0KPC9wPg0KDQo8aDM+U3VwcG9ydDwvaDM+DQo8cD5DZSBtb2R1bGUgbmUgY29udGllbnQgYXVjdW4gc3VwcG9ydCBjb21tZXJjaWFsLiBDZXBlbmRhbnQsIGNlcyByZXNzb3VyY2VzIHNvbnQgZGlzcG9uaWJsZXMgcG91ciB2b3VzIGFpZGVyOjwvcD4NCjx1bD4NCjxsaT5Qb3VyIGxhIGRlcm5pJmVncmF2ZTtyZSB2ZXJzaW9uIGRlIGNlIG1vZHVsZSwgbGVzIEZBUXMsIG91IHBvdXIgYW5ub25jZXIgdW4gYnVnLCB2ZXVpbGxleiB2aXNpdGVyIGxhIDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvIiB0YXJnZXQ9Il9ibGFuayI+Zm9yZ2UgZGUgQ01TIE1hZGUgU2ltcGxlPC9hPi48L2xpPg0KPGxpPlBvdXIgYWNoZXRlciBkdSBzdXBwb3J0IGNvbW1lcmNpYWwsIHZldWlsbGV6IHZpc2l0ZXIgDQpsYSBwYWdlIGRlcyBtb2R1bGVzIGRlIFNqRyA8YSBocmVmPSJodHRwOi8vd3d3LmNtc21vZHVsZXMuY29tIiB0YXJnZXQ9Il9ibGFuayI+Q01TTW9kdWxlcy5jb208L2E+LjwvbGk+DQo8bGk+RGVzIGRpc2N1c3Npb25zIGNvbXBsJmVhY3V0ZTttZW50YWlyZXMgcmVsYXRpdmVzICZhZ3JhdmU7IGNlIG1vZHVsZSBwZXV2ZW50IGF1c3NpICZlY2lyYzt0cmUgdHJvdXYmZWFjdXRlO2VzIHN1ciBsZXMgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIiB0YXJnZXQ9Il9ibGFuayI+Rm9ydW1zIENNUyBNYWRlIFNpbXBsZTwvYT4uPC9saT4NCjxsaT5MJiMwMzk7YXV0ZXVyLCBTakcsIGVzdCBzb3V2ZW50IHN1ciBJUkMgc3VyIGNhbmFsICNjbXM6IGlyYy5mcmVlbm9kZS5uZXQvI2NtczwvbGk+DQo8bGk+RXQgZW5maW4sIHZvdXMgcG91dmV6IHJlbmNvbnRyZXIgdW4gY2VydGFpbiBzdWNjJmVncmF2ZTtzIGVuIGVudm95YW50IHVuIGVtYWlsIGRpcmVjdGVtZW50ICZhZ3JhdmU7IGwmIzAzOTthdXRldXIuPC9saT4gIA0KPC91bD4NCjxwPkNvbmZvcm0mZWFjdXRlO21lbnQgJmFncmF2ZTsgbGEgbGljZW5jZSBHUEwsIGNlIG1vZHVsZSBlc3QgZGlzdHJpYnUmZWFjdXRlOyB0ZWwgcXVlbC4gVmV1aWxsZXogdm91cyByJmVhY3V0ZTtmJmVhY3V0ZTtyZXIgZGlyZWN0ZW1lbnQgJmFncmF2ZTsgbGEgbGljZW5jZSBwb3VyIHRvdXQgYXZpcyBkZSBub24gcmVzcG9uc2FiaWxpdCZlYWN1dGU7LjwvcD4NCg0KPGgzPkNvcHlyaWdodCBldCBMaWNlbmNlPC9oMz4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAwNSwgU2FtdWVsIEdvbGRzdGVpbiA8YSBocmVmPSJtYWlsdG86c2pnQGNtc21vZHVsZXMuY29tIj48c2pnQGNtc21vZHVsZXMuY29tPjwvYT4uIFRvdXMgZHJvaXRzIHImZWFjdXRlO3NlcnYmZWFjdXRlO3MuPC9wPg0KPHA+Q2UgbW9kdWxlIGVzdCBkaXN0cmlidSZlYWN1dGU7IHNvdXMgbGEgbGljZW5jZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiIHRhcmdldD0iX2JsYW5rIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBWb3VzIGRldmV6IGFnciZlYWN1dGU7ZXIgYXV4IHRlcm1lcyBkZSBjZXR0ZSBsaWNlbmNlIHBvdXIgcG91dm9pciB1dGlsaXNlciBjZSBtb2R1bGUuPC9wPic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0Fzc3VyZXotdm91cyBkZSBkJmVhY3V0ZTtmaW5pciBsYSBwZXJtaXNzaW9uICZxdW90O01vZGlmeSBDYXRhbG9nIFNldHRpbmdzJnF1b3Q7IHBvdXIgbGVzIHV0aWxpc2F0ZXVycyBxdWkgYWRtaW5pc3RyZXJvbnQgbGUgY2F0YWxvZ3VlLic7CiRsYW5nWydxY2EnXSA9ICdQMC00ODM2ODY4MTQtMTI1MTIyOTYwODM1Mic7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/it_IT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ25hbWVpbWFnZXMnXSA9ICdJbW1hZ2luaSc7CiRsYW5nWydkZWxldGVpbWFnZSddID0gJ0NhbmNlbGxhIEltbWFnaW5pJzsKJGxhbmdbJ093bmVyJ10gPSAnUHJvcHJpZXRhcmlvJzsKJGxhbmdbJ0NhdGFsb2dJdGVtJ10gPSAnSXRlbSBkaSBDYXRhbG9nZXInOwokbGFuZ1snbmFtZXBhZ2UnXSA9ICdQYWdpbmEnOwokbGFuZ1snUGVybWlzc2lvbnMnXSA9ICdQZXJtZXNzaSc7CiRsYW5nWydTdWInXSA9ICdTb3R0byAtJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtX3NvcnRfb3JkZXIyJ10gPSAnT3JkaW5lIHBlciBnbGkgSXRlbSc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfaXRlbXNfcGVyX3BhZ2UyJ10gPSAnSXRlbXMgcGVyIFBhZ2luYSc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfY2F0ZWdvcnlfcmVjdXJzZTInXSA9ICdDb21wb3J0YW1lbnRvIGRpIHZpc3VhbGl6emF6aW9uZSc7CiRsYW5nWyd3aGljaF9hdHRyaWJ1dGVzJ10gPSAnUXVhbGUgYXR0cmlidXRpIGRvdnJlYmJlcm8gZXNzZXJlIG1vc3RyYXRpIGluIGNhdGFsb2cnOwokbGFuZ1snbmF2VGFiJ10gPSAnIHwgJzsKJGxhbmdbJ25lZWRwZXJtaXNzaW9uJ10gPSAnRGV2aSBjb25maWd1cmFyZSAlcyBwZXIgZmFyZSBxdWVzdG8uJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0NhdGFsb2dlcic7CiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnQ29uZmlndXJhemlvbmkgQ2F0YWxvZ28nOwokbGFuZ1snYXJleW91c3VyZSddID0gJ1NlaSBzaWN1cm8gY2hlIHZ1b2kgY2FuY2VsbGFyZSBxdWVzdG8gJXM/JzsKJGxhbmdbJ3VuaXF1ZWNvZGUnXSA9ICdDb2RpY2UgdW5pY28nOwokbGFuZ1sndGVtcGxhdGVsaXN0J10gPSAnU290dG8tTW9kZWxsaSc7CiRsYW5nWydsaXN0dGVtcGwnXSA9ICdHZXN0aW9uZSBTb3R0by1Nb2RlbGxpJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fdGFiJ10gPSAnQXR0cmlidXRpIGFydGljb2xvJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3RhYiddID0gJ0F0dHJpYnV0aSBjYXRlZ29yaWEnOwokbGFuZ1sndGl0bGVfcHJpbnRhYmxlX3RhYiddID0gJ0NvbmZpZ3VyYXppb25pIGNhdGFsb2dvIHN0YW1wYWJpbGUnOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV90YWInXSA9ICdEaW1lbnNpb25pIGltbWFnaW5lIGFydGljb2xvJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX3RhYiddID0gJ0NvbmZpZ3VyYXppb25pIHBhZ2luYSBjYXRlZ29yaWUnOwokbGFuZ1sndGl0bGVfaXNfdGV4dGZpZWxkJ10gPSAnVGV4dCBBcmVhPyc7CiRsYW5nWyd0aXRsZV9kZWxldGUnXSA9ICdDYW5jZWxsYT8nOwokbGFuZ1sndGl0bGVfYXNwZWN0X3RhYiddID0gJ1JhcHBvcnRvIGRlbGxlIGRpbWVuc2lvbmkgaW1tYWdpbmUnOwokbGFuZ1sndGl0bGVfaW1hZ2VfdGFiJ10gPSAnQWx0cmUgY29uZmlndXJhemlvbmkgZGVsbGUgaW1tYWdpbmknOwokbGFuZ1sndGl0bGVfaXRlbV90ZW1wbGF0ZV92YXJzJ10gPSAnVmFyaWFiaWxpIE1vZGVsbG8gYXJ0aWNvbG8nOwokbGFuZ1sndGl0bGVfY2F0X3RlbXBsYXRlX3ZhcnMnXSA9ICdWYXJpYWJpbGkgTW9kZWxsbyBjYXRlZ29yaWEnOwokbGFuZ1sndGl0bGVfZmVhdHVyZV90ZW1wbGF0ZV92YXJzJ10gPSAnVmFyaWFiaWxpIE1vZGVsbG8gZmVhdHVyZSc7CiRsYW5nWyd0aXRsZV9zaG93X29ubHlfZXhpc3RpbmdfaW1hZ2VzJ10gPSAnTm9uIGluY2x1ZGUgaW1tYWdpbmkgdnVvdGUnOwokbGFuZ1sndGl0bGVfc2hvd19vbmx5X2V4aXN0aW5nX2ltYWdlc19oZWxwJ10gPSAnUXVlc3RvIG1ldHRlciZhZ3JhdmU7IHJpZmVyaW1lbnRpIGRpIGltbWFnaW5pIGluIGxpc3RlIHNlIGwmIzAzOTttbWFnaW5lIGVzaXN0ZS48YnIgLz4oTm9ybWFsbWVudGUsIHZhIGJlbmUsIG1hIHNlIHZvbGV0ZSBmYXJlIHF1YWxjb3MmIzAzOTthbHRybyBjb24gZ2xpIGluZGljaTxiciAvPmRpIGFycmF5IGRpIGltbWFnaW5pLCBxdWVzdG8gcHUmb2dyYXZlOyBjb21wb3J0YXJlIHByb2JsZW1pLiknOwokbGFuZ1sndGl0bGVfZmx1c2hfY2F0cyddID0gJ1N2dW90YSBpIGJ1ZmZlciBkZWxsYSBwYWdpbmEgY2F0ZWdvcmlhJzsKJGxhbmdbJ3RpdGxlX2ZsdXNoX2NhdHNfaGVscCddID0gJ1NlIGF2ZXRlIHVuIG51bWVybyBlbGV2YXRvIGRpIGl0ZW0gZGEgdmlzdWFsaXp6YXJlPGJyIC8+aW4gdW5hIGNhdGVnb3JpYSwgYWxjdW5lIGluc3RhbGxhemlvbmUgZGkgUEhQIGZhbGxpc2Nvbm88YnIgLz5kaSB2aXN1YWxpenphcmUgbGEgcGFnaW5hIGNvcnJldHRhbWVudGUuIENoZWNrIHF1ZXN0byBib3ggcGVyIHJpc29sdnJlIGlsIHByb2JsZW1hICh0ZXN0IHBlciBnbGkgZWZmZXR0aSkuJzsKJGxhbmdbJ2NhdGFsb2dlciddID0gJ0NhdGFsb2dlcic7CiRsYW5nWydpdGVtX3BhZ2UnXSA9ICdJdGVtIFBhZ2luYSBhcnRpY29sbyc7CiRsYW5nWydjYXRlZ29yeV9wYWdlJ10gPSAnUGFnaW5hIENhdGVnb3J5JzsKJGxhbmdbJ2NhdGFsb2dfcHJpbnRhYmxlJ10gPSAnQ2F0YWxvZ28gc3RhbXBhYmlsZSc7CiRsYW5nWydjYXRhbG9nX2RhdGFzaGVldCddID0gJ0ZvZ2xpbyBkYXRpJzsKJGxhbmdbJ2NhdGFsb2dfc2hvcnRfbGlzdCddID0gJ0xpc3RhIGZlYXR1cmUnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2l0ZW1fc29ydF9vcmRlciddID0gJ0NvbmZpZ3VyYSBhcnRpY29saSBvcmRpbmF0aSBwZXInOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2l0ZW1zX3Blcl9wYWdlJ10gPSAnQ29uZmlndXJhIG51bWVybyBkaSBhcnRpY29saSBwZXIgcGFnaW5hIGEnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2NhdGVnb3J5X3JlY3Vyc2UnXSA9ICdDb25maWd1cmEgaWwgY29tcG9ydGFtZW50byBkZWxsYSB2aXN1YWxpenphemlvbmUgZGVsbGEgY2F0ZWdvcmlhIGEnOwokbGFuZ1sndGl0bGVfaXRlbV9zb3J0X29yZGVyJ10gPSAnT3JkaW5lIHByZWRlZmluaXRvIGFydGljb2xpJzsKJGxhbmdbJ3RpdGxlX3ByaW50YWJsZV9zb3J0X29yZGVyJ10gPSAnT3JkaW5lIHByZWRlZmluaXRvIHN0YW1wYSBjYXRhbG9nbyc7CiRsYW5nWyd0aXRsZV9pdGVtc19wZXJfcGFnZSddID0gJ051bWVybyBwcmVkZWZpbml0byBkaSBhcnRpY29saSBwZXIgcGFnaW5hJzsKJGxhbmdbJ3RpdGxlX2F2YWlsX2F0dHJzJ10gPSAnQXR0cmlidXRpIGFydGljb2xvIHV0aWxpenphYmlsaSBwZXIgaWwgTW9kZWxsbyc7CiRsYW5nWyd0aXRsZV9hdmFpbF9pbWF0dHJzJ10gPSAnSW1tYWdpbmkgYXJ0aWNvbG8gdXRpbGl6emFiaWxpIHBlciBpbCBNb2RlbGxvJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV9oZXJvJ10gPSAnRGltZW5zaW9uZSBpbW1hZ2luZSBwZXIgbGEgcGFnaW5hIGFydGljb2xvIChhc3NlIGx1bmdvIGluIHBpeGVscyknOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX3RodW1ibmFpbCddID0gJ0RpbWVuc2lvbmUgZGVsbCYjMDM5O2ltbWFnaW5lIG1pbmlhdHVyYSBwZXIgbGEgcGFnaW5hIGFydGljb2xvIChhc3NlIGx1bmdvIGluIHBpeGVscyknOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX2NhdGVnb3J5J10gPSAnRGltZW5zaW9uZSBkZWxsJiMwMzk7aW1tYWdpbmUgbWluaWF0dXJhIHBlciBnbGkgYXJ0aWNvbGkgc3VsbGEgcGFnaW5hIGNhdGVnb3JpYSAoYXNzZSBsdW5nbyBpbiBwaXhlbHMpJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV9jYXRhbG9nJ10gPSAnRGltZW5zaW9uZSBkZWxsJiMwMzk7aW1tYWdpbmUgbWluaWF0dXJhIHBlciBnbGkgYXJ0aWNvbGkgc3VsbGEgcGFnaW5hIGNhdGFsb2dvIChhc3NlIGx1bmdvIGluIHBpeGVscyknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV9oZXJvJ10gPSAnRGltZW5zaW9uZSBpbW1hZ2luZSBwZXIgbGEgcGFnaW5hIGNhdGVnb3JpYSAoYXNzZSBsdW5nbyBpbiBwaXhlbHMpJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX3NpemVfdGh1bWJuYWlsJ10gPSAnRGltZW5zaW9uZSBkZWxsJiMwMzk7aW1tYWdpbmUgbWluaWF0dXJhIHBlciBsYSBwYWdpbmEgY2F0ZWdvcmlhIChhc3NlIGx1bmdvIGluIHBpeGVscyknOwokbGFuZ1sndGl0bGVfdGVtcGxhdGUnXSA9ICdNb2RlbGxvJzsKJGxhbmdbJ3RpdGxlX3RlbXBsYXRlX3R5cGUnXSA9ICdUaXBvIGRpIE1vZGVsbG8nOwokbGFuZ1sndGl0bGVfdGl0bGUnXSA9ICdUaXRvbG8nOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9jb3VudCddID0gJ01hc3NpbW8gbnVtZXJvIGRpIHZpc3RlIHBlciBjaWFzY3VuIGFydGljb2xvJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX2NvdW50J10gPSAnTnVtZXJvIG1hc3NpbW8gZGkgaW1tYWdpbmkgQmFubmVyIHBlciBjaWFzY3VuYSBwYWdpbmEgZGkgY2F0ZWdvcmlhJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fYXR0cmlidXRlc19oZWxwJ10gPSAnQ2lhc2N1biBhdHRyaWJ1dG8gaW5zZXJpdG8gc2FyJmFncmF2ZTsgaWwgdGl0b2xvIGRpIHVuIGNhbXBvIGNoZSBwb3RldGUgdXNhcmUgcGVyIGRlc2NyaXZlcmUgdW4gYXJ0aWNvbG8gaW5kaXZpZHVhbGUgZSBzYXImYWdyYXZlOyB2aXN1YWxpenphdG8gY29uIHF1ZWwgYXJ0aWNvbG8uIERvdmV0ZSBhZ2dpb3JuYXJlIGlsIHZvc3RybyBNb2RlbGxvIHBlciByaWZsZXR0ZXJlIHF1ZXN0aSBhdHRyaWJ1dGkuIExhc2NpYXJlIGluIGJpYW5jbyBvIGluc2VyaXJlIHVuIGF0dHJpYnV0byBlc2lzdGVudGUgcGVyIHJpbXVvdmVyZSBvIHNvc3RpdHVpcmUuJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2F0dHJpYnV0ZXNfaGVscCddID0gJ0NpYXNjdW4gYXR0cmlidXRvIGluc2VyaXRvIHNhciZhZ3JhdmU7IGlsIHRpdG9sbyBkaSB1biBjYW1wbyBjaGUgcG90ZXRlIHVzYXJlIHBlciBkZXNjcml2ZXJlIHVuYSBjYXRlZ29yaWEgZSBzYXImYWdyYXZlOyB2aXN1YWxpenphdG8gbmVsbGEgcGFnaW5hIGNhdGVnb3JpYS4gRG92ZXRlIGFnZ2lvcm5hcmUgaWwgdm9zdHJvIE1vZGVsbG8gcGVyIHJpZmxldHRlcmUgcXVlc3RpIGF0dHJpYnV0aS4gTGFzY2lhcmUgaW4gYmlhbmNvIG8gaW5zZXJpcmUgdW4gYXR0cmlidXRvIGVzaXN0ZW50ZSBwZXIgcmltdW92ZXJlIG8gc29zdGl0dWlyZS4nOwokbGFuZ1sndGl0bGVfY2F0YWxvZ19hdHRyaWJ1dGVzX2hlbHAnXSA9ICdDaWFzY3VuIGF0dHJpYnV0byBpbnNlcml0byBzYXImYWdyYXZlOyBpbCB0aXRvbG8gZGkgdW4gY2FtcG8gY2hlIHBvdGV0ZSB1c2FyZSBwZXIgZGVzY3JpdmVyZSBsJiMwMzk7aW50ZXJvIGNhdGFsb2dvIGUgc2FyJmFncmF2ZTsgdmlzdWFsaXp6YXRvIHN1bGxhIHBhZ2luYSBkZWwgY2F0YWxvZ28gc3RhbXBhdG8uIERvdmV0ZSBhZ2dpb3JuYXJlIGlsIHZvc3RybyBNb2RlbGxvIHBlciByaWZsZXR0ZXJlIHF1ZXN0aSBhdHRyaWJ1dGkuIExhc2NpYXJlIGluIGJpYW5jbyBvIGluc2VyaXJlIHVuIGF0dHJpYnV0byBlc2lzdGVudGUgcGVyIHJpbXVvdmVyZSBvIHNvc3RpdHVpcmUuJzsKJGxhbmdbJ3RpdGxlX2ZvcmNlX2FzcGVjdF9yYXRpbyddID0gJ0ZvcnpvIGxlIGltbWFnaW5pIGFkIHVubyBzcGVjaWZpY28gcmFwcG9ydG8gZGVsbGUgZGltZW5zaW9uaT8nOwokbGFuZ1sndGl0bGVfZm9yY2VfYXNwZWN0X3JhdGlvX2xhYmVsJ10gPSAnRm9yem8gaWwgcmFwcG9ydG8gZGVsbGUgZGltZW5zaW9uaSAobm9uIGFuY29yYSBpbXBsZW1lbnRhdG8pJzsKJGxhbmdbJ3RpdGxlX2ltYWdlX2FzcGVjdF9yYXRpbyddID0gJ1JhcHBvcnRvIGRlbGxlIGRpbWVuc2lvbmkgKHNwZWNpZmljYXJlIGNvbWUgJnF1b3Q7NDozJnF1b3Q7IG8gJnF1b3Q7MToyLjUmcXVvdDspJzsKJGxhbmdbJ3RpdGxlX2FzcGVjdF9yYXRpb19oZWxwJ10gPSAnU2UgZm9yemF0ZSB1bmEgaW1tYWdpbmUgYWQgdW5vIHNwZWNpZmljbyByYXBwb3J0byBkZWxsZSBkaW1lbnNpb25pLCBhbGxvcmEgc2FyJmFncmF2ZTsgc2NhbGF0YSBwZXIgYWRhdHRhcmUgZXNhdHRhbWVudGUgYSBxdWVsIHJhcHBvcnRvIChvIGwmIzAzOTtpbnZlcnNvLCBjb3MmaWdyYXZlOyBkYSBhdmVyZSBlbnRyYW1iaSBpIGZvcm1hdGkgb3JyaXpvbnRhbGUgZSB2ZXJ0Y2FsZSkuIEFsdHJpbWVudGksIGxlIGltbWFnaW5pIHByZXNlcnZlcmFubm8gaWwgbG9ybyByYXBwb3J0byBkZWxsZSBkaW1lbnNpb25pIGUgc2NhbGVyYW5ubyBpbiBtb2RvIGNoZSBsJiMwMzk7YXNzZSBsdW5nbyAmZWdyYXZlOyBsYSBkaW1lbnNpb25lIHNwZWNpZmljYXRhLiA8Yj5Ob24gYW5jb3JhIGltcGxlbWVudGF0byE8L2I+JzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3NvcnQnXSA9ICdPcmRpbmUgZGVsbGEgbGlzdGEgYXJ0aWNvbGkgbmVsbGEgcGFnaW5hIGNhdGVnb3JpYSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlJ10gPSAnQ29tcG9ydGFtZW50byBwcmVkZWZpbml0byBkZWxsYSB2aXN1YWxpenphemlvbmUgZGVsbGEgY2F0ZWdvcmlhJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfaXRlbXNfYWxsJ10gPSAnSW5jbHVkZSB0dXR0aSBnbGkgYXJ0aWNvbGkgZGkgcXVlbGxhIGNhdGVnb3JpYSwgaW5jbHVzbyBnbGkgYXJ0aWNvbGkgbmVsbGUgc290dG8tY2F0ZWdvcmllJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfaXRlbXNfb25lJ10gPSAnSW5jbHVkZSB0dXR0aSBnbGkgYXJ0aWNvbGkgZGkgcXVlbGxhIGNhdGVnb3JpYSwgbWEgbm9uIGdsaSBhcnRpY29saSBuZWxsZSBzb3R0by1jYXRlZ29yaWUnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9jYXRlZ29yaWVzX2FsbCddID0gJ0luY2x1ZGUgdHV0dGUgbGUgY2F0ZWdvcmllIGRpIHF1ZWxsYSBjYXRlZ29yaWEsIGluY2x1c28gbGUgY2F0ZWdvcmllIG5lbGxlIHNvdHRvLWNhdGVnb3JpZSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2NhdGVnb3JpZXNfb25lJ10gPSAnSW5jbHVkZSB0dXR0ZSBsZSBjYXRlZ29yaWUgZGkgcXVlbGxhIGNhdGVnb3JpYSwgbWEgbm9uIGxlIGNhdGVnb3JpZSBuZWxsZSBzb3R0by1jYXRlZ29yaWUnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9taXhlZF9hbGwnXSA9ICdJbmNsdWRlIHR1dHRpIGdsaSBhcnRpY29saSBlIGNhdGVnb3JpZSBkaSBxdWVsbGEgY2F0ZWdvcmlhLCBpbmNsdXNvIGdsaSBhcnRpY29saSBlIGNhdGVnb3JpZSBuZWxsZSBzb3R0by1jYXRlZ29yaWUnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9taXhlZF9vbmUnXSA9ICdJbmNsdWRlIHR1dHRpIGdsaSBhcnRpY29saSBlIGNhdGVnb3JpZSBkaSBxdWVsbGEgY2F0ZWdvcmlhLCBtYSBub24gZ2xpIGFydGljb2xpIGUgY2F0ZWdvcmllIG5lbGxlIHNvdHRvLWNhdGVnb3JpZSc7CiRsYW5nWyd0aXRsZV9zaG93X21pc3NpbmdfaW1hZ2VzJ10gPSAnTW9zdHJhIHVuYSBpbW1hZ2luZSAmcXVvdDtObyBJbWFnZSZxdW90OyBwZXIgaW1tYWdpbmkgbWFuY2FudGknOwokbGFuZ1sndGl0bGVfc2hvd19taXNzaW5nX2ltYWdlc19sb25nJ10gPSAnTW9zdHJhIHVuYSBzcGVjaWFsZSBpbW1hZ2luZSAmcXVvdDtObyBJbWFnZSZxdW90OyBzZSBjaSBzb25vIGltbWFnaW5pIG1hbmNhbnRpIChhbHRyaW1lbnRpIHVzZXImYWdyYXZlOyB1bmEgaW1tYWdpbmUgdHJhc3BhcmVudGUgY29uIHVuIHNpbmdvbG8gcGl4ZWwpLic7CiRsYW5nWyduYXR1cmFsX29yZGVyJ10gPSAnT3JkaW5lIGRpIG5hdmlnYXppb25lJzsKJGxhbmdbJ2FscGhhX29yZGVyJ10gPSAnT3JkaW5lIGFsZmFiZXRpY28nOwokbGFuZ1snbWFuYWdlcHJlZnMnXSA9ICdHZXN0aW9uZSBwcmVmZXJlbnplJzsKJGxhbmdbJ21hbmFnZWF0dHJzJ10gPSAnR2VzdGlvbmUgYXR0cmlidXRpIGRlZmluaXRpIGRhbGwmIzAzOTtVdGVudGUnOwokbGFuZ1snZ2xvYmFsb3BzJ10gPSAnT3BlcmF6aW9uaSBnbG9iYWxpIHN1bCBjYXRhbG9nbyc7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ0FnZ2l1bmdpIHVuIG51b3ZvIFNvdHRvLU1vZGVsbG8nOwokbGFuZ1sncmVpbXBvcnR0ZW1wbGF0ZXMnXSA9ICdSZS1pbXBvcnRhIGkgU290dG8tTW9kZWxsaSBkaSBlc2VtcGlvJzsKJGxhbmdbJ3JlaW1wb3J0ZWQnXSA9ICdJIFNvdHRvLU1vZGVsbGkgZGkgZXNlbXBpbyBzb25vIHN0YXRpIGltcG9ydGF0aS4nOwokbGFuZ1sndGVtcGxhdGV1cGRhdGVkJ10gPSAnTW9kZWxsbyBhZ2dpdW50by9hZ2dpb3JuYXRvLic7CiRsYW5nWyd0ZW1wbGF0ZWRlbGV0ZWQnXSA9ICdNb2RlbGxvIGNhbmNlbGxhdG8uJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ1ByZWZlcmVuemUgYWdnaW9ybmF0ZS4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnVmVyc2lvbmUgZGVsIG1vZHVsbyAlcyBpbnN0YWxsYXRhLic7CiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHVsbyBhZ2dpb3JuYXRvIGFsbGEgdmVyc2lvbmUgJXMuJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWxvIGRpc2luc3RhbGxhdG8uJzsKJGxhbmdbJ2F0dHJzdXBkYXRlZCddID0gJ0F0dHJpYnV0aSBhZ2dpb3JuYXRpLic7CiRsYW5nWydub2dsb2JhbGNoYW5nZSddID0gJ05vbiBjYW1iaWFyZSc7CiRsYW5nWydnbG9iYWxseXVwZGF0ZWQnXSA9ICdJIGNhbWJpYW1lbnRpIHNvbm8gc3RhdGkgcHJvcGFnYXRpIGdsb2JhbG1lbnRlLic7CiRsYW5nWydlZGl0dGVtcGxhdGUnXSA9ICdNb2RpZmljYSBNb2RlbGxvJzsKJGxhbmdbJ3N1YnRlbXBsYXRlcyddID0gJ1NvdHRvLU1vZGVsbGkgcGVyIGNhdGFsb2dvJzsKJGxhbmdbJ25leHQnXSA9ICc6JmFtcDsjMTg3Oyc7CiRsYW5nWydwcmV2J10gPSAnJmFtcDsjMTcxOzonOwokbGFuZ1snZWRpdCddID0gJ01vZGlmaWNhJzsKJGxhbmdbJ2RlbGV0ZSddID0gJ0NhbmNlbGxhemlvbmUnOwokbGFuZ1snbm90ZW1wbGF0ZXMnXSA9ICdOZXNzdW4gU290dG8tTW9kZWxsbyBpbnN0YWxsYXRvISc7CiRsYW5nWydoZWxwdGV4dCddID0gJzxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPg0KPHA+VGhpcyBtb2R1bGUgbGV0cyB5b3UgY3JlYXRlIG9ubGluZSBjYXRhbG9ncyBvciBwb3J0Zm9saW9zLiBDYXRhbG9ncyBjb25zaXN0IG9mICZxdW90O0NhdGFsb2cgSXRlbXMmcXVvdDsgd2hpY2ggY291bGQgYmUgcHJvZHVjdHMsIHdvcmtzIG9mIGFydCwgb3IgdGhlIGxpa2UsIGFuZCAmcXVvdDtDYXRhbG9nIENhdGVnb3JpZXMmcXVvdDsgd2hpY2ggY291bGQgYmUgaXRlbSBjYXRlZ29yaWVzIG9yIG90aGVyIG5hdHVyYWwgZGl2aXNpb25zIG9mIHRoZSBjYXRhbG9nLjwvcD4NCjxwPkNhdGVnb3JpZXMgbWF5IGJlIGRlZmluZWQgaGllcmFyY2hpY2FsbHkgKHVzaW5nIHRoZSBzdGFuZGFyZCBDTVMgTWFkZSBTaW1wbGUgY29udGVudCBsaXN0KS4gQ2F0ZWdvcnkgcGFnZXMgY2FuIGRpc3BsYXkgaXRlbXMgaW4gdGhlIGNhdGVnb3J5IGFuZC9vciBzdWJjYXRlZ29yaWVzLCBvcHRpb25hbGx5IHJlY3Vyc2luZyB0aHJvdWdoIHN1Yi1jYXRlZ29yaWVzLiBUaGlzIGJlaGF2aW9yIGNhbiBiZSBjb25maWd1cmVkIG9uIGEgcGVyLWNhdGVnb3J5IGJhc2lzLjwvUD4NCjxwPlRoZXJlIGlzIGFsc28gYSBQcmludGFibGUgQ2F0YWxvZywgd2hpY2ggcmVwcmVzZW50cyB0aGUgd2hvbGUgY29sbGVjdGlvbiBvZiBDYXRhbG9nIEl0ZW1zIG9uIGEgc2luZ2xlIHBhZ2UgKHRoaXMgaXMgY3VycmVudGx5IGltcGxlbWVudGVkIGJhZGx5LCBhbmQgd2lsbCBsb2FkIHNsb3dseSkuPC9wPg0KPHA+VGhlIG1vZHVsZSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgJnF1b3Q7Q29udGVudCBBbGlhc2VzJnF1b3Q7IChhIG1vZHVsZSBhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jb250ZW50YWxpYXNlcy8iPnRoZSBEZXZlbG9wZXIgRm9yZ2U8L2E+KSwgd2hpY2ggYWxsb3dzIHlvdSB0byBwbGFjZSBhbnkgQ2F0YWxvZyBJdGVtIGludG8gbXVsdGlwbGUgQ2F0YWxvZyBDYXRlZ29yaWVzLjwvcD4NCjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPg0KPHA+V2hlbiB5b3UgaW5zdGFsbCB0aGlzIG1vZHVsZSwgaXQgY3JlYXRlcyB0aHJlZSBuZXcgQ29udGVudCBUeXBlczogQ2F0YWxvZyBJdGVtLCBDYXRhbG9nIENhdGVnb3J5LCBhbmQgUHJpbnRhYmxlIENhdGFsb2cuIFdoZW4geW91JiMwMzk7cmUgaW4geW91ciBzaXRlIGFkbWluaXN0cmF0aW9uIGNhdGVnb3J5LCB5b3UgYWRkIENhdGFsb2cgSXRlbXMgYW5kIENhdGFsb2cgQ2F0ZWdvcmllcyBqdXN0IGFzIHlvdSB3b3VsZCBhbnkgb3RoZXIga2luZCBvZiBwYWdlLiBTZWxlY3QgQ29udGVudCAmYW1wO2d0OyBQYWdlcyAmYW1wO2d0OyBBZGQgQ29udGVudCwgYW5kIHRoZW4gc2VsZWN0ICZxdW90O0NhdGFsb2cgSXRlbSZxdW90OyBvciAmcXVvdDtDYXRhbG9nIENhdGVnb3J5JnF1b3Q7IGZyb20gdGhlIENvbnRlbnQgVHlwZSBwdWxsZG93bi48L3A+DQo8aDQ+Q2F0YWxvZyBJdGVtczwvaDQ+DQo8cD5BZGRpbmcgYSBDYXRhbG9nIEl0ZW0gaXMgc2ltaWxhciB0byBhZGRpbmcgYW4gb3JkaW5hcnkgcGFnZSB0byB5b3VyIHNpdGUuIFRoZSBkYXRhIGZpZWxkcyBmb3IgdGhlIEl0ZW0gYXJlIG5vdCBleGFjdGx5IHRoZSBzYW1lLCBob3dldmVyLiBBbHNvIG5vdGUgdGhhdCBpbiB0aGUgJnF1b3Q7SW1hZ2VzJnF1b3Q7IHRhYiwgeW91IGNhbiBzZWxlY3QgbXVsdGlwbGUgaW1hZ2VzIHRvIHVwbG9hZCBmb3IgdGhlIGl0ZW0uIFdoZW4geW91IHVwbG9hZCBpbWFnZXMsIHRoZSBzeXN0ZW0gd2lsbCBzaXplIHRoZW0gYXBwcm9wcmlhdGVseSBmb3IgdGhlIGNhdGFsb2csIGNyZWF0ZSB0aHVtYm5haWxzIGZvciB1c2UgaW4gdGhlIEl0ZW0mIzAzOTtzIHBhZ2UsIGNyZWF0ZSB0aHVtYm5haWxzIGZvciBhbnkgQ2F0ZWdvcnkgcGFnZXMsIGFuZCBzbyBvbi4gVGhpcyByZXF1aXJlcyB0aGF0IHlvdSBoYXZlIEdEIG9yIGEgc2ltaWxhciBpbWFnZSBsaWJyYXJ5IGluc3RhbGxlZC4gQ3VycmVudGx5LCBvbmx5IGpwZWcgZm9ybWF0IGltYWdlcyBhcmUgc3VwcG9ydGVkLjwvcD4NCjxoND5DYXRhbG9nIENhdGVnb3JpZXM8L2g0Pg0KPHA+QSBDYXRhbG9nIENhdGVnb3J5IGlzIHVzZWQgZm9yIG9yZ2FuaXppbmcgeW91ciBjYXRhbG9nIGl0ZW1zLiBJdCBwcm92aWRlcyBhIHBhZ2UgdGhhdCBsaXN0cyBDYXRhbG9nZXIgY29udGVudCB0aGF0IGlzIGNvbnRhaW5lZCBieSBpdC4gQSBDYXRhbG9nIEl0ZW0gaXMgY29uc2lkZXJlZCB0byBiZSBwYXJ0IG9mIGEgQ2F0YWxvZyBDYXRlZ29yeSBpZiBpdCBpcyBiZWxvdyB0aGF0IENhdGVnb3J5IGluIHRoZSBTaXRlIEhpZXJhcmNoeS4gQ2F0ZWdvcmllcyBjYW4gc2ltaWxhcmx5IGluY2x1ZGUgb3RoZXIgQ2F0ZWdvcmllcy48L3A+DQo8cD5DYXRhbG9nIENhdGVnb3JpZXMgaGF2ZSBhIG51bWJlciBvZiBzZXR0aW5ncyB0byBkZXRlcm1pbmUgaG93IHRoZXkgc2hvdWxkIGRpc3BsYXkgdGhlIEl0ZW1zIGFuZCBDYXRlZ29yaWVzIHRoZXkgY29udGFpbjogaWYgeW91IGxvb2sgYXQgdGhlICZxdW90O09wdGlvbnMmcXVvdDsgdGFiLCB5b3UgY2FuIGNob29zZSBob3cgbWFueSBpdGVtcyBhbmQvb3IgY2F0ZWdvcmllcyB0byBzaG93LCB3aGF0IG9yZGVyIHRvIHNob3cgdGhlbSBpbiwgd2hldGhlciB0byBkaXNwbGF5IG9ubHkgaXRlbXMgb3Igb25seSBjYXRlZ29yaWVzIG9yIGJvdGgsIGFuZCBob3cgbWFueSBsZXZlbHMgb2YgdGhlIGhpZXJhcmNoeSB0byBkaXNwbGF5IGJlbG93IHRoZSBjYXRlZ29yeSBwYWdlLjwvcD4NCjxwPkZvciBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTo8L3A+DQo8b2w+DQoJPGxpPjxiPkhhdHM8L2I+DQoJCTxvbD4NCgkJCTxsaT48Yj5GYXNoaW9uPC9iPg0KCQkJIAk8b2w+DQoJCQkgCQk8bGk+RmVhdGhlcmVkIEhhdDwvbGk+PGxpPkZlZG9yYSA8L2xpPjxsaT5CYXNlYmFsbCBIYXQ8L2xpPg0KCQkJIAk8L29sPg0KCQkJIDwvbGk+DQoJCSAJPGxpPjxiPldvcmsgSGF0czwvYj4NCgkJICAgIAk8b2w+DQoJCSAgICAJCTxsaT5IYXJkIEhhdDwvbGk+PGxpPkRpdmluZyBIZWxtZXQ8L2xpPg0KCQkgICAgCTwvb2w+DQoJCSAgICA8L2xpPg0KCQk8L29sPg0KCTwvbGk+DQo8L29sPg0KPHA+SW4gdGhpcyBkaWFncmFtLCBib2xkZWQgaXRlbXMgYXJlIENhdGFsb2cgQ2F0ZWdvcmllcywgYW5kIG5vbi1ib2xkZWQgaXRlbXMgYXJlIENhdGFsb2cgSXRlbXMuIERlcGVuZGluZyB1cG9uIGhvdyB5b3Ugc2V0IHlvdXIgb3B0aW9ucywgdGhlIEhhdHMgQ2F0ZWdvcnkgUGFnZSBjYW4gc2hvdyBvbmx5IGVudHJpZXMgZm9yIHRoZSBGYXNoaW9uIGFuZCBXb3JrIEhhdHMgQ2F0ZWdvcnkgUGFnZXMsIG9yIGl0IGNhbiBzaG93IGVudHJpZXMgZm9yIEZhc2hpb24sIFdvcmsgSGF0cywgYW5kIGFsbCB0aGUgaGF0cyBsaXN0ZWQgYmVsb3cgdGhlbS48L3A+DQo8cD5Zb3UgY2FuIG9wdCB0byBzaG93IHRoZSBpdGVtcyBpbiAmcXVvdDtuYXR1cmFsJnF1b3Q7IG9yZGVyIChpLmUuLCB0aGUgb3JkZXIgdGhlIEl0ZW1zIHNob3cgdXAgaW4gdGhlIENNUyBDb250ZW50IEhpZXJhcmNoeSksIG9yIGluIGFscGhhYmV0aWNhbCBvcmRlci48L1A+DQo8cD5JZiB5b3UgaGF2ZSBsYXJnZSBudW1iZXJzIG9mIGl0ZW1zIGluIGEgQ2F0ZWdvcnksIHlvdSBjYW4gc2V0IHRoZSBtYXhpbXVtIG51bWJlciB0byBiZSBkaXNwbGF5ZWQgaW4gYSBDYXRlZ29yeSBQYWdlLCBhbmQgdGhlIHBhZ2Ugd2lsbCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBsaW5rcyB0byBuYXZpZ2F0ZSB0aHJvdWdoIHRoZSBsaXN0LjwvcD4NCjxwPkVhY2ggQ2F0ZWdvcnkgcGFnZSBjYW4gaGF2ZSBkaWZmZXJlbnQgc2V0dGluZ3MgZm9yIHNvcnQgb3JkZXIsIGxldmVscyB0byBkaXNwbGF5LCBhbmQgbnVtYmVyIG9mIGl0ZW1zLiBZb3UgY2FuIHNldCB0aGUgZGVmYXVsdCBmb3IgdGhlc2UgdmFsdWVzIGluIEV4dGVuc2lvbnMgPiBDYXRhbG9nZXIgPiBNYW5hZ2UgUHJlZmVyZW5jZXMuIElmLCBhdCBhIGxhdGVyIGRhdGUsIHlvdSB3aXNoIHRvIGNoYW5nZSBzb21lIHNldHRpbmcgb24gYWxsIG9mIHlvdXIgQ2F0ZWdvcnkgcGFnZXMsIHlvdSBjYW4gZ28gaW50byBFeHRlbnNpb25zID4gQ2F0YWxvZ2VyID4gR2xvYmFsIENhdGFsb2cgT3B0aW9ucywgYW5kIG1ha2UgdGhvc2UgY2hhbmdlcy48L3A+DQo8aDQ+SW1hZ2VzPC9oND4NCjxwPkNhdGFsb2dlciBhbGxvd3MgeW91IHRvIHNlbGVjdCBkaWZmZXJlbnQgc2l6ZSBpbWFnZXMgZm9yIEl0ZW0gcGFnZXMsIENhdGVnb3J5IHBhZ2VzLCBhbmQgdGhlIFByaW50YWJsZSBDYXRhbG9nLiBZb3UgY2FuIHNldCB0aGVzZSBkZWZhdWx0cyBpbiBFeHRlbnNpb25zID4gQ2F0YWxvZ2VyID4gTWFuYWdlIFByZWZlcmVuY2VzLjwvcD4NCjxwPldoZW4geW91IHVwbG9hZCBpbWFnZXMsIHRoZSBvcmlnaW5hbCBpcyBzdG9yZWQuIFdoZW4gc29tZW9uZSB2aXNpdHMgYSBwYWdlLCB0aGUgcmVkdWNlZCBzaXplIGltYWdlcyBhcmUgcmVxdWVzdGVkIHVzaW5nIGEgc3BlY2lhbCBVUkwsIHdoaWNoIHdpbGwgcmVkaXJlY3QgdGhlIHVzZXImIzAzOTtzIGJyb3dzZXIgdG8gdGhlIHNjYWxlZCBpbWFnZSBpZiBpdCBleGlzdHMsIGFuZCBjcmVhdGluZyB0aGUgc2NhbGVkIGltYWdlIGlmIGl0IGRvZXNuJiMwMzk7dC4gVGhpcyBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiBpbWFnZXMsIHdpdGhvdXQgaGF2aW5nIHRvIHJlLXVwbG9hZCBhbGwgdGhlIGltYWdlcywgb3IgcmVzY2FsaW5nIHRoZW0gYWxsIGF0IG9uY2UuPC9wPg0KPHA+VGhpcyBpbWFnZSByZXNjYWxpbmcgY29kZSByZXF1aXJlcyB0aGF0IHlvdSBoYXZlIGVpdGhlciBJbWFnZU1hZ2ljayBvciBHRCBsaWIgaW5zdGFsbGVkLCBhbmQgY29uZmlndXJlZCBpbiB5b3VyIENNUyBNYWRlIFNpbXBsZSBjb25maWcucGhwLjwvcD4NCjxoMz5GZWF0dXJlIExpc3RzPC9oMz4NCjxwPllvdSBjYW4sIGFzIG9mIHZlcnNpb24gMC40LCBoYXZlICZxdW90O2ZlYXR1cmUgbGlzdHMmcXVvdDsgd2hpY2ggYXJlIHRoZSA8aT5uPC9pPiBtb3N0LXJlY2VudGx5IGFkZGVkIGNhdGFsb2cgaXRlbXMsIG9yIGEgY29sbGVjdGlvbiBvZiA8aT5rPC9pPiByYW5kb20gaXRlbXMgZnJvbSB0aGUgY2F0YWxvZy48L3A+DQo8aDQ+JnF1b3Q7QWxsJnF1b3Q7IEZlYXR1cmUgTGlzdDwvaDQ+DQo8cD5UbyBnZXQgYSBsaXN0IG9mIGFsbCBjYXRhbG9nIGl0ZW1zIChvcHRpb25hbGx5IHVuZGVyIGEgc3BlY2lmaWVkIHBhcnQgb2YgeW91ciBoaWVyYXJjaHkpIGZvciBwcm9jZXNzaW5nIHZpYSBhIHRlbXBsYXRlLCB5b3UgY2FuIHVzZQ0KdGhlICZxdW90O2FsbCZxdW90OyBmZWF0dXJlIGxpc3QuPC9wPg0KPHA+VGhlIHN5bnRheCBmb3IgYW4gJnF1b3Q7YWxsJnF1b3Q7IGxpc3QgaXMgbGlrZTo8L3A+DQo8cD57Y21zX21vZHVsZSBtb2R1bGU9JiMwMzk7Q2F0YWxvZ2VyJiMwMzk7IGFjdGlvbj0mIzAzOTthbGwmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5O30sIHdoZXJlIHN1Yl90ZW1wbGF0ZSBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgbGlzdC4NClRoZXJlIGlzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciwgYWxpYXM9JiMwMzk7cGFnZV9hbGlhcyYjMDM5Oywgd2hlcmUgcGFnZV9hbGlhcyBpbmRpY2F0ZXMgdGhlIHRvcCBvZiB0aGUgdHJlZSAoZS5nLiwgYSBwbGFjZSBpbiB5b3VyIG1lbnUNCmhpZXJhcmNoeSwgdHlwaWNhbGx5IGEgY2F0ZWdvcnkgcGFnZSkgaW4gd2hpY2ggdG8gbG9vayBmb3IgbmV3IGl0ZW1zLiBBIHNwZWNpYWwgdmFsdWUgZm9yICZxdW90O3BhZ2VfYWxpYXMmcXVvdDsgaXMgJnF1b3Q7LyZxdW90Oywgd2hpY2ggbWVhbnMgdG8NCnN0YXJ0IGF0IHRoZSByb290LjwvcD4NCjxwPlRoaXMgaXMgdXNlZnVsIGZvciBjYXRhbG9nLXdpZGUgb3BlcmF0aW9ucy4gRm9yIGV4YW1wbGUsIHRvIGdldCBhIGxpc3Qgb2YgYWxsIGNhdGVnb3JpZXMgKGFuZCBkbyBzb21ldGhpbmcgd2l0aCB0aGVtKSwNCnlvdSBjb3VsZCB1c2UgdGhlIHRhZyB7Y21zX21vZHVsZSBtb2R1bGU9JiMwMzk7Q2F0YWxvZ2VyJiMwMzk7IGFjdGlvbj0mIzAzOTthbGwmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5OyBhbGlhcz0mIzAzOTsvJiMwMzk7IHJlY3Vyc2U9JiMwMzk7Y2F0ZWdvcmllc19hbGwmIzAzOTt9LiBZb3VyIHRlbXBsYXRlIGNvdWxkIHRoZW4gdGhyb3cNCnRob3NlIGNhdGVnb3JpZXMgaW50byBhIHB1bGxkb3duIG1lbnUgdGhhdCByZWRpcmVjdGVkIHlvdSB0byB0aGF0IGNhdGVnb3J5JiMwMzk7cyBwYWdlLCBmb3IgZXhhbXBsZTo8L3A+DQo8cHJlPg0KPHNlbGVjdCBuYW1lPSZxdW90O2ZvbyZxdW90OyBvbmNoYW5nZT0mcXVvdDtkb2N1bWVudC5sb2NhdGlvbj10aGlzLm9wdGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4XS52YWx1ZTsmcXVvdDs+DQo8b3B0aW9uIHZhbHVlPSZxdW90OyZxdW90Oz5TZWxlY3QgQSB0YXJnZXQ8L29wdGlvbj4NCntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09dGhpc29uZX0NCiAgIDxvcHRpb24gdmFsdWU9JnF1b3Q7eyR0aGlzb25lLmxpbmt9JnF1b3Q7PnskdGhpc29uZS50aXRsZX08L29wdGlvbj4NCnsvZm9yZWFjaH0NCjwvc2VsZWN0Pg0KPC9wcmU+DQo8cD5JZiB5b3Ugd2FudGVkIHRoYXQgdG8gb25seSBzaG93IGNhdGVnb3JpZXMgdGhhdCB3ZXJlIGluIHRoZSB2ZXJ5IHRvcCBsZXZlbCBvZiB5b3VyIGhlaXJhcmNoeSwgeW91JiMwMzk7ZCByZXBsYWNlIHRoZSByZWN1cnNlPSYjMDM5O2NhdGVnb3JpZXNfYWxsJiMwMzk7IHdpdGgNCnJlY3Vyc2U9JiMwMzk7Y2F0ZWdvcmllc19vbmUmIzAzOTsuIE9yIGlmIHlvdSB3YW50ZWQgaXQgdG8gYmUgYWxsIGNhdGFsb2cgSXRlbXMgaW5zdGVhZCBvZiBjYXRlZ29yaWVzLCB5b3UgY291bGQgdXNlIGEgdGFnIGxpa2U6DQp7Y21zX21vZHVsZSBtb2R1bGU9JiMwMzk7Q2F0YWxvZ2VyJiMwMzk7IGFjdGlvbj0mIzAzOTthbGwmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5OyBhbGlhcz0mIzAzOTsvJiMwMzk7IHJlY3Vyc2U9JiMwMzk7aXRlbXNfYWxsJiMwMzk7fQ0KPHA+U2ltaWxhcmx5LCB5b3UgY291bGQgaGF2ZSBpdCBsaXN0IG9ubHkgY2F0ZWdvcmllcyB1bmRlciB0aGUgY3VycmVudCBwYWdlIChieSBvbWl0dGluZyB0aGUgJnF1b3Q7YWxpYXM9JiMwMzk7LyYjMDM5OyZxdW90OykuIFRoZSBjb21iaW5hdGlvbnMgYXJlIGJhc2ljYWxseSBsaW1pdGxlc3MhPC9wPg0KPHA+QWxsIHN1cHBvcnRlZCB2YWx1ZXMgb2YgcmVjdXJzZSBpbmNsdWRlOjx1bD4NCjxsaT5pdGVtc19vbmUgLSBDYXRhbG9nIGl0ZW1zLCBubyBtb3JlIHRoYW4gb25lIGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+aXRlbXNfYWxsIC0gQ2F0YWxvZyBpdGVtcywgYXQgYW55IGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+Y2F0ZWdvcmllc19vbmUgLSBDYXRlZ29yaWVzLCBubyBtb3JlIHRoYW4gb25lIGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+Y2F0ZWdvcmllc19hbGwgLSBDYXRlZ29yaWVzLCBhdCBhbnkgbGV2ZWwgYmVsb3cgdGhlIGN1cnJlbnQgcGFnZSAob3IgYWxpYXMgcG9pbnQpPC9saT4NCjxsaT5taXhlZF9vbmUgLSBDYXRhbG9nIGl0ZW1zIGFuZCBDYXRlZ29yaWVzLCBubyBtb3JlIHRoYW4gb25lIGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+bWl4ZWRfYWxsIC0gQ2F0YWxvZyBpdGVtcyBhbmQgQ2F0ZWdvcmllcywgYXQgYW55IGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8L3VsPg0KPC9wPg0KPGg0PlJlY2VudGx5IEFkZGVkIEZlYXR1cmUgTGlzdDwvaDQ+DQo8cD5UbyB1c2UgYSAmcXVvdDttb3N0LXJlY2VudGx5IGFkZGVkJnF1b3Q7IGxpc3Qgd2lsbCBhbGxvdyB5b3UgdG8gZGlzcGxheSB0aGUgbW9zdCByZWNlbnRseS1hZGRlZCBjYXRhbG9nIGl0ZW1zIHVuZGVyIGEgc3BlY2lmaWVkIHBhcnQgb2YgeW91ciBoaWVyYXJjaHkuPC9wPg0KPHA+VGhlIHN5bnRheCBmb3IgYSAmcXVvdDttb3N0IHJlY2VudGx5IGFkZGVkJnF1b3Q7IGxpc3QgaXMgbGlrZTo8L3A+DQo8cD4mYW1wOyMxMjM7Y21zX21vZHVsZSBtb2R1bGU9JiMwMzk7Q2F0YWxvZ2VyJiMwMzk7IGFjdGlvbj0mIzAzOTtyZWNlbnQmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5O30sIHdoZXJlIHN1Yl90ZW1wbGF0ZSBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgbGlzdC4gVGhlcmUgYXJlIHR3byBvcHRpb25hbCBwYXJhbWV0ZXJzLCBjb3VudD0mIzAzOTszJiMwMzk7IGFsaWFzPSYjMDM5O3BhZ2VfYWxpYXMmIzAzOTssIHdoZXJlIGNvdW50IGlzIHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gaW5jbHVkZSwgYW5kIHBhZ2VfYWxpYXMgaW5kaWNhdGVzIHRoZSB0b3Agb2YgdGhlIHRyZWUgKGUuZy4sIGEgcGxhY2UgaW4geW91ciBtZW51IGhpZXJhcmNoeSwgdHlwaWNhbGx5IGEgY2F0ZWdvcnkgcGFnZSkgaW4gd2hpY2ggdG8gbG9vayBmb3IgbmV3IGl0ZW1zLiBBIHNwZWNpYWwgdmFsdWUgZm9yICZxdW90O3BhZ2VfYWxpYXMmcXVvdDsgaXMgJnF1b3Q7LyZxdW90Oywgd2hpY2ggbWVhbnMgdG8gdXNlIDxpPmFsbDwvaT4gcGFnZXMgaW4gdGhlIHNpdGUuPC9wPg0KPGg0PlJhbmRvbSBJdGVtcyBGZWF0dXJlIExpc3Q8L2g0Pg0KPHA+VGhlIHN5bnRheCBmb3IgYSAmcXVvdDtyYW5kb20mcXVvdDsgbGlzdCBpcyBsaWtlOjwvcD4NCjxwPiZhbXA7IzEyMztjbXNfbW9kdWxlIG1vZHVsZT0mIzAzOTtDYXRhbG9nZXImIzAzOTsgYWN0aW9uPSYjMDM5O3JhbmRvbSYjMDM5OyBzdWJfdGVtcGxhdGU9JiMwMzk7bXlfc3ViX3RlbXBsYXRlJiMwMzk7fSwgd2hlcmUgc3ViX3RlbXBsYXRlIGlzIHRoZSB0ZW1wbGF0ZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBsaXN0LiBUaGVyZSBhcmUgdHdvIG9wdGlvbmFsIHBhcmFtZXRlcnMsIGNvdW50PSYjMDM5OzMmIzAzOTsgYWxpYXM9JiMwMzk7cGFnZV9hbGlhcyYjMDM5Oywgd2hlcmUgY291bnQgaXMgdGhlIG51bWJlciBvZiBpdGVtcyB0byBpbmNsdWRlLCBhbmQgcGFnZV9hbGlhcyBpbmRpY2F0ZXMgdGhlIHRvcCBvZiB0aGUgdHJlZSAoZS5nLiwgYSBwbGFjZSBpbiB5b3VyIG1lbnUgaGllcmFyY2h5LCB0eXBpY2FsbHkgYSBjYXRlZ29yeSBwYWdlKSBpbiB3aGljaCB0byBsb29rIGZvciBuZXcgaXRlbXMuIEEgc3BlY2lhbCB2YWx1ZSBmb3IgJnF1b3Q7cGFnZV9hbGlhcyZxdW90OyBpcyAmcXVvdDsvJnF1b3Q7LCB3aGljaCBtZWFucyB0byB1c2UgPGk+YWxsPC9pPiBwYWdlcyBpbiB0aGUgc2l0ZS48L3A+DQo8aDM+Q3VzdG9taXphdGlvbiBhbmQgQWR2YW5jZWQgVG9waWNzPC9oMz4NCjxoND5DYXRhbG9nIEl0ZW0gQXR0cmlidXRlczwvaDQ+DQo8cD5UaGUgZGVmYXVsdCBpdGVtIGF0dHJpYnV0ZXMgYXJlIHR5cGljYWwgZm9yIGEgY2F0YWxvZyBvZiBwcm9kdWN0cyBvciBhcnR3b3JrcywgYnV0IGJ5IGdvaW5nIGludG8gRXh0ZW5zaW9ucyAmYW1wO2d0OyBDYXRhbG9nZXIgJmFtcDtndDsgTWFuYWdlIFVzZXItRGVmaW5lZCBBdHRyaWJ1dGVzLCB5b3UgY2FuIGNoYW5nZSB0aGUgYXR0cmlidXRlcy4gSXQmIzAzOTtzIGJlc3QgdG8gZGVmaW5lIHRoZSBhdHRyaWJ1dGVzIGJlZm9yZSB5b3Ugc3RhcnQgZW50ZXJpbmcgQ2F0YWxvZyBJdGVtcy48L3A+DQo8cD5Ob3RlIHRoYXQgdGhlIGF0dHJpYnV0ZXMgeW91IGRlZmluZSBtYXkgbmVlZCB0byBiZSBhZGRlZCB0byB0aGUgdGVtcGxhdGUgdGhhdCB5b3UmIzAzOTtyZSB1c2luZyB0byBkaXNwbGF5IENhdGFsb2cgSXRlbXMgLS0gc2VlIEN1c3RvbSBUZW1wbGF0ZXMgYmVsb3cuPC9wPg0KPGg0PkNhdGFsb2cgQ2F0ZWdvcnkgQXR0cmlidXRlczwvaDQ+DQo8cD5TaW1pbGFybHksIHlvdSBjYW4gc2V0IGF0dHJpYnV0ZXMgZm9yIENhdGVnb3JpZXMuIEFnYWluLCB0aGUgYXR0cmlidXRlcyB5b3UgZGVmaW5lIG1heSBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSB0ZW1wbGF0ZSB0aGF0IHlvdSYjMDM5O3JlIHVzaW5nIHRvIGRpc3BsYXkgQ2F0YWxvZyBDYXRlZ29yaWVzIC0tIHNlZSBDdXN0b20gVGVtcGxhdGVzIGJlbG93LjwvcD4NCjxoND5QcmludGFibGUgQ2F0YWxvZyBBdHRyaWJ1dGVzPC9oND4NCjxwPkxpa2V3aXNlLCB5b3UgY2FuIHNldCBhdHRyaWJ1dGVzIGZvciBQcmludGFibGUgQ2F0YWxvZ3MuIEFnYWluLCB0aGUgYXR0cmlidXRlcyB5b3UgZGVmaW5lIG1heSBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSB0ZW1wbGF0ZSB0aGF0IHlvdSYjMDM5O3JlIHVzaW5nIHRvIGRpc3BsYXkgeW91ciBQcmludGFibGUgQ2F0YWxvZyAtLSBzZWUgQ3VzdG9tIFRlbXBsYXRlcyBiZWxvdy48L3A+DQo8aDQ+Q3VzdG9tIFRlbXBsYXRlczwvaDQ+DQo8cD5JZiB5b3UmIzAzOTtyZSB3aWxsaW5nIHRvIG1lc3MgYXJvdW5kIHdpdGggU21hcnR5IFRlbXBsYXRlcywgeW91IGNhbiBjaGFuZ2UgdGhlIGxheW91dCBvZiBhbnkgb2YgdGhlIHBhZ2VzIGdlbmVyYXRlZCBieSBDYXRhbG9nZXIuIFRoaXMgc2hvdWxkIG1ha2UgY2VydGFpbiBkZXZlbG9wZXJzIHZlcnkgaGFwcHksIGV2ZW4gaWYgdGhlIGluZWZmaWNpZW5jeSBvZiB0aGUgcmVzdCBvZiB0aGUgY29kZSB3aWxsIG5vdC4gVGhlcmUgYXJlIGZvdXIga2luZHMgb2YgdGVtcGxhdGVzOiBvbmUga2luZCBmb3IgQ2F0YWxvZyBJdGVtcywgb25lIGtpbmQgZm9yIENhdGFsb2cgQ2F0ZWdvcmllcywgYW5kIG9uZSBraW5kIGZvciBQcmludGFibGUgQ2F0YWxvZ3MsIGFuZCBvbmUga2luZCBmb3IgJnF1b3Q7RmVhdHVyZSZxdW90OyBsaXN0cywgc3VjaCBhcyByZWNlbnRseSBhZGRlZCBpdGVtcyBvciByYW5kb20gc2VsZWN0aW9ucy48L3A+DQo8cD5XaGVuIGVkaXRpbmcgYSBUZW1wbGF0ZSwgdGhlIGFkbWluIHNjcmVlbiB3aWxsIGRpc3BsYXkgYSBsaXN0IG9mIFNtYXJ0eSB0YWdzIGF2YWlsYWJsZSB0byB5b3UgZm9yIHRoYXQga2luZCBvZiB0ZW1wbGF0ZS4gVGhpcw0Kd2lsbCBvbmx5IGhhcHBlbiBvbmNlIHRoZSBtb2R1bGUga25vd3Mgd2hhdCBraW5kIG9mIHRlbXBsYXRlIHlvdSYjMDM5O3JlIGVkaXRpbmcsIHNvIHdoZW4geW91IGZpcnN0IGNyZWF0ZSB0aGUgdGVtcGxhdGUsIGl0IGRpc3BsYXlzIGFsbA0KdGhlIFNtYXJ0eSB0YWdzIGl0IGtub3dzIGFib3V0LCBvbmx5IHNvbWUgb2Ygd2hpY2ggYmVpbmcgYXBwbGljYWJsZS48L3A+DQo8aDQ+U21hcnR5IHRhZ3MgaW4gQXR0cmlidXRlczwvaDQ+DQo8cD5Tb21ldGltZXMsIHlvdSYjMDM5O2xsIHdhbnQgdGhlIGRlc2NyaXB0aW9ucyBvZiB5b3VyIGl0ZW1zIHRvIGluY2x1ZGUgc21hcnR5IHRhZ3MgKGUuZy4sIGNtc19zZWxmbGluaykuIFRvIG1ha2UgdGhhdCB3b3JrLCB5b3UmIzAzOTtsbCBuZWVkIHRvDQp1cGRhdGUgeW91ciB0ZW1wbGF0ZS4gRm9yIHRoZSBhdHRyaWJ1dGVzIHdoZXJlIHlvdSB3YW50IHNtYXJ0eSB0YWdzIHRvIGJlIGFjdGl2ZSwgeW91JiMwMzk7bGwgbmVlZCB0byBuZXN0IHRoZSBzbWFydHkgZXZhbHVhdGlvbnMgaW4geW91ciB0ZW1wbGF0ZS4gRm9yIGV4YW1wbGU6PC9wPg0KPHByZT4NCiZhbXA7IzEyMztldmFsIHZhcj0kYXR0cmxpc3RbYXRdLmtleX0NCjwvcHJlPg0KPHA+YmVjb21lczo8L3A+DQo8cHJlPg0KJmFtcDsjMTIzO2V2YWwgdmFyPSRlbnRyeS0+aW5wdXQgYXNzaWduPXRoaXNBdHRyfSZhbXA7IzEyMztldmFsIHZhcj0kdGhpc0F0dHJ9DQo8L3ByZT4NCjxwPlVnbHk/IFl1cC4gQnV0IGl0IHdvcmtzLjwvcD4NCjxoMz5DYXRhbG9nZXIgSW1hZ2UgU3lzdGVtPC9oMz4NCjxwPkNhdGFsb2dlciBoYXMgYW4gaW1hZ2Ugc3lzdGVtIHRoYXQgd2lsbCBhbGxvdyB5b3UgdG8gZHluYW1pY2FsbHkgY2hhbmdlIHRoZSBpbWFnZSBkaXNwbGF5IHNpemUuIElmIHlvdSBkbyBub3QgbGlrZSBpdCwgeW91IGNhbiBhbHRlcg0KdGhlIHRlbXBsYXRlcyBhbmQgdXNlIGFueSBpbWFnZSBzeXN0ZW0geW91IHdhbnQuPC9wPg0KPHA+V2hlbiB5b3UgdXBsb2FkIGFuIGltYWdlIHVzaW5nIENhdGFsb2dlciwgaXQgZ2V0cyBwdXQgaW4gYSBzcGVjaWFsIHNldCBvZiBkaXJlY3RvcmllcyB0byBtYWtlIHRoZSBpbWFnaW5nIGVhc2llci4gWW91IHdpbGwgc2VlIG1vcmUNCmFib3V0IHRoaXMgbGF0ZXIuPC9wPg0KPHA+SXQgd29ya3MgYnkgY2FsbGluZyBhIFBIUCBwcm9ncmFtIGluc3RlYWQgb2YgZGlyZWN0bHkgcmVmZXJlbmNpbmcgdGhlIGltYWdlLiBUaGUgcHJvZ3JhbSB1c2VzIHRoZSBmaWxlbmFtZSB0byBzZWUgaWYgdGhlDQppbWFnZSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgY29ycmVjdCBzaXplLiBJZiBzbywgaXQgcmVkaXJlY3RzIHRvIHRoYXQgaW1hZ2UuIE90aGVyd2lzZSwgaXQgdXNlcyB5b3VyIEdETElCIG9yIEltYWdlTWFnaWNrIHRvIGNyZWF0ZQ0KdGhlIGltYWdlIGluIHRoZSBjb3JyZWN0IHNpemUsIGFuZCB0aGVuIHJlZGlyZWN0cyB0byBpdC4NCjwvcD4NCjxoND5DYXRhbG9nZXIgSW1hZ2UgRmlsZXNwZWMgRXhwbGFuYXRpb248L2g0Pg0KPHA+QSBjYXRhbG9nZXIgaW1hZ2UgaGFzIGEgZmlsZXNwZWMgbGlrZToNCjxiciAvPg0Kcm9vdF9wYXRoL21vZHVsZXMvQ2F0YWxvZ2VyL0NhdGFsb2dlci5JbWFnZS5waHA/aT1pdGVtbmFtZV9mXzFfNDAwXzEuanBnJmFtcDthbXA7YWM9ODI4ODgNCjwvcD4NCjxwPlRoZSBpbnRlcmVzdGluZyB0aGluZyBpcyAmcXVvdDtpdGVtbmFtZV9mXzFfNDAwXzEuanBnJnF1b3Q7IC0gdGhlIHN0dWZmIGJlZm9yZSBpcyBqdXN0IGEgY2FsbCB0byB0aGUgcHJvZ3JhbSwgYW5kIHRoZSAmYW1wO2FtcDthYz04Mjg4OCBpcyBhIHJhbmRvbSB0aGluZyB0aGF0DQppcyBkZXNpZ25lZCB0byBwcmV2ZW50IGJyb3dzZXIgY2FjaGluZy4gU28gZXhhbWluaW5nIHRoZSBuYW1lIHBpZWNlIGJ5IHBpZWNlIChzZXBhcmF0aW5nIGF0IHRoZSB1bmRlcnNjb3JlcyksIHdlIGhhdmU6PC9wPg0KPHVsPg0KPGxpPml0ZW0gbmFtZSAtIHRoaXMgaXMgdGhlIGFsaWFzIG9mIHRoZSBpdGVtL2NhdGVnb3J5IHBhZ2UgY29udGFpbmluZyB0aGUgaW1hZ2UuPC9saT4NCjxsaT5pbWFnZSB0eXBlIC0gdGhpcyBpcyBhIGRlc2lnbmF0aW9uIGZvciBpbWFnZSB0eXBlOjx1bD4NCjxsaT5mIC0gaXRlbSBmdWxsLXNpemUgaW1hZ2U8L2xpPg0KPGxpPnQgLSBpdGVtIHRodW1ibmFpbDwvbGk+DQo8bGk+Y2YgLSBjYXRlZ29yeSBmdWxsLXNpemVkIGltYWdlPC9saT4NCjxsaT5jdCAtIGNhdGVnb3J5IHRodW1ibmFpbDwvbGk+DQo8bGk+Y3RmIC0gcHJpbnRhYmxlIGNhdGFsb2cgZnVsbC1zaXplZCBpbWFnZTwvbGk+DQo8L3VsPg0KPC9saT4NCjxsaT5pbWFnZSBudW1iZXIgLSBzbyBhIGdpdmVuIGl0ZW0vY2F0YWxvZy9ldGMgY2FuIGhhdmUgbXVsdGlwbGUgaW1hZ2VzPC9saT4NCjxsaT5sb25nIGRpbWVuc2lvbiAtIGxvbmcgZGltZW5zaW9uIG9mIHRoZSBpbWFnZSwgaW4gcGl4ZWxzPC9saT4NCjxsaT5taXNzaW5nIGZsYWcgLSAxIGlmIHlvdSB3YW50IHRvIHNob3cgYW4gJnF1b3Q7aW1hZ2UgbWlzc2luZyZxdW90OyBpbWFnZSBpZiB0aGlzIGltYWdlIGRvZXNuJiMwMzk7dCBleGlzdCwgMCBvdGhlcndpc2U8L2xpPg0KPC91bD4NCjxwPg0KVGhpcyB3aWxsIHRha2UgYW4gaW1hZ2UgaW4gcm9vdF9wYXRoL3VwbG9hZHMvaW1hZ2VzL2NhdGFsb2dfc3JjL2l0ZW1uYW1lX3NyY18xDQo8L3A+DQo8aDM+Q3JlZGl0czwvaDM+DQo8cD5UaGFua3MgdG8gPGEgaHJlZj0iaHR0cDovL3d3dy5pZC1hLmNvLnVrIj5QYXVsIENvb3BlcjwvYT4gZm9yIHNwb25zb3JpbmcgdGhlIGRldmVsb3BtZW50IG9mIHRleHRhcmVhIGF0dHJpYnV0ZXMuPC9wPg0KPHA+VGhhbmtzIHRvIG51bWVyb3VzIHBhdGllbnQgdXNlcnMgYW5kIGJ1ZyB0ZXN0ZXJzIChtYW55IG9mIHdob20gaGFkIG5vIGlkZWEgd2hhdCB0aGV5IHdlcmUgZ2V0dGluZyBpbnRvLik8L3A+IA0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIENNUyBNYWRlIFNpbXBsZSAgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyI+RGV2ZWxvcGVyIEZvcmdlPC9hPi48L2xpPg0KPGxpPlRvIG9idGFpbiBjb21tZXJjaWFsIHN1cHBvcnQsIHBsZWFzZSBzZW5kIGFuIGVtYWlsIHRvIHRoZSBhdXRob3IgYXQgPGEgaHJlZj0ibWFpbHRvOnNqZ0BjbXNtb2R1bGVzLmNvbSI+JmFtcDtsdDtzamdAY21zbW9kdWxlcy5jb20mYW1wO2d0OzwvYT4uPC9saT4NCjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjxsaT5UaGUgYXV0aG9yIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkgYW5kIGdyb3ZlbGxpbmcgZm9yIGZyZWUgc3VwcG9ydC48L2xpPg0KPC91bD4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dA0Kb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD5Db3B5cmlnaHQgJmFtcDtjb3B5OyAyMDA3LCBTYW11ZWwgR29sZHN0ZWluIDxhIGhyZWY9Im1haWx0bzpzamdAY21zbW9kdWxlcy5jb20iPiZhbXA7bHQ7c2pnQGNtc21vZHVsZXMuY29tJmFtcDtndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+DQo8bGk+VmVyc2lvbiAwLjcuMiAtIDE0IE1hcmNoIDIwMDkuIEJ1ZyBmaXhlcyBieSBOdW5vIENvc3RhLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjcuMSAtIDI5IFNlcHQgMjAwOC4gQWRkZWQgVmFyaWFibGUgbWV0aG9kIGZvciBKYXZpZXIgU2FuIEp1YW4gQ29zdGlsYXMuPC9saT4NCjxsaT5WZXJzaW9uIDAuNyAtIDE3IE1hcmNoIDIwMDguIDxlbT5GaW5hbGx5PC9lbT4gYWRkZWQgcGVyLXBhZ2UgbWV0YS1kYXRhLiBBbmQgdGhlcmUgd2FzIGdyZWF0IGNlbGVicmF0aW9uIGluIHRoZSBzdHJlZXRzLCBhbmQgZGFuY2luZyBpbiB0aGUgdG93biBzcXVhcmUuIEFsc28gYWRkZWQgaW4gbWFueSBIVE1MIGFuZCBsb2NhbGl6YXRpb24gZml4ZXMgY29udHJpYnV0ZWQgYnkgTnVubyBDb3N0YS48L2xpPg0KPGxpPlZlcnNpb24gMC42LjIgLSA3IEphbnVhcnkgMjAwNy4gRml4ZWQgbmFzdHkgYnVnIHdoZXJlIHVwZ3JhZGluZyBtYWtlcyBpdCBsb29rIGxpa2UgYWxsIHlvdXIgbm90ZSBmaWVsZHMgYXJlIGxvc3QuPC9saT4NCjxsaT5WZXJzaW9uIDAuNi4xIC0gMiBKYW51YXJ5IDIwMDcuIEZpeGVkIG5hc3R5IGJ1ZyB3aGVyZSBjaGFuZ2luZyBjb250ZW50IHR5cGUgZnJvbSAmcXVvdDtjb250ZW50JnF1b3Q7IHRvIGNhdGFsb2cgY29udGVudCB0eXBlcyByZW5hbWVkIGFsbCBjYXRhbG9nIGltYWdlcy48L2xpPg0KPGxpPlZlcnNpb24gMC42IC0gMjkgRGVjZW1iZXIgMjAwNy4gPHVsPg0KPGxpPkJ1ZyBmaXg6IEltYWdlcyBkb24mIzAzOTt0IGdldCAmcXVvdDtsb3N0JnF1b3Q7IHdoZW4gcGFnZSBhbGlhcyBjaGFuZ2VzLjwvbGk+DQo8bGk+QnVnIGZpeDogQXR0cmlidXRlIGNvbnRlbnQgZG9lc24mIzAzOTt0IGdldCAmcXVvdDtsb3N0JnF1b3Q7IHdoZW4gYXR0cmlidXRlcyBhcmUgcmVuYW1lZC48L2xpPg0KPGxpPkJ1ZyBmaXg6IEZpeGVkIFByaW50YWJsZSBDYXRhbG9nLiBXb3JrcyBmb3IgZmlyc3QgdGltZSBzaW5jZSB2LjAuNCBvciB0aGVyZWFib3V0cy48L2xpPg0KPGxpPkJ1ZyBmaXg6IE5vdyBob25vcnMgc3lzdGVtIHByZWZlcmVuY2UgZm9yIFdZU0lXWUcgZWRpdGluZyBvZiB0ZXh0IGFyZWFzLjwvbGk+DQo8bGk+RmVhdHVyZTogQXR0cmlidXRlcyBtYXkgbm93IGJlIHRleHQgYXJlYXMuPC9saT4NCjwvdWw+DQo8L2xpPg0KPGxpPlZlcnNpb24gMC41LjYgLSAxMCBEZWNlbWJlciAyMDA3LiBUYXJkeSByb2xsb3V0IG9mIGZpeGVzOiA8dWw+DQo8bGk+QWRkZWQgY29kZSB0byBwcmV2ZW50IHNob3dpbmcgb2Ygbm9uLXVwbG9hZGVkIGltYWdlcywgY2F0ZWdvcnkgcGFnZSBidWZmZXIgZmx1c2hpbmcgZm9yIGV4dHJlbWUgY2FzZXMsIG1pbm9yIGJ1ZyBmaXhlczwvbGk+DQo8bGk+Rml4IGZvciAmIzAzOTtyZWNlbnQmIzAzOTsgYWN0aW9uIHdoZW4gYWxpYXMgaXMgLzwvbGk+DQo8bGk+Rml4IGZvciB0aGUgcHJvYmxlbSB3aGVyZSBjYXRhbG9ncyB3aXRoIG1vcmUgdGhhbiB0ZW4gY2F0ZWdvcmllcyBoYXZlIGl0ZW1zIGRpc3BsYXllZCBpbiBpbmNvcnJlY3QgY2F0ZWdvcmllczwvbGk+PC91bD48L2xpPg0KPGxpPlZlcnNpb24gMC41LjUgLSAyMCBKdW5lIDIwMDcuIEZpeCBmb3IgQ29udGVudCBBbGlhcyBzdXBwb3J0IC0gcmVxdWlyZXMgQ29udGVudCBBbGlhcyB2LiAwLjYuMS48L2xpPg0KPGxpPlZlcnNpb24gMC41LjQgLSAxOSBKdW5lIDIwMDcuIEFkZGVkICZxdW90O2FsbCZxdW90OyBmZWF0dXJlIGxpc3QuPC9saT4NCjxsaT5WZXJzaW9uIDAuNS4zIC0gMjEgU2VwdGVtYmVyIDIwMDYuIEFkZGVkIGxpbmtzIHRvIHNvdXJjZSAobm9uLXJlc2NhbGVkKSBpbWFnZXMsIGFuZCBhZGRlZCBpbWFnZSBkZWxldGUgZnVuY3Rpb25hbGl0eS48L2xpPg0KPGxpPlZlcnNpb24gMC41LjIgLSAxNyBTZXB0ZW1iZXIgMjAwNi4gUmVtb3ZlZCBkZWJ1ZyBvdXRwdXQsIHJldmlzZWQgaW1hZ2Ugc3lzdGVtIChmaXhlZCBidWdzKS4gQ2FjaGluZyBidWcgc2VlbXMgdG8gcmVtYWluLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjUuMSAtIDI0IEF1Z3VzdCAyMDA2LiAoY2FsZ3V5MTAwMCksIFVwcGVkIE1pbmltdW1DTVNWZXJzaW9uIHRvIDEuMC1zdm4sIGFuZCBtb3JlIDEuMCBjaGFuZ2VzIHdlcmUgYWRkZWQgKHJlbW92ZWQgc3RhdGljIG1ldGhvZHMpPC9saT4NCjxsaT5WZXJzaW9uIDAuNSAtIDE2IEF1Z3VzdCAyMDA2LiBBc3NvcnRlZCBjb250cmlidXRlZCBidWcgZml4ZXMgZm9yIENNUyBNUyAxLjAsICBuZXcgb3B0aW9ucyBmb3IgaW1hZ2VzLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjQuMiAtIDI4IE1heSAyMDA2LiBCdWcgZml4IGZvciBhdHRyaWJ1dGVzIGluIGNhdGVnb3J5IHBhZ2VzLiBBZGRlZCAmcXVvdDsvJnF1b3Q7IHBhZ2VfYWxpYXMgZm9yIGZlYXR1cmUgbGlzdHMuPC9saT4NCjxsaT5WZXJzaW9uIDAuNC4xIC0gMjMgTWF5IDIwMDYuIEJ1ZyBmaXggdG8gbWFrZSB3b3JrIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgQ01TIE1TLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjQgLSAyMiBNYXkgMjAwNi4gQnVnIGZpeGVzLCBGZWF0dXJlIExpc3RzLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjMgLSAodW5yZWxlYXNlZCwgcHVibGlzaGVkIGZyb20gc3ZuKTwvbGk+DQo8bGk+VmVyc2lvbiAwLjIgLSAyMyBNYXJjaCAyMDA2LiBOdW1lcm91cyBidWcgZml4ZXMuIFBlcmZvcm1hbmNlIGltcHJvdmVtZW50cy4gTWVtb3J5IGZvb3RwcmludCBvcHRpbWl6YXRpb25zLiBOb3cgdXNlcyB0aGUgQ01TIDAuMTIgTW9kdWxlIEFQSS48L2xpPg0KPGxpPlZlcnNpb24gMC4xLjUgLSAxNyBOb3ZlbWJlciAyMDA1LiBJbml0aWFsIFJlbGVhc2UuIEplc3VzLCB0aGF0IHRvb2sgYSBsb25nIHRpbWUuPC9saT4NCjxsaT5WZXJzaW9uIDAuMSAtIDE5IE1hcmNoIDIwMDUuIFByb2plY3QgSW5pdGlhdGlvbi48L2xpPg0KPC91bD4nOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdFc3NlcmUgc2ljdXJpIGRpIGNvbmZpZ3VyYXJlIGlsIHBlcm1lc3NvICZxdW90O01vZGlmaWNhIGNvbmZpZ3VyYXppb25lIENhdGFsb2cmcXVvdDsgYWdsaSB1dGVudGkgY2hlIGFtbWluaXN0cmVyYW5ubyBpbCBjYXRhbG9nby4nOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My41Njg3Mjc5MzcuMTIzNjM0MDE3MS4xMjM5MDA0ODc1LjEyMzkwMDY5MDIuMTUnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjM5MDA0ODc1LjE0LjE0LnV0bWNjbj0ocmVmZXJyYWwpfHV0bWNzcj1kZXYuY21zbWFkZXNpbXBsZS5vcmd8dXRtY2N0PS98dXRtY21kPXJlZmVycmFsJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/lt_LT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ25lZWRwZXJtaXNzaW9uJ10gPSAnSnVtcyByZWlraWEgbnVzdGF0eXRpICVzLCBrYWQgYXRsaWt0aSB0YWkuJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0NhdGFsb2dlcic7CiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnVmFsZHl0aSBLYXRhbG9nbyBudW9zdGF0YXMnOwokbGFuZ1snYXJleW91c3VyZSddID0gJ0FyIHRpa3JhaSBub3JpdGUgcGEmc2Nhcm9uO2FsaW50aSAlcz8nOwokbGFuZ1sndW5pcXVlY29kZSddID0gJ1VuaWthbHVzIGtvZGFzJzsKJGxhbmdbJ3RlbXBsYXRlbGlzdCddID0gJ1N1Yi0mc2Nhcm9uO2FibG9uYXMnOwokbGFuZ1snbGlzdHRlbXBsJ10gPSAnVmFsZHl0aSBTdWItJnNjYXJvbjthYmxvbnVzJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fdGFiJ10gPSAnRWxlbWVudG8gc2F2eWLEl3MnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfdGFiJ10gPSAnS2F0ZWdvcmlqb3Mgc2F2eWLEl3MnOwokbGFuZ1sndGl0bGVfcHJpbnRhYmxlX3RhYiddID0gJ1NwYXVzZGluYW1vIGthdGFsb2dvIG51b3N0YXRvcyc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3RhYiddID0gJ0VsZW1lbnRvIHZhaXpkbyBkeWRpcyc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9pbWFnZV90YWInXSA9ICdLYXRlZ29yaWpvcyBwdXNsYXBpbyBudW9zdGF0b3MnOwokbGFuZ1sndGl0bGVfaXNfdGV4dGZpZWxkJ10gPSAnVGVrc3RvIHNyaXRpcz8nOwokbGFuZ1sndGl0bGVfZGVsZXRlJ10gPSAnJlNjYXJvbjthbGludGk/JzsKJGxhbmdbJ3RpdGxlX2FzcGVjdF90YWInXSA9ICdWYWl6ZMWzIHByb3BvcmNpam9zJzsKJGxhbmdbJ3RpdGxlX2ltYWdlX3RhYiddID0gJ0tpdG9zIHZhaXpkbyBudW9zdGF0b3MnOwokbGFuZ1sndGl0bGVfaXRlbV90ZW1wbGF0ZV92YXJzJ10gPSAnRWxlbWVudG8gJnNjYXJvbjthYmxvbm8ga2ludGFtaWVqaSc7CiRsYW5nWyd0aXRsZV9jYXRfdGVtcGxhdGVfdmFycyddID0gJ0thdGVnb3Jpam9zICZzY2Fyb247YWJsb25vIGtpbnRhbWllamknOwokbGFuZ1sndGl0bGVfZmVhdHVyZV90ZW1wbGF0ZV92YXJzJ10gPSAnU2F2eWJpxbMgJnNjYXJvbjthYmxvbm8ga2ludGFtaWVqaSc7CiRsYW5nWyd0aXRsZV9zaG93X29ubHlfZXhpc3RpbmdfaW1hZ2VzJ10gPSAnTmXEr3RlcnB0aSBkaW5ndXNpxbMgdmFpemTFsyc7CiRsYW5nWyd0aXRsZV9zaG93X29ubHlfZXhpc3RpbmdfaW1hZ2VzX2hlbHAnXSA9ICdUYWkgdGlrIMSvdGVycHMgdmFpemRvIG51b3JvZGFzIMSvIHPEhXJhJnNjYXJvbjvEhSBqZWkgdmFpemRhcyBlZ3ppc3R1b2phLjxiciAvPihQYXByYXN0YWkgdGFpIHlyYSAgZ2VyYWksIGJldCBqZWkgZGFyb3RlIGthxb5rxIUgZ3VkcmF1cyBzdSB2YWl6ZGFpczxiciAvPmFycmF5IGluZGV4ZXMsIHRhaSBnYWxpIHN1a2VsdGkgcHJvYmxlbcWzLiknOwokbGFuZ1sndGl0bGVfZmx1c2hfY2F0cyddID0gJ0ZsdXNoIGNhdGVnb3J5IHBhZ2UgYnVmZmVycyc7CiRsYW5nWyd0aXRsZV9mbHVzaF9jYXRzX2hlbHAnXSA9ICdKZWkgdHVyaXRlIGxhYmFpIGRpZGVsxK8gcm9kb23FsyBlbGVtZW50xbMga2lla8SvPGJyIC8+a2F0ZWdvcmlqb2plLCBrYWkga3VyaWUgUEhQIMSvZGllZ2ltYWkgZ2FsaSBuZWJlcm9keXRpIHB1c2xhcGlvPGJyIC8+dGVpc2luZ2FpLiBQYcW+eW3El2tpdGUgxI1pYSwgaSZzY2Fyb247c3ByxJlzdGkgJnNjYXJvbjtpxIUgcHJvYmxlbcSFICh0ZXN0YXMgJnNjYXJvbjthbHV0aW5pYW1zIHBvdmVpa2lhbXMpLic7CiRsYW5nWydjYXRhbG9nZXInXSA9ICdDYXRhbG9nZXInOwokbGFuZ1snaXRlbV9wYWdlJ10gPSAnRWxlbWVudG8gcHVzbGFwaXMnOwokbGFuZ1snY2F0ZWdvcnlfcGFnZSddID0gJ0thdGVnb3Jpam9zIHB1c2xhcGlzJzsKJGxhbmdbJ2NhdGFsb2dfcHJpbnRhYmxlJ10gPSAnU3BhdXNkaW5hbWFzIGthdGFsb2dhcyc7CiRsYW5nWydjYXRhbG9nX2RhdGFzaGVldCddID0gJ0thdGFsb2dvIERhdGFzaGVldCc7CiRsYW5nWydjYXRhbG9nX3Nob3J0X2xpc3QnXSA9ICdTYXZ5YmnFsyBzxIVyYSZzY2Fyb247YXMnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2l0ZW1fc29ydF9vcmRlciddID0gJ051c3RhdHl0aSBlbGVtZW50xbMgcmlraWF2aW3EhSDEryc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfaXRlbXNfcGVyX3BhZ2UnXSA9ICdOdXN0YXR5dGkgZWxlbWVudMWzIGtpZWvEryBwZXIgcHVzbGFwxK8nOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2NhdGVnb3J5X3JlY3Vyc2UnXSA9ICdLYXRlZ29yaWpvcyByb2R5bW8gZWxnZXN5cyc7CiRsYW5nWyd0aXRsZV9pdGVtX3NvcnRfb3JkZXInXSA9ICfErnByYXN0YXMgZWxlbWVudMWzIHJpa2lhdmltYXMnOwokbGFuZ1sndGl0bGVfcHJpbnRhYmxlX3NvcnRfb3JkZXInXSA9ICfErnByYXN0YXMgc3BhdXNkaW5hbW8ga2F0YWxvZ28gcmlraWF2aW1hcyc7CiRsYW5nWyd0aXRsZV9pdGVtc19wZXJfcGFnZSddID0gJ8SucHJhc3RhcyBlbGVtZW50xbMga2lla2lzIHBlciBwdXNsYXDEryc7CiRsYW5nWyd0aXRsZV9hdmFpbF9hdHRycyddID0gJ0dhbGltb3MgZWxlbWVudG8gc2F2eWLEl3MgJnNjYXJvbjthYmxvbnVpJzsKJGxhbmdbJ3RpdGxlX2F2YWlsX2ltYXR0cnMnXSA9ICdHYWxpbWkgZWxlbWVudG8gdmFpemRhaSAmc2Nhcm9uO2FibG9udWknOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX2hlcm8nXSA9ICdWYWl6ZG8gZHlkaXMgRWxlbWVudG8gcHVzbGFwaXVpIChpbGdvamkgYSZzY2Fyb247aXMsIHBpa3NlbGlhaXMpJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV90aHVtYm5haWwnXSA9ICdUaHVtYmFpbCBWYWl6ZG8gZHlkaXMgRWxlbWVudG8gcHVzbGFwaXVpICAoaWxnb2ppIGEmc2Nhcm9uO2lzLCBwaWtzZWxpYWlzKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfY2F0ZWdvcnknXSA9ICdUaHVtYm5haWwgVmFpemRvIGR5ZGlzIEthdGVnb3Jpam9zIHB1c2xhcGl1aSAgKGlsZ29qaSBhJnNjYXJvbjtpcywgcGlrc2VsaWFpcyknOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX2NhdGFsb2cnXSA9ICdUaHVtYm5haWwgVmFpemRvIGR5ZGlzIEthdGFsb2dvIHB1c2xhcGl1aSAgKGlsZ29qaSBhJnNjYXJvbjtpcywgcGlrc2VsaWFpcyknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV9oZXJvJ10gPSAnVmFpemRvIGR5ZGlzIEthdGVnb3Jpam9zIHB1c2xhcGl1aSAgKGlsZ29qaSBhJnNjYXJvbjtpcywgcGlrc2VsaWFpcyknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV90aHVtYm5haWwnXSA9ICdUaHVtYmFpbCBWYWl6ZG8gZHlkaXMgS2F0ZWdvcmlqb3NwdXNsYXBpdWkgIChpbGdvamkgYSZzY2Fyb247aXMsIHBpa3NlbGlhaXMpJzsKJGxhbmdbJ3RpdGxlX3RlbXBsYXRlJ10gPSAnJlNjYXJvbjthYmxvbmFzJzsKJGxhbmdbJ3RpdGxlX3RlbXBsYXRlX3R5cGUnXSA9ICcmU2Nhcm9uO2FibG9ubyB0aXBhcyc7CiRsYW5nWyd0aXRsZV90aXRsZSddID0gJ1BhdmFkaW5pbWFzJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2VfY291bnQnXSA9ICdNYWtzaW1hbHVzIHBlcsW+acWrcsWzIGtpZWtpcyBraWVrdmllbm8gZWxlbWVudG8nOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2VfY291bnQnXSA9ICdNYWtzaW1hbHVzIEJhbmVyaW8gdmFpemTFsyBraWVrdmllbmFtIGthdGVnb3Jpam9zIHB1c2xhcGl1aSc7CiRsYW5nWyd0aXRsZV9pdGVtX2F0dHJpYnV0ZXNfaGVscCddID0gJ0tpZWt2aWVuYSBzYXZ5YsSXIGt1cmnEhSBqxatzIMSvdmVkYXRlIMSNaWEgYnVzIGxhdWtvIHBhdmFkaW5pbWFzLCBrdXLEryBqxatzIGdhbGl0ZSBwYW5hdWRvdGksIGthZCBhcGlixatkaW50dW3El3RlIGluZGl2aWR1YWzFsyBlbGVtZW50xIUsIGlyIGLFq3Mgcm9kb21hcyBzdSB0dW8gZWxlbWVudHUuIErFq3MgdHVyaXRlIGF0bmF1amludGkgc2F2byAmc2Nhcm9uO2FibG9uxIUsIGthZCBhdHNwaW5kxJd0dW3El3RlICZzY2Fyb247aXR1b3MgcG/FvnltaXVzLic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9hdHRyaWJ1dGVzX2hlbHAnXSA9ICdLaWVrdmllbmEgc2F2eWLElyBrdXJpxIUgasWrcyDEr3ZlZGF0ZSDEjWlhIGJ1cyBsYXVrbyBwYXZhZGluaW1hcywga3VyxK8gasWrcyBnYWxpdGUgcGFuYXVkb3RpLCBrYWQgYXBpYsWrZGludHVtxJd0ZSBrYXRlZ29yaWrEhSwgaXIgYsWrcyByb2RvbWFzIHN1IHRhIGthdGVnb3JpamEuIErFq3MgdHVyaXRlIGF0bmF1amludGkgc2F2byAmc2Nhcm9uO2FibG9uxIUsIGthZCBhdHNwaW5kxJd0dW3El3RlICZzY2Fyb247aXR1b3MgcG/FvnltaXVzLic7CiRsYW5nWyd0aXRsZV9jYXRhbG9nX2F0dHJpYnV0ZXNfaGVscCddID0gJ0tpZWt2aWVuYSBzYXZ5YsSXIGt1cmnEhSBqxatzIMSvdmVkYXRlIMSNaWEgYnVzIGxhdWtvIHBhdmFkaW5pbWFzLCBrdXLEryBqxatzIGdhbGl0ZSBwYW5hdWRvdGksIGthZCBhcGlixatkaW50dW3El3RlIHZpc8SFIGthdGFsb2fEhSwgaXIgYsWrcyByb2RvbWFzIHNwYXVzZGluYW1vIGthdGFsb2dvIHB1c2xhcHlqZS4gSsWrcyB0dXJpdGUgYXRuYXVqaW50aSBzYXZvICZzY2Fyb247YWJsb27EhSwga2FkIGF0c3BpbmTEl3R1bcSXdGUgJnNjYXJvbjtpdHVvcyBwb8W+eW1pdXMuJzsKJGxhbmdbJ3RpdGxlX2ZvcmNlX2FzcGVjdF9yYXRpbyddID0gJ1ByaXZlcnN0aSB2YWl6ZHVzIGxhaWt5dGkgcHJvcG9yY2lqb3M/JzsKJGxhbmdbJ3RpdGxlX2ZvcmNlX2FzcGVjdF9yYXRpb19sYWJlbCddID0gJ1ByaXZlcnN0aW7ElyBwcm9wb3JjaWphIChkYXIgbmVyZWFsaXp1b3RhKSc7CiRsYW5nWyd0aXRsZV9pbWFnZV9hc3BlY3RfcmF0aW8nXSA9ICdQcm9wb3JjaWphIChudXJvZHlraXRlICZxdW90OzQ6MyZxdW90OyBhciAmcXVvdDsxOjIuNSZxdW90OyknOwokbGFuZ1sndGl0bGVfYXNwZWN0X3JhdGlvX2hlbHAnXSA9ICdKZWkgbnVzdGF0eXNpdGUgcHJpdmVyc3RpbsSZIHByb3BvcmNpamEsIHZhaXpkxbMgZHlzaXMgYnVzIHBha2Vpc3Rhcywga2FkIHRpa3NsaWFpIGF0aXRpa3TFsyBudXJvZHl0xIUgcHJvcG9yY2lqYS4gSmVpIG5lIC0gdmFpemRhaSBpJnNjYXJvbjtsYWlreXMgc2F2byBwcm9wb3JjaWphcywgYmV0IGJ1cyBwYWtlaXN0YXMgZHlkaXMgcGFnYWwgaWxnxIVqxIUgYSZzY2Fyb247xK8uIEthaXAgbnVzdGF0eXRhLiA8Yj5Qcml2ZXJzdGluxJcgcHJvcG9yY2lqYSBkYXIgbmVyZWFsaXp1b3RhITwvYj4nOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfc29ydCddID0gJ0thdGVnb3Jpam9zIHB1c2xhcGlvIGVsZW1lbnTFsyBzxIVyYSZzY2Fyb247byByaWtpYXZpbWFzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2UnXSA9ICfErnByYXN0YXMgS2F0ZWdvcmlqb3Mgcm9keW1vIGVsZ2VzeXMnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9pdGVtc19hbGwnXSA9ICfErnRlcnB0aSB2aXN1cyBlbGVtZW50dXMgJnNjYXJvbjtpb3Mga2F0ZWdvcmlqb3MsIMSvc2thaXRhbnQgaXIgc3ViLWthdGVnb3JpamFzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfaXRlbXNfb25lJ10gPSAnxK50ZXJwdGkgdmlzdXMgZWxlbWVudHVzICZzY2Fyb247aW9zIGthdGVnb3Jpam9zLCBiZXQgbmUgZWxlbWVudHVzIGVzYW7EjWl1cyBzdWIta2F0ZWdvcmlqb3NlJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfY2F0ZWdvcmllc19hbGwnXSA9ICfErnRlcnB0aSB2aXNhcyBLYXRlZ29yaWphcyBlc2FuxI1pYXMgJnNjYXJvbjtpb3NlIGthdGVnb3Jpam9qZSwgxK9za2FpdGFudCBrYXRlZ29yaWphcyBlc2FuxI1pYXMgc3ViLWthdGVnb3Jpam9zZSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2NhdGVnb3JpZXNfb25lJ10gPSAnxK50ZXJwdGkgdmlzYXMgS2F0ZWdvcmlqYXMgZXNhbsSNaWFzICZzY2Fyb247aW9zZSBrYXRlZ29yaWpvamUsIGJldCBuZSBrYXRlZ29yaWphcyBlc2FuxI1pYXMgc3ViLWthdGVnb3Jpam9zZSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX21peGVkX2FsbCddID0gJ8SudGVycHRpIHZpc2FzIEthdGVnb3JpamFzIGlyIEVsZW1lbnR1cyBlc2FuxI1pYXMgJnNjYXJvbjtpb3NlIGthdGVnb3Jpam9qZSwgxK9za2FpdGFudCBrYXRlZ29yaWphcyBpciBlbGVtZW50dXMgZXNhbsSNaXVzIHN1Yi1rYXRlZ29yaWpvc2UnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9taXhlZF9vbmUnXSA9ICfErnRlcnB0aSB2aXNhcyBLYXRlZ29yaWphcyBpciBFbGVtZW50dXMgZXNhbsSNaWFzICZzY2Fyb247aW9zZSBrYXRlZ29yaWpvamUsIGJldCBuZSBrYXRlZ29yaWphcyBpciBlbGVtZW50dXMgZXNhbsSNaXVzIHN1Yi1rYXRlZ29yaWpvc2UnOwokbGFuZ1sndGl0bGVfc2hvd19taXNzaW5nX2ltYWdlcyddID0gJ1JvZHl0aSAmcXVvdDtOxJdyYSB2YWl6ZG8mcXVvdDsgcGF2ZWlrc2zEl2zEryBqZWkgbsSXcmEgdmFpemRvLic7CiRsYW5nWyd0aXRsZV9zaG93X21pc3NpbmdfaW1hZ2VzX2xvbmcnXSA9ICdSb2R5dGkgc3BlY2lhbMWzICAmcXVvdDtOxJdyYSB2YWl6ZG8mcXVvdDsgcGF2ZWlrc2zEl2zEryBqZWkgbsSXcmEgdmFpemRvLiAoTmF1ZGluZ2EgZGVyaW5pbW8gbWV0dSAuIEtpdHUgYXR2ZWp1IG5hdWRva2l0ZSB2aWVubyBwaWtzZWxpbyBwZXJtYXRvbcSFIHZhaXpkxIUpLic7CiRsYW5nWyduYXR1cmFsX29yZGVyJ10gPSAnTmF2aWdhY2lqb3MgdHZhcmthJzsKJGxhbmdbJ2FscGhhX29yZGVyJ10gPSAnQWLEl2PEl2xpbsSXIHR2YXJrYSc7CiRsYW5nWydtYW5hZ2VwcmVmcyddID0gJ1ZhbGR5dGkgbnVzdGF0eW11cyc7CiRsYW5nWydtYW5hZ2VhdHRycyddID0gJ1ZhbGR5dGkgdmFydG90b2rFsyBzdWt1cnRhcyBzYXZ5YmVzJzsKJGxhbmdbJ2dsb2JhbG9wcyddID0gJ1Zpc3VvdGluaWFpIGthdGFsb2dvIHZlaWtzbWFpJzsKJGxhbmdbJ2FkZHRlbXBsYXRlJ10gPSAnUHJpZMSXdGkgJnNjYXJvbjthYmxvbsSFJzsKJGxhbmdbJ3JlaW1wb3J0dGVtcGxhdGVzJ10gPSAnSSZzY2Fyb247bmF1am8gaW1wb3J0dW90aSBwYXZ5emRpbml1cyBzdWItJnNjYXJvbjthYmxvbnVzJzsKJGxhbmdbJ3JlaW1wb3J0ZWQnXSA9ICdQYXZ5emRpbmlhaSBzdWItJnNjYXJvbjthYmxvbmFpIGltcG9ydHVvdGknOwokbGFuZ1sndGVtcGxhdGV1cGRhdGVkJ10gPSAnJlNjYXJvbjthYmxvbmFzIHByaWTEl3Rhcy9hdG5hdWppbnRhcy4nOwokbGFuZ1sndGVtcGxhdGVkZWxldGVkJ10gPSAnJlNjYXJvbjthYmxvbmFzIHBhJnNjYXJvbjthbGludGFzLic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdOdXN0YXR5bWFpIGF0bmF1amludGkuJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsaW8gdmVyc2lqYSAlcyDEr2RpZWd0YS4nOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bGlzIGF0bmF1amludGFzIMSvICVzIHZlcnNpamEuJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWxpcyBwYSZzY2Fyb247YWxpbnRhcy4nOwokbGFuZ1snYXR0cnN1cGRhdGVkJ10gPSAnU2F2eWLEl3MgYXRuYXVqaW50b3MuJzsKJGxhbmdbJ25vZ2xvYmFsY2hhbmdlJ10gPSAnTmVrZWlzdGknOwokbGFuZ1snZ2xvYmFsbHl1cGRhdGVkJ10gPSAnUGFrZWl0aW1haSDEr3NpZ2FsaW9zIHZpc3VvdGluYWkuJzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ1JlZGFndW90aSAmc2Nhcm9uO2FibG9uxIUnOwokbGFuZ1snc3VidGVtcGxhdGVzJ10gPSAnS2F0YWxvZ28gc3ViLSZzY2Fyb247YWJsb25hcyc7CiRsYW5nWyduZXh0J10gPSAnOiZyYXF1bzsnOwokbGFuZ1sncHJldiddID0gJyZsYXF1bzs6JzsKJGxhbmdbJ2VkaXQnXSA9ICdSZWRhZ3VvdGknOwokbGFuZ1snZGVsZXRlJ10gPSAnJlNjYXJvbjthbGludGknOwokbGFuZ1snbm90ZW1wbGF0ZXMnXSA9ICdTdWItJnNjYXJvbjthYmxvbmFzIG5lxK9kaWVndGFzISc7CiRsYW5nWydoZWxwdGV4dCddID0gJzxoMz5LxIUgamlzIGRhcm8/PC9oMz4NCjxwPiZTY2Fyb247aXMgbW9kdWxpcyBsZWlkxb5pYSBqdXMga3VydGkgaW50ZXJuZXRpbml1cyBrYXRhbG9ndXMgYXIgcG9ydGZlbGl1cy4gS2F0YWxvZ2FpIHN1c2lkZWRhIGkmc2Nhcm9uOyAmcXVvdDtLYXRhbG9nbyBlbGVtZW50xbMgJnF1b3Q7LCBrdXJpZSBnYWxpIGLFq3RpIHByb2R1a3RhaXMsIG1lbm8ga8WrcmluaWFpcywgYXIgcGFuYSZzY2Fyb247aW9taXMsIGlyICZxdW90O0thdGFsb2dvIEthdGVnb3Jpam9taXMmcXVvdDssIGt1cmlvcyBnYWxpIGLFq3RpIGVsZW1lbnRvIGthdGVnb3Jpam9taXMgYXIga2l0YWlzIG5hdMWrcmFsaWFpcyBrYXRhbG9nbyBza3lyaWFpcy48L3A+DQo8cD5LYXRlZ29yaWpvcyBnYWxpIGLFq3RpIGFwaWJyxJfFvnRvcyBoaWVyYXJjaGluaWFpIChuYXVkb2phbnRpcyBzdGFuZGFydGluxK8gQ01TIE1hZGUgU2ltcGxlIHR1cmluaW8gc8SFcmEmc2Nhcm9uO8SFKS4gS2F0ZWdvcmlqb3MgcHVzbGFwaWFpIGdhbGkgcm9keXRpIGVsZW1lbnR1cyBrYXRlZ29yaWpvamUgaXIvYXIgc3Via2F0ZWdvcmlqb3NlLCBwYXNpcmlua3RpbmFpIGkmc2Nhcm9uOyBuYXVqbyBrZWlraWFuxI1pb3NlIHBlciBzdWJrYXRlZ29yaWphcy4gJlNjYXJvbjtpcyBlbGdlc3lzIGdhbGkgYsWrdGkgZm9ybXVvdGFzIHBhZ3JpbmR1IHBlciBrYXRlZ29yaWrEhS48L3A+DQo8cD5UYWlwIHBhdCB5cmEgU3BhdXNkaW50aW5hcyBLYXRhbG9nYXMsIGt1cmlzIGF0c3RvdmF1amEgdmlzYWkga29sZWtjaWphaSBLYXRhbG9nbyBlbGVtZW50xbMgIHZpZW5hbSBwdXNsYXBpdWkgKHRhaSAmc2Nhcm9uO2l1byBtZXR1IMSvZ3l2ZW5kaW5hbWEgYmFpc2lhaSwgaXIgcGFrcmF1cyBsxJd0YWkpLjwvUD4NCjxwPlRoZSBtb2R1bGUgaGFzIGJ1aWx0LWluIHN1cHBvcnQgZm9yICZxdW90O0NvbnRlbnQgQWxpYXNlcyZxdW90OyAoYSBtb2R1bGUgYXZhaWxhYmxlIGF0IDxhIGhyZWY9JnF1b3Q7aHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jb250ZW50YWxpYXNlcy8mcXVvdDs+dGhlIERldmVsb3BlciBGb3JnZTwvYT4pLCB3aGljaCBhbGxvd3MgeW91IHRvIHBsYWNlIGFueSBDYXRhbG9nIEl0ZW0gaW50byBtdWx0aXBsZSBDYXRhbG9nIENhdGVnb3JpZXMuPC9wPg0KPGgzPkthaXAgasSvIG5hdWRvdGk8L2gzPg0KPHA+S2FpIGrFq3MgxK9kaWVnaWF0ZSAmc2Nhcm9uO8SvIG1vZHVsxK8sIGppcyBrdXJpYSB0cmlzIG5hdWp1cyBUdXJpbmlvIFRpcHVzOiBLYXRhbG9nbyBlbGVtZW50YXMsIEthdGFsb2dvIEthdGVnb3JpamEsIGlyIFNwYXVzZGludGluYXMgS2F0YWxvZ2FzLiBLYWkgasWrcyBlc2F0ZSBzYXZvIHN2ZXRhaW7El3MgYWRtaW5pc3RyYWNpam9zIGthdGVnb3Jpam9qZSwgasWrcyBwcmlkZWRhdGUgS2F0YWxvZ28gZWxlbWVudHVzIGlyIEthdGFsb2dvIEthdGVnb3JpamFzIGthaXAgdGlrIHRhaXAsIGthaXAgasWrcyBiZXQga29raWEga2l0YSBwdXNsYXBpbyByxasmc2Nhcm9uO2lzLiBJJnNjYXJvbjtyaW5raXRlIFR1cmluxK8+LCBQdXNsYXBpYWk+IFByaWTEl3RpIFR1cmluxK8sIGlyIHBhc2t1aSByZW5rYSAmcXVvdDtLYXRhbG9nbyBlbGVtZW50YXMgJnF1b3Q7IGFyICZxdW90O0thdGFsb2dvIEthdGVnb3JpasSFJnF1b3Q7IG51byB0dXJpbmlvIFRpcG8gcHVsbGRvd24uPC9wPg0KPHA+Q2F0YWxvZyBJdGVtczwvcD4NCjxwPkFkZGluZyBhIENhdGFsb2cgSXRlbSBpcyBzaW1pbGFyIHRvIGFkZGluZyBhbiBvcmRpbmFyeSBwYWdlIHRvIHlvdXIgc2l0ZS4gVGhlIGRhdGEgZmllbGRzIGZvciB0aGUgSXRlbSBhcmUgbm90IGV4YWN0bHkgdGhlIHNhbWUsIGhvd2V2ZXIuIEFsc28gbm90ZSB0aGF0IGluIHRoZSAmcXVvdDtJbWFnZXMmcXVvdDsgdGFiLCB5b3UgY2FuIHNlbGVjdCBtdWx0aXBsZSBpbWFnZXMgdG8gdXBsb2FkIGZvciB0aGUgaXRlbS4gV2hlbiB5b3UgdXBsb2FkIGltYWdlcywgdGhlIHN5c3RlbSB3aWxsIHNpemUgdGhlbSBhcHByb3ByaWF0ZWx5IGZvciB0aGUgY2F0YWxvZywgY3JlYXRlIHRodW1ibmFpbHMgZm9yIHVzZSBpbiB0aGUgSXRlbSYjMDM5O3MgcGFnZSwgY3JlYXRlIHRodW1ibmFpbHMgZm9yIGFueSBDYXRlZ29yeSBwYWdlcywgYW5kIHNvIG9uLiBUaGlzIHJlcXVpcmVzIHRoYXQgeW91IGhhdmUgR0Qgb3IgYSBzaW1pbGFyIGltYWdlIGxpYnJhcnkgaW5zdGFsbGVkLiBDdXJyZW50bHksIG9ubHkganBlZyBmb3JtYXQgaW1hZ2VzIGFyZSBzdXBwb3J0ZWQuPC9wPg0KPGg0PkNhdGFsb2cgQ2F0ZWdvcmllczwvaDQ+DQo8cD5BIENhdGFsb2cgQ2F0ZWdvcnkgaXMgdXNlZCBmb3Igb3JnYW5pemluZyB5b3VyIGNhdGFsb2cgaXRlbXMuIEl0IHByb3ZpZGVzIGEgcGFnZSB0aGF0IGxpc3RzIENhdGFsb2dlciBjb250ZW50IHRoYXQgaXMgY29udGFpbmVkIGJ5IGl0LiBBIENhdGFsb2cgSXRlbSBpcyBjb25zaWRlcmVkIHRvIGJlIHBhcnQgb2YgYSBDYXRhbG9nIENhdGVnb3J5IGlmIGl0IGlzIGJlbG93IHRoYXQgQ2F0ZWdvcnkgaW4gdGhlIFNpdGUgSGllcmFyY2h5LiBDYXRlZ29yaWVzIGNhbiBzaW1pbGFybHkgaW5jbHVkZSBvdGhlciBDYXRlZ29yaWVzLjwvcD4NCjxwPkNhdGFsb2cgQ2F0ZWdvcmllcyBoYXZlIGEgbnVtYmVyIG9mIHNldHRpbmdzIHRvIGRldGVybWluZSBob3cgdGhleSBzaG91bGQgZGlzcGxheSB0aGUgSXRlbXMgYW5kIENhdGVnb3JpZXMgdGhleSBjb250YWluOiBpZiB5b3UgbG9vayBhdCB0aGUgJnF1b3Q7T3B0aW9ucyZxdW90OyB0YWIsIHlvdSBjYW4gY2hvb3NlIGhvdyBtYW55IGl0ZW1zIGFuZC9vciBjYXRlZ29yaWVzIHRvIHNob3csIHdoYXQgb3JkZXIgdG8gc2hvdyB0aGVtIGluLCB3aGV0aGVyIHRvIGRpc3BsYXkgb25seSBpdGVtcyBvciBvbmx5IGNhdGVnb3JpZXMgb3IgYm90aCwgYW5kIGhvdyBtYW55IGxldmVscyBvZiB0aGUgaGllcmFyY2h5IHRvIGRpc3BsYXkgYmVsb3cgdGhlIGNhdGVnb3J5IHBhZ2UuPC9wPg0KPHA+Rm9yIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOjwvcD4NCjxvbD4NCgk8bGk+PGI+SGF0czwvYj4NCgkJPG9sPg0KCQkJPGxpPjxiPkZhc2hpb248L2I+DQoJCQkgCTxvbD4NCgkJCSAJCTxsaT5GZWF0aGVyZWQgSGF0PC9saT48bGk+RmVkb3JhIDwvbGk+PGxpPkJhc2ViYWxsIEhhdDwvbGk+DQoJCQkgCTwvb2w+DQoJCSAgPC9saT4NCgkJIAk8bGk+PGI+V29yayBIYXRzPC9iPg0KCQkgICAgCTxvbD4NCgkJICAgIAkJPGxpPkhhcmQgSGF0PC9saT48bGk+RGl2aW5nIEhlbG1ldDwvbGk+DQoJCSAgICAJPC9vbD4NCgkJICAgIDwvbGk+DQoJCTwvb2w+DQoJPC9saT4NCjwvb2w+DQoNCjxwPkluIHRoaXMgZGlhZ3JhbSwgYm9sZGVkIGl0ZW1zIGFyZSBDYXRhbG9nIENhdGVnb3JpZXMsIGFuZCBub24tYm9sZGVkIGl0ZW1zIGFyZSBDYXRhbG9nIEl0ZW1zLiBEZXBlbmRpbmcgdXBvbiBob3cgeW91IHNldCB5b3VyIG9wdGlvbnMsIHRoZSBIYXRzIENhdGVnb3J5IFBhZ2UgY2FuIHNob3cgb25seSBlbnRyaWVzIGZvciB0aGUgRmFzaGlvbiBhbmQgV29yayBIYXRzIENhdGVnb3J5IFBhZ2VzLCBvciBpdCBjYW4gc2hvdyBlbnRyaWVzIGZvciBGYXNoaW9uLCBXb3JrIEhhdHMsIGFuZCBhbGwgdGhlIGhhdHMgbGlzdGVkIGJlbG93IHRoZW0uPC9wPg0KPHA+WW91IGNhbiBvcHQgdG8gc2hvdyB0aGUgaXRlbXMgaW4gJnF1b3Q7bmF0dXJhbCZxdW90OyBvcmRlciAoaS5lLiwgdGhlIG9yZGVyIHRoZSBJdGVtcyBzaG93IHVwIGluIHRoZSBDTVMgQ29udGVudCBIaWVyYXJjaHkpLCBvciBpbiBhbHBoYWJldGljYWwgb3JkZXIuPC9QPg0KPHA+SWYgeW91IGhhdmUgbGFyZ2UgbnVtYmVycyBvZiBpdGVtcyBpbiBhIENhdGVnb3J5LCB5b3UgY2FuIHNldCB0aGUgbWF4aW11bSBudW1iZXIgdG8gYmUgZGlzcGxheWVkIGluIGEgQ2F0ZWdvcnkgUGFnZSwgYW5kIHRoZSBwYWdlIHdpbGwgYXV0b21hdGljYWxseSBjcmVhdGUgbGlua3MgdG8gbmF2aWdhdGUgdGhyb3VnaCB0aGUgbGlzdC48L3A+DQo8cD5FYWNoIENhdGVnb3J5IHBhZ2UgY2FuIGhhdmUgZGlmZmVyZW50IHNldHRpbmdzIGZvciBzb3J0IG9yZGVyLCBsZXZlbHMgdG8gZGlzcGxheSwgYW5kIG51bWJlciBvZiBpdGVtcy4gWW91IGNhbiBzZXQgdGhlIGRlZmF1bHQgZm9yIHRoZXNlIHZhbHVlcyBpbiBFeHRlbnNpb25zID4gQ2F0YWxvZ2VyID4gTWFuYWdlIFByZWZlcmVuY2VzLiBJZiwgYXQgYSBsYXRlciBkYXRlLCB5b3Ugd2lzaCB0byBjaGFuZ2Ugc29tZSBzZXR0aW5nIG9uIGFsbCBvZiB5b3VyIENhdGVnb3J5IHBhZ2VzLCB5b3UgY2FuIGdvIGludG8gRXh0ZW5zaW9ucyA+IENhdGFsb2dlciA+IEdsb2JhbCBDYXRhbG9nIE9wdGlvbnMsIGFuZCBtYWtlIHRob3NlIGNoYW5nZXMuPC9wPg0KPGg0PkltYWdlczwvaDQ+DQo8cD5DYXRhbG9nZXIgYWxsb3dzIHlvdSB0byBzZWxlY3QgZGlmZmVyZW50IHNpemUgaW1hZ2VzIGZvciBJdGVtIHBhZ2VzLCBDYXRlZ29yeSBwYWdlcywgYW5kIHRoZSBQcmludGFibGUgQ2F0YWxvZy4gWW91IGNhbiBzZXQgdGhlc2UgZGVmYXVsdHMgaW4gRXh0ZW5zaW9ucyA+IENhdGFsb2dlciA+IE1hbmFnZSBQcmVmZXJlbmNlcy48L3A+DQo8cD5XaGVuIHlvdSB1cGxvYWQgaW1hZ2VzLCB0aGUgb3JpZ2luYWwgaXMgc3RvcmVkLiBXaGVuIHNvbWVvbmUgdmlzaXRzIGEgcGFnZSwgdGhlIHJlZHVjZWQgc2l6ZSBpbWFnZXMgYXJlIHJlcXVlc3RlZCB1c2luZyBhIHNwZWNpYWwgVVJMLCB3aGljaCB3aWxsIHJlZGlyZWN0IHRoZSB1c2VyJiMwMzk7cyBicm93c2VyIHRvIHRoZSBzY2FsZWQgaW1hZ2UgaWYgaXQgZXhpc3RzLCBhbmQgY3JlYXRpbmcgdGhlIHNjYWxlZCBpbWFnZSBpZiBpdCBkb2VzbiYjMDM5O3QuIFRoaXMgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgaW1hZ2VzLCB3aXRob3V0IGhhdmluZyB0byByZS11cGxvYWQgYWxsIHRoZSBpbWFnZXMsIG9yIHJlc2NhbGluZyB0aGVtIGFsbCBhdCBvbmNlLjwvcD4NCjxwPlRoaXMgaW1hZ2UgcmVzY2FsaW5nIGNvZGUgcmVxdWlyZXMgdGhhdCB5b3UgaGF2ZSBlaXRoZXIgSW1hZ2VNYWdpY2sgb3IgR0QgbGliIGluc3RhbGxlZCwgYW5kIGNvbmZpZ3VyZWQgaW4geW91ciBDTVMgTWFkZSBTaW1wbGUgY29uZmlnLnBocC48L3A+DQo8aDM+RmVhdHVyZSBMaXN0czwvaDM+DQo8cD5Zb3UgY2FuLCBhcyBvZiB2ZXJzaW9uIDAuNCwgaGF2ZSAmcXVvdDtmZWF0dXJlIGxpc3RzJnF1b3Q7IHdoaWNoIGFyZSB0aGUgPGk+bjwvaT4gbW9zdC1yZWNlbnRseSBhZGRlZCBjYXRhbG9nIGl0ZW1zLCBvciBhIGNvbGxlY3Rpb24gb2YgPGk+azwvaT4gcmFuZG9tIGl0ZW1zIGZyb20gdGhlIGNhdGFsb2cuPC9wPg0KPGg0PiZxdW90O0FsbCZxdW90OyBGZWF0dXJlIExpc3Q8L2g0Pg0KPHA+VG8gZ2V0IGEgbGlzdCBvZiBhbGwgY2F0YWxvZyBpdGVtcyAob3B0aW9uYWxseSB1bmRlciBhIHNwZWNpZmllZCBwYXJ0IG9mIHlvdXIgaGllcmFyY2h5KSBmb3IgcHJvY2Vzc2luZyB2aWEgYSB0ZW1wbGF0ZSwgeW91IGNhbiB1c2UNCnRoZSAmcXVvdDthbGwmcXVvdDsgZmVhdHVyZSBsaXN0LjwvcD4NCjxwPlRoZSBzeW50YXggZm9yIGFuICZxdW90O2FsbCZxdW90OyBsaXN0IGlzIGxpa2U6PC9wPg0KPHA+e2Ntc19tb2R1bGUgbW9kdWxlPSYjMDM5O0NhdGFsb2dlciYjMDM5OyBhY3Rpb249JiMwMzk7YWxsJiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTt9LCB3aGVyZSBzdWJfdGVtcGxhdGUgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGxpc3QuDQpUaGVyZSBpcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIsIGFsaWFzPSYjMDM5O3BhZ2VfYWxpYXMmIzAzOTssIHdoZXJlIHBhZ2VfYWxpYXMgaW5kaWNhdGVzIHRoZSB0b3Agb2YgdGhlIHRyZWUgKGUuZy4sIGEgcGxhY2UgaW4geW91ciBtZW51DQpoaWVyYXJjaHksIHR5cGljYWxseSBhIGNhdGVnb3J5IHBhZ2UpIGluIHdoaWNoIHRvIGxvb2sgZm9yIG5ldyBpdGVtcy4gQSBzcGVjaWFsIHZhbHVlIGZvciAmcXVvdDtwYWdlX2FsaWFzJnF1b3Q7IGlzICZxdW90Oy8mcXVvdDssIHdoaWNoIG1lYW5zIHRvDQpzdGFydCBhdCB0aGUgcm9vdC48L3A+DQo8cD5UaGlzIGlzIHVzZWZ1bCBmb3IgY2F0YWxvZy13aWRlIG9wZXJhdGlvbnMuIEZvciBleGFtcGxlLCB0byBnZXQgYSBsaXN0IG9mIGFsbCBjYXRlZ29yaWVzIChhbmQgZG8gc29tZXRoaW5nIHdpdGggdGhlbSksDQp5b3UgY291bGQgdXNlIHRoZSB0YWcge2Ntc19tb2R1bGUgbW9kdWxlPSYjMDM5O0NhdGFsb2dlciYjMDM5OyBhY3Rpb249JiMwMzk7YWxsJiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTsgYWxpYXM9JiMwMzk7LyYjMDM5OyByZWN1cnNlPSYjMDM5O2NhdGVnb3JpZXNfYWxsJiMwMzk7fS4gWW91ciB0ZW1wbGF0ZSBjb3VsZCB0aGVuIHRocm93DQp0aG9zZSBjYXRlZ29yaWVzIGludG8gYSBwdWxsZG93biBtZW51IHRoYXQgcmVkaXJlY3RlZCB5b3UgdG8gdGhhdCBjYXRlZ29yeSYjMDM5O3MgcGFnZSwgZm9yIGV4YW1wbGU6PC9wPg0KPHByZT4NCjxzZWxlY3QgbmFtZT0mcXVvdDtmb28mcXVvdDsgb25jaGFuZ2U9JnF1b3Q7ZG9jdW1lbnQubG9jYXRpb249dGhpcy5vcHRpb25zW3RoaXMuc2VsZWN0ZWRJbmRleF0udmFsdWU7JnF1b3Q7Pg0KPG9wdGlvbiB2YWx1ZT0mcXVvdDsmcXVvdDs+U2VsZWN0IEEgdGFyZ2V0PC9vcHRpb24+DQp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPXRoaXNvbmV9DQogICA8b3B0aW9uIHZhbHVlPSZxdW90O3skdGhpc29uZS5saW5rfSZxdW90Oz57JHRoaXNvbmUudGl0bGV9PC9vcHRpb24+DQp7L2ZvcmVhY2h9DQo8L3NlbGVjdD4NCjwvcHJlPg0KPHA+SWYgeW91IHdhbnRlZCB0aGF0IHRvIG9ubHkgc2hvdyBjYXRlZ29yaWVzIHRoYXQgd2VyZSBpbiB0aGUgdmVyeSB0b3AgbGV2ZWwgb2YgeW91ciBoZWlyYXJjaHksIHlvdSYjMDM5O2QgcmVwbGFjZSB0aGUgcmVjdXJzZT0mIzAzOTtjYXRlZ29yaWVzX2FsbCYjMDM5OyB3aXRoDQpyZWN1cnNlPSYjMDM5O2NhdGVnb3JpZXNfb25lJiMwMzk7LiBPciBpZiB5b3Ugd2FudGVkIGl0IHRvIGJlIGFsbCBjYXRhbG9nIEl0ZW1zIGluc3RlYWQgb2YgY2F0ZWdvcmllcywgeW91IGNvdWxkIHVzZSBhIHRhZyBsaWtlOg0Ke2Ntc19tb2R1bGUgbW9kdWxlPSYjMDM5O0NhdGFsb2dlciYjMDM5OyBhY3Rpb249JiMwMzk7YWxsJiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTsgYWxpYXM9JiMwMzk7LyYjMDM5OyByZWN1cnNlPSYjMDM5O2l0ZW1zX2FsbCYjMDM5O30NCjxwPlNpbWlsYXJseSwgeW91IGNvdWxkIGhhdmUgaXQgbGlzdCBvbmx5IGNhdGVnb3JpZXMgdW5kZXIgdGhlIGN1cnJlbnQgcGFnZSAoYnkgb21pdHRpbmcgdGhlICZxdW90O2FsaWFzPSYjMDM5Oy8mIzAzOTsmcXVvdDspLiBUaGUgY29tYmluYXRpb25zIGFyZSBiYXNpY2FsbHkgbGltaXRsZXNzITwvcD4NCjxwPkFsbCBzdXBwb3J0ZWQgdmFsdWVzIG9mIHJlY3Vyc2UgaW5jbHVkZTo8dWw+DQo8bGk+aXRlbXNfb25lIC0gQ2F0YWxvZyBpdGVtcywgbm8gbW9yZSB0aGFuIG9uZSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KPGxpPml0ZW1zX2FsbCAtIENhdGFsb2cgaXRlbXMsIGF0IGFueSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KPGxpPmNhdGVnb3JpZXNfb25lIC0gQ2F0ZWdvcmllcywgbm8gbW9yZSB0aGFuIG9uZSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KPGxpPmNhdGVnb3JpZXNfYWxsIC0gQ2F0ZWdvcmllcywgYXQgYW55IGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+bWl4ZWRfb25lIC0gQ2F0YWxvZyBpdGVtcyBhbmQgQ2F0ZWdvcmllcywgbm8gbW9yZSB0aGFuIG9uZSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KPGxpPm1peGVkX2FsbCAtIENhdGFsb2cgaXRlbXMgYW5kIENhdGVnb3JpZXMsIGF0IGFueSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KPC91bD4NCjwvcD4NCjxoND5SZWNlbnRseSBBZGRlZCBGZWF0dXJlIExpc3Q8L2g0Pg0KPHA+VG8gdXNlIGEgJnF1b3Q7bW9zdC1yZWNlbnRseSBhZGRlZCZxdW90OyBsaXN0IHdpbGwgYWxsb3cgeW91IHRvIGRpc3BsYXkgdGhlIG1vc3QgcmVjZW50bHktYWRkZWQgY2F0YWxvZyBpdGVtcyB1bmRlciBhIHNwZWNpZmllZCBwYXJ0IG9mIHlvdXIgaGllcmFyY2h5LjwvcD4NCjxwPlRoZSBzeW50YXggZm9yIGEgJnF1b3Q7bW9zdCByZWNlbnRseSBhZGRlZCZxdW90OyBsaXN0IGlzIGxpa2U6PC9wPg0KPHA+e2Ntc19tb2R1bGUgbW9kdWxlPSYjMDM5O0NhdGFsb2dlciYjMDM5OyBhY3Rpb249JiMwMzk7cmVjZW50JiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTt9LCB3aGVyZSBzdWJfdGVtcGxhdGUgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGxpc3QuIFRoZXJlIGFyZSB0d28gb3B0aW9uYWwgcGFyYW1ldGVycywgY291bnQ9JiMwMzk7MyYjMDM5OyBhbGlhcz0mIzAzOTtwYWdlX2FsaWFzJiMwMzk7LCB3aGVyZSBjb3VudCBpcyB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRvIGluY2x1ZGUsIGFuZCBwYWdlX2FsaWFzIGluZGljYXRlcyB0aGUgdG9wIG9mIHRoZSB0cmVlIChlLmcuLCBhIHBsYWNlIGluIHlvdXIgbWVudSBoaWVyYXJjaHksIHR5cGljYWxseSBhIGNhdGVnb3J5IHBhZ2UpIGluIHdoaWNoIHRvIGxvb2sgZm9yIG5ldyBpdGVtcy4gQSBzcGVjaWFsIHZhbHVlIGZvciAmcXVvdDtwYWdlX2FsaWFzJnF1b3Q7IGlzICZxdW90Oy8mcXVvdDssIHdoaWNoIG1lYW5zIHRvIHVzZSA8aT5hbGw8L2k+IHBhZ2VzIGluIHRoZSBzaXRlLjwvcD4NCjxoND5SYW5kb20gSXRlbXMgRmVhdHVyZSBMaXN0PC9oND4NCjxwPlRoZSBzeW50YXggZm9yIGEgJnF1b3Q7cmFuZG9tJnF1b3Q7IGxpc3QgaXMgbGlrZTo8L3A+DQo8cD57Y21zX21vZHVsZSBtb2R1bGU9JiMwMzk7Q2F0YWxvZ2VyJiMwMzk7IGFjdGlvbj0mIzAzOTtyYW5kb20mIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5O30sIHdoZXJlIHN1Yl90ZW1wbGF0ZSBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgbGlzdC4gVGhlcmUgYXJlIHR3byBvcHRpb25hbCBwYXJhbWV0ZXJzLCBjb3VudD0mIzAzOTszJiMwMzk7IGFsaWFzPSYjMDM5O3BhZ2VfYWxpYXMmIzAzOTssIHdoZXJlIGNvdW50IGlzIHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gaW5jbHVkZSwgYW5kIHBhZ2VfYWxpYXMgaW5kaWNhdGVzIHRoZSB0b3Agb2YgdGhlIHRyZWUgKGUuZy4sIGEgcGxhY2UgaW4geW91ciBtZW51IGhpZXJhcmNoeSwgdHlwaWNhbGx5IGEgY2F0ZWdvcnkgcGFnZSkgaW4gd2hpY2ggdG8gbG9vayBmb3IgbmV3IGl0ZW1zLiBBIHNwZWNpYWwgdmFsdWUgZm9yICZxdW90O3BhZ2VfYWxpYXMmcXVvdDsgaXMgJnF1b3Q7LyZxdW90Oywgd2hpY2ggbWVhbnMgdG8gdXNlIDxpPmFsbDwvaT4gcGFnZXMgaW4gdGhlIHNpdGUuPC9wPg0KPGgzPkN1c3RvbWl6YXRpb24gYW5kIEFkdmFuY2VkIFRvcGljczwvaDM+DQo8aDQ+Q2F0YWxvZyBJdGVtIEF0dHJpYnV0ZXM8L2g0Pg0KPHA+VGhlIGRlZmF1bHQgaXRlbSBhdHRyaWJ1dGVzIGFyZSB0eXBpY2FsIGZvciBhIGNhdGFsb2cgb2YgcHJvZHVjdHMgb3IgYXJ0d29ya3MsIGJ1dCBieSBnb2luZyBpbnRvIEV4dGVuc2lvbnMgPiBDYXRhbG9nZXIgPiBNYW5hZ2UgVXNlci1EZWZpbmVkIEF0dHJpYnV0ZXMsIHlvdSBjYW4gY2hhbmdlIHRoZSBhdHRyaWJ1dGVzLiBJdCYjMDM5O3MgYmVzdCB0byBkZWZpbmUgdGhlIGF0dHJpYnV0ZXMgYmVmb3JlIHlvdSBzdGFydCBlbnRlcmluZyBDYXRhbG9nIEl0ZW1zLjwvcD4NCjxwPk5vdGUgdGhhdCB0aGUgYXR0cmlidXRlcyB5b3UgZGVmaW5lIG1heSBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSB0ZW1wbGF0ZSB0aGF0IHlvdSYjMDM5O3JlIHVzaW5nIHRvIGRpc3BsYXkgQ2F0YWxvZyBJdGVtcyAtLSBzZWUgQ3VzdG9tIFRlbXBsYXRlcyBiZWxvdy48L3A+DQo8aDQ+Q2F0YWxvZyBDYXRlZ29yeSBBdHRyaWJ1dGVzPC9oND4NCjxwPlNpbWlsYXJseSwgeW91IGNhbiBzZXQgYXR0cmlidXRlcyBmb3IgQ2F0ZWdvcmllcy4gQWdhaW4sIHRoZSBhdHRyaWJ1dGVzIHlvdSBkZWZpbmUgbWF5IG5lZWQgdG8gYmUgYWRkZWQgdG8gdGhlIHRlbXBsYXRlIHRoYXQgeW91JiMwMzk7cmUgdXNpbmcgdG8gZGlzcGxheSBDYXRhbG9nIENhdGVnb3JpZXMgLS0gc2VlIEN1c3RvbSBUZW1wbGF0ZXMgYmVsb3cuPC9wPg0KPGg0PlByaW50YWJsZSBDYXRhbG9nIEF0dHJpYnV0ZXM8L2g0Pg0KPHA+TGlrZXdpc2UsIHlvdSBjYW4gc2V0IGF0dHJpYnV0ZXMgZm9yIFByaW50YWJsZSBDYXRhbG9ncy4gQWdhaW4sIHRoZSBhdHRyaWJ1dGVzIHlvdSBkZWZpbmUgbWF5IG5lZWQgdG8gYmUgYWRkZWQgdG8gdGhlIHRlbXBsYXRlIHRoYXQgeW91JiMwMzk7cmUgdXNpbmcgdG8gZGlzcGxheSB5b3VyIFByaW50YWJsZSBDYXRhbG9nIC0tIHNlZSBDdXN0b20gVGVtcGxhdGVzIGJlbG93LjwvcD4NCjxoND5DdXN0b20gVGVtcGxhdGVzPC9oND4NCjxwPklmIHlvdSYjMDM5O3JlIHdpbGxpbmcgdG8gbWVzcyBhcm91bmQgd2l0aCBTbWFydHkgVGVtcGxhdGVzLCB5b3UgY2FuIGNoYW5nZSB0aGUgbGF5b3V0IG9mIGFueSBvZiB0aGUgcGFnZXMgZ2VuZXJhdGVkIGJ5IENhdGFsb2dlci4gVGhpcyBzaG91bGQgbWFrZSBjZXJ0YWluIGRldmVsb3BlcnMgdmVyeSBoYXBweSwgZXZlbiBpZiB0aGUgaW5lZmZpY2llbmN5IG9mIHRoZSByZXN0IG9mIHRoZSBjb2RlIHdpbGwgbm90LiBUaGVyZSBhcmUgZm91ciBraW5kcyBvZiB0ZW1wbGF0ZXM6IG9uZSBraW5kIGZvciBDYXRhbG9nIEl0ZW1zLCBvbmUga2luZCBmb3IgQ2F0YWxvZyBDYXRlZ29yaWVzLCBhbmQgb25lIGtpbmQgZm9yIFByaW50YWJsZSBDYXRhbG9ncywgYW5kIG9uZSBraW5kIGZvciAmcXVvdDtGZWF0dXJlJnF1b3Q7IGxpc3RzLCBzdWNoIGFzIHJlY2VudGx5IGFkZGVkIGl0ZW1zIG9yIHJhbmRvbSBzZWxlY3Rpb25zLjwvcD4NCjxwPldoZW4gZWRpdGluZyBhIFRlbXBsYXRlLCB0aGUgYWRtaW4gc2NyZWVuIHdpbGwgZGlzcGxheSBhIGxpc3Qgb2YgU21hcnR5IHRhZ3MgYXZhaWxhYmxlIHRvIHlvdSBmb3IgdGhhdCBraW5kIG9mIHRlbXBsYXRlLiBUaGlzDQp3aWxsIG9ubHkgaGFwcGVuIG9uY2UgdGhlIG1vZHVsZSBrbm93cyB3aGF0IGtpbmQgb2YgdGVtcGxhdGUgeW91JiMwMzk7cmUgZWRpdGluZywgc28gd2hlbiB5b3UgZmlyc3QgY3JlYXRlIHRoZSB0ZW1wbGF0ZSwgaXQgZGlzcGxheXMgYWxsDQp0aGUgU21hcnR5IHRhZ3MgaXQga25vd3MgYWJvdXQsIG9ubHkgc29tZSBvZiB3aGljaCBiZWluZyBhcHBsaWNhYmxlLjwvcD4NCjxoND5TbWFydHkgdGFncyBpbiBBdHRyaWJ1dGVzPC9oND4NCjxwPlNvbWV0aW1lcywgeW91JiMwMzk7bGwgd2FudCB0aGUgZGVzY3JpcHRpb25zIG9mIHlvdXIgaXRlbXMgdG8gaW5jbHVkZSBzbWFydHkgdGFncyAoZS5nLiwgY21zX3NlbGZsaW5rKS4gVG8gbWFrZSB0aGF0IHdvcmssIHlvdSYjMDM5O2xsIG5lZWQgdG8NCnVwZGF0ZSB5b3VyIHRlbXBsYXRlLiBGb3IgdGhlIGF0dHJpYnV0ZXMgd2hlcmUgeW91IHdhbnQgc21hcnR5IHRhZ3MgdG8gYmUgYWN0aXZlLCB5b3UmIzAzOTtsbCBuZWVkIHRvIG5lc3QgdGhlIHNtYXJ0eSBldmFsdWF0aW9ucyBpbiB5b3VyIHRlbXBsYXRlLiBGb3IgZXhhbXBsZTo8L3A+DQo8cHJlPg0Ke2V2YWwgdmFyPSRhdHRybGlzdFthdF0ua2V5fQ0KPC9wcmU+DQo8cD5iZWNvbWVzOjwvcD4NCjxwcmU+DQp7ZXZhbCB2YXI9JGVudHJ5LT5pbnB1dCBhc3NpZ249dGhpc0F0dHJ9e2V2YWwgdmFyPSR0aGlzQXR0cn0NCjwvcHJlPg0KPHA+VWdseT8gWXVwLiBCdXQgaXQgd29ya3MuPC9wPg0KPGgzPkNhdGFsb2dlciBJbWFnZSBTeXN0ZW08L2gzPg0KPHA+Q2F0YWxvZ2VyIGhhcyBhbiBpbWFnZSBzeXN0ZW0gdGhhdCB3aWxsIGFsbG93IHlvdSB0byBkeW5hbWljYWxseSBjaGFuZ2UgdGhlIGltYWdlIGRpc3BsYXkgc2l6ZS4gSWYgeW91IGRvIG5vdCBsaWtlIGl0LCB5b3UgY2FuIGFsdGVyDQp0aGUgdGVtcGxhdGVzIGFuZCB1c2UgYW55IGltYWdlIHN5c3RlbSB5b3Ugd2FudC48L3A+DQo8cD5XaGVuIHlvdSB1cGxvYWQgYW4gaW1hZ2UgdXNpbmcgQ2F0YWxvZ2VyLCBpdCBnZXRzIHB1dCBpbiBhIHNwZWNpYWwgc2V0IG9mIGRpcmVjdG9yaWVzIHRvIG1ha2UgdGhlIGltYWdpbmcgZWFzaWVyLiBZb3Ugd2lsbCBzZWUgbW9yZQ0KYWJvdXQgdGhpcyBsYXRlci48L3A+DQo8cD5JdCB3b3JrcyBieSBjYWxsaW5nIGEgUEhQIHByb2dyYW0gaW5zdGVhZCBvZiBkaXJlY3RseSByZWZlcmVuY2luZyB0aGUgaW1hZ2UuIFRoZSBwcm9ncmFtIHVzZXMgdGhlIGZpbGVuYW1lIHRvIHNlZSBpZiB0aGUNCmltYWdlIGFscmVhZHkgZXhpc3RzIGluIHRoZSBjb3JyZWN0IHNpemUuIElmIHNvLCBpdCByZWRpcmVjdHMgdG8gdGhhdCBpbWFnZS4gT3RoZXJ3aXNlLCBpdCB1c2VzIHlvdXIgR0RMSUIgb3IgSW1hZ2VNYWdpY2sgdG8gY3JlYXRlDQp0aGUgaW1hZ2UgaW4gdGhlIGNvcnJlY3Qgc2l6ZSwgYW5kIHRoZW4gcmVkaXJlY3RzIHRvIGl0Lg0KPC9wPg0KPGg0PkNhdGFsb2dlciBJbWFnZSBGaWxlc3BlYyBFeHBsYW5hdGlvbjwvaDQ+DQo8cD5BIGNhdGFsb2dlciBpbWFnZSBoYXMgYSBmaWxlc3BlYyBsaWtlOg0KPGJyIC8+DQpyb290X3BhdGgvbW9kdWxlcy9DYXRhbG9nZXIvQ2F0YWxvZ2VyLkltYWdlLnBocD9pPWl0ZW1uYW1lX2ZfMV80MDBfMS5qcGcmYW1wO2FjPTgyODg4DQo8L3A+DQo8cD5UaGUgaW50ZXJlc3RpbmcgdGhpbmcgaXMgJnF1b3Q7aXRlbW5hbWVfZl8xXzQwMF8xLmpwZyZxdW90OyAtIHRoZSBzdHVmZiBiZWZvcmUgaXMganVzdCBhIGNhbGwgdG8gdGhlIHByb2dyYW0sIGFuZCB0aGUgJmFtcDthYz04Mjg4OCBpcyBhIHJhbmRvbSB0aGluZyB0aGF0DQppcyBkZXNpZ25lZCB0byBwcmV2ZW50IGJyb3dzZXIgY2FjaGluZy4gU28gZXhhbWluaW5nIHRoZSBuYW1lIHBpZWNlIGJ5IHBpZWNlIChzZXBhcmF0aW5nIGF0IHRoZSB1bmRlcnNjb3JlcyksIHdlIGhhdmU6PC9wPg0KPHVsPg0KPGxpPml0ZW0gbmFtZSAtIHRoaXMgaXMgdGhlIGFsaWFzIG9mIHRoZSBpdGVtL2NhdGVnb3J5IHBhZ2UgY29udGFpbmluZyB0aGUgaW1hZ2UuPC9saT4NCjxsaT5pbWFnZSB0eXBlIC0gdGhpcyBpcyBhIGRlc2lnbmF0aW9uIGZvciBpbWFnZSB0eXBlOjx1bD4NCjxsaT5mIC0gaXRlbSBmdWxsLXNpemUgaW1hZ2U8L2xpPg0KPGxpPnQgLSBpdGVtIHRodW1ibmFpbDwvbGk+DQo8bGk+Y2YgLSBjYXRlZ29yeSBmdWxsLXNpemVkIGltYWdlPC9saT4NCjxsaT5jdCAtIGNhdGVnb3J5IHRodW1ibmFpbDwvbGk+DQo8bGk+Y3RmIC0gcHJpbnRhYmxlIGNhdGFsb2cgZnVsbC1zaXplZCBpbWFnZTwvbGk+DQo8L3VsPg0KPC9saT4NCjxsaT5pbWFnZSBudW1iZXIgLSBzbyBhIGdpdmVuIGl0ZW0vY2F0YWxvZy9ldGMgY2FuIGhhdmUgbXVsdGlwbGUgaW1hZ2VzPC9saT4NCjxsaT5sb25nIGRpbWVuc2lvbiAtIGxvbmcgZGltZW5zaW9uIG9mIHRoZSBpbWFnZSwgaW4gcGl4ZWxzPC9saT4NCjxsaT5taXNzaW5nIGZsYWcgLSAxIGlmIHlvdSB3YW50IHRvIHNob3cgYW4gJnF1b3Q7aW1hZ2UgbWlzc2luZyZxdW90OyBpbWFnZSBpZiB0aGlzIGltYWdlIGRvZXNuJiMwMzk7dCBleGlzdCwgMCBvdGhlcndpc2U8L2xpPg0KPC91bD4NCjxwPg0KVGhpcyB3aWxsIHRha2UgYW4gaW1hZ2UgaW4gcm9vdF9wYXRoL3VwbG9hZHMvaW1hZ2VzL2NhdGFsb2dfc3JjL2l0ZW1uYW1lX3NyY18xDQo8L3A+DQo8aDM+U3VwcG9ydDwvaDM+DQo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+DQo8dWw+DQo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgQ01TIE1hZGUgU2ltcGxlICA8YSBocmVmPSZxdW90O2h0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcmcXVvdDs+RGV2ZWxvcGVyIEZvcmdlPC9hPi48L2xpPg0KPGxpPlRvIG9idGFpbiBjb21tZXJjaWFsIHN1cHBvcnQsIHBsZWFzZSBzZW5kIGFuIGVtYWlsIHRvIHRoZSBhdXRob3IgYXQgPGEgaHJlZj0mcXVvdDttYWlsdG86c2pnQGNtc21vZHVsZXMuY29tJnF1b3Q7PjxzamdAY21zbW9kdWxlcy5jb20+PC9hPi48L2xpPg0KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0mcXVvdDtodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmcmcXVvdDs+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjxsaT5UaGUgYXV0aG9yIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0mcXVvdDtpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMmcXVvdDs+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPg0KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yIGRpcmVjdGx5IGFuZCBncm92ZWxsaW5nIGZvciBmcmVlIHN1cHBvcnQuPC9saT4NCjwvdWw+DQo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQNCm9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4NCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA3LCBTYW11ZWwgR29sZHN0ZWluIDxhIGhyZWY9JnF1b3Q7bWFpbHRvOnNqZ0BjbXNtb2R1bGVzLmNvbSZxdW90Oz48c2pnQGNtc21vZHVsZXMuY29tPjwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSZxdW90O2h0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCZxdW90Oz5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPg0KJzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4NCjxsaT5WZXJzaW9uIDAuNiAtIDI5IERlY2VtYmVyIDIwMDcuIDx1bD4NCjxsaT5CdWcgZml4OiBJbWFnZXMgZG9uJiMwMzk7dCBnZXQgJnF1b3Q7bG9zdCZxdW90OyB3aGVuIHBhZ2UgYWxpYXMgY2hhbmdlcy48L2xpPg0KPGxpPkJ1ZyBmaXg6IEF0dHJpYnV0ZSBjb250ZW50IGRvZXNuJiMwMzk7dCBnZXQgJnF1b3Q7bG9zdCZxdW90OyB3aGVuIGF0dHJpYnV0ZXMgYXJlIHJlbmFtZWQuPC9saT4NCjxsaT5CdWcgZml4OiBGaXhlZCBQcmludGFibGUgQ2F0YWxvZy4gV29ya3MgZm9yIGZpcnN0IHRpbWUgc2luY2Ugdi4wLjQgb3IgdGhlcmVhYm91dHMuPC9saT4NCjxsaT5CdWcgZml4OiBOb3cgaG9ub3JzIHN5c3RlbSBwcmVmZXJlbmNlIGZvciBXWVNJV1lHIGVkaXRpbmcgb2YgdGV4dCBhcmVhcy48L2xpPg0KPGxpPkZlYXR1cmU6IEF0dHJpYnV0ZXMgbWF5IG5vdyBiZSB0ZXh0IGFyZWFzLjwvbGk+DQo8L3VsPg0KPC9saT4NCjxsaT5WZXJzaW9uIDAuNS42IC0gMTAgRGVjZW1iZXIgMjAwNy4gVGFyZHkgcm9sbG91dCBvZiBmaXhlczogPHVsPg0KPGxpPkFkZGVkIGNvZGUgdG8gcHJldmVudCBzaG93aW5nIG9mIG5vbi11cGxvYWRlZCBpbWFnZXMsIGNhdGVnb3J5IHBhZ2UgYnVmZmVyIGZsdXNoaW5nIGZvciBleHRyZW1lIGNhc2VzLCBtaW5vciBidWcgZml4ZXM8L2xpPg0KPGxpPkZpeCBmb3IgJiMwMzk7cmVjZW50JiMwMzk7IGFjdGlvbiB3aGVuIGFsaWFzIGlzIC88L2xpPg0KPGxpPkZpeCBmb3IgdGhlIHByb2JsZW0gd2hlcmUgY2F0YWxvZ3Mgd2l0aCBtb3JlIHRoYW4gdGVuIGNhdGVnb3JpZXMgaGF2ZSBpdGVtcyBkaXNwbGF5ZWQgaW4gaW5jb3JyZWN0IGNhdGVnb3JpZXM8L2xpPjwvdWw+PC9saT4NCjxsaT5WZXJzaW9uIDAuNS41IC0gMjAgSnVuZSAyMDA3LiBGaXggZm9yIENvbnRlbnQgQWxpYXMgc3VwcG9ydCAtIHJlcXVpcmVzIENvbnRlbnQgQWxpYXMgdi4gMC42LjEuPC9saT4NCjxsaT5WZXJzaW9uIDAuNS40IC0gMTkgSnVuZSAyMDA3LiBBZGRlZCAmcXVvdDthbGwmcXVvdDsgZmVhdHVyZSBsaXN0LjwvbGk+DQo8bGk+VmVyc2lvbiAwLjUuMyAtIDIxIFNlcHRlbWJlciAyMDA2LiBBZGRlZCBsaW5rcyB0byBzb3VyY2UgKG5vbi1yZXNjYWxlZCkgaW1hZ2VzLCBhbmQgYWRkZWQgaW1hZ2UgZGVsZXRlIGZ1bmN0aW9uYWxpdHkuPC9saT4NCjxsaT5WZXJzaW9uIDAuNS4yIC0gMTcgU2VwdGVtYmVyIDIwMDYuIFJlbW92ZWQgZGVidWcgb3V0cHV0LCByZXZpc2VkIGltYWdlIHN5c3RlbSAoZml4ZWQgYnVncykuIENhY2hpbmcgYnVnIHNlZW1zIHRvIHJlbWFpbi48L2xpPg0KPGxpPlZlcnNpb24gMC41LjEgLSAyNCBBdWd1c3QgMjAwNi4gKGNhbGd1eTEwMDApLCBVcHBlZCBNaW5pbXVtQ01TVmVyc2lvbiB0byAxLjAtc3ZuLCBhbmQgbW9yZSAxLjAgY2hhbmdlcyB3ZXJlIGFkZGVkIChyZW1vdmVkIHN0YXRpYyBtZXRob2RzKTwvbGk+DQo8bGk+VmVyc2lvbiAwLjUgLSAxNiBBdWd1c3QgMjAwNi4gQXNzb3J0ZWQgY29udHJpYnV0ZWQgYnVnIGZpeGVzIGZvciBDTVMgTVMgMS4wLCAgbmV3IG9wdGlvbnMgZm9yIGltYWdlcy48L2xpPg0KPGxpPlZlcnNpb24gMC40LjIgLSAyOCBNYXkgMjAwNi4gQnVnIGZpeCBmb3IgYXR0cmlidXRlcyBpbiBjYXRlZ29yeSBwYWdlcy4gQWRkZWQgJnF1b3Q7LyZxdW90OyBwYWdlX2FsaWFzIGZvciBmZWF0dXJlIGxpc3RzLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjQuMSAtIDIzIE1heSAyMDA2LiBCdWcgZml4IHRvIG1ha2Ugd29yayB3aXRoIG9sZGVyIHZlcnNpb25zIG9mIENNUyBNUy48L2xpPg0KPGxpPlZlcnNpb24gMC40IC0gMjIgTWF5IDIwMDYuIEJ1ZyBmaXhlcywgRmVhdHVyZSBMaXN0cy48L2xpPg0KPGxpPlZlcnNpb24gMC4zIC0gKHVucmVsZWFzZWQsIHB1Ymxpc2hlZCBmcm9tIHN2bik8L2xpPg0KPGxpPlZlcnNpb24gMC4yIC0gMjMgTWFyY2ggMjAwNi4gTnVtZXJvdXMgYnVnIGZpeGVzLiBQZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMuIE1lbW9yeSBmb290cHJpbnQgb3B0aW1pemF0aW9ucy4gTm93IHVzZXMgdGhlIENNUyAwLjEyIE1vZHVsZSBBUEkuPC9saT4NCjxsaT5WZXJzaW9uIDAuMS41IC0gMTcgTm92ZW1iZXIgMjAwNS4gSW5pdGlhbCBSZWxlYXNlLiBKZXN1cywgdGhhdCB0b29rIGEgbG9uZyB0aW1lLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjEgLSAxOSBNYXJjaCAyMDA1LiBQcm9qZWN0IEluaXRpYXRpb24uPC9saT4NCjwvdWw+JzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnxK5zaXRpa2l0ZSwga2FkICZxdW90O01vZGlmeSBDYXRhbG9nIFNldHRpbmdzJnF1b3Q7IGxlaWRpbWFzIHN1dGVpa3RhcyB2YXJ0b3RvamFtcyBrdXJpZSBhZG1pbmlzdHJ1b3Mga2F0YWxvZ8SFLic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjIxMzE1MTk1MzIuMTIwMTYyMTUxOS4xMjAyMTEyMzg2LjEyMDIxMjAzMTEuOCc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyMDE3OTI4NDYuNi42LnV0bWNjbj0ocmVmZXJyYWwpfHV0bWNzcj1mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZ3x1dG1jY3Q9L2luZGV4LnBocC90b3BpYywxODYyMi4xNS5odG1sfHV0bWNtZD1yZWZlcnJhbCc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nb_NO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ29wdGlvbnNfdGFiJ10gPSAnQ2F0YWxvZ2VyIHZhbGcnOwokbGFuZ1snbmFtZWltYWdlcyddID0gJ0NhdGFsb2dlciBCaWxkZXInOwokbGFuZ1snbmFtZWZpbGVzJ10gPSAnRmlsZXInOwokbGFuZ1snbmFtZWZpbGUnXSA9ICdGaWwnOwokbGFuZ1snZGVsZXRlaW1hZ2UnXSA9ICdTbGV0dCBiaWxkZXInOwokbGFuZ1snZGVsZXRlZmlsZSddID0gJ1NsZXR0IGZpbCc7CiRsYW5nWydPd25lciddID0gJ0VpZXInOwokbGFuZ1snQ2F0YWxvZ0l0ZW0nXSA9ICdBcnRpa2tlbCBrYXRhbG9nJzsKJGxhbmdbJ25hbWVwYWdlJ10gPSAnU2lkZSc7CiRsYW5nWydQZXJtaXNzaW9ucyddID0gJ1JldHRpZ2hldGVyJzsKJGxhbmdbJ1N1YiddID0gJ1VuZGVyIC0nOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2l0ZW1fc29ydF9vcmRlcjInXSA9ICdBcnRpa2tlbCBzb3J0ZXJpbmdzIHJla2tlZiZvc2xhc2g7bGdlJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtc19wZXJfcGFnZTInXSA9ICdBcnRpa2xlciBwciBzaWRlJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9jYXRlZ29yeV9yZWN1cnNlMiddID0gJ1Zpc25pbmdzIG9wcGYmb3NsYXNoO3JzZWwnOwokbGFuZ1snd2hpY2hfYXR0cmlidXRlcyddID0gJ0h2aWxrZSBhdHRyaWJ1dHRlciBza2FsIHZpc2VzIGkga2F0YWxvZ2VuJzsKJGxhbmdbJ25hdlRhYiddID0gJyAgfCAnOwokbGFuZ1snbmVlZHBlcm1pc3Npb24nXSA9ICdEdSB0cmVuZ2VyICVzIHNhdHQgZm9yICZhcmluZzsgZ2omb3NsYXNoO3JlIGRldC4nOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnQ2F0YWxvZ2VyICc7CiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnQmVoYW5kbGUgQ2F0YWxvZyBpbm5zdGlsbG5nZXInOwokbGFuZ1snYXJleW91c3VyZSddID0gJ0VyIGR1IHNpa2tlciBwJmFyaW5nOyBhdCBkdSB2aWwgc2xldHRlIGRldHRlICVzPyc7CiRsYW5nWyd1bmlxdWVjb2RlJ10gPSAnVW5payBrb2RlJzsKJGxhbmdbJ3RlbXBsYXRlbGlzdCddID0gJ1N1Yi1tYWxlcic7CiRsYW5nWydsaXN0dGVtcGwnXSA9ICdCZWhhbmRsZSBzdWItbWFsZXInOwokbGFuZ1sndGl0bGVfZmllbGRfdHlwZSddID0gJ0ZlbHR0eXBlJzsKJGxhbmdbJ3RpdGxlX3NlbGVjdF92YWx1ZXMnXSA9ICdWZWxnIHZlcmRpZXIqJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fdGFiJ10gPSAnQXJ0aWtrZWwga2plbm5ldGVnbic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV90YWInXSA9ICdLYXRlZ29yaSBramVubmV0ZWduJzsKJGxhbmdbJ3RpdGxlX3ByaW50YWJsZV90YWInXSA9ICdVdHNrcml2YmFyIEthdGFsb2cgaW5uc3RpbGxpbmdlcic7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3RhYiddID0gJ0FydGlra2VsIEJpbGRlIHN0Jm9zbGFzaDtycmVsc2UnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2VfdGFiJ10gPSAnS2F0ZWdvcmkgc2lkZSBpbm5zdGlsbGluZ2VyJzsKJGxhbmdbJ3RpdGxlX3BhdGhfdGFiJ10gPSAnU3RpZXInOwokbGFuZ1sndGl0bGVfZGVsZXRlJ10gPSAnU2xldHRlPyc7CiRsYW5nWyd0aXRsZV9maWxlX3RhYiddID0gJ0FuZHJlIGZpbGlubnN0aWxsaW5nZXInOwokbGFuZ1sndGl0bGVfaW1hZ2VfdGFiJ10gPSAnQW5kcmUgYmlsZGVpbm5zdGlsbGluZ2VyJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fdGVtcGxhdGVfdmFycyddID0gJ0FydGlra2VsIG1hbCB2YXJpYWJsZXInOwokbGFuZ1sndGl0bGVfY2F0X3RlbXBsYXRlX3ZhcnMnXSA9ICdLYXRlZ29yaSBtYWwgdmFyaWFibGVyJzsKJGxhbmdbJ3RpdGxlX2NhdGFsb2dfdGVtcGxhdGVfdmFycyddID0gJ0NhdGFsb2dtYWwgdmFyaWFibGVyJzsKJGxhbmdbJ3RpdGxlX2NvbXBhcmVfdGVtcGxhdGVfdmFycyddID0gJ1NhbW1lbmxpZ25pbmdzbWFsIHZhcmlhYmxlcic7CiRsYW5nWyd0aXRsZV9mZWF0dXJlX3RlbXBsYXRlX3ZhcnMnXSA9ICdFZ2Vuc2thcHNsaXN0ZW1hbCB2YXJpYWJsZXInOwokbGFuZ1sndGl0bGVfc2hvd19vbmx5X2V4aXN0aW5nX2ltYWdlcyddID0gJ0lra2UgaW5rbHVkZXIgbWFuZ2xlbmRlIGJpbGRlcic7CiRsYW5nWyd0aXRsZV9zaG93X29ubHlfZXhpc3RpbmdfaW1hZ2VzX2hlbHAnXSA9ICdEZXR0ZSB2aWwga3VuIHNldHRlIGJpbGRlcmVmZXJhbnNlciBpbm4gaSBsaXN0ZW5lIG9tIGJpbGRldCBla3Npc3RlcmVyLjxiciAvPihOb3JtYWx0IGVyIGRldHRlIGJyYSwgbWVuIG9tIGR1IGdqJm9zbGFzaDtyIG5vZSBzbWFydCBtZWQgYmlsZGV0PGJyIC8+aW5kZWtzZXJlcyBhcnJheWV0LCBkZXR0ZSBrYW4gZ2kgZGVnIHRyJm9zbGFzaDtiYmVsLiknOwokbGFuZ1sndGl0bGVfZmx1c2hfY2F0cyddID0gJ1Qmb3NsYXNoO20ga2F0ZWdvcmlzaWRlIGJ1ZnJlJzsKJGxhbmdbJ3RpdGxlX2ZsdXNoX2NhdHNfaGVscCddID0gJ09tIGR1IGhhciBldCBzdG9ydCBhbnRhbGwgZW5oZXRlciB2aXN0PGJyIC8+aSBlbiBrYXRlZ29yaSwgdmlsIG5vZW4gUEhQIGluc3RhbGxhc2pvbmVyIGZlaWxlICZhcmluZzsgdmlzZSBzaWRlbjxiciAvPmtvcnJla3QuIEhhayBhdiBpIGRlbm5lIGJva3NlbiBmb3IgJmFyaW5nOyBsJm9zbGFzaDtzZSBkZXR0ZSBwcm9ibGVtZXQgKHRlc3QgZm9yIGV2ZW50dWVsbGUgYmktZWZmZWt0ZXIpLic7CiRsYW5nWyd0aXRsZV9pdGVtX2ZpbGVfdHlwZXMnXSA9ICdUaWxsYXR0ZSBmaWx0eXBlcic7CiRsYW5nWyd0aXRsZV9pbWFnZV91cGxvYWRfcGF0aCddID0gJ1BsYXNzZXJpbmcgZm9yIG9wcGxhc3RlZGUgYmlsZGVmaWxlcic7CiRsYW5nWyd0aXRsZV9maWxlX3VwbG9hZF9wYXRoJ10gPSAnUGxhc3NlcmluZyBmb3IgYW5kcmUgb3BwbGFzdGVkZSBlcnRpa2tlbGJpbGRlZmlsZXInOwokbGFuZ1sndGl0bGVfaW1hZ2VfcHJvY19wYXRoJ10gPSAnUGxhc3NlcmluZyBmb3IgYmVoYW5kbGVkZSBiaWxkZXIgKG1pbmlhdHlyYmlsZGVyLCBza2FsZXJ0ZSBiaWxkZXIsIG9zdi4pJzsKJGxhbmdbJ3BhdGhfaGVscCddID0gJ0R1IGthbiBzcGVzaWZpc2VyZSBodm9yIENhdGFsb2dlciBsYWdyZXIgZmlsZXIuIERpc3NlIHN0aWVuZSBlciByZWxhdGl2ZSB0aWwgPGk+dXBsb2Fkc19wYXRoPC9pPiBkZWZpbmVydCBpIGRpbiBjb25maWcucGhwPGJyIC8+TUVSSzogT20gZHUgZW5kcmVyIGRpc3NlIHN0aWVuZSBldHRlciBhdCBmaWxlciBlbGxlciBiaWxkZXIgaGFyIGJsaXR0IGxhc3RldCBvcHAsIHMmYXJpbmc7IHZpbCBDYXRhbG9nZXIgbWlzdGUgJiMwMzk7YWxsZXJlZGUgb3BwbGFzdGV0JiMwMzk7IGVnZW5za2FwZW4gKGRlIHZpbCBmb3J0c2F0dCB2JmFlbGlnO3JlIGRlciwgbWVuIENhdGFsb2dlciB2aWwgaWtrZSB2aXRlIG9tIGRlbSwgcyZhcmluZzsgZHUgbSZhcmluZzsgbGFzdGUgZGVtIG9wcCBwJmFyaW5nOyBueSBmb3IgYXQgQ2F0YWxvZ2VyIHNrYWwga2xhcmUgJmFyaW5nOyBmaW5uZSBkZXQgdXQpLic7CiRsYW5nWydjYXRhbG9nZXInXSA9ICdDYXRhbG9nZXIgJzsKJGxhbmdbJ3RpdGxlX2F0dHJfb3JkZXJfYnknXSA9ICdSZWtrZWYmb3NsYXNoO2xnZSc7CiRsYW5nWyd0aXRsZV9hdHRyX2FsaWFzJ10gPSAnQXR0cmlidXR0IGFsaWFzIChTbWFydHktdmVubmxpZyknOwokbGFuZ1sndGl0bGVfYXR0cl9sZW5ndGgnXSA9ICdMZW5nZGUqJzsKJGxhbmdbJ3RpdGxlX2F0dHJfZGVmYXVsdCddID0gJ1N0YW5kYXJkIHZlcmRpJzsKJGxhbmdbJ3RpdGxlX2F0dHJfbGVuZ3RoX2hlbHAnXSA9ICcqTGVuZ3RoIG9ubHkgYXBwbGllcyB0byAmcXVvdDtUZXh0JnF1b3Q7PGJyIC8+VmFsdWUgaXMgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBvcHRpb25zIGZvciBEcm9wZG93bnM8YnIgLz5WYWx1ZSBzaG91bGQgY29udGFpbiB0aGUgY2hlY2tlZCB2YWx1ZSwgYSBjb21tYSwgYW5kIHRoZSB1bmNoZWNrZWQgdmFsdWUgZm9yIGNoZWNrYm94JzsKJGxhbmdbJ3RleHQnXSA9ICdUZWtzdCc7CiRsYW5nWydkcm9wZG93biddID0gJ05lZHRyZWtrJzsKJGxhbmdbJ3RleHRhcmVhJ10gPSAnVGVrc3RvbXImYXJpbmc7ZGUnOwokbGFuZ1snY2hlY2tib3gnXSA9ICdBdmtyeXNuaW5nc2Jva3MnOwokbGFuZ1snaXRlbV9wYWdlJ10gPSAnQXJ0aWtrZWwgc2lkZSc7CiRsYW5nWydjYXRlZ29yeV9wYWdlJ10gPSAnS2F0ZWdvcmkgc2lkZSc7CiRsYW5nWydjYXRhbG9nX3ByaW50YWJsZSddID0gJ1V0c2tyaXZiYXIgS2F0YWxvZyc7CiRsYW5nWydjYXRhbG9nX2RhdGFzaGVldCddID0gJ0thdGFsb2cgZGF0YWJsYWQnOwokbGFuZ1snY2F0YWxvZ19zaG9ydF9saXN0J10gPSAnRWdlbnNrYXAgbGlzdGUnOwokbGFuZ1snaXRlbV9jb21wYXJpc29uJ10gPSAnQXJ0aWtrZWwgc2FtbWVubGlnbmluZyc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfaXRlbV9zb3J0X29yZGVyJ10gPSAnU2V0dCBhcnRpa2tlbCBzb3J0ZXJpbmcgcmVra2VmJm9zbGFzaDtsZ2UgdGlsJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtc19wZXJfcGFnZSddID0gJ1NldHQgYW50YWxsIGFydGlrbGVyIHByIHNpZGUgdGlsJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9jYXRlZ29yeV9yZWN1cnNlJ10gPSAnU2V0dCBrYXRlZ29yaSB2aXNuaW5nIG9wcGYmb3NsYXNoO3JzZWwgdGlsJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fc29ydF9vcmRlciddID0gJ1N0YW5kYXJkIGFydGlra2VsIHNvcnRlcmluZ3NyZWtrZWYmb3NsYXNoO2xnZSc7CiRsYW5nWyd0aXRsZV9wcmludGFibGVfc29ydF9vcmRlciddID0gJ1N0YW5kYXJkIHV0c2tyaXZiYXIga2F0YWxvZyBzb3J0ZXJpbmdzcmVra2VmJm9zbGFzaDtsZ2UnOwokbGFuZ1sndGl0bGVfaXRlbXNfcGVyX3BhZ2UnXSA9ICdTdGFuZGFyZCBhbnRhbGwgYXJ0aWtsZXIgcHIgc2lkZSc7CiRsYW5nWyd0aXRsZV9hdmFpbF9hdHRycyddID0gJ0FydGlra2VsIGF0dHJpYnV0dGVyIHRpbGdqZW5nZWxpZyBmb3IgbWFsZW4nOwokbGFuZ1sndGl0bGVfYXZhaWxfaW1hdHRycyddID0gJ0FydGlra2VsYmlsZGVyIHRpbGdqZW5nZWxpZyBmb3IgbWFsZW4nOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX2hlcm8nXSA9ICdCaWxkZXN0Jm9zbGFzaDtycmVsc2UgZm9yIGFydGlra2VsIHNpZGUgKGxhbmcgYWtzZSBpIHBpeGxlciknOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX3RodW1ibmFpbCddID0gJ1RodW1ibmFpbCBiaWxkZXN0Jm9zbGFzaDtycmVsc2UgZm9yIGFydGlra2Vsc2lkZSAobGFuZyBha3NlIGkgcGl4bGVyKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfY2F0ZWdvcnknXSA9ICdUaHVtYm5haWwgYmlsZGVzdCZvc2xhc2g7cnJlbHNlIGZvciBhcnRpa2tlbCBwJmFyaW5nOyBrYXRlZ29yaXNpZGUgKGxhbmcgYWtzZSBpIHBpeGxlciknOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX2NhdGFsb2cnXSA9ICdUaHVtYm5haWwgYmlsZGVzdCZvc2xhc2g7cnJlbHNlIGZvciBhcnRpa2tlbCBwJmFyaW5nOyBrYXRhbG9nc2lkZSAobG9uZyBheGlzIGluIHBpeGVscyknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV9oZXJvJ10gPSAnQmlsZGUgc3Qmb3NsYXNoO3JyZWxzZSBmb3Iga2F0ZWdvcmlzaWRlIChsYW5nIGFrc2UgaSBwaXhsZXIpJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX3NpemVfdGh1bWJuYWlsJ10gPSAnVGh1bWJuYWlsIGJpbGRlc3Qmb3NsYXNoO3JyZWxzZSBmb3Iga2F0ZWdvcmlzaWRlIChsYW5nIGFrc2UgaSBwaXhsZXIpJzsKJGxhbmdbJ3RpdGxlX3RlbXBsYXRlJ10gPSAnTWFsJzsKJGxhbmdbJ3RpdGxlX3RlbXBsYXRlX3R5cGUnXSA9ICdNYWwgdHlwZSc7CiRsYW5nWyd0aXRsZV90aXRsZSddID0gJ1RpdHRlbCc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX2NvdW50J10gPSAnTWFrc2ltdW0gYW50YWxsIHZpc25pbmdlciBmb3IgaHZlciBhcnRpa2tlbCc7CiRsYW5nWyd0aXRsZV9pdGVtX2ZpbGVfY291bnQnXSA9ICdNYWtzaW11bSBhbnRhbGwgYW5kcmUgZmlsZXIgYXNzb3NpZXJ0IG1lZCBodmVyIGFydGlra2VsJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX2NvdW50J10gPSAnTWFrc2ltdW0gYW50YWxsIGJhbm5lci1iaWxkZXIgZm9yIGh2ZXIga2F0ZWdvcmlzaWRlJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fYXR0cmlidXRlc19oZWxwJ10gPSAnSHZlciBhdHRyaWJ1dHQgZHUgYW5naXIgaGVyIHZpbCBibGkgdGl0dGVsIHAmYXJpbmc7IGV0IGZlbHQgc29tIGR1IGthbiBicnVrZSB0aWwgJmFyaW5nOyBiZXNrcml2ZSBlbiBpbmRpdmlkdWVsbCBhcnRpa2tlbCBvZyB2aWwgYmxpIHZpc3QgdmVkIGRlbm5lIGFydGlra2VsLiBEdSBtJmFyaW5nOyBrYW5za2plIG9wcGRhdGVyZSBkaW4gbWFsIGZvciAmYXJpbmc7IHJlZmxla3RlcmUgZGlzc2UgYXR0cmlidXR0ZXIuIEJsYW5rIHV0IGVsbGVyIHNrcml2IG92ZXIgZW4gZWtzaXN0ZXJlbmRlIGF0dHJpYnV0dCBmb3IgJmFyaW5nOyBmamVybmUgZWxsZXIgYnl0dGUgZGVuIHV0Lic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9hdHRyaWJ1dGVzX2hlbHAnXSA9ICdIdmVyIGF0dHJpYnV0dCBkdSBhbmdpciBoZXIgdmlsIGJsaSB0aXR0ZWwgcCZhcmluZzsgZXQgZmVsdCBzb20gZHUga2FuIGJydWtlIHRpbCAmYXJpbmc7IGJlc2tyaXZlIGVuIGluZGl2aWR1ZWxsIGFydGlra2VsIGthdGVnb3JpIG9nIHZpbCBibGkgdmlzdCBwJmFyaW5nOyBkZW5uZSBrYXRlZ29yaXNpZGVuLiBEdSBtJmFyaW5nOyBrYW5za2plIG9wcGRhdGVyZSBkaW4gbWFsIGZvciAmYXJpbmc7IHJlZmxla3RlcmUgZGlzc2UgYXR0cmlidXR0ZXIuJzsKJGxhbmdbJ3RpdGxlX2NhdGFsb2dfYXR0cmlidXRlc19oZWxwJ10gPSAnSHZlciBhdHRyaWJ1dHQgZHUgYW5naXIgaGVyIHZpbCBibGkgdGl0dGVsIHAmYXJpbmc7IGV0IGZlbHQgc29tIGR1IGthbiBicnVrZSB0aWwgJmFyaW5nOyBiZXNrcml2ZSBoZWxlIGthdGFsb2dlbiBvZyB2aWwgYmxpIHZpc3QgcCZhcmluZzsgZGVuIHNrcml2YmFyZSBrYXRhbG9nc2lkZW4uIER1IG0mYXJpbmc7IGthbnNramUgb3BwZGF0ZXJlIGRpbiBtYWwgZm9yICZhcmluZzsgcmVmbGVrdGVyZSBkaXNzZSBhdHRyaWJ1dHRlci4nOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfc29ydCddID0gJ0thdGVnb3Jpc2lkZSBhcnRpa2tlbC1saXN0ZSBzb3J0ZXJpbmdzcmVra2VmJm9zbGFzaDtsZ2UnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZSddID0gJ1N0YW5kYXJkIGthdGVnb3JpIHZpc25pbmdzIG9wcGYmb3NsYXNoO3JzZWwnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9pdGVtc19hbGwnXSA9ICdJbmtsdWRlciBhbGxlIGFydGlrbGVyIGlubmVmb3IgZGVubmUga2F0ZWdvcmksIGlua2x1ZGVydCBhcnRpa2xlciBpIHVuZGVyLWthdGVnb3JpZXInOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9pdGVtc19vbmUnXSA9ICdJbmtsdWRlciBhbGxlIGFydGlrbGVyIGkgYWtrdXJhdCBkZW5uZSBrYXRlZ29yaSwgbWVuIGlra2UgZnJhIHVuZGVyLWthdGVnb3JpZXInOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9jYXRlZ29yaWVzX2FsbCddID0gJ0lua2x1ZGVyIGFsbGUga2F0ZWdvcmllciBpbm5lbmZvciBkZW5uZSBrYXRlZ29yaWVuLCBpbmtsdWRlcnQgaW5uZW4gdW5kZXIta2F0ZWdvcmllcic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2NhdGVnb3JpZXNfb25lJ10gPSAnSW5rbHVkZXIgYWxsZSBrYXRlZ29yaWVyIGkgYWtrdXJhdCBkZW5uZSBrYXRlZ29yaWVuLCBtZW4gaWtrZSBrYXRlZ29yaWVyIGkgdW5kZXIta2F0ZWdvcmllcic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX21peGVkX2FsbCddID0gJ0lua2x1ZGVyIGFsbGUgYXJ0aWtsZXIgb2cga2F0ZWdvcmllciBpIGRlbm5lIGthdGVnb3JpZW4sIGlua2x1ZGVydCBhcnRpa2xlciBvZyBrYXRlZ29yaWVyIGkgdW5kZXIta2F0ZWdvcmllcic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX21peGVkX29uZSddID0gJ0lua2x1ZGVyIGFsbGUgYXJ0aWtsZXIgb2cga2F0ZWdvcmllciBpIGFra3VyYXQgZGVubmUga2F0ZWdvcmllbiwgbWVuIGlra2UgYXJ0aWtsZXIgb2cga2F0ZWdvcmllciBpIHVuZGVyLWthdGVnb3JpZXInOwokbGFuZ1sndGl0bGVfc2hvd19taXNzaW5nX2ltYWdlcyddID0gJ1ZpcyAmcXVvdDtJbmdlbiBiaWxkZSZxdW90OyBiaWxkZSBmb3IgbWFuZ2xlbmRlIGJpbGRlcic7CiRsYW5nWyd0aXRsZV9zaG93X21pc3NpbmdfaW1hZ2VzX2xvbmcnXSA9ICdWaXMgZXQgc3Blc2llbHQgJnF1b3Q7SW5nZW4gQmlsZGUmcXVvdDsgYmlsZGUgb20gZGV0IG1hbmdsZXIgYmlsZGVyIChlbGxlcnMgYmxpciBkZXQgYnJ1a3QgZXQgZW4tcGl4ZWwgdHJhbnNwYXJlbnQgYmlsZGUpLic7CiRsYW5nWyduYXR1cmFsX29yZGVyJ10gPSAnTmF2aWdlcmluZ3MtcmVra2VmJm9zbGFzaDtsZ2UnOwokbGFuZ1snYWxwaGFfb3JkZXInXSA9ICdBbGZhYmV0aXNrIHJla2tlZiZvc2xhc2g7bGdlJzsKJGxhbmdbJ21hbmFnZXByZWZzJ10gPSAnQmVoYW5kbGUgaW5uc3RpbGxpbmdlcic7CiRsYW5nWydtYW5hZ2VhdHRycyddID0gJ0JlaGFuZGxlIGJydWtlcmRlZmluZXJ0ZSBhdHRyaWJ1dHRlcic7CiRsYW5nWydnbG9iYWxvcHMnXSA9ICdHbG9iYWwga2F0YWxvZyBoYW5kbGluZ2VyJzsKJGxhbmdbJ2FkZHRlbXBsYXRlJ10gPSAnTGVnZyB0aWwgbWFsJzsKJGxhbmdbJ3JlaW1wb3J0dGVtcGxhdGVzJ10gPSAnR2plbi1pbnBvcnRlciBla3NlbXBlbCB1bmRlci1tYWxlcic7CiRsYW5nWydyZWltcG9ydGVkJ10gPSAnRWtzZW1wZWwgdW5kZXItbWFsZXIgaGFyIGJsaXR0IGltcG9ydGVydGUnOwokbGFuZ1sndGVtcGxhdGV1cGRhdGVkJ10gPSAnTWFsIGxhZyB0aWwvb3BwZGF0ZXJ0Lic7CiRsYW5nWyd0ZW1wbGF0ZWRlbGV0ZWQnXSA9ICdNYWwgc2xldHRldC4nOwokbGFuZ1sncHJlZnN1cGRhdGVkJ10gPSAnSW5uc3RpbGxpbmdlciBoYXIgYmxpdHQgb3BwZGF0ZXJ0Lic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bGUgdmVyc2pvbiAlcyBpbm5zdGFsbGVydC4nOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bCBvcHBncmFkZXJ0IHRpbCB2ZXJzam9uICVzLic7CiRsYW5nWydiYWRmaWxlJ10gPSAnRmlsZW4gJnF1b3Q7JXMmcXVvdDsgZXIgaWtrZSBhdiBldCBnb2RramVudCBmb3JtYXQuJzsKJGxhbmdbJ2JhZGltYWdlJ10gPSAnUHJvYmxlbSBtZWQgJmFyaW5nOyBsYXN0ZSBvcHAgJnF1b3Q7JXMmcXVvdDsgKHNqZWtrIGZpbHN0Jm9zbGFzaDtycmVsc2Ugb2cvZWxsZXIgcmV0dGlnaGV0ZXIgcCZhcmluZzsgc2VydmVyKS4nOwokbGFuZ1snYmFkaW1hZ2Vmb3JtYXQnXSA9ICcmcXVvdDslcyZxdW90OyBlciBpa2tlIGd5bGRpZy4gS3VuIGpwZWctZmlsZXIgZXIgc3Qmb3NsYXNoO3R0ZXQgYWtrdXJhdCBuJmFyaW5nOy4nOwokbGFuZ1sndXBsb2FkZWQnXSA9ICdGaWxlbiAmcXVvdDslcyZxdW90OyBsYXN0ZXQgb3BwIGZvciBhcnRpa2tlbCAlcy4nOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bCBhdmluc3RhbGxlcnQuJzsKJGxhbmdbJ2F0dHJzdXBkYXRlZCddID0gJ0F0dHJpYnV0dGVyIG9wcGRhdGVydCc7CiRsYW5nWydub2dsb2JhbGNoYW5nZSddID0gJ0lra2UgZW5kcmUnOwokbGFuZ1snZ2xvYmFsbHl1cGRhdGVkJ10gPSAnRW5kcmluZ2VyIGZvcnBsYW50ZXQgZ2xvYmFsdCc7CiRsYW5nWydlZGl0dGVtcGxhdGUnXSA9ICdSZWRpZ2VyIG1hbCc7CiRsYW5nWydzdWJ0ZW1wbGF0ZXMnXSA9ICdLYXRhbG9nIHVuZGVyLW1hbGVyJzsKJGxhbmdbJ25leHQnXSA9ICc6JnJhcXVvOyc7CiRsYW5nWydwcmV2J10gPSAnJmxhcXVvOzonOwokbGFuZ1snZWRpdCddID0gJ1JlZGlnZXInOwokbGFuZ1snZGVsZXRlJ10gPSAnU2xldHQnOwokbGFuZ1snbm90ZW1wbGF0ZXMnXSA9ICdJbmdlbiB1bmRlci1tYWxlciBlciBpbnN0YWxsZXJ0ISc7CiRsYW5nWydoZWxwdGV4dCddID0gJzxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPg0KPHA+VGhpcyBtb2R1bGUgbGV0cyB5b3UgY3JlYXRlIG9ubGluZSBjYXRhbG9ncyBvciBwb3J0Zm9saW9zLiBDYXRhbG9ncyBjb25zaXN0IG9mICZxdW90O0NhdGFsb2cgSXRlbXMmcXVvdDsgd2hpY2ggY291bGQgYmUgcHJvZHVjdHMsIHdvcmtzIG9mIGFydCwgb3IgdGhlIGxpa2UsIGFuZCAmcXVvdDtDYXRhbG9nIENhdGVnb3JpZXMmcXVvdDsgd2hpY2ggY291bGQgYmUgaXRlbSBjYXRlZ29yaWVzIG9yIG90aGVyIG5hdHVyYWwgZGl2aXNpb25zIG9mIHRoZSBjYXRhbG9nLjwvcD4NCjxwPkNhdGVnb3JpZXMgbWF5IGJlIGRlZmluZWQgaGllcmFyY2hpY2FsbHkgKHVzaW5nIHRoZSBzdGFuZGFyZCBDTVMgTWFkZSBTaW1wbGUgY29udGVudCBsaXN0KS4gQ2F0ZWdvcnkgcGFnZXMgY2FuIGRpc3BsYXkgaXRlbXMgaW4gdGhlIGNhdGVnb3J5IGFuZC9vciBzdWJjYXRlZ29yaWVzLCBvcHRpb25hbGx5IHJlY3Vyc2luZyB0aHJvdWdoIHN1Yi1jYXRlZ29yaWVzLiBUaGlzIGJlaGF2aW9yIGNhbiBiZSBjb25maWd1cmVkIG9uIGEgcGVyLWNhdGVnb3J5IGJhc2lzLjwvUD4NCjxwPlRoZXJlIGlzIGFsc28gYSBQcmludGFibGUgQ2F0YWxvZywgd2hpY2ggcmVwcmVzZW50cyB0aGUgd2hvbGUgY29sbGVjdGlvbiBvZiBDYXRhbG9nIEl0ZW1zIG9uIGEgc2luZ2xlIHBhZ2UgKHRoaXMgaXMgY3VycmVudGx5IGltcGxlbWVudGVkIGJhZGx5LCBhbmQgd2lsbCBsb2FkIHNsb3dseSkuPC9wPg0KPHA+VGhlIG1vZHVsZSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgJnF1b3Q7Q29udGVudCBBbGlhc2VzJnF1b3Q7IChhIG1vZHVsZSBhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jb250ZW50YWxpYXNlcy8iPnRoZSBEZXZlbG9wZXIgRm9yZ2U8L2E+KSwgd2hpY2ggYWxsb3dzIHlvdSB0byBwbGFjZSBhbnkgQ2F0YWxvZyBJdGVtIGludG8gbXVsdGlwbGUgQ2F0YWxvZyBDYXRlZ29yaWVzLjwvcD4NCjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPg0KPHA+V2hlbiB5b3UgaW5zdGFsbCB0aGlzIG1vZHVsZSwgaXQgY3JlYXRlcyB0aHJlZSBuZXcgQ29udGVudCBUeXBlczogQ2F0YWxvZyBJdGVtLCBDYXRhbG9nIENhdGVnb3J5LCBhbmQgUHJpbnRhYmxlIENhdGFsb2cuIFdoZW4geW91JiMwMzk7cmUgaW4geW91ciBzaXRlIGFkbWluaXN0cmF0aW9uIGNhdGVnb3J5LCB5b3UgYWRkIENhdGFsb2cgSXRlbXMgYW5kIENhdGFsb2cgQ2F0ZWdvcmllcyBqdXN0IGFzIHlvdSB3b3VsZCBhbnkgb3RoZXIga2luZCBvZiBwYWdlLiBTZWxlY3QgQ29udGVudCAmYW1wO2d0OyBQYWdlcyAmYW1wO2d0OyBBZGQgQ29udGVudCwgYW5kIHRoZW4gc2VsZWN0ICZxdW90O0NhdGFsb2cgSXRlbSZxdW90OyBvciAmcXVvdDtDYXRhbG9nIENhdGVnb3J5JnF1b3Q7IGZyb20gdGhlIENvbnRlbnQgVHlwZSBwdWxsZG93bi48L3A+DQo8aDQ+Q2F0YWxvZyBJdGVtczwvaDQ+DQo8cD5BZGRpbmcgYSBDYXRhbG9nIEl0ZW0gaXMgc2ltaWxhciB0byBhZGRpbmcgYW4gb3JkaW5hcnkgcGFnZSB0byB5b3VyIHNpdGUuIFRoZSBkYXRhIGZpZWxkcyBmb3IgdGhlIEl0ZW0gYXJlIG5vdCBleGFjdGx5IHRoZSBzYW1lLCBob3dldmVyLiBBbHNvIG5vdGUgdGhhdCBpbiB0aGUgJnF1b3Q7SW1hZ2VzJnF1b3Q7IHRhYiwgeW91IGNhbiBzZWxlY3QgbXVsdGlwbGUgaW1hZ2VzIHRvIHVwbG9hZCBmb3IgdGhlIGl0ZW0uIFdoZW4geW91IHVwbG9hZCBpbWFnZXMsIHRoZSBzeXN0ZW0gd2lsbCBzaXplIHRoZW0gYXBwcm9wcmlhdGVseSBmb3IgdGhlIGNhdGFsb2csIGNyZWF0ZSB0aHVtYm5haWxzIGZvciB1c2UgaW4gdGhlIEl0ZW0mIzAzOTtzIHBhZ2UsIGNyZWF0ZSB0aHVtYm5haWxzIGZvciBhbnkgQ2F0ZWdvcnkgcGFnZXMsIGFuZCBzbyBvbi4gVGhpcyByZXF1aXJlcyB0aGF0IHlvdSBoYXZlIEdEIG9yIGEgc2ltaWxhciBpbWFnZSBsaWJyYXJ5IGluc3RhbGxlZC4gQ3VycmVudGx5LCBvbmx5IGpwZWcgZm9ybWF0IGltYWdlcyBhcmUgc3VwcG9ydGVkLjwvcD4NCjxoND5DYXRhbG9nIENhdGVnb3JpZXM8L2g0Pg0KPHA+QSBDYXRhbG9nIENhdGVnb3J5IGlzIHVzZWQgZm9yIG9yZ2FuaXppbmcgeW91ciBjYXRhbG9nIGl0ZW1zLiBJdCBwcm92aWRlcyBhIHBhZ2UgdGhhdCBsaXN0cyBDYXRhbG9nZXIgY29udGVudCB0aGF0IGlzIGNvbnRhaW5lZCBieSBpdC4gQSBDYXRhbG9nIEl0ZW0gaXMgY29uc2lkZXJlZCB0byBiZSBwYXJ0IG9mIGEgQ2F0YWxvZyBDYXRlZ29yeSBpZiBpdCBpcyBiZWxvdyB0aGF0IENhdGVnb3J5IGluIHRoZSBTaXRlIEhpZXJhcmNoeS4gQ2F0ZWdvcmllcyBjYW4gc2ltaWxhcmx5IGluY2x1ZGUgb3RoZXIgQ2F0ZWdvcmllcy48L3A+DQo8cD5DYXRhbG9nIENhdGVnb3JpZXMgaGF2ZSBhIG51bWJlciBvZiBzZXR0aW5ncyB0byBkZXRlcm1pbmUgaG93IHRoZXkgc2hvdWxkIGRpc3BsYXkgdGhlIEl0ZW1zIGFuZCBDYXRlZ29yaWVzIHRoZXkgY29udGFpbjogaWYgeW91IGxvb2sgYXQgdGhlICZxdW90O09wdGlvbnMmcXVvdDsgdGFiLCB5b3UgY2FuIGNob29zZSBob3cgbWFueSBpdGVtcyBhbmQvb3IgY2F0ZWdvcmllcyB0byBzaG93LCB3aGF0IG9yZGVyIHRvIHNob3cgdGhlbSBpbiwgd2hldGhlciB0byBkaXNwbGF5IG9ubHkgaXRlbXMgb3Igb25seSBjYXRlZ29yaWVzIG9yIGJvdGgsIGFuZCBob3cgbWFueSBsZXZlbHMgb2YgdGhlIGhpZXJhcmNoeSB0byBkaXNwbGF5IGJlbG93IHRoZSBjYXRlZ29yeSBwYWdlLjwvcD4NCjxwPkZvciBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTo8L3A+DQo8b2w+DQoJPGxpPjxiPkhhdHM8L2I+DQoJCTxvbD4NCgkJCTxsaT48Yj5GYXNoaW9uPC9iPg0KCQkJIAk8b2w+DQoJCQkgCQk8bGk+RmVhdGhlcmVkIEhhdDwvbGk+PGxpPkZlZG9yYSA8L2xpPjxsaT5CYXNlYmFsbCBIYXQ8L2xpPg0KCQkJIAk8L29sPg0KCQkJIDwvbGk+DQoJCSAJPGxpPjxiPldvcmsgSGF0czwvYj4NCgkJICAgIAk8b2w+DQoJCSAgICAJCTxsaT5IYXJkIEhhdDwvbGk+PGxpPkRpdmluZyBIZWxtZXQ8L2xpPg0KCQkgICAgCTwvb2w+DQoJCSAgICA8L2xpPg0KCQk8L29sPg0KCTwvbGk+DQo8L29sPg0KPHA+SW4gdGhpcyBkaWFncmFtLCBib2xkZWQgaXRlbXMgYXJlIENhdGFsb2cgQ2F0ZWdvcmllcywgYW5kIG5vbi1ib2xkZWQgaXRlbXMgYXJlIENhdGFsb2cgSXRlbXMuIERlcGVuZGluZyB1cG9uIGhvdyB5b3Ugc2V0IHlvdXIgb3B0aW9ucywgdGhlIEhhdHMgQ2F0ZWdvcnkgUGFnZSBjYW4gc2hvdyBvbmx5IGVudHJpZXMgZm9yIHRoZSBGYXNoaW9uIGFuZCBXb3JrIEhhdHMgQ2F0ZWdvcnkgUGFnZXMsIG9yIGl0IGNhbiBzaG93IGVudHJpZXMgZm9yIEZhc2hpb24sIFdvcmsgSGF0cywgYW5kIGFsbCB0aGUgaGF0cyBsaXN0ZWQgYmVsb3cgdGhlbS48L3A+DQo8cD5Zb3UgY2FuIG9wdCB0byBzaG93IHRoZSBpdGVtcyBpbiAmcXVvdDtuYXR1cmFsJnF1b3Q7IG9yZGVyIChpLmUuLCB0aGUgb3JkZXIgdGhlIEl0ZW1zIHNob3cgdXAgaW4gdGhlIENNUyBDb250ZW50IEhpZXJhcmNoeSksIG9yIGluIGFscGhhYmV0aWNhbCBvcmRlci48L1A+DQo8cD5JZiB5b3UgaGF2ZSBsYXJnZSBudW1iZXJzIG9mIGl0ZW1zIGluIGEgQ2F0ZWdvcnksIHlvdSBjYW4gc2V0IHRoZSBtYXhpbXVtIG51bWJlciB0byBiZSBkaXNwbGF5ZWQgaW4gYSBDYXRlZ29yeSBQYWdlLCBhbmQgdGhlIHBhZ2Ugd2lsbCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBsaW5rcyB0byBuYXZpZ2F0ZSB0aHJvdWdoIHRoZSBsaXN0LjwvcD4NCjxwPkVhY2ggQ2F0ZWdvcnkgcGFnZSBjYW4gaGF2ZSBkaWZmZXJlbnQgc2V0dGluZ3MgZm9yIHNvcnQgb3JkZXIsIGxldmVscyB0byBkaXNwbGF5LCBhbmQgbnVtYmVyIG9mIGl0ZW1zLiBZb3UgY2FuIHNldCB0aGUgZGVmYXVsdCBmb3IgdGhlc2UgdmFsdWVzIGluIEV4dGVuc2lvbnMgJmFtcDtndDsgQ2F0YWxvZ2VyICZhbXA7Z3Q7IE1hbmFnZSBQcmVmZXJlbmNlcy4gSWYsIGF0IGEgbGF0ZXIgZGF0ZSwgeW91IHdpc2ggdG8gY2hhbmdlIHNvbWUgc2V0dGluZyBvbiBhbGwgb2YgeW91ciBDYXRlZ29yeSBwYWdlcywgeW91IGNhbiBnbyBpbnRvIEV4dGVuc2lvbnMgJmFtcDtndDsgQ2F0YWxvZ2VyICZhbXA7Z3Q7IEdsb2JhbCBDYXRhbG9nIE9wdGlvbnMsIGFuZCBtYWtlIHRob3NlIGNoYW5nZXMuPC9wPg0KPGg0PkltYWdlczwvaDQ+DQo8cD5DYXRhbG9nZXIgYWxsb3dzIHlvdSB0byBzZWxlY3QgZGlmZmVyZW50IHNpemUgaW1hZ2VzIGZvciBJdGVtIHBhZ2VzLCBDYXRlZ29yeSBwYWdlcywgYW5kIHRoZSBQcmludGFibGUgQ2F0YWxvZy4gWW91IGNhbiBzZXQgdGhlc2UgZGVmYXVsdHMgaW4gRXh0ZW5zaW9ucyAmYW1wO2d0OyBDYXRhbG9nZXIgJmFtcDtndDsgTWFuYWdlIFByZWZlcmVuY2VzLjwvcD4NCjxwPldoZW4geW91IHVwbG9hZCBpbWFnZXMsIHRoZSBvcmlnaW5hbCBpcyBzdG9yZWQuIFdoZW4gc29tZW9uZSB2aXNpdHMgYSBwYWdlLCB0aGUgcmVkdWNlZCBzaXplIGltYWdlcyBhcmUgcmVxdWVzdGVkIHVzaW5nIGEgc3BlY2lhbCBVUkwsIHdoaWNoIHdpbGwgcmVkaXJlY3QgdGhlIHVzZXImIzAzOTtzIGJyb3dzZXIgdG8gdGhlIHNjYWxlZCBpbWFnZSBpZiBpdCBleGlzdHMsIGFuZCBjcmVhdGluZyB0aGUgc2NhbGVkIGltYWdlIGlmIGl0IGRvZXNuJiMwMzk7dC4gVGhpcyBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiBpbWFnZXMsIHdpdGhvdXQgaGF2aW5nIHRvIHJlLXVwbG9hZCBhbGwgdGhlIGltYWdlcywgb3IgcmVzY2FsaW5nIHRoZW0gYWxsIGF0IG9uY2UuPC9wPg0KPHA+VGhpcyBpbWFnZSByZXNjYWxpbmcgY29kZSByZXF1aXJlcyB0aGF0IHlvdSBoYXZlIGVpdGhlciBJbWFnZU1hZ2ljayBvciBHRCBsaWIgaW5zdGFsbGVkLCBhbmQgY29uZmlndXJlZCBpbiB5b3VyIENNUyBNYWRlIFNpbXBsZSBjb25maWcucGhwLjwvcD4NCjxoND5GaWxlczwvaDQ+DQo8cD5DYXRhbG9nZXIgYWxsb3dzIHlvdSB0byBhc3NvY2lhdGUgYXJiaXRyYXJ5IGZpbGVzIHdpdGggYW55IEl0ZW0gcGFnZS4gVGhlc2UgYXJlIHVwbG9hZGVkIHZpYSB0aGUgYWRtaW4sIGp1c3QgbGlrZSBpbWFnZXMuIFRoZXJlDQpoYXZlIGJlZW4gcnVkaW1lbnRhcnkgc2VjdXJpdHkgY29uc2lkZXJhdGlvbnMgKGUuZy4sIGZpbGUtZXh0ZW5zaW9uLWJhc2VkIHJlc3RyaWN0aW9ucyksIGhvd2V2ZXIsIGFzIHdpdGggYW55IGZpbGUgdXBsb2FkDQpjYXBhYmlsaXR5IHRoYXQgcHV0cyBmaWxlcyBpbnNpZGUgdGhlIHdlYiByb290LCBpZiB5b3UgZG8gbm90IHRydXN0IHlvdXIgdXBsb2FkZXJzLCB5b3UgYXJlIGF0IHNvbWUgZGVncmVlIG9mIHJpc2suIFlvdSBoYXZlIGJlZW4gd2FybmVkLjwvcD4NCjxoMz5GZWF0dXJlIExpc3RzPC9oMz4NCjxwPllvdSBjYW4sIGFzIG9mIHZlcnNpb24gMC40LCBoYXZlICZxdW90O2ZlYXR1cmUgbGlzdHMmcXVvdDsgd2hpY2ggYXJlIHRoZSA8aT5uPC9pPiBtb3N0LXJlY2VudGx5IGFkZGVkIGNhdGFsb2cgaXRlbXMsIG9yIGEgY29sbGVjdGlvbiBvZiA8aT5rPC9pPiByYW5kb20gaXRlbXMgZnJvbSB0aGUgY2F0YWxvZy48L3A+DQo8aDQ+JnF1b3Q7QWxsJnF1b3Q7IEZlYXR1cmUgTGlzdDwvaDQ+DQo8cD5UbyBnZXQgYSBsaXN0IG9mIGFsbCBjYXRhbG9nIGl0ZW1zIChvcHRpb25hbGx5IHVuZGVyIGEgc3BlY2lmaWVkIHBhcnQgb2YgeW91ciBoaWVyYXJjaHkpIGZvciBwcm9jZXNzaW5nIHZpYSBhIHRlbXBsYXRlLCB5b3UgY2FuIHVzZQ0KdGhlICZxdW90O2FsbCZxdW90OyBmZWF0dXJlIGxpc3QuPC9wPg0KPHA+VGhlIHN5bnRheCBmb3IgYW4gJnF1b3Q7YWxsJnF1b3Q7IGxpc3QgaXMgbGlrZTo8L3A+DQo8cD4mYW1wOyMxMjM7Q2F0YWxvZ2VyIGFjdGlvbj0mIzAzOTthbGwmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5O30sIHdoZXJlIHN1Yl90ZW1wbGF0ZSBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgbGlzdC4NClRoZXJlIGlzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciwgYWxpYXM9JiMwMzk7cGFnZV9hbGlhcyYjMDM5Oywgd2hlcmUgcGFnZV9hbGlhcyBpbmRpY2F0ZXMgdGhlIHRvcCBvZiB0aGUgdHJlZSAoZS5nLiwgYSBwbGFjZSBpbiB5b3VyIG1lbnUNCmhpZXJhcmNoeSwgdHlwaWNhbGx5IGEgY2F0ZWdvcnkgcGFnZSkgaW4gd2hpY2ggdG8gbG9vayBmb3IgbmV3IGl0ZW1zLiBBIHNwZWNpYWwgdmFsdWUgZm9yICZxdW90O3BhZ2VfYWxpYXMmcXVvdDsgaXMgJnF1b3Q7LyZxdW90Oywgd2hpY2ggbWVhbnMgdG8NCnN0YXJ0IGF0IHRoZSByb290LjwvcD4NCjxwPlRoaXMgaXMgdXNlZnVsIGZvciBjYXRhbG9nLXdpZGUgb3BlcmF0aW9ucy4gRm9yIGV4YW1wbGUsIHRvIGdldCBhIGxpc3Qgb2YgYWxsIGNhdGVnb3JpZXMgKGFuZCBkbyBzb21ldGhpbmcgd2l0aCB0aGVtKSwNCnlvdSBjb3VsZCB1c2UgdGhlIHRhZyAmYW1wOyMxMjM7Q2F0YWxvZ2VyIGFjdGlvbj0mIzAzOTthbGwmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5OyBhbGlhcz0mIzAzOTsvJiMwMzk7IHJlY3Vyc2U9JiMwMzk7Y2F0ZWdvcmllc19hbGwmIzAzOTt9LiBZb3VyIHRlbXBsYXRlIGNvdWxkIHRoZW4gdGhyb3cNCnRob3NlIGNhdGVnb3JpZXMgaW50byBhIHB1bGxkb3duIG1lbnUgdGhhdCByZWRpcmVjdGVkIHlvdSB0byB0aGF0IGNhdGVnb3J5JiMwMzk7cyBwYWdlLCBmb3IgZXhhbXBsZTo8L3A+DQo8cHJlPg0KJmFtcDtsdDtzZWxlY3QgbmFtZT0mcXVvdDtmb28mcXVvdDsgb25jaGFuZ2U9JnF1b3Q7ZG9jdW1lbnQubG9jYXRpb249dGhpcy5vcHRpb25zW3RoaXMuc2VsZWN0ZWRJbmRleF0udmFsdWU7JnF1b3Q7Pg0KJmFtcDtsdDtvcHRpb24gdmFsdWU9JnF1b3Q7JnF1b3Q7PlNlbGVjdCBBIHRhcmdldCZhbXA7bHQ7L29wdGlvbj4NCiZhbXA7IzEyMztmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09dGhpc29uZX0NCiAgICZhbXA7bHQ7b3B0aW9uIHZhbHVlPSZxdW90OyZhbXA7IzEyMzskdGhpc29uZS5saW5rfSZxdW90Oz4mYW1wOyMxMjM7JHRoaXNvbmUudGl0bGV9JmFtcDtsdDsvb3B0aW9uPg0KJmFtcDsjMTIzOy9mb3JlYWNofQ0KJmFtcDtsdDsvc2VsZWN0Pg0KPC9wcmU+DQo8cD5JZiB5b3Ugd2FudGVkIHRoYXQgdG8gb25seSBzaG93IGNhdGVnb3JpZXMgdGhhdCB3ZXJlIGluIHRoZSB2ZXJ5IHRvcCBsZXZlbCBvZiB5b3VyIGhpZXJhcmNoeSwgeW91JiMwMzk7ZCByZXBsYWNlIHRoZSByZWN1cnNlPSYjMDM5O2NhdGVnb3JpZXNfYWxsJiMwMzk7IHdpdGgNCnJlY3Vyc2U9JiMwMzk7Y2F0ZWdvcmllc19vbmUmIzAzOTsuIE9yIGlmIHlvdSB3YW50ZWQgaXQgdG8gYmUgYWxsIGNhdGFsb2cgSXRlbXMgaW5zdGVhZCBvZiBjYXRlZ29yaWVzLCB5b3UgY291bGQgdXNlIGEgdGFnIGxpa2U6DQomYW1wOyMxMjM7Q2F0YWxvZ2VyIGFjdGlvbj0mIzAzOTthbGwmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5OyBhbGlhcz0mIzAzOTsvJiMwMzk7IHJlY3Vyc2U9JiMwMzk7aXRlbXNfYWxsJiMwMzk7fQ0KPHA+U2ltaWxhcmx5LCB5b3UgY291bGQgaGF2ZSBpdCBsaXN0IG9ubHkgY2F0ZWdvcmllcyB1bmRlciB0aGUgY3VycmVudCBwYWdlIChieSBvbWl0dGluZyB0aGUgJnF1b3Q7YWxpYXM9JiMwMzk7LyYjMDM5OyZxdW90OykuIFRoZSBjb21iaW5hdGlvbnMgYXJlIGJhc2ljYWxseSBsaW1pdGxlc3MhPC9wPg0KPHA+QWxsIHN1cHBvcnRlZCB2YWx1ZXMgb2YgcmVjdXJzZSBpbmNsdWRlOjx1bD4NCjxsaT5pdGVtc19vbmUgLSBDYXRhbG9nIGl0ZW1zLCBubyBtb3JlIHRoYW4gb25lIGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+aXRlbXNfYWxsIC0gQ2F0YWxvZyBpdGVtcywgYXQgYW55IGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+Y2F0ZWdvcmllc19vbmUgLSBDYXRlZ29yaWVzLCBubyBtb3JlIHRoYW4gb25lIGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+Y2F0ZWdvcmllc19hbGwgLSBDYXRlZ29yaWVzLCBhdCBhbnkgbGV2ZWwgYmVsb3cgdGhlIGN1cnJlbnQgcGFnZSAob3IgYWxpYXMgcG9pbnQpPC9saT4NCjxsaT5taXhlZF9vbmUgLSBDYXRhbG9nIGl0ZW1zIGFuZCBDYXRlZ29yaWVzLCBubyBtb3JlIHRoYW4gb25lIGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+bWl4ZWRfYWxsIC0gQ2F0YWxvZyBpdGVtcyBhbmQgQ2F0ZWdvcmllcywgYXQgYW55IGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8L3VsPg0KPC9wPg0KPHA+SXRlbXMgaW4gdGhlc2UgbGlzdHMgY29tZSBiYWNrIGluIGhpZXJhcmNoeSBvcmRlci4gWW91IGNhbiBjaGFuZ2UgdGhpcyB1c2luZyB0aGUgJiMwMzk7Z2xvYmFsX3NvcnQmIzAzOTsgcGFyYW1ldGVyLiBZb3VyIGNob2ljZXMgYXJlOjwvcD4NCjx1bD4NCjxsaT5hbHBoYSAtIGFscGhhYmV0aWNhbGx5IGJ5IHRpdGxlPC9saT4NCjxsaT5kYXRlIC0gaW4gb3JkZXIgb2YgaXRlbSBjcmVhdGlvbiBkYXRlPC9saT4NCjxsaT5tZGF0ZSAtIGluIG9yZGVyIG9mIGl0ZW0gbW9kaWZpY2F0aW9uIGRhdGU8L2xpPg0KPC91bD4NCjxwPllvdSBtYXkgb3JkZXIgdGhlc2Ugc29ydHMgdXNpbmcgdGhlICYjMDM5O2dsb2JhbF9zb3J0X2RpciYjMDM5OyBwYXJhbWV0ZXIsIHdoaWNoIHdpbGwgYWxsb3cgJiMwMzk7YXNjJiMwMzk7IG9yICYjMDM5O2Rlc2MmIzAzOTsuPC9wPg0KPHA+U28sIGZvciBhIHRob3JvdWdoIGV4YW1wbGU6PC9wPg0KPHA+JmFtcDsjMTIzO0NhdGFsb2dlciBhY3Rpb249JiMwMzk7YWxsJiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTsgYWxpYXM9JiMwMzk7LyYjMDM5OyByZWN1cnNlPSYjMDM5O2NhdGVnb3JpZXNfYWxsJiMwMzk7IGdsb2JhbF9zb3J0PSYjMDM5O2FscGhhJiMwMzk7IGdsb2JhbF9zb3J0X2Rpcj0mIzAzOTthc2MmIzAzOTt9PC9wPg0KPGg0PlJlY2VudGx5IEFkZGVkIEZlYXR1cmUgTGlzdDwvaDQ+DQo8cD5UbyB1c2UgYSAmcXVvdDttb3N0LXJlY2VudGx5IGFkZGVkJnF1b3Q7IGxpc3Qgd2lsbCBhbGxvdyB5b3UgdG8gZGlzcGxheSB0aGUgbW9zdCByZWNlbnRseS1hZGRlZCBjYXRhbG9nIGl0ZW1zIHVuZGVyIGEgc3BlY2lmaWVkIHBhcnQgb2YgeW91ciBoaWVyYXJjaHkuPC9wPg0KPHA+VGhlIHN5bnRheCBmb3IgYSAmcXVvdDttb3N0IHJlY2VudGx5IGFkZGVkJnF1b3Q7IGxpc3QgaXMgbGlrZTo8L3A+DQo8cD4mYW1wOyMxMjM7Q2F0YWxvZ2VyIGFjdGlvbj0mIzAzOTtyZWNlbnQmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5O30sIHdoZXJlIHN1Yl90ZW1wbGF0ZSBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgbGlzdC4NClRoZXJlIGFyZSBmb3VyIG9wdGlvbmFsIHBhcmFtZXRlcnMsIGNvdW50PSYjMDM5OzMmIzAzOTsgYWxpYXM9JiMwMzk7cGFnZV9hbGlhcyYjMDM5OywgZ2xvYmFsX3NvcnQ9JiMwMzk7ZGF0ZSYjMDM5OywgZ2xvYmFsX3NvcnRfZGlyPSYjMDM5O2Rlc2MmIzAzOTsgd2hlcmUgY291bnQNCmlzIHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gaW5jbHVkZSwgcGFnZV9hbGlhcyBpbmRpY2F0ZXMgdGhlIHRvcCBvZiB0aGUgdHJlZSAoZS5nLiwgYSBwbGFjZSBpbiB5b3VyIG1lbnUgaGllcmFyY2h5LA0KdHlwaWNhbGx5IGEgY2F0ZWdvcnkgcGFnZSkgaW4gd2hpY2ggdG8gbG9vayBmb3IgbmV3IGl0ZW1zLiBBIHNwZWNpYWwgdmFsdWUgZm9yICZxdW90O3BhZ2VfYWxpYXMmcXVvdDsgaXMgJnF1b3Q7LyZxdW90Oywgd2hpY2ggbWVhbnMNCnRvIHVzZSA8aT5hbGw8L2k+IHBhZ2VzIGluIHRoZSBzaXRlLiBnbG9iYWxfc29ydCBtYXkgYmUgJiMwMzk7ZGF0ZSYjMDM5OyAoZm9yIGl0ZW0gY3JlYXRpb24gZGF0ZSkgb3IgJiMwMzk7bWRhdGUmIzAzOTsgZm9yIG1vZGlmaWNhdGlvbiBkYXRlLCBhbmQNCmdsb2JhbF9zb3J0X2RpciBtYXkgYmUgJiMwMzk7YXNjJiMwMzk7IG9yICYjMDM5O2Rlc2MmIzAzOTsuPC9wPg0KPGg0PlJhbmRvbSBJdGVtcyBGZWF0dXJlIExpc3Q8L2g0Pg0KPHA+VGhlIHN5bnRheCBmb3IgYSAmcXVvdDtyYW5kb20mcXVvdDsgbGlzdCBpcyBsaWtlOjwvcD4NCjxwPiZhbXA7IzEyMztjQ2F0YWxvZ2VyIGFjdGlvbj0mIzAzOTtyYW5kb20mIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5O30sIHdoZXJlIHN1Yl90ZW1wbGF0ZSBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgbGlzdC4gVGhlcmUgYXJlIHR3byBvcHRpb25hbCBwYXJhbWV0ZXJzLCBjb3VudD0mIzAzOTszJiMwMzk7IGFsaWFzPSYjMDM5O3BhZ2VfYWxpYXMmIzAzOTssIHdoZXJlIGNvdW50IGlzIHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gaW5jbHVkZSwgYW5kIHBhZ2VfYWxpYXMgaW5kaWNhdGVzIHRoZSB0b3Agb2YgdGhlIHRyZWUgKGUuZy4sIGEgcGxhY2UgaW4geW91ciBtZW51IGhpZXJhcmNoeSwgdHlwaWNhbGx5IGEgY2F0ZWdvcnkgcGFnZSkgaW4gd2hpY2ggdG8gbG9vayBmb3IgbmV3IGl0ZW1zLiBBIHNwZWNpYWwgdmFsdWUgZm9yICZxdW90O3BhZ2VfYWxpYXMmcXVvdDsgaXMgJnF1b3Q7LyZxdW90Oywgd2hpY2ggbWVhbnMgdG8gdXNlIDxpPmFsbDwvaT4gcGFnZXMgaW4gdGhlIHNpdGUuPC9wPg0KPGg0PlZhcmlhYmxlPC9oND4NCjxwPllvdSBjYW4gZ3JhYiB2YXJpYWJsZXMgKGF0dHJpYnV0ZXMpIG91dHNpZGUgb2YgeW91ciBDYXRhbG9nZXIgdGVtcGxhdGVzLCBzYXkgaW4gYSBnbG9iYWwgY29udGVudCBibG9jaywgdXNpbmcgdGhlIHZhcmlhYmxlIG1ldGhvZC4gVGhlIHN5bnRheCBsb29rcyBsaWtlOjwvcD4NCjxwPiZhbXA7IzEyMztDYXRhbG9nZXIgYWN0aW9uPSYjMDM5O3ZhcmlhYmxlJiMwMzk7IG5hbWU9JiMwMzk7aXRlbW5vdGVzJiMwMzk7IGRlZmF1bHQ9JiMwMzk7bm8gbm90ZXMmIzAzOTt9LCB3aGVyZSBuYW1lIGlzIHRoZSBhdHRyaWJ1dGUgdG8gZGlzcGxheSAodXNpbmcgdGhlIHNhbWUgYWxsIGxvd2VyLWNhc2UsIHB1bmN0dWF0aW9uLWZyZWUgcmVwcmVzZW50YXRpb24gbGlrZSB0aGUgc21hcnR5IHRlbXBsYXRlIHZhcmlhYmxlcyksIGFuZCBkZWZhdWx0IGlzIHRoZSB2YWx1ZSB0byB1c2UgaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgZGVmaW5lZC48L3A+DQo8aDQ+SXRlbSBDb21wYXJpc29uczwvaDQ+DQo8cD5BcyBvZiB2ZXJzaW9uIDAuNy43LCB0aGVyZSBpcyBhIHByb2R1Y3QgY29tcGFyaXNvbiBhY3Rpb246PC9wPg0KPHA+JmFtcDsjMTIzO2NDYXRhbG9nZXIgYWN0aW9uPSYjMDM5O2NvbXBhcmUmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5OyBpdGVtcz0mIzAzOTtpdGVtMSxpdGVtMixpdGVtMyYjMDM5O30sIHdoZXJlIHN1Yl90ZW1wbGF0ZSBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgbGlzdCwgYW5kIGl0ZW1zIGlzIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgaXRlbSBwYWdlIGFsaWFzZXMgdG8gY29tcGFyZS4gQm9sZGVyIHVzZXJzIG1heSBhbHNvIGNob29zZSB0byBwYXNzIGluIHRoZSBpdGVtcyB0byBjb21wYXJlIGFzIHJlcXVlc3QgdmFyaWFibGVzLCB0aGVyZWJ5IGVuYWJsaW5nIGR5bmFtaWMgY29tcGFyaXNvbnMgYmFzZWQgb24gdXNlciBzZWxlY3Rpb25zLiBEbyB0aGlzIGJ5IHNldHRpbmcgdGhlICZxdW90O2l0ZW1zJnF1b3Q7IHZhcmlhYmxlIG9uIHRoZSByZXF1ZXN0IHBhc3NlZCB0byB0aGUgcGFnZSBjb250YWluaW5nIHRoZSBDYXRhbG9nZXIgdGFnIHdpdGggYSBjb21wYXJlIGFjdGlvbi48L3A+DQo8cD5UaGUgZGVmYXVsdCBpdGVtIGNvbXBhcmlzb24gdGVtcGxhdGUgY291bGQgdXNlIHNvbWUgc3R5bGluZywgZS5nLiw6PC9wPg0KPHByZT4NCi5pdGVtX2NvbXBhcmlzb24gdGgge2ZvbnQtd2VpZ2h0OiBib2xkOyBwYWRkaW5nOiA1cHg7IHRleHQtYWxpZ246Y2VudGVyO30NCi5pdGVtX2NvbXBhcmlzb24gdGQge2JvcmRlcjogMXB4IHNvbGlkIGdyYXk7IHBhZGRpbmc6IDNweCA1cHg7dGV4dC1hbGlnbjpyaWdodDt9DQo8L3ByZT4NCjxoMz5DdXN0b21pemF0aW9uIGFuZCBBZHZhbmNlZCBUb3BpY3M8L2gzPg0KPGg0PkNhdGFsb2cgSXRlbSBBdHRyaWJ1dGVzPC9oND4NCjxwPlRoZSBkZWZhdWx0IGl0ZW0gYXR0cmlidXRlcyBhcmUgdHlwaWNhbCBmb3IgYSBjYXRhbG9nIG9mIHByb2R1Y3RzIG9yIGFydHdvcmtzLCBidXQgYnkgZ29pbmcgaW50byBFeHRlbnNpb25zICZhbXA7Z3Q7IENhdGFsb2dlciAmYW1wO2d0OyBNYW5hZ2UgVXNlci1EZWZpbmVkIEF0dHJpYnV0ZXMsIHlvdSBjYW4gY2hhbmdlIHRoZSBhdHRyaWJ1dGVzLiBJdCYjMDM5O3MgYmVzdCB0byBkZWZpbmUgdGhlIGF0dHJpYnV0ZXMgYmVmb3JlIHlvdSBzdGFydCBlbnRlcmluZyBDYXRhbG9nIEl0ZW1zLjwvcD4NCjxwPk5vdGUgdGhhdCB0aGUgYXR0cmlidXRlcyB5b3UgZGVmaW5lIG1heSBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSB0ZW1wbGF0ZSB0aGF0IHlvdSYjMDM5O3JlIHVzaW5nIHRvIGRpc3BsYXkgQ2F0YWxvZyBJdGVtcyAtLSBzZWUgQ3VzdG9tIFRlbXBsYXRlcyBiZWxvdy48L3A+DQo8aDQ+Q2F0YWxvZyBDYXRlZ29yeSBBdHRyaWJ1dGVzPC9oND4NCjxwPlNpbWlsYXJseSwgeW91IGNhbiBzZXQgYXR0cmlidXRlcyBmb3IgQ2F0ZWdvcmllcy4gQWdhaW4sIHRoZSBhdHRyaWJ1dGVzIHlvdSBkZWZpbmUgbWF5IG5lZWQgdG8gYmUgYWRkZWQgdG8gdGhlIHRlbXBsYXRlIHRoYXQgeW91JiMwMzk7cmUgdXNpbmcgdG8gZGlzcGxheSBDYXRhbG9nIENhdGVnb3JpZXMgLS0gc2VlIEN1c3RvbSBUZW1wbGF0ZXMgYmVsb3cuPC9wPg0KPGg0PlByaW50YWJsZSBDYXRhbG9nIEF0dHJpYnV0ZXM8L2g0Pg0KPHA+TGlrZXdpc2UsIHlvdSBjYW4gc2V0IGF0dHJpYnV0ZXMgZm9yIFByaW50YWJsZSBDYXRhbG9ncy4gQWdhaW4sIHRoZSBhdHRyaWJ1dGVzIHlvdSBkZWZpbmUgbWF5IG5lZWQgdG8gYmUgYWRkZWQgdG8gdGhlIHRlbXBsYXRlIHRoYXQgeW91JiMwMzk7cmUgdXNpbmcgdG8gZGlzcGxheSB5b3VyIFByaW50YWJsZSBDYXRhbG9nIC0tIHNlZSBDdXN0b20gVGVtcGxhdGVzIGJlbG93LjwvcD4NCjxoND5DdXN0b20gVGVtcGxhdGVzPC9oND4NCjxwPklmIHlvdSYjMDM5O3JlIHdpbGxpbmcgdG8gbWVzcyBhcm91bmQgd2l0aCBTbWFydHkgVGVtcGxhdGVzLCB5b3UgY2FuIGNoYW5nZSB0aGUgbGF5b3V0IG9mIGFueSBvZiB0aGUgcGFnZXMgZ2VuZXJhdGVkIGJ5IENhdGFsb2dlci4gVGhpcyBzaG91bGQgbWFrZSBjZXJ0YWluIGRldmVsb3BlcnMgdmVyeSBoYXBweSwgZXZlbiBpZiB0aGUgaW5lZmZpY2llbmN5IG9mIHRoZSByZXN0IG9mIHRoZSBjb2RlIHdpbGwgbm90LiBUaGVyZSBhcmUgZm91ciBraW5kcyBvZiB0ZW1wbGF0ZXM6IG9uZSBraW5kIGZvciBDYXRhbG9nIEl0ZW1zLCBvbmUga2luZCBmb3IgQ2F0YWxvZyBDYXRlZ29yaWVzLCBhbmQgb25lIGtpbmQgZm9yIFByaW50YWJsZSBDYXRhbG9ncywgYW5kIG9uZSBraW5kIGZvciAmcXVvdDtGZWF0dXJlJnF1b3Q7IGxpc3RzLCBzdWNoIGFzIHJlY2VudGx5IGFkZGVkIGl0ZW1zIG9yIHJhbmRvbSBzZWxlY3Rpb25zLjwvcD4NCjxwPldoZW4gZWRpdGluZyBhIFRlbXBsYXRlLCB0aGUgYWRtaW4gc2NyZWVuIHdpbGwgZGlzcGxheSBhIGxpc3Qgb2YgU21hcnR5IHRhZ3MgYXZhaWxhYmxlIHRvIHlvdSBmb3IgdGhhdCBraW5kIG9mIHRlbXBsYXRlLiBUaGlzDQp3aWxsIG9ubHkgaGFwcGVuIG9uY2UgdGhlIG1vZHVsZSBrbm93cyB3aGF0IGtpbmQgb2YgdGVtcGxhdGUgeW91JiMwMzk7cmUgZWRpdGluZywgc28gd2hlbiB5b3UgZmlyc3QgY3JlYXRlIHRoZSB0ZW1wbGF0ZSwgaXQgZGlzcGxheXMgYWxsDQp0aGUgU21hcnR5IHRhZ3MgaXQga25vd3MgYWJvdXQsIG9ubHkgc29tZSBvZiB3aGljaCBiZWluZyBhcHBsaWNhYmxlLjwvcD4NCjxoND5EaXNwbGF5aW5nIEF0dHJpYnV0ZXMgb24gSXRlbSBQYWdlczwvaDQ+DQo8cD5BdHRyaWJ1dGVzIGFyZSBhdmFpbGFibGUgdG8gU21hcnR5IGFzIHRvcC1sZXZlbCB2YXJpYWJsZXMuIFRoZXkgYXJlIHN0b3JlZCBhcyBzYW5pdGl6ZWQgdmVyc2lvbnMgb2YgdGhlIGF0dHJpYnV0ZSBuYW1lcywgd2hpY2ggbWVhbnMNCml0IGlzIGNvbnZlcnRlZCB0byBsb3dlciBjYXNlIGFuZCBhbGwgcHVuY3R1YXRpb24gYW5kIG5vbi1VUy1BU0NJSSBjaGFyYWN0ZXJzIGdldCByZW1vdmVkLiBUaGlzIGlzIGJlY2F1c2UgU21hcnR5IGlzIGZpbmlja3ksIGFuZCB3aWxsIG5vdCBoYW5kbGUgdGhlc2UgY2hhcmFjdGVycy48L3A+DQo8cD5TbywgZm9yIGV4YW1wbGUsIGlmIHlvdSBoYXZlIGFuIGF0dHJpYnV0ZSBjYWxsZWQgJnF1b3Q7R2wmdXVtbDtja2xpY2hrZWl0JnF1b3Q7LCB0aGVyZSB3aWxsIGJlIGEgU21hcnR5IHZhcmlhYmxlIHskZ2xja2xpY2hrZWl0fS4gTm90ZSB0aGF0IHRoZSAmcXVvdDsmdXVtbDsmcXVvdDsgaXMgb21pdHRlZC48L3A+DQo8cD5Gb3J0dW5hdGVseSwgdGhpcyBpcyBzaW1wbGlmaWVkIGJ5IHRoZSAkYXR0cmxpc3QgbGlzdCBhdmFpbGFibGUuIFRoaXMgaXMgYSBsaXN0IG9mIGF0dHJpYnV0ZXMgYnkgZm9ybWFsIG5hbWUgKCZxdW90O0dsJnV1bWw7Y2tsaWNoa2VpdCZxdW90OykgYW5kIHRoZWlyIGtleSAoJnF1b3Q7Z2xja2xpY2hrZWl0JnF1b3Q7KS4gRm9yIGV4YW1wbGU6DQo8cHJlPg0KCXtzZWN0aW9uIG5hbWU9YXQgbG9vcD0kYXR0cmxpc3R9DQoJJmFtcDtsdDtkaXYgY2xhc3M9JnF1b3Q7aXRlbV9hdHRyaWJ1dGVfbmFtZSZxdW90Oz57JGF0dHJsaXN0W2F0XS5uYW1lfTomYW1wO2x0Oy9kaXY+JmFtcDtsdDtkaXYgY2xhc3M9JnF1b3Q7aXRlbV9hdHRyaWJ1dGVfdmFsJnF1b3Q7PntldmFsIHZhcj0kYXR0cmxpc3RbYXRdLmtleX0mYW1wO2x0Oy9kaXY+DQoJey9zZWN0aW9ufQ0KPC9wcmU+DQo8cD5BcyBvZiB2ZXJzaW9uIDAuOCwgeW91IGNhbiBhc3NpZ24gYW4gYWxpYXMgdG8gZWFjaCBhdHRyaWJ1dGUuIFRoZXNlIGFsaWFzZXMgbmVlZCB0byBiZSBVUy1BU0NJSSBhbmQgY29udGFpbiBubyBwdW5jdHVhdGlvbi4gVGhleSBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBzYW5pdGl6ZWQgYXR0cmlidXRlIG5hbWUgKGUuZy4sIHlvdSBjb3VsZCB1c2UgdGhlIGFsaWFzICZxdW90O2dsdWVja2xpY2hrZWl0JnF1b3Q7KS48L3A+DQo8aDQ+RGlzcGxheWluZyBBdHRyaWJ1dGVzIG9uIFBhZ2VzIHdpdGggTGlzdHMgb2YgSXRlbXM8L2g0Pg0KPHA+QXR0cmlidXRlcyBhcmUgaW5jbHVkZWQgaW4gdGhlICRpdGVtbGlzdHNbI10gaW4gdHdvIGRpZmZlcmVudCB3YXlzOiB0b3AtbGV2ZWwgYXR0cmlidXRlcyBvZiB0aGUgaXRlbSwgYW5kIGFzIHBhcnQgb2YgdGhlIGl0ZW0mIzAzOTtzICZxdW90O2F0dHImcXVvdDsgYXJyYXkuIFRoZXkgYXJlIHN0b3JlZCBhcyBzYW5pdGl6ZWQgdmVyc2lvbnMgb2YgdGhlIGF0dHJpYnV0ZSBuYW1lcywgd2hpY2ggbWVhbnMNCml0IGlzIGNvbnZlcnRlZCB0byBsb3dlciBjYXNlIGFuZCBhbGwgcHVuY3R1YXRpb24gYW5kIG5vbi1VUy1BU0NJSSBjaGFyYWN0ZXJzIGdldCByZW1vdmVkLiBUaGlzIGlzIGJlY2F1c2UgU21hcnR5IGlzIGZpbmlja3ksIGFuZCB3aWxsIG5vdCBoYW5kbGUgdGhlc2UgY2hhcmFjdGVycy48L3A+DQo8cD5TbywgZm9yIGV4YW1wbGUsIGlmIHlvdSBoYXZlIGFuIGF0dHJpYnV0ZSBjYWxsZWQgJnF1b3Q7R2wmdXVtbDtja2xpY2hrZWl0JnF1b3Q7LCB0aGUgaXRlbSB3aWxsIGhhdmUgJGl0ZW0uZ2xja2xpY2hrZWl0IGFuZCAkaXRlbS5hdHRyc1smIzAzOTtnbGNrbGljaGtlaXQmIzAzOTtdLiBOb3RlIHRoYXQgdGhlICZxdW90OyZ1dW1sOyZxdW90OyBpcyBvbWl0dGVkLiBZb3UgY2FuIHJlZmVyIHRvIHRoaXMgYXR0cmlidXRlIGluIHlvdXIgdGVtcGxhdGUNCndpdGggU21hcnR5IGNvZGUgbGlrZTogeyRpdGVtbGlzdFtpbmRleF0uZ2xja2xpY2trZWl0fSBvciB7JGl0ZW1saXN0W2luZGV4XS5hdHRycy5nbGNrbGljaGtlaXR9LjwvcD4NCjxwPkZvcnR1bmF0ZWx5LCB0aGlzIGlzIHNpbXBsaWZpZWQgYnkgdGhlICRhdHRybGlzdCBsaXN0IGF2YWlsYWJsZS4gVGhpcyBpcyBhIGxpc3Qgb2YgYXR0cmlidXRlcyBieSBmb3JtYWwgbmFtZSAoJnF1b3Q7R2wmdXVtbDtja2xpY2hrZWl0JnF1b3Q7KSBhbmQgdGhlaXIga2V5ICgmcXVvdDtnbGNrbGljaGtlaXQmcXVvdDspLiBGb3IgZXhhbXBsZToNCjxwcmU+DQogICAge2ZvcmVhY2ggZnJvbT0kYXR0cmxpc3QgaXRlbT1hdHRyIGtleT1rfQ0KICAgIHskYXR0cn06IHskaXRlbXNbbnVtbG9vcF1bJGtdfQ0KICAgIHsvZm9yZWFjaH0NCjwvcHJlPg0KPHA+QXMgb2YgdmVyc2lvbiAwLjgsIHlvdSBjYW4gYXNzaWduIGFuIGFsaWFzIHRvIGVhY2ggYXR0cmlidXRlLiBUaGVzZSBhbGlhc2VzIG5lZWQgdG8gYmUgVVMtQVNDSUkgYW5kIGNvbnRhaW4gbm8gcHVuY3R1YXRpb24uIFRoZXkgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgc2FuaXRpemVkIGF0dHJpYnV0ZSBuYW1lIChlLmcuLCB5b3UgY291bGQgdXNlIHRoZSBhbGlhcyAmcXVvdDtnbHVlY2tsaWNoa2VpdCZxdW90OykuPC9wPg0KPGg0PlNtYXJ0eSB0YWdzIGluIEF0dHJpYnV0ZXM8L2g0Pg0KPHA+U29tZXRpbWVzLCB5b3UmIzAzOTtsbCB3YW50IHRoZSBkZXNjcmlwdGlvbnMgb2YgeW91ciBpdGVtcyB0byBpbmNsdWRlIHNtYXJ0eSB0YWdzIChlLmcuLCBjbXNfc2VsZmxpbmspLiBUbyBtYWtlIHRoYXQgd29yaywgeW91JiMwMzk7bGwgbmVlZCB0bw0KdXBkYXRlIHlvdXIgdGVtcGxhdGUuIEZvciB0aGUgYXR0cmlidXRlcyB3aGVyZSB5b3Ugd2FudCBzbWFydHkgdGFncyB0byBiZSBhY3RpdmUsIHlvdSYjMDM5O2xsIG5lZWQgdG8gbmVzdCB0aGUgc21hcnR5IGV2YWx1YXRpb25zIGluIHlvdXIgdGVtcGxhdGUuIEZvciBleGFtcGxlOjwvcD4NCjxwcmU+DQomYW1wOyMxMjM7ZXZhbCB2YXI9JGF0dHJsaXN0W2F0XS5rZXl9DQo8L3ByZT4NCjxwPmJlY29tZXM6PC9wPg0KPHByZT4NCiZhbXA7IzEyMztldmFsIHZhcj0kZW50cnktPmlucHV0IGFzc2lnbj10aGlzQXR0cn0mYW1wOyMxMjM7ZXZhbCB2YXI9JHRoaXNBdHRyfQ0KPC9wcmU+DQo8cD5VZ2x5PyBZdXAuIEJ1dCBpdCB3b3Jrcy48L3A+DQo8aDM+Q2F0YWxvZ2VyIEltYWdlIFN5c3RlbTwvaDM+DQo8cD5DYXRhbG9nZXIgaGFzIGFuIGltYWdlIHN5c3RlbSB0aGF0IHdpbGwgYWxsb3cgeW91IHRvIGR5bmFtaWNhbGx5IGNoYW5nZSB0aGUgaW1hZ2UgZGlzcGxheSBzaXplLiBJZiB5b3UgZG8gbm90IGxpa2UgaXQsIHlvdSBjYW4gYWx0ZXINCnRoZSB0ZW1wbGF0ZXMgYW5kIHVzZSBhbnkgaW1hZ2Ugc3lzdGVtIHlvdSB3YW50LjwvcD4NCjxwPldoZW4geW91IHVwbG9hZCBhbiBpbWFnZSB1c2luZyBDYXRhbG9nZXIsIGl0IGdldHMgcHV0IGluIGEgc3BlY2lhbCBzZXQgb2YgZGlyZWN0b3JpZXMgdG8gbWFrZSB0aGUgaW1hZ2luZyBlYXNpZXIuIFlvdSB3aWxsIHNlZSBtb3JlDQphYm91dCB0aGlzIGxhdGVyLjwvcD4NCjxwPkl0IHdvcmtzIGJ5IGNhbGxpbmcgYSBQSFAgcHJvZ3JhbSBpbnN0ZWFkIG9mIGRpcmVjdGx5IHJlZmVyZW5jaW5nIHRoZSBpbWFnZS4gVGhlIHByb2dyYW0gdXNlcyB0aGUgZmlsZW5hbWUgdG8gc2VlIGlmIHRoZQ0KaW1hZ2UgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGNvcnJlY3Qgc2l6ZS4gSWYgc28sIGl0IHJlZGlyZWN0cyB0byB0aGF0IGltYWdlLiBPdGhlcndpc2UsIGl0IHVzZXMgeW91ciBHRExJQiBvciBJbWFnZU1hZ2ljayB0byBjcmVhdGUNCnRoZSBpbWFnZSBpbiB0aGUgY29ycmVjdCBzaXplLCBhbmQgdGhlbiByZWRpcmVjdHMgdG8gaXQuDQo8L3A+DQo8aDQ+Q2F0YWxvZ2VyIEltYWdlIEZpbGVzcGVjIEV4cGxhbmF0aW9uPC9oND4NCjxwPkEgY2F0YWxvZ2VyIGltYWdlIGhhcyBhIGZpbGVzcGVjIGxpa2U6DQo8YnIgLz4NCnJvb3RfcGF0aC9tb2R1bGVzL0NhdGFsb2dlci9DYXRhbG9nZXIuSW1hZ2UucGhwP2k9aXRlbW5hbWVfZl8xXzQwMF8xLmpwZyZhbXA7YW1wO2FjPTgyODg4DQo8L3A+DQo8cD5UaGUgaW50ZXJlc3RpbmcgdGhpbmcgaXMgJnF1b3Q7aXRlbW5hbWVfZl8xXzQwMF8xLmpwZyZxdW90OyAtIHRoZSBzdHVmZiBiZWZvcmUgaXMganVzdCBhIGNhbGwgdG8gdGhlIHByb2dyYW0sIGFuZCB0aGUgJmFtcDthbXA7YWM9ODI4ODggaXMgYSByYW5kb20gdGhpbmcgdGhhdA0KaXMgZGVzaWduZWQgdG8gcHJldmVudCBicm93c2VyIGNhY2hpbmcuIFNvIGV4YW1pbmluZyB0aGUgbmFtZSBwaWVjZSBieSBwaWVjZSAoc2VwYXJhdGluZyBhdCB0aGUgdW5kZXJzY29yZXMpLCB3ZSBoYXZlOjwvcD4NCjx1bD4NCjxsaT5pdGVtIG5hbWUgLSB0aGlzIGlzIHRoZSBhbGlhcyBvZiB0aGUgaXRlbS9jYXRlZ29yeSBwYWdlIGNvbnRhaW5pbmcgdGhlIGltYWdlLjwvbGk+DQo8bGk+aW1hZ2UgdHlwZSAtIHRoaXMgaXMgYSBkZXNpZ25hdGlvbiBmb3IgaW1hZ2UgdHlwZTo8dWw+DQo8bGk+ZiAtIGl0ZW0gZnVsbC1zaXplIGltYWdlPC9saT4NCjxsaT50IC0gaXRlbSB0aHVtYm5haWw8L2xpPg0KPGxpPmNmIC0gY2F0ZWdvcnkgZnVsbC1zaXplZCBpbWFnZTwvbGk+DQo8bGk+Y3QgLSBjYXRlZ29yeSB0aHVtYm5haWw8L2xpPg0KPGxpPmN0ZiAtIHByaW50YWJsZSBjYXRhbG9nIGZ1bGwtc2l6ZWQgaW1hZ2U8L2xpPg0KPC91bD4NCjwvbGk+DQo8bGk+aW1hZ2UgbnVtYmVyIC0gc28gYSBnaXZlbiBpdGVtL2NhdGFsb2cvZXRjIGNhbiBoYXZlIG11bHRpcGxlIGltYWdlczwvbGk+DQo8bGk+bG9uZyBkaW1lbnNpb24gLSBsb25nIGRpbWVuc2lvbiBvZiB0aGUgaW1hZ2UsIGluIHBpeGVsczwvbGk+DQo8bGk+bWlzc2luZyBmbGFnIC0gMSBpZiB5b3Ugd2FudCB0byBzaG93IGFuICZxdW90O2ltYWdlIG1pc3NpbmcmcXVvdDsgaW1hZ2UgaWYgdGhpcyBpbWFnZSBkb2VzbiYjMDM5O3QgZXhpc3QsIDAgb3RoZXJ3aXNlPC9saT4NCjwvdWw+DQo8cD4NClRoaXMgd2lsbCB0YWtlIGFuIGltYWdlIGluIHJvb3RfcGF0aC91cGxvYWRzL2ltYWdlcy9jYXRhbG9nX3NyYy9pdGVtbmFtZV9zcmNfMQ0KPGg0PkFjY2Vzc2luZyB5b3VyIE9yaWdpbmFsIEltYWdlPC9oND4NCjxwPldoZW4gQ2F0YWxvZ2VyIHVwbG9hZHMgaW1hZ2VzLCBpdCBwdXRzIHRoZW0gaW50byBhIGRpcmVjdG9yeSBjYWxsZWQgJnF1b3Q7Y2F0YWxvZ2VyX3NyYyZxdW90OyBpbiB5b3VyIHVwbG9hZHMvaW1hZ2VzLyBkaXJlY3RvcnkuIFRoZXkgaW1hZ2VzIGFyZSBuYW1lZCBhY2NvcmRpbmcgdG8gdGhlIGFsaWFzIG9mIHRoZSBwYWdlOg0KYWxpYXNfc3JjXyMuanBnIHdoZXJlICMgaXMgdGhlIGltYWdlIG51bWJlciBmb3IgdGhhdCBwYWdlLjwvcD4NCjxwPlNvLCB0byBhY2Nlc3MgdGhlIG9yaWdpbmFsbHkgdXBsb2FkZWQgaW1hZ2VzIG9uIGEgQ2F0ZWdvcnkgcGFnZSwgeW91JiMwMzk7ZCBnZW5lcmF0ZSB0aGUgVVJMIG1hbnVhbGx5LjwvcD4NCjxwPlNvIG9uIGEgY2F0ZWdvcnkgcGFnZSwgZm9yIGV4YW1wbGUsIGluc3RlYWQgb2YgdXNpbmcgeyRpdGVtc1tudW1sb29wXS5pbWFnZX0geW91JiMwMzk7ZCB1c2UgJnF1b3Q7L3VwbG9hZHMvaW1hZ2VzL2NhdGFsb2dlcl9zcmMveyRpdGVtc1tudW1sb29wXS5hbGlhc31fc3JjXzEuanBnJnF1b3Q7LjwvcD4NCjxoMz5DcmVkaXRzPC9oMz4NCjxwPlRoYW5rcyB0byA8YSBocmVmPSJodHRwOi8vd3d3LmlkLWEuY28udWsiPlBhdWwgQ29vcGVyPC9hPiBmb3Igc3BvbnNvcmluZyB0aGUgZGV2ZWxvcG1lbnQgb2YgdGV4dGFyZWEgYXR0cmlidXRlcy48L3A+DQo8cD5UaGFua3MgdG8gbnVtZXJvdXMgcGF0aWVudCB1c2VycyBhbmQgYnVnIHRlc3RlcnMgKG1hbnkgb2Ygd2hvbSBoYWQgbm8gaWRlYSB3aGF0IHRoZXkgd2VyZSBnZXR0aW5nIGludG8uKTwvcD4gDQo8aDM+U3VwcG9ydDwvaDM+DQo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+DQo8dWw+DQo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgQ01TIE1hZGUgU2ltcGxlICA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnIj5EZXZlbG9wZXIgRm9yZ2U8L2E+LjwvbGk+DQo8bGk+VG8gb2J0YWluIGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHNlbmQgYW4gZW1haWwgdG8gdGhlIGF1dGhvciBhdCA8YSBocmVmPSJtYWlsdG86c2pnQGNtc21vZHVsZXMuY29tIj4mYW1wO2x0O3NqZ0BjbXNtb2R1bGVzLmNvbSZhbXA7Z3Q7PC9hPi48L2xpPg0KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPg0KPGxpPlRoZSBhdXRob3IgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMiPkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4NCjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseSBhbmQgZ3JvdmVsbGluZyBmb3IgZnJlZSBzdXBwb3J0LjwvbGk+DQo8L3VsPg0KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0DQpvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+DQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmYW1wO2NvcHk7IDIwMDgsIFNhbXVlbCBHb2xkc3RlaW4gPGEgaHJlZj0ibWFpbHRvOnNqZ0BjbXNtb2R1bGVzLmNvbSI+JmFtcDtsdDtzamdAY21zbW9kdWxlcy5jb20mYW1wO2d0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+JzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnSHVzayAmYXJpbmc7IHNldHRlICZxdW90O01vZGlmeSBDYXRhbG9nIFNldHRpbmdzJnF1b3Q7IHJldHRpZ2hldCB0aWwgYnJ1a2VyZSBzb20gc2thbCBhZG1pbmlzdHJlcmUga2F0YWxvZ2VuLic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjc4NzQ2NDcwMi4xMzU1OTkwNzc1LjEzNTY5NTc3MTkuMTM1NzgyNDE1NC40JzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTM1NTk5MDc3NS4xLjEudXRtY3NyPShkaXJlY3QpfHV0bWNjbj0oZGlyZWN0KXx1dG1jbWQ9KG5vbmUpJzsKJGxhbmdbJ3FjYSddID0gJ1AwLTE3ODMwNjczMTEtMTMyMzM2NjExNDExMCc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzLjEuMTAuMTM1NzgyNDE1NCc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nl_NL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ29wdGlvbnNfdGFiJ10gPSAnQ2F0YWxvZ2VyIE9wdGllcyc7CiRsYW5nWyduYW1laW1hZ2VzJ10gPSAnQWZiZWVsZGluZ2VuJzsKJGxhbmdbJ25hbWVmaWxlcyddID0gJ0Jlc3RhbmRlbic7CiRsYW5nWyduYW1lZmlsZSddID0gJ0Jlc3RhbmQnOwokbGFuZ1snZGVsZXRlaW1hZ2UnXSA9ICdWZXJ3aWpkZXIgYWZiZWVsZGluZyc7CiRsYW5nWydkZWxldGVmaWxlJ10gPSAnVmVyd2lqZGVyIGJlc3RhbmQnOwokbGFuZ1snT3duZXInXSA9ICdFaWdlbmFhcic7CiRsYW5nWydDYXRhbG9nSXRlbSddID0gJ0FydGlrZWwgQ2F0YWxvZ3VzJzsKJGxhbmdbJ25hbWVwYWdlJ10gPSAnUGFnaW5hJzsKJGxhbmdbJ1Blcm1pc3Npb25zJ10gPSAnUGVybWlzc2llcyc7CiRsYW5nWydTdWInXSA9ICdTdWIgLSAnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2l0ZW1fc29ydF9vcmRlcjInXSA9ICdBcnRpa2VsIFNvcnRlZXJ2b2xnb3JkZSc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfaXRlbXNfcGVyX3BhZ2UyJ10gPSAnQXJ0aWtlbGVuIHBlciBwYWdpbmEnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2NhdGVnb3J5X3JlY3Vyc2UyJ10gPSAnVG9vbmdlZHJhZyc7CiRsYW5nWyd3aGljaF9hdHRyaWJ1dGVzJ10gPSAnVGUgdG9uZW4gYXR0cmlidXRlbiBpbiBDYXRhbG9ndXMnOwokbGFuZ1snbmF2VGFiJ10gPSAnICB8ICAnOwokbGFuZ1snbmVlZHBlcm1pc3Npb24nXSA9ICdVIG1vZXQgJXMgaW5zdGVsbGVuIG9tIGRpdCB1aXQgdGUgdm9lcmVuLic7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdDYXRhbG9nZXIgJzsKJGxhbmdbJ2FkbWluZGVzY3JpcHRpb24nXSA9ICdCZWhlZXIgY2F0YWxvZ3VzIGluc3RlbGxpbmdlbic7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnV2VldCB1IHpla2VyIGRhdCB1ICVzIHdpbHQgdmVyd2lqZGVyZW4/JzsKJGxhbmdbJ3VuaXF1ZWNvZGUnXSA9ICdVbmlla2UgY29kZSc7CiRsYW5nWyd0ZW1wbGF0ZWxpc3QnXSA9ICdTdWItc2phYmxvbmVuJzsKJGxhbmdbJ2xpc3R0ZW1wbCddID0gJ0JlaGVlciBzdWItc2phYmxvbmVuJzsKJGxhbmdbJ3RpdGxlX2ZpZWxkX3R5cGUnXSA9ICdWZWxkIFR5cGUnOwokbGFuZ1sndGl0bGVfc2VsZWN0X3ZhbHVlcyddID0gJ1NlbGVjdGVlciBXYWFyZGVuKic7CiRsYW5nWyd0aXRsZV9pdGVtX3RhYiddID0gJ0FydGlrZWwgYXR0cmlidXRlbic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV90YWInXSA9ICdDYXRlZ29yaWUgYXR0cmlidXRlbic7CiRsYW5nWyd0aXRsZV9wcmludGFibGVfdGFiJ10gPSAnUHJpbnRiYXJlIGNhdGFsb2d1cyBpbnN0ZWxsaW5nZW4nOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV90YWInXSA9ICdBcnRpa2VsIGFmYmVlbGRpbmdzYWZtZXRpbmdlbic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9pbWFnZV90YWInXSA9ICdDYXRlZ29yaWUgcGFnaW5hIGluc3RlbGxpbmdlbic7CiRsYW5nWyd0aXRsZV9wYXRoX3RhYiddID0gJ1BhZCc7CiRsYW5nWyd0aXRsZV9kZWxldGUnXSA9ICdWZXJ3aWpkZXI/JzsKJGxhbmdbJ3RpdGxlX2ZpbGVfdGFiJ10gPSAnT3ZlcmlnZSBiZXN0YW5kc2luc3RlbGxpbmdlbic7CiRsYW5nWyd0aXRsZV9pbWFnZV90YWInXSA9ICdPdmVyaWdlIGFmYmVlbGRpbmdpbnN0ZWxsaW5nZW4nOwokbGFuZ1sndGl0bGVfaXRlbV90ZW1wbGF0ZV92YXJzJ10gPSAnQXJ0aWtlbCBzamFibG9vbiB2YXJpYWJlbGVuJzsKJGxhbmdbJ3RpdGxlX2NhdF90ZW1wbGF0ZV92YXJzJ10gPSAnQ2F0ZWdvcmllIHNqYWJsb29uIHZhcmlhYmVsZW4nOwokbGFuZ1sndGl0bGVfY2F0YWxvZ190ZW1wbGF0ZV92YXJzJ10gPSAnQ2F0YWxvZ3VzIFNqYWJsb29uICBWYXJpYWJlbGVuJzsKJGxhbmdbJ3RpdGxlX2NvbXBhcmVfdGVtcGxhdGVfdmFycyddID0gJ1ZlcmdlbGlqa2luZyBTamFibG9vbiBWYXJpYWJlbGVuJzsKJGxhbmdbJ3RpdGxlX2ZlYXR1cmVfdGVtcGxhdGVfdmFycyddID0gJ0ZlYXR1cmVzIFNqYWJsb29uIFZhcmlhYmVsZW4nOwokbGFuZ1sndGl0bGVfc2hvd19vbmx5X2V4aXN0aW5nX2ltYWdlcyddID0gJ01pc3NlbmRlIGFmYmVlbGRpbmdlbiBuaWV0IGdlYnJ1aWtlbic7CiRsYW5nWyd0aXRsZV9zaG93X29ubHlfZXhpc3RpbmdfaW1hZ2VzX2hlbHAnXSA9ICdEaXQgcGxhYXRzdCBhbGxlZW4gYWZiZWVsZGluZ3NyZWZlcmVudGllcyBpbiBsaWpzdGVuIGFscyBkZSBhZmJlZWxkaW5nIGJlc3RhYXQuPGJyIC8+KERpdCBpbiBub3JtYWFsIGdlc3Byb2tlbiBnb2VkLCBtYWFyIGFscyB1IGlldHMgc2xpbXMgZG9ldCBtZXQgZGUgYWZiZWVsZGluZzxiciAvPmFycmF5IGluZGV4ZW4sIGthbiBkaXQgcHJvYmxlbWVuIHZlcm9vcnpha2VuLiknOwokbGFuZ1sndGl0bGVfZmx1c2hfY2F0cyddID0gJ1dpcyBjYXRlZ29yaWUgcGFnaW5hIGJ1ZmZlcnMnOwokbGFuZ1sndGl0bGVfZmx1c2hfY2F0c19oZWxwJ10gPSAnQWxzIHUgZWVuIGdyb290IGFhbnRhbCBpdGVtcyB3aWx0IHRvbmVuPGJyIC8+aW4gZWVuIGNhdGVnb3JpZSwgZGFuIGZhbGVuIHNvbW1pZ2UgUEhQLWluc3RhbGxhdGllcyBpbiBoZXQgZ29lZCB3ZWVyZ2V2ZW4gdmFuIGRlIHBhZ2luYTxiciAvPi4gVmluayBkaXQgdmFramUgYWFuIG9tIGhldCBwcm9ibGVlbSB0ZSB2ZXJoZWxwZW4gKHRlc3Qgb3AgbmV2ZW5lZmZlY3RlbikuJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fZmlsZV90eXBlcyddID0gJ1RvZWdlc3RhbmUgYmVzdGFuZHN0eXBlbic7CiRsYW5nWyd0aXRsZV9pbWFnZV91cGxvYWRfcGF0aCddID0gJ01hcCB2b29yIGRlIGdlJnV1bWw7cGxvYWRlIGFmYmVlbGRpbmdlbic7CiRsYW5nWyd0aXRsZV9maWxlX3VwbG9hZF9wYXRoJ10gPSAnTWFwIHZvb3IgZGUgb3ZlcmlnZSBnZSZ1dW1sO3Bsb2FkZSBiZXN0YW5kZW4nOwokbGFuZ1sndGl0bGVfaW1hZ2VfcHJvY19wYXRoJ10gPSAnTWFwIHZvb3IgZGUgYmV3ZXJrdGUgYWZiZWVsZGluZ2VuIChtaW5pYXR1cmVuLCB2ZXJzY2hhYWxkZSBhZmJlZWxkaW5nZW4sIGVuei4pJzsKJGxhbmdbJ3BhdGhfaGVscCddID0gJ1Uga3VudCBiZXBhbGVuIHdhYXIgQ2F0YWxvZ2VyIGJlc3RhbmRlbiBvcHNsYWF0LiBIZXQgcGFkIGlzIHJlbGF0aWVmIHRvdCBoZXQgPGk+dXBsb2Fkc19wYXRoPC9pPiB1aXQgZGUgY29uZmlnLnBocDxiciAvPkxFVCBPUDogQWxzIHUgZGl0IHBhZCB3aWp6aWd0IG5hZGF0IGVyIGFsIGJlc3RhbmRlbiB6aWpuIGdlJnV1bWw7cGxvYWQgemFsIGRlIENhdGFsb2dlciBtb2R1bGUgZGUgdmVyYmluZGluZyB0b3QgaGV0IGJlc3RhbmQgdmVybGllemVuLiBIZXQgYmVzdGFuZCB6ZWxmIHphbCBuaWV0IHdvcmRlbiB2ZXJ3aWpkZXJkLCBhbGxlZW4gZGUgdmVyYmluZGluZyBlciBuYSB0b2UuIFUgenVsdCBkZSBhZmJlZWxkaW5nZW4gb3BuaWV1dyBtb2V0ZW4gdXBsb2FkZW4hJzsKJGxhbmdbJ2NhdGFsb2dlciddID0gJ0NhdGFsb2dlciAnOwokbGFuZ1sndGl0bGVfYXR0cl9vcmRlcl9ieSddID0gJ1ZvbGdvcmRlJzsKJGxhbmdbJ3RpdGxlX2F0dHJfYWxpYXMnXSA9ICdBdHRyaWJ1dXQgQWxpYXMgKFNtYXJ0eSBWcmllbmRlbGlqayknOwokbGFuZ1sndGl0bGVfYXR0cl9sZW5ndGgnXSA9ICdMZW5ndGUqJzsKJGxhbmdbJ3RpdGxlX2F0dHJfZGVmYXVsdCddID0gJ1N0YW5kYWFyZCBXYWFyZGUnOwokbGFuZ1sndGl0bGVfYXR0cl9sZW5ndGhfaGVscCddID0gJyogTGVuZ3RlIGdlbGR0IG5pZXQgdm9vciBUZWtzdGJsb2trZW48YnIgLz5EZSBpbmhvdWQga2FuIGVlbiBrb21tYS1nZXNjaGVpZGVuIGxpanN0IHppam4gdmFuIG9wdGllcyB2b29yIGRlIGRyb3AtZG93bjxiciAvPkRlIG9wdGllIG1vZXQgYmVzdGFhbiB1aXQgZWVuIGFhbmdldmlua3RlIHdhYXJkZSwgZWVuIGtvbW1hLCBlbiBlZW4gdWl0Z2V2aW5rdGUgd2FhcmRlIHZvb3IgaGV0IHZpbmt2YWtqZSc7CiRsYW5nWyd0ZXh0J10gPSAnVGVrc3QnOwokbGFuZ1snZHJvcGRvd24nXSA9ICdEcm9wZG93biAnOwokbGFuZ1sndGV4dGFyZWEnXSA9ICdUZWtzdCBSdWltdGUnOwokbGFuZ1snY2hlY2tib3gnXSA9ICdWaW5rdmFramUnOwokbGFuZ1snaXRlbV9wYWdlJ10gPSAnSXRlbSBQYWdpbmEnOwokbGFuZ1snY2F0ZWdvcnlfcGFnZSddID0gJ0NhdGVnb3JpZXBhZ2luYSc7CiRsYW5nWydjYXRhbG9nX3ByaW50YWJsZSddID0gJ1ByaW50YmFyZSBDYXRhbG9ndXMnOwokbGFuZ1snY2F0YWxvZ19kYXRhc2hlZXQnXSA9ICdDYXRhbG9ndXMgZGF0YXNoZWV0JzsKJGxhbmdbJ2NhdGFsb2dfc2hvcnRfbGlzdCddID0gJ0xpanN0IG1ldCBtb2dlbGlqa2hlZGVuJzsKJGxhbmdbJ2l0ZW1fY29tcGFyaXNvbiddID0gJ0FydGlrZWwgVmVyZ2VsaWpraW5nJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtX3NvcnRfb3JkZXInXSA9ICdaZXQgZGUgc29ydGVlcnZvbGdvcmRlIG9wJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtc19wZXJfcGFnZSddID0gJ1N0ZWwgYWFudGFsIGFydGlrZWxlbiBwZXIgcGFnaW5hIGluIG9wJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9jYXRlZ29yeV9yZWN1cnNlJ10gPSAnU3RlbCBDYXRlZ29yeS13ZWVyZ2F2ZWdlZHJhZyBpbiBvcCc7CiRsYW5nWyd0aXRsZV9pdGVtX3NvcnRfb3JkZXInXSA9ICdTdGFuZGFhcmQgQXJ0aWtlbCBWb2xnb3JkZSc7CiRsYW5nWyd0aXRsZV9wcmludGFibGVfc29ydF9vcmRlciddID0gJ1N0YW5kYWFyZCBwcmludGJhcmUgY2F0YWxvZ3VzIHZvbGdvcmRlJzsKJGxhbmdbJ3RpdGxlX2l0ZW1zX3Blcl9wYWdlJ10gPSAnU3RhbmRhYXJkIGFhbnRhbCBhcnRpa2VsZW4gcGVyIHBhZ2luYSc7CiRsYW5nWyd0aXRsZV9hdmFpbF9hdHRycyddID0gJ0FydGlrZWwgYXR0cmlidXRlbiBiZXNjaGlrYmFhciB2b29yIGhldCBzamFibG9vbic7CiRsYW5nWyd0aXRsZV9hdmFpbF9pbWF0dHJzJ10gPSAnQXJ0aWtlbCBhZmJlZWxkaW5nZW4gYmVzY2hpa2JhYXIgdm9vciBoZXQgc2phYmxvb24nOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX2hlcm8nXSA9ICdBZmJlZWxkaW5nZ3Jvb3R0ZSB2b29yIGFydGlrZWxwYWdpbmEgKGxhbmdlIGFzIGluIHBpeGVscyknOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX3RodW1ibmFpbCddID0gJ01pbmlhdHV1ci1ncm9vdHRlIHZvb3IgYXJ0aWtlbHBhZ2luYSAobGFuZ2UgYXMgaW4gcGl4ZWxzKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfY2F0ZWdvcnknXSA9ICdNaW5pYXR1dXItZ3Jvb3R0ZSB2b29yIGhldCBhcnRpa2VsIGluIGRlIENhdGVnb3JpZSBwYWdpbmEgKGxhbmdlIGFzIGluIHBpeGVscyknOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX2NhdGFsb2cnXSA9ICdNaW5pYXR1dXItZ3Jvb3R0ZSB2b29yIGhldCBhcnRpa2VsIGluIGRlIENhdGFsb2d1cyBwYWdpbmEgKGxhbmdlIGFzIGluIHBpeGVscyknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV9oZXJvJ10gPSAnQWZiZWVsZGluZ3Nncm9vdHRlIHZvb3IgY2F0ZWdvcmllcGFnaW5hIChsYW5nZSBhcyBpbiBwaXhlbHMpJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX3NpemVfdGh1bWJuYWlsJ10gPSAnTWluaWF0dXVyLWdyb290dGUgdm9vciBjYXRlZ29yaWVwYWdpbmEgKGxhbmdlIGFzIGluIHBpeGVscyknOwokbGFuZ1sndGl0bGVfdGVtcGxhdGUnXSA9ICdTamFibG9vbic7CiRsYW5nWyd0aXRsZV90ZW1wbGF0ZV90eXBlJ10gPSAnU2phYmxvb250eXBlJzsKJGxhbmdbJ3RpdGxlX3RpdGxlJ10gPSAnVGl0ZWwnOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9jb3VudCddID0gJ01heGltdW0gYWFudGFsIHdlZXJnYXZlbiB2b29yIGllZGVyIGFydGlrZWwnOwokbGFuZ1sndGl0bGVfaXRlbV9maWxlX2NvdW50J10gPSAnTWF4aW1hYWwgYWFudGFsIGFuZGVyZSBiZXN0YW5kZW4gZGllIHBlciBhcnRpa2VsIHdvcmRlbiBnZWFzc29jaWVlcmQnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2VfY291bnQnXSA9ICdNYXhpbXVtIGFhbnRhbCBiYW5uZXItYWZiZWVsZGluZ2VuIHZvb3IgaWVkZXJlIGNhdGVnb3JpZXBhZ2luYSAnOwokbGFuZ1sndGl0bGVfaXRlbV9hdHRyaWJ1dGVzX2hlbHAnXSA9ICdJZWRlciBhdHRyaWJ1dXQgZGllIHUgaGllciBpbnZvZXJ0LCB6YWwgZGUgdGl0ZWwgdmFuIGVlbiB2ZWxkIHppam4gZGllIHUga3VudCBnZWJydWlrZW4gb20gZWVuIGluZGl2aWR1ZWVsIGl0ZW0gdGUgYmVzY2hyaWp2ZW4gZW4gemFsIGdldG9vbmQgd29yZGVuIGJpaiBkYXQgaXRlbS4gTW9nZWxpamsgbW9ldCB1IHV3IHNqYWJsb29uIGJpandlcmtlbiBvbSBkZXplIGF0dHJpYnV0ZW4gdGUgZ2VicnVpa2VuLiBNYWFrIGVlbiBiZXN0YWFuZGUgYXR0cmlidXV0IGxlZWcgb2YgdmVydmFuZyBkZSBpbmhvdWQgb20gaGV0IGF0dHJpYnV1dCB0ZSB2ZXJ3aWpkZXJlbiBvZiB0ZSB2ZXJ2YW5nZW4uJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2F0dHJpYnV0ZXNfaGVscCddID0gJ0llZGVyIGF0dHJpYnV1dCBkaWUgdSBoaWVyIGludm9lcnQsIHphbCBkZSB0aXRlbCB2YW4gZWVuIHZlbGQgemlqbiBkaWUgdSBrdW50IGdlYnJ1aWtlbiBvbSBlZW4gaXRlbWNhdGVnb3JpZSB0ZSBiZXNjaHJpanZlbiBlbiB6YWwgZ2V0b29uZCB3b3JkZW4gb3AgZGllIGNhdGVnb3JpZXBhZ2luYS4gTW9nZWxpamsgbW9ldCB1IHV3IHNqYWJsb29uIGJpandlcmtlbiBvbSBkZXplIGF0dHJpYnV0ZW4gdGUgZ2VicnVpa2VuLiBNYWFrIGVlbiBiZXN0YWFuZGUgYXR0cmlidXV0IGxlZWcgb2YgdmVydmFuZyBkZSBpbmhvdWQgb20gaGV0IGF0dHJpYnV1dCB0ZSB2ZUVhY2ggYXR0cmlidXRlIHlvdSBlbnRlciBoZXJlIHdpbGwgYmUgdGhlIHRpdGxlIG9mIGEgZmllbGQgdGhhdCB5b3UgY2FuIHVzZSB0byBkZXNjcmliZSB0aGUgZW50aXJlIGNhdGFsb2csIGFuZCB3aWxsIGJlIGRpc3BsYXllZCBvbiB0aGUgcHJpbnRhYmxlIGNhdGFsb2cgcGFnZS4gWW91IG1heSBoYXZlIHRvIHVwZGF0ZSB5b3VyIHRlbXBsYXRlIHRvIHJlZmxlY3QgdGhlc2UgYXR0cmlidXRlcy4gQmxhbmsgb3V0IG9yIHR5cGUgb3ZlciBhbiBleGlzdGluZyBhdHRyaWJ1dGUgdG8gcmVtb3ZlIG9yIHJlcGxhY2UgaXQucndpamRlcmVuIG9mIHRlIHZlcnZhbmdlbi4nOwokbGFuZ1sndGl0bGVfY2F0YWxvZ19hdHRyaWJ1dGVzX2hlbHAnXSA9ICdJZWRlciBhdHRyaWJ1dXQgZGllIHUgaW52b2VydCwgemFsIGRlIHRpdGVsIHZhbiBlZW4gdmVsZCB6aWpuIGRpZSB1IGt1bnQgZ2VicnVpa2VuIG9tIGVlbiBnZWhlbGUgY2F0ZWdvcmllIHRlIGJlc2NocmlqdmVuIGVuIHphbCBnZXRvb25kIHdvcmRlbiBvcCBkZSBwcmludGJhcmUgY2F0ZWdvcmllcGFnaW5hLiBNb2dlbGlqayBtb2V0IHUgdXcgc2phYmxvb24gYmlqd2Vya2VuIG9tIGRlemUgYXR0cmlidXRlbiB0ZSBnZWJydWlrZW4uIE1hYWsgZWVuIGJlc3RhYW5kZSBhdHRyaWJ1dXQgbGVlZyBvZiB2ZXJ2YW5nIGRlIGluaG91ZCBvbSBoZXQgYXR0cmlidXV0IHRlIHZlcndpamRlcmVuIG9mIHRlIHZlcnZhbmdlbi4nOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfc29ydCddID0gJ0NhdGVnb3JpZXBhZ2luYSBBcnRpa2VsLWxpanN0IHZvbGdvcmRlJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2UnXSA9ICdTdGFuZGFhcmQgZ2VkcmFnIHZvb3IgY2F0ZWdvcmlld2VlcmdhdmUnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9pdGVtc19hbGwnXSA9ICdWb2VnIGFsbGUgYXJ0aWtlbGVuIGJpbm5lbiBkZXplIGNhdGVnb3JpZSB0b2UsIGluY2x1c2llZiBhcnRpa2VsZW4gaW4gc3ViY2F0ZWdvcmllJmV1bWw7bi4nOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9pdGVtc19vbmUnXSA9ICdWb2VnIGFsbGUgYXJ0aWtlbGVuIGJpbm5lbiBkZXplIGNhdGVnb3JpZSB0b2UsIGJlaGFsdmUgYXJ0aWtlbGVuIGluIGRlIHN1YmNhdGVnb3JpZSZldW1sO24uJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfY2F0ZWdvcmllc19hbGwnXSA9ICdWb2VnIGFsbGUgY2F0ZWdvcmllJmV1bWw7biBiaW5uZW4gZGV6ZSBjYXRlZ29yaWUgdG9lLCBpbmNsdXNpZWYgY2F0ZWdvcmllJmV1bWw7biBpbiBzdWJjYXRlZ29yaWUmZXVtbDtuJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfY2F0ZWdvcmllc19vbmUnXSA9ICdWb2VnIGFsbGUgSXRlbXMgZW4gQ2F0ZWdvcmllJmV1bWw7biB0b2UgaW4gZGV6ZSBDYXRlZ29yaWUsIGJlaGFsdmUgaXRlbXMgZW4gY2F0ZWdvcmllJmV1bWw7biB1aXQgc3ViLWNhdGVnb3JpZSZldW1sO24nOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9taXhlZF9hbGwnXSA9ICdWb2VnIGFsbGUgSXRlbXMgZW4gQ2F0ZWdvcmllJmV1bWw7biB0b2UgaW4gZGV6ZSBDYXRlZ29yaWUsIGluY2x1c2llZiBpdGVtcyBlbiBjYXRlZ29yaWUmZXVtbDtuIHVpdCBzdWJjYXRlZ29yaWUmZXVtbDtuJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfbWl4ZWRfb25lJ10gPSAnVm9lZyBhbGxlIEl0ZW1zIGVuIENhdGVnb3JpZSZldW1sO24gZGlyZWN0IGFhbiBkZXplIGNhdGVnb3JpZSB0b2UsIGJlaGFsdmUgaXRlbXMgb2YgY2F0ZWdvcmllJmV1bWw7biBpbiBkZSBzdWJjYXRlZ29yaWUmZXVtbDtuJzsKJGxhbmdbJ3RpdGxlX3Nob3dfbWlzc2luZ19pbWFnZXMnXSA9ICdUb29uICZxdW90O0dlZW4gQWZiZWVsZGluZyZxdW90OyBwbGFhdGplIGFscyBiZXRyZWZmZW5kZSBhZmJlZWxkaW5nZW4gb250YnJla2VuJzsKJGxhbmdbJ3RpdGxlX3Nob3dfbWlzc2luZ19pbWFnZXNfbG9uZyddID0gJ1Rvb24gZWVuIHNwZWNpYWxlICZxdW90O0dlZW4gQWZiZWVsZGluZyZxdW90OyBhZmJlZWxkaW5nIGFscyBlciBlZW4gYWZiZWVsZGluZyBvbnRicmVla3QgKG1ha2tlbGlqayB2b29yIGRlYnVnZ2luZy4gQW5kZXJzIHdvcmR0IGVyIGVlbiB0cmFuc3BhcmFudGUgYWZiZWVsZGluZyBnZWJydWlrdCkuJzsKJGxhbmdbJ25hdHVyYWxfb3JkZXInXSA9ICdOYXZpZ2F0aWUgdm9sZ29yZGUnOwokbGFuZ1snYWxwaGFfb3JkZXInXSA9ICdBbGZhYmV0aXNjaGUgdm9sZ29yZGUnOwokbGFuZ1snbWFuYWdlcHJlZnMnXSA9ICdCZWhlZXIgdm9vcmtldXJlbic7CiRsYW5nWydtYW5hZ2VhdHRycyddID0gJ0JlaGVlciBnZWJydWlrZXJnZWRlZmluaWVlcmRlIGF0dHJpYnV0ZW4nOwokbGFuZ1snZ2xvYmFsb3BzJ10gPSAnQWxnZW1lbmUgQ2F0YWxvZ3VzIHRha2VuJzsKJGxhbmdbJ2FkZHRlbXBsYXRlJ10gPSAnVm9lZyBzamFibG9vbiB0b2UnOwokbGFuZ1sncmVpbXBvcnR0ZW1wbGF0ZXMnXSA9ICdIZXJpbXBvcnRlZXIgdm9vcmJlZWxkc3ViLXNqYWJsb25lbic7CiRsYW5nWydyZWltcG9ydGVkJ10gPSAnVm9vcmJlZWxkIHN1Yi1zamFibG9uZW4gemlqbiBnZSZpdW1sO21wb3J0ZWVyZCc7CiRsYW5nWyd0ZW1wbGF0ZXVwZGF0ZWQnXSA9ICdTamFibG9vbiB0b2VnZXZvZWdkL2dlJnV1bWw7cGRhdGUuJzsKJGxhbmdbJ3RlbXBsYXRlZGVsZXRlZCddID0gJ1NqYWJsb29uIHZlcndpamRlcmQuJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ1Zvb3JrZXVyZW4gZ2UmdXVtbDtwZGF0ZS4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxldmVyc2llICVzIGdlJml1bWw7bnN0YWxsZWVyZC4nOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bGUgZ2UmdXVtbDtwZGF0ZSBuYWFyIHZlcnNpZSAlcy4nOwokbGFuZ1snYmFkZmlsZSddID0gJ0Jlc3RhbmQgJnF1b3Q7JXMmcXVvdDsgaGVlZnQgZWVuIG5pZXQgdG9lZ2VzdGFuZSBleHRlbnRpZS4nOwokbGFuZ1snYmFkaW1hZ2UnXSA9ICdQcm9ibGVlbSBiaWogdXBsb2FkZW4gJnF1b3Q7JXMmcXVvdDsgKGNvbnRyb2xlZXIgYmVzdGFuZGdyb290dGUgb2Ygc2VydmVyaW5zdGVsbGluZ2VuKS4nOwokbGFuZ1snYmFkaW1hZ2Vmb3JtYXQnXSA9ICcmcXVvdDslcyZxdW90OyBpcyBuaWV0IGNvcnJlY3QuIEFsZWVuIGpwZWdzIHppam4gb3AgZGl0IG1vbWVudCB0b2VnZXN0YWFuLic7CiRsYW5nWyd1cGxvYWRlZCddID0gJ0Jlc3RhbmQgJnF1b3Q7JXMmcXVvdDsgZ2UmdXVtbDtwbG9hZCB2b29yIGFydGlrZWwgJXMuJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWxlIGdlZGUmaXVtbDtuc3RhbGxlZXJkJzsKJGxhbmdbJ2F0dHJzdXBkYXRlZCddID0gJ0F0dHJpYnV0ZW4gZ2UmdXVtbDtwZGF0ZS4nOwokbGFuZ1snbm9nbG9iYWxjaGFuZ2UnXSA9ICdOaWV0IHZlcmFuZGVyZW4nOwokbGFuZ1snZ2xvYmFsbHl1cGRhdGVkJ10gPSAnQWFucGFzc2luZ2VuIGRvb3JnZXZvZXJkLic7CiRsYW5nWydlZGl0dGVtcGxhdGUnXSA9ICdQYXMgc2phYmxvb24gYWFuJzsKJGxhbmdbJ3N1YnRlbXBsYXRlcyddID0gJ0NhdGFsb2d1cyBTdWItc2phYmxvbmVuJzsKJGxhbmdbJ25leHQnXSA9ICc6JnJhcXVvOyc7CiRsYW5nWydwcmV2J10gPSAnJmxhcXVvOzonOwokbGFuZ1snZWRpdCddID0gJ0FhbnBhc3Nlbic7CiRsYW5nWydkZWxldGUnXSA9ICdWZXJ3aWpkZXJlbic7CiRsYW5nWydub3RlbXBsYXRlcyddID0gJ0VyIHppam4gZ2VlbiBzdWItc2phYmxvbmVuIGdlJml1bWw7bnN0YWxsZWVyZCc7CiRsYW5nWydoZWxwdGV4dCddID0gJzxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPiANCjxwPlRoaXMgbW9kdWxlIGxldHMgeW91IGNyZWF0ZSBvbmxpbmUgY2F0YWxvZ3Mgb3IgcG9ydGZvbGlvcy4gQ2F0YWxvZ3MgY29uc2lzdCBvZiAmcXVvdDtDYXRhbG9nIEl0ZW1zJnF1b3Q7IHdoaWNoIGNvdWxkIGJlIHByb2R1Y3RzLCB3b3JrcyBvZiBhcnQsIG9yIHRoZSBsaWtlLCBhbmQgJnF1b3Q7Q2F0YWxvZyBDYXRlZ29yaWVzJnF1b3Q7IHdoaWNoIGNvdWxkIGJlIGl0ZW0gY2F0ZWdvcmllcyBvciBvdGhlciBuYXR1cmFsIGRpdmlzaW9ucyBvZiB0aGUgY2F0YWxvZy48L3A+DQo8cD5DYXRlZ29yaWVzIG1heSBiZSBkZWZpbmVkIGhpZXJhcmNoaWNhbGx5ICh1c2luZyB0aGUgc3RhbmRhcmQgQ01TIE1hZGUgU2ltcGxlIGNvbnRlbnQgbGlzdCkuIENhdGVnb3J5IHBhZ2VzIGNhbiBkaXNwbGF5IGl0ZW1zIGluIHRoZSBjYXRlZ29yeSBhbmQvb3Igc3ViY2F0ZWdvcmllcywgb3B0aW9uYWxseSByZWN1cnNpbmcgdGhyb3VnaCBzdWItY2F0ZWdvcmllcy4gVGhpcyBiZWhhdmlvciBjYW4gYmUgY29uZmlndXJlZCBvbiBhIHBlci1jYXRlZ29yeSBiYXNpcy48L1A+DQo8cD5UaGVyZSBpcyBhbHNvIGEgUHJpbnRhYmxlIENhdGFsb2csIHdoaWNoIHJlcHJlc2VudHMgdGhlIHdob2xlIGNvbGxlY3Rpb24gb2YgQ2F0YWxvZyBJdGVtcyBvbiBhIHNpbmdsZSBwYWdlICh0aGlzIGlzIGN1cnJlbnRseSBpbXBsZW1lbnRlZCBiYWRseSwgYW5kIHdpbGwgbG9hZCBzbG93bHkpLjwvcD4NCjxwPlRoZSBtb2R1bGUgaGFzIGJ1aWx0LWluIHN1cHBvcnQgZm9yICZxdW90O0NvbnRlbnQgQWxpYXNlcyZxdW90OyAoYSBtb2R1bGUgYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudGFsaWFzZXMvIj50aGUgRGV2ZWxvcGVyIEZvcmdlPC9hPiksIHdoaWNoIGFsbG93cyB5b3UgdG8gcGxhY2UgYW55IENhdGFsb2cgSXRlbSBpbnRvIG11bHRpcGxlIENhdGFsb2cgQ2F0ZWdvcmllcy48L3A+DQo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4NCjxwPldoZW4geW91IGluc3RhbGwgdGhpcyBtb2R1bGUsIGl0IGNyZWF0ZXMgdGhyZWUgbmV3IENvbnRlbnQgVHlwZXM6IENhdGFsb2cgSXRlbSwgQ2F0YWxvZyBDYXRlZ29yeSwgYW5kIFByaW50YWJsZSBDYXRhbG9nLiBXaGVuIHlvdSYjMDM5O3JlIGluIHlvdXIgc2l0ZSBhZG1pbmlzdHJhdGlvbiBjYXRlZ29yeSwgeW91IGFkZCBDYXRhbG9nIEl0ZW1zIGFuZCBDYXRhbG9nIENhdGVnb3JpZXMganVzdCBhcyB5b3Ugd291bGQgYW55IG90aGVyIGtpbmQgb2YgcGFnZS4gU2VsZWN0IENvbnRlbnQgJmFtcDtndDsgUGFnZXMgJmFtcDtndDsgQWRkIENvbnRlbnQsIGFuZCB0aGVuIHNlbGVjdCAmcXVvdDtDYXRhbG9nIEl0ZW0mcXVvdDsgb3IgJnF1b3Q7Q2F0YWxvZyBDYXRlZ29yeSZxdW90OyBmcm9tIHRoZSBDb250ZW50IFR5cGUgcHVsbGRvd24uPC9wPg0KPGg0PkNhdGFsb2cgSXRlbXM8L2g0Pg0KPHA+QWRkaW5nIGEgQ2F0YWxvZyBJdGVtIGlzIHNpbWlsYXIgdG8gYWRkaW5nIGFuIG9yZGluYXJ5IHBhZ2UgdG8geW91ciBzaXRlLiBUaGUgZGF0YSBmaWVsZHMgZm9yIHRoZSBJdGVtIGFyZSBub3QgZXhhY3RseSB0aGUgc2FtZSwgaG93ZXZlci4gQWxzbyBub3RlIHRoYXQgaW4gdGhlICZxdW90O0ltYWdlcyZxdW90OyB0YWIsIHlvdSBjYW4gc2VsZWN0IG11bHRpcGxlIGltYWdlcyB0byB1cGxvYWQgZm9yIHRoZSBpdGVtLiBXaGVuIHlvdSB1cGxvYWQgaW1hZ2VzLCB0aGUgc3lzdGVtIHdpbGwgc2l6ZSB0aGVtIGFwcHJvcHJpYXRlbHkgZm9yIHRoZSBjYXRhbG9nLCBjcmVhdGUgdGh1bWJuYWlscyBmb3IgdXNlIGluIHRoZSBJdGVtJiMwMzk7cyBwYWdlLCBjcmVhdGUgdGh1bWJuYWlscyBmb3IgYW55IENhdGVnb3J5IHBhZ2VzLCBhbmQgc28gb24uIFRoaXMgcmVxdWlyZXMgdGhhdCB5b3UgaGF2ZSBHRCBvciBhIHNpbWlsYXIgaW1hZ2UgbGlicmFyeSBpbnN0YWxsZWQuIEN1cnJlbnRseSwgb25seSBqcGVnIGZvcm1hdCBpbWFnZXMgYXJlIHN1cHBvcnRlZC48L3A+DQo8aDQ+Q2F0YWxvZyBDYXRlZ29yaWVzPC9oND4NCjxwPkEgQ2F0YWxvZyBDYXRlZ29yeSBpcyB1c2VkIGZvciBvcmdhbml6aW5nIHlvdXIgY2F0YWxvZyBpdGVtcy4gSXQgcHJvdmlkZXMgYSBwYWdlIHRoYXQgbGlzdHMgQ2F0YWxvZ2VyIGNvbnRlbnQgdGhhdCBpcyBjb250YWluZWQgYnkgaXQuIEEgQ2F0YWxvZyBJdGVtIGlzIGNvbnNpZGVyZWQgdG8gYmUgcGFydCBvZiBhIENhdGFsb2cgQ2F0ZWdvcnkgaWYgaXQgaXMgYmVsb3cgdGhhdCBDYXRlZ29yeSBpbiB0aGUgU2l0ZSBIaWVyYXJjaHkuIENhdGVnb3JpZXMgY2FuIHNpbWlsYXJseSBpbmNsdWRlIG90aGVyIENhdGVnb3JpZXMuPC9wPg0KPHA+Q2F0YWxvZyBDYXRlZ29yaWVzIGhhdmUgYSBudW1iZXIgb2Ygc2V0dGluZ3MgdG8gZGV0ZXJtaW5lIGhvdyB0aGV5IHNob3VsZCBkaXNwbGF5IHRoZSBJdGVtcyBhbmQgQ2F0ZWdvcmllcyB0aGV5IGNvbnRhaW46IGlmIHlvdSBsb29rIGF0IHRoZSAmcXVvdDtPcHRpb25zJnF1b3Q7IHRhYiwgeW91IGNhbiBjaG9vc2UgaG93IG1hbnkgaXRlbXMgYW5kL29yIGNhdGVnb3JpZXMgdG8gc2hvdywgd2hhdCBvcmRlciB0byBzaG93IHRoZW0gaW4sIHdoZXRoZXIgdG8gZGlzcGxheSBvbmx5IGl0ZW1zIG9yIG9ubHkgY2F0ZWdvcmllcyBvciBib3RoLCBhbmQgaG93IG1hbnkgbGV2ZWxzIG9mIHRoZSBoaWVyYXJjaHkgdG8gZGlzcGxheSBiZWxvdyB0aGUgY2F0ZWdvcnkgcGFnZS48L3A+DQo8cD5Gb3IgZXhhbXBsZSwgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6PC9wPg0KPG9sPg0KCTxsaT48Yj5IYXRzPC9iPg0KCQk8b2w+DQoJCQk8bGk+PGI+RmFzaGlvbjwvYj4NCgkJCSAJPG9sPg0KCQkJIAkJPGxpPkZlYXRoZXJlZCBIYXQ8L2xpPjxsaT5GZWRvcmEgPC9saT48bGk+QmFzZWJhbGwgSGF0PC9saT4NCgkJCSAJPC9vbD4NCgkJCSA8L2xpPg0KCQkgCTxsaT48Yj5Xb3JrIEhhdHM8L2I+DQoJCSAgICAJPG9sPg0KCQkgICAgCQk8bGk+SGFyZCBIYXQ8L2xpPjxsaT5EaXZpbmcgSGVsbWV0PC9saT4NCgkJICAgIAk8L29sPg0KCQkgICAgPC9saT4NCgkJPC9vbD4NCgk8L2xpPg0KPC9vbD4NCjxwPkluIHRoaXMgZGlhZ3JhbSwgYm9sZGVkIGl0ZW1zIGFyZSBDYXRhbG9nIENhdGVnb3JpZXMsIGFuZCBub24tYm9sZGVkIGl0ZW1zIGFyZSBDYXRhbG9nIEl0ZW1zLiBEZXBlbmRpbmcgdXBvbiBob3cgeW91IHNldCB5b3VyIG9wdGlvbnMsIHRoZSBIYXRzIENhdGVnb3J5IFBhZ2UgY2FuIHNob3cgb25seSBlbnRyaWVzIGZvciB0aGUgRmFzaGlvbiBhbmQgV29yayBIYXRzIENhdGVnb3J5IFBhZ2VzLCBvciBpdCBjYW4gc2hvdyBlbnRyaWVzIGZvciBGYXNoaW9uLCBXb3JrIEhhdHMsIGFuZCBhbGwgdGhlIGhhdHMgbGlzdGVkIGJlbG93IHRoZW0uPC9wPg0KPHA+WW91IGNhbiBvcHQgdG8gc2hvdyB0aGUgaXRlbXMgaW4gJnF1b3Q7bmF0dXJhbCZxdW90OyBvcmRlciAoaS5lLiwgdGhlIG9yZGVyIHRoZSBJdGVtcyBzaG93IHVwIGluIHRoZSBDTVMgQ29udGVudCBIaWVyYXJjaHkpLCBvciBpbiBhbHBoYWJldGljYWwgb3JkZXIuPC9QPg0KPHA+SWYgeW91IGhhdmUgbGFyZ2UgbnVtYmVycyBvZiBpdGVtcyBpbiBhIENhdGVnb3J5LCB5b3UgY2FuIHNldCB0aGUgbWF4aW11bSBudW1iZXIgdG8gYmUgZGlzcGxheWVkIGluIGEgQ2F0ZWdvcnkgUGFnZSwgYW5kIHRoZSBwYWdlIHdpbGwgYXV0b21hdGljYWxseSBjcmVhdGUgbGlua3MgdG8gbmF2aWdhdGUgdGhyb3VnaCB0aGUgbGlzdC48L3A+DQo8cD5FYWNoIENhdGVnb3J5IHBhZ2UgY2FuIGhhdmUgZGlmZmVyZW50IHNldHRpbmdzIGZvciBzb3J0IG9yZGVyLCBsZXZlbHMgdG8gZGlzcGxheSwgYW5kIG51bWJlciBvZiBpdGVtcy4gWW91IGNhbiBzZXQgdGhlIGRlZmF1bHQgZm9yIHRoZXNlIHZhbHVlcyBpbiBFeHRlbnNpb25zICZhbXA7Z3Q7IENhdGFsb2dlciAmYW1wO2d0OyBNYW5hZ2UgUHJlZmVyZW5jZXMuIElmLCBhdCBhIGxhdGVyIGRhdGUsIHlvdSB3aXNoIHRvIGNoYW5nZSBzb21lIHNldHRpbmcgb24gYWxsIG9mIHlvdXIgQ2F0ZWdvcnkgcGFnZXMsIHlvdSBjYW4gZ28gaW50byBFeHRlbnNpb25zICZhbXA7Z3Q7IENhdGFsb2dlciAmYW1wO2d0OyBHbG9iYWwgQ2F0YWxvZyBPcHRpb25zLCBhbmQgbWFrZSB0aG9zZSBjaGFuZ2VzLjwvcD4NCjxoND5JbWFnZXM8L2g0Pg0KPHA+Q2F0YWxvZ2VyIGFsbG93cyB5b3UgdG8gc2VsZWN0IGRpZmZlcmVudCBzaXplIGltYWdlcyBmb3IgSXRlbSBwYWdlcywgQ2F0ZWdvcnkgcGFnZXMsIGFuZCB0aGUgUHJpbnRhYmxlIENhdGFsb2cuIFlvdSBjYW4gc2V0IHRoZXNlIGRlZmF1bHRzIGluIEV4dGVuc2lvbnMgJmFtcDtndDsgQ2F0YWxvZ2VyICZhbXA7Z3Q7IE1hbmFnZSBQcmVmZXJlbmNlcy48L3A+DQo8cD5XaGVuIHlvdSB1cGxvYWQgaW1hZ2VzLCB0aGUgb3JpZ2luYWwgaXMgc3RvcmVkLiBXaGVuIHNvbWVvbmUgdmlzaXRzIGEgcGFnZSwgdGhlIHJlZHVjZWQgc2l6ZSBpbWFnZXMgYXJlIHJlcXVlc3RlZCB1c2luZyBhIHNwZWNpYWwgVVJMLCB3aGljaCB3aWxsIHJlZGlyZWN0IHRoZSB1c2VyJiMwMzk7cyBicm93c2VyIHRvIHRoZSBzY2FsZWQgaW1hZ2UgaWYgaXQgZXhpc3RzLCBhbmQgY3JlYXRpbmcgdGhlIHNjYWxlZCBpbWFnZSBpZiBpdCBkb2VzbiYjMDM5O3QuIFRoaXMgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgaW1hZ2VzLCB3aXRob3V0IGhhdmluZyB0byByZS11cGxvYWQgYWxsIHRoZSBpbWFnZXMsIG9yIHJlc2NhbGluZyB0aGVtIGFsbCBhdCBvbmNlLjwvcD4NCjxwPlRoaXMgaW1hZ2UgcmVzY2FsaW5nIGNvZGUgcmVxdWlyZXMgdGhhdCB5b3UgaGF2ZSBlaXRoZXIgSW1hZ2VNYWdpY2sgb3IgR0QgbGliIGluc3RhbGxlZCwgYW5kIGNvbmZpZ3VyZWQgaW4geW91ciBDTVMgTWFkZSBTaW1wbGUgY29uZmlnLnBocC48L3A+DQo8aDQ+RmlsZXM8L2g0Pg0KPHA+Q2F0YWxvZ2VyIGFsbG93cyB5b3UgdG8gYXNzb2NpYXRlIGFyYml0cmFyeSBmaWxlcyB3aXRoIGFueSBJdGVtIHBhZ2UuIFRoZXNlIGFyZSB1cGxvYWRlZCB2aWEgdGhlIGFkbWluLCBqdXN0IGxpa2UgaW1hZ2VzLiBUaGVyZQ0KaGF2ZSBiZWVuIHJ1ZGltZW50YXJ5IHNlY3VyaXR5IGNvbnNpZGVyYXRpb25zIChlLmcuLCBmaWxlLWV4dGVuc2lvbi1iYXNlZCByZXN0cmljdGlvbnMpLCBob3dldmVyLCBhcyB3aXRoIGFueSBmaWxlIHVwbG9hZA0KY2FwYWJpbGl0eSB0aGF0IHB1dHMgZmlsZXMgaW5zaWRlIHRoZSB3ZWIgcm9vdCwgaWYgeW91IGRvIG5vdCB0cnVzdCB5b3VyIHVwbG9hZGVycywgeW91IGFyZSBhdCBzb21lIGRlZ3JlZSBvZiByaXNrLiBZb3UgaGF2ZSBiZWVuIHdhcm5lZC48L3A+DQo8aDM+RmVhdHVyZSBMaXN0czwvaDM+DQo8cD5Zb3UgY2FuLCBhcyBvZiB2ZXJzaW9uIDAuNCwgaGF2ZSAmcXVvdDtmZWF0dXJlIGxpc3RzJnF1b3Q7IHdoaWNoIGFyZSB0aGUgPGk+bjwvaT4gbW9zdC1yZWNlbnRseSBhZGRlZCBjYXRhbG9nIGl0ZW1zLCBvciBhIGNvbGxlY3Rpb24gb2YgPGk+azwvaT4gcmFuZG9tIGl0ZW1zIGZyb20gdGhlIGNhdGFsb2cuPC9wPg0KPGg0PiZxdW90O0FsbCZxdW90OyBGZWF0dXJlIExpc3Q8L2g0Pg0KPHA+VG8gZ2V0IGEgbGlzdCBvZiBhbGwgY2F0YWxvZyBpdGVtcyAob3B0aW9uYWxseSB1bmRlciBhIHNwZWNpZmllZCBwYXJ0IG9mIHlvdXIgaGllcmFyY2h5KSBmb3IgcHJvY2Vzc2luZyB2aWEgYSB0ZW1wbGF0ZSwgeW91IGNhbiB1c2UNCnRoZSAmcXVvdDthbGwmcXVvdDsgZmVhdHVyZSBsaXN0LjwvcD4NCjxwPlRoZSBzeW50YXggZm9yIGFuICZxdW90O2FsbCZxdW90OyBsaXN0IGlzIGxpa2U6PC9wPg0KPHA+JmFtcDsjMTIzO0NhdGFsb2dlciBhY3Rpb249JiMwMzk7YWxsJiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTt9LCB3aGVyZSBzdWJfdGVtcGxhdGUgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGxpc3QuDQpUaGVyZSBpcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIsIGFsaWFzPSYjMDM5O3BhZ2VfYWxpYXMmIzAzOTssIHdoZXJlIHBhZ2VfYWxpYXMgaW5kaWNhdGVzIHRoZSB0b3Agb2YgdGhlIHRyZWUgKGUuZy4sIGEgcGxhY2UgaW4geW91ciBtZW51DQpoaWVyYXJjaHksIHR5cGljYWxseSBhIGNhdGVnb3J5IHBhZ2UpIGluIHdoaWNoIHRvIGxvb2sgZm9yIG5ldyBpdGVtcy4gQSBzcGVjaWFsIHZhbHVlIGZvciAmcXVvdDtwYWdlX2FsaWFzJnF1b3Q7IGlzICZxdW90Oy8mcXVvdDssIHdoaWNoIG1lYW5zIHRvDQpzdGFydCBhdCB0aGUgcm9vdC48L3A+DQo8cD5UaGlzIGlzIHVzZWZ1bCBmb3IgY2F0YWxvZy13aWRlIG9wZXJhdGlvbnMuIEZvciBleGFtcGxlLCB0byBnZXQgYSBsaXN0IG9mIGFsbCBjYXRlZ29yaWVzIChhbmQgZG8gc29tZXRoaW5nIHdpdGggdGhlbSksDQp5b3UgY291bGQgdXNlIHRoZSB0YWcgJmFtcDsjMTIzO0NhdGFsb2dlciBhY3Rpb249JiMwMzk7YWxsJiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTsgYWxpYXM9JiMwMzk7LyYjMDM5OyByZWN1cnNlPSYjMDM5O2NhdGVnb3JpZXNfYWxsJiMwMzk7fS4gWW91ciB0ZW1wbGF0ZSBjb3VsZCB0aGVuIHRocm93DQp0aG9zZSBjYXRlZ29yaWVzIGludG8gYSBwdWxsZG93biBtZW51IHRoYXQgcmVkaXJlY3RlZCB5b3UgdG8gdGhhdCBjYXRlZ29yeSYjMDM5O3MgcGFnZSwgZm9yIGV4YW1wbGU6PC9wPg0KPHByZT4NCiZhbXA7bHQ7c2VsZWN0IG5hbWU9JnF1b3Q7Zm9vJnF1b3Q7IG9uY2hhbmdlPSZxdW90O2RvY3VtZW50LmxvY2F0aW9uPXRoaXMub3B0aW9uc1t0aGlzLnNlbGVjdGVkSW5kZXhdLnZhbHVlOyZxdW90Oz4NCiZhbXA7bHQ7b3B0aW9uIHZhbHVlPSZxdW90OyZxdW90Oz5TZWxlY3QgQSB0YXJnZXQmYW1wO2x0Oy9vcHRpb24+DQomYW1wOyMxMjM7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPXRoaXNvbmV9DQogICAmYW1wO2x0O29wdGlvbiB2YWx1ZT0mcXVvdDsmYW1wOyMxMjM7JHRoaXNvbmUubGlua30mcXVvdDs+JmFtcDsjMTIzOyR0aGlzb25lLnRpdGxlfSZhbXA7bHQ7L29wdGlvbj4NCiZhbXA7IzEyMzsvZm9yZWFjaH0NCiZhbXA7bHQ7L3NlbGVjdD4NCjwvcHJlPg0KPHA+SWYgeW91IHdhbnRlZCB0aGF0IHRvIG9ubHkgc2hvdyBjYXRlZ29yaWVzIHRoYXQgd2VyZSBpbiB0aGUgdmVyeSB0b3AgbGV2ZWwgb2YgeW91ciBoaWVyYXJjaHksIHlvdSYjMDM5O2QgcmVwbGFjZSB0aGUgcmVjdXJzZT0mIzAzOTtjYXRlZ29yaWVzX2FsbCYjMDM5OyB3aXRoDQpyZWN1cnNlPSYjMDM5O2NhdGVnb3JpZXNfb25lJiMwMzk7LiBPciBpZiB5b3Ugd2FudGVkIGl0IHRvIGJlIGFsbCBjYXRhbG9nIEl0ZW1zIGluc3RlYWQgb2YgY2F0ZWdvcmllcywgeW91IGNvdWxkIHVzZSBhIHRhZyBsaWtlOg0KJmFtcDsjMTIzO0NhdGFsb2dlciBhY3Rpb249JiMwMzk7YWxsJiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTsgYWxpYXM9JiMwMzk7LyYjMDM5OyByZWN1cnNlPSYjMDM5O2l0ZW1zX2FsbCYjMDM5O30NCjxwPlNpbWlsYXJseSwgeW91IGNvdWxkIGhhdmUgaXQgbGlzdCBvbmx5IGNhdGVnb3JpZXMgdW5kZXIgdGhlIGN1cnJlbnQgcGFnZSAoYnkgb21pdHRpbmcgdGhlICZxdW90O2FsaWFzPSYjMDM5Oy8mIzAzOTsmcXVvdDspLiBUaGUgY29tYmluYXRpb25zIGFyZSBiYXNpY2FsbHkgbGltaXRsZXNzITwvcD4NCjxwPkFsbCBzdXBwb3J0ZWQgdmFsdWVzIG9mIHJlY3Vyc2UgaW5jbHVkZTo8dWw+DQo8bGk+aXRlbXNfb25lIC0gQ2F0YWxvZyBpdGVtcywgbm8gbW9yZSB0aGFuIG9uZSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KPGxpPml0ZW1zX2FsbCAtIENhdGFsb2cgaXRlbXMsIGF0IGFueSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KPGxpPmNhdGVnb3JpZXNfb25lIC0gQ2F0ZWdvcmllcywgbm8gbW9yZSB0aGFuIG9uZSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KPGxpPmNhdGVnb3JpZXNfYWxsIC0gQ2F0ZWdvcmllcywgYXQgYW55IGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+bWl4ZWRfb25lIC0gQ2F0YWxvZyBpdGVtcyBhbmQgQ2F0ZWdvcmllcywgbm8gbW9yZSB0aGFuIG9uZSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KPGxpPm1peGVkX2FsbCAtIENhdGFsb2cgaXRlbXMgYW5kIENhdGVnb3JpZXMsIGF0IGFueSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KPC91bD4NCjwvcD4NCjxwPkl0ZW1zIGluIHRoZXNlIGxpc3RzIGNvbWUgYmFjayBpbiBoaWVyYXJjaHkgb3JkZXIuIFlvdSBjYW4gY2hhbmdlIHRoaXMgdXNpbmcgdGhlICYjMDM5O2dsb2JhbF9zb3J0JiMwMzk7IHBhcmFtZXRlci4gWW91ciBjaG9pY2VzIGFyZTo8L3A+DQo8dWw+DQo8bGk+YWxwaGEgLSBhbHBoYWJldGljYWxseSBieSB0aXRsZTwvbGk+DQo8bGk+ZGF0ZSAtIGluIG9yZGVyIG9mIGl0ZW0gY3JlYXRpb24gZGF0ZTwvbGk+DQo8bGk+bWRhdGUgLSBpbiBvcmRlciBvZiBpdGVtIG1vZGlmaWNhdGlvbiBkYXRlPC9saT4NCjwvdWw+DQo8cD5Zb3UgbWF5IG9yZGVyIHRoZXNlIHNvcnRzIHVzaW5nIHRoZSAmIzAzOTtnbG9iYWxfc29ydF9kaXImIzAzOTsgcGFyYW1ldGVyLCB3aGljaCB3aWxsIGFsbG93ICYjMDM5O2FzYyYjMDM5OyBvciAmIzAzOTtkZXNjJiMwMzk7LjwvcD4NCjxwPlNvLCBmb3IgYSB0aG9yb3VnaCBleGFtcGxlOjwvcD4NCjxwPiZhbXA7IzEyMztDYXRhbG9nZXIgYWN0aW9uPSYjMDM5O2FsbCYjMDM5OyBzdWJfdGVtcGxhdGU9JiMwMzk7bXlfc3ViX3RlbXBsYXRlJiMwMzk7IGFsaWFzPSYjMDM5Oy8mIzAzOTsgcmVjdXJzZT0mIzAzOTtjYXRlZ29yaWVzX2FsbCYjMDM5OyBnbG9iYWxfc29ydD0mIzAzOTthbHBoYSYjMDM5OyBnbG9iYWxfc29ydF9kaXI9JiMwMzk7YXNjJiMwMzk7fTwvcD4NCjxoND5SZWNlbnRseSBBZGRlZCBGZWF0dXJlIExpc3Q8L2g0Pg0KPHA+VG8gdXNlIGEgJnF1b3Q7bW9zdC1yZWNlbnRseSBhZGRlZCZxdW90OyBsaXN0IHdpbGwgYWxsb3cgeW91IHRvIGRpc3BsYXkgdGhlIG1vc3QgcmVjZW50bHktYWRkZWQgY2F0YWxvZyBpdGVtcyB1bmRlciBhIHNwZWNpZmllZCBwYXJ0IG9mIHlvdXIgaGllcmFyY2h5LjwvcD4NCjxwPlRoZSBzeW50YXggZm9yIGEgJnF1b3Q7bW9zdCByZWNlbnRseSBhZGRlZCZxdW90OyBsaXN0IGlzIGxpa2U6PC9wPg0KPHA+JmFtcDsjMTIzO0NhdGFsb2dlciBhY3Rpb249JiMwMzk7cmVjZW50JiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTt9LCB3aGVyZSBzdWJfdGVtcGxhdGUgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGxpc3QuDQpUaGVyZSBhcmUgZm91ciBvcHRpb25hbCBwYXJhbWV0ZXJzLCBjb3VudD0mIzAzOTszJiMwMzk7IGFsaWFzPSYjMDM5O3BhZ2VfYWxpYXMmIzAzOTssIGdsb2JhbF9zb3J0PSYjMDM5O2RhdGUmIzAzOTssIGdsb2JhbF9zb3J0X2Rpcj0mIzAzOTtkZXNjJiMwMzk7IHdoZXJlIGNvdW50DQppcyB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRvIGluY2x1ZGUsIHBhZ2VfYWxpYXMgaW5kaWNhdGVzIHRoZSB0b3Agb2YgdGhlIHRyZWUgKGUuZy4sIGEgcGxhY2UgaW4geW91ciBtZW51IGhpZXJhcmNoeSwNCnR5cGljYWxseSBhIGNhdGVnb3J5IHBhZ2UpIGluIHdoaWNoIHRvIGxvb2sgZm9yIG5ldyBpdGVtcy4gQSBzcGVjaWFsIHZhbHVlIGZvciAmcXVvdDtwYWdlX2FsaWFzJnF1b3Q7IGlzICZxdW90Oy8mcXVvdDssIHdoaWNoIG1lYW5zDQp0byB1c2UgPGk+YWxsPC9pPiBwYWdlcyBpbiB0aGUgc2l0ZS4gZ2xvYmFsX3NvcnQgbWF5IGJlICYjMDM5O2RhdGUmIzAzOTsgKGZvciBpdGVtIGNyZWF0aW9uIGRhdGUpIG9yICYjMDM5O21kYXRlJiMwMzk7IGZvciBtb2RpZmljYXRpb24gZGF0ZSwgYW5kDQpnbG9iYWxfc29ydF9kaXIgbWF5IGJlICYjMDM5O2FzYyYjMDM5OyBvciAmIzAzOTtkZXNjJiMwMzk7LjwvcD4NCjxoND5SYW5kb20gSXRlbXMgRmVhdHVyZSBMaXN0PC9oND4NCjxwPlRoZSBzeW50YXggZm9yIGEgJnF1b3Q7cmFuZG9tJnF1b3Q7IGxpc3QgaXMgbGlrZTo8L3A+DQo8cD4mYW1wOyMxMjM7Y0NhdGFsb2dlciBhY3Rpb249JiMwMzk7cmFuZG9tJiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTt9LCB3aGVyZSBzdWJfdGVtcGxhdGUgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGxpc3QuIFRoZXJlIGFyZSB0d28gb3B0aW9uYWwgcGFyYW1ldGVycywgY291bnQ9JiMwMzk7MyYjMDM5OyBhbGlhcz0mIzAzOTtwYWdlX2FsaWFzJiMwMzk7LCB3aGVyZSBjb3VudCBpcyB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRvIGluY2x1ZGUsIGFuZCBwYWdlX2FsaWFzIGluZGljYXRlcyB0aGUgdG9wIG9mIHRoZSB0cmVlIChlLmcuLCBhIHBsYWNlIGluIHlvdXIgbWVudSBoaWVyYXJjaHksIHR5cGljYWxseSBhIGNhdGVnb3J5IHBhZ2UpIGluIHdoaWNoIHRvIGxvb2sgZm9yIG5ldyBpdGVtcy4gQSBzcGVjaWFsIHZhbHVlIGZvciAmcXVvdDtwYWdlX2FsaWFzJnF1b3Q7IGlzICZxdW90Oy8mcXVvdDssIHdoaWNoIG1lYW5zIHRvIHVzZSA8aT5hbGw8L2k+IHBhZ2VzIGluIHRoZSBzaXRlLjwvcD4NCjxoND5WYXJpYWJsZTwvaDQ+DQo8cD5Zb3UgY2FuIGdyYWIgdmFyaWFibGVzIChhdHRyaWJ1dGVzKSBvdXRzaWRlIG9mIHlvdXIgQ2F0YWxvZ2VyIHRlbXBsYXRlcywgc2F5IGluIGEgZ2xvYmFsIGNvbnRlbnQgYmxvY2ssIHVzaW5nIHRoZSB2YXJpYWJsZSBtZXRob2QuIFRoZSBzeW50YXggbG9va3MgbGlrZTo8L3A+DQo8cD4mYW1wOyMxMjM7Q2F0YWxvZ2VyIGFjdGlvbj0mIzAzOTt2YXJpYWJsZSYjMDM5OyBuYW1lPSYjMDM5O2l0ZW1ub3RlcyYjMDM5OyBkZWZhdWx0PSYjMDM5O25vIG5vdGVzJiMwMzk7fSwgd2hlcmUgbmFtZSBpcyB0aGUgYXR0cmlidXRlIHRvIGRpc3BsYXkgKHVzaW5nIHRoZSBzYW1lIGFsbCBsb3dlci1jYXNlLCBwdW5jdHVhdGlvbi1mcmVlIHJlcHJlc2VudGF0aW9uIGxpa2UgdGhlIHNtYXJ0eSB0ZW1wbGF0ZSB2YXJpYWJsZXMpLCBhbmQgZGVmYXVsdCBpcyB0aGUgdmFsdWUgdG8gdXNlIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IGRlZmluZWQuPC9wPg0KPGg0Pkl0ZW0gQ29tcGFyaXNvbnM8L2g0Pg0KPHA+QXMgb2YgdmVyc2lvbiAwLjcuNywgdGhlcmUgaXMgYSBwcm9kdWN0IGNvbXBhcmlzb24gYWN0aW9uOjwvcD4NCjxwPiZhbXA7IzEyMztjQ2F0YWxvZ2VyIGFjdGlvbj0mIzAzOTtjb21wYXJlJiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTsgaXRlbXM9JiMwMzk7aXRlbTEsaXRlbTIsaXRlbTMmIzAzOTt9LCB3aGVyZSBzdWJfdGVtcGxhdGUgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGxpc3QsIGFuZCBpdGVtcyBpcyBhIGNvbW1hLWRlbGltaXRlZCBsaXN0IG9mIGl0ZW0gcGFnZSBhbGlhc2VzIHRvIGNvbXBhcmUuIEJvbGRlciB1c2VycyBtYXkgYWxzbyBjaG9vc2UgdG8gcGFzcyBpbiB0aGUgaXRlbXMgdG8gY29tcGFyZSBhcyByZXF1ZXN0IHZhcmlhYmxlcywgdGhlcmVieSBlbmFibGluZyBkeW5hbWljIGNvbXBhcmlzb25zIGJhc2VkIG9uIHVzZXIgc2VsZWN0aW9ucy4gRG8gdGhpcyBieSBzZXR0aW5nIHRoZSAmcXVvdDtpdGVtcyZxdW90OyB2YXJpYWJsZSBvbiB0aGUgcmVxdWVzdCBwYXNzZWQgdG8gdGhlIHBhZ2UgY29udGFpbmluZyB0aGUgQ2F0YWxvZ2VyIHRhZyB3aXRoIGEgY29tcGFyZSBhY3Rpb24uPC9wPg0KPHA+VGhlIGRlZmF1bHQgaXRlbSBjb21wYXJpc29uIHRlbXBsYXRlIGNvdWxkIHVzZSBzb21lIHN0eWxpbmcsIGUuZy4sOjwvcD4NCjxwcmU+DQouaXRlbV9jb21wYXJpc29uIHRoIHtmb250LXdlaWdodDogYm9sZDsgcGFkZGluZzogNXB4OyB0ZXh0LWFsaWduOmNlbnRlcjt9DQouaXRlbV9jb21wYXJpc29uIHRkIHtib3JkZXI6IDFweCBzb2xpZCBncmF5OyBwYWRkaW5nOiAzcHggNXB4O3RleHQtYWxpZ246cmlnaHQ7fQ0KPC9wcmU+DQo8aDM+Q3VzdG9taXphdGlvbiBhbmQgQWR2YW5jZWQgVG9waWNzPC9oMz4NCjxoND5DYXRhbG9nIEl0ZW0gQXR0cmlidXRlczwvaDQ+DQo8cD5UaGUgZGVmYXVsdCBpdGVtIGF0dHJpYnV0ZXMgYXJlIHR5cGljYWwgZm9yIGEgY2F0YWxvZyBvZiBwcm9kdWN0cyBvciBhcnR3b3JrcywgYnV0IGJ5IGdvaW5nIGludG8gRXh0ZW5zaW9ucyAmYW1wO2d0OyBDYXRhbG9nZXIgJmFtcDtndDsgTWFuYWdlIFVzZXItRGVmaW5lZCBBdHRyaWJ1dGVzLCB5b3UgY2FuIGNoYW5nZSB0aGUgYXR0cmlidXRlcy4gSXQmIzAzOTtzIGJlc3QgdG8gZGVmaW5lIHRoZSBhdHRyaWJ1dGVzIGJlZm9yZSB5b3Ugc3RhcnQgZW50ZXJpbmcgQ2F0YWxvZyBJdGVtcy48L3A+DQo8cD5Ob3RlIHRoYXQgdGhlIGF0dHJpYnV0ZXMgeW91IGRlZmluZSBtYXkgbmVlZCB0byBiZSBhZGRlZCB0byB0aGUgdGVtcGxhdGUgdGhhdCB5b3UmIzAzOTtyZSB1c2luZyB0byBkaXNwbGF5IENhdGFsb2cgSXRlbXMgLS0gc2VlIEN1c3RvbSBUZW1wbGF0ZXMgYmVsb3cuPC9wPg0KPGg0PkNhdGFsb2cgQ2F0ZWdvcnkgQXR0cmlidXRlczwvaDQ+DQo8cD5TaW1pbGFybHksIHlvdSBjYW4gc2V0IGF0dHJpYnV0ZXMgZm9yIENhdGVnb3JpZXMuIEFnYWluLCB0aGUgYXR0cmlidXRlcyB5b3UgZGVmaW5lIG1heSBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSB0ZW1wbGF0ZSB0aGF0IHlvdSYjMDM5O3JlIHVzaW5nIHRvIGRpc3BsYXkgQ2F0YWxvZyBDYXRlZ29yaWVzIC0tIHNlZSBDdXN0b20gVGVtcGxhdGVzIGJlbG93LjwvcD4NCjxoND5QcmludGFibGUgQ2F0YWxvZyBBdHRyaWJ1dGVzPC9oND4NCjxwPkxpa2V3aXNlLCB5b3UgY2FuIHNldCBhdHRyaWJ1dGVzIGZvciBQcmludGFibGUgQ2F0YWxvZ3MuIEFnYWluLCB0aGUgYXR0cmlidXRlcyB5b3UgZGVmaW5lIG1heSBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSB0ZW1wbGF0ZSB0aGF0IHlvdSYjMDM5O3JlIHVzaW5nIHRvIGRpc3BsYXkgeW91ciBQcmludGFibGUgQ2F0YWxvZyAtLSBzZWUgQ3VzdG9tIFRlbXBsYXRlcyBiZWxvdy48L3A+DQo8aDQ+Q3VzdG9tIFRlbXBsYXRlczwvaDQ+DQo8cD5JZiB5b3UmIzAzOTtyZSB3aWxsaW5nIHRvIG1lc3MgYXJvdW5kIHdpdGggU21hcnR5IFRlbXBsYXRlcywgeW91IGNhbiBjaGFuZ2UgdGhlIGxheW91dCBvZiBhbnkgb2YgdGhlIHBhZ2VzIGdlbmVyYXRlZCBieSBDYXRhbG9nZXIuIFRoaXMgc2hvdWxkIG1ha2UgY2VydGFpbiBkZXZlbG9wZXJzIHZlcnkgaGFwcHksIGV2ZW4gaWYgdGhlIGluZWZmaWNpZW5jeSBvZiB0aGUgcmVzdCBvZiB0aGUgY29kZSB3aWxsIG5vdC4gVGhlcmUgYXJlIGZvdXIga2luZHMgb2YgdGVtcGxhdGVzOiBvbmUga2luZCBmb3IgQ2F0YWxvZyBJdGVtcywgb25lIGtpbmQgZm9yIENhdGFsb2cgQ2F0ZWdvcmllcywgYW5kIG9uZSBraW5kIGZvciBQcmludGFibGUgQ2F0YWxvZ3MsIGFuZCBvbmUga2luZCBmb3IgJnF1b3Q7RmVhdHVyZSZxdW90OyBsaXN0cywgc3VjaCBhcyByZWNlbnRseSBhZGRlZCBpdGVtcyBvciByYW5kb20gc2VsZWN0aW9ucy48L3A+DQo8cD5XaGVuIGVkaXRpbmcgYSBUZW1wbGF0ZSwgdGhlIGFkbWluIHNjcmVlbiB3aWxsIGRpc3BsYXkgYSBsaXN0IG9mIFNtYXJ0eSB0YWdzIGF2YWlsYWJsZSB0byB5b3UgZm9yIHRoYXQga2luZCBvZiB0ZW1wbGF0ZS4gVGhpcw0Kd2lsbCBvbmx5IGhhcHBlbiBvbmNlIHRoZSBtb2R1bGUga25vd3Mgd2hhdCBraW5kIG9mIHRlbXBsYXRlIHlvdSYjMDM5O3JlIGVkaXRpbmcsIHNvIHdoZW4geW91IGZpcnN0IGNyZWF0ZSB0aGUgdGVtcGxhdGUsIGl0IGRpc3BsYXlzIGFsbA0KdGhlIFNtYXJ0eSB0YWdzIGl0IGtub3dzIGFib3V0LCBvbmx5IHNvbWUgb2Ygd2hpY2ggYmVpbmcgYXBwbGljYWJsZS48L3A+DQo8aDQ+RGlzcGxheWluZyBBdHRyaWJ1dGVzIG9uIEl0ZW0gUGFnZXM8L2g0Pg0KPHA+QXR0cmlidXRlcyBhcmUgYXZhaWxhYmxlIHRvIFNtYXJ0eSBhcyB0b3AtbGV2ZWwgdmFyaWFibGVzLiBUaGV5IGFyZSBzdG9yZWQgYXMgc2FuaXRpemVkIHZlcnNpb25zIG9mIHRoZSBhdHRyaWJ1dGUgbmFtZXMsIHdoaWNoIG1lYW5zDQppdCBpcyBjb252ZXJ0ZWQgdG8gbG93ZXIgY2FzZSBhbmQgYWxsIHB1bmN0dWF0aW9uIGFuZCBub24tVVMtQVNDSUkgY2hhcmFjdGVycyBnZXQgcmVtb3ZlZC4gVGhpcyBpcyBiZWNhdXNlIFNtYXJ0eSBpcyBmaW5pY2t5LCBhbmQgd2lsbCBub3QgaGFuZGxlIHRoZXNlIGNoYXJhY3RlcnMuPC9wPg0KPHA+U28sIGZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBhbiBhdHRyaWJ1dGUgY2FsbGVkICZxdW90O0dsJnV1bWw7Y2tsaWNoa2VpdCZxdW90OywgdGhlcmUgd2lsbCBiZSBhIFNtYXJ0eSB2YXJpYWJsZSB7JGdsY2tsaWNoa2VpdH0uIE5vdGUgdGhhdCB0aGUgJnF1b3Q7JnV1bWw7JnF1b3Q7IGlzIG9taXR0ZWQuPC9wPg0KPHA+Rm9ydHVuYXRlbHksIHRoaXMgaXMgc2ltcGxpZmllZCBieSB0aGUgJGF0dHJsaXN0IGxpc3QgYXZhaWxhYmxlLiBUaGlzIGlzIGEgbGlzdCBvZiBhdHRyaWJ1dGVzIGJ5IGZvcm1hbCBuYW1lICgmcXVvdDtHbCZ1dW1sO2NrbGljaGtlaXQmcXVvdDspIGFuZCB0aGVpciBrZXkgKCZxdW90O2dsY2tsaWNoa2VpdCZxdW90OykuIEZvciBleGFtcGxlOg0KPHByZT4NCgl7c2VjdGlvbiBuYW1lPWF0IGxvb3A9JGF0dHJsaXN0fQ0KCSZhbXA7bHQ7ZGl2IGNsYXNzPSZxdW90O2l0ZW1fYXR0cmlidXRlX25hbWUmcXVvdDs+eyRhdHRybGlzdFthdF0ubmFtZX06JmFtcDtsdDsvZGl2PiZhbXA7bHQ7ZGl2IGNsYXNzPSZxdW90O2l0ZW1fYXR0cmlidXRlX3ZhbCZxdW90Oz57ZXZhbCB2YXI9JGF0dHJsaXN0W2F0XS5rZXl9JmFtcDtsdDsvZGl2Pg0KCXsvc2VjdGlvbn0NCjwvcHJlPg0KPHA+QXMgb2YgdmVyc2lvbiAwLjgsIHlvdSBjYW4gYXNzaWduIGFuIGFsaWFzIHRvIGVhY2ggYXR0cmlidXRlLiBUaGVzZSBhbGlhc2VzIG5lZWQgdG8gYmUgVVMtQVNDSUkgYW5kIGNvbnRhaW4gbm8gcHVuY3R1YXRpb24uIFRoZXkgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgc2FuaXRpemVkIGF0dHJpYnV0ZSBuYW1lIChlLmcuLCB5b3UgY291bGQgdXNlIHRoZSBhbGlhcyAmcXVvdDtnbHVlY2tsaWNoa2VpdCZxdW90OykuPC9wPg0KPGg0PkRpc3BsYXlpbmcgQXR0cmlidXRlcyBvbiBQYWdlcyB3aXRoIExpc3RzIG9mIEl0ZW1zPC9oND4NCjxwPkF0dHJpYnV0ZXMgYXJlIGluY2x1ZGVkIGluIHRoZSAkaXRlbWxpc3RzWyNdIGluIHR3byBkaWZmZXJlbnQgd2F5czogdG9wLWxldmVsIGF0dHJpYnV0ZXMgb2YgdGhlIGl0ZW0sIGFuZCBhcyBwYXJ0IG9mIHRoZSBpdGVtJiMwMzk7cyAmcXVvdDthdHRyJnF1b3Q7IGFycmF5LiBUaGV5IGFyZSBzdG9yZWQgYXMgc2FuaXRpemVkIHZlcnNpb25zIG9mIHRoZSBhdHRyaWJ1dGUgbmFtZXMsIHdoaWNoIG1lYW5zDQppdCBpcyBjb252ZXJ0ZWQgdG8gbG93ZXIgY2FzZSBhbmQgYWxsIHB1bmN0dWF0aW9uIGFuZCBub24tVVMtQVNDSUkgY2hhcmFjdGVycyBnZXQgcmVtb3ZlZC4gVGhpcyBpcyBiZWNhdXNlIFNtYXJ0eSBpcyBmaW5pY2t5LCBhbmQgd2lsbCBub3QgaGFuZGxlIHRoZXNlIGNoYXJhY3RlcnMuPC9wPg0KPHA+U28sIGZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBhbiBhdHRyaWJ1dGUgY2FsbGVkICZxdW90O0dsJnV1bWw7Y2tsaWNoa2VpdCZxdW90OywgdGhlIGl0ZW0gd2lsbCBoYXZlICRpdGVtLmdsY2tsaWNoa2VpdCBhbmQgJGl0ZW0uYXR0cnNbJiMwMzk7Z2xja2xpY2hrZWl0JiMwMzk7XS4gTm90ZSB0aGF0IHRoZSAmcXVvdDsmdXVtbDsmcXVvdDsgaXMgb21pdHRlZC4gWW91IGNhbiByZWZlciB0byB0aGlzIGF0dHJpYnV0ZSBpbiB5b3VyIHRlbXBsYXRlDQp3aXRoIFNtYXJ0eSBjb2RlIGxpa2U6IHskaXRlbWxpc3RbaW5kZXhdLmdsY2tsaWNra2VpdH0gb3IgeyRpdGVtbGlzdFtpbmRleF0uYXR0cnMuZ2xja2xpY2hrZWl0fS48L3A+DQo8cD5Gb3J0dW5hdGVseSwgdGhpcyBpcyBzaW1wbGlmaWVkIGJ5IHRoZSAkYXR0cmxpc3QgbGlzdCBhdmFpbGFibGUuIFRoaXMgaXMgYSBsaXN0IG9mIGF0dHJpYnV0ZXMgYnkgZm9ybWFsIG5hbWUgKCZxdW90O0dsJnV1bWw7Y2tsaWNoa2VpdCZxdW90OykgYW5kIHRoZWlyIGtleSAoJnF1b3Q7Z2xja2xpY2hrZWl0JnF1b3Q7KS4gRm9yIGV4YW1wbGU6DQo8cHJlPg0KICAgIHtmb3JlYWNoIGZyb209JGF0dHJsaXN0IGl0ZW09YXR0ciBrZXk9a30NCiAgICB7JGF0dHJ9OiB7JGl0ZW1zW251bWxvb3BdWyRrXX0NCiAgICB7L2ZvcmVhY2h9DQo8L3ByZT4NCjxwPkFzIG9mIHZlcnNpb24gMC44LCB5b3UgY2FuIGFzc2lnbiBhbiBhbGlhcyB0byBlYWNoIGF0dHJpYnV0ZS4gVGhlc2UgYWxpYXNlcyBuZWVkIHRvIGJlIFVTLUFTQ0lJIGFuZCBjb250YWluIG5vIHB1bmN0dWF0aW9uLiBUaGV5IGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIHNhbml0aXplZCBhdHRyaWJ1dGUgbmFtZSAoZS5nLiwgeW91IGNvdWxkIHVzZSB0aGUgYWxpYXMgJnF1b3Q7Z2x1ZWNrbGljaGtlaXQmcXVvdDspLjwvcD4NCjxoND5TbWFydHkgdGFncyBpbiBBdHRyaWJ1dGVzPC9oND4NCjxwPlNvbWV0aW1lcywgeW91JiMwMzk7bGwgd2FudCB0aGUgZGVzY3JpcHRpb25zIG9mIHlvdXIgaXRlbXMgdG8gaW5jbHVkZSBzbWFydHkgdGFncyAoZS5nLiwgY21zX3NlbGZsaW5rKS4gVG8gbWFrZSB0aGF0IHdvcmssIHlvdSYjMDM5O2xsIG5lZWQgdG8NCnVwZGF0ZSB5b3VyIHRlbXBsYXRlLiBGb3IgdGhlIGF0dHJpYnV0ZXMgd2hlcmUgeW91IHdhbnQgc21hcnR5IHRhZ3MgdG8gYmUgYWN0aXZlLCB5b3UmIzAzOTtsbCBuZWVkIHRvIG5lc3QgdGhlIHNtYXJ0eSBldmFsdWF0aW9ucyBpbiB5b3VyIHRlbXBsYXRlLiBGb3IgZXhhbXBsZTo8L3A+DQo8cHJlPg0KJmFtcDsjMTIzO2V2YWwgdmFyPSRhdHRybGlzdFthdF0ua2V5fQ0KPC9wcmU+DQo8cD5iZWNvbWVzOjwvcD4NCjxwcmU+DQomYW1wOyMxMjM7ZXZhbCB2YXI9JGVudHJ5LT5pbnB1dCBhc3NpZ249dGhpc0F0dHJ9JmFtcDsjMTIzO2V2YWwgdmFyPSR0aGlzQXR0cn0NCjwvcHJlPg0KPHA+VWdseT8gWXVwLiBCdXQgaXQgd29ya3MuPC9wPg0KPGgzPkNhdGFsb2dlciBJbWFnZSBTeXN0ZW08L2gzPg0KPHA+Q2F0YWxvZ2VyIGhhcyBhbiBpbWFnZSBzeXN0ZW0gdGhhdCB3aWxsIGFsbG93IHlvdSB0byBkeW5hbWljYWxseSBjaGFuZ2UgdGhlIGltYWdlIGRpc3BsYXkgc2l6ZS4gSWYgeW91IGRvIG5vdCBsaWtlIGl0LCB5b3UgY2FuIGFsdGVyDQp0aGUgdGVtcGxhdGVzIGFuZCB1c2UgYW55IGltYWdlIHN5c3RlbSB5b3Ugd2FudC48L3A+DQo8cD5XaGVuIHlvdSB1cGxvYWQgYW4gaW1hZ2UgdXNpbmcgQ2F0YWxvZ2VyLCBpdCBnZXRzIHB1dCBpbiBhIHNwZWNpYWwgc2V0IG9mIGRpcmVjdG9yaWVzIHRvIG1ha2UgdGhlIGltYWdpbmcgZWFzaWVyLiBZb3Ugd2lsbCBzZWUgbW9yZQ0KYWJvdXQgdGhpcyBsYXRlci48L3A+DQo8cD5JdCB3b3JrcyBieSBjYWxsaW5nIGEgUEhQIHByb2dyYW0gaW5zdGVhZCBvZiBkaXJlY3RseSByZWZlcmVuY2luZyB0aGUgaW1hZ2UuIFRoZSBwcm9ncmFtIHVzZXMgdGhlIGZpbGVuYW1lIHRvIHNlZSBpZiB0aGUNCmltYWdlIGFscmVhZHkgZXhpc3RzIGluIHRoZSBjb3JyZWN0IHNpemUuIElmIHNvLCBpdCByZWRpcmVjdHMgdG8gdGhhdCBpbWFnZS4gT3RoZXJ3aXNlLCBpdCB1c2VzIHlvdXIgR0RMSUIgb3IgSW1hZ2VNYWdpY2sgdG8gY3JlYXRlDQp0aGUgaW1hZ2UgaW4gdGhlIGNvcnJlY3Qgc2l6ZSwgYW5kIHRoZW4gcmVkaXJlY3RzIHRvIGl0Lg0KPC9wPg0KPGg0PkNhdGFsb2dlciBJbWFnZSBGaWxlc3BlYyBFeHBsYW5hdGlvbjwvaDQ+DQo8cD5BIGNhdGFsb2dlciBpbWFnZSBoYXMgYSBmaWxlc3BlYyBsaWtlOg0KPGJyIC8+DQpyb290X3BhdGgvbW9kdWxlcy9DYXRhbG9nZXIvQ2F0YWxvZ2VyLkltYWdlLnBocD9pPWl0ZW1uYW1lX2ZfMV80MDBfMS5qcGcmYW1wO2FtcDthYz04Mjg4OA0KPC9wPg0KPHA+VGhlIGludGVyZXN0aW5nIHRoaW5nIGlzICZxdW90O2l0ZW1uYW1lX2ZfMV80MDBfMS5qcGcmcXVvdDsgLSB0aGUgc3R1ZmYgYmVmb3JlIGlzIGp1c3QgYSBjYWxsIHRvIHRoZSBwcm9ncmFtLCBhbmQgdGhlICZhbXA7YW1wO2FjPTgyODg4IGlzIGEgcmFuZG9tIHRoaW5nIHRoYXQNCmlzIGRlc2lnbmVkIHRvIHByZXZlbnQgYnJvd3NlciBjYWNoaW5nLiBTbyBleGFtaW5pbmcgdGhlIG5hbWUgcGllY2UgYnkgcGllY2UgKHNlcGFyYXRpbmcgYXQgdGhlIHVuZGVyc2NvcmVzKSwgd2UgaGF2ZTo8L3A+DQo8dWw+DQo8bGk+aXRlbSBuYW1lIC0gdGhpcyBpcyB0aGUgYWxpYXMgb2YgdGhlIGl0ZW0vY2F0ZWdvcnkgcGFnZSBjb250YWluaW5nIHRoZSBpbWFnZS48L2xpPg0KPGxpPmltYWdlIHR5cGUgLSB0aGlzIGlzIGEgZGVzaWduYXRpb24gZm9yIGltYWdlIHR5cGU6PHVsPg0KPGxpPmYgLSBpdGVtIGZ1bGwtc2l6ZSBpbWFnZTwvbGk+DQo8bGk+dCAtIGl0ZW0gdGh1bWJuYWlsPC9saT4NCjxsaT5jZiAtIGNhdGVnb3J5IGZ1bGwtc2l6ZWQgaW1hZ2U8L2xpPg0KPGxpPmN0IC0gY2F0ZWdvcnkgdGh1bWJuYWlsPC9saT4NCjxsaT5jdGYgLSBwcmludGFibGUgY2F0YWxvZyBmdWxsLXNpemVkIGltYWdlPC9saT4NCjwvdWw+DQo8L2xpPg0KPGxpPmltYWdlIG51bWJlciAtIHNvIGEgZ2l2ZW4gaXRlbS9jYXRhbG9nL2V0YyBjYW4gaGF2ZSBtdWx0aXBsZSBpbWFnZXM8L2xpPg0KPGxpPmxvbmcgZGltZW5zaW9uIC0gbG9uZyBkaW1lbnNpb24gb2YgdGhlIGltYWdlLCBpbiBwaXhlbHM8L2xpPg0KPGxpPm1pc3NpbmcgZmxhZyAtIDEgaWYgeW91IHdhbnQgdG8gc2hvdyBhbiAmcXVvdDtpbWFnZSBtaXNzaW5nJnF1b3Q7IGltYWdlIGlmIHRoaXMgaW1hZ2UgZG9lc24mIzAzOTt0IGV4aXN0LCAwIG90aGVyd2lzZTwvbGk+DQo8L3VsPg0KPHA+DQpUaGlzIHdpbGwgdGFrZSBhbiBpbWFnZSBpbiByb290X3BhdGgvdXBsb2Fkcy9pbWFnZXMvY2F0YWxvZ19zcmMvaXRlbW5hbWVfc3JjXzENCjxoND5BY2Nlc3NpbmcgeW91ciBPcmlnaW5hbCBJbWFnZTwvaDQ+DQo8cD5XaGVuIENhdGFsb2dlciB1cGxvYWRzIGltYWdlcywgaXQgcHV0cyB0aGVtIGludG8gYSBkaXJlY3RvcnkgY2FsbGVkICZxdW90O2NhdGFsb2dlcl9zcmMmcXVvdDsgaW4geW91ciB1cGxvYWRzL2ltYWdlcy8gZGlyZWN0b3J5LiBUaGV5IGltYWdlcyBhcmUgbmFtZWQgYWNjb3JkaW5nIHRvIHRoZSBhbGlhcyBvZiB0aGUgcGFnZToNCmFsaWFzX3NyY18jLmpwZyB3aGVyZSAjIGlzIHRoZSBpbWFnZSBudW1iZXIgZm9yIHRoYXQgcGFnZS48L3A+DQo8cD5TbywgdG8gYWNjZXNzIHRoZSBvcmlnaW5hbGx5IHVwbG9hZGVkIGltYWdlcyBvbiBhIENhdGVnb3J5IHBhZ2UsIHlvdSYjMDM5O2QgZ2VuZXJhdGUgdGhlIFVSTCBtYW51YWxseS48L3A+DQo8cD5TbyBvbiBhIGNhdGVnb3J5IHBhZ2UsIGZvciBleGFtcGxlLCBpbnN0ZWFkIG9mIHVzaW5nIHskaXRlbXNbbnVtbG9vcF0uaW1hZ2V9IHlvdSYjMDM5O2QgdXNlICZxdW90Oy91cGxvYWRzL2ltYWdlcy9jYXRhbG9nZXJfc3JjL3skaXRlbXNbbnVtbG9vcF0uYWxpYXN9X3NyY18xLmpwZyZxdW90Oy48L3A+DQo8aDM+Q3JlZGl0czwvaDM+DQo8cD5UaGFua3MgdG8gPGEgaHJlZj0iaHR0cDovL3d3dy5pZC1hLmNvLnVrIj5QYXVsIENvb3BlcjwvYT4gZm9yIHNwb25zb3JpbmcgdGhlIGRldmVsb3BtZW50IG9mIHRleHRhcmVhIGF0dHJpYnV0ZXMuPC9wPg0KPHA+VGhhbmtzIHRvIG51bWVyb3VzIHBhdGllbnQgdXNlcnMgYW5kIGJ1ZyB0ZXN0ZXJzIChtYW55IG9mIHdob20gaGFkIG5vIGlkZWEgd2hhdCB0aGV5IHdlcmUgZ2V0dGluZyBpbnRvLik8L3A+IA0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIENNUyBNYWRlIFNpbXBsZSAgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyI+RGV2ZWxvcGVyIEZvcmdlPC9hPi48L2xpPg0KPGxpPlRvIG9idGFpbiBjb21tZXJjaWFsIHN1cHBvcnQsIHBsZWFzZSBzZW5kIGFuIGVtYWlsIHRvIHRoZSBhdXRob3IgYXQgPGEgaHJlZj0ibWFpbHRvOnNqZ0BjbXNtb2R1bGVzLmNvbSI+JmFtcDtsdDtzamdAY21zbW9kdWxlcy5jb20mYW1wO2d0OzwvYT4uPC9saT4NCjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjxsaT5UaGUgYXV0aG9yIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkgYW5kIGdyb3ZlbGxpbmcgZm9yIGZyZWUgc3VwcG9ydC48L2xpPg0KPC91bD4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dA0Kb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD5Db3B5cmlnaHQgJmFtcDtjb3B5OyAyMDA4LCBTYW11ZWwgR29sZHN0ZWluIDxhIGhyZWY9Im1haWx0bzpzamdAY21zbW9kdWxlcy5jb20iPiZhbXA7bHQ7c2pnQGNtc21vZHVsZXMuY29tJmFtcDtndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1pvcmcgZGF0IHUgaGV0ICZxdW90O01vZGlmeSBDYXRhbG9nIFNldHRpbmdzJnF1b3Q7IHJlY2h0IHZvb3IgZGUgZ2VicnVpa2VycyBkaWUgZGUgQ2F0YWxvZ3VzIG1vZXRlbiBiZWhlcmVuLic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjQwNDkzMzA1OC4xMzYwMDU2MTk1LjEzNjAwNTYxOTUuMTM2MDA1NjE5NS4xJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMzYwMDU2MTk1LjEuMS51dG1jY249KGRpcmVjdCl8dXRtY3NyPShkaXJlY3QpfHV0bWNtZD0obm9uZSknOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/pl_PL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ25hbWVpbWFnZXMnXSA9ICdPYnJhemtpJzsKJGxhbmdbJ2RlbGV0ZWltYWdlJ10gPSAnU2thc3VqIG9icmF6ZWsnOwokbGFuZ1snT3duZXInXSA9ICdXxYJhxZtjaWNpZWwnOwokbGFuZ1snQ2F0YWxvZ0l0ZW0nXSA9ICdLYXRhbG9nIHBvenljamknOwokbGFuZ1snbmFtZXBhZ2UnXSA9ICdTdHJvbmEnOwokbGFuZ1snUGVybWlzc2lvbnMnXSA9ICdVcHJhd25pZW5pYSc7CiRsYW5nWydTdWInXSA9ICdTdWIgLSc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfaXRlbV9zb3J0X29yZGVyMiddID0gJ0tvbGVqbm/Fm8SHIHNvcnRvd2FuaWEgcG96eWNqaSc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfaXRlbXNfcGVyX3BhZ2UyJ10gPSAnUG96eWNqaSBuYSBzdHJvbsSZJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9jYXRlZ29yeV9yZWN1cnNlMiddID0gJ1JvZHphaiB3ecWbd2lldGxhbmlhJzsKJGxhbmdbJ3doaWNoX2F0dHJpYnV0ZXMnXSA9ICdLdCZvYWN1dGU7cmUgYXRyeWJ1dHkgcG93aW5ueSBiecSHIHBva2F6YW5lIHcga2F0YWxvZ3UnOwokbGFuZ1snbmF2VGFiJ10gPSAnIHwgJzsKJGxhbmdbJ25lZWRwZXJtaXNzaW9uJ10gPSAnTXVzaXN6IHVzdGF3acSHICVzIGFieSB0byB6cm9iacSHLic7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdLYXRhbG9nJzsKJGxhbmdbJ2FkbWluZGVzY3JpcHRpb24nXSA9ICdaYXJ6xIVkemFqIHVzdGF3aWVuaWFtaSBrYXRhbG9ndSc7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnQ3p5IG5hIHBld25vIGNoY2VzeiB0byB1c3VuxIXEhyAlcz8nOwokbGFuZ1sndW5pcXVlY29kZSddID0gJ1VuaWthbG55IGtvZCc7CiRsYW5nWyd0ZW1wbGF0ZWxpc3QnXSA9ICdTemFibG9ueSc7CiRsYW5nWydsaXN0dGVtcGwnXSA9ICdaYXJ6xIVkemFqIHN6YWJsb25hbWknOwokbGFuZ1sndGl0bGVfaXRlbV90YWInXSA9ICdBdHJ5YnV0eSBwb3p5Y2ppJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3RhYiddID0gJ0F0cnlidXR5IGthdGVnb3JpaSc7CiRsYW5nWyd0aXRsZV9wcmludGFibGVfdGFiJ10gPSAnVXN0YXdpZW5pYSB3ZXJzamkgZG8gZHJ1a3UnOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV90YWInXSA9ICdSb3ptaWFyIHpkasSZY2lhIHBvenljamkga2F0YWxvZ3UnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2VfdGFiJ10gPSAnVXN0YXdpZW5pYSBzdHJvbnkga2F0ZWdvcmlpJzsKJGxhbmdbJ3RpdGxlX2lzX3RleHRmaWVsZCddID0gJ1BvbGUgdGVrc3Rvd2UgKHRleHRhcmVhKT8nOwokbGFuZ1sndGl0bGVfZGVsZXRlJ10gPSAnU2thc293YcSHPyc7CiRsYW5nWyd0aXRsZV9hc3BlY3RfdGFiJ10gPSAnV3NwJm9hY3V0ZTvFgmN6eW5uaWtpIHByb3BvcmNqaSBvYnJhenUnOwokbGFuZ1sndGl0bGVfaW1hZ2VfdGFiJ10gPSAnSW5uZSB1c3Rhd2llbmlhIG9icmF6Jm9hY3V0ZTt3JzsKJGxhbmdbJ3RpdGxlX2l0ZW1fdGVtcGxhdGVfdmFycyddID0gJ1ptaWVubmUgc3phYmxvbnUgcG96eWNqaSBrYXRhbG9ndSc7CiRsYW5nWyd0aXRsZV9jYXRfdGVtcGxhdGVfdmFycyddID0gJ1ptaWVubmUgc3phYmxvbnUga2F0ZWdvcmlpJzsKJGxhbmdbJ3RpdGxlX2ZlYXR1cmVfdGVtcGxhdGVfdmFycyddID0gJ1ptaWVubmUgc3phYmxvbnUgRmVhdHVyZXMnOwokbGFuZ1sndGl0bGVfc2hvd19vbmx5X2V4aXN0aW5nX2ltYWdlcyddID0gJ05pZSBkb8WCxIVjemFqIGJyYWt1asSFY3ljaCBvYnJhemsmb2FjdXRlO3cnOwokbGFuZ1sndGl0bGVfc2hvd19vbmx5X2V4aXN0aW5nX2ltYWdlc19oZWxwJ10gPSAnVGhpcyB3aWxsIG9ubHkgcHV0IGltYWdlIHJlZmVyZW5jZXMgaW50byBsaXN0cyBpZiB0aGUgaW1hZ2UgZXhpc3RzLjxiciAvPihOb3JtYWxseSwgdGhpcyBpcyBmaW5lLCBidXQgaWYgeW91IGFyZSBkb2luZyBzb21ldGhpbmcgY2xldmVyIHdpdGggaW1hZ2U8YnIgLz5hcnJheSBpbmRleGVzLCB0aGlzIGNvdWxkIGNhdXNlIHlvdSB0cm91YmxlLiknOwokbGFuZ1sndGl0bGVfZmx1c2hfY2F0cyddID0gJ1d5Y3p5xZvEhyBwYW1pxJnEhyBwb2RyxJljem7EhSBrYXRhbG9ndSc7CiRsYW5nWyd0aXRsZV9mbHVzaF9jYXRzX2hlbHAnXSA9ICdKZcW8ZWxpIG1hc3ogZHXFvG8gcG96eWNqaSB3IGthdGVnb3JpaTxiciAvPm5pZWt0Jm9hY3V0ZTtyZSBpbnN0YWxhY2plIFBIUCBtb2fEhSBwb2thenl3YcSHIHN0cm9ueSBuaWVwb3ByYXduaWUuPGJyIC8+WmF6bmFjeiB0xJkgb3BjasSZIGJ5IHJvendpxIV6YcSHIHByb2JsZW0gKHNwcmF3ZMW6IHRlxbwgY3p5IG5pZSBtYSBqYWtpY2jFmyBlZmVrdCZvYWN1dGU7dyB1Ym9jem55Y2guJzsKJGxhbmdbJ2NhdGFsb2dlciddID0gJ0thdGFsb2cnOwokbGFuZ1snaXRlbV9wYWdlJ10gPSAnU3Ryb25hIHBvenljamkga2F0YWxvZ3UnOwokbGFuZ1snY2F0ZWdvcnlfcGFnZSddID0gJ1N0cm9uYSBrYXRlZ29yaWknOwokbGFuZ1snY2F0YWxvZ19wcmludGFibGUnXSA9ICdLYXRhbG9nIHcgd2Vyc2ppIGRvIGRydWt1JzsKJGxhbmdbJ2NhdGFsb2dfZGF0YXNoZWV0J10gPSAnQXJrdXN6IGRhbnljaCBrYXRhbG9ndSc7CiRsYW5nWydjYXRhbG9nX3Nob3J0X2xpc3QnXSA9ICdMaXN0YSBjZWNoJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtX3NvcnRfb3JkZXInXSA9ICdVc3RhdyBwb3J6xIVkZWsgc29ydG93YW5pYSBwb3p5Y2ppJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtc19wZXJfcGFnZSddID0gJ1VzdGF3IGxpY3pixJkgcG96eWNqaSBuYSBzdHJvbsSZJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9jYXRlZ29yeV9yZWN1cnNlJ10gPSAnVXN0YXcgc3BvcyZvYWN1dGU7YiB3ecWbd2lldGxhbmlhIGthdGVnb3JpaSc7CiRsYW5nWyd0aXRsZV9pdGVtX3NvcnRfb3JkZXInXSA9ICdEb215xZtsbnkgcG9yesSFZGVrIHNvcnRvd2FuaWEgcG96eWNqaSc7CiRsYW5nWyd0aXRsZV9wcmludGFibGVfc29ydF9vcmRlciddID0gJ0RvbXnFm2xueSBwb3J6xIVkZWsgc29ydG93YW5pYSBrYXRhbG9ndSB3IHdlcnNqaSBkbyBkcnVrdSc7CiRsYW5nWyd0aXRsZV9pdGVtc19wZXJfcGFnZSddID0gJ0RvbXnFm2xuYSBsaWN6YmEgcG96eWNqaSBuYSBzdHJvbsSZJzsKJGxhbmdbJ3RpdGxlX2F2YWlsX2F0dHJzJ10gPSAnQXRyeWJ1dHkgcG96eWNqaSBkb3N0xJlwbmUgdyBzemFibG9uaWUnOwokbGFuZ1sndGl0bGVfYXZhaWxfaW1hdHRycyddID0gJ09icmF6eSBwb3p5Y2ppIGRvc3TEmXBuZSB3IHN6YWJsb25pZSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfaGVybyddID0gJ1dpZWxrb8WbxIcgb2JyYXp1IGRsYSBzdHJvbnkgcG96eWNqaSAoZMWCdcW8c3phIGtyYXfEmWTFuiB3IHBpa3NlbGFjaCknOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX3RodW1ibmFpbCddID0gJ1dpZWxrb8WbxIcgbWluaWF0dXJraSBkbGEgc3Ryb255IHBvenljamkgKGTFgnXFvHN6YSBrcmF3xJlkxbogdyBwaWtzZWxhY2gpJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV9jYXRlZ29yeSddID0gJ1dpZWxrb8WbxIcgbWluaWF0dXJraSBkbGEgcG96eWNqaSBuYSBzdHJvbmllIGthdGVnb3JpaSAoZMWCdcW8c3phIGtyYXfEmWTFuiB3IHBpa3NlbGFjaCknOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX2NhdGFsb2cnXSA9ICdXaWVsa2/Fm8SHIG1pbmlhdHVya2kgZGxhIHBvenljamkgbmEgc3Ryb25pZSBrYXRhbG9ndSAoZMWCdcW8c3phIGtyYXfEmWTFuiB3IHBpa3NlbGFjaCknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV9oZXJvJ10gPSAnV2llbGtvxZvEhyBvYnJhenUgZGxhIHN0cm9ueSBrYXRlZ29yaWkgKGTFgnXFvHN6YSBrcmF3xJlkxbogdyBwaWtzZWxhY2gpJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX3NpemVfdGh1bWJuYWlsJ10gPSAnV2llbGtvxZvEhyBtaW5pYXR1cmtpIGRsYSBzdHJvbnkga2F0ZWdvcmlpIChkxYJ1xbxzemEga3Jhd8SZZMW6IHcgcGlrc2VsYWNoKSc7CiRsYW5nWyd0aXRsZV90ZW1wbGF0ZSddID0gJ1N6YWJsb24nOwokbGFuZ1sndGl0bGVfdGVtcGxhdGVfdHlwZSddID0gJ1R5cCBzemFibG9udSc7CiRsYW5nWyd0aXRsZV90aXRsZSddID0gJ1R5dHXFgic7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX2NvdW50J10gPSAnTWFrc3ltYWxuYSBsaWN6YmEgb2JyYXomb2FjdXRlO3cgZGxhIGthxbxkZWogcG96eWNqaSBrYXRhbG9ndSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9pbWFnZV9jb3VudCddID0gJ01ha3N5bWFsbmEgbGljemJhIEJhbm5lciZvYWN1dGU7dyBkbGEga2HFvGRlaiBzdHJvbnkga2F0ZWdvcmlpJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fYXR0cmlidXRlc19oZWxwJ10gPSAnS2HFvGR5IHogYXRyeWJ1dCZvYWN1dGU7dywga3Qmb2FjdXRlO3JlIHR1IHdwcm93YWR6aXN6IGLEmWR6aWUgdHl0dcWCZW0gcG9sYSwga3Qmb2FjdXRlO3JlIG1vxbxlc3ogdcW8ecSHIGRvIG9waXNhbmlhIGRhbmVqIHBvenljamkga2F0YWxvZ3UsIGkgYsSZZHppZSB3ecWbd2lldGxhbnkgd3JheiB6IHTEhSBwb3p5Y2rEhS4gTW/FvGVzeiB1c3RhbGnEhyBzcG9zJm9hY3V0ZTtiIHd5xZt3aWV0bGFuaWEgYXRyeWJ1dCZvYWN1dGU7dyB1YWt0dWFsbmlhasSFYyBzemFibG9uLiBXeWN6ecWbxIcgcG9sZSBpc3RuaWVqxIVjZWdvIGF0cnlidXR1IGFieSBnbyB1c3VuxIXEhyBsdWIgd3Bpc3ogdGVrc3QgbmEgaXN0bmllasSFY3ltIGFieSB6YW1pZW5pxIcuJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2F0dHJpYnV0ZXNfaGVscCddID0gJ0thxbxkeSB6IGF0cnlidXQmb2FjdXRlO3csIGt0Jm9hY3V0ZTtyZSB0dSB3cHJvd2FkemlzeiBixJlkemllIHR5dHXFgmVtIHBvbGEsIGt0Jm9hY3V0ZTtyZSBtb8W8ZXN6IHXFvHnEhyBkbyBvcGlzYW5pYSBkYW5laiBrYXRlZ29yaWkga2F0YWxvZ3UsIGkgYsSZZHppZSB3ecWbd2lldGxhbnkgd3JheiB6IHTEhSBwb3p5Y2rEhS4gTW/FvGVzeiB1c3RhbGnEhyBzcG9zJm9hY3V0ZTtiIHd5xZt3aWV0bGFuaWEgYXRyeWJ1dCZvYWN1dGU7dyB1YWt0dWFsbmlhasSFYyBzemFibG9uLiBXeWN6ecWbxIcgcG9sZSBpc3RuaWVqxIVjZWdvIGF0cnlidXR1IGFieSBnbyB1c3VuxIXEhyBsdWIgd3Bpc3ogdGVrc3QgbmEgaXN0bmllasSFY3ltIGFieSB6YW1pZW5pxIcuJzsKJGxhbmdbJ3RpdGxlX2NhdGFsb2dfYXR0cmlidXRlc19oZWxwJ10gPSAnS2HFvGR5IHogYXRyeWJ1dCZvYWN1dGU7dywga3Qmb2FjdXRlO3JlIHR1IHdwcm93YWR6aXN6IGLEmWR6aWUgdHl0dcWCZW0gcG9sYSwga3Qmb2FjdXRlO3JlIG1vxbxlc3ogdcW8ecSHIGRvIG9waXNhbmlhIGNhxYJlZ28ga2F0YWxvZ3UsIGkgYsSZZHppZSB3ecWbd2lldGxhbnkgbmEgc3Ryb25pZSBrYXRhbG9ndSB3IHdlcnNqaSBkbyB3eWRydWt1LiBNb8W8ZXN6IHVzdGFsacSHIHNwb3Mmb2FjdXRlO2Igd3nFm3dpZXRsYW5pYSBhdHJ5YnV0Jm9hY3V0ZTt3IHVha3R1YWxuaWFqxIVjIHN6YWJsb24uIFd5Y3p5xZvEhyBwb2xlIGlzdG5pZWrEhWNlZ28gYXRyeWJ1dHUgYWJ5IGdvIHVzdW7EhcSHIGx1YiB3cGlzeiB0ZWtzdCBuYSBpc3RuaWVqxIVjeW0gYWJ5IHphbWllbmnEhy4nOwokbGFuZ1sndGl0bGVfZm9yY2VfYXNwZWN0X3JhdGlvJ10gPSAnV3ltdXNpxIcgd3nFm3dpZXRsYW5pZSBvYnJheiZvYWN1dGU7dyB3IHVzdGFsb255bSB3c3Amb2FjdXRlO8WCY3p5bm5pa3UgcHJvcG9yY2ppPyc7CiRsYW5nWyd0aXRsZV9mb3JjZV9hc3BlY3RfcmF0aW9fbGFiZWwnXSA9ICdXeW11xZsgd3NwJm9hY3V0ZTvFgmN6eW5uaWsgcHJvcG9yY2ppIChqZXN6Y3plIG5pZSB6YWltcGxlbWVudG93YW5lKSc7CiRsYW5nWyd0aXRsZV9pbWFnZV9hc3BlY3RfcmF0aW8nXSA9ICdXc3Amb2FjdXRlO8WCY3p5bm5payBwcm9wb3JjamkgKHVzdGFsIGpha28gXCZxdW90OzQ6M1wmcXVvdDsgbHViIFwmcXVvdDsxOjIuNVwmcXVvdDspJzsKJGxhbmdbJ3RpdGxlX2FzcGVjdF9yYXRpb19oZWxwJ10gPSAnSmXFm2xpIHd5bXVzaXN6IHd5xZt3aWV0bGFuaWUgb2JyYXp1IHcgdXN0YWxvbnltIHdzcCZvYWN1dGU7xYJjenlubmlrdSBwcm9wb3JjamksIGLEmWR6aWUgb24gcHJ6ZXNrYWxvd2FueSBkb2vFgmFkbmllIGRvIHRlZ28gd3NwJm9hY3V0ZTvFgmN6eW5uaWthIHByb3BvcmNqaSAobHViIGplZ28gb2R3cm90bm/Fm2NpLCB3IHRlbiBzcG9zJm9hY3V0ZTtiIG90cnp5bWFzeiBvYmEgZm9ybWF0eTogb3JpZW50YWNqxJkgcGlvbm93xIUgaSBwb3ppb23EhSkuIFcgcHJ6ZWNpd255bSB3eXBhZGt1LCBvYnJhenkgemFjaG93YWrEhSBpY2ggcHJvcG9yY2plIGkgem9zdGFuxIUgcHJ6ZXNrYWxvd2FuZSB0YWsgYWJ5IGljaCBkxYJ1xbxzemEga3Jhd8SZZMW6IG1pYcWCYSB1c3RhbG9uxIUgZMWCdWdvxZvEhy4gPGI+amVzemN6ZSBuaWUgemFpbXBsZW1lbnRvd2FuZSE8L2I+JzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3NvcnQnXSA9ICdLb2xlam5vxZvEhyBzb3J0b3dhbmlhIGxpc3R5IHBvenljamkgbmEgc3Ryb25pZSBrYXRlZ29yaWknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZSddID0gJ0RvbXnFm2xueSBzcG9zJm9hY3V0ZTtiIHd5xZt3aWV0bGFuaWEga2F0ZWdvcmlpJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfaXRlbXNfYWxsJ10gPSAnV3nFm3dpZXRsIHdzenlzdGtpZSBwb3p5Y2plIHdld27EhXRyeiB0ZWoga2F0ZWdvcmlpLCB3xYLEhWN6YWrEhWMgcG96eWNqZSB6IHBvZGthdGVnb3JpaSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2l0ZW1zX29uZSddID0gJ1d5xZt3aWV0bCBvZCByYXp1IHdzenlzdGtpZSBwb3p5Y2plIHdld27EhXRyeiB0ZWoga2F0ZWdvcmlpLCBhbGUgYmV6IHBvenljamkgeiBwb2RrYXRlZ29yaWknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9jYXRlZ29yaWVzX2FsbCddID0gJ1d5xZt3aWV0bCB3c3p5c3RraWUga2F0ZWdvcmllIHdld27EhXRyeiB0ZWoga2F0ZWdvcmlpLCB3xYLEhWN6YWrEhWMga2F0ZWdvcmllIHcgcG9ka2F0ZWdvcmlhY2gnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9jYXRlZ29yaWVzX29uZSddID0gJ1d5xZt3aWV0bCBvZCByYXp1IHdzenlzdGtpZSBrYXRlZ29yaWUgd2V3bsSFdHJ6IHRlaiBrYXRlZ29yaWksIGFsZSBiZXoga2F0ZWdvcmlpIHcgcG9ka2F0ZWdvcmlhY2gnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9taXhlZF9hbGwnXSA9ICdXecWbd2lldGwgd3N6eXN0a2llIHBvenljamUgaSBrYXRlZ29yaWUgd2V3bsSFdHJ6IHRlaiBrYXRlZ29yaWksIHfFgsSFY3phasSFYyBwb3p5Y2plIGkga2F0ZWdvcmllIHcgcG9ka2F0ZWdvcmlhY2gnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9taXhlZF9vbmUnXSA9ICdXecWbd2lldGwgb2QgcmF6dSB3c3p5c3RraWUgcG96eWNqZSBpIGthdGVnb3JpZSB3ZXduxIV0cnogdGVqIGthdGVnb3JpaSwgYWxlIGJleiBwb3p5Y2ppIGkga2F0ZWdvcmlpIHcgcG9ka2F0ZWdvcmlhY2gnOwokbGFuZ1sndGl0bGVfc2hvd19taXNzaW5nX2ltYWdlcyddID0gJ1Bva2HFvCBvYnJheiBcJnF1b3Q7QnJhayBvYnJhemthXCZxdW90OyBkbGEgYnJha3VqxIVjeWNoIG9icmF6Jm9hY3V0ZTt3JzsKJGxhbmdbJ3RpdGxlX3Nob3dfbWlzc2luZ19pbWFnZXNfbG9uZyddID0gJ1Bva2HFvCBzcGVjamFsbnkgb2JyYXplayBcJnF1b3Q7QnJhayBvYnJhemthXCZxdW90OyBqZcWbbGkgYnJha3VqZSBvYnJheiZvYWN1dGU7dyAodyBwcnplY2l3bnltIHd5cGFka3Ugem9zdGFuaWUgdcW8eXR5IG9icmF6IC0gcHJ6ZXpyb2N6eXN0eSBwaWtzZWwpLic7CiRsYW5nWyduYXR1cmFsX29yZGVyJ10gPSAnUG9yesSFZGVrIG5hd2lnYWNqaSc7CiRsYW5nWydhbHBoYV9vcmRlciddID0gJ1BvcnrEhWRlayBhbGZhYmV0eWN6bnknOwokbGFuZ1snbWFuYWdlcHJlZnMnXSA9ICdaYXJ6xIVkemFqIHVzdGF3aWVuaWFtaSc7CiRsYW5nWydtYW5hZ2VhdHRycyddID0gJ1phcnrEhWR6YWogYXRyeWJ1dGFtaSB1xbx5dGtvd25pa2EnOwokbGFuZ1snZ2xvYmFsb3BzJ10gPSAnR2xvYmFsbmUgdXN0YXdpZW5pYSBrYXRhbG9ndSc7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ0RvZGFqIHN6YWJsb24nOwokbGFuZ1sncmVpbXBvcnR0ZW1wbGF0ZXMnXSA9ICdaYWltcG9ydHVqIHBvbm93bmllIHByenlrxYJhZG93ZSBzemFibG9ueSAodXdhxbxhaiBuYSB0xIUgb3BjasSZISknOwokbGFuZ1sncmVpbXBvcnRlZCddID0gJ1ByenlrxYJhZG93ZSBzemFibG9ueSB6b3N0YcWCeSB6YWltcG9ydG93YW5lLic7CiRsYW5nWyd0ZW1wbGF0ZXVwZGF0ZWQnXSA9ICdTemFibG9uIHpvc3RhxYIgZG9kYW55L3Vha3R1YWxuaW9ueS4nOwokbGFuZ1sndGVtcGxhdGVkZWxldGVkJ10gPSAnU3phYmxvbiB6b3N0YcWCIHVzdW5pxJl0eS4nOwokbGFuZ1sncHJlZnN1cGRhdGVkJ10gPSAnVXN0YXdpZW5pYSB6b3N0YcWCeSB1YWt0dWFsbmlvbmUuJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHXFgiB3IHdlcnNqaSAlcyB6b3N0YcWCIHphaW5zdGFsb3dhbnkuJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdcWCIHpvc3RhxYIgdWFrdHVhbG5pb255IGRvIHdlcnNqaSAlcy4nOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1xYIgem9zdGHFgiBvZGluc3RhbG93YW55Lic7CiRsYW5nWydhdHRyc3VwZGF0ZWQnXSA9ICdBdHJ5YnV0eSB6b3N0YcWCeSB1YWt0dWFsbmlvbmUuJzsKJGxhbmdbJ25vZ2xvYmFsY2hhbmdlJ10gPSAnQmV6IHptaWFuJzsKJGxhbmdbJ2dsb2JhbGx5dXBkYXRlZCddID0gJ1ptaWFueSB6b3N0YcWCeSByb3pwcm9wYWdvd2FuZSBnbG9iYWxuaWUuJzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ0VkeXR1aiBzemFibG9uJzsKJGxhbmdbJ3N1YnRlbXBsYXRlcyddID0gJ1N6YWJsb255IGthdGFsb2d1JzsKJGxhbmdbJ25leHQnXSA9ICc6JnJhcXVvOyc7CiRsYW5nWydwcmV2J10gPSAnJmxhcXVvOzonOwokbGFuZ1snZWRpdCddID0gJ0VkeXR1aic7CiRsYW5nWydkZWxldGUnXSA9ICdVc3XFhCc7CiRsYW5nWydub3RlbXBsYXRlcyddID0gJ0JyYWsgemFpbnN0YWxvd2FueWNoIHN6YWJsb24mb2FjdXRlO3chJzsKJGxhbmdbJ2hlbHB0ZXh0J10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5UaGlzIG1vZHVsZSBsZXRzIHlvdSBjcmVhdGUgb25saW5lIGNhdGFsb2dzIG9yIHBvcnRmb2xpb3MuIENhdGFsb2dzIGNvbnNpc3Qgb2YgXCZxdW90O0NhdGFsb2cgSXRlbXNcJnF1b3Q7IHdoaWNoIGNvdWxkIGJlIHByb2R1Y3RzLCB3b3JrcyBvZiBhcnQsIG9yIHRoZSBsaWtlLCBhbmQgXCZxdW90O0NhdGFsb2cgQ2F0ZWdvcmllc1wmcXVvdDsgd2hpY2ggY291bGQgYmUgaXRlbSBjYXRlZ29yaWVzIG9yIG90aGVyIG5hdHVyYWwgZGl2aXNpb25zIG9mIHRoZSBjYXRhbG9nLjwvcD4NCjxwPkNhdGVnb3JpZXMgbWF5IGJlIGRlZmluZWQgaGllcmFyY2hpY2FsbHkgKHVzaW5nIHRoZSBzdGFuZGFyZCBDTVMgTWFkZSBTaW1wbGUgY29udGVudCBsaXN0KS4gQ2F0ZWdvcnkgcGFnZXMgY2FuIGRpc3BsYXkgaXRlbXMgaW4gdGhlIGNhdGVnb3J5IGFuZC9vciBzdWJjYXRlZ29yaWVzLCBvcHRpb25hbGx5IHJlY3Vyc2luZyB0aHJvdWdoIHN1Yi1jYXRlZ29yaWVzLiBUaGlzIGJlaGF2aW9yIGNhbiBiZSBjb25maWd1cmVkIG9uIGEgcGVyLWNhdGVnb3J5IGJhc2lzLjwvUD4NCjxwPlRoZXJlIGlzIGFsc28gYSBQcmludGFibGUgQ2F0YWxvZywgd2hpY2ggcmVwcmVzZW50cyB0aGUgd2hvbGUgY29sbGVjdGlvbiBvZiBDYXRhbG9nIEl0ZW1zIG9uIGEgc2luZ2xlIHBhZ2UgKHRoaXMgaXMgY3VycmVudGx5IGltcGxlbWVudGVkIGJhZGx5LCBhbmQgd2lsbCBsb2FkIHNsb3dseSkuPC9wPg0KPHA+VGhlIG1vZHVsZSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgXCZxdW90O0NvbnRlbnQgQWxpYXNlc1wmcXVvdDsgKGEgbW9kdWxlIGF2YWlsYWJsZSBhdCA8YSBocmVmPVwiaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jb250ZW50YWxpYXNlcy9cIj50aGUgRGV2ZWxvcGVyIEZvcmdlPC9hPiksIHdoaWNoIGFsbG93cyB5b3UgdG8gcGxhY2UgYW55IENhdGFsb2cgSXRlbSBpbnRvIG11bHRpcGxlIENhdGFsb2cgQ2F0ZWdvcmllcy48L3A+DQo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4NCjxwPldoZW4geW91IGluc3RhbGwgdGhpcyBtb2R1bGUsIGl0IGNyZWF0ZXMgdGhyZWUgbmV3IENvbnRlbnQgVHlwZXM6IENhdGFsb2cgSXRlbSwgQ2F0YWxvZyBDYXRlZ29yeSwgYW5kIFByaW50YWJsZSBDYXRhbG9nLiBXaGVuIHlvdVwmIzAzOTtyZSBpbiB5b3VyIHNpdGUgYWRtaW5pc3RyYXRpb24gY2F0ZWdvcnksIHlvdSBhZGQgQ2F0YWxvZyBJdGVtcyBhbmQgQ2F0YWxvZyBDYXRlZ29yaWVzIGp1c3QgYXMgeW91IHdvdWxkIGFueSBvdGhlciBraW5kIG9mIHBhZ2UuIFNlbGVjdCBDb250ZW50ID4gUGFnZXMgPiBBZGQgQ29udGVudCwgYW5kIHRoZW4gc2VsZWN0IFwmcXVvdDtDYXRhbG9nIEl0ZW1cJnF1b3Q7IG9yIFwmcXVvdDtDYXRhbG9nIENhdGVnb3J5XCZxdW90OyBmcm9tIHRoZSBDb250ZW50IFR5cGUgcHVsbGRvd24uPC9wPg0KPGg0PkNhdGFsb2cgSXRlbXM8L2g0Pg0KPHA+QWRkaW5nIGEgQ2F0YWxvZyBJdGVtIGlzIHNpbWlsYXIgdG8gYWRkaW5nIGFuIG9yZGluYXJ5IHBhZ2UgdG8geW91ciBzaXRlLiBUaGUgZGF0YSBmaWVsZHMgZm9yIHRoZSBJdGVtIGFyZSBub3QgZXhhY3RseSB0aGUgc2FtZSwgaG93ZXZlci4gQWxzbyBub3RlIHRoYXQgaW4gdGhlIFwmcXVvdDtJbWFnZXNcJnF1b3Q7IHRhYiwgeW91IGNhbiBzZWxlY3QgbXVsdGlwbGUgaW1hZ2VzIHRvIHVwbG9hZCBmb3IgdGhlIGl0ZW0uIFdoZW4geW91IHVwbG9hZCBpbWFnZXMsIHRoZSBzeXN0ZW0gd2lsbCBzaXplIHRoZW0gYXBwcm9wcmlhdGVseSBmb3IgdGhlIGNhdGFsb2csIGNyZWF0ZSB0aHVtYm5haWxzIGZvciB1c2UgaW4gdGhlIEl0ZW1cJiMwMzk7cyBwYWdlLCBjcmVhdGUgdGh1bWJuYWlscyBmb3IgYW55IENhdGVnb3J5IHBhZ2VzLCBhbmQgc28gb24uIFRoaXMgcmVxdWlyZXMgdGhhdCB5b3UgaGF2ZSBHRCBvciBhIHNpbWlsYXIgaW1hZ2UgbGlicmFyeSBpbnN0YWxsZWQuIEN1cnJlbnRseSwgb25seSBqcGVnIGZvcm1hdCBpbWFnZXMgYXJlIHN1cHBvcnRlZC48L3A+DQo8aDQ+Q2F0YWxvZyBDYXRlZ29yaWVzPC9oND4NCjxwPkEgQ2F0YWxvZyBDYXRlZ29yeSBpcyB1c2VkIGZvciBvcmdhbml6aW5nIHlvdXIgY2F0YWxvZyBpdGVtcy4gSXQgcHJvdmlkZXMgYSBwYWdlIHRoYXQgbGlzdHMgQ2F0YWxvZ2VyIGNvbnRlbnQgdGhhdCBpcyBjb250YWluZWQgYnkgaXQuIEEgQ2F0YWxvZyBJdGVtIGlzIGNvbnNpZGVyZWQgdG8gYmUgcGFydCBvZiBhIENhdGFsb2cgQ2F0ZWdvcnkgaWYgaXQgaXMgYmVsb3cgdGhhdCBDYXRlZ29yeSBpbiB0aGUgU2l0ZSBIaWVyYXJjaHkuIENhdGVnb3JpZXMgY2FuIHNpbWlsYXJseSBpbmNsdWRlIG90aGVyIENhdGVnb3JpZXMuPC9wPg0KPHA+Q2F0YWxvZyBDYXRlZ29yaWVzIGhhdmUgYSBudW1iZXIgb2Ygc2V0dGluZ3MgdG8gZGV0ZXJtaW5lIGhvdyB0aGV5IHNob3VsZCBkaXNwbGF5IHRoZSBJdGVtcyBhbmQgQ2F0ZWdvcmllcyB0aGV5IGNvbnRhaW46IGlmIHlvdSBsb29rIGF0IHRoZSBcJnF1b3Q7T3B0aW9uc1wmcXVvdDsgdGFiLCB5b3UgY2FuIGNob29zZSBob3cgbWFueSBpdGVtcyBhbmQvb3IgY2F0ZWdvcmllcyB0byBzaG93LCB3aGF0IG9yZGVyIHRvIHNob3cgdGhlbSBpbiwgd2hldGhlciB0byBkaXNwbGF5IG9ubHkgaXRlbXMgb3Igb25seSBjYXRlZ29yaWVzIG9yIGJvdGgsIGFuZCBob3cgbWFueSBsZXZlbHMgb2YgdGhlIGhpZXJhcmNoeSB0byBkaXNwbGF5IGJlbG93IHRoZSBjYXRlZ29yeSBwYWdlLjwvcD4NCjxwPkZvciBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTo8L3A+DQo8b2w+DQoJPGxpPjxiPkhhdHM8L2I+DQoJCTxvbD4NCgkJCTxsaT48Yj5GYXNoaW9uPC9iPg0KCQkJIAk8b2w+DQoJCQkgCQk8bGk+RmVhdGhlcmVkIEhhdDwvbGk+PGxpPkZlZG9yYSA8L2xpPjxsaT5CYXNlYmFsbCBIYXQ8L2xpPg0KCQkJIAk8L29sPg0KCQkJIDwvbGk+DQoJCSAJPGxpPjxiPldvcmsgSGF0czwvYj4NCgkJICAgIAk8b2w+DQoJCSAgICAJCTxsaT5IYXJkIEhhdDwvbGk+PGxpPkRpdmluZyBIZWxtZXQ8L2xpPg0KCQkgICAgCTwvb2w+DQoJCSAgICA8L2xpPg0KCQk8L29sPg0KCTwvbGk+DQo8L29sPg0KPHA+SW4gdGhpcyBkaWFncmFtLCBib2xkZWQgaXRlbXMgYXJlIENhdGFsb2cgQ2F0ZWdvcmllcywgYW5kIG5vbi1ib2xkZWQgaXRlbXMgYXJlIENhdGFsb2cgSXRlbXMuIERlcGVuZGluZyB1cG9uIGhvdyB5b3Ugc2V0IHlvdXIgb3B0aW9ucywgdGhlIEhhdHMgQ2F0ZWdvcnkgUGFnZSBjYW4gc2hvdyBvbmx5IGVudHJpZXMgZm9yIHRoZSBGYXNoaW9uIGFuZCBXb3JrIEhhdHMgQ2F0ZWdvcnkgUGFnZXMsIG9yIGl0IGNhbiBzaG93IGVudHJpZXMgZm9yIEZhc2hpb24sIFdvcmsgSGF0cywgYW5kIGFsbCB0aGUgaGF0cyBsaXN0ZWQgYmVsb3cgdGhlbS48L3A+DQo8cD5Zb3UgY2FuIG9wdCB0byBzaG93IHRoZSBpdGVtcyBpbiBcJnF1b3Q7bmF0dXJhbFwmcXVvdDsgb3JkZXIgKGkuZS4sIHRoZSBvcmRlciB0aGUgSXRlbXMgc2hvdyB1cCBpbiB0aGUgQ01TIENvbnRlbnQgSGllcmFyY2h5KSwgb3IgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLjwvUD4NCjxwPklmIHlvdSBoYXZlIGxhcmdlIG51bWJlcnMgb2YgaXRlbXMgaW4gYSBDYXRlZ29yeSwgeW91IGNhbiBzZXQgdGhlIG1heGltdW0gbnVtYmVyIHRvIGJlIGRpc3BsYXllZCBpbiBhIENhdGVnb3J5IFBhZ2UsIGFuZCB0aGUgcGFnZSB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGxpbmtzIHRvIG5hdmlnYXRlIHRocm91Z2ggdGhlIGxpc3QuPC9wPg0KPHA+RWFjaCBDYXRlZ29yeSBwYWdlIGNhbiBoYXZlIGRpZmZlcmVudCBzZXR0aW5ncyBmb3Igc29ydCBvcmRlciwgbGV2ZWxzIHRvIGRpc3BsYXksIGFuZCBudW1iZXIgb2YgaXRlbXMuIFlvdSBjYW4gc2V0IHRoZSBkZWZhdWx0IGZvciB0aGVzZSB2YWx1ZXMgaW4gRXh0ZW5zaW9ucyA+IENhdGFsb2dlciA+IE1hbmFnZSBQcmVmZXJlbmNlcy4gSWYsIGF0IGEgbGF0ZXIgZGF0ZSwgeW91IHdpc2ggdG8gY2hhbmdlIHNvbWUgc2V0dGluZyBvbiBhbGwgb2YgeW91ciBDYXRlZ29yeSBwYWdlcywgeW91IGNhbiBnbyBpbnRvIEV4dGVuc2lvbnMgPiBDYXRhbG9nZXIgPiBHbG9iYWwgQ2F0YWxvZyBPcHRpb25zLCBhbmQgbWFrZSB0aG9zZSBjaGFuZ2VzLjwvcD4NCjxoND5JbWFnZXM8L2g0Pg0KPHA+Q2F0YWxvZ2VyIGFsbG93cyB5b3UgdG8gc2VsZWN0IGRpZmZlcmVudCBzaXplIGltYWdlcyBmb3IgSXRlbSBwYWdlcywgQ2F0ZWdvcnkgcGFnZXMsIGFuZCB0aGUgUHJpbnRhYmxlIENhdGFsb2cuIFlvdSBjYW4gc2V0IHRoZXNlIGRlZmF1bHRzIGluIEV4dGVuc2lvbnMgPiBDYXRhbG9nZXIgPiBNYW5hZ2UgUHJlZmVyZW5jZXMuPC9wPg0KPHA+V2hlbiB5b3UgdXBsb2FkIGltYWdlcywgdGhlIG9yaWdpbmFsIGlzIHN0b3JlZC4gV2hlbiBzb21lb25lIHZpc2l0cyBhIHBhZ2UsIHRoZSByZWR1Y2VkIHNpemUgaW1hZ2VzIGFyZSByZXF1ZXN0ZWQgdXNpbmcgYSBzcGVjaWFsIFVSTCwgd2hpY2ggd2lsbCByZWRpcmVjdCB0aGUgdXNlclwmIzAzOTtzIGJyb3dzZXIgdG8gdGhlIHNjYWxlZCBpbWFnZSBpZiBpdCBleGlzdHMsIGFuZCBjcmVhdGluZyB0aGUgc2NhbGVkIGltYWdlIGlmIGl0IGRvZXNuXCYjMDM5O3QuIFRoaXMgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgaW1hZ2VzLCB3aXRob3V0IGhhdmluZyB0byByZS11cGxvYWQgYWxsIHRoZSBpbWFnZXMsIG9yIHJlc2NhbGluZyB0aGVtIGFsbCBhdCBvbmNlLjwvcD4NCjxwPlRoaXMgaW1hZ2UgcmVzY2FsaW5nIGNvZGUgcmVxdWlyZXMgdGhhdCB5b3UgaGF2ZSBlaXRoZXIgSW1hZ2VNYWdpY2sgb3IgR0QgbGliIGluc3RhbGxlZCwgYW5kIGNvbmZpZ3VyZWQgaW4geW91ciBDTVMgTWFkZSBTaW1wbGUgY29uZmlnLnBocC48L3A+DQo8aDM+RmVhdHVyZSBMaXN0czwvaDM+DQo8cD5Zb3UgY2FuLCBhcyBvZiB2ZXJzaW9uIDAuNCwgaGF2ZSBcJnF1b3Q7ZmVhdHVyZSBsaXN0c1wmcXVvdDsgd2hpY2ggYXJlIHRoZSA8aT5uPC9pPiBtb3N0LXJlY2VudGx5IGFkZGVkIGNhdGFsb2cgaXRlbXMsIG9yIGEgY29sbGVjdGlvbiBvZiA8aT5rPC9pPiByYW5kb20gaXRlbXMgZnJvbSB0aGUgY2F0YWxvZy48L3A+DQo8aDQ+UmVjZW50bHkgQWRkZWQgRmVhdHVyZSBMaXN0PC9oND4NCjxwPlRvIHVzZSBhIFwmcXVvdDttb3N0LXJlY2VudGx5IGFkZGVkXCZxdW90OyBsaXN0IHdpbGwgYWxsb3cgeW91IHRvIGRpc3BsYXkgdGhlIG1vc3QgcmVjZW50bHktYWRkZWQgY2F0YWxvZyBpdGVtcyB1bmRlciBhIHNwZWNpZmllZCBwYXJ0IG9mIHlvdXIgaGllcmFyY2h5LjwvcD4NCjxwPlRoZSBzeW50YXggZm9yIGEgXCZxdW90O21vc3QgcmVjZW50bHkgYWRkZWRcJnF1b3Q7IGxpc3QgaXMgbGlrZTo8L3A+DQo8cD57Y21zX21vZHVsZSBtb2R1bGU9XCYjMDM5O0NhdGFsb2dlclwmIzAzOTsgYWN0aW9uPVwmIzAzOTtyZWNlbnRcJiMwMzk7IHN1Yl90ZW1wbGF0ZT1cJiMwMzk7bXlfc3ViX3RlbXBsYXRlXCYjMDM5O30sIHdoZXJlIHN1Yl90ZW1wbGF0ZSBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgbGlzdC4gVGhlcmUgYXJlIHR3byBvcHRpb25hbCBwYXJhbWV0ZXJzLCBjb3VudD1cJiMwMzk7M1wmIzAzOTsgYWxpYXM9XCYjMDM5O3BhZ2VfYWxpYXNcJiMwMzk7LCB3aGVyZSBjb3VudCBpcyB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRvIGluY2x1ZGUsIGFuZCBwYWdlX2FsaWFzIGluZGljYXRlcyB0aGUgdG9wIG9mIHRoZSB0cmVlIChlLmcuLCBhIHBsYWNlIGluIHlvdXIgbWVudSBoaWVyYXJjaHksIHR5cGljYWxseSBhIGNhdGVnb3J5IHBhZ2UpIGluIHdoaWNoIHRvIGxvb2sgZm9yIG5ldyBpdGVtcy4gQSBzcGVjaWFsIHZhbHVlIGZvciBcJnF1b3Q7cGFnZV9hbGlhc1wmcXVvdDsgaXMgXCZxdW90Oy9cJnF1b3Q7LCB3aGljaCBtZWFucyB0byB1c2UgPGk+YWxsPC9pPiBwYWdlcyBpbiB0aGUgc2l0ZS48L3A+DQo8aDQ+UmFuZG9tIEl0ZW1zIEZlYXR1cmUgTGlzdDwvaDQ+DQo8cD5UaGUgc3ludGF4IGZvciBhIFwmcXVvdDtyYW5kb21cJnF1b3Q7IGxpc3QgaXMgbGlrZTo8L3A+DQo8cD57Y21zX21vZHVsZSBtb2R1bGU9XCYjMDM5O0NhdGFsb2dlclwmIzAzOTsgYWN0aW9uPVwmIzAzOTtyYW5kb21cJiMwMzk7IHN1Yl90ZW1wbGF0ZT1cJiMwMzk7bXlfc3ViX3RlbXBsYXRlXCYjMDM5O30sIHdoZXJlIHN1Yl90ZW1wbGF0ZSBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgbGlzdC4gVGhlcmUgYXJlIHR3byBvcHRpb25hbCBwYXJhbWV0ZXJzLCBjb3VudD1cJiMwMzk7M1wmIzAzOTsgYWxpYXM9XCYjMDM5O3BhZ2VfYWxpYXNcJiMwMzk7LCB3aGVyZSBjb3VudCBpcyB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRvIGluY2x1ZGUsIGFuZCBwYWdlX2FsaWFzIGluZGljYXRlcyB0aGUgdG9wIG9mIHRoZSB0cmVlIChlLmcuLCBhIHBsYWNlIGluIHlvdXIgbWVudSBoaWVyYXJjaHksIHR5cGljYWxseSBhIGNhdGVnb3J5IHBhZ2UpIGluIHdoaWNoIHRvIGxvb2sgZm9yIG5ldyBpdGVtcy4gQSBzcGVjaWFsIHZhbHVlIGZvciBcJnF1b3Q7cGFnZV9hbGlhc1wmcXVvdDsgaXMgXCZxdW90Oy9cJnF1b3Q7LCB3aGljaCBtZWFucyB0byB1c2UgPGk+YWxsPC9pPiBwYWdlcyBpbiB0aGUgc2l0ZS48L3A+DQo8aDM+Q3VzdG9taXphdGlvbiBhbmQgQWR2YW5jZWQgVG9waWNzPC9oMz4NCjxoND5DYXRhbG9nIEl0ZW0gQXR0cmlidXRlczwvaDQ+DQo8cD5UaGUgZGVmYXVsdCBpdGVtIGF0dHJpYnV0ZXMgYXJlIHR5cGljYWwgZm9yIGEgY2F0YWxvZyBvZiBwcm9kdWN0cyBvciBhcnR3b3JrcywgYnV0IGJ5IGdvaW5nIGludG8gRXh0ZW5zaW9ucyA+IENhdGFsb2dlciA+IE1hbmFnZSBVc2VyLURlZmluZWQgQXR0cmlidXRlcywgeW91IGNhbiBjaGFuZ2UgdGhlIGF0dHJpYnV0ZXMuIEl0XCYjMDM5O3MgYmVzdCB0byBkZWZpbmUgdGhlIGF0dHJpYnV0ZXMgYmVmb3JlIHlvdSBzdGFydCBlbnRlcmluZyBDYXRhbG9nIEl0ZW1zLjwvcD4NCjxwPk5vdGUgdGhhdCB0aGUgYXR0cmlidXRlcyB5b3UgZGVmaW5lIG1heSBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSB0ZW1wbGF0ZSB0aGF0IHlvdVwmIzAzOTtyZSB1c2luZyB0byBkaXNwbGF5IENhdGFsb2cgSXRlbXMgLS0gc2VlIEN1c3RvbSBUZW1wbGF0ZXMgYmVsb3cuPC9wPg0KPGg0PkNhdGFsb2cgQ2F0ZWdvcnkgQXR0cmlidXRlczwvaDQ+DQo8cD5TaW1pbGFybHksIHlvdSBjYW4gc2V0IGF0dHJpYnV0ZXMgZm9yIENhdGVnb3JpZXMuIEFnYWluLCB0aGUgYXR0cmlidXRlcyB5b3UgZGVmaW5lIG1heSBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSB0ZW1wbGF0ZSB0aGF0IHlvdVwmIzAzOTtyZSB1c2luZyB0byBkaXNwbGF5IENhdGFsb2cgQ2F0ZWdvcmllcyAtLSBzZWUgQ3VzdG9tIFRlbXBsYXRlcyBiZWxvdy48L3A+DQo8aDQ+UHJpbnRhYmxlIENhdGFsb2cgQXR0cmlidXRlczwvaDQ+DQo8cD5MaWtld2lzZSwgeW91IGNhbiBzZXQgYXR0cmlidXRlcyBmb3IgUHJpbnRhYmxlIENhdGFsb2dzLiBBZ2FpbiwgdGhlIGF0dHJpYnV0ZXMgeW91IGRlZmluZSBtYXkgbmVlZCB0byBiZSBhZGRlZCB0byB0aGUgdGVtcGxhdGUgdGhhdCB5b3VcJiMwMzk7cmUgdXNpbmcgdG8gZGlzcGxheSB5b3VyIFByaW50YWJsZSBDYXRhbG9nIC0tIHNlZSBDdXN0b20gVGVtcGxhdGVzIGJlbG93LjwvcD4NCjxoND5DdXN0b20gVGVtcGxhdGVzPC9oND4NCjxwPklmIHlvdVwmIzAzOTtyZSB3aWxsaW5nIHRvIG1lc3MgYXJvdW5kIHdpdGggU21hcnR5IFRlbXBsYXRlcywgeW91IGNhbiBjaGFuZ2UgdGhlIGxheW91dCBvZiBhbnkgb2YgdGhlIHBhZ2VzIGdlbmVyYXRlZCBieSBDYXRhbG9nZXIuIFRoaXMgc2hvdWxkIG1ha2UgY2VydGFpbiBkZXZlbG9wZXJzIHZlcnkgaGFwcHksIGV2ZW4gaWYgdGhlIGluZWZmaWNpZW5jeSBvZiB0aGUgcmVzdCBvZiB0aGUgY29kZSB3aWxsIG5vdC4gVGhlcmUgYXJlIGZvdXIga2luZHMgb2YgdGVtcGxhdGVzOiBvbmUga2luZCBmb3IgQ2F0YWxvZyBJdGVtcywgb25lIGtpbmQgZm9yIENhdGFsb2cgQ2F0ZWdvcmllcywgYW5kIG9uZSBraW5kIGZvciBQcmludGFibGUgQ2F0YWxvZ3MsIGFuZCBvbmUga2luZCBmb3IgXCZxdW90O0ZlYXR1cmVcJnF1b3Q7IGxpc3RzLCBzdWNoIGFzIHJlY2VudGx5IGFkZGVkIGl0ZW1zIG9yIHJhbmRvbSBzZWxlY3Rpb25zLjwvcD4NCjxwPldoZW4gZWRpdGluZyBhIFRlbXBsYXRlLCB0aGUgYWRtaW4gc2NyZWVuIHdpbGwgZGlzcGxheSBhIGxpc3Qgb2YgU21hcnR5IHRhZ3MgYXZhaWxhYmxlIHRvIHlvdSBmb3IgdGhhdCBraW5kIG9mIHRlbXBsYXRlLiBUaGlzIHdpbGwgb25seSBoYXBwZW4gb25jZSB0aGUgbW9kdWxlIGtub3dzIHdoYXQga2luZCBvZiB0ZW1wbGF0ZSB5b3VcJiMwMzk7cmUgZWRpdGluZywgc28gd2hlbiB5b3UgZmlyc3QgY3JlYXRlIHRoZSB0ZW1wbGF0ZSwgaXQgZGlzcGxheXMgYWxsIHRoZSBTbWFydHkgdGFncyBpdCBrbm93cyBhYm91dCwgb25seSBzb21lIG9mIHdoaWNoIGJlaW5nIGFwcGxpY2FibGUuPC9wPg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIENNUyBNYWRlIFNpbXBsZSAgPGEgaHJlZj1cImh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmdcIj5EZXZlbG9wZXIgRm9yZ2U8L2E+LjwvbGk+DQo8bGk+VG8gb2J0YWluIGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHNlbmQgYW4gZW1haWwgdG8gdGhlIGF1dGhvciBhdCA8YSBocmVmPVwibWFpbHRvOnNqZ0BjbXNtb2R1bGVzLmNvbVwiPjxzamdAY21zbW9kdWxlcy5jb20+PC9hPi48L2xpPg0KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj1cImh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZ1wiPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+DQo8bGk+VGhlIGF1dGhvciBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9XCJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXNcIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkgYW5kIGdyb3ZlbGxpbmcgZm9yIGZyZWUgc3VwcG9ydC48L2xpPiAgDQo8L3VsPg0KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0DQpvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+DQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAwNiwgU2FtdWVsIEdvbGRzdGVpbiA8YSBocmVmPVwibWFpbHRvOnNqZ0BjbXNtb2R1bGVzLmNvbVwiPjxzamdAY21zbW9kdWxlcy5jb20+PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9XCJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUExcIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+DQo8bGk+VmVyc2lvbiAwLjUuMyAtIDIxIFNlcHRlbWJlciAyMDA2LiBBZGRlZCBsaW5rcyB0byBzb3VyY2UgKG5vbi1yZXNjYWxlZCkgaW1hZ2VzLCBhbmQgYWRkZWQgaW1hZ2UgZGVsZXRlIGZ1bmN0aW9uYWxpdHkuPC9saT4NCjxsaT5WZXJzaW9uIDAuNS4yIC0gMTcgU2VwdGVtYmVyIDIwMDYuIFJlbW92ZWQgZGVidWcgb3V0cHV0LCByZXZpc2VkIGltYWdlIHN5c3RlbSAoZml4ZWQgYnVncykuIENhY2hpbmcgYnVnIHNlZW1zIHRvIHJlbWFpbi48L2xpPg0KPGxpPlZlcnNpb24gMC41LjEgLSAyNCBBdWd1c3QgMjAwNi4gKGNhbGd1eTEwMDApLCBVcHBlZCBNaW5pbXVtQ01TVmVyc2lvbiB0byAxLjAtc3ZuLCBhbmQgbW9yZSAxLjAgY2hhbmdlcyB3ZXJlIGFkZGVkIChyZW1vdmVkIHN0YXRpYyBtZXRob2RzKTwvbGk+DQo8bGk+VmVyc2lvbiAwLjUgLSAxNiBBdWd1c3QgMjAwNi4gQXNzb3J0ZWQgY29udHJpYnV0ZWQgYnVnIGZpeGVzIGZvciBDTVMgTVMgMS4wLCAgbmV3IG9wdGlvbnMgZm9yIGltYWdlcy48L2xpPg0KPGxpPlZlcnNpb24gMC40LjIgLSAyOCBNYXkgMjAwNi4gQnVnIGZpeCBmb3IgYXR0cmlidXRlcyBpbiBjYXRlZ29yeSBwYWdlcy4gQWRkZWQgXCZxdW90Oy9cJnF1b3Q7IHBhZ2VfYWxpYXMgZm9yIGZlYXR1cmUgbGlzdHMuPC9saT4NCjxsaT5WZXJzaW9uIDAuNC4xIC0gMjMgTWF5IDIwMDYuIEJ1ZyBmaXggdG8gbWFrZSB3b3JrIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgQ01TIE1TLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjQgLSAyMiBNYXkgMjAwNi4gQnVnIGZpeGVzLCBGZWF0dXJlIExpc3RzLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjMgLSAodW5yZWxlYXNlZCwgcHVibGlzaGVkIGZyb20gc3ZuKTwvbGk+DQo8bGk+VmVyc2lvbiAwLjIgLSAyMyBNYXJjaCAyMDA2LiBOdW1lcm91cyBidWcgZml4ZXMuIFBlcmZvcm1hbmNlIGltcHJvdmVtZW50cy4gTWVtb3J5IGZvb3RwcmludCBvcHRpbWl6YXRpb25zLiBOb3cgdXNlcyB0aGUgQ01TIDAuMTIgTW9kdWxlIEFQSS48L2xpPg0KPGxpPlZlcnNpb24gMC4xLjUgLSAxNyBOb3ZlbWJlciAyMDA1LiBJbml0aWFsIFJlbGVhc2UuIEplc3VzLCB0aGF0IHRvb2sgYSBsb25nIHRpbWUuPC9saT4NCjxsaT5WZXJzaW9uIDAuMSAtIDE5IE1hcmNoIDIwMDUuIFByb2plY3QgSW5pdGlhdGlvbi48L2xpPg0KPC91bD4nOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdVcGV3bmlqIHNpxJkgxbxlIHpvc3RhxYJ5IHVzdGF3aW9uZSBwcmF3YSBcJnF1b3Q7TW9kaWZ5IENhdGFsb2cgU2V0dGluZ3NcJnF1b3Q7IGRsYSB1xbx5dGtvd25payZvYWN1dGU7dywga3Qmb2FjdXRlO3J6eSBixJlkxIUgYWRtaW5pc3Ryb3dhxIcga2F0YWxvZ2llbS4nOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4yMzU5MTQ1NDk3ODc4Njc2NTAwLjEyMTMyMDAyNzguMTIxOTY2NjMxMC4xMjE5NzU3Mjc4Ljk4JzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTIxOTI2NjE3MC45My4xOC51dG1jY249KHJlZmVycmFsKXx1dG1jc3I9ZGV2LmNtc21hZGVzaW1wbGUub3JnfHV0bWNjdD0vc29mdHdhcmVtYXAvdHJvdmVfbGlzdC5waHB8dXRtY21kPXJlZmVycmFsJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/pt_PT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ25hbWVpbWFnZXMnXSA9ICdJbWFnZW5zJzsKJGxhbmdbJ25hbWVmaWxlcyddID0gJ0ZpY2hlaXJvcyc7CiRsYW5nWyduYW1lZmlsZSddID0gJ0ZpY2hlaXJvJzsKJGxhbmdbJ2RlbGV0ZWltYWdlJ10gPSAnRWxpbWluYXIgSW1hZ2VtJzsKJGxhbmdbJ2RlbGV0ZWZpbGUnXSA9ICdBcGFnYXIgRmljaGVpcm8nOwokbGFuZ1snT3duZXInXSA9ICdQcm9wcmlldCZhYWN1dGU7cmlvJzsKJGxhbmdbJ0NhdGFsb2dJdGVtJ10gPSAnQ2F0JmFhY3V0ZTtsb2dvIEl0ZW0gJzsKJGxhbmdbJ25hbWVwYWdlJ10gPSAnUCZhYWN1dGU7Z2luYSc7CiRsYW5nWydQZXJtaXNzaW9ucyddID0gJ1Blcm1pc3Mmb3RpbGRlO2VzJzsKJGxhbmdbJ1N1YiddID0gJ1N1YiAtICc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfaXRlbV9zb3J0X29yZGVyMiddID0gJ09yZGVuYSZjY2VkaWw7JmF0aWxkZTtvIGRvIEl0ZW0nOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2l0ZW1zX3Blcl9wYWdlMiddID0gJ0l0ZW1zIHBvciBQJmFhY3V0ZTtnaW5hJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9jYXRlZ29yeV9yZWN1cnNlMiddID0gJ01vc3RyYXIgQ29tcG9ydGFtZW50byc7CiRsYW5nWyd3aGljaF9hdHRyaWJ1dGVzJ10gPSAnQXRyaWJ1dG9zIHF1ZSBkZXZlbSBzZXIgbW9zdHJhZG9zIG5vIGNhdCZhYWN1dGU7bG9nbyc7CiRsYW5nWyduYXZUYWInXSA9ICcgIHwgICc7CiRsYW5nWyduZWVkcGVybWlzc2lvbiddID0gJ05lY2Vzc2l0YSAlcyBjb25maWd1cmFkbyBwYXJhIHRlciBwZXJtaXNzJmF0aWxkZTtvJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0NhdCZhYWN1dGU7bG9nbyc7CiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnR2VyaXIgQ29uZmlndXJhJmNjZWRpbDsmb3RpbGRlO2VzIGRvIENhdCZhYWN1dGU7bG9nbyc7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnVGVtIGEgQ2VydGV6YSBxdWUgUHJldGVuZGUgRWxpbWluYXIgJXM/JzsKJGxhbmdbJ3VuaXF1ZWNvZGUnXSA9ICdDJm9hY3V0ZTtkaWdvICZVYWN1dGU7bmljbyc7CiRsYW5nWyd0ZW1wbGF0ZWxpc3QnXSA9ICdTdWIgLSB0ZW1wbGF0ZXMnOwokbGFuZ1snbGlzdHRlbXBsJ10gPSAnR2VyaXIgU3ViLXRlbXBsYXRlcyc7CiRsYW5nWyd0aXRsZV9maWVsZF90eXBlJ10gPSAnVGlwbyBkZSBDYW1wbyc7CiRsYW5nWyd0aXRsZV9zZWxlY3RfdmFsdWVzJ10gPSAnVmFsb3InOwokbGFuZ1sndGl0bGVfaXRlbV90YWInXSA9ICdBdHJpYnV0b3MgZG8gSXRlbSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV90YWInXSA9ICdBdHJpYnV0b3MgZGEgQ2F0ZWdvcmlhJzsKJGxhbmdbJ3RpdGxlX3ByaW50YWJsZV90YWInXSA9ICdBdHJpYnV0b3MgZGUgSW1wcmVzcyZhdGlsZGU7byBkbyBDYXQmYWFjdXRlO2xvZ28nOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV90YWInXSA9ICdJdGVtIFRhbWFuaG8gZGUgSW1hZ2Vucyc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9pbWFnZV90YWInXSA9ICdDb25maWd1cmEmY2NlZGlsOyZvdGlsZGU7ZXMgcGFyYSBhIENhdGVnb3JpYSc7CiRsYW5nWyd0aXRsZV9wYXRoX3RhYiddID0gJ1BhdGhzXERpcmVjdCZvYWN1dGU7cmlvcyc7CiRsYW5nWyd0aXRsZV9kZWxldGUnXSA9ICdFbGltaW5hcj8nOwokbGFuZ1sndGl0bGVfZmlsZV90YWInXSA9ICdDb25maWd1cmEmY2NlZGlsOyZvdGlsZGU7ZXMgZG8gRmljaGVpcm8gZG8gSXRlbSc7CiRsYW5nWyd0aXRsZV9pbWFnZV90YWInXSA9ICdPdXRyYXMgQ29uZmlndXJhJmNjZWRpbDsmb3RpbGRlO2VzIGRhcyBJbWFnZW5zJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fdGVtcGxhdGVfdmFycyddID0gJ1ZhcmkmYWFjdXRlO3ZlaXMgZG8gVGVtcGxhdGUgZG8gSXRlbSc7CiRsYW5nWyd0aXRsZV9jYXRfdGVtcGxhdGVfdmFycyddID0gJ1ZhcmkmYWFjdXRlO3ZlaXMgZG8gVGVtcGxhdGUgZGEgQ2F0ZWdvcmlhJzsKJGxhbmdbJ3RpdGxlX2NhdGFsb2dfdGVtcGxhdGVfdmFycyddID0gJ1ZhcmkmYWFjdXRlO3ZlaXMgZG8gVGVtcGxhdGUgZG8gQ2F0JmFhY3V0ZTtsb2dvJzsKJGxhbmdbJ3RpdGxlX2NvbXBhcmVfdGVtcGxhdGVfdmFycyddID0gJ1ZhcmkmYWFjdXRlO3ZlaXMgZG8gVGVtcGxhdGUgZGUgQ29tcGFyYSZjY2VkaWw7JmF0aWxkZTtvJzsKJGxhbmdbJ3RpdGxlX2ZlYXR1cmVfdGVtcGxhdGVfdmFycyddID0gJ0NhcmFjdGVyJmlhY3V0ZTtzdGljYXMgIGRhcyB2YXJpJmFhY3V0ZTt2ZWlzIGRvIFRlbXBsYXRlJzsKJGxhbmdbJ3RpdGxlX3Nob3dfb25seV9leGlzdGluZ19pbWFnZXMnXSA9ICdOJmF0aWxkZTtvIGluY2x1aXIgaW1hZ2VucyBlbSBmYWx0YSc7CiRsYW5nWyd0aXRsZV9zaG93X29ubHlfZXhpc3RpbmdfaW1hZ2VzX2hlbHAnXSA9ICdJc3NvIHMmb2FjdXRlOyBpciZhYWN1dGU7IGNvbG9jYXIgcmVmZXImZWNpcmM7bmNpYXMgbmEgaW1hZ2VtIGVtIGxpc3Rhcywgc2UgYSBpbWFnZW0gZXhpc3Rpci4NCg0KKE5vcm1hbG1lbnRlLCBpc3NvICZlYWN1dGU7ICZvYWN1dGU7cHRpbW8sIG1hcyBzZSB2b2MmZWNpcmM7IGVzdCZhYWN1dGU7IGEgZmF6ZXIgYWxnbyBpbnRlbGlnZW50ZSBjb20gYSBpbWFnZW0NCg0KQXJyYXkgJmlhY3V0ZTtuZGljZXMsIGlzc28gcG9kZXJpYSBjYXVzYXIgcHJvYmxlbWFzLiknOwokbGFuZ1sndGl0bGVfZmx1c2hfY2F0cyddID0gJ0ZsdXNoIGNhdGVnb3J5IHBhZ2UgYnVmZmVycyc7CiRsYW5nWyd0aXRsZV9mbHVzaF9jYXRzX2hlbHAnXSA9ICdTZSB0ZW0gdW0gZ3JhbmRlIG4mdWFjdXRlO21lcm8gZGUgaXRlbnMNCmVtIHVtYSBjYXRlZ29yaWEsIGFsZ3VtYXMgaW5zdGFsYSZjY2VkaWw7Jm90aWxkZTtlcyBkbyBQSFAgbiZhdGlsZGU7byB2JmF0aWxkZTtvIGRlaXhhciBleGliaXIgYSBwJmFhY3V0ZTtnaW5hIGNvcnJlY3RhbWVudGUuIA0KTWFycXVlIGVzc2EgY2FpeGEgcGFyYSByZXNvbHZlciBlc3RlIHByb2JsZW1hICh0ZXN0ZSBkZSBlZmVpdG9zIHNlY3VuZCZhYWN1dGU7cmlvcykuJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fZmlsZV90eXBlcyddID0gJ1RpcG9zIGRlIGZpY2hlaXJvcyBwZXJtaXRpZG9zJzsKJGxhbmdbJ3RpdGxlX2ltYWdlX3VwbG9hZF9wYXRoJ10gPSAnTG9jYWxpemEmY2NlZGlsOyZhdGlsZGU7byBkYXMgaW1hZ2VucyBjYXJyZWdhZGFzJzsKJGxhbmdbJ3RpdGxlX2ZpbGVfdXBsb2FkX3BhdGgnXSA9ICdMb2NhbGl6YSZjY2VkaWw7JmF0aWxkZTtvIGRlIG91dHJvcyBmaWNoZWlyb3MgY2FycmVnYWRvcyBkbyBpdGVtJzsKJGxhbmdbJ3RpdGxlX2ltYWdlX3Byb2NfcGF0aCddID0gJ0xvY2FsaXphJmNjZWRpbDsmYXRpbGRlO28gZGFzIGltYWdlbnMgcHJvY2Vzc2FkYXMgKHRodW1ibmFpbHMsIHNjYWxlZCBpbWFnZXMsIGV0YyknOwokbGFuZ1sncGF0aF9oZWxwJ10gPSAnWW91IGNhbiBzcGVjaWZ5IHdoZXJlIENhdGFsb2dlciBzdG9yZXMgZmlsZXMuIFRoZXNlIHBhdGhzIGFyZSByZWxhdGl2ZSB0byB0aGUgPGk+dXBsb2Fkc19wYXRoPC9pPiBkZWZpbmVkIGluIHlvdXIgY29uZmlnLnBocDxiciAvPk5PVEU6IElmIHlvdSBjaGFuZ2UgdGhlc2UgcGF0aHMgYWZ0ZXIgZmlsZXMgb3IgaW1hZ2VzIGhhdmUgYmVlbiB1cGxvYWRlZCwgQ2F0YWxvZ2VyIHdpbGwgbG9zZSB0aGUgYWxyZWFkeS11cGxvYWRlZCBhc3NldHMgKHRoZXkgd2lsbCBzdGlsbCBiZSB0aGVyZSwgYnV0IENhdGFsb2dlciB3aWxsIG5vdCBrbm93IGFib3V0IHRoZW0sIHNvIHlvdSB3aWxsIG5lZWQgdG8gcmUtdXBsb2FkIHRoZW0gZm9yIENhdGFsb2dlciB0byBmaWd1cmUgaXQgb3V0KS4nOwokbGFuZ1snY2F0YWxvZ2VyJ10gPSAnQ2F0JmFhY3V0ZTtsb2dvJzsKJGxhbmdbJ3RpdGxlX2F0dHJfb3JkZXJfYnknXSA9ICdPcmRlbSc7CiRsYW5nWyd0aXRsZV9hdHRyX2FsaWFzJ10gPSAnQWxpYXMgZG8gQXRyaWJ1dG8gKFNtYXJ0eSBGcmllbmRseSknOwokbGFuZ1sndGl0bGVfYXR0cl9sZW5ndGgnXSA9ICdDb21wcmltZW50byonOwokbGFuZ1sndGl0bGVfYXR0cl9kZWZhdWx0J10gPSAnVmFsb3IgcG9yIERlZmVpdG8nOwokbGFuZ1sndGl0bGVfYXR0cl9sZW5ndGhfaGVscCddID0gJypMZW5ndGggb25seSBhcHBsaWVzIHRvICZxdW90O1RleHQmcXVvdDs8YnIgLz5WYWx1ZSBpcyBhIGNvbW1hLWRlbGltaXRlZCBsaXN0IG9mIG9wdGlvbnMgZm9yIERyb3Bkb3duczxiciAvPlZhbHVlIHNob3VsZCBjb250YWluIHRoZSBjaGVja2VkIHZhbHVlLCBhIGNvbW1hLCBhbmQgdGhlIHVuY2hlY2tlZCB2YWx1ZSBmb3IgY2hlY2tib3gnOwokbGFuZ1sndGV4dCddID0gJ1RleHRvJzsKJGxhbmdbJ2Ryb3Bkb3duJ10gPSAnRHJvcGRvd24nOwokbGFuZ1sndGV4dGFyZWEnXSA9ICcmQWFjdXRlO3JlYSBkZSBUZXh0byc7CiRsYW5nWydjaGVja2JveCddID0gJ0NoZWNrYm94JzsKJGxhbmdbJ2l0ZW1fcGFnZSddID0gJ1AmYWFjdXRlO2dpbmEgZG8gSXRlbSc7CiRsYW5nWydjYXRlZ29yeV9wYWdlJ10gPSAnUCZhYWN1dGU7Z2luYSBkYSBDYXRlZ29yaWEgJzsKJGxhbmdbJ2NhdGFsb2dfcHJpbnRhYmxlJ10gPSAnQ2F0JmFhY3V0ZTtsb2dvIEltcHJpbSZpYWN1dGU7dmVsJzsKJGxhbmdbJ2NhdGFsb2dfZGF0YXNoZWV0J10gPSAnQ2F0JmFhY3V0ZTtsb2dvIERhdGFzaGVldCc7CiRsYW5nWydjYXRhbG9nX3Nob3J0X2xpc3QnXSA9ICdMaXN0YSBkZSBSZWN1cnNvcyc7CiRsYW5nWydpdGVtX2NvbXBhcmlzb24nXSA9ICdDb21wYXJhJmNjZWRpbDsmYXRpbGRlO28gZGUgSXRlbnMnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2l0ZW1fc29ydF9vcmRlciddID0gJ0RlZmluaXIgb3JkZW5hJmNjZWRpbDsmYXRpbGRlO28gZG8gaXRlbSBwYXJhJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtc19wZXJfcGFnZSddID0gJ0RlZmluaXIgbiZ1YWN1dGU7bWVybyBkZSBpdGVtcyBwb3IgcCZhYWN1dGU7Z2luYSBwYXJhJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9jYXRlZ29yeV9yZWN1cnNlJ10gPSAnRGVmaW5pciBvIGNvbXBvcnRhbWVudG8gcGFyYSBleGliaXIgbmEgY2F0ZWdvcmlhICBwYXJhJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fc29ydF9vcmRlciddID0gJ09yZGVuYSZjY2VkaWw7JmF0aWxkZTtvIGRvIGl0ZW0gcG9yIGRlZmVpdG8nOwokbGFuZ1sndGl0bGVfcHJpbnRhYmxlX3NvcnRfb3JkZXInXSA9ICdPcmRlbmEmY2NlZGlsOyZhdGlsZGU7byBkbyBDYXQmYWFjdXRlO2xvZ28gSW1wcmltJmlhY3V0ZTt2ZWwgcG9yIGRlZmVpdG8nOwokbGFuZ1sndGl0bGVfaXRlbXNfcGVyX3BhZ2UnXSA9ICdPcmRlbmEmY2NlZGlsOyZhdGlsZGU7byBwb3IgZGVmZWl0byBkbyBuJnVhY3V0ZTttZXJvIGRlIGl0ZW1zIHBvciBwJmFhY3V0ZTtnaW5hJzsKJGxhbmdbJ3RpdGxlX2F2YWlsX2F0dHJzJ10gPSAnSXRlbSBhdHJpYnV0b3MgZGlzcG9uJmlhY3V0ZTt2ZWlzIHBhcmEgbyB0ZW1wbGF0ZSc7CiRsYW5nWyd0aXRsZV9hdmFpbF9pbWF0dHJzJ10gPSAnSXRlbSBpbWFnZW5zIGRpc3BvbiZpYWN1dGU7dmVpcyBwYXJhIG8gdGVtcGxhdGUnOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX2hlcm8nXSA9ICdUYW1hbmhvIGRhIGltYWdlbSBwYXJhIG8gaXRlbSBuYSBwJmFhY3V0ZTtnaW5hIChMb25nbyBlaXhvIGVtIHBpeGVscyknOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX3RodW1ibmFpbCddID0gJ1RhbWFuaG8gZGFzIE1pbmlhdHVyYXMgcGFyYSBvIGl0ZW0gbmEgIHAmYWFjdXRlO2dpbmEgKExvbmdvIGVpeG8gZW0gcGl4ZWxzKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfY2F0ZWdvcnknXSA9ICdUYW1hbmhvIGRhcyBNaW5pYXR1cmFzIHBhcmEgbyBpdGVtIGRhIGNhdGVnb3JpYSBuYSAgcCZhYWN1dGU7Z2luYSAoTG9uZ28gZWl4byBlbSBwaXhlbHMpJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV9jYXRhbG9nJ10gPSAnVGFtYW5obyBkYXMgTWluaWF0dXJhcyBwYXJhIG8gaXRlbSBubyBDYXQmYWFjdXRlO2xvZ28gbmEgcCZhYWN1dGU7Z2luYSAoTG9uZ28gZWl4byBlbSBwaXhlbHMpJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX3NpemVfaGVybyddID0gJ1RhbWFuaG8gZGEgaW1hZ2VtIHBhcmEgcGFyYSBhIENhdGVnb3JpYSBuYSAgcCZhYWN1dGU7Z2luYSAoTG9uZ28gZWl4byBlbSBwaXhlbHMpJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX3NpemVfdGh1bWJuYWlsJ10gPSAnVGFtYW5obyBkYXMgTWluaWF0dXJhcyBwYXJhIGEgQ2F0ZWdvcmlhIG5hICBwJmFhY3V0ZTtnaW5hIChMb25nbyBlaXhvIGVtIHBpeGVscyknOwokbGFuZ1sndGl0bGVfdGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSAnOwokbGFuZ1sndGl0bGVfdGVtcGxhdGVfdHlwZSddID0gJ1RpcG8gZGUgVGVtcGxhdGUnOwokbGFuZ1sndGl0bGVfdGl0bGUnXSA9ICdUaXR1bG8nOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9jb3VudCddID0gJ04mdWFjdXRlO21lcm8gbSZhYWN1dGU7eGltbyBkZSBpbWFnZW5zIHBvciBjYWRhIGl0ZW0nOwokbGFuZ1sndGl0bGVfaXRlbV9maWxlX2NvdW50J10gPSAnTWF4aW11bSBudW1iZXIgb2Ygb3RoZXIgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggaXRlbSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9pbWFnZV9jb3VudCddID0gJ04mdWFjdXRlO21lcm8gbSZhYWN1dGU7eGltbyBkZSBpbWFnZW5zIEJhbm5lciBwYXJhIGNhZGEgY2F0ZWdvcmlhJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fYXR0cmlidXRlc19oZWxwJ10gPSAnQ2FkYSBhdHJpYnV0byBxdWUgYWRpY2lvbmFyIG5lc3RhICZhYWN1dGU7cmVhLCBzZXImYWFjdXRlOyBvIHQmaWFjdXRlO3R1bG8gZGUgdW0gY2FtcG8sIHF1ZSwgcG9kZSB1c2FyIHBhcmEgZGVzY3JldmVyIHVtIGRldGVybWluYWRvIGl0ZW0sIGUgc2VyJmFhY3V0ZTsgZXhpYmlkbyBjb20gZXNzZSBpdGVtLiBQb2RlIHRlciBxdWUgYWN0dWFsaXphciBvIHNldSB0ZW1wbGF0ZSBwYXJhIHJlZmxlY3RpciBlc3RlcyBhdHJpYnV0b3MuIEVtIGJyYW5jbywgb3UgcG9yIGNpbWEgZGUgdW0gdGlwbyBkZSBhdHJpYnV0byBleGlzdGVudGUgcGFyYSByZW1vdmVyIG91IHN1YnN0aXR1aXIuJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2F0dHJpYnV0ZXNfaGVscCddID0gJ0NhZGEgYXRyaWJ1dG8gcXVlIGFkaWNpb25hciBuZXN0YSAmYWFjdXRlO3JlYSwgc2VyJmFhY3V0ZTsgbyB0JmlhY3V0ZTt0dWxvIGRlIHVtIGNhbXBvLCBxdWUsIHBvZGUgdXNhciBwYXJhIGRlc2NyZXZlciB1bSBkZXRlcm1pbmFkbyBpdGVtLCBlIHNlciZhYWN1dGU7IGV4aWJpZG8gY29tIGVzc2UgaXRlbS4gUG9kZSB0ZXIgcXVlIGFjdHVhbGl6YXIgbyBzZXUgdGVtcGxhdGUgcGFyYSByZWZsZWN0aXIgZXN0ZXMgYXRyaWJ1dG9zLiBFbSBicmFuY28sIG91IHBvciBjaW1hIGRlIHVtIHRpcG8gZGUgYXRyaWJ1dG8gZXhpc3RlbnRlIHBhcmEgcmVtb3ZlciBvdSBzdWJzdGl0dWlyLic7CiRsYW5nWyd0aXRsZV9jYXRhbG9nX2F0dHJpYnV0ZXNfaGVscCddID0gJ0NhZGEgYXRyaWJ1dG8gcXVlIGFkaWNpb25hciBuZXN0YSAmYWFjdXRlO3JlYSwgc2VyJmFhY3V0ZTsgbyB0JmlhY3V0ZTt0dWxvIGRlIHVtIGNhbXBvLCBxdWUsIHBvZGUgdXNhciBwYXJhIGRlc2NyZXZlciB1bSBkZXRlcm1pbmFkbyBpdGVtLCBlIHNlciZhYWN1dGU7IGV4aWJpZG8gY29tIGVzc2UgaXRlbS4gUG9kZSB0ZXIgcXVlIGFjdHVhbGl6YXIgbyBzZXUgdGVtcGxhdGUgcGFyYSByZWZsZWN0aXIgZXN0ZXMgYXRyaWJ1dG9zLiBFbSBicmFuY28sIG91IHBvciBjaW1hIGRlIHVtIHRpcG8gZGUgYXRyaWJ1dG8gZXhpc3RlbnRlIHBhcmEgcmVtb3ZlciBvdSBzdWJzdGl0dWlyLic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9zb3J0J10gPSAnT3JkZW5hJmNjZWRpbDsmYXRpbGRlO28gZGEgbGlzdGEgZGUgaXRlbXMgbmEgcCZhYWN1dGU7Z2luYSBkYSBDYXRlZ29yaWEnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZSddID0gJ0V4aWJpciBjb21wb3J0YW1lbnRvIGRhIGNhdGVnb3JpYSBwb3IgZGVmZWl0byc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2l0ZW1zX2FsbCddID0gJ0luY2x1aXIgdG9kb3Mgb3MgaXRlbnMgZGVudHJvIGRlc3RhIGNhdGVnb3JpYSwgaW5jbHVpbmRvIGl0ZW5zIGVtIHN1Yi1jYXRlZ29yaWFzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfaXRlbXNfb25lJ10gPSAnSW5jbHVpciB0b2RvcyBvcyBpdGVucyBpbWVkaWF0YW1lbnRlIGRlbnRybyBkZXN0YSBjYXRlZ29yaWEsIG1hcyBuJmF0aWxkZTtvIG9zIGl0ZW5zIGVtIHN1Yi1jYXRlZ29yaWFzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfY2F0ZWdvcmllc19hbGwnXSA9ICdJbmNsdWlyIHRvZG9zIENhdGVnb3JpYXMgZGVudHJvIGRlc3RhIGNhdGVnb3JpYSwgaW5jbHVpbmRvIGFzIGNhdGVnb3JpYXMgZGUgc3ViLWNhdGVnb3JpYXMmIzAzOTsnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9jYXRlZ29yaWVzX29uZSddID0gJ0luY2x1aXIgdG9kb3MgQ2F0ZWdvcmlhcyBpbWVkaWF0YW1lbnRlIGRlbnRybyBkZXN0YSBjYXRlZ29yaWEsIG1hcyBuJmF0aWxkZTtvIG5hcyBjYXRlZ29yaWFzIHN1Yi1jYXRlZ29yaWFzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfbWl4ZWRfYWxsJ10gPSAnSW5jbHVpciB0b2RvcyBvcyBpdGVucyBlIGNhdGVnb3JpYXMgZGVudHJvIGRlc3RhIGNhdGVnb3JpYSwgaW5jbHVpbmRvIGl0ZW5zIGUgY2F0ZWdvcmlhcyBkZSBzdWItY2F0ZWdvcmlhcyc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX21peGVkX29uZSddID0gJ0luY2x1aXIgdG9kb3Mgb3MgaXRlbnMgZSBjYXRlZ29yaWFzIGltZWRpYXRhbWVudGUgZGVudHJvIGRlc3RhIGNhdGVnb3JpYSwgbWFzIG4mYXRpbGRlO28gaXRlbnMgb3UgY2F0ZWdvcmlhcyBkZSBzdWItY2F0ZWdvcmlhcyc7CiRsYW5nWyd0aXRsZV9zaG93X21pc3NpbmdfaW1hZ2VzJ10gPSAnTW9zdHJhciAmcXVvdDtTZW0gSW1hZ2VtJnF1b3Q7IHBhcmEgaW1hZ2VucyBlbSBmYWx0YSc7CiRsYW5nWyd0aXRsZV9zaG93X21pc3NpbmdfaW1hZ2VzX2xvbmcnXSA9ICdNb3N0cmFyIHVtYSBlc3BlY2lhbCAmcXVvdDtTZW0gSW1hZ2VtJnF1b3Q7IHNlIGV4aXN0aXIgdW1hIGltYWdlbSBlbSBmYWx0YSAoJnVhY3V0ZTt0aWwgcGFyYSBkZWJ1Z2dpbmcuIE91IGluc2lyYSB1bSAuZ2lmIHRyYW5zcGFyZW50ZSApLic7CiRsYW5nWyduYXR1cmFsX29yZGVyJ10gPSAnT3JkZW0gcG9yIE5hdmVnYSZjY2VkaWw7JmF0aWxkZTtvJzsKJGxhbmdbJ2FscGhhX29yZGVyJ10gPSAnT3JkZW0gQWxmYWImZWFjdXRlO3RpY2EnOwokbGFuZ1snbWFuYWdlcHJlZnMnXSA9ICdHZXJpciBQcmVmZXImZWNpcmM7bmNpYXMnOwokbGFuZ1snbWFuYWdlYXR0cnMnXSA9ICdHZXJpciBhdHJpYnV0b3MgcGVyc29uYWxpemFkb3MnOwokbGFuZ1snZ2xvYmFsb3BzJ10gPSAnT3BlcmEmY2NlZGlsOyZvdGlsZGU7ZXMgR2xvYmFpcyBkbyBDYXQmYWFjdXRlO2xvZ28nOwokbGFuZ1snYWRkdGVtcGxhdGUnXSA9ICdBZGljaW9uYXIgbm92byBTdWItdGVtcGxhdGUnOwokbGFuZ1sncmVpbXBvcnR0ZW1wbGF0ZXMnXSA9ICdSZS1pbXBvcnRhciBleGVtcGxvIHN1Yi10ZW1wbGF0ZXMnOwokbGFuZ1sncmVpbXBvcnRlZCddID0gJ0V4ZW1wbG8gZG8gc3ViLXRlbXBsYXRlIGZvaSBpbXBvcnRhZG8uJzsKJGxhbmdbJ3RlbXBsYXRldXBkYXRlZCddID0gJ1RlbXBsYXRlIGFkaWNpb25hZG8vYWN0dWFsaXphZG8uJzsKJGxhbmdbJ3RlbXBsYXRlZGVsZXRlZCddID0gJ1RlbXBsYXRlIGVsaW1pbmFkby4nOwokbGFuZ1sncHJlZnN1cGRhdGVkJ10gPSAnUHJlZmVyJmVjaXJjO25jaWFzIGFjdHVhbGl6YWRhcy4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnVmVycyZhdGlsZGU7byBkbyBNb2R1bG8gJXMgaW5zdGFsYWRvLic7CiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHVsbyBhY3R1YWxpemFkbyBwYXJhIHZlcnMmYXRpbGRlO28gJXMuJzsKJGxhbmdbJ2JhZGZpbGUnXSA9ICdGaWxlICZxdW90OyVzJnF1b3Q7IGlzIG5vdCBhbiBhY2NlcHRhYmxlIGZvcm1hdC4nOwokbGFuZ1snYmFkaW1hZ2UnXSA9ICdQcm9ibGVtIHVwbG9hZGluZyAmcXVvdDslcyZxdW90OyAoY2hlY2sgZmlsZSBzaXplIGFuZC9vciBzZXJ2ZXIgcGVybWlzc2lvbnMpLic7CiRsYW5nWydiYWRpbWFnZWZvcm1hdCddID0gJyZxdW90OyVzJnF1b3Q7IGlzIG5vdCB2YWxpZC4gT25seSBqcGVncyBhcmUgc3VwcG9ydGVkIGZvciB0aGUgdGltZSBiZWluZy4nOwokbGFuZ1sndXBsb2FkZWQnXSA9ICdGaWxlICZxdW90OyVzJnF1b3Q7IHVwbG9hZGVkIGZvciBpdGVtICVzLic7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsbyBkZXNpbnN0YWxhZG8uJzsKJGxhbmdbJ2F0dHJzdXBkYXRlZCddID0gJ0F0cmlidXRvcyBhY3R1YWxpemFkb3MuJzsKJGxhbmdbJ25vZ2xvYmFsY2hhbmdlJ10gPSAnTiZhdGlsZGU7byBhbHRlcmFyJzsKJGxhbmdbJ2dsb2JhbGx5dXBkYXRlZCddID0gJ011ZGFuJmNjZWRpbDthcyBwcm9wYWdhZGFzIGdsb2JhbG1lbnRlLic7CiRsYW5nWydlZGl0dGVtcGxhdGUnXSA9ICdFZGl0YXIgVGVtcGxhdGUnOwokbGFuZ1snc3VidGVtcGxhdGVzJ10gPSAnQ2F0JmFhY3V0ZTtsb2dvIFN1Yi10ZW1wbGF0ZXMnOwokbGFuZ1snbmV4dCddID0gJzomcmFxdW87JzsKJGxhbmdbJ3ByZXYnXSA9ICcmbGFxdW87Oic7CiRsYW5nWydlZGl0J10gPSAnRWRpdGFyJzsKJGxhbmdbJ2RlbGV0ZSddID0gJ0VsaW1pbmFyJzsKJGxhbmdbJ25vdGVtcGxhdGVzJ10gPSAnU2VtIFN1Yi10ZW1wbGF0ZXMgaW5zdGFsYWRvcyc7CiRsYW5nWydoZWxwdGV4dCddID0gJzxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPg0KPHA+VGhpcyBtb2R1bGUgbGV0cyB5b3UgY3JlYXRlIG9ubGluZSBjYXRhbG9ncyBvciBwb3J0Zm9saW9zLiBDYXRhbG9ncyBjb25zaXN0IG9mICZxdW90O0NhdGFsb2cgSXRlbXMmcXVvdDsgd2hpY2ggY291bGQgYmUgcHJvZHVjdHMsIHdvcmtzIG9mIGFydCwgb3IgdGhlIGxpa2UsIGFuZCAmcXVvdDtDYXRhbG9nIENhdGVnb3JpZXMmcXVvdDsgd2hpY2ggY291bGQgYmUgaXRlbSBjYXRlZ29yaWVzIG9yIG90aGVyIG5hdHVyYWwgZGl2aXNpb25zIG9mIHRoZSBjYXRhbG9nLjwvcD4NCjxwPkNhdGVnb3JpZXMgbWF5IGJlIGRlZmluZWQgaGllcmFyY2hpY2FsbHkgKHVzaW5nIHRoZSBzdGFuZGFyZCBDTVMgTWFkZSBTaW1wbGUgY29udGVudCBsaXN0KS4gQ2F0ZWdvcnkgcGFnZXMgY2FuIGRpc3BsYXkgaXRlbXMgaW4gdGhlIGNhdGVnb3J5IGFuZC9vciBzdWJjYXRlZ29yaWVzLCBvcHRpb25hbGx5IHJlY3Vyc2luZyB0aHJvdWdoIHN1Yi1jYXRlZ29yaWVzLiBUaGlzIGJlaGF2aW9yIGNhbiBiZSBjb25maWd1cmVkIG9uIGEgcGVyLWNhdGVnb3J5IGJhc2lzLjwvUD4NCjxwPlRoZXJlIGlzIGFsc28gYSBQcmludGFibGUgQ2F0YWxvZywgd2hpY2ggcmVwcmVzZW50cyB0aGUgd2hvbGUgY29sbGVjdGlvbiBvZiBDYXRhbG9nIEl0ZW1zIG9uIGEgc2luZ2xlIHBhZ2UgKHRoaXMgaXMgY3VycmVudGx5IGltcGxlbWVudGVkIGJhZGx5LCBhbmQgd2lsbCBsb2FkIHNsb3dseSkuPC9wPg0KPHA+VGhlIG1vZHVsZSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgJnF1b3Q7Q29udGVudCBBbGlhc2VzJnF1b3Q7IChhIG1vZHVsZSBhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jb250ZW50YWxpYXNlcy8iPnRoZSBEZXZlbG9wZXIgRm9yZ2U8L2E+KSwgd2hpY2ggYWxsb3dzIHlvdSB0byBwbGFjZSBhbnkgQ2F0YWxvZyBJdGVtIGludG8gbXVsdGlwbGUgQ2F0YWxvZyBDYXRlZ29yaWVzLjwvcD4NCjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPg0KPHA+V2hlbiB5b3UgaW5zdGFsbCB0aGlzIG1vZHVsZSwgaXQgY3JlYXRlcyB0aHJlZSBuZXcgQ29udGVudCBUeXBlczogQ2F0YWxvZyBJdGVtLCBDYXRhbG9nIENhdGVnb3J5LCBhbmQgUHJpbnRhYmxlIENhdGFsb2cuIFdoZW4geW91JiMwMzk7cmUgaW4geW91ciBzaXRlIGFkbWluaXN0cmF0aW9uIGNhdGVnb3J5LCB5b3UgYWRkIENhdGFsb2cgSXRlbXMgYW5kIENhdGFsb2cgQ2F0ZWdvcmllcyBqdXN0IGFzIHlvdSB3b3VsZCBhbnkgb3RoZXIga2luZCBvZiBwYWdlLiBTZWxlY3QgQ29udGVudCAmYW1wO2d0OyBQYWdlcyAmYW1wO2d0OyBBZGQgQ29udGVudCwgYW5kIHRoZW4gc2VsZWN0ICZxdW90O0NhdGFsb2cgSXRlbSZxdW90OyBvciAmcXVvdDtDYXRhbG9nIENhdGVnb3J5JnF1b3Q7IGZyb20gdGhlIENvbnRlbnQgVHlwZSBwdWxsZG93bi48L3A+DQo8aDQ+Q2F0YWxvZyBJdGVtczwvaDQ+DQo8cD5BZGRpbmcgYSBDYXRhbG9nIEl0ZW0gaXMgc2ltaWxhciB0byBhZGRpbmcgYW4gb3JkaW5hcnkgcGFnZSB0byB5b3VyIHNpdGUuIFRoZSBkYXRhIGZpZWxkcyBmb3IgdGhlIEl0ZW0gYXJlIG5vdCBleGFjdGx5IHRoZSBzYW1lLCBob3dldmVyLiBBbHNvIG5vdGUgdGhhdCBpbiB0aGUgJnF1b3Q7SW1hZ2VzJnF1b3Q7IHRhYiwgeW91IGNhbiBzZWxlY3QgbXVsdGlwbGUgaW1hZ2VzIHRvIHVwbG9hZCBmb3IgdGhlIGl0ZW0uIFdoZW4geW91IHVwbG9hZCBpbWFnZXMsIHRoZSBzeXN0ZW0gd2lsbCBzaXplIHRoZW0gYXBwcm9wcmlhdGVseSBmb3IgdGhlIGNhdGFsb2csIGNyZWF0ZSB0aHVtYm5haWxzIGZvciB1c2UgaW4gdGhlIEl0ZW0mIzAzOTtzIHBhZ2UsIGNyZWF0ZSB0aHVtYm5haWxzIGZvciBhbnkgQ2F0ZWdvcnkgcGFnZXMsIGFuZCBzbyBvbi4gVGhpcyByZXF1aXJlcyB0aGF0IHlvdSBoYXZlIEdEIG9yIGEgc2ltaWxhciBpbWFnZSBsaWJyYXJ5IGluc3RhbGxlZC4gQ3VycmVudGx5LCBvbmx5IGpwZWcgZm9ybWF0IGltYWdlcyBhcmUgc3VwcG9ydGVkLjwvcD4NCjxoND5DYXRhbG9nIENhdGVnb3JpZXM8L2g0Pg0KPHA+QSBDYXRhbG9nIENhdGVnb3J5IGlzIHVzZWQgZm9yIG9yZ2FuaXppbmcgeW91ciBjYXRhbG9nIGl0ZW1zLiBJdCBwcm92aWRlcyBhIHBhZ2UgdGhhdCBsaXN0cyBDYXRhbG9nZXIgY29udGVudCB0aGF0IGlzIGNvbnRhaW5lZCBieSBpdC4gQSBDYXRhbG9nIEl0ZW0gaXMgY29uc2lkZXJlZCB0byBiZSBwYXJ0IG9mIGEgQ2F0YWxvZyBDYXRlZ29yeSBpZiBpdCBpcyBiZWxvdyB0aGF0IENhdGVnb3J5IGluIHRoZSBTaXRlIEhpZXJhcmNoeS4gQ2F0ZWdvcmllcyBjYW4gc2ltaWxhcmx5IGluY2x1ZGUgb3RoZXIgQ2F0ZWdvcmllcy48L3A+DQo8cD5DYXRhbG9nIENhdGVnb3JpZXMgaGF2ZSBhIG51bWJlciBvZiBzZXR0aW5ncyB0byBkZXRlcm1pbmUgaG93IHRoZXkgc2hvdWxkIGRpc3BsYXkgdGhlIEl0ZW1zIGFuZCBDYXRlZ29yaWVzIHRoZXkgY29udGFpbjogaWYgeW91IGxvb2sgYXQgdGhlICZxdW90O09wdGlvbnMmcXVvdDsgdGFiLCB5b3UgY2FuIGNob29zZSBob3cgbWFueSBpdGVtcyBhbmQvb3IgY2F0ZWdvcmllcyB0byBzaG93LCB3aGF0IG9yZGVyIHRvIHNob3cgdGhlbSBpbiwgd2hldGhlciB0byBkaXNwbGF5IG9ubHkgaXRlbXMgb3Igb25seSBjYXRlZ29yaWVzIG9yIGJvdGgsIGFuZCBob3cgbWFueSBsZXZlbHMgb2YgdGhlIGhpZXJhcmNoeSB0byBkaXNwbGF5IGJlbG93IHRoZSBjYXRlZ29yeSBwYWdlLjwvcD4NCjxwPkZvciBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTo8L3A+DQo8b2w+DQoJPGxpPjxiPkhhdHM8L2I+DQoJCTxvbD4NCgkJCTxsaT48Yj5GYXNoaW9uPC9iPg0KCQkJIAk8b2w+DQoJCQkgCQk8bGk+RmVhdGhlcmVkIEhhdDwvbGk+PGxpPkZlZG9yYSA8L2xpPjxsaT5CYXNlYmFsbCBIYXQ8L2xpPg0KCQkJIAk8L29sPg0KCQkJIDwvbGk+DQoJCSAJPGxpPjxiPldvcmsgSGF0czwvYj4NCgkJICAgIAk8b2w+DQoJCSAgICAJCTxsaT5IYXJkIEhhdDwvbGk+PGxpPkRpdmluZyBIZWxtZXQ8L2xpPg0KCQkgICAgCTwvb2w+DQoJCSAgICA8L2xpPg0KCQk8L29sPg0KCTwvbGk+DQo8L29sPg0KPHA+SW4gdGhpcyBkaWFncmFtLCBib2xkZWQgaXRlbXMgYXJlIENhdGFsb2cgQ2F0ZWdvcmllcywgYW5kIG5vbi1ib2xkZWQgaXRlbXMgYXJlIENhdGFsb2cgSXRlbXMuIERlcGVuZGluZyB1cG9uIGhvdyB5b3Ugc2V0IHlvdXIgb3B0aW9ucywgdGhlIEhhdHMgQ2F0ZWdvcnkgUGFnZSBjYW4gc2hvdyBvbmx5IGVudHJpZXMgZm9yIHRoZSBGYXNoaW9uIGFuZCBXb3JrIEhhdHMgQ2F0ZWdvcnkgUGFnZXMsIG9yIGl0IGNhbiBzaG93IGVudHJpZXMgZm9yIEZhc2hpb24sIFdvcmsgSGF0cywgYW5kIGFsbCB0aGUgaGF0cyBsaXN0ZWQgYmVsb3cgdGhlbS48L3A+DQo8cD5Zb3UgY2FuIG9wdCB0byBzaG93IHRoZSBpdGVtcyBpbiAmcXVvdDtuYXR1cmFsJnF1b3Q7IG9yZGVyIChpLmUuLCB0aGUgb3JkZXIgdGhlIEl0ZW1zIHNob3cgdXAgaW4gdGhlIENNUyBDb250ZW50IEhpZXJhcmNoeSksIG9yIGluIGFscGhhYmV0aWNhbCBvcmRlci48L1A+DQo8cD5JZiB5b3UgaGF2ZSBsYXJnZSBudW1iZXJzIG9mIGl0ZW1zIGluIGEgQ2F0ZWdvcnksIHlvdSBjYW4gc2V0IHRoZSBtYXhpbXVtIG51bWJlciB0byBiZSBkaXNwbGF5ZWQgaW4gYSBDYXRlZ29yeSBQYWdlLCBhbmQgdGhlIHBhZ2Ugd2lsbCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBsaW5rcyB0byBuYXZpZ2F0ZSB0aHJvdWdoIHRoZSBsaXN0LjwvcD4NCjxwPkVhY2ggQ2F0ZWdvcnkgcGFnZSBjYW4gaGF2ZSBkaWZmZXJlbnQgc2V0dGluZ3MgZm9yIHNvcnQgb3JkZXIsIGxldmVscyB0byBkaXNwbGF5LCBhbmQgbnVtYmVyIG9mIGl0ZW1zLiBZb3UgY2FuIHNldCB0aGUgZGVmYXVsdCBmb3IgdGhlc2UgdmFsdWVzIGluIEV4dGVuc2lvbnMgJmFtcDtndDsgQ2F0YWxvZ2VyICZhbXA7Z3Q7IE1hbmFnZSBQcmVmZXJlbmNlcy4gSWYsIGF0IGEgbGF0ZXIgZGF0ZSwgeW91IHdpc2ggdG8gY2hhbmdlIHNvbWUgc2V0dGluZyBvbiBhbGwgb2YgeW91ciBDYXRlZ29yeSBwYWdlcywgeW91IGNhbiBnbyBpbnRvIEV4dGVuc2lvbnMgJmFtcDtndDsgQ2F0YWxvZ2VyICZhbXA7Z3Q7IEdsb2JhbCBDYXRhbG9nIE9wdGlvbnMsIGFuZCBtYWtlIHRob3NlIGNoYW5nZXMuPC9wPg0KPGg0PkltYWdlczwvaDQ+DQo8cD5DYXRhbG9nZXIgYWxsb3dzIHlvdSB0byBzZWxlY3QgZGlmZmVyZW50IHNpemUgaW1hZ2VzIGZvciBJdGVtIHBhZ2VzLCBDYXRlZ29yeSBwYWdlcywgYW5kIHRoZSBQcmludGFibGUgQ2F0YWxvZy4gWW91IGNhbiBzZXQgdGhlc2UgZGVmYXVsdHMgaW4gRXh0ZW5zaW9ucyAmYW1wO2d0OyBDYXRhbG9nZXIgJmFtcDtndDsgTWFuYWdlIFByZWZlcmVuY2VzLjwvcD4NCjxwPldoZW4geW91IHVwbG9hZCBpbWFnZXMsIHRoZSBvcmlnaW5hbCBpcyBzdG9yZWQuIFdoZW4gc29tZW9uZSB2aXNpdHMgYSBwYWdlLCB0aGUgcmVkdWNlZCBzaXplIGltYWdlcyBhcmUgcmVxdWVzdGVkIHVzaW5nIGEgc3BlY2lhbCBVUkwsIHdoaWNoIHdpbGwgcmVkaXJlY3QgdGhlIHVzZXImIzAzOTtzIGJyb3dzZXIgdG8gdGhlIHNjYWxlZCBpbWFnZSBpZiBpdCBleGlzdHMsIGFuZCBjcmVhdGluZyB0aGUgc2NhbGVkIGltYWdlIGlmIGl0IGRvZXNuJiMwMzk7dC4gVGhpcyBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiBpbWFnZXMsIHdpdGhvdXQgaGF2aW5nIHRvIHJlLXVwbG9hZCBhbGwgdGhlIGltYWdlcywgb3IgcmVzY2FsaW5nIHRoZW0gYWxsIGF0IG9uY2UuPC9wPg0KPHA+VGhpcyBpbWFnZSByZXNjYWxpbmcgY29kZSByZXF1aXJlcyB0aGF0IHlvdSBoYXZlIGVpdGhlciBJbWFnZU1hZ2ljayBvciBHRCBsaWIgaW5zdGFsbGVkLCBhbmQgY29uZmlndXJlZCBpbiB5b3VyIENNUyBNYWRlIFNpbXBsZSBjb25maWcucGhwLjwvcD4NCjxoMz5GZWF0dXJlIExpc3RzPC9oMz4NCjxwPllvdSBjYW4sIGFzIG9mIHZlcnNpb24gMC40LCBoYXZlICZxdW90O2ZlYXR1cmUgbGlzdHMmcXVvdDsgd2hpY2ggYXJlIHRoZSA8aT5uPC9pPiBtb3N0LXJlY2VudGx5IGFkZGVkIGNhdGFsb2cgaXRlbXMsIG9yIGEgY29sbGVjdGlvbiBvZiA8aT5rPC9pPiByYW5kb20gaXRlbXMgZnJvbSB0aGUgY2F0YWxvZy48L3A+DQo8aDQ+JnF1b3Q7QWxsJnF1b3Q7IEZlYXR1cmUgTGlzdDwvaDQ+DQo8cD5UbyBnZXQgYSBsaXN0IG9mIGFsbCBjYXRhbG9nIGl0ZW1zIChvcHRpb25hbGx5IHVuZGVyIGEgc3BlY2lmaWVkIHBhcnQgb2YgeW91ciBoaWVyYXJjaHkpIGZvciBwcm9jZXNzaW5nIHZpYSBhIHRlbXBsYXRlLCB5b3UgY2FuIHVzZQ0KdGhlICZxdW90O2FsbCZxdW90OyBmZWF0dXJlIGxpc3QuPC9wPg0KPHA+VGhlIHN5bnRheCBmb3IgYW4gJnF1b3Q7YWxsJnF1b3Q7IGxpc3QgaXMgbGlrZTo8L3A+DQo8cD4mYW1wOyMxMjM7Y21zX21vZHVsZSBtb2R1bGU9JiMwMzk7Q2F0YWxvZ2VyJiMwMzk7IGFjdGlvbj0mIzAzOTthbGwmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5O30sIHdoZXJlIHN1Yl90ZW1wbGF0ZSBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgbGlzdC4NClRoZXJlIGlzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciwgYWxpYXM9JiMwMzk7cGFnZV9hbGlhcyYjMDM5Oywgd2hlcmUgcGFnZV9hbGlhcyBpbmRpY2F0ZXMgdGhlIHRvcCBvZiB0aGUgdHJlZSAoZS5nLiwgYSBwbGFjZSBpbiB5b3VyIG1lbnUNCmhpZXJhcmNoeSwgdHlwaWNhbGx5IGEgY2F0ZWdvcnkgcGFnZSkgaW4gd2hpY2ggdG8gbG9vayBmb3IgbmV3IGl0ZW1zLiBBIHNwZWNpYWwgdmFsdWUgZm9yICZxdW90O3BhZ2VfYWxpYXMmcXVvdDsgaXMgJnF1b3Q7LyZxdW90Oywgd2hpY2ggbWVhbnMgdG8NCnN0YXJ0IGF0IHRoZSByb290LjwvcD4NCjxwPlRoaXMgaXMgdXNlZnVsIGZvciBjYXRhbG9nLXdpZGUgb3BlcmF0aW9ucy4gRm9yIGV4YW1wbGUsIHRvIGdldCBhIGxpc3Qgb2YgYWxsIGNhdGVnb3JpZXMgKGFuZCBkbyBzb21ldGhpbmcgd2l0aCB0aGVtKSwNCnlvdSBjb3VsZCB1c2UgdGhlIHRhZyAmYW1wOyMxMjM7Y21zX21vZHVsZSBtb2R1bGU9JiMwMzk7Q2F0YWxvZ2VyJiMwMzk7IGFjdGlvbj0mIzAzOTthbGwmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5OyBhbGlhcz0mIzAzOTsvJiMwMzk7IHJlY3Vyc2U9JiMwMzk7Y2F0ZWdvcmllc19hbGwmIzAzOTt9LiBZb3VyIHRlbXBsYXRlIGNvdWxkIHRoZW4gdGhyb3cNCnRob3NlIGNhdGVnb3JpZXMgaW50byBhIHB1bGxkb3duIG1lbnUgdGhhdCByZWRpcmVjdGVkIHlvdSB0byB0aGF0IGNhdGVnb3J5JiMwMzk7cyBwYWdlLCBmb3IgZXhhbXBsZTo8L3A+DQo8cHJlPg0KJmFtcDtsdDtzZWxlY3QgbmFtZT0mcXVvdDtmb28mcXVvdDsgb25jaGFuZ2U9JnF1b3Q7ZG9jdW1lbnQubG9jYXRpb249dGhpcy5vcHRpb25zW3RoaXMuc2VsZWN0ZWRJbmRleF0udmFsdWU7JnF1b3Q7Pg0KJmFtcDtsdDtvcHRpb24gdmFsdWU9JnF1b3Q7JnF1b3Q7PlNlbGVjdCBBIHRhcmdldCZhbXA7bHQ7L29wdGlvbj4NCiZhbXA7IzEyMztmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09dGhpc29uZX0NCiAgICZhbXA7bHQ7b3B0aW9uIHZhbHVlPSZxdW90OyZhbXA7IzEyMzskdGhpc29uZS5saW5rfSZxdW90Oz4mYW1wOyMxMjM7JHRoaXNvbmUudGl0bGV9JmFtcDtsdDsvb3B0aW9uPg0KJmFtcDsjMTIzOy9mb3JlYWNofQ0KJmFtcDtsdDsvc2VsZWN0Pg0KPC9wcmU+DQo8cD5JZiB5b3Ugd2FudGVkIHRoYXQgdG8gb25seSBzaG93IGNhdGVnb3JpZXMgdGhhdCB3ZXJlIGluIHRoZSB2ZXJ5IHRvcCBsZXZlbCBvZiB5b3VyIGhlaXJhcmNoeSwgeW91JiMwMzk7ZCByZXBsYWNlIHRoZSByZWN1cnNlPSYjMDM5O2NhdGVnb3JpZXNfYWxsJiMwMzk7IHdpdGgNCnJlY3Vyc2U9JiMwMzk7Y2F0ZWdvcmllc19vbmUmIzAzOTsuIE9yIGlmIHlvdSB3YW50ZWQgaXQgdG8gYmUgYWxsIGNhdGFsb2cgSXRlbXMgaW5zdGVhZCBvZiBjYXRlZ29yaWVzLCB5b3UgY291bGQgdXNlIGEgdGFnIGxpa2U6DQomYW1wOyMxMjM7Y21zX21vZHVsZSBtb2R1bGU9JiMwMzk7Q2F0YWxvZ2VyJiMwMzk7IGFjdGlvbj0mIzAzOTthbGwmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5OyBhbGlhcz0mIzAzOTsvJiMwMzk7IHJlY3Vyc2U9JiMwMzk7aXRlbXNfYWxsJiMwMzk7fQ0KPHA+U2ltaWxhcmx5LCB5b3UgY291bGQgaGF2ZSBpdCBsaXN0IG9ubHkgY2F0ZWdvcmllcyB1bmRlciB0aGUgY3VycmVudCBwYWdlIChieSBvbWl0dGluZyB0aGUgJnF1b3Q7YWxpYXM9JiMwMzk7LyYjMDM5OyZxdW90OykuIFRoZSBjb21iaW5hdGlvbnMgYXJlIGJhc2ljYWxseSBsaW1pdGxlc3MhPC9wPg0KPHA+QWxsIHN1cHBvcnRlZCB2YWx1ZXMgb2YgcmVjdXJzZSBpbmNsdWRlOjx1bD4NCjxsaT5pdGVtc19vbmUgLSBDYXRhbG9nIGl0ZW1zLCBubyBtb3JlIHRoYW4gb25lIGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+aXRlbXNfYWxsIC0gQ2F0YWxvZyBpdGVtcywgYXQgYW55IGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+Y2F0ZWdvcmllc19vbmUgLSBDYXRlZ29yaWVzLCBubyBtb3JlIHRoYW4gb25lIGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+Y2F0ZWdvcmllc19hbGwgLSBDYXRlZ29yaWVzLCBhdCBhbnkgbGV2ZWwgYmVsb3cgdGhlIGN1cnJlbnQgcGFnZSAob3IgYWxpYXMgcG9pbnQpPC9saT4NCjxsaT5taXhlZF9vbmUgLSBDYXRhbG9nIGl0ZW1zIGFuZCBDYXRlZ29yaWVzLCBubyBtb3JlIHRoYW4gb25lIGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+bWl4ZWRfYWxsIC0gQ2F0YWxvZyBpdGVtcyBhbmQgQ2F0ZWdvcmllcywgYXQgYW55IGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8L3VsPg0KPC9wPg0KPGg0PlJlY2VudGx5IEFkZGVkIEZlYXR1cmUgTGlzdDwvaDQ+DQo8cD5UbyB1c2UgYSAmcXVvdDttb3N0LXJlY2VudGx5IGFkZGVkJnF1b3Q7IGxpc3Qgd2lsbCBhbGxvdyB5b3UgdG8gZGlzcGxheSB0aGUgbW9zdCByZWNlbnRseS1hZGRlZCBjYXRhbG9nIGl0ZW1zIHVuZGVyIGEgc3BlY2lmaWVkIHBhcnQgb2YgeW91ciBoaWVyYXJjaHkuPC9wPg0KPHA+VGhlIHN5bnRheCBmb3IgYSAmcXVvdDttb3N0IHJlY2VudGx5IGFkZGVkJnF1b3Q7IGxpc3QgaXMgbGlrZTo8L3A+DQo8cD4mYW1wOyMxMjM7Y21zX21vZHVsZSBtb2R1bGU9JiMwMzk7Q2F0YWxvZ2VyJiMwMzk7IGFjdGlvbj0mIzAzOTtyZWNlbnQmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5O30sIHdoZXJlIHN1Yl90ZW1wbGF0ZSBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgbGlzdC4gVGhlcmUgYXJlIHR3byBvcHRpb25hbCBwYXJhbWV0ZXJzLCBjb3VudD0mIzAzOTszJiMwMzk7IGFsaWFzPSYjMDM5O3BhZ2VfYWxpYXMmIzAzOTssIHdoZXJlIGNvdW50IGlzIHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gaW5jbHVkZSwgYW5kIHBhZ2VfYWxpYXMgaW5kaWNhdGVzIHRoZSB0b3Agb2YgdGhlIHRyZWUgKGUuZy4sIGEgcGxhY2UgaW4geW91ciBtZW51IGhpZXJhcmNoeSwgdHlwaWNhbGx5IGEgY2F0ZWdvcnkgcGFnZSkgaW4gd2hpY2ggdG8gbG9vayBmb3IgbmV3IGl0ZW1zLiBBIHNwZWNpYWwgdmFsdWUgZm9yICZxdW90O3BhZ2VfYWxpYXMmcXVvdDsgaXMgJnF1b3Q7LyZxdW90Oywgd2hpY2ggbWVhbnMgdG8gdXNlIDxpPmFsbDwvaT4gcGFnZXMgaW4gdGhlIHNpdGUuPC9wPg0KPGg0PlJhbmRvbSBJdGVtcyBGZWF0dXJlIExpc3Q8L2g0Pg0KPHA+VGhlIHN5bnRheCBmb3IgYSAmcXVvdDtyYW5kb20mcXVvdDsgbGlzdCBpcyBsaWtlOjwvcD4NCjxwPiZhbXA7IzEyMztjbXNfbW9kdWxlIG1vZHVsZT0mIzAzOTtDYXRhbG9nZXImIzAzOTsgYWN0aW9uPSYjMDM5O3JhbmRvbSYjMDM5OyBzdWJfdGVtcGxhdGU9JiMwMzk7bXlfc3ViX3RlbXBsYXRlJiMwMzk7fSwgd2hlcmUgc3ViX3RlbXBsYXRlIGlzIHRoZSB0ZW1wbGF0ZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBsaXN0LiBUaGVyZSBhcmUgdHdvIG9wdGlvbmFsIHBhcmFtZXRlcnMsIGNvdW50PSYjMDM5OzMmIzAzOTsgYWxpYXM9JiMwMzk7cGFnZV9hbGlhcyYjMDM5Oywgd2hlcmUgY291bnQgaXMgdGhlIG51bWJlciBvZiBpdGVtcyB0byBpbmNsdWRlLCBhbmQgcGFnZV9hbGlhcyBpbmRpY2F0ZXMgdGhlIHRvcCBvZiB0aGUgdHJlZSAoZS5nLiwgYSBwbGFjZSBpbiB5b3VyIG1lbnUgaGllcmFyY2h5LCB0eXBpY2FsbHkgYSBjYXRlZ29yeSBwYWdlKSBpbiB3aGljaCB0byBsb29rIGZvciBuZXcgaXRlbXMuIEEgc3BlY2lhbCB2YWx1ZSBmb3IgJnF1b3Q7cGFnZV9hbGlhcyZxdW90OyBpcyAmcXVvdDsvJnF1b3Q7LCB3aGljaCBtZWFucyB0byB1c2UgPGk+YWxsPC9pPiBwYWdlcyBpbiB0aGUgc2l0ZS48L3A+DQo8aDM+Q3VzdG9taXphdGlvbiBhbmQgQWR2YW5jZWQgVG9waWNzPC9oMz4NCjxoND5DYXRhbG9nIEl0ZW0gQXR0cmlidXRlczwvaDQ+DQo8cD5UaGUgZGVmYXVsdCBpdGVtIGF0dHJpYnV0ZXMgYXJlIHR5cGljYWwgZm9yIGEgY2F0YWxvZyBvZiBwcm9kdWN0cyBvciBhcnR3b3JrcywgYnV0IGJ5IGdvaW5nIGludG8gRXh0ZW5zaW9ucyAmYW1wO2d0OyBDYXRhbG9nZXIgJmFtcDtndDsgTWFuYWdlIFVzZXItRGVmaW5lZCBBdHRyaWJ1dGVzLCB5b3UgY2FuIGNoYW5nZSB0aGUgYXR0cmlidXRlcy4gSXQmIzAzOTtzIGJlc3QgdG8gZGVmaW5lIHRoZSBhdHRyaWJ1dGVzIGJlZm9yZSB5b3Ugc3RhcnQgZW50ZXJpbmcgQ2F0YWxvZyBJdGVtcy48L3A+DQo8cD5Ob3RlIHRoYXQgdGhlIGF0dHJpYnV0ZXMgeW91IGRlZmluZSBtYXkgbmVlZCB0byBiZSBhZGRlZCB0byB0aGUgdGVtcGxhdGUgdGhhdCB5b3UmIzAzOTtyZSB1c2luZyB0byBkaXNwbGF5IENhdGFsb2cgSXRlbXMgLS0gc2VlIEN1c3RvbSBUZW1wbGF0ZXMgYmVsb3cuPC9wPg0KPGg0PkNhdGFsb2cgQ2F0ZWdvcnkgQXR0cmlidXRlczwvaDQ+DQo8cD5TaW1pbGFybHksIHlvdSBjYW4gc2V0IGF0dHJpYnV0ZXMgZm9yIENhdGVnb3JpZXMuIEFnYWluLCB0aGUgYXR0cmlidXRlcyB5b3UgZGVmaW5lIG1heSBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSB0ZW1wbGF0ZSB0aGF0IHlvdSYjMDM5O3JlIHVzaW5nIHRvIGRpc3BsYXkgQ2F0YWxvZyBDYXRlZ29yaWVzIC0tIHNlZSBDdXN0b20gVGVtcGxhdGVzIGJlbG93LjwvcD4NCjxoND5QcmludGFibGUgQ2F0YWxvZyBBdHRyaWJ1dGVzPC9oND4NCjxwPkxpa2V3aXNlLCB5b3UgY2FuIHNldCBhdHRyaWJ1dGVzIGZvciBQcmludGFibGUgQ2F0YWxvZ3MuIEFnYWluLCB0aGUgYXR0cmlidXRlcyB5b3UgZGVmaW5lIG1heSBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSB0ZW1wbGF0ZSB0aGF0IHlvdSYjMDM5O3JlIHVzaW5nIHRvIGRpc3BsYXkgeW91ciBQcmludGFibGUgQ2F0YWxvZyAtLSBzZWUgQ3VzdG9tIFRlbXBsYXRlcyBiZWxvdy48L3A+DQo8aDQ+Q3VzdG9tIFRlbXBsYXRlczwvaDQ+DQo8cD5JZiB5b3UmIzAzOTtyZSB3aWxsaW5nIHRvIG1lc3MgYXJvdW5kIHdpdGggU21hcnR5IFRlbXBsYXRlcywgeW91IGNhbiBjaGFuZ2UgdGhlIGxheW91dCBvZiBhbnkgb2YgdGhlIHBhZ2VzIGdlbmVyYXRlZCBieSBDYXRhbG9nZXIuIFRoaXMgc2hvdWxkIG1ha2UgY2VydGFpbiBkZXZlbG9wZXJzIHZlcnkgaGFwcHksIGV2ZW4gaWYgdGhlIGluZWZmaWNpZW5jeSBvZiB0aGUgcmVzdCBvZiB0aGUgY29kZSB3aWxsIG5vdC4gVGhlcmUgYXJlIGZvdXIga2luZHMgb2YgdGVtcGxhdGVzOiBvbmUga2luZCBmb3IgQ2F0YWxvZyBJdGVtcywgb25lIGtpbmQgZm9yIENhdGFsb2cgQ2F0ZWdvcmllcywgYW5kIG9uZSBraW5kIGZvciBQcmludGFibGUgQ2F0YWxvZ3MsIGFuZCBvbmUga2luZCBmb3IgJnF1b3Q7RmVhdHVyZSZxdW90OyBsaXN0cywgc3VjaCBhcyByZWNlbnRseSBhZGRlZCBpdGVtcyBvciByYW5kb20gc2VsZWN0aW9ucy48L3A+DQo8cD5XaGVuIGVkaXRpbmcgYSBUZW1wbGF0ZSwgdGhlIGFkbWluIHNjcmVlbiB3aWxsIGRpc3BsYXkgYSBsaXN0IG9mIFNtYXJ0eSB0YWdzIGF2YWlsYWJsZSB0byB5b3UgZm9yIHRoYXQga2luZCBvZiB0ZW1wbGF0ZS4gVGhpcw0Kd2lsbCBvbmx5IGhhcHBlbiBvbmNlIHRoZSBtb2R1bGUga25vd3Mgd2hhdCBraW5kIG9mIHRlbXBsYXRlIHlvdSYjMDM5O3JlIGVkaXRpbmcsIHNvIHdoZW4geW91IGZpcnN0IGNyZWF0ZSB0aGUgdGVtcGxhdGUsIGl0IGRpc3BsYXlzIGFsbA0KdGhlIFNtYXJ0eSB0YWdzIGl0IGtub3dzIGFib3V0LCBvbmx5IHNvbWUgb2Ygd2hpY2ggYmVpbmcgYXBwbGljYWJsZS48L3A+DQo8aDQ+U21hcnR5IHRhZ3MgaW4gQXR0cmlidXRlczwvaDQ+DQo8cD5Tb21ldGltZXMsIHlvdSYjMDM5O2xsIHdhbnQgdGhlIGRlc2NyaXB0aW9ucyBvZiB5b3VyIGl0ZW1zIHRvIGluY2x1ZGUgc21hcnR5IHRhZ3MgKGUuZy4sIGNtc19zZWxmbGluaykuIFRvIG1ha2UgdGhhdCB3b3JrLCB5b3UmIzAzOTtsbCBuZWVkIHRvDQp1cGRhdGUgeW91ciB0ZW1wbGF0ZS4gRm9yIHRoZSBhdHRyaWJ1dGVzIHdoZXJlIHlvdSB3YW50IHNtYXJ0eSB0YWdzIHRvIGJlIGFjdGl2ZSwgeW91JiMwMzk7bGwgbmVlZCB0byBuZXN0IHRoZSBzbWFydHkgZXZhbHVhdGlvbnMgaW4geW91ciB0ZW1wbGF0ZS4gRm9yIGV4YW1wbGU6PC9wPg0KPHByZT4NCiZhbXA7IzEyMztldmFsIHZhcj0kYXR0cmxpc3RbYXRdLmtleX0NCjwvcHJlPg0KPHA+YmVjb21lczo8L3A+DQo8cHJlPg0KJmFtcDsjMTIzO2V2YWwgdmFyPSRlbnRyeS0+aW5wdXQgYXNzaWduPXRoaXNBdHRyfSZhbXA7IzEyMztldmFsIHZhcj0kdGhpc0F0dHJ9DQo8L3ByZT4NCjxwPlVnbHk/IFl1cC4gQnV0IGl0IHdvcmtzLjwvcD4NCjxoMz5DYXRhbG9nZXIgSW1hZ2UgU3lzdGVtPC9oMz4NCjxwPkNhdGFsb2dlciBoYXMgYW4gaW1hZ2Ugc3lzdGVtIHRoYXQgd2lsbCBhbGxvdyB5b3UgdG8gZHluYW1pY2FsbHkgY2hhbmdlIHRoZSBpbWFnZSBkaXNwbGF5IHNpemUuIElmIHlvdSBkbyBub3QgbGlrZSBpdCwgeW91IGNhbiBhbHRlcg0KdGhlIHRlbXBsYXRlcyBhbmQgdXNlIGFueSBpbWFnZSBzeXN0ZW0geW91IHdhbnQuPC9wPg0KPHA+V2hlbiB5b3UgdXBsb2FkIGFuIGltYWdlIHVzaW5nIENhdGFsb2dlciwgaXQgZ2V0cyBwdXQgaW4gYSBzcGVjaWFsIHNldCBvZiBkaXJlY3RvcmllcyB0byBtYWtlIHRoZSBpbWFnaW5nIGVhc2llci4gWW91IHdpbGwgc2VlIG1vcmUNCmFib3V0IHRoaXMgbGF0ZXIuPC9wPg0KPHA+SXQgd29ya3MgYnkgY2FsbGluZyBhIFBIUCBwcm9ncmFtIGluc3RlYWQgb2YgZGlyZWN0bHkgcmVmZXJlbmNpbmcgdGhlIGltYWdlLiBUaGUgcHJvZ3JhbSB1c2VzIHRoZSBmaWxlbmFtZSB0byBzZWUgaWYgdGhlDQppbWFnZSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgY29ycmVjdCBzaXplLiBJZiBzbywgaXQgcmVkaXJlY3RzIHRvIHRoYXQgaW1hZ2UuIE90aGVyd2lzZSwgaXQgdXNlcyB5b3VyIEdETElCIG9yIEltYWdlTWFnaWNrIHRvIGNyZWF0ZQ0KdGhlIGltYWdlIGluIHRoZSBjb3JyZWN0IHNpemUsIGFuZCB0aGVuIHJlZGlyZWN0cyB0byBpdC4NCjwvcD4NCjxoND5DYXRhbG9nZXIgSW1hZ2UgRmlsZXNwZWMgRXhwbGFuYXRpb248L2g0Pg0KPHA+QSBjYXRhbG9nZXIgaW1hZ2UgaGFzIGEgZmlsZXNwZWMgbGlrZToNCjxiciAvPg0Kcm9vdF9wYXRoL21vZHVsZXMvQ2F0YWxvZ2VyL0NhdGFsb2dlci5JbWFnZS5waHA/aT1pdGVtbmFtZV9mXzFfNDAwXzEuanBnJmFtcDthbXA7YWM9ODI4ODgNCjwvcD4NCjxwPlRoZSBpbnRlcmVzdGluZyB0aGluZyBpcyAmcXVvdDtpdGVtbmFtZV9mXzFfNDAwXzEuanBnJnF1b3Q7IC0gdGhlIHN0dWZmIGJlZm9yZSBpcyBqdXN0IGEgY2FsbCB0byB0aGUgcHJvZ3JhbSwgYW5kIHRoZSAmYW1wO2FtcDthYz04Mjg4OCBpcyBhIHJhbmRvbSB0aGluZyB0aGF0DQppcyBkZXNpZ25lZCB0byBwcmV2ZW50IGJyb3dzZXIgY2FjaGluZy4gU28gZXhhbWluaW5nIHRoZSBuYW1lIHBpZWNlIGJ5IHBpZWNlIChzZXBhcmF0aW5nIGF0IHRoZSB1bmRlcnNjb3JlcyksIHdlIGhhdmU6PC9wPg0KPHVsPg0KPGxpPml0ZW0gbmFtZSAtIHRoaXMgaXMgdGhlIGFsaWFzIG9mIHRoZSBpdGVtL2NhdGVnb3J5IHBhZ2UgY29udGFpbmluZyB0aGUgaW1hZ2UuPC9saT4NCjxsaT5pbWFnZSB0eXBlIC0gdGhpcyBpcyBhIGRlc2lnbmF0aW9uIGZvciBpbWFnZSB0eXBlOjx1bD4NCjxsaT5mIC0gaXRlbSBmdWxsLXNpemUgaW1hZ2U8L2xpPg0KPGxpPnQgLSBpdGVtIHRodW1ibmFpbDwvbGk+DQo8bGk+Y2YgLSBjYXRlZ29yeSBmdWxsLXNpemVkIGltYWdlPC9saT4NCjxsaT5jdCAtIGNhdGVnb3J5IHRodW1ibmFpbDwvbGk+DQo8bGk+Y3RmIC0gcHJpbnRhYmxlIGNhdGFsb2cgZnVsbC1zaXplZCBpbWFnZTwvbGk+DQo8L3VsPg0KPC9saT4NCjxsaT5pbWFnZSBudW1iZXIgLSBzbyBhIGdpdmVuIGl0ZW0vY2F0YWxvZy9ldGMgY2FuIGhhdmUgbXVsdGlwbGUgaW1hZ2VzPC9saT4NCjxsaT5sb25nIGRpbWVuc2lvbiAtIGxvbmcgZGltZW5zaW9uIG9mIHRoZSBpbWFnZSwgaW4gcGl4ZWxzPC9saT4NCjxsaT5taXNzaW5nIGZsYWcgLSAxIGlmIHlvdSB3YW50IHRvIHNob3cgYW4gJnF1b3Q7aW1hZ2UgbWlzc2luZyZxdW90OyBpbWFnZSBpZiB0aGlzIGltYWdlIGRvZXNuJiMwMzk7dCBleGlzdCwgMCBvdGhlcndpc2U8L2xpPg0KPC91bD4NCjxwPg0KVGhpcyB3aWxsIHRha2UgYW4gaW1hZ2UgaW4gcm9vdF9wYXRoL3VwbG9hZHMvaW1hZ2VzL2NhdGFsb2dfc3JjL2l0ZW1uYW1lX3NyY18xDQo8L3A+DQo8aDM+Q3JlZGl0czwvaDM+DQo8cD5UaGFua3MgdG8gPGEgaHJlZj0iaHR0cDovL3d3dy5pZC1hLmNvLnVrIj5QYXVsIENvb3BlcjwvYT4gZm9yIHNwb25zb3JpbmcgdGhlIGRldmVsb3BtZW50IG9mIHRleHRhcmVhIGF0dHJpYnV0ZXMuPC9wPg0KPHA+VGhhbmtzIHRvIG51bWVyb3VzIHBhdGllbnQgdXNlcnMgYW5kIGJ1ZyB0ZXN0ZXJzIChtYW55IG9mIHdob20gaGFkIG5vIGlkZWEgd2hhdCB0aGV5IHdlcmUgZ2V0dGluZyBpbnRvLik8L3A+IA0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIENNUyBNYWRlIFNpbXBsZSAgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyI+RGV2ZWxvcGVyIEZvcmdlPC9hPi48L2xpPg0KPGxpPlRvIG9idGFpbiBjb21tZXJjaWFsIHN1cHBvcnQsIHBsZWFzZSBzZW5kIGFuIGVtYWlsIHRvIHRoZSBhdXRob3IgYXQgPGEgaHJlZj0ibWFpbHRvOnNqZ0BjbXNtb2R1bGVzLmNvbSI+JmFtcDtsdDtzamdAY21zbW9kdWxlcy5jb20mYW1wO2d0OzwvYT4uPC9saT4NCjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjxsaT5UaGUgYXV0aG9yIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkgYW5kIGdyb3ZlbGxpbmcgZm9yIGZyZWUgc3VwcG9ydC48L2xpPg0KPC91bD4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dA0Kb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD5Db3B5cmlnaHQgJmFtcDtjb3B5OyAyMDA3LCBTYW11ZWwgR29sZHN0ZWluIDxhIGhyZWY9Im1haWx0bzpzamdAY21zbW9kdWxlcy5jb20iPiZhbXA7bHQ7c2pnQGNtc21vZHVsZXMuY29tJmFtcDtndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPg0KPGgzPlRyYWR1JmNjZWRpbDsmYXRpbGRlO28gZGUgTnVubyBDb3N0YTo8L2gzPg0KPHA+PGEgaHJlZj0ibWFpbHRvOm51bm8ubWZjb3N0YUBzYXBvLnB0Ij48bnVuby5tZmNvc3RhQHNhcG8ucHQ+PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0NlcnRpZmlxdWUtc2UgZGUgZGVmaW5pciBhcyBwZXJtaXNzJm90aWxkZTtlcyAgJnF1b3Q7TW9kaWZpY2FyIENvbmZpZ3VyYSZjY2VkaWw7Jm90aWxkZTtlcyBkbyBDYXQmYWFjdXRlO2xvZ28gJnF1b3Q7IHBhcmEgcXVlIG9zIHVzdSZhYWN1dGU7cmlvcyBwb3NzYW0gYWRtaW5pc3RyYXIgbyBjYXQmYWFjdXRlO2xvZ28uJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMTkyNjU4MTE4My4xMzQ5MDIxMzIxLjEzNDkwMjEzMjEuMTM0OTAyMTMyMS4xJzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTM0OTAyMTMyMS4xLjEudXRtY2NuPShkaXJlY3QpfHV0bWNzcj0oZGlyZWN0KXx1dG1jbWQ9KG5vbmUpJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/ro_RO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ25hbWVpbWFnZXMnXSA9ICdJbWFnaW5pJzsKJGxhbmdbJ25hbWVmaWxlcyddID0gJ0Zpc2llcmUnOwokbGFuZ1snbmFtZWZpbGUnXSA9ICdGaXNpZXInOwokbGFuZ1snZGVsZXRlaW1hZ2UnXSA9ICdTdGVyZ2UgSW1hZ2luZSc7CiRsYW5nWydkZWxldGVmaWxlJ10gPSAnU3RlcmdlcmUgRmlzaWVyJzsKJGxhbmdbJ093bmVyJ10gPSAnUHJvcGlldGFyJzsKJGxhbmdbJ0NhdGFsb2dJdGVtJ10gPSAnTGlzdGEgQ2F0YWxvZyc7CiRsYW5nWyduYW1lcGFnZSddID0gJ1BhZ2luYSc7CiRsYW5nWydQZXJtaXNzaW9ucyddID0gJ1Blcm1pc2l1bmUnOwokbGFuZ1snU3ViJ10gPSAnU3ViIC0gJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtX3NvcnRfb3JkZXIyJ10gPSAnT3Jkb25lYXphIGR1cGEgYXJ0aWNvbCc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfaXRlbXNfcGVyX3BhZ2UyJ10gPSAnQXJ0aWNvbCBwZSBwYWdpbmEnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2NhdGVnb3J5X3JlY3Vyc2UyJ10gPSAnQXJhdGEgQ29tcG9ydGFyZSc7CiRsYW5nWyd3aGljaF9hdHRyaWJ1dGVzJ10gPSAnQ2UgYXRyaWJ1dGlpIGFyIHRyZWJ1aSBhcmF0YXRlIGluIGNhdGFsb2cnOwokbGFuZ1snbmF2VGFiJ10gPSAnICB8ICAnOwokbGFuZ1snbmVlZHBlcm1pc3Npb24nXSA9ICdBdmV0aSBuZXZvaWUgZGUgJXMgYWN0aXZhdGEgcGVudHJ1IGFjZWFzdGEuJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0NhdGFsb2cnOwokbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddID0gJ0dlc3Rpb25lYXphIHNldGFyaSBjYXRhbG9nJzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdTdW50ZXRpIHNpZ3VyKGEpIGNhIGRvcml0aSBzYSBzdGVyZ2V0aSAlcz8nOwokbGFuZ1sndW5pcXVlY29kZSddID0gJ0NvZCB1bmljJzsKJGxhbmdbJ3RlbXBsYXRlbGlzdCddID0gJ1N1Yi1zYWJsb24nOwokbGFuZ1snbGlzdHRlbXBsJ10gPSAnR2VzdGlvbmVhemEgc3ViLXNhYmxvbic7CiRsYW5nWyd0aXRsZV9pdGVtX3RhYiddID0gJ0F0cmlidXRlIGFydGljb2wnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfdGFiJ10gPSAnQXRyaWJ1dGUgY2F0ZWdvcmllJzsKJGxhbmdbJ3RpdGxlX3ByaW50YWJsZV90YWInXSA9ICdTZXRhcmkgY2F0YWxvZyB0aXBhcmliaWwnOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV90YWInXSA9ICdEaW1lbnNpdW5pIGltYWdpbmUgZWxlbWVudCc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9pbWFnZV90YWInXSA9ICdTZXRhcmkgcGFnaW5hIGNhdGVnb3JpZSc7CiRsYW5nWyd0aXRsZV9wYXRoX3RhYiddID0gJ0NhaSc7CiRsYW5nWyd0aXRsZV9pc190ZXh0ZmllbGQnXSA9ICdab25hIFRleHQ/JzsKJGxhbmdbJ3RpdGxlX2RlbGV0ZSddID0gJ1N0ZXJnZT8nOwokbGFuZ1sndGl0bGVfZmlsZV90YWInXSA9ICdTZXRhcmkgRmlzaWVyIE9iaWVjdCc7CiRsYW5nWyd0aXRsZV9pbWFnZV90YWInXSA9ICdBbHRlIHNldGFyaSBpbWFnaW5lJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fdGVtcGxhdGVfdmFycyddID0gJ1NhYmxvbiB2YXJpYWJpbGUgZWxlbWVudCc7CiRsYW5nWyd0aXRsZV9jYXRfdGVtcGxhdGVfdmFycyddID0gJ1NhYmxvbiB2YXJpYWJpbGUgIGNhdGVnb3JpZSc7CiRsYW5nWyd0aXRsZV9jYXRhbG9nX3RlbXBsYXRlX3ZhcnMnXSA9ICdWYXJpYWJpbGUgVGVtcGxhdGUgQ2F0YWxvZyc7CiRsYW5nWyd0aXRsZV9jb21wYXJlX3RlbXBsYXRlX3ZhcnMnXSA9ICdWYXJpYWJpbGUgVGVtcGxhdGUgQ29tcGFyYXRpZSc7CiRsYW5nWyd0aXRsZV9mZWF0dXJlX3RlbXBsYXRlX3ZhcnMnXSA9ICdTYWJsb24gdmFyaWFiaWxlIGZhY2lsaXRhdGknOwokbGFuZ1sndGl0bGVfc2hvd19vbmx5X2V4aXN0aW5nX2ltYWdlcyddID0gJ051IGluY2x1ZGUgaW1hZ2luaSBsaXBzYSc7CiRsYW5nWyd0aXRsZV9zaG93X29ubHlfZXhpc3RpbmdfaW1hZ2VzX2hlbHAnXSA9ICdBY2Vhc3RhIHZhIGRvYXIgdmEgcGxhc2EgcmVmZXJpbnRlbGUgaW1hZ2luaWkgaW4gbGlzdGUsIGRhY2EgaW1hZ2luZWEgZXhpc3RhLjxiciAvPihJbiBtb2Qgbm9ybWFsLCBlc3RlIG9rLCBkYXIgZGFjYSB1dGlsaXphdGkgaW4gbW9kIGludGVsaWdlbnQgaW5kZWNzaWkgdGFibG91bHVpIGltYWdpbmlpLCA8YnIgLz5hY2Vhc3RhIHZhIHBvYXRlIHByaWNpbnVpIHByb2JsZW1lLiknOwokbGFuZ1sndGl0bGVfZmx1c2hfY2F0cyddID0gJ0dvbGVzdGUgdGFtcG9hbmVsZSBwYWdpbmlpIGNhdGVnb3JpaSc7CiRsYW5nWyd0aXRsZV9mbHVzaF9jYXRzX2hlbHAnXSA9ICdEYWNhIGF2ZXRpIGFmaXNhdCB1biBudW1hciB1cmlhcyBkZSBlbGVtZW50ZTxiciAvPmludHItbyBjYXRlZ29yaWUsIGFudW1pdGUgaW5zdGFsYXJpIFBIUCB2b3IgZXN1YSBpbiBhZmlzYXJlYSBjb3JlY3RlIDxiciAvPmEgcGFnaW5paS4gQmlmYXRpIGFjZWFzdGEgY2FzdXRhIHBlbnRydSBhIHJlem9sdmEgYWNlYXN0YSBwcm9ibGVtYSAodGVzdCBwZW50cnUgZWZlY3RlIHNlY3VuZGFyZSkuJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fZmlsZV90eXBlcyddID0gJ1RpcHVyaSBkZSBmaXNpZXJlIHBlcm1pc2UnOwokbGFuZ1sndGl0bGVfaW1hZ2VfdXBsb2FkX3BhdGgnXSA9ICdMb2NhdGllIHBlbnRydSBmaXNpZXJlbGUgaW1hZ2luaSB1cGxvYWRhdGUnOwokbGFuZ1sndGl0bGVfZmlsZV91cGxvYWRfcGF0aCddID0gJ0xvY2F0aWUgcGVudHJ1IGFsdGUgZmlzaWVyZSB1cGxvYWRhdGUnOwokbGFuZ1sndGl0bGVfaW1hZ2VfcHJvY19wYXRoJ10gPSAnTG9jYXRpZSBwZW50cnUgaW1hZ2luaSBwcm9jZXNhdGUgKG1pbmlhdHVyaSwgaW1hZ2luaSByZWRpbWVuc2lvbmF0ZSwgZXRjKSc7CiRsYW5nWydwYXRoX2hlbHAnXSA9ICdTZSBwb2F0ZSBzcGVjaWZpY2EgdW5kZSBhbnVtZSBzdG9jaGVhemEgQ2F0YWxvZ2VyIGZpc2llcmVsZS4gQWNlc3RlIGNhaSBzdW50IHJlbGF0aXZlIGZhdGEgZGUgPGk+dXBsb2Fkc19wYXRoPC9pPiBkZWZpbml0YSBpbiBjb25maWcucGhwPGJyIC8+Tk9UQTogRGFjYSBzZSBzY2hpbWJhIGFjZXN0ZSBjYWkgZHVwYSBjZSBmaXNpZXJlbGUgc2F1IGltYWdpbmlsZSBhdSBmb3N0IHVwbG9hZGF0ZSwgQ2F0YWxvZ2VyIHZhIHBpZXJkZSBvYmllY3RlbGUgZ2F0YSB1cGxvYWRhdGUgKGVsZSB2b3IgZmkgYWNvbG8sIGRhciBDYXRhbG9nZXIgbnUgdmEgc3RpIGRlIGVsZSwgZGVjaSB2b3IgdHJlYnVpIHJlLXVwbG9hZGF0ZSkuJzsKJGxhbmdbJ2NhdGFsb2dlciddID0gJ0NhdGFsb2cnOwokbGFuZ1sndGl0bGVfYXR0cl9vcmRlcl9ieSddID0gJ09yZGluZSc7CiRsYW5nWyd0aXRsZV9hdHRyX2FsaWFzJ10gPSAnQWxpYXMgQXRyaWJ1dCAoUHJpZXRlbm9zIGN1IFNtYXJ0eSknOwokbGFuZ1sndGl0bGVfYXR0cl9sZW5ndGgnXSA9ICdMdW5naW1lKic7CiRsYW5nWyd0aXRsZV9hdHRyX2RlZmF1bHQnXSA9ICdWYWxvYXJlIEltcGxpY2l0YSc7CiRsYW5nWyd0aXRsZV9hdHRyX2xlbmd0aF9oZWxwJ10gPSAnKCpMdW5naW1lYSBudSBzZSBhcGxpY2EgY2FtcHVyaWxvciBUZXh0IEFyZWEpJzsKJGxhbmdbJ2l0ZW1fcGFnZSddID0gJ1BhZ2luYSBlbGVtZW50JzsKJGxhbmdbJ2NhdGVnb3J5X3BhZ2UnXSA9ICdQYWdpbmEgY2F0ZWdvcmllJzsKJGxhbmdbJ2NhdGFsb2dfcHJpbnRhYmxlJ10gPSAnQ2F0YWxvZyB0aXBhcmliaWwnOwokbGFuZ1snY2F0YWxvZ19kYXRhc2hlZXQnXSA9ICdGb2FpZSBkZSBjYWxjdWwgY2F0YWxvZyc7CiRsYW5nWydjYXRhbG9nX3Nob3J0X2xpc3QnXSA9ICdMaXN0YSBmYWNpbGl0YXRpJzsKJGxhbmdbJ2l0ZW1fY29tcGFyaXNvbiddID0gJ0NvbXBhcmF0aWUgb2JpZWN0ZSc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfaXRlbV9zb3J0X29yZGVyJ10gPSAnU3RhYmlsZXN0ZSBvcmRpbmVhIGRlIHNvcnRhcmUgbGEnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2l0ZW1zX3Blcl9wYWdlJ10gPSAnU3RhYmlsZXN0ZSBudW1hcnVsIGRlIGVsZW1lbnRlIHBlciBwYWdpbmEgbGEnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2NhdGVnb3J5X3JlY3Vyc2UnXSA9ICdTdGFiaWxlc3RlIGNvbXBvcnRhbWVudHVsIGRlIGFmaXNhcmUgYSBjYXRlZ29yaWlsb3IgbGEnOwokbGFuZ1sndGl0bGVfaXRlbV9zb3J0X29yZGVyJ10gPSAnT3JkaW5lYSBpbXBsaWNpdGEgZGUgc29ydGFyZSBhIGVsZW1lbnRlbG9yJzsKJGxhbmdbJ3RpdGxlX3ByaW50YWJsZV9zb3J0X29yZGVyJ10gPSAnT3JkaW5lYSBpbXBsaWNpdGEgZGUgc29ydGFyZSBhIGNhdGFsb2FnZWxvciB0aXBhcmliaWxlJzsKJGxhbmdbJ3RpdGxlX2l0ZW1zX3Blcl9wYWdlJ10gPSAnTnVtYXJ1bCBpbXBsaWNpdCBkZSBlbGVtZW50ZSBwZXIgcGFnaW5hJzsKJGxhbmdbJ3RpdGxlX2F2YWlsX2F0dHJzJ10gPSAnQXRyaWJ1dGVsZSBlbGVtZW50dWx1aSBkaXNwb25pYmlsZSBwZW50cnUgc2FibG9uJzsKJGxhbmdbJ3RpdGxlX2F2YWlsX2ltYXR0cnMnXSA9ICdJbWFnaW5pbGUgZWxlbWVudHVsdWkgZGlzcG9uaWJpbGUgcGVudHJ1IHNhYmxvbic7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfaGVybyddID0gJ0RpbWVuc2l1bmVhIGltYWdpbmlpIHBlbnRydSBwYWdpbmEgZWxlbWVudCAoYXhlbGUgbHVuZ2kgaW4gcGl4ZWxpKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfdGh1bWJuYWlsJ10gPSAnRGltZW5zaXVuZWEgaW1hZ2luaWkgcGljdG9ncmFtZSBwZW50cnUgcGFnaW5hIGVsZW1lbnR1bHVpIChheGVsZSBsdW5naSBpbiBwaXhlbGkpJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV9jYXRlZ29yeSddID0gJ0RpbWVuc2l1bmVhIGltYWdpbmlpIHBpY3RvZ3JhbWUgcGVudHJ1IGVsZW1lbnR1bCBkaW4gcGFnaW5hIGNhdGVnb3JpZSAoYXhlbGUgbHVuZ2kgaW4gcGl4ZWxpKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfY2F0YWxvZyddID0gJ0RpbWVuc2l1bmVhIGltYWdpbmlpIHBpY3RvZ3JhbWUgcGVudHJ1IGVsZW1lbnR1bCBkaW4gcGFnaW5hIGNhdGFsb2cgKGF4ZWxlIGx1bmdpIGluIHBpeGVsaSknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV9oZXJvJ10gPSAnRGltZW5zaXVuZWEgaW1hZ2luaWkgcGVudHJ1IHBhZ2luYSBjYXRlZ29yaWUgKGF4ZWxlIGx1bmdpIGluIHBpeGVsaSknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV90aHVtYm5haWwnXSA9ICdEaW1lbnNpdW5lYSBpbWFnaW5paSBwaWN0b2dyYW1lIHBlbnRydSBwYWdpbmEgY2F0ZWdvcmllIChheGVsZSBsdW5naSBpbiBwaXhlbGkpJzsKJGxhbmdbJ3RpdGxlX3RlbXBsYXRlJ10gPSAnU2FibG9uJzsKJGxhbmdbJ3RpdGxlX3RlbXBsYXRlX3R5cGUnXSA9ICdUaXAgc2FibG9uJzsKJGxhbmdbJ3RpdGxlX3RpdGxlJ10gPSAnVGl0bHUnOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9jb3VudCddID0gJ051bWFyIG1heGltIHZlZGVyaSBwZW50cnUgZmllY2FyZSBlbGVtZW50JzsKJGxhbmdbJ3RpdGxlX2l0ZW1fZmlsZV9jb3VudCddID0gJ051bWFydWwgbWF4aW0gZGUgYWx0ZSBmaXNpZXJlIGFzb2NpYXRlIGN1IGZpZWNhcmUgb2JpZWN0Lic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9pbWFnZV9jb3VudCddID0gJ051bWFyIG1heGltIGRlIGltYWdpbmkgYmFuZXIgcGVudHJ1IGZpZWNhcmUgcGFnaW5hIGNhdGVnb3JpZSc7CiRsYW5nWyd0aXRsZV9pdGVtX2F0dHJpYnV0ZXNfaGVscCddID0gJ0ZpZWNhcmUgYXRyaWJ1dCBpbnRyb2R1cyBhaWNpIHZhIGZpIHRpdGx1bCB1bnVpIGNhbXAgcGUgY2FyZS1sIHB1dGV0aSBmb2xvc2kgcGVudHJ1IGRlc2NyaWVyZWEgdW51aSBlbGVtZW50IGluZGl2aWR1YWwgc2kgdmEgZmkgYWZpc2F0IGltcHJldW5hIGN1IGFjZWwgZWxlbWVudC4gVmV0aSBmaSBuZXZvaXQoYSkgc2EgYWN0dWFsaXphdGkgc2FibG9udWwgZHVtbmVhdm9hc3RyYSBwZW50cnUgcmVmbGVjdGFyZWEgYWNlc3RvciBhdHJpYnV0ZS4gR29saXRpIHNhdSBzdXByYXNjcmlldGkgcGVzdGUgdW4gYXRyaWJ1dCBleGlzdGVudCBwZW50cnUgc3RlcmdlcmVhIHNhdSBpbmxvY3VpcmVhIGx1aS4nOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfYXR0cmlidXRlc19oZWxwJ10gPSAnRmllY2FyZSBhdHJpYnV0IGludHJvZHVzIGFpY2kgdmEgZmkgdGl0bHVsIHVudWkgY2FtcCBwZSBjYXJlLWwgcHV0ZXRpIGZvbG9zaSBwZW50cnUgZGVzY3JpZXJlYSB1bmVpIGNhdGVnb3JpaSBkZSBlbGVtZW50ZSBzaSB2YSBmaSBhZmlzYXQgaW4gcGFnaW5hIGRlIGNhdGVnb3JpaS4gVmV0aSBmaSBuZXZvaXQoYSkgc2EgYWN0dWFsaXphdGkgc2FibG9udWwgZHVtbmVhdm9hc3RyYSBwZW50cnUgcmVmbGVjdGFyZWEgYWNlc3RvciBhdHJpYnV0ZS4gR29saXRpIHNhdSBzdXByYXNjcmlldGkgcGVzdGUgdW4gYXRyaWJ1dCBleGlzdGVudCBwZW50cnUgc3RlcmdlcmVhIHNhdSBpbmxvY3VpcmVhIGx1aS4nOwokbGFuZ1sndGl0bGVfY2F0YWxvZ19hdHRyaWJ1dGVzX2hlbHAnXSA9ICdGaWVjYXJlIGF0cmlidXQgaW50cm9kdXMgYWljaSB2YSBmaSB0aXRsdWwgdW51aSBjYW1wIHBlIGNhcmUtbCBwdXRldGkgZm9sb3NpIHBlbnRydSBkZXNjcmllcmVhIGludHJlZ3VsdWkgY2F0YWxvZyBzaSB2YSBmaSBhZmlzYXQgaW4gcGFnaW5hIGNhdGFsb2d1bHVpIHRpcGFyaWJpbC4gVmV0aSBmaSBuZXZvaXQoYSkgc2EgYWN0dWFsaXphdGkgc2FibG9udWwgZHVtbmVhdm9hc3RyYSBwZW50cnUgcmVmbGVjdGFyZWEgYWNlc3RvciBhdHJpYnV0ZS4gIEdvbGl0aSBzYXUgc3VwcmFzY3JpZXRpIHBlc3RlIHVuIGF0cmlidXQgZXhpc3RlbnQgcGVudHJ1IHN0ZXJnZXJlYSBzYXUgaW5sb2N1aXJlYSBsdWkuJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3NvcnQnXSA9ICdPcmRpbmVhIGRlIHNvcnRhcmVhIGEgbGlzdGVpIGVsZW1lbnRlbG9yIGRpbiBwYWdpbmEgY2F0ZWdvcmllaSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlJ10gPSAnQ29wb3J0YW1lbnR1bCBpbXBsaWNpdCBkZSBhZmlzYXJlIGEgY2F0ZWdvcmllaSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2l0ZW1zX2FsbCddID0gJ0luY2x1ZGUgdG9hdGUgZWxlbWVudGVsZSBkaW4gYWNlYXN0YSBjYXRlZ29yaWUsIGluY2x1c2l2IHBlIGNlbGUgZGluIHN1Yi1jYXRlZ29yaWknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9pdGVtc19vbmUnXSA9ICdJbmNsdWRlIGltZWRpYXQgdG9hdGUgZWxlbWVudGVsZSBhY2VzdGVpIGNhdGVnb3JpaSwgZGFyIG51IHNpIHBlIGNlbGUgZGluIHN1Yi1jYXRlZ29yaWknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9jYXRlZ29yaWVzX2FsbCddID0gJ0luY2x1ZGUgdG9hdGUgY2F0ZWdvcmlpbGUgZGluIGFjZWFzdGEgY2F0ZWdvcmllLCBpbmNsdXNpdiBjYXRlZ29yaWlsZSBkaW4gc3ViLWNhdGVnb3JpaSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2NhdGVnb3JpZXNfb25lJ10gPSAnSW5jbHVkZSBpbWVkaWF0IHRvYXRlIGNhdGVnb3JpaWxlIGRpbiBhY2VhdGEgY2F0ZWdvcmllLCBkYXIgbnUgc2kgY2F0ZWdvcmlpbGUgZGluIHN1Yi1jYXRlZ29yaWknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9taXhlZF9hbGwnXSA9ICdJbmNsdWRlIHRvYXRlIGVsZW1lbnRlbGUgc2kgY2F0ZWdvcmlpbGUgZGluIGFjZWFzdGEgY2F0ZWdvcmllLCBpbmNsdXNpdiBlbGVtZW50ZWxlIHNpIHNpIGNhdGVnb3JpaWxlIGRpbiBzdWItY2F0ZWdvcmlpJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfbWl4ZWRfb25lJ10gPSAnSW5jbHVkZSBpbWVkaWF0IHRvYXRlIGVsZW1lbnRlbGUgc2kgY2F0ZWdvcmlpbGUgZGluIGFjZWFzdGEgY2F0ZWdvcmllLCBkYXIgbnUgc2kgZWxlbWVudGVsZS9jYXRlZ29yaWlsZSBkaW4gc3ViLWNhdGVnb3JpaSc7CiRsYW5nWyd0aXRsZV9zaG93X21pc3NpbmdfaW1hZ2VzJ10gPSAnQWZpc2VhemEgaW1hZ2luZWEgJnF1b3Q7Tm8gSW1hZ2UmcXVvdDsgcGVudHJ1IGltYWdpbmlsZSBsaXBzYSc7CiRsYW5nWyd0aXRsZV9zaG93X21pc3NpbmdfaW1hZ2VzX2xvbmcnXSA9ICdBZmlzZWF6YSBvIGltYWdpbmUgc3BlY2lhbGEgJnF1b3Q7Tm8gSW1hZ2UmcXVvdDsgZGFjYSBleGlzdGEgaW1hZ2luaSBsaXBzYSAoZm9sb3NpdG9yIGxhIGRlcGFuYXJlLiBBbHRmZWwgdmEgZmkgZm9sb3NpdGEgbyBpbWFnaW5hIHRyYW5zcGFyZW50YSBjdSB1biBzaW5ndXIgcGl4ZWwpLic7CiRsYW5nWyduYXR1cmFsX29yZGVyJ10gPSAnT3Jkb25hcmUgZHVwYSBuYXZpZ2FyZSc7CiRsYW5nWydhbHBoYV9vcmRlciddID0gJ09yZG9uYXJlIGFsZmFiZXRpY2EnOwokbGFuZ1snbWFuYWdlcHJlZnMnXSA9ICdHZXN0aW9uZWF6YSBwcmVmZXJpbnRlbGUnOwokbGFuZ1snbWFuYWdlYXR0cnMnXSA9ICdHZXN0aW9uZWF6YSBhdHJpYnV0ZWxlIGRlZmluaXRlIGRlIHV0aWxpemF0b3InOwokbGFuZ1snZ2xvYmFsb3BzJ10gPSAnT3BlcmF0aWkgY2F0YWxvZyBnbG9iYWwnOwokbGFuZ1snYWRkdGVtcGxhdGUnXSA9ICdBZGF1Z2Egc2FibG9uJzsKJGxhbmdbJ3JlaW1wb3J0dGVtcGxhdGVzJ10gPSAnUmUtaW1wb3J0YSBzdWItc2FibG9hbmVsZSBleGVtcGx1JzsKJGxhbmdbJ3JlaW1wb3J0ZWQnXSA9ICdTdWItc2FibG9hbmVsZSBleGVtcGx1IGF1IGZvc3QgaW1wb3J0YXRlLic7CiRsYW5nWyd0ZW1wbGF0ZXVwZGF0ZWQnXSA9ICdTYWJsb24gYWRhdWdhdC9hY3R1YWxpemF0Lic7CiRsYW5nWyd0ZW1wbGF0ZWRlbGV0ZWQnXSA9ICdTYWJsb24gc3RlcnMuJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ1ByZWZlcmludGUgYWN0dWFsaXphdGUuJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ1ZlcnNpdW5lYSAlcyBhIG1vZHVsdWx1aSBhIGZvc3QgaW5zdGFsYXRhLic7CiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHVsdWwgYSBmb3N0IGFjdHVhbGl6YXQgbGEgdmVyc2l1bmVhICVzLic7CiRsYW5nWydiYWRmaWxlJ10gPSAnRmlzaWVydWwgJnF1b3Q7JXMmcXVvdDsgbnUgZXN0ZSBpbnRyLXVuIGZvcm1hdCBhY2NlcHRhYmlsLic7CiRsYW5nWydiYWRpbWFnZSddID0gJ1Byb2JsZW1hIGxhIHVwbG9hZGFyZWEgJnF1b3Q7JXMmcXVvdDsgKHZlcmlmaWNhdGkgZGltZW5zaXVuZWEgZmlzaWVydWx1aSBzaS9zYXUgcGVybWlzaXVuaWxlKS4nOwokbGFuZ1snYmFkaW1hZ2Vmb3JtYXQnXSA9ICcmcXVvdDslcyZxdW90OyBudSBlc3RlIHZhbGlkLiBOdW1haSBmaXNpZXJlIGpwZWcgc3VudCBzdXBvcnRhdGUgaW4gYWNlc3QgbW9tZW50Lic7CiRsYW5nWyd1cGxvYWRlZCddID0gJ0Zpc2llcnVsICZxdW90OyVzJnF1b3Q7IGEgZm9zdCB1cGxvYWRhdCBwZW50cnUgb2JpZWN0dWwgJXMuJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWwgZGV6aW5zdGFsYXQuJzsKJGxhbmdbJ2F0dHJzdXBkYXRlZCddID0gJ0F0cmlidXRlIGFjdHVhbGl6YXRlLic7CiRsYW5nWydub2dsb2JhbGNoYW5nZSddID0gJ051IHNjaGltYmF0aSc7CiRsYW5nWydnbG9iYWxseXVwZGF0ZWQnXSA9ICdTY2hpbWJhcmlsZSBwcm9wYWdhdGUgbGEgbml2ZWwgZ2xvYmFsLic7CiRsYW5nWydlZGl0dGVtcGxhdGUnXSA9ICdFZGl0ZWF6YSBzYWJsb24nOwokbGFuZ1snc3VidGVtcGxhdGVzJ10gPSAnU3ViLXNhYmxvYW5lIGNhdGFsb2cnOwokbGFuZ1snbmV4dCddID0gJzomcmFxdW87JzsKJGxhbmdbJ3ByZXYnXSA9ICcmbGFxdW87Oic7CiRsYW5nWydlZGl0J10gPSAnRWRpdGVhemEnOwokbGFuZ1snZGVsZXRlJ10gPSAnU3RlcmdlJzsKJGxhbmdbJ25vdGVtcGxhdGVzJ10gPSAnTnUgZXhpc3RhIHN1Yi1zYWJsb2FuZSBpbnN0YWxhdGUhJzsKJGxhbmdbJ2hlbHB0ZXh0J10gPSAnPGgzPkNlIHJlYWxpemVhemEgYWNlc3QgbW9kdWw/PC9oMz4NCjxwPkFjZXN0IG1vZHVsIHZhIHBlcm1pdGUgc2EgY3JlYXRpIGNhdGFsb2FnZSBzYXUgcG9ydG9mb2xpaSBvbmxpbmUuIENhdGFsb2FnZWxlIGNvbnN0YSBkaW4gJnF1b3Q7RWxlbWVudGUgY2F0YWxvZyZxdW90OyBjYXJlIHBvdCBmaSBwcm9kdXNlLCBvcGVyZSBkZSBhcnRhLCBzYXUgYWx0ZWxlLCBzaSAmcXVvdDtDYXRlZ29yaWkgY2F0YWxvZyZxdW90OyBjYXJlIHBvdCBmaSBjYXRlZ29yaWkgZGUgZWxlbWVudGUgc2F1IGFsdGUgZGl2aXppdW5pIG5hdHVyYWxlIGFsZSBjYXRhbG9ndWx1aS48L3A+DQo8cD5DYXRlZ29yaWlsZSBwb3QgZmkgZGVmaW5pdGUgaWVyYXJoaWMgKGZvbG9zaW5kIGxpc3RhIGNvbnRpbnV0IGEgQ01TIFJlYWxpemF0IFVzb3IpLiBQYWdpbmlsZSBjYXRlZ29yaWkgcG90IGFmaXNhIGVsZW1lbnRlbGUgZGluIGNhdGVnb3JpZSBzaS9zYXUgc3ViLWNhdGVnb3JpaSwgb3B0aW9uYWwgcmVjdXJzaXYgc3ViLWNhdGVnb3JpaWxlLiBBY2VzdCBjb21wb3J0YW1lbnQgcG9hdGUgZmkgY29uZmlndXJhdCBsYSBuaXZlbCBkZSBjYXRlZ29yaWUuPC9QPg0KPHA+RXhpc3RhIGRlIGFzZW1lbmVhIHVuIGNhdGFsb2cgdGlwYXJpYmlsLCBjYXJlIHJlcHJlemludGEgaW50cmVhZ2EgY29sZWN0aWUgZGUgZWxlbWVudGUgZGluIGNhdGFsb2cgaW50ci1vIHNpbmd1cmEgcGFnaW5hIChkZW9jYW1kYXRhIGFjZXN0YSBlc3RlIHNsYWIgaW1wbGVtZW50YXQgc2kgc2UgdmEgaW5jYXJjYSBmb2FydGUgZ3JldSkuPC9wPg0KPHA+TW9kdWx1bCBhcmUgaW5jbHVzIHN1cG9ydHVsIHBlbnRydSAmcXVvdDtBbGlhc3VyaSBjb250aW51dCZxdW90OyAobW9kdWwgZGlzcG9uaWJpbCBsYSA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnRhbGlhc2VzLyI+dGhlIERldmVsb3BlciBGb3JnZTwvYT4pLCBjYXJlIHZhIHBlcm1pdGUgcGxhc2FyZWEgb3JpY2FydWkgZWxlbWVudCBkaW4gY2F0YWxvZyBpbiBjYXRlZ29yaWkgbXVsdGlwbGUuPC9wPg0KPGgzPkN1bSBpbCBmb2xvc2VzYzwvaDM+DQo8cD5BdHVuY2kgY2FuZCBpbnN0YWxhdGkgbW9kdWx1bCwgZWwgY3JlYXphIHRyZWkgbm9pIHRpcHVyaSBkZSBjb250aW51dDogRWxlbWVudCBDYXRhbG9nLCBDYXRlZ29yaWUgQ2F0YWxvZyBzaSBDYXRhbG9nIHRpcGFyaWJpbC4gQ2FuZCB2YSBhZmxhdGkgaW4gY2F0ZWdvcmlhIGRlIGFkbWluaXN0cmFyZSBhIHNpdGUtdWx1aSwgcHV0ZXRpIGFkYXVnYSBlbGVtZW50ZSBzaSBjYXRlZ29yaWkgY2F0YWxvZyBsYSBmZWwgY3VtIGF0aSBwcm9jZWRhIHNpIGN1IGFsdGUgdGlwdXJpIGRlIHBhZ2luaS4gU2VsZWN0YXRpIENvbnRpbnV0ID4gUGFnaW5pID4gQWRhdWdhIENvbnRpbnV0IHNpIGFwb2kgc2VsZWN0YXRpICZxdW90O0VsZW1lbnQgQ2F0YWxvZyZxdW90OyBzYXUgJnF1b3Q7Q2F0ZWdvcmllIENhdGFsb2cmcXVvdDsgZGluIGNhc3V0YSBleHBhbmRhYmlsYSBUaXAgY29udGludXQuPC9wPg0KPGg0PkVsZW1lbnRlIENhdGFsb2c8L2g0Pg0KPHA+QWRhdWdhcmVhIHVudWkgRWxlbWVudCBDYXRhbG9nIGVzdGUgc2ltaWxhcmEgY3UgY2VhIGEgdW5laSBwYWdpbmkgb2Jpc251aXRlIGluIHNpdGUtdWwgZHVtbmVhdm9hc3RyYS4gQ2FtcHVyaWxlIGRlIGRhdGUgcGVudHJ1IGVsZW1lbnQgbnUgc3VudCBpbnNhIGV4YWN0IGxhIGZlbC4gRGUgYXNlbWVuZWEgcHV0ZXRpIG9ic2VydmEgY2EgaW4gc2VjdGl1bmVhICZxdW90O0ltYWdpbmkmcXVvdDssIHB1dGV0aSBzZWxlY3RhIGluY2FyY2FyZWEgZGUgaW1hZ2luaSBtdWx0aXBsZSBwZW50cnUgZWxlbWVudC4gQ2FuZCBpbmNhcmNhdGkgaW1hZ2luaSwgc2lzdGVtdWwgbGUgdmEgZGltZW5zaW9uYSBpbiBtb2QgY29yZXNwdW56YXRvciBwZW50cnUgY2F0YWxvZywgdmEgY3JlYSBwaWN0b2dyYW1lIHBlbnRydSBmb2xvc2lyZWEgaW4gcGFnaW5hIGVsZW1lbnR1bHVpLCBhIHBhZ2luaWkgY2F0ZWdvcmllaSBzaSBhbHRlbGUuIFBlbnRydSBhY2Vhc3RhIHRyZWJ1aWUgc2EgYXZldGkgaW5zdGFsYXRhIGJpYmxpb3RlY2EgZGUgaW1hZ2luaSBHRCBzYXUgdW5hIHNpbWlsYXJhLiBEZW9jYW1kYXRhLCBkb2FyIGZvcm1hdHVsIGRlIGltYWdpbmkganBlZyBlc3RlIHN1cG9ydGF0LjwvcD4NCjxoND5DYXRlZ29yaWkgQ2F0YWxvZzwvaDQ+DQo8cD5PIENhdGVnb3JpZSBDYXRhbG9nIGVzdGUgZm9sb3NpdGEgcGVudHJ1IGEgdmEgb3JnYW5pemEgZWxlbWVudGVsZSBjYXRhbG9nLiBPZmVyYSBvIHBhZ2luYSBjYXJlIGxpc3RlYXphIGNvbnRpbnV0dWwgQ2F0YWxvZ3VsdWkuIFVuIGVsZW1lbnQgY2F0YWxvZyBlc3RlIGNvbnNpZGVyYXQgY2EgZmFjZSBwYXJ0ZSBkaW50ci1vIGNhdGVnb3JpZSBjYXRhbG9nIGRhY2EgZXN0ZSBzdWIgYWNlYXN0YSBpbiBpZXJhcmhpYSBzaXRlLXVsdWkuIFNpbWlsYXIsIGNhdGVnb3JpaWxlIHBvdCBpbmNsdWRlIGFsdGUgY2F0ZWdvcmlpLjwvcD4NCjxwPkNhdGVnb3JpaWxlIGNhdGFsb2cgYXUgdW4gbnVtYXIgZGUgc2V0YXJpIHBlbnRydSBhIGRldGVybWluYSBmZWx1bCBjdW0gdm9yIGZpIGFmaXNhdGUgZWxlbWVudGVsZSBzaSBjYXRlZ29yaWlsZSBwZSBjYXJlIGxlIGNvbnRpbjogZGFjYSB2YSB1aXRhdGkgaW4gc2VjdGl1bmVhICZxdW90O09wdGl1bmkmcXVvdDssIHB1dGV0aSBhbGVnZSBjYXRlIGVsZW1lbnRlIHNpL3NhdSBjYXRlZ29yaWkgdm9yIGZpIGFmaXNhdGUsIG9yZGluZWEgbG9yIGRlIGFmaXNhcmUsIGRhY2Egdm9yIGZpIGFmaXNhdGUgZG9hciBlbGVtZW50ZWxlIHNhdSBkb2FyIGNhdGVnb3JpaWxlIHNhdSBhbWJlbGUgc2kgY2F0ZSBuaXZlbGUgZGluIGllcmFyaGllIHZvciBmaSBhZmlzYXRlIGluIHBhZ2luYSBjYXRlZ29yaWVpLjwvcD4NCjxwPkRlIGV4ZW1wbHUsIGNvbnNpZGVyYXRpIHVybWF0b2FyZWEgc3RydWN0dXJhOjwvcD4NCjxvbD4NCgk8bGk+PGI+UGFsYXJpaTwvYj4NCgkJPG9sPg0KCQkJPGxpPjxiPkxhIG1vZGE8L2I+DQoJCQkgCTxvbD4NCgkJCSAJCTxsaT5QYWxhcmllIGN1IHBhbmE8L2xpPjxsaT5GZWRvcmEgPC9saT48bGk+U2FwY2EgZGUgYmFzZWJhbGw8L2xpPg0KCQkJIAk8L29sPg0KCQkJIDwvbGk+DQoJCSAJPGxpPjxiPlBhbGFyaWkgZGUgbHVjcnU8L2I+DQoJCSAgICAJPG9sPg0KCQkgICAgCQk8bGk+Q2FzY2EgZGUgcHJvdGVjdGllPC9saT48bGk+Q2FzY2EgcGVudHJ1IHNjdWZ1bmRhcmk8L2xpPg0KCQkgICAgCTwvb2w+DQoJCSAgICA8L2xpPg0KCQk8L29sPg0KCTwvbGk+DQo8L29sPg0KPHA+SW4gYWNlYXN0YSBkaWFncmFtYSwgaW50cmFyaWxlIGluZ3Jvc2F0ZSBzdW50IGNhdGVnb3JpaSBjYXRhbG9nIGlhciBjZWxlIG5laW5ncm9zYXRlIHN1bnQgZWxlbWVudGUgY2F0YWxvZy4gRGVwZW5kZW50IGRlIG1vZHVsIGluIGNhcmUgYXRpIGFsZXMgb3B0aXVuaWxlLCBwYWdpbmEgQ2F0ZWdvcmlhIFBhbGFyaWkgcG9hdGUgYWZpc2EgZG9hciBpbnRyYXJpbGUgcGVudHJ1IExhIG1vZGEgc2kgUGFsYXJpaSBkZSBsdWNydSBzYXUgcG9hdGUgYWZpc2EgaW50cmFyaWxlIHBlbnRydSBMYSBtb2RhLCBQYWxhcmlpIGRlIGx1Y3J1IHNpIHRvYXRlIHBhbGFyaWlsZSBsaXN0YXRlIHN1YiBlbGUuPC9wPg0KPHA+UHV0ZXRpIG9wdGEgcGVudHJ1IGFmaXNhcmVhIGVsZW1lbnRlbG9yIGluIG9yZGluZWEgJnF1b3Q7bmF0dXJhbGEmcXVvdDsgKGV4OiBvcmRpbmVhIGRlIGFmaXNhcmUgYSBlbGVtZW50ZWxvciBkaW4gaWVyYXJoaWEgY29udGludXQgQ01TKSwgc2F1IGluIG9yZGluZSBhbGZhYmV0aWNhLjwvUD4NCjxwPkRhY2EgYXZldGkgdW4gbnVtYXIgbWFyZSBkZSBlbGVtZW50ZSBpbnRyLW8gY2F0ZWdvcmllLCBwdXRldGkgc3RhYmlsaSBudW1hcnVsIG1heGltIGRlIGVsZW1lbnRlIGNlIHZvciBmaSBhZmlzYXRlIGludHItbyBwYWdpbmEgY2F0ZWdvcmllIHNpLCBwYWdpbmEgYXV0b21hdCB2YSBjcmVhIGxlZ2F0dXJpIHByaW4gY2FyZSBzYSBwdXRldGkgbmF2aWdhIGluIGNhZHJ1bCBsaXN0ZWkuPC9wPg0KPHA+RmllY2FyZSBwYWdpbmEgY2F0ZWdvcmllIHBvYXRlIGF2ZWEgc2V0YXJpIGRpZmVyaXRlIHBlbnRydSBvcmRpbmVhIGRlIHNvcnRhcmUsIG5pdmVsZWxlIGFmaXNhdGUgc2kgbnVtYXJ1bCBkZSBlbGVtZW50ZS4gUHV0ZXRpIHNldGEgdmFsb3JpbGUgaW1wbGljaXRlIHBlbnRydSBhY2VzdGUgdmFsb3JpIGluIEV4dGVuc2lpID4gQ2F0YWxvZyA+IEdldGlvbmVhemEgcHJlZmVyaW50ZS4gRGFjYSwgdWx0ZXJpb3IgZG9yaXRpIHNhIHNjaGltYmF0aSBhbnVtaXRlIHNldGFyaSBwZW50cnUgdG9hdGUgcGFnaW5pbGUgY2F0ZWdvcmlpLCBwdXRldGkgaW50cmEgaW4gRXh0ZW5zaWkgPiBDYXRhbG9nID4gT3B0aXVuaSBnbG9iYWwgY2F0YWxvZyBzaSBzYSBlZmVjdHVhdGkgYWNlbGUgc2NoaW1iYXJpLjwvcD4NCjxoND5JbWFnaW5pPC9oND4NCjxwPkNhdGFsb2d1bCB2YSBwZXJtaXRlIHNhIHNlbGVjdGF0aSBpbWFnaW5pIGN1IGRpbWVuc2l1bmkgZGlmZXJpdGUgcGVudHJ1IHBhZ2luaWxlIGVsZW1lbnQsIHBhZ2luaWxlIGNhdGVnb3JpaSBzaSBjYXRhbG9ndWwgdGlwYXJpYmlsLiBQdXRldGkgc2V0YSB2YWxvcmlsZSBsb3IgaW1wbGljaXRlIGluIEV4dGVuc2lpID4gQ2F0YWxvZyA+IEdlc3Rpb25lYXphIHByZWZlcmludGUuPC9wPg0KPHA+Q2FuZCBpbmNhcmNhdGkgaW1hZ2luaWxlLCBvcmlnaW5hbGVsZSBzZSB2b3Igc3RvY2EuIENhbmQgY2luZXZhIHZpeml0ZWF6YSBvIHBhZ2luYSwgaW1hZ2luaWxlIGRlIGRpbWVuc2l1bmkgcmVkdXNlIHN1bnQgYWNjZXNhdGUgcHJpbnRyLW8gbGVnYXR1cmEgVVJMIHNwZWNpYWxhLCBjYXJlIHZhIHJlZGlyZWN0aW9uYSBicm93c2VyLXVsIHV0aWxpemF0b3J1bHVpIGxhIGltYWdpbmVhIHNjYWxhdGEsIGRhY2EgZXhpc3RhIHNpIG8gdmEgY3JlYSBkYWNhIGFjZWFzdGEgbnUgZXhpc3RhLiBQcmluIGFjZWFzdGEgYXZldGkgcG9zaWJpbGl0YXRlYSBzYSBzY2hpbWJhdGkgZGltZW5zaXVuaWxlIGltYWdpbmlsb3IgZmFyYSBhIG1haSBmaSBuZWNlc2FyIHNhIGluY2FyY2F0aSBzYXUgc2Egc2NhbGF0aSB0b2F0ZSBpbWFnaW5pbGUuPC9wPg0KPHA+QWNlc3QgY29kIGRlIHJlc2NhbGFyZSBhIGltYWdpbmlsb3IgbmVjZXNpdGEgc2EgYXZldGkgaW5zdGFsYXQgc2kgY29uZmlndXJhdCBmaWUgSW1hZ2VNYWdpY2sgZmllIEdELjwvcD4NCjxoMz5MaXN0YSBmYWNpbGl0YXRpPC9oMz4NCjxwPkluY2VwYW5kIGN1IHZlcnNpdW5lYSAwLjQsIHB1dGV0aSBhdmVhICZxdW90O2xpc3RhIGZhY2lsaXRhdGkmcXVvdDsgY2FyZSBjb250aW5lIDxpPm48L2k+IGVsZW1lbnRlbGUgY2VsIG1haSByZWNlbnQgYWRhdWdhdGUsIHNhdSBvIGNvbGVjdGllIGRlIDxpPms8L2k+IGVsZW1lbnRlIGFsZWF0b2FyZSBkaW4gY2F0YWxvZy48L3A+DQo8aDQ+TGlzdGEgZmFjaWxpdGF0aSAmcXVvdDtBbGwmcXVvdDsgPC9oND4NCjxwPlBlbnRydSBhIG9idGluZSBvIGxpc3RhIGEgdHV0dXJvciBlbGVtZW50ZWxvciBkaW4gY2F0YWxvZyAob3B0aW9uYWwgc3ViIG8gcGFydGUgc3BlY2lmaWNhIGRpbiBpZXJhcmhpZSkgcGVudHJ1IGEgZmkgcHJvY2VzYXRlIHByaW4gc2FibG9uLCBwdXRldGkgZm9sb3NpIGxpc3RhIGZhY2lsaXRhdGkgJnF1b3Q7QWxsJnF1b3Q7LjwvcD4NCjxwPlNpbnRheGEgcGVudHJ1IG8gbGlzdGEgJnF1b3Q7YWxsJnF1b3Q7IGVzdGU6PC9wPg0KPHA+e2Ntc19tb2R1bGUgbW9kdWxlPSYjMDM5O0NhdGFsb2dlciYjMDM5OyBhY3Rpb249JiMwMzk7YWxsJiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTt9LCB1bmRlIHN1Yl90ZW1wbGF0ZSBlc3RlIHNhYmxvbnVsIGZvbG9zaXQgcGVudHJ1IGdlbmVyYXJlYSBsaXN0ZWkuDQpFeGlzdGEgdW4gcGFyYW1ldHJ1IG9wdGlvbmFsLCBhbGlhcz0mIzAzOTtwYWdlX2FsaWFzJiMwMzk7LCB1bmRlIHBhZ2VfYWxpYXMgaW5kaWNhIHZhcmZ1bCBhcmJvcmVsdWkgKGV4OiBvIGxvY2F0aWUgaW4gbWVuaXVsIGllcmFyaGllLCB0aXBpYyBvIHBhZ2luYSBjYXRlZ29yaWUpIHVuZGUgc2Ugdm9yIGNhdXRhIGVsZW1lbnRlbGUgbm9pLiBPIHZhbG9hcmUgc3BlY2lhbGEgcGVudHJ1ICZxdW90O3BhZ2VfYWxpYXMmcXVvdDsgZXN0ZSAmcXVvdDsvJnF1b3Q7LCBjYXJlIGluc2VhbW5hIHBvcm5pcmVhIGRlIGxhIHJhZGFjaW5hLjwvcD4NCjxwPkVzdGUgdXRpbGEgcGVudHJ1IG9wZXJhdGlpIHZhcmlhdGUgYXN1cHJhIGNhdGFsb2d1bHVpLiBEZSBleGVtcGx1LCBwZW50cnUgYSBvYnRpbmUgbyBsaXN0YSBhIHR1dHVyb3IgY2F0ZWdvcmlpbG9yIChzaSBhIHJlYWxpemEgY2V2YSBjdSBlbGUpLCBwdXRldGkgZm9sb3NpIGV0aWNoZXRhIHtjbXNfbW9kdWxlIG1vZHVsZT0mIzAzOTtDYXRhbG9nZXImIzAzOTsgYWN0aW9uPSYjMDM5O2FsbCYjMDM5OyBzdWJfdGVtcGxhdGU9JiMwMzk7bXlfc3ViX3RlbXBsYXRlJiMwMzk7IGFsaWFzPSYjMDM5Oy8mIzAzOTsgcmVjdXJzZT0mIzAzOTtjYXRlZ29yaWVzX2FsbCYjMDM5O30uIFNhYmxvbnVsIGR1bW5lYXZvYXN0cmEgdmEgcHV0ZWEgYXR1bmNpIHNhIHBsYXNlemUgYWNlc3RlIGNhdGVnb3JpaSBpbnRyLXVuIG1lbml1IGNvbnRleHR1YWwgY2FyZSB2YSByZWRpcmVjdGF0IGluIGFjZWEgcGFnaW5hIGEgY2F0ZWdvcmllaSwgZGUgZXhlbXBsdTo8L3A+DQo8cHJlPg0KPHNlbGVjdCBuYW1lPSZxdW90O2ZvbyZxdW90OyBvbmNoYW5nZT0mcXVvdDtkb2N1bWVudC5sb2NhdGlvbj10aGlzLm9wdGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4XS52YWx1ZTsmcXVvdDs+DQo8b3B0aW9uIHZhbHVlPSZxdW90OyZxdW90Oz5BbGVnZXRpIG8gZGVzdGluYXRpZTwvb3B0aW9uPg0Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT10aGlzb25lfQ0KICAgPG9wdGlvbiB2YWx1ZT0mcXVvdDt7JHRoaXNvbmUubGlua30mcXVvdDs+eyR0aGlzb25lLnRpdGxlfTwvb3B0aW9uPg0Key9mb3JlYWNofQ0KPC9zZWxlY3Q+DQo8L3ByZT4NCjxwPkRhY2EgZG9yaXRpIGRvYXIgc2EgYWZpc2F0aSBjYXRlZ29yaWlsZSBkaW4gbml2ZWx1bCBjZWwgbWFpIHN1cyBkaW4gaWVyYXJoaWUsIGlubG9jdWl0aSByZWN1cnNlPSYjMDM5O2NhdGVnb3JpZXNfYWxsJiMwMzk7IGN1DQpyZWN1cnNlPSYjMDM5O2NhdGVnb3JpZXNfb25lJiMwMzk7LiBTYXUgZGFjYSBkb3JpdGkgdG9hdGUgZWxlbWVudGVsZSBkaW4gY2F0YWxvZyBpbiBsb2MgZGUgY2F0ZWdvcmlpLCBwdXRldGkgZm9sb3NpIG8gZXRpY2hldGEgY2EgYWNlYXN0YToNCntjbXNfbW9kdWxlIG1vZHVsZT0mIzAzOTtDYXRhbG9nZXImIzAzOTsgYWN0aW9uPSYjMDM5O2FsbCYjMDM5OyBzdWJfdGVtcGxhdGU9JiMwMzk7bXlfc3ViX3RlbXBsYXRlJiMwMzk7IGFsaWFzPSYjMDM5Oy8mIzAzOTsgcmVjdXJzZT0mIzAzOTtpdGVtc19hbGwmIzAzOTt9DQo8cD5TaW1pbGFyLCBwdXRldGkgYWxlZ2Ugc2EgbGlzdGF0aSBkb2FyIGNhdGVnb3JpaWxlIGRpbiBwYWdpbmEgY3VyZW50YSAocHJpbiBvbWl0ZXJlYSAmcXVvdDthbGlhcz0mIzAzOTsvJiMwMzk7JnF1b3Q7KS4gQ29tYmluYXRpaWxlIHN1bnQgcHJhY3RpYyBuZWxpbWl0YXRlITwvcD4NCjxwPlRvYXRlIHZhbG9yaWxlIHN1cG9ydGF0ZSBkZSByZWN1cnNlIHN1bnQ6PHVsPg0KPGxpPml0ZW1zX29uZSAtIEVsZW1lbnRlIGNhdGFsb2csIG51IG1haSBtdWx0IGRlIHVuIG5pdmVsIHN1YiBuaXZlbHVsIHBhZ2luaWkgY3VyZW50ZSAoc2F1IHB1bmN0IGFsaWFzKTwvbGk+DQo8bGk+aXRlbXNfYWxsIC0gRWxlbWVudGUgY2F0YWxvZywgbGEgb3JpY2Ugbml2ZWwgaW5mZXJpb3IgcGFnaW5paSBjdXJlbnRlIChzYXUgcHVuY3QgYWxpYXMpPC9saT4NCjxsaT5jYXRlZ29yaWVzX29uZSAtIENhdGVnb3JpaSwgbnUgbWFpIG11bHQgZGUgdW4gbml2ZWwgbWFpIGpvcyBkZSBjZWwgYWwgcGFnaW5paSBjdXJlbnRlIChzYXUgcHVuY3QgYWxpYXMpPC9saT4NCjxsaT5jYXRlZ29yaWVzX2FsbCAtIENhdGVnb3JpaSwgbGEgb3JpY2Ugbml2ZWwgaW5mZXJpb3IgcGFnaW5paSBjdXJlbnRlIChzYXUgcHVuY3QgYWxpYXMpPC9saT4NCjxsaT5taXhlZF9vbmUgLSBFbGVtZW50ZSBzaSBjYXRlZ29yaWkgY2F0YWxvZywgbnUgbWFpIG11bHQgZGUgdW4gbml2ZWwgbWFpIGpvcyBkZSBjZWwgYWwgcGFnaW5paSBjdXJlbnRlIChzYXUgcHVuY3QgYWxpYXMpPC9saT4NCjxsaT5taXhlZF9hbGwgLSBFbGVtZW50ZSBzaSBjYXRlZ29yaWkgY2F0YWxvZywgbGEgb3JpY2Ugbml2ZWwgaW5mZXJpb3IgcGFnaW5paSBjdXJlbnRlIChzYXUgcHVuY3QgYWxpYXMpPC9saT4NCjwvdWw+DQo8L3A+DQo8aDQ+RmFjaWxpdGF0ZWEgTGlzdGEgY2VsIG1haSByZWNlbnQgYWRhdWdhdGU8L2g0Pg0KPHA+UHJpbiBmb2xvc2lyZWEgbGlzdGVpICZxdW90O2NlbCBtYWkgcmVjZW50IGFkYXVnYXRlJnF1b3Q7IHZldGkgb2J0aW5lIGFmaXNhcmVhIGVsZW1lbnRlbG9yIGNhdGFsb2cgY2VsIG1haSByZWNlbnQgYWRhdWdhdGUgc3ViIG8gbG9jYXRpZSBzcGVjaWZpY2F0YSBkaW4gaWVyYXJoaWUuPC9wPg0KPHA+U2ludGF4YSBwZW50cnUgbGlzdGEgJnF1b3Q7Y2VsIG1haSByZWNlbnQgYWRhdWdhdGUmcXVvdDsgZXN0ZSBkZSBmb3JtYTo8L3A+DQo8cD57Y21zX21vZHVsZSBtb2R1bGU9JiMwMzk7Q2F0YWxvZ2VyJiMwMzk7IGFjdGlvbj0mIzAzOTtyZWNlbnQmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5O30sIHVuZGUgc3ViX3RlbXBsYXRlIGVzdGUgc2FibG9udWwgZm9sb3NpdCBwZW50cnUgZ2VuZXJhcmVhIGxpc3RlaS4gRXhpc3RhIGRvaSBwYXJhbWV0cmkgb3B0aW9uYWxpOiBjb3VudD0mIzAzOTszJiMwMzk7IGFsaWFzPSYjMDM5O3BhZ2VfYWxpYXMmIzAzOTssIHVuZGUgY291bnQgcmVwcmV6aW50YSBudW1hcnVsIGVsZW1lbnRlbG9yIGluY2x1c2Ugc2kgcGFnZV9hbGlhcyBpbmRpY2EgdmFyZnVsIGFyYm9yZWx1aSAoZXg6IG8gbG9jYXRpZSBpbiBtZW5pdWwgaWVyYXJoaWUsIHRpcGljIG8gcGFnaW5hIGNhdGVnb3JpZSkgdW5kZSB2b3IgZmkgY2F1dGF0ZSBlbGVtZW50ZWxlIG5vaS4gTyB2YWxvYXJlIHNwZWNpYWxhIHBlbnRydSAmcXVvdDtwYWdlX2FsaWFzJnF1b3Q7IGVzdGUgJnF1b3Q7LyZxdW90OyBzaSBpbnNlYW1uYSBmb2xvc2lyZWEgPGk+dHV0dXJvcjwvaT4gcGFnaW5pbG9yIGRpbiBzaXRlLjwvcD4NCjxoND5GYWNpbGl0YXRlYSBMaXN0YSBlbGVtZW50ZSBhbGVhdG9hcmU8L2g0Pg0KPHA+U2ludGF4YSBwZW50cnUgbyBsaXN0YSAmcXVvdDthbGVhdG9hcmUmcXVvdDsgZXN0ZSBkZSBmb3JtYTo8L3A+DQo8cD57Y21zX21vZHVsZSBtb2R1bGU9JiMwMzk7Q2F0YWxvZ2VyJiMwMzk7IGFjdGlvbj0mIzAzOTtyYW5kb20mIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5O30sIHVuZGUgc3ViX3RlbXBsYXRlIGVzdGUgc2FibG9udWwgZm9sb3NpdCBwZW50cnUgZ2VuZXJhcmVhIGxpc3RlaS4gRXhpc3RhIGRvaSBwYXJhbWV0cmkgb3B0aW9uYWxpOiBjb3VudD0mIzAzOTszJiMwMzk7IGFsaWFzPSYjMDM5O3BhZ2VfYWxpYXMmIzAzOTssIHVuZGUgY291bnQgcmVwcmV6aW50YSBudW1hcnVsIGVsZW1lbnRlbG9yIGluY2x1c2Ugc2kgcGFnZV9hbGlhcyBpbmRpY2EgdmFyZnVsIGFyYm9yZWx1aSAoZXg6IG8gbG9jYXRpZSBpbiBtZW5pdWwgaWVyYXJoaWUsIHRpcGljIG8gcGFnaW5hIGNhdGVnb3JpZSkgdW5kZSB2b3IgZmkgY2F1dGF0ZSBlbGVtZW50ZWxlIG5vaS4gTyB2YWxvYXJlIHNwZWNpYWxhIHBlbnRydSAmcXVvdDtwYWdlX2FsaWFzJnF1b3Q7IGVzdGUgJnF1b3Q7LyZxdW90OyBzaSBpbnNlYW1uYSBmb2xvc2lyZWEgPGk+dHV0dXJvcjwvaT4gcGFnaW5pbG9yIGRpbiBzaXRlLjwvcD4NCjxoMz5QYXJ0aWN1bGFyaXphcmUgc2kgc3ViaWVjdGUgYXZhbnNhdGU8L2gzPg0KPGg0PkF0cmlidXRlIGVsZW1lbnQgY2F0YWxvZzwvaDQ+DQo8cD5BdHJpYnV0ZWxlIGltcGxpY2l0ZSBhbGUgZWxlbWVudHVsdWkgc3VudCB0aXBpY2UgcGVudHJ1IHVuIGNhdGFsb2cgZGUgcHJvZHVzZSBkZSBhcnRhLCBkYXIgZGFjYSBtZXJnZWkgaW4gRXh0ZW5zaWkgPiBDYXRhbG9nID4gR2VzdGlvbmVhemEgYXRyaWJ1dGUgZGVmaW5pdGUgZGUgdXRpbGl6YXRvciwgcHV0ZXRpIG1vZGlmaWNhIGF0cmlidXRlbGUuIEVzdGUgcmVjb21hbmRhdCBjYSBzYSBkZWZpbml0aSBhdHJpYnV0ZWxlIGluYWludGUgZGUgaW50cm9kdWNlcmVhIGVsZW1lbnRlbG9yIGNhdGFsb2cuPC9wPg0KPHA+RGUgbWVudGlvbmF0IGNhIGF0cmlidXRlbGUgcGUgY2FyZSBsZSBwdXRldGkgZGVmaW5pIHBvdCBuZWNlc2l0YSBhZGF1Z2FyZWEgbG9yIGluIHNhYmxvbnVsIHBlIGNhcmUtbCBmb2xvc2l0aSBwZW50cnUgYWZpc2FyZWEgZWxlbWVudGVsb3IgY2F0YWxvZyAtLSB2ZXppIG1haSBqb3MgU2FibG9hbmUgcGFydGljdWxhcml6YXRlLjwvcD4NCjxoND5BdHJpYnV0ZSBjYXRlZ29yaWkgY2F0YWxvZzwvaDQ+DQo8cD5TaW1pbGFyLCBwdXRldGkgZGVmaW5pdCBhdHJpYnV0ZSBwZW50cnUgY2F0ZWdvcmlpLiBEaW4gbm91LCBhdHJpYnV0ZWxlIHBlIGNhcmUgbGUgZGVmaW5pdGkgcG90IG5lY2VzaXRhIGFkYXVnYXJlYSBsb3IgbGEgc2FibG9udWwgcGUgY2FyZS1sIGZvbG9zaXRpIHBlbnRydSBhZmlzYXJlYSBjYXRlZ29yaWlsb3IgY2F0YWxvZ3VsdWkgLS0gdmV6aSBtYWkgam9zIFNhYmxvYW5lIHBhcnRpY3VsYXJpemF0ZS48L3A+DQo8aDQ+QXRyaWJ1dGUgY2F0YWxvZyB0aXBhcmliaWw8L2g0Pg0KPHA+TGEgZmVsLCBwdXRldGkgZGVmaW5pIGF0cmlidXRlIHBlbnRydSBjYXRhbG9ndWwgdGlwYXJpYmlsLiBEaW4gbm91LCBhdHJpYnV0ZWxlIHBlIGNhcmUgbGUgZGVmaW5pdGkgcG90IG5lY2VzaXRhIGFkYXVnYXJlYSBsb3IgbGEgc2FibG9udWwgcGUgY2FyZS1sIGZvbG9zaXRpIHBlbnRydSBhZmlzYXJlYSBjYXRlZ29yaWlsb3IgY2F0YWxvZ3VsdWkgLS0gdmV6aSBtYWkgam9zIFNhYmxvYW5lIHBhcnRpY3VsYXJpemF0ZS48L3A+DQo8aDQ+U2FibG9hbmUgcGFydGljdWxhcml6YXRlPC9oND4NCjxwPkRhY2EgZG9yaXRpIHNhIHZhIGp1Y2F0aSBjdSBzYWJsb2FuZSBTbWFydHksIHB1dGV0aSBzY2hpbWJhIG9yZ2FuaXphcmVhIG9yaWNhcmVpIHBhZ2luaSBnZW5lcmF0ZSBkZSBjYXRyZSBDYXRhbG9nLiBBY2Vhc3RhIGFyIHB1dGVhIGZhY2UgZmVyaWNpdGkgYW51bWl0aSBkZXp2b2x0YXRvcmkgY2hpYXIgZGFjYSBpbmVmaWNpZW50YSByZXN0dWx1aSBkZSBjb2QgbnUuIEV4aXN0YSBwYXRydSB0aXB1cmkgZGUgc2FibG9hbmU6IHVuIHRpcCBwZW50cnUgRWxlbWVudGUgY2F0YWxvZywgdW4gdGlwIHBlbnRydSBDYXRlZ29yaWkgY2F0YWxvZywgdW4gdGlwIHBlbnRydSBDYXRhbG9nIHRpcGFyaWJpbCBzaSB1bnVsIHBlbnRydSBsaXN0ZSAmcXVvdDtGYWNpbGl0YXRpJnF1b3Q7IGN1bSBzdW50IGNlbGUgbWFpIHJlY2VudCBhZGF1Z2F0ZSBlbGVtZW50ZSBzYXUgc2VsZWN0aWkgYWxlYXRvYXJlLjwvcD4NCjxwPkNhbmQgZWRpdGF0aSB1biBzYWJsb24sIGVjcmFudWwgZGUgYWRtaW5pc3RyYXJlIHZhIGFmaXNhIGxpc3RhIGRlIGV0aWNoZXRlIFNtYXJ0eSBkaXNwb25pYmlsZSBwZW50cnUgYWNlbCB0aXAgZGUgc2FibG9uLiBBY2Vhc3RhIHZhIGF2ZWEgbG9jIGRlIGluZGF0YSBjZSBtb2R1bHVsIHN0aWUgY2UgdGlwIGRlIHNhYmxvbiBlZGl0YXRpIHNpIGF0dW5jaSBjYW5kIGluaXRpYWwgY3JlYXRpIHNhYmxvbnVsLCB2YSBhZmlzYSB0b2F0ZSBldGljaGV0ZWxlIFNtYXJ0eSBwZSBjYXJlIGxlIGN1bm9hc3RlLCBmaWluZCBhcGxpY2FiaWxlIGRvYXIgbyBwYXJ0ZS48L3A+DQo8aDQ+RXRpY2hldGUgU21hcnR5IGluIGF0cmlidXRlPC9oND4NCjxwPlVuZW9yaSB2ZXRpIGRvcmkgY2EgZGVzY3JpZXJlYSBlbGVtZW50ZWxvciBkdW1uZWF2b2FzdHJhIHNhIGluY2x1ZGEgZXRpY2hldGUgU21hcnR5IChleDogY21zX3NlbGZsaW5rKS4gUGVudHJ1IGEgZmFjZSBhY2VzdCBsdWNydSBwb3NpYmlsLCB2YSB0cmVidWkgc2EgYWN0dWFsaXphdGkgc2FibG9udWwgZHVtbmVhdm9hc3RyYS4gUGVudHJ1IGF0cmlidXRlbGUgdW5kZSBkb3JpdGkgY2EgZXRpY2hldGVsZSBTbWFydHkgc2EgZmllIGFjdGl2ZSwgdmEgdHJlYnVpIHNhIGluY3VpYmF0aSBldmFsdWFyaWxlIFNtYXJ0eSBpbiBzYWJsb251bCBkdW1uZWF2b2FzdHJhLiBEZSBleGVtcGx1OjwvcD4NCjxwcmU+DQp7ZXZhbCB2YXI9JGF0dHJsaXN0W2F0XS5rZXl9DQo8L3ByZT4NCjxwPmRldmluZTo8L3A+DQo8cHJlPg0Ke2V2YWwgdmFyPSRlbnRyeS0+aW5wdXQgYXNzaWduPXRoaXNBdHRyfXtldmFsIHZhcj0kdGhpc0F0dHJ9DQo8L3ByZT4NCjxwPlVyYXQ/IERhLCBkYXIgZnVuY3Rpb25lYXphLjwvcD4NCjxoMz5TdXBvcnQ8L2gzPg0KPHA+QWNlc3QgbW9kdWwgbnUgaW5jbHVkZSBzdXBvcnQgY29tZXJjaWFsLiBUb3R1c2ksIGV4aXN0YSB1biBudW1hciBkZSByZXN1cnNlIGRpc3BvbmliaWxlIHBlbnRydSBhIHZhIGZpIGRlIGFqdXRvcjo8L3A+DQo8dWw+DQo8bGk+UGVudHJ1IHVsdGltYSB2ZXJzaXVuZSBhIGFjZXN0dWkgbW9kdWwsIEZBUS11cmksIHNhdSBwZW50cnUgYSByYXBvcnRhIHVuIEJ1ZywgdmEgcm9nIHNhIHZpeml0YXRpIHBhZ2luYSBDTVMgUmVhbGl6YXQgVXNvciAgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyI+RGV2ZWxvcGVyIEZvcmdlPC9hPi48L2xpPg0KPGxpPlBlbnRydSBhIG9idGluZSBzdXBvcnQgY29tZXJjaWFsLCB0cmltaXRldGkgdmEgcm9nIHVuIGUtbWFpbCBhdXRvcnVsdWkgbGEgPGEgaHJlZj0ibWFpbHRvOnNqZ0BjbXNtb2R1bGVzLmNvbSI+PHNqZ0BjbXNtb2R1bGVzLmNvbT48L2E+LjwvbGk+DQo8bGk+RGlzY3V0aWkgcmVmZXJpdG9hcmUgbGEgYWNlc3QgbW9kdWwgcG90IGZpIGdhc2l0ZSBsYSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+DQo8bGk+QXV0b3J1bCBwb2F0ZSBmaSBhZGVzZWEgZ2FzaXQgbGEgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+DQo8bGk+SW4gZmluYWwsIHB1dGV0aSBhdmVhIHNhbnNhIGRlIHJldXNpdGEgY29udGFjdGFuZCBhdXRvcnVsIHByaW50ci11biBlLW1haWwgc2kgY2VyYW5kIGFqdXRvciBncmF0dWl0LjwvbGk+DQo8L3VsPg0KPHA+UmVmZXJpdG9yIGxhIEdQTCwgYWNlc3Qgc29mdCBlc3RlIG9mZXJpdCBhc2EgY3VtIGVzdGUuIFZhIHJvZyBzYSBjaXRpdGkgdGV4dHVsIGxpY2VudGVpIHBlbnRydSBpbnRyZWFnYSBkaXNjdWxwYXJlLjwvcD4NCjxoMz5EcmVwdCBkZSBjb3BpZXJlIHNpIGxpY2VudGE8L2gzPg0KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA2LCBTYW11ZWwgR29sZHN0ZWluIDxhIGhyZWY9Im1haWx0bzpzamdAY21zbW9kdWxlcy5jb20iPjxzamdAY21zbW9kdWxlcy5jb20+PC9hPi4gVG9hdGUgZHJlcHR1cmlsZSBzdW50IHJlemVydmF0ZS48L3A+DQo8cD5BY2VzdCBtb2R1bCBhIGZvc3QgbGl2cmF0IHN1YiA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkxpY2VudGEgcHVibGljYSBHTlU8L2E+LiBUcmVidWllIHNhIGZpdGkgZGUgYWNvcmQgY3UgYWNlYXN0YSBpbmFpbnRlIGRlIGZvbG9zaXJlYSBtb2R1bHVsdWkuPC9wPic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+DQo8bGk+VmVyc2lvbiAwLjUuNSAtIDIwIEp1bmUgMjAwNy4gRml4IGZvciBDb250ZW50IEFsaWFzIHN1cHBvcnQgLSByZXF1aXJlcyBDb250ZW50IEFsaWFzIHYuIDAuNi4xLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjUuNCAtIDE5IEp1bmUgMjAwNy4gQWRkZWQgJnF1b3Q7YWxsJnF1b3Q7IGZlYXR1cmUgbGlzdC48L2xpPg0KPGxpPlZlcnNpb24gMC41LjMgLSAyMSBTZXB0ZW1iZXIgMjAwNi4gQWRkZWQgbGlua3MgdG8gc291cmNlIChub24tcmVzY2FsZWQpIGltYWdlcywgYW5kIGFkZGVkIGltYWdlIGRlbGV0ZSBmdW5jdGlvbmFsaXR5LjwvbGk+DQo8bGk+VmVyc2lvbiAwLjUuMiAtIDE3IFNlcHRlbWJlciAyMDA2LiBSZW1vdmVkIGRlYnVnIG91dHB1dCwgcmV2aXNlZCBpbWFnZSBzeXN0ZW0gKGZpeGVkIGJ1Z3MpLiBDYWNoaW5nIGJ1ZyBzZWVtcyB0byByZW1haW4uPC9saT4NCjxsaT5WZXJzaW9uIDAuNS4xIC0gMjQgQXVndXN0IDIwMDYuIChjYWxndXkxMDAwKSwgVXBwZWQgTWluaW11bUNNU1ZlcnNpb24gdG8gMS4wLXN2biwgYW5kIG1vcmUgMS4wIGNoYW5nZXMgd2VyZSBhZGRlZCAocmVtb3ZlZCBzdGF0aWMgbWV0aG9kcyk8L2xpPg0KPGxpPlZlcnNpb24gMC41IC0gMTYgQXVndXN0IDIwMDYuIEFzc29ydGVkIGNvbnRyaWJ1dGVkIGJ1ZyBmaXhlcyBmb3IgQ01TIE1TIDEuMCwgIG5ldyBvcHRpb25zIGZvciBpbWFnZXMuPC9saT4NCjxsaT5WZXJzaW9uIDAuNC4yIC0gMjggTWF5IDIwMDYuIEJ1ZyBmaXggZm9yIGF0dHJpYnV0ZXMgaW4gY2F0ZWdvcnkgcGFnZXMuIEFkZGVkICZxdW90Oy8mcXVvdDsgcGFnZV9hbGlhcyBmb3IgZmVhdHVyZSBsaXN0cy48L2xpPg0KPGxpPlZlcnNpb24gMC40LjEgLSAyMyBNYXkgMjAwNi4gQnVnIGZpeCB0byBtYWtlIHdvcmsgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiBDTVMgTVMuPC9saT4NCjxsaT5WZXJzaW9uIDAuNCAtIDIyIE1heSAyMDA2LiBCdWcgZml4ZXMsIEZlYXR1cmUgTGlzdHMuPC9saT4NCjxsaT5WZXJzaW9uIDAuMyAtICh1bnJlbGVhc2VkLCBwdWJsaXNoZWQgZnJvbSBzdm4pPC9saT4NCjxsaT5WZXJzaW9uIDAuMiAtIDIzIE1hcmNoIDIwMDYuIE51bWVyb3VzIGJ1ZyBmaXhlcy4gUGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzLiBNZW1vcnkgZm9vdHByaW50IG9wdGltaXphdGlvbnMuIE5vdyB1c2VzIHRoZSBDTVMgMC4xMiBNb2R1bGUgQVBJLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjEuNSAtIDE3IE5vdmVtYmVyIDIwMDUuIEluaXRpYWwgUmVsZWFzZS4gSmVzdXMsIHRoYXQgdG9vayBhIGxvbmcgdGltZS48L2xpPg0KPGxpPlZlcnNpb24gMC4xIC0gMTkgTWFyY2ggMjAwNS4gUHJvamVjdCBJbml0aWF0aW9uLjwvbGk+DQo8L3VsPic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0FzaWd1cmF0aS12YSBjYSBhdGkgc2V0YXQgcGVybWlzaXVuaSAmcXVvdDtNb2RpZnkgQ2F0YWxvZyBTZXR0aW5ncyZxdW90OyBwZW50cnUgdXRpbGl6YXRvcmlpIGNhcmUgdm9yIGFkbWluaXN0cmEgY2F0YWxvZ3VsLic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjE0NzcwMDk2NTYuMTI3MjkxMzc5OC4xMjcyOTEzNzk4LjEyNzQ2MDM3NDUuMic7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyNzQ2MDM3NDYuMi4zLnV0bWNzcj1nb29nbGV8dXRtY2NuPShvcmdhbmljKXx1dG1jbWQ9b3JnYW5pY3x1dG1jdHI9Y21zIG1zJzsKJGxhbmdbJ3FjYSddID0gJ1AwLTE3MzkzNDk5NzMtMTI3MjkxMzc5ODY4MSc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzLjIuMTAuMTI3NDYwMzc0NSc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/ru_RU.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ25hbWVpbWFnZXMnXSA9ICfQmNC30L7QsdGA0LDQttC10L3QuNGPJzsKJGxhbmdbJ2RlbGV0ZWltYWdlJ10gPSAn0KPQtNCw0LvQuNGC0Ywg0LjQt9C+0LHRgNCw0LbQtdC90LjQtSc7CiRsYW5nWydPd25lciddID0gJ9CS0LvQsNC00LXQu9C10YYnOwokbGFuZ1snQ2F0YWxvZ0l0ZW0nXSA9ICfQmtC70LDRgdGB0LjRhNC40LrQsNGC0L7RgCDRjdC70LXQvNC10L3RgtC+0LInOwokbGFuZ1snbmFtZXBhZ2UnXSA9ICfQodGC0YDQsNC90LjRhtCwJzsKJGxhbmdbJ1Blcm1pc3Npb25zJ10gPSAn0KDQsNC30YDQtdGI0LXQvdC40Y8nOwokbGFuZ1snU3ViJ10gPSAn0J/QvtC00LrQsNGC0LXQs9C+0YDQuNC4IC0gJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtX3NvcnRfb3JkZXIyJ10gPSAn0J/QvtGA0Y/QtNC+0Log0YHQvtGA0YLQuNGA0L7QstC60Lgg0Y3Qu9C10LzQtdC90YLQvtCyJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtc19wZXJfcGFnZTInXSA9ICfQrdC70LXQvNC10L3RgtC+0LIg0L3QsCDRgdGC0YDQsNC90LjRhtGDJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9jYXRlZ29yeV9yZWN1cnNlMiddID0gJ9Cc0L7QvdC40YLQvtGAINC/0L7QstC10LTQtdC90LjRjyc7CiRsYW5nWyd3aGljaF9hdHRyaWJ1dGVzJ10gPSAn0JrQsNC60LjQtSDQsNGC0YDQuNCx0YPRgtGLINC00L7Qu9C20L3RiyDQsdGL0YLRjCDRg9C60LDQt9Cw0L3RiyDQsiDQutCw0YLQsNC70L7Qs9C1JzsKJGxhbmdbJ25hdlRhYiddID0gJyB8ICAnOwokbGFuZ1snbmVlZHBlcm1pc3Npb24nXSA9ICfQktCw0Lwg0L3QtdC+0LHRhdC+0LTQuNC80L4gJXMg0YPRgdGC0LDQvdC+0LLQuNGC0Ywg0LTQu9GPINGN0YLQvtCz0L4nOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAn0JrQu9Cw0YHRgdC40YTQuNC60LDRgtC+0YAnOwokbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INC90LDRgdGC0YDQvtC50LrQsNC80Lgg0LrQsNGC0LDQu9C+0LPQsCc7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAn0JLRiyDRg9Cy0LXRgNC10L3Riywg0YfRgtC+INGF0L7RgtC40YLQtSDRg9C00LDQu9C40YLRjCAlcz8nOwokbGFuZ1sndW5pcXVlY29kZSddID0gJ9Cj0L3QuNC60LDQu9GM0L3Ri9C5INC60L7QtCc7CiRsYW5nWyd0ZW1wbGF0ZWxpc3QnXSA9ICfQqNCw0LHQu9C+0L0g0L/QvtC00LrQsNGC0LXQs9C+0YDQuNC5JzsKJGxhbmdbJ2xpc3R0ZW1wbCddID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INGI0LDQsdC70L7QvdCw0LzQuCDQv9C+0LTQutCw0YLQtdCz0L7RgNC40LknOwokbGFuZ1sndGl0bGVfaXRlbV90YWInXSA9ICfQkNGC0YDQuNCx0YPRgtGLINGN0LvQtdC80LXQvdGC0LAnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfdGFiJ10gPSAn0JDRgtGA0LjQsdGD0YLRiyDQutCw0YLQtdCz0L7RgNC40LgnOwokbGFuZ1sndGl0bGVfcHJpbnRhYmxlX3RhYiddID0gJ9Cd0LDRgdGC0YDQvtC50LrQuCDQv9C10YfQsNGC0LgnOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV90YWInXSA9ICfQoNCw0LfQvNC10YAg0LjQt9C+0LHRgNCw0LbQtdC90LjRjyDRjdC70LXQvNC10L3RgtCwJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX3RhYiddID0gJ9Cd0LDRgdGC0YDQvtC50LrQuCDRgdGC0YDQsNC90LjRhtGLINC60LDRgtC10LPQvtGA0LjQuCc7CiRsYW5nWyd0aXRsZV9pc190ZXh0ZmllbGQnXSA9ICfQotC10LrRgdGC0L7QstC+0LUg0L/QvtC70LU/JzsKJGxhbmdbJ3RpdGxlX2RlbGV0ZSddID0gJ9Cj0LTQsNC70LjRgtGMPyc7CiRsYW5nWyd0aXRsZV9hc3BlY3RfdGFiJ10gPSAn0J/RgNC+0L/QvtGA0YbQuNC4INC40LfQvtCx0YDQsNC20LXQvdC40Y8nOwokbGFuZ1sndGl0bGVfaW1hZ2VfdGFiJ10gPSAn0JTRgNGD0LPQuNC1INC90LDRgdGC0YDQvtC50LrQuCDQuNC30L7QsdGA0LDQttC10L3QuNC5JzsKJGxhbmdbJ3RpdGxlX2l0ZW1fdGVtcGxhdGVfdmFycyddID0gJ9Cf0LXRgNC10LzQtdC90L3Ri9C1INGI0LDQsdC70L7QvdCwINGN0LvQtdC80LXQvdGC0LAnOwokbGFuZ1sndGl0bGVfY2F0X3RlbXBsYXRlX3ZhcnMnXSA9ICfQn9C10YDQtdC80LXQvdC90YvQtSDRiNCw0LHQu9C+0L3QsCDQutCw0YLQtdCz0L7RgNC40LgnOwokbGFuZ1sndGl0bGVfZmVhdHVyZV90ZW1wbGF0ZV92YXJzJ10gPSAn0J/QtdGA0LXQvNC10L3QvdGL0LUg0YjQsNCx0LvQvtC90LAg0YXQsNGA0LDQutGC0LXRgNC40YHRgtC40LonOwokbGFuZ1sndGl0bGVfc2hvd19vbmx5X2V4aXN0aW5nX2ltYWdlcyddID0gJ9Cd0LUg0LLRi9Cy0L7QtNC40YLRjCDQvtGC0YHRg9GC0YHRgtCy0YPRjtGJ0LjQtSDQuNC30L7QsdGA0LDQttC10L3QuNGPJzsKJGxhbmdbJ3RpdGxlX3Nob3dfb25seV9leGlzdGluZ19pbWFnZXNfaGVscCddID0gJ1RoaXMgd2lsbCBvbmx5IHB1dCBpbWFnZSByZWZlcmVuY2VzIGludG8gbGlzdHMgaWYgdGhlIGltYWdlIGV4aXN0cy48YnIgLz4oTm9ybWFsbHksIHRoaXMgaXMgZmluZSwgYnV0IGlmIHlvdSBhcmUgZG9pbmcgc29tZXRoaW5nIGNsZXZlciB3aXRoIGltYWdlPGJyIC8+YXJyYXkgaW5kZXhlcywgdGhpcyBjb3VsZCBjYXVzZSB5b3UgdHJvdWJsZS4pJzsKJGxhbmdbJ3RpdGxlX2ZsdXNoX2NhdHMnXSA9ICdGbHVzaCBjYXRlZ29yeSBwYWdlIGJ1ZmZlcnMnOwokbGFuZ1sndGl0bGVfZmx1c2hfY2F0c19oZWxwJ10gPSAnSWYgeW91IGhhdmUgYSBodWdlIG51bWJlciBvZiBpdGVtcyBkaXNwbGF5ZWQ8YnIgLz5pbiBhIGNhdGVnb3J5LCBzb21lIFBIUCBpbnN0YWxscyB3aWxsIGZhaWwgdG8gZGlzcGxheSB0aGUgcGFnZTxiciAvPmNvcnJlY3RseS4gQ2hlY2sgdGhpcyBib3ggdG8gc29sdmUgdGhpcyBwcm9ibGVtICh0ZXN0IGZvciBzaWRlIGVmZmVjdHMpLic7CiRsYW5nWydjYXRhbG9nZXInXSA9ICfQmtC70LDRgdGB0LjRhNC40LrQsNGC0L7RgCc7CiRsYW5nWydpdGVtX3BhZ2UnXSA9ICfQodGC0YDQsNC90LjRhtCwINCt0LvQtdC80LXQvdGC0LAnOwokbGFuZ1snY2F0ZWdvcnlfcGFnZSddID0gJ9Ch0YLRgNCw0L3QuNGG0LAg0JrQsNGC0LXQs9C+0YDQuNC4JzsKJGxhbmdbJ2NhdGFsb2dfcHJpbnRhYmxlJ10gPSAn0JrQsNGC0LDQu9C+0LMg0LTQu9GPINC/0LXRh9Cw0YLQuCc7CiRsYW5nWydjYXRhbG9nX2RhdGFzaGVldCddID0gJ9Ca0LDRgtCw0LvQvtCzINGB0L/QtdGG0LjRhNC40LrQsNGG0LjQuCc7CiRsYW5nWydjYXRhbG9nX3Nob3J0X2xpc3QnXSA9ICfQodC/0LjRgdC+0Log0LrQvtC80L/QvtC90LXQvdGC0L7Qsic7CiRsYW5nWyd0aXRsZV9nbG9iYWxfaXRlbV9zb3J0X29yZGVyJ10gPSAn0KPRgdGC0LDQvdC+0LLQuNGC0Ywg0YHQvtGA0YLQuNGA0L7QstC60YMg0Y3Qu9C10LzQtdC90YLQvtCyINC/0L4nOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2l0ZW1zX3Blcl9wYWdlJ10gPSAn0KPRgdGC0LDQvdC+0LLQuNGC0Ywg0LrQvtC70LjRh9C10YHRgtCy0L4g0Y3Qu9C10LzQtdC90YLQvtCyINC90LAg0YHRgtGA0LDQvdC40YbQtSc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfY2F0ZWdvcnlfcmVjdXJzZSddID0gJ1NldCBDYXRlZ29yeSBEaXNwbGF5IEJlaGF2aW9yIHRvJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fc29ydF9vcmRlciddID0gJ9Ch0L7RgNGC0LjRgNC+0LLQutCwINGN0LvQtdC80LXQvdGC0L7QsiDQv9C+INGD0LzQvtC70YfQsNC90LjRjic7CiRsYW5nWyd0aXRsZV9wcmludGFibGVfc29ydF9vcmRlciddID0gJ0RlZmF1bHQgcHJpbnRhYmxlIGNhdGFsb2cgc29ydCBvcmRlcic7CiRsYW5nWyd0aXRsZV9pdGVtc19wZXJfcGFnZSddID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INGN0LvQtdC80LXQvdGC0L7QsiDQvdCwINGB0YLRgNCw0L3QuNGG0LUg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4nOwokbGFuZ1sndGl0bGVfYXZhaWxfYXR0cnMnXSA9ICfQkNGC0YDQuNCx0YPRgtGLINGN0LvQtdC80LXQvdGC0LAg0LTQvtGB0YLRg9C/0L3Ri9C1INC00LvRjyDRiNCw0LHQu9C+0L3QsCc7CiRsYW5nWyd0aXRsZV9hdmFpbF9pbWF0dHJzJ10gPSAn0JjQt9C+0LHRgNCw0LbQtdC90LjRjyDRjdC70LXQvNC10L3RgtCwINC00L7RgdGC0YPQv9C90YvQtSDQtNC70Y8g0YjQsNCx0LvQvtC90LAnOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX2hlcm8nXSA9ICdJbWFnZSBzaXplIGZvciBJdGVtIFBhZ2UgKGxvbmcgYXhpcyBpbiBwaXhlbHMpJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV90aHVtYm5haWwnXSA9ICdUaHVtYmFpbCBpbWFnZSBzaXplIGZvciBJdGVtIFBhZ2UgKGxvbmcgYXhpcyBpbiBwaXhlbHMpJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV9jYXRlZ29yeSddID0gJ1RodW1ibmFpbCBpbWFnZSBzaXplIGZvciBJdGVtIG9uIENhdGVnb3J5IFBhZ2UgKGxvbmcgYXhpcyBpbiBwaXhlbHMpJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV9jYXRhbG9nJ10gPSAnVGh1bWJuYWlsIGltYWdlIHNpemUgZm9yIEl0ZW0gb24gQ2F0YWxvZyBQYWdlIChsb25nIGF4aXMgaW4gcGl4ZWxzKSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9pbWFnZV9zaXplX2hlcm8nXSA9ICdJbWFnZSBzaXplIGZvciBDYXRlZ29yeSBQYWdlIChsb25nIGF4aXMgaW4gcGl4ZWxzKSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9pbWFnZV9zaXplX3RodW1ibmFpbCddID0gJ1RodW1iYWlsIGltYWdlIHNpemUgZm9yIENhdGVnb3J5IFBhZ2UgKGxvbmcgYXhpcyBpbiBwaXhlbHMpJzsKJGxhbmdbJ3RpdGxlX3RlbXBsYXRlJ10gPSAn0KjQsNCx0LvQvtC9JzsKJGxhbmdbJ3RpdGxlX3RlbXBsYXRlX3R5cGUnXSA9ICfQotC40L8g0KjQsNCx0LvQvtC90LAnOwokbGFuZ1sndGl0bGVfdGl0bGUnXSA9ICfQndCw0LfQstCw0L3QuNC1JzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2VfY291bnQnXSA9ICdNYXhpbXVtIG51bWJlciBvZiB2aWV3cyBmb3IgZWFjaCBJdGVtJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX2NvdW50J10gPSAnTWF4aW11bSBudW1iZXIgb2YgQmFubmVyIGltYWdlcyBmb3IgZWFjaCBDYXRlZ29yeSBQYWdlJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fYXR0cmlidXRlc19oZWxwJ10gPSAn0JrQsNC20LTRi9C5INCw0YLRgNC40LHRg9GCINCy0LLQtdC00ZHQvdC90YvQuSDQt9C00LXRgdGMINCx0YPQtNC10YIg0L3QsNC30LLQsNC90LjQtdC8INC/0L7Qu9GPLCDQutC+0YLQvtGA0L7QtSDQvNC+0LbQvdC+INC40YHQv9C+0LvRjNC30L7QstCw0YLRjCDQtNC70Y8g0L7Qv9C40YHQsNC90LjRjyDQvtGC0LTQtdC70YzQvdC+0LPQviDRjdC70LXQvNC10L3RgtCwLCDQuCDQsdGD0LTRg9GCINC/0L7QutCw0LfQsNC90Ysg0LLQvNC10YHRgtC1INGBINC90LjQvC4g0JLQvtC30LzQvtC20L3Qviwg0LLQsNC8INC/0YDQuNC00LXRgtGB0Y8g0L7QsdC90L7QstC40YLRjCDRgdCy0L7QuSDRiNCw0LHQu9C+0L0sINGH0YLQvtCx0Ysg0L7RgtC+0LHRgNCw0LfQuNGC0Ywg0Y3RgtC4INCw0YLRgNC40LHRg9GC0YsuJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2F0dHJpYnV0ZXNfaGVscCddID0gJ9Ca0LDQttC00YvQuSDQsNGC0YDQuNCx0YPRgiDQstCy0LXQtNGR0L3QvdGL0Lkg0LfQtNC10YHRjCDQsdGD0LTQtdGCINC90LDQt9Cy0LDQvdC40LXQvCDQvNC10YHRgtCwLCDQutC+0YLQvtGA0L7QtSDQvNC+0LbQvdC+INC40YHQv9C+0LvRjNC30L7QstCw0YLRjCDQtNC70Y8g0L7Qv9C40YHQsNC90LjRjyDQutCw0YLQtdCz0L7RgNC40LgsINC4INCx0YPQtNC10YIg0L/QvtC60LDQt9Cw0L3QviDQvdCwINGB0YLRgNCw0L3QuNGG0LUg0Y3RgtC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4LiDQktC+0LfQvNC+0LbQvdC+LCDQstCw0Lwg0L/RgNC40LTQtdGC0YHRjyDQvtCx0L3QvtCy0LjRgtGMINGB0LLQvtC5INGI0LDQsdC70L7QvSwg0YfRgtC+0LHRiyDQvtGC0L7QsdGA0LDQt9C40YLRjCDRjdGC0Lgg0LDRgtGA0LjQsdGD0YLRiy4nOwokbGFuZ1sndGl0bGVfY2F0YWxvZ19hdHRyaWJ1dGVzX2hlbHAnXSA9ICfQmtCw0LbQtNGL0Lkg0LDRgtGA0LjQsdGD0YIg0LLQstC10LTRkdC90L3Ri9C5INC30LTQtdGB0Ywg0LHRg9C00LXRgiDQvdCw0LfQstCw0L3QuNC10Lwg0LzQtdGB0YLQsCwg0LrQvtGC0L7RgNC+0LUg0LzQvtC20L3QviDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0Ywg0LTQu9GPINC+0L/QuNGB0LDQvdC40Y8g0LLRgdC10LPQviDQutCw0YLQsNC70L7Qs9CwLCDQutC+0YLQvtGA0YvQuSDQsdGD0LTQtdGCINC+0YLQvtCx0YDQsNC20LDRgtGM0YHRjyDQvdCwINGB0YLRgNCw0L3QuNGG0LUg0LrQsNGC0LDQu9C+0LPQsCDQv9C10YfQsNGC0LguINCS0L7Qt9C80L7QttC90L4sINCy0LDQvCDQv9GA0LjQtNC10YLRgdGPINC+0LHQvdC+0LLQu9GP0YLRjCDRgdCy0L7QuSDRiNCw0LHQu9C+0L0sINGH0YLQvtCx0Ysg0L7RgtC+0LHRgNCw0LfQuNGC0Ywg0Y3RgtC4INCw0YLRgNC40LHRg9GC0YsuJzsKJGxhbmdbJ3RpdGxlX2ZvcmNlX2FzcGVjdF9yYXRpbyddID0gJ0ZvcmNlIGltYWdlcyB0byBhIHNwZWNpZmllZCBBc3BlY3QgcmF0aW8/JzsKJGxhbmdbJ3RpdGxlX2ZvcmNlX2FzcGVjdF9yYXRpb19sYWJlbCddID0gJ0ZvcmNlIGFzcGVjdCByYXRpbyAobm90IHlldCBpbXBsZW1lbnRlZCknOwokbGFuZ1sndGl0bGVfaW1hZ2VfYXNwZWN0X3JhdGlvJ10gPSAnQXNwZWN0IHJhdGlvIChzcGVjaWZ5IGFzICI0OjMiIG9yICIxOjIuNSIpJzsKJGxhbmdbJ3RpdGxlX2FzcGVjdF9yYXRpb19oZWxwJ10gPSAnSWYgeW91IGZvcmNlIGFuIGltYWdlIHRvIGEgc3BlY2lmaWVkIGFzcGVjdCByYXRpbywgaXQgd2lsbCBiZSBzY2FsZWQgdG8gZml0IGV4YWN0bHkgdGhhdCBhc3BlY3QgcmF0aW8gKG9yIGl0cyBpbnZlcnNlLCBzbyB5b3UgY2FuIGhhdmUgYm90aCBwb3J0cmFpdCBhbmQgbGFuZHNjYXBlIGZvcm1hdHMpLiBPdGhlcndpc2UsIGltYWdlcyB3aWxsIHByZXNlcnZlIHRoZWlyIGFzcGVjdCByYXRpbywgYW5kIGJlIHNjYWxlZCBzbyB0aGVpciBsb25nIGF4aXMgaXMgdGhlIHNpemUgc3BlY2lmaWVkLiA8Yj50aGlzIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQhPC9iPic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9zb3J0J10gPSAnQ2F0ZWdvcnkgUGFnZSBJdGVtLWxpc3Qgc29ydCBvcmRlcic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlJ10gPSAnRGVmYXVsdCBDYXRlZ29yeSBEaXNwbGF5IEJlaGF2aW9yJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfaXRlbXNfYWxsJ10gPSAn0JLQutC70Y7Rh9C40YLRjCDQstGB0LUg0Y3Qu9C10LzQtdC90YLRiyDQsiDRgNCw0LzQutCw0YUg0LTQsNC90L3QvtC5INC60LDRgtC10LPQvtGA0LjQuCwg0LIg0YLQvtC8INGH0LjRgdC70LUg0Y3Qu9C10LzQtdC90YLRiyDQsiDQv9C+0LTQutCw0YLQtdCz0L7RgNC40LgnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9pdGVtc19vbmUnXSA9ICfQktC60LvRjtGH0LjRgtGMINCy0YHQtSDRjdC70LXQvNC10L3RgtGLINC90LXQv9C+0YHRgNC10LTRgdGC0LLQtdC90L3QviDRjdGC0L7QuSDQutCw0YLQtdCz0L7RgNC40LgsINC90L4g0L3QtSDRjdC70LXQvNC10L3RgtGLINCyINC/0L7QtNC60LDRgtC10LPQvtGA0LjQuCc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2NhdGVnb3JpZXNfYWxsJ10gPSAn0JLQutC70Y7Rh9C10L3QuNC1INCy0YHQtdGFINC60LDRgtC10LPQvtGA0LjQuSDQsiDRgNCw0LzQutCw0YUg0Y3RgtC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4LCDQsiDRgtC+0Lwg0YfQuNGB0LvQtSDQsiDQutCw0YLQtdCz0L7RgNC40Lgg0L/QvtC00LrQsNGC0LXQs9C+0YDQuNC4JzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfY2F0ZWdvcmllc19vbmUnXSA9ICfQktC60LvRjtGH0LXQvdC40LUg0LLRgdC10YUg0LrQsNGC0LXQs9C+0YDQuNC5INC90LXQv9C+0YHRgNC10LTRgdGC0LLQtdC90L4g0Y3RgtC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4LCDQvdC+INC90LUg0LLQutC70Y7Rh9Cw0Y8g0LrQsNGC0LXQs9C+0YDQuNC4INC/0L7QtNC60LDRgtC10LPQvtGA0LjQuCc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX21peGVkX2FsbCddID0gJ9CS0LrQu9GO0YfQuNGC0Ywg0LLRgdC1INGN0LvQtdC80LXQvdGC0Ysg0Lgg0LrQsNGC0LXQs9C+0YDQuNC4INCyINGN0YLQvtC5INC60LDRgtC10LPQvtGA0LjQuCwg0LIg0YLQvtC8INGH0LjRgdC70LUg0Y3Qu9C10LzQtdC90YLRiyDQuCDQutCw0YLQtdCz0L7RgNC40Lgg0LIg0L/QvtC00LrQsNGC0LXQs9C+0YDQuNC4JzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfbWl4ZWRfb25lJ10gPSAn0JLQutC70Y7Rh9C40YLRjCDQstGB0LUg0Y3Qu9C10LzQtdC90YLRiyDQuCDQutCw0YLQtdCz0L7RgNC40Lgg0L3QtdC/0L7RgdGA0LXQtNGB0YLQstC10L3QvdC+INGN0YLQvtC5INC60LDRgtC10LPQvtGA0LjQuCwg0L3QviDQvdC1INGN0LvQtdC80LXQvdGC0Ysg0LjQu9C4INC60LDRgtC10LPQvtGA0LjQuSDQsiDQv9C+0LTQutCw0YLQtdCz0L7RgNC40LgnOwokbGFuZ1sndGl0bGVfc2hvd19taXNzaW5nX2ltYWdlcyddID0gJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMICJObyBJbWFnZSIg0LTQu9GPINC+0YLRgdGD0YLRgdCy0YPRjtGJ0LjRhSDQuNC30L7QsdGA0LDQttC10L3QuNC5JzsKJGxhbmdbJ3RpdGxlX3Nob3dfbWlzc2luZ19pbWFnZXNfbG9uZyddID0gJ1Nob3cgYSBzcGVjaWFsICJObyBJbWFnZSIgaW1hZ2UgaWYgdGhlcmUgYXJlIG1pc3NpbmcgaW1hZ2VzICh1c2VmdWwgZm9yIGRlYnVnZ2luZy4gT3RoZXJ3aXNlIHdpbGwgdXNlIGEgc2luZ2xlIHBpeGVsIHRyYW5zcGFyZW50IGltYWdlKS4nOwokbGFuZ1snbmF0dXJhbF9vcmRlciddID0gJ05hdmlnYXRpb24gT3JkZXInOwokbGFuZ1snYWxwaGFfb3JkZXInXSA9ICdBbHBoYWJldGljYWwgT3JkZXInOwokbGFuZ1snbWFuYWdlcHJlZnMnXSA9ICfQndCw0YHRgtGA0L7QudC60LgnOwokbGFuZ1snbWFuYWdlYXR0cnMnXSA9ICfQo9C/0YDQsNCy0LvQtdC90LjQtSDQkNGC0YDQuNCx0YPRgtCw0LzQuCc7CiRsYW5nWydnbG9iYWxvcHMnXSA9ICfQntCx0YnQuNC4INC+0L/QtdGA0LDRhtC40Lgg0YEg0LrQsNGC0LDQu9C+0LPQvtC8JzsKJGxhbmdbJ2FkZHRlbXBsYXRlJ10gPSAn0JTQvtCx0LDQstC40YLRjCDRiNCw0LHQu9C+0L0nOwokbGFuZ1sncmVpbXBvcnR0ZW1wbGF0ZXMnXSA9ICfQktC10YDQvdGD0YLRjCDQtNC10LzQvtC90YHRgtGA0LDRhtC40L7QvdC90YvQtSDRiNCw0LHQu9C+0L3Riyc7CiRsYW5nWydyZWltcG9ydGVkJ10gPSAn0JTQtdC80L7QvdGB0YLRgNCw0YbQuNC+0L3QvdGL0LUg0YjQsNCx0LvQvtC90Ysg0L/QvtC00LrQsNGC0LXQs9C+0YDQuNC5INGD0YHQv9C10YjQvdC+INC40LzQv9C+0YDRgtC40YDQvtCy0LDQvdGLJzsKJGxhbmdbJ3RlbXBsYXRldXBkYXRlZCddID0gJ9Co0LDQsdC70L7QvSDQtNC+0LHQsNCy0LvQtdC9IC8g0L7QsdC90L7QstC70ZHQvSc7CiRsYW5nWyd0ZW1wbGF0ZWRlbGV0ZWQnXSA9ICfQqNCw0LHQu9C+0L0g0YPQtNCw0LvQtdC9JzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ9Cd0LDRgdGC0YDQvtC50LrQuCDQvtCx0L3QvtCy0LvQtdC90YsnOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAn0JzQvtC00YPQu9GMINCy0LXRgNGB0LjQuCAlcyDRg9GB0YLQsNC90L7QstC70LXQvSc7CiRsYW5nWyd1cGdyYWRlZCddID0gJ9Cc0L7QtNGD0LvRjCDQvtCx0L3QvtCy0LvQtdC9INC00L4g0LLQtdGA0YHQuNC4ICVzLic7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ9Cc0L7QtNGD0LvRjCDRg9C00LDQu9C10L0nOwokbGFuZ1snYXR0cnN1cGRhdGVkJ10gPSAn0JDRgtGA0LjQsdGD0YLRiyDQvtCx0L3QvtCy0LvQtdC90YsnOwokbGFuZ1snbm9nbG9iYWxjaGFuZ2UnXSA9ICc80J3QtSDQstGL0LHRgNCw0L3Qvj4nOwokbGFuZ1snZ2xvYmFsbHl1cGRhdGVkJ10gPSAn0JjQt9C80LXQvdC10L3QuNGPINGA0LDRgdC/0YDQvtGB0YLRgNCw0L3Rj9GO0YLRgdGPINC90LAg0LPQu9C+0LHQsNC70YzQvdC+0Lwg0YPRgNC+0LLQvdC1JzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ9CY0LfQvNC10L3QuNGC0Ywg0YjQsNCx0LvQvtC9JzsKJGxhbmdbJ3N1YnRlbXBsYXRlcyddID0gJ9Ca0LDRgtCw0LvQvtCzINGI0LDQsdC70L7QvdC+0LIg0L/QvtC00LrQsNGC0LXQs9C+0YDQuNC5JzsKJGxhbmdbJ25leHQnXSA9ICc6wrsnOwokbGFuZ1sncHJldiddID0gJ8KrOic7CiRsYW5nWydlZGl0J10gPSAn0KDQtdC00LDQutGC0LjRgNC+0LLQsNGC0YwnOwokbGFuZ1snZGVsZXRlJ10gPSAn0KPQtNCw0LvQuNGC0YwnOwokbGFuZ1snbm90ZW1wbGF0ZXMnXSA9ICfQndC10YIg0YPRgdGC0LDQvdC+0LLQu9C10L3QvdGL0YUg0YjQsNCx0LvQvtC90L7QsiDQv9C+0LTQutCw0YLQtdCz0L7RgNC40LknOwokbGFuZ1snaGVscHRleHQnXSA9ICc8aDM+V2hhdCBEb2VzIFRoaXMgRG8/PC9oMz4NCjxwPlRoaXMgbW9kdWxlIGxldHMgeW91IGNyZWF0ZSBvbmxpbmUgY2F0YWxvZ3Mgb3IgcG9ydGZvbGlvcy4gQ2F0YWxvZ3MgY29uc2lzdCBvZiAiQ2F0YWxvZyBJdGVtcyIgd2hpY2ggY291bGQgYmUgcHJvZHVjdHMsIHdvcmtzIG9mIGFydCwgb3IgdGhlIGxpa2UsIGFuZCAiQ2F0YWxvZyBDYXRlZ29yaWVzIiB3aGljaCBjb3VsZCBiZSBpdGVtIGNhdGVnb3JpZXMgb3Igb3RoZXIgbmF0dXJhbCBkaXZpc2lvbnMgb2YgdGhlIGNhdGFsb2cuPC9wPg0KPHA+Q2F0ZWdvcmllcyBtYXkgYmUgZGVmaW5lZCBoaWVyYXJjaGljYWxseSAodXNpbmcgdGhlIHN0YW5kYXJkIENNUyBNYWRlIFNpbXBsZSBjb250ZW50IGxpc3QpLiBDYXRlZ29yeSBwYWdlcyBjYW4gZGlzcGxheSBpdGVtcyBpbiB0aGUgY2F0ZWdvcnkgYW5kL29yIHN1YmNhdGVnb3JpZXMsIG9wdGlvbmFsbHkgcmVjdXJzaW5nIHRocm91Z2ggc3ViLWNhdGVnb3JpZXMuIFRoaXMgYmVoYXZpb3IgY2FuIGJlIGNvbmZpZ3VyZWQgb24gYSBwZXItY2F0ZWdvcnkgYmFzaXMuPC9QPg0KPHA+VGhlcmUgaXMgYWxzbyBhIFByaW50YWJsZSBDYXRhbG9nLCB3aGljaCByZXByZXNlbnRzIHRoZSB3aG9sZSBjb2xsZWN0aW9uIG9mIENhdGFsb2cgSXRlbXMgb24gYSBzaW5nbGUgcGFnZSAodGhpcyBpcyBjdXJyZW50bHkgaW1wbGVtZW50ZWQgYmFkbHksIGFuZCB3aWxsIGxvYWQgc2xvd2x5KS48L3A+DQo8cD5UaGUgbW9kdWxlIGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciAiQ29udGVudCBBbGlhc2VzIiAoYSBtb2R1bGUgYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudGFsaWFzZXMvIj50aGUgRGV2ZWxvcGVyIEZvcmdlPC9hPiksIHdoaWNoIGFsbG93cyB5b3UgdG8gcGxhY2UgYW55IENhdGFsb2cgSXRlbSBpbnRvIG11bHRpcGxlIENhdGFsb2cgQ2F0ZWdvcmllcy48L3A+DQo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4NCjxwPldoZW4geW91IGluc3RhbGwgdGhpcyBtb2R1bGUsIGl0IGNyZWF0ZXMgdGhyZWUgbmV3IENvbnRlbnQgVHlwZXM6IENhdGFsb2cgSXRlbSwgQ2F0YWxvZyBDYXRlZ29yeSwgYW5kIFByaW50YWJsZSBDYXRhbG9nLiBXaGVuIHlvdVwncmUgaW4geW91ciBzaXRlIGFkbWluaXN0cmF0aW9uIGNhdGVnb3J5LCB5b3UgYWRkIENhdGFsb2cgSXRlbXMgYW5kIENhdGFsb2cgQ2F0ZWdvcmllcyBqdXN0IGFzIHlvdSB3b3VsZCBhbnkgb3RoZXIga2luZCBvZiBwYWdlLiBTZWxlY3QgQ29udGVudCA+IFBhZ2VzID4gQWRkIENvbnRlbnQsIGFuZCB0aGVuIHNlbGVjdCAiQ2F0YWxvZyBJdGVtIiBvciAiQ2F0YWxvZyBDYXRlZ29yeSIgZnJvbSB0aGUgQ29udGVudCBUeXBlIHB1bGxkb3duLjwvcD4NCjxoND5DYXRhbG9nIEl0ZW1zPC9oND4NCjxwPkFkZGluZyBhIENhdGFsb2cgSXRlbSBpcyBzaW1pbGFyIHRvIGFkZGluZyBhbiBvcmRpbmFyeSBwYWdlIHRvIHlvdXIgc2l0ZS4gVGhlIGRhdGEgZmllbGRzIGZvciB0aGUgSXRlbSBhcmUgbm90IGV4YWN0bHkgdGhlIHNhbWUsIGhvd2V2ZXIuIEFsc28gbm90ZSB0aGF0IGluIHRoZSAiSW1hZ2VzIiB0YWIsIHlvdSBjYW4gc2VsZWN0IG11bHRpcGxlIGltYWdlcyB0byB1cGxvYWQgZm9yIHRoZSBpdGVtLiBXaGVuIHlvdSB1cGxvYWQgaW1hZ2VzLCB0aGUgc3lzdGVtIHdpbGwgc2l6ZSB0aGVtIGFwcHJvcHJpYXRlbHkgZm9yIHRoZSBjYXRhbG9nLCBjcmVhdGUgdGh1bWJuYWlscyBmb3IgdXNlIGluIHRoZSBJdGVtXCdzIHBhZ2UsIGNyZWF0ZSB0aHVtYm5haWxzIGZvciBhbnkgQ2F0ZWdvcnkgcGFnZXMsIGFuZCBzbyBvbi4gVGhpcyByZXF1aXJlcyB0aGF0IHlvdSBoYXZlIEdEIG9yIGEgc2ltaWxhciBpbWFnZSBsaWJyYXJ5IGluc3RhbGxlZC4gQ3VycmVudGx5LCBvbmx5IGpwZWcgZm9ybWF0IGltYWdlcyBhcmUgc3VwcG9ydGVkLjwvcD4NCjxoND5DYXRhbG9nIENhdGVnb3JpZXM8L2g0Pg0KPHA+QSBDYXRhbG9nIENhdGVnb3J5IGlzIHVzZWQgZm9yIG9yZ2FuaXppbmcgeW91ciBjYXRhbG9nIGl0ZW1zLiBJdCBwcm92aWRlcyBhIHBhZ2UgdGhhdCBsaXN0cyBDYXRhbG9nZXIgY29udGVudCB0aGF0IGlzIGNvbnRhaW5lZCBieSBpdC4gQSBDYXRhbG9nIEl0ZW0gaXMgY29uc2lkZXJlZCB0byBiZSBwYXJ0IG9mIGEgQ2F0YWxvZyBDYXRlZ29yeSBpZiBpdCBpcyBiZWxvdyB0aGF0IENhdGVnb3J5IGluIHRoZSBTaXRlIEhpZXJhcmNoeS4gQ2F0ZWdvcmllcyBjYW4gc2ltaWxhcmx5IGluY2x1ZGUgb3RoZXIgQ2F0ZWdvcmllcy48L3A+DQo8cD5DYXRhbG9nIENhdGVnb3JpZXMgaGF2ZSBhIG51bWJlciBvZiBzZXR0aW5ncyB0byBkZXRlcm1pbmUgaG93IHRoZXkgc2hvdWxkIGRpc3BsYXkgdGhlIEl0ZW1zIGFuZCBDYXRlZ29yaWVzIHRoZXkgY29udGFpbjogaWYgeW91IGxvb2sgYXQgdGhlICJPcHRpb25zIiB0YWIsIHlvdSBjYW4gY2hvb3NlIGhvdyBtYW55IGl0ZW1zIGFuZC9vciBjYXRlZ29yaWVzIHRvIHNob3csIHdoYXQgb3JkZXIgdG8gc2hvdyB0aGVtIGluLCB3aGV0aGVyIHRvIGRpc3BsYXkgb25seSBpdGVtcyBvciBvbmx5IGNhdGVnb3JpZXMgb3IgYm90aCwgYW5kIGhvdyBtYW55IGxldmVscyBvZiB0aGUgaGllcmFyY2h5IHRvIGRpc3BsYXkgYmVsb3cgdGhlIGNhdGVnb3J5IHBhZ2UuPC9wPg0KPHA+Rm9yIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOjwvcD4NCjxvbD4NCgk8bGk+PGI+SGF0czwvYj4NCgkJPG9sPg0KCQkJPGxpPjxiPkZhc2hpb248L2I+DQoJCQkgCTxvbD4NCgkJCSAJCTxsaT5GZWF0aGVyZWQgSGF0PC9saT48bGk+RmVkb3JhIDwvbGk+PGxpPkJhc2ViYWxsIEhhdDwvbGk+DQoJCQkgCTwvb2w+DQoJCQkgPC9saT4NCgkJIAk8bGk+PGI+V29yayBIYXRzPC9iPg0KCQkgICAgCTxvbD4NCgkJICAgIAkJPGxpPkhhcmQgSGF0PC9saT48bGk+RGl2aW5nIEhlbG1ldDwvbGk+DQoJCSAgICAJPC9vbD4NCgkJICAgIDwvbGk+DQoJCTwvb2w+DQoJPC9saT4NCjwvb2w+DQo8cD5JbiB0aGlzIGRpYWdyYW0sIGJvbGRlZCBpdGVtcyBhcmUgQ2F0YWxvZyBDYXRlZ29yaWVzLCBhbmQgbm9uLWJvbGRlZCBpdGVtcyBhcmUgQ2F0YWxvZyBJdGVtcy4gRGVwZW5kaW5nIHVwb24gaG93IHlvdSBzZXQgeW91ciBvcHRpb25zLCB0aGUgSGF0cyBDYXRlZ29yeSBQYWdlIGNhbiBzaG93IG9ubHkgZW50cmllcyBmb3IgdGhlIEZhc2hpb24gYW5kIFdvcmsgSGF0cyBDYXRlZ29yeSBQYWdlcywgb3IgaXQgY2FuIHNob3cgZW50cmllcyBmb3IgRmFzaGlvbiwgV29yayBIYXRzLCBhbmQgYWxsIHRoZSBoYXRzIGxpc3RlZCBiZWxvdyB0aGVtLjwvcD4NCjxwPllvdSBjYW4gb3B0IHRvIHNob3cgdGhlIGl0ZW1zIGluICJuYXR1cmFsIiBvcmRlciAoaS5lLiwgdGhlIG9yZGVyIHRoZSBJdGVtcyBzaG93IHVwIGluIHRoZSBDTVMgQ29udGVudCBIaWVyYXJjaHkpLCBvciBpbiBhbHBoYWJldGljYWwgb3JkZXIuPC9QPg0KPHA+SWYgeW91IGhhdmUgbGFyZ2UgbnVtYmVycyBvZiBpdGVtcyBpbiBhIENhdGVnb3J5LCB5b3UgY2FuIHNldCB0aGUgbWF4aW11bSBudW1iZXIgdG8gYmUgZGlzcGxheWVkIGluIGEgQ2F0ZWdvcnkgUGFnZSwgYW5kIHRoZSBwYWdlIHdpbGwgYXV0b21hdGljYWxseSBjcmVhdGUgbGlua3MgdG8gbmF2aWdhdGUgdGhyb3VnaCB0aGUgbGlzdC48L3A+DQo8cD5FYWNoIENhdGVnb3J5IHBhZ2UgY2FuIGhhdmUgZGlmZmVyZW50IHNldHRpbmdzIGZvciBzb3J0IG9yZGVyLCBsZXZlbHMgdG8gZGlzcGxheSwgYW5kIG51bWJlciBvZiBpdGVtcy4gWW91IGNhbiBzZXQgdGhlIGRlZmF1bHQgZm9yIHRoZXNlIHZhbHVlcyBpbiBFeHRlbnNpb25zID4gQ2F0YWxvZ2VyID4gTWFuYWdlIFByZWZlcmVuY2VzLiBJZiwgYXQgYSBsYXRlciBkYXRlLCB5b3Ugd2lzaCB0byBjaGFuZ2Ugc29tZSBzZXR0aW5nIG9uIGFsbCBvZiB5b3VyIENhdGVnb3J5IHBhZ2VzLCB5b3UgY2FuIGdvIGludG8gRXh0ZW5zaW9ucyA+IENhdGFsb2dlciA+IEdsb2JhbCBDYXRhbG9nIE9wdGlvbnMsIGFuZCBtYWtlIHRob3NlIGNoYW5nZXMuPC9wPg0KPGg0PkltYWdlczwvaDQ+DQo8cD5DYXRhbG9nZXIgYWxsb3dzIHlvdSB0byBzZWxlY3QgZGlmZmVyZW50IHNpemUgaW1hZ2VzIGZvciBJdGVtIHBhZ2VzLCBDYXRlZ29yeSBwYWdlcywgYW5kIHRoZSBQcmludGFibGUgQ2F0YWxvZy4gWW91IGNhbiBzZXQgdGhlc2UgZGVmYXVsdHMgaW4gRXh0ZW5zaW9ucyA+IENhdGFsb2dlciA+IE1hbmFnZSBQcmVmZXJlbmNlcy48L3A+DQo8cD5XaGVuIHlvdSB1cGxvYWQgaW1hZ2VzLCB0aGUgb3JpZ2luYWwgaXMgc3RvcmVkLiBXaGVuIHNvbWVvbmUgdmlzaXRzIGEgcGFnZSwgdGhlIHJlZHVjZWQgc2l6ZSBpbWFnZXMgYXJlIHJlcXVlc3RlZCB1c2luZyBhIHNwZWNpYWwgVVJMLCB3aGljaCB3aWxsIHJlZGlyZWN0IHRoZSB1c2VyXCdzIGJyb3dzZXIgdG8gdGhlIHNjYWxlZCBpbWFnZSBpZiBpdCBleGlzdHMsIGFuZCBjcmVhdGluZyB0aGUgc2NhbGVkIGltYWdlIGlmIGl0IGRvZXNuXCd0LiBUaGlzIGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBzaXplIG9mIGltYWdlcywgd2l0aG91dCBoYXZpbmcgdG8gcmUtdXBsb2FkIGFsbCB0aGUgaW1hZ2VzLCBvciByZXNjYWxpbmcgdGhlbSBhbGwgYXQgb25jZS48L3A+DQo8cD5UaGlzIGltYWdlIHJlc2NhbGluZyBjb2RlIHJlcXVpcmVzIHRoYXQgeW91IGhhdmUgZWl0aGVyIEltYWdlTWFnaWNrIG9yIEdEIGxpYiBpbnN0YWxsZWQsIGFuZCBjb25maWd1cmVkIGluIHlvdXIgQ01TIE1hZGUgU2ltcGxlIGNvbmZpZy5waHAuPC9wPg0KPGgzPkZlYXR1cmUgTGlzdHM8L2gzPg0KPHA+WW91IGNhbiwgYXMgb2YgdmVyc2lvbiAwLjQsIGhhdmUgImZlYXR1cmUgbGlzdHMiIHdoaWNoIGFyZSB0aGUgPGk+bjwvaT4gbW9zdC1yZWNlbnRseSBhZGRlZCBjYXRhbG9nIGl0ZW1zLCBvciBhIGNvbGxlY3Rpb24gb2YgPGk+azwvaT4gcmFuZG9tIGl0ZW1zIGZyb20gdGhlIGNhdGFsb2cuPC9wPg0KPGg0PiJBbGwiIEZlYXR1cmUgTGlzdDwvaDQ+DQo8cD5UbyBnZXQgYSBsaXN0IG9mIGFsbCBjYXRhbG9nIGl0ZW1zIChvcHRpb25hbGx5IHVuZGVyIGEgc3BlY2lmaWVkIHBhcnQgb2YgeW91ciBoaWVyYXJjaHkpIGZvciBwcm9jZXNzaW5nIHZpYSBhIHRlbXBsYXRlLCB5b3UgY2FuIHVzZQ0KdGhlICJhbGwiIGZlYXR1cmUgbGlzdC48L3A+DQo8cD5UaGUgc3ludGF4IGZvciBhbiAiYWxsIiBsaXN0IGlzIGxpa2U6PC9wPg0KPHA+e2Ntc19tb2R1bGUgbW9kdWxlPVwnQ2F0YWxvZ2VyXCcgYWN0aW9uPVwnYWxsXCcgc3ViX3RlbXBsYXRlPVwnbXlfc3ViX3RlbXBsYXRlXCd9LCB3aGVyZSBzdWJfdGVtcGxhdGUgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGxpc3QuDQpUaGVyZSBpcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIsIGFsaWFzPVwncGFnZV9hbGlhc1wnLCB3aGVyZSBwYWdlX2FsaWFzIGluZGljYXRlcyB0aGUgdG9wIG9mIHRoZSB0cmVlIChlLmcuLCBhIHBsYWNlIGluIHlvdXIgbWVudQ0KaGllcmFyY2h5LCB0eXBpY2FsbHkgYSBjYXRlZ29yeSBwYWdlKSBpbiB3aGljaCB0byBsb29rIGZvciBuZXcgaXRlbXMuIEEgc3BlY2lhbCB2YWx1ZSBmb3IgInBhZ2VfYWxpYXMiIGlzICIvIiwgd2hpY2ggbWVhbnMgdG8NCnN0YXJ0IGF0IHRoZSByb290LjwvcD4NCjxwPlRoaXMgaXMgdXNlZnVsIGZvciBjYXRhbG9nLXdpZGUgb3BlcmF0aW9ucy4gRm9yIGV4YW1wbGUsIHRvIGdldCBhIGxpc3Qgb2YgYWxsIGNhdGVnb3JpZXMgKGFuZCBkbyBzb21ldGhpbmcgd2l0aCB0aGVtKSwNCnlvdSBjb3VsZCB1c2UgdGhlIHRhZyB7Y21zX21vZHVsZSBtb2R1bGU9XCdDYXRhbG9nZXJcJyBhY3Rpb249XCdhbGxcJyBzdWJfdGVtcGxhdGU9XCdteV9zdWJfdGVtcGxhdGVcJyBhbGlhcz1cJy9cJyByZWN1cnNlPVwnY2F0ZWdvcmllc19hbGxcJ30uIFlvdXIgdGVtcGxhdGUgY291bGQgdGhlbiB0aHJvdw0KdGhvc2UgY2F0ZWdvcmllcyBpbnRvIGEgcHVsbGRvd24gbWVudSB0aGF0IHJlZGlyZWN0ZWQgeW91IHRvIHRoYXQgY2F0ZWdvcnlcJ3MgcGFnZSwgZm9yIGV4YW1wbGU6PC9wPg0KPHByZT4NCjxzZWxlY3QgbmFtZT0iZm9vIiBvbmNoYW5nZT0iZG9jdW1lbnQubG9jYXRpb249dGhpcy5vcHRpb25zW3RoaXMuc2VsZWN0ZWRJbmRleF0udmFsdWU7Ij4NCjxvcHRpb24gdmFsdWU9IiI+U2VsZWN0IEEgdGFyZ2V0PC9vcHRpb24+DQp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPXRoaXNvbmV9DQogICA8b3B0aW9uIHZhbHVlPSJ7JHRoaXNvbmUubGlua30iPnskdGhpc29uZS50aXRsZX08L29wdGlvbj4NCnsvZm9yZWFjaH0NCjwvc2VsZWN0Pg0KPC9wcmU+DQo8cD5JZiB5b3Ugd2FudGVkIHRoYXQgdG8gb25seSBzaG93IGNhdGVnb3JpZXMgdGhhdCB3ZXJlIGluIHRoZSB2ZXJ5IHRvcCBsZXZlbCBvZiB5b3VyIGhlaXJhcmNoeSwgeW91XCdkIHJlcGxhY2UgdGhlIHJlY3Vyc2U9XCdjYXRlZ29yaWVzX2FsbFwnIHdpdGgNCnJlY3Vyc2U9XCdjYXRlZ29yaWVzX29uZVwnLiBPciBpZiB5b3Ugd2FudGVkIGl0IHRvIGJlIGFsbCBjYXRhbG9nIEl0ZW1zIGluc3RlYWQgb2YgY2F0ZWdvcmllcywgeW91IGNvdWxkIHVzZSBhIHRhZyBsaWtlOg0Ke2Ntc19tb2R1bGUgbW9kdWxlPVwnQ2F0YWxvZ2VyXCcgYWN0aW9uPVwnYWxsXCcgc3ViX3RlbXBsYXRlPVwnbXlfc3ViX3RlbXBsYXRlXCcgYWxpYXM9XCcvXCcgcmVjdXJzZT1cJ2l0ZW1zX2FsbFwnfQ0KPHA+U2ltaWxhcmx5LCB5b3UgY291bGQgaGF2ZSBpdCBsaXN0IG9ubHkgY2F0ZWdvcmllcyB1bmRlciB0aGUgY3VycmVudCBwYWdlIChieSBvbWl0dGluZyB0aGUgImFsaWFzPVwnL1wnIikuIFRoZSBjb21iaW5hdGlvbnMgYXJlIGJhc2ljYWxseSBsaW1pdGxlc3MhPC9wPg0KPHA+QWxsIHN1cHBvcnRlZCB2YWx1ZXMgb2YgcmVjdXJzZSBpbmNsdWRlOjx1bD4NCjxsaT5pdGVtc19vbmUgLSBDYXRhbG9nIGl0ZW1zLCBubyBtb3JlIHRoYW4gb25lIGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+aXRlbXNfYWxsIC0gQ2F0YWxvZyBpdGVtcywgYXQgYW55IGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+Y2F0ZWdvcmllc19vbmUgLSBDYXRlZ29yaWVzLCBubyBtb3JlIHRoYW4gb25lIGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+Y2F0ZWdvcmllc19hbGwgLSBDYXRlZ29yaWVzLCBhdCBhbnkgbGV2ZWwgYmVsb3cgdGhlIGN1cnJlbnQgcGFnZSAob3IgYWxpYXMgcG9pbnQpPC9saT4NCjxsaT5taXhlZF9vbmUgLSBDYXRhbG9nIGl0ZW1zIGFuZCBDYXRlZ29yaWVzLCBubyBtb3JlIHRoYW4gb25lIGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+bWl4ZWRfYWxsIC0gQ2F0YWxvZyBpdGVtcyBhbmQgQ2F0ZWdvcmllcywgYXQgYW55IGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8L3VsPg0KPC9wPg0KPGg0PlJlY2VudGx5IEFkZGVkIEZlYXR1cmUgTGlzdDwvaDQ+DQo8cD5UbyB1c2UgYSAibW9zdC1yZWNlbnRseSBhZGRlZCIgbGlzdCB3aWxsIGFsbG93IHlvdSB0byBkaXNwbGF5IHRoZSBtb3N0IHJlY2VudGx5LWFkZGVkIGNhdGFsb2cgaXRlbXMgdW5kZXIgYSBzcGVjaWZpZWQgcGFydCBvZiB5b3VyIGhpZXJhcmNoeS48L3A+DQo8cD5UaGUgc3ludGF4IGZvciBhICJtb3N0IHJlY2VudGx5IGFkZGVkIiBsaXN0IGlzIGxpa2U6PC9wPg0KPHA+e2Ntc19tb2R1bGUgbW9kdWxlPVwnQ2F0YWxvZ2VyXCcgYWN0aW9uPVwncmVjZW50XCcgc3ViX3RlbXBsYXRlPVwnbXlfc3ViX3RlbXBsYXRlXCd9LCB3aGVyZSBzdWJfdGVtcGxhdGUgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGxpc3QuIFRoZXJlIGFyZSB0d28gb3B0aW9uYWwgcGFyYW1ldGVycywgY291bnQ9XCczXCcgYWxpYXM9XCdwYWdlX2FsaWFzXCcsIHdoZXJlIGNvdW50IGlzIHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gaW5jbHVkZSwgYW5kIHBhZ2VfYWxpYXMgaW5kaWNhdGVzIHRoZSB0b3Agb2YgdGhlIHRyZWUgKGUuZy4sIGEgcGxhY2UgaW4geW91ciBtZW51IGhpZXJhcmNoeSwgdHlwaWNhbGx5IGEgY2F0ZWdvcnkgcGFnZSkgaW4gd2hpY2ggdG8gbG9vayBmb3IgbmV3IGl0ZW1zLiBBIHNwZWNpYWwgdmFsdWUgZm9yICJwYWdlX2FsaWFzIiBpcyAiLyIsIHdoaWNoIG1lYW5zIHRvIHVzZSA8aT5hbGw8L2k+IHBhZ2VzIGluIHRoZSBzaXRlLjwvcD4NCjxoND5SYW5kb20gSXRlbXMgRmVhdHVyZSBMaXN0PC9oND4NCjxwPlRoZSBzeW50YXggZm9yIGEgInJhbmRvbSIgbGlzdCBpcyBsaWtlOjwvcD4NCjxwPntjbXNfbW9kdWxlIG1vZHVsZT1cJ0NhdGFsb2dlclwnIGFjdGlvbj1cJ3JhbmRvbVwnIHN1Yl90ZW1wbGF0ZT1cJ215X3N1Yl90ZW1wbGF0ZVwnfSwgd2hlcmUgc3ViX3RlbXBsYXRlIGlzIHRoZSB0ZW1wbGF0ZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBsaXN0LiBUaGVyZSBhcmUgdHdvIG9wdGlvbmFsIHBhcmFtZXRlcnMsIGNvdW50PVwnM1wnIGFsaWFzPVwncGFnZV9hbGlhc1wnLCB3aGVyZSBjb3VudCBpcyB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRvIGluY2x1ZGUsIGFuZCBwYWdlX2FsaWFzIGluZGljYXRlcyB0aGUgdG9wIG9mIHRoZSB0cmVlIChlLmcuLCBhIHBsYWNlIGluIHlvdXIgbWVudSBoaWVyYXJjaHksIHR5cGljYWxseSBhIGNhdGVnb3J5IHBhZ2UpIGluIHdoaWNoIHRvIGxvb2sgZm9yIG5ldyBpdGVtcy4gQSBzcGVjaWFsIHZhbHVlIGZvciAicGFnZV9hbGlhcyIgaXMgIi8iLCB3aGljaCBtZWFucyB0byB1c2UgPGk+YWxsPC9pPiBwYWdlcyBpbiB0aGUgc2l0ZS48L3A+DQo8aDM+Q3VzdG9taXphdGlvbiBhbmQgQWR2YW5jZWQgVG9waWNzPC9oMz4NCjxoND5DYXRhbG9nIEl0ZW0gQXR0cmlidXRlczwvaDQ+DQo8cD5UaGUgZGVmYXVsdCBpdGVtIGF0dHJpYnV0ZXMgYXJlIHR5cGljYWwgZm9yIGEgY2F0YWxvZyBvZiBwcm9kdWN0cyBvciBhcnR3b3JrcywgYnV0IGJ5IGdvaW5nIGludG8gRXh0ZW5zaW9ucyA+IENhdGFsb2dlciA+IE1hbmFnZSBVc2VyLURlZmluZWQgQXR0cmlidXRlcywgeW91IGNhbiBjaGFuZ2UgdGhlIGF0dHJpYnV0ZXMuIEl0XCdzIGJlc3QgdG8gZGVmaW5lIHRoZSBhdHRyaWJ1dGVzIGJlZm9yZSB5b3Ugc3RhcnQgZW50ZXJpbmcgQ2F0YWxvZyBJdGVtcy48L3A+DQo8cD5Ob3RlIHRoYXQgdGhlIGF0dHJpYnV0ZXMgeW91IGRlZmluZSBtYXkgbmVlZCB0byBiZSBhZGRlZCB0byB0aGUgdGVtcGxhdGUgdGhhdCB5b3VcJ3JlIHVzaW5nIHRvIGRpc3BsYXkgQ2F0YWxvZyBJdGVtcyAtLSBzZWUgQ3VzdG9tIFRlbXBsYXRlcyBiZWxvdy48L3A+DQo8aDQ+Q2F0YWxvZyBDYXRlZ29yeSBBdHRyaWJ1dGVzPC9oND4NCjxwPlNpbWlsYXJseSwgeW91IGNhbiBzZXQgYXR0cmlidXRlcyBmb3IgQ2F0ZWdvcmllcy4gQWdhaW4sIHRoZSBhdHRyaWJ1dGVzIHlvdSBkZWZpbmUgbWF5IG5lZWQgdG8gYmUgYWRkZWQgdG8gdGhlIHRlbXBsYXRlIHRoYXQgeW91XCdyZSB1c2luZyB0byBkaXNwbGF5IENhdGFsb2cgQ2F0ZWdvcmllcyAtLSBzZWUgQ3VzdG9tIFRlbXBsYXRlcyBiZWxvdy48L3A+DQo8aDQ+UHJpbnRhYmxlIENhdGFsb2cgQXR0cmlidXRlczwvaDQ+DQo8cD5MaWtld2lzZSwgeW91IGNhbiBzZXQgYXR0cmlidXRlcyBmb3IgUHJpbnRhYmxlIENhdGFsb2dzLiBBZ2FpbiwgdGhlIGF0dHJpYnV0ZXMgeW91IGRlZmluZSBtYXkgbmVlZCB0byBiZSBhZGRlZCB0byB0aGUgdGVtcGxhdGUgdGhhdCB5b3VcJ3JlIHVzaW5nIHRvIGRpc3BsYXkgeW91ciBQcmludGFibGUgQ2F0YWxvZyAtLSBzZWUgQ3VzdG9tIFRlbXBsYXRlcyBiZWxvdy48L3A+DQo8aDQ+Q3VzdG9tIFRlbXBsYXRlczwvaDQ+DQo8cD5JZiB5b3VcJ3JlIHdpbGxpbmcgdG8gbWVzcyBhcm91bmQgd2l0aCBTbWFydHkgVGVtcGxhdGVzLCB5b3UgY2FuIGNoYW5nZSB0aGUgbGF5b3V0IG9mIGFueSBvZiB0aGUgcGFnZXMgZ2VuZXJhdGVkIGJ5IENhdGFsb2dlci4gVGhpcyBzaG91bGQgbWFrZSBjZXJ0YWluIGRldmVsb3BlcnMgdmVyeSBoYXBweSwgZXZlbiBpZiB0aGUgaW5lZmZpY2llbmN5IG9mIHRoZSByZXN0IG9mIHRoZSBjb2RlIHdpbGwgbm90LiBUaGVyZSBhcmUgZm91ciBraW5kcyBvZiB0ZW1wbGF0ZXM6IG9uZSBraW5kIGZvciBDYXRhbG9nIEl0ZW1zLCBvbmUga2luZCBmb3IgQ2F0YWxvZyBDYXRlZ29yaWVzLCBhbmQgb25lIGtpbmQgZm9yIFByaW50YWJsZSBDYXRhbG9ncywgYW5kIG9uZSBraW5kIGZvciAiRmVhdHVyZSIgbGlzdHMsIHN1Y2ggYXMgcmVjZW50bHkgYWRkZWQgaXRlbXMgb3IgcmFuZG9tIHNlbGVjdGlvbnMuPC9wPg0KPHA+V2hlbiBlZGl0aW5nIGEgVGVtcGxhdGUsIHRoZSBhZG1pbiBzY3JlZW4gd2lsbCBkaXNwbGF5IGEgbGlzdCBvZiBTbWFydHkgdGFncyBhdmFpbGFibGUgdG8geW91IGZvciB0aGF0IGtpbmQgb2YgdGVtcGxhdGUuIFRoaXMNCndpbGwgb25seSBoYXBwZW4gb25jZSB0aGUgbW9kdWxlIGtub3dzIHdoYXQga2luZCBvZiB0ZW1wbGF0ZSB5b3VcJ3JlIGVkaXRpbmcsIHNvIHdoZW4geW91IGZpcnN0IGNyZWF0ZSB0aGUgdGVtcGxhdGUsIGl0IGRpc3BsYXlzIGFsbA0KdGhlIFNtYXJ0eSB0YWdzIGl0IGtub3dzIGFib3V0LCBvbmx5IHNvbWUgb2Ygd2hpY2ggYmVpbmcgYXBwbGljYWJsZS48L3A+DQo8aDQ+U21hcnR5IHRhZ3MgaW4gQXR0cmlidXRlczwvaDQ+DQo8cD5Tb21ldGltZXMsIHlvdVwnbGwgd2FudCB0aGUgZGVzY3JpcHRpb25zIG9mIHlvdXIgaXRlbXMgdG8gaW5jbHVkZSBzbWFydHkgdGFncyAoZS5nLiwgY21zX3NlbGZsaW5rKS4gVG8gbWFrZSB0aGF0IHdvcmssIHlvdVwnbGwgbmVlZCB0bw0KdXBkYXRlIHlvdXIgdGVtcGxhdGUuIEZvciB0aGUgYXR0cmlidXRlcyB3aGVyZSB5b3Ugd2FudCBzbWFydHkgdGFncyB0byBiZSBhY3RpdmUsIHlvdVwnbGwgbmVlZCB0byBuZXN0IHRoZSBzbWFydHkgZXZhbHVhdGlvbnMgaW4geW91ciB0ZW1wbGF0ZS4gRm9yIGV4YW1wbGU6PC9wPg0KPHByZT4NCntldmFsIHZhcj0kYXR0cmxpc3RbYXRdLmtleX0NCjwvcHJlPg0KPHA+YmVjb21lczo8L3A+DQo8cHJlPg0Ke2V2YWwgdmFyPSRlbnRyeS0+aW5wdXQgYXNzaWduPXRoaXNBdHRyfXtldmFsIHZhcj0kdGhpc0F0dHJ9DQo8L3ByZT4NCjxwPlVnbHk/IFl1cC4gQnV0IGl0IHdvcmtzLjwvcD4NCjxoMz5DYXRhbG9nZXIgSW1hZ2UgU3lzdGVtPC9oMz4NCjxwPkNhdGFsb2dlciBoYXMgYW4gaW1hZ2Ugc3lzdGVtIHRoYXQgd2lsbCBhbGxvdyB5b3UgdG8gZHluYW1pY2FsbHkgY2hhbmdlIHRoZSBpbWFnZSBkaXNwbGF5IHNpemUuIElmIHlvdSBkbyBub3QgbGlrZSBpdCwgeW91IGNhbiBhbHRlcg0KdGhlIHRlbXBsYXRlcyBhbmQgdXNlIGFueSBpbWFnZSBzeXN0ZW0geW91IHdhbnQuPC9wPg0KPHA+V2hlbiB5b3UgdXBsb2FkIGFuIGltYWdlIHVzaW5nIENhdGFsb2dlciwgaXQgZ2V0cyBwdXQgaW4gYSBzcGVjaWFsIHNldCBvZiBkaXJlY3RvcmllcyB0byBtYWtlIHRoZSBpbWFnaW5nIGVhc2llci4gWW91IHdpbGwgc2VlIG1vcmUNCmFib3V0IHRoaXMgbGF0ZXIuPC9wPg0KPHA+SXQgd29ya3MgYnkgY2FsbGluZyBhIFBIUCBwcm9ncmFtIGluc3RlYWQgb2YgZGlyZWN0bHkgcmVmZXJlbmNpbmcgdGhlIGltYWdlLiBUaGUgcHJvZ3JhbSB1c2VzIHRoZSBmaWxlbmFtZSB0byBzZWUgaWYgdGhlDQppbWFnZSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgY29ycmVjdCBzaXplLiBJZiBzbywgaXQgcmVkaXJlY3RzIHRvIHRoYXQgaW1hZ2UuIE90aGVyd2lzZSwgaXQgdXNlcyB5b3VyIEdETElCIG9yIEltYWdlTWFnaWNrIHRvIGNyZWF0ZQ0KdGhlIGltYWdlIGluIHRoZSBjb3JyZWN0IHNpemUsIGFuZCB0aGVuIHJlZGlyZWN0cyB0byBpdC4NCjwvcD4NCjxoND5DYXRhbG9nZXIgSW1hZ2UgRmlsZXNwZWMgRXhwbGFuYXRpb248L2g0Pg0KPHA+QSBjYXRhbG9nZXIgaW1hZ2UgaGFzIGEgZmlsZXNwZWMgbGlrZToNCjxiciAvPg0Kcm9vdF9wYXRoL21vZHVsZXMvQ2F0YWxvZ2VyL0NhdGFsb2dlci5JbWFnZS5waHA/aT1pdGVtbmFtZV9mXzFfNDAwXzEuanBnJmFjPTgyODg4DQo8L3A+DQo8cD5UaGUgaW50ZXJlc3RpbmcgdGhpbmcgaXMgIml0ZW1uYW1lX2ZfMV80MDBfMS5qcGciIC0gdGhlIHN0dWZmIGJlZm9yZSBpcyBqdXN0IGEgY2FsbCB0byB0aGUgcHJvZ3JhbSwgYW5kIHRoZSAmYWM9ODI4ODggaXMgYSByYW5kb20gdGhpbmcgdGhhdA0KaXMgZGVzaWduZWQgdG8gcHJldmVudCBicm93c2VyIGNhY2hpbmcuIFNvIGV4YW1pbmluZyB0aGUgbmFtZSBwaWVjZSBieSBwaWVjZSAoc2VwYXJhdGluZyBhdCB0aGUgdW5kZXJzY29yZXMpLCB3ZSBoYXZlOjwvcD4NCjx1bD4NCjxsaT5pdGVtIG5hbWUgLSB0aGlzIGlzIHRoZSBhbGlhcyBvZiB0aGUgaXRlbS9jYXRlZ29yeSBwYWdlIGNvbnRhaW5pbmcgdGhlIGltYWdlLjwvbGk+DQo8bGk+aW1hZ2UgdHlwZSAtIHRoaXMgaXMgYSBkZXNpZ25hdGlvbiBmb3IgaW1hZ2UgdHlwZTo8dWw+DQo8bGk+ZiAtIGl0ZW0gZnVsbC1zaXplIGltYWdlPC9saT4NCjxsaT50IC0gaXRlbSB0aHVtYm5haWw8L2xpPg0KPGxpPmNmIC0gY2F0ZWdvcnkgZnVsbC1zaXplZCBpbWFnZTwvbGk+DQo8bGk+Y3QgLSBjYXRlZ29yeSB0aHVtYm5haWw8L2xpPg0KPGxpPmN0ZiAtIHByaW50YWJsZSBjYXRhbG9nIGZ1bGwtc2l6ZWQgaW1hZ2U8L2xpPg0KPC91bD4NCjwvbGk+DQo8bGk+aW1hZ2UgbnVtYmVyIC0gc28gYSBnaXZlbiBpdGVtL2NhdGFsb2cvZXRjIGNhbiBoYXZlIG11bHRpcGxlIGltYWdlczwvbGk+DQo8bGk+bG9uZyBkaW1lbnNpb24gLSBsb25nIGRpbWVuc2lvbiBvZiB0aGUgaW1hZ2UsIGluIHBpeGVsczwvbGk+DQo8bGk+bWlzc2luZyBmbGFnIC0gMSBpZiB5b3Ugd2FudCB0byBzaG93IGFuICJpbWFnZSBtaXNzaW5nIiBpbWFnZSBpZiB0aGlzIGltYWdlIGRvZXNuXCd0IGV4aXN0LCAwIG90aGVyd2lzZTwvbGk+DQo8L3VsPg0KPHA+DQpUaGlzIHdpbGwgdGFrZSBhbiBpbWFnZSBpbiByb290X3BhdGgvdXBsb2Fkcy9pbWFnZXMvY2F0YWxvZ19zcmMvaXRlbW5hbWVfc3JjXzENCjwvcD4NCjxoMz5DcmVkaXRzPC9oMz4NCjxwPlRoYW5rcyB0byA8YSBocmVmPSJodHRwOi8vd3d3LmlkLWEuY28udWsiPlBhdWwgQ29vcGVyPC9hPiBmb3Igc3BvbnNvcmluZyB0aGUgZGV2ZWxvcG1lbnQgb2YgdGV4dGFyZWEgYXR0cmlidXRlcy48L3A+DQo8cD5UaGFua3MgdG8gbnVtZXJvdXMgcGF0aWVudCB1c2VycyBhbmQgYnVnIHRlc3RlcnMgKG1hbnkgb2Ygd2hvbSBoYWQgbm8gaWRlYSB3aGF0IHRoZXkgd2VyZSBnZXR0aW5nIGludG8uKTwvcD4gDQo8aDM+U3VwcG9ydDwvaDM+DQo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+DQo8dWw+DQo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgQ01TIE1hZGUgU2ltcGxlICA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnIj5EZXZlbG9wZXIgRm9yZ2U8L2E+LjwvbGk+DQo8bGk+VG8gb2J0YWluIGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHNlbmQgYW4gZW1haWwgdG8gdGhlIGF1dGhvciBhdCA8YSBocmVmPSJtYWlsdG86c2pnQGNtc21vZHVsZXMuY29tIj48c2pnQGNtc21vZHVsZXMuY29tPjwvYT4uPC9saT4NCjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjxsaT5UaGUgYXV0aG9yIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkgYW5kIGdyb3ZlbGxpbmcgZm9yIGZyZWUgc3VwcG9ydC48L2xpPg0KPC91bD4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dA0Kb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD5Db3B5cmlnaHQgwqkgMjAwNywgU2FtdWVsIEdvbGRzdGVpbiA8YSBocmVmPSJtYWlsdG86c2pnQGNtc21vZHVsZXMuY29tIj48c2pnQGNtc21vZHVsZXMuY29tPjwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+JzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4NCjxsaT5WZXJzaW9uIDAuNyAtIDE3IE1hcmNoIDIwMDguIDxlbT5GaW5hbGx5PC9lbT4gYWRkZWQgcGVyLXBhZ2UgbWV0YS1kYXRhLiBBbmQgdGhlcmUgd2FzIGdyZWF0IGNlbGVicmF0aW9uIGluIHRoZSBzdHJlZXRzLCBhbmQgZGFuY2luZyBpbiB0aGUgdG93biBzcXVhcmUuIEFsc28gYWRkZWQgaW4gbWFueSBIVE1MIGFuZCBsb2NhbGl6YXRpb24gZml4ZXMgY29udHJpYnV0ZWQgYnkgTnVubyBDb3N0YS48L2xpPg0KPGxpPlZlcnNpb24gMC42LjIgLSA3IEphbnVhcnkgMjAwNy4gRml4ZWQgbmFzdHkgYnVnIHdoZXJlIHVwZ3JhZGluZyBtYWtlcyBpdCBsb29rIGxpa2UgYWxsIHlvdXIgbm90ZSBmaWVsZHMgYXJlIGxvc3QuPC9saT4NCjxsaT5WZXJzaW9uIDAuNi4xIC0gMiBKYW51YXJ5IDIwMDcuIEZpeGVkIG5hc3R5IGJ1ZyB3aGVyZSBjaGFuZ2luZyBjb250ZW50IHR5cGUgZnJvbSAiY29udGVudCIgdG8gY2F0YWxvZyBjb250ZW50IHR5cGVzIHJlbmFtZWQgYWxsIGNhdGFsb2cgaW1hZ2VzLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjYgLSAyOSBEZWNlbWJlciAyMDA3LiA8dWw+DQo8bGk+QnVnIGZpeDogSW1hZ2VzIGRvblwndCBnZXQgImxvc3QiIHdoZW4gcGFnZSBhbGlhcyBjaGFuZ2VzLjwvbGk+DQo8bGk+QnVnIGZpeDogQXR0cmlidXRlIGNvbnRlbnQgZG9lc25cJ3QgZ2V0ICJsb3N0IiB3aGVuIGF0dHJpYnV0ZXMgYXJlIHJlbmFtZWQuPC9saT4NCjxsaT5CdWcgZml4OiBGaXhlZCBQcmludGFibGUgQ2F0YWxvZy4gV29ya3MgZm9yIGZpcnN0IHRpbWUgc2luY2Ugdi4wLjQgb3IgdGhlcmVhYm91dHMuPC9saT4NCjxsaT5CdWcgZml4OiBOb3cgaG9ub3JzIHN5c3RlbSBwcmVmZXJlbmNlIGZvciBXWVNJV1lHIGVkaXRpbmcgb2YgdGV4dCBhcmVhcy48L2xpPg0KPGxpPkZlYXR1cmU6IEF0dHJpYnV0ZXMgbWF5IG5vdyBiZSB0ZXh0IGFyZWFzLjwvbGk+DQo8L3VsPg0KPC9saT4NCjxsaT5WZXJzaW9uIDAuNS42IC0gMTAgRGVjZW1iZXIgMjAwNy4gVGFyZHkgcm9sbG91dCBvZiBmaXhlczogPHVsPg0KPGxpPkFkZGVkIGNvZGUgdG8gcHJldmVudCBzaG93aW5nIG9mIG5vbi11cGxvYWRlZCBpbWFnZXMsIGNhdGVnb3J5IHBhZ2UgYnVmZmVyIGZsdXNoaW5nIGZvciBleHRyZW1lIGNhc2VzLCBtaW5vciBidWcgZml4ZXM8L2xpPg0KPGxpPkZpeCBmb3IgXCdyZWNlbnRcJyBhY3Rpb24gd2hlbiBhbGlhcyBpcyAvPC9saT4NCjxsaT5GaXggZm9yIHRoZSBwcm9ibGVtIHdoZXJlIGNhdGFsb2dzIHdpdGggbW9yZSB0aGFuIHRlbiBjYXRlZ29yaWVzIGhhdmUgaXRlbXMgZGlzcGxheWVkIGluIGluY29ycmVjdCBjYXRlZ29yaWVzPC9saT48L3VsPjwvbGk+DQo8bGk+VmVyc2lvbiAwLjUuNSAtIDIwIEp1bmUgMjAwNy4gRml4IGZvciBDb250ZW50IEFsaWFzIHN1cHBvcnQgLSByZXF1aXJlcyBDb250ZW50IEFsaWFzIHYuIDAuNi4xLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjUuNCAtIDE5IEp1bmUgMjAwNy4gQWRkZWQgImFsbCIgZmVhdHVyZSBsaXN0LjwvbGk+DQo8bGk+VmVyc2lvbiAwLjUuMyAtIDIxIFNlcHRlbWJlciAyMDA2LiBBZGRlZCBsaW5rcyB0byBzb3VyY2UgKG5vbi1yZXNjYWxlZCkgaW1hZ2VzLCBhbmQgYWRkZWQgaW1hZ2UgZGVsZXRlIGZ1bmN0aW9uYWxpdHkuPC9saT4NCjxsaT5WZXJzaW9uIDAuNS4yIC0gMTcgU2VwdGVtYmVyIDIwMDYuIFJlbW92ZWQgZGVidWcgb3V0cHV0LCByZXZpc2VkIGltYWdlIHN5c3RlbSAoZml4ZWQgYnVncykuIENhY2hpbmcgYnVnIHNlZW1zIHRvIHJlbWFpbi48L2xpPg0KPGxpPlZlcnNpb24gMC41LjEgLSAyNCBBdWd1c3QgMjAwNi4gKGNhbGd1eTEwMDApLCBVcHBlZCBNaW5pbXVtQ01TVmVyc2lvbiB0byAxLjAtc3ZuLCBhbmQgbW9yZSAxLjAgY2hhbmdlcyB3ZXJlIGFkZGVkIChyZW1vdmVkIHN0YXRpYyBtZXRob2RzKTwvbGk+DQo8bGk+VmVyc2lvbiAwLjUgLSAxNiBBdWd1c3QgMjAwNi4gQXNzb3J0ZWQgY29udHJpYnV0ZWQgYnVnIGZpeGVzIGZvciBDTVMgTVMgMS4wLCAgbmV3IG9wdGlvbnMgZm9yIGltYWdlcy48L2xpPg0KPGxpPlZlcnNpb24gMC40LjIgLSAyOCBNYXkgMjAwNi4gQnVnIGZpeCBmb3IgYXR0cmlidXRlcyBpbiBjYXRlZ29yeSBwYWdlcy4gQWRkZWQgIi8iIHBhZ2VfYWxpYXMgZm9yIGZlYXR1cmUgbGlzdHMuPC9saT4NCjxsaT5WZXJzaW9uIDAuNC4xIC0gMjMgTWF5IDIwMDYuIEJ1ZyBmaXggdG8gbWFrZSB3b3JrIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgQ01TIE1TLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjQgLSAyMiBNYXkgMjAwNi4gQnVnIGZpeGVzLCBGZWF0dXJlIExpc3RzLjwvbGk+DQo8bGk+VmVyc2lvbiAwLjMgLSAodW5yZWxlYXNlZCwgcHVibGlzaGVkIGZyb20gc3ZuKTwvbGk+DQo8bGk+VmVyc2lvbiAwLjIgLSAyMyBNYXJjaCAyMDA2LiBOdW1lcm91cyBidWcgZml4ZXMuIFBlcmZvcm1hbmNlIGltcHJvdmVtZW50cy4gTWVtb3J5IGZvb3RwcmludCBvcHRpbWl6YXRpb25zLiBOb3cgdXNlcyB0aGUgQ01TIDAuMTIgTW9kdWxlIEFQSS48L2xpPg0KPGxpPlZlcnNpb24gMC4xLjUgLSAxNyBOb3ZlbWJlciAyMDA1LiBJbml0aWFsIFJlbGVhc2UuIEplc3VzLCB0aGF0IHRvb2sgYSBsb25nIHRpbWUuPC9saT4NCjxsaT5WZXJzaW9uIDAuMSAtIDE5IE1hcmNoIDIwMDUuIFByb2plY3QgSW5pdGlhdGlvbi48L2xpPg0KPC91bD4nOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICfQo9Cx0LXQtNC40YLQtdGB0Ywg0LIg0YLQvtC8LCDRh9GC0L7QsdGLINCx0YvQu9C4INGD0YHRgtCw0L3QvtCy0LvQtdC90L3RiyDQv9GA0LDQstCwINC90LAgItCY0LfQvNC10L3QtdC90LjQtSDQvdCw0YHRgtGA0L7QudC60Lgg0LrQsNGC0LDQu9C+0LPQsCIg0LTQu9GPINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5LCDQutC+0YLQvtGA0YvQtSDQsdGD0LTRg9GCINGD0L/RgNCw0LLQu9GP0YLRjCDQutCw0YLQsNC70L7Qs9C+0LwuJzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTIzNzU1NTYwOC4yOS4yNC51dG1jY249KHJlZmVycmFsKXx1dG1jc3I9Zm9ydW0uY21zbWFkZXNpbXBsZS5vcmd8dXRtY2N0PS9pbmRleC5waHAvdG9waWMsMjc2MjYuMC5odG1sfHV0bWNtZD1yZWZlcnJhbCc7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjE1MTI0ODU2ODkuMTIzNjg3NDcyMS4xMjM3NTU1NjA4LjEyMzc1NTgxMTcuMzAnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/sk_SK.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ25hbWVpbWFnZXMnXSA9ICdPYnImYWFjdXRlO3preSc7CiRsYW5nWydkZWxldGVpbWFnZSddID0gJ09kc3RyJmFhY3V0ZTtuacWlIG9iciZhYWN1dGU7emtvbSc7CiRsYW5nWydPd25lciddID0gJ1ZsYXN0biZpYWN1dGU7ayc7CiRsYW5nWydDYXRhbG9nSXRlbSddID0gJ0l0ZW0gQ2F0YWxvZ2VyJzsKJGxhbmdbJ25hbWVwYWdlJ10gPSAnU3RyYW5hJzsKJGxhbmdbJ1Blcm1pc3Npb25zJ10gPSAnT3ByJmFhY3V0ZTt2bmVuaWEnOwokbGFuZ1snU3ViJ10gPSAnUG9kIC0nOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2l0ZW1fc29ydF9vcmRlcjInXSA9ICdUcmllZGVuaWUgcG9sb8W+aWVrJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtc19wZXJfcGFnZTInXSA9ICdQb2xvxb5pZWsgbmEgc3RyJmFhY3V0ZTtua3UnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2NhdGVnb3J5X3JlY3Vyc2UyJ10gPSAnWm9icmF6acWlIHNwciZhYWN1dGU7dmFuaWUnOwokbGFuZ1snd2hpY2hfYXR0cmlidXRlcyddID0gJ1doaWNoIGF0dHJpYnV0ZXMgc2hvdWxkIGJlIHNob3duIGluIGNhdGFsb2cnOwokbGFuZ1snbmF2VGFiJ10gPSAnIHwgJzsKJGxhbmdbJ25lZWRwZXJtaXNzaW9uJ10gPSAnUG90cmVidWpldGUgbmFzdGF2acWlICVzIHByZSB0JnVhY3V0ZTt0byBha2NpdS4nOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnS2F0YWxvZ2VyJzsKJGxhbmdbJ2FkbWluZGVzY3JpcHRpb24nXSA9ICdVcHJhdmnFpSBuYXN0YXZlbmlhIGthdGFsJm9hY3V0ZTtndSc7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnU3RlIHJvemhvZG51dCZpYWN1dGU7IHptYXphxaUgJXM/JzsKJGxhbmdbJ3VuaXF1ZWNvZGUnXSA9ICdVbmlrJmFhY3V0ZTt0bnkgayZvYWN1dGU7ZCc7CiRsYW5nWyd0ZW1wbGF0ZWxpc3QnXSA9ICdQb2Qmc2Nhcm9uO2FibG9ueSc7CiRsYW5nWydsaXN0dGVtcGwnXSA9ICdVcHJhdmnFpSBwb2Qmc2Nhcm9uO2FibG9ueSc7CiRsYW5nWyd0aXRsZV9pdGVtX3RhYiddID0gJ0F0cmliJnVhY3V0ZTt0eSBwb2xvxb5pZWsnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfdGFiJ10gPSAnQXRyaWImdWFjdXRlO3R5IGthdGVnJm9hY3V0ZTtyaWUnOwokbGFuZ1sndGl0bGVfcHJpbnRhYmxlX3RhYiddID0gJ05hc3RhdmVuaWUgc3RyJmFhY3V0ZTtua3kgcHJlIHRsYcSNJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2VfdGFiJ10gPSAnVmXEvmtvc8WlIG9iciZhYWN1dGU7emt1IHBvbG/Fvmt5JzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX3RhYiddID0gJ05hc3RhdmVuaWUgc3RyJmFhY3V0ZTtua3kga2F0ZWcmb2FjdXRlO3JpJmlhY3V0ZTsnOwokbGFuZ1sndGl0bGVfaXNfdGV4dGZpZWxkJ10gPSAnVGV4dG92JmFhY3V0ZTsgb2JsYXPFpT8nOwokbGFuZ1sndGl0bGVfZGVsZXRlJ10gPSAnT2RzdHImYWFjdXRlO25pxaU/JzsKJGxhbmdbJ3RpdGxlX2FzcGVjdF90YWInXSA9ICdQb21lciBzdHImYWFjdXRlO24gb2JyJmFhY3V0ZTt6a3UnOwokbGFuZ1sndGl0bGVfaW1hZ2VfdGFiJ10gPSAnxI5hbCZzY2Fyb247aWUgbmFzdGF2ZW5pYSBwcmUgb2JyJmFhY3V0ZTt6b2snOwokbGFuZ1sndGl0bGVfaXRlbV90ZW1wbGF0ZV92YXJzJ10gPSAnUHJlbWVubiZlYWN1dGU7ICZzY2Fyb247YWJsb255IHBvbG/Fvmt5JzsKJGxhbmdbJ3RpdGxlX2NhdF90ZW1wbGF0ZV92YXJzJ10gPSAnUHJlbWVubiZlYWN1dGU7ICZzY2Fyb247YWJsb255IGthdGVnb3JpZSc7CiRsYW5nWyd0aXRsZV9mZWF0dXJlX3RlbXBsYXRlX3ZhcnMnXSA9ICdGZWF0dXJlcyBUZW1wbGF0ZSBWYXJpYWJsZXMnOwokbGFuZ1sndGl0bGVfc2hvd19vbmx5X2V4aXN0aW5nX2ltYWdlcyddID0gJ0RvbiYjMDM5O3QgaW5jbHVkZSBtaXNzaW5nIGltYWdlcyc7CiRsYW5nWyd0aXRsZV9zaG93X29ubHlfZXhpc3RpbmdfaW1hZ2VzX2hlbHAnXSA9ICdUaGlzIHdpbGwgb25seSBwdXQgaW1hZ2UgcmVmZXJlbmNlcyBpbnRvIGxpc3RzIGlmIHRoZSBpbWFnZSBleGlzdHMuPGJyIC8+KE5vcm1hbGx5LCB0aGlzIGlzIGZpbmUsIGJ1dCBpZiB5b3UgYXJlIGRvaW5nIHNvbWV0aGluZyBjbGV2ZXIgd2l0aCBpbWFnZTxiciAvPmFycmF5IGluZGV4ZXMsIHRoaXMgY291bGQgY2F1c2UgeW91IHRyb3VibGUuKSc7CiRsYW5nWyd0aXRsZV9mbHVzaF9jYXRzJ10gPSAnRmx1c2ggY2F0ZWdvcnkgcGFnZSBidWZmZXJzJzsKJGxhbmdbJ3RpdGxlX2ZsdXNoX2NhdHNfaGVscCddID0gJ0lmIHlvdSBoYXZlIGEgaHVnZSBudW1iZXIgb2YgaXRlbXMgZGlzcGxheWVkPGJyIC8+aW4gYSBjYXRlZ29yeSwgc29tZSBQSFAgaW5zdGFsbHMgd2lsbCBmYWlsIHRvIGRpc3BsYXkgdGhlIHBhZ2U8YnIgLz5jb3JyZWN0bHkuIENoZWNrIHRoaXMgYm94IHRvIHNvbHZlIHRoaXMgcHJvYmxlbSAodGVzdCBmb3Igc2lkZSBlZmZlY3RzKS4nOwokbGFuZ1snY2F0YWxvZ2VyJ10gPSAnS2F0YWxvZ2VyJzsKJGxhbmdbJ2l0ZW1fcGFnZSddID0gJ1N0ciZhYWN1dGU7bmthIHBvbG/Fvmt5JzsKJGxhbmdbJ2NhdGVnb3J5X3BhZ2UnXSA9ICdTdHImYWFjdXRlO25rYSBrYXRlZyZvYWN1dGU7cmllJzsKJGxhbmdbJ2NhdGFsb2dfcHJpbnRhYmxlJ10gPSAnS2F0YWwmb2FjdXRlO2cgbmEgdnl0bGHEjWVuaWUnOwokbGFuZ1snY2F0YWxvZ19kYXRhc2hlZXQnXSA9ICdUYWJ1xL5rYSBrYXRhbG9ndSc7CiRsYW5nWydjYXRhbG9nX3Nob3J0X2xpc3QnXSA9ICdGZWF0dXJlIExpc3QnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2l0ZW1fc29ydF9vcmRlciddID0gJ05hc3RhdmnFpSB0cmllZGVuaWUgcG9sb8W+aWVrJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtc19wZXJfcGFnZSddID0gJ05hc3RhdmnFpSBwb8SNZXQgcG9sb8W+aWVrIG5hIHN0ciZhYWN1dGU7bmt1JzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9jYXRlZ29yeV9yZWN1cnNlJ10gPSAnTmFzdGF2acWlIHBvcGlzb2sga2F0ZWcmb2FjdXRlO3JpZSc7CiRsYW5nWyd0aXRsZV9pdGVtX3NvcnRfb3JkZXInXSA9ICdaJmFhY3V0ZTtrbGFkbiZlYWN1dGU7IG5hc3RhdmVuaWUgdHJpZWRlbmlhIHBvbG/Fvmllayc7CiRsYW5nWyd0aXRsZV9wcmludGFibGVfc29ydF9vcmRlciddID0gJ1ByZWR2b2xlbiZlYWN1dGU7IHRyaWVkZW5pZSB0bGHEjWVuJmVhY3V0ZTtobyBrYXRhbCZvYWN1dGU7Z3UnOwokbGFuZ1sndGl0bGVfaXRlbXNfcGVyX3BhZ2UnXSA9ICdQcmVkdm9sZW4meWFjdXRlOyBwb8SNZXQgcG9sb8W+aWVrIG5hIHN0ciZhYWN1dGU7bmt1JzsKJGxhbmdbJ3RpdGxlX2F2YWlsX2F0dHJzJ10gPSAnQXRyaWImdWFjdXRlO3R5IHBvbG/Fvmt5IHBvdcW+aXRlxL5uJmVhY3V0ZTsgcHJlICZzY2Fyb247YWJsb251JzsKJGxhbmdbJ3RpdGxlX2F2YWlsX2ltYXR0cnMnXSA9ICdPYnImYWFjdXRlO3preSBwb2xvxb5reSBwb3XFvml0ZcS+biZlYWN1dGU7IHByZSAmc2Nhcm9uO2FibG9udSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfaGVybyddID0gJ1ZlxL5rb3PFpSBvYnImYWFjdXRlO3prdSB2IHN0ciZhYWN1dGU7bmtlIHBvbG/Fvmt5IChkbGgmc2Nhcm9uO2lhIHN0cmFuYSB2IHBpeGVsb2NoKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfdGh1bWJuYWlsJ10gPSAnVmXEvmtvc8WlIG4mYWFjdXRlO2jEvmFkdSBwb2xvxb5reSB2IHN0ciZhYWN1dGU7bmtlIHBvbG/Fvmt5IChkbGgmc2Nhcm9uO2lhIHN0cmFuYSB2IHBpeGVsb2NoKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfY2F0ZWdvcnknXSA9ICdWZcS+a29zxaUgbiZhYWN1dGU7aMS+YWR1IHBvbG/Fvmt5IHYga2F0ZWdvcmlhY2ggKGRsaCZzY2Fyb247aWEgc3RyYW5hIHYgcGl4ZWxvY2gpJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV9jYXRhbG9nJ10gPSAnVmXEvmtvc8WlIG9iciZhYWN1dGU7emt1IHBvbG/Fvmt5IHYga2F0YWxvZ3UgKGRsaCZzY2Fyb247aWEgc3RyYW5hIHYgcGl4ZWxvY2gpJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX3NpemVfaGVybyddID0gJ1ZlxL5rb3PFpSBvYnImYWFjdXRlO3prdSB2IHN0ciZhYWN1dGU7bmtlIGthdGVnJm9hY3V0ZTtyaWUgKGRsaCZzY2Fyb247aWEgc3RyYW5hIHYgcGl4ZWxvY2gpJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX3NpemVfdGh1bWJuYWlsJ10gPSAnVmXEvmtvc8WlIG4mYWFjdXRlO2jEvmFkdSB2IHN0ciZhYWN1dGU7bmtlIGthdGVnJm9hY3V0ZTtyaWUgKGRsaCZzY2Fyb247aWEgc3RyYW5hIHYgcGl4ZWxvY2gpJzsKJGxhbmdbJ3RpdGxlX3RlbXBsYXRlJ10gPSAnJlNjYXJvbjthYmxvbmEnOwokbGFuZ1sndGl0bGVfdGVtcGxhdGVfdHlwZSddID0gJ1R5cCAmc2Nhcm9uO2FibG9ueSc7CiRsYW5nWyd0aXRsZV90aXRsZSddID0gJ1RpdHVsb2snOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9jb3VudCddID0gJ01heGltJmFhY3V0ZTtsbnkgcG/EjWV0IHpvYnJhemVuJmlhY3V0ZTsga2HFvmRlaiBwb2xvxb5reSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9pbWFnZV9jb3VudCddID0gJ01heGltJmFhY3V0ZTtsbnkgcG/EjWV0IHpvYnJhemVuJmlhY3V0ZTsgYmFuZXJ1IHByZSBrYcW+ZCZ1YWN1dGU7IHN0ciZhYWN1dGU7bmt1IGthdGVnJm9hY3V0ZTtyaWUnOwokbGFuZ1sndGl0bGVfaXRlbV9hdHRyaWJ1dGVzX2hlbHAnXSA9ICdLYcW+ZCZ5YWN1dGU7IGF0cmliJnVhY3V0ZTt0LCBrdG9yJnlhY3V0ZTsgdHUgemFkJmFhY3V0ZTt0ZSBidWRlIHRpdHVsb2sgcG/EvmEsIGt0b3ImeWFjdXRlOyBtb8W+ZXRlIHBvdcW+acWlIG5hIHBvcGlzIGplZG5vdGxpdmVqIHBvbG/Fvmt5LCBhIGJ1ZGUgem9icmF6ZW4meWFjdXRlOyBzIHRvdXRvIHBvbG/FvmtvdS4gTSZvY2lyYzvFvmV0ZSB1cHJhdmnFpSB2YSZzY2Fyb247ZSAmc2Nhcm9uO2FibG9ueSBwcmUgcG91xb5pdGllIHQmeWFjdXRlO2NodG8gYXRyaWJ1dG92LiBOYXAmaWFjdXRlOyZzY2Fyb247dGUgbm92JnlhY3V0ZTssIGFsZWJvIHByZXAmaWFjdXRlOyZzY2Fyb247dGUgdcW+IGV4aXN0dWomdWFjdXRlO2NpIGF0cmliJnVhY3V0ZTt0Lic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9hdHRyaWJ1dGVzX2hlbHAnXSA9ICdLYcW+ZCZ5YWN1dGU7IGF0cmliJnVhY3V0ZTt0LCBrdG9yJnlhY3V0ZTsgdHUgemFkJmFhY3V0ZTt0ZSBidWRlIHRpdHVsb2sgcG/EvmEsIGt0b3ImeWFjdXRlOyBtb8W+ZXRlIHBvdcW+acWlIG5hIHBvcGlzIHBvbG/Fvmt5IGthdGVnb3JpZSBhIGJ1ZGUgem9icmF6ZW4meWFjdXRlOyBuYSBzdHImYWFjdXRlO25rZSBrYXRlZ29yaWUuIE0mb2NpcmM7xb5ldGUgdXByYXZpxaUgdmEmc2Nhcm9uO2UgJnNjYXJvbjthYmxvbnkgcHJlIHBvdcW+aXRpZSB0JnlhY3V0ZTtjaHRvIGF0cmlidXRvdi4gTmFwJmlhY3V0ZTsmc2Nhcm9uO3RlIG5vdiZ5YWN1dGU7LCBhbGVibyBwcmVwJmlhY3V0ZTsmc2Nhcm9uO3RlIHXFviBleGlzdHVqJnVhY3V0ZTtjaSBhdHJpYiZ1YWN1dGU7dC4nOwokbGFuZ1sndGl0bGVfY2F0YWxvZ19hdHRyaWJ1dGVzX2hlbHAnXSA9ICdLYcW+ZCZ5YWN1dGU7IGF0cmliJnVhY3V0ZTt0LCBrdG9yJnlhY3V0ZTsgdHUgemFkJmFhY3V0ZTt0ZSBidWRlIHRpdHVsb2sgcG/EvmEsIGt0b3ImeWFjdXRlOyBtb8W+ZXRlIHBvdcW+acWlIG5hIHBvcGlzIGNlbCZlYWN1dGU7aG8ga2F0YWxvZ3UsIGEgYnVkZSB6b2JyYXplbiZ5YWN1dGU7IG5hIHRsYcSNZW5laiBzdHImYWFjdXRlO25rZSBrYXRhbG9ndS4gTSZvY2lyYzvFvmV0ZSB1cHJhdmnFpSB2YSZzY2Fyb247ZSAmc2Nhcm9uO2FibG9ueSBwcmUgcG91xb5pdGllIHQmeWFjdXRlO2NodG8gYXRyaWJ1dG92LiBOYXAmaWFjdXRlOyZzY2Fyb247dGUgbm92JnlhY3V0ZTssIGFsZWJvIHByZXAmaWFjdXRlOyZzY2Fyb247dGUgdcW+IGV4aXN0dWomdWFjdXRlO2NpIGF0cmliJnVhY3V0ZTt0Lic7CiRsYW5nWyd0aXRsZV9mb3JjZV9hc3BlY3RfcmF0aW8nXSA9ICdVcHJhdmnFpSBvYnImYWFjdXRlO3preSBuYSAmc2Nhcm9uO3BlY2lmaWNrJnlhY3V0ZTsgcG9tZXIgc3RyJmFhY3V0ZTtuPyc7CiRsYW5nWyd0aXRsZV9mb3JjZV9hc3BlY3RfcmF0aW9fbGFiZWwnXSA9ICdVcHJhdmnFpSBwb21lciBzdHImYWFjdXRlO24gKGUmc2Nhcm9uO3RlIG5pZSBqZSBpbXBsZW1lbnRvdmFuJmVhY3V0ZTspJzsKJGxhbmdbJ3RpdGxlX2ltYWdlX2FzcGVjdF9yYXRpbyddID0gJ1BvbWVyIHN0ciZhYWN1dGU7biAobmFzdGF2dGUgbmFwci4gJnF1b3Q7NDozJnF1b3Q7IGFsZWJvICZxdW90OzE6Mi41JnF1b3Q7KSc7CiRsYW5nWyd0aXRsZV9hc3BlY3RfcmF0aW9faGVscCddID0gJ0FrIG5hc3RhdiZpYWN1dGU7dGUgb2JyJmFhY3V0ZTt6b2sgbmEgJnNjYXJvbjtwZWNpZmljayZ5YWN1dGU7IHBvbWVyIHN0ciZhYWN1dGU7biwgYnVkZSB1cHJhdmVuJnlhY3V0ZTsgbmEgcHJlc24meWFjdXRlOyBwb21lciBzdHImYWFjdXRlO24gKGFsZWJvIGplaG8gb3BhaywgdGFrxb5lIG0mb2NpcmM7xb5ldGUgbWHFpSBwb3J0ciZlYWN1dGU7dCwgYWogb2JyJmFhY3V0ZTt6b2sga3JhamlueSkuIE9iciZhYWN1dGU7emt5IGJ1ZCZ1YWN1dGU7IHVwcmF2ZW4mZWFjdXRlOyBuYSB2ZcS+a29zxaUgcG9kxL5hICZzY2Fyb247cGVjaWZpayZhYWN1dGU7Y2llIGRsaCZzY2Fyb247ZWogc3RyYW55LiA8Yj50b3RvIGUmc2Nhcm9uO3RlIG5pZSBqZSBpbXBsZW1lbnRvdmFuJmVhY3V0ZTshPC9iPic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9zb3J0J10gPSAnU3RyJmFhY3V0ZTtua2Ega2F0ZWdvcmllLCBMaXN0IHBvbG/FvmllayB0cmllZGVuaWUnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZSddID0gJ1omYWFjdXRlO2tsYWRuJmVhY3V0ZTsgbmFzdGF2ZW5pZSB6b2JyYXpvdmFuaWEga2F0ZWdvcmllJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfaXRlbXNfYWxsJ10gPSAnVnImYWFjdXRlO3RhbmUgdiZzY2Fyb247ZXRrJnlhY3V0ZTtjaCBwb2xvxb5pZWsgdiB0ZWp0byBrYXRlZ29yaWksIHZyJmFhY3V0ZTt0YW5lIHBvbG/FvmllayB2IHBvZGthdGVnb3JpYWNoJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfaXRlbXNfb25lJ10gPSAnVnImYWFjdXRlO3RhbmUgdiZzY2Fyb247ZXRrJnlhY3V0ZTtjaCBwb2xvxb5pZWsgcHJpYW1vIHYgdGVqdG8ga2F0ZWdvcmlpLCBhbGUgbmllIHBvbG/Fvmt5IHYgcG9ka2F0ZWdvcmlhY2gnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9jYXRlZ29yaWVzX2FsbCddID0gJ1ZyJmFhY3V0ZTt0YW5lIHYmc2Nhcm9uO2V0ayZ5YWN1dGU7Y2gga2F0ZWdvcmlpIHYgdGVqdG8ga2F0ZWdvcmlpLCB2ciZhYWN1dGU7dGFuZSBwb2xvxb5pZWsgdiBwb2RrYXRlZ29yaWFjaCc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2NhdGVnb3JpZXNfb25lJ10gPSAnVnImYWFjdXRlO3RhbmUgdiZzY2Fyb247ZXRrJnlhY3V0ZTtjaCBrYXRlZ29yaWkgcHJpYW1vIHYgdGVqdG8ga2F0ZWdvcmlpLCBhbGUgbmllIGthdGVnb3JpZSB2IHBvZGthdGVnb3JpYWNoJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfbWl4ZWRfYWxsJ10gPSAnVnImYWFjdXRlO3RhbmUgdiZzY2Fyb247ZXRrJnlhY3V0ZTtjaCBwb2xvxb5pZWsgYSBrYXRlZ29yaWkgdiB0ZWp0byBrYXRlZ29yaWksIHZyJmFhY3V0ZTt0YW5lIHBvbG/FvmllayBhIGthdGVnb3JpaSB2IHBvZGthdGVnb3JpYWNoJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfbWl4ZWRfb25lJ10gPSAnVnImYWFjdXRlO3RhbmUgdiZzY2Fyb247ZXRrJnlhY3V0ZTtjaCBwb2xvxb5pZWsgYSBrYXRlZ29yaWkgcHJpYW1vIHYgdGVqdG8ga2F0ZWdvcmlpLCBhbGUgbmllIHBvbG/Fvmt5LCBhbGVibyBrYXRlZ29yaWUgdiBwb2RrYXRlZ29yaWFjaCc7CiRsYW5nWyd0aXRsZV9zaG93X21pc3NpbmdfaW1hZ2VzJ10gPSAnU2hvdyAmcXVvdDtObyBJbWFnZSZxdW90OyBpbWFnZSBmb3IgbWlzc2luZyBpbWFnZXMnOwokbGFuZ1sndGl0bGVfc2hvd19taXNzaW5nX2ltYWdlc19sb25nJ10gPSAnU2hvdyBhIHNwZWNpYWwgJnF1b3Q7Tm8gSW1hZ2UmcXVvdDsgaW1hZ2UgaWYgdGhlcmUgYXJlIG1pc3NpbmcgaW1hZ2VzICh1c2VmdWwgZm9yIGRlYnVnZ2luZy4gT3RoZXJ3aXNlIHdpbGwgdXNlIGEgc2luZ2xlIHBpeGVsIHRyYW5zcGFyZW50IGltYWdlKS4nOwokbGFuZ1snbmF0dXJhbF9vcmRlciddID0gJ1RyaWVkZW5pZSBwb2TEvmEgbmF2aWcmYWFjdXRlO2NpZSc7CiRsYW5nWydhbHBoYV9vcmRlciddID0gJ1RyaWVkZW5pZSBwb2TEvmEgYWJlY2VkeSc7CiRsYW5nWydtYW5hZ2VwcmVmcyddID0gJ05hc3RhdmnFpSBwcmVkdm/EvmJ5JzsKJGxhbmdbJ21hbmFnZWF0dHJzJ10gPSAnTmFzdGF2acWlIHBvdcW+JmlhY3V0ZTt2YXRlxL5zayZlYWN1dGU7IGF0cmliJnVhY3V0ZTt0eSc7CiRsYW5nWydnbG9iYWxvcHMnXSA9ICdHbG9iJmFhY3V0ZTtsbmUgbmFzdGF2ZW5pZSBrYXRhbCZvYWN1dGU7Z3UnOwokbGFuZ1snYWRkdGVtcGxhdGUnXSA9ICdQcmlkYcWlIG5vdiZ1YWN1dGU7IHBvZCZzY2Fyb247YWJsb251JzsKJGxhbmdbJ3JlaW1wb3J0dGVtcGxhdGVzJ10gPSAnWm5vdnUgaW1wb3J0b3ZhxaUgcHImaWFjdXRlO2tsYWR5IHBvZCZzY2Fyb247YWJsb24nOwokbGFuZ1sncmVpbXBvcnRlZCddID0gJ1ByJmlhY3V0ZTtrbGFkeSBwb2Qmc2Nhcm9uO2FibG9uIGJvbGkgaW1wb3J0b3ZhbiZlYWN1dGU7Lic7CiRsYW5nWyd0ZW1wbGF0ZXVwZGF0ZWQnXSA9ICcmU2Nhcm9uO2FibG9uYSBwcmlkYW4mYWFjdXRlOy91cHJhdmVuJmFhY3V0ZTsuJzsKJGxhbmdbJ3RlbXBsYXRlZGVsZXRlZCddID0gJyZTY2Fyb247YWJsb25hIGJvbGEgem1hemFuJmFhY3V0ZTsuJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ05Bc3RhdmVuaWEgYm9saSB1cHJhdmVuJmVhY3V0ZTsuJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsIHZlcnppZSAlcyBuYWluJnNjYXJvbjt0YWxvdmFuJnlhY3V0ZTsuJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWwgdXBncmFkb3ZhbiZ5YWN1dGU7IG5hIHZlcnppdSAlcy4nOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bCBvZGluJnNjYXJvbjt0YWxvdmFuJnlhY3V0ZTsuJzsKJGxhbmdbJ2F0dHJzdXBkYXRlZCddID0gJ0F0cmliJnVhY3V0ZTt0eSBib2xpIHVwcmF2ZW4mZWFjdXRlOy4nOwokbGFuZ1snbm9nbG9iYWxjaGFuZ2UnXSA9ICdOZW1lbmnFpSc7CiRsYW5nWydnbG9iYWxseXVwZGF0ZWQnXSA9ICdabWVueSBib2xpIHZ5a29uYW4mZWFjdXRlOyBnbG9iJmFhY3V0ZTtsbmUuJzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ1VwcmF2acWlICZzY2Fyb247YWJsJm9hY3V0ZTtudSc7CiRsYW5nWydzdWJ0ZW1wbGF0ZXMnXSA9ICdLYXRhbCZvYWN1dGU7Z292JmVhY3V0ZTsgU3ViLSZzY2Fyb247YWJsJm9hY3V0ZTtueSc7CiRsYW5nWyduZXh0J10gPSAnOiZyYXF1bzsnOwokbGFuZ1sncHJldiddID0gJyZsYXF1bzs6JzsKJGxhbmdbJ2VkaXQnXSA9ICdVcHJhdmnFpSc7CiRsYW5nWydkZWxldGUnXSA9ICdPZHN0ciZhYWN1dGU7bmnFpSc7CiRsYW5nWydub3RlbXBsYXRlcyddID0gJ8W9aWFkbmUgcG9kJnNjYXJvbjthYmxvbnkgbmVib2xpIG5haW4mc2Nhcm9uO3RhbG92YW4mZWFjdXRlOyEnOwokbGFuZ1snaGVscHRleHQnXSA9ICc8aDM+xIxvIHJvYiZpYWN1dGU7IHRlbnRvIG1vZHVsPzwvaDM+DQo8cD5UZW50byBtb2R1bCBWJmFhY3V0ZTttIHVtb8W+biZpYWN1dGU7IHZ5dHZvcmnFpSBvbmxpbmUga2F0YWxvZ3ksIGFsZWJvIHBvcnRmb2xpYS4gS2F0YWxvZ3kgb2JzYWh1aiZ1YWN1dGU7ICZxdW90O1BvbG/Fvmt5IGthdGFsb2d1JnF1b3Q7LCBrdG9yJmVhY3V0ZTsgbSZvY2lyYzvFvnUgYnnFpSBwcm9kdWt0eSwgdW1lbGVjayZlYWN1dGU7IGRpZWxhLCBhbGVibyDEjW8gY2hjZXRlLCBhICZxdW90O0thdGVnb3JpZSBrYXRhbG9ndSZxdW90Oywga3RvciZlYWN1dGU7IG0mb2NpcmM7xb51IGJ5xaUgcG9sb8W+a3kga2F0YWxvZ3UsIGFsZWJvIGluJmVhY3V0ZTsgcHJpcm9kemVuJmVhY3V0ZTsgxI1sZW5lbmllIGthdGFsb2d1PC9wPg0KPHA+S2F0ZWdvcmllIG0mb2NpcmM7xb51IGJ5xaUgaGllcmFyY2hpY2t5IGRlZmlub3ZhbiZlYWN1dGU7IChha28gJnNjYXJvbjt0YW5kYXJ0biZ5YWN1dGU7IENNUyBNYWRlIFNpbXBsZSB6b3puYW0gb2JzYWh1KS4gU3RyJmFhY3V0ZTtua3kga2F0ZWdvcmllIG0mb2NpcmM7xb51IHpvYnJhem92YcWlIHBvbG/Fvmt5IHYga2F0ZWdvcmlpIGEvYWxlYm8gcG9ka2F0ZWdvcmlhY2gsIHZvbGl0ZcS+bmUgYWogdm8gdiZzY2Fyb247ZXRrJnlhY3V0ZTtjaCBwb2RrYXRlZ29yaWFjaC4gVCZhYWN1dGU7dG8gdm/EvmJhIG0mb2NpcmM7xb5lIGJ5xaUgbmFzdGF2ZW4mYWFjdXRlOyB2IG5hc3RhdmVuJmlhY3V0ZTsga2F0ZWdvcmlpLjwvUD4NCjxwPkplIHR1IHRpZcW+IHRsYcSNZW4meWFjdXRlOyBrYXRhbG9nLCBrdG9yJnlhY3V0ZTsgb2JzYWh1amUgcGxuJnVhY3V0ZTsga29sZWtjaXUgcG9sb8W+aWVrIGthdGFsb2d1IG5hIGplZG5laiBzdHImYWFjdXRlO25rZS48L3A+DQo8cD5Nb2R1bCBzcG9sdXByYWN1amUgcyAmcXVvdDtDb250ZW50IEFsaWFzZXMmcXVvdDsgKG1vZHVsIGRvc3R1cG4meWFjdXRlOyBuYSA8YSBocmVmPSJodHRwOi8vd3d3LmNtc21vZHVsZXMuY29tL0NvbnRlbnRBbGlhc2VzLmh0bWwiPkNNU01vZHVsZXMuY29tPC9hPiksIGt0b3ImeWFjdXRlOyBWJmFhY3V0ZTttIHVtb8W+biZpYWN1dGU7IHZsb8W+acWlIHBvbG/Fvmt5IGthdGFsb2d1IGRvIHZpYWNlciZ5YWN1dGU7Y2gga2F0ZWdvcmlpLjwvcD4NCjxoMz5Ba28gaG8gcG91xb5pamVtPzwvaDM+DQo8cD5LZcSPIHN0ZSBuYWluJnNjYXJvbjt0YWxvdmFsaSB0ZW50byBtb2R1bCwgdnl0dm9yaWxpIHNhIHRyaSBub3YmZWFjdXRlOyB0eXB5IG9ic2FodTogUG9sb8W+a3kga2F0YWxvZ3UsIEthdGVnb3JpZSBrYXRhbG9ndSwgYSBLYXRhbG9nIG5hIHRsYcSNLiBLZcSPIHN0ZSBuYSBzdHImYWFjdXRlO25rZSBhZG1pbmlzdHImYWFjdXRlO2NpZSBrYXRlZ29yaWUsIHlvdSBhZGQgQ2F0YWxvZyBJdGVtcyBhbmQgQ2F0YWxvZyBDYXRlZ29yaWVzIGp1c3QgYXMgeW91IHdvdWxkIGFueSBvdGhlciBraW5kIG9mIHBhZ2UuIFNlbGVjdCBDb250ZW50ID4gUGFnZXMgPiBBZGQgQ29udGVudCwgYW5kIHRoZW4gc2VsZWN0ICZxdW90O0NhdGFsb2cgSXRlbSZxdW90OyBvciAmcXVvdDtDYXRhbG9nIENhdGVnb3J5JnF1b3Q7IGZyb20gdGhlIENvbnRlbnQgVHlwZSBwdWxsZG93bi48L3A+DQo8aDQ+UG9sb8W+a3kga2F0YWxvZ3U8L2g0Pg0KPHA+UHJpZGHFpSBwb2xvxb5rdSBkbyBrYXRhbG9ndSBqZSBwb2RvYm4mZWFjdXRlOywgYWtvIHByaWRhxaUgc3RyJmFhY3V0ZTtua3UgZG8gdmEmc2Nhcm9uO2VqIHByZXplbnQmYWFjdXRlO2NpZS4gQXYmc2Nhcm9uO2FrIGRhdG92JmVhY3V0ZTsgcG9saWEgcHJlIHBvbG/Fvmt1IG5pZSBzJnVhY3V0ZTsgJnVhY3V0ZTtwbG5lIHJvdm5hayZlYWN1dGU7LiBEYcS+JnNjYXJvbjtpYSBwb3puJmFhY3V0ZTtta2EsIMW+ZSB2ICZxdW90O0ltYWdlcyZxdW90OyB6JmFhY3V0ZTtsb8W+a2UgbSZvY2lyYzvFvmV0ZSB2eWJyYcWlIG5haHJhxaUgdmlhYyBvYnImYWFjdXRlO3prb3YgcHJlIHBvbG/Fvmt1LiBLZcSPIG5haHImYWFjdXRlO3RlIG9iciZhYWN1dGU7emt5LCBzeXN0JmVhY3V0ZTttIHVwcmF2JmlhY3V0ZTsgaWNoIHZlxL5rb3PFpSBwcmUgcG91xb5pdGllIHYga2F0YWxvZ3UsIHZ5dHZvciZpYWN1dGU7IG4mYWFjdXRlO2jEvmFkeSBwcmUgcG91xb5pdGllIHYgc3RyJmFhY3V0ZTtua2UgcG9sb8W+a3ksIHZ5dHZvciZpYWN1dGU7IG4mYWFjdXRlO2jEvmFkeSBwcmUgc3RyJmFhY3V0ZTtua3Uga2F0ZWdvcmlpIC4uLiBhIGplIHRvLiBWecW+YWR1amUgc2kgdG8sIMW+ZSBtJmFhY3V0ZTt0ZSBpbiZzY2Fyb247dGFsb3ZhbiZ1YWN1dGU7IEdEIGtsacW+bmljdSwgYWxlYm8gcG9kb2JuJnVhY3V0ZTsgcHJlIHByJmFhY3V0ZTtjdSBzIG9iciZhYWN1dGU7emthbWkuIEFrdHUmYWFjdXRlO2xuZSBqZSBpYmEgSlBHIGZvcm0mYWFjdXRlO3QgcG9kcG9yb3ZhbiZ5YWN1dGU7LjwvcD4NCjxoND5LYXRlZ29yaWUga2F0YWxvZ3U8L2g0Pg0KPHA+S2F0ZWdvcmllIHMmdWFjdXRlOyBwb3XFvml0JmVhY3V0ZTsgcHJlIHpvcmdhbml6b3ZhbmllIFZhJnNjYXJvbjsmaWFjdXRlO2NoIHBvbG/Fvmllay4gVnl0dm9yJmlhY3V0ZTsgdG8gc3RyJmFhY3V0ZTtua3Ugb2JzYWh1aiZ1YWN1dGU7Y3Ugem96bmFtIHBvbG/Fvmllay4gUG9sb8W+a2Ega2F0YWxvZ3UgamUgcG92YcW+b3ZhbiZhYWN1dGU7IHphIHMmdWFjdXRlO8SNYXPFpSBrYXRlZ29yaWUga2F0YWxvZ3UsIGFrIGplIHBvZCB0b3V0byBrYXRlZ29yaW91IHYgaGllcmFyY2hpIHdlYnUuIEthdGVnb3JpZSBtJm9jaXJjO8W+dSBwb2RvYm5lIG9ic2Fob3ZhxaUgZGHEviZzY2Fyb247aWUga2F0ZWdvcmllLjwvcD4NCjxwPkthdGVnb3JpZSBrYXRhbG9ndSBtYWomdWFjdXRlOyB2ZcS+YSBuYXN0YXZlbiZpYWN1dGU7IGFrbyBvdnBseXZuacWlIHpvYnJhemVuaWUgcG9sb8W+aWVrIGEga2F0ZWdvcmlpLCBrdG9yJmVhY3V0ZTsgb2JzYWh1aiZ1YWN1dGU7OiBhayBzYSBwb3pyaWV0ZSBuYSAmcXVvdDtOYXN0YXZpxaUgcHJlZHZvxL5ieSZxdW90OyB6JmFhY3V0ZTtsb8W+a3UsIG0mb2NpcmM7xb5ldGUgc2kgdnlicmHFpSBrb8S+a28gcG9sb8W+aWVrIGEvYWxlYm8ga2F0ZWdvcmlpIHNhIG0mYWFjdXRlOyB6b2JyYXppxaUsIHYgYWtvbSB0cmllZGVuJmlhY3V0ZTsgc2EgbWFqJnVhY3V0ZTsgem9icmF6b3ZhxaUsIMSNaSBzYSBtYWomdWFjdXRlOyB6b2JyYXpvdmHFpSBpYmEgcG9sb8W+a3ksIGFsZWJvIGliYSBrYXRlZ29yaWUsIGFsZWJvIG9ib2plLCBhIGtvxL5rbyBzdHVwxYhvdiB2IGhpZXJhcmNoaWkgc2EgbSZhYWN1dGU7IHpvYnJhemnFpSBwb2Qgc3RyJmFhY3V0ZTtua291IGthdGVnb3JpZS48L3A+DQo8aDM+TmFzdGF2ZW5pZSBhIGRhxL4mc2Nhcm9uO2llIGluZm9ybSZhYWN1dGU7Y2llPC9oMz4NCjxoND5BdHJpYiZ1YWN1dGU7dHkgcG9sb8W+a3kga2F0YWxvZ3U8L2g0Pg0KPHA+WiZhYWN1dGU7a2xhZG4mZWFjdXRlOyBhdHJpYiZ1YWN1dGU7dHkgcG9sb8W+a3kgcyZ1YWN1dGU7IHR5cGljayZlYWN1dGU7IHByZSBrYXRhbG9nIHByb2R1a3RvdiwgYWxlYm8gdW1lbGVjayZ5YWN1dGU7Y2ggZGllbCwgYWxlIG0mb2NpcmM7xb5ldGUgJmlhY3V0ZTtzxaUgZG8gUm96JnNjYXJvbjsmaWFjdXRlO3JlbmlhID4gQ2F0YWxvZ2VyID4gTWFuYWdlIE5hc3RhdmnFpSBwb3XFviZpYWN1dGU7dmF0ZcS+c2smZWFjdXRlOyBhdHJpYiZ1YWN1dGU7dHksIGtkZSBtJm9jaXJjO8W+ZXRlIHptZW5pxaUgYXRyaWImdWFjdXRlO3R5LiBKZSB0byBuYWpsZXAmc2Nhcm9uO2llIG1pZXN0byBwcmUgZGVmaW4maWFjdXRlO2NpdSBhdHJpYiZ1YWN1dGU7dG92DQo8aDQ+QXRyaWImdWFjdXRlO3R5IGthdGVnb3JpZSBrYXRhbG9ndTwvaDQ+DQo8aDQ+VcW+JmlhY3V0ZTt2YXRlxL5zayZlYWN1dGU7ICZzY2Fyb247YWJsJm9hY3V0ZTtueTwvaDQ+DQo8cD48L3A+DQo8aDM+UG9kcG9yYTwvaDM+DQo8cD5UZW50byBtb2R1bCBuZW9ic2FodWplIGtvbWVyxI1uJnVhY3V0ZTsgcG9kcG9ydS4gQWxlIGV4aXN0dWplIHZpYWNlaiBtb8W+bm9zdCZpYWN1dGU7LCBha28gc2kgbSZvY2lyYzvFvmV0ZSBwb20mb2NpcmM7Y8WlOjwvcD4NCjx1bD4NCjxsaT5QcmUgcG9zbGVkbiZlYWN1dGU7IHZlcnppZSB0b2h0byBtb2R1bHUsIEZBUXMsIGFsZWJvIHMmdWFjdXRlO2JvcnkgYSBjaHlib3YmZWFjdXRlOyBobCZhYWN1dGU7c2VuaWEsICBhbGVibyBwcmUga29tZXLEjW4mdWFjdXRlOyBwb2Rwb3J1LCBwcm9zJmlhY3V0ZTttIG5hdiZzY2Fyb247dCZpYWN1dGU7dnRlIFNqRyYjMDM5O3MNCm1vZHVsZSBkb20mYWFjdXRlO2N1IHN0ciZhYWN1dGU7bmt1IG5hIDxhIGhyZWY9Imh0dHA6Ly93d3cuY21zbW9kdWxlcy5jb20iPkNNU01vZHVsZXMuY29tPC9hPi48L2xpPg0KPGxpPkRhxL4mc2Nhcm9uO2lhIGRpc2t1c2lhIGsgdG9tdXRvIG1vZHVsdSBtJm9jaXJjO8W+ZSBiecWlIG5hamRlbiZhYWN1dGU7IG5hIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEYmb2FjdXRlO3J1bTwvYT4uPC9saT4NCjxsaT5BdXRvciwgU2pHLCBtJm9jaXJjO8W+ZSBiecWlIMSNYXN0byBuJmFhY3V0ZTtqZGVuJnlhY3V0ZTsgbmEgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIEthbiZhYWN1dGU7bGk8L2E+LjwvbGk+DQo8bGk+TmFrb25pZWMsIG0mb2NpcmM7xb5ldGUgcHJpYW1vIGF1dG9yb3ZpIG5pZcSNbyBuYXAmaWFjdXRlO3NhxaUgZW1haWxvbS48L2xpPiAgDQo8L3VsPg0KPHA+QWtvIHByZSBHUEwsIGFqIHRlbnRvIHNvZnR3YXJlIGplIHZ5dHZvcmVuJnlhY3V0ZTsgdGFrLCBha28tamUuIFByb3MmaWFjdXRlO20gxI0maWFjdXRlO3RhanRlIHp2eSZzY2Fyb247b2sgbGljZW5jaWUNCnByZSBwbG4mZWFjdXRlOyBwb2Nob3BlbmllLjwvcD4NCjxoMz5WbGFzdG4maWFjdXRlO2NrZSBwciZhYWN1dGU7dmEgYSBsaWNlbmNpYTwvaDM+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDUsIFNhbXVlbCBHb2xkc3RlaW4gPGEgaHJlZj0ibWFpbHRvOnNqZ0BjbXNtb2R1bGVzLmNvbSI+PHNqZ0BjbXNtb2R1bGVzLmNvbT48L2E+LiBWJnNjYXJvbjtldGt5IHByJmFhY3V0ZTt2YSB2eWhyYWRlbiZlYWN1dGU7LjwvcD4NCjxwPlRlbnRvIG1vZHVsIGJvbCB2eWRhbiZ5YWN1dGU7IHBvZCA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uTXVzJmlhY3V0ZTt0ZSBzJnVhY3V0ZTtobGFzacWlIHMgdG91dG8gbGljZW5jaW91LCBwcmVkdCZ5YWN1dGU7bSwgYWtvIGhvIHBvdcW+aWpldGUuPC9wPic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8bGk+VmVyemlhIDAuMS41IC0gMTcgTm92ZW1iZXIgMjAwNS4gUHJ2JmFhY3V0ZTsgdmVyemlhLiBKZcW+aSZzY2Fyb247aSwgdG8gdHJ2YWxvIGRsaG8uPC9saT4NCjxsaT5WZXJ6aWEgMC4xIC0gMTkgTWFyZWMgMjAwNS4gWmHEjWlhdG9rIHByb2pla3R1LjwvbGk+DQo8L3VsPic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1Vpc3RpdGUgc2EsIMW+ZSBzdGUgbmFzdGF2aWxpICZxdW90O01vZGlmeSBDYXRhbG9nIFNldHRpbmdzL1VwcmF2acWlIG5hc3RhdmVuaWEgS2F0YWwmb2FjdXRlO2d1JnF1b3Q7IG9wciZhYWN1dGU7dm5lbmlhIHByZSB1xb4maWFjdXRlO3ZhdGXEvm92LCBrdG9yJmlhY3V0ZTsgYnVkJnVhY3V0ZTsgbmFzdGF2b3ZhxaUga2F0YWwmb2FjdXRlO2cuJzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTIxNTg1NDg2MS4zNTIuNjQudXRtY2NuPShyZWZlcnJhbCl8dXRtY3NyPWRldi5jbXNtYWRlc2ltcGxlLm9yZ3x1dG1jY3Q9L3x1dG1jbWQ9cmVmZXJyYWwnOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4xMzQ0NDA5MDUzLjExODA4MDI0OTQuMTIxNzIwMTQ3My4xMjE3Mjc5OTAwLjM4OSc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMuMS4xMC4xMjE3Mjc5OTAwJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/sr_YU.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ25hbWVpbWFnZXMnXSA9ICdTbGlrZSc7CiRsYW5nWyduYW1lZmlsZXMnXSA9ICdGYWpsb3ZpJzsKJGxhbmdbJ25hbWVmaWxlJ10gPSAnRmFqbCc7CiRsYW5nWydkZWxldGVpbWFnZSddID0gJ09icmkmc2Nhcm9uO2kgc2xpa3UnOwokbGFuZ1snZGVsZXRlZmlsZSddID0gJ09icmkmc2Nhcm9uO2kgZmFqbCc7CiRsYW5nWydPd25lciddID0gJ1ZsYXNuaWsnOwokbGFuZ1snQ2F0YWxvZ0l0ZW0nXSA9ICdDYXRhbG9nZXIgc3RhdmthJzsKJGxhbmdbJ25hbWVwYWdlJ10gPSAnU3RyYW5pY2EnOwokbGFuZ1snUGVybWlzc2lvbnMnXSA9ICdEb3p2b2xlJzsKJGxhbmdbJ1N1YiddID0gJ1BvZCAtJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtX3NvcnRfb3JkZXIyJ10gPSAnUmVkb3NsZWQgc29ydGlyYW5qYSBzdGF2a2knOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2l0ZW1zX3Blcl9wYWdlMiddID0gJ1N0YXZraSBwbyBzdHJhbmljaSc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfY2F0ZWdvcnlfcmVjdXJzZTInXSA9ICdOYcSNaW4gcHJpa2F6aXZhbmphJzsKJGxhbmdbJ3doaWNoX2F0dHJpYnV0ZXMnXSA9ICdLb2phIHN2b2pzdHZhIHRyZWJhIHByaWthemF0aSB1IGthdGFsb2d1JzsKJGxhbmdbJ25hdlRhYiddID0gJyB8ICc7CiRsYW5nWyduZWVkcGVybWlzc2lvbiddID0gJ01vcmF0ZSBpbWFkaSBkb3p2b2x1ICVzIGRhIGJpc3RlIHRvIHJhZGlsaS4nOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnS2F0YWxvZ2VyJzsKJGxhbmdbJ2FkbWluZGVzY3JpcHRpb24nXSA9ICdQb2RlJnNjYXJvbjthdmFuamEga2F0YWxvZ2EnOwokbGFuZ1snYXJleW91c3VyZSddID0gJ0RhIGxpIHN0ZSBzaWd1cm5pIGRhIMW+ZWxpdGUgb2JyaXNhdGkgb3ZhaiAlcz8nOwokbGFuZ1sndW5pcXVlY29kZSddID0gJ0plZGluc3R2ZW5pIGtvZCc7CiRsYW5nWyd0ZW1wbGF0ZWxpc3QnXSA9ICdQb2QtJnNjYXJvbjthYmxvbmknOwokbGFuZ1snbGlzdHRlbXBsJ10gPSAnVXByYXZsamFuamUgcG9kLSZzY2Fyb247YWJsb25pbWEnOwokbGFuZ1sndGl0bGVfZmllbGRfdHlwZSddID0gJ1RpcCBwb2xqYSc7CiRsYW5nWyd0aXRsZV9zZWxlY3RfdmFsdWVzJ10gPSAnVnJlZG5vc3QnOwokbGFuZ1sndGl0bGVfaXRlbV90YWInXSA9ICdTdm9qc3R2YSBzdGF2a2UnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfdGFiJ10gPSAnU3ZvanN0dmEga2F0ZWdvcmlqZSc7CiRsYW5nWyd0aXRsZV9wcmludGFibGVfdGFiJ10gPSAnUG9kZSZzY2Fyb247YXZhbmphIGthdGFsb2dhIG5hbWVuamVub2cgJnNjYXJvbjt0YW1wYW5qdSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3RhYiddID0gJ1BvZGUmc2Nhcm9uO2F2YW5qZSBzbGlrZSBzdGF2a2UnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2VfdGFiJ10gPSAnUG9kZSZzY2Fyb247YXZhbmphIHN0cmFuaWNlIHphIGthdGVnb3JpamUnOwokbGFuZ1sndGl0bGVfcGF0aF90YWInXSA9ICdQdXRhbmplJzsKJGxhbmdbJ3RpdGxlX2RlbGV0ZSddID0gJ09icmlzYXRpPyc7CiRsYW5nWyd0aXRsZV9maWxlX3RhYiddID0gJ1BvZGUmc2Nhcm9uO2F2YW5qYSBmYWpsb3ZhIHZlemFuaWggemEgc3Rhdmt1JzsKJGxhbmdbJ3RpdGxlX2ltYWdlX3RhYiddID0gJ09zdGFsYSBwb2RlJnNjYXJvbjthdmFuamEgc2xpa2EnOwokbGFuZ1sndGl0bGVfaXRlbV90ZW1wbGF0ZV92YXJzJ10gPSAnUHJvbWVubGppdmUgemEgJnNjYXJvbjthYmxvbiBwcmlrYXppdmFuamEgc3RhdmtlJzsKJGxhbmdbJ3RpdGxlX2NhdF90ZW1wbGF0ZV92YXJzJ10gPSAnQ2F0ZWdvcnkgVGVtcGxhdGUgVmFyaWFibGVzJzsKJGxhbmdbJ3RpdGxlX2NhdGFsb2dfdGVtcGxhdGVfdmFycyddID0gJ0NhdGFsb2cgVGVtcGxhdGUgVmFyaWFibGVzJzsKJGxhbmdbJ3RpdGxlX2NvbXBhcmVfdGVtcGxhdGVfdmFycyddID0gJ0NvbXBhcmlzb24gVGVtcGxhdGUgVmFyaWFibGVzJzsKJGxhbmdbJ3RpdGxlX2ZlYXR1cmVfdGVtcGxhdGVfdmFycyddID0gJ0ZlYXR1cmUgbGlzdCBUZW1wbGF0ZSBWYXJpYWJsZXMnOwokbGFuZ1sndGl0bGVfc2hvd19vbmx5X2V4aXN0aW5nX2ltYWdlcyddID0gJ1phbmVtYXJpIHNsaWtlIGtvamUgbmVkb3N0YWp1JzsKJGxhbmdbJ3RpdGxlX3Nob3dfb25seV9leGlzdGluZ19pbWFnZXNfaGVscCddID0gJ1RoaXMgd2lsbCBvbmx5IHB1dCBpbWFnZSByZWZlcmVuY2VzIGludG8gbGlzdHMgaWYgdGhlIGltYWdlIGV4aXN0cy48YnIgLz4oTm9ybWFsbHksIHRoaXMgaXMgZmluZSwgYnV0IGlmIHlvdSBhcmUgZG9pbmcgc29tZXRoaW5nIGNsZXZlciB3aXRoIGltYWdlPGJyIC8+YXJyYXkgaW5kZXhlcywgdGhpcyBjb3VsZCBjYXVzZSB5b3UgdHJvdWJsZS4pJzsKJGxhbmdbJ3RpdGxlX2ZsdXNoX2NhdHMnXSA9ICdGbHVzaCBjYXRlZ29yeSBwYWdlIGJ1ZmZlcnMnOwokbGFuZ1sndGl0bGVfZmx1c2hfY2F0c19oZWxwJ10gPSAnSWYgeW91IGhhdmUgYSBodWdlIG51bWJlciBvZiBpdGVtcyBkaXNwbGF5ZWQ8YnIgLz5pbiBhIGNhdGVnb3J5LCBzb21lIFBIUCBpbnN0YWxscyB3aWxsIGZhaWwgdG8gZGlzcGxheSB0aGUgcGFnZTxiciAvPmNvcnJlY3RseS4gQ2hlY2sgdGhpcyBib3ggdG8gc29sdmUgdGhpcyBwcm9ibGVtICh0ZXN0IGZvciBzaWRlIGVmZmVjdHMpLic7CiRsYW5nWyd0aXRsZV9pdGVtX2ZpbGVfdHlwZXMnXSA9ICdEb3p2b2xqZW5pIHRpcG92aSBmYWpsb3ZhJzsKJGxhbmdbJ3RpdGxlX2ltYWdlX3VwbG9hZF9wYXRoJ10gPSAnTG9rYWNpamEgemEgb3RwcmVtbGplbmUgc2xpa2UnOwokbGFuZ1sndGl0bGVfZmlsZV91cGxvYWRfcGF0aCddID0gJ0xva2FjaWphIHphIG90cHJlbWxqZW5lIGZhamxvdmUgdmV6YW5lIHphIGRhdHUgc3Rhdmt1JzsKJGxhbmdbJ3RpdGxlX2ltYWdlX3Byb2NfcGF0aCddID0gJ0xva2FjaWphIHphIG9icmHEkWVuZSBzbGlrZSAodW1hbmplbmkgcHJpa2F6aSwgc2thbGlyYW5lIHNsaWtlIGl0ZCknOwokbGFuZ1sncGF0aF9oZWxwJ10gPSAnTW/FvmV0ZSBzcGVjaWZpY2lyYXRpIGdkZSDEh2UgS2F0YWxvZ2VyIMSNdXZhdGkgZmFqbG92ZS4gT3ZlIHB1dGFuamUgc3UgcmVsYXRpdm5lIHUgb2Rub3N1IG5hIDxpPnVwbG9hZHNfcGF0aDwvaT4gZGVmaW5pc2FudSB1IGNvbmZpZy5waHA8YnIgLz5OQVBPTUVOQTogVWtvbGlrbyBvdmUgcHV0YW5qZSBpem1lbml0ZSBuYWtvbiAmc2Nhcm9uO3RvIHN1IG5la2kgZmFqbG92aSBpL2lsaSBzbGlrZSB2ZcSHIGJpbGkgb3RwcmVtbGplbmksIEthdGFsb2dlciDEh2UgaWggaXpndWJpdGkgaXogdmlkYSAoaSBkYWxqZSDEh2UgYml0aSBuYSBzZXJ2ZXJ1LCBhbGkgS2F0YWxvZ2VyIG5lxIdlIHphIG5qaWggem5hdGksIHBhIMSHZXRlIG1vcmF0aSBwb25vdm8gZGEgaWggb3RwcmVtaXRlIGtha28gYmkgYmlsaSB1c2tsYWRpJnNjYXJvbjt0ZW5pIG5hIG5vdm9qIHB1dGFuamkpLic7CiRsYW5nWydjYXRhbG9nZXInXSA9ICdLYXRhbG9nZXInOwokbGFuZ1sndGl0bGVfYXR0cl9vcmRlcl9ieSddID0gJ1JlZG9zbGVkJzsKJGxhbmdbJ3RpdGxlX2F0dHJfYWxpYXMnXSA9ICdBbGlqYXMgc3ZvanN0dmEgKHByaWxhZ2/EkWVuIHphIFNtYXJ0eSknOwokbGFuZ1sndGl0bGVfYXR0cl9sZW5ndGgnXSA9ICdEdcW+aW5hKic7CiRsYW5nWyd0aXRsZV9hdHRyX2RlZmF1bHQnXSA9ICdQb2RyYXp1bWV2YW5hIHZyZWRub3N0JzsKJGxhbmdbJ3RpdGxlX2F0dHJfbGVuZ3RoX2hlbHAnXSA9ICcqRHXFvmluYSBzZSBvZG5vc2kgc2FtbyBuYSAmcXVvdDtUZWtzdCZxdW90OzxiciAvPlZyaWplZG5vc3QgemEgcGFkYWp1xIdlIGxpc3RlIG1vcmEgYml0aSB1IHZpZHUgbGlzdGUgdnJlZG5vc3RpIG9kdm9qZW5paCB6YXJlemltYS48YnIgLz5aYSDEjWVrLWJva3MsIHZyZWRub3N0IG1vcmEgc2FkcsW+YXZhdGkgxI1la2lyYW51IHZyZWRub3N0LCB6YXJleiBpIG5lxI1la2lyYW51IHZyZWRub3N0JzsKJGxhbmdbJ3RleHQnXSA9ICdUZWtzdCc7CiRsYW5nWydkcm9wZG93biddID0gJ1BhZGFqdcSHYSBsaXN0YSc7CiRsYW5nWyd0ZXh0YXJlYSddID0gJ1BvbGplIHphIGR1xb5pIHRla3N0JzsKJGxhbmdbJ2NoZWNrYm94J10gPSAnxIxlay1ib2tzJzsKJGxhbmdbJ2l0ZW1fcGFnZSddID0gJ1N0cmFuaWNhIHN0YXZrZSc7CiRsYW5nWydjYXRlZ29yeV9wYWdlJ10gPSAnU3RyYW5pY2Ega2F0ZWdvcmlqZSc7CiRsYW5nWydjYXRhbG9nX3ByaW50YWJsZSddID0gJ0thdGFsb2cgbmFtZW5qZW4gJnNjYXJvbjt0YW1waSc7CiRsYW5nWydjYXRhbG9nX2RhdGFzaGVldCddID0gJ0NhdGFsb2cgRGF0YXNoZWV0JzsKJGxhbmdbJ2NhdGFsb2dfc2hvcnRfbGlzdCddID0gJ0xpc3RhIHN2b2pzdGF2YSc7CiRsYW5nWydpdGVtX2NvbXBhcmlzb24nXSA9ICdVcG9yZcSRaXZhbmplIHN0YXZraSc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfaXRlbV9zb3J0X29yZGVyJ10gPSAnUG9kZXNpIHJlZG9zbGVkIHNvcnRpcmFuamEgc3RhdmtpIG5hJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtc19wZXJfcGFnZSddID0gJ1BvZGVzaSBicm9qIHN0YXZraSBwbyBzdHJhbmljaSBuYSc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfY2F0ZWdvcnlfcmVjdXJzZSddID0gJ1NldCBDYXRlZ29yeSBEaXNwbGF5IEJlaGF2aW9yIHRvJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fc29ydF9vcmRlciddID0gJ1BvZHJhenVtZXZhbmkgbmHEjWluIHNvcnRpcmFuamEgc3RhdmtpJzsKJGxhbmdbJ3RpdGxlX3ByaW50YWJsZV9zb3J0X29yZGVyJ10gPSAnUG9kcmF6dW1ldmFuaSBuYcSNaW4gc29ydGlyYW5qYSBzdGF2a2kgdSBrYXRhbG9ndSB6YSAmc2Nhcm9uO3RhbXBhbmplJzsKJGxhbmdbJ3RpdGxlX2l0ZW1zX3Blcl9wYWdlJ10gPSAnUG9kcmF6dW1ldmFuaSBicm9qIHN0YXZraSBwbyBzdHJhbmljaSc7CiRsYW5nWyd0aXRsZV9hdmFpbF9hdHRycyddID0gJ1N2b2pzdHZhIHN0YXZrZSBkb3N0dXBuYSB6YSBrb3JpJnNjYXJvbjvEh2VuamUgdSAmc2Nhcm9uO2FibG9udSc7CiRsYW5nWyd0aXRsZV9hdmFpbF9pbWF0dHJzJ10gPSAnU2xpa2Ugc3RhdmtlIGRvc3R1cG5lIHUgJnNjYXJvbjthYmxvbnUnOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX2hlcm8nXSA9ICdWZWxpxI1pbmEgc2xpa2UgbmEgc3RyYW5pY2kgemEgcHJpa2F6IHN0YXZrZSAoZHXFvmEgb3NhLCB1IHBpa3NlbGltYSknOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX3RodW1ibmFpbCddID0gJ1ZlbGnEjWluYSB1bWFuamVub2cgcHJpa2F6YSBzbGlrZSBuYSBzdHJhbmljaSB6YSBwcmlrYXogc3RhdmtlIChkdcW+YSBvc2EsIHUgcGlrc2VsaW1hKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfY2F0ZWdvcnknXSA9ICdWZWxpxI1pbmEgdW1hbmplbm9nIHByaWthemEgc2xpa2Ugc3RhdmtlIG5hIHN0cmFuaWNpIHphIHByaWtheiBrYXRlZ29yaWplIChkdcW+YSBvc2EsIHUgcGlrc2VsaW1hKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfY2F0YWxvZyddID0gJ1ZlbGnEjWluYSB1bWFuamVub2cgcHJpa2F6YSBzbGlrZSBzdGF2a2UgbmEgc3RyYW5pY2kgemEgcHJpa2F6IGthdGFsb2dhIChkdcW+YSBvc2EsIHUgcGlrc2VsaW1hKSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9pbWFnZV9zaXplX2hlcm8nXSA9ICdWZWxpxI1pbmEgc2xpa2UgbmEgc3RyYW5pY2kgemEgcHJpa2F6IGthdGVnb3JpamUgc3RhdmtpIChkdcW+YSBvc2EsIHUgcGlrc2VsaW1hKSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9pbWFnZV9zaXplX3RodW1ibmFpbCddID0gJ1ZlbGnEjWluYSB1bWFuamVub2cgcHJpa2F6YSBzbGlrZSBuYSBzdHJhbmljaSB6YSBwcmlrYXoga2F0ZWdvcmlqZSBzdGF2a2kgKGR1xb5hIG9zYSwgdSBwaWtzZWxpbWEpJzsKJGxhbmdbJ3RpdGxlX3RlbXBsYXRlJ10gPSAnJlNjYXJvbjthYmxvbic7CiRsYW5nWyd0aXRsZV90ZW1wbGF0ZV90eXBlJ10gPSAnVGlwICZzY2Fyb247YWJsb25hJzsKJGxhbmdbJ3RpdGxlX3RpdGxlJ10gPSAnTmF6aXYnOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9jb3VudCddID0gJ01ha3NpbWFsYW4gYnJvaiBwcmlrYXppdmFuamEgc3Zha2Ugc3RhdmtlJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fZmlsZV9jb3VudCddID0gJ01ha3NpbWFsYW4gYnJvaiBvc3RhbGloIGZhamxvdmEga29qaSBzZSBtb2d1IHBvdmV6YXRpIHNhIHN2YWtvbSBzdGF2a29tJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX2NvdW50J10gPSAnTWF4aW11bSBudW1iZXIgb2YgQmFubmVyIGltYWdlcyBmb3IgZWFjaCBDYXRlZ29yeSBQYWdlJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fYXR0cmlidXRlc19oZWxwJ10gPSAnRWFjaCBhdHRyaWJ1dGUgeW91IGVudGVyIGhlcmUgd2lsbCBiZSB0aGUgdGl0bGUgb2YgYSBmaWVsZCB0aGF0IHlvdSBjYW4gdXNlIHRvIGRlc2NyaWJlIGFuIGluZGl2aWR1YWwgaXRlbSwgYW5kIHdpbGwgYmUgZGlzcGxheWVkIHdpdGggdGhhdCBpdGVtLiBZb3UgbWF5IGhhdmUgdG8gdXBkYXRlIHlvdXIgdGVtcGxhdGUgdG8gcmVmbGVjdCB0aGVzZSBhdHRyaWJ1dGVzLic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9hdHRyaWJ1dGVzX2hlbHAnXSA9ICdFYWNoIGF0dHJpYnV0ZSB5b3UgZW50ZXIgaGVyZSB3aWxsIGJlIHRoZSB0aXRsZSBvZiBhIGZpZWxkIHRoYXQgeW91IGNhbiB1c2UgdG8gZGVzY3JpYmUgYW4gaXRlbSBjYXRlZ29yeSwgYW5kIHdpbGwgYmUgZGlzcGxheWVkIG9uIHRoYXQgY2F0ZWdvcnkgcGFnZS4gWW91IG1heSBoYXZlIHRvIHVwZGF0ZSB5b3VyIHRlbXBsYXRlIHRvIHJlZmxlY3QgdGhlc2UgYXR0cmlidXRlcy4nOwokbGFuZ1sndGl0bGVfY2F0YWxvZ19hdHRyaWJ1dGVzX2hlbHAnXSA9ICdFYWNoIGF0dHJpYnV0ZSB5b3UgZW50ZXIgaGVyZSB3aWxsIGJlIHRoZSB0aXRsZSBvZiBhIGZpZWxkIHRoYXQgeW91IGNhbiB1c2UgdG8gZGVzY3JpYmUgdGhlIGVudGlyZSBjYXRhbG9nLCBhbmQgd2lsbCBiZSBkaXNwbGF5ZWQgb24gdGhlIHByaW50YWJsZSBjYXRhbG9nIHBhZ2UuIFlvdSBtYXkgaGF2ZSB0byB1cGRhdGUgeW91ciB0ZW1wbGF0ZSB0byByZWZsZWN0IHRoZXNlIGF0dHJpYnV0ZXMuJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3NvcnQnXSA9ICdDYXRlZ29yeSBQYWdlIEl0ZW0tbGlzdCBzb3J0IG9yZGVyJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2UnXSA9ICdEZWZhdWx0IENhdGVnb3J5IERpc3BsYXkgQmVoYXZpb3InOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9pdGVtc19hbGwnXSA9ICdJbmNsdWRlIGFsbCBJdGVtcyB3aXRoaW4gdGhpcyBjYXRlZ29yeSwgaW5jbHVkaW5nIGl0ZW1zIGluIHN1Yi1jYXRlZ29yaWVzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfaXRlbXNfb25lJ10gPSAnSW5jbHVkZSBhbGwgSXRlbXMgaW1tZWRpYXRlbHkgd2l0aGluIHRoaXMgY2F0ZWdvcnksIGJ1dCBub3QgaXRlbXMgaW4gc3ViLWNhdGVnb3JpZXMnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9jYXRlZ29yaWVzX2FsbCddID0gJ0luY2x1ZGUgYWxsIENhdGVnb3JpZXMgd2l0aGluIHRoaXMgY2F0ZWdvcnksIGluY2x1ZGluZyBjYXRlZ29yaWVzIGluIHN1Yi1jYXRlZ29yaWVzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfY2F0ZWdvcmllc19vbmUnXSA9ICdJbmNsdWRlIGFsbCBDYXRlZ29yaWVzIGltbWVkaWF0ZWx5IHdpdGhpbiB0aGlzIGNhdGVnb3J5LCBidXQgbm90IGNhdGVnb3JpZXMgaW4gc3ViLWNhdGVnb3JpZXMnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9taXhlZF9hbGwnXSA9ICdJbmNsdWRlIGFsbCBJdGVtcyBhbmQgQ2F0ZWdvcmllcyB3aXRoaW4gdGhpcyBjYXRlZ29yeSwgaW5jbHVkaW5nIGl0ZW1zIGFuZCBjYXRlZ29yaWVzIGluIHN1Yi1jYXRlZ29yaWVzJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfbWl4ZWRfb25lJ10gPSAnSW5jbHVkZSBhbGwgSXRlbXMgYW5kIENhdGVnb3JpZXMgaW1tZWRpYXRlbHkgd2l0aGluIHRoaXMgY2F0ZWdvcnksIGJ1dCBub3QgaXRlbXMgb3IgY2F0ZWdvcmllcyBpbiBzdWItY2F0ZWdvcmllcyc7CiRsYW5nWyd0aXRsZV9zaG93X21pc3NpbmdfaW1hZ2VzJ10gPSAnUHJpa2HFvmkgJnF1b3Q7TmVtYSBzbGlrZSZxdW90OyBrYWRhIHNsaWthIG5lZG9zdGFqZSc7CiRsYW5nWyd0aXRsZV9zaG93X21pc3NpbmdfaW1hZ2VzX2xvbmcnXSA9ICdQcmlrYcW+aSBzcGVjaWphbG51ICZxdW90O05lbWEgc2xpa2UmcXVvdDsgc2xpa3UgdWtvbGlrbyBzbGlrYSBuZWRvc3RhamUgKGtvcmlzbm8gemEgdXR2csSRaXZhbmplIGdyZSZzY2Fyb247YWthLiBJbmHEjWUgxIdlIGJpdGkgcHJpa2F6YW5hIHRyYW5zcGFyZW50bmEgc2xpa2EgdmVsacSNaW5lIDFweCkuJzsKJGxhbmdbJ25hdHVyYWxfb3JkZXInXSA9ICdSZWRvc2xlZCBuYXZpZ2FjaWplJzsKJGxhbmdbJ2FscGhhX29yZGVyJ10gPSAnUG8gYWxmYWJldHUnOwokbGFuZ1snbWFuYWdlcHJlZnMnXSA9ICdVcHJhdmxqYW5qZSBwcmVmZXJlbmNpamFtYSc7CiRsYW5nWydtYW5hZ2VhdHRycyddID0gJ1VwcmF2bGphbmplIGtvcmlzbmnEjWtpIGRlZmluaXNhbmltIHN2b2pzdHZpbWEnOwokbGFuZ1snZ2xvYmFsb3BzJ10gPSAnR2xvYmFsbmEgcG9kZSZzY2Fyb247YXZhbmphIGthdGFsb2dhJzsKJGxhbmdbJ2FkZHRlbXBsYXRlJ10gPSAnRG9kYWogJnNjYXJvbjthYmxvbic7CiRsYW5nWydyZWltcG9ydHRlbXBsYXRlcyddID0gJ1Bvbm92byB1dmV6aSB1em9ya2UgcG9kLSZzY2Fyb247YWJsb25hLic7CiRsYW5nWydyZWltcG9ydGVkJ10gPSAnVXpvcmNpIHBvZC0mc2Nhcm9uO2FibG9uYSBzdSB1dmV6ZW5pLic7CiRsYW5nWyd0ZW1wbGF0ZXVwZGF0ZWQnXSA9ICcmU2Nhcm9uO2FibG9uIGRvZGF0L2l6bWVuamVuLic7CiRsYW5nWyd0ZW1wbGF0ZWRlbGV0ZWQnXSA9ICcmU2Nhcm9uO2FibG9uIG9icmlzYW4uJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ1ByZWZlcmVuY2lqZSBzYcSNdXZhbmUuJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsIHZlcnppamUgJXMgamUgaW5zdGFsaXJhbi4nOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bCBqZSB1c3BlJnNjYXJvbjtubyBuYWRvZ3JhxJFlbiBuYSB2ZXJ6aWp1ICVzLic7CiRsYW5nWydiYWRmaWxlJ10gPSAnRmFqbCAmcXVvdDslcyZxdW90OyBuaWplIHByaWh2YXRsaml2b2cgZm9ybWF0YS4nOwokbGFuZ1snYmFkaW1hZ2UnXSA9ICdQcm9ibGVtIHByaWxpa29tIG90cHJlbWFuamEgZmFqbGEgJnF1b3Q7JXMmcXVvdDsgKHByb3Zlcml0ZSB2ZWxpxI1pbnUgZmFqbGEgaS9pbGkgZG96dm9sZSBuYSBzZXJ2ZXJ1KS4nOwokbGFuZ1snYmFkaW1hZ2Vmb3JtYXQnXSA9ICcmcXVvdDslcyZxdW90OyBuaWplIHZhbGlkbmEuIFphIHNhZGEgc3UgcG9kcsW+YW5lIHNhbW8gc2xpa2UgSlBFRyBmb3JtYXRhLic7CiRsYW5nWyd1cGxvYWRlZCddID0gJ0ZhamwgJnF1b3Q7JXMmcXVvdDsgb3RwcmVtbGplbiB6YSBzdGF2a3UgJXMuJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWwgamUgZGVpbnN0YWxpcmFuLic7CiRsYW5nWydhdHRyc3VwZGF0ZWQnXSA9ICdTdm9qc3R2YSBpem1lbmplbmEuJzsKJGxhbmdbJ25vZ2xvYmFsY2hhbmdlJ10gPSAnTmVtb2p0ZSBtZW5qYXRpJzsKJGxhbmdbJ2dsb2JhbGx5dXBkYXRlZCddID0gJ0l6bWVuZSDEh2UgYml0aSBnbG9iYWxubyBwcm9wYWdpcmFuZS4nOwokbGFuZ1snZWRpdHRlbXBsYXRlJ10gPSAnSXptZW5pICZzY2Fyb247YWJsb24nOwokbGFuZ1snc3VidGVtcGxhdGVzJ10gPSAnUG9kLSZzY2Fyb247YWJsb25pIGthdGFsb2dhJzsKJGxhbmdbJ25leHQnXSA9ICc6JnJhcXVvOyc7CiRsYW5nWydwcmV2J10gPSAnJmxhcXVvOzonOwokbGFuZ1snZWRpdCddID0gJ0l6bWVuaSc7CiRsYW5nWydkZWxldGUnXSA9ICdPYnJpJnNjYXJvbjtpJzsKJGxhbmdbJ25vdGVtcGxhdGVzJ10gPSAnTmVtYSBpbnN0YWxpcmFuaWggcG9kLSZzY2Fyb247YWJsb25hLic7CiRsYW5nWydoZWxwdGV4dCddID0gJzxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPg0KPHA+VGhpcyBtb2R1bGUgbGV0cyB5b3UgY3JlYXRlIG9ubGluZSBjYXRhbG9ncyBvciBwb3J0Zm9saW9zLiBDYXRhbG9ncyBjb25zaXN0IG9mICZxdW90O0NhdGFsb2cgSXRlbXMmcXVvdDsgd2hpY2ggY291bGQgYmUgcHJvZHVjdHMsIHdvcmtzIG9mIGFydCwgb3IgdGhlIGxpa2UsIGFuZCAmcXVvdDtDYXRhbG9nIENhdGVnb3JpZXMmcXVvdDsgd2hpY2ggY291bGQgYmUgaXRlbSBjYXRlZ29yaWVzIG9yIG90aGVyIG5hdHVyYWwgZGl2aXNpb25zIG9mIHRoZSBjYXRhbG9nLjwvcD4NCjxwPkNhdGVnb3JpZXMgbWF5IGJlIGRlZmluZWQgaGllcmFyY2hpY2FsbHkgKHVzaW5nIHRoZSBzdGFuZGFyZCBDTVMgTWFkZSBTaW1wbGUgY29udGVudCBsaXN0KS4gQ2F0ZWdvcnkgcGFnZXMgY2FuIGRpc3BsYXkgaXRlbXMgaW4gdGhlIGNhdGVnb3J5IGFuZC9vciBzdWJjYXRlZ29yaWVzLCBvcHRpb25hbGx5IHJlY3Vyc2luZyB0aHJvdWdoIHN1Yi1jYXRlZ29yaWVzLiBUaGlzIGJlaGF2aW9yIGNhbiBiZSBjb25maWd1cmVkIG9uIGEgcGVyLWNhdGVnb3J5IGJhc2lzLjwvUD4NCjxwPlRoZXJlIGlzIGFsc28gYSBQcmludGFibGUgQ2F0YWxvZywgd2hpY2ggcmVwcmVzZW50cyB0aGUgd2hvbGUgY29sbGVjdGlvbiBvZiBDYXRhbG9nIEl0ZW1zIG9uIGEgc2luZ2xlIHBhZ2UgKHRoaXMgaXMgY3VycmVudGx5IGltcGxlbWVudGVkIGJhZGx5LCBhbmQgd2lsbCBsb2FkIHNsb3dseSkuPC9wPg0KPHA+VGhlIG1vZHVsZSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgJnF1b3Q7Q29udGVudCBBbGlhc2VzJnF1b3Q7IChhIG1vZHVsZSBhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jb250ZW50YWxpYXNlcy8iPnRoZSBEZXZlbG9wZXIgRm9yZ2U8L2E+KSwgd2hpY2ggYWxsb3dzIHlvdSB0byBwbGFjZSBhbnkgQ2F0YWxvZyBJdGVtIGludG8gbXVsdGlwbGUgQ2F0YWxvZyBDYXRlZ29yaWVzLjwvcD4NCjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPg0KPHA+V2hlbiB5b3UgaW5zdGFsbCB0aGlzIG1vZHVsZSwgaXQgY3JlYXRlcyB0aHJlZSBuZXcgQ29udGVudCBUeXBlczogQ2F0YWxvZyBJdGVtLCBDYXRhbG9nIENhdGVnb3J5LCBhbmQgUHJpbnRhYmxlIENhdGFsb2cuIFdoZW4geW91JiMwMzk7cmUgaW4geW91ciBzaXRlIGFkbWluaXN0cmF0aW9uIGNhdGVnb3J5LCB5b3UgYWRkIENhdGFsb2cgSXRlbXMgYW5kIENhdGFsb2cgQ2F0ZWdvcmllcyBqdXN0IGFzIHlvdSB3b3VsZCBhbnkgb3RoZXIga2luZCBvZiBwYWdlLiBTZWxlY3QgQ29udGVudCA+IFBhZ2VzID4gQWRkIENvbnRlbnQsIGFuZCB0aGVuIHNlbGVjdCAmcXVvdDtDYXRhbG9nIEl0ZW0mcXVvdDsgb3IgJnF1b3Q7Q2F0YWxvZyBDYXRlZ29yeSZxdW90OyBmcm9tIHRoZSBDb250ZW50IFR5cGUgcHVsbGRvd24uPC9wPg0KPGg0PkNhdGFsb2cgSXRlbXM8L2g0Pg0KPHA+QWRkaW5nIGEgQ2F0YWxvZyBJdGVtIGlzIHNpbWlsYXIgdG8gYWRkaW5nIGFuIG9yZGluYXJ5IHBhZ2UgdG8geW91ciBzaXRlLiBUaGUgZGF0YSBmaWVsZHMgZm9yIHRoZSBJdGVtIGFyZSBub3QgZXhhY3RseSB0aGUgc2FtZSwgaG93ZXZlci4gQWxzbyBub3RlIHRoYXQgaW4gdGhlICZxdW90O0ltYWdlcyZxdW90OyB0YWIsIHlvdSBjYW4gc2VsZWN0IG11bHRpcGxlIGltYWdlcyB0byB1cGxvYWQgZm9yIHRoZSBpdGVtLiBXaGVuIHlvdSB1cGxvYWQgaW1hZ2VzLCB0aGUgc3lzdGVtIHdpbGwgc2l6ZSB0aGVtIGFwcHJvcHJpYXRlbHkgZm9yIHRoZSBjYXRhbG9nLCBjcmVhdGUgdGh1bWJuYWlscyBmb3IgdXNlIGluIHRoZSBJdGVtJiMwMzk7cyBwYWdlLCBjcmVhdGUgdGh1bWJuYWlscyBmb3IgYW55IENhdGVnb3J5IHBhZ2VzLCBhbmQgc28gb24uIFRoaXMgcmVxdWlyZXMgdGhhdCB5b3UgaGF2ZSBHRCBvciBhIHNpbWlsYXIgaW1hZ2UgbGlicmFyeSBpbnN0YWxsZWQuIEN1cnJlbnRseSwgb25seSBqcGVnIGZvcm1hdCBpbWFnZXMgYXJlIHN1cHBvcnRlZC48L3A+DQo8aDQ+Q2F0YWxvZyBDYXRlZ29yaWVzPC9oND4NCjxwPkEgQ2F0YWxvZyBDYXRlZ29yeSBpcyB1c2VkIGZvciBvcmdhbml6aW5nIHlvdXIgY2F0YWxvZyBpdGVtcy4gSXQgcHJvdmlkZXMgYSBwYWdlIHRoYXQgbGlzdHMgQ2F0YWxvZ2VyIGNvbnRlbnQgdGhhdCBpcyBjb250YWluZWQgYnkgaXQuIEEgQ2F0YWxvZyBJdGVtIGlzIGNvbnNpZGVyZWQgdG8gYmUgcGFydCBvZiBhIENhdGFsb2cgQ2F0ZWdvcnkgaWYgaXQgaXMgYmVsb3cgdGhhdCBDYXRlZ29yeSBpbiB0aGUgU2l0ZSBIaWVyYXJjaHkuIENhdGVnb3JpZXMgY2FuIHNpbWlsYXJseSBpbmNsdWRlIG90aGVyIENhdGVnb3JpZXMuPC9wPg0KPHA+Q2F0YWxvZyBDYXRlZ29yaWVzIGhhdmUgYSBudW1iZXIgb2Ygc2V0dGluZ3MgdG8gZGV0ZXJtaW5lIGhvdyB0aGV5IHNob3VsZCBkaXNwbGF5IHRoZSBJdGVtcyBhbmQgQ2F0ZWdvcmllcyB0aGV5IGNvbnRhaW46IGlmIHlvdSBsb29rIGF0IHRoZSAmcXVvdDtPcHRpb25zJnF1b3Q7IHRhYiwgeW91IGNhbiBjaG9vc2UgaG93IG1hbnkgaXRlbXMgYW5kL29yIGNhdGVnb3JpZXMgdG8gc2hvdywgd2hhdCBvcmRlciB0byBzaG93IHRoZW0gaW4sIHdoZXRoZXIgdG8gZGlzcGxheSBvbmx5IGl0ZW1zIG9yIG9ubHkgY2F0ZWdvcmllcyBvciBib3RoLCBhbmQgaG93IG1hbnkgbGV2ZWxzIG9mIHRoZSBoaWVyYXJjaHkgdG8gZGlzcGxheSBiZWxvdyB0aGUgY2F0ZWdvcnkgcGFnZS48L3A+DQo8cD5Gb3IgZXhhbXBsZSwgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6PC9wPg0KPG9sPg0KCTxsaT48Yj5IYXRzPC9iPg0KCQk8b2w+DQoJCQk8bGk+PGI+RmFzaGlvbjwvYj4NCgkJCSAJPG9sPg0KCQkJIAkJPGxpPkZlYXRoZXJlZCBIYXQ8L2xpPjxsaT5GZWRvcmEgPC9saT48bGk+QmFzZWJhbGwgSGF0PC9saT4NCgkJCSAJPC9vbD4NCgkJCSA8L2xpPg0KCQkgCTxsaT48Yj5Xb3JrIEhhdHM8L2I+DQoJCSAgICAJPG9sPg0KCQkgICAgCQk8bGk+SGFyZCBIYXQ8L2xpPjxsaT5EaXZpbmcgSGVsbWV0PC9saT4NCgkJICAgIAk8L29sPg0KCQkgICAgPC9saT4NCgkJPC9vbD4NCgk8L2xpPg0KPC9vbD4NCjxwPkluIHRoaXMgZGlhZ3JhbSwgYm9sZGVkIGl0ZW1zIGFyZSBDYXRhbG9nIENhdGVnb3JpZXMsIGFuZCBub24tYm9sZGVkIGl0ZW1zIGFyZSBDYXRhbG9nIEl0ZW1zLiBEZXBlbmRpbmcgdXBvbiBob3cgeW91IHNldCB5b3VyIG9wdGlvbnMsIHRoZSBIYXRzIENhdGVnb3J5IFBhZ2UgY2FuIHNob3cgb25seSBlbnRyaWVzIGZvciB0aGUgRmFzaGlvbiBhbmQgV29yayBIYXRzIENhdGVnb3J5IFBhZ2VzLCBvciBpdCBjYW4gc2hvdyBlbnRyaWVzIGZvciBGYXNoaW9uLCBXb3JrIEhhdHMsIGFuZCBhbGwgdGhlIGhhdHMgbGlzdGVkIGJlbG93IHRoZW0uPC9wPg0KPHA+WW91IGNhbiBvcHQgdG8gc2hvdyB0aGUgaXRlbXMgaW4gJnF1b3Q7bmF0dXJhbCZxdW90OyBvcmRlciAoaS5lLiwgdGhlIG9yZGVyIHRoZSBJdGVtcyBzaG93IHVwIGluIHRoZSBDTVMgQ29udGVudCBIaWVyYXJjaHkpLCBvciBpbiBhbHBoYWJldGljYWwgb3JkZXIuPC9QPg0KPHA+SWYgeW91IGhhdmUgbGFyZ2UgbnVtYmVycyBvZiBpdGVtcyBpbiBhIENhdGVnb3J5LCB5b3UgY2FuIHNldCB0aGUgbWF4aW11bSBudW1iZXIgdG8gYmUgZGlzcGxheWVkIGluIGEgQ2F0ZWdvcnkgUGFnZSwgYW5kIHRoZSBwYWdlIHdpbGwgYXV0b21hdGljYWxseSBjcmVhdGUgbGlua3MgdG8gbmF2aWdhdGUgdGhyb3VnaCB0aGUgbGlzdC48L3A+DQo8cD5FYWNoIENhdGVnb3J5IHBhZ2UgY2FuIGhhdmUgZGlmZmVyZW50IHNldHRpbmdzIGZvciBzb3J0IG9yZGVyLCBsZXZlbHMgdG8gZGlzcGxheSwgYW5kIG51bWJlciBvZiBpdGVtcy4gWW91IGNhbiBzZXQgdGhlIGRlZmF1bHQgZm9yIHRoZXNlIHZhbHVlcyBpbiBFeHRlbnNpb25zID4gQ2F0YWxvZ2VyID4gTWFuYWdlIFByZWZlcmVuY2VzLiBJZiwgYXQgYSBsYXRlciBkYXRlLCB5b3Ugd2lzaCB0byBjaGFuZ2Ugc29tZSBzZXR0aW5nIG9uIGFsbCBvZiB5b3VyIENhdGVnb3J5IHBhZ2VzLCB5b3UgY2FuIGdvIGludG8gRXh0ZW5zaW9ucyA+IENhdGFsb2dlciA+IEdsb2JhbCBDYXRhbG9nIE9wdGlvbnMsIGFuZCBtYWtlIHRob3NlIGNoYW5nZXMuPC9wPg0KPGg0PkltYWdlczwvaDQ+DQo8cD5DYXRhbG9nZXIgYWxsb3dzIHlvdSB0byBzZWxlY3QgZGlmZmVyZW50IHNpemUgaW1hZ2VzIGZvciBJdGVtIHBhZ2VzLCBDYXRlZ29yeSBwYWdlcywgYW5kIHRoZSBQcmludGFibGUgQ2F0YWxvZy4gWW91IGNhbiBzZXQgdGhlc2UgZGVmYXVsdHMgaW4gRXh0ZW5zaW9ucyA+IENhdGFsb2dlciA+IE1hbmFnZSBQcmVmZXJlbmNlcy48L3A+DQo8cD5XaGVuIHlvdSB1cGxvYWQgaW1hZ2VzLCB0aGUgb3JpZ2luYWwgaXMgc3RvcmVkLiBXaGVuIHNvbWVvbmUgdmlzaXRzIGEgcGFnZSwgdGhlIHJlZHVjZWQgc2l6ZSBpbWFnZXMgYXJlIHJlcXVlc3RlZCB1c2luZyBhIHNwZWNpYWwgVVJMLCB3aGljaCB3aWxsIHJlZGlyZWN0IHRoZSB1c2VyJiMwMzk7cyBicm93c2VyIHRvIHRoZSBzY2FsZWQgaW1hZ2UgaWYgaXQgZXhpc3RzLCBhbmQgY3JlYXRpbmcgdGhlIHNjYWxlZCBpbWFnZSBpZiBpdCBkb2VzbiYjMDM5O3QuIFRoaXMgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgaW1hZ2VzLCB3aXRob3V0IGhhdmluZyB0byByZS11cGxvYWQgYWxsIHRoZSBpbWFnZXMsIG9yIHJlc2NhbGluZyB0aGVtIGFsbCBhdCBvbmNlLjwvcD4NCjxwPlRoaXMgaW1hZ2UgcmVzY2FsaW5nIGNvZGUgcmVxdWlyZXMgdGhhdCB5b3UgaGF2ZSBlaXRoZXIgSW1hZ2VNYWdpY2sgb3IgR0QgbGliIGluc3RhbGxlZCwgYW5kIGNvbmZpZ3VyZWQgaW4geW91ciBDTVMgTWFkZSBTaW1wbGUgY29uZmlnLnBocC48L3A+DQo8aDQ+RmlsZXM8L2g0Pg0KPHA+Q2F0YWxvZ2VyIGFsbG93cyB5b3UgdG8gYXNzb2NpYXRlIGFyYml0cmFyeSBmaWxlcyB3aXRoIGFueSBJdGVtIHBhZ2UuIFRoZXNlIGFyZSB1cGxvYWRlZCB2aWEgdGhlIGFkbWluLCBqdXN0IGxpa2UgaW1hZ2VzLiBUaGVyZQ0KaGF2ZSBiZWVuIHJ1ZGltZW50YXJ5IHNlY3VyaXR5IGNvbnNpZGVyYXRpb25zIChlLmcuLCBmaWxlLWV4dGVuc2lvbi1iYXNlZCByZXN0cmljdGlvbnMpLCBob3dldmVyLCBhcyB3aXRoIGFueSBmaWxlIHVwbG9hZA0KY2FwYWJpbGl0eSB0aGF0IHB1dHMgZmlsZXMgaW5zaWRlIHRoZSB3ZWIgcm9vdCwgaWYgeW91IGRvIG5vdCB0cnVzdCB5b3VyIHVwbG9hZGVycywgeW91IGFyZSBhdCBzb21lIGRlZ3JlZSBvZiByaXNrLiBZb3UgaGF2ZSBiZWVuIHdhcm5lZC48L3A+DQo8aDM+RmVhdHVyZSBMaXN0czwvaDM+DQo8cD5Zb3UgY2FuLCBhcyBvZiB2ZXJzaW9uIDAuNCwgaGF2ZSAmcXVvdDtmZWF0dXJlIGxpc3RzJnF1b3Q7IHdoaWNoIGFyZSB0aGUgPGk+bjwvaT4gbW9zdC1yZWNlbnRseSBhZGRlZCBjYXRhbG9nIGl0ZW1zLCBvciBhIGNvbGxlY3Rpb24gb2YgPGk+azwvaT4gcmFuZG9tIGl0ZW1zIGZyb20gdGhlIGNhdGFsb2cuPC9wPg0KPGg0PiZxdW90O0FsbCZxdW90OyBGZWF0dXJlIExpc3Q8L2g0Pg0KPHA+VG8gZ2V0IGEgbGlzdCBvZiBhbGwgY2F0YWxvZyBpdGVtcyAob3B0aW9uYWxseSB1bmRlciBhIHNwZWNpZmllZCBwYXJ0IG9mIHlvdXIgaGllcmFyY2h5KSBmb3IgcHJvY2Vzc2luZyB2aWEgYSB0ZW1wbGF0ZSwgeW91IGNhbiB1c2UNCnRoZSAmcXVvdDthbGwmcXVvdDsgZmVhdHVyZSBsaXN0LjwvcD4NCjxwPlRoZSBzeW50YXggZm9yIGFuICZxdW90O2FsbCZxdW90OyBsaXN0IGlzIGxpa2U6PC9wPg0KPHA+e0NhdGFsb2dlciBhY3Rpb249JiMwMzk7YWxsJiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTt9LCB3aGVyZSBzdWJfdGVtcGxhdGUgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGxpc3QuDQpUaGVyZSBpcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIsIGFsaWFzPSYjMDM5O3BhZ2VfYWxpYXMmIzAzOTssIHdoZXJlIHBhZ2VfYWxpYXMgaW5kaWNhdGVzIHRoZSB0b3Agb2YgdGhlIHRyZWUgKGUuZy4sIGEgcGxhY2UgaW4geW91ciBtZW51DQpoaWVyYXJjaHksIHR5cGljYWxseSBhIGNhdGVnb3J5IHBhZ2UpIGluIHdoaWNoIHRvIGxvb2sgZm9yIG5ldyBpdGVtcy4gQSBzcGVjaWFsIHZhbHVlIGZvciAmcXVvdDtwYWdlX2FsaWFzJnF1b3Q7IGlzICZxdW90Oy8mcXVvdDssIHdoaWNoIG1lYW5zIHRvDQpzdGFydCBhdCB0aGUgcm9vdC48L3A+DQo8cD5UaGlzIGlzIHVzZWZ1bCBmb3IgY2F0YWxvZy13aWRlIG9wZXJhdGlvbnMuIEZvciBleGFtcGxlLCB0byBnZXQgYSBsaXN0IG9mIGFsbCBjYXRlZ29yaWVzIChhbmQgZG8gc29tZXRoaW5nIHdpdGggdGhlbSksDQp5b3UgY291bGQgdXNlIHRoZSB0YWcge0NhdGFsb2dlciBhY3Rpb249JiMwMzk7YWxsJiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTsgYWxpYXM9JiMwMzk7LyYjMDM5OyByZWN1cnNlPSYjMDM5O2NhdGVnb3JpZXNfYWxsJiMwMzk7fS4gWW91ciB0ZW1wbGF0ZSBjb3VsZCB0aGVuIHRocm93DQp0aG9zZSBjYXRlZ29yaWVzIGludG8gYSBwdWxsZG93biBtZW51IHRoYXQgcmVkaXJlY3RlZCB5b3UgdG8gdGhhdCBjYXRlZ29yeSYjMDM5O3MgcGFnZSwgZm9yIGV4YW1wbGU6PC9wPg0KPHByZT4NCjxzZWxlY3QgbmFtZT0mcXVvdDtmb28mcXVvdDsgb25jaGFuZ2U9JnF1b3Q7ZG9jdW1lbnQubG9jYXRpb249dGhpcy5vcHRpb25zW3RoaXMuc2VsZWN0ZWRJbmRleF0udmFsdWU7JnF1b3Q7Pg0KPG9wdGlvbiB2YWx1ZT0mcXVvdDsmcXVvdDs+U2VsZWN0IEEgdGFyZ2V0PC9vcHRpb24+DQp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPXRoaXNvbmV9DQogICA8b3B0aW9uIHZhbHVlPSZxdW90O3skdGhpc29uZS5saW5rfSZxdW90Oz57JHRoaXNvbmUudGl0bGV9PC9vcHRpb24+DQp7L2ZvcmVhY2h9DQo8L3NlbGVjdD4NCjwvcHJlPg0KPHA+SWYgeW91IHdhbnRlZCB0aGF0IHRvIG9ubHkgc2hvdyBjYXRlZ29yaWVzIHRoYXQgd2VyZSBpbiB0aGUgdmVyeSB0b3AgbGV2ZWwgb2YgeW91ciBoaWVyYXJjaHksIHlvdSYjMDM5O2QgcmVwbGFjZSB0aGUgcmVjdXJzZT0mIzAzOTtjYXRlZ29yaWVzX2FsbCYjMDM5OyB3aXRoDQpyZWN1cnNlPSYjMDM5O2NhdGVnb3JpZXNfb25lJiMwMzk7LiBPciBpZiB5b3Ugd2FudGVkIGl0IHRvIGJlIGFsbCBjYXRhbG9nIEl0ZW1zIGluc3RlYWQgb2YgY2F0ZWdvcmllcywgeW91IGNvdWxkIHVzZSBhIHRhZyBsaWtlOg0Ke0NhdGFsb2dlciBhY3Rpb249JiMwMzk7YWxsJiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTsgYWxpYXM9JiMwMzk7LyYjMDM5OyByZWN1cnNlPSYjMDM5O2l0ZW1zX2FsbCYjMDM5O30NCjxwPlNpbWlsYXJseSwgeW91IGNvdWxkIGhhdmUgaXQgbGlzdCBvbmx5IGNhdGVnb3JpZXMgdW5kZXIgdGhlIGN1cnJlbnQgcGFnZSAoYnkgb21pdHRpbmcgdGhlICZxdW90O2FsaWFzPSYjMDM5Oy8mIzAzOTsmcXVvdDspLiBUaGUgY29tYmluYXRpb25zIGFyZSBiYXNpY2FsbHkgbGltaXRsZXNzITwvcD4NCjxwPkFsbCBzdXBwb3J0ZWQgdmFsdWVzIG9mIHJlY3Vyc2UgaW5jbHVkZTo8dWw+DQo8bGk+aXRlbXNfb25lIC0gQ2F0YWxvZyBpdGVtcywgbm8gbW9yZSB0aGFuIG9uZSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KPGxpPml0ZW1zX2FsbCAtIENhdGFsb2cgaXRlbXMsIGF0IGFueSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KPGxpPmNhdGVnb3JpZXNfb25lIC0gQ2F0ZWdvcmllcywgbm8gbW9yZSB0aGFuIG9uZSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KPGxpPmNhdGVnb3JpZXNfYWxsIC0gQ2F0ZWdvcmllcywgYXQgYW55IGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+bWl4ZWRfb25lIC0gQ2F0YWxvZyBpdGVtcyBhbmQgQ2F0ZWdvcmllcywgbm8gbW9yZSB0aGFuIG9uZSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KPGxpPm1peGVkX2FsbCAtIENhdGFsb2cgaXRlbXMgYW5kIENhdGVnb3JpZXMsIGF0IGFueSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KPC91bD4NCjwvcD4NCjxwPkl0ZW1zIGluIHRoZXNlIGxpc3RzIGNvbWUgYmFjayBpbiBoaWVyYXJjaHkgb3JkZXIuIFlvdSBjYW4gY2hhbmdlIHRoaXMgdXNpbmcgdGhlICYjMDM5O2dsb2JhbF9zb3J0JiMwMzk7IHBhcmFtZXRlci4gWW91ciBjaG9pY2VzIGFyZTo8L3A+DQo8dWw+DQo8bGk+YWxwaGEgLSBhbHBoYWJldGljYWxseSBieSB0aXRsZTwvbGk+DQo8bGk+ZGF0ZSAtIGluIG9yZGVyIG9mIGl0ZW0gY3JlYXRpb24gZGF0ZTwvbGk+DQo8bGk+bWRhdGUgLSBpbiBvcmRlciBvZiBpdGVtIG1vZGlmaWNhdGlvbiBkYXRlPC9saT4NCjwvdWw+DQo8cD5Zb3UgbWF5IG9yZGVyIHRoZXNlIHNvcnRzIHVzaW5nIHRoZSAmIzAzOTtnbG9iYWxfc29ydF9kaXImIzAzOTsgcGFyYW1ldGVyLCB3aGljaCB3aWxsIGFsbG93ICYjMDM5O2FzYyYjMDM5OyBvciAmIzAzOTtkZXNjJiMwMzk7LjwvcD4NCjxwPlNvLCBmb3IgYSB0aG9yb3VnaCBleGFtcGxlOjwvcD4NCjxwPntDYXRhbG9nZXIgYWN0aW9uPSYjMDM5O2FsbCYjMDM5OyBzdWJfdGVtcGxhdGU9JiMwMzk7bXlfc3ViX3RlbXBsYXRlJiMwMzk7IGFsaWFzPSYjMDM5Oy8mIzAzOTsgcmVjdXJzZT0mIzAzOTtjYXRlZ29yaWVzX2FsbCYjMDM5OyBnbG9iYWxfc29ydD0mIzAzOTthbHBoYSYjMDM5OyBnbG9iYWxfc29ydF9kaXI9JiMwMzk7YXNjJiMwMzk7fTwvcD4NCjxoND5SZWNlbnRseSBBZGRlZCBGZWF0dXJlIExpc3Q8L2g0Pg0KPHA+VG8gdXNlIGEgJnF1b3Q7bW9zdC1yZWNlbnRseSBhZGRlZCZxdW90OyBsaXN0IHdpbGwgYWxsb3cgeW91IHRvIGRpc3BsYXkgdGhlIG1vc3QgcmVjZW50bHktYWRkZWQgY2F0YWxvZyBpdGVtcyB1bmRlciBhIHNwZWNpZmllZCBwYXJ0IG9mIHlvdXIgaGllcmFyY2h5LjwvcD4NCjxwPlRoZSBzeW50YXggZm9yIGEgJnF1b3Q7bW9zdCByZWNlbnRseSBhZGRlZCZxdW90OyBsaXN0IGlzIGxpa2U6PC9wPg0KPHA+e0NhdGFsb2dlciBhY3Rpb249JiMwMzk7cmVjZW50JiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTt9LCB3aGVyZSBzdWJfdGVtcGxhdGUgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGxpc3QuDQpUaGVyZSBhcmUgZm91ciBvcHRpb25hbCBwYXJhbWV0ZXJzLCBjb3VudD0mIzAzOTszJiMwMzk7IGFsaWFzPSYjMDM5O3BhZ2VfYWxpYXMmIzAzOTssIGdsb2JhbF9zb3J0PSYjMDM5O2RhdGUmIzAzOTssIGdsb2JhbF9zb3J0X2Rpcj0mIzAzOTtkZXNjJiMwMzk7IHdoZXJlIGNvdW50DQppcyB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRvIGluY2x1ZGUsIHBhZ2VfYWxpYXMgaW5kaWNhdGVzIHRoZSB0b3Agb2YgdGhlIHRyZWUgKGUuZy4sIGEgcGxhY2UgaW4geW91ciBtZW51IGhpZXJhcmNoeSwNCnR5cGljYWxseSBhIGNhdGVnb3J5IHBhZ2UpIGluIHdoaWNoIHRvIGxvb2sgZm9yIG5ldyBpdGVtcy4gQSBzcGVjaWFsIHZhbHVlIGZvciAmcXVvdDtwYWdlX2FsaWFzJnF1b3Q7IGlzICZxdW90Oy8mcXVvdDssIHdoaWNoIG1lYW5zDQp0byB1c2UgPGk+YWxsPC9pPiBwYWdlcyBpbiB0aGUgc2l0ZS4gZ2xvYmFsX3NvcnQgbWF5IGJlICYjMDM5O2RhdGUmIzAzOTsgKGZvciBpdGVtIGNyZWF0aW9uIGRhdGUpIG9yICYjMDM5O21kYXRlJiMwMzk7IGZvciBtb2RpZmljYXRpb24gZGF0ZSwgYW5kDQpnbG9iYWxfc29ydF9kaXIgbWF5IGJlICYjMDM5O2FzYyYjMDM5OyBvciAmIzAzOTtkZXNjJiMwMzk7LjwvcD4NCjxoND5SYW5kb20gSXRlbXMgRmVhdHVyZSBMaXN0PC9oND4NCjxwPlRoZSBzeW50YXggZm9yIGEgJnF1b3Q7cmFuZG9tJnF1b3Q7IGxpc3QgaXMgbGlrZTo8L3A+DQo8cD57Y0NhdGFsb2dlciBhY3Rpb249JiMwMzk7cmFuZG9tJiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTt9LCB3aGVyZSBzdWJfdGVtcGxhdGUgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGxpc3QuIFRoZXJlIGFyZSB0d28gb3B0aW9uYWwgcGFyYW1ldGVycywgY291bnQ9JiMwMzk7MyYjMDM5OyBhbGlhcz0mIzAzOTtwYWdlX2FsaWFzJiMwMzk7LCB3aGVyZSBjb3VudCBpcyB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRvIGluY2x1ZGUsIGFuZCBwYWdlX2FsaWFzIGluZGljYXRlcyB0aGUgdG9wIG9mIHRoZSB0cmVlIChlLmcuLCBhIHBsYWNlIGluIHlvdXIgbWVudSBoaWVyYXJjaHksIHR5cGljYWxseSBhIGNhdGVnb3J5IHBhZ2UpIGluIHdoaWNoIHRvIGxvb2sgZm9yIG5ldyBpdGVtcy4gQSBzcGVjaWFsIHZhbHVlIGZvciAmcXVvdDtwYWdlX2FsaWFzJnF1b3Q7IGlzICZxdW90Oy8mcXVvdDssIHdoaWNoIG1lYW5zIHRvIHVzZSA8aT5hbGw8L2k+IHBhZ2VzIGluIHRoZSBzaXRlLjwvcD4NCjxoND5WYXJpYWJsZTwvaDQ+DQo8cD5Zb3UgY2FuIGdyYWIgdmFyaWFibGVzIChhdHRyaWJ1dGVzKSBvdXRzaWRlIG9mIHlvdXIgQ2F0YWxvZ2VyIHRlbXBsYXRlcywgc2F5IGluIGEgZ2xvYmFsIGNvbnRlbnQgYmxvY2ssIHVzaW5nIHRoZSB2YXJpYWJsZSBtZXRob2QuIFRoZSBzeW50YXggbG9va3MgbGlrZTo8L3A+DQo8cD57Q2F0YWxvZ2VyIGFjdGlvbj0mIzAzOTt2YXJpYWJsZSYjMDM5OyBuYW1lPSYjMDM5O2l0ZW1ub3RlcyYjMDM5OyBkZWZhdWx0PSYjMDM5O25vIG5vdGVzJiMwMzk7fSwgd2hlcmUgbmFtZSBpcyB0aGUgYXR0cmlidXRlIHRvIGRpc3BsYXkgKHVzaW5nIHRoZSBzYW1lIGFsbCBsb3dlci1jYXNlLCBwdW5jdHVhdGlvbi1mcmVlIHJlcHJlc2VudGF0aW9uIGxpa2UgdGhlIHNtYXJ0eSB0ZW1wbGF0ZSB2YXJpYWJsZXMpLCBhbmQgZGVmYXVsdCBpcyB0aGUgdmFsdWUgdG8gdXNlIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IGRlZmluZWQuPC9wPg0KPGg0Pkl0ZW0gQ29tcGFyaXNvbnM8L2g0Pg0KPHA+QXMgb2YgdmVyc2lvbiAwLjcuNywgdGhlcmUgaXMgYSBwcm9kdWN0IGNvbXBhcmlzb24gYWN0aW9uOjwvcD4NCjxwPntjQ2F0YWxvZ2VyIGFjdGlvbj0mIzAzOTtjb21wYXJlJiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTsgaXRlbXM9JiMwMzk7aXRlbTEsaXRlbTIsaXRlbTMmIzAzOTt9LCB3aGVyZSBzdWJfdGVtcGxhdGUgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGxpc3QsIGFuZCBpdGVtcyBpcyBhIGNvbW1hLWRlbGltaXRlZCBsaXN0IG9mIGl0ZW0gcGFnZSBhbGlhc2VzIHRvIGNvbXBhcmUuIEJvbGRlciB1c2VycyBtYXkgYWxzbyBjaG9vc2UgdG8gcGFzcyBpbiB0aGUgaXRlbXMgdG8gY29tcGFyZSBhcyByZXF1ZXN0IHZhcmlhYmxlcywgdGhlcmVieSBlbmFibGluZyBkeW5hbWljIGNvbXBhcmlzb25zIGJhc2VkIG9uIHVzZXIgc2VsZWN0aW9ucy4gRG8gdGhpcyBieSBzZXR0aW5nIHRoZSAmcXVvdDtpdGVtcyZxdW90OyB2YXJpYWJsZSBvbiB0aGUgcmVxdWVzdCBwYXNzZWQgdG8gdGhlIHBhZ2UgY29udGFpbmluZyB0aGUgQ2F0YWxvZ2VyIHRhZyB3aXRoIGEgY29tcGFyZSBhY3Rpb24uPC9wPg0KPHA+VGhlIGRlZmF1bHQgaXRlbSBjb21wYXJpc29uIHRlbXBsYXRlIGNvdWxkIHVzZSBzb21lIHN0eWxpbmcsIGUuZy4sOjwvcD4NCjxwcmU+DQouaXRlbV9jb21wYXJpc29uIHRoIHtmb250LXdlaWdodDogYm9sZDsgcGFkZGluZzogNXB4OyB0ZXh0LWFsaWduOmNlbnRlcjt9DQouaXRlbV9jb21wYXJpc29uIHRkIHtib3JkZXI6IDFweCBzb2xpZCBncmF5OyBwYWRkaW5nOiAzcHggNXB4O3RleHQtYWxpZ246cmlnaHQ7fQ0KPC9wcmU+DQo8aDM+Q3VzdG9taXphdGlvbiBhbmQgQWR2YW5jZWQgVG9waWNzPC9oMz4NCjxoND5DYXRhbG9nIEl0ZW0gQXR0cmlidXRlczwvaDQ+DQo8cD5UaGUgZGVmYXVsdCBpdGVtIGF0dHJpYnV0ZXMgYXJlIHR5cGljYWwgZm9yIGEgY2F0YWxvZyBvZiBwcm9kdWN0cyBvciBhcnR3b3JrcywgYnV0IGJ5IGdvaW5nIGludG8gRXh0ZW5zaW9ucyA+IENhdGFsb2dlciA+IE1hbmFnZSBVc2VyLURlZmluZWQgQXR0cmlidXRlcywgeW91IGNhbiBjaGFuZ2UgdGhlIGF0dHJpYnV0ZXMuIEl0JiMwMzk7cyBiZXN0IHRvIGRlZmluZSB0aGUgYXR0cmlidXRlcyBiZWZvcmUgeW91IHN0YXJ0IGVudGVyaW5nIENhdGFsb2cgSXRlbXMuPC9wPg0KPHA+Tm90ZSB0aGF0IHRoZSBhdHRyaWJ1dGVzIHlvdSBkZWZpbmUgbWF5IG5lZWQgdG8gYmUgYWRkZWQgdG8gdGhlIHRlbXBsYXRlIHRoYXQgeW91JiMwMzk7cmUgdXNpbmcgdG8gZGlzcGxheSBDYXRhbG9nIEl0ZW1zIC0tIHNlZSBDdXN0b20gVGVtcGxhdGVzIGJlbG93LjwvcD4NCjxoND5DYXRhbG9nIENhdGVnb3J5IEF0dHJpYnV0ZXM8L2g0Pg0KPHA+U2ltaWxhcmx5LCB5b3UgY2FuIHNldCBhdHRyaWJ1dGVzIGZvciBDYXRlZ29yaWVzLiBBZ2FpbiwgdGhlIGF0dHJpYnV0ZXMgeW91IGRlZmluZSBtYXkgbmVlZCB0byBiZSBhZGRlZCB0byB0aGUgdGVtcGxhdGUgdGhhdCB5b3UmIzAzOTtyZSB1c2luZyB0byBkaXNwbGF5IENhdGFsb2cgQ2F0ZWdvcmllcyAtLSBzZWUgQ3VzdG9tIFRlbXBsYXRlcyBiZWxvdy48L3A+DQo8aDQ+UHJpbnRhYmxlIENhdGFsb2cgQXR0cmlidXRlczwvaDQ+DQo8cD5MaWtld2lzZSwgeW91IGNhbiBzZXQgYXR0cmlidXRlcyBmb3IgUHJpbnRhYmxlIENhdGFsb2dzLiBBZ2FpbiwgdGhlIGF0dHJpYnV0ZXMgeW91IGRlZmluZSBtYXkgbmVlZCB0byBiZSBhZGRlZCB0byB0aGUgdGVtcGxhdGUgdGhhdCB5b3UmIzAzOTtyZSB1c2luZyB0byBkaXNwbGF5IHlvdXIgUHJpbnRhYmxlIENhdGFsb2cgLS0gc2VlIEN1c3RvbSBUZW1wbGF0ZXMgYmVsb3cuPC9wPg0KPGg0PkN1c3RvbSBUZW1wbGF0ZXM8L2g0Pg0KPHA+SWYgeW91JiMwMzk7cmUgd2lsbGluZyB0byBtZXNzIGFyb3VuZCB3aXRoIFNtYXJ0eSBUZW1wbGF0ZXMsIHlvdSBjYW4gY2hhbmdlIHRoZSBsYXlvdXQgb2YgYW55IG9mIHRoZSBwYWdlcyBnZW5lcmF0ZWQgYnkgQ2F0YWxvZ2VyLiBUaGlzIHNob3VsZCBtYWtlIGNlcnRhaW4gZGV2ZWxvcGVycyB2ZXJ5IGhhcHB5LCBldmVuIGlmIHRoZSBpbmVmZmljaWVuY3kgb2YgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgd2lsbCBub3QuIFRoZXJlIGFyZSBmb3VyIGtpbmRzIG9mIHRlbXBsYXRlczogb25lIGtpbmQgZm9yIENhdGFsb2cgSXRlbXMsIG9uZSBraW5kIGZvciBDYXRhbG9nIENhdGVnb3JpZXMsIGFuZCBvbmUga2luZCBmb3IgUHJpbnRhYmxlIENhdGFsb2dzLCBhbmQgb25lIGtpbmQgZm9yICZxdW90O0ZlYXR1cmUmcXVvdDsgbGlzdHMsIHN1Y2ggYXMgcmVjZW50bHkgYWRkZWQgaXRlbXMgb3IgcmFuZG9tIHNlbGVjdGlvbnMuPC9wPg0KPHA+V2hlbiBlZGl0aW5nIGEgVGVtcGxhdGUsIHRoZSBhZG1pbiBzY3JlZW4gd2lsbCBkaXNwbGF5IGEgbGlzdCBvZiBTbWFydHkgdGFncyBhdmFpbGFibGUgdG8geW91IGZvciB0aGF0IGtpbmQgb2YgdGVtcGxhdGUuIFRoaXMNCndpbGwgb25seSBoYXBwZW4gb25jZSB0aGUgbW9kdWxlIGtub3dzIHdoYXQga2luZCBvZiB0ZW1wbGF0ZSB5b3UmIzAzOTtyZSBlZGl0aW5nLCBzbyB3aGVuIHlvdSBmaXJzdCBjcmVhdGUgdGhlIHRlbXBsYXRlLCBpdCBkaXNwbGF5cyBhbGwNCnRoZSBTbWFydHkgdGFncyBpdCBrbm93cyBhYm91dCwgb25seSBzb21lIG9mIHdoaWNoIGJlaW5nIGFwcGxpY2FibGUuPC9wPg0KPGg0PkRpc3BsYXlpbmcgQXR0cmlidXRlcyBvbiBJdGVtIFBhZ2VzPC9oND4NCjxwPkF0dHJpYnV0ZXMgYXJlIGF2YWlsYWJsZSB0byBTbWFydHkgYXMgdG9wLWxldmVsIHZhcmlhYmxlcy4gVGhleSBhcmUgc3RvcmVkIGFzIHNhbml0aXplZCB2ZXJzaW9ucyBvZiB0aGUgYXR0cmlidXRlIG5hbWVzLCB3aGljaCBtZWFucw0KaXQgaXMgY29udmVydGVkIHRvIGxvd2VyIGNhc2UgYW5kIGFsbCBwdW5jdHVhdGlvbiBhbmQgbm9uLVVTLUFTQ0lJIGNoYXJhY3RlcnMgZ2V0IHJlbW92ZWQuIFRoaXMgaXMgYmVjYXVzZSBTbWFydHkgaXMgZmluaWNreSwgYW5kIHdpbGwgbm90IGhhbmRsZSB0aGVzZSBjaGFyYWN0ZXJzLjwvcD4NCjxwPlNvLCBmb3IgZXhhbXBsZSwgaWYgeW91IGhhdmUgYW4gYXR0cmlidXRlIGNhbGxlZCAmcXVvdDtHbCZ1dW1sO2NrbGljaGtlaXQmcXVvdDssIHRoZXJlIHdpbGwgYmUgYSBTbWFydHkgdmFyaWFibGUgeyRnbGNrbGljaGtlaXR9LiBOb3RlIHRoYXQgdGhlICZxdW90OyZ1dW1sOyZxdW90OyBpcyBvbWl0dGVkLjwvcD4NCjxwPkZvcnR1bmF0ZWx5LCB0aGlzIGlzIHNpbXBsaWZpZWQgYnkgdGhlICRhdHRybGlzdCBsaXN0IGF2YWlsYWJsZS4gVGhpcyBpcyBhIGxpc3Qgb2YgYXR0cmlidXRlcyBieSBmb3JtYWwgbmFtZSAoJnF1b3Q7R2wmdXVtbDtja2xpY2hrZWl0JnF1b3Q7KSBhbmQgdGhlaXIga2V5ICgmcXVvdDtnbGNrbGljaGtlaXQmcXVvdDspLiBGb3IgZXhhbXBsZToNCjxwcmU+DQoJe3NlY3Rpb24gbmFtZT1hdCBsb29wPSRhdHRybGlzdH0NCgk8ZGl2IGNsYXNzPSZxdW90O2l0ZW1fYXR0cmlidXRlX25hbWUmcXVvdDs+eyRhdHRybGlzdFthdF0ubmFtZX06PC9kaXY+PGRpdiBjbGFzcz0mcXVvdDtpdGVtX2F0dHJpYnV0ZV92YWwmcXVvdDs+e2V2YWwgdmFyPSRhdHRybGlzdFthdF0ua2V5fTwvZGl2Pg0KCXsvc2VjdGlvbn0NCjwvcHJlPg0KPHA+QXMgb2YgdmVyc2lvbiAwLjgsIHlvdSBjYW4gYXNzaWduIGFuIGFsaWFzIHRvIGVhY2ggYXR0cmlidXRlLiBUaGVzZSBhbGlhc2VzIG5lZWQgdG8gYmUgVVMtQVNDSUkgYW5kIGNvbnRhaW4gbm8gcHVuY3R1YXRpb24uIFRoZXkgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgc2FuaXRpemVkIGF0dHJpYnV0ZSBuYW1lIChlLmcuLCB5b3UgY291bGQgdXNlIHRoZSBhbGlhcyAmcXVvdDtnbHVlY2tsaWNoa2VpdCZxdW90OykuPC9wPg0KPGg0PkRpc3BsYXlpbmcgQXR0cmlidXRlcyBvbiBQYWdlcyB3aXRoIExpc3RzIG9mIEl0ZW1zPC9oND4NCjxwPkF0dHJpYnV0ZXMgYXJlIGluY2x1ZGVkIGluIHRoZSAkaXRlbWxpc3RzWyNdIGluIHR3byBkaWZmZXJlbnQgd2F5czogdG9wLWxldmVsIGF0dHJpYnV0ZXMgb2YgdGhlIGl0ZW0sIGFuZCBhcyBwYXJ0IG9mIHRoZSBpdGVtJiMwMzk7cyAmcXVvdDthdHRyJnF1b3Q7IGFycmF5LiBUaGV5IGFyZSBzdG9yZWQgYXMgc2FuaXRpemVkIHZlcnNpb25zIG9mIHRoZSBhdHRyaWJ1dGUgbmFtZXMsIHdoaWNoIG1lYW5zDQppdCBpcyBjb252ZXJ0ZWQgdG8gbG93ZXIgY2FzZSBhbmQgYWxsIHB1bmN0dWF0aW9uIGFuZCBub24tVVMtQVNDSUkgY2hhcmFjdGVycyBnZXQgcmVtb3ZlZC4gVGhpcyBpcyBiZWNhdXNlIFNtYXJ0eSBpcyBmaW5pY2t5LCBhbmQgd2lsbCBub3QgaGFuZGxlIHRoZXNlIGNoYXJhY3RlcnMuPC9wPg0KPHA+U28sIGZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBhbiBhdHRyaWJ1dGUgY2FsbGVkICZxdW90O0dsJnV1bWw7Y2tsaWNoa2VpdCZxdW90OywgdGhlIGl0ZW0gd2lsbCBoYXZlICRpdGVtLmdsY2tsaWNoa2VpdCBhbmQgJGl0ZW0uYXR0cnNbJiMwMzk7Z2xja2xpY2hrZWl0JiMwMzk7XS4gTm90ZSB0aGF0IHRoZSAmcXVvdDsmdXVtbDsmcXVvdDsgaXMgb21pdHRlZC4gWW91IGNhbiByZWZlciB0byB0aGlzIGF0dHJpYnV0ZSBpbiB5b3VyIHRlbXBsYXRlDQp3aXRoIFNtYXJ0eSBjb2RlIGxpa2U6IHskaXRlbWxpc3RbaW5kZXhdLmdsY2tsaWNra2VpdH0gb3IgeyRpdGVtbGlzdFtpbmRleF0uYXR0cnMuZ2xja2xpY2hrZWl0fS48L3A+DQo8cD5Gb3J0dW5hdGVseSwgdGhpcyBpcyBzaW1wbGlmaWVkIGJ5IHRoZSAkYXR0cmxpc3QgbGlzdCBhdmFpbGFibGUuIFRoaXMgaXMgYSBsaXN0IG9mIGF0dHJpYnV0ZXMgYnkgZm9ybWFsIG5hbWUgKCZxdW90O0dsJnV1bWw7Y2tsaWNoa2VpdCZxdW90OykgYW5kIHRoZWlyIGtleSAoJnF1b3Q7Z2xja2xpY2hrZWl0JnF1b3Q7KS4gRm9yIGV4YW1wbGU6DQo8cHJlPg0KICAgIHtmb3JlYWNoIGZyb209JGF0dHJsaXN0IGl0ZW09YXR0ciBrZXk9a30NCiAgICB7JGF0dHJ9OiB7JGl0ZW1zW251bWxvb3BdWyRrXX0NCiAgICB7L2ZvcmVhY2h9DQo8L3ByZT4NCjxwPkFzIG9mIHZlcnNpb24gMC44LCB5b3UgY2FuIGFzc2lnbiBhbiBhbGlhcyB0byBlYWNoIGF0dHJpYnV0ZS4gVGhlc2UgYWxpYXNlcyBuZWVkIHRvIGJlIFVTLUFTQ0lJIGFuZCBjb250YWluIG5vIHB1bmN0dWF0aW9uLiBUaGV5IGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIHNhbml0aXplZCBhdHRyaWJ1dGUgbmFtZSAoZS5nLiwgeW91IGNvdWxkIHVzZSB0aGUgYWxpYXMgJnF1b3Q7Z2x1ZWNrbGljaGtlaXQmcXVvdDspLjwvcD4NCjxoND5TbWFydHkgdGFncyBpbiBBdHRyaWJ1dGVzPC9oND4NCjxwPlNvbWV0aW1lcywgeW91JiMwMzk7bGwgd2FudCB0aGUgZGVzY3JpcHRpb25zIG9mIHlvdXIgaXRlbXMgdG8gaW5jbHVkZSBzbWFydHkgdGFncyAoZS5nLiwgY21zX3NlbGZsaW5rKS4gVG8gbWFrZSB0aGF0IHdvcmssIHlvdSYjMDM5O2xsIG5lZWQgdG8NCnVwZGF0ZSB5b3VyIHRlbXBsYXRlLiBGb3IgdGhlIGF0dHJpYnV0ZXMgd2hlcmUgeW91IHdhbnQgc21hcnR5IHRhZ3MgdG8gYmUgYWN0aXZlLCB5b3UmIzAzOTtsbCBuZWVkIHRvIG5lc3QgdGhlIHNtYXJ0eSBldmFsdWF0aW9ucyBpbiB5b3VyIHRlbXBsYXRlLiBGb3IgZXhhbXBsZTo8L3A+DQo8cHJlPg0Ke2V2YWwgdmFyPSRhdHRybGlzdFthdF0ua2V5fQ0KPC9wcmU+DQo8cD5iZWNvbWVzOjwvcD4NCjxwcmU+DQp7ZXZhbCB2YXI9JGVudHJ5LT5pbnB1dCBhc3NpZ249dGhpc0F0dHJ9e2V2YWwgdmFyPSR0aGlzQXR0cn0NCjwvcHJlPg0KPHA+VWdseT8gWXVwLiBCdXQgaXQgd29ya3MuPC9wPg0KPGgzPkNhdGFsb2dlciBJbWFnZSBTeXN0ZW08L2gzPg0KPHA+Q2F0YWxvZ2VyIGhhcyBhbiBpbWFnZSBzeXN0ZW0gdGhhdCB3aWxsIGFsbG93IHlvdSB0byBkeW5hbWljYWxseSBjaGFuZ2UgdGhlIGltYWdlIGRpc3BsYXkgc2l6ZS4gSWYgeW91IGRvIG5vdCBsaWtlIGl0LCB5b3UgY2FuIGFsdGVyDQp0aGUgdGVtcGxhdGVzIGFuZCB1c2UgYW55IGltYWdlIHN5c3RlbSB5b3Ugd2FudC48L3A+DQo8cD5XaGVuIHlvdSB1cGxvYWQgYW4gaW1hZ2UgdXNpbmcgQ2F0YWxvZ2VyLCBpdCBnZXRzIHB1dCBpbiBhIHNwZWNpYWwgc2V0IG9mIGRpcmVjdG9yaWVzIHRvIG1ha2UgdGhlIGltYWdpbmcgZWFzaWVyLiBZb3Ugd2lsbCBzZWUgbW9yZQ0KYWJvdXQgdGhpcyBsYXRlci48L3A+DQo8cD5JdCB3b3JrcyBieSBjYWxsaW5nIGEgUEhQIHByb2dyYW0gaW5zdGVhZCBvZiBkaXJlY3RseSByZWZlcmVuY2luZyB0aGUgaW1hZ2UuIFRoZSBwcm9ncmFtIHVzZXMgdGhlIGZpbGVuYW1lIHRvIHNlZSBpZiB0aGUNCmltYWdlIGFscmVhZHkgZXhpc3RzIGluIHRoZSBjb3JyZWN0IHNpemUuIElmIHNvLCBpdCByZWRpcmVjdHMgdG8gdGhhdCBpbWFnZS4gT3RoZXJ3aXNlLCBpdCB1c2VzIHlvdXIgR0RMSUIgb3IgSW1hZ2VNYWdpY2sgdG8gY3JlYXRlDQp0aGUgaW1hZ2UgaW4gdGhlIGNvcnJlY3Qgc2l6ZSwgYW5kIHRoZW4gcmVkaXJlY3RzIHRvIGl0Lg0KPC9wPg0KPGg0PkNhdGFsb2dlciBJbWFnZSBGaWxlc3BlYyBFeHBsYW5hdGlvbjwvaDQ+DQo8cD5BIGNhdGFsb2dlciBpbWFnZSBoYXMgYSBmaWxlc3BlYyBsaWtlOg0KPGJyIC8+DQpyb290X3BhdGgvbW9kdWxlcy9DYXRhbG9nZXIvQ2F0YWxvZ2VyLkltYWdlLnBocD9pPWl0ZW1uYW1lX2ZfMV80MDBfMS5qcGcmYW1wO2FjPTgyODg4DQo8L3A+DQo8cD5UaGUgaW50ZXJlc3RpbmcgdGhpbmcgaXMgJnF1b3Q7aXRlbW5hbWVfZl8xXzQwMF8xLmpwZyZxdW90OyAtIHRoZSBzdHVmZiBiZWZvcmUgaXMganVzdCBhIGNhbGwgdG8gdGhlIHByb2dyYW0sIGFuZCB0aGUgJmFtcDthYz04Mjg4OCBpcyBhIHJhbmRvbSB0aGluZyB0aGF0DQppcyBkZXNpZ25lZCB0byBwcmV2ZW50IGJyb3dzZXIgY2FjaGluZy4gU28gZXhhbWluaW5nIHRoZSBuYW1lIHBpZWNlIGJ5IHBpZWNlIChzZXBhcmF0aW5nIGF0IHRoZSB1bmRlcnNjb3JlcyksIHdlIGhhdmU6PC9wPg0KPHVsPg0KPGxpPml0ZW0gbmFtZSAtIHRoaXMgaXMgdGhlIGFsaWFzIG9mIHRoZSBpdGVtL2NhdGVnb3J5IHBhZ2UgY29udGFpbmluZyB0aGUgaW1hZ2UuPC9saT4NCjxsaT5pbWFnZSB0eXBlIC0gdGhpcyBpcyBhIGRlc2lnbmF0aW9uIGZvciBpbWFnZSB0eXBlOjx1bD4NCjxsaT5mIC0gaXRlbSBmdWxsLXNpemUgaW1hZ2U8L2xpPg0KPGxpPnQgLSBpdGVtIHRodW1ibmFpbDwvbGk+DQo8bGk+Y2YgLSBjYXRlZ29yeSBmdWxsLXNpemVkIGltYWdlPC9saT4NCjxsaT5jdCAtIGNhdGVnb3J5IHRodW1ibmFpbDwvbGk+DQo8bGk+Y3RmIC0gcHJpbnRhYmxlIGNhdGFsb2cgZnVsbC1zaXplZCBpbWFnZTwvbGk+DQo8L3VsPg0KPC9saT4NCjxsaT5pbWFnZSBudW1iZXIgLSBzbyBhIGdpdmVuIGl0ZW0vY2F0YWxvZy9ldGMgY2FuIGhhdmUgbXVsdGlwbGUgaW1hZ2VzPC9saT4NCjxsaT5sb25nIGRpbWVuc2lvbiAtIGxvbmcgZGltZW5zaW9uIG9mIHRoZSBpbWFnZSwgaW4gcGl4ZWxzPC9saT4NCjxsaT5taXNzaW5nIGZsYWcgLSAxIGlmIHlvdSB3YW50IHRvIHNob3cgYW4gJnF1b3Q7aW1hZ2UgbWlzc2luZyZxdW90OyBpbWFnZSBpZiB0aGlzIGltYWdlIGRvZXNuJiMwMzk7dCBleGlzdCwgMCBvdGhlcndpc2U8L2xpPg0KPC91bD4NCjxwPg0KVGhpcyB3aWxsIHRha2UgYW4gaW1hZ2UgaW4gcm9vdF9wYXRoL3VwbG9hZHMvaW1hZ2VzL2NhdGFsb2dfc3JjL2l0ZW1uYW1lX3NyY18xDQo8aDQ+QWNjZXNzaW5nIHlvdXIgT3JpZ2luYWwgSW1hZ2U8L2g0Pg0KPHA+V2hlbiBDYXRhbG9nZXIgdXBsb2FkcyBpbWFnZXMsIGl0IHB1dHMgdGhlbSBpbnRvIGEgZGlyZWN0b3J5IGNhbGxlZCAmcXVvdDtjYXRhbG9nZXJfc3JjJnF1b3Q7IGluIHlvdXIgdXBsb2Fkcy9pbWFnZXMvIGRpcmVjdG9yeS4gVGhleSBpbWFnZXMgYXJlIG5hbWVkIGFjY29yZGluZyB0byB0aGUgYWxpYXMgb2YgdGhlIHBhZ2U6DQphbGlhc19zcmNfIy5qcGcgd2hlcmUgIyBpcyB0aGUgaW1hZ2UgbnVtYmVyIGZvciB0aGF0IHBhZ2UuPC9wPg0KPHA+U28sIHRvIGFjY2VzcyB0aGUgb3JpZ2luYWxseSB1cGxvYWRlZCBpbWFnZXMgb24gYSBDYXRlZ29yeSBwYWdlLCB5b3UmIzAzOTtkIGdlbmVyYXRlIHRoZSBVUkwgbWFudWFsbHkuPC9wPg0KPHA+U28gb24gYSBjYXRlZ29yeSBwYWdlLCBmb3IgZXhhbXBsZSwgaW5zdGVhZCBvZiB1c2luZyB7JGl0ZW1zW251bWxvb3BdLmltYWdlfSB5b3UmIzAzOTtkIHVzZSAmcXVvdDsvdXBsb2Fkcy9pbWFnZXMvY2F0YWxvZ2VyX3NyYy97JGl0ZW1zW251bWxvb3BdLmFsaWFzfV9zcmNfMS5qcGcmcXVvdDsuPC9wPg0KPGgzPkNyZWRpdHM8L2gzPg0KPHA+VGhhbmtzIHRvIDxhIGhyZWY9Imh0dHA6Ly93d3cuaWQtYS5jby51ayI+UGF1bCBDb29wZXI8L2E+IGZvciBzcG9uc29yaW5nIHRoZSBkZXZlbG9wbWVudCBvZiB0ZXh0YXJlYSBhdHRyaWJ1dGVzLjwvcD4NCjxwPlRoYW5rcyB0byBudW1lcm91cyBwYXRpZW50IHVzZXJzIGFuZCBidWcgdGVzdGVycyAobWFueSBvZiB3aG9tIGhhZCBubyBpZGVhIHdoYXQgdGhleSB3ZXJlIGdldHRpbmcgaW50by4pPC9wPiANCjxoMz5TdXBwb3J0PC9oMz4NCjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4NCjx1bD4NCjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBDTVMgTWFkZSBTaW1wbGUgIDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmciPkRldmVsb3BlciBGb3JnZTwvYT4uPC9saT4NCjxsaT5UbyBvYnRhaW4gY29tbWVyY2lhbCBzdXBwb3J0LCBwbGVhc2Ugc2VuZCBhbiBlbWFpbCB0byB0aGUgYXV0aG9yIGF0IDxhIGhyZWY9Im1haWx0bzpzamdAY21zbW9kdWxlcy5jb20iPjxzamdAY21zbW9kdWxlcy5jb20+PC9hPi48L2xpPg0KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPg0KPGxpPlRoZSBhdXRob3IgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMiPkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4NCjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseSBhbmQgZ3JvdmVsbGluZyBmb3IgZnJlZSBzdXBwb3J0LjwvbGk+DQo8L3VsPg0KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0DQpvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+DQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAwOCwgU2FtdWVsIEdvbGRzdGVpbiA8YSBocmVmPSJtYWlsdG86c2pnQGNtc21vZHVsZXMuY29tIj48c2pnQGNtc21vZHVsZXMuY29tPjwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+JzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnUG9zdGFyYWp0ZSBzZSBkYSBrb3Jpc25pY2ltYSBrb2ppIMSHZSBhZG1pbmlzdHJpcmF0aSBrYXRhbG9nIGRhdGUgJnF1b3Q7TWVuamFuamUgcG9kZSZzY2Fyb247YXZhbmphIGthdGFsb2dhJnF1b3Q7IGRvenZvbHUuJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMjEzMzI5NzE3Mi4xMzI4NDMzMTgyLjEzMjg0MzMxODIuMTMyODQzMzE4Mi4xJzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTMyODQzMzE4Mi4xLjEudXRtY2NuPShkaXJlY3QpfHV0bWNzcj0oZGlyZWN0KXx1dG1jbWQ9KG5vbmUpJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/sv_SE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ25hbWVpbWFnZXMnXSA9ICdCaWxkZXInOwokbGFuZ1snbmFtZWZpbGVzJ10gPSAnRmlsZXInOwokbGFuZ1snbmFtZWZpbGUnXSA9ICdGaWwnOwokbGFuZ1snZGVsZXRlaW1hZ2UnXSA9ICdSYWRlcmEgYmlsZCc7CiRsYW5nWydkZWxldGVmaWxlJ10gPSAnUmFkZXJhIGZpbCc7CiRsYW5nWydPd25lciddID0gJyZBdW1sO2dhcmVuJzsKJGxhbmdbJ0NhdGFsb2dJdGVtJ10gPSAnQXJ0aWtlbGthdGFsb2cnOwokbGFuZ1snbmFtZXBhZ2UnXSA9ICdTaWRhJzsKJGxhbmdbJ1Blcm1pc3Npb25zJ10gPSAnQmVoJm91bWw7cmlnaGV0ZXInOwokbGFuZ1snU3ViJ10gPSAnU3ViICAtJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtX3NvcnRfb3JkZXIyJ10gPSAnT2JqZWt0IHNvcnRlcmluZ3NvcmRuaW5nJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtc19wZXJfcGFnZTInXSA9ICdBbnRhbCBvYmpla3QgcGVyIHNpZGEnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2NhdGVnb3J5X3JlY3Vyc2UyJ10gPSAnVmlzbmluZ3MgYmV0ZWVuZGUnOwokbGFuZ1snd2hpY2hfYXR0cmlidXRlcyddID0gJ1ZpbGthIGF0dHJpYnV0ZXIgc2thIHZpc2FzIGkga2F0YWxvZ2VuJzsKJGxhbmdbJ25hdlRhYiddID0gJyAgfCAnOwokbGFuZ1snbmVlZHBlcm1pc3Npb24nXSA9ICdEdSBiZWgmb3VtbDt2ZXIgaGEgJXMgaW5zdCZhdW1sO2xsZCBmJm91bWw7ciBhdHQgZyZvdW1sO3JhIHMmYXJpbmc7Lic7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdDYXRhbG9nZXIgTW9kdWxlbic7CiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnSGFudGVyYSBrYXRhbG9naW5zdCZhdW1sO2xsbmluZ2FybmEnOwokbGFuZ1snYXJleW91c3VyZSddID0gJyZBdW1sO3IgZHUgcyZhdW1sO2tlciBwJmFyaW5nOyBhdHQgZHUgdmlsbCByYWRlcmEgZGVubmEgJXM/JzsKJGxhbmdbJ3VuaXF1ZWNvZGUnXSA9ICdVbmlrIGtvZCc7CiRsYW5nWyd0ZW1wbGF0ZWxpc3QnXSA9ICdTdWItbWFsbGFyJzsKJGxhbmdbJ2xpc3R0ZW1wbCddID0gJ0hhbnRlcmEgc3ViLW1hbGxhcic7CiRsYW5nWyd0aXRsZV9maWVsZF90eXBlJ10gPSAnRiZhdW1sO2x0dHlwJzsKJGxhbmdbJ3RpdGxlX3NlbGVjdF92YWx1ZXMnXSA9ICdWJmF1bWw7cmRlJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fdGFiJ10gPSAnQXJ0aWtlbCBhdHRyaWJ1dGVyJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3RhYiddID0gJ0thdGVnb3JpIGF0dHJpYnV0ZXInOwokbGFuZ1sndGl0bGVfcHJpbnRhYmxlX3RhYiddID0gJ1ByaW50YWJsZSBLYXRhbG9naW5zdCZhdW1sO2xsbmluZ2FyJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2VfdGFiJ10gPSAnQXJ0aWtlbG5zIGJpbGRzdG9ybGVrYXInOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2VfdGFiJ10gPSAnS2F0ZWdvcmlzaWRhbiBpbnN0JmF1bWw7bGxuaW5nYXInOwokbGFuZ1sndGl0bGVfcGF0aF90YWInXSA9ICdTJm91bWw7a3YmYXVtbDtnYXInOwokbGFuZ1sndGl0bGVfZGVsZXRlJ10gPSAnUmFkZXJhPyc7CiRsYW5nWyd0aXRsZV9maWxlX3RhYiddID0gJ09iamVrdHMgZmlsIGluc3QmYXVtbDtsbG5pbmdhcic7CiRsYW5nWyd0aXRsZV9pbWFnZV90YWInXSA9ICdBbmRyYSBiaWxkaW5zdCZhdW1sO2xsbmluZ2FyJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fdGVtcGxhdGVfdmFycyddID0gJ09iamVrdG1hbGxzIHZhcmlhYmxlcic7CiRsYW5nWyd0aXRsZV9jYXRfdGVtcGxhdGVfdmFycyddID0gJ0thdGVnb3JpbWFsbHMgdmFyaWFibGVyJzsKJGxhbmdbJ3RpdGxlX2NhdGFsb2dfdGVtcGxhdGVfdmFycyddID0gJ0thdGFsb2dtYWxscyB2YXJpYWJsZXInOwokbGFuZ1sndGl0bGVfY29tcGFyZV90ZW1wbGF0ZV92YXJzJ10gPSAnSiZhdW1sO21mJm91bWw7cmVsc2VtYWxscyB2YXJpYWJsZXInOwokbGFuZ1sndGl0bGVfZmVhdHVyZV90ZW1wbGF0ZV92YXJzJ10gPSAnRnVua3Rpb25zbWFsbHMgdmFyaWFibGVyJzsKJGxhbmdbJ3RpdGxlX3Nob3dfb25seV9leGlzdGluZ19pbWFnZXMnXSA9ICdEb24mIzAzOTt0IGluY2x1ZGUgbWlzc2luZyBpbWFnZXMnOwokbGFuZ1sndGl0bGVfc2hvd19vbmx5X2V4aXN0aW5nX2ltYWdlc19oZWxwJ10gPSAnVGhpcyB3aWxsIG9ubHkgcHV0IGltYWdlIHJlZmVyZW5jZXMgaW50byBsaXN0cyBpZiB0aGUgaW1hZ2UgZXhpc3RzLjxiciAvPihOb3JtYWxseSwgdGhpcyBpcyBmaW5lLCBidXQgaWYgeW91IGFyZSBkb2luZyBzb21ldGhpbmcgY2xldmVyIHdpdGggaW1hZ2U8YnIgLz5hcnJheSBpbmRleGVzLCB0aGlzIGNvdWxkIGNhdXNlIHlvdSB0cm91YmxlLiknOwokbGFuZ1sndGl0bGVfZmx1c2hfY2F0cyddID0gJ0ZsdXNoIGNhdGVnb3J5IHBhZ2UgYnVmZmVycyc7CiRsYW5nWyd0aXRsZV9mbHVzaF9jYXRzX2hlbHAnXSA9ICdJZiB5b3UgaGF2ZSBhIGh1Z2UgbnVtYmVyIG9mIGl0ZW1zIGRpc3BsYXllZDxiciAvPmluIGEgY2F0ZWdvcnksIHNvbWUgUEhQIGluc3RhbGxzIHdpbGwgZmFpbCB0byBkaXNwbGF5IHRoZSBwYWdlPGJyIC8+Y29ycmVjdGx5LiBDaGVjayB0aGlzIGJveCB0byBzb2x2ZSB0aGlzIHByb2JsZW0gKHRlc3QgZm9yIHNpZGUgZWZmZWN0cykuJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fZmlsZV90eXBlcyddID0gJ1RpbGwmYXJpbmc7dG5hIGZpbHR5cGVyJzsKJGxhbmdbJ3RpdGxlX2ltYWdlX3VwbG9hZF9wYXRoJ10gPSAnUGxhdHMgZiZvdW1sO3IgdXBwbGFkZGFkZSBiaWxkZmlsZXInOwokbGFuZ1sndGl0bGVfZmlsZV91cGxvYWRfcGF0aCddID0gJ1BsYXRzIGYmb3VtbDtyIGFuZHJhIHVwcGxhZGRhZGUgZmlsZXInOwokbGFuZ1sndGl0bGVfaW1hZ2VfcHJvY19wYXRoJ10gPSAnTG9jYXRpb24gZm9yIHByb2Nlc3NlZCBpbWFnZXMgKHRodW1ibmFpbHMsIHNjYWxlZCBpbWFnZXMsIGV0YyknOwokbGFuZ1sncGF0aF9oZWxwJ10gPSAnWW91IGNhbiBzcGVjaWZ5IHdoZXJlIENhdGFsb2dlciBzdG9yZXMgZmlsZXMuIFRoZXNlIHBhdGhzIGFyZSByZWxhdGl2ZSB0byB0aGUgPGk+dXBsb2Fkc19wYXRoPC9pPiBkZWZpbmVkIGluIHlvdXIgY29uZmlnLnBocDxiciAvPk5PVEU6IElmIHlvdSBjaGFuZ2UgdGhlc2UgcGF0aHMgYWZ0ZXIgZmlsZXMgb3IgaW1hZ2VzIGhhdmUgYmVlbiB1cGxvYWRlZCwgQ2F0YWxvZ2VyIHdpbGwgbG9zZSB0aGUgYWxyZWFkeS11cGxvYWRlZCBhc3NldHMgKHRoZXkgd2lsbCBzdGlsbCBiZSB0aGVyZSwgYnV0IENhdGFsb2dlciB3aWxsIG5vdCBrbm93IGFib3V0IHRoZW0sIHNvIHlvdSB3aWxsIG5lZWQgdG8gcmUtdXBsb2FkIHRoZW0gZm9yIENhdGFsb2dlciB0byBmaWd1cmUgaXQgb3V0KS4nOwokbGFuZ1snY2F0YWxvZ2VyJ10gPSAnQ2F0YWxvZ2VyIChLYXRhbG9nKSc7CiRsYW5nWyd0aXRsZV9hdHRyX29yZGVyX2J5J10gPSAnT3JkbmluZyc7CiRsYW5nWyd0aXRsZV9hdHRyX2FsaWFzJ10gPSAnQXR0cmlidXQgQWxpYXMg4oCL4oCLKFNtYXJ0eSB2JmF1bWw7bmxpZ2EpJzsKJGxhbmdbJ3RpdGxlX2F0dHJfbGVuZ3RoJ10gPSAnTCZhdW1sO25nZConOwokbGFuZ1sndGl0bGVfYXR0cl9kZWZhdWx0J10gPSAnU3RhbmRhcmR2JmF1bWw7cmRlJzsKJGxhbmdbJ3RpdGxlX2F0dHJfbGVuZ3RoX2hlbHAnXSA9ICcoKkwmYXVtbDtuZ2QgZyZhdW1sO2xsZXIgaW50ZSBmJm91bWw7ciBUZXh0IEFyZWFzKSc7CiRsYW5nWyd0ZXh0J10gPSAnVGV4dCc7CiRsYW5nWydkcm9wZG93biddID0gJ0Ryb3Bkb3duJzsKJGxhbmdbJ3RleHRhcmVhJ10gPSAnVGV4dCBBcmVhJzsKJGxhbmdbJ2NoZWNrYm94J10gPSAnS3J5c3NydXRhJzsKJGxhbmdbJ2l0ZW1fcGFnZSddID0gJ09iamVrdCBzaWRhJzsKJGxhbmdbJ2NhdGVnb3J5X3BhZ2UnXSA9ICdLYXRlZ29yaXNpZGEnOwokbGFuZ1snY2F0YWxvZ19wcmludGFibGUnXSA9ICdVdHNrcml2YmFyIEthdGFsb2cnOwokbGFuZ1snY2F0YWxvZ19kYXRhc2hlZXQnXSA9ICdLYXRhbG9nIERhdGFibGFkJzsKJGxhbmdbJ2NhdGFsb2dfc2hvcnRfbGlzdCddID0gJ0Z1bmt0aW9uc2xpc3RhJzsKJGxhbmdbJ2l0ZW1fY29tcGFyaXNvbiddID0gJ09iamVrdCBqJmF1bWw7bWYmb3VtbDtyZWxzZSc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfaXRlbV9zb3J0X29yZGVyJ10gPSAnQW5nZSBzb3J0ZXJpbmdzb3JkbmluZ2VuIGYmb3VtbDtyIG9iamVrdCB0aWxsJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtc19wZXJfcGFnZSddID0gJ0FuZ2UgYW50YWwgb2JqZWt0IHBlciBzaWRhJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9jYXRlZ29yeV9yZWN1cnNlJ10gPSAnU3QmYXVtbDtsbCBpbiBrYXRlZ29yaXZpc25pbmdzIGJldGVlbmRlIHRpbGwnOwokbGFuZ1sndGl0bGVfaXRlbV9zb3J0X29yZGVyJ10gPSAnU3RhbmRhcmQgc29ydGVyaW5nc29yZG5pbmcgZiZvdW1sO3IgT2JqZWt0JzsKJGxhbmdbJ3RpdGxlX3ByaW50YWJsZV9zb3J0X29yZGVyJ10gPSAnU3RhbmRhcmQgc29ydGVyaW5nc29yZG5pbmcgZiZvdW1sO3IgdXRza2lydmJhciBrYXRhbG9nJzsKJGxhbmdbJ3RpdGxlX2l0ZW1zX3Blcl9wYWdlJ10gPSAnU3RhbmRhcmRhbnRhbCBtZWQgYXJ0aWtsYXIgZiZvdW1sO3IgdmFyamUgc2lkYSc7CiRsYW5nWyd0aXRsZV9hdmFpbF9hdHRycyddID0gJ09iamVrdGF0dHJpYnV0IHRpbGxnJmF1bWw7bmdsaWdhIGYmb3VtbDtyIG1hbGxlbic7CiRsYW5nWyd0aXRsZV9hdmFpbF9pbWF0dHJzJ10gPSAnT2JqZWt0YmlsZGVyIHRpbGxnJmF1bWw7bmdsaWdhIGYmb3VtbDtyIG1hbGxlbic7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfaGVybyddID0gJ0JpbGRzdG9ybGVrIGYmb3VtbDtyIE9iamVrdHNpZGFuIChsJmF1bWw7bmdkcmlrdG5pbmcgaSBiaWxkcHVua3RlciknOwokbGFuZ1sndGl0bGVfaXRlbV9pbWFnZV9zaXplX3RodW1ibmFpbCddID0gJ1RodW1ibmFpbHN0b3JsZWsgZiZvdW1sO3IgT2JqZWt0c2lkYW4gKGwmYXVtbDtuZ2RyaWt0bmluZyBpIGJpbGRwdW5rdGVyKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfY2F0ZWdvcnknXSA9ICdUaHVtYm5haWxzdG9ybGVrIGYmb3VtbDtyIG9iamVrdCBwJmFyaW5nOyBLYXRlZ29yaXNpZGEgKGwmYXVtbDtuZ2RyaWt0bmluZyBpIGJpbGRwdW5rdGVyKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfY2F0YWxvZyddID0gJ1RodW1ibmFpbHN0b3JsZWsgZiZvdW1sO3Igb2JqZWt0IHAmYXJpbmc7IEthdGFsb2dzaWRhIChsJmF1bWw7bmdkcmlrdG5pbmcgaSBiaWxkcHVua3RlciknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV9oZXJvJ10gPSAnQmlsZHN0b3JsZWsgZiZvdW1sO3IgS2F0ZWdvcmlzaWRhIChsJmF1bWw7bmdkcmlrdG5pbmcgaSBiaWxkcHVua3RlciknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV90aHVtYm5haWwnXSA9ICdUaHVtYm5haWxzdG9ybGVrIGYmb3VtbDtyIEthdGVnb3Jpc2lkYSAobG9uZyBheGlzIGluIHBpeGVscyknOwokbGFuZ1sndGl0bGVfdGVtcGxhdGUnXSA9ICdNYWxsJzsKJGxhbmdbJ3RpdGxlX3RlbXBsYXRlX3R5cGUnXSA9ICdNYWxsIHR5cCc7CiRsYW5nWyd0aXRsZV90aXRsZSddID0gJ1RpdGVsJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2VfY291bnQnXSA9ICdIJm91bWw7Z3N0YSBhbnRhbCB2aXNuaW5nYXIgZiZvdW1sO3IgdmFyamUgQXJ0aWtlbCc7CiRsYW5nWyd0aXRsZV9pdGVtX2ZpbGVfY291bnQnXSA9ICdNYXhpbXVtIG51bWJlciBvZiBvdGhlciBmaWxlcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBpdGVtJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2ltYWdlX2NvdW50J10gPSAnTWF4aW1hbHQgYW50YWwgQmFubmVyYmlsZGVyIGYmb3VtbDtyIHZhcmplIGthdGVnb3Jpc2lkYSc7CiRsYW5nWyd0aXRsZV9pdGVtX2F0dHJpYnV0ZXNfaGVscCddID0gJ0VhY2ggYXR0cmlidXRlIHlvdSBlbnRlciBoZXJlIHdpbGwgYmUgdGhlIHRpdGxlIG9mIGEgZmllbGQgdGhhdCB5b3UgY2FuIHVzZSB0byBkZXNjcmliZSBhbiBpbmRpdmlkdWFsIGl0ZW0sIGFuZCB3aWxsIGJlIGRpc3BsYXllZCB3aXRoIHRoYXQgaXRlbS4gWW91IG1heSBoYXZlIHRvIHVwZGF0ZSB5b3VyIHRlbXBsYXRlIHRvIHJlZmxlY3QgdGhlc2UgYXR0cmlidXRlcy4nOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfYXR0cmlidXRlc19oZWxwJ10gPSAnRWFjaCBhdHRyaWJ1dGUgeW91IGVudGVyIGhlcmUgd2lsbCBiZSB0aGUgdGl0bGUgb2YgYSBmaWVsZCB0aGF0IHlvdSBjYW4gdXNlIHRvIGRlc2NyaWJlIGFuIGl0ZW0gY2F0ZWdvcnksIGFuZCB3aWxsIGJlIGRpc3BsYXllZCBvbiB0aGF0IGNhdGVnb3J5IHBhZ2UuIFlvdSBtYXkgaGF2ZSB0byB1cGRhdGUgeW91ciB0ZW1wbGF0ZSB0byByZWZsZWN0IHRoZXNlIGF0dHJpYnV0ZXMuJzsKJGxhbmdbJ3RpdGxlX2NhdGFsb2dfYXR0cmlidXRlc19oZWxwJ10gPSAnRWFjaCBhdHRyaWJ1dGUgeW91IGVudGVyIGhlcmUgd2lsbCBiZSB0aGUgdGl0bGUgb2YgYSBmaWVsZCB0aGF0IHlvdSBjYW4gdXNlIHRvIGRlc2NyaWJlIHRoZSBlbnRpcmUgY2F0YWxvZywgYW5kIHdpbGwgYmUgZGlzcGxheWVkIG9uIHRoZSBwcmludGFibGUgY2F0YWxvZyBwYWdlLiBZb3UgbWF5IGhhdmUgdG8gdXBkYXRlIHlvdXIgdGVtcGxhdGUgdG8gcmVmbGVjdCB0aGVzZSBhdHRyaWJ1dGVzLic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9zb3J0J10gPSAnU29ydGVyaW5nc29yZG5pbmcgYXYgT2JqZWt0LWxpc3RhbiBwJmFyaW5nOyBLYXRlZ29yaXNpZGFuJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2UnXSA9ICdEZWZhdWx0IENhdGVnb3J5IERpc3BsYXkgQmVoYXZpb3InOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9pdGVtc19hbGwnXSA9ICdJbmtsdWRlcmEgYWxsYSBwb3N0ZXIgaSBkZW4gaCZhdW1sO3Iga2F0ZWdvcmluLCBpbmtsdXNpdmUgcG9zdGVyIGkgc3ViLWthdGVnb3JpZXInOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9pdGVtc19vbmUnXSA9ICdJbmtsdWRlcmEgYWxsYSBvYmpla3Qgb21lZGVsYmFydCBpbm9tIGRlbm5hIGthdGVnb3JpLCBtZW4gaW50ZSBwb3N0ZXIgaSBzdWIta2F0ZWdvcmllcic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2NhdGVnb3JpZXNfYWxsJ10gPSAnSW5jbHVkZSBhbGwgQ2F0ZWdvcmllcyB3aXRoaW4gdGhpcyBjYXRlZ29yeSwgaW5jbHVkaW5nIGNhdGVnb3JpZXMgaSBzdWItY2F0ZWdvcmllcyc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2NhdGVnb3JpZXNfb25lJ10gPSAnSW5rbHVkZXJhIGFsbGEga2F0ZWdvcmllciBpbm9tIGRlbm5hIGthdGVnb3JpLCAmYXVtbDt2ZW4ga2F0ZWdvcmllciBpIHN1Yi1rYXRlZ29yaWVyJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfbWl4ZWRfYWxsJ10gPSAnSW5rbHVkZXJhIGFsbGEgb2JqZWt0IG9jaCBrYXRlZ29yaWVyIGlub20gZGVubmEga2F0ZWdvcmksICZhdW1sO3ZlbiBhcnRpa2xhciBvY2gga2F0ZWdvcmllciBpIHN1Yi1rYXRlZ29yaWVyJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfbWl4ZWRfb25lJ10gPSAnSW5rbHVkZXJhIGFsbGEgb2JqZWt0IG9jaCBrYXRlZ29yaWVyIG9tZWRlbGJhcnQgaW5vbSBkZW5uYSBrYXRlZ29yaSwgbWVuIGludGUgb2JqZWt0IGVsbGVyIGthdGVnb3JpZXIgaSBzdWIta2F0ZWdvcmllcic7CiRsYW5nWyd0aXRsZV9zaG93X21pc3NpbmdfaW1hZ2VzJ10gPSAnVmlzYSAmcXVvdDtJbmdlbiBiaWxkJnF1b3Q7IGJpbGRlbiBmJm91bWw7ciBvYmpla3QgdXRhbiBiaWxkZXInOwokbGFuZ1sndGl0bGVfc2hvd19taXNzaW5nX2ltYWdlc19sb25nJ10gPSAnU2hvdyBhIHNwZWNpYWwgJnF1b3Q7Tm8gSW1hZ2UmcXVvdDsgaW1hZ2UgaWYgdGhlcmUgYXJlIG1pc3NpbmcgaW1hZ2VzICh1c2VmdWwgZm9yIGRlYnVnZ2luZy4gT3RoZXJ3aXNlIHdpbGwgdXNlIGEgc2luZ2xlIHBpeGVsIHRyYW5zcGFyZW50IGltYWdlKS4nOwokbGFuZ1snbmF0dXJhbF9vcmRlciddID0gJ05hdmlnYXRpb25zb3JkbmluZyc7CiRsYW5nWydhbHBoYV9vcmRlciddID0gJ0FsZmFiZXRpc2tvcmRuaW5nJzsKJGxhbmdbJ21hbmFnZXByZWZzJ10gPSAnSGFudGVyYSBpbnN0JmF1bWw7bGxuaW5nYXInOwokbGFuZ1snbWFuYWdlYXR0cnMnXSA9ICdIYW50ZXJhIEFudiZhdW1sO25kYXJhdHRyaWJ1dGVyJzsKJGxhbmdbJ2dsb2JhbG9wcyddID0gJ0dsb2JhbGEgS2F0YWxvZyBPcGVyYXRpb25lcic7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ0wmYXVtbDtnZyB0aWxsIG1hbGwnOwokbGFuZ1sncmVpbXBvcnR0ZW1wbGF0ZXMnXSA9ICcmQXJpbmc7dGVyaW1wb3J0ZXJhIGV4ZW1wZWwgc3ViLW1hbGxhcm5hICc7CiRsYW5nWydyZWltcG9ydGVkJ10gPSAnUHJvdiBzdWJtYWxsYXJuYSBoYXIgaW1wb3J0ZXJhdHMuJzsKJGxhbmdbJ3RlbXBsYXRldXBkYXRlZCddID0gJ01hbGxlbiB0aWxsYWdkL3VwcGRhdGVyYWQnOwokbGFuZ1sndGVtcGxhdGVkZWxldGVkJ10gPSAnTWFsbGVuIHJhZGVyYWQuJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ0luc3QmYXVtbDtsbG5pbmdhcm5hIHVwcGRhdGVyYWRlLic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bCB2ZXJzaW9uICVzIGluc3RhbGxlcmFkJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWxlbiB1cHBncmFkZXJhZCB0aWxsIHZlcnNpb24gJXMuJzsKJGxhbmdbJ2JhZGZpbGUnXSA9ICdGaWwgJnF1b3Q7JXMmcXVvdDsgJmF1bWw7ciBpbnRlIGV0dCB0aWxsJmFyaW5nO3RldCBmb3JtYXQnOwokbGFuZ1snYmFkaW1hZ2UnXSA9ICdQcm9ibGVtIG1lZCB1cHBsYWRkbmluZyBhdiAmcXVvdDslcyZxdW90OyAoa29udHJvbGxlcmEgZmlsc3RvcmxlayBvY2gvZWxsZXIgc2VydmVyIHImYXVtbDt0dGlnaGV0ZXIpLic7CiRsYW5nWydiYWRpbWFnZWZvcm1hdCddID0gJyZxdW90OyVzJnF1b3Q7ICZhdW1sO3IgaW50ZSBnaWx0aWcuIEVuZGFzdCBqcGVncyBzdCZvdW1sO2RzIGYmb3VtbDtyIHRpbGxmJmF1bWw7bGxldC4nOwokbGFuZ1sndXBsb2FkZWQnXSA9ICdGaWxlICZxdW90OyVzJnF1b3Q7IHVwbG9hZGVkIGZvciBpdGVtICVzLic7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZW4gYXZpbnN0YWxsZXJhZC4nOwokbGFuZ1snYXR0cnN1cGRhdGVkJ10gPSAnQXR0cmlidXRlciB1cHBkYXRlcmFkZS4nOwokbGFuZ1snbm9nbG9iYWxjaGFuZ2UnXSA9ICcmQXVtbDtuZHJhIGludGUnOwokbGFuZ1snZ2xvYmFsbHl1cGRhdGVkJ10gPSAnR2xvYmFsYSBmJm91bWw7ciZhdW1sO25kcmluZ2FyIGdqb3JkZXMnOwokbGFuZ1snZWRpdHRlbXBsYXRlJ10gPSAnJkF1bWw7bmRyYSBtYWxsJzsKJGxhbmdbJ3N1YnRlbXBsYXRlcyddID0gJ0thdGFsb2cgU3VibWFsbGFyJzsKJGxhbmdbJ25leHQnXSA9ICc6JnJhcXVvOyc7CiRsYW5nWydwcmV2J10gPSAnJmxhcXVvOzonOwokbGFuZ1snZWRpdCddID0gJyZBdW1sO25kcmEnOwokbGFuZ1snZGVsZXRlJ10gPSAnUmFkZXJhJzsKJGxhbmdbJ25vdGVtcGxhdGVzJ10gPSAnSW5nYSBzdWJtYWxsYXIgaW5zdGFsbGVyYWRlJzsKJGxhbmdbJ2hlbHB0ZXh0J10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5UaGlzIG1vZHVsZSBsZXRzIHlvdSBjcmVhdGUgb25saW5lIGNhdGFsb2dzIG9yIHBvcnRmb2xpb3MuIENhdGFsb2dzIGNvbnNpc3Qgb2YgJnF1b3Q7Q2F0YWxvZyBJdGVtcyZxdW90OyB3aGljaCBjb3VsZCBiZSBwcm9kdWN0cywgd29ya3Mgb2YgYXJ0LCBvciB0aGUgbGlrZSwgYW5kICZxdW90O0NhdGFsb2cgQ2F0ZWdvcmllcyZxdW90OyB3aGljaCBjb3VsZCBiZSBpdGVtIGNhdGVnb3JpZXMgb3Igb3RoZXIgbmF0dXJhbCBkaXZpc2lvbnMgb2YgdGhlIGNhdGFsb2cuPC9wPg0KPHA+Q2F0ZWdvcmllcyBtYXkgYmUgZGVmaW5lZCBoaWVyYXJjaGljYWxseSAodXNpbmcgdGhlIHN0YW5kYXJkIENNUyBNYWRlIFNpbXBsZSBjb250ZW50IGxpc3QpLiBDYXRlZ29yeSBwYWdlcyBjYW4gZGlzcGxheSBpdGVtcyBpbiB0aGUgY2F0ZWdvcnkgYW5kL29yIHN1YmNhdGVnb3JpZXMsIG9wdGlvbmFsbHkgcmVjdXJzaW5nIHRocm91Z2ggc3ViLWNhdGVnb3JpZXMuIFRoaXMgYmVoYXZpb3IgY2FuIGJlIGNvbmZpZ3VyZWQgb24gYSBwZXItY2F0ZWdvcnkgYmFzaXMuPC9QPg0KPHA+VGhlcmUgaXMgYWxzbyBhIFByaW50YWJsZSBDYXRhbG9nLCB3aGljaCByZXByZXNlbnRzIHRoZSB3aG9sZSBjb2xsZWN0aW9uIG9mIENhdGFsb2cgSXRlbXMgb24gYSBzaW5nbGUgcGFnZSAodGhpcyBpcyBjdXJyZW50bHkgaW1wbGVtZW50ZWQgYmFkbHksIGFuZCB3aWxsIGxvYWQgc2xvd2x5KS48L3A+DQo8cD5UaGUgbW9kdWxlIGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciAmcXVvdDtDb250ZW50IEFsaWFzZXMmcXVvdDsgKGEgbW9kdWxlIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnRhbGlhc2VzLyI+dGhlIERldmVsb3BlciBGb3JnZTwvYT4pLCB3aGljaCBhbGxvd3MgeW91IHRvIHBsYWNlIGFueSBDYXRhbG9nIEl0ZW0gaW50byBtdWx0aXBsZSBDYXRhbG9nIENhdGVnb3JpZXMuPC9wPg0KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+DQo8cD5XaGVuIHlvdSBpbnN0YWxsIHRoaXMgbW9kdWxlLCBpdCBjcmVhdGVzIHRocmVlIG5ldyBDb250ZW50IFR5cGVzOiBDYXRhbG9nIEl0ZW0sIENhdGFsb2cgQ2F0ZWdvcnksIGFuZCBQcmludGFibGUgQ2F0YWxvZy4gV2hlbiB5b3UmIzAzOTtyZSBpbiB5b3VyIHNpdGUgYWRtaW5pc3RyYXRpb24gY2F0ZWdvcnksIHlvdSBhZGQgQ2F0YWxvZyBJdGVtcyBhbmQgQ2F0YWxvZyBDYXRlZ29yaWVzIGp1c3QgYXMgeW91IHdvdWxkIGFueSBvdGhlciBraW5kIG9mIHBhZ2UuIFNlbGVjdCBDb250ZW50ID4gUGFnZXMgPiBBZGQgQ29udGVudCwgYW5kIHRoZW4gc2VsZWN0ICZxdW90O0NhdGFsb2cgSXRlbSZxdW90OyBvciAmcXVvdDtDYXRhbG9nIENhdGVnb3J5JnF1b3Q7IGZyb20gdGhlIENvbnRlbnQgVHlwZSBwdWxsZG93bi48L3A+DQo8aDQ+Q2F0YWxvZyBJdGVtczwvaDQ+DQo8cD5BZGRpbmcgYSBDYXRhbG9nIEl0ZW0gaXMgc2ltaWxhciB0byBhZGRpbmcgYW4gb3JkaW5hcnkgcGFnZSB0byB5b3VyIHNpdGUuIFRoZSBkYXRhIGZpZWxkcyBmb3IgdGhlIEl0ZW0gYXJlIG5vdCBleGFjdGx5IHRoZSBzYW1lLCBob3dldmVyLiBBbHNvIG5vdGUgdGhhdCBpbiB0aGUgJnF1b3Q7SW1hZ2VzJnF1b3Q7IHRhYiwgeW91IGNhbiBzZWxlY3QgbXVsdGlwbGUgaW1hZ2VzIHRvIHVwbG9hZCBmb3IgdGhlIGl0ZW0uIFdoZW4geW91IHVwbG9hZCBpbWFnZXMsIHRoZSBzeXN0ZW0gd2lsbCBzaXplIHRoZW0gYXBwcm9wcmlhdGVseSBmb3IgdGhlIGNhdGFsb2csIGNyZWF0ZSB0aHVtYm5haWxzIGZvciB1c2UgaW4gdGhlIEl0ZW0mIzAzOTtzIHBhZ2UsIGNyZWF0ZSB0aHVtYm5haWxzIGZvciBhbnkgQ2F0ZWdvcnkgcGFnZXMsIGFuZCBzbyBvbi4gVGhpcyByZXF1aXJlcyB0aGF0IHlvdSBoYXZlIEdEIG9yIGEgc2ltaWxhciBpbWFnZSBsaWJyYXJ5IGluc3RhbGxlZC4gQ3VycmVudGx5LCBvbmx5IGpwZWcgZm9ybWF0IGltYWdlcyBhcmUgc3VwcG9ydGVkLjwvcD4NCjxoND5DYXRhbG9nIENhdGVnb3JpZXM8L2g0Pg0KPHA+QSBDYXRhbG9nIENhdGVnb3J5IGlzIHVzZWQgZm9yIG9yZ2FuaXppbmcgeW91ciBjYXRhbG9nIGl0ZW1zLiBJdCBwcm92aWRlcyBhIHBhZ2UgdGhhdCBsaXN0cyBDYXRhbG9nZXIgY29udGVudCB0aGF0IGlzIGNvbnRhaW5lZCBieSBpdC4gQSBDYXRhbG9nIEl0ZW0gaXMgY29uc2lkZXJlZCB0byBiZSBwYXJ0IG9mIGEgQ2F0YWxvZyBDYXRlZ29yeSBpZiBpdCBpcyBiZWxvdyB0aGF0IENhdGVnb3J5IGluIHRoZSBTaXRlIEhpZXJhcmNoeS4gQ2F0ZWdvcmllcyBjYW4gc2ltaWxhcmx5IGluY2x1ZGUgb3RoZXIgQ2F0ZWdvcmllcy48L3A+DQo8cD5DYXRhbG9nIENhdGVnb3JpZXMgaGF2ZSBhIG51bWJlciBvZiBzZXR0aW5ncyB0byBkZXRlcm1pbmUgaG93IHRoZXkgc2hvdWxkIGRpc3BsYXkgdGhlIEl0ZW1zIGFuZCBDYXRlZ29yaWVzIHRoZXkgY29udGFpbjogaWYgeW91IGxvb2sgYXQgdGhlICZxdW90O09wdGlvbnMmcXVvdDsgdGFiLCB5b3UgY2FuIGNob29zZSBob3cgbWFueSBpdGVtcyBhbmQvb3IgY2F0ZWdvcmllcyB0byBzaG93LCB3aGF0IG9yZGVyIHRvIHNob3cgdGhlbSBpbiwgd2hldGhlciB0byBkaXNwbGF5IG9ubHkgaXRlbXMgb3Igb25seSBjYXRlZ29yaWVzIG9yIGJvdGgsIGFuZCBob3cgbWFueSBsZXZlbHMgb2YgdGhlIGhpZXJhcmNoeSB0byBkaXNwbGF5IGJlbG93IHRoZSBjYXRlZ29yeSBwYWdlLjwvcD4NCjxwPkZvciBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTo8L3A+DQo8b2w+DQoJPGxpPjxiPkhhdHM8L2I+DQoJCTxvbD4NCgkJCTxsaT48Yj5GYXNoaW9uPC9iPg0KCQkJIAk8b2w+DQoJCQkgCQk8bGk+RmVhdGhlcmVkIEhhdDwvbGk+PGxpPkZlZG9yYSA8L2xpPjxsaT5CYXNlYmFsbCBIYXQ8L2xpPg0KCQkJIAk8L29sPg0KCQkJIDwvbGk+DQoJCSAJPGxpPjxiPldvcmsgSGF0czwvYj4NCgkJICAgIAk8b2w+DQoJCSAgICAJCTxsaT5IYXJkIEhhdDwvbGk+PGxpPkRpdmluZyBIZWxtZXQ8L2xpPg0KCQkgICAgCTwvb2w+DQoJCSAgICA8L2xpPg0KCQk8L29sPg0KCTwvbGk+DQo8L29sPg0KPHA+SW4gdGhpcyBkaWFncmFtLCBib2xkZWQgaXRlbXMgYXJlIENhdGFsb2cgQ2F0ZWdvcmllcywgYW5kIG5vbi1ib2xkZWQgaXRlbXMgYXJlIENhdGFsb2cgSXRlbXMuIERlcGVuZGluZyB1cG9uIGhvdyB5b3Ugc2V0IHlvdXIgb3B0aW9ucywgdGhlIEhhdHMgQ2F0ZWdvcnkgUGFnZSBjYW4gc2hvdyBvbmx5IGVudHJpZXMgZm9yIHRoZSBGYXNoaW9uIGFuZCBXb3JrIEhhdHMgQ2F0ZWdvcnkgUGFnZXMsIG9yIGl0IGNhbiBzaG93IGVudHJpZXMgZm9yIEZhc2hpb24sIFdvcmsgSGF0cywgYW5kIGFsbCB0aGUgaGF0cyBsaXN0ZWQgYmVsb3cgdGhlbS48L3A+DQo8cD5Zb3UgY2FuIG9wdCB0byBzaG93IHRoZSBpdGVtcyBpbiAmcXVvdDtuYXR1cmFsJnF1b3Q7IG9yZGVyIChpLmUuLCB0aGUgb3JkZXIgdGhlIEl0ZW1zIHNob3cgdXAgaW4gdGhlIENNUyBDb250ZW50IEhpZXJhcmNoeSksIG9yIGluIGFscGhhYmV0aWNhbCBvcmRlci48L1A+DQo8cD5JZiB5b3UgaGF2ZSBsYXJnZSBudW1iZXJzIG9mIGl0ZW1zIGluIGEgQ2F0ZWdvcnksIHlvdSBjYW4gc2V0IHRoZSBtYXhpbXVtIG51bWJlciB0byBiZSBkaXNwbGF5ZWQgaW4gYSBDYXRlZ29yeSBQYWdlLCBhbmQgdGhlIHBhZ2Ugd2lsbCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBsaW5rcyB0byBuYXZpZ2F0ZSB0aHJvdWdoIHRoZSBsaXN0LjwvcD4NCjxwPkVhY2ggQ2F0ZWdvcnkgcGFnZSBjYW4gaGF2ZSBkaWZmZXJlbnQgc2V0dGluZ3MgZm9yIHNvcnQgb3JkZXIsIGxldmVscyB0byBkaXNwbGF5LCBhbmQgbnVtYmVyIG9mIGl0ZW1zLiBZb3UgY2FuIHNldCB0aGUgZGVmYXVsdCBmb3IgdGhlc2UgdmFsdWVzIGluIEV4dGVuc2lvbnMgPiBDYXRhbG9nZXIgPiBNYW5hZ2UgUHJlZmVyZW5jZXMuIElmLCBhdCBhIGxhdGVyIGRhdGUsIHlvdSB3aXNoIHRvIGNoYW5nZSBzb21lIHNldHRpbmcgb24gYWxsIG9mIHlvdXIgQ2F0ZWdvcnkgcGFnZXMsIHlvdSBjYW4gZ28gaW50byBFeHRlbnNpb25zID4gQ2F0YWxvZ2VyID4gR2xvYmFsIENhdGFsb2cgT3B0aW9ucywgYW5kIG1ha2UgdGhvc2UgY2hhbmdlcy48L3A+DQo8aDQ+SW1hZ2VzPC9oND4NCjxwPkNhdGFsb2dlciBhbGxvd3MgeW91IHRvIHNlbGVjdCBkaWZmZXJlbnQgc2l6ZSBpbWFnZXMgZm9yIEl0ZW0gcGFnZXMsIENhdGVnb3J5IHBhZ2VzLCBhbmQgdGhlIFByaW50YWJsZSBDYXRhbG9nLiBZb3UgY2FuIHNldCB0aGVzZSBkZWZhdWx0cyBpbiBFeHRlbnNpb25zID4gQ2F0YWxvZ2VyID4gTWFuYWdlIFByZWZlcmVuY2VzLjwvcD4NCjxwPldoZW4geW91IHVwbG9hZCBpbWFnZXMsIHRoZSBvcmlnaW5hbCBpcyBzdG9yZWQuIFdoZW4gc29tZW9uZSB2aXNpdHMgYSBwYWdlLCB0aGUgcmVkdWNlZCBzaXplIGltYWdlcyBhcmUgcmVxdWVzdGVkIHVzaW5nIGEgc3BlY2lhbCBVUkwsIHdoaWNoIHdpbGwgcmVkaXJlY3QgdGhlIHVzZXImIzAzOTtzIGJyb3dzZXIgdG8gdGhlIHNjYWxlZCBpbWFnZSBpZiBpdCBleGlzdHMsIGFuZCBjcmVhdGluZyB0aGUgc2NhbGVkIGltYWdlIGlmIGl0IGRvZXNuJiMwMzk7dC4gVGhpcyBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiBpbWFnZXMsIHdpdGhvdXQgaGF2aW5nIHRvIHJlLXVwbG9hZCBhbGwgdGhlIGltYWdlcywgb3IgcmVzY2FsaW5nIHRoZW0gYWxsIGF0IG9uY2UuPC9wPg0KPHA+VGhpcyBpbWFnZSByZXNjYWxpbmcgY29kZSByZXF1aXJlcyB0aGF0IHlvdSBoYXZlIGVpdGhlciBJbWFnZU1hZ2ljayBvciBHRCBsaWIgaW5zdGFsbGVkLCBhbmQgY29uZmlndXJlZCBpbiB5b3VyIENNUyBNYWRlIFNpbXBsZSBjb25maWcucGhwLjwvcD4NCjxoMz5GZWF0dXJlIExpc3RzPC9oMz4NCjxwPllvdSBjYW4sIGFzIG9mIHZlcnNpb24gMC40LCBoYXZlICZxdW90O2ZlYXR1cmUgbGlzdHMmcXVvdDsgd2hpY2ggYXJlIHRoZSA8aT5uPC9pPiBtb3N0LXJlY2VudGx5IGFkZGVkIGNhdGFsb2cgaXRlbXMsIG9yIGEgY29sbGVjdGlvbiBvZiA8aT5rPC9pPiByYW5kb20gaXRlbXMgZnJvbSB0aGUgY2F0YWxvZy48L3A+DQo8aDQ+JnF1b3Q7QWxsJnF1b3Q7IEZlYXR1cmUgTGlzdDwvaDQ+DQo8cD5UbyBnZXQgYSBsaXN0IG9mIGFsbCBjYXRhbG9nIGl0ZW1zIChvcHRpb25hbGx5IHVuZGVyIGEgc3BlY2lmaWVkIHBhcnQgb2YgeW91ciBoaWVyYXJjaHkpIGZvciBwcm9jZXNzaW5nIHZpYSBhIHRlbXBsYXRlLCB5b3UgY2FuIHVzZQ0KdGhlICZxdW90O2FsbCZxdW90OyBmZWF0dXJlIGxpc3QuPC9wPg0KPHA+VGhlIHN5bnRheCBmb3IgYW4gJnF1b3Q7YWxsJnF1b3Q7IGxpc3QgaXMgbGlrZTo8L3A+DQo8cD57Y21zX21vZHVsZSBtb2R1bGU9JiMwMzk7Q2F0YWxvZ2VyJiMwMzk7IGFjdGlvbj0mIzAzOTthbGwmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5O30sIHdoZXJlIHN1Yl90ZW1wbGF0ZSBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgbGlzdC4NClRoZXJlIGlzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciwgYWxpYXM9JiMwMzk7cGFnZV9hbGlhcyYjMDM5Oywgd2hlcmUgcGFnZV9hbGlhcyBpbmRpY2F0ZXMgdGhlIHRvcCBvZiB0aGUgdHJlZSAoZS5nLiwgYSBwbGFjZSBpbiB5b3VyIG1lbnUNCmhpZXJhcmNoeSwgdHlwaWNhbGx5IGEgY2F0ZWdvcnkgcGFnZSkgaW4gd2hpY2ggdG8gbG9vayBmb3IgbmV3IGl0ZW1zLiBBIHNwZWNpYWwgdmFsdWUgZm9yICZxdW90O3BhZ2VfYWxpYXMmcXVvdDsgaXMgJnF1b3Q7LyZxdW90Oywgd2hpY2ggbWVhbnMgdG8NCnN0YXJ0IGF0IHRoZSByb290LjwvcD4NCjxwPlRoaXMgaXMgdXNlZnVsIGZvciBjYXRhbG9nLXdpZGUgb3BlcmF0aW9ucy4gRm9yIGV4YW1wbGUsIHRvIGdldCBhIGxpc3Qgb2YgYWxsIGNhdGVnb3JpZXMgKGFuZCBkbyBzb21ldGhpbmcgd2l0aCB0aGVtKSwNCnlvdSBjb3VsZCB1c2UgdGhlIHRhZyB7Y21zX21vZHVsZSBtb2R1bGU9JiMwMzk7Q2F0YWxvZ2VyJiMwMzk7IGFjdGlvbj0mIzAzOTthbGwmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5OyBhbGlhcz0mIzAzOTsvJiMwMzk7IHJlY3Vyc2U9JiMwMzk7Y2F0ZWdvcmllc19hbGwmIzAzOTt9LiBZb3VyIHRlbXBsYXRlIGNvdWxkIHRoZW4gdGhyb3cNCnRob3NlIGNhdGVnb3JpZXMgaW50byBhIHB1bGxkb3duIG1lbnUgdGhhdCByZWRpcmVjdGVkIHlvdSB0byB0aGF0IGNhdGVnb3J5JiMwMzk7cyBwYWdlLCBmb3IgZXhhbXBsZTo8L3A+DQo8cHJlPg0KPHNlbGVjdCBuYW1lPSZxdW90O2ZvbyZxdW90OyBvbmNoYW5nZT0mcXVvdDtkb2N1bWVudC5sb2NhdGlvbj10aGlzLm9wdGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4XS52YWx1ZTsmcXVvdDs+DQo8b3B0aW9uIHZhbHVlPSZxdW90OyZxdW90Oz5TZWxlY3QgQSB0YXJnZXQ8L29wdGlvbj4NCntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09dGhpc29uZX0NCiAgIDxvcHRpb24gdmFsdWU9JnF1b3Q7eyR0aGlzb25lLmxpbmt9JnF1b3Q7PnskdGhpc29uZS50aXRsZX08L29wdGlvbj4NCnsvZm9yZWFjaH0NCjwvc2VsZWN0Pg0KPC9wcmU+DQo8cD5JZiB5b3Ugd2FudGVkIHRoYXQgdG8gb25seSBzaG93IGNhdGVnb3JpZXMgdGhhdCB3ZXJlIGluIHRoZSB2ZXJ5IHRvcCBsZXZlbCBvZiB5b3VyIGhlaXJhcmNoeSwgeW91JiMwMzk7ZCByZXBsYWNlIHRoZSByZWN1cnNlPSYjMDM5O2NhdGVnb3JpZXNfYWxsJiMwMzk7IHdpdGgNCnJlY3Vyc2U9JiMwMzk7Y2F0ZWdvcmllc19vbmUmIzAzOTsuIE9yIGlmIHlvdSB3YW50ZWQgaXQgdG8gYmUgYWxsIGNhdGFsb2cgSXRlbXMgaW5zdGVhZCBvZiBjYXRlZ29yaWVzLCB5b3UgY291bGQgdXNlIGEgdGFnIGxpa2U6DQp7Y21zX21vZHVsZSBtb2R1bGU9JiMwMzk7Q2F0YWxvZ2VyJiMwMzk7IGFjdGlvbj0mIzAzOTthbGwmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5OyBhbGlhcz0mIzAzOTsvJiMwMzk7IHJlY3Vyc2U9JiMwMzk7aXRlbXNfYWxsJiMwMzk7fQ0KPHA+U2ltaWxhcmx5LCB5b3UgY291bGQgaGF2ZSBpdCBsaXN0IG9ubHkgY2F0ZWdvcmllcyB1bmRlciB0aGUgY3VycmVudCBwYWdlIChieSBvbWl0dGluZyB0aGUgJnF1b3Q7YWxpYXM9JiMwMzk7LyYjMDM5OyZxdW90OykuIFRoZSBjb21iaW5hdGlvbnMgYXJlIGJhc2ljYWxseSBsaW1pdGxlc3MhPC9wPg0KPHA+QWxsIHN1cHBvcnRlZCB2YWx1ZXMgb2YgcmVjdXJzZSBpbmNsdWRlOjx1bD4NCjxsaT5pdGVtc19vbmUgLSBDYXRhbG9nIGl0ZW1zLCBubyBtb3JlIHRoYW4gb25lIGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+aXRlbXNfYWxsIC0gQ2F0YWxvZyBpdGVtcywgYXQgYW55IGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+Y2F0ZWdvcmllc19vbmUgLSBDYXRlZ29yaWVzLCBubyBtb3JlIHRoYW4gb25lIGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+Y2F0ZWdvcmllc19hbGwgLSBDYXRlZ29yaWVzLCBhdCBhbnkgbGV2ZWwgYmVsb3cgdGhlIGN1cnJlbnQgcGFnZSAob3IgYWxpYXMgcG9pbnQpPC9saT4NCjxsaT5taXhlZF9vbmUgLSBDYXRhbG9nIGl0ZW1zIGFuZCBDYXRlZ29yaWVzLCBubyBtb3JlIHRoYW4gb25lIGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+bWl4ZWRfYWxsIC0gQ2F0YWxvZyBpdGVtcyBhbmQgQ2F0ZWdvcmllcywgYXQgYW55IGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8L3VsPg0KPC9wPg0KPGg0PlJlY2VudGx5IEFkZGVkIEZlYXR1cmUgTGlzdDwvaDQ+DQo8cD5UbyB1c2UgYSAmcXVvdDttb3N0LXJlY2VudGx5IGFkZGVkJnF1b3Q7IGxpc3Qgd2lsbCBhbGxvdyB5b3UgdG8gZGlzcGxheSB0aGUgbW9zdCByZWNlbnRseS1hZGRlZCBjYXRhbG9nIGl0ZW1zIHVuZGVyIGEgc3BlY2lmaWVkIHBhcnQgb2YgeW91ciBoaWVyYXJjaHkuPC9wPg0KPHA+VGhlIHN5bnRheCBmb3IgYSAmcXVvdDttb3N0IHJlY2VudGx5IGFkZGVkJnF1b3Q7IGxpc3QgaXMgbGlrZTo8L3A+DQo8cD57Y21zX21vZHVsZSBtb2R1bGU9JiMwMzk7Q2F0YWxvZ2VyJiMwMzk7IGFjdGlvbj0mIzAzOTtyZWNlbnQmIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5O30sIHdoZXJlIHN1Yl90ZW1wbGF0ZSBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgbGlzdC4gVGhlcmUgYXJlIHR3byBvcHRpb25hbCBwYXJhbWV0ZXJzLCBjb3VudD0mIzAzOTszJiMwMzk7IGFsaWFzPSYjMDM5O3BhZ2VfYWxpYXMmIzAzOTssIHdoZXJlIGNvdW50IGlzIHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gaW5jbHVkZSwgYW5kIHBhZ2VfYWxpYXMgaW5kaWNhdGVzIHRoZSB0b3Agb2YgdGhlIHRyZWUgKGUuZy4sIGEgcGxhY2UgaW4geW91ciBtZW51IGhpZXJhcmNoeSwgdHlwaWNhbGx5IGEgY2F0ZWdvcnkgcGFnZSkgaW4gd2hpY2ggdG8gbG9vayBmb3IgbmV3IGl0ZW1zLiBBIHNwZWNpYWwgdmFsdWUgZm9yICZxdW90O3BhZ2VfYWxpYXMmcXVvdDsgaXMgJnF1b3Q7LyZxdW90Oywgd2hpY2ggbWVhbnMgdG8gdXNlIDxpPmFsbDwvaT4gcGFnZXMgaW4gdGhlIHNpdGUuPC9wPg0KPGg0PlJhbmRvbSBJdGVtcyBGZWF0dXJlIExpc3Q8L2g0Pg0KPHA+VGhlIHN5bnRheCBmb3IgYSAmcXVvdDtyYW5kb20mcXVvdDsgbGlzdCBpcyBsaWtlOjwvcD4NCjxwPntjbXNfbW9kdWxlIG1vZHVsZT0mIzAzOTtDYXRhbG9nZXImIzAzOTsgYWN0aW9uPSYjMDM5O3JhbmRvbSYjMDM5OyBzdWJfdGVtcGxhdGU9JiMwMzk7bXlfc3ViX3RlbXBsYXRlJiMwMzk7fSwgd2hlcmUgc3ViX3RlbXBsYXRlIGlzIHRoZSB0ZW1wbGF0ZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBsaXN0LiBUaGVyZSBhcmUgdHdvIG9wdGlvbmFsIHBhcmFtZXRlcnMsIGNvdW50PSYjMDM5OzMmIzAzOTsgYWxpYXM9JiMwMzk7cGFnZV9hbGlhcyYjMDM5Oywgd2hlcmUgY291bnQgaXMgdGhlIG51bWJlciBvZiBpdGVtcyB0byBpbmNsdWRlLCBhbmQgcGFnZV9hbGlhcyBpbmRpY2F0ZXMgdGhlIHRvcCBvZiB0aGUgdHJlZSAoZS5nLiwgYSBwbGFjZSBpbiB5b3VyIG1lbnUgaGllcmFyY2h5LCB0eXBpY2FsbHkgYSBjYXRlZ29yeSBwYWdlKSBpbiB3aGljaCB0byBsb29rIGZvciBuZXcgaXRlbXMuIEEgc3BlY2lhbCB2YWx1ZSBmb3IgJnF1b3Q7cGFnZV9hbGlhcyZxdW90OyBpcyAmcXVvdDsvJnF1b3Q7LCB3aGljaCBtZWFucyB0byB1c2UgPGk+YWxsPC9pPiBwYWdlcyBpbiB0aGUgc2l0ZS48L3A+DQo8aDQ+VmFyaWFibGU8L2g0Pg0KPHA+WW91IGNhbiBncmFiIHZhcmlhYmxlcyAoYXR0cmlidXRlcykgb3V0c2lkZSBvZiB5b3VyIENhdGFsb2dlciB0ZW1wbGF0ZXMsIHNheSBpbiBhIGdsb2JhbCBjb250ZW50IGJsb2NrLCB1c2luZyB0aGUgdmFyaWFibGUgbWV0aG9kLiBUaGUgc3ludGF4IGxvb2tzIGxpa2U6PC9wPg0KPHA+e2Ntc19tb2R1bGUgbW9kdWxlPSYjMDM5O0NhdGFsb2dlciYjMDM5OyBhY3Rpb249JiMwMzk7dmFyaWFibGUmIzAzOTsgbmFtZT0mIzAzOTtpdGVtbm90ZXMmIzAzOTsgZGVmYXVsdD0mIzAzOTtubyBub3RlcyYjMDM5O30sIHdoZXJlIG5hbWUgaXMgdGhlIGF0dHJpYnV0ZSB0byBkaXNwbGF5ICh1c2luZyB0aGUgc2FtZSBhbGwgbG93ZXItY2FzZSwgcHVuY3R1YXRpb24tZnJlZSByZXByZXNlbnRhdGlvbiBsaWtlIHRoZSBzbWFydHkgdGVtcGxhdGUgdmFyaWFibGVzKSwgYW5kIGRlZmF1bHQgaXMgdGhlIHZhbHVlIHRvIHVzZSBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBkZWZpbmVkLjwvcD4NCjxoMz5DdXN0b21pemF0aW9uIGFuZCBBZHZhbmNlZCBUb3BpY3M8L2gzPg0KPGg0PkNhdGFsb2cgSXRlbSBBdHRyaWJ1dGVzPC9oND4NCjxwPlRoZSBkZWZhdWx0IGl0ZW0gYXR0cmlidXRlcyBhcmUgdHlwaWNhbCBmb3IgYSBjYXRhbG9nIG9mIHByb2R1Y3RzIG9yIGFydHdvcmtzLCBidXQgYnkgZ29pbmcgaW50byBFeHRlbnNpb25zID4gQ2F0YWxvZ2VyID4gTWFuYWdlIFVzZXItRGVmaW5lZCBBdHRyaWJ1dGVzLCB5b3UgY2FuIGNoYW5nZSB0aGUgYXR0cmlidXRlcy4gSXQmIzAzOTtzIGJlc3QgdG8gZGVmaW5lIHRoZSBhdHRyaWJ1dGVzIGJlZm9yZSB5b3Ugc3RhcnQgZW50ZXJpbmcgQ2F0YWxvZyBJdGVtcy48L3A+DQo8cD5Ob3RlIHRoYXQgdGhlIGF0dHJpYnV0ZXMgeW91IGRlZmluZSBtYXkgbmVlZCB0byBiZSBhZGRlZCB0byB0aGUgdGVtcGxhdGUgdGhhdCB5b3UmIzAzOTtyZSB1c2luZyB0byBkaXNwbGF5IENhdGFsb2cgSXRlbXMgLS0gc2VlIEN1c3RvbSBUZW1wbGF0ZXMgYmVsb3cuPC9wPg0KPGg0PkNhdGFsb2cgQ2F0ZWdvcnkgQXR0cmlidXRlczwvaDQ+DQo8cD5TaW1pbGFybHksIHlvdSBjYW4gc2V0IGF0dHJpYnV0ZXMgZm9yIENhdGVnb3JpZXMuIEFnYWluLCB0aGUgYXR0cmlidXRlcyB5b3UgZGVmaW5lIG1heSBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSB0ZW1wbGF0ZSB0aGF0IHlvdSYjMDM5O3JlIHVzaW5nIHRvIGRpc3BsYXkgQ2F0YWxvZyBDYXRlZ29yaWVzIC0tIHNlZSBDdXN0b20gVGVtcGxhdGVzIGJlbG93LjwvcD4NCjxoND5QcmludGFibGUgQ2F0YWxvZyBBdHRyaWJ1dGVzPC9oND4NCjxwPkxpa2V3aXNlLCB5b3UgY2FuIHNldCBhdHRyaWJ1dGVzIGZvciBQcmludGFibGUgQ2F0YWxvZ3MuIEFnYWluLCB0aGUgYXR0cmlidXRlcyB5b3UgZGVmaW5lIG1heSBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSB0ZW1wbGF0ZSB0aGF0IHlvdSYjMDM5O3JlIHVzaW5nIHRvIGRpc3BsYXkgeW91ciBQcmludGFibGUgQ2F0YWxvZyAtLSBzZWUgQ3VzdG9tIFRlbXBsYXRlcyBiZWxvdy48L3A+DQo8aDQ+Q3VzdG9tIFRlbXBsYXRlczwvaDQ+DQo8cD5JZiB5b3UmIzAzOTtyZSB3aWxsaW5nIHRvIG1lc3MgYXJvdW5kIHdpdGggU21hcnR5IFRlbXBsYXRlcywgeW91IGNhbiBjaGFuZ2UgdGhlIGxheW91dCBvZiBhbnkgb2YgdGhlIHBhZ2VzIGdlbmVyYXRlZCBieSBDYXRhbG9nZXIuIFRoaXMgc2hvdWxkIG1ha2UgY2VydGFpbiBkZXZlbG9wZXJzIHZlcnkgaGFwcHksIGV2ZW4gaWYgdGhlIGluZWZmaWNpZW5jeSBvZiB0aGUgcmVzdCBvZiB0aGUgY29kZSB3aWxsIG5vdC4gVGhlcmUgYXJlIGZvdXIga2luZHMgb2YgdGVtcGxhdGVzOiBvbmUga2luZCBmb3IgQ2F0YWxvZyBJdGVtcywgb25lIGtpbmQgZm9yIENhdGFsb2cgQ2F0ZWdvcmllcywgYW5kIG9uZSBraW5kIGZvciBQcmludGFibGUgQ2F0YWxvZ3MsIGFuZCBvbmUga2luZCBmb3IgJnF1b3Q7RmVhdHVyZSZxdW90OyBsaXN0cywgc3VjaCBhcyByZWNlbnRseSBhZGRlZCBpdGVtcyBvciByYW5kb20gc2VsZWN0aW9ucy48L3A+DQo8cD5XaGVuIGVkaXRpbmcgYSBUZW1wbGF0ZSwgdGhlIGFkbWluIHNjcmVlbiB3aWxsIGRpc3BsYXkgYSBsaXN0IG9mIFNtYXJ0eSB0YWdzIGF2YWlsYWJsZSB0byB5b3UgZm9yIHRoYXQga2luZCBvZiB0ZW1wbGF0ZS4gVGhpcw0Kd2lsbCBvbmx5IGhhcHBlbiBvbmNlIHRoZSBtb2R1bGUga25vd3Mgd2hhdCBraW5kIG9mIHRlbXBsYXRlIHlvdSYjMDM5O3JlIGVkaXRpbmcsIHNvIHdoZW4geW91IGZpcnN0IGNyZWF0ZSB0aGUgdGVtcGxhdGUsIGl0IGRpc3BsYXlzIGFsbA0KdGhlIFNtYXJ0eSB0YWdzIGl0IGtub3dzIGFib3V0LCBvbmx5IHNvbWUgb2Ygd2hpY2ggYmVpbmcgYXBwbGljYWJsZS48L3A+DQo8aDQ+U21hcnR5IHRhZ3MgaW4gQXR0cmlidXRlczwvaDQ+DQo8cD5Tb21ldGltZXMsIHlvdSYjMDM5O2xsIHdhbnQgdGhlIGRlc2NyaXB0aW9ucyBvZiB5b3VyIGl0ZW1zIHRvIGluY2x1ZGUgc21hcnR5IHRhZ3MgKGUuZy4sIGNtc19zZWxmbGluaykuIFRvIG1ha2UgdGhhdCB3b3JrLCB5b3UmIzAzOTtsbCBuZWVkIHRvDQp1cGRhdGUgeW91ciB0ZW1wbGF0ZS4gRm9yIHRoZSBhdHRyaWJ1dGVzIHdoZXJlIHlvdSB3YW50IHNtYXJ0eSB0YWdzIHRvIGJlIGFjdGl2ZSwgeW91JiMwMzk7bGwgbmVlZCB0byBuZXN0IHRoZSBzbWFydHkgZXZhbHVhdGlvbnMgaW4geW91ciB0ZW1wbGF0ZS4gRm9yIGV4YW1wbGU6PC9wPg0KPHByZT4NCntldmFsIHZhcj0kYXR0cmxpc3RbYXRdLmtleX0NCjwvcHJlPg0KPHA+YmVjb21lczo8L3A+DQo8cHJlPg0Ke2V2YWwgdmFyPSRlbnRyeS0+aW5wdXQgYXNzaWduPXRoaXNBdHRyfXtldmFsIHZhcj0kdGhpc0F0dHJ9DQo8L3ByZT4NCjxwPlVnbHk/IFl1cC4gQnV0IGl0IHdvcmtzLjwvcD4NCjxoMz5DYXRhbG9nZXIgSW1hZ2UgU3lzdGVtPC9oMz4NCjxwPkNhdGFsb2dlciBoYXMgYW4gaW1hZ2Ugc3lzdGVtIHRoYXQgd2lsbCBhbGxvdyB5b3UgdG8gZHluYW1pY2FsbHkgY2hhbmdlIHRoZSBpbWFnZSBkaXNwbGF5IHNpemUuIElmIHlvdSBkbyBub3QgbGlrZSBpdCwgeW91IGNhbiBhbHRlcg0KdGhlIHRlbXBsYXRlcyBhbmQgdXNlIGFueSBpbWFnZSBzeXN0ZW0geW91IHdhbnQuPC9wPg0KPHA+V2hlbiB5b3UgdXBsb2FkIGFuIGltYWdlIHVzaW5nIENhdGFsb2dlciwgaXQgZ2V0cyBwdXQgaW4gYSBzcGVjaWFsIHNldCBvZiBkaXJlY3RvcmllcyB0byBtYWtlIHRoZSBpbWFnaW5nIGVhc2llci4gWW91IHdpbGwgc2VlIG1vcmUNCmFib3V0IHRoaXMgbGF0ZXIuPC9wPg0KPHA+SXQgd29ya3MgYnkgY2FsbGluZyBhIFBIUCBwcm9ncmFtIGluc3RlYWQgb2YgZGlyZWN0bHkgcmVmZXJlbmNpbmcgdGhlIGltYWdlLiBUaGUgcHJvZ3JhbSB1c2VzIHRoZSBmaWxlbmFtZSB0byBzZWUgaWYgdGhlDQppbWFnZSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgY29ycmVjdCBzaXplLiBJZiBzbywgaXQgcmVkaXJlY3RzIHRvIHRoYXQgaW1hZ2UuIE90aGVyd2lzZSwgaXQgdXNlcyB5b3VyIEdETElCIG9yIEltYWdlTWFnaWNrIHRvIGNyZWF0ZQ0KdGhlIGltYWdlIGluIHRoZSBjb3JyZWN0IHNpemUsIGFuZCB0aGVuIHJlZGlyZWN0cyB0byBpdC4NCjwvcD4NCjxoND5DYXRhbG9nZXIgSW1hZ2UgRmlsZXNwZWMgRXhwbGFuYXRpb248L2g0Pg0KPHA+QSBjYXRhbG9nZXIgaW1hZ2UgaGFzIGEgZmlsZXNwZWMgbGlrZToNCjxiciAvPg0Kcm9vdF9wYXRoL21vZHVsZXMvQ2F0YWxvZ2VyL0NhdGFsb2dlci5JbWFnZS5waHA/aT1pdGVtbmFtZV9mXzFfNDAwXzEuanBnJmFtcDthYz04Mjg4OA0KPC9wPg0KPHA+VGhlIGludGVyZXN0aW5nIHRoaW5nIGlzICZxdW90O2l0ZW1uYW1lX2ZfMV80MDBfMS5qcGcmcXVvdDsgLSB0aGUgc3R1ZmYgYmVmb3JlIGlzIGp1c3QgYSBjYWxsIHRvIHRoZSBwcm9ncmFtLCBhbmQgdGhlICZhbXA7YWM9ODI4ODggaXMgYSByYW5kb20gdGhpbmcgdGhhdA0KaXMgZGVzaWduZWQgdG8gcHJldmVudCBicm93c2VyIGNhY2hpbmcuIFNvIGV4YW1pbmluZyB0aGUgbmFtZSBwaWVjZSBieSBwaWVjZSAoc2VwYXJhdGluZyBhdCB0aGUgdW5kZXJzY29yZXMpLCB3ZSBoYXZlOjwvcD4NCjx1bD4NCjxsaT5pdGVtIG5hbWUgLSB0aGlzIGlzIHRoZSBhbGlhcyBvZiB0aGUgaXRlbS9jYXRlZ29yeSBwYWdlIGNvbnRhaW5pbmcgdGhlIGltYWdlLjwvbGk+DQo8bGk+aW1hZ2UgdHlwZSAtIHRoaXMgaXMgYSBkZXNpZ25hdGlvbiBmb3IgaW1hZ2UgdHlwZTo8dWw+DQo8bGk+ZiAtIGl0ZW0gZnVsbC1zaXplIGltYWdlPC9saT4NCjxsaT50IC0gaXRlbSB0aHVtYm5haWw8L2xpPg0KPGxpPmNmIC0gY2F0ZWdvcnkgZnVsbC1zaXplZCBpbWFnZTwvbGk+DQo8bGk+Y3QgLSBjYXRlZ29yeSB0aHVtYm5haWw8L2xpPg0KPGxpPmN0ZiAtIHByaW50YWJsZSBjYXRhbG9nIGZ1bGwtc2l6ZWQgaW1hZ2U8L2xpPg0KPC91bD4NCjwvbGk+DQo8bGk+aW1hZ2UgbnVtYmVyIC0gc28gYSBnaXZlbiBpdGVtL2NhdGFsb2cvZXRjIGNhbiBoYXZlIG11bHRpcGxlIGltYWdlczwvbGk+DQo8bGk+bG9uZyBkaW1lbnNpb24gLSBsb25nIGRpbWVuc2lvbiBvZiB0aGUgaW1hZ2UsIGluIHBpeGVsczwvbGk+DQo8bGk+bWlzc2luZyBmbGFnIC0gMSBpZiB5b3Ugd2FudCB0byBzaG93IGFuICZxdW90O2ltYWdlIG1pc3NpbmcmcXVvdDsgaW1hZ2UgaWYgdGhpcyBpbWFnZSBkb2VzbiYjMDM5O3QgZXhpc3QsIDAgb3RoZXJ3aXNlPC9saT4NCjwvdWw+DQo8cD4NClRoaXMgd2lsbCB0YWtlIGFuIGltYWdlIGluIHJvb3RfcGF0aC91cGxvYWRzL2ltYWdlcy9jYXRhbG9nX3NyYy9pdGVtbmFtZV9zcmNfMQ0KPC9wPg0KPGgzPkNyZWRpdHM8L2gzPg0KPHA+VGhhbmtzIHRvIDxhIGhyZWY9Imh0dHA6Ly93d3cuaWQtYS5jby51ayI+UGF1bCBDb29wZXI8L2E+IGZvciBzcG9uc29yaW5nIHRoZSBkZXZlbG9wbWVudCBvZiB0ZXh0YXJlYSBhdHRyaWJ1dGVzLjwvcD4NCjxwPlRoYW5rcyB0byBudW1lcm91cyBwYXRpZW50IHVzZXJzIGFuZCBidWcgdGVzdGVycyAobWFueSBvZiB3aG9tIGhhZCBubyBpZGVhIHdoYXQgdGhleSB3ZXJlIGdldHRpbmcgaW50by4pPC9wPiANCjxoMz5TdXBwb3J0PC9oMz4NCjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4NCjx1bD4NCjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBDTVMgTWFkZSBTaW1wbGUgIDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmciPkRldmVsb3BlciBGb3JnZTwvYT4uPC9saT4NCjxsaT5UbyBvYnRhaW4gY29tbWVyY2lhbCBzdXBwb3J0LCBwbGVhc2Ugc2VuZCBhbiBlbWFpbCB0byB0aGUgYXV0aG9yIGF0IDxhIGhyZWY9Im1haWx0bzpzamdAY21zbW9kdWxlcy5jb20iPjxzamdAY21zbW9kdWxlcy5jb20+PC9hPi48L2xpPg0KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPg0KPGxpPlRoZSBhdXRob3IgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMiPkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4NCjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseSBhbmQgZ3JvdmVsbGluZyBmb3IgZnJlZSBzdXBwb3J0LjwvbGk+DQo8L3VsPg0KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0DQpvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+DQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAwOCwgU2FtdWVsIEdvbGRzdGVpbiA8YSBocmVmPSJtYWlsdG86c2pnQGNtc21vZHVsZXMuY29tIj48c2pnQGNtc21vZHVsZXMuY29tPjwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+JzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnTWFrZSBzdXJlIHRvIHNldCB0aGUgJnF1b3Q7TW9kaWZ5IENhdGFsb2cgU2V0dGluZ3MmcXVvdDsgcGVybWlzc2lvbiBvbiB1c2VycyB3aG8gd2lsbCBiZSBhZG1pbmlzdGVyaW5nIHRoZSBjYXRhbG9nLic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjE5MDk4NDEzLjEzMTA5Mjc5MTkuMTMxMDkyNzkxOS4xMzEwOTI3OTE5LjEnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMzEwOTI3OTE5LjEuMS51dG1jY249KGRpcmVjdCl8dXRtY3NyPShkaXJlY3QpfHV0bWNtZD0obm9uZSknOwokbGFuZ1sncWNhJ10gPSAnUDAtMTUyOTE3NTY1OS0xMzEwMDgxMDc2OTAxJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/tr_TR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ25hbWVpbWFnZXMnXSA9ICdSZXNpbWxlcic7CiRsYW5nWyduYW1lZmlsZXMnXSA9ICdEb3N5YWxhcic7CiRsYW5nWyduYW1lZmlsZSddID0gJ0Rvc3lhJzsKJGxhbmdbJ2RlbGV0ZWltYWdlJ10gPSAnUmVzaW1sZXJpIFNpbCc7CiRsYW5nWydkZWxldGVmaWxlJ10gPSAnRG9zeWEgU2lsJzsKJGxhbmdbJ093bmVyJ10gPSAnU2FoaXAnOwokbGFuZ1snQ2F0YWxvZ0l0ZW0nXSA9ICcmVXVtbDtyJnV1bWw7biBLYXRhbG/En3UnOwokbGFuZ1snbmFtZXBhZ2UnXSA9ICdTYXlmYSc7CiRsYW5nWydQZXJtaXNzaW9ucyddID0gJ8SwemlubGVyJzsKJGxhbmdbJ1N1YiddID0gJ0FsdCAtJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtX3NvcnRfb3JkZXIyJ10gPSAnJlV1bWw7ciZ1dW1sO24gU8SxcmFsYW1hJzsKJGxhbmdbJ3RpdGxlX2dsb2JhbF9pdGVtc19wZXJfcGFnZTInXSA9ICdTYXlmYWRha2kgJlV1bWw7ciZ1dW1sO24gU2F5xLFzxLEnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2NhdGVnb3J5X3JlY3Vyc2UyJ10gPSAnRyZvdW1sO3N0ZXJpbSBkdXJ1bXUnOwokbGFuZ1snd2hpY2hfYXR0cmlidXRlcyddID0gJ0hhbmdpICZvdW1sO3plbGxpa2xlciBrYXRhbG9ndGEgZyZvdW1sO3N0ZXJpbGVjZWsnOwokbGFuZ1snbmF2VGFiJ10gPSAnIHwgJzsKJGxhbmdbJ25lZWRwZXJtaXNzaW9uJ10gPSAnWW91IG5lZWQgJXMgc2V0IHRvIGRvIHRoYXQuJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0thdGFsb2cnOwokbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddID0gJ0thdGFsb2cgQXlhcmxhcsSxIFkmb3VtbDtuZXRpbWknOwokbGFuZ1snYXJleW91c3VyZSddID0gJ1NpbG1layBpc3RlZGnEn2luaXplIGVtaW4gbWlzaW5peiAlcz8nOwokbGFuZ1sndW5pcXVlY29kZSddID0gJ0JlbnplcnNpeiBLb2QnOwokbGFuZ1sndGVtcGxhdGVsaXN0J10gPSAnQWx0LcWfYWJsb25sYXInOwokbGFuZ1snbGlzdHRlbXBsJ10gPSAnQWx0LcWfYWJsb24gWSZvdW1sO25ldGltaSc7CiRsYW5nWyd0aXRsZV9maWVsZF90eXBlJ10gPSAnQWxhbiBUaXBpJzsKJGxhbmdbJ3RpdGxlX3NlbGVjdF92YWx1ZXMnXSA9ICdEZcSfZXInOwokbGFuZ1sndGl0bGVfaXRlbV90YWInXSA9ICcmVXVtbDtyJnV1bWw7biBOaXRlbGlrbGVyaSc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV90YWInXSA9ICdLYXRlZ29yaSBOaXRlbGlrbGVyaSc7CiRsYW5nWyd0aXRsZV9wcmludGFibGVfdGFiJ10gPSAnWWF6ZMSxcsSxbGFiaWxpciBLYXRhbG9nIEF5YXJsYXLEsSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3RhYiddID0gJyZVdW1sO3ImdXVtbDtuIFJlc2ltIEJveXV0bGFyxLEnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2VfdGFiJ10gPSAnS2F0ZWdvcmkgU2F5ZmFzxLEgQXlhcmxhcsSxJzsKJGxhbmdbJ3RpdGxlX3BhdGhfdGFiJ10gPSAnWW9sbGFyJzsKJGxhbmdbJ3RpdGxlX2RlbGV0ZSddID0gJ1NpbD8nOwokbGFuZ1sndGl0bGVfZmlsZV90YWInXSA9ICcmVXVtbDtyJnV1bWw7biBEb3N5YSBBeWFybGFyxLEnOwokbGFuZ1sndGl0bGVfaW1hZ2VfdGFiJ10gPSAnRGnEn2VyIFJlc2ltIEF5YXJsYXLEsSc7CiRsYW5nWyd0aXRsZV9pdGVtX3RlbXBsYXRlX3ZhcnMnXSA9ICcmVXVtbDtyJnV1bWw7biDFnmFibG9udSBEZcSfacWfa2VubGVyaSc7CiRsYW5nWyd0aXRsZV9jYXRfdGVtcGxhdGVfdmFycyddID0gJ0thdGVnb3JpIMWeYWJsb251IERlxJ9pxZ9rZW5sZXJpJzsKJGxhbmdbJ3RpdGxlX2NhdGFsb2dfdGVtcGxhdGVfdmFycyddID0gJ0thdGFsb2cgxZ5hYmxvbiBEZcSfacWfa2VubGVyaSc7CiRsYW5nWyd0aXRsZV9jb21wYXJlX3RlbXBsYXRlX3ZhcnMnXSA9ICdLYXLFn8SxbGHFn3TEsXJtYSDFnmFibG9uIERlxJ9pxZ9rZW5sZXJpJzsKJGxhbmdbJ3RpdGxlX2ZlYXR1cmVfdGVtcGxhdGVfdmFycyddID0gJyZPdW1sO3plbGxpa2xlciDFnmFibG9udSBEZcSfacWfa2VubGVyaSc7CiRsYW5nWyd0aXRsZV9zaG93X29ubHlfZXhpc3RpbmdfaW1hZ2VzJ10gPSAnS2F5xLFwIHJlc2ltbGVyaSBkYWhpbCBldG1lJzsKJGxhbmdbJ3RpdGxlX3Nob3dfb25seV9leGlzdGluZ19pbWFnZXNfaGVscCddID0gJ1RoaXMgd2lsbCBvbmx5IHB1dCBpbWFnZSByZWZlcmVuY2VzIGludG8gbGlzdHMgaWYgdGhlIGltYWdlIGV4aXN0cy48YnIgLz4oTm9ybWFsbHksIHRoaXMgaXMgZmluZSwgYnV0IGlmIHlvdSBhcmUgZG9pbmcgc29tZXRoaW5nIGNsZXZlciB3aXRoIGltYWdlPGJyIC8+YXJyYXkgaW5kZXhlcywgdGhpcyBjb3VsZCBjYXVzZSB5b3UgdHJvdWJsZS4pJzsKJGxhbmdbJ3RpdGxlX2ZsdXNoX2NhdHMnXSA9ICdGbHVzaCBjYXRlZ29yeSBwYWdlIGJ1ZmZlcnMnOwokbGFuZ1sndGl0bGVfZmx1c2hfY2F0c19oZWxwJ10gPSAnSWYgeW91IGhhdmUgYSBodWdlIG51bWJlciBvZiBpdGVtcyBkaXNwbGF5ZWQ8YnIgLz5pbiBhIGNhdGVnb3J5LCBzb21lIFBIUCBpbnN0YWxscyB3aWxsIGZhaWwgdG8gZGlzcGxheSB0aGUgcGFnZTxiciAvPmNvcnJlY3RseS4gQ2hlY2sgdGhpcyBib3ggdG8gc29sdmUgdGhpcyBwcm9ibGVtICh0ZXN0IGZvciBzaWRlIGVmZmVjdHMpLic7CiRsYW5nWyd0aXRsZV9pdGVtX2ZpbGVfdHlwZXMnXSA9ICdpemluIHZlcmlsZW4gZG9zeWEgdGlwbGVyaSc7CiRsYW5nWyd0aXRsZV9pbWFnZV91cGxvYWRfcGF0aCddID0gJ1kmdXVtbDtrbGVuZW4gcmVzaW1sZXJpbiB5ZXJpJzsKJGxhbmdbJ3RpdGxlX2ZpbGVfdXBsb2FkX3BhdGgnXSA9ICdZJnV1bWw7a2xlbmVuICZ1dW1sO3ImdXVtbDtuIGRvc3lhbGFyxLFuxLFuIHllcmknOwokbGFuZ1sndGl0bGVfaW1hZ2VfcHJvY19wYXRoJ10gPSAnxLDFn2xlbm1pxZ8gcmVzaW1sZXJpbiB5ZXJpICAodGh1bWJuYWlscywgc2NhbGVkIGltYWdlcywgZXRjKSc7CiRsYW5nWydwYXRoX2hlbHAnXSA9ICdZb3UgY2FuIHNwZWNpZnkgd2hlcmUgQ2F0YWxvZ2VyIHN0b3JlcyBmaWxlcy4gVGhlc2UgcGF0aHMgYXJlIHJlbGF0aXZlIHRvIHRoZSA8aT51cGxvYWRzX3BhdGg8L2k+IGRlZmluZWQgaW4geW91ciBjb25maWcucGhwPGJyIC8+Tk9URTogSWYgeW91IGNoYW5nZSB0aGVzZSBwYXRocyBhZnRlciBmaWxlcyBvciBpbWFnZXMgaGF2ZSBiZWVuIHVwbG9hZGVkLCBDYXRhbG9nZXIgd2lsbCBsb3NlIHRoZSBhbHJlYWR5LXVwbG9hZGVkIGFzc2V0cyAodGhleSB3aWxsIHN0aWxsIGJlIHRoZXJlLCBidXQgQ2F0YWxvZ2VyIHdpbGwgbm90IGtub3cgYWJvdXQgdGhlbSwgc28geW91IHdpbGwgbmVlZCB0byByZS11cGxvYWQgdGhlbSBmb3IgQ2F0YWxvZ2VyIHRvIGZpZ3VyZSBpdCBvdXQpLic7CiRsYW5nWydjYXRhbG9nZXInXSA9ICdLYXRhbG9nJzsKJGxhbmdbJ3RpdGxlX2F0dHJfb3JkZXJfYnknXSA9ICdTaXBhcmnFnyc7CiRsYW5nWyd0aXRsZV9hdHRyX2FsaWFzJ10gPSAnQXR0cmlidXRlIEFsaWFzIChTbWFydHkgRnJpZW5kbHkpJzsKJGxhbmdbJ3RpdGxlX2F0dHJfbGVuZ3RoJ10gPSAnVXp1bmx1ayonOwokbGFuZ1sndGl0bGVfYXR0cl9kZWZhdWx0J10gPSAnVmFyc2F5xLFsYW4gRGXEn2VyJzsKJGxhbmdbJ3RpdGxlX2F0dHJfbGVuZ3RoX2hlbHAnXSA9ICcoKkxlbmd0aCBkb2VzIG5vdCBhcHBseSB0byBUZXh0IEFyZWFzKSc7CiRsYW5nWyd0ZXh0J10gPSAnVGV4dCc7CiRsYW5nWydkcm9wZG93biddID0gJ0Ryb3Bkb3duJzsKJGxhbmdbJ3RleHRhcmVhJ10gPSAnVGV4dCBBcmVhJzsKJGxhbmdbJ2NoZWNrYm94J10gPSAnQ2hlY2tib3gnOwokbGFuZ1snaXRlbV9wYWdlJ10gPSAnJlV1bWw7ciZ1dW1sO24gU2F5ZmFzxLEnOwokbGFuZ1snY2F0ZWdvcnlfcGFnZSddID0gJ0thdGVnb3JpIFNheWZhc8SxJzsKJGxhbmdbJ2NhdGFsb2dfcHJpbnRhYmxlJ10gPSAnWWF6xLFsYWJpbGlyIEthdGFsb2cnOwokbGFuZ1snY2F0YWxvZ19kYXRhc2hlZXQnXSA9ICdLYXRhbG9nIFZlcmlzYXlmYXPEsSc7CiRsYW5nWydjYXRhbG9nX3Nob3J0X2xpc3QnXSA9ICcmT3VtbDt6ZWxsaWsgTGlzdGVzaSc7CiRsYW5nWydpdGVtX2NvbXBhcmlzb24nXSA9ICcmVXVtbDtyJnV1bWw7biBLYXLFn8SxbGHFn3TEsXJtYSc7CiRsYW5nWyd0aXRsZV9nbG9iYWxfaXRlbV9zb3J0X29yZGVyJ10gPSAnJlV1bWw7ciZ1dW1sO24gc8SxcmFsYW1hc8SxbsSxIGJlbGlybGUnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2l0ZW1zX3Blcl9wYWdlJ10gPSAnU2F5ZmFkYWtpICZ1dW1sO3ImdXVtbDtuIHNhecSxc8SxbsSxIGJlbGlybGUnOwokbGFuZ1sndGl0bGVfZ2xvYmFsX2NhdGVnb3J5X3JlY3Vyc2UnXSA9ICdTZXQgQ2F0ZWdvcnkgRGlzcGxheSBCZWhhdmlvciB0byc7CiRsYW5nWyd0aXRsZV9pdGVtX3NvcnRfb3JkZXInXSA9ICdWYXJzYXnEsWxhbiBTxLFybGFtYSc7CiRsYW5nWyd0aXRsZV9wcmludGFibGVfc29ydF9vcmRlciddID0gJ1ZhcnNhecSxbGFuIHlhemTEsXLEsWxhYmlsaXIga2F0YWxvZyBzxLFyYWxhbWFzxLEnOwokbGFuZ1sndGl0bGVfaXRlbXNfcGVyX3BhZ2UnXSA9ICdWYXJzYXnEsWxhbiBzYXlmYWRha2kgJnV1bWw7ciZ1dW1sO24gc2F5xLFzxLEnOwokbGFuZ1sndGl0bGVfYXZhaWxfYXR0cnMnXSA9ICdJdGVtIGF0dHJpYnV0ZXMgYXZhaWxhYmxlIGZvciB0aGUgdGVtcGxhdGUnOwokbGFuZ1sndGl0bGVfYXZhaWxfaW1hdHRycyddID0gJ0J1IMWfYWJsb24gaSZjY2VkaWw7aW4gdXlndW4gJnV1bWw7ciZ1dW1sO24gcmVzaW1sZXJpJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2Vfc2l6ZV9oZXJvJ10gPSAnSW1hZ2Ugc2l6ZSBmb3IgSXRlbSBQYWdlIChsb25nIGF4aXMgaW4gcGl4ZWxzKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfdGh1bWJuYWlsJ10gPSAnVGh1bWJhaWwgaW1hZ2Ugc2l6ZSBmb3IgSXRlbSBQYWdlIChsb25nIGF4aXMgaW4gcGl4ZWxzKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfY2F0ZWdvcnknXSA9ICdUaHVtYm5haWwgaW1hZ2Ugc2l6ZSBmb3IgSXRlbSBvbiBDYXRlZ29yeSBQYWdlIChsb25nIGF4aXMgaW4gcGl4ZWxzKSc7CiRsYW5nWyd0aXRsZV9pdGVtX2ltYWdlX3NpemVfY2F0YWxvZyddID0gJ1RodW1ibmFpbCBpbWFnZSBzaXplIGZvciBJdGVtIG9uIENhdGFsb2cgUGFnZSAobG9uZyBheGlzIGluIHBpeGVscyknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV9oZXJvJ10gPSAnSW1hZ2Ugc2l6ZSBmb3IgQ2F0ZWdvcnkgUGFnZSAobG9uZyBheGlzIGluIHBpeGVscyknOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV90aHVtYm5haWwnXSA9ICdUaHVtYmFpbCBpbWFnZSBzaXplIGZvciBDYXRlZ29yeSBQYWdlIChsb25nIGF4aXMgaW4gcGl4ZWxzKSc7CiRsYW5nWyd0aXRsZV90ZW1wbGF0ZSddID0gJ8WeYWJsb24nOwokbGFuZ1sndGl0bGVfdGVtcGxhdGVfdHlwZSddID0gJ8WeYWJsb24gVGlwaSc7CiRsYW5nWyd0aXRsZV90aXRsZSddID0gJ0JhxZ9sxLFrJzsKJGxhbmdbJ3RpdGxlX2l0ZW1faW1hZ2VfY291bnQnXSA9ICdNYXhpbXVtIG51bWJlciBvZiB2aWV3cyBmb3IgZWFjaCBJdGVtJzsKJGxhbmdbJ3RpdGxlX2l0ZW1fZmlsZV9jb3VudCddID0gJ01heGltdW0gbnVtYmVyIG9mIG90aGVyIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIGl0ZW0nOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfaW1hZ2VfY291bnQnXSA9ICdNYXhpbXVtIG51bWJlciBvZiBCYW5uZXIgaW1hZ2VzIGZvciBlYWNoIENhdGVnb3J5IFBhZ2UnOwokbGFuZ1sndGl0bGVfaXRlbV9hdHRyaWJ1dGVzX2hlbHAnXSA9ICdFYWNoIGF0dHJpYnV0ZSB5b3UgZW50ZXIgaGVyZSB3aWxsIGJlIHRoZSB0aXRsZSBvZiBhIGZpZWxkIHRoYXQgeW91IGNhbiB1c2UgdG8gZGVzY3JpYmUgYW4gaW5kaXZpZHVhbCBpdGVtLCBhbmQgd2lsbCBiZSBkaXNwbGF5ZWQgd2l0aCB0aGF0IGl0ZW0uIFlvdSBtYXkgaGF2ZSB0byB1cGRhdGUgeW91ciB0ZW1wbGF0ZSB0byByZWZsZWN0IHRoZXNlIGF0dHJpYnV0ZXMuJzsKJGxhbmdbJ3RpdGxlX2NhdGVnb3J5X2F0dHJpYnV0ZXNfaGVscCddID0gJ0VhY2ggYXR0cmlidXRlIHlvdSBlbnRlciBoZXJlIHdpbGwgYmUgdGhlIHRpdGxlIG9mIGEgZmllbGQgdGhhdCB5b3UgY2FuIHVzZSB0byBkZXNjcmliZSBhbiBpdGVtIGNhdGVnb3J5LCBhbmQgd2lsbCBiZSBkaXNwbGF5ZWQgb24gdGhhdCBjYXRlZ29yeSBwYWdlLiBZb3UgbWF5IGhhdmUgdG8gdXBkYXRlIHlvdXIgdGVtcGxhdGUgdG8gcmVmbGVjdCB0aGVzZSBhdHRyaWJ1dGVzLic7CiRsYW5nWyd0aXRsZV9jYXRhbG9nX2F0dHJpYnV0ZXNfaGVscCddID0gJ0VhY2ggYXR0cmlidXRlIHlvdSBlbnRlciBoZXJlIHdpbGwgYmUgdGhlIHRpdGxlIG9mIGEgZmllbGQgdGhhdCB5b3UgY2FuIHVzZSB0byBkZXNjcmliZSB0aGUgZW50aXJlIGNhdGFsb2csIGFuZCB3aWxsIGJlIGRpc3BsYXllZCBvbiB0aGUgcHJpbnRhYmxlIGNhdGFsb2cgcGFnZS4gWW91IG1heSBoYXZlIHRvIHVwZGF0ZSB5b3VyIHRlbXBsYXRlIHRvIHJlZmxlY3QgdGhlc2UgYXR0cmlidXRlcy4nOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfc29ydCddID0gJ0NhdGVnb3J5IFBhZ2UgSXRlbS1saXN0IHNvcnQgb3JkZXInOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZSddID0gJ0RlZmF1bHQgQ2F0ZWdvcnkgRGlzcGxheSBCZWhhdmlvcic7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2l0ZW1zX2FsbCddID0gJ0luY2x1ZGUgYWxsIEl0ZW1zIHdpdGhpbiB0aGlzIGNhdGVnb3J5LCBpbmNsdWRpbmcgaXRlbXMgaW4gc3ViLWNhdGVnb3JpZXMnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9pdGVtc19vbmUnXSA9ICdJbmNsdWRlIGFsbCBJdGVtcyBpbW1lZGlhdGVseSB3aXRoaW4gdGhpcyBjYXRlZ29yeSwgYnV0IG5vdCBpdGVtcyBpbiBzdWItY2F0ZWdvcmllcyc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX2NhdGVnb3JpZXNfYWxsJ10gPSAnSW5jbHVkZSBhbGwgQ2F0ZWdvcmllcyB3aXRoaW4gdGhpcyBjYXRlZ29yeSwgaW5jbHVkaW5nIGNhdGVnb3JpZXMgaW4gc3ViLWNhdGVnb3JpZXMnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9jYXRlZ29yaWVzX29uZSddID0gJ0luY2x1ZGUgYWxsIENhdGVnb3JpZXMgaW1tZWRpYXRlbHkgd2l0aGluIHRoaXMgY2F0ZWdvcnksIGJ1dCBub3QgY2F0ZWdvcmllcyBpbiBzdWItY2F0ZWdvcmllcyc7CiRsYW5nWyd0aXRsZV9jYXRlZ29yeV9yZWN1cnNlX21peGVkX2FsbCddID0gJ0luY2x1ZGUgYWxsIEl0ZW1zIGFuZCBDYXRlZ29yaWVzIHdpdGhpbiB0aGlzIGNhdGVnb3J5LCBpbmNsdWRpbmcgaXRlbXMgYW5kIGNhdGVnb3JpZXMgaW4gc3ViLWNhdGVnb3JpZXMnOwokbGFuZ1sndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9taXhlZF9vbmUnXSA9ICdJbmNsdWRlIGFsbCBJdGVtcyBhbmQgQ2F0ZWdvcmllcyBpbW1lZGlhdGVseSB3aXRoaW4gdGhpcyBjYXRlZ29yeSwgYnV0IG5vdCBpdGVtcyBvciBjYXRlZ29yaWVzIGluIHN1Yi1jYXRlZ29yaWVzJzsKJGxhbmdbJ3RpdGxlX3Nob3dfbWlzc2luZ19pbWFnZXMnXSA9ICdTaG93ICZxdW90O05vIEltYWdlJnF1b3Q7IGltYWdlIGZvciBtaXNzaW5nIGltYWdlcyc7CiRsYW5nWyd0aXRsZV9zaG93X21pc3NpbmdfaW1hZ2VzX2xvbmcnXSA9ICdTaG93IGEgc3BlY2lhbCAmcXVvdDtObyBJbWFnZSZxdW90OyBpbWFnZSBpZiB0aGVyZSBhcmUgbWlzc2luZyBpbWFnZXMgKHVzZWZ1bCBmb3IgZGVidWdnaW5nLiBPdGhlcndpc2Ugd2lsbCB1c2UgYSBzaW5nbGUgcGl4ZWwgdHJhbnNwYXJlbnQgaW1hZ2UpLic7CiRsYW5nWyduYXR1cmFsX29yZGVyJ10gPSAnRG9sYcWfxLFtIFPEsXJhbGFtc8SxJzsKJGxhbmdbJ2FscGhhX29yZGVyJ10gPSAnQWxmYWJldGlrIFPEsXJhbGFtYSc7CiRsYW5nWydtYW5hZ2VwcmVmcyddID0gJyZPdW1sO3plbGxpa2xlcmkgWSZvdW1sO25ldCc7CiRsYW5nWydtYW5hZ2VhdHRycyddID0gJ01hbmFnZSBVc2VyLURlZmluZWQgQXR0cmlidXRlcyc7CiRsYW5nWydnbG9iYWxvcHMnXSA9ICdHZW5lbCBLYXRhbG9nIFkmb3VtbDtuZXRpbWknOwokbGFuZ1snYWRkdGVtcGxhdGUnXSA9ICfFnmFibG9uIEVrbGUnOwokbGFuZ1sncmVpbXBvcnR0ZW1wbGF0ZXMnXSA9ICdSZS1pbXBvcnQgZXhhbXBsZSBzdWItdGVtcGxhdGVzJzsKJGxhbmdbJ3JlaW1wb3J0ZWQnXSA9ICdTYW1wbGUgc3ViLXRlbXBsYXRlcyBoYXZlIGJlZW4gaW1wb3J0ZWQuJzsKJGxhbmdbJ3RlbXBsYXRldXBkYXRlZCddID0gJ8WeYWJsb24gZWtsZW5kaS9nJnV1bWw7bmNlbGxlbmRpLic7CiRsYW5nWyd0ZW1wbGF0ZWRlbGV0ZWQnXSA9ICfFnmFibG9uIGVrbGVuZGkuJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJyZPdW1sO3plbGxpa2xlciBnJnV1bWw7bmNlbGxlbmRpLic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bGUgdmVyc2lvbiAlcyBpbnN0YWxsZWQuJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWxlIHVwZ3JhZGVkIHRvIHZlcnNpb24gJXMuJzsKJGxhbmdbJ2JhZGZpbGUnXSA9ICdGaWxlICZxdW90OyVzJnF1b3Q7IGlzIG5vdCBhbiBhY2NlcHRhYmxlIGZvcm1hdC4nOwokbGFuZ1snYmFkaW1hZ2UnXSA9ICdQcm9ibGVtIHVwbG9hZGluZyAmcXVvdDslcyZxdW90OyAoY2hlY2sgZmlsZSBzaXplIGFuZC9vciBzZXJ2ZXIgcGVybWlzc2lvbnMpLic7CiRsYW5nWydiYWRpbWFnZWZvcm1hdCddID0gJyZxdW90OyVzJnF1b3Q7IGlzIG5vdCB2YWxpZC4gT25seSBqcGVncyBhcmUgc3VwcG9ydGVkIGZvciB0aGUgdGltZSBiZWluZy4nOwokbGFuZ1sndXBsb2FkZWQnXSA9ICdGaWxlICZxdW90OyVzJnF1b3Q7IHVwbG9hZGVkIGZvciBpdGVtICVzLic7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBVbmluc3RhbGxlZC4nOwokbGFuZ1snYXR0cnN1cGRhdGVkJ10gPSAnQXR0cmlidXRlcyB1cGRhdGVkLic7CiRsYW5nWydub2dsb2JhbGNoYW5nZSddID0gJ0RlxJ9pxZ90aXJtZSc7CiRsYW5nWydnbG9iYWxseXVwZGF0ZWQnXSA9ICdDaGFuZ2VzIHByb3BhZ2F0ZWQgZ2xvYmFsbHkuJzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ8WeYWJsb24gRCZ1dW1sO3plbmxlJzsKJGxhbmdbJ3N1YnRlbXBsYXRlcyddID0gJ0NhdGFsb2cgU3ViLXRlbXBsYXRlcyc7CiRsYW5nWyduZXh0J10gPSAnOiZyYXF1bzsnOwokbGFuZ1sncHJldiddID0gJyZsYXF1bzs6JzsKJGxhbmdbJ2VkaXQnXSA9ICdEJnV1bWw7emVubGUnOwokbGFuZ1snZGVsZXRlJ10gPSAnU2lsJzsKJGxhbmdbJ25vdGVtcGxhdGVzJ10gPSAnTm8gU3ViLXRlbXBsYXRlcyBhcmUgaW5zdGFsbGVkISc7CiRsYW5nWydoZWxwdGV4dCddID0gJzxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPg0KPHA+VGhpcyBtb2R1bGUgbGV0cyB5b3UgY3JlYXRlIG9ubGluZSBjYXRhbG9ncyBvciBwb3J0Zm9saW9zLiBDYXRhbG9ncyBjb25zaXN0IG9mICZxdW90O0NhdGFsb2cgSXRlbXMmcXVvdDsgd2hpY2ggY291bGQgYmUgcHJvZHVjdHMsIHdvcmtzIG9mIGFydCwgb3IgdGhlIGxpa2UsIGFuZCAmcXVvdDtDYXRhbG9nIENhdGVnb3JpZXMmcXVvdDsgd2hpY2ggY291bGQgYmUgaXRlbSBjYXRlZ29yaWVzIG9yIG90aGVyIG5hdHVyYWwgZGl2aXNpb25zIG9mIHRoZSBjYXRhbG9nLjwvcD4NCjxwPkNhdGVnb3JpZXMgbWF5IGJlIGRlZmluZWQgaGllcmFyY2hpY2FsbHkgKHVzaW5nIHRoZSBzdGFuZGFyZCBDTVMgTWFkZSBTaW1wbGUgY29udGVudCBsaXN0KS4gQ2F0ZWdvcnkgcGFnZXMgY2FuIGRpc3BsYXkgaXRlbXMgaW4gdGhlIGNhdGVnb3J5IGFuZC9vciBzdWJjYXRlZ29yaWVzLCBvcHRpb25hbGx5IHJlY3Vyc2luZyB0aHJvdWdoIHN1Yi1jYXRlZ29yaWVzLiBUaGlzIGJlaGF2aW9yIGNhbiBiZSBjb25maWd1cmVkIG9uIGEgcGVyLWNhdGVnb3J5IGJhc2lzLjwvUD4NCjxwPlRoZXJlIGlzIGFsc28gYSBQcmludGFibGUgQ2F0YWxvZywgd2hpY2ggcmVwcmVzZW50cyB0aGUgd2hvbGUgY29sbGVjdGlvbiBvZiBDYXRhbG9nIEl0ZW1zIG9uIGEgc2luZ2xlIHBhZ2UgKHRoaXMgaXMgY3VycmVudGx5IGltcGxlbWVudGVkIGJhZGx5LCBhbmQgd2lsbCBsb2FkIHNsb3dseSkuPC9wPg0KPHA+VGhlIG1vZHVsZSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgJnF1b3Q7Q29udGVudCBBbGlhc2VzJnF1b3Q7IChhIG1vZHVsZSBhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jb250ZW50YWxpYXNlcy8iPnRoZSBEZXZlbG9wZXIgRm9yZ2U8L2E+KSwgd2hpY2ggYWxsb3dzIHlvdSB0byBwbGFjZSBhbnkgQ2F0YWxvZyBJdGVtIGludG8gbXVsdGlwbGUgQ2F0YWxvZyBDYXRlZ29yaWVzLjwvcD4NCjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPg0KPHA+V2hlbiB5b3UgaW5zdGFsbCB0aGlzIG1vZHVsZSwgaXQgY3JlYXRlcyB0aHJlZSBuZXcgQ29udGVudCBUeXBlczogQ2F0YWxvZyBJdGVtLCBDYXRhbG9nIENhdGVnb3J5LCBhbmQgUHJpbnRhYmxlIENhdGFsb2cuIFdoZW4geW91JiMwMzk7cmUgaW4geW91ciBzaXRlIGFkbWluaXN0cmF0aW9uIGNhdGVnb3J5LCB5b3UgYWRkIENhdGFsb2cgSXRlbXMgYW5kIENhdGFsb2cgQ2F0ZWdvcmllcyBqdXN0IGFzIHlvdSB3b3VsZCBhbnkgb3RoZXIga2luZCBvZiBwYWdlLiBTZWxlY3QgQ29udGVudCA+IFBhZ2VzID4gQWRkIENvbnRlbnQsIGFuZCB0aGVuIHNlbGVjdCAmcXVvdDtDYXRhbG9nIEl0ZW0mcXVvdDsgb3IgJnF1b3Q7Q2F0YWxvZyBDYXRlZ29yeSZxdW90OyBmcm9tIHRoZSBDb250ZW50IFR5cGUgcHVsbGRvd24uPC9wPg0KPGg0PkNhdGFsb2cgSXRlbXM8L2g0Pg0KPHA+QWRkaW5nIGEgQ2F0YWxvZyBJdGVtIGlzIHNpbWlsYXIgdG8gYWRkaW5nIGFuIG9yZGluYXJ5IHBhZ2UgdG8geW91ciBzaXRlLiBUaGUgZGF0YSBmaWVsZHMgZm9yIHRoZSBJdGVtIGFyZSBub3QgZXhhY3RseSB0aGUgc2FtZSwgaG93ZXZlci4gQWxzbyBub3RlIHRoYXQgaW4gdGhlICZxdW90O0ltYWdlcyZxdW90OyB0YWIsIHlvdSBjYW4gc2VsZWN0IG11bHRpcGxlIGltYWdlcyB0byB1cGxvYWQgZm9yIHRoZSBpdGVtLiBXaGVuIHlvdSB1cGxvYWQgaW1hZ2VzLCB0aGUgc3lzdGVtIHdpbGwgc2l6ZSB0aGVtIGFwcHJvcHJpYXRlbHkgZm9yIHRoZSBjYXRhbG9nLCBjcmVhdGUgdGh1bWJuYWlscyBmb3IgdXNlIGluIHRoZSBJdGVtJiMwMzk7cyBwYWdlLCBjcmVhdGUgdGh1bWJuYWlscyBmb3IgYW55IENhdGVnb3J5IHBhZ2VzLCBhbmQgc28gb24uIFRoaXMgcmVxdWlyZXMgdGhhdCB5b3UgaGF2ZSBHRCBvciBhIHNpbWlsYXIgaW1hZ2UgbGlicmFyeSBpbnN0YWxsZWQuIEN1cnJlbnRseSwgb25seSBqcGVnIGZvcm1hdCBpbWFnZXMgYXJlIHN1cHBvcnRlZC48L3A+DQo8aDQ+Q2F0YWxvZyBDYXRlZ29yaWVzPC9oND4NCjxwPkEgQ2F0YWxvZyBDYXRlZ29yeSBpcyB1c2VkIGZvciBvcmdhbml6aW5nIHlvdXIgY2F0YWxvZyBpdGVtcy4gSXQgcHJvdmlkZXMgYSBwYWdlIHRoYXQgbGlzdHMgQ2F0YWxvZ2VyIGNvbnRlbnQgdGhhdCBpcyBjb250YWluZWQgYnkgaXQuIEEgQ2F0YWxvZyBJdGVtIGlzIGNvbnNpZGVyZWQgdG8gYmUgcGFydCBvZiBhIENhdGFsb2cgQ2F0ZWdvcnkgaWYgaXQgaXMgYmVsb3cgdGhhdCBDYXRlZ29yeSBpbiB0aGUgU2l0ZSBIaWVyYXJjaHkuIENhdGVnb3JpZXMgY2FuIHNpbWlsYXJseSBpbmNsdWRlIG90aGVyIENhdGVnb3JpZXMuPC9wPg0KPHA+Q2F0YWxvZyBDYXRlZ29yaWVzIGhhdmUgYSBudW1iZXIgb2Ygc2V0dGluZ3MgdG8gZGV0ZXJtaW5lIGhvdyB0aGV5IHNob3VsZCBkaXNwbGF5IHRoZSBJdGVtcyBhbmQgQ2F0ZWdvcmllcyB0aGV5IGNvbnRhaW46IGlmIHlvdSBsb29rIGF0IHRoZSAmcXVvdDtPcHRpb25zJnF1b3Q7IHRhYiwgeW91IGNhbiBjaG9vc2UgaG93IG1hbnkgaXRlbXMgYW5kL29yIGNhdGVnb3JpZXMgdG8gc2hvdywgd2hhdCBvcmRlciB0byBzaG93IHRoZW0gaW4sIHdoZXRoZXIgdG8gZGlzcGxheSBvbmx5IGl0ZW1zIG9yIG9ubHkgY2F0ZWdvcmllcyBvciBib3RoLCBhbmQgaG93IG1hbnkgbGV2ZWxzIG9mIHRoZSBoaWVyYXJjaHkgdG8gZGlzcGxheSBiZWxvdyB0aGUgY2F0ZWdvcnkgcGFnZS48L3A+DQo8cD5Gb3IgZXhhbXBsZSwgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6PC9wPg0KPG9sPg0KCTxsaT48Yj5IYXRzPC9iPg0KCQk8b2w+DQoJCQk8bGk+PGI+RmFzaGlvbjwvYj4NCgkJCSAJPG9sPg0KCQkJIAkJPGxpPkZlYXRoZXJlZCBIYXQ8L2xpPjxsaT5GZWRvcmEgPC9saT48bGk+QmFzZWJhbGwgSGF0PC9saT4NCgkJCSAJPC9vbD4NCgkJCSA8L2xpPg0KCQkgCTxsaT48Yj5Xb3JrIEhhdHM8L2I+DQoJCSAgICAJPG9sPg0KCQkgICAgCQk8bGk+SGFyZCBIYXQ8L2xpPjxsaT5EaXZpbmcgSGVsbWV0PC9saT4NCgkJICAgIAk8L29sPg0KCQkgICAgPC9saT4NCgkJPC9vbD4NCgk8L2xpPg0KPC9vbD4NCjxwPkluIHRoaXMgZGlhZ3JhbSwgYm9sZGVkIGl0ZW1zIGFyZSBDYXRhbG9nIENhdGVnb3JpZXMsIGFuZCBub24tYm9sZGVkIGl0ZW1zIGFyZSBDYXRhbG9nIEl0ZW1zLiBEZXBlbmRpbmcgdXBvbiBob3cgeW91IHNldCB5b3VyIG9wdGlvbnMsIHRoZSBIYXRzIENhdGVnb3J5IFBhZ2UgY2FuIHNob3cgb25seSBlbnRyaWVzIGZvciB0aGUgRmFzaGlvbiBhbmQgV29yayBIYXRzIENhdGVnb3J5IFBhZ2VzLCBvciBpdCBjYW4gc2hvdyBlbnRyaWVzIGZvciBGYXNoaW9uLCBXb3JrIEhhdHMsIGFuZCBhbGwgdGhlIGhhdHMgbGlzdGVkIGJlbG93IHRoZW0uPC9wPg0KPHA+WW91IGNhbiBvcHQgdG8gc2hvdyB0aGUgaXRlbXMgaW4gJnF1b3Q7bmF0dXJhbCZxdW90OyBvcmRlciAoaS5lLiwgdGhlIG9yZGVyIHRoZSBJdGVtcyBzaG93IHVwIGluIHRoZSBDTVMgQ29udGVudCBIaWVyYXJjaHkpLCBvciBpbiBhbHBoYWJldGljYWwgb3JkZXIuPC9QPg0KPHA+SWYgeW91IGhhdmUgbGFyZ2UgbnVtYmVycyBvZiBpdGVtcyBpbiBhIENhdGVnb3J5LCB5b3UgY2FuIHNldCB0aGUgbWF4aW11bSBudW1iZXIgdG8gYmUgZGlzcGxheWVkIGluIGEgQ2F0ZWdvcnkgUGFnZSwgYW5kIHRoZSBwYWdlIHdpbGwgYXV0b21hdGljYWxseSBjcmVhdGUgbGlua3MgdG8gbmF2aWdhdGUgdGhyb3VnaCB0aGUgbGlzdC48L3A+DQo8cD5FYWNoIENhdGVnb3J5IHBhZ2UgY2FuIGhhdmUgZGlmZmVyZW50IHNldHRpbmdzIGZvciBzb3J0IG9yZGVyLCBsZXZlbHMgdG8gZGlzcGxheSwgYW5kIG51bWJlciBvZiBpdGVtcy4gWW91IGNhbiBzZXQgdGhlIGRlZmF1bHQgZm9yIHRoZXNlIHZhbHVlcyBpbiBFeHRlbnNpb25zID4gQ2F0YWxvZ2VyID4gTWFuYWdlIFByZWZlcmVuY2VzLiBJZiwgYXQgYSBsYXRlciBkYXRlLCB5b3Ugd2lzaCB0byBjaGFuZ2Ugc29tZSBzZXR0aW5nIG9uIGFsbCBvZiB5b3VyIENhdGVnb3J5IHBhZ2VzLCB5b3UgY2FuIGdvIGludG8gRXh0ZW5zaW9ucyA+IENhdGFsb2dlciA+IEdsb2JhbCBDYXRhbG9nIE9wdGlvbnMsIGFuZCBtYWtlIHRob3NlIGNoYW5nZXMuPC9wPg0KPGg0PkltYWdlczwvaDQ+DQo8cD5DYXRhbG9nZXIgYWxsb3dzIHlvdSB0byBzZWxlY3QgZGlmZmVyZW50IHNpemUgaW1hZ2VzIGZvciBJdGVtIHBhZ2VzLCBDYXRlZ29yeSBwYWdlcywgYW5kIHRoZSBQcmludGFibGUgQ2F0YWxvZy4gWW91IGNhbiBzZXQgdGhlc2UgZGVmYXVsdHMgaW4gRXh0ZW5zaW9ucyA+IENhdGFsb2dlciA+IE1hbmFnZSBQcmVmZXJlbmNlcy48L3A+DQo8cD5XaGVuIHlvdSB1cGxvYWQgaW1hZ2VzLCB0aGUgb3JpZ2luYWwgaXMgc3RvcmVkLiBXaGVuIHNvbWVvbmUgdmlzaXRzIGEgcGFnZSwgdGhlIHJlZHVjZWQgc2l6ZSBpbWFnZXMgYXJlIHJlcXVlc3RlZCB1c2luZyBhIHNwZWNpYWwgVVJMLCB3aGljaCB3aWxsIHJlZGlyZWN0IHRoZSB1c2VyJiMwMzk7cyBicm93c2VyIHRvIHRoZSBzY2FsZWQgaW1hZ2UgaWYgaXQgZXhpc3RzLCBhbmQgY3JlYXRpbmcgdGhlIHNjYWxlZCBpbWFnZSBpZiBpdCBkb2VzbiYjMDM5O3QuIFRoaXMgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgaW1hZ2VzLCB3aXRob3V0IGhhdmluZyB0byByZS11cGxvYWQgYWxsIHRoZSBpbWFnZXMsIG9yIHJlc2NhbGluZyB0aGVtIGFsbCBhdCBvbmNlLjwvcD4NCjxwPlRoaXMgaW1hZ2UgcmVzY2FsaW5nIGNvZGUgcmVxdWlyZXMgdGhhdCB5b3UgaGF2ZSBlaXRoZXIgSW1hZ2VNYWdpY2sgb3IgR0QgbGliIGluc3RhbGxlZCwgYW5kIGNvbmZpZ3VyZWQgaW4geW91ciBDTVMgTWFkZSBTaW1wbGUgY29uZmlnLnBocC48L3A+DQo8aDM+RmVhdHVyZSBMaXN0czwvaDM+DQo8cD5Zb3UgY2FuLCBhcyBvZiB2ZXJzaW9uIDAuNCwgaGF2ZSAmcXVvdDtmZWF0dXJlIGxpc3RzJnF1b3Q7IHdoaWNoIGFyZSB0aGUgPGk+bjwvaT4gbW9zdC1yZWNlbnRseSBhZGRlZCBjYXRhbG9nIGl0ZW1zLCBvciBhIGNvbGxlY3Rpb24gb2YgPGk+azwvaT4gcmFuZG9tIGl0ZW1zIGZyb20gdGhlIGNhdGFsb2cuPC9wPg0KPGg0PiZxdW90O0FsbCZxdW90OyBGZWF0dXJlIExpc3Q8L2g0Pg0KPHA+VG8gZ2V0IGEgbGlzdCBvZiBhbGwgY2F0YWxvZyBpdGVtcyAob3B0aW9uYWxseSB1bmRlciBhIHNwZWNpZmllZCBwYXJ0IG9mIHlvdXIgaGllcmFyY2h5KSBmb3IgcHJvY2Vzc2luZyB2aWEgYSB0ZW1wbGF0ZSwgeW91IGNhbiB1c2UNCnRoZSAmcXVvdDthbGwmcXVvdDsgZmVhdHVyZSBsaXN0LjwvcD4NCjxwPlRoZSBzeW50YXggZm9yIGFuICZxdW90O2FsbCZxdW90OyBsaXN0IGlzIGxpa2U6PC9wPg0KPHA+e2Ntc19tb2R1bGUgbW9kdWxlPSYjMDM5O0NhdGFsb2dlciYjMDM5OyBhY3Rpb249JiMwMzk7YWxsJiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTt9LCB3aGVyZSBzdWJfdGVtcGxhdGUgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGxpc3QuDQpUaGVyZSBpcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIsIGFsaWFzPSYjMDM5O3BhZ2VfYWxpYXMmIzAzOTssIHdoZXJlIHBhZ2VfYWxpYXMgaW5kaWNhdGVzIHRoZSB0b3Agb2YgdGhlIHRyZWUgKGUuZy4sIGEgcGxhY2UgaW4geW91ciBtZW51DQpoaWVyYXJjaHksIHR5cGljYWxseSBhIGNhdGVnb3J5IHBhZ2UpIGluIHdoaWNoIHRvIGxvb2sgZm9yIG5ldyBpdGVtcy4gQSBzcGVjaWFsIHZhbHVlIGZvciAmcXVvdDtwYWdlX2FsaWFzJnF1b3Q7IGlzICZxdW90Oy8mcXVvdDssIHdoaWNoIG1lYW5zIHRvDQpzdGFydCBhdCB0aGUgcm9vdC48L3A+DQo8cD5UaGlzIGlzIHVzZWZ1bCBmb3IgY2F0YWxvZy13aWRlIG9wZXJhdGlvbnMuIEZvciBleGFtcGxlLCB0byBnZXQgYSBsaXN0IG9mIGFsbCBjYXRlZ29yaWVzIChhbmQgZG8gc29tZXRoaW5nIHdpdGggdGhlbSksDQp5b3UgY291bGQgdXNlIHRoZSB0YWcge2Ntc19tb2R1bGUgbW9kdWxlPSYjMDM5O0NhdGFsb2dlciYjMDM5OyBhY3Rpb249JiMwMzk7YWxsJiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTsgYWxpYXM9JiMwMzk7LyYjMDM5OyByZWN1cnNlPSYjMDM5O2NhdGVnb3JpZXNfYWxsJiMwMzk7fS4gWW91ciB0ZW1wbGF0ZSBjb3VsZCB0aGVuIHRocm93DQp0aG9zZSBjYXRlZ29yaWVzIGludG8gYSBwdWxsZG93biBtZW51IHRoYXQgcmVkaXJlY3RlZCB5b3UgdG8gdGhhdCBjYXRlZ29yeSYjMDM5O3MgcGFnZSwgZm9yIGV4YW1wbGU6PC9wPg0KPHByZT4NCjxzZWxlY3QgbmFtZT0mcXVvdDtmb28mcXVvdDsgb25jaGFuZ2U9JnF1b3Q7ZG9jdW1lbnQubG9jYXRpb249dGhpcy5vcHRpb25zW3RoaXMuc2VsZWN0ZWRJbmRleF0udmFsdWU7JnF1b3Q7Pg0KPG9wdGlvbiB2YWx1ZT0mcXVvdDsmcXVvdDs+U2VsZWN0IEEgdGFyZ2V0PC9vcHRpb24+DQp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPXRoaXNvbmV9DQogICA8b3B0aW9uIHZhbHVlPSZxdW90O3skdGhpc29uZS5saW5rfSZxdW90Oz57JHRoaXNvbmUudGl0bGV9PC9vcHRpb24+DQp7L2ZvcmVhY2h9DQo8L3NlbGVjdD4NCjwvcHJlPg0KPHA+SWYgeW91IHdhbnRlZCB0aGF0IHRvIG9ubHkgc2hvdyBjYXRlZ29yaWVzIHRoYXQgd2VyZSBpbiB0aGUgdmVyeSB0b3AgbGV2ZWwgb2YgeW91ciBoZWlyYXJjaHksIHlvdSYjMDM5O2QgcmVwbGFjZSB0aGUgcmVjdXJzZT0mIzAzOTtjYXRlZ29yaWVzX2FsbCYjMDM5OyB3aXRoDQpyZWN1cnNlPSYjMDM5O2NhdGVnb3JpZXNfb25lJiMwMzk7LiBPciBpZiB5b3Ugd2FudGVkIGl0IHRvIGJlIGFsbCBjYXRhbG9nIEl0ZW1zIGluc3RlYWQgb2YgY2F0ZWdvcmllcywgeW91IGNvdWxkIHVzZSBhIHRhZyBsaWtlOg0Ke2Ntc19tb2R1bGUgbW9kdWxlPSYjMDM5O0NhdGFsb2dlciYjMDM5OyBhY3Rpb249JiMwMzk7YWxsJiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTsgYWxpYXM9JiMwMzk7LyYjMDM5OyByZWN1cnNlPSYjMDM5O2l0ZW1zX2FsbCYjMDM5O30NCjxwPlNpbWlsYXJseSwgeW91IGNvdWxkIGhhdmUgaXQgbGlzdCBvbmx5IGNhdGVnb3JpZXMgdW5kZXIgdGhlIGN1cnJlbnQgcGFnZSAoYnkgb21pdHRpbmcgdGhlICZxdW90O2FsaWFzPSYjMDM5Oy8mIzAzOTsmcXVvdDspLiBUaGUgY29tYmluYXRpb25zIGFyZSBiYXNpY2FsbHkgbGltaXRsZXNzITwvcD4NCjxwPkFsbCBzdXBwb3J0ZWQgdmFsdWVzIG9mIHJlY3Vyc2UgaW5jbHVkZTo8dWw+DQo8bGk+aXRlbXNfb25lIC0gQ2F0YWxvZyBpdGVtcywgbm8gbW9yZSB0aGFuIG9uZSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KPGxpPml0ZW1zX2FsbCAtIENhdGFsb2cgaXRlbXMsIGF0IGFueSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KPGxpPmNhdGVnb3JpZXNfb25lIC0gQ2F0ZWdvcmllcywgbm8gbW9yZSB0aGFuIG9uZSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KPGxpPmNhdGVnb3JpZXNfYWxsIC0gQ2F0ZWdvcmllcywgYXQgYW55IGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQo8bGk+bWl4ZWRfb25lIC0gQ2F0YWxvZyBpdGVtcyBhbmQgQ2F0ZWdvcmllcywgbm8gbW9yZSB0aGFuIG9uZSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KPGxpPm1peGVkX2FsbCAtIENhdGFsb2cgaXRlbXMgYW5kIENhdGVnb3JpZXMsIGF0IGFueSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KPC91bD4NCjwvcD4NCjxoND5SZWNlbnRseSBBZGRlZCBGZWF0dXJlIExpc3Q8L2g0Pg0KPHA+VG8gdXNlIGEgJnF1b3Q7bW9zdC1yZWNlbnRseSBhZGRlZCZxdW90OyBsaXN0IHdpbGwgYWxsb3cgeW91IHRvIGRpc3BsYXkgdGhlIG1vc3QgcmVjZW50bHktYWRkZWQgY2F0YWxvZyBpdGVtcyB1bmRlciBhIHNwZWNpZmllZCBwYXJ0IG9mIHlvdXIgaGllcmFyY2h5LjwvcD4NCjxwPlRoZSBzeW50YXggZm9yIGEgJnF1b3Q7bW9zdCByZWNlbnRseSBhZGRlZCZxdW90OyBsaXN0IGlzIGxpa2U6PC9wPg0KPHA+e2Ntc19tb2R1bGUgbW9kdWxlPSYjMDM5O0NhdGFsb2dlciYjMDM5OyBhY3Rpb249JiMwMzk7cmVjZW50JiMwMzk7IHN1Yl90ZW1wbGF0ZT0mIzAzOTtteV9zdWJfdGVtcGxhdGUmIzAzOTt9LCB3aGVyZSBzdWJfdGVtcGxhdGUgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGxpc3QuIFRoZXJlIGFyZSB0d28gb3B0aW9uYWwgcGFyYW1ldGVycywgY291bnQ9JiMwMzk7MyYjMDM5OyBhbGlhcz0mIzAzOTtwYWdlX2FsaWFzJiMwMzk7LCB3aGVyZSBjb3VudCBpcyB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRvIGluY2x1ZGUsIGFuZCBwYWdlX2FsaWFzIGluZGljYXRlcyB0aGUgdG9wIG9mIHRoZSB0cmVlIChlLmcuLCBhIHBsYWNlIGluIHlvdXIgbWVudSBoaWVyYXJjaHksIHR5cGljYWxseSBhIGNhdGVnb3J5IHBhZ2UpIGluIHdoaWNoIHRvIGxvb2sgZm9yIG5ldyBpdGVtcy4gQSBzcGVjaWFsIHZhbHVlIGZvciAmcXVvdDtwYWdlX2FsaWFzJnF1b3Q7IGlzICZxdW90Oy8mcXVvdDssIHdoaWNoIG1lYW5zIHRvIHVzZSA8aT5hbGw8L2k+IHBhZ2VzIGluIHRoZSBzaXRlLjwvcD4NCjxoND5SYW5kb20gSXRlbXMgRmVhdHVyZSBMaXN0PC9oND4NCjxwPlRoZSBzeW50YXggZm9yIGEgJnF1b3Q7cmFuZG9tJnF1b3Q7IGxpc3QgaXMgbGlrZTo8L3A+DQo8cD57Y21zX21vZHVsZSBtb2R1bGU9JiMwMzk7Q2F0YWxvZ2VyJiMwMzk7IGFjdGlvbj0mIzAzOTtyYW5kb20mIzAzOTsgc3ViX3RlbXBsYXRlPSYjMDM5O215X3N1Yl90ZW1wbGF0ZSYjMDM5O30sIHdoZXJlIHN1Yl90ZW1wbGF0ZSBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgbGlzdC4gVGhlcmUgYXJlIHR3byBvcHRpb25hbCBwYXJhbWV0ZXJzLCBjb3VudD0mIzAzOTszJiMwMzk7IGFsaWFzPSYjMDM5O3BhZ2VfYWxpYXMmIzAzOTssIHdoZXJlIGNvdW50IGlzIHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gaW5jbHVkZSwgYW5kIHBhZ2VfYWxpYXMgaW5kaWNhdGVzIHRoZSB0b3Agb2YgdGhlIHRyZWUgKGUuZy4sIGEgcGxhY2UgaW4geW91ciBtZW51IGhpZXJhcmNoeSwgdHlwaWNhbGx5IGEgY2F0ZWdvcnkgcGFnZSkgaW4gd2hpY2ggdG8gbG9vayBmb3IgbmV3IGl0ZW1zLiBBIHNwZWNpYWwgdmFsdWUgZm9yICZxdW90O3BhZ2VfYWxpYXMmcXVvdDsgaXMgJnF1b3Q7LyZxdW90Oywgd2hpY2ggbWVhbnMgdG8gdXNlIDxpPmFsbDwvaT4gcGFnZXMgaW4gdGhlIHNpdGUuPC9wPg0KPGg0PlZhcmlhYmxlPC9oND4NCjxwPllvdSBjYW4gZ3JhYiB2YXJpYWJsZXMgKGF0dHJpYnV0ZXMpIG91dHNpZGUgb2YgeW91ciBDYXRhbG9nZXIgdGVtcGxhdGVzLCBzYXkgaW4gYSBnbG9iYWwgY29udGVudCBibG9jaywgdXNpbmcgdGhlIHZhcmlhYmxlIG1ldGhvZC4gVGhlIHN5bnRheCBsb29rcyBsaWtlOjwvcD4NCjxwPntjbXNfbW9kdWxlIG1vZHVsZT0mIzAzOTtDYXRhbG9nZXImIzAzOTsgYWN0aW9uPSYjMDM5O3ZhcmlhYmxlJiMwMzk7IG5hbWU9JiMwMzk7aXRlbW5vdGVzJiMwMzk7IGRlZmF1bHQ9JiMwMzk7bm8gbm90ZXMmIzAzOTt9LCB3aGVyZSBuYW1lIGlzIHRoZSBhdHRyaWJ1dGUgdG8gZGlzcGxheSAodXNpbmcgdGhlIHNhbWUgYWxsIGxvd2VyLWNhc2UsIHB1bmN0dWF0aW9uLWZyZWUgcmVwcmVzZW50YXRpb24gbGlrZSB0aGUgc21hcnR5IHRlbXBsYXRlIHZhcmlhYmxlcyksIGFuZCBkZWZhdWx0IGlzIHRoZSB2YWx1ZSB0byB1c2UgaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgZGVmaW5lZC48L3A+DQo8aDM+Q3VzdG9taXphdGlvbiBhbmQgQWR2YW5jZWQgVG9waWNzPC9oMz4NCjxoND5DYXRhbG9nIEl0ZW0gQXR0cmlidXRlczwvaDQ+DQo8cD5UaGUgZGVmYXVsdCBpdGVtIGF0dHJpYnV0ZXMgYXJlIHR5cGljYWwgZm9yIGEgY2F0YWxvZyBvZiBwcm9kdWN0cyBvciBhcnR3b3JrcywgYnV0IGJ5IGdvaW5nIGludG8gRXh0ZW5zaW9ucyA+IENhdGFsb2dlciA+IE1hbmFnZSBVc2VyLURlZmluZWQgQXR0cmlidXRlcywgeW91IGNhbiBjaGFuZ2UgdGhlIGF0dHJpYnV0ZXMuIEl0JiMwMzk7cyBiZXN0IHRvIGRlZmluZSB0aGUgYXR0cmlidXRlcyBiZWZvcmUgeW91IHN0YXJ0IGVudGVyaW5nIENhdGFsb2cgSXRlbXMuPC9wPg0KPHA+Tm90ZSB0aGF0IHRoZSBhdHRyaWJ1dGVzIHlvdSBkZWZpbmUgbWF5IG5lZWQgdG8gYmUgYWRkZWQgdG8gdGhlIHRlbXBsYXRlIHRoYXQgeW91JiMwMzk7cmUgdXNpbmcgdG8gZGlzcGxheSBDYXRhbG9nIEl0ZW1zIC0tIHNlZSBDdXN0b20gVGVtcGxhdGVzIGJlbG93LjwvcD4NCjxoND5DYXRhbG9nIENhdGVnb3J5IEF0dHJpYnV0ZXM8L2g0Pg0KPHA+U2ltaWxhcmx5LCB5b3UgY2FuIHNldCBhdHRyaWJ1dGVzIGZvciBDYXRlZ29yaWVzLiBBZ2FpbiwgdGhlIGF0dHJpYnV0ZXMgeW91IGRlZmluZSBtYXkgbmVlZCB0byBiZSBhZGRlZCB0byB0aGUgdGVtcGxhdGUgdGhhdCB5b3UmIzAzOTtyZSB1c2luZyB0byBkaXNwbGF5IENhdGFsb2cgQ2F0ZWdvcmllcyAtLSBzZWUgQ3VzdG9tIFRlbXBsYXRlcyBiZWxvdy48L3A+DQo8aDQ+UHJpbnRhYmxlIENhdGFsb2cgQXR0cmlidXRlczwvaDQ+DQo8cD5MaWtld2lzZSwgeW91IGNhbiBzZXQgYXR0cmlidXRlcyBmb3IgUHJpbnRhYmxlIENhdGFsb2dzLiBBZ2FpbiwgdGhlIGF0dHJpYnV0ZXMgeW91IGRlZmluZSBtYXkgbmVlZCB0byBiZSBhZGRlZCB0byB0aGUgdGVtcGxhdGUgdGhhdCB5b3UmIzAzOTtyZSB1c2luZyB0byBkaXNwbGF5IHlvdXIgUHJpbnRhYmxlIENhdGFsb2cgLS0gc2VlIEN1c3RvbSBUZW1wbGF0ZXMgYmVsb3cuPC9wPg0KPGg0PkN1c3RvbSBUZW1wbGF0ZXM8L2g0Pg0KPHA+SWYgeW91JiMwMzk7cmUgd2lsbGluZyB0byBtZXNzIGFyb3VuZCB3aXRoIFNtYXJ0eSBUZW1wbGF0ZXMsIHlvdSBjYW4gY2hhbmdlIHRoZSBsYXlvdXQgb2YgYW55IG9mIHRoZSBwYWdlcyBnZW5lcmF0ZWQgYnkgQ2F0YWxvZ2VyLiBUaGlzIHNob3VsZCBtYWtlIGNlcnRhaW4gZGV2ZWxvcGVycyB2ZXJ5IGhhcHB5LCBldmVuIGlmIHRoZSBpbmVmZmljaWVuY3kgb2YgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgd2lsbCBub3QuIFRoZXJlIGFyZSBmb3VyIGtpbmRzIG9mIHRlbXBsYXRlczogb25lIGtpbmQgZm9yIENhdGFsb2cgSXRlbXMsIG9uZSBraW5kIGZvciBDYXRhbG9nIENhdGVnb3JpZXMsIGFuZCBvbmUga2luZCBmb3IgUHJpbnRhYmxlIENhdGFsb2dzLCBhbmQgb25lIGtpbmQgZm9yICZxdW90O0ZlYXR1cmUmcXVvdDsgbGlzdHMsIHN1Y2ggYXMgcmVjZW50bHkgYWRkZWQgaXRlbXMgb3IgcmFuZG9tIHNlbGVjdGlvbnMuPC9wPg0KPHA+V2hlbiBlZGl0aW5nIGEgVGVtcGxhdGUsIHRoZSBhZG1pbiBzY3JlZW4gd2lsbCBkaXNwbGF5IGEgbGlzdCBvZiBTbWFydHkgdGFncyBhdmFpbGFibGUgdG8geW91IGZvciB0aGF0IGtpbmQgb2YgdGVtcGxhdGUuIFRoaXMNCndpbGwgb25seSBoYXBwZW4gb25jZSB0aGUgbW9kdWxlIGtub3dzIHdoYXQga2luZCBvZiB0ZW1wbGF0ZSB5b3UmIzAzOTtyZSBlZGl0aW5nLCBzbyB3aGVuIHlvdSBmaXJzdCBjcmVhdGUgdGhlIHRlbXBsYXRlLCBpdCBkaXNwbGF5cyBhbGwNCnRoZSBTbWFydHkgdGFncyBpdCBrbm93cyBhYm91dCwgb25seSBzb21lIG9mIHdoaWNoIGJlaW5nIGFwcGxpY2FibGUuPC9wPg0KPGg0PlNtYXJ0eSB0YWdzIGluIEF0dHJpYnV0ZXM8L2g0Pg0KPHA+U29tZXRpbWVzLCB5b3UmIzAzOTtsbCB3YW50IHRoZSBkZXNjcmlwdGlvbnMgb2YgeW91ciBpdGVtcyB0byBpbmNsdWRlIHNtYXJ0eSB0YWdzIChlLmcuLCBjbXNfc2VsZmxpbmspLiBUbyBtYWtlIHRoYXQgd29yaywgeW91JiMwMzk7bGwgbmVlZCB0bw0KdXBkYXRlIHlvdXIgdGVtcGxhdGUuIEZvciB0aGUgYXR0cmlidXRlcyB3aGVyZSB5b3Ugd2FudCBzbWFydHkgdGFncyB0byBiZSBhY3RpdmUsIHlvdSYjMDM5O2xsIG5lZWQgdG8gbmVzdCB0aGUgc21hcnR5IGV2YWx1YXRpb25zIGluIHlvdXIgdGVtcGxhdGUuIEZvciBleGFtcGxlOjwvcD4NCjxwcmU+DQp7ZXZhbCB2YXI9JGF0dHJsaXN0W2F0XS5rZXl9DQo8L3ByZT4NCjxwPmJlY29tZXM6PC9wPg0KPHByZT4NCntldmFsIHZhcj0kZW50cnktPmlucHV0IGFzc2lnbj10aGlzQXR0cn17ZXZhbCB2YXI9JHRoaXNBdHRyfQ0KPC9wcmU+DQo8cD5VZ2x5PyBZdXAuIEJ1dCBpdCB3b3Jrcy48L3A+DQo8aDM+Q2F0YWxvZ2VyIEltYWdlIFN5c3RlbTwvaDM+DQo8cD5DYXRhbG9nZXIgaGFzIGFuIGltYWdlIHN5c3RlbSB0aGF0IHdpbGwgYWxsb3cgeW91IHRvIGR5bmFtaWNhbGx5IGNoYW5nZSB0aGUgaW1hZ2UgZGlzcGxheSBzaXplLiBJZiB5b3UgZG8gbm90IGxpa2UgaXQsIHlvdSBjYW4gYWx0ZXINCnRoZSB0ZW1wbGF0ZXMgYW5kIHVzZSBhbnkgaW1hZ2Ugc3lzdGVtIHlvdSB3YW50LjwvcD4NCjxwPldoZW4geW91IHVwbG9hZCBhbiBpbWFnZSB1c2luZyBDYXRhbG9nZXIsIGl0IGdldHMgcHV0IGluIGEgc3BlY2lhbCBzZXQgb2YgZGlyZWN0b3JpZXMgdG8gbWFrZSB0aGUgaW1hZ2luZyBlYXNpZXIuIFlvdSB3aWxsIHNlZSBtb3JlDQphYm91dCB0aGlzIGxhdGVyLjwvcD4NCjxwPkl0IHdvcmtzIGJ5IGNhbGxpbmcgYSBQSFAgcHJvZ3JhbSBpbnN0ZWFkIG9mIGRpcmVjdGx5IHJlZmVyZW5jaW5nIHRoZSBpbWFnZS4gVGhlIHByb2dyYW0gdXNlcyB0aGUgZmlsZW5hbWUgdG8gc2VlIGlmIHRoZQ0KaW1hZ2UgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGNvcnJlY3Qgc2l6ZS4gSWYgc28sIGl0IHJlZGlyZWN0cyB0byB0aGF0IGltYWdlLiBPdGhlcndpc2UsIGl0IHVzZXMgeW91ciBHRExJQiBvciBJbWFnZU1hZ2ljayB0byBjcmVhdGUNCnRoZSBpbWFnZSBpbiB0aGUgY29ycmVjdCBzaXplLCBhbmQgdGhlbiByZWRpcmVjdHMgdG8gaXQuDQo8L3A+DQo8aDQ+Q2F0YWxvZ2VyIEltYWdlIEZpbGVzcGVjIEV4cGxhbmF0aW9uPC9oND4NCjxwPkEgY2F0YWxvZ2VyIGltYWdlIGhhcyBhIGZpbGVzcGVjIGxpa2U6DQo8YnIgLz4NCnJvb3RfcGF0aC9tb2R1bGVzL0NhdGFsb2dlci9DYXRhbG9nZXIuSW1hZ2UucGhwP2k9aXRlbW5hbWVfZl8xXzQwMF8xLmpwZyZhbXA7YWM9ODI4ODgNCjwvcD4NCjxwPlRoZSBpbnRlcmVzdGluZyB0aGluZyBpcyAmcXVvdDtpdGVtbmFtZV9mXzFfNDAwXzEuanBnJnF1b3Q7IC0gdGhlIHN0dWZmIGJlZm9yZSBpcyBqdXN0IGEgY2FsbCB0byB0aGUgcHJvZ3JhbSwgYW5kIHRoZSAmYW1wO2FjPTgyODg4IGlzIGEgcmFuZG9tIHRoaW5nIHRoYXQNCmlzIGRlc2lnbmVkIHRvIHByZXZlbnQgYnJvd3NlciBjYWNoaW5nLiBTbyBleGFtaW5pbmcgdGhlIG5hbWUgcGllY2UgYnkgcGllY2UgKHNlcGFyYXRpbmcgYXQgdGhlIHVuZGVyc2NvcmVzKSwgd2UgaGF2ZTo8L3A+DQo8dWw+DQo8bGk+aXRlbSBuYW1lIC0gdGhpcyBpcyB0aGUgYWxpYXMgb2YgdGhlIGl0ZW0vY2F0ZWdvcnkgcGFnZSBjb250YWluaW5nIHRoZSBpbWFnZS48L2xpPg0KPGxpPmltYWdlIHR5cGUgLSB0aGlzIGlzIGEgZGVzaWduYXRpb24gZm9yIGltYWdlIHR5cGU6PHVsPg0KPGxpPmYgLSBpdGVtIGZ1bGwtc2l6ZSBpbWFnZTwvbGk+DQo8bGk+dCAtIGl0ZW0gdGh1bWJuYWlsPC9saT4NCjxsaT5jZiAtIGNhdGVnb3J5IGZ1bGwtc2l6ZWQgaW1hZ2U8L2xpPg0KPGxpPmN0IC0gY2F0ZWdvcnkgdGh1bWJuYWlsPC9saT4NCjxsaT5jdGYgLSBwcmludGFibGUgY2F0YWxvZyBmdWxsLXNpemVkIGltYWdlPC9saT4NCjwvdWw+DQo8L2xpPg0KPGxpPmltYWdlIG51bWJlciAtIHNvIGEgZ2l2ZW4gaXRlbS9jYXRhbG9nL2V0YyBjYW4gaGF2ZSBtdWx0aXBsZSBpbWFnZXM8L2xpPg0KPGxpPmxvbmcgZGltZW5zaW9uIC0gbG9uZyBkaW1lbnNpb24gb2YgdGhlIGltYWdlLCBpbiBwaXhlbHM8L2xpPg0KPGxpPm1pc3NpbmcgZmxhZyAtIDEgaWYgeW91IHdhbnQgdG8gc2hvdyBhbiAmcXVvdDtpbWFnZSBtaXNzaW5nJnF1b3Q7IGltYWdlIGlmIHRoaXMgaW1hZ2UgZG9lc24mIzAzOTt0IGV4aXN0LCAwIG90aGVyd2lzZTwvbGk+DQo8L3VsPg0KPHA+DQpUaGlzIHdpbGwgdGFrZSBhbiBpbWFnZSBpbiByb290X3BhdGgvdXBsb2Fkcy9pbWFnZXMvY2F0YWxvZ19zcmMvaXRlbW5hbWVfc3JjXzENCjwvcD4NCjxoMz5DcmVkaXRzPC9oMz4NCjxwPlRoYW5rcyB0byA8YSBocmVmPSJodHRwOi8vd3d3LmlkLWEuY28udWsiPlBhdWwgQ29vcGVyPC9hPiBmb3Igc3BvbnNvcmluZyB0aGUgZGV2ZWxvcG1lbnQgb2YgdGV4dGFyZWEgYXR0cmlidXRlcy48L3A+DQo8cD5UaGFua3MgdG8gbnVtZXJvdXMgcGF0aWVudCB1c2VycyBhbmQgYnVnIHRlc3RlcnMgKG1hbnkgb2Ygd2hvbSBoYWQgbm8gaWRlYSB3aGF0IHRoZXkgd2VyZSBnZXR0aW5nIGludG8uKTwvcD4gDQo8aDM+U3VwcG9ydDwvaDM+DQo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+DQo8dWw+DQo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgQ01TIE1hZGUgU2ltcGxlICA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnIj5EZXZlbG9wZXIgRm9yZ2U8L2E+LjwvbGk+DQo8bGk+VG8gb2J0YWluIGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHNlbmQgYW4gZW1haWwgdG8gdGhlIGF1dGhvciBhdCA8YSBocmVmPSJtYWlsdG86c2pnQGNtc21vZHVsZXMuY29tIj48c2pnQGNtc21vZHVsZXMuY29tPjwvYT4uPC9saT4NCjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjxsaT5UaGUgYXV0aG9yIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkgYW5kIGdyb3ZlbGxpbmcgZm9yIGZyZWUgc3VwcG9ydC48L2xpPg0KPC91bD4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dA0Kb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDgsIFNhbXVlbCBHb2xkc3RlaW4gPGEgaHJlZj0ibWFpbHRvOnNqZ0BjbXNtb2R1bGVzLmNvbSI+PHNqZ0BjbXNtb2R1bGVzLmNvbT48L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ01ha2Ugc3VyZSB0byBzZXQgdGhlICZxdW90O01vZGlmeSBDYXRhbG9nIFNldHRpbmdzJnF1b3Q7IHBlcm1pc3Npb24gb24gdXNlcnMgd2hvIHdpbGwgYmUgYWRtaW5pc3RlcmluZyB0aGUgY2F0YWxvZy4nOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4yNjY0MjIzNjQuMTM0MjgyODk3NC4xMzQyODI4OTc0LjEzNDI4MjkwNjcuMic7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzLjEyLjEwLjEzNDI4MjkwNjcnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEzNDI4MjkwNjcuMi4yLnV0bWNzcj1mZWVkYnVybmVyfHV0bWNjbj1GZWVkOiBjbXNtYWRlc2ltcGxlL2Jsb2cgKENNUyBNYWRlIFNpbXBsZSl8dXRtY21kPWZlZWQnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.catAdminOps.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmNsYXNzIGNhdEFkbWluT3BzDQp7DQogICNBZG1pbiBDb25zb2xlIEZpZWxkcw0KICAjc3RhdGljIGZ1bmN0aW9uIA0KfQ0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CatalogCategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENhdGFsb2dlciAtIGJ1aWxkIGEgY2F0YWxvZyBvciBwb3J0Zm9saW8gb2Ygc3R1ZmYKIyBWZXJzaW9uOiAwLjEyCiMKIyBDb3B5cmlnaHQgKGMpIDIwMTIsIEZlcm5hbmRvIE1vcmdhZG8gKEpvTW9yZykgam9tb3JnLm1vcmdAZ21haWwuY29tCiMgQ29weXJpZ2h0IChjKSAyMDA2LCBTYW11ZWwgR29sZHN0ZWluIDxzamdAY21zbW9kdWxlcy5jb20+CiMgRm9yIEluZm9ybWF0aW9uLCBTdXBwb3J0LCBCdWcgUmVwb3J0cywgZXRjLCBwbGVhc2UgdmlzaXQgdGhlCiMgQ01TIE1hZGUgU2ltcGxlIEZvcmdlIGF0IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpjbGFzcyBDYXRhbG9nQ2F0ZWdvcnkgZXh0ZW5kcyBDb250ZW50CnsKICBjb25zdCBUQUJfQ0FUX09QVElPTlMgPSAnY2NfY2F0YWxvZ2VyX29wdGlvbnMnOwogIGNvbnN0IFRBQl9DQVRfSU1BR0VTID0gJ2NjX2NhdGFsb2dlcl9pbWFnZXMnOwogIHByaXZhdGUgJF9tb2Q7CiAgcHJpdmF0ZSAkYXR0cnM7CiAgcHJpdmF0ZSAkX2F0dHJfbGlzdCA9IGFycmF5KCk7CiAgcHJvdGVjdGVkICR2YWxpZGF0aW9uID0gRkFMU0U7CgogIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICB7CiAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7CiAgICAkdGhpcy0+bUNhY2hhYmxlID0gZmFsc2U7CiAgfQogIAogIGZ1bmN0aW9uIE1vZHVsZU5hbWUoKQogIHsKICAgIHJldHVybiAnQ2F0YWxvZ2VyJzsKICB9IAoKICBmdW5jdGlvbiBJc0NvcHlhYmxlKCkKICB7CiAgICByZXR1cm4gdHJ1ZTsKICB9CiAgCiAgZnVuY3Rpb24gSXNEZWZhdWx0UG9zc2libGUoKQogIHsKICAgIHJldHVybiBGQUxTRTsKICB9ICAKICAgIAogIGZ1bmN0aW9uIEZyaWVuZGx5TmFtZSgpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdjYXRlZ29yeV9wYWdlJyk7CiAgfQogIAogIGZ1bmN0aW9uIExhbmcoJGtleSkKICB7CiAgICByZXR1cm4gJHRoaXMtPmdldF9tb2QoKS0+TGFuZygka2V5KTsKICB9CiAgICAgICAgCiAgZnVuY3Rpb24gZ2V0X2xhbmcoJGtleSkKICB7CiAgICByZXR1cm4gJHRoaXMtPmdldF9tb2QoKS0+TGFuZygka2V5KTsKICB9CiAgCiAgZnVuY3Rpb24gZ2V0X21vZCgpCiAgewogICAgaWYoIGlzX251bGwoJHRoaXMtPl9tb2QpICkKICAgIHsKICAgICAgJHRoaXMtPl9tb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0NhdGFsb2dlcicpOwogICAgfQogICAgcmV0dXJuICR0aGlzLT5fbW9kOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uIEdldFRhYk5hbWVzKCkKICB7CiAgICAkbW9kID0gJHRoaXMtPmdldF9tb2QoKTsKICAgICRoYXNfaW1hZ2VzID0gKGJvb2wpJG1vZC0+R2V0UHJlZmVyZW5jZSgnY2F0ZWdvcnlfaW1hZ2VfY291bnQnLCAwKTsKICAgICRvdXQgPSBwYXJlbnQ6OkdldFRhYk5hbWVzKCk7CiAgICAKICAgIGlmKCBpc3NldCgkb3V0W3NlbGY6OlRBQl9DQVRfT1BUSU9OU10pICkgCiAgICB7CiAgICAgICRvdXRbc2VsZjo6VEFCX0NBVF9PUFRJT05TXSA9ICRtb2QtPmxhbmcoJ3RhYl9hZHZhbmNlZF9vcHRpb25zJyk7CiAgICB9CiAgICAKICAgIGlmKCBpc3NldCgkb3V0W3NlbGY6OlRBQl9DQVRfT1BUSU9OU10pICkgCiAgICB7CiAgICAgICRvdXRbc2VsZjo6VEFCX0NBVF9PUFRJT05TXSA9ICRtb2QtPmxhbmcoJ3RhYl9hZHZhbmNlZF9vcHRpb25zJyk7CiAgICB9CiAgICAKICAgIGlmKCBpc3NldCgkb3V0W3NlbGY6OlRBQl9DQVRfSU1BR0VTXSkgKQogICAgewogICAgICBpZigkaGFzX2ltYWdlcykKICAgICAgewogICAgICAgICRvdXRbc2VsZjo6VEFCX0NBVF9JTUFHRVNdID0gJG1vZC0+bGFuZygndGFiX2ltYWdlcycpOwogICAgICB9CiAgICAgICBlbHNlCiAgICAgIHsKICAgICAgICB1bnNldCgkb3V0W3NlbGY6OlRBQl9DQVRfSU1BR0VTXSk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiAkb3V0OwogIH0KICAKICBmdW5jdGlvbiBIYXNBdHRyaWJ1dGVzKCkKICB7CiAgICByZXR1cm4gaXNfYXJyYXkoJHRoaXMtPmF0dHJzKSAmJiAoY291bnQoJHRoaXMtPmF0dHJzKSA+IDApOwogIH0KICAKICBmdW5jdGlvbiBnZXRBdHRycygpCiAgewogICAgJHRoaXMtPmdldFVzZXJBdHRyaWJ1dGVzKCk7CiAgICByZXR1cm4gJHRoaXMtPmF0dHJzOwogIH0KICAKICBmdW5jdGlvbiBnZXRVc2VyQXR0cmlidXRlcygpCiAgewogICAgaWYoIGVtcHR5KCR0aGlzLT5hdHRycykgKSAKICAgIHsKICAgICAgJHRoaXMtPmF0dHJzID0gY2F0VXNlckRlZkF0dHJpYnV0ZXNPcHM6OmdldFVzZXJBdHRyaWJ1dGVzKCdjYXRhbG9nX2NhdF9hdHRycycpOwogICAgICAkdGhpcy0+X2F0dHJfbGlzdCA9IGFycmF5X2tleXMoJHRoaXMtPmF0dHJzKTsgCiAgICB9IAogIH0KICAKICAvLyB0byByZXZpc2l0Li4uIGNvcGllZCBmcm9tIGZldV9wcm90ZWN0ZWRfcGFnZQogIC8vIGl0cyBqdXN0IGEgaGFjayB0byBhdm9pZCBjYWNoaW5nIGlzc3Vlcy4uLiBidXQgbm90IHRoZSBiZXN0CiAgcHVibGljIGZ1bmN0aW9uIEdldE1vZGlmaWVkRGF0ZSgpCiAgewogICAgLy8gb24gZnJvbnRlbmQgcmVxdWVzdHMgdGhpcyB3aWxsIGZvcmNlIHRoZSB0ZW1wbGF0ZSB0byBiZSByZWNvbXBpbGVkCiAgICAvLyBhbmQgdGhlcmVmb3JlIGV2YWx1YXRpb24gdG8gYmUgZG9uZSBmb3IgZWFjaCByZXF1ZXN0LgogICAgaWYoIGNtc21zKCktPmlzX2Zyb250ZW5kX3JlcXVlc3QoKSApIHJldHVybiB0aW1lKCk7CiAgICByZXR1cm4gcGFyZW50OjpHZXRNb2RpZmllZERhdGUoKTsKICB9CgogIGZ1bmN0aW9uIFNldFByb3BlcnRpZXMoKQogIHsKICAgIHBhcmVudDo6U2V0UHJvcGVydGllcygpOwogICAgCiAgICAkdGhpcy0+QWRkUHJvcGVydHkoJ3N1Yl90ZW1wbGF0ZScsICAgIDAsIHNlbGY6OlRBQl9DQVRfT1BUSU9OUyk7CiAgICAkdGhpcy0+QWRkUHJvcGVydHkoJ3NvcnRfb3JkZXInLCAgICAgIDEsIHNlbGY6OlRBQl9DQVRfT1BUSU9OUyk7CiAgICAkdGhpcy0+QWRkUHJvcGVydHkoJ3JlY3Vyc2UnLCAgICAgICAgIDIsIHNlbGY6OlRBQl9DQVRfT1BUSU9OUyk7CiAgICAkdGhpcy0+QWRkUHJvcGVydHkoJ2l0ZW1zX3Blcl9wYWdlJywgIDMsIHNlbGY6OlRBQl9DQVRfT1BUSU9OUyk7CiAgICAkdGhpcy0+QWRkUHJvcGVydHkoJ2ltYWdlcycsICAgICAgICAgIDAsIHNlbGY6OlRBQl9DQVRfSU1BR0VTKTsKICAgIAogICAgJHRoaXMtPmdldFVzZXJBdHRyaWJ1dGVzKCk7CiAgICAKICAgICNsZXRzIGFkZCB0aGUgZmllbGRzCiAgICBpZihpc19hcnJheSgkdGhpcy0+YXR0cnMpKQogICAgewogICAgICBmb3JlYWNoICgkdGhpcy0+YXR0cnMgYXMgJGsgPT4gJHRoaXNBdHRyKQogICAgICB7CiAgICAgICAgJHRoaXMtPkFkZFByb3BlcnR5KCR0aGlzQXR0ci0+YWxpYXMsIDExMCArICR0aGlzQXR0ci0+ZmllbGRfb3JkZXIsIHNlbGY6OlRBQl9NQUlOKTsKICAgICAgfQogICAgfQogICAgCiAgfQogIAogIGZ1bmN0aW9uIEFkZFByb3BlcnR5KCRuYW1lLCAkcHJpb3JpdHksICR0YWIgPSBzZWxmOjpUQUJfTUFJTiwgJHJlcXVpcmVkID0gRkFMU0UpCiAgewogICAgcGFyZW50OjpBZGRQcm9wZXJ0eSgkbmFtZSwgJHByaW9yaXR5LCAkdGFiLCAkcmVxdWlyZWQpOwogIH0KICAKICBwcm90ZWN0ZWQgZnVuY3Rpb24gZGlzcGxheV9zaW5nbGVfZWxlbWVudCgkb25lLCAkYWRkaW5nKQogIHsKICAgICRnQ21zID0gY21zbXMoKTsKICAgICRtb2QgPSAkdGhpcy0+Z2V0X21vZCgpOwogICAgJHNtYXJ0eSA9ICRnQ21zLT5HZXRTbWFydHkoKTsKCiAgICBpZiggaW5fYXJyYXkoJG9uZSwgJHRoaXMtPl9hdHRyX2xpc3QpICkKICAgIHsKICAgICAgcmV0dXJuIGNhdEZpZWxkczo6UmVuZGVySW5wdXQoICR0aGlzLT5hdHRyc1skb25lXSwgJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJHRoaXMtPmF0dHJzWyRvbmVdLT5hdHRyKSApOwogICAgfSAKCiAgICBzd2l0Y2goJG9uZSkKICAgIHsKICAgICAgCiAgICAgIGNhc2UgJ3N1Yl90ZW1wbGF0ZSc6CiAgICAgIHsKICAgICAgICAkc3ViVGVtcGxhdGVzID0gY2F0VGVtcGxhdGVPcGVyYXRpb25zOjpHZXRUZW1wbGF0ZUxpc3RGcm9tSUQoMik7CgogICAgICAgICRyZXQgPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICc8bGFiZWwgZm9yPSJpbl9zdWJfdGVtcGxhdGUiPicgCiAgICAgICAgICAgICAgICAgICAgICAuICRtb2QtPmxhbmcoJ1N1YicpIAogICAgICAgICAgICAgICAgICAgICAgLiAnICcKICAgICAgICAgICAgICAgICAgICAgIC4gbGFuZygndGVtcGxhdGUnKSAKICAgICAgICAgICAgICAgICAgICAgIC4gJzo8L2xhYmVsPicsCiAgICAgICAgICAgICAgICAgICAgICAkbW9kLT5DcmVhdGVJbnB1dERyb3Bkb3duKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3ViX3RlbXBsYXRlJywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN1YlRlbXBsYXRlcywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdzdWJfdGVtcGxhdGUnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiAkcmV0OwogICAgICB9CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgY2FzZSAncmVjdXJzZSc6CiAgICAgICAgICAkcmV0ID0gYXJyYXkoJG1vZC0+TGFuZygndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZScpLCBDYXRhbG9nZXJIZWxwZXI6OlJlbmRlclJlY3Vyc2l2ZUlucHV0KCAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgncmVjdXJzZScpICkgKTsgICAgICAgICAgCiAgICAgICAgICByZXR1cm4gJHJldDsgICAgIAogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgJ2ltYWdlcyc6CiAgICAgIHsKICAgICAgICAkcmV0ID0gYXJyYXkoJycsIENhdGFsb2dlckhlbHBlcjo6UmVuZGVyUGFnZUltYWdlVXBMb2FkZXIoJHRoaXMtPm1BbGlhcywgJ2NhdGVnb3J5JykpOwogICAgICAgIHJldHVybiAkcmV0OwogICAgICB9CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgY2FzZSAnc29ydF9vcmRlcic6CiAgICAgIHsKICAgICAgICAkcmV0ID0gYXJyYXkoKTsKICAgICAgICAKICAgICAgICAkc28gPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnc29ydF9vcmRlcicpOwoKICAgICAgICBpZiAoJHNvID09ICcnKQogICAgICAgIHsKICAgICAgICAgICAgJHNvID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnY2F0ZWdvcnlfc29ydF9vcmRlcicsICduYXR1cmFsJyk7CiAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAkcmV0ID0gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgICAkbW9kLT5MYW5nKCd0aXRsZV9nbG9iYWxfaXRlbV9zb3J0X29yZGVyMicpLCAKICAgICAgICAgICAgICAgICAgICAgICRtb2QtPkNyZWF0ZUlucHV0RHJvcGRvd24oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvcnRfb3JkZXInLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtb2QtPkxhbmcoJ25hdHVyYWxfb3JkZXInKT0+J25hdHVyYWwnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbW9kLT5MYW5nKCdhbHBoYV9vcmRlcicpPT4nYWxwaGEnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgcmV0dXJuICRyZXQ7CiAgICAgICAgCiAgICAgIH0KICAgICAgYnJlYWs7CiAgICAgICAgICAKICAgICAgY2FzZSAnaXRlbXNfcGVyX3BhZ2UnOgogICAgICB7CiAgICAgICAgJGlwcCA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdpdGVtc19wZXJfcGFnZScpOwogICAgICAgIGlmICgkaXBwID09ICIiIHx8ICRpcHAgPT0gLTEpCiAgICAgICAgewogICAgICAgICAgJGlwcCA9IGdldF9zaXRlX3ByZWZlcmVuY2UoJ0NhdGFsb2dlcl9tYXBpX3ByZWZfY2F0ZWdvcnlfaXRlbXNfcGVyX3BhZ2UnLCAnMTAnKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJGRwQXJyID0gIGFycmF5KAogICAgICAgICAgICAgICAgICAgICAgICAgICcxJz0+JzEnLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAnMic9PicyJywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzMnPT4nMycsIAogICAgICAgICAgICAgICAgICAgICAgICAgICc0Jz0+JzQnLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAnNSc9Pic1JywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzYnPT4nNicsIAogICAgICAgICAgICAgICAgICAgICAgICAgICc3Jz0+JzcnLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAnOCc9Pic4JywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzknPT4nOScsIAogICAgICAgICAgICAgICAgICAgICAgICAgICcxMCc9PicxMCcsIAogICAgICAgICAgICAgICAgICAgICAgICAgICcxMSc9PicxMScsIAogICAgICAgICAgICAgICAgICAgICAgICAgICcxMic9PicxMicsIAogICAgICAgICAgICAgICAgICAgICAgICAgICcxMyc9PicxMycsIAogICAgICAgICAgICAgICAgICAgICAgICAgICcxNCc9PicxNCcsIAogICAgICAgICAgICAgICAgICAgICAgICAgICcxNSc9PicxNScsIAogICAgICAgICAgICAgICAgICAgICAgICAgICcxNic9PicxNicsIAogICAgICAgICAgICAgICAgICAgICAgICAgICcxNyc9PicxNycsIAogICAgICAgICAgICAgICAgICAgICAgICAgICcxOCc9PicxOCcsIAogICAgICAgICAgICAgICAgICAgICAgICAgICcxOSc9PicxOScsIAogICAgICAgICAgICAgICAgICAgICAgICAgICcyMCc9PicyMCcsIAogICAgICAgICAgICAgICAgICAgICAgICAgICcyNCc9PicyNCcsIAogICAgICAgICAgICAgICAgICAgICAgICAgICcyNSc9PicyNScsIAogICAgICAgICAgICAgICAgICAgICAgICAgICczMCc9PiczMCcsIAogICAgICAgICAgICAgICAgICAgICAgICAgICc0MCc9Pic0MCcsIAogICAgICAgICAgICAgICAgICAgICAgICAgICc1MCc9Pic1MCcsIAogICAgICAgICAgICAgICAgICAgICAgICAgICcxMDAwJz0+JzEwMDAnCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgCiAgICAgICAgJHJldCA9IGFycmF5KAogICAgICAgICAgICAgICAgICAgICAgJG1vZC0+TGFuZygndGl0bGVfZ2xvYmFsX2l0ZW1zX3Blcl9wYWdlMicpLCAKICAgICAgICAgICAgICAgICAgICAgICRtb2QtPkNyZWF0ZUlucHV0RHJvcGRvd24oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpdGVtc19wZXJfcGFnZScsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkcEFyciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlwcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgIHJldHVybiAkcmV0OwogICAgICB9CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gcGFyZW50OjpkaXNwbGF5X3NpbmdsZV9lbGVtZW50KCRvbmUsICRhZGRpbmcpOwogICAgfQogIH0KICAKICAKICBmdW5jdGlvbiBWYWxpZGF0ZURhdGEoKQogIHsKICAgICR2ID0gcGFyZW50OjpWYWxpZGF0ZURhdGEoKTsKCiAgICBpZiAoJHYgIT09IEZBTFNFKQogICAgewogICAgICByZXR1cm4gJHY7CiAgICB9CgogICAgcmV0dXJuICR0aGlzLT52YWxpZGF0aW9uOwogIH0KCiAgZnVuY3Rpb24gdmFsaWRhdGlvbkVycm9yKCRtc2cpCiAgewogICAgaWYgKCFpc19hcnJheSgkdGhpcy0+dmFsaWRhdGlvbikpCiAgICB7CiAgICAgICR0aGlzLT52YWxpZGF0aW9uID0gYXJyYXkoKTsKICAgIH0KCiAgICBhcnJheV9wdXNoKCR0aGlzLT52YWxpZGF0aW9uLCAkbXNnKTsKICB9CgogIGZ1bmN0aW9uIEZpbGxQYXJhbXMoJHBhcmFtcywgJGVkaXRpbmcgPSBmYWxzZSkKICB7ICAgCiAgICBpZiggIWlzc2V0KCRwYXJhbXMpICkgcmV0dXJuOwogICAgCiAgICAkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7CiAgICAkbW9kID0gJHRoaXMtPmdldF9tb2QoKTsKICAgICAgICAKICAgICRwYXJhbWV0ZXJzID0gYXJyYXkoJ3N1Yl90ZW1wbGF0ZScsICdzb3J0X29yZGVyJywgJ3JlY3Vyc2UnLCAnaXRlbXNfcGVyX3BhZ2UnKTsKCiAgICBmb3JlYWNoKCRwYXJhbWV0ZXJzIGFzICRvbmVwYXJhbSkKICAgIHsKICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJG9uZXBhcmFtXSkpCiAgICAgIHsKICAgICAgICAkdGhpcy0+U2V0UHJvcGVydHlWYWx1ZSgkb25lcGFyYW0sICRwYXJhbXNbJG9uZXBhcmFtXSk7CiAgICAgIH0gICAgICAgCiAgICB9CgogICAgJHRoaXMtPmdldFVzZXJBdHRyaWJ1dGVzKCk7CgogICAgZm9yZWFjaCAoJHRoaXMtPmF0dHJzIGFzICR0aGlzQXR0cikKICAgIHsKICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJHRoaXNBdHRyLT5zYWZlXSkpCiAgICAgIHsKICAgICAgICAgICR0aGlzLT5TZXRQcm9wZXJ0eVZhbHVlKCR0aGlzQXR0ci0+YXR0ciwgJHBhcmFtc1skdGhpc0F0dHItPnNhZmVdKTsKICAgICAgfQogICAgfQogICAgCiAgICAvLyBDb3B5IGFuZCByZXNpemUgdGhlIGltYWdlIGZpbGVzLi4uCiAgICAkaW1nY291bnQgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdjYXRlZ29yeV9pbWFnZV9jb3VudCcsICcxJyk7CiAgICAkaGVyb3NpemUgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdjYXRlZ29yeV9pbWFnZV9zaXplX2hlcm8nLCAnNDAwJyk7CiAgICAkdGh1bWJzaXplID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV90aHVtYm5haWwnLCAnOTAnKTsKICAgIAogICAgZm9yICgkaT0xOyAkaTw9ICRpbWdjb3VudDsgJGkrKykKICAgIHsKCiAgICAgIGlmIChpc3NldCgkX0ZJTEVTWydpbWFnZScgLiAkaV1bJ3NpemUnXSkgJiYgJF9GSUxFU1snaW1hZ2UnIC4gJGldWydzaXplJ10gPiAwKQogICAgICB7CgogICAgICAgIGlmICghIHByZWdfbWF0Y2goJy9cLmpwZyR8XC5qcGVnJC9pJywgJF9GSUxFU1snaW1hZ2UnIC4gJGldWyduYW1lJ10pKQogICAgICAgIHsKICAgICAgICAgICR0aGlzLT52YWxpZGF0aW9uRXJyb3IoJG1vZC0+TGFuZygnYmFkaW1hZ2Vmb3JtYXQnLCAkX0ZJTEVTWydpbWFnZScgLiAkaV1bJ25hbWUnXSkpOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgJHNvdXJjZSA9ICRfRklMRVNbJ2ltYWdlJyAuICRpXVsndG1wX25hbWUnXTsKICAgICAgICAgICR0YXJnZXQgPSBjbXNfam9pbl9wYXRoKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29uZmlnWyd1cGxvYWRzX3BhdGgnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0RmlsZXNPcGVyYXRpb25zOjpnZXRBc3NldFBhdGgoJ3MnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm1BbGlhcyAuICdfc3JjXycgLiAkaSAuICcuanBnJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICRjcmVzID0gY29weSgkc291cmNlLCAkdGFyZ2V0KTsKCiAgICAgICAgICBpZiAoISRjcmVzKQogICAgICAgICAgewogICAgICAgICAgICAkdGhpcy0+dmFsaWRhdGlvbkVycm9yKCAkbW9kLT5MYW5nKCdiYWRpbWFnZScsICRfRklMRVNbJ2ltYWdlJyAuICRpXVsnbmFtZSddKSApOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIGZvcmVhY2ggKCRwYXJhbXMgYXMgJHRoaXNQYXJhbSA9PiAkdGhpc1BhcmFtVmFsKQogICAgewoKICAgICAgaWYgKHN1YnN0cigkdGhpc1BhcmFtLCAwLCA5KSA9PSAncm1faW1hZ2VfJykKICAgICAgewogICAgICAgICRpbWFnZVNwZWNQYXJ0cyA9IGV4cGxvZGUoJ18nLCAkdGhpc1BhcmFtKTsKICAgICAgICBjYXRGaWxlc09wZXJhdGlvbnM6OnB1cmdlQWxsSW1hZ2UoJGltYWdlU3BlY1BhcnRzWzJdLCAkaW1hZ2VTcGVjUGFydHNbM10pOwogICAgICB9CiAgICB9CiAgICAKCiAgICBwYXJlbnQ6OkZpbGxQYXJhbXMoJHBhcmFtcyk7CiAgfQoKICBmdW5jdGlvbiBQb3B1bGF0ZVBhcmFtcygmJHBhcmFtcykKICB7IAoKICAgICRwYXJhbWV0ZXJzID0gYXJyYXkoJ3N1Yl90ZW1wbGF0ZScsICdzb3J0X29yZGVyJywgJ3JlY3Vyc2UnLCAnaXRlbXNfcGVyX3BhZ2UnKTsKCiAgICAjIHRoaXMgbWF5IGJlIGJldHRlciBpbXBsZW1lbnRlZCBpbiB2YWxpZGF0ZT8gIChKTSkKICAgIGZvcmVhY2ggKCRwYXJhbWV0ZXJzIGFzICRvbmVwYXJhbSkKICAgIHsKICAgICAgJHRtcCA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCRvbmVwYXJhbSk7CgogICAgICBpZiAoaXNzZXQoJHRtcCkgJiYgIWVtcHR5KCR0bXApKQogICAgICB7CiAgICAgICAgJHBhcmFtc1skb25lcGFyYW1dID0gJHRtcDsKICAgICAgfQogICAgfQoKICAgICR0aGlzLT5nZXRVc2VyQXR0cmlidXRlcygpOwoKICAgICRzYWZlYXR0cmxpc3QgPSBhcnJheSgpOwoKICAgIGZvcmVhY2ggKCR0aGlzLT5hdHRycyBhcyAkdGhpc0F0dHIpCiAgICB7CiAgICAgICR0bXAgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgkdGhpc0F0dHItPmF0dHIpOwoKICAgICAgaWYgKGlzc2V0KCR0bXApICYmICR0bXAgIT0gJycpCiAgICAgIHsKICAgICAgICAgICRwYXJhbXNbJHRoaXNBdHRyLT5zYWZlXSA9ICR0bXA7CgogICAgICAgICAgaWYgKGlzc2V0KCR0aGlzQXR0ci0+YWxpYXMpICYmICR0aGlzQXR0ci0+YWxpYXMhPScnKQogICAgICAgICAgewogICAgICAgICAgICAkcGFyYW1zWyR0aGlzQXR0ci0+YWxpYXNdID0gJHRtcDsKICAgICAgICAgIH0KCiAgICAgICAgICAkdGhpc1NhZmVBdHRyID0gYXJyYXkoKTsKICAgICAgICAgICR0aGlzU2FmZUF0dHJbJ25hbWUnXSA9IHVjZmlyc3QoJHRoaXNBdHRyLT5hdHRyKTsKICAgICAgICAgICR0aGlzU2FmZUF0dHJbJ2tleSddID0gJ3skJyAuICR0aGlzQXR0ci0+c2FmZSAuICd9JzsKCiAgICAgICAgICBpZiAoJHRoaXNBdHRyLT5hbGlhcyAhPSAnJykKICAgICAgICAgIHsKICAgICAgICAgICAgJHRoaXNTYWZlQXR0clsnYWxpYXNrZXknXSA9ICd7JCcgLiAkdGhpc0F0dHItPmFsaWFzIC4gJ30nOwogICAgICAgICAgfQoKICAgICAgICAgIGFycmF5X3B1c2goJHNhZmVhdHRybGlzdCwgJHRoaXNTYWZlQXR0cik7CiAgICAgIH0KICAgIH0KICAgICAgICAKICAgICRwYXJhbXNbJ3RpdGxlJ10gPSAkdGhpcy0+bU5hbWU7CiAgICAkcGFyYW1zWydtZW51dGV4dCddID0gJHRoaXMtPm1NZW51VGV4dDsKICAgICRwYXJhbXNbJ3RlbXBsYXRlX2lkJ10gPSAkdGhpcy0+bVRlbXBsYXRlSWQ7CiAgICAkcGFyYW1zWydhbGlhcyddID0gJHRoaXMtPm1BbGlhczsKICAgICRwYXJhbXNbJ3BhcmVudF9pZCddID0gJHRoaXMtPm1QYXJlbnRJZDsKICAgICRwYXJhbXNbJ2FjdGl2ZSddID0gJHRoaXMtPm1BY3RpdmU7CiAgICAkcGFyYW1zWydzaG93aW5tZW51J109JHRoaXMtPm1TaG93SW5NZW51OwogICAgJHBhcmFtc1snYXR0cmxpc3QnXSA9ICRzYWZlYXR0cmxpc3Q7CiAgICAkcGFyYW1zWydfaV9jb250ZW50X2lkJ10gPSAkdGhpcy0+bUlkOyAjaWYgbmVlZGVkIGF0IGFsbCAoPz8/Pz8/PykKCiAgfQoKIAogIGZ1bmN0aW9uIFNob3coJHBhcmFtID0gJycpCiAgewogICAgJHBhcmFtID0gdHJpbSgkcGFyYW0pOwogICAgCiAgICBpZiggISRwYXJhbSApICRwYXJhbSA9ICdjb250ZW50X2VuJzsKICAgICRwYXJhbSA9IHN0cl9yZXBsYWNlKCcgJywnXycsJHBhcmFtKTsgCiAgICAKICAgIGlmICgkcGFyYW0gPT0gJ2NvbnRlbnRfZW4nKQogICAgewogICAgICAkdGhpcy0+UG9wdWxhdGVQYXJhbXMoJHBhcmFtcyk7CiAgICAgICRwYXJhbXNbJ2NvbnRlbnRfZW4nXSA9IHBhcmVudDo6U2hvdygkcGFyYW0pOwogICAgICByZXR1cm4gJHRoaXMtPlJlbmRlckNvbnRlbnQoJHBhcmFtcyk7OyAgCiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgIHJldHVybiBwYXJlbnQ6OlNob3coJHBhcmFtKTsKICAgIH0KICB9CgoKICBwcm90ZWN0ZWQgZnVuY3Rpb24gVXBkYXRlKCkKICB7CiAgICBwYXJlbnQ6OlVwZGF0ZSgpOwogICAgaWYoICgkdGhpcy0+bU9sZEFsaWFzICE9ICR0aGlzLT5BbGlhcygpKSAmJiAkdGhpcy0+bU9sZEFsaWFzICYmICR0aGlzLT5BbGlhcygpICkKICAgIHsKICAgICAgY2F0RmlsZXNPcGVyYXRpb25zOjpyZW5hbWVJbWFnZXMoJHRoaXMtPm1PbGRBbGlhcywgJHRoaXMtPkFsaWFzKCkpOwogICAgfQogIH0KCiAgcHJvdGVjdGVkIGZ1bmN0aW9uIEluc2VydCgpCiAgewogICAgcGFyZW50OjpJbnNlcnQoKTsKICAgIAogICAgaWYoICgkdGhpcy0+bU9sZEFsaWFzICE9ICR0aGlzLT5BbGlhcygpKSAmJiAkdGhpcy0+bU9sZEFsaWFzICYmICR0aGlzLT5BbGlhcygpICkKICAgIHsKICAgICAgY2F0RmlsZXNPcGVyYXRpb25zOjpyZW5hbWVJbWFnZXMoJHRoaXMtPm1PbGRBbGlhcywkdGhpcy0+QWxpYXMoKSk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBVcGRhdGVQcm9wZXJ0eU5hbWUoJHByb3BOYW1lLCAkcHJvcE5ld05hbWUpCiAgewogICAgJHRlbXBWYWx1ZSA9ICcnOwogICAgCiAgICBpZiAoJHRoaXMtPmlzX2tub3duX3Byb3BlcnR5KCRwcm9wTmFtZSkpCiAgICB7CiAgICAgICR0ZW1wVmFsdWUgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgkcHJvcE5hbWUpOwogICAgICAkdGhpcy0+UmVtb3ZlUHJvcGVydHkoJHByb3BOYW1lLCBmYWxzZSk7ICAgCiAgICB9CiAgICAKICAgICR0aGlzLT5BZGRFeHRyYVByb3BlcnR5KCRwcm9wTmFtZSk7CiAgICAkdGhpcy0+U2V0UHJvcGVydHlWYWx1ZSgkcHJvcE5ld05hbWUsICR0ZW1wVmFsdWUpOwogIH0gICAKCiAgZnVuY3Rpb24gRGVsZXRlUHJvcGVydHkoJHByb3BOYW1lKQogIHsKICAgICR0aGlzLT5SZW1vdmVQcm9wZXJ0eSgkcHJvcE5hbWUsIGZhbHNlKTsgICAgCiAgfQogIC8qKgogICogIwogICogCiAgKiBAcGFyYW0gbWl4ZWQgJHBhcmFtcwogICovCiAgZnVuY3Rpb24gUmVuZGVyQ29udGVudCgkcGFyYW1zKQogIHsgICAgCiAgICAkbW9kID0gJHRoaXMtPmdldF9tb2QoKTsKICAgIAogICAgJHNtYXJ0eSA9ICRtb2QtPkdldEFjdGlvblRlbXBsYXRlT2JqZWN0KCk7CiAgICAKICAgIGlmKCBlbXB0eSgkc21hcnR5KSApICRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKICAgIAogICAgJGNudE9iaiA9IG5ldyBzdGRDbGFzcygpOwogIAogICAgJHNob3dNaXNzaW5nID0gJ18nIC4gJG1vZC0+R2V0UHJlZmVyZW5jZSgnc2hvd19taXNzaW5nJywgJzEnKTsKCiAgICBmb3JlYWNoICgkcGFyYW1zIGFzICRrZXkgPT4gJHZhbCkKICAgIHsKICAgICAgJHNtYXJ0eS0+YXNzaWduKCRrZXksICRwYXJhbXNbJGtleV0pOwogICAgICAkY250T2JqLT4ka2V5ID0gJHBhcmFtc1ska2V5XTsKICAgIH0KCiAgICBsaXN0KCRjdXJQYWdlLCAkY2F0ZWdvcnlJdGVtcykgPSBjYXRDb250ZW50T3BlcmF0aW9uczo6Z2V0Q2F0YWxvZ0l0ZW1zTGlzdCgkcGFyYW1zKTsKCiAgICBpZiAoaXNzZXQoJHBhcmFtc1snc29ydF9vcmRlciddKSAmJiAkcGFyYW1zWydzb3J0X29yZGVyJ10gPT0gJ2FscGhhJykKICAgIHsKICAgICAgdXNvcnQoICRjYXRlZ29yeUl0ZW1zLCBhcnJheSgnY2F0Q29udGVudE9wZXJhdGlvbnMnLCAnY29udGVudGFscGhhJykgKTsKICAgIH0KICAgIAogICAgJGNudE9iai0+aXRlbXMgPSAkY2F0ZWdvcnlJdGVtczsKICAgICRjbnRPYmotPmRlZmF1bHRfY29udGVudCA9ICRwYXJhbXNbJ2NvbnRlbnRfZW4nXTsKICAgIAogICAgJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRjYXRlZ29yeUl0ZW1zKTsKICAgICRzbWFydHktPmFzc2lnbignbWFpbl9jb250ZW50JywgJHBhcmFtc1snY29udGVudF9lbiddKTsKICAgIAogICAgbGlzdCgkbmF2LCAkY2F0ZWdvcnlJdGVtcykgPSAkdGhpcy0+cGFnaW5hdGlvbigkY2F0ZWdvcnlJdGVtcywgJHBhcmFtcyk7CiAgICAKICAgIGZvcmVhY2ggKCRuYXYgYXMgJGtleT0+JHZhbCkKICAgIHsKICAgICAgJHNtYXJ0eS0+YXNzaWduKCRrZXksICRuYXZbJGtleV0pOwogICAgfQogICAgCiAgICAkY250T2JqLT5uYXYgPSAkbmF2OwogICAgCiAgICAkaW1nY291bnQgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdjYXRlZ29yeV9pbWFnZV9jb3VudCcsICcxJyk7CiAgICAkZnVsbFNpemUgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdjYXRlZ29yeV9pbWFnZV9zaXplX2hlcm8nLCAnNDAwJyk7CiAgICAkdGh1bWJTaXplID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV90aHVtYm5haWwnLCAnOTAnKTsKICAgIAogICAgJGNudE9iai0+aW1nY291bnQgPSAkaW1nY291bnQ7CiAgICAkY250T2JqLT5mdWxsU2l6ZSA9ICRmdWxsU2l6ZTsKICAgICRjbnRPYmotPnRodW1iU2l6ZSA9ICR0aHVtYlNpemU7CiAgICAKICAgICRpbWFnZUFycmF5ID0gYXJyYXkoKTsKICAgICRzcmNJbWdBcnJheSA9IGFycmF5KCk7CiAgICAkdGh1bWJBcnJheSA9IGFycmF5KCk7CgogICAgZm9yKCRpID0gMTsgJGkgPD0gJGltZ2NvdW50OyAkaSsrKQogICAgewogICAgICAkaXMgPSBjYXRGaWxlc09wZXJhdGlvbnM6OmltYWdlU3BlYygkY3VyUGFnZS0+QWxpYXMoKSwgJ2NmJywgJGksICRmdWxsU2l6ZSk7CiAgICAgIGFycmF5X3B1c2goICRpbWFnZUFycmF5LCAkaXMpOwogICAgICAkaXMgPSBjYXRGaWxlc09wZXJhdGlvbnM6OmltYWdlU3BlYygkY3VyUGFnZS0+QWxpYXMoKSwgJ2N0JywgJGksICR0aHVtYlNpemUpOwogICAgICBhcnJheV9wdXNoKCR0aHVtYkFycmF5LCAkaXMpOwogICAgICAkc2lzID0gY2F0RmlsZXNPcGVyYXRpb25zOjpzcmNJbWFnZVNwZWMoJGN1clBhZ2UtPkFsaWFzKCksICRpKTsgIAogICAgICBhcnJheV9wdXNoKCRzcmNJbWdBcnJheSwgJHNpcyk7CgogICAgICAkaXMgPSBjYXRGaWxlc09wZXJhdGlvbnM6OmltYWdlU3BlYygkY3VyUGFnZS0+QWxpYXMoKSwgJ2NmJywgJGksICRmdWxsU2l6ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgJHNtYXJ0eS0+YXNzaWduKCdpbWFnZV8nIC4gJGkgLiAnX3VybCcsICRpcyk7CiAgICAgICRzaXMgPSBjYXRGaWxlc09wZXJhdGlvbnM6OnNyY0ltYWdlU3BlYygkcGFyYW1zWydhbGlhcyddLCAkaSk7ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICRzbWFydHktPmFzc2lnbignc3JjX2ltYWdlXycgLiAkaSAuICdfdXJsJywgJHNpcyk7CiAgICAgICRpcyA9ICBjYXRGaWxlc09wZXJhdGlvbnM6OmltYWdlU3BlYygkY3VyUGFnZS0+QWxpYXMoKSwgJ2N0JywgJGksICR0aHVtYlNpemUpOyAgICAgICAgICAgICAgICAgICAgIAogICAgICAkc21hcnR5LT5hc3NpZ24oJ2ltYWdlX3RodW1iXycgLiAkaSAuICdfdXJsJywgJGlzKTsKICAgIH0KICAgIAogICAgJHNtYXJ0eS0+YXNzaWduKCdjdGxnJywgJGNudE9iaik7IAogICAgJHNtYXJ0eS0+YXNzaWduKCdpbWFnZV91cmxfYXJyYXknLCAkaW1hZ2VBcnJheSk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ3NyY19pbWFnZV91cmxfYXJyYXknLCAkc3JjSW1nQXJyYXkpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdpbWFnZV90aHVtYl91cmxfYXJyYXknLCAkdGh1bWJBcnJheSk7CiAgICAkbW9kLT5zbWFydHlCYXNpY3MoKTsKCiAgICAkY2FjaGVfaWQgPSAnX2N0Z18nIC4gbWQ1KCBzZXJpYWxpemUoJHBhcmFtcykgKTsKICAgICRjb21waWxlX2lkID0gJ0NhdGFsb2dlcl8nIC4gJHRoaXMtPm1JZDsKCiAgICByZXR1cm4gJHNtYXJ0eS0+ZmV0Y2goCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbW9kLT5HZXREYXRhYmFzZVJlc291cmNlKCdjYXRhbG9nXycgLiAkcGFyYW1zWydzdWJfdGVtcGxhdGUnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2FjaGVfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29tcGlsZV9pZAogICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgfQogIAogIGZ1bmN0aW9uIHBhZ2luYXRpb24oJGNhdGVnb3J5SXRlbXMsICRwYXJhbXMpCiAgewogICAgJG1vZCA9IHNlbGY6OmdldF9tb2QoKTsgIAogICAgJGNvdW50ID0gY291bnQoJGNhdGVnb3J5SXRlbXMpOwoKICAgIGlmICggaXNzZXQoJF9SRVFVRVNUWydzdGFydCddKSApCiAgICB7CiAgICAgICRzdGFydCA9ICRfUkVRVUVTVFsnc3RhcnQnXTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgJHN0YXJ0ID0gMDsKICAgIH0KCiAgICBpZiAoIGlzc2V0KCRwYXJhbXNbJ2l0ZW1zX3Blcl9wYWdlJ10pICkKICAgIHsKICAgICAgJGVuZCA9IG1heCgkcGFyYW1zWydpdGVtc19wZXJfcGFnZSddLCAxKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgJGVuZCA9IG1heCgkY291bnQsIDEpOwogICAgfQoKICAgICR0aGlzVXJsID0gJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ107CiAgICAkdGhpc1VybCA9IHByZWdfcmVwbGFjZSgnLyhcPykqKFwmKSpzdGFydD1cZCsvJywgJycsICR0aGlzVXJsKTsKCiAgICBpZiAoc3RycG9zKCR0aGlzVXJsLCAnPycpID09PSBmYWxzZSkKICAgIHsKICAgICAgJGRlbGltID0gJz8nOwogICAgfQogICAgZWxzZQogICAgewogICAgICAkZGVsaW0gPSAnJic7CiAgICB9CgogICAgJG5hdiA9IGFycmF5KCk7CgogICAgaWYgKCRzdGFydCA+IDApCiAgICB7CiAgICAgICRuYXZbJ3ByZXYnXSA9ICc8YSBocmVmPSInIC4gJHRoaXNVcmwgLiAkZGVsaW0gCiAgICAgICAgICAgICAgICAgICAgIC4gJ3N0YXJ0PScgLiBtYXgoMCwgJHN0YXJ0LSRlbmQpIC4gJyI+JyAKICAgICAgICAgICAgICAgICAgICAgLiAkdGhpcy0+TGFuZygncHJldicpIC4gJzwvYT4nOwoKICAgICAgJG5hdlsncHJldnVybCddID0gICR0aGlzVXJsIC4gJGRlbGltIC4gJ3N0YXJ0PScgLiBtYXgoMCwgJHN0YXJ0IC0gJGVuZCk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICRuYXZbJ3ByZXYnXSA9ICcnOwogICAgICAkbmF2WydwcmV2dXJsJ10gPSAnJzsKICAgIH0KCiAgICBpZiAoJHN0YXJ0ICsgJGVuZCA8ICRjb3VudCkKICAgIHsKICAgICAgJG5hdlsnbmV4dCddID0gJzxhIGhyZWY9IicgLiAkdGhpc1VybCAuICRkZWxpbSAuICdzdGFydD0nIAogICAgICAgICAgICAgICAgICAgICAuICgkc3RhcnQgKyAkZW5kKSAuICciPicgLiAkbW9kLT5MYW5nKCduZXh0JykgLiAnPC9hPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAkbmF2WyduZXh0dXJsJ10gPSAkdGhpc1VybCAuICRkZWxpbSAuICdzdGFydD0nIC4gKCRzdGFydCArICRlbmQpOwogICAgfQogICAgZWxzZQogICAgewogICAgICAkbmF2WyduZXh0J10gPSAnJzsKICAgICAgJG5hdlsnbmV4dHVybCddID0gJyc7CiAgICB9CgogICAgJG5hdnN0ciA9ICcnOwogICAgJHBhZ2VJbmQgPSAxOwogICAgCiAgICBmb3IgKCAkaSA9IDA7ICRpIDwgJGNvdW50OyAkaSArPSAkZW5kICkKICAgIHsKICAgICAgaWYgKCRpID09ICRzdGFydCkKICAgICAgewogICAgICAgICRuYXZzdHIgLj0gIjxzcGFuIGNsYXNzPVwicC0iIC4gJHBhZ2VJbmQgLiAiICBub2xpbmtcIj4iIC4gJHBhZ2VJbmQgLiAiPC9zcGFuPiI7CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgJG5hdnN0ciAuPSAgJzxhIGhyZWY9IicgLiAkdGhpc1VybCAuICRkZWxpbSAuICdzdGFydD0nICAuICRpIC4gJyI+JyAuICRwYWdlSW5kIC4gJzwvYT4nOwogICAgICB9CgogICAgICAkbmF2c3RyIC49ICRtb2QtPkxhbmcoJ25hdlRhYicpOwogICAgICAkcGFnZUluZCsrOwogICAgfQoKICAgICRuYXZzdHIgPSBydHJpbSggJG5hdnN0ciwgJG1vZC0+TGFuZygnbmF2VGFiJykgKTsKICAgICRjYXRlZ29yeUl0ZW1zID0gYXJyYXlfc3BsaWNlKCRjYXRlZ29yeUl0ZW1zLCAkc3RhcnQsICRlbmQpOwoKICAgIGlmIChzdHJsZW4oJG5hdnN0cikgPiAxKQogICAgewogICAgICAkbmF2WyduYXZzdHInXSA9ICAkbmF2c3RyOwogICAgICAkbmF2WydoYXNuYXYnXSA9IHRydWU7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICRuYXZbJ25hdnN0ciddID0gICcnOwogICAgICAkbmF2WydoYXNuYXYnXSA9IGZhbHNlOwogICAgfQogICAgCiAgICAkcmV0ID0gYXJyYXkoJG5hdiwgJGNhdGVnb3J5SXRlbXMpOwogICAKICAgIHJldHVybiAkcmV0OwogICAgICAgIAogIH0KCn0KPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.CatalogerHelper.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogQ2F0YWxvZ2VyIC0gYnVpbGQgYSBjYXRhbG9nIG9yIHBvcnRmb2xpbyBvZiBzdHVmZg0KIyBWZXJzaW9uOiAwLjEyDQojDQojIENvcHlyaWdodCAoYykgMjAxMi0yMDEzLCBGZXJuYW5kbyBNb3JnYWRvIChKb01vcmcpIGpvbW9yZy5tb3JnQGdtYWlsLmNvbQ0KIyBDb3B5cmlnaHQgKGMpIDIwMDYsIFNhbXVlbCBHb2xkc3RlaW4gPHNqZ0BjbXNtb2R1bGVzLmNvbT4NCiMgRm9yIEluZm9ybWF0aW9uLCBTdXBwb3J0LCBCdWcgUmVwb3J0cywgZXRjLCBwbGVhc2UgdmlzaXQgdGhlDQojIENNUyBNYWRlIFNpbXBsZSBGb3JnZSBhdCBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDYgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8qKg0KKiBBIGhlbHBlciBDbGFzcyBmb3IgdGhlIENhdGFsb2dlciBNb2R1bGUNCiogQHZlcnNpb24gMS4wDQoqIEBhdXRob3IgSm8gTW9yZyAoRmVybmFuZG8gTW9yZ2FkbykNCiovDQpjbGFzcyBDYXRhbG9nZXJIZWxwZXINCnsNCiAgc3RhdGljIHByaXZhdGUgJF9pbml0aWFsaXplZCA9IEZBTFNFOw0KICBzdGF0aWMgcHJpdmF0ZSAkX2NtczsNCiAgc3RhdGljIHByaXZhdGUgJF9zbWFydHk7DQogIHN0YXRpYyBwcml2YXRlICRfY29uZmlnOw0KICBzdGF0aWMgcHJpdmF0ZSAkX21vZDsNCiAgDQogIC8qKg0KICAqIEEgZmV3IGJhc2ljcw0KICAqLw0KICANCiAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gX2luaXRpYWxpemUoKQ0KICB7DQogICAgaWYoIXNlbGY6OiRfaW5pdGlhbGl6ZWQpDQogICAgew0KICAgICAgc2VsZjo6JF9jbXMgPSBjbXNtcygpOw0KICAgICAgc2VsZjo6JF9jb25maWcgPSBzZWxmOjokX2Ntcy0+R2V0Q29uZmlnKCk7DQogICAgICBzZWxmOjokX3NtYXJ0eSA9IHNlbGY6OiRfY21zLT5HZXRTbWFydHkoKTsNCiAgICAgIHNlbGY6OiRfbW9kID0gc2VsZjo6JF9jbXMtPkdldE1vZHVsZUluc3RhbmNlKCdDYXRhbG9nZXInKTsNCiAgICAgIHNlbGY6OiRfaW5pdGlhbGl6ZWQgPSBUUlVFOyAgDQogICAgfQ0KICB9DQogIA0KICAjZGVwcmVjYXRlZA0KICBzdGF0aWMgZnVuY3Rpb24gZ2V0X21vZCgpDQogIHsNCiAgICBzZWxmOjpfaW5pdGlhbGl6ZSgpOw0KICAgIHJldHVybiBzZWxmOjokX21vZDsNCiAgfQ0KDQogICMjIyMgQWRtaW4gVUkgaGVscGVyIG1ldGhvZHMNCiAgc3RhdGljIHByaXZhdGUgZnVuY3Rpb24gX2FkbUltYWdlVXBsb2FkZXJUYWJsZUhlYWRlcigpDQogIHsNCiAgICBpZiAoIWlzc2V0KCRodG1sKSkNCiAgICB7DQogICAgICAkbW9kID0gc2VsZjo6Z2V0X21vZCgpOw0KICAgICAgJGh0bWwgPSAnJzsNCiAgICAgICRodG1sIC49ICJcblxuPHRhYmxlIGNsYXNzPSdwYWdldGFibGUnPlxuIjsNCiAgICAgICRodG1sIC49ICI8dGhlYWQ+IjsNCiAgICAgICRodG1sIC49ICJcbjx0cj5cbjx0aCBzdHlsZT1cInZlcnRpY2FsLWFsaWduOmNlbnRlcjt0ZXh0LWFsaWduOnJpZ2h0O1wiPiM8L3RoPlxuPHRoPiI7DQogICAgICAkaHRtbCAuPSAkbW9kLT5sYW5nKCduYW1laW1hZ2VzJyk7IA0KICAgICAgJGh0bWwgLj0gIjwvdGg+XG48dGggc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjpjZW50ZXI7dGV4dC1hbGlnbjpjZW50ZXI7XCI+XG4iOw0KICAgICAgJGh0bWwgLj0gJG1vZC0+bGFuZygndGl0bGVfdXBsb2FkJyk7DQogICAgICAkaHRtbCAuPSAiPC90aD5cbjx0aCBjbGFzcz1cInBhZ2VpY29uXCI+XG4iOw0KICAgICAgJGh0bWwgLj0gJG1vZC0+bGFuZygnZGVsZXRlaW1hZ2UnKTsNCiAgICAgICRodG1sIC49ICI8L3RoPlxuPC90cj5cbiI7DQogICAgICAkaHRtbCAuPSAnPC90aGVhZD4nOw0KICAgICAgJGh0bWwgLj0gIlxuIjsNCiAgICB9DQogICAgDQogICAgcmV0dXJuICRodG1sOw0KICB9DQogIA0KICBzdGF0aWMgcHJpdmF0ZSBmdW5jdGlvbiBfYWRtRmlsZVVwbG9hZGVyVGFibGVIZWFkZXIoKQ0KICB7DQogICAgaWYgKCFpc3NldCgkaHRtbCkpDQogICAgew0KICAgICAgJG1vZCA9IHNlbGY6OmdldF9tb2QoKTsNCiAgICAgICRodG1sID0gJyc7DQogICAgICAkaHRtbCAuPSAiXG5cbjx0YWJsZSBjbGFzcz0ncGFnZXRhYmxlJz5cbiI7DQogICAgICAkaHRtbCAuPSAiPHRoZWFkPiI7DQogICAgICAkaHRtbCAuPSAiXG48dHI+XG48dGggc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjpjZW50ZXI7dGV4dC1hbGlnbjpjZW50ZXI7XCI+IzwvdGg+XG4iOw0KICAgICAgJGh0bWwgLj0gIlxuPHRoIHN0eWxlPVwidmVydGljYWwtYWxpZ246Y2VudGVyO3RleHQtYWxpZ246Y2VudGVyO1wiPkljb248L3RoPlxuIjsNCiAgICAgICRodG1sIC49ICI8dGggc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjpjZW50ZXI7dGV4dC1hbGlnbjpsZWZ0O1wiPlxuIjsgDQogICAgICAkaHRtbCAuPSAkbW9kLT5sYW5nKCduYW1lZmlsZXMnKTsgIA0KICAgICAgJGh0bWwgLj0gIjwvdGg+XG4iOyAgDQogICAgICAkaHRtbCAuPSAiPHRoIHN0eWxlPVwidmVydGljYWwtYWxpZ246Y2VudGVyO3RleHQtYWxpZ246bGVmdDtcIj5cbiI7DQogICAgICAkaHRtbCAuPSAkbW9kLT5sYW5nKCd0aXRsZV91cGxvYWQnKTsNCiAgICAgICRodG1sIC49ICI8L3RoPlxuPHRoIGNsYXNzPVwicGFnZWljb25cIj5cbiI7DQogICAgICAkaHRtbCAuPSAkbW9kLT5sYW5nKCdkZWxldGVmaWxlJyk7IA0KICAgICAgJGh0bWwgLj0gIjwvdGg+XG48L3RyPlxuIjsNCiAgICAgICRodG1sIC49ICc8L3RoZWFkPic7DQogICAgICAkaHRtbCAuPSAiXG4iOw0KICAgIH0NCiAgICANCiAgICByZXR1cm4gJGh0bWw7DQogIH0NCiAgDQogIHN0YXRpYyBmdW5jdGlvbiAmUmVuZGVyUGFnZUltYWdlVXBMb2FkZXIoJGFsaWFzLCAkdHlwZSA9ICdpdGVtJykNCiAgew0KICAgICRtb2QgPSBzZWxmOjpnZXRfbW9kKCk7IA0KICAgIA0KICAgIGlmKCR0eXBlID09ICdpdGVtJykNCiAgICB7DQogICAgICAkdCA9ICdfaXRfJzsNCiAgICAgICRpbWdjb3VudCA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1faW1hZ2VfY291bnQnLCAyKTsNCiAgICAgICR0aHVtYnNpemUgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2ltYWdlX3NpemVfdGh1bWJuYWlsJywgJzkwJyk7DQogICAgfQ0KICAgICANCiAgICBpZigkdHlwZSA9PSAnY2F0ZWdvcnknKQ0KICAgIHsNCiAgICAgICR0ID0gJ19jdF8nOw0KICAgICAgJGltZ2NvdW50ID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnY2F0ZWdvcnlfaW1hZ2VfY291bnQnLCAxKTsNCiAgICAgICR0aHVtYnNpemUgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdjYXRlZ29yeV9pbWFnZV9zaXplX3RodW1ibmFpbCcsICc5MCcpOw0KICAgIH0NCiAgICANCiAgICANCg0KICAgICRSb290VVJMID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnUm9vdFVSTCcsIGNtc21zKCktPmNvbmZpZ1sncm9vdF91cmwnXSk7DQogICAgDQogICAgaWYgKCRpbWdjb3VudCAhPSAwKQ0KICAgIHsNCiAgICAgICRodG1sID0gc2VsZjo6X2FkbUltYWdlVXBsb2FkZXJUYWJsZUhlYWRlcigpOyANCiAgICAgICRodG1sIC49ICI8dGJvZHk+XG4iOw0KICAgICAgDQogICAgICAkaW1nc3JjID0gJyc7DQogICAgICAkdXJsZXh0ID0gJG1vZC0+Y3JlYXRlX3VybCggJ20xXycsICdpbWFnZScsIG51bGwsIGFycmF5KCkgKTsNCiAgICAgICAgICAgIA0KICAgICAgZm9yICgkaSA9IDEgOyAkaSA8PSAkaW1nY291bnQgOyAkaSsrKQ0KICAgICAgew0KICAgICAgICAkaW1nc3JjIC49ICAnPHRyPjx0ZCBzdHlsZT0idmVydGljYWwtYWxpZ246Y2VudGVyO3RleHQtYWxpZ246cmlnaHQ7Ij4nDQogICAgICAgICAgICAgICAgICAgLiBzcHJpbnRmKCIlMDNkIiwgJGkpDQogICAgICAgICAgICAgICAgICAgLiAnPC90ZD48dGQgc3R5bGU9InZlcnRpY2FsLWFsaWduOmNlbnRlcjt0ZXh0LWFsaWduOmNlbnRlcjsiPic7DQogICAgICAgICAgICAgICAgICANCiAgICAgICAgJHRtcHR4dCA9ICc8aW1nIGFsdD0iJw0KICAgICAgICAgICAgICAgICAgIC4gJG1vZC0+bGFuZygnbmFtZWltYWdlcycpDQogICAgICAgICAgICAgICAgICAgLiAnIiB0aXRsZT0iJw0KICAgICAgICAgICAgICAgICAgIC4gJG1vZC0+bGFuZygnbmFtZWltYWdlcycpDQogICAgICAgICAgICAgICAgICAgLiAnIiBzcmM9IicNCiAgICAgICAgICAgICAgICAgICAvLy4gJFJvb3RVUkwNCiAgICAgICAgICAgICAgICAgICAuICR1cmxleHQgLiAnJmk9Jw0KICAgICAgICAgICAgICAgICAgIC4gJGFsaWFzDQogICAgICAgICAgICAgICAgICAgLiAkdA0KICAgICAgICAgICAgICAgICAgIC4gJGkNCiAgICAgICAgICAgICAgICAgICAuICdfJw0KICAgICAgICAgICAgICAgICAgIC4gJHRodW1ic2l6ZQ0KICAgICAgICAgICAgICAgICAgIC4gJ18xLmpwZyZhYz0nDQogICAgICAgICAgICAgICAgICAgLiByYW5kKDAsOSkNCiAgICAgICAgICAgICAgICAgICAuIHJhbmQoMCw5KQ0KICAgICAgICAgICAgICAgICAgIC4gcmFuZCgwLDkpDQogICAgICAgICAgICAgICAgICAgLiAnIiAvPic7DQogICAgICAgICAgICAgICAgICAgDQogICAgICAgICRpbWdzcmMgLj0gc3RyX3JlcGxhY2UoJyZhbXA7JywgJyYnLCAkdG1wdHh0KTsNCg0KICAgICAgICAkaW1nc3JjIC49ICc8L3RkPjx0ZCBzdHlsZT0idmVydGljYWwtYWxpZ246Y2VudGVyOyI+PGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9ImltYWdlJw0KICAgICAgICAgICAgICAgICAgIC4gJGkNCiAgICAgICAgICAgICAgICAgICAuICciIC8+JzsNCiAgICAgICAgICAgICAgICAgICANCiAgICAgICAgJGltZ3NyYyAuPSAnPC90ZD48dGQgc3R5bGU9InZlcnRpY2FsLWFsaWduOmNlbnRlcjt0ZXh0LWFsaWduOnJpZ2h0Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJybV9pbWFnZV8nIA0KICAgICAgICAgICAgICAgICAgIC4gJGFsaWFzDQogICAgICAgICAgICAgICAgICAgLiAnXycNCiAgICAgICAgICAgICAgICAgICAuICRpDQogICAgICAgICAgICAgICAgICAgLiAnIiBuYW1lPSJybV9pbWFnZV8nDQogICAgICAgICAgICAgICAgICAgLiAkYWxpYXMNCiAgICAgICAgICAgICAgICAgICAuICdfJw0KICAgICAgICAgICAgICAgICAgIC4gJGkNCiAgICAgICAgICAgICAgICAgICAuICciIC8+JzsNCiAgICAgICAgICAgICAgICAgICANCiAgICAgICAgJGltZ3NyYyAuPSAnPC90ZD48L3RyPic7DQogICAgICB9DQogICAgICAgDQogICAgICAgICRodG1sIC49ICRpbWdzcmM7IA0KICAgICAgICANCiAgICAgICAgJGh0bWwgLj0gIjx0Ym9keT5cbjwvdGFibGU+XG4iOw0KDQogICAgICB9DQogICAgICBlbHNlDQogICAgICB7DQoNCiAgICAgICAgJGh0bWwgLj0gJzxkaXYgY2xhc3M9InBhZ2V0ZXh0Ij4nOw0KICAgICAgICAkaHRtbCAuPSAnPGltZyBhbHQ9Iic7DQogICAgICAgICRodG1sIC49ICAkbW9kLT5sYW5nKCduYW1laW1hZ2VzJyk7DQogICAgICAgICRodG1sIC49ICAnIiB0aXRsZT0iJzsNCiAgICAgICAgJGh0bWwgLj0gICRtb2QtPmxhbmcoJ25hbWVpbWFnZXMnKTsNCiAgICAgICAgJGh0bWwgLj0gICciIHNyYz0iICc7DQogICAgICAgICRodG1sIC49ICAkUm9vdFVSTDsNCiAgICAgICAgJGh0bWwgLj0gICcvbW9kdWxlcy9DYXRhbG9nZXIvaW1hZ2VzL25vLWltYWdlLmdpZiIgLz4nOw0KICAgICAgICAkaHRtbCAuPSAgJzwvZGl2Pic7DQoNCg0KICAgICAgfQ0KICAgICAgDQogICAgICByZXR1cm4gJGh0bWw7DQogIH0NCiAgDQogIHN0YXRpYyBmdW5jdGlvbiAmUmVuZGVyUGFnZUZpbGVVcExvYWRlcigkYWxpYXMpDQogIHsNCiAgICAkbW9kID0gc2VsZjo6Z2V0X21vZCgpOw0KICAgICRmaWxlY291bnQgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2ZpbGVfY291bnQnLCAwKTsNCiAgICANCiAgICBpZiAoJGZpbGVjb3VudCA9PSAwKSByZXR1cm4gJyc7ICMgd2Ugc2hvdWxkbid0IGV2ZW4gZ2V0IGhlcmUgYnV0IHJldHVybiBlbXB0eSBuZXZlcnRoZWxlc3MuLi4uDQoNCiAgICBsaXN0KCRmaWxlbGlzdCwgJGZpbGV0eXBlKSA9IGNhdEZpbGVzT3BlcmF0aW9uczo6Z2V0RmlsZXMoJGFsaWFzKTsNCiAgICANCiAgICAkaHRtbCA9IHNlbGY6Ol9hZG1GaWxlVXBsb2FkZXJUYWJsZUhlYWRlcigpOyANCiAgICAkaHRtbCAuPSAiPHRib2R5PlxuPHRyPlxuIjsNCiAgICANCiAgICAkZmlsZWNvdW50ID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9maWxlX2NvdW50JywgMCk7DQoNCiAgICBmb3IgKCRpID0gMDsgJGkgPCAkZmlsZWNvdW50OyAkaSsrKQ0KICAgIHsNCiAgICAgICAkZmlsZXNyYyA9ICcnOw0KICAgIA0KICAgICAgJGZpbGVzcmMgLj0gJzx0ZCBzdHlsZT0idmVydGljYWwtYWxpZ246Y2VudGVyO3RleHQtYWxpZ246cmlnaHQ7Ij4nDQogICAgICAgICAgICAgICAgICAuIHNwcmludGYoIiUwM2QiLCAkaSkNCiAgICAgICAgICAgICAgICAgIC4gJzwvdGQ+JzsgDQoNCiAgICAgIGlmIChpc3NldCgkZmlsZWxpc3RbJGldKSkNCiAgICAgIHsNCiAgICAgICAgIA0KICAgICAgICAkdHlwZWltZyA9ICc8aW1nIHNyYz0iJw0KICAgICAgICAgICAgICAgICAgIC4gY21zbXMoKS0+Y29uZmlnWydyb290X3VybCddDQogICAgICAgICAgICAgICAgICAgLiAnL21vZHVsZXMvRmlsZU1hbmFnZXIvaWNvbnMvdGhlbWVzL2RlZmF1bHQvZXh0ZW5zaW9ucy8xNnB4LycNCiAgICAgICAgICAgICAgICAgICAuICRmaWxldHlwZVskaV0NCiAgICAgICAgICAgICAgICAgICAuICcucG5nIiAvPic7DQogICAgICAgIA0KICAgICAgICAkY3VycmZpbGUgPSAkZmlsZWxpc3RbJGldOw0KICAgICAgICANCiAgICAgICAgJGRlbGV0ZUhUTUwgPSAnPGlucHV0IHR5cGU9ImNoZWNrYm94IiIgaWQ9InJtX2ZpbGVfJw0KICAgICAgICAgICAgICAgICAgICAgIC4gJGFsaWFzDQogICAgICAgICAgICAgICAgICAgICAgLiAnXycNCiAgICAgICAgICAgICAgICAgICAgICAuICRpDQogICAgICAgICAgICAgICAgICAgICAgLiAnIiBuYW1lPSJybV9maWxlXycNCiAgICAgICAgICAgICAgICAgICAgICAuICRmaWxlbGlzdFskaV0NCiAgICAgICAgICAgICAgICAgICAgICAuICciIHZhbHVlPSInDQogICAgICAgICAgICAgICAgICAgICAgLiAkZmlsZWxpc3RbJGldDQogICAgICAgICAgICAgICAgICAgICAgLiAnIi8+JzsNCiAgICAgIH0NCiAgICAgIGVsc2UNCiAgICAgIHsNCiAgICAgICAgJHR5cGVpbWcgPSAnPGltZyBzcmM9IicNCiAgICAgICAgICAgICAgICAgICAuIGNtc21zKCktPmNvbmZpZ1sncm9vdF91cmwnXQ0KICAgICAgICAgICAgICAgICAgIC4gJy9tb2R1bGVzL0ZpbGVNYW5hZ2VyL2ljb25zL3RoZW1lcy9kZWZhdWx0L2V4dGVuc2lvbnMvMTZweC8wLnBuZyIgLz4nOw0KICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAkY3VycmZpbGUgPSAkbW9kLT5sYW5nKCduYW1lZmlsZScpDQogICAgICAgICAgICAgICAgICAgLiAnICMgJw0KICAgICAgICAgICAgICAgICAgIC4gKCRpICsgMSk7DQogICAgICAgICAgICAgICAgICAgDQogICAgICAgICRkZWxldGVIVE1MID0gJyZuYnNwJzsNCiAgICAgIH0NCiAgICAgIA0KICAgICAgJGZpbGVzcmMgLj0gJzx0ZCBzdHlsZT0idmVydGljYWwtYWxpZ246Y2VudGVyO3RleHQtYWxpZ246Y2VudGVyOyI+Jw0KICAgICAgICAgICAgICAgICAgLiAgJHR5cGVpbWcNCiAgICAgICAgICAgICAgICAgIC4gJzwvdGQ+JzsNCiAgICAgICAgICAgICAgICAgIA0KICAgICAgDQogICAgICAkZmlsZXNyYyAuPSAnPHRkIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjpjZW50ZXI7dGV4dC1hbGlnbjpsZWZ0OyI+Jw0KICAgICAgICAgICAgICAgICAgLiAgJGN1cnJmaWxlDQogICAgICAgICAgICAgICAgICAuICc8L3RkPic7DQogICAgICANCiAgICAgICRmaWxlc3JjIC49ICc8dGQgc3R5bGU9InZlcnRpY2FsLWFsaWduOm1pZGRsZTsiPiZuYnNwOzxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJmaWxlJw0KICAgICAgICAgICAgICAgICAgLiAkaQ0KICAgICAgICAgICAgICAgICAgLiAnIiAvPic7DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICRmaWxlc3JjIC49ICc8dGQgc3R5bGU9InZlcnRpY2FsLWFsaWduOm1pZGRsZTt0ZXh0LWFsaWduOnJpZ2h0OyI+Jw0KICAgICAgICAgICAgICAgICAgLiAkZGVsZXRlSFRNTA0KICAgICAgICAgICAgICAgICAgLiAnPC90ZD4nOw0KICAgICAgICAgICAgICAgICAgDQoNCiAgICAgICRodG1sIC49ICRmaWxlc3JjOw0KDQogICAgICAkaHRtbCAuPSAiPC90ZD5cbjwvdHI+XG4iOw0KICAgIH0NCg0KICAgICRodG1sIC49ICI8dGJvZHk+XG48L3RhYmxlPlxuIjsNCg0KICAgIHJldHVybiAkaHRtbDsNCiAgICANCiAgfQ0KICANCiAgc3RhdGljIGZ1bmN0aW9uIFJlbmRlclJlY3Vyc2l2ZUlucHV0KCRtb2RlID0gJ2l0ZW1zX29uZScpDQogIHsNCiAgICAkbW9kID0gc2VsZjo6Z2V0X21vZCgpOw0KICAgIA0KICAgICRyZXQgPSAnPGZpZWxkc2V0Pic7IA0KICAgICRyZXQgLj0gJzxsZWdlbmQ+JyAuICRtb2QtPmxhbmcoJ3RpdGxlX2dsb2JhbF9jYXRlZ29yeV9yZWN1cnNlMicpIC4gJzwvbGVnZW5kPic7IA0KICAgICRyZXQgLj0gIjx0YWJsZT5cbiI7IA0KICAgICRyZXQgLj0gIjx0cj5cbiI7IA0KICAgICRyZXQgLj0gIjx0ZD5cbiI7IA0KICAgICRyZXQgLj0gJzxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0icmVjdXJzZSIgdmFsdWU9Iml0ZW1zX2FsbCIgJzsgDQogICAgJHJldCAuPSAoICgkbW9kZSA9PSAnaXRlbXNfYWxsJykgPyAnY2hlY2tlZD0iY2hlY2tlZCInIDogJycgKTsgDQogICAgJHJldCAuPSAnLz4mbmJzcDsnIC4gJG1vZC0+bGFuZygndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9pdGVtc19hbGwnKTsgDQogICAgJHJldCAuPSAnPC90ZD4nOyANCiAgICAkcmV0IC49ICc8L3RyPic7IA0KICAgICRyZXQgLj0gJzx0cj4nOyANCiAgICAkcmV0IC49ICc8dGQ+JzsNCiAgICAkcmV0IC49ICc8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InJlY3Vyc2UiIHZhbHVlPSJpdGVtc19vbmUiICc7DQogICAgJHJldCAuPSAoICgkbW9kZSA9PSAnaXRlbXNfb25lJykgPyAnY2hlY2tlZD0iY2hlY2tlZCInIDogJycpOw0KICAgICRyZXQgLj0gJy8+Jm5ic3A7JyAuICRtb2QtPmxhbmcoJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfaXRlbXNfb25lJykgLiAnPC90ZD48L3RyPic7DQogICAgJHJldCAuPSAnPHRyPjx0ZD48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InJlY3Vyc2UiIHZhbHVlPSJjYXRlZ29yaWVzX2FsbCIgJzsNCiAgICAkcmV0IC49ICggKCAkbW9kZSA9PSAnY2F0ZWdvcmllc19hbGwnICkgPyAnY2hlY2tlZD0iY2hlY2tlZCInIDogJycgKTsNCiAgICAkcmV0IC49ICcvPiZuYnNwOycuJG1vZC0+bGFuZygndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9jYXRlZ29yaWVzX2FsbCcpIC4gJzwvdGQ+PC90cj4nOw0KICAgICRyZXQgLj0gJzx0cj48dGQ+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJyZWN1cnNlIiB2YWx1ZT0iY2F0ZWdvcmllc19vbmUiICc7DQogICAgJHJldCAuPSAoICgkbW9kZSA9PSAnY2F0ZWdvcmllc19vbmUnKSA/ICdjaGVja2VkPSJjaGVja2VkIicgOicnICk7DQogICAgJHJldCAuPSAnLz4mbmJzcDsnLiRtb2QtPmxhbmcoJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfY2F0ZWdvcmllc19vbmUnKSAuICc8L3RkPjwvdHI+JzsNCiAgICAkcmV0IC49ICc8dHI+PHRkPjxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0icmVjdXJzZSIgdmFsdWU9Im1peGVkX2FsbCIgJzsNCiAgICAkcmV0IC49ICggKCRtb2RlID09ICdtaXhlZF9hbGwnKSA/ICdjaGVja2VkPSJjaGVja2VkIicgOiAnJyk7DQogICAgJHJldCAuPSAnLz4mbmJzcDsnLiRtb2QtPmxhbmcoJ3RpdGxlX2NhdGVnb3J5X3JlY3Vyc2VfbWl4ZWRfYWxsJykuJzwvdGQ+PC90cj4nOw0KICAgICRyZXQgLj0gJzx0cj48dGQ+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJyZWN1cnNlIiB2YWx1ZT0ibWl4ZWRfb25lIiAnOw0KICAgICRyZXQgLj0gKCAoJG1vZGUgPT0gJ21peGVkX29uZScpID8gJ2NoZWNrZWQ9ImNoZWNrZWQiJyA6ICcnICk7DQogICAgJHJldCAuPSAnLz4mbmJzcDsnIC4gJG1vZC0+bGFuZygndGl0bGVfY2F0ZWdvcnlfcmVjdXJzZV9taXhlZF9vbmUnKSAuICc8L3RkPjwvdHI+PC90YWJsZT4nOw0KICAgICRyZXQgLj0gJzwvZmllbGRzZXQ+JzsNCiAgICANCiAgICByZXR1cm4gJHJldDsNCiAgfQ0KICANCiAgIyMjIGNvbnZlbmllbmNlIG1ldGhvZHMgLSB1cGRhdGUgbW9kdWxlICMjIw0KICANCiAgLyoqDQogICogQSBmZXcgbWV0aG9kcyB0byBjbGVhbiB1cCBhIGJpdCB0aGUgQ2F0YWxvZ2VyIHVwZ3JhZGUgbWV0aG9kLi4uLg0KICAqIEBhdXRob3IgSm8gTW9yZw0KICAqIEBzaW5jZSBDYXRhbG9nZXIgMS4xMg0KICAqLw0KICANCiAgc3RhdGljIGZ1bmN0aW9uIFVwZGF0ZTA1NigpDQogIHsNCiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOw0KICAgIA0KICAgICRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc19kYl9wcmVmaXgoKSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAibW9kdWxlX2NhdGFsb2dfYXR0ciIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpc190ZXh0YXJlYSBJIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICANCiAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQogICAgDQogICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcNCiAgICAgICAgICAgICAuIGNtc19kYl9wcmVmaXgoKQ0KICAgICAgICAgICAgIC4gJ21vZHVsZV9jYXRhbG9nX2F0dHIgKGlkLHR5cGVfaWQsaXNfdGV4dGFyZWEsYXR0cmlidXRlKSBWQUxVRVMgKD8sPyw/LD8pJzsNCiAgICANCiAgICAkbmV3X2lkID0gJGRiLT5HZW5JRChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX2NhdGFsb2dfYXR0cl9zZXEnKTsNCiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRuZXdfaWQsIDEsIDEsICdub3RlcycpKTsNCg0KICAgICRuZXdfaWQgPSAkZGItPkdlbklEKGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2NhdGFsb2dfYXR0cl9zZXEnKTsNCiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRuZXdfaWQsIDIsIDEsICdub3RlcycpKTsNCg0KICAgICRuZXdfaWQgPSAkZGItPkdlbklEKGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2NhdGFsb2dfYXR0cl9zZXEnKTsNCiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRuZXdfaWQsIDMsIDEsICdub3RlcycpKTsgDQogIH0NCiAgDQogIHN0YXRpYyBmdW5jdGlvbiByZW5kZXJfYWRtaW5fbmF2KCRpZCwgJiRwYXJhbXMsICRyZXR1cm5pZCkNCiAgew0KICAgICRjb25maWcgPSBzZWxmOjokX2NvbmZpZzsNCiAgICAkdGhlbWUgPSBjbXNfdXRpbHM6OmdldF90aGVtZV9vYmplY3QoKTsNCiAgICANCiAgICAkbGlua19hX2ljb24gPSAkdGhpcy0+Q3JlYXRlTGluaygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlkLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHRhZG1pbicsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuaWQsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhlbWUtPkRpc3BsYXlJbWFnZSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpY29ucy90b3BmaWxlcy90ZW1wbGF0ZS5naWYnLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5MYW5nKCdsaXN0dGVtcGwnKSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywgJycsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5c3RlbWljb24nDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoKSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgDQogICAgJGxpbmtfYSA9ICR0aGlzLT5DcmVhdGVMaW5rKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHRhZG1pbicsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXR1cm5pZCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ2xpc3R0ZW1wbCcpLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgpIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAkbGlua19iX2ljb24gPSAkdGhpcy0+Q3JlYXRlTGluaygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlkLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FkbWluYXR0cnMnLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJldHVybmlkLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoZW1lLT5EaXNwbGF5SW1hZ2UoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWNvbnMvdG9wZmlsZXMvaW1hZ2VzLmdpZicsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ21hbmFnZWF0dHJzJyksIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsICcnLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXN0ZW1pY29uJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICANCiAgICAkbGlua19iID0gJHRoaXMtPkNyZWF0ZUxpbmsoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlkLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRtaW5hdHRycycsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXR1cm5pZCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ21hbmFnZWF0dHJzJyksIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCkgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICRsaW5rX2NfaWNvbiA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2dsb2JhbG9wcycsICRyZXR1cm5pZCwgJzxpbWcgY2xhc3M9InN5c3RlbWljb24iIGFsdD0iJy4kdGhpcy0+TGFuZygnZ2xvYmFsb3BzJykuJyIgdGl0bGU9IicuJHRoaXMtPkxhbmcoJ2dsb2JhbG9wcycpLiciIHNyYz0iJy4kY29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy9DYXRhbG9nZXIvaW1hZ2VzL2dsb2JhbC5naWYiIC8+Jyk7DQogICAgJGxpbmtfYyA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2dsb2JhbG9wcycsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2dsb2JhbG9wcycpLCBhcnJheSgpICkuJyA6ICcuJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5wcmVmcycsICRyZXR1cm5pZCwgJHRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3RvcGZpbGVzL3NpdGVwcmVmcy5naWYnLCAkdGhpcy0+TGFuZygnbWFuYWdlcHJlZnMnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgpICkuJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5wcmVmcycsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ21hbmFnZXByZWZzJyksIGFycmF5KCkgKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgJG5hdiA9ICRsaW5rX2FfaWNvbiAuICRsaW5rX2EgLiAnIDogJyAuICRsaW5rX2JfaWNvbiAuICRsaW5rX2IgLiAnIDogJyAgLiAkbGlua19jX2ljb24gLiAkbGlua19jOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICBzZWxmOjokX3NtYXJ0eS0+YXNzaWduKCdpbm5lcm5hdicsICRuYXYpOw0KICB9DQoNCiAgLyoqDQogICogQSBmZXcgbWV0aG9kcyB0byBjbGVhbiB1cCBhIGJpdCB0aGUgQ2F0YWxvZ2VyIHVwZ3JhZGUgbWV0aG9kLi4uLg0KICAqIEVORA0KICAqLw0KICANCn0NCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.CatalogItem.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENhdGFsb2dlciAtIGJ1aWxkIGEgY2F0YWxvZyBvciBwb3J0Zm9saW8gb2Ygc3R1ZmYKIyBWZXJzaW9uOiAwLjEyCiMKIyBDb3B5cmlnaHQgKGMpIDIwMTIsIEZlcm5hbmRvIE1vcmdhZG8gKEpvTW9yZykgam9tb3JnLm1vcmdAZ21haWwuY29tCiMgQ29weXJpZ2h0IChjKSAyMDA2LCBTYW11ZWwgR29sZHN0ZWluIDxzamdAY21zbW9kdWxlcy5jb20+CiMgRm9yIEluZm9ybWF0aW9uLCBTdXBwb3J0LCBCdWcgUmVwb3J0cywgZXRjLCBwbGVhc2UgdmlzaXQgdGhlCiMgQ01TIE1hZGUgU2ltcGxlIEZvcmdlIGF0IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpjbGFzcyBDYXRhbG9nSXRlbSBleHRlbmRzIENvbnRlbnQKewogIGNvbnN0IFRBQl9JVEVNX09QVElPTlMgID0gJ2NjX2NhdGFsb2dlcl9vcHRpb25zJzsKICBjb25zdCBUQUJfSVRFTV9JTUFHRVMgICA9ICdjY19jYXRhbG9nZXJfaW1hZ2VzJzsKICBjb25zdCBUQUJfSVRFTV9GSUxFUyAgICA9ICdjY19jYXRhbG9nZXJfZmlsZXMnOwogIHByaXZhdGUgJF9tb2Q7CiAgcHJpdmF0ZSAkYXR0cnM7CiAgcHJpdmF0ZSAkX2F0dHJfbGlzdCA9IGFycmF5KCk7CiAgcHJvdGVjdGVkICR2YWxpZGF0aW9uID0gRkFMU0U7CiAgIAogIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICB7CiAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7CiAgICAkdGhpcy0+bUNhY2hhYmxlID0gZmFsc2U7CiAgfQoKICBmdW5jdGlvbiBNb2R1bGVOYW1lKCkKICB7CiAgICByZXR1cm4gJ0NhdGFsb2dlcic7CiAgfSAKCiAgZnVuY3Rpb24gSXNDb3B5YWJsZSgpCiAgewogICAgcmV0dXJuIHRydWU7CiAgfQogIAogIGZ1bmN0aW9uIElzRGVmYXVsdFBvc3NpYmxlKCkKICB7CiAgICByZXR1cm4gRkFMU0U7CiAgfSAgCgogIGZ1bmN0aW9uIEZyaWVuZGx5TmFtZSgpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdpdGVtX3BhZ2UnKTsKICB9CiAgCiAgZnVuY3Rpb24gTGFuZygka2V5KQogIHsKICAgIHJldHVybiAkdGhpcy0+Z2V0X21vZCgpLT5MYW5nKCRrZXkpOwogIH0KICAgICAgICAKICBmdW5jdGlvbiBnZXRfbGFuZygka2V5KQogIHsKICAgIHJldHVybiAkdGhpcy0+Z2V0X21vZCgpLT5MYW5nKCRrZXkpOwogIH0KICAgIAogIGZ1bmN0aW9uIGdldF9tb2QoKQogIHsKICAgIGlmKCBpc19udWxsKCR0aGlzLT5fbW9kKSApCiAgICB7CiAgICAgICR0aGlzLT5fbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDYXRhbG9nZXInKTsKICAgIH0KICAgIHJldHVybiAkdGhpcy0+X21vZDsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIEdldFRhYk5hbWVzKCkKICB7CiAgICAkbW9kID0gJHRoaXMtPmdldF9tb2QoKTsKICAgICRoYXNfaW1hZ2VzID0gKGJvb2wpJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9pbWFnZV9jb3VudCcsIDApOwogICAgJGhhc19maWxlcyA9IChib29sKSRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fZmlsZV9jb3VudCcsIDApOyAKICAgIAogICAgJG91dCA9IHBhcmVudDo6R2V0VGFiTmFtZXMoKTsKICAgIAogICAgaWYoIGlzc2V0KCRvdXRbc2VsZjo6VEFCX0lURU1fT1BUSU9OU10pICkgCiAgICB7CiAgICAgICRvdXRbc2VsZjo6VEFCX0lURU1fT1BUSU9OU10gPSAkbW9kLT5sYW5nKCd0YWJfYWR2YW5jZWRfb3B0aW9ucycpOwogICAgfQogICAgCiAgICBpZiggaXNzZXQoJG91dFtzZWxmOjpUQUJfSVRFTV9JTUFHRVNdKSApCiAgICB7CiAgICAgIGlmKCRoYXNfaW1hZ2VzKQogICAgICB7CiAgICAgICAgJG91dFtzZWxmOjpUQUJfSVRFTV9JTUFHRVNdID0gJG1vZC0+bGFuZygndGFiX2ltYWdlcycpOwogICAgICB9CiAgICAgICBlbHNlCiAgICAgIHsKICAgICAgICB1bnNldCgkb3V0W3NlbGY6OlRBQl9JVEVNX0lNQUdFU10pOwogICAgICB9CiAgICB9CiAgICAKICAgIGlmKCAkb3V0W3NlbGY6OlRBQl9JVEVNX0ZJTEVTXSApCiAgICB7CiAgICAgIGlmKCRoYXNfZmlsZXMpCiAgICAgIHsKICAgICAgICAkb3V0W3NlbGY6OlRBQl9JVEVNX0ZJTEVTXSA9ICRtb2QtPmxhbmcoJ3RhYl9maWxlcycpOwogICAgICB9CiAgICAgICBlbHNlCiAgICAgIHsKICAgICAgICB1bnNldCgkb3V0W3NlbGY6OlRBQl9JVEVNX0ZJTEVTXSk7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJG91dDsKICB9CiAgCiAgZnVuY3Rpb24gSGFzQXR0cmlidXRlcygpCiAgewogICAgcmV0dXJuIGlzX2FycmF5KCR0aGlzLT5hdHRycykgJiYgKGNvdW50KCR0aGlzLT5hdHRycykgPiAwKTsKICB9CgogIGZ1bmN0aW9uIGdldFVzZXJBdHRyaWJ1dGVzKCkKICB7CiAgICBpZiggZW1wdHkoJHRoaXMtPmF0dHJzKSApIAogICAgewogICAgICAkdGhpcy0+YXR0cnMgPSBjYXRVc2VyRGVmQXR0cmlidXRlc09wczo6Z2V0VXNlckF0dHJpYnV0ZXMoJ2NhdGFsb2dfYXR0cnMnKTsKICAgICAgJHRoaXMtPl9hdHRyX2xpc3QgPSBhcnJheV9rZXlzKCR0aGlzLT5hdHRycyk7IAogICAgfSAKICB9CiAgCiAgZnVuY3Rpb24gZ2V0QXR0cnMoKQogIHsKICAgICR0aGlzLT5nZXRVc2VyQXR0cmlidXRlcygpOwogICAgcmV0dXJuICR0aGlzLT5hdHRyczsKICB9CiAgCiAgLy8gdG8gcmV2aXNpdC4uLiBjb3BpZWQgZnJvbSBmZXVfcHJvdGVjdGVkX3BhZ2UKICAvLyBpdHMganVzdCBhIGhhY2sgdG8gYXZvaWQgY2FjaGluZyBpc3N1ZXMuLi4gYnV0IG5vdCB0aGUgYmVzdAogIHB1YmxpYyBmdW5jdGlvbiBHZXRNb2RpZmllZERhdGUoKQogIHsKICAgIC8vIG9uIGZyb250ZW5kIHJlcXVlc3RzIHRoaXMgd2lsbCBmb3JjZSB0aGUgdGVtcGxhdGUgdG8gYmUgcmVjb21waWxlZAogICAgLy8gYW5kIHRoZXJlZm9yZSBldmFsdWF0aW9uIHRvIGJlIGRvbmUgZm9yIGVhY2ggcmVxdWVzdC4KICAgIGlmKCBjbXNtcygpLT5pc19mcm9udGVuZF9yZXF1ZXN0KCkgKSByZXR1cm4gdGltZSgpOwogICAgcmV0dXJuIHBhcmVudDo6R2V0TW9kaWZpZWREYXRlKCk7CiAgfQoKICBmdW5jdGlvbiBTZXRQcm9wZXJ0aWVzKCkKICB7CiAgICBwYXJlbnQ6OlNldFByb3BlcnRpZXMoKTsKICAgICR0aGlzLT5BZGRQcm9wZXJ0eSgnc3ViX3RlbXBsYXRlJywgICAgMCwgc2VsZjo6VEFCX0lURU1fT1BUSU9OUyk7CiAgICAkdGhpcy0+QWRkUHJvcGVydHkoJ2ltYWdlcycsICAgICAgICAgIDAsIHNlbGY6OlRBQl9JVEVNX0lNQUdFUyk7CiAgICAkdGhpcy0+QWRkUHJvcGVydHkoJ2ZpbGVzJywgICAgICAgICAgIDAsIHNlbGY6OlRBQl9JVEVNX0ZJTEVTKTsKICAgIAogICAgJHRoaXMtPmdldFVzZXJBdHRyaWJ1dGVzKCk7CiAgICAKICAgICNsZXRzIGFkZCB0aGUgZmllbGRzCiAgICBpZihpc19hcnJheSgkdGhpcy0+YXR0cnMpKQogICAgewogICAgICBmb3JlYWNoICgkdGhpcy0+YXR0cnMgYXMgJGsgPT4gJHRoaXNBdHRyKQogICAgICB7CiAgICAgICAgJHRoaXMtPkFkZFByb3BlcnR5KCR0aGlzQXR0ci0+YWxpYXMsIDExMCArICR0aGlzQXR0ci0+ZmllbGRfb3JkZXIsIHNlbGY6OlRBQl9NQUlOKTsKICAgICAgfQogICAgfSAgIAogIH0KICAKICBwcm90ZWN0ZWQgZnVuY3Rpb24gZGlzcGxheV9zaW5nbGVfZWxlbWVudCgkb25lLCAkYWRkaW5nID0gZmFsc2UpCiAgewogICAgJGdDbXMgPSBjbXNtcygpOwogICAgJG1vZCA9ICR0aGlzLT5nZXRfbW9kKCk7CiAgICAkc21hcnR5ID0gJGdDbXMtPkdldFNtYXJ0eSgpOwoKICAgIGlmKCBpbl9hcnJheSgkb25lLCAkdGhpcy0+X2F0dHJfbGlzdCkgKQogICAgeyAgICAgIAogICAgICByZXR1cm4gY2F0RmllbGRzOjpSZW5kZXJJbnB1dCggJHRoaXMtPmF0dHJzWyRvbmVdLCAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgkdGhpcy0+YXR0cnNbJG9uZV0tPmF0dHIpICk7CiAgICB9ICAgICAKCiAgICBzd2l0Y2goJG9uZSkKICAgIHsKICAgICAgCiAgICBjYXNlICdzdWJfdGVtcGxhdGUnOgogICAgewogICAgICAkc3ViVGVtcGxhdGVzID0gY2F0VGVtcGxhdGVPcGVyYXRpb25zOjpHZXRUZW1wbGF0ZUxpc3RGcm9tSUQoMSk7CgogICAgICAkcmV0ID0gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgJzxsYWJlbCBmb3I9ImluX3N1Yl90ZW1wbGF0ZSI+JyAKICAgICAgICAgICAgICAgICAgICAuICRtb2QtPmxhbmcoJ1N1YicpIAogICAgICAgICAgICAgICAgICAgIC4gJyAnCiAgICAgICAgICAgICAgICAgICAgLiBsYW5nKCd0ZW1wbGF0ZScpIAogICAgICAgICAgICAgICAgICAgIC4gJzo8L2xhYmVsPicsCiAgICAgICAgICAgICAgICAgICAgJG1vZC0+Q3JlYXRlSW5wdXREcm9wZG93bigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3ViX3RlbXBsYXRlJywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdWJUZW1wbGF0ZXMsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdzdWJfdGVtcGxhdGUnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICApOwogICAgICAgCiAgICAgICByZXR1cm4gJHJldDsKICAgIH0KICAgIGJyZWFrOwogICAgCiAgICBjYXNlICdpbWFnZXMnOgogICAgewogICAgICAkcmV0ID0gYXJyYXkoICcnLCBDYXRhbG9nZXJIZWxwZXI6OlJlbmRlclBhZ2VJbWFnZVVwTG9hZGVyKCR0aGlzLT5tQWxpYXMpICk7CiAgICAgIHJldHVybiAkcmV0OwogICAgfQogICAgYnJlYWs7CiAgICAgICAgCiAgICBjYXNlICdmaWxlcyc6CiAgICB7CiAgICAgICRyZXQgPSBhcnJheSggJycsIENhdGFsb2dlckhlbHBlcjo6UmVuZGVyUGFnZUZpbGVVcExvYWRlcigkdGhpcy0+bUFsaWFzKSApOwogICAgICByZXR1cm4gJHJldDsKICAgIH0KICAgIGJyZWFrOwoKICAgIGRlZmF1bHQ6CiAgICAgIHJldHVybiBwYXJlbnQ6OmRpc3BsYXlfc2luZ2xlX2VsZW1lbnQoJG9uZSwgJGFkZGluZyk7CiAgICB9CiAgfQoKCiAgZnVuY3Rpb24gVmFsaWRhdGVEYXRhKCkKICB7CiAgICAkdiA9IHBhcmVudDo6VmFsaWRhdGVEYXRhKCk7CgogICAgaWYgKCR2ICE9PSBGQUxTRSkKICAgIHsKICAgICAgcmV0dXJuICR2OwogICAgfQoKICAgIHJldHVybiAkdGhpcy0+dmFsaWRhdGlvbjsKICB9CiAKICBmdW5jdGlvbiB2YWxpZGF0aW9uRXJyb3IoJG1zZykKICB7CiAgICAKICAgIGlmICghaXNfYXJyYXkoJHRoaXMtPnZhbGlkYXRpb24pKQogICAgewogICAgICAkdGhpcy0+dmFsaWRhdGlvbiA9IGFycmF5KCk7CiAgICB9CgogICAgYXJyYXlfcHVzaCgkdGhpcy0+dmFsaWRhdGlvbiwgJG1zZyk7CiAgfQoKICBmdW5jdGlvbiBGaWxsUGFyYW1zKCRwYXJhbXMsICRlZGl0aW5nID0gZmFsc2UpCiAgewogICAgaWYoICFpc3NldCgkcGFyYW1zKSApIHJldHVybjsKICAgIAogICAgJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwogICAgJG1vZCA9ICR0aGlzLT5nZXRfbW9kKCk7ICAgIAoKICAgICR0aGlzLT52YWxpZGF0aW9uID0gRkFMU0U7CiAgICAKICAgICRwYXJhbWV0ZXJzID0gYXJyYXkoJ3N1Yl90ZW1wbGF0ZScpOwoKICAgIGZvcmVhY2goJHBhcmFtZXRlcnMgYXMgJG9uZXBhcmFtKQogICAgewogICAgICBpZiAoaXNzZXQoJHBhcmFtc1skb25lcGFyYW1dKSkKICAgICAgewogICAgICAgICR0aGlzLT5TZXRQcm9wZXJ0eVZhbHVlKCRvbmVwYXJhbSwgJHBhcmFtc1skb25lcGFyYW1dKTsKICAgICAgfQogICAgfQogICAgCiAgICAkdGhpcy0+Z2V0VXNlckF0dHJpYnV0ZXMoKTsKICAgIAogICAgZm9yZWFjaCAoJHRoaXMtPmF0dHJzIGFzICR0aGlzQXR0cikKICAgIHsKICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJHRoaXNBdHRyLT5zYWZlXSkpCiAgICAgIHsKICAgICAgICAkdGhpcy0+U2V0UHJvcGVydHlWYWx1ZSgkdGhpc0F0dHItPmF0dHIsICRwYXJhbXNbJHRoaXNBdHRyLT5zYWZlXSk7CiAgICAgIH0KICAgIH0gICAgIAogICAgICAKICAgICRtb2QgPSAkdGhpcy0+Z2V0X21vZCgpOwoKICAgIC8vIENvcHkgdGhlIGltYWdlIGZpbGVzLi4uCiAgICAkaW1nY291bnQgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2ltYWdlX2NvdW50JywgJzInKTsKICAgICRoZXJvc2l6ZSA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1faW1hZ2Vfc2l6ZV9oZXJvJywgJzQwMCcpOwogICAgJHRodW1ic2l6ZSA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1faW1hZ2Vfc2l6ZV90aHVtYm5haWwnLCAnNzAnKTsKICAgICRjYXRhbG9nc2l6ZSA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1faW1hZ2Vfc2l6ZV9jYXRhbG9nJywgJzEwMCcpOwogICAgJGNhdGVnb3J5c2l6ZSA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1faW1hZ2Vfc2l6ZV9jYXRlZ29yeScsICc3MCcpOwoKICAgIGZvciAoJGk9MTsgJGk8PSAkaW1nY291bnQ7ICRpKyspCiAgICB7CgogICAgICBpZiAoaXNzZXQoJF9GSUxFU1snaW1hZ2UnIC4gJGldWydzaXplJ10pICYmICRfRklMRVNbJ2ltYWdlJyAuICRpXVsnc2l6ZSddID4gMCkKICAgICAgewoKICAgICAgICBpZiAoISBwcmVnX21hdGNoKCcvXC5qcGckfFwuanBlZyQvaScsICRfRklMRVNbJ2ltYWdlJyAuICRpXVsnbmFtZSddKSkKICAgICAgICB7CiAgICAgICAgICAkdGhpcy0+dmFsaWRhdGlvbkVycm9yKCRtb2QtPkxhbmcoJ2JhZGltYWdlZm9ybWF0JywgJF9GSUxFU1snaW1hZ2UnIC4gJGldWyduYW1lJ10pKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICRzb3VyY2UgPSAkX0ZJTEVTWydpbWFnZScgLiAkaV1bJ3RtcF9uYW1lJ107CiAgICAgICAgICAKICAgICAgICAgICR0YXJnZXQgPSBjbXNfam9pbl9wYXRoKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29uZmlnWyd1cGxvYWRzX3BhdGgnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0RmlsZXNPcGVyYXRpb25zOjpnZXRBc3NldFBhdGgoJ3MnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm1BbGlhcyAuICdfc3JjXycgLiAkaSAuICcuanBnJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgJGNyZXMgPSBjb3B5KCRzb3VyY2UsICR0YXJnZXQpOwoKICAgICAgICAgIGlmICghJGNyZXMpCiAgICAgICAgICB7CiAgICAgICAgICAgICR0aGlzLT52YWxpZGF0aW9uRXJyb3IoICRtb2QtPkxhbmcoJ2JhZGltYWdlJywgJF9GSUxFU1snaW1hZ2UnIC4gJGldWyduYW1lJ10pICk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CgoKICAgIGZvcmVhY2ggKCRwYXJhbXMgYXMgJHRoaXNQYXJhbSA9PiAkdGhpc1BhcmFtVmFsKQogICAgewoKICAgICAgaWYgKHN1YnN0cigkdGhpc1BhcmFtLCAwLCA5KSA9PSAncm1faW1hZ2VfJykKICAgICAgewogICAgICAgICRpbWFnZVNwZWNQYXJ0cyA9IGV4cGxvZGUoJ18nLCAkdGhpc1BhcmFtKTsKICAgICAgICAkbW9kLT5wdXJnZUFsbEltYWdlKCRpbWFnZVNwZWNQYXJ0c1syXSwgJGltYWdlU3BlY1BhcnRzWzNdKTsKICAgICAgfQogICAgfQogICAgCiAgICAvLyBhbmQgdXBsb2FkZWQgZmlsZXMKICAgICRmaWxlY291bnQgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2ZpbGVfY291bnQnLCAwKTsKICAgICR0eXBlbGlzdCA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fZmlsZV90eXBlcycsICdwZGYsc3dmLGZsdixkb2Msb2R0LG9kcyx4bHMnKTsKICAgICR0eXBlcyA9IGV4cGxvZGUoJywnICwgJHR5cGVsaXN0KTsKCiAgICBpZiAoJGZpbGVjb3VudCA+IDApCiAgICB7CiAgICAgICRkaXJzcGVjID0gY21zX2pvaW5fcGF0aCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29uZmlnWyd1cGxvYWRzX3BhdGgnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRGaWxlc09wZXJhdGlvbnM6OmdldEFzc2V0UGF0aCgnZicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5tQWxpYXMgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICBpZiAoIWlzX2RpcigkZGlyc3BlYykpCiAgICAgIHsKICAgICAgICBta2RpcigkZGlyc3BlYyk7CiAgICAgIH0KCiAgICAgIGZvciAoJGk9MDsgJGk8ICRmaWxlY291bnQ7ICRpKyspCiAgICAgIHsKCiAgICAgICAgaWYgKGlzc2V0KCRfRklMRVNbJ2ZpbGUnIC4gJGldWydzaXplJ10pICYmICRfRklMRVNbJ2ZpbGUnIC4gJGldWydzaXplJ10gPiAwKQogICAgICAgIHsKICAgICAgICAgICR0c3BlYyA9IHByZWdfcmVwbGFjZSgnL1teXHdcZFwuXC1fXSsvJywgJ18nLCAkX0ZJTEVTWydmaWxlJyAuICRpXVsnbmFtZSddKTsKICAgICAgICAgIC8vIGtlZXAgb3JpZ2luYWwgaW1hZ2UKICAgICAgICAgICRleHRlbnNpb24gPSBzdWJzdHIoJHRzcGVjLCBzdHJycG9zKCR0c3BlYywgJy4nKSArIDEpOwoKICAgICAgICAgIGlmICghZW1wdHkoJGV4dGVuc2lvbikgJiYgaW5fYXJyYXkoJGV4dGVuc2lvbiwgJHR5cGVzKSkKICAgICAgICAgIHsKICAgICAgICAgICAgJG1vZC0+QXVkaXQoMCwgJG1vZC0+TGFuZygnZnJpZW5kbHluYW1lJyksICRtb2QtPkxhbmcoJ3VwbG9hZGVkJywgYXJyYXkoJHRzcGVjLCAkdGhpcy0+bUFsaWFzKSkpOwogICAgICAgICAgICAKICAgICAgICAgICAgJHRhcmdldCA9IGNtc19qb2luX3BhdGgoJGRpcnNwZWMsICR0c3BlYyk7CiAgICAgICAgICAgICRjcmVzID0gY29weSgkX0ZJTEVTWydmaWxlJyAuICRpXVsndG1wX25hbWUnXSwgJHRhcmdldCk7CgogICAgICAgICAgICBpZiAoISRjcmVzKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgJHRoaXMtPnZhbGlkYXRpb25FcnJvcigkbW9kLT5MYW5nKCdiYWRpbWFnZScsICRfRklMRVNbJ2ltYWdlJyAuICRpXVsnbmFtZSddKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGVsc2UKICAgICAgICAgIHsKICAgICAgICAgICAgJG1vZC0+QXVkaXQoMCwgJG1vZC0+TGFuZygnZnJpZW5kbHluYW1lJyksICRtb2QtPkxhbmcoJ2JhZGZpbGUnLCAkdHNwZWMpKTsKICAgICAgICAgICAgJHRoaXMtPnZhbGlkYXRpb25FcnJvcigkbW9kLT5MYW5nKCdiYWRmaWxlJywgJHRzcGVjKSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgZm9yZWFjaCAoJHBhcmFtcyBhcyAkdGhpc1BhcmFtID0+ICR0aGlzUGFyYW1WYWwpCiAgICB7CgogICAgICBpZiAoc3Vic3RyKCR0aGlzUGFyYW0sIDAsIDgpID09ICdybV9maWxlXycpCiAgICAgIHsKICAgICAgICAkcFNwZWMgPSBwcmVnX3JlcGxhY2UoJy9cLlwufFwvLycsICcnLCAkdGhpc1BhcmFtVmFsKTsKCiAgICAgICAgJHNwZWMgPSBjbXNfam9pbl9wYXRoKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb25maWdbJ3VwbG9hZHNfcGF0aCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdEZpbGVzT3BlcmF0aW9uczo6Z2V0QXNzZXRQYXRoKCdmJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm1BbGlhcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcFNwZWMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICB1bmxpbmsoJHNwZWMpOwogICAgICB9CiAgICB9CgogICAgcGFyZW50OjpGaWxsUGFyYW1zKCRwYXJhbXMpOwogIH0KCiAgZnVuY3Rpb24gUG9wdWxhdGVQYXJhbXMoJiRwYXJhbXMpCiAgewogICAgJHBhcmFtZXRlcnMgPSBhcnJheSgnc3ViX3RlbXBsYXRlJyk7CgogICAgZm9yZWFjaCAoJHBhcmFtZXRlcnMgYXMgJG9uZXBhcmFtKQogICAgewogICAgICAkdG1wID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJG9uZXBhcmFtKTsKCiAgICAgIGlmIChpc3NldCgkdG1wKSAmJiAhIGVtcHR5KCR0bXApKQogICAgICB7CiAgICAgICAgJHBhcmFtc1skb25lcGFyYW1dID0gJHRtcDsKICAgICAgfQogICAgfQogICAgCiAgICAkdGhpcy0+Z2V0VXNlckF0dHJpYnV0ZXMoKTsKICAgICRzYWZlYXR0cmxpc3QgPSBhcnJheSgpOwoKICAgIGZvcmVhY2ggKCR0aGlzLT5hdHRycyBhcyAkdGhpc0F0dHIpCiAgICB7CiAgICAgICR0bXAgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgkdGhpc0F0dHItPmF0dHIpOwoKICAgICAgaWYgKGlzc2V0KCR0bXApICYmICR0bXAhPScnKQogICAgICB7CiAgICAgICAgJHBhcmFtc1skdGhpc0F0dHItPnNhZmVdID0gJHRtcDsKCiAgICAgICAgaWYgKGlzc2V0KCR0aGlzQXR0ci0+YWxpYXMpICYmICR0aGlzQXR0ci0+YWxpYXMhPScnKQogICAgICAgIHsKICAgICAgICAgICRwYXJhbXNbJHRoaXNBdHRyLT5hbGlhc10gPSAkdG1wOwogICAgICAgIH0KCiAgICAgICAgJHRoaXNTYWZlQXR0ciA9IGFycmF5KCk7CiAgICAgICAgJHRoaXNTYWZlQXR0clsnbmFtZSddID0gdWNmaXJzdCgkdGhpc0F0dHItPmF0dHIpOwogICAgICAgICR0aGlzU2FmZUF0dHJbJ2tleSddID0gJ3skJyAuICR0aGlzQXR0ci0+c2FmZSAuICd9JzsKCiAgICAgICAgaWYgKCR0aGlzQXR0ci0+YWxpYXMgIT0gJycpCiAgICAgICAgewogICAgICAgICAgJHRoaXNTYWZlQXR0clsnYWxpYXNrZXknXSA9ICd7JCcgLiAkdGhpc0F0dHItPmFsaWFzIC4gJ30nOwogICAgICAgIH0KCiAgICAgICAgYXJyYXlfcHVzaCgkc2FmZWF0dHJsaXN0LCAkdGhpc1NhZmVBdHRyKTsKICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICAkcGFyYW1zWyR0aGlzQXR0ci0+c2FmZV0gPSAnJzsKICAgICAgICAkcGFyYW1zWyR0aGlzQXR0ci0+YWxpYXNdID0gJyc7CiAgICAgIH0KICAgIH0KICAgICRwYXJhbXNbJ2F0dHJsaXN0J10gPSAkc2FmZWF0dHJsaXN0OwogIH0gCiAgCiAgZnVuY3Rpb24gU2hvdygkcGFyYW0gPSAnJykKICB7CiAgICAkcGFyYW0gPSB0cmltKCRwYXJhbSk7CiAgICAKICAgIGlmKCAhJHBhcmFtICkgJHBhcmFtID0gJ2NvbnRlbnRfZW4nOwogICAgJHBhcmFtID0gc3RyX3JlcGxhY2UoJyAnLCdfJywkcGFyYW0pOyAKICAgIAoKICAgIGlmICgkcGFyYW0gPT0gJ2NvbnRlbnRfZW4nKQogICAgewogICAgICAkdGhpcy0+UG9wdWxhdGVQYXJhbXMoJHBhcmFtcyk7CiAgICAgICRwYXJhbXNbJ2NvbnRlbnRfZW4nXSA9IHBhcmVudDo6U2hvdygkcGFyYW0pOwogICAgICByZXR1cm4gJHRoaXMtPlJlbmRlckNvbnRlbnQoJHBhcmFtcyk7IAogICAgfQogICAgZWxzZQogICAgewogICAgICByZXR1cm4gcGFyZW50OjpTaG93KCRwYXJhbSk7CiAgICB9CiAgfQogCiAgcHJvdGVjdGVkIGZ1bmN0aW9uIFVwZGF0ZSgpCiAgewogICAgcGFyZW50OjpVcGRhdGUoKTsKICAgIAogICAgaWYoICgkdGhpcy0+bU9sZEFsaWFzICE9ICR0aGlzLT5BbGlhcygpKSAmJiAkdGhpcy0+bU9sZEFsaWFzICYmICR0aGlzLT5BbGlhcygpICkKICAgIHsKICAgICAgY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDYXRhbG9nZXInKS0+cmVuYW1lSW1hZ2VzKCR0aGlzLT5tT2xkQWxpYXMsJHRoaXMtPkFsaWFzKCkpOwogICAgfQogICAgCiAgfQoKICBwcm90ZWN0ZWQgZnVuY3Rpb24gSW5zZXJ0KCkKICB7CiAgICBwYXJlbnQ6Okluc2VydCgpOwogICAgCiAgICBpZiggKCR0aGlzLT5tT2xkQWxpYXMgIT0gJHRoaXMtPkFsaWFzKCkpICYmICR0aGlzLT5tT2xkQWxpYXMgJiYgJHRoaXMtPkFsaWFzKCkgKQogICAgewogICAgICBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0NhdGFsb2dlcicpLT5yZW5hbWVJbWFnZXMoJHRoaXMtPm1PbGRBbGlhcywkdGhpcy0+QWxpYXMoKSk7CiAgICB9CiAgICAKICB9CiAgCiAgZnVuY3Rpb24gQWRkUHJvcGVydHkoJG5hbWUsICRwcmlvcml0eSwgJHRhYiA9IHNlbGY6OlRBQl9NQUlOLCAkcmVxdWlyZWQgPSBGQUxTRSkKICB7CiAgICBwYXJlbnQ6OkFkZFByb3BlcnR5KCRuYW1lLCAkcHJpb3JpdHksICR0YWIsICRyZXF1aXJlZCk7CiAgfQogCiAgZnVuY3Rpb24gVXBkYXRlUHJvcGVydHlOYW1lKCRwcm9wTmFtZSwgJHByb3BOZXdOYW1lKQogIHsKICAgICR0ZW1wVmFsdWUgPSAnJzsKICAgIAogICAgaWYgKCR0aGlzLT5pc19rbm93bl9wcm9wZXJ0eSgkcHJvcE5hbWUpKQogICAgewogICAgICAkdGVtcFZhbHVlID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJHByb3BOYW1lKTsKICAgICAgJHRoaXMtPlJlbW92ZVByb3BlcnR5KCRwcm9wTmFtZSxmYWxzZSk7ICAgCiAgICB9CiAgICAKICAgICR0aGlzLT5BZGRFeHRyYVByb3BlcnR5KCRwcm9wTmFtZSk7CiAgICAkdGhpcy0+U2V0UHJvcGVydHlWYWx1ZSgkcHJvcE5ld05hbWUsICR0ZW1wVmFsdWUpOyAgCiAgfSAgIAogCiAgZnVuY3Rpb24gRGVsZXRlUHJvcGVydHkoJHByb3BOYW1lKQogIHsKICAgICR0aGlzLT5SZW1vdmVQcm9wZXJ0eSgkcHJvcE5hbWUsZmFsc2UpOyAgICAgICAKICB9CgogIC8qKgogICogIwogICogCiAgKiBAcGFyYW0gbWl4ZWQgJHBhcmFtcwogICovCiAgZnVuY3Rpb24gUmVuZGVyQ29udGVudCgkcGFyYW1zKQogIHsKICAgICRtb2QgPSAkdGhpcy0+Z2V0X21vZCgpOwogICAgJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwogICAgCiAgICAkc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7CiAgICAkY250T2JqID0gbmV3IHN0ZENsYXNzKCk7CiAgICAKICAgICRzaG93TWlzc2luZyA9ICdfJyAuICRtb2QtPkdldFByZWZlcmVuY2UoJ3Nob3dfbWlzc2luZycsICcxJyk7CgogICAgJGltYWdlQXJyYXkgICAgID0gYXJyYXkoKTsKICAgICRmaWxlQXJyYXkgICAgICA9IGFycmF5KCk7CiAgICAkZmlsZVVybEFycmF5ICAgPSBhcnJheSgpOwogICAgJGZpbGVUeXBlQXJyYXkgID0gYXJyYXkoKTsKICAgICRzcmNJbWdBcnJheSAgICA9IGFycmF5KCk7CiAgICAkdGh1bWJBcnJheSAgICAgPSBhcnJheSgpOwogICAgCiAgICAkaW1nY291bnQgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2ltYWdlX2NvdW50JywgMik7CiAgICAkZmlsZWNvdW50ID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9maWxlX2NvdW50JywgMCk7CiAgICAkZnVsbFNpemUgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2ltYWdlX3NpemVfaGVybycsICc0MDAnKTsKICAgICR0aHVtYlNpemUgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2ltYWdlX3NpemVfdGh1bWJuYWlsJywgJzcwJyk7CiAgICAkcHJ1bmVsaXN0ID0gKCRtb2QtPkdldFByZWZlcmVuY2UoJ3Nob3dfZXh0YW50JywgJzEnKSA9PSAnMScpOwogICAgCiAgICAkYWN0dWFsZmlsZWNvdW50ID0gMDsKCiAgICBmb3JlYWNoKCRwYXJhbXMgYXMgJGtleSA9PiAkdmFsKQogICAgewogICAgICAkc21hcnR5LT5hc3NpZ24oJGtleSwgJHBhcmFtc1ska2V5XSk7CiAgICAgICRjbnRPYmotPiRrZXkgPSAkcGFyYW1zWyRrZXldOwogICAgfQogICAgCiAgICAkY250T2JqLT5kZWZhdWx0X2NvbnRlbnQgPSAkcGFyYW1zWydjb250ZW50X2VuJ107CiAgICAkc21hcnR5LT5hc3NpZ24oJ21haW5fY29udGVudCcsICRwYXJhbXNbJ2NvbnRlbnRfZW4nXSk7CiAgICAKICAgIGlmICgkaW1nY291bnQgPiAwKQogICAgewogICAgICAkc21hcnR5LT5hc3NpZ24oJ0ltYWdlQ291bnQnLCAkaW1nY291bnQpOyAjIG5ldyBpbiAxLjEyIChKTSkKICAgICAgJGNudE9iai0+SW1hZ2VDb3VudCA9ICRpbWdjb3VudDsgICAgICAgICAgIyBuZXcgaW4gMS4xMiAoSk0pCgogICAgICBmb3IgKCRpID0gMSA7ICRpIDw9ICRpbWdjb3VudCA7ICRpKyspCiAgICAgIHsKICAgICAgICAKICAgICAgICBpZiggISRwcnVuZWxpc3QgfHwgY2F0RmlsZXNPcGVyYXRpb25zOjpzcmNFeGlzdHMoJHRoaXMtPm1BbGlhcywgJGkpICkKICAgICAgICB7CiAgICAgICAgICAkcHJvcHZhbHVlID0gY2F0RmlsZXNPcGVyYXRpb25zOjppbWFnZVNwZWMoJHRoaXMtPm1BbGlhcywgJ2YnLCAkaSwgJGZ1bGxTaXplKTsKICAgICAgICAgICRwcm9wTmFtZSA9ICdpbWFnZV8nIC4gJGkgLiAnX3VybCc7CiAgICAgICAgICAkY250T2JqLT4kcHJvcE5hbWUgPSAkcHJvcHZhbHVlOwogICAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCRwcm9wTmFtZSwgJHByb3B2YWx1ZSk7CiAgICAgICAgICBhcnJheV9wdXNoKCRpbWFnZUFycmF5LCAkcHJvcHZhbHVlKTsKCiAgICAgICAgICAkcHJvcHZhbHVlID0gY2F0RmlsZXNPcGVyYXRpb25zOjppbWFnZVNwZWMoJHRoaXMtPm1BbGlhcywgJ3QnLCAkaSwgJHRodW1iU2l6ZSk7CiAgICAgICAgICAkcHJvcE5hbWUgPSAnaW1hZ2VfdGh1bWJfJyAuICRpIC4gJ191cmwnOwogICAgICAgICAgJGNudE9iai0+JHByb3BOYW1lID0gJHByb3B2YWx1ZTsKICAgICAgICAgICRzbWFydHktPmFzc2lnbigkcHJvcE5hbWUsICRwcm9wdmFsdWUpOwogICAgICAgICAgYXJyYXlfcHVzaCgkdGh1bWJBcnJheSwgJHByb3B2YWx1ZSk7CiAgICAgICAgICAKICAgICAgICAgICRwcm9wdmFsdWUgPSBjYXRGaWxlc09wZXJhdGlvbnM6OnNyY0ltYWdlU3BlYygkdGhpcy0+bUFsaWFzLCAkaSk7CiAgICAgICAgICAkcHJvcE5hbWUgPSAnc3JjX2ltYWdlXycgLiAkaSAuICdfdXJsJzsKICAgICAgICAgICRjbnRPYmotPiRwcm9wTmFtZSA9ICRwcm9wdmFsdWU7CiAgICAgICAgICAkc21hcnR5LT5hc3NpZ24oJHByb3BOYW1lLCAkcHJvcHZhbHVlKTsKICAgICAgICAgIGFycmF5X3B1c2goJHNyY0ltZ0FycmF5LCAkcHJvcHZhbHVlKTsgICAgICAgICAgCiAgICAgICAgfQogICAgICAgICAgICAgICAgICAKICAgICAgfQogICAgICAgICAgCiAgICB9CiAgICAKICAgIGlmICgkZmlsZWNvdW50ID4gMCkKICAgIHsKICAgICAgbGlzdCgkZmlsZUFycmF5LCAkZmlsZVR5cGVBcnJheSkgPSBjYXRGaWxlc09wZXJhdGlvbnM6OmdldEZpbGVzKCR0aGlzLT5tQWxpYXMpOwoKICAgICAgZm9yZWFjaCAoJGZpbGVBcnJheSBhcyAkaSA9PiAkdikKICAgICAgeyAgIAogICAgICAgICRwcm9wdmFsdWUgPSAkY29uZmlnWyd1cGxvYWRzX3VybCddCiAgICAgICAgICAgICAgICAgICAgIC4gJy8nIAogICAgICAgICAgICAgICAgICAgICAuIGNhdEZpbGVzT3BlcmF0aW9uczo6Z2V0QXNzZXRQYXRoKCdmJykKICAgICAgICAgICAgICAgICAgICAgLiAnLycKICAgICAgICAgICAgICAgICAgICAgLiAkdGhpcy0+bUFsaWFzCiAgICAgICAgICAgICAgICAgICAgIC4gJy8nCiAgICAgICAgICAgICAgICAgICAgIC4gJGZpbGVBcnJheVskaV07CgogICAgICAgICRwcm9wTmFtZSA9ICdmaWxlXycgLiAoJGkgKyAxKSAuICdfdXJsJzsKICAgICAgICAkY250T2JqLT4kcHJvcE5hbWUgPSAkcHJvcHZhbHVlOwogICAgICAgICRzbWFydHktPmFzc2lnbigkcHJvcE5hbWUsICRwcm9wdmFsdWUpOwogICAgICAgIGFycmF5X3B1c2goJGZpbGVVcmxBcnJheSwgJHByb3B2YWx1ZSk7CiAgICAgICAgCiAgICAgICAgJHByb3B2YWx1ZSA9ICRmaWxlQXJyYXlbJGldOwogICAgICAgICRwcm9wTmFtZSA9ICdmaWxlXycgLiAoJGkgKyAxKSAuICdfbmFtZSc7CiAgICAgICAgJGNudE9iai0+JHByb3BOYW1lID0gJHByb3B2YWx1ZTsgICAgICAgICAgIAogICAgICAgICRzbWFydHktPmFzc2lnbigkcHJvcE5hbWUsICRwcm9wdmFsdWUpOyAKICAgICAgICAgICAgICAgCiAgICAgICAgJHByb3B2YWx1ZSA9ICRmaWxlVHlwZUFycmF5WyRpXTsKICAgICAgICAkcHJvcE5hbWUgPSAnZmlsZV8nIC4gKCRpICsgMSkgLiAnX2V4dCc7CiAgICAgICAgJGNudE9iai0+JHByb3BOYW1lID0gJHByb3B2YWx1ZTsgICAgICAgICAgIAogICAgICAgICRzbWFydHktPmFzc2lnbigkcHJvcE5hbWUsICRwcm9wdmFsdWUpOwoKICAgICAgICAkYWN0dWFsZmlsZWNvdW50ICs9IDE7CiAgICAgIH0KICAgIH0gIAogICAgCiAgICAkY250T2JqLT5hdHRybGlzdCA9ICRwYXJhbXNbJ2F0dHJsaXN0J107CiAgICAkY250T2JqLT5pbWFnZV91cmxfYXJyYXkgPSAkaW1hZ2VBcnJheTsKICAgICRjbnRPYmotPmZpbGVfdXJsX2FycmF5ID0gJGZpbGVVcmxBcnJheTsKICAgICRjbnRPYmotPmZpbGVfbmFtZV9hcnJheSA9ICRmaWxlQXJyYXk7CiAgICAkY250T2JqLT5maWxlX2V4dF9hcnJheSA9ICRmaWxlVHlwZUFycmF5OwogICAgJGNudE9iai0+ZmlsZV9jb3VudCA9ICRmaWxlY291bnQ7CiAgICAkY250T2JqLT5pbWFnZV90aHVtYl91cmxfYXJyYXkgPSAkdGh1bWJBcnJheTsKICAgICRjbnRPYmotPnNyY19pbWFnZV91cmxfYXJyYXkgPSAkc3JjSW1nQXJyYXk7CiAgICAgICAgCiAgICAkc21hcnR5LT5hc3NpZ24oJ2F0dHJsaXN0JywgJHBhcmFtc1snYXR0cmxpc3QnXSk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2ltYWdlX3VybF9hcnJheScsICRpbWFnZUFycmF5KTsKICAgICRzbWFydHktPmFzc2lnbignZmlsZV91cmxfYXJyYXknLCAkZmlsZVVybEFycmF5KTsKICAgICRzbWFydHktPmFzc2lnbignZmlsZV9uYW1lX2FycmF5JywgJGZpbGVBcnJheSk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2ZpbGVfZXh0X2FycmF5JywgJGZpbGVUeXBlQXJyYXkpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdmaWxlX2NvdW50JywgJGZpbGVjb3VudCk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2ltYWdlX3RodW1iX3VybF9hcnJheScsICR0aHVtYkFycmF5KTsKICAgICRzbWFydHktPmFzc2lnbignc3JjX2ltYWdlX3VybF9hcnJheScsICRzcmNJbWdBcnJheSk7CiAgICAkbW9kLT5zbWFydHlCYXNpY3MoKTsKICAgIAogICAgJHNtYXJ0eS0+YXNzaWduKCdjdGxnJywgJGNudE9iaik7CgogICAgJGNhY2hlX2lkID0gJ19pdG1fJyAuIG1kNSggc2VyaWFsaXplKCRwYXJhbXMpICk7CiAgICAkY29tcGlsZV9pZCA9ICdDYXRhbG9nZXJfJyAuICR0aGlzLT5tSWQ7CiAgICAKICAgICMgbm90ZTogdGhpcyBtYXkgdGhyb3cgYW5kIG9kZCBleGNlcHRpb24gZnJvbSBzbWFydHkgaWYgdGhlcmUgdXMgQU5ZIGVycm9yIG9uIHRoZSB0ZW1wbGF0ZQogICAgIyB0cmllZCB0byBjYXRjaCB0aGUgZXhjZXB0aW9ucyBidXQgZGlkbid0IHdvcmsgc28uLi4uIChKTSkKICAgICRjb250ZW50ID0gJHNtYXJ0eS0+ZmV0Y2goCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1vZC0+R2V0RGF0YWJhc2VSZXNvdXJjZSgnY2F0YWxvZ18nIC4gJHBhcmFtc1snc3ViX3RlbXBsYXRlJ10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjYWNoZV9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29tcGlsZV9pZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgcmV0dXJuICRjb250ZW50OwogICAgICAKICB9Cgp9Cj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.CatalogPrintable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogQ2F0YWxvZ2VyIC0gYnVpbGQgYSBjYXRhbG9nIG9yIHBvcnRmb2xpbyBvZiBzdHVmZg0KIyBWZXJzaW9uOiAwLjEyDQojDQojIENvcHlyaWdodCAoYykgMjAxMiwgRmVybmFuZG8gTW9yZ2FkbyAoSm9Nb3JnKSBqb21vcmcubW9yZ0BnbWFpbC5jb20NCiMgQ29weXJpZ2h0IChjKSAyMDA2LCBTYW11ZWwgR29sZHN0ZWluIDxzamdAY21zbW9kdWxlcy5jb20+DQojIEZvciBJbmZvcm1hdGlvbiwgU3VwcG9ydCwgQnVnIFJlcG9ydHMsIGV0YywgcGxlYXNlIHZpc2l0IHRoZQ0KIyBDTVMgTWFkZSBTaW1wbGUgRm9yZ2UgYXQgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA2IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBDQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpjbGFzcyBDYXRhbG9nUHJpbnRhYmxlIGV4dGVuZHMgQ29udGVudA0Kew0KICBjb25zdCBUQUJfUFJJTlRfT1BUSU9OUyAgICAgPSAnY2NfY2F0YWxvZ2VyX29wdGlvbnMnOw0KICBjb25zdCBUQUJfUFJJTlRfRklFTERTTElTVCAgPSAnY2NfY2F0YWxvZ2VyX2ZpZWxkc2xpc3QnOw0KICANCiAgcHJpdmF0ZSAkX21vZDsNCiAgcHJpdmF0ZSAkYXR0cnM7DQogIHByaXZhdGUgJF9hdHRyX2xpc3QgPSBhcnJheSgpOw0KICBwcm90ZWN0ZWQgJHZhbGlkYXRpb24gPSBGQUxTRTsNCiAgICANCiAgDQogIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkNCiAgew0KICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoKTsNCiAgICAkdGhpcy0+bUNhY2hhYmxlID0gZmFsc2U7DQogIH0NCiAgDQogIGZ1bmN0aW9uIE1vZHVsZU5hbWUoKQ0KICB7DQogICAgcmV0dXJuICdDYXRhbG9nZXInOw0KICB9IA0KDQogIGZ1bmN0aW9uIElzQ29weWFibGUoKQ0KICB7DQogICAgcmV0dXJuIHRydWU7DQogIH0NCiAgDQogIGZ1bmN0aW9uIElzRGVmYXVsdFBvc3NpYmxlKCkNCiAgew0KICAgIHJldHVybiBGQUxTRTsNCiAgfSANCiAgDQogIGZ1bmN0aW9uIEZyaWVuZGx5TmFtZSgpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2NhdGFsb2dfcHJpbnRhYmxlJyk7DQogIH0NCiAgDQogIGZ1bmN0aW9uIExhbmcoJGtleSkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+Z2V0X21vZCgpLT5MYW5nKCRrZXkpOw0KICB9DQogICAgICAgIA0KICBmdW5jdGlvbiBnZXRfbGFuZygka2V5KQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5nZXRfbW9kKCktPkxhbmcoJGtleSk7DQogIH0NCiAgICANCiAgZnVuY3Rpb24gZ2V0X21vZCgpDQogIHsNCiAgICBpZiggaXNfbnVsbCgkdGhpcy0+X21vZCkgKQ0KICAgIHsNCiAgICAgICR0aGlzLT5fbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDYXRhbG9nZXInKTsNCiAgICB9DQogICAgcmV0dXJuICR0aGlzLT5fbW9kOw0KICB9DQoNCiAgcHVibGljIGZ1bmN0aW9uIEdldFRhYk5hbWVzKCkNCiAgew0KICAgICRtb2QgPSAkdGhpcy0+Z2V0X21vZCgpOw0KICAgICRvdXQgPSBwYXJlbnQ6OkdldFRhYk5hbWVzKCk7DQogICAgDQogICAgaWYoIGlzc2V0KCRvdXRbc2VsZjo6VEFCX1BSSU5UX09QVElPTlNdKSApIA0KICAgIHsNCiAgICAgICRvdXRbc2VsZjo6VEFCX1BSSU5UX09QVElPTlNdID0gJG1vZC0+bGFuZygndGFiX2FkdmFuY2VkX29wdGlvbnMnKTsNCiAgICB9DQogICAgICAgIA0KICAgIGlmKCBpc3NldCgkb3V0W3NlbGY6OlRBQl9QUklOVF9GSUVMRFNMSVNUXSkgKSANCiAgICB7DQogICAgICAkb3V0W3NlbGY6OlRBQl9QUklOVF9GSUVMRFNMSVNUXSA9ICRtb2QtPmxhbmcoJ3RhYl9maWVsZHNfbGlzdCcpOw0KICAgIH0NCg0KICAgIHJldHVybiAkb3V0Ow0KICB9DQogIA0KICAgZnVuY3Rpb24gSGFzQXR0cmlidXRlcygpDQogIHsNCiAgICByZXR1cm4gaXNfYXJyYXkoJHRoaXMtPmF0dHJzKSAmJiAoY291bnQoJHRoaXMtPmF0dHJzKSA+IDApOw0KICB9DQogIA0KICBmdW5jdGlvbiBnZXRBdHRycygpDQogIHsNCiAgICAkdGhpcy0+Z2V0VXNlckF0dHJpYnV0ZXMoKTsNCiAgICByZXR1cm4gJHRoaXMtPmF0dHJzOw0KICB9DQogIA0KICBmdW5jdGlvbiBnZXRVc2VyQXR0cmlidXRlcygpDQogIHsNCiAgICBpZiggZW1wdHkoJHRoaXMtPmF0dHJzKSApIA0KICAgIHsNCiAgICAgICR0aGlzLT5hdHRycyA9IGNhdFVzZXJEZWZBdHRyaWJ1dGVzT3BzOjpnZXRVc2VyQXR0cmlidXRlcygnY2F0YWxvZ19jYXRfYXR0cnMnKTsNCiAgICAgICR0aGlzLT5fYXR0cl9saXN0ID0gYXJyYXlfa2V5cygkdGhpcy0+YXR0cnMpOyANCiAgICB9IA0KICB9DQogIA0KICAvLyB0byByZXZpc2l0Li4uIGNvcGllZCBmcm9tIGZldV9wcm90ZWN0ZWRfcGFnZQ0KICAvLyBpdHMganVzdCBhIGhhY2sgdG8gYXZvaWQgY2FjaGluZyBpc3N1ZXMuLi4gYnV0IG5vdCB0aGUgYmVzdA0KICBwdWJsaWMgZnVuY3Rpb24gR2V0TW9kaWZpZWREYXRlKCkNCiAgew0KICAgIC8vIG9uIGZyb250ZW5kIHJlcXVlc3RzIHRoaXMgd2lsbCBmb3JjZSB0aGUgdGVtcGxhdGUgdG8gYmUgcmVjb21waWxlZA0KICAgIC8vIGFuZCB0aGVyZWZvcmUgZXZhbHVhdGlvbiB0byBiZSBkb25lIGZvciBlYWNoIHJlcXVlc3QuDQogICAgaWYoIGNtc21zKCktPmlzX2Zyb250ZW5kX3JlcXVlc3QoKSApIHJldHVybiB0aW1lKCk7DQogICAgcmV0dXJuIHBhcmVudDo6R2V0TW9kaWZpZWREYXRlKCk7DQogIH0NCiAgDQogIGZ1bmN0aW9uIFNldFByb3BlcnRpZXMoKQ0KICB7DQogICAgcGFyZW50OjpTZXRQcm9wZXJ0aWVzKCk7DQogICAgJHRoaXMtPkFkZFByb3BlcnR5KCdzdWJfdGVtcGxhdGUnLCAgICAwLCBzZWxmOjpUQUJfUFJJTlRfT1BUSU9OUyk7DQogICAgJHRoaXMtPkFkZFByb3BlcnR5KCdzb3J0X29yZGVyJywgICAgICAxLCBzZWxmOjpUQUJfUFJJTlRfT1BUSU9OUyk7DQogICAgJHRoaXMtPkFkZFByb3BlcnR5KCdmaWVsZGxpc3QnLCAgICAgICAwLCBzZWxmOjpUQUJfUFJJTlRfRklFTERTTElTVCk7DQogICAgI1R1cm4gb24gcHJldmlldw0KICAgICR0aGlzLT5tUHJldmlldyA9IHRydWU7DQogICAgI1R1cm4gb2ZmIGNhY2hpbmcNCiAgICAkdGhpcy0+bUNhY2hhYmxlID0gZmFsc2U7DQogIH0NCiAgDQogIHByb3RlY3RlZCBmdW5jdGlvbiBkaXNwbGF5X3NpbmdsZV9lbGVtZW50KCRvbmUsICRhZGRpbmcgPSBmYWxzZSkNCiAgew0KICAgICRnQ21zID0gY21zbXMoKTsNCiAgICAkbW9kID0gJHRoaXMtPmdldF9tb2QoKTsNCiAgICAkc21hcnR5ID0gJGdDbXMtPkdldFNtYXJ0eSgpOw0KDQogICAgc3dpdGNoKCRvbmUpDQogICAgew0KICAgICAgDQogICAgY2FzZSAnZmllbGRsaXN0JzoNCiAgICB7DQogICAgICAkaXRlbSA9IG5ldyBDYXRhbG9nSXRlbSgpOw0KICAgICAgJGl0ZW1BdHRycyA9ICRpdGVtLT5nZXRBdHRycygpOw0KICAgICAgJGF0dHJQaWNrID0gJyc7DQogICAgICAkc2VsQXR0cnMgPSBleHBsb2RlKCAnLCcsICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdmaWVsZGxpc3QnKSApOw0KICAgICAgDQogICAgICBmb3JlYWNoICgkaXRlbUF0dHJzIGFzICR0aGlzQXR0cikNCiAgICAgIHsNCiAgICAgICAgJGF0dHJQaWNrIC49ICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImZpZWxkbGlzdFtdIiB2YWx1ZT0iJyAuICR0aGlzQXR0ci0+YXR0ciAuICciICc7DQogICAgICAgIA0KICAgICAgICBpZiAoIGluX2FycmF5KCR0aGlzQXR0ci0+YXR0ciwgJHNlbEF0dHJzKSApDQogICAgICAgIHsNCiAgICAgICAgICAkYXR0clBpY2sgLj0gJyBjaGVja2VkPSJjaGVja2VkIic7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgICRhdHRyUGljayAuPSAnIC8+Jm5ic3A7JyAuICR0aGlzQXR0ci0+YXR0ciAuICc8YnIgLz4nOw0KICAgICAgfQ0KDQogICAgICAkcmV0ID0gYXJyYXkoJHRoaXMtPkxhbmcoJ3doaWNoX2F0dHJpYnV0ZXMnKSwgJGF0dHJQaWNrKTsNCiAgICAgICANCiAgICAgICByZXR1cm4gJHJldDsNCiAgICB9DQogICAgICAgICAgICAgDQogICAgY2FzZSAnc3ViX3RlbXBsYXRlJzoNCiAgICB7DQogICAgICAkc3ViVGVtcGxhdGVzID0gY2F0VGVtcGxhdGVPcGVyYXRpb25zOjpHZXRUZW1wbGF0ZUxpc3RGcm9tSUQoMyk7DQoNCiAgICAgICRyZXQgPSBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgJzxsYWJlbCBmb3I9ImluX3N1Yl90ZW1wbGF0ZSI+JyANCiAgICAgICAgICAgICAgICAgICAgLiAkbW9kLT5sYW5nKCdTdWInKSANCiAgICAgICAgICAgICAgICAgICAgLiAnICcNCiAgICAgICAgICAgICAgICAgICAgLiBsYW5nKCd0ZW1wbGF0ZScpIA0KICAgICAgICAgICAgICAgICAgICAuICc6PC9sYWJlbD4nLA0KICAgICAgICAgICAgICAgICAgICAkbW9kLT5DcmVhdGVJbnB1dERyb3Bkb3duKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1Yl90ZW1wbGF0ZScsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN1YlRlbXBsYXRlcywgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnc3ViX3RlbXBsYXRlJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgICAgICApOw0KICAgICAgIA0KICAgICAgIHJldHVybiAkcmV0Ow0KICAgIH0NCiAgICBicmVhazsNCg0KICAgIGNhc2UgJ3NvcnRfb3JkZXInOg0KICAgIHsNCiAgICAgICRyZXQgPSBhcnJheSgpOw0KICAgICAgDQogICAgICAkc28gPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnc29ydF9vcmRlcicpOw0KDQogICAgICBpZiAoJHNvID09ICcnKQ0KICAgICAgew0KICAgICAgICAgICRzbyA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2NhdGVnb3J5X3NvcnRfb3JkZXInLCAnbmF0dXJhbCcpOw0KICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgJHJldCA9IGFycmF5KA0KICAgICAgICAgICAgICAgICAgICAkbW9kLT5MYW5nKCd0aXRsZV9nbG9iYWxfaXRlbV9zb3J0X29yZGVyMicpLCANCiAgICAgICAgICAgICAgICAgICAgJG1vZC0+Q3JlYXRlSW5wdXREcm9wZG93bigNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvcnRfb3JkZXInLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbW9kLT5MYW5nKCduYXR1cmFsX29yZGVyJyk9PiduYXR1cmFsJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1vZC0+TGFuZygnYWxwaGFfb3JkZXInKT0+J2FscGhhJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc28NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgICAgICAgKTsNCiAgICAgIHJldHVybiAkcmV0Ow0KICAgICAgDQogICAgfQ0KICAgIGJyZWFrOyAgICANCg0KICAgIGRlZmF1bHQ6DQogICAgICByZXR1cm4gcGFyZW50OjpkaXNwbGF5X3NpbmdsZV9lbGVtZW50KCRvbmUsICRhZGRpbmcpOw0KICAgIH0NCiAgfQ0KICANCg0KICBmdW5jdGlvbiBGaWxsUGFyYW1zKCRwYXJhbXMsICRlZGl0aW5nID0gdHJ1ZSkNCiAgeyANCiAgICBpZiggIWlzc2V0KCRwYXJhbXMpICkgcmV0dXJuOw0KDQogICAgJHRoaXMtPm1DYWNoYWJsZSA9IGZhbHNlOw0KDQogICAgJHBhcmFtZXRlcnMgPSBhcnJheSgnc3ViX3RlbXBsYXRlJywgJ3NvcnRfb3JkZXInKTsNCg0KICAgIGZvcmVhY2ggKCRwYXJhbWV0ZXJzIGFzICRvbmVwYXJhbSkNCiAgICB7DQogICAgICBpZiAoaXNzZXQoJHBhcmFtc1skb25lcGFyYW1dKSkNCiAgICAgIHsNCiAgICAgICAgJHRoaXMtPlNldFByb3BlcnR5VmFsdWUoJG9uZXBhcmFtLCAkcGFyYW1zWyRvbmVwYXJhbV0pOw0KICAgICAgfQ0KICAgIH0NCg0KICAgIGlmKGlzc2V0KCRwYXJhbXNbJ2ZpZWxkbGlzdCddKSkNCiAgICB7DQogICAgICBpZiAoISBpc19hcnJheSgkcGFyYW1zWydmaWVsZGxpc3QnXSkpDQogICAgICB7DQogICAgICAgICRwYXJhbXNbJ2ZpZWxkbGlzdCddID0gYXJyYXkoJHBhcmFtc1snZmllbGRsaXN0J10pOw0KICAgICAgfQ0KDQogICAgICAkdGhpcy0+U2V0UHJvcGVydHlWYWx1ZSgnZmllbGRsaXN0JywgaW1wbG9kZSgnLCcsICRwYXJhbXNbJ2ZpZWxkbGlzdCddKSk7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAkdGhpcy0+U2V0UHJvcGVydHlWYWx1ZSgnZmllbGRsaXN0JywgJycpOw0KICAgIH0NCg0KCQlwYXJlbnQ6OkZpbGxQYXJhbXMoJHBhcmFtcyk7DQoJfQ0KDQogIGZ1bmN0aW9uIFBvcHVsYXRlUGFyYW1zKCYkcGFyYW1zKQ0KICB7ICAgDQogICAgJHBhcmFtZXRlcnMgPSBhcnJheSgnc3ViX3RlbXBsYXRlJywgJ3NvcnRfb3JkZXInLCAnZmllbGRsaXN0Jyk7DQoNCiAgICBmb3JlYWNoKCRwYXJhbWV0ZXJzIGFzICRvbmVwYXJhbSkNCiAgICB7DQogICAgICAkdG1wID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJG9uZXBhcmFtKTsNCiAgICAgIA0KICAgICAgaWYgKGlzc2V0KCR0bXApICYmICFlbXB0eSgkdG1wKSkNCiAgICAgIHsNCiAgICAgICAgaWYoJG9uZXBhcmFtICA9PSAnZmllbGRsaXN0JykNCiAgICAgICAgew0KICAgICAgICAgICAkcGFyYW1zWyRvbmVwYXJhbV0gPSAkdG1wOw0KICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgJHBhcmFtc1skb25lcGFyYW1dID0gJHRtcDsNCiAgICAgIH0NCiAgICB9DQoJCQ0KICAgICR0aGlzLT5nZXRVc2VyQXR0cmlidXRlcygpOw0KICAgICRzYWZlYXR0cmxpc3QgPSBhcnJheSgpOw0KDQogICAgZm9yZWFjaCAoJHRoaXMtPmF0dHJzIGFzICR0aGlzQXR0cikNCiAgICB7DQogICAgICAkdG1wID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJHRoaXNBdHRyLT5hdHRyKTsNCiAgICAgIA0KICAgICAgaWYgKGlzc2V0KCR0bXApICYmICR0bXAhPScnKQ0KICAgICAgew0KICAgICAgICAkcGFyYW1zWyR0aGlzQXR0ci0+c2FmZV0gPSAkdG1wOw0KICAgICAgICANCiAgICAgICAgaWYgKGlzc2V0KCR0aGlzQXR0ci0+YWxpYXMpICYmICR0aGlzQXR0ci0+YWxpYXMhPScnKQ0KICAgICAgICB7DQogICAgICAgICAgJHBhcmFtc1skdGhpc0F0dHItPmFsaWFzXSA9ICR0bXA7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgICR0aGlzU2FmZUF0dHIgPSBhcnJheSgpOw0KICAgICAgICAkdGhpc1NhZmVBdHRyWyduYW1lJ10gPSB1Y2ZpcnN0KCR0aGlzQXR0ci0+YXR0cik7DQogICAgICAgICR0aGlzU2FmZUF0dHJbJ2tleSddID0gJ3skJyAuICR0aGlzQXR0ci0+c2FmZSAuICd9JzsNCiAgICAgICAgDQogICAgICAgIGlmICgkdGhpc0F0dHItPmFsaWFzICE9ICcnKQ0KICAgICAgICB7DQogICAgICAgICAgJHRoaXNTYWZlQXR0clsnYWxpYXNrZXknXSA9ICd7JCcgLiAkdGhpc0F0dHItPmFsaWFzIC4gJ30nOw0KICAgICAgICB9DQogICAgICAgIGFycmF5X3B1c2goJHNhZmVhdHRybGlzdCwgJHRoaXNTYWZlQXR0cik7DQogICAgICB9DQogICAgICBlbHNlDQogICAgICB7DQogICAgICAgICRwYXJhbXNbJHRoaXNBdHRyLT5zYWZlXSA9ICcnOw0KICAgICAgICAkcGFyYW1zWyR0aGlzQXR0ci0+YWxpYXNdID0gJyc7CQkJDQogICAgICB9DQogICAgfQ0KICAgIA0KICAgICRwYXJhbXNbJ3RpdGxlJ10gPSAkdGhpcy0+bU5hbWU7DQogICAgJHBhcmFtc1snbWVudXRleHQnXSA9ICR0aGlzLT5tTWVudVRleHQ7DQogICAgJHBhcmFtc1sndGVtcGxhdGVfaWQnXSA9ICR0aGlzLT5tVGVtcGxhdGVJZDsNCiAgICAkcGFyYW1zWydhbGlhcyddID0gJHRoaXMtPm1BbGlhczsNCiAgICAkcGFyYW1zWydwYXJlbnRfaWQnXSA9ICR0aGlzLT5tUGFyZW50SWQ7DQogICAgJHBhcmFtc1snYWN0aXZlJ10gPSAkdGhpcy0+bUFjdGl2ZTsNCiAgICAkcGFyYW1zWydzaG93aW5tZW51J109JHRoaXMtPm1TaG93SW5NZW51Ow0KICAgICRwYXJhbXNbJ2F0dHJsaXN0J10gPSAkc2FmZWF0dHJsaXN0OyANCiAgfQ0KICANCiAgZnVuY3Rpb24gU2hvdygkcGFyYW0gPSAnJykNCiAgew0KICAgICRwYXJhbSA9IHRyaW0oJHBhcmFtKTsNCiAgICANCiAgICBpZiggISRwYXJhbSApICRwYXJhbSA9ICdjb250ZW50X2VuJzsNCiAgICAkcGFyYW0gPSBzdHJfcmVwbGFjZSgnICcsJ18nLCRwYXJhbSk7IA0KICAgIA0KICAgIGlmICgkcGFyYW0gPT0gJ2NvbnRlbnRfZW4nKQ0KICAgIHsNCiAgICAgICR0aGlzLT5Qb3B1bGF0ZVBhcmFtcygkcGFyYW1zKTsNCiAgICAgICRwYXJhbXNbJ2NvbnRlbnRfZW4nXSA9IHBhcmVudDo6U2hvdygkcGFyYW0pOw0KICAgICAgcmV0dXJuICR0aGlzLT5SZW5kZXJDb250ZW50KCRwYXJhbXMpOzsgIA0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAgcmV0dXJuIHBhcmVudDo6U2hvdygkcGFyYW0pOw0KICAgIH0NCiAgfQ0KDQogIHByb3RlY3RlZCBmdW5jdGlvbiBVcGRhdGUoKQ0KICB7DQogICAgcGFyZW50OjpVcGRhdGUoKTsNCiAgICANCiAgICBpZiggKCR0aGlzLT5tT2xkQWxpYXMgIT0gJHRoaXMtPkFsaWFzKCkpICYmICR0aGlzLT5tT2xkQWxpYXMgJiYgJHRoaXMtPkFsaWFzKCkgKQ0KICAgIHsNCiAgICAgIGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ2F0YWxvZ2VyJyktPnJlbmFtZUltYWdlcygkdGhpcy0+bU9sZEFsaWFzLCR0aGlzLT5BbGlhcygpKTsNCiAgICB9DQogIH0NCg0KICBwcm90ZWN0ZWQgZnVuY3Rpb24gSW5zZXJ0KCkNCiAgew0KICAgIHBhcmVudDo6SW5zZXJ0KCk7DQogICAgDQogICAgaWYoICgkdGhpcy0+bU9sZEFsaWFzICE9ICR0aGlzLT5BbGlhcygpKSAmJiAkdGhpcy0+bU9sZEFsaWFzICYmICR0aGlzLT5BbGlhcygpICkNCiAgICB7DQogICAgICBjYXRGaWxlc09wZXJhdGlvbnM6OnJlbmFtZUltYWdlcyggJHRoaXMtPm1PbGRBbGlhcywgJHRoaXMtPkFsaWFzKCkgKTsNCiAgICB9DQogIH0NCiAgIA0KICBmdW5jdGlvbiBVcGRhdGVQcm9wZXJ0eU5hbWUoJHByb3BOYW1lLCAkcHJvcE5ld05hbWUpDQogIHsNCiAgICAgJHRlbXBWYWx1ZSA9ICcnOw0KICAgICBpZiAoJHRoaXMtPmlzX2tub3duX3Byb3BlcnR5KCRwcm9wTmFtZSkpDQogICAgIHsNCiAgICAgICAgICAkdGVtcFZhbHVlID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJHByb3BOYW1lKTsNCiAgICAgICAgICAkdGhpcy0+UmVtb3ZlUHJvcGVydHkoJHByb3BOYW1lLGZhbHNlKTsgICANCiAgICAgfQ0KICAgICAkdGhpcy0+QWRkRXh0cmFQcm9wZXJ0eSgkcHJvcE5hbWUpOw0KICAgICAkdGhpcy0+U2V0UHJvcGVydHlWYWx1ZSgkcHJvcE5ld05hbWUsICR0ZW1wVmFsdWUpOyAgDQogIH0gICANCg0KICBmdW5jdGlvbiBEZWxldGVQcm9wZXJ0eSgkcHJvcE5hbWUpDQogIHsNCiAgICAkdGhpcy0+UmVtb3ZlUHJvcGVydHkoJHByb3BOYW1lLGZhbHNlKTsgICAgICAgDQogIH0NCg0KICBmdW5jdGlvbiBSZW5kZXJDb250ZW50KCRwYXJhbXMpDQogIHsNCiAgICAkbW9kID0gJHRoaXMtPmdldF9tb2QoKTsNCiAgICAkc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7DQogICAgJGNudE9iaiA9IG5ldyBzdGRDbGFzcygpOw0KICAgIA0KICAgICRzaG93TWlzc2luZyA9ICdfJyAuICRtb2QtPkdldFByZWZlcmVuY2UoJ3Nob3dfbWlzc2luZycsICcxJyk7DQogICAgJHBhcmFtc1snYWxpYXMnXSA9ICcvJzsgICAgICAgICAgICMgPz8/Pw0KICAgICRwYXJhbXNbJ3JlY3Vyc2UnXSA9ICdpdGVtc19hbGwnOyAjID8/Pz8NCg0KICAgIGZvcmVhY2ggKCRwYXJhbXMgYXMgJGtleT0+JHZhbCkNCiAgICB7DQogICAgICAkc21hcnR5LT5hc3NpZ24oJGtleSwgJHBhcmFtc1ska2V5XSk7DQogICAgICAkY250T2JqLT4ka2V5ID0gJHBhcmFtc1ska2V5XTsNCiAgICB9DQogICAgDQogICAgJGNudE9iai0+ZGVmYXVsdF9jb250ZW50ID0gJHBhcmFtc1snY29udGVudF9lbiddOw0KICAgICRzbWFydHktPmFzc2lnbignbWFpbl9jb250ZW50JywgJHBhcmFtc1snY29udGVudF9lbiddKTsNCg0KICAgIGxpc3QoJGN1clBhZ2UsICRwYWdlSXRlbXMpID0gY2F0Q29udGVudE9wZXJhdGlvbnM6OmdldENhdGFsb2dJdGVtc0xpc3QoJHBhcmFtcyk7DQoNCiAgICBpZiAoaXNzZXQoJHBhcmFtc1snc29ydF9vcmRlciddKSAmJiAkcGFyYW1zWydzb3J0X29yZGVyJ10gPT0gJ2FscGhhJykNCiAgICB7DQogICAgICB1c29ydCggJHBhZ2VJdGVtcywgYXJyYXkoImNhdENvbnRlbnRPcGVyYXRpb25zIiwgImNvbnRlbnRhbHBoYSIpICk7DQogICAgfQ0KDQogICAgJGNvdW50ID0gY291bnQoJHBhZ2VJdGVtcyk7DQogICAgDQogICAgJGZsID0gYXJyYXkoKTsNCiAgICANCiAgICBpZiggaXNzZXQoJHBhcmFtc1snZmllbGRsaXN0J10pICkNCiAgICB7DQogICAgICAkZmwgPSBleHBsb2RlKCcsJywgJHBhcmFtc1snZmllbGRsaXN0J10pOw0KICAgIH0NCiAgICAgDQogICAgJGZsZGxpc3QgPSBhcnJheSgpOw0KDQogICAgZm9yZWFjaCgkZmwgYXMgJHRrID0+ICR0dikNCiAgICB7DQogICAgICAkYXR0ciA9IHN0cnRvbG93ZXIocHJlZ19yZXBsYWNlKCcvXFcvJywgJycsICR0dikpOw0KICAgICAgJGZsZGxpc3RbJGF0dHJdID0gJHR2Ow0KICAgIH0NCiAgICANCiAgICAkY250T2JqLT5GaWVsZExpc3QgPSAkZmxkbGlzdDsNCiAgICAkY250T2JqLT5hdHRybGlzdCA9ICRmbGRsaXN0Ow0KICAgICRjbnRPYmotPkl0ZW1zID0gJHBhZ2VJdGVtczsNCiAgICAvL2RlYnVnX2Rpc3BsYXkoJHBhZ2VJdGVtcyk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRwYWdlSXRlbXMpOw0KICAgICRmdWxsU2l6ZSA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1faW1hZ2Vfc2l6ZV9jYXRhbG9nJywgJzEwMCcpOw0KICAgIA0KICAgIA0KICAgICRpbWFnZUFycmF5ID0gYXJyYXkoKTsNCiAgICAvLyRmaWxlQXJyYXkgPSBhcnJheSgpOw0KICAgIC8vJGZpbGVVcmxBcnJheSA9IGFycmF5KCk7DQogICAgLy8kZmlsZVR5cGVBcnJheSA9IGFycmF5KCk7DQogICAgJHNyY0ltZ0FycmF5ID0gYXJyYXkoKTsNCiAgICAkdGh1bWJBcnJheSA9IGFycmF5KCk7DQogICAgDQogICAgJGltYWdlQXJyYXkgPSBhcnJheSgpOw0KICAgICRzcmNJbWdBcnJheSA9IGFycmF5KCk7DQogICAgJF9pbWFnZXMgPSBhcnJheSgpOw0KICAgIA0KICAgICRpbWdjb3VudCA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1faW1hZ2VfY291bnQnLCAyKTsNCiAgICAkZmlsZWNvdW50ID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9maWxlX2NvdW50JywgMCk7DQogICAgJGZ1bGxTaXplID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9pbWFnZV9zaXplX2hlcm8nLCAnNDAwJyk7DQogICAgJHRodW1iU2l6ZSA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1faW1hZ2Vfc2l6ZV90aHVtYm5haWwnLCAnNzAnKTsNCiAgICAkcHJ1bmVsaXN0ID0gKCRtb2QtPkdldFByZWZlcmVuY2UoJ3Nob3dfZXh0YW50JywgJzEnKSA9PSAnMScpOw0KICAgIA0KICAgIGZvciAoJGkgPSAxIDsgJGkgPD0gJGltZ2NvdW50IDsgJGkrKykNCiAgICB7DQogICAgICAkX3VybCA9IGNhdEZpbGVzT3BlcmF0aW9uczo6aW1hZ2VTcGVjKCRjdXJQYWdlLT5BbGlhcygpLCAnY3RmJywgJGksICRmdWxsU2l6ZSk7DQogICAgICAkX3NyY191cmwgPSBjYXRGaWxlc09wZXJhdGlvbnM6OnNyY0ltYWdlU3BlYygkY3VyUGFnZS0+QWxpYXMoKSwgJGkpOw0KICAgICAgYXJyYXlfcHVzaCgkaW1hZ2VBcnJheSwgJF91cmwpOw0KICAgICAgYXJyYXlfcHVzaCgkc3JjSW1nQXJyYXksICRfc3JjX3VybCk7DQogICAgICAkX2ltYWdlc1skaV1bJ3VybCddID0gJF91cmw7DQogICAgICAkX2ltYWdlc1skaV1bJ3NyY191cmwnXSA9ICRfc3JjX3VybDsNCiAgICAgICRzbWFydHktPmFzc2lnbignaW1hZ2VfJyAuICRpIC4gJ191cmwnLCAkX3VybCk7DQogICAgICAkc21hcnR5LT5hc3NpZ24oJ3NyY19pbWFnZV8nLiRpLidfdXJsJywgJF9zcmNfdXJsKTsNCiAgICAgICMkc21hcnR5LT5hc3NpZ24oJ3NyY19pbWFnZV8nLiRpLidfdXJsJywgY2F0RmlsZXNPcGVyYXRpb25zOjpzcmNJbWFnZVNwZWMoJHBhcmFtc1snYWxpYXMnXSwgJGkpKTsgd3RmPz8/Pw0KICAgIH0NCg0KICAgICRjbnRPYmotPkltYWdlc0FycmF5ID0gJF9pbWFnZXM7DQogICAgJGNudE9iai0+aW1hZ2VfdXJsX2FycmF5ID0gJGltYWdlQXJyYXk7DQogICAgJGNudE9iai0+aW1hZ2VfdGh1bWJfdXJsX2FycmF5ID0gJHRodW1iQXJyYXk7DQogICAgDQogICAgJHNtYXJ0eS0+YXNzaWduKCdhdHRybGlzdCcsICRmbGRsaXN0KTsNCg0KICAgICRzbWFydHktPmFzc2lnbignaW1hZ2VfdXJsX2FycmF5JywgJGltYWdlQXJyYXkpOw0KICAgICRzbWFydHktPmFzc2lnbignc3JjX2ltYWdlX3VybF9hcnJheScsICRzcmNJbWdBcnJheSk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdpbWFnZV90aHVtYl91cmxfYXJyYXknLCAkdGh1bWJBcnJheSk7DQogICAgJG1vZC0+c21hcnR5QmFzaWNzKCk7DQogICAgDQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQovLyAgICAkY250T2JqLT5kZWZhdWx0X2NvbnRlbnQgPSAkcGFyYW1zWydfZGVmYXVsdF9jbnQnXTsNCi8vICAgICRjbnRPYmotPm1haW5fY29udGVudCA9ICRwYXJhbXNbJ19kZWZhdWx0X2NudCddOw0KLy8gICAgJHNtYXJ0eS0+YXNzaWduKCdtYWluX2NvbnRlbnQnLCAkcGFyYW1zWydfZGVmYXVsdF9jbnQnXSk7DQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIA0KDQogICAgJHNtYXJ0eS0+YXNzaWduKCdjdGxnJywgJGNudE9iaik7ICAgIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgJGNhY2hlX2lkID0gJ19wcnRfJyAuIG1kNSggc2VyaWFsaXplKCRwYXJhbXMpICk7DQogICAgJGNvbXBpbGVfaWQgPSAnQ2F0YWxvZ2VyXycgLiAkdGhpcy0+bUlkOw0KICAgIA0KICAgIHJldHVybiAkc21hcnR5LT5mZXRjaCgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbW9kLT5HZXREYXRhYmFzZVJlc291cmNlKCdjYXRhbG9nXycgLiAkcGFyYW1zWydzdWJfdGVtcGxhdGUnXSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNhY2hlX2lkLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb21waWxlX2lkDQogICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogIH0NCn0NCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.CatContentBaseType.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmNsYXNzIENhdENvbnRlbnRCYXNlVHlwZSBleHRlbmRzIENvbnRlbnQNCnsNCiAgIyBpbnRlcm5hbA0KICBwcm90ZWN0ZWQgJF9tb2Q7DQogIHByb3RlY3RlZCAkdmFsaWRhdGlvbiA9IEZBTFNFOw0KICANCiAgIyB3ZSBuZWVkIHRoZXNlIHRvIHNldCBzb21lIGRlZmF1bHRzDQogIHByb3RlY3RlZCAkY2F0RXhwaXJlZDsNCiAgcHJvdGVjdGVkICRjYXRVc2VFeHBpcmF0aW9uRGF0ZTsNCiAgcHJvdGVjdGVkICRjYXRFeHBpcmF0aW9uU3RhcnREYXRlOw0KICBwcm90ZWN0ZWQgJGNhdEV4cGlyYXRpb25FbmREYXRlOw0KICANCiAgIyB1c2VyIGF0dHJpYnV0ZXMgYXJyYXkNCiAgcHJvdGVjdGVkICRhdHRyczsNCg0KICBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpDQogIHsNCiAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7DQogIH0NCiAgICANCiAgZnVuY3Rpb24gJmdldF9tb2QoKQ0KICB7DQogICAgaWYoIGlzX251bGwoJHRoaXMtPl9tb2QpICkNCiAgICB7DQogICAgICAkdGhpcy0+X21vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ2F0YWxvZ2VyJyk7DQogICAgfQ0KICAgIHJldHVybiAkdGhpcy0+X21vZDsNCiAgfQ0KICAgICAgDQogIGZ1bmN0aW9uIExhbmcoJGtleSkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+Z2V0X21vZCgpLT5MYW5nKCRrZXkpOw0KICB9DQogICAgICAgIA0KICBmdW5jdGlvbiBnZXRfbGFuZygka2V5KQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5nZXRfbW9kKCktPkxhbmcoJGtleSk7DQogIH0NCiAgDQogIGZ1bmN0aW9uIEdldEFkbWluVGhlbWVOYW1lKCkNCiAgew0KICAgIHJldHVybiBjbXNfdXRpbHM6OmdldF90aGVtZV9vYmplY3QoKS0+R2V0RGVmYXVsdFRoZW1lKCk7IA0KICB9DQogIA0KICBwcm90ZWN0ZWQgZnVuY3Rpb24gU2V0RGVmYXVsdHMoKQ0KICB7DQogICAgJHRlbXAgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnZXhwaXJlZCcpOw0KICAgIA0KICAgIGlmKCAhaXNzZXQoJHRlbXApICkNCiAgICB7DQogICAgICAkdGhpcy0+U2V0UHJvcGVydHlWYWx1ZSgnZXhwaXJlZCcsICR0aGlzLT5jYXRFeHBpcmVkKTsNCiAgICB9DQogICAgDQogICAgJHRlbXAgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgndXNlX2V4cGlyYXRpb25fZGF0ZScpOw0KICAgIA0KICAgIGlmKCAhaXNzZXQoJHRlbXApICkNCiAgICB7DQogICAgICAkdGhpcy0+U2V0UHJvcGVydHlWYWx1ZSgndXNlX2V4cGlyYXRpb25fZGF0ZScsICR0aGlzLT5jYXRVc2VFeHBpcmF0aW9uRGF0ZSk7DQogICAgfQ0KICAgIA0KICAgICR0ZW1wID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2V4cGlyYXRpb25fc3RhcnRfZGF0ZScpOw0KICAgIA0KICAgIGlmKCAhaXNzZXQoJHRlbXApICkNCiAgICB7DQogICAgICAkdGhpcy0+U2V0UHJvcGVydHlWYWx1ZSgnZXhwaXJhdGlvbl9zdGFydF9kYXRlJywgJHRoaXMtPmNhdEV4cGlyYXRpb25TdGFydERhdGUpOw0KICAgIH0NCiAgICANCiAgICAkdGVtcCA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdleHBpcmF0aW9uX2VuZF9kYXRlJyk7DQogICAgDQogICAgaWYoICFpc3NldCgkdGVtcCkgKQ0KICAgIHsNCiAgICAgICR0aGlzLT5TZXRQcm9wZXJ0eVZhbHVlKCdleHBpcmF0aW9uX2VuZF9kYXRlJywgJHRoaXMtPmNhdEV4cGlyYXRpb25FbmREYXRlKTsNCiAgICB9DQogICAgDQogIH0NCiAgDQogIGZ1bmN0aW9uIE1vZHVsZU5hbWUoKQ0KICB7DQogICAgcmV0dXJuICdDYXRhbG9nZXInOw0KICB9IA0KDQogIGZ1bmN0aW9uIElzQ29weWFibGUoKQ0KICB7DQogICAgcmV0dXJuIHRydWU7DQogIH0NCiAgDQogIGZ1bmN0aW9uIElzRGVmYXVsdFBvc3NpYmxlKCkNCiAgew0KICAgIHJldHVybiBGQUxTRTsNCiAgfQ0KDQogIGZ1bmN0aW9uIEdldENyZWF0aW9uRGF0ZSgpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPm1DcmVhdGlvbkRhdGU7DQogIH0NCg0KICBmdW5jdGlvbiBHZXRNb2RpZmllZERhdGUoKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5tTW9kaWZpZWREYXRlOw0KICB9DQoNCiAgZnVuY3Rpb24gSGFzQXR0cmlidXRlcygpDQogIHsNCiAgICByZXR1cm4gaXNfYXJyYXkoJHRoaXMtPmF0dHJzKSAmJiAoY291bnQoJHRoaXMtPmF0dHJzKSA+IDApOw0KICB9DQogIA0KICBmdW5jdGlvbiBTZXRQcm9wZXJ0aWVzKCkNCiAgew0KICAgIHBhcmVudDo6U2V0UHJvcGVydGllcygpOw0KICAgIA0KICAgICR0aGlzLT5nZXRVc2VyQXR0cmlidXRlcygpOw0KICAgIA0KICAgICNsZXRzIGFkZCB0aGUgZmllbGRzDQogICAgaWYgKGlzX2FycmF5KCR0aGlzLT5hdHRycykpDQogICAgew0KICAgICAgZm9yZWFjaCAoJHRoaXMtPmF0dHJzIGFzICR0aGlzQXR0cikNCiAgICAgIHsNCiAgICAgICAgJHRoaXMtPkFkZENvbnRlbnRQcm9wZXJ0eSgkdGhpc0F0dHItPmF0dHIsIDEwMCArICR0aGlzQXR0ci0+ZmllbGRfb3JkZXIpOw0KICAgICAgfQ0KICAgIH0NCg0KICAgICMgc2luY2UgMC4xMiAoSm9Nb3JnKQ0KICAgICR0aGlzLT5BZGRDb250ZW50UHJvcGVydHkoJ2V4cGlyZWQnLCAxMDEpOw0KICAgICR0aGlzLT5BZGRDb250ZW50UHJvcGVydHkoJ3VzZV9leHBpcmF0aW9uX2RhdGUnLCAxMDIpOw0KDQogICAgJHRoaXMtPkFkZENvbnRlbnRQcm9wZXJ0eSgnZXhwaXJhdGlvbl9zdGFydF9kYXRlJywgMTAzKTsNCiAgICAkdGhpcy0+QWRkQ29udGVudFByb3BlcnR5KCdleHBpcmF0aW9uX2VuZF9kYXRlJywgMTA0KTsNCiAgICAgICAgIA0KICAgICMgbGV0J3Mgc2V0IGRlZmF1bHRzICAgDQogICAgDQogICAgLy8gdHVybiBvbiBwcmV2aWV3DQogICAgJHRoaXMtPm1QcmV2aWV3ID0gdHJ1ZTsNCg0KICAgIC8vIHR1cm4gb2ZmIGNhY2hpbmcNCiAgICAkdGhpcy0+bUNhY2hhYmxlID0gZmFsc2U7DQogICAgDQogICAgLy8gbm90IGV4cGlyZWQgYnkgZGVmYXVsdA0KICAgICR0aGlzLT5jYXRFeHBpcmVkID0gZmFsc2U7DQogICAgDQogICAgLy8gZG9uJ3QgdXNlIGV4cGlyYXRpb24gZGF0ZQ0KICAgICR0aGlzLT5hY3RVc2VFeHBpcmF0aW9uRGF0ZSA9IGZhbHNlOw0KICAgIA0KICAgICRub3cgPSB0aW1lKCk7DQogICAgDQogICAgLy8gZGVmYXVsdHMgdG8gbm93DQogICAgJHRoaXMtPmFjdEV4cGlyYXRpb25TdGFydERhdGUgPSAkbm93Ow0KDQogICAgJG5kYXlzID0gKGludCkkdGhpcy0+Z2V0X21vZCgpLT5HZXRQcmVmZXJlbmNlKCdleHBpcnlfaW50ZXJ2YWwnLCAxODApOw0KICAgIGlmKCAkbmRheXMgPT0gMCApDQogICAgew0KICAgICAgJG55ZWFycyA9IDE7DQogICAgICAkZW5kX2RhdGUgPSBzdHJ0b3RpbWUoIHNwcmludGYoICIrJWQgeWVhcnMiLCAkbnllYXJzICksIHRpbWUoKSApOyANCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICRlbmRfZGF0ZSA9IHN0cnRvdGltZSggc3ByaW50ZiggIislZCBkYXlzIiwgJG5kYXlzICksIHRpbWUoKSApOw0KICAgIH0NCiAgICANCiAgICAkdGhpcy0+YWN0RXhwaXJhdGlvbkVuZERhdGUgPSAkZW5kX2RhdGU7DQoNCiAgfQ0KICANCiAgZnVuY3Rpb24gZ2V0VXNlckF0dHJpYnV0ZXMoKQ0KICB7DQogICAgIyBqdXN0IHNvIHdlIGRvbid0IGdldCBhbiBlcnJvcg0KICB9DQogIA0KICBmdW5jdGlvbiBnZXRBdHRycygpDQogIHsNCiAgICAkdGhpcy0+Z2V0VXNlckF0dHJpYnV0ZXMoKTsNCiAgICByZXR1cm4gJHRoaXMtPmF0dHJzOw0KICB9DQoNCiAgZnVuY3Rpb24gRmlsbFBhcmFtcygkcGFyYW1zLCAkZWRpdGluZyA9IGZhbHNlKQ0KICB7DQogICAgDQogICAgaWYoICFpc3NldCgkcGFyYW1zKSApIHJldHVybjsNCg0KICAgICRwYXJhbWV0ZXJzID0gYXJyYXkoJ3N1Yl90ZW1wbGF0ZScsICd1c2VfZXhwaXJhdGlvbl9kYXRlJyk7DQoNCiAgICBmb3JlYWNoKCRwYXJhbWV0ZXJzIGFzICRvbmVwYXJhbSkNCiAgICB7IA0KICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJG9uZXBhcmFtXSkgKQ0KICAgICAgew0KICAgICAgICAkdGhpcy0+U2V0UHJvcGVydHlWYWx1ZSgkb25lcGFyYW0sICRwYXJhbXNbJG9uZXBhcmFtXSk7DQogICAgICB9DQogICAgfQ0KICAgICAgDQogICAgIyBzcGVjaWFsIGNhc2VzDQogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ1N0YXJ0RGF0ZV9Nb250aCddKSApDQogICAgew0KICAgICAgDQogICAgICAkc3RhcnRkYXRlID0gY2F0Q29udGVudE9wZXJhdGlvbnM6Om1ha2VUaW1lU3RhbXAoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ1N0YXJ0VGltZV9Ib3VyJ10sIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1zWydTdGFydFRpbWVfTWludXRlJ10sIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1zWydTdGFydFRpbWVfU2Vjb25kJ10sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ1N0YXJ0VGltZV9ZZWFyJ10sIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1zWydTdGFydERhdGVfTW9udGgnXSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ1N0YXJ0RGF0ZV9EYXknXQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgJHRoaXMtPlNldFByb3BlcnR5VmFsdWUoJ2V4cGlyYXRpb25fc3RhcnRfZGF0ZScsICRzdGFydGRhdGUpOw0KICAgIH0gICAgICANCiAgICANCiAgICBpZiggaXNzZXQoJHBhcmFtc1snRW5kRGF0ZV9Nb250aCddKSApDQogICAgew0KICAgICAgDQogICAgICAkZW5kZGF0ZSA9IGNhdENvbnRlbnRPcGVyYXRpb25zOjptYWtlVGltZVN0YW1wKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1zWydFbmRUaW1lX0hvdXInXSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ0VuZFRpbWVfTWludXRlJ10sIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1zWydFbmRUaW1lX1NlY29uZCddLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1zWydFbmREYXRlX1llYXInXSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ0VuZERhdGVfTW9udGgnXSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ0VuZERhdGVfRGF5J10NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICR0aGlzLT5TZXRQcm9wZXJ0eVZhbHVlKCdleHBpcmF0aW9uX2VuZF9kYXRlJywgJGVuZGRhdGUpOw0KICAgIH0NCiAgICANCiAgICBpZiggaXNzZXQoJHBhcmFtc1snZXhwaXJlZCddKSApDQogICAgew0KICAgICAgJG1vZCA9ICR0aGlzLT5nZXRfbW9kKCk7DQogICAgICAkRXhwaXJ5QWN0aW9uID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnT25FeHBpcnlBY3Rpb24nLCAzKTsNCiAgICAgIA0KICAgICAgaWYgKCR0aGlzLT5jYXRFeHBpcmVkIDw+ICRwYXJhbXNbJ2V4cGlyZWQnXSkNCiAgICAgIHsNCiAgICAgICAgJHRoaXMtPmNhdEV4cGlyZWQgPSAkcGFyYW1zWydleHBpcmVkJ107DQogICAgICAgIGlmICgkcGFyYW1zWydleHBpcmVkJ10pDQogICAgICAgIHsNCiAgICAgICAgICAkdGhpcy0+X2RvRXhwaXJlKCRFeHBpcnlBY3Rpb24sIHRydWUsIGZhbHNlKTsgDQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgJHRoaXMtPl9kb1VuRXhwaXJlKHRydWUsIGZhbHNlKTsgDQogICAgICAgIH0NCg0KICAgICAgfQ0KICAgIH0NCiAgICANCiAgICBwYXJlbnQ6OkZpbGxQYXJhbXMoJHBhcmFtcyk7DQogIH0NCg0KICANCiAgZnVuY3Rpb24gVmFsaWRhdGVEYXRhKCkNCiAgew0KICAgICRlcnJvcnMgPSBwYXJlbnQ6OlZhbGlkYXRlRGF0YSgpOw0KICAgIA0KICAgIGlmKCAkZXJyb3JzID09PSBGQUxTRSApDQogICAgew0KICAgICAgJGVycm9ycyA9IGFycmF5KCk7DQogICAgfQ0KDQogICAgcmV0dXJuICggY291bnQoJGVycm9ycykgPiAwID8gJGVycm9ycyA6IEZBTFNFICk7DQogIH0NCg0KICAvKioNCiAgKiBBZGQgZXh0cmEgdGFicw0KICAqLw0KIA0KICBwcm90ZWN0ZWQgZnVuY3Rpb24gX1RhYkxvZ2ljKCkNCiAgew0KICAgICRoYXNoID0gYXJyYXkoJ21haW4nLCAnb3B0aW9ucycsICdjYXRhbG9nZXJfb3B0aW9ucycpOw0KICAgIA0KICAgIGlmICggJHRoaXMtPkhhc0F0dHJpYnV0ZXMoKSApDQogICAgew0KICAgICAgYXJyYXlfcHVzaCgkaGFzaCwgJ2F0dHJpYnV0ZXMnKTsNCiAgICB9DQoNCiAgICByZXR1cm4gJGhhc2g7DQogIH0NCiANCiAgcHVibGljIGZ1bmN0aW9uIFRhYk5hbWVzKCkNCiAgew0KICAgICRyZXQgPSBwYXJlbnQ6OlRhYk5hbWVzKCk7DQogICAgJG1vZCA9ICR0aGlzLT5nZXRfbW9kKCk7DQogICAgYXJyYXlfcHVzaCggJHJldCwgJG1vZC0+bGFuZygndGl0bGVfY2F0YWxvZ2VyX2V4dHJhcycpICk7DQogICAgDQogICAgaWYgKCAkdGhpcy0+SGFzQXR0cmlidXRlcygpICkNCiAgICB7DQogICAgICBhcnJheV9wdXNoKCAkcmV0LCAkbW9kLT5sYW5nKCd0aXRsZV9jYXRhbG9nZXJfYXR0cnMnKSApOw0KICAgIH0NCg0KICAgIHJldHVybiAkcmV0Ow0KICB9DQogIA0KICBmdW5jdGlvbiBFZGl0QXNBcnJheSgkYWRkaW5nID0gZmFsc2UsICR0YWIgPSAwLCAkc2hvd2FkbWluID0gZmFsc2UpDQogIHsNCiAgICAkbW9kID0gJHRoaXMtPmdldF9tb2QoKTsNCiAgICAkcmV0ID0gcGFyZW50OjpFZGl0QXNBcnJheSgkYWRkaW5nLCAkdGFiLCAkc2hvd2FkbWluKTsNCiAgICANCiAgICAkdGFiSGFzaCA9ICR0aGlzLT5fVGFiTG9naWMoKTsNCiAgICANCiAgICBpZiAoJHRhYkhhc2hbJHRhYl0gPT0gJ2F0dHJpYnV0ZXMnKQ0KICAgIHsgDQogICAgICAkdGhpcy0+Z2V0VXNlckF0dHJpYnV0ZXMoKTsNCg0KICAgICAgZm9yZWFjaCAoJHRoaXMtPmF0dHJzIGFzICR0aGlzQXR0cikNCiAgICAgIHsNCiAgICAgICAgJHJldFtdID0gY2F0RmllbGRzOjpSZW5kZXJJbnB1dCgkdGhpc0F0dHIsICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCR0aGlzQXR0ci0+YXR0cikpOw0KICAgICAgfQ0KICAgIH0NCiAgICANCiAgICBpZiAoJHRhYkhhc2hbJHRhYl0gPT0gJ2NhdGFsb2dlcl9vcHRpb25zJykNCiAgICB7DQogICAgICAjIyBzb21lIFdhcm5pbmdzIGhlcmUgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgIGlmICgkdGhpcy0+bUFsaWFzID09ICcnKQ0KICAgICAgew0KICAgICAgICAkd2FybmluZ2ltZyA9ICc8aW1nIGFsdD0iJw0KICAgICAgICAgICAgICAgICAgICAgIC4gJG1vZC0+TGFuZygnbm9fYWxpYXNfd2FybmluZycpDQogICAgICAgICAgICAgICAgICAgICAgLiAnIiBzcmM9IicNCiAgICAgICAgICAgICAgICAgICAgICAuICR0aGlzLT5HZXRXYXJuaW5nSW1hZ2UoKQ0KICAgICAgICAgICAgICAgICAgICAgIC4gJyIgLz4nOw0KICAgICAgICAkd2FybmluZyA9ICRtb2QtPkxhbmcoJ25vX2FsaWFzX3dhcm5pbmcnKTsNCiAgICAgICAgDQogICAgICAgICRyZXRbXSA9IGFycmF5ICgkd2FybmluZ2ltZywgJHdhcm5pbmcpOw0KICAgICAgICAkcmV0W109IGFycmF5KCc8aHIgLz4nKTsNCiAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgaWYgKCEkdGhpcy0+SGFzQXR0cmlidXRlcygpKQ0KICAgICAgew0KICAgICAgICAkd2FybmluZ2ltZyA9ICc8aW1nIGFsdD0iJw0KICAgICAgICAgICAgICAgICAgICAgIC4gJG1vZC0+TGFuZygnbm9fYXR0cnNfd2FybmluZycpDQogICAgICAgICAgICAgICAgICAgICAgLiAnIiBzcmM9IicNCiAgICAgICAgICAgICAgICAgICAgICAuICR0aGlzLT5HZXRXYXJuaW5nSW1hZ2UoKQ0KICAgICAgICAgICAgICAgICAgICAgIC4gJyIgLz4nOw0KICAgICAgICAkd2FybmluZyA9ICRtb2QtPkxhbmcoJ25vX2F0dHJzX3dhcm5pbmcnKTsNCiAgICAgICAgDQogICAgICAgICRyZXRbXSA9IGFycmF5ICgkd2FybmluZ2ltZywgJHdhcm5pbmcpOw0KICAgICAgICAkcmV0W109IGFycmF5KCc8aHIgLz4nKTsNCiAgICAgIH0NCiAgICAgICMjICAgICAgICAgICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQogICAgICAkcmV0W109ICR0aGlzLT5kaXNwbGF5X3NpbmdsZV9lbGVtZW50X2V4dCgndXNlX2V4cGlyYXRpb25fZGF0ZScpOw0KICAgICAgJHJldFtdPSAkdGhpcy0+ZGlzcGxheV9zaW5nbGVfZWxlbWVudF9leHQoJ2V4cGlyZWQnKTsNCi8vICAgICAgJHJldFtdPSBhcnJheSgnPGhyIC8+Jyk7DQovLyAgICAgICRyZXRbXT0gJHRoaXMtPmRpc3BsYXlfc2luZ2xlX2VsZW1lbnRfZXh0KCdleHBpcmF0aW9uX3N0YXJ0X2RhdGUnKTsNCi8vICAgICAgJHJldFtdPSAkdGhpcy0+ZGlzcGxheV9zaW5nbGVfZWxlbWVudF9leHQoJ2V4cGlyYXRpb25fc3RhcnRfdGltZScpOyAjc3BlY2lhbCBjYXNlDQogICAgICAkcmV0W109IGFycmF5KCc8aHIgLz4nKTsNCiAgICAgICRyZXRbXT0gJHRoaXMtPmRpc3BsYXlfc2luZ2xlX2VsZW1lbnRfZXh0KCdleHBpcmF0aW9uX2VuZF9kYXRlJyk7DQogICAgICAkcmV0W109ICR0aGlzLT5kaXNwbGF5X3NpbmdsZV9lbGVtZW50X2V4dCgnZXhwaXJhdGlvbl9lbmRfdGltZScpOyAgICNzcGVjaWFsIGNhc2UNCiAgICB9DQoNCiAgICByZXR1cm4gJHJldDsNCiAgfQ0KICAgDQogIC8qKg0KICAqIFdlIG92ZXJyaWRlIHRoaXMgdG8gbWFrZSBzaHVyZSBhbGwgcHJvcGVydGllcw0KICAqIGFyZSBrbm93biB0byBDTVNNUywgYW5kIGNhbGwgcGFyZW50IG1ldGhvZA0KICAqIHRvIGVuZm9yY2UgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLg0KICAqIEJ1dCB3ZSBkZWFsIHdpdGggdGhlIGFjdHVhbCBkaXNwbGF5aW5nDQogICogb2YgdGhlIGVsZW1lbnRzIG9uIG91ciBvd24gZXh0ZW5kZWQgdmVyc2lvbg0KICAqIG9mIHRoaXMgbWV0aG9kLiAoIGRpc3BsYXlfc2luZ2xlX2VsZW1lbnRfZXh0KCkgKQ0KICAqICANCiAgKiANCiAgKiBAcGFyYW0gbWl4ZWQgJG9uZQ0KICAqIEBwYXJhbSBtaXhlZCAkYWRkaW5nDQogICogQHJldHVybiB2b2lkDQogICovDQogIHByb3RlY3RlZCBmdW5jdGlvbiBkaXNwbGF5X3NpbmdsZV9lbGVtZW50KCRvbmUsICRhZGRpbmcpDQogIHsNCiAgICAjIHdlIGp1c3Qgd2FudCB0byBtYWtlIHN1cmUgdGhlIG5ldyBvbmVzIGFyZSBrbm93biB0byBDTVNNUw0KICAgICR0aGlzLT5nZXRVc2VyQXR0cmlidXRlcygpOw0KICAgICRlbGVtZW50cyA9IGFycmF5KCk7DQogICAgDQogICAgZm9yZWFjaCAoJHRoaXMtPmF0dHJzIGFzICRlbGVtZW50KQ0KICAgIHsNCiAgICAgIGFycmF5X3B1c2goJGVsZW1lbnRzLCAkZWxlbWVudC0+YXR0cik7DQogICAgfQ0KICAgIA0KICAgIGlmIChpbl9hcnJheSgkb25lLCAkZWxlbWVudHMpKQ0KICAgIHsNCiAgICAgICRyID0gYXJyYXkoKTsNCiAgICAgIHJldHVybiAkcjsNCiAgICB9DQogICAgDQogICAgJGVsZW1lbnRzID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICAgICAndXNlX2V4cGlyYXRpb25fZGF0ZScsIA0KICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cGlyZWQnLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cGlyYXRpb25fc3RhcnRfZGF0ZScsICANCiAgICAgICAgICAgICAgICAgICAgICAgICdleHBpcmF0aW9uX2VuZF9kYXRlJw0KICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgDQogICAgaWYgKGluX2FycmF5KCRvbmUsICRlbGVtZW50cykpDQogICAgew0KICAgICAgJHIgPSBhcnJheSgpOw0KICAgICAgcmV0dXJuICRyOw0KICAgIH0NCiAgICANCiAgICByZXR1cm4gcGFyZW50OjpkaXNwbGF5X3NpbmdsZV9lbGVtZW50KCRvbmUsICRhZGRpbmcpOw0KDQogIH0NCiAgDQogIC8qKg0KICAqIE91ciBvd24gdmVyc2lvbiBvZiBkaXNwbGF5X3NpbmdsZV9lbGVtZW50KCkNCiAgKiBwcmV2ZW50cyBkaXNwbGF5aW5nIHByb3BlcnRpZXMgb3V0IG9mIHRoZSBwZXJ0aW5lbnQgdGFicw0KICAqIGFuZCBhbGxvd3MgZm9yIHNvbWUgZXhwZWNpYWwgdHJlYXRtZW50IG9mIGRhdGUgYW5kIHRpbWUgZmllbGRzICANCiAgKiANCiAgKiBAcGFyYW0gbWl4ZWQgJG9uZQ0KICAqIEBwYXJhbSBtaXhlZCAkYWRkaW5nDQogICovDQogIHByb3RlY3RlZCBmdW5jdGlvbiBkaXNwbGF5X3NpbmdsZV9lbGVtZW50X2V4dCgkb25lLCAkYWRkaW5nID0gZmFsc2UpDQogIHsNCiAgICAkZ0NtcyA9IGNtc21zKCk7DQogICAgJG1vZCA9ICR0aGlzLT5nZXRfbW9kKCk7DQogICAgJHNtYXJ0eSA9ICRnQ21zLT5HZXRTbWFydHkoKTsNCiAgICAkdGhpcy0+U2V0RGVmYXVsdHMoKTsNCg0KICAgIHN3aXRjaCgkb25lKQ0KICAgIHsNCiAgICAgIA0KICAgICAgY2FzZSAndXNlX2V4cGlyYXRpb25fZGF0ZSc6DQogICAgICB7DQogICAgICAgICR3YXJuaW5naW1nID0gJzxpbWcgYWx0PSInDQogICAgICAgICAgICAgICAgICAgICAgLiAkbW9kLT5MYW5nKCdub19hdHRyc193YXJuaW5nJykNCiAgICAgICAgICAgICAgICAgICAgICAuICciIHNyYz0iJw0KICAgICAgICAgICAgICAgICAgICAgIC4gJHRoaXMtPkdldFdhcm5pbmdJbWFnZSgpDQogICAgICAgICAgICAgICAgICAgICAgLiAnIiAvPic7DQogICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICR3YXJuaW5nID0gJHdhcm5pbmdpbWcgLiAnICcgLiAkbW9kLT5MYW5nKCd3YXJuaW5nX3Byb21wdF91c2VfZXhwaXJhdGlvbicpOw0KICAgICAgICANCiAgICAgICAgJGdsb2JhbCA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ1VzZUV4cERhdGUnLCBGQUxTRSk7DQogICAgICAgICR2YWx1ZSA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCd1c2VfZXhwaXJhdGlvbl9kYXRlJyk7DQogICAgICAgICRyID0gYXJyYXkgKA0KICAgICAgICAgICAgICAgICAgICAgICc8bGFiZWwgZm9yPSJpbl91c2VfZXhwaXJhdGlvbl9kYXRlIj4nDQogICAgICAgICAgICAgICAgICAgICAgLiAkbW9kLT5MYW5nKCdwcm9tcHRfdXNlX2V4cGlyYXRpb24nKQ0KICAgICAgICAgICAgICAgICAgICAgIC4gJzo8L2xhYmVsPicsDQogICAgICAgICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InVzZV9leHBpcmF0aW9uX2RhdGUiIHZhbHVlPSIwIi8+DQogICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJpbl91c2VfZXhwaXJhdGlvbl9kYXRlIiBjbGFzcz0icGFnZWNoZWNrYm94IiB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjEiIG5hbWU9InVzZV9leHBpcmF0aW9uX2RhdGUiJw0KICAgICAgICAgICAgICAgICAgICAgIC4gKCR2YWx1ZSA/ICcgY2hlY2tlZCA9ICJjaGVja2VkIicgOicnICkNCiAgICAgICAgICAgICAgICAgICAgICAuICcgLz4nLA0KICAgICAgICAgICAgICAgICAgICAgICRtb2QtPkxhbmcoJ2hlbHBfcHJvbXB0X3VzZV9leHBpcmF0aW9uJykNCiAgICAgICAgICAgICAgICAgICAgICAuICgkZ2xvYmFsID8gJycgOiggJzxiciAvPjxlbT4nIC4gJHdhcm5pbmcgLiAnPC9lbT4nICApICkNCiAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgcmV0dXJuICRyOw0KICAgICAgfQ0KICAgICAgYnJlYWs7DQogICAgICANCi8vICAgICAgY2FzZSAnZXhwaXJhdGlvbl9zdGFydF9kYXRlJzogICAjc3RpbGwgbmVlZHMgbW9yZSB3b3JrDQovLyAgICAgIHsNCi8vICAgICAgICAkdmFsdWUgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnZXhwaXJhdGlvbl9zdGFydF9kYXRlJyk7DQovLyAgICAgICAgJGZpZWxkID0gJ3todG1sX3NlbGVjdF9kYXRlICBwcmVmaXg9XCdTdGFydERhdGVfXCcgZmllbGRfb3JkZXI9XCdETVlcJyBzdGFydF95ZWFyPVwnLTFcJyBlbmRfeWVhcj1cJysxMDBcJyB0aW1lPScgLiAkdmFsdWUgLid9JzsNCi8vICAgICAgICAkciA9IGFycmF5ICgkbW9kLT5MYW5nKCdwcm9tcHRfZXhwaXJhdGlvbl9zdGFydF9kYXRlJykgLiAnOicsICRzbWFydHktPmZldGNoKCdldmFsOicuJGZpZWxkKSk7DQovLyAgICAgICAgcmV0dXJuICRyOyAgICAgICAgDQovLyAgICAgIH0NCi8vICAgICAgYnJlYWs7DQovLyAgICAgIA0KLy8gICAgICBjYXNlICdleHBpcmF0aW9uX3N0YXJ0X3RpbWUnOg0KLy8gICAgICB7DQovLyAgICAgICAgJHZhbHVlID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2V4cGlyYXRpb25fc3RhcnRfZGF0ZScpOw0KLy8gICAgICAgICRmaWVsZCA9ICd7aHRtbF9zZWxlY3RfdGltZSAgcHJlZml4PVwnU3RhcnRUaW1lX1wnIHRpbWU9JyAuICR2YWx1ZSAuJ30nOw0KLy8gICAgICAgICRyID0gYXJyYXkgKCRtb2QtPkxhbmcoJ3Byb21wdF9leHBpcmF0aW9uX3N0YXJ0X3RpbWUnKSAuICc6JywgJHNtYXJ0eS0+ZmV0Y2goJ2V2YWw6Jy4kZmllbGQpKTsNCi8vICAgICAgICByZXR1cm4gJHI7ICAgICAgICANCi8vICAgICAgfQ0KLy8gICAgICBicmVhazsNCiAgICAgICAgICANCiAgICAgIGNhc2UgJ2V4cGlyYXRpb25fZW5kX2RhdGUnOg0KICAgICAgew0KICAgICAgICAkdmFsdWUgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnZXhwaXJhdGlvbl9lbmRfZGF0ZScpOw0KICAgICAgICAkZmllbGQgPSAne2h0bWxfc2VsZWN0X2RhdGUgIHByZWZpeD1cJ0VuZERhdGVfXCcgZmllbGRfb3JkZXI9XCdETVlcJyBzdGFydF95ZWFyPVwnLTFcJyBlbmRfeWVhcj1cJysxMDBcJyB0aW1lPScgLiAkdmFsdWUgLid9JzsNCiAgICAgICAgJHIgPSBhcnJheSAoJG1vZC0+TGFuZygncHJvbXB0X2V4cGlyYXRpb25fZW5kX2RhdGUnKSAuICc6JywgJHNtYXJ0eS0+ZmV0Y2goJ2V2YWw6Jy4kZmllbGQpKTsNCiAgICAgICAgcmV0dXJuICRyOyAgICANCiAgICAgIH0NCiAgICAgIGJyZWFrOw0KICAgIA0KICAgICAgY2FzZSAnZXhwaXJhdGlvbl9lbmRfdGltZSc6DQogICAgICB7DQogICAgICAgICR2YWx1ZSA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdleHBpcmF0aW9uX2VuZF9kYXRlJyk7DQogICAgICAgICRmaWVsZCA9ICd7aHRtbF9zZWxlY3RfdGltZSAgcHJlZml4PVwnRW5kVGltZV9cJyB0aW1lPScgLiAkdmFsdWUgLid9JzsNCiAgICAgICAgJHIgPSBhcnJheSAoJG1vZC0+TGFuZygncHJvbXB0X2V4cGlyYXRpb25fZW5kX3RpbWUnKSAuICc6JywgJHNtYXJ0eS0+ZmV0Y2goJ2V2YWw6Jy4kZmllbGQpKTsNCiAgICAgICAgcmV0dXJuICRyOyAgICAgDQogICAgICB9DQogICAgICBicmVhazsNCiAgICAgICANCiAgICAgIGNhc2UgJ2V4cGlyZWQnOg0KICAgICAgew0KICAgICAgICAkd2FybmluZ2ltZyA9ICc8aW1nIGFsdD0iJw0KICAgICAgICAgICAgICAgICAgICAgIC4gJG1vZC0+TGFuZygnbm9fYXR0cnNfd2FybmluZycpDQogICAgICAgICAgICAgICAgICAgICAgLiAnIiBzcmM9IicNCiAgICAgICAgICAgICAgICAgICAgICAuICR0aGlzLT5HZXRXYXJuaW5nSW1hZ2UoKQ0KICAgICAgICAgICAgICAgICAgICAgIC4gJyIgLz4nOw0KICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAkd2FybmluZyA9ICR3YXJuaW5naW1nIC4gJyAnIC4gJG1vZC0+TGFuZygnd2FybmluZ19wcm9tcHRfZXhwaXJlZCcpOw0KICAgICAgICANCiAgICAgICAgJGdsb2JhbCA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ1VzZUV4cERhdGUnLCBGQUxTRSk7DQogICAgICAgICR2YWx1ZSA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdleHBpcmVkJyk7DQogICAgICAgICRyID0gYXJyYXkgKA0KICAgICAgICAgICAgICAgICAgICAgICc8bGFiZWwgZm9yPSJpbl9leHBpcmVkIj4nDQogICAgICAgICAgICAgICAgICAgICAgLiAkbW9kLT5MYW5nKCdwcm9tcHRfZXhwaXJlZCcpDQogICAgICAgICAgICAgICAgICAgICAgLiAnOjwvbGFiZWw+JywNCiAgICAgICAgICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZXhwaXJlZCIgdmFsdWU9IjAiLz4NCiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9ImluX2V4cGlyZWQiIGNsYXNzPSJwYWdlY2hlY2tib3giIHR5cGU9ImNoZWNrYm94IiB2YWx1ZT0iMSIgbmFtZT0iZXhwaXJlZCInDQogICAgICAgICAgICAgICAgICAgICAgLiAoJHZhbHVlID8gJyBjaGVja2VkID0gImNoZWNrZWQiJyA6JycgKQ0KICAgICAgICAgICAgICAgICAgICAgIC4gJyAvPicsDQogICAgICAgICAgICAgICAgICAgICAgJG1vZC0+TGFuZygnaGVscF9wcm9tcHRfZXhwaXJlZCcpDQogICAgICAgICAgICAgICAgICAgICAgLiAoJGdsb2JhbCA/ICcnIDooICc8YnIgLz48ZW0+JyAuICR3YXJuaW5nIC4gJzwvZW0+JyApICkNCiAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgcmV0dXJuICRyOw0KICAgICAgfQ0KICAgIA0KICAgIH0NCiAgICANCiAgfQ0KDQogIGZ1bmN0aW9uIFNob3coJHBhcmFtPScnKQ0KICB7DQogICAgJHR4dCA9ICcnOw0KICAgICRjbnRzID0gcGFyZW50OjpTaG93KCRwYXJhbSk7DQoNCiAgICBpZiggJHBhcmFtICE9ICdjb250ZW50X2VuJyAmJiAkcGFyYW0gIT0gJ2NvbnRlbnQnICkgDQogICAgew0KICAgICAgLy8gbXVzdCBiZSBkaXNwbGF5aW5nIHNvbWUgb3RoZXIgYmxvY2suDQogICAgICByZXR1cm4gJGNudHM7DQogICAgfQ0KICAgIA0KICAgICRtb2QgPSAkdGhpcy0+Z2V0X21vZCgpOw0KICAgICRnbG9iYWwgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdVc2VFeHBEYXRlJywgRkFMU0UpOw0KICAgICRsb2NhbCA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCd1c2VfZXhwaXJhdGlvbl9kYXRlJyk7DQogICAgDQogICAgaWYgKCAoJGdsb2JhbCAmJiAkbG9jYWwpICkgIyBzbyB3ZSBoYXZlIHRvIHByb2Nlc3MgZXhwaXJhdGlvbiBkYXRlcw0KICAgIHsNCiAgICAgICR0eHQgPSAkdGhpcy0+UHJvY2Vzc0V4cGlyYXRpb24oKTsNCiAgICB9DQogICAgZWxzZSAjIHdlIGRvbid0IGhhdmUgdG8gcHJvY2VzcyBleHBpcmF0aW9uIGRhdGVzDQogICAgew0KICAgICAgJHR4dCAuPSAkdGhpcy0+X2RvU2hvdygpOw0KICAgIH0NCiAgICANCiAgICByZXR1cm4gJHR4dDsNCiAgfQ0KICANCiAgZnVuY3Rpb24gX2RvU2hvdygpDQogIHsNCiAgICAkcGFyYW1zID0gYXJyYXkoKTsNCiAgICAkdGhpcy0+UG9wdWxhdGVQYXJhbXMoJHBhcmFtcyk7DQogICAgJHBhcmFtc1snX2RlZmF1bHRfY250J10gPSAkY250czsNCiAgICByZXR1cm4gJHRoaXMtPlJlbmRlckNvbnRlbnQoJHBhcmFtcyk7DQogIH0NCg0KICAvKioNCiAgKiAjDQogICogDQogICogQHBhcmFtIG1peGVkICRwYXJhbXMNCiAgKi8NCiAgZnVuY3Rpb24gUmVuZGVyQ29udGVudCgkcGFyYW1zKQ0KICB7DQogICAgcmV0dXJuICcnOw0KICB9DQogIA0KICBmdW5jdGlvbiBQcm9kdWNlRXhwaXJlZENvbnRlbnQoJEV4cGlyeUFjdGlvbikNCiAgew0KICAgICRtb2QgPSAkdGhpcy0+Z2V0X21vZCgpOyAgIA0KICAgIA0KICAgIHN3aXRjaCAoJEV4cGlyeUFjdGlvbikgDQogICAgew0KICAgICAgIGNhc2UgMDoNCiAgICAgICB7DQogICAgICAgICAjIElmIHdlIGdldCBoZXJlIHNvbWV0aGluZyBnb25lIHdyb25nLi4uIHdlIGp1c3Qgc2VuZCB0byBfZG9FeHBpcmUgYWdhaW4uLi4NCiAgICAgICAgICR0aGlzLT5fZG9FeHBpcmUoJEV4cGlyeUFjdGlvbiwgZmFsc2UsIHRydWUpOw0KICAgICAgICAgIyBhbmQgaG9wZSBpdCBpcyBmb3IgZ29vZCB0aGlzIHRpbWUuLi4gDQogICAgICAgfQ0KICAgICAgIGJyZWFrOw0KDQogICAgICAgY2FzZSAxOg0KICAgICAgIHsNCiAgICAgICAgICMgaGVyZSB3ZSBhc3N1bWUgYWxpYXMgZXhpc3RzIGFuZCBpcyB2YWxpZA0KICAgICAgICAgJHJlZGlyZWN0ID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnZXhwaXJlX3JlZGlyZWN0X2FsaWFzJyk7DQogICAgICAgICAkdXJsID0gY2F0Q29udGVudE9wZXJhdGlvbnM6OlVSTGZyb21BbGlhcygkcmVkaXJlY3QpOw0KICAgICAgICAgY2F0Q29udGVudE9wZXJhdGlvbnM6OkVycm9ySGFuZGxlcjMwMSgkdXJsKTsNCiAgICAgICB9DQogICAgICAgYnJlYWs7DQogICAgICAgDQogICAgICAgY2FzZSAyOg0KICAgICAgIHsNCiAgICAgICAgICMgaGVyZSB3ZSBhc3N1bWUgYWxpYXMgZXhpc3RzIGFuZCBpcyB2YWxpZA0KICAgICAgICAgJHJlZGlyZWN0ID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnZXhwaXJlX3JlZGlyZWN0X2FsaWFzJyk7DQogICAgICAgICAkbW9kLT5yZWRpcmVjdENvbnRlbnQoJHJlZGlyZWN0KTsNCiAgICAgICB9DQogICAgICAgYnJlYWs7DQoNCiAgICAgICBjYXNlIDM6DQogICAgICAgew0KICAgICAgICAgJHRleHQgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdFeHBpcmF0aW9uVGV4dCcsICR0aGlzLT5MYW5nKCdkZWZhdWx0X2V4cF90ZXh0JykgKTsgICANCiAgICAgICB9DQogICAgICAgYnJlYWs7DQogICAgfQ0KDQogICAgICAjIHdlIG9ubHkgYXJyaXZlIGhlcmUgaWYgbm8gcmVkaXJlY3Rpb24gb3IgMzAxIHN0YXR1cyBvY2N1cg0KICAgICAgcmV0dXJuICR0ZXh0OyANCiAgfQ0KICANCiAgZnVuY3Rpb24gUHJvY2Vzc0V4cGlyYXRpb24oKQ0KICB7DQogICAgJG1vZCA9ICR0aGlzLT5nZXRfbW9kKCk7DQogICAgJEV4cGlyeUFjdGlvbiA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ09uRXhwaXJ5QWN0aW9uJywgMyk7DQogICAgJGV4cGlyZWQgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnZXhwaXJlZCcpOw0KICAgICRFeHBpcmF0aW9uU3RhcnREYXRlID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2V4cGlyYXRpb25fc3RhcnRfZGF0ZScpOw0KICAgICRFeHBpcmF0aW9uRW5kRGF0ZSA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdleHBpcmF0aW9uX2VuZF9kYXRlJyk7DQogICAgIyR1bl9leHBpcmUgPSAgY2F0Q29udGVudE9wZXJhdGlvbnM6OnRvX1VuRXhwaXJlKCRFeHBpcmF0aW9uU3RhcnREYXRlKTsNCiAgICAkZXhwaXJlID0gY2F0Q29udGVudE9wZXJhdGlvbnM6OnRvX0V4cGlyZSgkRXhwaXJhdGlvbkVuZERhdGUpOw0KICAgIA0KLy8gICAgZWNobyAnPC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT48YnI+JzsNCi8vICAgIGVjaG8gJ0VYUF9BQ1QgPSAnIC4gJEV4cGlyeUFjdGlvbiAuICc8YnI+JzsNCi8vICAgIGVjaG8gJ0V4cCA9ICcgLiAoJGV4cGlyZWQgPyAndHJ1ZScgOiAnZmFsc2UnICkgLiAnPGJyPic7DQovLyAgICBlY2hvICdFeHAgc3QgZGF0ZSA9ICcgLiAkRXhwaXJhdGlvblN0YXJ0RGF0ZSAuICc8YnI+JzsNCi8vICAgIGVjaG8gJ0V4cCBlbmQgZGF0ZSA9ICcgLiAkRXhwaXJhdGlvbkVuZERhdGUgLiAnPGJyPic7DQovLyAgICBlY2hvICdFeHAgZGlmZiBkYXRlID0gJyAuICgkRXhwaXJhdGlvbkVuZERhdGUgLSAkRXhwaXJhdGlvblN0YXJ0RGF0ZSkgLiAnPGJyPic7DQovLyAgICBlY2hvICdub3cgPSAnIC4gdGltZSgpIC4gJzxicj4nOw0KLy8gICAgZWNobyAnRW5kIGRpZmYgPSAnIC4gKCAkRXhwaXJhdGlvbkVuZERhdGUgLSB0aW1lKCkgKSAuICc8YnI+JzsNCi8vICAgIGVjaG8gJ1N0YXJ0IGRpZmYgPSAnIC4gKCAkRXhwaXJhdGlvblN0YXJ0RGF0ZSAtIHRpbWUoKSApIC4gJzxicj4nOw0KLy8gICAgZWNobyAnVW5FeHAgPSAnIC4gKCR1bl9leHBpcmUgPyAndHJ1ZScgOiAnZmFsc2UnICkgLiAnPGJyPic7DQovLyAgICBlY2hvICdUbyBFeHAgPSAnIC4gKCRleHBpcmUgPyAndHJ1ZScgOiAnZmFsc2UnICkgLiAnPGJyPic7DQovLyAgICBlY2hvICc8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPjxicj4nOw0KICAgIA0KICAgIA0KLy8gICAgICANCi8vICAgIGlmICgkRXhwaXJhdGlvblN0YXJ0RGF0ZSA+PSAkRXhwaXJhdGlvbkVuZERhdGUpDQovLyAgICB7DQovLyAgICAgICMgdGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuDQovLyAgICAgIGVjaG8gJ0V4cGlyYXRpb24gRGF0ZSBSYW5nZSBFUlJPUiEnOw0KLy8gICAgICBleGl0Ow0KLy8gICAgfQ0KDQogICAgDQogICAgaWYgKCRleHBpcmVkKSAjIGFscmVhZHkgZXhwaXJlZDogZWl0aGVyIGlzIG1hcmtlZCBmb3IgdW5fZXhwaXJlZCBvciBqdXN0IGtlZXAgZXhwaXJlZCANCiAgICB7DQogICAgICAvKiAgVE9ETw0KICAgICAgaWYgKCR1bl9leHBpcmUpDQogICAgICB7DQogICAgICAgICR0aGlzLT5fZG9VbkV4cGlyZShmYWxzZSwgdHJ1ZSk7ICANCiAgICAgIH0NCiAgICAgIGVsc2UNCiAgICAgICovDQogICAgICB7DQogICAgICAgIHJldHVybiAkdGhpcy0+UHJvZHVjZUV4cGlyZWRDb250ZW50KCRFeHBpcnlBY3Rpb24pOw0KICAgICAgfQ0KDQogICAgfQ0KICAgIGVsc2UgIyBub3QgZXhwaXJlZD8gb2ssIHNvIHRlc3QgZm9yIGV4cGlyYXRpb24gb3Iga2VlcCBpdCBvbg0KICAgIHsNCiAgICAgIA0KICAgICAgaWYgKCRleHBpcmUpDQogICAgICB7DQogICAgICAgICR0aGlzLT5fZG9FeHBpcmUoJEV4cGlyeUFjdGlvbiwgZmFsc2UsIHRydWUpOyAgDQogICAgICB9DQogICAgICBlbHNlDQogICAgICB7DQogICAgICAgICR0eHQgLj0gJHRoaXMtPl9kb1Nob3coKTsNCiAgICAgIH0gDQogICAgfQ0KICAgIA0KICAgIHJldHVybiAkdHh0Ow0KICB9ICANCiAgDQogIA0KICAjIE1pc2MNCiAgDQogIHByb3RlY3RlZCBmdW5jdGlvbiBfZG9FeHBpcmUoJG1vZGUsICRlZGl0aW5nID0gZmFsc2UsICR0cmlnZ2VyID0gZmFsc2UpDQogIHsNCg0KICAgICRtb2QgPSAkdGhpcy0+Z2V0X21vZCgpOw0KICAgIC8qKg0KICAgICogQWN0aW9ucyA6DQogICAgKiAgMCAtIERlYWN0aXZhdGUgYW5kIHRocm93cyBhIDQwNCkuDQogICAgKiAgICAgKE5vdGU6IHRoaXMgaXMgcGVybWFuZW50IGRlYWQgYXMgZmFyIGFzIGF1dG9tYXRpb24gZ29lcy4uLi4gDQogICAgKiAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0IHdvbid0IGdldCBzaG93KCkgY2FsbGVkIGlmIG5vdCBhY3RpdmUpDQogICAgKiAgMSAtIHJlZGlyZWN0IDMwMSB0byBhbGlhcw0KICAgICogIDIgLSBSZWRpcmVjdCB0byBhbGlhcw0KICAgICogIDMgLSBSZXBsYWNlIHRoZSBjb250ZW50IGJ5IGEgdGV4dA0KICAgICovIA0KDQogICAgDQogICAgIyBuZWVkcyBvcHRpbWl6aW5nLi4uLg0KICAgIHN3aXRjaCAoJG1vZGUpIA0KICAgIHsNCiAgICAgICBjYXNlIDA6DQogICAgICAgew0KICAgICAgICAgJHRoaXMtPm1BY3RpdmUgPSBmYWxzZTsNCiAgICAgICAgICR0aGlzLT5tU2hvd0luTWVudSA9IGZhbHNlOw0KICAgICAgICAgJHRoaXMtPmNhdEV4cGlyZWQgPSB0cnVlOw0KICAgICAgICAgJHRoaXMtPlVwZGF0ZSgpOw0KICAgICAgICAgJG1vZC0+Y2xlYXJfY2FjaGUoJHRoaXMtPm1JZCk7DQogICAgICAgICBpZiAoJHRyaWdnZXIpeyR0aGlzLT5fZG9UcmlnZ2VyKCk7fQ0KICAgICAgICAgJG1vZC0+QXVkaXQoJHRoaXMtPm1JZCwgJHRoaXMtPm1UeXBlLCAnRXhwaXJlZCcpOw0KICAgICAgICAgI2J5IHJlZGlyZWN0aW5nIHRvIGl0c2VsZiB3ZSBsZWF2ZSB0aGUgaGFuZGxpbmcgb2YgdGhlIDQwMSB0byB0aGUgQ01TTVMgQ29yZSBzZXR0aW5ncw0KICAgICAgICAgaWYgKCEkZWRpdGluZyl7JG1vZC0+cmVkaXJlY3RDb250ZW50KCR0aGlzLT5tQWxpYXMpO30NCiAgICAgICB9DQogICAgICAgYnJlYWs7DQogICAgICAgDQogICAgICAgY2FzZSAxOg0KICAgICAgIHsNCiAgICAgICAgICR0aGlzLT5tU2hvd0luTWVudSA9IGZhbHNlOw0KICAgICAgICAgJHRoaXMtPmNhdEV4cGlyZWQgPSB0cnVlOw0KICAgICAgICAgJHRoaXMtPlVwZGF0ZSgpOw0KICAgICAgICAgJG1vZC0+Y2xlYXJfY2FjaGUoJHRoaXMtPm1JZCk7DQogICAgICAgICBpZiAoJHRyaWdnZXIpeyR0aGlzLT5fZG9UcmlnZ2VyKCk7fQ0KICAgICAgICAgJG1vZC0+QXVkaXQoJHRoaXMtPm1JZCwgJHRoaXMtPm1UeXBlLCAnRXhwaXJlZCcpOw0KICAgICAgICAgI3JlZGlyZWN0Pw0KICAgICAgICAgaWYgKCEkZWRpdGluZyl7JG1vZC0+cmVkaXJlY3RDb250ZW50KCR0aGlzLT5tQWxpYXMpO30NCiAgICAgICB9DQogICAgICAgYnJlYWs7DQogICAgICAgDQogICAgICAgY2FzZSAyOg0KICAgICAgIHsNCiAgICAgICAgICR0aGlzLT5tU2hvd0luTWVudSA9IGZhbHNlOw0KICAgICAgICAgJHRoaXMtPmNhdEV4cGlyZWQgPSB0cnVlOw0KICAgICAgICAgJHRoaXMtPlVwZGF0ZSgpOw0KICAgICAgICAgJG1vZC0+Y2xlYXJfY2FjaGUoJHRoaXMtPm1JZCk7DQogICAgICAgICBpZiAoJHRyaWdnZXIpeyR0aGlzLT5fZG9UcmlnZ2VyKCk7fQ0KICAgICAgICAgJG1vZC0+QXVkaXQoJHRoaXMtPm1JZCwgJHRoaXMtPm1UeXBlLCAnRXhwaXJlZCcpOw0KICAgICAgICAgI3JlZGlyZWN0Pw0KICAgICAgICAgaWYgKCEkZWRpdGluZyl7JG1vZC0+cmVkaXJlY3RDb250ZW50KCR0aGlzLT5tQWxpYXMpO30NCiAgICAgICB9DQogICAgICAgYnJlYWs7DQogICAgICAgICAgICAgIA0KICAgICAgIGNhc2UgMzoNCiAgICAgICB7DQogICAgICAgICAkdGhpcy0+bVNob3dJbk1lbnUgPSB0cnVlOw0KICAgICAgICAgJHRoaXMtPmNhdEV4cGlyZWQgPSB0cnVlOw0KICAgICAgICAgJHRoaXMtPlVwZGF0ZSgpOw0KICAgICAgICAgJG1vZC0+Y2xlYXJfY2FjaGUoJHRoaXMtPm1JZCk7DQogICAgICAgICBpZiAoJHRyaWdnZXIpeyR0aGlzLT5fZG9UcmlnZ2VyKCk7fQ0KICAgICAgICAgJG1vZC0+QXVkaXQoJHRoaXMtPm1JZCwgJHRoaXMtPm1UeXBlLCAnRXhwaXJlZCcpOw0KICAgICAgICAgI3JlZGlyZWN0Pw0KICAgICAgICAgaWYgKCEkZWRpdGluZyl7JG1vZC0+cmVkaXJlY3RDb250ZW50KCR0aGlzLT5tQWxpYXMpO30NCiAgICAgICB9DQogICAgICAgYnJlYWs7DQogICAgfQ0KICB9DQogIA0KICBwcm90ZWN0ZWQgZnVuY3Rpb24gX2RvVHJpZ2dlcigpDQogIHsNCiAgICAkbW9kID0gJHRoaXMtPmdldF9tb2QoKTsNCiAgICAkbm93ID0gdGltZSgpOw0KICAgIA0KICAgICRldmVudF9wYXJhbXMgPSBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29udGVudCcgICAgID0+ICR0aGlzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aW1lc3RhbXAnICAgPT4gJG5vdw0KICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAkbW9kLT5TZW5kRXZlbnQoJ09uQ29udGVudEVuZERhdGUnLCAkZXZlbnRfcGFyYW1zKTsgDQogIH0NCiAgDQogIHByb3RlY3RlZCBmdW5jdGlvbiBfZG9VbkV4cGlyZSgkZWRpdGluZyA9IGZhbHNlLCAkdHJpZ2dlciA9IGZhbHNlKQ0KICB7DQogICANCiAgICRtb2QgPSAkdGhpcy0+Z2V0X21vZCgpOw0KICAgJHRoaXMtPm1TaG93SW5NZW51ID0gdHJ1ZTsNCiAgICR0aGlzLT5jYXRFeHBpcmVkID0gZmFsc2U7DQogICAkdGhpcy0+VXBkYXRlKCk7DQogICAkbW9kLT5jbGVhcl9jYWNoZSgkdGhpcy0+bUlkKTsNCiAgICANCiAgICBpZiAoJHRyaWdnZXIpDQogICAgeyAjIHdlIHRyaWdnZXIgYW4gZXZlbnQNCiAgICANCiAgICAgICRldmVudF9wYXJhbXMgPSBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb250ZW50JyAgICAgPT4gJHRoaXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGltZXN0YW1wJyAgID0+ICRub3cNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgJG1vZC0+U2VuZEV2ZW50KCdPbkNvbnRlbnRTdGFydERhdGUnLCAkZXZlbnRfcGFyYW1zKTsNCiAgICB9DQogICAgDQogICAgJG1vZC0+QXVkaXQoJHRoaXMtPm1JZCwgJHRoaXMtPm1UeXBlLCAnVW4tRXhwaXJlZCcpOw0KICAgIGRpZSgnZHVoJyk7DQogICAgI2lmICghJGVkaXRpbmcpeyRtb2QtPnJlZGlyZWN0Q29udGVudCgkdGhpcy0+bUFsaWFzKTt9DQogIH0NCiAgDQogIHByb3RlY3RlZCBmdW5jdGlvbiBHZXRXYXJuaW5nSW1hZ2UoKQ0KICB7DQogICAgJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOw0KICAgIHJldHVybiAkY29uZmlnWydyb290X3VybCddDQogICAgICAgICAgIC4gJy9hZG1pbi90aGVtZXMvJw0KICAgICAgICAgICAuICR0aGlzLT5HZXRBZG1pblRoZW1lTmFtZSgpDQogICAgICAgICAgIC4gJy9pbWFnZXMvaWNvbnMvc3lzdGVtL3dhcm5pbmcuZ2lmJzsNCiAgfQ0KICANCiAgZnVuY3Rpb24gU2F2ZSgpDQogIHsNCiAgICAkdGhpcy0+U2V0UHJvcGVydHlWYWx1ZSgnZXhwaXJlZCcsICR0aGlzLT5jYXRFeHBpcmVkKTsNCiAgICBwYXJlbnQ6OlNhdmUoKTsNCiAgfQ0KICANCiAgcHJvdGVjdGVkIGZ1bmN0aW9uIFVwZGF0ZSgpDQogIHsNCiAgICAkdGhpcy0+U2V0UHJvcGVydHlWYWx1ZSgnZXhwaXJlZCcsICR0aGlzLT5jYXRFeHBpcmVkKTsNCiAgICBwYXJlbnQ6OlVwZGF0ZSgpOw0KICB9DQoNCiAgcHJvdGVjdGVkIGZ1bmN0aW9uIEluc2VydCgpDQogIHsNCiAgICBwYXJlbnQ6Okluc2VydCgpOw0KICB9DQogIA0KICANCn0NCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.catContentOperations.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmNsYXNzIGNhdENvbnRlbnRPcGVyYXRpb25zDQp7DQogIHByaXZhdGUgc3RhdGljICRfY21zOw0KICBwcml2YXRlIHN0YXRpYyAkX21vZDsNCiAgcHJpdmF0ZSBzdGF0aWMgJF9kYjsNCiAgcHJpdmF0ZSBzdGF0aWMgJF9pbml0aWFsaXplZCA9IEZBTFNFOw0KICANCiAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gX2luaXRpYWxpemUoKQ0KICB7DQogICAgaWYoIXNlbGY6OiRfaW5pdGlhbGl6ZWQpDQogICAgew0KICAgICAgc2VsZjo6JF9jbXMgPSBjbXNtcygpOw0KICAgICAgc2VsZjo6JF9tb2QgPSBzZWxmOjokX2Ntcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ0NhdGFsb2dlcicpOw0KICAgICAgc2VsZjo6JF9kYiA9IHNlbGY6OiRfY21zLT5HZXREYigpOw0KICAgICAgc2VsZjo6JF9pbml0aWFsaXplZCA9IFRSVUU7IA0KICAgIH0gDQogIH0NCiAgDQogICMgZGVwcmVjYXRlZA0KICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBfZ2V0TW9kKCkNCiAgew0KICAgIHNlbGY6Ol9pbml0aWFsaXplKCk7DQogICAgcmV0dXJuIHNlbGY6OiRfbW9kOyANCiAgfSAgDQogIA0KICAjZGVwcmVjYXRlZA0KICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBfZ2V0REIoKQ0KICB7DQogICAgc2VsZjo6X2luaXRpYWxpemUoKTsNCiAgICByZXR1cm4gc2VsZjo6JF9kYjsgICAgDQogIH0NCiAgIA0KICBzdGF0aWMgZnVuY3Rpb24gJkdldENvbnRlbnRGcm9tUGFyYW1zKCYkcGFyYW1zKQ0KICB7DQogICAgJGdDbXM9IGNtc21zKCk7DQogICAgJG1vZCA9IHNlbGY6Ol9nZXRNb2QoKTsNCiAgICAkaG0gPSAkZ0Ntcy0+R2V0SGllcmFyY2h5TWFuYWdlcigpOw0KICAgICRjbyA9IGNtc21zKCktPkdldENvbnRlbnRPcGVyYXRpb25zKCk7DQogICAgJHJldCA9ICcnOw0KICAgICAgDQogICAgaWYgKCBpc3NldCgkcGFyYW1zWydhbGlhcyddKSAmJiAkcGFyYW1zWydhbGlhcyddID09ICcvJyApDQogICAgeyAjIGFsaWFzIGlzIHJvb3QgKC8pDQogICAgICAkY29udGVudCA9ICRobS0+Z2V0RmxhdExpc3QoKTsNCiAgICAgICRjdXJIaWVyRGVwdGggPSBpc3NldCgkcGFyYW1zWydzdGFydF9kZXB0aCddKSA/ICRwYXJhbXNbJ3N0YXJ0X2RlcHRoJ10gOiAtMTsNCiAgICAgICRjdXJIaWVyYXJjaHkgPSAnJzsNCiAgICAgICRjdXJIaWVyTGVuID0gMDsNCiAgICAgICRjdXJQYWdlID0gbmV3IENvbnRlbnQoKTsvLyBtYXkgbmVlZCB0byBiZSByZXZpc2l0ZWQgKEpNKQ0KICAgIH0NCiAgICBlbHNlDQogICAgeyAjIGVpdGhlciBhbGlhcyBpcyBOT1Qgc2V0IG9yIG5vdCByb290IG9yIG5laXRoZXINCiAgICAgICBpZihpc3NldCgkcGFyYW1zWydjb250ZW50X2lkJ10pIHx8IGlzc2V0KCRwYXJhbXNbJ19pX2NvbnRlbnRfaWQnXSkpDQogICAgICAgeyAjIHdlIGhhdmUgYSBjb250ZW50X2lkDQogICAgICAgICAgJGN1clBhZ2VJRCA9IGlzc2V0KCRwYXJhbXNbJ2NvbnRlbnRfaWQnXSkgPyAkcGFyYW1zWydjb250ZW50X2lkJ10gOiBOVUxMOyAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgJGN1clBhZ2VJRCA9IGlzc2V0KCRjdXJQYWdlSUQpID8gJGN1clBhZ2VJRCA6ICRwYXJhbXNbJ19pX2NvbnRlbnRfaWQnXTsNCg0KICAgICAgICAgIGlmKCRjdXJQYWdlSUQgPT0gX19DTVNfUFJFVklFV19QQUdFX18pIA0KICAgICAgICAgIHsNCiAgICAgICAgICAgICRjdXJQYWdlID0gJGNvLT5DcmVhdGVOZXdDb250ZW50KCRfU0VTU0lPTlsnX19jbXNfcHJldmlld190eXBlX18nXSk7IA0KICAgICAgICAgICAgJGN1ckhpZXJhcmNoeSA9ICRjdXJQYWdlLT5IaWVyYXJjaHkoKTsNCiAgICAgICAgICAgICRjdXJIaWVyTGVuID0gc3RybGVuKCRjdXJIaWVyYXJjaHkpOw0KICAgICAgICAgICAgJGN1ckhpZXJEZXB0aCA9IHN1YnN0cl9jb3VudCgkY3VySGllcmFyY2h5LCAnLicpOw0KICAgICAgICAgICAgJGNvbnRlbnQgPSBhcnJheSgpOw0KICAgICAgICAgICAgDQogICAgICAgICAgICAkcmV0ID0gYXJyYXkoJGNvbnRlbnQsICRjdXJQYWdlLCAkY3VySGllcmFyY2h5LCAkY3VySGllckxlbiwgJGN1ckhpZXJEZXB0aCk7DQogICAgICAgICAgICByZXR1cm4gJHJldDsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZQ0KICAgICAgICAgIHsNCiAgICAgICAgICAgICRjdXJQYWdlTm9kZSA9ICRobS0+c3VyZUdldE5vZGVCeUlkKCRjdXJQYWdlSUQpOw0KICAgICAgICAgICAgJGN1clBhZ2UgPSAkY3VyUGFnZU5vZGUtPkdldENvbnRlbnQoKTsgDQogICAgICAgICAgfQ0KICAgICAgIH0NCiAgICAgICBlbHNlaWYoaXNzZXQoJHBhcmFtc1snYWxpYXMnXSkpDQogICAgICAgeyAjIHdlIGhhdmUgYW4gYWxpYXMNCiAgICAgICAgICAkY3VyUGFnZU5vZGUgPSAkaG0tPnN1cmVHZXROb2RlQnlBbGlhcygkcGFyYW1zWydhbGlhcyddKTsNCiAgICAgICAgICAkY3VyUGFnZSA9ICRjdXJQYWdlTm9kZS0+R2V0Q29udGVudCgpOw0KICAgICAgICAgICRjdXJQYWdlSUQgPSAkY3VyUGFnZS0+SWQoKTsNCiAgICAgICB9DQogICAgICAgZWxzZQ0KICAgICAgIHsgDQogICAgICAgICAkY2kgPSAkZ0Ntcy0+Z2V0X2NvbnRlbnRfaWQoKTsgDQogICAgICAgICBpZiggaXNzZXQoJGNpKSApDQogICAgICAgICB7ICMgbm8gaWQsIG5vIGFsaWFzOiBnZXQgY29udGVudF9pZCBmcm9tIENNU01TDQogICAgICAgICAgICAkY3VyUGFnZUlEID0gJGNpOw0KICAgICAgICAgICAgJGN1clBhZ2VOb2RlID0gJGhtLT5zdXJlR2V0Tm9kZUJ5SWQoJGN1clBhZ2VJRCk7DQogICAgICAgICAgICAkY3VyUGFnZSA9ICRjdXJQYWdlTm9kZS0+R2V0Q29udGVudCgpOw0KICAgICAgICAgfQ0KICAgICAgIH0gIA0KICAgICAgDQogICAgICAgJGN1ckhpZXJhcmNoeSA9ICRjdXJQYWdlLT5IaWVyYXJjaHkoKTsNCiAgICAgICAkY3VySGllckxlbiA9IHN0cmxlbigkY3VySGllcmFyY2h5KTsNCiAgICAgICAkY3VySGllckRlcHRoID0gc3Vic3RyX2NvdW50KCRjdXJIaWVyYXJjaHksICcuJyk7ICAgICANCiAgICAgICAkY29udGVudCA9IHNlbGY6OmdldFN1YkNvbnRlbnQoJGN1clBhZ2VJRCk7DQogICAgfSAgDQoNCiAgICAkcmV0ID0gYXJyYXkoJGNvbnRlbnQsICRjdXJQYWdlLCAkY3VySGllcmFyY2h5LCAkY3VySGllckxlbiwgJGN1ckhpZXJEZXB0aCk7DQogICAgcmV0dXJuICRyZXQ7DQogIH0gDQogIA0KICBzdGF0aWMgZnVuY3Rpb24gJmdldFN1YkNvbnRlbnQoJHN0YXJ0Tm9kZUlkKQ0KICB7DQogICAgJGdDbXMgPSBjbXNtcygpOw0KICAgICRjb250ZW50ID0gYXJyYXkoKTsNCiAgICAkaG0gPSAkZ0Ntcy0+R2V0SGllcmFyY2h5TWFuYWdlcigpOw0KICAgIC8qIFdvcmtzIHdpdGggbmV3IGFkZGl0aW9uIHRvIFRyZWUsIGJ1dCBnZXRGbGF0TGlzdCBpcyBkZWZhdWx0DQogICAgICRybiA9ICRobS0+c3VyZUdldE5vZGVCeUlkKCRzdGFydE5vZGVJZCk7IA0KICAgICAkY291bnQgPSAwOw0KICAgICAkaG0tPmdldEZsYXR0ZW5lZENoaWxkcmVuKCRybiwgJGNvbnRlbnQsICRjb3VudCk7DQogICAgKi8NCiAgICAkY29udGVudCA9ICRobS0+Z2V0RmxhdExpc3QoKTsNCiAgICByZXR1cm4gJGNvbnRlbnQ7DQogIH0NCg0KICBzdGF0aWMgZnVuY3Rpb24gJmdldEFsbENvbnRlbnQoKQ0KICB7DQogICAgJGdDbXMgPSBjbXNtcygpOw0KICAgICRjb250ZW50ID0gYXJyYXkoKTsNCiAgICAkaG0gPSAkZ0Ntcy0+R2V0SGllcmFyY2h5TWFuYWdlcigpOw0KICAgICRybiA9ICRobS0+R2V0Um9vdE5vZGUoKTsgDQogICAgJGNvdW50ID0gMDsNCiAgICAkaG0tPmdldEZsYXR0ZW5lZENoaWxkcmVuKCRybiwgJGNvbnRlbnQsICRjb3VudCk7DQogICAgcmV0dXJuICRjb250ZW50Ow0KICB9DQoNCiAgc3RhdGljIGZ1bmN0aW9uIGdldENhdGFsb2dJdGVtc0xpc3QoJiRwYXJhbXMpDQogIHsNCiAgICAkbGFzdGNhdCA9ICIiOw0KICAgICRsYXN0Y2F0ZnVsbCA9IG51bGw7DQogICAgDQogICAgbGlzdCgkY29udGVudCwgJGN1clBhZ2UsICRjdXJIaWVyYXJjaHksICRjdXJIaWVyTGVuLCAkY3VySGllckRlcHRoKSA9IHNlbGY6OkdldENvbnRlbnRGcm9tUGFyYW1zKCRwYXJhbXMpOw0KICAgIA0KICAgICRjYXRlZ29yeUl0ZW1zID0gYXJyYXkoKTsNCg0KICAgIGZvcmVhY2ggKCRjb250ZW50IGFzICR0aGlzUGFnZSkNCiAgICB7DQogICAgICAkdGhpc3BhZ2Vjb250ZW50ID0gJHRoaXNQYWdlLT5HZXRDb250ZW50KCk7DQoNCiAgICAgIGlmKCBlbXB0eSgkdGhpc3BhZ2Vjb250ZW50KSApIGNvbnRpbnVlOyANCiAgICAgIGlmKCAhc2VsZjo6X0lzVmFsaWQoJHRoaXNwYWdlY29udGVudCkgKSBjb250aW51ZTsgDQogICAgICBpZiggISR0aGlzcGFnZWNvbnRlbnQtPklkKCkgPT0gJGN1clBhZ2UtPklkKCkgKSBjb250aW51ZTsNCiAgICAgICAgICAgIA0KICAgICAgaWYgKCR0aGlzcGFnZWNvbnRlbnQtPlR5cGUoKSA9PSAnY29udGVudGFsaWFzJykNCiAgICAgIHsNCiAgICAgICAgICR0aGlzcGFnZWNvbnRlbnQgPSAkdGhpc3BhZ2Vjb250ZW50LT5HZXRBbGlhc0NvbnRlbnQoKTsNCiAgICAgICAgICRjdXJIaWVyTGVuID0gc3RybGVuKCRjdXJIaWVyYXJjaHkpOw0KICAgICAgICAgJGN1ckhpZXJEZXB0aCA9IHN1YnN0cl9jb3VudCgkY3VySGllcmFyY2h5LCAnLicpOw0KICAgICAgfQ0KICAgICAgDQogICAgICBpZiAoJHRoaXNwYWdlY29udGVudC0+VHlwZSgpID09ICdjYXRhbG9nY2F0ZWdvcnknKQ0KICAgICAgew0KICAgICAgICAkbGFzdGNhdCA9ICR0aGlzcGFnZWNvbnRlbnQtPk5hbWUoKTsNCiAgICAgIH0NCiAgICANCiAgICAgIGlmICggIXNlbGY6Ol9Jc1ZhbGlkVHlwZSgkdGhpc3BhZ2Vjb250ZW50LCAkcGFyYW1zKSApDQogICAgICB7DQogICAgICAgIGNvbnRpbnVlOw0KICAgICAgfQ0KDQogICAgICBpZiAoICEgc2VsZjo6X0lzVmFsaWREZXB0aCgkdGhpc3BhZ2Vjb250ZW50LCAkcGFyYW1zLCAkY3VySGllckRlcHRoLCAkY3VySGllckxlbiwgJGN1ckhpZXJhcmNoeSkgKQ0KICAgICAgew0KICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgfQ0KICAgICANCiAgICAgIC8vIGluIHRoZSBjYXRlZ29yeSwgYW5kIGFwcHJvdmVkIGZvciBhZGRpdGlvbg0KICAgICAgJHRoaXNJdGVtID0gc2VsZjo6aXRlbVRvQXJyYXkoJHRoaXNwYWdlY29udGVudCwgJGxhc3RjYXQpOw0KICAgICAgYXJyYXlfcHVzaCgkY2F0ZWdvcnlJdGVtcywgJHRoaXNJdGVtKTsNCiAgICB9DQoNCiAgICByZXR1cm4gYXJyYXkoJGN1clBhZ2UsICRjYXRlZ29yeUl0ZW1zKTsNCiAgfQ0KDQogIHN0YXRpYyBmdW5jdGlvbiBnZXRDYXRhbG9nSXRlbXNJRExpc3QoJiRwYXJhbXMpDQogIHsNCiAgICAkZ0NtcyA9IGNtc21zKCk7DQogICAgJGRiID0gJGdDbXMtPkdldERiKCk7DQogICAgJHJldCA9IGFycmF5KCk7DQogICAgDQogICAgaWYgKCFpc3NldCgkcGFyYW1zWydhbGlhcyddKSB8fCAkcGFyYW1zWydhbGlhcyddPT0nLycpDQogICAgew0KICAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCdTRUxFQ1QgY29udGVudF9pZCBmcm9tICcgLiBjbXNfZGJfcHJlZml4KCkgLiANCiAgICAgICAgICAgJ2NvbnRlbnQgd2hlcmUgdHlwZT1cJ2NhdGFsb2dpdGVtXCcnKTsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICRiYXNlX2hpZXJhcmNoeSA9ICRkYi0+R2V0T25lKCdTRUxFQ1QgaGllcmFyY2h5IGZyb20gJyAuIGNtc19kYl9wcmVmaXgoKSAuIA0KICAgICAgICAgICAnY29udGVudCB3aGVyZSBjb250ZW50X2FsaWFzPT8nLGFycmF5KCRwYXJhbXNbJ2FsaWFzJ10pKTsNCiAgICAgIGlmICghICRiYXNlX2hpZXJhcmNoeSkNCiAgICAgIHsNCiAgICAgICAgcmV0dXJuICRyZXQ7DQogICAgICB9DQogICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJ1NFTEVDVCBjb250ZW50X2lkIGZyb20gJy5jbXNfZGJfcHJlZml4KCkuDQogICAgICAgICAgICdjb250ZW50IHdoZXJlIHR5cGU9XCdjYXRhbG9naXRlbVwnIGFuZCBoaWVyYXJjaHkgTElLRSBcJycgLiAkYmFzZV9oaWVyYXJjaHkgLiAnJVwnJyk7DQogICAgfQ0KICAgIA0KICAgIHdoaWxlICgkZGJyZXN1bHQgIT09IGZhbHNlICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpDQogICAgew0KICAgICAgYXJyYXlfcHVzaCgkcmV0LCRyb3dbJ2NvbnRlbnRfaWQnXSk7DQogICAgfQ0KICAgICAgICANCiAgICByZXR1cm4gJHJldDsNCiAgfQ0KICANCiAgc3RhdGljIGZ1bmN0aW9uICZnZXRDYXRhbG9nSXRlbSgkYWxpYXMpDQogIHsNCiAgICAkZ0NtcyA9IGNtc21zKCk7DQogICAgJG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ2F0YWxvZ2VyJyk7DQogICAgJGhtID0gJGdDbXMtPkdldEhpZXJhcmNoeU1hbmFnZXIoKTsNCiAgICAkcGFnZU5vZGUgPSAkaG0tPnN1cmVHZXROb2RlQnlBbGlhcygkYWxpYXMpOw0KICAgICRwYWdlID0gJHBhZ2VOb2RlLT5HZXRDb250ZW50KCk7DQogICAgJG5vZGUgPSBzZWxmOjppdGVtVG9BcnJheSgkcGFnZSwgJycpOw0KICAgIHJldHVybiAkbm9kZTsNCiAgfQ0KDQogIHN0YXRpYyBmdW5jdGlvbiAmZ2V0Q2F0YWxvZ0l0ZW1CeUlkKCRpZCkNCiAgew0KICAgICRnQ21zID0gY21zbXMoKTsNCiAgICAkbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDYXRhbG9nZXInKTsNCiAgICAkaG0gPSAkZ0Ntcy0+R2V0SGllcmFyY2h5TWFuYWdlcigpOw0KICAgICRwYWdlTm9kZSA9ICRobS0+c3VyZUdldE5vZGVCeUlkKCRpZCk7DQogICAgJHBhZ2UgPSAkcGFnZU5vZGUtPkdldENvbnRlbnQoKTsNCiAgICAkbm9kZSA9IHNlbGY6Oml0ZW1Ub0FycmF5KCRwYWdlLCAnJyk7DQogICAgcmV0dXJuICRub2RlOw0KICB9DQoNCg0KICBzdGF0aWMgZnVuY3Rpb24gaXRlbVRvQXJyYXkoJHBhZ2Vjb250ZW50LCAkbGFzdGNhdCkNCiAgew0KICAgICRtb2QgPSBzZWxmOjpfZ2V0TW9kKCk7DQogICAgJHRoaXNJdGVtID0gYXJyYXkoKTsNCiAgICAkY2F0VGh1bWJTaXplID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV90aHVtYm5haWwnLCA5MCk7DQogICAgJGl0ZW1UaHVtYlNpemUgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2ltYWdlX3NpemVfY2F0ZWdvcnknLCA3MCk7DQogICAgJG1pc3NpbmdJbWFnZSA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ3Nob3dfbWlzc2luZycsICcxJyk7DQogICAgDQogICAgc3dpdGNoICgkcGFnZWNvbnRlbnQtPlR5cGUoKSkNCiAgICB7DQogICAgICANCiAgICAgIGNhc2UgJ2NhdGFsb2dpdGVtJzoNCiAgICAgIHsNCiAgICAgICAgJHRoaXNJdGVtWydpbWFnZSddID0gY2F0RmlsZXNPcGVyYXRpb25zOjppbWFnZVNwZWMoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFnZWNvbnRlbnQtPkFsaWFzKCksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncycsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXRlbVRodW1iU2l6ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICR0aGlzSXRlbVsnaW1hZ2Vfc3JjJ10gPSBjYXRGaWxlc09wZXJhdGlvbnM6OnNyY0ltYWdlU3BlYygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2Vjb250ZW50LT5BbGlhcygpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgfQ0KICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgY2FzZSAnY2F0YWxvZ2NhdGVnb3J5JzoNCiAgICAgIHsNCiAgICAgICAgJHRoaXNJdGVtWydpbWFnZSddID0gY2F0RmlsZXNPcGVyYXRpb25zOjppbWFnZVNwZWMoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYWdlY29udGVudC0+QWxpYXMoKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2N0JywgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2F0VGh1bWJTaXplDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICB9DQogICAgICBicmVhazsNCiAgICB9DQogICAgICANCiAgICAkdGhpc0l0ZW1bJ2xpbmsnXSA9ICRwYWdlY29udGVudC0+R2V0VXJsKCk7DQogICAgJHRoaXNJdGVtWyd0aXRsZSddID0gJHBhZ2Vjb250ZW50LT5OYW1lKCk7DQogICAgJHRoaXNJdGVtWydhbGlhcyddID0gJHBhZ2Vjb250ZW50LT5BbGlhcygpOw0KICAgICR0aGlzSXRlbVsnbWVudXRpdGxlJ10gPSAkcGFnZWNvbnRlbnQtPk1lbnVUZXh0KCk7DQogICAgJHRoaXNJdGVtWydtb2RpZmllZGRhdGUnXSA9ICRwYWdlY29udGVudC0+R2V0TW9kaWZpZWREYXRlKCk7DQogICAgJHRoaXNJdGVtWydjYXRlZ29yeSddID0gJGxhc3RjYXQ7DQogICAgJHRoaXNJdGVtWydjYXQnXSA9ICRsYXN0Y2F0Ow0KICAgICR0aGlzSXRlbVsnY3JlYXRlZGF0ZSddID0gJHBhZ2Vjb250ZW50LT5HZXRDcmVhdGlvbkRhdGUoKTsNCiAgICAkdGhpc0l0ZW1bJ2F0dHJzJ10gPSBhcnJheSgpOw0KICAgICR0aGVzZUF0dHJzID0gJHBhZ2Vjb250ZW50LT5nZXRBdHRycygpOw0KDQogICAgZm9yZWFjaCAoJHRoZXNlQXR0cnMgYXMgJHRoaXNBdHRyKQ0KICAgIHsNCiAgICAgICRzYWZlYXR0ciA9IHN0cnRvbG93ZXIocHJlZ19yZXBsYWNlKCcvXFcvJywgJycsICR0aGlzQXR0ci0+YXR0cikpOw0KICAgICAgJHRoaXNJdGVtWyR0aGlzQXR0ci0+c2FmZV0gPSAkcGFnZWNvbnRlbnQtPkdldFByb3BlcnR5VmFsdWUoJHRoaXNBdHRyLT5hdHRyKTsNCiAgICAgICR0aGlzSXRlbVsnYXR0cnMnXVskdGhpc0F0dHItPnNhZmVdID0gJHBhZ2Vjb250ZW50LT5HZXRQcm9wZXJ0eVZhbHVlKCR0aGlzQXR0ci0+YXR0cik7DQogICAgICANCiAgICAgIGlmKCAhaXNzZXQoJHRoaXNBdHRyLT5hbGlhcykgfHwgZW1wdHkoJHRoaXNBdHRyLT5hbGlhcykgKQ0KICAgICAgew0KICAgICAgICAkdGhpc0F0dHItPmFsaWFzID0gc3RydG9sb3dlciggcHJlZ19yZXBsYWNlKCcvXFcvJywgJycsICR0aGlzQXR0ci0+YXR0cikgKTsNCiAgICAgIH0NCiAgICAgIA0KICAgICAgIyBwcm9sbHkgcmVkdW5kYW50ICdpZicgYW5kIHRvIGJlIHJldm92ZWQgaWYgc28uLi4gKEpNKQ0KICAgICAgaWYoIGlzc2V0KCR0aGlzQXR0ci0+YWxpYXMpICYmICFlbXB0eSgkdGhpc0F0dHItPmFsaWFzKSApDQogICAgICB7DQogICAgICAgICR0aGlzSXRlbVskdGhpc0F0dHItPmFsaWFzXSA9ICRwYWdlY29udGVudC0+R2V0UHJvcGVydHlWYWx1ZSgkdGhpc0F0dHItPmF0dHIpOw0KICAgICAgICAkdGhpc0l0ZW1bJ2F0dHJzJ11bJHRoaXNBdHRyLT5hbGlhc10gPSAkcGFnZWNvbnRlbnQtPkdldFByb3BlcnR5VmFsdWUoJHRoaXNBdHRyLT5hdHRyKTsgIA0KICAgICAgfQ0KICAgIH0NCiAgICANCiAgICByZXR1cm4gJHRoaXNJdGVtOw0KICB9DQogIA0KICBzdGF0aWMgcHJvdGVjdGVkIGZ1bmN0aW9uIF9Jc0FjdGl2ZSgmJGNvbnRlbnQpDQogIHsNCiAgICByZXR1cm4gKCBtZXRob2RfZXhpc3RzKCRjb250ZW50LCAnQWN0aXZlJykgJiYgJGNvbnRlbnQtPkFjdGl2ZSgpICk7DQogIH0gIA0KICAgIA0KICBzdGF0aWMgcHJvdGVjdGVkIGZ1bmN0aW9uIF9Jc1ZhbGlkKCYkY29udGVudCkNCiAgew0KICAgIHJldHVybiAoIGlzX29iamVjdCgkY29udGVudCkgfHwgKCAhc2VsZjo6X0lzQWN0aXZlKCRjb250ZW50KSApICk7DQogIH0NCiAgDQogIHN0YXRpYyBwcm90ZWN0ZWQgZnVuY3Rpb24gX0lzVmFsaWRUeXBlKCYkY29udGVudCwgJiRwYXJhbXMpDQogIHsNCiAgICAkdHlwZV9vayA9IEZBTFNFOw0KICAgICRjdCA9ICRjb250ZW50LT5UeXBlKCk7DQogICAgDQogICAgc3dpdGNoICgkY3QpDQogICAgew0KICAgICAgY2FzZSAnY2F0YWxvZ2l0ZW0nOg0KICAgICAgew0KICAgICAgICAkUmVjdXJzaXZlTW9kZXMgPSBhcnJheSgnaXRlbXNfb25lJywgJ2l0ZW1zX2FsbCcsICdtaXhlZF9vbmUnLCAnbWl4ZWRfYWxsJyk7DQoNCiAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ3JlY3Vyc2UnXSkgJiYgaW5fYXJyYXkoICRwYXJhbXNbJ3JlY3Vyc2UnXSwgJFJlY3Vyc2l2ZU1vZGVzKSApDQogICAgICAgIHsNCiAgICAgICAgICAkdHlwZV9vayA9IFRSVUU7IA0KICAgICAgICB9IA0KICAgICAgfQ0KICAgICAgYnJlYWs7DQogICAgICANCiAgICAgIGNhc2UgJ2NhdGFsb2djYXRlZ29yeSc6DQogICAgICB7DQogICAgICAgICRSZWN1cnNpdmVNb2RlcyA9IGFycmF5KCdjYXRlZ29yaWVzX29uZScsICdjYXRlZ29yaWVzX2FsbCcsICdtaXhlZF9vbmUnLCAnbWl4ZWRfYWxsJyk7DQoNCiAgICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJ3JlY3Vyc2UnXSkgJiYgIGluX2FycmF5KCAkcGFyYW1zWydyZWN1cnNlJ10sICRSZWN1cnNpdmVNb2RlcykgKQ0KICAgICAgICB7DQogICAgICAgICAgJHR5cGVfb2sgPSBUUlVFOyANCiAgICAgICAgfSANCiAgICAgICAgDQogICAgICB9DQogICAgICBicmVhazsNCiAgICB9DQogIA0KICAgIHJldHVybiAkdHlwZV9vazsNCiAgfQ0KICANCiAgDQogIHN0YXRpYyBwcm90ZWN0ZWQgZnVuY3Rpb24gX0lzVmFsaWREZXB0aCgmJGNvbnRlbnQsICYkcGFyYW1zLCAkY3VySGllckRlcHRoLCAkY3VySGllckxlbiwgJGN1ckhpZXJhcmNoeSkNCiAgew0KICAgICRkZXB0aF9vayA9IGZhbHNlOw0KDQogICAgJFJlY3Vyc2l2ZU1vZGVzT25lID0gYXJyYXkoJ2l0ZW1zX29uZScsICdjYXRlZ29yaWVzX29uZScsICdtaXhlZF9vbmUnKTsNCiAgICAkUmVjdXJzaXZlTW9kZXNBbGwgPSBhcnJheSgnaXRlbXNfYWxsJywgJ2NhdGVnb3JpZXNfYWxsJywgJ21peGVkX2FsbCcpOw0KICAgICRkb3QgPSBzdWJzdHIoICRjb250ZW50LT5IaWVyYXJjaHkoKSwgMCwgJGN1ckhpZXJMZW4gKyAxICkgPT0gJGN1ckhpZXJhcmNoeSAuICcuJzsNCiAgICANCiAgICANCiAgICBpZiAoICANCiAgICAgICAgICBpbl9hcnJheSggJHBhcmFtc1sncmVjdXJzZSddLCAkUmVjdXJzaXZlTW9kZXNPbmUpICAmJg0KICAgICAgICAgIHN1YnN0cl9jb3VudCggJGNvbnRlbnQtPkhpZXJhcmNoeSgpLCAnLicgKSA9PSAoICRjdXJIaWVyRGVwdGggKyAxICkgJiYNCiAgICAgICAgICAkZG90IA0KICAgICAgICkNCiAgICB7DQogICAgICAkZGVwdGhfb2sgPSB0cnVlOw0KICAgIH0NCiAgICBlbHNlaWYgKCANCiAgICAgICAgICAgICAgKCBpc3NldCgkcGFyYW1zWydhbGlhcyddKSAmJiAkcGFyYW1zWydhbGlhcyddID09ICcvJykgfHwNCiAgICAgICAgICAgICAgKCBpbl9hcnJheSggJHBhcmFtc1sncmVjdXJzZSddLCAkUmVjdXJzaXZlTW9kZXNBbGwpICAmJiAkZG90ICkNCiAgICAgICAgICAgKQ0KICAgIHsNCiAgICAgICRkZXB0aF9vayA9IHRydWU7DQogICAgfQ0KICAgIA0KICAgIHJldHVybiAkZGVwdGhfb2s7DQogIH0gDQogIA0KICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgIyBTb3J0aW5nDQogICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICANCiAgc3RhdGljIGZ1bmN0aW9uIGNvbnRlbnRhbHBoYSgkYSwgJGIpDQogIHsNCiAgICByZXR1cm4gc3RyY2FzZWNtcCgkYVsndGl0bGUnXSwgJGJbJ3RpdGxlJ10pOw0KICB9DQogIA0KDQogIHN0YXRpYyBmdW5jdGlvbiBjaHJvbm8oJGEsICRiKQ0KICB7DQogICAgI3JldHVybiBzZWxmOjpDb21wYXJlRGF0ZXMoJGFbJ21vZGlmaWVkZGF0ZSddLCAkYlsnbW9kaWZpZWRkYXRlJ10pOw0KICAgICMgcmV2ZXJzZSB0byBrZWVwIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cw0KICAgIHJldHVybiBzZWxmOjpDb21wYXJlRGF0ZXMoJGJbJ21vZGlmaWVkZGF0ZSddLCAkYVsnbW9kaWZpZWRkYXRlJ10pOw0KICAgIC8qDQogICAgaWYgKCRhWydtb2RpZmllZGRhdGUnXSA+ICRiWydtb2RpZmllZGRhdGUnXSkNCiAgICB7DQogICAgICByZXR1cm4gLTE7DQogICAgfQ0KICAgIGlmICgkYVsnbW9kaWZpZWRkYXRlJ10gPCAkYlsnbW9kaWZpZWRkYXRlJ10pDQogICAgew0KICAgICAgcmV0dXJuIDE7DQogICAgfQ0KICAgIHJldHVybiAwOw0KICAgICovDQogIH0NCg0KICBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlZCgkYSwgJGIpDQogIHsNCiAgICAjcmV0dXJuIHNlbGY6OkNvbXBhcmVEYXRlcygkYVsnY3JlYXRlZGF0ZSddLCAkYlsnY3JlYXRlZGF0ZSddKTsNCiAgICAjIHJldmVyc2UgdG8ga2VlcCBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMNCiAgICByZXR1cm4gc2VsZjo6Q29tcGFyZURhdGVzKCRiWydjcmVhdGVkYXRlJ10sICRhWydjcmVhdGVkYXRlJ10pOw0KICAgIA0KICAgIC8qDQogICAgaWYgKCRhWydjcmVhdGVkYXRlJ10gPiAkYlsnY3JlYXRlZGF0ZSddKQ0KICAgIHsNCiAgICAgIHJldHVybiAtMTsNCiAgICB9DQogICAgaWYgKCRhWydjcmVhdGVkYXRlJ10gPCAkYlsnY3JlYXRlZGF0ZSddKQ0KICAgIHsNCiAgICAgIHJldHVybiAxOw0KICAgIH0NCiAgICByZXR1cm4gMDsNCiAgICAqLw0KICB9IA0KICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgDQogIA0KICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgIyBkYXRldGltZQ0KICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgDQogIHN0YXRpYyBmdW5jdGlvbiBtYWtlVGltZVN0YW1wKCRob3VyID0gJycsICRtaW51dGUgPSAnJywgJHNlY29uZCA9ICcnLCAkeWVhciA9ICcnLCAkbW9udGggPSAnJywgJGRheSA9ICcnKQ0KICB7DQogICAgIGlmKGVtcHR5KCRob3VyKSkgDQogICAgIHsNCiAgICAgICAgICRob3VyID0gc3RyZnRpbWUoJyVIJyk7DQogICAgIH0NCiAgICAgaWYoZW1wdHkoJG1pbnV0ZSkpIA0KICAgICB7DQogICAgICAgICAkbWludXRlID0gc3RyZnRpbWUoJyVNJyk7DQogICAgIH0NCiAgICAgaWYoZW1wdHkoJHNlY29uZCkpIA0KICAgICB7DQogICAgICAgICAkc2Vjb25kID0gc3RyZnRpbWUoJyVTJyk7DQogICAgIH0NCiAgICAgaWYoZW1wdHkoJHllYXIpKSANCiAgICAgew0KICAgICAgICAgJHllYXIgPSBzdHJmdGltZSgnJVknKTsNCiAgICAgfQ0KICAgICBpZihlbXB0eSgkbW9udGgpKSANCiAgICAgew0KICAgICAgICAgJG1vbnRoID0gc3RyZnRpbWUoJyVtJyk7DQogICAgIH0NCiAgICAgaWYoZW1wdHkoJGRheSkpIA0KICAgICB7DQogICAgICAgICAkZGF5ID0gc3RyZnRpbWUoJyVkJyk7DQogICAgIH0NCg0KICAgICByZXR1cm4gbWt0aW1lKCRob3VyLCAkbWludXRlLCAkc2Vjb25kLCAkbW9udGgsICRkYXksICR5ZWFyKTsNCiAgfQ0KDQogIHN0YXRpYyBmdW5jdGlvbiBOb3coKQ0KICB7DQogICAgcmV0dXJuIHNlbGY6Ol9nZXREQigpLT5EYlRpbWVTdGFtcCh0aW1lKCkpOw0KICB9DQogIA0KICAjDQogICMgUmVkaXJlY3QNCiAgIw0KICANCiAgLyoqDQogICogU2hvd3MgYSB2ZXJ5IGNsb3NlIGFwcHJveGltYXRpb24gb2YgYW4gQXBhY2hlIGdlbmVyYXRlZCAzMDEgZXJyb3IuDQogICogSXQgYWxzbyBzZW5kcyB0aGUgYWN0dWFsIGhlYWRlciBhbG9uZyBhcyB3ZWxsLCBzbyB0aGF0IGdlbmVyaWMNCiAgKiBicm93c2VyIGVycm9yIHBhZ2VzIChsaWtlIHdoYXQgSUUgZG9lcykgd2lsbCBiZSBkaXNwbGF5ZWQuDQogICovDQogIHN0YXRpYyBmdW5jdGlvbiBFcnJvckhhbmRsZXIzMDEoJHVybCkNCiAgew0KICAgIC8vIFRPRE8gMCAtbyBKb01vcmcgLWMgIHRhc2s6IENsZWFuICR1cmwNCiAgICAvLyBUT0RPIDAgLW8gSm9Nb3JnIC1jICB0YXNrOiBMb2NhbGl6ZS4uLiBtYXliZT8NCiAgICBAb2JfZW5kX2NsZWFuKCk7DQogICAgI2hlYWRlcigkX1NFUlZFUlsiU0VSVkVSX1BST1RPQ09MIl0gLiAnIDMwMSBNb3ZlZCBQZXJtYW5lbnRseScpOyAjIG1heWJlPz8/Pw0KICAgIGhlYWRlcignSFRUUC8xLjEgMzAxIE1vdmVkIFBlcm1hbmVudGx5Jyk7DQogICAgaGVhZGVyKCJTdGF0dXM6IDMwMSAgTW92ZWQgUGVybWFuZW50bHkiKTsNCiAgICAjIG1ha2Ugc3VyZSBicm93c2VycyBkb24ndCBjYWNoZSANCiAgICBoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUiKTsgLy8gSFRUUC8xLjENCiAgICBoZWFkZXIoIkV4cGlyZXM6IFNhdCwgMjYgSnVsIDE5OTcgMDU6MDA6MDAgR01UIik7IC8vIERhdGUgaW4gdGhlIHBhc3QNCiAgICBoZWFkZXIoJ0xvY2F0aW9uOiAnIC4gJHVybCApOw0KICAgICRodG1sID0gIjwhRE9DVFlQRSBIVE1MIFBVQkxJQyBcIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU5cIj5cbiI7IA0KICAgICRodG1sIC49ICI8aHRtbD5cbiI7IA0KICAgICRodG1sIC49ICI8aGVhZD5cbiI7IA0KICAgICRodG1sIC49ICI8dGl0bGU+TW92ZWQ8L3RpdGxlPlxuIjsgDQogICAgJGh0bWwgLj0gIjwvaGVhZD5cbiI7IA0KICAgICRodG1sIC49ICI8Ym9keT5cbiI7IA0KICAgICRodG1sIC49ICI8aDE+TW92ZWQ8L2gxPlxuIjsgDQogICAgJGh0bWwgLj0gIjxwPlRoaXMgcGFnZSBoYXMgbW92ZWQgdG8gPGEgaHJlZj1cIiIgLiAkdXJsIC4gIlwiPiIgLiAkdXJsIC4gIjwvYT4uPC9wPlxuIjsgDQogICAgJGh0bWwgLj0gIjwvYm9keT5cbiI7IA0KICAgICRodG1sIC49ICI8L2h0bWw+XG4iOyANCiAgICBlY2hvICRodG1sOw0KICAgIGV4aXQoKTsNCiAgfQ0KICANCiAgLyoqDQogICAqIEdpdmVuIGEgcGFnZSBJRCBvciBhbiBhbGlhcywgcmVkaXJlY3QgdG8gaXQNCiAgICogUmV0cmlldmVzIHRoZSBVUkwgb2YgdGhlIHNwZWNpZmllZCBwYWdlLCBhbmQgcGVyZm9ybXMgYSByZWRpcmVjdA0KICAgKg0KICAgKiBAcGFyYW0gbWl4ZWQgQW4gaW50ZWdlciBwYWdlIGlkIG9yIGEgc3RyaW5nIHBhZ2UgYWxpYXMuDQogICAqIEByZXR1cm4gdm9pZA0KICAgKi8NCiAgc3RhdGljIGZ1bmN0aW9uIFVSTGZyb21BbGlhcygkYWxpYXMpDQogIHsNCiAgICAkbWFuYWdlciA9IGNtc21zKCktPkdldEhpZXJhcmNoeU1hbmFnZXIoKTsNCiAgICAkbm9kZSA9ICRtYW5hZ2VyLT5zdXJlR2V0Tm9kZUJ5QWxpYXMoJGFsaWFzKTsNCiAgICANCiAgICBpZiggISRub2RlICkgDQogICAgew0KICAgICAgYXVkaXQoJycsICdDYXRhbG9nZXInLCAnQXR0ZW1wdCB0byByZWRpcmVjdCB0byBpbnZhbGlkIGFsaWFzOiAnIC4gJGFsaWFzKTsNCiAgICAgIHJldHVybjsNCiAgICB9DQogICAgDQogICAgJGNvbnRlbnQgPSAkbm9kZS0+R2V0Q29udGVudCgpOw0KICAgIA0KICAgIGlmICghaXNfb2JqZWN0KCRjb250ZW50KSkgDQogICAgew0KICAgICAgYXVkaXQoJycsICdDYXRhbG9nZXInLCAnQXR0ZW1wdCB0byByZWRpcmVjdCB0byBpbnZhbGlkIGFsaWFzOiAnIC4gJGFsaWFzKTsNCiAgICAgIHJldHVybjsNCiAgICB9DQogICAgDQogICAgcmV0dXJuICRjb250ZW50LT5HZXRVUkwoKTsNCiAgfQ0KICANCiAgc3RhdGljIGZ1bmN0aW9uIElzVmFsaWRBbGlhcygkYWxpYXMpDQogIHsNCiAgICAkbWFuYWdlciA9IGNtc21zKCktPkdldEhpZXJhcmNoeU1hbmFnZXIoKTsNCiAgICAkbm9kZSA9ICRtYW5hZ2VyLT5zdXJlR2V0Tm9kZUJ5QWxpYXMoJGFsaWFzKTsNCg0KICAgIGlmKCAhJG5vZGUgKSANCiAgICB7DQogICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KICAgIA0KICAgICRjb250ZW50ID0gJG5vZGUtPkdldENvbnRlbnQoKTsNCiAgICANCiAgICBpZiAoIWlzX29iamVjdCgkY29udGVudCkpIA0KICAgIHsNCiAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQogICAgDQogICAgcmV0dXJuIHRydWU7IA0KICB9DQoNCiAgc3RhdGljIGZ1bmN0aW9uICBpc19FeHBpcmVkKCRkYXRlKQ0KICB7DQogICAgcmV0dXJuIChib29sKSggMSA9PT0gc2VsZjo6Q29tcGFyZURhdGVzKCB0aW1lKCksICRkYXRlICkgKTsNCiAgfQ0KICANCiAgc3RhdGljIGZ1bmN0aW9uICB0b19FeHBpcmUoJGRhdGUpDQogIHsNCiAgICByZXR1cm4gKGJvb2wpKCAxID09PSBzZWxmOjpDb21wYXJlRGF0ZXMoIHRpbWUoKSwgJGRhdGUgKSApOw0KICB9DQogIA0KICBzdGF0aWMgZnVuY3Rpb24gdG9fVW5FeHBpcmUoJGRhdGUpDQogIHsNCiAgICByZXR1cm4gKGJvb2wpKCAxID09PSBzZWxmOjpDb21wYXJlRGF0ZXMoICRkYXRlLCB0aW1lKCkgKSApOyANCiAgfQ0KICANCiAgc3RhdGljIGZ1bmN0aW9uIENvbXBhcmVEYXRlcygkYSwgJGIpDQogIHsNCiAgICAjIG1ha2Ugc3VyZSB0aGV5J3JlIGludGVnZXJzLi4uLg0KICAgICRhID0gKGludCkkYTsNCiAgICAkYiA9IChpbnQpJGI7DQogICAgJHIgPSAwOw0KICAgICAgDQogICAgaWYgKCRhID4gJGIpDQogICAgew0KICAgICAgJHIgPSAxOw0KICAgIH0NCiAgICANCiAgICBpZiAoJGEgPCAkYikNCiAgICB7DQogICAgICAkciA9IC0xOw0KICAgIH0NCiAgICANCiAgICByZXR1cm4gKGludCkkcjsNCiAgfQ0KICANCn0NCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.catFields.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmNsYXNzIGNhdEZpZWxkcw0Kew0KICBzdGF0aWMgcHJpdmF0ZSAkX2ZpZWxkX3R5cGVzOw0KICBzdGF0aWMgcHJpdmF0ZSAkX21vZDsNCiAgDQogIGZ1bmN0aW9uIF9fQ29uc3RydWN0KCkNCiAgew0KICAgIHNlbGY6OiRfbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDYXRhbG9nZXInKTsNCiAgICBzZWxmOjokX2ZpZWxkX3R5cGVzID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQnICAgICAgPT4gICR0aGlzLT5fbW9kLT5MYW5nKCd0ZXh0JyksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbGVjdCcgICAgPT4gICR0aGlzLT5fbW9kLT5MYW5nKCdkcm9wZG93bicpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0YXJlYScgID0+ICAkdGhpcy0+X21vZC0+TGFuZygndGV4dGFyZWEnKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hlY2tib3gnICA9PiAgJHRoaXMtPl9tb2QtPkxhbmcoJ2NoZWNrYm94JykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgfQ0KICANCiAgc3RhdGljIGZ1bmN0aW9uIGdldEZpZWxkVHlwZXMoKQ0KICB7DQogICAgcmV0dXJuIHNlbGY6OiRfZmllbGRfdHlwZXM7DQogIH0NCiAgDQogIA0KICBzdGF0aWMgZnVuY3Rpb24gUmVuZGVyU2VsZWN0RmllbGQoJGZpZWxkID0gbnVsbCwgJHZhbHVlID0gbnVsbCkNCiAgew0KICAgICRzZWxlY3RfdmFsdWVzID0gYXJyYXkoKTsNCiAgICAkcmV0ID0gJyc7DQogICAgaWYgKGlzc2V0KCRmaWVsZC0+c2VsZWN0X3ZhbHVlcykgJiYgJGZpZWxkLT5zZWxlY3RfdmFsdWVzICE9ICcnKQ0KICAgIHsNCiAgICAgICRzZWxlY3RfdmFsdWVzID0gYXJyYXlfbWFwKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cmltJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBsb2RlKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWxzcGVjaWFsY2hhcnMoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWVsZC0+c2VsZWN0X3ZhbHVlcywgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVOVF9RVU9URVMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICB9DQogICAgICANCiAgICAkcmV0IC49ICc8c2VsZWN0IHR5cGU9ImRyb3Bkb3duIiBuYW1lPSInIC4gJGZpZWxkLT5zYWZlIC4gJyI+JzsNCiAgICAgIA0KICAgIGZvcmVhY2ggKCRzZWxlY3RfdmFsdWVzIGFzICRvbmVfdmFsKQ0KICAgIHsNCiAgICAgICRyZXQgLj0gJzxvcHRpb24gdmFsdWU9IicgLiAkb25lX3ZhbCAuICciJzsNCiAgICAgIA0KICAgICAgaWYgKGh0bWxzcGVjaWFsY2hhcnMoJHZhbHVlLCBFTlRfUVVPVEVTKSA9PSAkb25lX3ZhbCkNCiAgICAgIHsNCiAgICAgICAgJHJldCAuPSAnIHNlbGVjdGVkPSJzZWxlY3RlZCInOw0KICAgICAgfQ0KICAgICAgDQogICAgICAkcmV0IC49ICc+JyAuICRvbmVfdmFsIC4gJzwvb3B0aW9uPic7DQogICAgfQ0KICAgIA0KICAgICRyZXQgLj0gJzwvc2VsZWN0Pic7DQogICAgDQogICAgcmV0dXJuIGFycmF5KCRmaWVsZC0+YXR0ciAuICc6JywgJHJldCk7DQogIH0NCiAgDQogIHN0YXRpYyBmdW5jdGlvbiBSZW5kZXJUZXh0QXJlYSgkZmllbGQgPSBudWxsLCAkdmFsdWUgPSBudWxsLCAkZW5hYmxlV1lTSVdZRyA9IFRSVUUpDQogIHsNCiAgICByZXR1cm4gYXJyYXkoDQogICAgICAgICAgICAgICAgICAkZmllbGQtPmF0dHIgLiAnOicsIA0KICAgICAgICAgICAgICAgICAgY3JlYXRlX3RleHRhcmVhKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVuYWJsZVdZU0lXWUcsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWVsZC0+c2FmZSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmllbGQtPmF0dHIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODAsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgICAgICk7DQogIH0NCiAgIA0KICBzdGF0aWMgZnVuY3Rpb24gUmVuZGVyQ2hlY2tCb3goJGZpZWxkID0gbnVsbCwgJHZhbHVlID0gbnVsbCkNCiAgew0KICAgIGlmIChpc3NldCgkZmllbGQtPnNlbGVjdF92YWx1ZXMpICYmIHN0cnBvcygkZmllbGQtPnNlbGVjdF92YWx1ZXMsICcsJykgIT09IGZhbHNlKQ0KICAgIHsNCiAgICAgIGxpc3QgKCRpcywgJGlzbnQpID0gZXhwbG9kZSgnLCcsICRmaWVsZC0+c2VsZWN0X3ZhbHVlcyk7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAkaXMgPSAnWWVzJzsNCiAgICAgICRpc250ID0gJ05vJzsNCiAgICB9DQogICAgDQogICAgJHJldCA9ICc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSInDQogICAgICAgICAgICAgIC4gJGZpZWxkLT5zYWZlDQogICAgICAgICAgICAgIC4gJyIgdmFsdWU9IicNCiAgICAgICAgICAgICAgLiBodG1sc3BlY2lhbGNoYXJzKCRpc250LCBFTlRfUVVPVEVTKQ0KICAgICAgICAgICAgICAuICciLz4nOw0KICAgICAgICAgICAgICANCiAgICAkcmV0IC49ICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSInDQogICAgICAgICAgICAgICAuICRmaWVsZC0+c2FmZQ0KICAgICAgICAgICAgICAgLiAnIiBuYW1lPSInDQogICAgICAgICAgICAgICAuICRmaWVsZC0+c2FmZQ0KICAgICAgICAgICAgICAgLiAnIiB2YWx1ZT0iJw0KICAgICAgICAgICAgICAgLiBodG1sc3BlY2lhbGNoYXJzKCRpcywgRU5UX1FVT1RFUykNCiAgICAgICAgICAgICAgIC4gJyInOw0KICAgICAgICAgICAgICAgDQogICAgaWYgKCR2YWx1ZSA9PSAkaXMpDQogICAgew0KICAgICAgJHJldCAuPSAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsNCiAgICB9DQogICAgDQogICAgJHJldCAuPSAnPjxsYWJlbCBmb3I9IicgLiAkZmllbGQtPnNhZmUgLiAnIj4nIC4gJGlzIC4gJzwvbGFiZWw+JzsNCiAgICANCiAgICByZXR1cm4gYXJyYXkoJGZpZWxkLT5hdHRyIC4gJzonLCAkcmV0KTsNCiAgfQ0KICANCiAgc3RhdGljIGZ1bmN0aW9uIFJlbmRlclRleHQoJGZpZWxkID0gbnVsbCwgJHZhbHVlID0gbnVsbCkNCiAgew0KICAgICRsID0gJGZpZWxkLT5sZW5ndGg7DQoNCiAgICBpZiAoZW1wdHkoJGwpKQ0KICAgIHsNCiAgICAgICRsID0gMjU7DQogICAgICAkbSA9IDEwMjQ7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAkbSA9ICRsOw0KICAgIH0NCiAgICANCiAgICByZXR1cm4gYXJyYXkoDQogICAgICAgICAgICAgICAgICAkZmllbGQtPmF0dHIgLiAnOicsIA0KICAgICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSInDQogICAgICAgICAgICAgICAgICAuICRmaWVsZC0+c2FmZQ0KICAgICAgICAgICAgICAgICAgLiAnIiB2YWx1ZT0iJw0KICAgICAgICAgICAgICAgICAgLiBodG1sc3BlY2lhbGNoYXJzKCR2YWx1ZSwgRU5UX1FVT1RFUykNCiAgICAgICAgICAgICAgICAgIC4gJyIgc2l6ZT0iJw0KICAgICAgICAgICAgICAgICAgLiAkbA0KICAgICAgICAgICAgICAgICAgLiAnIiBtYXhsZW5ndGg9IicNCiAgICAgICAgICAgICAgICAgIC4gJG0NCiAgICAgICAgICAgICAgICAgIC4gJyIgLz4nDQogICAgICAgICAgICAgICAgICk7DQogIH0NCiAgDQogIHN0YXRpYyBmdW5jdGlvbiBSZW5kZXJJbnB1dCgkZmllbGQgPSBudWxsLCAkdmFsdWUgPSBudWxsLCAkZW5hYmxlV1lTSVdZRyA9IFRSVUUpDQogIHsNCg0KICAgIGlmIChlbXB0eSgkdmFsdWUpICYmICFlbXB0eSgkZmllbGQtPmRlZmF1bHQpKQ0KICAgIHsNCiAgICAgICR2YWx1ZSA9ICRmaWVsZC0+ZGVmYXVsdDsgIA0KICAgIH0NCiAgICANCiAgICBpZiAoJGZpZWxkLT5maWVsZF90eXBlID09ICdzZWxlY3QnKQ0KICAgIHsNCiAgICAgIHJldHVybiBzZWxmOjpSZW5kZXJTZWxlY3RGaWVsZCgkZmllbGQsICR2YWx1ZSk7DQogICAgfQ0KICAgIGVsc2UgaWYgKCRmaWVsZC0+ZmllbGRfdHlwZSA9PSAndGV4dGFyZWEnKQ0KICAgIHsNCiAgICAgIHJldHVybiBzZWxmOjpSZW5kZXJUZXh0QXJlYSgkZmllbGQsICR2YWx1ZSwgJGVuYWJsZVdZU0lXWUcpOw0KICAgIH0NCiAgICANCiAgICBlbHNlIGlmICgkZmllbGQtPmZpZWxkX3R5cGUgPT0gJ2NoZWNrYm94JykNCiAgICB7DQogICAgICByZXR1cm4gc2VsZjo6UmVuZGVyQ2hlY2tCb3goJGZpZWxkLCAkdmFsdWUpOw0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAgcmV0dXJuIHNlbGY6OlJlbmRlclRleHQoJGZpZWxkLCAkdmFsdWUpOw0KICAgIH0NCiAgICANCiAgICAjIHdlIHNob3VsZCBuZXZlciBnZXQgdG8gdGhpcyBwb2ludCBzby4uLg0KICAgIGRpZSgnY2xhc3MuY2F0RmllbGRzLnBocCAtIEVSUk9SOiBSZW5kZXJJbnB1dCgpIGNvdWxkblwndCBmaW5kIGEgbGVnYWwgaW5wdXQgdHlwZSEnKTsNCiAgfQ0KfQ0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.catFilesOperations.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmNsYXNzIGNhdEZpbGVzT3BlcmF0aW9ucw0Kew0KICBjb25zdCBSRVRfTUlTU0lOR19VUkwgICA9ICdVUkwnOw0KICBjb25zdCBSRVRfTUlTU0lOR19QQVRIICA9ICdQQVRIJzsNCiAgDQogIHByb3RlY3RlZCBzdGF0aWMgJF9pbml0aWFsaXplZCA9IEZBTFNFOw0KICBwcm90ZWN0ZWQgc3RhdGljICRfbW9kOw0KICBwcm90ZWN0ZWQgc3RhdGljICRfY21zOw0KICBwcm90ZWN0ZWQgc3RhdGljICRfY29uZmlnOw0KICANCiAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gX2luaXRpYWxpemUoKQ0KICB7DQogICAgaWYoIXNlbGY6OiRfaW5pdGlhbGl6ZWQpDQogICAgew0KICAgICAgc2VsZjo6JF9tb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0NhdGFsb2dlcicpOw0KICAgICAgc2VsZjo6JF9jbXMgPSBjbXNtcygpOw0KICAgICAgc2VsZjo6JF9jb25maWcgPSBzZWxmOjokX2Ntcy0+R2V0Q29uZmlnKCk7DQogICAgfQ0KICB9DQogIA0KICAvLyB0eXBlIGNhbiBiZSAicyIgLSBzb3VyY2UgaW1hZ2UsICJpIiAtIHByb2Nlc3NlZCBpbWFnZSwgb3IgImYiIC0gZmlsZQ0KICBzdGF0aWMgZnVuY3Rpb24gZ2V0QXNzZXRQYXRoKCR0eXBlID0gJ2knLCAkZGVmYXVsdCA9IGZhbHNlKQ0KICB7DQogICAgc2VsZjo6X2luaXRpYWxpemUoKTsNCiAgICAkbW9kID0gc2VsZjo6JF9tb2Q7DQogICAgJGNvbmZpZyA9IHNlbGY6OiRfY29uZmlnOw0KICAgICRyb290UGF0aCA9ICRjb25maWdbJ3Jvb3RfcGF0aCddOw0KICAgDQogICAgJHVwbG9hZGJhc2UgPSB0cmltKCBzdHJfcmVwbGFjZSgkcm9vdFBhdGgsICcnLCAkY29uZmlnWyd1cGxvYWRzX3BhdGgnXSksIERJUkVDVE9SWV9TRVBBUkFUT1IgKTsNCiAgICANCiAgICBpZigkZGVmYXVsdCkNCiAgICB7DQogICAgICBzd2l0Y2goJHR5cGUpDQogICAgICB7DQogICAgICAgIGNhc2UgJ3MnOiAkcmV0ID0gY21zX2pvaW5fcGF0aCgkdXBsb2FkYmFzZSwgJ2ltYWdlcycsICdjYXRhbG9nX3NyYycpOyBicmVhazsgDQogICAgICAgIGNhc2UgJ2knOiAkcmV0ID0gY21zX2pvaW5fcGF0aCgkdXBsb2FkYmFzZSwgJ2ltYWdlcycsICdjYXRhbG9nJyk7IGJyZWFrOyANCiAgICAgICAgY2FzZSAnZic6ICRyZXQgPSBjbXNfam9pbl9wYXRoKCR1cGxvYWRiYXNlLCAnY2F0YWxvZ2VyZmlsZXMnKTsgYnJlYWs7IA0KICAgICAgfQ0KICAgICAgDQogICAgICAjIGp1c3QgaW4gY2FzZSB0aGVyZSBhcmUgbWlzbWF0Y2hlZCBESVJFQ1RPUlkgU0VQQVJBVE9SIGNoYXJzDQogICAgICAkcmV0ID0gc3RyX3JlcGxhY2UoJy8nLCBESVJFQ1RPUllfU0VQQVJBVE9SLCAkcmV0KTsNCiAgICAgICRyZXQgPSBzdHJfcmVwbGFjZSgnXFwnLCBESVJFQ1RPUllfU0VQQVJBVE9SLCAkcmV0KTsNCiAgICAgIA0KICAgICAgcmV0dXJuIHRyaW0oJHJldCwgRElSRUNUT1JZX1NFUEFSQVRPUik7DQogICAgfQ0KICAgICAgDQogICAgc3dpdGNoKCR0eXBlKQ0KICAgIHsNCiAgICAgIGNhc2UgJ3MnOg0KICAgICAgew0KICAgICAgICAkX0J5RGVmYXVsdCA9IGNtc19qb2luX3BhdGgoJHVwbG9hZGJhc2UsICdpbWFnZXMnLCAnY2F0YWxvZ19zcmMnKTsNCiAgICAgICAgJHJldCA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2ltYWdlX3VwbG9hZF9wYXRoJywgJF9CeURlZmF1bHQpOyANCiAgICAgIH0NCiAgICAgIGJyZWFrOyANCg0KICAgICAgDQogICAgICBjYXNlICdpJzoNCiAgICAgIHsNCiAgICAgICAgJF9CeURlZmF1bHQgPSBjbXNfam9pbl9wYXRoKCR1cGxvYWRiYXNlLCAnaW1hZ2VzJywgJ2NhdGFsb2cnKTsNCiAgICAgICAgJHJldCA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2ltYWdlX3Byb2NfcGF0aCcsICRfQnlEZWZhdWx0KTsgIA0KICAgICAgfQ0KICAgICAgYnJlYWs7IA0KICAgICAgDQogICAgICBjYXNlICdmJzoNCiAgICAgIHsNCiAgICAgICAgJF9CeURlZmF1bHQgPSBjbXNfam9pbl9wYXRoKCR1cGxvYWRiYXNlLCAnY2F0YWxvZ2VyZmlsZXMnKTsNCiAgICAgICAgJHJldCA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2ZpbGVfdXBsb2FkX3BhdGgnLCAkX0J5RGVmYXVsdCk7ICANCiAgICAgIH0NCiAgICAgIGJyZWFrOyANCiAgICAgIA0KICAgIH0NCg0KICAgICMganVzdCBpbiBjYXNlIHRoZXJlIGFyZSBtaXNtYXRjaGVkIERJUkVDVE9SWSBTRVBBUkFUT1IgY2hhcnMNCiAgICAkcmV0ID0gc3RyX3JlcGxhY2UoJy8nLCBESVJFQ1RPUllfU0VQQVJBVE9SLCAkcmV0KTsNCiAgICAkcmV0ID0gc3RyX3JlcGxhY2UoJ1xcJywgRElSRUNUT1JZX1NFUEFSQVRPUiwgJHJldCk7DQogICAgDQogICAgcmV0dXJuIHRyaW0oJHJldCwgRElSRUNUT1JZX1NFUEFSQVRPUik7ICAgDQogIH0NCiAgDQogIC8vIHR5cGUgY2FuIGJlICJzIiAtIHNvdXJjZSBpbWFnZSwgImkiIC0gcHJvY2Vzc2VkIGltYWdlLCBvciAiZiIgLSBmaWxlDQogIHN0YXRpYyBmdW5jdGlvbiBnZXRBc3NldFVybCgkdHlwZSA9ICdpJywgJGRlZmF1bHQgPSBmYWxzZSkNCiAgew0KICAgIHJldHVybiBzdHJfcmVwbGFjZSggRElSRUNUT1JZX1NFUEFSQVRPUiwgJy8nLCBzZWxmOjpnZXRBc3NldFBhdGgoJHR5cGUsICRkZWZhdWx0KSApOyAgICANCiAgfQ0KICANCiAgc3RhdGljIGZ1bmN0aW9uIEV4dGVuZGVyKCkNCiAgew0KICAgICRyZXQgPSAnJmFtcDthYz0nOw0KICAgIA0KICAgIGZvciAoJHIgPSAwOyAkciA8IDU7ICRyKyspDQogICAgew0KICAgICAgJHJldCAuPSByYW5kKDAsOSk7DQogICAgfQ0KICAgIA0KICAgIHJldHVybiAkcmV0Ow0KICB9DQoNCg0KICBzdGF0aWMgZnVuY3Rpb24gaW1hZ2VTcGVjKCRhbGlhcywgJHR5cGUsICRpbWFnZV9udW1iZXIsICRzaXplLCAkYW50aWNhY2hlID0gdHJ1ZSwgJGZvcmNlc2hvd21pc3NpbmcgPSBmYWxzZSkNCiAgew0KICAgIHNlbGY6Ol9pbml0aWFsaXplKCk7DQogICAgJG1vZCA9IHNlbGY6OiRfbW9kOw0KICAgICRjb25maWcgPSBzZWxmOjokX2NvbmZpZzsNCiAgICANCiAgICAkY29udGVudG9wcyA9IHNlbGY6OiRfY21zLT5HZXRDb250ZW50T3BlcmF0aW9ucygpOw0KICAgICRyZXR1cm5pZCA9ICRjb250ZW50b3BzLT5HZXREZWZhdWx0Q29udGVudCgpOw0KICAgIA0KICAgICRwcmV0dHlfdXJsID0gJ2NhdGFsb2dlcl9pbWFnZSc7DQogICAgJHVybCA9ICRtb2QtPmNyZWF0ZV91cmwoJ2NudG50MDEnLCAnaW1hZ2UnLCAkcmV0dXJuaWQsIGFycmF5KCksIEZBTFNFLCBGQUxTRSwgJHByZXR0eV91cmwpOw0KICAgIA0KICAgIGlmICgkbW9kLT5zaG93TWlzc2luZyA9PSAnJykNCiAgICB7DQogICAgICAkbW9kLT5zaG93TWlzc2luZyA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ3Nob3dfbWlzc2luZycsICcxJyk7DQogICAgfQ0KICAgIA0KICAgICRleHRlbmRlciA9ICcnOw0KICAgIA0KICAgIGlmKCRhbnRpY2FjaGUpDQogICAgew0KICAgICAgJGV4dGVuZGVyID0gc2VsZjo6RXh0ZW5kZXIoKTsNCiAgICB9DQogICAgICAgIA0KICAgICRyID0gJHVybA0KICAgICAgICAgLiAoICgkY29uZmlnWyd1cmxfcmV3cml0aW5nJ10gIT0gJ25vbmUnKSA/ICRjb25maWdbJ3BhZ2VfZXh0ZW5zaW9uJ10gOiAnJyApDQogICAgICAgICAuICggKCRjb25maWdbJ3VybF9yZXdyaXRpbmcnXSA9PSAnbW9kX3Jld3JpdGUnKSA/ICc/aT0nIDogJyZhbXA7aT0nICkNCiAgICAgICAgIC4gJGFsaWFzDQogICAgICAgICAuICdfJw0KICAgICAgICAgLiAkdHlwZQ0KICAgICAgICAgLiAnXycNCiAgICAgICAgIC4gJGltYWdlX251bWJlcg0KICAgICAgICAgLiAnXycNCiAgICAgICAgIC4gJHNpemUNCiAgICAgICAgIC4gKCRmb3JjZXNob3dtaXNzaW5nID8gJ18xJyA6ICdfJyAuICRtb2QtPnNob3dNaXNzaW5nKQ0KICAgICAgICAgLiAnLmpwZycNCiAgICAgICAgIC4gJGV4dGVuZGVyOw0KICAgICAgICAgDQogICAgICByZXR1cm4gJHI7DQogIH0NCg0KICBzdGF0aWMgZnVuY3Rpb24gc3JjSW1hZ2VTcGVjKCRhbGlhcywgJGltYWdlX251bWJlcikNCiAgew0KICAgIHNlbGY6Ol9pbml0aWFsaXplKCk7DQogICAgJG1vZCA9IHNlbGY6OiRfbW9kOw0KICAgICRjb25maWcgPSBzZWxmOjokX2NvbmZpZzsNCiAgICANCiAgICBpZiAoJG1vZC0+c2hvd01pc3NpbmcgPT0gJycpDQogICAgew0KICAgICAgJG1vZC0+c2hvd01pc3NpbmcgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdzaG93X21pc3NpbmcnLCAnMScpOw0KICAgIH0NCg0KICAgIGlmKCAhc2VsZjo6c3JjRXhpc3RzKCRhbGlhcywgJGltYWdlX251bWJlcikgKQ0KICAgIHsNCiAgICAgIA0KICAgICAgaWYgKCRtb2QtPnNob3dNaXNzaW5nICE9ICcxJykNCiAgICAgIHsNCiAgICAgICAgcmV0dXJuICRjb25maWdbJ3Jvb3RfdXJsJ10NCiAgICAgICAgICAgICAgIC4gJy9tb2R1bGVzL0NhdGFsb2dlci9pbWFnZXMvdHJhbnMuZ2lmJzsNCiAgICAgIH0NCiAgICAgIGVsc2UNCiAgICAgIHsNCiAgICAgICAgcmV0dXJuICRjb25maWdbJ3Jvb3RfdXJsJ10NCiAgICAgICAgICAgICAgIC4gJy9tb2R1bGVzL0NhdGFsb2dlci9pbWFnZXMvbm8taW1hZ2UuZ2lmJzsNCiAgICAgIH0NCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICRzb3VyY2VfdXJsID0gc3RyX3JlcGxhY2UoRElSRUNUT1JZX1NFUEFSQVRPUiwgJy8nLCBzZWxmOjpnZXRBc3NldFBhdGgoJ3MnKSApOw0KICAgICAgDQogICAgICByZXR1cm4gJGNvbmZpZ1sndXBsb2Fkc191cmwnXQ0KICAgICAgICAgICAgIC4gJy8nDQogICAgICAgICAgICAgLiAkc291cmNlX3VybA0KICAgICAgICAgICAgIC4gJy8nDQogICAgICAgICAgICAgLiAkYWxpYXMgDQogICAgICAgICAgICAgLiAnX3NyY18nDQogICAgICAgICAgICAgLiAkaW1hZ2VfbnVtYmVyDQogICAgICAgICAgICAgLiAnLmpwZyc7DQogICAgfQ0KICB9DQoNCiAgc3RhdGljIGZ1bmN0aW9uIHNyY0V4aXN0cygkYWxpYXMsICRpbWFnZV9udW1iZXIpDQogIHsNCiAgICBzZWxmOjpfaW5pdGlhbGl6ZSgpOw0KICAgICRtb2QgPSBzZWxmOjokX21vZDsNCiAgICAkY29uZmlnID0gc2VsZjo6JF9jb25maWc7DQogICAgDQogICAgJHNyY1NwZWMgPSBjbXNfam9pbl9wYXRoKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmOjpnZXRBc3NldFBhdGgoJ3MnKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhbGlhcyAuICdfc3JjXycgLiAkaW1hZ2VfbnVtYmVyIC4gJy5qcGcnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICANCiAgICAkdGVzdCA9IGZpbGVfZXhpc3RzKCRzcmNTcGVjKTsNCiAgICByZXR1cm4gJHRlc3Q7DQogIH0NCg0KDQogIHN0YXRpYyBmdW5jdGlvbiBnZXRGaWxlcygkYWxpYXMpDQogIHsNCiAgICBzZWxmOjpfaW5pdGlhbGl6ZSgpOw0KICAgICRtb2QgPSBzZWxmOjokX21vZDsNCiAgICAkY29uZmlnID0gc2VsZjo6JF9jb25maWc7DQogICAgDQogICAgJGRpcnNwZWMgPSBjbXNfam9pbl9wYXRoKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmOjpnZXRBc3NldFBhdGgoJ2YnKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhbGlhcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICANCiAgICAkZmlsZXMgPSBhcnJheSgpOw0KICAgICR0eXBlcyA9IGFycmF5KCk7DQogICAgDQogICAgaWYgKGlzX2RpcigkZGlyc3BlYykpDQogICAgeyAgDQogICAgICAkZGggID0gb3BlbmRpcigkZGlyc3BlYyk7DQogICAgICANCiAgICAgIHdoaWxlICggZmFsc2UgIT09ICggJGZpbGVuYW1lID0gcmVhZGRpcigkZGgpICkgKQ0KICAgICAgew0KICAgICAgICANCiAgICAgICAgaWYgKCRmaWxlbmFtZSAhPSAnLicgJiYgJGZpbGVuYW1lICE9ICcuLicpDQogICAgICAgIHsNCiAgICAgICAgICAkZmlsZXNbXSA9ICRmaWxlbmFtZTsNCiAgICAgICAgICANCiAgICAgICAgICBpZiAoc3RycG9zKCRmaWxlbmFtZSwgJy4nKSAhPT0gZmFsc2UpDQogICAgICAgICAgew0KICAgICAgICAgICAgJHR5cGVzW10gPSBzdWJzdHIoJGZpbGVuYW1lLCBzdHJycG9zKCRmaWxlbmFtZSwgJy4nKSArIDEpOw0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlDQogICAgICAgICAgew0KICAgICAgICAgICAgJHR5cGVzW10gPSAnPyc7DQogICAgICAgICAgfQ0KICAgICAgICAgIA0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgfQ0KICAgIH0NCiAgICANCiAgICByZXR1cm4gYXJyYXkoJGZpbGVzLCAkdHlwZXMpOw0KICB9DQoNCiAgc3RhdGljIGZ1bmN0aW9uIHB1cmdlQWxsSW1hZ2UoJGFsaWFzLCAkaW1hZ2VOdW1iZXIpDQogIHsgICANCiAgICBzZWxmOjpwdXJnZVNjYWxlZEltYWdlcygkYWxpYXMsICRpbWFnZU51bWJlcik7DQogICAgc2VsZjo6cHVyZ2VTb3VyY2VJbWFnZSgkYWxpYXMsICRpbWFnZU51bWJlcik7ICAgICAgICANCiAgfQ0KICANCiAgc3RhdGljIGZ1bmN0aW9uIHB1cmdlU2NhbGVkSW1hZ2VzKCRhbGlhcywgJGltYWdlTnVtYmVyKQ0KICB7DQogICAgc2VsZjo6X2luaXRpYWxpemUoKTsNCiAgICAkbW9kID0gc2VsZjo6JF9tb2Q7DQogICAgJGNvbmZpZyA9IHNlbGY6OiRfY29uZmlnOw0KICAgICRhc3NldHNfcGF0aCA9IHNlbGY6OmdldEFzc2V0UGF0aCgnaScpOw0KICAgIA0KICAgICRzcmNEaXIgPSBjbXNfam9pbl9wYXRoKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYXNzZXRzX3BhdGgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgIA0KICAgICR0b0RlbCA9IGFycmF5KCk7DQogICAgDQogICAgaWYgKCRkaCA9IG9wZW5kaXIoJHNyY0RpcikpDQogICAgew0KICAgIA0KICAgICAgd2hpbGUgKCgkZmlsZSA9IHJlYWRkaXIoJGRoKSkgIT09IGZhbHNlKQ0KICAgICAgew0KICAgICAgICAkZmlsZVBhcnRzID0gZXhwbG9kZSgnXycsICRmaWxlKTsNCiAgICAgICAgDQogICAgICAgIGlmICgkZmlsZVBhcnRzWzBdID09ICRhbGlhcyAmJiAkZmlsZVBhcnRzWzJdID09ICRpbWFnZU51bWJlcikNCiAgICAgICAgew0KICAgICAgICAgIGFycmF5X3B1c2goJHRvRGVsLCAkc3JjRGlyIC4gJy8nIC4gJGZpbGUpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgfQ0KICAgICAgDQogICAgICBjbG9zZWRpcigkZGgpOw0KICAgIH0NCiAgICAgICAgDQogICAgZm9yZWFjaCAoJHRvRGVsIGFzICR0aGlzRGVsKQ0KICAgIHsNCiAgICAgIHVubGluaygkdGhpc0RlbCk7DQogICAgfQ0KICB9DQoNCiAgc3RhdGljIGZ1bmN0aW9uIHB1cmdlU291cmNlSW1hZ2UoJGFsaWFzLCAkaW1hZ2VOdW1iZXIpDQogIHsNCiAgICBzZWxmOjpfaW5pdGlhbGl6ZSgpOw0KICAgICRtb2QgPSBzZWxmOjokX21vZDsNCiAgICAkY29uZmlnID0gc2VsZjo6JF9jb25maWc7DQogICAgDQogICAgJGZuID0gJGFsaWFzIA0KICAgICAgICAgLiAnX3NyY18nDQogICAgICAgICAuICRpbWFnZU51bWJlcg0KICAgICAgICAgLiAnLmpwZyc7DQogICAgICAgIA0KICAgICRzcmNTcGVjID0gIGNtc19qb2luX3BhdGgoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb25maWdbJ3VwbG9hZHNfcGF0aCddLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmOjpnZXRBc3NldFBhdGgoJ3MnKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZuIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIHVubGluaygkc3JjU3BlYyk7DQogICAgDQogIH0NCg0KDQogIHN0YXRpYyBmdW5jdGlvbiByZW5hbWVJbWFnZXMoJG9sZCwgJG5ld0FsaWFzKQ0KICB7DQogICAgc2VsZjo6X2luaXRpYWxpemUoKTsNCiAgICAkbW9kID0gc2VsZjo6JF9tb2Q7DQogICAgJGNvbmZpZyA9IHNlbGY6OiRfY29uZmlnOw0KICAgIA0KICAgICRwYXRoID0gY21zX2pvaW5fcGF0aCgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29uZmlnWyd1cGxvYWRzX3BhdGgnXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmOjpnZXRBc3NldFBhdGgoJ2knKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgIA0KICAgIA0KICAgIGlmICgkaGFuZGxlID0gb3BlbmRpcigkcGF0aCkgKQ0KICAgIHsNCiAgICAgIA0KICAgICAgd2hpbGUgKCBmYWxzZSAhPT0gKCAkZmlsZSA9IHJlYWRkaXIoJGhhbmRsZSApKSApDQogICAgICB7DQogICAgICAgIGlmICggc3Vic3RyKCRmaWxlLCAwLCBzdHJsZW4oJG9sZCkgKSA9PSAkb2xkKQ0KICAgICAgICB7DQogICAgICAgICAgJG5ld3NwZWMgPSAkbmV3QWxpYXMgLiBzdWJzdHIoICRmaWxlLCBzdHJsZW4oJG9sZCkgKTsNCiAgICAgICAgICANCiAgICAgICAgICAkb2xkX2ZpbGUgPSBjbXNfam9pbl9wYXRoKCRwYXRoLCAkZmlsZSk7DQogICAgICAgICAgJG5ld19maWxlID0gY21zX2pvaW5fcGF0aCgkcGF0aCwgJG5ld3NwZWMpOw0KICAgICAgICAgIA0KICAgICAgICAgIHJlbmFtZSgkb2xkX2ZpbGUsICRuZXdfZmlsZSk7DQogICAgICAgIH0NCiAgICAgIH0NCiAgICAgIA0KICAgICAgY2xvc2VkaXIoJGhhbmRsZSk7DQogICAgfQ0KICB9DQogIA0KICAjIyMjIyMgZ2VuZXJpYy4uLi4uDQogIA0KICAvKioNCiAgKiBEZWxldGUgYSBmaWxlIG9yIHJlY3Vyc2l2ZWx5IGRlbGV0ZSBhIGRpcmVjdG9yeQ0KICAqDQogICogQHBhcmFtIHN0cmluZyAkc3RyIFBhdGggdG8gZmlsZSBvciBkaXJlY3RvcnkNCiAgKi8NCiAgc3RhdGljIGZ1bmN0aW9uIHJlY3Vyc2l2ZURlbGV0ZSgkc3RyKQ0KICB7DQogICAgJFJlc3VsdCA9IGlzX2ZpbGUoJHN0cik7DQogICAgDQogICAgaWYoJFJlc3VsdCkNCiAgICB7DQogICAgICAkUmVzdWx0ID0gQHVubGluaygkc3RyKTsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICRSZXN1bHQgPSBpc19kaXIoJHN0cik7DQogICAgICANCiAgICAgIGlmKCRSZXN1bHQpDQogICAgICB7DQogICAgICAgICRzY2FuID0gZ2xvYiggcnRyaW0oJHN0ciwgJy8nKSAuICcvKicgKTsNCiAgICAgICAgDQogICAgICAgIGZvcmVhY2goJHNjYW4gYXMgJGluZGV4PT4kcGF0aCkNCiAgICAgICAgew0KICAgICAgICAgICRSZXN1bHQgPSAkUmVzdWx0ICYmIHJlY3Vyc2l2ZURlbGV0ZSgkcGF0aCk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgICRSZXN1bHQgPSAkUmVzdWx0ICYmIEBybWRpcigkc3RyKTsgICAgIA0KICAgICAgfQ0KICAgIH0NCiAgICANCiAgICByZXR1cm4gJFJlc3VsdDsNCiAgfQ0KICANCiAgLyoqDQogICogQG1ldGhvZCBEZWxldGVGaWxlDQogICogSnVzdCBhIGNvbnZpbmllbmNlIGZ1bmN0aW9uIHRvIHNpbGVudGx5IGRlbGV0ZSBmaWxlcw0KICAqIE1heSBmYWlsIG9uIHNvbWUgZW52aXJvbWVudHMNCiAgKiANCiAgKiBAcGFyYW0gbWl4ZWQgJGZpbGVuYW1lDQogICogQHJldHVybnMgVHJ1ZSBpZiBzdWNjZXNzLCBvdGhlcndpc2UgZmFsc2UNCiAgKi8NCiAgc3RhdGljIGZ1bmN0aW9uIERlbGV0ZUZpbGUoJGZpbGVuYW1lKQ0KICB7DQogICAgJHJlc3VsdCA9IGZpbGVfZXhpc3RzKCRmaWxlbmFtZSk7DQogICAgaWYgKCRyZXN1bHQpICRyZXN1bHQgPSBAdW5saW5rKCRmaWxlbmFtZSk7DQogICAgcmV0dXJuICRyZXN1bHQ7DQogIH0NCiAgDQogIHN0YXRpYyBmdW5jdGlvbiBEZWxldGVGaWxlV01hc2soJG1hc2spDQogIHsNCiAgICBhcnJheV93YWxrKGdsb2IoJG1hc2spLCAndW5saW5rJyk7DQogIH0NCiAgDQogIHN0YXRpYyBmdW5jdGlvbiBpbWFnZVRyYW5zZm9ybSgkc3JjU3BlYywgJGRlc3RTcGVjLCAkc2l6ZSwgJiRjb25maWcsICRhc3BlY3RfcmF0aW89JycpDQogIHsNCiAgICAkbW9kID0gY21zbXMoKS0+R2V0TW9kdWxlSW5zdGFuY2UoJ0NhdGFsb2dlcicpOw0KICAgICRmbiA9IGNtc19qb2luX3BhdGgoDQogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGY6OiRfbW9kLT5HZXRNb2R1bGVQYXRoKCksDQogICAgICAgICAgICAgICAgICAgICAgICAgICdsaWInLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAnZXh0ZXJuYWwnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAnSW1hZ2UnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAnVHJhbnNmb3JtLnBocCcNCiAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgDQogICAgcmVxdWlyZV9vbmNlKCRmbik7DQoNCiAgICAkaXQgPSBuZXcgSW1hZ2VfVHJhbnNmb3JtOw0KICAgICRpbWcgPSAkaXQtPmZhY3RvcnkoJ0dEJyk7DQogICAgJGltZy0+bG9hZCgkc3JjU3BlYyk7DQogICAgDQogICAgaWYgKCRpbWctPmltZ194IDwgJGltZy0+aW1nX3kpDQogICAgew0KICAgICAgJGxvbmdfYXhpcyA9ICRpbWctPmltZ195Ow0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAgJGxvbmdfYXhpcyA9ICRpbWctPmltZ194Ow0KICAgIH0NCg0KICAgIGlmICgkbG9uZ19heGlzID4gJHNpemUpDQogICAgew0KICAgICAgJGltZy0+c2NhbGVCeUxlbmd0aCgkc2l6ZSk7DQogICAgICAkaW1nLT5zYXZlKCRkZXN0U3BlYywgJ2pwZWcnKTsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICRpbWctPnNhdmUoJGRlc3RTcGVjLCAnanBlZycpOw0KICAgIH0NCiAgICANCiAgICAkaW1nLT5mcmVlKCk7DQogIH0gDQogIA0KICBzdGF0aWMgZnVuY3Rpb24gcmV0dXJuTWlzc2luZygkcm9vdCA9ICcnLCAkc2hvd01pc3NpbmcgPSBGQUxTRSwgJG1vZGUgPSBzZWxmOjpSRVRfTUlTU0lOR19VUkwsICRkZWJ1ZyA9IEZBTFNFKQ0KICB7DQogICAgDQogICAgc3dpdGNoICgkbW9kZSkgDQogICAgew0KICAgICAgIGNhc2Ugc2VsZjo6UkVUX01JU1NJTkdfVVJMOg0KICAgICAgICAgIA0KICAgICAgICAgICAgaWYoIGVtcHR5KCRyb290KSApICRyb290ID0gc2VsZjo6JF9jb25maWdbJ3Jvb3RfdXJsJ107DQogICAgICAgICAgICANCiAgICAgICAgICAgICRtaXNzaW5nX3VybCA9IGNhdF91dGlsczo6am9pbl91cmwoJ21vZHVsZXMnLCAnQ2F0YWxvZ2VyJywgJ2ltYWdlcycpOw0KICAgICAgICAgICAgDQogICAgICAgICAgICBpZigkZGVidWcpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgIGVycm9yX2xvZygiQ2F0YWxvZ2VySW1hZ2U6IG5vIGltYWdlIGF0ICRyb290Iik7DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIC8vIGlmIHNvIGRlc2lyZWQsIGRvbid0IDQwNCwgYnV0IHNlbmQgYW4gaW1hZ2UNCiAgICAgICAgICAgIGlmKCEkc2hvd01pc3NpbmcpIA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICByZXR1cm4gY2F0X3V0aWxzOjpqb2luX3VybCgkbWlzc2luZ191cmwsICd0cmFucy5naWYnKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgcmV0dXJuIGNhdF91dGlsczo6am9pbl91cmwoJG1pc3NpbmdfdXJsLCAnbm8taW1hZ2UuZ2lmJyk7IA0KICAgICAgICAgICAgfQ0KICAgICAgICAgYnJlYWs7DQogICAgICAgICANCiAgICAgICBjYXNlIHNlbGY6OlJFVF9NSVNTSU5HX1BBVEg6DQogICAgICAgICAgDQogICAgICAgICAgICBpZiggZW1wdHkoJHJvb3RQYXRoKSApICRyb290UGF0aCA9IHNlbGY6OiRfY29uZmlnWydyb290X3BhdGgnXTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgJGRuID0gY21zX2pvaW5fcGF0aCgnbW9kdWxlcycsICdDYXRhbG9nZXInLCAnaW1hZ2VzJyk7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmKCRkZWJ1ZykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgZXJyb3JfbG9nKCJDYXRhbG9nZXJJbWFnZTogbm8gaW1hZ2UgYXQgJHJvb3RVcmwiKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgLy8gaWYgc28gZGVzaXJlZCwgZG9uJ3QgNDA0LCBidXQgc2VuZCBhbiBpbWFnZQ0KICAgICAgICAgICAgaWYoISRzaG93TWlzc2luZykgDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgIHJldHVybiBjbXNfam9pbl9wYXRoKCRkbiwgJ3RyYW5zLmdpZicpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICByZXR1cm4gY21zX2pvaW5fcGF0aCgkZG4sICduby1pbWFnZS5naWYnKTsgDQogICAgICAgICAgICB9DQogICAgICAgICAgDQogICAgICAgICBicmVhazsNCiAgICB9DQogICAgDQogICAgIA0KICB9DQogICAgICANCiAgc3RhdGljIGZ1bmN0aW9uIFNlbmRGaWxlKCRmbiA9ICcnKQ0KICB7ICAgIA0KICAgIGhlYWRlcigiUHJhZ21hOiBwdWJsaWMiKTsNCiAgICBoZWFkZXIoIkV4cGlyZXM6IE1vbiwgMjYgSnVsIDE5OTcgMDU6MDA6MDAgR01UIik7DQogICAgaGVhZGVyKCJDYWNoZS1Db250cm9sOiBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hlY2s9MCwgcHJlLWNoZWNrPTAiKTsNCiAgICBoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IHB1YmxpYyIsIEZBTFNFKTsNCiAgICBoZWFkZXIoIkNvbnRlbnQtRGVzY3JpcHRpb246IEZpbGUgVHJhbnNmZXIiKTsNCiAgICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogJyAuIG1pbWVfY29udGVudF90eXBlKCRmbikgKTsNCiAgICBoZWFkZXIoIkFjY2VwdC1SYW5nZXM6IGJ5dGVzIik7DQogICAgaGVhZGVyKCJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiaW5hcnkiKTsNCiAgICBoZWFkZXIoIkNvbnRlbnQtTGVuZ3RoOiAiIC4gZmlsZXNpemUoJGZuKSk7ICAgDQogICAgJGhhbmRsZSA9IGZvcGVuKCRmbiwgJ3JiJyk7ICANCiAgICBmcGFzc3RocnUoJGhhbmRsZSk7DQogICAgZXhpdDsNCiAgfQ0KICANCiAgc3RhdGljIGZ1bmN0aW9uIFJlZGlyZWN0KCRkZXN0ID0gJycsICRwYXJhbXMgPSBhcnJheSgpLCAkYWMgPSBGQUxTRSkNCiAgew0KICAgIGhlYWRlcigiRXhwaXJlczogTW9uLCAyNiBKdWwgMTk5NyAwNTowMDowMCBHTVQiKTsNCiAgICBoZWFkZXIoIkxhc3QtTW9kaWZpZWQ6ICIgLiBnbWRhdGUoIkQsIGQgTSBZIEg6aTpzIikgLiAiIEdNVCIpOw0KICAgIGhlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUsIGNhY2hlaGFjaz0iLnRpbWUoKSk7DQogICAgaGVhZGVyKCJDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbXVzdC1yZXZhbGlkYXRlIik7DQogICAgaGVhZGVyKCJDYWNoZS1Db250cm9sOiBwb3N0LWNoZWNrPS0xLCBwcmUtY2hlY2s9LTEiLCBGQUxTRSk7DQogICAgICAgIA0KICAgIGlmKCRhYykNCiAgICB7DQogICAgICAkdCA9ICcnOw0KICAgICAgDQogICAgICBmb3IgKCRpPTA7ICRpIDwgNTsgJGkrKykNCiAgICAgIHsNCiAgICAgICAgJHQgLj0gcmFuZCgwLDkpOw0KICAgICAgfQ0KICAgICAgDQogICAgICAkcGFyYW1zWydhYyddID0gJHQ7DQogICAgfQ0KICAgICANCiAgICANCiAgICBpZigkcGFyYW1zKQ0KICAgIHsNCiAgICAgICR0bXAgPSBhcnJheSgpOw0KICAgICAgZm9yZWFjaCgkcGFyYW1zIGFzICRrID0+ICR2KQ0KICAgICAgew0KICAgICAgICAkdG1wW10gPSAkayAuICc9JyAuICR2Ow0KICAgICAgfQ0KICAgICAgJGRlc3QgLj0gJz8nIC4gaW1wbG9kZSgnJmFtcDsnLCAkdG1wKTsNCiAgICB9DQogICAgICAgIA0KICAgIGhlYWRlcignTG9jYXRpb246ICcgLiAkZGVzdCk7DQogICAgZXhpdDsNCiAgfQ0KfQ0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.catTemplateOperations.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogQ2F0YWxvZ2VyIC0gYnVpbGQgYSBjYXRhbG9nIG9yIHBvcnRmb2xpbyBvZiBzdHVmZg0KIyBWZXJzaW9uOiAwLjEyDQojDQojIENvcHlyaWdodCAoYykgMjAxMiwgRmVybmFuZG8gTW9yZ2FkbyAoSm9Nb3JnKSBqb21vcmcubW9yZ0BnbWFpbC5jb20NCiMgQ29weXJpZ2h0IChjKSAyMDA2LCBTYW11ZWwgR29sZHN0ZWluIDxzamdAY21zbW9kdWxlcy5jb20+DQojIEZvciBJbmZvcm1hdGlvbiwgU3VwcG9ydCwgQnVnIFJlcG9ydHMsIGV0YywgcGxlYXNlIHZpc2l0IHRoZQ0KIyBDTVMgTWFkZSBTaW1wbGUgRm9yZ2UgYXQgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA2IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBDQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovKioNCiogY2xhc3MgY2F0VGVtcGxhdGVfT3BlcmF0aW9ucw0KKiBAYXV0aG9yIEpvIE1vcmcgKEZlcm5hbmRvIE1vcmdhZG8pDQoqIEBjb3B5cmlnaHQgwqkyMDEzIEpvIE1vcmcNCiovDQpjbGFzcyBjYXRUZW1wbGF0ZU9wZXJhdGlvbnMNCnsNCiAgcHJvdGVjdGVkIHN0YXRpYyAkX2RiOw0KICANCiAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gX2dldERCKCkNCiAgew0KICAgIA0KICAgIGlmICggIWlzX29iamVjdChzZWxmOjokX2RiKSApDQogICAgew0KICAgICAgc2VsZjo6JF9kYiA9IGNtc21zKCktPkdldERiKCk7DQogICAgfQ0KICAgIA0KICAgIHJldHVybiBzZWxmOjokX2RiOw0KICAgIA0KICB9DQogIA0KICAvKioNCiAgKiBSZW1vdmUgYWxsIG5vbi13b3JkIGNoYXJhY3RlcnMNCiAgKiANCiAgKiBAcGFyYW0gbWl4ZWQgJHRleHQNCiAgKi8NCiAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gX3NhZmVBdHQoJHRleHQpDQogIHsNCiAgICByZXR1cm4gc3RydG9sb3dlcihwcmVnX3JlcGxhY2UoJy9cVy8nLCAnJywgJHRleHQpKTsgDQogIH0NCiAgDQogIC8qKg0KICAqIHJldHVybnMgYW4gYXJyYXkgd2l0aCB0aGUgY3VycmVudCBUZW1wbGF0ZSB0eXBlcw0KICAqIEBhdXRob3IgSm9Nb3JnIChGZXJuYW5kbyBNb3JnYWRvKQ0KICAqIEBzaW5jZSAwLjEyDQogICogQHN0YXRpYw0KICAqIEByZXR1cm5zIGEgcmVmIHRvIGFuIGFycmF5DQogICovDQogIHN0YXRpYyBmdW5jdGlvbiAmR2V0Q2F0YWxvZ2VyVGVtcGxhdGVUeXBlcygpDQogIHsNCiAgICAkZGIgPSBzZWxmOjpfZ2V0REIoKTsNCiAgICAkdHlwZXMgPSBhcnJheSgpOw0KDQogICAgJHF1ZXJ5ID0gJ1NFTEVDVCB0eXBlX2lkLCBuYW1lIEZST00gJyANCiAgICAgICAgICAgICAuIGNtc19kYl9wcmVmaXgoKQ0KICAgICAgICAgICAgIC4gJ21vZHVsZV9jYXRhbG9nX3RlbXBsYXRlX3R5cGUnOw0KICAgICAgICAgICAgIA0KICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KICAgIA0KICAgIHdoaWxlICgkZGJyZXN1bHQgIT09IGZhbHNlICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpDQogICAgew0KICAgICAgJHR5cGVzWyRyb3dbJ25hbWUnXV0gPSAkcm93Wyd0eXBlX2lkJ107DQogICAgfQ0KICAgIA0KICAgIHJldHVybiAkdHlwZXM7DQogIH0NCiAgDQogIC8qKg0KICAqIFNhdmVUZW1wbGF0ZS4uLg0KICAqIA0KICAqIEBwYXJhbSBtaXhlZCAkdHlwZV9pZA0KICAqIEBwYXJhbSBtaXhlZCAkdGVtcF9uYW1lDQogICogQHBhcmFtIG1peGVkICR0ZW1wbGF0ZQ0KICAqLw0KICBzdGF0aWMgZnVuY3Rpb24gU2F2ZVRlbXBsYXRlKCR0eXBlX2lkLCAkdGVtcF9uYW1lLCAkdGVtcGxhdGUpDQogIHsNCiAgICAkZGIgPSBzZWxmOjpfZ2V0REIoKTsNCiAgICANCiAgICAkdGVtcF9pZCA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9jYXRhbG9nX3RlbXBsYXRlX3NlcScpOw0KDQogICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcNCiAgICAgICAgICAgLiBjbXNfZGJfcHJlZml4KCkNCiAgICAgICAgICAgLiAnbW9kdWxlX2NhdGFsb2dfdGVtcGxhdGUgKGlkLCB0eXBlX2lkLCB0aXRsZSwgdGVtcGxhdGUpICcNCiAgICAgICAgICAgLiAnIFZBTFVFUyAoPyw/LD8sPyknOw0KICAgICAgICAgICANCiAgICAkYXJyID0gYXJyYXkoJHRlbXBfaWQsICR0eXBlX2lkLCAkdGVtcF9uYW1lLCAkdGVtcGxhdGUpOw0KICAgIA0KICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksICRhcnIpOw0KICAgIA0KICAgIHJldHVybiAkZGJyZXN1bHQ7DQogIH0NCiAgIA0KICAvKioNCiAgKiBTYXZlVGVtcGxhdGVDaGFuZ2VzDQogICogDQogICogQHBhcmFtIG1peGVkICRwYXJhbXMNCiAgKiBAcmV0dXJuIEJvb2xlYW4gPSBUUlVFIGlmIHN1Y2Nlc3MNCiAgKiBAc2luY2UgMC4xMg0KICAqLw0KICBzdGF0aWMgZnVuY3Rpb24gU2F2ZVRlbXBsYXRlQ2hhbmdlcygkcGFyYW1zKQ0KICB7DQogICAgJGVyciA9IEZBTFNFOw0KICAgIA0KICAgIGlmICghaXNfYXJyYXkoJHBhcmFtcykpDQogICAgew0KICAgICAgJGVyckRlc2NycCA9ICdTYXZpbmcgVGVtcGxhdGUgKGVycm9yOiAkcGFyYW1zIG5vdCBhbiBhcnJheSknOw0KICAgICAgYXVkaXQoJHBhcmFtc1sndGVtcGxhdGVfaWQnXSwgX19NRVRIT0RfXywgJGVyckRlc2NycCk7DQogICAgICAkZXJyID0gVFJVRTsNCiAgICAgIHJldHVybiAkZXJyOw0KICAgIH0NCiAgICANCiAgICAkZGIgPSBzZWxmOjpfZ2V0REIoKTsNCiAgICANCiAgICAkcXVlcnkgPSAnVVBEQVRFICcNCiAgICAgICAgICAgICAuIGNtc19kYl9wcmVmaXgoKQ0KICAgICAgICAgICAgIC4gJ21vZHVsZV9jYXRhbG9nX3RlbXBsYXRlIHNldCB0aXRsZT0/LCB0ZW1wbGF0ZT0/LCB0eXBlX2lkPT8gV0hFUkUgaWQ9Pyc7DQogICAgDQogICAgJHFBcnIgPSBhcnJheSgkcGFyYW1zWyd0aXRsZSddLA0KICAgICAgICAgICAgICAgICAgJHBhcmFtc1sndGVtcGwnXSwNCiAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ3R5cGVfaWQnXSwgDQogICAgICAgICAgICAgICAgICAkcGFyYW1zWyd0ZW1wbGF0ZV9pZCddKTsNCiAgICAgICAgICAgICANCiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkcUFycik7DQogICAgDQogICAgaWYgKCEkZGJyZXN1bHQpDQogICAgew0KICAgICAgJGVyckRlc2NycCA9ICdTYXZpbmcgVGVtcGxhdGUgKGVycm9yOiBObyByZXN1bHRzIGZyb20gcXVlcnkpJzsNCiAgICAgIGF1ZGl0KCRwYXJhbXNbJ3RlbXBsYXRlX2lkJ10sIF9fTUVUSE9EX18sICRlcnJEZXNjcnApOw0KICAgICAgJGVyciA9IFRSVUU7DQogICAgfQ0KICAgIA0KICAgIHJldHVybiAkZXJyOw0KICB9DQogIA0KICBzdGF0aWMgZnVuY3Rpb24gR2V0VGVtcGxhdGVGcm9tSUQoJGlkKQ0KICB7DQogICAgJGRiID0gc2VsZjo6X2dldERCKCk7DQogICAgDQogICAgJHF1ZXJ5ID0gJ1NFTEVDVCB0aXRsZSwgdGVtcGxhdGUsIHR5cGVfaWQsIGlkIEZST00gJyANCiAgICAgICAgICAgICAuIGNtc19kYl9wcmVmaXgoKQ0KICAgICAgICAgICAgIC4gJ21vZHVsZV9jYXRhbG9nX3RlbXBsYXRlIFdIRVJFIGlkPT8gT1JERVIgYnkgdGl0bGUnOw0KICANCiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaWQpKTsNCiAgICByZXR1cm4gJGRicmVzdWx0LT5GZXRjaFJvdygpOw0KICB9DQogIA0KICBzdGF0aWMgZnVuY3Rpb24gJkdldFRlbXBsYXRlTGlzdEZyb21JRCgkaWQpDQogIHsNCiAgICAkZGIgPSBzZWxmOjpfZ2V0REIoKTsNCiAgICANCiAgICAkcXVlcnkgPSAnU0VMRUNUIHRpdGxlLCB0ZW1wbGF0ZSwgdHlwZV9pZCwgaWQgRlJPTSAnIA0KICAgICAgICAgICAgIC4gY21zX2RiX3ByZWZpeCgpDQogICAgICAgICAgICAgLiAnbW9kdWxlX2NhdGFsb2dfdGVtcGxhdGUgV0hFUkUgdHlwZV9pZD0/IE9SREVSIGJ5IHRpdGxlJzsNCiAgDQogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGlkKSk7DQogICAgDQogICAgd2hpbGUgKCRkYnJlc3VsdCAhPT0gZmFsc2UgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkNCiAgICB7DQogICAgICAkc3ViVGVtcGxhdGVzWyRyb3dbJ3RpdGxlJ11dID0gJHJvd1snaWQnXTsNCiAgICB9DQogICAgDQogICAgcmV0dXJuICRzdWJUZW1wbGF0ZXM7DQogIH0NCiAgDQogIHN0YXRpYyBmdW5jdGlvbiAmR2V0QXR0c0Zyb21UeXBlKCRpZCkNCiAgew0KICAgICRkYiA9IHNlbGY6Ol9nZXREQigpOw0KICAgIA0KICAgICRxdWVyeSA9ICJTRUxFQ1QgYXR0cmlidXRlLCBhbGlhcywgdHlwZV9pZCBGUk9NICINCiAgICAgICAgICAgICAuIGNtc19kYl9wcmVmaXgoKQ0KICAgICAgICAgICAgIC4gIm1vZHVsZV9jYXRhbG9nX2F0dHIgV0hFUkUgdHlwZV9pZD0/IjsNCiAgICAgICAgIA0KICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpZCkpOw0KDQogICAgcmV0dXJuICRkYnJlc3VsdDsNCiAgICAgIA0KICB9DQogIA0KICANCiAgc3RhdGljIGZ1bmN0aW9uIGdldFRlbXBsYXRlRnJvbUFsaWFzKCRhbGlhcykNCiAgew0KICAgICRkYiA9IHNlbGY6Ol9nZXREQigpOw0KICAgICRxdWVyeSA9ICdTRUxFQ1QgaWQgZnJvbSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9jYXRhbG9nX3RlbXBsYXRlIHdoZXJlIHRpdGxlPT8nOw0KICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRhbGlhcykgKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICBpZiAoJGRicmVzdWx0ICE9PSBmYWxzZSAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQ0KICAgIHsNCiAgICAgIHJldHVybiAnY2F0YWxvZ18nIC4gJHJvd1snaWQnXTsNCiAgICB9DQogICAgDQogICAgICByZXR1cm4gJyc7ICANCiAgfQ0KICANCiAgDQogIHN0YXRpYyBmdW5jdGlvbiAmR2V0VXNlckF0dExpc3QoJGlkKQ0KICB7DQogICAgIyBmb3IgdGhlIG1vbWVudCBsZWF2ZSBhdCBhcyBpcyBidXQgbW9yZSBjaGFuZ2VzIGFyZSBuZWVkZWQuLi4uIChKTSkNCiAgICAkZGJyZXN1bHQgPSBzZWxmOjpHZXRBdHRzRnJvbVR5cGUoJGlkKTsNCiAgICANCiAgICAkYXR0cnMgPSBhcnJheSgpOw0KDQogICAgd2hpbGUgKCRkYnJlc3VsdCAhPT0gZmFsc2UgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkNCiAgICB7DQogICAgICAkc2FmZWF0dHIgPSBzZWxmOjpfc2FmZUF0dCgkcm93WydhdHRyaWJ1dGUnXSk7DQogICAgICANCiAgICAgICRhdHRyID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICAgJ25hbWUnICA9PiAneyQnIC4gJHNhZmVhdHRyIC4gJ30nLA0KICAgICAgICAgICAgICAgICAgICAgICdhbGlhcycgPT4gJ3skJyAuICRyb3dbJ2FsaWFzJ10gLiAnfScNCiAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgIA0KICAgICAgYXJyYXlfcHVzaCgkYXR0cnMsICRhdHRyKTsNCiAgICB9DQogICAgDQogICAgcmV0dXJuICRhdHRyczsNCiAgfQ0KICANCiAgDQogIHN0YXRpYyBmdW5jdGlvbiBHZXRBdHRMaXN0RnJvbVR5cGUoJFRlbXBsYXRlVHlwZSkNCiAgew0KICAgICRhID0gYXJyYXkoKTsNCiAgICANCiAgICBzd2l0Y2ggKCRUZW1wbGF0ZVR5cGUpDQogICAgew0KICAgICAgY2FzZSBDVEVNUExBVEVfSVRFTToNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRhLCAneyR0aXRsZX0nKTsNCiAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRhLCAneyRub3Rlc30nKTsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICANCiAgICAgIGNhc2UgQ1RFTVBMQVRFX0NBVEVHT1JZOg0KICAgICAgDQogICAgICAgICAgICAgICAgYXJyYXlfcHVzaCgkYSwgJ3skdGl0bGV9Jyk7DQogICAgICAgICAgICAgICAgYXJyYXlfcHVzaCgkYSwgJ3skbm90ZXN9Jyk7DQogICAgICAgICAgICAgICAgYXJyYXlfcHVzaCgkYSwgJ3skcHJldn0nKTsNCiAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRhLCAneyRwcmV2dXJsfScpOw0KICAgICAgICAgICAgICAgIGFycmF5X3B1c2goJGEsICd7JG5hdnN0cn0nKTsNCiAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRhLCAneyRuZXh0fScpOw0KICAgICAgICAgICAgICAgIGFycmF5X3B1c2goJGEsICd7JG5leHR1cmx9Jyk7DQogICAgICAgICAgICAgICAgYXJyYXlfcHVzaCgkYSwgJ3skaXRlbXN9Jyk7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgDQogICAgICBjYXNlIENURU1QTEFURV9DQVRBTE9HOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRhLCAneyRpdGVtc30nKTsNCiAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRhLCAneyRhdHRybGlzdH0nKTsNCiAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRhLCAneyRyb290X3VybH0nKTsNCiAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRhLCAneyRpbWFnZV9yb290fScpOw0KICAgICAgICAgICAgICAgIGJyZWFrOyANCiAgICAgIA0KICAgICAgY2FzZSBDVEVNUExBVEVfQ09NUEFSSVNPTjoNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRhLCAneyRpdGVtc30nKTsNCiAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRhLCAneyRhdHRybGlzdH0nKTsNCiAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRhLCAneyRyb290X3VybH0nKTsNCiAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRhLCAneyRpbWFnZV9yb290fScpOw0KICAgICAgICAgICAgICAgIGJyZWFrOyAgDQogICAgICAgICAgICAgICAgDQogICAgICBjYXNlIENURU1QTEFURV9GRUFUVVJFOg0KDQogICAgICAgICAgICAgICAgYXJyYXlfcHVzaCgkYSwgJ3skaXRlbXN9Jyk7DQogICAgICAgICAgICAgICAgYXJyYXlfcHVzaCgkYSwgJ3skcm9vdF91cmx9Jyk7DQogICAgICAgICAgICAgICAgYXJyYXlfcHVzaCgkYSwgJ3skaW1hZ2Vfcm9vdH0nKTsNCiAgICAgICAgICAgICAgICBicmVhazsgDQogICAgICANCiAgICB9DQogICAgDQogICAgI3NlbGY6OkdldEF0dExpc3QoJGEsICRUZW1wbGF0ZVR5cGUpOw0KDQogICAgcmV0dXJuICRhOw0KICB9DQogIA0KICBzdGF0aWMgZnVuY3Rpb24gaW1wb3J0U2FtcGxlVGVtcGxhdGVzKCAkb25seXR5cGUgPSAnYWxsJyApDQogIHsNCiAgICAkZGIgPSBzZWxmOjpfZ2V0REIoKTsNCiAgICAkZGlyID0gb3BlbmRpciggZGlybmFtZShfX0ZJTEVfXykgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ2luY2x1ZGVzJyk7DQogICAgJHRlbXBzID0gYXJyYXkoKTsNCiAgICANCiAgICB3aGlsZSggJGZpbGVzcGVjID0gcmVhZGRpcigkZGlyKSApDQogICAgew0KICAgICAgaWYoISBwcmVnX21hdGNoKCcvXC50cGwkL2knLCAkZmlsZXNwZWMpKQ0KICAgICAgew0KICAgICAgICBjb250aW51ZTsNCiAgICAgIH0NCiAgICAgIA0KICAgICAgICBhcnJheV9wdXNoKCR0ZW1wcywgJGZpbGVzcGVjKTsNCiAgICB9DQogICAgICAgICAgICANCiAgICBzb3J0KCR0ZW1wcyk7DQoNCiAgICBmb3JlYWNoICgkdGVtcHMgYXMgJGZpbGVzcGVjKQ0KICAgIHsNCiAgICAgICRmaWxlID0gZmlsZSgNCiAgICAgICAgICAgICAgICAgICAgZGlybmFtZShfX0ZJTEVfXykNCiAgICAgICAgICAgICAgICAgICAgLiBESVJFQ1RPUllfU0VQQVJBVE9SIA0KICAgICAgICAgICAgICAgICAgICAuICdpbmNsdWRlcycNCiAgICAgICAgICAgICAgICAgICAgLiBESVJFQ1RPUllfU0VQQVJBVE9SDQogICAgICAgICAgICAgICAgICAgIC4gJGZpbGVzcGVjDQogICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICANCiAgICAgICR0ZW1wbGF0ZSA9IGltcGxvZGUoJycsICRmaWxlKTsNCiAgICAgIA0KICAgICAgJHRlbXBfbmFtZSA9IHByZWdfcmVwbGFjZSgnL1wudHBsJC9pJywgJycsICRmaWxlc3BlYyk7DQogICAgICANCiAgICAgICMNCiAgICAgIC8vIGNoZWNrIGlmIGl0IGFscmVhZHkgZXhpc3RzDQogICAgICAkZXhjaGVjayA9ICdTRUxFQ1QgaWQgZnJvbSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9jYXRhbG9nX3RlbXBsYXRlIHdoZXJlIHRpdGxlPT8nOw0KICAgICAgJGRiY291bnQgPSAkZGItPkV4ZWN1dGUoJGV4Y2hlY2sgLCBhcnJheSgkdGVtcF9uYW1lKSk7DQogICAgICAjDQogICAgICANCiAgICAgICMgcmVuYW1lPz8/DQogICAgICB3aGlsZSAoJGRiY291bnQgJiYgJGRiY291bnQtPlJlY29yZENvdW50KCkgPiAwKQ0KICAgICAgew0KICAgICAgICAkdGVtcF9uYW1lIC49ICdfbmV3JzsNCiAgICAgICAgJGRiY291bnQgPSAkZGItPkV4ZWN1dGUoICRleGNoZWNrLCBhcnJheSgkdGVtcF9uYW1lKSApOw0KICAgICAgfQ0KICAgICAgDQogICAgICAkdHlwZV9pZCA9IC0xOw0KICAgICAgJHR5cGUgPSBzdWJzdHIoICR0ZW1wX25hbWUsIDAsIHN0cnBvcygkdGVtcF9uYW1lLCAnLScpICk7DQogICAgICANCiAgICAgIGlmICggJHR5cGUgPT0gJ0l0ZW0nICYmICgkb25seXR5cGU9PSdhbGwnIHx8ICRvbmx5dHlwZT0nSXRlbScpICkNCiAgICAgIHsNCiAgICAgICAgJHR5cGVfaWQgPSBDVEVNUExBVEVfSVRFTTsNCiAgICAgIH0NCiAgICAgIGVsc2UgaWYgKCAkdHlwZSA9PSAnQ2F0ZWdvcnknICYmICgkb25seXR5cGU9PSdhbGwnIHx8ICRvbmx5dHlwZT0nQ2F0ZWdvcnknKSApDQogICAgICB7DQogICAgICAgICR0eXBlX2lkID0gQ1RFTVBMQVRFX0NBVEVHT1JZOw0KICAgICAgfQ0KICAgICAgZWxzZSBpZiAoICR0eXBlID09ICdQcmludGFibGUnICYmICgkb25seXR5cGU9PSdhbGwnIHx8ICRvbmx5dHlwZT0nUHJpbnRhYmxlJykgKQ0KICAgICAgew0KICAgICAgICAkdHlwZV9pZCA9IENURU1QTEFURV9DQVRBTE9HOw0KICAgICAgfQ0KICAgICAgZWxzZSBpZiAoICR0eXBlID09ICdDb21wYXJpc29uJyAmJiAoJG9ubHl0eXBlPT0nYWxsJyB8fCAkb25seXR5cGU9J0NvbXBhcmlzb24nKSApDQogICAgICB7DQogICAgICAgICR0eXBlX2lkID0gQ1RFTVBMQVRFX0NPTVBBUklTT047DQogICAgICB9DQogICAgICBlbHNlIGlmICggJHR5cGUgPT0gJ0ZlYXR1cmUnICYmICgkb25seXR5cGU9PSdhbGwnIHx8ICRvbmx5dHlwZT0nRmVhdHVyZScpICkNCiAgICAgIHsNCiAgICAgICAgJHR5cGVfaWQgPSBDVEVNUExBVEVfRkVBVFVSRTsNCiAgICAgIH0NCiAgICAgIA0KICAgICAgY2F0VGVtcGxhdGVfT3BlcmF0aW9uczo6U2F2ZVRlbXBsYXRlKCR0eXBlX2lkLCAkdGVtcF9uYW1lLCAkdGVtcGxhdGUpOw0KICAgICAgDQogICAgICAjIA0KICAgICAgLyogICANCiAgICAgICR0ZW1wX2lkID0gJGRiLT5HZW5JRChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX2NhdGFsb2dfdGVtcGxhdGVfc2VxJyk7DQoNCiAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnDQogICAgICAgICAgICAgLiBjbXNfZGJfcHJlZml4KCkNCiAgICAgICAgICAgICAuICdtb2R1bGVfY2F0YWxvZ190ZW1wbGF0ZSAoaWQsIHR5cGVfaWQsIHRpdGxlLCB0ZW1wbGF0ZSkgJw0KICAgICAgICAgICAgIC4gJyBWQUxVRVMgKD8sPyw/LD8pJzsNCiAgICAgICAgICAgICANCiAgICAgICRhcnIgPSBhcnJheSgkdGVtcF9pZCwkdHlwZV9pZCwgJHRlbXBfbmFtZSwkdGVtcGxhdGUpOw0KICAgICAgDQogICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkYXJyKTsNCiAgICAgICovDQogICAgICAjDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICR0aGlzLT5TZXRUZW1wbGF0ZSggJ2NhdGFsb2dfJyAuICR0ZW1wX2lkLCAkdGVtcGxhdGUpOw0KICAgIH0NCiAgDQogIH0NCiANCn0NCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.catUserDefAttributesOps.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmNsYXNzIGNhdFVzZXJEZWZBdHRyaWJ1dGVzT3BzDQp7DQogIHByaXZhdGUgc3RhdGljICRhdHRycyA9IGFycmF5KCk7DQogIHByaXZhdGUgc3RhdGljICRfZGI7DQogIA0KICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBfZ2V0REIoKQ0KICB7DQogICAgDQogICAgaWYgKCAhaXNfb2JqZWN0KHNlbGY6OiRfZGIpICkNCiAgICB7DQogICAgICBzZWxmOjokX2RiID0gY21zbXMoKS0+R2V0RGIoKTsNCiAgICB9DQogICAgDQogICAgcmV0dXJuIHNlbGY6OiRfZGI7DQogICAgDQogIH0NCiAgDQogIHN0YXRpYyBmdW5jdGlvbiAmZ2V0VXNlckF0dHJpYnV0ZXMoJGdsb2JhbF9yZWYgPSAnY2F0YWxvZ19hdHRycycpDQogIHsNCiAgICAgICRkYiA9IHNlbGY6Ol9nZXREQigpOw0KICAgICAgc2VsZjo6JGF0dHJzWyRnbG9iYWxfcmVmXSA9IGFycmF5KCk7DQogICAgICANCiAgICAgICRxdWVyeSA9ICJTRUxFQ1QgYXR0cmlidXRlLCBhbGlhcywgZGVmYXVsdHZhbCwgbGVuZ3RoLCBmaWVsZF90eXBlLCBzZWxlY3RfdmFsdWVzLCBvcmRlcl9ieSBGUk9NICINCiAgICAgICAgICAgICAgIC4gY21zX2RiX3ByZWZpeCgpDQogICAgICAgICAgICAgICAuICJtb2R1bGVfY2F0YWxvZ19hdHRyIFdIRVJFIHR5cGVfaWQ9PyBPUkRFUiBCWSBvcmRlcl9ieSBBU0MiOw0KICAgICAgICAgICAgICAgDQogICAgICAkdHlwZV9pZCA9IDE7DQogICAgICANCiAgICAgIGlmICgkZ2xvYmFsX3JlZiA9PSAnY2F0YWxvZ19jYXRfYXR0cnMnKQ0KICAgICAgew0KICAgICAgICAkdHlwZV9pZCA9IDI7DQogICAgICB9DQogICAgICBlbHNlaWYgKCRnbG9iYWxfcmVmID09ICdjYXRhbG9nX3ByaW50X2F0dHJzJykNCiAgICAgIHsNCiAgICAgICAgJHR5cGVfaWQgPSAzOw0KICAgICAgfQ0KICAgICAgDQogICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdHlwZV9pZCkpOw0KICAgICAgDQogICAgICB3aGlsZSAoJGRicmVzdWx0ICE9PSBmYWxzZSAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQ0KICAgICAgew0KICAgICAgICAkQXR0ciA9IG5ldyBzdGRDbGFzcygpOw0KICAgICAgICAkQXR0ci0+YXR0ciA9ICRyb3dbJ2F0dHJpYnV0ZSddOw0KICAgICAgICAkQXR0ci0+YWxpYXMgPSAhZW1wdHkoJHJvd1snYWxpYXMnXSkgPyAkcm93WydhbGlhcyddIDogc3RydG9sb3dlciggcHJlZ19yZXBsYWNlKCcvXFcvJywgJycsICRyb3dbJ2F0dHJpYnV0ZSddKSApOw0KICAgICAgICAkQXR0ci0+bGVuZ3RoID0gJHJvd1snbGVuZ3RoJ107DQogICAgICAgICRBdHRyLT5kZWZhdWx0ID0gJHJvd1snZGVmYXVsdHZhbCddOw0KICAgICAgICAkQXR0ci0+c2VsZWN0X3ZhbHVlcyA9ICRyb3dbJ3NlbGVjdF92YWx1ZXMnXTsNCiAgICAgICAgJEF0dHItPmZpZWxkX3R5cGUgPSAkcm93WydmaWVsZF90eXBlJ107DQogICAgICAgICRBdHRyLT5maWVsZF9vcmRlciA9ICRyb3dbJ29yZGVyX2J5J107DQogICAgICAgICRBdHRyLT5zYWZlID0gc3RydG9sb3dlciggcHJlZ19yZXBsYWNlKCcvXFcvJywgJycsICRyb3dbJ2F0dHJpYnV0ZSddKSApOw0KICAgICAgICBzZWxmOjokYXR0cnNbJGdsb2JhbF9yZWZdWyRBdHRyLT5hbGlhc10gPSAkQXR0cjsNCiAgICAgIH0NCg0KICAgIHJldHVybiBzZWxmOjokYXR0cnNbJGdsb2JhbF9yZWZdOw0KICB9ICANCn0NCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.cat_utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmNsYXNzIGNhdF91dGlscw0Kew0KICBwcm90ZWN0ZWQgc3RhdGljICRfaW5pdGlhbGl6ZWQgPSBGQUxTRTsNCiAgcHJvdGVjdGVkIHN0YXRpYyAkX21vZDsNCiAgcHJvdGVjdGVkIHN0YXRpYyAkX2NtczsNCiAgcHJvdGVjdGVkIHN0YXRpYyAkX2NvbmZpZzsNCiAgDQogIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIF9pbml0aWFsaXplKCkNCiAgew0KICAgIGlmKCFzZWxmOjokX2luaXRpYWxpemVkKQ0KICAgIHsNCiAgICAgIHNlbGY6OiRfbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDYXRhbG9nZXInKTsNCiAgICAgIHNlbGY6OiRfY21zID0gY21zbXMoKTsNCiAgICAgIHNlbGY6OiRfY29uZmlnID0gc2VsZjo6JF9jbXMtPkdldENvbmZpZygpOw0KICAgIH0NCiAgfQ0KICANCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBqb2luX3VybCgpDQogIHsNCiAgICAkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsNCiAgICByZXR1cm4gaW1wbG9kZSgnLycgLCRhcmdzKTsNCiAgfQ0KICANCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb250ZW50YWxwaGEoJGEsICRiKQ0KICB7DQogICAgcmV0dXJuIHN0cmNhc2VjbXAoJGFbJ3RpdGxlJ10sICRiWyd0aXRsZSddKTsNCiAgfQ0KDQogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2hyb25vKCRhLCAkYikNCiAgew0KICAgIGlmKCRhWydtb2RpZmllZGRhdGUnXSA+ICRiWydtb2RpZmllZGRhdGUnXSkNCiAgICB7DQogICAgICByZXR1cm4gLTE7DQogICAgfQ0KICAgIA0KICAgIGlmKCRhWydtb2RpZmllZGRhdGUnXSA8ICRiWydtb2RpZmllZGRhdGUnXSkNCiAgICB7DQogICAgICByZXR1cm4gMTsNCiAgICB9DQogICAgDQogICAgcmV0dXJuIDA7DQogIH0NCg0KICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZWQoJGEsICRiKQ0KICB7DQogICAgaWYoJGFbJ2NyZWF0ZWRhdGUnXSA+ICRiWydjcmVhdGVkYXRlJ10pDQogICAgew0KICAgICAgcmV0dXJuIC0xOw0KICAgIH0NCiAgICANCiAgICBpZigkYVsnY3JlYXRlZGF0ZSddIDwgJGJbJ2NyZWF0ZWRhdGUnXSkNCiAgICB7DQogICAgICByZXR1cm4gMTsNCiAgICB9DQogICAgDQogICAgcmV0dXJuIDA7DQogIH0NCiAgDQp9DQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/lib/external/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/external/Image/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/external/Image/Files.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEZpbGUgVXRpbGl0aWVzLgogKiBAYXV0aG9yICRBdXRob3I6IFdlaSBaaHVvICQKICogQHZlcnNpb24gJElkOiBGaWxlcy5waHAgODU1MSAyMDEyLTEyLTA4IDE1OjI1OjQxWiBjYWxndXkxMDAwICQKICogQHBhY2thZ2UgSW1hZ2VNYW5hZ2VyCiAqLwoKZGVmaW5lKCdGSUxFX0VSUk9SX05PX1NPVVJDRScsIDEwMCk7CmRlZmluZSgnRklMRV9FUlJPUl9DT1BZX0ZBSUxFRCcsIDEwMSk7CmRlZmluZSgnRklMRV9FUlJPUl9EU1RfRElSX0ZBSUxFRCcsIDEwMik7CmRlZmluZSgnRklMRV9DT1BZX09LJywgMTAzKTsKCi8qKgogKiBGaWxlIFV0aWxpdGllcwogKiBAYXV0aG9yICRBdXRob3I6IFdlaSBaaHVvICQKICogQHZlcnNpb24gJElkOiBGaWxlcy5waHAgODU1MSAyMDEyLTEyLTA4IDE1OjI1OjQxWiBjYWxndXkxMDAwICQKICogQHBhY2thZ2UgSW1hZ2VNYW5hZ2VyCiAqIEBzdWJwYWNrYWdlIGZpbGVzCiAqLwpjbGFzcyBGaWxlcyAKewoJCgkvKioKCSAqIENvcHkgYSBmaWxlIGZyb20gc291cmNlIHRvIGRlc3RpbmF0aW9uLiBJZiB1bmlxdWUgPT0gdHJ1ZSwgdGhlbiBpZgoJICogdGhlIGRlc3RpbmF0aW9uIGV4aXN0cywgaXQgd2lsbCBiZSByZW5hbWVkIGJ5IGFwcGVuZGluZyBhbiBpbmNyZWFtZW50aW5nIAoJICogY291bnRpbmcgbnVtYmVyLgoJICogQHBhcmFtIHN0cmluZyAkc291cmNlIHdoZXJlIHRoZSBmaWxlIGlzIGZyb20sIGZ1bGwgcGF0aCB0byB0aGUgZmlsZXMgcmVxdWlyZWQKCSAqIEBwYXJhbSBzdHJpbmcgJGRlc3RpbmF0aW9uX2ZpbGUgbmFtZSBvZiB0aGUgbmV3IGZpbGUsIGp1c3QgdGhlIGZpbGVuYW1lCgkgKiBAcGFyYW0gc3RyaW5nICRkZXN0aW5hdGlvbl9kaXIgd2hlcmUgdGhlIGZpbGVzLCBqdXN0IHRoZSBkZXN0aW5hdGlvbiBkaXIsCgkgKiBlLmcuLCAvd3d3L2h0bWwvZ2FsbGVyeS8KCSAqIEBwYXJhbSBib29sZWFuICR1bmlxdWUgY3JlYXRlIHVuaXF1ZSBkZXN0aW5hdGlvbiBmaWxlIGlmIHRydWUuCgkgKiBAcmV0dXJuIHN0cmluZyB0aGUgbmV3IGNvcGllZCBmaWxlbmFtZSwgZWxzZSBlcnJvciBpZiBhbnl0aGluZyBnb2VzIGJhZC4KCSAqLwoJZnVuY3Rpb24gY29weUZpbGUoJHNvdXJjZSwgJGRlc3RpbmF0aW9uX2RpciwgJGRlc3RpbmF0aW9uX2ZpbGUsICR1bmlxdWU9dHJ1ZSkgCgl7CgkJaWYoIShmaWxlX2V4aXN0cygkc291cmNlKSAmJiBpc19maWxlKCRzb3VyY2UpKSkgCgkJCXJldHVybiBGSUxFX0VSUk9SX05PX1NPVVJDRTsKCgkJJGRlc3RpbmF0aW9uX2RpciA9IEZpbGVzOjpmaXhQYXRoKCRkZXN0aW5hdGlvbl9kaXIpOwoKCQlpZighaXNfZGlyKCRkZXN0aW5hdGlvbl9kaXIpKSAKCQkJUmV0dXJuIEZJTEVfRVJST1JfRFNUX0RJUl9GQUlMRUQ7CgoJCSRmaWxlbmFtZSA9IEZpbGVzOjplc2NhcGUoJGRlc3RpbmF0aW9uX2ZpbGUpOwoKCQlpZigkdW5pcXVlKSAKCQl7CgkJCSRkb3RJbmRleCA9IHN0cnJwb3MoJGRlc3RpbmF0aW9uX2ZpbGUsICcuJyk7CgkJCSRleHQgPSAnJzsKCQkJaWYoaXNfaW50KCRkb3RJbmRleCkpIAoJCQl7CgkJCQkkZXh0ID0gc3Vic3RyKCRkZXN0aW5hdGlvbl9maWxlLCAkZG90SW5kZXgpOwoJCQkJJGJhc2UgPSBzdWJzdHIoJGRlc3RpbmF0aW9uX2ZpbGUsIDAsICRkb3RJbmRleCk7CgkJCX0KCQkJJGNvdW50ZXIgPSAwOwoJCQl3aGlsZShpc19maWxlKCRkZXN0aW5hdGlvbl9kaXIuJGZpbGVuYW1lKSkgCgkJCXsKCQkJCSRjb3VudGVyKys7CgkJCQkkZmlsZW5hbWUgPSAkYmFzZS4nXycuJGNvdW50ZXIuJGV4dDsKCQkJfQoJCX0KCgkJaWYgKCFjb3B5KCRzb3VyY2UsICRkZXN0aW5hdGlvbl9kaXIuJGZpbGVuYW1lKSkKCQkJcmV0dXJuIEZJTEVfRVJST1JfQ09QWV9GQUlMRUQ7CgkJCgkJLy92ZXJpZnkgdGhhdCBpdCBjb3BpZWQsIG5ldyBmaWxlIG11c3QgZXhpc3RzCgkJaWYgKGlzX2ZpbGUoJGRlc3RpbmF0aW9uX2Rpci4kZmlsZW5hbWUpKQoJCQlSZXR1cm4gJGZpbGVuYW1lOwoJCWVsc2UKCQkJcmV0dXJuIEZJTEVfRVJST1JfQ09QWV9GQUlMRUQ7Cgl9CgoJLyoqCgkgKiBDcmVhdGUgYSBuZXcgZm9sZGVyLgoJICogQHBhcmFtIHN0cmluZyAkbmV3Rm9sZGVyIHNwZWNpZml5IHRoZSBmdWxsIHBhdGggb2YgdGhlIG5ldyBmb2xkZXIuCgkgKiBAcmV0dXJuIGJvb2xlYW4gdHJ1ZSBpZiB0aGUgbmV3IGZvbGRlciBpcyBjcmVhdGVkLCBmYWxzZSBvdGhlcndpc2UuCgkgKi8KCWZ1bmN0aW9uIGNyZWF0ZUZvbGRlcigkbmV3Rm9sZGVyKSAKCXsKCQlta2RpciAoJG5ld0ZvbGRlciwgMDc3Nyk7CgkJcmV0dXJuIGNobW9kKCRuZXdGb2xkZXIsIDA3NzcpOwoJfQoKCgkvKioKCSAqIEVzY2FwZSB0aGUgZmlsZW5hbWVzLCBhbnkgbm9uLXdvcmQgY2hhcmFjdGVycyB3aWxsIGJlCgkgKiByZXBsYWNlZCBieSBhbiB1bmRlcnNjb3JlLgoJICogQHBhcmFtIHN0cmluZyAkZmlsZW5hbWUgdGhlIG9yZ2luYWwgZmlsZW5hbWUKCSAqIEByZXR1cm4gc3RyaW5nIHRoZSBlc2NhcGVkIHNhZmUgZmlsZW5hbWUKCSAqLwoJc3RhdGljIHB1YmxpYyBmdW5jdGlvbiBlc2NhcGUoJGZpbGVuYW1lKSAKCXsKCQlSZXR1cm4gcHJlZ19yZXBsYWNlKCcvW15cd1wuX10vJywgJ18nLCAkZmlsZW5hbWUpOwoJfQoKCS8qKgoJICogRGVsZXRlIGEgZmlsZS4KCSAqIEBwYXJhbSBzdHJpbmcgJGZpbGUgZmlsZSB0byBiZSBkZWxldGVkCgkgKiBAcmV0dXJuIGJvb2xlYW4gdHJ1ZSBpZiBkZWxldGVkLCBmYWxzZSBvdGhlcndpc2UuCgkgKi8KCXN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gZGVsRmlsZSgkZmlsZSkgCgl7CgkJaWYoaXNfZmlsZSgkZmlsZSkpIAoJCQlSZXR1cm4gdW5saW5rKCRmaWxlKTsKCQllbHNlCgkJCVJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIERlbGV0ZSBmb2xkZXIocyksIGNhbiBkZWxldGUgcmVjdXJzaXZlbHkuCgkgKiBAcGFyYW0gc3RyaW5nICRmb2xkZXIgdGhlIGZvbGRlciB0byBiZSBkZWxldGVkLgoJICogQHBhcmFtIGJvb2xlYW4gJHJlY3Vyc2l2ZSBpZiB0cnVlLCBhbGwgZmlsZXMgYW5kIHN1Yi1kaXJlY3RvcmllcwoJICogYXJlIGRlbGV0ZS4gSWYgZmFsc2UsIHRyaWVzIHRvIGRlbGV0ZSB0aGUgZm9sZGVyLCBjYW4gdGhyb3cKCSAqIGVycm9yIGlmIHRoZSBkaXJlY3RvcnkgaXMgbm90IGVtcHR5LgoJICogQHJldHVybiBib29sZWFuIHRydWUgaWYgZGVsZXRlZC4KCSAqLwoJc3RhdGljIHB1YmxpYyBmdW5jdGlvbiBkZWxGb2xkZXIoJGZvbGRlciwgJHJlY3Vyc2l2ZT1mYWxzZSkgCgl7CgkJJGRlbGV0ZWQgPSB0cnVlOwoJCWlmKCRyZWN1cnNpdmUpIAoJCXsKCQkJJGQgPSBkaXIoJGZvbGRlcik7CgkJCXdoaWxlIChmYWxzZSAhPSAoJGVudHJ5ID0gJGQtPnJlYWQoKSkpIAoJCQl7CgkJCQlpZiAoJGVudHJ5ICE9ICcuJyAmJiAkZW50cnkgIT0gJy4uJykKCQkJCXsKCQkJCQkkb2JqID0gRmlsZXM6OmZpeFBhdGgoJGZvbGRlcikuJGVudHJ5OwoJCQkJCS8vdmFyX2R1bXAoJG9iaik7CgkJCQkJaWYgKGlzX2ZpbGUoJG9iaikpCgkJCQkJewoJCQkJCQkkZGVsZXRlZCAmPSBGaWxlczo6ZGVsRmlsZSgkb2JqKTsJCQkJCQoJCQkJCX0KCQkJCQllbHNlIGlmKGlzX2Rpcigkb2JqKSkKCQkJCQl7CgkJCQkJCSRkZWxldGVkICY9IEZpbGVzOjpkZWxGb2xkZXIoJG9iaiwgJHJlY3Vyc2l2ZSk7CgkJCQkJfQoJCQkJCQoJCQkJfQoJCQl9CgkJCSRkLT5jbG9zZSgpOwoKCQl9CgoJCS8vJGZvbGRlcj0gJGZvbGRlci4nL3RodW1icyc7CgkJLy92YXJfZHVtcCgkZm9sZGVyKTsKCQlpZihpc19kaXIoJGZvbGRlcikpIAoJCQkkZGVsZXRlZCAmPSBybWRpcigkZm9sZGVyKTsKCQllbHNlCgkJCSRkZWxldGVkICY9IGZhbHNlOwoKCQlSZXR1cm4gJGRlbGV0ZWQ7Cgl9CgoJLyoqCgkgKiBBcHBlbmQgYSAvIHRvIHRoZSBwYXRoIGlmIHJlcXVpcmVkLgoJICogQHBhcmFtIHN0cmluZyAkcGF0aCB0aGUgcGF0aAoJICogQHJldHVybiBzdHJpbmcgcGF0aCB3aXRoIHRyYWlsaW5nIC8KCSAqLwoJc3RhdGljIGZ1bmN0aW9uIGZpeFBhdGgoJHBhdGgpIAoJewoJCS8vYXBwZW5kIGEgc2xhc2ggdG8gdGhlIHBhdGggaWYgaXQgZG9lc24ndCBleGlzdHMuCgkJaWYoIShzdWJzdHIoJHBhdGgsLTEpID09ICcvJykpCgkJCSRwYXRoIC49ICcvJzsKCQlSZXR1cm4gJHBhdGg7Cgl9CgoJLyoqCgkgKiBDb25jYXQgdHdvIHBhdGhzIHRvZ2V0aGVyLiBCYXNpY2FsbHkgJHBhdGhBKyRwYXRoQgoJICogQHBhcmFtIHN0cmluZyAkcGF0aEEgcGF0aCBvbmUKCSAqIEBwYXJhbSBzdHJpbmcgJHBhdGhCIHBhdGggdHdvCgkgKiBAcmV0dXJuIHN0cmluZyBhIHRyYWlsaW5nIHNsYXNoIGNvbWJpbmRlZCBwYXRoLgoJICovCglzdGF0aWMgZnVuY3Rpb24gbWFrZVBhdGgoJHBhdGhBLCAkcGF0aEIpIAoJewoJCSRwYXRoQSA9IEZpbGVzOjpmaXhQYXRoKCRwYXRoQSk7CgkJaWYoc3Vic3RyKCRwYXRoQiwwLDEpPT0nLycpCgkJCSRwYXRoQiA9IHN1YnN0cigkcGF0aEIsMSk7CgkJUmV0dXJuIEZpbGVzOjpmaXhQYXRoKCRwYXRoQS4kcGF0aEIpOwoJfQoKCS8qKgoJICogU2ltaWxhciB0byBtYWtlUGF0aCwgYnV0IHRoZSBzZWNvbmQgcGFyYW1ldGVyCgkgKiBpcyBub3Qgb25seSBhIHBhdGgsIGl0IG1heSBjb250YWluIHNheSBhIGZpbGUgZW5kaW5nLgoJICogQHBhcmFtIHN0cmluZyAkcGF0aEEgdGhlIGxlYWRpbmcgcGF0aAoJICogQHBhcmFtIHN0cmluZyAkcGF0aEIgdGhlIGVuZGluZyBwYXRoIHdpdGggZmlsZQoJICogQHJldHVybiBzdHJpbmcgY29tYmluZWQgZmlsZSBwYXRoLgoJICovCglzdGF0aWMgcHVibGljIGZ1bmN0aW9uIG1ha2VGaWxlKCRwYXRoQSwgJHBhdGhCKSAKCXsJCQoJCSRwYXRoQSA9IEZpbGVzOjpmaXhQYXRoKCRwYXRoQSk7CgkJaWYoc3Vic3RyKCRwYXRoQiwwLDEpPT0nLycpCgkJCSRwYXRoQiA9IHN1YnN0cigkcGF0aEIsMSk7CgkJCgkJUmV0dXJuICRwYXRoQS4kcGF0aEI7Cgl9CgoJCgkvKioKCSAqIEZvcm1hdCB0aGUgZmlsZSBzaXplLCBsaW1pdHMgdG8gTWIuCgkgKiBAcGFyYW0gaW50ICRzaXplIHRoZSByYXcgZmlsZXNpemUKCSAqIEByZXR1cm4gc3RyaW5nIGZvcm1hdGVkIGZpbGUgc2l6ZS4KCSAqLwoJc3RhdGljIGZ1bmN0aW9uIGZvcm1hdFNpemUoJHNpemUpIAoJewoJCWlmKCRzaXplIDwgMTAyNCkgCgkJCXJldHVybiAkc2l6ZS4nIGJ5dGVzJzsJCgkJZWxzZSBpZigkc2l6ZSA+PSAxMDI0ICYmICRzaXplIDwgMTAyNCoxMDI0KSAKCQkJcmV0dXJuIHNwcmludGYoJyUwMS4yZicsJHNpemUvMTAyNC4wKS4nIEtiJzsJCgkJZWxzZQoJCQlyZXR1cm4gc3ByaW50ZignJTAxLjJmJywkc2l6ZS8oMTAyNC4wKjEwMjQpKS4nIE1iJzsJCgl9Cn0KCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/external/Image/GD.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCioqIFRpdGxlLi4uLi4uLi4uOiAgR0QgRHJpdmVyCioqIFZlcnNpb24uLi4uLi4uOiAgMS4wCioqIEF1dGhvci4uLi4uLi4uOiAgWGlhbmcgV2VpIFpIVU8gPHdlaUB6aHVvLm9yZz4KKiogRmlsZW5hbWUuLi4uLi46ICBHRC5waHAKKiogTGFzdCBjaGFuZ2VkLi46ICAzMCBBdWcgMjAwMyAKKiogTm90ZXMuLi4uLi4uLi46ICBPcmdpbmFsIGlzIGZyb20gUEVBUgoqKi8KLy8gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi8vIHwgUEhQIFZlcnNpb24gNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAovLyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLy8gfCBDb3B5cmlnaHQgKGMpIDE5OTctMjAwMiBUaGUgUEhQIEdyb3VwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci8vICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwovLyB8IFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB2ZXJzaW9uIDIuMDIgb2YgdGhlIFBIUCBsaWNlbnNlLCAgICAgIHwKLy8gfCB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRSwgYW5kIGlzICAgICAgICB8Ci8vIHwgYXZhaWxhYmxlIGF0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAovLyB8IGh0dHA6Ly93d3cucGhwLm5ldC9saWNlbnNlLzJfMDIudHh0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLy8gfCBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgUEhQIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG8gICB8Ci8vIHwgb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhIG5vdGUgdG8gICAgICAgICAgfAovLyB8IGxpY2Vuc2VAcGhwLm5ldCBzbyB3ZSBjYW4gbWFpbCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LiAgICAgICAgICAgICAgIHwKLy8gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi8vIHwgQXV0aG9yczogUGV0ZXIgQm93eWVyIDxwZXRlckBtYXBsZWRlc2lnbi5jby51az4gICAgICAgICAgICAgICAgICAgICAgfAovLyB8ICAgICAgICAgIEFsYW4gS25vd2xlcyA8YWxhbkBha2JraG9tZS5jb20+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLy8gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi8vCi8vICAgIFVzYWdlIDoKLy8gICAgJGltZyAgICA9IG5ldyBJbWFnZV9UcmFuc2Zvcm1fR0QoKTsKLy8gICAgJGFuZ2xlICA9IC03ODsKLy8gICAgJGltZy0+bG9hZCgnbWFnaWNrLnBuZycpOwovLwovLyAgICBpZigkaW1nLT5yb3RhdGUoJGFuZ2xlLGFycmF5KCdhdXRvcmVzaXplJz0+dHJ1ZSwnY29sb3JfbWFzayc9PmFycmF5KDI1NSwwLDApKSkpewovLyAgICAgICAgJGltZy0+YWRkVGV4dChhcnJheSgndGV4dCc9PiJSb3RhdGlvbiAkYW5nbGUiLCd4Jz0+MCwneSc9PjEwMCwnZm9udCc9PicvdXNyL3NoYXJlL2ZvbnRzL2RlZmF1bHQvVHJ1ZVR5cGUvY29nYl9fX18udHRmJykpOwovLyAgICAgICAgJGltZy0+ZGlzcGxheSgpOwovLyAgICB9IGVsc2UgewovLyAgICAgICAgZWNobyAiRXJyb3IiOwovLyAgICB9Ci8vCi8vCi8vICRJZDogR0QucGhwIDcxODQgMjAxMS0wNy0yMCAxOToxMTo1MFogY2FsZ3V5MTAwMCAkCi8vCi8vIEltYWdlIFRyYW5zZm9ybWF0aW9uIGludGVyZmFjZSB1c2luZyB0aGUgR0QgbGlicmFyeQovLwoKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLiIvVHJhbnNmb3JtLnBocCIpOwoKQ2xhc3MgSW1hZ2VfVHJhbnNmb3JtX0RyaXZlcl9HRCBleHRlbmRzIEltYWdlX1RyYW5zZm9ybQp7CiAgICAvKioKICAgICAqIEhvbGRzIHRoZSBpbWFnZSBmaWxlIGZvciBtYW5pcHVsYXRpb24KICAgICAqLwogICAgdmFyICRpbWFnZUhhbmRsZSA9ICcnOwoKICAgIC8qKgogICAgICogSG9sZHMgdGhlIG9yaWdpbmFsIGltYWdlIGZpbGUKICAgICAqLwogICAgdmFyICRvbGRfaW1hZ2UgPSAnJzsKCiAgICAvKioKICAgICAqIENoZWNrIHNldHRpbmdzCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZCB0cnVlIG9yICBvciBhIFBFQVIgZXJyb3Igb2JqZWN0IG9uIGVycm9yCiAgICAgKgogICAgICogQHNlZSBQRUFSOjppc0Vycm9yKCkKICAgICAqLwogICAgZnVuY3Rpb24gSW1hZ2VfVHJhbnNmb3JtX0dEKCkKICAgIHsKICAgICAgICByZXR1cm47CiAgICB9IC8vIEVuZCBmdW5jdGlvbiBJbWFnZQoKICAgIC8qKgogICAgICogTG9hZCBpbWFnZQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgZmlsZW5hbWUKICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkIG5vbmUgb3IgYSBQRUFSIGVycm9yIG9iamVjdCBvbiBlcnJvcgogICAgICogQHNlZSBQRUFSOjppc0Vycm9yKCkKICAgICAqLwogICAgZnVuY3Rpb24gbG9hZCgkaW1hZ2UpCiAgICB7CiAgICAgICAgJHRoaXMtPnVpZCA9IG1kNSgkX1NFUlZFUlsnUkVNT1RFX0FERFInXSk7CiAgICAgICAgJHRoaXMtPmltYWdlID0gJGltYWdlOwogICAgICAgICR0aGlzLT5fZ2V0X2ltYWdlX2RldGFpbHMoJGltYWdlKTsKICAgICAgICAkZnVuY3Rpb25OYW1lID0gJ0ltYWdlQ3JlYXRlRnJvbScgLiAkdGhpcy0+dHlwZTsKCQlpZihmdW5jdGlvbl9leGlzdHMoJGZ1bmN0aW9uTmFtZSkpCgkJewoJCQkkdGhpcy0+aW1hZ2VIYW5kbGUgPSAkZnVuY3Rpb25OYW1lKCR0aGlzLT5pbWFnZSk7CgkJfQogICAgfSAvLyBFbmQgbG9hZAoKICAgIC8qKgogICAgICogYWRkVGV4dAogICAgICoKICAgICAqIEBwYXJhbSAgIGFycmF5ICAgb3B0aW9ucyAgICAgQXJyYXkgY29udGFpbnMgb3B0aW9ucwogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0JyAgVGhlIHN0cmluZyB0byBkcmF3CiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAneCcgICAgIEhvcml6b250YWwgcG9zaXRpb24KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd5JyAgICAgVmVydGljYWwgUG9zaXRpb24KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb2xvcicgRm9udCBjb2xvcgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQnICBGb250IHRvIGJlIHVzZWQKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXplJyAgU2l6ZSBvZiB0aGUgZm9udHMgaW4gcGl4ZWwKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXNpemVfZmlyc3QnICBUZWxsIGlmIHRoZSBpbWFnZSBoYXMgdG8gYmUgcmVzaXplZAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZSBkcmF3aW5nIHRoZSB0ZXh0CiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAqCiAgICAgKiBAcmV0dXJuIG5vbmUKICAgICAqIEBzZWUgUEVBUjo6aXNFcnJvcigpCiAgICAgKi8KICAgIGZ1bmN0aW9uIGFkZFRleHQoJHBhcmFtcykKICAgIHsKICAgICAgICAkZGVmYXVsdF9wYXJhbXMgPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dCcgPT4gJ1RoaXMgaXMgVGV4dCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3gnID0+IDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd5JyA9PiAyMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InID0+IGFycmF5KDI1NSwwLDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250JyA9PiAnQXJpYWwudHRmJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZScgPT4gJzEyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYW5nbGUnID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc2l6ZV9maXJzdCcgPT4gZmFsc2UgLy8gQ2Fycnkgb3V0IHRoZSBzY2FsaW5nIG9mIHRoZSBpbWFnZSBiZWZvcmUgYW5ub3RhdGlvbj8gIE5vdCB1c2VkIGZvciBHRAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgJHBhcmFtcyA9IGFycmF5X21lcmdlKCRkZWZhdWx0X3BhcmFtcywgJHBhcmFtcyk7CiAgICAgICAgZXh0cmFjdCgkcGFyYW1zKTsKCiAgICAgICAgaWYoICFpc19hcnJheSgkY29sb3IpICl7CiAgICAgICAgICAgIGlmICgkY29sb3JbMF09PScjJyl7CiAgICAgICAgICAgICAgICAkdGhpcy0+Y29sb3JoZXgyY29sb3JhcnJheSggJGNvbG9yICk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpbmNsdWRlX29uY2UoJ0ltYWdlL1RyYW5zZm9ybS9Ecml2ZXIvQ29sb3JzRGVmcy5waHAnKTsKICAgICAgICAgICAgICAgICRjb2xvciA9IGlzc2V0KCRjb2xvcm5hbWVzWyRjb2xvcl0pPyRjb2xvcm5hbWVzWyRjb2xvcl06ZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRjID0gaW1hZ2Vjb2xvcnJlc29sdmUgKCR0aGlzLT5pbWFnZUhhbmRsZSwgJGNvbG9yWzBdLCAkY29sb3JbMV0sICRjb2xvclsyXSk7CgogICAgICAgIGlmICgndHRmJyA9PSBzdWJzdHIoJGZvbnQsIC0zKSkgewogICAgICAgICAgICBJbWFnZVRURlRleHQoJHRoaXMtPmltYWdlSGFuZGxlLCAkc2l6ZSwgJGFuZ2xlLCAkeCwgJHksICRjLCAkZm9udCwgJHRleHQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIEltYWdlUFNUZXh0KCR0aGlzLT5pbWFnZUhhbmRsZSwgJHNpemUsICRhbmdsZSwgJHgsICR5LCAkYywgJGZvbnQsICR0ZXh0KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9IC8vIEVuZCBhZGRUZXh0CgoKICAgIC8qKgogICAgICogUm90YXRlIGltYWdlIGJ5IHRoZSBnaXZlbiBhbmdsZQogICAgICogVXNlcyBhIGZhc3Qgcm90YXRpb24gYWxnb3J5dGhtIGZvciBjdXN0b20gYW5nbGVzCiAgICAgKiBvciBsaW5lcyBjb3B5IGZvciBtdWx0aXBsZSBvZiA5MCBkZWdyZWVzCiAgICAgKgogICAgICogQHBhcmFtIGludCAgICAgICAkYW5nbGUgICAgICBSb3RhdGlvbiBhbmdsZQogICAgICogQHBhcmFtIGFycmF5ICAgICAkb3B0aW9ucyAgICBhcnJheSggICdhdXRvcmVzaXplJz0+dHJ1ZXxmYWxzZSwKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3JfbWFzayc9PmFycmF5KHIsZyxiKSwgbmFtZWQgY29sb3Igb3IgI3JyZ2diYgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAqIEBhdXRob3IgUGllcnJlLUFsYWluIEpveWUKICAgICAqIEByZXR1cm4gbWl4ZWQgbm9uZSBvciBhIFBFQVIgZXJyb3Igb2JqZWN0IG9uIGVycm9yCiAgICAgKiBAc2VlIFBFQVI6OmlzRXJyb3IoKQogICAgICovCiAgICBmdW5jdGlvbiByb3RhdGUoJGFuZ2xlLCAkb3B0aW9ucz1udWxsKQogICAgewogICAgICAgIGlmKGZ1bmN0aW9uX2V4aXN0cygnaW1hZ2Vyb3RhdGUnKSAmJiBmYWxzZSkgewogICAgICAgICAgICAkd2hpdGUgPSBpbWFnZWNvbG9yYWxsb2NhdGUgKCR0aGlzLT5pbWFnZUhhbmRsZSwgMjU1LCAyNTUsIDI1NSk7CgkJCSR0aGlzLT5pbWFnZUhhbmRsZSA9IGltYWdlcm90YXRlKCR0aGlzLT5pbWFnZUhhbmRsZSwgJGFuZ2xlLCAkd2hpdGUpOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGlmICggJG9wdGlvbnM9PW51bGwgKXsKICAgICAgICAgICAgJGF1dG9yZXNpemUgPSB0cnVlOwogICAgICAgICAgICAkY29sb3JfbWFzayA9IGFycmF5KDI1NSwyNTUsMCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZXh0cmFjdCggJG9wdGlvbnMgKTsKICAgICAgICB9CgogICAgICAgIHdoaWxlICgkYW5nbGUgPD0gLTQ1KSB7CiAgICAgICAgICAgICRhbmdsZSAgKz0gMzYwOwogICAgICAgIH0KICAgICAgICB3aGlsZSAoJGFuZ2xlID4gMjcwKSB7CiAgICAgICAgICAgICRhbmdsZSAgLT0gMzYwOwogICAgICAgIH0KCiAgICAgICAgJHQgICAgICA9IGRlZzJyYWQoJGFuZ2xlKTsKCiAgICAgICAgaWYoICFpc19hcnJheSgkY29sb3JfbWFzaykgKXsKICAgICAgICAgICAgaWYgKCRjb2xvclswXT09JyMnKXsKICAgICAgICAgICAgICAgICR0aGlzLT5jb2xvcmhleDJjb2xvcmFycmF5KCAkY29sb3JfbWFzayApOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaW5jbHVkZV9vbmNlKCdJbWFnZS9UcmFuc2Zvcm0vRHJpdmVyL0NvbG9yRGVmcy5waHAnKTsKICAgICAgICAgICAgICAgICRjb2xvciA9IGlzc2V0KCRjb2xvcm5hbWVzWyRjb2xvcl9tYXNrXSk/JGNvbG9ybmFtZXNbJGNvbG9yX21hc2tdOmZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBEbyBub3Qgcm91bmQgaXQsIHRvbyBtdWNoIGxvc3Qgb2YgcXVhbGl0eQogICAgICAgICRjb3NUICAgPSBjb3MoJHQpOwogICAgICAgICRzaW5UICAgPSBzaW4oJHQpOwoKICAgICAgICAkaW1nICAgID0mICR0aGlzLT5pbWFnZUhhbmRsZTsKCiAgICAgICAgJHdpZHRoICA9ICRtYXhfeCAgPSAkdGhpcy0+aW1nX3g7CiAgICAgICAgJGhlaWdodCA9ICRtYXhfeSAgPSAkdGhpcy0+aW1nX3k7CiAgICAgICAgJG1pbl95ICA9IDA7CiAgICAgICAgJG1pbl94ICA9IDA7CgogICAgICAgICR4MSAgICAgPSByb3VuZCgkbWF4X3gvMiwwKTsKICAgICAgICAkeTEgICAgID0gcm91bmQoJG1heF95LzIsMCk7CgogICAgICAgIGlmICggJGF1dG9yZXNpemUgKXsKICAgICAgICAgICAgJHQgICAgICA9IGFicygkdCk7CiAgICAgICAgICAgICRhICAgICAgPSByb3VuZCgkYW5nbGUsMCk7CiAgICAgICAgICAgIHN3aXRjaCgoaW50KSgkYW5nbGUpKXsKICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgJHdpZHRoMiAgICAgPSAkd2lkdGg7CiAgICAgICAgICAgICAgICAgICAgICAgICRoZWlnaHQyICAgID0gJGhlaWdodDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgOTA6CiAgICAgICAgICAgICAgICAgICAgICAgICR3aWR0aDIgICAgID0gJGhlaWdodDsKICAgICAgICAgICAgICAgICAgICAgICAgJGhlaWdodDIgICAgPSAkd2lkdGg7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDE4MDoKICAgICAgICAgICAgICAgICAgICAgICAgJHdpZHRoMiAgICAgPSAkd2lkdGg7CiAgICAgICAgICAgICAgICAgICAgICAgICRoZWlnaHQyICAgID0gJGhlaWdodDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgMjcwOgogICAgICAgICAgICAgICAgICAgICAgICAkd2lkdGgyICAgICA9ICRoZWlnaHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICRoZWlnaHQyICAgID0gJHdpZHRoOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAkd2lkdGgyICAgICA9IChpbnQpKGFicyhzaW4oJHQpICogJGhlaWdodCArIGNvcygkdCkgKiAkd2lkdGgpKTsKICAgICAgICAgICAgICAgICAgICAkaGVpZ2h0MiAgICA9IChpbnQpKGFicyhjb3MoJHQpICogJGhlaWdodCtzaW4oJHQpICogJHdpZHRoKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR3aWR0aDIgICAgIC09ICR3aWR0aDIlMjsKICAgICAgICAgICAgJGhlaWdodDIgICAgLT0gJGhlaWdodDIlMjsKCiAgICAgICAgICAgICRkX3dpZHRoICAgID0gYWJzKCR3aWR0aCAtICR3aWR0aDIpOwogICAgICAgICAgICAkZF9oZWlnaHQgICA9IGFicygkaGVpZ2h0IC0gJGhlaWdodDIpOwogICAgICAgICAgICAkeF9vZmZzZXQgICA9ICRkX3dpZHRoLzI7CiAgICAgICAgICAgICR5X29mZnNldCAgID0gJGRfaGVpZ2h0LzI7CiAgICAgICAgICAgICRtaW5feDIgICAgID0gLWFicygkeF9vZmZzZXQpOwogICAgICAgICAgICAkbWluX3kyICAgICA9IC1hYnMoJHlfb2Zmc2V0KTsKICAgICAgICAgICAgJG1heF94MiAgICAgPSAkd2lkdGgyOwogICAgICAgICAgICAkbWF4X3kyICAgICA9ICRoZWlnaHQyOwogICAgICAgIH0KCiAgICAgICAgaWYoZnVuY3Rpb25fZXhpc3RzKCdJbWFnZUNyZWF0ZVRydWVDb2xvcicpKXsKICAgICAgICAgICAgJGltZzIgPUltYWdlQ3JlYXRlVHJ1ZUNvbG9yKCR3aWR0aDIsJGhlaWdodDIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRpbWcyID1JbWFnZUNyZWF0ZSgkd2lkdGgyLCRoZWlnaHQyKTsKICAgICAgICB9CgkKCiAgICAgICAgaWYgKCAhaXNfcmVzb3VyY2UoJGltZzIpICl7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsvKlBFQVI6OnJhaXNlRXJyb3IoJ0Nhbm5vdCBjcmVhdGUgYnVmZmVyIGZvciB0aGUgcm90YXRhaW9uLicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgUEVBUl9FUlJPUl9UUklHR0VSLCBFX1VTRVJfTk9USUNFKTsqLwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmltZ194ID0gJHdpZHRoMjsKICAgICAgICAkdGhpcy0+aW1nX3kgPSAkaGVpZ2h0MjsKCgogICAgICAgIGltYWdlcGFsZXR0ZWNvcHkoJGltZzIsJGltZyk7CgogICAgICAgICRtYXNrICAgPSBpbWFnZWNvbG9ycmVzb2x2ZSgkaW1nMiwkY29sb3JfbWFza1swXSwkY29sb3JfbWFza1sxXSwkY29sb3JfbWFza1syXSk7CgogICAgICAgIC8vIHVzZSBzaW1wbGUgbGluZXMgY29weSBmb3IgYXhlcyBhbmdsZXMKICAgICAgICBzd2l0Y2goKGludCkoJGFuZ2xlKSl7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIGltYWdlZmlsbCAoJGltZzIsIDAsIDAsJG1hc2spOwogICAgICAgICAgICAgICAgZm9yICgkeT0wOyAkeSA8ICRtYXhfeTsgJHkrKykgewogICAgICAgICAgICAgICAgICAgIGZvciAoJHggPSAkbWluX3g7ICR4IDwgJG1heF94OyAkeCsrKXsKICAgICAgICAgICAgICAgICAgICAgICAgJGMgID0gQGltYWdlY29sb3JhdCAoICRpbWcsICR4LCAkeSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlc2V0cGl4ZWwoJGltZzIsJHgrJHhfb2Zmc2V0LCR5KyR5X29mZnNldCwkYyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgOTA6CiAgICAgICAgICAgICAgICBpbWFnZWZpbGwgKCRpbWcyLCAwLCAwLCRtYXNrKTsKICAgICAgICAgICAgICAgIGZvciAoJHggPSAkbWluX3g7ICR4IDwgJG1heF94OyAkeCsrKXsKICAgICAgICAgICAgICAgICAgICBmb3IgKCR5PSRtaW5feTsgJHkgPCAkbWF4X3k7ICR5KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGMgID0gaW1hZ2Vjb2xvcmF0ICggJGltZywgJHgsICR5KTsKICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzZXRwaXhlbCgkaW1nMiwkbWF4X3ktJHktMSwkeCwkYyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMTgwOgogICAgICAgICAgICAgICAgaW1hZ2VmaWxsICgkaW1nMiwgMCwgMCwkbWFzayk7CiAgICAgICAgICAgICAgICBmb3IgKCR5PTA7ICR5IDwgJG1heF95OyAkeSsrKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICgkeCA9ICRtaW5feDsgJHggPCAkbWF4X3g7ICR4KyspewogICAgICAgICAgICAgICAgICAgICAgICAkYyAgPSBAaW1hZ2Vjb2xvcmF0ICggJGltZywgJHgsICR5KTsKICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzZXRwaXhlbCgkaW1nMiwgJG1heF94Mi0keC0xLCAkbWF4X3kyLSR5LTEsICRjKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAyNzA6CiAgICAgICAgICAgICAgICBpbWFnZWZpbGwgKCRpbWcyLCAwLCAwLCRtYXNrKTsKICAgICAgICAgICAgICAgIGZvciAoJHk9MDsgJHkgPCAkbWF4X3k7ICR5KyspIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKCR4ID0gJG1heF94OyAkeCA+PSAkbWluX3g7ICR4LS0pewogICAgICAgICAgICAgICAgICAgICAgICAkYyAgPSBAaW1hZ2Vjb2xvcmF0ICggJGltZywgJHgsICR5KTsKICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzZXRwaXhlbCgkaW1nMiwkeSwkbWF4X3gtJHgtMSwkYyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIC8vIHNpbXBsZSByZXZlcnNlIHJvdGF0aW9uIGFsZ28KICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICRpPTA7CiAgICAgICAgICAgICAgICBmb3IgKCR5ID0gJG1pbl95MjsgJHkgPCAkbWF4X3kyOyAkeSsrKXsKCiAgICAgICAgICAgICAgICAgICAgLy8gQWxnZWJyYSA6KQogICAgICAgICAgICAgICAgICAgICR4MiA9IHJvdW5kKCgoJG1pbl94Mi0keDEpICogJGNvc1QpICsgKCgkeS0keTEpICogJHNpblQgKyAkeDEpLDApOwogICAgICAgICAgICAgICAgICAgICR5MiA9IHJvdW5kKCgoJHktJHkxKSAqICRjb3NUIC0gKCRtaW5feDItJHgxKSAqICRzaW5UICsgJHkxKSwwKTsKCiAgICAgICAgICAgICAgICAgICAgZm9yICgkeCA9ICRtaW5feDI7ICR4IDwgJG1heF94MjsgJHgrKyl7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB3ZSBhcmUgb3V0IG9mIG9yaWdpbmFsIGJvdW5jZXMsIGlmIHdlIGFyZQogICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2UgdGhlIGRlZmF1bHQgY29sb3IgbWFzawogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICR4Mj49MCAmJiAkeDI8JG1heF94ICYmICR5Mj49MCAmJiAkeTI8JG1heF95ICl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYyAgPSBpbWFnZWNvbG9yYXQgKCAkaW1nLCAkeDIsICR5Mik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYyAgPSAkbWFzazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXNldHBpeGVsKCRpbWcyLCR4KyR4X29mZnNldCwkeSskeV9vZmZzZXQsJGMpOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91bmQgdmVyYm90ZW4hCiAgICAgICAgICAgICAgICAgICAgICAgICR4MiAgKz0gJGNvc1Q7CiAgICAgICAgICAgICAgICAgICAgICAgICR5MiAgLT0gJHNpblQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgICR0aGlzLT5vbGRfaW1hZ2UgICAgPSAkdGhpcy0+aW1hZ2VIYW5kbGU7CiAgICAgICAgJHRoaXMtPmltYWdlSGFuZGxlICA9ICAkaW1nMjsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCgogICAvKioKICAgICogUmVzaXplIEFjdGlvbgogICAgKgogICAgKiBGb3IgR0QgMi4wMSsgdGhlIG5ldyBjb3B5cmVzYW1wbGVkIGZ1bmN0aW9uIGlzIHVzZWQKICAgICogSXQgdXNlcyBhIGJpY3ViaWMgaW50ZXJwb2xhdGlvbiBhbGdvcml0aG0gdG8gZ2V0IGZhcgogICAgKiBiZXR0ZXIgcmVzdWx0LgogICAgKgogICAgKiBAcGFyYW0gJG5ld194IGludCAgbmV3IHdpZHRoCiAgICAqIEBwYXJhbSAkbmV3X3kgaW50ICBuZXcgaGVpZ2h0CiAgICAqCiAgICAqIEByZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzIG9yIHBlYXIgZXJyb3IKICAgICogQHNlZSBQRUFSOjppc0Vycm9yKCkKICAgICovCiAgICBmdW5jdGlvbiBfcmVzaXplKCRuZXdfeCA9IDAsICRuZXdfeSA9IDApIHsKICAgICAgICBpZiAoJHRoaXMtPnJlc2l6ZWQgPT09IHRydWUpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvKlBFQVI6OnJhaXNlRXJyb3IoJ1lvdSBoYXZlIGFscmVhZHkgcmVzaXplZCB0aGUgaW1hZ2Ugd2l0aG91dCBzYXZpbmcgaXQuICBZb3VyIHByZXZpb3VzIHJlc2l6aW5nIHdpbGwgYmUgb3ZlcndyaXR0ZW4nLCBudWxsLCBQRUFSX0VSUk9SX1RSSUdHRVIsIEVfVVNFUl9OT1RJQ0UpOyovCiAgICAgICAgfQogICAgICAgIGlmKGZ1bmN0aW9uX2V4aXN0cygnSW1hZ2VDcmVhdGVUcnVlQ29sb3InKSl7CiAgICAgICAgICAgICRuZXdfaW1nID1JbWFnZUNyZWF0ZVRydWVDb2xvcigkbmV3X3gsJG5ld195KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkbmV3X2ltZyA9SW1hZ2VDcmVhdGUoJG5ld194LCRuZXdfeSk7CiAgICAgICAgfQogICAgICAgIGlmKGZ1bmN0aW9uX2V4aXN0cygnSW1hZ2VDb3B5UmVzYW1wbGVkJykpewogICAgICAgICAgICBJbWFnZUNvcHlSZXNhbXBsZWQoJG5ld19pbWcsICR0aGlzLT5pbWFnZUhhbmRsZSwgMCwgMCwgMCwgMCwgJG5ld194LCAkbmV3X3ksICR0aGlzLT5pbWdfeCwgJHRoaXMtPmltZ195KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBJbWFnZUNvcHlSZXNpemVkKCRuZXdfaW1nLCAkdGhpcy0+aW1hZ2VIYW5kbGUsIDAsIDAsIDAsIDAsICRuZXdfeCwgJG5ld195LCAkdGhpcy0+aW1nX3gsICR0aGlzLT5pbWdfeSk7CiAgICAgICAgfQogICAgICAgICR0aGlzLT5vbGRfaW1hZ2UgPSAkdGhpcy0+aW1hZ2VIYW5kbGU7CiAgICAgICAgJHRoaXMtPmltYWdlSGFuZGxlID0gJG5ld19pbWc7CiAgICAgICAgJHRoaXMtPnJlc2l6ZWQgPSB0cnVlOwoKICAgICAgICAkdGhpcy0+bmV3X3ggPSAkbmV3X3g7CiAgICAgICAgJHRoaXMtPm5ld195ID0gJG5ld195OwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQ3JvcCB0aGUgaW1hZ2UKICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRjcm9wX3ggbGVmdCBjb2x1bW4gb2YgdGhlIGltYWdlCiAgICAgKiBAcGFyYW0gaW50ICRjcm9wX3kgdG9wIHJvdyBvZiB0aGUgaW1hZ2UKICAgICAqIEBwYXJhbSBpbnQgJGNyb3Bfd2lkdGggbmV3IGNyb3BwZWQgaW1hZ2Ugd2lkdGgKICAgICAqIEBwYXJhbSBpbnQgJGNyb3BfaGVpZ2h0IG5ldyBjcm9wcGVkIGltYWdlIGhlaWdodAogICAgICovCiAgICBmdW5jdGlvbiBjcm9wKCRuZXdfeCwgJG5ld195LCAkbmV3X3dpZHRoLCAkbmV3X2hlaWdodCkgCiAgICB7CiAgICAgICAgaWYoZnVuY3Rpb25fZXhpc3RzKCdJbWFnZUNyZWF0ZVRydWVDb2xvcicpKXsKICAgICAgICAgICAgJG5ld19pbWcgPUltYWdlQ3JlYXRlVHJ1ZUNvbG9yKCRuZXdfd2lkdGgsJG5ld19oZWlnaHQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRuZXdfaW1nID1JbWFnZUNyZWF0ZSgkbmV3X3dpZHRoLCRuZXdfaGVpZ2h0KTsKICAgICAgICB9CiAgICAgICAgaWYoZnVuY3Rpb25fZXhpc3RzKCdJbWFnZUNvcHlSZXNhbXBsZWQnKSl7CiAgICAgICAgICAgIEltYWdlQ29weVJlc2FtcGxlZCgkbmV3X2ltZywgJHRoaXMtPmltYWdlSGFuZGxlLCAwLCAwLCAkbmV3X3gsICRuZXdfeSwkbmV3X3dpZHRoLCRuZXdfaGVpZ2h0LCRuZXdfd2lkdGgsJG5ld19oZWlnaHQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIEltYWdlQ29weVJlc2l6ZWQoJG5ld19pbWcsICR0aGlzLT5pbWFnZUhhbmRsZSwgMCwgMCwgJG5ld194LCAkbmV3X3ksICRuZXdfd2lkdGgsJG5ld19oZWlnaHQsJG5ld193aWR0aCwkbmV3X2hlaWdodCk7CiAgICAgICAgfQogICAgICAgICR0aGlzLT5vbGRfaW1hZ2UgPSAkdGhpcy0+aW1hZ2VIYW5kbGU7CiAgICAgICAgJHRoaXMtPmltYWdlSGFuZGxlID0gJG5ld19pbWc7CiAgICAgICAgJHRoaXMtPnJlc2l6ZWQgPSB0cnVlOwoKICAgICAgICAkdGhpcy0+bmV3X3ggPSAkbmV3X3g7CiAgICAgICAgJHRoaXMtPm5ld195ID0gJG5ld195OwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAKICAgIC8qKgogICAgICogRmxpcCB0aGUgaW1hZ2UgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkKICAgICAqCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkaG9yaXpvbnRhbCB0cnVlIGlmIGhvcml6b250YWwgZmxpcCwgdmVydGljYWwgb3RoZXJ3aXNlCiAgICAgKi8KICAgIGZ1bmN0aW9uIGZsaXAoJGhvcml6b250YWwpCiAgICB7CiAgICAgICAgaWYoISRob3Jpem9udGFsKSB7CiAgICAgICAgICAgICR0aGlzLT5yb3RhdGUoMTgwKTsKICAgICAgICB9CgogICAgICAgICR3aWR0aCA9IGltYWdlc3goJHRoaXMtPmltYWdlSGFuZGxlKTsgCiAgICAgICAgJGhlaWdodCA9IGltYWdlc3koJHRoaXMtPmltYWdlSGFuZGxlKTsgCgogICAgICAgIGZvciAoJGogPSAwOyAkaiA8ICRoZWlnaHQ7ICRqKyspIHsgCiAgICAgICAgICAgICAgICAkbGVmdCA9IDA7IAogICAgICAgICAgICAgICAgJHJpZ2h0ID0gJHdpZHRoLTE7IAoKCiAgICAgICAgICAgICAgICB3aGlsZSAoJGxlZnQgPCAkcmlnaHQpIHsgCiAgICAgICAgICAgICAgICAgICAgLy9lY2hvICIgajoiLiRqLiIgbDoiLiRsZWZ0LiIgcjoiLiRyaWdodC4iXG48YnI+IjsKICAgICAgICAgICAgICAgICAgICAkdCA9IGltYWdlY29sb3JhdCgkdGhpcy0+aW1hZ2VIYW5kbGUsICRsZWZ0LCAkaik7IAogICAgICAgICAgICAgICAgICAgIGltYWdlc2V0cGl4ZWwoJHRoaXMtPmltYWdlSGFuZGxlLCAkbGVmdCwgJGosIGltYWdlY29sb3JhdCgkdGhpcy0+aW1hZ2VIYW5kbGUsICRyaWdodCwgJGopKTsgCiAgICAgICAgICAgICAgICAgICAgaW1hZ2VzZXRwaXhlbCgkdGhpcy0+aW1hZ2VIYW5kbGUsICRyaWdodCwgJGosICR0KTsgCiAgICAgICAgICAgICAgICAgICAgJGxlZnQrKzsgJHJpZ2h0LS07IAogICAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgCiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCgogICAgLyoqCiAgICAgKiBBZGp1c3QgdGhlIGltYWdlIGdhbW1hCiAgICAgKgogICAgICogQHBhcmFtIGZsb2F0ICRvdXRwdXRnYW1tYQogICAgICoKICAgICAqIEByZXR1cm4gbm9uZQogICAgICovCiAgICBmdW5jdGlvbiBnYW1tYSgkb3V0cHV0Z2FtbWE9MS4wKSB7CiAgICAgICAgSW1hZ2VHYW1tYUNvcnJlY3QoJHRoaXMtPmltYWdlSGFuZGxlLCAxLjAsICRvdXRwdXRnYW1tYSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTYXZlIHRoZSBpbWFnZSBmaWxlCiAgICAgKgogICAgICogQHBhcmFtICRmaWxlbmFtZSBzdHJpbmcgIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIHdyaXRlIHRvCiAgICAgKiBAcGFyYW0gJHF1YWxpdHkgIGludCAgICAgb3V0cHV0IERQSSwgZGVmYXVsdCBpcyA4NQogICAgICogQHBhcmFtICR0eXBlcyAgICBzdHJpbmcgIGRlZmluZSB0aGUgb3V0cHV0IGZvcm1hdCwgZGVmYXVsdAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHRoZSBjdXJyZW50IHVzZWQgZm9ybWF0CiAgICAgKgogICAgICogQHJldHVybiBub25lCiAgICAgKi8KICAgIGZ1bmN0aW9uIHNhdmUoJGZpbGVuYW1lLCAkdHlwZSA9ICcnLCAkcXVhbGl0eSA9IDg1KQogICAgewoJCSR0eXBlICAgICAgICAgICA9ICR0eXBlPT0nJz8gJHRoaXMtPnR5cGUgOiAkdHlwZTsKCQkkZnVuY3Rpb25OYW1lICAgPSAnaW1hZ2UnIC4gJHR5cGU7CgoJCWlmKGZ1bmN0aW9uX2V4aXN0cygkZnVuY3Rpb25OYW1lKSkKCQl7CgkJCSR0aGlzLT5vbGRfaW1hZ2UgPSAkdGhpcy0+aW1hZ2VIYW5kbGU7CgkJCWlmKCR0eXBlPT0nanBlZycpCgkJCQkkZnVuY3Rpb25OYW1lKCR0aGlzLT5pbWFnZUhhbmRsZSwgJGZpbGVuYW1lLCAkcXVhbGl0eSk7CgkJCWVsc2UKCQkJCSRmdW5jdGlvbk5hbWUoJHRoaXMtPmltYWdlSGFuZGxlLCAkZmlsZW5hbWUpOwoJCQkkdGhpcy0+aW1hZ2VIYW5kbGUgPSAkdGhpcy0+b2xkX2ltYWdlOwoJCQkkdGhpcy0+cmVzaXplZCA9IGZhbHNlOwoJCX0KICAgIH0gLy8gRW5kIHNhdmUKCgogICAgLyoqCiAgICAgKiBEaXNwbGF5IGltYWdlIHdpdGhvdXQgc2F2aW5nIGFuZCBsb3NlIGNoYW5nZXMKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nIHR5cGUgKEpQRyxQTkcuLi4pOwogICAgICogQHBhcmFtIGludCBxdWFsaXR5IDc1CiAgICAgKgogICAgICogQHJldHVybiBub25lCiAgICAgKi8KICAgIGZ1bmN0aW9uIGRpc3BsYXkoJHR5cGUgPSAnJywgJHF1YWxpdHkgPSA3NSkKICAgIHsKICAgICAgICBpZiAoJHR5cGUgIT0gJycpIHsKICAgICAgICAgICAgJHRoaXMtPnR5cGUgPSAkdHlwZTsKICAgICAgICB9CiAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICdJbWFnZScgLiAkdGhpcy0+dHlwZTsKCQlpZihmdW5jdGlvbl9leGlzdHMoJGZ1bmN0aW9uTmFtZSkpCgkJewoJCQloZWFkZXIoJ0NvbnRlbnQtdHlwZTogaW1hZ2UvJyAuIHN0cnRvbG93ZXIoJHRoaXMtPnR5cGUpKTsKCQkJJGZ1bmN0aW9uTmFtZSgkdGhpcy0+aW1hZ2VIYW5kbGUsICcnLCAkcXVhbGl0eSk7CgkJCSR0aGlzLT5pbWFnZUhhbmRsZSA9ICR0aGlzLT5vbGRfaW1hZ2U7CgkJCSR0aGlzLT5yZXNpemVkID0gZmFsc2U7CgkJCUltYWdlRGVzdHJveSgkdGhpcy0+b2xkX2ltYWdlKTsKCQkJJHRoaXMtPmZyZWUoKTsKCQl9CiAgICB9CgogICAgLyoqCiAgICAgKiBEZXN0cm95IGltYWdlIGhhbmRsZQogICAgICoKICAgICAqIEByZXR1cm4gbm9uZQogICAgICovCiAgICBmdW5jdGlvbiBmcmVlKCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmltYWdlSGFuZGxlKXsKICAgICAgICAgICAgSW1hZ2VEZXN0cm95KCR0aGlzLT5pbWFnZUhhbmRsZSk7CiAgICAgICAgfQogICAgfQoKfSAvLyBFbmQgY2xhc3MgSW1hZ2VHRAo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lib/external/Image/IM.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqKiBUaXRsZS4uLi4uLi4uLjogIEltYWdlTWFnaWNrIERyaXZlcgoqKiBWZXJzaW9uLi4uLi4uLjogIDEuMAoqKiBBdXRob3IuLi4uLi4uLjogIFhpYW5nIFdlaSBaSFVPIDx3ZWlAemh1by5vcmc+CioqIEZpbGVuYW1lLi4uLi4uOiAgSU0ucGhwCioqIExhc3QgY2hhbmdlZC4uOiAgMzAgQXVnIDIwMDMgCioqIE5vdGVzLi4uLi4uLi4uOiAgT3JnaW5hbCBpcyBmcm9tIFBFQVIKKiovCgovLyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLy8gfCBQSFAgVmVyc2lvbiA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci8vICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwovLyB8IENvcHlyaWdodCAoYykgMTk5Ny0yMDAyIFRoZSBQSFAgR3JvdXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLy8gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi8vIHwgVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHZlcnNpb24gMi4wMiBvZiB0aGUgUEhQIGxpY2Vuc2UsICAgICAgfAovLyB8IHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLCBhbmQgaXMgICAgICAgIHwKLy8gfCBhdmFpbGFibGUgYXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci8vIHwgaHR0cDovL3d3dy5waHAubmV0L2xpY2Vuc2UvMl8wMi50eHQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAovLyB8IElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBQSFAgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0byAgIHwKLy8gfCBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGEgbm90ZSB0byAgICAgICAgICB8Ci8vIHwgbGljZW5zZUBwaHAubmV0IHNvIHdlIGNhbiBtYWlsIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuICAgICAgICAgICAgICAgfAovLyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLy8gfCBBdXRob3JzOiBQZXRlciBCb3d5ZXIgPHBldGVyQG1hcGxlZGVzaWduLmNvLnVrPiAgICAgICAgICAgICAgICAgICAgICB8Ci8vICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwovLwovLyAkSWQ6IElNLnBocCA0MTY5IDIwMDctMDktMjEgMDY6Mjg6NDlaIHNpbG1hcmlsbGlvbiAkCi8vCi8vIEltYWdlIFRyYW5zZm9ybWF0aW9uIGludGVyZmFjZSB1c2luZyBjb21tYW5kIGxpbmUgSW1hZ2VNYWdpY2sKLy8KCnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4iL1RyYW5zZm9ybS5waHAiKTsKCkNsYXNzIEltYWdlX1RyYW5zZm9ybV9Ecml2ZXJfSU0gZXh0ZW5kcyBJbWFnZV9UcmFuc2Zvcm0KewogICAgLyoqCiAgICAgKiBhc3NvY2lhdGl2ZSBhcnJheSBjb21tYW5kcyB0byBiZSBleGVjdXRlZAogICAgICogQHZhciBhcnJheQogICAgICovCiAgICB2YXIgJGNvbW1hbmQgPSBhcnJheSgpOwoKICAgIC8qKgogICAgICoKICAgICAqCiAgICAgKi8KICAgIGZ1bmN0aW9uIEltYWdlX1RyYW5zZm9ybV9Ecml2ZXJfSU0oKQogICAgewogICAgICAgIHJldHVybiB0cnVlOwogICAgfSAvLyBFbmQgSW1hZ2VfSU0KCiAgICAvKioKICAgICAqIExvYWQgaW1hZ2UKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nIGZpbGVuYW1lCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZCBub25lIG9yIGEgUEVBUiBlcnJvciBvYmplY3Qgb24gZXJyb3IKICAgICAqIEBzZWUgUEVBUjo6aXNFcnJvcigpCiAgICAgKi8KICAgIGZ1bmN0aW9uIGxvYWQoJGltYWdlKQogICAgewoKICAgICAgICAkdGhpcy0+dWlkID0gbWQ1KCRfU0VSVkVSWydSRU1PVEVfQUREUiddKTsKICAgICAgICAvKmlmICghZmlsZV9leGlzdHMoJGltYWdlKSkgewogICAgICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcignVGhlIGltYWdlIGZpbGUgJyAuICRpbWFnZSAuICcgZG9lc1wndCBleGlzdCcsIHRydWUpOwogICAgICAgIH0qLwogICAgICAgICR0aGlzLT5pbWFnZSA9ICRpbWFnZTsKICAgICAgICAkdGhpcy0+X2dldF9pbWFnZV9kZXRhaWxzKCRpbWFnZSk7CiAgICB9IC8vIEVuZCBsb2FkCgogICAgLyoqCiAgICAgKiBSZXNpemUgQWN0aW9uCiAgICAgKgogICAgICogQHBhcmFtIGludCAgIG5ld194ICAgbmV3IHdpZHRoCiAgICAgKiBAcGFyYW0gaW50ICAgbmV3X3kgICBuZXcgaGVpZ2h0CiAgICAgKgogICAgICogQHJldHVybiBub25lCiAgICAgKiBAc2VlIFBFQVI6OmlzRXJyb3IoKQogICAgICovCiAgICBmdW5jdGlvbiBfcmVzaXplKCRuZXdfeCwgJG5ld195KQogICAgewogICAgICAgIC8qaWYgKGlzc2V0KCR0aGlzLT5jb21tYW5kWydyZXNpemUnXSkpIHsKICAgICAgICAgICAgcmV0dXJuIFBFQVI6OnJhaXNlRXJyb3IoIllvdSBjYW5ub3Qgc2NhbGUgb3IgcmVzaXplIGFuIGltYWdlIG1vcmUgdGhhbiBvbmNlIHdpdGhvdXQgY2FsbGluZyBzYXZlIG9yIGRpc3BsYXkiLCB0cnVlKTsKICAgICAgICB9Ki8KICAgICAgICAkdGhpcy0+Y29tbWFuZFsncmVzaXplJ10gPSAiLWdlb21ldHJ5ICR7bmV3X3h9eCR7bmV3X3l9ISI7CgogICAgICAgICR0aGlzLT5uZXdfeCA9ICRuZXdfeDsKICAgICAgICAkdGhpcy0+bmV3X3kgPSAkbmV3X3k7CiAgICB9IC8vIEVuZCByZXNpemUKCiAgICAvKioKICAgICAqIENyb3AgdGhlIGltYWdlCiAgICAgKgogICAgICogQHBhcmFtIGludCAkY3JvcF94IGxlZnQgY29sdW1uIG9mIHRoZSBpbWFnZQogICAgICogQHBhcmFtIGludCAkY3JvcF95IHRvcCByb3cgb2YgdGhlIGltYWdlCiAgICAgKiBAcGFyYW0gaW50ICRjcm9wX3dpZHRoIG5ldyBjcm9wcGVkIGltYWdlIHdpZHRoCiAgICAgKiBAcGFyYW0gaW50ICRjcm9wX2hlaWdodCBuZXcgY3JvcHBlZCBpbWFnZSBoZWlnaHQKICAgICAqLwogICAgZnVuY3Rpb24gY3JvcCgkY3JvcF94LCAkY3JvcF95LCAkY3JvcF93aWR0aCwgJGNyb3BfaGVpZ2h0KSAKICAgIHsKICAgICAgICAkdGhpcy0+Y29tbWFuZFsnY3JvcCddID0gIi1jcm9wIHskY3JvcF93aWR0aH14eyRjcm9wX2hlaWdodH0reyRjcm9wX3h9K3skY3JvcF95fSI7CiAgICB9CgogICAgLyoqCiAgICAgKiBGbGlwIHRoZSBpbWFnZSBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseQogICAgICoKICAgICAqIEBwYXJhbSBib29sZWFuICRob3Jpem9udGFsIHRydWUgaWYgaG9yaXpvbnRhbCBmbGlwLCB2ZXJ0aWNhbCBvdGhlcndpc2UKICAgICAqLwogICAgZnVuY3Rpb24gZmxpcCgkaG9yaXpvbnRhbCkgCiAgICB7CiAgICAgICAgaWYoJGhvcml6b250YWwpCiAgICAgICAgICAgICR0aGlzLT5jb21tYW5kWydmbG9wJ10gPSAiLWZsb3AiOwogICAgICAgIGVsc2UKICAgICAgICAgICAgJHRoaXMtPmNvbW1hbmRbJ2ZsaXAnXSA9ICItZmxpcCI7CiAgICB9CiAgICAvKioKICAgICAqIHJvdGF0ZQogICAgICoKICAgICAqIEBwYXJhbSAgIGludCAgICAgYW5nbGUgICByb3RhdGlvbiBhbmdsZQogICAgICogQHBhcmFtICAgYXJyYXkgICBvcHRpb25zIG5vIG9wdGlvbiBhbGxvd2VkCiAgICAgKgogICAgICovCiAgICBmdW5jdGlvbiByb3RhdGUoJGFuZ2xlLCAkb3B0aW9ucz1udWxsKQogICAgewogICAgICAgIGlmICgnLScgPT0gJGFuZ2xlezB9KSB7CiAgICAgICAgICAgICRhbmdsZSA9IDM2MCAtIHN1YnN0cigkYW5nbGUsIDEpOwogICAgICAgIH0KICAgICAgICAgJHRoaXMtPmNvbW1hbmRbJ3JvdGF0ZSddID0gIi1yb3RhdGUgJGFuZ2xlIjsKICAgIH0gLy8gRW5kIHJvdGF0ZQoKICAgIC8qKgogICAgICogYWRkVGV4dAogICAgICoKICAgICAqIEBwYXJhbSAgIGFycmF5ICAgb3B0aW9ucyAgICAgQXJyYXkgY29udGFpbnMgb3B0aW9ucwogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0JyAgVGhlIHN0cmluZyB0byBkcmF3CiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAneCcgICAgIEhvcml6b250YWwgcG9zaXRpb24KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd5JyAgICAgVmVydGljYWwgUG9zaXRpb24KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb2xvcicgRm9udCBjb2xvcgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQnICBGb250IHRvIGJlIHVzZWQKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXplJyAgU2l6ZSBvZiB0aGUgZm9udHMgaW4gcGl4ZWwKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXNpemVfZmlyc3QnICBUZWxsIGlmIHRoZSBpbWFnZSBoYXMgdG8gYmUgcmVzaXplZAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZSBkcmF3aW5nIHRoZSB0ZXh0CiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAqCiAgICAgKiBAcmV0dXJuIG5vbmUKICAgICAqIEBzZWUgUEVBUjo6aXNFcnJvcigpCiAgICAgKi8KICAgIGZ1bmN0aW9uIGFkZFRleHQoJHBhcmFtcykKICAgIHsKICAgICAgICAkZGVmYXVsdF9wYXJhbXMgPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dCcgPT4gJ1RoaXMgaXMgVGV4dCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3gnID0+IDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd5JyA9PiAyMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InID0+ICdyZWQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250JyA9PiAnQXJpYWwudHRmJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzaXplX2ZpcnN0JyA9PiBmYWxzZSAvLyBDYXJyeSBvdXQgdGhlIHNjYWxpbmcgb2YgdGhlIGltYWdlIGJlZm9yZSBhbm5vdGF0aW9uPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICRwYXJhbXMgPSBhcnJheV9tZXJnZSgkZGVmYXVsdF9wYXJhbXMsICRwYXJhbXMpOwogICAgICAgICBleHRyYWN0KCRwYXJhbXMpOwogICAgICAgICBpZiAodHJ1ZSA9PT0gJHJlc2l6ZV9maXJzdCkgewogICAgICAgICAgICAgLy8gU2V0IHRoZSBrZXkgc28gdGhhdCB0aGlzIHdpbGwgYmUgdGhlIGxhc3QgaXRlbSBpbiB0aGUgYXJyYXkKICAgICAgICAgICAgJGtleSA9ICd6dGV4dCc7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRrZXkgPSAndGV4dCc7CiAgICAgICAgIH0KICAgICAgICAgJHRoaXMtPmNvbW1hbmRbJGtleV0gPSAiLWZvbnQgJGZvbnQgLWZpbGwgJGNvbG9yIC1kcmF3ICd0ZXh0ICR4LCR5IFwiJHRleHRcIiciOwogICAgICAgICAvLyBQcm9kdWNpbmcgZXJyb3I6IGdzOiBub3QgZm91bmQgZ3M6IG5vdCBmb3VuZCBjb252ZXJ0OiBQb3N0c2NyaXB0IGRlbGVnYXRlIGZhaWxlZCBbTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeV0uCiAgICB9IC8vIEVuZCBhZGRUZXh0CgogICAgLyoqCiAgICAgKiBBZGp1c3QgdGhlIGltYWdlIGdhbW1hCiAgICAgKgogICAgICogQHBhcmFtIGZsb2F0ICRvdXRwdXRnYW1tYQogICAgICoKICAgICAqIEByZXR1cm4gbm9uZQogICAgICovCiAgICBmdW5jdGlvbiBnYW1tYSgkb3V0cHV0Z2FtbWE9MS4wKSB7CiAgICAgICAgJHRoaXMtPmNvbW1hbmRbJ2dhbW1hJ10gPSAiLWdhbW1hICRvdXRwdXRnYW1tYSI7CiAgICB9CgogICAgLyoqCiAgICAgKiBTYXZlIHRoZSBpbWFnZSBmaWxlCiAgICAgKgogICAgICogQHBhcmFtICRmaWxlbmFtZSBzdHJpbmcgIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIHdyaXRlIHRvCiAgICAgKiBAcGFyYW0gJHF1YWxpdHkgIHF1YWxpdHkgaW1hZ2UgZHBpLCBkZWZhdWx0PTc1CiAgICAgKiBAcGFyYW0gJHR5cGUgICAgIHN0cmluZyAgKEpQRyxQTkcuLi4pCiAgICAgKgogICAgICogQHJldHVybiBub25lCiAgICAgKi8KICAgIGZ1bmN0aW9uIHNhdmUoJGZpbGVuYW1lLCAkdHlwZT0nJywgJHF1YWxpdHkgPSA4NSkKICAgIHsKICAgICAgICAkdHlwZSA9PSAnJyA/ICR0aGlzLT50eXBlIDogJHR5cGU7CiAgICAgICAgJGNtZCA9ICcnIC4gSU1BR0VfVFJBTlNGT1JNX0xJQl9QQVRIIC4gJ2NvbnZlcnQgJzsKCQkkY21kIC49IGltcGxvZGUoJyAnLCAkdGhpcy0+Y29tbWFuZCkgLiAiIC1xdWFsaXR5ICRxdWFsaXR5ICI7CgkJJGNtZCAuPSAnIicuKCR0aGlzLT5pbWFnZSkgLiAnIiAiJyAuICgkZmlsZW5hbWUpIC4gJyIgMj4mMSc7CiAgICAgICAgCiAgICAgICAgLy8kY21kID0gc3RyX3JlcGxhY2UoJy8nLCAnXFwnLCAkY21kKTsKCQkvL2VjaG8oJGNtZC4nPGJyPicpOwogICAgICAgIGV4ZWMoJGNtZCwkcmV0dmFsKTsKICAgIH0gLy8gRW5kIHNhdmUKCiAgICAvKioKICAgICAqIERpc3BsYXkgaW1hZ2Ugd2l0aG91dCBzYXZpbmcgYW5kIGxvc2UgY2hhbmdlcwogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgdHlwZSAoSlBHLFBORy4uLik7CiAgICAgKiBAcGFyYW0gaW50IHF1YWxpdHkgNzUKICAgICAqCiAgICAgKiBAcmV0dXJuIG5vbmUKICAgICAqLwogICAgZnVuY3Rpb24gZGlzcGxheSgkdHlwZSA9ICcnLCAkcXVhbGl0eSA9IDc1KQogICAgewogICAgICAgIGlmICgkdHlwZSA9PSAnJykgewogICAgICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtdHlwZTogaW1hZ2UvJyAuICR0aGlzLT50eXBlKTsKICAgICAgICAgICAgcGFzc3RocnUoSU1BR0VfVFJBTlNGT1JNX0xJQl9QQVRIIC4gJ2NvbnZlcnQgJyAuIGltcGxvZGUoJyAnLCAkdGhpcy0+Y29tbWFuZCkgLiAiIC1xdWFsaXR5ICRxdWFsaXR5ICIgIC4gZXNjYXBlc2hlbGxhcmcoJHRoaXMtPmltYWdlKSAuICcgJyAuIHN0cnRvdXBwZXIoJHRoaXMtPnR5cGUpIC4gIjotIik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaGVhZGVyKCdDb250ZW50LXR5cGU6IGltYWdlLycgLiAkdHlwZSk7CiAgICAgICAgICAgIHBhc3N0aHJ1KElNQUdFX1RSQU5TRk9STV9MSUJfUEFUSCAuICdjb252ZXJ0ICcgLiBpbXBsb2RlKCcgJywgJHRoaXMtPmNvbW1hbmQpIC4gIiAtcXVhbGl0eSAkcXVhbGl0eSAiICAuIGVzY2FwZXNoZWxsYXJnKCR0aGlzLT5pbWFnZSkgLiAnICcgLiBzdHJ0b3VwcGVyKCR0eXBlKSAuICI6LSIpOwogICAgICAgIH0KICAgIH0KCgogICAgLyoqCiAgICAgKiBEZXN0cm95IGltYWdlIGhhbmRsZQogICAgICoKICAgICAqIEByZXR1cm4gbm9uZQogICAgICovCiAgICBmdW5jdGlvbiBmcmVlKCkKICAgIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCn0gLy8gRW5kIGNsYXNzIEltYWdlSU0KPz4K]]></data>
	</file>
	<file>
	  <filename>/lib/external/Image/ImageEditor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEltYWdlIEVkaXRvci4gRWRpdGluZyB0b29scywgY3JvcCwgcm90YXRlLCBzY2FsZSBhbmQgc2F2ZS4KICogQGF1dGhvciAkQXV0aG9yOiBXZWkgWmh1byAkCiAqIEB2ZXJzaW9uICRJZDogSW1hZ2VFZGl0b3IucGhwIDQxNjkgMjAwNy0wOS0yMSAwNjoyODo0OVogc2lsbWFyaWxsaW9uICQKICogQHBhY2thZ2UgSW1hZ2VNYW5hZ2VyCiAqLwoKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLiIvVHJhbnNmb3JtLnBocCIpOwoKLyoqCiAqIEhhbmRsZXMgdGhlIGJhc2ljIGltYWdlIGVkaXRpbmcgY2FwYmFiaWxpdGllcy4KICogQGF1dGhvciAkQXV0aG9yOiBXZWkgWmh1byAkCiAqIEB2ZXJzaW9uICRJZDogSW1hZ2VFZGl0b3IucGhwIDQxNjkgMjAwNy0wOS0yMSAwNjoyODo0OVogc2lsbWFyaWxsaW9uICQKICogQHBhY2thZ2UgSW1hZ2VNYW5hZ2VyCiAqIEBzdWJwYWNrYWdlIEVkaXRvcgogKi8KY2xhc3MgSW1hZ2VFZGl0b3IgCnsKCS8qKgoJICogSW1hZ2VNYW5hZ2VyIGluc3RhbmNlLgoJICovCgl2YXIgJG1hbmFnZXI7CgoJLyoqCgkgKiB1c2VyIGJhc2VkIG9uIElQIGFkZHJlc3MKCSAqLwoJdmFyICRfdWlkOwoKCS8qKgoJICogdG1wIGZpbGUgc3RvcmFnZSB0aW1lLgoJICovCgl2YXIgJGxhcHNlX3RpbWUgPTkwMDsgLy8xNSBtaW5zCgoJdmFyICRmaWxlc2F2ZWQgPSAwOwoKCS8qKgoJICogQ3JlYXRlIGEgbmV3IEltYWdlRWRpdG9yIGluc3RhbmNlLiBFZGl0aW5nIHJlcXVpcmVzIGEgCgkgKiB0bXAgZmlsZSwgd2hpY2ggaXMgc2F2ZWQgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHdoZXJlIHRoZQoJICogaW1hZ2UgaXMgZWRpdGVkLiBUaGUgdG1wIGZpbGUgaXMgYXNzaWduZWQgYnkgbWQ1IGhhc2ggb2YgdGhlCgkgKiB1c2VyIElQIGFkZHJlc3MuIFRoaXMgaGFzaGVkIGlzIHVzZWQgYXMgYW4gSUQgZm9yIGNsZWFuaW5nIHVwCgkgKiB0aGUgdG1wIGZpbGVzLiBJbiBhZGRpdGlvbiwgYW55IHRtcCBmaWxlcyBvbGRlciB0aGFuIHRoZQoJICogdGhlIHNwZWNpZmllZCBwZXJpb2Qgd2lsbCBiZSBkZWxldGVkLgoJICogQHBhcmFtIEltYWdlTWFuYWdlciAkbWFuYWdlciB0aGUgaW1hZ2UgbWFuYWdlciwgd2UgbmVlZCB0aGlzCgkgKiBmb3Igc29tZSBmaWxlIGFuZCBwYXRoIGhhbmRsaW5nIGZ1bmN0aW9ucy4KCSAqLwoJZnVuY3Rpb24gSW1hZ2VFZGl0b3IoJG1hbmFnZXIpIAoJewoJCSR0aGlzLT5tYW5hZ2VyID0gJG1hbmFnZXI7CgkJJHRoaXMtPl91aWQgPSBtZDUoJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10pOwoJfQoJCgkvKioKCSAqIERpZCB3ZSBzYXZlIGEgZmlsZT8KCSAqIEByZXR1cm4gaW50IDEgaWYgdGhlIGZpbGUgd2FzIHNhdmVkIHN1Y2Vzc2Z1bGx5LCAKCSAqIDAgbm8gc2F2ZSBvcGVyYXRpb24sIC0xIGZpbGUgc2F2ZSBlcnJvci4KCSAqLwoJZnVuY3Rpb24gaXNGaWxlU2F2ZWQoKSAKCXsKCQlSZXR1cm4gJHRoaXMtPmZpbGVzYXZlZDsKCX0KCgkvKioKCSAqIFByb2Nlc3MgdGhlIGltYWdlLCBpZiBub3QgYWN0aW9uLCBqdXN0IGRpc3BsYXkgdGhlIGltYWdlLgoJICogQHJldHVybiBhcnJheSB3aXRoIGltYWdlIGluZm9ybWF0aW9uLCBlbXB0eSBhcnJheSBpZiBub3QgYW4gaW1hZ2UuCgkgKiA8Y29kZT5hcnJheSgnc3JjJz0+J3VybCBvZiB0aGUgaW1hZ2UnLCAnZGltZW5zaW9ucyc9Pid3aWR0aD0ieHgiIGhlaWdodD0ieXkiJywKCSAqICdmaWxlJz0+J2ltYWdlIGZpbGUsIHJlbGF0aXZlJywgJ2Z1bGxwYXRoJz0+J2Z1bGwgcGF0aCB0byB0aGUgaW1hZ2UnKTs8L2NvZGU+CgkgKi8KCWZ1bmN0aW9uIHByb2Nlc3NJbWFnZSgpIAoJewoJCWlmKGlzc2V0KCRfR0VUWydpbWcnXSkpCgkJCSRyZWxhdGl2ZSA9IHJhd3VybGRlY29kZSgkX0dFVFsnaW1nJ10pOwoJCWVsc2UKCQkJUmV0dXJuIGFycmF5KCk7CgkJCgkJLy8kcmVsYXRpdmUgPSAnL1NlcmllczIwMDROb3RlRnJvbnQuanBnJzsKCgkJJGltZ1VSTCA9ICR0aGlzLT5tYW5hZ2VyLT5nZXRGaWxlVVJMKCRyZWxhdGl2ZSk7CgkJJGZ1bGxwYXRoID0gJHRoaXMtPm1hbmFnZXItPmdldEZ1bGxQYXRoKCRyZWxhdGl2ZSk7CgkJCgkJJGltZ0luZm8gPSBAZ2V0SW1hZ2VTaXplKCRmdWxscGF0aCk7CgkJaWYoIWlzX2FycmF5KCRpbWdJbmZvKSkKCQkJUmV0dXJuIGFycmF5KCk7CgoJCSRhY3Rpb24gPSAkdGhpcy0+Z2V0QWN0aW9uKCk7CgoJCWlmKCFpc19udWxsKCRhY3Rpb24pKQoJCXsKCQkJJGltYWdlID0gJHRoaXMtPnByb2Nlc3NBY3Rpb24oJGFjdGlvbiwgJHJlbGF0aXZlLCAkZnVsbHBhdGgpOwoJCX0KCQllbHNlCgkJewoJCQkkaW1hZ2VbJ3NyYyddID0gJGltZ1VSTDsKCQkJJGltYWdlWydkaW1lbnNpb25zJ10gPSAkaW1nSW5mb1szXTsKCQkJJGltYWdlWydmaWxlJ10gPSAkcmVsYXRpdmU7CgkJCSRpbWFnZVsnZnVsbHBhdGgnXSA9ICRmdWxscGF0aDsKCQl9CgoJCVJldHVybiAkaW1hZ2U7Cgl9CgoJLyoqCgkgKiBQcm9jZXNzIHRoZSBhY3Rpb25zLCBjcm9wLCBzY2FsZShyZXNpemUpLCByb3RhdGUsIGZsaXAsIGFuZCBzYXZlLgoJICogV2hlbiBldmVyIGFuIGFjdGlvbiBpcyBwZXJmb3JtZWQsIHRoZSByZXN1bHQgaXMgc2F2ZSBpbnRvIGEKCSAqIHRlbXBvcmFyeSBpbWFnZSBmaWxlLCBzZWUgY3JlYXRlVW5pcXVlIG9uIHRoZSBmaWxlbmFtZSBzcGVjcy4KCSAqIEl0IGRvZXMgbm90IHJldHVybiB0aGUgc2F2ZWQgZmlsZSwgYWx3YXkgcmV0dXJuaW5nIHRoZSB0bXAgZmlsZS4KCSAqIEBwYXJhbSBzdHJpbmcgJGFjdGlvbiwgc2hvdWxkIGJlICdjcm9wJywgJ3NjYWxlJywgJ3JvdGF0ZScsJ2ZsaXAnLCBvciAnc2F2ZScKCSAqIEBwYXJhbSBzdHJpbmcgJHJlbGF0aXZlIHRoZSByZWxhdGl2ZSBpbWFnZSBmaWxlbmFtZQoJICogQHBhcmFtIHN0cmluZyAkZnVsbHBhdGggdGhlIGZ1bGxwYXRoIHRvIHRoZSBpbWFnZSBmaWxlCgkgKiBAcmV0dXJuIGFycmF5IHdpdGggaW1hZ2UgaW5mb3JtYXRpb24KCSAqIDxjb2RlPmFycmF5KCdzcmMnPT4ndXJsIG9mIHRoZSBpbWFnZScsICdkaW1lbnNpb25zJz0+J3dpZHRoPSJ4eCIgaGVpZ2h0PSJ5eSInLAoJICogJ2ZpbGUnPT4naW1hZ2UgZmlsZSwgcmVsYXRpdmUnLCAnZnVsbHBhdGgnPT4nZnVsbCBwYXRoIHRvIHRoZSBpbWFnZScpOzwvY29kZT4KCSAqLwoJZnVuY3Rpb24gcHJvY2Vzc0FjdGlvbigkYWN0aW9uLCAkcmVsYXRpdmUsICRmdWxscGF0aCkgCgl7CgkJJHBhcmFtcyA9ICcnOwoJCQoJCWlmKGlzc2V0KCRfR0VUWydwYXJhbXMnXSkpCgkJCSRwYXJhbXMgPSAkX0dFVFsncGFyYW1zJ107CgoJCSR2YWx1ZXMgPSAgZXhwbG9kZSgnLCcsJHBhcmFtcyw0KTsKCQkkc2F2ZUZpbGUgPSAkdGhpcy0+Z2V0U2F2ZUZpbGVOYW1lKCR2YWx1ZXNbMF0pOwoKCQkkaW1nID0gSW1hZ2VfVHJhbnNmb3JtOjpmYWN0b3J5KElNQUdFX0NMQVNTKTsKCQkkaW1nLT5sb2FkKCRmdWxscGF0aCk7CgoJCXN3aXRjaCAoJGFjdGlvbikgCgkJewoJCQljYXNlICdjcm9wJzoKCQkJCSRpbWctPmNyb3AoaW50dmFsKCR2YWx1ZXNbMF0pLGludHZhbCgkdmFsdWVzWzFdKSwKCQkJCQkJCWludHZhbCgkdmFsdWVzWzJdKSxpbnR2YWwoJHZhbHVlc1szXSkpOwoJCQlicmVhazsKCQkJY2FzZSAnc2NhbGUnOgoJCQkJJGltZy0+cmVzaXplKGludHZhbCgkdmFsdWVzWzBdKSxpbnR2YWwoJHZhbHVlc1sxXSkpOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ3JvdGF0ZSc6CgkJCQkkaW1nLT5yb3RhdGUoZmxvYXR2YWwoJHZhbHVlc1swXSkpOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2ZsaXAnOgoJCQkJaWYgKCR2YWx1ZXNbMF0gPT0gJ2hveicpCgkJCQkJJGltZy0+ZmxpcCh0cnVlKTsKCQkJCWVsc2UgaWYoJHZhbHVlc1swXSA9PSAndmVyJykgCgkJCQkJJGltZy0+ZmxpcChmYWxzZSk7CgkJCQlicmVhazsKCQkJY2FzZSAnc2F2ZSc6CgkJCQlpZighaXNfbnVsbCgkc2F2ZUZpbGUpKQoJCQkJewoJCQkJCSRxdWFsaXR5ID0gaW50dmFsKCR2YWx1ZXNbMV0pOwoJCSAgICAgICAgICAgIGlmKCRxdWFsaXR5IDwwKSAkcXVhbGl0eSA9IDg1OwoJCQkJCSRuZXdTYXZlRmlsZSA9ICR0aGlzLT5tYWtlUmVsYXRpdmUoJHJlbGF0aXZlLCAkc2F2ZUZpbGUpOwoJCQkJCSRuZXdTYXZlRmlsZSA9ICR0aGlzLT5nZXRVbmlxdWVGaWxlbmFtZSgkbmV3U2F2ZUZpbGUpOwoJCQkJCQoJCQkJCS8vZ2V0IHVuaXF1ZSBmaWxlbmFtZSBqdXN0IHJldHVybnMgdGhlIGZpbGVuYW1lLCBzbwoJCQkJCS8vd2UgbmVlZCB0byBtYWtlIHRoZSByZWxhdGl2ZSBwYXRoIG9uY2UgbW9yZS4KCQkJCQkkbmV3U2F2ZUZpbGUgPSAkdGhpcy0+bWFrZVJlbGF0aXZlKCRyZWxhdGl2ZSwgJG5ld1NhdmVGaWxlKTsKCQkJCQkkbmV3U2F2ZUZ1bGxwYXRoID0gJHRoaXMtPm1hbmFnZXItPmdldEZ1bGxQYXRoKCRuZXdTYXZlRmlsZSk7CgkJCQkJJGltZy0+c2F2ZSgkbmV3U2F2ZUZ1bGxwYXRoLCAkdmFsdWVzWzBdLCAkcXVhbGl0eSk7CgkJCQkJaWYoaXNfZmlsZSgkbmV3U2F2ZUZ1bGxwYXRoKSkKCQkJCQkJJHRoaXMtPmZpbGVzYXZlZCA9IDE7CgkJCQkJZWxzZQoJCQkJCQkkdGhpcy0+ZmlsZXNhdmVkID0gLTE7CgkJCQl9CgkJCQlicmVhazsKCQl9CgkJCgkJLy9jcmVhdGUgdGhlIHRtcCBpbWFnZSBmaWxlCgkJJGZpbGVuYW1lID0gJHRoaXMtPmNyZWF0ZVVuaXF1ZSgkZnVsbHBhdGgpOwoJCSRuZXdSZWxhdGl2ZSA9ICR0aGlzLT5tYWtlUmVsYXRpdmUoJHJlbGF0aXZlLCAkZmlsZW5hbWUpOwoJCSRuZXdGdWxscGF0aCA9ICR0aGlzLT5tYW5hZ2VyLT5nZXRGdWxsUGF0aCgkbmV3UmVsYXRpdmUpOwoJCSRuZXdVUkwgPSAkdGhpcy0+bWFuYWdlci0+Z2V0RmlsZVVSTCgkbmV3UmVsYXRpdmUpOwoJCQoJCS8vc2F2ZSB0aGUgZmlsZS4KCQkkaW1nLT5zYXZlKCRuZXdGdWxscGF0aCk7CgkJJGltZy0+ZnJlZSgpOwoKCQkvL2dldCB0aGUgaW1hZ2UgaW5mb3JtYXRpb24KCQkkaW1nSW5mbyA9IEBnZXRpbWFnZXNpemUoJG5ld0Z1bGxwYXRoKTsKCgkJJGltYWdlWydzcmMnXSA9ICRuZXdVUkw7CgkJJGltYWdlWydkaW1lbnNpb25zJ10gPSAkaW1nSW5mb1szXTsKCQkkaW1hZ2VbJ2ZpbGUnXSA9ICRuZXdSZWxhdGl2ZTsKCQkkaW1hZ2VbJ2Z1bGxwYXRoJ10gPSAkbmV3RnVsbHBhdGg7CgoJCVJldHVybiAkaW1hZ2U7CgkKCX0KCgkvKioKCSAqIEdldCB0aGUgZmlsZSBuYW1lIGJhc2Ugb24gdGhlIHNhdmUgbmFtZQoJICogYW5kIHRoZSBzYXZlIHR5cGUuCgkgKiBAcGFyYW0gc3RyaW5nICR0eXBlIGltYWdlIHR5cGUsICdqcGVnJywgJ3BuZycsIG9yICdnaWYnCgkgKiBAcmV0dXJuIHN0cmluZyB0aGUgZmlsZW5hbWUgYWNjb3JkaW5nIHRvIHNhdmUgdHlwZQoJICovCglmdW5jdGlvbiBnZXRTYXZlRmlsZU5hbWUoJHR5cGUpIAoJewoJCWlmKCFpc3NldCgkX0dFVFsnZmlsZSddKSkKCQkJUmV0dXJuIG51bGw7CgoJCSRmaWxlbmFtZSA9IEZpbGVzOjplc2NhcGUocmF3dXJsZGVjb2RlKCRfR0VUWydmaWxlJ10pKTsKCQkkaW5kZXggPSBzdHJycG9zKCRmaWxlbmFtZSwnLicpOwoJCSRiYXNlID0gc3Vic3RyKCRmaWxlbmFtZSwwLCRpbmRleCk7CgkJJGV4dCA9IHN0cnRvbG93ZXIoc3Vic3RyKCRmaWxlbmFtZSwkaW5kZXgrMSxzdHJsZW4oJGZpbGVuYW1lKSkpOwoKCQlpZigkdHlwZSA9PSAnanBlZycgJiYgISgkZXh0PT0nanBlZycgfHwgJGV4dD09J2pwZycpKQoJCXsKCQkJUmV0dXJuICRiYXNlLicuanBlZyc7CgkJfQoJCWlmKCR0eXBlPT0ncG5nJyAmJiAkZXh0ICE9ICdwbmcnKQoJCQlSZXR1cm4gJGJhc2UuJy5wbmcnOwoJCWlmKCR0eXBlPT0nZ2lmJyAmJiAkZXh0ICE9ICdnaWYnKQoJCQlSZXR1cm4gJGJhc2UuJy5naWYnOwoKCQlSZXR1cm4gJGZpbGVuYW1lOwoJfQoKCS8qKgoJICogR2V0IHRoZSBkZWZhdWx0IHNhdmUgZmlsZSBuYW1lLCB1c2VkIGJ5IGVkaXRvci5waHAuCgkgKiBAcmV0dXJuIHN0cmluZyBhIHN1Z2dlc3RpdmUgZmlsZW5hbWUsIHRoaXMgc2hvdWxkIGJlIHVuaXF1ZQoJICovCglmdW5jdGlvbiBnZXREZWZhdWx0U2F2ZUZpbGUoKSAKCXsKCQlpZihpc3NldCgkX0dFVFsnaW1nJ10pKQoJCQkkcmVsYXRpdmUgPSByYXd1cmxkZWNvZGUoJF9HRVRbJ2ltZyddKTsKCQllbHNlCgkJCVJldHVybiBudWxsOwoKCQlSZXR1cm4gJHRoaXMtPmdldFVuaXF1ZUZpbGVuYW1lKCRyZWxhdGl2ZSk7Cgl9CgoJLyoqCgkgKiBHZXQgYSB1bmlxdWUgZmlsZW5hbWUuIElmIHRoZSBmaWxlIGV4aXN0cywgdGhlIGZpbGVuYW1lCgkgKiBiYXNlIGlzIGFwcGVuZGVkIHdpdGggYW4gaW5jcmVhc2luZyBpbnRlZ2VyLgoJICogQHBhcmFtIHN0cmluZyAkcmVsYXRpdmUgdGhlIHJlbGF0aXZlIGZpbGVuYW1lIHRvIHRoZSBiYXNlX2RpcgoJICogQHJldHVybiBzdHJpbmcgYSB1bmlxdWUgZmlsZW5hbWUgaW4gdGhlIGN1cnJlbnQgcGF0aAoJICovCglmdW5jdGlvbiBnZXRVbmlxdWVGaWxlbmFtZSgkcmVsYXRpdmUpIAoJewoJCSRmdWxscGF0aCA9ICR0aGlzLT5tYW5hZ2VyLT5nZXRGdWxsUGF0aCgkcmVsYXRpdmUpOwoJCQoJCSRwYXRoaW5mbyA9IHBhdGhpbmZvKCRmdWxscGF0aCk7CgoJCSRwYXRoID0gRmlsZXM6OmZpeFBhdGgoJHBhdGhpbmZvWydkaXJuYW1lJ10pOwoJCSRmaWxlID0gRmlsZXM6OmVzY2FwZSgkcGF0aGluZm9bJ2Jhc2VuYW1lJ10pOwoJCQoJCSRmaWxlbmFtZSA9ICRmaWxlOwoKCQkkZG90SW5kZXggPSBzdHJycG9zKCRmaWxlLCAnLicpOwoJCSRleHQgPSAnJzsKCgkJaWYoaXNfaW50KCRkb3RJbmRleCkpIAoJCXsKCQkJJGV4dCA9IHN1YnN0cigkZmlsZSwgJGRvdEluZGV4KTsKCQkJJGJhc2UgPSBzdWJzdHIoJGZpbGUsIDAsICRkb3RJbmRleCk7CgkJfQoKCQkkY291bnRlciA9IDA7CgkJd2hpbGUoaXNfZmlsZSgkcGF0aC4kZmlsZW5hbWUpKSAKCQl7CgkJCSRjb3VudGVyKys7CgkJCSRmaWxlbmFtZSA9ICRiYXNlLidfJy4kY291bnRlci4kZXh0OwoJCX0KCQkKCQlSZXR1cm4gJGZpbGVuYW1lOwoJCQoJfQoKCS8qKgoJICogU3BlY2lmaXkgdGhlIG9yaWdpbmFsIHJlbGF0aXZlIHBhdGgsIGEgbmV3IGZpbGVuYW1lCgkgKiBhbmQgcmV0dXJuIHRoZSBuZXcgZmlsZW5hbWUgd2l0aCByZWxhdGl2ZSBwYXRoLgoJICogaS5lLiAkcGF0aEEgKC1maWxlbmFtZSkgKyAkZmlsZQoJICogQHBhcmFtIHN0cmluZyAkcGF0aEEgdGhlIHJlbGF0aXZlIGZpbGUKCSAqIEBwYXJhbSBzdHJpbmcgJGZpbGUgdGhlIG5ldyBmaWxlbmFtZQoJICogQHJldHVybiBzdHJpbmcgcmVsYXRpdmUgcGF0aCB3aXRoIHRoZSBuZXcgZmlsZW5hbWUKCSAqLwoJZnVuY3Rpb24gbWFrZVJlbGF0aXZlKCRwYXRoQSwgJGZpbGUpIAoJewoJCSRpbmRleCA9IHN0cnJwb3MoJHBhdGhBLCcvJyk7CgkJaWYoIWlzX2ludCgkaW5kZXgpKQoJCQlSZXR1cm4gJGZpbGU7CgoJCSRwYXRoID0gc3Vic3RyKCRwYXRoQSwgMCwgJGluZGV4KTsKCQlSZXR1cm4gRmlsZXM6OmZpeFBhdGgoJHBhdGgpLiRmaWxlOwoJfQoKCS8qKgoJICogR2V0IHRoZSBhY3Rpb24gR0VUIHBhcmFtZXRlcgoJICogQHJldHVybiBzdHJpbmcgYWN0aW9uIHBhcmFtZXRlcgoJICovCglmdW5jdGlvbiBnZXRBY3Rpb24oKSAKCXsKCQkkYWN0aW9uID0gbnVsbDsKCQlpZihpc3NldCgkX0dFVFsnYWN0aW9uJ10pKQoJCQkkYWN0aW9uID0gJF9HRVRbJ2FjdGlvbiddOwoJCVJldHVybiAkYWN0aW9uOwoJfQoKCS8qKgoJICogR2VuZXJhdGUgYSB1bmlxdWUgc3RyaW5nIGJhc2VkIG9uIG1kNShtaWNyb3RpbWUoKSkuCgkgKiBXZWxsIG5vdCBzbyB1bmlxZSwgYXMgaXQgaXMgbGltaXRlZCB0byA2IGNoYXJhY3RlcnMKCSAqIEByZXR1cm4gc3RyaW5nIHVuaXF1ZSBzdHJpbmcuCgkgKi8KICAgIGZ1bmN0aW9uIHVuaXF1ZVN0cigpCiAgICB7CiAgICAgIHJldHVybiBzdWJzdHIobWQ1KG1pY3JvdGltZSgpKSwwLDYpOwogICAgfQoKCS8qKgoJICogQ3JlYXRlIHVuaXF1ZSB0bXAgaW1hZ2UgZmlsZSBuYW1lLgoJICogVGhlIGZpbGVuYW1lIGlzIGJhc2VkIG9uIHRoZSB0bXAgZmlsZSBwcmVmaXgKCSAqIHNwZWNpZmllZCBpbiBjb25maWcuaW5jLnBocCBwbHVzIAoJICogdGhlIFVJRCAoYmFzaWNhbGx5IGEgbWQ1IG9mIHRoZSByZW1vdGUgSVApCgkgKiBhbmQgc29tZSByYW5kb20gNiBjaGFyYWN0ZXIgc3RyaW5nLgoJICogVGhpcyBmdW5jdGlvbiBhbHNvIGNhbGxzIHRvIGNsZWFuIHVwIHRoZSB0bXAgZmlsZXMuCgkgKiBAcGFyYW0gc3RyaW5nICRmaWxlIHRoZSBmdWxscGF0aCB0byBhIGZpbGUKCSAqIEByZXR1cm4gc3RyaW5nIGEgdW5pcXVlIGZpbGVuYW1lIGZvciB0aGF0IHBhdGgKCSAqIE5PVEU6IGl0IG9ubHkgcmV0dXJucyB0aGUgZmlsZW5hbWUsIHBhdGggbm8gaW5jbHVkZWQuCgkgKi8KCWZ1bmN0aW9uIGNyZWF0ZVVuaXF1ZSgkZmlsZSkgCgl7CgkJJHBhdGhpbmZvID0gcGF0aGluZm8oJGZpbGUpOwoJCSRwYXRoID0gRmlsZXM6OmZpeFBhdGgoJHBhdGhpbmZvWydkaXJuYW1lJ10pOwoJCSRpbWdUeXBlID0gJHRoaXMtPmdldEltYWdlVHlwZSgkZmlsZSk7CgoJCSR1bmlxdWVfc3RyID0gJHRoaXMtPm1hbmFnZXItPmdldFRtcFByZWZpeCgpLiR0aGlzLT5fdWlkLidfJy4kdGhpcy0+dW5pcXVlU3RyKCkuIi4iLiRpbWdUeXBlOwoKCSAgIC8vbWFrZSBzdXJlIHRoZSB0aGUgdW5pcXVlIHRlbXAgZmlsZSBkb2VzIG5vdCBleGlzdHMKICAgICAgICB3aGlsZSAoZmlsZV9leGlzdHMoJHBhdGguJHVuaXF1ZV9zdHIpKQogICAgICAgIHsKICAgICAgICAgICAgJHVuaXF1ZV9zdHIgPSAkdGhpcy0+bWFuYWdlci0+Z2V0VG1wUHJlZml4KCkuJHRoaXMtPl91aWQuJ18nLiR0aGlzLT51bmlxdWVTdHIoKS4iLiIuJGltZ1R5cGU7CiAgICAgICAgfQoKCQkkdGhpcy0+Y2xlYW5VcCgkcGF0aCwkcGF0aGluZm9bJ2Jhc2VuYW1lJ10pOwoKCQlSZXR1cm4gJHVuaXF1ZV9zdHI7Cgl9CgoJLyoqCgkgKiBEZWxldGUgYW55IHRtcCBpbWFnZSBmaWxlcy4KCSAqIEBwYXJhbSBzdHJpbmcgJHBhdGggdGhlIGZ1bGwgcGF0aCAKCSAqIHdoZXJlIHRoZSBjbGVhbiBzaG91bGQgdGFrZSBwbGFjZS4KCSAqLwoJZnVuY3Rpb24gY2xlYW5VcCgkcGF0aCwkZmlsZSkgCgl7CgkJJHBhdGggPSBGaWxlczo6Zml4UGF0aCgkcGF0aCk7CgoJCWlmKCFpc19kaXIoJHBhdGgpKQoJCQlSZXR1cm4gZmFsc2U7CgoJCSRkID0gQGRpcigkcGF0aCk7CgkJCgkJJHRtcCA9ICR0aGlzLT5tYW5hZ2VyLT5nZXRUbXBQcmVmaXgoKTsKCQkkdG1wTGVuID0gc3RybGVuKCR0bXApOwoKCQkkcHJlZml4ID0gJHRtcC4kdGhpcy0+X3VpZDsKCQkkbGVuID0gc3RybGVuKCRwcmVmaXgpOwoKCQl3aGlsZSAoZmFsc2UgIT0gKCRlbnRyeSA9ICRkLT5yZWFkKCkpKSAKCQl7CgkJCS8vZWNobyAkZW50cnkuIjxicj4iOwoJCQlpZihpc19maWxlKCRwYXRoLiRlbnRyeSkgJiYgJHRoaXMtPm1hbmFnZXItPmlzVG1wRmlsZSgkZW50cnkpKQoJCQl7CgkJCQlpZihzdWJzdHIoJGVudHJ5LDAsJGxlbik9PSRwcmVmaXggJiYgJGVudHJ5ICE9ICRmaWxlKQoJCQkJCUZpbGVzOjpkZWxGaWxlKCRwYXRoLiRlbnRyeSk7CgkJCQllbHNlIGlmKHN1YnN0cigkZW50cnksMCwkdG1wTGVuKT09JHRtcCAmJiAkZW50cnkgIT0gJGZpbGUpCgkJCQl7CgkJCQkJaWYoZmlsZW10aW1lKCRwYXRoLiRlbnRyeSkrJHRoaXMtPmxhcHNlX3RpbWUgPCB0aW1lKCkpCgkJCQkJCUZpbGVzOjpkZWxGaWxlKCRwYXRoLiRlbnRyeSk7CgkJCQl9CgkJCX0KCQl9CgkJJGQtPmNsb3NlKCk7Cgl9CgoJLyoqCgkgKiBHZXQgdGhlIGltYWdlIHR5cGUgYmFzZSBvbiBhbiBpbWFnZSBmaWxlLgoJICogQHBhcmFtIHN0cmluZyAkZmlsZSB0aGUgZnVsbCBwYXRoIHRvIHRoZSBpbWFnZSBmaWxlLgoJICogQHJldHVybiBzdHJpbmcgb2YgZWl0aGVyICdnaWYnLCAnanBlZycsICdwbmcnIG9yICdibXAnCgkgKiBvdGhlcndpc2UgaXQgd2lsbCByZXR1cm4gbnVsbC4KCSAqLwoJZnVuY3Rpb24gZ2V0SW1hZ2VUeXBlKCRmaWxlKSAKCXsKCQkkaW1hZ2VJbmZvID0gQGdldEltYWdlU2l6ZSgkZmlsZSk7CgoJCWlmKCFpc19hcnJheSgkaW1hZ2VJbmZvKSkKCQkJUmV0dXJuIG51bGw7CgoJCXN3aXRjaCgkaW1hZ2VJbmZvWzJdKSAKCQl7CgkJCWNhc2UgMToKCQkJCVJldHVybiAnZ2lmJzsKCQkJY2FzZSAyOgoJCQkJUmV0dXJuICdqcGVnJzsKCQkJY2FzZSAzOgoJCQkJUmV0dXJuICdwbmcnOwoJCQljYXNlIDY6CgkJCQlSZXR1cm4gJ2JtcCc7CgkJfQoKCQlSZXR1cm4gbnVsbDsKCX0KCgkvKioKCSAqIENoZWNrIGlmIHRoZSBzcGVjaWZpZWQgaW1hZ2UgY2FuIGJlIGVkaXQgYnkgR0QKCSAqIG1haW5seSB0byBjaGVjayB0aGF0IEdEIGNhbiByZWFkIGFuZCBzYXZlIEdJRnMKCSAqIEByZXR1cm4gaW50IDAgaWYgaXQgaXMgbm90IGEgR0lGIGZpbGUsIDEgaXMgR0lGIGlzIGVkaXRhYmxlLCAtMSBpZiBub3QgZWRpdGFibGUuCgkgKi8KCWZ1bmN0aW9uIGlzR0RFZGl0YWJsZSgpIAoJewoJCWlmKGlzc2V0KCRfR0VUWydpbWcnXSkpCgkJCSRyZWxhdGl2ZSA9IHJhd3VybGRlY29kZSgkX0dFVFsnaW1nJ10pOwoJCWVsc2UKCQkJUmV0dXJuIDA7CgkJaWYoSU1BR0VfQ0xBU1MgIT0gJ0dEJykKCQkJUmV0dXJuIDA7CgoJCSRmdWxscGF0aCA9ICR0aGlzLT5tYW5hZ2VyLT5nZXRGdWxsUGF0aCgkcmVsYXRpdmUpOwoKCQkkdHlwZSA9ICR0aGlzLT5nZXRJbWFnZVR5cGUoJGZ1bGxwYXRoKTsKCQlpZigkdHlwZSAhPSAnZ2lmJykKCQkJUmV0dXJuIDA7CgoJCWlmKGZ1bmN0aW9uX2V4aXN0cyhzdHJ0b2xvd2VyKCdJbWFnZUNyZWF0ZUZyb20nLiR0eXBlKSkKCQkJJiYgZnVuY3Rpb25fZXhpc3RzKHN0cnRvbG93ZXIoJ2ltYWdlJy4kdHlwZSkpKQoJCQlSZXR1cm4gMTsKCQllbHNlCgkJCVJldHVybiAtMTsKCX0KCgkvKioKCSAqIENoZWNrIGlmIEdJRiBjYW4gYmUgZWRpdCBieSBHRC4KCSAqIEByZXR1cm4gaW50IDAgaWYgaXQgaXMgbm90IHVzaW5nIHRoZSBHRCBsaWJyYXJ5LCAxIGlzIEdJRiBpcyBlZGl0YWJsZSwgLTEgaWYgbm90IGVkaXRhYmxlLgoJICovCglmdW5jdGlvbiBpc0dER0lGQWJsZSgpIAoJewoJCWlmKElNQUdFX0NMQVNTICE9ICdHRCcpCgkJCVJldHVybiAwOwoKCQlpZihmdW5jdGlvbl9leGlzdHMoJ0ltYWdlQ3JlYXRlRnJvbUdpZicpCgkJCSYmIGZ1bmN0aW9uX2V4aXN0cygnaW1hZ2VnaWYnKSkKCQkJUmV0dXJuIDE7CgkJZWxzZQoJCQlSZXR1cm4gLTE7Cgl9Cn0KCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/external/Image/ImageManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEltYWdlTWFuYWdlciwgbGlzdCBpbWFnZXMsIGRpcmVjdG9yaWVzLCBhbmQgdGh1bWJuYWlscy4KICogQGF1dGhvciAkQXV0aG9yOiBXZWkgWmh1byAkCiAqIEB2ZXJzaW9uICRJZDogSW1hZ2VNYW5hZ2VyLnBocCA4NTUzIDIwMTItMTItMDggMTc6MDM6MTBaIGNhbGd1eTEwMDAgJAogKiBAcGFja2FnZSBJbWFnZU1hbmFnZXIKICovCgpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9GaWxlcy5waHAnKTsKCi8qKgogKiBJbWFnZU1hbmFnZXIgQ2xhc3MuCiAqIEBhdXRob3IgJEF1dGhvcjogV2VpIFpodW8gJAogKiBAdmVyc2lvbiAkSWQ6IEltYWdlTWFuYWdlci5waHAgODU1MyAyMDEyLTEyLTA4IDE3OjAzOjEwWiBjYWxndXkxMDAwICQKICovCmNsYXNzIEltYWdlTWFuYWdlciAKewoJLyoqCgkgKiBDb25maWd1cmF0aW9uIGFycmF5LgoJICovCgl2YXIgJGNvbmZpZzsKCgkvKioKCSAqIEFycmF5IG9mIGRpcmVjdG9yeSBpbmZvcm1hdGlvbi4KCSAqLwoJdmFyICRkaXJzOwoKCS8qKgoJICogQ29uc3RydWN0b3IuIENyZWF0ZSBhIG5ldyBJbWFnZSBNYW5hZ2VyIGluc3RhbmNlLgoJICogQHBhcmFtIGFycmF5ICRjb25maWcgY29uZmlndXJhdGlvbiBhcnJheSwgc2VlIGNvbmZpZy5pbmMucGhwCgkgKi8KCWZ1bmN0aW9uIEltYWdlTWFuYWdlcigkY29uZmlnKSAKCXsKCQkkdGhpcy0+Y29uZmlnID0gJGNvbmZpZzsKCX0KCgkvKioKCSAqIEdldCB0aGUgYmFzZSBkaXJlY3RvcnkuCgkgKiBAcmV0dXJuIHN0cmluZyBiYXNlIGRpciwgc2VlIGNvbmZpZy5pbmMucGhwCgkgKi8KCWZ1bmN0aW9uIGdldEJhc2VEaXIoKSAKCXsKCQlSZXR1cm4gJHRoaXMtPmNvbmZpZ1snYmFzZV9kaXInXTsKCX0KCgkvKioKCSAqIEdldCB0aGUgYmFzZSBVUkwuCgkgKiBAcmV0dXJuIHN0cmluZyBiYXNlIHVybCwgc2VlIGNvbmZpZy5pbmMucGhwCgkgKi8KCWZ1bmN0aW9uIGdldEJhc2VVUkwoKSAKCXsKCQlSZXR1cm4gJHRoaXMtPmNvbmZpZ1snYmFzZV91cmwnXTsKCX0KCglmdW5jdGlvbiBpc1ZhbGlkQmFzZSgpCgl7CgkJcmV0dXJuIGlzX2RpcigkdGhpcy0+Z2V0QmFzZURpcigpKTsKCX0KCgkvKioKCSAqIEdldCB0aGUgdG1wIGZpbGUgcHJlZml4LgogICAgICogQHJldHVybiBzdHJpbmcgdG1wIGZpbGUgcHJlZml4LgoJICovCglmdW5jdGlvbiBnZXRUbXBQcmVmaXgoKSAKCXsKCQlSZXR1cm4gJHRoaXMtPmNvbmZpZ1sndG1wX3ByZWZpeCddOwoJfQoKCS8qKgoJICogR2V0IHRoZSBzdWIgZGlyZWN0b3JpZXMgaW4gdGhlIGJhc2UgZGlyLgoJICogRWFjaCBhcnJheSBlbGVtZW50IGNvbnRhaW4KCSAqIHRoZSByZWxhdGl2ZSBwYXRoIChyZWxhdGl2ZSB0byB0aGUgYmFzZSBkaXIpIGFzIGtleSBhbmQgdGhlIAoJICogZnVsbCBwYXRoIGFzIHZhbHVlLgoJICogQHJldHVybiBhcnJheSBvZiBzdWIgZGlyZWN0cmllcwoJICogPGNvZGU+YXJyYXkoJ3BhdGggbmFtZScgPT4gJ2Z1bGwgZGlyZWN0b3J5IHBhdGgnLCAuLi4pPC9jb2RlPgoJICovCglmdW5jdGlvbiBnZXREaXJzKCkgCgl7CgkJaWYoaXNfbnVsbCgkdGhpcy0+ZGlycykpCgkJewoJCQkkZGlycyA9ICR0aGlzLT5fZGlycygkdGhpcy0+Z2V0QmFzZURpcigpLCcvJyk7CgkJCWtzb3J0KCRkaXJzKTsKCQkJJHRoaXMtPmRpcnMgPSAkZGlyczsKCQl9CgkJcmV0dXJuICR0aGlzLT5kaXJzOwoJfQoKCS8qKgoJICogUmVjdXJzaXZlbHkgdHJhdmVzZSB0aGUgZGlyZWN0b3JpZXMgdG8gZ2V0IGEgbGlzdAoJICogb2YgYWNjZXNzYWJsZSBkaXJlY3Rvcmllcy4KCSAqIEBwYXJhbSBzdHJpbmcgJGJhc2UgdGhlIGZ1bGwgcGF0aCB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkKCSAqIEBwYXJhbSBzdHJpbmcgJHBhdGggdGhlIHJlbGF0aXZlIHBhdGggbmFtZQoJICogQHJldHVybiBhcnJheSBvZiBhY2Nlc3NpYWJsZSBzdWItZGlyZWN0b3JpZXMKCSAqIDxjb2RlPmFycmF5KCdwYXRoIG5hbWUnID0+ICdmdWxsIGRpcmVjdG9yeSBwYXRoJywgLi4uKTwvY29kZT4KCSAqLwoJZnVuY3Rpb24gX2RpcnMoJGJhc2UsICRwYXRoKSAKCXsKCQkkYmFzZSA9IEZpbGVzOjpmaXhQYXRoKCRiYXNlKTsKCQkkZGlycyA9IGFycmF5KCk7CgoJCWlmKCR0aGlzLT5pc1ZhbGlkQmFzZSgpID09IGZhbHNlKQoJCQlyZXR1cm4gJGRpcnM7CgoJCSRkID0gQGRpcigkYmFzZSk7CgkJaWYoICEkZCApIHJldHVybiAkZGlyczsKCQoJCXdoaWxlIChmYWxzZSAhPT0gKCRlbnRyeSA9ICRkLT5yZWFkKCkpKSAKCQl7CgkJCS8vSWYgaXQgaXMgYSBkaXJlY3RvcnksIGFuZCBpdCBkb2Vzbid0IHN0YXJ0IHdpdGgKCQkJLy8gYSBkb3QsIGFuZCBpZiBpcyBpdCBub3QgdGhlIHRodW1ibmFpbCBkaXJlY3RvcnkKCQkJaWYoaXNfZGlyKCRiYXNlLiRlbnRyeSkgCgkJCQkmJiBzdWJzdHIoJGVudHJ5LDAsMSkgIT0gJy4nCgkJCQkmJiAkdGhpcy0+aXNUaHVtYkRpcigkZW50cnkpID09IGZhbHNlKSAKCQkJewoJCQkJJHJlbGF0aXZlID0gRmlsZXM6OmZpeFBhdGgoJHBhdGguJGVudHJ5KTsKCQkJCSRmdWxscGF0aCA9IEZpbGVzOjpmaXhQYXRoKCRiYXNlLiRlbnRyeSk7CgkJCQkkZGlyc1skcmVsYXRpdmVdID0gJGZ1bGxwYXRoOwoJCQkJJGRpcnMgPSBhcnJheV9tZXJnZSgkZGlycywgJHRoaXMtPl9kaXJzKCRmdWxscGF0aCwgJHJlbGF0aXZlKSk7CgkJCX0KCQl9CgkJJGQtPmNsb3NlKCk7CgoJCVJldHVybiAkZGlyczsKCX0KCgkvKioKCSAqIEdldCBhbGwgdGhlIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBvZiBhIHJlbGF0aXZlIHBhdGguCgkgKiBAcGFyYW0gc3RyaW5nICRwYXRoIHJlbGF0aXZlIHBhdGggdG8gYmUgYmFzZSBwYXRoLgoJICogQHJldHVybiBhcnJheSBvZiBmaWxlIGFuZCBwYXRoIGluZm9ybWF0aW9uLgoJICogPGNvZGU+YXJyYXkoMD0+YXJyYXkoJ3JlbGF0aXZlJz0+J2Z1bGxwYXRoJywuLi4pLCAxPT5hcnJheSgnZmlsZW5hbWUnPT5maWxlaW5mbyBhcnJheSgpLC4uLik8L2NvZGU+CgkgKiBmaWxlaW5mbyBhcnJheTogPGNvZGU+YXJyYXkoJ3VybCc9PidmdWxsIHVybCcsIAoJICogICAgICAgICAgICAgICAgICAgICAgICdyZWxhdGl2ZSc9PidyZWxhdGl2ZSB0byBiYXNlJywgCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICdmdWxscGF0aCc9PidmdWxsIGZpbGUgcGF0aCcsIAoJICogICAgICAgICAgICAgICAgICAgICAgICAnaW1hZ2UnPT5pbWFnZUluZm8gYXJyYXkoKSBmYWxzZSBpZiBub3QgaW1hZ2UsCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICdzdGF0JyA9PiBmaWxlc3RhdCk8L2NvZGU+CgkgKi8KCWZ1bmN0aW9uIGdldEZpbGVzKCRwYXRoKSAKCXsKCQkkZmlsZXMgPSBhcnJheSgpOwoJCSRkaXJzID0gYXJyYXkoKTsKCgkJaWYoJHRoaXMtPmlzVmFsaWRCYXNlKCkgPT0gZmFsc2UpCgkJCXJldHVybiBhcnJheSgkZmlsZXMsJGRpcnMpOwoKCQkkcGF0aCA9IEZpbGVzOjpmaXhQYXRoKCRwYXRoKTsKCQkkYmFzZSA9IEZpbGVzOjpmaXhQYXRoKCR0aGlzLT5nZXRCYXNlRGlyKCkpOwoJCSRmdWxscGF0aCA9IEZpbGVzOjptYWtlUGF0aCgkYmFzZSwkcGF0aCk7CgoJCSRkID0gQGRpcigkZnVsbHBhdGgpOwoJCWlmKCAkZCApIHsKCQkgIHdoaWxlIChmYWxzZSAhPT0gKCRlbnRyeSA9ICRkLT5yZWFkKCkpKSB7CgkJICAgIC8vbm90IGEgZG90IGZpbGUgb3IgZGlyZWN0b3J5CgkJICAgIGlmKHN1YnN0cigkZW50cnksMCwxKSAhPSAnLicpIHsKCQkgICAgICBpZihpc19kaXIoJGZ1bGxwYXRoLiRlbnRyeSkKCQkJICYmICR0aGlzLT5pc1RodW1iRGlyKCRlbnRyeSkgPT0gZmFsc2UpIHsKCQkJJHJlbGF0aXZlID0gRmlsZXM6OmZpeFBhdGgoJHBhdGguJGVudHJ5KTsKCQkJJGZ1bGwgPSBGaWxlczo6Zml4UGF0aCgkZnVsbHBhdGguJGVudHJ5KTsKCQkJJGNvdW50ID0gJHRoaXMtPmNvdW50RmlsZXMoJGZ1bGwpOwoJCQkkZGlyc1skcmVsYXRpdmVdID0gYXJyYXkoJ2Z1bGxwYXRoJz0+JGZ1bGwsJ2VudHJ5Jz0+JGVudHJ5LCdjb3VudCc9PiRjb3VudCk7CgkJICAgICAgfQoJCSAgICAgIGVsc2UgaWYoaXNfZmlsZSgkZnVsbHBhdGguJGVudHJ5KSAmJiAKCQkJICAgICAgJHRoaXMtPmlzVGh1bWIoJGVudHJ5KT09ZmFsc2UgJiYgJHRoaXMtPmlzVG1wRmlsZSgkZW50cnkpID09IGZhbHNlKSB7CgkJCSRpbWcgPSAkdGhpcy0+Z2V0SW1hZ2VJbmZvKCRmdWxscGF0aC4kZW50cnkpOwoKCQkJaWYoISghaXNfYXJyYXkoJGltZykmJiR0aGlzLT5jb25maWdbJ3ZhbGlkYXRlX2ltYWdlcyddKSkgewoJCQkgICRmaWxlWyd1cmwnXSA9IEZpbGVzOjptYWtlUGF0aCgkdGhpcy0+Y29uZmlnWydiYXNlX3VybCddLCRwYXRoKS4kZW50cnk7CgkJCSAgJGZpbGVbJ3JlbGF0aXZlJ10gPSAkcGF0aC4kZW50cnk7CgkJCSAgJGZpbGVbJ2Z1bGxwYXRoJ10gPSAkZnVsbHBhdGguJGVudHJ5OwoJCQkgICRmaWxlWydpbWFnZSddID0gJGltZzsKCQkJICAkZmlsZVsnc3RhdCddID0gc3RhdCgkZnVsbHBhdGguJGVudHJ5KTsKCQkJICAkZmlsZXNbJGVudHJ5XSA9ICRmaWxlOwoJCQl9CgkJICAgICAgfQoJCSAgICB9CgkJICB9CgkJICAkZC0+Y2xvc2UoKTsKCQl9CgoJCQkvL0FkZCBhIGJhY2sgZGlyZWN0b3J5CgkJCQoJCQkkYmFja3BhdGggPSAkZnVsbHBhdGguJy8uLic7CgkJCSRiYWNrcGF0aCA9IHJlYWxwYXRoKCRiYWNrcGF0aCk7CgkJCWlmIChzdWJzdHIoJGJhY2twYXRoLDAsc3RybGVuKCR0aGlzLT5nZXRCYXNlRGlyKCkpKSA9PSAkdGhpcy0+Z2V0QmFzZURpcigpKQoJCQkJewoJCQkJJGJhY2twYXRoID0gc3Vic3RyKCRiYWNrcGF0aCxzdHJsZW4oJHRoaXMtPmdldEJhc2VEaXIoKSkpOwoJCQkJfQovLwkJICAgIGVjaG8gJzxwIGNsYXNzPSJwYWdlaGVhZGVyIj4nLiRwYXRoLic8L3A+JzsKCQkJaWYoJHBhdGggIT0gJy8nKSB7CgkJCQkJJHJlbGF0aXZlID0gRmlsZXM6OmZpeFBhdGgoJGJhY2twYXRoKTsKCQkJCQkkZnVsbCA9IEZpbGVzOjpmaXhQYXRoKCRiYWNrcGF0aCk7CgkJCQkJJGNvdW50ID0gJHRoaXMtPmNvdW50RmlsZXMoJGZ1bGwpOwoJCQkJCSRlbnRyeSA9ICcuLic7CgkJCQkJJGRpcnNbJHJlbGF0aXZlXSA9IGFycmF5KCdmdWxscGF0aCc9PiRmdWxsLCdlbnRyeSc9PiRlbnRyeSwnY291bnQnPT4kY291bnQpOwkJCSAgCgkJCX0KCgkJa3NvcnQoJGRpcnMpOwoJCWtzb3J0KCRmaWxlcyk7CgkJCgkJUmV0dXJuIGFycmF5KCRkaXJzLCAkZmlsZXMpOwoJfQkKCgkvKioKCSAqIENvdW50IHRoZSBudW1iZXIgb2YgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGluIGEgZ2l2ZW4gZm9sZGVyCgkgKiBtaW51cyB0aGUgdGh1bWJuYWlsIGZvbGRlcnMgYW5kIHRodW1ibmFpbHMuCgkgKi8KCWZ1bmN0aW9uIGNvdW50RmlsZXMoJHBhdGgpIAoJewoJCSR0b3RhbCA9IDA7CgkJZ2xvYmFsICRjb25maWc7CgkJaWYoKCRwYXRoICE9ICIvIikgJiYgKGlzX2RpcigkY29uZmlnWydpbWFnZV91cGxvYWRzX3BhdGgnXS4iLyIuJHBhdGgpKSkKCQl7CgkJCSRkID0gQGRpcigkY29uZmlnWydpbWFnZV91cGxvYWRzX3BhdGgnXS4iLyIuJHBhdGgpOwoKCQkJd2hpbGUgKGZhbHNlICE9PSAoJGVudHJ5ID0gJGQtPnJlYWQoKSkpIAoJCQl7CgkJCQkvL2VjaG8gJGVudHJ5LiI8YnI+IjsKCQkJCWlmKHN1YnN0cigkZW50cnksMCwxKSAhPSAnLicKCQkJCQkmJiAkdGhpcy0+aXNUaHVtYkRpcigkZW50cnkpID09IGZhbHNlCgkJCQkJJiYgJHRoaXMtPmlzVG1wRmlsZSgkZW50cnkpID09IGZhbHNlCgkJCQkJJiYgJHRoaXMtPmlzVGh1bWIoJGVudHJ5KSA9PSBmYWxzZSkgCgkJCQl7CgkJCQkJJHRvdGFsKys7CgkJCQl9CgkJCX0KCQkJJGQtPmNsb3NlKCk7CgkJfQoJCXJldHVybiAkdG90YWw7Cgl9CgoJLyoqCgkgKiBHZXQgaW1hZ2Ugc2l6ZSBpbmZvcm1hdGlvbi4KCSAqIEBwYXJhbSBzdHJpbmcgJGZpbGUgdGhlIGltYWdlIGZpbGUKCSAqIEByZXR1cm4gYXJyYXkgb2YgZ2V0SW1hZ2VTaXplIGluZm9ybWF0aW9uLCAKCSAqICBmYWxzZSBpZiB0aGUgZmlsZSBpcyBub3QgYW4gaW1hZ2UuCgkgKi8KCWZ1bmN0aW9uIGdldEltYWdlSW5mbygkZmlsZSkgCgl7CgkJUmV0dXJuIEBnZXRJbWFnZVNpemUoJGZpbGUpOwoJfQoKCS8qKgoJICogQ2hlY2sgaWYgdGhlIGZpbGUgY29udGFpbnMgdGhlIHRodW1ibmFpbCBwcmVmaXguCgkgKiBAcGFyYW0gc3RyaW5nICRmaWxlIGZpbGVuYW1lIHRvIGJlIGNoZWNrZWQKCSAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgZmlsZSBjb250YWlucyB0aGUgdGh1bWJuYWlsIHByZWZpeCwgZmFsc2Ugb3RoZXJ3aXNlLgoJICovCglmdW5jdGlvbiBpc1RodW1iKCRmaWxlKSAKCXsKCQkkbGVuID0gc3RybGVuKCR0aGlzLT5jb25maWdbJ3RodW1ibmFpbF9wcmVmaXgnXSk7CgkJaWYoc3Vic3RyKCRmaWxlLDAsJGxlbik9PSR0aGlzLT5jb25maWdbJ3RodW1ibmFpbF9wcmVmaXgnXSkKCQkJUmV0dXJuIHRydWU7CgkJZWxzZQoJCQlSZXR1cm4gZmFsc2U7Cgl9CgoJLyoqCgkgKiBDaGVjayBpZiB0aGUgZ2l2ZW4gZGlyZWN0b3J5IGlzIGEgdGh1bWJuYWlsIGRpcmVjdG9yeS4KCSAqIEBwYXJhbSBzdHJpbmcgJGVudHJ5IGRpcmVjdG9yeSBuYW1lCgkgKiBAcmV0dXJuIHRydWUgaWYgaXQgaXMgYSB0aHVtYm5haWwgZGlyZWN0b3J5LCBmYWxzZSBvdGhlcndpc2UKCSAqLwoJZnVuY3Rpb24gaXNUaHVtYkRpcigkZW50cnkpIAoJewoJCWlmKCR0aGlzLT5jb25maWdbJ3RodW1ibmFpbF9kaXInXSA9PSBmYWxzZQoJCQl8fCBzdHJsZW4odHJpbSgkdGhpcy0+Y29uZmlnWyd0aHVtYm5haWxfZGlyJ10pKSA9PSAwKQoJCQlSZXR1cm4gZmFsc2U7CQkKCQllbHNlCgkJCVJldHVybiAoJGVudHJ5ID09ICR0aGlzLT5jb25maWdbJ3RodW1ibmFpbF9kaXInXSk7Cgl9CgoJLyoqCgkgKiBDaGVjayBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIHRtcCBmaWxlLgoJICogQHBhcmFtIHN0cmluZyAkZmlsZSBmaWxlIG5hbWUKCSAqIEByZXR1cm4gYm9vbGVhbiB0cnVlIGlmIGl0IGlzIGEgdG1wIGZpbGUsIGZhbHNlIG90aGVyd2lzZQoJICovCglmdW5jdGlvbiBpc1RtcEZpbGUoJGZpbGUpIAoJewoJCSRsZW4gPSBzdHJsZW4oJHRoaXMtPmNvbmZpZ1sndG1wX3ByZWZpeCddKTsKCQlpZihzdWJzdHIoJGZpbGUsMCwkbGVuKT09JHRoaXMtPmNvbmZpZ1sndG1wX3ByZWZpeCddKQoJCQlSZXR1cm4gdHJ1ZTsKCQllbHNlCgkJCVJldHVybiBmYWxzZTsJIAkKCX0KCgkvKioKCSAqIEZvciBhIGdpdmVuIGltYWdlIGZpbGUsIGdldCB0aGUgcmVzcGVjdGl2ZSB0aHVtYm5haWwgZmlsZW5hbWUKCSAqIG5vIGZpbGUgZXhpc3RlbmNlIGNoZWNrIGlzIGRvbmUuCgkgKiBAcGFyYW0gc3RyaW5nICRmdWxscGF0aGZpbGUgdGhlIGZ1bGwgcGF0aCB0byB0aGUgaW1hZ2UgZmlsZQoJICogQHJldHVybiBzdHJpbmcgb2YgdGhlIHRodW1ibmFpbCBmaWxlCgkgKi8KCWZ1bmN0aW9uIGdldFRodW1iTmFtZSgkZnVsbHBhdGhmaWxlKSAKCXsKCQkkcGF0aF9wYXJ0cyA9IHBhdGhpbmZvKCRmdWxscGF0aGZpbGUpOwoJCQoJCSR0aHVtYm5haWwgPSAkdGhpcy0+Y29uZmlnWyd0aHVtYm5haWxfcHJlZml4J10uJHBhdGhfcGFydHNbJ2Jhc2VuYW1lJ107CgoJCWlmKCR0aGlzLT5jb25maWdbJ3NhZmVfbW9kZSddID09IHRydWUKCQkJfHwgc3RybGVuKHRyaW0oJHRoaXMtPmNvbmZpZ1sndGh1bWJuYWlsX2RpciddKSkgPT0gMCkKCQl7CgkKCQkJUmV0dXJuIEZpbGVzOjptYWtlRmlsZSgkcGF0aF9wYXJ0c1snZGlybmFtZSddLCR0aHVtYm5haWwpOwoJCX0KCQllbHNlCgkJewoJCQlpZihzdHJsZW4odHJpbSgkdGhpcy0+Y29uZmlnWyd0aHVtYm5haWxfZGlyJ10pKSA+IDApCgkJCXsKCQkJCSRwYXRoID0gRmlsZXM6Om1ha2VQYXRoKCRwYXRoX3BhcnRzWydkaXJuYW1lJ10sJHRoaXMtPmNvbmZpZ1sndGh1bWJuYWlsX2RpciddKTsKCQkJCWlmKCFpc19kaXIoJHBhdGgpKQoJCQkJCUZpbGVzOjpjcmVhdGVGb2xkZXIoJHBhdGgpOwoJCQkJUmV0dXJuIEZpbGVzOjptYWtlRmlsZSgkcGF0aCwkdGh1bWJuYWlsKTsKCQkJfQoJCQllbHNlIC8vc2hvdWxkIHRoaXMgZXZlciBoYXBwZW4/CgkJCXsKCQkJCS8vZXJyb3JfbG9nKCdJbWFnZU1hbmFnZXI6IEVycm9yIGluIGNyZWF0aW5nIHRodW1ibmFpbCBuYW1lJyk7CgkJCX0KCQl9Cgl9CgkKCS8qKgoJICogU2ltaWxhciB0byBnZXRUaHVtYk5hbWUsIGJ1dCByZXR1cm5zIHRoZSBVUkwsIGJhc2Ugb24gdGhlCgkgKiBnaXZlbiBiYXNlX3VybCBpbiBjb25maWcuaW5jLnBocAoJICogQHBhcmFtIHN0cmluZyAkcmVsYXRpdmUgdGhlIHJlbGF0aXZlIGltYWdlIGZpbGUgbmFtZSwgCgkgKiByZWxhdGl2ZSB0byB0aGUgYmFzZV9kaXIgcGF0aAoJICogQHJldHVybiBzdHJpbmcgdGhlIHVybCBvZiB0aGUgdGh1bWJuYWlsCgkgKi8KCWZ1bmN0aW9uIGdldFRodW1iVVJMKCRyZWxhdGl2ZSkgCgl7CgkJJHBhdGhfcGFydHMgPSBwYXRoaW5mbygkcmVsYXRpdmUpOwoJCSR0aHVtYm5haWwgPSAkdGhpcy0+Y29uZmlnWyd0aHVtYm5haWxfcHJlZml4J10uJHBhdGhfcGFydHNbJ2Jhc2VuYW1lJ107CgkJaWYoJHBhdGhfcGFydHNbJ2Rpcm5hbWUnXT09J1xcJykgJHBhdGhfcGFydHNbJ2Rpcm5hbWUnXT0nLyc7CgoJCWlmKCR0aGlzLT5jb25maWdbJ3NhZmVfbW9kZSddID09IHRydWUKCQkJfHwgc3RybGVuKHRyaW0oJHRoaXMtPmNvbmZpZ1sndGh1bWJuYWlsX2RpciddKSkgPT0gMCkKCQl7CgoJCQkkcGF0aCA9IEZpbGVzOjptYWtlUGF0aCgkcGF0aF9wYXJ0c1snZGlybmFtZSddLCcnKTsKCQkJJHVybF9wYXRoID0gRmlsZXM6Om1ha2VQYXRoKCR0aGlzLT5nZXRCYXNlVVJMKCksICRwYXRoKTsKCQkJUmV0dXJuIEZpbGVzOjptYWtlRmlsZSgkdXJsX3BhdGgsJHRodW1ibmFpbCk7Ci8vCQkJUmV0dXJuIEZpbGVzOjptYWtlRmlsZSgkdGhpcy0+Z2V0QmFzZVVSTCgpLCR0aHVtYm5haWwpOwoJCX0KCQllbHNlCgkJewoJCQlpZihzdHJsZW4odHJpbSgkdGhpcy0+Y29uZmlnWyd0aHVtYm5haWxfZGlyJ10pKSA+IDApCgkJCXsKCgkJCQkkcGF0aCA9IEZpbGVzOjptYWtlUGF0aCgkcGF0aF9wYXJ0c1snZGlybmFtZSddLCR0aGlzLT5jb25maWdbJ3RodW1ibmFpbF9kaXInXSk7CgkJCQkkdXJsX3BhdGggPSBGaWxlczo6bWFrZVBhdGgoJHRoaXMtPmdldEJhc2VVUkwoKSwgJHBhdGgpOwoJCQkJUmV0dXJuIEZpbGVzOjptYWtlRmlsZSgkdXJsX3BhdGgsJHRodW1ibmFpbCk7CgkJCX0KCQkJZWxzZSAvL3Nob3VsZCB0aGlzIGV2ZXIgaGFwcGVuPwoJCQl7CgkJCQkvL2Vycm9yX2xvZygnSW1hZ2VNYW5hZ2VyOiBFcnJvciBpbiBjcmVhdGluZyB0aHVtYm5haWwgdXJsJyk7CgkJCX0KCgkJfQoJfQoKCS8qKgoJICogQ2hlY2sgaWYgdGhlIGdpdmVuIHBhdGggaXMgcGFydCBvZiB0aGUgc3ViZGlyZWN0b3JpZXMKCSAqIHVuZGVyIHRoZSBiYXNlX2Rpci4KCSAqIEBwYXJhbSBzdHJpbmcgJHBhdGggdGhlIHJlbGF0aXZlIHBhdGggdG8gYmUgY2hlY2tlZAoJICogQHJldHVybiBib29sZWFuIHRydWUgaWYgdGhlIHBhdGggZXhpc3RzLCBmYWxzZSBvdGhlcndpc2UKCSAqLwoJZnVuY3Rpb24gdmFsaWRSZWxhdGl2ZVBhdGgoJHBhdGgpIAoJewoJCSRkaXJzID0gJHRoaXMtPmdldERpcnMoKTsKCQlpZigkcGF0aCA9PSAnLycgfHwgJHBhdGggPT0gJ1wvJykgcmV0dXJuIHRydWU7IC8vIHN0dXBpZCB3aW5kb3plLgoJCS8vY2hlY2sgdGhlIHBhdGggZ2l2ZW4gaW4gdGhlIHVybCBhZ2FpbnN0IHRoZSAKCQkvL2xpc3Qgb2YgcGF0aHMgaW4gdGhlIHN5c3RlbS4KCQlmb3IoJGkgPSAwOyAkaSA8IGNvdW50KCRkaXJzKTsgJGkrKykKCQl7CgkJCSRrZXkgPSBrZXkoJGRpcnMpOwoJCQkvL3dlIGZvdW5kIHRoZSBwYXRoCgkJCWlmKCRrZXkgPT0gJHBhdGgpIHsKCQkJICByZXR1cm4gdHJ1ZTsKCQkJfQoJCQoJCQluZXh0KCRkaXJzKTsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKCS8qKgoJICogUHJvY2VzcyB1cGxvYWRlZCBmaWxlcywgYXNzdW1lcyB0aGUgZmlsZSBpcyBpbiAKCSAqICRfRklMRVNbJ3VwbG9hZCddIGFuZCAkX1BPU1RbJ2RpciddIGlzIHNldC4KCSAqIFRoZSBkaXIgbXVzdCBiZSByZWxhdGl2ZSB0byB0aGUgYmFzZV9kaXIgYW5kIGV4aXN0cy4KCSAqIElmICd2YWxpZGF0ZV9pbWFnZXMnIGlzIHNldCB0byB0cnVlLCBvbmx5IGZpbGUgd2l0aAoJICogaW1hZ2UgZGltZW5zaW9ucyB3aWxsIGJlIGFjY2VwdGVkLgoJICogQHJldHVybiBudWxsCgkgKi8KCWZ1bmN0aW9uIHByb2Nlc3NVcGxvYWRzKCkgCgl7CgkJaWYoJHRoaXMtPmlzVmFsaWRCYXNlKCkgPT0gZmFsc2UpCgkJCXJldHVybjsKCgkJJHJlbGF0aXZlID0gbnVsbDsKCgkJaWYoaXNzZXQoJF9QT1NUWydkaXInXSkpIAoJCQkkcmVsYXRpdmUgPSByYXd1cmxkZWNvZGUoJF9QT1NUWydkaXInXSk7CgkJZWxzZQoJCQlyZXR1cm47CgoJCS8vY2hlY2sgZm9yIHRoZSBmaWxlLCBhbmQgbXVzdCBoYXZlIHZhbGlkIHJlbGF0aXZlIHBhdGgKCQlpZihpc3NldCgkX0ZJTEVTWyd1cGxvYWQnXSkgJiYgJHRoaXMtPnZhbGlkUmVsYXRpdmVQYXRoKCRyZWxhdGl2ZSkpCgkJewoJCQkkdGhpcy0+X3Byb2Nlc3NGaWxlcygkcmVsYXRpdmUsICRfRklMRVNbJ3VwbG9hZCddKTsKCQl9Cgl9CgoJLyoqCgkgKiBQcm9jZXNzIHVwbG9hZCBmaWxlcy4gVGhlIGZpbGUgbXVzdCBiZSBhbiAKCSAqIHVwbG9hZGVkIGZpbGUuIElmICd2YWxpZGF0ZV9pbWFnZXMnIGlzIHNldCB0bwoJICogdHJ1ZSwgb25seSBpbWFnZXMgd2lsbCBiZSBwcm9jZXNzZWQuIEFueSBkdXBsaWNhdGUKCSAqIGZpbGUgd2lsbCBiZSByZW5hbWVkLiBTZWUgRmlsZXM6OmNvcHlGaWxlIGZvciBkZXRhaWxzCgkgKiBvbiByZW5hbWluZy4KCSAqIEBwYXJhbSBzdHJpbmcgJHJlbGF0aXZlIHRoZSByZWxhdGl2ZSBwYXRoIHdoZXJlIHRoZSBmaWxlCgkgKiBzaG91bGQgYmUgY29waWVkIHRvLgoJICogQHBhcmFtIGFycmF5ICRmaWxlIHRoZSB1cGxvYWRlZCBmaWxlIGZyb20gJF9GSUxFUwoJICogQHJldHVybiBib29sZWFuIHRydWUgaWYgdGhlIGZpbGUgd2FzIHByb2Nlc3NlZCBzdWNjZXNzZnVsbHksIAoJICogZmFsc2Ugb3RoZXJ3aXNlCgkgKi8KCWZ1bmN0aW9uIF9wcm9jZXNzRmlsZXMoJHJlbGF0aXZlLCAkZmlsZSkKCXsKCSAgaWYoICEkdGhpcy0+dmFsaWRSZWxhdGl2ZVBhdGgoJHJlbGF0aXZlKSApIHJldHVybiBmYWxzZTsKCQkKCQlpZigkZmlsZVsnZXJyb3InXSE9MCkKCQl7CgkJCVJldHVybiBmYWxzZTsKCQl9CgoJCWlmKCFpc19maWxlKCRmaWxlWyd0bXBfbmFtZSddKSkKCQl7CgkJCVJldHVybiBmYWxzZTsKCQl9CgoJCWlmKCFpc191cGxvYWRlZF9maWxlKCRmaWxlWyd0bXBfbmFtZSddKSkKCQl7CgkJCUZpbGVzOjpkZWxGaWxlKCRmaWxlWyd0bXBfbmFtZSddKTsKCQkJUmV0dXJuIGZhbHNlOwoJCX0KCQkKCgkJaWYoJHRoaXMtPmNvbmZpZ1sndmFsaWRhdGVfaW1hZ2VzJ10gPT0gdHJ1ZSkKCQl7CgkJCSRpbWdJbmZvID0gQGdldEltYWdlU2l6ZSgkZmlsZVsndG1wX25hbWUnXSk7CgkJCWlmKCFpc19hcnJheSgkaW1nSW5mbykpCgkJCXsKCQkJCUZpbGVzOjpkZWxGaWxlKCRmaWxlWyd0bXBfbmFtZSddKTsKCQkJCVJldHVybiBmYWxzZTsKCQkJfQoJCX0KCgkJLy9ub3cgY29weSB0aGUgZmlsZQoJCSRwYXRoID0gRmlsZXM6Om1ha2VQYXRoKCR0aGlzLT5nZXRCYXNlRGlyKCksJHJlbGF0aXZlKTsKCgkJJGZpbGVzcGVjID0gcHJlZ19yZXBsYWNlKCcvXC5waHAvJywnJywkZmlsZVsnbmFtZSddKTsKCQkkcmVzdWx0ID0gRmlsZXM6OmNvcHlGaWxlKCRmaWxlWyd0bXBfbmFtZSddLCAkcGF0aCwgJGZpbGVzcGVjKTsKCgkJLy9ubyBjb3B5IGVycm9yCgkJaWYoIWlzX2ludCgkcmVzdWx0KSkKCQl7CgkJCUZpbGVzOjpkZWxGaWxlKCRmaWxlWyd0bXBfbmFtZSddKTsKCQkJUmV0dXJuIHRydWU7CgkJfQoKCQkvL2RlbGV0ZSB0bXAgZmlsZXMuCgkJRmlsZXM6OmRlbEZpbGUoJGZpbGVbJ3RtcF9uYW1lJ10pOwoJCVJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIEdldCB0aGUgVVJMIG9mIHRoZSByZWxhdGl2ZSBmaWxlLgoJICogYmFzaWNhbGx5IGFwcGVuZHMgdGhlIHJlbGF0aXZlIGZpbGUgdG8gdGhlIAoJICogYmFzZV91cmwgZ2l2ZW4gaW4gY29uZmlnLmluYy5waHAKCSAqIEBwYXJhbSBzdHJpbmcgJHJlbGF0aXZlIGEgZmlsZSB0aGUgcmVsYXRpdmUgdG8gdGhlIGJhc2VfZGlyCgkgKiBAcmV0dXJuIHN0cmluZyB0aGUgVVJMIG9mIHRoZSByZWxhdGl2ZSBmaWxlLgoJICovCglmdW5jdGlvbiBnZXRGaWxlVVJMKCRyZWxhdGl2ZSkgCgl7CgkJUmV0dXJuIEZpbGVzOjptYWtlRmlsZSgkdGhpcy0+Z2V0QmFzZVVSTCgpLCRyZWxhdGl2ZSk7Cgl9CgoJLyoqCgkgKiBHZXQgdGhlIGZ1bGxwYXRoIHRvIGEgcmVsYXRpdmUgZmlsZS4KCSAqIEBwYXJhbSBzdHJpbmcgJHJlbGF0aXZlIHRoZSByZWxhdGl2ZSBmaWxlLgoJICogQHJldHVybiBzdHJpbmcgdGhlIGZ1bGwgcGF0aCwgLmllLiB0aGUgYmFzZV9kaXIgKyByZWxhdGl2ZS4KCSAqLwoJZnVuY3Rpb24gZ2V0RnVsbFBhdGgoJHJlbGF0aXZlKSAKCXsKCQlSZXR1cm4gRmlsZXM6Om1ha2VGaWxlKCR0aGlzLT5nZXRCYXNlRGlyKCksJHJlbGF0aXZlKTs7Cgl9CgoJLyoqCgkgKiBHZXQgdGhlIGRlZmF1bHQgdGh1bWJuYWlsLgoJICogQHJldHVybiBzdHJpbmcgZGVmYXVsdCB0aHVtYm5haWwsIGVtcHR5IHN0cmluZyBpZiAKCSAqIHRoZSB0aHVtYm5haWwgZG9lc24ndCBleGlzdC4KCSAqLwoJZnVuY3Rpb24gZ2V0RGVmYXVsdFRodW1iKCkgCgl7CgkJaWYoaXNfZmlsZSgkdGhpcy0+Y29uZmlnWydkZWZhdWx0X3RodW1ibmFpbCddKSkKCQkJUmV0dXJuICR0aGlzLT5jb25maWdbJ2RlZmF1bHRfdGh1bWJuYWlsJ107CgkJZWxzZSAKCQkJUmV0dXJuICcnOwoJfQoKCgkvKioKCSAqIEdldCB0aGUgdGh1bWJuYWlsIHVybCB0byBiZSBkaXNwbGF5ZWQuIAoJICogSWYgdGhlIHRodW1ibmFpbCBleGlzdHMsIGFuZCBpdCBpcyB1cC10by1kYXRlCgkgKiB0aGUgdGh1bWJuYWlsIHVybCB3aWxsIGJlIHJldHVybnMuIElmIHRoZSAKCSAqIGZpbGUgaXMgbm90IGFuIGltYWdlLCBhIGRlZmF1bHQgaW1hZ2Ugd2lsbCBiZSByZXR1cm5lZC4KCSAqIElmIGl0IGlzIGFuIGltYWdlIGZpbGUsIGFuZCBubyB0aHVtYm5haWwgZXhpc3RzIG9yIAoJICogdGhlIHRodW1ibmFpbCBpcyBvdXQtb2YtZGF0ZSAoaS5lLiB0aGUgdGh1bWJuYWlsIAoJICogbW9kaWZpZWQgdGltZSBpcyBsZXNzIHRoYW4gdGhlIG9yaWdpbmFsIGZpbGUpCgkgKiB0aGVuIGEgdGh1bWJzLnBocD9pbWc9ZmlsZW5hbWUuanBnIGlzIHJldHVybmVkLgoJICogVGhlIHRodW1icy5waHAgdXJsIHdpbGwgZ2VuZXJhdGUgYSBuZXcgdGh1bWJuYWlsCgkgKiBvbiB0aGUgZmx5LiBJZiB0aGUgaW1hZ2UgaXMgbGVzcyB0aGFuIHRoZSBkaW1lbnNpb25zCgkgKiBvZiB0aGUgdGh1bWJuYWlscywgdGhlIGltYWdlIHdpbGwgYmUgZGlzcGxheSBpbnN0ZWFkLgoJICogQHBhcmFtIHN0cmluZyAkcmVsYXRpdmUgdGhlIHJlbGF0aXZlIGltYWdlIGZpbGUuCgkgKiBAcmV0dXJuIHN0cmluZyB0aGUgdXJsIG9mIHRoZSB0aHVtYm5haWwsIGJlIGl0CgkgKiBhY3R1YWxseSB0aHVtYm5haWwgb3IgYSBzY3JpcHQgdG8gZ2VuZXJhdGUgdGhlCgkgKiB0aHVtYm5haWwgb24gdGhlIGZseS4KCSAqLwoJZnVuY3Rpb24gZ2V0VGh1bWJuYWlsKCRyZWxhdGl2ZSkgCgl7CgkJJGZ1bGxwYXRoID0gRmlsZXM6Om1ha2VGaWxlKCR0aGlzLT5nZXRCYXNlRGlyKCksJHJlbGF0aXZlKTsKCQkvL25vdCBhIGZpbGU/Pz8KCQlpZighaXNfZmlsZSgkZnVsbHBhdGgpKQoJCQlSZXR1cm4gJHRoaXMtPmdldERlZmF1bHRUaHVtYigpOwoKCQkkaW1nSW5mbyA9IEBnZXRJbWFnZVNpemUoJGZ1bGxwYXRoKTsKCQkKCQkvL25vdCBhbiBpbWFnZQoJCWlmKCFpc19hcnJheSgkaW1nSW5mbykpCgkJCVJldHVybiAkdGhpcy0+Z2V0RGVmYXVsdFRodW1iKCk7CgoJCSR0aHVtYm5haWwgPSAkdGhpcy0+Z2V0VGh1bWJOYW1lKCRmdWxscGF0aCk7CgkJCgkJLy9jaGVjayBmb3IgdGh1bWJuYWlscywgaWYgZXhpc3RzIGFuZAoJCS8vIGl0IGlzIHVwLXRvLWRhdGUsIHJldHVybiB0aGUgdGh1bWJuYWlsIHVybAoJCWlmKGlzX2ZpbGUoJHRodW1ibmFpbCkpCgkJewoJCQlpZihmaWxlbXRpbWUoJHRodW1ibmFpbCkgPj0gZmlsZW10aW1lKCRmdWxscGF0aCkpCgkJCQlSZXR1cm4gJHRoaXMtPmdldFRodW1iVVJMKCRyZWxhdGl2ZSk7CgkJfQoKCQkvL3dlbGwsIG5vIHRodW1ibmFpbCB3YXMgZm91bmQsIHNvIGFzayB0aGUgdGh1bWJzLnBocAoJCS8vdG8gZ2VuZXJhdGUgdGhlIHRodW1ibmFpbCBvbiB0aGUgZmx5LgoJCVJldHVybiAndGh1bWJzLnBocD9pbWc9Jy5yYXd1cmxlbmNvZGUoJHJlbGF0aXZlKTsKCX0KCgkvKioKCSAqIERlbGV0ZSBhbmQgc3BlY2lmaWVkIGZpbGVzLgoJICogQHJldHVybiBib29sZWFuIHRydWUgaWYgZGVsZXRlLCBmYWxzZSBvdGhlcndpc2UKCSAqLwoJZnVuY3Rpb24gZGVsZXRlRmlsZXMoKSAKCXsKCSAgaWYoaXNzZXQoJF9HRVRbJ2RlbGYnXSkpCgkgICAgJHRoaXMtPl9kZWxGaWxlKHJhd3VybGRlY29kZSgkX0dFVFsnZGVsZiddKSk7Cgl9CgoJLyoqCgkgKiBEZWxldGUgYW5kIHNwZWNpZmllZCBkaXJlY3Rvcmllcy4KCSAqIEByZXR1cm4gYm9vbGVhbiB0cnVlIGlmIGRlbGV0ZSwgZmFsc2Ugb3RoZXJ3aXNlCgkgKi8KCWZ1bmN0aW9uIGRlbGV0ZURpcnMoKSAKCXsKCSAgaWYoaXNzZXQoJF9HRVRbJ2RlbGQnXSkgKSB7CgkgICAgcmV0dXJuICR0aGlzLT5fZGVsRGlyKHJhd3VybGRlY29kZSgkX0dFVFsnZGVsZCddKSk7CgkgIH0KCSAgcmV0dXJuIGZhbHNlOwoJfQoKCS8qKgoJICogRGVsZXRlIHRoZSByZWxhdGl2ZSBmaWxlLCBhbmQgYW55IHRodW1ibmFpbHMuCgkgKiBAcGFyYW0gc3RyaW5nICRyZWxhdGl2ZSB0aGUgcmVsYXRpdmUgZmlsZS4KCSAqIEByZXR1cm4gYm9vbGVhbiB0cnVlIGlmIGRlbGV0ZWQsIGZhbHNlIG90aGVyd2lzZS4KCSAqLwoJZnVuY3Rpb24gX2RlbEZpbGUoJHJlbGF0aXZlKSAKCXsgCiAgICAgICAgICAkcjIgPSBGaWxlczo6Zml4UGF0aChkaXJuYW1lKCRyZWxhdGl2ZSkpOwoJICBpZiggISR0aGlzLT52YWxpZFJlbGF0aXZlUGF0aCgkcjIpICkgcmV0dXJuIGZhbHNlOwoJICAKCSAgJGZ1bGxwYXRoID0gRmlsZXM6Om1ha2VGaWxlKCR0aGlzLT5nZXRCYXNlRGlyKCksJHJlbGF0aXZlKTsKCQkKCQkvL2NoZWNrIHRoYXQgdGhlIGZpbGUgaXMgYW4gaW1hZ2UKCQlpZigkdGhpcy0+Y29uZmlnWyd2YWxpZGF0ZV9pbWFnZXMnXSA9PSB0cnVlKQoJCXsKCQkJaWYoIWlzX2FycmF5KCR0aGlzLT5nZXRJbWFnZUluZm8oJGZ1bGxwYXRoKSkpCgkJCQlyZXR1cm4gZmFsc2U7IC8vaG1tbSBub3QgYW4gSW1hZ2UhIT8/PwoJCX0KCgkJJHRodW1ibmFpbCA9ICR0aGlzLT5nZXRUaHVtYk5hbWUoJGZ1bGxwYXRoKTsKCgkJaWYoRmlsZXM6OmRlbEZpbGUoJGZ1bGxwYXRoKSkKCQkJUmV0dXJuIEZpbGVzOjpkZWxGaWxlKCR0aHVtYm5haWwpOwoJCWVsc2UKCQkJUmV0dXJuIGZhbHNlOwoJfQoKCS8qKgoJICogRGVsZXRlIGRpcmVjdG9yaWVzIHJlY3Vyc2l2ZWx5LgoJICogQHBhcmFtIHN0cmluZyAkcmVsYXRpdmUgdGhlIHJlbGF0aXZlIHBhdGggdG8gYmUgZGVsZXRlZC4KCSAqIEByZXR1cm4gYm9vbGVhbiB0cnVlIGlmIGRlbGV0ZWQsIGZhbHNlIG90aGVyd2lzZS4KCSAqLwoJZnVuY3Rpb24gX2RlbERpcigkcmVsYXRpdmUpIAoJewoJICBpZiggISR0aGlzLT52YWxpZFJlbGF0aXZlUGF0aCgkcmVsYXRpdmUpICkgcmV0dXJuIGZhbHNlOwoJCSRmdWxscGF0aCA9IEZpbGVzOjptYWtlUGF0aCgkdGhpcy0+Z2V0QmFzZURpcigpLCRyZWxhdGl2ZSk7CgkJaWYoJHRoaXMtPmNvdW50RmlsZXMoJGZ1bGxwYXRoKSA8PSAwKQoJCQlyZXR1cm4gRmlsZXM6OmRlbEZvbGRlcigkZnVsbHBhdGgsdHJ1ZSk7IC8vZGVsZXRlIHJlY3Vyc2l2ZWx5LgoJCWVsc2UKCQkJUmV0dXJuIGZhbHNlOwoJfQoKCS8qKgoJICogQ3JlYXRlIG5ldyBkaXJlY3Rvcmllcy4KCSAqIElmIGluIHNhZmVfbW9kZSwgbm90aGluZyBoYXBwZW5zLgoJICogQHJldHVybiBib29sZWFuIHRydWUgaWYgY3JlYXRlZCwgZmFsc2Ugb3RoZXJ3aXNlLgoJICovCglmdW5jdGlvbiBwcm9jZXNzTmV3RGlyKCkgCgl7CgkJaWYoJHRoaXMtPmNvbmZpZ1snc2FmZV9tb2RlJ10gPT0gdHJ1ZSkKCQkJUmV0dXJuIGZhbHNlOwoKCQlpZihpc3NldCgkX0dFVFsnbmV3RGlyJ10pICYmIGlzc2V0KCRfR0VUWydkaXInXSkpCgkJewoJCQkkbmV3RGlyID0gcmF3dXJsZGVjb2RlKCRfR0VUWyduZXdEaXInXSk7CgkJCSRkaXIgPSByYXd1cmxkZWNvZGUoJF9HRVRbJ2RpciddKTsKCQkJJHBhdGggPSBGaWxlczo6bWFrZVBhdGgoJHRoaXMtPmdldEJhc2VEaXIoKSwkZGlyKTsKCQkJJGZ1bGxwYXRoID0gRmlsZXM6Om1ha2VQYXRoKCRwYXRoLCBGaWxlczo6ZXNjYXBlKCRuZXdEaXIpKTsKCQkJaWYoaXNfZGlyKCRmdWxscGF0aCkpCgkJCQlSZXR1cm4gZmFsc2U7CgoJCQlSZXR1cm4gRmlsZXM6OmNyZWF0ZUZvbGRlcigkZnVsbHBhdGgpOwoJCX0KCX0KCgkvKioKCSAqIERvIHNvbWUgZ3JhcGhpYyBsaWJyYXJ5IG1ldGhvZCBjaGVja2luZ3MKCSAqIEBwYXJhbSBzdHJpbmcgJGxpYnJhcnkgdGhlIGdyYXBoaWNzIGxpYnJhcnksIEdELCBOZXRQQk0sIG9yIElNLgoJICogQHBhcmFtIHN0cmluZyAkbWV0aG9kIHRoZSBtZXRob2QgdG8gY2hlY2suCgkgKiBAcmV0dXJuIGJvb2xlYW4gdHJ1ZSBpZiBhYmxlLCBmYWxzZSBvdGhlcndpc2UuCgkgKi8KCWZ1bmN0aW9uIHZhbGlkR3JhcGhpY01ldGhvZHMoJGxpYnJhcnksJG1ldGhvZCkKCXsKCQlzd2l0Y2ggKCRsaWJyYXJ5KQoJCXsKCQkJY2FzZSAnR0QnOgoJCQkJcmV0dXJuICR0aGlzLT5fY2hlY2tHRExpYnJhcnkoJG1ldGhvZCk7CgkJCQlicmVhazsKCQkJY2FzZSAnTmV0UEJNJzoKCQkJCXJldHVybiAkdGhpcy0+X2NoZWNrTmV0UEJNTGlicmFyeSgkbWV0aG9kKTsKCQkJCWJyZWFrOwoJCQljYXNlICdJTSc6CgkJCQlyZXR1cm4gJHRoaXMtPl9jaGVja0lNTGlicmFyeSgkbWV0aG9kKTsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKCWZ1bmN0aW9uIF9jaGVja0lNTGlicmFyeSgkbWV0aG9kKQoJewoJCS8vSW1hZ2VNYWdpY2sgZ29lcyB0aHJvdWdodCAxIHNpbmdsZSBleGVjdXRhYmxlCgkJaWYoaXNfZmlsZShGaWxlczo6Zml4UGF0aChJTUFHRV9UUkFOU0ZPUk1fTElCX1BBVEgpLidjb252ZXJ0JykpCgkJCXJldHVybiB0cnVlOwoJCWVsc2UKCQkJcmV0dXJuIGZhbHNlOwoJfQoKCS8qKgoJICogQ2hlY2sgdGhlIEdEIGxpYnJhcnkgZnVuY3Rpb25hbGl0eS4KCSAqIEBwYXJhbSBzdHJpbmcgJGxpYnJhcnkgdGhlIGdyYXBoaWNzIGxpYnJhcnksIEdELCBOZXRQQk0sIG9yIElNLgoJICogQHJldHVybiBib29sZWFuIHRydWUgaWYgYWJsZSwgZmFsc2Ugb3RoZXJ3aXNlLgoJICovCglmdW5jdGlvbiBfY2hlY2tHRExpYnJhcnkoJG1ldGhvZCkKCXsKCQkkZXJyb3JzID0gYXJyYXkoKTsKCQlzd2l0Y2goJG1ldGhvZCkKCQl7CgkJCWNhc2UgJ2NyZWF0ZSc6CgkJCQkkZXJyb3JzWydjcmVhdGVqcGVnJ10gPSBmdW5jdGlvbl9leGlzdHMoJ2ltYWdlY3JlYXRlZnJvbWpwZWcnKTsKCQkJCSRlcnJvcnNbJ2NyZWF0ZWdpZiddID0gZnVuY3Rpb25fZXhpc3RzKCdpbWFnZWNyZWF0ZWZyb21naWYnKTsKCQkJCSRlcnJvcnNbJ2NyZWF0ZXBuZyddID0gZnVuY3Rpb25fZXhpc3RzKCdpbWFnZWNyZWF0ZWZyb21wbmcnKTsKCQkJCWJyZWFrOwoJCQljYXNlICdtb2RpZnknOgoJCQkJJGVycm9yc1snY3JlYXRlJ10gPSBmdW5jdGlvbl9leGlzdHMoJ0ltYWdlQ3JlYXRlVHJ1ZUNvbG9yJykgfHwgZnVuY3Rpb25fZXhpc3RzKCdJbWFnZUNyZWF0ZScpOwoJCQkJJGVycm9yc1snY29weSddID0gZnVuY3Rpb25fZXhpc3RzKCdJbWFnZUNvcHlSZXNhbXBsZWQnKSB8fCBmdW5jdGlvbl9leGlzdHMoJ0ltYWdlQ29weVJlc2l6ZWQnKTsKCQkJCWJyZWFrOwoJCQljYXNlICdzYXZlJzoKCQkJCSRlcnJvcnNbJ3NhdmVqcGVnJ10gPSBmdW5jdGlvbl9leGlzdHMoJ2ltYWdlanBlZycpOwoJCQkJJGVycm9yc1snc2F2ZWdpZiddID0gZnVuY3Rpb25fZXhpc3RzKCdpbWFnZWdpZicpOwoJCQkJJGVycm9yc1snc2F2ZXBuZyddID0gZnVuY3Rpb25fZXhpc3RzKCdpbWFnZXBuZycpOwoJCQkJYnJlYWs7CgkJfQoKCQlyZXR1cm4gJGVycm9yczsKCX0KfQoKPz4K]]></data>
	</file>
	<file>
	  <filename>/lib/external/Image/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBkdW1teSBpbmRleC5odG1sIC0tPgo=]]></data>
	</file>
	<file>
	  <filename>/lib/external/Image/NetPBM.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCioqIFRpdGxlLi4uLi4uLi4uOiAgTmV0UEJNIERyaXZlcgoqKiBWZXJzaW9uLi4uLi4uLjogIDEuMAoqKiBBdXRob3IuLi4uLi4uLjogIFhpYW5nIFdlaSBaSFVPIDx3ZWlAemh1by5vcmc+CioqIEZpbGVuYW1lLi4uLi4uOiAgTmV0UEJNLnBocAoqKiBMYXN0IGNoYW5nZWQuLjogIDMwIEF1ZyAyMDAzIAoqKiBOb3Rlcy4uLi4uLi4uLjogIE9yZ2luYWwgaXMgZnJvbSBQRUFSCioqLwoKLy8gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi8vIHwgUEhQIFZlcnNpb24gNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAovLyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLy8gfCBDb3B5cmlnaHQgKGMpIDE5OTctMjAwMiBUaGUgUEhQIEdyb3VwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci8vICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwovLyB8IFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB2ZXJzaW9uIDIuMDIgb2YgdGhlIFBIUCBsaWNlbnNlLCAgICAgIHwKLy8gfCB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRSwgYW5kIGlzICAgICAgICB8Ci8vIHwgYXZhaWxhYmxlIGF0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAovLyB8IGh0dHA6Ly93d3cucGhwLm5ldC9saWNlbnNlLzJfMDIudHh0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLy8gfCBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgUEhQIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG8gICB8Ci8vIHwgb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhIG5vdGUgdG8gICAgICAgICAgfAovLyB8IGxpY2Vuc2VAcGhwLm5ldCBzbyB3ZSBjYW4gbWFpbCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LiAgICAgICAgICAgICAgIHwKLy8gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi8vIHwgQXV0aG9yczogUGV0ZXIgQm93eWVyIDxwZXRlckBtYXBsZWRlc2lnbi5jby51az4gICAgICAgICAgICAgICAgICAgICAgfAovLyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLy8KLy8gJElkOiBOZXRQQk0ucGhwIDY4NzkgMjAxMS0wMS0yOSAxODoyNzowOFogY2FsZ3V5MTAwMCAkCi8vCi8vIEltYWdlIFRyYW5zZm9ybWF0aW9uIGludGVyZmFjZSB1c2luZyBjb21tYW5kIGxpbmUgTmV0UEJNCgpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuIi9UcmFuc2Zvcm0ucGhwIik7CgpDbGFzcyBJbWFnZV9UcmFuc2Zvcm1fRHJpdmVyX05ldFBCTSBleHRlbmRzIEltYWdlX1RyYW5zZm9ybQp7CgogICAgLyoqCiAgICAgKiBhc3NvY2lhdGl2ZSBhcnJheSBjb21tYW5kcyB0byBiZSBleGVjdXRlZAogICAgICogQHZhciBhcnJheQogICAgICovCiAgICB2YXIgJGNvbW1hbmQgPSBhcnJheSgpOwoKICAgIC8qKgogICAgICogQ2xhc3MgQ29uc3RydWN0b3IKICAgICAqLwogICAgZnVuY3Rpb24gSW1hZ2VfVHJhbnNmb3JtX0RyaXZlcl9OZXRQQk0oKQogICAgewogICAgICAgICR0aGlzLT51aWQgPSBtZDUoJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10pOwogICAgICAgICAgICAKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0gLy8gRW5kIGZ1bmN0aW9uIEltYWdlX05ldFBCTQoKICAgIC8qKgogICAgICogTG9hZCBpbWFnZQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgZmlsZW5hbWUKICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkIG5vbmUgb3IgYSBQRUFSIGVycm9yIG9iamVjdCBvbiBlcnJvcgogICAgICogQHNlZSBQRUFSOjppc0Vycm9yKCkKICAgICAqLwogICAgZnVuY3Rpb24gbG9hZCgkaW1hZ2UpCiAgICB7CiAgICAgICAgLy9lY2hvICRpbWFnZTsKICAgICAgICAkdGhpcy0+aW1hZ2UgPSAkaW1hZ2U7CiAgICAgICAgJHRoaXMtPl9nZXRfaW1hZ2VfZGV0YWlscygkaW1hZ2UpOwogICAgfSAvLyBFbmQgbG9hZAoKICAgIC8qKgogICAgICogUmVzaXplcyB0aGUgaW1hZ2UKICAgICAqCiAgICAgKiBAcmV0dXJuIG5vbmUKICAgICAqIEBzZWUgUEVBUjo6aXNFcnJvcigpCiAgICAgKi8KICAgIGZ1bmN0aW9uIF9yZXNpemUoJG5ld194LCAkbmV3X3kpCiAgICB7CiAgICAgICAgLy8gdGhlcmUncyBubyB0ZWNobmljYWwgcmVhc29uIHdoeSByZXNpemUgY2FuJ3QgYmUgY2FsbGVkIG11bHRpcGxlCiAgICAgICAgLy8gdGltZXMuLi5pdCdzIGp1c3Qgc2lsbHkgdG8gZG8gc28KCiAgICAgICAgJHRoaXMtPmNvbW1hbmRbXSA9IElNQUdFX1RSQU5TRk9STV9MSUJfUEFUSCAuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJwbm1zY2FsZSAtd2lkdGggJG5ld194IC1oZWlnaHQgJG5ld195IjsKCiAgICAgICAgJHRoaXMtPl9zZXRfbmV3X3goJG5ld194KTsKICAgICAgICAkdGhpcy0+X3NldF9uZXdfeSgkbmV3X3kpOwogICAgfSAvLyBFbmQgcmVzaXplCgogICAgLyoqCiAgICAgKiBDcm9wIHRoZSBpbWFnZQogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJGNyb3BfeCBsZWZ0IGNvbHVtbiBvZiB0aGUgaW1hZ2UKICAgICAqIEBwYXJhbSBpbnQgJGNyb3BfeSB0b3Agcm93IG9mIHRoZSBpbWFnZQogICAgICogQHBhcmFtIGludCAkY3JvcF93aWR0aCBuZXcgY3JvcHBlZCBpbWFnZSB3aWR0aAogICAgICogQHBhcmFtIGludCAkY3JvcF9oZWlnaHQgbmV3IGNyb3BwZWQgaW1hZ2UgaGVpZ2h0CiAgICAgKi8KICAgIGZ1bmN0aW9uIGNyb3AoJGNyb3BfeCwgJGNyb3BfeSwgJGNyb3Bfd2lkdGgsICRjcm9wX2hlaWdodCkgCiAgICB7CiAgICAgICAgJHRoaXMtPmNvbW1hbmRbXSA9IElNQUdFX1RSQU5TRk9STV9MSUJfUEFUSCAuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAicG5tY3V0IC1sZWZ0ICRjcm9wX3ggLXRvcCAkY3JvcF95IC13aWR0aCAkY3JvcF93aWR0aCAtaGVpZ2h0ICRjcm9wX2hlaWdodCI7CiAgICB9CgogICAgLyoqCiAgICAgKiBSb3RhdGVzIHRoZSBpbWFnZQogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJGFuZ2xlIFRoZSBhbmdsZSB0byByb3RhdGUgdGhlIGltYWdlIHRocm91Z2gKICAgICAqLwogICAgZnVuY3Rpb24gcm90YXRlKCRhbmdsZSkKICAgIHsKICAgICAgICAkYW5nbGUgPSAtMSpmbG9hdHZhbCgkYW5nbGUpOwoKICAgICAgICBpZigkYW5nbGUgPiA5MCkKICAgICAgICB7ICAgCiAgICAgICAgICAgICR0aGlzLT5jb21tYW5kW10gPSBJTUFHRV9UUkFOU0ZPUk1fTElCX1BBVEggLiAicG5tcm90YXRlIC1ub2FudGlhbGlhcyA5MCI7CiAgICAgICAgICAgICR0aGlzLT5yb3RhdGUoLTEqKCRhbmdsZS05MCkpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICgkYW5nbGUgPCAtOTApCiAgICAgICAgewogICAgICAgICAgICAkdGhpcy0+Y29tbWFuZFtdID0gSU1BR0VfVFJBTlNGT1JNX0xJQl9QQVRIIC4gInBubXJvdGF0ZSAtbm9hbnRpYWxpYXMgLTkwIjsKICAgICAgICAgICAgJHRoaXMtPnJvdGF0ZSgtMSooJGFuZ2xlKzkwKSk7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICAgICAgJHRoaXMtPmNvbW1hbmRbXSA9IElNQUdFX1RSQU5TRk9STV9MSUJfUEFUSCAuICJwbm1yb3RhdGUgLW5vYW50aWFsaWFzICRhbmdsZSI7CiAgICB9IC8vIEVuZCByb3RhdGUKCiAgICAvKioKICAgICAqIEZsaXAgdGhlIGltYWdlIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5CiAgICAgKgogICAgICogQHBhcmFtIGJvb2xlYW4gJGhvcml6b250YWwgdHJ1ZSBpZiBob3Jpem9udGFsIGZsaXAsIHZlcnRpY2FsIG90aGVyd2lzZQogICAgICovCiAgICBmdW5jdGlvbiBmbGlwKCRob3Jpem9udGFsKSAKICAgIHsKICAgICAgICBpZigkaG9yaXpvbnRhbCkgCiAgICAgICAgICAgICR0aGlzLT5jb21tYW5kW10gPSBJTUFHRV9UUkFOU0ZPUk1fTElCX1BBVEggLiAicG5tZmxpcCAtbHIiOwogICAgICAgIGVsc2UKICAgICAgICAgICAgJHRoaXMtPmNvbW1hbmRbXSA9IElNQUdFX1RSQU5TRk9STV9MSUJfUEFUSCAuICJwbm1mbGlwIC10YiI7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGp1c3QgdGhlIGltYWdlIGdhbW1hCiAgICAgKgogICAgICogQHBhcmFtIGZsb2F0ICRvdXRwdXRnYW1tYQogICAgICoKICAgICAqIEByZXR1cm4gbm9uZQogICAgICovCiAgICBmdW5jdGlvbiBnYW1tYSgkb3V0cHV0Z2FtbWEgPSAxLjApIHsKICAgICAgICAkdGhpcy0+Y29tbWFuZFsxM10gPSBJTUFHRV9UUkFOU0ZPUk1fTElCX1BBVEggLiAicG5tZ2FtbWEgJG91dHB1dGdhbW1hIjsKICAgIH0KCiAgICAvKioKICAgICAqIGFkZHMgdGV4dCB0byBhbiBpbWFnZQogICAgICoKICAgICAqIEBwYXJhbSAgIGFycmF5ICAgb3B0aW9ucyAgICAgQXJyYXkgY29udGFpbnMgb3B0aW9ucwogICAgICogICAgICAgICAgICAgYXJyYXkoCiAgICAgKiAgICAgICAgICAgICAgICAgICd0ZXh0JyAgICAgICAgICAvLyBUaGUgc3RyaW5nIHRvIGRyYXcKICAgICAqICAgICAgICAgICAgICAgICAgJ3gnICAgICAgICAgICAgIC8vIEhvcml6b250YWwgcG9zaXRpb24KICAgICAqICAgICAgICAgICAgICAgICAgJ3knICAgICAgICAgICAgIC8vIFZlcnRpY2FsIFBvc2l0aW9uCiAgICAgKiAgICAgICAgICAgICAgICAgICdDb2xvcicgICAgICAgICAvLyBGb250IGNvbG9yCiAgICAgKiAgICAgICAgICAgICAgICAgICdmb250JyAgICAgICAgICAvLyBGb250IHRvIGJlIHVzZWQKICAgICAqICAgICAgICAgICAgICAgICAgJ3NpemUnICAgICAgICAgIC8vIFNpemUgb2YgdGhlIGZvbnRzIGluIHBpeGVsCiAgICAgKiAgICAgICAgICAgICAgICAgICdyZXNpemVfZmlyc3QnICAvLyBUZWxsIGlmIHRoZSBpbWFnZSBoYXMgdG8gYmUgcmVzaXplZAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmVmb3JlIGRyYXdpbmcgdGhlIHRleHQKICAgICAqICAgICAgICAgICAgICAgICAgICkKICAgICAqCiAgICAgKiBAcmV0dXJuIG5vbmUKICAgICAqLwogICAgZnVuY3Rpb24gYWRkVGV4dCgkcGFyYW1zKQogICAgewogICAgICAgICRkZWZhdWx0X3BhcmFtcyA9IGFycmF5KCd0ZXh0JyA9PiAnVGhpcyBpcyBUZXh0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAneCcgPT4gMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3knID0+IDIwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcicgPT4gJ3JlZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQnID0+ICdBcmlhbC50dGYnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXplJyA9PiAnMTInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZScgPT4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzaXplX2ZpcnN0JyA9PiBmYWxzZSk7CiAgICAgICAgLy8gd2UgaWdub3JlICdyZXNpemVfZmlyc3QnIHNpbmNlIHRoZSBtb3JlIGxvZ2ljYWwgYXBwcm9hY2ggd291bGQgYmUKICAgICAgICAvLyBmb3IgdGhlIHVzZXIgdG8ganVzdCBjYWxsICR0aGlzLT5fcmVzaXplKCkgX2ZpcnN0XyA7KQogICAgICAgIGV4dHJhY3QoYXJyYXlfbWVyZ2UoJGRlZmF1bHRfcGFyYW1zLCAkcGFyYW1zKSk7CiAgICAgICAgJHRoaXMtPmNvbW1hbmRbXSA9ICJwcG1sYWJlbCAtYW5nbGUgJGFuZ2xlIC1jb2xvdXIgJGNvbG9yIC1zaXplICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgLiIkc2l6ZSAteCAkeCAteSAiLiR5KyRzaXplLiIgLXRleHQgXCIkdGV4dFwiIjsKICAgIH0gLy8gRW5kIGFkZFRleHQKCiAgICBmdW5jdGlvbiBfcG9zdFByb2Nlc3MoJHR5cGUsICRxdWFsaXR5LCAkc2F2ZV90eXBlKQogICAgewogICAgICAgICR0eXBlID0gaXNfbnVsbCgkdHlwZSkgfHwgJHR5cGU9PScnPyAkdGhpcy0+dHlwZSA6ICR0eXBlOwogICAgICAgICRzYXZlX3R5cGUgPSBpc19udWxsKCRzYXZlX3R5cGUpIHx8ICRzYXZlX3R5cGU9PScnPyAkdGhpcy0+dHlwZSA6ICRzYXZlX3R5cGU7CiAgICAgICAgLy9lY2hvICJUWVBFOiIuICR0aGlzLT50eXBlOwogICAgICAgIGFycmF5X3Vuc2hpZnQoJHRoaXMtPmNvbW1hbmQsIElNQUdFX1RSQU5TRk9STV9MSUJfUEFUSAogICAgICAgICAgICAgICAgICAgICAgLiAkdHlwZS4ndG9wbm0gJy4gJHRoaXMtPmltYWdlKTsKICAgICAgICAkYXJnID0gJyc7CiAgICAgICAgc3dpdGNoKHN0cnRvbG93ZXIoJHNhdmVfdHlwZSkpewogICAgICAgICAgICBjYXNlICdnaWYnOgogICAgICAgICAgICAgICAgJHRoaXMtPmNvbW1hbmRbXSA9IElNQUdFX1RSQU5TRk9STV9MSUJfUEFUSCAuICJwcG1xdWFudCAyNTYiOwogICAgICAgICAgICAgICAgJHRoaXMtPmNvbW1hbmRbXSA9IElNQUdFX1RSQU5TRk9STV9MSUJfUEFUSCAuICJwcG10byRzYXZlX3R5cGUiOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ2pwZyc6CiAgICAgICAgICAgIGNhc2UgJ2pwZWcnOgogICAgICAgICAgICAgICAgJGFyZyA9ICItLXF1YWxpdHk9JHF1YWxpdHkiOwogICAgICAgICAgICAgICAgJHRoaXMtPmNvbW1hbmRbXSA9IElNQUdFX1RSQU5TRk9STV9MSUJfUEFUSCAuICJwcG10byRzYXZlX3R5cGUgJGFyZyI7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICR0aGlzLT5jb21tYW5kW10gPSBJTUFHRV9UUkFOU0ZPUk1fTElCX1BBVEggLiAicG5tdG8kc2F2ZV90eXBlICRhcmciOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfSAvLyBzd2l0Y2gKICAgICAgICByZXR1cm4gaW1wbG9kZSgnfCcsICR0aGlzLT5jb21tYW5kKTsKICAgIH0gCgogICAgLyoqCiAgICAgKiBTYXZlIHRoZSBpbWFnZSBmaWxlCiAgICAgKgogICAgICogQHBhcmFtICRmaWxlbmFtZSBzdHJpbmcgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gd3JpdGUgdG8KICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGUgKGpwZWcscG5nLi4uKTsKICAgICAqIEBwYXJhbSBpbnQgJHF1YWxpdHkgNzUKICAgICAqIEByZXR1cm4gbm9uZQogICAgICovCiAgICBmdW5jdGlvbiBzYXZlKCRmaWxlbmFtZSwgJHR5cGU9bnVsbCwgJHF1YWxpdHkgPSA4NSkKICAgIHsKICAgICAgICAkY21kID0gJHRoaXMtPl9wb3N0UHJvY2VzcygnJywgJHF1YWxpdHksICR0eXBlKSAuICI+JGZpbGVuYW1lIjsKICAgICAgICAgICAgCgkJLy9pZiB3ZSBoYXZlIHdpbmRvd3Mgc2VydmVyCiAgICAgICAgaWYoaXNzZXQoJF9FTlZbJ09TJ10pICYmIGVyZWdpKCdAd2luZG93QCcsJF9FTlZbJ09TJ10pKQoJCQkkY21kID0gc3RyX3JlcGxhY2UoJy8nLCdcXCcsJGNtZCk7CiAgICAgICAgLy9lY2hvICRjbWQuIiMjIjsKICAgICAgICAkb3V0cHV0ID0gc3lzdGVtKCRjbWQpOwoJCWVycm9yX2xvZygnTkVUUEJNOiAnLiRjbWQpOwoJCS8vZXJyb3JfbG9nKCRvdXRwdXQpOwogICAgICAgICR0aGlzLT5jb21tYW5kID0gYXJyYXkoKTsKICAgIH0gLy8gRW5kIHNhdmUKCgogICAgLyoqCiAgICAgKiBEaXNwbGF5IGltYWdlIHdpdGhvdXQgc2F2aW5nIGFuZCBsb3NlIGNoYW5nZXMKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0eXBlIChqcGVnLHBuZy4uLik7CiAgICAgKiBAcGFyYW0gaW50ICRxdWFsaXR5IDc1CiAgICAgKiBAcmV0dXJuIG5vbmUKICAgICAqLwogICAgZnVuY3Rpb24gZGlzcGxheSgkdHlwZSA9IG51bGwsICRxdWFsaXR5ID0gNzUpCiAgICB7CiAgICAgICAgaGVhZGVyKCdDb250ZW50LXR5cGU6IGltYWdlLycgLiAkdHlwZSk7CiAgICAgICAgJGNtZCA9ICR0aGlzLT5fcG9zdFByb2Nlc3MoJHR5cGUsICRxdWFsaXR5KTsKICAgICAgICAKICAgICAgICBwYXNzdGhydSgkY21kKTsKICAgICAgICAkdGhpcy0+Y29tbWFuZCA9IGFycmF5KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBEZXN0cm95IGltYWdlIGhhbmRsZQogICAgICoKICAgICAqIEByZXR1cm4gbm9uZQogICAgICovCiAgICBmdW5jdGlvbiBmcmVlKCkKICAgIHsKICAgICAgICAvLyB0aGVyZSBpcyBubyBpbWFnZSBoYW5kbGUgaGVyZQogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKCn0gLy8gRW5kIGNsYXNzIE5ldFBCTQo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lib/external/Image/package.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSIgPz4KPCFET0NUWVBFIHBhY2thZ2UgU1lTVEVNICJodHRwOi8vcGVhci5waHAubmV0L2R0ZC9wYWNrYWdlLTEuMCI+CjxwYWNrYWdlIHZlcnNpb249IjEuMCI+CiAgPG5hbWU+SW1hZ2VfVHJhbnNmb3JtPC9uYW1lPgogIDxzdW1tYXJ5PlByb3ZpZGVzIGEgc3RhbmRhcmQgaW50ZXJmYWNlIHRvIG1hbmlwdWxhdGUgaW1hZ2VzIHVzaW5nIGRpZmZlcmVudCBsaWJyYXJpZXM8L3N1bW1hcnk+CiAgPGRlc2NyaXB0aW9uPlRoaXMgcGFja2FnZSB3YXMgd3JpdHRlbiB0byBwcm92aWRlIGEgc2ltcGxlciBhbmQgY3Jvc3MtbGlicmFyeSBpbnRlcmZhY2UgdG8gZG9pbmcgaW1hZ2UgdHJhbnNmb3JtYXRpb25zIGFuZCBtYW5pcHVsYXRpb25zLgpJdCBwcm92aWRlcyA6CgoqIHN1cHBvcnQgZm9yIEdELCBJbWFnZU1hZ2ljaywgSW1hZ2ljayBhbmQgTmV0UEJNCiogZmlsZXMgcmVsYXRlZCBmdW5jdGlvbnMKKiBhZGRUZXh0CiogU2NhbGUgKGJ5IGxlbmd0aCwgcGVyY2VudGFnZSwgbWF4aW11bSBYL1kpCiogUmVzaXplCiogUm90YXRlIChjdXN0b20gYW5nbGUpCiogQWRkIGJvcmRlciAoc29vbikKKiBBZGQgc2hhZG93IChzb29uKTwvZGVzY3JpcHRpb24+CiAgPG1haW50YWluZXJzPgogICAgPG1haW50YWluZXI+CiAgICAgIDx1c2VyPnJleXdvYjwvdXNlcj4KICAgICAgPG5hbWU+UGV0ZXIgQm93eWVyPC9uYW1lPgogICAgICA8ZW1haWw+cGV0ZXJAbWFwbGVkZXNpZ24uY28udWs8L2VtYWlsPgogICAgICA8cm9sZT5sZWFkPC9yb2xlPgogICAgPC9tYWludGFpbmVyPgogICAgPG1haW50YWluZXI+CiAgICAgIDx1c2VyPnBham95ZTwvdXNlcj4KICAgICAgPG5hbWU+UGllcnJlLUFsYWluIEpveWU8L25hbWU+CiAgICAgIDxlbWFpbD5wYWpAcGVhcmZyLm9yZzwvZW1haWw+CiAgICAgIDxyb2xlPmxlYWQ8L3JvbGU+CiAgICA8L21haW50YWluZXI+CiAgPC9tYWludGFpbmVycz4KICA8cmVsZWFzZT4KICAgIDx2ZXJzaW9uPjAuODwvdmVyc2lvbj4KICAgIDxkYXRlPjIwMDMtMTItMjk8L2RhdGU+CiAgICA8bGljZW5zZT5QSFAgTGljZW5zZTwvbGljZW5zZT4KICAgIDxzdGF0ZT5hbHBoYTwvc3RhdGU+CiAgICA8bm90ZXM+U2Vjb25kIHB1YmxpYyByZWxlYXNlLCBob3BlZnVsbHkgbXVjaCBtb3JlIHN0YWJsZS4gIEFQSSBuZWFybHkgZml4ZWQuICBOT1QgTkVDRVNTQVJJTFkgQ09NUEFUSUJMRSBXSVRIIDAuMSAtIGJlIHdhcm5lZCE8L25vdGVzPgogICAgPGZpbGVsaXN0PgogICAgICA8ZmlsZSByb2xlPSJwaHAiIGJhc2VpbnN0YWxsZGlyPSJJbWFnZSIgbmFtZT0iVHJhbnNmb3JtLnBocCIvPgogICAgICA8ZmlsZSByb2xlPSJwaHAiIGJhc2VpbnN0YWxsZGlyPSJJbWFnZS9UcmFuc2Zvcm0iIG5hbWU9IkRyaXZlclxHRC5waHAiLz4KICAgICAgPGZpbGUgcm9sZT0icGhwIiBiYXNlaW5zdGFsbGRpcj0iSW1hZ2UvVHJhbnNmb3JtIiBuYW1lPSJEcml2ZXJcR0QxLnBocCIvPgogICAgICA8ZmlsZSByb2xlPSJwaHAiIGJhc2VpbnN0YWxsZGlyPSJJbWFnZS9UcmFuc2Zvcm0iIG5hbWU9IkRyaXZlclxJTS5waHAiLz4KICAgICAgPGZpbGUgcm9sZT0icGhwIiBiYXNlaW5zdGFsbGRpcj0iSW1hZ2UvVHJhbnNmb3JtIiBuYW1lPSJEcml2ZXJcTmV0UEJNLnBocCIvPgogICAgICA8ZmlsZSByb2xlPSJwaHAiIGJhc2VpbnN0YWxsZGlyPSJJbWFnZS9UcmFuc2Zvcm0iIG5hbWU9IkRyaXZlclxJbWFnaWNrLnBocCIvPgogICAgICA8ZmlsZSByb2xlPSJwaHAiIGJhc2VpbnN0YWxsZGlyPSJJbWFnZS9UcmFuc2Zvcm0iIG5hbWU9IkRyaXZlclxJbWFnaWNrMi5waHAiLz4KICAgICAgPGZpbGUgcm9sZT0icGhwIiBiYXNlaW5zdGFsbGRpcj0iSW1hZ2UvVHJhbnNmb3JtIiBuYW1lPSJEcml2ZXJcSW1saWIucGhwIi8+CiAgICAgIDxmaWxlIHJvbGU9InBocCIgYmFzZWluc3RhbGxkaXI9IkltYWdlL1RyYW5zZm9ybSIgbmFtZT0iRHJpdmVyXENvbG9yc0RlZnMucGhwIi8+CiAgICA8L2ZpbGVsaXN0PgogIDwvcmVsZWFzZT4KPC9wYWNrYWdlPgo=]]></data>
	</file>
	<file>
	  <filename>/lib/external/Image/Thumbnail.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIENyZWF0ZSB0aHVtYm5haWxzLgogKiBAYXV0aG9yICRBdXRob3I6IFdlaSBaaHVvICQKICogQHZlcnNpb24gJElkOiBUaHVtYm5haWwucGhwIDQxNjkgMjAwNy0wOS0yMSAwNjoyODo0OVogc2lsbWFyaWxsaW9uICQKICogQHBhY2thZ2UgSW1hZ2VNYW5hZ2VyCiAqLwoKCnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL1RyYW5zZm9ybS5waHAnKTsKCi8qKgogKiBUaHVtYm5haWwgY3JlYXRpb24KICogQGF1dGhvciAkQXV0aG9yOiBXZWkgWmh1byAkCiAqIEB2ZXJzaW9uICRJZDogVGh1bWJuYWlsLnBocCA0MTY5IDIwMDctMDktMjEgMDY6Mjg6NDlaIHNpbG1hcmlsbGlvbiAkCiAqIEBwYWNrYWdlIEltYWdlTWFuYWdlcgogKiBAc3VicGFja2FnZSBJbWFnZXMKICovCmNsYXNzIFRodW1ibmFpbCAKewoJLyoqCgkgKiBHcmFwaGljcyBkcml2ZXIsIEdELCBOZXRQQk0gb3IgSW1hZ2VNYWdpY2suCgkgKi8KCXZhciAkZHJpdmVyOwoKCS8qKgoJICogVGh1bWJuYWlsIGRlZmF1bHQgd2lkdGguCgkgKi8KCXZhciAkd2lkdGggPSA5NjsKCgkvKioKCSAqIFRodW1ibmFpbCBkZWZhdWx0IGhlaWdodC4KCSAqLwoJdmFyICRoZWlnaHQgPSA5NjsKCgkvKioKCSAqIFRodW1ibmFpbCBkZWZhdWx0IEpQRUcgcXVhbGl0eS4KCSAqLwoJdmFyICRxdWFsaXR5ID0gODU7CgoJLyoqCgkgKiBUaHVtYm5haWwgaXMgcHJvcG9ydGlvbmFsCgkgKi8KCXZhciAkcHJvcG9ydGlvbmFsID0gdHJ1ZTsKCgkvKioKCSAqIERlZmF1bHQgaW1hZ2UgdHlwZSBpcyBKUEVHLgoJICovCgl2YXIgJHR5cGUgPSAnanBlZyc7CgoJLyoqCgkgKiBDcmVhdGUgYSBuZXcgVGh1bWJuYWlsIGluc3RhbmNlLgoJICogQHBhcmFtIGludCAkd2lkdGggdGh1bWJuYWlsIHdpZHRoCgkgKiBAcGFyYW0gaW50ICRoZWlnaHQgdGh1bWJuYWlsIGhlaWdodAoJICovCglmdW5jdGlvbiBUaHVtYm5haWwoJHdpZHRoPTk2LCAkaGVpZ2h0PTk2KSAKCXsKCQkkdGhpcy0+ZHJpdmVyID0gSW1hZ2VfVHJhbnNmb3JtOjpmYWN0b3J5KElNQUdFX0NMQVNTKTsKCQkkdGhpcy0+d2lkdGggPSAkd2lkdGg7CgkJJHRoaXMtPmhlaWdodCA9ICRoZWlnaHQ7Cgl9CgoJLyoqCgkgKiBDcmVhdGUgYSB0aHVtYm5haWwuCgkgKiBAcGFyYW0gc3RyaW5nICRmaWxlIHRoZSBpbWFnZSBmb3IgdGhlIHRodW1ibmFpbAoJICogQHBhcmFtIHN0cmluZyAkdGh1bWJuYWlsIGlmIG5vdCBudWxsLCB0aGUgdGh1bWJuYWlsIHdpbGwgYmUgc2F2ZWQKCSAqIGFzIHRoaXMgcGFyYW1ldGVyIHZhbHVlLgoJICogQHJldHVybiBib29sZWFuIHRydWUgaWYgdGh1bWJuYWlsIGlzIGNyZWF0ZWQsIGZhbHNlIG90aGVyd2lzZQoJICovCglmdW5jdGlvbiBjcmVhdGVUaHVtYm5haWwoJGZpbGUsICR0aHVtYm5haWw9bnVsbCkgCgl7CgkJaWYoIWlzX2ZpbGUoJGZpbGUpKSAKCQkJUmV0dXJuIGZhbHNlOwoKCQkvL2Vycm9yX2xvZygnQ3JlYXRpbmcgVGh1bWJzOiAnLiRmaWxlKTsKCgkJJHRoaXMtPmRyaXZlci0+bG9hZCgkZmlsZSk7CgoJCWlmKCR0aGlzLT5wcm9wb3J0aW9uYWwpIAoJCXsKCQkJJHdpZHRoID0gJHRoaXMtPmRyaXZlci0+aW1nX3g7CgkJCSRoZWlnaHQgPSAkdGhpcy0+ZHJpdmVyLT5pbWdfeTsKCgkJCWlmICgkd2lkdGggPiAkaGVpZ2h0KQoJCQkJJHRoaXMtPmhlaWdodCA9IGludHZhbCgkdGhpcy0+d2lkdGgvJHdpZHRoKiRoZWlnaHQpOwoJCQllbHNlIGlmICgkaGVpZ2h0ID4gJHdpZHRoKQoJCQkJJHRoaXMtPndpZHRoID0gaW50dmFsKCR0aGlzLT5oZWlnaHQvJGhlaWdodCokd2lkdGgpOwoJCX0KCgkJJHRoaXMtPmRyaXZlci0+cmVzaXplKCR0aGlzLT53aWR0aCwgJHRoaXMtPmhlaWdodCk7CgoJCWlmKGlzX251bGwoJHRodW1ibmFpbCkpIAoJCQkkdGhpcy0+c2F2ZSgkZmlsZSk7CgkJZWxzZQoJCQkkdGhpcy0+c2F2ZSgkdGh1bWJuYWlsKTsKCgoJCSR0aGlzLT5mcmVlKCk7CgoJCWlmKGlzX2ZpbGUoJHRodW1ibmFpbCkpIAoJCQlSZXR1cm4gdHJ1ZTsKCQllbHNlCgkJCVJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIFNhdmUgdGhlIHRodW1ibmFpbCBmaWxlLgoJICogQHBhcmFtIHN0cmluZyAkZmlsZSBmaWxlIG5hbWUgdG8gYmUgc2F2ZWQgYXMuCgkgKi8KCWZ1bmN0aW9uIHNhdmUoJGZpbGUpIAoJewoJCSR0aGlzLT5kcml2ZXItPnNhdmUoJGZpbGUpOwoJfQoKCS8qKgoJICogRnJlZSB1cCB0aGUgZ3JhcGhpYyBkcml2ZXIgcmVzb3VyY2VzLgoJICovCglmdW5jdGlvbiBmcmVlKCkgCgl7CgkJJHRoaXMtPmRyaXZlci0+ZnJlZSgpOwoJfQp9CgoKPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/external/Image/Transform.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCioqIFRpdGxlLi4uLi4uLi4uOiAgSW1hZ2UgVHJhbnNmb3JtYXRpb24gSW50ZXJmYWNlCioqIFZlcnNpb24uLi4uLi4uOiAgMS4wCioqIEF1dGhvci4uLi4uLi4uOiAgWGlhbmcgV2VpIFpIVU8gPHdlaUB6aHVvLm9yZz4KKiogRmlsZW5hbWUuLi4uLi46ICBUcmFuc2Zvcm0ucGhwCioqIExhc3QgY2hhbmdlZC4uOiAgMzAgQXVnIDIwMDMgCioqIE5vdGVzLi4uLi4uLi4uOiAgT3JnaW5hbCBpcyBmcm9tIFBFQVIKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBBZGRlZCBhIGZldyBleHRyYSwKICAgICAgICAgICAgICAgICAgICAgICAgLSBjcmVhdGUgdW5pcXVlIGZpbGVuYW1lIGluIGEgcGFydGljdWxhciBkaXJlY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCBmb3IgdGVtcCBpbWFnZSBmaWxlcy4KICAgICAgICAgICAgICAgICAgICAgICAgLSBhZGRlZCBjcm9wcGluZyB0byBHRCwgTmV0UEJNLCBJbWFnZU1hZ2ljawoqKi8KCi8vICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwovLyB8IFBIUCBWZXJzaW9uIDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLy8gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi8vIHwgQ29weXJpZ2h0IChjKSAxOTk3LTIwMDIgVGhlIFBIUCBHcm91cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAovLyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLy8gfCBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdmVyc2lvbiAyLjAyIG9mIHRoZSBQSFAgbGljZW5zZSwgICAgICB8Ci8vIHwgdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UsIGFuZCBpcyAgICAgICAgfAovLyB8IGF2YWlsYWJsZSBhdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLy8gfCBodHRwOi8vd3d3LnBocC5uZXQvbGljZW5zZS8yXzAyLnR4dC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci8vIHwgSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIFBIUCBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvICAgfAovLyB8IG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYSBub3RlIHRvICAgICAgICAgIHwKLy8gfCBsaWNlbnNlQHBocC5uZXQgc28gd2UgY2FuIG1haWwgeW91IGEgY29weSBpbW1lZGlhdGVseS4gICAgICAgICAgICAgICB8Ci8vICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwovLyB8IEF1dGhvcnM6IFBldGVyIEJvd3llciA8cGV0ZXJAbWFwbGVkZXNpZ24uY28udWs+ICAgICAgICAgICAgICAgICAgICAgIHwKLy8gfCAgICAgICAgICBBbGFuIEtub3dsZXMgPGFsYW5AYWtia2hvbWUuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci8vIHwgICAgICAgICAgVmluY2VudCBPb3N0aW5kaWUgPHZpbmNlbnRAc3VubGlnaHQudG1md2ViLm5sPiAgICAgICAgICAgICAgfAovLyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLy8KLy8gJElkOiBUcmFuc2Zvcm0ucGhwIDc5OTcgMjAxMi0wNS0yOCAxNToxNDozOFogY2FsZ3V5MTAwMCAkCi8vCi8vIEltYWdlIFRyYW5zZm9ybWF0aW9uIGludGVyZmFjZQovLwoKCi8qKgogKiBUaGUgbWFpbiAiSW1hZ2VfUmVzaXplIiBjbGFzcyBpcyBhIGNvbnRhaW5lciBhbmQgYmFzZSBjbGFzcyB3aGljaAogKiBwcm92aWRlcyB0aGUgc3RhdGljIG1ldGhvZHMgZm9yIGNyZWF0aW5nIEltYWdlIG9iamVjdHMgYXMgd2VsbCBhcwogKiBzb21lIHV0aWxpdHkgZnVuY3Rpb25zIChtYXRocykgY29tbW9uIHRvIGFsbCBwYXJ0cyBvZiBJbWFnZSBSZXNpemUuCiAqCiAqIFRoZSBvYmplY3QgbW9kZWwgb2YgREIgaXMgYXMgZm9sbG93cyAoaW5kZW50YXRpb24gbWVhbnMgaW5oZXJpdGFuY2UpOgogKgogKiBJbWFnZV9SZXNpemUgVGhlIGJhc2UgZm9yIGVhY2ggSW1hZ2UgaW1wbGVtZW50YXRpb24uICBQcm92aWRlcyBkZWZhdWx0CiAqIHwgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbnMgKGluIE9PIGxpbmdvIHZpcnR1YWwgbWV0aG9kcykgZm9yCiAqIHwgICAgICAgICAgICB0aGUgYWN0dWFsIEltYWdlIGltcGxlbWVudGF0aW9ucyBhcyB3ZWxsIGFzIGEgYnVuY2ggb2YKICogfCAgICAgICAgICAgIG1hdGhzIG1ldGhvZHMuCiAqIHwKICogKy1JbWFnZV9HRCAgIFRoZSBJbWFnZSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIFBIUCBHRCBleHRlbnNpb24gLiAgSW5oZXJpdHMKICogICAgICAgICAgICAgIEltYWdlX1Jlc2l6ZQogKiAgICAgICAgICAgICAgV2hlbiBjYWxsaW5nIERCOjpzZXR1cCBmb3IgR0QgaW1hZ2VzIHRoZSBvYmplY3QgcmV0dXJuZWQgaXMgYW4KICogICAgICAgICAgICAgIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MuCiAqCiAqIEBwYWNrYWdlICBJbWFnZSBSZXNpemUKICogQHZlcnNpb24gIDEuMDAKICogQGF1dGhvciAgIFBldGVyIEJvd3llciA8cGV0ZXJAbWFwbGVkZXNpZ24uY28udWs+CiAqIEBzaW5jZSAgICBQSFAgNC4wCiAqLwpDbGFzcyBJbWFnZV9UcmFuc2Zvcm0KewogICAgLyoqCiAgICAgKiBOYW1lIG9mIHRoZSBpbWFnZSBmaWxlCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICB2YXIgJGltYWdlID0gJyc7CiAgICAvKioKICAgICAqIFR5cGUgb2YgdGhlIGltYWdlIGZpbGUgKGVnLiBqcGcsIGdpZiBwbmcgLi4uKQogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgdmFyICR0eXBlID0gJyc7CiAgICAvKioKICAgICAqIE9yaWdpbmFsIGltYWdlIHdpZHRoIGluIHggZGlyZWN0aW9uCiAgICAgKiBAdmFyIGludAogICAgICovCiAgICB2YXIgJGltZ194ID0gJyc7CiAgICAvKioKICAgICAqIE9yaWdpbmFsIGltYWdlIHdpZHRoIGluIHkgZGlyZWN0aW9uCiAgICAgKiBAdmFyIGludAogICAgICovCiAgICB2YXIgJGltZ195ID0gJyc7CiAgICAvKioKICAgICAqIE5ldyBpbWFnZSB3aWR0aCBpbiB4IGRpcmVjdGlvbgogICAgICogQHZhciBpbnQKICAgICAqLwogICAgdmFyICRuZXdfeCA9ICcnOwogICAgLyoqCiAgICAgKiBOZXcgaW1hZ2Ugd2lkdGggaW4geSBkaXJlY3Rpb24KICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHZhciAkbmV3X3kgPSAnJzsKICAgIC8qKgogICAgICogUGF0aCB0aGUgdGhlIGxpYnJhcnkgdXNlZAogICAgICogZS5nLiAvdXNyL2xvY2FsL0ltYWdlTWFnaWNrL2Jpbi8gb3IKICAgICAqIC91c3IvbG9jYWwvbmV0cGJtLwogICAgICovCiAgICB2YXIgJGxpYl9wYXRoID0gJyc7CiAgICAvKioKICAgICAqIEZsYWcgdG8gd2FybiBpZiBpbWFnZSBoYXMgYmVlbiByZXNpemVkIG1vcmUgdGhhbiBvbmNlIGJlZm9yZSBkaXNwbGF5aW5nCiAgICAgKiBvciBzYXZpbmcuCiAgICAgKi8KICAgICB2YXIgJHJlc2l6ZWQgPSBmYWxzZTsKCgogICAgIHZhciAkdWlkID0gJyc7CgogICAgIHZhciAkbGFwc2VfdGltZSA9OTAwOyAvLzE1IG1pbnMKCiAgICAvKioKICAgICAqIENyZWF0ZSBhIG5ldyBJbWFnZV9yZXNpemUgb2JqZWN0CiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkZHJpdmVyIG5hbWUgb2YgZHJpdmVyIGNsYXNzIHRvIGluaXRpYWxpemUKICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkIGEgbmV3bHkgY3JlYXRlZCBJbWFnZV9UcmFuc2Zvcm0gb2JqZWN0LCBvciBhIFBFQVIKICAgICAqIGVycm9yIG9iamVjdCBvbiBlcnJvcgogICAgICoKICAgICAqIEBzZWUgUEVBUjo6aXNFcnJvcigpCiAgICAgKiBAc2VlIEltYWdlX1RyYW5zZm9ybTo6c2V0T3B0aW9uKCkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiAmZmFjdG9yeSgkZHJpdmVyKQogICAgewogICAgICAgIGlmICgnJyA9PSAkZHJpdmVyKSB7CiAgICAgICAgICAgIGRpZSgiTm8gaW1hZ2UgbGlicmFyeSBzcGVjaWZpZWQuLi4gYWJvcnRpbmcuICBZb3UgbXVzdCBjYWxsIDo6ZmFjdG9yeSgpIHdpdGggb25lIHBhcmFtZXRlciwgdGhlIGxpYnJhcnkgdG8gbG9hZC4iKTsKCiAgICAgICAgfQoKICAgICAgICBpbmNsdWRlX29uY2UgKGRpcm5hbWUoX19GSUxFX18pLiIvJGRyaXZlci5waHAiKTsKCiAgICAgICAgJGNsYXNzbmFtZSA9ICJJbWFnZV9UcmFuc2Zvcm1fRHJpdmVyX3skZHJpdmVyfSI7CiAgICAgICAgJG9iaiA9IG5ldyAkY2xhc3NuYW1lOwogICAgICAgICRvYmotPnVpZCA9IG1kNSgkX1NFUlZFUlsnUkVNT1RFX0FERFInXSk7CiAgICAgICAgcmV0dXJuICRvYmo7CiAgICB9CgoKICAgIC8qKgogICAgICogUmVzaXplIHRoZSBJbWFnZSBpbiB0aGUgWCBhbmQvb3IgWSBkaXJlY3Rpb24KICAgICAqIElmIGVpdGhlciBpcyAwIGl0IHdpbGwgYmUgc2NhbGVkIHByb3BvcnRpb25hbGx5CiAgICAgKgogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJG5ld194ICgwLCBudW1iZXIsIHBlcmNlbnRhZ2UgMTAlIG9yIDAuMSkKICAgICAqIEBwYXJhbSBtaXhlZCAkbmV3X3kgKDAsIG51bWJlciwgcGVyY2VudGFnZSAxMCUgb3IgMC4xKQogICAgICoKICAgICAqIEByZXR1cm4gbWl4ZWQgbm9uZSBvciBQRUFSX2Vycm9yCiAgICAgKi8KICAgIGZ1bmN0aW9uIHJlc2l6ZSgkbmV3X3ggPSAwLCAkbmV3X3kgPSAwKQogICAgewogICAgICAgIC8vIDAgbWVhbnMga2VlcCBvcmlnaW5hbCBzaXplCiAgICAgICAgJG5ld194ID0gKDAgPT0gJG5ld194KSA/ICR0aGlzLT5pbWdfeCA6ICR0aGlzLT5fcGFyc2Vfc2l6ZSgkbmV3X3gsICR0aGlzLT5pbWdfeCk7CiAgICAgICAgJG5ld195ID0gKDAgPT0gJG5ld195KSA/ICR0aGlzLT5pbWdfeSA6ICR0aGlzLT5fcGFyc2Vfc2l6ZSgkbmV3X3ksICR0aGlzLT5pbWdfeSk7CiAgICAgICAgLy8gTm93IGRvIHRoZSBsaWJyYXJ5IHNwZWNpZmljIHJlc2l6aW5nLgogICAgICAgIHJldHVybiAkdGhpcy0+X3Jlc2l6ZSgkbmV3X3gsICRuZXdfeSk7CiAgICB9IC8vIEVuZCByZXNpemUKCgogICAgLyoqCiAgICAgKiBTY2FsZSB0aGUgaW1hZ2UgdG8gaGF2ZSB0aGUgbWF4IHggZGltZW5zaW9uIHNwZWNpZmllZC4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRuZXdfeCBTaXplIHRvIHNjYWxlIFgtZGltZW5zaW9uIHRvCiAgICAgKiBAcmV0dXJuIG5vbmUKICAgICAqLwogICAgZnVuY3Rpb24gc2NhbGVNYXhYKCRuZXdfeCkKICAgIHsKICAgICAgICAkbmV3X3kgPSByb3VuZCgoJG5ld194IC8gJHRoaXMtPmltZ194KSAqICR0aGlzLT5pbWdfeSwgMCk7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fcmVzaXplKCRuZXdfeCwgJG5ld195KTsKICAgIH0gLy8gRW5kIHJlc2l6ZVgKCiAgICAvKioKICAgICAqIFNjYWxlIHRoZSBpbWFnZSB0byBoYXZlIHRoZSBtYXggeSBkaW1lbnNpb24gc3BlY2lmaWVkLgogICAgICoKICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgKiBAcGFyYW0gaW50ICRuZXdfeSBTaXplIHRvIHNjYWxlIFktZGltZW5zaW9uIHRvCiAgICAgKiBAcmV0dXJuIG5vbmUKICAgICAqLwogICAgZnVuY3Rpb24gc2NhbGVNYXhZKCRuZXdfeSkKICAgIHsKICAgICAgICAkbmV3X3ggPSByb3VuZCgoJG5ld195IC8gJHRoaXMtPmltZ195KSAqICR0aGlzLT5pbWdfeCwgMCk7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fcmVzaXplKCRuZXdfeCwgJG5ld195KTsKICAgIH0gLy8gRW5kIHJlc2l6ZVkKCiAgICAvKioKICAgICAqIFNjYWxlIEltYWdlIHRvIGEgbWF4aW11bSBvciBwZXJjZW50YWdlCiAgICAgKgogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqIEBwYXJhbSBtaXhlZCAobnVtYmVyLCBwZXJjZW50YWdlIDEwJSBvciAwLjEpCiAgICAgKiBAcmV0dXJuIG1peGVkIG5vbmUgb3IgUEVBUl9lcnJvcgogICAgICovCiAgICBmdW5jdGlvbiBzY2FsZSgkc2l6ZSkKICAgIHsKICAgICAgICBpZiAoKHN0cmxlbigkc2l6ZSkgPiAxKSAmJiAoc3Vic3RyKCRzaXplLC0xKSA9PSAnJScpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2NhbGVCeVBlcmNlbnRhZ2Uoc3Vic3RyKCRzaXplLCAwLCAtMSkpOwogICAgICAgIH0gZWxzZWlmICgkc2l6ZSA8IDEpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zY2FsZUJ5RmFjdG9yKCRzaXplKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNjYWxlQnlMZW5ndGgoJHNpemUpOwogICAgICAgIH0KICAgIH0gLy8gRW5kIHNjYWxlCgogICAgLyoqCiAgICAgKiBTY2FsZXMgYW4gaW1hZ2UgdG8gYSBwZXJjZW50YWdlIG9mIGl0cyBvcmlnaW5hbCBzaXplLiAgRm9yIGV4YW1wbGUsIGlmCiAgICAgKiBteSBpbWFnZSB3YXMgNjQweDQ4MCBhbmQgSSBjYWxsZWQgc2NhbGVCeVBlcmNlbnRhZ2UoMTApIHRoZW4gdGhlIGltYWdlCiAgICAgKiB3b3VsZCBiZSByZXNpemVkIHRvIDY0eDQ4CiAgICAgKgogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqIEBwYXJhbSBpbnQgJHNpemUgUGVyY2VudGFnZSBvZiBvcmlnaW5hbCBzaXplIHRvIHNjYWxlIHRvCiAgICAgKiBAcmV0dXJuIG5vbmUKICAgICAqLwogICAgZnVuY3Rpb24gc2NhbGVCeVBlcmNlbnRhZ2UoJHNpemUpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zY2FsZUJ5RmFjdG9yKCRzaXplIC8gMTAwKTsKICAgIH0gLy8gRW5kIHNjYWxlQnlQZXJjZW50YWdlCgogICAgLyoqCiAgICAgKiBTY2FsZXMgYW4gaW1hZ2UgdG8gYSBmYWN0b3Igb2YgaXRzIG9yaWdpbmFsIHNpemUuICBGb3IgZXhhbXBsZSwgaWYKICAgICAqIG15IGltYWdlIHdhcyA2NDB4NDgwIGFuZCBJIGNhbGxlZCBzY2FsZUJ5RmFjdG9yKDAuNSkgdGhlbiB0aGUgaW1hZ2UKICAgICAqIHdvdWxkIGJlIHJlc2l6ZWQgdG8gMzIweDI0MC4KICAgICAqCiAgICAgKiBAYWNjZXNzIHB1YmxpYwogICAgICogQHBhcmFtIGZsb2F0ICRzaXplIEZhY3RvciBvZiBvcmlnaW5hbCBzaXplIHRvIHNjYWxlIHRvCiAgICAgKiBAcmV0dXJuIG5vbmUKICAgICAqLwogICAgZnVuY3Rpb24gc2NhbGVCeUZhY3Rvcigkc2l6ZSkKICAgIHsKICAgICAgICAkbmV3X3ggPSByb3VuZCgkc2l6ZSAqICR0aGlzLT5pbWdfeCwgMCk7CiAgICAgICAgJG5ld195ID0gcm91bmQoJHNpemUgKiAkdGhpcy0+aW1nX3ksIDApOwogICAgICAgIHJldHVybiAkdGhpcy0+X3Jlc2l6ZSgkbmV3X3gsICRuZXdfeSk7CiAgICB9IC8vIEVuZCBzY2FsZUJ5RmFjdG9yCgogICAgLyoqCiAgICAgKiBTY2FsZXMgYW4gaW1hZ2Ugc28gdGhhdCB0aGUgbG9uZ2VzdCBzaWRlIGhhcyB0aGlzIGRpbWVuc2lvbi4KICAgICAqCiAgICAgKiBAYWNjZXNzIHB1YmxpYwogICAgICogQHBhcmFtIGludCAkc2l6ZSBNYXggZGltZW5zaW9uIGluIHBpeGVscwogICAgICogQHJldHVybiBub25lCiAgICAgKi8KICAgIGZ1bmN0aW9uIHNjYWxlQnlMZW5ndGgoJHNpemUpCiAgICB7CiAgICAgICAgIGlmICgkdGhpcy0+aW1nX3ggPj0gJHRoaXMtPmltZ195KSB7CiAgICAgICAgICAgICRuZXdfeCA9ICRzaXplOwogICAgICAgICAgICAkbmV3X3kgPSByb3VuZCgoJG5ld194IC8gJHRoaXMtPmltZ194KSAqICR0aGlzLT5pbWdfeSwgMCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJG5ld195ID0gJHNpemU7CiAgICAgICAgICAgICRuZXdfeCA9IHJvdW5kKCgkbmV3X3kgLyAkdGhpcy0+aW1nX3kpICogJHRoaXMtPmltZ194LCAwKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICR0aGlzLT5fcmVzaXplKCRuZXdfeCwgJG5ld195KTsKICAgIH0gLy8gRW5kIHNjYWxlQnlMZW5ndGgKCgogICAgLyoqCiAgICAgKgogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBmdW5jdGlvbiBfZ2V0X2ltYWdlX2RldGFpbHMoJGltYWdlKQogICAgewogICAgICAgIC8vZWNobyAkaW1hZ2U7CiAgICAgICAgJGRhdGEgPSBAR2V0SW1hZ2VTaXplKCRpbWFnZSk7CiAgICAgICAgIzEgPSBHSUYsIDIgPSBKUEcsIDMgPSBQTkcsIDQgPSBTV0YsIDUgPSBQU0QsIDYgPSBCTVAsIDcgPSBUSUZGKGludGVsIGJ5dGUgb3JkZXIpLCA4ID0gVElGRihtb3Rvcm9sYSBieXRlIG9yZGVyLAogICAgICAgICMgOSA9IEpQQywgMTAgPSBKUDIsIDExID0gSlBYLCAxMiA9IEpCMiwgMTMgPSBTV0MKICAgICAgICBpZiAoaXNfYXJyYXkoJGRhdGEpKXsKICAgICAgICAgICAgc3dpdGNoKCRkYXRhWzJdKXsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICdnaWYnOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ2pwZWcnOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ3BuZyc7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAnc3dmJzsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICdwc2QnOwogICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ2JtcCc7CiAgICAgICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAndGlmZic7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIGVjaG8oIldlIGRvIG5vdCByZWNvZ25pemUgdGhpcyBpbWFnZSBmb3JtYXQiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+aW1nX3ggPSAkZGF0YVswXTsKICAgICAgICAgICAgJHRoaXMtPmltZ195ID0gJGRhdGFbMV07CiAgICAgICAgICAgICR0aGlzLT50eXBlID0gJHR5cGU7CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlY2hvKCJDYW5ub3QgZmV0Y2ggaW1hZ2Ugb3IgaW1hZ2VzIGRldGFpbHMuIik7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgICAgICAvKgogICAgICAgICRvdXRwdXQgPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJyA9PiAkZGF0YVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCcgPT4gJGRhdGFbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyA9PiAkdHlwZQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgIHJldHVybiAkb3V0cHV0OwogICAgICAgICovCiAgICB9CgoKICAgIC8qKgogICAgICogUGFyc2UgaW5wdXQgYW5kIGNvbnZlcnQKICAgICAqIElmIGVpdGhlciBpcyAwIGl0IHdpbGwgYmUgc2NhbGVkIHByb3BvcnRpb25hbGx5CiAgICAgKgogICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICRuZXdfc2l6ZSAoMCwgbnVtYmVyLCBwZXJjZW50YWdlIDEwJSBvciAwLjEpCiAgICAgKiBAcGFyYW0gaW50ICRvbGRfc2l6ZQogICAgICoKICAgICAqIEByZXR1cm4gbWl4ZWQgbm9uZSBvciBQRUFSX2Vycm9yCiAgICAgKi8KICAgIGZ1bmN0aW9uIF9wYXJzZV9zaXplKCRuZXdfc2l6ZSwgJG9sZF9zaXplKQogICAgewogICAgICAgIGlmICgnJScgPT0gJG5ld19zaXplKSB7CiAgICAgICAgICAgICRuZXdfc2l6ZSA9IHN0cl9yZXBsYWNlKCclJywnJywkbmV3X3NpemUpOwogICAgICAgICAgICAkbmV3X3NpemUgPSAkbmV3X3NpemUgLyAxMDA7CiAgICAgICAgfQogICAgICAgIGlmICgkbmV3X3NpemUgPiAxKSB7CiAgICAgICAgICAgIHJldHVybiAoaW50KSAkbmV3X3NpemU7CiAgICAgICAgfSBlbHNlaWYgKCRuZXdfc2l6ZSA9PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAoaW50KSAkb2xkX3NpemU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIChpbnQpIHJvdW5kKCRuZXdfc2l6ZSAqICRvbGRfc2l6ZSwgMCk7CiAgICAgICAgfQogICAgfQoKCiAgICBmdW5jdGlvbiB1bmlxdWVTdHIoKQogICAgewogICAgICByZXR1cm4gc3Vic3RyKG1kNShtaWNyb3RpbWUoKSksMCw2KTsKICAgIH0KCiAgICAvL2RlbGV0ZSBvbGQgdG1wIGZpbGVzLCBhbmQgYWxsb3cgb25seSAxIGZpbGUgcGVyIHJlbW90ZSBob3N0LgogICAgZnVuY3Rpb24gY2xlYW5VcCgkaWQsICRkaXIpCiAgICB7CiAgICAgICAgJGQgPSBkaXIoJGRpcik7CiAgICAgICAgJGlkX2xlbmd0aCA9IHN0cmxlbigkaWQpOwoKICAgICAgICB3aGlsZSAoZmFsc2UgIT09ICgkZW50cnkgPSAkZC0+cmVhZCgpKSkgewogICAgICAgICAgICBpZiAoaXNfZmlsZSgkZGlyLicvJy4kZW50cnkpICYmIHN1YnN0cigkZW50cnksMCwxKSA9PSAnLicgJiYgIXByZWdfbWF0Y2goJ0AnLiRlbnRyeS4nQCcsICR0aGlzLT5pbWFnZSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8vZWNobyBmaWxlbXRpbWUoJHRoaXMtPmRpcmVjdG9yeS4nLycuJGVudHJ5KS4iPGJyPiI7IAogICAgICAgICAgICAgICAgLy9lY2hvIHRpbWUoKTsKCiAgICAgICAgICAgICAgICBpZiAoZmlsZW10aW1lKCRkaXIuJy8nLiRlbnRyeSkgKyAkdGhpcy0+bGFwc2VfdGltZSA8IHRpbWUoKSkKICAgICAgICAgICAgICAgICAgICB1bmxpbmsoJGRpci4nLycuJGVudHJ5KTsKCiAgICAgICAgICAgICAgICBpZiAoc3Vic3RyKCRlbnRyeSwgMSwgJGlkX2xlbmd0aCkgPT0gJGlkKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlmIChpc19maWxlKCRkaXIuJy8nLiRlbnRyeSkpCiAgICAgICAgICAgICAgICAgICAgICAgIHVubGluaygkZGlyLicvJy4kZW50cnkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRkLT5jbG9zZSgpOwogICAgfQoKCiAgICBmdW5jdGlvbiBjcmVhdGVVbmlxdWUoJGRpcikKICAgIHsKICAgICAgICR1bmlxdWVfc3RyID0gJy4nLiR0aGlzLT51aWQuJ18nLiR0aGlzLT51bmlxdWVTdHIoKS4iLiIuJHRoaXMtPnR5cGU7CiAgICAgICAgCiAgICAgICAvL21ha2Ugc3VyZSB0aGUgdGhlIHVuaXF1ZSB0ZW1wIGZpbGUgZG9lcyBub3QgZXhpc3RzCiAgICAgICAgd2hpbGUgKGZpbGVfZXhpc3RzKCRkaXIuJHVuaXF1ZV9zdHIpKQogICAgICAgIHsKICAgICAgICAgICAgJHVuaXF1ZV9zdHIgPSAnLicuJHRoaXMtPnVpZC4nXycuJHRoaXMtPnVuaXF1ZVN0cigpLiIuIi4kdGhpcy0+dHlwZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICR0aGlzLT5jbGVhblVwKCR0aGlzLT51aWQsICRkaXIpOwoKICAgICAgIHJldHVybiAkdW5pcXVlX3N0cjsKICAgIH0KCgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGltYWdlIHdpZHRoCiAgICAgKiBAcGFyYW0gaW50ICRzaXplIGRpbWVuc2lvbiB0byBzZXQKICAgICAqIEBzaW5jZSAyOS8wNS8wMiAxMzozNjozMQogICAgICogQHJldHVybgogICAgICovCiAgICBmdW5jdGlvbiBfc2V0X2ltZ194KCRzaXplKQogICAgewogICAgICAgICR0aGlzLT5pbWdfeCA9ICRzaXplOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBpbWFnZSBoZWlnaHQKICAgICAqIEBwYXJhbSBpbnQgJHNpemUgZGltZW5zaW9uIHRvIHNldAogICAgICogQHNpbmNlIDI5LzA1LzAyIDEzOjM2OjMxCiAgICAgKiBAcmV0dXJuCiAgICAgKi8KICAgIGZ1bmN0aW9uIF9zZXRfaW1nX3koJHNpemUpCiAgICB7CiAgICAgICAgJHRoaXMtPmltZ195ID0gJHNpemU7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGltYWdlIHdpZHRoCiAgICAgKiBAcGFyYW0gaW50ICRzaXplIGRpbWVuc2lvbiB0byBzZXQKICAgICAqIEBzaW5jZSAyOS8wNS8wMiAxMzozNjozMQogICAgICogQHJldHVybgogICAgICovCiAgICBmdW5jdGlvbiBfc2V0X25ld194KCRzaXplKQogICAgewogICAgICAgICR0aGlzLT5uZXdfeCA9ICRzaXplOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBpbWFnZSBoZWlnaHQKICAgICAqIEBwYXJhbSBpbnQgJHNpemUgZGltZW5zaW9uIHRvIHNldAogICAgICogQHNpbmNlIDI5LzA1LzAyIDEzOjM2OjMxCiAgICAgKiBAcmV0dXJuCiAgICAgKi8KICAgIGZ1bmN0aW9uIF9zZXRfbmV3X3koJHNpemUpCiAgICB7CiAgICAgICAgJHRoaXMtPm5ld195ID0gJHNpemU7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHR5cGUgb2YgdGhlIGltYWdlIGJlaW5nIG1hbmlwdWxhdGVkCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgJHRoaXMtPnR5cGUgdGhlIGltYWdlIHR5cGUKICAgICAqLwogICAgZnVuY3Rpb24gZ2V0SW1hZ2VUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnR5cGU7CiAgICB9CgogICAgLyoqCiAgICAgKgogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqIEByZXR1cm4gc3RyaW5nIHdlYi1zYWZlIGltYWdlIHR5cGUKICAgICAqLwogICAgZnVuY3Rpb24gZ2V0V2ViU2FmZUZvcm1hdCgpCiAgICB7CiAgICAgICAgc3dpdGNoKCR0aGlzLT50eXBlKXsKICAgICAgICAgICAgY2FzZSAnZ2lmJzoKCSAgICAJcmV0dXJuICdnaWYnOwoJCWJyZWFrOwogICAgICAgICAgICBjYXNlICdwbmcnOgogICAgICAgICAgICAgICAgcmV0dXJuICdwbmcnOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICByZXR1cm4gJ2pwZWcnOwogICAgICAgIH0gLy8gc3dpdGNoCiAgICB9CgogICAgLyoqCiAgICAgKiBQbGFjZSBob2xkZXIgZm9yIHRoZSByZWFsIHJlc2l6ZSBtZXRob2QKICAgICAqIHVzZWQgYnkgZXh0ZW5kZWQgbWV0aG9kcyB0byBkbyB0aGUgcmVzaXppbmcKICAgICAqCiAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAqIEByZXR1cm4gUEVBUl9lcnJvcgogICAgICovCiAgICBmdW5jdGlvbiBfcmVzaXplKCkgewogICAgICAgIHJldHVybiBudWxsOyAvL1BFQVI6OnJhaXNlRXJyb3IoIk5vIFJlc2l6ZSBtZXRob2QgZXhpc3RzIiwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBQbGFjZSBob2xkZXIgZm9yIHRoZSByZWFsIGxvYWQgbWV0aG9kCiAgICAgKiB1c2VkIGJ5IGV4dGVuZGVkIG1ldGhvZHMgdG8gZG8gdGhlIHJlc2l6aW5nCiAgICAgKgogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqIEByZXR1cm4gUEVBUl9lcnJvcgogICAgICovCiAgICBmdW5jdGlvbiBsb2FkKCRmaWxlbmFtZSkgewogICAgICAgIHJldHVybiBudWxsOyAvL1BFQVI6OnJhaXNlRXJyb3IoIk5vIExvYWQgbWV0aG9kIGV4aXN0cyIsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUGxhY2UgaG9sZGVyIGZvciB0aGUgcmVhbCBkaXNwbGF5IG1ldGhvZAogICAgICogdXNlZCBieSBleHRlbmRlZCBtZXRob2RzIHRvIGRvIHRoZSByZXNpemluZwogICAgICoKICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgKiBAcGFyYW0gc3RyaW5nIGZpbGVuYW1lCiAgICAgKiBAcmV0dXJuIFBFQVJfZXJyb3IKICAgICAqLwogICAgZnVuY3Rpb24gZGlzcGxheSgkdHlwZSwgJHF1YWxpdHkpIHsKICAgICAgICByZXR1cm4gbnVsbDsgLy9QRUFSOjpyYWlzZUVycm9yKCJObyBEaXNwbGF5IG1ldGhvZCBleGlzdHMiLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFBsYWNlIGhvbGRlciBmb3IgdGhlIHJlYWwgc2F2ZSBtZXRob2QKICAgICAqIHVzZWQgYnkgZXh0ZW5kZWQgbWV0aG9kcyB0byBkbyB0aGUgcmVzaXppbmcKICAgICAqCiAgICAgKiBAYWNjZXNzIHB1YmxpYwogICAgICogQHBhcmFtIHN0cmluZyBmaWxlbmFtZQogICAgICogQHJldHVybiBQRUFSX2Vycm9yCiAgICAgKi8KICAgIGZ1bmN0aW9uIHNhdmUoJGZpbGVuYW1lLCAkdHlwZT0nJywgJHF1YWxpdHk9ODUpIHsKICAgICAgICByZXR1cm4gbnVsbDsgLy9QRUFSOjpyYWlzZUVycm9yKCJObyBTYXZlIG1ldGhvZCBleGlzdHMiLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFBsYWNlIGhvbGRlciBmb3IgdGhlIHJlYWwgZnJlZSBtZXRob2QKICAgICAqIHVzZWQgYnkgZXh0ZW5kZWQgbWV0aG9kcyB0byBkbyB0aGUgcmVzaXppbmcKICAgICAqCiAgICAgKiBAYWNjZXNzIHB1YmxpYwogICAgICogQHJldHVybiBQRUFSX2Vycm9yCiAgICAgKi8KICAgIGZ1bmN0aW9uIGZyZWUoKSB7CiAgICAgICAgcmV0dXJuIG51bGw7IC8vUEVBUjo6cmFpc2VFcnJvcigiTm8gRnJlZSBtZXRob2QgZXhpc3RzIiwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXZlcnNlIG9mIHJnYjJjb2xvcm5hbWUuCiAgICAgKgogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqIEByZXR1cm4gUEVBUl9lcnJvcgogICAgICoKICAgICAqIEBzZWUgcmdiMmNvbG9ybmFtZQogICAgICovCiAgICBmdW5jdGlvbiBjb2xvcmhleDJjb2xvcmFycmF5KCRjb2xvcmhleCkgewogICAgICAgICRyID0gaGV4ZGVjKHN1YnN0cigkY29sb3JoZXgsIDEsIDIpKTsKICAgICAgICAkZyA9IGhleGRlYyhzdWJzdHIoJGNvbG9yaGV4LCAzLCAyKSk7CiAgICAgICAgJGIgPSBoZXhkZWMoc3Vic3RyKCRjb2xvcmhleCwgNCwgMikpOwogICAgICAgIHJldHVybiBhcnJheSgkciwkZywkYik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXZlcnNlIG9mIHJnYjJjb2xvcm5hbWUuCiAgICAgKgogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqIEByZXR1cm4gUEVBUl9lcnJvcgogICAgICoKICAgICAqIEBzZWUgcmdiMmNvbG9ybmFtZQogICAgICovCiAgICBmdW5jdGlvbiBjb2xvcmFycmF5MmNvbG9yaGV4KCRjb2xvcikgewogICAgICAgICRjb2xvciA9ICcjJy5kZWNoZXgoJGNvbG9yWzBdKS5kZWNoZXgoJGNvbG9yWzFdKS5kZWNoZXgoJGNvbG9yWzJdKTsKICAgICAgICByZXR1cm4gc3RybGVuKCRjb2xvcik+Nj9mYWxzZTokY29sb3I7CiAgICB9CgoKICAgIC8qIE1ldGhvZHMgdG8gYWRkIHRvIHRoZSBkcml2ZXIgY2xhc3NlcyBpbiB0aGUgZnV0dXJlICovCiAgICBmdW5jdGlvbiBhZGRUZXh0KCRwYXJhbXMpCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGw7IC8vUEVBUjo6cmFpc2VFcnJvcigiTm8gYWRkVGV4dCBtZXRob2QgZXhpc3RzIiwgdHJ1ZSk7CiAgICB9CgogICAgZnVuY3Rpb24gYWRkRHJvcFNoYWRvdygpCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGw7IC8vUEVBUjo6cmFpc2VFcnJvcigiTm8gQWRkRHJvcFNoYWRvdyBtZXRob2QgZXhpc3RzIiwgdHJ1ZSk7CiAgICB9CgogICAgZnVuY3Rpb24gYWRkQm9yZGVyKCkKICAgIHsKICAgICAgICByZXR1cm4gbnVsbDsgLy9QRUFSOjpyYWlzZUVycm9yKCJObyBhZGRCb3JkZXIgbWV0aG9kIGV4aXN0cyIsIHRydWUpOwogICAgfQoKICAgIGZ1bmN0aW9uIGNyb3AoJG5ld194LCAkbmV3X3ksICRuZXdfd2lkdGgsICRuZXdfaGVpZ2h0KQogICAgewogICAgICAgIHJldHVybiBudWxsOyAvL1BFQVI6OnJhaXNlRXJyb3IoIk5vIGNyb3AgbWV0aG9kIGV4aXN0cyIsIHRydWUpOwogICAgfQoKICAgIGZ1bmN0aW9uIGZsaXAoJGhvcml6b250YWwpIAogICAgewogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIGZ1bmN0aW9uIGdhbW1hKCkKICAgIHsKICAgICAgICByZXR1cm4gbnVsbDsgLy9QRUFSOjpyYWlzZUVycm9yKCJObyBnYW1tYSBtZXRob2QgZXhpc3RzIiwgdHJ1ZSk7CiAgICB9Cn0KPz4K]]></data>
	</file>
	<file>
	  <filename>/lib/external/Image/~backup/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/external/Image/~backup/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lib/external/Image/~backup/Transform.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyogdmltOiBzZXQgZXhwYW5kdGFiIHRhYnN0b3A9NCBzaGlmdHdpZHRoPTQ6ICovDQoNCi8qKg0KICogU2ltcGxlIGFuZCBjcm9zcy1saWJyYXJ5IHBhY2thZ2UgdG8gZG9pbmcgaW1hZ2UgdHJhbnNmb3JtYXRpb25zIGFuZA0KICogbWFuaXB1bGF0aW9ucy4NCiAqDQogKiBQSFAgdmVyc2lvbnMgNCBhbmQgNQ0KICoNCiAqIExJQ0VOU0U6IFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB2ZXJzaW9uIDMuMCBvZiB0aGUgUEhQIGxpY2Vuc2UNCiAqIHRoYXQgaXMgYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoZSBmb2xsb3dpbmcgVVJJOg0KICogaHR0cDovL3d3dy5waHAubmV0L2xpY2Vuc2UvM18wLnR4dC4gIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mDQogKiB0aGUgUEhQIExpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdlYiwgcGxlYXNlDQogKiBzZW5kIGEgbm90ZSB0byBsaWNlbnNlQHBocC5uZXQgc28gd2UgY2FuIG1haWwgeW91IGEgY29weSBpbW1lZGlhdGVseS4NCiAqDQogKiBAY2F0ZWdvcnkgIEltYWdlDQogKiBAcGFja2FnZSAgIEltYWdlX1RyYW5zZm9ybQ0KICogQGF1dGhvciAgICBWaW5jZW50IE9vc3RpbmRpZSA8dmluY2VudEBzdW5saWdodC50bWZ3ZWIubmw+DQogKiBAYXV0aG9yICAgIEFsYW4gS25vd2xlcyA8YWxhbkBha2JraG9tZS5jb20+DQogKiBAYXV0aG9yICAgIFBldGVyIEJvd3llciA8cGV0ZXJAbWFwbGVkZXNpZ24uY28udWs+DQogKiBAYXV0aG9yICAgIFBoaWxpcHBlIEphdXNpb25zIDxQaGlsaXBwZS5KYXVzaW9uc0AxMWFiYWN1cy5jb20+DQogKiBAY29weXJpZ2h0IDIwMDItMjAwNyBUaGUgUEhQIEdyb3VwDQogKiBAbGljZW5zZSAgIGh0dHA6Ly93d3cucGhwLm5ldC9saWNlbnNlLzNfMC50eHQgIFBIUCBMaWNlbnNlIDMuMA0KICogQHZlcnNpb24gICBDVlM6ICRJZDogVHJhbnNmb3JtLnBocCAzMjI2NTkgMjAxMi0wMS0yNCAxMTo1NjoyMlogY2xvY2t3ZXJ4ICQNCiAqIEBsaW5rICAgICAgaHR0cDovL3BlYXIucGhwLm5ldC9wYWNrYWdlL0ltYWdlX1RyYW5zZm9ybQ0KICovDQoNCi8qKg0KICogSW5jbHVkZSBmb3IgZXJyb3IgaGFuZGxpbmcNCiAqLw0KLy9yZXF1aXJlX29uY2UgJ1BFQVIucGhwJzsNCg0KLyoqDQogKiBFcnJvciBjb2RlIGZvciB1bnN1cHBvcnRlZCBsaWJyYXJ5LCBpbWFnZSBmb3JtYXQgb3IgbWV0aG9kcw0KICovDQpkZWZpbmUoJ0lNQUdFX1RSQU5TRk9STV9FUlJPUl9VTlNVUFBPUlRFRCcsIDEpOw0KDQovKioNCiAqIEVycm9yIGNvZGUgZm9yIGZhaWxlZCB0cmFuc2Zvcm1hdGlvbiBvcGVyYXRpb25zDQogKi8NCmRlZmluZSgnSU1BR0VfVFJBTlNGT1JNX0VSUk9SX0ZBSUxFRCcsIDIpOw0KDQovKioNCiAqIEVycm9yIGNvZGUgZm9yIGZhaWxlZCBpL28gKElucHV0L091dHB1dCkgb3BlcmF0aW9ucw0KICovDQpkZWZpbmUoJ0lNQUdFX1RSQU5TRk9STV9FUlJPUl9JTycsIDMpOw0KDQovKioNCiAqIEVycm9yIGNvZGUgZm9yIGludmFsaWQgYXJndW1lbnRzDQogKi8NCmRlZmluZSgnSU1BR0VfVFJBTlNGT1JNX0VSUk9SX0FSR1VNRU5UJywgNCk7DQoNCi8qKg0KICogRXJyb3IgY29kZSBmb3Igb3V0LW9mLWJvdW5kIHJlbGF0ZWQgZXJyb3JzDQogKi8NCmRlZmluZSgnSU1BR0VfVFJBTlNGT1JNX0VSUk9SX09VVE9GQk9VTkQnLCA1KTsNCg0KLyoqDQogKiBFcnJvciBjb2RlIGZvciBpbmV4c2l0YW50IGRyaXZlciBlcnJvcnMNCiAqLw0KZGVmaW5lKCdJTUFHRV9UUkFOU0ZPUk1fRFJJVkVSX0ZJTEVfTUlTU0lORycsIDYpOw0KDQovKioNCiAqIEJhc2UgY2xhc3Mgd2l0aCBmYWN0b3J5IG1ldGhvZCBmb3IgYmFja2VuZCBkcml2ZXINCiAqDQogKiBUaGUgbWFpbiAiSW1hZ2VfVHJhbnNmb3JtIiBjbGFzcyBpcyBhIGNvbnRhaW5lciBhbmQgYmFzZSBjbGFzcyB3aGljaA0KICogcHJvdmlkZXMgYSBzdGF0aWMgbWV0aG9kIGZvciBjcmVhdGluZyBhbiBJbWFnZSBvYmplY3QgYXMgd2VsbCBhcw0KICogc29tZSB1dGlsaXR5IGZ1bmN0aW9ucyAobWF0aHMpIGNvbW1vbiB0byBhbGwgcGFydHMgb2YgSW1hZ2VfVHJhbnNmb3JtLg0KICoNCiAqIEBjYXRlZ29yeSAgSW1hZ2UNCiAqIEBwYWNrYWdlICAgSW1hZ2VfVHJhbnNmb3JtDQogKiBAYXV0aG9yICAgIEFsYW4gS25vd2xlcyA8YWxhbkBha2JraG9tZS5jb20+DQogKiBAYXV0aG9yICAgIFBldGVyIEJvd3llciA8cGV0ZXJAbWFwbGVkZXNpZ24uY28udWs+DQogKiBAYXV0aG9yICAgIFBoaWxpcHBlIEphdXNpb25zIDxQaGlsaXBwZS5KYXVzaW9uc0AxMWFiYWN1cy5jb20+DQogKiBAY29weXJpZ2h0IDIwMDItMjAwNyBUaGUgUEhQIEdyb3VwDQogKiBAbGljZW5zZSAgIGh0dHA6Ly93d3cucGhwLm5ldC9saWNlbnNlLzNfMC50eHQgIFBIUCBMaWNlbnNlIDMuMA0KICogQHZlcnNpb24gICBSZWxlYXNlOiBAcGFja2FnZV92ZXJzaW9uQA0KICogQGxpbmsgICAgICBodHRwOi8vcGVhci5waHAubmV0L3BhY2thZ2UvSW1hZ2VfVHJhbnNmb3JtDQogKiBAc2luY2UgICAgIFBIUCA0LjANCiAqLw0KY2xhc3MgSW1hZ2VfVHJhbnNmb3JtDQp7DQogICAgLyoqDQogICAgICogTmFtZSBvZiB0aGUgaW1hZ2UgZmlsZQ0KICAgICAqIEB2YXIgc3RyaW5nDQogICAgICovDQogICAgdmFyICRpbWFnZSA9ICcnOw0KDQogICAgLyoqDQogICAgICogVHlwZSBvZiB0aGUgaW1hZ2UgZmlsZSAoZWcuIGpwZywgZ2lmIHBuZyAuLi4pDQogICAgICogQHZhciBzdHJpbmcNCiAgICAgKi8NCiAgICB2YXIgJHR5cGUgPSAnJzsNCg0KICAgIC8qKg0KICAgICAqIE9yaWdpbmFsIGltYWdlIHdpZHRoIGluIHggZGlyZWN0aW9uDQogICAgICogQHZhciBpbnQNCiAgICAgKi8NCiAgICB2YXIgJGltZ194ID0gJyc7DQoNCiAgICAvKioNCiAgICAgKiBPcmlnaW5hbCBpbWFnZSB3aWR0aCBpbiB5IGRpcmVjdGlvbg0KICAgICAqIEB2YXIgaW50DQogICAgICovDQogICAgdmFyICRpbWdfeSA9ICcnOw0KDQogICAgLyoqDQogICAgICogTmV3IGltYWdlIHdpZHRoIGluIHggZGlyZWN0aW9uDQogICAgICogQHZhciBpbnQNCiAgICAgKi8NCiAgICB2YXIgJG5ld194ID0gJyc7DQoNCiAgICAvKioNCiAgICAgKiBOZXcgaW1hZ2Ugd2lkdGggaW4geSBkaXJlY3Rpb24NCiAgICAgKiBAdmFyIGludA0KICAgICAqLw0KICAgIHZhciAkbmV3X3kgPSAnJzsNCg0KICAgIC8qKg0KICAgICAqIFBhdGggdG8gdGhlIGxpYnJhcnkgdXNlZA0KICAgICAqIGUuZy4gL3Vzci9sb2NhbC9JbWFnZU1hZ2ljay9iaW4vIG9yDQogICAgICogL3Vzci9sb2NhbC9uZXRwYm0vDQogICAgICovDQogICAgdmFyICRsaWJfcGF0aCA9ICcnOw0KDQogICAgLyoqDQogICAgICogRmxhZyB0byB3YXJuIGlmIGltYWdlIGhhcyBiZWVuIHJlc2l6ZWQgbW9yZSB0aGFuIG9uY2UgYmVmb3JlIGRpc3BsYXlpbmcNCiAgICAgKiBvciBzYXZpbmcuDQogICAgICovDQogICAgdmFyICRyZXNpemVkID0gZmFsc2U7DQoNCiAgICAvKioNCiAgICAgKiBAdmFyIGFycmF5IEdlbmVyYWwgb3B0aW9ucw0KICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkDQogICAgICovDQogICAgdmFyICRfb3B0aW9ucyA9IGFycmF5KA0KICAgICAgICAncXVhbGl0eScgICAgID0+IDc1LA0KICAgICAgICAnc2NhbGVNZXRob2QnID0+ICdzbW9vdGgnLA0KICAgICAgICAnY2FudmFzQ29sb3InID0+IGFycmF5KDI1NSwgMjU1LCAyNTUpLA0KICAgICAgICAncGVuY2lsQ29sb3InID0+IGFycmF5KDAsIDAsIDApLA0KICAgICAgICAndGV4dENvbG9yJyAgID0+IGFycmF5KDAsIDAsIDApDQogICAgICAgICk7DQoNCiAgICAvKioNCiAgICAgKiBGbGFnIGZvciB3aGV0aGVyIHNldHRpbmdzIHNob3VsZCBiZSBkaXNjYXJkZWQgb24gc2F2aW5nL2Rpc3BsYXkgb2YgaW1hZ2UNCiAgICAgKiBAdmFyIGJvb2wNCiAgICAgKiBAc2VlIEltYWdlX1RyYW5zZm9ybTo6a2VlcFNldHRpbmdzT25TYXZlDQogICAgICovDQogICAgdmFyICRrZWVwX3NldHRpbmdzX29uX3NhdmUgPSBmYWxzZTsNCg0KICAgIC8qKg0KICAgICAqIFN1cHBvcnRlZCBpbWFnZSB0eXBlcw0KICAgICAqIEB2YXIgYXJyYXkNCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZA0KICAgICAqLw0KICAgIHZhciAkX3N1cHBvcnRlZF9pbWFnZV90eXBlcyA9IGFycmF5KCk7DQoNCiAgICAvKioNCiAgICAgKiBJbml0aWFsaXphdGlvbiBlcnJvciB0cmFja2luZw0KICAgICAqIEB2YXIgb2JqZWN0DQogICAgICogQGFjY2VzcyBwcml2YXRlDQogICAgICoqLw0KICAgIHZhciAkX2Vycm9yID0gbnVsbDsNCg0KICAgIC8qKg0KICAgICAqIGFzc29jaWF0aXZlIGFycmF5IHRoYXQgdHJhY2tzIGV4aXN0ZW5jZSBvZiBwcm9ncmFtcw0KICAgICAqIChmb3IgZHJpdmVycyB1c2luZyBzaGVsbCBpbnRlcmZhY2UgYW5kIGEgdGlueSBwZXJmb3JtYW5jZQ0KICAgICAqIGltcHJvdmVtZW50IGlmIHRoZSBjbGVhcnN0YXRjYWNoZSgpIGlzIHVzZWQpDQogICAgICogQHZhciBhcnJheQ0KICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkDQogICAgICovDQogICAgdmFyICRfcHJvZ3JhbXMgPSBhcnJheSgpOw0KDQogICAgIC8qKg0KICAgICAgKiBEZWZhdWx0IHBhcmFtZXRlcnMgdXNlZCBpbiB0aGUgYWRkVGV4dCBtZXRob2RzLg0KICAgICAgKi8NCiAgICB2YXIgJGRlZmF1bHRfdGV4dF9wYXJhbXMgPSBhcnJheSgNCiAgICAgICAgJ3RleHQnID0+ICdEZWZhdWx0IHRleHQnLA0KICAgICAgICAneCcgICAgID0+IDEwLA0KICAgICAgICAneScgICAgID0+IDIwLA0KICAgICAgICAnY29sb3InID0+ICdyZWQnLA0KICAgICAgICAnZm9udCcgID0+ICdBcmlhbC50dGYnLA0KICAgICAgICAnc2l6ZScgID0+IDEyLA0KICAgICAgICAnYW5nbGUnID0+IDAsDQogICAgICAgICdyZXNpemVfZmlyc3QnID0+IGZhbHNlDQogICAgKTsNCg0KICAgIC8qKg0KICAgICAqIENyZWF0ZXMgYSBuZXcgSW1hZ2VfVHJhbnNmb3JtIG9iamVjdA0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkZHJpdmVyIG5hbWUgb2YgZHJpdmVyIGNsYXNzIHRvIGluaXRpYWxpemUuIElmIG5vIGRyaXZlcg0KICAgICAqICAgICAgICAgICAgICAgaXMgc3BlY2lmaWVkIHRoZSBmYWN0b3J5IHdpbGwgYXR0ZW1wdCB0byB1c2UgJ0ltYWdpY2snIGZpcnN0DQogICAgICogICAgICAgICAgICAgICB0aGVuICdHRCcgc2Vjb25kLCB0aGVuICdJbWxpYicgbGFzdA0KICAgICAqDQogICAgICogQHJldHVybiBvYmplY3QgYW4gSW1hZ2VfVHJhbnNmb3JtIG9iamVjdCwgb3IgUEVBUl9FcnJvciBvbiBlcnJvcg0KICAgICAqDQogICAgICogQHNlZSBQRUFSOjppc0Vycm9yKCkNCiAgICAgKiBAc2VlIEltYWdlX1RyYW5zZm9ybTo6c2V0T3B0aW9uKCkNCiAgICAgKi8NCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uICZmYWN0b3J5KCRkcml2ZXIpDQogICAgew0KICAgICAgICBpZiAoJycgPT0gJGRyaXZlcikgew0KICAgICAgICAgICAgZGllKCJObyBpbWFnZSBsaWJyYXJ5IHNwZWNpZmllZC4uLiBhYm9ydGluZy4gIFlvdSBtdXN0IGNhbGwgOjpmYWN0b3J5KCkgd2l0aCBvbmUgcGFyYW1ldGVyLCB0aGUgbGlicmFyeSB0byBsb2FkLiIpOw0KDQogICAgICAgIH0NCg0KICAgICAgICBpbmNsdWRlX29uY2UgKGRpcm5hbWUoX19GSUxFX18pLiIvVHJhbnNmb3JtLyRkcml2ZXIucGhwIik7DQoNCiAgICAgICAgJGNsYXNzbmFtZSA9ICJJbWFnZV9UcmFuc2Zvcm1fRHJpdmVyX3skZHJpdmVyfSI7DQogICAgICAgICRvYmogPSBuZXcgJGNsYXNzbmFtZTsNCiAgICAgICAgJG9iai0+dWlkID0gbWQ1KCRfU0VSVkVSWydSRU1PVEVfQUREUiddKTsNCiAgICAgICAgcmV0dXJuICRvYmo7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUmV0dXJucy9zZXRzIGFuIGVycm9yIHdoZW4gdGhlIGluc3RhbmNlIGNvdWxkbid0IGluaXRpYWxpemUgcHJvcGVybHkNCiAgICAgKg0KICAgICAqIEBwYXJhbSBvYmplY3QgJGVycm9yIFBFQVJfRXJyb3Igb2JqZWN0IHdoZW4gc2V0dGluZyBhbiBlcnJvcg0KICAgICAqDQogICAgICogQHJldHVybiBtaXhlZCBGQUxTRSBvciBQRUFSX0Vycm9yIG9iamVjdA0KICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkDQogICAgICovDQogICAgZnVuY3Rpb24gJmlzRXJyb3IoJGVycm9yID0gbnVsbCkNCiAgICB7DQogICAgICAgIGlmICghaXNfbnVsbCgkZXJyb3IpKSB7DQogICAgICAgICAgICAkdGhpcy0+X2Vycm9yID0mICRlcnJvcjsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gJHRoaXMtPl9lcnJvcjsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZXNpemVzIHRoZSBpbWFnZSBpbiB0aGUgWCBhbmQvb3IgWSBkaXJlY3Rpb24ocykNCiAgICAgKg0KICAgICAqIElmIGVpdGhlciBpcyAwIGl0IHdpbGwga2VlcCB0aGUgb3JpZ2luYWwgc2l6ZSBmb3IgdGhhdCBkaW1lbnNpb24NCiAgICAgKg0KICAgICAqIEBwYXJhbSBtaXhlZCAkbmV3X3ggICAoMCwgbnVtYmVyLCBwZXJjZW50YWdlIDEwJSBvciAwLjEpDQogICAgICogQHBhcmFtIG1peGVkICRuZXdfeSAgICgwLCBudW1iZXIsIHBlcmNlbnRhZ2UgMTAlIG9yIDAuMSkNCiAgICAgKiBAcGFyYW0gYXJyYXkgJG9wdGlvbnMgT3B0aW9ucw0KICAgICAqDQogICAgICogQHJldHVybiBtaXhlZCBUUlVFIG9yIFBFQVJfRXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiByZXNpemUoJG5ld194ID0gMCwgJG5ld195ID0gMCwgJG9wdGlvbnMgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgLy8gMCBtZWFucyBrZWVwIG9yaWdpbmFsIHNpemUNCiAgICAgICAgJG5ld194ID0gKDAgPT0gJG5ld194KQ0KICAgICAgICAgICAgICAgICA/ICR0aGlzLT5pbWdfeA0KICAgICAgICAgICAgICAgICA6ICR0aGlzLT5fcGFyc2Vfc2l6ZSgkbmV3X3gsICR0aGlzLT5pbWdfeCk7DQogICAgICAgICRuZXdfeSA9ICgwID09ICRuZXdfeSkNCiAgICAgICAgICAgICAgICAgPyAkdGhpcy0+aW1nX3kNCiAgICAgICAgICAgICAgICAgOiAkdGhpcy0+X3BhcnNlX3NpemUoJG5ld195LCAkdGhpcy0+aW1nX3kpOw0KDQogICAgICAgIC8vIE5vdyBkbyB0aGUgbGlicmFyeSBzcGVjaWZpYyByZXNpemluZy4NCiAgICAgICAgcmV0dXJuICR0aGlzLT5fcmVzaXplKCRuZXdfeCwgJG5ld195LCAkb3B0aW9ucyk7DQogICAgfSAvLyBFbmQgcmVzaXplDQoNCiAgICAvKioNCiAgICAgKiBTY2FsZXMgdGhlIGltYWdlIHRvIHRoZSBzcGVjaWZpZWQgd2lkdGgNCiAgICAgKg0KICAgICAqIFRoaXMgbWV0aG9kIHByZXNlcnZlcyB0aGUgYXNwZWN0IHJhdGlvDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ICRuZXdfeCBTaXplIHRvIHNjYWxlIFgtZGltZW5zaW9uIHRvDQogICAgICoNCiAgICAgKiBAcmV0dXJuIG1peGVkIFRSVUUgb3IgUEVBUl9FcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHNjYWxlQnlYKCRuZXdfeCkNCiAgICB7DQogICAgICAgIGlmICgkbmV3X3ggPD0gMCkgew0KICAgICAgICAgICAgcmV0dXJuIFBFQVI6OnJhaXNlRXJyb3IoJ05ldyBzaXplIG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmUnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9PVVRPRkJPVU5EKTsNCiAgICAgICAgfQ0KICAgICAgICAkbmV3X3kgPSByb3VuZCgoJG5ld194IC8gJHRoaXMtPmltZ194KSAqICR0aGlzLT5pbWdfeSwgMCk7DQogICAgICAgIHJldHVybiAkdGhpcy0+X3Jlc2l6ZShtYXgoMSwgJG5ld194KSwgbWF4KDEsICRuZXdfeSkpOw0KICAgIH0gLy8gRW5kIHNjYWxlQnlYDQoNCiAgICAvKioNCiAgICAgKiBBbGlhcyBmb3IgcmVzaXplKCkNCiAgICAgKg0KICAgICAqIEBzZWUgcmVzaXplKCkNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBzY2FsZUJ5WFkoJG5ld194ID0gMCwgJG5ld195ID0gMCwgJG9wdGlvbnMgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXNpemUoJG5ld194LCAkbmV3X3ksICRvcHRpb25zKTsNCiAgICB9IC8vIEVuZCBzY2FsZUJ5WFkNCg0KICAgIC8qKg0KICAgICAqIFNjYWxlcyB0aGUgaW1hZ2UgdG8gdGhlIHNwZWNpZmllZCBoZWlnaHQuDQogICAgICoNCiAgICAgKiBUaGlzIG1ldGhvZCBwcmVzZXJ2ZXMgdGhlIGFzcGVjdCByYXRpbw0KICAgICAqDQogICAgICogQHBhcmFtIGludCAkbmV3X3kgU2l6ZSB0byBzY2FsZSBZLWRpbWVuc2lvbiB0bw0KICAgICAqDQogICAgICogQHJldHVybiBtaXhlZCBUUlVFIG9yIFBFQVJfRXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBzY2FsZUJ5WSgkbmV3X3kpDQogICAgew0KICAgICAgICBpZiAoJG5ld195IDw9IDApIHsNCiAgICAgICAgICAgIHJldHVybiBQRUFSOjpyYWlzZUVycm9yKCdOZXcgc2l6ZSBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfT1VUT0ZCT1VORCk7DQogICAgICAgIH0NCiAgICAgICAgJG5ld194ID0gcm91bmQoKCRuZXdfeSAvICR0aGlzLT5pbWdfeSkgKiAkdGhpcy0+aW1nX3gsIDApOw0KICAgICAgICByZXR1cm4gJHRoaXMtPl9yZXNpemUobWF4KDEsICRuZXdfeCksIG1heCgxLCAkbmV3X3kpKTsNCiAgICB9IC8vIEVuZCBzY2FsZUJ5WQ0KDQogICAgLyoqDQogICAgICogU2NhbGVzIGFuIGltYWdlIGJ5IGEgcGVyY2VudGFnZSwgZmFjdG9yIG9yIGEgZ2l2ZW4gbGVuZ3RoDQogICAgICoNCiAgICAgKiBUaGlzIG1ldGhvZCBwcmVzZXJ2ZXMgdGhlIGFzcGVjdCByYXRpbw0KICAgICAqDQogICAgICogQHBhcmFtIG1peGVkICRzaXplIChudW1iZXIsIHBlcmNlbnRhZ2UgMTAlIG9yIDAuMSkNCiAgICAgKg0KICAgICAqIEByZXR1cm4gbWl4ZWQgVFJVRSBvciBQRUFSX0Vycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICogQHNlZSBzY2FsZUJ5UGVyY2VudGFnZSwgc2NhbGVCeUZhY3Rvciwgc2NhbGVCeUxlbmd0aA0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHNjYWxlKCRzaXplKQ0KICAgIHsNCiAgICAgICAgaWYgKChzdHJsZW4oJHNpemUpID4gMSkgJiYgKHN1YnN0cigkc2l6ZSwgLTEpID09ICclJykpIHsNCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2NhbGVCeVBlcmNlbnRhZ2Uoc3Vic3RyKCRzaXplLCAwLCAtMSkpOw0KICAgICAgICB9IGVsc2VpZiAoJHNpemUgPCAxKSB7DQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNjYWxlQnlGYWN0b3IoJHNpemUpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zY2FsZUJ5TGVuZ3RoKCRzaXplKTsNCiAgICAgICAgfQ0KICAgIH0gLy8gRW5kIHNjYWxlDQoNCiAgICAvKioNCiAgICAgKiBTY2FsZXMgYW4gaW1hZ2UgdG8gYSBwZXJjZW50YWdlIG9mIGl0cyBvcmlnaW5hbCBzaXplLiAgRm9yIGV4YW1wbGUsIGlmDQogICAgICogbXkgaW1hZ2Ugd2FzIDY0MHg0ODAgYW5kIEkgY2FsbGVkIHNjYWxlQnlQZXJjZW50YWdlKDEwKSB0aGVuIHRoZSBpbWFnZQ0KICAgICAqIHdvdWxkIGJlIHJlc2l6ZWQgdG8gNjR4NDgNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnQgJHNpemUgUGVyY2VudGFnZSBvZiBvcmlnaW5hbCBzaXplIHRvIHNjYWxlIHRvDQogICAgICoNCiAgICAgKiBAcmV0dXJuIG1peGVkIFRSVUUgb3IgUEVBUl9FcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHNjYWxlQnlQZXJjZW50YWdlKCRzaXplKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5zY2FsZUJ5RmFjdG9yKCRzaXplIC8gMTAwKTsNCiAgICB9IC8vIEVuZCBzY2FsZUJ5UGVyY2VudGFnZQ0KDQogICAgLyoqDQogICAgICogU2NhbGVzIGFuIGltYWdlIHRvIGEgZmFjdG9yIG9mIGl0cyBvcmlnaW5hbCBzaXplLiAgRm9yIGV4YW1wbGUsIGlmDQogICAgICogbXkgaW1hZ2Ugd2FzIDY0MHg0ODAgYW5kIEkgY2FsbGVkIHNjYWxlQnlGYWN0b3IoMC41KSB0aGVuIHRoZSBpbWFnZQ0KICAgICAqIHdvdWxkIGJlIHJlc2l6ZWQgdG8gMzIweDI0MC4NCiAgICAgKg0KICAgICAqIEBwYXJhbSBmbG9hdCAkc2l6ZSBGYWN0b3Igb2Ygb3JpZ2luYWwgc2l6ZSB0byBzY2FsZSB0bw0KICAgICAqDQogICAgICogQHJldHVybiBtaXhlZCBUUlVFIG9yIFBFQVJfRXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBzY2FsZUJ5RmFjdG9yKCRzaXplKQ0KICAgIHsNCiAgICAgICAgaWYgKCRzaXplIDw9IDApIHsNCiAgICAgICAgICAgIHJldHVybiBQRUFSOjpyYWlzZUVycm9yKCdOZXcgc2l6ZSBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfT1VUT0ZCT1VORCk7DQogICAgICAgIH0NCiAgICAgICAgJG5ld194ID0gcm91bmQoJHNpemUgKiAkdGhpcy0+aW1nX3gsIDApOw0KICAgICAgICAkbmV3X3kgPSByb3VuZCgkc2l6ZSAqICR0aGlzLT5pbWdfeSwgMCk7DQogICAgICAgIHJldHVybiAkdGhpcy0+X3Jlc2l6ZShtYXgoMSwgJG5ld194KSwgbWF4KDEsICRuZXdfeSkpOw0KICAgIH0gLy8gRW5kIHNjYWxlQnlGYWN0b3INCg0KICAgIC8qKg0KICAgICAqIFNjYWxlcyBhbiBpbWFnZSBzbyB0aGF0IHRoZSBsb25nZXN0IHNpZGUgaGFzIHRoZSBzcGVjaWZpZWQgZGltZW5zaW9uLg0KICAgICAqDQogICAgICogVGhpcyBtZXRob2QgcHJlc2VydmVzIHRoZSBhc3BlY3QgcmF0aW8NCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnQgJHNpemUgTWF4IGRpbWVuc2lvbiBpbiBwaXhlbHMNCiAgICAgKg0KICAgICAqIEByZXR1cm4gbWl4ZWQgVFJVRSBvciBQRUFSX0Vycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gc2NhbGVNYXhMZW5ndGgoJHNpemUpDQogICAgew0KICAgICAgICBpZiAoJHNpemUgPD0gMCkgew0KICAgICAgICAgICAgcmV0dXJuIFBFQVI6OnJhaXNlRXJyb3IoJ05ldyBzaXplIG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmUnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9PVVRPRkJPVU5EKTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoJHRoaXMtPmltZ194ID49ICR0aGlzLT5pbWdfeSkgew0KICAgICAgICAgICAgJG5ld194ID0gJHNpemU7DQogICAgICAgICAgICAkbmV3X3kgPSByb3VuZCgoJG5ld194IC8gJHRoaXMtPmltZ194KSAqICR0aGlzLT5pbWdfeSwgMCk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkbmV3X3kgPSAkc2l6ZTsNCiAgICAgICAgICAgICRuZXdfeCA9IHJvdW5kKCgkbmV3X3kgLyAkdGhpcy0+aW1nX3kpICogJHRoaXMtPmltZ194LCAwKTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gJHRoaXMtPl9yZXNpemUobWF4KDEsICRuZXdfeCksIG1heCgxLCAkbmV3X3kpKTsNCiAgICB9IC8vIEVuZCBzY2FsZU1heExlbmd0aA0KDQogICAgLyoqDQogICAgICogQWxpYXMgZm9yIHNjYWxlTWF4TGVuZ3RoDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ICRzaXplIE1heCBkaW1lbnNpb24gaW4gcGl4ZWxzDQogICAgICoNCiAgICAgKiBAcmV0dXJuIG1peGVkIFRSVUUgb3IgUEVBUl9FcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqIEBzZWUgc2NhbGVNYXhMZW5ndGgoKQ0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHNjYWxlQnlMZW5ndGgoJHNpemUpDQogICAgew0KICAgICAgICByZXR1cm4gJHRoaXMtPnNjYWxlTWF4TGVuZ3RoKCRzaXplKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBGaXRzIHRoZSBpbWFnZSBpbiB0aGUgc3BlY2lmaWVkIGJveCBzaXplDQogICAgICoNCiAgICAgKiBJZiB0aGUgaW1hZ2UgaXMgYmlnZ2VyIHRoYW4gdGhlIGJveCBzcGVjaWZpZWQgYnkgJHdpZHRoIGFuZCAkaGVpZ2h0LA0KICAgICAqIGl0IHdpbGwgYmUgc2NhbGVkIGRvd24gdG8gZml0IGluc2lkZSBvZiBpdC4NCiAgICAgKiBJZiB0aGUgaW1hZ2UgaXMgc21hbGxlciwgbm90aGluZyBpcyBkb25lLg0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJHdpZHRoICBXaWR0aCBvZiB0aGUgYm94IGluIHBpeGVscw0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRoZWlnaHQgSGVpZ2h0IG9mIHRoZSBib3ggaW4gcGl4ZWxzDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGJvb2x8UEVBUl9FcnJvciBUUlVFIG9yIFBFQVJfRXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBmaXQoJHdpZHRoLCAkaGVpZ2h0KQ0KICAgIHsNCiAgICAgICAgaWYgKCR3aWR0aCA8PSAwIHx8ICRoZWlnaHQgPD0gMCkgew0KICAgICAgICAgICAgcmV0dXJuIFBFQVI6OnJhaXNlRXJyb3IoIkludmFsaWQgYXJndW1lbnRzLiIsDQogICAgICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX0FSR1VNRU5UKTsNCiAgICAgICAgfQ0KICAgICAgICAkeCA9ICR0aGlzLT5pbWdfeCAvICR3aWR0aDsNCiAgICAgICAgJHkgPSAkdGhpcy0+aW1nX3kgLyAkaGVpZ2h0Ow0KICAgICAgICBpZiAoJHggPD0gMSAmJiAkeSA8PSAxKSB7DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfSBlbHNlaWYgKCR4ID4gJHkpIHsNCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2NhbGVCeVgoJHdpZHRoKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2NhbGVCeVkoJGhlaWdodCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBUaGlzIHdvcmtzIGFzIHBlciBmaXQsIGJ1dCBjcmVhdGVzIHRoZSBjYW52YXMgb2Ygc2l6ZSAkd2lkdGggeCAkaGVpZ2h0DQogICAgICogYW5kIHBvc2l0aW9ucyB0aGUgcmVzaXplZCBpbWFnZSBvbiBpdCwgYnkgZGVmYXVsdCBpbiB0aGUgY2VudHJlLg0KICAgICAqDQogICAgICogQHBhcmFtIHVua25vd25fdHlwZSAkd2lkdGgNCiAgICAgKiBAcGFyYW0gdW5rbm93bl90eXBlICRoZWlnaHQNCiAgICAgKiBAcGFyYW0gdW5rbm93bl90eXBlICRwb3NuDQogICAgICoNCiAgICAgKiBAcmV0dXJuIHVua25vd24NCiAgICAgKi8NCiAgICBmdW5jdGlvbiBmaXRPbkNhbnZhcygkd2lkdGgsICRoZWlnaHQsICRwb3NuPSdjZW50ZXInKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFBFQVI6OnJhaXNlRXJyb3IoJ2ZpdE9uQ2FudmFzKCkgbWV0aG9kIG5vdCBzdXBwb3J0ZWQgYnkgZHJpdmVyJywNCiAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9VTlNVUFBPUlRFRCk7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogRml0cyB0aGUgaW1hZ2UgaW4gdGhlIHNwZWNpZmllZCB3aWR0aA0KICAgICAqDQogICAgICogSWYgdGhlIGltYWdlIGlzIHdpZGVyIHRoYW4gdGhlIHdpZHRoIHNwZWNpZmllZCBieSAkd2lkdGgsDQogICAgICogaXQgd2lsbCBiZSBzY2FsZWQgZG93biB0byBmaXQgaW5zaWRlIG9mIGl0Lg0KICAgICAqIElmIHRoZSBpbWFnZSBpcyBzbWFsbGVyLCBub3RoaW5nIGlzIGRvbmUuDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkd2lkdGggTWF4aW11bSB3aWR0aCBpbiBwaXhlbHMNCiAgICAgKg0KICAgICAqIEByZXR1cm4gYm9vbHxQRUFSX0Vycm9yIFRSVUUgb3IgUEVBUl9FcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIGZ1bmN0aW9uIGZpdFgoJHdpZHRoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICgkdGhpcy0+aW1nX3ggPD0gJHdpZHRoKSA/IHRydWUgOiAkdGhpcy0+c2NhbGVCeVgoJHdpZHRoKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBGaXRzIHRoZSBpbWFnZSBpbiB0aGUgc3BlY2lmaWVkIGhlaWdodA0KICAgICAqDQogICAgICogSWYgdGhlIGltYWdlIGlzIHRhbGxlciB0aGFuIHRoZSBoZWlnaHQgc3BlY2lmaWVkIGJ5ICRoZWlnaHQsDQogICAgICogaXQgd2lsbCBiZSBzY2FsZWQgZG93biB0byBmaXQgaW5zaWRlIG9mIGl0Lg0KICAgICAqIElmIHRoZSBpbWFnZSBpcyBzbWFsbGVyLCBub3RoaW5nIGlzIGRvbmUuDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkaGVpZ2h0IE1heGltdW0gaGVpZ2h0IGluIHBpeGVscw0KICAgICAqDQogICAgICogQHJldHVybiBib29sfFBFQVJfRXJyb3IgVFJVRSBvciBQRUFSX0Vycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gZml0WSgkaGVpZ2h0KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICgkdGhpcy0+aW1nX3kgPD0gJGhlaWdodCkgPyB0cnVlIDogJHRoaXMtPnNjYWxlQnlZKCRoZWlnaHQpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFNldHMgb25lIG9wdGlvbnMNCiAgICAgKg0KICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgIE5hbWUgb2Ygb3B0aW9uDQogICAgICogQHBhcmFtIG1peGVkICAkdmFsdWUgVmFsdWUgb2Ygb3B0aW9uDQogICAgICoNCiAgICAgKiBAcmV0dXJuIHZvaWQNCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqIEBzZWUgc2V0T3B0aW9ucygpDQogICAgICovDQogICAgZnVuY3Rpb24gc2V0T3B0aW9uKCRuYW1lLCAkdmFsdWUpDQogICAgew0KICAgICAgICAkdGhpcy0+X29wdGlvbnNbJG5hbWVdID0gJHZhbHVlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFNldHMgbXVsdGlwbGUgb3B0aW9ucyBhdCBvbmNlDQogICAgICoNCiAgICAgKiBBc3NvY2lhdGl2ZSBhcnJheSBvZiBvcHRpb25zOg0KICAgICAqICAtIHF1YWxpdHkgICAgIChJbnRlZ2VyOiAwOiBwb29yIC0gMTAwOiBiZXN0KQ0KICAgICAqICAtIHNjYWxlTWV0aG9kICgnc21vb3RoJywgJ3BpeGVsJykNCiAgICAgKg0KICAgICAqIEBwYXJhbSBhcnJheSAkb3B0aW9ucyBBcnJheSBvZiBvcHRpb25zDQogICAgICoNCiAgICAgKiBAcmV0dXJuIHZvaWQNCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHNldE9wdGlvbnMoJG9wdGlvbnMpDQogICAgew0KICAgICAgICAkdGhpcy0+X29wdGlvbnMgPSBhcnJheV9tZXJnZSgkdGhpcy0+X29wdGlvbnMsICRvcHRpb25zKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBTZXRzIHRoZSBpbWFnZSB0eXBlIChpbiBsb3dlcmNhc2UgbGV0dGVycyksIHRoZSBpbWFnZSBoZWlnaHQgYW5kIHdpZHRoLg0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkaW1hZ2UgSW1hZ2UgZmlsZW5hbWUNCiAgICAgKg0KICAgICAqIEByZXR1cm4gbWl4ZWQgVFJVRSBvciBQRUFSX2Vycm9yDQogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQNCiAgICAgKiBAc2VlIFBIUF9Db21wYXQ6OmltYWdlX3R5cGVfdG9fbWltZV90eXBlKCkNCiAgICAgKiBAbGluayBodHRwOi8vcGhwLm5ldC9nZXRpbWFnZXNpemUNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBfZ2V0X2ltYWdlX2RldGFpbHMoJGltYWdlKQ0KICAgIHsNCiAgICAgICAgJGRhdGEgPSBAZ2V0aW1hZ2VzaXplKCRpbWFnZSk7DQogICAgICAgIC8vICAxID0gR0lGLCAgIDIgPSBKUEcsICAzID0gUE5HLCAgNCA9IFNXRiwgIDUgPSBQU0QsICA2ID0gQk1QLA0KICAgICAgICAvLyAgNyA9IFRJRkYgKGludGVsIGJ5dGUgb3JkZXIpLCAgIDggPSBUSUZGIChtb3Rvcm9sYSBieXRlIG9yZGVyKSwNCiAgICAgICAgLy8gIDkgPSBKUEMsICAxMCA9IEpQMiwgMTEgPSBKUFgsIDEyID0gSkIyLCAxMyA9IFNXQywgMTQgPSBJRkYsDQogICAgICAgIC8vIDE1ID0gV0JNUCwgMTYgPSBYQk0NCiAgICAgICAgaWYgKCFpc19hcnJheSgkZGF0YSkpIHsNCiAgICAgICAgICAgIHJldHVybiBQRUFSOjpyYWlzZUVycm9yKCJDYW5ub3QgZmV0Y2ggaW1hZ2Ugb3IgaW1hZ2VzIGRldGFpbHMuIiwgdHJ1ZSk7DQogICAgICAgIH0NCg0KICAgICAgICBzd2l0Y2ggKCRkYXRhWzJdKSB7DQogICAgICAgICAgICBjYXNlIElNQUdFVFlQRV9HSUY6DQogICAgICAgICAgICAgICAgJHR5cGUgPSAnZ2lmJzsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgSU1BR0VUWVBFX0pQRUc6DQogICAgICAgICAgICAgICAgJHR5cGUgPSAnanBlZyc7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlIElNQUdFVFlQRV9QTkc6DQogICAgICAgICAgICAgICAgJHR5cGUgPSAncG5nJzsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgSU1BR0VUWVBFX1NXRjoNCiAgICAgICAgICAgICAgICAkdHlwZSA9ICdzd2YnOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSBJTUFHRVRZUEVfUFNEOg0KICAgICAgICAgICAgICAgICR0eXBlID0gJ3BzZCc7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlIElNQUdFVFlQRV9CTVA6DQogICAgICAgICAgICAgICAgJHR5cGUgPSAnYm1wJzsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgSU1BR0VUWVBFX1RJRkZfSUk6DQogICAgICAgICAgICBjYXNlIElNQUdFVFlQRV9USUZGX01NOg0KICAgICAgICAgICAgICAgICR0eXBlID0gJ3RpZmYnOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSBJTUFHRVRZUEVfSlBDOg0KICAgICAgICAgICAgICAgICR0eXBlID0gJ2pwYyc7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlIElNQUdFVFlQRV9KUDI6DQogICAgICAgICAgICAgICAgJHR5cGUgPSAnanAyJzsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgSU1BR0VUWVBFX0pQWDoNCiAgICAgICAgICAgICAgICAkdHlwZSA9ICdqcHgnOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSBJTUFHRVRZUEVfSkIyOg0KICAgICAgICAgICAgICAgICR0eXBlID0gJ2piMic7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlIElNQUdFVFlQRV9TV0M6DQogICAgICAgICAgICAgICAgJHR5cGUgPSAnc3djJzsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgSU1BR0VUWVBFX0lGRjoNCiAgICAgICAgICAgICAgICAkdHlwZSA9ICdpZmYnOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSBJTUFHRVRZUEVfV0JNUDoNCiAgICAgICAgICAgICAgICAkdHlwZSA9ICd3Ym1wJzsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgSU1BR0VUWVBFX1hCTToNCiAgICAgICAgICAgICAgICAkdHlwZSA9ICd4Ym0nOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcigiQ2Fubm90IHJlY29nbml6ZSBpbWFnZSBmb3JtYXQiLA0KICAgICAgICAgICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfVU5TVVBQT1JURUQpOw0KICAgICAgICB9DQogICAgICAgICR0aGlzLT5pbWdfeCA9ICR0aGlzLT5uZXdfeCA9ICRkYXRhWzBdOw0KICAgICAgICAkdGhpcy0+aW1nX3kgPSAkdGhpcy0+bmV3X3kgPSAkZGF0YVsxXTsNCiAgICAgICAgJHRoaXMtPnR5cGUgID0gJHR5cGU7DQoNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUmV0dXJucyB0aGUgbWF0Y2hpbmcgSU1BR0VUWVBFXyogY29uc3RhbnQgZm9yIGEgZ2l2ZW4gaW1hZ2UgdHlwZQ0KICAgICAqDQogICAgICogQHBhcmFtIG1peGVkICR0eXBlIFN0cmluZyAoR0lGLCBKUEcsLi4uKQ0KICAgICAqDQogICAgICogQHJldHVybiBtaXhlZCBzdHJpbmcgb3IgaW50ZWdlciBvciBpbnB1dCBvbiBlcnJvcg0KICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkDQogICAgICogQHNlZSBQSFBfQ29tcGF0OjppbWFnZV90eXBlX3RvX21pbWVfdHlwZSgpDQogICAgICoqLw0KICAgIGZ1bmN0aW9uIF9jb252ZXJ0X2ltYWdlX3R5cGUoJHR5cGUpDQogICAgew0KICAgICAgICBzd2l0Y2ggKHN0cnRvbG93ZXIoJHR5cGUpKSB7DQogICAgICAgICAgICBjYXNlICdnaWYnOg0KICAgICAgICAgICAgICAgIHJldHVybiBJTUFHRVRZUEVfR0lGOw0KICAgICAgICAgICAgY2FzZSAnanBlZyc6DQogICAgICAgICAgICBjYXNlICdqcGcnOg0KICAgICAgICAgICAgICAgIHJldHVybiBJTUFHRVRZUEVfSlBFRzsNCiAgICAgICAgICAgIGNhc2UgJ3BuZyc6DQogICAgICAgICAgICAgICAgcmV0dXJuIElNQUdFVFlQRV9QTkc7DQogICAgICAgICAgICBjYXNlICdzd2YnOg0KICAgICAgICAgICAgICAgIHJldHVybiBJTUFHRVRZUEVfU1dGOw0KICAgICAgICAgICAgY2FzZSAncHNkJzoNCiAgICAgICAgICAgICAgICByZXR1cm4gSU1BR0VUWVBFX1BTRDsNCiAgICAgICAgICAgIGNhc2UgJ2JtcCc6DQogICAgICAgICAgICAgICAgcmV0dXJuIElNQUdFVFlQRV9CTVA7DQogICAgICAgICAgICBjYXNlICd0aWZmJzoNCiAgICAgICAgICAgICAgICByZXR1cm4gSU1BR0VUWVBFX1RJRkZfSUk7DQogICAgICAgICAgICAgICAgLy9JTUFHRVRZUEVfVElGRl9NTTsNCiAgICAgICAgICAgIGNhc2UgJ2pwYyc6DQogICAgICAgICAgICAgICAgcmV0dXJuIElNQUdFVFlQRV9KUEM7DQogICAgICAgICAgICBjYXNlICdqcDInOg0KICAgICAgICAgICAgICAgIHJldHVybiBJTUFHRVRZUEVfSlAyOw0KICAgICAgICAgICAgY2FzZSAnanB4JzoNCiAgICAgICAgICAgICAgICByZXR1cm4gSU1BR0VUWVBFX0pQWDsNCiAgICAgICAgICAgIGNhc2UgJ2piMic6DQogICAgICAgICAgICAgICAgcmV0dXJuIElNQUdFVFlQRV9KQjI7DQogICAgICAgICAgICBjYXNlICdzd2MnOg0KICAgICAgICAgICAgICAgIHJldHVybiBJTUFHRVRZUEVfU1dDOw0KICAgICAgICAgICAgY2FzZSAnaWZmJzoNCiAgICAgICAgICAgICAgICByZXR1cm4gSU1BR0VUWVBFX0lGRjsNCiAgICAgICAgICAgIGNhc2UgJ3dibXAnOg0KICAgICAgICAgICAgICAgIHJldHVybiBJTUFHRVRZUEVfV0JNUDsNCiAgICAgICAgICAgIGNhc2UgJ3hibSc6DQogICAgICAgICAgICAgICAgcmV0dXJuIElNQUdFVFlQRV9YQk07DQogICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgIHJldHVybiAkdHlwZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiAoaXNzZXQoJHR5cGVzWyR0ID0gc3RydG9sb3dlcigkdHlwZSldKSkgPyAkdHlwZXNbJHRdIDogJHR5cGU7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUGFyc2VzIGlucHV0IGZvciBudW1iZXIgZm9ybWF0IGFuZCBjb252ZXJ0DQogICAgICoNCiAgICAgKiBJZiBlaXRoZXIgcGFyYW1ldGVyIGlzIDAgaXQgd2lsbCBiZSBzY2FsZWQgcHJvcG9ydGlvbmFsbHkNCiAgICAgKg0KICAgICAqIEBwYXJhbSBtaXhlZCAkbmV3X3NpemUgKDAsIG51bWJlciwgcGVyY2VudGFnZSAxMCUgb3IgMC4xKQ0KICAgICAqIEBwYXJhbSBpbnQgICAkb2xkX3NpemUNCiAgICAgKg0KICAgICAqIEByZXR1cm4gbWl4ZWQgSW50ZWdlciBvciBQRUFSX2Vycm9yDQogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBfcGFyc2Vfc2l6ZSgkbmV3X3NpemUsICRvbGRfc2l6ZSkNCiAgICB7DQogICAgICAgIGlmIChzdWJzdHIoJG5ld19zaXplLCAtMSkgPT0gJyUnKSB7DQogICAgICAgICAgICAkbmV3X3NpemUgPSBzdWJzdHIoJG5ld19zaXplLCAwLCAtMSk7DQogICAgICAgICAgICAkbmV3X3NpemUgPSAkbmV3X3NpemUgLyAxMDA7DQogICAgICAgIH0NCiAgICAgICAgaWYgKCRuZXdfc2l6ZSA+IDEpIHsNCiAgICAgICAgICAgIHJldHVybiAoaW50KSAkbmV3X3NpemU7DQogICAgICAgIH0gZWxzZWlmICgkbmV3X3NpemUgPT0gMCkgew0KICAgICAgICAgICAgcmV0dXJuIChpbnQpICRvbGRfc2l6ZTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIHJldHVybiAoaW50KSByb3VuZCgkbmV3X3NpemUgKiAkb2xkX3NpemUsIDApOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUmV0dXJucyBhbiBhbmdsZSBiZXR3ZWVuIDAgYW5kIDM2MCBmcm9tIGFueSBhbmdsZSB2YWx1ZQ0KICAgICAqDQogICAgICogQHBhcmFtIGZsb2F0ICRhbmdsZSBUaGUgYW5nbGUgdG8gbm9ybWFsaXplDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGZsb2F0IHRoZSBhbmdsZQ0KICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkDQogICAgICovDQogICAgZnVuY3Rpb24gX3JvdGF0aW9uX2FuZ2xlKCRhbmdsZSkNCiAgICB7DQogICAgICAgICRhbmdsZSAlPSAzNjA7DQogICAgICAgIHJldHVybiAoJGFuZ2xlIDwgMCkgPyAkYW5nbGUgKyAzNjAgOiAkYW5nbGU7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiAkdGhpcy0+ZGVmYXVsdF90ZXh0X3BhcmFtcy4NCiAgICAgKg0KICAgICAqIEByZXR1cm4gYXJyYXkgJHRoaXMtPmRlZmF1bHRfdGV4dF9wYXJhbXMgVGhlIGN1cnJlbnQgdGV4dCBwYXJhbWV0ZXJzDQogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBfZ2V0X2RlZmF1bHRfdGV4dF9wYXJhbXMoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5kZWZhdWx0X3RleHRfcGFyYW1zOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFNldHMgdGhlIGltYWdlIHdpZHRoDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ICRzaXplIGRpbWVuc2lvbiB0byBzZXQNCiAgICAgKg0KICAgICAqIEByZXR1cm4gdm9pZA0KICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkDQogICAgICogQHNpbmNlIDI5LzA1LzAyIDEzOjM2OjMxDQogICAgICovDQogICAgZnVuY3Rpb24gX3NldF9pbWdfeCgkc2l6ZSkNCiAgICB7DQogICAgICAgICR0aGlzLT5pbWdfeCA9ICRzaXplOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFNldHMgdGhlIGltYWdlIGhlaWdodA0KICAgICAqDQogICAgICogQHBhcmFtIGludCAkc2l6ZSBkaW1lbnNpb24gdG8gc2V0DQogICAgICoNCiAgICAgKiBAcmV0dXJuIHZvaWQNCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZA0KICAgICAqIEBzaW5jZSAyOS8wNS8wMiAxMzozNjozMQ0KICAgICAqLw0KICAgIGZ1bmN0aW9uIF9zZXRfaW1nX3koJHNpemUpDQogICAgew0KICAgICAgICAkdGhpcy0+aW1nX3kgPSAkc2l6ZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBTZXRzIHRoZSBuZXcgaW1hZ2Ugd2lkdGgNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnQgJHNpemUgZGltZW5zaW9uIHRvIHNldA0KICAgICAqDQogICAgICogQHJldHVybiB2b2lkDQogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQNCiAgICAgKiBAc2luY2UgMjkvMDUvMDIgMTM6MzY6MzENCiAgICAgKi8NCiAgICBmdW5jdGlvbiBfc2V0X25ld194KCRzaXplKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPm5ld194ID0gJHNpemU7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogU2V0cyB0aGUgbmV3IGltYWdlIGhlaWdodA0KICAgICAqDQogICAgICogQHBhcmFtIGludCAkc2l6ZSBkaW1lbnNpb24gdG8gc2V0DQogICAgICoNCiAgICAgKiBAcmV0dXJuIHZvaWQNCiAgICAgKiBAc2luY2UgMjkvMDUvMDIgMTM6MzY6MzENCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZA0KICAgICAqLw0KICAgIGZ1bmN0aW9uIF9zZXRfbmV3X3koJHNpemUpDQogICAgew0KICAgICAgICAkdGhpcy0+bmV3X3kgPSAkc2l6ZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZXR1cm5zIHRoZSBpbWFnZSBoYW5kbGUgc28gdGhhdCBvbmUgY2FuIGZ1cnRoZXIgdHJ5DQogICAgICogdG8gbWFuaXB1bGF0ZSB0aGUgaW1hZ2UNCiAgICAgKg0KICAgICAqIEByZXR1cm4gcmVzb3VyY2UNCiAgICAgKg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gZ2V0SGFuZGxlKCkNCiAgICB7DQogICAgICAgIHJldHVybiBQRUFSOjpyYWlzZUVycm9yKCdnZXRIYW5kbGUoKSBtZXRob2Qgbm90IHN1cHBvcnRlZCBieSBkcml2ZXInLA0KICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX1VOU1VQUE9SVEVEKTsNCiAgICB9Ly9mdW5jdGlvbiBnZXRIYW5kbGUoKQ0KDQogICAgLyoqDQogICAgICogUmV0dXJucyB0aGUgdHlwZSBvZiB0aGUgaW1hZ2UgYmVpbmcgbWFuaXB1bGF0ZWQNCiAgICAgKg0KICAgICAqIEByZXR1cm4gc3RyaW5nIHRoZSBpbWFnZSB0eXBlDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBnZXRJbWFnZVR5cGUoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT50eXBlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJldHVybnMgdGhlIE1JTUUgdHlwZSBvZiB0aGUgaW1hZ2UgYmVpbmcgbWFuaXB1bGF0ZWQNCiAgICAgKg0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGUgSW1hZ2UgdHlwZSB0byBnZXQgTUlNRSB0eXBlIGZvcg0KICAgICAqDQogICAgICogQHJldHVybiBzdHJpbmcgVGhlIE1JTUUgdHlwZSBpZiBhdmFpbGFibGUsIG9yIGFuIGVtcHR5IHN0cmluZw0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICogQHNlZSBQSFBfQ29tcGF0OjppbWFnZV90eXBlX3RvX21pbWVfdHlwZSgpDQogICAgICogQGxpbmsgaHR0cDovL3BocC5uZXQvaW1hZ2VfdHlwZV90b19taW1lX3R5cGUNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBnZXRNaW1lVHlwZSgkdHlwZSA9IG51bGwpDQogICAgew0KICAgICAgICByZXR1cm4gaW1hZ2VfdHlwZV90b19taW1lX3R5cGUoJHRoaXMtPl9jb252ZXJ0X2ltYWdlX3R5cGUoKCR0eXBlKSA/ICR0eXBlIDogJHRoaXMtPnR5cGUpKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZXR1cm5zIHRoZSBuZXcgaW1hZ2Ugd2lkdGgNCiAgICAgKg0KICAgICAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgd2lkdGgNCiAgICAgKiBvZiB0aGUgbmV3IGltYWdlLg0KICAgICAqDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKiBAcmV0dXJuIGludCAgVGhlIHdpZHRoIG9mIHRoZSBuZXcgaW1hZ2UuDQogICAgICovDQogICAgZnVuY3Rpb24gZ2V0TmV3SW1hZ2VXaWR0aCgpDQogICAgew0KICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPm5ld194KSkgew0KICAgICAgICAgICAgcmV0dXJuIChpbnQpJHRoaXMtPm5ld194Ow0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJldHVybiBuZXcgaW1hZ2UgWQ0KICAgICAqDQogICAgICogVGhpcyBmdW5jdGlvbiB3aWxsIHJldHJpZXZlIHRoZQ0KICAgICAqIG5ldyBpbWFnZSAnWScgYW5kIHJldHVybiBpdCdzIHZhbHVlDQogICAgICogaWYgaXQncyBzZXQuDQogICAgICoNCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqIEByZXR1cm4gaW50ICBUaGUgbmV3IGhlaWdodCBvZiB0aGUgaW1hZ2UuDQogICAgICovDQogICAgZnVuY3Rpb24gZ2V0TmV3SW1hZ2VIZWlnaHQoKQ0KICAgIHsNCiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5uZXdfeSkpIHsNCiAgICAgICAgICAgIHJldHVybiAoaW50KSR0aGlzLT5uZXdfeTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZXR1cm5zIHRoZSBpbWFnZSB3aWR0aA0KICAgICAqDQogICAgICogQHJldHVybiBpbnQgdGhlIHdpZHRoIG9mIHRoZSBpbWFnZQ0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gZ2V0SW1hZ2VXaWR0aCgpDQogICAgew0KICAgICAgICByZXR1cm4gJHRoaXMtPmltZ194Ow0KICAgIH0NCg0KICAgIC8qKg0KICAgICAgKiBSZXR1cm5zIHRoZSBpbWFnZSBoZWlnaHQNCiAgICAgICoNCiAgICAgICogQHJldHVybiBpbnQgdGhlIHdpZHRoIG9mIHRoZSBpbWFnZQ0KICAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAgKi8NCiAgICBmdW5jdGlvbiBnZXRJbWFnZUhlaWdodCgpDQogICAgew0KICAgICAgICByZXR1cm4gJHRoaXMtPmltZ195Ow0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJldHVybnMgdGhlIGltYWdlIHNpemUgYW5kIGV4dHJhIGZvcm1hdCBpbmZvcm1hdGlvbg0KICAgICAqDQogICAgICogQHJldHVybiBhcnJheSBUaGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgaW1hZ2UNCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqIEBzZWUgUEhQOjpnZXRpbWFnZXNpemUoKQ0KICAgICAqLw0KICAgIGZ1bmN0aW9uIGdldEltYWdlU2l6ZSgpDQogICAgew0KICAgICAgICByZXR1cm4gYXJyYXkoDQogICAgICAgICAgICAkdGhpcy0+aW1nX3gsDQogICAgICAgICAgICAkdGhpcy0+aW1nX3ksDQogICAgICAgICAgICAkdGhpcy0+X2NvbnZlcnRfaW1hZ2VfdHlwZSgkdGhpcy0+dHlwZSksDQogICAgICAgICAgICAnaGVpZ2h0PSInIC4gJHRoaXMtPmltZ195IC4gJyIgd2lkdGg9IicgLiAkdGhpcy0+aW1nX3ggLiAnIicsDQogICAgICAgICAgICAnbWltZScgPT4gJHRoaXMtPmdldE1pbWVUeXBlKCkpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFRoaXMgbG9va3MgYXQgdGhlIGN1cnJlbnQgaW1hZ2UgdHlwZSBhbmQgYXR0ZW1wdHMgdG8gZGV0ZXJtaW5lIHdoaWNoDQogICAgICogd2ViLXNhZmUgZm9ybWF0IHdpbGwgYmUgbW9zdCBzdWl0ZWQuICBJdCBkb2VzIG5vdCB3b3JrIGJyaWxsaWFudGx5IHdpdGgNCiAgICAgKiAqLnBuZyBpbWFnZXMsIGJlY2F1c2UgaXQgaXMgdmVyeSBkaWZmaWN1bHQgdG8ga25vdyB3aGV0aGVyIHRoZXkgYXJlDQogICAgICogOC1iaXQgb3IgZ3JlYXRlci4gIEd1ZXNzIEkgbmVlZCB0byBoYXZlIGZhdHRlciBjb2RlIGhlcmUgOi0pDQogICAgICoNCiAgICAgKiBAcmV0dXJuIHN0cmluZyB3ZWItc2FmZSBpbWFnZSB0eXBlDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBnZXRXZWJTYWZlRm9ybWF0KCkNCiAgICB7DQogICAgICAgIHN3aXRjaCAoJHRoaXMtPnR5cGUpew0KICAgICAgICAgICAgY2FzZSAnZ2lmJzoNCiAgICAgICAgICAgIGNhc2UgJ3BuZyc6DQogICAgICAgICAgICAgICAgcmV0dXJuICdwbmcnOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICByZXR1cm4gJ2pwZWcnOw0KICAgICAgICB9IC8vIHN3aXRjaA0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIEhhbmRsZXMgc3BhY2UgaW4gcGF0aCBhbmQgV2luZG93cy9VTklYIGRpZmZlcmVuY2UNCiAgICAgKg0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHBhdGggICAgQmFzZSBkaXINCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb21tYW5kIENvbW1hbmQgdG8gZXhlY3V0ZQ0KICAgICAqIEBwYXJhbSBzdHJpbmcgJGFyZ3MgICAgQXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIGNvbW1hbmQNCiAgICAgKg0KICAgICAqIEByZXR1cm4gc3RyaW5nIEEgcHJlcGFyZWQgc3RyaW5nIHN1aXRhYmxlIGZvciBleGVjKCkNCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZA0KICAgICAqLw0KICAgIGZ1bmN0aW9uIF9wcmVwYXJlX2NtZCgkcGF0aCwgJGNvbW1hbmQsICRhcmdzID0gJycpDQogICAgew0KICAgICAgICBpZiAoIU9TX1dJTkRPV1MNCiAgICAgICAgICAgIHx8ICFwcmVnX21hdGNoKCcvXHMvJywgJHBhdGgpKSB7DQogICAgICAgICAgICByZXR1cm4gJHBhdGggLiAkY29tbWFuZCAuICcgJyAuICRhcmdzOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiAnc3RhcnQgL0QgIicgLiAkcGF0aCAuICciIC9CICcgLiAkY29tbWFuZCAuICcgJyAuICRhcmdzOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFBsYWNlIGhvbGRlciBmb3IgdGhlIHJlYWwgcmVzaXplIG1ldGhvZA0KICAgICAqIHVzZWQgYnkgZXh0ZW5kZWQgbWV0aG9kcyB0byBkbyB0aGUgcmVzaXppbmcNCiAgICAgKg0KICAgICAqIEByZXR1cm4gUEVBUl9lcnJvcg0KICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkDQogICAgICovDQogICAgZnVuY3Rpb24gX3Jlc2l6ZSgpDQogICAgew0KICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcignUmVzaXplIG1ldGhvZCBub3Qgc3VwcG9ydGVkIGJ5IGRyaXZlcicsDQogICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfVU5TVVBQT1JURUQpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIE5vcm1hbGl6ZXMgdGhlIGNvbG9ycywgZ2FtbWEgYW5kIG90aGVyIHByb3BlcnRpZXMgb2YgYW4gaW1hZ2UNCiAgICAgKiAodGhpcyBzaG91bGQgZ2l2ZSBhIHJlc3VsdCBlcXVpdmFsZW50IHRvIGEgUGhvdG9zaG9wIGF1dG9sZXZlbHMpDQogICAgICoNCiAgICAgKiBAcmV0dXJuIFBFQVJfZXJyb3INCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZSgpDQogICAgew0KICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcignTm9ybWFsaXplIG1ldGhvZCBub3Qgc3VwcG9ydGVkIGJ5IGRyaXZlcicsDQogICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfVU5TVVBQT1JURUQpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIExvYWRzIGFuIGltYWdlIGZpbGUgdG8gd29yayB3aXRoDQogICAgICoNCiAgICAgKiBQbGFjZSBob2xkZXIgZm9yIHRoZSByZWFsIGxvYWQgbWV0aG9kDQogICAgICogdXNlZCBieSBleHRlbmRlZCBtZXRob2RzIHRvIGRvIHRoZSByZXNpemluZw0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkZmlsZW5hbWUgRnVsbCBuYW1lIG9mIGZpbGUNCiAgICAgKg0KICAgICAqIEByZXR1cm4gUEVBUl9lcnJvcg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gbG9hZCgkZmlsZW5hbWUpDQogICAgew0KICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcignbG9hZCgpIG1ldGhvZCBub3Qgc3VwcG9ydGVkIGJ5IGRyaXZlcicsDQogICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfVU5TVVBQT1JURUQpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIE91dHB1dHMgdGhlIGltYWdlIHRvIHN0YW5kYXJkIG91dHB1dA0KICAgICAqDQogICAgICogUGxhY2UgaG9sZGVyIGZvciB0aGUgcmVhbCBkaXNwbGF5IG1ldGhvZA0KICAgICAqIHVzZWQgYnkgZXh0ZW5kZWQgbWV0aG9kcyB0byBkbyB0aGUgcmVzaXppbmcNCiAgICAgKg0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGUgICAgRm9ybWF0IG9mIGltYWdlIHRvIHNhdmUgYXMNCiAgICAgKiBAcGFyYW0gbWl4ZWQgICRxdWFsaXR5IEZvcm1hdC1kZXBlbmRlbnQNCiAgICAgKg0KICAgICAqIEByZXR1cm4gUEVBUl9lcnJvcg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gZGlzcGxheSgkdHlwZSwgJHF1YWxpdHkgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFBFQVI6OnJhaXNlRXJyb3IoJ2Rpc3BsYXkoKSBtZXRob2Qgbm90IHN1cHBvcnRlZCBieSBkcml2ZXInLA0KICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX1VOU1VQUE9SVEVEKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZXR1cm5zIGlmIHRoZSBkcml2ZXIgc3VwcG9ydHMgYSBnaXZlbiBpbWFnZSB0eXBlDQogICAgICoNCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0eXBlIEltYWdlIHR5cGUgKEdJRiwgUE5HLCBKUEVHLi4uKQ0KICAgICAqIEBwYXJhbSBzdHJpbmcgJG1vZGUgJ3InIGZvciByZWFkLCAndycgZm9yIHdyaXRlLCAncncnIGZvciBib3RoDQogICAgICoNCiAgICAgKiBAcmV0dXJuIFRSVUUgaWYgdHlwZSAoYW5kIG1vZGUpIGlzIHN1cHBvcnRlZCBGQUxTRSBvdGhlcndpc2UNCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHN1cHBvcnRzVHlwZSgkdHlwZSwgJG1vZGUgPSAncncnKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIChzdHJwb3MoQCR0aGlzLT5fc3VwcG9ydGVkX2ltYWdlX3R5cGVzW3N0cnRvbG93ZXIoJHR5cGUpXSwgJG1vZGUpID09PSBmYWxzZSkgPyBmYWxzZSA6IHRydWU7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogU2F2ZXMgaW1hZ2UgdG8gZmlsZQ0KICAgICAqDQogICAgICogUGxhY2UgaG9sZGVyIGZvciB0aGUgcmVhbCBzYXZlIG1ldGhvZA0KICAgICAqIHVzZWQgYnkgZXh0ZW5kZWQgbWV0aG9kcyB0byBkbyB0aGUgcmVzaXppbmcNCiAgICAgKg0KICAgICAqIEBwYXJhbSBzdHJpbmcgJGZpbGVuYW1lIEZpbGVuYW1lIHRvIHNhdmUgaW1hZ2UgdG8NCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0eXBlICAgICBGb3JtYXQgb2YgaW1hZ2UgdG8gc2F2ZSBhcw0KICAgICAqIEBwYXJhbSBtaXhlZCAgJHF1YWxpdHkgIEZvcm1hdC1kZXBlbmRlbnQNCiAgICAgKg0KICAgICAqIEByZXR1cm4gUEVBUl9lcnJvcg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gc2F2ZSgkZmlsZW5hbWUsICR0eXBlLCAkcXVhbGl0eSA9IG51bGwpDQogICAgew0KICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcignc2F2ZSgpIG1ldGhvZCBub3Qgc3VwcG9ydGVkIGJ5IGRyaXZlcicsDQogICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfVU5TVVBQT1JURUQpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJlbGVhc2VzIHJlc291cmNlDQogICAgICoNCiAgICAgKiBQbGFjZSBob2xkZXIgZm9yIHRoZSByZWFsIGZyZWUgbWV0aG9kDQogICAgICogdXNlZCBieSBleHRlbmRlZCBtZXRob2RzIHRvIGRvIHRoZSByZXNpemluZw0KICAgICAqDQogICAgICogQHJldHVybiBQRUFSX2Vycm9yDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBmcmVlKCkNCiAgICB7DQogICAgICAgIHJldHVybiBQRUFSOjpyYWlzZUVycm9yKCdmcmVlKCkgbWV0aG9kIG5vdCBzdXBwb3J0ZWQgYnkgZHJpdmVyJywNCiAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9VTlNVUFBPUlRFRCk7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ29udmVydHMgYSBjb2xvciBzdHJpbmcgaW50byBhbiBhcnJheSBvZiBSR0IgdmFsdWVzDQogICAgICoNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb2xvcmhleCBBIGNvbG9yIGZvbGxvd2luZyB0aGUgI0ZGRkZGRiBmb3JtYXQNCiAgICAgKg0KICAgICAqIEByZXR1cm4gYXJyYXkgMy1lbGVtZW50IGFycmF5IHdpdGggMC0yNTUgdmFsdWVzDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKg0KICAgICAqIEBzZWUgcmdiMmNvbG9ybmFtZQ0KICAgICAqIEBzZWUgY29sb3JhcnJheTJjb2xvcmhleA0KICAgICAqLw0KICAgIGZ1bmN0aW9uIGNvbG9yaGV4MmNvbG9yYXJyYXkoJGNvbG9yaGV4KQ0KICAgIHsNCiAgICAgICAgJHIgPSBoZXhkZWMoc3Vic3RyKCRjb2xvcmhleCwgMSwgMikpOw0KICAgICAgICAkZyA9IGhleGRlYyhzdWJzdHIoJGNvbG9yaGV4LCAzLCAyKSk7DQogICAgICAgICRiID0gaGV4ZGVjKHN1YnN0cigkY29sb3JoZXgsIDUsIDIpKTsNCiAgICAgICAgcmV0dXJuIGFycmF5KCRyLCAkZywgJGIsICd0eXBlJyA9PiAnUkdCJyk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX3NlbmRfZGlzcGxheV9oZWFkZXJzKCR0eXBlKQ0KICAgIHsNCiAgICAgICAgLy8gRmluZCB0aGUgZmlsZW5hbWUgb2YgdGhlIG9yaWdpbmFsIGltYWdlOg0KICAgICAgICAkZmlsZW5hbWUgPSBleHBsb2RlKCcuJywgYmFzZW5hbWUoJHRoaXMtPmltYWdlKSk7DQogICAgICAgICRmaWxlbmFtZSA9ICRmaWxlbmFtZVswXTsNCiAgICAgICAgaGVhZGVyKCdDb250ZW50LXR5cGU6ICcgLiAkdGhpcy0+Z2V0TWltZVR5cGUoJHR5cGUpKTsNCiAgICAgICAgaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmU7IGZpbGVuYW1lPScgLiAkZmlsZW5hbWUgLiAnLicgLiAkdHlwZSk7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ29udmVydHMgYW4gYXJyYXkgb2YgUkdCIHZhbHVlIGludG8gYSAjRkZGRkZGIGZvcm1hdCBjb2xvci4NCiAgICAgKg0KICAgICAqIEBwYXJhbSBhcnJheSAkY29sb3IgMy1lbGVtZW50IGFycmF5IHdpdGggMC0yNTUgdmFsdWVzDQogICAgICoNCiAgICAgKiBAcmV0dXJuIG1peGVkIEEgY29sb3IgZm9sbG93aW5nIHRoZSAjRkZGRkZGIGZvcm1hdCBvciBGQUxTRQ0KICAgICAqICAgICAgICAgICAgICAgaWYgdGhlIGFycmF5IGNvdWxkbid0IGJlIGNvbnZlcnRlZA0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICoNCiAgICAgKiBAc2VlIHJnYjJjb2xvcm5hbWUNCiAgICAgKiBAc2VlIGNvbG9yaGV4MmNvbG9yYXJyYXkNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBjb2xvcmFycmF5MmNvbG9yaGV4KCRjb2xvcikNCiAgICB7DQogICAgICAgIGlmICghaXNfYXJyYXkoJGNvbG9yKSkgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgICRjb2xvciA9IHNwcmludGYoJyMlMDJYJTAyWCUwMlgnLCBAJGNvbG9yWzBdLCBAJGNvbG9yWzFdLCBAJGNvbG9yWzJdKTsNCiAgICAgICAgcmV0dXJuIChzdHJsZW4oJGNvbG9yKSAhPSA3KSA/IGZhbHNlIDogJGNvbG9yOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJldHVybnMgdGhlIHRlbXAgZGlyZWN0b3J5IGFjY29yZGluZyB0byBlaXRoZXIgdGhlIFRNUCwgVE1QRElSLCBvciBURU1QIGVudg0KICAgICAqIHZhcmlhYmxlcy4gSWYgdGhlc2UgYXJlIG5vdCBzZXQgaXQgd2lsbCBhbHNvIGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mDQogICAgICogL3RtcCwgJVdJTkRJUiVcdGVtcA0KICAgICAqDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgc3lzdGVtIHRtcCBkaXJlY3RvcnkNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBnZXRUZW1wRGlyKCkNCiAgICB7DQogICAgICAgIGluY2x1ZGVfb25jZSAnU3lzdGVtLnBocCc7DQogICAgICAgIHJldHVybiBTeXN0ZW06OnRtcGRpcigpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJldHVybnMgYSB0ZW1wb3JhcnkgZmlsZW5hbWUgdXNpbmcgdGVtcG5hbSgpIGFuZCB0aGUgYWJvdmUgZ2V0VG1wRGlyKCkgZnVuY3Rpb24uDQogICAgICoNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkaXJuYW1lIE9wdGlvbmFsIGRpcmVjdG9yeSBuYW1lIGZvciB0aGUgdG1wIGZpbGUNCiAgICAgKg0KICAgICAqIEByZXR1cm4gc3RyaW5nIEZpbGVuYW1lIGFuZCBwYXRoIG9mIHRoZSB0bXAgZmlsZQ0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gZ2V0VGVtcEZpbGUoJGRpcm5hbWUgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgaWYgKGlzX251bGwoJGRpcm5hbWUpKSB7DQogICAgICAgICAgICBpbmNsdWRlX29uY2UgJ1N5c3RlbS5waHAnOw0KICAgICAgICAgICAgJGRpcm5hbWUgPSBTeXN0ZW06OnRtcGRpcigpOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIHRlbXBuYW0oJGRpcm5hbWUsICd0ZW1wLicpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGtlZXBTZXR0aW5nc09uU2F2ZSgkYm9vbCkNCiAgICB7DQogICAgICAgICR0aGlzLT5rZWVwX3NldHRpbmdzX29uX3NhdmUgPSAkYm9vbDsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBNZXRob2RzIHRvIGFkZCB0byB0aGUgZHJpdmVyIGNsYXNzZXMgaW4gdGhlIGZ1dHVyZQ0KICAgICAqDQogICAgICogQHJldHVybiB2b2lkDQogICAgICovDQogICAgZnVuY3Rpb24gYWRkVGV4dCgpDQogICAgew0KICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcignYWRkVGV4dCgpIG1ldGhvZCBub3Qgc3VwcG9ydGVkIGJ5IGRyaXZlcicsDQogICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfVU5TVVBQT1JURUQpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGFkZERyb3BTaGFkb3coKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFBFQVI6OnJhaXNlRXJyb3IoJ2FkZERyb3BTaGFkb3coKSBtZXRob2Qgbm90IHN1cHBvcnRlZCBieSBkcml2ZXInLA0KICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX1VOU1VQUE9SVEVEKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBhZGRCb3JkZXIoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFBFQVI6OnJhaXNlRXJyb3IoJ2FkZEJvcmRlcigpIG1ldGhvZCBub3Qgc3VwcG9ydGVkIGJ5IGRyaXZlcicsDQogICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfVU5TVVBQT1JURUQpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIENyb3BzIGFuIGltYWdlDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ICR3aWR0aCAgQ3JvcHBlZCBpbWFnZSB3aWR0aA0KICAgICAqIEBwYXJhbSBpbnQgJGhlaWdodCBDcm9wcGVkIGltYWdlIGhlaWdodA0KICAgICAqIEBwYXJhbSBpbnQgJHggICAgICBYLWNvb3JkaW5hdGUgdG8gY3JvcCBhdA0KICAgICAqIEBwYXJhbSBpbnQgJHkgICAgICBZLWNvb3JkaW5hdGUgdG8gY3JvcCBhdA0KICAgICAqDQogICAgICogQHJldHVybiBtaXhlZCBUUlVFIG9yIGEgUEVBUl9FcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqKi8NCiAgICBmdW5jdGlvbiBjcm9wKCR3aWR0aCwgJGhlaWdodCwgJHggPSAwLCAkeSA9IDApDQogICAgew0KICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcignY3JvcCgpIG1ldGhvZCBub3Qgc3VwcG9ydGVkIGJ5IGRyaXZlcicsDQogICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfVU5TVVBQT1JURUQpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGNhbnZhc1Jlc2l6ZSgpDQogICAgew0KICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcignY2FudmFzUmVzaXplKCkgbWV0aG9kIG5vdCBzdXBwb3J0ZWQgYnkgZHJpdmVyJywNCiAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9VTlNVUFBPUlRFRCk7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ29ycmVjdHMgdGhlIGdhbW1hIG9mIGFuIGltYWdlDQogICAgICoNCiAgICAgKiBAcGFyYW0gZmxvYXQgJG91dHB1dGdhbW1hIEdhbW1hIGNvcnJlY3Rpb24gZmFjdG9yDQogICAgICoNCiAgICAgKiBAcmV0dXJuIG1peGVkIFRSVUUgb3IgYSBQRUFSX2Vycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICoqLw0KICAgIGZ1bmN0aW9uIGdhbW1hKCRvdXRwdXRnYW1tYSA9IDEuMCkNCiAgICB7DQogICAgICAgIHJldHVybiBQRUFSOjpyYWlzZUVycm9yKCdnYW1tYSgpIG1ldGhvZCBub3Qgc3VwcG9ydGVkIGJ5IGRyaXZlcicsDQogICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfVU5TVVBQT1JURUQpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJvdGF0ZXMgdGhlIGltYWdlIGNsb2Nrd2lzZQ0KICAgICAqDQogICAgICogQHBhcmFtIGZsb2F0ICRhbmdsZSAgIEFuZ2xlIG9mIHJvdGF0aW9uIGluIGRlZ3Jlcw0KICAgICAqIEBwYXJhbSBtaXhlZCAkb3B0aW9ucyBSb3RhdGlvbiBvcHRpb25zDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGJvb2x8UEVBUl9FcnJvciBUUlVFIG9uIHN1Y2Nlc3MsIFBFQVJfRXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiByb3RhdGUoJGFuZ2xlLCAkb3B0aW9ucyA9IG51bGwpDQogICAgew0KICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcigncm90YXRlKCkgbWV0aG9kIG5vdCBzdXBwb3J0ZWQgYnkgZHJpdmVyJywNCiAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9VTlNVUFBPUlRFRCk7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogSG9yaXpvbnRhbCBtaXJyb3JpbmcNCiAgICAgKg0KICAgICAqIEByZXR1cm4gbWl4ZWQgVFJVRSBvciBQRUFSX0Vycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICogQHNlZSBmbGlwKCkNCiAgICAgKiovDQogICAgZnVuY3Rpb24gbWlycm9yKCkNCiAgICB7DQogICAgICAgIHJldHVybiBQRUFSOjpyYWlzZUVycm9yKCdtaXJyb3IoKSBtZXRob2Qgbm90IHN1cHBvcnRlZCBieSBkcml2ZXInLA0KICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX1VOU1VQUE9SVEVEKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBWZXJ0aWNhbCBtaXJyb3JpbmcNCiAgICAgKg0KICAgICAqIEByZXR1cm4gVFJVRSBvciBQRUFSIEVycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICogQHNlZSBtaXJyb3IoKQ0KICAgICAqKi8NCiAgICBmdW5jdGlvbiBmbGlwKCkNCiAgICB7DQogICAgICAgIHJldHVybiBQRUFSOjpyYWlzZUVycm9yKCdmbGlwKCkgbWV0aG9kIG5vdCBzdXBwb3J0ZWQgYnkgZHJpdmVyJywNCiAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9VTlNVUFBPUlRFRCk7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ29udmVydHMgYW4gaW1hZ2UgaW50byBncmV5c2NhbGUgY29sb3JzDQogICAgICoNCiAgICAgKiBAcmV0dXJuIG1peGVkIFRSVUUgb3IgYSBQRUFSIGVycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICoqLw0KICAgIGZ1bmN0aW9uIGdyZXlzY2FsZSgpDQogICAgew0KICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcignZ3JleXNjYWxlKCkgbWV0aG9kIG5vdCBzdXBwb3J0ZWQgYnkgZHJpdmVyJywNCiAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9VTlNVUFBPUlRFRCk7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ29udmVydHMgYW4gaW1hZ2UgaW50byBncmV5c2NhbGUgY29sb3JzDQogICAgICoNCiAgICAgKiBAcmV0dXJuIG1peGVkIFRSVUUgb3IgYSBQRUFSIGVycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEBzZWUgZ3JleXNjYWxlKCkNCiAgICAgKiovDQogICAgZnVuY3Rpb24gZ3JheXNjYWxlKCkNCiAgICB7DQogICAgICAgIHJldHVybiAkdGhpcy0+Z3JleXNjYWxlKCk7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUmV0dXJucyBhIGNvbG9yIG9wdGlvbg0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkY29sb3JPZiBvbmUgb2YgJ2NhbnZhc0NvbG9yJywgJ3BlbmNpbENvbG9yJywgJ2ZvbnRDb2xvcicNCiAgICAgKiBAcGFyYW0gYXJyYXkgICRvcHRpb25zIGNvbmZpZ3VyYXRpb24gb3B0aW9ucw0KICAgICAqIEBwYXJhbSBhcnJheSAgJGRlZmF1bHQgZGVmYXVsdCB2YWx1ZSB0byByZXR1cm4gaWYgY29sb3Igbm90IGZvdW5kDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGFycmF5IGFuIFJHQiBjb2xvciBhcnJheQ0KICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkDQogICAgICovDQogICAgZnVuY3Rpb24gX2dldENvbG9yKCRjb2xvck9mLCAkb3B0aW9ucyA9IGFycmF5KCksICRkZWZhdWx0ID0gYXJyYXkoMCwgMCwgMCkpDQogICAgew0KICAgICAgICAkb3B0ID0gYXJyYXlfbWVyZ2UoJHRoaXMtPl9vcHRpb25zLCAoYXJyYXkpICRvcHRpb25zKTsNCiAgICAgICAgaWYgKGlzc2V0KCRvcHRbJGNvbG9yT2ZdKSkgew0KICAgICAgICAgICAgJGNvbG9yID0gJG9wdFskY29sb3JPZl07DQogICAgICAgICAgICBpZiAoaXNfYXJyYXkoJGNvbG9yKSkgew0KICAgICAgICAgICAgICAgIHJldHVybiAkY29sb3I7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJGNvbG9yezB9ID09ICcjJykgew0KICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Y29sb3JoZXgyY29sb3JhcnJheSgkY29sb3IpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgc3RhdGljICRjb2xvcm5hbWVzID0gYXJyYXkoKTsNCiAgICAgICAgICAgIGluY2x1ZGVfb25jZSAnSW1hZ2UvVHJhbnNmb3JtL0RyaXZlci9Db2xvcnNEZWZzLnBocCc7DQogICAgICAgICAgICByZXR1cm4gKGlzc2V0KCRjb2xvcm5hbWVzWyRjb2xvcl0pKSA/ICRjb2xvcm5hbWVzWyRjb2xvcl0gOiAkZGVmYXVsdDsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gJGRlZmF1bHQ7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUmV0dXJucyBhbiBvcHRpb24NCiAgICAgKg0KICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgICAgbmFtZSBvZiBvcHRpb24NCiAgICAgKiBAcGFyYW0gYXJyYXkgICRvcHRpb25zIGxvY2FsIG92ZXJyaWRlIG9wdGlvbiBhcnJheQ0KICAgICAqIEBwYXJhbSBtaXhlZCAgJGRlZmF1bHQgZGVmYXVsdCB2YWx1ZSB0byByZXR1cm4gaWYgb3B0aW9uIGlzIG5vdCBmb3VuZA0KICAgICAqDQogICAgICogQHJldHVybiBtaXhlZCB0aGUgb3B0aW9uDQogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBfZ2V0T3B0aW9uKCRuYW1lLCAkb3B0aW9ucyA9IGFycmF5KCksICRkZWZhdWx0ID0gbnVsbCkNCiAgICB7DQogICAgICAgICRvcHQgPSBhcnJheV9tZXJnZSgkdGhpcy0+X29wdGlvbnMsIChhcnJheSkgJG9wdGlvbnMpOw0KICAgICAgICByZXR1cm4gKGlzc2V0KCRvcHRbJG5hbWVdKSkgPyAkb3B0WyRuYW1lXSA6ICRkZWZhdWx0Ow0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIENoZWNrcyBpZiB0aGUgcmVjdGFuZ2xlIHBhc3NlZCBpbnRlcnNlY3RzIHdpdGggdGhlIGN1cnJlbnQgaW1hZ2UNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnQgJHdpZHRoICBXaWR0aCBvZiByZWN0YW5nbGUNCiAgICAgKiBAcGFyYW0gaW50ICRoZWlnaHQgSGVpZ2h0IG9mIHJlY3RhbmdsZQ0KICAgICAqIEBwYXJhbSBpbnQgJHggICAgICBYLWNvb3JkaW5hdGUNCiAgICAgKiBAcGFyYW0gaW50ICR5ICAgICAgWS1jb29yZGluYXRlDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGJvb2x8UEVBUl9FcnJvciBUUlVFIGlmIGludGVyc2VjdHMsIEZBTFNFIGlmIG5vdCwNCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgUEVBUl9FcnJvciBvbiBlcnJvcg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gaW50ZXJzZWN0cygkd2lkdGgsICRoZWlnaHQsICR4LCAkeSkNCiAgICB7DQogICAgICAgICRsZWZ0ICA9ICR4Ow0KICAgICAgICAkcmlnaHQgPSAkeCArICR3aWR0aDsNCiAgICAgICAgaWYgKCRyaWdodCA8ICRsZWZ0KSB7DQogICAgICAgICAgICAkbGVmdCAgPSAkcmlnaHQ7DQogICAgICAgICAgICAkcmlnaHQgPSAkeDsNCiAgICAgICAgfQ0KICAgICAgICAkdG9wICAgID0gJHk7DQogICAgICAgICRib3R0b20gPSAkeSArICRoZWlnaHQ7DQogICAgICAgIGlmICgkYm90dG9tIDwgJHRvcCkgew0KICAgICAgICAgICAgJHRvcCAgICA9ICRib3R0b207DQogICAgICAgICAgICAkYm90dG9tID0gJHk7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIChib29sKSAoJGxlZnQgPCAkdGhpcy0+bmV3X3gNCiAgICAgICAgICAgICAgICAgICAgICAgJiYgJHJpZ2h0ID49IDANCiAgICAgICAgICAgICAgICAgICAgICAgJiYgJHRvcCA8ICR0aGlzLT5uZXdfeQ0KICAgICAgICAgICAgICAgICAgICAgICAmJiAkYm90dG9tID49IDApOw0KICAgIH0NCn0NCg==]]></data>
	</file>
	<file>
	  <filename>/lib/external/Image/~backup/Transform/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/external/Image/~backup/Transform/Driver/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/external/Image/~backup/Transform/Driver/Cairowrapper.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qIHZpbTogc2V0IGV4cGFuZHRhYiB0YWJzdG9wPTQgc2hpZnR3aWR0aD00OiAqLw0KDQovKioNCiAqIENhaXJvIGltcGxlbWVudGF0aW9uIGZvciBJbWFnZV9UcmFuc2Zvcm0gcGFja2FnZQ0KICoNCiAqIFBIUCB2ZXJzaW9ucyA0IGFuZCA1DQogKg0KICogQGNhdGVnb3J5ICAgSW1hZ2UNCiAqIEBwYWNrYWdlICAgIEltYWdlX1RyYW5zZm9ybQ0KICogQHN1YnBhY2thZ2UgSW1hZ2VfVHJhbnNmb3JtX0RyaXZlcl9DYWlyb3dyYXBwZXINCiAqIEBhdXRob3IgICAgIENocmlzdGlhbiBXZWlza2UgPGN3ZWlza2VAcGhwLm5ldD4NCiAqIEBjb3B5cmlnaHQgIDIwMDggVGhlIFBIUCBHcm91cA0KICogQGxpY2Vuc2UgICAgaHR0cDovL3d3dy5nbnUub3JnL2NvcHlsZWZ0L2xlc3Nlci5odG1sIExHUEwNCiAqIEB2ZXJzaW9uICAgIENWUzogJElkOiBDYWlyb3dyYXBwZXIucGhwIDI4ODExMiAyMDA5LTA5LTA2IDIxOjAyOjM3WiBjd2Vpc2tlICQNCiAqIEBsaW5rICAgICAgIGh0dHA6Ly9wZWFyLnBocC5uZXQvcGFja2FnZS9JbWFnZV9UcmFuc2Zvcm0NCiAqLw0KcmVxdWlyZV9vbmNlICdJbWFnZS9UcmFuc2Zvcm0ucGhwJzsNCg0KLyoqDQogKiBDYWlybyBpbXBsZW1lbnRhdGlvbiBmb3IgSW1hZ2VfVHJhbnNmb3JtIHBhY2thZ2UgdXNpbmcgcGVjbCdzIGNhaXJvX3dyYXBwZXINCiAqIGV4dGVuc2lvbi4NCiAqDQogKiBTdXBwb3J0cyBwbmcgZmlsZXMgb25seS4NCiAqDQogKiBAY2F0ZWdvcnkgICBJbWFnZQ0KICogQHBhY2thZ2UgICAgSW1hZ2VfVHJhbnNmb3JtDQogKiBAc3VicGFja2FnZSBJbWFnZV9UcmFuc2Zvcm1fRHJpdmVyX0NhaXJvd3JhcHBlcg0KICogQGF1dGhvciAgICAgQ2hyaXN0aWFuIFdlaXNrZSA8Y3dlaXNrZUBwaHAubmV0Pg0KICogQGNvcHlyaWdodCAgMjAwOCBUaGUgUEhQIEdyb3VwDQogKiBAbGljZW5zZSAgICBodHRwOi8vd3d3LmdudS5vcmcvY29weWxlZnQvbGVzc2VyLmh0bWwgTEdQTA0KICogQHZlcnNpb24gICAgUmVsZWFzZTogQHBhY2thZ2VfdmVyc2lvbkANCiAqIEBsaW5rICAgICAgIGh0dHA6Ly9wZWFyLnBocC5uZXQvcGFja2FnZS9JbWFnZV9UcmFuc2Zvcm0NCiAqLw0KY2xhc3MgSW1hZ2VfVHJhbnNmb3JtX0RyaXZlcl9DYWlyb3dyYXBwZXIgZXh0ZW5kcyBJbWFnZV9UcmFuc2Zvcm0NCnsNCiAgICB2YXIgJHN1cmZhY2UgPSBudWxsOw0KDQogICAgLyoqDQogICAgICogU3VwcG9ydGVkIGltYWdlIHR5cGVzDQogICAgICoNCiAgICAgKiBAdmFyICAgIGFycmF5DQogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQNCiAgICAgKi8NCiAgICB2YXIgJF9zdXBwb3J0ZWRfaW1hZ2VfdHlwZXMgPSBhcnJheSgNCiAgICAgICAgJ3BuZycgPT4gJ3J3Jw0KICAgICk7DQoNCiAgICAvKioNCiAgICAgKiBDaGVjayBzZXR0aW5ncw0KICAgICAqLw0KICAgIGZ1bmN0aW9uIEltYWdlX1RyYW5zZm9ybV9Ecml2ZXJfQ2Fpcm93cmFwcGVyKCkNCiAgICB7DQogICAgICAgICR0aGlzLT5fX2NvbnN0cnVjdCgpOw0KICAgIH0NCg0KDQoNCiAgICAvKioNCiAgICAgKiBDcmVhdGUgb2JqZWN0IGFuZCBjaGVjayBpZiBjYWlyb193cmFwcGVyIGlzIGxvYWRlZA0KICAgICAqLw0KICAgIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkNCiAgICB7DQogICAgICAgIGlmICghUEVBUjo6bG9hZEV4dGVuc2lvbignY2Fpcm9fd3JhcHBlcicpKSB7DQogICAgICAgICAgICAkdGhpcy0+aXNFcnJvcigNCiAgICAgICAgICAgICAgICBQRUFSOjpyYWlzZUVycm9yKA0KICAgICAgICAgICAgICAgICAgICAnY2Fpcm9fd3JhcHBlciBleHRlbnNpb24gaXMgbm90IGF2YWlsYWJsZS4nLA0KICAgICAgICAgICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfVU5TVVBQT1JURUQNCiAgICAgICAgICAgICAgICApDQogICAgICAgICAgICApOw0KICAgICAgICB9DQogICAgfQ0KDQoNCg0KICAgIC8qKg0KICAgICAqIExvYWRzIGFuIGltYWdlIGZyb20gZmlsZQ0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkaW1hZ2UgZmlsZW5hbWUNCiAgICAgKg0KICAgICAqIEByZXR1cm4gYm9vbHxQRUFSX0Vycm9yIFRSVUUgb3IgYSBQRUFSX0Vycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBsb2FkKCRpbWFnZSkNCiAgICB7DQogICAgICAgICR0aGlzLT5mcmVlKCk7DQoNCiAgICAgICAgJHRoaXMtPmltYWdlID0gJGltYWdlOw0KICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPl9nZXRfaW1hZ2VfZGV0YWlscygkaW1hZ2UpOw0KICAgICAgICBpZiAoUEVBUjo6aXNFcnJvcigkcmVzdWx0KSkgew0KICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7DQogICAgICAgIH0NCiAgICAgICAgaWYgKCEkdGhpcy0+c3VwcG9ydHNUeXBlKCR0aGlzLT50eXBlLCAncicpKSB7DQogICAgICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcignSW1hZ2UgdHlwZSBub3Qgc3VwcG9ydGVkIGZvciBpbnB1dCcsDQogICAgICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX1VOU1VQUE9SVEVEKTsNCiAgICAgICAgfQ0KDQogICAgICAgICR0aGlzLT5zdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZnJvbV9wbmcoJHRoaXMtPmltYWdlKTsNCiAgICAgICAgaWYgKGNhaXJvX3N1cmZhY2Vfc3RhdHVzKCR0aGlzLT5zdXJmYWNlKSAhPSBDQUlST19TVEFUVVNfU1VDQ0VTUykgew0KICAgICAgICAgICAgJHRoaXMtPnN1cmZhY2UgPSBudWxsOw0KICAgICAgICAgICAgcmV0dXJuIFBFQVI6OnJhaXNlRXJyb3IoJ0Vycm9yIHdoaWxlIGxvYWRpbmcgaW1hZ2UgZmlsZS4nLA0KICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9JTyk7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9Ly9mdW5jdGlvbiBsb2FkKC4uKQ0KDQoNCg0KICAgIC8qKg0KICAgICAqIFJlc2l6ZSB0aGUgaW1hZ2UNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnQgICAkbmV3X3ggICBOZXcgd2lkdGgNCiAgICAgKiBAcGFyYW0gaW50ICAgJG5ld195ICAgTmV3IGhlaWdodA0KICAgICAqIEBwYXJhbSBhcnJheSAkb3B0aW9ucyBPcHRpb25hbCBwYXJhbWV0ZXJzDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGJvb2x8UEVBUl9FcnJvciBUUlVFIG9uIHN1Y2Nlc3Mgb3IgUEVBUl9FcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKg0KICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkDQogICAgICovDQogICAgZnVuY3Rpb24gX3Jlc2l6ZSgkbmV3X3gsICRuZXdfeSwgJG9wdGlvbnMgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgaWYgKCR0aGlzLT5yZXNpemVkID09PSB0cnVlKSB7DQogICAgICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcigNCiAgICAgICAgICAgICAgICAnWW91IGhhdmUgYWxyZWFkeSByZXNpemVkIHRoZSBpbWFnZSB3aXRob3V0IHNhdmluZyBpdC4nDQogICAgICAgICAgICAgICAgLiAnIFlvdXIgcHJldmlvdXMgcmVzaXppbmcgd2lsbCBiZSBvdmVyd3JpdHRlbicsDQogICAgICAgICAgICAgICAgbnVsbCwgUEVBUl9FUlJPUl9UUklHR0VSLCBFX1VTRVJfTk9USUNFDQogICAgICAgICAgICApOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKCR0aGlzLT5uZXdfeCA9PSAkbmV3X3ggJiYgJHRoaXMtPm5ld195ID09ICRuZXdfeSkgew0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0NCg0KICAgICAgICAkeEZhY3RvciA9ICRuZXdfeCAvICR0aGlzLT5pbWdfeDsNCiAgICAgICAgJHlGYWN0b3IgPSAkbmV3X3kgLyAkdGhpcy0+aW1nX3k7DQoNCiAgICAgICAgJG91dHB1dFN1cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZSgNCiAgICAgICAgICAgIENBSVJPX0ZPUk1BVF9BUkdCMzIsICRuZXdfeCwgJG5ld195DQogICAgICAgICk7DQogICAgICAgICRvdXRwdXRDb250ZXh0ID0gY2Fpcm9fY3JlYXRlKCRvdXRwdXRTdXJmYWNlKTsNCg0KICAgICAgICBjYWlyb19zY2FsZSgkb3V0cHV0Q29udGV4dCwgJHhGYWN0b3IsICR5RmFjdG9yKTsNCg0KICAgICAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoJG91dHB1dENvbnRleHQsICR0aGlzLT5zdXJmYWNlLCAwLCAwKTsNCiAgICAgICAgY2Fpcm9fcGFpbnQoJG91dHB1dENvbnRleHQpOw0KDQogICAgICAgIGNhaXJvX2Rlc3Ryb3koJG91dHB1dENvbnRleHQpOw0KDQogICAgICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveSgkdGhpcy0+c3VyZmFjZSk7DQoNCiAgICAgICAgJHRoaXMtPnN1cmZhY2UgPSAkb3V0cHV0U3VyZmFjZTsNCg0KICAgICAgICAkdGhpcy0+bmV3X3ggPSAkbmV3X3g7DQogICAgICAgICR0aGlzLT5uZXdfeSA9ICRuZXdfeTsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfS8vZnVuY3Rpb24gX3Jlc2l6ZSguLikNCg0KDQoNCiAgICAvKioNCiAgICAgKiBTYXZlcyB0aGUgc2NhbGVkIGltYWdlIGludG8gYSBmaWxlLg0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkZmlsZW5hbWUgVGhlIGZpbGVuYW1lIHRvIHNhdmUgdG8NCiAgICAgKiBAcGFyYW0gbWl4ZWQgICR0eXBlICAgICBpZ25vcmVkDQogICAgICogQHBhcmFtIG1peGVkICAkcXVhbGl0eSAgaWdub3JlZA0KICAgICAqDQogICAgICogQHJldHVybiBib29sfFBFQVJfRXJyb3IgVFJVRSBvbiBzdWNjZXNzIG9yIFBFQVJfRXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICoNCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHNhdmUoJGZpbGVuYW1lLCAkdHlwZSA9IG51bGwsICRxdWFsaXR5ID0gbnVsbCkNCiAgICB7DQogICAgICAgIGNhaXJvX3N1cmZhY2Vfd3JpdGVfdG9fcG5nKCR0aGlzLT5zdXJmYWNlLCAkZmlsZW5hbWUpOw0KICAgICAgICAkdGhpcy0+ZnJlZSgpOw0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9Ly9mdW5jdGlvbiBzYXZlKC4uKQ0KDQoNCg0KICAgIC8qKg0KICAgICAqIFJldHVybnMgdGhlIHN1cmZhY2Ugb2YgdGhlIGltYWdlIHNvIGl0IGNhbiBiZSBtb2RpZmllZCBmdXJ0aGVyDQogICAgICoNCiAgICAgKiBAcmV0dXJuIHJlc291cmNlDQogICAgICoNCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIGZ1bmN0aW9uIGdldEhhbmRsZSgpDQogICAgew0KICAgICAgICByZXR1cm4gJHRoaXMtPnN1cmZhY2U7DQogICAgfS8vZnVuY3Rpb24gZ2V0SGFuZGxlKCkNCg0KDQoNCiAgICAvKioNCiAgICAgKiBGcmVlcyBjYWlybyBoYW5kbGVzDQogICAgICoNCiAgICAgKiBAcmV0dXJuIHZvaWQNCiAgICAgKg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gZnJlZSgpDQogICAgew0KICAgICAgICAkdGhpcy0+cmVzaXplZCA9IGZhbHNlOw0KICAgICAgICBpZiAoaXNfcmVzb3VyY2UoJHRoaXMtPnN1cmZhY2UpKSB7DQogICAgICAgICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koJHRoaXMtPnN1cmZhY2UpOw0KICAgICAgICB9DQogICAgICAgICR0aGlzLT5zdXJmYWNlID0gbnVsbDsNCiAgICB9Ly9mdW5jdGlvbiBmcmVlKCkNCg0KDQoNCiAgICAvKioNCiAgICAgKiBNaXJyb3JzIHRoZSBpbWFnZSB2ZXJ0aWNhbGx5DQogICAgICogVXNlcyBhbiBhZmZpbmUgdHJhbnNmb3JtYXRpb24gbWF0cml4IHRvIGZsaXAgdGhlIGltYWdlLg0KICAgICAqDQogICAgICogQHJldHVybiB2b2lkDQogICAgICovDQogICAgZnVuY3Rpb24gZmxpcCgpDQogICAgew0KICAgICAgICAkb3V0cHV0U3VyZmFjZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKA0KICAgICAgICAgICAgQ0FJUk9fRk9STUFUX0FSR0IzMiwgJHRoaXMtPmltZ194LCAkdGhpcy0+aW1nX3kNCiAgICAgICAgKTsNCiAgICAgICAgJG91dHB1dENvbnRleHQgPSBjYWlyb19jcmVhdGUoJG91dHB1dFN1cmZhY2UpOw0KICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4eCwgeXgsIHh5LCB5eSwgeDAsIHkwDQogICAgICAgICRtYXRyaXggPSBjYWlyb19tYXRyaXhfY3JlYXRlKDEsICAwLCAgMCwgIC0xLCAgMCwgJHRoaXMtPmltZ195KTsNCg0KICAgICAgICBjYWlyb19zZXRfbWF0cml4KCRvdXRwdXRDb250ZXh0LCAkbWF0cml4KTsNCiAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKCRvdXRwdXRDb250ZXh0LCAkdGhpcy0+c3VyZmFjZSwgMCwgMCk7DQogICAgICAgIGNhaXJvX3BhaW50KCRvdXRwdXRDb250ZXh0KTsNCg0KICAgICAgICBjYWlyb19kZXN0cm95KCRvdXRwdXRDb250ZXh0KTsNCiAgICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KCR0aGlzLT5zdXJmYWNlKTsNCg0KICAgICAgICAkdGhpcy0+c3VyZmFjZSA9ICRvdXRwdXRTdXJmYWNlOw0KICAgIH0vL2Z1bmN0aW9uIGZsaXAoKQ0KDQoNCg0KICAgIC8qKg0KICAgICAqIE1pcnJvcnMgdGhlIGltYWdlIGhvcml6b250YWxseS4NCiAgICAgKiBVc2VzIGFuIGFmZmluZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggdG8gbWlycm9yIHRoZSBpbWFnZS4NCiAgICAgKg0KICAgICAqIDEyMyAtPiAzMjENCiAgICAgKg0KICAgICAqIEByZXR1cm4gdm9pZA0KICAgICAqLw0KICAgIGZ1bmN0aW9uIG1pcnJvcigpDQogICAgew0KICAgICAgICAkb3V0cHV0U3VyZmFjZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKA0KICAgICAgICAgICAgQ0FJUk9fRk9STUFUX0FSR0IzMiwgJHRoaXMtPmltZ194LCAkdGhpcy0+aW1nX3kNCiAgICAgICAgKTsNCiAgICAgICAgJG91dHB1dENvbnRleHQgPSBjYWlyb19jcmVhdGUoJG91dHB1dFN1cmZhY2UpOw0KICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4eCwgeXgsIHh5LCB5eSwgeDAsIHkwDQogICAgICAgICRtYXRyaXggPSBjYWlyb19tYXRyaXhfY3JlYXRlKC0xLCAwLCAgMCwgIDEsICR0aGlzLT5pbWdfeCwgMCk7DQoNCiAgICAgICAgY2Fpcm9fc2V0X21hdHJpeCgkb3V0cHV0Q29udGV4dCwgJG1hdHJpeCk7DQogICAgICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZSgkb3V0cHV0Q29udGV4dCwgJHRoaXMtPnN1cmZhY2UsIDAsIDApOw0KICAgICAgICBjYWlyb19wYWludCgkb3V0cHV0Q29udGV4dCk7DQoNCiAgICAgICAgY2Fpcm9fZGVzdHJveSgkb3V0cHV0Q29udGV4dCk7DQogICAgICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveSgkdGhpcy0+c3VyZmFjZSk7DQoNCiAgICAgICAgJHRoaXMtPnN1cmZhY2UgPSAkb3V0cHV0U3VyZmFjZTsNCiAgICB9Ly9mdW5jdGlvbiBtaXJyb3IoKQ0KDQp9Ly9jbGFzcyBJbWFnZV9UcmFuc2Zvcm1fRHJpdmVyX0NhaXJvd3JhcHBlciBleHRlbmRzIEltYWdlX1RyYW5zZm9ybQ0KPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/external/Image/~backup/Transform/Driver/ColorsDefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiAgICAvKioNCiAgICAqIE1hcHBpbmcgZnJvbSBuYW1lZCBjb2xvcnMgdG8gUkdCIHZhbHVlcy4NCiAgICAqDQogICAgKiBAdmFyICBhcnJheQ0KICAgICovDQogICAgJGNvbG9ybmFtZXMgPSBhcnJheSgNCiAgICAgICAgJ2FsaWNlYmx1ZScgICAgID0+IGFycmF5KDI0MCwgMjQ4LCAyNTUpLA0KICAgICAgICAnYW50aXF1ZXdoaXRlJyAgPT4gYXJyYXkoMjUwLCAyMzUsIDIxNSksDQogICAgICAgICdhcXVhJyAgICAgICAgICA9PiBhcnJheSgwLCAyNTUsIDI1NSksDQogICAgICAgICdhcXVhbWFyaW5lJyAgICA9PiBhcnJheSgxMjcsIDI1NSwgMjEyKSwNCiAgICAgICAgJ2F6dXJlJyAgICAgICAgID0+IGFycmF5KDI0MCwgMjU1LCAgMjU1KSwNCiAgICAgICAgJ2JlaWdlJyAgICAgICAgID0+IGFycmF5KDI0NSwgMjQ1LCAyMjApLA0KICAgICAgICAnYmlzcXVlJyAgICAgICAgPT4gYXJyYXkoMjU1LCAyMjgsIDE5NiksDQogICAgICAgICdibGFjaycgICAgICAgICA9PiBhcnJheSgwLCAwLCAwKSwNCiAgICAgICAgJ2JsYW5jaGVkYWxtb25kJz0+IGFycmF5KDI1NSwgMjM1LCAyMDUpLA0KICAgICAgICAnYmx1ZScgICAgICAgICAgPT4gYXJyYXkoMCwgMCwgMjU1KSwNCiAgICAgICAgJ2JsdWV2aW9sZXQnICAgID0+IGFycmF5KDEzOCwgNDMsIDIyNiksDQogICAgICAgICdicm93bicgICAgICAgICA9PiBhcnJheSgxNjUsIDQyLCA0MiksDQogICAgICAgICdidXJseXdvb2QnICAgICA9PiBhcnJheSgyMjIsIDE4NCwgMTM1KSwNCiAgICAgICAgJ2NhZGV0Ymx1ZScgICAgID0+IGFycmF5KDk1LCAxNTgsIDE2MCksDQogICAgICAgICdjaGFydHJldXNlJyAgICA9PiBhcnJheSgxMjcsIDI1NSwgMCksDQogICAgICAgICdjaG9jb2xhdGUnICAgICA9PiBhcnJheSgyMTAsIDEwNSwgMzApLA0KICAgICAgICAnY29yYWwnICAgICAgICAgPT4gYXJyYXkoMjU1LCAxMjcsIDgwKSwNCiAgICAgICAgJ2Nvcm5mbG93ZXJibHVlJz0+IGFycmF5KDEwMCwgMTQ5LCAgMjM3KSwNCiAgICAgICAgJ2Nvcm5zaWxrJyAgICAgID0+IGFycmF5KDI1NSwgMjQ4LCAyMjApLA0KICAgICAgICAnY3JpbXNvbicgICAgICAgPT4gYXJyYXkoMjIwLCAyMCwgNjApLA0KICAgICAgICAnY3lhbicgICAgICAgICAgPT4gYXJyYXkoMCwgMjU1LCAyNTUpLA0KICAgICAgICAnZGFya2JsdWUnICAgICAgPT4gYXJyYXkoMCwgMCwgMTMpLA0KICAgICAgICAnZGFya2N5YW4nICAgICAgPT4gYXJyYXkoMCwgMTM5LCAxMzkpLA0KICAgICAgICAnZGFya2dvbGRlbnJvZCcgPT4gYXJyYXkoMTg0LCAxMzQsIDExKSwNCiAgICAgICAgJ2RhcmtncmF5JyAgICAgID0+IGFycmF5KDE2OSwgMTY5LCAxNjkpLA0KICAgICAgICAnZGFya2dyZWVuJyAgICAgPT4gYXJyYXkoMCwgMTAwLCAwKSwNCiAgICAgICAgJ2RhcmtraGFraScgICAgID0+IGFycmF5KDE4OSwgMTgzLCAxMDcpLA0KICAgICAgICAnZGFya21hZ2VudGEnICAgPT4gYXJyYXkoMTM5LCAwLCAxMzkpLA0KICAgICAgICAnZGFya29saXZlZ3JlZW4nPT4gYXJyYXkoODUsIDEwNywgNDcpLA0KICAgICAgICAnZGFya29yYW5nZScgICAgPT4gYXJyYXkoMjU1LCAxNDAsIDApLA0KICAgICAgICAnZGFya29yY2hpZCcgICAgPT4gYXJyYXkoMTUzLCA1MCwgMjA0KSwNCiAgICAgICAgJ2RhcmtyZWQnICAgICAgID0+IGFycmF5KDEzOSwgMCwgMCksDQogICAgICAgICdkYXJrc2FsbW9uJyAgICA9PiBhcnJheSgyMzMsIDE1MCwgMTIyKSwNCiAgICAgICAgJ2RhcmtzZWFncmVlbicgID0+IGFycmF5KDE0MywgMTg4LCAxNDMpLA0KICAgICAgICAnZGFya3NsYXRlYmx1ZScgPT4gYXJyYXkoNzIsIDYxLCAxMzkpLA0KICAgICAgICAnZGFya3NsYXRlZ3JheScgPT4gYXJyYXkoNDcsIDc5LCA3OSksDQogICAgICAgICdkYXJrdHVycXVvaXNlJyA9PiBhcnJheSgwLCAyMDYsIDIwOSksDQogICAgICAgICdkYXJrdmlvbGV0JyAgICA9PiBhcnJheSgxNDgsIDAsIDIxMSksDQogICAgICAgICdkZWVwcGluaycgICAgICA9PiBhcnJheSgyNTUsIDIwLCAxNDcpLA0KICAgICAgICAnZGVlcHNreWJsdWUnICAgPT4gYXJyYXkoMCwgMTkxLCAyNTUpLA0KICAgICAgICAnZGltZ3JheScgICAgICAgPT4gYXJyYXkoMTA1LCAxMDUsIDEwNSksDQogICAgICAgICdkb2RnZXJibHVlJyAgICA9PiBhcnJheSgzMCwgMTQ0LCAyNTUpLA0KICAgICAgICAnZmlyZWJyaWNrJyAgICAgPT4gYXJyYXkoMTc4LCAzNCwgMzQpLA0KICAgICAgICAnZmxvcmFsd2hpdGUnICAgPT4gYXJyYXkoMjU1LCAyNTAsIDI0MCksDQogICAgICAgICdmb3Jlc3RncmVlbicgICA9PiBhcnJheSgzNCwgMTM5LCAzNCksDQogICAgICAgICdmdWNoc2lhJyAgICAgICA9PiBhcnJheSgyNTUsIDAsIDI1NSksDQogICAgICAgICdnYWluc2Jvcm8nICAgICA9PiBhcnJheSgyMjAsIDIyMCwgMjIwKSwNCiAgICAgICAgJ2dob3N0d2hpdGUnICAgID0+IGFycmF5KDI0OCwgMjQ4LCAyNTUpLA0KICAgICAgICAnZ29sZCcgICAgICAgICAgPT4gYXJyYXkoMjU1LCAyMTUsIDApLA0KICAgICAgICAnZ29sZGVucm9kJyAgICAgPT4gYXJyYXkoMjE4LCAxNjUsIDMyKSwNCiAgICAgICAgJ2dyYXknICAgICAgICAgID0+IGFycmF5KDEyOCwgMTI4LCAxMjgpLA0KICAgICAgICAnZ3JlZW4nICAgICAgICAgPT4gYXJyYXkoMCwgMTI4LCAwKSwNCiAgICAgICAgJ2dyZWVueWVsbG93JyAgID0+IGFycmF5KDE3MywgMjU1LCA0NyksDQogICAgICAgICdob25leWRldycgICAgICA9PiBhcnJheSgyNDAsIDI1NSwgMjQwKSwNCiAgICAgICAgJ2hvdHBpbmsnICAgICAgID0+IGFycmF5KDI1NSwgMTA1LCAxODApLA0KICAgICAgICAnaW5kaWFucmVkJyAgICAgPT4gYXJyYXkoMjA1LCA5MiwgOTIpLA0KICAgICAgICAnaW5kaWdvJyAgICAgICAgPT4gYXJyYXkoNzUsIDAsIDEzMCksDQogICAgICAgICdpdm9yeScgICAgICAgICA9PiBhcnJheSgyNTUsIDI1NSwgMjQwKSwNCiAgICAgICAgJ2toYWtpJyAgICAgICAgID0+IGFycmF5KDI0MCwgMjMwLCAxNDApLA0KICAgICAgICAnbGF2ZW5kZXInICAgICAgPT4gYXJyYXkoMjMwLCAyMzAsIDI1MCksDQogICAgICAgICdsYXZlbmRlcmJsdXNoJyA9PiBhcnJheSgyNTUsIDI0MCwgMjQ1KSwNCiAgICAgICAgJ2xhd25ncmVlbicgICAgID0+IGFycmF5KDEyNCwgMjUyLCAgMCksDQogICAgICAgICdsZW1vbmNoaWZmb24nICA9PiBhcnJheSgyNTUsIDI1MCwgMjA1KSwNCiAgICAgICAgJ2xpZ2h0Ymx1ZScgICAgID0+IGFycmF5KDE3MywgMjE2LCAyMzApLA0KICAgICAgICAnbGlnaHRjb3JhbCcgICAgPT4gYXJyYXkoMjQwLCAxMjgsIDEyOCksDQogICAgICAgICdsaWdodGN5YW4nICAgICA9PiBhcnJheSgyMjQsIDI1NSwgMjU1KSwNCiAgICAgICAgJ2xpZ2h0Z29sZGVucm9keWVsbG93JyA9PiBhcnJheSgyNTAsIDI1MCwgMjEwKSwNCiAgICAgICAgJ2xpZ2h0Z3JlZW4nICAgID0+IGFycmF5KDE0NCwgMjM4LCAxNDQpLA0KICAgICAgICAnbGlnaHRncmV5JyAgICAgPT4gYXJyYXkoMjExLCAyMTEsIDIxMSksDQogICAgICAgICdsaWdodHBpbmsnICAgICA9PiBhcnJheSgyNTUsIDE4MiwgMTkzKSwNCiAgICAgICAgJ2xpZ2h0c2FsbW9uJyAgID0+IGFycmF5KDI1NSwgMTYwLCAxMjIpLA0KICAgICAgICAnbGlnaHRzZWFncmVlbicgPT4gYXJyYXkoMzIsIDE3OCwgMTcwKSwNCiAgICAgICAgJ2xpZ2h0c2t5Ymx1ZScgID0+IGFycmF5KDEzNSwgMjA2LCAyNTApLA0KICAgICAgICAnbGlnaHRzbGF0ZWdyYXknPT4gYXJyYXkoMTE5LCAxMzYsIDE1MyksDQogICAgICAgICdsaWdodHN0ZWVsYmx1ZSc9PiBhcnJheSgxNzYsIDE5NiwgMjIyKSwNCiAgICAgICAgJ2xpZ2h0eWVsbG93JyAgID0+IGFycmF5KDI1NSwgMjU1LCAyMjQpLA0KICAgICAgICAnbGltZScgICAgICAgICAgPT4gYXJyYXkoMCwgMjU1LCAwKSwNCiAgICAgICAgJ2xpbWVncmVlbicgICAgID0+IGFycmF5KDUwLCAyMDUsIDUwKSwNCiAgICAgICAgJ2xpbmVuJyAgICAgICAgID0+IGFycmF5KDI1MCwgMjQwLCAyMzApLA0KICAgICAgICAnbWFnZW50YScgICAgICAgPT4gYXJyYXkoMjU1LCAwLCAyNTUpLA0KICAgICAgICAnbWFyb29uJyAgICAgICAgPT4gYXJyYXkoMTI4LCAwLCAwKSwNCiAgICAgICAgJ21lZGl1bWFxdWFtYXJpbmUnID0+IGFycmF5KDEwMiwgMjA1LCAxNzApLA0KICAgICAgICAnbWVkaXVtYmx1ZScgICAgPT4gYXJyYXkoMCwgMCwgMjA1KSwNCiAgICAgICAgJ21lZGl1bW9yY2hpZCcgID0+IGFycmF5KDE4NiwgODUsIDIxMSksDQogICAgICAgICdtZWRpdW1wdXJwbGUnICA9PiBhcnJheSgxNDcsIDExMiwgMjE5KSwNCiAgICAgICAgJ21lZGl1bXNlYWdyZWVuJz0+IGFycmF5KDYwLCAxNzksIDExMyksDQogICAgICAgICdtZWRpdW1zbGF0ZWJsdWUnICAgPT4gYXJyYXkoMTIzLCAxMDQsIDIzOCksDQogICAgICAgICdtZWRpdW1zcHJpbmdncmVlbicgPT4gYXJyYXkoMCwgMjUwLCAxNTQpLA0KICAgICAgICAnbWVkaXVtdHVycXVvaXNlJyAgID0+IGFycmF5KDcyLCAyMDksIDIwNCksDQogICAgICAgICdtZWRpdW12aW9sZXRyZWQnICAgPT4gYXJyYXkoMTk5LCAyMSwgMTMzKSwNCiAgICAgICAgJ21pZG5pZ2h0Ymx1ZScgID0+IGFycmF5KDI1LCAyNSwgMTEyKSwNCiAgICAgICAgJ21pbnRjcmVhbScgICAgID0+IGFycmF5KDI0NSwgMjU1LCAyNTApLA0KICAgICAgICAnbWlzdHlyb3NlJyAgICAgPT4gYXJyYXkoMjU1LCAyMjgsIDIyNSksDQogICAgICAgICdtb2NjYXNpbicgICAgICA9PiBhcnJheSgyNTUsIDIyOCwgMTgxKSwNCiAgICAgICAgJ25hdmFqb3doaXRlJyAgID0+IGFycmF5KDI1NSwgMjIyLCAxNzMpLA0KICAgICAgICAnbmF2eScgICAgICAgICAgPT4gYXJyYXkoMCwgMCwgMTI4KSwNCiAgICAgICAgJ29sZGxhY2UnICAgICAgID0+IGFycmF5KDI1MywgMjQ1LCAyMzApLA0KICAgICAgICAnb2xpdmUnICAgICAgICAgPT4gYXJyYXkoMTI4LCAxMjgsIDApLA0KICAgICAgICAnb2xpdmVkcmFiJyAgICAgPT4gYXJyYXkoMTA3LCAxNDIsIDM1KSwNCiAgICAgICAgJ29yYW5nZScgICAgICAgID0+IGFycmF5KDI1NSwgMTY1LCAwKSwNCiAgICAgICAgJ29yYW5nZXJlZCcgICAgID0+IGFycmF5KDI1NSw2OSwwKSwNCiAgICAgICAgJ29yY2hpZCcgICAgICAgID0+IGFycmF5KDIxOCwxMTIsMjE0KSwNCiAgICAgICAgJ3BhbGVnb2xkZW5yb2QnID0+IGFycmF5KDIzOCwyMzIsMTcwKSwNCiAgICAgICAgJ3BhbGVncmVlbicgICAgID0+IGFycmF5KDE1MiwyNTEsMTUyKSwNCiAgICAgICAgJ3BhbGV0dXJxdW9pc2UnID0+IGFycmF5KDE3NSwyMzgsMjM4KSwNCiAgICAgICAgJ3BhbGV2aW9sZXRyZWQnID0+IGFycmF5KDIxOSwxMTIsMTQ3KSwNCiAgICAgICAgJ3BhcGF5YXdoaXAnICAgID0+IGFycmF5KDI1NSwyMzksMjEzKSwNCiAgICAgICAgJ3BlYWNocHVmZicgICAgID0+IGFycmF5KDI1NSwyMTgsMTg1KSwNCiAgICAgICAgJ3BlcnUnID0+IGFycmF5KDIwNSwxMzMsNjMpLA0KICAgICAgICAncGluaycgPT4gYXJyYXkoMjU1LDE5MiwyMDMpLA0KICAgICAgICAncGx1bScgPT4gYXJyYXkoMjIxLDE2MCwyMjEpLA0KICAgICAgICAncG93ZGVyYmx1ZScgPT4gYXJyYXkoMTc2LDIyNCwyMzApLA0KICAgICAgICAncHVycGxlJyA9PiBhcnJheSgxMjgsMCwxMjgpLA0KICAgICAgICAncmVkJyA9PiBhcnJheSgyNTUsMCwwKSwNCiAgICAgICAgJ3Jvc3licm93bicgPT4gYXJyYXkoMTg4LDE0MywxNDMpLA0KICAgICAgICAncm95YWxibHVlJyA9PiBhcnJheSg2NSwxMDUsMjI1KSwNCiAgICAgICAgJ3NhZGRsZWJyb3duJyA9PiBhcnJheSgxMzksNjksMTkpLA0KICAgICAgICAnc2FsbW9uJyA9PiBhcnJheSgyNTAsMTI4LDExNCksDQogICAgICAgICdzYW5keWJyb3duJyA9PiBhcnJheSgyNDQsMTY0LDk2KSwNCiAgICAgICAgJ3NlYWdyZWVuJyA9PiBhcnJheSg0NiwxMzksODcpLA0KICAgICAgICAnc2Vhc2hlbGwnID0+IGFycmF5KDI1NSwyNDUsMjM4KSwNCiAgICAgICAgJ3NpZW5uYScgPT4gYXJyYXkoMTYwLDgyLDQ1KSwNCiAgICAgICAgJ3NpbHZlcicgPT4gYXJyYXkoMTkyLDE5MiwxOTIpLA0KICAgICAgICAnc2t5Ymx1ZScgPT4gYXJyYXkoMTM1LDIwNiwyMzUpLA0KICAgICAgICAnc2xhdGVibHVlJyA9PiBhcnJheSgxMDYsOTAsMjA1KSwNCiAgICAgICAgJ3NsYXRlZ3JheScgPT4gYXJyYXkoMTEyLDEyOCwxNDQpLA0KICAgICAgICAnc25vdycgPT4gYXJyYXkoMjU1LDI1MCwyNTApLA0KICAgICAgICAnc3ByaW5nZ3JlZW4nID0+IGFycmF5KDAsMjU1LDEyNyksDQogICAgICAgICdzdGVlbGJsdWUnID0+IGFycmF5KDcwLDEzMCwxODApLA0KICAgICAgICAndGFuJyA9PiBhcnJheSgyMTAsMTgwLDE0MCksDQogICAgICAgICd0ZWFsJyA9PiBhcnJheSgwLDEyOCwxMjgpLA0KICAgICAgICAndGhpc3RsZScgPT4gYXJyYXkoMjE2LDE5MSwyMTYpLA0KICAgICAgICAndG9tYXRvJyA9PiBhcnJheSgyNTUsOTksNzEpLA0KICAgICAgICAndHVycXVvaXNlJyA9PiBhcnJheSg2NCwyMjQsMjA4KSwNCiAgICAgICAgJ3Zpb2xldCcgPT4gYXJyYXkoMjM4LDEzMCwyMzgpLA0KICAgICAgICAnd2hlYXQnID0+IGFycmF5KDI0NSwyMjIsMTc5KSwNCiAgICAgICAgJ3doaXRlJyA9PiBhcnJheSgyNTUsMjU1LDI1NSksDQogICAgICAgICd3aGl0ZXNtb2tlJyA9PiBhcnJheSgyNDUsMjQ1LDI0NSksDQogICAgICAgICd5ZWxsb3cnID0+IGFycmF5KDI1NSwyNTUsMCksDQogICAgICAgICd5ZWxsb3dncmVlbicgPT4gYXJyYXkoMTU0LDIwNSw1MCkNCiAgICApOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/external/Image/~backup/Transform/Driver/GD.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyogdmltOiBzZXQgZXhwYW5kdGFiIHRhYnN0b3A9NCBzaGlmdHdpZHRoPTQ6ICovDQoNCi8qKg0KICogR0QgaW1wbGVtZW50YXRpb24gZm9yIEltYWdlX1RyYW5zZm9ybSBwYWNrYWdlDQogKg0KICogUEhQIHZlcnNpb25zIDQgYW5kIDUNCiAqDQogKiBMSUNFTlNFOiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdmVyc2lvbiAzLjAgb2YgdGhlIFBIUCBsaWNlbnNlDQogKiB0aGF0IGlzIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGUgZm9sbG93aW5nIFVSSToNCiAqIGh0dHA6Ly93d3cucGhwLm5ldC9saWNlbnNlLzNfMC50eHQuICBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZg0KICogdGhlIFBIUCBMaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3ZWIsIHBsZWFzZQ0KICogc2VuZCBhIG5vdGUgdG8gbGljZW5zZUBwaHAubmV0IHNvIHdlIGNhbiBtYWlsIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuDQogKg0KICogQGNhdGVnb3J5ICAgSW1hZ2UNCiAqIEBwYWNrYWdlICAgIEltYWdlX1RyYW5zZm9ybQ0KICogQHN1YnBhY2thZ2UgSW1hZ2VfVHJhbnNmb3JtX0RyaXZlcl9HRA0KICogQGF1dGhvciAgICAgQWxhbiBLbm93bGVzIDxhbGFuQGFrYmtob21lLmNvbT4NCiAqIEBhdXRob3IgICAgIFBldGVyIEJvd3llciA8cGV0ZXJAbWFwbGVkZXNpZ24uY28udWs+DQogKiBAYXV0aG9yICAgICBQaGlsaXBwZSBKYXVzaW9ucyA8UGhpbGlwcGUuSmF1c2lvbnNAMTFhYmFjdXMuY29tPg0KICogQGNvcHlyaWdodCAgMjAwMi0yMDA1IFRoZSBQSFAgR3JvdXANCiAqIEBsaWNlbnNlICAgIGh0dHA6Ly93d3cucGhwLm5ldC9saWNlbnNlLzNfMC50eHQgIFBIUCBMaWNlbnNlIDMuMA0KICogQHZlcnNpb24gICAgQ1ZTOiAkSWQ6IEdELnBocCAzMjI2NjEgMjAxMi0wMS0yNCAxMjowMjo1OVogY2xvY2t3ZXJ4ICQNCiAqIEBsaW5rICAgICAgIGh0dHA6Ly9wZWFyLnBocC5uZXQvcGFja2FnZS9JbWFnZV9UcmFuc2Zvcm0NCiAqLw0KDQpyZXF1aXJlX29uY2UgJ0ltYWdlL1RyYW5zZm9ybS5waHAnOw0KDQovKioNCiAqIEdEIGltcGxlbWVudGF0aW9uIGZvciBJbWFnZV9UcmFuc2Zvcm0gcGFja2FnZQ0KICoNCiAqIFVzYWdlIDoNCiAqICAgICRpbWcgICAgPSYgSW1hZ2VfVHJhbnNmb3JtOjpmYWN0b3J5KCdHRCcpOw0KICogICAgJGFuZ2xlICA9IC03ODsNCiAqICAgICRpbWctPmxvYWQoJ21hZ2ljay5wbmcnKTsNCiAqDQogKiAgICBpZiAoJGltZy0+cm90YXRlKCRhbmdsZSwgYXJyYXkoDQogKiAgICAgICAgICAgICAgICdhdXRvcmVzaXplJyA9PiB0cnVlLA0KICogICAgICAgICAgICAgICAnY29sb3JfbWFzaycgPT4gYXJyYXkoMjU1LCAwLCAwKSkpKSB7DQogKiAgICAgICAgJGltZy0+YWRkVGV4dChhcnJheSgNCiAqICAgICAgICAgICAgICAgJ3RleHQnID0+ICdSb3RhdGlvbiAnIC4gJGFuZ2xlLA0KICogICAgICAgICAgICAgICAneCcgPT4gMCwNCiAqICAgICAgICAgICAgICAgJ3knID0+IDEwMCwNCiAqICAgICAgICAgICAgICAgJ2ZvbnQnID0+ICcvdXNyL3NoYXJlL2ZvbnRzL2RlZmF1bHQvVHJ1ZVR5cGUvY29nYl9fX18udHRmJykpOw0KICogICAgICAgICRpbWctPmRpc3BsYXkoKTsNCiAqICAgIH0gZWxzZSB7DQogKiAgICAgICAgZWNobyAiRXJyb3IiOw0KICogICAgfQ0KICogICAgJGltZy0+ZnJlZSgpOw0KICoNCiAqIEBjYXRlZ29yeSAgIEltYWdlDQogKiBAcGFja2FnZSAgICBJbWFnZV9UcmFuc2Zvcm0NCiAqIEBzdWJwYWNrYWdlIEltYWdlX1RyYW5zZm9ybV9Ecml2ZXJfR0QNCiAqIEBhdXRob3IgICAgIEFsYW4gS25vd2xlcyA8YWxhbkBha2JraG9tZS5jb20+DQogKiBAYXV0aG9yICAgICBQZXRlciBCb3d5ZXIgPHBldGVyQG1hcGxlZGVzaWduLmNvLnVrPg0KICogQGF1dGhvciAgICAgUGhpbGlwcGUgSmF1c2lvbnMgPFBoaWxpcHBlLkphdXNpb25zQDExYWJhY3VzLmNvbT4NCiAqIEBjb3B5cmlnaHQgIDIwMDItMjAwNSBUaGUgUEhQIEdyb3VwDQogKiBAbGljZW5zZSAgICBodHRwOi8vd3d3LnBocC5uZXQvbGljZW5zZS8zXzAudHh0ICBQSFAgTGljZW5zZSAzLjANCiAqIEB2ZXJzaW9uICAgIFJlbGVhc2U6IEBwYWNrYWdlX3ZlcnNpb25ADQogKiBAbGluayAgICAgICBodHRwOi8vcGVhci5waHAubmV0L3BhY2thZ2UvSW1hZ2VfVHJhbnNmb3JtDQogKiBAc2luY2UgICAgICBQSFAgNC4wDQogKi8NCmNsYXNzIEltYWdlX1RyYW5zZm9ybV9Ecml2ZXJfR0QgZXh0ZW5kcyBJbWFnZV9UcmFuc2Zvcm0NCnsNCiAgICAvKioNCiAgICAgKiBIb2xkcyB0aGUgaW1hZ2UgcmVzb3VyY2UgZm9yIG1hbmlwdWxhdGlvbg0KICAgICAqDQogICAgICogQHZhciByZXNvdXJjZSAkaW1hZ2VIYW5kbGUNCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZA0KICAgICAqLw0KICAgIHZhciAkaW1hZ2VIYW5kbGUgPSBudWxsOw0KDQogICAgLyoqDQogICAgICogSG9sZHMgdGhlIG9yaWdpbmFsIGltYWdlIGZpbGUNCiAgICAgKg0KICAgICAqIEB2YXIgcmVzb3VyY2UgJGltYWdlSGFuZGxlDQogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQNCiAgICAgKi8NCiAgICB2YXIgJG9sZEltYWdlID0gbnVsbDsNCg0KICAgIC8qKg0KICAgICAqIENoZWNrIHNldHRpbmdzDQogICAgICovDQogICAgZnVuY3Rpb24gSW1hZ2VfVHJhbnNmb3JtX0RyaXZlcl9HRCgpDQogICAgew0KICAgICAgICAkdGhpcy0+X19jb25zdHJ1Y3QoKTsNCiAgICB9IC8vIEVuZCBmdW5jdGlvbiBJbWFnZQ0KDQogICAgLyoqDQogICAgICogQ2hlY2sgc2V0dGluZ3MNCiAgICAgKg0KICAgICAqIEBzaW5jZSBQSFAgNQ0KICAgICAqLw0KICAgIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkNCiAgICB7DQogICAgICAgIGlmICghUEVBUjo6bG9hZEV4dGVuc2lvbignZ2QnKSkgew0KICAgICAgICAgICAgJHRoaXMtPmlzRXJyb3IoUEVBUjo6cmFpc2VFcnJvcigiR0QgbGlicmFyeSBpcyBub3QgYXZhaWxhYmxlLiIsDQogICAgICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX1VOU1VQUE9SVEVEKSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkdHlwZXMgPSBJbWFnZVR5cGVzKCk7DQogICAgICAgICAgICBpZiAoJHR5cGVzICYgSU1HX1BORykgew0KICAgICAgICAgICAgICAgICR0aGlzLT5fc3VwcG9ydGVkX2ltYWdlX3R5cGVzWydwbmcnXSA9ICdydyc7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoKCR0eXBlcyAmIElNR19HSUYpDQogICAgICAgICAgICAgICAgfHwgZnVuY3Rpb25fZXhpc3RzKCdpbWFnZWdpZicpKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPl9zdXBwb3J0ZWRfaW1hZ2VfdHlwZXNbJ2dpZiddID0gJ3J3JzsNCiAgICAgICAgICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ2ltYWdlY3JlYXRlZnJvbWdpZicpKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPl9zdXBwb3J0ZWRfaW1hZ2VfdHlwZXNbJ2dpZiddID0gJ3J3JzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICgkdHlwZXMgJiBJTUdfSlBHKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPl9zdXBwb3J0ZWRfaW1hZ2VfdHlwZXNbJ2pwZWcnXSA9ICdydyc7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJHR5cGVzICYgSU1HX1dCTVApIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+X3N1cHBvcnRlZF9pbWFnZV90eXBlc1snd2JtcCddID0gJ3J3JzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICghJHRoaXMtPl9zdXBwb3J0ZWRfaW1hZ2VfdHlwZXMpIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+aXNFcnJvcihQRUFSOjpyYWlzZUVycm9yKCJObyBzdXBwb3J0ZWQgaW1hZ2UgdHlwZXMgYXZhaWxhYmxlIiwgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX1VOU1VQUE9SVEVEKSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgIH0gLy8gRW5kIGZ1bmN0aW9uIEltYWdlDQoNCiAgICAvKioNCiAgICAgKiBMb2FkcyBhbiBpbWFnZSBmcm9tIGZpbGUNCiAgICAgKg0KICAgICAqIEBwYXJhbSBzdHJpbmcgJGltYWdlIGZpbGVuYW1lDQogICAgICogQHJldHVybiBib29sfFBFQVJfRXJyb3IgVFJVRSBvciBhIFBFQVJfRXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBsb2FkKCRpbWFnZSkNCiAgICB7DQogICAgICAgICR0aGlzLT5mcmVlKCk7DQoNCiAgICAgICAgJHRoaXMtPmltYWdlID0gJGltYWdlOw0KICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPl9nZXRfaW1hZ2VfZGV0YWlscygkaW1hZ2UpOw0KICAgICAgICBpZiAoUEVBUjo6aXNFcnJvcigkcmVzdWx0KSkgew0KICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7DQogICAgICAgIH0NCiAgICAgICAgaWYgKCEkdGhpcy0+c3VwcG9ydHNUeXBlKCR0aGlzLT50eXBlLCAncicpKSB7DQogICAgICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcignSW1hZ2UgdHlwZSBub3Qgc3VwcG9ydGVkIGZvciBpbnB1dCcsDQogICAgICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX1VOU1VQUE9SVEVEKTsNCiAgICAgICAgfQ0KDQogICAgICAgICRmdW5jdGlvbk5hbWUgPSAnSW1hZ2VDcmVhdGVGcm9tJyAuICR0aGlzLT50eXBlOw0KICAgICAgICAkdGhpcy0+aW1hZ2VIYW5kbGUgPSAkZnVuY3Rpb25OYW1lKCR0aGlzLT5pbWFnZSk7DQogICAgICAgIGlmICghJHRoaXMtPmltYWdlSGFuZGxlKSB7DQogICAgICAgICAgICAkdGhpcy0+aW1hZ2VIYW5kbGUgPSBudWxsOw0KICAgICAgICAgICAgcmV0dXJuIFBFQVI6OnJhaXNlRXJyb3IoJ0Vycm9yIHdoaWxlIGxvYWRpbmcgaW1hZ2UgZmlsZS4nLA0KICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9JTyk7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIHRydWU7DQoNCiAgICB9IC8vIEVuZCBsb2FkDQoNCiAgICAvKioNCiAgICAgKiBSZXR1cm5zIHRoZSBHRCBpbWFnZSBoYW5kbGUNCiAgICAgKg0KICAgICAqIEByZXR1cm4gcmVzb3VyY2UNCiAgICAgKg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gZ2V0SGFuZGxlKCkNCiAgICB7DQogICAgICAgIHJldHVybiAkdGhpcy0+aW1hZ2VIYW5kbGU7DQogICAgfS8vZnVuY3Rpb24gZ2V0SGFuZGxlKCkNCg0KICAgIC8qKg0KICAgICAqIEFkZHMgYSBib3JkZXIgb2YgY29uc3RhbnQgd2lkdGggYXJvdW5kIGFuIGltYWdlDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ICRib3JkZXJfd2lkdGggV2lkdGggb2YgYm9yZGVyIHRvIGFkZA0KICAgICAqIEBhdXRob3IgUGV0ZXIgQm93eWVyDQogICAgICogQHJldHVybiBib29sIFRSVUUNCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIGZ1bmN0aW9uIGFkZEJvcmRlcigkYm9yZGVyX3dpZHRoLCAkY29sb3IgPSAnJykNCiAgICB7DQogICAgICAgICR0aGlzLT5uZXdfeCA9ICR0aGlzLT5pbWdfeCArIDIgKiAkYm9yZGVyX3dpZHRoOw0KICAgICAgICAkdGhpcy0+bmV3X3kgPSAkdGhpcy0+aW1nX3kgKyAyICogJGJvcmRlcl93aWR0aDsNCg0KICAgICAgICAkbmV3X2ltZyA9ICR0aGlzLT5fY3JlYXRlSW1hZ2UoJG5ld194LCAkbmV3X3ksICR0aGlzLT50cnVlX2NvbG9yKTsNCg0KICAgICAgICAkb3B0aW9ucyA9IGFycmF5KCdwZW5jaWxDb2xvcicsICRjb2xvcik7DQogICAgICAgICRjb2xvciA9ICR0aGlzLT5fZ2V0Q29sb3IoJ3BlbmNpbENvbG9yJywgJG9wdGlvbnMsIGFycmF5KDAsIDAsIDApKTsNCiAgICAgICAgaWYgKCRjb2xvcikgew0KICAgICAgICAgICAgaWYgKCR0aGlzLT50cnVlX2NvbG9yKSB7DQogICAgICAgICAgICAgICAgJGMgPSBpbWFnZWNvbG9ycmVzb2x2ZSgkdGhpcy0+aW1hZ2VIYW5kbGUsICRjb2xvclswXSwgJGNvbG9yWzFdLCAkY29sb3JbMl0pOw0KICAgICAgICAgICAgICAgIGltYWdlZmlsbCgkbmV3X2ltZywgMCwgMCwgJGMpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBpbWFnZWNvbG9yc2V0KCRuZXdfaW1nLCBpbWFnZWNvbG9yYXQoJG5ld19pbWcsIDAsIDApLCAkY29sb3JbMF0sICRjb2xvclsxXSwgJGNvbG9yWzJdKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBJbWFnZUNvcHkoJG5ld19pbWcsICR0aGlzLT5pbWFnZUhhbmRsZSwgJGJvcmRlcl93aWR0aCwgJGJvcmRlcl93aWR0aCwgMCwgMCwgJHRoaXMtPmltZ194LCAkdGhpcy0+aW1nX3kpOw0KICAgICAgICAkdGhpcy0+aW1hZ2VIYW5kbGUgPSAkbmV3X2ltZzsNCiAgICAgICAgJHRoaXMtPnJlc2l6ZWQgPSB0cnVlOw0KDQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIGFkZFRleHQNCiAgICAgKg0KICAgICAqIEBwYXJhbSAgIGFycmF5ICAgJHBhcmFtcyAgICAgQXJyYXkgY29udGFpbnMgb3B0aW9ucw0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoDQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQnICBUaGUgc3RyaW5nIHRvIGRyYXcNCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAneCcgICAgIEhvcml6b250YWwgcG9zaXRpb24NCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAneScgICAgIFZlcnRpY2FsIFBvc2l0aW9uDQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yJyBGb250IGNvbG9yDQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQnICBGb250IHRvIGJlIHVzZWQNCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZScgIFNpemUgb2YgdGhlIGZvbnRzIGluIHBpeGVsDQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc2l6ZV9maXJzdCcgIFRlbGwgaWYgdGhlIGltYWdlIGhhcyB0byBiZSByZXNpemVkDQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZSBkcmF3aW5nIHRoZSB0ZXh0DQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGJvb2x8UEVBUl9FcnJvciBUUlVFIG9yIGEgUEVBUl9FcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKi8NCiAgICBmdW5jdGlvbiBhZGRUZXh0KCRwYXJhbXMpDQogICAgew0KICAgICAgICAkdGhpcy0+b2xkSW1hZ2UgPSAkdGhpcy0+aW1hZ2VIYW5kbGU7DQogICAgICAgICRwYXJhbXMgPSBhcnJheV9tZXJnZSgkdGhpcy0+X2dldF9kZWZhdWx0X3RleHRfcGFyYW1zKCksICRwYXJhbXMpOw0KICAgICAgICBleHRyYWN0KCRwYXJhbXMpOw0KDQogICAgICAgICRvcHRpb25zID0gYXJyYXkoJ2ZvbnRDb2xvcicgPT4gJGNvbG9yKTsNCiAgICAgICAgJGNvbG9yID0gJHRoaXMtPl9nZXRDb2xvcignZm9udENvbG9yJywgJG9wdGlvbnMsIGFycmF5KDAsIDAsIDApKTsNCg0KICAgICAgICAkYyA9IGltYWdlY29sb3JyZXNvbHZlICgkdGhpcy0+aW1hZ2VIYW5kbGUsICRjb2xvclswXSwgJGNvbG9yWzFdLCAkY29sb3JbMl0pOw0KDQogICAgICAgIGlmICgndHRmJyA9PSBzdWJzdHIoJGZvbnQsIC0zKSkgew0KICAgICAgICAgICAgSW1hZ2VUVEZUZXh0KCR0aGlzLT5pbWFnZUhhbmRsZSwgJHNpemUsICRhbmdsZSwgJHgsICR5LCAkYywgJGZvbnQsICR0ZXh0KTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIEltYWdlUFNUZXh0KCR0aGlzLT5pbWFnZUhhbmRsZSwgJHNpemUsICRhbmdsZSwgJHgsICR5LCAkYywgJGZvbnQsICR0ZXh0KTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0gLy8gRW5kIGFkZFRleHQNCg0KICAgIC8qKg0KICAgICAqIFJvdGF0ZXMgaW1hZ2UgYnkgdGhlIGdpdmVuIGFuZ2xlDQogICAgICoNCiAgICAgKiBVc2VzIGEgZmFzdCByb3RhdGlvbiBhbGdvcnl0aG0gZm9yIGN1c3RvbSBhbmdsZXMNCiAgICAgKiBvciBsaW5lcyBjb3B5IGZvciBtdWx0aXBsZSBvZiA5MCBkZWdyZWVzDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ICAgJGFuZ2xlICAgUm90YXRpb24gYW5nbGUNCiAgICAgKiBAcGFyYW0gYXJyYXkgJG9wdGlvbnMgYXJyYXkoDQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjYW52YXNDb2xvcicgPT4gYXJyYXkociAsZywgYiksIG5hbWVkIGNvbG9yIG9yICNycmdnYmINCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQogICAgICogQGF1dGhvciBQaWVycmUtQWxhaW4gSm95ZQ0KICAgICAqIEByZXR1cm4gYm9vbHxQRUFSX0Vycm9yIFRSVUUgb3IgYSBQRUFSX0Vycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gcm90YXRlKCRhbmdsZSwgJG9wdGlvbnMgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgaWYgKCgkYW5nbGUgJSAzNjApID09IDApIHsNCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgJGNvbG9yX21hc2sgPSAkdGhpcy0+X2dldENvbG9yKCdjYW52YXNDb2xvcicsICRvcHRpb25zLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KDI1NSwgMjU1LCAyNTUpKTsNCg0KICAgICAgICAkbWFzayA9IGltYWdlY29sb3JyZXNvbHZlKCR0aGlzLT5pbWFnZUhhbmRsZSwgJGNvbG9yX21hc2tbMF0sICRjb2xvcl9tYXNrWzFdLCAkY29sb3JfbWFza1syXSk7DQoNCiAgICAgICAgJHRoaXMtPm9sZEltYWdlID0gJHRoaXMtPmltYWdlSGFuZGxlOw0KDQogICAgICAgIC8vIE11bHRpcGx5IGJ5IC0xIHRvIGNoYW5nZSB0aGUgc2lnbiwgc28gdGhlIGltYWdlIGlzIHJvdGF0ZWQgY2xvY2t3aXNlDQogICAgICAgICR0aGlzLT5pbWFnZUhhbmRsZSA9IEltYWdlUm90YXRlKCR0aGlzLT5pbWFnZUhhbmRsZSwgJGFuZ2xlICogLTEsICRtYXNrKTsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogSG9yaXpvbnRhbCBtaXJyb3JpbmcNCiAgICAgKg0KICAgICAqIEByZXR1cm4gbWl4ZWQgVFJVRSBvciBQRUFSX0Vycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICogQHNlZSBmbGlwKCkNCiAgICAgKiovDQogICAgZnVuY3Rpb24gbWlycm9yKCkNCiAgICB7DQogICAgICAgICRuZXdfaW1nID0gJHRoaXMtPl9jcmVhdGVJbWFnZSgpOw0KICAgICAgICBmb3IgKCR4ID0gMDsgJHggPCAkdGhpcy0+bmV3X3g7ICsrJHgpIHsNCiAgICAgICAgICAgIGltYWdlY29weSgkbmV3X2ltZywgJHRoaXMtPmltYWdlSGFuZGxlLCAkeCwgMCwNCiAgICAgICAgICAgICAgICAkdGhpcy0+bmV3X3ggLSAkeCAtIDEsIDAsIDEsICR0aGlzLT5uZXdfeSk7DQogICAgICAgIH0NCiAgICAgICAgaW1hZ2VkZXN0cm95KCR0aGlzLT5pbWFnZUhhbmRsZSk7DQogICAgICAgICR0aGlzLT5pbWFnZUhhbmRsZSA9ICRuZXdfaW1nOw0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBWZXJ0aWNhbCBtaXJyb3JpbmcNCiAgICAgKg0KICAgICAqIEByZXR1cm4gVFJVRSBvciBQRUFSIEVycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICogQHNlZSBtaXJyb3IoKQ0KICAgICAqKi8NCiAgICBmdW5jdGlvbiBmbGlwKCkNCiAgICB7DQogICAgICAgICRuZXdfaW1nID0gJHRoaXMtPl9jcmVhdGVJbWFnZSgpOw0KICAgICAgICBmb3IgKCR5ID0gMDsgJHkgPCAkdGhpcy0+bmV3X3k7ICsrJHkpIHsNCiAgICAgICAgICAgIGltYWdlY29weSgkbmV3X2ltZywgJHRoaXMtPmltYWdlSGFuZGxlLCAwLCAkeSwNCiAgICAgICAgICAgICAgICAwLCAkdGhpcy0+bmV3X3kgLSAkeSAtIDEsICR0aGlzLT5uZXdfeCwgMSk7DQogICAgICAgIH0NCiAgICAgICAgaW1hZ2VkZXN0cm95KCR0aGlzLT5pbWFnZUhhbmRsZSk7DQogICAgICAgICR0aGlzLT5pbWFnZUhhbmRsZSA9ICRuZXdfaW1nOw0KDQogICAgICAgIC8qIGZvciB2ZXJ5IGxhcmdlIGltYWdlcyB3ZSBtYXkgd2FudCB0byB1c2UgdGhlIGZvbGxvd2luZw0KICAgICAgICAgICBOZWVkcyB0byBmaW5kIG91dCB3aGF0IGlzIHRoZSB0aHJlc2hob2xkDQogICAgICAgIGZvciAoJHggPSAwOyAkeCA8ICR0aGlzLT5uZXdfeDsgKyskeCkgew0KICAgICAgICAgICAgZm9yICgkeTEgPSAwOyAkeTEgPCAkdGhpcy0+bmV3X3kgLyAyOyArKyR5MSkgew0KICAgICAgICAgICAgICAgICR5MiA9ICR0aGlzLT5uZXdfeSAtIDEgLSAkeTE7DQogICAgICAgICAgICAgICAgJGNvbG9yMSA9IGltYWdlY29sb3JhdCgkdGhpcy0+aW1hZ2VIYW5kbGUsICR4LCAkeTEpOw0KICAgICAgICAgICAgICAgICRjb2xvcjIgPSBpbWFnZWNvbG9yYXQoJHRoaXMtPmltYWdlSGFuZGxlLCAkeCwgJHkyKTsNCiAgICAgICAgICAgICAgICBpbWFnZXNldHBpeGVsKCR0aGlzLT5pbWFnZUhhbmRsZSwgJHgsICR5MSwgJGNvbG9yMik7DQogICAgICAgICAgICAgICAgaW1hZ2VzZXRwaXhlbCgkdGhpcy0+aW1hZ2VIYW5kbGUsICR4LCAkeTIsICRjb2xvcjEpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9ICovDQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIENyb3BzIGltYWdlIGJ5IHNpemUgYW5kIHN0YXJ0IGNvb3JkaW5hdGVzDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50IHdpZHRoIENyb3BwZWQgaW1hZ2Ugd2lkdGgNCiAgICAgKiBAcGFyYW0gaW50IGhlaWdodCBDcm9wcGVkIGltYWdlIGhlaWdodA0KICAgICAqIEBwYXJhbSBpbnQgeCBYLWNvb3JkaW5hdGUgdG8gY3JvcCBhdA0KICAgICAqIEBwYXJhbSBpbnQgeSBZLWNvb3JkaW5hdGUgdG8gY3JvcCBhdA0KICAgICAqIEByZXR1cm4gYm9vbHxQRUFSX0Vycm9yIFRSVUUgb3IgYSBQRUFSX0Vycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gY3JvcCgkd2lkdGgsICRoZWlnaHQsICR4ID0gMCwgJHkgPSAwKQ0KICAgIHsNCiAgICAgICAgLy8gU2FuaXR5IGNoZWNrDQogICAgICAgIGlmICghJHRoaXMtPmludGVyc2VjdHMoJHdpZHRoLCAkaGVpZ2h0LCAkeCwgJHkpKSB7DQogICAgICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcignTm90aGluZyB0byBjcm9wJywgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX09VVE9GQk9VTkQpOw0KICAgICAgICB9DQogICAgICAgICR4ID0gbWluKCR0aGlzLT5uZXdfeCwgbWF4KDAsICR4KSk7DQogICAgICAgICR5ID0gbWluKCR0aGlzLT5uZXdfeSwgbWF4KDAsICR5KSk7DQogICAgICAgICR3aWR0aCAgID0gbWluKCR3aWR0aCwgICR0aGlzLT5uZXdfeCAtICR4KTsNCiAgICAgICAgJGhlaWdodCAgPSBtaW4oJGhlaWdodCwgJHRoaXMtPm5ld195IC0gJHkpOw0KICAgICAgICAkbmV3X2ltZyA9ICR0aGlzLT5fY3JlYXRlSW1hZ2UoJHdpZHRoLCAkaGVpZ2h0KTsNCg0KICAgICAgICBpZiAoIWltYWdlY29weSgkbmV3X2ltZywgJHRoaXMtPmltYWdlSGFuZGxlLCAwLCAwLCAkeCwgJHksICR3aWR0aCwgJGhlaWdodCkpIHsNCiAgICAgICAgICAgIGltYWdlZGVzdHJveSgkbmV3X2ltZyk7DQogICAgICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcignRmFpbGVkIHRyYW5zZm9ybWF0aW9uOiBjcm9wKCknLA0KICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9GQUlMRUQpOw0KICAgICAgICB9DQoNCiAgICAgICAgJHRoaXMtPm9sZEltYWdlID0gJHRoaXMtPmltYWdlSGFuZGxlOw0KICAgICAgICAkdGhpcy0+aW1hZ2VIYW5kbGUgPSAkbmV3X2ltZzsNCiAgICAgICAgJHRoaXMtPnJlc2l6ZWQgPSB0cnVlOw0KDQogICAgICAgICR0aGlzLT5uZXdfeCA9ICR3aWR0aDsNCiAgICAgICAgJHRoaXMtPm5ld195ID0gJGhlaWdodDsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ29udmVydHMgdGhlIGltYWdlIHRvIGdyZXlzY2FsZQ0KICAgICAqDQogICAgICogQHJldHVybiBib29sfFBFQVJfRXJyb3IgVFJVRSBvciBhIFBFQVJfRXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBncmV5c2NhbGUoKSB7DQogICAgICAgIGltYWdlY29weW1lcmdlZ3JheSgkdGhpcy0+aW1hZ2VIYW5kbGUsICR0aGlzLT5pbWFnZUhhbmRsZSwgMCwgMCwgMCwgMCwgJHRoaXMtPm5ld194LCAkdGhpcy0+bmV3X3ksIDApOw0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZXNpemUgQWN0aW9uDQogICAgICoNCiAgICAgKiBGb3IgR0QgMi4wMSsgdGhlIG5ldyBjb3B5cmVzYW1wbGVkIGZ1bmN0aW9uIGlzIHVzZWQNCiAgICAgKiBJdCB1c2VzIGEgYmljdWJpYyBpbnRlcnBvbGF0aW9uIGFsZ29yaXRobSB0byBnZXQgZmFyDQogICAgICogYmV0dGVyIHJlc3VsdC4NCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnQgICAkbmV3X3ggICBOZXcgd2lkdGgNCiAgICAgKiBAcGFyYW0gaW50ICAgJG5ld195ICAgTmV3IGhlaWdodA0KICAgICAqIEBwYXJhbSBhcnJheSAkb3B0aW9ucyBPcHRpb25hbCBwYXJhbWV0ZXJzDQogICAgICogPHVsPg0KICAgICAqICA8bGk+J3NjYWxlTWV0aG9kJzogInBpeGVsIiBvciAic21vb3RoIjwvbGk+DQogICAgICogPC91bD4NCiAgICAgKg0KICAgICAqIEByZXR1cm4gYm9vbHxQRUFSX0Vycm9yIFRSVUUgb24gc3VjY2VzcyBvciBQRUFSX0Vycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkDQogICAgICovDQogICAgZnVuY3Rpb24gX3Jlc2l6ZSgkbmV3X3gsICRuZXdfeSwgJG9wdGlvbnMgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgaWYgKCR0aGlzLT5yZXNpemVkID09PSB0cnVlKSB7DQogICAgICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcignWW91IGhhdmUgYWxyZWFkeSByZXNpemVkIHRoZSBpbWFnZSB3aXRob3V0IHNhdmluZyBpdC4gIFlvdXIgcHJldmlvdXMgcmVzaXppbmcgd2lsbCBiZSBvdmVyd3JpdHRlbicsIG51bGwsIFBFQVJfRVJST1JfVFJJR0dFUiwgRV9VU0VSX05PVElDRSk7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoJHRoaXMtPm5ld194ID09ICRuZXdfeCAmJiAkdGhpcy0+bmV3X3kgPT0gJG5ld195KSB7DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgICRzY2FsZU1ldGhvZCA9ICR0aGlzLT5fZ2V0T3B0aW9uKCdzY2FsZU1ldGhvZCcsICRvcHRpb25zLCAnc21vb3RoJyk7DQoNCiAgICAgICAgLy8gTWFrZSBzdXJlIHRvIGdldCBhIHRydWUgY29sb3IgaW1hZ2UgaWYgZG9pbmcgcmVzYW1wbGVkIHJlc2l6aW5nDQogICAgICAgIC8vIG90aGVyd2lzZSBnZXQgdGhlIHNhbWUgdHlwZSBvZiBpbWFnZQ0KICAgICAgICAkdHJ1ZUNvbG9yID0gKCRzY2FsZU1ldGhvZCA9PSAncGl4ZWwnKSA/IG51bGwgOiB0cnVlOw0KICAgICAgICAkbmV3X2ltZyA9ICR0aGlzLT5fY3JlYXRlSW1hZ2UoJG5ld194LCAkbmV3X3ksICR0cnVlQ29sb3IpOw0KDQogICAgICAgICRpY3JfcmVzID0gbnVsbDsNCiAgICAgICAgaWYgKCRzY2FsZU1ldGhvZCAhPSAncGl4ZWwnICYmIGZ1bmN0aW9uX2V4aXN0cygnSW1hZ2VDb3B5UmVzYW1wbGVkJykpIHsNCiAgICAgICAgICAgICRpY3JfcmVzID0gSW1hZ2VDb3B5UmVzYW1wbGVkKCRuZXdfaW1nLCAkdGhpcy0+aW1hZ2VIYW5kbGUsIDAsIDAsIDAsIDAsICRuZXdfeCwgJG5ld195LCAkdGhpcy0+aW1nX3gsICR0aGlzLT5pbWdfeSk7DQogICAgICAgIH0NCiAgICAgICAgaWYgKCEkaWNyX3Jlcykgew0KICAgICAgICAgICAgSW1hZ2VDb3B5UmVzaXplZCgkbmV3X2ltZywgJHRoaXMtPmltYWdlSGFuZGxlLCAwLCAwLCAwLCAwLCAkbmV3X3gsICRuZXdfeSwgJHRoaXMtPmltZ194LCAkdGhpcy0+aW1nX3kpOw0KICAgICAgICB9DQogICAgICAgICR0aGlzLT5vbGRJbWFnZSA9ICR0aGlzLT5pbWFnZUhhbmRsZTsNCiAgICAgICAgJHRoaXMtPmltYWdlSGFuZGxlID0gJG5ld19pbWc7DQogICAgICAgICR0aGlzLT5yZXNpemVkID0gdHJ1ZTsNCg0KICAgICAgICAkdGhpcy0+bmV3X3ggPSAkbmV3X3g7DQogICAgICAgICR0aGlzLT5uZXdfeSA9ICRuZXdfeTsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQWRqdXN0cyB0aGUgaW1hZ2UgZ2FtbWENCiAgICAgKg0KICAgICAqIEBwYXJhbSBmbG9hdCAkb3V0cHV0Z2FtbWENCiAgICAgKg0KICAgICAqIEByZXR1cm4gYm9vbHxQRUFSX0Vycm9yIFRSVUUgb3IgYSBQRUFSX0Vycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gZ2FtbWEoJG91dHB1dGdhbW1hID0gMS4wKQ0KICAgIHsNCiAgICAgICAgaWYgKCRvdXRwdXRnYW1tYSAhPSAxLjApIHsNCiAgICAgICAgICAgIEltYWdlR2FtbWFDb3JyZWN0KCR0aGlzLT5pbWFnZUhhbmRsZSwgMS4wLCAkb3V0cHV0Z2FtbWEpOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIEhlbHBlciBtZXRob2QgdG8gc2F2ZSB0byBhIGZpbGUgb3Igb3V0cHV0IHRoZSBpbWFnZQ0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkZmlsZW5hbWUgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gd3JpdGUgdG8gKGJsYW5rIHRvIG91dHB1dCkNCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0eXBlcyAgICBkZWZpbmUgdGhlIG91dHB1dCBmb3JtYXQsIGRlZmF1bHQNCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgdGhlIGN1cnJlbnQgdXNlZCBmb3JtYXQNCiAgICAgKiBAcGFyYW0gaW50ICAgICRxdWFsaXR5ICBvdXRwdXQgRFBJLCBkZWZhdWx0IGlzIDc1DQogICAgICoNCiAgICAgKiBAcmV0dXJuIGJvb2x8UEVBUl9FcnJvciBUUlVFIG9uIHN1Y2Nlc3Mgb3IgUEVBUl9FcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZA0KICAgICAqLw0KICAgIGZ1bmN0aW9uIF9nZW5lcmF0ZSgkZmlsZW5hbWUsICR0eXBlID0gJycsICRxdWFsaXR5ID0gbnVsbCkNCiAgICB7DQogICAgICAgICR0eXBlID0gc3RydG9sb3dlcigoJHR5cGUgPT0gJycpID8gJHRoaXMtPnR5cGUgOiAkdHlwZSk7DQogICAgICAgICRvcHRpb25zID0gKGlzX2FycmF5KCRxdWFsaXR5KSkgPyAkcXVhbGl0eSA6IGFycmF5KCk7DQogICAgICAgIHN3aXRjaCAoJHR5cGUpIHsNCiAgICAgICAgICAgIGNhc2UgJ2pwZyc6DQogICAgICAgICAgICAgICAgJHR5cGUgPSAnanBlZyc7DQogICAgICAgICAgICBjYXNlICdqcGVnJzoNCiAgICAgICAgICAgICAgICBpZiAoaXNfbnVtZXJpYygkcXVhbGl0eSkpIHsNCiAgICAgICAgICAgICAgICAgICAgJG9wdGlvbnNbJ3F1YWxpdHknXSA9ICRxdWFsaXR5Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkcXVhbGl0eSA9ICR0aGlzLT5fZ2V0T3B0aW9uKCdxdWFsaXR5JywgJG9wdGlvbnMsIDc1KTsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoISR0aGlzLT5zdXBwb3J0c1R5cGUoJHR5cGUsICd3JykpIHsNCiAgICAgICAgICAgIHJldHVybiBQRUFSOjpyYWlzZUVycm9yKCdJbWFnZSB0eXBlIG5vdCBzdXBwb3J0ZWQgZm9yIG91dHB1dCcsDQogICAgICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX1VOU1VQUE9SVEVEKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmICgkZmlsZW5hbWUgPT0gJycpIHsNCiAgICAgICAgICAgIGhlYWRlcignQ29udGVudC10eXBlOiAnIC4gJHRoaXMtPmdldE1pbWVUeXBlKCR0eXBlKSk7DQogICAgICAgICAgICAkYWN0aW9uID0gJ291dHB1dCBpbWFnZSc7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkYWN0aW9uID0gJ3NhdmUgaW1hZ2UgdG8gZmlsZSc7DQogICAgICAgIH0NCg0KICAgICAgICAkZnVuY3Rpb25OYW1lID0gJ2ltYWdlJyAuICR0eXBlOw0KICAgICAgICBzd2l0Y2ggKCR0eXBlKSB7DQogICAgICAgICAgICBjYXNlICdqcGVnJzoNCiAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJGZ1bmN0aW9uTmFtZSgkdGhpcy0+aW1hZ2VIYW5kbGUsICRmaWxlbmFtZSwgJHF1YWxpdHkpOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICBpZiAoJGZpbGVuYW1lID09ICcnKSB7DQogICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkZnVuY3Rpb25OYW1lKCR0aGlzLT5pbWFnZUhhbmRsZSk7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRmdW5jdGlvbk5hbWUoJHRoaXMtPmltYWdlSGFuZGxlLCAkZmlsZW5hbWUpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBpZiAoISRyZXN1bHQpIHsNCiAgICAgICAgICAgIHJldHVybiBQRUFSOjpyYWlzZUVycm9yKCdDb3VsZG5cJ3QgJyAuICRhY3Rpb24sDQogICAgICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX0lPKTsNCiAgICAgICAgfQ0KICAgICAgICAkdGhpcy0+aW1hZ2VIYW5kbGUgPSAkdGhpcy0+b2xkSW1hZ2U7DQogICAgICAgIGlmICghJHRoaXMtPmtlZXBfc2V0dGluZ3Nfb25fc2F2ZSkgew0KICAgICAgICAgICAgJHRoaXMtPmZyZWUoKTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gdHJ1ZTsNCg0KICAgIH0gLy8gRW5kIHNhdmUNCg0KICAgIC8qKg0KICAgICAqIERpc3BsYXlzIGltYWdlIHdpdGhvdXQgc2F2aW5nIGFuZCBsb3NlIGNoYW5nZXMuDQogICAgICoNCiAgICAgKiBUaGlzIG1ldGhvZCBhZGRzIHRoZSBDb250ZW50LXR5cGUgSFRUUCBoZWFkZXINCiAgICAgKg0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGUgKEpQRUcsIFBORy4uLik7DQogICAgICogQHBhcmFtIGludCAgICAkcXVhbGl0eSA3NQ0KICAgICAqDQogICAgICogQHJldHVybiBib29sfFBFQVJfRXJyb3IgVFJVRSBvciBQRUFSX0Vycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gZGlzcGxheSgkdHlwZSA9ICcnLCAkcXVhbGl0eSA9IG51bGwpDQogICAgew0KICAgICAgICByZXR1cm4gJHRoaXMtPl9nZW5lcmF0ZSgnJywgJHR5cGUsICRxdWFsaXR5KTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBTYXZlcyB0aGUgaW1hZ2UgdG8gYSBmaWxlDQogICAgICoNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmaWxlbmFtZSB0aGUgbmFtZSBvZiB0aGUgZmlsZSB0byB3cml0ZSB0bw0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGUgICAgIHRoZSBvdXRwdXQgZm9ybWF0LCBkZWZhdWx0DQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHRoZSBjdXJyZW50IHVzZWQgZm9ybWF0DQogICAgICogQHBhcmFtIGludCAgICAkcXVhbGl0eSAgZGVmYXVsdCBpcyA3NQ0KICAgICAqDQogICAgICogQHJldHVybiBib29sfFBFQVJfRXJyb3IgVFJVRSBvbiBzdWNjZXNzIG9yIFBFQVJfRXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBzYXZlKCRmaWxlbmFtZSwgJHR5cGUgPSAnJywgJHF1YWxpdHkgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgaWYgKCF0cmltKCRmaWxlbmFtZSkpIHsNCiAgICAgICAgICAgIHJldHVybiBQRUFSOjpyYWlzZUVycm9yKCdGaWxlbmFtZSBtaXNzaW5nJywNCiAgICAgICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfQVJHVU1FTlQpOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiAkdGhpcy0+X2dlbmVyYXRlKCRmaWxlbmFtZSwgJHR5cGUsICRxdWFsaXR5KTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBEZXN0cm95cyBpbWFnZSBoYW5kbGUNCiAgICAgKg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gZnJlZSgpDQogICAgew0KICAgICAgICAkdGhpcy0+cmVzaXplZCA9IGZhbHNlOw0KICAgICAgICBpZiAoaXNfcmVzb3VyY2UoJHRoaXMtPmltYWdlSGFuZGxlKSkgew0KICAgICAgICAgICAgSW1hZ2VEZXN0cm95KCR0aGlzLT5pbWFnZUhhbmRsZSk7DQogICAgICAgIH0NCiAgICAgICAgJHRoaXMtPmltYWdlSGFuZGxlID0gbnVsbDsNCiAgICAgICAgaWYgKGlzX3Jlc291cmNlKCR0aGlzLT5vbGRJbWFnZSkpew0KICAgICAgICAgICAgSW1hZ2VEZXN0cm95KCR0aGlzLT5vbGRJbWFnZSk7DQogICAgICAgIH0NCiAgICAgICAgJHRoaXMtPm9sZEltYWdlID0gbnVsbDsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZXR1cm5zIGEgbmV3IGltYWdlIGZvciB0ZW1wb3JhcnkgcHJvY2Vzc2luZw0KICAgICAqDQogICAgICogQHBhcmFtIGludCAkd2lkdGggd2lkdGggb2YgdGhlIG5ldyBpbWFnZQ0KICAgICAqIEBwYXJhbSBpbnQgJGhlaWdodCBoZWlnaHQgb2YgdGhlIG5ldyBpbWFnZQ0KICAgICAqIEBwYXJhbSBib29sICR0cnVlQ29sb3IgZm9yY2Ugd2hpY2ggdHlwZSBvZiBpbWFnZSB0byBjcmVhdGUNCiAgICAgKiBAcmV0dXJuIHJlc291cmNlIGEgR0QgaW1hZ2UgcmVzb3VyY2UNCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZA0KICAgICAqLw0KICAgIGZ1bmN0aW9uIF9jcmVhdGVJbWFnZSgkd2lkdGggPSAtMSwgJGhlaWdodCA9IC0xLCAkdHJ1ZUNvbG9yID0gbnVsbCkNCiAgICB7DQogICAgICAgIGlmICgkd2lkdGggPT0gLTEpIHsNCiAgICAgICAgICAgICR3aWR0aCA9ICR0aGlzLT5uZXdfeDsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoJGhlaWdodCA9PSAtMSkgew0KICAgICAgICAgICAgJGhlaWdodCA9ICR0aGlzLT5uZXdfeTsNCiAgICAgICAgfQ0KDQogICAgICAgICRuZXdfaW1nID0gbnVsbDsNCiAgICAgICAgaWYgKGlzX251bGwoJHRydWVDb2xvcikpIHsNCiAgICAgICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2ltYWdlaXN0cnVlY29sb3InKSkgew0KICAgICAgICAgICAgICAgICRjcmVhdGV0cnVlY29sb3IgPSBpbWFnZWlzdHJ1ZWNvbG9yKCR0aGlzLT5pbWFnZUhhbmRsZSk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICRjcmVhdGV0cnVlY29sb3IgPSB0cnVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgJGNyZWF0ZXRydWVjb2xvciA9ICR0cnVlQ29sb3I7DQogICAgICAgIH0NCiAgICAgICAgaWYgKCRjcmVhdGV0cnVlY29sb3INCiAgICAgICAgICAgICYmIGZ1bmN0aW9uX2V4aXN0cygnSW1hZ2VDcmVhdGVUcnVlQ29sb3InKSkgew0KICAgICAgICAgICAgJG5ld19pbWcgPSBASW1hZ2VDcmVhdGVUcnVlQ29sb3IoJHdpZHRoLCAkaGVpZ2h0KTsNCiAgICAgICAgICAgIC8vR0lGIFRyYW5zcGFyZW50IFBhdGNoDQogICAgICAgICAgICBpZiAoJHRoaXMtPnR5cGUhPSdnaWYnKSB7DQogICAgICAgICAgICAgICAgaW1hZ2VhbHBoYWJsZW5kaW5nKCRuZXdfaW1nLCBmYWxzZSk7DQogICAgICAgICAgICAgICAgaW1hZ2VzYXZlYWxwaGEoJG5ld19pbWcsIHRydWUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLy9FbmQgR0lGIFRyYW5zcGFyZW50IFBhdGNoDQogICAgICAgIH0NCiAgICAgICAgaWYgKCEkbmV3X2ltZykgew0KICAgICAgICAgICAgJG5ld19pbWcgPSBJbWFnZUNyZWF0ZSgkd2lkdGgsICRoZWlnaHQpOw0KICAgICAgICAgICAgaW1hZ2VwYWxldHRlY29weSgkbmV3X2ltZywgJHRoaXMtPmltYWdlSGFuZGxlKTsNCiAgICAgICAgICAgICRjb2xvciA9IGltYWdlY29sb3J0cmFuc3BhcmVudCgkdGhpcy0+aW1hZ2VIYW5kbGUpOw0KICAgICAgICAgICAgaWYgKCRjb2xvciAhPSAtMSkgew0KICAgICAgICAgICAgICAgIGltYWdlY29sb3J0cmFuc3BhcmVudCgkbmV3X2ltZywgJGNvbG9yKTsNCiAgICAgICAgICAgICAgICBpbWFnZWZpbGwoJG5ld19pbWcsIDAsIDAsICRjb2xvcik7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC8vR0lGIFRyYW5zcGFyZW50IFBhdGNoDQogICAgICAgIGlmICgkdGhpcy0+dHlwZT09J2dpZicpIHsNCiAgICAgICAgICAgICR0cmFuc3BhcmVuY3lJbmRleCA9IGltYWdlY29sb3J0cmFuc3BhcmVudCgkdGhpcy0+aW1hZ2VIYW5kbGUpOw0KICAgICAgICAgICAgJHRyYW5zcGFyZW5jeUNvbG9yID0gYXJyYXkoJ3JlZCcgPT4gMjU1LCAnZ3JlZW4nID0+IDI1NSwgJ2JsdWUnID0+IDI1NSk7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmICgkdHJhbnNwYXJlbmN5SW5kZXggPj0gMCkgew0KICAgICAgICAgICAgICAgICR0cmFuc3BhcmVuY3lDb2xvciA9IGltYWdlY29sb3JzZm9yaW5kZXgoJHRoaXMtPmltYWdlSGFuZGxlLCAkdHJhbnNwYXJlbmN5SW5kZXgpOyAgIA0KICAgICAgICAgICAgfQ0KICAgICAgICAgICANCiAgICAgICAgICAgICR0cmFuc3BhcmVuY3lJbmRleCA9IGltYWdlY29sb3JhbGxvY2F0ZSgkbmV3X2ltZywgJHRyYW5zcGFyZW5jeUNvbG9yWydyZWQnXSwgJHRyYW5zcGFyZW5jeUNvbG9yWydncmVlbiddLCAkdHJhbnNwYXJlbmN5Q29sb3JbJ2JsdWUnXSk7DQogICAgICAgICAgICBpbWFnZWZpbGwoJG5ld19pbWcsIDAsIDAsICR0cmFuc3BhcmVuY3lJbmRleCk7DQogICAgICAgICAgICBpbWFnZWNvbG9ydHJhbnNwYXJlbnQoJG5ld19pbWcsICR0cmFuc3BhcmVuY3lJbmRleCk7DQogICAgICAgIH0NCiAgICAgICAgLy9FbmQgR0lGIFRyYW5zcGFyZW50IFBhdGNoDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgcmV0dXJuICRuZXdfaW1nOw0KICAgIH0NCn0=]]></data>
	</file>
	<file>
	  <filename>/lib/external/Image/~backup/Transform/Driver/GD1.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8vICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KLy8gfCBQSFAgVmVyc2lvbiA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQovLyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCi8vIHwgQ29weXJpZ2h0IChjKSAxOTk3LTIwMDMgVGhlIFBIUCBHcm91cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KLy8gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQovLyB8IFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB2ZXJzaW9uIDIuMDIgb2YgdGhlIFBIUCBsaWNlbnNlLCAgICAgIHwNCi8vIHwgdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UsIGFuZCBpcyAgICAgICAgfA0KLy8gfCBhdmFpbGFibGUgYXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQovLyB8IGh0dHA6Ly93d3cucGhwLm5ldC9saWNlbnNlLzJfMDIudHh0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCi8vIHwgSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIFBIUCBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvICAgfA0KLy8gfCBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGEgbm90ZSB0byAgICAgICAgICB8DQovLyB8IGxpY2Vuc2VAcGhwLm5ldCBzbyB3ZSBjYW4gbWFpbCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LiAgICAgICAgICAgICAgIHwNCi8vICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KLy8gfCBBdXRob3JzOiBQZXRlciBCb3d5ZXIgPHBldGVyQG1hcGxlZGVzaWduLmNvLnVrPiAgICAgICAgICAgICAgICAgICAgICB8DQovLyB8ICAgICAgICAgIEFsYW4gS25vd2xlcyA8YWxhbkBha2JraG9tZS5jb20+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCi8vICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KDQpyZXF1aXJlX29uY2UgJ0ltYWdlL1RyYW5zZm9ybS9Ecml2ZXIvR0QucGhwJzsNCg0KLyoqDQogKiBUaGlzIGRyaXZlciBpcyBmb3IgR0QxIG9yIHRoZSBub24tYnVuZGxlZCB2ZXJzaW9uIG9mIEdEMg0KICoNCiAqIEBwYWNrYWdlDQogKiBAYXV0aG9yIE5BV0FMIEFTV0FODQogKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAwMw0KICogQHZlcnNpb24gJElkOiBHRDEucGhwIDIzNDEyMyAyMDA3LTA0LTE5IDE2OjM2OjA5WiBkdWZ1eiAkDQogKiBAYWNjZXNzIHB1YmxpYw0KICoqLw0KQ2xhc3MgSW1hZ2VfVHJhbnNmb3JtX0RyaXZlcl9HRDEgZXh0ZW5kcyBJbWFnZV9UcmFuc2Zvcm1fRHJpdmVyX0dEDQp7DQogICAgLyoqDQogICAgICogQ2hlY2sgc2V0dGluZ3MNCiAgICAgKg0KICAgICAqIEByZXR1cm4gbWl4ZWQgdHJ1ZSBvciAgb3IgYSBQRUFSIGVycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqDQogICAgICogQHNlZSBQRUFSOjppc0Vycm9yKCkNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBJbWFnZV9UcmFuc2Zvcm1fRHJpdmVyX0dEMSgpDQogICAgew0KICAgICAgICAkdGhpcy0+X19jb25zdHJ1Y3QoKTsNCiAgICB9IC8vIEVuZCBmdW5jdGlvbiBJbWFnZQ0KDQogICAgLyoqDQogICAgICogQ2hlY2sgc2V0dGluZ3MNCiAgICAgKg0KICAgICAqIEByZXR1cm4gbWl4ZWQgdHJ1ZSBvciAgb3IgYSBQRUFSIGVycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqDQogICAgICogQHNlZSBQRUFSOjppc0Vycm9yKCkNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpDQogICAgew0KICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7DQogICAgfSAvLyBFbmQgZnVuY3Rpb24gSW1hZ2UNCg0KICAgLyoqDQogICAgKiBSZXNpemUgQWN0aW9uDQogICAgKg0KICAgICogRm9yIEdEIDIuMDErIHRoZSBuZXcgY29weXJlc2FtcGxlZCBmdW5jdGlvbiBpcyB1c2VkDQogICAgKiBJdCB1c2VzIGEgYmljdWJpYyBpbnRlcnBvbGF0aW9uIGFsZ29yaXRobSB0byBnZXQgZmFyDQogICAgKiBiZXR0ZXIgcmVzdWx0Lg0KICAgICoNCiAgICAqIEBwYXJhbSAkbmV3X3ggaW50ICBuZXcgd2lkdGgNCiAgICAqIEBwYXJhbSAkbmV3X3kgaW50ICBuZXcgaGVpZ2h0DQogICAgKiBAcGFyYW0gbWl4ZWQgJG9wdGlvbnMgT3B0aW9uYWwgcGFyYW1ldGVycw0KICAgICoNCiAgICAqIEByZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzIG9yIFBFQVIgRXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgKiBAc2VlIFBFQVI6OmlzRXJyb3IoKQ0KICAgICovDQogICAgZnVuY3Rpb24gX3Jlc2l6ZSgkbmV3X3gsICRuZXdfeSwgJG9wdGlvbnMgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgaWYgKCR0aGlzLT5yZXNpemVkID09PSB0cnVlKSB7DQogICAgICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcignWW91IGhhdmUgYWxyZWFkeSByZXNpemVkIHRoZSBpbWFnZSB3aXRob3V0IHNhdmluZyBpdC4gIFlvdXIgcHJldmlvdXMgcmVzaXppbmcgd2lsbCBiZSBvdmVyd3JpdHRlbicsIG51bGwsIFBFQVJfRVJST1JfVFJJR0dFUiwgRV9VU0VSX05PVElDRSk7DQogICAgICAgIH0NCiAgICAgICAgJG5ld19pbWcgPUltYWdlQ3JlYXRlKCRuZXdfeCwkbmV3X3kpOw0KICAgICAgICBJbWFnZUNvcHlSZXNpemVkKCRuZXdfaW1nLCAkdGhpcy0+aW1hZ2VIYW5kbGUsIDAsIDAsIDAsIDAsICRuZXdfeCwgJG5ld195LCAkdGhpcy0+aW1nX3gsICR0aGlzLT5pbWdfeSk7DQogICAgICAgICR0aGlzLT5vbGRfaW1hZ2UgPSAkdGhpcy0+aW1hZ2VIYW5kbGU7DQogICAgICAgICR0aGlzLT5pbWFnZUhhbmRsZSA9ICRuZXdfaW1nOw0KICAgICAgICAkdGhpcy0+cmVzaXplZCA9IHRydWU7DQoNCiAgICAgICAgJHRoaXMtPm5ld194ID0gJG5ld194Ow0KICAgICAgICAkdGhpcy0+bmV3X3kgPSAkbmV3X3k7DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KDQogICAgZnVuY3Rpb24gcm90YXRlKCRhbmdsZSwgJG9wdGlvbnMgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgaWYgKCRvcHRpb25zID09IG51bGwpew0KICAgICAgICAgICAgJGF1dG9yZXNpemUgPSB0cnVlOw0KICAgICAgICAgICAgJGNvbG9yX21hc2sgPSBhcnJheSgyNTUsMjU1LDApOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgZXh0cmFjdCgkb3B0aW9ucyk7DQogICAgICAgIH0NCg0KICAgICAgICB3aGlsZSAoJGFuZ2xlIDw9IC00NSkgew0KICAgICAgICAgICAgJGFuZ2xlICArPSAzNjA7DQogICAgICAgIH0NCiAgICAgICAgd2hpbGUgKCRhbmdsZSA+IDI3MCkgew0KICAgICAgICAgICAgJGFuZ2xlICAtPSAzNjA7DQogICAgICAgIH0NCg0KICAgICAgICAkdCA9IGRlZzJyYWQoJGFuZ2xlKTsNCg0KICAgICAgICBpZiAoIWlzX2FycmF5KCRjb2xvcl9tYXNrKSkgew0KICAgICAgICAgICAgLy8gTm90IGFscmVhZHkgaW4gbnVtYmVyaWNhbCBmb3JtYXQsIHNvIHdlIGNvbnZlcnQgaXQuDQogICAgICAgICAgICBpZiAoJGNvbG9yX21hc2t7MH0gPT0gJyMnKXsNCiAgICAgICAgICAgICAgICAkY29sb3JfbWFzayA9ICR0aGlzLT5jb2xvcmhleDJjb2xvcmFycmF5KCRjb2xvcl9tYXNrKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgaW5jbHVkZV9vbmNlICdJbWFnZS9UcmFuc2Zvcm0vRHJpdmVyL0NvbG9yc0RlZnMucGhwJzsNCiAgICAgICAgICAgICAgICAkY29sb3JfbWFzayA9IGlzc2V0KCRjb2xvcm5hbWVzWyRjb2xvcl9tYXNrXSk/JGNvbG9ybmFtZXNbJGNvbG9yX21hc2tdOmZhbHNlOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8gRG8gbm90IHJvdW5kIGl0LCB0b28gbXVjaCBsb3N0IG9mIHF1YWxpdHkNCiAgICAgICAgJGNvc1QgICA9IGNvcygkdCk7DQogICAgICAgICRzaW5UICAgPSBzaW4oJHQpOw0KDQogICAgICAgICRpbWcgICAgPSYgJHRoaXMtPmltYWdlSGFuZGxlOw0KDQogICAgICAgICR3aWR0aCAgPSAkbWF4X3ggID0gJHRoaXMtPmltZ194Ow0KICAgICAgICAkaGVpZ2h0ID0gJG1heF95ICA9ICR0aGlzLT5pbWdfeTsNCiAgICAgICAgJG1pbl95ICA9IDA7DQogICAgICAgICRtaW5feCAgPSAwOw0KDQogICAgICAgICR4MSAgICAgPSByb3VuZCgkbWF4X3gvMiwwKTsNCiAgICAgICAgJHkxICAgICA9IHJvdW5kKCRtYXhfeS8yLDApOw0KDQogICAgICAgIGlmICggJGF1dG9yZXNpemUgKXsNCiAgICAgICAgICAgICR0ICAgICAgPSBhYnMoJHQpOw0KICAgICAgICAgICAgJGEgICAgICA9IHJvdW5kKCRhbmdsZSwwKTsNCiAgICAgICAgICAgIHN3aXRjaCgoaW50KSgkYW5nbGUpKXsNCiAgICAgICAgICAgICAgICBjYXNlIDA6DQogICAgICAgICAgICAgICAgICAgICAgICAkd2lkdGgyICAgICA9ICR3aWR0aDsNCiAgICAgICAgICAgICAgICAgICAgICAgICRoZWlnaHQyICAgID0gJGhlaWdodDsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSA5MDoNCiAgICAgICAgICAgICAgICAgICAgICAgICR3aWR0aDIgICAgID0gJGhlaWdodDsNCiAgICAgICAgICAgICAgICAgICAgICAgICRoZWlnaHQyICAgID0gJHdpZHRoOw0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDE4MDoNCiAgICAgICAgICAgICAgICAgICAgICAgICR3aWR0aDIgICAgID0gJHdpZHRoOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGhlaWdodDIgICAgPSAkaGVpZ2h0Ow0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDI3MDoNCiAgICAgICAgICAgICAgICAgICAgICAgICR3aWR0aDIgICAgID0gJGhlaWdodDsNCiAgICAgICAgICAgICAgICAgICAgICAgICRoZWlnaHQyICAgID0gJHdpZHRoOw0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICAgICAkd2lkdGgyICAgICA9IChpbnQpKGFicyhzaW4oJHQpICogJGhlaWdodCArIGNvcygkdCkgKiAkd2lkdGgpKTsNCiAgICAgICAgICAgICAgICAgICAgJGhlaWdodDIgICAgPSAoaW50KShhYnMoY29zKCR0KSAqICRoZWlnaHQrc2luKCR0KSAqICR3aWR0aCkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAkd2lkdGgyICAgICAtPSAkd2lkdGgyJTI7DQogICAgICAgICAgICAkaGVpZ2h0MiAgICAtPSAkaGVpZ2h0MiUyOw0KDQogICAgICAgICAgICAkZF93aWR0aCAgICA9IGFicygkd2lkdGggLSAkd2lkdGgyKTsNCiAgICAgICAgICAgICRkX2hlaWdodCAgID0gYWJzKCRoZWlnaHQgLSAkaGVpZ2h0Mik7DQogICAgICAgICAgICAkeF9vZmZzZXQgICA9ICRkX3dpZHRoLzI7DQogICAgICAgICAgICAkeV9vZmZzZXQgICA9ICRkX2hlaWdodC8yOw0KICAgICAgICAgICAgJG1pbl94MiAgICAgPSAtYWJzKCR4X29mZnNldCk7DQogICAgICAgICAgICAkbWluX3kyICAgICA9IC1hYnMoJHlfb2Zmc2V0KTsNCiAgICAgICAgICAgICRtYXhfeDIgICAgID0gJHdpZHRoMjsNCiAgICAgICAgICAgICRtYXhfeTIgICAgID0gJGhlaWdodDI7DQogICAgICAgIH0NCg0KICAgICAgICAkaW1nMiAgID0gQGltYWdlY3JlYXRlVHJ1ZUNvbG9yKCR3aWR0aDIsJGhlaWdodDIpOw0KDQogICAgICAgIGlmICghaXNfcmVzb3VyY2UoJGltZzIpKSB7DQogICAgICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcignQ2Fubm90IGNyZWF0ZSBidWZmZXIgZm9yIHRoZSByb3RhdGFpb24uJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgUEVBUl9FUlJPUl9UUklHR0VSLCBFX1VTRVJfTk9USUNFKTsNCiAgICAgICAgfQ0KDQogICAgICAgICR0aGlzLT5pbWdfeCA9ICR3aWR0aDI7DQogICAgICAgICR0aGlzLT5pbWdfeSA9ICRoZWlnaHQyOw0KDQoNCiAgICAgICAgaW1hZ2VwYWxldHRlY29weSgkaW1nMiwkaW1nKTsNCg0KICAgICAgICAkbWFzayAgID0gaW1hZ2Vjb2xvcnJlc29sdmUoJGltZzIsJGNvbG9yX21hc2tbMF0sJGNvbG9yX21hc2tbMV0sJGNvbG9yX21hc2tbMl0pOw0KDQogICAgICAgIC8vIHVzZSBzaW1wbGUgbGluZXMgY29weSBmb3IgYXhlcyBhbmdsZXMNCiAgICAgICAgc3dpdGNoICgoaW50KSgkYW5nbGUpKSB7DQogICAgICAgICAgICBjYXNlIDA6DQogICAgICAgICAgICAgICAgaW1hZ2VmaWxsKCRpbWcyLCAwLCAwLCRtYXNrKTsNCiAgICAgICAgICAgICAgICBmb3IgKCR5ID0gMDsgJHkgPCAkbWF4X3k7ICR5KyspIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yICgkeCA9ICRtaW5feDsgJHggPCAkbWF4X3g7ICR4Kyspew0KICAgICAgICAgICAgICAgICAgICAgICAgJGMgID0gQGltYWdlY29sb3JhdCAoICRpbWcsICR4LCAkeSk7DQogICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXNldHBpeGVsKCRpbWcyLCR4KyR4X29mZnNldCwkeSskeV9vZmZzZXQsJGMpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSA5MDoNCiAgICAgICAgICAgICAgICBpbWFnZWZpbGwgKCRpbWcyLCAwLCAwLCRtYXNrKTsNCiAgICAgICAgICAgICAgICBmb3IgKCR4ID0gJG1pbl94OyAkeCA8ICRtYXhfeDsgJHgrKyl7DQogICAgICAgICAgICAgICAgICAgIGZvciAoJHk9JG1pbl95OyAkeSA8ICRtYXhfeTsgJHkrKykgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGMgID0gaW1hZ2Vjb2xvcmF0ICggJGltZywgJHgsICR5KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlc2V0cGl4ZWwoJGltZzIsJG1heF95LSR5LTEsJHgsJGMpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAxODA6DQogICAgICAgICAgICAgICAgaW1hZ2VmaWxsICgkaW1nMiwgMCwgMCwkbWFzayk7DQogICAgICAgICAgICAgICAgZm9yICgkeT0wOyAkeSA8ICRtYXhfeTsgJHkrKykgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKCR4ID0gJG1pbl94OyAkeCA8ICRtYXhfeDsgJHgrKyl7DQogICAgICAgICAgICAgICAgICAgICAgICAkYyAgPSBAaW1hZ2Vjb2xvcmF0ICggJGltZywgJHgsICR5KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlc2V0cGl4ZWwoJGltZzIsICRtYXhfeDItJHgtMSwgJG1heF95Mi0keS0xLCAkYyk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlIDI3MDoNCiAgICAgICAgICAgICAgICBpbWFnZWZpbGwgKCRpbWcyLCAwLCAwLCRtYXNrKTsNCiAgICAgICAgICAgICAgICBmb3IgKCR5PTA7ICR5IDwgJG1heF95OyAkeSsrKSB7DQogICAgICAgICAgICAgICAgICAgIGZvciAoJHggPSAkbWF4X3g7ICR4ID49ICRtaW5feDsgJHgtLSl7DQogICAgICAgICAgICAgICAgICAgICAgICAkYyAgPSBAaW1hZ2Vjb2xvcmF0ICggJGltZywgJHgsICR5KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlc2V0cGl4ZWwoJGltZzIsJHksJG1heF94LSR4LTEsJGMpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgLy8gc2ltcGxlIHJldmVyc2Ugcm90YXRpb24gYWxnbw0KICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICAkaT0wOw0KICAgICAgICAgICAgICAgIGZvciAoJHkgPSAkbWluX3kyOyAkeSA8ICRtYXhfeTI7ICR5Kyspew0KDQogICAgICAgICAgICAgICAgICAgIC8vIEFsZ2VicmEgOikNCiAgICAgICAgICAgICAgICAgICAgJHgyID0gcm91bmQoKCgkbWluX3gyLSR4MSkgKiAkY29zVCkgKyAoKCR5LSR5MSkgKiAkc2luVCArICR4MSksMCk7DQogICAgICAgICAgICAgICAgICAgICR5MiA9IHJvdW5kKCgoJHktJHkxKSAqICRjb3NUIC0gKCRtaW5feDItJHgxKSAqICRzaW5UICsgJHkxKSwwKTsNCg0KICAgICAgICAgICAgICAgICAgICBmb3IgKCR4ID0gJG1pbl94MjsgJHggPCAkbWF4X3gyOyAkeCsrKXsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgd2UgYXJlIG91dCBvZiBvcmlnaW5hbCBib3VuY2VzLCBpZiB3ZSBhcmUNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZSB0aGUgZGVmYXVsdCBjb2xvciBtYXNrDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICR4Mj49MCAmJiAkeDI8JG1heF94ICYmICR5Mj49MCAmJiAkeTI8JG1heF95ICl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGMgID0gaW1hZ2Vjb2xvcmF0ICggJGltZywgJHgyLCAkeTIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYyAgPSAkbWFzazsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlc2V0cGl4ZWwoJGltZzIsJHgrJHhfb2Zmc2V0LCR5KyR5X29mZnNldCwkYyk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJvdW5kIHZlcmJvdGVuIQ0KICAgICAgICAgICAgICAgICAgICAgICAgJHgyICArPSAkY29zVDsNCiAgICAgICAgICAgICAgICAgICAgICAgICR5MiAgLT0gJHNpblQ7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCg0KICAgICAgICAkdGhpcy0+aW1hZ2VIYW5kbGUgID0gICRpbWcyOw0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQp9IC8vIEVuZCBjbGFzcyBJbWFnZUdE]]></data>
	</file>
	<file>
	  <filename>/lib/external/Image/~backup/Transform/Driver/IM.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyogdmltOiBzZXQgZXhwYW5kdGFiIHRhYnN0b3A9NCBzaGlmdHdpZHRoPTQ6ICovDQoNCi8qKg0KICogSW1hZ2VNYWdpY2sgYmluYXJpZXMgaW1wbGVtZW50YXRpb24gZm9yIEltYWdlX1RyYW5zZm9ybSBwYWNrYWdlDQogKg0KICogUEhQIHZlcnNpb25zIDQgYW5kIDUNCiAqDQogKiBMSUNFTlNFOiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdmVyc2lvbiAzLjAgb2YgdGhlIFBIUCBsaWNlbnNlDQogKiB0aGF0IGlzIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGUgZm9sbG93aW5nIFVSSToNCiAqIGh0dHA6Ly93d3cucGhwLm5ldC9saWNlbnNlLzNfMC50eHQuICBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZg0KICogdGhlIFBIUCBMaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3ZWIsIHBsZWFzZQ0KICogc2VuZCBhIG5vdGUgdG8gbGljZW5zZUBwaHAubmV0IHNvIHdlIGNhbiBtYWlsIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuDQogKg0KICogQGNhdGVnb3J5ICAgSW1hZ2UNCiAqIEBwYWNrYWdlICAgIEltYWdlX1RyYW5zZm9ybQ0KICogQGF1dGhvciAgICAgUGV0ZXIgQm93eWVyIDxwZXRlckBtYXBsZWRlc2lnbi5jby51az4NCiAqIEBhdXRob3IgICAgIFBoaWxpcHBlIEphdXNpb25zIDxQaGlsaXBwZS5KYXVzaW9uc0AxMWFiYWN1cy5jb20+DQogKiBAY29weXJpZ2h0ICAyMDAyLTIwMDUgVGhlIFBIUCBHcm91cA0KICogQGxpY2Vuc2UgICAgaHR0cDovL3d3dy5waHAubmV0L2xpY2Vuc2UvM18wLnR4dCAgUEhQIExpY2Vuc2UgMy4wDQogKiBAdmVyc2lvbiAgICBDVlM6ICRJZDogSU0ucGhwIDI2Njg1OSAyMDA4LTA5LTMwIDIyOjI4OjQ3WiBkdWZ1eiAkDQogKiBAbGluayAgICAgICBodHRwOi8vcGVhci5waHAubmV0L3BhY2thZ2UvSW1hZ2VfVHJhbnNmb3JtDQogKi8NCg0KcmVxdWlyZV9vbmNlICdJbWFnZS9UcmFuc2Zvcm0ucGhwJzsNCnJlcXVpcmVfb25jZSAnU3lzdGVtLnBocCc7DQoNCi8qKg0KICogSW1hZ2VNYWdpY2sgYmluYXJpZXMgaW1wbGVtZW50YXRpb24gZm9yIEltYWdlX1RyYW5zZm9ybSBwYWNrYWdlDQogKg0KICogQGNhdGVnb3J5ICAgSW1hZ2UNCiAqIEBwYWNrYWdlICAgIEltYWdlX1RyYW5zZm9ybQ0KICogQHN1YnBhY2thZ2UgSW1hZ2VfVHJhbnNmb3JtX0RyaXZlcl9JTQ0KICogQGF1dGhvciAgICAgUGV0ZXIgQm93eWVyIDxwZXRlckBtYXBsZWRlc2lnbi5jby51az4NCiAqIEBhdXRob3IgICAgIFBoaWxpcHBlIEphdXNpb25zIDxQaGlsaXBwZS5KYXVzaW9uc0AxMWFiYWN1cy5jb20+DQogKiBAY29weXJpZ2h0ICAyMDAyLTIwMDUgVGhlIFBIUCBHcm91cA0KICogQGxpY2Vuc2UgICAgaHR0cDovL3d3dy5waHAubmV0L2xpY2Vuc2UvM18wLnR4dCAgUEhQIExpY2Vuc2UgMy4wDQogKiBAdmVyc2lvbiAgICBSZWxlYXNlOiBAcGFja2FnZV92ZXJzaW9uQA0KICogQGxpbmsgICAgICAgaHR0cDovL3BlYXIucGhwLm5ldC9wYWNrYWdlL0ltYWdlX1RyYW5zZm9ybQ0KICogQGxpbmsgaHR0cDovL3d3dy5pbWFnZW1hZ2ljay5vcmcvDQogKiovDQpjbGFzcyBJbWFnZV9UcmFuc2Zvcm1fRHJpdmVyX0lNIGV4dGVuZHMgSW1hZ2VfVHJhbnNmb3JtDQp7DQogICAgLyoqDQogICAgICogYXNzb2NpYXRpdmUgYXJyYXkgY29tbWFuZHMgdG8gYmUgZXhlY3V0ZWQNCiAgICAgKiBAdmFyIGFycmF5DQogICAgICogQGFjY2VzcyBwcml2YXRlDQogICAgICovDQogICAgdmFyICRjb21tYW5kOw0KDQogICAgLyoqDQogICAgICogQ2xhc3MgY29uc3RydWN0b3INCiAgICAgKi8NCiAgICBmdW5jdGlvbiBJbWFnZV9UcmFuc2Zvcm1fRHJpdmVyX0lNKCkNCiAgICB7DQogICAgICAgICR0aGlzLT5fX2NvbnN0cnVjdCgpOw0KICAgIH0gLy8gRW5kIEltYWdlX0lNDQoNCiAgICAvKioNCiAgICAgKiBDbGFzcyBjb25zdHJ1Y3Rvcg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkNCiAgICB7DQogICAgICAgICR0aGlzLT5faW5pdCgpOw0KICAgICAgICBpZiAoIWRlZmluZWQoJ0lNQUdFX1RSQU5TRk9STV9JTV9QQVRIJykpIHsNCiAgICAgICAgICAgICRwYXRoID0gZGlybmFtZShTeXN0ZW06OndoaWNoKCdjb252ZXJ0JykpDQogICAgICAgICAgICAgICAgICAgIC4gRElSRUNUT1JZX1NFUEFSQVRPUjsNCiAgICAgICAgICAgIGRlZmluZSgnSU1BR0VfVFJBTlNGT1JNX0lNX1BBVEgnLCAkcGF0aCk7DQogICAgICAgIH0NCiAgICAgICAgaWYgKFN5c3RlbTo6d2hpY2goSU1BR0VfVFJBTlNGT1JNX0lNX1BBVEggLiAnY29udmVydCcgLiAoKE9TX1dJTkRPV1MpID8gJy5leGUnIDogJycpKSkgew0KICAgICAgICAgICAgaW5jbHVkZSAnSW1hZ2UvVHJhbnNmb3JtL0RyaXZlci9JbWFnaWNrL0ltYWdlVHlwZXMucGhwJzsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICR0aGlzLT5pc0Vycm9yKFBFQVI6OnJhaXNlRXJyb3IoJ0NvdWxkblwndCBmaW5kICJjb252ZXJ0IiBiaW5hcnknLA0KICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9VTlNVUFBPUlRFRCkpOw0KICAgICAgICB9DQogICAgfSAvLyBFbmQgSW1hZ2VfSU0NCg0KICAgIC8qKg0KICAgICAqIEluaXRpYWxpemUgdGhlIHN0YXRlIG9mIHRoZSBvYmplY3QNCiAgICAgKiovDQogICAgZnVuY3Rpb24gX2luaXQoKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPmNvbW1hbmQgPSBhcnJheSgpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIExvYWQgYW4gaW1hZ2UuDQogICAgICoNCiAgICAgKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHN1cHBvcnQgcmVtb3RlIGZpbGVzLg0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyBmaWxlbmFtZQ0KICAgICAqDQogICAgICogQHJldHVybiBtaXhlZCBUUlVFIG9yIGEgUEVBUiBlcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKiBAc2VlIFBFQVI6OmlzRXJyb3IoKQ0KICAgICAqLw0KICAgIGZ1bmN0aW9uIGxvYWQoJGltYWdlKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPl9pbml0KCk7DQogICAgICAgIGlmICghZmlsZV9leGlzdHMoJGltYWdlKSkgew0KICAgICAgICAgICAgcmV0dXJuIFBFQVI6OnJhaXNlRXJyb3IoJ1RoZSBpbWFnZSBmaWxlICcgLiAkaW1hZ2UNCiAgICAgICAgICAgICAgICAuICcgZG9lc25cJ3QgZXhpc3QnLCBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfSU8pOw0KICAgICAgICB9DQogICAgICAgICR0aGlzLT5pbWFnZSA9ICRpbWFnZTsNCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5fZ2V0X2ltYWdlX2RldGFpbHMoJGltYWdlKTsNCiAgICAgICAgaWYgKFBFQVI6OmlzRXJyb3IoJHJlc3VsdCkpIHsNCiAgICAgICAgICAgIHJldHVybiAkcmVzdWx0Ow0KICAgICAgICB9DQogICAgICAgIHJldHVybiB0cnVlOw0KDQogICAgfSAvLyBFbmQgbG9hZA0KDQogICAgLyoqDQogICAgICogSW1hZ2VfVHJhbnNmb3JtX0RyaXZlcl9JTTo6X2dldF9pbWFnZV9kZXRhaWxzKCkNCiAgICAgKg0KICAgICAqIEBwYXJhbSBzdHJpbmcgJGltYWdlIHRoZSBwYXRoIGFuZCBuYW1lIG9mIHRoZSBpbWFnZSBmaWxlDQogICAgICogQHJldHVybiBub25lDQogICAgICovDQogICAgZnVuY3Rpb24gX2dldF9pbWFnZV9kZXRhaWxzKCRpbWFnZSkNCiAgICB7DQogICAgICAgICRyZXR2YWwgPSBJbWFnZV9UcmFuc2Zvcm06Ol9nZXRfaW1hZ2VfZGV0YWlscygkaW1hZ2UpOw0KICAgICAgICBpZiAoUEVBUjo6aXNFcnJvcigkcmV0dmFsKSkgew0KICAgICAgICAgICAgdW5zZXQoJHJldHZhbCk7DQoNCiAgICAgICAgICAgIGlmICghU3lzdGVtOjp3aGljaChJTUFHRV9UUkFOU0ZPUk1fSU1fUEFUSCAuICdpZGVudGlmeScgLiAoKE9TX1dJTkRPV1MpID8gJy5leGUnIDogJycpKSkgew0KICAgICAgICAgICAgICAgICR0aGlzLT5pc0Vycm9yKFBFQVI6OnJhaXNlRXJyb3IoJ0NvdWxkblwndCBmaW5kICJpZGVudGlmeSIgYmluYXJ5JywgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX1VOU1VQUE9SVEVEKSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkY21kID0gJHRoaXMtPl9wcmVwYXJlX2NtZChJTUFHRV9UUkFOU0ZPUk1fSU1fUEFUSCwNCiAgICAgICAgICAgICAgICAnaWRlbnRpZnknLA0KICAgICAgICAgICAgICAgICctZm9ybWF0ICV3OiVoOiVtICcgLiBlc2NhcGVzaGVsbGFyZygkaW1hZ2UpKTsNCiAgICAgICAgICAgIGV4ZWMoJGNtZCwgJHJlcywgJGV4aXQpOw0KDQogICAgICAgICAgICBpZiAoJGV4aXQgIT0gMCkgew0KICAgICAgICAgICAgICAgIHJldHVybiBQRUFSOjpyYWlzZUVycm9yKCJDYW5ub3QgZmV0Y2ggaW1hZ2Ugb3IgaW1hZ2VzIGRldGFpbHMuIiwgdHJ1ZSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICRkYXRhICA9IGV4cGxvZGUoJzonLCAkcmVzWzBdKTsNCiAgICAgICAgICAgICR0aGlzLT5pbWdfeCA9ICRkYXRhWzBdOw0KICAgICAgICAgICAgJHRoaXMtPmltZ195ID0gJGRhdGFbMV07DQogICAgICAgICAgICAkdGhpcy0+dHlwZSAgPSBzdHJ0b2xvd2VyKCRkYXRhWzJdKTsNCiAgICAgICAgICAgICRyZXR2YWwgPSB0cnVlOw0KDQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gJHJldHZhbDsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZXNpemUgdGhlIGltYWdlLg0KICAgICAqDQogICAgICogQGFjY2VzcyBwcml2YXRlDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ICAgJG5ld194ICAgTmV3IHdpZHRoDQogICAgICogQHBhcmFtIGludCAgICRuZXdfeSAgIE5ldyBoZWlnaHQNCiAgICAgKiBAcGFyYW0gbWl4ZWQgJG9wdGlvbnMgT3B0aW9uYWwgcGFyYW1ldGVycw0KICAgICAqDQogICAgICogQHJldHVybiB0cnVlIG9uIHN1Y2Nlc3Mgb3IgUEVBUiBFcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKiBAc2VlIFBFQVI6OmlzRXJyb3IoKQ0KICAgICAqLw0KICAgIGZ1bmN0aW9uIF9yZXNpemUoJG5ld194LCAkbmV3X3ksICRvcHRpb25zID0gbnVsbCkNCiAgICB7DQogICAgICAgIGlmIChpc3NldCgkdGhpcy0+Y29tbWFuZFsncmVzaXplJ10pKSB7DQogICAgICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcignWW91IGNhbm5vdCBzY2FsZSBvciByZXNpemUgYW4gaW1hZ2UgbW9yZSB0aGFuIG9uY2Ugd2l0aG91dCBjYWxsaW5nIHNhdmUoKSBvciBkaXNwbGF5KCknLCB0cnVlKTsNCiAgICAgICAgfQ0KICAgICAgICAkdGhpcy0+Y29tbWFuZFsncmVzaXplJ10gPSAnLWdlb21ldHJ5ICcNCiAgICAgICAgICAgIC4gKChpbnQpICRuZXdfeCkgLiAneCcgLiAoKGludCkgJG5ld195KSAuICchJzsNCg0KICAgICAgICAkdGhpcy0+bmV3X3ggPSAkbmV3X3g7DQogICAgICAgICR0aGlzLT5uZXdfeSA9ICRuZXdfeTsNCg0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9IC8vIEVuZCByZXNpemUNCg0KICAgIC8qKg0KICAgICAqIHJvdGF0ZQ0KICAgICAqDQogICAgICogQHBhcmFtICAgaW50ICAgICBhbmdsZSAgIHJvdGF0aW9uIGFuZ2xlDQogICAgICogQHBhcmFtICAgYXJyYXkgICBvcHRpb25zIG5vIG9wdGlvbiBhbGxvd2VkDQogICAgICogQHJldHVybiBtaXhlZCBUUlVFIG9yIGEgUEVBUiBlcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKi8NCiAgICBmdW5jdGlvbiByb3RhdGUoJGFuZ2xlLCAkb3B0aW9ucyA9IG51bGwpDQogICAgew0KICAgICAgICAkYW5nbGUgPSAkdGhpcy0+X3JvdGF0aW9uX2FuZ2xlKCRhbmdsZSk7DQogICAgICAgIGlmICgkYW5nbGUgJSAzNjApIHsNCiAgICAgICAgICAgICR0aGlzLT5jb21tYW5kWydyb3RhdGUnXSA9ICctcm90YXRlICcgLiAoZmxvYXQpICRhbmdsZTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gdHJ1ZTsNCg0KICAgIH0gLy8gRW5kIHJvdGF0ZQ0KDQogICAgLyoqDQogICAgICogQ3JvcCBpbWFnZQ0KICAgICAqDQogICAgICogQGF1dGhvciBJYW4gRXVyZSA8aWV1cmVAd2Vic3Byb2NrZXRzLmNvbT4NCiAgICAgKiBAc2luY2UgMC44DQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50IHdpZHRoIENyb3BwZWQgaW1hZ2Ugd2lkdGgNCiAgICAgKiBAcGFyYW0gaW50IGhlaWdodCBDcm9wcGVkIGltYWdlIGhlaWdodA0KICAgICAqIEBwYXJhbSBpbnQgeCBYLWNvb3JkaW5hdGUgdG8gY3JvcCBhdA0KICAgICAqIEBwYXJhbSBpbnQgeSBZLWNvb3JkaW5hdGUgdG8gY3JvcCBhdA0KICAgICAqDQogICAgICogQHJldHVybiBtaXhlZCBUUlVFIG9yIGEgUEVBUiBlcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKi8NCiAgICBmdW5jdGlvbiBjcm9wKCR3aWR0aCwgJGhlaWdodCwgJHggPSAwLCAkeSA9IDApIHsNCiAgICAgICAgLy8gRG8gd2Ugd2FudCBhIHNhZmV0eSBjaGVjayAtIGkuZS4gaWYgJHdpZHRoKyR4ID4gJHRoaXMtPmltZ194IHRoZW4gd2UNCiAgICAgICAgLy8gcmFpc2UgYSB3YXJuaW5nPyBbYW5kIG9idmlvdXNseSBzYW1lIGZvciAkaGVpZ2h0KyR5XQ0KICAgICAgICAkdGhpcy0+Y29tbWFuZFsnY3JvcCddID0gJy1jcm9wICcNCiAgICAgICAgICAgIC4gKChpbnQpICR3aWR0aCkgIC4gJ3gnIC4gKChpbnQpICRoZWlnaHQpDQogICAgICAgICAgICAuICcrJyAuICgoaW50KSAkeCkgLiAnKycgLiAoKGludCkgJHkpIC4gJyEnOw0KDQogICAgICAgIC8vIEkgdGhpbmsgdGhhdCBzZXR0aW5nIGltZ194L3kgaXMgd3JvbmcsIGJ1dCBzY2FsZUJ5TGVuZ3RoKCkgJiBmcmllbmRzDQogICAgICAgIC8vIG1lc3MgdXAgdGhlIGFzcGVjdCBhZnRlciBhIGNyb3Agb3RoZXJ3aXNlLg0KICAgICAgICAkdGhpcy0+bmV3X3ggPSAkdGhpcy0+aW1nX3ggPSAkd2lkdGggLSAkeDsNCiAgICAgICAgJHRoaXMtPm5ld195ID0gJHRoaXMtPmltZ195ID0gJGhlaWdodCAtICR5Ow0KDQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIGFkZFRleHQNCiAgICAgKg0KICAgICAqIEBwYXJhbSAgIGFycmF5ICAgb3B0aW9ucyAgICAgQXJyYXkgY29udGFpbnMgb3B0aW9ucw0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoDQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQnICBUaGUgc3RyaW5nIHRvIGRyYXcNCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAneCcgICAgIEhvcml6b250YWwgcG9zaXRpb24NCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAneScgICAgIFZlcnRpY2FsIFBvc2l0aW9uDQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbG9yJyBGb250IGNvbG9yDQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQnICBGb250IHRvIGJlIHVzZWQNCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZScgIFNpemUgb2YgdGhlIGZvbnRzIGluIHBpeGVsDQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc2l6ZV9maXJzdCcgIFRlbGwgaWYgdGhlIGltYWdlIGhhcyB0byBiZSByZXNpemVkDQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZSBkcmF3aW5nIHRoZSB0ZXh0DQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQogICAgICoNCiAgICAgKiBAcmV0dXJuIG1peGVkIFRSVUUgb3IgYSBQRUFSIGVycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEBzZWUgUEVBUjo6aXNFcnJvcigpDQogICAgICovDQogICAgZnVuY3Rpb24gYWRkVGV4dCgkcGFyYW1zKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPm9sZF9pbWFnZSA9ICR0aGlzLT5pbWFnZUhhbmRsZTsNCiAgICAgICAgICRwYXJhbXMgPSBhcnJheV9tZXJnZSgkdGhpcy0+X2dldF9kZWZhdWx0X3RleHRfcGFyYW1zKCksICRwYXJhbXMpOw0KICAgICAgICAgZXh0cmFjdCgkcGFyYW1zKTsNCg0KICAgICAgICAgaWYgKHRydWUgPT09ICRyZXNpemVfZmlyc3QpIHsNCiAgICAgICAgICAgICAvLyBTZXQgdGhlIGtleSBzbyB0aGF0IHRoaXMgd2lsbCBiZSB0aGUgbGFzdCBpdGVtIGluIHRoZSBhcnJheQ0KICAgICAgICAgICAgJGtleSA9ICd6dGV4dCc7DQogICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgJGtleSA9ICd0ZXh0JzsNCiAgICAgICAgIH0NCiAgICAgICAgICR0aGlzLT5jb21tYW5kWyRrZXldID0gJy1mb250ICcgLiBlc2NhcGVzaGVsbGFyZygkZm9udCkNCiAgICAgICAgICAgIC4gJyAtZmlsbCAnIC4gZXNjYXBlc2hlbGxhcmcoJGNvbG9yKQ0KICAgICAgICAgICAgLiAnIC1kcmF3IFwndGV4dCAnIC4gZXNjYXBlc2hlbGxhcmcoJHggLiAnLCcgLiAkeSkNCiAgICAgICAgICAgIC4gJyAiJyAuIGVzY2FwZXNoZWxsYXJnKCR0ZXh0KSAuICciXCcnOw0KICAgICAgICAgLy8gUHJvZHVjaW5nIGVycm9yOiBnczogbm90IGZvdW5kIGdzOiBub3QgZm91bmQgY29udmVydDogUG9zdHNjcmlwdCBkZWxlZ2F0ZSBmYWlsZWQgW05vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnldLg0KICAgICAgICByZXR1cm4gdHJ1ZTsNCg0KICAgIH0gLy8gRW5kIGFkZFRleHQNCg0KICAgIC8qKg0KICAgICAqIEFkanVzdCB0aGUgaW1hZ2UgZ2FtbWENCiAgICAgKg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICogQHBhcmFtIGZsb2F0ICRvdXRwdXRnYW1tYQ0KICAgICAqIEByZXR1cm4gbWl4ZWQgVFJVRSBvciBhIFBFQVIgZXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICovDQogICAgZnVuY3Rpb24gZ2FtbWEoJG91dHB1dGdhbW1hID0gMS4wKSB7DQogICAgICAgIGlmICgkb3V0cHV0Z2FtbWUgIT0gMS4wKSB7DQogICAgICAgICAgICAkdGhpcy0+Y29tbWFuZFsnZ2FtbWEnXSA9ICctZ2FtbWEgJyAuIChmbG9hdCkgJG91dHB1dGdhbW1hOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIENvbnZlcnQgdGhlIGltYWdlIHRvIGdyZXlzY2FsZQ0KICAgICAqDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKiBAcmV0dXJuIG1peGVkIFRSVUUgb3IgYSBQRUFSIGVycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIGdyZXlzY2FsZSgpIHsNCiAgICAgICAgJHRoaXMtPmNvbW1hbmRbJ3R5cGUnXSA9ICctdHlwZSBHcmF5c2NhbGUnOw0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBIb3Jpem9udGFsIG1pcnJvcmluZw0KICAgICAqDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKiBAcmV0dXJuIFRSVUUgb3IgUEVBUiBFcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKi8NCiAgICBmdW5jdGlvbiBtaXJyb3IoKSB7DQogICAgICAgIC8vIFdlIGNhbiBvbmx5IGFwcGx5ICJmbG9wIiBvbmNlDQogICAgICAgIGlmIChpc3NldCgkdGhpcy0+Y29tbWFuZFsnZmxvcCddKSkgew0KICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmNvbW1hbmRbJ2Zsb3AnXSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkdGhpcy0+Y29tbWFuZFsnZmxvcCddID0gJy1mbG9wJzsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBWZXJ0aWNhbCBtaXJyb3JpbmcNCiAgICAgKg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICogQHJldHVybiBUUlVFIG9yIFBFQVIgRXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICovDQogICAgZnVuY3Rpb24gZmxpcCgpIHsNCiAgICAgICAgLy8gV2UgY2FuIG9ubHkgYXBwbHkgImZsaXAiIG9uY2UNCiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5jb21tYW5kWydmbGlwJ10pKSB7DQogICAgICAgICAgICB1bnNldCgkdGhpcy0+Y29tbWFuZFsnZmxpcCddKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICR0aGlzLT5jb21tYW5kWydmbGlwJ10gPSAnLWZsaXAnOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFNhdmUgdGhlIGltYWdlIGZpbGUNCiAgICAgKg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICoNCiAgICAgKiBAcGFyYW0gJGZpbGVuYW1lIHN0cmluZyAgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gd3JpdGUgdG8NCiAgICAgKiBAcGFyYW0gJHF1YWxpdHkgIHF1YWxpdHkgaW1hZ2UgZHBpLCBkZWZhdWx0PTc1DQogICAgICogQHBhcmFtICR0eXBlICAgICBzdHJpbmcgIChKUEVHLCBQTkcuLi4pDQogICAgICoNCiAgICAgKiBAcmV0dXJuIG1peGVkIFRSVUUgb3IgYSBQRUFSIGVycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHNhdmUoJGZpbGVuYW1lLCAkdHlwZSA9ICcnLCAkcXVhbGl0eSA9IG51bGwpDQogICAgew0KICAgICAgICAkdHlwZSA9IHN0cnRvdXBwZXIoKCR0eXBlID09ICcnKSA/ICR0aGlzLT50eXBlIDogJHR5cGUpOw0KICAgICAgICBzd2l0Y2ggKCR0eXBlKSB7DQogICAgICAgICAgICBjYXNlICdKUEVHJzoNCiAgICAgICAgICAgICAgICAkdHlwZSA9ICdKUEcnOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQogICAgICAgICRvcHRpb25zID0gYXJyYXkoKTsNCiAgICAgICAgaWYgKCFpc19udWxsKCRxdWFsaXR5KSkgew0KICAgICAgICAgICAgJG9wdGlvbnNbJ3F1YWxpdHknXSA9ICRxdWFsaXR5Ow0KICAgICAgICB9DQogICAgICAgICRxdWFsaXR5ID0gJHRoaXMtPl9nZXRPcHRpb24oJ3F1YWxpdHknLCAkb3B0aW9ucywgNzUpOw0KDQogICAgICAgICRjbWQgPSAkdGhpcy0+X3ByZXBhcmVfY21kKA0KICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0lNX1BBVEgsDQogICAgICAgICAgICAnY29udmVydCcsDQogICAgICAgICAgICBpbXBsb2RlKCcgJywgJHRoaXMtPmNvbW1hbmQpDQogICAgICAgICAgICAgICAuICcgLXF1YWxpdHkgJyAuICgoaW50KSAkcXVhbGl0eSkgLiAnICcNCiAgICAgICAgICAgICAgIC4gZXNjYXBlc2hlbGxhcmcoJHRoaXMtPmltYWdlKSAuICcgJyAuICR0eXBlIC4gJzonDQogICAgICAgICAgICAgICAuIGVzY2FwZXNoZWxsYXJnKCRmaWxlbmFtZSkgLiAnIDI+JjEnKTsNCiAgICAgICAgZXhlYygkY21kLCAkcmVzLCAkZXhpdCk7DQoNCiAgICAgICAgaWYgKCEkdGhpcy0+a2VlcF9zZXR0aW5nc19vbl9zYXZlKSB7DQogICAgICAgICAgICAkdGhpcy0+ZnJlZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuICgkZXhpdCA9PSAwKSA/IHRydWUgOiBQRUFSOjpyYWlzZUVycm9yKGltcGxvZGUoJy4gJywgJHJlcyksDQogICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfSU8pOw0KICAgIH0gLy8gRW5kIHNhdmUNCg0KICAgIC8qKg0KICAgICAqIERpc3BsYXkgaW1hZ2Ugd2l0aG91dCBzYXZpbmcgYW5kIGxvc2UgY2hhbmdlcw0KICAgICAqDQogICAgICogVGhpcyBtZXRob2QgYWRkcyB0aGUgQ29udGVudC10eXBlIEhUVFAgaGVhZGVyDQogICAgICoNCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyB0eXBlIChKUEVHLFBORy4uLik7DQogICAgICogQHBhcmFtIGludCBxdWFsaXR5IDc1DQogICAgICoNCiAgICAgKiBAcmV0dXJuIG1peGVkIFRSVUUgb3IgYSBQRUFSIGVycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIGRpc3BsYXkoJHR5cGUgPSAnJywgJHF1YWxpdHkgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgJHR5cGUgICAgPSBzdHJ0b3VwcGVyKCgkdHlwZSA9PSAnJykgPyAkdGhpcy0+dHlwZSA6ICR0eXBlKTsNCiAgICAgICAgc3dpdGNoICgkdHlwZSkgew0KICAgICAgICAgICAgY2FzZSAnSlBFRyc6DQogICAgICAgICAgICAgICAgJHR5cGUgPSAnSlBHJzsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAgICAgICAkb3B0aW9ucyA9IGFycmF5KCk7DQogICAgICAgIGlmICghaXNfbnVsbCgkcXVhbGl0eSkpIHsNCiAgICAgICAgICAgICRvcHRpb25zWydxdWFsaXR5J10gPSAkcXVhbGl0eTsNCiAgICAgICAgfQ0KICAgICAgICAkcXVhbGl0eSA9ICR0aGlzLT5fZ2V0T3B0aW9uKCdxdWFsaXR5JywgJG9wdGlvbnMsIDc1KTsNCg0KICAgICAgICAkdGhpcy0+X3NlbmRfZGlzcGxheV9oZWFkZXJzKCR0eXBlKTsNCg0KICAgICAgICAkY21kID0gJHRoaXMtPl9wcmVwYXJlX2NtZCgNCiAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9JTV9QQVRILA0KICAgICAgICAgICAgJ2NvbnZlcnQnLA0KICAgICAgICAgICAgaW1wbG9kZSgnICcsICR0aGlzLT5jb21tYW5kKSAuICIgLXF1YWxpdHkgJHF1YWxpdHkgIiAgLg0KICAgICAgICAgICAgICAgICAgICR0aGlzLT5pbWFnZSAuICcgJyAuICR0eXBlIC4gIjotIik7DQogICAgICAgIHBhc3N0aHJ1KCRjbWQpOw0KDQogICAgICAgIGlmICghJHRoaXMtPmtlZXBfc2V0dGluZ3Nfb25fc2F2ZSkgew0KICAgICAgICAgICAgJHRoaXMtPmZyZWUoKTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBEZXN0cm95IGltYWdlIGhhbmRsZQ0KICAgICAqDQogICAgICogQHJldHVybiB2b2lkDQogICAgICovDQogICAgZnVuY3Rpb24gZnJlZSgpDQogICAgew0KICAgICAgICAkdGhpcy0+Y29tbWFuZCA9IGFycmF5KCk7DQogICAgICAgICR0aGlzLT5pbWFnZSA9ICcnOw0KICAgICAgICAkdGhpcy0+dHlwZSA9ICcnOw0KICAgIH0NCg0KfSAvLyBFbmQgY2xhc3MgSW1hZ2VJTQ0K]]></data>
	</file>
	<file>
	  <filename>/lib/external/Image/~backup/Transform/Driver/Imagick/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/external/Image/~backup/Transform/Driver/Imagick/ImageTypes.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qKg0KICogVG8gYmUgaW5jbHVkZWQgYnkgRHJpdmVyIF9fY29uc3RydWN0KCkgbWV0aG9kDQogKg0KICogQGF1dGhvciBQaGlsaXBwZS5KYXVzaW9ucyBAYXRAIDExYWJhY3VzLmNvbQ0KICoqLw0KJHRoaXMtPl9zdXBwb3J0ZWRfaW1hZ2VfdHlwZXMgPSBhcnJheSgNCiAgICAnYXJ0JyAgID0+ICdyJywNCiAgICAnYXZpJyAgID0+ICdyJywNCiAgICAnYXZzJyAgID0+ICdydycsDQogICAgJ2JtcCcgICA9PiAncncnLA0KLy8gICdjZ20nICAgPT4gJ3InLA0KICAgICdjaW4nICAgPT4gJ3J3JywNCiAgICAnY215aycgID0+ICdydycsDQogICAgJ2N1cicgICA9PiAncicsDQogICAgJ2N1dCcgICA9PiAncicsDQogICAgJ2RjbScgICA9PiAncicsDQogICAgJ2RjeCcgICA9PiAncncnLA0KICAgICdkaWInICAgPT4gJ3J3JywNCiAgICAnZHB4JyAgID0+ICdydycsDQogICAgJ2VwZGYnICA9PiAncncnLA0KLy8gICdlcGknICAgPT4gJ3J3JywgICAgLy8gUmVxdWlyZXMgR2hvc3RzY3JpcHQNCi8vICAnZXBzJyAgID0+ICdydycsICAgIC8vIFJlcXVpcmVzIEdob3N0c2NyaXB0DQovLyAgJ2VwczInICA9PiAndycsICAgICAvLyBSZXF1aXJlcyBHaG9zdHNjcmlwdA0KLy8gICdlcHMzJyAgPT4gJ3cnLCAgICAgLy8gUmVxdWlyZXMgR2hvc3RzY3JpcHQNCi8vICAnZXBzZicgID0+ICdydycsICAgIC8vIFJlcXVpcmVzIEdob3N0c2NyaXB0DQovLyAgJ2Vwc2knICA9PiAncncnLCAgICAvLyBSZXF1aXJlcyBHaG9zdHNjcmlwdA0KLy8gICdlcHQnICAgPT4gJ3J3JywgICAgLy8gUmVxdWlyZXMgR2hvc3RzY3JpcHQNCi8vICAnZmlnJyAgID0+ICdyJywNCiAgICAnZml0cycgID0+ICdydycsDQovLyAgJ2ZweCcgICA9PiAncncnLA0KICAgICdnaWYnICAgPT4gJ3J3JywNCi8vICAnZ3BsdCcgID0+ICdyJywNCiAgICAnZ3JheScgID0+ICdydycsDQovLyAgJ2hwZ2wnICA9PiAncicsDQovLyAgJ2h0bWwnICA9PiAncncnLA0KICAgICdpY28nICAgPT4gJ3InLA0KLy8gICdqYmlnJyAgPT4gJ3J3JywNCiAgICAnam5nJyAgID0+ICdydycsDQovLyAgJ2pwMicgICA9PiAncncnLA0KLy8gICdqcGMnICAgPT4gJ3J3JywNCi8vICAnanBlZycgID0+ICdydycsDQovLyAgJ21hbicgICA9PiAncicsDQogICAgJ21hdCcgICA9PiAncicsDQogICAgJ21pZmYnICA9PiAncncnLA0KICAgICdtb25vJyAgPT4gJ3J3JywNCiAgICAnbW5nJyAgID0+ICdydycsDQovLyAgJ21wZWcnICA9PiAncncnLA0KLy8gICdtMnYnICAgPT4gJ3J3JywNCiAgICAnbXBjJyAgID0+ICdydycsDQogICAgJ21zbCcgICA9PiAncncnLA0KICAgICdtdHYnICAgPT4gJ3J3JywNCiAgICAnbXZnJyAgID0+ICdydycsDQogICAgJ290YicgICA9PiAncncnLA0KICAgICdwNycgICAgPT4gJ3J3JywNCiAgICAncGFsbScgID0+ICdydycsDQogICAgJ3BibScgICA9PiAncncnLA0KICAgICdwY2QnICAgPT4gJ3J3JywNCiAgICAncGNkcycgID0+ICdydycsDQogICAgJ3BjbCcgICA9PiAndycsDQogICAgJ3BjeCcgICA9PiAncncnLA0KICAgICdwZGInICAgPT4gJ3J3JywNCiAgICAncGRmJyAgID0+ICd3JywgICAgICAvLyBSZXF1aXJlcyBHaG9zdHNjcmlwdCB0byByZWFkDQogICAgJ3BmYScgICA9PiAncicsDQogICAgJ3BmYicgICA9PiAncicsDQogICAgJ3BnbScgICA9PiAncncnLA0KICAgICdwaWNvbicgPT4gJ3J3JywNCiAgICAncGljdCcgID0+ICdydycsDQogICAgJ3BpeCcgICA9PiAncicsDQogICAgJ3BuZycgICA9PiAncncnLA0KICAgICdwbm0nICAgPT4gJ3J3JywNCiAgICAncHBtJyAgID0+ICdydycsDQovLyAgJ3BzJyAgICA9PiAncncnLCAgICAgLy8gUmVxdWlyZXMgR2hvc3RzY3JpcHQNCi8vICAncHMyJyAgID0+ICdydycsICAgICAvLyBSZXF1aXJlcyBHaG9zdHNjcmlwdA0KLy8gICdwczMnICAgPT4gJ3J3JywgICAgIC8vIFJlcXVpcmVzIEdob3N0c2NyaXB0DQogICAgJ3BzZCcgICA9PiAncncnLA0KICAgICdwdGlmJyAgPT4gJ3J3JywNCiAgICAncHdwJyAgID0+ICdyJywNCi8vICAncmFkJyAgID0+ICdyJywNCiAgICAncmdiJyAgID0+ICdydycsDQogICAgJ3JnYmEnICA9PiAncncnLA0KICAgICdybGEnICAgPT4gJ3InLA0KICAgICdybGUnICAgPT4gJ3InLA0KICAgICdzY3QnICAgPT4gJ3InLA0KICAgICdzZncnICAgPT4gJ3InLA0KICAgICdzZ2knICAgPT4gJ3J3JywNCi8vICAnc2h0bWwnID0+ICd3JywNCiAgICAnc3VuJyAgID0+ICdydycsDQovLyAgJ3N2ZycgICA9PiAncncnLA0KICAgICd0Z2EnICAgPT4gJ3J3JywNCi8vICAndGlmZicgID0+ICdydycsDQogICAgJ3RpbScgICA9PiAncicsDQovLyAgJ3R0ZicgICA9PiAncicsDQogICAgJ3R4dCcgICA9PiAncncnLA0KICAgICd1aWwnICAgPT4gJ3cnLA0KICAgICd1eXZ5JyAgPT4gJ3J3JywNCiAgICAndmljYXInID0+ICdydycsDQogICAgJ3ZpZmYnICA9PiAncncnLA0KICAgICd3Ym1wJyAgPT4gJ3J3JywNCiAgICAnd3BnJyAgID0+ICdyJywNCiAgICAneGJtJyAgID0+ICdydycsDQogICAgJ3hjZicgICA9PiAncicsDQogICAgJ3hwbScgICA9PiAncncnLA0KICAgICd4d2QnICAgPT4gJ3J3JywNCiAgICAneXV2JyAgID0+ICdydycNCik7DQoNCmlmIChPU19XSU5ET1dTKSB7DQogICAgJHRoaXMtPl9zdXBwb3J0ZWRfaW1hZ2VfdHlwZXNbJ2VtZiddID0gJ3InOw0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/external/Image/~backup/Transform/Driver/Imagick/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lib/external/Image/~backup/Transform/Driver/Imagick2.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyogdmltOiBzZXQgZXhwYW5kdGFiIHRhYnN0b3A9NCBzaGlmdHdpZHRoPTQ6ICovDQoNCi8qKg0KICogaW1hZ2ljayBQRUNMIGV4dGVuc2lvbiBpbXBsZW1lbnRhdGlvbiBmb3IgSW1hZ2VfVHJhbnNmb3JtIHBhY2thZ2UNCiAqDQogKiBQSFAgdmVyc2lvbnMgNCBhbmQgNQ0KICoNCiAqIExJQ0VOU0U6IFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB2ZXJzaW9uIDMuMCBvZiB0aGUgUEhQIGxpY2Vuc2UNCiAqIHRoYXQgaXMgYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoZSBmb2xsb3dpbmcgVVJJOg0KICogaHR0cDovL3d3dy5waHAubmV0L2xpY2Vuc2UvM18wLnR4dC4gIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mDQogKiB0aGUgUEhQIExpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdlYiwgcGxlYXNlDQogKiBzZW5kIGEgbm90ZSB0byBsaWNlbnNlQHBocC5uZXQgc28gd2UgY2FuIG1haWwgeW91IGEgY29weSBpbW1lZGlhdGVseS4NCiAqDQogKiBAY2F0ZWdvcnkgICBJbWFnZQ0KICogQHBhY2thZ2UgICAgSW1hZ2VfVHJhbnNmb3JtDQogKiBAc3VicGFja2FnZSBJbWFnZV9UcmFuc2Zvcm1fRHJpdmVyX0ltYWdpY2syDQogKiBAYXV0aG9yICAgICBBbGFuIEtub3dsZXMgPGFsYW5AYWtia2hvbWUuY29tPg0KICogQGF1dGhvciAgICAgUGV0ZXIgQm93eWVyIDxwZXRlckBtYXBsZWRlc2lnbi5jby51az4NCiAqIEBhdXRob3IgICAgIFBoaWxpcHBlIEphdXNpb25zIDxQaGlsaXBwZS5KYXVzaW9uc0AxMWFiYWN1cy5jb20+DQogKiBAY29weXJpZ2h0ICAyMDAyLTIwMDUgVGhlIFBIUCBHcm91cA0KICogQGxpY2Vuc2UgICAgaHR0cDovL3d3dy5waHAubmV0L2xpY2Vuc2UvM18wLnR4dCAgUEhQIExpY2Vuc2UgMy4wDQogKiBAdmVyc2lvbiAgICBDVlM6ICRJZDogSW1hZ2ljazIucGhwIDI2NjkwNyAyMDA4LTEwLTAxIDIxOjEwOjUwWiBkdWZ1eiAkDQogKiBAbGluayAgICAgICBodHRwOi8vcGVhci5waHAubmV0L3BhY2thZ2UvSW1hZ2VfVHJhbnNmb3JtDQogKi8NCg0KcmVxdWlyZV9vbmNlICdJbWFnZS9UcmFuc2Zvcm0ucGhwJzsNCg0KLyoqDQogKiBpbWFnaWNrIFBFQ0wgZXh0ZW5zaW9uIGltcGxlbWVudGF0aW9uIGZvciBJbWFnZV9UcmFuc2Zvcm0gcGFja2FnZQ0KICoNCiAqIFdBUk5JTkc6IEZvciB2ZXJzaW9uIDwgMi4wIG9mIHRoZSBleHRlbnNpb24uIEZvciB2ZXJzaW9uIDIuMCBhbmQgdXAgdXNlDQogKiBJbWFnaWNrMyBkcml2ZXIgaW5zdGVhZA0KICoNCiAqIEBjYXRlZ29yeSAgIEltYWdlDQogKiBAcGFja2FnZSAgICBJbWFnZV9UcmFuc2Zvcm0NCiAqIEBzdWJwYWNrYWdlIEltYWdlX1RyYW5zZm9ybV9Ecml2ZXJfSW1hZ2ljazINCiAqIEBhdXRob3IgICAgIEFsYW4gS25vd2xlcyA8YWxhbkBha2JraG9tZS5jb20+DQogKiBAYXV0aG9yICAgICBQZXRlciBCb3d5ZXIgPHBldGVyQG1hcGxlZGVzaWduLmNvLnVrPg0KICogQGF1dGhvciAgICAgUGhpbGlwcGUgSmF1c2lvbnMgPFBoaWxpcHBlLkphdXNpb25zQDExYWJhY3VzLmNvbT4NCiAqIEBjb3B5cmlnaHQgIDIwMDItMjAwNSBUaGUgUEhQIEdyb3VwDQogKiBAbGljZW5zZSAgICBodHRwOi8vd3d3LnBocC5uZXQvbGljZW5zZS8zXzAudHh0ICBQSFAgTGljZW5zZSAzLjANCiAqIEB2ZXJzaW9uICAgIFJlbGVhc2U6IEBwYWNrYWdlX3ZlcnNpb25ADQogKiBAbGluayAgICAgICBodHRwOi8vcGVhci5waHAubmV0L3BhY2thZ2UvSW1hZ2VfVHJhbnNmb3JtDQogKiBAc2luY2UgICAgICBQSFAgNC4wDQogKi8NCmNsYXNzIEltYWdlX1RyYW5zZm9ybV9Ecml2ZXJfSW1hZ2ljazIgZXh0ZW5kcyBJbWFnZV9UcmFuc2Zvcm0NCnsNCiAgICAvKioNCiAgICAgKiBIYW5kbGVyIG9mIHRoZSBpbWFnaWNrIGltYWdlIHJlc3NvdXJjZQ0KICAgICAqIEB2YXIgYXJyYXkNCiAgICAgKi8NCiAgICB2YXIgJGltYWdlSGFuZGxlID0gbnVsbDsNCg0KICAgIC8qKg0KICAgICAqIEhhbmRsZXIgb2YgdGhlIGltYWdlIHJlc3NvdXJjZSBiZWZvcmUNCiAgICAgKiB0aGUgbGFzdCB0cmFuc2Zvcm1hdGlvbg0KICAgICAqIEB2YXIgYXJyYXkNCiAgICAgKi8NCiAgICB2YXIgJG9sZEltYWdlOw0KDQogICAgLyoqDQogICAgICogQHNlZSBfX2NvbnN0cnVjdCgpDQogICAgICovDQogICAgZnVuY3Rpb24gSW1hZ2VfVHJhbnNmb3JtX0RyaXZlcl9JbWFnaWNrMigpDQogICAgew0KICAgICAgICAkdGhpcy0+X19jb25zdHJ1Y3QoKTsNCiAgICB9IC8vIEVuZCBJbWFnZV9UcmFuc2Zvcm1fRHJpdmVyX0ltYWdpY2syDQoNCiAgICAvKioNCiAgICAgKiBAc2VlIGh0dHA6Ly93d3cuaW1hZ2VtYWdpY2sub3JnL3d3dy9mb3JtYXRzLmh0bWwNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpDQogICAgew0KICAgICAgICBpZiAoUEVBUjo6bG9hZEV4dGVuc2lvbignaW1hZ2ljaycpKSB7DQogICAgICAgICAgICBpbmNsdWRlICdJbWFnZS9UcmFuc2Zvcm0vRHJpdmVyL0ltYWdpY2svSW1hZ2VUeXBlcy5waHAnOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgJHRoaXMtPmlzRXJyb3IoUEVBUjo6cmFpc2VFcnJvcignQ291bGRuXCd0IGZpbmQgdGhlIGltYWdpY2sgZXh0ZW5zaW9uLicsDQogICAgICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX1VOU1VQUE9SVEVEKSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBMb2FkcyBhbiBpbWFnZQ0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkaW1hZ2UgZmlsZW5hbWUNCiAgICAgKiBAcmV0dXJuIGJvb2x8UEVBUl9FcnJvciBUUlVFIG9yIGEgUEVBUl9FcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIGZ1bmN0aW9uIGxvYWQoJGltYWdlKQ0KICAgIHsNCiAgICAgICAgaWYgKCEoJHRoaXMtPmltYWdlSGFuZGxlID0gaW1hZ2lja19yZWFkaW1hZ2UoJGltYWdlKSkpIHsNCiAgICAgICAgICAgICR0aGlzLT5mcmVlKCk7DQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnJhaXNlRXJyb3IoJ0NvdWxkblwndCBsb2FkIGltYWdlLicsDQogICAgICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX0lPKTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoaW1hZ2lja19pc2Vycm9yKCR0aGlzLT5pbWFnZUhhbmRsZSkpIHsNCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cmFpc2VFcnJvcignQ291bGRuXCd0IGxvYWQgaW1hZ2UuJywNCiAgICAgICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfSU8pOw0KICAgICAgICB9DQoNCiAgICAgICAgJHRoaXMtPmltYWdlID0gJGltYWdlOw0KICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPl9nZXRfaW1hZ2VfZGV0YWlscygkaW1hZ2UpOw0KICAgICAgICBpZiAoUEVBUjo6aXNFcnJvcigkcmVzdWx0KSkgew0KICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9IC8vIEVuZCBsb2FkDQoNCiAgICAvKioNCiAgICAgKiBSZXNpemUgQWN0aW9uDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ICAgJG5ld194ICAgTmV3IHdpZHRoDQogICAgICogQHBhcmFtIGludCAgICRuZXdfeSAgIE5ldyBoZWlnaHQNCiAgICAgKiBAcGFyYW0gbWl4ZWQgJG9wdGlvbnMgT3B0aW9uYWwgcGFyYW1ldGVycw0KICAgICAqDQogICAgICogQHJldHVybiBib29sfFBFQVJfRXJyb3IgVFJVRSBvciBQRUFSX0Vycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkDQogICAgICovDQogICAgZnVuY3Rpb24gX3Jlc2l6ZSgkbmV3X3gsICRuZXdfeSwgJG9wdGlvbnMgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgaWYgKCFpbWFnaWNrX3Jlc2l6ZSgkdGhpcy0+aW1hZ2VIYW5kbGUsICRuZXdfeCwgJG5ld195LCBJTUFHSUNLX0ZJTFRFUl9VTktOT1dOICwgMSwgJyEnKSkgew0KICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5yYWlzZUVycm9yKCdDb3VsZG5cJ3QgcmVzaXplIGltYWdlLicsDQogICAgICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX0ZBSUxFRCk7DQogICAgICAgIH0NCg0KICAgICAgICAkdGhpcy0+bmV3X3ggPSAkbmV3X3g7DQogICAgICAgICR0aGlzLT5uZXdfeSA9ICRuZXdfeTsNCiAgICAgICAgcmV0dXJuIHRydWU7DQoNCiAgICB9IC8vIEVuZCByZXNpemUNCg0KICAgIC8qKg0KICAgICAqIFJvdGF0ZXMgdGhlIGN1cnJlbnQgaW1hZ2UNCiAgICAgKiBOb3RlOiBjb2xvciBtYXNrIGFyZSBjdXJyZW50bHkgbm90IHN1cHBvcnRlZA0KICAgICAqDQogICAgICogQHBhcmFtICAgaW50ICAgICBSb3RhdGlvbiBhbmdsZSBpbiBkZWdyZWUNCiAgICAgKiBAcGFyYW0gICBhcnJheSAgIE5vIG9wdGlvbnMgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQNCiAgICAgKg0KICAgICAqIEByZXR1cm4gYm9vbHxQRUFSX0Vycm9yIFRSVUUgb3IgYSBQRUFSX0Vycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gcm90YXRlKCRhbmdsZSwgJG9wdGlvbnMgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgaWYgKCgkYW5nbGUgJSAzNjApID09IDApIHsNCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQogICAgICAgIGlmICghaW1hZ2lja19yb3RhdGUoJHRoaXMtPmltYWdlSGFuZGxlLCAkYW5nbGUpKSB7DQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnJhaXNlRXJyb3IoJ0Nhbm5vdCBjcmVhdGUgYSBuZXcgaW1hZ2ljayBpbWFnZSBmb3IgdGhlIHJvdGF0aW9uLicsDQogICAgICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX0ZBSUxFRCk7DQogICAgICAgIH0NCg0KICAgICAgICAkdGhpcy0+bmV3X3ggPSBpbWFnaWNrX2dldHdpZHRoKCR0aGlzLT5pbWFnZUhhbmRsZSk7DQogICAgICAgICR0aGlzLT5uZXdfeSA9IGltYWdpY2tfZ2V0aGVpZ2h0KCR0aGlzLT5pbWFnZUhhbmRsZSk7DQogICAgICAgIHJldHVybiB0cnVlOw0KDQogICAgfSAvLyBFbmQgcm90YXRlDQoNCiAgICAvKioNCiAgICAgKiBhZGRUZXh0DQogICAgICoNCiAgICAgKiBAcGFyYW0gICBhcnJheSAgIG9wdGlvbnMgICAgIEFycmF5IGNvbnRhaW5zIG9wdGlvbnMNCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KA0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0JyAgVGhlIHN0cmluZyB0byBkcmF3DQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3gnICAgICBIb3Jpem9udGFsIHBvc2l0aW9uDQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3knICAgICBWZXJ0aWNhbCBQb3NpdGlvbg0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb2xvcicgRm9udCBjb2xvcg0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250JyAgRm9udCB0byBiZSB1c2VkDQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpemUnICBTaXplIG9mIHRoZSBmb250cyBpbiBwaXhlbA0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXNpemVfZmlyc3QnICBUZWxsIGlmIHRoZSBpbWFnZSBoYXMgdG8gYmUgcmVzaXplZA0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgZHJhd2luZyB0aGUgdGV4dA0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KICAgICAqDQogICAgICogQHJldHVybiBib29sfFBFQVJfRXJyb3IgVFJVRSBvciBhIFBFQVJfRXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBhZGRUZXh0KCRwYXJhbXMpDQogICAgew0KICAgICAgICAkdGhpcy0+b2xkSW1hZ2U9ICR0aGlzLT5pbWFnZUhhbmRsZTsNCiAgICAgICAgJHBhcmFtcyA9IGFycmF5X21lcmdlKCR0aGlzLT5fZ2V0X2RlZmF1bHRfdGV4dF9wYXJhbXMoKSwgJHBhcmFtcyk7DQoNCiAgICAgICAgaWYgKGlzX2FycmF5KCRwYXJhbXNbJ2NvbG9yJ10pKSB7DQogICAgICAgICAgICAkcGFyYW1zWydjb2xvciddID0gJHRoaXMtPmNvbG9yYXJyYXkyY29sb3JoZXgoJHBhcmFtc1snY29sb3InXSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkcGFyYW1zWydjb2xvciddID0gc3RydG9sb3dlcigkcGFyYW1zWydjb2xvciddKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHN0YXRpYyAkY21kcyA9IGFycmF5KA0KICAgICAgICAgICAgJ3NldGZpbGxjb2xvcicgPT4gJ2NvbG9yJywNCiAgICAgICAgICAgICdzZXRmb250c2l6ZScgID0+ICdzaXplJywNCiAgICAgICAgICAgICdzZXRmb250ZmFjZScgID0+ICdmb250Jw0KICAgICAgICApOw0KICAgICAgICBpbWFnaWNrX2JlZ2luZHJhdygkdGhpcy0+aW1hZ2VIYW5kbGUpOw0KDQogICAgICAgIGZvcmVhY2ggKCRjbWRzIGFzICRjbWQgPT4gJHYpIHsNCiAgICAgICAgICAgIGlmICghY2FsbF91c2VyX2Z1bmMoJ2ltYWdpY2tfJyAuICRjbWQsICR0aGlzLT5pbWFnZUhhbmRsZSwgJHBhcmFtc1skdl0pKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5yYWlzZUVycm9yKCJQcm9ibGVtIHdpdGggYWRkaW5nIFRleHQ6Onskdn0gPSB7JHBhcmFtc1skdl19IiwNCiAgICAgICAgICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX0ZBSUxFRCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgaWYgKCFpbWFnaWNrX2RyYXdhbm5vdGF0aW9uKCR0aGlzLT5pbWFnZUhhbmRsZSwgJHBhcmFtc1sneCddLCAkcGFyYW1zWyd5J10sICRwYXJhbXNbJ3RleHQnXSkpIHsNCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cmFpc2VFcnJvcignUHJvYmxlbSB3aXRoIGFkZGluZyBUZXh0JywNCiAgICAgICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfRkFJTEVEKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiB0cnVlOw0KDQogICAgfSAvLyBFbmQgYWRkVGV4dA0KDQoNCiAgICAvKioNCiAgICAgKiBTYXZlcyB0aGUgaW1hZ2UgdG8gYSBmaWxlDQogICAgICoNCiAgICAgKiBAcGFyYW0gJGZpbGVuYW1lIHN0cmluZyB0aGUgbmFtZSBvZiB0aGUgZmlsZSB0byB3cml0ZSB0bw0KICAgICAqIEByZXR1cm4gYm9vbHxQRUFSX0Vycm9yIFRSVUUgb3IgYSBQRUFSX0Vycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gc2F2ZSgkZmlsZW5hbWUsICR0eXBlID0gJycsICRxdWFsaXR5ID0gbnVsbCkNCiAgICB7DQogICAgICAgICRvcHRpb25zID0gKGlzX2FycmF5KCRxdWFsaXR5KSkgPyAkcXVhbGl0eSA6IGFycmF5KCk7DQogICAgICAgIGlmIChpc19udW1lcmljKCRxdWFsaXR5KSkgew0KICAgICAgICAgICAgJG9wdGlvbnNbJ3F1YWxpdHknXSA9ICRxdWFsaXR5Ow0KICAgICAgICB9DQogICAgICAgICRxdWFsaXR5ID0gJHRoaXMtPl9nZXRPcHRpb24oJ3F1YWxpdHknLCAkb3B0aW9ucywgNzUpOw0KICAgICAgICBpbWFnaWNrX3NldGNvbXByZXNzaW9ucXVhbGl0eSgkdGhpcy0+aW1hZ2VIYW5kbGUsICRxdWFsaXR5KTsNCg0KICAgICAgICBpZiAoJHR5cGUgJiYgc3RyY2FzZWNtcCgkdHlwZSwgJHRoaXMtPnR5cGUpDQogICAgICAgICAgICAmJiAhaW1hZ2lja19jb252ZXJ0KCR0aGlzLT5pbWFnZUhhbmRsZSwgJHR5cGUpKSB7DQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnJhaXNlRXJyb3IoJ0NvdWxkblwndCBzYXZlIGltYWdlIHRvIGZpbGUgKGNvbnZlcnNpb24gZmFpbGVkKS4nLA0KICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9GQUlMRUQpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKCFpbWFnaWNrX3dyaXRlKCR0aGlzLT5pbWFnZUhhbmRsZSwgJGZpbGVuYW1lKSkgew0KICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5yYWlzZUVycm9yKCdDb3VsZG5cJ3Qgc2F2ZSBpbWFnZSB0byBmaWxlLicsDQogICAgICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX0lPKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmICghJHRoaXMtPmtlZXBfc2V0dGluZ3Nfb25fc2F2ZSkgew0KICAgICAgICAgICAgJHRoaXMtPmZyZWUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiB0cnVlOw0KDQogICAgfSAvLyBFbmQgc2F2ZQ0KDQogICAgLyoqDQogICAgICogRGlzcGxheXMgaW1hZ2Ugd2l0aG91dCBzYXZpbmcgYW5kIGxvc2UgY2hhbmdlcw0KICAgICAqDQogICAgICogVGhpcyBtZXRob2QgYWRkcyB0aGUgQ29udGVudC10eXBlIEhUVFAgaGVhZGVyDQogICAgICoNCiAgICAgKiBAcGFyYW0gc3RyaW5nIHR5cGUgKEpQRyxQTkcuLi4pOw0KICAgICAqIEBwYXJhbSBpbnQgcXVhbGl0eSA3NQ0KICAgICAqDQogICAgICogQHJldHVybiBib29sfFBFQVJfRXJyb3IgVFJVRSBvciBhIFBFQVJfRXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBkaXNwbGF5KCR0eXBlID0gJycsICRxdWFsaXR5ID0gbnVsbCkNCiAgICB7DQogICAgICAgICRvcHRpb25zID0gKGlzX2FycmF5KCRxdWFsaXR5KSkgPyAkcXVhbGl0eSA6IGFycmF5KCk7DQogICAgICAgIGlmIChpc19udW1lcmljKCRxdWFsaXR5KSkgew0KICAgICAgICAgICAgJG9wdGlvbnNbJ3F1YWxpdHknXSA9ICRxdWFsaXR5Ow0KICAgICAgICB9DQogICAgICAgICRxdWFsaXR5ID0gJHRoaXMtPl9nZXRPcHRpb24oJ3F1YWxpdHknLCAkb3B0aW9ucywgNzUpOw0KICAgICAgICBpbWFnaWNrX3NldGNvbXByZXNzaW9ucXVhbGl0eSgkdGhpcy0+aW1hZ2VIYW5kbGUsICRxdWFsaXR5KTsNCg0KICAgICAgICBpZiAoJHR5cGUgJiYgc3RyY2FzZWNtcCgkdHlwZSwgJHRoaXMtPnR5cGUpDQogICAgICAgICAgICAmJiAhaW1hZ2lja19jb252ZXJ0KCR0aGlzLT5pbWFnZUhhbmRsZSwgJHR5cGUpKSB7DQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnJhaXNlRXJyb3IoJ0NvdWxkblwndCBzYXZlIGltYWdlIHRvIGZpbGUgKGNvbnZlcnNpb24gZmFpbGVkKS4nLA0KICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9GQUlMRUQpOw0KICAgICAgICB9DQogICAgICAgIGlmICghKCRpbWFnZSA9IGltYWdpY2tfaW1hZ2UyYmxvYigkdGhpcy0+aW1hZ2VIYW5kbGUpKSkgew0KICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5yYWlzZUVycm9yKCdDb3VsZG5cJ3QgZGlzcGxheSBpbWFnZS4nLA0KICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9JTyk7DQogICAgICAgIH0NCiAgICAgICAgaGVhZGVyKCdDb250ZW50LXR5cGU6ICcgLiBpbWFnaWNrX2dldG1pbWV0eXBlKCR0aGlzLT5pbWFnZUhhbmRsZSkpOw0KICAgICAgICBlY2hvICRpbWFnZTsNCiAgICAgICAgJHRoaXMtPmZyZWUoKTsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQWRqdXN0cyB0aGUgaW1hZ2UgZ2FtbWENCiAgICAgKg0KICAgICAqIEBwYXJhbSBmbG9hdCAkb3V0cHV0Z2FtbWENCiAgICAgKiBAcmV0dXJuIGJvb2x8UEVBUl9FcnJvciBUUlVFIG9yIGEgUEVBUl9FcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIGZ1bmN0aW9uIGdhbW1hKCRvdXRwdXRnYW1tYSA9IDEuMCkgew0KICAgICAgICBpZiAoJG91dHB1dGdhbW1hICE9IDEuMCkgew0KICAgICAgICAgICAgaW1hZ2lja19nYW1tYSgkdGhpcy0+aW1hZ2VIYW5kbGUsICRvdXRwdXRnYW1tYSk7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ3JvcHMgdGhlIGltYWdlDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50IHdpZHRoIENyb3BwZWQgaW1hZ2Ugd2lkdGgNCiAgICAgKiBAcGFyYW0gaW50IGhlaWdodCBDcm9wcGVkIGltYWdlIGhlaWdodA0KICAgICAqIEBwYXJhbSBpbnQgeCBYLWNvb3JkaW5hdGUgdG8gY3JvcCBhdA0KICAgICAqIEBwYXJhbSBpbnQgeSBZLWNvb3JkaW5hdGUgdG8gY3JvcCBhdA0KICAgICAqDQogICAgICogQHJldHVybiBib29sfFBFQVJfRXJyb3IgVFJVRSBvciBhIFBFQVJfRXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBjcm9wKCR3aWR0aCwgJGhlaWdodCwgJHggPSAwLCAkeSA9IDApDQogICAgew0KICAgICAgICAvLyBTYW5pdHkgY2hlY2sNCiAgICAgICAgaWYgKCEkdGhpcy0+aW50ZXJzZWN0cygkd2lkdGgsICRoZWlnaHQsICR4LCAkeSkpIHsNCiAgICAgICAgICAgIHJldHVybiBQRUFSOjpyYWlzZUVycm9yKCdOb3RoaW5nIHRvIGNyb3AnLCBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfT1VUT0ZCT1VORCk7DQogICAgICAgIH0NCiAgICAgICAgaWYgKCFpbWFnaWNrX2Nyb3AoJHRoaXMtPmltYWdlSGFuZGxlLCAkeCwgJHksICR3aWR0aCwgJGhlaWdodCkpIHsNCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cmFpc2VFcnJvcignQ291bGRuXCd0IGNyb3AgaW1hZ2UuJywNCiAgICAgICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfRkFJTEVEKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIEkgdGhpbmsgdGhhdCBzZXR0aW5nIGltZ194L3kgaXMgd3JvbmcsIGJ1dCBzY2FsZUJ5TGVuZ3RoKCkgJiBmcmllbmRzDQogICAgICAgIC8vIG1lc3MgdXAgdGhlIGFzcGVjdCBhZnRlciBhIGNyb3Agb3RoZXJ3aXNlLg0KICAgICAgICAkdGhpcy0+bmV3X3ggPSAkd2lkdGg7DQogICAgICAgICR0aGlzLT5uZXdfeSA9ICRoZWlnaHQ7DQoNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogSG9yaXpvbnRhbCBtaXJyb3JpbmcNCiAgICAgKg0KICAgICAqIEByZXR1cm4gYm9vbHxQRUFSX0Vycm9yIFRSVUUgb3IgYSBQRUFSX0Vycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gbWlycm9yKCkNCiAgICB7DQogICAgICAgIGlmICghaW1hZ2lja19mbG9wKCR0aGlzLT5pbWFnZUhhbmRsZSkpIHsNCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cmFpc2VFcnJvcignQ291bGRuXCd0IG1pcnJvciB0aGUgaW1hZ2UuJywNCiAgICAgICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfRkFJTEVEKTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBWZXJ0aWNhbCBtaXJyb3JpbmcNCiAgICAgKg0KICAgICAqIEByZXR1cm4gYm9vbHxQRUFSX0Vycm9yIFRSVUUgb3IgYSBQRUFSX0Vycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gZmxpcCgpDQogICAgew0KICAgICAgICBpZiAoIWltYWdpY2tfZmxpcCgkdGhpcy0+aW1hZ2VIYW5kbGUpKSB7DQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnJhaXNlRXJyb3IoJ0NvdWxkblwndCBmbGlwIHRoZSBpbWFnZS4nLA0KICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9GQUlMRUQpOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIERlc3Ryb3kgaW1hZ2UgaGFuZGxlDQogICAgICoNCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIGZ1bmN0aW9uIGZyZWUoKQ0KICAgIHsNCiAgICAgICAgaWYgKGlzX3Jlc291cmNlKCR0aGlzLT5pbWFnZUhhbmRsZSkpIHsNCiAgICAgICAgICAgIGltYWdpY2tfZGVzdHJveWhhbmRsZSgkdGhpcy0+aW1hZ2VIYW5kbGUpOw0KICAgICAgICB9DQogICAgICAgICR0aGlzLT5pbWFnZUhhbmRsZSA9IG51bGw7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUmFpc2VFcnJvciBNZXRob2QgLSBzaG93cyBpbWFnaWNrIFJhdyBlcnJvcnMuDQogICAgICoNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtZXNzYWdlIG1lc3NhZ2UgPSBwcmVmaXhlZCBtZXNzYWdlLi4NCiAgICAgKiBAcGFyYW0gaW50ICAgICRjb2RlIGVycm9yIGNvZGUNCiAgICAgKiBAcmV0dXJuIFBFQVIgZXJyb3Igb2JqZWN0DQogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQNCiAgICAgKi8NCiAgICBmdW5jdGlvbiByYWlzZUVycm9yKCRtZXNzYWdlLCAkY29kZSA9IDApDQogICAgew0KICAgICAgICBpZiAoaXNfcmVzb3VyY2UoJHRoaXMtPmltYWdlSGFuZGxlKSkgew0KICAgICAgICAgICAgJG1lc3NhZ2UgLj0gIlxuUmVhc29uOiAiDQogICAgICAgICAgICAgICAgICAgICAgICAuICBpbWFnaWNrX2ZhaWxlZHJlYXNvbigkdGhpcy0+aW1hZ2VIYW5kbGUpDQogICAgICAgICAgICAgICAgICAgICAgICAuICJcbkRlc2NyaXB0aW9uOiAiDQogICAgICAgICAgICAgICAgICAgICAgICAuIGltYWdpY2tfZmFpbGVkZGVzY3JpcHRpb24oJHRoaXMtPmltYWdlSGFuZGxlKTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcigkbWVzc2FnZSwgJGNvZGUpOw0KICAgIH0NCg0KfSAvLyBFbmQgY2xhc3MgSW1hZ2VfVHJhbnNmb3JtX0RyaXZlcl9JbWFnaWNrMg==]]></data>
	</file>
	<file>
	  <filename>/lib/external/Image/~backup/Transform/Driver/Imagick3.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyogdmltOiBzZXQgZXhwYW5kdGFiIHRhYnN0b3A9NCBzaGlmdHdpZHRoPTQ6ICovDQoNCi8qKg0KICogaW1hZ2ljayBQRUNMIGV4dGVuc2lvbiBpbXBsZW1lbnRhdGlvbiBmb3IgSW1hZ2VfVHJhbnNmb3JtIHBhY2thZ2UNCiAqDQogKiBQSFAgdmVyc2lvbiA1DQogKg0KICogTElDRU5TRTogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHZlcnNpb24gMy4wIG9mIHRoZSBQSFAgbGljZW5zZQ0KICogdGhhdCBpcyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhlIGZvbGxvd2luZyBVUkk6DQogKiBodHRwOi8vd3d3LnBocC5uZXQvbGljZW5zZS8zXzAudHh0LiAgSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YNCiAqIHRoZSBQSFAgTGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0byBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd2ViLCBwbGVhc2UNCiAqIHNlbmQgYSBub3RlIHRvIGxpY2Vuc2VAcGhwLm5ldCBzbyB3ZSBjYW4gbWFpbCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5Lg0KICoNCiAqIEBjYXRlZ29yeSAgIEltYWdlDQogKiBAcGFja2FnZSAgICBJbWFnZV9UcmFuc2Zvcm0NCiAqIEBzdWJwYWNrYWdlIEltYWdlX1RyYW5zZm9ybV9Ecml2ZXJfSW1hZ2ljazMNCiAqIEBhdXRob3IgICAgIFBoaWxpcHBlIEphdXNpb25zIDxQaGlsaXBwZS5KYXVzaW9uc0AxMWFiYWN1cy5jb20+DQogKiBAY29weXJpZ2h0ICAyMDA3IFRoZSBQSFAgR3JvdXANCiAqIEBsaWNlbnNlICAgIGh0dHA6Ly93d3cucGhwLm5ldC9saWNlbnNlLzNfMC50eHQgIFBIUCBMaWNlbnNlIDMuMA0KICogQHZlcnNpb24gICAgQ1ZTOiAkSWQ6IEltYWdpY2szLnBocCAyNjY5MDggMjAwOC0xMC0wMSAyMToxMTowN1ogZHVmdXogJA0KICogQGxpbmsgICAgICAgaHR0cDovL3BlYXIucGhwLm5ldC9wYWNrYWdlL0ltYWdlX1RyYW5zZm9ybQ0KICovDQoNCnJlcXVpcmVfb25jZSAnSW1hZ2UvVHJhbnNmb3JtLnBocCc7DQoNCi8qKg0KICogaW1hZ2ljayBQRUNMIGV4dGVuc2lvbiBpbXBsZW1lbnRhdGlvbiBmb3IgSW1hZ2VfVHJhbnNmb3JtIHBhY2thZ2UNCiAqDQogKiBGb3IgdXNlIG9mIHZlcnNpb24gMisgb2YgdGhlIGV4dGVuc2lvbi4gRm9yIHZlcnNpb24gMC45LiogdXNlIEltYWdpY2syIGRyaXZlcg0KICogaW5zdGVhZA0KICoNCiAqIEBjYXRlZ29yeSAgIEltYWdlDQogKiBAcGFja2FnZSAgICBJbWFnZV9UcmFuc2Zvcm0NCiAqIEBzdWJwYWNrYWdlIEltYWdlX1RyYW5zZm9ybV9Ecml2ZXJfSW1hZ2ljazMNCiAqIEBhdXRob3IgICAgIFBoaWxpcHBlIEphdXNpb25zIDxQaGlsaXBwZS5KYXVzaW9uc0AxMWFiYWN1cy5jb20+DQogKiBAY29weXJpZ2h0ICAyMDA3IFRoZSBQSFAgR3JvdXANCiAqIEBsaWNlbnNlICAgIGh0dHA6Ly93d3cucGhwLm5ldC9saWNlbnNlLzNfMC50eHQgIFBIUCBMaWNlbnNlIDMuMA0KICogQHZlcnNpb24gICAgUmVsZWFzZTogQHBhY2thZ2VfdmVyc2lvbkANCiAqIEBsaW5rICAgICAgIGh0dHA6Ly9wZWFyLnBocC5uZXQvcGFja2FnZS9JbWFnZV9UcmFuc2Zvcm0NCiAqIEBzaW5jZSAgICAgIDAuOS4yDQogKiBAc2luY2UgICAgICBQSFAgNS4xLjMNCiAqIEBzaW5jZSAgICAgIFBFQ0wgSW1hZ2ljayAyLjAuMGExDQogKi8NCmNsYXNzIEltYWdlX1RyYW5zZm9ybV9Ecml2ZXJfSW1hZ2ljazMgZXh0ZW5kcyBJbWFnZV9UcmFuc2Zvcm0NCnsNCiAgICAvKioNCiAgICAgKiBJbnN0YW5jZSBvZiBpbWFnaWNrDQogICAgICogQHZhciBJbWFnaWNrDQogICAgICovDQogICAgdmFyICRpbWFnaWNrID0gbnVsbDsNCg0KICAgIC8qKg0KICAgICAqIEhhbmRsZXIgb2YgdGhlIGltYWdlIHJlc291cmNlIGJlZm9yZQ0KICAgICAqIHRoZSBsYXN0IHRyYW5zZm9ybWF0aW9uDQogICAgICogQHZhciBhcnJheQ0KICAgICAqLw0KICAgIHZhciAkb2xkSW1hZ2U7DQoNCiAgICAvKioNCiAgICAgKiBAc2VlIF9fY29uc3RydWN0KCkNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBJbWFnZV9UcmFuc2Zvcm1fRHJpdmVyX0ltYWdpY2szKCkNCiAgICB7DQogICAgICAgICR0aGlzLT5fX2NvbnN0cnVjdCgpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIEBzZWUgaHR0cDovL3d3dy5pbWFnZW1hZ2ljay5vcmcvd3d3L2Zvcm1hdHMuaHRtbA0KICAgICAqLw0KICAgIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkNCiAgICB7DQogICAgICAgIGlmIChQRUFSOjpsb2FkRXh0ZW5zaW9uKCdpbWFnaWNrJykpIHsNCiAgICAgICAgICAgIGluY2x1ZGUgJ0ltYWdlL1RyYW5zZm9ybS9Ecml2ZXIvSW1hZ2ljay9JbWFnZVR5cGVzLnBocCc7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkdGhpcy0+aXNFcnJvcihQRUFSOjpyYWlzZUVycm9yKCdDb3VsZCBub3QgZmluZCB0aGUgaW1hZ2ljayBleHRlbnNpb24uJywNCiAgICAgICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfVU5TVVBQT1JURUQpKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIExvYWRzIGFuIGltYWdlDQogICAgICoNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRpbWFnZSBmaWxlbmFtZQ0KICAgICAqDQogICAgICogQHJldHVybiBib29sfFBFQVJfRXJyb3IgVFJVRSBvciBhIFBFQVJfRXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBsb2FkKCRpbWFnZSkNCiAgICB7DQogICAgICAgICR0aGlzLT5mcmVlKCk7DQogICAgICAgICR0aGlzLT5pbWFnaWNrID0gbmV3IEltYWdpY2soKTsNCiAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICR0aGlzLT5pbWFnaWNrLT5yZWFkSW1hZ2UoJGltYWdlKTsNCg0KICAgICAgICB9IGNhdGNoIChJbWFnaWNrRXhjZXB0aW9uICRlKSB7DQogICAgICAgICAgICAkdGhpcy0+ZnJlZSgpOw0KICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5yYWlzZUVycm9yKCdDb3VsZCBub3QgbG9hZCBpbWFnZTonLiRlLT5nZXRNZXNzYWdlKCksDQogICAgICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX0lPKTsNCiAgICAgICAgfQ0KDQogICAgICAgICR0aGlzLT5pbWFnZSA9ICRpbWFnZTsNCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5fZ2V0X2ltYWdlX2RldGFpbHMoJGltYWdlKTsNCiAgICAgICAgaWYgKFBFQVI6OmlzRXJyb3IoJHJlc3VsdCkpIHsNCiAgICAgICAgICAgIHJldHVybiAkcmVzdWx0Ow0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUmVzaXplcyB0aGUgaW1hZ2UNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdfeCAgIE5ldyB3aWR0aA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdfeSAgIE5ldyBoZWlnaHQNCiAgICAgKiBAcGFyYW0gbWl4ZWQgJG9wdGlvbnMgT3B0aW9uYWwgcGFyYW1ldGVycw0KICAgICAqIDx1bD4NCiAgICAgKiAgPGxpPidzY2FsZU1ldGhvZCc6ICJwaXhlbCIgb3IgInNtb290aCI8L2xpPg0KICAgICAqIDwvdWw+DQogICAgICoNCiAgICAgKiBAcmV0dXJuIGJvb2x8UEVBUl9FcnJvciBUUlVFIG9yIFBFQVJfRXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBfcmVzaXplKCRuZXdfeCwgJG5ld195LCAkb3B0aW9ucyA9IG51bGwpDQogICAgew0KICAgICAgICB0cnkgew0KICAgICAgICAgICAgJHNjYWxlTWV0aG9kID0gJHRoaXMtPl9nZXRPcHRpb24oJ3NjYWxlTWV0aG9kJywgJG9wdGlvbnMsICdzbW9vdGgnKTsNCiAgICAgICAgICAgICRibHVyID0gKCRzY2FsZU1ldGhvZCA9PSAncGl4ZWwnKSA/IDAgOiAxOw0KICAgICAgICAgICAgJHRoaXMtPmltYWdpY2stPnJlc2l6ZUltYWdlKCRuZXdfeCwgJG5ld195LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdpY2s6OkZJTFRFUl9VTkRFRklORUQsICRibHVyKTsNCg0KICAgICAgICB9IGNhdGNoIChJbWFnaWNrRXhjZXB0aW9uICRlKSB7DQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnJhaXNlRXJyb3IoJ0NvdWxkIG5vdCByZXNpemUgaW1hZ2UuJywNCiAgICAgICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfRkFJTEVEKTsNCiAgICAgICAgfQ0KDQogICAgICAgICR0aGlzLT5uZXdfeCA9ICRuZXdfeDsNCiAgICAgICAgJHRoaXMtPm5ld195ID0gJG5ld195Ow0KICAgICAgICByZXR1cm4gdHJ1ZTsNCg0KICAgIH0gLy8gRW5kIHJlc2l6ZQ0KDQogICAgLyoqDQogICAgICogUm90YXRlcyB0aGUgY3VycmVudCBpbWFnZQ0KICAgICAqDQogICAgICogQHBhcmFtIGZsb2F0ICRhbmdsZSBSb3RhdGlvbiBhbmdsZSBpbiBkZWdyZWUNCiAgICAgKiBAcGFyYW0gYXJyYXkgJG9wdGlvbnMgU3VwcG9ydGVkIG9wdGlvbnM6DQogICAgICogPHVsPg0KICAgICAqICA8bGk+J2NhbnZhc0NvbG9yJyA6IGFycmF5KHIgLGcsIGIpLCBuYW1lZCBjb2xvciBvciAjcnJnZ2JiPC9saT4NCiAgICAgKiA8L3VsPg0KICAgICAqDQogICAgICogQHJldHVybiBib29sfFBFQVJfRXJyb3IgVFJVRSBvciBhIFBFQVJfRXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiByb3RhdGUoJGFuZ2xlLCAkb3B0aW9ucyA9IG51bGwpDQogICAgew0KICAgICAgICBpZiAoKCRhbmdsZSAlIDM2MCkgPT0gMCkgew0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0NCiAgICAgICAgJGNvbG9yID0gJHRoaXMtPl9nZXRDb2xvcignY2FudmFzQ29sb3InLCAkb3B0aW9ucywgYXJyYXkoMjU1LCAyNTUsIDI1NSkpOw0KICAgICAgICBpZiAoaXNfYXJyYXkoJGNvbG9yKSkgew0KICAgICAgICAgICAgJGNvbG9yID0gJHRoaXMtPmNvbG9yYXJyYXkyY29sb3JoZXgoJGNvbG9yKTsNCiAgICAgICAgfQ0KICAgICAgICAkcGl4ZWwgPSBuZXcgSW1hZ2lja1BpeGVsKCRjb2xvcik7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICAkdGhpcy0+aW1hZ2ljay0+cm90YXRlSW1hZ2UoJHBpeGVsLCAkYW5nbGUpOw0KDQogICAgICAgIH0gY2F0Y2ggKEltYWdpY2tFeGNlcHRpb24gJGUpIHsNCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cmFpc2VFcnJvcignQ2Fubm90IGNyZWF0ZSBhIG5ldyBpbWFnaWNrIGltYWdlIGZvciB0aGUgcm90YXRpb246ICcuJGUtPmdldE1lc3NhZ2UoKSwNCiAgICAgICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfRkFJTEVEKTsNCiAgICAgICAgfQ0KICAgICAgICAkaW5mbyA9ICR0aGlzLT5pbWFnaWNrLT5nZXRJbWFnZUdlb21ldHJ5KCk7DQogICAgICAgICR0aGlzLT5uZXdfeCA9ICRpbmZvWyd3aWR0aCddOw0KICAgICAgICAkdGhpcy0+bmV3X3kgPSAkaW5mb1snaGVpZ2h0J107DQogICAgICAgIHJldHVybiB0cnVlOw0KDQogICAgfSAvLyBFbmQgcm90YXRlDQoNCiAgICAvKioNCiAgICAgKiBBZGRzIHRleHQgdG8gdGhlIGltYWdlDQogICAgICoNCiAgICAgKiBAcGFyYW0gICBhcnJheSAgICRwYXJhbXMgQXJyYXkgY29udGFpbnMgb3B0aW9uczoNCiAgICAgKiA8dWw+DQogICAgICogIDxsaT4ndGV4dCcgKHN0cmluZykgVGhlIHN0cmluZyB0byBkcmF3PC9saT4NCiAgICAgKiAgPGxpPid4JyAgICAoaW50ZWdlcikgSG9yaXpvbnRhbCBwb3NpdGlvbjwvbGk+DQogICAgICogIDxsaT4neScgICAgKGludGVnZXIpIFZlcnRpY2FsIFBvc2l0aW9uPC9saT4NCiAgICAgKiAgPGxpPidDb2xvcicgKG1peGVkKSBGb250IGNvbG9yPC9saT4NCiAgICAgKiAgPGxpPidmb250JyAoc3RyaW5nKSBGb250IHRvIGJlIHVzZWQ8L2xpPg0KICAgICAqICA8bGk+J3NpemUnIChpbnRlZ2VyKSBTaXplIG9mIHRoZSBmb250cyBpbiBwaXhlbDwvbGk+DQogICAgICogPC91bD4NCiAgICAgKg0KICAgICAqIEByZXR1cm4gYm9vbHxQRUFSX0Vycm9yIFRSVUUgb3IgYSBQRUFSX0Vycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gYWRkVGV4dCgkcGFyYW1zKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPm9sZEltYWdlID0gY2xvbmUgJHRoaXMtPmltYWdpY2s7DQogICAgICAgICRwYXJhbXMgPSBhcnJheV9tZXJnZSgkdGhpcy0+X2dldF9kZWZhdWx0X3RleHRfcGFyYW1zKCksICRwYXJhbXMpOw0KDQogICAgICAgIGlmIChpc19hcnJheSgkcGFyYW1zWydjb2xvciddKSkgew0KICAgICAgICAgICAgJHBhcmFtc1snY29sb3InXSA9ICR0aGlzLT5jb2xvcmFycmF5MmNvbG9yaGV4KCRwYXJhbXNbJ2NvbG9yJ10pOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgJHBhcmFtc1snY29sb3InXSA9IHN0cnRvbG93ZXIoJHBhcmFtc1snY29sb3InXSk7DQogICAgICAgIH0NCg0KICAgICAgICBzdGF0aWMgJGNtZHMgPSBhcnJheSgNCiAgICAgICAgICAgICdzZXRGaWxsQ29sb3InID0+ICdjb2xvcicsDQogICAgICAgICAgICAnc2V0Rm9udFNpemUnICA9PiAnc2l6ZScsDQogICAgICAgICAgICAnc2V0Rm9udEZhY2UnICA9PiAnZm9udCcNCiAgICAgICAgKTsNCiAgICAgICAgJHRoaXMtPmltYWdpY2stPmJlZ2luRHJhdygpOw0KDQogICAgICAgIGZvcmVhY2ggKCRjbWRzIGFzICRjbWQgPT4gJHYpIHsNCiAgICAgICAgICAgIGlmICghJHRoaXMtPmltYWdpY2stPiRjbWQoJHBhcmFtc1skdl0pKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5yYWlzZUVycm9yKCJQcm9ibGVtIHdpdGggYWRkaW5nIFRleHQ6Onskdn0gPSB7JHBhcmFtc1skdl19IiwNCiAgICAgICAgICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX0ZBSUxFRCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgaWYgKCEkdGhpcy0+aW1hZ2ljay0+ZHJhd0Fubm90YXRpb24oJHBhcmFtc1sneCddLCAkcGFyYW1zWyd5J10sICRwYXJhbXNbJ3RleHQnXSkpIHsNCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cmFpc2VFcnJvcignUHJvYmxlbSB3aXRoIGFkZGluZyBUZXh0JywNCiAgICAgICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfRkFJTEVEKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiB0cnVlOw0KDQogICAgfSAvLyBFbmQgYWRkVGV4dA0KDQoNCiAgICAvKioNCiAgICAgKiBTYXZlcyB0aGUgaW1hZ2UgdG8gYSBmaWxlDQogICAgICoNCiAgICAgKiBAcGFyYW0gJGZpbGVuYW1lIHN0cmluZyB0aGUgbmFtZSBvZiB0aGUgZmlsZSB0byB3cml0ZSB0bw0KICAgICAqDQogICAgICogQHJldHVybiBib29sfFBFQVJfRXJyb3IgVFJVRSBvciBhIFBFQVJfRXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBzYXZlKCRmaWxlbmFtZSwgJHR5cGUgPSAnJywgJHF1YWxpdHkgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgJG9wdGlvbnMgPSAoaXNfYXJyYXkoJHF1YWxpdHkpKSA/ICRxdWFsaXR5IDogYXJyYXkoKTsNCiAgICAgICAgaWYgKGlzX251bWVyaWMoJHF1YWxpdHkpKSB7DQogICAgICAgICAgICAkb3B0aW9uc1sncXVhbGl0eSddID0gJHF1YWxpdHk7DQogICAgICAgIH0NCiAgICAgICAgJHF1YWxpdHkgPSAkdGhpcy0+X2dldE9wdGlvbigncXVhbGl0eScsICRvcHRpb25zLCA3NSk7DQogICAgICAgICR0aGlzLT5pbWFnaWNrLT5zZXRJbWFnZUNvbXByZXNzaW9uKCRxdWFsaXR5KTsNCg0KICAgICAgICBpZiAoJHR5cGUgJiYgc3RyY2FzZWNtcCgkdHlwZSwgJHRoaXMtPnR5cGUpKSB7DQogICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICR0aGlzLT5pbWFnaWNrLT5zZXRJbWFnZUZvcm1hdCgkdHlwZSk7DQoNCiAgICAgICAgICAgIH0gY2F0Y2ggKEltYWdpY2tFeGNlcHRpb24gJGUpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPnJhaXNlRXJyb3IoJ0NvdWxkIG5vdCBzYXZlIGltYWdlIHRvIGZpbGUgKGNvbnZlcnNpb24gZmFpbGVkKS4nLA0KICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9GQUlMRUQpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICR0aGlzLT5pbWFnaWNrLT53cml0ZUltYWdlKCRmaWxlbmFtZSk7DQoNCiAgICAgICAgfSBjYXRjaCAoSW1hZ2lja0V4Y2VwdGlvbiAkZSkgew0KICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5yYWlzZUVycm9yKCdDb3VsZCBub3Qgc2F2ZSBpbWFnZSB0byBmaWxlOiAnLiRlLT5nZXRNZXNzYWdlKCksDQogICAgICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX0lPKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmICghJHRoaXMtPmtlZXBfc2V0dGluZ3Nfb25fc2F2ZSkgew0KICAgICAgICAgICAgJHRoaXMtPmZyZWUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiB0cnVlOw0KDQogICAgfSAvLyBFbmQgc2F2ZQ0KDQogICAgLyoqDQogICAgICogRGlzcGxheXMgaW1hZ2Ugd2l0aG91dCBzYXZpbmcgYW5kIGxvc2UgY2hhbmdlcw0KICAgICAqDQogICAgICogVGhpcyBtZXRob2QgYWRkcyB0aGUgQ29udGVudC10eXBlIEhUVFAgaGVhZGVyDQogICAgICoNCiAgICAgKiBAcGFyYW0gc3RyaW5nIHR5cGUgKEpQRyxQTkcuLi4pOw0KICAgICAqIEBwYXJhbSBpbnQgcXVhbGl0eSA3NQ0KICAgICAqDQogICAgICogQHJldHVybiBib29sfFBFQVJfRXJyb3IgVFJVRSBvciBhIFBFQVJfRXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBkaXNwbGF5KCR0eXBlID0gJycsICRxdWFsaXR5ID0gbnVsbCkNCiAgICB7DQogICAgICAgICRvcHRpb25zID0gKGlzX2FycmF5KCRxdWFsaXR5KSkgPyAkcXVhbGl0eSA6IGFycmF5KCk7DQogICAgICAgIGlmIChpc19udW1lcmljKCRxdWFsaXR5KSkgew0KICAgICAgICAgICAgJG9wdGlvbnNbJ3F1YWxpdHknXSA9ICRxdWFsaXR5Ow0KICAgICAgICB9DQogICAgICAgICRxdWFsaXR5ID0gJHRoaXMtPl9nZXRPcHRpb24oJ3F1YWxpdHknLCAkb3B0aW9ucywgNzUpOw0KICAgICAgICAkdGhpcy0+aW1hZ2ljay0+c2V0SW1hZ2VDb21wcmVzc2lvbigkcXVhbGl0eSk7DQoNCiAgICAgICAgaWYgKCR0eXBlICYmIHN0cmNhc2VjbXAoJHR5cGUsICR0aGlzLT50eXBlKSkgew0KICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+aW1hZ2ljay0+c2V0SW1hZ2VGb3JtYXQoJHR5cGUpOw0KDQogICAgICAgICAgICB9IGNhdGNoIChJbWFnaWNrRXhjZXB0aW9uICRlKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5yYWlzZUVycm9yKCdDb3VsZCBub3Qgc2F2ZSBpbWFnZSB0byBmaWxlIChjb252ZXJzaW9uIGZhaWxlZCkuJywNCiAgICAgICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfRkFJTEVEKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICB0cnkgew0KICAgICAgICAgICAgJGltYWdlID0gJHRoaXMtPmltYWdpY2stPmdldEltYWdlQmxvYigpOw0KDQogICAgICAgIH0gY2F0Y2ggKEltYWdpY2tFeGNlcHRpb24gJGUpIHsNCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cmFpc2VFcnJvcignQ291bGQgbm90IGRpc3BsYXkgaW1hZ2UuJywNCiAgICAgICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfSU8pOw0KICAgICAgICB9DQogICAgICAgIGhlYWRlcignQ29udGVudC10eXBlOiAnIC4gJHRoaXMtPmdldE1pbWVUeXBlKCR0eXBlKSk7DQogICAgICAgIGVjaG8gJGltYWdlOw0KICAgICAgICAkdGhpcy0+ZnJlZSgpOw0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBBZGp1c3RzIHRoZSBpbWFnZSBnYW1tYQ0KICAgICAqDQogICAgICogQHBhcmFtIGZsb2F0ICRvdXRwdXRnYW1tYQ0KICAgICAqIEByZXR1cm4gYm9vbHxQRUFSX0Vycm9yIFRSVUUgb3IgYSBQRUFSX0Vycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gZ2FtbWEoJG91dHB1dGdhbW1hID0gMS4wKSB7DQogICAgICAgIGlmICgkb3V0cHV0Z2FtbWEgIT0gMS4wKSB7DQogICAgICAgICAgICAkdGhpcy0+aW1hZ2ljay0+c2V0SW1hZ2VHYW1tYSgkb3V0cHV0Z2FtbWEpOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIENyb3BzIHRoZSBpbWFnZQ0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJHdpZHRoIENyb3BwZWQgaW1hZ2Ugd2lkdGgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkaGVpZ2h0IENyb3BwZWQgaW1hZ2UgaGVpZ2h0DQogICAgICogQHBhcmFtIGludGVnZXIgJHggWC1jb29yZGluYXRlIHRvIGNyb3AgYXQNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkeSBZLWNvb3JkaW5hdGUgdG8gY3JvcCBhdA0KICAgICAqDQogICAgICogQHJldHVybiBib29sfFBFQVJfRXJyb3IgVFJVRSBvciBhIFBFQVJfRXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBjcm9wKCR3aWR0aCwgJGhlaWdodCwgJHggPSAwLCAkeSA9IDApDQogICAgew0KICAgICAgICAvLyBTYW5pdHkgY2hlY2sNCiAgICAgICAgaWYgKCEkdGhpcy0+aW50ZXJzZWN0cygkd2lkdGgsICRoZWlnaHQsICR4LCAkeSkpIHsNCiAgICAgICAgICAgIHJldHVybiBQRUFSOjpyYWlzZUVycm9yKCdOb3RoaW5nIHRvIGNyb3AnLCBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfT1VUT0ZCT1VORCk7DQogICAgICAgIH0NCiAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICR0aGlzLT5pbWFnaWNrLT5jcm9wSW1hZ2UoJHdpZHRoLCAkaGVpZ2h0LCAkeCwgJHkpOw0KDQogICAgICAgIH0gY2F0Y2ggKEltYWdpY2tFeGNlcHRpb24gJGUpIHsNCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cmFpc2VFcnJvcignQ291bGQgbm90IGNyb3AgaW1hZ2UnLA0KICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9GQUlMRUQpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gSSB0aGluayB0aGF0IHNldHRpbmcgaW1nX3gveSBpcyB3cm9uZywgYnV0IHNjYWxlQnlMZW5ndGgoKSAmIGZyaWVuZHMNCiAgICAgICAgLy8gbWVzcyB1cCB0aGUgYXNwZWN0IGFmdGVyIGEgY3JvcCBvdGhlcndpc2UuDQogICAgICAgICR0aGlzLT5uZXdfeCA9ICR3aWR0aDsNCiAgICAgICAgJHRoaXMtPm5ld195ID0gJGhlaWdodDsNCg0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBDb252ZXJ0cyB0aGUgaW1hZ2UgdG8gZ3JleXNjYWxlDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGJvb2x8UEVBUl9FcnJvciBUUlVFIG9yIGEgUEVBUl9FcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIGZ1bmN0aW9uIGdyZXlzY2FsZSgpIHsNCiAgICAgICAgJHRoaXMtPmltYWdpY2stPnNldEltYWdlVHlwZShJbWFnaWNrOjpJTUdUWVBFX0dSQVlTQ0FMRSk7DQogICAgICAgIC8qJHRoaXMtPmltYWdpY2stPnNldEltYWdlQ29sb3JTcGFjZShJbWFnaWNrOjpDT0xPUlNQQUNFX0dSQVkpOw0KICAgICAgICAkdGhpcy0+aW1hZ2ljay0+c2V0SW1hZ2VEZXB0aCg4KTsNCiAgICAgICAgJHRoaXMtPmltYWdpY2stPnNlcGFyYXRlSW1hZ2VDaGFubmVsKEltYWdpY2s6OkNIQU5ORUxfR1JBWSk7DQogICAgICAgICR0aGlzLT5pbWFnaWNrLT5zZXRJbWFnZUNoYW5uZWxEZXB0aChJbWFnaWNrOjpDSEFOTkVMX0dSQVksIDgpOyovDQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIEhvcml6b250YWwgbWlycm9yaW5nDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGJvb2x8UEVBUl9FcnJvciBUUlVFIG9yIGEgUEVBUl9FcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIGZ1bmN0aW9uIG1pcnJvcigpDQogICAgew0KICAgICAgICB0cnkgew0KICAgICAgICAgICAgJHRoaXMtPmltYWdpY2stPmZsb3BJbWFnZSgpOw0KICAgICAgICB9IGNhdGNoIChJbWFnaWNrRXhjZXB0aW9uICRlKSB7DQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnJhaXNlRXJyb3IoJ0NvdWxkIG5vdCBtaXJyb3IgdGhlIGltYWdlLicsDQogICAgICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX0ZBSUxFRCk7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogVmVydGljYWwgbWlycm9yaW5nDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGJvb2x8UEVBUl9FcnJvciBUUlVFIG9yIGEgUEVBUl9FcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIGZ1bmN0aW9uIGZsaXAoKQ0KICAgIHsNCiAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICR0aGlzLT5pbWFnaWNrLT5mbGlwSW1hZ2UoKTsNCg0KICAgICAgICB9IGNhdGNoIChJbWFnaWNrRXhjZXB0aW9uICRlKSB7DQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnJhaXNlRXJyb3IoJ0NvdWxkIG5vdCBmbGlwIHRoZSBpbWFnZS4nLA0KICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9GQUlMRUQpOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIERlc3Ryb3kgaW1hZ2UgaGFuZGxlDQogICAgICoNCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIGZ1bmN0aW9uIGZyZWUoKQ0KICAgIHsNCiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5pbWFnaWNrKSkgew0KICAgICAgICAgICAgJHRoaXMtPmltYWdpY2stPmRlc3Ryb3koKTsNCiAgICAgICAgICAgICR0aGlzLT5pbWFnaWNrID0gbnVsbDsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJhaXNlRXJyb3IgTWV0aG9kIC0gc2hvd3MgaW1hZ2ljayBSYXcgZXJyb3JzLg0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkbWVzc2FnZSBtZXNzYWdlID0gcHJlZml4ZWQgbWVzc2FnZS4uDQogICAgICogQHBhcmFtIGludCAgICAkY29kZSBlcnJvciBjb2RlDQogICAgICogQHJldHVybiBQRUFSIGVycm9yIG9iamVjdA0KICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkDQogICAgICovDQogICAgZnVuY3Rpb24gcmFpc2VFcnJvcigkbWVzc2FnZSwgJGNvZGUgPSAwKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFBFQVI6OnJhaXNlRXJyb3IoJG1lc3NhZ2UsICRjb2RlKTsNCiAgICB9DQp9]]></data>
	</file>
	<file>
	  <filename>/lib/external/Image/~backup/Transform/Driver/Imlib.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8vICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KLy8gfCBQSFAgVmVyc2lvbiA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQovLyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCi8vIHwgQ29weXJpZ2h0IChjKSAxOTk3LTIwMDMgVGhlIFBIUCBHcm91cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KLy8gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQovLyB8IFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB2ZXJzaW9uIDIuMDIgb2YgdGhlIFBIUCBsaWNlbnNlLCAgICAgIHwNCi8vIHwgdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UsIGFuZCBpcyAgICAgICAgfA0KLy8gfCBhdmFpbGFibGUgYXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQovLyB8IGh0dHA6Ly93d3cucGhwLm5ldC9saWNlbnNlLzJfMDIudHh0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCi8vIHwgSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIFBIUCBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvICAgfA0KLy8gfCBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGEgbm90ZSB0byAgICAgICAgICB8DQovLyB8IGxpY2Vuc2VAcGhwLm5ldCBzbyB3ZSBjYW4gbWFpbCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LiAgICAgICAgICAgICAgIHwNCi8vICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KLy8gfCBBdXRob3JzOiBKYXNvbiBSdXN0IDxqcnVzdEBydXN0eXBhcnRzLmNvbT4gICAgICAgICAgICAgICAgICAgICAgICAgICB8DQovLyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCi8vICRJZDogSW1saWIucGhwIDI1ODgyNSAyMDA4LTA0LTMwIDIzOjAwOjEzWiBjd2Vpc2tlICQNCi8vIHt7eyByZXF1aXJlcw0KDQpyZXF1aXJlX29uY2UgJ0ltYWdlL1RyYW5zZm9ybS5waHAnOw0KDQovLyB9fX0NCi8vIHt7eyBleGFtcGxlIHVzYWdlDQoNCi8vICAgICRpbWcgICAgPSBuZXcgSW1hZ2VfVHJhbnNmb3JtOjpmYWN0b3J5KCdJbWxpYicpOw0KLy8gICAgJGFuZ2xlICA9IC05MDsNCi8vICAgICRpbWctPmxvYWQoJ3Rlc3QucG5nJyk7DQovLyAgICAkaW1nLT5yb3RhdGUoJGFuZ2xlKTsNCi8vICAgICRpbWctPmFkZFRleHQoYXJyYXkoJ3RleHQnPT4iUm90YXRpb24gJGFuZ2xlIiwneCc9PjAsJ3knPT4xMDAsJ2ZvbnQnPT4nYXJpYWwudHRmJywnY29sb3InPT4nI2ZmZmZmZicpKTsNCi8vICAgICRpbWctPmRpc3BsYXkoKTsNCg0KLy8gfX19DQovLyB7e3sgY2xhc3MgSW1hZ2VfVHJhbnNmb3JtX0RyaXZlcl9JbWxpYg0KDQovKioNCiAqIFBlcmZvcm1zIGltYWdlIG1hbmlwdWxhdGlvbiB3aXRoIHRoZSBpbWxpYiBsaWJyYXJ5Lg0KICoNCiAqIEBzZWUgaHR0cDovL21tY2MuY3gvcGhwX2ltbGliL2luZGV4LnBocA0KICogQHZlcnNpb24gUmV2aXNpb246IDEuMA0KICogQGF1dGhvciAgSmFzb24gUnVzdCA8anJ1c3RAcnVzdHlwYXJ0cy5jb20+DQogKiBAcGFja2FnZSBJbWFnZV9UcmFuc2Zvcm0NCiAqLw0KDQovLyB9fX0NCmNsYXNzIEltYWdlX1RyYW5zZm9ybV9Ecml2ZXJfSW1saWIgZXh0ZW5kcyBJbWFnZV9UcmFuc2Zvcm0gew0KICAgIC8vIHt7eyBwcm9wZXJ0aWVzDQoNCiAgICAvKioNCiAgICAgKiBIb2xkcyB0aGUgaW1hZ2UgZmlsZSBmb3IgbWFuaXB1bGF0aW9uDQogICAgICovDQogICAgdmFyICRpbWFnZUhhbmRsZSA9ICcnOw0KDQogICAgLyoqDQogICAgICogSG9sZHMgdGhlIG9yaWdpbmFsIGltYWdlIGZpbGUNCiAgICAgKi8NCiAgICB2YXIgJG9sZEhhbmRsZSA9ICcnOw0KDQogICAgLy8gfX19DQogICAgLy8ge3t7IGNvbnN0cnVjdG9yDQoNCiAgICAvKioNCiAgICAgKiBDaGVjayBzZXR0aW5ncw0KICAgICAqDQogICAgICogQHNlZSBfX2NvbnN0cnVjdCgpDQogICAgICovDQogICAgZnVuY3Rpb24gSW1hZ2VfVHJhbnNmb3JtX0ltbGliKCkNCiAgICB7DQogICAgICAgICR0aGlzLT5fX2NvbnN0cnVjdCgpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIENoZWNrIHNldHRpbmdzDQogICAgICoNCiAgICAgKiBAcmV0dXJuIG1peGVkIHRydWUgb3IgIG9yIGEgUEVBUiBlcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKg0KICAgICAqIEBzZWUgUEVBUjo6aXNFcnJvcigpDQogICAgICovDQogICAgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQ0KICAgIHsNCiAgICAgICAgaWYgKCFQRUFSOjpsb2FkRXh0ZW5zaW9uKCdpbWxpYicpKSB7DQogICAgICAgICAgICAkdGhpcy0+aXNFcnJvcigNCiAgICAgICAgICAgICAgICBQRUFSOjpyYWlzZUVycm9yKA0KICAgICAgICAgICAgICAgICAgICAnQ291bGRuXCd0IGZpbmQgdGhlIGltbGliIGV4dGVuc2lvbi4nLA0KICAgICAgICAgICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfVU5TVVBQT1JURUQNCiAgICAgICAgICAgICAgICApDQogICAgICAgICAgICApOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgLy8gfX19DQogICAgLy8ge3t7IGxvYWQoKQ0KDQogICAgLyoqDQogICAgICogTG9hZCBpbWFnZQ0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyBmaWxlbmFtZQ0KICAgICAqDQogICAgICogQHJldHVybiBtaXhlZCBUUlVFIG9yIGEgUEVBUiBlcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKiBAc2VlIFBFQVI6OmlzRXJyb3IoKQ0KICAgICAqLw0KICAgIGZ1bmN0aW9uIGxvYWQoJGltYWdlKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPmltYWdlID0gJGltYWdlOw0KICAgICAgICAkdGhpcy0+aW1hZ2VIYW5kbGUgPSBpbWxpYl9sb2FkX2ltYWdlKCR0aGlzLT5pbWFnZSk7DQogICAgICAgICRyZXN1bHQgPSYgJHRoaXMtPl9nZXRfaW1hZ2VfZGV0YWlscygkaW1hZ2UpOw0KICAgICAgICBpZiAoUEVBUjo6aXNFcnJvcigkcmVzdWx0KSkgew0KICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICAvLyB9fX0NCiAgICAvLyB7e3sgYWRkVGV4dCgpDQoNCiAgICAvKioNCiAgICAgKiBBZGRzIHRleHQgdG8gdGhlIGltYWdlLiAgTm90ZSB0aGF0IHRoZSBhbmdsZSBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcNCiAgICAgKiBjb25zdGFudHM6ICBJTUxJQl9URVhUX1RPX1JJR0hULCBJTUxJQl9URVhUX1RPX0xFRlQsIElNTElCX1RFWFRfVE9fRE9XTiwNCiAgICAgKiBJTUxJQl9URVhUX1RPX1VQLCBJTUxJQl9URVhUX1RPX0FOR0xFDQogICAgICoNCiAgICAgKiBAcGFyYW0gICBhcnJheSAgIG9wdGlvbnMgICAgIEFycmF5IGNvbnRhaW5zIG9wdGlvbnMNCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KA0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0JyAgVGhlIHN0cmluZyB0byBkcmF3DQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3gnICAgICBIb3Jpem9udGFsIHBvc2l0aW9uDQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3knICAgICBWZXJ0aWNhbCBQb3NpdGlvbg0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcicgRm9udCBjb2xvcg0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250JyAgRm9udCB0byBiZSB1c2VkDQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpemUnICBTaXplIG9mIHRoZSBmb250cyBpbiBwaXhlbA0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZScgQSBpbWxpYiBkaXJlY3Rpb24gY29uc3RhbnQNCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCiAgICAgKg0KICAgICAqIEByZXR1cm4gVFJVRSBvciBQRUFSIEVycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEBzZWUgUEVBUjo6aXNFcnJvcigpDQogICAgICovDQogICAgZnVuY3Rpb24gYWRkVGV4dCgkcGFyYW1zKQ0KICAgIHsNCiAgICAgICAgJGRlZmF1bHRfcGFyYW1zID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0JyA9PiAnVGhpcyBpcyBUZXh0JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3gnID0+IDEwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAneScgPT4gMjAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcicgPT4gYXJyYXkoMjU1LDAsMCksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250JyA9PiAnQXJpYWwudHRmJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpemUnID0+ICcxMicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZScgPT4gSU1MSUJfVEVYVF9UT19SSUdIVCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgJHBhcmFtcyA9IGFycmF5X21lcmdlKCRkZWZhdWx0X3BhcmFtcywgJHBhcmFtcyk7DQogICAgICAgIGV4dHJhY3QoJHBhcmFtcyk7DQoNCiAgICAgICAgaWYgKCFpc19hcnJheSgkY29sb3IpKXsNCiAgICAgICAgICAgIGlmICgkY29sb3JbMF0gPT0gJyMnKXsNCiAgICAgICAgICAgICAgICAkY29sb3IgPSAkdGhpcy0+Y29sb3JoZXgyY29sb3JhcnJheSgkY29sb3IpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBpbmNsdWRlX29uY2UgJ0ltYWdlL1RyYW5zZm9ybS9Ecml2ZXIvQ29sb3JzRGVmcy5waHAnOw0KICAgICAgICAgICAgICAgICRjb2xvciA9IGlzc2V0KCRjb2xvcm5hbWVzWyRjb2xvcl0pID8gJGNvbG9ybmFtZXNbJGNvbG9yXSA6IGZhbHNlOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgJGZvbnRSZXNvdXJjZSA9IGltbGliX2xvYWRfZm9udCgkZm9udCAuICcvJyAuICRzaXplKTsNCiAgICAgICAgaW1saWJfdGV4dF9kcmF3KCR0aGlzLT5pbWFnZUhhbmRsZSwgJGZvbnRSZXNvdXJjZSwgJHgsICR5LCAkdGV4dCwgJGFuZ2xlLCAkY29sb3JbMF0sICRjb2xvclsxXSwgJGNvbG9yWzJdLCAyNTUpOw0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICAvLyB9fX0NCiAgICAvLyB7e3sgcm90YXRlKCkNCg0KICAgIC8qKg0KICAgICAqIFJvdGF0ZSBpbWFnZSBieSB0aGUgZ2l2ZW4gYW5nbGUNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnQgICAgICAgJGFuZ2xlICAgICAgUm90YXRpb24gYW5nbGUNCiAgICAgKg0KICAgICAqIEByZXR1cm4gVFJVRSBvciBQRUFSIEVycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHJvdGF0ZSgkYW5nbGUpDQogICAgew0KICAgICAgICAkdGhpcy0+b2xkSGFuZGxlID0gJHRoaXMtPmltYWdlSGFuZGxlOw0KICAgICAgICAkdGhpcy0+aW1hZ2VIYW5kbGUgPSBpbWxpYl9jcmVhdGVfcm90YXRlZF9pbWFnZSgkdGhpcy0+aW1hZ2VIYW5kbGUsICRhbmdsZSk7DQogICAgICAgICRuZXdfeCA9IGltbGliX2ltYWdlX2dldF93aWR0aCgkdGhpcy0+aW1hZ2VIYW5kbGUpOw0KICAgICAgICAkbmV3X3kgPSBpbWxpYl9pbWFnZV9nZXRfaGVpZ2h0KCR0aGlzLT5pbWFnZUhhbmRsZSk7DQogICAgICAgIC8vIHdoZW4gcm90YXRpbmcgaXQgY3JlYXRlcyBhIGJpZ2dlciBwaWN0dXJlIHRoYW4gYmVmb3JlIHNvIHRoYXQgaXQgY2FuIHJvdGF0ZSBhdCBhbnkgYW5nbGUNCiAgICAgICAgLy8gc28gZm9yIHJpZ2h0IGFuZ2xlcyB3ZSBjcm9wIGl0IGJhY2sgdG8gdGhlIG9yaWdpbmFsIHNpemUNCiAgICAgICAgaWYgKCRhbmdsZSAlIDkwID09IDApIHsNCiAgICAgICAgICAgIGlmIChhYnMoJGFuZ2xlKSA9PSA5MCB8fCAkYW5nbGUgPT0gMjcwKSB7DQogICAgICAgICAgICAgICAgJHlfcG9zID0gKCRuZXdfeCAtICR0aGlzLT5pbWdfeCkgLyAyOw0KICAgICAgICAgICAgICAgICR4X3BvcyA9ICgkbmV3X3kgLSAkdGhpcy0+aW1nX3kpIC8gMjsNCiAgICAgICAgICAgICAgICAkeV9wb3MrKzsNCiAgICAgICAgICAgICAgICAkeF9wb3MrKzsNCiAgICAgICAgICAgICAgICAkdGhpcy0+Y3JvcCgkdGhpcy0+aW1nX3ksICR0aGlzLT5pbWdfeCwgJHhfcG9zLCAkeV9wb3MpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkeF9wb3MgPSAoJG5ld194IC0gJHRoaXMtPmltZ194KSAvIDI7DQogICAgICAgICAgICAgICAgJHlfcG9zID0gKCRuZXdfeSAtICR0aGlzLT5pbWdfeSkgLyAyOw0KICAgICAgICAgICAgICAgICR0aGlzLT5jcm9wKCR0aGlzLT5pbWdfeCwgJHRoaXMtPmltZ195LCAkeF9wb3MsICR5X3Bvcyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkdGhpcy0+aW1nX3ggPSAkbmV3X3g7DQogICAgICAgICAgICAkdGhpcy0+aW1nX3kgPSAkbmV3X3k7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICAvLyB9fX0NCiAgICAvLyB7e3sgY3JvcCgpDQoNCiAgICAvKioNCiAgICAgKiBDcm9wcyB0aGUgY3VycmVudCBpbWFnZSB0byBhIHNwZWNpZmllZCBoZWlnaHQgYW5kIHdpZHRoDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ICRpbl9jcm9wV2lkdGggVGhlIHdpZHRoIG9mIHRoZSBuZXcgaW1hZ2UNCiAgICAgKiBAcGFyYW0gaW50ICRpbl9jcm9wSGVpZ2h0IFRoZSBoZWlnaHQgb2YgdGhlIG5ldyBpbWFnZQ0KICAgICAqIEBwYXJhbSBpbnQgJGluX2Nyb3BYIFRoZSBYIGNvb3JkaW5hdGUgb24gdGhlIGltYWdlIHRvIHN0YXJ0IHRoZSBjcm9wDQogICAgICogQHBhcmFtIGludCAkaW5fY3JvcFkgVGhlIFkgY29vcmRpbmF0ZSBvbiB0aGUgaW1hZ2UgdG8gc3RhcnQgdGhlIGNyb3ANCiAgICAgKg0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICogQHJldHVybiBUUlVFIG9yIFBFQVIgRXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICovDQogICAgZnVuY3Rpb24gY3JvcCgkaW5fY3JvcFdpZHRoLCAkaW5fY3JvcEhlaWdodCwgJGluX2Nyb3BYLCAkaW5fY3JvcFkpDQogICAgew0KICAgICAgICAvLyBTYW5pdHkgY2hlY2sNCiAgICAgICAgaWYgKCEkdGhpcy0+X2ludGVyc2VjdHMoJGluX2Nyb3BXaWR0aCwgJGluX2Nyb3BIZWlnaHQsICRpbl9jcm9wWCwgJGluX2Nyb3BZKSkgew0KICAgICAgICAgICAgcmV0dXJuIFBFQVI6OnJhaXNlRXJyb3IoJ05vdGhpbmcgdG8gY3JvcCcsIElNQUdFX1RSQU5TRk9STV9FUlJPUl9PVVRPRkJPVU5EKTsNCiAgICAgICAgfQ0KICAgICAgICAkdGhpcy0+b2xkSGFuZGxlID0gJHRoaXMtPmltYWdlSGFuZGxlOw0KICAgICAgICAkdGhpcy0+aW1hZ2VIYW5kbGUgPSBpbWxpYl9jcmVhdGVfY3JvcHBlZF9pbWFnZSgkdGhpcy0+aW1hZ2VIYW5kbGUsICRpbl9jcm9wWCwgJGluX2Nyb3BZLCAkaW5fY3JvcFdpZHRoLCAkaW5fY3JvcEhlaWdodCk7DQogICAgICAgICR0aGlzLT5pbWdfeCA9ICRpbl9jcm9wV2lkdGg7DQogICAgICAgICR0aGlzLT5pbWdfeSA9ICRpbl9jcm9wSGVpZ2h0Ow0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICAvLyB9fX0NCiAgICAvLyB7e3sgc2F2ZSgpDQoNCiAgICAvKioNCiAgICAgKiBTYXZlIHRoZSBpbWFnZSBmaWxlLiAgRGV0ZXJtaW5lcyB3aGF0IHR5cGUgb2YgaW1hZ2UgdG8gc2F2ZSBiYXNlZCBvbiBleHRlbnNpb24uDQogICAgICoNCiAgICAgKiBAcGFyYW0gJGZpbGVuYW1lIHN0cmluZyAgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gd3JpdGUgdG8NCiAgICAgKiBAcGFyYW0gJHR5cGUgICAgIHN0cmluZyAgKG9wdGlvbmFsKSBkZWZpbmUgdGhlIG91dHB1dCBmb3JtYXQsIGRlZmF1bHQNCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgdGhlIGN1cnJlbnQgdXNlZCBmb3JtYXQNCiAgICAgKiBAcGFyYW0gJHF1YWxpdHkgIGludCAgICAgKG9wdGlvbmFsKSBvdXRwdXQgRFBJLCBkZWZhdWx0IGlzIDc1DQogICAgICoNCiAgICAgKiBAcmV0dXJuIFRSVUUgb24gc3VjY2VzcyBvciBQRUFSIEVycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHNhdmUoJGZpbGVuYW1lLCAkdHlwZSA9ICcnLCAkcXVhbGl0eSA9IDc1KQ0KICAgIHsNCiAgICAgICAgaWYgKCFpc19yZXNvdXJjZSgkdGhpcy0+aW1hZ2VIYW5kbGUpKSB7DQogICAgICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcignSW52YWxpZCBpbWFnZScsIHRydWUpOw0KICAgICAgICB9DQoNCiAgICAgICAgJGVyciA9IDA7DQogICAgICAgICR0eXBlICAgID0gKCR0eXBlID09ICcnKSA/ICR0aGlzLT50eXBlIDogJHR5cGU7DQogICAgICAgICRxdWFsaXR5ID0gKGlzX251bGwoJHF1YWxpdHkpKSA/ICR0aGlzLT5fb3B0aW9uc1sncXVhbGl0eSddIDogJHF1YWxpdHk7DQogICAgICAgIGltbGliX2ltYWdlX3NldF9mb3JtYXQoJHRoaXMtPmltYWdlSGFuZGxlLCAkdHlwZSk7DQogICAgICAgICRyZXR1cm4gPSBpbWxpYl9zYXZlX2ltYWdlKCR0aGlzLT5pbWFnZUhhbmRsZSwgJGZpbGVuYW1lLCAkZXJyLCAkcXVhbGl0eSk7DQogICAgICAgICR0aGlzLT5pbWFnZUhhbmRsZSA9ICR0aGlzLT5vbGRIYW5kbGU7DQogICAgICAgICR0aGlzLT5yZXNpemVkID0gZmFsc2U7DQogICAgICAgIGlmICghJHJldHVybikgew0KICAgICAgICAgICAgcmV0dXJuIFBFQVI6OnJhaXNlRXJyb3IoJ0NvdWxkblwndCBzYXZlIGltYWdlLiBSZWFzb246ICcgLiAkZXJyLCB0cnVlKTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICAvLyB9fX0NCiAgICAvLyB7e3sgZGlzcGxheSgpDQoNCiAgICAvKioNCiAgICAgKiBEaXNwbGF5IGltYWdlIHdpdGhvdXQgc2F2aW5nIGFuZCBsb3NlIGNoYW5nZXMNCiAgICAgKg0KICAgICAqIFRoaXMgbWV0aG9kIGFkZHMgdGhlIENvbnRlbnQtdHlwZSBIVFRQIGhlYWRlcg0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkdHlwZSAob3B0aW9uYWwpIChKUEcsUE5HLi4uKTsNCiAgICAgKiBAcGFyYW0gaW50ICRxdWFsaXR5IChvcHRpb25hbCkgNzUNCiAgICAgKg0KICAgICAqIEByZXR1cm4gVFJVRSBvbiBzdWNjZXNzIG9yIFBFQVIgRXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICovDQogICAgZnVuY3Rpb24gZGlzcGxheSgkdHlwZSA9ICcnLCAkcXVhbGl0eSA9IG51bGwpDQogICAgew0KICAgICAgICBpZiAoIWlzX3Jlc291cmNlKCR0aGlzLT5pbWFnZUhhbmRsZSkpIHsNCiAgICAgICAgICAgIHJldHVybiBQRUFSOjpyYWlzZUVycm9yKCdJbnZhbGlkIGltYWdlJywgdHJ1ZSk7DQogICAgICAgIH0NCg0KICAgICAgICAkdHlwZSAgICA9ICgkdHlwZSA9PSAnJykgPyAkdGhpcy0+dHlwZSA6ICR0eXBlOw0KICAgICAgICAkcXVhbGl0eSA9IChpc19udWxsKCRxdWFsaXR5KSkgPyAkdGhpcy0+X29wdGlvbnNbJ3F1YWxpdHknXSA6ICRxdWFsaXR5Ow0KICAgICAgICBpbWxpYl9pbWFnZV9zZXRfZm9ybWF0KCR0aGlzLT5pbWFnZUhhbmRsZSwgJHR5cGUpOw0KICAgICAgICAkZXJyID0gMDsNCiAgICAgICAgaGVhZGVyKCdDb250ZW50LXR5cGU6ICcgLiAkdGhpcy0+Z2V0TWltZVR5cGUoJHR5cGUpKTsNCiAgICAgICAgJHJldHVybiA9IGltbGliX2R1bXBfaW1hZ2UoJHRoaXMtPmltYWdlSGFuZGxlLCAkZXJyLCAkcXVhbGl0eSk7DQogICAgICAgICR0aGlzLT5pbWFnZUhhbmRsZSA9ICR0aGlzLT5vbGRIYW5kbGU7DQogICAgICAgICR0aGlzLT5yZXNpemVkID0gZmFsc2U7DQogICAgICAgIGltbGliX2ZyZWVfaW1hZ2UoJHRoaXMtPm9sZEhhbmRsZSk7DQogICAgICAgIGlmICghJHJldHVybikgew0KICAgICAgICAgICAgcmV0dXJuIFBFQVI6OnJhaXNlRXJyb3IoJ0NvdWxkblwndCBvdXRwdXQgaW1hZ2UuIFJlYXNvbjogJyAuICRlcnIsIHRydWUpOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIC8vIH19fQ0KICAgIC8vIHt7eyBmcmVlKCkNCg0KICAgIC8qKg0KICAgICAqIERlc3Ryb3kgaW1hZ2UgaGFuZGxlDQogICAgICoNCiAgICAgKiBAcmV0dXJuIHZvaWQNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBmcmVlKCkNCiAgICB7DQogICAgICAgIGlmIChpc19yZXNvdXJjZSgkdGhpcy0+aW1hZ2VIYW5kbGUpKSB7DQogICAgICAgICAgICBpbWxpYl9mcmVlX2ltYWdlKCR0aGlzLT5pbWFnZUhhbmRsZSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvLyB9fX0NCiAgICAvLyB7e3sgX3Jlc2l6ZSgpDQoNCiAgICAvKioNCiAgICAgKiBSZXNpemUgdGhlIGltYWdlLg0KICAgICAqDQogICAgICogQGFjY2VzcyBwcml2YXRlDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ICAgJG5ld194ICAgTmV3IHdpZHRoDQogICAgICogQHBhcmFtIGludCAgICRuZXdfeSAgIE5ldyBoZWlnaHQNCiAgICAgKiBAcGFyYW0gbWl4ZWQgJG9wdGlvbnMgT3B0aW9uYWwgcGFyYW1ldGVycw0KICAgICAqDQogICAgICogQHJldHVybiBUUlVFIG9uIHN1Y2Nlc3Mgb3IgUEVBUiBFcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKiBAc2VlIFBFQVI6OmlzRXJyb3IoKQ0KICAgICAqLw0KICAgIGZ1bmN0aW9uIF9yZXNpemUoJG5ld194LCAkbmV3X3ksICRvcHRpb25zID0gbnVsbCkNCiAgICB7DQogICAgICAgIGlmICgkdGhpcy0+cmVzaXplZCA9PT0gdHJ1ZSkgew0KICAgICAgICAgICAgcmV0dXJuIFBFQVI6OnJhaXNlRXJyb3IoJ1lvdSBoYXZlIGFscmVhZHkgcmVzaXplZCB0aGUgaW1hZ2Ugd2l0aG91dCBzYXZpbmcgaXQuICBZb3VyIHByZXZpb3VzIHJlc2l6aW5nIHdpbGwgYmUgb3ZlcndyaXR0ZW4nLCBudWxsLCBQRUFSX0VSUk9SX1RSSUdHRVIsIEVfVVNFUl9OT1RJQ0UpOw0KICAgICAgICB9DQoNCiAgICAgICAgJHRoaXMtPm9sZEhhbmRsZSA9ICR0aGlzLT5pbWFnZUhhbmRsZTsNCiAgICAgICAgJHRoaXMtPmltYWdlSGFuZGxlID0gaW1saWJfY3JlYXRlX3NjYWxlZF9pbWFnZSgkdGhpcy0+aW1hZ2VIYW5kbGUsICRuZXdfeCwgJG5ld195KTsNCiAgICAgICAgJHRoaXMtPmltZ194ID0gJG5ld194Ow0KICAgICAgICAkdGhpcy0+aW1nX3kgPSAkbmV3X3k7DQogICAgICAgICR0aGlzLT5yZXNpemVkID0gdHJ1ZTsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgLy8gfX19DQogICAgLy8ge3t7IF9nZXRfaW1hZ2VfZGV0YWlscygpDQoNCiAgICAvKioNCiAgICAgKiBHZXRzIHRoZSBpbWFnZSBkZXRhaWxzDQogICAgICoNCiAgICAgKiBAYWNjZXNzIHByaXZhdGUNCiAgICAgKiBAcmV0dXJuIFRSVUUgb24gc3VjY2VzcyBvciBQRUFSIEVycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIF9nZXRfaW1hZ2VfZGV0YWlscygpDQogICAgew0KICAgICAgICAkdGhpcy0+aW1nX3ggPSBpbWxpYl9pbWFnZV9nZXRfd2lkdGgoJHRoaXMtPmltYWdlSGFuZGxlKTsNCiAgICAgICAgJHRoaXMtPmltZ195ID0gaW1saWJfaW1hZ2VfZ2V0X2hlaWdodCgkdGhpcy0+aW1hZ2VIYW5kbGUpOw0KICAgICAgICAkdGhpcy0+dHlwZSA9IGltbGliX2ltYWdlX2Zvcm1hdCgkdGhpcy0+aW1hZ2VIYW5kbGUpOw0KICAgICAgICAkdGhpcy0+dHlwZSA9ICgkdGhpcy0+dHlwZSA9PSAnJykgPyAncG5nJyA6ICR0aGlzLT50eXBlOw0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICAvLyB9fX0NCg0KICAgIC8qKg0KICAgICAqIEhvcml6b250YWwgbWlycm9yaW5nDQogICAgICoNCiAgICAgKiBAcmV0dXJuIFRSVUUgb24gc3VjY2VzcywgUEVBUiBFcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKi8NCiAgICBmdW5jdGlvbiBtaXJyb3IoKQ0KICAgIHsNCiAgICAgICAgaW1saWJfaW1hZ2VfZmxpcF9ob3Jpem9udGFsKCR0aGlzLT5pbWFnZUhhbmRsZSk7DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFZlcnRpY2FsIG1pcnJvcmluZw0KICAgICAqDQogICAgICogQHJldHVybiBUUlVFIG9uIHN1Y2Nlc3MsIFBFQVIgRXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICovDQogICAgZnVuY3Rpb24gZmxpcCgpDQogICAgew0KICAgICAgICBpbWxpYl9pbWFnZV9mbGlwX3ZlcnRpY2FsKCR0aGlzLT5pbWFnZUhhbmRsZSk7DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCn0=]]></data>
	</file>
	<file>
	  <filename>/lib/external/Image/~backup/Transform/Driver/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lib/external/Image/~backup/Transform/Driver/NetPBM.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyogdmltOiBzZXQgZXhwYW5kdGFiIHRhYnN0b3A9NCBzaGlmdHdpZHRoPTQ6ICovDQoNCi8qKg0KICogTmV0UEJNIGltcGxlbWVudGF0aW9uIGZvciBJbWFnZV9UcmFuc2Zvcm0gcGFja2FnZQ0KICoNCiAqIFBIUCB2ZXJzaW9ucyA0IGFuZCA1DQogKg0KICogTElDRU5TRTogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHZlcnNpb24gMy4wIG9mIHRoZSBQSFAgbGljZW5zZQ0KICogdGhhdCBpcyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhlIGZvbGxvd2luZyBVUkk6DQogKiBodHRwOi8vd3d3LnBocC5uZXQvbGljZW5zZS8zXzAudHh0LiAgSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YNCiAqIHRoZSBQSFAgTGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0byBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd2ViLCBwbGVhc2UNCiAqIHNlbmQgYSBub3RlIHRvIGxpY2Vuc2VAcGhwLm5ldCBzbyB3ZSBjYW4gbWFpbCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5Lg0KICoNCiAqIEBjYXRlZ29yeSAgIEltYWdlDQogKiBAcGFja2FnZSAgICBJbWFnZV9UcmFuc2Zvcm0NCiAqIEBhdXRob3IgICAgIFBldGVyIEJvd3llciA8cGV0ZXJAbWFwbGVkZXNpZ24uY28udWs+DQogKiBAYXV0aG9yICAgICBQaGlsaXBwZSBKYXVzaW9ucyA8UGhpbGlwcGUuSmF1c2lvbnNAMTFhYmFjdXMuY29tPg0KICogQGNvcHlyaWdodCAgMjAwMi0yMDA1IFRoZSBQSFAgR3JvdXANCiAqIEBsaWNlbnNlICAgIGh0dHA6Ly93d3cucGhwLm5ldC9saWNlbnNlLzNfMC50eHQgIFBIUCBMaWNlbnNlIDMuMA0KICogQHZlcnNpb24gICAgQ1ZTOiAkSWQ6IE5ldFBCTS5waHAgMjM2NTI3IDIwMDctMDUtMjggMTY6MzY6MDlaIGR1ZnV6ICQNCiAqIEBsaW5rICAgICAgIGh0dHA6Ly9wZWFyLnBocC5uZXQvcGFja2FnZS9JbWFnZV9UcmFuc2Zvcm0NCiAqLw0KDQpyZXF1aXJlX29uY2UgJ0ltYWdlL1RyYW5zZm9ybS5waHAnOw0KcmVxdWlyZV9vbmNlICdTeXN0ZW0ucGhwJzsNCg0KLyoqDQogKiBOZXRQQk0gaW1wbGVtZW50YXRpb24gZm9yIEltYWdlX1RyYW5zZm9ybSBwYWNrYWdlDQogKg0KICogQGNhdGVnb3J5ICAgSW1hZ2UNCiAqIEBwYWNrYWdlICAgIEltYWdlX1RyYW5zZm9ybQ0KICogQHN1YnBhY2thZ2UgSW1hZ2VfVHJhbnNmb3JtX0RyaXZlcl9OZXRQQk0NCiAqIEBhdXRob3IgICAgIFBldGVyIEJvd3llciA8cGV0ZXJAbWFwbGVkZXNpZ24uY28udWs+DQogKiBAYXV0aG9yICAgICBQaGlsaXBwZSBKYXVzaW9ucyA8UGhpbGlwcGUuSmF1c2lvbnNAMTFhYmFjdXMuY29tPg0KICogQGNvcHlyaWdodCAgMjAwMi0yMDA1IFRoZSBQSFAgR3JvdXANCiAqIEBsaWNlbnNlICAgIGh0dHA6Ly93d3cucGhwLm5ldC9saWNlbnNlLzNfMC50eHQgIFBIUCBMaWNlbnNlIDMuMA0KICogQHZlcnNpb24gICAgUmVsZWFzZTogQHBhY2thZ2VfdmVyc2lvbkANCiAqIEBsaW5rICAgICAgIGh0dHA6Ly9wZWFyLnBocC5uZXQvcGFja2FnZS9JbWFnZV9UcmFuc2Zvcm0NCiAqIEBsaW5rICAgICAgIGh0dHA6Ly9uZXRwYm0uc291cmNlZm9yZ2UubmV0Lw0KICovDQpjbGFzcyBJbWFnZV9UcmFuc2Zvcm1fRHJpdmVyX05ldFBCTSBleHRlbmRzIEltYWdlX1RyYW5zZm9ybQ0Kew0KICAgIC8qKg0KICAgICAqIGFzc29jaWF0aXZlIGFycmF5IGNvbW1hbmRzIHRvIGJlIGV4ZWN1dGVkDQogICAgICogQHZhciBhcnJheQ0KICAgICAqLw0KICAgIHZhciAkY29tbWFuZCA9IGFycmF5KCk7DQoNCiAgICAvKioNCiAgICAgKiBDbGFzcyBDb25zdHJ1Y3Rvcg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIEltYWdlX1RyYW5zZm9ybV9Ecml2ZXJfTmV0UEJNKCkNCiAgICB7DQogICAgICAgICR0aGlzLT5fX2NvbnN0cnVjdCgpOw0KDQogICAgfSAvLyBFbmQgZnVuY3Rpb24gSW1hZ2VfTmV0UEJNDQoNCiAgICAvKioNCiAgICAgKiBDbGFzcyBDb25zdHJ1Y3Rvcg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkNCiAgICB7DQogICAgICAgIGlmICghZGVmaW5lZCgnSU1BR0VfVFJBTlNGT1JNX05FVFBCTV9QQVRIJykpIHsNCiAgICAgICAgICAgICRwYXRoID0gZGlybmFtZShTeXN0ZW06OndoaWNoKCdwbm1zY2FsZScpKQ0KICAgICAgICAgICAgICAgICAgICAuIERJUkVDVE9SWV9TRVBBUkFUT1I7DQogICAgICAgICAgICBkZWZpbmUoJ0lNQUdFX1RSQU5TRk9STV9ORVRQQk1fUEFUSCcsICRwYXRoKTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoIVN5c3RlbTo6d2hpY2goSU1BR0VfVFJBTlNGT1JNX05FVFBCTV9QQVRIIC4gJ3BubXNjYWxlJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICgoT1NfV0lORE9XUykgPyAnLmV4ZScgOiAnJykpKSB7DQogICAgICAgICAgICAkdGhpcy0+aXNFcnJvcihQRUFSOjpyYWlzZUVycm9yKCdDb3VsZG5cJ3QgZmluZCAicG5tc2NhbGUiIGJpbmFyeScsDQogICAgICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX1VOU1VQUE9SVEVEKSk7DQogICAgICAgIH0NCiAgICB9IC8vIEVuZCBmdW5jdGlvbiBJbWFnZV9OZXRQQk0NCg0KICAgIC8qKg0KICAgICAqIExvYWQgaW1hZ2UNCiAgICAgKg0KICAgICAqIEBwYXJhbSBzdHJpbmcgZmlsZW5hbWUNCiAgICAgKiBAcmV0dXJuIGJvb2x8UEVBUl9FcnJvciBUUlVFIG9yIGEgUEVBUl9FcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIGZ1bmN0aW9uIGxvYWQoJGltYWdlKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPmltYWdlID0gJGltYWdlOw0KICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPl9nZXRfaW1hZ2VfZGV0YWlscygkaW1hZ2UpOw0KICAgICAgICBpZiAoUEVBUjo6aXNFcnJvcigkcmVzdWx0KSkgew0KICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIHRydWU7DQoNCiAgICB9IC8vIEVuZCBsb2FkDQoNCiAgICAvKioNCiAgICAgKiBSZXNpemUgdGhlIGltYWdlLg0KICAgICAqDQogICAgICogQGFjY2VzcyBwcml2YXRlDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ICAgJG5ld194ICAgTmV3IHdpZHRoDQogICAgICogQHBhcmFtIGludCAgICRuZXdfeSAgIE5ldyBoZWlnaHQNCiAgICAgKiBAcGFyYW0gbWl4ZWQgJG9wdGlvbnMgT3B0aW9uYWwgcGFyYW1ldGVycw0KICAgICAqDQogICAgICogQHJldHVybiB0cnVlIG9uIHN1Y2Nlc3Mgb3IgUEVBUiBFcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKiBAc2VlIFBFQVI6OmlzRXJyb3IoKQ0KICAgICAqLw0KICAgIGZ1bmN0aW9uIF9yZXNpemUoJG5ld194LCAkbmV3X3ksICRvcHRpb25zID0gbnVsbCkNCiAgICB7DQogICAgICAgIC8vIHRoZXJlJ3Mgbm8gdGVjaG5pY2FsIHJlYXNvbiB3aHkgcmVzaXplIGNhbid0IGJlIGNhbGxlZCBtdWx0aXBsZQ0KICAgICAgICAvLyB0aW1lcy4uLml0J3MganVzdCBzaWxseSB0byBkbyBzbw0KICAgICAgICAkc2NhbGVNZXRob2QgPSAkdGhpcy0+X2dldE9wdGlvbignc2NhbGVNZXRob2QnLCAkb3B0aW9ucywgJ3Ntb290aCcpOw0KICAgICAgICBzd2l0Y2ggKCRzY2FsZU1ldGhvZCkgew0KICAgICAgICAgICAgY2FzZSAncGl4ZWwnOg0KICAgICAgICAgICAgICAgICRzY2FsZV94ID0gJG5ld194IC8gJHRoaXMtPmltZ194Ow0KICAgICAgICAgICAgICAgIGlmICgkc2NhbGVfeCA9PSAkbmV3X3kgLyAkdGhpcy0+aW1nX3gNCiAgICAgICAgICAgICAgICAgICAgJiYgJHNjYWxlX3ggPiAxDQogICAgICAgICAgICAgICAgICAgICYmIGZsb29yKCRzY2FsZV94KSA9PSAkc2NhbGVfeCkgew0KICAgICAgICAgICAgICAgICAgICBpZiAoU3lzdGVtOjp3aGljaChJTUFHRV9UUkFOU0ZPUk1fTkVUUEJNX1BBVEggLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbm1lbmxhcmdlJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gKChPU19XSU5ET1dTKSA/ICcuZXhlJyA6ICcnKSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5jb21tYW5kW10gPSAkdGhpcy0+X3ByZXBhcmVfY21kKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9ORVRQQk1fUEFUSCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG5tZW5sYXJnZScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjYWxlX3gpOw0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBFQVI6OnJhaXNlRXJyb3IoJ0NvdWxkblwndCBmaW5kICJwbm1lbmxhcmdlIiBiaW5hcnknLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9VTlNVUFBPUlRFRCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y29tbWFuZFtdID0gJHRoaXMtPl9wcmVwYXJlX2NtZCgNCiAgICAgICAgICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9ORVRQQk1fUEFUSCwNCiAgICAgICAgICAgICAgICAgICAgICAgICdwbm1zY2FsZScsDQogICAgICAgICAgICAgICAgICAgICAgICAnLW5vbWl4IC13aWR0aCAnIC4gKChpbnQpICRuZXdfeCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICcgLWhlaWdodCAnIC4gKChpbnQpICRuZXdfeSkpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgY2FzZSAnc21vb3RoJzoNCiAgICAgICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgICAgJHRoaXMtPmNvbW1hbmRbXSA9ICR0aGlzLT5fcHJlcGFyZV9jbWQoDQogICAgICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9ORVRQQk1fUEFUSCwNCiAgICAgICAgICAgICAgICAgICAgJ3BubXNjYWxlJywNCiAgICAgICAgICAgICAgICAgICAgJy13aWR0aCAnIC4gKChpbnQpICRuZXdfeCkgLiAnIC1oZWlnaHQgJw0KICAgICAgICAgICAgICAgICAgICAgICAgLiAoKGludCkgJG5ld195KSk7DQogICAgICAgICAgICAgICAgLy8gU21vb3RoIHRoaW5ncyBpZiBzY2FsaW5nIGJ5IGEgZmFjdG9yIG1vcmUgdGhhbiAzDQogICAgICAgICAgICAgICAgLy8gKHNlZSBwbm1zY2FsZSBtYW4gcGFnZSkNCiAgICAgICAgICAgICAgICBpZiAoJG5ld194IC8gJHRoaXMtPmltZ194ID4gMw0KICAgICAgICAgICAgICAgICAgICB8fCAkbmV3X3kgLyAkdGhpcy0+aW1nX3kgPiAzKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChTeXN0ZW06OndoaWNoKElNQUdFX1RSQU5TRk9STV9ORVRQQk1fUEFUSCAuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BubXNtb290aCcgLiAoKE9TX1dJTkRPV1MpID8gJy5leGUnIDogJycpKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmNvbW1hbmRbXSA9ICR0aGlzLT5fcHJlcGFyZV9jbWQoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX05FVFBCTV9QQVRILA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbm1zbW9vdGgnKTsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQRUFSOjpyYWlzZUVycm9yKCdDb3VsZG5cJ3QgZmluZCAicG5tc21vb3RoIiBiaW5hcnknLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9VTlNVUFBPUlRFRCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgIH0gLy8gRW5kIFtTV0lUQ0hdDQoNCiAgICAgICAgJHRoaXMtPl9zZXRfbmV3X3goJG5ld194KTsNCiAgICAgICAgJHRoaXMtPl9zZXRfbmV3X3koJG5ld195KTsNCiAgICAgICAgcmV0dXJuIHRydWU7DQoNCiAgICB9IC8vIEVuZCByZXNpemUNCg0KICAgIC8qKg0KICAgICAqIFJvdGF0ZXMgdGhlIGltYWdlDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ICRhbmdsZSBUaGUgYW5nbGUgdG8gcm90YXRlIHRoZSBpbWFnZSB0aHJvdWdoDQogICAgICogQHBhcmFtIGFycmF5ICRvcHRpb25zDQogICAgICogQHJldHVybiBib29sfFBFQVJfRXJyb3IgVFJVRSBvbiBzdWNjZXNzLCBQRUFSX0Vycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHJvdGF0ZSgkYW5nbGUsICRvcHRpb25zID0gbnVsbCkNCiAgICB7DQogICAgICAgIGlmICghKCRhbmdsZSA9PSAkdGhpcy0+X3JvdGF0aW9uX2FuZ2xlKCRhbmdsZSkpKSB7DQogICAgICAgICAgICAvLyBObyByb3RhdGlvbiBuZWVkZWQNCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gRm9yIHBubXJvdGF0ZSwgd2Ugd2FudCB0byBsaW1pdCByb3RhdGlvbnMgZnJvbSAtNDUgdG8gKzQ1IGRlZ3JlZXMNCiAgICAgICAgLy8gZXZlbiBpZiBhY2NlcHRhYmxlIHJhbmdlIGlzIC05MCB0byArOTAgKHNlZSBwbm1yb3RhdGUgbWFuIHBhZ2UpDQogICAgICAgIC8vIEJyaW5nIGltYWdlIHRvIHRoYXQgcmFuZ2UgYnkgdXNpbmcgcGFtZmxpcA0KICAgICAgICBpZiAoJGFuZ2xlID4gNDUgJiYgJGFuZ2xlIDwgMzE1KSB7DQogICAgICAgICAgICBpZiAoIVN5c3RlbTo6d2hpY2goSU1BR0VfVFJBTlNGT1JNX05FVFBCTV9QQVRIIC4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhbWZsaXAnIC4gKChPU19XSU5ET1dTKSA/ICcuZXhlJyA6ICcnKSkpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcignQ291bGRuXCd0IGZpbmQgInBhbWZsaXAiIGJpbmFyeScsDQogICAgICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9VTlNVUFBPUlRFRCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICRxdWFydGVycyA9IGZsb29yKGNlaWwoJGFuZ2xlIC8gNDUpIC8gMik7DQogICAgICAgICAgICAkdGhpcy0+Y29tbWFuZFtdID0gJHRoaXMtPl9wcmVwYXJlX2NtZCgNCiAgICAgICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fTkVUUEJNX1BBVEgsDQogICAgICAgICAgICAgICAgJ3BhbWZsaXAnLA0KICAgICAgICAgICAgICAgICctcm90YXRlJyAuICgzNjAgLSAkcXVhcnRlcnMgKiA5MCkpOw0KICAgICAgICAgICAgJGFuZ2xlIC09ICRxdWFydGVycyAqIDkwOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKCRhbmdsZSAhPSAwKSB7DQogICAgICAgICAgICBpZiAoJGFuZ2xlID4gNDUpIHsNCiAgICAgICAgICAgICAgICAkYW5nbGUgLT0gMzYwOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIVN5c3RlbTo6d2hpY2goSU1BR0VfVFJBTlNGT1JNX05FVFBCTV9QQVRIIC4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BubXJvdGF0ZScgLiAoKE9TX1dJTkRPV1MpID8gJy5leGUnIDogJycpKSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBQRUFSOjpyYWlzZUVycm9yKCdDb3VsZG5cJ3QgZmluZCAicG5tcm90YXRlIiBiaW5hcnknLA0KICAgICAgICAgICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfVU5TVVBQT1JURUQpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAkYmdjb2xvciA9ICR0aGlzLT5fZ2V0Q29sb3IoJ2NhbnZhc0NvbG9yJywgJG9wdGlvbnMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KDI1NSwgMjU1LCAyNTUpKTsNCiAgICAgICAgICAgICRiZ2NvbG9yID0gJHRoaXMtPmNvbG9yYXJyYXkyY29sb3JoZXgoJGJnY29sb3IpOw0KDQogICAgICAgICAgICAkc2NhbGVNZXRob2QgPSAkdGhpcy0+X2dldE9wdGlvbignc2NhbGVNZXRob2QnLCAkb3B0aW9ucywgJ3Ntb290aCcpOw0KICAgICAgICAgICAgaWYgKCRzY2FsZU1ldGhvZCAhPSAncGl4ZWwnKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPmNvbW1hbmRbXSA9ICR0aGlzLT5fcHJlcGFyZV9jbWQoDQogICAgICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9ORVRQQk1fUEFUSCwNCiAgICAgICAgICAgICAgICAgICAgJ3BubXJvdGF0ZScsDQogICAgICAgICAgICAgICAgICAgICctYmFja2dyb3VuZD0nIC4gJGJnY29sb3IgLiAnIC0nIC4gKGZsb2F0KSAkYW5nbGUpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+Y29tbWFuZFtdID0gJHRoaXMtPl9wcmVwYXJlX2NtZCgNCiAgICAgICAgICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX05FVFBCTV9QQVRILA0KICAgICAgICAgICAgICAgICAgICAncG5tcm90YXRlJywNCiAgICAgICAgICAgICAgICAgICAgJy1iYWNrZ3JvdW5kPScgLiAkYmdjb2xvciAuICcgLW5vYW50aWFsaWFzIC0nIC4gKGZsb2F0KSAkYW5nbGUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0gLy8gRW5kIHJvdGF0ZQ0KDQogICAgLyoqDQogICAgICogQ3JvcCBhbiBpbWFnZQ0KICAgICAqDQogICAgICogQHBhcmFtIGludCAkd2lkdGggQ3JvcHBlZCBpbWFnZSB3aWR0aA0KICAgICAqIEBwYXJhbSBpbnQgJGhlaWdodCBDcm9wcGVkIGltYWdlIGhlaWdodA0KICAgICAqIEBwYXJhbSBpbnQgJHggcG9zaXRpdmUgWC1jb29yZGluYXRlIHRvIGNyb3AgYXQNCiAgICAgKiBAcGFyYW0gaW50ICR5IHBvc2l0aXZlIFktY29vcmRpbmF0ZSB0byBjcm9wIGF0DQogICAgICoNCiAgICAgKiBAcmV0dXJuIG1peGVkIFRSVUUgb3IgYSBQRUFSIGVycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqIEB0b2RvIGtlZXAgdHJhY2sgb2YgdGhlIG5ldyBjcm9wcGVkIHNpemUNCiAgICAgKiovDQogICAgZnVuY3Rpb24gY3JvcCgkd2lkdGgsICRoZWlnaHQsICR4ID0gMCwgJHkgPSAwKQ0KICAgIHsNCiAgICAgICAgLy8gU2FuaXR5IGNoZWNrDQogICAgICAgIGlmICghJHRoaXMtPmludGVyc2VjdHMoJHdpZHRoLCAkaGVpZ2h0LCAkeCwgJHkpKSB7DQogICAgICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcignTm90aGluZyB0byBjcm9wJywgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX09VVE9GQk9VTkQpOw0KICAgICAgICB9DQogICAgICAgIGlmICgkeCAhPSAwIHx8ICR5ICE9IDANCiAgICAgICAgICAgIHx8ICR3aWR0aCAhPSAkdGhpcy0+aW1nX3gNCiAgICAgICAgICAgIHx8ICRoZWlnaHQgIT0gJHRoaXMtPmltZ195KSB7DQogICAgICAgICAgICBpZiAoIVN5c3RlbTo6d2hpY2goSU1BR0VfVFJBTlNGT1JNX05FVFBCTV9QQVRIIC4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BubWN1dCcgLiAoKE9TX1dJTkRPV1MpID8gJy5leGUnIDogJycpKSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBQRUFSOjpyYWlzZUVycm9yKCdDb3VsZG5cJ3QgZmluZCAicG5tY3V0IiBiaW5hcnknLA0KICAgICAgICAgICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfVU5TVVBQT1JURUQpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAkdGhpcy0+Y29tbWFuZFtdID0gJHRoaXMtPl9wcmVwYXJlX2NtZCgNCiAgICAgICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fTkVUUEJNX1BBVEgsDQogICAgICAgICAgICAgICAgJ3BubWN1dCcsDQogICAgICAgICAgICAgICAgJy1sZWZ0ICcgLiAoKGludCkgJHgpDQogICAgICAgICAgICAgICAgICAgIC4gJyAtdG9wICcgLiAoKGludCkgJHkpDQogICAgICAgICAgICAgICAgICAgIC4gJyAtd2lkdGggJyAuICgoaW50KSAkd2lkdGgpDQogICAgICAgICAgICAgICAgICAgIC4gJyAtaGVpZ2h0ICcgLiAoKGludCkgJGhlaWdodCkpOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0gLy8gRW5kIGNyb3ANCg0KICAgIC8qKg0KICAgICAqIEFkanVzdCB0aGUgaW1hZ2UgZ2FtbWENCiAgICAgKg0KICAgICAqIEBwYXJhbSBmbG9hdCAkb3V0cHV0Z2FtbWENCiAgICAgKg0KICAgICAqIEByZXR1cm4gbWl4ZWQgVFJVRSBvciBhIFBFQVIgZXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICovDQogICAgZnVuY3Rpb24gZ2FtbWEoJG91dHB1dGdhbW1hID0gMS4wKSB7DQogICAgICAgIGlmICgkb3V0cHV0Z2FtbWUgIT0gMS4wKSB7DQogICAgICAgICAgICBpZiAoIVN5c3RlbTo6d2hpY2goSU1BR0VfVFJBTlNGT1JNX05FVFBCTV9QQVRIIC4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BubWdhbW1hJyAuICgoT1NfV0lORE9XUykgPyAnLmV4ZScgOiAnJykpKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIFBFQVI6OnJhaXNlRXJyb3IoJ0NvdWxkblwndCBmaW5kICJwbm1nYW1tYSIgYmluYXJ5JywNCiAgICAgICAgICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX1VOU1VQUE9SVEVEKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICR0aGlzLT5jb21tYW5kW10gPSAkdGhpcy0+X3ByZXBhcmVfY21kKA0KICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9ORVRQQk1fUEFUSCwNCiAgICAgICAgICAgICAgICAncG5tZ2FtbWEnLA0KICAgICAgICAgICAgICAgIChmbG9hdCkgJG91dHB1dGdhbW1hKTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBWZXJ0aWNhbCBtaXJyb3JpbmcNCiAgICAgKg0KICAgICAqIEBzZWUgbWlycm9yKCkNCiAgICAgKiBAcmV0dXJuIFRSVUUgb3IgUEVBUiBFcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKiovDQogICAgZnVuY3Rpb24gZmxpcCgpDQogICAgew0KICAgICAgICBpZiAoIVN5c3RlbTo6d2hpY2goSU1BR0VfVFJBTlNGT1JNX05FVFBCTV9QQVRIIC4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFtZmxpcCcgLiAoKE9TX1dJTkRPV1MpID8gJy5leGUnIDogJycpKSkgew0KICAgICAgICAgICAgcmV0dXJuIFBFQVI6OnJhaXNlRXJyb3IoJ0NvdWxkblwndCBmaW5kICJwYW1mbGlwIiBiaW5hcnknLA0KICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9VTlNVUFBPUlRFRCk7DQogICAgICAgIH0NCiAgICAgICAgJHRoaXMtPmNvbW1hbmRbXSA9ICR0aGlzLT5fcHJlcGFyZV9jbWQoDQogICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fTkVUUEJNX1BBVEgsDQogICAgICAgICAgICAncGFtZmxpcCcsDQogICAgICAgICAgICAnLXRvcGJvdHRvbScpOw0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBIb3Jpem9udGFsIG1pcnJvcmluZw0KICAgICAqDQogICAgICogQHNlZSBmbGlwKCkNCiAgICAgKiBAcmV0dXJuIFRSVUUgb3IgUEVBUiBFcnJvciBvYmplY3Qgb24gZXJyb3INCiAgICAgKiovDQogICAgZnVuY3Rpb24gbWlycm9yKCkNCiAgICB7DQogICAgICAgIGlmICghU3lzdGVtOjp3aGljaChJTUFHRV9UUkFOU0ZPUk1fTkVUUEJNX1BBVEggLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYW1mbGlwJyAuICgoT1NfV0lORE9XUykgPyAnLmV4ZScgOiAnJykpKSB7DQogICAgICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcignQ291bGRuXCd0IGZpbmQgInBhbWZsaXAiIGJpbmFyeScsDQogICAgICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX1VOU1VQUE9SVEVEKTsNCiAgICAgICAgfQ0KICAgICAgICAkdGhpcy0+Y29tbWFuZFtdID0gJHRoaXMtPl9wcmVwYXJlX2NtZCgNCiAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9ORVRQQk1fUEFUSCwNCiAgICAgICAgICAgICdwYW1mbGlwJywNCiAgICAgICAgICAgICctbGVmdHJpZ2h0Jyk7DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIENvbnZlcnRzIGFuIGltYWdlIGludG8gZ3JleXNjYWxlIGNvbG9ycw0KICAgICAqDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKiBAcmV0dXJuIG1peGVkIFRSVUUgb3IgYSBQRUFSIGVycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqKi8NCiAgICBmdW5jdGlvbiBncmV5c2NhbGUoKQ0KICAgIHsNCiAgICAgICAgaWYgKCFTeXN0ZW06OndoaWNoKElNQUdFX1RSQU5TRk9STV9ORVRQQk1fUEFUSCAuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BwbXRvcGdtJyAuICgoT1NfV0lORE9XUykgPyAnLmV4ZScgOiAnJykpKSB7DQogICAgICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcignQ291bGRuXCd0IGZpbmQgInBwbXRvcGdtIiBiaW5hcnknLA0KICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9VTlNVUFBPUlRFRCk7DQogICAgICAgIH0NCiAgICAgICAgJHRoaXMtPmNvbW1hbmRbXSA9ICR0aGlzLT5fcHJlcGFyZV9jbWQoDQogICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fTkVUUEJNX1BBVEgsDQogICAgICAgICAgICAncHBtdG9wZ20nKTsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogYWRkcyB0ZXh0IHRvIGFuIGltYWdlDQogICAgICoNCiAgICAgKiBAcGFyYW0gICBhcnJheSAgIG9wdGlvbnMgICAgIEFycmF5IGNvbnRhaW5zIG9wdGlvbnMNCiAgICAgKiAgICAgICAgICAgICBhcnJheSgNCiAgICAgKiAgICAgICAgICAgICAgICAgICd0ZXh0JyAgICAgICAgICAvLyBUaGUgc3RyaW5nIHRvIGRyYXcNCiAgICAgKiAgICAgICAgICAgICAgICAgICd4JyAgICAgICAgICAgICAvLyBIb3Jpem9udGFsIHBvc2l0aW9uDQogICAgICogICAgICAgICAgICAgICAgICAneScgICAgICAgICAgICAgLy8gVmVydGljYWwgUG9zaXRpb24NCiAgICAgKiAgICAgICAgICAgICAgICAgICdjb2xvcicgICAgICAgICAvLyBGb250IGNvbG9yDQogICAgICogICAgICAgICAgICAgICAgICAnZm9udCcgICAgICAgICAgLy8gRm9udCB0byBiZSB1c2VkDQogICAgICogICAgICAgICAgICAgICAgICAnc2l6ZScgICAgICAgICAgLy8gU2l6ZSBvZiB0aGUgZm9udHMgaW4gcGl4ZWwNCiAgICAgKiAgICAgICAgICAgICAgICAgICdyZXNpemVfZmlyc3QnICAvLyBUZWxsIGlmIHRoZSBpbWFnZSBoYXMgdG8gYmUgcmVzaXplZA0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlZm9yZSBkcmF3aW5nIHRoZSB0ZXh0DQogICAgICogICAgICAgICAgICAgICAgICAgKQ0KICAgICAqDQogICAgICogQHJldHVybiB2b2lkDQogICAgICovDQogICAgZnVuY3Rpb24gYWRkVGV4dCgkcGFyYW1zKQ0KICAgIHsNCiAgICAgICAgaWYgKCFTeXN0ZW06OndoaWNoKElNQUdFX1RSQU5TRk9STV9ORVRQQk1fUEFUSCAuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BwbWxhYmVsJyAuICgoT1NfV0lORE9XUykgPyAnLmV4ZScgOiAnJykpKSB7DQogICAgICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcignQ291bGRuXCd0IGZpbmQgInBwbWxhYmVsIiBiaW5hcnknLA0KICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9VTlNVUFBPUlRFRCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyB3ZSBpZ25vcmUgJ3Jlc2l6ZV9maXJzdCcgc2luY2UgdGhlIG1vcmUgbG9naWNhbCBhcHByb2FjaCB3b3VsZCBiZQ0KICAgICAgICAvLyBmb3IgdGhlIHVzZXIgdG8ganVzdCBjYWxsICR0aGlzLT5fcmVzaXplKCkgX2ZpcnN0XyA7KQ0KICAgICAgICBleHRyYWN0KGFycmF5X21lcmdlKCR0aGlzLT5fZ2V0X2RlZmF1bHRfdGV4dF9wYXJhbXMoKSwgJHBhcmFtcykpOw0KDQogICAgICAgICRvcHRpb25zID0gYXJyYXkoJ2NvbG9yRm9udCcgPT4gJGNvbG9yKTsNCiAgICAgICAgJGNvbG9yID0gJHRoaXMtPl9nZXRDb2xvcignY29sb3JGb250JywgJG9wdGlvbnMsIGFycmF5KDAsIDAsIDApKTsNCiAgICAgICAgJGNvbG9yID0gJHRoaXMtPmNvbG9yYXJyYXkyY29sb3JoZXgoJGNvbG9yKTsNCg0KICAgICAgICAkdGhpcy0+Y29tbWFuZFtdID0gJHRoaXMtPl9wcmVwYXJlX2NtZCgNCiAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9ORVRQQk1fUEFUSCwNCiAgICAgICAgICAgICdwcG1sYWJlbCcsDQogICAgICAgICAgICAnLWFuZ2xlICcgLiAoKGludCkgJGFuZ2xlKQ0KICAgICAgICAgICAgICAgIC4gJyAtY29sb3VyICcgLiBlc2NhcGVzaGVsbGFyZygkY29sb3IpDQogICAgICAgICAgICAgICAgLiAnIC1zaXplICcgLiAoKGZsb2F0KSAkc2l6ZSkNCiAgICAgICAgICAgICAgICAuICcgLXggJyAuICgoaW50KSAkeCkNCiAgICAgICAgICAgICAgICAuICcgLXkgJyAuICgoaW50KSAoJHkgKyAkc2l6ZSkpDQogICAgICAgICAgICAgICAgLiAnIC10ZXh0ICcgLiBlc2NhcGVzaGVsbGFyZygkdGV4dCkpOw0KDQogICAgfSAvLyBFbmQgYWRkVGV4dA0KDQogICAgLyoqDQogICAgICogSW1hZ2VfVHJhbnNmb3JtX0RyaXZlcl9OZXRQQk06Ol9wb3N0UHJvY2VzcygpDQogICAgICoNCiAgICAgKiBAcGFyYW0gJHR5cGUNCiAgICAgKiBAcGFyYW0gJHF1YWxpdHkNCiAgICAgKiBAcmV0dXJuIHN0cmluZyBBIGNoYWluIG9mIHNoZWxsIGNvbW1hbmQNCiAgICAgKiBAbGluayBodHRwOi8vbmV0cGJtLnNvdXJjZWZvcmdlLm5ldC9kb2MvZGlyZWN0b3J5Lmh0bWwNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBfcG9zdFByb2Nlc3MoJHR5cGUsICRxdWFsaXR5KQ0KICAgIHsNCiAgICAgICAgYXJyYXlfdW5zaGlmdCgkdGhpcy0+Y29tbWFuZCwgJHRoaXMtPl9wcmVwYXJlX2NtZCgNCiAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9ORVRQQk1fUEFUSCwNCiAgICAgICAgICAgIHN0cnRvbG93ZXIoJHRoaXMtPnR5cGUpIC4gJ3RvcG5tJywNCiAgICAgICAgICAgIGVzY2FwZXNoZWxsYXJnKCR0aGlzLT5pbWFnZSkpKTsNCiAgICAgICAgJGFyZyA9ICcnOw0KICAgICAgICAkdHlwZSA9IHN0cnRvbG93ZXIoJHR5cGUpOw0KICAgICAgICAkcHJvZ3JhbSA9ICcnOw0KICAgICAgICBzd2l0Y2ggKCR0eXBlKSB7DQogICAgICAgICAgICAvLyBwcG10byogY29udmVydGVycw0KICAgICAgICAgICAgY2FzZSAnZ2lmJzoNCiAgICAgICAgICAgICAgICBpZiAoIVN5c3RlbTo6d2hpY2goSU1BR0VfVFJBTlNGT1JNX05FVFBCTV9QQVRIIC4gJ3BwbXF1YW50Jw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAoKE9TX1dJTkRPV1MpID8gJy5leGUnIDogJycpKSkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcignQ291bGRuXCd0IGZpbmQgInBwbXF1YW50IiBiaW5hcnknLA0KICAgICAgICAgICAgICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX0VSUk9SX1VOU1VQUE9SVEVEKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJHRoaXMtPmNvbW1hbmRbXSA9ICR0aGlzLT5fcHJlcGFyZV9jbWQoDQogICAgICAgICAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9ORVRQQk1fUEFUSCwNCiAgICAgICAgICAgICAgICAgICAgJ3BwbXF1YW50JywNCiAgICAgICAgICAgICAgICAgICAgMjU2KTsNCiAgICAgICAgICAgIGNhc2UgJ2FjYWQnOg0KICAgICAgICAgICAgY2FzZSAnYm1wJzoNCiAgICAgICAgICAgIGNhc2UgJ2V5dXYnOg0KICAgICAgICAgICAgY2FzZSAnaWxibSc6DQogICAgICAgICAgICBjYXNlICdsZWFmJzoNCiAgICAgICAgICAgIGNhc2UgJ2xqJzoNCiAgICAgICAgICAgIGNhc2UgJ21pdHN1JzoNCiAgICAgICAgICAgIGNhc2UgJ21wZWcnOg0KICAgICAgICAgICAgY2FzZSAnbmVvJzoNCiAgICAgICAgICAgIGNhc2UgJ3BjeCc6DQogICAgICAgICAgICBjYXNlICdwaTEnOg0KICAgICAgICAgICAgY2FzZSAncGljdCc6DQogICAgICAgICAgICBjYXNlICdwaic6DQogICAgICAgICAgICBjYXNlICdwanhsJzoNCiAgICAgICAgICAgIGNhc2UgJ3B1enonOg0KICAgICAgICAgICAgY2FzZSAnc2l4ZWwnOg0KICAgICAgICAgICAgY2FzZSAndGdhJzoNCiAgICAgICAgICAgIGNhc2UgJ3VpbCc6DQogICAgICAgICAgICBjYXNlICd4cG0nOg0KICAgICAgICAgICAgY2FzZSAneXV2JzoNCiAgICAgICAgICAgICAgICAkcHJvZ3JhbSA9ICdwcG10bycgLiAkdHlwZTsNCiAgICAgICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgLy8gV2luZG93cyBpY29uDQogICAgICAgICAgICBjYXNlICd3aW5pY29uJzoNCiAgICAgICAgICAgIGNhc2UgJ2ljbyc6DQogICAgICAgICAgICAgICAgJHR5cGUgPSAnd2luaWNvbic7DQogICAgICAgICAgICAgICAgJHByb2dyYW0gPSAncHBtdG8nIC4gJHR5cGU7DQogICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgIC8vIHBibXRvKiBjb252ZXJ0ZXJzDQogICAgICAgICAgICBjYXNlICdhc2NpaSc6DQogICAgICAgICAgICBjYXNlICd0ZXh0JzoNCiAgICAgICAgICAgIGNhc2UgJ3R4dCc6DQogICAgICAgICAgICAgICAgJHR5cGUgPSAnYXNjaWknOw0KICAgICAgICAgICAgY2FzZSAnYXRrJzoNCiAgICAgICAgICAgIGNhc2UgJ2JidWJnJzoNCiAgICAgICAgICAgIGNhc2UgJ2Vwc2knOg0KICAgICAgICAgICAgY2FzZSAnZXBzb24nOg0KICAgICAgICAgICAgY2FzZSAnZXNjcDInOg0KICAgICAgICAgICAgY2FzZSAnaWNvbic6ICAgIC8vIFN1biBpY29uDQogICAgICAgICAgICBjYXNlICdnZW0nOg0KICAgICAgICAgICAgY2FzZSAnZ28nOg0KICAgICAgICAgICAgY2FzZSAnbGonOg0KICAgICAgICAgICAgY2FzZSAnbG4wMyc6DQogICAgICAgICAgICBjYXNlICdscHMnOg0KICAgICAgICAgICAgY2FzZSAnbWFjcCc6DQogICAgICAgICAgICBjYXNlICdtZGEnOg0KICAgICAgICAgICAgY2FzZSAnbWdyJzoNCiAgICAgICAgICAgIGNhc2UgJ3BpMyc6DQogICAgICAgICAgICBjYXNlICdwayc6DQogICAgICAgICAgICBjYXNlICdwbG90JzoNCiAgICAgICAgICAgIGNhc2UgJ3B0eCc6DQogICAgICAgICAgICBjYXNlICd3YnAnOg0KICAgICAgICAgICAgY2FzZSAneGJtJzoNCiAgICAgICAgICAgIGNhc2UgJ3gxMGJtJzoNCiAgICAgICAgICAgIGNhc2UgJ3libSc6DQogICAgICAgICAgICBjYXNlICd6aW5jJzoNCiAgICAgICAgICAgIGNhc2UgJzEweCc6DQogICAgICAgICAgICAgICAgJHByb2dyYW0gPSAncGJtdG8nIC4gJHR5cGU7DQogICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgIC8vIHBhbXRvKiBjb252ZXJ0ZXJzDQogICAgICAgICAgICBjYXNlICdqcGMnOg0KICAgICAgICAgICAgICAgICR0eXBlID0gJ2pwZWcyayc7DQogICAgICAgICAgICBjYXNlICdodG1sJzoNCiAgICAgICAgICAgIGNhc2UgJ3BmbSc6DQogICAgICAgICAgICBjYXNlICd0Z2EnOg0KICAgICAgICAgICAgICAgICRwcm9ncmFtID0gJ3BhbXRvJyAuICR0eXBlOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAvLyBwbm10byogY29udmVydGVycw0KICAgICAgICAgICAgY2FzZSAnanBjJzoNCiAgICAgICAgICAgICAgICAkdHlwZSA9ICdqcGVnMmsnOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAnd2ZhJzoNCiAgICAgICAgICAgICAgICAkdHlwZSA9ICdmaWFzY28nOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAnanBnJzoNCiAgICAgICAgICAgICAgICAkdHlwZSA9ICdqcGVnJzsNCiAgICAgICAgICAgIGNhc2UgJ2pwZWcnOg0KICAgICAgICAgICAgICAgICRhcmcgPSAnLS1xdWFsaXR5PScgLiAkcXVhbGl0eTsNCiAgICAgICAgICAgIGNhc2UgJ2piaWcnOg0KICAgICAgICAgICAgY2FzZSAnZml0cyc6DQogICAgICAgICAgICBjYXNlICdwYWxtJzoNCiAgICAgICAgICAgIGNhc2UgJ3BjbHhsJzoNCiAgICAgICAgICAgIGNhc2UgJ3BuZyc6DQogICAgICAgICAgICBjYXNlICdwcyc6DQogICAgICAgICAgICBjYXNlICdyYXN0JzoNCiAgICAgICAgICAgIGNhc2UgJ3JsZSc6DQogICAgICAgICAgICBjYXNlICdzZ2knOg0KICAgICAgICAgICAgY2FzZSAnc2lyJzoNCiAgICAgICAgICAgIGNhc2UgJ3RpZmYnOg0KICAgICAgICAgICAgY2FzZSAneHdkJzoNCiAgICAgICAgICAgICAgICAkcHJvZ3JhbSA9ICdwbm10bycgLiAkdHlwZTsNCiAgICAgICAgICAgICAgICBicmVhazsNCg0KICAgICAgICB9IC8vIHN3aXRjaA0KDQogICAgICAgIGlmICgkcHJvZ3JhbSA9PSAnJykgew0KICAgICAgICAgICAgJHByb2dyYW0gPSAncG5tdG8nIC4gJHR5cGU7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoIVN5c3RlbTo6d2hpY2goSU1BR0VfVFJBTlNGT1JNX05FVFBCTV9QQVRIIC4gJHByb2dyYW0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICgoT1NfV0lORE9XUykgPyAnLmV4ZScgOiAnJykpKSB7DQogICAgICAgICAgICByZXR1cm4gUEVBUjo6cmFpc2VFcnJvcigiQ291bGRuJ3QgZmluZCBcIiRwcm9ncmFtXCIgYmluYXJ5IiwNCiAgICAgICAgICAgICAgICBJTUFHRV9UUkFOU0ZPUk1fRVJST1JfVU5TVVBQT1JURUQpOw0KICAgICAgICB9DQogICAgICAgICR0aGlzLT5jb21tYW5kW10gPSAkdGhpcy0+X3ByZXBhcmVfY21kKA0KICAgICAgICAgICAgSU1BR0VfVFJBTlNGT1JNX05FVFBCTV9QQVRILA0KICAgICAgICAgICAgJHByb2dyYW0pOw0KICAgICAgICByZXR1cm4gaW1wbG9kZSgnfCcsICR0aGlzLT5jb21tYW5kKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBTYXZlIHRoZSBpbWFnZSBmaWxlDQogICAgICoNCiAgICAgKiBAcGFyYW0gJGZpbGVuYW1lIHN0cmluZyB0aGUgbmFtZSBvZiB0aGUgZmlsZSB0byB3cml0ZSB0bw0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGUgKGpwZWcscG5nLi4uKTsNCiAgICAgKiBAcGFyYW0gaW50ICRxdWFsaXR5IDc1DQogICAgICogQHJldHVybiBUUlVFIG9yIFBFQVIgRXJyb3Igb2JqZWN0IG9uIGVycm9yDQogICAgICovDQogICAgZnVuY3Rpb24gc2F2ZSgkZmlsZW5hbWUsICR0eXBlID0gbnVsbCwgJHF1YWxpdHkgPSA3NSkNCiAgICB7DQogICAgICAgICR0eXBlICAgID0gKGlzX251bGwoJHR5cGUpKSA/ICR0aGlzLT50eXBlIDogJHR5cGU7DQogICAgICAgICRvcHRpb25zID0gYXJyYXkoKTsNCiAgICAgICAgaWYgKCFpc19udWxsKCRxdWFsaXR5KSkgew0KICAgICAgICAgICAgJG9wdGlvbnNbJ3F1YWxpdHknXSA9ICRxdWFsaXR5Ow0KICAgICAgICB9DQogICAgICAgICRxdWFsaXR5ID0gJHRoaXMtPl9nZXRPcHRpb24oJ3F1YWxpdHknLCAkb3B0aW9ucywgJHF1YWxpdHkpOw0KDQogICAgICAgICRudWxsRGV2aWNlID0gKE9TX1dJTkRPV1MpID8gJ251bCcgOiAnL2Rldi9udWxsJzsNCg0KICAgICAgICAkY21kID0gJHRoaXMtPl9wb3N0UHJvY2VzcygkdHlwZSwgJHF1YWxpdHkpIC4gJz4gIicgLiAkZmlsZW5hbWUgLiAnIic7DQogICAgICAgIGV4ZWMoJGNtZCAuICcgMj4gICcgLiAkbnVsbERldmljZSwgJHJlcywgJGV4aXQpOw0KICAgICAgICBpZiAoISR0aGlzLT5rZWVwX3NldHRpbmdzX29uX3NhdmUpIHsNCiAgICAgICAgICAgICR0aGlzLT5mcmVlKCk7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gKCRleGl0ID09IDApID8gdHJ1ZSA6IFBFQVI6OnJhaXNlRXJyb3IoaW1wbG9kZSgnLiAnLCAkcmVzKSwNCiAgICAgICAgICAgIElNQUdFX1RSQU5TRk9STV9FUlJPUl9JTyk7DQogICAgfSAvLyBFbmQgc2F2ZQ0KDQogICAgLyoqDQogICAgICogRGlzcGxheSBpbWFnZSB3aXRob3V0IHNhdmluZyBhbmQgbG9zZSBjaGFuZ2VzDQogICAgICoNCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0eXBlIChqcGVnLHBuZy4uLik7DQogICAgICogQHBhcmFtIGludCAkcXVhbGl0eSA3NQ0KICAgICAqIEByZXR1cm4gVFJVRSBvciBQRUFSIEVycm9yIG9iamVjdCBvbiBlcnJvcg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIGRpc3BsYXkoJHR5cGUgPSBudWxsLCAkcXVhbGl0eSA9IG51bGwpDQogICAgew0KICAgICAgICAkdHlwZSAgICA9IChpc19udWxsKCR0eXBlKSkgPyAkdGhpcy0+dHlwZSA6ICR0eXBlOw0KICAgICAgICAkb3B0aW9ucyA9IGFycmF5KCk7DQogICAgICAgIGlmICghaXNfbnVsbCgkcXVhbGl0eSkpIHsNCiAgICAgICAgICAgICRvcHRpb25zWydxdWFsaXR5J10gPSAkcXVhbGl0eTsNCiAgICAgICAgfQ0KICAgICAgICAkcXVhbGl0eSA9ICR0aGlzLT5fZ2V0T3B0aW9uKCdxdWFsaXR5JywgJG9wdGlvbnMsIDc1KTsNCg0KICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtdHlwZTogJyAuICR0aGlzLT5nZXRNaW1lVHlwZSgkdHlwZSkpOw0KICAgICAgICAkY21kID0gJHRoaXMtPl9wb3N0UHJvY2VzcygkdHlwZSwgJHF1YWxpdHkpOw0KICAgICAgICBwYXNzdGhydSgkY21kIC4gJyAyPiYxJyk7DQogICAgICAgIGlmICghJHRoaXMtPmtlZXBfc2V0dGluZ3Nfb25fc2F2ZSkgew0KICAgICAgICAgICAgJHRoaXMtPmZyZWUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIERlc3Ryb3kgaW1hZ2UgaGFuZGxlDQogICAgICoNCiAgICAgKiBAcmV0dXJuIHZvaWQNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBmcmVlKCkNCiAgICB7DQogICAgICAgICR0aGlzLT5jb21tYW5kID0gYXJyYXkoKTsNCiAgICB9DQp9IC8vIEVuZCBjbGFzcyBJbWFnZUlN]]></data>
	</file>
	<file>
	  <filename>/lib/external/Image/~backup/Transform/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lib/external/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lib/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgZXhpdDsKJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwoKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwokZmxkcyA9ICIKCWlkIEkgS0VZLAoJdHlwZV9pZCBJLAoJdGl0bGUgQygyNTUpLAoJdGVtcGxhdGUgWAoiOwoKJHRhYm9wdGFycmF5ID0gYXJyYXkoJ215c3FsJyA9PiAnVFlQRT1NeUlTQU0nKTsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2NhdGFsb2dfdGVtcGxhdGUiLAoJCSRmbGRzLCAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRkYi0+Q3JlYXRlU2VxdWVuY2UoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfY2F0YWxvZ190ZW1wbGF0ZV9zZXEiKTsKCiRmbGRzID0gIgoJdHlwZV9pZCBJIEtFWSwKCW5hbWUgQygyNSkKIjsKCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9jYXRhbG9nX3RlbXBsYXRlX3R5cGUiLAoJCSRmbGRzLCAkdGFib3B0YXJyYXkpOwogICAgCiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuIGNtc19kYl9wcmVmaXgoKS4gJ21vZHVsZV9jYXRhbG9nX3RlbXBsYXRlX3R5cGUgVkFMVUVTICg/LD8pJzsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheShDVEVNUExBVEVfSVRFTSwgJHRoaXMtPkxhbmcoJ2l0ZW1fcGFnZScpKSk7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoQ1RFTVBMQVRFX0NBVEVHT1JZLCAkdGhpcy0+TGFuZygnY2F0ZWdvcnlfcGFnZScpKSk7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoQ1RFTVBMQVRFX0NBVEFMT0csICR0aGlzLT5MYW5nKCdjYXRhbG9nX3ByaW50YWJsZScpKSk7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoQ1RFTVBMQVRFX0NPTVBBUklTT04sICR0aGlzLT5MYW5nKCdpdGVtX2NvbXBhcmlzb24nKSkpOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KENURU1QTEFURV9GRUFUVVJFLCAkdGhpcy0+TGFuZygnY2F0YWxvZ19zaG9ydF9saXN0JykpKTsKCiRmbGRzID0gIgoJaWQgSSBLRVksCgl0eXBlX2lkIEksCglhdHRyaWJ1dGUgQygyNTUpLAoJb3JkZXJfYnkgSSwKCWFsaWFzIEMoNjApLAoJbGVuZ3RoIEksCglkZWZhdWx0dmFsIFgsCglmaWVsZF90eXBlIEMoMjUpIGRlZmF1bHQgJ3RleHQnLAoJc2VsZWN0X3ZhbHVlcyBYIGRlZmF1bHQgJycKIjsKCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9jYXRhbG9nX2F0dHIiLAoJCSRmbGRzLCAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRkYi0+Q3JlYXRlU2VxdWVuY2UoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfY2F0YWxvZ19hdHRyX3NlcSIpOwoKJHF1ZXJ5ICAgID0gJ0lOU0VSVCBJTlRPICcuIGNtc19kYl9wcmVmaXgoKS4gJ21vZHVsZV9jYXRhbG9nX2F0dHIgKGlkLHR5cGVfaWQsaXNfdGV4dGFyZWEsYXR0cmlidXRlKSBWQUxVRVMgKD8sPyw/LD8pJzsKJG5ld19pZCAgID0gJGRiLT5HZW5JRChjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9jYXRhbG9nX2F0dHJfc2VxJyk7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJG5ld19pZCwgMSwgMSwgJ0l0ZW0gTm90ZXMnKSk7CiRuZXdfaWQgICA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfY2F0YWxvZ19hdHRyX3NlcScpOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRuZXdfaWQsIDIsIDEsICdDYXRlZ29yeSBOb3RlcycpKTsKJG5ld19pZCAgID0gJGRiLT5HZW5JRChjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9jYXRhbG9nX2F0dHJfc2VxJyk7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJG5ld19pZCwgMywgMSwgJ0NhdGFsb2cgTm90ZXMnKSk7CiRuZXdfaWQgICA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfY2F0YWxvZ19hdHRyX3NlcScpOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRuZXdfaWQsIDEsIDAsICdXZWlnaHQnKSk7CiRuZXdfaWQgICA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfY2F0YWxvZ19hdHRyX3NlcScpOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRuZXdfaWQsIDEsIDAsICdNZWRpdW0vTWVkaWEnKSk7CiRuZXdfaWQgICA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfY2F0YWxvZ19hdHRyX3NlcScpOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRuZXdfaWQsIDEsIDAsICdEaW1lbnNpb25zJykpOwokbmV3X2lkICAgPSAkZGItPkdlbklEKGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2NhdGFsb2dfYXR0cl9zZXEnKTsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkbmV3X2lkLCAxLCAwLCAnUHJpY2UnKSk7CiRuZXdfaWQgICA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfY2F0YWxvZ19hdHRyX3NlcScpOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRuZXdfaWQsIDEsIDAsICdJbiBTdG9jaz8nKSk7CiRuZXdfaWQgICA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfY2F0YWxvZ19hdHRyX3NlcScpOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRuZXdfaWQsIDMsIDAsICdDb3B5cmlnaHQnKSk7CgokY2F0YWxvZ2RpcnMgPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgIGNtc19qb2luX3BhdGgoJ2ltYWdlcycsICdjYXRhbG9nJyksCiAgICAgICAgICAgICAgICAgICAgICBjbXNfam9pbl9wYXRoKCdpbWFnZXMnLCAnY2F0YWxvZ19zcmMnKSwKICAgICAgICAgICAgICAgICAgICAgICdjYXRhbG9nZXJmaWxlcycKICAgICAgICAgICAgICAgICAgICApOwoKZm9yZWFjaCAoJGNhdGFsb2dkaXJzIGFzICR0aGlzRGlyKQp7CiAgJGZpbGVEaXIgPSBjbXNfam9pbl9wYXRoKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpc0RpcgogICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgaWYoIWlzX2RpcigkZmlsZURpcikpCiAgewogICAgbWtkaXIoJGZpbGVEaXIpOwogIH0KICB0b3VjaCggY21zX2pvaW5fcGF0aCgkZmlsZURpciwgJ2luZGV4Lmh0bWwnKSApOwp9CgokdGhpcy0+aW1wb3J0U2FtcGxlVGVtcGxhdGVzKCk7ICAgICAgICAgICAKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2l0ZW1faW1hZ2VfY291bnQnLCAyKTsKJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ01vZGlmeSBDYXRhbG9nIFNldHRpbmdzJywgJ01vZGlmeSBDYXRhbG9nIFNldHRpbmdzJyk7CgokdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ2luc3RhbGxlZCcsJHRoaXMtPkdldFZlcnNpb24oKSkpOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCQlpZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwoJCSRkYiA9JiAkZ0Ntcy0+R2V0RGIoKTsKCQkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCgkJJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfY2F0YWxvZ190ZW1wbGF0ZSIgKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgoJCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2NhdGFsb2dfdGVtcGxhdGVfdHlwZSIgKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgoJCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2NhdGFsb2dfYXR0ciIgKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgoJCSRkYi0+RHJvcFNlcXVlbmNlKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9jYXRhbG9nX3RlbXBsYXRlX3NlcSIgKTsKCQkkZGItPkRyb3BTZXF1ZW5jZSggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfY2F0YWxvZ19hdHRyX3NlcSIgKTsKCiAgICAgICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3Nob3dfZXh0YW50Jyk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2NhdGVnb3J5X2ltYWdlX2NvdW50Jyk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2NhdGVnb3J5X2ltYWdlX3NpemVfaGVybycpOwogICAgICAgICR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdjYXRlZ29yeV9pbWFnZV9zaXplX3RodW1ibmFpbCcpOwogICAgICAgICR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdpdGVtX2ltYWdlX2NvdW50Jyk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3Nob3dfbWlzc2luZycpOwogICAgICAgICR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdpdGVtX2ltYWdlX3NpemVfdGh1bWJuYWlsJyk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2l0ZW1faW1hZ2Vfc2l6ZV9oZXJvJyk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2l0ZW1faW1hZ2VfY291bnQnKTsKICAgICAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnaW1hZ2VfYXNwZWN0X3JhdGlvJyk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2NhdGVnb3J5X3NvcnRfb3JkZXInKTsKICAgICAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgncHJpbnRhYmxlX3NvcnRfb3JkZXInKTsKICAgICAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnZm9yY2VfYXNwZWN0X3JhdGlvJyk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2ZsdXNoX2NhdHMnKTsKICAgICAgICAKCgkJJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ01vZGlmeSBDYXRhbG9nIFNldHRpbmdzJyk7CgkJJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCd1bmluc3RhbGxlZCcpKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCgkJaWYoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgZXhpdDsNCgkJJGRiID0gJGdDbXMtPkdldERiKCk7DQoJCSRjdXJyZW50X3ZlcnNpb24gPSAkb2xkdmVyc2lvbjsNCgkJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOw0KDQoJCXN3aXRjaCgkY3VycmVudF92ZXJzaW9uKQ0KCQl7DQoJCQljYXNlICIwLjEiOg0KCQkJY2FzZSAiMC4xLjUiOg0KCQkJY2FzZSAiMC4xLjYiOg0KCQkJY2FzZSAiMC4xLjciOg0KCQkJY2FzZSAiMC4yIjoNCgkJCWNhc2UgIjAuMyI6DQogICAgICAgICAgICAgICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2ltYWdlX2NvdW50Jyk7DQogICAgICBjYXNlICIwLjQiOg0KCQkJCSRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnLiBjbXNfZGJfcHJlZml4KCkuICdtb2R1bGVfY2F0YWxvZ190ZW1wbGF0ZV90eXBlIFZBTFVFUyAoPyw/KSc7DQogICAgICAgICAgICAJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSg1LCAkdGhpcy0+TGFuZygnY2F0YWxvZ19zaG9ydF9saXN0JykpKTsgDQogCQkJY2FzZSAiMC40LjEiOg0KCQkJY2FzZSAiMC40LjIiOg0KICAgICAgY2FzZSAiMC41IjoNCiAgICAgIGNhc2UgIjAuNS4xIjoNCiAgICAgIGNhc2UgIjAuNS4yIjoNCiAgICAgIGNhc2UgIjAuNS4zIjoNCiAgICAgIGNhc2UgIjAuNS40IjoNCiAgICAgIGNhc2UgIjAuNS41IjoNCiAgICAgIGNhc2UgIjAuNS42IjoNCgkJCQkkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2NhdGFsb2dfYXR0ciIsDQogICAJCQkJIAkiaXNfdGV4dGFyZWEgSSIpOw0KCQkJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCgkJCQkkcXVlcnkgPSAnSU5TRVJUIElOVE8gJy4gY21zX2RiX3ByZWZpeCgpLiAnbW9kdWxlX2NhdGFsb2dfYXR0ciAoaWQsdHlwZV9pZCxpc190ZXh0YXJlYSxhdHRyaWJ1dGUpIFZBTFVFUyAoPyw/LD8sPyknOw0KCQkgICAgICAgICRuZXdfaWQgPSAkZGItPkdlbklEKGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2NhdGFsb2dfYXR0cl9zZXEnKTsNCgkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRuZXdfaWQsIDEsIDEsICdub3RlcycpKTsNCgkJICAgICAgICAkbmV3X2lkID0gJGRiLT5HZW5JRChjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9jYXRhbG9nX2F0dHJfc2VxJyk7DQoJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkbmV3X2lkLCAyLCAxLCAnbm90ZXMnKSk7DQoJCSAgICAgICAgJG5ld19pZCA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfY2F0YWxvZ19hdHRyX3NlcScpOw0KCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJG5ld19pZCwgMywgMSwgJ25vdGVzJykpOw0KCQkJCSR0aGlzLT5BZGRFdmVudEhhbmRsZXIoICdDb3JlJywgJ0NvbnRlbnRFZGl0UG9zdCcsIGZhbHNlICk7DQoJCQljYXNlICIwLjYiOg0KCQkJY2FzZSAiMC42LjEiOg0KCQkJY2FzZSAiMC42LjIiOg0KCQkJCSRyZXMgPSAkZGItPkV4ZWN1dGUoInNlbGVjdCAqIGZyb20gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9jYXRhbG9nX2F0dHIiKTsNCgkJCQlpZiAoJHJlcyAmJiAkY29sdW1ucz0kcmVzLT5HZXRBcnJheSgxKSkNCgkJCQkJew0KCQkJCQkJLy8gaGF2ZW4ndCBjcmVhdGVkIHRoZSBzdHVmZiBhYm92ZSBiZWNhdXNlIEkgc2NyZXdlZCB1cCB2ZXJzaW9uIG51bWJlcnMhDQoJCQkJCQlpZiAoISBhcnJheV9rZXlfZXhpc3RzICgnaXNfdGV4dGFyZWEnLCAkY29sdW1uc1swXSkpDQoJCQkJCQkJew0KCQkJCQkJCS8vIHNvIGZpeCBpdCENCgkJCQkJCQkkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2NhdGFsb2dfYXR0ciIsDQoJCQkgICAJCQkJIAkiaXNfdGV4dGFyZWEgSSIpOw0KCQkJCQkJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCgkJCQkJCQkkcXVlcnkgPSAnSU5TRVJUIElOVE8gJy4gY21zX2RiX3ByZWZpeCgpLiAnbW9kdWxlX2NhdGFsb2dfYXR0ciAoaWQsdHlwZV9pZCxpc190ZXh0YXJlYSxhdHRyaWJ1dGUpIFZBTFVFUyAoPyw/LD8sPyknOw0KCQkJCQkgICAgICAgICRuZXdfaWQgPSAkZGItPkdlbklEKGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2NhdGFsb2dfYXR0cl9zZXEnKTsNCgkJCQkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRuZXdfaWQsIDEsIDEsICdub3RlcycpKTsNCgkJCQkJICAgICAgICAkbmV3X2lkID0gJGRiLT5HZW5JRChjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9jYXRhbG9nX2F0dHJfc2VxJyk7DQoJCQkJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkbmV3X2lkLCAyLCAxLCAnbm90ZXMnKSk7DQoJCQkJCSAgICAgICAgJG5ld19pZCA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfY2F0YWxvZ19hdHRyX3NlcScpOw0KCQkJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJG5ld19pZCwgMywgMSwgJ25vdGVzJykpOw0KCQkJCQkJCSR0aGlzLT5BZGRFdmVudEhhbmRsZXIoICdDb3JlJywgJ0NvbnRlbnRFZGl0UG9zdCcsIGZhbHNlICk7DQoJCQkJCQkJfQ0KCQkJCQl9DQoJCQljYXNlICIwLjciOg0KCQkJY2FzZSAiMC43LjIiOg0KCQkJY2FzZSAiMC43LjMiOg0KCQkJY2FzZSAiMC43LjQiOg0KCQkJY2FzZSAiMC43LjUiOg0KCQkJY2FzZSAiMC43LjYiOg0KCQkJCSRjYXRhbG9nZGlycyA9IGFycmF5KCcvY2F0YWxvZ2VyZmlsZXMnKTsNCgkJCQlmb3JlYWNoICgkY2F0YWxvZ2RpcnMgYXMgJHRoaXNEaXIpDQoJCQkJCXsNCgkgICAgICAgIAkJJGZpbGVEaXIgPSBkaXJuYW1lKCRnQ21zLT5jb25maWdbJ3VwbG9hZHNfcGF0aCddLiR0aGlzRGlyLicvaW5kZXguaHRtbCcpOw0KCSAgICAgICAgCQlpZiAoIWlzX2RpcigkZmlsZURpcikpDQoJICAgICAgICAgICAgCQl7DQoJICAgICAgICAgICAgCQlta2RpcigkZmlsZURpcik7DQoJICAgICAgICAgICAgCQl9DQoJCQkJCXRvdWNoKCRmaWxlRGlyLicvaW5kZXguaHRtbCcpOw0KCSAgICAgICAgICAgIAl9DQoJCQkJJHRoaXMtPmltcG9ydFNhbXBsZVRlbXBsYXRlcygnQ29tcGFyaXNvbicpOw0KCQkJY2FzZSAiMC43LjciOg0KCQkJY2FzZSAiMC44YjEiOg0KCQkJCSRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfY2F0YWxvZ19hdHRyIiwNCiAgIAkJCQkgCSJvcmRlcl9ieSBJIik7DQoJCQkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KCQkJCSRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfY2F0YWxvZ19hdHRyIiwNCiAgIAkJCQkgCSJhbGlhcyBDKDYwKSIpOw0KCQkJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCgkJCQkkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2NhdGFsb2dfYXR0ciIsDQogICAJCQkJIAkibGVuZ3RoIEkiKTsNCgkJCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoJCQkJJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9jYXRhbG9nX2F0dHIiLA0KICAgCQkJCSAJImRlZmF1bHR2YWwgWCIpOw0KCQkJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCgkJCWNhc2UgIjAuOC4wIjoNCgkJCQkkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2NhdGFsb2dfYXR0ciIsDQoJCQkJIAkiZmllbGRfdHlwZSBDKDI1KSBkZWZhdWx0ICd0ZXh0JyIpOw0KCQkJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCgkJCQkkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2NhdGFsb2dfYXR0ciIsDQoJCQkJIAkic2VsZWN0X3ZhbHVlcyBYIGRlZmF1bHQgJyciKTsNCgkJCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoJCQljYXNlICIwLjguMSI6DQoJCQkJJHJlcyA9ICRkYi0+RXhlY3V0ZSgidXBkYXRlICIuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfY2F0YWxvZ19hdHRyIHNldCBmaWVsZF90eXBlPVwndGV4dGFyZWFcJyB3aGVyZSBpc190ZXh0YXJlYT0xJyk7DQoJCQkJJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfY2F0YWxvZ19hdHRyJywgJ2lzX3RleHRhcmVhJyk7DQoJICAgICAgICAJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KICAgICAgY2FzZSAiMC4xMS4zIjogIA0KICAgICAgY2FzZSAiMS4wIjogICAgICAgICAgICAgICANCiAgICAgIGNhc2UgIjEuMC4xIjogICAgICAgICAgICAgICANCiAgICAgICAgLy8gdGhpcyB3YXMgYSBtaXN0YWtlLCBub3cgd2UgdXNlIGRpbmFtaWMsIHNvIHdlIHJlbW92ZSBzdGF0aWMgcm91dGVzDQogICAgICAgIGNtc19yb3V0ZV9tYW5hZ2VyOjpkZWxfc3RhdGljKCcnLCR0aGlzLT5HZXROYW1lKCkpOw0KICAgIH0NCg0KCQkkdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ3VwZ3JhZGVkJywkdGhpcy0+R2V0VmVyc2lvbigpKSk7DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9IENhdGFsb2dlcgp2ZXJzaW9uID0gMS4wLjIKZGVzY3JpcHRpb24gPSAKYXV0aG9yID0gSm9Nb3JnCmF1dGhvcmVtYWlsID0gam9tb3JnLm1vcmdAZ21haWwuY29tCm1pbmNtc3ZlcnNpb24gPSAyLjEKbGF6eWxvYWRhZG1pbiA9IDAKbGF6eWxvYWRmcm9udGVuZCA9IDAK]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/adminattrs.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRpbm5lcm5hdn0NCjxiciAvPg0KPGgzPnskY2F0ZWdvcnl9PC9oMz4NCntpZiAkbWVzc2FnZSAhPSAnJ308aDQ+eyRtZXNzYWdlfTwvaDQ+ey9pZn0NCiAgeyRzdGFydGZvcm19DQogIHskdGFiX2hlYWRlcnN9DQogIHskc3RhcnRfaXRlbV90YWJ9DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCTxwPnskdGl0bGVfaXRlbV9hdHRyaWJ1dGVzX2hlbHB9PC9wPg0KCTx0YWJsZSBjbGFzcz0icGFnZXRhYmxlIiBjZWxsc3BhY2luZz0iMCI+DQoJCTx0cj48dGg+eyR0aXRsZV9maWVsZF90eXBlfTwvdGg+PHRoPnskdGl0bGVfaXRlbV9hdHRyaWJ1dGVzfTwvdGg+PHRoPnskdGl0bGVfYXR0cl9hbGlhc308L3RoPjx0aD57JHRpdGxlX2F0dHJfZGVmYXVsdH08L3RoPjx0aD57JHRpdGxlX2F0dHJfbGVuZ3RofTwvdGg+PHRoPnskdGl0bGVfc2VsZWN0X3ZhbHVlc308L3RoPjx0aD57JHRpdGxlX2F0dHJfb3JkZXJfYnl9PC90aD4NCgkJCTx0aD57KiR0aXRsZV9pc190ZXh0ZmllbGQqfTwvdGg+PHRoPnskdGl0bGVfZGVsZXRlfTwvdGg+PC90cj4NCgkgICB7Zm9yZWFjaCBmcm9tPSRhdHRyaWJ1dGVfaW5wdXRzIGl0ZW09ZW50cnl9DQoJCQl7aWYgJGVudHJ5LT50eXBlID09IDF9DQogICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5maWVsZF90eXBlfTwvdGQ+PHRkPnskZW50cnktPmlucHV0fTwvdGQ+PHRkPnskZW50cnktPmFsaWFzaW5wdXR9PC90ZD48dGQ+eyRlbnRyeS0+ZGVmYXVsdGlucHV0fTwvdGQ+PHRkPnskZW50cnktPmxlbmlucHV0fTwvdGQ+PHRkPnskZW50cnktPnNlbGVjdF92YWx1ZXN9PC90ZD48dGQ+eyRlbnRyeS0+b3JkZXJfc2VsfTwvdGQ+DQoJCQkgIDx0ZD57JGVudHJ5LT5pc3RleHR8ZGVmYXVsdDowfTwvdGQ+PHRkPnskZW50cnktPmRlbGV0ZX17JGVudHJ5LT5oaWRkZW59PC90ZD48L3RyPg0KICAgICAgICAgICAgey9pZn0NCgkgICB7L2ZvcmVhY2h9DQoJPC90YWJsZT4NCjwvZGl2Pg0KeyRlbmRfdGFifQ0KeyRzdGFydF9jYXRlZ29yeV90YWJ9DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCTxwPnskdGl0bGVfY2F0ZWdvcnlfYXR0cmlidXRlc19oZWxwfTwvcD4NCgk8dGFibGUgY2xhc3M9InBhZ2V0YWJsZSIgY2VsbHNwYWNpbmc9IjAiPg0KCQk8dHI+PHRoPnskdGl0bGVfZmllbGRfdHlwZX08L3RoPjx0aD57JHRpdGxlX2NhdGVnb3J5X2F0dHJpYnV0ZXN9PC90aD48dGg+eyR0aXRsZV9hdHRyX2FsaWFzfTwvdGg+PHRoPnskdGl0bGVfYXR0cl9kZWZhdWx0fTwvdGg+PHRoPnskdGl0bGVfYXR0cl9sZW5ndGh9PC90aD48dGg+eyR0aXRsZV9zZWxlY3RfdmFsdWVzfTwvdGg+PHRoPnskdGl0bGVfYXR0cl9vcmRlcl9ieX08L3RoPg0KCQkJPHRoPnsqJHRpdGxlX2lzX3RleHRmaWVsZCp9PC90aD48dGg+eyR0aXRsZV9kZWxldGV9PC90aD48L3RyPg0KCSAgIHtmb3JlYWNoIGZyb209JGF0dHJpYnV0ZV9pbnB1dHMgaXRlbT1lbnRyeX0NCgkJCXtpZiAkZW50cnktPnR5cGUgPT0gMn0NCgkgICAgICAgIDx0cj48dGQ+eyRlbnRyeS0+ZmllbGRfdHlwZX08L3RkPjx0ZD57JGVudHJ5LT5pbnB1dH08L3RkPjx0ZD57JGVudHJ5LT5hbGlhc2lucHV0fTwvdGQ+PHRkPnskZW50cnktPmRlZmF1bHRpbnB1dH08L3RkPjx0ZD57JGVudHJ5LT5sZW5pbnB1dH08L3RkPjx0ZD57JGVudHJ5LT5zZWxlY3RfdmFsdWVzfTwvdGQ+PHRkPnskZW50cnktPm9yZGVyX3NlbH08L3RkPg0KCQkJCTx0ZD57JGVudHJ5LT5pc3RleHR8ZGVmYXVsdDowfTwvdGQ+PHRkPnskZW50cnktPmRlbGV0ZX17JGVudHJ5LT5oaWRkZW59PC90ZD48L3RyPg0KCSAgICAgICAgey9pZn0NCgkgICB7L2ZvcmVhY2h9DQoJPC90YWJsZT4NCjwvZGl2Pg0KeyRlbmRfdGFifQ0KeyRzdGFydF9jYXRhbG9nX3RhYn0NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJPHA+eyR0aXRsZV9jYXRhbG9nX2F0dHJpYnV0ZXNfaGVscH08L3A+DQoJPHRhYmxlIGNsYXNzPSJwYWdldGFibGUiIGNlbGxzcGFjaW5nPSIwIj4NCgkJPHRyPjx0aD57JHRpdGxlX2ZpZWxkX3R5cGV9PC90aD48dGg+eyR0aXRsZV9jYXRhbG9nX2F0dHJpYnV0ZXN9PC90aD48dGg+eyR0aXRsZV9hdHRyX2FsaWFzfTwvdGg+PHRoPnskdGl0bGVfYXR0cl9kZWZhdWx0fTwvdGg+PHRoPnskdGl0bGVfYXR0cl9sZW5ndGh9PC90aD48dGg+eyR0aXRsZV9zZWxlY3RfdmFsdWVzfTwvdGg+PHRoPnskdGl0bGVfYXR0cl9vcmRlcl9ieX08L3RoPg0KCQkJPHRoPnsqJHRpdGxlX2lzX3RleHRmaWVsZCp9PC90aD48dGg+eyR0aXRsZV9kZWxldGV9PC90aD48L3RyPg0KCSAgIHtmb3JlYWNoIGZyb209JGF0dHJpYnV0ZV9pbnB1dHMgaXRlbT1lbnRyeX0NCgkJCXtpZiAkZW50cnktPnR5cGUgPT0gM30NCgkgICAgICAgIDx0cj4NCgkgICAgICAgICAgPHRkPnskZW50cnktPmZpZWxkX3R5cGV9PC90ZD48dGQ+eyRlbnRyeS0+aW5wdXR9PC90ZD48dGQ+eyRlbnRyeS0+YWxpYXNpbnB1dH08L3RkPjx0ZD57JGVudHJ5LT5kZWZhdWx0aW5wdXR9PC90ZD48dGQ+eyRlbnRyeS0+bGVuaW5wdXR9PC90ZD48dGQ+eyRlbnRyeS0+c2VsZWN0X3ZhbHVlc308L3RkPjx0ZD57JGVudHJ5LT5vcmRlcl9zZWx9PC90ZD4NCgkgICAgICAgICAgPHRkPnskZW50cnktPmlzdGV4dHxkZWZhdWx0OjB9PC90ZD48dGQ+eyRlbnRyeS0+ZGVsZXRlfXskZW50cnktPmhpZGRlbn08L3RkPjwvdHI+DQoJICAgICAgICB7L2lmfQ0KCSAgIHsvZm9yZWFjaH0NCgk8L3RhYmxlPg0KPC9kaXY+DQp7JGVuZF90YWJ9DQoJPHA+eyR0aXRsZV9hdHRyX2xlbmd0aF9oZWxwfTwvcD4NCnskdGFiX2Zvb3RlcnN9DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fTwvcD4NCgk8L2Rpdj4NCnskZW5kZm9ybX0NCg==]]></data>
	</file>
	<file>
	  <filename>/templates/adminglobalops.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRpbm5lcm5hdn0KPGJyIC8+CjxoMz57JGNhdGVnb3J5fTwvaDM+CntpZiAkbWVzc2FnZSE9Jyd9PGg0PnskbWVzc2FnZX08L2g0PnsvaWZ9Cnskc3RhcnRmb3JtfQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskdGl0bGVfY2F0ZWdvcnlfcmVjdXJzZX08L3A+CiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9jYXRlZ29yeV9yZWN1cnNlfTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskdGl0bGVfaXRlbXNfcGVyX3BhZ2V9PC9wPgogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaXRlbXNfcGVyX3BhZ2V9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyR0aXRsZV9pdGVtX3NvcnRfb3JkZXJ9PC9wPgogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaXRlbV9zb3J0X29yZGVyfTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH08L3A+Cgk8L2Rpdj4KeyRlbmRmb3JtfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/adminpanel.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogVG9wIGxpbmtzIG5hdiAqfQ0KeyRpbm5lcm5hdn0NCg0KeyogYWRtaW4gdXNlciBtZXNzYWdlcyAqfQ0KPGgzPnskc2VjdGlvbn08L2gzPg0Ke2lmICRtZXNzYWdlICE9ICcnfQ0KICA8aDQ+eyRtZXNzYWdlfTwvaDQ+DQp7L2lmfQ0KDQp7KiBUQUJTICp9DQp7JHRhYl9oZWFkZXJzfQ0KICB7JHN0YXJ0X2l0ZW1fcGFnZV90ZW1wbGF0ZXNfdGFifQ0KICAgIDx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPg0KICAgICAgPHRoZWFkPg0KICAgICAgICA8dHI+DQogICAgICAgICAgPHRoPnskdGl0bGVfdGVtcGxhdGV9PC90aD4NCiAgICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPg0KICAgICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+DQogICAgICAgIDwvdHI+DQogICAgICA8L3RoZWFkPg0KICAgICAgPHRib2R5Pg0KICAgICAgICB7Zm9yZWFjaCBmcm9tPSRQYWdlSXRlbXMgaXRlbT1lbnRyeX0NCiAgICAgICAgICB7Y3ljbGUgdmFsdWVzPSJyb3cxLHJvdzIiIGFzc2lnbj0ncm93Y2xhc3MnfQ0KDQogICAgICAgICAgPHRyIGNsYXNzPSJ7JHJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfSc7Ij4NCiAgICAgICAgICAgIDx0ZD57JGVudHJ5LT50aXRsZX08L3RkPg0KICAgICAgICAgICAgPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+DQogICAgICAgICAgICA8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIHsvZm9yZWFjaH0NCiAgICAgIDwvdGJvZHk+ICAgIA0KICAgIDwvdGFibGU+DQogICAgPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPg0KICAgICAgPHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGFkZGxpbmt9PC9wPg0KICAgIDwvZGl2Pg0KICB7JGVuZF90YWJ9DQogIA0KICB7JHN0YXJ0X2NhdGVnb3J5X3BhZ2VfdGVtcGxhdGVzX3RhYn0NCiAgICA8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4NCiAgICAgIDx0aGVhZD4NCiAgICAgICAgPHRyPg0KICAgICAgICAgIDx0aD57JHRpdGxlX3RlbXBsYXRlfTwvdGg+DQogICAgICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4NCiAgICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPg0KICAgICAgICA8L3RyPg0KICAgICAgPC90aGVhZD4NCiAgICAgIDx0Ym9keT4NCiAgICAgICAge2ZvcmVhY2ggZnJvbT0kUGFnZUNhdGVnb3JpZXMgaXRlbT1lbnRyeX0NCiAgICAgICAgICB7Y3ljbGUgdmFsdWVzPSJyb3cxLHJvdzIiIGFzc2lnbj0ncm93Y2xhc3MnfQ0KDQogICAgICAgICAgPHRyIGNsYXNzPSJ7JHJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfSc7Ij4NCiAgICAgICAgICAgIDx0ZD57JGVudHJ5LT50aXRsZX08L3RkPg0KICAgICAgICAgICAgPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+DQogICAgICAgICAgICA8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIHsvZm9yZWFjaH0NCiAgICAgIDwvdGJvZHk+ICAgIA0KICAgIDwvdGFibGU+DQogICAgPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPg0KICAgICAgPHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGFkZGxpbmt9PC9wPg0KICAgIDwvZGl2Pg0KICB7JGVuZF90YWJ9DQogIA0KICB7JHN0YXJ0X3ByaW50YWJsZV9jYXRhbG9nX3RlbXBsYXRlc190YWJ9DQogICAgPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+DQogICAgICA8dGhlYWQ+DQogICAgICAgIDx0cj4NCiAgICAgICAgICA8dGg+eyR0aXRsZV90ZW1wbGF0ZX08L3RoPg0KICAgICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+DQogICAgICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4NCiAgICAgICAgPC90cj4NCiAgICAgICAgPC90aGVhZD4NCiAgICAgICAgPHRib2R5Pg0KICAgICAgICB7Zm9yZWFjaCBmcm9tPSRQcmludGFibGVDYXRhbG9ncyBpdGVtPWVudHJ5fQ0KICAgICAgICAgIHtjeWNsZSB2YWx1ZXM9InJvdzEscm93MiIgYXNzaWduPSdyb3djbGFzcyd9DQoNCiAgICAgICAgICA8dHIgY2xhc3M9Inskcm93Y2xhc3N9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9JzsiPg0KICAgICAgICAgICAgPHRkPnskZW50cnktPnRpdGxlfTwvdGQ+DQogICAgICAgICAgICA8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4NCiAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgey9mb3JlYWNofQ0KICAgICAgPC90Ym9keT4gICAgDQogICAgPC90YWJsZT4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+DQogICAgICA8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkbGlua308L3A+DQogICAgPC9kaXY+DQogIHskZW5kX3RhYn0NCiAgDQogIHskc3RhcnRfaXRlbV9jb21wYXJpc29uX3RlbXBsYXRlc190YWJ9DQogICAgPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+DQogICAgICA8dGhlYWQ+DQogICAgICAgIDx0cj4NCiAgICAgICAgICA8dGg+eyR0aXRsZV90ZW1wbGF0ZX08L3RoPg0KICAgICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+DQogICAgICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4NCiAgICAgICAgPC90cj4NCiAgICAgIDwvdGhlYWQ+DQogICAgICA8dGJvZHk+DQogICAgICAgIHtmb3JlYWNoIGZyb209JEl0ZW1Db21wYXJpc29ucyBpdGVtPWVudHJ5fQ0KICAgICAgICAgIHtjeWNsZSB2YWx1ZXM9InJvdzEscm93MiIgYXNzaWduPSdyb3djbGFzcyd9DQoNCiAgICAgICAgICA8dHIgY2xhc3M9Inskcm93Y2xhc3N9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9JzsiPg0KICAgICAgICAgICAgPHRkPnskZW50cnktPnRpdGxlfTwvdGQ+DQogICAgICAgICAgICA8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4NCiAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgey9mb3JlYWNofQ0KICAgICAgPC90Ym9keT4gICAgDQogICAgPC90YWJsZT4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+DQogICAgICA8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkbGlua308L3A+DQogICAgPC9kaXY+DQogIHskZW5kX3RhYn0NCiAgDQogIHskc3RhcnRfZmVhdHVyZV9saXN0X3RlbXBsYXRlc190YWJ9DQogICAgPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+DQogICAgICA8dGhlYWQ+DQogICAgICAgIDx0cj4NCiAgICAgICAgICA8dGg+eyR0aXRsZV90ZW1wbGF0ZX08L3RoPg0KICAgICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+DQogICAgICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4NCiAgICAgICAgPC90cj4NCiAgICAgIDwvdGhlYWQ+DQogICAgICA8dGJvZHk+DQogICAgICAgIHtmb3JlYWNoIGZyb209JEZlYXR1cmVMaXN0cyBpdGVtPWVudHJ5fQ0KICAgICAgICAgIHtjeWNsZSB2YWx1ZXM9InJvdzEscm93MiIgYXNzaWduPSdyb3djbGFzcyd9DQoNCiAgICAgICAgICA8dHIgY2xhc3M9Inskcm93Y2xhc3N9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9JzsiPg0KICAgICAgICAgICAgPHRkPnskZW50cnktPnRpdGxlfTwvdGQ+DQogICAgICAgICAgICA8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4NCiAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgey9mb3JlYWNofQ0KICAgICAgPC90Ym9keT4gICAgDQogICAgPC90YWJsZT4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+DQogICAgICA8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkbGlua308L3A+DQogICAgPC9kaXY+DQogIHskZW5kX3RhYn0NCnskdGFiX2Zvb3RlcnN9DQp7KiBUT0RPOiBtYWtlIHN1cmUgd2UgaGF2ZSBvbmUgeyRhZGRsaW5rLXR5cGUtfSBwZXIgdGVtcGxhdGUgdHlwZSAqfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/adminprefs.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRpbm5lcm5hdn0KPGJyIC8+CjxoMz57JGNhdGVnb3J5fTwvaDM+CntpZiAkbWVzc2FnZSE9Jyd9PHAgY2xhc3M9InBhZ2VtZXNzYWdlIj57JG1lc3NhZ2V9PC9wPnsvaWZ9Cnskc3RhcnRmb3JtfQp7JHRhYl9oZWFkZXJzfQp7JHN0YXJ0X2l0ZW1faW1hZ2VfdGFifQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskdGl0bGVfaXRlbV9pbWFnZV9jb3VudH08L3A+CiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9pdGVtX2ltYWdlX2NvdW50fTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskdGl0bGVfc2hvd19vbmx5X2V4aXN0aW5nX2ltYWdlc308L3A+CiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9zaG93X29ubHlfZXhpc3RpbmdfaW1hZ2VzfTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskdGl0bGVfaXRlbV9pbWFnZV9zaXplX2hlcm99PC9wPgogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaXRlbV9pbWFnZV9zaXplX2hlcm99PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyR0aXRsZV9pdGVtX2ltYWdlX3NpemVfdGh1bWJuYWlsfTwvcD4KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2l0ZW1faW1hZ2Vfc2l6ZV90aHVtYm5haWx9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyR0aXRsZV9pdGVtX2ltYWdlX3NpemVfY2F0ZWdvcnl9PC9wPgogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaXRlbV9pbWFnZV9zaXplX2NhdGVnb3J5fTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskdGl0bGVfaXRlbV9pbWFnZV9zaXplX2NhdGFsb2d9PC9wPgogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaXRlbV9pbWFnZV9zaXplX2NhdGFsb2d9PC9wPgoJPC9kaXY+CnskZW5kX3RhYn0KeyRzdGFydF9maWxlX3RhYn0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHRpdGxlX2l0ZW1fZmlsZV9jb3VudH08L3A+CgkgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9pdGVtX2ZpbGVfY291bnR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyR0aXRsZV9pdGVtX2ZpbGVfdHlwZXN9PC9wPgogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaXRlbV9maWxlX3R5cGVzfTwvcD4KCTwvZGl2Pgp7JGVuZF90YWJ9Cnskc3RhcnRfY2F0ZWdvcnlfaW1hZ2VfdGFifQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskdGl0bGVfY2F0ZWdvcnlfaW1hZ2VfY291bnR9PC9wPgogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfY2F0ZWdvcnlfaW1hZ2VfY291bnR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyR0aXRsZV9jYXRlZ29yeV9pbWFnZV9zaXplX2hlcm99PC9wPgogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV9oZXJvfTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskdGl0bGVfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV90aHVtYm5haWx9PC9wPgogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfY2F0ZWdvcnlfaW1hZ2Vfc2l6ZV90aHVtYm5haWx9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyR0aXRsZV9jYXRlZ29yeV9yZWN1cnNlfTwvcD4KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2NhdGVnb3J5X3JlY3Vyc2V9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyR0aXRsZV9pdGVtc19wZXJfcGFnZX08L3A+CiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9pdGVtc19wZXJfcGFnZX08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHRpdGxlX2l0ZW1fc29ydF9vcmRlcn08L3A+CiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9pdGVtX3NvcnRfb3JkZXJ9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyR0aXRsZV9mbHVzaF9jYXRzfTwvcD4KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2ZsdXNoX2NhdHN9PC9wPgoJPC9kaXY+CnskZW5kX3RhYn0KeyRzdGFydF9wcmludGFibGVfdGFifQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskdGl0bGVfcHJpbnRhYmxlX3NvcnRfb3JkZXJ9PC9wPgogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcHJpbnRhYmxlX3NvcnRfb3JkZXJ9PC9wPgoJPC9kaXY+CnskZW5kX3RhYn0KeyRzdGFydF9pbWFnZV90YWJ9Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyR0aXRsZV9zaG93X21pc3NpbmdfaW1hZ2VzfTwvcD4KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3Nob3dfbWlzc2luZ19pbWFnZXN9PC9wPgoJPC9kaXY+CnskZW5kX3RhYn0KeyRzdGFydF9wYXRoX3RhYn0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJeyRwYXRoX2hlbHB9Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHRpdGxlX2ltYWdlX3VwbG9hZF9wYXRofTwvcD4KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2ltYWdlX3VwbG9hZF9wYXRofTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskdGl0bGVfaW1hZ2VfcHJvY19wYXRofTwvcD4KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2ltYWdlX3Byb2NfcGF0aH08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHRpdGxlX2ZpbGVfdXBsb2FkX3BhdGh9PC9wPgogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfZmlsZV91cGxvYWRfcGF0aH08L3A+Cgk8L2Rpdj4KCnskZW5kX3RhYn0KeyR0YWJfZm9vdGVyc30KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9PC9wPgoJPC9kaXY+CnskZW5kZm9ybX0K]]></data>
	</file>
	<file>
	  <filename>/templates/changelog.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHVsPgogIDxsaT5WZXJzaW9uIDEuMC4yIC0gTm92ZW1iZXIgMjAxNi4KICAgICAgPHVsPgogICAgICAgIDxsaT5SZW1vdmVkIHNvbWUgbGVnYWN5IGNvZGUuPC9saT4KICAgICAgICA8bGk+Rml4ZWQgYWN0aW9ucyA8c3Ryb25nPmFsbDwvc3Ryb25nPiwgPHN0cm9uZz5yZWNlbnQ8L3N0cm9uZz4sIDxzdHJvbmc+cmFuZG9tPC9zdHJvbmc+IGFuZCA8c3Ryb25nPmNvbXBhcmU8L3N0cm9uZz4uPC9saT4KICAgICAgICA8bGk+Rml4ZWQgY2F0ZWdvcnkgcHJldmlld3MuPC9saT4KICAgICAgICA8bGk+Rml4ZWQgZGVmYXVsdCB0ZW1wbGF0ZXMuPC9saT4KICAgICAgICA8bGk+Rml4ZWQgYSBidWcgaW4gaW1hZ2UgcHJvY2Vzc2luZyB3aGljaCBwcmV2ZW50ZWQgcHJvY2Vzc2VkIGltYWdlcyB0byBiZSBzYXZlZCBvbiB0aGUgY29ycmVjdCBkaXJlY3RvcnkuPC9saT4KICAgICAgICA8bGk+Rml4ZWQgYSBidWcgd2l0aCByb3V0ZXMgd2hpY2ggbWFkZSBpbWFnZXMgZnJvbnRlbmQgcmVuZGVyaW5nIHJhbmRvbWx5IGZhaWwuPC9saT4KICAgICAgICA8bGk+QSBodWdlIG51bWJlciBvZiBtaW5vciBmaXhlcyBhbmQgdHdlYWtzLjwvbGk+CiAgICAgICAgPGxpPlVwZGF0ZWQgdGhpcyBjaGFuZ2Vsb2cgd2hpY2ggd2FzIGJlaW5nIGZvcmdvdHRlbiBzaW5jZSB2ZXJzaW9uIDAuMTEuMy48L2xpPgogICAgICA8L3VsPgogIDwvbGk+CiAgPGxpPlZlcnNpb24gMS4wLjEgLSBPY3RvYmVyIDIwMTYuCiAgICAgIDx1bD4KICAgICAgICA8bGk+Rml4ZWQgYSBzdHVwaWQgZXJyb3I6IGZpbGUgbWlzc2luZywgZGVsZXRlZCBieSBtaXN0YWtlLjwvbGk+CiAgICAgIDwvdWw+CiAgPC9saT4KICA8bGk+VmVyc2lvbiAxLjAgLSBPY3RvYmVyIDIwMTYuCiAgICA8dWw+CiAgICAgIDxsaT4KICAgICAgICBDYXRhbG9nZXIgaXMgbm93IGV4Y2x1c2l2ZWx5IGNvbXBhdGlibGUgd2l0aCBDTVNNUyAyLng7CiAgICAgIDwvbGk+IAogICAgICA8bGk+CiAgICAgICAgQ2F0YWxvZ2VyIGlzIG5vdyBjb21wYXRpYmxlIHdpdGggUEhQIDcueDsKICAgICAgPC9saT4gIAogICAgICA8bGk+CiAgICAgICAgQ2F0YWxvZ2VyIGFkbWluIG1lbnUgaGFzIG1vdmVkIHRvIGNvbnRlbnQgc2VjdGlvbjsKICAgICAgPC9saT4gCiAgICAgIDxsaT4KICAgICAgICBjb250ZW50IHR5cGVzIG5vdyBiZWhhdmUsIGZvciB0aGUgbW9zdCBwYXJ0LCBsaWtlIENNU01TIGNvcmUgY29udGVudCB0eXBlczoKICAgICAgICA8dWw+CiAgICAgICAgICA8bGk+YWxsIGF0dHJpYnV0ZSBvZiB0aGUgdHlwaWNhbCBjb250ZW50IHR5cGUgY2FuIGJlIGZvdW5kIGFuZCB1c2VkOzwvbGk+CiAgICAgICAgICA8bGk+YWRkaXRpb25hbCBjb250ZW50IGJsb2NrcyBjYW4gbm93IGJlIHVzZWQgb24gcGFnZSB0ZW1wbGF0ZXMgLSBDYXRhbG9nZXIgd2lsbCBhbGxvdyBpdCdzIHVzZTs8L2xpPgogICAgICAgICAgPGxpPmNhdGFsb2dlciBwYWdlcyBjYW4gbm93IGJlIHByZXZpZXdlZCBieSBDb250ZW50IE1hbmFnZXIgLSBQcmV2aWV3IHRhYjs8L2xpPgogICAgICAgIDwvdWw+CiAgICAgIDwvbGk+CiAgICAgIDxsaT4KICAgICAgICBzdWIgdGVtcGxhdGVzIGhhdmUgYSBuZXcgdmFyaWFibGUgd2l0aCB0aGUgbWFpbiBjb250ZW50IGJsb2NrIGdpdmluZyB1c2VycyBzb21lIGZyZWVkb20gcmVnYXJkaW5nIGl0cyBwbGFjZW1lbnQ7CiAgICAgIDwvbGk+IAogICAgICA8bGk+CiAgICAgICAgaW1hZ2UgdGFicyB3aWxsIG9ubHkgYmUgdmlzaWJsZSBpZiB0aGVyZSBhcmUgaW1hZ2VzIHNldCB0byBiZSB1c2VkIGluIHRoZSBtb2R1bGUgc2V0dGluZ3M7CiAgICAgIDwvbGk+ICAKICAgICAgPGxpPgogICAgICAgIGZpbGUgdGFicyB3aWxsIG9ubHkgYmUgdmlzaWJsZSBpZiB0aGVyZSBhcmUgZmlsZXMgc2V0IHRvIGJlIHVzZWQgaW4gdGhlIG1vZHVsZSBzZXR0aW5nczsKICAgICAgPC9saT4gICAKICAgICAgPGxpPgogICAgICAgIHRoZXJlIGhhdmUgYmVlbiBzb21lIGNoYW5nZXMgdG8gc3ViLXRlbXBsYXRlcyBhbHRob3VnaCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3YXMga2VwdCBhcyBtdWNoIGFzIHBvc3NpYmxlOwogICAgICA8L2xpPiAgICAKICAgICAgPGxpPgogICAgICAgIHRoZSBsb2NhdGlvbiBkaXIgb2YgdGhlIGltYWdlcyBpcyBub3cgY29uY2VhbGVkIGlmIENhdGFsb2dlciBuYXRpdmUgaW1hZ2UgaGFuZGxpbmcgaXMgdXNlZDsKICAgICAgPC9saT4gICAgCiAgICAgIDxsaT4KICAgICAgICBhIGh1Z2UgbnVtYmVyIG9mIDxlbT51bmRlciB0aGUgaG9vZDwvZW0+IG1vZGlmaWNhdGlvbnMgYW5kIG9wdGltaXphdGlvbnMgd2FzIG1hZGUgdG8gdGhlIGNvZGU7CiAgICAgIDwvbGk+ICAgIAogICAgPC91bD4KICA8L2xpPgogIDxsaT5WZXJzaW9uIDAuMTEuMyAtIERlY2VtYmVyIDIwMTIuCiAgICAgIDx1bD4KICAgICAgICAgIDxsaT48c3Ryb25nPkJ1ZyBmaXg6IFsjNDc4MV0gLSAgPC9zdHJvbmc+IGNtc19zZWxmbGluayBkb2Vzbid0IHdvcmsuPC9saT4KICAgICAgPC91bD4KICA8L2xpPgogIDxsaT5WZXJzaW9uIDAuMTEuMiAtIE5vdmVtYmVyIDIwMTIuCiAgICAgIDx1bD4KICAgICAgICAgIDxsaT48c3Ryb25nPkJ1ZyBmaXg6IC0ge2xpdGVyYWx9e0NhdGFsb2dlciBhY3Rpb249J2FsbCcgc3ViX3RlbXBsYXRlPSdteV9zdWJfdGVtcGxhdGUnIGFsaWFzPScvJ317L2xpdGVyYWx9PC9zdHJvbmc+IGJyZWFrcyB3aXRoIGEgUEhQIGVycm9yLjwvbGk+CiAgICAgIDwvdWw+CiAgPC9saT4KICA8bGk+VmVyc2lvbiAwLjExLjEgLSBPY3RvYmVyIDIwMTIuCiAgICAgIDx1bD4KICAgICAgICAgIDxsaT48c3Ryb25nPkJ1ZyBmaXg6IFsjODQwXSAtPC9zdHJvbmc+IFJlcGVhdGVkIGNvbnRlbnQgb3V0cHV0IGlmIG11bHRpcGxlIGNvbnRlbnQgdGFncyBpbiB0ZW1wbGF0ZS48L2xpPgogICAgICAgICAgPGxpPjxzdHJvbmc+QnVnIGZpeDogWyM4MzgxXSAtIHtsaXRlcmFsfXtwcm9jZXNzIHBhZ2VkYXRhfXsvbGl0ZXJhbH08L3N0cm9uZz4gYnJlYWtzIGNhdGFsb2dlciB0ZW1wbGF0ZS48L2xpPgogICAgICA8L3VsPgogIDwvbGk+CiAgPGxpPlZlcnNpb24gMC4xMS4wIC0gQXVndXN0IDIwMTIuCiAgICA8dWw+CiAgICAgIDxsaT5OdW1lcm91cyBmaXhlcyBmb3IgQ01TTVMgMS4xMSBjb21wYXRpYmlsaXR5OzwvbGk+CiAgICAgIDxsaT5Gb3JnZSBSdWxlcyBjb21wbGlhbnQ7PC9saT4KICAgIDwvdWw+CiAgPC9saT4KICA8bGk+VmVyc2lvbiAwLjkuMSAtIEphbiAyMDExLiBCdWcgZml4IGZvciBjaGVja2JveCBpdGVtIGF0dHJpYnV0ZSB0eXBlcy48L2xpPgogIDxsaT5WZXJzaW9uIDAuOSAtIE5vdiAyMDEwLgogICAgPHVsPgogICAgICA8bGk+TnVtZXJvdXMgZml4ZXMgZm9yIENNU01TIDEuOSBjb21wYXRpYmlsaXR5PC9saT4KICAgICAgPGxpPlRlZCdzIGV4Y2VsbGVudCBkcm9wZG93biBhdHRyaWJ1dGUgdHlwZTwvbGk+CiAgICA8bGk+T3B0aW1pemVkICJyYW5kb20iIGFjdGlvbiBmb3Igc2l0ZXMgd2l0aCBodWdlIG51bWJlcnMgb2YgaXRlbSBwYWdlczwvbGk+CiAgICAgIDxsaT5DaGVja2JveCBhdHRyaWJ1dGUgdHlwZTwvbGk+CiAgICA8L3VsPgogIDwvbGk+CiAgPGxpPlZlcnNpb24gMC44LjEgKHVucmVsZWFzZWQsIHNlZSAwLjkpPC9saT4KICA8bGk+VmVyc2lvbiAwLjguMCAtIFNlcCAyMDEwLgogICAgPHVsPgogICAgICA8bGk+UmVvcmRlcmluZyBvZiBhdHRyaWJ1dGVzPC9saT4KICAgICAgPGxpPkF0dHIncyBub3cgY2FuIGhhdmUgbGVuZ3RocyBhbmQgZGVmYXVsdCB2YWx1ZXM8L2xpPgogICAgICA8bGk+QXBwbHkgYnV0dG9uIGZvciB0ZW1wbGF0ZXM8L2xpPgogICAgICA8bGk+Rml4ZWQgdG8gcHJpbnRhYmxlIGNhdGFsb2ctc3R1ZmY8L2xpPgogICAgICA8bGk+QnVpbHQtaW4gc29ydGluZyBmdW5jdGlvbmFsaXR5PC9saT4KICAgICAgPGxpPkFzc29ydGVkIGJ1ZyBmaXhlcywgY2xlYW51cHMgZXRjPC9saT4KICAgIDwvdWw+CiAgPC9saT4KICA8bGk+VmVyc2lvbiAwLjcuNyAtIEZlYiAyMDEwLiBBZGRlZCBmaWxlcyBhc3NvY2lhdGVkIHdpdGggSXRlbXMuIEFkZGVkIGl0ZW0gY29tcGFyaXNvbiBhY3Rpb24uPC9saT4KICA8bGk+VmVyc2lvbiAwLjcuNiAtIDEwIFNlcHQgMjAwOS4gRml4IGZvciB0aGF0IGxhc3QgZml4LiBEb2ghPC9saT4KICA8bGk+VmVyc2lvbiAwLjcuNSAtIDEwIFNlcHQgMjAwOS4gRml4ZWQgUHJpbnRhYmxlIENhdGFsb2cuLi4gZGlkIHRoYXQgZXZlciB3b3JrPz88L2xpPgogIDxsaT5WZXJzaW9uIDAuNy40IC0gMjIgSnVuZSAyMDA5LiBJbmNvcnBvcmF0ZWQgQ2FsZ3V5XCdzIGZpeGVzIGZvciAxLjYuPC9saT4KICA8bGk+VmVyc2lvbiAwLjcuMyAtIDE2IEp1bmUgMjAwOS4gQnVnIGZpeGVzIGJ5IE51bm8uIE1hZGUgbWF4IENNUyB2ZXJzaW9uIDEuNS40IGluIHByZXAgZm9yIENNUyAxLjYgcmVsZWFzZS48L2xpPgogIDxsaT5WZXJzaW9uIDAuNy4yIC0gMTQgTWFyY2ggMjAwOS4gQnVnIGZpeGVzIGJ5IE51bm8gQ29zdGEuPC9saT4KICA8bGk+VmVyc2lvbiAwLjcuMSAtIDI5IFNlcHQgMjAwOC4gQWRkZWQgVmFyaWFibGUgbWV0aG9kIGZvciBKYXZpZXIgU2FuIEp1YW4gQ29zdGlsYXMuPC9saT4KICA8bGk+VmVyc2lvbiAwLjcgLSAxNyBNYXJjaCAyMDA4LiA8ZW0+RmluYWxseTwvZW0+IGFkZGVkIHBlci1wYWdlIG1ldGEtZGF0YS4gQW5kIHRoZXJlIHdhcyBncmVhdCBjZWxlYnJhdGlvbiBpbiB0aGUgc3RyZWV0cywgYW5kIGRhbmNpbmcgaW4gdGhlIHRvd24gc3F1YXJlLiBBbHNvIGFkZGVkIGluIG1hbnkgSFRNTCBhbmQgbG9jYWxpemF0aW9uIGZpeGVzIGNvbnRyaWJ1dGVkIGJ5IE51bm8gQ29zdGEuPC9saT4KICA8bGk+VmVyc2lvbiAwLjYuMiAtIDcgSmFudWFyeSAyMDA3LiBGaXhlZCBuYXN0eSBidWcgd2hlcmUgdXBncmFkaW5nIG1ha2VzIGl0IGxvb2sgbGlrZSBhbGwgeW91ciBub3RlIGZpZWxkcyBhcmUgbG9zdC48L2xpPgogIDxsaT5WZXJzaW9uIDAuNi4xIC0gMiBKYW51YXJ5IDIwMDcuIEZpeGVkIG5hc3R5IGJ1ZyB3aGVyZSBjaGFuZ2luZyBjb250ZW50IHR5cGUgZnJvbSAiY29udGVudCIgdG8gY2F0YWxvZyBjb250ZW50IHR5cGVzIHJlbmFtZWQgYWxsIGNhdGFsb2cgaW1hZ2VzLjwvbGk+CiAgPGxpPlZlcnNpb24gMC42IC0gMjkgRGVjZW1iZXIgMjAwNy4gPHVsPgogIDxsaT5CdWcgZml4OiBJbWFnZXMgZG9uXCd0IGdldCAibG9zdCIgd2hlbiBwYWdlIGFsaWFzIGNoYW5nZXMuPC9saT4KICA8bGk+QnVnIGZpeDogQXR0cmlidXRlIGNvbnRlbnQgZG9lc25cJ3QgZ2V0ICJsb3N0IiB3aGVuIGF0dHJpYnV0ZXMgYXJlIHJlbmFtZWQuPC9saT4KICA8bGk+QnVnIGZpeDogRml4ZWQgUHJpbnRhYmxlIENhdGFsb2cuIFdvcmtzIGZvciBmaXJzdCB0aW1lIHNpbmNlIHYuMC40IG9yIHRoZXJlYWJvdXRzLjwvbGk+CiAgPGxpPkJ1ZyBmaXg6IE5vdyBob25vcnMgc3lzdGVtIHByZWZlcmVuY2UgZm9yIFdZU0lXWUcgZWRpdGluZyBvZiB0ZXh0IGFyZWFzLjwvbGk+CiAgPGxpPkZlYXR1cmU6IEF0dHJpYnV0ZXMgbWF5IG5vdyBiZSB0ZXh0IGFyZWFzLjwvbGk+CiAgPC91bD4KICA8L2xpPgogIDxsaT5WZXJzaW9uIDAuNS42IC0gMTAgRGVjZW1iZXIgMjAwNy4gVGFyZHkgcm9sbG91dCBvZiBmaXhlczogPHVsPgogIDxsaT5BZGRlZCBjb2RlIHRvIHByZXZlbnQgc2hvd2luZyBvZiBub24tdXBsb2FkZWQgaW1hZ2VzLCBjYXRlZ29yeSBwYWdlIGJ1ZmZlciBmbHVzaGluZyBmb3IgZXh0cmVtZSBjYXNlcywgbWlub3IgYnVnIGZpeGVzPC9saT4KICA8bGk+Rml4IGZvciAncmVjZW50JyBhY3Rpb24gd2hlbiBhbGlhcyBpcyAvPC9saT4KICA8bGk+Rml4IGZvciB0aGUgcHJvYmxlbSB3aGVyZSBjYXRhbG9ncyB3aXRoIG1vcmUgdGhhbiB0ZW4gY2F0ZWdvcmllcyBoYXZlIGl0ZW1zIGRpc3BsYXllZCBpbiBpbmNvcnJlY3QgY2F0ZWdvcmllczwvbGk+PC91bD48L2xpPgogIDxsaT5WZXJzaW9uIDAuNS41IC0gMjAgSnVuZSAyMDA3LiBGaXggZm9yIENvbnRlbnQgQWxpYXMgc3VwcG9ydCAtIHJlcXVpcmVzIENvbnRlbnQgQWxpYXMgdi4gMC42LjEuPC9saT4KICA8bGk+VmVyc2lvbiAwLjUuNCAtIDE5IEp1bmUgMjAwNy4gQWRkZWQgImFsbCIgZmVhdHVyZSBsaXN0LjwvbGk+CiAgPGxpPlZlcnNpb24gMC41LjMgLSAyMSBTZXB0ZW1iZXIgMjAwNi4gQWRkZWQgbGlua3MgdG8gc291cmNlIChub24tcmVzY2FsZWQpIGltYWdlcywgYW5kIGFkZGVkIGltYWdlIGRlbGV0ZSBmdW5jdGlvbmFsaXR5LjwvbGk+CiAgPGxpPlZlcnNpb24gMC41LjIgLSAxNyBTZXB0ZW1iZXIgMjAwNi4gUmVtb3ZlZCBkZWJ1ZyBvdXRwdXQsIHJldmlzZWQgaW1hZ2Ugc3lzdGVtIChmaXhlZCBidWdzKS4gQ2FjaGluZyBidWcgc2VlbXMgdG8gcmVtYWluLjwvbGk+CiAgPGxpPlZlcnNpb24gMC41LjEgLSAyNCBBdWd1c3QgMjAwNi4gKGNhbGd1eTEwMDApLCBVcHBlZCBNaW5pbXVtQ01TVmVyc2lvbiB0byAxLjAtc3ZuLCBhbmQgbW9yZSAxLjAgY2hhbmdlcyB3ZXJlIGFkZGVkIChyZW1vdmVkIHN0YXRpYyBtZXRob2RzKTwvbGk+CiAgPGxpPlZlcnNpb24gMC41IC0gMTYgQXVndXN0IDIwMDYuIEFzc29ydGVkIGNvbnRyaWJ1dGVkIGJ1ZyBmaXhlcyBmb3IgQ01TIE1TIDEuMCwgIG5ldyBvcHRpb25zIGZvciBpbWFnZXMuPC9saT4KICA8bGk+VmVyc2lvbiAwLjQuMiAtIDI4IE1heSAyMDA2LiBCdWcgZml4IGZvciBhdHRyaWJ1dGVzIGluIGNhdGVnb3J5IHBhZ2VzLiBBZGRlZCAiLyIgcGFnZV9hbGlhcyBmb3IgZmVhdHVyZSBsaXN0cy48L2xpPgogIDxsaT5WZXJzaW9uIDAuNC4xIC0gMjMgTWF5IDIwMDYuIEJ1ZyBmaXggdG8gbWFrZSB3b3JrIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgQ01TIE1TLjwvbGk+CiAgPGxpPlZlcnNpb24gMC40IC0gMjIgTWF5IDIwMDYuIEJ1ZyBmaXhlcywgRmVhdHVyZSBMaXN0cy48L2xpPgogIDxsaT5WZXJzaW9uIDAuMyAtICh1bnJlbGVhc2VkLCBwdWJsaXNoZWQgZnJvbSBzdm4pPC9saT4KICA8bGk+VmVyc2lvbiAwLjIgLSAyMyBNYXJjaCAyMDA2LiBOdW1lcm91cyBidWcgZml4ZXMuIFBlcmZvcm1hbmNlIGltcHJvdmVtZW50cy4gTWVtb3J5IGZvb3RwcmludCBvcHRpbWl6YXRpb25zLiBOb3cgdXNlcyB0aGUgQ01TIDAuMTIgTW9kdWxlIEFQSS48L2xpPgogIDxsaT5WZXJzaW9uIDAuMS41IC0gMTcgTm92ZW1iZXIgMjAwNS4gSW5pdGlhbCBSZWxlYXNlLiBKZXN1cywgdGhhdCB0b29rIGEgbG9uZyB0aW1lLjwvbGk+CiAgPGxpPlZlcnNpb24gMC4xIC0gMTkgTWFyY2ggMjAwNS4gUHJvamVjdCBJbml0aWF0aW9uLjwvbGk+CjwvdWw+]]></data>
	</file>
	<file>
	  <filename>/templates/edittemplate.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRtZXNzYWdlIT0nJ308cCBjbGFzcz0icGFnZW1lc3NhZ2UiPnskbWVzc2FnZX08L3A+ey9pZn0NCnskaW5uZXJuYXZ9DQo8YnIgLz4NCjxoMz57JG9wfTwvaDM+DQoNCnskc3RhcnRmb3JtfQ0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+KnskdGl0bGVfdGl0bGV9OjwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF90aXRsZX08L3A+DQoJPC9kaXY+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4qeyR0aXRsZV90ZW1wbGF0ZV90eXBlfTo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfdGVtcGxhdGVfdHlwZX08L3A+DQoJPC9kaXY+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4qeyR0aXRsZV90ZW1wbGF0ZX06PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RlbXBsYXRlfTwvcD4NCgk8L2Rpdj4NCgk8ZGl2IGlkPSJhdmFpbGFibGUiPnskYXZhaWxfYXR0cnN9PC9kaXY+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaGlkZGVufXskc3VibWl0fSB7JGFwcGx5fTwvcD4NCgk8L2Rpdj4NCnskZW5kZm9ybX0NCg==]]></data>
	</file>
	<file>
	  <filename>/templates/error.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgxPnskZXJyb3J9PC9oMT4KeyRlcnJvcn0=]]></data>
	</file>
	<file>
	  <filename>/templates/help.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogVGFicyBIZWFkZXJzICp9DQo8ZGl2IGlkPSJwYWdlX3RhYnMiPg0KICA8ZGl2IGlkPSJnZW5lcmFsIj4NCiAgICBXaGF0IElzIEl0DQogIDwvZGl2PiAgICANCiAgPGRpdiBpZD0iaG93Ij4NCiAgICBIb3cgVG8gVXNlIEl0DQogIDwvZGl2PiAgICANCiAgPGRpdiBpZD0iZmVhdHVyZWxpc3RzIj4NCiAgICBGZWF0dXJlIExpc3RzDQogIDwvZGl2PiAgICANCiAgPGRpdiBpZD0iaW1hZ2VzeXMiPg0KICAgIENhdGFsb2dlciBJbWFnZSBTeXN0ZW0NCiAgPC9kaXY+DQogIDxkaXYgaWQ9ImFkdmFuY2VkIj4NCiAgICBDdXN0b21pemF0aW9uIGFuZCBBZHZhbmNlZCBUb3BpY3MNCiAgPC9kaXY+DQogIDxkaXYgaWQ9IndoYXRzbmV3Ij4NCiAgICBXaGF0J3MgbmV3DQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJhYm91dCI+DQogICAgQWJvdXQNCiAgPC9kaXY+DQo8L2Rpdj4gICAgICAgDQp7KiBUYWJzIEhlYWRlcnMgKn0NCg0KPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4NCg0KeyogVGFicyBDb250ZW50cyAqfQ0KPGRpdiBpZD0icGFnZV9jb250ZW50Ij4NCnsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqfQ0KeyogV2hhdCBJcyBJdCAqfQ0KICA8ZGl2IGlkPSJnZW5lcmFsX2MiPg0KICAgIDxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPg0KICAgIDxwPlRoaXMgbW9kdWxlIGxldHMgeW91IGNyZWF0ZSBvbmxpbmUgY2F0YWxvZ3Mgb3IgcG9ydGZvbGlvcy4gQ2F0YWxvZ3MgY29uc2lzdCBvZiA8c3Ryb25nPjwvc3Ryb25nPiJDYXRhbG9nIEl0ZW1zIjwvc3Ryb25nPiB3aGljaCBjb3VsZCBiZSBwcm9kdWN0cywgd29ya3Mgb2YgYXJ0LCBvciB0aGUgbGlrZSwgYW5kIDxzdHJvbmc+IkNhdGFsb2cgQ2F0ZWdvcmllcyI8L3N0cm9uZz4gd2hpY2ggY291bGQgYmUgaXRlbSBjYXRlZ29yaWVzIG9yIG90aGVyIG5hdHVyYWwgZGl2aXNpb25zIG9mIHRoZSBjYXRhbG9nLjwvcD4NCiAgICA8cD5DYXRlZ29yaWVzIG1heSBiZSBkZWZpbmVkIGhpZXJhcmNoaWNhbGx5ICh1c2luZyB0aGUgc3RhbmRhcmQgQ01TIE1hZGUgU2ltcGxlIGNvbnRlbnQgbGlzdCkuIENhdGVnb3J5IHBhZ2VzIGNhbiBkaXNwbGF5IGl0ZW1zIGluIHRoZSBjYXRlZ29yeSBhbmQvb3Igc3ViY2F0ZWdvcmllcywgb3B0aW9uYWxseSByZWN1cnNpbmcgdGhyb3VnaCBzdWItY2F0ZWdvcmllcy4gVGhpcyBiZWhhdmlvciBjYW4gYmUgY29uZmlndXJlZCBvbiBhIHBlci1jYXRlZ29yeSBiYXNpcy48L1A+DQogICAgPHA+VGhlcmUgaXMgYWxzbyBhIDxzdHJvbmc+IlByaW50YWJsZSBDYXRhbG9nIjwvc3Ryb25nPiwgd2hpY2ggcmVwcmVzZW50cyB0aGUgd2hvbGUgY29sbGVjdGlvbiBvZiBDYXRhbG9nIEl0ZW1zIG9uIGEgc2luZ2xlIHBhZ2UuPC9wPg0KICAgIDxwPlRoZSBtb2R1bGUgaGFzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIDxzdHJvbmc+IkNvbnRlbnQgQWxpYXNlcyI8L3N0cm9uZz4gKGEgbW9kdWxlIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnRhbGlhc2VzIj50aGUgRGV2ZWxvcGVyIEZvcmdlPC9hPiksIHdoaWNoIGFsbG93cyB5b3UgdG8gcGxhY2UgYW55IENhdGFsb2cgSXRlbSBpbnRvIG11bHRpcGxlIENhdGFsb2cgQ2F0ZWdvcmllcy48L3A+DQogICAgPHA+PGRpdiBjbGFzcz0nd2FybmluZyc+QXMgb2YgdmVyc2lvbiAxLjAgQ2F0YWxvZ2VyIG9ubHkgd29ya3Mgb24gQ01TTVMgMi54LjwvZGl2PjwvcD4NCiAgPC9kaXY+DQogIHsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqfQ0KICB7KiBIb3cgVG8gVXNlIEl0ICp9DQogIDxkaXYgaWQ9Imhvd19jIj4NCiAgICA8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4NCiAgICA8cD5XaGVuIHlvdSBpbnN0YWxsIHRoaXMgbW9kdWxlLCBpdCBjcmVhdGVzIHRocmVlIG5ldyBDb250ZW50IFR5cGVzOiA8c3Ryb25nPkNhdGFsb2cgSXRlbTwvc3Ryb25nPiwgPHN0cm9uZz5DYXRhbG9nIENhdGVnb3J5PC9zdHJvbmc+LCBhbmQgPHN0cm9uZz5QcmludGFibGUgQ2F0YWxvZzwvc3Ryb25nPi4gV2hlbiB5b3UncmUgaW4geW91ciBzaXRlIGFkbWluaXN0cmF0aW9uIGNhdGVnb3J5LCB5b3UgYWRkIDxzdHJvbmc+Q2F0YWxvZyBJdGVtczwvc3Ryb25nPiBhbmQgPHN0cm9uZz5DYXRhbG9nIENhdGVnb3JpZXM8L3N0cm9uZz4ganVzdCBhcyB5b3Ugd291bGQgYW55IG90aGVyIGtpbmQgb2YgcGFnZS4gU2VsZWN0IENvbnRlbnQgJmd0OyBQYWdlcyAmZ3Q7IEFkZCBDb250ZW50LCBhbmQgdGhlbiBzZWxlY3QgPHN0cm9uZz4iQ2F0YWxvZyBJdGVtIjwvc3Ryb25nPiBvciA8c3Ryb25nPiJDYXRhbG9nIENhdGVnb3J5Ijwvc3Ryb25nPiBmcm9tIHRoZSA8c3Ryb25nPkNvbnRlbnQgVHlwZSBwdWxsZG93bjwvc3Ryb25nPi48L3A+DQogICAgPGg0PkNhdGFsb2cgSXRlbXM8L2g0Pg0KICAgIDxwPkFkZGluZyBhIDxzdHJvbmc+Q2F0YWxvZyBJdGVtPC9zdHJvbmc+IGlzIHNpbWlsYXIgdG8gYWRkaW5nIGFuIG9yZGluYXJ5IHBhZ2UgdG8geW91ciBzaXRlLiBUaGUgZGF0YSBmaWVsZHMgZm9yIHRoZSBJdGVtIGFyZSBub3QgZXhhY3RseSB0aGUgc2FtZSwgaG93ZXZlci4gQWxzbyBub3RlIHRoYXQgaW4gdGhlICJJbWFnZXMiIHRhYiwgeW91IGNhbiBzZWxlY3QgbXVsdGlwbGUgaW1hZ2VzIHRvIHVwbG9hZCBmb3IgdGhlIGl0ZW0uIFdoZW4geW91IHVwbG9hZCBpbWFnZXMsIHRoZSBzeXN0ZW0gd2lsbCBzaXplIHRoZW0gYXBwcm9wcmlhdGVseSBmb3IgdGhlIGNhdGFsb2csIGNyZWF0ZSB0aHVtYm5haWxzIGZvciB1c2UgaW4gdGhlIEl0ZW0ncyBwYWdlLCBjcmVhdGUgdGh1bWJuYWlscyBmb3IgYW55IENhdGVnb3J5IHBhZ2VzLCBhbmQgc28gb24uPC9wPg0KICAgIDxwPjxkaXYgY2xhc3M9J3dhcm5pbmcnPlNlZSBpbWFnZSB1c2UgYmVsb3cuPC9kaXY+PC9wPg0KDQogICAgPGg0PkNhdGFsb2cgQ2F0ZWdvcmllczwvaDQ+DQogICAgPHA+QSA8c3Ryb25nPkNhdGFsb2cgQ2F0ZWdvcnk8L3N0cm9uZz4gaXMgdXNlZCBmb3Igb3JnYW5pemluZyB5b3VyIGNhdGFsb2cgaXRlbXMuIEl0IHByb3ZpZGVzIGEgcGFnZSB0aGF0IGxpc3RzIENhdGFsb2dlciBjb250ZW50IHRoYXQgaXMgY29udGFpbmVkIGJ5IGl0LiBBIENhdGFsb2cgSXRlbSBpcyBjb25zaWRlcmVkIHRvIGJlIHBhcnQgb2YgYSBDYXRhbG9nIENhdGVnb3J5IGlmIGl0IGlzIGJlbG93IHRoYXQgQ2F0ZWdvcnkgaW4gdGhlIFNpdGUgSGllcmFyY2h5LiBDYXRlZ29yaWVzIGNhbiBzaW1pbGFybHkgaW5jbHVkZSBvdGhlciBDYXRlZ29yaWVzLjwvcD4NCiAgICA8cD5DYXRhbG9nIENhdGVnb3JpZXMgaGF2ZSBhIG51bWJlciBvZiBzZXR0aW5ncyB0byBkZXRlcm1pbmUgaG93IHRoZXkgc2hvdWxkIGRpc3BsYXkgdGhlIEl0ZW1zIGFuZCBDYXRlZ29yaWVzIHRoZXkgY29udGFpbjogaWYgeW91IGxvb2sgYXQgdGhlIDxzdHJvbmc+Ik9wdGlvbnMiPC9zdHJvbmc+IHRhYiwgeW91IGNhbiBjaG9vc2UgaG93IG1hbnkgaXRlbXMgYW5kL29yIGNhdGVnb3JpZXMgdG8gc2hvdywgd2hhdCBvcmRlciB0byBzaG93IHRoZW0gaW4sIHdoZXRoZXIgdG8gZGlzcGxheSBvbmx5IGl0ZW1zIG9yIG9ubHkgY2F0ZWdvcmllcyBvciBib3RoLCBhbmQgaG93IG1hbnkgbGV2ZWxzIG9mIHRoZSBoaWVyYXJjaHkgdG8gZGlzcGxheSBiZWxvdyB0aGUgY2F0ZWdvcnkgcGFnZS48L3A+DQogICAgPGJyPg0KICAgIDxwPkZvciBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTo8L3A+DQogICAgPG9sPg0KICAgICAgPGxpPjxiPkhhdHM8L2I+DQogICAgICAgIDxvbD4NCiAgICAgICAgICA8bGk+PGI+RmFzaGlvbjwvYj4NCiAgICAgICAgICAgICA8b2w+DQogICAgICAgICAgICAgICA8bGk+RmVhdGhlcmVkIEhhdDwvbGk+PGxpPkZlZG9yYSA8L2xpPjxsaT5CYXNlYmFsbCBIYXQ8L2xpPg0KICAgICAgICAgICAgIDwvb2w+DQogICAgICAgICAgIDwvbGk+DQogICAgICAgICAgIDxsaT48Yj5Xb3JrIEhhdHM8L2I+DQogICAgICAgICAgICAgIDxvbD4NCiAgICAgICAgICAgICAgICA8bGk+SGFyZCBIYXQ8L2xpPjxsaT5EaXZpbmcgSGVsbWV0PC9saT4NCiAgICAgICAgICAgICAgPC9vbD4NCiAgICAgICAgICAgIDwvbGk+DQogICAgICAgIDwvb2w+DQogICAgICA8L2xpPg0KICAgIDwvb2w+DQogICAgPHA+SW4gdGhpcyBkaWFncmFtLCBpdGVtcyBpbiBib2xkIGFyZSBDYXRhbG9nIENhdGVnb3JpZXMsIGFsbCBvdGhlciBpdGVtcyBhcmUgQ2F0YWxvZyBJdGVtcy4gRGVwZW5kaW5nIHVwb24gaG93IHlvdSBzZXQgeW91ciBvcHRpb25zLCB0aGUgPHN0cm9uZz5IYXRzPC9zdHJvbmc+IENhdGVnb3J5IFBhZ2UgY2FuIHNob3cgb25seSBlbnRyaWVzIGZvciB0aGUgPHN0cm9uZz5GYXNoaW9uPC9zdHJvbmc+IGFuZCA8c3Ryb25nPldvcmsgSGF0czwvc3Ryb25nPiBDYXRlZ29yeSBQYWdlcywgb3IgaXQgY2FuIHNob3cgZW50cmllcyBmb3IgPHN0cm9uZz5GYXNoaW9uPC9zdHJvbmc+LCA8c3Ryb25nPldvcmsgSGF0czwvc3Ryb25nPiwgYW5kIGFsbCB0aGUgaGF0cyBsaXN0ZWQgYmVsb3cgdGhlbS48L3A+DQogICAgPHA+WW91IGNhbiBvcHQgdG8gc2hvdyB0aGUgaXRlbXMgaW4gIm5hdHVyYWwiIG9yZGVyIChpLmUuLCB0aGUgb3JkZXIgdGhlIEl0ZW1zIHNob3cgdXAgaW4gdGhlIENNUyBDb250ZW50IEhpZXJhcmNoeSksIG9yIGluIGFscGhhYmV0aWNhbCBvcmRlci48L1A+DQogICAgPHA+SWYgeW91IGhhdmUgbGFyZ2UgbnVtYmVycyBvZiBpdGVtcyBpbiBhIENhdGVnb3J5LCB5b3UgY2FuIHNldCB0aGUgbWF4aW11bSBudW1iZXIgdG8gYmUgZGlzcGxheWVkIGluIGEgQ2F0ZWdvcnkgUGFnZSwgYW5kIHRoZSBwYWdlIHdpbGwgYXV0b21hdGljYWxseSBjcmVhdGUgbGlua3MgdG8gbmF2aWdhdGUgdGhyb3VnaCB0aGUgbGlzdC48L3A+DQogICAgPHA+RWFjaCBDYXRlZ29yeSBwYWdlIGNhbiBoYXZlIGRpZmZlcmVudCBzZXR0aW5ncyBmb3Igc29ydCBvcmRlciwgbGV2ZWxzIHRvIGRpc3BsYXksIGFuZCBudW1iZXIgb2YgaXRlbXMuIFlvdSBjYW4gc2V0IHRoZSBkZWZhdWx0IGZvciB0aGVzZSB2YWx1ZXMgaW4gPHN0cm9uZz48ZW0+RXh0ZW5zaW9ucyAmZ3Q7IENhdGFsb2dlciAmZ3Q7IE1hbmFnZSBQcmVmZXJlbmNlczwvZW0+PC9zdHJvbmc+LiBJZiwgYXQgYSBsYXRlciBkYXRlLCB5b3Ugd2lzaCB0byBjaGFuZ2Ugc29tZSBzZXR0aW5nIG9uIGFsbCBvZiB5b3VyIENhdGVnb3J5IHBhZ2VzLCB5b3UgY2FuIGdvIGludG8gPHN0cm9uZz48ZW0+RXh0ZW5zaW9ucyAmZ3Q7IENhdGFsb2dlciAmZ3Q7IEdsb2JhbCBDYXRhbG9nIE9wdGlvbnM8L2VtPjwvc3Ryb25nPiwgYW5kIG1ha2UgdGhvc2UgY2hhbmdlcy48L3A+DQogICAgPGg0PkltYWdlczwvaDQ+DQogICAgPHA+Q2F0YWxvZ2VyIGFsbG93cyB5b3UgdG8gc2VsZWN0IGRpZmZlcmVudCBzaXplIGltYWdlcyBmb3IgSXRlbSBwYWdlcywgQ2F0ZWdvcnkgcGFnZXMsIGFuZCB0aGUgUHJpbnRhYmxlIENhdGFsb2cuIFlvdSBjYW4gc2V0IHRoZXNlIGRlZmF1bHRzIGluIDxzdHJvbmc+PGVtPkV4dGVuc2lvbnMgJmd0OyBDYXRhbG9nZXIgJmd0OyBNYW5hZ2UgUHJlZmVyZW5jZXM8L2VtPjwvc3Ryb25nPi48L3A+DQogICAgPHA+V2hlbiB5b3UgdXBsb2FkIGltYWdlcywgdGhlIG9yaWdpbmFsIGlzIHN0b3JlZC4gV2hlbiBzb21lb25lIHZpc2l0cyBhIHBhZ2UsIHRoZSByZWR1Y2VkIHNpemUgaW1hZ2VzIGFyZSByZXF1ZXN0ZWQgdXNpbmcgYSBzcGVjaWFsIFVSTCwgd2hpY2ggd2lsbCBsb2FkIHRoZSBzY2FsZWQgaW1hZ2UgaWYgaXQgZXhpc3RzLCBjcmVhdGluZyBpdCBpZiBpdCBkb2Vzbid0LiBUaGlzIGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBzaXplIG9mIGltYWdlcywgd2l0aG91dCBoYXZpbmcgdG8gcmUtdXBsb2FkIGFsbCB0aGUgaW1hZ2VzLCBvciByZXNjYWxpbmcgdGhlbSBhbGwgYXQgb25jZS48L3A+DQogICAgPHA+PGRpdiBjbGFzcz0nd2FybmluZyc+VGhlIGltYWdlIHJlc2NhbGluZyBjb2RlIHJlcXVpcmVzIHRoYXQgeW91IGhhdmUgZWl0aGVyIEltYWdlTWFnaWNrIG9yIEdEIGxpYiBpbnN0YWxsZWQuPC9kaXY+PC9wPg0KICAgIDxwPjxkaXYgY2xhc3M9J2luZm9ybWF0aW9uJz5DdXJyZW50bHksIG9ubHkganBlZyBmb3JtYXQgaW1hZ2VzIGFyZSBzdXBwb3J0ZWQuPC9kaXY+PC9wPg0KICAgIDxoND5GaWxlczwvaDQ+DQogICAgPHA+Q2F0YWxvZ2VyIGFsbG93cyB5b3UgdG8gYXNzb2NpYXRlIGFyYml0cmFyeSBmaWxlcyB3aXRoIGFueSBJdGVtIHBhZ2UuIFRoZXNlIGFyZSB1cGxvYWRlZCB2aWEgdGhlIGFkbWluLCBqdXN0IGxpa2UgaW1hZ2VzLg0KICAgIDxwPjxkaXYgY2xhc3M9J3dhcm5pbmcnPlRoZXJlIGhhdmUgYmVlbiBydWRpbWVudGFyeSBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyAoZS5nLiwgZmlsZS1leHRlbnNpb24tYmFzZWQgcmVzdHJpY3Rpb25zKSwgaG93ZXZlciwgYXMgd2l0aCBhbnkgZmlsZSB1cGxvYWQgY2FwYWJpbGl0eSB0aGF0IHB1dHMgZmlsZXMgaW5zaWRlIHRoZSB3ZWIgcm9vdCwgaWYgeW91IGRvIG5vdCB0cnVzdCB5b3VyIHVwbG9hZGVycywgeW91IGFyZSBhdCBzb21lIGRlZ3JlZSBvZiByaXNrLiBZb3UgaGF2ZSBiZWVuIHdhcm5lZC48L2Rpdj48L3A+DQogIDwvZGl2Pg0KICB7KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKn0NCiAgeyogRmVhdHVyZSBMaXN0cyAqfQ0KICA8ZGl2IGlkPSJmZWF0dXJlbGlzdHNfYyI+DQogICAgPGgzPkZlYXR1cmUgTGlzdHM8L2gzPg0KICAgIDxwPllvdSBjYW4sIGFzIG9mIDxzdHJvbmc+dmVyc2lvbiAwLjQ8L3N0cm9uZz4sIGhhdmUgPHN0cm9uZz4iZmVhdHVyZSBsaXN0cyI8L3N0cm9uZz4gd2hpY2ggYXJlIHRoZSA8c3Ryb25nPjxlbT5uPC9lbT48L3N0cm9uZz4gbW9zdC1yZWNlbnRseSBhZGRlZCBjYXRhbG9nIGl0ZW1zLCBvciBhIGNvbGxlY3Rpb24gb2YgPHN0cm9uZz48ZW0+azwvZW0+PC9zdHJvbmc+IHJhbmRvbSBpdGVtcyBmcm9tIHRoZSBjYXRhbG9nLjwvcD4NCiAgICA8aDQ+IkFsbCIgRmVhdHVyZSBMaXN0PC9oND4NCiAgICA8cD5UbyBnZXQgYSBsaXN0IG9mIGFsbCBjYXRhbG9nIGl0ZW1zIChvcHRpb25hbGx5IHVuZGVyIGEgc3BlY2lmaWVkIHBhcnQgb2YgeW91ciBoaWVyYXJjaHkpIGZvciBwcm9jZXNzaW5nIHZpYSBhIHRlbXBsYXRlLCB5b3UgY2FuIHVzZQ0KICAgIHRoZSA8c3Ryb25nPiJhbGwiPC9zdHJvbmc+IGZlYXR1cmUgbGlzdC48L3A+DQogICAgPHA+VGhlIHN5bnRheCBmb3IgYW4gPHN0cm9uZz4iYWxsIjwvc3Ryb25nPiBsaXN0IGlzIGxpa2U6PC9wPg0KICAgIDxwcmU+PHN0cm9uZz4mIzEyMztDYXRhbG9nZXIgYWN0aW9uPSdhbGwnIHN1Yl90ZW1wbGF0ZT0nbXlfc3ViX3RlbXBsYXRlJ308L3N0cm9uZz48L3ByZT4NCiAgICA8cD53aGVyZSBzdWJfdGVtcGxhdGUgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGxpc3QuPC9wPg0KICAgIDxwPlRoZXJlIGlzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciwgPHN0cm9uZz5hbGlhcz0ncGFnZV9hbGlhcyc8L3N0cm9uZz4sIHdoZXJlIHBhZ2VfYWxpYXMgaW5kaWNhdGVzIHRoZSB0b3Agb2YgdGhlIHRyZWUgKGUuZy4sIGEgcGxhY2UgaW4geW91ciBtZW51DQogICAgaGllcmFyY2h5LCB0eXBpY2FsbHkgYSBjYXRlZ29yeSBwYWdlKSBpbiB3aGljaCB0byBsb29rIGZvciBuZXcgaXRlbXMuIEEgc3BlY2lhbCB2YWx1ZSBmb3IgPHN0cm9uZz4icGFnZV9hbGlhcyI8L3N0cm9uZz4gaXMgPHN0cm9uZz4iLyI8L3N0cm9uZz4sIHdoaWNoIG1lYW5zIHRvIHN0YXJ0IGF0IHRoZSByb290LjwvcD4NCiAgICA8cD5UaGlzIGlzIHVzZWZ1bCBmb3IgY2F0YWxvZy13aWRlIG9wZXJhdGlvbnMuIEZvciBleGFtcGxlLCB0byBnZXQgYSBsaXN0IG9mIGFsbCBjYXRlZ29yaWVzIChhbmQgZG8gc29tZXRoaW5nIHdpdGggdGhlbSksDQogICAgeW91IGNvdWxkIHVzZSB0aGUgdGFnOjwvcD4gDQogICAgPHByZT48c3Ryb25nPiYjMTIzO0NhdGFsb2dlciBhY3Rpb249J2FsbCcgc3ViX3RlbXBsYXRlPSdteV9zdWJfdGVtcGxhdGUnIGFsaWFzPScvJyByZWN1cnNlPSdjYXRlZ29yaWVzX2FsbCd9PC9zdHJvbmc+PC9wcmU+ICAgDQogICAgPHA+WW91ciB0ZW1wbGF0ZSBjb3VsZCB0aGVuIHRocm93IHRob3NlIGNhdGVnb3JpZXMgaW50byBhIHB1bGxkb3duIG1lbnUgdGhhdCByZWRpcmVjdGVkIHlvdSB0byB0aGF0IGNhdGVnb3J5J3MgcGFnZSwgZm9yIGV4YW1wbGU6PC9wPg0KICAgIDxwcmU+DQogICAgJmx0O3NlbGVjdCBuYW1lPSJmb28iIG9uY2hhbmdlPSJkb2N1bWVudC5sb2NhdGlvbj10aGlzLm9wdGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4XS52YWx1ZTsiPg0KICAgICZsdDtvcHRpb24gdmFsdWU9IiI+U2VsZWN0IEEgdGFyZ2V0Jmx0Oy9vcHRpb24+DQogICAgJiMxMjM7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPXRoaXNvbmV9DQogICAgICAgJmx0O29wdGlvbiB2YWx1ZT0iJiMxMjM7JHRoaXNvbmUubGlua30iPiYjMTIzOyR0aGlzb25lLnRpdGxlfSZsdDsvb3B0aW9uPg0KICAgICYjMTIzOy9mb3JlYWNofQ0KICAgICZsdDsvc2VsZWN0PjwvcHJlPg0KICAgIDxwPklmIHlvdSB3YW50ZWQgdGhhdCB0byBvbmx5IHNob3cgY2F0ZWdvcmllcyB0aGF0IHdlcmUgaW4gdGhlIHZlcnkgdG9wIGxldmVsIG9mIHlvdXIgaGllcmFyY2h5LCB5b3UnZCByZXBsYWNlIHRoZSA8c3Ryb25nPnJlY3Vyc2U9J2NhdGVnb3JpZXNfYWxsJzwvc3Ryb25nPiB3aXRoIDxzdHJvbmc+cmVjdXJzZT0nY2F0ZWdvcmllc19vbmUnPC9zdHJvbmc+LiBPciBpZiB5b3Ugd2FudGVkIGl0IHRvIGJlIGFsbCBjYXRhbG9nIEl0ZW1zIGluc3RlYWQgb2YgY2F0ZWdvcmllcywgeW91IGNvdWxkIHVzZSBhIHRhZyBsaWtlOjwvcD4NCiAgICA8cHJlPjxzdHJvbmc+JiMxMjM7Q2F0YWxvZ2VyIGFjdGlvbj0nYWxsJyBzdWJfdGVtcGxhdGU9J215X3N1Yl90ZW1wbGF0ZScgYWxpYXM9Jy8nIHJlY3Vyc2U9J2l0ZW1zX2FsbCd9PC9zdHJvbmc+PC9wcmU+DQogICAgPHA+U2ltaWxhcmx5LCB5b3UgY291bGQgaGF2ZSBpdCBsaXN0IG9ubHkgY2F0ZWdvcmllcyB1bmRlciB0aGUgY3VycmVudCBwYWdlIChieSBvbWl0dGluZyB0aGUgPHN0cm9uZz4iYWxpYXM9Jy8nIjwvc3Ryb25nPikuIFRoZSBjb21iaW5hdGlvbnMgYXJlIGJhc2ljYWxseSBsaW1pdGxlc3MhPC9wPg0KICAgIDxwPkFsbCBzdXBwb3J0ZWQgdmFsdWVzIG9mIHJlY3Vyc2UgaW5jbHVkZToNCiAgICA8dWw+DQogICAgICA8bGk+PHN0cm9uZz5pdGVtc19vbmU8L3N0cm9uZz4gLSBDYXRhbG9nIGl0ZW1zLCBubyBtb3JlIHRoYW4gb25lIGxldmVsIGJlbG93IHRoZSBjdXJyZW50IHBhZ2UgKG9yIGFsaWFzIHBvaW50KTwvbGk+DQogICAgICA8bGk+PHN0cm9uZz5pdGVtc19hbGw8L3N0cm9uZz4gLSBDYXRhbG9nIGl0ZW1zLCBhdCBhbnkgbGV2ZWwgYmVsb3cgdGhlIGN1cnJlbnQgcGFnZSAob3IgYWxpYXMgcG9pbnQpPC9saT4NCiAgICAgIDxsaT48c3Ryb25nPmNhdGVnb3JpZXNfb25lPC9zdHJvbmc+IC0gQ2F0ZWdvcmllcywgbm8gbW9yZSB0aGFuIG9uZSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KICAgICAgPGxpPjxzdHJvbmc+Y2F0ZWdvcmllc19hbGw8L3N0cm9uZz4gLSBDYXRlZ29yaWVzLCBhdCBhbnkgbGV2ZWwgYmVsb3cgdGhlIGN1cnJlbnQgcGFnZSAob3IgYWxpYXMgcG9pbnQpPC9saT4NCiAgICAgIDxsaT48c3Ryb25nPm1peGVkX29uZTwvc3Ryb25nPiAtIENhdGFsb2cgaXRlbXMgYW5kIENhdGVnb3JpZXMsIG5vIG1vcmUgdGhhbiBvbmUgbGV2ZWwgYmVsb3cgdGhlIGN1cnJlbnQgcGFnZSAob3IgYWxpYXMgcG9pbnQpPC9saT4NCiAgICAgIDxsaT48c3Ryb25nPm1peGVkX2FsbDwvc3Ryb25nPiAtIENhdGFsb2cgaXRlbXMgYW5kIENhdGVnb3JpZXMsIGF0IGFueSBsZXZlbCBiZWxvdyB0aGUgY3VycmVudCBwYWdlIChvciBhbGlhcyBwb2ludCk8L2xpPg0KICAgIDwvdWw+DQogICAgPC9wPg0KICAgIDxwPkl0ZW1zIGluIHRoZXNlIGxpc3RzIGNvbWUgYmFjayBpbiBoaWVyYXJjaHkgb3JkZXIuIFlvdSBjYW4gY2hhbmdlIHRoaXMgdXNpbmcgdGhlIDxzdHJvbmc+J2dsb2JhbF9zb3J0Jzwvc3Ryb25nPiBwYXJhbWV0ZXIuIFlvdXIgY2hvaWNlcyBhcmU6PC9wPg0KICAgIDx1bD4NCiAgICAgIDxsaT48c3Ryb25nPmFscGhhPC9zdHJvbmc+IC0gYWxwaGFiZXRpY2FsbHkgYnkgdGl0bGU8L2xpPg0KICAgICAgPGxpPjxzdHJvbmc+ZGF0ZTwvc3Ryb25nPiAtIGluIG9yZGVyIG9mIGl0ZW0gY3JlYXRpb24gZGF0ZTwvbGk+DQogICAgICA8bGk+PHN0cm9uZz5tZGF0ZTwvc3Ryb25nPiAtIGluIG9yZGVyIG9mIGl0ZW0gbW9kaWZpY2F0aW9uIGRhdGU8L2xpPg0KICAgIDwvdWw+DQogICAgPHA+WW91IG1heSBvcmRlciB0aGVzZSBzb3J0cyB1c2luZyB0aGUgPHN0cm9uZz4nZ2xvYmFsX3NvcnRfZGlyJzwvc3Ryb25nPiBwYXJhbWV0ZXIsIHdoaWNoIHdpbGwgYWxsb3cgPHN0cm9uZz4nYXNjJzwvc3Ryb25nPiBvciA8c3Ryb25nPidkZXNjJzwvc3Ryb25nPi48L3A+DQogICAgPHA+U28sIGZvciBhIHRob3JvdWdoIGV4YW1wbGU6PC9wPg0KICAgIDxwcmU+PHN0cm9uZz4mIzEyMztDYXRhbG9nZXIgYWN0aW9uPSdhbGwnIHN1Yl90ZW1wbGF0ZT0nbXlfc3ViX3RlbXBsYXRlJyBhbGlhcz0nLycgcmVjdXJzZT0nY2F0ZWdvcmllc19hbGwnIGdsb2JhbF9zb3J0PSdhbHBoYScgZ2xvYmFsX3NvcnRfZGlyPSdhc2MnfTwvc3Ryb25nPjwvcHJlPiANCiAgICA8aDQ+UmVjZW50bHkgQWRkZWQgRmVhdHVyZSBMaXN0PC9oND4NCiAgICA8cD5UbyB1c2UgYSAibW9zdC1yZWNlbnRseSBhZGRlZCIgbGlzdCB3aWxsIGFsbG93IHlvdSB0byBkaXNwbGF5IHRoZSBtb3N0IHJlY2VudGx5LWFkZGVkIGNhdGFsb2cgaXRlbXMgdW5kZXIgYSBzcGVjaWZpZWQgcGFydCBvZiB5b3VyIGhpZXJhcmNoeS48L3A+DQogICAgPHA+VGhlIHN5bnRheCBmb3IgYSAibW9zdCByZWNlbnRseSBhZGRlZCIgbGlzdCBpcyBsaWtlOjwvcD4NCiAgICA8cHJlPjxzdHJvbmc+JiMxMjM7Q2F0YWxvZ2VyIGFjdGlvbj0ncmVjZW50JyBzdWJfdGVtcGxhdGU9J215X3N1Yl90ZW1wbGF0ZSd9PC9zdHJvbmc+PC9wcmU+IA0KICAgIDxwPndoZXJlIHN1Yl90ZW1wbGF0ZSBpcyB0aGUgdGVtcGxhdGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgbGlzdC4gVGhlcmUgYXJlIGZvdXIgb3B0aW9uYWwgcGFyYW1ldGVycywgPHN0cm9uZz5jb3VudD0nMyc8L3N0cm9uZz4sIDxzdHJvbmc+YWxpYXM9J3BhZ2VfYWxpYXMnPC9zdHJvbmc+LCA8c3Ryb25nPmdsb2JhbF9zb3J0PSdkYXRlJzwvc3Ryb25nPiwgPHN0cm9uZz5nbG9iYWxfc29ydF9kaXI9J2Rlc2MnPC9zdHJvbmc+IHdoZXJlIDxzdHJvbmc+Y291bnQ8L3N0cm9uZz4gaXMgdGhlIG51bWJlciBvZiBpdGVtcyB0byBpbmNsdWRlLCA8c3Ryb25nPnBhZ2VfYWxpYXM8L3N0cm9uZz4gaW5kaWNhdGVzIHRoZSB0b3Agb2YgdGhlIHRyZWUgKGUuZy4sIGEgcGxhY2UgaW4geW91ciBtZW51IGhpZXJhcmNoeSwgdHlwaWNhbGx5IGEgY2F0ZWdvcnkgcGFnZSkgaW4gd2hpY2ggdG8gbG9vayBmb3IgbmV3IGl0ZW1zLiBBIHNwZWNpYWwgdmFsdWUgZm9yIDxzdHJvbmc+InBhZ2VfYWxpYXMiPC9zdHJvbmc+IGlzIDxzdHJvbmc+Ii8iPC9zdHJvbmc+LCB3aGljaCBtZWFucyB0byB1c2UgPGk+YWxsPC9pPiBwYWdlcyBpbiB0aGUgc2l0ZS4gPHN0cm9uZz5nbG9iYWxfc29ydDwvc3Ryb25nPiBtYXkgYmUgPHN0cm9uZz4nZGF0ZSc8L3N0cm9uZz4gKGZvciBpdGVtIGNyZWF0aW9uIGRhdGUpIG9yIDwvc3Ryb25nPidtZGF0ZSc8L3N0cm9uZz4gZm9yIG1vZGlmaWNhdGlvbiBkYXRlLCBhbmQgPHN0cm9uZz5nbG9iYWxfc29ydF9kaXI8L3N0cm9uZz4gbWF5IGJlIDxzdHJvbmc+J2FzYyc8L3N0cm9uZz4gb3IgPHN0cm9uZz4nZGVzYyc8L3N0cm9uZz4uPC9wPg0KICAgIDxoND5SYW5kb20gSXRlbXMgRmVhdHVyZSBMaXN0PC9oND4NCiAgICA8cD5UaGUgc3ludGF4IGZvciBhICJyYW5kb20iIGxpc3QgaXMgbGlrZTo8L3A+DQogICAgPHByZT48c3Ryb25nPiYjMTIzO0NhdGFsb2dlciBhY3Rpb249J3JhbmRvbScgc3ViX3RlbXBsYXRlPSdteV9zdWJfdGVtcGxhdGUnfTwvc3Ryb25nPjwvcHJlPiANCiAgICA8cD53aGVyZSBzdWJfdGVtcGxhdGUgaXMgdGhlIHRlbXBsYXRlIHRvIHVzZSB0byByZW5kZXIgdGhlIGxpc3QuIFRoZXJlIGFyZSB0d28gb3B0aW9uYWwgcGFyYW1ldGVycywgPHN0cm9uZz5jb3VudD0nMyc8L3N0cm9uZz4gYW5kIDxzdHJvbmc+YWxpYXM9J3BhZ2VfYWxpYXMnPC9zdHJvbmc+LCB3aGVyZSA8c3Ryb25nPmNvdW50PC9zdHJvbmc+IGlzIHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gaW5jbHVkZSwgYW5kIDxzdHJvbmc+cGFnZV9hbGlhczwvc3Ryb25nPiBpbmRpY2F0ZXMgdGhlIHRvcCBvZiB0aGUgdHJlZSAoZS5nLiwgYSBwbGFjZSBpbiB5b3VyIG1lbnUgaGllcmFyY2h5LCB0eXBpY2FsbHkgYSBjYXRlZ29yeSBwYWdlKSBpbiB3aGljaCB0byBsb29rIGZvciBuZXcgaXRlbXMuIEEgc3BlY2lhbCB2YWx1ZSBmb3IgPHN0cm9uZz4icGFnZV9hbGlhcyI8L3N0cm9uZz4gaXMgPHN0cm9uZz4iLyI8L3N0cm9uZz4sIHdoaWNoIG1lYW5zIHRvIHVzZSA8aT5hbGw8L2k+IHBhZ2VzIGluIHRoZSBzaXRlLjwvcD4NCiAgPC9kaXY+DQogIHsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqfQ0KICB7KiBJbWFnZSBTeXN0ZW0gKn0NCiAgPGRpdiBpZD0iaW1hZ2VzeXNfYyI+DQogICAgPGgzPkNhdGFsb2dlciBJbWFnZSBTeXN0ZW08L2gzPg0KICAgIDxwPkNhdGFsb2dlciBoYXMgYW4gaW1hZ2Ugc3lzdGVtIHRoYXQgd2lsbCBhbGxvdyB5b3UgdG8gZHluYW1pY2FsbHkgY2hhbmdlIHRoZSBpbWFnZSBkaXNwbGF5IHNpemUuIElmIHlvdSBkbyBub3QgbGlrZSBpdCwgeW91IGNhbiBhbHRlcg0KICAgIHRoZSB0ZW1wbGF0ZXMgYW5kIHVzZSBhbnkgaW1hZ2Ugc3lzdGVtIHlvdSB3YW50LjwvcD4NCiAgICA8cD5XaGVuIHlvdSB1cGxvYWQgYW4gaW1hZ2UgdXNpbmcgQ2F0YWxvZ2VyLCBpdCBnZXRzIHB1dCBpbiBhIHNwZWNpYWwgc2V0IG9mIGRpcmVjdG9yaWVzIHRvIG1ha2UgdGhlIGltYWdpbmcgZWFzaWVyLiBZb3Ugd2lsbCBzZWUgbW9yZQ0KICAgIGFib3V0IHRoaXMgbGF0ZXIuPC9wPg0KICAgIDxwPkl0IHdvcmtzIGJ5IGNhbGxpbmcgYSBQSFAgcHJvZ3JhbSBpbnN0ZWFkIG9mIGRpcmVjdGx5IHJlZmVyZW5jaW5nIHRoZSBpbWFnZS4gVGhlIHByb2dyYW0gdXNlcyB0aGUgZmlsZW5hbWUgdG8gc2VlIGlmIHRoZQ0KICAgIGltYWdlIGFscmVhZHkgZXhpc3RzIGluIHRoZSBjb3JyZWN0IHNpemUuIElmIHNvLCBpdCB1c2VzIHRoYXQgaW1hZ2UuIE90aGVyd2lzZSwgaXQgdXNlcyB5b3VyIDxzdHJvbmc+R0RMSUI8L3N0cm9uZz4gb3IgPHN0cm9uZz5JbWFnZU1hZ2ljazwvc3Ryb25nPiB0byBjcmVhdGUgdGhlIGltYWdlIGluIHRoZSBjb3JyZWN0IHNpemUsIGFuZCB0aGVuIHJlZGlyZWN0cyB0byBpdC48L3A+DQogICAgPGg0PkNhdGFsb2dlciBJbWFnZSBGaWxlc3BlYyBFeHBsYW5hdGlvbjwvaDQ+DQogICAgPHA+QSBjYXRhbG9nZXIgaW1hZ2UgaGFzIGEgZmlsZXNwZWMgbGlrZTo8L3A+DQogICAgPHByZT4mbHNhcXVvO3Jvb3QmcnNhcXVvOy9jYXRhbG9nZXJfaW1hZ2UoLnBhZ2VfZXh0ZW50aW9uKT9pPWl0ZW1uYW1lX2ZfMV80MDBfMS5qcGcmYW1wO2FjPTgyODg4PC9wcmU+DQogICAgPHA+PGRpdiBjbGFzcz0naW5mb3JtYXRpb24nPlRoZXJlIGFyZSBkaWZmZXJlbmNlcyBpbiBpbWFnZSBoYW5kbGluZyBpbiA8c3Ryb25nPkNhdGFsb2dlcjwvc3Ryb25nPiBzaW5jZSA8c3Ryb25nPnZlcnNpb24gMS4wPC9zdHJvbmc+Ljxicj5UaGUgb2xkIHNwZWMgaGFzIGJlZW4gcmVtb3ZlZCwgYW5kIGlzIG5vIGxvbmdlciB1c2VkLDxicj4gaS5lLjogPHN0cm9uZz4mbHNhcXVvO3Jvb3RfcGF0aCZyc2FxdW87L21vZHVsZXMvQ2F0YWxvZ2VyL0NhdGFsb2dlci5JbWFnZS5waHA/aT1pdGVtbmFtZV9mXzFfNDAwXzEuanBnJmFjPTgyODg4PC9zdHJvbmc+IHNwZWMgYXMgZXhwbGFpbmVkIGFuZCB1c2VkIG9uIHByZXZpb3VzIHZlcnNpb25zIDxzdHJvbmc+bm8gbG9uZ2VyIHdvcmtzPC9zdHJvbmc+Ljxicj5UbyBiZSBtb3JlIHByZWNpc2UsIDxzdHJvbmc+Q2F0YWxvZ2VyLkltYWdlLnBocDwvc3Ryb25nPiBpcyBubyBsb25nZXIgdmFsaWQgYXMgaXQgdXNlZCBhbiB1bnN1cHBvcnRlZCBtZXRob2Qgb2YgY2FsbGluZyBDTVNNUyBjb3JlIGZ1bmN0aW9ucy4gSG93ZXZlciB0aGUgZmlsZW5hbWUgc3BlY3Mgc3RpbGwgYXBwbHksIHN1Y2ggYXMgPHN0cm9uZz5pdGVtbmFtZV9mXzFfNDAwXzEuanBnJmFjPTgyODg4PC9zdHJvbmc+IGFsb25nIHdpdGggdGhlIDxzdHJvbmc+YWM8L3N0cm9uZz4gcGFyYW1ldGVyIGFzIGV4cGxhaW5lZCBiZWxvdy48L2Rpdj48L3A+DQogICAgPHA+PGRpdiBjbGFzcz0nd2FybmluZyc+PHN0cm9uZz5DYXRhbG9nZXIuSW1hZ2UucGhwPC9zdHJvbmc+IGhhcyBiZWVuIHJlcGxhY2VkIGJ5IGEgbW9kdWxlIGFjdGlvbiBhbmQgPHN0cm9uZz5DYXRhbG9nZXI8L3N0cm9uZz4gd2lsbCB1c2UgdGhlIG5ldyBtZXRob2QgYXV0b21hdGljYWxseS4gTm8gY2hhbmdlcyBpbiB0aGUgc3ViLXRlbXBsYXRlcyBzaG91bGQgYmUgbmVlZGVkIHVubGVzcyB0aGUgZGV2ZWxvcGVyL2Rlc2lnbmVyIGhhcywgZm9yIHNvbWUgcmVhc29uLCBoYXJkLWNvZGVkIHBhcnQgb2YgdGhlIHVybCBvbiB0aGUgdGVtcGxhdGVzIGluc3RlYWQgb2YgdXNpbmcgdGhlIGdlbmVyYXRlZCBsaW5rcy48L2Rpdj48L3A+DQogICAgPHA+VGhlIGludGVyZXN0aW5nIHRoaW5nIGlzIDxzdHJvbmc+Iml0ZW1uYW1lX2ZfMV80MDBfMS5qcGciPC9zdHJvbmc+IC0gdGhlIHN0dWZmIGJlZm9yZSBpcyBqdXN0IGEgY2FsbCB0byB0aGUgcHJvZ3JhbSwgYW5kIHRoZSA8c3Ryb25nPiZhbXA7YWM9ODI4ODg8L3N0cm9uZz4gaXMgYSByYW5kb20gdGhpbmcgdGhhdCBpcyBkZXNpZ25lZCB0byBwcmV2ZW50IGJyb3dzZXIgY2FjaGluZy4gU28gZXhhbWluaW5nIHRoZSBuYW1lIHBpZWNlIGJ5IHBpZWNlIChzZXBhcmF0aW5nIGF0IHRoZSB1bmRlcnNjb3JlcyksIHdlIGhhdmU6PC9wPg0KICAgIDx1bD4NCiAgICAgIDxsaT48c3Ryb25nPml0ZW0gbmFtZTwvc3Ryb25nPiAtIHRoaXMgaXMgdGhlIGFsaWFzIG9mIHRoZSBpdGVtL2NhdGVnb3J5IHBhZ2UgY29udGFpbmluZyB0aGUgaW1hZ2UuPC9saT4NCiAgICAgIDxsaT48c3Ryb25nPmltYWdlIHR5cGU8L3N0cm9uZz4gLSB0aGlzIGlzIGEgZGVzaWduYXRpb24gZm9yIGltYWdlIHR5cGU6DQogICAgICAgIDx1bD4NCiAgICAgICAgICA8bGk+PHN0cm9uZz5mPC9zdHJvbmc+IC0gaXRlbSBmdWxsLXNpemUgaW1hZ2U8L2xpPg0KICAgICAgICAgIDxsaT48c3Ryb25nPnQ8L3N0cm9uZz4gLSBpdGVtIHRodW1ibmFpbDwvbGk+DQogICAgICAgICAgPGxpPjxzdHJvbmc+Y2Y8L3N0cm9uZz4gLSBjYXRlZ29yeSBmdWxsLXNpemVkIGltYWdlPC9saT4NCiAgICAgICAgICA8bGk+PHN0cm9uZz5jdDwvc3Ryb25nPiAtIGNhdGVnb3J5IHRodW1ibmFpbDwvbGk+DQogICAgICAgICAgPGxpPjxzdHJvbmc+Y3RmPC9zdHJvbmc+IC0gcHJpbnRhYmxlIGNhdGFsb2cgZnVsbC1zaXplZCBpbWFnZTwvbGk+DQogICAgICAgIDwvdWw+DQogICAgICA8L2xpPg0KICAgICAgPGxpPjxzdHJvbmc+aW1hZ2UgbnVtYmVyPC9zdHJvbmc+IC0gc28gYSBnaXZlbiBpdGVtL2NhdGFsb2cvZXRjIGNhbiBoYXZlIG11bHRpcGxlIGltYWdlczwvbGk+DQogICAgICA8bGk+PHN0cm9uZz5sb25nIGRpbWVuc2lvbjwvc3Ryb25nPiAtIGxvbmcgZGltZW5zaW9uIG9mIHRoZSBpbWFnZSwgaW4gcGl4ZWxzPC9saT4NCiAgICAgIDxsaT48c3Ryb25nPm1pc3NpbmcgZmxhZzwvc3Ryb25nPiAtIDEgaWYgeW91IHdhbnQgdG8gc2hvdyBhbiAiaW1hZ2UgbWlzc2luZyIgaW1hZ2UgaWYgdGhpcyBpbWFnZSBkb2Vzbid0IGV4aXN0LCAwIG90aGVyd2lzZTwvbGk+DQogICAgPC91bD4NCiAgICA8cD4NCiAgICBUaGlzIHdpbGwgdGFrZSBhbiBpbWFnZSBpbiA8c3Ryb25nPnJvb3RfcGF0aC91cGxvYWRzL2ltYWdlcy9jYXRhbG9nX3NyYy9pdGVtbmFtZV9zcmNfMTwvc3Ryb25nPg0KICAgIDxwPkFzIG9mIDxzdHJvbmc+dmVyc2lvbiAxLjAgQ2F0YWxvZ2VyPC9zdHJvbmc+IGhhcyBjaGFuZ2VkIHRoZSB3YXkgaXQgaGFuZGxlcyBpbWFnZXMuIFRoZSA8c3Ryb25nPkNhdGFsb2dlci5JbWFnZS5waHA8L3N0cm9uZz4gZmlsZSBhcyBiZWVuIHJlbW92ZWQgYW5kIGFsbCBpbWFnZSBoYW5kbGluZyBpcyBkb25lIHRocm91Z2ggYSBtb2R1bGUgYWN0aW9uIHVzZWQgc3BlY2lmaWNhbGx5IGZvciB0aGF0IHB1cnBvc2UuICBUaGlzIGFsbG93ZWQgYmV0dGVyIHN1cHBvcnQgdG8gcHJldHR5IFVSTHMsIGFuZCBmaWxlIG9iZnVzY2F0aW9uIGFzIHRoZSBhY3Rpb24gZG9lc24ndCByZWRpcmVjdCB0byB0aGUgZ2VuZXJhdGVkIGltYWdlIGJ1dCBnZW5lcmF0ZXMgYSBjb3B5IG9mIHRoZSBpbWFnZSB3aXRob3V0IHJldmVhbGluZyB0aGUgb3JpZ2luYWwgaW1hZ2UgbG9jYXRpb24uPC9wPg0KICAgIDxoND5BY2Nlc3NpbmcgeW91ciBPcmlnaW5hbCBJbWFnZTwvaDQ+DQogICAgPHA+V2hlbiBDYXRhbG9nZXIgdXBsb2FkcyBpbWFnZXMsIGl0IHB1dHMgdGhlbSBpbnRvIGEgZGlyZWN0b3J5IGNhbGxlZCA8c3Ryb25nPiJjYXRhbG9nZXJfc3JjIjwvc3Ryb25nPiBpbiB5b3VyIDxzdHJvbmc+dXBsb2Fkcy9pbWFnZXMvPC9zdHJvbmc+IGRpcmVjdG9yeS4gVGhlIGltYWdlcyBhcmUgbmFtZWQgYWNjb3JkaW5nIHRvIHRoZSBhbGlhcyBvZiB0aGUgcGFnZTogPHN0cm9uZz5hbGlhc19zcmNfIy5qcGc8L3N0cm9uZz4gd2hlcmUgIyBpcyB0aGUgaW1hZ2UgbnVtYmVyIGZvciB0aGF0IHBhZ2UuPC9wPg0KICAgIDxwPlNvLCB0byBhY2Nlc3MgdGhlIG9yaWdpbmFsbHkgdXBsb2FkZWQgaW1hZ2VzIG9uIGEgQ2F0ZWdvcnkgcGFnZSwgeW91J2QgZ2VuZXJhdGUgdGhlIFVSTCBtYW51YWxseS48L3A+DQogICAgPHA+U28gb24gYSBjYXRlZ29yeSBwYWdlLCBmb3IgZXhhbXBsZSwgaW5zdGVhZCBvZiB1c2luZyB7bGl0ZXJhbH08c3Ryb25nPnskaXRlbXNbbnVtbG9vcF0uaW1hZ2V9PC9zdHJvbmc+ey9saXRlcmFsfSB5b3UnZCB1c2UgPHN0cm9uZz4iL3VwbG9hZHMvaW1hZ2VzL2NhdGFsb2dlcl9zcmMve2xpdGVyYWx9eyRpdGVtc1tudW1sb29wXS5hbGlhc31fc3JjXzEuanBnIjwvc3Ryb25nPnsvbGl0ZXJhbH0uPC9wPg0KICA8L2Rpdj4NCiAgeyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKip9DQogIHsqIEN1c3RvbWl6YXRpb24gYW5kIEFkdmFuY2VkIFRvcGljcyAqfQ0KICA8ZGl2IGlkPSJhZHZhbmNlZF9jIj4NCiAgICA8aDM+Q3VzdG9taXphdGlvbiBhbmQgQWR2YW5jZWQgVG9waWNzPC9oMz4NCiAgICA8aDQ+Q2F0YWxvZyBJdGVtIEF0dHJpYnV0ZXM8L2g0Pg0KICAgIDxwPlRoZSBkZWZhdWx0IGl0ZW0gYXR0cmlidXRlcyBhcmUgdHlwaWNhbCBmb3IgYSBjYXRhbG9nIG9mIHByb2R1Y3RzIG9yIGFydHdvcmtzLCBidXQgYnkgZ29pbmcgaW50byA8c3Ryb25nPjxlbT5FeHRlbnNpb25zICZndDsgQ2F0YWxvZ2VyICZndDsgTWFuYWdlIFVzZXItRGVmaW5lZCBBdHRyaWJ1dGVzPC9lbT48L3N0cm9uZz4sIHlvdSBjYW4gY2hhbmdlIHRoZSBhdHRyaWJ1dGVzLiBJdCdzIGJlc3QgdG8gZGVmaW5lIHRoZSBhdHRyaWJ1dGVzIGJlZm9yZSB5b3Ugc3RhcnQgZW50ZXJpbmcgQ2F0YWxvZyBJdGVtcy48L3A+DQogICAgPHA+PGRpdiBjbGFzcz0naW5mb3JtYXRpb24nPk5vdGUgdGhhdCB0aGUgYXR0cmlidXRlcyB5b3UgZGVmaW5lIG1heSBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSB0ZW1wbGF0ZSB0aGF0IHlvdSdyZSB1c2luZyB0byBkaXNwbGF5IENhdGFsb2cgSXRlbXM6ICBzZWUgQ3VzdG9tIFRlbXBsYXRlcyBiZWxvdy48L2Rpdj48L3A+DQogICAgPGg0PkNhdGFsb2cgQ2F0ZWdvcnkgQXR0cmlidXRlczwvaDQ+DQogICAgPHA+U2ltaWxhcmx5LCB5b3UgY2FuIHNldCBhdHRyaWJ1dGVzIGZvciBDYXRlZ29yaWVzLiBBcyB3aXRoIEl0ZW1zLCB0aGUgYXR0cmlidXRlcyB5b3UgZGVmaW5lIG1heSBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSB0ZW1wbGF0ZSB0aGF0IHlvdSdyZSB1c2luZyB0byBkaXNwbGF5IENhdGFsb2cgQ2F0ZWdvcmllcy48L3A+DQogICAgPGg0PlByaW50YWJsZSBDYXRhbG9nIEF0dHJpYnV0ZXM8L2g0Pg0KICAgIDxwPkxpa2V3aXNlLCB5b3UgY2FuIHNldCBhdHRyaWJ1dGVzIGZvciBQcmludGFibGUgQ2F0YWxvZ3MuIEFzIHdpdGggSXRlbXMgYW5kIENhdGVnb3JpZXMsIHRoZSBhdHRyaWJ1dGVzIHlvdSBkZWZpbmUgbWF5IG5lZWQgdG8gYmUgYWRkZWQgdG8gdGhlIHRlbXBsYXRlIHRoYXQgeW91J3JlIHVzaW5nIHRvIGRpc3BsYXkgeW91ciBQcmludGFibGUgQ2F0YWxvZy48L3A+DQogICAgPGg0PlZhcmlhYmxlIEFjdGlvbjwvaDQ+DQogICAgPHA+WW91IGNhbiBncmFiIHZhcmlhYmxlcyAoYXR0cmlidXRlcykgb3V0c2lkZSBvZiB5b3VyIENhdGFsb2dlciB0ZW1wbGF0ZXMsIHVzaW5nIHRoZSA8c3Ryb25nPnZhcmlhYmxlPC9zdHJvbmc+IGFjdGlvbiBwYXJhbWV0ZXIuIFRoZSBzeW50YXggbG9va3MgbGlrZTo8L3A+DQogICAgPHByZT48c3Ryb25nPiYjMTIzO0NhdGFsb2dlciBhY3Rpb249J3ZhcmlhYmxlJyBuYW1lPSdpdGVtbm90ZXMnIGRlZmF1bHQ9J25vIG5vdGVzJ308L3N0cm9uZz48L3ByZT4gDQogICAgPHA+d2hlcmUgbmFtZSBpcyB0aGUgYXR0cmlidXRlIHRvIGRpc3BsYXkgKHVzaW5nIHRoZSBzYW1lIGFsbCBsb3dlci1jYXNlLCBwdW5jdHVhdGlvbi1mcmVlIHJlcHJlc2VudGF0aW9uIGxpa2UgdGhlIHNtYXJ0eSB0ZW1wbGF0ZSB2YXJpYWJsZXMpLCBhbmQgZGVmYXVsdCBpcyB0aGUgdmFsdWUgdG8gdXNlIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IGRlZmluZWQuPC9wPg0KICAgIDxoND5JdGVtIENvbXBhcmlzb25zPC9oND4NCiAgICA8cD5BcyBvZiA8c3Ryb25nPnZlcnNpb24gMC43Ljc8L3N0cm9uZz4sIHRoZXJlIGlzIGEgPHN0cm9uZz5wcm9kdWN0IGNvbXBhcmlzb248L3N0cm9uZz4gYWN0aW9uOjwvcD4NCiAgICA8cHJlPjxzdHJvbmc+JiMxMjM7Q2F0YWxvZ2VyIGFjdGlvbj0nY29tcGFyZScgc3ViX3RlbXBsYXRlPSdteV9zdWJfdGVtcGxhdGUnIGl0ZW1zPSdpdGVtMSxpdGVtMixpdGVtMyd9PC9zdHJvbmc+PC9wcmU+DQogICAgPHA+d2hlcmUgc3ViX3RlbXBsYXRlIGlzIHRoZSB0ZW1wbGF0ZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBsaXN0LCBhbmQgaXRlbXMgaXMgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBpdGVtIHBhZ2UgYWxpYXNlcyB0byBjb21wYXJlLiBCb2xkZXIgdXNlcnMgbWF5IGFsc28gY2hvb3NlIHRvIHBhc3MgaW4gdGhlIGl0ZW1zIHRvIGNvbXBhcmUgYXMgcmVxdWVzdCB2YXJpYWJsZXMsIHRoZXJlYnkgZW5hYmxpbmcgZHluYW1pYyBjb21wYXJpc29ucyBiYXNlZCBvbiB1c2VyIHNlbGVjdGlvbnMuIERvIHRoaXMgYnkgc2V0dGluZyB0aGUgPHN0cm9uZz4iaXRlbXMiPC9zdHJvbmc+IHZhcmlhYmxlIG9uIHRoZSByZXF1ZXN0IHBhc3NlZCB0byB0aGUgcGFnZSBjb250YWluaW5nIHRoZSBDYXRhbG9nZXIgdGFnIHdpdGggYSBjb21wYXJlIGFjdGlvbi48L3A+DQogICAgPHA+VGhlIGRlZmF1bHQgaXRlbSBjb21wYXJpc29uIHRlbXBsYXRlIGNvdWxkIHVzZSBzb21lIHN0eWxpbmcsIGUuZy4sOjwvcD4NCiAgICA8cHJlPntsaXRlcmFsfQ0KICAgIC5pdGVtX2NvbXBhcmlzb24gdGgge2ZvbnQtd2VpZ2h0OiBib2xkOyBwYWRkaW5nOiA1cHg7IHRleHQtYWxpZ246Y2VudGVyO30NCiAgICAuaXRlbV9jb21wYXJpc29uIHRkIHtib3JkZXI6IDFweCBzb2xpZCBncmF5OyBwYWRkaW5nOiAzcHggNXB4O3RleHQtYWxpZ246cmlnaHQ7fXsvbGl0ZXJhbH08L3ByZT4NCiAgDQogICAgPGg0PkN1c3RvbSBUZW1wbGF0ZXM8L2g0Pg0KICAgIDxwPklmIHlvdSdyZSB3aWxsaW5nIHRvIG1lc3MgYXJvdW5kIHdpdGggPHN0cm9uZz5TbWFydHkgVGVtcGxhdGVzPC9zdHJvbmc+LCB5b3UgY2FuIGNoYW5nZSB0aGUgbGF5b3V0IG9mIGFueSBvZiB0aGUgcGFnZXMgZ2VuZXJhdGVkIGJ5IENhdGFsb2dlci4gVGhlcmUgYXJlIGZvdXIga2luZHMgb2YgdGVtcGxhdGVzOiBvbmUga2luZCBmb3IgPHN0cm9uZz5DYXRhbG9nIEl0ZW1zPC9zdHJvbmc+LCBvbmUga2luZCBmb3IgPHN0cm9uZz5DYXRhbG9nIENhdGVnb3JpZXM8L3N0cm9uZz4sIGFuZCBvbmUga2luZCBmb3IgPHN0cm9uZz5QcmludGFibGUgQ2F0YWxvZ3M8L3N0cm9uZz4sIGFuZCBvbmUga2luZCBmb3IgPHN0cm9uZz4iRmVhdHVyZSI8L3N0cm9uZz4gbGlzdHMsIHN1Y2ggYXMgcmVjZW50bHkgYWRkZWQgaXRlbXMgb3IgcmFuZG9tIHNlbGVjdGlvbnMuPC9wPg0KICAgIDxwPldoZW4gZWRpdGluZyBhIFRlbXBsYXRlLCB0aGUgYWRtaW4gc2NyZWVuIHdpbGwgZGlzcGxheSBhIGxpc3Qgb2YgU21hcnR5IHRhZ3MgYXZhaWxhYmxlIHRvIHlvdSBmb3IgdGhhdCBraW5kIG9mIHRlbXBsYXRlLiBUaGlzDQogICAgd2lsbCBvbmx5IGhhcHBlbiBvbmNlIHRoZSBtb2R1bGUga25vd3Mgd2hhdCBraW5kIG9mIHRlbXBsYXRlIHlvdSdyZSBlZGl0aW5nLCBzbyB3aGVuIHlvdSBmaXJzdCBjcmVhdGUgdGhlIHRlbXBsYXRlLCBpdCBkaXNwbGF5cyBhbGwNCiAgICB0aGUgU21hcnR5IHRhZ3MgaXQga25vd3MgYWJvdXQsIG9ubHkgc29tZSBvZiB3aGljaCBiZWluZyBhcHBsaWNhYmxlLjwvcD4NCiAgICA8aDQ+RGlzcGxheWluZyBBdHRyaWJ1dGVzIG9uIEl0ZW0gUGFnZXM8L2g0Pg0KICAgIDxwPkF0dHJpYnV0ZXMgYXJlIGF2YWlsYWJsZSB0byBTbWFydHkgYXMgdG9wLWxldmVsIHZhcmlhYmxlcy4gVGhleSBhcmUgc3RvcmVkIGFzIHNhbml0aXplZCB2ZXJzaW9ucyBvZiB0aGUgYXR0cmlidXRlIG5hbWVzLCB3aGljaCBtZWFucw0KICAgIGl0IGlzIGNvbnZlcnRlZCB0byBsb3dlciBjYXNlIGFuZCBhbGwgcHVuY3R1YXRpb24gYW5kIG5vbi1VUy1BU0NJSSBjaGFyYWN0ZXJzIGdldCByZW1vdmVkLiBUaGlzIGlzIGJlY2F1c2UgU21hcnR5IGlzIGZpbmlja3ksIGFuZCB3aWxsIG5vdCBoYW5kbGUgdGhlc2UgY2hhcmFjdGVycy48L3A+DQogICAgPHA+U28sIGZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBhbiBhdHRyaWJ1dGUgY2FsbGVkIDxzdHJvbmc+Ikdsw7xja2xpY2hrZWl0Ijwvc3Ryb25nPiwgdGhlcmUgd2lsbCBiZSBhIFNtYXJ0eSB2YXJpYWJsZSA8c3Ryb25nPntsZGVsaW19JGdsY2tsaWNoa2VpdH08L3N0cm9uZz4uIE5vdGUgdGhhdCB0aGUgIsO8IiBpcyBvbWl0dGVkLjwvcD4NCiAgICA8cD5Gb3J0dW5hdGVseSwgdGhpcyBpcyBzaW1wbGlmaWVkIGJ5IHRoZSAkYXR0cmxpc3QgbGlzdCBhdmFpbGFibGUuIFRoaXMgaXMgYSBsaXN0IG9mIGF0dHJpYnV0ZXMgYnkgZm9ybWFsIG5hbWUgKCJHbMO8Y2tsaWNoa2VpdCIpIGFuZCB0aGVpciBrZXkgKCJnbGNrbGljaGtlaXQiKS4gRm9yIGV4YW1wbGU6DQogICAgPHByZT57bGl0ZXJhbH0NCiAgICAgIHtzZWN0aW9uIG5hbWU9YXQgbG9vcD0kYXR0cmxpc3R9DQogICAgICAmbHQ7ZGl2IGNsYXNzPSJpdGVtX2F0dHJpYnV0ZV9uYW1lIj57JGF0dHJsaXN0W2F0XS5uYW1lfTombHQ7L2Rpdj4mbHQ7ZGl2IGNsYXNzPSJpdGVtX2F0dHJpYnV0ZV92YWwiPntldmFsIHZhcj0kYXR0cmxpc3RbYXRdLmtleX0mbHQ7L2Rpdj4NCiAgICAgIHsvc2VjdGlvbn17L2xpdGVyYWx9PC9wcmU+DQogICAgPHA+QXMgb2YgPHN0cm9uZz52ZXJzaW9uIDAuODwvc3Ryb25nPiwgeW91IGNhbiBhc3NpZ24gYW4gYWxpYXMgdG8gZWFjaCBhdHRyaWJ1dGUuIFRoZXNlIGFsaWFzZXMgbmVlZCB0byBiZSBVUy1BU0NJSSBhbmQgY29udGFpbiBubyBwdW5jdHVhdGlvbi4gVGhleSBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBzYW5pdGl6ZWQgYXR0cmlidXRlIG5hbWUgKGUuZy4sIHlvdSBjb3VsZCB1c2UgdGhlIGFsaWFzICJnbHVlY2tsaWNoa2VpdCIpLjwvcD4NCiAgICA8aDQ+RGlzcGxheWluZyBBdHRyaWJ1dGVzIG9uIFBhZ2VzIHdpdGggTGlzdHMgb2YgSXRlbXM8L2g0Pg0KICAgIDxwPkF0dHJpYnV0ZXMgYXJlIGluY2x1ZGVkIGluIHRoZSA8c3Ryb25nPiRpdGVtbGlzdHNbI108L3N0cm9uZz4gaW4gdHdvIGRpZmZlcmVudCB3YXlzOiB0b3AtbGV2ZWwgYXR0cmlidXRlcyBvZiB0aGUgaXRlbSwgYW5kIGFzIHBhcnQgb2YgdGhlIGl0ZW0ncyA8c3Ryb25nPiJhdHRyIjwvc3Ryb25nPiBhcnJheS4gVGhleSBhcmUgc3RvcmVkIGFzIHNhbml0aXplZCB2ZXJzaW9ucyBvZiB0aGUgYXR0cmlidXRlIG5hbWVzLCB3aGljaCBtZWFucyB0aGV5IGFyZSBjb252ZXJ0ZWQgdG8gbG93ZXIgY2FzZSBhbmQgYWxsIHB1bmN0dWF0aW9uIGFuZCBub24tVVMtQVNDSUkgY2hhcmFjdGVycyBnZXQgcmVtb3ZlZC4gVGhpcyBpcyBiZWNhdXNlIFNtYXJ0eSBpcyBmaW5pY2t5LCBhbmQgd2lsbCBub3QgaGFuZGxlIHRoZXNlIGNoYXJhY3RlcnMuPC9wPg0KICAgIDxwPlNvLCBmb3IgZXhhbXBsZSwgaWYgeW91IGhhdmUgYW4gYXR0cmlidXRlIGNhbGxlZCA8c3Ryb25nPiJHbMO8Y2tsaWNoa2VpdCI8L3N0cm9uZz4sIHRoZSBpdGVtIHdpbGwgaGF2ZSA8c3Ryb25nPiRpdGVtLmdsY2tsaWNoa2VpdDwvc3Ryb25nPiBhbmQgPHN0cm9uZz4kaXRlbS5hdHRyc1snZ2xja2xpY2hrZWl0J108L3N0cm9uZz4uIE5vdGUgdGhhdCB0aGUgPHN0cm9uZz4iw7wiPC9zdHJvbmc+IGlzIG9taXR0ZWQuIFlvdSBjYW4gcmVmZXIgdG8gdGhpcyBhdHRyaWJ1dGUgaW4geW91ciB0ZW1wbGF0ZQ0KICAgIHdpdGggU21hcnR5IGNvZGUgbGlrZToge2xpdGVyYWx9PHN0cm9uZz57JGl0ZW1saXN0W2luZGV4XS5nbGNrbGlja2tlaXR9PC9zdHJvbmc+IG9yIDxzdHJvbmc+eyRpdGVtbGlzdFtpbmRleF0uYXR0cnMuZ2xja2xpY2hrZWl0fTwvc3Ryb25nPnsvbGl0ZXJhbH0uPC9wPg0KICAgIDxwPkZvcnR1bmF0ZWx5LCB0aGlzIGlzIHNpbXBsaWZpZWQgYnkgdGhlIDxzdHJvbmc+JGF0dHJsaXN0PC9zdHJvbmc+IGxpc3QgYXZhaWxhYmxlLiBUaGlzIGlzIGEgbGlzdCBvZiBhdHRyaWJ1dGVzIGJ5IGZvcm1hbCBuYW1lICgiR2zDvGNrbGljaGtlaXQiKSBhbmQgdGhlaXIga2V5ICgiZ2xja2xpY2hrZWl0IikuIEZvciBleGFtcGxlOg0KICAgIDxwcmU+e2xpdGVyYWx9DQogICAgICAgIHtmb3JlYWNoIGZyb209JGF0dHJsaXN0IGl0ZW09YXR0ciBrZXk9a30NCiAgICAgICAgeyRhdHRyfTogeyRpdGVtc1tudW1sb29wXVska119DQogICAgICAgIHsvZm9yZWFjaH17L2xpdGVyYWx9PC9wcmU+DQogICAgPHA+QXMgb2YgPHN0cm9uZz52ZXJzaW9uIDAuODwvc3Ryb25nPiwgeW91IGNhbiBhc3NpZ24gYW4gYWxpYXMgdG8gZWFjaCBhdHRyaWJ1dGUuIFRoZXNlIGFsaWFzZXMgbmVlZCB0byBiZSA8c3Ryb25nPlVTLUFTQ0lJPC9zdHJvbmc+IGFuZCBjb250YWluIG5vIHB1bmN0dWF0aW9uLiBUaGV5IGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIHNhbml0aXplZCBhdHRyaWJ1dGUgbmFtZSAoZS5nLiwgeW91IGNvdWxkIHVzZSB0aGUgYWxpYXMgImdsdWVja2xpY2hrZWl0IikuPC9wPg0KICAgIDxoND5TbWFydHkgdGFncyBpbiBBdHRyaWJ1dGVzPC9oND4NCiAgICA8cD5Tb21ldGltZXMsIHlvdSdsbCB3YW50IHRoZSBkZXNjcmlwdGlvbnMgb2YgeW91ciBpdGVtcyB0byBpbmNsdWRlIHNtYXJ0eSB0YWdzIChlLmcuLCBjbXNfc2VsZmxpbmspLiBUbyBtYWtlIHRoYXQgd29yaywgeW91J2xsIG5lZWQgdG8NCiAgICB1cGRhdGUgeW91ciB0ZW1wbGF0ZS4gRm9yIHRoZSBhdHRyaWJ1dGVzIHdoZXJlIHlvdSB3YW50IHNtYXJ0eSB0YWdzIHRvIGJlIGFjdGl2ZSwgeW91J2xsIG5lZWQgdG8gbmVzdCB0aGUgc21hcnR5IGV2YWx1YXRpb25zIGluIHlvdXIgdGVtcGxhdGUuIEZvciBleGFtcGxlOjwvcD4NCiAgICA8cHJlPntsaXRlcmFsfSYjMTIzO2V2YWwgdmFyPSRhdHRybGlzdFthdF0ua2V5fTwvcHJlPg0KICAgIDxwPmJlY29tZXM6PC9wPnsvbGl0ZXJhbH0NCiAgICA8cHJlPiYjMTIzO2V2YWwgdmFyPSRlbnRyeS0+aW5wdXQgYXNzaWduPXRoaXNBdHRyfSYjMTIzO2V2YWwgdmFyPSR0aGlzQXR0cn08L3ByZT4NCiAgPC9kaXY+DQogIHsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqfQ0KICB7KiB3aGF0IGlzIG5ldyAqfQ0KICA8ZGl2IGlkPSJ3aGF0c25ld19jIj4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgPGgzPldoYXQncyBuZXc8L2gzPg0KICAgICAgPHA+VGhpcyBpcyBhIHN1bW1hcnkgb2YgdGhlIG1vc3QgaW1wb3J0YW50IGNoYW5nZXMgdGhlIG1vZHVsZSBhcyBnb25lIHRocm91Z2guIEZvciBkZXRhaWxzLCBwbGVhc2UgY29uc3VsdCB0aGUgY2hhbmdlbG9nLjwvcD4NCiAgICAgIDx1bD4NCiAgICAgICAgPGxpPg0KICAgICAgICAgIENhdGFsb2dlciBpcyBub3cgZXhjbHVzaXZlbHkgY29tcGF0aWJsZSB3aXRoIENNU01TIDIueDsNCiAgICAgICAgPC9saT4gDQogICAgICAgIDxsaT4NCiAgICAgICAgICBDYXRhbG9nZXIgaXMgbm93IGNvbXBhdGlibGUgUEhQIDcueDsNCiAgICAgICAgPC9saT4gIA0KICAgICAgICA8bGk+DQogICAgICAgICAgQ2F0YWxvZ2VyIGFkbWluIG1lbnUgaGFzIG1vdmVkIHRvIGNvbnRlbnQgc2VjdGlvbjsNCiAgICAgICAgPC9saT4gDQogICAgICAgIDxsaT4NCiAgICAgICAgICBjb250ZW50IHR5cGVzIG5vdyBiZWhhdmUsIGZvciB0aGUgbW9zdCBwYXJ0LCBsaWtlIENNU01TIGNvcmUgY29udGVudCB0eXBlczoNCiAgICAgICAgICA8dWw+DQogICAgICAgICAgICA8bGk+YWxsIGF0dHJpYnV0ZSBvZiB0aGUgdHlwaWNhbCBjb250ZW50IHR5cGUgY2FuIGJlIGZvdW5kIGFuZCB1c2VkOzwvbGk+DQogICAgICAgICAgICA8bGk+YWRkaXRpb25hbCBjb250ZW50IGJsb2NrcyBjYW4gbm93IGJlIHVzZWQgb24gcGFnZSB0ZW1wbGF0ZXMgLSBDYXRhbG9nZXIgd2lsbCBhbGxvdyBpdCdzIHVzZTs8L2xpPg0KICAgICAgICAgICAgPGxpPmNhdGFsb2dlciBwYWdlcyBjYW4gbm93IGJlIHByZXZpZXdlZCBieSBDb250ZW50IE1hbmFnZXIgLSBQcmV2aWV3IHRhYjs8L2xpPg0KICAgICAgICAgIDwvdWw+DQogICAgICAgIDwvbGk+DQogICAgICAgIDxsaT4NCiAgICAgICAgICBzdWIgdGVtcGxhdGVzIGhhdmUgYSBuZXcgdmFyaWFibGUgd2l0aCB0aGUgbWFpbiBjb250ZW50IGJsb2NrIGdpdmluZyB1c2VycyBzb21lIGZyZWVkb20gcmVnYXJkaW5nIGl0cyBwbGFjZW1lbnQ7DQogICAgICAgIDwvbGk+IA0KICAgICAgICA8bGk+DQogICAgICAgICAgaW1hZ2UgdGFicyB3aWxsIG9ubHkgYmUgdmlzaWJsZSBpZiB0aGVyZSBhcmUgaW1hZ2VzIHNldCB0byBiZSB1c2VkIGluIHRoZSBtb2R1bGUgc2V0dGluZ3M7DQogICAgICAgIDwvbGk+ICANCiAgICAgICAgPGxpPg0KICAgICAgICAgIGZpbGUgdGFicyB3aWxsIG9ubHkgYmUgdmlzaWJsZSBpZiB0aGVyZSBhcmUgZmlsZXMgc2V0IHRvIGJlIHVzZWQgaW4gdGhlIG1vZHVsZSBzZXR0aW5nczsNCiAgICAgICAgPC9saT4gICANCiAgICAgICAgPGxpPg0KICAgICAgICAgIHRoZXJlIGhhdmUgYmVlbiBzb21lIGNoYW5nZXMgdG8gc3ViLXRlbXBsYXRlcyBhbHRob3VnaCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3YXMga2VwdCBhcyBtdWNoIGFzIHBvc3NpYmxlOw0KICAgICAgICA8L2xpPiAgICANCiAgICAgICAgPGxpPg0KICAgICAgICAgIHRoZSBsb2NhdGlvbiBkaXIgb2YgdGhlIGltYWdlcyBpcyBub3cgY29uY2VhbGVkIGlmIENhdGFsb2dlciBuYXRpdmUgaW1hZ2UgaGFuZGxpbmcgaXMgdXNlZDsNCiAgICAgICAgPC9saT4gICAgDQogICAgICAgIDxsaT4NCiAgICAgICAgICBhIGh1Z2UgbnVtYmVyIG9mIDxlbT51bmRlciB0aGUgaG9vZDwvZW0+IG1vZGlmaWNhdGlvbnMgYW5kIG9wdGltaXphdGlvbnMgd2VyZSBtYWRlIHRvIHRoZSBjb2RlOw0KICAgICAgICA8L2xpPiAgICAgICAgIA0KICAgICAgICA8bGk+DQogICAgICAgICAgYSBodWdlIG51bWJlciBvZiA8c3Ryb25nPmltcG9ydGFudCBmaXhlczwvc3Ryb25nPiB3ZXJlIG1hZGUgc2luY2UgdmVyc2lvbiA8c3Ryb25nPjEuMDwvc3Ryb25nPiBhbmQgPHN0cm9uZz4xLjAuMTwvc3Ryb25nPiB3aXRoIHJlZ2FyZCB0byBpc3N1ZXMgdGhhdCBzZWVtZWQgZml4ZWQgYnV0IHdlcmVuJ3Qgd29ya2luZyBhcyBleHBlY3RlZDsNCiAgICAgICAgPC9saT4gICAgDQogICAgICA8L3VsPg0KICAgICAgPHA+QWx0aG91Z2ggYWxsIGVmZm9ydHMgaGF2ZSBiZWVuIG1hZGUgdG8gdGVzdCBhbmQgbWFrZSBzdXJlIHRoZSBtb2R1bGUgd29ya3Mgd2l0aG91dCBpc3N1ZXMsIGdpdmVuIHRoZSBudW1iZXIgb2YgbW9kaWZpY2F0aW9ucywgbWlub3IgYnVncyBhcmUgZXhwZWN0ZWQgdG8gZXhpc3QsIHNvIHBsZWFzZSBmaWxlIGEgQnVnIFJlcG9ydCBpZiB5b3UgZmluZCBvbmUuPC9wPg0KICAgICAgPHA+PGRpdiBjbGFzcz0nd2FybmluZyc+SXQgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgYSBmdWxsIGJhY2t1cCBvZiBmaWxlcyBhbmQgZGF0YWJhc2UgYmVmb3JlIGFuIHVwZ3JhZGUuIFNvbWUsIG1vcmUgY29tcGxleCwgaW5zdGFsbGF0aW9ucyBtYXkgaGF2ZSBpc3N1ZXM6IG1vc3QsIGlmIG5vdCBhbGwsIG9mIHRoZW0gc2hvdWxkIGJlIHNvbHZlZCBieSBjbGVhcmluZyBDTVNNUyBjYWNoZSBhbmQvb3IgdHdlYWtpbmcgc3ViLXRlbXBsYXRlcy48L2Rpdj48L3A+DQogICAgPC9kaXY+IA0KICA8L2Rpdj4NCiAgeyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKip9DQogIHsqIEFib3V0IC8gQ3JlZGl0cyAqfQ0KICA8ZGl2IGlkPSJhYm91dF9jIj4NCiAgICANCiAgICA8aDM+U3VwcG9ydDwvaDM+DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgIDxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4NCiAgICAgIDx1bD4NCiAgICAgICAgPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIENNUyBNYWRlIFNpbXBsZSAgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyI+RGV2ZWxvcGVyIEZvcmdlPC9hPi48L2xpPg0KICAgICAgICA8bGk+VG8gb2J0YWluIGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHNlbmQgYW4gZW1haWwgdG8gdGhlIGF1dGhvciBhdCA8YSBocmVmPSJtYWlsdG86am9tb3JnQHNtLWFydC1sYWIuY29tIj4mbHQ7am9tb3JnQHNtLWFydC1sYWIuY29tJmd0OzwvYT4uPC9saT4NCiAgICAgICAgPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPg0KICAgICAgICA8bGk+VGhlIGF1dGhvciBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPg0KICAgICAgICA8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkgYW5kIGdyb3ZlbGxpbmcgZm9yIGZyZWUgc3VwcG9ydC48L2xpPg0KICAgICAgPC91bD4NCiAgICAgPC9kaXY+DQogICAgICAgDQogICAgPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4gICAgDQogICAgICA8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KDQogICAgICA8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMTIgLSB7JHNtYXJ0eS5ub3d8ZGF0ZV9mb3JtYXQ6JyVZJ30sIEZlcm5hbmRvIE1vcmdhZG8gKEpvTW9yZykgPGEgaHJlZj0ibWFpbHRvOmpvbW9yZ0BzbS1hcnQtbGFiLmNvbSI+Jmx0O2pvbW9yZ0BzbS1hcnQtbGFiLmNvbSZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQogICAgICA8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDgsIFNhbXVlbCBHb2xkc3RlaW4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPiAgDQogICAgICA8cCBzdHlsZT0iZm9udC1zaXplOjg1JTtmb250LXdlaWdodDogYm9sZDsiPlRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOzxiciAvPiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247PGJyIC8+IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uPC9wPg0KICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZTo4NSU7Zm9udC13ZWlnaHQ6IGJvbGQ7Ij5UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOzxiciAvPiB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLjwvcD4NCiAgICAgIDxwIHN0eWxlPSJmb250LXNpemU6ODUlO2ZvbnQtd2VpZ2h0OiBib2xkOyI+U2VlIHRoZUdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuPC9wPg0KICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZTo4NSU7Zm9udC13ZWlnaHQ6IGJvbGQ7Ij5Zb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTs8YnIgLz4gaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQSA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vciByZWFkIGl0IG9ubGluZTwvYT4uPC9wPg0KICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZTo4NSU7Zm9udC13ZWlnaHQ6IGJvbGQ7Ij5Zb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPg0KICAgIDwvZGl2Pg0KICAgIA0KICAgIDxoMz5DcmVkaXRzPC9oMz4NCiAgICA8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiBvcmlnaW5hbHkgY3JlYXRlZCwgZGV2ZWxvcGVkIGFuZCBtYWludGFpbmVkIGZvciBhIG51bWJlciBvZiB5ZWFycyBieSBTYW11ZWwgR29sZHN0ZWluLiBGZXJuYW5kbyBNb3JnYWRvIHRvb2sgb3ZlciBhbmQgaGFzIGJlZW4gbWFpbnRhaW5pbmcgaXQgKGZvciBiZXR0ZXIgb3IgZm9yIHdvcnN0KSBzaW5jZSAyMDEyLjwvcD4NCiAgICA8cD48L3A+DQogICAgPHVsPg0KICAgICAgPGxpPjxzdHJvbmc+U2FtdWVsIEdvbGRzdGVpbiAoc2pnKTwvc3Ryb25nPiAtIENyZWF0aW9uIGFuZCBkZXZlbG9wbWVudDs8L2xpPg0KICAgICAgPGxpPjxzdHJvbmc+TnVubzwvc3Ryb25nPiAtIGNvZGUgY29udHJpYnV0aW9uczs8L2xpPg0KICAgICAgPGxpPjxzdHJvbmc+TW9ydGVuIFBvdWxzZW4gKHNpbG1hcmlsbGlvbik8L3N0cm9uZz4gLSBjb2RlIGNvbnRyaWJ1dGlvbnM7PC9saT4NCiAgICAgIDxsaT48c3Ryb25nPkZlcm5hbmRvIE1vcmdhZG8gKEpvTW9yZyk8L3N0cm9uZz4gLSBkZXZlbG9wbWVudCBhbmQgbWFpbnRlbmFuY2U7PC9saT4NCiAgICAgIDxsaT48c3Ryb25nPlJvbGYgVGphc3NlbnMgKFJvbGYpPC9zdHJvbmc+IC0gdGVzdGluZyBhbmQgcXVhbGl0eSBhc3N1cmFuY2U7PC9saT4NCiAgICA8L3VsPg0KICAgIA0KICAgIDxoMz5Db250cmlidXRvcnM8L2gzPg0KICAgIDx1bD4NCiAgICAgIDxsaT48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3d3dy5pZC1hLmNvLnVrIiByZWw9ImV4dGVybmFsIj5QYXVsIENvb3BlcjwvYT4gLSBzcG9uc29yZWQgdGhlIGRldmVsb3BtZW50IG9mIHRleHRhcmVhIGF0dHJpYnV0ZXM7PC9saT4NCiAgICAgIDxsaT48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3d3dy5tYXR0aG9ybnNieS5jYSIgcmVsPSJleHRlcm5hbCI+TWF0dCBIb21zYnkgKERJR0kzKTwvYT4gLSBzcG9uc29yc2hpcDs8L2xpPg0KICAgIDwvdWw+DQogICAgPHA+VGhhbmtzIHRvIG51bWVyb3VzIHBhdGllbnQgdXNlcnMgYW5kIGJ1ZyB0ZXN0ZXJzIChtYW55IG9mIHdob20gaGFkIG5vIGlkZWEgd2hhdCB0aGV5IHdlcmUgZ2V0dGluZyBpbnRvKS48L3A+IA0KICA8L2Rpdj4NCjwvZGl2Pg0KDQoNCg==]]></data>
	</file>
	<file>
	  <filename>/templates/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/templates/templatelist.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRpbm5lcm5hdn0KPGJyIC8+CjxoMz57JHNlY3Rpb259PC9oMz4Ke2lmICRtZXNzYWdlIT0nJ308cD57JG1lc3NhZ2V9PC9wPnsvaWZ9CntpZiAkaXRlbWNvdW50ID4gMH0KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KCTx0aGVhZD4KCQk8dHI+CgkJCTx0aD57JHRpdGxlX3RlbXBsYXRlfTwvdGg+CgkJCTx0aD57JHRpdGxlX3RlbXBsYXRlX3R5cGV9PC90aD4KCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4KCXtmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CgkJPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRlbnRyeS0+cm93Y2xhc3N9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skZW50cnktPnJvd2NsYXNzfSc7Ij4KCQkJPHRkPnskZW50cnktPnRpdGxlfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT50eXBlfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5lZGl0bGlua308L3RkPgoJCQk8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPgoJCTwvdHI+Cgl7L2ZvcmVhY2h9Cgk8L3Rib2R5Pgo8L3RhYmxlPgp7ZWxzZX0KPHA+eyRub3RlbXBsYXRlc308L3A+CnsvaWZ9CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj4KCTxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRhZGRsaW5rfTwvcD4KPC9kaXY+Cg==]]></data>
	</file>
</module>
