<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
</body>
</html><?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>AlphaCard</name>
	<version>0.1.0</version>
  <mincmsversion>1.6.6</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgZG9lcyB0aGlzIGRvPzwvaDM+DQo8cD5UaGlzIG1vZHVsZSBwcm92aWRlcyB0aGUgYWJpbGl0eSBmb3IgeW91ciBjdXN0b21lcnMgdG8gcGF5IGZvciB0aGVpciBwdXJjaGFzZXMgdXNpbmcgdGhlaXIgY3JlZGl0IGNhcmQgZGlyZWN0bHkgb24geW91ciBzaXRlIHVzaW5nIHRoZSBBbHBoYSBDYXJkIFNlcnZpY2VzIHNlY3VyZSBnYXRld2F5LjwvcD4NCjxoMz5XaHkgc2hvdWxkIEkgdXNlIGl0PzwvaDM+DQo8cD5UaGlzIGdhdGV3YXkgd29ya3Mgd2l0aG91dCByZWRpcmVjdGluZyB0aGUgdXNlciB0byBhIGRpZmZlcmVudCB3ZWJzaXRlLCBhbmQgdGhlbiByZWRpcmVjdGluZyB0aGVtIGJhY2suICBJdCBhbGxvd3MgdGhlIGFiaWxpdHkgdG8gcHJvdmlkZSB5b3VyIGN1c3RvbWVycyB3aXRoIGEgc2luZ2xlIHVzZXIgZXhwZXJpZW5jZS48L3A+DQo8aDM+U3BlY2lhbCBSZXF1aXJlbWVudHM8L2gzPg0KPHA+VGhpcyBtb2R1bGUgcmVxdWlyZXMgdGhhdCB5b3VyIHdlYiBhcHBsaWNhdGlvbiBiZSBjb25maWd1cmVkIHRvIHByb21wdCB0aGUgdXNlciBmb3IgY3JlZGl0IGNhcmQgaW5mb3JtYXRpb24sIFRoZSBPcmRlcnMgbW9kdWxlIGNhbiBiZSBjb25maWd1cmVkIHRvIGRvIHRoaXMuPC9wPg0KPHA+QWxzbyB0aGlzIG1vZHVsZSB3aWxsIHJlcXVpcmUgYSB2YWxpZGF0ZWQgc2VjdXJlIGVudmlyb25tZW50LiAgIFlvdSB3aWxsIG5lZWQgdG8gcHVyY2hhc2UgYSB2YWxpZGF0ZWQgY2VydGlmaWNhdGUgZnJvbSBhbiBhcHByb3ZkZWQgcHJvdmlkZXIsIGluc3RhbGwgdGhhdCBjZXJ0aWZpY2F0ZSBpbiB5b3VyIHdlYiBob3N0IGVudmlyb25tZW50LCBhbmQgdGhlbiBjb25maWd1cmUgQ01TIE1hZGUgU2ltcGxlIHRvIHdvcmsgcHJvcGVybHkgaW4gYSBzZWN1cmUgZW52aXJvbm1lbnQuPC9wPg0KPGgzPkhvdyBkbyBJIHVzZSBpdD88L2gzPg0KPHA+UXVpdGUgc2ltcGx5LCBvbmNlIGFsbCBvZiB0aGUgZGVwZW5kZW5jaWVzIGFyZSBpbnN0YWxsZWQsIHlvdSBzaW1wbHkgaW5zdGFsbCB0aGUgbW9kdWxlLiAgVGhlbiBjb25maWd1cmUgdGhlIG1vZHVsZSBpbiB0aGUgQWxwaGFDYXJkIGNvbnRyb2wgcGFuZWwgaW4gdGhlIENNUyBNYWRlIFNpbXBsZSBhZG1pbiBjb25zb2xlLCB1c2luZyB0aGUgdHJhbnNhY3Rpb24gaWQsIGFuZCB0aGUgQVBJIExvZ2luIHRoYXQgYXJlIHByb3ZpZGVkIHRvIHlvdSBieSBhdXRob3JpemUubmV0LiBUaGVuIG5hdmlnYXRlIHRvIHRoZSBwcmVmZXJlbmNlcyB0YWIgaW4gdGhlIE9yZGVycyBtb2R1bGUgYW5kIHNlbGVjdCB0aGlzIG1vZHVsZSBhcyB5b3VyIGNob3NlbiBwYXltZW50IGdhdGV3YXkuPC9wPg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0IG9yIGJ1eSBjb21tZXJjaWFsIHN1cHBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgY21zIGRldmVsb3BtZW50IGZvcmdlIGF0IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmciPmRldi5jbXNtYWRlc2ltcGxlLm9yZzwvYT4uPC9saT4NCjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjxsaT5UaGUgYXV0aG9yLCBqZXJlbXlCYXNzIGFsbCBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPg0KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yKHMpIGRpcmVjdGx5LjwvbGk+ICANCjwvdWw+DQoNCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEwLCBKZXJlbXkgQmFzcyA8YSBocmVmPSJtYWlsdG86amVyZW15YmFzc0BjbXNtYWRlc2ltcGxlLm9yZyI+Jmx0O2plcmVteWJhc3NAY21zbWFkZXNpbXBsZS5vcmcmZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCml0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQp0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+DQo8cD5Ib3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCmFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUw0KTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIA0Kc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+DQo8cD5UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCmJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQpGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KT3IgcmVhZCBpdCA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPm9ubGluZTwvYT48L3A+PGgzPkRlcGVuZGVuY2llczwvaDM+PHVsPjxsaT5DR1BheW1lbnRHYXRld2F5QmFzZSA9Jmd0OyAxLjAuNTwvbGk+PGxpPkNHRXh0ZW5zaW9ucyA9Jmd0OyAxLjE4LjM8L2xpPjwvdWw+PGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBQYXJhbWV0ZXIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoYXQgbGFuZ3VhZ2UgdG8gdXNlIGZvciBkaXNwbGF5IG9uIHRoZSBmcm9udGVuZC4gTm90IGFsbCBtb2R1bGVzIHN1cHBvcnQgb3IgbmVlZCB0aGlzLjwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBqZXJlbXlCYXNzICZsdDtqZXJlbXliYXNzQGNtc21hZGVzaW1wbGUub3JnJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDAuMS4wPGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PHVsPg0KICA8bGk+VmVyc2lvbiAxLjAgLSBKdWx5LCAyMDEwDQogICAgPHVsPg0KICAgICAgPGxpPkluaXRpYWwgUmVsZWFzZTwvbGk+DQogICAgPC91bD4NCiAgPC9saT4NCjwvdWw+PGJyIC8+]]></about>
	<description><![CDATA[A payment gateway for the E-commerce system that uses the AIM protocol from Authorize.net]]></description>
	<requires>
	  <requiredname>CGPaymentGatewayBase</requiredname>
	  <requiredversion>1.0.5</requiredversion>
	</requires>
	<requires>
	  <requiredname>CGExtensions</requiredname>
	  <requiredversion>1.18.3</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.admin_setprefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IEF1dGhOZXRTaW0gKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsIA0KIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQ0KIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB0aGUgYWJpbGl0eSB0byBwcm9jZXNzDQojICBQYXltZW50cyBtYWRlIHVzaW5nIHRoZSBFLWNvbW1lcmNlIHN1aXRlIHRocm91Z2ggdGhlIEF1dGhOZXQgcGF5bWVudA0KIyAgZ2F0ZXdheS4NCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMNCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIA0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7DQoNCiR0aGlzLT5TZXRDdXJyZW50VGFiKCdwcmVmcycpOw0KDQppZiggaXNzZXQoJHBhcmFtc1snc3VibWl0J10pICl7DQogICAgJHRlc3Rtb2RlID0gMDsNCiAgICBpZiggaXNzZXQoJHBhcmFtc1sndGVzdG1vZGUnXSkgKXsNCgkkdGVzdG1vZGUgPSAoaW50KSRwYXJhbXNbJ3Rlc3Rtb2RlJ107DQogICAgICB9DQogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3Rlc3Rtb2RlJywkdGVzdG1vZGUpOw0KDQogICAgJHVzZV9maXhlZF9hbW91bnQgPSAwOw0KICAgIGlmKCBpc3NldCgkcGFyYW1zWyd1c2VfZml4ZWRfYW1vdW50J10pICl7DQoJJHVzZV9maXhlZF9hbW91bnQgPSAoaW50KSRwYXJhbXNbJ3VzZV9maXhlZF9hbW91bnQnXTsNCiAgICAgIH0NCiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlX2ZpeGVkX2Ftb3VudCcsJHVzZV9maXhlZF9hbW91bnQpOw0KICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1c2VfdHJhbnNfdHlwZScsJHBhcmFtc1sndXNlX3RyYW5zX3R5cGUnXSk7DQogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZXJuYW1lJywkcGFyYW1zWyd1c2VybmFtZSddKTsNCiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgncGFzc3dvcmQnLCRwYXJhbXNbJ3Bhc3N3b3JkJ10pOw0KCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmaXhlZF9hbW91bnQnLCRwYXJhbXNbJ2ZpeGVkX2Ftb3VudCddKTsNCg0KICB9DQoNCiR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCk7DQoNCiMNCiMgRU9GDQojDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IEF1dGhOZXRTaW0gKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsIA0KIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQ0KIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB0aGUgYWJpbGl0eSB0byBwcm9jZXNzDQojICBQYXltZW50cyBtYWRlIHVzaW5nIHRoZSBFLWNvbW1lcmNlIHN1aXRlIHRocm91Z2ggdGhlIEF1dGhOZXQgcGF5bWVudA0KIyAgZ2F0ZXdheS4NCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMNCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIA0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7DQoNCmVjaG8gJHRoaXMtPlN0YXJ0VGFiSGVhZGVycygpOw0KaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSApew0KICAgIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigndGVtcGxhdGUnLCR0aGlzLT5MYW5nKCdmb3JtX3RlbXBsYXRlJykpOw0KICB9DQppZiggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSApew0KICAgIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigncHJlZnMnLCR0aGlzLT5MYW5nKCdwcmVmZXJlbmNlcycpKTsNCiAgICANCiAgfQ0KZWNobyAkdGhpcy0+RW5kVGFiSGVhZGVycygpOw0KDQplY2hvICR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKTsNCmlmKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpICl7DQogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3ByZWZzJyk7DQogICAgaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLnByZWZzX3RhYi5waHAnKTsNCiAgICBlY2hvICR0aGlzLT5FbmRUYWIoKTsNCiAgfQ0KDQppZiggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpICl7DQogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3RlbXBsYXRlJyk7DQogICAgaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLnRlbXBsYXRlX3RhYi5waHAnKTsNCiAgICBlY2hvICR0aGlzLT5FbmRUYWIoKTsNCiAgfQ0KDQplY2hvICR0aGlzLT5FbmRUYWJDb250ZW50KCk7DQoNCiMNCiMgRU9GDQojDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/action.process_payment.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IEFscGhhQ2FyZCAoYykgMjAwOSBieSBSb2JlcnQgQ2FtcGJlbGwgDQojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpDQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBwcm92aWRlIHRoZSBhYmlsaXR5IHRvIHByb2Nlc3MNCiMgIFBheW1lbnRzIG1hZGUgdXNpbmcgdGhlIEUtY29tbWVyY2Ugc3VpdGUgdGhyb3VnaCB0aGUgQXV0aE5ldCBwYXltZW50DQojICBnYXRld2F5Lg0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQojDQojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZA0KIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUNCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUw0KIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gDQojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBDQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojRU5EX0xJQ0VOU0UNCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsNCg0KLy8gcmVzdG9yZSBzdGF0ZSBpbmZvcm1hdGlvbg0KaWYoICFpc3NldCgkcGFyYW1zWydrZXknXSkgKSBleGl0OyANCiRyZXMgPSAkdGhpcy0+UmVzdG9yZVN0YXRlKHRyaW0oJHBhcmFtc1sna2V5J10pKTsNCmlmKCAkcmVzID09PSBGQUxTRSApew0KICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfcmVzdG9yaW5nX3N0YXRlJykpOw0KICAgICR0aGlzLT5GaW5pc2hUcmFuc2FjdGlvbigpOw0KICAgIHJldHVybjsNCiAgfQ0KDQovLyBjaGVjayBmb3IgbWlzc2luZyBkYXRhDQokdGVzdCA9IDA7DQppZiggIWlzc2V0KCR0aGlzLT5fZGF0YVsnY2NpbmZvJ10pIHx8DQogICAgIWlzc2V0KCR0aGlzLT5fZGF0YVsnZGVzdGluYXRpb24nXSkgfHwNCiAgICAhaXNzZXQoJHRoaXMtPl9kYXRhWydpdGVtcyddKSB8fA0KICAgICFpc3NldCgkdGhpcy0+X2RhdGFbJ29yZGVyaWQnXSkgfHwNCiAgICAhaXNzZXQoJHRoaXMtPl9kYXRhWydpbnZvaWNlJ10pICl7DQogICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9taXNzaW5nX2RhdGEnKSk7DQogICAgJHRoaXMtPkZpbmlzaFRyYW5zYWN0aW9uKCk7DQogICAgcmV0dXJuOw0KICB9DQoNCiRiaWxsaW5nID0gJHRoaXMtPl9kYXRhWydiaWxsaW5nX2FkZHJlc3MnXTsNCiRzaGlwcGluZyA9ICR0aGlzLT5fZGF0YVsnc2hpcHBpbmdfYWRkcmVzcyddOw0KDQppZiggIWlzX29iamVjdCgkYmlsbGluZykgfHwgIWlzX29iamVjdCgkc2hpcHBpbmcpICkNCiAgew0KICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfbWlzc2luZ19kYXRhJykuJyAnLiRiaWxsaW5nKTsNCiAgICAkdGhpcy0+RmluaXNoVHJhbnNhY3Rpb24oKTsNCiAgICByZXR1cm47DQogIH0NCg0KLy8gIA0KLy8gc2V0dXANCi8vDQokZmV1ID0mICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgnRnJvbnRFbmRVc2VycycpOw0KJGxvZ2luaWQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbG9naW5pZCcpOw0KJHRyYW5zYWN0aW9ua2V5ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3RyYW5zYWN0aW9ua2V5Jyk7DQokdGVzdG1vZGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndGVzdG1vZGUnLDEpOw0KDQoNCiRub3cgPSB0aW1lKCk7DQokZmluZ2VycHJpbnQgPSAkcGFyYW1zWydrZXknXTsNCiRwb3N0X3VybCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwb3N0X3VybCcsJycpOw0KaWYoICEkcG9zdF91cmwgKQ0KICAkcG9zdF91cmwgPSBBTFBIQUNBUkRfU0VDVVJFX1BPU1RfVVJMOw0KDQppZiggJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXRlc3R1cmwnKSApew0KICAgICRwb3N0X3VybCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0ZXN0X3Bvc3RfdXJsJywnJyk7DQogICAgaWYoICEkcG9zdF91cmwgKQ0KICAgICAgJHBvc3RfdXJsID0gQUxQSEFDQVJEX1RFU1RfUE9TVF9VUkw7DQogIH0NCg0KLy8NCi8vIGJ1aWxkIG91ciBkYXRhDQovLw0KDQovLyBhKSBjYWxjdWxhdGUgdG90YWwgYW1vdW50IG9mIG9yZGVyDQppZiggaXNzZXQoJHRoaXMtPl9kYXRhWydvcmRlcnRheCddKSAmJiBpc3NldCgkdGhpcy0+X2RhdGFbJ29yZGVyc2hpcHBpbmcnXSkgKQ0KICAkYW1vdW50ID0gJHRoaXMtPl9kYXRhWydvcmRlcnRheCddICsgJHRoaXMtPl9kYXRhWydvcmRlcnNoaXBwaW5nJ107DQoNCmZvcmVhY2goICR0aGlzLT5fZGF0YVsnaXRlbXMnXSBhcyAkaXRlbSApew0KICAkYW1vdW50ICs9ICRpdGVtWydhbW91bnQnXSokaXRlbVsncXVhbnRpdHknXTsNCn0NCg0KLy8gYikgZmlsbCBpbiB0aGUgcGFyYW1ldGVycyBhcnJheQ0KJHBhcm1zID0gYXJyYXkoKTsNCg0KaWYoJHRlc3Rtb2RlPT0xKXsNCgkkdXNlcm5hbWU9QUxQSEFDQVJEX1RFU1RfVVNFUk5BTUU7DQoJJHBhc3N3b3JkPUFMUEhBQ0FSRF9URVNUX1BBU1NXT1JEOw0KCSRhbW91bnQ9QUxQSEFDQVJEX1RFU1RfQU1PVU5UOw0KfWVsc2V7DQoJJHVzZXJuYW1lPSR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VybmFtZScsJycpOw0KCSRwYXNzd29yZD0kdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFzc3dvcmQnLCcnKTsNCn0NCmlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VfZml4ZWRfYW1vdW50Jyk9PTEpew0KCSRhbW91bnQ9JHRoaXMtPkdldFByZWZlcmVuY2UoJ2ZpeGVkX2Ftb3VudCcpOw0KfQ0KDQokcGFybXNbJ3VzZXJuYW1lJ10gPSAkdXNlcm5hbWU7DQokcGFybXNbJ3Bhc3N3b3JkJ10gPSAkcGFzc3dvcmQ7DQokcGFybXNbJ3R5cGUnXSA9ICdhdXRoJzsgIC8vIHRvZG8gb3RoZXIgOiBzYWxlIC8gYXV0aA0KJHBhcm1zWydwYXltZW50J10gPSAnY3JlZGl0Y2FyZCc7IC8vIHRvZG8gIG90aGVyIDogY2hlY2sNCiRwYXJtc1snb3JkZXJpZCddID0gJHRoaXMtPl9kYXRhWydpbnZvaWNlJ107DQokcGFybXNbJ2Ftb3VudCddID0gJGFtb3VudDsNCiRwYXJtc1sndGF4J10gPSAkdGhpcy0+X2RhdGFbJ29yZGVydGF4J107DQoNCg0KDQppZiggaXNzZXQoJHRoaXMtPl9kYXRhWydkZXNjcmlwdGlvbiddKSApew0KICAgICRwYXJtc1snb3JkZXJkZXNjcmlwdGlvbiddID0gJHRoaXMtPl9kYXRhWydkZXNjcmlwdGlvbiddOw0KICB9DQoNCi8vIGFkZCBjcmVkaXQgY2FyZCBpbmZvDQpmb3JlYWNoKCAkdGhpcy0+X2RhdGFbJ2NjaW5mbyddIGFzICRrZXkgPT4gJHZhbHVlICl7DQogICRwYXJtc1ska2V5XSA9ICR2YWx1ZTsNCn0NCg0KJHBhcm1zWydmaXJzdG5hbWUnXSA9ICRiaWxsaW5nLT5nZXRfZmlyc3RuYW1lKCk7DQokcGFybXNbJ2xhc3RuYW1lJ10gPSAkYmlsbGluZy0+Z2V0X2xhc3RuYW1lKCk7DQokcGFybXNbJ2VtYWlsJ10gPSAkYmlsbGluZy0+Z2V0X2VtYWlsKCk7DQokcGFybXNbJ2FkZHJlc3MxJ10gPSAgJGJpbGxpbmctPmdldF9hZGRyZXNzMSgpOw0KJHBhcm1zWydjaXR5J10gPSAkYmlsbGluZy0+Z2V0X2NpdHkoKTsNCiRwYXJtc1snc3RhdGUnXSA9ICRiaWxsaW5nLT5nZXRfc3RhdGUoKTsgIC8vQ0MNCiRwYXJtc1snY291bnRyeSddID0gJGJpbGxpbmctPmdldF9jb3VudHJ5KCk7Ly9DQyAoSVNPLTMxNjYpDQokcGFybXNbJ3ppcCddID0gJGJpbGxpbmctPmdldF9wb3N0YWwoKTsNCg0KJHBhcm1zWydzaGlwcGluZyddID0gJHRoaXMtPl9kYXRhWydvcmRlcnNoaXBwaW5nJ107DQokcGFybXNbJ3NoaXBwaW5nX2ZpcnN0bmFtZSddID0gJHNoaXBwaW5nLT5nZXRfZmlyc3RuYW1lKCk7DQokcGFybXNbJ3NoaXBwaW5nX2xhc3RuYW1lJ10gPSAkc2hpcHBpbmctPmdldF9sYXN0bmFtZSgpOw0KJHBhcm1zWydzaGlwcGluZ19hZGRyZXNzMSddID0gICRzaGlwcGluZy0+Z2V0X2FkZHJlc3MxKCk7DQokcGFybXNbJ3NoaXBwaW5nX2NpdHknXSA9ICRzaGlwcGluZy0+Z2V0X2NpdHkoKTsNCiRwYXJtc1snc2hpcHBpbmdfc3RhdGUnXSA9ICRzaGlwcGluZy0+Z2V0X3N0YXRlKCk7DQokcGFybXNbJ3NoaXBwaW5nX2NvdW50cnknXSA9ICRzaGlwcGluZy0+Z2V0X2NvdW50cnkoKTsNCiRwYXJtc1snc2hpcHBpbmdfemlwJ10gPSAkc2hpcHBpbmctPmdldF9wb3N0YWwoKTsNCg0KLy8gbWF5YmUgYWRkIGJpbGxpbmcgaW5mbw0KDQovLyBhbmQgbWF5YmUgc2hpcHBpbmcgaW5mbw0KDQovLyBidWlsZCBvdXIgb3V0cHV0IHBvc3Qgc3RyaW5nDQokcG9zdF9zdHJpbmcgPSAnJzsNCmZvcmVhY2goICRwYXJtcyBhcyAka2V5ID0+ICR2YWx1ZSApew0KICAkdmFsdWUgPSB1cmxlbmNvZGUoJHZhbHVlKTsNCiAgJHBvc3Rfc3RyaW5nIC49ICJ7JGtleX09eyR2YWx1ZX0mIjsNCn0NCg0KLy8gZ2V0IHRoZSBpdGVtcw0KLy8kaXRlbXMgPSBhcnJheSgpOw0KLy8kY291bnQgPSAxOw0KLy9mb3JlYWNoKCAkdGhpcy0+X2RhdGFbJ2l0ZW1zJ10gYXMgJGtleSA9PiAkaXRlbSApew0KLy8gICR0bXAgPSBhcnJheSgkY291bnQrKyxzdWJzdHIoJGl0ZW1bJ25hbWUnXSwwLDMxKSwkaXRlbVsnbmFtZSddLA0KLy8JICAgICAgICRpdGVtWydxdWFudGl0eSddLHNwcmludGYoIiUuMmYiLCRpdGVtWydhbW91bnQnXSksDQovLwkgICAgICAgKGlzc2V0KCRpdGVtWyd0YXgnXSkpPycxJzonMCcpOw0KLy8gICRzdHIgPSB1cmxlbmNvZGUoaW1wbG9kZSgnPHw+JywkdG1wKSk7DQovLyAgJHBvc3Rfc3RyaW5nIC49ICJ4X2xpbmVfaXRlbT17JHN0cn0mIjsNCi8vfQ0KJHBvc3Rfc3RyaW5nID0gcnRyaW0oJHBvc3Rfc3RyaW5nLCImICIpOw0KDQoNCi8vIGdldCB0aGUgcmVzdWx0cw0KLy8kcmVzcG9uc2VfYXJyYXkgPSBleHBsb2RlKCcmJywkcG9zdF9yZXNwb25zZSk7DQovLyR0aGlzLT5fZGF0YVsncmVzcG9uc2VfZGF0YSddID0gJHJlc3BvbnNlX2FycmF5Ow0KLy9xdWljayBjb25uZWN0aW9uIHRlc3QuDQokcG9zdF9yZXNwb25zZSA9IGNnZV9odHRwOjpwb3N0KCRwb3N0X3VybC4nPycuJHBvc3Rfc3RyaW5nKTsNCiRyZXNwb25zZV9hcnJheSA9IGNnZV9hcnJheTo6ZXhwbG9kZV93aXRoX2tleSgkcG9zdF9yZXNwb25zZSk7DQokdGhpcy0+X2RhdGFbJ3Jlc3BvbnNlX2RhdGEnXSA9ICRyZXNwb25zZV9hcnJheTsNCi8vc2FtcGxlIHRyYW5zYWN0aW9uLi4uIA0KLy9yZXNwb25zZT0xJnJlc3BvbnNldGV4dD1TVUNDRVNTJmF1dGhjb2RlPTEyMzQ1NiZ0cmFuc2FjdGlvbmlkPTI4MTcxOTQ3MSZhdnNyZXNwb25zZT0mY3Z2cmVzcG9uc2U9TSZvcmRlcmlkPSZ0eXBlPXNhbGUmcmVzcG9uc2VfY29kZT0xMDANCi8vIHBhcnNlIHJlc3VsdCBpbmZvcm1hdGlvbg0KJHRyYW5zX3Jlc3BvbnNlX2NvZGUgICAgPSAkcmVzcG9uc2VfYXJyYXlbJ3Jlc3BvbnNlJ107DQokdHJhbnNfcmVzcG9uc2VfdGV4dCAgICA9ICRyZXNwb25zZV9hcnJheVsncmVzcG9uc2V0ZXh0J107DQokdHJhbnNfYXV0aF9jb2RlICAgICAgICA9ICRyZXNwb25zZV9hcnJheVsnYXV0aGNvZGUnXTsNCiR0cmFuc190cmFuc2FjdGlvbl9pZCAgID0gJHJlc3BvbnNlX2FycmF5Wyd0cmFuc2FjdGlvbmlkJ107DQokdHJhbnNfYXZzX3Jlc3BvbnNlICAgICA9ICRyZXNwb25zZV9hcnJheVsnYXZzcmVzcG9uc2UnXTsNCiR0cmFuc19jY3ZfcmVzcG9uc2UgICAgID0gJHJlc3BvbnNlX2FycmF5WydjdnZyZXNwb25zZSddOw0KJHRyYW5zX2ludm9pY2VfbnVtICAgICAgPSAkcmVzcG9uc2VfYXJyYXlbJ29yZGVyaWQnXTsNCiR0cmFuc19yZXNwb25zZV9zdWJjb2RlID0gJHJlc3BvbnNlX2FycmF5WydyZXNwb25zZV9jb2RlJ107DQoNCi8vJHRyYW5zX2Ftb3VudCAgICAgICAgICAgPSAkcmVzcG9uc2VfYXJyYXlbOV07DQovLyR0cmFuc19jdXN0X2lkICAgICAgICAgID0gJHJlc3BvbnNlX2FycmF5WzEyXTsNCi8vJHRyYW5zX3Jlc3BvbnNlX3JlYXNvbiAgPSAnJzsNCg0KJGZpbGVuYW1lPSdtb2R1bGVzL0FscGhhQ2FyZC9sb2ctQ0MudHh0JzsNCmlmKCR0ZXN0bW9kZT09MSl7DQovLyBoYW5kbGUgdGhlIHJlc3VsdHMuDQoJJG1lc3M9Jw0KCVBvc3QNCgktLS1wb3N0X3VybDonLiRwb3N0X3VybC4nPycuJHBvc3Rfc3RyaW5nLicNCgkNCglSZXNwb25zZQ0KCS0tLXBvc3RfcmVzcG9uc2U6Jy4kcG9zdF9yZXNwb25zZS4nDQoJDQoJUmVzcG9uc2UgYnJlYWtkb3duDQoJLS0tdHJhbnNfcmVzcG9uc2VfY29kZTonLiR0cmFuc19yZXNwb25zZV9jb2RlLicNCgktLS10cmFuc19yZXNwb25zZV90ZXh0OicuJHRyYW5zX3Jlc3BvbnNlX3RleHQuJw0KCS0tLXRyYW5zX2F1dGhfY29kZTonLiR0cmFuc19hdXRoX2NvZGUuJw0KCS0tLXRyYW5zX3RyYW5zYWN0aW9uX2lkOicuJHRyYW5zX3RyYW5zYWN0aW9uX2lkLicNCgktLS10cmFuc19hdnNfcmVzcG9uc2U6Jy4kdHJhbnNfYXZzX3Jlc3BvbnNlLicNCgktLS10cmFuc19jY3ZfcmVzcG9uc2U6Jy4kdHJhbnNfY2N2X3Jlc3BvbnNlLicNCgktLS10cmFuc19pbnZvaWNlX251bTonLiR0cmFuc19pbnZvaWNlX251bS4nDQoJLS0tdHJhbnNfcmVzcG9uc2Vfc3ViY29kZTonLiR0cmFuc19yZXNwb25zZV9zdWJjb2RlLicNCgkNCglNYXNzYWdlLS0nLiR0aGlzLT5MYW5nKCR0cmFuc19yZXNwb25zZV9zdWJjb2RlKTsNCgkNCg0KCQ0KCSRsZW4gPSBzdHJsZW4oJG1lc3MpOw0KCSRjaGsgPSBmaWxlX3B1dF9jb250ZW50cygkZmlsZW5hbWUsICRtZXNzKTsNCgkvLyBURVNUIEZPUiBTVUNDRVNTRlVMIFNUT1JBR0UNCglpZiAoJGxlbiAhPSAkY2hrKSBkaWUoIkxFTkdUSCBNSVNNQVRDSCIpOw0KfWVsc2V7DQoJLy8gbWFrZSBzdXJlIHRoZSB0ZXN0IGxvZyBpcyBub3Rja2VkIG91dCB0byBwbGVhc2UuDQoJaWYgKEBmaWxlX2V4aXN0cygkZmlsZW5hbWUpKSB7DQoJCUB1bmxpbmsoJGZpbGVuYW1lKTsNCgl9DQp9DQoJDQoJDQpzd2l0Y2goJHRyYW5zX3Jlc3BvbnNlX2NvZGUpew0KICBjYXNlICcxJzoNCiAgICAkdGhpcy0+U2V0VHJhbnNhY3Rpb25TdGF0dXMoUEFZTUVOVF9TVEFUVVNfQVBQUk9WRUQpOw0KICAgICR0aGlzLT5TZXRUcmFuc2FjdGlvbklkKCR0cmFuc190cmFuc2FjdGlvbl9pZCk7DQogICAgJHRoaXMtPlNldFRyYW5zYWN0aW9uQW1vdW50KCRhbW91bnQpOw0KICAgIGJyZWFrOw0KICBjYXNlICcyJzoNCiAgICAkdGhpcy0+U2V0RGVjbGluZWQoJHRyYW5zX3Jlc3BvbnNlX3RleHQuJyAoJy4kdGhpcy0+TGFuZygkdHJhbnNfcmVzcG9uc2Vfc3ViY29kZSkuJyknKTsNCiAgICBicmVhazsNCiAgY2FzZSAnMyc6DQogICAgLy8gZW5nbGlzaCBvbmx5IGF0bS4NCiAgICAkdGhpcy0+U2V0RXJyb3IoJHRyYW5zX3Jlc3BvbnNlX3RleHQuJyAoJy4kdGhpcy0+TGFuZygkdHJhbnNfcmVzcG9uc2Vfc3ViY29kZSkuJyknKTsgLy8gbmVlZHMgdG8gc2V0IHVwLi4gICR0cmFuc19hdnNfcmVzcG9uc2UvJHRyYW5zX2Njdl9yZXNwb25zZSAvJHRyYW5zX3Jlc3BvbnNlX3N1YmNvZGUNCiAgICBicmVhazsNCiAgZGVmYXVsdDoNCiAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3Vua25vd25fZGF0YScpLic8YnIvPicuJG1lc3MuJzxici8+Jy4kdHJhbnNfcmVzcG9uc2VfdGV4dC4nICgnLiR0aGlzLT5MYW5nKCR0cmFuc19yZXNwb25zZV9zdWJjb2RlKS4nKScpOw0KICAgIGJyZWFrOw0KICB9DQokdGhpcy0+RmluaXNoVHJhbnNhY3Rpb24oKTsNCg0KIw0KIyBFT0YNCiMNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/AlphaCard.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IEFscGhhQ2FyZCAoYykgMjAwOSBieSBSb2JlcnQgQ2FtcGJlbGwgDQojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpDQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBwcm92aWRlIHRoZSBhYmlsaXR5IHRvIHByb2Nlc3MNCiMgIFBheW1lbnRzIG1hZGUgdXNpbmcgdGhlIEUtY29tbWVyY2Ugc3VpdGUgdGhyb3VnaCB0aGUgQXV0aE5ldCBwYXltZW50DQojICBnYXRld2F5Lg0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQojDQojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZA0KIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUNCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUw0KIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gDQojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBDQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojRU5EX0xJQ0VOU0UNCg0KJGNncGF5bWVudGdhdGV3YXliYXNlID0gY21zX2pvaW5fcGF0aCgkZ0Ntcy0+Y29uZmlnWydyb290X3BhdGgnXSwnbW9kdWxlcycsDQoJJ0NHUGF5bWVudEdhdGV3YXlCYXNlJywnQ0dQYXltZW50R2F0ZXdheUJhc2UubW9kdWxlLnBocCcpOw0KaWYoICFpc19yZWFkYWJsZSggJGNncGF5bWVudGdhdGV3YXliYXNlICkgKXsNCgllY2hvICc8aDE+PGZvbnQgY29sb3I9InJlZCI+RVJST1I6IFRoZSBDR1BheW1lbnRHYXRld2F5QmFzZSBtb2R1bGUgY291bGQgbm90IGJlIGZvdW5kLiAgUGxlYXNlIGluc3RhbGwgaXQ8L2ZvbnQ+PC9oMT4nOw0KCXJldHVybjsNCn0NCmlmKCAhY2xhc3NfZXhpc3RzKCdDR1BheW1lbnRHYXRld2F5QmFzZScpICl7DQogIHJlcXVpcmVfb25jZSgkY2dwYXltZW50Z2F0ZXdheWJhc2UpOw0KfQ0KDQoNCmRlZmluZSgnQUxQSEFDQVJEX1NFQ1VSRV9QT1NUX1VSTCcsJ2h0dHBzOi8vc2VjdXJlLmFscGhhY2FyZGdhdGV3YXkuY29tL2FwaS90cmFuc2FjdC5waHAnKTsNCmRlZmluZSgnQUxQSEFDQVJEX1RFU1RfUE9TVF9VUkwnLCdodHRwczovL3NlY3VyZS5hbHBoYWNhcmRnYXRld2F5LmNvbS9hcGkvdHJhbnNhY3QucGhwJyk7DQoNCi8vaHR0cHM6Ly9zZWN1cmUuYWxwaGFjYXJkZ2F0ZXdheS5jb20vYXBpL3RyYW5zYWN0LnBocD91c2VybmFtZT1kZW1vJnBhc3N3b3JkPXBhc3N3b3JkJnR5cGU9c2FsZSZjY251bWJlcj00MTExMTExMTExMTExMTExJmNjZXhwPTA3MTEmY3Z2PTk5OSZhbW91bnQ9MS4wMA0KLy90ZXN0IGluZm8NCmRlZmluZSgnQUxQSEFDQVJEX1RFU1RfVVNFUk5BTUUnLCdkZW1vJyk7DQpkZWZpbmUoJ0FMUEhBQ0FSRF9URVNUX1BBU1NXT1JEJywncGFzc3dvcmQnKTsNCmRlZmluZSgnQUxQSEFDQVJEX1RFU1RfVklTQScsJzQxMTExMTExMTExMTExMTEnKTsNCmRlZmluZSgnQUxQSEFDQVJEX1RFU1RfQ0NfRVhQJywnMTAvMTAnKTsNCmRlZmluZSgnQUxQSEFDQVJEX1RFU1RfQU1PVU5UJywnMS4wMCcpOw0KZGVmaW5lKCdBTFBIQUNBUkRfVEVTVF9DVlYnLCc5OTknKTsNCg0KDQoNCg0KDQpjbGFzcyBBbHBoYUNhcmQgZXh0ZW5kcyBDR1BheW1lbnRHYXRld2F5QmFzZQ0Kew0KDQogIHZhciAkX2RhdGE7DQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIENvbnN0cnVjdG9yKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpew0KICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoKTsNCiAgICAkdGhpcy0+X2RhdGEgPSBhcnJheSgpOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgR2V0TmFtZSgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0TmFtZSgpew0KICAgIHJldHVybiAnQWxwaGFDYXJkJzsNCiAgfQ0KDQogIA0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgR2V0RnJpZW5kbHlOYW1lKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIHB1YmxpYyBmdW5jdGlvbiBHZXRGcmllbmRseU5hbWUoKXsNCiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgR2V0VmVyc2lvbigpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0VmVyc2lvbigpew0KICAgIHJldHVybiAnMC4xLjAnOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgR2V0SGVscCgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0SGVscCgpew0KICAgIHJldHVybiAkdGhpcy0+TGFuZygnaGVscCcpOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgR2V0QXV0aG9yKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIHB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3IoKXsNCiAgICByZXR1cm4gJ2plcmVteUJhc3MnOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgR2V0QXV0aG9yRW1haWwoKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCl7DQogICAgcmV0dXJuICdqZXJlbXliYXNzQGNtc21hZGVzaW1wbGUub3JnJzsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEdldENoYW5nZUxvZygpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCl7DQogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdjaGFuZ2Vsb2cnKTsNCiAgfQ0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBJc1BsdWdpbk1vZHVsZSgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBwdWJsaWMgZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKXsNCiAgICByZXR1cm4gdHJ1ZTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEhhc0FkbWluKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIHB1YmxpYyBmdW5jdGlvbiBIYXNBZG1pbigpew0KICAgIHJldHVybiB0cnVlOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgR2V0QWRtaW5TZWN0aW9uKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIHB1YmxpYyBmdW5jdGlvbiBHZXRBZG1pblNlY3Rpb24oKXsNCiAgICByZXR1cm4gJ2V4dGVuc2lvbnMnOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgR2V0QWRtaW5EZXNjcmlwdGlvbigpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpew0KICAgIHJldHVybiAkdGhpcy0+TGFuZygnbW9kZGVzY3JpcHRpb24nKTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFZpc2libGVUb0FkbWluVXNlcigpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBwdWJsaWMgZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCl7DQogICAgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSB8fA0KICAgICAgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEdldERlcGVuZGVuY2llcygpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCl7DQogICAgcmV0dXJuIGFycmF5KCdDR1BheW1lbnRHYXRld2F5QmFzZSc9PicxLjAuNScsDQoJCSAnQ0dFeHRlbnNpb25zJz0+JzEuMTguMycpOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgTWluaW11bUNNU1ZlcnNpb24oKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgcHVibGljIGZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCl7DQogICAgcmV0dXJuICIxLjYuNiI7DQogIH0NCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBJbnN0YWxsUG9zdE1lc3NhZ2UoKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgcHVibGljIGZ1bmN0aW9uIEluc3RhbGxQb3N0TWVzc2FnZSgpew0KICAgIHJldHVybiAkdGhpcy0+TGFuZygncG9zdGluc3RhbGwnKTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIHB1YmxpYyBmdW5jdGlvbiBVbmluc3RhbGxQb3N0TWVzc2FnZSgpew0KICAgIHJldHVybiAkdGhpcy0+TGFuZygncG9zdHVuaW5zdGFsbCcpOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgVW5pbnN0YWxsUHJlTWVzc2FnZSgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBwdWJsaWMgZnVuY3Rpb24gVW5pbnN0YWxsUHJlTWVzc2FnZSgpew0KICAgIHJldHVybiAkdGhpcy0+TGFuZygncmVhbGx5X3VuaW5zdGFsbCcpOw0KICB9DQoNCgkNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFJlcXVpcmVzQ3JlZGl0Q2FyZEluZm8oKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgcHVibGljIGZ1bmN0aW9uIFJlcXVpcmVzQ3JlZGl0Q2FyZEluZm8oKXsNCiAgICByZXR1cm4gdHJ1ZTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFJlcXVpcmVzU1NMKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIHB1YmxpYyBmdW5jdGlvbiBSZXF1aXJlc1NTTCgpew0KICAgIHJldHVybiB0cnVlOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgUmVxdWlyZXNTaGlwcGluZ0luZm8oKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgcHVibGljIGZ1bmN0aW9uIFJlcXVpcmVzU2hpcHBpbmdJbmZvKCl7DQogICAgcmV0dXJuIGZhbHNlOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgUmVxdWlyZXNCaWxsaW5nSW5mbygpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBwdWJsaWMgZnVuY3Rpb24gUmVxdWlyZXNCaWxsaW5nSW5mbygpew0KICAgIHJldHVybiBmYWxzZTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFNldFBhcmFtZXRlcnMoKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgcHVibGljIGZ1bmN0aW9uIFNldFBhcmFtZXRlcnMoKXsNCiAgICAkdGhpcy0+UmVnaXN0ZXJNb2R1bGVQbHVnaW4oKTsNCiAgICAkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKCk7DQoNCiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgna2V5JywgQ0xFQU5fU1RSSU5HKTsNCiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnb3JkZXJfaWQnLCBDTEVBTl9JTlQpOw0KICB9DQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFNhdmVTdGF0ZSgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBwdWJsaWMgZnVuY3Rpb24gU2F2ZVN0YXRlKCRlbmNyeXB0ID0gZmFsc2Upew0KICAgIGlmKCAkZW5jcnlwdCApew0KCQkka2V5ID0gc3RyX3NodWZmbGUobWQ1KHNlc3Npb25faWQoKS50aW1lKCkpKTsNCgkJJHJhdyA9IHNlcmlhbGl6ZSgkdGhpcy0+X2RhdGEpOw0KCQkkZW5jID0gJHRoaXMtPmVuY3J5cHQoJGtleSwkcmF3KTsNCgkJJF9TRVNTSU9OWydhbHBoYWNhcmRfY2NwJ10gPSBiYXNlNjRfZW5jb2RlKCRlbmMpOw0KCQlyZXR1cm4gJGtleTsNCiAgICAgIH1lbHNlew0KCQkkcmF3ID0gc2VyaWFsaXplKCR0aGlzLT5fZGF0YSk7DQoJCSRfU0VTU0lPTlsnYWxwaGFjYXJkX2NjcCddID0gYmFzZTY0X2VuY29kZSgkcmF3KTsNCiAgICAgIH0NCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFJlc3RvcmVTdGF0ZSgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBwdWJsaWMgZnVuY3Rpb24gUmVzdG9yZVN0YXRlKCRrZXkgPSAnJyl7DQogICAgaWYoICFpc3NldCgkX1NFU1NJT05bJ2FscGhhY2FyZF9jY3AnXSkgKSByZXR1cm4gRkFMU0U7DQogICAgaWYoIGVtcHR5KCRrZXkpICl7DQoJJHJhdyA9IGJhc2U2NF9kZWNvZGUoJF9TRVNTSU9OWydhbHBoYWNhcmRfY2NwJ10pOw0KICAgICAgfQ0KICAgIGVsc2UNCiAgICAgIHsNCgkkZW5jID0gYmFzZTY0X2RlY29kZSgkX1NFU1NJT05bJ2FscGhhY2FyZF9jY3AnXSk7DQoJJHJhdyA9ICR0aGlzLT5kZWNyeXB0KCRrZXksJGVuYyk7DQoJaWYoICRyYXcgPT09IEZBTFNFICkgcmV0dXJuIEZBTFNFOw0KICAgICAgfQ0KICAgICR0aGlzLT5fZGF0YSA9IHVuc2VyaWFsaXplKCRyYXcpOw0KICAgIHVuc2V0KCRfU0VTU0lPTlsnYWxwaGFjYXJkX2NjcCddKTsNCiAgICByZXR1cm4gVFJVRTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFNldFBheW1lbnRJZCgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBwdWJsaWMgZnVuY3Rpb24gU2V0UGF5bWVudElkKCRwYXltZW50X2lkKXsNCiAgICAkdGhpcy0+X2RhdGFbJ3BheW1lbnRfaWQnXSA9ICRwYXltZW50X2lkOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgR2V0UGF5bWVudElkKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIHB1YmxpYyBmdW5jdGlvbiBHZXRQYXltZW50SWQoKXsNCiAgICBpZiggIWlzc2V0KCR0aGlzLT5fZGF0YVsncGF5bWVudF9pZCddKSApIHJldHVybiBGQUxTRTsNCiAgICByZXR1cm4gJHRoaXMtPl9kYXRhWydwYXltZW50X2lkJ107DQogIH0NCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBTZXRDcmVkaXRDYXJkSW5mbygpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBwdWJsaWMgZnVuY3Rpb24gU2V0Q3JlZGl0Q2FyZEluZm8oJGNjbnVtYmVyLCRjY2V4cCwkY2N2Y29kZSl7DQoJJF9jY2luZm8gPSBhcnJheSgpOw0KLy8JaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Rlc3Rtb2RlJywxKT09MSl7DQovLwkJJF9jY2luZm9bJ2NjbnVtYmVyJ10gPSBBTFBIQUNBUkRfVEVTVF9WSVNBOw0KLy8JCSRfY2NpbmZvWydjY2V4cCddID0gQUxQSEFDQVJEX1RFU1RfQ0NfRVhQOw0KLy8JCSRfY2NpbmZvWydjdnYnXT0gQUxQSEFDQVJEX1RFU1RfQ1ZWOw0KLy8JfWVsc2V7DQovLwkJJF9jY2luZm9bJ2NjbnVtYmVyJ10gPSBwcmVnX3JlcGxhY2UoJyhbXjAtOV0pJywnJywkY2NudW1iZXIpOw0KLy8JCSRfY2NpbmZvWydjY2V4cCddID0gZGF0ZSgnbScsJGNjZXhwKS4nLycuZGF0ZSgnWScsJGNjZXhwKTsNCi8vCQlpZiggIWVtcHR5KCRjY3Zjb2RlKSApew0KLy8JCQkkX2NjaW5mb1snY3Z2J10gPSBwcmVnX3JlcGxhY2UoJyhbXjAtOV0pJywnJywkY2N2Y29kZSk7DQovLwkJfQ0KLy8JfQ0KCQkkX2NjaW5mb1snY2NudW1iZXInXSA9IHByZWdfcmVwbGFjZSgnKFteMC05XSknLCcnLCRjY251bWJlcik7DQoJCS8vJF9jY2luZm9bJ2NjZXhwJ10gPSBkYXRlKCdtJywkY2NleHApLicvJy5kYXRlKCdZJywkY2NleHApOw0KCQkkX2NjaW5mb1snY2NleHAnXSA9IGRhdGUoJ20nLCRjY2V4cCkuZGF0ZSgneScsJGNjZXhwKTsNCgkJaWYoICFlbXB0eSgkY2N2Y29kZSkgKXsNCgkJCSRfY2NpbmZvWydjdnYnXSA9IHByZWdfcmVwbGFjZSgnKFteMC05XSknLCcnLCRjY3Zjb2RlKTsNCgkJfQ0KCSR0aGlzLT5fZGF0YVsnY2NpbmZvJ10gPSAkX2NjaW5mbzsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFNldEN1cnJlbmN5Q29kZSgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBwdWJsaWMgZnVuY3Rpb24gU2V0Q3VycmVuY3lDb2RlKCRjb2RlID0gJ1VTRCcpew0KICAgICR0aGlzLT5fZGF0YVsnY3VycmVuY3ljb2RlJ10gPSBzdHJ0b3VwcGVyKCRjb2RlKTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFNldFdlaWdodFVuaXRzKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIHB1YmxpYyBmdW5jdGlvbiBTZXRXZWlnaHRVbml0cygkdW5pdHMgPSAnbGJzJyl7DQogICAgJHRoaXMtPl9kYXRhWyd3ZWlnaHR1bml0cyddID0gJHVuaXRzOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgU2V0RGVzdGluYXRpb24oKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgcHVibGljIGZ1bmN0aW9uIFNldERlc3RpbmF0aW9uKCR1cmwpew0KICAgICR0aGlzLT5fZGF0YVsnZGVzdGluYXRpb24nXSA9ICR1cmw7DQogIH0NCiAgICANCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgQWRkSXRlbSgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBwdWJsaWMgZnVuY3Rpb24gQWRkSXRlbSgkbmFtZSwkbnVtYmVyLCRxdWFudGl0eSwkd2VpZ2h0LCRhbW91bnQsJHRheCA9ICcnKXsNCiAgICAkbmFtZSA9IHN0cmlwX3RhZ3MoJG5hbWUpOw0KICAgICRuYW1lID0gcHJlZ19yZXBsYWNlKCcvXCYuKlw7LycsJycsJG5hbWUpOw0KICAgICRuYW1lID0gdHJpbSgkbmFtZSk7DQoNCiAgICBpZiggIWlzc2V0KCR0aGlzLT5fZGF0YVsnaXRlbXMnXSkgKXsNCgkkdGhpcy0+X2RhdGFbJ2l0ZW1zJ10gPSBhcnJheSgpOw0KICAgICAgfQ0KDQogICAgJG51bSA9IDE7DQogICAgJHRtcCA9ICRuYW1lOw0KICAgIHdoaWxlKCBpc3NldCgkdGhpcy0+X2RhdGFbJ2l0ZW1zJ11bJHRtcF0pICYmICgkbnVtIDwgMTAwKSApew0KCSRudW0gPSAoaW50KSRudW0gKyAxOw0KCSR0bXAgPSAkbmFtZSAuICRudW07DQogICAgICB9DQogICAgJHRoaXMtPl9kYXRhWydpdGVtcyddWyR0bXBdID0gDQogICAgICAgYXJyYXkoJ25hbWUnPT4kbmFtZSwNCgkgICAgICdudW1iZXInPT4kbnVtYmVyLA0KCSAgICAgJ3F1YW50aXR5Jz0+JHF1YW50aXR5LA0KCSAgICAgJ3dlaWdodCc9PiR3ZWlnaHQsDQoJICAgICAnYW1vdW50Jz0+JGFtb3VudCk7DQogICAgaWYoIWVtcHR5KCR0YXgpKXsNCgkkdGhpcy0+X2RhdGFbJ2l0ZW1zJ11bJHRtcF1bJ3RheCddID0gJHRheDsNCiAgICAgIH0NCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFNldE9yZGVyRGVzY3JpcHRpb24oKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgcHVibGljIGZ1bmN0aW9uIFNldE9yZGVyRGVzY3JpcHRpb24oJHR4dCl7DQogICAgJHRoaXMtPl9kYXRhWydkZXNjcmlwdGlvbiddID0gc3Vic3RyKCR0eHQsMCwyNTUpOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgU2V0T3JkZXJUYXhBbW91bnQoKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgcHVibGljIGZ1bmN0aW9uIFNldE9yZGVyVGF4QW1vdW50KCR0YXgpew0KICAgICR0aGlzLT5fZGF0YVsnb3JkZXJ0YXgnXSA9ICR0YXg7DQogIH0NCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBTZXRPcmRlclNoaXBwaW5nKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIHB1YmxpYyBmdW5jdGlvbiBTZXRPcmRlclNoaXBwaW5nKCRzaGlwcGluZyl7DQogICAgJHRoaXMtPl9kYXRhWydvcmRlcnNoaXBwaW5nJ10gPSAkc2hpcHBpbmc7DQogIH0NCg0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFNldEludm9pY2UoKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgcHVibGljIGZ1bmN0aW9uIFNldEludm9pY2UoJGludm9pY2Upew0KICAgICRsZW4gPSBtaW4oc3RybGVuKCRpbnZvaWNlKSwyMCkqLTE7DQogICAgJHRoaXMtPl9kYXRhWydpbnZvaWNlJ10gPSBzdWJzdHIoJGludm9pY2UsJGxlbik7DQogIH0NCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBTZXRPcmRlcklEKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIHB1YmxpYyBmdW5jdGlvbiBTZXRPcmRlcklEKCRvcmRlcmlkKXsNCiAgICAkdGhpcy0+X2RhdGFbJ29yZGVyaWQnXSA9ICRvcmRlcmlkOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgR2V0T3JkZXJJRCgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0T3JkZXJJRCgpew0KICAgIGlmKCBpc3NldCgkdGhpcy0+X2RhdGFbJ29yZGVyaWQnXSkgKQ0KICAgICAgcmV0dXJuICR0aGlzLT5fZGF0YVsnb3JkZXJpZCddOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgU2V0VHJhbnNhY3Rpb25JZCgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBwdWJsaWMgZnVuY3Rpb24gU2V0VHJhbnNhY3Rpb25JZCgkdGlkKXsNCiAgICAkdGhpcy0+X2RhdGFbJ3RyYW5zYWN0aW9uX2lkJ10gPSAkdGlkOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgU2V0VHJhbnNhY3Rpb25TdGF0dXMoKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgcHVibGljIGZ1bmN0aW9uIFNldFRyYW5zYWN0aW9uU3RhdHVzKCRzdGF0dXMpew0KICAgICR0aGlzLT5fZGF0YVsnc3RhdHVzJ10gPSAkc3RhdHVzOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgU2V0VHJhbnNhY3Rpb25BbW91bnQoKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgcHVibGljIGZ1bmN0aW9uIFNldFRyYW5zYWN0aW9uQW1vdW50KCR0aWQpew0KICAgICR0aGlzLT5fZGF0YVsnYW1vdW50J10gPSAkdGlkOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgU2V0RXJyb3IoKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgcHVibGljIGZ1bmN0aW9uIFNldEVycm9yKCRtZXNzYWdlKXsNCiAgICAkdGhpcy0+X2RhdGFbJ3N0YXR1cyddID0gUEFZTUVOVF9TVEFUVVNfRVJST1I7DQogICAgJHRoaXMtPl9kYXRhWydlcnJvcl9tZXNzYWdlJ10gPSAkbWVzc2FnZTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFNldENhbmNlbGxlZCgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBwdWJsaWMgZnVuY3Rpb24gU2V0Q2FuY2VsbGVkKCRtZXNzYWdlKXsNCiAgICAkdGhpcy0+X2RhdGFbJ3N0YXR1cyddID0gUEFZTUVOVF9TVEFUVVNfQ0FOQ0VMTEVEOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgUmVzZXQoKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgcHVibGljIGZ1bmN0aW9uIFJlc2V0KCl7DQogICAgJHRoaXMtPl9kYXRhID0gYXJyYXkoKTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFNldERlY2xpbmVkKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIHB1YmxpYyBmdW5jdGlvbiBTZXREZWNsaW5lZCgkbWVzc2FnZSl7DQogICAgJHRoaXMtPl9kYXRhWydzdGF0dXMnXSA9IFBBWU1FTlRfU1RBVFVTX0RFQ0xJTkVEOw0KICAgICR0aGlzLT5fZGF0YVsnZXJyb3JfbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX3BheW1lbnRfZGVjbGluZWQnKS4nXHJcblxyXG4nLiRtZXNzYWdlOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgR2V0VHJhbnNhY3Rpb25TdGF0dXMoKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldFRyYW5zYWN0aW9uU3RhdHVzKCl7DQogICAgaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVsnc3RhdHVzJ10pICkNCiAgICAgIHJldHVybiAkdGhpcy0+X2RhdGFbJ3N0YXR1cyddOw0KICAgIHJldHVybiBGQUxTRTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEdldFRyYW5zYWN0aW9uSWQoKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldFRyYW5zYWN0aW9uSWQoKXsNCiAgICBpZiggaXNzZXQoJHRoaXMtPl9kYXRhWyd0cmFuc2FjdGlvbl9pZCddKSApDQogICAgICByZXR1cm4gJHRoaXMtPl9kYXRhWyd0cmFuc2FjdGlvbl9pZCddOw0KICAgIHJldHVybiBGQUxTRTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEdldFRyYW5zYWN0aW9uQW1vdW50KCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIHB1YmxpYyBmdW5jdGlvbiBHZXRUcmFuc2FjdGlvbkFtb3VudCgpew0KICAgIGlmKCBpc3NldCgkdGhpcy0+X2RhdGFbJ2Ftb3VudCddKSApDQogICAgICByZXR1cm4gJHRoaXMtPl9kYXRhWydhbW91bnQnXTsNCiAgICByZXR1cm4gRkFMU0U7DQogIH0NCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBHZXRNZXNzYWdlKCkNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIHB1YmxpYyBmdW5jdGlvbiBHZXRNZXNzYWdlKCl7DQogICAgaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVsnZXJyb3JfbWVzc2FnZSddKSApDQogICAgICByZXR1cm4gJHRoaXMtPl9kYXRhWydlcnJvcl9tZXNzYWdlJ107DQogICAgcmV0dXJuIEZBTFNFOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgRmluaXNoVHJhbnNhY3Rpb24oKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgcHVibGljIGZ1bmN0aW9uIEZpbmlzaFRyYW5zYWN0aW9uKCl7DQogICAgaWYoICFpc3NldCgkdGhpcy0+X2RhdGFbJ2Rlc3RpbmF0aW9uJ10pICkgcmV0dXJuIEZBTFNFOw0KICAgICRrZXkgPSAkdGhpcy0+U2F2ZVN0YXRlKCk7DQogICAgJHVybCA9ICR0aGlzLT5fZGF0YVsnZGVzdGluYXRpb24nXTsNCiAgICAkdXJsID0gaHRtbF9lbnRpdHlfZGVjb2RlKCR1cmwpOw0KICAgICR1cmwgLj0gIiZjbnRudDAxZGF0YWtleT0ka2V5IjsNCiAgICByZWRpcmVjdCgkdXJsKTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIENoZWNrSW5mbygpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBwdWJsaWMgZnVuY3Rpb24gQ2hlY2tJbmZvKCl7DQogICAgLy8gVE9ETzogZmlsbCB0aGlzIGluLg0KICAgIHJldHVybiBUUlVFOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgR2V0Rm9ybSgpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0Rm9ybSgkcmV0dXJuaWQpew0KICAgIGlmKCAhJHRoaXMtPkNoZWNrSW5mbygpICkgcmV0dXJuIEZBTFNFOw0KICAgLy8gJGxvZ2luaWQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbG9naW5pZCcpOw0KICAgLy8gJHRyYW5zYWN0aW9ua2V5ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3RyYW5zYWN0aW9ua2V5Jyk7DQogICAvLyBpZiggZW1wdHkoJGxvZ2luaWQpICl7DQoJLy9yZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvck1lc3NhZ2UoJHRoaXMtPkdldE5hbWUoKS4nOiAnLiR0aGlzLT5MYW5nKCdlcnJvcl9jb25maWd1cmF0aW9uJykpOw0KICAgLy8gICB9DQogICAgDQogICAgJGtleSA9ICR0aGlzLT5TYXZlU3RhdGUodHJ1ZSk7DQoNCiAgICBnbG9iYWwgJGdDbXM7DQogICAgJHNtYXJ0eSA9JiAkZ0Ntcy0+R2V0U21hcnR5KCk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLA0KCQkgICAgJHRoaXMtPkNHQ3JlYXRlRm9ybVN0YXJ0KCdjbnRudDAxJywncHJvY2Vzc19wYXltZW50JywkcmV0dXJuaWQsDQoJCQkJCSAgICAgYXJyYXkoJ2tleSc9PiRrZXkpKSk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsNCgkJICAgIA0KCQkJCQkgICAgIA0KICAgIC8vIGFuZCBwcm9jZXNzIHRoZSB0ZW1wbGF0ZS4NCiAgICByZXR1cm4gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgnZm9ybV90ZW1wbGF0ZScpOw0KICB9DQoNCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgU2V0QmlsbGluZ0FkZHJlc3MoKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgICAgICAgcHVibGljIGZ1bmN0aW9uIFNldEJpbGxpbmdBZGRyZXNzKCRiaWxsaW5nX2FkZHkpDQogICAgICAgIHsNCgkJCQ0KICAgICAgICAgICAgICAgIGlmKCAhJGJpbGxpbmdfYWRkeSBpbnN0YW5jZW9mIGNnZV9hZGRyZXNzICkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQogICAgICAgICAgICAgICAgfQ0KCQkJCS8vcHJpbnRfcigkYmlsbGluZ19hZGR5KTsNCgkJCQkvL2V4aXQoKTsNCiAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJ2JpbGxpbmdfYWRkcmVzcyddID0gJGJpbGxpbmdfYWRkeTsNCiAgICAgICAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFNldFNoaXBwaW5nQWRkcmVzcygpDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICAgICAgICBwdWJsaWMgZnVuY3Rpb24gU2V0U2hpcHBpbmdBZGRyZXNzKCRzaGlwcGluZ19hZGR5KQ0KICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYoICEkc2hpcHBpbmdfYWRkeSBpbnN0YW5jZW9mIGNnZV9hZGRyZXNzICkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICR0aGlzLT5fZGF0YVsnc2hpcHBpbmdfYWRkcmVzcyddID0gJHNoaXBwaW5nX2FkZHk7DQogICAgICAgIH0NCg0KDQoNCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBQcm9jZXNzVHJhbnNhY3Rpb24oKQ0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgcHVibGljIGZ1bmN0aW9uIFByb2Nlc3NUcmFuc2FjdGlvbigpew0KICAgICRrZXkgPSAkdGhpcy0+U2F2ZVN0YXRlKHRydWUpOw0KICAgICRwYXJhbXMgPSBhcnJheSgpOw0KICAgICRwYXJhbXNbJ2tleSddID0gJGtleTsNCiAgICByZXR1cm4gJHRoaXMtPkRvQWN0aW9uKCdwcm9jZXNzX3BheW1lbnQnLCdjbnRudDAxJywkcGFyYW1zKTsNCiAgfQ0KDQp9IC8vIGNsYXNzDQo=]]></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.prefs_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IEF1dGhOZXRTaW0gKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsIA0KIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQ0KIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB0aGUgYWJpbGl0eSB0byBwcm9jZXNzDQojICBQYXltZW50cyBtYWRlIHVzaW5nIHRoZSBFLWNvbW1lcmNlIHN1aXRlIHRocm91Z2ggdGhlIEF1dGhOZXQgcGF5bWVudA0KIyAgZ2F0ZXdheS4NCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMNCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIA0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7DQoNCiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywkdGhpcy0+Q0dDcmVhdGVGb3JtU3RhcnQoJGlkLCdhZG1pbl9zZXRwcmVmcycpKTsNCiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7DQoNCiRzbWFydHktPmFzc2lnbigndGVzdG1vZGUnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0ZXN0bW9kZScpKTsNCiRzbWFydHktPmFzc2lnbigndXNlX2ZpeGVkX2Ftb3VudCcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZV9maXhlZF9hbW91bnQnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3VzZXJuYW1lJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWUnLCcnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3Bhc3N3b3JkJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFzc3dvcmQnLCcnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2ZpeGVkX2Ftb3VudCcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ZpeGVkX2Ftb3VudCcsJycpKTsNCiRzbWFydHktPmFzc2lnbigndXNlX3RyYW5zX3R5cGUnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VfdHJhbnNfdHlwZScpKTsNCg0KDQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3ByZWZzX3RhYi50cGwnKTsNCiMNCiMgRU9GDQojDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/function.template_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEF1dGhOZXRTaW0gKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcHJvY2VzcwojICBQYXltZW50cyBtYWRlIHVzaW5nIHRoZSBFLWNvbW1lcmNlIHN1aXRlIHRocm91Z2ggdGhlIEF1dGhOZXQgcGF5bWVudAojICBnYXRld2F5LgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCmVjaG8gJHRoaXMtPkdldFNpbmdsZVRlbXBsYXRlRm9ybSgkdGhpcywkaWQsJHJldHVybmlkLCdmb3JtX3RlbXBsYXRlJywKCQkJCSAgJ3RlbXBsYXRlJywKCQkJCSAgJHRoaXMtPkxhbmcoJ3Byb21wdF9mb3JtX3RlbXBsYXRlJyksCgkJCQkgICdvcmlnX2Zvcm1fdGVtcGxhdGUudHBsJyk7CiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/Thumbs.db</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAEAAAAgAAAAEAAAD+////AAAAAAAAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/////v////7///8EAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAP7//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUA//////////8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBu+kbR/coBAwAAAIAWAAAAAAAAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAgD///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwwAAAAAAABDAGEAdABhAGwAbwBnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAACAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEAAACUAAAAAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAIBAQAAAAIAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAAEcJAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAkAAAAJQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAAC8AAAAwAAAA/v///zIAAABZAAAANAAAADUAAAA2AAAANwAAADgAAAA5AAAAOgAAADsAAAA8AAAAPQAAAD4AAAA/AAAAQAAAAEEAAABCAAAAQwAAAEQAAABFAAAARgAAAEcAAABIAAAASQAAAEoAAABLAAAATAAAAE0AAABOAAAATwAAAFAAAABRAAAAUgAAAFMAAABUAAAAVQAAAFYAAABXAAAAWAAAAP7////+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8MAAAAAQAAAAMMAAD/2P/gABBKRklGAAEBAQBgAGAAAP/bAEMAAwICAwICAwMDAwQDAwQFCAUFBAQFCgcHBggMCgwMCwoLCw0OEhANDhEOCwsQFhARExQVFRUMDxcYFhQYEhQVFP/bAEMBAwQEBQQFCQUFCRQNCw0UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFP/AABEIAGAAYAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AP0f8c+PLfQ99jDqNrp04wJ9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]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMxLTkNCiRsYW5nWycxMDAnXSA9ICdUcmFuc2FjdGlvbiB3YXMgQXBwcm92ZWQnOw0KDQokbGFuZ1snMjAwJ10gPSAnVHJhbnNhY3Rpb24gd2FzIERlY2xpbmVkIGJ5IFByb2Nlc3Nvcic7DQokbGFuZ1snMjAxJ10gPSAnRG8gTm90IEhvbm9yJzsNCiRsYW5nWycyMDInXSA9ICdJbnN1SGljaWVudCBGdW5kcyc7DQokbGFuZ1snMjAzJ10gPSAnT3ZlciBMaW1pdCc7DQokbGFuZ1snMjA0J10gPSAnVHJhbnNhY3Rpb24gbm90IGFsbG93ZWQnOw0KJGxhbmdbJzIyMCddID0gJ0luY29ycmVjdCBQYXltZW50IERhdGEnOw0KJGxhbmdbJzIyMSddID0gJ05vIFN1Y2ggQ2FyZCBJc3N1ZXInOw0KJGxhbmdbJzIyMiddID0gJ05vIENhcmQgTnVtYmVyIG9uIGZpbGUgd2l0aCBJc3N1ZXInOw0KJGxhbmdbJzIyMyddID0gJ0V4cGlyZWQgQ2FyZCc7DQokbGFuZ1snMjI0J10gPSAnSW52YWxpZCBFeHBpcmF0aW9uIERhdGUnOw0KJGxhbmdbJzIyNSddID0gJ0ludmFsaWQgQ2FyZCBTZWN1cml0eSBDb2RlJzsNCiRsYW5nWycyNDAnXSA9ICdDYWxsIElzc3VlciBmb3IgRnVydGhlciBJbmZvcm1hdGlvbic7DQokbGFuZ1snMjUwJ10gPSAnUGljayBVcCBDYXJkJzsNCiRsYW5nWycyNTEnXSA9ICdMb3N0IENhcmQnOw0KJGxhbmdbJzI1MiddID0gJ1N0b2xlbiBDYXJkJzsNCiRsYW5nWycyNTMnXSA9ICdGcmF1ZHVsYW50IENhcmQnOw0KJGxhbmdbJzI2MCddID0gJ0RlY2xpbmVkIHdpdGggZnVydGhlciBJbnN0cnVjdGlvbnMgQXZhaWxhYmxlIChzZWUgcmVzcG9uc2UgdGV4dCknOw0KJGxhbmdbJzI2MSddID0gJ0RlY2xpbmVkIC0gU3RvcCBBbGwgUmVjdXJyaW5nIFBheW1lbnRzJzsNCiRsYW5nWycyNjInXSA9ICdEZWNsaW5lZCAtIFN0b3AgdGhpcyBSZWN1cnJpbmcgUHJvZ3JhbSc7DQokbGFuZ1snMjYzJ10gPSAnRGVjbGluZWQgLSBVcGRhdGUgQ2FyZGhvbGRlciBEYXRhIEF2YWlsYWJsZSc7DQokbGFuZ1snMjY0J10gPSAnRGVjbGluZWQgLSBSZXRyeSBpbiBhIGZldyBkYXlzJzsNCg0KJGxhbmdbJzMwMCddID0gJ1RyYW5zYWN0aW9uIHdhcyBSZWplY3RlZCBieSBHYXRld2F5JzsNCg0KJGxhbmdbJzQwMCddID0gJ1RyYW5zYWN0aW9uIEVycm9yIFJldHVybmVkIGJ5IFByb2Nlc3Nvcic7DQokbGFuZ1snNDEwJ10gPSAnSW52YWxpZCBNZXJjaGFudCBDb25maWd1cmF0aW9uJzsNCiRsYW5nWyc0MTEnXSA9ICdNZXJjaGFudCBBY2NvdW50IGlzIEluYWN0aXZlJzsNCiRsYW5nWyc0MjAnXSA9ICdDb21tdW5pY2F0aW9uIEVycm9yJzsNCiRsYW5nWyc0MjEnXSA9ICdDb21tdW5pY2F0aW9uIEVycm9yIHdpdGggSXNzdWVyJzsNCiRsYW5nWyc0MzAnXSA9ICdEdXBsaWNhdGUgVHJhbnNhY3Rpb24gYXQgUHJvY2Vzc29yJzsNCiRsYW5nWyc0NDAnXSA9ICdQcm9jZXNzb3IgRm9ybWF0IEVycm9yJzsNCiRsYW5nWyc0NDEnXSA9ICdJbnZhbGlkIFRyYW5zYWN0aW9uIEluZm9ybWF0aW9uJzsNCiRsYW5nWyc0NjAnXSA9ICdQcm9jZXNzb3IgRmVhdHVyZSBub3QgQXZhaWxhYmxlJzsNCiRsYW5nWyc0NjEnXSA9ICdVbnN1cHBvcnRlZCBDYXJkIFR5cGUnOw0KDQoNCg0KDQojQQ0KJGxhbmdbJ2FkdmFuY2VkJ10gPSAnQWR2YW5jZWQnOw0KJGxhbmdbJ2FsdGVybmF0ZV9wb3N0X3VybCddID0gJ0FsdGVybmF0ZSBUcmFuc2FjdGlvbiBTdWJtaXNzaW9uIFVSTCc7DQokbGFuZ1snYWx0ZXJuYXRlX3Rlc3RfdXJsJ10gPSAnQWx0ZXJuYXRlIFRlc3QgVHJhbnNhY3Rpb24gU3VibWlzc2lvbiBVUkwnOw0KDQoNCiNCDQoNCg0KI0MNCiRsYW5nWydjaGFuZ2Vsb2cnXSA9IDw8PEVPVA0KPHVsPg0KICA8bGk+VmVyc2lvbiAxLjAgLSBKdWx5LCAyMDEwDQogICAgPHVsPg0KICAgICAgPGxpPkluaXRpYWwgUmVsZWFzZTwvbGk+DQogICAgPC91bD4NCiAgPC9saT4NCjwvdWw+DQpFT1Q7DQokbGFuZ1snY2hlY2tvdXRfYnV0dG9uX21lc3NhZ2UnXSA9ICdDaGVja291dCc7DQokbGFuZ1snY2hlY2tvdXRfbWVzc2FnZSddID0gJ0NoZWNrb3V0IHVzaW5nIEFscGhhIENhcmQgU2VydmljZXMnOw0KDQojRA0KDQoNCiNFDQokbGFuZ1snZXJyb3JfY29uZmlndXJhdGlvbiddID0gJ1RoaXMgbW9kdWxlIGlzIG5vdCBwcm9wZXJseSBjb25maWd1cmVkJzsNCiRsYW5nWydlcnJvcl9oZWxkX2Zvcl9yZXZpZXcnXSA9ICdQYXltZW50IGhhcyBiZWVuIGhlbGQgZm9yIHJldmlldyc7DQokbGFuZ1snZXJyb3JfbWlzc2luZ19kYXRhJ10gPSAnU29tZSBpbmZvcm1hdGlvbiByZXF1aXJlZCBmb3Igc3VjY2Vzc2Z1bGwgdHJhbnNhY3Rpb24gcHJvY2Vzc2luZyBpcyBub3Qgc2V0JzsNCiRsYW5nWydlcnJvcl9wYXltZW50X2RlY2xpbmVkJ10gPSAnUGF5bWVudCBoYXMgYmVlbiBkZWNsaW5lZCc7DQokbGFuZ1snZXJyb3JfcmVzdG9yaW5nX3N0YXRlJ10gPSAnQSBwcm9ibGVtIG9jY3VycmVkIHJlc3RvcmluZyBnYXRld2F5IHN0YXRlIGluZm9ybWF0aW9uJzsNCiRsYW5nWydlcnJvcl91bmtub3duJ10gPSAnVGhlIHBheW1lbnQgZ2F0ZXdheSByZXR1cm5lZCBpbmZvcm1hdGlvbiB3ZSBkb250IHVuZGVyc3RhbmQgYXQgdGhpcyB0aW1lJzsNCiRsYW5nWydlcnJvcl91bmtub3duX2RhdGEnXSA9ICdUaGUgc2VydmVyIGRpZG5cJ3QgdGFsayB0byB0aGUgc2VydmljZSc7DQoNCiNGDQokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnQWxwaGEgQ2FyZCBTZXJ2aWNlcyc7DQokbGFuZ1snZm9ybV90ZW1wbGF0ZSddID0gJ0Zvcm0gVGVtcGxhdGUnOw0KDQojRw0KDQoNCiNIDQokbGFuZ1snaGVscCddID0gPDw8RU9UDQo8aDM+V2hhdCBkb2VzIHRoaXMgZG8/PC9oMz4NCjxwPlRoaXMgbW9kdWxlIHByb3ZpZGVzIHRoZSBhYmlsaXR5IGZvciB5b3VyIGN1c3RvbWVycyB0byBwYXkgZm9yIHRoZWlyIHB1cmNoYXNlcyB1c2luZyB0aGVpciBjcmVkaXQgY2FyZCBkaXJlY3RseSBvbiB5b3VyIHNpdGUgdXNpbmcgdGhlIEFscGhhIENhcmQgU2VydmljZXMgc2VjdXJlIGdhdGV3YXkuPC9wPg0KPGgzPldoeSBzaG91bGQgSSB1c2UgaXQ/PC9oMz4NCjxwPlRoaXMgZ2F0ZXdheSB3b3JrcyB3aXRob3V0IHJlZGlyZWN0aW5nIHRoZSB1c2VyIHRvIGEgZGlmZmVyZW50IHdlYnNpdGUsIGFuZCB0aGVuIHJlZGlyZWN0aW5nIHRoZW0gYmFjay4gIEl0IGFsbG93cyB0aGUgYWJpbGl0eSB0byBwcm92aWRlIHlvdXIgY3VzdG9tZXJzIHdpdGggYSBzaW5nbGUgdXNlciBleHBlcmllbmNlLjwvcD4NCjxoMz5TcGVjaWFsIFJlcXVpcmVtZW50czwvaDM+DQo8cD5UaGlzIG1vZHVsZSByZXF1aXJlcyB0aGF0IHlvdXIgd2ViIGFwcGxpY2F0aW9uIGJlIGNvbmZpZ3VyZWQgdG8gcHJvbXB0IHRoZSB1c2VyIGZvciBjcmVkaXQgY2FyZCBpbmZvcm1hdGlvbiwgVGhlIE9yZGVycyBtb2R1bGUgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gZG8gdGhpcy48L3A+DQo8cD5BbHNvIHRoaXMgbW9kdWxlIHdpbGwgcmVxdWlyZSBhIHZhbGlkYXRlZCBzZWN1cmUgZW52aXJvbm1lbnQuICAgWW91IHdpbGwgbmVlZCB0byBwdXJjaGFzZSBhIHZhbGlkYXRlZCBjZXJ0aWZpY2F0ZSBmcm9tIGFuIGFwcHJvdmRlZCBwcm92aWRlciwgaW5zdGFsbCB0aGF0IGNlcnRpZmljYXRlIGluIHlvdXIgd2ViIGhvc3QgZW52aXJvbm1lbnQsIGFuZCB0aGVuIGNvbmZpZ3VyZSBDTVMgTWFkZSBTaW1wbGUgdG8gd29yayBwcm9wZXJseSBpbiBhIHNlY3VyZSBlbnZpcm9ubWVudC48L3A+DQo8aDM+SG93IGRvIEkgdXNlIGl0PzwvaDM+DQo8cD5RdWl0ZSBzaW1wbHksIG9uY2UgYWxsIG9mIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGluc3RhbGxlZCwgeW91IHNpbXBseSBpbnN0YWxsIHRoZSBtb2R1bGUuICBUaGVuIGNvbmZpZ3VyZSB0aGUgbW9kdWxlIGluIHRoZSBBbHBoYUNhcmQgY29udHJvbCBwYW5lbCBpbiB0aGUgQ01TIE1hZGUgU2ltcGxlIGFkbWluIGNvbnNvbGUsIHVzaW5nIHRoZSB0cmFuc2FjdGlvbiBpZCwgYW5kIHRoZSBBUEkgTG9naW4gdGhhdCBhcmUgcHJvdmlkZWQgdG8geW91IGJ5IGF1dGhvcml6ZS5uZXQuIFRoZW4gbmF2aWdhdGUgdG8gdGhlIHByZWZlcmVuY2VzIHRhYiBpbiB0aGUgT3JkZXJzIG1vZHVsZSBhbmQgc2VsZWN0IHRoaXMgbW9kdWxlIGFzIHlvdXIgY2hvc2VuIHBheW1lbnQgZ2F0ZXdheS48L3A+DQo8aDM+U3VwcG9ydDwvaDM+DQo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+DQo8dWw+DQo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQgb3IgYnV5IGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBjbXMgZGV2ZWxvcG1lbnQgZm9yZ2UgYXQgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyI+ZGV2LmNtc21hZGVzaW1wbGUub3JnPC9hPi48L2xpPg0KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPg0KPGxpPlRoZSBhdXRob3IsIGplcmVteUJhc3MgYWxsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IocykgZGlyZWN0bHkuPC9saT4gIA0KPC91bD4NCg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMTAsIEplcmVteSBCYXNzIDxhIGhyZWY9Im1haWx0bzpqZXJlbXliYXNzQGNtc21hZGVzaW1wbGUub3JnIj4mbHQ7amVyZW15YmFzc0BjbXNtYWRlc2ltcGxlLm9yZyZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQooYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLjwvcD4NCjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZA0KYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQppbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gDQpzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLjwvcD4NCjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCk1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBDQpPciByZWFkIGl0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+b25saW5lPC9hPjwvcD4NCkVPVDsNCg0KDQojSQ0KJGxhbmdbJ2luZm9fYWx0ZXJuYXRlX3VybHMnXSA9ICdTb21lIHBheW1lbnQgZ2F0ZXdheXMgaGF2ZSAmcXVvdDtBdXRob3JpemUuTkVUJnF1b3Q7IGVtdWxhdG9ycyB0byBhbGxvdyB1c2luZyB0aGF0IHBheW1lbnQgZ2F0ZXdheSB3aXRoIGFsdGVybmF0ZSBzb2Z0d2FyZS4gICBBbG9uZyB3aXRoIG90aGVyIGRldGFpbHMsIHRoZXkgd2lsbCBwcm92aWRlIGFsdGVybmF0ZSBVUkxTIGZvciBzdWJtaXR0aW5nIHRoZSB0cmFuc2FjdGlvbnMuICAgWW91IG1heSBzcGVjaWZ5IHRob3NlIFVSTFMgaGVyZS4gICBJZiB0aGVzZSB2YWx1ZXMgYXJlIGJsYW5rLCB0aGVuIHRoZSBzeXN0ZW0gZGVmYXVsdCBVUkxTIGFyZSB1c2VkJzsNCiRsYW5nWydpbmZvX21kNWhhc2gnXSA9ICdUaGUga2V5IHVzZWQgdG8gZW5jcnlwdCBjZXJ0YWluIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0cmFuc2FjdGlvbiwgYW5kIHRvIHZlcmlmeSB0aGF0IHRyYW5zYWN0aW9uIGluZm9ybWF0aW9uIGNhbWUgZnJvbSBhIHZhbGlkIHNlcnZlci4gICBZb3Ugc2hvdWxkIGNvbmZpZ3VyZSB0aGUgaWRlbnRpY2FsIHZhbHVlIGluIHlvdXIgYXV0aG9yaXplLm5ldCBzZXR0aW5ncyc7DQokbGFuZ1snaW5mb19sb2dpbmlkJ10gPSAnUGxlYXNlIGVudGVyIHRoZSBMb2dpbiBJRCBwcm92aWRlZCB0byB5b3UgYnkgeW91ciBhdXRob3JpemUubmV0IHJlc2VsbGVyJzsNCiRsYW5nWydpbmZvX3Rlc3Rtb2RlJ10gPSAnV2l0aCB0ZXN0IG1vZGUgZW5hYmxlZCwgbm8gcmVhbCB0cmFuc2FjdGlvbnMgd2lsbCBiZSBwcm9jZXNzZWQnOw0KJGxhbmdbJ2luZm9fdHJhbnNhY3Rpb25rZXknXSA9ICdUaGUgdHJhbnNhY3Rpb24ga2V5IHZhbHVlIHN1cHBsaWVkIHRvIHlvdSBieSB5b3VyIGF1dGhvcml6ZS5uZXQgcmVzZWxsZXInOw0KJGxhbmdbJ2luZm9fdXNldGVzdHVybCddID0gJ1VzZSB0aGUgQXV0aG9yaXplLm5ldCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCBpbnN0ZWFkIG9mIHRoZSByZWFsIGVudmlyb25tZW50IChyZXF1aXJlcyBoYXZpbmcgYSBkZXZlbG9wZXIgYWNjb3VudCknOw0KDQoNCiRsYW5nWydpbmZvX2ZpeGVkX2Ftb3VudCddID0gJ1NldCBhbiBhbW91bnQgdG8gdXNlIGFzIHRoZSBmaXhlZCAoYWxzbyBnb29kIGZvciB0ZXN0aW5nKSc7DQokbGFuZ1snaW5mb19wYXNzd29yZCddID0gJ1NldCB5b3VyIHVzZXIgYWNjb3VudCBwYXNzd29yZCc7DQokbGFuZ1snaW5mb191c2VybmFtZSddID0gJ1NldCB5b3VyIHVzZXIgYWNjb3VudCB1c2VybmFtZSc7DQokbGFuZ1snaW5mb191c2VfZml4ZWRfYW1vdW50J10gPSAnU2V0IHRvIHVzZSBhcyB0aGUgZml4ZWQgYW1vdW50IChhbHNvIGdvb2QgZm9yIHRlc3RpbmcpJzsNCg0KI0oNCg0KDQojSw0KDQoNCiNMDQoNCg0KI00NCiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ0EgcGF5bWVudCBnYXRld2F5IGZvciB0aGUgRS1jb21tZXJjZSBzeXN0ZW0gdGhhdCB1c2VzIHRoZSBBSU0gcHJvdG9jb2wgZnJvbSBBdXRob3JpemUubmV0JzsNCg0KI04NCg0KDQojTw0KDQoNCiNQDQokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdNb2R1bGUgc3VjY2Vzc2Z1bGx5IGluc3RhbGxlZC4gIFBsZWFzZSB2aXNpdCB0aGUgbW9kdWxlIGFkbWluIHBhbmVsIGFuZCBlbnN1cmUgYWxsIHByZWZlcmVuY2VzIGFyZSBzZXQgcHJvcGVybHknOw0KJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdUaGlzIG1vZHVsZSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgdW5pbnN0YWxsZWQnOw0KJGxhbmdbJ3ByZWZlcmVuY2VzJ10gPSAnUHJlZmVyZW5jZXMnOw0KJGxhbmdbJ3Byb21wdF9mb3JtX3RlbXBsYXRlJ10gPSAnRWRpdCB0aGUgRm9ybSBUZW1wbGF0ZSc7DQokbGFuZ1sncHJvbXB0X21kNWhhc2gnXSA9ICdNRDUgSGFzaCc7DQokbGFuZ1sncHJvbXB0X2xvZ2luaWQnXSA9ICdBbHBoYSBDYXJkIFNlcnZpY2VzIEFQSSBMb2dpbiBJRCc7DQokbGFuZ1sncHJvbXB0X3Rlc3Rtb2RlJ10gPSAnRW5hYmxlIFRlc3QgTW9kZSc7DQokbGFuZ1sncHJvbXB0X3RyYW5zYWN0aW9ua2V5J10gPSAnVHJhbnNhY3Rpb24gS2V5JzsNCiRsYW5nWydwcm9tcHRfdXNldGVzdHVybCddID0gJ1VzZSBEZXZlbG9wZXIgYWNjb3VudCc7DQokbGFuZ1sncHJvbXB0X3VzZV90cmFuc190eXBlJ10gPSAnVHJhbnNhY3Rpb24gVHlwZXMnOw0KJGxhbmdbJ3Byb21wdF9maXhlZF9hbW91bnQnXSA9ICdGaXhlZCBBbW91bnQnOw0KJGxhbmdbJ3Byb21wdF9wYXNzd29yZCddID0gJ3Bhc3N3b3JkJzsNCiRsYW5nWydwcm9tcHRfdXNlcm5hbWUnXSA9ICdVc2VybmFtZSc7DQokbGFuZ1sncHJvbXB0X3VzZV9maXhlZF9hbW91bnQnXSA9ICdVc2UgRml4ZWQgQW1vdW50JzsNCg0KI1ENCg0KDQojUg0KJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdW5pbnN0YWxsIHRoaXMgbW9kdWxlLiAgQ29udGludWluZyBtYXkgaGF2ZSBiYWQgZWZmZWN0cyBvbiBhbiBvcGVyYXRpb25hbCB3ZWJzaXRlJzsNCg0KI1MNCiRsYW5nWydzdWJtaXQnXSA9ICdTdWJtaXQnOw0KDQoNCiNUDQoNCiNVDQoNCg0KI1YNCg0KDQojVw0KDQoNCiNYDQoNCg0KI1kNCg0KDQojWg0KDQoNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IEF1dGhOZXRTaW0gKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsIA0KIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQ0KIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB0aGUgYWJpbGl0eSB0byBwcm9jZXNzDQojICBQYXltZW50cyBtYWRlIHVzaW5nIHRoZSBFLWNvbW1lcmNlIHN1aXRlIHRocm91Z2ggdGhlIEF1dGhOZXQgcGF5bWVudA0KIyAgZ2F0ZXdheS4NCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMNCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIA0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7DQoNCiRjb25maWcgPSYgJGdDbXMtPkdldENvbmZpZygpOw0KDQokdGhpcy0+U2V0UHJlZmVyZW5jZSgndGVzdG1vZGUnLDEpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZXRlc3R1cmwnLDEpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2xvZ2luaWQnLCcnKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0cmFuc2FjdGlvbmtleScsJycpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZV90cmFuc190eXBlJywnY3JlZGl0Jyk7DQoNCiRmbiA9IGRpcm5hbWUoX19GSUxFX18pLicvdGVtcGxhdGVzL29yaWdfZm9ybV90ZW1wbGF0ZS50cGwnOw0KJGRhdGEgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsNCiR0aGlzLT5TZXRUZW1wbGF0ZSgnZm9ybV90ZW1wbGF0ZScsJGRhdGEpOw0KDQojDQojIEVPRg0KIw0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEF1dGhOZXRTaW0gKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcHJvY2VzcwojICBQYXltZW50cyBtYWRlIHVzaW5nIHRoZSBFLWNvbW1lcmNlIHN1aXRlIHRocm91Z2ggdGhlIEF1dGhOZXQgcGF5bWVudAojICBnYXRld2F5LgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCk7CiR0aGlzLT5EZWxldGVUZW1wbGF0ZSgpOwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/skeleton.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IEFscGhhQ2FyZCAoYykgMjAwOSBieSBSb2JlcnQgQ2FtcGJlbGwgDQojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpDQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBwcm92aWRlIHRoZSBhYmlsaXR5IHRvIHByb2Nlc3MNCiMgIFBheW1lbnRzIG1hZGUgdXNpbmcgdGhlIEUtY29tbWVyY2Ugc3VpdGUgdGhyb3VnaCB0aGUgQXV0aE5ldCBwYXltZW50DQojICBnYXRld2F5Lg0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQojDQojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZA0KIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUNCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUw0KIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gDQojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBDQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojRU5EX0xJQ0VOU0UNCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsNCg0KIw0KIyBFT0YNCiMNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/orig_form_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZm9ybSB0ZW1wbGF0ZSAqfQp7JGZvcm1zdGFydH0KeyRnYXRld2F5LT5MYW5nKCdjaGVja291dF9tZXNzYWdlJyl9OiA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0ieyRnYXRld2F5LT5MYW5nKCdjaGVja291dF9idXR0b25fbWVzc2FnZScpfSIvPgp7JGZvcm1lbmR9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/prefs_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmb3Jtc3RhcnR9DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfdGVzdG1vZGUnKX06PC9wPg0KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4NCiAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9dGVzdG1vZGUiIHZhbHVlPSIxIiB7aWYgJHRlc3Rtb2RlID09IDF9Y2hlY2tlZD0iY2hlY2tlZCJ7L2lmfS8+PGJyLz57JG1vZC0+TGFuZygnaW5mb190ZXN0bW9kZScpfQ0KICA8L3A+DQo8L2Rpdj4NCg0KPGhyLz4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF91c2VybmFtZScpfTo8L3A+DQogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfXVzZXJuYW1lIiB2YWx1ZT0ieyR1c2VybmFtZX0iIHNpemU9IjUwIi8+DQogICAgPGJyLz57JG1vZC0+TGFuZygnaW5mb191c2VybmFtZScpfQ0KICA8L3A+DQo8L2Rpdj4NCg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X3Bhc3N3b3JkJyl9OjwvcD4NCiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9cGFzc3dvcmQiIHZhbHVlPSJ7JHBhc3N3b3JkfSIgc2l6ZT0iNTAiLz4NCiAgICA8YnIvPnskbW9kLT5MYW5nKCdpbmZvX3Bhc3N3b3JkJyl9DQogIDwvcD4NCjwvZGl2Pg0KPGhyLz4NCg0KDQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfdXNlX3RyYW5zX3R5cGUnKX06PC9wPg0KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4NCiAge2h0bWxfb3B0aW9ucyBuYW1lPSJgJGFjdGlvbmlkYHVzZV90cmFuc190eXBlIiBvcHRpb25zPScsJ3xleHBsb2RlOidjcmVkaXQsc2FsZSxhdXRoJyBzZWxlY3RlZD0kdXNlX3RyYW5zX3R5cGV9DQogIDwvcD4NCjwvZGl2Pg0KDQoNCg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X3VzZV9maXhlZF9hbW91bnQnKX06PC9wPg0KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4NCiAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9dXNlX2ZpeGVkX2Ftb3VudCIgdmFsdWU9IjEiIHtpZiAkdXNlX2ZpeGVkX2Ftb3VudCA9PSAxfWNoZWNrZWQ9ImNoZWNrZWQiey9pZn0vPjxici8+eyRtb2QtPkxhbmcoJ2luZm9fdXNlX2ZpeGVkX2Ftb3VudCcpfQ0KICA8L3A+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9maXhlZF9hbW91bnQnKX06PC9wPg0KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4NCiAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1maXhlZF9hbW91bnQiIHZhbHVlPSJ7JGZpeGVkX2Ftb3VudH0iIHNpemU9IjUwIi8+DQogICAgPGJyLz57JG1vZC0+TGFuZygnaW5mb19maXhlZF9hbW91bnQnKX0NCiAgPC9wPg0KPC9kaXY+DQoNCg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+DQogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPg0KICA8L3A+DQo8L2Rpdj4NCg0KeyRmb3JtZW5kfQ==]]></data>
	</file>
</module>
