<?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>Promotions</name>
	<version>1.0.5</version>
  <mincmsversion>1.6.5</mincmsversion>
	<help>PGgzPldoYXQgZG9lcyB0aGlzIGRvPzwvaDM+CjxwPlRoaXMgbW9kdWxlIHdvcmtzIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIFByb2R1Y3RzIGFuZCBPcmRlcnMgbW9kdWxlIHRvIGFsbG93IGNyZWF0aW5nIGFuZCBtYW5hZ2luZyB0aW1lIGxpbWl0ZWQgcHJvbW90aW9ucyBmb3IgdGhlIHByb2R1Y3RzIG9uIHlvdXIgZS1jb21tZXJjZSB3ZWJzaXRlLjwvcD4KPGgzPkZlYXR1cmVzOjwvaDM+Cjx1bD4KPGxpPjx1PkFsbCBwcm9tb3Rpb25zIGFyZSB0aW1lIGxpbWl0ZWQuPC91Pjxici8+PGJyLz48L2xpPgo8bGk+PHU+QSBwcm9tb3Rpb24gY2FuIGhhdmUgb25lIG9yIG1vcmUgY29uZGl0aW9ucyB0byBpbmRpY2F0ZSBlbGlnaWJpbGl0eS48L3U+CiAgPHA+SWYgYSBwcm9tb3Rpb24gaXMgZGVmaW5lZCB3aXRoIHR3byBvciBtb3JlIGNvbmRpdGlvbnMsIGFsbCBvZiB0aG9zZSBjb25kaXRpb25zIG11c3QgYmUgbWV0IGluIG9yZGVyIGZvciB0aGUgY3VzdG9tZXIgdG8gYmUgZWxpZ2libGUgZm9yIHRoZSBwcm9tb3Rpb24uPC9wPgogIDxwPkEgbnVtYmVyIG9mIGNvbmRpdGlvbiB0eXBlcyBleGlzdC4uLiBIb3dldmVyIHNvbWUgb2YgdGhlbSBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlcnMuICBpLmU6ICBZb3UgY2Fubm90IGhhdmUgdHdvIGRpZmZlcmVudCB0eXBlIG9mIHByb2R1Y3QgY29uZGl0aW9ucy48L3A+CiAgPHVsPgo8bGk+PHU+UmVxdWlyZSBtZW1iZXJzaGlwIGluIGFuIEZFVSBHcm91cDo8L3U+CiAgPHA+WW91IGNhbiBlbnRlciBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIEZFVSBncm91cCBuYW1lcy4gIFRoZSBsb2dnZWQgaW4gd2Vic2l0ZSB2aXNpdG9yIG11c3QgYmUgYSBtZW1iZXIgb2Ygb25lIG9mIHRoZXNlIGdyb3VwcyB0byBiZSBlbGlnaWJsZSBmb3IgdGhlIHByb21vdGlvbi48L3A+PC9saT4KICA8bGk+PHU+UmVxdWlyZSBhIG1pbmltdW0gcHVyY2hhc2UgYW1vdW50OjwvdT4KICA8cD5JbiBvcmRlciBmb3IgYSBjdXN0b21lciB0byBtZWV0IHRoaXMgY29uZGl0aW9uLCB0aGUgcHJlLXRheC9wcmUtc2hpcHBpbmcgdG90YWwgZm9yIHRoZWlyIG9yZGVyIG11c3QgbWVldCB0aGUgc3BlY2lmaWVkIG1pbmltdW0gdmFsdWUuPC9wPjwvbGk+CiAgPGxpPjx1PlJlcXVpcmUgdGhlIHB1cmNoYXNlIG9mIGEgc3BlY2lmaWMgcHJvZHVjdDo8L3U+CiAgPHA+SW4gb3JkZXIgZm9yIGEgY3VzdG9tZXIgdG8gbWVldCB0aGlzIGNvbmRpdGlvbiwgaGlzIGNhcnQgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBwcm9kdWN0IG1hdGNoaW5nIHRoZSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBwcm9kdWN0IGlkcyBlbnRlcmVkLjwvcD48L2xpPgogIDxsaT48dT5SZXF1aXJlIHB1cmNoYXNlIG9mIGF0bGVhc3Qgb25lIHByb2R1Y3QgaW4gYSBjYXRlZ29yeTo8L3U+CiAgPHA+SW4gb3JkZXIgZm9yIGEgY3VzdG9tZXIgdG8gbWVldCB0aGlzIGNvbmRpdGlvbiwgaGlzIGNhcnQgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBwcm9kdWN0IHRoYXQgaXMgd2l0aGluIGF0IGxlYXN0IG9uZSBvZiB0aGUgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgY2F0ZWdvcnkgbmFtZXMgKGZyb20gdGhlIHByb2R1Y3RzIG1vZHVsZSkgc3BlY2lmaWVkLjwvcD48L2xpPgogIDxsaT48dT5SZXF1aXJlIHB1cmNoYXNlIG9mIGF0bGVhc3Qgb25lIHByb2R1Y3QgaW4gYSBoaWVyYXJjaHk6PC91PgogIDxwPkluIG9yZGVyIGZvciBhIGN1c3RvbWVyIHRvIG1lZXQgdGhpcyBjb25kaXRpb24sIGhpcyBjYXJ0IG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgcHJvZHVjdCB0aGF0IGlzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHByb2R1Y3RzIG1vZHVsZSBoaWVyYXJjaHkuPC9wPgogIDxwPkhpZXJhcmNoeSBuYW1lcyBjYW4gYmUgc3BlY2lmaWVkIGluIHRoZSBmb3JtIG9mICZxdW90O1BhcmVudC5QYXJlbnQuQ2hpbGQmcXVvdDsgaS5lOiAmcXVvdDtDbG90aGluZy5UZW50cyZxdW90Oy4gIEhpZXJhcmNoeSBuYW1lcyBhcmUgbm90IGNhc2Ugc2Vuc2l0aXZlLiAgV2lsZGNhcmRzIGNhbiBiZSBzcGVjZmlmaWVkIGJ5IHVzaW5nIHRoZSAqIGNoYXJhY3Rlci4gIGkuZTogJnF1b3Q7Q2xvdGhpbmcqJnF1b3Q7LjwvcD48L2xpPgogIDxsaT48dT5SZXF1aXJlIGEgQ291cG9uIENvZGU6PC91PgogIDxwPkluIG9yZGVyIGZvciBhIGN1c3RvbWVyIHRvIG1lZXQgdGhpcyBjb25kaXRpb24sIGhlIG11c3QgaGF2ZSBzdXBwbGllZCB0aGUgY291cG9uIGNvZGUgdGhhdCBtYXRjaGVzIHRoaXMgY29uZGl0aW9uLjwvcD4KICA8cD5JbiBvcmRlciB0byBhbGxvdyBjdXN0b21lcnMgdG8gZW50ZXIgY291cG9uIGNvZGVzLCB5b3UgbmVlZCB0byBhZGQgYSB0YWcgaW50byB5b3VyIHBhZ2UgdGVtcGxhdGUgb3IgcGFnZSBjb250ZW50IGxpa2Uge1Byb21vdGlvbnN9LiAgVGhpcyB3aWxsIGRpc3BsYXkgYSBmb3JtIHRoYXQgYWxsb3dzIHlvdXIgdXNlcnMgdG8gZW50ZXIgY291cG9uIGNvZGVzLiAgQ291cG9uIGNvZGVzIGFyZSByZW1lbWJlcmVkIHVudGlsIHRoZSB1c2VyIGNsb3NlcyB0aGUgYnJvd3Nlci48L3A+PC9saT4KICA8bGk+PHU+UmVxdWlyZSBhIG1pbmltdW0gb3JkZXIgd2VpZ2h0OjwvdT4KICA8cD5JbiBvcmRlciBmb3IgYSBjdXN0b21lciB0byBtZWV0IHRoaXMgY29uZGl0aW9uLCB0aGUgc3VtIHRvdGFsIG9mIGFsbCBvZiB0aGUgd2VpZ2h0IHZhbHVlcyBmb3IgdGhlIGl0ZW1zIGluIGhpcyBjYXJ0IG11c3QgbWVldCBvciBleGNlZWQgdGhlIHZhbHVlIHNwZWNpZmllZC48L3A+PC9saT4KICA8L3VsPgo8L2xpPgoKPGxpPjx1PkVhY2ggcHJvbW90aW9uIGNhbiBoYXZlIGEgZGlmZmVyZW50ICZxdW90O29mZmVyJnF1b3Q7PC91Pgo8cD5BIG51bWJlciBvZiBkaWZmZXJlbnQgb2ZmZXJzIHR5cGVzIGFyZSBhdmFpbGFibGU6PC9wPgogIDx1bD4KPGxpPjx1PlBlcmNlbnRhZ2Ugb2ZmIG9yZGVyIHRvdGFsOjwvdT4KPHA+VGhpcyBvZmZlciB0eXBlIGFsbG93cyB5b3UgdG8gc3BlY2lmeSBhIGZsb2F0aW5nIHBvaW50IHZhbHVlIGJldHdlZW4gMCBhbmQgMSB0byBpbmRpY2F0ZSBhIHBlcmNlbnRhZ2Ugb2ZmLiAgaS5lOiAwLjEgaW5kaWNhdGVzIDEwJSBvZmYuICAgRHVyaW5nIHRoZSBjaGVja291dCBwcm9jZXNzLCBhbnkgbm9uIHRheCwgb3Igbm9uIHNoaXBwaW5nIGl0ZW0gaW4gdGhlIG9yZGVyIHdpbGwgYmUgcmVkdWNlZCBpbiBwcmljZSBieSB0aGUgc3BlY2lmaWVkIGFtb3VudC48L3A+PC9saT4KPGxpPjx1PlJlZHVjZSBvcmRlciB0b3RhbCBieSBhIHNwZWNpZmllZCBhbW91bnQ6PC91Pgo8cD5UaGlzIG9mZmVyIHR5cGUgYWxsb3dzIHlvdSB0byByZWR1Y2UgdGhlIGFtb3VudCBvZiB0aGUgb3JkZXIgYnkgYSBjZXJ0YWluIGRvbGxhciBmaWd1cmUuICBUaGlzIGRvbGxhciBmaWd1cmUgd2lsbCBiZSBhZGRlZCBhcyBhIGRpc2NvdW50IGl0ZW0gaW50byB0aGUgb3JkZXIgbGluZSBpdGVtcyBhbmQgd2lsbCBhcHBlYXIgb24gdGhlIGludm9pY2UuPC9wPjwvbGk+CjxsaT48dT5SZWNlaXZlIGEgRnJlZSBQcm9kdWN0OjwvdT4KPHA+VGhpcyBvZmZlciB0eXBlIGFsbG93cyB5b3UgdG8gc3BlY2lmeSBhIHByb2R1Y3QgaWQgdG8gYXV0b21hdGljYWxseSBpbmNsdWRlIGluIHRoZSBvcmRlciBhdCBubyBjb3N0LiAgVGhpcyBwcm9kdWN0IHdpbGwgYmUgYWRkZWQgYXMgYSBwcm9kdWN0IGl0ZW0gaW50byB0aGUgb3JkZXIgbGluZSBpdGVtcywgYnV0IHdpbGwgYXBwZWFyIGF0IG5vIGNvc3QuPC9wPjwvbGk+CjxsaT48dT5EaXNjb3VudCB0aGUgYXBwbGljYWJsZSBwcm9kdWN0cyBieSBhIHBlcmNlbnRhZ2U6PC91Pgo8cD5UaGlzIG9mZmVyIHR5cGUgb25seSB3b3JrcyBpZiBhdCBsZWFzdCBvbmUgcHJvZHVjdCBjb25kaXRpb24gaXMgc3BlY2lmaWVkLiAgSWYgYSBwcm9kdWN0IGNvbmRpdGlvbiBpcyBzcGVjaXJpZWQsIGFuZCBtYXRjaGVzLCB0aGlzIG9mZmVyIHR5cGUgd2lsbCBkaXNjb3VudCB0aGUgbWF0Y2hpbmcgcHJvZHVjdHMgZnJvbSB0aGUgY3VzdG9tZXIgb3JkZXIgYnkgdGhlIHNwZWNpZmllZCB2YWx1ZS48L3A+LgogIDwvdWw+CjwvbGk+CjxsaT48dT5BbGxvd3Mgd2Vic2l0ZSB2aXNpdG9ycyB0byBlbnRlciBvbmUgb3IgbW9yZSBjb3Vwb24gY29kZXM8L3U+PGJyLz48YnIvPjwvbGk+CjxsaT48dT5EaXNjb3VudHMgYXJlIGNhbGN1bGF0ZWQgYW5kIGFwcGxpZWQgdG8gdGhlIG9yZGVyIGR1cmluZyB0aGUgY2hlY2tvdXQgcHJvY2Vzcy48L3U+PGJyLz48YnIvPjwvbGk+CjxsaT48dT5JZiBhIHdlYiBjdXN0b21lciBpcyBlbGlnaWJsZSBmb3IgbXVsdGlwbGUgcHJvbW90aW9ucywgdGhlIG9uZSB3aXRoIHRoZSBncmVhdGVzdCB2YWx1ZSBpcyBhcHBsaWVkLjwvdT48L2xpPgo8L3VsPgo8YnIvPgo8aDM+SG93IERvIEkgVXNlIEl0OjwvaDM+CjxvbD4KICA8bGk+MS4gSW5zdGFsbCBhbmQgY29uZmlndXJlIHRoZSBtb2R1bGU8L2xpPgogIDxsaT4yLiBDcmVhdGUgYXQgbGVhc3Qgb25lIHByb21vdGlvbjwvbGk+CiAgPGxpPjMuIFNwZWNpZnkgdGhpcyBtb2R1bGUgYXMgdGhlICZxdW90O1Byb21vdGlvbnMmcXVvdDsgbW9kdWxlIHdpdGhpbiB0aGUgT3JkZXJzIFByZWZlcmVuY2VzLjwvbGk+CiAgPGxpPjQuIDxlbT4ob3B0aW9uYWwpPC9lbT4gQWRkIHtQcm9tb3Rpb25zfSB0byBhIHBhZ2UgdGVtcGxhdGUgb3IgcGFnZSBjb250ZW50LjwvZW0+PC9saT4KPC9vbD4KPGgzPkV4YW1wbGU6PC9oMz4KPHA+SW4gdGhpcyBleGFtcGxlIHdlIHdpbGwgY3JlYXRlIGEgcHJvbW90aW9uIGxpa2UgJnF1b3Q7MTAlIG9mZiBhbGwgb3JkZXJzIG92ZXIgJDEwMCwgd2l0aCBjb3Vwb24gY29kZSZxdW90Ozo8L3A+Cjx1bD4KICA8bGk+MS4gPHU+Q3JlYXRlIGEgbmV3IHByb21vdGlvbjwvdT4KICA8cD5OYXZpZ2F0ZSB0byB0aGUgcHJvbW90aW9ucyBtb2R1bGUgYWRtaW4gcGFuZWwsIGFuZCBjbGljayBvbiAmcXVvdDtBZGQgYSBOZXcgUHJvbW90aW9uJnF1b3Q7LiAgWW91IHdpbGwgYmUgcHJlc2VudGVkIHdpdGggdGhlIHByb21vdGlvbnMgZm9ybS48L3A+PC9saT4KICA8bGk+Mi4gPHU+U3BlY2lmeSBhIHByb21vdGlvbiBuYW1lPC91PgogIDxwPkZvciB0aGlzIGV4YW1wbGUgd2Ugd2lsbCB1c2UgdGhlIG5hbWUgJnF1b3Q7U2ltcGxlIFNhbGUmcXVvdDs8L3A+PC9saT4KICA8bGk+My4gPHU+QWRkIGEgY291cG9uIGNvbmRpdGlvbjwvdT4KICA8cD5Gcm9tIHRoZSAmcXVvdDtUeXBlIG9mIENvbmRpdGlvbiZxdW90OyBkcm9wZG93biBzZWxlY3QgJnF1b3Q7UmVxdWlyZSBhIENvdXBvbiBDb2RlJnF1b3Q7LiAgRW50ZXIgJnF1b3Q7c2ltcGxlc2FsZSZxdW90OyBpbnRvIHRoZSBpbnB1dCBmaWVsZCBiZWxvdyBhbmQgY2xpY2sgQWRkLjwvcD48L2xpPgogIDxsaT40LiA8dT5BZGQgYW4gb3JkZXIgcHJpY2UgY29uZGl0aW9uPC91PgogIDxwPkZyb20gdGhlICZxdW90O1R5cGUgb2YgQ29uZGl0aW9uJnF1b3Q7IGRyb3Bkb3duIHNlbGVjdCAmcXVvdDtSZXF1aXJlIGEgTWluaW11bSBQdXJjaGFzZSBBbW91bnQmcXVvdDsgZnJvbSB0aGUgZHJvcGRvd24sIGFuZCBlbnRlciAxMDAgaW50byB0aGUgaW5wdXQgZmllbGQgYmVsb3cuICBDbGljayBBZGQuPC9wPjwvbGk+CiAgPGxpPjUuIDx1PlNwZWNpZnkgdGhlIG9mZmVyIHR5cGUsIGFuZCBhbW91bnQ8L3U+CiAgPHA+U2VsZWN0IHRoZSBvZmZlciB0eXBlICZxdW90O1BlcmNlbnRhZ2Ugb2ZmIG9yZGVyIHRvdGFsJnF1b3Q7IGFuZCBlbnRlciAwLjEgaW50byB0aGUgdGV4dCBmaWVsZCBiZWxvdyB0byBpbmRpY2F0ZSAxMCUmcXVvdDs8L3A+PC9saT4KICA8bGk+Ni4gPHU+Q2xpY2sgc3VibWl0PC91PjwvbGk+CjwvdWw+CjxoMz5TdXBwb3J0PC9oMz4KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuICBIb3dldmVyIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzIG9yIHRvIGZpbGUgYSBidWcgcmVwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIGNtcyBtYWRlIHNpbXBsZSA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnIj5EZXZlbG9wZXJzIEZvcmdlPC9hPiBhbmQgZG8gYSBzZWFyY2ggZm9yICdQcm9kdWN0cyc8L2xpPgo8bGk+VG8gb2J0YWluIGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHNlbmQgYW4gZW1haWwgdG8gdGhlIGF1dGhvciBhdCA8YSBocmVmPSJtYWlsdG86Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyI+Um9iZXJ0IENhbXBiZWxsPC9hPi48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3Jtcy48L2E+PC9saT4KPGxpPkZvciBzb21lIHF1ZXN0aW9ucyBhbmQgbGltaXRlZCB0ZWNobmljYWwgc3VwcG9ydCwgdGhlIGF1dGhvciBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPgo8L3VsPgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA4LCBSb2JlcnQgQ2FtcGJlbCA8YSBocmVmPSJtYWlsdG86Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyI+Jmx0O2NhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcmZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQppdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQp0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgooYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLjwvcD4KPHA+SG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCmFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQppbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCk1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+PC9wPgpUT0RPPGgzPkRlcGVuZGVuY2llczwvaDM+PHVsPjxsaT5DR0V4dGVuc2lvbnMgPSZndDsgMS4xNy4yPC9saT48bGk+T3JkZXJzID0mZ3Q7IDEuNS4xPC9saT48bGk+UHJvZHVjdHMgPSZndDsgMi40LjI8L2xpPjwvdWw+PGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBQYXJhbWV0ZXIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoYXQgbGFuZ3VhZ2UgdG8gdXNlIGZvciBkaXNwbGF5IG9uIHRoZSBmcm9udGVuZC4gTm90IGFsbCBtb2R1bGVzIHN1cHBvcnQgb3IgbmVlZCB0aGlzLjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gaW5saW5lPSJkZWZhdWx0IiAtIFNwZWNpZnkgdGhhdCB0aGUgY291cG9uIGNvZGUgZm9ybSBpcyBpbmxpbmUsIGFuZCB0aGUgcmVzdWx0cyBzaG91bGQgcmVwbGFjZSB0aGUgb3JpZ2luYWwgdGFnIGFuZCBub3QgdGhlIHBhZ2UgY29udGVudHM8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHRlbXBsYXRlPSIiIC0gU3BlY2lmeSB0aGUgbmFtZSBvZiBhIG5vbiBkZWZhdWx0IGNvdXBvbiBjb2RlIHRlbXBsYXRlIHRvIGRpc3BsYXkgZm9yIHRoZSBkZWZhdWx0IGFjdGlvbjwvbGk+PC91bD4=</help>
	<about>PGJyIC8+QXV0aG9yOiBjYWxndXkxMDAwICZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMC41PGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PHVsPgogIDxsaT5WZXJzaW9uIDEuMCAtIEF1Z3VzdC8yMDA5CiAgICA8dWw+CiAgICAgIDxsaT5Jbml0aWFsIFJlbGVhc2U8L2xpPgogICAgPC91bD4KICA8L2xpPgoKICA8bGk+VmVyc2lvbiAxLjAuMSAtIEF1Z3VzdC8yMDA5CiAgICA8dWw+CiAgICAgIDxsaT5NaW5vciBidWcgZml4ZXMuPC9saT4KICAgIDwvdWw+CiAgPC9saT4KCiAgPGxpPlZlcnNpb24gMS4wLjQgLSBPY3RvYmVyLzIwMDkKICAgIDx1bD4KICAgICAgPGxpPk1pbm9yIGJ1ZyBmaXhlczwvbGk+CiAgICA8L3VsPgogIDwvbGk+CgogIDxsaT5WZXJzaW9uIDEuMC41IC0gT2N0b2Jlci8yMDA5CiAgICA8dWw+CiAgICAgIDxsaT5NaW5vciBidWcgZml4ZXM8L2xpPgogICAgPC91bD4KICA8L2xpPgo8L3VsPgo8YnIgLz4=</about>
	<description>Create, manage, and interact with sales and promotions for your e-commerce site</description>
	<requires>
	  <requiredname>CGExtensions</requiredname>
	  <requiredversion>1.17.2</requiredversion>
	</requires>
	<requires>
	  <requiredname>Orders</requiredname>
	  <requiredversion>1.5.1</requiredversion>
	</requires>
	<requires>
	  <requiredname>Products</requiredname>
	  <requiredversion>2.4.2</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.admin_addpromo.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFByb21vdGlvbnMgKGMpIDIwMDggYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGNyZWF0aW5nLCBpbnRlcmZhY2luZyB3aXRoCiMgIGFuZCBtYW5hZ2luZyBwcm9tb3Rpb25zIG9yIHNhbGVzIGluIHRoZSBFLWNvbWVtcmNlIHN1aXRlLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CmlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbihQcm9tb3Rpb25zOjpNQUlOX1BFUk0pICkgZXhpdDsKCi8vCi8vIGluaXRpYWxpemF0aW9uCi8vCiR0aGlzLT5TZXRDdXJyZW50VGFiKCdwcm9tb3Rpb25zJyk7CiRmZXVfbW9kdWxlID0mICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgnRnJvbnRFbmRVc2VycycpOwoKLy8KLy8gc2V0dXAKLy8KaWYoIGlzc2V0KCRwYXJhbXNbJ2NhbmNlbCddKSApCiAgewogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKICB9CiRwcm9tbyA9ICcnOwppZiggaXNzZXQoJHBhcmFtc1sncHJvbW9pZCddKSApCiAgewogICAgLy8gdXBkYXRpbmcKICAgICRwcm9tbyA9IHByb21vX29wczo6bG9hZF9wcm9tb19ieV9pZCgoaW50KSRwYXJhbXNbJ3Byb21vaWQnXSk7CiAgfQplbHNlCiAgewogICAgLy8gbmV3IHByb21vCiAgICAkcHJvbW8gPSBuZXcgcHJvbW90aW9uKCk7CiAgICAkcHJvbW8tPnNldF9jcmVhdGVkKHRpbWUoKSk7CiAgICAkcHJvbW8tPnNldF9lbmRfZGF0ZShzdHJ0b3RpbWUoc3ByaW50ZignKyVkIG1vbnRocycsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RmbHRfcHJvbW90aW9uX3BlcmlvZCcpKSkpOwogICAgJHByb21vLT5zZXRfb2ZmZXJfdHlwZSgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGZsdF9vZmZlcl90eXBlJykpOwogICAgJHByb21vLT5zZXRfb2ZmZXJfZGF0YSgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGZsdF9vZmZlcl9kYXRhJykpOwogIH0KCi8vCi8vIGdhdGhlciBkYXRhCi8vCmlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgKQogIHsKICAgIC8vIHZhbGlkYXRlCiAgICAkZXJyb3IgPSAnJzsKCiAgICAvLyBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbmFtZSBpcyB2YWxpZC4KICAgIGlmKCAhcHJvbW9fb3BzOjpjaGVja191bnVzZWRfbmFtZSh0cmltKCRwYXJhbXNbJ25hbWUnXSksJHByb21vLT5nZXRfaWQoKSkgKQogICAgICB7CgkkZXJyb3IgPSAkdGhpcy0+TGFuZygnZXJyb3JfbmFtZV9leGlzdHMnKTsKICAgICAgfQoKICAgIC8vIHZhbGlkYXRlIHRoZSBjb25kaXRpb25zLgogICAgaWYoIGVtcHR5KCRlcnJvcikgJiYgaXNzZXQoJHBhcmFtc1snc2F2ZWRfY29uZHR5cGUnXSkgKQogICAgICB7Cglmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkcGFyYW1zWydzYXZlZF9jb25kdHlwZSddKTsgJGkrKyApCgkgIHsKCSAgICBpZiggIWVtcHR5KCRlcnJvcikgKSBicmVhazsKCgkgICAgJGRhdGEgPSAkcGFyYW1zWydzYXZlZF9jb25kZGF0YSddWyRpXTsKCSAgICBzd2l0Y2goJHBhcmFtc1snc2F2ZWRfY29uZHR5cGUnXVskaV0pIHsKCSAgICBjYXNlIFBST01PVElPTlNfQ09ORF9GRVU6CgkgICAgICB7CgkJaWYoICEkZmV1X21vZHVsZSApCgkJICB7CgkJICAgICRlcnJvciA9ICR0aGlzLT5MYW5nKCdlcnJvcl9tb2R1bGVfbm90X2ZvdW5kJywnRnJvbnRFbmRVc2VycycpOwoJCSAgfQoJCSRsaXN0ID0gZXhwbG9kZSgnLCcsJGRhdGEpOwoJCWZvcmVhY2goICRsaXN0IGFzICR0bXAgKQoJCSAgewoJCSAgICBpZiggISRmZXVfbW9kdWxlLT5Hcm91cEV4aXN0c0J5TmFtZSh0cmltKCR0bXApKSApCgkJICAgICAgewoJCQkkZXJyb3IgPSAkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZF9mZXVfZ3JvdXAnKTsKCQkJYnJlYWs7CgkJICAgICAgfQoJCSAgfQoJICAgICAgfQoJICAgICAgYnJlYWs7CgoJICAgIGNhc2UgUFJPTU9USU9OU19DT05EX1NVQlRPVEFMOgoJICAgIGNhc2UgUFJPTU9USU9OU19DT05EX1dFSUdIVDoKCSAgICAgIHsKCQkkdG1wID0gZmxvYXR2YWwoJGRhdGEpOwoJCWlmKCAkdG1wIDw9IDAuMDEgfHwgJHRtcCA+IDEwMDAwMCApCgkJICB7CgkJICAgICRlcnJvciA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkX29yZGVyX2Ftb3VudCcpOwoJCSAgfQoJICAgICAgfQoJICAgICAgYnJlYWs7CgoJICAgIGNhc2UgUFJPTU9USU9OU19DT05EX1BST0RJRDoKCSAgICAgIHsKCQkkbGlzdCA9IGV4cGxvZGUoJywnLCRkYXRhKTsKCQlmb3JlYWNoKCAkbGlzdCBhcyAkdG1wICkKCQkgIHsKCQkgICAgaWYoICFwcm9kdWN0X29wczo6aXNfdmFsaWRfcHJvZHVjdF9pZCh0cmltKCR0bXApKSApCgkJICAgICAgewoJCQkkZXJyb3IgPSAkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZF9wcm9kdWN0Jyk7CgkJCWJyZWFrOwoJCSAgICAgIH0KCQkgIH0KCSAgICAgIH0KCSAgICAgIGJyZWFrOwoKCSAgICBjYXNlIFBST01PVElPTlNfQ09ORF9QUk9EQ0FUOgoJICAgICAgewoJCSRsaXN0ID0gZXhwbG9kZSgnLCcsJGRhdGEpOwoJCWZvcmVhY2goICRsaXN0IGFzICR0bXAgKQoJCSAgewoJCSAgICBpZiggIXByb2R1Y3Rfb3BzOjppc192YWxpZF9jYXRlZ29yeSh0cmltKCR0bXApKSApCgkJICAgICAgewoJCQkkZXJyb3IgPSAkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZF9wcm9kdWN0X2NhdGVnb3J5Jyk7CgkJCWJyZWFrOwoJCSAgICAgIH0KCQkgIH0KCSAgICAgIH0KCSAgICAgIGJyZWFrOwoKCSAgICBjYXNlIFBST01PVElPTlNfQ09ORF9QUk9ESElFUjoKCSAgICAgIHsKCQkvLyB0b2RvCgkgICAgICB9CgkgICAgICBicmVhazsKCgkgICAgY2FzZSBQUk9NT1RJT05TX0NPTkRfQ09VUE9OOgoJICAgICAgaWYoICFwcm9tb19vcHM6OmNoZWNrX3VudXNlZF9jb3Vwb24oJGRhdGEpICkKCQl7CgkJICAkZXJyb3IgPSAkdGhpcy0+TGFuZygnZXJyb3JfY291cG5fZXhpc3RzJyk7CgkJfQoJICAgICAgYnJlYWs7CgkgICAgfQoJICB9CiAgICAgIH0KCiAgICAvLyB2YWxpZGF0ZSB0aGUgb2ZmZXIKICAgIGlmKCBlbXB0eSgkZXJyb3IpICkKICAgICAgewoJc3dpdGNoKCRwYXJhbXNbJ29mZmVyX3R5cGUnXSkgCgkgIHsKCSAgY2FzZSBQUk9NT1RJT05TX09GRkVSX1BFUkNFTlQ6CgkgIGNhc2UgUFJPTU9USU9OU19PRkZFUl9QUk9ERElTQ09VTlQ6CgkgICAgewoJICAgICAgJHRtcCA9IGZsb2F0dmFsKCRwYXJhbXNbJ29mZmVyX2RhdGEnXSk7CgkgICAgICBpZiggJHRtcCA8IDAuMDAwMSB8fCAkdG1wID4gMTAwLjAgKQoJCXsKCQkgICRlcnJvciA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkX3ZhbHVlJyk7CgkJfQoJICAgIH0KCSAgICBicmVhazsKCSAgICAKCSAgY2FzZSBQUk9NT1RJT05TX09GRkVSX0RJU0NPVU5UOgoJICAgIHsKCSAgICAgICR0bXAgPSBmbG9hdHZhbCgkcGFyYW1zWydvZmZlcl9kYXRhJ10pOwoJICAgICAgaWYoICR0bXAgPCAwLjAwMDEgfHwgJHRtcCA+IDEwMDAwLjAgKQoJCXsKCQkgICRlcnJvciA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkX3ZhbHVlJyk7CgkJfQoJICAgIH0KCSAgICBicmVhazsKCSAgICAKCSAgY2FzZSBQUk9NT1RJT05TX09GRkVSX1BST0RVQ1Q6CgkgICAgewoJICAgICAgJHRtcCA9IHRyaW0oJHBhcmFtc1snb2ZmZXJfZGF0YSddKTsKCSAgICAgIGlmKCFwcm9kdWN0X29wczo6aXNfdmFsaWRfcHJvZHVjdF9pZCgkdG1wKSkKCQl7CgkJICAkZXJyb3IgPSAkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZF9wcm9kdWN0Jyk7CgkJfQoJICAgIH0KCSAgICBicmVhazsKCSAgfQogICAgICB9CgogICAgLy8gcHV0IHRoZSBwYXJhbXMgaW4gdGhlIHByb21vIG9iamVjdAogICAgaWYoIGVtcHR5KCRlcnJvcikgKQogICAgICB7CgkkcHJvbW8tPnNldF9uYW1lKHRyaW0oJHBhcmFtc1snbmFtZSddKSk7CglpZiggaXNzZXQoJHBhcmFtc1snZGVzY3JpcHRpb24nXSkgKQoJICB7CgkgICAgJHByb21vLT5zZXRfZGVzY3JpcHRpb24odHJpbSgkcGFyYW1zWydkZXNjcmlwdGlvbiddKSk7CgkgIH0KCWlmKCBpc3NldCgkcGFyYW1zWydpbWFnZSddKSApCgkgIHsKCSAgICAkcHJvbW8tPnNldF9pbWFnZSh0cmltKCRwYXJhbXNbJ2ltYWdlJ10pKTsKCSAgfQoJJHNkID0gbWt0aW1lKDAsMCwwLChpbnQpJHBhcmFtc1snc3RhcnRfZGF0ZV9Nb250aCddLChpbnQpJHBhcmFtc1snc3RhcnRfZGF0ZV9EYXknXSwoaW50KSRwYXJhbXNbJ3N0YXJ0X2RhdGVfWWVhciddKTsKCSRwcm9tby0+c2V0X3N0YXJ0X2RhdGUoJHNkKTsKCSRlZCA9IG1rdGltZSgwLDAsMCwoaW50KSRwYXJhbXNbJ2VuZF9kYXRlX01vbnRoJ10sKGludCkkcGFyYW1zWydlbmRfZGF0ZV9EYXknXSwoaW50KSRwYXJhbXNbJ2VuZF9kYXRlX1llYXInXSk7CgkkcHJvbW8tPnNldF9lbmRfZGF0ZSgkZWQpOwoJJHByb21vLT5zZXRfb2ZmZXJfdHlwZSgkcGFyYW1zWydvZmZlcl90eXBlJ10pOwoJJHByb21vLT5zZXRfb2ZmZXJfZGF0YSh0cmltKCRwYXJhbXNbJ29mZmVyX2RhdGEnXSkpOwoJJHByb21vLT5kZWxfY29uZGl0aW9ucygpOwoJZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJHBhcmFtc1snc2F2ZWRfY29uZHR5cGUnXSk7ICRpKysgKQoJICB7CgkgICAgJGNvbmQgPSBuZXcgcHJvbW90aW9uX2NvbmRpdGlvbjsKCSAgICAkY29uZC0+c2V0X2NvbmRfdHlwZSgkcGFyYW1zWydzYXZlZF9jb25kdHlwZSddWyRpXSk7CgkgICAgJGNvbmQtPnNldF9kYXRhKHRyaW0oJHBhcmFtc1snc2F2ZWRfY29uZGRhdGEnXVskaV0pKTsKCSAgICAkcHJvbW8tPmFkZF9jb25kaXRpb24oJGNvbmQpOwoJICB9CgoJLy8gY29tbWl0CgkkcmVzID0gJHByb21vLT5zYXZlKCk7CglpZiggJHJlcyApCgkgIHsKCSAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwoJICB9CgkkZXJyb3IgPSAkdGhpcy0+TGFuZygnZXJyb3Jfc2F2ZV9wcm9tb3Rpb24nKTsKICAgICAgfQoKICAgIGlmKCAkZXJyb3IgKQogICAgICB7CgllY2hvICR0aGlzLT5TaG93RXJyb3JzKCRlcnJvcik7CiAgICAgIH0KICB9CgogICAgCi8vCi8vIGdpdmUgZXZlcnl0aGluZyB0byBzbWFydHkKLy8KJHRtcCA9IHByb21vdGlvbjo6Z2V0X29mZmVyX2FycmF5KCk7CiRvZmZlcnR5cGVzID0gYXJyYXkoKTsKZm9yZWFjaCggJHRtcCBhcyAkb25lICkKewogICRvZmZlcnR5cGVzWyRvbmVdID0gJHRoaXMtPkxhbmcoJG9uZSk7Cn0KJHNtYXJ0eS0+YXNzaWduKCdvZmZlcnR5cGVzJywkb2ZmZXJ0eXBlcyk7CiR0bXAgPSBwcm9tb3Rpb25fY29uZGl0aW9uOjpnZXRfdHlwZXNfYXJyYXkoKTsKJGNvbmR0eXBlcyA9IGFycmF5KCk7CmZvcmVhY2goICR0bXAgYXMgJGNvbmQgKQp7CiAgaWYoICEkZmV1X21vZHVsZSAmJiAkY29uZCA9PSBQUk9NT1RJT05TX0NPTkRfRkVVICkKICAgIGNvbnRpbnVlOwoKICAkY29uZHR5cGVzWyRjb25kXSA9ICR0aGlzLT5MYW5nKCRjb25kKTsKfQokc21hcnR5LT5hc3NpZ24oJ2NvbmRpdGlvbnR5cGVzJywkY29uZHR5cGVzKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5DR0NyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluX2FkZHByb21vJywkcmV0dXJuaWQsJHBhcmFtcykpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21vJywkcHJvbW8pOwppZiggJHByb21vLT5jb3VudF9jb25kaXRpb25zKCkgKQogIHsKICAgICRzbWFydHktPmFzc2lnbignY29uZGl0aW9ucycsJHByb21vLT5nZXRfY29uZGl0aW9ucygpKTsKICB9CiRleHRzID0gY2dlX3V0aWxzOjpnZXRfaW1hZ2VfZXh0ZW5zaW9ucygpOwokZGlyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ltYWdlZGlyJywkY29uZmlnWydpbWFnZV91cGxvYWRzX3BhdGgnXSk7CiRmaWxlcyA9IGNnZV9kaXI6OmdldF9maWxlX2xpc3QoJGRpciwkZXh0cyk7CiRmaWxlcyA9IGNnZV9hcnJheTo6aGFzaF9wcmVwZW5kKCRmaWxlcywnLTEnLCR0aGlzLT5MYW5nKCdub25lJykpOwokc21hcnR5LT5hc3NpZ24oJ2ZpbGVfbGlzdCcsJGZpbGVzKTsKCi8vCi8vIFByb2Nlc3MgdGVtcGxhdGUKLy8KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbl9hZGRwcm9tby50cGwnKTsKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_delpromo.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFByb21vdGlvbnMgKGMpIDIwMDggYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGNyZWF0aW5nLCBpbnRlcmZhY2luZyB3aXRoCiMgIGFuZCBtYW5hZ2luZyBwcm9tb3Rpb25zIG9yIHNhbGVzIGluIHRoZSBFLWNvbWVtcmNlIHN1aXRlLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CmlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbihQcm9tb3Rpb25zOjpNQUlOX1BFUk0pICkgZXhpdDsKCi8vCi8vIGluaXRpYWxpemF0aW9uCi8vCiR0aGlzLT5TZXRDdXJyZW50VGFiKCdwcm9tb3Rpb25zJyk7CgppZiggIWlzc2V0KCRwYXJhbXNbJ3Byb21vaWQnXSkgKQogIHsKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfbWlzc2luZ19wYXJhbScpKTsKICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCk7CiAgfQoKcHJvbW9fb3BzOjpkZWxldGVfcHJvbW8oKGludCkkcGFyYW1zWydwcm9tb2lkJ10pOwokdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_savesettings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFByb21vdGlvbnMgKGMpIDIwMDggYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGNyZWF0aW5nLCBpbnRlcmZhY2luZyB3aXRoCiMgIGFuZCBtYW5hZ2luZyBwcm9tb3Rpb25zIG9yIHNhbGVzIGluIHRoZSBFLWNvbWVtcmNlIHN1aXRlLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CmlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSApIGV4aXQ7CgokdGhpcy0+U2V0Q3VycmVudFRhYignc2V0dGluZ3MnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RmbHRfcHJvbW90aW9uX3BlcmlvZCcsKGludCkkcGFyYW1zWydwcm9tb3Rpb25fcGVyaW9kJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGZsdF9vZmZlcl90eXBlJyx0cmltKCRwYXJhbXNbJ29mZmVyX3R5cGUnXSkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnaW1hZ2VfZGlyJyx0cmltKCRwYXJhbXNbJ2ltYWdlX2RpciddKSk7CnN3aXRjaCgkcGFyYW1zWydvZmZlcl90eXBlJ10pCiAgewogIGNhc2UgUFJPTU9USU9OU19PRkZFUl9QRVJDRU5UOgogICAgaWYoIGVtcHR5KCRwYXJhbXNbJ29mZmVyX3BlcmNlbnQnXSkgfHwgCgkoJHBhcmFtc1snb2ZmZXJfcGVyY2VudCddIDwgMC4wMDEpIHx8IAoJKCRwYXJhbXNbJ29mZmVyX3BlcmNlbnQnXSA+IDEwMC4wKSApCiAgICAgIHsKCSR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZF92YWx1ZScpKTsKCSR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCk7CiAgICAgIH0KICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZmx0X29mZmVyX2RhdGEnLCRwYXJhbXNbJ29mZmVyX3BlcmNlbnQnXSk7CiAgICBicmVhazsKICBjYXNlIFBST01PVElPTlNfT0ZGRVJfRElTQ09VTlQ6CiAgaWYoIGVtcHR5KCRwYXJhbXNbJ29mZmVyX3ByaWNlJ10pIHx8ICgkcGFyYW1zWydvZmZlcl9wcmljZSddIDwgMC4wMDEpKQogICAgICB7CgkkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRfdmFsdWUnKSk7CgkkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwogICAgICB9CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGZsdF9vZmZlcl9kYXRhJywkcGFyYW1zWydvZmZlcl9wcmljZSddKTsKICAgIGJyZWFrOwogIGRlZmF1bHQ6CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGZsdF9vZmZlcl9kYXRhJywnJyk7CiAgICBicmVhazsKICB9CiR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdtc2dfcHJlZnN1cGRhdGVkJykpOwokdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.admin_setdflttemplates.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFByb21vdGlvbnMgKGMpIDIwMDggYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGNyZWF0aW5nLCBpbnRlcmZhY2luZyB3aXRoCiMgIGFuZCBtYW5hZ2luZyBwcm9tb3Rpb25zIG9yIHNhbGVzIGluIHRoZSBFLWNvbWVtcmNlIHN1aXRlLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CiR0aGlzLT5TZXRDdXJyZW50VGFiKCdkZmx0X3RlbXBsYXRlcycpOwoKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVGVtcGxhdGVzJykgKQogIHsKICAgIGV4aXQoKTsKICB9CgppZiggaXNzZXQoICRwYXJhbXNbJ3N1Ym1pdF9jb3Vwb29uZm9ybXRlbXBsYXRlJ10gKSApCiAgewogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoUHJvbW90aW9uczo6TkVXQ09VUE9ORk9STV9URU1QTEFURSwKICAgICAgICAgICAgICAgICAgICAgICAgIHRyaW0oJHBhcmFtc1snaW5wdXRfY291cG9uZm9ybXRlbXBsYXRlJ10pKTsKICB9CmVsc2UgaWYoIGlzc2V0KCAkcGFyYW1zWydyZXNldF9jb3Vwb25mb3JtdGVtcGxhdGUnXSApICkKICB7CiAgICAkZm4gPSBkaXJuYW1lKF9fRklMRV9fKS4nL3RlbXBsYXRlcy9vcmlnX2NvdXBvbmZvcm1fdGVtcGxhdGUudHBsJzsKICAgIGlmKCBmaWxlX2V4aXN0cyggJGZuICkgKQogICAgICB7CiAgICAgICAgJHRlbXBsYXRlID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7CiAgICAgICAgJHRoaXMtPlNldFByZWZlcmVuY2UoUHJvbW90aW9uczo6TkVXQ09VUE9ORk9STV9URU1QTEFURSwkdGVtcGxhdGUpOwogICAgICB9CiAgfQoKCiR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCk7CiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFByb21vdGlvbnMgKGMpIDIwMDggYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGNyZWF0aW5nLCBpbnRlcmZhY2luZyB3aXRoCiMgIGFuZCBtYW5hZ2luZyBwcm9tb3Rpb25zIG9yIHNhbGVzIGluIHRoZSBFLWNvbWVtcmNlIHN1aXRlLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CgovLwovLyBpbml0aWFsaXphdGlvbgovLwokdGhldGVtcGxhdGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZShQcm9tb3Rpb25zOjpERkxUQ09VUE9ORk9STV9URU1QTEFURSk7CiRpbmxpbmUgPSAwOwokY29kZSA9ICcnOwokZXJyb3IgPSAnJzsKJG1lc3NhZ2UgPSAnJzsKCi8vCi8vIGhhbmRsZSBwYXJhbXMKLy8KaWYoIGlzc2V0KCRwYXJhbXNbJ2lubGluZSddKSApCiAgewogICAgJGlubGluZSA9IChpbnQpJHBhcmFtc1snaW5saW5lJ107CiAgfQppZiggaXNzZXQoJHBhcmFtc1sndGVtcGxhdGUnXSkgKQogIHsKICAgICR0aGV0ZW1wbGF0ZSA9IHRyaW0oJHBhcmFtc1sndGVtcGxhdGUnXSk7CiAgfQoKLy8KLy8gaGFuZGUgZm9ybSBkYXRhCi8vCmlmKCBpc3NldCgkcGFyYW1zWydwcm9tb19zdWJtaXQnXSkgKQogIHsKICAgIGlmKCBpc3NldCgkcGFyYW1zWydwcm9tb19jb2RlJ10pICkKICAgICAgewoJJGNvZGUgPSB0cmltKCRwYXJhbXNbJ3Byb21vX2NvZGUnXSk7CiAgICAgIH0KCiAgICAkZXJyb3IgPSAnJzsKICAgICRtc2cgPSAnJzsKICAgIGlmKCAkY29kZSA9PSAnJyApCiAgICAgIHsKCSRlcnJvciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdlcnJvcl9lbXB0eV9jb2RlJyk7CiAgICAgIH0KICAgIGVsc2UgCiAgICAgIHsKCS8vIGNoZWNrIGZvciBjb2RlIHZhbGlkaXR5CglpZiggIXByb21vX29wczo6aXNfdmFsaWRfY291cG9uKCRjb2RlKSApCgkgIHsKCSAgICAkZXJyb3IgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZXJyb3JfaW52YWxpZF9jb2RlJyk7CgkgIH0KCWVsc2UKCSAgewoJICAgIFByb21vdGlvbnM6OmFkZF9jb3Vwb24oJGNvZGUpOwoJICAgICRtc2cgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbXNnX3ZhbGlkX2NvZGUnKTsKCSAgICAkY29kZSA9ICcnOwoJICB9CiAgICAgIH0KICB9CgovLwovLyBnaXZlIGV2ZXJ5dGhpbmcgdG8gc21hcnR5Ci8vCmlmKCAkbXNnICE9ICcnICkKICB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ21zZycsJG1zZyk7CiAgfQppZiggJGVycm9yICE9ICcnICkKICB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2Vycm9yJywkZXJyb3IpOwogIH0KJHNtYXJ0eS0+YXNzaWduKCdjb2RlJywkY29kZSk7CiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywKCQkkdGhpcy0+Q0dDcmVhdGVGb3JtU3RhcnQoJGlkLCdkZWZhdWx0JywkcmV0dXJuaWQsYXJyYXkoKSwkaW5saW5lKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgovLwovLyBvdXRwdXQKLy8KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGFiYXNlKCdjb3Vwb25mb3JtXycuJHRoZXRlbXBsYXRlKTsKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFByb21vdGlvbnMgKGMpIDIwMDggYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGNyZWF0aW5nLCBpbnRlcmZhY2luZyB3aXRoCiMgIGFuZCBtYW5hZ2luZyBwcm9tb3Rpb25zIG9yIHNhbGVzIGluIHRoZSBFLWNvbWVtcmNlIHN1aXRlLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CgplY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsKaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oUHJvbW90aW9uczo6TUFJTl9QRVJNKSApCiAgewogICAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdwcm9tb3Rpb25zJywkdGhpcy0+TGFuZygnbGJsX3Byb21vdGlvbnMnKSk7CiAgfQppZiggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpICkKICB7CiAgICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2NvdXBvbmZvcm0nLCR0aGlzLT5MYW5nKCdsYmxfY291cG9uZm9ybV90ZW1wbGF0ZXMnKSk7CiAgICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2RmbHRfdGVtcGxhdGVzJywkdGhpcy0+TGFuZygnbGJsX2RlZmF1bHRfdGVtcGxhdGVzJykpOwogIH0KaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykgKQogIHsKICAgIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignc2V0dGluZ3MnLCR0aGlzLT5MYW5nKCdsYmxfc2V0dGluZ3MnKSk7CiAgfQplY2hvICR0aGlzLT5FbmRUYWJIZWFkZXJzKCk7CgplY2hvICR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKTsKaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oUHJvbW90aW9uczo6TUFJTl9QRVJNKSApCiAgewogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3Byb21vdGlvbnMnLCRwYXJhbXMpOwogICAgaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmFkbWluX3Byb21vdGlvbnN0YWIucGhwJyk7CiAgICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKICB9CmlmKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVGVtcGxhdGVzJykgKQogIHsKICAgIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdjb3Vwb25mb3JtJywkcGFyYW1zKTsKICAgIGluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5hZG1pbl9jb3Vwb25mb3JtdGFiLnBocCcpOwogICAgZWNobyAkdGhpcy0+RW5kVGFiKCk7CgogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ2RmbHRfdGVtcGxhdGVzJywkcGFyYW1zKTsKICAgIGluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5hZG1pbl9kZmx0X3RlbXBsYXRlc190YWIucGhwJyk7CiAgICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKICB9CmlmKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpICkKICB7CiAgICBlY2hvICR0aGlzLT5TdGFydFRhYignc2V0dGluZ3MnLCRwYXJhbXMpOwogICAgaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmFkbWluX3NldHRpbmdzdGFiLnBocCcpOwogICAgZWNobyAkdGhpcy0+RW5kVGFiKCk7CiAgfQplY2hvICR0aGlzLT5FbmRUYWJDb250ZW50KCk7CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/changelog.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHVsPgogIDxsaT5WZXJzaW9uIDEuMCAtIEF1Z3VzdC8yMDA5CiAgICA8dWw+CiAgICAgIDxsaT5Jbml0aWFsIFJlbGVhc2U8L2xpPgogICAgPC91bD4KICA8L2xpPgoKICA8bGk+VmVyc2lvbiAxLjAuMSAtIEF1Z3VzdC8yMDA5CiAgICA8dWw+CiAgICAgIDxsaT5NaW5vciBidWcgZml4ZXMuPC9saT4KICAgIDwvdWw+CiAgPC9saT4KCiAgPGxpPlZlcnNpb24gMS4wLjQgLSBPY3RvYmVyLzIwMDkKICAgIDx1bD4KICAgICAgPGxpPk1pbm9yIGJ1ZyBmaXhlczwvbGk+CiAgICA8L3VsPgogIDwvbGk+CgogIDxsaT5WZXJzaW9uIDEuMC41IC0gT2N0b2Jlci8yMDA5CiAgICA8dWw+CiAgICAgIDxsaT5NaW5vciBidWcgZml4ZXM8L2xpPgogICAgPC91bD4KICA8L2xpPgo8L3VsPgo=]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/COPYING</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3CgogQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiA8aHR0cDovL2ZzZi5vcmcvPgogRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCiBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVhbWJsZQoKICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgYSBmcmVlLCBjb3B5bGVmdCBsaWNlbnNlIGZvcgpzb2Z0d2FyZSBhbmQgb3RoZXIga2luZHMgb2Ygd29ya3MuCgogIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhbmQgb3RoZXIgcHJhY3RpY2FsIHdvcmtzIGFyZSBkZXNpZ25lZAp0byB0YWtlIGF3YXkgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgdGhlIHdvcmtzLiAgQnkgY29udHJhc3QsCnRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBpbnRlbmRlZCB0byBndWFyYW50ZWUgeW91ciBmcmVlZG9tIHRvCnNoYXJlIGFuZCBjaGFuZ2UgYWxsIHZlcnNpb25zIG9mIGEgcHJvZ3JhbS0tdG8gbWFrZSBzdXJlIGl0IHJlbWFpbnMgZnJlZQpzb2Z0d2FyZSBmb3IgYWxsIGl0cyB1c2Vycy4gIFdlLCB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB1c2UgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3N0IG9mIG91ciBzb2Z0d2FyZTsgaXQgYXBwbGllcyBhbHNvIHRvCmFueSBvdGhlciB3b3JrIHJlbGVhc2VkIHRoaXMgd2F5IGJ5IGl0cyBhdXRob3JzLiAgWW91IGNhbiBhcHBseSBpdCB0bwp5b3VyIHByb2dyYW1zLCB0b28uCgogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQpoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCnRoZW0gaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQgaWYgeW91CndhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQgaW4gbmV3CmZyZWUgcHJvZ3JhbXMsIGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIHByZXZlbnQgb3RoZXJzIGZyb20gZGVueWluZyB5b3UKdGhlc2UgcmlnaHRzIG9yIGFza2luZyB5b3UgdG8gc3VycmVuZGVyIHRoZSByaWdodHMuICBUaGVyZWZvcmUsIHlvdSBoYXZlCmNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZgp5b3UgbW9kaWZ5IGl0OiByZXNwb25zaWJpbGl0aWVzIHRvIHJlc3BlY3QgdGhlIGZyZWVkb20gb2Ygb3RoZXJzLgoKICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyCmdyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IHBhc3Mgb24gdG8gdGhlIHJlY2lwaWVudHMgdGhlIHNhbWUKZnJlZWRvbXMgdGhhdCB5b3UgcmVjZWl2ZWQuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUKb3IgY2FuIGdldCB0aGUgc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkKa25vdyB0aGVpciByaWdodHMuCgogIERldmVsb3BlcnMgdGhhdCB1c2UgdGhlIEdOVSBHUEwgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczoKKDEpIGFzc2VydCBjb3B5cmlnaHQgb24gdGhlIHNvZnR3YXJlLCBhbmQgKDIpIG9mZmVyIHlvdSB0aGlzIExpY2Vuc2UKZ2l2aW5nIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSBpdC4KCiAgRm9yIHRoZSBkZXZlbG9wZXJzJyBhbmQgYXV0aG9ycycgcHJvdGVjdGlvbiwgdGhlIEdQTCBjbGVhcmx5IGV4cGxhaW5zCnRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZSBzb2Z0d2FyZS4gIEZvciBib3RoIHVzZXJzJyBhbmQKYXV0aG9ycycgc2FrZSwgdGhlIEdQTCByZXF1aXJlcyB0aGF0IG1vZGlmaWVkIHZlcnNpb25zIGJlIG1hcmtlZCBhcwpjaGFuZ2VkLCBzbyB0aGF0IHRoZWlyIHByb2JsZW1zIHdpbGwgbm90IGJlIGF0dHJpYnV0ZWQgZXJyb25lb3VzbHkgdG8KYXV0aG9ycyBvZiBwcmV2aW91cyB2ZXJzaW9ucy4KCiAgU29tZSBkZXZpY2VzIGFyZSBkZXNpZ25lZCB0byBkZW55IHVzZXJzIGFjY2VzcyB0byBpbnN0YWxsIG9yIHJ1bgptb2RpZmllZCB2ZXJzaW9ucyBvZiB0aGUgc29mdHdhcmUgaW5zaWRlIHRoZW0sIGFsdGhvdWdoIHRoZSBtYW51ZmFjdHVyZXIKY2FuIGRvIHNvLiAgVGhpcyBpcyBmdW5kYW1lbnRhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBhaW0gb2YKcHJvdGVjdGluZyB1c2VycycgZnJlZWRvbSB0byBjaGFuZ2UgdGhlIHNvZnR3YXJlLiAgVGhlIHN5c3RlbWF0aWMKcGF0dGVybiBvZiBzdWNoIGFidXNlIG9jY3VycyBpbiB0aGUgYXJlYSBvZiBwcm9kdWN0cyBmb3IgaW5kaXZpZHVhbHMgdG8KdXNlLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hlcmUgaXQgaXMgbW9zdCB1bmFjY2VwdGFibGUuICBUaGVyZWZvcmUsIHdlCmhhdmUgZGVzaWduZWQgdGhpcyB2ZXJzaW9uIG9mIHRoZSBHUEwgdG8gcHJvaGliaXQgdGhlIHByYWN0aWNlIGZvciB0aG9zZQpwcm9kdWN0cy4gIElmIHN1Y2ggcHJvYmxlbXMgYXJpc2Ugc3Vic3RhbnRpYWxseSBpbiBvdGhlciBkb21haW5zLCB3ZQpzdGFuZCByZWFkeSB0byBleHRlbmQgdGhpcyBwcm92aXNpb24gdG8gdGhvc2UgZG9tYWlucyBpbiBmdXR1cmUgdmVyc2lvbnMKb2YgdGhlIEdQTCwgYXMgbmVlZGVkIHRvIHByb3RlY3QgdGhlIGZyZWVkb20gb2YgdXNlcnMuCgogIEZpbmFsbHksIGV2ZXJ5IHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlIHBhdGVudHMuClN0YXRlcyBzaG91bGQgbm90IGFsbG93IHBhdGVudHMgdG8gcmVzdHJpY3QgZGV2ZWxvcG1lbnQgYW5kIHVzZSBvZgpzb2Z0d2FyZSBvbiBnZW5lcmFsLXB1cnBvc2UgY29tcHV0ZXJzLCBidXQgaW4gdGhvc2UgdGhhdCBkbywgd2Ugd2lzaCB0bwphdm9pZCB0aGUgc3BlY2lhbCBkYW5nZXIgdGhhdCBwYXRlbnRzIGFwcGxpZWQgdG8gYSBmcmVlIHByb2dyYW0gY291bGQKbWFrZSBpdCBlZmZlY3RpdmVseSBwcm9wcmlldGFyeS4gIFRvIHByZXZlbnQgdGhpcywgdGhlIEdQTCBhc3N1cmVzIHRoYXQKcGF0ZW50cyBjYW5ub3QgYmUgdXNlZCB0byByZW5kZXIgdGhlIHByb2dyYW0gbm9uLWZyZWUuCgogIFRoZSBwcmVjaXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kCm1vZGlmaWNhdGlvbiBmb2xsb3cuCgogICAgICAgICAgICAgICAgICAgICAgIFRFUk1TIEFORCBDT05ESVRJT05TCgogIDAuIERlZmluaXRpb25zLgoKICAiVGhpcyBMaWNlbnNlIiByZWZlcnMgdG8gdmVyc2lvbiAzIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCiAgIkNvcHlyaWdodCIgYWxzbyBtZWFucyBjb3B5cmlnaHQtbGlrZSBsYXdzIHRoYXQgYXBwbHkgdG8gb3RoZXIga2luZHMgb2YKd29ya3MsIHN1Y2ggYXMgc2VtaWNvbmR1Y3RvciBtYXNrcy4KCiAgIlRoZSBQcm9ncmFtIiByZWZlcnMgdG8gYW55IGNvcHlyaWdodGFibGUgd29yayBsaWNlbnNlZCB1bmRlciB0aGlzCkxpY2Vuc2UuICBFYWNoIGxpY2Vuc2VlIGlzIGFkZHJlc3NlZCBhcyAieW91Ii4gICJMaWNlbnNlZXMiIGFuZAoicmVjaXBpZW50cyIgbWF5IGJlIGluZGl2aWR1YWxzIG9yIG9yZ2FuaXphdGlvbnMuCgogIFRvICJtb2RpZnkiIGEgd29yayBtZWFucyB0byBjb3B5IGZyb20gb3IgYWRhcHQgYWxsIG9yIHBhcnQgb2YgdGhlIHdvcmsKaW4gYSBmYXNoaW9uIHJlcXVpcmluZyBjb3B5cmlnaHQgcGVybWlzc2lvbiwgb3RoZXIgdGhhbiB0aGUgbWFraW5nIG9mIGFuCmV4YWN0IGNvcHkuICBUaGUgcmVzdWx0aW5nIHdvcmsgaXMgY2FsbGVkIGEgIm1vZGlmaWVkIHZlcnNpb24iIG9mIHRoZQplYXJsaWVyIHdvcmsgb3IgYSB3b3JrICJiYXNlZCBvbiIgdGhlIGVhcmxpZXIgd29yay4KCiAgQSAiY292ZXJlZCB3b3JrIiBtZWFucyBlaXRoZXIgdGhlIHVubW9kaWZpZWQgUHJvZ3JhbSBvciBhIHdvcmsgYmFzZWQKb24gdGhlIFByb2dyYW0uCgogIFRvICJwcm9wYWdhdGUiIGEgd29yayBtZWFucyB0byBkbyBhbnl0aGluZyB3aXRoIGl0IHRoYXQsIHdpdGhvdXQKcGVybWlzc2lvbiwgd291bGQgbWFrZSB5b3UgZGlyZWN0bHkgb3Igc2Vjb25kYXJpbHkgbGlhYmxlIGZvcgppbmZyaW5nZW1lbnQgdW5kZXIgYXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3LCBleGNlcHQgZXhlY3V0aW5nIGl0IG9uIGEKY29tcHV0ZXIgb3IgbW9kaWZ5aW5nIGEgcHJpdmF0ZSBjb3B5LiAgUHJvcGFnYXRpb24gaW5jbHVkZXMgY29weWluZywKZGlzdHJpYnV0aW9uICh3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uKSwgbWFraW5nIGF2YWlsYWJsZSB0byB0aGUKcHVibGljLCBhbmQgaW4gc29tZSBjb3VudHJpZXMgb3RoZXIgYWN0aXZpdGllcyBhcyB3ZWxsLgoKICBUbyAiY29udmV5IiBhIHdvcmsgbWVhbnMgYW55IGtpbmQgb2YgcHJvcGFnYXRpb24gdGhhdCBlbmFibGVzIG90aGVyCnBhcnRpZXMgdG8gbWFrZSBvciByZWNlaXZlIGNvcGllcy4gIE1lcmUgaW50ZXJhY3Rpb24gd2l0aCBhIHVzZXIgdGhyb3VnaAphIGNvbXB1dGVyIG5ldHdvcmssIHdpdGggbm8gdHJhbnNmZXIgb2YgYSBjb3B5LCBpcyBub3QgY29udmV5aW5nLgoKICBBbiBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZSBkaXNwbGF5cyAiQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcyIKdG8gdGhlIGV4dGVudCB0aGF0IGl0IGluY2x1ZGVzIGEgY29udmVuaWVudCBhbmQgcHJvbWluZW50bHkgdmlzaWJsZQpmZWF0dXJlIHRoYXQgKDEpIGRpc3BsYXlzIGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UsIGFuZCAoMikKdGVsbHMgdGhlIHVzZXIgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhlIHdvcmsgKGV4Y2VwdCB0byB0aGUKZXh0ZW50IHRoYXQgd2FycmFudGllcyBhcmUgcHJvdmlkZWQpLCB0aGF0IGxpY2Vuc2VlcyBtYXkgY29udmV5IHRoZQp3b3JrIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIGhvdyB0byB2aWV3IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZgp0aGUgaW50ZXJmYWNlIHByZXNlbnRzIGEgbGlzdCBvZiB1c2VyIGNvbW1hbmRzIG9yIG9wdGlvbnMsIHN1Y2ggYXMgYQptZW51LCBhIHByb21pbmVudCBpdGVtIGluIHRoZSBsaXN0IG1lZXRzIHRoaXMgY3JpdGVyaW9uLgoKICAxLiBTb3VyY2UgQ29kZS4KCiAgVGhlICJzb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsKZm9yIG1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgIk9iamVjdCBjb2RlIiBtZWFucyBhbnkgbm9uLXNvdXJjZQpmb3JtIG9mIGEgd29yay4KCiAgQSAiU3RhbmRhcmQgSW50ZXJmYWNlIiBtZWFucyBhbiBpbnRlcmZhY2UgdGhhdCBlaXRoZXIgaXMgYW4gb2ZmaWNpYWwKc3RhbmRhcmQgZGVmaW5lZCBieSBhIHJlY29nbml6ZWQgc3RhbmRhcmRzIGJvZHksIG9yLCBpbiB0aGUgY2FzZSBvZgppbnRlcmZhY2VzIHNwZWNpZmllZCBmb3IgYSBwYXJ0aWN1bGFyIHByb2dyYW1taW5nIGxhbmd1YWdlLCBvbmUgdGhhdAppcyB3aWRlbHkgdXNlZCBhbW9uZyBkZXZlbG9wZXJzIHdvcmtpbmcgaW4gdGhhdCBsYW5ndWFnZS4KCiAgVGhlICJTeXN0ZW0gTGlicmFyaWVzIiBvZiBhbiBleGVjdXRhYmxlIHdvcmsgaW5jbHVkZSBhbnl0aGluZywgb3RoZXIKdGhhbiB0aGUgd29yayBhcyBhIHdob2xlLCB0aGF0IChhKSBpcyBpbmNsdWRlZCBpbiB0aGUgbm9ybWFsIGZvcm0gb2YKcGFja2FnaW5nIGEgTWFqb3IgQ29tcG9uZW50LCBidXQgd2hpY2ggaXMgbm90IHBhcnQgb2YgdGhhdCBNYWpvcgpDb21wb25lbnQsIGFuZCAoYikgc2VydmVzIG9ubHkgdG8gZW5hYmxlIHVzZSBvZiB0aGUgd29yayB3aXRoIHRoYXQKTWFqb3IgQ29tcG9uZW50LCBvciB0byBpbXBsZW1lbnQgYSBTdGFuZGFyZCBJbnRlcmZhY2UgZm9yIHdoaWNoIGFuCmltcGxlbWVudGF0aW9uIGlzIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGluIHNvdXJjZSBjb2RlIGZvcm0uICBBCiJNYWpvciBDb21wb25lbnQiLCBpbiB0aGlzIGNvbnRleHQsIG1lYW5zIGEgbWFqb3IgZXNzZW50aWFsIGNvbXBvbmVudAooa2VybmVsLCB3aW5kb3cgc3lzdGVtLCBhbmQgc28gb24pIG9mIHRoZSBzcGVjaWZpYyBvcGVyYXRpbmcgc3lzdGVtCihpZiBhbnkpIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHdvcmsgcnVucywgb3IgYSBjb21waWxlciB1c2VkIHRvCnByb2R1Y2UgdGhlIHdvcmssIG9yIGFuIG9iamVjdCBjb2RlIGludGVycHJldGVyIHVzZWQgdG8gcnVuIGl0LgoKICBUaGUgIkNvcnJlc3BvbmRpbmcgU291cmNlIiBmb3IgYSB3b3JrIGluIG9iamVjdCBjb2RlIGZvcm0gbWVhbnMgYWxsCnRoZSBzb3VyY2UgY29kZSBuZWVkZWQgdG8gZ2VuZXJhdGUsIGluc3RhbGwsIGFuZCAoZm9yIGFuIGV4ZWN1dGFibGUKd29yaykgcnVuIHRoZSBvYmplY3QgY29kZSBhbmQgdG8gbW9kaWZ5IHRoZSB3b3JrLCBpbmNsdWRpbmcgc2NyaXB0cyB0bwpjb250cm9sIHRob3NlIGFjdGl2aXRpZXMuICBIb3dldmVyLCBpdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSB3b3JrJ3MKU3lzdGVtIExpYnJhcmllcywgb3IgZ2VuZXJhbC1wdXJwb3NlIHRvb2xzIG9yIGdlbmVyYWxseSBhdmFpbGFibGUgZnJlZQpwcm9ncmFtcyB3aGljaCBhcmUgdXNlZCB1bm1vZGlmaWVkIGluIHBlcmZvcm1pbmcgdGhvc2UgYWN0aXZpdGllcyBidXQKd2hpY2ggYXJlIG5vdCBwYXJ0IG9mIHRoZSB3b3JrLiAgRm9yIGV4YW1wbGUsIENvcnJlc3BvbmRpbmcgU291cmNlCmluY2x1ZGVzIGludGVyZmFjZSBkZWZpbml0aW9uIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCBzb3VyY2UgZmlsZXMgZm9yCnRoZSB3b3JrLCBhbmQgdGhlIHNvdXJjZSBjb2RlIGZvciBzaGFyZWQgbGlicmFyaWVzIGFuZCBkeW5hbWljYWxseQpsaW5rZWQgc3VicHJvZ3JhbXMgdGhhdCB0aGUgd29yayBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gcmVxdWlyZSwKc3VjaCBhcyBieSBpbnRpbWF0ZSBkYXRhIGNvbW11bmljYXRpb24gb3IgY29udHJvbCBmbG93IGJldHdlZW4gdGhvc2UKc3VicHJvZ3JhbXMgYW5kIG90aGVyIHBhcnRzIG9mIHRoZSB3b3JrLgoKICBUaGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgbmVlZCBub3QgaW5jbHVkZSBhbnl0aGluZyB0aGF0IHVzZXJzCmNhbiByZWdlbmVyYXRlIGF1dG9tYXRpY2FsbHkgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgQ29ycmVzcG9uZGluZwpTb3VyY2UuCgogIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBmb3IgYSB3b3JrIGluIHNvdXJjZSBjb2RlIGZvcm0gaXMgdGhhdApzYW1lIHdvcmsuCgogIDIuIEJhc2ljIFBlcm1pc3Npb25zLgoKICBBbGwgcmlnaHRzIGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlIGFyZSBncmFudGVkIGZvciB0aGUgdGVybSBvZgpjb3B5cmlnaHQgb24gdGhlIFByb2dyYW0sIGFuZCBhcmUgaXJyZXZvY2FibGUgcHJvdmlkZWQgdGhlIHN0YXRlZApjb25kaXRpb25zIGFyZSBtZXQuICBUaGlzIExpY2Vuc2UgZXhwbGljaXRseSBhZmZpcm1zIHlvdXIgdW5saW1pdGVkCnBlcm1pc3Npb24gdG8gcnVuIHRoZSB1bm1vZGlmaWVkIFByb2dyYW0uICBUaGUgb3V0cHV0IGZyb20gcnVubmluZyBhCmNvdmVyZWQgd29yayBpcyBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZSBvbmx5IGlmIHRoZSBvdXRwdXQsIGdpdmVuIGl0cwpjb250ZW50LCBjb25zdGl0dXRlcyBhIGNvdmVyZWQgd29yay4gIFRoaXMgTGljZW5zZSBhY2tub3dsZWRnZXMgeW91cgpyaWdodHMgb2YgZmFpciB1c2Ugb3Igb3RoZXIgZXF1aXZhbGVudCwgYXMgcHJvdmlkZWQgYnkgY29weXJpZ2h0IGxhdy4KCiAgWW91IG1heSBtYWtlLCBydW4gYW5kIHByb3BhZ2F0ZSBjb3ZlcmVkIHdvcmtzIHRoYXQgeW91IGRvIG5vdApjb252ZXksIHdpdGhvdXQgY29uZGl0aW9ucyBzbyBsb25nIGFzIHlvdXIgbGljZW5zZSBvdGhlcndpc2UgcmVtYWlucwppbiBmb3JjZS4gIFlvdSBtYXkgY29udmV5IGNvdmVyZWQgd29ya3MgdG8gb3RoZXJzIGZvciB0aGUgc29sZSBwdXJwb3NlCm9mIGhhdmluZyB0aGVtIG1ha2UgbW9kaWZpY2F0aW9ucyBleGNsdXNpdmVseSBmb3IgeW91LCBvciBwcm92aWRlIHlvdQp3aXRoIGZhY2lsaXRpZXMgZm9yIHJ1bm5pbmcgdGhvc2Ugd29ya3MsIHByb3ZpZGVkIHRoYXQgeW91IGNvbXBseSB3aXRoCnRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UgaW4gY29udmV5aW5nIGFsbCBtYXRlcmlhbCBmb3Igd2hpY2ggeW91IGRvCm5vdCBjb250cm9sIGNvcHlyaWdodC4gIFRob3NlIHRodXMgbWFraW5nIG9yIHJ1bm5pbmcgdGhlIGNvdmVyZWQgd29ya3MKZm9yIHlvdSBtdXN0IGRvIHNvIGV4Y2x1c2l2ZWx5IG9uIHlvdXIgYmVoYWxmLCB1bmRlciB5b3VyIGRpcmVjdGlvbgphbmQgY29udHJvbCwgb24gdGVybXMgdGhhdCBwcm9oaWJpdCB0aGVtIGZyb20gbWFraW5nIGFueSBjb3BpZXMgb2YKeW91ciBjb3B5cmlnaHRlZCBtYXRlcmlhbCBvdXRzaWRlIHRoZWlyIHJlbGF0aW9uc2hpcCB3aXRoIHlvdS4KCiAgQ29udmV5aW5nIHVuZGVyIGFueSBvdGhlciBjaXJjdW1zdGFuY2VzIGlzIHBlcm1pdHRlZCBzb2xlbHkgdW5kZXIKdGhlIGNvbmRpdGlvbnMgc3RhdGVkIGJlbG93LiAgU3VibGljZW5zaW5nIGlzIG5vdCBhbGxvd2VkOyBzZWN0aW9uIDEwCm1ha2VzIGl0IHVubmVjZXNzYXJ5LgoKICAzLiBQcm90ZWN0aW5nIFVzZXJzJyBMZWdhbCBSaWdodHMgRnJvbSBBbnRpLUNpcmN1bXZlbnRpb24gTGF3LgoKICBObyBjb3ZlcmVkIHdvcmsgc2hhbGwgYmUgZGVlbWVkIHBhcnQgb2YgYW4gZWZmZWN0aXZlIHRlY2hub2xvZ2ljYWwKbWVhc3VyZSB1bmRlciBhbnkgYXBwbGljYWJsZSBsYXcgZnVsZmlsbGluZyBvYmxpZ2F0aW9ucyB1bmRlciBhcnRpY2xlCjExIG9mIHRoZSBXSVBPIGNvcHlyaWdodCB0cmVhdHkgYWRvcHRlZCBvbiAyMCBEZWNlbWJlciAxOTk2LCBvcgpzaW1pbGFyIGxhd3MgcHJvaGliaXRpbmcgb3IgcmVzdHJpY3RpbmcgY2lyY3VtdmVudGlvbiBvZiBzdWNoCm1lYXN1cmVzLgoKICBXaGVuIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHlvdSB3YWl2ZSBhbnkgbGVnYWwgcG93ZXIgdG8gZm9yYmlkCmNpcmN1bXZlbnRpb24gb2YgdGVjaG5vbG9naWNhbCBtZWFzdXJlcyB0byB0aGUgZXh0ZW50IHN1Y2ggY2lyY3VtdmVudGlvbgppcyBlZmZlY3RlZCBieSBleGVyY2lzaW5nIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2Ugd2l0aCByZXNwZWN0IHRvCnRoZSBjb3ZlcmVkIHdvcmssIGFuZCB5b3UgZGlzY2xhaW0gYW55IGludGVudGlvbiB0byBsaW1pdCBvcGVyYXRpb24gb3IKbW9kaWZpY2F0aW9uIG9mIHRoZSB3b3JrIGFzIGEgbWVhbnMgb2YgZW5mb3JjaW5nLCBhZ2FpbnN0IHRoZSB3b3JrJ3MKdXNlcnMsIHlvdXIgb3IgdGhpcmQgcGFydGllcycgbGVnYWwgcmlnaHRzIHRvIGZvcmJpZCBjaXJjdW12ZW50aW9uIG9mCnRlY2hub2xvZ2ljYWwgbWVhc3VyZXMuCgogIDQuIENvbnZleWluZyBWZXJiYXRpbSBDb3BpZXMuCgogIFlvdSBtYXkgY29udmV5IHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzIHNvdXJjZSBjb2RlIGFzIHlvdQpyZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0IHlvdSBjb25zcGljdW91c2x5IGFuZAphcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2U7CmtlZXAgaW50YWN0IGFsbCBub3RpY2VzIHN0YXRpbmcgdGhhdCB0aGlzIExpY2Vuc2UgYW5kIGFueQpub24tcGVybWlzc2l2ZSB0ZXJtcyBhZGRlZCBpbiBhY2NvcmQgd2l0aCBzZWN0aW9uIDcgYXBwbHkgdG8gdGhlIGNvZGU7CmtlZXAgaW50YWN0IGFsbCBub3RpY2VzIG9mIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsgYW5kIGdpdmUgYWxsCnJlY2lwaWVudHMgYSBjb3B5IG9mIHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBQcm9ncmFtLgoKICBZb3UgbWF5IGNoYXJnZSBhbnkgcHJpY2Ugb3Igbm8gcHJpY2UgZm9yIGVhY2ggY29weSB0aGF0IHlvdSBjb252ZXksCmFuZCB5b3UgbWF5IG9mZmVyIHN1cHBvcnQgb3Igd2FycmFudHkgcHJvdGVjdGlvbiBmb3IgYSBmZWUuCgogIDUuIENvbnZleWluZyBNb2RpZmllZCBTb3VyY2UgVmVyc2lvbnMuCgogIFlvdSBtYXkgY29udmV5IGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSwgb3IgdGhlIG1vZGlmaWNhdGlvbnMgdG8KcHJvZHVjZSBpdCBmcm9tIHRoZSBQcm9ncmFtLCBpbiB0aGUgZm9ybSBvZiBzb3VyY2UgY29kZSB1bmRlciB0aGUKdGVybXMgb2Ygc2VjdGlvbiA0LCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6CgogICAgYSkgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgeW91IG1vZGlmaWVkCiAgICBpdCwgYW5kIGdpdmluZyBhIHJlbGV2YW50IGRhdGUuCgogICAgYikgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgaXQgaXMKICAgIHJlbGVhc2VkIHVuZGVyIHRoaXMgTGljZW5zZSBhbmQgYW55IGNvbmRpdGlvbnMgYWRkZWQgdW5kZXIgc2VjdGlvbgogICAgNy4gIFRoaXMgcmVxdWlyZW1lbnQgbW9kaWZpZXMgdGhlIHJlcXVpcmVtZW50IGluIHNlY3Rpb24gNCB0bwogICAgImtlZXAgaW50YWN0IGFsbCBub3RpY2VzIi4KCiAgICBjKSBZb3UgbXVzdCBsaWNlbnNlIHRoZSBlbnRpcmUgd29yaywgYXMgYSB3aG9sZSwgdW5kZXIgdGhpcwogICAgTGljZW5zZSB0byBhbnlvbmUgd2hvIGNvbWVzIGludG8gcG9zc2Vzc2lvbiBvZiBhIGNvcHkuICBUaGlzCiAgICBMaWNlbnNlIHdpbGwgdGhlcmVmb3JlIGFwcGx5LCBhbG9uZyB3aXRoIGFueSBhcHBsaWNhYmxlIHNlY3Rpb24gNwogICAgYWRkaXRpb25hbCB0ZXJtcywgdG8gdGhlIHdob2xlIG9mIHRoZSB3b3JrLCBhbmQgYWxsIGl0cyBwYXJ0cywKICAgIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZXkgYXJlIHBhY2thZ2VkLiAgVGhpcyBMaWNlbnNlIGdpdmVzIG5vCiAgICBwZXJtaXNzaW9uIHRvIGxpY2Vuc2UgdGhlIHdvcmsgaW4gYW55IG90aGVyIHdheSwgYnV0IGl0IGRvZXMgbm90CiAgICBpbnZhbGlkYXRlIHN1Y2ggcGVybWlzc2lvbiBpZiB5b3UgaGF2ZSBzZXBhcmF0ZWx5IHJlY2VpdmVkIGl0LgoKICAgIGQpIElmIHRoZSB3b3JrIGhhcyBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZXMsIGVhY2ggbXVzdCBkaXNwbGF5CiAgICBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzOyBob3dldmVyLCBpZiB0aGUgUHJvZ3JhbSBoYXMgaW50ZXJhY3RpdmUKICAgIGludGVyZmFjZXMgdGhhdCBkbyBub3QgZGlzcGxheSBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzLCB5b3VyCiAgICB3b3JrIG5lZWQgbm90IG1ha2UgdGhlbSBkbyBzby4KCiAgQSBjb21waWxhdGlvbiBvZiBhIGNvdmVyZWQgd29yayB3aXRoIG90aGVyIHNlcGFyYXRlIGFuZCBpbmRlcGVuZGVudAp3b3Jrcywgd2hpY2ggYXJlIG5vdCBieSB0aGVpciBuYXR1cmUgZXh0ZW5zaW9ucyBvZiB0aGUgY292ZXJlZCB3b3JrLAphbmQgd2hpY2ggYXJlIG5vdCBjb21iaW5lZCB3aXRoIGl0IHN1Y2ggYXMgdG8gZm9ybSBhIGxhcmdlciBwcm9ncmFtLAppbiBvciBvbiBhIHZvbHVtZSBvZiBhIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSwgaXMgY2FsbGVkIGFuCiJhZ2dyZWdhdGUiIGlmIHRoZSBjb21waWxhdGlvbiBhbmQgaXRzIHJlc3VsdGluZyBjb3B5cmlnaHQgYXJlIG5vdAp1c2VkIHRvIGxpbWl0IHRoZSBhY2Nlc3Mgb3IgbGVnYWwgcmlnaHRzIG9mIHRoZSBjb21waWxhdGlvbidzIHVzZXJzCmJleW9uZCB3aGF0IHRoZSBpbmRpdmlkdWFsIHdvcmtzIHBlcm1pdC4gIEluY2x1c2lvbiBvZiBhIGNvdmVyZWQgd29yawppbiBhbiBhZ2dyZWdhdGUgZG9lcyBub3QgY2F1c2UgdGhpcyBMaWNlbnNlIHRvIGFwcGx5IHRvIHRoZSBvdGhlcgpwYXJ0cyBvZiB0aGUgYWdncmVnYXRlLgoKICA2LiBDb252ZXlpbmcgTm9uLVNvdXJjZSBGb3Jtcy4KCiAgWW91IG1heSBjb252ZXkgYSBjb3ZlcmVkIHdvcmsgaW4gb2JqZWN0IGNvZGUgZm9ybSB1bmRlciB0aGUgdGVybXMKb2Ygc2VjdGlvbnMgNCBhbmQgNSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBjb252ZXkgdGhlCm1hY2hpbmUtcmVhZGFibGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwKaW4gb25lIG9mIHRoZXNlIHdheXM6CgogICAgYSkgQ29udmV5IHRoZSBvYmplY3QgY29kZSBpbiwgb3IgZW1ib2RpZWQgaW4sIGEgcGh5c2ljYWwgcHJvZHVjdAogICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGZpeGVkIG9uIGEgZHVyYWJsZSBwaHlzaWNhbCBtZWRpdW0KICAgIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlLgoKICAgIGIpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgaW4sIG9yIGVtYm9kaWVkIGluLCBhIHBoeXNpY2FsIHByb2R1Y3QKICAgIChpbmNsdWRpbmcgYSBwaHlzaWNhbCBkaXN0cmlidXRpb24gbWVkaXVtKSwgYWNjb21wYW5pZWQgYnkgYQogICAgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlIHllYXJzIGFuZCB2YWxpZCBmb3IgYXMKICAgIGxvbmcgYXMgeW91IG9mZmVyIHNwYXJlIHBhcnRzIG9yIGN1c3RvbWVyIHN1cHBvcnQgZm9yIHRoYXQgcHJvZHVjdAogICAgbW9kZWwsIHRvIGdpdmUgYW55b25lIHdobyBwb3NzZXNzZXMgdGhlIG9iamVjdCBjb2RlIGVpdGhlciAoMSkgYQogICAgY29weSBvZiB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgZm9yIGFsbCB0aGUgc29mdHdhcmUgaW4gdGhlCiAgICBwcm9kdWN0IHRoYXQgaXMgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIG9uIGEgZHVyYWJsZSBwaHlzaWNhbAogICAgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlLCBmb3IgYSBwcmljZSBubwogICAgbW9yZSB0aGFuIHlvdXIgcmVhc29uYWJsZSBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyB0aGlzCiAgICBjb252ZXlpbmcgb2Ygc291cmNlLCBvciAoMikgYWNjZXNzIHRvIGNvcHkgdGhlCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSBmcm9tIGEgbmV0d29yayBzZXJ2ZXIgYXQgbm8gY2hhcmdlLgoKICAgIGMpIENvbnZleSBpbmRpdmlkdWFsIGNvcGllcyBvZiB0aGUgb2JqZWN0IGNvZGUgd2l0aCBhIGNvcHkgb2YgdGhlCiAgICB3cml0dGVuIG9mZmVyIHRvIHByb3ZpZGUgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhpcwogICAgYWx0ZXJuYXRpdmUgaXMgYWxsb3dlZCBvbmx5IG9jY2FzaW9uYWxseSBhbmQgbm9uY29tbWVyY2lhbGx5LCBhbmQKICAgIG9ubHkgaWYgeW91IHJlY2VpdmVkIHRoZSBvYmplY3QgY29kZSB3aXRoIHN1Y2ggYW4gb2ZmZXIsIGluIGFjY29yZAogICAgd2l0aCBzdWJzZWN0aW9uIDZiLgoKICAgIGQpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIGZyb20gYSBkZXNpZ25hdGVkCiAgICBwbGFjZSAoZ3JhdGlzIG9yIGZvciBhIGNoYXJnZSksIGFuZCBvZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGluIHRoZSBzYW1lIHdheSB0aHJvdWdoIHRoZSBzYW1lIHBsYWNlIGF0IG5vCiAgICBmdXJ0aGVyIGNoYXJnZS4gIFlvdSBuZWVkIG5vdCByZXF1aXJlIHJlY2lwaWVudHMgdG8gY29weSB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLiAgSWYgdGhlIHBsYWNlIHRvCiAgICBjb3B5IHRoZSBvYmplY3QgY29kZSBpcyBhIG5ldHdvcmsgc2VydmVyLCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UKICAgIG1heSBiZSBvbiBhIGRpZmZlcmVudCBzZXJ2ZXIgKG9wZXJhdGVkIGJ5IHlvdSBvciBhIHRoaXJkIHBhcnR5KQogICAgdGhhdCBzdXBwb3J0cyBlcXVpdmFsZW50IGNvcHlpbmcgZmFjaWxpdGllcywgcHJvdmlkZWQgeW91IG1haW50YWluCiAgICBjbGVhciBkaXJlY3Rpb25zIG5leHQgdG8gdGhlIG9iamVjdCBjb2RlIHNheWluZyB3aGVyZSB0byBmaW5kIHRoZQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UuICBSZWdhcmRsZXNzIG9mIHdoYXQgc2VydmVyIGhvc3RzIHRoZQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UsIHlvdSByZW1haW4gb2JsaWdhdGVkIHRvIGVuc3VyZSB0aGF0IGl0IGlzCiAgICBhdmFpbGFibGUgZm9yIGFzIGxvbmcgYXMgbmVlZGVkIHRvIHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLgoKICAgIGUpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgdXNpbmcgcGVlci10by1wZWVyIHRyYW5zbWlzc2lvbiwgcHJvdmlkZWQKICAgIHlvdSBpbmZvcm0gb3RoZXIgcGVlcnMgd2hlcmUgdGhlIG9iamVjdCBjb2RlIGFuZCBDb3JyZXNwb25kaW5nCiAgICBTb3VyY2Ugb2YgdGhlIHdvcmsgYXJlIGJlaW5nIG9mZmVyZWQgdG8gdGhlIGdlbmVyYWwgcHVibGljIGF0IG5vCiAgICBjaGFyZ2UgdW5kZXIgc3Vic2VjdGlvbiA2ZC4KCiAgQSBzZXBhcmFibGUgcG9ydGlvbiBvZiB0aGUgb2JqZWN0IGNvZGUsIHdob3NlIHNvdXJjZSBjb2RlIGlzIGV4Y2x1ZGVkCmZyb20gdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIGFzIGEgU3lzdGVtIExpYnJhcnksIG5lZWQgbm90IGJlCmluY2x1ZGVkIGluIGNvbnZleWluZyB0aGUgb2JqZWN0IGNvZGUgd29yay4KCiAgQSAiVXNlciBQcm9kdWN0IiBpcyBlaXRoZXIgKDEpIGEgImNvbnN1bWVyIHByb2R1Y3QiLCB3aGljaCBtZWFucyBhbnkKdGFuZ2libGUgcGVyc29uYWwgcHJvcGVydHkgd2hpY2ggaXMgbm9ybWFsbHkgdXNlZCBmb3IgcGVyc29uYWwsIGZhbWlseSwKb3IgaG91c2Vob2xkIHB1cnBvc2VzLCBvciAoMikgYW55dGhpbmcgZGVzaWduZWQgb3Igc29sZCBmb3IgaW5jb3Jwb3JhdGlvbgppbnRvIGEgZHdlbGxpbmcuICBJbiBkZXRlcm1pbmluZyB3aGV0aGVyIGEgcHJvZHVjdCBpcyBhIGNvbnN1bWVyIHByb2R1Y3QsCmRvdWJ0ZnVsIGNhc2VzIHNoYWxsIGJlIHJlc29sdmVkIGluIGZhdm9yIG9mIGNvdmVyYWdlLiAgRm9yIGEgcGFydGljdWxhcgpwcm9kdWN0IHJlY2VpdmVkIGJ5IGEgcGFydGljdWxhciB1c2VyLCAibm9ybWFsbHkgdXNlZCIgcmVmZXJzIHRvIGEKdHlwaWNhbCBvciBjb21tb24gdXNlIG9mIHRoYXQgY2xhc3Mgb2YgcHJvZHVjdCwgcmVnYXJkbGVzcyBvZiB0aGUgc3RhdHVzCm9mIHRoZSBwYXJ0aWN1bGFyIHVzZXIgb3Igb2YgdGhlIHdheSBpbiB3aGljaCB0aGUgcGFydGljdWxhciB1c2VyCmFjdHVhbGx5IHVzZXMsIG9yIGV4cGVjdHMgb3IgaXMgZXhwZWN0ZWQgdG8gdXNlLCB0aGUgcHJvZHVjdC4gIEEgcHJvZHVjdAppcyBhIGNvbnN1bWVyIHByb2R1Y3QgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBwcm9kdWN0IGhhcyBzdWJzdGFudGlhbApjb21tZXJjaWFsLCBpbmR1c3RyaWFsIG9yIG5vbi1jb25zdW1lciB1c2VzLCB1bmxlc3Mgc3VjaCB1c2VzIHJlcHJlc2VudAp0aGUgb25seSBzaWduaWZpY2FudCBtb2RlIG9mIHVzZSBvZiB0aGUgcHJvZHVjdC4KCiAgIkluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiIgZm9yIGEgVXNlciBQcm9kdWN0IG1lYW5zIGFueSBtZXRob2RzLApwcm9jZWR1cmVzLCBhdXRob3JpemF0aW9uIGtleXMsIG9yIG90aGVyIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIGluc3RhbGwKYW5kIGV4ZWN1dGUgbW9kaWZpZWQgdmVyc2lvbnMgb2YgYSBjb3ZlcmVkIHdvcmsgaW4gdGhhdCBVc2VyIFByb2R1Y3QgZnJvbQphIG1vZGlmaWVkIHZlcnNpb24gb2YgaXRzIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhlIGluZm9ybWF0aW9uIG11c3QKc3VmZmljZSB0byBlbnN1cmUgdGhhdCB0aGUgY29udGludWVkIGZ1bmN0aW9uaW5nIG9mIHRoZSBtb2RpZmllZCBvYmplY3QKY29kZSBpcyBpbiBubyBjYXNlIHByZXZlbnRlZCBvciBpbnRlcmZlcmVkIHdpdGggc29sZWx5IGJlY2F1c2UKbW9kaWZpY2F0aW9uIGhhcyBiZWVuIG1hZGUuCgogIElmIHlvdSBjb252ZXkgYW4gb2JqZWN0IGNvZGUgd29yayB1bmRlciB0aGlzIHNlY3Rpb24gaW4sIG9yIHdpdGgsIG9yCnNwZWNpZmljYWxseSBmb3IgdXNlIGluLCBhIFVzZXIgUHJvZHVjdCwgYW5kIHRoZSBjb252ZXlpbmcgb2NjdXJzIGFzCnBhcnQgb2YgYSB0cmFuc2FjdGlvbiBpbiB3aGljaCB0aGUgcmlnaHQgb2YgcG9zc2Vzc2lvbiBhbmQgdXNlIG9mIHRoZQpVc2VyIFByb2R1Y3QgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIHJlY2lwaWVudCBpbiBwZXJwZXR1aXR5IG9yIGZvciBhCmZpeGVkIHRlcm0gKHJlZ2FyZGxlc3Mgb2YgaG93IHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyYWN0ZXJpemVkKSwgdGhlCkNvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkIHVuZGVyIHRoaXMgc2VjdGlvbiBtdXN0IGJlIGFjY29tcGFuaWVkCmJ5IHRoZSBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24uICBCdXQgdGhpcyByZXF1aXJlbWVudCBkb2VzIG5vdCBhcHBseQppZiBuZWl0aGVyIHlvdSBub3IgYW55IHRoaXJkIHBhcnR5IHJldGFpbnMgdGhlIGFiaWxpdHkgdG8gaW5zdGFsbAptb2RpZmllZCBvYmplY3QgY29kZSBvbiB0aGUgVXNlciBQcm9kdWN0IChmb3IgZXhhbXBsZSwgdGhlIHdvcmsgaGFzCmJlZW4gaW5zdGFsbGVkIGluIFJPTSkuCgogIFRoZSByZXF1aXJlbWVudCB0byBwcm92aWRlIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiBkb2VzIG5vdCBpbmNsdWRlIGEKcmVxdWlyZW1lbnQgdG8gY29udGludWUgdG8gcHJvdmlkZSBzdXBwb3J0IHNlcnZpY2UsIHdhcnJhbnR5LCBvciB1cGRhdGVzCmZvciBhIHdvcmsgdGhhdCBoYXMgYmVlbiBtb2RpZmllZCBvciBpbnN0YWxsZWQgYnkgdGhlIHJlY2lwaWVudCwgb3IgZm9yCnRoZSBVc2VyIFByb2R1Y3QgaW4gd2hpY2ggaXQgaGFzIGJlZW4gbW9kaWZpZWQgb3IgaW5zdGFsbGVkLiAgQWNjZXNzIHRvIGEKbmV0d29yayBtYXkgYmUgZGVuaWVkIHdoZW4gdGhlIG1vZGlmaWNhdGlvbiBpdHNlbGYgbWF0ZXJpYWxseSBhbmQKYWR2ZXJzZWx5IGFmZmVjdHMgdGhlIG9wZXJhdGlvbiBvZiB0aGUgbmV0d29yayBvciB2aW9sYXRlcyB0aGUgcnVsZXMgYW5kCnByb3RvY29scyBmb3IgY29tbXVuaWNhdGlvbiBhY3Jvc3MgdGhlIG5ldHdvcmsuCgogIENvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkLCBhbmQgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIHByb3ZpZGVkLAppbiBhY2NvcmQgd2l0aCB0aGlzIHNlY3Rpb24gbXVzdCBiZSBpbiBhIGZvcm1hdCB0aGF0IGlzIHB1YmxpY2x5CmRvY3VtZW50ZWQgKGFuZCB3aXRoIGFuIGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGluCnNvdXJjZSBjb2RlIGZvcm0pLCBhbmQgbXVzdCByZXF1aXJlIG5vIHNwZWNpYWwgcGFzc3dvcmQgb3Iga2V5IGZvcgp1bnBhY2tpbmcsIHJlYWRpbmcgb3IgY29weWluZy4KCiAgNy4gQWRkaXRpb25hbCBUZXJtcy4KCiAgIkFkZGl0aW9uYWwgcGVybWlzc2lvbnMiIGFyZSB0ZXJtcyB0aGF0IHN1cHBsZW1lbnQgdGhlIHRlcm1zIG9mIHRoaXMKTGljZW5zZSBieSBtYWtpbmcgZXhjZXB0aW9ucyBmcm9tIG9uZSBvciBtb3JlIG9mIGl0cyBjb25kaXRpb25zLgpBZGRpdGlvbmFsIHBlcm1pc3Npb25zIHRoYXQgYXJlIGFwcGxpY2FibGUgdG8gdGhlIGVudGlyZSBQcm9ncmFtIHNoYWxsCmJlIHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZSBpbmNsdWRlZCBpbiB0aGlzIExpY2Vuc2UsIHRvIHRoZSBleHRlbnQKdGhhdCB0aGV5IGFyZSB2YWxpZCB1bmRlciBhcHBsaWNhYmxlIGxhdy4gIElmIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMKYXBwbHkgb25seSB0byBwYXJ0IG9mIHRoZSBQcm9ncmFtLCB0aGF0IHBhcnQgbWF5IGJlIHVzZWQgc2VwYXJhdGVseQp1bmRlciB0aG9zZSBwZXJtaXNzaW9ucywgYnV0IHRoZSBlbnRpcmUgUHJvZ3JhbSByZW1haW5zIGdvdmVybmVkIGJ5CnRoaXMgTGljZW5zZSB3aXRob3V0IHJlZ2FyZCB0byB0aGUgYWRkaXRpb25hbCBwZXJtaXNzaW9ucy4KCiAgV2hlbiB5b3UgY29udmV5IGEgY29weSBvZiBhIGNvdmVyZWQgd29yaywgeW91IG1heSBhdCB5b3VyIG9wdGlvbgpyZW1vdmUgYW55IGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgZnJvbSB0aGF0IGNvcHksIG9yIGZyb20gYW55IHBhcnQgb2YKaXQuICAoQWRkaXRpb25hbCBwZXJtaXNzaW9ucyBtYXkgYmUgd3JpdHRlbiB0byByZXF1aXJlIHRoZWlyIG93bgpyZW1vdmFsIGluIGNlcnRhaW4gY2FzZXMgd2hlbiB5b3UgbW9kaWZ5IHRoZSB3b3JrLikgIFlvdSBtYXkgcGxhY2UKYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBvbiBtYXRlcmlhbCwgYWRkZWQgYnkgeW91IHRvIGEgY292ZXJlZCB3b3JrLApmb3Igd2hpY2ggeW91IGhhdmUgb3IgY2FuIGdpdmUgYXBwcm9wcmlhdGUgY29weXJpZ2h0IHBlcm1pc3Npb24uCgogIE5vdHdpdGhzdGFuZGluZyBhbnkgb3RoZXIgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSwgZm9yIG1hdGVyaWFsIHlvdQphZGQgdG8gYSBjb3ZlcmVkIHdvcmssIHlvdSBtYXkgKGlmIGF1dGhvcml6ZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXJzIG9mCnRoYXQgbWF0ZXJpYWwpIHN1cHBsZW1lbnQgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSB3aXRoIHRlcm1zOgoKICAgIGEpIERpc2NsYWltaW5nIHdhcnJhbnR5IG9yIGxpbWl0aW5nIGxpYWJpbGl0eSBkaWZmZXJlbnRseSBmcm9tIHRoZQogICAgdGVybXMgb2Ygc2VjdGlvbnMgMTUgYW5kIDE2IG9mIHRoaXMgTGljZW5zZTsgb3IKCiAgICBiKSBSZXF1aXJpbmcgcHJlc2VydmF0aW9uIG9mIHNwZWNpZmllZCByZWFzb25hYmxlIGxlZ2FsIG5vdGljZXMgb3IKICAgIGF1dGhvciBhdHRyaWJ1dGlvbnMgaW4gdGhhdCBtYXRlcmlhbCBvciBpbiB0aGUgQXBwcm9wcmlhdGUgTGVnYWwKICAgIE5vdGljZXMgZGlzcGxheWVkIGJ5IHdvcmtzIGNvbnRhaW5pbmcgaXQ7IG9yCgogICAgYykgUHJvaGliaXRpbmcgbWlzcmVwcmVzZW50YXRpb24gb2YgdGhlIG9yaWdpbiBvZiB0aGF0IG1hdGVyaWFsLCBvcgogICAgcmVxdWlyaW5nIHRoYXQgbW9kaWZpZWQgdmVyc2lvbnMgb2Ygc3VjaCBtYXRlcmlhbCBiZSBtYXJrZWQgaW4KICAgIHJlYXNvbmFibGUgd2F5cyBhcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3JpZ2luYWwgdmVyc2lvbjsgb3IKCiAgICBkKSBMaW1pdGluZyB0aGUgdXNlIGZvciBwdWJsaWNpdHkgcHVycG9zZXMgb2YgbmFtZXMgb2YgbGljZW5zb3JzIG9yCiAgICBhdXRob3JzIG9mIHRoZSBtYXRlcmlhbDsgb3IKCiAgICBlKSBEZWNsaW5pbmcgdG8gZ3JhbnQgcmlnaHRzIHVuZGVyIHRyYWRlbWFyayBsYXcgZm9yIHVzZSBvZiBzb21lCiAgICB0cmFkZSBuYW1lcywgdHJhZGVtYXJrcywgb3Igc2VydmljZSBtYXJrczsgb3IKCiAgICBmKSBSZXF1aXJpbmcgaW5kZW1uaWZpY2F0aW9uIG9mIGxpY2Vuc29ycyBhbmQgYXV0aG9ycyBvZiB0aGF0CiAgICBtYXRlcmlhbCBieSBhbnlvbmUgd2hvIGNvbnZleXMgdGhlIG1hdGVyaWFsIChvciBtb2RpZmllZCB2ZXJzaW9ucyBvZgogICAgaXQpIHdpdGggY29udHJhY3R1YWwgYXNzdW1wdGlvbnMgb2YgbGlhYmlsaXR5IHRvIHRoZSByZWNpcGllbnQsIGZvcgogICAgYW55IGxpYWJpbGl0eSB0aGF0IHRoZXNlIGNvbnRyYWN0dWFsIGFzc3VtcHRpb25zIGRpcmVjdGx5IGltcG9zZSBvbgogICAgdGhvc2UgbGljZW5zb3JzIGFuZCBhdXRob3JzLgoKICBBbGwgb3RoZXIgbm9uLXBlcm1pc3NpdmUgYWRkaXRpb25hbCB0ZXJtcyBhcmUgY29uc2lkZXJlZCAiZnVydGhlcgpyZXN0cmljdGlvbnMiIHdpdGhpbiB0aGUgbWVhbmluZyBvZiBzZWN0aW9uIDEwLiAgSWYgdGhlIFByb2dyYW0gYXMgeW91CnJlY2VpdmVkIGl0LCBvciBhbnkgcGFydCBvZiBpdCwgY29udGFpbnMgYSBub3RpY2Ugc3RhdGluZyB0aGF0IGl0IGlzCmdvdmVybmVkIGJ5IHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIGEgdGVybSB0aGF0IGlzIGEgZnVydGhlcgpyZXN0cmljdGlvbiwgeW91IG1heSByZW1vdmUgdGhhdCB0ZXJtLiAgSWYgYSBsaWNlbnNlIGRvY3VtZW50IGNvbnRhaW5zCmEgZnVydGhlciByZXN0cmljdGlvbiBidXQgcGVybWl0cyByZWxpY2Vuc2luZyBvciBjb252ZXlpbmcgdW5kZXIgdGhpcwpMaWNlbnNlLCB5b3UgbWF5IGFkZCB0byBhIGNvdmVyZWQgd29yayBtYXRlcmlhbCBnb3Zlcm5lZCBieSB0aGUgdGVybXMKb2YgdGhhdCBsaWNlbnNlIGRvY3VtZW50LCBwcm92aWRlZCB0aGF0IHRoZSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGRvZXMKbm90IHN1cnZpdmUgc3VjaCByZWxpY2Vuc2luZyBvciBjb252ZXlpbmcuCgogIElmIHlvdSBhZGQgdGVybXMgdG8gYSBjb3ZlcmVkIHdvcmsgaW4gYWNjb3JkIHdpdGggdGhpcyBzZWN0aW9uLCB5b3UKbXVzdCBwbGFjZSwgaW4gdGhlIHJlbGV2YW50IHNvdXJjZSBmaWxlcywgYSBzdGF0ZW1lbnQgb2YgdGhlCmFkZGl0aW9uYWwgdGVybXMgdGhhdCBhcHBseSB0byB0aG9zZSBmaWxlcywgb3IgYSBub3RpY2UgaW5kaWNhdGluZwp3aGVyZSB0byBmaW5kIHRoZSBhcHBsaWNhYmxlIHRlcm1zLgoKICBBZGRpdGlvbmFsIHRlcm1zLCBwZXJtaXNzaXZlIG9yIG5vbi1wZXJtaXNzaXZlLCBtYXkgYmUgc3RhdGVkIGluIHRoZQpmb3JtIG9mIGEgc2VwYXJhdGVseSB3cml0dGVuIGxpY2Vuc2UsIG9yIHN0YXRlZCBhcyBleGNlcHRpb25zOwp0aGUgYWJvdmUgcmVxdWlyZW1lbnRzIGFwcGx5IGVpdGhlciB3YXkuCgogIDguIFRlcm1pbmF0aW9uLgoKICBZb3UgbWF5IG5vdCBwcm9wYWdhdGUgb3IgbW9kaWZ5IGEgY292ZXJlZCB3b3JrIGV4Y2VwdCBhcyBleHByZXNzbHkKcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55IGF0dGVtcHQgb3RoZXJ3aXNlIHRvIHByb3BhZ2F0ZSBvcgptb2RpZnkgaXQgaXMgdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIKdGhpcyBMaWNlbnNlIChpbmNsdWRpbmcgYW55IHBhdGVudCBsaWNlbnNlcyBncmFudGVkIHVuZGVyIHRoZSB0aGlyZApwYXJhZ3JhcGggb2Ygc2VjdGlvbiAxMSkuCgogIEhvd2V2ZXIsIGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhlbiB5b3VyCmxpY2Vuc2UgZnJvbSBhIHBhcnRpY3VsYXIgY29weXJpZ2h0IGhvbGRlciBpcyByZWluc3RhdGVkIChhKQpwcm92aXNpb25hbGx5LCB1bmxlc3MgYW5kIHVudGlsIHRoZSBjb3B5cmlnaHQgaG9sZGVyIGV4cGxpY2l0bHkgYW5kCmZpbmFsbHkgdGVybWluYXRlcyB5b3VyIGxpY2Vuc2UsIGFuZCAoYikgcGVybWFuZW50bHksIGlmIHRoZSBjb3B5cmlnaHQKaG9sZGVyIGZhaWxzIHRvIG5vdGlmeSB5b3Ugb2YgdGhlIHZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMKcHJpb3IgdG8gNjAgZGF5cyBhZnRlciB0aGUgY2Vzc2F0aW9uLgoKICBNb3Jlb3ZlciwgeW91ciBsaWNlbnNlIGZyb20gYSBwYXJ0aWN1bGFyIGNvcHlyaWdodCBob2xkZXIgaXMKcmVpbnN0YXRlZCBwZXJtYW5lbnRseSBpZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3RpZmllcyB5b3Ugb2YgdGhlCnZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMsIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgeW91IGhhdmUKcmVjZWl2ZWQgbm90aWNlIG9mIHZpb2xhdGlvbiBvZiB0aGlzIExpY2Vuc2UgKGZvciBhbnkgd29yaykgZnJvbSB0aGF0CmNvcHlyaWdodCBob2xkZXIsIGFuZCB5b3UgY3VyZSB0aGUgdmlvbGF0aW9uIHByaW9yIHRvIDMwIGRheXMgYWZ0ZXIKeW91ciByZWNlaXB0IG9mIHRoZSBub3RpY2UuCgogIFRlcm1pbmF0aW9uIG9mIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgc2VjdGlvbiBkb2VzIG5vdCB0ZXJtaW5hdGUgdGhlCmxpY2Vuc2VzIG9mIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzIG9yIHJpZ2h0cyBmcm9tIHlvdSB1bmRlcgp0aGlzIExpY2Vuc2UuICBJZiB5b3VyIHJpZ2h0cyBoYXZlIGJlZW4gdGVybWluYXRlZCBhbmQgbm90IHBlcm1hbmVudGx5CnJlaW5zdGF0ZWQsIHlvdSBkbyBub3QgcXVhbGlmeSB0byByZWNlaXZlIG5ldyBsaWNlbnNlcyBmb3IgdGhlIHNhbWUKbWF0ZXJpYWwgdW5kZXIgc2VjdGlvbiAxMC4KCiAgOS4gQWNjZXB0YW5jZSBOb3QgUmVxdWlyZWQgZm9yIEhhdmluZyBDb3BpZXMuCgogIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UgaW4gb3JkZXIgdG8gcmVjZWl2ZSBvcgpydW4gYSBjb3B5IG9mIHRoZSBQcm9ncmFtLiAgQW5jaWxsYXJ5IHByb3BhZ2F0aW9uIG9mIGEgY292ZXJlZCB3b3JrCm9jY3VycmluZyBzb2xlbHkgYXMgYSBjb25zZXF1ZW5jZSBvZiB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uCnRvIHJlY2VpdmUgYSBjb3B5IGxpa2V3aXNlIGRvZXMgbm90IHJlcXVpcmUgYWNjZXB0YW5jZS4gIEhvd2V2ZXIsCm5vdGhpbmcgb3RoZXIgdGhhbiB0aGlzIExpY2Vuc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIHByb3BhZ2F0ZSBvcgptb2RpZnkgYW55IGNvdmVyZWQgd29yay4gIFRoZXNlIGFjdGlvbnMgaW5mcmluZ2UgY29weXJpZ2h0IGlmIHlvdSBkbwpub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkgbW9kaWZ5aW5nIG9yIHByb3BhZ2F0aW5nIGEKY292ZXJlZCB3b3JrLCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzby4KCiAgMTAuIEF1dG9tYXRpYyBMaWNlbnNpbmcgb2YgRG93bnN0cmVhbSBSZWNpcGllbnRzLgoKICBFYWNoIHRpbWUgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5CnJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZSBvcmlnaW5hbCBsaWNlbnNvcnMsIHRvIHJ1biwgbW9kaWZ5IGFuZApwcm9wYWdhdGUgdGhhdCB3b3JrLCBzdWJqZWN0IHRvIHRoaXMgTGljZW5zZS4gIFlvdSBhcmUgbm90IHJlc3BvbnNpYmxlCmZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHdpdGggdGhpcyBMaWNlbnNlLgoKICBBbiAiZW50aXR5IHRyYW5zYWN0aW9uIiBpcyBhIHRyYW5zYWN0aW9uIHRyYW5zZmVycmluZyBjb250cm9sIG9mIGFuCm9yZ2FuaXphdGlvbiwgb3Igc3Vic3RhbnRpYWxseSBhbGwgYXNzZXRzIG9mIG9uZSwgb3Igc3ViZGl2aWRpbmcgYW4Kb3JnYW5pemF0aW9uLCBvciBtZXJnaW5nIG9yZ2FuaXphdGlvbnMuICBJZiBwcm9wYWdhdGlvbiBvZiBhIGNvdmVyZWQKd29yayByZXN1bHRzIGZyb20gYW4gZW50aXR5IHRyYW5zYWN0aW9uLCBlYWNoIHBhcnR5IHRvIHRoYXQKdHJhbnNhY3Rpb24gd2hvIHJlY2VpdmVzIGEgY29weSBvZiB0aGUgd29yayBhbHNvIHJlY2VpdmVzIHdoYXRldmVyCmxpY2Vuc2VzIHRvIHRoZSB3b3JrIHRoZSBwYXJ0eSdzIHByZWRlY2Vzc29yIGluIGludGVyZXN0IGhhZCBvciBjb3VsZApnaXZlIHVuZGVyIHRoZSBwcmV2aW91cyBwYXJhZ3JhcGgsIHBsdXMgYSByaWdodCB0byBwb3NzZXNzaW9uIG9mIHRoZQpDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBmcm9tIHRoZSBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCwgaWYKdGhlIHByZWRlY2Vzc29yIGhhcyBpdCBvciBjYW4gZ2V0IGl0IHdpdGggcmVhc29uYWJsZSBlZmZvcnRzLgoKICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIgcmVzdHJpY3Rpb25zIG9uIHRoZSBleGVyY2lzZSBvZiB0aGUKcmlnaHRzIGdyYW50ZWQgb3IgYWZmaXJtZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgRm9yIGV4YW1wbGUsIHlvdSBtYXkKbm90IGltcG9zZSBhIGxpY2Vuc2UgZmVlLCByb3lhbHR5LCBvciBvdGhlciBjaGFyZ2UgZm9yIGV4ZXJjaXNlIG9mCnJpZ2h0cyBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIHlvdSBtYXkgbm90IGluaXRpYXRlIGxpdGlnYXRpb24KKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQKYW55IHBhdGVudCBjbGFpbSBpcyBpbmZyaW5nZWQgYnkgbWFraW5nLCB1c2luZywgc2VsbGluZywgb2ZmZXJpbmcgZm9yCnNhbGUsIG9yIGltcG9ydGluZyB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbiBvZiBpdC4KCiAgMTEuIFBhdGVudHMuCgogIEEgImNvbnRyaWJ1dG9yIiBpcyBhIGNvcHlyaWdodCBob2xkZXIgd2hvIGF1dGhvcml6ZXMgdXNlIHVuZGVyIHRoaXMKTGljZW5zZSBvZiB0aGUgUHJvZ3JhbSBvciBhIHdvcmsgb24gd2hpY2ggdGhlIFByb2dyYW0gaXMgYmFzZWQuICBUaGUKd29yayB0aHVzIGxpY2Vuc2VkIGlzIGNhbGxlZCB0aGUgY29udHJpYnV0b3IncyAiY29udHJpYnV0b3IgdmVyc2lvbiIuCgogIEEgY29udHJpYnV0b3IncyAiZXNzZW50aWFsIHBhdGVudCBjbGFpbXMiIGFyZSBhbGwgcGF0ZW50IGNsYWltcwpvd25lZCBvciBjb250cm9sbGVkIGJ5IHRoZSBjb250cmlidXRvciwgd2hldGhlciBhbHJlYWR5IGFjcXVpcmVkIG9yCmhlcmVhZnRlciBhY3F1aXJlZCwgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgYnkgc29tZSBtYW5uZXIsIHBlcm1pdHRlZApieSB0aGlzIExpY2Vuc2UsIG9mIG1ha2luZywgdXNpbmcsIG9yIHNlbGxpbmcgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24sCmJ1dCBkbyBub3QgaW5jbHVkZSBjbGFpbXMgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgb25seSBhcyBhCmNvbnNlcXVlbmNlIG9mIGZ1cnRoZXIgbW9kaWZpY2F0aW9uIG9mIHRoZSBjb250cmlidXRvciB2ZXJzaW9uLiAgRm9yCnB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwgImNvbnRyb2wiIGluY2x1ZGVzIHRoZSByaWdodCB0byBncmFudApwYXRlbnQgc3VibGljZW5zZXMgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YKdGhpcyBMaWNlbnNlLgoKICBFYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5b3UgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZQpwYXRlbnQgbGljZW5zZSB1bmRlciB0aGUgY29udHJpYnV0b3IncyBlc3NlbnRpYWwgcGF0ZW50IGNsYWltcywgdG8KbWFrZSwgdXNlLCBzZWxsLCBvZmZlciBmb3Igc2FsZSwgaW1wb3J0IGFuZCBvdGhlcndpc2UgcnVuLCBtb2RpZnkgYW5kCnByb3BhZ2F0ZSB0aGUgY29udGVudHMgb2YgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24uCgogIEluIHRoZSBmb2xsb3dpbmcgdGhyZWUgcGFyYWdyYXBocywgYSAicGF0ZW50IGxpY2Vuc2UiIGlzIGFueSBleHByZXNzCmFncmVlbWVudCBvciBjb21taXRtZW50LCBob3dldmVyIGRlbm9taW5hdGVkLCBub3QgdG8gZW5mb3JjZSBhIHBhdGVudAooc3VjaCBhcyBhbiBleHByZXNzIHBlcm1pc3Npb24gdG8gcHJhY3RpY2UgYSBwYXRlbnQgb3IgY292ZW5hbnQgbm90IHRvCnN1ZSBmb3IgcGF0ZW50IGluZnJpbmdlbWVudCkuICBUbyAiZ3JhbnQiIHN1Y2ggYSBwYXRlbnQgbGljZW5zZSB0byBhCnBhcnR5IG1lYW5zIHRvIG1ha2Ugc3VjaCBhbiBhZ3JlZW1lbnQgb3IgY29tbWl0bWVudCBub3QgdG8gZW5mb3JjZSBhCnBhdGVudCBhZ2FpbnN0IHRoZSBwYXJ0eS4KCiAgSWYgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywga25vd2luZ2x5IHJlbHlpbmcgb24gYSBwYXRlbnQgbGljZW5zZSwKYW5kIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBpcyBub3QgYXZhaWxhYmxlIGZvciBhbnlvbmUKdG8gY29weSwgZnJlZSBvZiBjaGFyZ2UgYW5kIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UsIHRocm91Z2ggYQpwdWJsaWNseSBhdmFpbGFibGUgbmV0d29yayBzZXJ2ZXIgb3Igb3RoZXIgcmVhZGlseSBhY2Nlc3NpYmxlIG1lYW5zLAp0aGVuIHlvdSBtdXN0IGVpdGhlciAoMSkgY2F1c2UgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIHRvIGJlIHNvCmF2YWlsYWJsZSwgb3IgKDIpIGFycmFuZ2UgdG8gZGVwcml2ZSB5b3Vyc2VsZiBvZiB0aGUgYmVuZWZpdCBvZiB0aGUKcGF0ZW50IGxpY2Vuc2UgZm9yIHRoaXMgcGFydGljdWxhciB3b3JrLCBvciAoMykgYXJyYW5nZSwgaW4gYSBtYW5uZXIKY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YgdGhpcyBMaWNlbnNlLCB0byBleHRlbmQgdGhlIHBhdGVudApsaWNlbnNlIHRvIGRvd25zdHJlYW0gcmVjaXBpZW50cy4gICJLbm93aW5nbHkgcmVseWluZyIgbWVhbnMgeW91IGhhdmUKYWN0dWFsIGtub3dsZWRnZSB0aGF0LCBidXQgZm9yIHRoZSBwYXRlbnQgbGljZW5zZSwgeW91ciBjb252ZXlpbmcgdGhlCmNvdmVyZWQgd29yayBpbiBhIGNvdW50cnksIG9yIHlvdXIgcmVjaXBpZW50J3MgdXNlIG9mIHRoZSBjb3ZlcmVkIHdvcmsKaW4gYSBjb3VudHJ5LCB3b3VsZCBpbmZyaW5nZSBvbmUgb3IgbW9yZSBpZGVudGlmaWFibGUgcGF0ZW50cyBpbiB0aGF0CmNvdW50cnkgdGhhdCB5b3UgaGF2ZSByZWFzb24gdG8gYmVsaWV2ZSBhcmUgdmFsaWQuCgogIElmLCBwdXJzdWFudCB0byBvciBpbiBjb25uZWN0aW9uIHdpdGggYSBzaW5nbGUgdHJhbnNhY3Rpb24gb3IKYXJyYW5nZW1lbnQsIHlvdSBjb252ZXksIG9yIHByb3BhZ2F0ZSBieSBwcm9jdXJpbmcgY29udmV5YW5jZSBvZiwgYQpjb3ZlcmVkIHdvcmssIGFuZCBncmFudCBhIHBhdGVudCBsaWNlbnNlIHRvIHNvbWUgb2YgdGhlIHBhcnRpZXMKcmVjZWl2aW5nIHRoZSBjb3ZlcmVkIHdvcmsgYXV0aG9yaXppbmcgdGhlbSB0byB1c2UsIHByb3BhZ2F0ZSwgbW9kaWZ5Cm9yIGNvbnZleSBhIHNwZWNpZmljIGNvcHkgb2YgdGhlIGNvdmVyZWQgd29yaywgdGhlbiB0aGUgcGF0ZW50IGxpY2Vuc2UKeW91IGdyYW50IGlzIGF1dG9tYXRpY2FsbHkgZXh0ZW5kZWQgdG8gYWxsIHJlY2lwaWVudHMgb2YgdGhlIGNvdmVyZWQKd29yayBhbmQgd29ya3MgYmFzZWQgb24gaXQuCgogIEEgcGF0ZW50IGxpY2Vuc2UgaXMgImRpc2NyaW1pbmF0b3J5IiBpZiBpdCBkb2VzIG5vdCBpbmNsdWRlIHdpdGhpbgp0aGUgc2NvcGUgb2YgaXRzIGNvdmVyYWdlLCBwcm9oaWJpdHMgdGhlIGV4ZXJjaXNlIG9mLCBvciBpcwpjb25kaXRpb25lZCBvbiB0aGUgbm9uLWV4ZXJjaXNlIG9mIG9uZSBvciBtb3JlIG9mIHRoZSByaWdodHMgdGhhdCBhcmUKc3BlY2lmaWNhbGx5IGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgWW91IG1heSBub3QgY29udmV5IGEgY292ZXJlZAp3b3JrIGlmIHlvdSBhcmUgYSBwYXJ0eSB0byBhbiBhcnJhbmdlbWVudCB3aXRoIGEgdGhpcmQgcGFydHkgdGhhdCBpcwppbiB0aGUgYnVzaW5lc3Mgb2YgZGlzdHJpYnV0aW5nIHNvZnR3YXJlLCB1bmRlciB3aGljaCB5b3UgbWFrZSBwYXltZW50CnRvIHRoZSB0aGlyZCBwYXJ0eSBiYXNlZCBvbiB0aGUgZXh0ZW50IG9mIHlvdXIgYWN0aXZpdHkgb2YgY29udmV5aW5nCnRoZSB3b3JrLCBhbmQgdW5kZXIgd2hpY2ggdGhlIHRoaXJkIHBhcnR5IGdyYW50cywgdG8gYW55IG9mIHRoZQpwYXJ0aWVzIHdobyB3b3VsZCByZWNlaXZlIHRoZSBjb3ZlcmVkIHdvcmsgZnJvbSB5b3UsIGEgZGlzY3JpbWluYXRvcnkKcGF0ZW50IGxpY2Vuc2UgKGEpIGluIGNvbm5lY3Rpb24gd2l0aCBjb3BpZXMgb2YgdGhlIGNvdmVyZWQgd29yawpjb252ZXllZCBieSB5b3UgKG9yIGNvcGllcyBtYWRlIGZyb20gdGhvc2UgY29waWVzKSwgb3IgKGIpIHByaW1hcmlseQpmb3IgYW5kIGluIGNvbm5lY3Rpb24gd2l0aCBzcGVjaWZpYyBwcm9kdWN0cyBvciBjb21waWxhdGlvbnMgdGhhdApjb250YWluIHRoZSBjb3ZlcmVkIHdvcmssIHVubGVzcyB5b3UgZW50ZXJlZCBpbnRvIHRoYXQgYXJyYW5nZW1lbnQsCm9yIHRoYXQgcGF0ZW50IGxpY2Vuc2Ugd2FzIGdyYW50ZWQsIHByaW9yIHRvIDI4IE1hcmNoIDIwMDcuCgogIE5vdGhpbmcgaW4gdGhpcyBMaWNlbnNlIHNoYWxsIGJlIGNvbnN0cnVlZCBhcyBleGNsdWRpbmcgb3IgbGltaXRpbmcKYW55IGltcGxpZWQgbGljZW5zZSBvciBvdGhlciBkZWZlbnNlcyB0byBpbmZyaW5nZW1lbnQgdGhhdCBtYXkKb3RoZXJ3aXNlIGJlIGF2YWlsYWJsZSB0byB5b3UgdW5kZXIgYXBwbGljYWJsZSBwYXRlbnQgbGF3LgoKICAxMi4gTm8gU3VycmVuZGVyIG9mIE90aGVycycgRnJlZWRvbS4KCiAgSWYgY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRoZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcgpvdGhlcndpc2UpIHRoYXQgY29udHJhZGljdCB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UsIHRoZXkgZG8gbm90CmV4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90IGNvbnZleSBhCmNvdmVyZWQgd29yayBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcwpMaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91IG1heQpub3QgY29udmV5IGl0IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiB5b3UgYWdyZWUgdG8gdGVybXMgdGhhdCBvYmxpZ2F0ZSB5b3UKdG8gY29sbGVjdCBhIHJveWFsdHkgZm9yIGZ1cnRoZXIgY29udmV5aW5nIGZyb20gdGhvc2UgdG8gd2hvbSB5b3UgY29udmV5CnRoZSBQcm9ncmFtLCB0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCB0aG9zZSB0ZXJtcyBhbmQgdGhpcwpMaWNlbnNlIHdvdWxkIGJlIHRvIHJlZnJhaW4gZW50aXJlbHkgZnJvbSBjb252ZXlpbmcgdGhlIFByb2dyYW0uCgogIDEzLiBVc2Ugd2l0aCB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgoKICBOb3R3aXRoc3RhbmRpbmcgYW55IG90aGVyIHByb3Zpc2lvbiBvZiB0aGlzIExpY2Vuc2UsIHlvdSBoYXZlCnBlcm1pc3Npb24gdG8gbGluayBvciBjb21iaW5lIGFueSBjb3ZlcmVkIHdvcmsgd2l0aCBhIHdvcmsgbGljZW5zZWQKdW5kZXIgdmVyc2lvbiAzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW50byBhIHNpbmdsZQpjb21iaW5lZCB3b3JrLCBhbmQgdG8gY29udmV5IHRoZSByZXN1bHRpbmcgd29yay4gIFRoZSB0ZXJtcyBvZiB0aGlzCkxpY2Vuc2Ugd2lsbCBjb250aW51ZSB0byBhcHBseSB0byB0aGUgcGFydCB3aGljaCBpcyB0aGUgY292ZXJlZCB3b3JrLApidXQgdGhlIHNwZWNpYWwgcmVxdWlyZW1lbnRzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCnNlY3Rpb24gMTMsIGNvbmNlcm5pbmcgaW50ZXJhY3Rpb24gdGhyb3VnaCBhIG5ldHdvcmsgd2lsbCBhcHBseSB0byB0aGUKY29tYmluYXRpb24gYXMgc3VjaC4KCiAgMTQuIFJldmlzZWQgVmVyc2lvbnMgb2YgdGhpcyBMaWNlbnNlLgoKICBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucyBvZgp0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCmJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bwphZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KCiAgRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUKUHJvZ3JhbSBzcGVjaWZpZXMgdGhhdCBhIGNlcnRhaW4gbnVtYmVyZWQgdmVyc2lvbiBvZiB0aGUgR05VIEdlbmVyYWwKUHVibGljIExpY2Vuc2UgIm9yIGFueSBsYXRlciB2ZXJzaW9uIiBhcHBsaWVzIHRvIGl0LCB5b3UgaGF2ZSB0aGUKb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZWl0aGVyIG9mIHRoYXQgbnVtYmVyZWQKdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbi4gIElmIHRoZSBQcm9ncmFtIGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGUKR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkCmJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCgogIElmIHRoZSBQcm9ncmFtIHNwZWNpZmllcyB0aGF0IGEgcHJveHkgY2FuIGRlY2lkZSB3aGljaCBmdXR1cmUKdmVyc2lvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGNhbiBiZSB1c2VkLCB0aGF0IHByb3h5J3MKcHVibGljIHN0YXRlbWVudCBvZiBhY2NlcHRhbmNlIG9mIGEgdmVyc2lvbiBwZXJtYW5lbnRseSBhdXRob3JpemVzIHlvdQp0byBjaG9vc2UgdGhhdCB2ZXJzaW9uIGZvciB0aGUgUHJvZ3JhbS4KCiAgTGF0ZXIgbGljZW5zZSB2ZXJzaW9ucyBtYXkgZ2l2ZSB5b3UgYWRkaXRpb25hbCBvciBkaWZmZXJlbnQKcGVybWlzc2lvbnMuICBIb3dldmVyLCBubyBhZGRpdGlvbmFsIG9ibGlnYXRpb25zIGFyZSBpbXBvc2VkIG9uIGFueQphdXRob3Igb3IgY29weXJpZ2h0IGhvbGRlciBhcyBhIHJlc3VsdCBvZiB5b3VyIGNob29zaW5nIHRvIGZvbGxvdyBhCmxhdGVyIHZlcnNpb24uCgogIDE1LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5LgoKICBUSEVSRSBJUyBOTyBXQVJSQU5UWSBGT1IgVEhFIFBST0dSQU0sIFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZCkFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQKSE9MREVSUyBBTkQvT1IgT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBQUk9HUkFNICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWQpPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgpQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUgUFJPR1JBTQpJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgUFJPR1JBTSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUgVEhFIENPU1QgT0YKQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgoKICAxNi4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuCgogIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORwpXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1PRElGSUVTIEFORC9PUiBDT05WRVlTClRIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWQpHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBPRiBUSEUKVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFIFBST0dSQU0gKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRgpEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRApQQVJUSUVTIE9SIEEgRkFJTFVSRSBPRiBUSEUgUFJPR1JBTSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFBST0dSQU1TKSwKRVZFTiBJRiBTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgpTVUNIIERBTUFHRVMuCgogIDE3LiBJbnRlcnByZXRhdGlvbiBvZiBTZWN0aW9ucyAxNSBhbmQgMTYuCgogIElmIHRoZSBkaXNjbGFpbWVyIG9mIHdhcnJhbnR5IGFuZCBsaW1pdGF0aW9uIG9mIGxpYWJpbGl0eSBwcm92aWRlZAphYm92ZSBjYW5ub3QgYmUgZ2l2ZW4gbG9jYWwgbGVnYWwgZWZmZWN0IGFjY29yZGluZyB0byB0aGVpciB0ZXJtcywKcmV2aWV3aW5nIGNvdXJ0cyBzaGFsbCBhcHBseSBsb2NhbCBsYXcgdGhhdCBtb3N0IGNsb3NlbHkgYXBwcm94aW1hdGVzCmFuIGFic29sdXRlIHdhaXZlciBvZiBhbGwgY2l2aWwgbGlhYmlsaXR5IGluIGNvbm5lY3Rpb24gd2l0aCB0aGUKUHJvZ3JhbSwgdW5sZXNzIGEgd2FycmFudHkgb3IgYXNzdW1wdGlvbiBvZiBsaWFiaWxpdHkgYWNjb21wYW5pZXMgYQpjb3B5IG9mIHRoZSBQcm9ncmFtIGluIHJldHVybiBmb3IgYSBmZWUuCgogICAgICAgICAgICAgICAgICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKCiAgICAgICAgICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBQcm9ncmFtcwoKICBJZiB5b3UgZGV2ZWxvcCBhIG5ldyBwcm9ncmFtLCBhbmQgeW91IHdhbnQgaXQgdG8gYmUgb2YgdGhlIGdyZWF0ZXN0CnBvc3NpYmxlIHVzZSB0byB0aGUgcHVibGljLCB0aGUgYmVzdCB3YXkgdG8gYWNoaWV2ZSB0aGlzIGlzIHRvIG1ha2UgaXQKZnJlZSBzb2Z0d2FyZSB3aGljaCBldmVyeW9uZSBjYW4gcmVkaXN0cmlidXRlIGFuZCBjaGFuZ2UgdW5kZXIgdGhlc2UgdGVybXMuCgogIFRvIGRvIHNvLCBhdHRhY2ggdGhlIGZvbGxvd2luZyBub3RpY2VzIHRvIHRoZSBwcm9ncmFtLiAgSXQgaXMgc2FmZXN0CnRvIGF0dGFjaCB0aGVtIHRvIHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBmaWxlIHRvIG1vc3QgZWZmZWN0aXZlbHkKc3RhdGUgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdAp0aGUgImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KCiAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgcHJvZ3JhbSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgogICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KCiAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgogICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCgogIElmIHRoZSBwcm9ncmFtIGRvZXMgdGVybWluYWwgaW50ZXJhY3Rpb24sIG1ha2UgaXQgb3V0cHV0IGEgc2hvcnQKbm90aWNlIGxpa2UgdGhpcyB3aGVuIGl0IHN0YXJ0cyBpbiBhbiBpbnRlcmFjdGl2ZSBtb2RlOgoKICAgIDxwcm9ncmFtPiAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KICAgIFRoaXMgcHJvZ3JhbSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFk7IGZvciBkZXRhaWxzIHR5cGUgYHNob3cgdycuCiAgICBUaGlzIGlzIGZyZWUgc29mdHdhcmUsIGFuZCB5b3UgYXJlIHdlbGNvbWUgdG8gcmVkaXN0cmlidXRlIGl0CiAgICB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnM7IHR5cGUgYHNob3cgYycgZm9yIGRldGFpbHMuCgpUaGUgaHlwb3RoZXRpY2FsIGNvbW1hbmRzIGBzaG93IHcnIGFuZCBgc2hvdyBjJyBzaG91bGQgc2hvdyB0aGUgYXBwcm9wcmlhdGUKcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBPZiBjb3Vyc2UsIHlvdXIgcHJvZ3JhbSdzIGNvbW1hbmRzCm1pZ2h0IGJlIGRpZmZlcmVudDsgZm9yIGEgR1VJIGludGVyZmFjZSwgeW91IHdvdWxkIHVzZSBhbiAiYWJvdXQgYm94Ii4KCiAgWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHNjaG9vbCwKaWYgYW55LCB0byBzaWduIGEgImNvcHlyaWdodCBkaXNjbGFpbWVyIiBmb3IgdGhlIHByb2dyYW0sIGlmIG5lY2Vzc2FyeS4KRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcywgYW5kIGhvdyB0byBhcHBseSBhbmQgZm9sbG93IHRoZSBHTlUgR1BMLCBzZWUKPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtCmludG8gcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdQptYXkgY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGgKdGhlIGxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLiAgQnV0IGZpcnN0LCBwbGVhc2UgcmVhZAo8aHR0cDovL3d3dy5nbnUub3JnL3BoaWxvc29waHkvd2h5LW5vdC1sZ3BsLmh0bWw+Lgo=]]></data>
	</file>
	<file>
	  <filename>/function.admin_couponformtab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFByb21vdGlvbnMgKGMpIDIwMDggYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGNyZWF0aW5nLCBpbnRlcmZhY2luZyB3aXRoCiMgIGFuZCBtYW5hZ2luZyBwcm9tb3Rpb25zIG9yIHNhbGVzIGluIHRoZSBFLWNvbWVtcmNlIHN1aXRlLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CgplY2hvICR0aGlzLT5TaG93VGVtcGxhdGVMaXN0KCRpZCwkcmV0dXJuaWQsJ2NvdXBvbmZvcm1fJywKCQkJICAgICBQcm9tb3Rpb25zOjpORVdDT1VQT05GT1JNX1RFTVBMQVRFLAoJCQkgICAgICdjb3Vwb25mb3JtJywKCQkJICAgICBQcm9tb3Rpb25zOjpERkxUQ09VUE9ORk9STV9URU1QTEFURSwKCQkJICAgICAkdGhpcy0+TGFuZygnY291cG9uZm9ybXRlbXBsYXRlX2FkZGVkaXQnKSk7CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_dflt_templates_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFByb21vdGlvbnMgKGMpIDIwMDggYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGNyZWF0aW5nLCBpbnRlcmZhY2luZyB3aXRoCiMgIGFuZCBtYW5hZ2luZyBwcm9tb3Rpb25zIG9yIHNhbGVzIGluIHRoZSBFLWNvbWVtcmNlIHN1aXRlLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CgokaW5wdXRfY291cG9uZm9ybXRlbXBsYXRlID0KICAkdGhpcy0+R2V0UHJlZmVyZW5jZShQcm9tb3Rpb25zOjpORVdDT1VQT05GT1JNX1RFTVBMQVRFKTsKCiRzbWFydHktPmFzc2lnbignaW5mb19kZmx0X3RlbXBsYXRlJywKCQkkdGhpcy0+TGFuZygnZGVmYXVsdF90ZW1wbGF0ZV9ub3RpY2UnKSk7Cgokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsCgkJJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluX3NldGRmbHR0ZW1wbGF0ZXMnLAoJCQkJICAgICAgICRyZXR1cm5pZCkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLAoJCSR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKJHNtYXJ0eS0+YXNzaWduKCdsZWdlbmRfY291cG9uZm9ybXRlbXBsYXRlJywKCQkkdGhpcy0+TGFuZygndGl0bGVfY291cG9uZm9ybV9kZmx0dGVtcGxhdGUnKSk7CiRzbWFydHktPmFzc2lnbigncHJvbXB0X2NvdXBvbmZvcm10ZW1wbGF0ZScsCgkJJHRoaXMtPkxhbmcoJ3Byb21wdF90ZW1wbGF0ZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9jb3Vwb25mb3JtdGVtcGxhdGUnLAoJCSR0aGlzLT5DcmVhdGVUZXh0QXJlYShmYWxzZSwkaWQsJGlucHV0X2NvdXBvbmZvcm10ZW1wbGF0ZSwKCQkJCSAgICAgICdpbnB1dF9jb3Vwb25mb3JtdGVtcGxhdGUnKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0X2NvdXBvbmZvcm10ZW1wbGF0ZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0X2NvdXBvbmZvcm10ZW1wbGF0ZScsCgkJCQkJICR0aGlzLT5MYW5nKCdzdWJtaXQnKSkpOwokc21hcnR5LT5hc3NpZ24oJ3Jlc2V0X2NvdXBvbmZvcm10ZW1wbGF0ZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwncmVzZXRfY291cG9uZm9ybXRlbXBsYXRlJywKCQkJCQkgJHRoaXMtPkxhbmcoJ3Jlc2V0dG9mYWN0b3J5JykpKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5fZGZsdF90ZW1wbGF0ZXNfdGFiLnRwbCcpOwoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/function.admin_promotionstab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFByb21vdGlvbnMgKGMpIDIwMDggYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGNyZWF0aW5nLCBpbnRlcmZhY2luZyB3aXRoCiMgIGFuZCBtYW5hZ2luZyBwcm9tb3Rpb25zIG9yIHNhbGVzIGluIHRoZSBFLWNvbWVtcmNlIHN1aXRlLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CmlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbihQcm9tb3Rpb25zOjpNQUlOX1BFUk0pICkgZXhpdDsKCi8vCi8vIGluaXRpYWxpemUKLy8KCi8vIAovLyBnZXQgdGhlIGRhdGEKLy8KJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5QUk9NT1RJT05TX1RBQkxFOwokZGF0YSA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5KTsKaWYoIGlzX2FycmF5KCRkYXRhKSApCiAgewogICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJGRhdGEpOyAkaSsrICkKICAgICAgewoJJHJlYyA9JiAkZGF0YVskaV07CgkkcmVjWydlZGl0X3VybCddID0gJHRoaXMtPkNyZWF0ZVVSTCgkaWQsJ2FkbWluX2FkZHByb21vJywkcmV0dXJuaWQsYXJyYXkoJ3Byb21vaWQnPT4kcmVjWydpZCddKSk7CgkkcmVjWydlZGl0X2xpbmsnXSA9ICR0aGlzLT5DcmVhdGVJbWFnZUxpbmsoJGlkLCdhZG1pbl9hZGRwcm9tbycsJHJldHVybmlkLAoJCQkJCQkgICAkdGhpcy0+TGFuZygnZWRpdCcpLCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLAoJCQkJCQkgICBhcnJheSgncHJvbW9pZCc9PiRyZWNbJ2lkJ10pKTsKCSRyZWNbJ2RlbGV0ZV91cmwnXSA9ICR0aGlzLT5DcmVhdGVVUkwoJGlkLCdhZG1pbl9kZWxwcm9tbycsJHJldHVybmlkLGFycmF5KCdwcm9tb2lkJz0+JHJlY1snaWQnXSkpOwoJJHJlY1snZGVsZXRlX2xpbmsnXSA9ICR0aGlzLT5DcmVhdGVJbWFnZUxpbmsoJGlkLCdhZG1pbl9kZWxwcm9tbycsJHJldHVybmlkLAoJCQkJCQkgICAgICR0aGlzLT5MYW5nKCdkZWxldGUnKSwnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLAoJCQkJCQkgICAgYXJyYXkoJ3Byb21vaWQnPT4kcmVjWydpZCddKSwnJywKCQkJCQkJICAgICR0aGlzLT5MYW5nKCdyZWFsbHlfZGVsZXRlX3Byb21vdGlvbicpKTsKCSRyZWNbJ3N0YXJ0X2RhdGVfdXQnXSA9IGNnZV91dGlsczo6dW5peF90aW1lKCRyZWNbJ3N0YXJ0X2RhdGUnXSk7CgkkcmVjWydlbmRfZGF0ZV91dCddID0gY2dlX3V0aWxzOjp1bml4X3RpbWUoJHJlY1snZW5kX2RhdGUnXSk7CiAgICAgIH0KICB9CgovLwovLyBnaXZlIGV2ZXJ5dGhpbmcgdG8gc21hcnR5Ci8vCiRzbWFydHktPmFzc2lnbignYWRkbGluaycsCgkJJHRoaXMtPkNyZWF0ZUltYWdlTGluaygkaWQsJ2FkbWluX2FkZHByb21vJywkcmV0dXJuaWQsCgkJCQkgICAgICAgJHRoaXMtPkxhbmcoJ3Byb21wdF9hZGRwcm9tbycpLAoJCQkJICAgICAgICdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsCgkJCQkgICAgICAgYXJyYXkoKSwnJywnJyxmYWxzZSkpOwppZiggaXNfYXJyYXkoJGRhdGEpICkKICB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ3Byb21vdGlvbnMnLCRkYXRhKTsKICB9CgovLwovLyBkaXNwbGF5IHRoZSB0ZW1wYWx0ZQovLwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX3Byb21vdGlvbnN0YWIudHBsJyk7CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_settingstab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFByb21vdGlvbnMgKGMpIDIwMDggYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGNyZWF0aW5nLCBpbnRlcmZhY2luZyB3aXRoCiMgIGFuZCBtYW5hZ2luZyBwcm9tb3Rpb25zIG9yIHNhbGVzIGluIHRoZSBFLWNvbWVtcmNlIHN1aXRlLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CmlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSApIGV4aXQ7CgovLwovLyBpbml0aWFsaXplCi8vCnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2xpYi9jbGFzcy5wcm9tb3Rpb24ucGhwJyk7CgovLwovLyBzZXR1cAovLwokcHJvZHVjdHNfbW9kdWxlID0mICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgnUHJvZHVjdHMnKTsKCi8vCi8vIGdhdGhlciBkYXRhCi8vCgovLwovLyBnaXZlIGV2ZXJ5dGhpbmcgdG8gc21hcnR5Ci8vCiRzbWFydHktPmFzc2lnbignY3VycmVuY3lfc3ltYm9sJywkcHJvZHVjdHNfbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdwcm9kdWN0X2N1cnJlbmN5c3ltYm9sJywnJCcpKTsKJHBlcmlvZHMgPSBhcnJheSgpOwpmb3IoICRpID0gMDsgJGkgPCAzNjsgJGkrKyApCiAgewogICAgJHBlcmlvZHNbJGkrMV0gPSAkaSsxOwogIH0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tb3Rpb25fcGVyaW9kcycsJHBlcmlvZHMpOwokcHJvbW90eXBlcyA9IGFycmF5KCk7CiRwcm9tb3R5cGVzW1BST01PVElPTlNfT0ZGRVJfUEVSQ0VOVF0gPSAkdGhpcy0+TGFuZyhQUk9NT1RJT05TX09GRkVSX1BFUkNFTlQpOwokcHJvbW90eXBlc1tQUk9NT1RJT05TX09GRkVSX0RJU0NPVU5UXSA9ICR0aGlzLT5MYW5nKFBST01PVElPTlNfT0ZGRVJfRElTQ09VTlQpOwokcHJvbW90eXBlc1tQUk9NT1RJT05TX09GRkVSX1BST0RVQ1RdID0gJHRoaXMtPkxhbmcoUFJPTU9USU9OU19PRkZFUl9QUk9EVUNUKTsKJHNtYXJ0eS0+YXNzaWduKCdvZmZlcl90eXBlcycsJHByb21vdHlwZXMpOwokc21hcnR5LT5hc3NpZ24oJ2RmbHRfcHJvbW90aW9uX3BlcmlvZCcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RmbHRfcHJvbW90aW9uX3BlcmlvZCcsMSkpOwokc21hcnR5LT5hc3NpZ24oJ2RmbHRfb2ZmZXJfdHlwZScsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RmbHRfb2ZmZXJfdHlwZScsUFJPTU9USU9OU19PRkZFUl9QRVJDRU5UKSk7CiRzbWFydHktPmFzc2lnbignZGZsdF9vZmZlcl9kYXRhJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGZsdF9vZmZlcl9kYXRhJywnLjEnKSk7CiRzbWFydHktPmFzc2lnbignaW1hZ2VfZGlyJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaW1hZ2VfZGlyJywnJykpOwokc21hcnR5LT5hc3NpZ24oJ2Vycm9yX2ludmFsaWRfY29kZScsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Vycm9yX2ludmFsaWRfY29kZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdlcnJvcl9lbXB0eV9jb2RlJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZXJyb3JfZW1wdHlfY29kZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdtc2dfdmFsaWRfY29kZScsJHRoaXMtPkdldFByZWZlcmVuY2UoJ21zZ192YWxpZF9jb2RlJykpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsJHRoaXMtPkNHQ3JlYXRlRm9ybVN0YXJ0KCRpZCwnYWRtaW5fc2F2ZXNldHRpbmdzJykpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKLy8KLy8gcHJvY2VzcyB0ZW1wbGF0ZQovLwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX3NldHRpbmdzdGFiLnRwbCcpOwoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiNBCiRsYW5nWydhZGQnXSA9ICdBZGQnOwoKCiNCCgoKI0MKJGxhbmdbJ2NhbmNlbCddID0gJ0NhbmNlbCc7CiRsYW5nWydjb3Vwb25mb3JtdGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkZCBvciBFZGl0IGEgQ291cG9uIEZvcm0gVGVtcGxhdGUnOwoKCiNECiRsYW5nWydkZWxldGUnXSA9ICdEZWxldGUnOwokbGFuZ1snZGVmYXVsdF90ZW1wbGF0ZV9ub3RpY2UnXSA9IDw8PEVPVAo8c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoZSBjb250ZW50cyBvZiB0aGVzZSB0ZXh0IGFyZWFzIGFyZSB1c2VkIHRvIGRldGVybWluZSB0aGUgZGVmYXVsdCBjb250ZW50IG9mIHRlbXBsYXRlcyB3aGVuIHlvdSBjbGljayAmcXVvdDtBZGQgVGVtcGxhdGUmcXVvdDsgaW4gdGhlIGFwcHJvcHJpYXRlIHRlbXBsYXRlIHRhYi4gIEVkaXRpbmcgb25lIG9mIHRoZXNlIHRleHQgYXJlYXMgd2lsbCBoYXZlIG5vIGltbWVkaWF0ZSBlZmZlY3Qgb24geW91ciB3ZWJzaXRlLgpFT1Q7CgoKI0UKJGxhbmdbJ2VkaXQnXSA9ICdFZGl0JzsKJGxhbmdbJ2Vycm9yX2FscmVhZHlfcHJvZCddID0gJ0EgcHJvZHVjdCBjb25kaXRpb24gYWxyZWFkeSBleGlzdHMgaW4gdGhlIGNvbmRpdGlvbiBsaXN0JzsKJGxhbmdbJ2Vycm9yX2R1cGxpY2F0ZV9jb25kaXRpb24nXSA9ICdBIGR1cGxpY2F0ZSBjb25kaXRpb24gYWxyZWFkeSBleGlzdHMgaW4gdGhlIGNvbmRpdGlvbiBsaXN0JzsKJGxhbmdbJ2Vycm9yX2R1cGxpY2F0ZV90eXBlJ10gPSAnQSBkdXBsaWNhdGUgcHJvZHVjdCBjb25kaXRpb24gYWxyZWFkeSBleGlzdHMnOwokbGFuZ1snZXJyb3JfZW1wdHlfY29kZSddID0gJ1BsZWFzZSBlbnRlciBhIHZhbGlkIHZhbHVlJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRfY29kZSddID0gJ1Byb21vdGlvbiBDb2RlIG5vdCByZWNvZ25pc2VkJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRfZmV1X2dyb3VwJ10gPSAnSW52YWxpZCBGRVUgR3JvdXAgTmFtZSBTcGVjaWZpZWQnOwokbGFuZ1snZXJyb3JfaW52YWxpZF9vcmRlcl9hbW91bnQnXSA9ICdUaGUgb3JkZXIgYW1vdW50IHNwZWNpZmllZCBpcyBpbnZhbGlkJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRfcHJvZHVjdF9jYXRlZ29yeSddID0gJ0F0IGxlYXN0IG9uZSBpbnZhbGlkIHByb2R1Y3QgY2F0ZWdvcnknOwokbGFuZ1snZXJyb3JfaW52YWxpZF9wcm9kdWN0J10gPSAnSW52YWxpZCBwcm9kdWN0IGlkIHNwZWNpZmllZCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkX3ZhbHVlJ10gPSAnSW52YWxpZCBWYWx1ZSBTcGVjaWZpZWQnOwokbGFuZ1snZXJyb3JfbWlzc2luZ19wYXJhbSddID0gJ0EgcmVxdWlyZWQgaW5wdXQgcGFyYW1ldGVyIGlzIG1pc3NpbmcnOwokbGFuZ1snZXJyb3JfbW9kdWxlX25vdF9mb3VuZCddID0gJ0EgUmVxdWlyZWQgTW9kdWxlICglcykgQ291bGQgbm90IGJlIGZvdW5kJzsKJGxhbmdbJ2Vycm9yX25hbWVfZXhpc3RzJ10gPSAnQSBwcm9tb3Rpb24gYnkgdGhhdCBuYW1lIGFscmVhZHkgZXhpc3RzJzsKJGxhbmdbJ2Vycm9yX25vb2ZmZXJfZGF0YSddID0gJ1RoZXJlIGlzIG5vIHZhbHVlIGFzc29jaWF0ZWQgd2l0aHQgaGUgb2ZmZXIgdHlwZSc7CiRsYW5nWydlcnJvcl9wcm9tb3Rpb25fbmFtZSddID0gJ0VhY2ggcHJvbW90aW9uIG11c3QgaGF2ZSBhIG5hbWUnOwokbGFuZ1snZXJyb3Jfc2F2ZV9wcm9tb3Rpb24nXSA9ICdBbiBlcnJvciBvY2N1cnJlZCB0cnlpbmcgdG8gc2F2ZSB0aGlzIHByb21vdGlvbic7CiRsYW5nWydlcnJvcl9zcGVjaWZ5X3ZhbHVlJ10gPSAnUGxlYXNlIHNwZWNpZnkgYSB2YWx1ZSc7CgojRgokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnUHJvbW90aW9uIE1hbmFnZXInOwoKI0cKCgojSAokbGFuZ1snaGVscCddID0gPDw8RU9UCjxoMz5XaGF0IGRvZXMgdGhpcyBkbz88L2gzPgo8cD5UaGlzIG1vZHVsZSB3b3JrcyBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBQcm9kdWN0cyBhbmQgT3JkZXJzIG1vZHVsZSB0byBhbGxvdyBjcmVhdGluZyBhbmQgbWFuYWdpbmcgdGltZSBsaW1pdGVkIHByb21vdGlvbnMgZm9yIHRoZSBwcm9kdWN0cyBvbiB5b3VyIGUtY29tbWVyY2Ugd2Vic2l0ZS48L3A+CjxoMz5GZWF0dXJlczo8L2gzPgo8dWw+CjxsaT48dT5BbGwgcHJvbW90aW9ucyBhcmUgdGltZSBsaW1pdGVkLjwvdT48YnIvPjxici8+PC9saT4KPGxpPjx1PkEgcHJvbW90aW9uIGNhbiBoYXZlIG9uZSBvciBtb3JlIGNvbmRpdGlvbnMgdG8gaW5kaWNhdGUgZWxpZ2liaWxpdHkuPC91PgogIDxwPklmIGEgcHJvbW90aW9uIGlzIGRlZmluZWQgd2l0aCB0d28gb3IgbW9yZSBjb25kaXRpb25zLCBhbGwgb2YgdGhvc2UgY29uZGl0aW9ucyBtdXN0IGJlIG1ldCBpbiBvcmRlciBmb3IgdGhlIGN1c3RvbWVyIHRvIGJlIGVsaWdpYmxlIGZvciB0aGUgcHJvbW90aW9uLjwvcD4KICA8cD5BIG51bWJlciBvZiBjb25kaXRpb24gdHlwZXMgZXhpc3QuLi4gSG93ZXZlciBzb21lIG9mIHRoZW0gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXJzLiAgaS5lOiAgWW91IGNhbm5vdCBoYXZlIHR3byBkaWZmZXJlbnQgdHlwZSBvZiBwcm9kdWN0IGNvbmRpdGlvbnMuPC9wPgogIDx1bD4KPGxpPjx1PlJlcXVpcmUgbWVtYmVyc2hpcCBpbiBhbiBGRVUgR3JvdXA6PC91PgogIDxwPllvdSBjYW4gZW50ZXIgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBGRVUgZ3JvdXAgbmFtZXMuICBUaGUgbG9nZ2VkIGluIHdlYnNpdGUgdmlzaXRvciBtdXN0IGJlIGEgbWVtYmVyIG9mIG9uZSBvZiB0aGVzZSBncm91cHMgdG8gYmUgZWxpZ2libGUgZm9yIHRoZSBwcm9tb3Rpb24uPC9wPjwvbGk+CiAgPGxpPjx1PlJlcXVpcmUgYSBtaW5pbXVtIHB1cmNoYXNlIGFtb3VudDo8L3U+CiAgPHA+SW4gb3JkZXIgZm9yIGEgY3VzdG9tZXIgdG8gbWVldCB0aGlzIGNvbmRpdGlvbiwgdGhlIHByZS10YXgvcHJlLXNoaXBwaW5nIHRvdGFsIGZvciB0aGVpciBvcmRlciBtdXN0IG1lZXQgdGhlIHNwZWNpZmllZCBtaW5pbXVtIHZhbHVlLjwvcD48L2xpPgogIDxsaT48dT5SZXF1aXJlIHRoZSBwdXJjaGFzZSBvZiBhIHNwZWNpZmljIHByb2R1Y3Q6PC91PgogIDxwPkluIG9yZGVyIGZvciBhIGN1c3RvbWVyIHRvIG1lZXQgdGhpcyBjb25kaXRpb24sIGhpcyBjYXJ0IG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgcHJvZHVjdCBtYXRjaGluZyB0aGUgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgcHJvZHVjdCBpZHMgZW50ZXJlZC48L3A+PC9saT4KICA8bGk+PHU+UmVxdWlyZSBwdXJjaGFzZSBvZiBhdGxlYXN0IG9uZSBwcm9kdWN0IGluIGEgY2F0ZWdvcnk6PC91PgogIDxwPkluIG9yZGVyIGZvciBhIGN1c3RvbWVyIHRvIG1lZXQgdGhpcyBjb25kaXRpb24sIGhpcyBjYXJ0IG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgcHJvZHVjdCB0aGF0IGlzIHdpdGhpbiBhdCBsZWFzdCBvbmUgb2YgdGhlIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGNhdGVnb3J5IG5hbWVzIChmcm9tIHRoZSBwcm9kdWN0cyBtb2R1bGUpIHNwZWNpZmllZC48L3A+PC9saT4KICA8bGk+PHU+UmVxdWlyZSBwdXJjaGFzZSBvZiBhdGxlYXN0IG9uZSBwcm9kdWN0IGluIGEgaGllcmFyY2h5OjwvdT4KICA8cD5JbiBvcmRlciBmb3IgYSBjdXN0b21lciB0byBtZWV0IHRoaXMgY29uZGl0aW9uLCBoaXMgY2FydCBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIHByb2R1Y3QgdGhhdCBpcyB3aXRoaW4gdGhlIHNwZWNpZmllZCBwcm9kdWN0cyBtb2R1bGUgaGllcmFyY2h5LjwvcD4KICA8cD5IaWVyYXJjaHkgbmFtZXMgY2FuIGJlIHNwZWNpZmllZCBpbiB0aGUgZm9ybSBvZiAmcXVvdDtQYXJlbnQuUGFyZW50LkNoaWxkJnF1b3Q7IGkuZTogJnF1b3Q7Q2xvdGhpbmcuVGVudHMmcXVvdDsuICBIaWVyYXJjaHkgbmFtZXMgYXJlIG5vdCBjYXNlIHNlbnNpdGl2ZS4gIFdpbGRjYXJkcyBjYW4gYmUgc3BlY2ZpZmllZCBieSB1c2luZyB0aGUgKiBjaGFyYWN0ZXIuICBpLmU6ICZxdW90O0Nsb3RoaW5nKiZxdW90Oy48L3A+PC9saT4KICA8bGk+PHU+UmVxdWlyZSBhIENvdXBvbiBDb2RlOjwvdT4KICA8cD5JbiBvcmRlciBmb3IgYSBjdXN0b21lciB0byBtZWV0IHRoaXMgY29uZGl0aW9uLCBoZSBtdXN0IGhhdmUgc3VwcGxpZWQgdGhlIGNvdXBvbiBjb2RlIHRoYXQgbWF0Y2hlcyB0aGlzIGNvbmRpdGlvbi48L3A+CiAgPHA+SW4gb3JkZXIgdG8gYWxsb3cgY3VzdG9tZXJzIHRvIGVudGVyIGNvdXBvbiBjb2RlcywgeW91IG5lZWQgdG8gYWRkIGEgdGFnIGludG8geW91ciBwYWdlIHRlbXBsYXRlIG9yIHBhZ2UgY29udGVudCBsaWtlIHtQcm9tb3Rpb25zfS4gIFRoaXMgd2lsbCBkaXNwbGF5IGEgZm9ybSB0aGF0IGFsbG93cyB5b3VyIHVzZXJzIHRvIGVudGVyIGNvdXBvbiBjb2Rlcy4gIENvdXBvbiBjb2RlcyBhcmUgcmVtZW1iZXJlZCB1bnRpbCB0aGUgdXNlciBjbG9zZXMgdGhlIGJyb3dzZXIuPC9wPjwvbGk+CiAgPGxpPjx1PlJlcXVpcmUgYSBtaW5pbXVtIG9yZGVyIHdlaWdodDo8L3U+CiAgPHA+SW4gb3JkZXIgZm9yIGEgY3VzdG9tZXIgdG8gbWVldCB0aGlzIGNvbmRpdGlvbiwgdGhlIHN1bSB0b3RhbCBvZiBhbGwgb2YgdGhlIHdlaWdodCB2YWx1ZXMgZm9yIHRoZSBpdGVtcyBpbiBoaXMgY2FydCBtdXN0IG1lZXQgb3IgZXhjZWVkIHRoZSB2YWx1ZSBzcGVjaWZpZWQuPC9wPjwvbGk+CiAgPC91bD4KPC9saT4KCjxsaT48dT5FYWNoIHByb21vdGlvbiBjYW4gaGF2ZSBhIGRpZmZlcmVudCAmcXVvdDtvZmZlciZxdW90OzwvdT4KPHA+QSBudW1iZXIgb2YgZGlmZmVyZW50IG9mZmVycyB0eXBlcyBhcmUgYXZhaWxhYmxlOjwvcD4KICA8dWw+CjxsaT48dT5QZXJjZW50YWdlIG9mZiBvcmRlciB0b3RhbDo8L3U+CjxwPlRoaXMgb2ZmZXIgdHlwZSBhbGxvd3MgeW91IHRvIHNwZWNpZnkgYSBmbG9hdGluZyBwb2ludCB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDEgdG8gaW5kaWNhdGUgYSBwZXJjZW50YWdlIG9mZi4gIGkuZTogMC4xIGluZGljYXRlcyAxMCUgb2ZmLiAgIER1cmluZyB0aGUgY2hlY2tvdXQgcHJvY2VzcywgYW55IG5vbiB0YXgsIG9yIG5vbiBzaGlwcGluZyBpdGVtIGluIHRoZSBvcmRlciB3aWxsIGJlIHJlZHVjZWQgaW4gcHJpY2UgYnkgdGhlIHNwZWNpZmllZCBhbW91bnQuPC9wPjwvbGk+CjxsaT48dT5SZWR1Y2Ugb3JkZXIgdG90YWwgYnkgYSBzcGVjaWZpZWQgYW1vdW50OjwvdT4KPHA+VGhpcyBvZmZlciB0eXBlIGFsbG93cyB5b3UgdG8gcmVkdWNlIHRoZSBhbW91bnQgb2YgdGhlIG9yZGVyIGJ5IGEgY2VydGFpbiBkb2xsYXIgZmlndXJlLiAgVGhpcyBkb2xsYXIgZmlndXJlIHdpbGwgYmUgYWRkZWQgYXMgYSBkaXNjb3VudCBpdGVtIGludG8gdGhlIG9yZGVyIGxpbmUgaXRlbXMgYW5kIHdpbGwgYXBwZWFyIG9uIHRoZSBpbnZvaWNlLjwvcD48L2xpPgo8bGk+PHU+UmVjZWl2ZSBhIEZyZWUgUHJvZHVjdDo8L3U+CjxwPlRoaXMgb2ZmZXIgdHlwZSBhbGxvd3MgeW91IHRvIHNwZWNpZnkgYSBwcm9kdWN0IGlkIHRvIGF1dG9tYXRpY2FsbHkgaW5jbHVkZSBpbiB0aGUgb3JkZXIgYXQgbm8gY29zdC4gIFRoaXMgcHJvZHVjdCB3aWxsIGJlIGFkZGVkIGFzIGEgcHJvZHVjdCBpdGVtIGludG8gdGhlIG9yZGVyIGxpbmUgaXRlbXMsIGJ1dCB3aWxsIGFwcGVhciBhdCBubyBjb3N0LjwvcD48L2xpPgo8bGk+PHU+RGlzY291bnQgdGhlIGFwcGxpY2FibGUgcHJvZHVjdHMgYnkgYSBwZXJjZW50YWdlOjwvdT4KPHA+VGhpcyBvZmZlciB0eXBlIG9ubHkgd29ya3MgaWYgYXQgbGVhc3Qgb25lIHByb2R1Y3QgY29uZGl0aW9uIGlzIHNwZWNpZmllZC4gIElmIGEgcHJvZHVjdCBjb25kaXRpb24gaXMgc3BlY2lyaWVkLCBhbmQgbWF0Y2hlcywgdGhpcyBvZmZlciB0eXBlIHdpbGwgZGlzY291bnQgdGhlIG1hdGNoaW5nIHByb2R1Y3RzIGZyb20gdGhlIGN1c3RvbWVyIG9yZGVyIGJ5IHRoZSBzcGVjaWZpZWQgdmFsdWUuPC9wPi4KICA8L3VsPgo8L2xpPgo8bGk+PHU+QWxsb3dzIHdlYnNpdGUgdmlzaXRvcnMgdG8gZW50ZXIgb25lIG9yIG1vcmUgY291cG9uIGNvZGVzPC91Pjxici8+PGJyLz48L2xpPgo8bGk+PHU+RGlzY291bnRzIGFyZSBjYWxjdWxhdGVkIGFuZCBhcHBsaWVkIHRvIHRoZSBvcmRlciBkdXJpbmcgdGhlIGNoZWNrb3V0IHByb2Nlc3MuPC91Pjxici8+PGJyLz48L2xpPgo8bGk+PHU+SWYgYSB3ZWIgY3VzdG9tZXIgaXMgZWxpZ2libGUgZm9yIG11bHRpcGxlIHByb21vdGlvbnMsIHRoZSBvbmUgd2l0aCB0aGUgZ3JlYXRlc3QgdmFsdWUgaXMgYXBwbGllZC48L3U+PC9saT4KPC91bD4KPGJyLz4KPGgzPkhvdyBEbyBJIFVzZSBJdDo8L2gzPgo8b2w+CiAgPGxpPjEuIEluc3RhbGwgYW5kIGNvbmZpZ3VyZSB0aGUgbW9kdWxlPC9saT4KICA8bGk+Mi4gQ3JlYXRlIGF0IGxlYXN0IG9uZSBwcm9tb3Rpb248L2xpPgogIDxsaT4zLiBTcGVjaWZ5IHRoaXMgbW9kdWxlIGFzIHRoZSAmcXVvdDtQcm9tb3Rpb25zJnF1b3Q7IG1vZHVsZSB3aXRoaW4gdGhlIE9yZGVycyBQcmVmZXJlbmNlcy48L2xpPgogIDxsaT40LiA8ZW0+KG9wdGlvbmFsKTwvZW0+IEFkZCB7UHJvbW90aW9uc30gdG8gYSBwYWdlIHRlbXBsYXRlIG9yIHBhZ2UgY29udGVudC48L2VtPjwvbGk+Cjwvb2w+CjxoMz5FeGFtcGxlOjwvaDM+CjxwPkluIHRoaXMgZXhhbXBsZSB3ZSB3aWxsIGNyZWF0ZSBhIHByb21vdGlvbiBsaWtlICZxdW90OzEwJSBvZmYgYWxsIG9yZGVycyBvdmVyICQxMDAsIHdpdGggY291cG9uIGNvZGUmcXVvdDs6PC9wPgo8dWw+CiAgPGxpPjEuIDx1PkNyZWF0ZSBhIG5ldyBwcm9tb3Rpb248L3U+CiAgPHA+TmF2aWdhdGUgdG8gdGhlIHByb21vdGlvbnMgbW9kdWxlIGFkbWluIHBhbmVsLCBhbmQgY2xpY2sgb24gJnF1b3Q7QWRkIGEgTmV3IFByb21vdGlvbiZxdW90Oy4gIFlvdSB3aWxsIGJlIHByZXNlbnRlZCB3aXRoIHRoZSBwcm9tb3Rpb25zIGZvcm0uPC9wPjwvbGk+CiAgPGxpPjIuIDx1PlNwZWNpZnkgYSBwcm9tb3Rpb24gbmFtZTwvdT4KICA8cD5Gb3IgdGhpcyBleGFtcGxlIHdlIHdpbGwgdXNlIHRoZSBuYW1lICZxdW90O1NpbXBsZSBTYWxlJnF1b3Q7PC9wPjwvbGk+CiAgPGxpPjMuIDx1PkFkZCBhIGNvdXBvbiBjb25kaXRpb248L3U+CiAgPHA+RnJvbSB0aGUgJnF1b3Q7VHlwZSBvZiBDb25kaXRpb24mcXVvdDsgZHJvcGRvd24gc2VsZWN0ICZxdW90O1JlcXVpcmUgYSBDb3Vwb24gQ29kZSZxdW90Oy4gIEVudGVyICZxdW90O3NpbXBsZXNhbGUmcXVvdDsgaW50byB0aGUgaW5wdXQgZmllbGQgYmVsb3cgYW5kIGNsaWNrIEFkZC48L3A+PC9saT4KICA8bGk+NC4gPHU+QWRkIGFuIG9yZGVyIHByaWNlIGNvbmRpdGlvbjwvdT4KICA8cD5Gcm9tIHRoZSAmcXVvdDtUeXBlIG9mIENvbmRpdGlvbiZxdW90OyBkcm9wZG93biBzZWxlY3QgJnF1b3Q7UmVxdWlyZSBhIE1pbmltdW0gUHVyY2hhc2UgQW1vdW50JnF1b3Q7IGZyb20gdGhlIGRyb3Bkb3duLCBhbmQgZW50ZXIgMTAwIGludG8gdGhlIGlucHV0IGZpZWxkIGJlbG93LiAgQ2xpY2sgQWRkLjwvcD48L2xpPgogIDxsaT41LiA8dT5TcGVjaWZ5IHRoZSBvZmZlciB0eXBlLCBhbmQgYW1vdW50PC91PgogIDxwPlNlbGVjdCB0aGUgb2ZmZXIgdHlwZSAmcXVvdDtQZXJjZW50YWdlIG9mZiBvcmRlciB0b3RhbCZxdW90OyBhbmQgZW50ZXIgMC4xIGludG8gdGhlIHRleHQgZmllbGQgYmVsb3cgdG8gaW5kaWNhdGUgMTAlJnF1b3Q7PC9wPjwvbGk+CiAgPGxpPjYuIDx1PkNsaWNrIHN1Ym1pdDwvdT48L2xpPgo8L3VsPgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiAgSG93ZXZlciB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcyBvciB0byBmaWxlIGEgYnVnIHJlcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBjbXMgbWFkZSBzaW1wbGUgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyI+RGV2ZWxvcGVycyBGb3JnZTwvYT4gYW5kIGRvIGEgc2VhcmNoIGZvciAnUHJvZHVjdHMnPC9saT4KPGxpPlRvIG9idGFpbiBjb21tZXJjaWFsIHN1cHBvcnQsIHBsZWFzZSBzZW5kIGFuIGVtYWlsIHRvIHRoZSBhdXRob3IgYXQgPGEgaHJlZj0ibWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciPlJvYmVydCBDYW1wYmVsbDwvYT4uPC9saT4KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ybXMuPC9hPjwvbGk+CjxsaT5Gb3Igc29tZSBxdWVzdGlvbnMgYW5kIGxpbWl0ZWQgdGVjaG5pY2FsIHN1cHBvcnQsIHRoZSBhdXRob3IgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMiPkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4KPC91bD4KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAwOCwgUm9iZXJ0IENhbXBiZWwgPGEgaHJlZj0ibWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciPiZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCnNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQpPciByZWFkIGl0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+b25saW5lPC9hPjwvcD4KVE9ETwpFT1Q7CgojSQokbGFuZ1snaW5mb19jb25kaXRpb25zJ10gPSAnU3BlY2lmeSBvbmUgb3IgbW9yZSBzYWxlcyBjb25kaXRpb25zIGZvciB0aGlzIHByb21vdGlvbic7CiRsYW5nWydpbmZvX2NvbmRpdGlvbl9kYXRhJ10gPSAnUHJvdmlkZSB0aGUgYXBwcm9wcmlhdGUgZGF0YSBmb3IgdGhpcyBjb25kaXRpb24nOwokbGFuZ1snaW5mb19leHRyYXMnXSA9ICdUaGlzIGFyZWEgY29udGFpbnMgb3B0aW9uYWwgYWRkaXRpb25hbCBhdHRyaWJ1dGVzIGZvciBlYWNoIHByb21vdGlvbiBmb3IgdXNlIHdoZW4gZGlzcGxheWluZyBwcm9tb3Rpb24gYmFubmVycyBvciBwcm9tb3Rpb24gaW5mb3JtYXRpb24uJzsKJGxhbmdbJ2luZm9faW1hZ2VfZGlyJ10gPSAnU3BlY2lmeSBhIGRpcmVjdG9yeSBuYW1lIHJlbGF0aXZlIHRvIHRoZSB1cGxvYWRzIGRpcmVjdG9yeSBpbiB3aGljaCB0byBzZWFyY2ggZm9yIGltYWdlcyB0byBhdHRhY2ggdG8gb2ZmZXJzJzsKJGxhbmdbJ2luZm9fcHJvbW9fbmFtZSddID0gJ1RoaXMgbmFtZSBpcyB1c2VkIGZvciBpbnZvaWNlcyBhbmQgc2FsZXMgb3JkZXJzIHRvIGRlc2NyaWJlIHRoZSBkaXNjb3VudCBiZWluZyBhcHBsaWVkJzsKJGxhbmdbJ2luZm9kYXRhX1BST01PVElPTlNfQ09ORF9GRVUnXSA9ICdBIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIEZFVSBncm91cCBuYW1lcyBpcyBwZXJtaXR0ZWQnOwokbGFuZ1snaW5mb2RhdGFfUFJPTU9USU9OU19DT05EX1NVQlRPVEFMJ10gPSAnRW50ZXIgYSBmbG9hdGluZyBwb2ludCB2YWx1ZSB1c2luZyBhIC4gZm9yIGEgZGVjaW1hbCBzZXBhcmF0b3IuICBpLmU6ICAxMDAuMDAnOwokbGFuZ1snaW5mb2RhdGFfUFJPTU9USU9OU19DT05EX1dFSUdIVCddID0gJ0VudGVyIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWUgdXNpbmcgYSAuIGZvciBhIGRlY2ltYWwgc2VwYXJhdG9yLiAgaS5lOiAgMTAwLjAwJzsKJGxhbmdbJ2luZm9kYXRhX1BST01PVElPTlNfQ09ORF9DT1VQT04nXSA9ICdFbnRlciBhIHRleHQgc3RyaW5nIG9mIG5vIG1vcmUgdGhhbiAxMCBjaGFyYWN0ZXJzJzsKJGxhbmdbJ2luZm9kYXRhX1BST01PVElPTlNfQ09ORF9QUk9ESUQnXSA9ICdFbnRlciBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIHByb2R1Y3QgaWRzJzsKJGxhbmdbJ2luZm9kYXRhX1BST01PVElPTlNfQ09ORF9QUk9EQ0FUJ10gPSAnRW50ZXIgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBwcm9kdWN0IGNhdGVnb3J5IG5hbWVzJzsKJGxhbmdbJ2luZm9kYXRhX1BST01PVElPTlNfQ09ORF9QUk9ESElFUiddID0gJ0VudGVyIGEgc2luZ2xlIHByb2R1Y3QgaGllcmFyY2h5IG5hbWUgaW4gdGhlIGZvcm1hdCAmcXVvdDtncmFuZHBhcmVudC5wYXJlbnQuY2hpbGQmcXVvdDsnOwoKI0oKCgojSwoKCiNMCiRsYW5nWydsYmxfYWRkX3Byb21vJ10gPSAnQWRkIFByb21vdGlvbic7CiRsYW5nWydsYmxfZWRpdF9wcm9tbyddID0gJ0VkaXQgUHJvbW90aW9uJzsKJGxhbmdbJ2xibF9wcm9tb3Rpb25zJ10gPSAnUHJvbW90aW9ucyc7CiRsYW5nWydsYmxfc2V0dGluZ3MnXSA9ICdTZXR0aW5ncyc7CiRsYW5nWydsYmxfY291cG9uZm9ybV90ZW1wbGF0ZXMnXSA9ICdDb3Vwb24gRm9ybSBUZW1wbGF0ZXMnOwokbGFuZ1snbGJsX2RlZmF1bHRfdGVtcGxhdGVzJ10gPSAnRGVmYXVsdCBUZW1wbGF0ZXMnOwokbGFuZ1snbGJsX3Byb21vX21lc3NhZ2VzJ10gPSAnUHJvbW90aW9uIE1lc3NhZ2VzJzsKCiNNCiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ0NyZWF0ZSwgbWFuYWdlLCBhbmQgaW50ZXJhY3Qgd2l0aCBzYWxlcyBhbmQgcHJvbW90aW9ucyBmb3IgeW91ciBlLWNvbW1lcmNlIHNpdGUnOwokbGFuZ1snbXNnX3ByZWZzdXBkYXRlZCddID0gJ1ByZWZlcmVuY2VzIFVwZGF0ZWQnOwokbGFuZ1snbXNnX3ZhbGlkX2NvZGUnXSA9ICdZb3VyIHZhbGlkIHByb21vdGlvbiBjb2RlIHdhcyByZWNvZ25pc2VkISc7CgojTgokbGFuZ1snbm9uZSddID0gJ05vbmUnOwoKI08KCgojUAokbGFuZ1sncGFyYW1faW5saW5lJ10gPSAnU3BlY2lmeSB0aGF0IHRoZSBjb3Vwb24gY29kZSBmb3JtIGlzIGlubGluZSwgYW5kIHRoZSByZXN1bHRzIHNob3VsZCByZXBsYWNlIHRoZSBvcmlnaW5hbCB0YWcgYW5kIG5vdCB0aGUgcGFnZSBjb250ZW50cyc7CiRsYW5nWydwYXJhbV90ZW1wbGF0ZSddID0gJ1NwZWNpZnkgdGhlIG5hbWUgb2YgYSBub24gZGVmYXVsdCBjb3Vwb24gY29kZSB0ZW1wbGF0ZSB0byBkaXNwbGF5IGZvciB0aGUgZGVmYXVsdCBhY3Rpb24nOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdUaGUgUHJvbW90aW9ucyBtb2R1bGUgaGFzIGJlZW4gaW5zdGFsbGVkLCBwbGVhc2UgZW5zdXJlIHRoYXQgdGhlIGF1dGhvcml6ZWQgdXNlcnMgaGF2ZSB0aGUgJnF1b3Q7TWFuYWdlIFByb21vdGlvbnMmcXVvdDsgcGVybWlzc2lvbiwgYW5kIHRoZW4gY29uZmlndXJlIHlvdXIgcHJvbW90aW9ucyBhbmQgdGVtcGxhdGVzIGFwcHJvcHJpYXRlbHknOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1RoZSBQcm9tb3Rpb25zIG1vZHVsZSBhbmQgYWxsIGFwcGxpY2FibGUgZGF0YSBoYXMgYmVlbiB1bmluc3RhbGxlZCBmcm9tIHRoZSBzeXN0ZW0uICBZb3UgbWF5IG5vdyByZW1vdmUgdGhlIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG1vZHVsZSc7CiRsYW5nWydQUk9NT1RJT05TX0NPTkRfQ09VUE9OJ10gPSAnUmVxdWlyZSBhIENvdXBvbiBDb2RlJzsKJGxhbmdbJ1BST01PVElPTlNfQ09ORF9GRVUnXSA9ICdSZXF1aXJlIG1lbWJlcnNoaXAgaW4gYW4gRkVVIGdyb3VwJzsKJGxhbmdbJ1BST01PVElPTlNfQ09ORF9TVUJUT1RBTCddID0gJ1JlcXVpcmUgYSBtaW5pbXVtIHB1cmNoYXNlIGFtb3VudCc7CiRsYW5nWydQUk9NT1RJT05TX0NPTkRfV0VJR0hUJ10gPSAnUmVxdWlyZSBhIG1pbmltdW0gb3JkZXIgd2VpZ2h0JzsKJGxhbmdbJ1BST01PVElPTlNfQ09ORF9QUk9ESUQnXSA9ICdSZXF1aXJlIHB1cmNoYXNlIG9mIGEgc3BlY2lmaWMgcHJvZHVjdCc7CiRsYW5nWydQUk9NT1RJT05TX0NPTkRfUFJPRENBVCddID0gJ1JlcXVpcmUgcHVyY2hhc2Ugb2YgYXQgbGVhc3Qgb25lIHByb2R1Y3QgaW4gYSBjYXRlZ29yeSc7CiRsYW5nWydQUk9NT1RJT05TX0NPTkRfUFJPREhJRVInXSA9ICdSZXF1aXJlIHB1cmNoYXNlIG9mIGF0IGxlYXN0IG9uZSBwcm9kdWN0IGluIGEgaGllcmFyY2h5JzsKJGxhbmdbJzAzX1BST01PVElPTlNfT0ZGRVJfUEVSQ0VOVCddID0gJ1BlcmNlbnRhZ2Ugb2ZmIG9yZGVyIHRvdGFsJzsKJGxhbmdbJzA0X1BST01PVElPTlNfT0ZGRVJfRElTQ09VTlQnXSA9ICdSZWR1Y2Ugb3JkZXIgdG90YWwgYnkgYSBzcGVjaWZpZWQgZG9sbGFyIGZpZ3VyZSc7CiRsYW5nWycwMV9QUk9NT1RJT05TX09GRkVSX1BST0RVQ1QnXSA9ICdSZWNlaXZlIGEgZnJlZSBwcm9kdWN0JzsKJGxhbmdbJzAyX1BST01PVElPTlNfT0ZGRVJfUFJPRERJU0NPVU5UJ10gPSAnRGlzY291bnQgdGhlIGFwcGxpY2FibGUgcHJvZHVjdHMgYnkgYSBwZXJjZW50YWdlJzsKJGxhbmdbJ3Byb21wdF9hZGRfY29uZGl0aW9uJ10gPSAnQWRkIGEgQ29uZGl0aW9uJzsKJGxhbmdbJ3Byb21wdF9hZGRwcm9tbyddID0gJ0FkZCBhIE5ldyBQcm9tb3Rpb24nOwokbGFuZ1sncHJvbXB0X2NvZGUnXSA9ICdDb3Vwb24gQ29kZSc7CiRsYW5nWydwcm9tcHRfY29uZGl0aW9uX2RhdGEnXSA9ICdDb25kaXRpb24gRGF0YSc7CiRsYW5nWydwcm9tcHRfY29uZGl0aW9uX3R5cGUnXSA9ICdUeXBlIG9mIENvbmRpdGlvbic7CiRsYW5nWydwcm9tcHRfY29uZGl0aW9ucyddID0gJ0NvbmRpdGlvbnMnOwokbGFuZ1sncHJvbXB0X2NvdXBvbl9jb2RlJ10gPSAnRW50ZXIgYSBDb3Vwb24gb3IgUHJvbW90aW9uIENvZGUnOwokbGFuZ1sncHJvbXB0X2RmbHRfb2ZmZXJfdHlwZSddID0gJ0RlZmF1bHQgb2ZmZXIgdHlwZSc7CiRsYW5nWydwcm9tcHRfZGZsdF9wcm9tb3Rpb25fcGVyaW9kJ10gPSAnRGVmYXVsdCBQcm9tb3Rpb24gUGVyaW9kIChtb250aHMpJzsKJGxhbmdbJ3Byb21wdF9lbmRfZGF0ZSddID0gJ0VuZCBEYXRlJzsKJGxhbmdbJ3Byb21wdF9lcnJvcl9lbXB0eSddID0gJ0VtcHR5IENvZGUgTWVzc2FnZSc7CiRsYW5nWydwcm9tcHRfZXJyb3JfaW52YWxpZCddID0gJ0ludmFsaWQgQ29kZSBNZXNzYWdlJzsKJGxhbmdbJ3Byb21wdF9leHRyYXMnXSA9ICdFeHRyYXMnOwokbGFuZ1sncHJvbXB0X2ZyZWVfcHJvZHVjdCddID0gJ1NwZWNpZnkgdGhlIGZyZWUgcHJvZHVjdCc7CiRsYW5nWydwcm9tcHRfaWQnXSA9ICdJRCc7CiRsYW5nWydwcm9tcHRfaW1hZ2UnXSA9ICdJbWFnZSc7CiRsYW5nWydwcm9tcHRfaW1hZ2VfZGlyJ10gPSAnSW1hZ2UgRGlyZWN0b3J5JzsKJGxhbmdbJ3Byb21wdF9kZXNjcmlwdGlvbiddID0gJ0Rlc2NyaXB0aW9uJzsKJGxhbmdbJ3Byb21wdF9tc2dfdmFsaWRfY29kZSddID0gJ1ZhbGlkIENvZGUgTWVzc2FnZSc7CiRsYW5nWydwcm9tcHRfbmFtZSddID0gJ05hbWUnOwokbGFuZ1sncHJvbXB0X29mZmVyJ10gPSAnT2ZmZXInOwokbGFuZ1sncHJvbXB0X29mZmVyX2RhdGEnXSA9ICdPZmZlciBEYXRhJzsKJGxhbmdbJ3Byb21wdF9vZmZlcl90eXBlJ10gPSAnT2ZmZXIgVHlwZSc7CiRsYW5nWydwcm9tcHRfb2ZmZXJzJ10gPSAnT2ZmZXJzJzsKJGxhbmdbJ3Byb21wdF9wZXJjZW50YWdlX2Rpc2NvdW50J10gPSAnUGVyY2VudCBEaXNjb3VudCA8ZW0+KGV4cHJlc3NlZCBhcyBhIGRlY2ltYWwgZnJvbSAwIHRvIDEpPC9lbT4nOwokbGFuZ1sncHJvbXB0X3ByaWNlX2Rpc2NvdW50J10gPSAnU3BlY2lmeSB0aGUgZG9sbGFyIGZpZ3VyZSB0byByZW1vdmUgZnJvbSB0aGUgb3JkZXInOwokbGFuZ1sncHJvbXB0X3N0YXJ0X2RhdGUnXSA9ICdTdGFydCBEYXRlJzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZSddID0gJ1RlbXBsYXRlJzsKJGxhbmdbJ3Byb21wdGRhdGFfUFJPTU9USU9OU19DT05EX0NPVVBPTiddID0gJ0NvdXBvbiBDb2RlJzsKJGxhbmdbJ3Byb21wdGRhdGFfUFJPTU9USU9OU19DT05EX0ZFVSddID0gJ0ZFVSBHcm91cCBOYW1lJzsKJGxhbmdbJ3Byb21wdGRhdGFfUFJPTU9USU9OU19DT05EX1NVQlRPVEFMJ10gPSAnTWluaW11bSBPcmRlciBBbW91bnQnOwokbGFuZ1sncHJvbXB0ZGF0YV9QUk9NT1RJT05TX0NPTkRfV0VJR0hUJ10gPSAnTWluaW11bSBPcmRlciBXZWlnaHQnOwokbGFuZ1sncHJvbXB0ZGF0YV9QUk9NT1RJT05TX0NPTkRfUFJPRElEJ10gPSAnUHJvZHVjdCBJZCc7CiRsYW5nWydwcm9tcHRkYXRhX1BST01PVElPTlNfQ09ORF9QUk9EQ0FUJ10gPSAnUHJvZHVjdCBDYXRlZ29yeSc7CiRsYW5nWydwcm9tcHRkYXRhX1BST01PVElPTlNfQ09ORF9QUk9ESElFUiddID0gJ1Byb2R1Y3QgSGllcmFyY2h5JzsKJGxhbmdbJ3Byb21wdG9mZmVyXzAzX1BST01PVElPTlNfT0ZGRVJfUEVSQ0VOVCddID0gJ0Rpc2NvdW50IFBlcmNlbnRhZ2UgPGVtPihleHByZXNzZWQgYXMgYSB2YWx1ZSBmcm9tIDAuMDAgdG8gMS4wMCk8L2VtPic7CiRsYW5nWydwcm9tcHRvZmZlcl8wNF9QUk9NT1RJT05TX09GRkVSX0RJU0NPVU5UJ10gPSAnQ2FzaCBEaXNjb3VudCc7CiRsYW5nWydwcm9tcHRvZmZlcl8wMV9QUk9NT1RJT05TX09GRkVSX1BST0RVQ1QnXSA9ICdQcm9kdWN0IElEIHRvIGdpdmUgZnJlZSc7CiRsYW5nWydwcm9tcHRvZmZlcl8wMl9QUk9NT1RJT05TX09GRkVSX1BST0RESVNDT1VOVCddID0gJ0Rpc2NvdW50IFBlcmNlbnRhZ2UgPGVtPihleHByZXNzZWQgYXMgYSB2YWx1ZSBmcm9tIDAuMDAgdG8gMS4wMCk8L2VtPic7CgojUQoKCiNSCiRsYW5nWydyZWFsbHlfZGVsZXRlX3Byb21vdGlvbiddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBwcm9tb3Rpb24/JzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdW5pbnN0YWxsIHRoaXMgbW9kdWxlPyBQcm9jZWVkaW5nIHdpbGwgcGVybWFuZW50bHkgcmVtb3ZlIGFsbCBvZiB5b3VyIHByb21vdGlvbnMgZGF0YSBhbmQgbWF5IGNhdXNlIHByb2JsZW1zIHdpdGggYSB3b3JraW5nIGUtY29tbWVyY2Ugd2Vic2l0ZS4nOwokbGFuZ1sncmVzZXR0b2ZhY3RvcnknXSA9ICdSZXNldCBUbyBGYWN0b3J5IERlZmF1bHRzJzsKCiNTCiRsYW5nWydzdWJtaXQnXSA9ICdTdWJtaXQnOwoKI1QKJGxhbmdbJ3RpdGxlX2NvdXBvbmZvcm1fZGZsdHRlbXBsYXRlJ10gPSAnU3lzdGVtIERlZmF1bHQgQ291cG9uIEZvcm0gVGVtcGxhdGUnOwoKI1UKCgojVgoKCiNXCiRsYW5nWyd3YXJuaW5nX25vX2NvbmRpdGlvbnMnXSA9ICdZb3UgaGF2ZSBub3Qgc3BlY2lmaWVkIGFueSBjb25kaXRpb25zIGZvciB0aGlzIG9mZmVyIChvdGhlciB0aGFuIGEgc3RhcnQgYW5kIGVuZCBkYXRlKS4gIENsaWNrIE9LIHRvIGNvbnRpbnVlLCBvciBDYW5jZWwgdG8gY29ycmVjdCB0aGlzJzsKCiNYCgoKI1kKCgojWgoKCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.promotion.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFByb21vdGlvbnMgKGMpIDIwMDggYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGNyZWF0aW5nLCBpbnRlcmZhY2luZyB3aXRoCiMgIGFuZCBtYW5hZ2luZyBwcm9tb3Rpb25zIG9yIHNhbGVzIGluIHRoZSBFLWNvbWVtcmNlIHN1aXRlLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvY2xhc3MucHJvbW9fb3BzLnBocCcpOwoKZGVmaW5lKCdQUk9NT1RJT05TX0NPTkRfRkVVJywnUFJPTU9USU9OU19DT05EX0ZFVScpOyAgICAgICAvLyBGRVUgZ3JvdXAgbWVtYmVyc2hpcApkZWZpbmUoJ1BST01PVElPTlNfQ09ORF9TVUJUT1RBTCcsJ1BST01PVElPTlNfQ09ORF9TVUJUT1RBTCcpOyAgIC8vIE9yZGVyIHRvdGFsIChwcmUgc2hpcHBpbmcgYW5kIHRheGVzKQpkZWZpbmUoJ1BST01PVElPTlNfQ09ORF9XRUlHSFQnLCdQUk9NT1RJT05TX0NPTkRfV0VJR0hUJyk7IC8vIE9yZGVyIHdlaWdodCAKZGVmaW5lKCdQUk9NT1RJT05TX0NPTkRfUFJPRElEJywnUFJPTU9USU9OU19DT05EX1BST0RJRCcpOyAvLyBPcmRlciBoYXMgYSBjZXJ0YWluIHByb2R1Y3QgaWQKZGVmaW5lKCdQUk9NT1RJT05TX0NPTkRfUFJPRENBVCcsJ1BST01PVElPTlNfQ09ORF9QUk9EQ0FUJyk7IC8vIE9yZGVyIGhhcyBhIHByb2R1Y3QgZnJvbSBhIGNlcnRhaW4gY2F0ZWdvcnkKZGVmaW5lKCdQUk9NT1RJT05TX0NPTkRfUFJPREhJRVInLCdQUk9NT1RJT05TX0NPTkRfUFJPREhJRVInKTsgLy8gT3JkZXIgaGFzIGEgcHJvZHVjdCBmcm9tIGEgY2VydGFpbiBoaWVyYXJjaHkKZGVmaW5lKCdQUk9NT1RJT05TX0NPTkRfQ09VUE9OJywnUFJPTU9USU9OU19DT05EX0NPVVBPTicpOyAvLyBPcmRlciBoYXMgYSBwcm9kdWN0IGZyb20gYSBjZXJ0YWluIGhpZXJhcmNoeQpkZWZpbmUoJ1BST01PVElPTlNfT0ZGRVJfUFJPRFVDVCcsJzAxX1BST01PVElPTlNfT0ZGRVJfUFJPRFVDVCcpOwpkZWZpbmUoJ1BST01PVElPTlNfT0ZGRVJfUFJPRERJU0NPVU5UJywnMDJfUFJPTU9USU9OU19PRkZFUl9QUk9ERElTQ09VTlQnKTsKZGVmaW5lKCdQUk9NT1RJT05TX09GRkVSX1BFUkNFTlQnLCcwM19QUk9NT1RJT05TX09GRkVSX1BFUkNFTlQnKTsKZGVmaW5lKCdQUk9NT1RJT05TX09GRkVSX0RJU0NPVU5UJywnMDRfUFJPTU9USU9OU19PRkZFUl9ESVNDT1VOVCcpOwoKY2xhc3MgcHJvbW90aW9uX2NvbmRpdGlvbgp7CiAgcHJpdmF0ZSAkX2lkOwogIHByaXZhdGUgJF9wcm9tb3Rpb25faWQ7CiAgcHJpdmF0ZSAkX2NvbmRfdHlwZTsKICBwcml2YXRlICRfZGF0YTsKCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfdHlwZXNfYXJyYXkoKQogIHsKICAgIHJldHVybiBhcnJheShQUk9NT1RJT05TX0NPTkRfRkVVLFBST01PVElPTlNfQ09ORF9TVUJUT1RBTCxQUk9NT1RJT05TX0NPTkRfUFJPRElELAoJCSBQUk9NT1RJT05TX0NPTkRfUFJPRENBVCxQUk9NT1RJT05TX0NPTkRfUFJPREhJRVIsCgkJIFBST01PVElPTlNfQ09ORF9DT1VQT04sUFJPTU9USU9OU19DT05EX1dFSUdIVCk7CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2lkKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPl9pZDsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBzZXRfaWQoJGlkKQogIHsKICAgICR0aGlzLT5faWQgPSAkaWQ7CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3Byb21vdGlvbl9pZCgpCiAgewogICAgcmV0dXJuICR0aGlzLT5fcHJvbW90aW9uX2lkOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uIHNldF9wcm9tb3Rpb25faWQoJGlkKQogIHsKICAgICR0aGlzLT5fcHJvbW90aW9uX2lkID0gJGlkOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uIGdldF9jb25kX3R5cGUoKQogIHsKICAgIHJldHVybiAkdGhpcy0+X2NvbmRfdHlwZTsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBzZXRfY29uZF90eXBlKCR0eXBlKQogIHsKICAgIGlmKCAkdHlwZSA9PSBQUk9NT1RJT05TX0NPTkRfRkVVIHx8CgkkdHlwZSA9PSBQUk9NT1RJT05TX0NPTkRfU1VCVE9UQUwgfHwKCSR0eXBlID09IFBST01PVElPTlNfQ09ORF9XRUlHSFQgfHwKCSR0eXBlID09IFBST01PVElPTlNfQ09ORF9DT1VQT04gfHwKCSR0eXBlID09IFBST01PVElPTlNfQ09ORF9QUk9ESUQgfHwKCSR0eXBlID09IFBST01PVElPTlNfQ09ORF9QUk9EQ0FUIHx8CgkkdHlwZSA9PSBQUk9NT1RJT05TX0NPTkRfUFJPREhJRVIgKQogICAgICAkdGhpcy0+X2NvbmRfdHlwZSA9ICR0eXBlOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uIGdldF9kYXRhKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPl9kYXRhOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uIHNldF9kYXRhKCRkYXRhKQogIHsKICAgICR0aGlzLT5fZGF0YSA9ICRkYXRhOwogIH0KfSAvLyBjbGFzcwoKCmNsYXNzIHByb21vdGlvbgp7CiAgcHJpdmF0ZSAkX2lkOwogIHByaXZhdGUgJF9uYW1lOwogIHByaXZhdGUgJF9kZXNjcmlwdGlvbjsKICBwcml2YXRlICRfaW1hZ2U7CiAgcHJpdmF0ZSAkX2NyZWF0ZWQ7CiAgcHJpdmF0ZSAkX3N0YXJ0X2RhdGU7CiAgcHJpdmF0ZSAkX2VuZF9kYXRlOwogIHByaXZhdGUgJF9vZmZlcl90eXBlOwogIHByaXZhdGUgJF9vZmZlcl9kYXRhOwogIHByaXZhdGUgJF9jb25kaXRpb25zOwoKICBzdGF0aWMgcHVibGljIGZ1bmN0aW9uIGdldF9vZmZlcl9hcnJheSgpCiAgewogICAgcmV0dXJuIGFycmF5KFBST01PVElPTlNfT0ZGRVJfUEVSQ0VOVCxQUk9NT1RJT05TX09GRkVSX0RJU0NPVU5ULFBST01PVElPTlNfT0ZGRVJfUFJPRFVDVCwKCQkgUFJPTU9USU9OU19PRkZFUl9QUk9ERElTQ09VTlQpOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uIGdldF9pZCgpCiAgewogICAgcmV0dXJuICR0aGlzLT5faWQ7CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gc2V0X2lkKCR2YWwpCiAgewogICAgJHRoaXMtPl9pZCA9ICR2YWw7CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gZ2V0X25hbWUoKQogIHsKICAgIHJldHVybiAkdGhpcy0+X25hbWU7CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gc2V0X25hbWUoJHZhbCkKICB7CiAgICAkdGhpcy0+X25hbWUgPSAkdmFsOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uIGdldF9kZXNjcmlwdGlvbigpCiAgewogICAgcmV0dXJuICR0aGlzLT5fZGVzY3JpcHRpb247CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gc2V0X2Rlc2NyaXB0aW9uKCR2YWwpCiAgewogICAgJHRoaXMtPl9kZXNjcmlwdGlvbiA9ICR2YWw7CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2ltYWdlKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPl9pbWFnZTsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBzZXRfaW1hZ2UoJHZhbCkKICB7CiAgICBpZiggZW1wdHkoJHZhbCkgfHwgKGlzX2ludCgkdmFsKSAmJiAoJHZhbCA8IDEpKSApIAogICAgICB7CglyZXR1cm4gRkFMU0U7CiAgICAgIH0KICAgICR0aGlzLT5faW1hZ2UgPSAkdmFsOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uIGdldF9jcmVhdGVkKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPl9jcmVhdGVkOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uIHNldF9jcmVhdGVkKCR2YWwpCiAgewogICAgJHRoaXMtPl9jcmVhdGVkID0gJHZhbDsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBnZXRfc3RhcnRfZGF0ZSgpCiAgewogICAgcmV0dXJuICR0aGlzLT5fc3RhcnRfZGF0ZTsKICB9CgoKICBwdWJsaWMgZnVuY3Rpb24gc2V0X3N0YXJ0X2RhdGUoJHZhbCkKICB7CiAgICAkdGhpcy0+X3N0YXJ0X2RhdGUgPSAkdmFsOwogIH0KCgogIHB1YmxpYyBmdW5jdGlvbiBnZXRfZW5kX2RhdGUoKQogIHsKICAgIHJldHVybiAkdGhpcy0+X2VuZF9kYXRlOwogIH0KCgogIHB1YmxpYyBmdW5jdGlvbiBzZXRfZW5kX2RhdGUoJHZhbCkKICB7CiAgICAkdGhpcy0+X2VuZF9kYXRlID0gJHZhbDsKICB9CgoKICBwdWJsaWMgZnVuY3Rpb24gZ2V0X29mZmVyX3R5cGUoKQogIHsKICAgIHJldHVybiAkdGhpcy0+X29mZmVyX3R5cGU7CiAgfQoKCiAgcHVibGljIGZ1bmN0aW9uIHNldF9vZmZlcl90eXBlKCR2YWwpCiAgewogICAgJHRoaXMtPl9vZmZlcl90eXBlID0gJHZhbDsKICB9CgoKICBwdWJsaWMgZnVuY3Rpb24gZ2V0X29mZmVyX2RhdGEoKQogIHsKICAgIHJldHVybiAkdGhpcy0+X29mZmVyX2RhdGE7CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gc2V0X29mZmVyX2RhdGEoJGRhdGEpCiAgewogICAgJHRoaXMtPl9vZmZlcl9kYXRhID0gJGRhdGE7CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2NvbmRpdGlvbnMoKQogIHsKICAgIHJldHVybiAkdGhpcy0+X2NvbmRpdGlvbnM7CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gYWRkX2NvbmRpdGlvbigmJGNvbmRpdGlvbikKICB7CiAgICBpZiggIWlzX2EoJGNvbmRpdGlvbiwncHJvbW90aW9uX2NvbmRpdGlvbicpICkgCiAgICAgIHJldHVybiBGQUxTRTsKCiAgICBpZiggIWlzX2FycmF5KCR0aGlzLT5fY29uZGl0aW9ucykgKQogICAgICB7CgkkdGhpcy0+X2NvbmRpdGlvbnMgPSBhcnJheSgpOwogICAgICB9CiAgICAkdGhpcy0+X2NvbmRpdGlvbnNbXSA9ICRjb25kaXRpb247CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gZGVsX2NvbmRpdGlvbigkaWR4KQogIHsKICAgIGlmKCBpc19hcnJheSgkdGhpcy0+X2NvbmRpdGlvbnMpICYmCgljb3VudCgkdGhpcy0+X2NvbmRpdGlvbnMpID4gJGlkeCAmJgoJJGlkeCA+IDApCiAgICAgIHsKCSR0bXAgPSBhcnJheSgpOwoJZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJHRoaXMtPl9jb25kaXRpb25zKTsgJGkrKyApCgkgIHsKCSAgICBpZiggJGkgPT0gJGlkeCApIGNvbnRpbnVlOwoJICAgICR0bXBbXSA9ICR0aGlzLT5fY29uZGl0aW9uczsKCSAgfQoJJHRoaXMtPl9jb25kaXRpb25zID0gJHRtcDsKICAgICAgfQogIH0KCiAgcHVibGljIGZ1bmN0aW9uIGRlbF9jb25kaXRpb25zKCkKICB7CiAgICAkdGhpcy0+X2NvbmRpdGlvbnMgPSBudWxsOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uICZnZXRfY29uZGl0aW9uKCRpZHgpCiAgewogICAgaWYoICFpc19hcnJheSgkdGhpcy0+X2NvbmRpdGlvbnMpIHx8CgkoY291bnQoJHRoaXMtPl9jb25kaXRpb25zKSA8ICRpZHgpIHx8CgkoJGlkeCA8IDApICkKICAgICAgewoJJHRtcCA9IEZBTFNFOwoJcmV0dXJuICR0bXA7CiAgICAgIH0KCiAgICByZXR1cm4gJHRoaXMtPl9jb25kaXRpb25zWyRpZHhdOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uIGNvdW50X2NvbmRpdGlvbnMoKQogIHsKICAgIHJldHVybiBjb3VudCgkdGhpcy0+X2NvbmRpdGlvbnMpOwogIH0KCgogIHB1YmxpYyBmdW5jdGlvbiBzYXZlKCkKICB7CiAgICBpZiggJHRoaXMtPl9pZCApCiAgICAgIHsKCXJldHVybiAkdGhpcy0+X3VwZGF0ZSgpOwogICAgICB9CiAgICByZXR1cm4gJHRoaXMtPl9pbnNlcnQoKTsKICB9CgoKICBwcml2YXRlIGZ1bmN0aW9uIF91cGRhdGUoKQogIHsKICAgIHJldHVybiBwcm9tb19vcHM6OnVwZGF0ZV9wcm9tbygkdGhpcyk7CiAgfQoKCiAgcHJpdmF0ZSBmdW5jdGlvbiBfaW5zZXJ0KCkKICB7CiAgICByZXR1cm4gcHJvbW9fb3BzOjppbnNlcnRfcHJvbW8oJHRoaXMpOwogIH0KCgogIHB1YmxpYyBmdW5jdGlvbiBjaGVja192YWxpZCgpCiAgewogICAgJHN0ID0gY2dlX3V0aWxzOjp1bml4X3RpbWUoJHRoaXMtPmdldF9zdGFydF9kYXRlKCkpOwogICAgJGV0ID0gY2dlX3V0aWxzOjp1bml4X3RpbWUoJHRoaXMtPmdldF9lbmRfZGF0ZSgpKTsKICAgICRjciA9IGNnZV91dGlsczo6dW5peF90aW1lKCR0aGlzLT5nZXRfY3JlYXRlZCgpKTsKCiAgICBpZiggJHN0IDwgJGNyICkgcmV0dXJuIEZBTFNFOwogICAgaWYoICRldCA8PSAkc3QgKSByZXR1cm4gRkFMU0U7CiAgICBpZiggZW1wdHkoJHRoaXMtPl9uYW1lKSApIHJldHVybiBGQUxTRTsKICAgIGlmKCBlbXB0eSgkdGhpcy0+X29mZmVyX2RhdGEpICkgcmV0dXJuIEZBTFNFOwoKICAgIHJldHVybiBUUlVFOwogIH0KfSAvLyBjbGFzcwoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.promotion_discount.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFByb21vdGlvbnMgKGMpIDIwMDggYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGNyZWF0aW5nLCBpbnRlcmZhY2luZyB3aXRoCiMgIGFuZCBtYW5hZ2luZyBwcm9tb3Rpb25zIG9yIHNhbGVzIGluIHRoZSBFLWNvbWVtcmNlIHN1aXRlLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKZGVmaW5lKCdQUk9NT1RJT05TX0RJU0NPVU5UX1BST0RVQ1QnLCdQUk9NT1RJT05TX0RJU0NPVU5UX1BST0RVQ1QnKTsKZGVmaW5lKCdQUk9NT1RJT05TX0RJU0NPVU5UX0FNT1VOVCcsJ1BST01PVElPTlNfRElTQ09VTlRfUFJPRFVDVCcpOwoKY2xhc3MgcHJvbW90aW9uX2Rpc2NvdW50CnsKICBwcml2YXRlICRfdHlwZTsKICBwcml2YXRlICRfYW10OwogIHByaXZhdGUgJF9kZXNjOwogIHByaXZhdGUgJF9wcm9tb19pZDsKCiAgcHVibGljIGZ1bmN0aW9uIGdldF90eXBlKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPl90eXBlOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uIHNldF90eXBlKCR0eXBlKQogIHsKICAgIGlmKCAkdHlwZSA9PSBQUk9NT1RJT05TX0RJU0NPVU5UX1BST0RVQ1QgfHwKCSR0eXBlID09IFBST01PVElPTlNfRElTQ09VTlRfQU1PVU5UICkKICAgICAgewoJJHRoaXMtPl90eXBlID0gJHR5cGU7CiAgICAgIH0KICB9CgoKICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2Ftb3VudCgpCiAgewogICAgcmV0dXJuICR0aGlzLV9hbXQ7CiAgfQoKCiAgcHVibGljIGZ1bmN0aW9uIHNldF9hbW91bnQoJGFtb3VudCkKICB7CiAgICAkdGhpcy0+X2FtdCA9ICRhbW91bnQ7CiAgfQoKCiAgcHVibGljIGZ1bmN0aW9uIGdldF9kZXNjcmlwdGlvbigpCiAgewogICAgcmV0dXJuICR0aGlzLT5fZGVzYzsKICB9CgoKICBwdWJsaWMgZnVuY3Rpb24gc2V0X2Rlc2NyaXB0aW9uKCRkZXNjcmlwdGlvbikKICB7CiAgICAkdGhpcy0+X2Rlc2MgPSAkZGVzY3JpcHRpb247CiAgfQoKCiAgcHVibGljIGZ1bmN0aW9uIGdldF9wcm9tb19pZCgpCiAgewogICAgcmV0dXJuICR0aGlzLT5fcHJvbW9faWQ7CiAgfQoKCiAgcHVibGljIGZ1bmN0aW9uIHNldF9wcm9tb19pZCgkaWQpCiAgewogICAgJHRoaXMtPl9wcm9tb19pZCA9ICRpZDsKICB9CgoKICBwdWJsaWMgZnVuY3Rpb24gaXNfdmFsaWQoKQogIHsKICAgIGlmKCBpc19udWxsKCR0aGlzLT5fdHlwZSkgfHwKCWlzX251bGwoJHRoaXMtPl9kZXNjKSB8fAoJaXNfbnVsbCgkdGhpcy0+X2FtdCkgfHwgKGZsb2F0dmFsKCR0aGlzLT5fYW10KSA8PSAwLjApIHx8Cglpc19udWxsKCR0aGlzLT5fcHJvbW9faWQpICkKICAgICAgewoJcmV0dXJuIEZBTFNFOwogICAgICB9CiAgICByZXR1cm4gVFJVRTsKICB9Cn0gLy8gY2xhc3MKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.promo_ops.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFByb21vdGlvbnMgKGMpIDIwMDggYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGNyZWF0aW5nLCBpbnRlcmZhY2luZyB3aXRoCiMgIGFuZCBtYW5hZ2luZyBwcm9tb3Rpb25zIG9yIHNhbGVzIGluIHRoZSBFLWNvbWVtcmNlIHN1aXRlLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKY2xhc3MgcHJvbW9fb3BzCnsKICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiAmX2dldF9kYigpCiAgewogICAgZ2xvYmFsICRnQ21zOwogICAgJGRiID0mICRnQ21zLT5HZXREYigpOwogICAgcmV0dXJuICRkYjsKICB9CgogIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uICZfZ2V0X3Byb2R1Y3RzX21vZCgpCiAgewogICAgZ2xvYmFsICRnQ21zOwogICAgJHByb2R1Y3RzID0mICRnQ21zLT5tb2R1bGVzWydQcm9kdWN0cyddWydvYmplY3QnXTsKICAgIHJldHVybiAkcHJvZHVjdHM7CiAgfQoKICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiAmX2dldF9wcm9kdWN0KCRwcm9kdWN0X2lkKQogIHsKICAgICRtb2R1bGUgPSYgc2VsZjo6X2dldF9wcm9kdWN0c19tb2QoKTsKICAgIHJldHVybiAkbW9kdWxlLT5HZXRQcm9kdWN0KCRwcm9kdWN0X2lkKTsKICB9CgogIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIF9kZWxfY29uZGl0aW9ucygmJHByb21vKQogIHsKICAgIGlmKCAhaXNfYSgkcHJvbW8sJ3Byb21vdGlvbicpICkgcmV0dXJuIEZBTFNFOwogICAgaWYoICEkcHJvbW8tPmdldF9pZCgpICkgcmV0dXJuIEZBTFNFOwoKICAgICRkYiA9JiBzZWxmOjpfZ2V0X2RiKCk7CiAgICAkcXVlcnkgPSAnREVMRVRFIEZST00gJy5QUk9NT1RJT05TX0NPTkRfVEFCTEUuJwogICAgICAgICAgICAgICBXSEVSRSBwcm9tb3Rpb25faWQgPSA/JzsKICAgICRkYnIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRwcm9tby0+Z2V0X2lkKCkpKTsKICAgIGlmKCAhJGRiciApIHJldHVybiBGQUxTRTsKICAgIHJldHVybiBUUlVFOwogIH0KCgogIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIF9pbnNlcnRfY29uZGl0aW9uKCYkcHJvbW8sJiRjb25kKQogIHsKICAgIGlmKCAhaXNfYSgkcHJvbW8sJ3Byb21vdGlvbicpICkgcmV0dXJuIEZBTFNFOwogICAgaWYoICEkcHJvbW8tPmdldF9pZCgpICkgcmV0dXJuIEZBTFNFOwogICAgaWYoICFpc19hKCRjb25kLCdwcm9tb3Rpb25fY29uZGl0aW9uJykgKSByZXR1cm4gRkFMU0U7CiAgICBpZiggJHByb21vLT5nZXRfaWQoKSAhPSAkY29uZC0+Z2V0X3Byb21vdGlvbl9pZCgpICkgcmV0dXJuIEZBTFNFOwoKICAgICRkYiA9JiBzZWxmOjpfZ2V0X2RiKCk7CiAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJy5QUk9NT1RJT05TX0NPTkRfVEFCTEUuJwogICAgICAgICAgICAgICAocHJvbW90aW9uX2lkLGNvbmRfdHlwZSxkYXRhKQogICAgICAgICAgICAgIFZBTFVFUyAoPyw/LD8pJzsKICAgICRkYnIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRjb25kLT5nZXRfcHJvbW90aW9uX2lkKCksCgkJCQkgICAgICRjb25kLT5nZXRfY29uZF90eXBlKCksCgkJCQkgICAgICRjb25kLT5nZXRfZGF0YSgpKSk7CiAgICBpZiggISRkYnIgKSAKICAgICAgewoJZWNobyAiREVCVUc6IGluc2VydCBmYWlsZWQ8YnIvPiI7CgllY2hvICRkYi0+c3FsLic8YnIvPicuJGRiLT5FcnJvck1zZygpLic8YnIvPic7CglyZXR1cm4gRkFMU0U7CiAgICAgIH0KICAgIHJldHVybiBUUlVFOwogIH0KCgogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaW5zZXJ0X3Byb21vKCYkcHJvbW8pCiAgewogICAgaWYoICFpc19hKCRwcm9tbywncHJvbW90aW9uJykgKSByZXR1cm4gRkFMU0U7CiAgICBpZiggJHByb21vLT5nZXRfaWQoKSApIHJldHVybiBGQUxTRTsKCiAgICAkZGIgPSYgc2VsZjo6X2dldF9kYigpOwogICAgJG5vdyA9ICRkYi0+RGJUaW1lU3RhbXAodGltZSgpKTsKICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnLlBST01PVElPTlNfVEFCTEUuIgogICAgICAobmFtZSxkZXNjcmlwdGlvbixpbWFnZSxjcmVhdGVkLHN0YXJ0X2RhdGUsZW5kX2RhdGUsb2ZmZXJfdHlwZSxvZmZlcl9kYXRhKQogICAgICBWQUxVRVMgKD8sPyw/LCRub3csPyw/LD8sPykiOwogICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksCgkJCWFycmF5KCRwcm9tby0+Z2V0X25hbWUoKSwKCQkJICAgICAgJHByb21vLT5nZXRfZGVzY3JpcHRpb24oKSwKCQkJICAgICAgJHByb21vLT5nZXRfaW1hZ2UoKSwKCQkJICAgICAgY2dlX3V0aWxzOjpkYl90aW1lKCRwcm9tby0+Z2V0X3N0YXJ0X2RhdGUoKSksCgkJCSAgICAgIGNnZV91dGlsczo6ZGJfdGltZSgkcHJvbW8tPmdldF9lbmRfZGF0ZSgpKSwKCQkJICAgICAgJHByb21vLT5nZXRfb2ZmZXJfdHlwZSgpLAoJCQkgICAgICAkcHJvbW8tPmdldF9vZmZlcl9kYXRhKCkpKTsKICAgIGlmKCAhJGRiciApIAogICAgICB7CgllY2hvICJERUJVRzogaW5zZXJ0IGZhaWxlZDxici8+IjsKCWVjaG8gJGRiLT5zcWwuJzxici8+Jy4kZGItPkVycm9yTXNnKCkuJzxici8+JzsKCXJldHVybiBGQUxTRTsKICAgICAgfQogICAgJGlkID0gJGRiLT5JbnNlcnRfSUQoKTsKICAgICRwcm9tby0+c2V0X2lkKCRpZCk7CgogICAgLy8gaW5zZXJ0IHRoZSBjb25kaXRpb25zCiAgICBmb3IoICRpID0gMDsgJGkgPCAkcHJvbW8tPmNvdW50X2NvbmRpdGlvbnMoKTsgJGkrKyApCiAgICAgIHsKCSRjb25kID0mICRwcm9tby0+Z2V0X2NvbmRpdGlvbigkaSk7CglpZiggISRjb25kICkgY29udGludWU7CgkkY29uZC0+c2V0X3Byb21vdGlvbl9pZCgkaWQpOwoKCXNlbGY6Ol9pbnNlcnRfY29uZGl0aW9uKCRwcm9tbywkY29uZCk7CiAgICAgIH0KICAgIHJldHVybiAkaWQ7CiAgfQoKCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB1cGRhdGVfcHJvbW8oJiRwcm9tbykKICB7CiAgICBpZiggIWlzX2EoJHByb21vLCdwcm9tb3Rpb24nKSApIHJldHVybiBGQUxTRTsKICAgIGlmKCAhJHByb21vLT5nZXRfaWQoKSApIHJldHVybiBGQUxTRTsKCiAgICAkZGIgPSYgc2VsZjo6X2dldF9kYigpOwogICAgJHF1ZXJ5ID0gJ1VQREFURSAnLlBST01PVElPTlNfVEFCTEUuJwogICAgICAgICAgICAgICAgIFNFVCBuYW1lID0gPywgZGVzY3JpcHRpb24gPSA/LCBpbWFnZSA9ID8sIAogICAgICAgICAgICAgICAgICAgICBzdGFydF9kYXRlID0gPywgZW5kX2RhdGUgPSA/LAogICAgICAgICAgICAgICAgICAgICBvZmZlcl90eXBlID0gPywgb2ZmZXJfZGF0YSA9ID8KICAgICAgICAgICAgICAgV0hFUkUgaWQgPSA/JzsKICAgICRkYnIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LAoJCQlhcnJheSgkcHJvbW8tPmdldF9uYW1lKCksCgkJCSAgICAgICRwcm9tby0+Z2V0X2Rlc2NyaXB0aW9uKCksCgkJCSAgICAgICRwcm9tby0+Z2V0X2ltYWdlKCksCgkJCSAgICAgIGNnZV91dGlsczo6ZGJfdGltZSgkcHJvbW8tPmdldF9zdGFydF9kYXRlKCkpLAoJCQkgICAgICBjZ2VfdXRpbHM6OmRiX3RpbWUoJHByb21vLT5nZXRfZW5kX2RhdGUoKSksCgkJCSAgICAgICRwcm9tby0+Z2V0X29mZmVyX3R5cGUoKSwKCQkJICAgICAgJHByb21vLT5nZXRfb2ZmZXJfZGF0YSgpLAoJCQkgICAgICAkcHJvbW8tPmdldF9pZCgpKSApOwogICAgaWYoICEkZGJyICkKICAgICAgewoJZWNobyAiREVCVUc6IHVwZGF0ZSBmYWlsZWQ8YnIvPiI7CgllY2hvICRkYi0+c3FsLic8YnIvPicuJGRiLT5FcnJvck1zZygpLic8YnIvPic7CglyZXR1cm4gRkFMU0U7CiAgICAgIH0KCiAgICAvLyBpbnNlcnQgdGhlIGNvbmRpdGlvbnMKICAgIHNlbGY6Ol9kZWxfY29uZGl0aW9ucygkcHJvbW8pOwogICAgZm9yKCAkaSA9IDA7ICRpIDwgJHByb21vLT5jb3VudF9jb25kaXRpb25zKCk7ICRpKysgKQogICAgICB7CgkkY29uZCA9JiAkcHJvbW8tPmdldF9jb25kaXRpb24oJGkpOwoJaWYoICEkY29uZCApIGNvbnRpbnVlOwoJJGNvbmQtPnNldF9wcm9tb3Rpb25faWQoJHByb21vLT5nZXRfaWQoKSk7CgoJc2VsZjo6X2luc2VydF9jb25kaXRpb24oJHByb21vLCRjb25kKTsKICAgICAgfQoKICAgIHJldHVybiAkcHJvbW8tPmdldF9pZCgpOwogIH0KCgogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gJmxvYWRfcHJvbW9fYnlfaWQoJGlkKQogIHsKICAgIGlmKCAoJGlkIDw9IDApIHx8ICFpc19udW1lcmljKCRpZCkgKSByZXR1cm4gRkFMU0U7CgogICAgJGRiID0mIHNlbGY6Ol9nZXRfZGIoKTsKICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuUFJPTU9USU9OU19UQUJMRS4nIFdIRVJFIGlkID0gPyc7CiAgICAkcm93ID0gJGRiLT5HZXRSb3coJHF1ZXJ5LGFycmF5KCRpZCkpOwogICAgaWYoICEkcm93ICkgcmV0dXJuIEZBTFNFOwoKICAgICRwcm9tbyA9IG5ldyBwcm9tb3Rpb24oKTsKICAgIGZvcmVhY2goICRyb3cgYXMgJGtleSA9PiAkdmFsdWUgKQogICAgICB7CgkkZnVuID0gJ3NldF8nLiRrZXk7CglpZiggbWV0aG9kX2V4aXN0cygkcHJvbW8sJGZ1bikgKQoJICAkcHJvbW8tPiRmdW4oJHZhbHVlKTsKICAgICAgfQoKICAgIC8vIGxvYWQgY29uZGl0aW9ucy4KICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuUFJPTU9USU9OU19DT05EX1RBQkxFLicgCiAgICAgICAgICAgICAgIFdIRVJFIHByb21vdGlvbl9pZCA9ID8nOwogICAgJGRhdGEgPSAkZGItPkdldEFycmF5KCRxdWVyeSxhcnJheSgkcHJvbW8tPmdldF9pZCgpKSk7CiAgICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkZGF0YSk7ICRpKysgKQogICAgICB7CgkkY29uZCA9IG5ldyBwcm9tb3Rpb25fY29uZGl0aW9uKCk7Cglmb3JlYWNoKCAkZGF0YVskaV0gYXMgJGtleSA9PiAkdmFsdWUgKQoJICB7CgkgICAgJGZ1biA9ICdzZXRfJy4ka2V5OwoJICAgICRjb25kLT4kZnVuKCR2YWx1ZSk7CgkgIH0KCSRwcm9tby0+YWRkX2NvbmRpdGlvbigkY29uZCk7CiAgICAgIH0KCiAgICByZXR1cm4gJHByb21vOwogIH0KCgogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNfdmFsaWRfY291cG9uKCRjb2RlKQogIHsKICAgICRkYiA9JiBzZWxmOjpfZ2V0X2RiKCk7CiAgICAkcXVlcnkgPSAnU0VMRUNUIEEuaWQgRlJPTSAnLlBST01PVElPTlNfVEFCTEUuJyBBCiAgICAgICAgICAgICAgICBMRUZUIEpPSU4gJy5QUk9NT1RJT05TX0NPTkRfVEFCTEUuJyBCCiAgICAgICAgICAgICAgICAgIE9OIEEuaWQgPSBCLnByb21vdGlvbl9pZAogICAgICAgICAgICAgICBXSEVSRSBOT1coKSBCRVRXRUVOIEEuc3RhcnRfZGF0ZSBBTkQgQS5lbmRfZGF0ZQogICAgICAgICAgICAgICAgIEFORCBCLmNvbmRfdHlwZSA9ID8KICAgICAgICAgICAgICAgICBBTkQgQi5kYXRhID0gPyc7CiAgICAkdG1wID0gJGRiLT5HZXRPbmUoJHF1ZXJ5LGFycmF5KFBST01PVElPTlNfQ09ORF9DT1VQT04sJGNvZGUpKTsKICAgIHJldHVybiAkdG1wOwogIH0KCgogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVsZXRlX3Byb21vKCRpZCkKICB7CiAgICBpZiggKCRpZCA8PSAwKSB8fCAhaXNfbnVtZXJpYygkaWQpICkgcmV0dXJuIEZBTFNFOwoKICAgICRkYiA9JiBzZWxmOjpfZ2V0X2RiKCk7CiAgICAkcXVlcnkgPSAnREVMRVRFIEZST00gJy5QUk9NT1RJT05TX0NPTkRfVEFCTEUuJwogICAgICAgICAgICAgICBXSEVSRSBwcm9tb3Rpb25faWQgPSA/JzsKICAgICRyZXMgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRpZCkpOwogICAgLy8gbm8gZXJyb3IgaWYgdGhlcmUgYXJlIG5vIGNvbmRpdGlvbnMuCgogICAgJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcuUFJPTU9USU9OU19UQUJMRS4nCiAgICAgICAgICAgICAgIFdIRVJFIGlkID0gPyc7CiAgICAkcmVzID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkaWQpKTsKICAgIGlmKCAhJHJlcyApIHJldHVybiBGQUxTRTsKICAgIHJldHVybiBUUlVFOwogIH0KCgogIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gY2hlY2tfdW51c2VkX2NvdXBvbigkbmFtZSkKICB7CiAgICAkZGIgPSYgc2VsZjo6X2dldF9kYigpOwoKICAgICRxdWVyeSA9ICdTRUxFQ1QgaWQgRlJPTSAnLlBST01PVElPTlNfQ09ORF9UQUJMRS4nCiAgICAgICAgICAgICAgIFdIRVJFIGNvbmRfdHlwZSA9ID8KICAgICAgICAgICAgICAgICBBTkQgZGF0YSA9ID8nOwogICAgJHRtcCA9ICRkYi0+R2V0T25lKCRxdWVyeSxhcnJheShQUk9NT1RJT05TX0NPTkRfQ09VUE9OLCRuYW1lKSk7CiAgICBpZiggJHRtcCApIHJldHVybiBGQUxTRTsKICAgIHJldHVybiBUUlVFOwogIH0KCgogIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gY2hlY2tfdW51c2VkX25hbWUoJG5hbWUsJGlkPScnKQogIHsKICAgIGdsb2JhbCAkZ0NtczsKICAgICRkYiA9JiAkZ0Ntcy0+R2V0RGIoKTsKCiAgICBpZiggZW1wdHkoJGlkKSApCiAgICAgIHsKCSRxdWVyeSA9ICdTRUxFQ1QgaWQgRlJPTSAnLlBST01PVElPTlNfVEFCTEUuJyBXSEVSRSBuYW1lID0gPyc7CgkkdG1wID0gJGRiLT5HZXRPbmUoJHF1ZXJ5LGFycmF5KCRuYW1lKSk7CglpZiggJHRtcCApIHJldHVybiBGQUxTRTsKCXJldHVybiBUUlVFOwogICAgICB9CgogICAgJHF1ZXJ5ID0gJ1NFTEVDVCBpZCBGUk9NICcuUFJPTU9USU9OU19UQUJMRS4nIFdIRVJFIG5hbWUgPSA/IEFORCBpZCAhPSA/JzsKICAgICR0bXAgPSAkZGItPkdldE9uZSgkcXVlcnksYXJyYXkoJG5hbWUsJGlkKSk7CiAgICBpZiggJHRtcCApIHJldHVybiBGQUxTRTsKICAgIHJldHVybiBUUlVFOwogIH0KCgogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2FsY190b3RhbF9kaXNjb3VudCgkY2FydF9pdGVtcykKICB7CiAgICAkZGlzY291bnQgPSAwOwogICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJGNhcnRfaXRlbXMpOyAkaSsrICkKICAgICAgewoJJGRpc2NvdW50ICs9ICRjYXJ0X2l0ZW1zWyRpXS0+Z2V0X2Rpc2NvdW50KCk7CiAgICAgIH0KICAgIHJldHVybiAkZGlzY291bnQ7CiAgfQoKCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjYWxjdWxhdGVfZGlzY291bnQoJiRwcm9tbywkc3VidG90YWwsJGNhcnRfaXRlbXMpCiAgewogICAgJG5ld19pdGVtcyA9IGFycmF5KCk7CiAgICBzd2l0Y2goICRwcm9tby0+Z2V0X29mZmVyX3R5cGUoKSApCiAgICAgIHsKICAgICAgY2FzZSBQUk9NT1RJT05TX09GRkVSX1BFUkNFTlQ6CgkvLyBjYWxjdWxhdGUgTiAlIG9mZiBlYWNoIGl0ZW0uLi4gYW4gZmlsbCBpbiB0aGUgZGlzY291bnQgZmllbGQuCglmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkY2FydF9pdGVtcyk7ICRpKysgKQoJICB7CgkgICAgJGl0ZW0gPSAkY2FydF9pdGVtc1skaV07CgkgICAgJGl0ZW0tPnNldF9kaXNjb3VudCgkaXRlbS0+Z2V0X3VuaXRfcHJpY2UoKSAqICRwcm9tby0+Z2V0X29mZmVyX2RhdGEoKSAqIC0xLjApOwoJICAgICRuZXdfaXRlbXNbXSA9ICRpdGVtOwoJICB9CglicmVhazsKCiAgICAgIGNhc2UgUFJPTU9USU9OU19PRkZFUl9ESVNDT1VOVDoKCS8vIGNhbGN1bGF0ZSAkTiBvZmYgCglmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkY2FydF9pdGVtcyk7ICRpKysgKQoJICB7CgkgICAgJGl0ZW0gPSBjbG9uZSgkY2FydF9pdGVtc1skaV0pOwoJICAgICRuZXdfaXRlbXNbXSA9ICRpdGVtOwoJICB9CgkkaXRlbSA9IG5ldyBsaW5lX2l0ZW0oKTsKCSRpdGVtLT5zZXRfZGVzY3JpcHRpb24oJHByb21vLT5nZXRfbmFtZSgpKTsKCSRpdGVtLT5zZXRfaXRlbV90eXBlKE9SREVSU19JVEVNVFlQRV9ESVNDT1VOVCk7CgkkaXRlbS0+c2V0X3F1YW50aXR5KDEpOwoJJGl0ZW0tPnNldF9kaXNjb3VudCgkcHJvbW8tPmdldF9vZmZlcl9kYXRhKCkgKiAtMS4wKTsKCSRuZXdfaXRlbXNbXSA9ICRpdGVtOwoJYnJlYWs7CgogICAgICBjYXNlIFBST01PVElPTlNfT0ZGRVJfUFJPRFVDVDoKCS8vIG9mZmVyIGEgZnJlZSBwcm9kdWN0LgoJZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJGNhcnRfaXRlbXMpOyAkaSsrICkKCSAgewoJICAgICRpdGVtID0gY2xvbmUoJGNhcnRfaXRlbXNbJGldKTsKCSAgICAkbmV3X2l0ZW1zW10gPSAkaXRlbTsKCSAgfQoJJGl0ZW0gPSBuZXcgbGluZV9pdGVtKCk7CgkkaXRlbS0+c2V0X2Rlc2NyaXB0aW9uKCRwcm9tby0+Z2V0X25hbWUoKSk7CgkkaXRlbS0+c2V0X2l0ZW1fdHlwZShPUkRFUlNfSVRFTVRZUEVfUFJPRFVDVCk7CgkkaXRlbS0+c2V0X3F1YW50aXR5KDEpOwoJJHByb2R1Y3QgPSBzZWxmOjpnZXRfcHJvZHVjdCgkcHJvbW8tPmdldF9vZmZlcl9kYXRhKCkpOwoJaWYoICEkcHJvZHVjdCApIHJldHVybiBGQUxTRTsKCSRpdGVtLT5zZXRfdW5pdF9wcmljZSgkcHJvZHVjdFsncHJpY2UnXSk7CgkkaXRlbS0+c2V0X2Rpc2NvdW50KCRwcm9kdWN0WydwcmljZSddKTsKCSRpdGVtLT5zZXRfd2VpZ2h0KCRwcm9kdWN0Wyd3ZWlnaHQnXSk7CgkkbmV3X2l0ZW1zW10gPSAkaXRlbTsKCWJyZWFrOwoKICAgICAgY2FzZSBQUk9NT1RJT05TX09GRkVSX1BST0RESVNDT1VOVDoKCS8vIGRpc2NvdW50IHRoZSBhcHBsaWNhYmxlIHByb2R1Y3RzIGJ5IGEgcGVyY2VudGFnZQoJJHByb2R1Y3RzID0gYXJyYXkoKTsKCWZvciggJGkgPSAwOyAkaSA8ICRwcm9tby0+Y291bnRfY29uZGl0aW9ucygpOyAkaSsrICkKCSAgewoJICAgICRjb25kaXRpb24gPSAkcHJvbW8tPmdldF9jb25kaXRpb24oJGkpOwoJICAgIHN3aXRjaCggJGNvbmRpdGlvbi0+Z2V0X2NvbmRfdHlwZSgpICkKCSAgICAgIHsKCSAgICAgIGNhc2UgUFJPTU9USU9OU19DT05EX1BST0RJRDoKCQkkcHJvZHVjdHMgPSBleHBsb2RlKCcsJywkY29uZGl0aW9uLT5nZXRfZGF0YSgpKTsKCQkkaSA9ICRwcm9tby0+Y291bnRfY29uZGl0aW9ucygpOwoJCWJyZWFrOwoKCSAgICAgIGNhc2UgUFJPTU9USU9OU19DT05EX1BST0RISUVSOgoJCSRwcm9kdWN0cyA9IFByb2R1Y3RzOjpHZXRQcm9kdWN0SWRzRnJvbUhpZXJhcmNoeSgkY29uZGl0aW9uLT5nZXRfZGF0YSgpLCcuJyk7CgkJJGkgPSAkcHJvbW8tPmNvdW50X2NvbmRpdGlvbnMoKTsKCQlicmVhazsKCgkgICAgICBjYXNlIFBST01PVElPTlNfQ09ORF9QUk9EQ0FUOgoJCSRwcm9kdWN0cyA9IFByb2R1Y3RzOjpHZXRQcm9kdWN0SWRzRnJvbUNhdGVnb3JpZXMoJGNvbmRpdGlvbi0+Z2V0X2RhdGEoKSk7CgkJJGkgPSAkcHJvbW8tPmNvdW50X2NvbmRpdGlvbnMoKTsKCQlicmVhazsKCgkgICAgICBkZWZhdWx0OgoJCWNvbnRpbnVlOwoJCWJyZWFrOwoJICAgICAgfQoJICB9CgoJLy8gY2hlY2sgaWYgd2UgZm91bmQgbWF0Y2hpbmcgcHJvZHVjdHM/CglpZiggISRwcm9kdWN0cyApIGJyZWFrOwoKCS8vIHdlIGRpZC4uLiBzbyB3ZSBoYXZlIHRvIGRvIHNvbWV0aGluZyB3aXRoIGVhY2ggcHJvZHVjdC4uCglmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkY2FydF9pdGVtcyk7ICRpKysgKQoJICB7CgkgICAgJGl0ZW0gPSBjbG9uZSgkY2FydF9pdGVtc1skaV0pOwoJICAgIGlmKCAkaXRlbS0+Z2V0X2l0ZW1fdHlwZSgpID09IGxpbmVfaXRlbTo6SVRFTVRZUEVfUFJPRFVDVCAmJiAKCQlpbl9hcnJheSgkaXRlbS0+Z2V0X2l0ZW1faWQoKSwkcHJvZHVjdHMpICkKCSAgICAgIHsKCQkkaXRlbS0+c2V0X2Rpc2NvdW50KCRwcm9tby0+Z2V0X29mZmVyX2RhdGEoKSAqICRpdGVtLT5nZXRfdW5pdF9wcmljZSgpICogLTEpOwoJICAgICAgfQoJICAgICRuZXdfaXRlbXNbXSA9ICRpdGVtOwoJICB9CglicmVhazsKICAgICAgfQoKICAgIHJldHVybiAkbmV3X2l0ZW1zOwogIH0KfSAvLyBjbGFzcwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.promo_tests.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFByb21vdGlvbnMgKGMpIDIwMDggYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGNyZWF0aW5nLCBpbnRlcmZhY2luZyB3aXRoCiMgIGFuZCBtYW5hZ2luZyBwcm9tb3Rpb25zIG9yIHNhbGVzIGluIHRoZSBFLWNvbWVtcmNlIHN1aXRlLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKY2xhc3MgcHJvbW9fdGVzdHMKewogIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gX2dldF9mZXUoKQogIHsKICAgIGdsb2JhbCAkZ0NtczsKICAgICRmZXUgPSBudWxsOwogICAgaWYoIGlzc2V0KCRnQ21zLT5tb2R1bGVzWydGcm9udEVuZFVzZXJzJ10pICkKICAgICAgewoJJGZldSA9JiAkZ0Ntcy0+bW9kdWxlc1snRnJvbnRFbmRVc2VycyddWydvYmplY3QnXTsKICAgICAgfQogICAgcmV0dXJuICRmZXU7CiAgfQoKCiAgLyoqCiAgICogVGVzdCB0aGUgcHJvbW90aW9uIHRvIHNlZSBpZiB0aGUgcHJvbW90aW9uIGlzIGFwcGxpY2FibGUKICAgKiB0byBjb3Vwb24gY29kZXMsIGFuZCBpZiBzbyBpZiB0aGUgc3VwcGxpZWQKICAgKiBjb3Vwb24gY29kZSBtYXRjaGVzIHRoYXQgaW4gdGhlIGNvbmRpdGlvbnMuCiAgICoKICAgKiBAcGFyYW0gc3RyaW5nIGNvdXBvbiBjb2RlCiAgICogQHBhcmFtIHByb21vdGlvbiBQcm9tb3Rpb24gb2JqZWN0LgogICAqIEByZXR1cnNuIFRSVUUgaWYgdGhpcyB0ZXN0IGRvZXMgbm90IHJlbHkgb24gY291cG9uIGNvZGVzLCBvciBpZiB0aGUgY291cG9uIGNvZGUgbWF0Y2hlcy4gIEZBTFNFIG90aGVyd2lzZS4KICAgKi8KICBzdGF0aWMgcHVibGljIGZ1bmN0aW9uIHRlc3Rfb3JkZXJfY291cG9uKCRjb3Vwb24sJiRwcm9tbykKICB7CiAgICAkY29uZGl0aW9ucyA9JiAkcHJvbW8tPmdldF9jb25kaXRpb25zKCk7CiAgICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkY29uZGl0aW9ucyk7ICRpKysgKQogICAgICB7CgkkY29uZCA9JiAkY29uZGl0aW9uc1skaV07CglpZiggJGNvbmQtPmdldF9jb25kX3R5cGUoKSAhPSBQUk9NT1RJT05TX0NPTkRfQ09VUE9OICkKCSAgY29udGludWU7CgoJJGRhdGEgPSAkY29uZC0+Z2V0X2RhdGEoKTsKCWlmKCAkY291cG9uID09ICRkYXRhICkKCSAgcmV0dXJuIFRSVUU7CgoJYnJlYWs7CiAgICAgIH0KCiAgICAvLyB0aGlzIHByb21vdGlvbiBpcyBub3QgZGVwZW5kYW50IHVwb24gb3JkZXIgY291cG9ucy4KICAgIHJldHVybiBGQUxTRTsKICB9CgoKICAvKioKICAgKiBUZXN0IHRoZSBwcm9tb3Rpb24gdG8gc2VlIGlmIHRoZSBwcm9tb3Rpb24gaXMgYXBwbGljYWJsZQogICAqIHRvIG9yZGVyIHdlaWdodCBjYWxjdWxhdGlvbnMsIGFuZCBpZiBzbyBpZiB0aGUgc3VwcGxpZWQKICAgKiBzdWJ0b3RhbCBpcyBvdmVyIG9yIGVxdWFsIHRvIHRoZSBvbmUgc3BlY2lmaWVkIGluIHRoZQogICAqIGNvbmRpdGlvbnMuCiAgICoKICAgKiBAcGFyYW0gZmxvYXQgd2VpZ2h0IGFtb3VudAogICAqIEBwYXJhbSBwcm9tb3Rpb24gUHJvbW90aW9uIG9iamVjdC4KICAgKiBAcmV0dXJzbiBUUlVFIGlmIHRoaXMgdGVzdCBkb2VzIG5vdCByZWx5IG9uIG9yZGVyIHdlaWdodCwgb3IgaWYgdGhlIHdlaWdodCB2YWx1ZSBpcyBvdmVyIHRoZSBhbGxvd2VkIHJhbmdlLiAgRkFMU0Ugb3RoZXJ3aXNlLgogICAqLwogIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gdGVzdF9vcmRlcl93ZWlnaHQoJHdlaWdodCwmJHByb21vKQogIHsKICAgIGlmKCAkd2VpZ2h0IDw9IDAuMDAgKSByZXR1cm4gRkFMU0U7CgogICAgJGNvbmRpdGlvbnMgPSYgJHByb21vLT5nZXRfY29uZGl0aW9ucygpOwogICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJGNvbmRpdGlvbnMpOyAkaSsrICkKICAgICAgewoJJGNvbmQgPSYgJGNvbmRpdGlvbnNbJGldOwoJaWYoICRjb25kLT5nZXRfY29uZF90eXBlKCkgIT0gUFJPTU9USU9OU19DT05EX1dFSUdIVCApCgkgIGNvbnRpbnVlOwoKCSRkYXRhID0gJGNvbmQtPmdldF9kYXRhKCk7CglpZiggJHdlaWdodCA+PSAkZGF0YSApCgkgIHJldHVybiBUUlVFOwoKCWJyZWFrOwogICAgICB9CgogICAgLy8gdGhpcyBwcm9tb3Rpb24gaXMgbm90IGRlcGVuZGFudCB1cG9uIG9yZGVyIHdlaWdodHMuCiAgICByZXR1cm4gRkFMU0U7CiAgfQoKCiAgLyoqCiAgICogVGVzdCB0aGUgcHJvbW90aW9uIHRvIHNlZSBpZiB0aGUgcHJvbW90aW9uIGlzIGFwcGxpY2FibGUKICAgKiB0byBvcmRlciBzdWJ0b3RhbCBjYWxjdWxhdGlvbnMsIGFuZCBpZiBzbyBpZiB0aGUgc3VwcGxpZWQKICAgKiBzdWJ0b3RhbCBpcyBvdmVyIG9yIGVxdWFsIHRvIHRoZSBvbmUgc3BlY2lmaWVkIGluIHRoZQogICAqIGNvbmRpdGlvbnMuCiAgICoKICAgKiBAcGFyYW0gZmxvYXQgc3VidG90YWwgYW1vdW50CiAgICogQHBhcmFtIHByb21vdGlvbiBQcm9tb3Rpb24gb2JqZWN0LgogICAqIEByZXR1cnNuIFRSVUUgaWYgdGhpcyB0ZXN0IGRvZXMgbm90IHJlbHkgb24gb3JkZXJyIHN1YnRvdGFsLCBvciBpZiB0aGUgc3VidG90YWwgdmFsdWUgaXMgb3ZlciB0aGUgYWxsb3dlZCByYW5nZS4gIEZBTFNFIG90aGVyd2lzZS4KICAgKi8KICBzdGF0aWMgcHVibGljIGZ1bmN0aW9uIHRlc3Rfb3JkZXJfc3VidG90YWwoJHN1YnRvdGFsLCYkcHJvbW8pCiAgewogICAgaWYoICRzdWJ0b3RhbCA8PSAwLjAwICkgcmV0dXJuIEZBTFNFOwoKICAgICRjb25kaXRpb25zID0mICRwcm9tby0+Z2V0X2NvbmRpdGlvbnMoKTsKICAgICRmb3VuZCA9IGZhbHNlOwogICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJGNvbmRpdGlvbnMpOyAkaSsrICkKICAgICAgewoJJGNvbmQgPSYgJGNvbmRpdGlvbnNbJGldOwoJaWYoICRjb25kLT5nZXRfY29uZF90eXBlKCkgIT0gUFJPTU9USU9OU19DT05EX1NVQlRPVEFMICkKCSAgY29udGludWU7CgoJJGRhdGEgPSAkY29uZC0+Z2V0X2RhdGEoKTsKCWlmKCAkc3VidG90YWwgPj0gJGRhdGEgKQoJICB7CgkgICAgcmV0dXJuIFRSVUU7CgkgIH0KCglicmVhazsKICAgICAgfQoKICAgIC8vIHRoaXMgcHJvbW90aW9uIGlzIG5vdCBkZXBlbmRhbnQgdXBvbiBvcmRlciBzdWJ0b3RhbHMuCiAgICByZXR1cm4gRkFMU0U7CiAgfQoKICAvKioKICAgKiBUZXN0IHRoZSBwcm9tb3Rpb24gdG8gc2VlIGlmIHRoZSBwcm9tb3Rpb24gaXMgCiAgICogYXBwbGljYWJsZSB0byBjZXJ0YWluIEZFVSBncm91cHMuLi4gYW5kIGlmIHNvCiAgICogaWYgdGhlIHN1cHBsaWVkIGZldV9ncm91cCBwYXNzZXMgdGhlIHRlc3QuCiAgICoKICAgKiBAcGFyYW0gaW50IGZldV91aWQKICAgKiBAcGFyYW0gcHJvbW90aW9uIFByb21vdGlvbiBvYmplY3QuCiAgICogQHJldHVybnMgVFJVRSBpZiB0aGlzIHRlc3QgZG9lcyBub3QgcmVseSBvbiBGRVUgZ3JvdXAgbWVtYmVyc2hpcCwgb3IgaWYgdGhlIHVzZXIgaXMgbWVtYmVyIG9mIG9uZSBvZiB0aGUgc3BlY2lmaWVkIGdyb3VwIG5hbWVzLiAgRkFMU0Ugb3RoZXJ3aXNlLgogICAqLwogIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gdGVzdF9mZXVfdWlkKCRmZXVfdWlkLCYkcHJvbW8pCiAgewogICAgaWYoICRmZXVfdWlkIDw9IDAgKSByZXR1cm4gRkFMU0U7CgogICAgJGZldSA9JiBzZWxmOjpfZ2V0X2ZldSgpOwogICAgaWYoICEkZmV1ICkgcmV0dXJuIEZBTFNFOwoKICAgICRjb25kaXRpb25zID0mICRwcm9tby0+Z2V0X2NvbmRpdGlvbnMoKTsKICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCRjb25kaXRpb25zKTsgJGkrKyApCiAgICAgIHsKCSRjb25kID0mICRjb25kaXRpb25zWyRpXTsKCWlmKCAkY29uZC0+Z2V0X2NvbmRfdHlwZSgpID09IFBST01PVElPTlNfQ09ORF9GRVUgKQoJICB7CgkgICAgLy8gZ2V0IG1lbWJlciBncm91cHMgYXMgYXJyYXkgb2YgZ3JvdXAgbmFtZXMKCSAgICAkbWVtYmVyX29mID0gJGZldS0+R2V0TWVtYmVyR3JvdXBzQXJyYXkoJGZldV91aWQpOwoJICAgIGlmKCAhJG1lbWJlcl9vZiApIHJldHVybiBGQUxTRTsKCSAgICAkbWVtYmVyX29mID0gY2dlX2FycmF5OjpleHRyYWN0X2ZpZWxkKCRtZW1iZXJfb2YsJ2dyb3VwaWQnKTsKCgkgICAgJHRtcCA9ICRmZXUtPkdldEdyb3VwTGlzdCgpOwoJICAgICRhbGxncm91cHMgPSBhcnJheV9mbGlwKCR0bXApOwoJICAgICRtZW1iZXJfZ3JvdXBfbmFtZXMgPSBhcnJheSgpOwoJICAgIGZvcmVhY2goICRtZW1iZXJfb2YgYXMgJG9uZWdpZCApCgkgICAgICB7CgkJJG1lbWJlcl9ncm91cF9uYW1lc1tdID0gJGFsbGdyb3Vwc1skb25lZ2lkXTsKCSAgICAgIH0KCgkgICAgLy8gZ2V0IHRoZSB2YWx1ZSBmcm9tIHRoZSBjb25kaXRpb24KCSAgICAvLyBhcyBhbiBhcnJheSBvZiB0cmltbWVkIGdyb3VwIG5hbWVzLgoJICAgICRkYXRhID0gZXhwbG9kZSgnLCcsJGNvbmQtPmdldF9kYXRhKCkpOwoJICAgIGZvciggJGogPSAwOyAkaiA8IGNvdW50KCRkYXRhKTsgJGorKyApCgkgICAgICB7CgkJJGRhdGFbJGpdID0gdHJpbSgkZGF0YVskal0pOwoJICAgICAgfQoKCSAgICAvLyBub3cgZG8gYW4gaW50ZXJzZWN0aW9uIGJldHdlZW4gbWVtYmVyIGdyb3VwbyBuYW1lcwoJICAgIC8vIGFuZCB0aGUgZGF0YSBncm91cCBuYW1lcy4KCSAgICAkcmVzID0gYXJyYXlfaW50ZXJzZWN0KCRtZW1iZXJfZ3JvdXBfbmFtZXMsJGRhdGEpOwoJICAgIGlmKCBjb3VudCgkcmVzKSApIHJldHVybiBUUlVFOwoKCSAgICAvLyB0aGVyZSBpcyBndWFyYW50ZWVkIHRvIGJlIG5vIG1vcmUgY29uZGl0aW9ucyBvZiB0aGlzIHR5cGUuCgkgICAgYnJlYWs7CgkgIH0KICAgICAgfQoKICAgIC8vIHRoaXMgcHJvbW90aW9uIGlzIG5vdCBkZXBlbmRhbnQgdXBvbiBmZXUgZ3JvdXAgbWVtYmVyc2hpcC4KICAgIHJldHVybiBGQUxTRTsKICB9CgoKICAvKioKICAgKiBUZXN0IHRoZSBwcm9tb3Rpb24gdG8gc2VlIGlmIHRoZSBpdGVtcyBpbiB0aGUgY3VycmVudAogICAqIHVzZXJzIGNhcnQgYXJlIHByb2R1Y3RzLCBhbmQgaWYgdGhleSBhcmUgbWF0Y2hpbmcgdGhlCiAgICogcHJvbW90aW9ucyBpbiB0aGUgcXVlcnkuCiAgICoKICAgKiBAcGFyYW0gYXJyYXkgb2YgbGluZV9pdGVtIG9iamVjdHMKICAgKiBAcGFyYW0gcHJvbW90aW9uIFByb21vdGlvbiBvYmplY3QuCiAgICogQHJldHVybnMgVFJVRSBpZiB0aGlzIHRlc3QgZG9lcyBub3QgcmVseSBvbiBGRVUgZ3JvdXAgbWVtYmVyc2hpcCwgb3IgaWYgdGhlIHVzZXIgaXMgbWVtYmVyIG9mIG9uZSBvZiB0aGUgc3BlY2lmaWVkIGdyb3VwIG5hbWVzLiAgRkFMU0Ugb3RoZXJ3aXNlLgogICAqLwogIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gdGVzdF9wcm9kdWN0X2Zyb21faGllcmFyY2h5KCRpdGVtcywkcHJvbW8pCiAgewogICAgJHByb2R1Y3RzID0gJyc7CiAgICBmb3IoICRpID0gMDsgJGkgPCAkcHJvbW8tPmNvdW50X2NvbmRpdGlvbnMoKTsgJGkrKyApCiAgICAgIHsKCSRjb25kaXRpb24gPSAkcHJvbW8tPmdldF9jb25kaXRpb24oJGkpOwoJc3dpdGNoKCAkY29uZGl0aW9uLT5nZXRfY29uZF90eXBlKCkgKQoJICB7CgkgIGNhc2UgUFJPTU9USU9OU19DT05EX1BST0RISUVSOgoJICAgICRwcm9kdWN0cyA9IFByb2R1Y3RzOjpHZXRQcm9kdWN0SWRzRnJvbUhpZXJhcmNoeSgkY29uZGl0aW9uLT5nZXRfZGF0YSgpLCcuJyk7CgkgICAgJGkgPSAkcHJvbW8tPmNvdW50X2NvbmRpdGlvbnMoKTsKCSAgICBicmVhazsKCgkgIGRlZmF1bHQ6CgkgICAgY29udGludWU7CgkgICAgYnJlYWs7CgkgIH0KICAgICAgfQoKICAgIC8vIGNoZWNrIGlmIHRoZXJlIGFyZSBwcm9kdWN0cyBmb3VuZAogICAgaWYoICEkcHJvZHVjdHMgKSByZXR1cm4gRkFMU0U7IAoKICAgIC8vIG5vdyBjaGVjayB0byBzZWUgaWYgdGhlIGl0ZW1zIGluIHRoZSBjYXJ0IG1hdGNoLgogICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJGl0ZW1zKTsgJGkrKyApCiAgICAgIHsKCSRpdGVtID0gJGl0ZW1zWyRpXTsKCWlmKCAkaXRlbS0+Z2V0X2l0ZW1fdHlwZSgpID09IGxpbmVfaXRlbTo6SVRFTVRZUEVfUFJPRFVDVCAmJiAKCSAgICBpbl9hcnJheSgkaXRlbS0+Z2V0X2l0ZW1faWQoKSwkcHJvZHVjdHMpICkKCSAgewoJICAgIHJldHVybiBUUlVFOwoJICB9CiAgICAgIH0KCiAgICByZXR1cm4gRkFMU0U7CiAgfQoKCiAgLyoqCiAgICogVGVzdCB0aGUgcHJvbW90aW9uIHRvIHNlZSBpZiB0aGUgaXRlbXMgaW4gdGhlIGN1cnJlbnQKICAgKiB1c2VycyBjYXJ0IGFyZSBwcm9kdWN0cywgYW5kIGlmIHRoZXkgYXJlIG1hdGNoaW5nIHRoZQogICAqIHByb21vdGlvbnMgaW4gdGhlIHF1ZXJ5LgogICAqCiAgICogQHBhcmFtIGFycmF5IG9mIGxpbmVfaXRlbSBvYmplY3RzCiAgICogQHBhcmFtIHByb21vdGlvbiBQcm9tb3Rpb24gb2JqZWN0LgogICAqIEByZXR1cm5zIFRSVUUgaWYgdGhpcyB0ZXN0IGRvZXMgbm90IHJlbHkgb24gRkVVIGdyb3VwIG1lbWJlcnNoaXAsIG9yIGlmIHRoZSB1c2VyIGlzIG1lbWJlciBvZiBvbmUgb2YgdGhlIHNwZWNpZmllZCBncm91cCBuYW1lcy4gIEZBTFNFIG90aGVyd2lzZS4KICAgKi8KICBzdGF0aWMgcHVibGljIGZ1bmN0aW9uIHRlc3RfcHJvZHVjdF9mcm9tX2NhdGVnb3J5KCRpdGVtcywkcHJvbW8pCiAgewogICAgJHByb2R1Y3RzID0gJyc7CiAgICBmb3IoICRpID0gMDsgJGkgPCAkcHJvbW8tPmNvdW50X2NvbmRpdGlvbnMoKTsgJGkrKyApCiAgICAgIHsKCSRjb25kaXRpb24gPSAkcHJvbW8tPmdldF9jb25kaXRpb24oJGkpOwoJc3dpdGNoKCAkY29uZGl0aW9uLT5nZXRfY29uZF90eXBlKCkgKQoJICB7CgkgIGNhc2UgUFJPTU9USU9OU19DT05EX1BST0RDQVQ6CgkgICAgJHByb2R1Y3RzID0gUHJvZHVjdHM6OkdldFByb2R1Y3RJZHNGcm9tQ2F0ZWdvcmllcygkY29uZGl0aW9uLT5nZXRfZGF0YSgpKTsKCSAgICAkaSA9ICRwcm9tby0+Y291bnRfY29uZGl0aW9ucygpOwoJICAgIGJyZWFrOwoKCSAgZGVmYXVsdDoKCSAgICBjb250aW51ZTsKCSAgICBicmVhazsKCSAgfQogICAgICB9CgogICAgLy8gY2hlY2sgaWYgdGhlcmUgYXJlIHByb2R1Y3RzIGZvdW5kCiAgICBpZiggISRwcm9kdWN0cyApIHJldHVybiBGQUxTRTsgCgogICAgLy8gbm93IGNoZWNrIHRvIHNlZSBpZiB0aGUgaXRlbXMgaW4gdGhlIGNhcnQgbWF0Y2guCiAgICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkY2FydF9pdGVtcyk7ICRpKysgKQogICAgICB7CgkkaXRlbSA9ICRpdGVtc1skaV07CglpZiggJGl0ZW0tPmdldF9pdGVtX3R5cGUgPT0gbGluZV9pdGVtOjpJVEVNVFlQRV9QUk9EVUNUICYmIAoJICAgIGluX2FycmF5KCRpdGVtLT5nZXRfaXRlbV9pZCgpLCRwcm9kdWN0cykgKQoJICB7CgkgICAgcmV0dXJuIFRSVUU7CgkgIH0KICAgICAgfQoKICAgIHJldHVybiBGQUxTRTsKICB9CgoKICAvKioKICAgKiBUZXN0IHRoZSBwcm9tb3Rpb24gdG8gc2VlIGlmIHRoZSBpdGVtcyBpbiB0aGUgY3VycmVudAogICAqIHVzZXJzIGNhcnQgYXJlIHByb2R1Y3RzLCBhbmQgaWYgdGhleSBhcmUgbWF0Y2hpbmcgdGhlCiAgICogcHJvbW90aW9ucyBpbiB0aGUgcXVlcnkuCiAgICoKICAgKiBAcGFyYW0gYXJyYXkgb2YgbGluZV9pdGVtIG9iamVjdHMKICAgKiBAcGFyYW0gcHJvbW90aW9uIFByb21vdGlvbiBvYmplY3QuCiAgICogQHJldHVybnMgVFJVRSBpZiB0aGlzIHRlc3QgZG9lcyBub3QgcmVseSBvbiBGRVUgZ3JvdXAgbWVtYmVyc2hpcCwgb3IgaWYgdGhlIHVzZXIgaXMgbWVtYmVyIG9mIG9uZSBvZiB0aGUgc3BlY2lmaWVkIGdyb3VwIG5hbWVzLiAgRkFMU0Ugb3RoZXJ3aXNlLgogICAqLwogIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gdGVzdF9zaW5nbGVfcHJvZHVjdCgkaXRlbXMsJHByb21vKQogIHsKICAgICRwcm9kdWN0ID0gJyc7CiAgICBmb3IoICRpID0gMDsgJGkgPCAkcHJvbW8tPmNvdW50X2NvbmRpdGlvbnMoKTsgJGkrKyApCiAgICAgIHsKCSRjb25kaXRpb24gPSAkcHJvbW8tPmdldF9jb25kaXRpb24oJGkpOwoJc3dpdGNoKCAkY29uZGl0aW9uLT5nZXRfY29uZF90eXBlKCkgKQoJICB7CgkgIGNhc2UgUFJPTU9USU9OU19DT05EX1BST0RJRDoKCSAgICAkcHJvZHVjdCA9ICRjb25kaXRpb24tPmdldF9kYXRhKCk7CgkgICAgJGkgPSAkcHJvbW8tPmNvdW50X2NvbmRpdGlvbnMoKTsKCSAgICBicmVhazsKCgkgIGRlZmF1bHQ6CgkgICAgY29udGludWU7CgkgICAgYnJlYWs7CgkgIH0KICAgICAgfQoKICAgIC8vIGNoZWNrIGlmIHRoZXJlIGFyZSBwcm9kdWN0cyBmb3VuZAogICAgaWYoICEkcHJvZHVjdCApIHJldHVybiBGQUxTRTsgCgogICAgLy8gbm93IGNoZWNrIHRvIHNlZSBpZiB0aGUgaXRlbXMgaW4gdGhlIGNhcnQgbWF0Y2guCiAgICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkY2FydF9pdGVtcyk7ICRpKysgKQogICAgICB7CgkkaXRlbSA9ICRpdGVtc1skaV07CglpZiggJGl0ZW0tPmdldF9pdGVtX3R5cGUgPT0gbGluZV9pdGVtOjpJVEVNVFlQRV9QUk9EVUNUICYmIAoJICAgICRpdGVtLT5nZXRfaXRlbV9pZCgpID09ICRwcm9kdWN0ICkKCSAgewoJICAgIHJldHVybiBUUlVFOwoJICB9CiAgICAgIH0KCiAgICByZXR1cm4gRkFMU0U7CiAgfQp9IC8vIGVuZCBvZiBjbGFzcwoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFByb21vdGlvbnMgKGMpIDIwMDggYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGNyZWF0aW5nLCBpbnRlcmZhY2luZyB3aXRoCiMgIGFuZCBtYW5hZ2luZyBwcm9tb3Rpb25zIG9yIHNhbGVzIGluIHRoZSBFLWNvbWVtcmNlIHN1aXRlLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CgovLyBkdW1teSBvYmplY3QKJGR1bW15ID0gbmV3IHByb21vdGlvbigpOwoKJGRiID0mICR0aGlzLT5HZXREYigpOwokY29uZmlnID0mICRnQ21zLT5HZXRDb25maWcoKTsKCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKJHRhYm9wdGFycmF5ID0gYXJyYXkoJ215c3FsJyA9PiAnVFlQRT1NeUlTQU0nKTsKCi8vIFByb21vdGlvbnMgdGFibGUKJGZsZHMgPSAiCiAgICAgICAgIGlkIEkgS0VZIEFVVE8sCiAgICAgICAgIG5hbWUgQygyNTUpIEtFWSBOT1QgTlVMTCwKICAgICAgICAgZGVzY3JpcHRpb24gWCwKICAgICAgICAgaW1hZ2UgQygyNTUpLAogICAgICAgICBjcmVhdGVkICIgLiBDTVNfQURPREJfRFQgLiAiLAogICAgICAgICBzdGFydF9kYXRlICIgLiBDTVNfQURPREJfRFQgLiAiLAogICAgICAgICBlbmRfZGF0ZSAiIC4gQ01TX0FET0RCX0RUIC4gIiwKICAgICAgICAgb2ZmZXJfdHlwZSAgQyg1MCkgTk9UIE5VTEwsCiAgICAgICAgIG9mZmVyX2RhdGEgIEMoMjU1KSBOT1QgTlVMTAogICAgICAgICI7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChQUk9NT1RJT05TX1RBQkxFLCRmbGRzLCR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCi8vIENvbmRpdGlvbnMgdGFibGUKJGZsZHMgPSAiCiAgICAgICAgIGlkIEkgS0VZIEFVVE8sCiAgICAgICAgIHByb21vdGlvbl9pZCBJIEtFWSBOT1QgTlVMTCwKICAgICAgICAgY29uZF90eXBlIEMoNTApIE5PVCBOVUxMLAogICAgICAgICBkYXRhIFggTk9UIE5VTEwKICAgICAgICAiOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoUFJPTU9USU9OU19DT05EX1RBQkxFLCRmbGRzLCR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCi8vIHBlcm1pc3Npb25zCiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKFByb21vdGlvbnM6Ok1BSU5fUEVSTSxQcm9tb3Rpb25zOjpNQUlOX1BFUk0pOwoKLy8gcHJlZmVyZW5jZXMKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RmbHRfcHJvbW90aW9uX3BlcmlvZCcsMSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZmx0X29mZmVyX3R5cGUnLFBST01PVElPTlNfT0ZGRVJfUEVSQ0VOVCk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZmx0X29mZmVyX2RhdGEnLCcuMScpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnaW1hZ2VfZGlyJywnaW1hZ2VzJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdlcnJvcl9pbnZhbGlkX2NvZGUnLCR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkX2NvZGUnKSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdlcnJvcl9lbXB0eV9jb2RlJywkdGhpcy0+TGFuZygnZXJyb3JfZW1wdHlfY29kZScpKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21zZ192YWxpZF9jb2RlJywkdGhpcy0+TGFuZygnbXNnX3ZhbGlkX2NvZGUnKSk7CgovLyB0ZW1wbGF0ZXMKIyBTZXR1cCBkZWZhdWx0IGhpZXJhcmNoeSByZXBvcnQgdGVtcGxhdGUKJGZuID0gY21zX2pvaW5fcGF0aChkaXJuYW1lKF9fRklMRV9fKSwndGVtcGxhdGVzJywnb3JpZ19jb3Vwb25mb3JtX3RlbXBsYXRlLnRwbCcpOwppZiggZmlsZV9leGlzdHMoICRmbiApICkKICB7CiAgICAkdGVtcGxhdGUgPSBmaWxlX2dldF9jb250ZW50cyggJGZuICk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZShQcm9tb3Rpb25zOjpORVdDT1VQT05GT1JNX1RFTVBMQVRFLCR0ZW1wbGF0ZSk7CiAgICAkdGhpcy0+U2V0VGVtcGxhdGUoJ2NvdXBvbmZvcm1fU2FtcGxlJywkdGVtcGxhdGUpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoUHJvbW90aW9uczo6REZMVENPVVBPTkZPUk1fVEVNUExBVEUsJ1NhbXBsZScpOwogIH0KCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFByb21vdGlvbnMgKGMpIDIwMDggYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGNyZWF0aW5nLCBpbnRlcmZhY2luZyB3aXRoCiMgIGFuZCBtYW5hZ2luZyBwcm9tb3Rpb25zIG9yIHNhbGVzIGluIHRoZSBFLWNvbWVtcmNlIHN1aXRlLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CgokZGIgPSYgJHRoaXMtPkdldERiKCk7CiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggUFJPTU9USU9OU19UQUJMRSApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBQUk9NT1RJT05TX0NPTkRfVEFCTEUgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCk7CiR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCk7CiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKFByb21vdGlvbnM6Ok1BSU5fUEVSTSk7CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/Promotions.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFByb21vdGlvbnMgKGMpIDIwMDggYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGNyZWF0aW5nLCBpbnRlcmZhY2luZyB3aXRoCiMgIGFuZCBtYW5hZ2luZyBwcm9tb3Rpb25zIG9yIHNhbGVzIGluIHRoZSBFLWNvbWVtcmNlIHN1aXRlLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKJGNnZXh0ZW5zaW9ucyA9IGNtc19qb2luX3BhdGgoJGdDbXMtPmNvbmZpZ1sncm9vdF9wYXRoJ10sJ21vZHVsZXMnLAoJCQkgICAgICAnQ0dFeHRlbnNpb25zJywnQ0dFeHRlbnNpb25zLm1vZHVsZS5waHAnKTsKaWYoICFpc19yZWFkYWJsZSggJGNnZXh0ZW5zaW9ucyApICkKewogIGVjaG8gJzxoMT48Zm9udCBjb2xvcj0icmVkIj5FUlJPUjogVGhlIENHRXh0ZW5zaW9ucyBtb2R1bGUgY291bGQgbm90IGJlIGZvdW5kLjwvZm9udD48L2gxPic7CiAgcmV0dXJuOwp9CnJlcXVpcmVfb25jZSgkY2dleHRlbnNpb25zKTsKCmRlZmluZSgnUFJPTU9USU9OU19UQUJMRScsY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfcHJvbW90aW9ucycpOwpkZWZpbmUoJ1BST01PVElPTlNfQ09ORF9UQUJMRScsY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfcHJvbW90aW9uc19jb25kJyk7CgpjbGFzcyBQcm9tb3Rpb25zIGV4dGVuZHMgQ0dFeHRlbnNpb25zCnsKCiAgY29uc3QgTkVXQ09VUE9ORk9STV9URU1QTEFURSAgPSAnTkVXQ09VUE9ORk9STV9URU1QTEFURSc7CiAgY29uc3QgREZMVENPVVBPTkZPUk1fVEVNUExBVEUgPSAnREZMVENPVVBPTkZPUk1fVEVNUExBVEUnOwogIGNvbnN0IE1BSU5fUEVSTSAgICAgICAgICAgICAgID0gJ01hbmFnZSBQcm9tb3Rpb25zJzsKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0TmFtZSgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIEdldE5hbWUoKQogIHsKICAgIHJldHVybiAnUHJvbW90aW9ucyc7CiAgfQoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRGcmllbmRseU5hbWUoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRGcmllbmRseU5hbWUoKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyk7CiAgfQoKCQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldFZlcnNpb24oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRWZXJzaW9uKCkKICB7CiAgICByZXR1cm4gJzEuMC41JzsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRIZWxwKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBwdWJsaWMgZnVuY3Rpb24gR2V0SGVscCgpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdoZWxwJyk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0QXV0aG9yKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBwdWJsaWMgZnVuY3Rpb24gR2V0QXV0aG9yKCkKICB7CiAgICByZXR1cm4gJ2NhbGd1eTEwMDAnOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldEF1dGhvckVtYWlsKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBwdWJsaWMgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKQogIHsKICAgIHJldHVybiAnY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyc7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0Q2hhbmdlTG9nKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBwdWJsaWMgZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkKICB7CiAgICByZXR1cm4gQGZpbGVfZ2V0X2NvbnRlbnRzKGRpcm5hbWUoX19GSUxFX18pLicvY2hhbmdlbG9nLmluYycpOwogIH0KICAKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgSXNQbHVnaW5Nb2R1bGUoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpCiAgewoJcmV0dXJuIHRydWU7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgSGFzQWRtaW4oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBIYXNBZG1pbigpCiAgewogICAgcmV0dXJuIHRydWU7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0QWRtaW5TZWN0aW9uKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBwdWJsaWMgZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uKCkKICB7CiAgICByZXR1cm4gJ2V4dGVuc2lvbnMnOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldEFkbWluRGVzY3JpcHRpb24oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ21vZGRlc2NyaXB0aW9uJyk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgVmlzaWJsZVRvQWRtaW5Vc2VyKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBwdWJsaWMgZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbihQcm9tb3Rpb25zOjpNQUlOX1BFUk0pIHx8CiAgICAgICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSB8fAogICAgICAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldERlcGVuZGVuY2llcygpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIEdldERlcGVuZGVuY2llcygpCiAgewogICAgcmV0dXJuIGFycmF5KCdDR0V4dGVuc2lvbnMnPT4nMS4xNy4yJywKCQkgJ09yZGVycyc9PicxLjUuMScsCgkJICdQcm9kdWN0cyc9PicyLjQuMicpOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIE1pbmltdW1DTVNWZXJzaW9uKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBwdWJsaWMgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKQogIHsKICAgIHJldHVybiAiMS42LjUiOwogIH0KCQoJCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgSW5zdGFsbFBvc3RNZXNzYWdlKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBwdWJsaWMgZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RpbnN0YWxsJyk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgVW5pbnN0YWxsUG9zdE1lc3NhZ2UoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBVbmluc3RhbGxQb3N0TWVzc2FnZSgpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0dW5pbnN0YWxsJyk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgVW5pbnN0YWxsUHJlTWVzc2FnZSgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIFVuaW5zdGFsbFByZU1lc3NhZ2UoKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygncmVhbGx5X3VuaW5zdGFsbCcpOwogIH0JCgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBBbGxvd0F1dG9JbnN0YWxsKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBwdWJsaWMgZnVuY3Rpb24gQWxsb3dBdXRvSW5zdGFsbCgpCiAgewogICAgcmV0dXJuIEZBTFNFOwogIH0JCgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBBbGxvd0F1dG9VcGdyYWRlKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBwdWJsaWMgZnVuY3Rpb24gQWxsb3dBdXRvVXBncmFkZSgpCiAgewogICAgcmV0dXJuIEZBTFNFOwogIH0JCgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRIZWFkZXJIVE1MKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBwdWJsaWMgZnVuY3Rpb24gR2V0SGVhZGVySFRNTCgpCiAgewogICAgJHR4dCA9IDw8PEVPVAo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgpmaWVsZHNldC5jZ2ZpZWxkc2V0IHsKICBtYXJnaW4tbGVmdDogMjAlOwp9CmxlZ2VuZC5jZ2xlZ2VuZCB7CiAgZm9udC1zaXplOiAxZW07CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKfQoubm9vZmZzZXQgewogIG1hcmdpbi1sZWZ0OiAwOwp9Cjwvc3R5bGU+CkVPVDsKICAgICRvYmogPSYgJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdKUXVlcnlUb29scycpOwogICAgaWYoIGlzX29iamVjdCgkb2JqKSApCiAgICAgIHsKJHRtcGwgPSA8PDxFT1QKe0pRdWVyeVRvb2xzIGFjdGlvbj0naW5janMnIGV4Y2x1ZGU9J2Zvcm0nfQp7SlF1ZXJ5VG9vbHMgYWN0aW9uPSdyZWFkeSd9CkVPVDsKICAgICAgICAkdHh0IC49ICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdG1wbCk7CiAgICAgIH0KICAgIHJldHVybiAkdHh0OwogIH0JCgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBIYXNDYXBhYmlsaXR5KCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBwdWJsaWMgZnVuY3Rpb24gSGFzQ2FwYWJpbGl0eSgkY2FwYWJpbGl0eSwgJHBhcmFtcz1hcnJheSgpKQogIHsKICAgIGlmKCAkY2FwYWJpbGl0eSA9PSAncHJvbW90aW9uc19jYWxjdWxhdGlvbicgKQogICAgICByZXR1cm4gVFJVRTsKCiAgICByZXR1cm4gcGFyZW50OjpIYXNDYXBhYmlsaXR5KCRjYXBhYmlsaXR5LCRwYXJhbXMpOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIFNldFBhcmFtZXRlcnMoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBTZXRQYXJhbWV0ZXJzKCkKICB7CiAgICAkdGhpcy0+QWRkSW1hZ2VEaXIoJ2ljb25zJyk7CiAgICAkdGhpcy0+UmVnaXN0ZXJNb2R1bGVQbHVnaW4oKTsKICAgICR0aGlzLT5SZXN0cmljdFVua25vd25QYXJhbXMoKTsKCiAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdpbmxpbmUnLCdkZWZhdWx0JywkdGhpcy0+TGFuZygncGFyYW1faW5saW5lJykpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2lubGluZScsQ0xFQU5fSU5UKTsKICAgIAogICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigndGVtcGxhdGUnLCcnLCR0aGlzLT5MYW5nKCdwYXJhbV90ZW1wbGF0ZScpKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd0ZW1wbGF0ZScsQ0xFQU5fU1RSSU5HKTsKCiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZShDTEVBTl9SRUdFWFAuJy9wcm9tb18uKi8nLENMRUFOX1NUUklORyk7CiAgfQoKICAvKioKICAgKiBGaW5kIGFwcGxpY2FibGUgcHJvbW90aW9ucyBnaXZlbiBiYXNrZXQgZGV0YWlscywgYW5kIG90aGVyIGluZm9ybWF0aW9uCiAgICoKICAgKiBAcGFyYW0gaW50IFVzZXJJRCBmcm9tIEZFVSBtb2R1bGUKICAgKiBAcGFyYW0gYXJyYXkgQXJyYXkgb2YgaXRlbXMgaW4gdGhlIGJhc2tldCAoYXJyYXkgb2Ygb2JqZWN0cykKICAgKiBAcGFyYW0gZmxvYXQgc3VidG90YWwgb2Ygb3JkZXIgKGJlZm9yZSB0YXhlcyBvciBzaGlwcGluZykKICAgKiBAcGFyYW0gZmxvYXQgd2VpZ2h0IG9mIG9yZGVyIChwcm9kdWN0cyBoYXMgdGhlIHVuaXRzKQogICAqIEBwYXJhbSBpbnQgICB1bml4IGZvcm1hdCBkYXRlIGZvciB3aGljaCBvcmRlciBpcyBhcHBsaWNhYmxlCiAgICogQHJldHVybnMgaGFzaCBvZiBwcm9tb3Rpb24gbmFtZSwgYW5kIGFtb3VudCBvZiBwcm9tb3Rpb24uCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEZpbmRQcm9tb3Rpb25zKCRmZXVfdWlkLCRpdGVtcywkc3VidG90YWwsJHdlaWdodCwkZGF0ZSA9ICcnKQogIHsKICAgIGlmKCBlbXB0eSgkZGF0ZSkgKSAkZGF0ZSA9IHRpbWUoKTsKICAgICRzZXNzID0gbmV3IGNnZV9zZXNzaW9uKCdQcm9tb3Rpb25zJyk7CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAkZGF0ZSA9ICRkYi0+RGJUaW1lU3RhbXAoJGRhdGUpOwoKICAgICRxdWVyeSA9ICdTRUxFQ1QgaWQgRlJPTSAnLlBST01PVElPTlNfVEFCTEUuIgogICAgICAgICAgICAgICBXSEVSRSAoc3RhcnRfZGF0ZSA8PSAkZGF0ZSkgQU5EIChlbmRfZGF0ZSA+PSAkZGF0ZSkKICAgICAgICAgICAgICAgT1JERVIgQlkgb2ZmZXJfdHlwZSBBU0MiOwogICAgJHByb21vdGlvbl9pZHMgPSAkZGItPkdldENvbCgkcXVlcnkpOwogICAgaWYoICEkcHJvbW90aW9uX2lkcyApCiAgICAgIHsKCXJldHVybiBGQUxTRTsKICAgICAgfQoKICAgIC8vIG5vdyB3ZSBoYXZlIGEgbGlzdCBvZiBwcm9tb3Rpb24gaWQncyBsb2FkIGVhY2ggcHJvbW90aW9uCiAgICAvLyBhbmQgdGVzdCBpdC4KICAgIC8vIGNhbGN1YWx0ZSB0aGUgZGlzY291bnRzIGFwcGxpZWQgZm9yIGFsbCBsaW5lIGl0ZW1zCiAgICAvLyBhbmQgY2FsY3VsYXRlIHRoZSB2YWx1ZSBvZiB0aGVtLgogICAgJGRpc2NvdW50X2FtdCA9IDEwMDAwMDAwOwogICAgJGRpc2NvdW50X2l0ZW1zID0gJyc7CiAgICBmb3JlYWNoKCAkcHJvbW90aW9uX2lkcyBhcyAkcHJvbW9faWQgKQogICAgICB7CgkkbWF0Y2hfdHlwZSA9ICcnOwoJJHByb21vID0mIHByb21vX29wczo6bG9hZF9wcm9tb19ieV9pZCgkcHJvbW9faWQpOwoJaWYoICEkcHJvbW8gKSBjb250aW51ZTsKCgkvLyBjaGVjayBhbGwgb2YgdGhlIGNvbmRpdGlvbnMgaW4gdGhlIHByb21vdGlvbgoJJG1hdGNoID0gdHJ1ZTsKCWZvciggJGkgPSAwOyAkaSA8ICRwcm9tby0+Y291bnRfY29uZGl0aW9ucygpOyAkaSsrICkKCSAgewoJICAgICRjb25kaXRpb24gPSYgJHByb21vLT5nZXRfY29uZGl0aW9uKCRpKTsKCSAgICAKCSAgICBzd2l0Y2goICRjb25kaXRpb24tPmdldF9jb25kX3R5cGUoKSApCgkgICAgICB7CgkgICAgICBjYXNlIFBST01PVElPTlNfQ09ORF9GRVU6CgkJaWYoICFwcm9tb190ZXN0czo6dGVzdF9mZXVfdWlkKCRmZXVfdWlkLCRwcm9tbykgKQoJCSAgewoJCSAgICAkbWF0Y2ggPSBmYWxzZTsKCQkgICAgYnJlYWs7CgkJICB9CgkJYnJlYWs7CgoJICAgICAgY2FzZSBQUk9NT1RJT05TX0NPTkRfU1VCVE9UQUw6CgkJaWYoICFwcm9tb190ZXN0czo6dGVzdF9vcmRlcl9zdWJ0b3RhbCgkc3VidG90YWwsJHByb21vKSApCgkJICB7CgkJICAgICRtYXRjaCA9IGZhbHNlOwoJCSAgICBicmVhazsKCQkgIH0KCQlicmVhazsKCgkgICAgICBjYXNlIFBST01PVElPTlNfQ09ORF9DT1VQT046CgkJJGNvdXBvbnMgPSAkc2Vzcy0+Z2V0KCdjb3Vwb25zJywnJyk7CgkJaWYoICRjb3Vwb25zICkKCQkgIHsKCQkgICAgLy8gdGVzdCBhbGwgb2Ygb3VyIGNvdXBvbnMuCgkJICAgICR0ZXN0ID0gZmFsc2U7CgkJICAgIGZvcmVhY2goICRjb3Vwb25zIGFzICRjb3Vwb24gKQoJCSAgICAgIHsKCQkJaWYoIHByb21vX3Rlc3RzOjp0ZXN0X29yZGVyX2NvdXBvbigkY291cG9uLCRwcm9tbykgKQoJCQkgIHsKCQkJICAgICR0ZXN0ID0gdHJ1ZTsKCQkJICB9CgkJICAgICAgfQoJCSAgICBpZiggISR0ZXN0ICkKCQkgICAgICB7CgkJCSRtYXRjaCA9IGZhbHNlOwoJCQlicmVhazsKCQkgICAgICB9CgkJICB9CgkJZWxzZQoJCSAgewoJCSAgICAkbWF0Y2ggPSBmYWxzZTsKCQkgIH0KCQlicmVhazsKCgkgICAgICBjYXNlIFBST01PVElPTlNfQ09ORF9XRUlHSFQ6CgkJaWYoICFwcm9tb190ZXN0czo6dGVzdF9vcmRlcl93ZWlnaHQoJHdlaWdodCwkcHJvbW8pICkKCQkgIHsKCQkgICAgJG1hdGNoID0gZmFsc2U7CgkJICAgIGJyZWFrOwoJCSAgfQoJCWJyZWFrOwoKCSAgICAgIGNhc2UgUFJPTU9USU9OU19DT05EX1BST0RJRDoKCQlpZiggIXByb21vX3Rlc3RzOjp0ZXN0X3NpbmdsZV9wcm9kdWN0KCRpdGVtcywkcHJvbW8pICkKCQkgIHsKCQkgICAgJG1hdGNoID0gZmFsc2U7CgkJICAgIGJyZWFrOwoJCSAgfQoJCWJyZWFrOwoKCSAgICAgIGNhc2UgUFJPTU9USU9OU19DT05EX1BST0RDQVQ6CgkJaWYoICFwcm9tb190ZXN0czo6dGVzdF9wcm9kdWN0X2Zyb21fY2F0ZWdvcnkoJGl0ZW1zLCRwcm9tbykgKQoJCSAgewoJCSAgICAkbWF0Y2ggPSBmYWxzZTsKCQkgICAgYnJlYWs7CgkJICB9CgkJYnJlYWs7CgoJICAgICAgY2FzZSBQUk9NT1RJT05TX0NPTkRfUFJPREhJRVI6CgkJaWYoICFwcm9tb190ZXN0czo6dGVzdF9wcm9kdWN0X2Zyb21faGllcmFyY2h5KCRpdGVtcywkcHJvbW8pICkKCQkgIHsKCQkgICAgJG1hdGNoID0gZmFsc2U7CgkJICAgIGJyZWFrOwoJCSAgfQoJCWJyZWFrOwoJICAgICAgfQoJICB9CgoJLy8gY2hlY2sgdGhlIHZhbHVlIG9mIHRoZSBkaXNjb3VudAkKCWlmKCAkbWF0Y2ggKQoJICB7CgkgICAgJGFkal9pdGVtcyA9IHByb21vX29wczo6Y2FsY3VsYXRlX2Rpc2NvdW50KCRwcm9tbywkc3VidG90YWwsJGl0ZW1zKTsKCSAgICAkYWRqX2FtdCAgID0gcHJvbW9fb3BzOjpjYWxjX3RvdGFsX2Rpc2NvdW50KCRhZGpfaXRlbXMpOwoJICAgIGlmKCAkZGlzY291bnRfYW10ID4gJGFkal9hbXQgKQoJICAgICAgewoJCSRkaXNjb3VudF9hbXQgPSAkYWRqX2FtdDsKCQkkZGlzY291bnRfaXRlbXMgPSAkYWRqX2l0ZW1zOwoJICAgICAgfQoJICAgIGNvbnRpbnVlOwoJICB9CiAgICAgIH0KCiAgICByZXR1cm4gJGRpc2NvdW50X2l0ZW1zOwogIH0KCgogIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gYWRkX2NvdXBvbigkY29kZSkKICB7CiAgICAkc2VzcyA9IG5ldyBjZ2Vfc2Vzc2lvbignUHJvbW90aW9ucycpOwogICAgJHRtcCA9ICRzZXNzLT5nZXQoJ2NvdXBvbnMnLCcnKTsKICAgIGlmKCBpc19hcnJheSgkdG1wKSApCiAgICAgIHsKCWlmKCAhaW5fYXJyYXkoJGNvZGUsJHRtcCkgKQoJICAkdG1wW10gPSAkY29kZTsKICAgICAgfQogICAgZWxzZQogICAgICB7CgkkdG1wID0gYXJyYXkoKTsKCSR0bXBbXSA9ICRjb2RlOwogICAgICB9CiAgICAkc2Vzcy0+cHV0KCdjb3Vwb25zJywkdG1wKTsKICB9Cn0gLy8gY2xhc3MKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/skeleton.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFByb21vdGlvbnMgKGMpIDIwMDggYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGNyZWF0aW5nLCBpbnRlcmZhY2luZyB3aXRoCiMgIGFuZCBtYW5hZ2luZyBwcm9tb3Rpb25zIG9yIHNhbGVzIGluIHRoZSBFLWNvbWVtcmNlIHN1aXRlLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/admin_addpromo.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRwcm9tby0+Z2V0X2lkKCkgPT0gJyd9CiAgPGgzPnskbW9kLT5MYW5nKCdsYmxfYWRkX3Byb21vJyl9PC9oMz4Ke2Vsc2V9CiAgPGgzPnskbW9kLT5MYW5nKCdsYmxfZWRpdF9wcm9tbycpfTwvaDM+CnsvaWZ9Cgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+Ci8vIDwhW0NEQVRBWyAKdmFyIGNvbmRfcHJvbXB0cyA9IG5ldyBBcnJheSgpOwp2YXIgY29uZF9uYW1lcyA9IG5ldyBBcnJheSgpOwp2YXIgY29uZF9pbmZvID0gbmV3IEFycmF5KCk7CnZhciBlcnJvcnMgPSBuZXcgQXJyYXkoKTsKdmFyIG9mZmVyX3Byb21wdHMgPSBuZXcgQXJyYXkoKTsKe2ZvcmVhY2ggZnJvbT0kY29uZGl0aW9udHlwZXMga2V5PSduYW1lJyBpdGVtPSd2YWx1ZSd9CmNvbmRfbmFtZXNbInskbmFtZX0iXSA9ICJ7JHZhbHVlfSI7CntjYXB0dXJlIGFzc2lnbj0ndG1wJ31wcm9tcHRkYXRhX3skbmFtZX17L2NhcHR1cmV9CmNvbmRfcHJvbXB0c1sieyRuYW1lfSJdID0gInskbW9kLT5MYW5nKCR0bXApfSI7CntjYXB0dXJlIGFzc2lnbj0ndG1wJ31pbmZvZGF0YV97JG5hbWV9ey9jYXB0dXJlfQpjb25kX2luZm9bInskbmFtZX0iXSA9ICJ7JG1vZC0+TGFuZygkdG1wKX0iOwp7L2ZvcmVhY2h9Cntmb3JlYWNoIGZyb209JG9mZmVydHlwZXMga2V5PSduYW1lJyBpdGVtPSd2YWx1ZSd9CntjYXB0dXJlIGFzc2lnbj0ndG1wJ31wcm9tcHRvZmZlcl97JG5hbWV9ey9jYXB0dXJlfQpvZmZlcl9wcm9tcHRzWyJ7JG5hbWV9Il0gPSAieyRtb2QtPkxhbmcoJHRtcCl9IjsKey9mb3JlYWNofQplcnJvcnNbJ25vX3ZhbHVlJ10gPSAieyRtb2QtPkxhbmcoJ2Vycm9yX3NwZWNpZnlfdmFsdWUnKX0iOwplcnJvcnNbJ2FscmVhZHlfcHJvZCddID0gInskbW9kLT5MYW5nKCdlcnJvcl9hbHJlYWR5X3Byb2R1Y3RfY29uZCcpfSI7CmVycm9yc1snZHVwbGljYXRlX3R5cGUnXSA9ICJ7JG1vZC0+TGFuZygnZXJyb3JfZHVwbGljYXRlX2NvbmRpdGlvbicpfSI7CmVycm9yc1snbm9fbmFtZSddID0gInskbW9kLT5MYW5nKCdlcnJvcl9wcm9tb3Rpb25fbmFtZScpfSI7CmVycm9yc1snbm9fb2ZmZXJfZGF0YSddID0gInskbW9kLT5MYW5nKCdlcnJvcl9ub19vZmZlcl9kYXRhJyl9IjsKZXJyb3JzWydub19jb25kaXRpb25zJ10gPSAieyRtb2QtPkxhbmcoJ3dhcm5pbmdfbm9fY29uZGl0aW9ucycpfSI7Cgp7bGl0ZXJhbH0KZnVuY3Rpb24gaXNOdW1lcmljKGZvcm1fdmFsdWUpIAp7IAogICAgaWYgKGZvcm1fdmFsdWUubWF0Y2goL15cZCskLykgPT0gbnVsbCkgCiAgICAgICAgcmV0dXJuIGZhbHNlOyAKICAgIGVsc2UgCiAgICAgICAgcmV0dXJuIHRydWU7IAp9IAoKZnVuY3Rpb24gaW5fYXJyYXkobmVlZGxlLGhheXN0YWNrKQp7CiAgZm9yKCBpID0gMDsgaSA8IGhheXN0YWNrLmxlbmd0aDsgaSsrICkKICB7CiAgICBpZiggaGF5c3RhY2tbaV0gPT0gbmVlZGxlICkgcmV0dXJuIHRydWU7CiAgfQogIHJldHVybiBmYWxzZTsKfQoKZnVuY3Rpb24gZ2V0X2NvbmRpdGlvbnMoKQp7CiAgdmFyIGNvbmRzID0gbmV3IEFycmF5KCk7CiAgalF1ZXJ5KCcjY29uZGxpc3QgPiAuY29uZGl0aW9uX3JvdycpLmVhY2goZnVuY3Rpb24oKXsKICAgIHZhciB0eXBlID0galF1ZXJ5KHRoaXMpLmZpbmQoJy5zYXZlZF9jb25kdHlwZScpLnZhbCgpOwogICAgdmFyIGRhdGEgPSBqUXVlcnkodGhpcykuZmluZCgnLnNhdmVkX2NvbmRkYXRhJykudmFsKCk7CiAgICBjb25kc1t0eXBlXSA9IGRhdGE7CiAgfSk7CiAgcmV0dXJuIGNvbmRzOwp9CgpmdW5jdGlvbiBjb25kaXRpb25faW52YWxpZCh0eXBlLGRhdGEpCnsKICB2YXIgY29uZHMgPSBnZXRfY29uZGl0aW9ucygpOwogIC8vIHBhc3Mgb25lLCBsb29rIGZvciBkdXBsaWNhdGUgdHlwZXMKICBmb3IoIHZhciBjdHlwZSBpbiBjb25kcyApCiAgewogICAgaWYoIGN0eXBlID09IHR5cGUgKSByZXR1cm4gJ2R1cGxpY2F0ZV90eXBlJzsKICB9CgogIC8vIHBhc3MgdHdvLCBsb29rIGZvciBkdXBsaWNhdGUgcHJvZHVjdCB0eXBlcwogIGZvciggdmFyIGN0eXBlIGluIGNvbmRzICkKICB7CiAgICBpZiggY3R5cGUubWF0Y2goL1BST0QvKSAmJiB0eXBlLm1hdGNoKC9QUk9ELykgKQogICAgICB7CiAgICAgICAgcmV0dXJuICdhbHJlYWR5X3Byb2QnOwogICAgICB9CiAgfQogIHJldHVybiBmYWxzZTsKfQoKalF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogIC8vIGluaXRpYWxpemUgdGhlIGRhdGEgcHJvbXB0CiAgdmFyIHR5cGUgPSBqUXVlcnkoJyNjb25kdHlwZScpLnZhbCgpOwogIGpRdWVyeSgnI2RhdGFwcm9tcHQnKS5odG1sKGNvbmRfcHJvbXB0c1t0eXBlXSk7CiAgalF1ZXJ5KCcjZGF0YWluZm8nKS5odG1sKGNvbmRfaW5mb1t0eXBlXSk7CgogIC8vIGhhbmRsZXIgZm9yIGV4dHJhIGFyZWEKICBqUXVlcnkoJyNleHRyYXMnKS5oaWRlKCk7CiAgalF1ZXJ5KCcjbGlua2V4dHJhcycpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICBqUXVlcnkoJyNleHRyYXMnKS50b2dnbGUoKTsKICAgIHJldHVybiBmYWxzZTsKICB9KTsKCiAgLy8gc2V0dXAgaW5pdGlhbCBjb25kaXRpb24gbGlzdCBzdHVmZi4KICBqUXVlcnkoJyNjb25kbGlzdCA+IC5jb25kaXRpb25fcm93Jykuc2hvdygpOwogIGpRdWVyeSgnYS5kZWxjb25kJykuY2xpY2soZnVuY3Rpb24oKXsKICAgICBqUXVlcnkodGhpcykuY2xvc2VzdCgnLmNvbmRpdGlvbl9yb3cnKS5yZW1vdmUoKTsKICAgICByZXR1cm4gZmFsc2U7CiAgfSk7CgogIC8vIGluaXRpYWxpemUgdGhlIG9mZmVyIHByb21wdAogIHR5cGUgPSBqUXVlcnkoJyNvZmZlcnR5cGUnKS52YWwoKTsKICBqUXVlcnkoJyNvZmZlcmRhdGEnKS5odG1sKG9mZmVyX3Byb21wdHNbdHlwZV0pOwogIGpRdWVyeSgnI29mZmVydHlwZScpLmNoYW5nZShmdW5jdGlvbigpewogICAgLy8gb2ZmZXIgdHlwZSBjaGFuZ2VkCiAgICB2YXIgdHlwZSA9IGpRdWVyeSgnI29mZmVydHlwZScpLnZhbCgpOwogICAgalF1ZXJ5KCcjb2ZmZXJkYXRhJykuaHRtbChvZmZlcl9wcm9tcHRzW3R5cGVdKTsKICB9KTsKIAogIC8vIGhhbmRsZSBjb25kaXRpb24gdHlwZSBjaGFuZ2VkCiAgalF1ZXJ5KCcjY29uZHR5cGUnKS5jaGFuZ2UoZnVuY3Rpb24oKXsKICAgIC8vIGNvbmRpdGlvbiB0eXBlIGNoYW5nZWQKICAgIHZhciB0eXBlID0galF1ZXJ5KCcjY29uZHR5cGUnKS52YWwoKTsKICAgIGpRdWVyeSgnI2RhdGFwcm9tcHQnKS5odG1sKGNvbmRfcHJvbXB0c1t0eXBlXSk7CiAgICBqUXVlcnkoJyNkYXRhaW5mbycpLmh0bWwoY29uZF9pbmZvW3R5cGVdKTsKICB9KTsKCiAgLy8gaGFuZGxlIGFkZCBjb25kaXRpb24gY2xpY2tlZC4KICBqUXVlcnkoJyNhZGRidG4nKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIGVsZW0gPSBqUXVlcnkoJyNjb25kaXRpb25fcm93X3RtcGwnKS5jbG9uZSgpOwogICAgZWxlbS5hdHRyKCdpZCcsJycpOwogICAgdmFyIGNvbmR0eXBlID0galF1ZXJ5KCcjY29uZHR5cGUnKS52YWwoKTsKICAgIHZhciBjb25kZGF0YSA9IGpRdWVyeSgnI2NvbmRkYXRhJykudmFsKCk7CiAgICBpZiggY29uZGRhdGEgPT0gJycgKQogICAgICB7CiAgICAgICAgYWxlcnQoZXJyb3JzWydub192YWx1ZSddKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIGVsc2UgaWYoIGNvbmR0eXBlID09ICdQUk9NT1RJT05TX0NPTkRfUFJPRElEJyApCiAgICAgIHsKICAgICAgICBpZiggcGFyc2VJbnQoY29uZGRhdGEpIDw9IDAgKQoJICB7CiAgICAgICAgICAgIGFsZXJ0KGVycm9yc1snaW52YWxpZF92YWx1ZSddKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQogICAgICB9CiAgICBlbHNlIGlmKCBjb25kdHlwZSA9PSAnUFJPTU9USU9OU19DT05EX1NVQlRPVEFMJyApCiAgICAgIHsKCS8vIHRvZG8sIGVycm9yIGNoZWNrIGhlcmUKICAgICAgfQogICAgZXJyb3IgPSBjb25kaXRpb25faW52YWxpZChjb25kdHlwZSxjb25kZGF0YSk7CiAgICBpZiggZXJyb3IgKQogICAgICB7CiAgICAgICAgYWxlcnQoZXJyb3JzW2Vycm9yXSk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICBlbGVtLmZpbmQoJy5zYXZlZF9jb25kdHlwZScpLnZhbChjb25kdHlwZSk7CiAgICBlbGVtLmZpbmQoJy5zYXZlZF9jb25kZGF0YScpLnZhbChjb25kZGF0YSk7CiAgICBlbGVtLmZpbmQoJy5kaXNwX2NvbmR0eXBlJykuaHRtbChjb25kX25hbWVzW2NvbmR0eXBlXSk7CiAgICBlbGVtLmZpbmQoJy5kaXNwX2NvbmRkYXRhJykuaHRtbChjb25kZGF0YSk7CiAgICBqUXVlcnkoJyNjb25kbGlzdCcpLmFwcGVuZChlbGVtKTsKCiAgICAvLyBoYW5kbGUgcm93IGRlbGV0ZQogICAgalF1ZXJ5KCdhLmRlbGNvbmQnKS5jbGljayhmdW5jdGlvbigpewogICAgICAgalF1ZXJ5KHRoaXMpLmNsb3Nlc3QoJy5jb25kaXRpb25fcm93JykucmVtb3ZlKCk7CiAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9KTsKCiAgICBlbGVtLmZhZGVJbignc2xvdycpOwogICAgcmV0dXJuIGZhbHNlOwogIH0pOwoKICAvLyBoYW5kbGVmb3JtIHN1Ym1pdAogIGpRdWVyeSgnI3N1Ym1pdCcpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICB2YXIgbmFtZSA9IGpRdWVyeSgnI25hbWUnKS52YWwoKTsKICAgIHZhciBvZmZlcmRhdGEgPSBqUXVlcnkoJyNvZmZlcl9kYXRhJykudmFsKCk7CiAgICBpZiggbmFtZSA9PSAnJyApCiAgICB7CglhbGVydChlcnJvcnNbJ25vX25hbWUnXSk7CglyZXR1cm4gZmFsc2U7CiAgICB9CiAgICBpZiggb2ZmZXJkYXRhID09ICcnICkKICAgIHsKCWFsZXJ0KGVycm9yc1snbm9fb2ZmZXJfZGF0YSddKTsKCXJldHVybiBmYWxzZTsKICAgIH0KICAgIC8vIHdhcm4gYWJvdXQgbm8gY29uZGl0aW9ucy4KICAgIGlmKCBqUXVlcnkoJyNjb25kbGlzdCcpLmNoaWxkcmVuKCkuc2l6ZSgpID09IDAgKQogICAgewoJcmV0dXJuIGNvbmZpcm0oZXJyb3JzWydub19jb25kaXRpb25zJ10pOwogICAgfQogICAgcmV0dXJuIHRydWU7CiAgICAvLyBzdWNjZXNzCiAgfSk7Cgp9KTsKey9saXRlcmFsfQovLyBdXT4KPC9zY3JpcHQ+Cgp7aW5jbHVkZSBmaWxlPSdtb2R1bGVfZmlsZV90cGw6UHJvbW90aW9ucztpbmNfY29uZGl0aW9uX3Jvdy50cGwnfQoKeyRmb3Jtc3RhcnR9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X25hbWUnKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSduYW1lJyBuYW1lPSJ7JGFjdGlvbmlkfW5hbWUiIHZhbHVlPSJ7JHByb21vLT5nZXRfbmFtZSgpfSIgc2l6ZT0iODAiIG1heGxlbmd0aD0iMjU1IiAvPgogIDwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9zdGFydF9kYXRlJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIHtjYXB0dXJlIGFzc2lnbj0ndG1wJ317JGFjdGlvbmlkfXN0YXJ0X2RhdGVfey9jYXB0dXJlfQogICAge2h0bWxfc2VsZWN0X2RhdGUgcHJlZml4PSR0bXAgdGltZT0kcHJvbW8tPmdldF9zdGFydF9kYXRlKCkgZW5kX3llYXI9Iis1In0KICA8L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfZW5kX2RhdGUnKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAge2NhcHR1cmUgYXNzaWduPSd0bXAnfXskYWN0aW9uaWR9ZW5kX2RhdGVfey9jYXB0dXJlfQogICAge2h0bWxfc2VsZWN0X2RhdGUgcHJlZml4PSR0bXAgdGltZT0kcHJvbW8tPmdldF9lbmRfZGF0ZSgpIGVuZF95ZWFyPSIrNSJ9CiAgPC9wPgo8L2Rpdj4KCjxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9jb25kaXRpb25zJyl9OjwvcD4KPGZpZWxkc2V0IGNsYXNzPSJjZ2ZpZWxkc2V0IG5vb2Zmc2V0Ij4KICA8ZGl2IGlkPSJjb25kbGlzdCI+CiAge2lmIGlzc2V0KCRjb25kaXRpb25zKX0KICAgIHsqIGRvIGEgZm9yZWFjaCBoZXJlIGZvciBhbGwgb2YgdGhlIGN1cnJlbnQgY29uZGl0aW9ucyAqfQogICAge2ZvcmVhY2ggZnJvbT0kY29uZGl0aW9ucyBpdGVtPSdjb25kJ30KICAgICAge2luY2x1ZGUgZmlsZT0nbW9kdWxlX2ZpbGVfdHBsOlByb21vdGlvbnM7aW5jX2NvbmRpdGlvbl9yb3cudHBsJ30KICAgIHsvZm9yZWFjaH0KICB7L2lmfQogIDwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfYWRkX2NvbmRpdGlvbicpfTo8L3A+CiAgICA8dGFibGUgc3R5bGU9Im1hcmdpbi1sZWZ0OiAyMCU7IGJvcmRlcjogMXB4IHNvbGlkICM5OTk7IHBhZGRpbmc6IDFweDsiPgogICAgICA8dHI+CiAgICAgICAgPHRkPgogICAgICAgICB7JG1vZC0+TGFuZygncHJvbXB0X2NvbmRpdGlvbl90eXBlJyl9OgogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1hZGRfY29uZHR5cGUiIGlkPSJjb25kdHlwZSI+CiAgICAgICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRjb25kaXRpb250eXBlc30KICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICA8L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPgogICAgICAgICA8c3BhbiBpZD0iZGF0YXByb21wdCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9jb25kaXRpb25fZGF0YScpfTwvc3Bhbj46CiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICA8aW5wdXQgaWQ9ImNvbmRkYXRhIiB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfWFkZF9jb25kZGF0YSIgc2l6ZT0iMzAiLz4KICAgICAgICA8L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgPHRkPjxzcGFuIGlkPSJkYXRhaW5mbyIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAxZW07Ij57JG1vZC0+TGFuZygnaW5mb19jb25kaXRpb25fZGF0YScpfTwvc3Bhbj48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgPHRkPjxpbnB1dCB0eXBlPSJzdWJtaXQiIGlkPSJhZGRidG4iIG5hbWU9InskYWN0aW9uaWR9YWRkIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2FkZCcpfSIvPjwvdGQ+CiAgICAgIDwvdHI+CiAgICA8L3RhYmxlPgo8L2Rpdj4KPGJyLz4KPHA+eyRtb2QtPkxhbmcoJ2luZm9fY29uZGl0aW9ucycpfTwvcD4KPC9maWVsZHNldD4KCjxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9vZmZlcicpfTo8L3A+CjxmaWVsZHNldCBjbGFzcz0iY2dmaWVsZHNldCI+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IG5vb2Zmc2V0Ij4KICA8cCBjbGFzcz0icGFnZXRleHQgbm9vZmZzZXQiPgogICAgeyRtb2QtPkxhbmcoJ3Byb21wdF9vZmZlcl90eXBlJyl9OgogIDwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0IG5vb2Zmc2V0Ij4KICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1vZmZlcl90eXBlIiBpZD0ib2ZmZXJ0eXBlIj4KICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kb2ZmZXJ0eXBlcyBzZWxlY3RlZD0kcHJvbW8tPmdldF9vZmZlcl90eXBlKCl9CiAgICA8L3NlbGVjdD4KICA8L3A+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0IG5vb2Zmc2V0IiBpZD0ib2ZmZXJkYXRhIj4KICAgIHskbW9kLT5MYW5nKCdwcm9tcHRfb2ZmZXJfZGF0YScpfToKICA8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCBub29mZnNmZmV0Ij4KICAgIDxpbnB1dCBpZD0ib2ZmZXJfZGF0YSIgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1vZmZlcl9kYXRhIiBzaXplPSIxMCIgbWF4bGVuZ3RoPSIyNTUiIHZhbHVlPSJ7JHByb21vLT5nZXRfb2ZmZXJfZGF0YSgpfSIvPgogIDwvcD4KICA8L2Rpdj4KPC9maWVsZHNldD4KCnsqCjxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9leHRyYXMnKX06IDxhIGlkPSJsaW5rZXh0cmFzIj4rPC9hPjwvcD4KPGZpZWxkc2V0IGNsYXNzPSJjZ2ZpZWxkc2V0IiBpZD0iZXh0cmFzIj4KICA8cCBjbGFzcz0icGFnZW92ZXJmbG93Ij57JG1vZC0+TGFuZygnaW5mb19leHRyYXMnKX08L3A+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IG5vb2Zmc2V0Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwOyI+eyRtb2QtPkxhbmcoJ3Byb21wdF9pbWFnZScpfTwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiIHN0eWxlPSJtYXJnaW4tbGVmdDogMDsiPgogICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWltYWdlIj4KICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kZmlsZV9saXN0IHNlbGVjdGVkPSRwcm9tby0+Z2V0X2ltYWdlKCl9CiAgICA8L3NlbGVjdD4KICAgIDwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0IiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDA7Ij57JG1vZC0+TGFuZygncHJvbXB0X2Rlc2NyaXB0aW9uJyl9PC9wPgogIDx0ZXh0YXJlYSBjbGFzcz0ibm9vZmZzZXQiIHJvd3M9IjMiIGNvbHM9IjUwIiBuYW1lPSJ7JGFjdGlvbmlkfWRlc2NyaXB0aW9uIj57JHByb21vLT5nZXRfZGVzY3JpcHRpb24oKX08L3RleHRhcmVhPgogIDwvZGl2Pgo8L2ZpZWxkc2V0PgoqfQoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIGlkPSdzdWJtaXQnIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIgLz4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9Y2FuY2VsIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2NhbmNlbCcpfSIgLz4KICA8L3A+CjwvZGl2Pgp7JGZvcm1lbmR9]]></data>
	</file>
	<file>
	  <filename>/templates/admin_dflt_templates_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmb3Jtc3RhcnR9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgeyRpbmZvX2RmbHRfdGVtcGxhdGV9CjwvZGl2PgoKPGZpZWxkc2V0PgogIDxsZWdlbmQ+eyRsZWdlbmRfY291cG9uZm9ybXRlbXBsYXRlfTwvbGVnZW5kPgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2NvdXBvbmZvcm10ZW1wbGF0ZX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9jb3Vwb25mb3JtdGVtcGxhdGV9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0X2NvdXBvbmZvcm10ZW1wbGF0ZX0mbmJzcDt7JHJlc2V0X2NvdXBvbmZvcm10ZW1wbGF0ZX08L3A+CiAgPC9kaXY+CjwvZmllbGRzZXQ+Cgp7JGZvcm1lbmR9]]></data>
	</file>
	<file>
	  <filename>/templates/admin_promotionstab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogcHJvbW90aW9ucyB0YWIgdGVtcGxhdGUgKn0Ke2lmIGlzc2V0KCRwcm9tb3Rpb25zKX0KPHRhYmxlIGNsYXNzPSJwYWdldGFibGUgY21zX3NvcnRhYmxlIHRhYmxlc29ydGVyIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRoZWFkPgogICA8dHI+CiAgICAgPHRoPnskbW9kLT5MYW5nKCdwcm9tcHRfaWQnKX08L3RoPgogICAgIDx0aD57JG1vZC0+TGFuZygncHJvbXB0X25hbWUnKX08L3RoPgogICAgIDx0aD57JG1vZC0+TGFuZygncHJvbXB0X3N0YXJ0X2RhdGUnKX08L3RoPgogICAgIDx0aD57JG1vZC0+TGFuZygncHJvbXB0X2VuZF9kYXRlJyl9PC90aD4KICAgICA8dGggY2xhc3M9InBhZ2VpY29uIHtsaXRlcmFsfXtzb3J0ZXI6IGZhbHNlfXsvbGl0ZXJhbH0iPiZuYnNwOzwvdGg+CiAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiB7bGl0ZXJhbH17c29ydGVyOiBmYWxzZX17L2xpdGVyYWx9Ij4mbmJzcDs8L3RoPgogICA8L3RyPgogIDwvdGhlYWQ+CiAge2ZvcmVhY2ggZnJvbT0kcHJvbW90aW9ucyBpdGVtPSdlbnRyeSd9CiAgICA8dHI+CiAgICAgIDx0ZD57JGVudHJ5LmlkfTwvdGQ+CiAgICAgIDx0ZD48YSBocmVmPSJ7JGVudHJ5LmVkaXRfdXJsfSIgdGl0bGU9InskbW9kLT5MYW5nKCdlZGl0Jyl9Ij57JGVudHJ5Lm5hbWV9PC9hPjwvdGQ+CiAgICAgIDx0ZD4KICAgICAgICB7KiBzdGFydCBkYXRlICp9CiAgICAgICAgeyRlbnRyeS5zdGFydF9kYXRlfGNtc19kYXRlX2Zvcm1hdH0KICAgICAgPC90ZD4KICAgICAgPHRkPgogICAgICAgIHsqIGVuZCBkYXRlICp9CiAgICAgICAge2lmICRlbnRyeS5lbmRfZGF0ZV91dCA8ICRzbWFydHkubm93fQogICAgICAgICAgPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQ7Ij57JGVudHJ5LmVuZF9kYXRlfGNtc19kYXRlX2Zvcm1hdH08L3NwYW4+CiAgICAgICAge2Vsc2V9CiAgICAgICAgICB7JGVudHJ5LmVuZF9kYXRlfGNtc19kYXRlX2Zvcm1hdH0KICAgICAgICB7L2lmfQogICAgICA8L3RkPgogICAgICA8dGQ+CiAgICAgICAgeyRlbnRyeS5lZGl0X2xpbmt9CiAgICAgIDwvdGQ+CiAgICAgIDx0ZD4KICAgICAgICB7JGVudHJ5LmRlbGV0ZV9saW5rfQogICAgICA8L3RkPgogICAgPC90cj4KICB7L2ZvcmVhY2h9CiAgPHRib2R5PgogIDwvdGJvZHk+CjwvdGFibGU+CnsvaWZ9Cgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGFkZGxpbmt9PC9wPjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_settingstab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KalF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKICBqUXVlcnkoJy5oaWRhYmxlJykuaGlkZSgpOwogIGpRdWVyeSgnIycrJ3svbGl0ZXJhbH17JGRmbHRfb2ZmZXJfdHlwZX17bGl0ZXJhbH0nKS5zaG93KCk7CiAgalF1ZXJ5KCcjb2ZmZXJ0eXBlJykuY2hhbmdlKGZ1bmN0aW9uKCl7CiAgICB2YXIgdmFsID0gJyMnK2pRdWVyeSh0aGlzKS52YWwoKTsKICAgIGpRdWVyeSgnLmhpZGFibGUnKS5oaWRlKCk7CiAgICBqUXVlcnkodmFsKS5zaG93KCk7CiAgfSk7Cn0pOwo8L3NjcmlwdD4Key9saXRlcmFsfQoKeyRmb3Jtc3RhcnR9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2RmbHRfcHJvbW90aW9uX3BlcmlvZCcpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICB7Y2FwdHVyZSBhc3NpZ249J3RtcCd9eyRhY3Rpb25pZH1wcm9tb3Rpb25fcGVyaW9key9jYXB0dXJlfQogICAge2h0bWxfb3B0aW9ucyBuYW1lPSR0bXAgb3B0aW9ucz0kcHJvbW90aW9uX3BlcmlvZHMgc2VsZWN0ZWQ9JGRmbHRfcHJvbW90aW9uX3BlcmlvZH0KICA8L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfZGZsdF9vZmZlcl90eXBlJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIHtjYXB0dXJlIGFzc2lnbj0ndG1wJ317JGFjdGlvbmlkfW9mZmVyX3R5cGV7L2NhcHR1cmV9CiAgICA8c2VsZWN0IG5hbWU9InskdG1wfSIgaWQ9Im9mZmVydHlwZSI+CiAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JG9mZmVyX3R5cGVzIHNlbGVjdGVkPSRkZmx0X29mZmVyX3R5cGV9CiAgICA8L3NlbGVjdD4KICA8L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IGhpZGFibGUiIGlkPSJQUk9NT1RJT05TX09GRkVSX1BFUkNFTlQiPgogPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X3BlcmNlbnRhZ2VfZGlzY291bnQnKX06PC9wPgogPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfW9mZmVyX3BlcmNlbnQiIHNpemU9IjUiIG1heGxlbmd0aD0iNSIgdmFsdWU9InskZGZsdF9vZmZlcl9kYXRhfSIvPgogPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IGhpZGFibGUiIGlkPSJQUk9NT1RJT05TX09GRkVSX0RJU0NPVU5UIj4KIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9wcmljZV9kaXNjb3VudCcpfTo8L3A+CiA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgeyRjdXJyZW5jeV9zeW1ib2x9PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9b2ZmZXJfcHJpY2UiIHNpemU9IjUiIG1heGxlbmd0aD0iNSIgdmFsdWU9InskZGZsdF9vZmZlcl9kYXRhfSIvPgogPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IGhpZGFibGUiIGlkPSJQUk9NT1RJT05TX09GRkVSX1BST0RVQ1QiPgp7KiA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfZnJlZV9wcm9kdWN0Jyl9OjwvcD4KIDxwIGNsYXNzPSJwYWdlaW5wdXQiPiZuYnNwOzwvcD4qfQo8L2Rpdj4KCntpZiAkZGZsdF9vZmZlcl90eXBlID09ICdQUk9NT1RJT05TX09GRkVSX1BFUkNFTlQnfQp7ZWxzZWlmICRkZmx0X29mZmVyX3R5cGUgPT0gJ1BST01PVElPTlNfT0ZGRVJfRElTQ09VTlQnfQp7ZWxzZX0Key9pZn0KCgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9pbWFnZV9kaXInKX08L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1pbWFnZV9kaXIiIHZhbHVlPSJ7JGltYWdlX2Rpcn0iIHNpemU9IjUwIiBtYXhsZW5ndGg9IjI1NSIvPgogICAgPGJyLz4KICAgIHskbW9kLT5MYW5nKCdpbmZvX2ltYWdlX2RpcicpfQogIDwvcD4KPC9kaXY+Cgp7KiBwcm9tb3Rpb25hbCBtZXNzYWdlcyAqfQo8ZmllbGRzZXQ+CjxsZWdlbmQ+eyRtb2QtPkxhbmcoJ2xibF9wcm9tb19tZXNzYWdlcycpfTombmJzcDs8L2xlZ2VuZD4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfZXJyb3JfaW52YWxpZCcpfTwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDx0ZXh0YXJlYSByb3dzPSIzIiBjb2xzPSI1MCIgbmFtZT0ieyRhY3Rpb25pZH1lcnJvcl9pbnZhbGlkIj57JGVycm9yX2ludmFsaWRfY29kZX08L3RleHRhcmVhPgogIDwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9lcnJvcl9lbXB0eScpfTwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDx0ZXh0YXJlYSByb3dzPSIzIiBjb2xzPSI1MCIgbmFtZT0ieyRhY3Rpb25pZH1lcnJvcl9lbXB0eSI+eyRlcnJvcl9lbXB0eV9jb2RlfTwvdGV4dGFyZWE+CiAgPC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X21zZ192YWxpZF9jb2RlJyl9PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPHRleHRhcmVhIHJvd3M9IjMiIGNvbHM9IjUwIiBuYW1lPSJ7JGFjdGlvbmlkfW1zZ192YWxpZCI+eyRtc2dfdmFsaWRfY29kZX08L3RleHRhcmVhPgogIDwvcD4KPC9kaXY+Cgo8L2ZpZWxkc2V0PgoKCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfXN1Ym1pdCIgdmFsdWU9InskbW9kLT5MYW5nKCdzdWJtaXQnKX0iLz4KICA8L3A+CjwvZGl2Pgp7JGZvcm1lbmR9]]></data>
	</file>
	<file>
	  <filename>/templates/inc_condition_row.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogdGVtcGxhdGUgZm9yIGNvbmRpdGlvbiByb3dzICp9Cnthc3NpZ24gdmFyPSJjb25kdHlwZSIgdmFsdWU9IklOVkFMSUQifQp7YXNzaWduIHZhcj0iY29uZGRhdGEiIHZhbHVlPSJJTlZBTElEIn0Ke2lmIGlzc2V0KCRjb25kKX0KICB7YXNzaWduIHZhcj0iY29uZHR5cGUiIHZhbHVlPSRjb25kLT5nZXRfY29uZF90eXBlKCl9CiAge2Fzc2lnbiB2YXI9ImNvbmRkYXRhIiB2YWx1ZT0kY29uZC0+Z2V0X2RhdGEoKX0Key9pZn0KPGRpdiBpZD0iY29uZGl0aW9uX3Jvd190bXBsIiBjbGFzcz0nY29uZGl0aW9uX3Jvdycgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KICA8aW5wdXQgY2xhc3M9InNhdmVkX2NvbmR0eXBlIiB0eXBlPSJoaWRkZW4iIG5hbWU9InskYWN0aW9uaWR9c2F2ZWRfY29uZHR5cGVbXSIgdmFsdWU9InskY29uZHR5cGV9Ii8+CiAgPGlucHV0IGNsYXNzPSJzYXZlZF9jb25kZGF0YSIgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfXNhdmVkX2NvbmRkYXRhW10iIHZhbHVlPSJ7JGNvbmRkYXRhfSIvPgogIDx0YWJsZSBzdHlsZT0icGFkZGluZzogMXB4OyI+CiAgICA8dHI+CiAgICAgIDx0ZD4KICAgICAgICA8c3BhbiBjbGFzcz0nZGlzcF9jb25kdHlwZSc+eyRtb2QtPkxhbmcoJGNvbmR0eXBlKX08L3NwYW4+CiAgICAgIDwvdGQ+CiAgICAgIDx0ZD4KICAgICAgICA8c3BhbiBjbGFzcz0nZGlzcF9jb25kZGF0YSc+eyRjb25kZGF0YX08L3NwYW4+CiAgICAgIDwvdGQ+CiAgICAgIDx0ZD4KICAgICAgICA8YSBjbGFzcz0iZGVsY29uZCIgaHJlZj0iIyIgdGl0bGU9InskbW9kLT5MYW5nKCdkZWxldGUnKX0iPntjZ2ltYWdlIGltYWdlPSdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicgYWx0PSRtb2QtPkxhbmcoJ2RlbGV0ZScpfTwvYT4KICAgICAgPC90ZD4KICAgIDwvdHI+CiAgPC90YWJsZT4KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_couponform_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogY291cG9uIGZvcm0gdGVtcGxhdGUgKn0KeyRmb3Jtc3RhcnR9CjxmaWVsZHNldD4KPGxlZ2VuZD57JFByb21vdGlvbnMtPkxhbmcoJ3Byb21wdF9jb3Vwb25fY29kZScpfTwvbGVnZW5kPgoKPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+CiAge2lmIGlzc2V0KCRlcnJvcil9PHAgc3R5bGU9ImNvbG9yOiByZWQ7Ij57JGVycm9yfTwvcD57L2lmfQogIHtpZiBpc3NldCgkbXNnKX08cD57JG1zZ308L3A+ey9pZn0KCiAgPHA+eyRtb2QtPkxhbmcoJ3Byb21wdF9jb2RlJyl9OiZuYnNwOzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfXByb21vX2NvZGUiIHNpemU9IjEyIiBtYXhsZW5ndGg9IjEwIiB2YWx1ZT0ieyRjb2RlfSIvPjwvcD4KICA8cD48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfXByb21vX3N1Ym1pdCIgdmFsdWU9InskbW9kLT5MYW5nKCdzdWJtaXQnKX0iLz4KPC9kaXY+Cgo8L2ZpZWxkc2V0Pgp7JGZvcm1lbmR9]]></data>
	</file>
</module>
