<?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>AWSS3</name>
	<version>1.1.1</version>
    <mincmsversion>2.2.1</mincmsversion>
	<help><![CDATA[PGEgaHJlZj0iaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS93aGF0LWlzLWNsb3VkLWNvbXB1dGluZyI+PGltZyBzcmM9Imh0dHBzOi8vZDEuYXdzc3RhdGljLmNvbS9sb2dvcy9hd3MtbG9nby1sb2NrdXBzL3Bvd2VyZWRieWF3cy9Qb3dlcmVkLUJ5X2xvZ28taG9yaXpfUkdCLjg3YzcwYWY4YThhMzRiNjg2MDY1MjRhZGU2MjYxZGIwODM5NDdhMTQucG5nIiBhbHQ9IlBvd2VyZWQgYnkgQVdTIENsb3VkIENvbXB1dGluZyIgd2lkdGg9IjIwMCIgc3R5bGU9ImZsb2F0OnJpZ2h0Ij48L2E+CjxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPgo8cD5UaGlzIENNU01TIHBsdWdpbiBhbGxvd3MgeW91IHRvIHVzZSBBbWF6b27igJlzIFNpbXBsZSBTdG9yYWdlIFNlcnZpY2UgdG8gaG9zdCB5b3VyIG1lZGlhIGZvciB5b3VyIENNU01TIHNldHVwLjwvcD4KCjxwPkFtYXpvbiBTMyBpcyBhIGNoZWFwIGFuZCBjb3N0IGVmZmVjdGl2ZSB3YXkgdG8gc2NhbGUgeW91ciBzaXRlIHRvIGVhc2lseSBoYW5kbGUgbGFyZ2Ugc3Bpa2VzIGluIHRyYWZmaWMgd2l0aG91dCBoYXZpbmcgdG8gZ28gdGhyb3VnaCB0aGUgZXhwZW5zZSBvZiBzZXR0aW5nIHVwIHRoZSBpbmZyYXN0cnVjdHVyZSBmb3IgYSBjb250ZW50IGRlbGl2ZXJ5IG5ldHdvcmsuPC9wPgoKPHA+T25jZSBzZXR1cCwgdGhpcyBwbHVnaW4gdHJhbnNwYXJlbnRseSBpbnRlZ3JhdGVzIHdpdGggeW91ciBDTVNNUy4gRmlsZSB1cGxvYWRzIGFyZSBhdXRvbWF0aWNhbGx5IHNhdmVkIGludG8geW91ciBBbWF6b24gUzMgYnVja2V0IHdpdGhvdXQgYW55IGV4dHJhIHN0ZXBzLiBPbmNlIHNhdmVkLCB0aGVzZSBmaWxlcyB3aWxsIGJlIGRlbGl2ZXJlZCBieSBBbWF6b24gUzMsIGluc3RlYWQgb2YgeW91ciB3ZWIgaG9zdC48L3A+Cgo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4KPHA+Q29uZmlndXJlIHRoZSBwbHVnaW4gaW4gdGhlIOKAmE9wdGlvbnPigJkgKG9yIOKAmFNldHRpbmdz4oCZKSBzY3JlZW4gYnkgZm9sbG93aW5nIHRoZSBvbnNjcmVlbiBwcm9tcHRzLjxicj5PbmNlIHNldHVwIGlzIGNvbXBsZXRlZCwgeW91IGNhbiBlbWJlZCB0aGUge0FXU1MzfSB0YWcgaW4geW91ciBwYWdlcy4gWW91IGNhbiB1c2UgdGhlIFBhcmFtZXRlcnMgYmVsb3cgdG8gY3VzdG9taXplIHlvdXIgZXhwZXJpZW5jZS48L3A+CjxwPgo8cHJlPgp7QVdTUzN9CntBV1NTMyBwcmVmaXg9ImltYWdlcy8ifQp7QVdTUzMgYWN0aW9uPXVwbG9hZH0Ke0FXU1MzIGFjdGlvbj1kZXRhaWwgcHJlZml4PSJFWFdENDM0MiAoNCkuSlBHIn0KPC9wcmU+CjwvcD4KCjxoMz5GZWVkYmFjay9TdXBwb3J0PC9oMz4KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlIG9yIHRvIGZpbGUgYSBGZWF0dXJlIFJlcXVlc3Qgb3IgQnVnIFJlcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBNb2R1bGUgRm9yZ2UKPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9BV1NTMyIgdGFyZ2V0PSJfYmxhbmsiPkFXU1MzIFBhZ2U8L2E+LjwvbGk+CjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHBzOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmcvdmlld3RvcGljLnBocD9mPTcmdD04Mzc4OCI+QVdTUzMgZm9ydW0gdG9waWM8L2E+LiBZb3UgYXJlIHdhcm1seSBpbnZpdGVkIHRvIG9wZW4gYSBuZXcgdG9waWMgaWYgeW91IGRpZG4ndCBmaW5kIGFuIGFuc3dlciB0byB5b3VyIHF1ZXN0aW9uLjwvbGk+CjxsaT5MYXN0bHksIGlmIHlvdSBlbmpveSB0aGlzIG1vZHVsZSwgdXNlIGl0IG9uIGEgY29tbWVyY2lhbCB3ZWJzaXRlIG9yIHdvdWxkIGxpa2UgdG8gZW5jb3VyYWdlIGZ1dHVyZSBkZXZlbG9wbWVudCwgeW91IG1pZ2h0IGNvbnNpZGVyIGp1c3QgYSBzbWFsbCBkb25hdGlvbi4gQW55IGtpbmQgb2YgZmVlZGJhY2sgd2lsbCBiZSBtdWNoIGFwcHJlY2lhdGVkLjxicj4KPGEgaHJlZj0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9kb25hdGUvP2hvc3RlZF9idXR0b25faWQ9RldIQUJaVU4zTkM0TiIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYWhhOTk5L0RvbmF0ZUJ1dHRvbnMvbWFzdGVyL3BheXBhbC1kb25hdGUtaWNvbi03LnBuZyIgd2lkdGg9IjEyMCIgPjwvYT48YnI+Cgk8L2xpPgo8L3VsPgo8aDM+SW50ZXJlc3RlZCBpbiBkZXZlbG9wbWVudD88L2gzPgo8cD5DaGVjayBvdXQgdGhlIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9tYWdhbGgvQVdTUzMiPkdpdGh1YiByZXBvc2l0b3J5PC9hPi48L3A+CjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMjMsIE1hZ2FsIEhlemkgPGEgaHJlZj0ibWFpbHRvOmhfbWFnYWxAaG90bWFpbC5jb20iPiZsdDtoX21hZ2FsQGhvdG1haWwuY29tJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4Kc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+CjwvcD4KCjxwPjxzdHJvbmc+QW1hem9uIFdlYiBTZXJ2aWNlcywgQVdTLCBhbmQgdGhlIFBvd2VyZWQgYnkgQVdTIGxvZ28gYXJlIHRyYWRlbWFya3Mgb2YgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlczwvc3Ryb25nPjwvcD4KPGgzPkRlcGVuZGVuY2llczwvaDM+PHVsPjxsaT5BV1NTREsgPSZndDsgMS4xLjA8L2xpPjxsaT5GaWxlTWFuYWdlciA9Jmd0OyAxLjYuMTM8L2xpPjwvdWw+PGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBhY3Rpb249ImRlZmF1bHQiIC0gDQogICAgT3ZlcnJpZGUgdGhlIGRlZmF1bHQgYWN0aW9uLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOg0KICAgIDx1bD4NCiAgICAgICAgPGxpPiZxdW90O2RlZmF1bHQmcXVvdDsgLSBkaXNwbGF5cyB0aGUgc3VtbWFyeSB2aWV3LjwvbGk+DQogICAgICAgIDxsaT4mcXVvdDtkZXRhaWwmcXVvdDsgLSBkaXNwbGF5cyBhIHNwZWNpZmllZCBlbnRyeSBpbiBkZXRhaWwgbW9kZS4gKG11c3QgYmUgdXNlZCB0b2dldGhlciB3aXRoIDxpPnByZWZpeDwvaT4pPC9saT4NCiAgICAgICAgPGxpPiZxdW90O3VwbG9hZCZxdW90OyAtIGRpc3BsYXlzIHRoZSB1cGxvYWQgZm9ybSAoY2FuIGJlIHVzZWQgd2l0aCA8aT5wcmVmaXg8L2k+IGZvciB1cGxvYWQgaW4gYSBzcGVjaWZpYyBsb2NhdGlvbik8L2VtPjwvbGk+DQogICAgPC91bD48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHByZWZpeD0iIiAtIEEgc3RyaW5nIG9mIGNoYXJhY3RlcnMgdGhhdCBjYW4gYmUgdGhlIGNvbXBsZXRlIHBhdGggaW4gZnJvbnQgb2YgdGhlIG9iamVjdCBuYW1lLiBQcm9qZWN0L1dvcmRGaWxlcy8uLi48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHBhZ2VsaW1pdD0iIiAtIE1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIHRvIGRpc3BsYXkgKHBlciBwYWdlKS4gIElmIHRoaXMgcGFyYW1ldGVyIGlzIG5vdCBzdXBwbGllZCBhbGwgbWF0Y2hpbmcgaXRlbXMgd2lsbCBiZSBkaXNwbGF5ZWQuICBJZiBpdCBpcywgYW5kIHRoZXJlIGFyZSBtb3JlIGl0ZW1zIGF2YWlsYWJsZSB0aGFuIHNwZWNpZmllZCBpbiB0aGUgcGFyYW1ldGVyLCB0ZXh0IGFuZCBsaW5rcyB3aWxsIGJlIHN1cHBsaWVkIHRvIGFsbG93IHNjcm9sbGluZyB0aHJvdWdoIHRoZSByZXN1bHRzPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBzdW1tYXJ5cGFnZT0iIiAtIFBhZ2UgdG8gZGlzcGxheSBpdGVtIHN1bW1hcnkgaW4uIE11c3QgYmUgYSBwYWdlIGFsaWFzL2lkLiBVc2VkIHRvIGFsbG93IHN1bW1hcmllcyB0byBiZSBkaXNwbGF5ZWQgaW4gYSBkaWZmZXJlbnQgcGFnZSB0aGFuIGluaXRpYXRvci48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHN1bW1hcnl0ZW1wbGF0ZT0iIiAtIFRoZSBzdW1tYXJ5IHRlbXBsYXRlIHlvdSB3aXNoIHRvIHVzZS48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGRldGFpbHBhZ2U9IiIgLSBQYWdlIHRvIGRpc3BsYXkgaXRlbSBkZXRhaWxzIGluLiBNdXN0IGJlIGEgcGFnZSBhbGlhcy9pZC4gVXNlZCB0byBhbGxvdyBkZXRhaWxzIHRvIGJlIGRpc3BsYXllZCBpbiBhIGRpZmZlcmVudCBwYWdlIHRoYW4gc3VtbWFyeS48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGRldGFpbHRlbXBsYXRlPSIiIC0gVGhlIGRldGFpbCB0ZW1wbGF0ZSB5b3Ugd2lzaCB0byB1c2UuPC9saT48L3VsPg==]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBNYWdhbCBIZXppICZsdDtoX21hZ2FsQGhvdG1haWwuY29tJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMS4xPGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PHVsPg0KICA8bGk+VkVSU0lPTjogMS4xLjEgREFURUQ6IDE3LU5PVkVNQkVSLTIwMjMNCiAgICA8cD5BZGRlZCBEZXRhaWwgdGVtcGxhdGUuPC9wPg0KICA8L2xpPg0KICA8bGk+VkVSU0lPTjogMS4xLjAgREFURUQ6IDE2LU5PVkVNQkVSLTIwMjMNCiAgICA8cD5JbmNvcnBvcmF0ZWQgY3JlZGVudGlhbHMuPC9wPg0KICA8L2xpPg0KICAgIDxsaT5WRVJTSU9OOiAxLjAuMCBEQVRFRDogMjAtSlVORS0yMDIzDQogICAgPHA+Rmlyc3QgdmVyc2lvbiBvZiB0aGUgcGx1Z2luLjwvcD4NCiAgPC9saT4NCjwvdWw+DQo8YnIgLz4=]]></about>
	<description><![CDATA[Store uploads in AWS S3]]></description>
	<requires>
	  <requiredname>AWSSDK</requiredname>
	  <requiredversion>1.1.0</requiredversion>
	</requires>
	<requires>
	  <requiredname>FileManager</requiredname>
	  <requiredversion>1.6.13</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.admin_fileview.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBBV1NTMw0KIyBBdXRob3JzOiBNYWdhbCBIZXppLCB3aXRoIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uLg0KIyBDb3B5cmlnaHQ6IChDKSAyMDIzIE1hZ2FsIEhlemksIGhfbWFnYWxAaG90bWFpbC5jb20NCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzLiBTZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLyAgDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyBNYWRlIFNpbXBsZShUTSkgaXMgKGMpIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIDIwMDQtMjAyMCAoaW5mb0BjbXNtYWRlc2ltcGxlLm9yZykNCiMgUHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0FXU1MzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VDQojIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIA0KIyBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMNCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluDQojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IA0KIyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgDQojIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgQW1hem9uIFdlYiBTZXJ2aWNlcywgQVdTLCBhbmQgdGhlIFBvd2VyZWQgYnkgQVdTIGxvZ28gYXJlIHRyYWRlbWFya3Mgb2YgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpuYW1lc3BhY2UgQVdTUzM7DQoNCnVzZSBcQVdTU0RLXGVuY3J5cHQ7DQoNCmlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbigkdGhpczo6TUFOQUdFX1BFUk0pICkgcmV0dXJuOw0KDQokYnVja2V0X2lkID0gJHRoaXMtPkdldE9wdGlvblZhbHVlKCdidWNrZXRfbmFtZScpOw0KJHRoaXMtPlNldEN1cnJlbnRUYWIoJGJ1Y2tldF9pZCk7DQokRmlsZU1hbmFnZXIgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdGaWxlTWFuYWdlcicpOw0KJG5taW51dGVzID0gKGludCkkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZXhwaXJ5X2ludGVydmFsJywgMTgwKTsNCmlmICgkbm1pbnV0ZXMgPT0gJycpICRubWludXRlcyA9IDA7DQoNCmlmKCBpc3NldCgkcGFyYW1zWyJhamF4Il0pKSB7DQogICRidWNrZXRfaWQgPSAkcGFyYW1zWyJidWNrZXRfaWQiXTsNCiAgJHByZWZpeCA9ICRwYXJhbXNbInByZWZpeCJdOw0KICAkc21hcnR5LT5hc3NpZ24oJ2FqYXgnLCB0cnVlKTsNCn0NCg0KaWYgKGlzc2V0KCRwYXJhbXNbImZtbWVzc2FnZSJdKSAmJiAkcGFyYW1zWyJmbW1lc3NhZ2UiXSE9IiIpIHsNCiAgLy8gZ290dGEgZ2V0IHJpZCBvZiB0aGlzIHN0dWZmLg0KICAkY291bnQ9IiI7DQogIGlmIChpc3NldCgkcGFyYW1zWyJmbW1lc3NhZ2Vjb3VudCJdKSAmJiAkcGFyYW1zWyJmbW1lc3NhZ2Vjb3VudCJdIT0iIikgJGNvdW50PSRwYXJhbXNbImZtbWVzc2FnZWNvdW50Il07DQogIGVjaG8gJHRoaXMtPlNob3dNZXNzYWdlKCR0aGlzLT5MYW5nKCRwYXJhbXNbImZtbWVzc2FnZSJdLCRjb3VudCkpOw0KfQ0KDQppZiAoaXNzZXQoJHBhcmFtc1siZm1lcnJvciJdKSAmJiAkcGFyYW1zWyJmbWVycm9yIl0hPSIiKSB7DQogIC8vIGdvdHRhIGdldCByaWQgb2YgdGhpcyBzdHVmZg0KICAkY291bnQ9IiI7DQogIGlmIChpc3NldCgkcGFyYW1zWyJmbWVycm9yY291bnQiXSkgJiYgJHBhcmFtc1siZm1lcnJvcmNvdW50Il0hPSIiKSAkY291bnQ9JHBhcmFtc1siZm1lcnJvcmNvdW50Il07DQogIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJEZpbGVNYW5hZ2VyLT5MYW5nKCRwYXJhbXNbImZtZXJyb3IiXSwkY291bnQpKTsNCn0NCg0KJHBhZ2VsaW1pdCA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgnaXRlbXNkaXNwbGF5ZWQnKT8kdGhpcy0+R2V0T3B0aW9uVmFsdWUoJ2l0ZW1zZGlzcGxheWVkJyk6MTA7DQokcGFnZWNvdW50ID0gLTE7DQokc3RhcnRlbGVtZW50ID0gMDsNCiRwYWdlbnVtYmVyID0gMTsNCg0KaWYoIGlzc2V0KCAkcGFyYW1zWydwYWdlbnVtYmVyJ10gKSAmJiAkcGFyYW1zWydwYWdlbnVtYmVyJ10gIT09ICcnICkgew0KICAkcGFnZW51bWJlciA9IChpbnQpJHBhcmFtc1sncGFnZW51bWJlciddOw0KICAkc3RhcnRlbGVtZW50ID0gKCRwYWdlbnVtYmVyLTEpICogJHBhZ2VsaW1pdDsNCn0NCiRlbmRlbGVtZW50ID0gJHN0YXJ0ZWxlbWVudCArICRwYWdlbGltaXQgLSAxOw0KDQokcXBhcm1zID0gYXJyYXkoKTsNCiRxcGFybXNbJ2J1Y2tldCddID0gJGJ1Y2tldF9pZDsNCiRxcGFybXNbJ3ByZWZpeCddID0gJHBhcmFtc1sicHJlZml4Il07DQokcXBhcm1zWydyZXR1cm5pZCddID0gJHJldHVybmlkOw0KJHNtYXJ0eS0+YXNzaWduKCdxcGFybXMnLCRxcGFybXMpOw0KDQokanNvbl9maWxlX1BhdGggPSAkdGhpcy0+Z2V0Q2FjaGVGaWxlKCRxcGFybXMpOw0KaWYoJG5taW51dGVzID09IDApIHsNCiAgJGRhdGEgPSBidWNrZXRfcXVlcnk6OmNhY2hlX3F1ZXJ5KCRxcGFybXMsJGpzb25fZmlsZV9QYXRoKTsNCn0gZWxzZSB7DQoNCiAgaWYgKCFmaWxlX2V4aXN0cygkanNvbl9maWxlX1BhdGgpKSB7DQogICAgICAkZGF0YSA9IGJ1Y2tldF9xdWVyeTo6Y2FjaGVfcXVlcnkoJHFwYXJtcywkanNvbl9maWxlX1BhdGgpOw0KICB9IGVsc2Ugew0KDQogICAgICAkanNvbiA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRqc29uX2ZpbGVfUGF0aCk7DQogICAgICAkdG1wID0gZW5jcnlwdDo6ZGVjcnlwdCgkanNvbik7DQogICAgICAkZGF0YSA9IGpzb25fZGVjb2RlKCR0bXAsIGZhbHNlKTsNCiAgDQogICAgICAkZW5kZGF0ZSAgPSBzdHJ0b3RpbWUoc3ByaW50ZigiKyVkIG1pbnV0ZXMiLCAkbm1pbnV0ZXMpLCAkZGF0YS0+ZGF0ZSk7DQogICAgICBpZiAodGltZSgpID49ICRlbmRkYXRlKSB7DQogICAgICAgICAgJGRhdGEgPSBidWNrZXRfcXVlcnk6OmNhY2hlX3F1ZXJ5KCRxcGFybXMsJGpzb25fZmlsZV9QYXRoKTsNCiAgICAgIH0NCg0KICB9DQp9DQoNCiRwcmVmaXggPSAkcGFyYW1zWydwcmVmaXgnXT8kcGFyYW1zWydwcmVmaXgnXTonJzsNCiR0bXBfcGF0aF9wYXJ0cz1leHBsb2RlKCcvJywgJHByZWZpeCk7IA0KDQokcGF0aF9wYXJ0cyA9IFtdOw0KZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJHRtcF9wYXRoX3BhcnRzKTsgJGkrKyApIHsNCiAgICAkb2JqID0gbmV3IFxTdGRDbGFzczsNCiAgICBpZiggISR0bXBfcGF0aF9wYXJ0c1skaV0gKSBjb250aW51ZTsNCiAgICAkb2JqLT5uYW1lID0gJHRtcF9wYXRoX3BhcnRzWyRpXTsNCiAgICBpZiggJG9iai0+bmFtZSA9PSAnOjp0b3A6OicgKSB7DQogICAgICAgICRvYmotPm5hbWUgPSAncm9vdCc7DQogICAgfQ0KICAgIGlmKCAkaSA8IGNvdW50KCR0bXBfcGF0aF9wYXJ0cykgLSAxICkgew0KICAgICAgICAvLyBub3QgdGhlIGxhc3QgZW50cnkNCiAgICAgICAgJGZ1bGxwYXRoID0gaW1wbG9kZSgnLycsYXJyYXlfc2xpY2UoJHRtcF9wYXRoX3BhcnRzLDAsJGkrMSkpOw0KICAgICAgICBpZiggc3RhcnRzd2l0aCgkZnVsbHBhdGgsJzo6dG9wOjonKSApICRmdWxscGF0aCA9IHN1YnN0cigkZnVsbHBhdGgsNyk7DQogICAgICAgICRvYmotPnVybCA9ICR0aGlzLT5jcmVhdGVfdXJsKCAkaWQsICdkZWZhdWx0YWRtaW4nLCAnJyxbICdwcmVmaXgnID0+ICRmdWxscGF0aC4nLycsJ19fYWN0aXZldGFiJz0+JGJ1Y2tldF9pZF0gKTsNCg0KICAgIH0gZWxzZSB7DQogICAgICAgIC8vIHRoZSBsYXN0IGVudHJ5Li4uIG5vIGxpbmsNCiAgICB9DQogICAgJHBhdGhfcGFydHNbXSA9ICRvYmo7DQp9DQoNCiR1cF9ob21lID0gJHRoaXMtPkNyZWF0ZUZyb250ZW5kTGluayggJGlkLCAkcmV0dXJuaWQsJ2RlZmF1bHRhZG1pbicsJGJ1Y2tldF9pZCk7DQokc21hcnR5LT5hc3NpZ24oJ3VwX2hvbWUnLCR1cF9ob21lKTsNCg0KJHBhcnRzX2NvdW50ZXIgPSBjb3VudCgkcGF0aF9wYXJ0cyk7DQppZiggJHBhcnRzX2NvdW50ZXIgPj0gMSApIHsNCiAgJHVwZGlyID0gdXRpbHM6OmdldFVwRGlyKCRwYXRoX3BhcnRzKTsNCiAgJGljb24gPSAkRmlsZU1hbmFnZXItPkdldE1vZHVsZVVSTFBhdGgoKS4nL2ljb25zL3RoZW1lcy9kZWZhdWx0L2FjdGlvbnMvZGlyX3VwLmdpZic7DQogICRpbWdfdGFnID0gJzxpbWcgc3JjPSInLiRpY29uLiciIHdpZHRoPSIzMiIgdGl0bGU9IicuJHRoaXMtPkxhbmcoJ3RpdGxlX2NoYW5nZXVwZGlyJykuJyIvPic7DQogIGlmKCRwYXJ0c19jb3VudGVyID4gMSl7DQogICAgJHBhcm1zWydwcmVmaXgnXSA9ICR1cGRpcjsNCiAgfQ0KICB1bnNldCgkcGFyYW1zWydwYWdlbnVtYmVyJ10pOw0KICANCiAgJHVwX2RpcnVybCA9ICR0aGlzLT5jcmVhdGVfdXJsKCAkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywkcGFybXMpOw0KICAkdXBfZGlyaWNvbmxpbmsgPSAkdGhpcy0+Q3JlYXRlRnJvbnRlbmRMaW5rKCRpZCwkcmV0dXJuaWQsJ2RlZmF1bHRhZG1pbicsJGltZ190YWcsJHBhcm1zLCcnLGZhbHNlLHRydWUsImNsYXNzPSdkaXJsaW5rJyIpOw0KICAkdXBfZGlybGluayA9ICI8YSBjbGFzcz1cImNhcmQtbGlua1wiIGhyZWY9XCJ7JHVwX2RpcnVybH1cIiB0aXRsZT1cInskdGhpcy0+TGFuZygndGl0bGVfY2hhbmdldXBkaXInKX1cIj4uLjwvYT4iOw0KDQogICRzbWFydHktPmFzc2lnbigndXBfZGlydXJsJywkdXBfZGlydXJsKTsNCiAgJHNtYXJ0eS0+YXNzaWduKCd1cF9kaXJpY29ubGluaycsJHVwX2Rpcmljb25saW5rKTsNCiAgJHNtYXJ0eS0+YXNzaWduKCd1cF9kaXJsaW5rJywkdXBfZGlybGluayk7DQoNCn0NCg0KJHNtYXJ0eS0+YXNzaWduKCdwYXRoJywkcGFyYW1zWyJwcmVmaXgiXSk7DQokc21hcnR5LT5hc3NpZ24oJ3BhdGhfcGFydHMnLCRwYXRoX3BhcnRzKTsNCg0KJGNvdW50ZmlsZXMgPSBpc3NldCgkZGF0YS0+dG90YWwpID8gJGRhdGEtPnRvdGFsIDogJzAnOw0KJHBhZ2Vjb3VudCA9IChpbnQpKCRjb3VudGZpbGVzIC8gJHBhZ2VsaW1pdCk7DQppZiggKCRjb3VudGZpbGVzICUgJHBhZ2VsaW1pdCkgIT0gMCApICRwYWdlY291bnQrKzsNCg0KLy8gYnVpbGQgZGlzcGxheQ0KJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCAkY291bnRmaWxlcyk7DQokc21hcnR5LT5hc3NpZ24oJ2hpZGRlbnBhdGgnLCAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAicHJlZml4IiwgJHBhcmFtc1sicHJlZml4Il0pKTsNCiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdmaWxlYWN0aW9uJywgJHJldHVybmlkKSk7DQovLyByb3VuZG93bg0KJHRvdGFsc2l6ZSA9IHV0aWxzOjpzdW1CeXRlcygkZGF0YS0+aXRlbXMpOw0KJGNvdW50cyA9ICR0b3RhbHNpemUgLiAiICIgLiAkRmlsZU1hbmFnZXItPkxhbmcoImluIikgLiAiICIgLiAkY291bnRmaWxlcyAuICIgIjsNCmlmICgkY291bnRmaWxlcyA9PSAxKSAkY291bnRzLj0kRmlsZU1hbmFnZXItPkxhbmcoImZpbGUiKTsgZWxzZSAkY291bnRzLj0kRmlsZU1hbmFnZXItPkxhbmcoImZpbGVzIik7DQokY291bnRzLj0iICIgLiAkRmlsZU1hbmFnZXItPkxhbmcoImFuZCIpIC4gIiAiIC4gJGNvdW50ZGlycyAuICIgIjsNCmlmICgkY291bnRkaXJzID09IDEpICRjb3VudHMuPSRGaWxlTWFuYWdlci0+TGFuZygic3ViZGlyIik7IGVsc2UgJGNvdW50cy49JEZpbGVNYW5hZ2VyLT5MYW5nKCJzdWJkaXJzIik7DQokc21hcnR5LT5hc3NpZ24oJ2NvdW50c3RleHQnLCAkY291bnRzKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7DQokc21hcnR5LT5hc3NpZ24oJ2J1Y2tldF9pZCcsICRidWNrZXRfaWQpOw0KJHNtYXJ0eS0+YXNzaWduKCdjYWNoZWZpbGUnLCRqc29uX2ZpbGVfUGF0aCk7DQokc21hcnR5LT5hc3NpZ24oJ2xhc3R1cGRhdGUnLCAkZGF0YS0+ZGF0ZSk7DQokc21hcnR5LT5hc3NpZ24oJ3BhZ2VudW1iZXInLCRwYWdlbnVtYmVyKTsNCiRzbWFydHktPmFzc2lnbignc3RhcnRlbGVtZW50Jywkc3RhcnRlbGVtZW50KTsNCmlmKCRlbmRlbGVtZW50ID49ICRjb3VudGZpbGVzKSRlbmRlbGVtZW50PSRjb3VudGZpbGVzLTE7DQokc21hcnR5LT5hc3NpZ24oJ2VuZGVsZW1lbnQnLCAkZW5kZWxlbWVudCk7DQokc21hcnR5LT5hc3NpZ24oJ3BhZ2Vjb3VudCcsJHBhZ2Vjb3VudCk7DQokc21hcnR5LT5hc3NpZ24oJ29mdGV4dCcsJHRoaXMtPkxhbmcoJ3Byb21wdF9vZicpKTsNCiRzbWFydHktPmFzc2lnbigncGFnZXRleHQnLCR0aGlzLT5MYW5nKCdwcm9tcHRfcGFnZScpKTsNCg0KaWYgKCRzdGFydGVsZW1lbnQgPCAwIHx8ICRzdGFydGVsZW1lbnQgPiAkZW5kZWxlbWVudCkgew0KICAvL2VjaG8gIkludmFsaWQgaW5kZXhlcyBzdGFydGVsZW1lbnQuIjsNCn0gZWxzZSB7DQogIC8vIFNsaWNlIHRoZSBhcnJheSB0byBleHRyYWN0IGVsZW1lbnRzIGJldHdlZW4gdGhlIGluZGV4ZXMNCiAgDQogICRzZWxlY3RlZEl0ZW1zID0gYXJyYXlfc2xpY2UoJGRhdGEtPml0ZW1zLCAkc3RhcnRlbGVtZW50LCAkZW5kZWxlbWVudCAtICRzdGFydGVsZW1lbnQgKyAxKTsNCg0KICBpZigkdXBfZGlydXJsKXsNCiAgICAkb25lcm93ID0gbmV3IFxzdGRDbGFzcygpOw0KICAgICRvbmVyb3ctPnVybCA9ICR1cF9kaXJ1cmw7DQogICAgJG9uZXJvdy0+dXJsX2xpbmsgPSAkdXBfZGlybGluazsNCiAgICAkb25lcm93LT5pY29uX2xpbmsgPSAkb25lcm93LT5wcmVzaWduZWRfaWNvbl9saW5rID0gJHVwX2Rpcmljb25saW5rOw0KICAgICRvbmVyb3ctPnR5cGUgPSBhcnJheSgnZGlyJyk7DQogICAgJG9uZXJvdy0+bm9DaGVja2JveCA9IDE7DQogICAgJGVudHJ5YXJyYXlbXT0gJG9uZXJvdzsNCiAgfQ0KICBmb3JlYWNoKCAkc2VsZWN0ZWRJdGVtcyBhcyAkcm93ICkgew0KICAgICAgJG9uZXJvdyA9ICRyb3c7DQogICAgICBpZigkb25lcm93LT5kaXIpew0KICAgICAgICAgICRzZW5kdG9kZXRhaWwgPSBhcnJheSgna2V5Jz0+JG9uZXJvdy0+a2V5KTsNCiAgICAgICAgICBpZiggaXNzZXQoICRwYXJhbXNbJ3BhZ2VsaW1pdCddICkgKSB7DQogICAgICAgICAgICAgICRzZW5kdG9kZXRhaWwgPSBhcnJheV9tZXJnZSgkc2VuZHRvZGV0YWlsLGFycmF5KCdwYWdlbGltaXQnPT4kcGFnZWxpbWl0KSk7DQogICAgICAgICAgfQ0KICAgICAgICAgICRvbmVyb3ctPnVybCA9ICR0aGlzLT5jcmVhdGVfdXJsKCdtMV8nLCdkZWZhdWx0YWRtaW4nLCcnLCRzZW5kdG9kZXRhaWwpOw0KICAgICAgICAgIC8vPGEgaHJlZj0ieyRmaWxlLT5wcmVzaWduZWRfdXJsfSIgdGFyZ2V0PSJfYmxhbmsiPnthZG1pbl9pY29uIGljb249J3Blcm1pc3Npb25zLmdpZicgYWx0PSd2aWV3X3BhZ2UnfGxhbmd9PC9hPg0KICAgICAgICAgICRvbmVyb3ctPnByZXNpZ25lZF9saW5rID0gIiI7DQogICAgICAgICAgJG9uZXJvdy0+dXJsX2xpbmsgPSAiPGEgaHJlZj0nIiAuICRvbmVyb3ctPnVybCAuICInIGNsYXNzPVwiZGlybGlua1wiIHRpdGxlPVwieyRGaWxlTWFuYWdlci0+TGFuZygndGl0bGVfY2hhbmdlZGlyJyl9XCI+IiAuICRvbmVyb3ctPm5hbWUgLiAiPC9hPiI7DQogICAgICAgICAgJG9uZXJvdy0+aWNvbl9saW5rID0gJG9uZXJvdy0+cHJlc2lnbmVkX2ljb25fbGluayA9ICI8YSBocmVmPSciIC4gJG9uZXJvdy0+dXJsIC4gIicgY2xhc3M9XCJkaXJsaW5rXCIgdGl0bGU9XCJ7JEZpbGVNYW5hZ2VyLT5MYW5nKCd0aXRsZV9jaGFuZ2VkaXInKX1cIj4iLiRyb3ctPmljb24uIjwvYT4iOw0KICAgICAgfQ0KICAgICAgJGVudHJ5YXJyYXlbXT0gJG9uZXJvdzsNCiAgfQ0KfQ0KDQokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0ZGF0ZScsICRkYXRhLT5kYXRlKTsNCiRzbWFydHktPmFzc2lnbignZW5kZGF0ZScsICRlbmRkYXRlKTsNCiRzbWFydHktPmFzc2lnbignY2FjaGV0aW1lJywgJG5taW51dGVzKTsNCiRzbWFydHktPmFzc2lnbigncGF0aF9wYXJ0cycsJHBhdGhfcGFydHMpOw0KDQppZiggaXNzZXQoJHBhcmFtc1snbm9mb3JtJ10pICkgJHNtYXJ0eS0+YXNzaWduKCdub2Zvcm0nLDEpOw0KJHNtYXJ0eS0+YXNzaWduKCdyZWZyZXNoX3VybCcsJHRoaXMtPkNyZWF0ZV91cmwoJGlkLCdhZG1pbl9maWxldmlldycsJycsYXJyYXkoJ2FqYXgnPT4xLCdidWNrZXRfaWQnPT4kYnVja2V0X2lkLCdwcmVmaXgnPT4kcHJlZml4KSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdGaWxlTWFuYWdlcicsJEZpbGVNYW5hZ2VyKTsNCiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkZW50cnlhcnJheSk7DQoNCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZmlsZW1hbmFnZXIudHBsJyk7DQoNCg0KDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBBV1NTMw0KIyBBdXRob3JzOiBNYWdhbCBIZXppLCB3aXRoIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uLg0KIyBDb3B5cmlnaHQ6IChDKSAyMDIzIE1hZ2FsIEhlemksIGhfbWFnYWxAaG90bWFpbC5jb20NCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzLiBTZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLyAgDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyBNYWRlIFNpbXBsZShUTSkgaXMgKGMpIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIDIwMDQtMjAyMCAoaW5mb0BjbXNtYWRlc2ltcGxlLm9yZykNCiMgUHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0FXU1MzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VDQojIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIA0KIyBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMNCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluDQojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IA0KIyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgDQojIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgQW1hem9uIFdlYiBTZXJ2aWNlcywgQVdTLCBhbmQgdGhlIFBvd2VyZWQgYnkgQVdTIGxvZ28gYXJlIHRyYWRlbWFya3Mgb2YgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0Ow0KDQp1c2UgXEFXU1MzXGJ1Y2tldF9xdWVyeTsNCg0KICAgICRtb2RfZm0gPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdGaWxlTWFuYWdlcicpOw0KDQogICAgJGJ1Y2tldF9pZCA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgnYnVja2V0X25hbWUnKTsNCiAgICAkbm1pbnV0ZXMgICAgID0gKGludCkkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZXhwaXJ5X2ludGVydmFsJywgMTgwKTsNCiAgICBpZiAoJG5taW51dGVzID09ICcnKSAkbm1pbnV0ZXMgPSAwOw0KDQogICAgaWYoIWlzc2V0KCRidWNrZXRfaWQpIHx8IGVtcHR5KCRidWNrZXRfaWQpKSB7DQogICAgICAgIC8vdGhyb3cgbmV3IENtc0V4Y2VwdGlvbignbm8gYnVja2V0IHNlbGVjdGVkJyk7DQogICAgICAgICR0aGlzLT5fRGlzcGxheU1lc3NhZ2UoJ25vIGJ1Y2tldCBzZWxlY3RlZCcsNTAwKTsNCiAgICAgICAgcmV0dXJuOw0KICAgIH0NCiAgICAkdGVtcGxhdGUgPSBudWxsOw0KICAgIGlmIChpc3NldCgkcGFyYW1zWydzdW1tYXJ5dGVtcGxhdGUnXSkpIHsNCiAgICAgICAgJHRlbXBsYXRlID0gdHJpbSgkcGFyYW1zWydzdW1tYXJ5dGVtcGxhdGUnXSk7DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgICAkdHBsID0gQ21zTGF5b3V0VGVtcGxhdGU6OmxvYWRfZGZsdF9ieV90eXBlKCdBV1NTMzo6c3VtbWFyeScpOw0KICAgICAgICBpZiggIWlzX29iamVjdCgkdHBsKSApIHsNCiAgICAgICAgICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ05vIGRlZmF1bHQgc3VtbWFyeSB0ZW1wbGF0ZSBmb3VuZCcpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgICR0ZW1wbGF0ZSA9ICR0cGwtPmdldF9uYW1lKCk7DQogICAgfQ0KDQogICAgaWYoaXNzZXQoJHBhcmFtc1snZGV0YWlscGFnZSddKSkgew0KDQogICAgICAgIGlmKGlzX251bWVyaWMoJHBhcmFtc1snZGV0YWlscGFnZSddKSkgew0KICAgICAgICAgICAgJGRldGFpbHBhZ2UgPSAkcGFyYW1zWydkZXRhaWxwYWdlJ107DQogICAgICAgIH0NCiAgICAgICAgZWxzZSB7CQkJDQogICAgICAgICAgICAkaG0gPSBjbXNtcygpLT5HZXRIaWVyYXJjaHlNYW5hZ2VyKCk7CQkJCQ0KICAgICAgICAgICAgJGRldGFpbHBhZ2UgPSAkaG0tPnN1cmVHZXROb2RlQnlBbGlhcygkcGFyYW1zWydkZXRhaWxwYWdlJ10pLT5HZXRJZCgpOw0KICAgICAgICB9DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgICRkZXRhaWxwYWdlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RldGFpbHBhZ2UnLCAkcmV0dXJuaWQpOw0KICAgIH0NCiAgICBpZiggZW1wdHkoJGRldGFpbHBhZ2UpIHx8ICRkZXRhaWxwYWdlID09IC0xICkgeyAkZGV0YWlscGFnZSA9ICRyZXR1cm5pZDsgfQ0KDQogICAgJGRlYnVnID0gaXNzZXQoJHBhcmFtc1snZGVidWcnXSk7DQogICAgLy8kdGVtcGxhdGUgPSAnb3JpZ19zdW1tYXJ5X3RlbXBsYXRlLnRwbCc7DQogICAgJHRwbF9vYiA9ICRzbWFydHktPkNyZWF0ZVRlbXBsYXRlKCR0aGlzLT5HZXRUZW1wbGF0ZVJlc291cmNlKCR0ZW1wbGF0ZSksbnVsbCxudWxsLCRzbWFydHkpOw0KDQogICAgJHBhZ2VsaW1pdCA9IDEwOw0KICAgIGlmKCBpc3NldCggJHBhcmFtc1sncGFnZWxpbWl0J10gKSApIHsNCiAgICAgICAgJHBhZ2VsaW1pdCA9IChpbnQpICgkcGFyYW1zWydwYWdlbGltaXQnXSk7DQogICAgfQ0KICAgICRwYWdlbGltaXQgPSBtYXgoMSxtaW4oMTAwMCwkcGFnZWxpbWl0KSk7IC8vIG1heGltdW0gb2YgMTAwMCBlbnRyaWVzLg0KICAgICRwYWdlY291bnQgPSAtMTsNCiAgICAkc3RhcnRlbGVtZW50ID0gMDsNCiAgICAkcGFnZW51bWJlciA9IDE7DQogICAgJHByZWZpeCA9ICRwYXJhbXNbJ3ByZWZpeCddPyRwYXJhbXNbJ3ByZWZpeCddOicnOw0KDQogICAgJGV4cGxvZGVkcHJlZml4PWV4cGxvZGUoJy8nLCAkcHJlZml4KTsgDQogICAgJHBhdGhfcGFydHMgPSBbXTsNCiAgICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkZXhwbG9kZWRwcmVmaXgpOyAkaSsrICkgew0KICAgICAgICAkb2JqID0gbmV3IFxTdGRDbGFzczsNCiAgICAgICAgaWYoICEkZXhwbG9kZWRwcmVmaXhbJGldICkgY29udGludWU7DQogICAgICAgICRvYmotPm5hbWUgPSAkZXhwbG9kZWRwcmVmaXhbJGldOw0KICAgICAgICAkb2JqLT5wcmVmaXggPSBpbXBsb2RlKCcvJyxhcnJheV9zbGljZSgkZXhwbG9kZWRwcmVmaXgsMCwkaSsxKSkuJy8nOw0KICAgICAgICBpZiggJGkgPCBjb3VudCgkZXhwbG9kZWRwcmVmaXgpIC0gMSApIHsNCiAgICAgICAgICAgICRwYXJhbXNbJ3ByZWZpeCddID0gJG9iai0+cHJlZml4Ow0KICAgICAgICAgICAgJG9iai0+dXJsID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0JywkcmV0dXJuaWQsJycsJHBhcmFtcywgJycsIHRydWUpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgLy8gdGhlIGxhc3QgZW50cnkuLi4gbm8gbGluaw0KICAgICAgICB9DQogICAgICAgICRwYXRoX3BhcnRzW10gPSAkb2JqOw0KICAgIH0NCg0KDQogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydwYWdlbnVtYmVyJ10gKSAmJiAkcGFyYW1zWydwYWdlbnVtYmVyJ10gIT09ICcnICkgew0KICAgICAgICAkcGFnZW51bWJlciA9IChpbnQpJHBhcmFtc1sncGFnZW51bWJlciddOw0KICAgICAgICAkc3RhcnRlbGVtZW50ID0gKCRwYWdlbnVtYmVyLTEpICogJHBhZ2VsaW1pdDsNCiAgICB9DQogICAgJGVuZGVsZW1lbnQgPSAkc3RhcnRlbGVtZW50ICsgJHBhZ2VsaW1pdCAtIDE7DQoNCiAgICAkcGFydHNfY291bnRlciA9IGNvdW50KCRwYXRoX3BhcnRzKTsNCg0KICAgIGlmKCAkcGFydHNfY291bnRlciA+PSAxICkgew0KICAgICAgICANCiAgICAgICAgJHVwZGlyID0gJHBhdGhfcGFydHNbJHBhcnRzX2NvdW50ZXItMl0tPnByZWZpeDsNCiAgICAgICAgJGljb24gPSAkbW9kX2ZtLT5HZXRNb2R1bGVVUkxQYXRoKCkuJy9pY29ucy90aGVtZXMvZGVmYXVsdC9hY3Rpb25zL2Rpcl91cC5naWYnOw0KICAgICAgICAkaW1nX3RhZyA9ICc8aW1nIHNyYz0iJy4kaWNvbi4nIiB3aWR0aD0iMzIiIHRpdGxlPSInLiR0aGlzLT5MYW5nKCd0aXRsZV9jaGFuZ2V1cGRpcicpLiciLz4nOw0KICAgICAgICBpZigkcGFydHNfY291bnRlciA+IDEpew0KICAgICAgICAgICAgJHBhcmFtc1sncHJlZml4J10gPSAkdXBkaXI7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB1bnNldCgkcGFyYW1zWydwcmVmaXgnXSk7DQogICAgICAgIH0NCiAgICAgICAgdW5zZXQoJHBhcmFtc1sncGFnZW51bWJlciddKTsNCiAgICAgICAgJHVwX2RpcnVybCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZGVmYXVsdCcsJHJldHVybmlkLCRpbWdfdGFnLCRwYXJhbXMsJycsdHJ1ZSk7DQogICAgICAgICR1cF9kaXJpY29ubGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZGVmYXVsdCcsJHJldHVybmlkLCRpbWdfdGFnLCRwYXJhbXMsJycsZmFsc2UsdHJ1ZSwiY2xhc3M9J2NhcmQtbGluayciKTsNCiAgICAgICAgJHVwX2RpcmxpbmsgPSAiPGEgY2xhc3M9XCJjYXJkLWxpbmtcIiBocmVmPVwieyR1cF9kaXJ1cmx9XCIgdGl0bGU9XCJ7JHRoaXMtPkxhbmcoJ3RpdGxlX2NoYW5nZXVwZGlyJyl9XCI+Li48L2E+IjsNCg0KICAgICAgICAkdHBsX29iLT5hc3NpZ24oJ3VwX2RpcnVybCcsJHVwX2RpcnVybCk7DQogICAgICAgICR0cGxfb2ItPmFzc2lnbigndXBfZGlyaWNvbmxpbmsnLCR1cF9kaXJpY29ubGluayk7DQogICAgICAgICR0cGxfb2ItPmFzc2lnbigndXBfZGlybGluaycsJHVwX2RpcmxpbmspOw0KICAgIH0NCg0KICAgICRxcGFybXMgPSBhcnJheSgpOw0KICAgICRxcGFybXNbJ2J1Y2tldCddID0gJGJ1Y2tldF9pZDsNCiAgICAkcXBhcm1zWydwcmVmaXgnXSA9ICRwcmVmaXg7DQogICAgJHFwYXJtc1sncmV0dXJuaWQnXSA9ICRyZXR1cm5pZDsNCiAgICAkcXBhcm1zWydkZXRhaWxwYWdlJ10gPSAkZGV0YWlscGFnZTsNCiAgICAkdHBsX29iLT5hc3NpZ24oJ3FwYXJtcycsJHFwYXJtcyk7DQoNCiAgICAkanNvbl9maWxlX1BhdGggPSAkdGhpcy0+Z2V0Q2FjaGVGaWxlKCRxcGFybXMpOw0KDQogICAgaWYoJG5taW51dGVzID09IDApIHsNCiAgICAgICAgJGRhdGEgPSBidWNrZXRfcXVlcnk6OmNhY2hlX3F1ZXJ5KCRxcGFybXMsJGpzb25fZmlsZV9QYXRoKTsNCiAgICB9IGVsc2Ugew0KDQogICAgICAgIGlmICghZmlsZV9leGlzdHMoJGpzb25fZmlsZV9QYXRoKSkgew0KICAgICAgICAgICAgJGRhdGEgPSBidWNrZXRfcXVlcnk6OmNhY2hlX3F1ZXJ5KCRxcGFybXMsJGpzb25fZmlsZV9QYXRoKTsNCiAgICAgICAgfSBlbHNlIHsNCg0KICAgICAgICAgICAgJGpzb24gPSBmaWxlX2dldF9jb250ZW50cygkanNvbl9maWxlX1BhdGgpOw0KICAgICAgICAgICAgJHRtcCA9IFxBV1NTREtcZW5jcnlwdDo6ZGVjcnlwdCgkanNvbik7DQogICAgICAgICAgICAkZGF0YSA9IGpzb25fZGVjb2RlKCR0bXAsIGZhbHNlKTsNCiAgICAgICAgDQogICAgICAgICAgICAkZW5kZGF0ZSAgPSBzdHJ0b3RpbWUoc3ByaW50ZigiKyVkIG1pbnV0ZXMiLCAkbm1pbnV0ZXMpLCAkZGF0YS0+ZGF0ZSk7DQogICAgICAgICAgICBpZiAodGltZSgpID49ICRlbmRkYXRlKSB7DQogICAgICAgICAgICAgICAgJGRhdGEgPSBidWNrZXRfcXVlcnk6OmNhY2hlX3F1ZXJ5KCRxcGFybXMsJGpzb25fZmlsZV9QYXRoKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICB9DQogICAgfQ0KDQogICAgJGNvdW50ID0gaXNzZXQoJGRhdGEtPnRvdGFsKSA/ICRkYXRhLT50b3RhbCA6ICcwJzsNCiAgICAkcGFnZWNvdW50ID0gKGludCkoJGNvdW50IC8gJHBhZ2VsaW1pdCk7DQogICAgaWYoICgkY291bnQgJSAkcGFnZWxpbWl0KSAhPSAwICkgJHBhZ2Vjb3VudCsrOw0KDQogICAgJHBhcmFtc1sncHJlZml4J10gPSAkcHJlZml4Ow0KICAgIA0KICAgIC8vIEFzc2lnbiBzb21lIHBhZ2luYXRpb24gdmFyaWFibGVzIHRvIHNtYXJ0eQ0KICAgIGlmKCAkcGFnZW51bWJlciA9PSAxICkgew0KICAgICAgICAkdHBsX29iLT5hc3NpZ24oJ3ByZXZwYWdlJywkdGhpcy0+TGFuZygncHJldnBhZ2UnKSk7DQogICAgICAgICR0cGxfb2ItPmFzc2lnbignZmlyc3RwYWdlJywkdGhpcy0+TGFuZygnZmlyc3RwYWdlJykpOw0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAgICAgJHBhcmFtc1sncGFnZW51bWJlciddPSRwYWdlbnVtYmVyLTE7DQogICAgICAgICR0cGxfb2ItPmFzc2lnbigncHJldnBhZ2UnLCR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZGVmYXVsdCcsJHJldHVybmlkLCR0aGlzLT5MYW5nKCdwcmV2cGFnZScpLCRwYXJhbXMpKTsNCiAgICAgICAgJHRwbF9vYi0+YXNzaWduKCdwcmV2dXJsJywkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2RlZmF1bHQnLCRyZXR1cm5pZCwnJywkcGFyYW1zLCAnJywgdHJ1ZSkpOw0KICAgICAgICAkcGFyYW1zWydwYWdlbnVtYmVyJ109MTsNCiAgICAgICAgJHRwbF9vYi0+YXNzaWduKCdmaXJzdHBhZ2UnLCR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZGVmYXVsdCcsJHJldHVybmlkLCR0aGlzLT5MYW5nKCdmaXJzdHBhZ2UnKSwkcGFyYW1zKSk7DQogICAgICAgICR0cGxfb2ItPmFzc2lnbignZmlyc3R1cmwnLCR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZGVmYXVsdCcsJHJldHVybmlkLCcnLCRwYXJhbXMsICcnLCB0cnVlKSk7DQogICAgfQ0KDQogICAgaWYoICRwYWdlbnVtYmVyID49ICRwYWdlY291bnQgKSB7DQogICAgICAgICR0cGxfb2ItPmFzc2lnbignbmV4dHBhZ2UnLCR0aGlzLT5MYW5nKCduZXh0cGFnZScpKTsNCiAgICAgICAgJHRwbF9vYi0+YXNzaWduKCdsYXN0cGFnZScsJHRoaXMtPkxhbmcoJ2xhc3RwYWdlJykpOw0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAgICAgJHBhcmFtc1sncGFnZW51bWJlciddPSRwYWdlbnVtYmVyKzE7DQogICAgICAgICR0cGxfb2ItPmFzc2lnbignbmV4dHBhZ2UnLCR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZGVmYXVsdCcsJHJldHVybmlkLCR0aGlzLT5MYW5nKCduZXh0cGFnZScpLCRwYXJhbXMpKTsNCiAgICAgICAgJHRwbF9vYi0+YXNzaWduKCduZXh0dXJsJywkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2RlZmF1bHQnLCRyZXR1cm5pZCwnJywkcGFyYW1zLCAnJywgdHJ1ZSkpOw0KDQogICAgICAgICRwYXJhbXNbJ3BhZ2VudW1iZXInXT0kcGFnZWNvdW50Ow0KICAgICAgICAkdHBsX29iLT5hc3NpZ24oJ2xhc3RwYWdlJywkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2RlZmF1bHQnLCRyZXR1cm5pZCwkdGhpcy0+TGFuZygnbGFzdHBhZ2UnKSwkcGFyYW1zKSk7DQogICAgICAgICR0cGxfb2ItPmFzc2lnbignbGFzdHVybCcsJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0JywkcmV0dXJuaWQsJycsJHBhcmFtcywgJycsIHRydWUpKTsNCiAgICB9DQoNCiAgICAkdHBsX29iLT5hc3NpZ24oJ2J1Y2tldCcsJGJ1Y2tldF9pZCk7DQogICAgJHRwbF9vYi0+YXNzaWduKCdjYWNoZWZpbGUnLCRqc29uX2ZpbGVfUGF0aCk7DQogICAgJHRwbF9vYi0+YXNzaWduKCdsYXN0dXBkYXRlJywgJGRhdGEtPmRhdGUpOw0KICAgICR0cGxfb2ItPmFzc2lnbignY291bnQnLCAkY291bnQpOw0KICAgICR0cGxfb2ItPmFzc2lnbigncGFnZW51bWJlcicsJHBhZ2VudW1iZXIpOw0KICAgICR0cGxfb2ItPmFzc2lnbignc3RhcnRlbGVtZW50Jywkc3RhcnRlbGVtZW50KTsNCg0KICAgIGlmKCRlbmRlbGVtZW50ID49ICRjb3VudCkkZW5kZWxlbWVudD0kY291bnQtMTsNCg0KICAgICR0cGxfb2ItPmFzc2lnbignZW5kZWxlbWVudCcsICRlbmRlbGVtZW50KTsNCiAgICAkdHBsX29iLT5hc3NpZ24oJ3BhZ2Vjb3VudCcsJHBhZ2Vjb3VudCk7DQogICAgJHRwbF9vYi0+YXNzaWduKCdvZnRleHQnLCR0aGlzLT5MYW5nKCdwcm9tcHRfb2YnKSk7DQogICAgJHRwbF9vYi0+YXNzaWduKCdwYWdldGV4dCcsJHRoaXMtPkxhbmcoJ3Byb21wdF9wYWdlJykpOw0KDQogICAgaWYgKCRzdGFydGVsZW1lbnQgPCAwIHx8ICRzdGFydGVsZW1lbnQgPiAkZW5kZWxlbWVudCkgew0KICAgICAgICAvL2VjaG8gIkludmFsaWQgaW5kZXhlcy4iOw0KICAgIH0gZWxzZSB7DQogICAgICAgIC8vIFNsaWNlIHRoZSBhcnJheSB0byBleHRyYWN0IGVsZW1lbnRzIGJldHdlZW4gdGhlIGluZGV4ZXMNCiAgICAgICAgJHNlbGVjdGVkSXRlbXMgPSBhcnJheV9zbGljZSgkZGF0YS0+aXRlbXMsICRzdGFydGVsZW1lbnQsICRlbmRlbGVtZW50IC0gJHN0YXJ0ZWxlbWVudCArIDEpOw0KICAgICAgICBmb3JlYWNoKCAkc2VsZWN0ZWRJdGVtcyBhcyAkcm93ICkgew0KICAgICAgICAgICAgJG9uZXJvdyA9ICRyb3c7DQogICAgICAgICAgICBpZigkb25lcm93LT5kaXIpew0KICAgICAgICAgICAgICAgICRzZW5kdG9kZXRhaWwgPSBhcnJheSgncHJlZml4Jz0+JG9uZXJvdy0+a2V5KTsNCiAgICAgICAgICAgICAgICBpZiggaXNzZXQoICRwYXJhbXNbJ3BhZ2VsaW1pdCddICkgKSB7DQogICAgICAgICAgICAgICAgICAgICRzZW5kdG9kZXRhaWwgPSBhcnJheV9tZXJnZSgkc2VuZHRvZGV0YWlsLGFycmF5KCdwYWdlbGltaXQnPT4kcGFnZWxpbWl0KSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICRvbmVyb3ctPmxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWZhdWx0JywgJHJldHVybmlkLCAnJywgJHNlbmR0b2RldGFpbCwnJywgdHJ1ZSwgZmFsc2UsICcnLCB0cnVlKTsNCiAgICAgICAgICAgICAgICAkb25lcm93LT5pY29uX2xpbmsgPSAiPGEgaHJlZj0nIiAuICRvbmVyb3ctPmxpbmsgLiAiJyBjbGFzcz1cImNhcmQtbGlua1wiPiIuJG9uZXJvdy0+aWNvbi4iPC9hPiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkZW50cnlhcnJheVtdPSAkb25lcm93Ow0KICAgICAgICB9DQogICAgfQ0KDQogICAgJHRwbF9vYi0+YXNzaWduKCdpdGVtcycsICRlbnRyeWFycmF5KTsNCiAgICAkdHBsX29iLT5hc3NpZ24oJ3N0YXJ0ZGF0ZScsICRkYXRhLT5kYXRlKTsNCiAgICAkdHBsX29iLT5hc3NpZ24oJ2VuZGRhdGUnLCAkZW5kZGF0ZSk7DQogICAgJHRwbF9vYi0+YXNzaWduKCdjYWNoZXRpbWUnLCAkbm1pbnV0ZXMpOw0KICAgICR0cGxfb2ItPmFzc2lnbigncGF0aF9wYXJ0cycsJHBhdGhfcGFydHMpOw0KDQogICAgJHRwbF9vYi0+ZGlzcGxheSgpOw0KDQogICAgaWYoJGRlYnVnKSANCgkkdHBsX29iLT5kaXNwbGF5KCdzdHJpbmc6PHByZT57Z2V0X3RlbXBsYXRlX3ZhcnN9PC9wcmU+Jyk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBBV1NTMw0KIyBBdXRob3JzOiBNYWdhbCBIZXppLCB3aXRoIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uLg0KIyBDb3B5cmlnaHQ6IChDKSAyMDIzIE1hZ2FsIEhlemksIGhfbWFnYWxAaG90bWFpbC5jb20NCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzLiBTZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLyAgDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyBNYWRlIFNpbXBsZShUTSkgaXMgKGMpIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIDIwMDQtMjAyMCAoaW5mb0BjbXNtYWRlc2ltcGxlLm9yZykNCiMgUHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0FXU1MzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VDQojIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIA0KIyBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMNCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluDQojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IA0KIyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgDQojIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgQW1hem9uIFdlYiBTZXJ2aWNlcywgQVdTLCBhbmQgdGhlIFBvd2VyZWQgYnkgQVdTIGxvZ28gYXJlIHRyYWRlbWFya3Mgb2YgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0Ow0KaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKEFXU1MzOjpNQU5BR0VfUEVSTSkgKSByZXR1cm47DQoNCnVzZSBcQVdTUzNcaGVscGVyczsNCnVzZSBcQVdTUzNcdXRpbHM7DQoNCiRtb2RfZm0gPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdGaWxlTWFuYWdlcicpOw0KJHNka19tb2QgPSB1dGlsczo6Z2V0X3NkaygpOw0KJHNka191dGlscyA9ICRzZGtfbW9kLT5nZXRVdGlscygpOw0KJHMzX3V0aWxzID0gbmV3IHV0aWxzKCk7DQoNCiRyZWFkeSA9IDA7DQoNCmlmKCRzM191dGlscy0+dmFsaWRhdGUoKSl7DQoJJHJlYWR5ID0gMTsNCgkkYnVja2V0X2lkID0gJHRoaXMtPkdldE9wdGlvblZhbHVlKCdidWNrZXRfbmFtZScpOw0KfQ0KDQplY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsNCglpZigkcmVhZHkgPT0gMSl7DQoJCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigkYnVja2V0X2lkLCRidWNrZXRfaWQpOw0KCQllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3Blcm1pc3Npb25zJywiUGVybWlzc2lvbnMiKTsNCgl9DQoNCgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3NldHRpbmdzJywiU2V0dGluZ3MiKTsNCmVjaG8gJHRoaXMtPkVuZFRhYkhlYWRlcnMoKTsNCg0KZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7DQoNCglpZigkcmVhZHkgPT0gMSl7DQoNCgkJZWNobyAkdGhpcy0+U3RhcnRUYWIoJGJ1Y2tldF9pZCk7DQoJCWluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuIi9hY3Rpb24udXBsb2Fkdmlldy5waHAiKTsNCgkJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4iL2FjdGlvbi5hZG1pbl9maWxldmlldy5waHAiKTsNCgkJZWNobyAkdGhpcy0+RW5kVGFiKCk7DQoNCgkJZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3Blcm1pc3Npb25zJyk7DQoJCWluY2x1ZGUoX19ESVJfXy4nL2Z1bmN0aW9uLmFkbWluX3Blcm1pc3Npb25zX3RhYi5waHAnKTsNCgkJZWNobyAkdGhpcy0+RW5kVGFiKCk7DQoJfQ0KDQoJZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3NldHRpbmdzJyk7DQoJCWluY2x1ZGUoX19ESVJfXy4nL2Z1bmN0aW9uLmFkbWluX3NldHRpbmdzX3RhYi5waHAnKTsNCgllY2hvICR0aGlzLT5FbmRUYWIoKTsNCgkNCg0KZWNobyAkdGhpcy0+RW5kVGFiQ29udGVudCgpOw0KDQokdGhpcy0+U2V0Q3VycmVudFRhYigicGl4ZWxzb2x1dGlvbiIpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.delete.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBBV1NTMw0KIyBBdXRob3JzOiBNYWdhbCBIZXppLCB3aXRoIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uLg0KIyBDb3B5cmlnaHQ6IChDKSAyMDIzIE1hZ2FsIEhlemksIGhfbWFnYWxAaG90bWFpbC5jb20NCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzLiBTZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLyAgDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyBNYWRlIFNpbXBsZShUTSkgaXMgKGMpIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIDIwMDQtMjAyMCAoaW5mb0BjbXNtYWRlc2ltcGxlLm9yZykNCiMgUHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0FXU1MzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VDQojIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIA0KIyBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMNCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluDQojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IA0KIyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgDQojIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgQW1hem9uIFdlYiBTZXJ2aWNlcywgQVdTLCBhbmQgdGhlIFBvd2VyZWQgYnkgQVdTIGxvZ28gYXJlIHRyYWRlbWFya3Mgb2YgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpuYW1lc3BhY2UgQVdTUzM7DQoNCmlmICghZnVuY3Rpb25fZXhpc3RzKCJjbXNtcyIpKSBleGl0Ow0KaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCR0aGlzOjpNQU5BR0VfUEVSTSkgKSByZXR1cm47DQoNCiRidWNrZXRfaWQgPSAkdGhpcy0+R2V0T3B0aW9uVmFsdWUoJ2J1Y2tldF9uYW1lJyk7DQoNCiRyZXR1cm5fcGFyYW1zID0gWyAncHJlZml4Jz0+JHBhcmFtc1sncHJlZml4J10sJ19fYWN0aXZldGFiJz0+JGJ1Y2tldF9pZF07DQppZiAoaXNzZXQoJHBhcmFtc1siY2FuY2VsIl0pKSAkdGhpcy0+UmVkaXJlY3QoJGlkLCJkZWZhdWx0YWRtaW4iLCRyZXR1cm5pZCwkcmV0dXJuX3BhcmFtcyk7DQokbW9kX2ZtID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnRmlsZU1hbmFnZXInKTsNCg0KJHNlbGFsbCA9ICRwYXJhbXNbJ3NlbGFsbCddOw0KaWYoICFpc19hcnJheSgkc2VsYWxsKSApICRzZWxhbGwgPSB1bnNlcmlhbGl6ZSgkc2VsYWxsKTsNCmlmKCAhaXNfYXJyYXkoJHNlbGFsbCkgKSAkc2VsYWxsID0gdW5zZXJpYWxpemUoJHNlbGFsbCk7DQoNCmlmIChjb3VudCgkc2VsYWxsKT09MCkgew0KICAkcmV0dXJuX3BhcmFtc1siZm1lcnJvciJdPSJub2ZpbGVzc2VsZWN0ZWQiOw0KICAkdGhpcy0+UmVkaXJlY3QoJGlkLCJkZWZhdWx0YWRtaW4iLCRyZXR1cm5pZCwkcmV0dXJuX3BhcmFtcyk7DQp9DQoNCi8vIHByb2Nlc3MgZm9ybQ0KJGVycm9ycyA9IGFycmF5KCk7DQppZiggaXNzZXQoJHBhcmFtc1snc3VibWl0J10pICkgew0KICANCiAgZm9yZWFjaCggJHNlbGFsbCBhcyAkZmlsZSApIHsNCiAgICAvLyBidWlsZCBjb21wbGV0ZSBwYXRoDQogICAgJGxhc3RjaGFyID0gJGZpbGVbLTFdOw0KDQogICAgaWYgKCBzdHJjbXAoJGxhc3RjaGFyLCAiLyIpID09PSAwICkgew0KICAgICAgdXRpbHM6OmRlbGV0ZU9iamVjdERpcigkZmlsZSk7DQogICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCAiUmVtb3ZlZCBkaXJlY3Rvcnk6ICIuJGZpbGUpOw0KICAgICAgXENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCdBV1NTMzo6T25EaXJlY3RvcnlEZWxldGVkJywgJHBhcm1zICk7DQogICAgICBjb250aW51ZTsNCiAgICB9DQogICAgDQogICAgdXRpbHM6OmRlbGV0ZU9iamVjdCgkZmlsZSk7DQogICAgJHBhcm1zID0gYXJyYXkoJ2ZpbGUnPT4kZmlsZSk7DQogICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwgIlJlbW92ZWQgZmlsZTogIi4kZmlsZSk7DQogICAgXENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCdBV1NTMzo6T25GaWxlRGVsZXRlZCcsICRwYXJtcyApOw0KDQogIH0gLy8gZm9yZWFjaA0KDQogIGlmKCBjb3VudCgkZXJyb3JzKSA9PSAwICkgew0KICAgICRyZXR1cm5fcGFyYW1zWyJmbW1lc3NhZ2UiXT0gJG1vZC0+TGFuZygiZGVsZXRlc3VjY2VzcyIpOyAvL3N0cmlwcyB0aGUgZmlsZSBkYXRhDQogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwiZGVmYXVsdGFkbWluIiwkcmV0dXJuaWQsJHJldHVybl9wYXJhbXMpOw0KICB9DQoNCn0gLy8gaWYgc3VibWl0IA0KDQovLyBnaXZlIGV2ZXJ5dGhpbmcgdG8gc21hcnR5Lg0KaWYoIGNvdW50KCRlcnJvcnMpICkgew0KICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCRlcnJvcnMpOw0KICAkc21hcnR5LT5hc3NpZ24oJ2Vycm9ycycsJGVycm9ycyk7DQp9DQppZiggaXNfYXJyYXkoJHBhcmFtc1snc2VsYWxsJ10pICkgJHBhcmFtc1snc2VsYWxsJ10gPSBzZXJpYWxpemUoJHBhcmFtc1snc2VsYWxsJ10pOw0KJHNtYXJ0eS0+YXNzaWduKCdzZWxhbGwnLCRzZWxhbGwpOw0KJHNtYXJ0eS0+YXNzaWduKCdtb2RfZm0nLCRtb2RfZm0pOw0KJHNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2ZpbGVhY3Rpb24nLCAkcmV0dXJuaWQsInBvc3QiLCIiLGZhbHNlLCIiLCRwYXJhbXMpKTsNCiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOw0KDQpmb3JlYWNoKCAkc2VsYWxsIGFzICRmaWxlICkgew0KICAkbGFzdGNoYXIgPSAkZmlsZVstMV07DQogIGlmICggc3RyY21wKCRsYXN0Y2hhciwgIi8iKSA9PT0gMCApIHsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ2hhc2RpcicsdHJ1ZSk7DQogIH0NCn0NCg0KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdkZWxldGUudHBsJyk7DQoNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/action.detail.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBBV1NTMw0KIyBBdXRob3JzOiBNYWdhbCBIZXppLCB3aXRoIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uLg0KIyBDb3B5cmlnaHQ6IChDKSAyMDIzIE1hZ2FsIEhlemksIGhfbWFnYWxAaG90bWFpbC5jb20NCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzLiBTZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLyAgDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyBNYWRlIFNpbXBsZShUTSkgaXMgKGMpIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIDIwMDQtMjAyMCAoaW5mb0BjbXNtYWRlc2ltcGxlLm9yZykNCiMgUHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0FXU1MzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VDQojIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIA0KIyBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMNCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluDQojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IA0KIyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgDQojIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgQW1hem9uIFdlYiBTZXJ2aWNlcywgQVdTLCBhbmQgdGhlIFBvd2VyZWQgYnkgQVdTIGxvZ28gYXJlIHRyYWRlbWFya3Mgb2YgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpuYW1lc3BhY2UgQVdTUzM7DQoNCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQoNCnVzZSBcQVdTU0RLXEV4Y2VwdGlvbjsNCg0KCS8vIHBhc3MgZGF0YSB0byBoZWFkIHNlY3Rpb24uDQoJJHRlbXBsYXRlX2hlYWQgPSAkdGhpcy0+X291dHB1dF9mcm9udGVuZF9jc3MoKTsNCgkkdGVtcGxhdGV0aXRsZSA9ICc8IS0tIEFXU1MzIC0tPg0KCSc7DQoJaWYgKCFlbXB0eSgkdGVtcGxhdGVfaGVhZCkpDQoJCQkkdGhpcy0+RnJvbnRFbmRDU1MgLj0gJHRlbXBsYXRldGl0bGUgLiAkdGVtcGxhdGVfaGVhZCAuICcNCgknOw0KDQoJJGRlYnVnID0gaXNzZXQoJHBhcmFtc1snZGVidWcnXSk7DQoJJHRlbXBsYXRlID0gbnVsbDsNCglpZiAoaXNzZXQoJHBhcmFtc1snZGV0YWlsdGVtcGxhdGUnXSkpIHsNCgkJJHRlbXBsYXRlID0gdHJpbSgkcGFyYW1zWydkZXRhaWx0ZW1wbGF0ZSddKTsNCgl9DQoJZWxzZSB7DQoJCSR0cGwgPSBcQ21zTGF5b3V0VGVtcGxhdGU6OmxvYWRfZGZsdF9ieV90eXBlKCdBV1NTMzo6ZGV0YWlsJyk7DQoJCWlmKCAhaXNfb2JqZWN0KCR0cGwpICkgew0KCQkJYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnTm8gZGVmYXVsdCBkZXRhaWwgdGVtcGxhdGUgZm91bmQnKTsNCgkJCXJldHVybjsNCgkJfQ0KCQkkdGVtcGxhdGUgPSAkdHBsLT5nZXRfbmFtZSgpOw0KCX0NCg0KCXRyeSB7DQoJCWlmKCAhaXNzZXQoJHBhcmFtc1sncHJlZml4J10pICkgew0KCQkJdGhyb3cgbmV3IFxBV1NTREtcRXhjZXB0aW9uKCdLZXkgaXMgbm90IHNwZWNpZmllZCcsNTAwKTsNCgkJfQ0KDQoJCSRrZXkgPSB1cmxkZWNvZGUoJHBhcmFtc1sncHJlZml4J10pOw0KCQkkZW50cnkgPSB1dGlsczo6Z2V0X2ZpbGVfaW5mbygka2V5KTsNCg0KCX0gY2F0Y2ggKFxBV1NTREtcRXhjZXB0aW9uICRlKSB7DQoJCXV0aWxzOjpnZXRfc2RrKCktPl9EaXNwbGF5TWVzc2FnZSgkZS0+Z2V0VGV4dCgpLCRlLT5nZXRUeXBlKCkpOw0KCX0NCg0KDQogICAgJHRwbF9vYiA9ICRzbWFydHktPkNyZWF0ZVRlbXBsYXRlKCR0aGlzLT5HZXRUZW1wbGF0ZVJlc291cmNlKCR0ZW1wbGF0ZSksbnVsbCxudWxsLCRzbWFydHkpOw0KICAgICR0cGxfb2ItPmFzc2lnbignZW50cnknLCRlbnRyeSk7DQoJLy8kdHBsX29iLT5hc3NpZ24oJ3NldHRpbmdzJywkdGhpcy0+R2V0U2V0dGluZ3NWYWx1ZXMoKSk7DQogICAgJHRwbF9vYi0+ZGlzcGxheSgpOw0KDQoJaWYoJGRlYnVnKSANCgkkdHBsX29iLT5kaXNwbGF5KCdzdHJpbmc6PHByZT57Z2V0X3RlbXBsYXRlX3ZhcnN9PC9wcmU+Jyk7DQoNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/action.fileaction.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBBV1NTMw0KIyBBdXRob3JzOiBNYWdhbCBIZXppLCB3aXRoIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uLg0KIyBDb3B5cmlnaHQ6IChDKSAyMDIzIE1hZ2FsIEhlemksIGhfbWFnYWxAaG90bWFpbC5jb20NCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzLiBTZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLyAgDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyBNYWRlIFNpbXBsZShUTSkgaXMgKGMpIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIDIwMDQtMjAyMCAoaW5mb0BjbXNtYWRlc2ltcGxlLm9yZykNCiMgUHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0FXU1MzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VDQojIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIA0KIyBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMNCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluDQojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IA0KIyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgDQojIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgQW1hem9uIFdlYiBTZXJ2aWNlcywgQVdTLCBhbmQgdGhlIFBvd2VyZWQgYnkgQVdTIGxvZ28gYXJlIHRyYWRlbWFya3Mgb2YgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiAoIWZ1bmN0aW9uX2V4aXN0cygiY21zbXMiKSkgZXhpdDsNCmlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbigkdGhpczo6TUFOQUdFX1BFUk0pICkgcmV0dXJuOw0KLy9pZiAoIWlzc2V0KCRwYXJhbXNbInBhdGgiXSkpICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nKTsNCg0KJGZpbGVhY3Rpb249IiI7DQppZiAoaXNzZXQoJHBhcmFtc1siZmlsZWFjdGlvbiJdKSkgJGZpbGVhY3Rpb249JHBhcmFtc1siZmlsZWFjdGlvbiJdOw0KDQppZiAoaXNzZXQoJHBhcmFtc1siZmlsZWFjdGlvbm5ld2RpciJdKSB8fCAkZmlsZWFjdGlvbj09Im5ld2RpciIpIHsNCiAgaW5jbHVkZV9vbmNlKF9fRElSX18uIi9hY3Rpb24ubmV3ZGlyLnBocCIpOw0KICByZXR1cm47DQp9DQoNCmlmIChpc3NldCgkcGFyYW1zWyJmaWxlYWN0aW9ucmVuYW1lIl0pIHx8ICRmaWxlYWN0aW9uPT0icmVuYW1lIikgew0KICBpbmNsdWRlX29uY2UoX19ESVJfXy4iL2FjdGlvbi5yZW5hbWUucGhwIik7DQogIHJldHVybjsNCn0NCg0KaWYgKGlzc2V0KCRwYXJhbXNbImZpbGVhY3Rpb25kZWxldGUiXSkgfHwgJGZpbGVhY3Rpb249PSJkZWxldGUiKSB7DQogIGluY2x1ZGVfb25jZShfX0RJUl9fLiIvYWN0aW9uLmRlbGV0ZS5waHAiKTsNCiAgcmV0dXJuOw0KfQ0KDQppZiAoaXNzZXQoJHBhcmFtc1siZmlsZWFjdGlvbmNvcHkiXSkgfHwgJGZpbGVhY3Rpb249PSJjb3B5Iikgew0KICBpbmNsdWRlX29uY2UoX19ESVJfXy4iL2FjdGlvbi5jb3B5LnBocCIpOw0KICByZXR1cm47DQp9DQoNCmlmIChpc3NldCgkcGFyYW1zWyJmaWxlYWN0aW9ubW92ZSJdKSB8fCAkZmlsZWFjdGlvbj09Im1vdmUiKSB7DQogIGluY2x1ZGVfb25jZShfX0RJUl9fLiIvYWN0aW9uLm1vdmUucGhwIik7DQogIHJldHVybjsNCn0NCg0KaWYgKGlzc2V0KCRwYXJhbXNbImZpbGVhY3Rpb251bnBhY2siXSkgfHwgJGZpbGVhY3Rpb249PSJ1bnBhY2siKSB7DQogIGluY2x1ZGVfb25jZShfX0RJUl9fLiIvYWN0aW9uLnVucGFjay5waHAiKTsNCiAgcmV0dXJuOw0KfQ0KDQppZiAoaXNzZXQoJHBhcmFtc1siZmlsZWFjdGlvbnRodW1iIl0pIHx8ICRmaWxlYWN0aW9uPT0idGh1bWIiKSB7DQogIGluY2x1ZGVfb25jZShfX0RJUl9fLiIvYWN0aW9uLnRodW1iLnBocCIpOw0KICByZXR1cm47DQp9DQoNCmlmIChpc3NldCgkcGFyYW1zWydmaWxlYWN0aW9ucmVzaXplY3JvcCddKSB8fCAkZmlsZWFjdGlvbiA9PSAncmVzaXplY3JvcCcpIHsNCiAgaW5jbHVkZV9vbmNlKF9fRElSX18uJy9hY3Rpb24ucmVzaXplY3JvcC5waHAnKTsNCiAgcmV0dXJuOw0KfQ0KDQppZiAoaXNzZXQoJHBhcmFtc1snZmlsZWFjdGlvbnJvdGF0ZSddKSB8fCAkZmlsZWFjdGlvbiA9PSAncm90YXRlJykgew0KICBpbmNsdWRlX29uY2UoX19ESVJfXy4nL2FjdGlvbi5yb3RhdGUucGhwJyk7DQogIHJldHVybjsNCn0NCg0KaWYgKGlzc2V0KCRwYXJhbXNbJ2ZpbGVhY3Rpb25yZWZyZXNoJ10pIHx8ICRmaWxlYWN0aW9uID09ICdyZWZyZXNoJykgew0KICBpbmNsdWRlX29uY2UoX19ESVJfXy4nL2FjdGlvbi5yZWZyZXNoLnBocCcpOw0KICByZXR1cm47DQp9DQoNCiR0aGlzLT5SZWRpcmVjdCgkaWQsImRlZmF1bHRhZG1pbiIsJHJldHVybmlkLGFycmF5KCJwcmVmaXgiPT4kcGFyYW1zWyJwcmVmaXgiXSwiZm1lcnJvciI9PiJ1bmtub3duZmlsZWFjdGlvbiIpKTsNCg0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/action.refresh.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBBV1NTMw0KIyBBdXRob3JzOiBNYWdhbCBIZXppLCB3aXRoIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uLg0KIyBDb3B5cmlnaHQ6IChDKSAyMDIzIE1hZ2FsIEhlemksIGhfbWFnYWxAaG90bWFpbC5jb20NCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzLiBTZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLyAgDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyBNYWRlIFNpbXBsZShUTSkgaXMgKGMpIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIDIwMDQtMjAyMCAoaW5mb0BjbXNtYWRlc2ltcGxlLm9yZykNCiMgUHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0FXU1MzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VDQojIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIA0KIyBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMNCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluDQojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IA0KIyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgDQojIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgQW1hem9uIFdlYiBTZXJ2aWNlcywgQVdTLCBhbmQgdGhlIFBvd2VyZWQgYnkgQVdTIGxvZ28gYXJlIHRyYWRlbWFya3Mgb2YgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpuYW1lc3BhY2UgQVdTUzM7DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygiY21zbXMiKSkgZXhpdDsNCmlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbigkdGhpczo6TUFOQUdFX1BFUk0pICkgcmV0dXJuOw0KDQokcHJlZml4ID0gJHBhcmFtc1sncHJlZml4J10/JHBhcmFtc1sncHJlZml4J106Jyc7DQokYnVja2V0X2lkID0gJHRoaXMtPkdldE9wdGlvblZhbHVlKCdidWNrZXRfbmFtZScpOw0KDQokcXBhcm1zID0gYXJyYXkoKTsNCiRxcGFybXNbJ2J1Y2tldCddID0gJGJ1Y2tldF9pZDsNCiRxcGFybXNbJ3ByZWZpeCddID0gJHByZWZpeDsNCiRxcGFybXNbJ3JldHVybmlkJ10gPSAkcmV0dXJuaWQ7DQokc21hcnR5LT5hc3NpZ24oJ3FwYXJtcycsJHFwYXJtcyk7DQoNCiRqc29uX2ZpbGVfUGF0aCA9ICR0aGlzLT5nZXRDYWNoZUZpbGUoJHFwYXJtcyk7DQokZGF0YSA9IGJ1Y2tldF9xdWVyeTo6Y2FjaGVfcXVlcnkoJHFwYXJtcywkanNvbl9maWxlX1BhdGgpOw0KJHJldHVybl9wYXJhbXMgPSBbJ3ByZWZpeCc9PiRwcmVmaXgsJ19fYWN0aXZldGFiJz0+JGJ1Y2tldF9pZCwiZm1tZXNzYWdlIj0+InJlZnJlc2hzdWNjZXNzIl07DQokdGhpcy0+UmVkaXJlY3QoJGlkLCJkZWZhdWx0YWRtaW4iLCRyZXR1cm5pZCwkcmV0dXJuX3BhcmFtcyk7DQoNCg0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/action.signed.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBBV1NTMw0KIyBBdXRob3JzOiBNYWdhbCBIZXppLCB3aXRoIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uLg0KIyBDb3B5cmlnaHQ6IChDKSAyMDIzIE1hZ2FsIEhlemksIGhfbWFnYWxAaG90bWFpbC5jb20NCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzLiBTZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLyAgDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyBNYWRlIFNpbXBsZShUTSkgaXMgKGMpIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIDIwMDQtMjAyMCAoaW5mb0BjbXNtYWRlc2ltcGxlLm9yZykNCiMgUHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0FXU1MzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VDQojIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIA0KIyBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMNCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluDQojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IA0KIyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgDQojIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgQW1hem9uIFdlYiBTZXJ2aWNlcywgQVdTLCBhbmQgdGhlIFBvd2VyZWQgYnkgQVdTIGxvZ28gYXJlIHRyYWRlbWFya3Mgb2YgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0Ow0KdXNlIEFXU1MzXHV0aWxzOw0KDQokbW9kX3NkayA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0FXU1NESycpOw0KaWYoIWlzX29iamVjdCgkbW9kX3Nkaykpew0KCXRocm93IG5ldyBcRXhjZXB0aW9uKCdBV1NTREsgbW9kdWxlIGlzIHJlcXVpcmVkJyk7DQp9DQoNCnRyeSB7DQoJaWYoICFpc3NldCgkcGFyYW1zWydrZXknXSkgKSB7DQoJCXRocm93IG5ldyBcQVdTU0RLXEV4Y2VwdGlvbignS2V5IGlzIHJlcXVpcmVkJyk7DQoJfQ0KDQoJJGJ1Y2tldCA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgiYnVja2V0X25hbWUiKTsNCgkka2V5ID0gXEFXU1NES1xlbmNyeXB0OjpkZWNvZGVmaWxlbmFtZSgkcGFyYW1zWydrZXknXSk7DQoJJGZpbGUgPSB1dGlsczo6cHJlc2lnbmVkVXJsKCRrZXkpOw0KCWhlYWRlcigiTG9jYXRpb246ICIuJGZpbGUpOw0KCWRpZSgpOw0KCQ0KfSBjYXRjaCAoXEFXU1NES1xFeGNlcHRpb24gJGUpIHsNCgkvLyR0aGlzLT5fRGlzcGxheUFkbWluTWVzc2FnZSgkZS0+R2V0T3B0aW9ucygpLCRlLT5HZXRUeXBlKCkpOw0KCSRtb2Rfc2RrLT5fRGlzcGxheU1lc3NhZ2UoJGUtPmdldFRleHQoKSk7DQp9DQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/action.upload.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBBV1NTMw0KIyBBdXRob3JzOiBNYWdhbCBIZXppLCB3aXRoIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uLg0KIyBDb3B5cmlnaHQ6IChDKSAyMDIzIE1hZ2FsIEhlemksIGhfbWFnYWxAaG90bWFpbC5jb20NCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzLiBTZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLyAgDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyBNYWRlIFNpbXBsZShUTSkgaXMgKGMpIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIDIwMDQtMjAyMCAoaW5mb0BjbXNtYWRlc2ltcGxlLm9yZykNCiMgUHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0FXU1MzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VDQojIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIA0KIyBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMNCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluDQojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IA0KIyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgDQojIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgQW1hem9uIFdlYiBTZXJ2aWNlcywgQVdTLCBhbmQgdGhlIFBvd2VyZWQgYnkgQVdTIGxvZ28gYXJlIHRyYWRlbWFya3Mgb2YgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpuYW1lc3BhY2UgQVdTUzM7DQoNCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJHRoaXM6Ok1BTkFHRV9QRVJNKSApIHJldHVybjsNCg0KdXNlIFxBV1NTM1x1dGlsczsNCg0KJHRwbCA9IFxDbXNMYXlvdXRUZW1wbGF0ZTo6bG9hZF9kZmx0X2J5X3R5cGUoJ0FXU1MzOjp1cGxvYWQnKTsNCmlmKCAhaXNfb2JqZWN0KCR0cGwpICkgew0KICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ05vIGRlZmF1bHQgdXBsb2FkIHRlbXBsYXRlIGZvdW5kJyk7DQogICAgcmV0dXJuOw0KfQ0KJHRlbXBsYXRlID0gJHRwbC0+Z2V0X25hbWUoKTsNCg0KJHRlbXBsYXRlID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ3RlbXBsYXRlJywkdGVtcGxhdGUpOw0KJG5vY2FwdGNoYSA9IFx4dF9wYXJhbTo6Z2V0X2Jvb2woJHBhcmFtcywnbm9jYXB0Y2hhJyk7DQokZGVidWcgPSBpc3NldCgkcGFyYW1zWydkZWJ1ZyddKTsNCiRtZXNzYWdlID0gbnVsbDsNCiR1dGlscyA9IG5ldyB1dGlscygpOw0KJHNkayA9IHV0aWxzOjpnZXRfc2RrKCk7DQoNCi8vJHRlbXBsYXRlID0gJ29yaWdfdXBsb2FkZm9ybV90ZW1wbGF0ZS50cGwnOw0KJHRwbCA9ICRzbWFydHktPkNyZWF0ZVRlbXBsYXRlKCR0aGlzLT5HZXRUZW1wbGF0ZVJlc291cmNlKCR0ZW1wbGF0ZSksbnVsbCxudWxsLCRzbWFydHkpOw0KDQppZiggaXNzZXQoJHBhcmFtc1snaW5wdXRfc3VibWl0J10pICkgew0KICAgIHRyeSB7DQoNCiAgICAgICAgJHByZWZpeD0gJHBhcmFtc1sncHJlZml4J10/JHBhcmFtc1sncHJlZml4J106Jyc7DQoNCiAgICAgICAgJHVwbG9hZGZpbGUgPSAkX0ZJTEVTWyRpZC4naW5wdXRfYnJvd3NlJ107DQogICAgICAgICRmaWxlX25hbWUgPSBiYXNlbmFtZSgkX0ZJTEVTWyRpZC4naW5wdXRfYnJvd3NlJ11bJ25hbWUnXSk7IA0KICAgICAgICAkZmlsZV90eXBlID0gcGF0aGluZm8oJGZpbGVfbmFtZSwgUEFUSElORk9fRVhURU5TSU9OKTsgDQoNCiAgICAgICAgaWYoZW1wdHkoJGZpbGVfbmFtZSkpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCAkdGhpcy0+TGFuZygnd2Fybl9maWxlX21pc3NpbmcnKSApOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gQWxsb3cgY2VydGFpbiBmaWxlIGZvcm1hdHMgDQogICAgICAgIGlmKCAhJHV0aWxzOjppc19maWxlX2FjY2VwdGFibGUoICRmaWxlX3R5cGUgKSApIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCAkdGhpcy0+TGFuZygnd2Fybl9maWxlX25vdF9hbGxvd2VkJykgKTsNCiAgICAgICAgfSANCg0KICAgICAgICAvL2NoZWNrIGNhcHRjaGENCiAgICAgICAgJGNhcHRjaGEgPSAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ0NhcHRjaGEnKTsNCiAgICAgICAgaWYoIGlzX29iamVjdCgkY2FwdGNoYSkgJiYgISRub2NhcHRjaGEgJiYgaXNzZXQoJHBhcmFtc1snaW5wdXRfY2FwdGNoYSddKSApIHsNCiAgICAgICAgICAgIGlmKCAhJGNhcHRjaGEtPmNoZWNrQ2FwdGNoYShceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnaW5wdXRfY2FwdGNoYScpKSApIHRocm93IG5ldyBcRXhjZXB0aW9uKCR0aGlzLT5sYW5nKCdlcnJvcl9jYXB0Y2hhbWlzbWF0Y2gnKSk7DQogICAgICAgIH0NCg0KICAgICAgICAkZmlsZV90ZW1wX3NyYyA9ICRfRklMRVNbJGlkLidpbnB1dF9icm93c2UnXVsidG1wX25hbWUiXTsNCiAgICAgICAgaWYoaXNfdXBsb2FkZWRfZmlsZSgkZmlsZV90ZW1wX3NyYykpew0KICAgICAgICAgICAgJHJldCA9ICR1dGlscy0+dXBsb2FkX2ZpbGUoJHByZWZpeC4kZmlsZV9uYW1lLCRmaWxlX3RlbXBfc3JjKTsNCiAgICAgICAgfQ0KICAgIA0KICAgICAgICBpZiggJHJldFswXSA9PSBmYWxzZSApIHRocm93IG5ldyBcRXhjZXB0aW9uKCRyZXRbMV0pOw0KICAgICAgICAkZ29vZF91cGxvYWQgPSAkcmV0WzJdOw0KICAgICAgICAvLyByZWRpcmVjdCBvdXRhIGhlcmUsIG9yIGRpc3BsYXkgYSBtZXNzYWdlDQogICAgICAgIGlmKCAoJHRtcCA9ICRwYXJhbXNbJ3JlZGlyZWN0J10pICkgew0KICAgICAgICAgICAgJGRlc3RwYWdlID0gJHNkay0+cmVzb2x2ZV9hbGlhc19vcl9pZCgkdG1wLCRyZXR1cm5pZCk7DQogICAgICAgICAgICAkdGhpcy0+cmVkaXJlY3Rjb250ZW50KCAkZGVzdHBhZ2UgKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsNCiAgICAgICAgJGVycm9ybWVzc2FnZSA9ICRlLT5nZXRtZXNzYWdlKCk7DQogICAgfQ0KDQogICAgaWYoaXNzZXQoJGVycm9ybWVzc2FnZSkpew0KICAgICAgICAkdHlwZSA9ICJhbGVydC1kYW5nZXIiOw0KICAgICAgICAkbWVzc2FnZSA9ICRlcnJvcm1lc3NhZ2U7DQogICAgfSBlbHNlIHsNCiAgICAgICAgJHR5cGUgPSAiYWxlcnQtc3VjY2VzcyI7DQogICAgICAgICRtZXNzYWdlID0gJHRoaXMtPkxhbmcoJ3N1Y2Nlc3NmdWxfdXBsb2FkJywkZ29vZF91cGxvYWQpOw0KICAgIH0NCg0KICAgICRtZXNzYWdlID0gJHNkay0+X0Rpc3BsYXlNZXNzYWdlKCRtZXNzYWdlLCR0eXBlLDEpOw0KDQogICAgJHRwbC0+YXNzaWduKCdtZXNzYWdlJywkbWVzc2FnZSk7DQoNCn0NCg0KJHBhcm1zID0gYXJyYXkoJ3ByZWZpeCc9PiRwYXJhbXNbJ3ByZWZpeCddLCdub2NhcHRjaGEnPT4kbm9jYXB0Y2hhLCdyZWRpcmVjdCc9PiRwYXJhbXNbJ3JlZGlyZWN0J10pOw0KLy8gZW5jcnlwdCB0aGVzZSBwYXJhbXMuDQokdHBsLT5hc3NpZ24oJ3N0YXJ0Zm9ybScsJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICd1cGxvYWQnLCAkcmV0dXJuaWQsInBvc3QiLCJtdWx0aXBhcnQvZm9ybS1kYXRhIixmYWxzZSwnJywkcGFyYW1zKSk7DQokdHBsLT5hc3NpZ24oJ2VuZGZvcm0nLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOw0KaWYoICEkbm9jYXB0Y2hhICkgew0KICAgICRjYXB0Y2hhID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdDYXB0Y2hhJyk7DQogICAgaWYoIGlzX29iamVjdCgkY2FwdGNoYSkgKSB7DQogICAgICAgICR0cGwtPmFzc2lnbignY2FwdGNoYV90aXRsZScsICR0aGlzLT5MYW5nKCdjYXB0Y2hhX3RpdGxlJykpOw0KICAgICAgICAkdHBsLT5hc3NpZ24oJ2NhcHRjaGEnLCAkY2FwdGNoYS0+Z2V0Q2FwdGNoYSgpKTsNCiAgICB9DQp9DQoNCiR0cGwtPmRpc3BsYXkoKTsNCg0KaWYoJGRlYnVnKSANCiR0cGxfb2ItPmRpc3BsYXkoJ3N0cmluZzo8cHJlPntnZXRfdGVtcGxhdGVfdmFyc308L3ByZT4nKQ0KDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/action.uploadview.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBBV1NTMw0KIyBBdXRob3JzOiBNYWdhbCBIZXppLCB3aXRoIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uLg0KIyBDb3B5cmlnaHQ6IChDKSAyMDIzIE1hZ2FsIEhlemksIGhfbWFnYWxAaG90bWFpbC5jb20NCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzLiBTZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLyAgDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyBNYWRlIFNpbXBsZShUTSkgaXMgKGMpIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIDIwMDQtMjAyMCAoaW5mb0BjbXNtYWRlc2ltcGxlLm9yZykNCiMgUHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0FXU1MzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VDQojIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIA0KIyBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMNCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluDQojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IA0KIyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgDQojIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgQW1hem9uIFdlYiBTZXJ2aWNlcywgQVdTLCBhbmQgdGhlIFBvd2VyZWQgYnkgQVdTIGxvZ28gYXJlIHRyYWRlbWFya3Mgb2YgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0Ow0KaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCR0aGlzOjpNQU5BR0VfUEVSTSkgKSByZXR1cm47DQoNCiRwYXRoPScnOw0KaWYoIGlzc2V0KCRwYXJhbXNbInByZWZpeCJdKSkgew0KICAkcGF0aCA9ICRwYXJhbXNbInByZWZpeCJdOw0KICAkc21hcnR5LT5hc3NpZ24oJ2hpZGRlbnBhdGgnLCAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAicHJlZml4IiwgJHBhdGgpKTsNCn0NCg0KJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAndXBsb2FkX2FkbWluJywgJHJldHVybmlkLCJwb3N0IiwibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpKTsNCiRzbWFydHktPmFzc2lnbignYWN0aW9uaWQnLCRpZCk7DQokc21hcnR5LT5hc3NpZ24oJ21heGZpbGVzaXplJywkY29uZmlnWyJtYXhfdXBsb2FkX3NpemUiXSk7DQokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwic3VibWl0IiwkdGhpcy0+TGFuZygic3VibWl0IiksIiIsIiIpKTsNCiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7DQoNCiRwb3N0X21heF9zaXplID0gZmlsZW1hbmFnZXJfdXRpbHM6OnN0cl90b19ieXRlcyhpbmlfZ2V0KCdwb3N0X21heF9zaXplJykpOw0KJHVwbG9hZF9tYXhfZmlsZXNpemUgPSBmaWxlbWFuYWdlcl91dGlsczo6c3RyX3RvX2J5dGVzKGluaV9nZXQoJ3VwbG9hZF9tYXhfZmlsZXNpemUnKSk7DQokc21hcnR5LT5hc3NpZ24oJ21heF9jaHVua3NpemUnLG1pbigkdXBsb2FkX21heF9maWxlc2l6ZSwkcG9zdF9tYXhfc2l6ZS0xMDI0KSk7DQppZiAoaXNzZXQoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSAmJiAoc3RycG9zKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwgJ01TSUUnKSAhPT0gZmFsc2UpKSB7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdpc19pZScsMSk7DQp9DQokc21hcnR5LT5hc3NpZ24oJ2FjdGlvbl91cmxfdXBsb2FkJywkdGhpcy0+Y3JlYXRlX3VybCgnbTFfJywndXBsb2FkJywkcmV0dXJuaWQpKTsNCiRzbWFydHktPmFzc2lnbignRmlsZU1hbmFnZXInLFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0ZpbGVNYW5hZ2VyJykpOw0KDQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3VwbG9hZHZpZXcudHBsJyk7DQo=]]></data>
	</file>
	<file>
	  <filename>/action.upload_admin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBBV1NTMw0KIyBBdXRob3JzOiBNYWdhbCBIZXppLCB3aXRoIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uLg0KIyBDb3B5cmlnaHQ6IChDKSAyMDIzIE1hZ2FsIEhlemksIGhfbWFnYWxAaG90bWFpbC5jb20NCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzLiBTZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLyAgDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyBNYWRlIFNpbXBsZShUTSkgaXMgKGMpIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIDIwMDQtMjAyMCAoaW5mb0BjbXNtYWRlc2ltcGxlLm9yZykNCiMgUHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0FXU1MzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VDQojIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIA0KIyBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMNCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluDQojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IA0KIyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgDQojIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgQW1hem9uIFdlYiBTZXJ2aWNlcywgQVdTLCBhbmQgdGhlIFBvd2VyZWQgYnkgQVdTIGxvZ28gYXJlIHRyYWRlbWFya3Mgb2YgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpuYW1lc3BhY2UgQVdTUzM7DQoNCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJHRoaXM6Ok1BTkFHRV9QRVJNKSApIHJldHVybjsNCg0KaGVhZGVyKCdDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL2pzb24nKTsNCnVzZSBBV1NTM1x1dGlsczsNCiR1dGlscyA9IG5ldyB1dGlscygpOw0KJEZpbGVNYW5hZ2VyID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnRmlsZU1hbmFnZXInKTsNCiRlcnJvciA9IDA7DQoNCiRkYXRhID0gYXJyYXkoKTsNCg0KdHJ5IHsNCg0KICAgIGlmKGVtcHR5KCRfRklMRVMpKSB7DQogICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCAkdGhpcy0+TGFuZygnd2Fybl9maWxlX21pc3NpbmcnKSApOw0KICAgIH0NCg0KICAgICRmaWxlcyA9IGFycmF5X2ZpbHRlcigkX0ZJTEVTWyRpZC4nZmlsZXMnXVsnbmFtZSddKTsNCg0KICAgICR0b3RhbF9jb3VudCA9IGNvdW50KCRfRklMRVNbJGlkLidmaWxlcyddWyduYW1lJ10pOw0KICAgIC8vIExvb3AgdGhyb3VnaCBldmVyeSBmaWxlDQogICAgZm9yKCAkaT0wIDsgJGkgPCAkdG90YWxfY291bnQgOyAkaSsrICkgew0KDQogICAgICAgICRmaWxlX25hbWUgPSBiYXNlbmFtZSgkX0ZJTEVTWyRpZC4nZmlsZXMnXVsnbmFtZSddWyRpXSk7IA0KICAgICAgICAkZmlsZV90eXBlID0gcGF0aGluZm8oJGZpbGVfbmFtZSwgUEFUSElORk9fRVhURU5TSU9OKTsgDQoNCiAgICAgICAgJHJldHVybl9wYXJhbXNbJ25hbWUnXSA9ICRmaWxlX25hbWU7DQogICAgICAgICRyZXR1cm5fcGFyYW1zWydzaXplJ10gPSAkX0ZJTEVTWyRpZC4nZmlsZXMnXVsnc2l6ZSddWyRpXTsNCiAgICAgICAgDQogICAgICAgIC8vIEFsbG93IGNlcnRhaW4gZmlsZSBmb3JtYXRzIA0KICAgICAgICBpZiggISR1dGlsczo6aXNfZmlsZV9hY2NlcHRhYmxlKCAkZmlsZV90eXBlICkgKSB7DQogICAgICAgICAgICAvL3Rocm93IG5ldyBcRXhjZXB0aW9uKCAkdGhpcy0+TGFuZygnd2Fybl9maWxlX25vdF9hbGxvd2VkJykgKTsNCiAgICAgICAgICAgICRyZXR1cm5fcGFyYW1zWydlcnJvciddID0gIkZpbGV0eXBlIG5vdCBhbGxvd2VkIjsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIC8vdXBsb2FkIHRvIFMzDQogICAgICAgICAgICAkZmlsZV90ZW1wX3NyYyA9ICRfRklMRVNbJGlkLidmaWxlcyddWyJ0bXBfbmFtZSJdWyRpXTsNCiAgICAgICAgICAgIGlmKGlzX3VwbG9hZGVkX2ZpbGUoJGZpbGVfdGVtcF9zcmMpKXsNCiAgICAgICAgICAgICAgICAkczMgPSAkdXRpbHMtPnVwbG9hZF9maWxlKCRwYXJhbXNbInByZWZpeCJdLiRmaWxlX25hbWUsJGZpbGVfdGVtcF9zcmMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgJGRhdGFbJ2ZpbGVzJ11bXSA9ICRyZXR1cm5fcGFyYW1zOw0KDQogICAgfQ0KDQp9DQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsNCgkkZXJyb3IgPSAxOwkNCgkkbWVzc2FnZSA9ICRlLT5nZXRNZXNzYWdlKCk7DQogICAgJGRhdGFbJ2Vycm9yJ10gPSAkbWVzc2FnZTsNCg0KfQ0KDQoNCmVjaG8ganNvbl9lbmNvZGUoJGRhdGEpOw0KDQojDQojIEVPRg0KIw0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/AWSS3.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBBV1NTMw0KIyBBdXRob3JzOiBNYWdhbCBIZXppLCB3aXRoIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uLg0KIyBDb3B5cmlnaHQ6IChDKSAyMDIzIE1hZ2FsIEhlemksIGhfbWFnYWxAaG90bWFpbC5jb20NCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzLiBTZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLyAgDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyBNYWRlIFNpbXBsZShUTSkgaXMgKGMpIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIDIwMDQtMjAyMCAoaW5mb0BjbXNtYWRlc2ltcGxlLm9yZykNCiMgUHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0FXU1MzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VDQojIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIA0KIyBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMNCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluDQojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IA0KIyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgDQojIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgQW1hem9uIFdlYiBTZXJ2aWNlcywgQVdTLCBhbmQgdGhlIFBvd2VyZWQgYnkgQVdTIGxvZ28gYXJlIHRyYWRlbWFya3Mgb2YgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQp1c2UgXEFXU1MzXHV0aWxzOw0KDQpjbGFzcyBBV1NTMyBleHRlbmRzIENNU01vZHVsZQ0Kew0KCWNvbnN0IE1BTkFHRV9QRVJNID0gJ21hbmFnZV9BV1NTMyc7DQoJDQoJcHVibGljIGZ1bmN0aW9uIEdldFZlcnNpb24oKSB7IHJldHVybiAnMS4xLjEnOyB9DQoJcHVibGljIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKTsgfQ0KCXB1YmxpYyBmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2FkbWluZGVzY3JpcHRpb24nKTsgfQ0KCXB1YmxpYyBmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpIHsgcmV0dXJuIFRSVUU7IH0NCglwdWJsaWMgZnVuY3Rpb24gSGFzQWRtaW4oKSB7IHJldHVybiBUUlVFOyB9DQoJcHVibGljIGZ1bmN0aW9uIEdldEhlYWRlckhUTUwoKSB7IHJldHVybiAkdGhpcy0+X291dHB1dF9oZWFkZXJfYXNzZXRzKCk7IH0NCglwdWJsaWMgZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkgeyByZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbihzZWxmOjpNQU5BR0VfUEVSTSk7IH0NCglwdWJsaWMgZnVuY3Rpb24gR2V0QXV0aG9yKCkgeyByZXR1cm4gJ01hZ2FsIEhlemknOyB9DQoJcHVibGljIGZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCkgeyByZXR1cm4gJ2hfbWFnYWxAaG90bWFpbC5jb20nOyB9DQoJcHVibGljIGZ1bmN0aW9uIFVuaW5zdGFsbFByZU1lc3NhZ2UoKSB7IHJldHVybiAkdGhpcy0+TGFuZygnYXNrX3VuaW5zdGFsbCcpOyB9DQoJcHVibGljIGZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpIHsgcmV0dXJuICdjb250ZW50JzsgfQ0KICAgIHB1YmxpYyBmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpIHsgcmV0dXJuICcyLjIuMSc7IH0NCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkgeyByZXR1cm4gWydBV1NTREsnID0+ICcxLjEuMCcsJ0ZpbGVNYW5hZ2VyJyA9PiAnMS42LjEzJ107IH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpew0KICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7DQogICAgICAgIC8vJGZuID0gJHRoaXMtPkdldE1vZHVsZVBhdGgoKS4nL2xpYi9jbGFzcy51dGlscy5waHAnOyByZXF1aXJlX29uY2UoJGZuKTsNCiAgICAgICAgLy8kc21hcnR5LT5yZWdpc3RlckNsYXNzKCdzM191dGlscycsJ1xBV1NTM1x1dGlscycpOw0KICAgICAgICAkc21hcnR5ID0gXENtc0FwcDo6Z2V0X2luc3RhbmNlKCktPkdldFNtYXJ0eSgpOw0KICAgICAgICBpZiggISRzbWFydHkgKSByZXR1cm47DQogICAgICAgICRzbWFydHktPmFzc2lnbignczNfbW9kJywkdGhpcyk7DQogICAgfQ0KDQoJcHVibGljIGZ1bmN0aW9uIEluaXRpYWxpemVGcm9udGVuZCgpIHsNCgkJJHRoaXMtPlJlZ2lzdGVyTW9kdWxlUGx1Z2luKCk7DQogICAgICAgICR0aGlzLT5SZXN0cmljdFVua25vd25QYXJhbXMoKTsNCiAgICAgICAgDQogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdhY3Rpb24nLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgncHJlZml4JyxDTEVBTl9TVFJJTkcpOw0KICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgncGFnZW51bScsQ0xFQU5fSU5UKTsNCiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3BhZ2VsaW1pdCcsQ0xFQU5fSU5UKTsNCiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3N1bW1hcnl0ZW1wbGF0ZScsQ0xFQU5fU1RSSU5HKTsNCiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2RldGFpbHBhZ2UnLENMRUFOX1NUUklORyk7DQogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdkZXRhaWx0ZW1wbGF0ZScsQ0xFQU5fU1RSSU5HKTsNCiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2p1bmsnLENMRUFOX1NUUklORyk7DQogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdub2NhcHRjaGEnLENMRUFOX0lOVCk7DQoNCiAgICAgICAgJHRoaXMtPlJlZ2lzdGVyUm91dGUoJy9bU3NdM1wvW1NzXVwvKD9QPGtleT4uKj8pJC8nLCBhcnJheSgnYWN0aW9uJz0+J3NpZ25lZCcpKTsNCiAgICAgICAgJHRoaXMtPlJlZ2lzdGVyUm91dGUoJy9bU3NdM1wvW0ZmXWlsZVwvKD9QPHByZWZpeD4uKilcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8nLCBhcnJheSgnYWN0aW9uJz0+J2RldGFpbCcpKTsNCiAgICAgICAgJHRoaXMtPlJlZ2lzdGVyUm91dGUoJy9bU3NdM1wvW0ZmXWlsZVwvKD9QPHByZWZpeD4uKilcLyg/UDxyZXR1cm5pZD5bMC05XSspXC8oP1A8anVuaz4uKj8pJC8nLCBhcnJheSgnYWN0aW9uJz0+J2RldGFpbCcpKTsNCg0KCX0NCg0KCSBwdWJsaWMgZnVuY3Rpb24gSW5pdGlhbGl6ZUFkbWluKCkgew0KCQkgJHRoaXMtPlNldFBhcmFtZXRlcnMoKTsNCiAgICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2FjdGlvbicsJ2RlZmF1bHQnLCR0aGlzLT5MYW5nKCdoZWxwX3BhcmFtX2FjdGlvbicpKTsNCiAgICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ3ByZWZpeCcsbnVsbCwkdGhpcy0+TGFuZygnaGVscF9wYXJhbV9wcmVmaXgnKSk7DQogICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdwYWdlbGltaXQnLG51bGwsJHRoaXMtPkxhbmcoJ2hlbHBfcGFyYW1fcGFnZWxpbWl0JykpOw0KICAgICAgICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignc3VtbWFyeXBhZ2UnLG51bGwsJHRoaXMtPkxhbmcoJ2hlbHBfcGFyYW1fc3VtbWFyeXBhZ2UnKSk7DQogICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdzdW1tYXJ5dGVtcGxhdGUnLG51bGwsJHRoaXMtPkxhbmcoJ2hlbHBfcGFyYW1fc3VtbWFyeXRlbXBsYXRlJykpOw0KICAgICAgICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignZGV0YWlscGFnZScsbnVsbCwkdGhpcy0+TGFuZygnaGVscF9wYXJhbV9kZXRhaWxwYWdlJykpOw0KICAgICAgICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignZGV0YWlsdGVtcGxhdGUnLG51bGwsJHRoaXMtPkxhbmcoJ2hlbHBfcGFyYW1fZGV0YWlsdGVtcGxhdGUnKSk7DQoJIH0NCgkNCglwdWJsaWMgZnVuY3Rpb24gR2V0SGVscCgpIHsgcmV0dXJuIEBmaWxlX2dldF9jb250ZW50cyhfX0RJUl9fLicvUkVBRE1FLm1kJyk7IH0NCglwdWJsaWMgZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkgeyByZXR1cm4gQGZpbGVfZ2V0X2NvbnRlbnRzKF9fRElSX18uJy9kb2MvY2hhbmdlbG9nLmluYycpOyB9DQoNCglwcm90ZWN0ZWQgZnVuY3Rpb24gX291dHB1dF9oZWFkZXJfYXNzZXRzKCkNCiAgICB7DQogICAgICAgICRvdXQgPSAnJzsNCiAgICAgICAgJHVybHBhdGggPSAkdGhpcy0+R2V0TW9kdWxlVVJMUGF0aCgpLiIvanMiOw0KICAgICAgICAkanNmaWxlcyA9IGFycmF5KCdqcXVlcnktZmlsZS11cGxvYWQvanF1ZXJ5LmlmcmFtZS10cmFuc3BvcnQuanMnKTsNCiAgICAgICAgJGpzZmlsZXNbXSA9ICdqcXVlcnktZmlsZS11cGxvYWQvanF1ZXJ5LmZpbGV1cGxvYWQuanMnOw0KICAgICAgICAkanNmaWxlc1tdID0gJ2pxdWVyeXJvdGF0ZS9qUXVlcnlSb3RhdGUtMi4yLm1pbi5qcyc7DQogICAgICAgICRqc2ZpbGVzW10gPSAnanJhYy9qcXVlcnkuanJhYy5qcyc7DQoNCiAgICAgICAgJGZtdCA9ICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIlcy8lcyI+PC9zY3JpcHQ+JzsNCiAgICAgICAgZm9yZWFjaCggJGpzZmlsZXMgYXMgJG9uZSApIHsNCiAgICAgICAgICAgICRvdXQgLj0gc3ByaW50ZigkZm10LCR1cmxwYXRoLCRvbmUpLiJcbiI7DQogICAgICAgIH0NCg0KICAgICAgICAkdXJscGF0aCA9ICR0aGlzLT5HZXRNb2R1bGVVUkxQYXRoKCk7DQogICAgICAgICRmbXQgPSAnPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iJXMvJXMiLz4nOw0KICAgICAgICAkY3NzZmlsZXMgPSBhcnJheSgnanMvanJhYy9zdHlsZS5qcmFjLmNzcycpOw0KICAgICAgICAkY3NzZmlsZXNbXSA9ICdjc3Mvc3R5bGUuY3NzJzsNCiAgICAgICAgZm9yZWFjaCggJGNzc2ZpbGVzIGFzICRvbmUgKSB7DQogICAgICAgICAgICAkb3V0IC49IHNwcmludGYoJGZtdCwkdXJscGF0aCwkb25lKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiAkb3V0Ow0KICAgIH0NCg0KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBfb3V0cHV0X2Zyb250ZW5kX2NzcygpDQogICAgew0KICAgICAgICAkb3V0ID0gJyc7DQogICAgICAgICR1cmxwYXRoID0gJHRoaXMtPkdldE1vZHVsZVVSTFBhdGgoKTsNCiAgICAgICAgJGZtdCA9ICc8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIlcy8lcyIvPic7DQogICAgICAgICRjc3NmaWxlcyA9IGFycmF5KCdjc3Mvc3R5bGUuY3NzJyk7DQogICAgICAgIC8vJGNzc2ZpbGVzW10gPSAnY3NzL3N0eWxlLmNzcyc7DQogICAgICAgIGZvcmVhY2goICRjc3NmaWxlcyBhcyAkb25lICkgew0KICAgICAgICAgICAgJG91dCAuPSBzcHJpbnRmKCRmbXQsJHVybHBhdGgsJG9uZSk7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICRvdXQ7DQogICAgfQ0KDQogICAgLyoqDQoJICogRG9FdmVudCBtZXRob2RzDQoJICovDQoJZnVuY3Rpb24gRG9FdmVudCgkb3JpZ2luYXRvciwgJGV2ZW50bmFtZSwgJiRwYXJhbXMpIHsNCgkJaWYgKCRvcmlnaW5hdG9yID09ICdDb3JlJyAmJiAkZXZlbnRuYW1lID09ICdDb250ZW50UG9zdFJlbmRlcicpDQoJCXsNCgkJCSRwb3NfdG9wID0gc3RyaXBvcygkcGFyYW1zWyJjb250ZW50Il0sICI8L2hlYWQiKTsNCgkJCWlmICgkcG9zX3RvcCAhPT0gRkFMU0UgJiYgIWVtcHR5KCR0aGlzLT5Gcm9udEVuZENTUykpDQoJCQl7DQoJCQkJJHBhcmFtc1siY29udGVudCJdID0gc3Vic3RyKCRwYXJhbXNbImNvbnRlbnQiXSwgMCwgJHBvc190b3ApIC4gJHRoaXMtPkZyb250RW5kQ1NTIC4gc3Vic3RyKCRwYXJhbXNbImNvbnRlbnQiXSwgJHBvc190b3ApOw0KCQkJfQ0KCQkJJHBvc19idG0gPSBzdHJyaXBvcygkcGFyYW1zWyJjb250ZW50Il0sICI8L2JvZHkiKTsNCgkJCWlmICgkcG9zX2J0bSAhPT0gRkFMU0UgJiYgIWVtcHR5KCR0aGlzLT5Gcm9udEVuZEpTKSkNCgkJCXsNCgkJCQkkcGFyYW1zWyJjb250ZW50Il0gPSBzdWJzdHIoJHBhcmFtc1siY29udGVudCJdLCAwLCAkcG9zX2J0bSkgLiAkdGhpcy0+RnJvbnRFbmRKUyAuIHN1YnN0cigkcGFyYW1zWyJjb250ZW50Il0sICRwb3NfYnRtKTsNCgkJCX0NCgkJfQ0KCX0NCg0KCXB1YmxpYyBmdW5jdGlvbiBHZXRGaWxlSWNvbigkZXh0ZW5zaW9uLCRpc2Rpcj1mYWxzZSkgew0KICAgICAgICBpZiAoZW1wdHkoJGV4dGVuc2lvbikpICRleHRlbnNpb24gPSAnLS0tJzsgLy8gaGFyZGNvZGUgZXh0ZW5zaW9uIHRvIHNvbWV0aGluZy4NCiAgICAgICAgaWYgKCRleHRlbnNpb25bMF0gPT0gIi4iKSAkZXh0ZW5zaW9uID0gc3Vic3RyKCRleHRlbnNpb24sMSk7DQogICAgICAgICRjb25maWcgPSBcY21zX2NvbmZpZzo6Z2V0X2luc3RhbmNlKCk7DQogICAgICAgICRpY29uc2l6ZT0kdGhpcy0+R2V0UHJlZmVyZW5jZSgiaWNvbnNpemUiLCIzMnB4Iik7DQogICAgICAgICRpY29uc2l6ZUhlaWdodD1zdHJfcmVwbGFjZSgicHgiLCIiLCRpY29uc2l6ZSk7DQoNCiAgICAgICAgJHJlc3VsdD0iIjsNCiAgICAgICAgaWYgKCRpc2Rpcikgew0KICAgICAgICAgICAgJHJlc3VsdD0iPGltZyBoZWlnaHQ9XCIiLiRpY29uc2l6ZUhlaWdodC4iXCIgc3R5bGU9XCJib3JkZXI6MDtcIiBzcmM9XCIiLiRjb25maWdbInJvb3RfdXJsIl0uIi9tb2R1bGVzL0ZpbGVNYW5hZ2VyL2ljb25zL3RoZW1lcy9kZWZhdWx0L2V4dGVuc2lvbnMvIi4kaWNvbnNpemUuIi9kaXIucG5nXCIgIi4NCiAgICAgICAgICAgICAgICAiYWx0PVwiZGlyZWN0b3J5XCIgIi4NCiAgICAgICAgICAgICAgICAiYWxpZ249XCJtaWRkbGVcIiAvPiI7DQogICAgICAgICAgICByZXR1cm4gJHJlc3VsdDsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChmaWxlX2V4aXN0cygkY29uZmlnWyJyb290X3BhdGgiXS4iL21vZHVsZXMvRmlsZU1hbmFnZXIvaWNvbnMvdGhlbWVzL2RlZmF1bHQvZXh0ZW5zaW9ucy8iLiRpY29uc2l6ZS4iLyIuc3RydG9sb3dlcigkZXh0ZW5zaW9uKS4iLnBuZyIpKSB7DQogICAgICAgICAgICAkcmVzdWx0PSI8aW1nIGhlaWdodD0nIi4kaWNvbnNpemVIZWlnaHQuIicgc3R5bGU9J2JvcmRlcjowOycgc3JjPSciLiRjb25maWdbInJvb3RfdXJsIl0uIi9tb2R1bGVzL0ZpbGVNYW5hZ2VyL2ljb25zL3RoZW1lcy9kZWZhdWx0L2V4dGVuc2lvbnMvIi4kaWNvbnNpemUuIi8iLnN0cnRvbG93ZXIoJGV4dGVuc2lvbikuIi5wbmcnICIuDQogICAgICAgICAgICAgICAgImFsdD0nIi4kZXh0ZW5zaW9uLiItZmlsZScgIi4NCiAgICAgICAgICAgICAgICAiYWxpZ249J21pZGRsZScgLz4iOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgJHJlc3VsdD0iPGltZyBoZWlnaHQ9JyIuJGljb25zaXplSGVpZ2h0LiInIHN0eWxlPSdib3JkZXI6MDsnIHNyYz0nIi4kY29uZmlnWyJyb290X3VybCJdLiIvbW9kdWxlcy9GaWxlTWFuYWdlci9pY29ucy90aGVtZXMvZGVmYXVsdC9leHRlbnNpb25zLyIuJGljb25zaXplLiIvMC5wbmcnICIuDQogICAgICAgICAgICAgICAgImFsdD0iLiRleHRlbnNpb24uIi1maWxlJyAiLg0KICAgICAgICAgICAgICAgICJhbGlnbj0nbWlkZGxlJyAvPiI7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7DQogICAgfQ0KDQoNCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhZ2VfdHlwZV9sYW5nX2NhbGxiYWNrKCRzdHIpDQogICAgew0KICAgICAgICAkbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdBV1NTMycpOw0KICAgICAgICBpZiggaXNfb2JqZWN0KCRtb2QpICkgcmV0dXJuICRtb2QtPkxhbmcoJ3R5cGVfJy4kc3RyKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRlbXBsYXRlX2hlbHBfY2FsbGJhY2soJHN0cikNCiAgICB7DQogICAgICAgICRzdHIgPSB0cmltKCRzdHIpOw0KICAgICAgICAkbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdBV1NTMycpOw0KICAgICAgICBpZiggaXNfb2JqZWN0KCRtb2QpICkgew0KICAgICAgICAgICAgJGZpbGUgPSAkbW9kLT5HZXRNb2R1bGVQYXRoKCkuJy9SRUFETUUubWQnOw0KICAgICAgICAgICAgaWYoIGlzX2ZpbGUoJGZpbGUpICkgcmV0dXJuIGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzKENtc0xheW91dFRlbXBsYXRlVHlwZSAkdHlwZSkNCiAgICB7DQogICAgICAgIGlmKCAkdHlwZS0+Z2V0X29yaWdpbmF0b3IoKSAhPSAnQVdTUzMnICkgdGhyb3cgbmV3IENtc0xvZ2ljRXhjZXB0aW9uKCdDYW5ub3QgcmVzZXQgY29udGVudHMgZm9yIHRoaXMgdGVtcGxhdGUgdHlwZScpOw0KDQogICAgICAgICRmbiA9IG51bGw7DQogICAgICAgIHN3aXRjaCggJHR5cGUtPmdldF9uYW1lKCkgKSB7DQogICAgICAgIGNhc2UgJ3N1bW1hcnknOg0KICAgICAgICAgICAgJGZuID0gJ29yaWdfc3VtbWFyeV90ZW1wbGF0ZS50cGwnOw0KICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgY2FzZSAnZGV0YWlsJzoNCiAgICAgICAgICAgICRmbiA9ICdvcmlnX2RldGFpbF90ZW1wbGF0ZS50cGwnOw0KICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgY2FzZSAndXBsb2FkJzoNCiAgICAgICAgICAgICRmbiA9ICdvcmlnX3VwbG9hZGZvcm1fdGVtcGxhdGUudHBsJzsNCiAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgIGNhc2UgJ2Zvcm0nOg0KICAgICAgICAgICAgJGZuID0gJ29yaWdfZm9ybV90ZW1wbGF0ZS50cGwnOw0KICAgICAgICB9DQoNCiAgICAgICAgJGZuID0gY21zX2pvaW5fcGF0aChfX0RJUl9fLCd0ZW1wbGF0ZXMnLCRmbik7DQogICAgICAgIGlmKCBmaWxlX2V4aXN0cygkZm4pICkgcmV0dXJuIEBmaWxlX2dldF9jb250ZW50cygkZm4pOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBDcmVhdGVTaWduZWRMaW5rKCRuYW1lKQ0KICAgIHsNCg0KICAgICAgICAkYmFzZV91cmwgPSBDTVNfUk9PVF9VUkw7DQogICAgICAgICRuYW1lID0gXEFXU1NES1xlbmNyeXB0OjplbmNvZGVmaWxlbmFtZSgkbmFtZSk7DQogICAgICAgICRvdXQgPSAkYmFzZV91cmwuIi9TMy9zLyIuJG5hbWU7DQoNCiAgICAgICAgcmV0dXJuICRvdXQ7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIENyZWF0ZVByZXR0eUxpbmsoJHBhZ2UsJHByZWZpeCkNCiAgICB7DQogICAgICAgICRiYXNlX3VybCA9IENNU19ST09UX1VSTDsNCiAgICAgICAgJG91dCA9ICRiYXNlX3VybC4iL1MzLyIuJHBhZ2UuIi8iLiRwcmVmaXg7DQoNCiAgICAgICAgcmV0dXJuICRvdXQ7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEdldFByZXR0eVVybCgkcHJlZml4PW51bGwpDQogICAgew0KICAgICAgICAkdXNlX2N1c3RvbV91cmwgPSAkdGhpcy0+R2V0T3B0aW9uVmFsdWUoInVzZV9jdXN0b21fdXJsIik7DQogICAgICAgICRjdXN0b21fdXJsID0gJHRoaXMtPkdldE9wdGlvblZhbHVlKCJjdXN0b21fdXJsIik7DQogICAgICAgIGlmKCAkdXNlX2N1c3RvbV91cmwgJiYgJGN1c3RvbV91cmwgKSB7DQogICAgICAgICAgICAkdXJsID0gJGN1c3RvbV91cmw7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkdXJsID0gImh0dHBzOi8vIi4kdGhpcy0+R2V0T3B0aW9uVmFsdWUoJ2J1Y2tldF9uYW1lJykuIi5zMy4iLiR0aGlzLT5HZXRPcHRpb25WYWx1ZSgnYWNjZXNzX3JlZ2lvbicpLiIuYW1hem9uYXdzLmNvbSI7DQogICAgICAgIH0NCiAgICAgICAgaWYoaXNzZXQoJHByZWZpeCkpew0KICAgICAgICAgICAgcmV0dXJuICR1cmwuJy8nLiRwcmVmaXg7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICByZXR1cm4gJHVybDsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q2FjaGVGaWxlKCRxcGFybXMpDQogICAgew0KICAgICAgICAkYnVja2V0X2lkID0gJHFwYXJtc1snYnVja2V0J107DQogICAgICAgICRwcmVmaXggPSAkcXBhcm1zWydwcmVmaXgnXTsNCiAgICAgICAgJGNvbmZpZyA9IFxjbXNfY29uZmlnOjpnZXRfaW5zdGFuY2UoKTsNCiAgICAgICAgJGpzb25fZmlsZV9uYW1lID0gJ2F3c3MzXycuXEFXU1NES1xlbmNyeXB0OjplbmNvZGVmaWxlbmFtZSgkYnVja2V0X2lkLidfJy5zdHJfcmVwbGFjZSgnLycsICdfJywgJHByZWZpeCkpLicuY21zJzsNCiAgICAgICAgJGpzb25fZmlsZV9QYXRoID0gJGNvbmZpZ1sndG1wX2NhY2hlX2xvY2F0aW9uJ10uJy8nLiRqc29uX2ZpbGVfbmFtZTsNCg0KICAgICAgICByZXR1cm4gJGpzb25fZmlsZV9QYXRoOw0KICAgIH0NCg0KICAgIGZpbmFsIHB1YmxpYyBmdW5jdGlvbiBHZXRPcHRpb25WYWx1ZSgka2V5LCAkZGVmYXVsdCA9ICcnKQ0KICAgIHsNCiAgICAgICAgJHZhbHVlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJGtleSk7DQogICAgICAgIGlmKGlzc2V0KCR2YWx1ZSkgJiYgJHZhbHVlICE9PSAnJykgew0KICAgICAgICAgICAgcmV0dXJuICR2YWx1ZTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIHJldHVybiAkZGVmYXVsdDsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICB9DQogICAgDQogICAgZmluYWwgcHVibGljIGZ1bmN0aW9uIFNldE9wdGlvblZhbHVlKCRrZXksICR2YWx1ZSkgOiB2b2lkDQogICAgew0KICAgICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJGtleSwkdmFsdWUpOw0KICAgIH0NCg0KICAgIGZpbmFsIHB1YmxpYyBmdW5jdGlvbiBHZXRTZXR0aW5nc1ZhbHVlcygpDQogICAgew0KICAgICAgICAkcHJlZml4ID0gJHRoaXMtPkdldE5hbWUoKS4nX21hcGlfcHJlZl8nOw0KICAgICAgICAkbGlzdCA9IGNtc19zaXRlcHJlZnM6Omxpc3RfYnlfcHJlZml4KCRwcmVmaXgpOw0KICAgICAgICBpZiggISRsaXN0IHx8ICFjb3VudCgkbGlzdCkgKSByZXR1cm4gW107DQogICAgICAgICRvdXQgPSBbXTsNCiAgICAgICAgZm9yZWFjaCggJGxpc3QgYXMgJHByZWZuYW1lICkgew0KICAgICAgICAgICAgJHRtcCA9IGNtc19zaXRlcHJlZnM6OmdldCgkcHJlZm5hbWUpOw0KICAgICAgICAgICAgaWYoICEkdG1wICkgY29udGludWU7DQogICAgICAgICAgICAkb3V0W3N1YnN0cigkcHJlZm5hbWUsIHN0cmxlbigkcHJlZml4KSldID0gJHRtcDsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmKCBjb3VudCgkb3V0KSApIHJldHVybiAkb3V0Ow0KDQogICAgfQ0KDQp9DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/css/style.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnVpLWRpYWxvZyB1bCB7DQogICAgbWFyZ2luLXRvcDogMjBweDsNCn0NCg0KLnVpLXdpZGdldC1jb250ZW50IGEgew0KICAgICBjb2xvcjogIzE0N2ZkYiFpbXBvcnRhbnQ7DQogICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIWltcG9ydGFudDsNCn0NCg0KDQpjb2RlLnVzZXJpbnB1dCB7DQogICAgY29sb3I6ICMxZDgxMDI7DQogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1sYXlvdXQtbWFpbi10ZDg1M2EsI2YyZjNmMyk7DQogICAgYm9yZGVyLXJhZGl1czogMnB4Ow0KICAgIHBhZGRpbmc6IDAgM3B4Ow0KICAgIGZvbnQtd2VpZ2h0OiA3MDA7DQogICAgZm9udC1zaXplOiAxZW07DQp9DQouYWxlcnQgew0KICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgICBwYWRkaW5nOiAwLjc1cmVtIDEuMjVyZW07DQogICAgbWFyZ2luLWJvdHRvbTogMXJlbTsNCiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsNCiAgICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOw0KfQ0KLmFsZXJ0LXByaW1hcnkgew0KICAgIGNvbG9yOiAjMDA0MDg1Ow0KICAgIGJhY2tncm91bmQtY29sb3I6ICNjY2U1ZmY7DQogICAgYm9yZGVyLWNvbG9yOiAjYjhkYWZmOw0KfQ0KLmFsZXJ0LXNlY29uZGFyeSB7DQogICAgY29sb3I6ICMzODNkNDE7DQogICAgYmFja2dyb3VuZC1jb2xvcjogI2UyZTNlNTsNCiAgICBib3JkZXItY29sb3I6ICNkNmQ4ZGI7DQp9DQouYWxlcnQtc3VjY2VzcyB7DQogICAgY29sb3I6ICMxNTU3MjQ7DQogICAgYmFja2dyb3VuZC1jb2xvcjogI2Q0ZWRkYTsNCiAgICBib3JkZXItY29sb3I6ICNjM2U2Y2I7DQp9DQouYWxlcnQtZGFuZ2VyIHsNCiAgICBjb2xvcjogIzcyMWMyNDsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhkN2RhOw0KICAgIGJvcmRlci1jb2xvcjogI2Y1YzZjYjsNCn0NCi5hbGVydC13YXJuaW5nIHsNCiAgICBjb2xvcjogIzg1NjQwNDsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmM2NkOw0KICAgIGJvcmRlci1jb2xvcjogI2ZmZWViYTsNCn0NCi5hbGVydC1pbmZvIHsNCiAgICBjb2xvcjogIzBjNTQ2MDsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDFlY2YxOw0KICAgIGJvcmRlci1jb2xvcjogI2JlZTVlYjsNCn0NCi5tZXNzYWdlIHAgew0KICAgIG1hcmdpbi10b3A6IDAuNXJlbTsNCiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07DQp9DQouYmQtcGxhY2Vob2xkZXItaW1nIHsNCiAgICBmb250LXNpemU6IDEuMTI1cmVtOw0KICAgIHRleHQtYW5jaG9yOiBtaWRkbGU7DQogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsNCiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOw0KICAgIHVzZXItc2VsZWN0OiBub25lOw0KfQ0KDQoudXBsb2FkLXdyYXBwZXIgeyBtYXJnaW46IDEwcHggMCB9DQouaGNlbnRlcmVkIHsgdGV4dC1hbGlnbjogY2VudGVyIH0NCi52Y2VudGVyZWQgew0KICBkaXNwbGF5OiB0YWJsZS1jZWxsOw0KICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KfQ0KI2Ryb3B6b25lIHsNCiAgIG1hcmdpbjogMTVweCAwOw0KICAgYm9yZGVyLXJhZGl1czogNHB4Ow0KIGJhY2tncm91bmQ6ICNFRUVFRUU7DQogIH0NCiNkcm9wem9uZS5pbiB7DQogIHdpZHRoOiA2MDBweDsNCiAgaGVpZ2h0OiAyMDBweDsNCiAgbGluZS1oZWlnaHQ6IDIwMHB4Ow0KICBiYWNrZ3JvdW5kOiAjMTQ3ZmRiOw0KICBib3JkZXI6IDJweCBkYXNoZWQgI2ZmZjsNCiAgY29sb3I6ICNmZmY7DQogIGZvbnQtc2l6ZTogbGFyZ2VyOw0KICBjdXJzb3I6IG1vdmU7DQp9DQojZHJvcHpvbmUuZmFkZSB7DQogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQ7DQogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQ7DQogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dDsNCiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQ7DQogIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0Ow0KICBvcGFjaXR5OiAxOw0KfQ0KI3Byb2dyZXNzYXJlYSB7DQogIG1hcmdpbjogMTVweDsNCiAgaGVpZ2h0OiAyZW07DQogIGxpbmUtaGVpZ2h0OiAyZW07DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgYm9yZGVyOiAxcHggc29saWQgI2FhYTsNCiAgYm9yZGVyLXJhZGl1czogNHB4Ow0KICBkaXNwbGF5OiBub25lOw0KfQ0KI25hdkJ1dHRvbnMgew0KICAgIHBhZGRpbmc6MC4zNWVtIDAuNjI1ZW0gMC4zNWVtOw0KfQ==]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/changelog.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHVsPg0KICA8bGk+VkVSU0lPTjogMS4xLjEgREFURUQ6IDE3LU5PVkVNQkVSLTIwMjMNCiAgICA8cD5BZGRlZCBEZXRhaWwgdGVtcGxhdGUuPC9wPg0KICA8L2xpPg0KICA8bGk+VkVSU0lPTjogMS4xLjAgREFURUQ6IDE2LU5PVkVNQkVSLTIwMjMNCiAgICA8cD5JbmNvcnBvcmF0ZWQgY3JlZGVudGlhbHMuPC9wPg0KICA8L2xpPg0KICAgIDxsaT5WRVJTSU9OOiAxLjAuMCBEQVRFRDogMjAtSlVORS0yMDIzDQogICAgPHA+Rmlyc3QgdmVyc2lvbiBvZiB0aGUgcGx1Z2luLjwvcD4NCiAgPC9saT4NCjwvdWw+DQo=]]></data>
	</file>
	<file>
	  <filename>/files.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyJmaWxlcyI6IFsNCiAgICB7DQogICAgICAibmFtZSI6ICJwaWN0dXJlMS5qcGciLA0KICAgICAgInNpemUiOiA5MDI2MDQsDQogICAgICAidXJsIjogImh0dHA6XC9cL2V4YW1wbGUub3JnXC9maWxlc1wvcGljdHVyZTEuanBnIiwNCiAgICAgICJ0aHVtYm5haWxVcmwiOiAiaHR0cDpcL1wvZXhhbXBsZS5vcmdcL2ZpbGVzXC90aHVtYm5haWxcL3BpY3R1cmUxLmpwZyIsDQogICAgICAiZGVsZXRlVXJsIjogImh0dHA6XC9cL2V4YW1wbGUub3JnXC9maWxlc1wvcGljdHVyZTEuanBnIiwNCiAgICAgICJkZWxldGVUeXBlIjogIkRFTEVURSINCiAgICB9LA0KICAgIHsNCiAgICAgICJuYW1lIjogInBpY3R1cmUyLmpwZyIsDQogICAgICAic2l6ZSI6IDg0MTk0NiwNCiAgICAgICJ1cmwiOiAiaHR0cDpcL1wvZXhhbXBsZS5vcmdcL2ZpbGVzXC9waWN0dXJlMi5qcGciLA0KICAgICAgInRodW1ibmFpbFVybCI6ICJodHRwOlwvXC9leGFtcGxlLm9yZ1wvZmlsZXNcL3RodW1ibmFpbFwvcGljdHVyZTIuanBnIiwNCiAgICAgICJkZWxldGVVcmwiOiAiaHR0cDpcL1wvZXhhbXBsZS5vcmdcL2ZpbGVzXC9waWN0dXJlMi5qcGciLA0KICAgICAgImRlbGV0ZVR5cGUiOiAiREVMRVRFIg0KICAgIH0sDQogICAgew0KICAgICAgICAibmFtZSI6ICJwaWN0dXJlMzMuanBnIiwNCiAgICAgICAgInNpemUiOiA5MDI2MDQsDQogICAgICAgICJlcnJvciI6ICJGaWxldHlwZSBub3QgYWxsb3dlZCINCiAgICAgIH0sDQogICAgICB7DQogICAgICAgICJuYW1lIjogInBpY3R1cmU0My5qcGciLA0KICAgICAgICAic2l6ZSI6IDg0MTk0NiwNCiAgICAgICAgImVycm9yIjogIkZpbGV0eXBlIG5vdCBhbGxvd2VkIg0KICAgICAgfQ0KICBdfQ==]]></data>
	</file>
	<file>
	  <filename>/function.admin_permissions_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBBV1NTMw0KIyBBdXRob3JzOiBNYWdhbCBIZXppLCB3aXRoIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uLg0KIyBDb3B5cmlnaHQ6IChDKSAyMDIzIE1hZ2FsIEhlemksIGhfbWFnYWxAaG90bWFpbC5jb20NCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzLiBTZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLyAgDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyBNYWRlIFNpbXBsZShUTSkgaXMgKGMpIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIDIwMDQtMjAyMCAoaW5mb0BjbXNtYWRlc2ltcGxlLm9yZykNCiMgUHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0FXU1MzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VDQojIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIA0KIyBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMNCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluDQojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IA0KIyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgDQojIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgQW1hem9uIFdlYiBTZXJ2aWNlcywgQVdTLCBhbmQgdGhlIFBvd2VyZWQgYnkgQVdTIGxvZ28gYXJlIHRyYWRlbWFya3Mgb2YgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpuYW1lc3BhY2UgQVdTUzM7DQoNCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJHRoaXM6Ok1BTkFHRV9QRVJNKSApIHJldHVybjsNCg0KJHRwbCA9ICRzbWFydHktPkNyZWF0ZVRlbXBsYXRlKCAkdGhpcy0+R2V0VGVtcGxhdGVSZXNvdXJjZSgnYWRtaW5fcGVybWlzc2lvbnNfdGFiLnRwbCcpLCBudWxsLCBudWxsLCAkc21hcnR5ICk7DQokYnVja2V0X3BvbGljeSA9IHV0aWxzOjpnZXRfaWFtX3BvbGljeSgpOw0KJHNtYXJ0eS0+YXNzaWduKCdidWNrZXRfcG9saWN5JywkYnVja2V0X3BvbGljeSk7DQoNCiR0cGwtPmRpc3BsYXkoKTsNCg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/function.admin_settings_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBBV1NTMw0KIyBBdXRob3JzOiBNYWdhbCBIZXppLCB3aXRoIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uLg0KIyBDb3B5cmlnaHQ6IChDKSAyMDIzIE1hZ2FsIEhlemksIGhfbWFnYWxAaG90bWFpbC5jb20NCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzLiBTZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLyAgDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyBNYWRlIFNpbXBsZShUTSkgaXMgKGMpIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIDIwMDQtMjAyMCAoaW5mb0BjbXNtYWRlc2ltcGxlLm9yZykNCiMgUHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0FXU1MzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VDQojIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIA0KIyBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMNCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluDQojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IA0KIyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgDQojIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgQW1hem9uIFdlYiBTZXJ2aWNlcywgQVdTLCBhbmQgdGhlIFBvd2VyZWQgYnkgQVdTIGxvZ28gYXJlIHRyYWRlbWFya3Mgb2YgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpuYW1lc3BhY2UgQVdTUzM7DQoNCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJHRoaXM6Ok1BTkFHRV9QRVJNKSApIHJldHVybjsNCg0KJGVycm9yID0gMDsNCg0KaWYoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSApIHsNCg0KICAgICRzZXR0aW5nc19pbnB1dCA9ICRwYXJhbXNbJ3NldHRpbmdzX2lucHV0J107DQogICAgaWYoY291bnQoJHNldHRpbmdzX2lucHV0KSA+IDApDQogICAgew0KICAgICAgICBmb3JlYWNoKCRzZXR0aW5nc19pbnB1dCBhcyAka2V5ID0+ICR2YWx1ZSkgDQogICAgICAgIHsNCiAgICAgICAgICAgICR0aGlzLT5TZXRPcHRpb25WYWx1ZSgka2V5LCAkdmFsdWUpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgaWYoJHJlYWR5KXsNCiAgICAgICAgJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigkcGFyYW1zWydidWNrZXRfbmFtZSddKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdzZXR0aW5ncycpOw0KICAgIH0NCn0NCg0KJGNvbnRlbnRfb3BzICAgICAgICAgPSBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpOw0KJGF3c3JlZ2lvbm5hbWVzICAgICAgPSAkc2RrX21vZC0+Z2V0X3JlZ2lvbnNfb3B0aW9ucygpOw0KDQokdHBsID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoICR0aGlzLT5HZXRUZW1wbGF0ZVJlc291cmNlKCdhZG1pbl9zZXR0aW5nc190YWIudHBsJyksIG51bGwsIG51bGwsICRzbWFydHkgKTsNCiR0cGwtPmFzc2lnbignYWNjZXNzX3JlZ2lvbl9saXN0JywkYXdzcmVnaW9ubmFtZXMpOw0KJHRwbC0+YXNzaWduKCdtZXNzYWdlJywkbWVzc2FnZSk7DQokdHBsLT5hc3NpZ24oJ2Vycm9yJywkZXJyb3IpOw0KDQovLyBNb2R1bGUgZGVmYXVsdHMNCiR0cGwtPmFzc2lnbignaW5wdXRfZGV0YWlscGFnZScsICRjb250ZW50X29wcy0+Q3JlYXRlSGllcmFyY2h5RHJvcGRvd24oJycsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXRhaWxwYWdlJyksICRpZC4nc2V0dGluZ3NfaW5wdXRbZGV0YWlscGFnZV0nKSk7DQokdHBsLT5hc3NpZ24oJ2lucHV0X3N1bW1hcnlwYWdlJywgJGNvbnRlbnRfb3BzLT5DcmVhdGVIaWVyYXJjaHlEcm9wZG93bignJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3N1bW1hcnlwYWdlJyksICRpZC4nc2V0dGluZ3NfaW5wdXRbc3VtbWFyeXBhZ2VdJykpOw0KDQokdHBsLT5kaXNwbGF5KCk7DQovLyR0cGwtPmRpc3BsYXkoJ3N0cmluZzo8cHJlPntnZXRfdGVtcGxhdGVfdmFyc308L3ByZT4nKTsNCg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/jquery-file-upload/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/jquery-file-upload/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/js/jquery-file-upload/jquery.fileupload.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoNCiAqIGpRdWVyeSBGaWxlIFVwbG9hZCBQbHVnaW4gNS4zMS42DQogKiBodHRwczovL2dpdGh1Yi5jb20vYmx1ZWltcC9qUXVlcnktRmlsZS1VcGxvYWQNCiAqDQogKiBDb3B5cmlnaHQgMjAxMCwgU2ViYXN0aWFuIFRzY2hhbg0KICogaHR0cHM6Ly9ibHVlaW1wLm5ldA0KICoNCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZToNCiAqIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUDQogKi8NCg0KLypqc2xpbnQgbm9tZW46IHRydWUsIHVucGFyYW06IHRydWUsIHJlZ2V4cDogdHJ1ZSAqLw0KLypnbG9iYWwgZGVmaW5lLCB3aW5kb3csIGRvY3VtZW50LCBsb2NhdGlvbiwgRmlsZSwgQmxvYiwgRm9ybURhdGEgKi8NCg0KKGZ1bmN0aW9uIChmYWN0b3J5KSB7DQogICAgJ3VzZSBzdHJpY3QnOw0KICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHsNCiAgICAgICAgLy8gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIEFNRCBtb2R1bGU6DQogICAgICAgIGRlZmluZShbDQogICAgICAgICAgICAnanF1ZXJ5JywNCiAgICAgICAgICAgICdqcXVlcnkudWkud2lkZ2V0Jw0KICAgICAgICBdLCBmYWN0b3J5KTsNCiAgICB9IGVsc2Ugew0KICAgICAgICAvLyBCcm93c2VyIGdsb2JhbHM6DQogICAgICAgIGZhY3Rvcnkod2luZG93LmpRdWVyeSk7DQogICAgfQ0KfShmdW5jdGlvbiAoJCkgew0KICAgICd1c2Ugc3RyaWN0JzsNCg0KICAgIC8vIFRoZSBGaWxlUmVhZGVyIEFQSSBpcyBub3QgYWN0dWFsbHkgdXNlZCwgYnV0IHdvcmtzIGFzIGZlYXR1cmUgZGV0ZWN0aW9uLA0KICAgIC8vIGFzIGUuZy4gU2FmYXJpIHN1cHBvcnRzIFhIUiBmaWxlIHVwbG9hZHMgdmlhIHRoZSBGb3JtRGF0YSBBUEksDQogICAgLy8gYnV0IG5vdCBub24tbXVsdGlwYXJ0IFhIUiBmaWxlIHVwbG9hZHM6DQogICAgJC5zdXBwb3J0LnhockZpbGVVcGxvYWQgPSAhISh3aW5kb3cuWE1MSHR0cFJlcXVlc3RVcGxvYWQgJiYgd2luZG93LkZpbGVSZWFkZXIpOw0KICAgICQuc3VwcG9ydC54aHJGb3JtRGF0YUZpbGVVcGxvYWQgPSAhIXdpbmRvdy5Gb3JtRGF0YTsNCg0KICAgIC8vIERldGVjdCBzdXBwb3J0IGZvciBCbG9iIHNsaWNpbmcgKHJlcXVpcmVkIGZvciBjaHVua2VkIHVwbG9hZHMpOg0KICAgICQuc3VwcG9ydC5ibG9iU2xpY2UgPSB3aW5kb3cuQmxvYiAmJiAoQmxvYi5wcm90b3R5cGUuc2xpY2UgfHwNCiAgICAgICAgQmxvYi5wcm90b3R5cGUud2Via2l0U2xpY2UgfHwgQmxvYi5wcm90b3R5cGUubW96U2xpY2UpOw0KDQogICAgLy8gVGhlIGZpbGV1cGxvYWQgd2lkZ2V0IGxpc3RlbnMgZm9yIGNoYW5nZSBldmVudHMgb24gZmlsZSBpbnB1dCBmaWVsZHMgZGVmaW5lZA0KICAgIC8vIHZpYSBmaWxlSW5wdXQgc2V0dGluZyBhbmQgcGFzdGUgb3IgZHJvcCBldmVudHMgb2YgdGhlIGdpdmVuIGRyb3Bab25lLg0KICAgIC8vIEluIGFkZGl0aW9uIHRvIHRoZSBkZWZhdWx0IGpRdWVyeSBXaWRnZXQgbWV0aG9kcywgdGhlIGZpbGV1cGxvYWQgd2lkZ2V0DQogICAgLy8gZXhwb3NlcyB0aGUgImFkZCIgYW5kICJzZW5kIiBtZXRob2RzLCB0byBhZGQgb3IgZGlyZWN0bHkgc2VuZCBmaWxlcyB1c2luZw0KICAgIC8vIHRoZSBmaWxldXBsb2FkIEFQSS4NCiAgICAvLyBCeSBkZWZhdWx0LCBmaWxlcyBhZGRlZCB2aWEgZmlsZSBpbnB1dCBzZWxlY3Rpb24sIHBhc3RlLCBkcmFnICYgZHJvcCBvcg0KICAgIC8vICJhZGQiIG1ldGhvZCBhcmUgdXBsb2FkZWQgaW1tZWRpYXRlbHksIGJ1dCBpdCBpcyBwb3NzaWJsZSB0byBvdmVycmlkZQ0KICAgIC8vIHRoZSAiYWRkIiBjYWxsYmFjayBvcHRpb24gdG8gcXVldWUgZmlsZSB1cGxvYWRzLg0KICAgICQud2lkZ2V0KCdibHVlaW1wLmZpbGV1cGxvYWQnLCB7DQoNCiAgICAgICAgb3B0aW9uczogew0KICAgICAgICAgICAgLy8gVGhlIGRyb3AgdGFyZ2V0IGVsZW1lbnQocyksIGJ5IHRoZSBkZWZhdWx0IHRoZSBjb21wbGV0ZSBkb2N1bWVudC4NCiAgICAgICAgICAgIC8vIFNldCB0byBudWxsIHRvIGRpc2FibGUgZHJhZyAmIGRyb3Agc3VwcG9ydDoNCiAgICAgICAgICAgIGRyb3Bab25lOiAkKGRvY3VtZW50KSwNCiAgICAgICAgICAgIC8vIFRoZSBwYXN0ZSB0YXJnZXQgZWxlbWVudChzKSwgYnkgdGhlIGRlZmF1bHQgdGhlIGNvbXBsZXRlIGRvY3VtZW50Lg0KICAgICAgICAgICAgLy8gU2V0IHRvIG51bGwgdG8gZGlzYWJsZSBwYXN0ZSBzdXBwb3J0Og0KICAgICAgICAgICAgcGFzdGVab25lOiAkKGRvY3VtZW50KSwNCiAgICAgICAgICAgIC8vIFRoZSBmaWxlIGlucHV0IGZpZWxkKHMpLCB0aGF0IGFyZSBsaXN0ZW5lZCB0byBmb3IgY2hhbmdlIGV2ZW50cy4NCiAgICAgICAgICAgIC8vIElmIHVuZGVmaW5lZCwgaXQgaXMgc2V0IHRvIHRoZSBmaWxlIGlucHV0IGZpZWxkcyBpbnNpZGUNCiAgICAgICAgICAgIC8vIG9mIHRoZSB3aWRnZXQgZWxlbWVudCBvbiBwbHVnaW4gaW5pdGlhbGl6YXRpb24uDQogICAgICAgICAgICAvLyBTZXQgdG8gbnVsbCB0byBkaXNhYmxlIHRoZSBjaGFuZ2UgbGlzdGVuZXIuDQogICAgICAgICAgICBmaWxlSW5wdXQ6IHVuZGVmaW5lZCwNCiAgICAgICAgICAgIC8vIEJ5IGRlZmF1bHQsIHRoZSBmaWxlIGlucHV0IGZpZWxkIGlzIHJlcGxhY2VkIHdpdGggYSBjbG9uZSBhZnRlcg0KICAgICAgICAgICAgLy8gZWFjaCBpbnB1dCBmaWVsZCBjaGFuZ2UgZXZlbnQuIFRoaXMgaXMgcmVxdWlyZWQgZm9yIGlmcmFtZSB0cmFuc3BvcnQNCiAgICAgICAgICAgIC8vIHF1ZXVlcyBhbmQgYWxsb3dzIGNoYW5nZSBldmVudHMgdG8gYmUgZmlyZWQgZm9yIHRoZSBzYW1lIGZpbGUNCiAgICAgICAgICAgIC8vIHNlbGVjdGlvbiwgYnV0IGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIGZhbHNlOg0KICAgICAgICAgICAgcmVwbGFjZUZpbGVJbnB1dDogdHJ1ZSwNCiAgICAgICAgICAgIC8vIFRoZSBwYXJhbWV0ZXIgbmFtZSBmb3IgdGhlIGZpbGUgZm9ybSBkYXRhICh0aGUgcmVxdWVzdCBhcmd1bWVudCBuYW1lKS4NCiAgICAgICAgICAgIC8vIElmIHVuZGVmaW5lZCBvciBlbXB0eSwgdGhlIG5hbWUgcHJvcGVydHkgb2YgdGhlIGZpbGUgaW5wdXQgZmllbGQgaXMNCiAgICAgICAgICAgIC8vIHVzZWQsIG9yICJmaWxlc1tdIiBpZiB0aGUgZmlsZSBpbnB1dCBuYW1lIHByb3BlcnR5IGlzIGFsc28gZW1wdHksDQogICAgICAgICAgICAvLyBjYW4gYmUgYSBzdHJpbmcgb3IgYW4gYXJyYXkgb2Ygc3RyaW5nczoNCiAgICAgICAgICAgIHBhcmFtTmFtZTogdW5kZWZpbmVkLA0KICAgICAgICAgICAgLy8gQnkgZGVmYXVsdCwgZWFjaCBmaWxlIG9mIGEgc2VsZWN0aW9uIGlzIHVwbG9hZGVkIHVzaW5nIGFuIGluZGl2aWR1YWwNCiAgICAgICAgICAgIC8vIHJlcXVlc3QgZm9yIFhIUiB0eXBlIHVwbG9hZHMuIFNldCB0byBmYWxzZSB0byB1cGxvYWQgZmlsZQ0KICAgICAgICAgICAgLy8gc2VsZWN0aW9ucyBpbiBvbmUgcmVxdWVzdCBlYWNoOg0KICAgICAgICAgICAgc2luZ2xlRmlsZVVwbG9hZHM6IHRydWUsDQogICAgICAgICAgICAvLyBUbyBsaW1pdCB0aGUgbnVtYmVyIG9mIGZpbGVzIHVwbG9hZGVkIHdpdGggb25lIFhIUiByZXF1ZXN0LA0KICAgICAgICAgICAgLy8gc2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIDA6DQogICAgICAgICAgICBsaW1pdE11bHRpRmlsZVVwbG9hZHM6IHVuZGVmaW5lZCwNCiAgICAgICAgICAgIC8vIFNldCB0aGUgZm9sbG93aW5nIG9wdGlvbiB0byB0cnVlIHRvIGlzc3VlIGFsbCBmaWxlIHVwbG9hZCByZXF1ZXN0cw0KICAgICAgICAgICAgLy8gaW4gYSBzZXF1ZW50aWFsIG9yZGVyOg0KICAgICAgICAgICAgc2VxdWVudGlhbFVwbG9hZHM6IGZhbHNlLA0KICAgICAgICAgICAgLy8gVG8gbGltaXQgdGhlIG51bWJlciBvZiBjb25jdXJyZW50IHVwbG9hZHMsDQogICAgICAgICAgICAvLyBzZXQgdGhlIGZvbGxvd2luZyBvcHRpb24gdG8gYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gMDoNCiAgICAgICAgICAgIGxpbWl0Q29uY3VycmVudFVwbG9hZHM6IHVuZGVmaW5lZCwNCiAgICAgICAgICAgIC8vIFNldCB0aGUgZm9sbG93aW5nIG9wdGlvbiB0byB0cnVlIHRvIGZvcmNlIGlmcmFtZSB0cmFuc3BvcnQgdXBsb2FkczoNCiAgICAgICAgICAgIGZvcmNlSWZyYW1lVHJhbnNwb3J0OiBmYWxzZSwNCiAgICAgICAgICAgIC8vIFNldCB0aGUgZm9sbG93aW5nIG9wdGlvbiB0byB0aGUgbG9jYXRpb24gb2YgYSByZWRpcmVjdCB1cmwgb24gdGhlDQogICAgICAgICAgICAvLyBvcmlnaW4gc2VydmVyLCBmb3IgY3Jvc3MtZG9tYWluIGlmcmFtZSB0cmFuc3BvcnQgdXBsb2FkczoNCiAgICAgICAgICAgIHJlZGlyZWN0OiB1bmRlZmluZWQsDQogICAgICAgICAgICAvLyBUaGUgcGFyYW1ldGVyIG5hbWUgZm9yIHRoZSByZWRpcmVjdCB1cmwsIHNlbnQgYXMgcGFydCBvZiB0aGUgZm9ybQ0KICAgICAgICAgICAgLy8gZGF0YSBhbmQgc2V0IHRvICdyZWRpcmVjdCcgaWYgdGhpcyBvcHRpb24gaXMgZW1wdHk6DQogICAgICAgICAgICByZWRpcmVjdFBhcmFtTmFtZTogdW5kZWZpbmVkLA0KICAgICAgICAgICAgLy8gU2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIHRoZSBsb2NhdGlvbiBvZiBhIHBvc3RNZXNzYWdlIHdpbmRvdywNCiAgICAgICAgICAgIC8vIHRvIGVuYWJsZSBwb3N0TWVzc2FnZSB0cmFuc3BvcnQgdXBsb2FkczoNCiAgICAgICAgICAgIHBvc3RNZXNzYWdlOiB1bmRlZmluZWQsDQogICAgICAgICAgICAvLyBCeSBkZWZhdWx0LCBYSFIgZmlsZSB1cGxvYWRzIGFyZSBzZW50IGFzIG11bHRpcGFydC9mb3JtLWRhdGEuDQogICAgICAgICAgICAvLyBUaGUgaWZyYW1lIHRyYW5zcG9ydCBpcyBhbHdheXMgdXNpbmcgbXVsdGlwYXJ0L2Zvcm0tZGF0YS4NCiAgICAgICAgICAgIC8vIFNldCB0byBmYWxzZSB0byBlbmFibGUgbm9uLW11bHRpcGFydCBYSFIgdXBsb2FkczoNCiAgICAgICAgICAgIG11bHRpcGFydDogdHJ1ZSwNCiAgICAgICAgICAgIC8vIFRvIHVwbG9hZCBsYXJnZSBmaWxlcyBpbiBzbWFsbGVyIGNodW5rcywgc2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uDQogICAgICAgICAgICAvLyB0byBhIHByZWZlcnJlZCBtYXhpbXVtIGNodW5rIHNpemUuIElmIHNldCB0byAwLCBudWxsIG9yIHVuZGVmaW5lZCwNCiAgICAgICAgICAgIC8vIG9yIHRoZSBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgdGhlIHJlcXVpcmVkIEJsb2IgQVBJLCBmaWxlcyB3aWxsDQogICAgICAgICAgICAvLyBiZSB1cGxvYWRlZCBhcyBhIHdob2xlLg0KICAgICAgICAgICAgbWF4Q2h1bmtTaXplOiB1bmRlZmluZWQsDQogICAgICAgICAgICAvLyBXaGVuIGEgbm9uLW11bHRpcGFydCB1cGxvYWQgb3IgYSBjaHVua2VkIG11bHRpcGFydCB1cGxvYWQgaGFzIGJlZW4NCiAgICAgICAgICAgIC8vIGFib3J0ZWQsIHRoaXMgb3B0aW9uIGNhbiBiZSB1c2VkIHRvIHJlc3VtZSB0aGUgdXBsb2FkIGJ5IHNldHRpbmcNCiAgICAgICAgICAgIC8vIGl0IHRvIHRoZSBzaXplIG9mIHRoZSBhbHJlYWR5IHVwbG9hZGVkIGJ5dGVzLiBUaGlzIG9wdGlvbiBpcyBtb3N0DQogICAgICAgICAgICAvLyB1c2VmdWwgd2hlbiBtb2RpZnlpbmcgdGhlIG9wdGlvbnMgb2JqZWN0IGluc2lkZSBvZiB0aGUgImFkZCIgb3INCiAgICAgICAgICAgIC8vICJzZW5kIiBjYWxsYmFja3MsIGFzIHRoZSBvcHRpb25zIGFyZSBjbG9uZWQgZm9yIGVhY2ggZmlsZSB1cGxvYWQuDQogICAgICAgICAgICB1cGxvYWRlZEJ5dGVzOiB1bmRlZmluZWQsDQogICAgICAgICAgICAvLyBCeSBkZWZhdWx0LCBmYWlsZWQgKGFib3J0IG9yIGVycm9yKSBmaWxlIHVwbG9hZHMgYXJlIHJlbW92ZWQgZnJvbSB0aGUNCiAgICAgICAgICAgIC8vIGdsb2JhbCBwcm9ncmVzcyBjYWxjdWxhdGlvbi4gU2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIGZhbHNlIHRvDQogICAgICAgICAgICAvLyBwcmV2ZW50IHJlY2FsY3VsYXRpbmcgdGhlIGdsb2JhbCBwcm9ncmVzcyBkYXRhOg0KICAgICAgICAgICAgcmVjYWxjdWxhdGVQcm9ncmVzczogdHJ1ZSwNCiAgICAgICAgICAgIC8vIEludGVydmFsIGluIG1pbGxpc2Vjb25kcyB0byBjYWxjdWxhdGUgYW5kIHRyaWdnZXIgcHJvZ3Jlc3MgZXZlbnRzOg0KICAgICAgICAgICAgcHJvZ3Jlc3NJbnRlcnZhbDogMTAwLA0KICAgICAgICAgICAgLy8gSW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIHRvIGNhbGN1bGF0ZSBwcm9ncmVzcyBiaXRyYXRlOg0KICAgICAgICAgICAgYml0cmF0ZUludGVydmFsOiA1MDAsDQogICAgICAgICAgICAvLyBCeSBkZWZhdWx0LCB1cGxvYWRzIGFyZSBzdGFydGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBhZGRpbmcgZmlsZXM6DQogICAgICAgICAgICBhdXRvVXBsb2FkOiB0cnVlLA0KDQogICAgICAgICAgICAvLyBFcnJvciBhbmQgaW5mbyBtZXNzYWdlczoNCiAgICAgICAgICAgIG1lc3NhZ2VzOiB7DQogICAgICAgICAgICAgICAgdXBsb2FkZWRCeXRlczogJ1VwbG9hZGVkIGJ5dGVzIGV4Y2VlZCBmaWxlIHNpemUnDQogICAgICAgICAgICB9LA0KDQogICAgICAgICAgICAvLyBUcmFuc2xhdGlvbiBmdW5jdGlvbiwgZ2V0cyB0aGUgbWVzc2FnZSBrZXkgdG8gYmUgdHJhbnNsYXRlZA0KICAgICAgICAgICAgLy8gYW5kIGFuIG9iamVjdCB3aXRoIGNvbnRleHQgc3BlY2lmaWMgZGF0YSBhcyBhcmd1bWVudHM6DQogICAgICAgICAgICBpMThuOiBmdW5jdGlvbiAobWVzc2FnZSwgY29udGV4dCkgew0KICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSB0aGlzLm1lc3NhZ2VzW21lc3NhZ2VdIHx8IG1lc3NhZ2UudG9TdHJpbmcoKTsNCiAgICAgICAgICAgICAgICBpZiAoY29udGV4dCkgew0KICAgICAgICAgICAgICAgICAgICAkLmVhY2goY29udGV4dCwgZnVuY3Rpb24gKGtleSwgdmFsdWUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoJ3snICsga2V5ICsgJ30nLCB2YWx1ZSk7DQogICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZTsNCiAgICAgICAgICAgIH0sDQoNCiAgICAgICAgICAgIC8vIEFkZGl0aW9uYWwgZm9ybSBkYXRhIHRvIGJlIHNlbnQgYWxvbmcgd2l0aCB0aGUgZmlsZSB1cGxvYWRzIGNhbiBiZSBzZXQNCiAgICAgICAgICAgIC8vIHVzaW5nIHRoaXMgb3B0aW9uLCB3aGljaCBhY2NlcHRzIGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCBuYW1lIGFuZA0KICAgICAgICAgICAgLy8gdmFsdWUgcHJvcGVydGllcywgYSBmdW5jdGlvbiByZXR1cm5pbmcgc3VjaCBhbiBhcnJheSwgYSBGb3JtRGF0YQ0KICAgICAgICAgICAgLy8gb2JqZWN0IChmb3IgWEhSIGZpbGUgdXBsb2FkcyksIG9yIGEgc2ltcGxlIG9iamVjdC4NCiAgICAgICAgICAgIC8vIFRoZSBmb3JtIG9mIHRoZSBmaXJzdCBmaWxlSW5wdXQgaXMgZ2l2ZW4gYXMgcGFyYW1ldGVyIHRvIHRoZSBmdW5jdGlvbjoNCiAgICAgICAgICAgIGZvcm1EYXRhOiBmdW5jdGlvbiAoZm9ybSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBmb3JtLnNlcmlhbGl6ZUFycmF5KCk7DQogICAgICAgICAgICB9LA0KDQogICAgICAgICAgICAvLyBUaGUgYWRkIGNhbGxiYWNrIGlzIGludm9rZWQgYXMgc29vbiBhcyBmaWxlcyBhcmUgYWRkZWQgdG8gdGhlIGZpbGV1cGxvYWQNCiAgICAgICAgICAgIC8vIHdpZGdldCAodmlhIGZpbGUgaW5wdXQgc2VsZWN0aW9uLCBkcmFnICYgZHJvcCwgcGFzdGUgb3IgYWRkIEFQSSBjYWxsKS4NCiAgICAgICAgICAgIC8vIElmIHRoZSBzaW5nbGVGaWxlVXBsb2FkcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhpcyBjYWxsYmFjayB3aWxsIGJlDQogICAgICAgICAgICAvLyBjYWxsZWQgb25jZSBmb3IgZWFjaCBmaWxlIGluIHRoZSBzZWxlY3Rpb24gZm9yIFhIUiBmaWxlIHVwbG9hZHMsIGVsc2UNCiAgICAgICAgICAgIC8vIG9uY2UgZm9yIGVhY2ggZmlsZSBzZWxlY3Rpb24uDQogICAgICAgICAgICAvLw0KICAgICAgICAgICAgLy8gVGhlIHVwbG9hZCBzdGFydHMgd2hlbiB0aGUgc3VibWl0IG1ldGhvZCBpcyBpbnZva2VkIG9uIHRoZSBkYXRhIHBhcmFtZXRlci4NCiAgICAgICAgICAgIC8vIFRoZSBkYXRhIG9iamVjdCBjb250YWlucyBhIGZpbGVzIHByb3BlcnR5IGhvbGRpbmcgdGhlIGFkZGVkIGZpbGVzDQogICAgICAgICAgICAvLyBhbmQgYWxsb3dzIHlvdSB0byBvdmVycmlkZSBwbHVnaW4gb3B0aW9ucyBhcyB3ZWxsIGFzIGRlZmluZSBhamF4IHNldHRpbmdzLg0KICAgICAgICAgICAgLy8NCiAgICAgICAgICAgIC8vIExpc3RlbmVycyBmb3IgdGhpcyBjYWxsYmFjayBjYW4gYWxzbyBiZSBib3VuZCB0aGUgZm9sbG93aW5nIHdheToNCiAgICAgICAgICAgIC8vIC5iaW5kKCdmaWxldXBsb2FkYWRkJywgZnVuYyk7DQogICAgICAgICAgICAvLw0KICAgICAgICAgICAgLy8gZGF0YS5zdWJtaXQoKSByZXR1cm5zIGEgUHJvbWlzZSBvYmplY3QgYW5kIGFsbG93cyB0byBhdHRhY2ggYWRkaXRpb25hbA0KICAgICAgICAgICAgLy8gaGFuZGxlcnMgdXNpbmcgalF1ZXJ5J3MgRGVmZXJyZWQgY2FsbGJhY2tzOg0KICAgICAgICAgICAgLy8gZGF0YS5zdWJtaXQoKS5kb25lKGZ1bmMpLmZhaWwoZnVuYykuYWx3YXlzKGZ1bmMpOw0KICAgICAgICAgICAgYWRkOiBmdW5jdGlvbiAoZSwgZGF0YSkgew0KICAgICAgICAgICAgICAgIGlmIChkYXRhLmF1dG9VcGxvYWQgfHwgKGRhdGEuYXV0b1VwbG9hZCAhPT0gZmFsc2UgJiYNCiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZmlsZXVwbG9hZCgnb3B0aW9uJywgJ2F1dG9VcGxvYWQnKSkpIHsNCiAgICAgICAgICAgICAgICAgICAgZGF0YS5wcm9jZXNzKCkuZG9uZShmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnN1Ym1pdCgpOw0KICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9LA0KDQogICAgICAgICAgICAvLyBPdGhlciBjYWxsYmFja3M6DQoNCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciB0aGUgc3VibWl0IGV2ZW50IG9mIGVhY2ggZmlsZSB1cGxvYWQ6DQogICAgICAgICAgICAvLyBzdWJtaXQ6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRzdWJtaXQnLCBmdW5jKTsNCg0KICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIHRoZSBzdGFydCBvZiBlYWNoIGZpbGUgdXBsb2FkIHJlcXVlc3Q6DQogICAgICAgICAgICAvLyBzZW5kOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5iaW5kKCdmaWxldXBsb2Fkc2VuZCcsIGZ1bmMpOw0KDQogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3Igc3VjY2Vzc2Z1bCB1cGxvYWRzOg0KICAgICAgICAgICAgLy8gZG9uZTogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZGRvbmUnLCBmdW5jKTsNCg0KICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIGZhaWxlZCAoYWJvcnQgb3IgZXJyb3IpIHVwbG9hZHM6DQogICAgICAgICAgICAvLyBmYWlsOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5iaW5kKCdmaWxldXBsb2FkZmFpbCcsIGZ1bmMpOw0KDQogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgY29tcGxldGVkIChzdWNjZXNzLCBhYm9ydCBvciBlcnJvcikgcmVxdWVzdHM6DQogICAgICAgICAgICAvLyBhbHdheXM6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRhbHdheXMnLCBmdW5jKTsNCg0KICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIHVwbG9hZCBwcm9ncmVzcyBldmVudHM6DQogICAgICAgICAgICAvLyBwcm9ncmVzczogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZHByb2dyZXNzJywgZnVuYyk7DQoNCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciBnbG9iYWwgdXBsb2FkIHByb2dyZXNzIGV2ZW50czoNCiAgICAgICAgICAgIC8vIHByb2dyZXNzYWxsOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5iaW5kKCdmaWxldXBsb2FkcHJvZ3Jlc3NhbGwnLCBmdW5jKTsNCg0KICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIHVwbG9hZHMgc3RhcnQsIGVxdWl2YWxlbnQgdG8gdGhlIGdsb2JhbCBhamF4U3RhcnQgZXZlbnQ6DQogICAgICAgICAgICAvLyBzdGFydDogZnVuY3Rpb24gKGUpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZHN0YXJ0JywgZnVuYyk7DQoNCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciB1cGxvYWRzIHN0b3AsIGVxdWl2YWxlbnQgdG8gdGhlIGdsb2JhbCBhamF4U3RvcCBldmVudDoNCiAgICAgICAgICAgIC8vIHN0b3A6IGZ1bmN0aW9uIChlKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRzdG9wJywgZnVuYyk7DQoNCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciBjaGFuZ2UgZXZlbnRzIG9mIHRoZSBmaWxlSW5wdXQocyk6DQogICAgICAgICAgICAvLyBjaGFuZ2U6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRjaGFuZ2UnLCBmdW5jKTsNCg0KICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIHBhc3RlIGV2ZW50cyB0byB0aGUgcGFzdGVab25lKHMpOg0KICAgICAgICAgICAgLy8gcGFzdGU6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRwYXN0ZScsIGZ1bmMpOw0KDQogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgZHJvcCBldmVudHMgb2YgdGhlIGRyb3Bab25lKHMpOg0KICAgICAgICAgICAgLy8gZHJvcDogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZGRyb3AnLCBmdW5jKTsNCg0KICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIGRyYWdvdmVyIGV2ZW50cyBvZiB0aGUgZHJvcFpvbmUocyk6DQogICAgICAgICAgICAvLyBkcmFnb3ZlcjogZnVuY3Rpb24gKGUpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZGRyYWdvdmVyJywgZnVuYyk7DQoNCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciB0aGUgc3RhcnQgb2YgZWFjaCBjaHVuayB1cGxvYWQgcmVxdWVzdDoNCiAgICAgICAgICAgIC8vIGNodW5rc2VuZDogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZGNodW5rc2VuZCcsIGZ1bmMpOw0KDQogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3Igc3VjY2Vzc2Z1bCBjaHVuayB1cGxvYWRzOg0KICAgICAgICAgICAgLy8gY2h1bmtkb25lOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5iaW5kKCdmaWxldXBsb2FkY2h1bmtkb25lJywgZnVuYyk7DQoNCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciBmYWlsZWQgKGFib3J0IG9yIGVycm9yKSBjaHVuayB1cGxvYWRzOg0KICAgICAgICAgICAgLy8gY2h1bmtmYWlsOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5iaW5kKCdmaWxldXBsb2FkY2h1bmtmYWlsJywgZnVuYyk7DQoNCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciBjb21wbGV0ZWQgKHN1Y2Nlc3MsIGFib3J0IG9yIGVycm9yKSBjaHVuayB1cGxvYWQgcmVxdWVzdHM6DQogICAgICAgICAgICAvLyBjaHVua2Fsd2F5czogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZGNodW5rYWx3YXlzJywgZnVuYyk7DQoNCiAgICAgICAgICAgIC8vIFRoZSBwbHVnaW4gb3B0aW9ucyBhcmUgdXNlZCBhcyBzZXR0aW5ncyBvYmplY3QgZm9yIHRoZSBhamF4IGNhbGxzLg0KICAgICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgalF1ZXJ5IGFqYXggc2V0dGluZ3MgcmVxdWlyZWQgZm9yIHRoZSBmaWxlIHVwbG9hZHM6DQogICAgICAgICAgICBwcm9jZXNzRGF0YTogZmFsc2UsDQogICAgICAgICAgICBjb250ZW50VHlwZTogZmFsc2UsDQogICAgICAgICAgICBjYWNoZTogZmFsc2UNCiAgICAgICAgfSwNCg0KICAgICAgICAvLyBBIGxpc3Qgb2Ygb3B0aW9ucyB0aGF0IHJlcXVpcmUgcmVpbml0aWFsaXppbmcgZXZlbnQgbGlzdGVuZXJzIGFuZC9vcg0KICAgICAgICAvLyBzcGVjaWFsIGluaXRpYWxpemF0aW9uIGNvZGU6DQogICAgICAgIF9zcGVjaWFsT3B0aW9uczogWw0KICAgICAgICAgICAgJ2ZpbGVJbnB1dCcsDQogICAgICAgICAgICAnZHJvcFpvbmUnLA0KICAgICAgICAgICAgJ3Bhc3RlWm9uZScsDQogICAgICAgICAgICAnbXVsdGlwYXJ0JywNCiAgICAgICAgICAgICdmb3JjZUlmcmFtZVRyYW5zcG9ydCcNCiAgICAgICAgXSwNCg0KICAgICAgICBfYmxvYlNsaWNlOiAkLnN1cHBvcnQuYmxvYlNsaWNlICYmIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHZhciBzbGljZSA9IHRoaXMuc2xpY2UgfHwgdGhpcy53ZWJraXRTbGljZSB8fCB0aGlzLm1velNsaWNlOw0KICAgICAgICAgICAgcmV0dXJuIHNsaWNlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7DQogICAgICAgIH0sDQoNCiAgICAgICAgX0JpdHJhdGVUaW1lcjogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgdGhpcy50aW1lc3RhbXAgPSAoKERhdGUubm93KSA/IERhdGUubm93KCkgOiAobmV3IERhdGUoKSkuZ2V0VGltZSgpKTsNCiAgICAgICAgICAgIHRoaXMubG9hZGVkID0gMDsNCiAgICAgICAgICAgIHRoaXMuYml0cmF0ZSA9IDA7DQogICAgICAgICAgICB0aGlzLmdldEJpdHJhdGUgPSBmdW5jdGlvbiAobm93LCBsb2FkZWQsIGludGVydmFsKSB7DQogICAgICAgICAgICAgICAgdmFyIHRpbWVEaWZmID0gbm93IC0gdGhpcy50aW1lc3RhbXA7DQogICAgICAgICAgICAgICAgaWYgKCF0aGlzLmJpdHJhdGUgfHwgIWludGVydmFsIHx8IHRpbWVEaWZmID4gaW50ZXJ2YWwpIHsNCiAgICAgICAgICAgICAgICAgICAgdGhpcy5iaXRyYXRlID0gKGxvYWRlZCAtIHRoaXMubG9hZGVkKSAqICgxMDAwIC8gdGltZURpZmYpICogODsNCiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkZWQgPSBsb2FkZWQ7DQogICAgICAgICAgICAgICAgICAgIHRoaXMudGltZXN0YW1wID0gbm93Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5iaXRyYXRlOw0KICAgICAgICAgICAgfTsNCiAgICAgICAgfSwNCg0KICAgICAgICBfaXNYSFJVcGxvYWQ6IGZ1bmN0aW9uIChvcHRpb25zKSB7DQogICAgICAgICAgICByZXR1cm4gIW9wdGlvbnMuZm9yY2VJZnJhbWVUcmFuc3BvcnQgJiYNCiAgICAgICAgICAgICAgICAoKCFvcHRpb25zLm11bHRpcGFydCAmJiAkLnN1cHBvcnQueGhyRmlsZVVwbG9hZCkgfHwNCiAgICAgICAgICAgICAgICAkLnN1cHBvcnQueGhyRm9ybURhdGFGaWxlVXBsb2FkKTsNCiAgICAgICAgfSwNCg0KICAgICAgICBfZ2V0Rm9ybURhdGE6IGZ1bmN0aW9uIChvcHRpb25zKSB7DQogICAgICAgICAgICB2YXIgZm9ybURhdGE7DQogICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMuZm9ybURhdGEgPT09ICdmdW5jdGlvbicpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5mb3JtRGF0YShvcHRpb25zLmZvcm0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCQuaXNBcnJheShvcHRpb25zLmZvcm1EYXRhKSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmZvcm1EYXRhOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCQudHlwZShvcHRpb25zLmZvcm1EYXRhKSA9PT0gJ29iamVjdCcpIHsNCiAgICAgICAgICAgICAgICBmb3JtRGF0YSA9IFtdOw0KICAgICAgICAgICAgICAgICQuZWFjaChvcHRpb25zLmZvcm1EYXRhLCBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHsNCiAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEucHVzaCh7bmFtZTogbmFtZSwgdmFsdWU6IHZhbHVlfSk7DQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1EYXRhOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIFtdOw0KICAgICAgICB9LA0KDQogICAgICAgIF9nZXRUb3RhbDogZnVuY3Rpb24gKGZpbGVzKSB7DQogICAgICAgICAgICB2YXIgdG90YWwgPSAwOw0KICAgICAgICAgICAgJC5lYWNoKGZpbGVzLCBmdW5jdGlvbiAoaW5kZXgsIGZpbGUpIHsNCiAgICAgICAgICAgICAgICB0b3RhbCArPSBmaWxlLnNpemUgfHwgMTsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgcmV0dXJuIHRvdGFsOw0KICAgICAgICB9LA0KDQogICAgICAgIF9pbml0UHJvZ3Jlc3NPYmplY3Q6IGZ1bmN0aW9uIChvYmopIHsNCiAgICAgICAgICAgIHZhciBwcm9ncmVzcyA9IHsNCiAgICAgICAgICAgICAgICBsb2FkZWQ6IDAsDQogICAgICAgICAgICAgICAgdG90YWw6IDAsDQogICAgICAgICAgICAgICAgYml0cmF0ZTogMA0KICAgICAgICAgICAgfTsNCiAgICAgICAgICAgIGlmIChvYmouX3Byb2dyZXNzKSB7DQogICAgICAgICAgICAgICAgJC5leHRlbmQob2JqLl9wcm9ncmVzcywgcHJvZ3Jlc3MpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBvYmouX3Byb2dyZXNzID0gcHJvZ3Jlc3M7DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQoNCiAgICAgICAgX2luaXRSZXNwb25zZU9iamVjdDogZnVuY3Rpb24gKG9iaikgew0KICAgICAgICAgICAgdmFyIHByb3A7DQogICAgICAgICAgICBpZiAob2JqLl9yZXNwb25zZSkgew0KICAgICAgICAgICAgICAgIGZvciAocHJvcCBpbiBvYmouX3Jlc3BvbnNlKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChvYmouX3Jlc3BvbnNlLmhhc093blByb3BlcnR5KHByb3ApKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgb2JqLl9yZXNwb25zZVtwcm9wXTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgb2JqLl9yZXNwb25zZSA9IHt9Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KDQogICAgICAgIF9vblByb2dyZXNzOiBmdW5jdGlvbiAoZSwgZGF0YSkgew0KICAgICAgICAgICAgaWYgKGUubGVuZ3RoQ29tcHV0YWJsZSkgew0KICAgICAgICAgICAgICAgIHZhciBub3cgPSAoKERhdGUubm93KSA/IERhdGUubm93KCkgOiAobmV3IERhdGUoKSkuZ2V0VGltZSgpKSwNCiAgICAgICAgICAgICAgICAgICAgbG9hZGVkOw0KICAgICAgICAgICAgICAgIGlmIChkYXRhLl90aW1lICYmIGRhdGEucHJvZ3Jlc3NJbnRlcnZhbCAmJg0KICAgICAgICAgICAgICAgICAgICAgICAgKG5vdyAtIGRhdGEuX3RpbWUgPCBkYXRhLnByb2dyZXNzSW50ZXJ2YWwpICYmDQogICAgICAgICAgICAgICAgICAgICAgICBlLmxvYWRlZCAhPT0gZS50b3RhbCkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGRhdGEuX3RpbWUgPSBub3c7DQogICAgICAgICAgICAgICAgbG9hZGVkID0gTWF0aC5mbG9vcigNCiAgICAgICAgICAgICAgICAgICAgZS5sb2FkZWQgLyBlLnRvdGFsICogKGRhdGEuY2h1bmtTaXplIHx8IGRhdGEuX3Byb2dyZXNzLnRvdGFsKQ0KICAgICAgICAgICAgICAgICkgKyAoZGF0YS51cGxvYWRlZEJ5dGVzIHx8IDApOw0KICAgICAgICAgICAgICAgIC8vIEFkZCB0aGUgZGlmZmVyZW5jZSBmcm9tIHRoZSBwcmV2aW91c2x5IGxvYWRlZCBzdGF0ZQ0KICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBnbG9iYWwgbG9hZGVkIGNvdW50ZXI6DQogICAgICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3MubG9hZGVkICs9IChsb2FkZWQgLSBkYXRhLl9wcm9ncmVzcy5sb2FkZWQpOw0KICAgICAgICAgICAgICAgIHRoaXMuX3Byb2dyZXNzLmJpdHJhdGUgPSB0aGlzLl9iaXRyYXRlVGltZXIuZ2V0Qml0cmF0ZSgNCiAgICAgICAgICAgICAgICAgICAgbm93LA0KICAgICAgICAgICAgICAgICAgICB0aGlzLl9wcm9ncmVzcy5sb2FkZWQsDQogICAgICAgICAgICAgICAgICAgIGRhdGEuYml0cmF0ZUludGVydmFsDQogICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICBkYXRhLl9wcm9ncmVzcy5sb2FkZWQgPSBkYXRhLmxvYWRlZCA9IGxvYWRlZDsNCiAgICAgICAgICAgICAgICBkYXRhLl9wcm9ncmVzcy5iaXRyYXRlID0gZGF0YS5iaXRyYXRlID0gZGF0YS5fYml0cmF0ZVRpbWVyLmdldEJpdHJhdGUoDQogICAgICAgICAgICAgICAgICAgIG5vdywNCiAgICAgICAgICAgICAgICAgICAgbG9hZGVkLA0KICAgICAgICAgICAgICAgICAgICBkYXRhLmJpdHJhdGVJbnRlcnZhbA0KICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgLy8gVHJpZ2dlciBhIGN1c3RvbSBwcm9ncmVzcyBldmVudCB3aXRoIGEgdG90YWwgZGF0YSBwcm9wZXJ0eSBzZXQNCiAgICAgICAgICAgICAgICAvLyB0byB0aGUgZmlsZSBzaXplKHMpIG9mIHRoZSBjdXJyZW50IHVwbG9hZCBhbmQgYSBsb2FkZWQgZGF0YQ0KICAgICAgICAgICAgICAgIC8vIHByb3BlcnR5IGNhbGN1bGF0ZWQgYWNjb3JkaW5nbHk6DQogICAgICAgICAgICAgICAgdGhpcy5fdHJpZ2dlcigncHJvZ3Jlc3MnLCBlLCBkYXRhKTsNCiAgICAgICAgICAgICAgICAvLyBUcmlnZ2VyIGEgZ2xvYmFsIHByb2dyZXNzIGV2ZW50IGZvciBhbGwgY3VycmVudCBmaWxlIHVwbG9hZHMsDQogICAgICAgICAgICAgICAgLy8gaW5jbHVkaW5nIGFqYXggY2FsbHMgcXVldWVkIGZvciBzZXF1ZW50aWFsIGZpbGUgdXBsb2FkczoNCiAgICAgICAgICAgICAgICB0aGlzLl90cmlnZ2VyKCdwcm9ncmVzc2FsbCcsIGUsIHRoaXMuX3Byb2dyZXNzKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCg0KICAgICAgICBfaW5pdFByb2dyZXNzTGlzdGVuZXI6IGZ1bmN0aW9uIChvcHRpb25zKSB7DQogICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsDQogICAgICAgICAgICAgICAgeGhyID0gb3B0aW9ucy54aHIgPyBvcHRpb25zLnhocigpIDogJC5hamF4U2V0dGluZ3MueGhyKCk7DQogICAgICAgICAgICAvLyBBY2Nlc3NzIHRvIHRoZSBuYXRpdmUgWEhSIG9iamVjdCBpcyByZXF1aXJlZCB0byBhZGQgZXZlbnQgbGlzdGVuZXJzDQogICAgICAgICAgICAvLyBmb3IgdGhlIHVwbG9hZCBwcm9ncmVzcyBldmVudDoNCiAgICAgICAgICAgIGlmICh4aHIudXBsb2FkKSB7DQogICAgICAgICAgICAgICAgJCh4aHIudXBsb2FkKS5iaW5kKCdwcm9ncmVzcycsIGZ1bmN0aW9uIChlKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBvZSA9IGUub3JpZ2luYWxFdmVudDsNCiAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBwcm9ncmVzcyBldmVudCBwcm9wZXJ0aWVzIGdldCBjb3BpZWQgb3ZlcjoNCiAgICAgICAgICAgICAgICAgICAgZS5sZW5ndGhDb21wdXRhYmxlID0gb2UubGVuZ3RoQ29tcHV0YWJsZTsNCiAgICAgICAgICAgICAgICAgICAgZS5sb2FkZWQgPSBvZS5sb2FkZWQ7DQogICAgICAgICAgICAgICAgICAgIGUudG90YWwgPSBvZS50b3RhbDsNCiAgICAgICAgICAgICAgICAgICAgdGhhdC5fb25Qcm9ncmVzcyhlLCBvcHRpb25zKTsNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICBvcHRpb25zLnhociA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHhocjsNCiAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KDQogICAgICAgIF9pc0luc3RhbmNlT2Y6IGZ1bmN0aW9uICh0eXBlLCBvYmopIHsNCiAgICAgICAgICAgIC8vIENyb3NzLWZyYW1lIGluc3RhbmNlb2YgY2hlY2sNCiAgICAgICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgJyArIHR5cGUgKyAnXSc7DQogICAgICAgIH0sDQoNCiAgICAgICAgX2luaXRYSFJEYXRhOiBmdW5jdGlvbiAob3B0aW9ucykgew0KICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLA0KICAgICAgICAgICAgICAgIGZvcm1EYXRhLA0KICAgICAgICAgICAgICAgIGZpbGUgPSBvcHRpb25zLmZpbGVzWzBdLA0KICAgICAgICAgICAgICAgIC8vIElnbm9yZSBub24tbXVsdGlwYXJ0IHNldHRpbmcgaWYgbm90IHN1cHBvcnRlZDoNCiAgICAgICAgICAgICAgICBtdWx0aXBhcnQgPSBvcHRpb25zLm11bHRpcGFydCB8fCAhJC5zdXBwb3J0LnhockZpbGVVcGxvYWQsDQogICAgICAgICAgICAgICAgcGFyYW1OYW1lID0gb3B0aW9ucy5wYXJhbU5hbWVbMF07DQogICAgICAgICAgICBvcHRpb25zLmhlYWRlcnMgPSBvcHRpb25zLmhlYWRlcnMgfHwge307DQogICAgICAgICAgICBpZiAob3B0aW9ucy5jb250ZW50UmFuZ2UpIHsNCiAgICAgICAgICAgICAgICBvcHRpb25zLmhlYWRlcnNbJ0NvbnRlbnQtUmFuZ2UnXSA9IG9wdGlvbnMuY29udGVudFJhbmdlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCFtdWx0aXBhcnQgfHwgb3B0aW9ucy5ibG9iIHx8ICF0aGlzLl9pc0luc3RhbmNlT2YoJ0ZpbGUnLCBmaWxlKSkgew0KICAgICAgICAgICAgICAgIG9wdGlvbnMuaGVhZGVyc1snQ29udGVudC1EaXNwb3NpdGlvbiddID0gJ2F0dGFjaG1lbnQ7IGZpbGVuYW1lPSInICsNCiAgICAgICAgICAgICAgICAgICAgZW5jb2RlVVJJKGZpbGUubmFtZSkgKyAnIic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoIW11bHRpcGFydCkgew0KICAgICAgICAgICAgICAgIG9wdGlvbnMuY29udGVudFR5cGUgPSBmaWxlLnR5cGU7DQogICAgICAgICAgICAgICAgb3B0aW9ucy5kYXRhID0gb3B0aW9ucy5ibG9iIHx8IGZpbGU7DQogICAgICAgICAgICB9IGVsc2UgaWYgKCQuc3VwcG9ydC54aHJGb3JtRGF0YUZpbGVVcGxvYWQpIHsNCiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5wb3N0TWVzc2FnZSkgew0KICAgICAgICAgICAgICAgICAgICAvLyB3aW5kb3cucG9zdE1lc3NhZ2UgZG9lcyBub3QgYWxsb3cgc2VuZGluZyBGb3JtRGF0YQ0KICAgICAgICAgICAgICAgICAgICAvLyBvYmplY3RzLCBzbyB3ZSBqdXN0IGFkZCB0aGUgRmlsZS9CbG9iIG9iamVjdHMgdG8NCiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGZvcm1EYXRhIGFycmF5IGFuZCBsZXQgdGhlIHBvc3RNZXNzYWdlIHdpbmRvdw0KICAgICAgICAgICAgICAgICAgICAvLyBjcmVhdGUgdGhlIEZvcm1EYXRhIG9iamVjdCBvdXQgb2YgdGhpcyBhcnJheToNCiAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEgPSB0aGlzLl9nZXRGb3JtRGF0YShvcHRpb25zKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuYmxvYikgew0KICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEucHVzaCh7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcGFyYW1OYW1lLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBvcHRpb25zLmJsb2INCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKG9wdGlvbnMuZmlsZXMsIGZ1bmN0aW9uIChpbmRleCwgZmlsZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLnB1c2goew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBvcHRpb25zLnBhcmFtTmFtZVtpbmRleF0gfHwgcGFyYW1OYW1lLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZmlsZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5faXNJbnN0YW5jZU9mKCdGb3JtRGF0YScsIG9wdGlvbnMuZm9ybURhdGEpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YSA9IG9wdGlvbnMuZm9ybURhdGE7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKHRoaXMuX2dldEZvcm1EYXRhKG9wdGlvbnMpLCBmdW5jdGlvbiAoaW5kZXgsIGZpZWxkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGZpZWxkLm5hbWUsIGZpZWxkLnZhbHVlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmJsb2IpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChwYXJhbU5hbWUsIG9wdGlvbnMuYmxvYiwgZmlsZS5uYW1lKTsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICQuZWFjaChvcHRpb25zLmZpbGVzLCBmdW5jdGlvbiAoaW5kZXgsIGZpbGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGNoZWNrIGFsbG93cyB0aGUgdGVzdHMgdG8gcnVuIHdpdGgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdW1teSBvYmplY3RzOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Ll9pc0luc3RhbmNlT2YoJ0ZpbGUnLCBmaWxlKSB8fA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5faXNJbnN0YW5jZU9mKCdCbG9iJywgZmlsZSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wYXJhbU5hbWVbaW5kZXhdIHx8IHBhcmFtTmFtZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLm5hbWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBvcHRpb25zLmRhdGEgPSBmb3JtRGF0YTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIC8vIEJsb2IgcmVmZXJlbmNlIGlzIG5vdCBuZWVkZWQgYW55bW9yZSwgZnJlZSBtZW1vcnk6DQogICAgICAgICAgICBvcHRpb25zLmJsb2IgPSBudWxsOw0KICAgICAgICB9LA0KDQogICAgICAgIF9pbml0SWZyYW1lU2V0dGluZ3M6IGZ1bmN0aW9uIChvcHRpb25zKSB7DQogICAgICAgICAgICB2YXIgdGFyZ2V0SG9zdCA9ICQoJzxhPjwvYT4nKS5wcm9wKCdocmVmJywgb3B0aW9ucy51cmwpLnByb3AoJ2hvc3QnKTsNCiAgICAgICAgICAgIC8vIFNldHRpbmcgdGhlIGRhdGFUeXBlIHRvIGlmcmFtZSBlbmFibGVzIHRoZSBpZnJhbWUgdHJhbnNwb3J0Og0KICAgICAgICAgICAgb3B0aW9ucy5kYXRhVHlwZSA9ICdpZnJhbWUgJyArIChvcHRpb25zLmRhdGFUeXBlIHx8ICcnKTsNCiAgICAgICAgICAgIC8vIFRoZSBpZnJhbWUgdHJhbnNwb3J0IGFjY2VwdHMgYSBzZXJpYWxpemVkIGFycmF5IGFzIGZvcm0gZGF0YToNCiAgICAgICAgICAgIG9wdGlvbnMuZm9ybURhdGEgPSB0aGlzLl9nZXRGb3JtRGF0YShvcHRpb25zKTsNCiAgICAgICAgICAgIC8vIEFkZCByZWRpcmVjdCB1cmwgdG8gZm9ybSBkYXRhIG9uIGNyb3NzLWRvbWFpbiB1cGxvYWRzOg0KICAgICAgICAgICAgaWYgKG9wdGlvbnMucmVkaXJlY3QgJiYgdGFyZ2V0SG9zdCAmJiB0YXJnZXRIb3N0ICE9PSBsb2NhdGlvbi5ob3N0KSB7DQogICAgICAgICAgICAgICAgb3B0aW9ucy5mb3JtRGF0YS5wdXNoKHsNCiAgICAgICAgICAgICAgICAgICAgbmFtZTogb3B0aW9ucy5yZWRpcmVjdFBhcmFtTmFtZSB8fCAncmVkaXJlY3QnLA0KICAgICAgICAgICAgICAgICAgICB2YWx1ZTogb3B0aW9ucy5yZWRpcmVjdA0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KDQogICAgICAgIF9pbml0RGF0YVNldHRpbmdzOiBmdW5jdGlvbiAob3B0aW9ucykgew0KICAgICAgICAgICAgaWYgKHRoaXMuX2lzWEhSVXBsb2FkKG9wdGlvbnMpKSB7DQogICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9jaHVua2VkVXBsb2FkKG9wdGlvbnMsIHRydWUpKSB7DQogICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5kYXRhKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbml0WEhSRGF0YShvcHRpb25zKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbml0UHJvZ3Jlc3NMaXN0ZW5lcihvcHRpb25zKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMucG9zdE1lc3NhZ2UpIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gU2V0dGluZyB0aGUgZGF0YVR5cGUgdG8gcG9zdG1lc3NhZ2UgZW5hYmxlcyB0aGUNCiAgICAgICAgICAgICAgICAgICAgLy8gcG9zdE1lc3NhZ2UgdHJhbnNwb3J0Og0KICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmRhdGFUeXBlID0gJ3Bvc3RtZXNzYWdlICcgKyAob3B0aW9ucy5kYXRhVHlwZSB8fCAnJyk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICB0aGlzLl9pbml0SWZyYW1lU2V0dGluZ3Mob3B0aW9ucyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQoNCiAgICAgICAgX2dldFBhcmFtTmFtZTogZnVuY3Rpb24gKG9wdGlvbnMpIHsNCiAgICAgICAgICAgIHZhciBmaWxlSW5wdXQgPSAkKG9wdGlvbnMuZmlsZUlucHV0KSwNCiAgICAgICAgICAgICAgICBwYXJhbU5hbWUgPSBvcHRpb25zLnBhcmFtTmFtZTsNCiAgICAgICAgICAgIGlmICghcGFyYW1OYW1lKSB7DQogICAgICAgICAgICAgICAgcGFyYW1OYW1lID0gW107DQogICAgICAgICAgICAgICAgZmlsZUlucHV0LmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgaW5wdXQgPSAkKHRoaXMpLA0KICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGlucHV0LnByb3AoJ25hbWUnKSB8fCAnZmlsZXNbXScsDQogICAgICAgICAgICAgICAgICAgICAgICBpID0gKGlucHV0LnByb3AoJ2ZpbGVzJykgfHwgWzFdKS5sZW5ndGg7DQogICAgICAgICAgICAgICAgICAgIHdoaWxlIChpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBwYXJhbU5hbWUucHVzaChuYW1lKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGkgLT0gMTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIGlmICghcGFyYW1OYW1lLmxlbmd0aCkgew0KICAgICAgICAgICAgICAgICAgICBwYXJhbU5hbWUgPSBbZmlsZUlucHV0LnByb3AoJ25hbWUnKSB8fCAnZmlsZXNbXSddOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0gZWxzZSBpZiAoISQuaXNBcnJheShwYXJhbU5hbWUpKSB7DQogICAgICAgICAgICAgICAgcGFyYW1OYW1lID0gW3BhcmFtTmFtZV07DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gcGFyYW1OYW1lOw0KICAgICAgICB9LA0KDQogICAgICAgIF9pbml0Rm9ybVNldHRpbmdzOiBmdW5jdGlvbiAob3B0aW9ucykgew0KICAgICAgICAgICAgLy8gUmV0cmlldmUgbWlzc2luZyBvcHRpb25zIGZyb20gdGhlIGlucHV0IGZpZWxkIGFuZCB0aGUNCiAgICAgICAgICAgIC8vIGFzc29jaWF0ZWQgZm9ybSwgaWYgYXZhaWxhYmxlOg0KICAgICAgICAgICAgaWYgKCFvcHRpb25zLmZvcm0gfHwgIW9wdGlvbnMuZm9ybS5sZW5ndGgpIHsNCiAgICAgICAgICAgICAgICBvcHRpb25zLmZvcm0gPSAkKG9wdGlvbnMuZmlsZUlucHV0LnByb3AoJ2Zvcm0nKSk7DQogICAgICAgICAgICAgICAgLy8gSWYgdGhlIGdpdmVuIGZpbGUgaW5wdXQgZG9lc24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgZm9ybSwNCiAgICAgICAgICAgICAgICAvLyB1c2UgdGhlIGRlZmF1bHQgd2lkZ2V0IGZpbGUgaW5wdXQncyBmb3JtOg0KICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5mb3JtLmxlbmd0aCkgew0KICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmZvcm0gPSAkKHRoaXMub3B0aW9ucy5maWxlSW5wdXQucHJvcCgnZm9ybScpKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBvcHRpb25zLnBhcmFtTmFtZSA9IHRoaXMuX2dldFBhcmFtTmFtZShvcHRpb25zKTsNCiAgICAgICAgICAgIGlmICghb3B0aW9ucy51cmwpIHsNCiAgICAgICAgICAgICAgICBvcHRpb25zLnVybCA9IG9wdGlvbnMuZm9ybS5wcm9wKCdhY3Rpb24nKSB8fCBsb2NhdGlvbi5ocmVmOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLy8gVGhlIEhUVFAgcmVxdWVzdCBtZXRob2QgbXVzdCBiZSAiUE9TVCIgb3IgIlBVVCI6DQogICAgICAgICAgICBvcHRpb25zLnR5cGUgPSAob3B0aW9ucy50eXBlIHx8IG9wdGlvbnMuZm9ybS5wcm9wKCdtZXRob2QnKSB8fCAnJykNCiAgICAgICAgICAgICAgICAudG9VcHBlckNhc2UoKTsNCiAgICAgICAgICAgIGlmIChvcHRpb25zLnR5cGUgIT09ICdQT1NUJyAmJiBvcHRpb25zLnR5cGUgIT09ICdQVVQnICYmDQogICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudHlwZSAhPT0gJ1BBVENIJykgew0KICAgICAgICAgICAgICAgIG9wdGlvbnMudHlwZSA9ICdQT1NUJzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICghb3B0aW9ucy5mb3JtQWNjZXB0Q2hhcnNldCkgew0KICAgICAgICAgICAgICAgIG9wdGlvbnMuZm9ybUFjY2VwdENoYXJzZXQgPSBvcHRpb25zLmZvcm0uYXR0cignYWNjZXB0LWNoYXJzZXQnKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCg0KICAgICAgICBfZ2V0QUpBWFNldHRpbmdzOiBmdW5jdGlvbiAoZGF0YSkgew0KICAgICAgICAgICAgdmFyIG9wdGlvbnMgPSAkLmV4dGVuZCh7fSwgdGhpcy5vcHRpb25zLCBkYXRhKTsNCiAgICAgICAgICAgIHRoaXMuX2luaXRGb3JtU2V0dGluZ3Mob3B0aW9ucyk7DQogICAgICAgICAgICB0aGlzLl9pbml0RGF0YVNldHRpbmdzKG9wdGlvbnMpOw0KICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnM7DQogICAgICAgIH0sDQoNCiAgICAgICAgLy8galF1ZXJ5IDEuNiBkb2Vzbid0IHByb3ZpZGUgLnN0YXRlKCksDQogICAgICAgIC8vIHdoaWxlIGpRdWVyeSAxLjgrIHJlbW92ZWQgLmlzUmVqZWN0ZWQoKSBhbmQgLmlzUmVzb2x2ZWQoKToNCiAgICAgICAgX2dldERlZmVycmVkU3RhdGU6IGZ1bmN0aW9uIChkZWZlcnJlZCkgew0KICAgICAgICAgICAgaWYgKGRlZmVycmVkLnN0YXRlKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnN0YXRlKCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoZGVmZXJyZWQuaXNSZXNvbHZlZCgpKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICdyZXNvbHZlZCc7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoZGVmZXJyZWQuaXNSZWplY3RlZCgpKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICdyZWplY3RlZCc7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gJ3BlbmRpbmcnOw0KICAgICAgICB9LA0KDQogICAgICAgIC8vIE1hcHMganFYSFIgY2FsbGJhY2tzIHRvIHRoZSBlcXVpdmFsZW50DQogICAgICAgIC8vIG1ldGhvZHMgb2YgdGhlIGdpdmVuIFByb21pc2Ugb2JqZWN0Og0KICAgICAgICBfZW5oYW5jZVByb21pc2U6IGZ1bmN0aW9uIChwcm9taXNlKSB7DQogICAgICAgICAgICBwcm9taXNlLnN1Y2Nlc3MgPSBwcm9taXNlLmRvbmU7DQogICAgICAgICAgICBwcm9taXNlLmVycm9yID0gcHJvbWlzZS5mYWlsOw0KICAgICAgICAgICAgcHJvbWlzZS5jb21wbGV0ZSA9IHByb21pc2UuYWx3YXlzOw0KICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7DQogICAgICAgIH0sDQoNCiAgICAgICAgLy8gQ3JlYXRlcyBhbmQgcmV0dXJucyBhIFByb21pc2Ugb2JqZWN0IGVuaGFuY2VkIHdpdGgNCiAgICAgICAgLy8gdGhlIGpxWEhSIG1ldGhvZHMgYWJvcnQsIHN1Y2Nlc3MsIGVycm9yIGFuZCBjb21wbGV0ZToNCiAgICAgICAgX2dldFhIUlByb21pc2U6IGZ1bmN0aW9uIChyZXNvbHZlT3JSZWplY3QsIGNvbnRleHQsIGFyZ3MpIHsNCiAgICAgICAgICAgIHZhciBkZmQgPSAkLkRlZmVycmVkKCksDQogICAgICAgICAgICAgICAgcHJvbWlzZSA9IGRmZC5wcm9taXNlKCk7DQogICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dCB8fCB0aGlzLm9wdGlvbnMuY29udGV4dCB8fCBwcm9taXNlOw0KICAgICAgICAgICAgaWYgKHJlc29sdmVPclJlamVjdCA9PT0gdHJ1ZSkgew0KICAgICAgICAgICAgICAgIGRmZC5yZXNvbHZlV2l0aChjb250ZXh0LCBhcmdzKTsNCiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzb2x2ZU9yUmVqZWN0ID09PSBmYWxzZSkgew0KICAgICAgICAgICAgICAgIGRmZC5yZWplY3RXaXRoKGNvbnRleHQsIGFyZ3MpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcHJvbWlzZS5hYm9ydCA9IGRmZC5wcm9taXNlOw0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VuaGFuY2VQcm9taXNlKHByb21pc2UpOw0KICAgICAgICB9LA0KDQogICAgICAgIC8vIEFkZHMgY29udmVuaWVuY2UgbWV0aG9kcyB0byB0aGUgZGF0YSBjYWxsYmFjayBhcmd1bWVudDoNCiAgICAgICAgX2FkZENvbnZlbmllbmNlTWV0aG9kczogZnVuY3Rpb24gKGUsIGRhdGEpIHsNCiAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcywNCiAgICAgICAgICAgICAgICBnZXRQcm9taXNlID0gZnVuY3Rpb24gKGRhdGEpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQuRGVmZXJyZWQoKS5yZXNvbHZlV2l0aCh0aGF0LCBbZGF0YV0pLnByb21pc2UoKTsNCiAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgZGF0YS5wcm9jZXNzID0gZnVuY3Rpb24gKHJlc29sdmVGdW5jLCByZWplY3RGdW5jKSB7DQogICAgICAgICAgICAgICAgaWYgKHJlc29sdmVGdW5jIHx8IHJlamVjdEZ1bmMpIHsNCiAgICAgICAgICAgICAgICAgICAgZGF0YS5fcHJvY2Vzc1F1ZXVlID0gdGhpcy5fcHJvY2Vzc1F1ZXVlID0NCiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLl9wcm9jZXNzUXVldWUgfHwgZ2V0UHJvbWlzZSh0aGlzKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZShyZXNvbHZlRnVuYywgcmVqZWN0RnVuYyk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9wcm9jZXNzUXVldWUgfHwgZ2V0UHJvbWlzZSh0aGlzKTsNCiAgICAgICAgICAgIH07DQogICAgICAgICAgICBkYXRhLnN1Ym1pdCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0ZSgpICE9PSAncGVuZGluZycpIHsNCiAgICAgICAgICAgICAgICAgICAgZGF0YS5qcVhIUiA9IHRoaXMuanFYSFIgPQ0KICAgICAgICAgICAgICAgICAgICAgICAgKHRoYXQuX3RyaWdnZXIoJ3N1Ym1pdCcsIGUsIHRoaXMpICE9PSBmYWxzZSkgJiYNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX29uU2VuZChlLCB0aGlzKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuanFYSFIgfHwgdGhhdC5fZ2V0WEhSUHJvbWlzZSgpOw0KICAgICAgICAgICAgfTsNCiAgICAgICAgICAgIGRhdGEuYWJvcnQgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgaWYgKHRoaXMuanFYSFIpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuanFYSFIuYWJvcnQoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcmV0dXJuIHRoYXQuX2dldFhIUlByb21pc2UoKTsNCiAgICAgICAgICAgIH07DQogICAgICAgICAgICBkYXRhLnN0YXRlID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgIGlmICh0aGlzLmpxWEhSKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGF0Ll9nZXREZWZlcnJlZFN0YXRlKHRoaXMuanFYSFIpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAodGhpcy5fcHJvY2Vzc1F1ZXVlKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGF0Ll9nZXREZWZlcnJlZFN0YXRlKHRoaXMuX3Byb2Nlc3NRdWV1ZSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfTsNCiAgICAgICAgICAgIGRhdGEucHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2dyZXNzOw0KICAgICAgICAgICAgfTsNCiAgICAgICAgICAgIGRhdGEucmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNlOw0KICAgICAgICAgICAgfTsNCiAgICAgICAgfSwNCg0KICAgICAgICAvLyBQYXJzZXMgdGhlIFJhbmdlIGhlYWRlciBmcm9tIHRoZSBzZXJ2ZXIgcmVzcG9uc2UNCiAgICAgICAgLy8gYW5kIHJldHVybnMgdGhlIHVwbG9hZGVkIGJ5dGVzOg0KICAgICAgICBfZ2V0VXBsb2FkZWRCeXRlczogZnVuY3Rpb24gKGpxWEhSKSB7DQogICAgICAgICAgICB2YXIgcmFuZ2UgPSBqcVhIUi5nZXRSZXNwb25zZUhlYWRlcignUmFuZ2UnKSwNCiAgICAgICAgICAgICAgICBwYXJ0cyA9IHJhbmdlICYmIHJhbmdlLnNwbGl0KCctJyksDQogICAgICAgICAgICAgICAgdXBwZXJCeXRlc1BvcyA9IHBhcnRzICYmIHBhcnRzLmxlbmd0aCA+IDEgJiYNCiAgICAgICAgICAgICAgICAgICAgcGFyc2VJbnQocGFydHNbMV0sIDEwKTsNCiAgICAgICAgICAgIHJldHVybiB1cHBlckJ5dGVzUG9zICYmIHVwcGVyQnl0ZXNQb3MgKyAxOw0KICAgICAgICB9LA0KDQogICAgICAgIC8vIFVwbG9hZHMgYSBmaWxlIGluIG11bHRpcGxlLCBzZXF1ZW50aWFsIHJlcXVlc3RzDQogICAgICAgIC8vIGJ5IHNwbGl0dGluZyB0aGUgZmlsZSB1cCBpbiBtdWx0aXBsZSBibG9iIGNodW5rcy4NCiAgICAgICAgLy8gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgdHJ1ZSwgb25seSB0ZXN0cyBpZiB0aGUgZmlsZQ0KICAgICAgICAvLyBzaG91bGQgYmUgdXBsb2FkZWQgaW4gY2h1bmtzLCBidXQgZG9lcyBub3QgaW52b2tlIGFueQ0KICAgICAgICAvLyB1cGxvYWQgcmVxdWVzdHM6DQogICAgICAgIF9jaHVua2VkVXBsb2FkOiBmdW5jdGlvbiAob3B0aW9ucywgdGVzdE9ubHkpIHsNCiAgICAgICAgICAgIG9wdGlvbnMudXBsb2FkZWRCeXRlcyA9IG9wdGlvbnMudXBsb2FkZWRCeXRlcyB8fCAwOw0KICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLA0KICAgICAgICAgICAgICAgIGZpbGUgPSBvcHRpb25zLmZpbGVzWzBdLA0KICAgICAgICAgICAgICAgIGZzID0gZmlsZS5zaXplLA0KICAgICAgICAgICAgICAgIHViID0gb3B0aW9ucy51cGxvYWRlZEJ5dGVzLA0KICAgICAgICAgICAgICAgIG1jcyA9IG9wdGlvbnMubWF4Q2h1bmtTaXplIHx8IGZzLA0KICAgICAgICAgICAgICAgIHNsaWNlID0gdGhpcy5fYmxvYlNsaWNlLA0KICAgICAgICAgICAgICAgIGRmZCA9ICQuRGVmZXJyZWQoKSwNCiAgICAgICAgICAgICAgICBwcm9taXNlID0gZGZkLnByb21pc2UoKSwNCiAgICAgICAgICAgICAgICBqcVhIUiwNCiAgICAgICAgICAgICAgICB1cGxvYWQ7DQogICAgICAgICAgICBpZiAoISh0aGlzLl9pc1hIUlVwbG9hZChvcHRpb25zKSAmJiBzbGljZSAmJiAodWIgfHwgbWNzIDwgZnMpKSB8fA0KICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmRhdGEpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAodGVzdE9ubHkpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICh1YiA+PSBmcykgew0KICAgICAgICAgICAgICAgIGZpbGUuZXJyb3IgPSBvcHRpb25zLmkxOG4oJ3VwbG9hZGVkQnl0ZXMnKTsNCiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0WEhSUHJvbWlzZSgNCiAgICAgICAgICAgICAgICAgICAgZmFsc2UsDQogICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuY29udGV4dCwNCiAgICAgICAgICAgICAgICAgICAgW251bGwsICdlcnJvcicsIGZpbGUuZXJyb3JdDQogICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIC8vIFRoZSBjaHVuayB1cGxvYWQgbWV0aG9kOg0KICAgICAgICAgICAgdXBsb2FkID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgIC8vIENsb25lIHRoZSBvcHRpb25zIG9iamVjdCBmb3IgZWFjaCBjaHVuayB1cGxvYWQ6DQogICAgICAgICAgICAgICAgdmFyIG8gPSAkLmV4dGVuZCh7fSwgb3B0aW9ucyksDQogICAgICAgICAgICAgICAgICAgIGN1cnJlbnRMb2FkZWQgPSBvLl9wcm9ncmVzcy5sb2FkZWQ7DQogICAgICAgICAgICAgICAgby5ibG9iID0gc2xpY2UuY2FsbCgNCiAgICAgICAgICAgICAgICAgICAgZmlsZSwNCiAgICAgICAgICAgICAgICAgICAgdWIsDQogICAgICAgICAgICAgICAgICAgIHViICsgbWNzLA0KICAgICAgICAgICAgICAgICAgICBmaWxlLnR5cGUNCiAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgIC8vIFN0b3JlIHRoZSBjdXJyZW50IGNodW5rIHNpemUsIGFzIHRoZSBibG9iIGl0c2VsZg0KICAgICAgICAgICAgICAgIC8vIHdpbGwgYmUgZGVyZWZlcmVuY2VkIGFmdGVyIGRhdGEgcHJvY2Vzc2luZzoNCiAgICAgICAgICAgICAgICBvLmNodW5rU2l6ZSA9IG8uYmxvYi5zaXplOw0KICAgICAgICAgICAgICAgIC8vIEV4cG9zZSB0aGUgY2h1bmsgYnl0ZXMgcG9zaXRpb24gcmFuZ2U6DQogICAgICAgICAgICAgICAgby5jb250ZW50UmFuZ2UgPSAnYnl0ZXMgJyArIHViICsgJy0nICsNCiAgICAgICAgICAgICAgICAgICAgKHViICsgby5jaHVua1NpemUgLSAxKSArICcvJyArIGZzOw0KICAgICAgICAgICAgICAgIC8vIFByb2Nlc3MgdGhlIHVwbG9hZCBkYXRhICh0aGUgYmxvYiBhbmQgcG90ZW50aWFsIGZvcm0gZGF0YSk6DQogICAgICAgICAgICAgICAgdGhhdC5faW5pdFhIUkRhdGEobyk7DQogICAgICAgICAgICAgICAgLy8gQWRkIHByb2dyZXNzIGxpc3RlbmVycyBmb3IgdGhpcyBjaHVuayB1cGxvYWQ6DQogICAgICAgICAgICAgICAgdGhhdC5faW5pdFByb2dyZXNzTGlzdGVuZXIobyk7DQogICAgICAgICAgICAgICAganFYSFIgPSAoKHRoYXQuX3RyaWdnZXIoJ2NodW5rc2VuZCcsIG51bGwsIG8pICE9PSBmYWxzZSAmJiAkLmFqYXgobykpIHx8DQogICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9nZXRYSFJQcm9taXNlKGZhbHNlLCBvLmNvbnRleHQpKQ0KICAgICAgICAgICAgICAgICAgICAuZG9uZShmdW5jdGlvbiAocmVzdWx0LCB0ZXh0U3RhdHVzLCBqcVhIUikgew0KICAgICAgICAgICAgICAgICAgICAgICAgdWIgPSB0aGF0Ll9nZXRVcGxvYWRlZEJ5dGVzKGpxWEhSKSB8fA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1YiArIG8uY2h1bmtTaXplKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIHByb2dyZXNzIGV2ZW50IGlmIG5vIGZpbmFsIHByb2dyZXNzIGV2ZW50DQogICAgICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIGxvYWRlZCBlcXVhbGluZyB0b3RhbCBoYXMgYmVlbiB0cmlnZ2VyZWQNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciB0aGlzIGNodW5rOg0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRMb2FkZWQgKyBvLmNodW5rU2l6ZSAtIG8uX3Byb2dyZXNzLmxvYWRlZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX29uUHJvZ3Jlc3MoJC5FdmVudCgncHJvZ3Jlc3MnLCB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aENvbXB1dGFibGU6IHRydWUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlZDogdWIgLSBvLnVwbG9hZGVkQnl0ZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsOiB1YiAtIG8udXBsb2FkZWRCeXRlcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBvKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXBsb2FkZWRCeXRlcyA9IG8udXBsb2FkZWRCeXRlcyA9IHViOw0KICAgICAgICAgICAgICAgICAgICAgICAgby5yZXN1bHQgPSByZXN1bHQ7DQogICAgICAgICAgICAgICAgICAgICAgICBvLnRleHRTdGF0dXMgPSB0ZXh0U3RhdHVzOw0KICAgICAgICAgICAgICAgICAgICAgICAgby5qcVhIUiA9IGpxWEhSOw0KICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignY2h1bmtkb25lJywgbnVsbCwgbyk7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdjaHVua2Fsd2F5cycsIG51bGwsIG8pOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHViIDwgZnMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGaWxlIHVwbG9hZCBub3QgeWV0IGNvbXBsZXRlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRpbnVlIHdpdGggdGhlIG5leHQgY2h1bms6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRmZC5yZXNvbHZlV2l0aCgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5jb250ZXh0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVzdWx0LCB0ZXh0U3RhdHVzLCBqcVhIUl0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9KQ0KICAgICAgICAgICAgICAgICAgICAuZmFpbChmdW5jdGlvbiAoanFYSFIsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBvLmpxWEhSID0ganFYSFI7DQogICAgICAgICAgICAgICAgICAgICAgICBvLnRleHRTdGF0dXMgPSB0ZXh0U3RhdHVzOw0KICAgICAgICAgICAgICAgICAgICAgICAgby5lcnJvclRocm93biA9IGVycm9yVGhyb3duOw0KICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignY2h1bmtmYWlsJywgbnVsbCwgbyk7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdjaHVua2Fsd2F5cycsIG51bGwsIG8pOw0KICAgICAgICAgICAgICAgICAgICAgICAgZGZkLnJlamVjdFdpdGgoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5jb250ZXh0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd25dDQogICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIH07DQogICAgICAgICAgICB0aGlzLl9lbmhhbmNlUHJvbWlzZShwcm9taXNlKTsNCiAgICAgICAgICAgIHByb21pc2UuYWJvcnQgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGpxWEhSLmFib3J0KCk7DQogICAgICAgICAgICB9Ow0KICAgICAgICAgICAgdXBsb2FkKCk7DQogICAgICAgICAgICByZXR1cm4gcHJvbWlzZTsNCiAgICAgICAgfSwNCg0KICAgICAgICBfYmVmb3JlU2VuZDogZnVuY3Rpb24gKGUsIGRhdGEpIHsNCiAgICAgICAgICAgIGlmICh0aGlzLl9hY3RpdmUgPT09IDApIHsNCiAgICAgICAgICAgICAgICAvLyB0aGUgc3RhcnQgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIHdoZW4gYW4gdXBsb2FkIHN0YXJ0cw0KICAgICAgICAgICAgICAgIC8vIGFuZCBubyBvdGhlciB1cGxvYWRzIGFyZSBjdXJyZW50bHkgcnVubmluZywNCiAgICAgICAgICAgICAgICAvLyBlcXVpdmFsZW50IHRvIHRoZSBnbG9iYWwgYWpheFN0YXJ0IGV2ZW50Og0KICAgICAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIoJ3N0YXJ0Jyk7DQogICAgICAgICAgICAgICAgLy8gU2V0IHRpbWVyIGZvciBnbG9iYWwgYml0cmF0ZSBwcm9ncmVzcyBjYWxjdWxhdGlvbjoNCiAgICAgICAgICAgICAgICB0aGlzLl9iaXRyYXRlVGltZXIgPSBuZXcgdGhpcy5fQml0cmF0ZVRpbWVyKCk7DQogICAgICAgICAgICAgICAgLy8gUmVzZXQgdGhlIGdsb2JhbCBwcm9ncmVzcyB2YWx1ZXM6DQogICAgICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3MubG9hZGVkID0gdGhpcy5fcHJvZ3Jlc3MudG90YWwgPSAwOw0KICAgICAgICAgICAgICAgIHRoaXMuX3Byb2dyZXNzLmJpdHJhdGUgPSAwOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb250YWluZXIgb2JqZWN0cyBmb3IgdGhlIC5yZXNwb25zZSgpIGFuZA0KICAgICAgICAgICAgLy8gLnByb2dyZXNzKCkgbWV0aG9kcyBvbiB0aGUgZGF0YSBvYmplY3QgYXJlIGF2YWlsYWJsZQ0KICAgICAgICAgICAgLy8gYW5kIHJlc2V0IHRvIHRoZWlyIGluaXRpYWwgc3RhdGU6DQogICAgICAgICAgICB0aGlzLl9pbml0UmVzcG9uc2VPYmplY3QoZGF0YSk7DQogICAgICAgICAgICB0aGlzLl9pbml0UHJvZ3Jlc3NPYmplY3QoZGF0YSk7DQogICAgICAgICAgICBkYXRhLl9wcm9ncmVzcy5sb2FkZWQgPSBkYXRhLmxvYWRlZCA9IGRhdGEudXBsb2FkZWRCeXRlcyB8fCAwOw0KICAgICAgICAgICAgZGF0YS5fcHJvZ3Jlc3MudG90YWwgPSBkYXRhLnRvdGFsID0gdGhpcy5fZ2V0VG90YWwoZGF0YS5maWxlcykgfHwgMTsNCiAgICAgICAgICAgIGRhdGEuX3Byb2dyZXNzLmJpdHJhdGUgPSBkYXRhLmJpdHJhdGUgPSAwOw0KICAgICAgICAgICAgdGhpcy5fYWN0aXZlICs9IDE7DQogICAgICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBnbG9iYWwgcHJvZ3Jlc3MgdmFsdWVzOg0KICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3MubG9hZGVkICs9IGRhdGEubG9hZGVkOw0KICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3MudG90YWwgKz0gZGF0YS50b3RhbDsNCiAgICAgICAgfSwNCg0KICAgICAgICBfb25Eb25lOiBmdW5jdGlvbiAocmVzdWx0LCB0ZXh0U3RhdHVzLCBqcVhIUiwgb3B0aW9ucykgew0KICAgICAgICAgICAgdmFyIHRvdGFsID0gb3B0aW9ucy5fcHJvZ3Jlc3MudG90YWwsDQogICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBvcHRpb25zLl9yZXNwb25zZTsNCiAgICAgICAgICAgIGlmIChvcHRpb25zLl9wcm9ncmVzcy5sb2FkZWQgPCB0b3RhbCkgew0KICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIHByb2dyZXNzIGV2ZW50IGlmIG5vIGZpbmFsIHByb2dyZXNzIGV2ZW50DQogICAgICAgICAgICAgICAgLy8gd2l0aCBsb2FkZWQgZXF1YWxpbmcgdG90YWwgaGFzIGJlZW4gdHJpZ2dlcmVkOg0KICAgICAgICAgICAgICAgIHRoaXMuX29uUHJvZ3Jlc3MoJC5FdmVudCgncHJvZ3Jlc3MnLCB7DQogICAgICAgICAgICAgICAgICAgIGxlbmd0aENvbXB1dGFibGU6IHRydWUsDQogICAgICAgICAgICAgICAgICAgIGxvYWRlZDogdG90YWwsDQogICAgICAgICAgICAgICAgICAgIHRvdGFsOiB0b3RhbA0KICAgICAgICAgICAgICAgIH0pLCBvcHRpb25zKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJlc3BvbnNlLnJlc3VsdCA9IG9wdGlvbnMucmVzdWx0ID0gcmVzdWx0Ow0KICAgICAgICAgICAgcmVzcG9uc2UudGV4dFN0YXR1cyA9IG9wdGlvbnMudGV4dFN0YXR1cyA9IHRleHRTdGF0dXM7DQogICAgICAgICAgICByZXNwb25zZS5qcVhIUiA9IG9wdGlvbnMuanFYSFIgPSBqcVhIUjsNCiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIoJ2RvbmUnLCBudWxsLCBvcHRpb25zKTsNCiAgICAgICAgfSwNCg0KICAgICAgICBfb25GYWlsOiBmdW5jdGlvbiAoanFYSFIsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duLCBvcHRpb25zKSB7DQogICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSBvcHRpb25zLl9yZXNwb25zZTsNCiAgICAgICAgICAgIGlmIChvcHRpb25zLnJlY2FsY3VsYXRlUHJvZ3Jlc3MpIHsNCiAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGZhaWxlZCAoZXJyb3Igb3IgYWJvcnQpIGZpbGUgdXBsb2FkIGZyb20NCiAgICAgICAgICAgICAgICAvLyB0aGUgZ2xvYmFsIHByb2dyZXNzIGNhbGN1bGF0aW9uOg0KICAgICAgICAgICAgICAgIHRoaXMuX3Byb2dyZXNzLmxvYWRlZCAtPSBvcHRpb25zLl9wcm9ncmVzcy5sb2FkZWQ7DQogICAgICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3MudG90YWwgLT0gb3B0aW9ucy5fcHJvZ3Jlc3MudG90YWw7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXNwb25zZS5qcVhIUiA9IG9wdGlvbnMuanFYSFIgPSBqcVhIUjsNCiAgICAgICAgICAgIHJlc3BvbnNlLnRleHRTdGF0dXMgPSBvcHRpb25zLnRleHRTdGF0dXMgPSB0ZXh0U3RhdHVzOw0KICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3JUaHJvd24gPSBvcHRpb25zLmVycm9yVGhyb3duID0gZXJyb3JUaHJvd247DQogICAgICAgICAgICB0aGlzLl90cmlnZ2VyKCdmYWlsJywgbnVsbCwgb3B0aW9ucyk7DQogICAgICAgIH0sDQoNCiAgICAgICAgX29uQWx3YXlzOiBmdW5jdGlvbiAoanFYSFJvclJlc3VsdCwgdGV4dFN0YXR1cywganFYSFJvckVycm9yLCBvcHRpb25zKSB7DQogICAgICAgICAgICAvLyBqcVhIUm9yUmVzdWx0LCB0ZXh0U3RhdHVzIGFuZCBqcVhIUm9yRXJyb3IgYXJlIGFkZGVkIHRvIHRoZQ0KICAgICAgICAgICAgLy8gb3B0aW9ucyBvYmplY3QgdmlhIGRvbmUgYW5kIGZhaWwgY2FsbGJhY2tzDQogICAgICAgICAgICB0aGlzLl90cmlnZ2VyKCdhbHdheXMnLCBudWxsLCBvcHRpb25zKTsNCiAgICAgICAgfSwNCg0KICAgICAgICBfb25TZW5kOiBmdW5jdGlvbiAoZSwgZGF0YSkgew0KICAgICAgICAgICAgaWYgKCFkYXRhLnN1Ym1pdCkgew0KICAgICAgICAgICAgICAgIHRoaXMuX2FkZENvbnZlbmllbmNlTWV0aG9kcyhlLCBkYXRhKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcywNCiAgICAgICAgICAgICAgICBqcVhIUiwNCiAgICAgICAgICAgICAgICBhYm9ydGVkLA0KICAgICAgICAgICAgICAgIHNsb3QsDQogICAgICAgICAgICAgICAgcGlwZSwNCiAgICAgICAgICAgICAgICBvcHRpb25zID0gdGhhdC5fZ2V0QUpBWFNldHRpbmdzKGRhdGEpLA0KICAgICAgICAgICAgICAgIHNlbmQgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgIHRoYXQuX3NlbmRpbmcgKz0gMTsNCiAgICAgICAgICAgICAgICAgICAgLy8gU2V0IHRpbWVyIGZvciBiaXRyYXRlIHByb2dyZXNzIGNhbGN1bGF0aW9uOg0KICAgICAgICAgICAgICAgICAgICBvcHRpb25zLl9iaXRyYXRlVGltZXIgPSBuZXcgdGhhdC5fQml0cmF0ZVRpbWVyKCk7DQogICAgICAgICAgICAgICAgICAgIGpxWEhSID0ganFYSFIgfHwgKA0KICAgICAgICAgICAgICAgICAgICAgICAgKChhYm9ydGVkIHx8IHRoYXQuX3RyaWdnZXIoJ3NlbmQnLCBlLCBvcHRpb25zKSA9PT0gZmFsc2UpICYmDQogICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9nZXRYSFJQcm9taXNlKGZhbHNlLCBvcHRpb25zLmNvbnRleHQsIGFib3J0ZWQpKSB8fA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fY2h1bmtlZFVwbG9hZChvcHRpb25zKSB8fCAkLmFqYXgob3B0aW9ucykNCiAgICAgICAgICAgICAgICAgICAgKS5kb25lKGZ1bmN0aW9uIChyZXN1bHQsIHRleHRTdGF0dXMsIGpxWEhSKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9vbkRvbmUocmVzdWx0LCB0ZXh0U3RhdHVzLCBqcVhIUiwgb3B0aW9ucyk7DQogICAgICAgICAgICAgICAgICAgIH0pLmZhaWwoZnVuY3Rpb24gKGpxWEhSLCB0ZXh0U3RhdHVzLCBlcnJvclRocm93bikgew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fb25GYWlsKGpxWEhSLCB0ZXh0U3RhdHVzLCBlcnJvclRocm93biwgb3B0aW9ucyk7DQogICAgICAgICAgICAgICAgICAgIH0pLmFsd2F5cyhmdW5jdGlvbiAoanFYSFJvclJlc3VsdCwgdGV4dFN0YXR1cywganFYSFJvckVycm9yKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9vbkFsd2F5cygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqcVhIUm9yUmVzdWx0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRTdGF0dXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAganFYSFJvckVycm9yLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMNCiAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9zZW5kaW5nIC09IDE7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9hY3RpdmUgLT0gMTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0Q29uY3VycmVudFVwbG9hZHMgJiYNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5saW1pdENvbmN1cnJlbnRVcGxvYWRzID4gdGhhdC5fc2VuZGluZykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN0YXJ0IHRoZSBuZXh0IHF1ZXVlZCB1cGxvYWQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBoYXMgbm90IGJlZW4gYWJvcnRlZDoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dFNsb3QgPSB0aGF0Ll9zbG90cy5zaGlmdCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChuZXh0U2xvdCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5fZ2V0RGVmZXJyZWRTdGF0ZShuZXh0U2xvdCkgPT09ICdwZW5kaW5nJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFNsb3QucmVzb2x2ZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFNsb3QgPSB0aGF0Ll9zbG90cy5zaGlmdCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Ll9hY3RpdmUgPT09IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgc3RvcCBjYWxsYmFjayBpcyB0cmlnZ2VyZWQgd2hlbiBhbGwgdXBsb2FkcyBoYXZlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmVlbiBjb21wbGV0ZWQsIGVxdWl2YWxlbnQgdG8gdGhlIGdsb2JhbCBhamF4U3RvcCBldmVudDoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdzdG9wJyk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICByZXR1cm4ganFYSFI7DQogICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgIHRoaXMuX2JlZm9yZVNlbmQoZSwgb3B0aW9ucyk7DQogICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNlcXVlbnRpYWxVcGxvYWRzIHx8DQogICAgICAgICAgICAgICAgICAgICh0aGlzLm9wdGlvbnMubGltaXRDb25jdXJyZW50VXBsb2FkcyAmJg0KICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMubGltaXRDb25jdXJyZW50VXBsb2FkcyA8PSB0aGlzLl9zZW5kaW5nKSkgew0KICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMubGltaXRDb25jdXJyZW50VXBsb2FkcyA+IDEpIHsNCiAgICAgICAgICAgICAgICAgICAgc2xvdCA9ICQuRGVmZXJyZWQoKTsNCiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2xvdHMucHVzaChzbG90KTsNCiAgICAgICAgICAgICAgICAgICAgcGlwZSA9IHNsb3QucGlwZShzZW5kKTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXF1ZW5jZSA9IHRoaXMuX3NlcXVlbmNlLnBpcGUoc2VuZCwgc2VuZCk7DQogICAgICAgICAgICAgICAgICAgIHBpcGUgPSB0aGlzLl9zZXF1ZW5jZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgLy8gUmV0dXJuIHRoZSBwaXBlZCBQcm9taXNlIG9iamVjdCwgZW5oYW5jZWQgd2l0aCBhbiBhYm9ydCBtZXRob2QsDQogICAgICAgICAgICAgICAgLy8gd2hpY2ggaXMgZGVsZWdhdGVkIHRvIHRoZSBqcVhIUiBvYmplY3Qgb2YgdGhlIGN1cnJlbnQgdXBsb2FkLA0KICAgICAgICAgICAgICAgIC8vIGFuZCBqcVhIUiBjYWxsYmFja3MgbWFwcGVkIHRvIHRoZSBlcXVpdmFsZW50IFByb21pc2UgbWV0aG9kczoNCiAgICAgICAgICAgICAgICBwaXBlLmFib3J0ID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICBhYm9ydGVkID0gW3VuZGVmaW5lZCwgJ2Fib3J0JywgJ2Fib3J0J107DQogICAgICAgICAgICAgICAgICAgIGlmICghanFYSFIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzbG90KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvdC5yZWplY3RXaXRoKG9wdGlvbnMuY29udGV4dCwgYWJvcnRlZCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VuZCgpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBqcVhIUi5hYm9ydCgpOw0KICAgICAgICAgICAgICAgIH07DQogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VuaGFuY2VQcm9taXNlKHBpcGUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHNlbmQoKTsNCiAgICAgICAgfSwNCg0KICAgICAgICBfb25BZGQ6IGZ1bmN0aW9uIChlLCBkYXRhKSB7DQogICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsDQogICAgICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZSwNCiAgICAgICAgICAgICAgICBvcHRpb25zID0gJC5leHRlbmQoe30sIHRoaXMub3B0aW9ucywgZGF0YSksDQogICAgICAgICAgICAgICAgbGltaXQgPSBvcHRpb25zLmxpbWl0TXVsdGlGaWxlVXBsb2FkcywNCiAgICAgICAgICAgICAgICBwYXJhbU5hbWUgPSB0aGlzLl9nZXRQYXJhbU5hbWUob3B0aW9ucyksDQogICAgICAgICAgICAgICAgcGFyYW1OYW1lU2V0LA0KICAgICAgICAgICAgICAgIHBhcmFtTmFtZVNsaWNlLA0KICAgICAgICAgICAgICAgIGZpbGVTZXQsDQogICAgICAgICAgICAgICAgaTsNCiAgICAgICAgICAgIGlmICghKG9wdGlvbnMuc2luZ2xlRmlsZVVwbG9hZHMgfHwgbGltaXQpIHx8DQogICAgICAgICAgICAgICAgICAgICF0aGlzLl9pc1hIUlVwbG9hZChvcHRpb25zKSkgew0KICAgICAgICAgICAgICAgIGZpbGVTZXQgPSBbZGF0YS5maWxlc107DQogICAgICAgICAgICAgICAgcGFyYW1OYW1lU2V0ID0gW3BhcmFtTmFtZV07DQogICAgICAgICAgICB9IGVsc2UgaWYgKCFvcHRpb25zLnNpbmdsZUZpbGVVcGxvYWRzICYmIGxpbWl0KSB7DQogICAgICAgICAgICAgICAgZmlsZVNldCA9IFtdOw0KICAgICAgICAgICAgICAgIHBhcmFtTmFtZVNldCA9IFtdOw0KICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBkYXRhLmZpbGVzLmxlbmd0aDsgaSArPSBsaW1pdCkgew0KICAgICAgICAgICAgICAgICAgICBmaWxlU2V0LnB1c2goZGF0YS5maWxlcy5zbGljZShpLCBpICsgbGltaXQpKTsNCiAgICAgICAgICAgICAgICAgICAgcGFyYW1OYW1lU2xpY2UgPSBwYXJhbU5hbWUuc2xpY2UoaSwgaSArIGxpbWl0KTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJhbU5hbWVTbGljZS5sZW5ndGgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtTmFtZVNsaWNlID0gcGFyYW1OYW1lOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIHBhcmFtTmFtZVNldC5wdXNoKHBhcmFtTmFtZVNsaWNlKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHBhcmFtTmFtZVNldCA9IHBhcmFtTmFtZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGRhdGEub3JpZ2luYWxGaWxlcyA9IGRhdGEuZmlsZXM7DQogICAgICAgICAgICAkLmVhY2goZmlsZVNldCB8fCBkYXRhLmZpbGVzLCBmdW5jdGlvbiAoaW5kZXgsIGVsZW1lbnQpIHsNCiAgICAgICAgICAgICAgICB2YXIgbmV3RGF0YSA9ICQuZXh0ZW5kKHt9LCBkYXRhKTsNCiAgICAgICAgICAgICAgICBuZXdEYXRhLmZpbGVzID0gZmlsZVNldCA/IGVsZW1lbnQgOiBbZWxlbWVudF07DQogICAgICAgICAgICAgICAgbmV3RGF0YS5wYXJhbU5hbWUgPSBwYXJhbU5hbWVTZXRbaW5kZXhdOw0KICAgICAgICAgICAgICAgIHRoYXQuX2luaXRSZXNwb25zZU9iamVjdChuZXdEYXRhKTsNCiAgICAgICAgICAgICAgICB0aGF0Ll9pbml0UHJvZ3Jlc3NPYmplY3QobmV3RGF0YSk7DQogICAgICAgICAgICAgICAgdGhhdC5fYWRkQ29udmVuaWVuY2VNZXRob2RzKGUsIG5ld0RhdGEpOw0KICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoYXQuX3RyaWdnZXIoJ2FkZCcsIGUsIG5ld0RhdGEpOw0KICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgIH0sDQoNCiAgICAgICAgX3JlcGxhY2VGaWxlSW5wdXQ6IGZ1bmN0aW9uIChpbnB1dCkgew0KICAgICAgICAgICAgdmFyIGlucHV0Q2xvbmUgPSBpbnB1dC5jbG9uZSh0cnVlKTsNCiAgICAgICAgICAgICQoJzxmb3JtPjwvZm9ybT4nKS5hcHBlbmQoaW5wdXRDbG9uZSlbMF0ucmVzZXQoKTsNCiAgICAgICAgICAgIC8vIERldGFjaGluZyBhbGxvd3MgdG8gaW5zZXJ0IHRoZSBmaWxlSW5wdXQgb24gYW5vdGhlciBmb3JtDQogICAgICAgICAgICAvLyB3aXRob3V0IGxvb3NpbmcgdGhlIGZpbGUgaW5wdXQgdmFsdWU6DQogICAgICAgICAgICBpbnB1dC5hZnRlcihpbnB1dENsb25lKS5kZXRhY2goKTsNCiAgICAgICAgICAgIC8vIEF2b2lkIG1lbW9yeSBsZWFrcyB3aXRoIHRoZSBkZXRhY2hlZCBmaWxlIGlucHV0Og0KICAgICAgICAgICAgJC5jbGVhbkRhdGEoaW5wdXQudW5iaW5kKCdyZW1vdmUnKSk7DQogICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSBvcmlnaW5hbCBmaWxlIGlucHV0IGVsZW1lbnQgaW4gdGhlIGZpbGVJbnB1dA0KICAgICAgICAgICAgLy8gZWxlbWVudHMgc2V0IHdpdGggdGhlIGNsb25lLCB3aGljaCBoYXMgYmVlbiBjb3BpZWQgaW5jbHVkaW5nDQogICAgICAgICAgICAvLyBldmVudCBoYW5kbGVyczoNCiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5maWxlSW5wdXQgPSB0aGlzLm9wdGlvbnMuZmlsZUlucHV0Lm1hcChmdW5jdGlvbiAoaSwgZWwpIHsNCiAgICAgICAgICAgICAgICBpZiAoZWwgPT09IGlucHV0WzBdKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnB1dENsb25lWzBdOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICByZXR1cm4gZWw7DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIC8vIElmIHRoZSB3aWRnZXQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQgb24gdGhlIGZpbGUgaW5wdXQgaXRzZWxmLA0KICAgICAgICAgICAgLy8gb3ZlcnJpZGUgdGhpcy5lbGVtZW50IHdpdGggdGhlIGZpbGUgaW5wdXQgY2xvbmU6DQogICAgICAgICAgICBpZiAoaW5wdXRbMF0gPT09IHRoaXMuZWxlbWVudFswXSkgew0KICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudCA9IGlucHV0Q2xvbmU7DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQoNCiAgICAgICAgX2hhbmRsZUZpbGVUcmVlRW50cnk6IGZ1bmN0aW9uIChlbnRyeSwgcGF0aCkgew0KICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLA0KICAgICAgICAgICAgICAgIGRmZCA9ICQuRGVmZXJyZWQoKSwNCiAgICAgICAgICAgICAgICBlcnJvckhhbmRsZXIgPSBmdW5jdGlvbiAoZSkgew0KICAgICAgICAgICAgICAgICAgICBpZiAoZSAmJiAhZS5lbnRyeSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgZS5lbnRyeSA9IGVudHJ5Ow0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIC8vIFNpbmNlICQud2hlbiByZXR1cm5zIGltbWVkaWF0ZWx5IGlmIG9uZQ0KICAgICAgICAgICAgICAgICAgICAvLyBEZWZlcnJlZCBpcyByZWplY3RlZCwgd2UgdXNlIHJlc29sdmUgaW5zdGVhZC4NCiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBhbGxvd3MgdmFsaWQgZmlsZXMgYW5kIGludmFsaWQgaXRlbXMNCiAgICAgICAgICAgICAgICAgICAgLy8gdG8gYmUgcmV0dXJuZWQgdG9nZXRoZXIgaW4gb25lIHNldDoNCiAgICAgICAgICAgICAgICAgICAgZGZkLnJlc29sdmUoW2VdKTsNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIGRpclJlYWRlcjsNCiAgICAgICAgICAgIHBhdGggPSBwYXRoIHx8ICcnOw0KICAgICAgICAgICAgaWYgKGVudHJ5LmlzRmlsZSkgew0KICAgICAgICAgICAgICAgIGlmIChlbnRyeS5fZmlsZSkgew0KICAgICAgICAgICAgICAgICAgICAvLyBXb3JrYXJvdW5kIGZvciBDaHJvbWUgYnVnICMxNDk3MzUNCiAgICAgICAgICAgICAgICAgICAgZW50cnkuX2ZpbGUucmVsYXRpdmVQYXRoID0gcGF0aDsNCiAgICAgICAgICAgICAgICAgICAgZGZkLnJlc29sdmUoZW50cnkuX2ZpbGUpOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIGVudHJ5LmZpbGUoZnVuY3Rpb24gKGZpbGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUucmVsYXRpdmVQYXRoID0gcGF0aDsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRmZC5yZXNvbHZlKGZpbGUpOw0KICAgICAgICAgICAgICAgICAgICB9LCBlcnJvckhhbmRsZXIpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0gZWxzZSBpZiAoZW50cnkuaXNEaXJlY3RvcnkpIHsNCiAgICAgICAgICAgICAgICBkaXJSZWFkZXIgPSBlbnRyeS5jcmVhdGVSZWFkZXIoKTsNCiAgICAgICAgICAgICAgICBkaXJSZWFkZXIucmVhZEVudHJpZXMoZnVuY3Rpb24gKGVudHJpZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgdGhhdC5faGFuZGxlRmlsZVRyZWVFbnRyaWVzKA0KICAgICAgICAgICAgICAgICAgICAgICAgZW50cmllcywNCiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggKyBlbnRyeS5uYW1lICsgJy8nDQogICAgICAgICAgICAgICAgICAgICkuZG9uZShmdW5jdGlvbiAoZmlsZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRmZC5yZXNvbHZlKGZpbGVzKTsNCiAgICAgICAgICAgICAgICAgICAgfSkuZmFpbChlcnJvckhhbmRsZXIpOw0KICAgICAgICAgICAgICAgIH0sIGVycm9ySGFuZGxlcik7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIC8vIFJldHVybiBhbiBlbXB5IGxpc3QgZm9yIGZpbGUgc3lzdGVtIGl0ZW1zDQogICAgICAgICAgICAgICAgLy8gb3RoZXIgdGhhbiBmaWxlcyBvciBkaXJlY3RvcmllczoNCiAgICAgICAgICAgICAgICBkZmQucmVzb2x2ZShbXSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gZGZkLnByb21pc2UoKTsNCiAgICAgICAgfSwNCg0KICAgICAgICBfaGFuZGxlRmlsZVRyZWVFbnRyaWVzOiBmdW5jdGlvbiAoZW50cmllcywgcGF0aCkgew0KICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzOw0KICAgICAgICAgICAgcmV0dXJuICQud2hlbi5hcHBseSgNCiAgICAgICAgICAgICAgICAkLA0KICAgICAgICAgICAgICAgICQubWFwKGVudHJpZXMsIGZ1bmN0aW9uIChlbnRyeSkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhhdC5faGFuZGxlRmlsZVRyZWVFbnRyeShlbnRyeSwgcGF0aCk7DQogICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAgICkucGlwZShmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoDQogICAgICAgICAgICAgICAgICAgIFtdLA0KICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMNCiAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0sDQoNCiAgICAgICAgX2dldERyb3BwZWRGaWxlczogZnVuY3Rpb24gKGRhdGFUcmFuc2Zlcikgew0KICAgICAgICAgICAgZGF0YVRyYW5zZmVyID0gZGF0YVRyYW5zZmVyIHx8IHt9Ow0KICAgICAgICAgICAgdmFyIGl0ZW1zID0gZGF0YVRyYW5zZmVyLml0ZW1zOw0KICAgICAgICAgICAgaWYgKGl0ZW1zICYmIGl0ZW1zLmxlbmd0aCAmJiAoaXRlbXNbMF0ud2Via2l0R2V0QXNFbnRyeSB8fA0KICAgICAgICAgICAgICAgICAgICBpdGVtc1swXS5nZXRBc0VudHJ5KSkgew0KICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9oYW5kbGVGaWxlVHJlZUVudHJpZXMoDQogICAgICAgICAgICAgICAgICAgICQubWFwKGl0ZW1zLCBmdW5jdGlvbiAoaXRlbSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVudHJ5Ow0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0ud2Via2l0R2V0QXNFbnRyeSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5ID0gaXRlbS53ZWJraXRHZXRBc0VudHJ5KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdvcmthcm91bmQgZm9yIENocm9tZSBidWcgIzE0OTczNToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkuX2ZpbGUgPSBpdGVtLmdldEFzRmlsZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5nZXRBc0VudHJ5KCk7DQogICAgICAgICAgICAgICAgICAgIH0pDQogICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiAkLkRlZmVycmVkKCkucmVzb2x2ZSgNCiAgICAgICAgICAgICAgICAkLm1ha2VBcnJheShkYXRhVHJhbnNmZXIuZmlsZXMpDQogICAgICAgICAgICApLnByb21pc2UoKTsNCiAgICAgICAgfSwNCg0KICAgICAgICBfZ2V0U2luZ2xlRmlsZUlucHV0RmlsZXM6IGZ1bmN0aW9uIChmaWxlSW5wdXQpIHsNCiAgICAgICAgICAgIGZpbGVJbnB1dCA9ICQoZmlsZUlucHV0KTsNCiAgICAgICAgICAgIHZhciBlbnRyaWVzID0gZmlsZUlucHV0LnByb3AoJ3dlYmtpdEVudHJpZXMnKSB8fA0KICAgICAgICAgICAgICAgICAgICBmaWxlSW5wdXQucHJvcCgnZW50cmllcycpLA0KICAgICAgICAgICAgICAgIGZpbGVzLA0KICAgICAgICAgICAgICAgIHZhbHVlOw0KICAgICAgICAgICAgaWYgKGVudHJpZXMgJiYgZW50cmllcy5sZW5ndGgpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5faGFuZGxlRmlsZVRyZWVFbnRyaWVzKGVudHJpZXMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZmlsZXMgPSAkLm1ha2VBcnJheShmaWxlSW5wdXQucHJvcCgnZmlsZXMnKSk7DQogICAgICAgICAgICBpZiAoIWZpbGVzLmxlbmd0aCkgew0KICAgICAgICAgICAgICAgIHZhbHVlID0gZmlsZUlucHV0LnByb3AoJ3ZhbHVlJyk7DQogICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5EZWZlcnJlZCgpLnJlc29sdmUoW10pLnByb21pc2UoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgLy8gSWYgdGhlIGZpbGVzIHByb3BlcnR5IGlzIG5vdCBhdmFpbGFibGUsIHRoZSBicm93c2VyIGRvZXMgbm90DQogICAgICAgICAgICAgICAgLy8gc3VwcG9ydCB0aGUgRmlsZSBBUEkgYW5kIHdlIGFkZCBhIHBzZXVkbyBGaWxlIG9iamVjdCB3aXRoDQogICAgICAgICAgICAgICAgLy8gdGhlIGlucHV0IHZhbHVlIGFzIG5hbWUgd2l0aCBwYXRoIGluZm9ybWF0aW9uIHJlbW92ZWQ6DQogICAgICAgICAgICAgICAgZmlsZXMgPSBbe25hbWU6IHZhbHVlLnJlcGxhY2UoL14uKlxcLywgJycpfV07DQogICAgICAgICAgICB9IGVsc2UgaWYgKGZpbGVzWzBdLm5hbWUgPT09IHVuZGVmaW5lZCAmJiBmaWxlc1swXS5maWxlTmFtZSkgew0KICAgICAgICAgICAgICAgIC8vIEZpbGUgbm9ybWFsaXphdGlvbiBmb3IgU2FmYXJpIDQgYW5kIEZpcmVmb3ggMzoNCiAgICAgICAgICAgICAgICAkLmVhY2goZmlsZXMsIGZ1bmN0aW9uIChpbmRleCwgZmlsZSkgew0KICAgICAgICAgICAgICAgICAgICBmaWxlLm5hbWUgPSBmaWxlLmZpbGVOYW1lOw0KICAgICAgICAgICAgICAgICAgICBmaWxlLnNpemUgPSBmaWxlLmZpbGVTaXplOw0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuICQuRGVmZXJyZWQoKS5yZXNvbHZlKGZpbGVzKS5wcm9taXNlKCk7DQogICAgICAgIH0sDQoNCiAgICAgICAgX2dldEZpbGVJbnB1dEZpbGVzOiBmdW5jdGlvbiAoZmlsZUlucHV0KSB7DQogICAgICAgICAgICBpZiAoIShmaWxlSW5wdXQgaW5zdGFuY2VvZiAkKSB8fCBmaWxlSW5wdXQubGVuZ3RoID09PSAxKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFNpbmdsZUZpbGVJbnB1dEZpbGVzKGZpbGVJbnB1dCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gJC53aGVuLmFwcGx5KA0KICAgICAgICAgICAgICAgICQsDQogICAgICAgICAgICAgICAgJC5tYXAoZmlsZUlucHV0LCB0aGlzLl9nZXRTaW5nbGVGaWxlSW5wdXRGaWxlcykNCiAgICAgICAgICAgICkucGlwZShmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoDQogICAgICAgICAgICAgICAgICAgIFtdLA0KICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMNCiAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0sDQoNCiAgICAgICAgX29uQ2hhbmdlOiBmdW5jdGlvbiAoZSkgew0KICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLA0KICAgICAgICAgICAgICAgIGRhdGEgPSB7DQogICAgICAgICAgICAgICAgICAgIGZpbGVJbnB1dDogJChlLnRhcmdldCksDQogICAgICAgICAgICAgICAgICAgIGZvcm06ICQoZS50YXJnZXQuZm9ybSkNCiAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgdGhpcy5fZ2V0RmlsZUlucHV0RmlsZXMoZGF0YS5maWxlSW5wdXQpLmFsd2F5cyhmdW5jdGlvbiAoZmlsZXMpIHsNCiAgICAgICAgICAgICAgICBkYXRhLmZpbGVzID0gZmlsZXM7DQogICAgICAgICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5yZXBsYWNlRmlsZUlucHV0KSB7DQogICAgICAgICAgICAgICAgICAgIHRoYXQuX3JlcGxhY2VGaWxlSW5wdXQoZGF0YS5maWxlSW5wdXQpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAodGhhdC5fdHJpZ2dlcignY2hhbmdlJywgZSwgZGF0YSkgIT09IGZhbHNlKSB7DQogICAgICAgICAgICAgICAgICAgIHRoYXQuX29uQWRkKGUsIGRhdGEpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9LA0KDQogICAgICAgIF9vblBhc3RlOiBmdW5jdGlvbiAoZSkgew0KICAgICAgICAgICAgdmFyIGl0ZW1zID0gZS5vcmlnaW5hbEV2ZW50ICYmIGUub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhICYmDQogICAgICAgICAgICAgICAgICAgIGUub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhLml0ZW1zLA0KICAgICAgICAgICAgICAgIGRhdGEgPSB7ZmlsZXM6IFtdfTsNCiAgICAgICAgICAgIGlmIChpdGVtcyAmJiBpdGVtcy5sZW5ndGgpIHsNCiAgICAgICAgICAgICAgICAkLmVhY2goaXRlbXMsIGZ1bmN0aW9uIChpbmRleCwgaXRlbSkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgZmlsZSA9IGl0ZW0uZ2V0QXNGaWxlICYmIGl0ZW0uZ2V0QXNGaWxlKCk7DQogICAgICAgICAgICAgICAgICAgIGlmIChmaWxlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmZpbGVzLnB1c2goZmlsZSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdHJpZ2dlcigncGFzdGUnLCBlLCBkYXRhKSA9PT0gZmFsc2UgfHwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29uQWRkKGUsIGRhdGEpID09PSBmYWxzZSkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KDQogICAgICAgIF9vbkRyb3A6IGZ1bmN0aW9uIChlKSB7DQogICAgICAgICAgICBlLmRhdGFUcmFuc2ZlciA9IGUub3JpZ2luYWxFdmVudCAmJiBlLm9yaWdpbmFsRXZlbnQuZGF0YVRyYW5zZmVyOw0KICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLA0KICAgICAgICAgICAgICAgIGRhdGFUcmFuc2ZlciA9IGUuZGF0YVRyYW5zZmVyLA0KICAgICAgICAgICAgICAgIGRhdGEgPSB7fTsNCiAgICAgICAgICAgIGlmIChkYXRhVHJhbnNmZXIgJiYgZGF0YVRyYW5zZmVyLmZpbGVzICYmIGRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGgpIHsNCiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7DQogICAgICAgICAgICAgICAgdGhpcy5fZ2V0RHJvcHBlZEZpbGVzKGRhdGFUcmFuc2ZlcikuYWx3YXlzKGZ1bmN0aW9uIChmaWxlcykgew0KICAgICAgICAgICAgICAgICAgICBkYXRhLmZpbGVzID0gZmlsZXM7DQogICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Ll90cmlnZ2VyKCdkcm9wJywgZSwgZGF0YSkgIT09IGZhbHNlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9vbkFkZChlLCBkYXRhKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KDQogICAgICAgIF9vbkRyYWdPdmVyOiBmdW5jdGlvbiAoZSkgew0KICAgICAgICAgICAgZS5kYXRhVHJhbnNmZXIgPSBlLm9yaWdpbmFsRXZlbnQgJiYgZS5vcmlnaW5hbEV2ZW50LmRhdGFUcmFuc2ZlcjsNCiAgICAgICAgICAgIHZhciBkYXRhVHJhbnNmZXIgPSBlLmRhdGFUcmFuc2ZlcjsNCiAgICAgICAgICAgIGlmIChkYXRhVHJhbnNmZXIpIHsNCiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdHJpZ2dlcignZHJhZ292ZXInLCBlKSA9PT0gZmFsc2UpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoJC5pbkFycmF5KCdGaWxlcycsIGRhdGFUcmFuc2Zlci50eXBlcykgIT09IC0xKSB7DQogICAgICAgICAgICAgICAgICAgIGRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ2NvcHknOw0KICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KDQogICAgICAgIF9pbml0RXZlbnRIYW5kbGVyczogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgaWYgKHRoaXMuX2lzWEhSVXBsb2FkKHRoaXMub3B0aW9ucykpIHsNCiAgICAgICAgICAgICAgICB0aGlzLl9vbih0aGlzLm9wdGlvbnMuZHJvcFpvbmUsIHsNCiAgICAgICAgICAgICAgICAgICAgZHJhZ292ZXI6IHRoaXMuX29uRHJhZ092ZXIsDQogICAgICAgICAgICAgICAgICAgIGRyb3A6IHRoaXMuX29uRHJvcA0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIHRoaXMuX29uKHRoaXMub3B0aW9ucy5wYXN0ZVpvbmUsIHsNCiAgICAgICAgICAgICAgICAgICAgcGFzdGU6IHRoaXMuX29uUGFzdGUNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHRoaXMuX29uKHRoaXMub3B0aW9ucy5maWxlSW5wdXQsIHsNCiAgICAgICAgICAgICAgICBjaGFuZ2U6IHRoaXMuX29uQ2hhbmdlDQogICAgICAgICAgICB9KTsNCiAgICAgICAgfSwNCg0KICAgICAgICBfZGVzdHJveUV2ZW50SGFuZGxlcnM6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHRoaXMuX29mZih0aGlzLm9wdGlvbnMuZHJvcFpvbmUsICdkcmFnb3ZlciBkcm9wJyk7DQogICAgICAgICAgICB0aGlzLl9vZmYodGhpcy5vcHRpb25zLnBhc3RlWm9uZSwgJ3Bhc3RlJyk7DQogICAgICAgICAgICB0aGlzLl9vZmYodGhpcy5vcHRpb25zLmZpbGVJbnB1dCwgJ2NoYW5nZScpOw0KICAgICAgICB9LA0KDQogICAgICAgIF9zZXRPcHRpb246IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7DQogICAgICAgICAgICB2YXIgcmVpbml0ID0gJC5pbkFycmF5KGtleSwgdGhpcy5fc3BlY2lhbE9wdGlvbnMpICE9PSAtMTsNCiAgICAgICAgICAgIGlmIChyZWluaXQpIHsNCiAgICAgICAgICAgICAgICB0aGlzLl9kZXN0cm95RXZlbnRIYW5kbGVycygpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdGhpcy5fc3VwZXIoa2V5LCB2YWx1ZSk7DQogICAgICAgICAgICBpZiAocmVpbml0KSB7DQogICAgICAgICAgICAgICAgdGhpcy5faW5pdFNwZWNpYWxPcHRpb25zKCk7DQogICAgICAgICAgICAgICAgdGhpcy5faW5pdEV2ZW50SGFuZGxlcnMoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCg0KICAgICAgICBfaW5pdFNwZWNpYWxPcHRpb25zOiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9uczsNCiAgICAgICAgICAgIGlmIChvcHRpb25zLmZpbGVJbnB1dCA9PT0gdW5kZWZpbmVkKSB7DQogICAgICAgICAgICAgICAgb3B0aW9ucy5maWxlSW5wdXQgPSB0aGlzLmVsZW1lbnQuaXMoJ2lucHV0W3R5cGU9ImZpbGUiXScpID8NCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudCA6IHRoaXMuZWxlbWVudC5maW5kKCdpbnB1dFt0eXBlPSJmaWxlIl0nKTsNCiAgICAgICAgICAgIH0gZWxzZSBpZiAoIShvcHRpb25zLmZpbGVJbnB1dCBpbnN0YW5jZW9mICQpKSB7DQogICAgICAgICAgICAgICAgb3B0aW9ucy5maWxlSW5wdXQgPSAkKG9wdGlvbnMuZmlsZUlucHV0KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICghKG9wdGlvbnMuZHJvcFpvbmUgaW5zdGFuY2VvZiAkKSkgew0KICAgICAgICAgICAgICAgIG9wdGlvbnMuZHJvcFpvbmUgPSAkKG9wdGlvbnMuZHJvcFpvbmUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCEob3B0aW9ucy5wYXN0ZVpvbmUgaW5zdGFuY2VvZiAkKSkgew0KICAgICAgICAgICAgICAgIG9wdGlvbnMucGFzdGVab25lID0gJChvcHRpb25zLnBhc3RlWm9uZSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQoNCiAgICAgICAgX2dldFJlZ0V4cDogZnVuY3Rpb24gKHN0cikgew0KICAgICAgICAgICAgdmFyIHBhcnRzID0gc3RyLnNwbGl0KCcvJyksDQogICAgICAgICAgICAgICAgbW9kaWZpZXJzID0gcGFydHMucG9wKCk7DQogICAgICAgICAgICBwYXJ0cy5zaGlmdCgpOw0KICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAocGFydHMuam9pbignLycpLCBtb2RpZmllcnMpOw0KICAgICAgICB9LA0KDQogICAgICAgIF9pc1JlZ0V4cE9wdGlvbjogZnVuY3Rpb24gKGtleSwgdmFsdWUpIHsNCiAgICAgICAgICAgIHJldHVybiBrZXkgIT09ICd1cmwnICYmICQudHlwZSh2YWx1ZSkgPT09ICdzdHJpbmcnICYmDQogICAgICAgICAgICAgICAgL15cLy4qXC9baWdtXXswLDN9JC8udGVzdCh2YWx1ZSk7DQogICAgICAgIH0sDQoNCiAgICAgICAgX2luaXREYXRhQXR0cmlidXRlczogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLA0KICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7DQogICAgICAgICAgICAvLyBJbml0aWFsaXplIG9wdGlvbnMgc2V0IHZpYSBIVE1MNSBkYXRhLWF0dHJpYnV0ZXM6DQogICAgICAgICAgICAkLmVhY2goDQogICAgICAgICAgICAgICAgJCh0aGlzLmVsZW1lbnRbMF0uY2xvbmVOb2RlKGZhbHNlKSkuZGF0YSgpLA0KICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7DQogICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Ll9pc1JlZ0V4cE9wdGlvbihrZXksIHZhbHVlKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGF0Ll9nZXRSZWdFeHAodmFsdWUpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIG9wdGlvbnNba2V5XSA9IHZhbHVlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICk7DQogICAgICAgIH0sDQoNCiAgICAgICAgX2NyZWF0ZTogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgdGhpcy5faW5pdERhdGFBdHRyaWJ1dGVzKCk7DQogICAgICAgICAgICB0aGlzLl9pbml0U3BlY2lhbE9wdGlvbnMoKTsNCiAgICAgICAgICAgIHRoaXMuX3Nsb3RzID0gW107DQogICAgICAgICAgICB0aGlzLl9zZXF1ZW5jZSA9IHRoaXMuX2dldFhIUlByb21pc2UodHJ1ZSk7DQogICAgICAgICAgICB0aGlzLl9zZW5kaW5nID0gdGhpcy5fYWN0aXZlID0gMDsNCiAgICAgICAgICAgIHRoaXMuX2luaXRQcm9ncmVzc09iamVjdCh0aGlzKTsNCiAgICAgICAgICAgIHRoaXMuX2luaXRFdmVudEhhbmRsZXJzKCk7DQogICAgICAgIH0sDQoNCiAgICAgICAgLy8gVGhpcyBtZXRob2QgaXMgZXhwb3NlZCB0byB0aGUgd2lkZ2V0IEFQSSBhbmQgYWxsb3dzIHRvIHF1ZXJ5DQogICAgICAgIC8vIHRoZSBudW1iZXIgb2YgYWN0aXZlIHVwbG9hZHM6DQogICAgICAgIGFjdGl2ZTogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2ZTsNCiAgICAgICAgfSwNCg0KICAgICAgICAvLyBUaGlzIG1ldGhvZCBpcyBleHBvc2VkIHRvIHRoZSB3aWRnZXQgQVBJIGFuZCBhbGxvd3MgdG8gcXVlcnkNCiAgICAgICAgLy8gdGhlIHdpZGdldCB1cGxvYWQgcHJvZ3Jlc3MuDQogICAgICAgIC8vIEl0IHJldHVybnMgYW4gb2JqZWN0IHdpdGggbG9hZGVkLCB0b3RhbCBhbmQgYml0cmF0ZSBwcm9wZXJ0aWVzDQogICAgICAgIC8vIGZvciB0aGUgcnVubmluZyB1cGxvYWRzOg0KICAgICAgICBwcm9ncmVzczogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2dyZXNzOw0KICAgICAgICB9LA0KDQogICAgICAgIC8vIFRoaXMgbWV0aG9kIGlzIGV4cG9zZWQgdG8gdGhlIHdpZGdldCBBUEkgYW5kIGFsbG93cyBhZGRpbmcgZmlsZXMNCiAgICAgICAgLy8gdXNpbmcgdGhlIGZpbGV1cGxvYWQgQVBJLiBUaGUgZGF0YSBwYXJhbWV0ZXIgYWNjZXB0cyBhbiBvYmplY3Qgd2hpY2gNCiAgICAgICAgLy8gbXVzdCBoYXZlIGEgZmlsZXMgcHJvcGVydHkgYW5kIGNhbiBjb250YWluIGFkZGl0aW9uYWwgb3B0aW9uczoNCiAgICAgICAgLy8gLmZpbGV1cGxvYWQoJ2FkZCcsIHtmaWxlczogZmlsZXNMaXN0fSk7DQogICAgICAgIGFkZDogZnVuY3Rpb24gKGRhdGEpIHsNCiAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpczsNCiAgICAgICAgICAgIGlmICghZGF0YSB8fCB0aGlzLm9wdGlvbnMuZGlzYWJsZWQpIHsNCiAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoZGF0YS5maWxlSW5wdXQgJiYgIWRhdGEuZmlsZXMpIHsNCiAgICAgICAgICAgICAgICB0aGlzLl9nZXRGaWxlSW5wdXRGaWxlcyhkYXRhLmZpbGVJbnB1dCkuYWx3YXlzKGZ1bmN0aW9uIChmaWxlcykgew0KICAgICAgICAgICAgICAgICAgICBkYXRhLmZpbGVzID0gZmlsZXM7DQogICAgICAgICAgICAgICAgICAgIHRoYXQuX29uQWRkKG51bGwsIGRhdGEpOw0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBkYXRhLmZpbGVzID0gJC5tYWtlQXJyYXkoZGF0YS5maWxlcyk7DQogICAgICAgICAgICAgICAgdGhpcy5fb25BZGQobnVsbCwgZGF0YSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQoNCiAgICAgICAgLy8gVGhpcyBtZXRob2QgaXMgZXhwb3NlZCB0byB0aGUgd2lkZ2V0IEFQSSBhbmQgYWxsb3dzIHNlbmRpbmcgZmlsZXMNCiAgICAgICAgLy8gdXNpbmcgdGhlIGZpbGV1cGxvYWQgQVBJLiBUaGUgZGF0YSBwYXJhbWV0ZXIgYWNjZXB0cyBhbiBvYmplY3Qgd2hpY2gNCiAgICAgICAgLy8gbXVzdCBoYXZlIGEgZmlsZXMgb3IgZmlsZUlucHV0IHByb3BlcnR5IGFuZCBjYW4gY29udGFpbiBhZGRpdGlvbmFsIG9wdGlvbnM6DQogICAgICAgIC8vIC5maWxldXBsb2FkKCdzZW5kJywge2ZpbGVzOiBmaWxlc0xpc3R9KTsNCiAgICAgICAgLy8gVGhlIG1ldGhvZCByZXR1cm5zIGEgUHJvbWlzZSBvYmplY3QgZm9yIHRoZSBmaWxlIHVwbG9hZCBjYWxsLg0KICAgICAgICBzZW5kOiBmdW5jdGlvbiAoZGF0YSkgew0KICAgICAgICAgICAgaWYgKGRhdGEgJiYgIXRoaXMub3B0aW9ucy5kaXNhYmxlZCkgew0KICAgICAgICAgICAgICAgIGlmIChkYXRhLmZpbGVJbnB1dCAmJiAhZGF0YS5maWxlcykgew0KICAgICAgICAgICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsDQogICAgICAgICAgICAgICAgICAgICAgICBkZmQgPSAkLkRlZmVycmVkKCksDQogICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlID0gZGZkLnByb21pc2UoKSwNCiAgICAgICAgICAgICAgICAgICAgICAgIGpxWEhSLA0KICAgICAgICAgICAgICAgICAgICAgICAgYWJvcnRlZDsNCiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5hYm9ydCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGFib3J0ZWQgPSB0cnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpxWEhSKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpxWEhSLmFib3J0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBkZmQucmVqZWN0KG51bGwsICdhYm9ydCcsICdhYm9ydCcpOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7DQogICAgICAgICAgICAgICAgICAgIH07DQogICAgICAgICAgICAgICAgICAgIHRoaXMuX2dldEZpbGVJbnB1dEZpbGVzKGRhdGEuZmlsZUlucHV0KS5hbHdheXMoDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoZmlsZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWJvcnRlZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZmlsZXMgPSBmaWxlczsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqcVhIUiA9IHRoYXQuX29uU2VuZChudWxsLCBkYXRhKS50aGVuKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAocmVzdWx0LCB0ZXh0U3RhdHVzLCBqcVhIUikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGZkLnJlc29sdmUocmVzdWx0LCB0ZXh0U3RhdHVzLCBqcVhIUik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRmZC5yZWplY3QoanFYSFIsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbmhhbmNlUHJvbWlzZShwcm9taXNlKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZGF0YS5maWxlcyA9ICQubWFrZUFycmF5KGRhdGEuZmlsZXMpOw0KICAgICAgICAgICAgICAgIGlmIChkYXRhLmZpbGVzLmxlbmd0aCkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fb25TZW5kKG51bGwsIGRhdGEpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiB0aGlzLl9nZXRYSFJQcm9taXNlKGZhbHNlLCBkYXRhICYmIGRhdGEuY29udGV4dCk7DQogICAgICAgIH0NCg0KICAgIH0pOw0KDQp9KSk7DQo=]]></data>
	</file>
	<file>
	  <filename>/js/jquery-file-upload/jquery.iframe-transport.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoNCiAqIGpRdWVyeSBJZnJhbWUgVHJhbnNwb3J0IFBsdWdpbiAxLjcNCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZA0KICoNCiAqIENvcHlyaWdodCAyMDExLCBTZWJhc3RpYW4gVHNjaGFuDQogKiBodHRwczovL2JsdWVpbXAubmV0DQogKg0KICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOg0KICogaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQNCiAqLw0KDQovKmpzbGludCB1bnBhcmFtOiB0cnVlLCBub21lbjogdHJ1ZSAqLw0KLypnbG9iYWwgZGVmaW5lLCB3aW5kb3csIGRvY3VtZW50ICovDQoNCihmdW5jdGlvbiAoZmFjdG9yeSkgew0KICAgICd1c2Ugc3RyaWN0JzsNCiAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7DQogICAgICAgIC8vIFJlZ2lzdGVyIGFzIGFuIGFub255bW91cyBBTUQgbW9kdWxlOg0KICAgICAgICBkZWZpbmUoWydqcXVlcnknXSwgZmFjdG9yeSk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgLy8gQnJvd3NlciBnbG9iYWxzOg0KICAgICAgICBmYWN0b3J5KHdpbmRvdy5qUXVlcnkpOw0KICAgIH0NCn0oZnVuY3Rpb24gKCQpIHsNCiAgICAndXNlIHN0cmljdCc7DQoNCiAgICAvLyBIZWxwZXIgdmFyaWFibGUgdG8gY3JlYXRlIHVuaXF1ZSBuYW1lcyBmb3IgdGhlIHRyYW5zcG9ydCBpZnJhbWVzOg0KICAgIHZhciBjb3VudGVyID0gMDsNCg0KICAgIC8vIFRoZSBpZnJhbWUgdHJhbnNwb3J0IGFjY2VwdHMgdGhyZWUgYWRkaXRpb25hbCBvcHRpb25zOg0KICAgIC8vIG9wdGlvbnMuZmlsZUlucHV0OiBhIGpRdWVyeSBjb2xsZWN0aW9uIG9mIGZpbGUgaW5wdXQgZmllbGRzDQogICAgLy8gb3B0aW9ucy5wYXJhbU5hbWU6IHRoZSBwYXJhbWV0ZXIgbmFtZSBmb3IgdGhlIGZpbGUgZm9ybSBkYXRhLA0KICAgIC8vICBvdmVycmlkZXMgdGhlIG5hbWUgcHJvcGVydHkgb2YgdGhlIGZpbGUgaW5wdXQgZmllbGQocyksDQogICAgLy8gIGNhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzLg0KICAgIC8vIG9wdGlvbnMuZm9ybURhdGE6IGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCBuYW1lIGFuZCB2YWx1ZSBwcm9wZXJ0aWVzLA0KICAgIC8vICBlcXVpdmFsZW50IHRvIHRoZSByZXR1cm4gZGF0YSBvZiAuc2VyaWFsaXplQXJyYXkoKSwgZS5nLjoNCiAgICAvLyAgW3tuYW1lOiAnYScsIHZhbHVlOiAxfSwge25hbWU6ICdiJywgdmFsdWU6IDJ9XQ0KICAgICQuYWpheFRyYW5zcG9ydCgnaWZyYW1lJywgZnVuY3Rpb24gKG9wdGlvbnMpIHsNCiAgICAgICAgaWYgKG9wdGlvbnMuYXN5bmMpIHsNCiAgICAgICAgICAgIHZhciBmb3JtLA0KICAgICAgICAgICAgICAgIGlmcmFtZSwNCiAgICAgICAgICAgICAgICBhZGRQYXJhbUNoYXI7DQogICAgICAgICAgICByZXR1cm4gew0KICAgICAgICAgICAgICAgIHNlbmQ6IGZ1bmN0aW9uIChfLCBjb21wbGV0ZUNhbGxiYWNrKSB7DQogICAgICAgICAgICAgICAgICAgIGZvcm0gPSAkKCc8Zm9ybSBzdHlsZT0iZGlzcGxheTpub25lOyI+PC9mb3JtPicpOw0KICAgICAgICAgICAgICAgICAgICBmb3JtLmF0dHIoJ2FjY2VwdC1jaGFyc2V0Jywgb3B0aW9ucy5mb3JtQWNjZXB0Q2hhcnNldCk7DQogICAgICAgICAgICAgICAgICAgIGFkZFBhcmFtQ2hhciA9IC9cPy8udGVzdChvcHRpb25zLnVybCkgPyAnJicgOiAnPyc7DQogICAgICAgICAgICAgICAgICAgIC8vIFhEb21haW5SZXF1ZXN0IG9ubHkgc3VwcG9ydHMgR0VUIGFuZCBQT1NUOg0KICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy50eXBlID09PSAnREVMRVRFJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51cmwgPSBvcHRpb25zLnVybCArIGFkZFBhcmFtQ2hhciArICdfbWV0aG9kPURFTEVURSc7DQogICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnR5cGUgPSAnUE9TVCc7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy50eXBlID09PSAnUFVUJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51cmwgPSBvcHRpb25zLnVybCArIGFkZFBhcmFtQ2hhciArICdfbWV0aG9kPVBVVCc7DQogICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnR5cGUgPSAnUE9TVCc7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy50eXBlID09PSAnUEFUQ0gnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVybCA9IG9wdGlvbnMudXJsICsgYWRkUGFyYW1DaGFyICsgJ19tZXRob2Q9UEFUQ0gnOw0KICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy50eXBlID0gJ1BPU1QnOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIC8vIGphdmFzY3JpcHQ6ZmFsc2UgYXMgaW5pdGlhbCBpZnJhbWUgc3JjDQogICAgICAgICAgICAgICAgICAgIC8vIHByZXZlbnRzIHdhcm5pbmcgcG9wdXBzIG9uIEhUVFBTIGluIElFNi4NCiAgICAgICAgICAgICAgICAgICAgLy8gSUUgdmVyc2lvbnMgYmVsb3cgSUU4IGNhbm5vdCBzZXQgdGhlIG5hbWUgcHJvcGVydHkgb2YNCiAgICAgICAgICAgICAgICAgICAgLy8gZWxlbWVudHMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBhZGRlZCB0byB0aGUgRE9NLA0KICAgICAgICAgICAgICAgICAgICAvLyBzbyB3ZSBzZXQgdGhlIG5hbWUgYWxvbmcgd2l0aCB0aGUgaWZyYW1lIEhUTUwgbWFya3VwOg0KICAgICAgICAgICAgICAgICAgICBjb3VudGVyICs9IDE7DQogICAgICAgICAgICAgICAgICAgIGlmcmFtZSA9ICQoDQogICAgICAgICAgICAgICAgICAgICAgICAnPGlmcmFtZSBzcmM9ImphdmFzY3JpcHQ6ZmFsc2U7IiBuYW1lPSJpZnJhbWUtdHJhbnNwb3J0LScgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgKyAnIj48L2lmcmFtZT4nDQogICAgICAgICAgICAgICAgICAgICkuYmluZCgnbG9hZCcsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmaWxlSW5wdXRDbG9uZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1OYW1lcyA9ICQuaXNBcnJheShvcHRpb25zLnBhcmFtTmFtZSkgPw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wYXJhbU5hbWUgOiBbb3B0aW9ucy5wYXJhbU5hbWVdOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnVuYmluZCgnbG9hZCcpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLmJpbmQoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV3JhcCBpbiBhIHRyeS9jYXRjaCBibG9jayB0byBjYXRjaCBleGNlcHRpb25zIHRocm93bg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHRyeWluZyB0byBhY2Nlc3MgY3Jvc3MtZG9tYWluIGlmcmFtZSBjb250ZW50czoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gaWZyYW1lLmNvbnRlbnRzKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHb29nbGUgQ2hyb21lIGFuZCBGaXJlZm94IGRvIG5vdCB0aHJvdyBhbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhjZXB0aW9uIHdoZW4gY2FsbGluZyBpZnJhbWUuY29udGVudHMoKSBvbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3Jvc3MtZG9tYWluIHJlcXVlc3RzLCBzbyB3ZSB1bmlmeSB0aGUgcmVzcG9uc2U6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLmxlbmd0aCB8fCAhcmVzcG9uc2VbMF0uZmlyc3RDaGlsZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IHVuZGVmaW5lZDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgY29tcGxldGUgY2FsbGJhY2sgcmV0dXJucyB0aGUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWZyYW1lIGNvbnRlbnQgZG9jdW1lbnQgYXMgcmVzcG9uc2Ugb2JqZWN0Og0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZUNhbGxiYWNrKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1Y2Nlc3MnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydpZnJhbWUnOiByZXNwb25zZX0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRml4IGZvciBJRSBlbmRsZXNzIHByb2dyZXNzIGJhciBhY3Rpdml0eSBidWcNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKGhhcHBlbnMgb24gZm9ybSBzdWJtaXRzIHRvIGlmcmFtZSB0YXJnZXRzKToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnPGlmcmFtZSBzcmM9ImphdmFzY3JpcHQ6ZmFsc2U7Ij48L2lmcmFtZT4nKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZFRvKGZvcm0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmluZyB0aGUgZm9ybSBpbiBhIHNldFRpbWVvdXQgY2FsbA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3dzIENocm9tZSdzIGRldmVsb3BlciB0b29scyB0byBkaXNwbGF5DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcmVzcG9uc2UgcmVzdWx0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtLnJlbW92ZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAwKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJvcCgndGFyZ2V0JywgaWZyYW1lLnByb3AoJ25hbWUnKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJvcCgnYWN0aW9uJywgb3B0aW9ucy51cmwpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnByb3AoJ21ldGhvZCcsIG9wdGlvbnMudHlwZSk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5mb3JtRGF0YSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuZWFjaChvcHRpb25zLmZvcm1EYXRhLCBmdW5jdGlvbiAoaW5kZXgsIGZpZWxkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJzxpbnB1dCB0eXBlPSJoaWRkZW4iLz4nKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnByb3AoJ25hbWUnLCBmaWVsZC5uYW1lKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbChmaWVsZC52YWx1ZSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmRUbyhmb3JtKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmZpbGVJbnB1dCAmJiBvcHRpb25zLmZpbGVJbnB1dC5sZW5ndGggJiYNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy50eXBlID09PSAnUE9TVCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlSW5wdXRDbG9uZXMgPSBvcHRpb25zLmZpbGVJbnB1dC5jbG9uZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluc2VydCBhIGNsb25lIGZvciBlYWNoIGZpbGUgaW5wdXQgZmllbGQ6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5maWxlSW5wdXQuYWZ0ZXIoZnVuY3Rpb24gKGluZGV4KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWxlSW5wdXRDbG9uZXNbaW5kZXhdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnBhcmFtTmFtZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmZpbGVJbnB1dC5lYWNoKGZ1bmN0aW9uIChpbmRleCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wcm9wKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbU5hbWVzW2luZGV4XSB8fCBvcHRpb25zLnBhcmFtTmFtZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGVuZGluZyB0aGUgZmlsZSBpbnB1dCBmaWVsZHMgdG8gdGhlIGhpZGRlbiBmb3JtDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlcyB0aGVtIGZyb20gdGhlaXIgb3JpZ2luYWwgbG9jYXRpb246DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKG9wdGlvbnMuZmlsZUlucHV0KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJvcCgnZW5jdHlwZScsICdtdWx0aXBhcnQvZm9ybS1kYXRhJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5jdHlwZSBtdXN0IGJlIHNldCBhcyBlbmNvZGluZyBmb3IgSUU6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9wKCdlbmNvZGluZycsICdtdWx0aXBhcnQvZm9ybS1kYXRhJyk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBmb3JtLnN1Ym1pdCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5zZXJ0IHRoZSBmaWxlIGlucHV0IGZpZWxkcyBhdCB0aGVpciBvcmlnaW5hbCBsb2NhdGlvbg0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnkgcmVwbGFjaW5nIHRoZSBjbG9uZXMgd2l0aCB0aGUgb3JpZ2luYWxzOg0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGVJbnB1dENsb25lcyAmJiBmaWxlSW5wdXRDbG9uZXMubGVuZ3RoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5maWxlSW5wdXQuZWFjaChmdW5jdGlvbiAoaW5kZXgsIGlucHV0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjbG9uZSA9ICQoZmlsZUlucHV0Q2xvbmVzW2luZGV4XSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoaW5wdXQpLnByb3AoJ25hbWUnLCBjbG9uZS5wcm9wKCduYW1lJykpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9uZS5yZXBsYWNlV2l0aChpbnB1dCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICBmb3JtLmFwcGVuZChpZnJhbWUpLmFwcGVuZFRvKGRvY3VtZW50LmJvZHkpOw0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgYWJvcnQ6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGlmcmFtZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gamF2YXNjcmlwdDpmYWxzZSBhcyBpZnJhbWUgc3JjIGFib3J0cyB0aGUgcmVxdWVzdA0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHByZXZlbnRzIHdhcm5pbmcgcG9wdXBzIG9uIEhUVFBTIGluIElFNi4NCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmNhdCBpcyB1c2VkIHRvIGF2b2lkIHRoZSAiU2NyaXB0IFVSTCIgSlNMaW50IGVycm9yOg0KICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnVuYmluZCgnbG9hZCcpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnByb3AoJ3NyYycsICdqYXZhc2NyaXB0Jy5jb25jYXQoJzpmYWxzZTsnKSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm0pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm0ucmVtb3ZlKCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9Ow0KICAgICAgICB9DQogICAgfSk7DQoNCiAgICAvLyBUaGUgaWZyYW1lIHRyYW5zcG9ydCByZXR1cm5zIHRoZSBpZnJhbWUgY29udGVudCBkb2N1bWVudCBhcyByZXNwb25zZS4NCiAgICAvLyBUaGUgZm9sbG93aW5nIGFkZHMgY29udmVydGVycyBmcm9tIGlmcmFtZSB0byB0ZXh0LCBqc29uLCBodG1sLCB4bWwNCiAgICAvLyBhbmQgc2NyaXB0Lg0KICAgIC8vIFBsZWFzZSBub3RlIHRoYXQgdGhlIENvbnRlbnQtVHlwZSBmb3IgSlNPTiByZXNwb25zZXMgaGFzIHRvIGJlIHRleHQvcGxhaW4NCiAgICAvLyBvciB0ZXh0L2h0bWwsIGlmIHRoZSBicm93c2VyIGRvZXNuJ3QgaW5jbHVkZSBhcHBsaWNhdGlvbi9qc29uIGluIHRoZQ0KICAgIC8vIEFjY2VwdCBoZWFkZXIsIGVsc2UgSUUgd2lsbCBzaG93IGEgZG93bmxvYWQgZGlhbG9nLg0KICAgIC8vIFRoZSBDb250ZW50LVR5cGUgZm9yIFhNTCByZXNwb25zZXMgb24gdGhlIG90aGVyIGhhbmQgaGFzIHRvIGJlIGFsd2F5cw0KICAgIC8vIGFwcGxpY2F0aW9uL3htbCBvciB0ZXh0L3htbCwgc28gSUUgcHJvcGVybHkgcGFyc2VzIHRoZSBYTUwgcmVzcG9uc2UuDQogICAgLy8gU2VlIGFsc28NCiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYmx1ZWltcC9qUXVlcnktRmlsZS1VcGxvYWQvd2lraS9TZXR1cCNjb250ZW50LXR5cGUtbmVnb3RpYXRpb24NCiAgICAkLmFqYXhTZXR1cCh7DQogICAgICAgIGNvbnZlcnRlcnM6IHsNCiAgICAgICAgICAgICdpZnJhbWUgdGV4dCc6IGZ1bmN0aW9uIChpZnJhbWUpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gaWZyYW1lICYmICQoaWZyYW1lWzBdLmJvZHkpLnRleHQoKTsNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICAnaWZyYW1lIGpzb24nOiBmdW5jdGlvbiAoaWZyYW1lKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGlmcmFtZSAmJiAkLnBhcnNlSlNPTigkKGlmcmFtZVswXS5ib2R5KS50ZXh0KCkpOw0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICdpZnJhbWUgaHRtbCc6IGZ1bmN0aW9uIChpZnJhbWUpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gaWZyYW1lICYmICQoaWZyYW1lWzBdLmJvZHkpLmh0bWwoKTsNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICAnaWZyYW1lIHhtbCc6IGZ1bmN0aW9uIChpZnJhbWUpIHsNCiAgICAgICAgICAgICAgICB2YXIgeG1sRG9jID0gaWZyYW1lICYmIGlmcmFtZVswXTsNCiAgICAgICAgICAgICAgICByZXR1cm4geG1sRG9jICYmICQuaXNYTUxEb2MoeG1sRG9jKSA/IHhtbERvYyA6DQogICAgICAgICAgICAgICAgICAgICAgICAkLnBhcnNlWE1MKCh4bWxEb2MuWE1MRG9jdW1lbnQgJiYgeG1sRG9jLlhNTERvY3VtZW50LnhtbCkgfHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHhtbERvYy5ib2R5KS5odG1sKCkpOw0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICdpZnJhbWUgc2NyaXB0JzogZnVuY3Rpb24gKGlmcmFtZSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBpZnJhbWUgJiYgJC5nbG9iYWxFdmFsKCQoaWZyYW1lWzBdLmJvZHkpLnRleHQoKSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9KTsNCg0KfSkpOw0K]]></data>
	</file>
	<file>
	  <filename>/js/jquery-file-upload/package.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ew0KICAgICJuYW1lIjogImJsdWVpbXAtZmlsZS11cGxvYWQiLA0KICAgICJ2ZXJzaW9uIjogIjguMy4yIiwNCiAgICAidGl0bGUiOiAialF1ZXJ5IEZpbGUgVXBsb2FkIiwNCiAgICAiZGVzY3JpcHRpb24iOiAiRmlsZSBVcGxvYWQgd2lkZ2V0IHdpdGggbXVsdGlwbGUgZmlsZSBzZWxlY3Rpb24sIGRyYWcmYW1wO2Ryb3Agc3VwcG9ydCwgcHJvZ3Jlc3MgYmFyLCB2YWxpZGF0aW9uIGFuZCBwcmV2aWV3IGltYWdlcywgYXVkaW8gYW5kIHZpZGVvIGZvciBqUXVlcnkuIFN1cHBvcnRzIGNyb3NzLWRvbWFpbiwgY2h1bmtlZCBhbmQgcmVzdW1hYmxlIGZpbGUgdXBsb2Fkcy4gV29ya3Mgd2l0aCBhbnkgc2VydmVyLXNpZGUgcGxhdGZvcm0gKEdvb2dsZSBBcHAgRW5naW5lLCBQSFAsIFB5dGhvbiwgUnVieSBvbiBSYWlscywgSmF2YSwgZXRjLikgdGhhdCBzdXBwb3J0cyBzdGFuZGFyZCBIVE1MIGZvcm0gZmlsZSB1cGxvYWRzLiIsDQogICAgImtleXdvcmRzIjogWw0KICAgICAgICAianF1ZXJ5IiwNCiAgICAgICAgImZpbGUiLA0KICAgICAgICAidXBsb2FkIiwNCiAgICAgICAgIndpZGdldCIsDQogICAgICAgICJtdWx0aXBsZSIsDQogICAgICAgICJzZWxlY3Rpb24iLA0KICAgICAgICAiZHJhZyIsDQogICAgICAgICJkcm9wIiwNCiAgICAgICAgInByb2dyZXNzIiwNCiAgICAgICAgInByZXZpZXciLA0KICAgICAgICAiY3Jvc3MtZG9tYWluIiwNCiAgICAgICAgImNyb3NzLXNpdGUiLA0KICAgICAgICAiY2h1bmsiLA0KICAgICAgICAicmVzdW1lIiwNCiAgICAgICAgImdhZSIsDQogICAgICAgICJnbyIsDQogICAgICAgICJweXRob24iLA0KICAgICAgICAicGhwIiwNCiAgICAgICAgImJvb3RzdHJhcCINCiAgICBdLA0KICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vYmx1ZWltcC9qUXVlcnktRmlsZS1VcGxvYWQiLA0KICAgICJhdXRob3IiOiB7DQogICAgICAgICJuYW1lIjogIlNlYmFzdGlhbiBUc2NoYW4iLA0KICAgICAgICAidXJsIjogImh0dHBzOi8vYmx1ZWltcC5uZXQiDQogICAgfSwNCiAgICAibWFpbnRhaW5lcnMiOiBbDQogICAgICAgIHsNCiAgICAgICAgICAgICJuYW1lIjogIlNlYmFzdGlhbiBUc2NoYW4iLA0KICAgICAgICAgICAgInVybCI6ICJodHRwczovL2JsdWVpbXAubmV0Ig0KICAgICAgICB9DQogICAgXSwNCiAgICAicmVwb3NpdG9yeSI6IHsNCiAgICAgICAgInR5cGUiOiAiZ2l0IiwNCiAgICAgICAgInVybCI6ICJnaXQ6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkLmdpdCINCiAgICB9LA0KICAgICJidWdzIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZC9pc3N1ZXMiLA0KICAgICJsaWNlbnNlcyI6IFsNCiAgICAgICAgew0KICAgICAgICAgICAgInR5cGUiOiAiTUlUIiwNCiAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQiDQogICAgICAgIH0NCiAgICBdLA0KICAgICJkZXBlbmRlbmNpZXMiOiB7DQogICAgICAgICJqcXVlcnkiOiAiPj0xLjYiLA0KICAgICAgICAianF1ZXJ5LnVpLndpZGdldCI6ICI+PTEuOSIsDQogICAgICAgICJibHVlaW1wLXRtcGwiOiAiPj0yLjEuMCIsDQogICAgICAgICJibHVlaW1wLWxvYWQtaW1hZ2UiOiAiPj0xLjcuMCIsDQogICAgICAgICJibHVlaW1wLWNhbnZhcy10by1ibG9iIjogIj49Mi4wLjUiDQogICAgfQ0KfQ0K]]></data>
	</file>
	<file>
	  <filename>/js/jquery-file-upload/progressbar.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/js/jquery-file-upload/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBqUXVlcnkgRmlsZSBVcGxvYWQgUGx1Z2luDQoNCiMjIERlbW8NCltEZW1vIEZpbGUgVXBsb2FkXShodHRwOi8vYmx1ZWltcC5naXRodWIuY29tL2pRdWVyeS1GaWxlLVVwbG9hZC8pDQoNCiMjIFNldHVwIGluc3RydWN0aW9ucw0KKiBbSG93IHRvIHNldHVwIHRoZSBwbHVnaW4gb24geW91ciB3ZWJzaXRlXShodHRwczovL2dpdGh1Yi5jb20vYmx1ZWltcC9qUXVlcnktRmlsZS1VcGxvYWQvd2lraS9TZXR1cCkNCiogW0hvdyB0byB1c2Ugb25seSB0aGUgYmFzaWMgcGx1Z2luIChtaW5pbWFsIHNldHVwIGd1aWRlKS5dKGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZC93aWtpL0Jhc2ljLXBsdWdpbikNCg0KIyMgRmVhdHVyZXMNCiogKipNdWx0aXBsZSBmaWxlIHVwbG9hZDoqKiAgDQogIEFsbG93cyB0byBzZWxlY3QgbXVsdGlwbGUgZmlsZXMgYXQgb25jZSBhbmQgdXBsb2FkIHRoZW0gc2ltdWx0YW5lb3VzbHkuDQoqICoqRHJhZyAmIERyb3Agc3VwcG9ydDoqKiAgDQogIEFsbG93cyB0byB1cGxvYWQgZmlsZXMgYnkgZHJhZ2dpbmcgdGhlbSBmcm9tIHlvdXIgZGVza3RvcCBvciBmaWxlbWFuYWdlciBhbmQgZHJvcHBpbmcgdGhlbSBvbiB5b3VyIGJyb3dzZXIgd2luZG93Lg0KKiAqKlVwbG9hZCBwcm9ncmVzcyBiYXI6KiogIA0KICBTaG93cyBhIHByb2dyZXNzIGJhciBpbmRpY2F0aW5nIHRoZSB1cGxvYWQgcHJvZ3Jlc3MgZm9yIGluZGl2aWR1YWwgZmlsZXMgYW5kIGZvciBhbGwgdXBsb2FkcyBjb21iaW5lZC4NCiogKipDYW5jZWxhYmxlIHVwbG9hZHM6KiogIA0KICBJbmRpdmlkdWFsIGZpbGUgdXBsb2FkcyBjYW4gYmUgY2FuY2VsZWQgdG8gc3RvcCB0aGUgdXBsb2FkIHByb2dyZXNzLg0KKiAqKlJlc3VtYWJsZSB1cGxvYWRzOioqICANCiAgQWJvcnRlZCB1cGxvYWRzIGNhbiBiZSByZXN1bWVkIHdpdGggYnJvd3NlcnMgc3VwcG9ydGluZyB0aGUgQmxvYiBBUEkuDQoqICoqQ2h1bmtlZCB1cGxvYWRzOioqICANCiAgTGFyZ2UgZmlsZXMgY2FuIGJlIHVwbG9hZGVkIGluIHNtYWxsZXIgY2h1bmtzIHdpdGggYnJvd3NlcnMgc3VwcG9ydGluZyB0aGUgQmxvYiBBUEkuDQoqICoqUHJldmlldyBpbWFnZXM6KiogIA0KICBBIHByZXZpZXcgb2YgaW1hZ2UgZmlsZXMgY2FuIGJlIGRpc3BsYXllZCBiZWZvcmUgdXBsb2FkaW5nIHdpdGggYnJvd3NlcnMgc3VwcG9ydGluZyB0aGUgcmVxdWlyZWQgSFRNTDUgQVBJcy4NCiogKipObyBicm93c2VyIHBsdWdpbnMgKGUuZy4gQWRvYmUgRmxhc2gpIHJlcXVpcmVkOioqICANCiAgVGhlIGltcGxlbWVudGF0aW9uIGlzIGJhc2VkIG9uIG9wZW4gc3RhbmRhcmRzIGxpa2UgSFRNTDUgYW5kIEphdmFTY3JpcHQgYW5kIHJlcXVpcmVzIG5vIGFkZGl0aW9uYWwgYnJvd3NlciBwbHVnaW5zLg0KKiAqKkdyYWNlZnVsIGZhbGxiYWNrIGZvciBsZWdhY3kgYnJvd3NlcnM6KiogIA0KICBVcGxvYWRzIGZpbGVzIHZpYSBYTUxIdHRwUmVxdWVzdHMgaWYgc3VwcG9ydGVkIGFuZCB1c2VzIGlmcmFtZXMgYXMgZmFsbGJhY2sgZm9yIGxlZ2FjeSBicm93c2Vycy4NCiogKipIVE1MIGZpbGUgdXBsb2FkIGZvcm0gZmFsbGJhY2s6KiogIA0KICBTaG93cyBhIHN0YW5kYXJkIEhUTUwgZmlsZSB1cGxvYWQgZm9ybSBpZiBKYXZhU2NyaXB0IGlzIGRpc2FibGVkLg0KKiAqKkNyb3NzLXNpdGUgZmlsZSB1cGxvYWRzOioqICANCiAgU3VwcG9ydHMgdXBsb2FkaW5nIGZpbGVzIHRvIGEgZGlmZmVyZW50IGRvbWFpbiB3aXRoIENyb3NzLXNpdGUgWE1MSHR0cFJlcXVlc3RzLg0KKiAqKk11bHRpcGxlIHBsdWdpbiBpbnN0YW5jZXM6KiogIA0KICBBbGxvd3MgdG8gdXNlIG11bHRpcGxlIHBsdWdpbiBpbnN0YW5jZXMgb24gdGhlIHNhbWUgd2VicGFnZS4NCiogKipDdXN0b21pemFibGUgYW5kIGV4dGVuc2libGU6KiogIA0KICBQcm92aWRlcyBhbiBBUEkgdG8gc2V0IGluZGl2aWR1YWwgb3B0aW9ucyBhbmQgZGVmaW5lIGNhbGxCYWNrIG1ldGhvZHMgZm9yIHZhcmlvdXMgdXBsb2FkIGV2ZW50cy4NCiogKipNdWx0aXBhcnQgYW5kIGZpbGUgY29udGVudHMgc3RyZWFtIHVwbG9hZHM6KiogIA0KICBGaWxlcyBjYW4gYmUgdXBsb2FkZWQgYXMgc3RhbmRhcmQgIm11bHRpcGFydC9mb3JtLWRhdGEiIG9yIGZpbGUgY29udGVudHMgc3RyZWFtIChIVFRQIFBVVCBmaWxlIHVwbG9hZCkuDQoqICoqQ29tcGF0aWJsZSB3aXRoIGFueSBzZXJ2ZXItc2lkZSBhcHBsaWNhdGlvbiBwbGF0Zm9ybToqKiAgDQogIFdvcmtzIHdpdGggR29vZ2xlIEFwcCBFbmdpbmUgKFB5dGhvbiwgSmF2YSksIFJ1Ynkgb24gUmFpbHMsIFBIUCBhbmQgYW55IG90aGVyIHBsYXRmb3JtIHRoYXQgc3VwcG9ydHMgSFRUUCBmaWxlIHVwbG9hZHMuDQoNCiMjIFJlcXVpcmVtZW50cw0KKiBbalF1ZXJ5XShodHRwOi8vanF1ZXJ5LmNvbS8pIHYuIDEuNisNCiogW2pRdWVyeSBVSSB3aWRnZXQgZmFjdG9yeV0oaHR0cDovL3dpa2kuanF1ZXJ5dWkuY29tL3cvcGFnZS8xMjEzODEzNS9XaWRnZXQlMjBmYWN0b3J5KSB2LiAxLjguMTYrDQoqIFtqUXVlcnkgSWZyYW1lIFRyYW5zcG9ydCBwbHVnaW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZC9ibG9iL21hc3Rlci9qcXVlcnkuaWZyYW1lLXRyYW5zcG9ydC5qcykgKGluY2x1ZGVkKQ0KKiBbSmF2YVNjcmlwdCBMb2FkIEltYWdlIGZ1bmN0aW9uXShodHRwOi8vYmx1ZWltcC5naXRodWIuY29tL0phdmFTY3JpcHQtTG9hZC1JbWFnZSkgdi4gMS4xLjMrIChvcHRpb25hbCkNCiogW0phdmFTY3JpcHQgVGVtcGxhdGVzIGVuZ2luZV0oaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvSmF2YVNjcmlwdC1UZW1wbGF0ZXMpIHYuIDEuMC4yKyAob3B0aW9uYWwpDQoNClRoZSBqUXVlcnkgVUkgd2lkZ2V0IGZhY3RvcnkgaXMgYSByZXF1aXJlbWVudCBmb3IgdGhlIGJhc2ljIEZpbGUgVXBsb2FkIHBsdWdpbiwgYnV0IHZlcnkgbGlnaHR3ZWlnaHQgd2l0aG91dCBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzLiANClRoZSBVSSB2ZXJzaW9uIG9mIHRoZSBGaWxlIFVwbG9hZCBwbHVnaW4gYWxzbyByZXF1aXJlcyB0aGUgSmF2YVNjcmlwdCBUZW1wbGF0ZXMgZW5naW5lIGFuZCB0aGUgSmF2YVNjcmlwdCBMb2FkIEltYWdlIGZ1bmN0aW9uIChmb3IgdGhlIHVwbG9hZCBpbWFnZSBwcmV2aWV3cykuIFRoZXNlIGRlcGVuZGVuY2llcyBhcmUgbWFya2VkIGFzIG9wdGlvbmFsLCBhcyB0aGUgYmFzaWMgRmlsZSBVcGxvYWQgcGx1Z2luIGNhbiBiZSB1c2VkIHdpdGhvdXQgdGhlbSBhbmQgdGhlIFVJIHZlcnNpb24gb2YgdGhlIHBsdWdpbiBjYW4gYmUgZXh0ZW5kZWQgdG8gb3ZlcnJpZGUgdGhlc2UgZGVwZW5kZW5jaWVzIHdpdGggYWx0ZXJuYXRpdmUgc29sdXRpb25zLg0KDQpUaGUgcmVwb3NpdG9yeSBhbHNvIGluY2x1ZGVzIHRoZSBbalF1ZXJ5IFhEb21haW5SZXF1ZXN0IFRyYW5zcG9ydCBQbHVnaW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZC9ibG9iL21hc3Rlci9jb3JzL2pxdWVyeS54ZHItdHJhbnNwb3J0LmpzKSwgd2hpY2ggaXMgcmVxdWlyZWQgZm9yIENyb3NzLWRvbWFpbiBBSkFYIHJlcXVlc3RzIGluIE1pY3Jvc29mdCBJbnRlcm5ldCBFeHBsb3JlciA+PSA4LiBJdCBpcyBvbmx5IGluY2x1ZGVkIGZvciB0aGUgW0RlbW9dKGh0dHA6Ly9ibHVlaW1wLmdpdGh1Yi5jb20valF1ZXJ5LUZpbGUtVXBsb2FkLyksIHdoaWNoIG1ha2VzIHVzZSBvZiBDcm9zcy1kb21haW4gREVMRVRFIHJlcXVlc3RzIChHRVQgcmVxdWVzdHMgZm9yIElFKSB0byBkZWxldGUgdXBsb2FkZWQgZmlsZXMgZnJvbSB0aGUgRGVtbyBGaWxlIFVwbG9hZCBzZXJ2aWNlLg0KDQpbQ3Jvc3MtZG9tYWluIEZpbGUgVXBsb2Fkc10oaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkL3dpa2kvQ3Jvc3MtZG9tYWluLXVwbG9hZHMpIHVzaW5nIHRoZSBbSWZyYW1lIFRyYW5zcG9ydCBwbHVnaW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZC9ibG9iL21hc3Rlci9qcXVlcnkuaWZyYW1lLXRyYW5zcG9ydC5qcykgcmVxdWlyZSBhIHJlZGlyZWN0IGJhY2sgdG8gdGhlIG9yaWdpbiBzZXJ2ZXIgdG8gcmV0cmlldmUgdGhlIHVwbG9hZCByZXN1bHRzLiBUaGUgZXhhbXBsZSBpbXBsZW1lbnRhdGlvbiBtYWtlcyB1c2Ugb2YgW3Jlc3VsdC5odG1sXShodHRwczovL2dpdGh1Yi5jb20vYmx1ZWltcC9qUXVlcnktRmlsZS1VcGxvYWQvYmxvYi9tYXN0ZXIvY29ycy9yZXN1bHQuaHRtbCkgYXMgcmVkaXJlY3QgcGFnZS4gU2VlIGFsc28gdGhlIGV4YW1wbGUgY29kZSBpbiBbYXBwbGljYXRpb24uanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZC9ibG9iL21hc3Rlci9hcHBsaWNhdGlvbi5qcykgYXMgd2VsbCBhcyB0aGUgZXhwbGFuYXRpb24gb2YgYWxsIFtmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeV0oaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkL3dpa2kvUGx1Z2luLWZpbGVzKS4NCg0KIyMgQnJvd3NlciBTdXBwb3J0ICh0ZXN0ZWQgdmVyc2lvbnMpDQoqIEdvb2dsZSBDaHJvbWUgLSA3LjArDQoqIEFwcGxlIFNhZmFyaSAtIDQuMCsNCiogTW96aWxsYSBGaXJlZm94IC0gMy4wKw0KKiBPcGVyYSAtIDEwLjArDQoqIE1pY3Jvc29mdCBJbnRlcm5ldCBFeHBsb3JlciA2LjArDQoNCkRyYWcgJiBEcm9wIGlzIG9ubHkgc3VwcG9ydGVkIG9uIEdvb2dsZSBDaHJvbWUsIEZpcmVmb3ggNC4wKyBhbmQgU2FmYXJpIDUuMCsuICANCk1pY3Jvc29mdCBJbnRlcm5ldCBFeHBsb3JlciBoYXMgbm8gc3VwcG9ydCBmb3IgbXVsdGlwbGUgZmlsZSBzZWxlY3Rpb24gb3IgdXBsb2FkIHByb2dyZXNzLiAgDQpbRXh0ZW5kZWQgYnJvd3NlciBzdXBwb3J0IGluZm9ybWF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vYmx1ZWltcC9qUXVlcnktRmlsZS1VcGxvYWQvd2lraS9Ccm93c2VyLXN1cHBvcnQpLg0KDQojIyBMaWNlbnNlDQpSZWxlYXNlZCB1bmRlciB0aGUgW01JVCBsaWNlbnNlXShodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCkuDQo=]]></data>
	</file>
	<file>
	  <filename>/js/jquery-file-upload/vendor/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/jquery-file-upload/vendor/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/js/jquery-file-upload/vendor/jquery.ui.widget.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoNCiAqIGpRdWVyeSBVSSBXaWRnZXQgMS4xMC4zK2FtZA0KICogaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkDQogKg0KICogQ29weXJpZ2h0IDIwMTMgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycw0KICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLg0KICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQ0KICoNCiAqIGh0dHA6Ly9hcGkuanF1ZXJ5dWkuY29tL2pRdWVyeS53aWRnZXQvDQogKi8NCg0KKGZ1bmN0aW9uIChmYWN0b3J5KSB7DQogICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICJmdW5jdGlvbiIgJiYgZGVmaW5lLmFtZCkgew0KICAgICAgICAvLyBSZWdpc3RlciBhcyBhbiBhbm9ueW1vdXMgQU1EIG1vZHVsZToNCiAgICAgICAgZGVmaW5lKFsianF1ZXJ5Il0sIGZhY3RvcnkpOw0KICAgIH0gZWxzZSB7DQogICAgICAgIC8vIEJyb3dzZXIgZ2xvYmFsczoNCiAgICAgICAgZmFjdG9yeShqUXVlcnkpOw0KICAgIH0NCn0oZnVuY3Rpb24oICQsIHVuZGVmaW5lZCApIHsNCg0KdmFyIHV1aWQgPSAwLA0KCXNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLA0KCV9jbGVhbkRhdGEgPSAkLmNsZWFuRGF0YTsNCiQuY2xlYW5EYXRhID0gZnVuY3Rpb24oIGVsZW1zICkgew0KCWZvciAoIHZhciBpID0gMCwgZWxlbTsgKGVsZW0gPSBlbGVtc1tpXSkgIT0gbnVsbDsgaSsrICkgew0KCQl0cnkgew0KCQkJJCggZWxlbSApLnRyaWdnZXJIYW5kbGVyKCAicmVtb3ZlIiApOw0KCQkvLyBodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC84MjM1DQoJCX0gY2F0Y2goIGUgKSB7fQ0KCX0NCglfY2xlYW5EYXRhKCBlbGVtcyApOw0KfTsNCg0KJC53aWRnZXQgPSBmdW5jdGlvbiggbmFtZSwgYmFzZSwgcHJvdG90eXBlICkgew0KCXZhciBmdWxsTmFtZSwgZXhpc3RpbmdDb25zdHJ1Y3RvciwgY29uc3RydWN0b3IsIGJhc2VQcm90b3R5cGUsDQoJCS8vIHByb3hpZWRQcm90b3R5cGUgYWxsb3dzIHRoZSBwcm92aWRlZCBwcm90b3R5cGUgdG8gcmVtYWluIHVubW9kaWZpZWQNCgkJLy8gc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBhcyBhIG1peGluIGZvciBtdWx0aXBsZSB3aWRnZXRzICgjODg3NikNCgkJcHJveGllZFByb3RvdHlwZSA9IHt9LA0KCQluYW1lc3BhY2UgPSBuYW1lLnNwbGl0KCAiLiIgKVsgMCBdOw0KDQoJbmFtZSA9IG5hbWUuc3BsaXQoICIuIiApWyAxIF07DQoJZnVsbE5hbWUgPSBuYW1lc3BhY2UgKyAiLSIgKyBuYW1lOw0KDQoJaWYgKCAhcHJvdG90eXBlICkgew0KCQlwcm90b3R5cGUgPSBiYXNlOw0KCQliYXNlID0gJC5XaWRnZXQ7DQoJfQ0KDQoJLy8gY3JlYXRlIHNlbGVjdG9yIGZvciBwbHVnaW4NCgkkLmV4cHJbICI6IiBdWyBmdWxsTmFtZS50b0xvd2VyQ2FzZSgpIF0gPSBmdW5jdGlvbiggZWxlbSApIHsNCgkJcmV0dXJuICEhJC5kYXRhKCBlbGVtLCBmdWxsTmFtZSApOw0KCX07DQoNCgkkWyBuYW1lc3BhY2UgXSA9ICRbIG5hbWVzcGFjZSBdIHx8IHt9Ow0KCWV4aXN0aW5nQ29uc3RydWN0b3IgPSAkWyBuYW1lc3BhY2UgXVsgbmFtZSBdOw0KCWNvbnN0cnVjdG9yID0gJFsgbmFtZXNwYWNlIF1bIG5hbWUgXSA9IGZ1bmN0aW9uKCBvcHRpb25zLCBlbGVtZW50ICkgew0KCQkvLyBhbGxvdyBpbnN0YW50aWF0aW9uIHdpdGhvdXQgIm5ldyIga2V5d29yZA0KCQlpZiAoICF0aGlzLl9jcmVhdGVXaWRnZXQgKSB7DQoJCQlyZXR1cm4gbmV3IGNvbnN0cnVjdG9yKCBvcHRpb25zLCBlbGVtZW50ICk7DQoJCX0NCg0KCQkvLyBhbGxvdyBpbnN0YW50aWF0aW9uIHdpdGhvdXQgaW5pdGlhbGl6aW5nIGZvciBzaW1wbGUgaW5oZXJpdGFuY2UNCgkJLy8gbXVzdCB1c2UgIm5ldyIga2V5d29yZCAodGhlIGNvZGUgYWJvdmUgYWx3YXlzIHBhc3NlcyBhcmdzKQ0KCQlpZiAoIGFyZ3VtZW50cy5sZW5ndGggKSB7DQoJCQl0aGlzLl9jcmVhdGVXaWRnZXQoIG9wdGlvbnMsIGVsZW1lbnQgKTsNCgkJfQ0KCX07DQoJLy8gZXh0ZW5kIHdpdGggdGhlIGV4aXN0aW5nIGNvbnN0cnVjdG9yIHRvIGNhcnJ5IG92ZXIgYW55IHN0YXRpYyBwcm9wZXJ0aWVzDQoJJC5leHRlbmQoIGNvbnN0cnVjdG9yLCBleGlzdGluZ0NvbnN0cnVjdG9yLCB7DQoJCXZlcnNpb246IHByb3RvdHlwZS52ZXJzaW9uLA0KCQkvLyBjb3B5IHRoZSBvYmplY3QgdXNlZCB0byBjcmVhdGUgdGhlIHByb3RvdHlwZSBpbiBjYXNlIHdlIG5lZWQgdG8NCgkJLy8gcmVkZWZpbmUgdGhlIHdpZGdldCBsYXRlcg0KCQlfcHJvdG86ICQuZXh0ZW5kKCB7fSwgcHJvdG90eXBlICksDQoJCS8vIHRyYWNrIHdpZGdldHMgdGhhdCBpbmhlcml0IGZyb20gdGhpcyB3aWRnZXQgaW4gY2FzZSB0aGlzIHdpZGdldCBpcw0KCQkvLyByZWRlZmluZWQgYWZ0ZXIgYSB3aWRnZXQgaW5oZXJpdHMgZnJvbSBpdA0KCQlfY2hpbGRDb25zdHJ1Y3RvcnM6IFtdDQoJfSk7DQoNCgliYXNlUHJvdG90eXBlID0gbmV3IGJhc2UoKTsNCgkvLyB3ZSBuZWVkIHRvIG1ha2UgdGhlIG9wdGlvbnMgaGFzaCBhIHByb3BlcnR5IGRpcmVjdGx5IG9uIHRoZSBuZXcgaW5zdGFuY2UNCgkvLyBvdGhlcndpc2Ugd2UnbGwgbW9kaWZ5IHRoZSBvcHRpb25zIGhhc2ggb24gdGhlIHByb3RvdHlwZSB0aGF0IHdlJ3JlDQoJLy8gaW5oZXJpdGluZyBmcm9tDQoJYmFzZVByb3RvdHlwZS5vcHRpb25zID0gJC53aWRnZXQuZXh0ZW5kKCB7fSwgYmFzZVByb3RvdHlwZS5vcHRpb25zICk7DQoJJC5lYWNoKCBwcm90b3R5cGUsIGZ1bmN0aW9uKCBwcm9wLCB2YWx1ZSApIHsNCgkJaWYgKCAhJC5pc0Z1bmN0aW9uKCB2YWx1ZSApICkgew0KCQkJcHJveGllZFByb3RvdHlwZVsgcHJvcCBdID0gdmFsdWU7DQoJCQlyZXR1cm47DQoJCX0NCgkJcHJveGllZFByb3RvdHlwZVsgcHJvcCBdID0gKGZ1bmN0aW9uKCkgew0KCQkJdmFyIF9zdXBlciA9IGZ1bmN0aW9uKCkgew0KCQkJCQlyZXR1cm4gYmFzZS5wcm90b3R5cGVbIHByb3AgXS5hcHBseSggdGhpcywgYXJndW1lbnRzICk7DQoJCQkJfSwNCgkJCQlfc3VwZXJBcHBseSA9IGZ1bmN0aW9uKCBhcmdzICkgew0KCQkJCQlyZXR1cm4gYmFzZS5wcm90b3R5cGVbIHByb3AgXS5hcHBseSggdGhpcywgYXJncyApOw0KCQkJCX07DQoJCQlyZXR1cm4gZnVuY3Rpb24oKSB7DQoJCQkJdmFyIF9fc3VwZXIgPSB0aGlzLl9zdXBlciwNCgkJCQkJX19zdXBlckFwcGx5ID0gdGhpcy5fc3VwZXJBcHBseSwNCgkJCQkJcmV0dXJuVmFsdWU7DQoNCgkJCQl0aGlzLl9zdXBlciA9IF9zdXBlcjsNCgkJCQl0aGlzLl9zdXBlckFwcGx5ID0gX3N1cGVyQXBwbHk7DQoNCgkJCQlyZXR1cm5WYWx1ZSA9IHZhbHVlLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTsNCg0KCQkJCXRoaXMuX3N1cGVyID0gX19zdXBlcjsNCgkJCQl0aGlzLl9zdXBlckFwcGx5ID0gX19zdXBlckFwcGx5Ow0KDQoJCQkJcmV0dXJuIHJldHVyblZhbHVlOw0KCQkJfTsNCgkJfSkoKTsNCgl9KTsNCgljb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSAkLndpZGdldC5leHRlbmQoIGJhc2VQcm90b3R5cGUsIHsNCgkJLy8gVE9ETzogcmVtb3ZlIHN1cHBvcnQgZm9yIHdpZGdldEV2ZW50UHJlZml4DQoJCS8vIGFsd2F5cyB1c2UgdGhlIG5hbWUgKyBhIGNvbG9uIGFzIHRoZSBwcmVmaXgsIGUuZy4sIGRyYWdnYWJsZTpzdGFydA0KCQkvLyBkb24ndCBwcmVmaXggZm9yIHdpZGdldHMgdGhhdCBhcmVuJ3QgRE9NLWJhc2VkDQoJCXdpZGdldEV2ZW50UHJlZml4OiBleGlzdGluZ0NvbnN0cnVjdG9yID8gYmFzZVByb3RvdHlwZS53aWRnZXRFdmVudFByZWZpeCA6IG5hbWUNCgl9LCBwcm94aWVkUHJvdG90eXBlLCB7DQoJCWNvbnN0cnVjdG9yOiBjb25zdHJ1Y3RvciwNCgkJbmFtZXNwYWNlOiBuYW1lc3BhY2UsDQoJCXdpZGdldE5hbWU6IG5hbWUsDQoJCXdpZGdldEZ1bGxOYW1lOiBmdWxsTmFtZQ0KCX0pOw0KDQoJLy8gSWYgdGhpcyB3aWRnZXQgaXMgYmVpbmcgcmVkZWZpbmVkIHRoZW4gd2UgbmVlZCB0byBmaW5kIGFsbCB3aWRnZXRzIHRoYXQNCgkvLyBhcmUgaW5oZXJpdGluZyBmcm9tIGl0IGFuZCByZWRlZmluZSBhbGwgb2YgdGhlbSBzbyB0aGF0IHRoZXkgaW5oZXJpdCBmcm9tDQoJLy8gdGhlIG5ldyB2ZXJzaW9uIG9mIHRoaXMgd2lkZ2V0LiBXZSdyZSBlc3NlbnRpYWxseSB0cnlpbmcgdG8gcmVwbGFjZSBvbmUNCgkvLyBsZXZlbCBpbiB0aGUgcHJvdG90eXBlIGNoYWluLg0KCWlmICggZXhpc3RpbmdDb25zdHJ1Y3RvciApIHsNCgkJJC5lYWNoKCBleGlzdGluZ0NvbnN0cnVjdG9yLl9jaGlsZENvbnN0cnVjdG9ycywgZnVuY3Rpb24oIGksIGNoaWxkICkgew0KCQkJdmFyIGNoaWxkUHJvdG90eXBlID0gY2hpbGQucHJvdG90eXBlOw0KDQoJCQkvLyByZWRlZmluZSB0aGUgY2hpbGQgd2lkZ2V0IHVzaW5nIHRoZSBzYW1lIHByb3RvdHlwZSB0aGF0IHdhcw0KCQkJLy8gb3JpZ2luYWxseSB1c2VkLCBidXQgaW5oZXJpdCBmcm9tIHRoZSBuZXcgdmVyc2lvbiBvZiB0aGUgYmFzZQ0KCQkJJC53aWRnZXQoIGNoaWxkUHJvdG90eXBlLm5hbWVzcGFjZSArICIuIiArIGNoaWxkUHJvdG90eXBlLndpZGdldE5hbWUsIGNvbnN0cnVjdG9yLCBjaGlsZC5fcHJvdG8gKTsNCgkJfSk7DQoJCS8vIHJlbW92ZSB0aGUgbGlzdCBvZiBleGlzdGluZyBjaGlsZCBjb25zdHJ1Y3RvcnMgZnJvbSB0aGUgb2xkIGNvbnN0cnVjdG9yDQoJCS8vIHNvIHRoZSBvbGQgY2hpbGQgY29uc3RydWN0b3JzIGNhbiBiZSBnYXJiYWdlIGNvbGxlY3RlZA0KCQlkZWxldGUgZXhpc3RpbmdDb25zdHJ1Y3Rvci5fY2hpbGRDb25zdHJ1Y3RvcnM7DQoJfSBlbHNlIHsNCgkJYmFzZS5fY2hpbGRDb25zdHJ1Y3RvcnMucHVzaCggY29uc3RydWN0b3IgKTsNCgl9DQoNCgkkLndpZGdldC5icmlkZ2UoIG5hbWUsIGNvbnN0cnVjdG9yICk7DQp9Ow0KDQokLndpZGdldC5leHRlbmQgPSBmdW5jdGlvbiggdGFyZ2V0ICkgew0KCXZhciBpbnB1dCA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cywgMSApLA0KCQlpbnB1dEluZGV4ID0gMCwNCgkJaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgsDQoJCWtleSwNCgkJdmFsdWU7DQoJZm9yICggOyBpbnB1dEluZGV4IDwgaW5wdXRMZW5ndGg7IGlucHV0SW5kZXgrKyApIHsNCgkJZm9yICgga2V5IGluIGlucHV0WyBpbnB1dEluZGV4IF0gKSB7DQoJCQl2YWx1ZSA9IGlucHV0WyBpbnB1dEluZGV4IF1bIGtleSBdOw0KCQkJaWYgKCBpbnB1dFsgaW5wdXRJbmRleCBdLmhhc093blByb3BlcnR5KCBrZXkgKSAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICkgew0KCQkJCS8vIENsb25lIG9iamVjdHMNCgkJCQlpZiAoICQuaXNQbGFpbk9iamVjdCggdmFsdWUgKSApIHsNCgkJCQkJdGFyZ2V0WyBrZXkgXSA9ICQuaXNQbGFpbk9iamVjdCggdGFyZ2V0WyBrZXkgXSApID8NCgkJCQkJCSQud2lkZ2V0LmV4dGVuZCgge30sIHRhcmdldFsga2V5IF0sIHZhbHVlICkgOg0KCQkJCQkJLy8gRG9uJ3QgZXh0ZW5kIHN0cmluZ3MsIGFycmF5cywgZXRjLiB3aXRoIG9iamVjdHMNCgkJCQkJCSQud2lkZ2V0LmV4dGVuZCgge30sIHZhbHVlICk7DQoJCQkJLy8gQ29weSBldmVyeXRoaW5nIGVsc2UgYnkgcmVmZXJlbmNlDQoJCQkJfSBlbHNlIHsNCgkJCQkJdGFyZ2V0WyBrZXkgXSA9IHZhbHVlOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCglyZXR1cm4gdGFyZ2V0Ow0KfTsNCg0KJC53aWRnZXQuYnJpZGdlID0gZnVuY3Rpb24oIG5hbWUsIG9iamVjdCApIHsNCgl2YXIgZnVsbE5hbWUgPSBvYmplY3QucHJvdG90eXBlLndpZGdldEZ1bGxOYW1lIHx8IG5hbWU7DQoJJC5mblsgbmFtZSBdID0gZnVuY3Rpb24oIG9wdGlvbnMgKSB7DQoJCXZhciBpc01ldGhvZENhbGwgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gInN0cmluZyIsDQoJCQlhcmdzID0gc2xpY2UuY2FsbCggYXJndW1lbnRzLCAxICksDQoJCQlyZXR1cm5WYWx1ZSA9IHRoaXM7DQoNCgkJLy8gYWxsb3cgbXVsdGlwbGUgaGFzaGVzIHRvIGJlIHBhc3NlZCBvbiBpbml0DQoJCW9wdGlvbnMgPSAhaXNNZXRob2RDYWxsICYmIGFyZ3MubGVuZ3RoID8NCgkJCSQud2lkZ2V0LmV4dGVuZC5hcHBseSggbnVsbCwgWyBvcHRpb25zIF0uY29uY2F0KGFyZ3MpICkgOg0KCQkJb3B0aW9uczsNCg0KCQlpZiAoIGlzTWV0aG9kQ2FsbCApIHsNCgkJCXRoaXMuZWFjaChmdW5jdGlvbigpIHsNCgkJCQl2YXIgbWV0aG9kVmFsdWUsDQoJCQkJCWluc3RhbmNlID0gJC5kYXRhKCB0aGlzLCBmdWxsTmFtZSApOw0KCQkJCWlmICggIWluc3RhbmNlICkgew0KCQkJCQlyZXR1cm4gJC5lcnJvciggImNhbm5vdCBjYWxsIG1ldGhvZHMgb24gIiArIG5hbWUgKyAiIHByaW9yIHRvIGluaXRpYWxpemF0aW9uOyAiICsNCgkJCQkJCSJhdHRlbXB0ZWQgdG8gY2FsbCBtZXRob2QgJyIgKyBvcHRpb25zICsgIiciICk7DQoJCQkJfQ0KCQkJCWlmICggISQuaXNGdW5jdGlvbiggaW5zdGFuY2Vbb3B0aW9uc10gKSB8fCBvcHRpb25zLmNoYXJBdCggMCApID09PSAiXyIgKSB7DQoJCQkJCXJldHVybiAkLmVycm9yKCAibm8gc3VjaCBtZXRob2QgJyIgKyBvcHRpb25zICsgIicgZm9yICIgKyBuYW1lICsgIiB3aWRnZXQgaW5zdGFuY2UiICk7DQoJCQkJfQ0KCQkJCW1ldGhvZFZhbHVlID0gaW5zdGFuY2VbIG9wdGlvbnMgXS5hcHBseSggaW5zdGFuY2UsIGFyZ3MgKTsNCgkJCQlpZiAoIG1ldGhvZFZhbHVlICE9PSBpbnN0YW5jZSAmJiBtZXRob2RWYWx1ZSAhPT0gdW5kZWZpbmVkICkgew0KCQkJCQlyZXR1cm5WYWx1ZSA9IG1ldGhvZFZhbHVlICYmIG1ldGhvZFZhbHVlLmpxdWVyeSA/DQoJCQkJCQlyZXR1cm5WYWx1ZS5wdXNoU3RhY2soIG1ldGhvZFZhbHVlLmdldCgpICkgOg0KCQkJCQkJbWV0aG9kVmFsdWU7DQoJCQkJCXJldHVybiBmYWxzZTsNCgkJCQl9DQoJCQl9KTsNCgkJfSBlbHNlIHsNCgkJCXRoaXMuZWFjaChmdW5jdGlvbigpIHsNCgkJCQl2YXIgaW5zdGFuY2UgPSAkLmRhdGEoIHRoaXMsIGZ1bGxOYW1lICk7DQoJCQkJaWYgKCBpbnN0YW5jZSApIHsNCgkJCQkJaW5zdGFuY2Uub3B0aW9uKCBvcHRpb25zIHx8IHt9ICkuX2luaXQoKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkLmRhdGEoIHRoaXMsIGZ1bGxOYW1lLCBuZXcgb2JqZWN0KCBvcHRpb25zLCB0aGlzICkgKTsNCgkJCQl9DQoJCQl9KTsNCgkJfQ0KDQoJCXJldHVybiByZXR1cm5WYWx1ZTsNCgl9Ow0KfTsNCg0KJC5XaWRnZXQgPSBmdW5jdGlvbiggLyogb3B0aW9ucywgZWxlbWVudCAqLyApIHt9Ow0KJC5XaWRnZXQuX2NoaWxkQ29uc3RydWN0b3JzID0gW107DQoNCiQuV2lkZ2V0LnByb3RvdHlwZSA9IHsNCgl3aWRnZXROYW1lOiAid2lkZ2V0IiwNCgl3aWRnZXRFdmVudFByZWZpeDogIiIsDQoJZGVmYXVsdEVsZW1lbnQ6ICI8ZGl2PiIsDQoJb3B0aW9uczogew0KCQlkaXNhYmxlZDogZmFsc2UsDQoNCgkJLy8gY2FsbGJhY2tzDQoJCWNyZWF0ZTogbnVsbA0KCX0sDQoJX2NyZWF0ZVdpZGdldDogZnVuY3Rpb24oIG9wdGlvbnMsIGVsZW1lbnQgKSB7DQoJCWVsZW1lbnQgPSAkKCBlbGVtZW50IHx8IHRoaXMuZGVmYXVsdEVsZW1lbnQgfHwgdGhpcyApWyAwIF07DQoJCXRoaXMuZWxlbWVudCA9ICQoIGVsZW1lbnQgKTsNCgkJdGhpcy51dWlkID0gdXVpZCsrOw0KCQl0aGlzLmV2ZW50TmFtZXNwYWNlID0gIi4iICsgdGhpcy53aWRnZXROYW1lICsgdGhpcy51dWlkOw0KCQl0aGlzLm9wdGlvbnMgPSAkLndpZGdldC5leHRlbmQoIHt9LA0KCQkJdGhpcy5vcHRpb25zLA0KCQkJdGhpcy5fZ2V0Q3JlYXRlT3B0aW9ucygpLA0KCQkJb3B0aW9ucyApOw0KDQoJCXRoaXMuYmluZGluZ3MgPSAkKCk7DQoJCXRoaXMuaG92ZXJhYmxlID0gJCgpOw0KCQl0aGlzLmZvY3VzYWJsZSA9ICQoKTsNCg0KCQlpZiAoIGVsZW1lbnQgIT09IHRoaXMgKSB7DQoJCQkkLmRhdGEoIGVsZW1lbnQsIHRoaXMud2lkZ2V0RnVsbE5hbWUsIHRoaXMgKTsNCgkJCXRoaXMuX29uKCB0cnVlLCB0aGlzLmVsZW1lbnQsIHsNCgkJCQlyZW1vdmU6IGZ1bmN0aW9uKCBldmVudCApIHsNCgkJCQkJaWYgKCBldmVudC50YXJnZXQgPT09IGVsZW1lbnQgKSB7DQoJCQkJCQl0aGlzLmRlc3Ryb3koKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0pOw0KCQkJdGhpcy5kb2N1bWVudCA9ICQoIGVsZW1lbnQuc3R5bGUgPw0KCQkJCS8vIGVsZW1lbnQgd2l0aGluIHRoZSBkb2N1bWVudA0KCQkJCWVsZW1lbnQub3duZXJEb2N1bWVudCA6DQoJCQkJLy8gZWxlbWVudCBpcyB3aW5kb3cgb3IgZG9jdW1lbnQNCgkJCQllbGVtZW50LmRvY3VtZW50IHx8IGVsZW1lbnQgKTsNCgkJCXRoaXMud2luZG93ID0gJCggdGhpcy5kb2N1bWVudFswXS5kZWZhdWx0VmlldyB8fCB0aGlzLmRvY3VtZW50WzBdLnBhcmVudFdpbmRvdyApOw0KCQl9DQoNCgkJdGhpcy5fY3JlYXRlKCk7DQoJCXRoaXMuX3RyaWdnZXIoICJjcmVhdGUiLCBudWxsLCB0aGlzLl9nZXRDcmVhdGVFdmVudERhdGEoKSApOw0KCQl0aGlzLl9pbml0KCk7DQoJfSwNCglfZ2V0Q3JlYXRlT3B0aW9uczogJC5ub29wLA0KCV9nZXRDcmVhdGVFdmVudERhdGE6ICQubm9vcCwNCglfY3JlYXRlOiAkLm5vb3AsDQoJX2luaXQ6ICQubm9vcCwNCg0KCWRlc3Ryb3k6IGZ1bmN0aW9uKCkgew0KCQl0aGlzLl9kZXN0cm95KCk7DQoJCS8vIHdlIGNhbiBwcm9iYWJseSByZW1vdmUgdGhlIHVuYmluZCBjYWxscyBpbiAyLjANCgkJLy8gYWxsIGV2ZW50IGJpbmRpbmdzIHNob3VsZCBnbyB0aHJvdWdoIHRoaXMuX29uKCkNCgkJdGhpcy5lbGVtZW50DQoJCQkudW5iaW5kKCB0aGlzLmV2ZW50TmFtZXNwYWNlICkNCgkJCS8vIDEuOSBCQyBmb3IgIzc4MTANCgkJCS8vIFRPRE8gcmVtb3ZlIGR1YWwgc3RvcmFnZQ0KCQkJLnJlbW92ZURhdGEoIHRoaXMud2lkZ2V0TmFtZSApDQoJCQkucmVtb3ZlRGF0YSggdGhpcy53aWRnZXRGdWxsTmFtZSApDQoJCQkvLyBzdXBwb3J0OiBqcXVlcnkgPDEuNi4zDQoJCQkvLyBodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC85NDEzDQoJCQkucmVtb3ZlRGF0YSggJC5jYW1lbENhc2UoIHRoaXMud2lkZ2V0RnVsbE5hbWUgKSApOw0KCQl0aGlzLndpZGdldCgpDQoJCQkudW5iaW5kKCB0aGlzLmV2ZW50TmFtZXNwYWNlICkNCgkJCS5yZW1vdmVBdHRyKCAiYXJpYS1kaXNhYmxlZCIgKQ0KCQkJLnJlbW92ZUNsYXNzKA0KCQkJCXRoaXMud2lkZ2V0RnVsbE5hbWUgKyAiLWRpc2FibGVkICIgKw0KCQkJCSJ1aS1zdGF0ZS1kaXNhYmxlZCIgKTsNCg0KCQkvLyBjbGVhbiB1cCBldmVudHMgYW5kIHN0YXRlcw0KCQl0aGlzLmJpbmRpbmdzLnVuYmluZCggdGhpcy5ldmVudE5hbWVzcGFjZSApOw0KCQl0aGlzLmhvdmVyYWJsZS5yZW1vdmVDbGFzcyggInVpLXN0YXRlLWhvdmVyIiApOw0KCQl0aGlzLmZvY3VzYWJsZS5yZW1vdmVDbGFzcyggInVpLXN0YXRlLWZvY3VzIiApOw0KCX0sDQoJX2Rlc3Ryb3k6ICQubm9vcCwNCg0KCXdpZGdldDogZnVuY3Rpb24oKSB7DQoJCXJldHVybiB0aGlzLmVsZW1lbnQ7DQoJfSwNCg0KCW9wdGlvbjogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7DQoJCXZhciBvcHRpb25zID0ga2V5LA0KCQkJcGFydHMsDQoJCQljdXJPcHRpb24sDQoJCQlpOw0KDQoJCWlmICggYXJndW1lbnRzLmxlbmd0aCA9PT0gMCApIHsNCgkJCS8vIGRvbid0IHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGUgaW50ZXJuYWwgaGFzaA0KCQkJcmV0dXJuICQud2lkZ2V0LmV4dGVuZCgge30sIHRoaXMub3B0aW9ucyApOw0KCQl9DQoNCgkJaWYgKCB0eXBlb2Yga2V5ID09PSAic3RyaW5nIiApIHsNCgkJCS8vIGhhbmRsZSBuZXN0ZWQga2V5cywgZS5nLiwgImZvby5iYXIiID0+IHsgZm9vOiB7IGJhcjogX19fIH0gfQ0KCQkJb3B0aW9ucyA9IHt9Ow0KCQkJcGFydHMgPSBrZXkuc3BsaXQoICIuIiApOw0KCQkJa2V5ID0gcGFydHMuc2hpZnQoKTsNCgkJCWlmICggcGFydHMubGVuZ3RoICkgew0KCQkJCWN1ck9wdGlvbiA9IG9wdGlvbnNbIGtleSBdID0gJC53aWRnZXQuZXh0ZW5kKCB7fSwgdGhpcy5vcHRpb25zWyBrZXkgXSApOw0KCQkJCWZvciAoIGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoIC0gMTsgaSsrICkgew0KCQkJCQljdXJPcHRpb25bIHBhcnRzWyBpIF0gXSA9IGN1ck9wdGlvblsgcGFydHNbIGkgXSBdIHx8IHt9Ow0KCQkJCQljdXJPcHRpb24gPSBjdXJPcHRpb25bIHBhcnRzWyBpIF0gXTsNCgkJCQl9DQoJCQkJa2V5ID0gcGFydHMucG9wKCk7DQoJCQkJaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgew0KCQkJCQlyZXR1cm4gY3VyT3B0aW9uWyBrZXkgXSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGN1ck9wdGlvblsga2V5IF07DQoJCQkJfQ0KCQkJCWN1ck9wdGlvblsga2V5IF0gPSB2YWx1ZTsNCgkJCX0gZWxzZSB7DQoJCQkJaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgew0KCQkJCQlyZXR1cm4gdGhpcy5vcHRpb25zWyBrZXkgXSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IHRoaXMub3B0aW9uc1sga2V5IF07DQoJCQkJfQ0KCQkJCW9wdGlvbnNbIGtleSBdID0gdmFsdWU7DQoJCQl9DQoJCX0NCg0KCQl0aGlzLl9zZXRPcHRpb25zKCBvcHRpb25zICk7DQoNCgkJcmV0dXJuIHRoaXM7DQoJfSwNCglfc2V0T3B0aW9uczogZnVuY3Rpb24oIG9wdGlvbnMgKSB7DQoJCXZhciBrZXk7DQoNCgkJZm9yICgga2V5IGluIG9wdGlvbnMgKSB7DQoJCQl0aGlzLl9zZXRPcHRpb24oIGtleSwgb3B0aW9uc1sga2V5IF0gKTsNCgkJfQ0KDQoJCXJldHVybiB0aGlzOw0KCX0sDQoJX3NldE9wdGlvbjogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7DQoJCXRoaXMub3B0aW9uc1sga2V5IF0gPSB2YWx1ZTsNCg0KCQlpZiAoIGtleSA9PT0gImRpc2FibGVkIiApIHsNCgkJCXRoaXMud2lkZ2V0KCkNCgkJCQkudG9nZ2xlQ2xhc3MoIHRoaXMud2lkZ2V0RnVsbE5hbWUgKyAiLWRpc2FibGVkIHVpLXN0YXRlLWRpc2FibGVkIiwgISF2YWx1ZSApDQoJCQkJLmF0dHIoICJhcmlhLWRpc2FibGVkIiwgdmFsdWUgKTsNCgkJCXRoaXMuaG92ZXJhYmxlLnJlbW92ZUNsYXNzKCAidWktc3RhdGUtaG92ZXIiICk7DQoJCQl0aGlzLmZvY3VzYWJsZS5yZW1vdmVDbGFzcyggInVpLXN0YXRlLWZvY3VzIiApOw0KCQl9DQoNCgkJcmV0dXJuIHRoaXM7DQoJfSwNCg0KCWVuYWJsZTogZnVuY3Rpb24oKSB7DQoJCXJldHVybiB0aGlzLl9zZXRPcHRpb24oICJkaXNhYmxlZCIsIGZhbHNlICk7DQoJfSwNCglkaXNhYmxlOiBmdW5jdGlvbigpIHsNCgkJcmV0dXJuIHRoaXMuX3NldE9wdGlvbiggImRpc2FibGVkIiwgdHJ1ZSApOw0KCX0sDQoNCglfb246IGZ1bmN0aW9uKCBzdXBwcmVzc0Rpc2FibGVkQ2hlY2ssIGVsZW1lbnQsIGhhbmRsZXJzICkgew0KCQl2YXIgZGVsZWdhdGVFbGVtZW50LA0KCQkJaW5zdGFuY2UgPSB0aGlzOw0KDQoJCS8vIG5vIHN1cHByZXNzRGlzYWJsZWRDaGVjayBmbGFnLCBzaHVmZmxlIGFyZ3VtZW50cw0KCQlpZiAoIHR5cGVvZiBzdXBwcmVzc0Rpc2FibGVkQ2hlY2sgIT09ICJib29sZWFuIiApIHsNCgkJCWhhbmRsZXJzID0gZWxlbWVudDsNCgkJCWVsZW1lbnQgPSBzdXBwcmVzc0Rpc2FibGVkQ2hlY2s7DQoJCQlzdXBwcmVzc0Rpc2FibGVkQ2hlY2sgPSBmYWxzZTsNCgkJfQ0KDQoJCS8vIG5vIGVsZW1lbnQgYXJndW1lbnQsIHNodWZmbGUgYW5kIHVzZSB0aGlzLmVsZW1lbnQNCgkJaWYgKCAhaGFuZGxlcnMgKSB7DQoJCQloYW5kbGVycyA9IGVsZW1lbnQ7DQoJCQllbGVtZW50ID0gdGhpcy5lbGVtZW50Ow0KCQkJZGVsZWdhdGVFbGVtZW50ID0gdGhpcy53aWRnZXQoKTsNCgkJfSBlbHNlIHsNCgkJCS8vIGFjY2VwdCBzZWxlY3RvcnMsIERPTSBlbGVtZW50cw0KCQkJZWxlbWVudCA9IGRlbGVnYXRlRWxlbWVudCA9ICQoIGVsZW1lbnQgKTsNCgkJCXRoaXMuYmluZGluZ3MgPSB0aGlzLmJpbmRpbmdzLmFkZCggZWxlbWVudCApOw0KCQl9DQoNCgkJJC5lYWNoKCBoYW5kbGVycywgZnVuY3Rpb24oIGV2ZW50LCBoYW5kbGVyICkgew0KCQkJZnVuY3Rpb24gaGFuZGxlclByb3h5KCkgew0KCQkJCS8vIGFsbG93IHdpZGdldHMgdG8gY3VzdG9taXplIHRoZSBkaXNhYmxlZCBoYW5kbGluZw0KCQkJCS8vIC0gZGlzYWJsZWQgYXMgYW4gYXJyYXkgaW5zdGVhZCBvZiBib29sZWFuDQoJCQkJLy8gLSBkaXNhYmxlZCBjbGFzcyBhcyBtZXRob2QgZm9yIGRpc2FibGluZyBpbmRpdmlkdWFsIHBhcnRzDQoJCQkJaWYgKCAhc3VwcHJlc3NEaXNhYmxlZENoZWNrICYmDQoJCQkJCQkoIGluc3RhbmNlLm9wdGlvbnMuZGlzYWJsZWQgPT09IHRydWUgfHwNCgkJCQkJCQkkKCB0aGlzICkuaGFzQ2xhc3MoICJ1aS1zdGF0ZS1kaXNhYmxlZCIgKSApICkgew0KCQkJCQlyZXR1cm47DQoJCQkJfQ0KCQkJCXJldHVybiAoIHR5cGVvZiBoYW5kbGVyID09PSAic3RyaW5nIiA/IGluc3RhbmNlWyBoYW5kbGVyIF0gOiBoYW5kbGVyICkNCgkJCQkJLmFwcGx5KCBpbnN0YW5jZSwgYXJndW1lbnRzICk7DQoJCQl9DQoNCgkJCS8vIGNvcHkgdGhlIGd1aWQgc28gZGlyZWN0IHVuYmluZGluZyB3b3Jrcw0KCQkJaWYgKCB0eXBlb2YgaGFuZGxlciAhPT0gInN0cmluZyIgKSB7DQoJCQkJaGFuZGxlclByb3h5Lmd1aWQgPSBoYW5kbGVyLmd1aWQgPQ0KCQkJCQloYW5kbGVyLmd1aWQgfHwgaGFuZGxlclByb3h5Lmd1aWQgfHwgJC5ndWlkKys7DQoJCQl9DQoNCgkJCXZhciBtYXRjaCA9IGV2ZW50Lm1hdGNoKCAvXihcdyspXHMqKC4qKSQvICksDQoJCQkJZXZlbnROYW1lID0gbWF0Y2hbMV0gKyBpbnN0YW5jZS5ldmVudE5hbWVzcGFjZSwNCgkJCQlzZWxlY3RvciA9IG1hdGNoWzJdOw0KCQkJaWYgKCBzZWxlY3RvciApIHsNCgkJCQlkZWxlZ2F0ZUVsZW1lbnQuZGVsZWdhdGUoIHNlbGVjdG9yLCBldmVudE5hbWUsIGhhbmRsZXJQcm94eSApOw0KCQkJfSBlbHNlIHsNCgkJCQllbGVtZW50LmJpbmQoIGV2ZW50TmFtZSwgaGFuZGxlclByb3h5ICk7DQoJCQl9DQoJCX0pOw0KCX0sDQoNCglfb2ZmOiBmdW5jdGlvbiggZWxlbWVudCwgZXZlbnROYW1lICkgew0KCQlldmVudE5hbWUgPSAoZXZlbnROYW1lIHx8ICIiKS5zcGxpdCggIiAiICkuam9pbiggdGhpcy5ldmVudE5hbWVzcGFjZSArICIgIiApICsgdGhpcy5ldmVudE5hbWVzcGFjZTsNCgkJZWxlbWVudC51bmJpbmQoIGV2ZW50TmFtZSApLnVuZGVsZWdhdGUoIGV2ZW50TmFtZSApOw0KCX0sDQoNCglfZGVsYXk6IGZ1bmN0aW9uKCBoYW5kbGVyLCBkZWxheSApIHsNCgkJZnVuY3Rpb24gaGFuZGxlclByb3h5KCkgew0KCQkJcmV0dXJuICggdHlwZW9mIGhhbmRsZXIgPT09ICJzdHJpbmciID8gaW5zdGFuY2VbIGhhbmRsZXIgXSA6IGhhbmRsZXIgKQ0KCQkJCS5hcHBseSggaW5zdGFuY2UsIGFyZ3VtZW50cyApOw0KCQl9DQoJCXZhciBpbnN0YW5jZSA9IHRoaXM7DQoJCXJldHVybiBzZXRUaW1lb3V0KCBoYW5kbGVyUHJveHksIGRlbGF5IHx8IDAgKTsNCgl9LA0KDQoJX2hvdmVyYWJsZTogZnVuY3Rpb24oIGVsZW1lbnQgKSB7DQoJCXRoaXMuaG92ZXJhYmxlID0gdGhpcy5ob3ZlcmFibGUuYWRkKCBlbGVtZW50ICk7DQoJCXRoaXMuX29uKCBlbGVtZW50LCB7DQoJCQltb3VzZWVudGVyOiBmdW5jdGlvbiggZXZlbnQgKSB7DQoJCQkJJCggZXZlbnQuY3VycmVudFRhcmdldCApLmFkZENsYXNzKCAidWktc3RhdGUtaG92ZXIiICk7DQoJCQl9LA0KCQkJbW91c2VsZWF2ZTogZnVuY3Rpb24oIGV2ZW50ICkgew0KCQkJCSQoIGV2ZW50LmN1cnJlbnRUYXJnZXQgKS5yZW1vdmVDbGFzcyggInVpLXN0YXRlLWhvdmVyIiApOw0KCQkJfQ0KCQl9KTsNCgl9LA0KDQoJX2ZvY3VzYWJsZTogZnVuY3Rpb24oIGVsZW1lbnQgKSB7DQoJCXRoaXMuZm9jdXNhYmxlID0gdGhpcy5mb2N1c2FibGUuYWRkKCBlbGVtZW50ICk7DQoJCXRoaXMuX29uKCBlbGVtZW50LCB7DQoJCQlmb2N1c2luOiBmdW5jdGlvbiggZXZlbnQgKSB7DQoJCQkJJCggZXZlbnQuY3VycmVudFRhcmdldCApLmFkZENsYXNzKCAidWktc3RhdGUtZm9jdXMiICk7DQoJCQl9LA0KCQkJZm9jdXNvdXQ6IGZ1bmN0aW9uKCBldmVudCApIHsNCgkJCQkkKCBldmVudC5jdXJyZW50VGFyZ2V0ICkucmVtb3ZlQ2xhc3MoICJ1aS1zdGF0ZS1mb2N1cyIgKTsNCgkJCX0NCgkJfSk7DQoJfSwNCg0KCV90cmlnZ2VyOiBmdW5jdGlvbiggdHlwZSwgZXZlbnQsIGRhdGEgKSB7DQoJCXZhciBwcm9wLCBvcmlnLA0KCQkJY2FsbGJhY2sgPSB0aGlzLm9wdGlvbnNbIHR5cGUgXTsNCg0KCQlkYXRhID0gZGF0YSB8fCB7fTsNCgkJZXZlbnQgPSAkLkV2ZW50KCBldmVudCApOw0KCQlldmVudC50eXBlID0gKCB0eXBlID09PSB0aGlzLndpZGdldEV2ZW50UHJlZml4ID8NCgkJCXR5cGUgOg0KCQkJdGhpcy53aWRnZXRFdmVudFByZWZpeCArIHR5cGUgKS50b0xvd2VyQ2FzZSgpOw0KCQkvLyB0aGUgb3JpZ2luYWwgZXZlbnQgbWF5IGNvbWUgZnJvbSBhbnkgZWxlbWVudA0KCQkvLyBzbyB3ZSBuZWVkIHRvIHJlc2V0IHRoZSB0YXJnZXQgb24gdGhlIG5ldyBldmVudA0KCQlldmVudC50YXJnZXQgPSB0aGlzLmVsZW1lbnRbIDAgXTsNCg0KCQkvLyBjb3B5IG9yaWdpbmFsIGV2ZW50IHByb3BlcnRpZXMgb3ZlciB0byB0aGUgbmV3IGV2ZW50DQoJCW9yaWcgPSBldmVudC5vcmlnaW5hbEV2ZW50Ow0KCQlpZiAoIG9yaWcgKSB7DQoJCQlmb3IgKCBwcm9wIGluIG9yaWcgKSB7DQoJCQkJaWYgKCAhKCBwcm9wIGluIGV2ZW50ICkgKSB7DQoJCQkJCWV2ZW50WyBwcm9wIF0gPSBvcmlnWyBwcm9wIF07DQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJdGhpcy5lbGVtZW50LnRyaWdnZXIoIGV2ZW50LCBkYXRhICk7DQoJCXJldHVybiAhKCAkLmlzRnVuY3Rpb24oIGNhbGxiYWNrICkgJiYNCgkJCWNhbGxiYWNrLmFwcGx5KCB0aGlzLmVsZW1lbnRbMF0sIFsgZXZlbnQgXS5jb25jYXQoIGRhdGEgKSApID09PSBmYWxzZSB8fA0KCQkJZXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkgKTsNCgl9DQp9Ow0KDQokLmVhY2goIHsgc2hvdzogImZhZGVJbiIsIGhpZGU6ICJmYWRlT3V0IiB9LCBmdW5jdGlvbiggbWV0aG9kLCBkZWZhdWx0RWZmZWN0ICkgew0KCSQuV2lkZ2V0LnByb3RvdHlwZVsgIl8iICsgbWV0aG9kIF0gPSBmdW5jdGlvbiggZWxlbWVudCwgb3B0aW9ucywgY2FsbGJhY2sgKSB7DQoJCWlmICggdHlwZW9mIG9wdGlvbnMgPT09ICJzdHJpbmciICkgew0KCQkJb3B0aW9ucyA9IHsgZWZmZWN0OiBvcHRpb25zIH07DQoJCX0NCgkJdmFyIGhhc09wdGlvbnMsDQoJCQllZmZlY3ROYW1lID0gIW9wdGlvbnMgPw0KCQkJCW1ldGhvZCA6DQoJCQkJb3B0aW9ucyA9PT0gdHJ1ZSB8fCB0eXBlb2Ygb3B0aW9ucyA9PT0gIm51bWJlciIgPw0KCQkJCQlkZWZhdWx0RWZmZWN0IDoNCgkJCQkJb3B0aW9ucy5lZmZlY3QgfHwgZGVmYXVsdEVmZmVjdDsNCgkJb3B0aW9ucyA9IG9wdGlvbnMgfHwge307DQoJCWlmICggdHlwZW9mIG9wdGlvbnMgPT09ICJudW1iZXIiICkgew0KCQkJb3B0aW9ucyA9IHsgZHVyYXRpb246IG9wdGlvbnMgfTsNCgkJfQ0KCQloYXNPcHRpb25zID0gISQuaXNFbXB0eU9iamVjdCggb3B0aW9ucyApOw0KCQlvcHRpb25zLmNvbXBsZXRlID0gY2FsbGJhY2s7DQoJCWlmICggb3B0aW9ucy5kZWxheSApIHsNCgkJCWVsZW1lbnQuZGVsYXkoIG9wdGlvbnMuZGVsYXkgKTsNCgkJfQ0KCQlpZiAoIGhhc09wdGlvbnMgJiYgJC5lZmZlY3RzICYmICQuZWZmZWN0cy5lZmZlY3RbIGVmZmVjdE5hbWUgXSApIHsNCgkJCWVsZW1lbnRbIG1ldGhvZCBdKCBvcHRpb25zICk7DQoJCX0gZWxzZSBpZiAoIGVmZmVjdE5hbWUgIT09IG1ldGhvZCAmJiBlbGVtZW50WyBlZmZlY3ROYW1lIF0gKSB7DQoJCQllbGVtZW50WyBlZmZlY3ROYW1lIF0oIG9wdGlvbnMuZHVyYXRpb24sIG9wdGlvbnMuZWFzaW5nLCBjYWxsYmFjayApOw0KCQl9IGVsc2Ugew0KCQkJZWxlbWVudC5xdWV1ZShmdW5jdGlvbiggbmV4dCApIHsNCgkJCQkkKCB0aGlzIClbIG1ldGhvZCBdKCk7DQoJCQkJaWYgKCBjYWxsYmFjayApIHsNCgkJCQkJY2FsbGJhY2suY2FsbCggZWxlbWVudFsgMCBdICk7DQoJCQkJfQ0KCQkJCW5leHQoKTsNCgkJCX0pOw0KCQl9DQoJfTsNCn0pOw0KDQp9KSk7DQo=]]></data>
	</file>
	<file>
	  <filename>/js/jqueryrotate/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/jqueryrotate/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/js/jqueryrotate/jQueryRotate-2.2.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gVkVSU0lPTjogMi4yIExBU1QgVVBEQVRFOiAxMy4wMy4yMDEyDQovKiANCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZTogaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHANCiAqIA0KICogTWFkZSBieSBXaWxxMzIsIHdpbHEzMkBnbWFpbC5jb20sIFdyb2NsYXcsIFBvbGFuZCwgMDEuMjAwOQ0KICogV2Vic2l0ZTogaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2pxdWVyeXJvdGF0ZS8gDQogKi8NCihmdW5jdGlvbihqKXtmb3IodmFyIGQsaz1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLnN0eWxlLGg9WyJ0cmFuc2Zvcm1Qcm9wZXJ0eSIsIldlYmtpdFRyYW5zZm9ybSIsIk9UcmFuc2Zvcm0iLCJtc1RyYW5zZm9ybSIsIk1velRyYW5zZm9ybSJdLGc9MDtnPGgubGVuZ3RoO2crKyl2b2lkIDAhPT1rW2hbZ11dJiYoZD1oW2ddKTt2YXIgaT0idiI9PSJcdiI7alF1ZXJ5LmZuLmV4dGVuZCh7cm90YXRlOmZ1bmN0aW9uKGEpe2lmKCEoMD09PXRoaXMubGVuZ3RofHwidW5kZWZpbmVkIj09dHlwZW9mIGEpKXsibnVtYmVyIj09dHlwZW9mIGEmJihhPXthbmdsZTphfSk7Zm9yKHZhciBiPVtdLGM9MCxmPXRoaXMubGVuZ3RoO2M8ZjtjKyspe3ZhciBlPXRoaXMuZ2V0KGMpO2lmKCFlLldpbHEzMnx8IWUuV2lscTMyLlBob3RvRWZmZWN0KXt2YXIgZD1qLmV4dGVuZCghMCx7fSxhKSxlPShuZXcgV2lscTMyLlBob3RvRWZmZWN0KGUsZCkpLl9yb290T2JqOw0KYi5wdXNoKGooZSkpfWVsc2UgZS5XaWxxMzIuUGhvdG9FZmZlY3QuX2hhbmRsZVJvdGF0aW9uKGEpfXJldHVybiBifX0sZ2V0Um90YXRlQW5nbGU6ZnVuY3Rpb24oKXtmb3IodmFyIGE9W10sYj0wLGM9dGhpcy5sZW5ndGg7YjxjO2IrKyl7dmFyIGY9dGhpcy5nZXQoYik7Zi5XaWxxMzImJmYuV2lscTMyLlBob3RvRWZmZWN0JiYoYVtiXT1mLldpbHEzMi5QaG90b0VmZmVjdC5fYW5nbGUpfXJldHVybiBhfSxzdG9wUm90YXRlOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPTAsYj10aGlzLmxlbmd0aDthPGI7YSsrKXt2YXIgYz10aGlzLmdldChhKTtjLldpbHEzMiYmYy5XaWxxMzIuUGhvdG9FZmZlY3QmJmNsZWFyVGltZW91dChjLldpbHEzMi5QaG90b0VmZmVjdC5fdGltZXIpfX19KTtXaWxxMzI9d2luZG93LldpbHEzMnx8e307V2lscTMyLlBob3RvRWZmZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGQ/ZnVuY3Rpb24oYSxiKXthLldpbHEzMj17UGhvdG9FZmZlY3Q6dGhpc307dGhpcy5faW1nPXRoaXMuX3Jvb3RPYmo9DQp0aGlzLl9ldmVudE9iaj1hO3RoaXMuX2hhbmRsZVJvdGF0aW9uKGIpfTpmdW5jdGlvbihhLGIpe3RoaXMuX2ltZz1hO3RoaXMuX3Jvb3RPYmo9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO3RoaXMuX3Jvb3RPYmouc3R5bGUuZGlzcGxheT0iaW5saW5lLWJsb2NrIjt0aGlzLl9yb290T2JqLldpbHEzMj17UGhvdG9FZmZlY3Q6dGhpc307YS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLl9yb290T2JqLGEpO2lmKGEuY29tcGxldGUpdGhpcy5fTG9hZGVyKGIpO2Vsc2V7dmFyIGM9dGhpcztqUXVlcnkodGhpcy5faW1nKS5iaW5kKCJsb2FkIixmdW5jdGlvbigpe2MuX0xvYWRlcihiKX0pfX19KCk7V2lscTMyLlBob3RvRWZmZWN0LnByb3RvdHlwZT17X3NldHVwUGFyYW1ldGVyczpmdW5jdGlvbihhKXt0aGlzLl9wYXJhbWV0ZXJzPXRoaXMuX3BhcmFtZXRlcnN8fHt9OyJudW1iZXIiIT09dHlwZW9mIHRoaXMuX2FuZ2xlJiYodGhpcy5fYW5nbGU9MCk7Im51bWJlciI9PT0NCnR5cGVvZiBhLmFuZ2xlJiYodGhpcy5fYW5nbGU9YS5hbmdsZSk7dGhpcy5fcGFyYW1ldGVycy5hbmltYXRlVG89Im51bWJlciI9PT10eXBlb2YgYS5hbmltYXRlVG8/YS5hbmltYXRlVG86dGhpcy5fYW5nbGU7dGhpcy5fcGFyYW1ldGVycy5zdGVwPWEuc3RlcHx8dGhpcy5fcGFyYW1ldGVycy5zdGVwfHxudWxsO3RoaXMuX3BhcmFtZXRlcnMuZWFzaW5nPWEuZWFzaW5nfHx0aGlzLl9wYXJhbWV0ZXJzLmVhc2luZ3x8ZnVuY3Rpb24oYSxjLGYsZSxkKXtyZXR1cm4tZSooKGM9Yy9kLTEpKmMqYypjLTEpK2Z9O3RoaXMuX3BhcmFtZXRlcnMuZHVyYXRpb249YS5kdXJhdGlvbnx8dGhpcy5fcGFyYW1ldGVycy5kdXJhdGlvbnx8MUUzO3RoaXMuX3BhcmFtZXRlcnMuY2FsbGJhY2s9YS5jYWxsYmFja3x8dGhpcy5fcGFyYW1ldGVycy5jYWxsYmFja3x8ZnVuY3Rpb24oKXt9O2EuYmluZCYmYS5iaW5kIT10aGlzLl9wYXJhbWV0ZXJzLmJpbmQmJnRoaXMuX0JpbmRFdmVudHMoYS5iaW5kKX0sX2hhbmRsZVJvdGF0aW9uOmZ1bmN0aW9uKGEpe3RoaXMuX3NldHVwUGFyYW1ldGVycyhhKTsNCnRoaXMuX2FuZ2xlPT10aGlzLl9wYXJhbWV0ZXJzLmFuaW1hdGVUbz90aGlzLl9yb3RhdGUodGhpcy5fYW5nbGUpOnRoaXMuX2FuaW1hdGVTdGFydCgpfSxfQmluZEV2ZW50czpmdW5jdGlvbihhKXtpZihhJiZ0aGlzLl9ldmVudE9iail7aWYodGhpcy5fcGFyYW1ldGVycy5iaW5kKXt2YXIgYj10aGlzLl9wYXJhbWV0ZXJzLmJpbmQsYztmb3IoYyBpbiBiKWIuaGFzT3duUHJvcGVydHkoYykmJmpRdWVyeSh0aGlzLl9ldmVudE9iaikudW5iaW5kKGMsYltjXSl9dGhpcy5fcGFyYW1ldGVycy5iaW5kPWE7Zm9yKGMgaW4gYSlhLmhhc093blByb3BlcnR5KGMpJiZqUXVlcnkodGhpcy5fZXZlbnRPYmopLmJpbmQoYyxhW2NdKX19LF9Mb2FkZXI6ZnVuY3Rpb24oKXtyZXR1cm4gaT9mdW5jdGlvbihhKXt2YXIgYj10aGlzLl9pbWcud2lkdGgsYz10aGlzLl9pbWcuaGVpZ2h0O3RoaXMuX2ltZy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX2ltZyk7dGhpcy5fdmltYWdlPXRoaXMuY3JlYXRlVk1MTm9kZSgiaW1hZ2UiKTsNCnRoaXMuX3ZpbWFnZS5zcmM9dGhpcy5faW1nLnNyYzt0aGlzLl92aW1hZ2Uuc3R5bGUuaGVpZ2h0PWMrInB4Ijt0aGlzLl92aW1hZ2Uuc3R5bGUud2lkdGg9YisicHgiO3RoaXMuX3ZpbWFnZS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO3RoaXMuX3ZpbWFnZS5zdHlsZS50b3A9IjBweCI7dGhpcy5fdmltYWdlLnN0eWxlLmxlZnQ9IjBweCI7dGhpcy5fY29udGFpbmVyPXRoaXMuY3JlYXRlVk1MTm9kZSgiZ3JvdXAiKTt0aGlzLl9jb250YWluZXIuc3R5bGUud2lkdGg9Yjt0aGlzLl9jb250YWluZXIuc3R5bGUuaGVpZ2h0PWM7dGhpcy5fY29udGFpbmVyLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7dGhpcy5fY29udGFpbmVyLnNldEF0dHJpYnV0ZSgiY29vcmRzaXplIixiLTErIiwiKyhjLTEpKTt0aGlzLl9jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5fdmltYWdlKTt0aGlzLl9yb290T2JqLmFwcGVuZENoaWxkKHRoaXMuX2NvbnRhaW5lcik7dGhpcy5fcm9vdE9iai5zdHlsZS5wb3NpdGlvbj0NCiJyZWxhdGl2ZSI7dGhpcy5fcm9vdE9iai5zdHlsZS53aWR0aD1iKyJweCI7dGhpcy5fcm9vdE9iai5zdHlsZS5oZWlnaHQ9YysicHgiO3RoaXMuX3Jvb3RPYmouc2V0QXR0cmlidXRlKCJpZCIsdGhpcy5faW1nLmdldEF0dHJpYnV0ZSgiaWQiKSk7dGhpcy5fcm9vdE9iai5jbGFzc05hbWU9dGhpcy5faW1nLmNsYXNzTmFtZTt0aGlzLl9ldmVudE9iaj10aGlzLl9yb290T2JqO3RoaXMuX2hhbmRsZVJvdGF0aW9uKGEpfTpmdW5jdGlvbihhKXt0aGlzLl9yb290T2JqLnNldEF0dHJpYnV0ZSgiaWQiLHRoaXMuX2ltZy5nZXRBdHRyaWJ1dGUoImlkIikpO3RoaXMuX3Jvb3RPYmouY2xhc3NOYW1lPXRoaXMuX2ltZy5jbGFzc05hbWU7dGhpcy5fd2lkdGg9dGhpcy5faW1nLndpZHRoO3RoaXMuX2hlaWdodD10aGlzLl9pbWcuaGVpZ2h0O3RoaXMuX3dpZHRoSGFsZj10aGlzLl93aWR0aC8yO3RoaXMuX2hlaWdodEhhbGY9dGhpcy5faGVpZ2h0LzI7dmFyIGI9TWF0aC5zcXJ0KHRoaXMuX2hlaWdodCoNCnRoaXMuX2hlaWdodCt0aGlzLl93aWR0aCp0aGlzLl93aWR0aCk7dGhpcy5fd2lkdGhBZGQ9Yi10aGlzLl93aWR0aDt0aGlzLl9oZWlnaHRBZGQ9Yi10aGlzLl9oZWlnaHQ7dGhpcy5fd2lkdGhBZGRIYWxmPXRoaXMuX3dpZHRoQWRkLzI7dGhpcy5faGVpZ2h0QWRkSGFsZj10aGlzLl9oZWlnaHRBZGQvMjt0aGlzLl9pbWcucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9pbWcpO3RoaXMuX2FzcGVjdFc9KHBhcnNlSW50KHRoaXMuX2ltZy5zdHlsZS53aWR0aCwxMCl8fHRoaXMuX3dpZHRoKS90aGlzLl9pbWcud2lkdGg7dGhpcy5fYXNwZWN0SD0ocGFyc2VJbnQodGhpcy5faW1nLnN0eWxlLmhlaWdodCwxMCl8fHRoaXMuX2hlaWdodCkvdGhpcy5faW1nLmhlaWdodDt0aGlzLl9jYW52YXM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7dGhpcy5fY2FudmFzLnNldEF0dHJpYnV0ZSgid2lkdGgiLHRoaXMuX3dpZHRoKTt0aGlzLl9jYW52YXMuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIjsNCnRoaXMuX2NhbnZhcy5zdHlsZS5sZWZ0PS10aGlzLl93aWR0aEFkZEhhbGYrInB4Ijt0aGlzLl9jYW52YXMuc3R5bGUudG9wPS10aGlzLl9oZWlnaHRBZGRIYWxmKyJweCI7dGhpcy5fY2FudmFzLldpbHEzMj10aGlzLl9yb290T2JqLldpbHEzMjt0aGlzLl9yb290T2JqLmFwcGVuZENoaWxkKHRoaXMuX2NhbnZhcyk7dGhpcy5fcm9vdE9iai5zdHlsZS53aWR0aD10aGlzLl93aWR0aCsicHgiO3RoaXMuX3Jvb3RPYmouc3R5bGUuaGVpZ2h0PXRoaXMuX2hlaWdodCsicHgiO3RoaXMuX2V2ZW50T2JqPXRoaXMuX2NhbnZhczt0aGlzLl9jbnY9dGhpcy5fY2FudmFzLmdldENvbnRleHQoIjJkIik7dGhpcy5faGFuZGxlUm90YXRpb24oYSl9fSgpLF9hbmltYXRlU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl90aW1lciYmY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKTt0aGlzLl9hbmltYXRlU3RhcnRUaW1lPStuZXcgRGF0ZTt0aGlzLl9hbmltYXRlU3RhcnRBbmdsZT10aGlzLl9hbmdsZTt0aGlzLl9hbmltYXRlKCl9LA0KX2FuaW1hdGU6ZnVuY3Rpb24oKXt2YXIgYT0rbmV3IERhdGUsYj1hLXRoaXMuX2FuaW1hdGVTdGFydFRpbWU+dGhpcy5fcGFyYW1ldGVycy5kdXJhdGlvbjtpZihiJiYhdGhpcy5fcGFyYW1ldGVycy5hbmltYXRlZEdpZiljbGVhclRpbWVvdXQodGhpcy5fdGltZXIpO2Vsc2V7KHRoaXMuX2NhbnZhc3x8dGhpcy5fdmltYWdlfHx0aGlzLl9pbWcpJiZ0aGlzLl9yb3RhdGUofn4oMTAqdGhpcy5fcGFyYW1ldGVycy5lYXNpbmcoMCxhLXRoaXMuX2FuaW1hdGVTdGFydFRpbWUsdGhpcy5fYW5pbWF0ZVN0YXJ0QW5nbGUsdGhpcy5fcGFyYW1ldGVycy5hbmltYXRlVG8tdGhpcy5fYW5pbWF0ZVN0YXJ0QW5nbGUsdGhpcy5fcGFyYW1ldGVycy5kdXJhdGlvbikpLzEwKTt0aGlzLl9wYXJhbWV0ZXJzLnN0ZXAmJnRoaXMuX3BhcmFtZXRlcnMuc3RlcCh0aGlzLl9hbmdsZSk7dmFyIGM9dGhpczt0aGlzLl90aW1lcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy5fYW5pbWF0ZS5jYWxsKGMpfSwxMCl9dGhpcy5fcGFyYW1ldGVycy5jYWxsYmFjayYmDQpiJiYodGhpcy5fYW5nbGU9dGhpcy5fcGFyYW1ldGVycy5hbmltYXRlVG8sdGhpcy5fcm90YXRlKHRoaXMuX2FuZ2xlKSx0aGlzLl9wYXJhbWV0ZXJzLmNhbGxiYWNrLmNhbGwodGhpcy5fcm9vdE9iaikpfSxfcm90YXRlOmZ1bmN0aW9uKCl7dmFyIGE9TWF0aC5QSS8xODA7cmV0dXJuIGk/ZnVuY3Rpb24oYSl7dGhpcy5fYW5nbGU9YTt0aGlzLl9jb250YWluZXIuc3R5bGUucm90YXRpb249YSUzNjArImRlZyJ9OmQ/ZnVuY3Rpb24oYSl7dGhpcy5fYW5nbGU9YTt0aGlzLl9pbWcuc3R5bGVbZF09InJvdGF0ZSgiK2ElMzYwKyJkZWcpIn06ZnVuY3Rpb24oYil7dGhpcy5fYW5nbGU9YjtiPWIlMzYwKmE7dGhpcy5fY2FudmFzLndpZHRoPXRoaXMuX3dpZHRoK3RoaXMuX3dpZHRoQWRkO3RoaXMuX2NhbnZhcy5oZWlnaHQ9dGhpcy5faGVpZ2h0K3RoaXMuX2hlaWdodEFkZDt0aGlzLl9jbnYudHJhbnNsYXRlKHRoaXMuX3dpZHRoQWRkSGFsZix0aGlzLl9oZWlnaHRBZGRIYWxmKTt0aGlzLl9jbnYudHJhbnNsYXRlKHRoaXMuX3dpZHRoSGFsZiwNCnRoaXMuX2hlaWdodEhhbGYpO3RoaXMuX2Nudi5yb3RhdGUoYik7dGhpcy5fY252LnRyYW5zbGF0ZSgtdGhpcy5fd2lkdGhIYWxmLC10aGlzLl9oZWlnaHRIYWxmKTt0aGlzLl9jbnYuc2NhbGUodGhpcy5fYXNwZWN0Vyx0aGlzLl9hc3BlY3RIKTt0aGlzLl9jbnYuZHJhd0ltYWdlKHRoaXMuX2ltZywwLDApfX0oKX07aSYmKFdpbHEzMi5QaG90b0VmZmVjdC5wcm90b3R5cGUuY3JlYXRlVk1MTm9kZT1mdW5jdGlvbigpe2RvY3VtZW50LmNyZWF0ZVN0eWxlU2hlZXQoKS5hZGRSdWxlKCIucnZtbCIsImJlaGF2aW9yOnVybCgjZGVmYXVsdCNWTUwpIik7dHJ5e3JldHVybiFkb2N1bWVudC5uYW1lc3BhY2VzLnJ2bWwmJmRvY3VtZW50Lm5hbWVzcGFjZXMuYWRkKCJydm1sIiwidXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiKSxmdW5jdGlvbihhKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiPHJ2bWw6IithKycgY2xhc3M9InJ2bWwiPicpfX1jYXRjaChhKXtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIjwiKw0KYSsnIHhtbG5zPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQuY29tOnZtbCIgY2xhc3M9InJ2bWwiPicpfX19KCkpfSkoalF1ZXJ5KTsNCg==]]></data>
	</file>
	<file>
	  <filename>/js/jrac/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/jrac/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/jrac/images/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/js/jrac/images/loading.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/js/jrac/images/viewport_background.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAIAAAN/f3////yH5BAAHAP8ALAAAAAAQABAAAAIfhG+hq4jM3IFLJhoswNly/XkcBpIiVaInlLJr9FZWAQA7]]></data>
	</file>
	<file>
	  <filename>/js/jrac/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/js/jrac/jquery.jrac.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogalF1ZXJ5IFJlc2l6ZSBBbmQgQ3JvcCAoanJhYykNCiAqIEEgalF1ZXJ5IDEuNCsgYW5kIGpRdWVyeVVpIDEuOCsgcGx1Z2luIHVuZGVyIEdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIHZlcnNpb24gMiBsaXNlbnNlLg0KICogQ29weXJpZ2h0IChjKSAyMDExIENlZHJpYyBHYW1wZXJ0IC0gY2dhbXBlcnRAZ21haWwuY29tDQogKi8NCg0KKGZ1bmN0aW9uKCAkICl7DQoNCiAgJC5mbi5qcmFjID0gZnVuY3Rpb24ob3B0aW9ucykgew0KDQogICAgLy8gRGVmYXVsdCBzZXR0aW5ncw0KICAgIHZhciBzZXR0aW5ncyA9IHsNCiAgICAgICdjcm9wX3dpZHRoJzogMjAwLA0KICAgICAgJ2Nyb3BfaGVpZ2h0JzogMTAwLA0KICAgICAgLy8gVGhlIHR3byBmb2xsb3dpbmcgcHJvcGVydGllcyBkZWZpbmUgdGhlIGNyb3AgcG9zaXRpb24gKHJlbGF0aXZlIHRvIHRoZQ0KICAgICAgLy8gaW1hZ2UpLg0KICAgICAgJ2Nyb3BfeCc6IDAsDQogICAgICAnY3JvcF95JzogMCwNCiAgICAgICdjcm9wX3Jlc2l6ZSc6IHRydWUsDQogICAgICAnY3JvcF9hc3BlY3RfcmF0aW8nOiBudWxsLA0KICAgICAgJ2ltYWdlX3dpZHRoJzogbnVsbCwNCiAgICAgICdpbWFnZV9oZWlnaHQnOiBudWxsLA0KICAgICAgJ3pvb21fbWluJzogMTAwLA0KICAgICAgJ3pvb21fbWF4JzogMzAwMCwNCiAgICAgICd2aWV3cG9ydF9pbWFnZV9zdXJyb3VuZGluZyc6IGZhbHNlLCAvLyBTZXQgdGhlIHZpZXdwb3J0IHRvIHN1cnJvdW5kIHRoZSBpbWFnZSBvbiBsb2FkDQogICAgICAndmlld3BvcnRfd2lkdGgnOiBudWxsLA0KICAgICAgJ3ZpZXdwb3J0X2hlaWdodCc6IG51bGwsDQogICAgICAndmlld3BvcnRfcmVzaXplJzogdHJ1ZSwNCiAgICAgIC8vIFRoZSB0d28gZm9sbG93aW5nIHByb3BlcnRpZXMgYWxsb3cgdG8gcG9zaXRpb24gdGhlIGNvbnRlbnQgKG5lZ2F0aXZlDQogICAgICAvLyB2YWx1ZSBhbGxvd2VkKS4gSXQgY2FuIGJlIHVzZSB0byBmb2N1cyB0aGUgdmlld3BvcnQgb24gdGhlIGNyb3BwZWQNCiAgICAgIC8vIHBhcnQgb2YgdGhlIGltYWdlLg0KICAgICAgJ3ZpZXdwb3J0X2NvbnRlbnRfbGVmdCc6IDAsDQogICAgICAndmlld3BvcnRfY29udGVudF90b3AnOiAwLA0KICAgICAgLy8gU3VibWl0IGhlcmUgYSBjYWxsYmFjayBmdW5jdGlvbiAoY29udGV4dCBpcyB0aGUgdmlld3BvcnQpLg0KICAgICAgJ3ZpZXdwb3J0X29ubG9hZCc6IG51bGwNCiAgICB9Ow0KDQogICAgLy8gQXBwbHkgdGhlIHJlc2l6ZSBhbmQgY3JvcCB0b29scyB0byBlYWNoIGltYWdlcw0KICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7DQoNCiAgICAgIGlmICghJCh0aGlzKS5pcygnaW1nJykpIHsNCiAgICAgICAgcmV0dXJuOw0KICAgICAgfQ0KDQogICAgICAvLyBSZWFkIG9wdGlvbnMNCiAgICAgIHZhciBkZXN0cm95ID0gZmFsc2U7DQogICAgICBpZiAoIHR5cGVvZihvcHRpb25zKSA9PSAnb2JqZWN0JyApIHsNCiAgICAgICAgJC5leHRlbmQoIHNldHRpbmdzLCBvcHRpb25zICk7DQogICAgICB9DQogICAgICBlbHNlIGlmIChvcHRpb25zID09ICdkZXN0cm95Jykgew0KICAgICAgICBkZXN0cm95ID0gdHJ1ZTsNCiAgICAgIH0NCiAgICAgIA0KICAgICAgdmFyICRpbWFnZSA9ICQodGhpcyk7ICAgICAgDQogICAgICANCiAgICAgIC8vIFRlc3QgaWYganJhYyB3YXMgcHJldmlvdXNseSBydW4NCiAgICAgIHZhciBqcmFjX2xvYWRlZCA9IGZhbHNlOyAgICAgIA0KICAgICAgaWYgKCRpbWFnZS5wYXJlbnQoKS5oYXNDbGFzcygnanJhY192aWV3cG9ydCcpKSB7DQogICAgICAgIGpyYWNfbG9hZGVkID0gdHJ1ZTsgICAgICAgIA0KICAgICAgfQ0KICAgICAgDQogICAgICBpZiAoanJhY19sb2FkZWQgJiYgZGVzdHJveSkgew0KICAgICAgICAvLyBVbmxvYWQganJhYyBpZiBhc2tlZA0KICAgICAgICAkaW1hZ2UuZHJhZ2dhYmxlKCJkZXN0cm95Iik7DQogICAgICAgICRpbWFnZS5wYXJlbnQoKS5maW5kKCcuanJhY19jcm9wJykucmVtb3ZlKCk7DQogICAgICAgICRpbWFnZS5wYXJlbnQoKS5wYXJlbnQoKS5maW5kKCcuanJhY196b29tX3NsaWRlcicpLnJlbW92ZSgpOw0KICAgICAgICAkaW1hZ2UucGFyZW50KCkuYXBwZW5kKCRpbWFnZS5kYXRhKCdvcmlnaW5hbCcpKTsgLy8gcmVzdG9yZSBvcmlnaW5hbCBpbWFnZQ0KICAgICAgICAkaW1hZ2UucGFyZW50KCkudW53cmFwKCk7IC8vIHJlbW92ZSBjb250YWluZXINCiAgICAgICAgJGltYWdlLnVud3JhcCgpOyAvLyByZW1vdmUgdmlld3BvcnQNCiAgICAgICAgJGltYWdlLnJlbW92ZSgpOyAvLyByZW1vdmUgaW1hZ2Ugd2hpY2ggd2FzIGFsdGVyZWQgKGluIGl0cyBjc3MgYXR0cmlidXRlcykNCiAgICAgIH0NCiAgICAgIGVsc2Ugew0KICAgICAgICAvLyBSZWNvcmQgaW1hZ2UgYmVmb3JlIHNvbWUgb2YgaXRzIGF0dHJpYnV0ZXMgZ2V0IGFsdGVyZWQgYnkgc29tZSANCiAgICAgICAgLy8ganJhYyBjc3Mgb3Igc29tZSB1c2VyIHNpemUgb3IgcHJvcG9ydGlvbiBjaGFuZ2VzLg0KICAgICAgICAkaW1hZ2UuZGF0YSgnb3JpZ2luYWwnLCAkaW1hZ2UuY2xvbmUoKSk7DQogICAgICB9DQoNCiAgICAgIC8vIERvIG5vdGhpbmcgbW9yZSBpZiBkZXN0cm95IGlzIGFza2VkDQogICAgICBpZiAoZGVzdHJveSkgew0KICAgICAgICByZXR1cm47DQogICAgICB9DQogICAgICANCiAgICAgIC8vIFByZXBhcmUgaW1hZ2UNCiAgICAgIGlmICghanJhY19sb2FkZWQpIHsNCiAgICAgICAgJGltYWdlLmhpZGUoKS5jc3MoJ3Bvc2l0aW9uJywnYWJzb2x1dGUnKS53cmFwKCc8ZGl2IGNsYXNzPSJqcmFjX2NvbnRhaW5lciI+PGRpdiBjbGFzcz0ianJhY192aWV3cG9ydCI+PC9kaXY+PC9kaXY+Jyk7DQogICAgICB9DQoNCiAgICAgIC8vIEdldCB2aWV3cG9ydCBhbmQgY29udGFpbmVyIHJlZmVyZW5jZXMNCiAgICAgIHZhciAkdmlld3BvcnQgPSAkaW1hZ2UucGFyZW50KCk7DQogICAgICB2YXIgJGNvbnRhaW5lciA9ICR2aWV3cG9ydC5wYXJlbnQoKTsNCg0KICAgICAgLy8gQWRkIGEgd2FpdGluZyBvbiBsb2FkIGlucHV0IGltYWdlDQogICAgICB2YXIgJGxvYWRpbmcgPSAkKCc8ZGl2IGNsYXNzPSJqcmFjX2xvYWRpbmciIC8+Jyk7DQogICAgICAkdmlld3BvcnQuYXBwZW5kKCRsb2FkaW5nKTsNCg0KICAgICAgLy8gVGhlIGZvbGxvd2luZyBwcm9jZWR1cmUgaG9sZCBidXNpbmVzcyBpbnRlbmQgdG8gYmUgcnVuIG9uY2UgdGhlIGltYWdlDQogICAgICAvLyBpcyBsb2FkZWQgKGxvYWQgZXZlbnQpLg0KICAgICAgdmFyIGltYWdlX2xvYWRfaGFuZGxlciA9IGZ1bmN0aW9uKCl7DQoNCiAgICAgICAgLy8gQWRkIHNvbWUgY3VzdG9tIHByb3BlcnRpZXMgdG8gJGltYWdlDQogICAgICAgICQuZXh0ZW5kKCRpbWFnZSwgew0KICAgICAgICAgIHNjYWxlX3Byb3BvcnRpb25fbG9ja2VkOiB0cnVlLA0KICAgICAgICAgIG9yaWdpbmFsV2lkdGg6ICRpbWFnZS53aWR0aCgpLA0KICAgICAgICAgIG9yaWdpbmFsSGVpZ2h0OiAkaW1hZ2UuaGVpZ2h0KCkNCiAgICAgICAgfSk7DQoNCiAgICAgICAgLy8gU2V0IGdpdmVuIG9wdGlvbmFsIGltYWdlIHNpemUNCiAgICAgICAgJGltYWdlLndpZHRoKHNldHRpbmdzLmltYWdlX3dpZHRoKS5oZWlnaHQoc2V0dGluZ3MuaW1hZ2VfaGVpZ2h0KTsNCg0KICAgICAgICAvLyBBcHBseSB0aGUgdmlld3BvcnQgaW1hZ2Ugc3Vycm91bmRpbmcgaXMgYXNrZWQNCiAgICAgICAgaWYgKHNldHRpbmdzLnZpZXdwb3J0X2ltYWdlX3N1cnJvdW5kaW5nKSB7DQogICAgICAgICAgJHZpZXdwb3J0LndpZHRoKCRpbWFnZS53aWR0aCgpKS5oZWlnaHQoJGltYWdlLmhlaWdodCgpKTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICAkdmlld3BvcnQud2lkdGgoc2V0dGluZ3Mudmlld3BvcnRfd2lkdGgpLmhlaWdodChzZXR0aW5ncy52aWV3cG9ydF9oZWlnaHQpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gU2V0IHRoZSB2aWV3cG9ydCBjb250ZW50IHBvc2l0aW9uIGZvciB0aGUgaW1hZ2UNCiAgICAgICAgJGltYWdlLmNzcyh7J2xlZnQnOiBzZXR0aW5ncy52aWV3cG9ydF9jb250ZW50X2xlZnQsICd0b3AnOiBzZXR0aW5ncy52aWV3cG9ydF9jb250ZW50X3RvcH0pOw0KDQogICAgICAgIC8vIENyZWF0ZSB0aGUgem9vbSB3aWRnZXQgd2hpY2ggcGVybWl0IHRvIHJlc2l6ZSB0aGUgaW1hZ2UNCiAgICAgICAgaWYgKCFqcmFjX2xvYWRlZCkgew0KICAgICAgICAgIHZhciAkem9vbV93aWRnZXQgPSAkKCc8ZGl2IGNsYXNzPSJqcmFjX3pvb21fc2xpZGVyIj48ZGl2IGNsYXNzPSJ1aS1zbGlkZXItaGFuZGxlIj48L2Rpdj48L2Rpdj4nKQ0KICAgICAgICAgIC53aWR0aCgkdmlld3BvcnQud2lkdGgoKSkNCiAgICAgICAgICAuc2xpZGVyKHsNCiAgICAgICAgICAgIHZhbHVlOiAkaW1hZ2Uud2lkdGgoKSwNCiAgICAgICAgICAgIG1pbjogc2V0dGluZ3Muem9vbV9taW4sDQogICAgICAgICAgICBtYXg6IHNldHRpbmdzLnpvb21fbWF4LA0KICAgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGV2ZW50LCB1aSkgew0KICAgICAgICAgICAgICAkLmV4dGVuZCgkem9vbV93aWRnZXQsew0KICAgICAgICAgICAgICAgIG9uX3N0YXJ0X3dpZHRoX3ZhbHVlOiB1aS52YWx1ZSwNCiAgICAgICAgICAgICAgICBvbl9zdGFydF9oZWlnaHRfdmFsdWU6ICRpbWFnZS5oZWlnaHQoKQ0KICAgICAgICAgICAgICB9KQ0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHNsaWRlOiBmdW5jdGlvbihldmVudCwgdWkpIHsNCiAgICAgICAgICAgICAgdmFyIGhlaWdodCA9IE1hdGgucm91bmQoJHpvb21fd2lkZ2V0Lm9uX3N0YXJ0X2hlaWdodF92YWx1ZSAqIHVpLnZhbHVlIC8gJHpvb21fd2lkZ2V0Lm9uX3N0YXJ0X3dpZHRoX3ZhbHVlKTsNCiAgICAgICAgICAgICAgJGltYWdlLmhlaWdodChoZWlnaHQpOw0KICAgICAgICAgICAgICAkaW1hZ2Uud2lkdGgodWkudmFsdWUpOw0KICAgICAgICAgICAgICAkdmlld3BvcnQub2JzZXJ2YXRvci5ub3RpZnkoJ2pyYWNfaW1hZ2VfaGVpZ2h0JywgaGVpZ2h0KTsNCiAgICAgICAgICAgICAgJHZpZXdwb3J0Lm9ic2VydmF0b3Iubm90aWZ5KCdqcmFjX2ltYWdlX3dpZHRoJywgdWkudmFsdWUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0pOw0KICAgICAgICAgICRjb250YWluZXIuYXBwZW5kKCR6b29tX3dpZGdldCk7DQogICAgICAgIA0KICAgICAgICAgIC8vIE1ha2UgdGhlIHZpZXdwb3J0IHJlc2l6ZWFibGUNCiAgICAgICAgICBpZiAoc2V0dGluZ3Mudmlld3BvcnRfcmVzaXplKSB7DQogICAgICAgICAgICAkdmlld3BvcnQucmVzaXphYmxlKHsNCiAgICAgICAgICAgICAgcmVzaXplOiBmdW5jdGlvbihldmVudCwgdWkpIHsNCiAgICAgICAgICAgICAgICAkem9vbV93aWRnZXQud2lkdGgodWkuc2l6ZS53aWR0aCk7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgIH0NCg0KICAgICAgICAgIC8vIEVuYWJsZSB0aGUgaW1hZ2UgZHJhZ2dhYmxlIGludGVyYWN0aW9uDQogICAgICAgICAgJGltYWdlLmRyYWdnYWJsZSh7DQogICAgICAgICAgICBkcmFnOiBmdW5jdGlvbihldmVudCwgdWkpIHsNCiAgICAgICAgICAgICAgaWYgKHVpLnBvc2l0aW9uLmxlZnQgIT0gdWkub3JpZ2luYWxQb3NpdGlvbi5sZWZ0KSB7DQogICAgICAgICAgICAgICAgJHZpZXdwb3J0Lm9ic2VydmF0b3Iubm90aWZ5KCdqcmFjX2Nyb3BfeCcsICR2aWV3cG9ydC5vYnNlcnZhdG9yLmNyb3BfcG9zaXRpb25feCgpKTsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICBpZiAodWkucG9zaXRpb24udG9wICE9IHVpLm9yaWdpbmFsUG9zaXRpb24udG9wKSB7DQogICAgICAgICAgICAgICAgJHZpZXdwb3J0Lm9ic2VydmF0b3Iubm90aWZ5KCdqcmFjX2Nyb3BfeScsICR2aWV3cG9ydC5vYnNlcnZhdG9yLmNyb3BfcG9zaXRpb25feSgpKTsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0pOw0KDQogICAgICAgICAgLy8gQnVpbGQgdGhlIGNyb3AgZWxlbWVudA0KICAgICAgICAgIHZhciAkY3JvcCA9ICQoJzxkaXYgY2xhc3M9ImpyYWNfY3JvcCI+PGRpdiBjbGFzcz0ianJhY19jcm9wX2RyYWdfaGFuZGxlciI+PC9kaXY+PC9kaXY+JykNCiAgICAgICAgICAuY3NzKHsNCiAgICAgICAgICAgICd3aWR0aCc6IHNldHRpbmdzLmNyb3Bfd2lkdGgsDQogICAgICAgICAgICAnaGVpZ2h0Jzogc2V0dGluZ3MuY3JvcF9oZWlnaHQsDQogICAgICAgICAgICAnbGVmdCc6c2V0dGluZ3MuY3JvcF94K3NldHRpbmdzLnZpZXdwb3J0X2NvbnRlbnRfbGVmdCwNCiAgICAgICAgICAgICd0b3AnOnNldHRpbmdzLmNyb3BfeStzZXR0aW5ncy52aWV3cG9ydF9jb250ZW50X3RvcA0KICAgICAgICAgIH0pLmRyYWdnYWJsZSh7DQogICAgICAgICAgICBjb250YWlubWVudDogJHZpZXdwb3J0LA0KICAgICAgICAgICAgaGFuZGxlOiAnZGl2LmpyYWNfY3JvcF9kcmFnX2hhbmRsZXInLA0KICAgICAgICAgICAgZHJhZzogZnVuY3Rpb24oZXZlbnQsIHVpKSB7DQogICAgICAgICAgICAgIGlmICh1aS5wb3NpdGlvbi5sZWZ0ICE9IHVpLm9yaWdpbmFsUG9zaXRpb24ubGVmdCkgew0KICAgICAgICAgICAgICAgICR2aWV3cG9ydC5vYnNlcnZhdG9yLm5vdGlmeSgnanJhY19jcm9wX3gnLCAkdmlld3BvcnQub2JzZXJ2YXRvci5jcm9wX3Bvc2l0aW9uX3goKSk7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgaWYgKHVpLnBvc2l0aW9uLnRvcCAhPSB1aS5vcmlnaW5hbFBvc2l0aW9uLnRvcCkgew0KICAgICAgICAgICAgICAgICR2aWV3cG9ydC5vYnNlcnZhdG9yLm5vdGlmeSgnanJhY19jcm9wX3knLCAkdmlld3BvcnQub2JzZXJ2YXRvci5jcm9wX3Bvc2l0aW9uX3koKSk7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9KTsNCiAgICAgICAgICBpZiAoc2V0dGluZ3MuY3JvcF9yZXNpemUpIHsNCiAgICAgICAgICAgICRjcm9wLnJlc2l6YWJsZSh7DQogICAgICAgICAgICAgIGNvbnRhaW5tZW50OiAkdmlld3BvcnQsDQogICAgICAgICAgICAgIGFzcGVjdFJhdGlvOiBzZXR0aW5ncy5jcm9wX2FzcGVjdF9yYXRpbywNCiAgICAgICAgICAgICAgcmVzaXplOiBmdW5jdGlvbihldmVudCwgdWkpIHsNCiAgICAgICAgICAgICAgICBpZiAodWkuc2l6ZS53aWR0aCAhPSB1aS5vcmlnaW5hbFNpemUud2lkdGgpIHsNCiAgICAgICAgICAgICAgICAgICR2aWV3cG9ydC5vYnNlcnZhdG9yLm5vdGlmeSgnanJhY19jcm9wX3dpZHRoJywgJGNyb3Aud2lkdGgoKSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmICh1aS5zaXplLmhlaWdodCAhPSB1aS5vcmlnaW5hbFNpemUuaGVpZ2h0KSB7DQogICAgICAgICAgICAgICAgICAkdmlld3BvcnQub2JzZXJ2YXRvci5ub3RpZnkoJ2pyYWNfY3JvcF9oZWlnaHQnLCAkY3JvcC5oZWlnaHQoKSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KQ0KICAgICAgICAgIH0NCiAgICAgICAgICAkdmlld3BvcnQuYXBwZW5kKCRjcm9wKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIEV4dGVuZCB2aWV3cG9ydCB3aXRjaCB1c2VmdWxsIG9iamVjdHMgYXMgaXQgd2lsbCBiZSBleHBvc2VkIHRvIHVzZXINCiAgICAgICAgLy8gZnVuY3Rpb25zIGludGVyZmFjZQ0KICAgICAgICAkLmV4dGVuZCgkdmlld3BvcnQsIHsNCiAgICAgICAgICAkY29udGFpbmVyOiAkY29udGFpbmVyLA0KICAgICAgICAgICRpbWFnZTogJGltYWdlLA0KICAgICAgICAgICRjcm9wOiAkY3JvcCwNCiAgICAgICAgICAkem9vbV93aWRnZXQ6ICR6b29tX3dpZGdldCwNCiAgICAgICAgICAvLyBMZXQgbWUgaW50cm9kdWNlIHRoZSBmb2xsb3dpbmcgVGVybWluYXRvcidzIGZyaWVuZCB3aGljaCBoYW5kbGUgdGhlDQogICAgICAgICAgLy8gY3JlYXRpb24gb2YgdGhlIHZpZXdwb3J0IGV2ZW50cy4NCiAgICAgICAgICBvYnNlcnZhdG9yOiB7DQogICAgICAgICAgICBpdGVtczoge30sDQogICAgICAgICAgICAvLyBSZWdpc3RlciBhbiBldmVudCB3aXRoIGEgZ2l2ZW4gZWxlbWVudA0KICAgICAgICAgICAgcmVnaXN0ZXI6IGZ1bmN0aW9uKGV2ZW50X25hbWUsIGVsZW1lbnQsIG9uZXZlbnRfY2FsbGJhY2spIHsNCiAgICAgICAgICAgICAgaWYgKGV2ZW50X25hbWUgJiYgZWxlbWVudCkgew0KICAgICAgICAgICAgICAgIHRoaXMuaXRlbXNbZXZlbnRfbmFtZV0gPSB7DQogICAgICAgICAgICAgICAgICBlbGVtZW50OiBlbGVtZW50LA0KICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IG9uZXZlbnRfY2FsbGJhY2sNCiAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgLy8gVW5yZWdpc3RlciBhbiBldmVudA0KICAgICAgICAgICAgdW5yZWdpc3RlcjogZnVuY3Rpb24oZXZlbnRfbmFtZSkgew0KICAgICAgICAgICAgICBkZWxldGUgdGhpcy5pdGVtc1tldmVudF9uYW1lXTsNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICAvLyBUcmlnZ2VyIGFuIGV2ZW50IGFuZCBvcHRpb25hbGx5IHN1cHBseSBhIHZhbHVlDQogICAgICAgICAgICBub3RpZnk6IGZ1bmN0aW9uKGV2ZW50X25hbWUsIHZhbHVlKSB7DQogICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1zW2V2ZW50X25hbWVdKSB7DQogICAgICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLml0ZW1zW2V2ZW50X25hbWVdLmVsZW1lbnQ7DQogICAgICAgICAgICAgICAgdmFyIG9uZXZlbnRfY2FsbGJhY2sgPSB0aGlzLml0ZW1zW2V2ZW50X25hbWVdLmNhbGxiYWNrOw0KICAgICAgICAgICAgICAgIGVsZW1lbnQudHJpZ2dlcihldmVudF9uYW1lLFskdmlld3BvcnQsIHZhbHVlXSk7DQogICAgICAgICAgICAgICAgaWYgKCQuaXNGdW5jdGlvbihvbmV2ZW50X2NhbGxiYWNrKSkgew0KICAgICAgICAgICAgICAgICAgb25ldmVudF9jYWxsYmFjay5jYWxsKCR2aWV3cG9ydCwgZXZlbnRfbmFtZSwgZWxlbWVudCwgdmFsdWUpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAkaW1hZ2UudHJpZ2dlcignanJhY19ldmVudHMnLFskdmlld3BvcnRdKTsNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBub3RpZnlfYWxsOiBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgdGhpcy5ub3RpZnkoJ2pyYWNfY3JvcF94JywgdGhpcy5jcm9wX3Bvc2l0aW9uX3goKSk7DQogICAgICAgICAgICAgIHRoaXMubm90aWZ5KCdqcmFjX2Nyb3BfeScsIHRoaXMuY3JvcF9wb3NpdGlvbl95KCkpOw0KICAgICAgICAgICAgICB0aGlzLm5vdGlmeSgnanJhY19jcm9wX3dpZHRoJywgJGNyb3Aud2lkdGgoKSk7DQogICAgICAgICAgICAgIHRoaXMubm90aWZ5KCdqcmFjX2Nyb3BfaGVpZ2h0JywgJGNyb3AuaGVpZ2h0KCkpOw0KICAgICAgICAgICAgICB0aGlzLm5vdGlmeSgnanJhY19pbWFnZV93aWR0aCcsICRpbWFnZS53aWR0aCgpKTsNCiAgICAgICAgICAgICAgdGhpcy5ub3RpZnkoJ2pyYWNfaW1hZ2VfaGVpZ2h0JywgJGltYWdlLmhlaWdodCgpKTsNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICAvLyBSZXR1cm4gY3JvcCB4IHBvc2l0aW9uIHJlbGF0aXZlIHRvICRpbWFnZQ0KICAgICAgICAgICAgY3JvcF9wb3NpdGlvbl94OiBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgcmV0dXJuICRjcm9wLnBvc2l0aW9uKCkubGVmdCAtICRpbWFnZS5wb3NpdGlvbigpLmxlZnQ7DQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgLy8gUmV0dXJuIGNyb3AgeSBwb3NpdGlvbiByZWxhdGl2ZSB0byAkaW1hZ2UNCiAgICAgICAgICAgIGNyb3BfcG9zaXRpb25feTogZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgIHJldHVybiAkY3JvcC5wb3NpdGlvbigpLnRvcCAtICRpbWFnZS5wb3NpdGlvbigpLnRvcDsNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICAvLyBEb2VzIHRoZSBjcm9wIGlzIGNvbXBsZXRlbHkgaW5zaWRlIHRoZSBpbWFnZT8NCiAgICAgICAgICAgIGNyb3BfY29uc2lzdGVudDogZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgIHJldHVybiB0aGlzLmNyb3BfcG9zaXRpb25feCgpPj0wICYmIHRoaXMuY3JvcF9wb3NpdGlvbl95KCk+PTANCiAgICAgICAgICAgICAgJiYgdGhpcy5jcm9wX3Bvc2l0aW9uX3goKSArICRjcm9wLndpZHRoKCk8PSRpbWFnZS53aWR0aCgpDQogICAgICAgICAgICAgICYmIHRoaXMuY3JvcF9wb3NpdGlvbl95KCkgKyAkY3JvcC5oZWlnaHQoKTw9JGltYWdlLmhlaWdodCgpOw0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIC8vIFNldCBhIHByb3BlcnR5ICh3aGljaCBoaXMgbmFtZSBpcyBvbmUgb2YgdGhlIGV2ZW50KSB3aXRoIGEgZ2l2ZW4NCiAgICAgICAgICAgIC8vIHZhbHVlIHRoZW4gbm90aWZ5IHRoaXMgb3BlcmF0aW9uDQogICAgICAgICAgICBzZXRfcHJvcGVydHk6IGZ1bmN0aW9uKHRoYXQsIHZhbHVlKSB7DQogICAgICAgICAgICAgIHZhbHVlID0gcGFyc2VJbnQodmFsdWUpOw0KICAgICAgICAgICAgICBpZiAoaXNOYU4odmFsdWUpKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIHN3aXRjaCAodGhhdCkgew0KICAgICAgICAgICAgICAgIGNhc2UgJ2pyYWNfY3JvcF94JzoNCiAgICAgICAgICAgICAgICAgICRjcm9wLmNzcygnbGVmdCcsdmFsdWUgKyAkaW1hZ2UucG9zaXRpb24oKS5sZWZ0KTsNCiAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgJ2pyYWNfY3JvcF95JzoNCiAgICAgICAgICAgICAgICAgICRjcm9wLmNzcygndG9wJyx2YWx1ZSArICRpbWFnZS5wb3NpdGlvbigpLnRvcCk7DQogICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlICdqcmFjX2Nyb3Bfd2lkdGgnOg0KICAgICAgICAgICAgICAgICAgJGNyb3Aud2lkdGgodmFsdWUpOw0KICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAnanJhY19jcm9wX2hlaWdodCc6DQogICAgICAgICAgICAgICAgICAkY3JvcC5oZWlnaHQodmFsdWUpOw0KICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAnanJhY19pbWFnZV93aWR0aCc6DQogICAgICAgICAgICAgICAgICBpZiAoJGltYWdlLnNjYWxlX3Byb3BvcnRpb25fbG9ja2VkKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBpbWFnZV9oZWlnaHQgPSBNYXRoLnJvdW5kKCRpbWFnZS5oZWlnaHQoKSAqIHZhbHVlIC8gJGltYWdlLndpZHRoKCkpOw0KICAgICAgICAgICAgICAgICAgICAkaW1hZ2UuaGVpZ2h0KGltYWdlX2hlaWdodCk7DQogICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5KCdqcmFjX2ltYWdlX2hlaWdodCcsIGltYWdlX2hlaWdodCk7DQogICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAkaW1hZ2Uud2lkdGgodmFsdWUpOw0KICAgICAgICAgICAgICAgICAgJHpvb21fd2lkZ2V0LnNsaWRlcigndmFsdWUnLCB2YWx1ZSk7DQogICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlICdqcmFjX2ltYWdlX2hlaWdodCc6DQogICAgICAgICAgICAgICAgICBpZiAoJGltYWdlLnNjYWxlX3Byb3BvcnRpb25fbG9ja2VkKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBpbWFnZV93aWR0aCA9IE1hdGgucm91bmQoJGltYWdlLndpZHRoKCkgKiB2YWx1ZSAvICRpbWFnZS5oZWlnaHQoKSk7DQogICAgICAgICAgICAgICAgICAgICRpbWFnZS53aWR0aChpbWFnZV93aWR0aCk7DQogICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5KCdqcmFjX2ltYWdlX3dpZHRoJywgaW1hZ2Vfd2lkdGgpOw0KICAgICAgICAgICAgICAgICAgICAkem9vbV93aWRnZXQuc2xpZGVyKCd2YWx1ZScsIGltYWdlX3dpZHRoKTsNCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICRpbWFnZS5oZWlnaHQodmFsdWUpOw0KICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgdGhpcy5ub3RpZnkodGhhdCwgdmFsdWUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgfSk7DQoNCiAgICAgICAgLy8gSGlkZSB0aGUgbG9hZGluZyBub3RpY2UNCiAgICAgICAgJGxvYWRpbmcuaGlkZSgpOw0KICAgICAgICAkbG9hZGluZy5yZW1vdmUoKTsNCg0KICAgICAgICAvLyBGaW5hbGx5IGRpc3BsYXkgdGhlIGltYWdlDQogICAgICAgICRpbWFnZS5zaG93KCk7DQoNCiAgICAgICAgLy8gVHJpZ2dlciB0aGUgdmlld3BvcnRfb25sb2FkIGNhbGxiYWNrDQogICAgICAgIGlmICgkLmlzRnVuY3Rpb24oc2V0dGluZ3Mudmlld3BvcnRfb25sb2FkKSkgew0KICAgICAgICAgIHNldHRpbmdzLnZpZXdwb3J0X29ubG9hZC5jYWxsKCR2aWV3cG9ydCk7DQogICAgICAgICAgJHZpZXdwb3J0Lm9ic2VydmF0b3Iubm90aWZ5X2FsbCgpOw0KICAgICAgICB9DQogICAgICB9Ow0KDQogICAgICAvLyBXaGVuIGFuIGltYWdlIGlzIHVzaW5nIGFuIHNyYyBpbWFnZSAiZGF0YSIgVVJMIHNjaGVtZSB0aGVuIGl0IGFwcGVhciANCiAgICAgIC8vIHRoYXQgdGhlIGltYWdlIGxvYWQgZXZlbnQgbmV2ZXIgZ2V0IGZpcmVkLiBUaGVuIGZpcmUgZGlyZWN0bHkNCiAgICAgIC8vIGltYWdlX2xvYWRfaGFuZGxlcigpIGluIHRoYXQgY2FzZS4NCiAgICAgIHZhciBzcmMgPSAkaW1hZ2UuYXR0cignc3JjJyk7DQogICAgICBpZiAoL15kYXRhOmltYWdlLy50ZXN0KHNyYykpIHsNCiAgICAgICAgIGltYWdlX2xvYWRfaGFuZGxlcigpOw0KICAgICAgfQ0KICAgICAgZWxzZSB7DQogICAgICAgIHNyYyA9IHNyYyArIChzcmMuc2VhcmNoKC9cPy8pPDA/Jz8nOicmJykgKyAnanJhY3JhbmRvbT0nICsgKG5ldyBEYXRlKCkpLmdldFRpbWUoKTsNCiAgICAgICAgJCgnPGltZz4nKS5hdHRyKCdzcmMnLCBzcmMpLmxvYWQoaW1hZ2VfbG9hZF9oYW5kbGVyKTsNCiAgICAgIH0NCiAgICB9KTsNCiAgfTsNCn0pKCBqUXVlcnkgKTsNCg==]]></data>
	</file>
	<file>
	  <filename>/js/jrac/style.jrac.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogalF1ZXJ5IFJlc2l6ZSBBbmQgQ3JvcCAoanJhYykgKi8NCg0KLmpyYWNfY29udGFpbmVyIHt9DQoNCi5qcmFjX3ZpZXdwb3J0IHsNCiAgcG9zaXRpb246IHJlbGF0aXZlOw0KICBvdmVyZmxvdzogaGlkZGVuOw0KICBib3JkZXI6MXB4IHNvbGlkICNjY2M7DQogIHdpZHRoOjY0MHB4Ow0KICBoZWlnaHQ6NDgwcHg7DQogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnaW1hZ2VzL3ZpZXdwb3J0X2JhY2tncm91bmQuZ2lmJyk7DQp9DQoNCi5qcmFjX2xvYWRpbmcgew0KICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2ltYWdlcy9sb2FkaW5nLmdpZicpOw0KICBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7DQogIGJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyOw0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIHRvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowOw0KfQ0KDQouanJhY19jcm9wIHsNCiAgcG9zaXRpb246IGFic29sdXRlOw0KICBib3JkZXI6IDFweCBzb2xpZCB5ZWxsb3c7DQp9DQoNCi5qcmFjX2Nyb3BfZHJhZ19oYW5kbGVyIHsNCiAgcG9zaXRpb246IGFic29sdXRlOw0KICB0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsNCiAgb3BhY2l0eTogLjE7IC8qIEZYL09wZXJhL1NhZmFyaS9DaHJvbWUgKi8NCiAgLW1zLWZpbHRlcjogImFscGhhKG9wYWNpdHk9MTApIjsgLyogSUU4ICovDQogIGZpbHRlcjogYWxwaGEob3BhY2l0eSA9IDEwKTsgLyogSUU2L0lFNyAqLw0KfQ0KDQouanJhY192aWV3cG9ydCBpbWcsIC5qcmFjX2Nyb3BfZHJhZ19oYW5kbGVyIHsNCiAgY3Vyc29yOiBwb2ludGVyOw0KfQ0K]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNBDQokbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddID0gJ1N0b3JlIHVwbG9hZHMgaW4gQVdTIFMzJzsNCiRsYW5nWydhc2tfdW5pbnN0YWxsJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHVuaW5zdGFsbCB0aGUgQVdTIFMzIFVwbG9hZHMgbW9kdWxlPyc7DQokbGFuZ1snYWRtaW5fc2F2ZSddID0gIlNhdmUiOw0KJGxhbmdbJ2FjY2Vzc19rZXknXSA9ICdBY2Nlc3Mga2V5cyc7DQokbGFuZ1snYWxsb3dlZCddID0gJ0FsbG93ZWQnOw0KJGxhbmdbJ2F1dGhvcl9sYWJlbCddID0gJ1Bvc3RlZCBieTonOw0KJGxhbmdbJ2FjY2Vzc19yZWdpb24nXSA9ICdSZWdpb24nOw0KJGxhbmdbJ2FjY2Vzc19rZXknXSA9ICdBV1MgQWNjZXNzIEtleSBJRCc7DQokbGFuZ1snYWNjZXNzX3NlY3JldF9rZXknXSA9ICdBV1MgU2VjcmV0IEFjY2VzcyBLZXknOw0KI0INCiRsYW5nWydidWNrZXRfbmFtZSddID0gJ0J1Y2tldCBOYW1lJzsNCiNDDQokbGFuZ1snY2F0ZWdvcnlfbGFiZWwnXSA9ICdDYXRlZ29yeTonOw0KJGxhbmdbJ2NhbmNlbCddID0gJ0NhbmNlbCc7DQokbGFuZ1snY2hvb3NlX2ZpbGUnXSA9ICdDaG9vc2UgZmlsZSc7DQokbGFuZ1snY29uZmlnJ10gPSAnQVdTIFMzIE1vZHVsZSBDb25maWd1cmF0aW9uJzsNCiRsYW5nWydjdXN0b21fdXJsJ10gPSAnQ3VzdG9tIFVSTCc7DQokbGFuZ1snY2FwdGNoYV90aXRsZSddID0gJ0VudGVyIHRoZSB0ZXh0IGRpc3BsYXllZCBpbiB0aGlzIGltYWdlJzsNCiNEDQokbGFuZ1snZGF0ZSddID0gJ0RhdGUnOw0KJGxhbmdbJ2RlbGV0ZSddID0gJ0RlbGV0ZSc7DQokbGFuZ1snZGVmYXVsdF9vcHRpb25zJ10gPSAnTW9kdWxlIGRlZmF1bHRzJzsNCiRsYW5nWydkZWxldGVzZWxlY3RlZCddID0gJ0RlbGV0ZSB0aGUgc2VsZWN0ZWQgZmlsZXMvZGlyZWN0b3JpZXMnOw0KJGxhbmdbJ2RlbGV0ZXNlbGVjdGVkY2FuY2VsbGVkJ10gPSAnRGVsZXRpb24gb2Ygc2VsZWN0ZWQgZmlsZXMgY2FuY2VsZWQnOw0KJGxhbmdbJ2RlbGV0ZXN1Y2Nlc3MnXSA9ICdJdGVtcyBzdWNjZXNzZnVsbHkgZGVsZXRlZCc7DQokbGFuZ1snZGVzY19maWxlbWFuYWdlcl9zZXR0aW5ncyddID0gJ0VkaXQgRmlsZSBNYW5hZ2VyIFNldHRpbmdzJzsNCiRsYW5nWydkaXJjaG1vZGZhaWxtdWx0aSddID0gJ0NoYW5naW5nIHBlcm1pc3Npb25zIG9uIHRoZSBkaXJlY3RvcnkgZmFpbGVkLCBzb21lIG9mIGl0XCdzIGNvbnRlbnQgbWF5IGhhdmUgZ290dGVuIG5ldyBwZXJtaXNzaW9ucywgdGhvdWdoLic7DQokbGFuZ1snZGlyY2htb2RmYWlsdXJlJ10gPSAnQ2hhbmdpbmcgcGVybWlzc2lvbnMgb2YgdGhlIGRpcmVjdG9yeSBmYWlsZWQnOw0KJGxhbmdbJ2RpcmNobW9kc3VjY2VzcyddID0gJ1RoZSBkaXJlY3Rvcnkgc3VjY2Vzc2Z1bGx5IGdvdCBuZXcgcGVybWlzc2lvbnMnOw0KJGxhbmdbJ2RpcmNobW9kc3VjY2Vzc211bHRpJ10gPSAnQ2hhbmdpbmcgcGVybWlzc2lvbnMgb24gdGhlIGRpcmVjdG9yeSBhbmQgaXRcJ3MgY29udGVudCB3YXMgc3VjY2Vzc2Z1bCc7DQokbGFuZ1snZGlyZXhpc3RzJ10gPSAnVGhlIGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cyc7DQokbGFuZ1snZGlybm90ZW1wdHljb25maXJtJ10gPSAnVGhlIGRpcmVjdG9yeSBpc25cJ3QgZW1wdHkhIERvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgaXQsIGluY2x1ZGluZyBhbGwgY29udGVudCBhbmQgc3ViZGlyZWN0b3JpZXM/JzsNCiRsYW5nWydkaXJ0cmVlZGVsZXRlY2FuY2VsbGVkJ10gPSAnRGVsZXRpb24gb2YgZGlyZWN0b3J5IGNhbmNlbGVkJzsNCiRsYW5nWydkaXJ0cmVlZGVsZXRlZmFpbCddID0gJ0FuIGVycm9yIG9jY3VycmVkIHdoZW4gZGVsZXRpbmcgdGhpcyBkaXJlY3RvcnkuIFNvbWUgb2YgdGhlIGNvbnRlbnRzIG1heSBoYXZlIGJlZW4gZGVsZXRlZCwgaG93ZXZlci4nOw0KJGxhbmdbJ2RpcnRyZWVkZWxldGVzdWNjZXNzJ10gPSAnVGhlIGRpcmVjdG9yeSBpbmNsdWRpbmcgY29udGVudCB3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQuJzsNCiNFDQokbGFuZ1snZXJyb3InXSA9ICdFcnJvcic7DQokbGFuZ1snZXJyb3JfY2FwdGNoYW1pc21hdGNoJ10gPSAnQ2FwdGNoIHRleHQgZW50ZXJlZCBkaWQgbm90IG1hdGNoIHRoZSBpbWFnZSBkaXNwbGF5ZWQnOw0KJGxhbmdbJ2Vycm9yX3NldHVwJ10gPSAnUGxlYXNlIGNvbXBsZXRlIHRoZSBBV1MgU0RLIE1vZHVsZSBTZXR1cCA8YSBocmVmPSIlcyI+aGVyZTwvYT4nOw0KJGxhbmdbJ2V4cGlyeV9pbnRlcnZhbCddID0gJ1JlbW92ZSBjYWNoZSBmaWxlcyB0aGF0IGFyZSBvbGRlciB0aGFuIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbnV0ZXMnOw0KI0YNCiRsYW5nWydmaWxlJ10gPSAnRmlsZSc7DQokbGFuZ1snZmllbGRkZWZfYWxsb3dfaGVscCddID0gJ1NwZWNpZnkgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBmaWxlIGV4dGVuc2lvbnMgdGhhdCBhcmUgYWxsb3dlZC4gRm9yIGV4YW1wbGU6IHBkZixnaWYsanBlZyxqcGcgKGtlZXAgbG93ZXJjYXNlKSc7DQokbGFuZ1snZmlyc3RwYWdlJ10gPSAnJmx0OyZsdDsnOw0KJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0FXUyBTMyc7DQojRw0KJGxhbmdbJ2dldHN0YXJ0ZWQnXSA9ICdHZXQgU3RhcnRlZCB3aXRoIEFXUyBTMyBNb2R1bGUnOw0KI0gNCiRsYW5nWydoZWxwX3BhcmFtX2FjdGlvbiddID0gJw0KICAgIE92ZXJyaWRlIHRoZSBkZWZhdWx0IGFjdGlvbi4gUG9zc2libGUgdmFsdWVzIGFyZToNCiAgICA8dWw+DQogICAgICAgIDxsaT4mcXVvdDtkZWZhdWx0JnF1b3Q7IC0gZGlzcGxheXMgdGhlIHN1bW1hcnkgdmlldy48L2xpPg0KICAgICAgICA8bGk+JnF1b3Q7ZGV0YWlsJnF1b3Q7IC0gZGlzcGxheXMgYSBzcGVjaWZpZWQgZW50cnkgaW4gZGV0YWlsIG1vZGUuIChtdXN0IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCA8aT5wcmVmaXg8L2k+KTwvbGk+DQogICAgICAgIDxsaT4mcXVvdDt1cGxvYWQmcXVvdDsgLSBkaXNwbGF5cyB0aGUgdXBsb2FkIGZvcm0gKGNhbiBiZSB1c2VkIHdpdGggPGk+cHJlZml4PC9pPiBmb3IgdXBsb2FkIGluIGEgc3BlY2lmaWMgbG9jYXRpb24pPC9lbT48L2xpPg0KICAgIDwvdWw+JzsNCiRsYW5nWydoZWxwX3BhcmFtX3ByZWZpeCddID0gJ0Egc3RyaW5nIG9mIGNoYXJhY3RlcnMgdGhhdCBjYW4gYmUgdGhlIGNvbXBsZXRlIHBhdGggaW4gZnJvbnQgb2YgdGhlIG9iamVjdCBuYW1lLiBQcm9qZWN0L1dvcmRGaWxlcy8uLi4nOw0KJGxhbmdbJ2hlbHBfcGFyYW1fZGV0YWlsdGVtcGxhdGUnXSA9ICdUaGUgZGV0YWlsIHRlbXBsYXRlIHlvdSB3aXNoIHRvIHVzZS4nOw0KJGxhbmdbJ2hlbHBfcGFyYW1fc3VtbWFyeXRlbXBsYXRlJ10gPSAnVGhlIHN1bW1hcnkgdGVtcGxhdGUgeW91IHdpc2ggdG8gdXNlLic7DQokbGFuZ1snaGVscF9wYXJhbV9wYWdlbGltaXQnXSA9ICdNYXhpbXVtIG51bWJlciBvZiBpdGVtcyB0byBkaXNwbGF5IChwZXIgcGFnZSkuICBJZiB0aGlzIHBhcmFtZXRlciBpcyBub3Qgc3VwcGxpZWQgYWxsIG1hdGNoaW5nIGl0ZW1zIHdpbGwgYmUgZGlzcGxheWVkLiAgSWYgaXQgaXMsIGFuZCB0aGVyZSBhcmUgbW9yZSBpdGVtcyBhdmFpbGFibGUgdGhhbiBzcGVjaWZpZWQgaW4gdGhlIHBhcmFtZXRlciwgdGV4dCBhbmQgbGlua3Mgd2lsbCBiZSBzdXBwbGllZCB0byBhbGxvdyBzY3JvbGxpbmcgdGhyb3VnaCB0aGUgcmVzdWx0cyc7DQokbGFuZ1snaGVscF9wYXJhbV9kZXRhaWxwYWdlJ10gPSAnUGFnZSB0byBkaXNwbGF5IGl0ZW0gZGV0YWlscyBpbi4gTXVzdCBiZSBhIHBhZ2UgYWxpYXMvaWQuIFVzZWQgdG8gYWxsb3cgZGV0YWlscyB0byBiZSBkaXNwbGF5ZWQgaW4gYSBkaWZmZXJlbnQgcGFnZSB0aGFuIHN1bW1hcnkuJzsNCiRsYW5nWydoZWxwX3BhcmFtX3N1bW1hcnlwYWdlJ10gPSAnUGFnZSB0byBkaXNwbGF5IGl0ZW0gc3VtbWFyeSBpbi4gTXVzdCBiZSBhIHBhZ2UgYWxpYXMvaWQuIFVzZWQgdG8gYWxsb3cgc3VtbWFyaWVzIHRvIGJlIGRpc3BsYXllZCBpbiBhIGRpZmZlcmVudCBwYWdlIHRoYW4gaW5pdGlhdG9yLic7DQoNCiRsYW5nWydoZWxwX2FjY2Vzc19rZXknXSA9IDw8PEVPVA0KPGgzPk1hbmFnaW5nIGFjY2VzcyBrZXlzIChjb25zb2xlKTwvaDM+DQo8cD5Zb3UgY2FuIHVzZSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSB0byBtYW5hZ2UgdGhlIGFjY2VzcyBrZXlzIG9mIGFuIElBTSB1c2VyLjxicj48L3A+DQo8dWw+DQo8bGk+PGEgaHJlZj0iaHR0cHM6Ly9jb25zb2xlLmF3cy5hbWF6b24uY29tL2lhbSIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIiB0YXJnZXQ9Il9ibGFuayI+PHNwYW4+SUFNIGNvbnNvbGU8L3NwYW4+PC9hPjwvc3Bhbj4NCjxsaT5Vc2UgeW91ciBBV1MgYWNjb3VudCBJRCBvciBhY2NvdW50IGFsaWFzLCB5b3VyIElBTSB1c2VyIG5hbWUsIGFuZCB5b3VyIHBhc3N3b3JkIHRvIHNpZ24gaW4gdG8gdGhlIElBTSBjb25zb2xlLjwvbGk+DQo8bGk+SW4gdGhlIG5hdmlnYXRpb24gYmFyIG9uIHRoZSB1cHBlciByaWdodCwgY2hvb3NlIHlvdXIgdXNlciBuYW1lLCBhbmQgdGhlbiBjaG9vc2UgU2VjdXJpdHkgY3JlZGVudGlhbHMuPC9saT4NCjwvdWw+DQoNCjxoMz5UbyBjcmVhdGUgYW4gYWNjZXNzIGtleTwvaDM+DQo8dWw+DQo8bGk+SW4gdGhlIEFjY2VzcyBrZXlzIHNlY3Rpb24sIGNob29zZSBDcmVhdGUgYWNjZXNzIGtleS4gSWYgeW91IGFscmVhZHkgaGF2ZSB0d28gYWNjZXNzIGtleXMsIHRoaXMgYnV0dG9uIGlzIGRlYWN0aXZhdGVkIGFuZCB5b3UgbXVzdCBkZWxldGUgYW4gYWNjZXNzIGtleSBiZWZvcmUgeW91IGNhbiBjcmVhdGUgYSBuZXcgb25lLjwvbGk+DQo8bGk+T24gdGhlIEFjY2VzcyBrZXkgYmVzdCBwcmFjdGljZXMgJiBhbHRlcm5hdGl2ZXMgcGFnZSwgY2hvb3NlIHlvdXIgdXNlIGNhc2UgdG8gbGVhcm4gYWJvdXQgYWRkaXRpb25hbCBvcHRpb25zIHdoaWNoIGNhbiBoZWxwIHlvdSBhdm9pZCBjcmVhdGluZyBhIGxvbmctdGVybSBhY2Nlc3Mga2V5LiBJZiB5b3UgZGV0ZXJtaW5lIHRoYXQgeW91ciB1c2UgY2FzZSBzdGlsbCByZXF1aXJlcyBhbiBhY2Nlc3Mga2V5LCBjaG9vc2UgT3RoZXIgYW5kIHRoZW4gY2hvb3NlIE5leHQuPC9saT4NCjxsaT4oT3B0aW9uYWwpIFNldCBhIGRlc2NyaXB0aW9uIHRhZyB2YWx1ZSBmb3IgdGhlIGFjY2VzcyBrZXkuIFRoaXMgYWRkcyBhIHRhZyBrZXktdmFsdWUgcGFpciB0byB5b3VyIElBTSB1c2VyLiBUaGlzIGNhbiBoZWxwIHlvdSBpZGVudGlmeSBhbmQgdXBkYXRlIGFjY2VzcyBrZXlzIGxhdGVyLiBUaGUgdGFnIGtleSBpcyBzZXQgdG8gdGhlIGFjY2VzcyBrZXkgaWQuIFRoZSB0YWcgdmFsdWUgaXMgc2V0IHRvIHRoZSBhY2Nlc3Mga2V5IGRlc2NyaXB0aW9uIHRoYXQgeW91IHNwZWNpZnkuIFdoZW4geW91IGFyZSBmaW5pc2hlZCwgY2hvb3NlIENyZWF0ZSBhY2Nlc3Mga2V5LjwvbGk+DQo8bGk+T24gdGhlIFJldHJpZXZlIGFjY2VzcyBrZXlzIHBhZ2UsIGNob29zZSBlaXRoZXIgU2hvdyB0byByZXZlYWwgdGhlIHZhbHVlIG9mIHlvdXIgdXNlcidzIHNlY3JldCBhY2Nlc3Mga2V5LCBvciBEb3dubG9hZCAuY3N2IGZpbGUuIFRoaXMgaXMgeW91ciBvbmx5IG9wcG9ydHVuaXR5IHRvIHNhdmUgeW91ciBzZWNyZXQgYWNjZXNzIGtleS4gQWZ0ZXIgeW91J3ZlIHNhdmVkIHlvdXIgc2VjcmV0IGFjY2VzcyBrZXkgaW4gYSBzZWN1cmUgbG9jYXRpb24sIGNob29zZSBEb25lLjwvbGk+DQo8L3VsPg0KRU9UOw0KDQokbGFuZ1snaGVscF9vcHRfZXhwaXJ5X2ludGVydmFsJ10gPSAnU3BlY2lmeSB0aGUgYW1vdW50IG9mIHRpbWUgKGluIG1pbnV0ZXMpIHRoYXQgYnJvd3NlcnMgc2hvdWxkIGNhY2hlIHF1ZXJpZXMgZm9yLiBTZXR0aW5nIHRoaXMgdmFsdWUgdG8gMCBkaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eS4gSW4gbW9zdCBjaXJjdW1zdGFuY2VzIHlvdSBzaG91bGQgc3BlY2lmeSBhIHZhbHVlIGdyZWF0ZXIgdGhhbiAzMCc7DQokbGFuZ1snaGVscF9idWNrZXRfbmFtZSddID0gJ1RoaXMgbW9kdWxlIHdpbGwgbm90IGNyZWF0ZSBhbnkgUzMgYnVja2V0cy4gWW91IGhhdmUgdG8gY3JlYXRlIHRoZSBidWNrZXQgd2l0aCBwdWJsaWMgcmVhZCBhY2Nlc3MuJzsNCiRsYW5nWydoZWxwX3VzZV9jdXN0b21fdXJsJ10gPSAnRW5hYmxlIHRoaXMgaWYgeW91IHdhbnQgdG8gdXNlIGN1c3RvbSBVUkwnOw0KJGxhbmdbJ2hlbHBfY3VzdG9tX3VybCddID0gJ0N1c3RvbSBVUkwgY2FuIGJlIGEgQ2xvdWRmcm9udCBVUkwgb3IgaWYgYW55IHVybCBtYXBwZWQgb24geW91ciBidWNrZXQuJzsNCiNMDQokbGFuZ1snbGFzdF9yZWZyZXNoZWQnXSA9ICdMYXN0IHJlZnJlc2hlZCc7DQokbGFuZ1snbG9nZmlsZXBhdGgnXSA9ICdQbGVhc2UgcHJvdmlkZSB5b3VyIGZ1bGwgTG9nIEZpbGUgcGF0aCwgaW5jbHVkaW5nIGZpbGVuYW1lJzsNCiRsYW5nWydsaW5lJ10gPSAnTGluZSc7DQokbGFuZ1snbGFiZWxfc2l6ZSddID0gJ1NpemUnOw0KJGxhbmdbJ2xhYmVsX3VybF9vcmlnaW5hbCddID0gJ09yaWdpbmFsIFVybCc7DQokbGFuZ1snbGFiZWxfdXJsJ10gPSAnVXJsJzsNCiRsYW5nWydsYWJlbF91cmxfcHJlc2lnbmVkJ10gPSAnUHJlc2lnbmVkIFVybCc7DQokbGFuZ1snbGFiZWxfbWltZSddID0gJ01pbWUnOw0KJGxhbmdbJ2xhc3RwYWdlJ10gPSAnJmd0OyZndDsnOw0KI00NCiRsYW5nWydtZXNzYWdlJ10gPSAnTWVzc2FnZSc7DQokbGFuZ1snbXNnX3ZyZnlfaW50ZWdyaXR5dmVyaWZpZWQnXSA9ICdDb25uZWN0aW9uIEVzdGFibGlzaGVkJzsNCiRsYW5nWydtc2dfdnJmeV9ub2Nvbm4nXSA9ICdDb25uZWN0aW9uIE5vdCBFc3RhYmxpc2hlZCc7DQojTg0KJGxhbmdbJ25leHRwYWdlJ10gPSAnJmd0Oyc7DQojUA0KJGxhbmdbJ3BhZ2UnXSA9ICdQYWdlJzsNCiRsYW5nWydwcm9tcHRfZW1haWwnXSA9ICdFbWFpbCBBZGRyZXNzJzsNCiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0FXUyBTMyBNb2R1bGUgd2FzIGluc3RhbGxlZCc7DQokbGFuZ1sncG9zdHJvdGF0ZSddID0gJ0FjdGlvbiBmb3IgYWZ0ZXIgaW1hZ2Ugcm90YXRpb24nOw0KJGxhbmdbJ3ByZWRlZmluZWQnXSA9ICdQcmVkZWZpbmVkIEFuZ2xlcyc7DQokbGFuZ1sncHJvbXB0X2NvcHknXSA9ICdDb3B5IG9uZSBvciBtb3JlIEl0ZW1zJzsNCiRsYW5nWydwcm9tcHRfZHJvcGZpbGVzJ10gPSAnRHJvcCBmaWxlcyBoZXJlIHRvIHVwbG9hZCc7DQokbGFuZ1sncHJvbXB0X21vdmUnXSA9ICdNb3ZlIEl0ZW1zIHRvIEFub3RoZXIgRGlyZWN0b3J5JzsNCiRsYW5nWydwcm9tcHRfdXNlX2N1c3RvbV91cmwnXSA9ICdVc2UgQ3VzdG9tIFVSTCc7DQokbGFuZ1sncHJvbXB0X2N1c3RvbV91cmwnXSA9ICdDdXN0b20gVVJMJzsNCiRsYW5nWydwcm9tcHRfZGV0YWlscGFnZSddID0gJ0RldGFpbCBwYWdlJzsNCiRsYW5nWydwcm9tcHRfc3VtbWFyeXBhZ2UnXSA9ICdTdW1tYXJ5IHBhZ2UnOw0KJGxhbmdbJ3Byb21wdF9pdGVtc2Rpc3BsYXllZCddID0gJ051bWJlciBvZiBpdGVtcyB0byBkaXNwbGF5IGluIHRoZSBhZG1pbiBwYWdlJzsNCiRsYW5nWydwcm9tcHRfZ28nXSA9ICdHbyc7DQokbGFuZ1sncHJldnBhZ2UnXSA9ICcmbHQ7JzsNCiRsYW5nWydwcm9tcHRfb2YnXSA9ICdvZic7DQokbGFuZ1sncHJvbXB0X3BhZ2UnXSA9ICdQYWdlJzsNCiRsYW5nWydwcm9tcHRfcGFnZWxpbWl0J10gPSAnUGFnZSBMaW1pdCc7DQojUg0KJGxhbmdbJ3Jldmlld3MnXSA9ICdSZXZpZXdzJzsNCiRsYW5nWydyZWdpb24nXSA9ICdSZWdpb24nOw0KJGxhbmdbJ3JldHVybnRvbW9kdWxlJ10gPSAnUmV0dXJuIHRvIE1vZHVsZSc7DQokbGFuZ1sncmVxdWlyZWQnXSA9ICdSZXF1aXJlZCc7DQokbGFuZ1sncmVmcmVzaHN1Y2Nlc3MnXSA9ICdJdGVtcyBzdWNjZXNzZnVsbHkgcmVmcmVzaGVkJzsNCiNTDQokbGFuZ1snc3VibWl0J10gPSAnU3VibWl0JzsNCiRsYW5nWydzb3JyeV9ub2ZpbGVzJ10gPSAnU29ycnksIHdlIGNvdWxkIG5vdCBmaW5kIGFueSBmaWxlcyc7DQokbGFuZ1snc3VjY2Vzc2Z1bF91cGxvYWQnXSA9ICdZb3VyIGZpbGUgd2FzIHN1Y2Nlc3NmdWxseSB1cGxvYWRlZC4gIEluIHRoZSBlbmQsIHRoZSBmaWxlbmFtZSB3ZSB1c2VkIHdhcyAlcyc7DQojVA0KJGxhbmdbJ3R5cGUnXSA9ICdUeXBlJzsNCiRsYW5nWyd0eXBlX0FXU1MzJ10gPSAnQVdTUzMnOw0KJGxhbmdbJ3R5cGVfZGV0YWlsJ10gPSAnRGV0YWlsJzsNCiRsYW5nWyd0eXBlX3N1bW1hcnknXSA9ICdTdW1tYXJ5JzsNCiRsYW5nWyd0eXBlX1Jldmlld3MnXSA9ICdSZXZpZXdzJzsNCiRsYW5nWyd0eXBlX3VwbG9hZCddID0gJ1VwbG9hZCc7DQokbGFuZ1sndGl0bGVfY2hhbmdlZGlyJ10gPSAnQ2hhbmdlIHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoaXMgZGlyZWN0b3J5JzsNCiRsYW5nWyd0aXRsZV9jaGFuZ2V1cGRpciddID0gJ0dvIHRvIHRoZSBwYXJlbnQgZm9sZGVyJzsNCiRsYW5nWyd0aXRsZV9kcm9wem9uZSddID0gJ1lvdSBjYW4gZHJvcCBmaWxlcyBoZXJlIGZyb20geW91ciBmaWxlIG1hbmFnZXIgdG8gYXV0b21hdGljYWxseSBiZWdpbiB1cGxvYWRpbmcnOw0KJGxhbmdbJ3RpdGxlX3JlZnJlc2gnXSA9ICdSZWZyZXNoIENhY2hlZCBEYXRhJzsNCiNVDQokbGFuZ1sndXBsb2FkJ10gPSAnVXBsb2FkJzsNCiNWDQokbGFuZ1snVkFMSURBVElPTl9FUlJPUiddID0gJ1BsZWFzZSBwcm92aWRlIHlvdXIgTG9nIEZpbGUgcGF0aCc7DQojVw0KJGxhbmdbJ3dhcm5fZGVsZXRlX2RpcmVjdG9yeSddID0gJ0EgZm9sZGVyIGlzIHNlbGVjdGVkIGZvciBkZWxldGlvbiwgYWxsIG9iamVjdHMgaW4gdGhlIGZvbGRlciB3aWxsIGJlIGRlbGV0ZWQsIGFuZCBhbnkgbmV3IG9iamVjdHMgYWRkZWQgd2hpbGUgdGhlIGRlbGV0ZSBhY3Rpb24gaXMgaW4gcHJvZ3Jlc3MgbWlnaHQgYWxzbyBiZSBkZWxldGVkLiBJZiBhbiBvYmplY3QgaXMgc2VsZWN0ZWQgZm9yIGRlbGV0aW9uLCBhbnkgbmV3IG9iamVjdHMgd2l0aCB0aGUgc2FtZSBuYW1lIHRoYXQgYXJlIHVwbG9hZGVkIGJlZm9yZSB0aGUgZGVsZXRlIGFjdGlvbiBpcyBjb21wbGV0ZWQgd2lsbCBhbHNvIGJlIGRlbGV0ZWQuJzsNCiRsYW5nWyd3YXJuX2ZpbGVfbm90X2FsbG93ZWQnXSA9ICdGaWxldHlwZSBub3QgYWxsb3dlZCc7DQokbGFuZ1snd2Fybl9maWxlX21pc3NpbmcnXSA9ICdTZWxlY3QgYSBmaWxlIHRvIHVwbG9hZCc7DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.bucket_query.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBBV1NTMw0KIyBBdXRob3JzOiBNYWdhbCBIZXppLCB3aXRoIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uLg0KIyBDb3B5cmlnaHQ6IChDKSAyMDIzIE1hZ2FsIEhlemksIGhfbWFnYWxAaG90bWFpbC5jb20NCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzLiBTZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLyAgDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyBNYWRlIFNpbXBsZShUTSkgaXMgKGMpIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIDIwMDQtMjAyMCAoaW5mb0BjbXNtYWRlc2ltcGxlLm9yZykNCiMgUHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0FXU1MzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VDQojIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIA0KIyBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMNCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluDQojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IA0KIyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgDQojIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgQW1hem9uIFdlYiBTZXJ2aWNlcywgQVdTLCBhbmQgdGhlIFBvd2VyZWQgYnkgQVdTIGxvZ28gYXJlIHRyYWRlbWFya3Mgb2YgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpuYW1lc3BhY2UgQVdTUzM7DQoNCnVzZSBBV1NTM1x1dGlsczsNCnVzZSBBV1NTM1xoZWxwZXJzOw0KdXNlIEFXU1NES1xlbmNyeXB0Ow0KDQpmaW5hbCBjbGFzcyBidWNrZXRfcXVlcnkNCnsNCiAgICBwcml2YXRlICRzM0NsaWVudCA9IG51bGw7DQogICAgcHJpdmF0ZSAkX2RhdGEgPSBbIA0KICAgICAgICAncHJlZml4Jz0+bnVsbCwgDQogICAgICAgICdidWNrZXQnPT5udWxsLCANCiAgICAgICAgJ2RlbGltaXRlcic9Pm51bGwsIA0KICAgICAgICAnbWF4a2V5cyc9PjEwMDAsIA0KICAgICAgICAnc3RhcnRhZnRlcic9PjAsDQogICAgICAgICdyZXR1cm5pZCcgPT4gbnVsbCwNCiAgICAgICAgJ2RldGFpbHBhZ2UnID0+IG51bGwNCiAgICBdOw0KDQogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRwYXJhbXMgPSBhcnJheSgpKQ0KICAgIHsNCiAgICAgICAgLy9wcmludF9yKCRwYXJhbXMpOw0KICAgICAgICAkdGhpcy0+czNDbGllbnQgPSB1dGlsczo6Z2V0UzNDbGllbnQoKTsNCg0KICAgICAgICBmb3JlYWNoKCAkcGFyYW1zIGFzICRrZXkgPT4gJHZhbCApIHsNCiAgICAgICAgICAgIGlmKCAhYXJyYXlfa2V5X2V4aXN0cygka2V5LCR0aGlzLT5fZGF0YSkgKSBjb250aW51ZTsNCiAgICAgICAgICAgIC8vICR0aGlzWyRrZXldID0gJHZhbDsNCiAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9ICR2YWw7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gX19nZXQoJGtleSkNCiAgICB7DQogICAgICAgIGlmKCBpc3NldCgkdGhpcy0+X2RhdGFbJGtleV0pICkgcmV0dXJuICR0aGlzLT5fZGF0YVska2V5XTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gX19zZXQoJGtleSwkdmFsKQ0KICAgIHsNCiAgICAgICAgc3dpdGNoKCAka2V5ICkgew0KICAgICAgICBjYXNlICdQcmVmaXgnOg0KICAgICAgICBjYXNlICdCdWNrZXQnOg0KICAgICAgICBjYXNlICdEZWxpbWl0ZXInOg0KICAgICAgICBjYXNlICdNYXJrZXInOg0KICAgICAgICBjYXNlICdDb250aW51YXRpb25Ub2tlbic6DQogICAgICAgICAgICBpZiggIWlzX251bGwoJHZhbCkgKSAkdmFsID0gdHJpbSgkdmFsKTsNCiAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9ICR2YWw7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSAnTWF4S2V5cyc6DQogICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSAoaW50KSBtYXgoMSxtaW4oMTAwMCwoaW50KSAkdmFsKSk7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSAnU3RhcnRBZnRlcic6DQogICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSAoaW50KSBtYXgoMCxtaW4oMTAwMDAwLChpbnQpICR2YWwpKTsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICBjYXNlICdwYWdlY291bnQnOg0KICAgICAgICBjYXNlICdwYWdlbnVtJzoNCiAgICAgICAgY2FzZSAncmV0dXJuaWQnOg0KICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gKGludCkgJHZhbDsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uICZleGVjdXRlX2J5X3BhZ2VzKCl7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICANCiAgICAgICAgICAgICRyZXN1bHRQYWdpbmF0b3IgPSAkdGhpcy0+czNDbGllbnQtPmdldFBhZ2luYXRvcignTGlzdE9iamVjdHNWMicsICR0aGlzLT5fZGF0YSk7DQogICAgICAgICAgICAkbGlzdGluZyA9ICR0aGlzLT5fZGF0YTsNCiAgICAgICAgICAgICRsaXN0aW5nWydkYXRlJ10gPSB0aW1lKCk7DQogICAgICAgICAgICAkaSA9IDE7DQogICAgICAgICAgICAkaXRlbXMgPSAwOw0KICAgICAgICAgICAgZm9yZWFjaCAoJHJlc3VsdFBhZ2luYXRvciBhcyAkcmVzdWx0KSB7DQogICAgICAgICAgICAgICAgLy9wcmludF9yKCRyZXN1bHQpOw0KICAgICAgICAgICAgICAgICRsaXN0aW5nWydwYWdlcyddWyRpXVsnaXRlbWNvdW50J10gPSAkcmVzdWx0WydLZXlDb3VudCddOw0KICAgICAgICAgICAgICAgICRsaXN0aW5nWydwYWdlcyddWyRpXVsnaXRlbXMnXSA9ICR0aGlzLT5GZXRjaEFsbCgkcmVzdWx0KTsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAkaSsrOw0KICAgICAgICAgICAgICAgICRpdGVtcysrOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBmb3JlYWNoKCRsaXN0aW5nWydwYWdlcyddIGFzICRwYWdlKXsNCiAgICAgICAgICAgICAgICAkbGlzdGluZ1sndG90YWwnXSArPSAkcGFnZVsnaXRlbWNvdW50J107DQogICAgICAgICAgICB9DQogICAgICAgIH0gY2F0Y2ggKEF3c0V4Y2VwdGlvbiAkZSkgew0KICAgICAgICAgICAgaWYoJGUtPmdldFN0YXR1c0NvZGUoKSA9PSA0MDQpew0KICAgICAgICAgICAgICAgICRlcnJvcl9tZXNzYWdlID0gJGJ1Y2tldF9pZC4iICIuJGUtPmdldEF3c0Vycm9yTWVzc2FnZSgpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkZXJyb3JfbWVzc2FnZSA9ICRlLT5nZXRNZXNzYWdlKCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlY2hvICRlcnJvcl9tZXNzYWdlOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuICRsaXN0aW5nOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiAmZXhlY3V0ZSgpDQogICAgew0KDQogICAgICAgIHRyeSB7DQoNCiAgICAgICAgICAgICRxcGFybXMgPSBhcnJheSgpOw0KICAgICAgICAgICAgJHFwYXJtc1snQnVja2V0J10gPSAkdGhpcy0+YnVja2V0Ow0KICAgICAgICAgICAgJHFwYXJtc1snRGVsaW1pdGVyJ10gPSAnLyc7DQogICAgICAgICAgICAkcXBhcm1zWydQcmVmaXgnXSA9ICR0aGlzLT5wcmVmaXg7DQoNCiAgICAgICAgICAgICRyZXN1bHRQYWdpbmF0b3IgPSAkdGhpcy0+czNDbGllbnQtPmdldFBhZ2luYXRvcignTGlzdE9iamVjdHNWMicsICRxcGFybXMpOw0KICAgICAgICAgICAgJGxpc3RpbmcgPSAkdGhpcy0+X2RhdGE7DQogICAgICAgICAgICAkbGlzdGluZ1snZGF0ZSddID0gdGltZSgpOw0KICAgICAgICAgICAgJGxpc3RpbmdbJ2l0ZW1zJ10gPSBbXTsNCiAgICAgICAgICAgICRpdGVtcyA9IDA7DQogICAgICAgICAgICBmb3JlYWNoICgkcmVzdWx0UGFnaW5hdG9yIGFzICRyZXN1bHQpIHsNCiAgICAgICAgICAgICAgICAkbGlzdGluZ1snaXRlbXMnXSA9IGFycmF5X21lcmdlKCRsaXN0aW5nWydpdGVtcyddLCAkdGhpcy0+RmV0Y2hBbGwoJHJlc3VsdCkpOw0KICAgICAgICAgICAgICAgICRpdGVtcysrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdXRpbHM6OnNvcnRCeVByb3BlcnR5KCRsaXN0aW5nWydpdGVtcyddLCAnbmFtZScpOw0KDQogICAgICAgICAgICAkaW5kaWNlc1RvTW92ZSA9IFtdOw0KICAgICAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJGxpc3RpbmdbJ2l0ZW1zJ10pOyAkaSsrKSB7DQogICAgICAgICAgICAgICAgaWYoJGxpc3RpbmdbJ2l0ZW1zJ11bJGldLT5kaXIgPT0gdHJ1ZSkkaW5kaWNlc1RvTW92ZVtdID0gJGk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoY291bnQoJGluZGljZXNUb01vdmUpID4gMCkgew0KICAgICAgICAgICAgICAgIHV0aWxzOjptb3ZlSXRlbXNUb0JlZ2lubmluZ0J5SW5kZXgoJGxpc3RpbmdbJ2l0ZW1zJ10sICRpbmRpY2VzVG9Nb3ZlKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRsaXN0aW5nWyd0b3RhbCddID0gY291bnQoJGxpc3RpbmdbJ2l0ZW1zJ10pOyAgDQogICAgICAgICAgICANCiAgICAgICAgfSBjYXRjaCAoQXdzRXhjZXB0aW9uICRlKSB7DQogICAgICAgICAgICBpZigkZS0+Z2V0U3RhdHVzQ29kZSgpID09IDQwNCl7DQogICAgICAgICAgICAgICAgJGVycm9yX21lc3NhZ2UgPSAkYnVja2V0X2lkLiIgIi4kZS0+Z2V0QXdzRXJyb3JNZXNzYWdlKCk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICRlcnJvcl9tZXNzYWdlID0gJGUtPmdldE1lc3NhZ2UoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVjaG8gJGVycm9yX21lc3NhZ2U7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gJGxpc3Rpbmc7ICAgICAgICANCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBGZXRjaCBhbGwgb2YgdGhlIHJlY29yZHMgaW4gdGhpcyByZXN1bHRzZXQgYXMgYW4gYXJyYXkgb2Ygb2JqZWN0cy4NCiAgICAgKg0KICAgICAqIEByZXR1cm4gb2JqZWN0W10NCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gRmV0Y2hBbGwoJHJzKQ0KICAgIHsNCg0KICAgICAgICAkX19tb2QgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdBV1NTMycpOw0KICAgICAgICAkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQogICAgICAgICR0aGVtZU9iamVjdCA9IFxjbXNfdXRpbHM6OmdldF90aGVtZV9vYmplY3QoKTsNCiAgICAgICAgJGRldGFpbHNwYWdlID0gJHRoaXMtPmRldGFpbHBhZ2U7DQogICAgICAgICRlbnRyeWFycmF5ID0gW107DQogICAgICAgICRidWNrZXRfaWQgPSAkdGhpcy0+YnVja2V0Ow0KDQogICAgICAgIC8vRGlyZWN0b3JpZXMNCiAgICAgICAgZm9yZWFjaCAoJHJzWydDb21tb25QcmVmaXhlcyddIGFzICRkaXIpIHsNCg0KICAgICAgICAgICAgJG9uZXJvdyA9IG5ldyBcc3RkQ2xhc3MoKTsNCiAgICAgICAgICAgICRvbmVyb3ctPmtleSA9ICRkaXJbJ1ByZWZpeCddOw0KICAgICAgICAgICAgJG9uZXJvdy0+bmFtZSA9IGJhc2VuYW1lKCRvbmVyb3ctPmtleSk7DQogICAgICAgICAgICAkb25lcm93LT5kaXIgPSB0cnVlOw0KICAgICAgICAgICAgJG9uZXJvdy0+bWltZSA9ICdkaXJlY3RvcnknOw0KICAgICAgICAgICAgJG9uZXJvdy0+dHlwZSA9IGFycmF5KCdkaXInKTsNCiAgICAgICAgICAgICRvbmVyb3ctPmV4dCA9ICcnOw0KICAgICAgICAgICAgJG9uZXJvdy0+aWNvbiA9ICRfX21vZC0+R2V0RmlsZUljb24oJG9uZXJvdy0+ZXh0LHRydWUpOw0KICAgICAgICAgICAgJGVudHJ5YXJyYXlbXT0gJG9uZXJvdzsNCg0KICAgICAgICB9DQoNCiAgICAgICAgZm9yZWFjaCggJHJzWydDb250ZW50cyddIGFzICRyb3cgKSB7DQoNCiAgICAgICAgICAgICAgICAkb25lcm93ID0gbmV3IFxzdGRDbGFzcygpOw0KICAgICAgICAgICAgICAgICRvbmVyb3ctPmtleSA9ICRyb3dbJ0tleSddOw0KICAgICAgICAgICAgICAgICRvbmVyb3ctPmtleV9lbmNvZGVkID0gdXJsZW5jb2RlKCRvbmVyb3ctPmtleSk7Ow0KICAgICAgICAgICAgICAgICRvbmVyb3ctPm5hbWUgPSBiYXNlbmFtZSgkb25lcm93LT5rZXkpOw0KICAgICAgICAgICAgICAgICRvbmVyb3ctPnNpemUgPSAkcm93WydTaXplJ107DQogICAgICAgICAgICAgICAgJG9uZXJvdy0+ZGF0ZSA9IHN0cnRvdGltZSggJHJvd1snTGFzdE1vZGlmaWVkJ10gKTsNCiAgICAgICAgDQogICAgICAgICAgICAgICAgJGV4cGxvZGVkZmlsZSA9IGV4cGxvZGUoJy4nLCAkb25lcm93LT5uYW1lKTsgDQogICAgICAgICAgICAgICAgJG9uZXJvdy0+ZXh0ID0gYXJyYXlfcG9wKCRleHBsb2RlZGZpbGUpOw0KICAgICAgICAgICAgICAgICRvbmVyb3ctPnR5cGUgPSBhcnJheSgnZmlsZScpOw0KDQogICAgICAgICAgICAgICAgJGhlYWQgPSAkdGhpcy0+czNDbGllbnQtPmhlYWRPYmplY3QoWw0KICAgICAgICAgICAgICAgICAgICAnQnVja2V0JyA9PiAkYnVja2V0X2lkLA0KICAgICAgICAgICAgICAgICAgICAnS2V5JyA9PiAkb25lcm93LT5rZXkNCiAgICAgICAgICAgICAgICBdKTsNCg0KICAgICAgICAgICAgICAgICRvbmVyb3ctPm1pbWUgPSAkaGVhZFsnQ29udGVudFR5cGUnXTsNCg0KICAgICAgICAgICAgICAgIGlmKCBzdHJwb3MoJG9uZXJvdy0+bWltZSwndGV4dCcpICE9PSBGQUxTRSApIHsNCiAgICAgICAgICAgICAgICAgICAgJG9uZXJvdy0+dHlwZVtdID0gJ3RleHQnOw0KICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIGlmKCRfX21vZC0+R2V0T3B0aW9uVmFsdWUoImN1c3RvbV91cmwiKSAhPT0gJycgJiYgJF9fbW9kLT5HZXRPcHRpb25WYWx1ZSgidXNlX2N1c3RvbV91cmwiKSA9PSB0cnVlICl7DQogICAgICAgICAgICAgICAgICAgICRiYXNlX3VybCA9ICRfX21vZC0+R2V0T3B0aW9uVmFsdWUoImN1c3RvbV91cmwiKS4nLyc7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgJGJhc2VfdXJsID0gImh0dHBzOi8vIi4kYnVja2V0X2lkLiIuczMuIi4kX19tb2QtPkdldFByZWZlcmVuY2UoJ2FjY2Vzc19yZWdpb24nKS4iLmFtYXpvbmF3cy5jb20vIjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgJG9uZXJvdy0+dXJsID0gJGJhc2VfdXJsLiRvbmVyb3ctPmtleTsNCiAgICAgICAgICAgICAgICAkb25lcm93LT51cmxfbGluayA9ICI8YSBocmVmPSciIC4gJG9uZXJvdy0+dXJsIC4gIicgdGFyZ2V0PSdfYmxhbmsnIGNsYXNzPVwiY2FyZC1saW5rXCI+IiAuICRvbmVyb3ctPm5hbWUgLiAiPC9hPiI7DQogICAgICAgICAgICAgICAgJG9uZXJvdy0+aWNvbiA9ICRfX21vZC0+R2V0RmlsZUljb24oJG9uZXJvdy0+ZXh0KTsNCiAgICAgICAgICAgICAgICAkb25lcm93LT5pY29uX2xpbmsgPSAiPGEgaHJlZj0nIiAuICRvbmVyb3ctPnVybCAuICInIHRhcmdldD0nX2JsYW5rJyBjbGFzcz1cImNhcmQtbGlua1wiPiIuJG9uZXJvdy0+aWNvbi4iPC9hPiI7DQogICAgICAgICAgICAgICAgJG9uZXJvdy0+cHJlc2lnbmVkX3VybCA9ICRfX21vZC0+Q3JlYXRlU2lnbmVkTGluaygkb25lcm93LT5rZXkpOw0KICAgICAgICAgICAgICAgICRvbmVyb3ctPnByZXNpZ25lZF9saW5rID0gIjxhIGhyZWY9JyIgLiAkb25lcm93LT5wcmVzaWduZWRfdXJsIC4gIicgY2xhc3M9XCJjYXJkLWxpbmtcIj4iIC4gJG9uZXJvdy0+bmFtZSAuICI8L2E+IjsNCiAgICAgICAgICAgICAgICAkb25lcm93LT5wcmVzaWduZWRfaWNvbl9saW5rID0gIjxhIGhyZWY9JyIgLiAkb25lcm93LT5wcmVzaWduZWRfdXJsIC4gIicgY2xhc3M9XCJjYXJkLWxpbmtcIj4iIC4gJG9uZXJvdy0+aWNvbiAuICI8L2E+IjsNCiAgICAgICAgICAgICAgICAkb25lcm93LT5kZXRhaWxfbGluayA9ICRfX21vZC0+Y3JlYXRlX3VybCgnY250bnQwMScsICdkZXRhaWwnLCAkZGV0YWlsc3BhZ2UsIGFycmF5KCdwcmVmaXgnID0+ICRvbmVyb3ctPmtleV9lbmNvZGVkKSk7DQoNCiAgICAgICAgICAgICAgICBpZiggJGNvbmZpZ1sndXJsX3Jld3JpdGluZyddID09ICdtb2RfcmV3cml0ZScpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkc3RyaW5nX2FycmF5ICAgPSBbXTsNCiAgICAgICAgICAgICAgICAgICAgJHN0cmluZ19hcnJheVtdID0gJ1MzJzsNCiAgICAgICAgICAgICAgICAgICAgJHN0cmluZ19hcnJheVtdID0gJ2ZpbGUnOw0KICAgICAgICAgICAgICAgICAgICAkc3RyaW5nX2FycmF5W10gPSAkb25lcm93LT5rZXlfZW5jb2RlZDsNCiAgICAgICAgICAgICAgICAgICAgJHN0cmluZ19hcnJheVtdID0gJGRldGFpbHNwYWdlOw0KICAgICAgICAgICAgICAgICAgICAkcHJldHR5dXJsID0gaW1wbG9kZSgnLycsICRzdHJpbmdfYXJyYXkpOyAgICANCiAgICAgICAgICAgICAgICAgICAgJGl0ZW1fZGV0YWlsdXJsID0gJF9fbW9kLT5jcmVhdGVfdXJsKCRpZCwgJ2RldGFpbCcsICRkZXRhaWxzcGFnZSwgYXJyYXkoJ3ByZWZpeCcgPT4gJG9uZXJvdy0+a2V5X2VuY29kZWQpLCBmYWxzZSwgZmFsc2UsICRwcmV0dHl1cmwpOw0KICAgICAgICAgICAgICAgICAgICAvL25lZWRzIGZpeA0KICAgICAgICAgICAgICAgICAgICAvLyRvbmVyb3ctPmRldGFpbF9saW5rID0gJGl0ZW1fZGV0YWlsdXJsOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAkZW50cnlhcnJheVtdID0gJG9uZXJvdzsNCiAgICAgICAgDQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICRlbnRyeWFycmF5Ow0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBvYmplY3RDb3VudCgpDQogICAgew0KICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnMzQ2xpZW50LT5saXN0T2JqZWN0c1YyKFsNCiAgICAgICAgICAgICdCdWNrZXQnID0+ICR0aGlzLT5CdWNrZXQsDQogICAgICAgICAgICAnUHJlZml4JyA9PiAkdGhpcy0+UHJlZml4LA0KICAgICAgICBdKTsNCiAgICAgICAgDQogICAgICAgICRvYmplY3RDb3VudCA9IGNvdW50KCRyZXN1bHRbJ0NvbnRlbnRzJ10pOw0KICAgICAgICByZXR1cm4gJG9iamVjdENvdW50Ow0KDQogICAgfQ0KDQogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjYWNoZV9xdWVyeSgkcXBhcm1zLCRqc29uX2ZpbGVfUGF0aCl7DQoNCiAgICAgICAgJHF1ZXJ5ID0gbmV3IGJ1Y2tldF9xdWVyeSgkcXBhcm1zKTsNCiAgICAgICAgJGRhdGEgPSAkcXVlcnktPmV4ZWN1dGUoKTsNCiAgICAgICAgJGpzb24gPSBqc29uX2VuY29kZSgkZGF0YSk7DQogICAgICAgICR0bXAgPSBlbmNyeXB0OjplbmNyeXB0KCRqc29uKTsNCiAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJGpzb25fZmlsZV9QYXRoLCAkdG1wKTsNCg0KICAgICAgICAvLyRqc29uID0gZmlsZV9nZXRfY29udGVudHMoJGpzb25fZmlsZV9QYXRoKTsNCiAgICAgICAgLy8kdG1wID0gZW5jcnlwdDo6ZGVjcnlwdCgkanNvbik7DQogICAgICAgICRkYXRhID0ganNvbl9kZWNvZGUoJGpzb24sIGZhbHNlKTsNCg0KICAgICAgICAvL3ByaW50X3IoJGRhdGEpOw0KDQogICAgICAgIHJldHVybiAkZGF0YTsNCg0KICAgIH0NCg0KICAgIC8qKiBpbnRlcm5hbCAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBmaWxsX2Zyb21fYXJyYXkoJHJvdykNCiAgICB7DQogICAgICAgIGZvcmVhY2goICRyb3cgYXMgJGtleSA9PiAkdmFsICkgew0KICAgICAgICAgICAgaWYoIGFycmF5X2tleV9leGlzdHMoJGtleSwkdGhpcy0+X2RhdGEpICkgew0KICAgICAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9ICR2YWw7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCg0KDQp9IC8vIGVuZCBvZiBjbGFzcw0K]]></data>
	</file>
	<file>
	  <filename>/lib/class.helpers.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBBV1NTMw0KIyBBdXRob3JzOiBNYWdhbCBIZXppLCB3aXRoIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uLg0KIyBDb3B5cmlnaHQ6IChDKSAyMDIzIE1hZ2FsIEhlemksIGhfbWFnYWxAaG90bWFpbC5jb20NCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzLiBTZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLyAgDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyBNYWRlIFNpbXBsZShUTSkgaXMgKGMpIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIDIwMDQtMjAyMCAoaW5mb0BjbXNtYWRlc2ltcGxlLm9yZykNCiMgUHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0FXU1MzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VDQojIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIA0KIyBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMNCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluDQojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IA0KIyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgDQojIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgQW1hem9uIFdlYiBTZXJ2aWNlcywgQVdTLCBhbmQgdGhlIFBvd2VyZWQgYnkgQVdTIGxvZ28gYXJlIHRyYWRlbWFya3Mgb2YgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpuYW1lc3BhY2UgQVdTUzM7DQoNCmZpbmFsIGNsYXNzIGhlbHBlcnMNCnsNCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHt9DQoNCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEluc3RhbmNlKCkNCiAgICB7DQogICAgICAgIHN0YXRpYyAkaW5zdGFuY2UgPSBudWxsOw0KICAgICAgICBpZiAoISRpbnN0YW5jZSkgew0KICAgICAgICAgICAgJGluc3RhbmNlID0gbmV3IHNlbGYoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiAkaW5zdGFuY2U7DQogICAgfQ0KDQogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmaW5kX2xheW91dF90ZW1wbGF0ZSgkcGFyYW1zLCAkcGFyYW1uYW1lLCAkdHlwZW5hbWUpDQogICAgew0KICAgICAgICAkbW9kID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgiQVdTUzMiKTsNCiAgICAgICAgJHBhcmFtbmFtZSA9IChzdHJpbmcpICRwYXJhbW5hbWU7DQogICAgICAgICR0eXBlbmFtZSA9IChzdHJpbmcpICR0eXBlbmFtZTsNCiAgICAgICAgaWYgKCAhaXNfYXJyYXkoJHBhcmFtcykgfHwgISgkdGhldGVtcGxhdGUgPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywkcGFyYW1uYW1lKSkgKSB7DQogICAgICAgICAgICAkdHBsID0gXENtc0xheW91dFRlbXBsYXRlOjpsb2FkX2RmbHRfYnlfdHlwZSgkdHlwZW5hbWUpOw0KICAgICAgICAgICAgaWYgKCAhaXNfb2JqZWN0KCR0cGwpICkgew0KICAgICAgICAgICAgICAgICRtb2QtPl9EaXNwbGF5RXJyb3JQYWdlICgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJ05vIGRlZmF1bHQgJy4kdHlwZW5hbWUuJyB0ZW1wbGF0ZSBmb3VuZCcpOw0KICAgICAgICAgICAgICAgIGF1ZGl0KCcnLCAnQVdTUzMnLCAnTm8gZGVmYXVsdCAnLiR0eXBlbmFtZS4nIHRlbXBsYXRlIGZvdW5kJyk7DQogICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJHRoZXRlbXBsYXRlID0gJHRwbC0+Z2V0X25hbWUoKTsNCiAgICAgICAgICAgIHVuc2V0KCR0cGwpOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiAkdGhldGVtcGxhdGU7DQogICAgfQ0KICAgIA0KICANCn0NCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBBV1NTMw0KIyBBdXRob3JzOiBNYWdhbCBIZXppLCB3aXRoIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uLg0KIyBDb3B5cmlnaHQ6IChDKSAyMDIzIE1hZ2FsIEhlemksIGhfbWFnYWxAaG90bWFpbC5jb20NCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzLiBTZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLyAgDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyBNYWRlIFNpbXBsZShUTSkgaXMgKGMpIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIDIwMDQtMjAyMCAoaW5mb0BjbXNtYWRlc2ltcGxlLm9yZykNCiMgUHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0FXU1MzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VDQojIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIA0KIyBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMNCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluDQojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IA0KIyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgDQojIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgQW1hem9uIFdlYiBTZXJ2aWNlcywgQVdTLCBhbmQgdGhlIFBvd2VyZWQgYnkgQVdTIGxvZ28gYXJlIHRyYWRlbWFya3Mgb2YgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpuYW1lc3BhY2UgQVdTUzM7DQoNCnVzZSBBd3NcU3RzXFN0c0NsaWVudDsNCnVzZSBcQXdzXENyZWRlbnRpYWxzXENyZWRlbnRpYWxzOw0KdXNlIFxBd3NcUzNcUzNDbGllbnQ7ICANCnVzZSBcQXdzXEV4Y2VwdGlvblxBd3NFeGNlcHRpb247DQp1c2UgXEF3c1xFeGNlcHRpb25cVW5yZXNvbHZlZEVuZHBvaW50RXhjZXB0aW9uOw0KdXNlIFxBV1NTREtcRXhjZXB0aW9uOw0KdXNlIFxBV1NTM1xoZWxwZXJzOw0KDQpmaW5hbCBjbGFzcyB1dGlscw0Kew0KDQogICAgcHJpdmF0ZSAkczNDbGllbnQgPSBudWxsOw0KICAgIHByaXZhdGUgc3RhdGljICRfX21vZDsNCiAgICBwcml2YXRlIHN0YXRpYyAkX19zZGs7DQoNCiAgICBwdWJsaWMgc3RhdGljICRwcm9wZXJ0eSA9ICJoZWxsbyB3b3JsZCI7DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QgKCl7DQoNCiAgICAgICAgJHRoaXMtPmF3c3NkayA9IHNlbGY6OmdldF9zZGsoKTsNCiAgICAgICAgJHRoaXMtPm1vZCA9IHNlbGY6OmdldF9tb2QoKTsNCiAgICAgICAgJHRoaXMtPnMzQ2xpZW50ID0gbnVsbDsNCiAgICAgICAgJHRoaXMtPmJ1Y2tldF9uYW1lID0gJHRoaXMtPm1vZC0+R2V0UHJlZmVyZW5jZSgnYnVja2V0X25hbWUnKTsNCiAgICAgICAgJHRoaXMtPmFjY2Vzc19yZWdpb24gPSAkdGhpcy0+bW9kLT5HZXRQcmVmZXJlbmNlKCdhY2Nlc3NfcmVnaW9uJyk7DQogICAgICAgICR0aGlzLT51c2VfY3VzdG9tX3VybCA9ICR0aGlzLT5tb2QtPkdldFByZWZlcmVuY2UoJ3VzZV9jdXN0b21fdXJsJyk7DQogICAgICAgICR0aGlzLT5jdXN0b21fdXJsID0gJHRoaXMtPm1vZC0+R2V0UHJlZmVyZW5jZSgnY3VzdG9tX3VybCcpOw0KICAgICAgICAkdGhpcy0+YWxsb3dlZCA9ICR0aGlzLT5tb2QtPkdldFByZWZlcmVuY2UoJ2FsbG93ZWQnKTsNCiAgICAgICAgJHRoaXMtPmVycm9ycyA9IGFycmF5KCk7DQoNCiAgICB9DQoNCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBsYW5nKCkNCiAgICB7DQogICAgICAgIGlmKCAhc2VsZjo6JF9fbW9kICkgc2VsZjo6JF9fbW9kID0gc2VsZjo6Z2V0X21vZCgpOw0KICAgICAgICAkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsNCiAgICAgICAgcmV0dXJuIGNhbGxfdXNlcl9mdW5jX2FycmF5KGFycmF5KHNlbGY6OiRfX21vZCwnTGFuZycpLCRhcmdzKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gdmFsaWRhdGUoKSB7DQoNCiAgICAgICAgJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOw0KICAgICAgICAkc2V0dGluZ3MgPSAkdGhpcy0+bW9kLT5HZXRTZXR0aW5nc1ZhbHVlcygpOw0KICAgICAgICBpZihlbXB0eSgkc2V0dGluZ3MpKSByZXR1cm4gZmFsc2U7DQoNCiAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICRkYXRhID0gYXJyYXkoJ2FjY2Vzc19rZXknLCdhY2Nlc3Nfc2VjcmV0X2tleScsJ2J1Y2tldF9uYW1lJywnYWNjZXNzX3JlZ2lvbicpOw0KDQogICAgICAgICAgICBmb3JlYWNoICgkZGF0YSBhcyAka2V5KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRpdGVtID0gJHRoaXMtPm1vZC0+R2V0UHJlZmVyZW5jZSgka2V5KTsNCiAgICAgICAgICAgICAgICBpZigkaXRlbT09IiIgb3IgJGl0ZW09PW51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZXJyb3JzW10gPSAkdGhpcy0+bGFuZygka2V5KS4gIiAiLiR0aGlzLT5sYW5nKCJyZXF1aXJlZCIpIDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmKCFlbXB0eSgkdGhpcy0+ZXJyb3JzKSl7DQogICAgICAgICAgICAgICAgaWYgKGNvdW50KCR0aGlzLT5lcnJvcnMpID09IDQpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAvL3ByaW50X3IoJHRoaXMtPmVycm9ycyk7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxBV1NTREtcRXhjZXB0aW9uKCR0aGlzLT5lcnJvcnMsInNsaWRlLWRhbmdlciIpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAkczMgPSBzZWxmOjpnZXRTM0NsaWVudCgpOw0KICAgICAgICAgICAgaWYgKGlzX2FycmF5KCRzMykgJiYgISRzM1snY29ubiddKXsNCiAgICAgICAgICAgICAgICAkdGhpcy0+ZXJyb3JzW10gPSAkczNbJ21lc3NhZ2UnXTsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEFXU1NES1xFeGNlcHRpb24oJHRoaXMtPmVycm9ycywic2xpZGUtZGFuZ2VyIik7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkdGhpcy0+czNDbGllbnQgPSAkczM7DQoNCiAgICAgICAgICAgIGlmKCEkdGhpcy0+czNDbGllbnQtPmRvZXNCdWNrZXRFeGlzdCgkdGhpcy0+bW9kLT5HZXRQcmVmZXJlbmNlKCdidWNrZXRfbmFtZScpKSl7DQogICAgICAgICAgICAgICAgJHRoaXMtPmVycm9yc1tdID0gJHRoaXMtPm1vZC0+R2V0UHJlZmVyZW5jZSgnYnVja2V0X25hbWUnKS4iIGRvZXMgbm90IGV4aXN0IjsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEFXU1NES1xFeGNlcHRpb24oJHRoaXMtPmVycm9ycywic2xpZGUtZGFuZ2VyIik7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICRzbWFydHktPmFzc2lnbigiYnVja2V0X25hbWUiLCR0aGlzLT5tb2QtPkdldFByZWZlcmVuY2UoJ2J1Y2tldF9uYW1lJykpOw0KICAgICAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCJidWNrZXRfdXJsIiwiaHR0cHM6Ly8iLiR0aGlzLT5tb2QtPkdldFByZWZlcmVuY2UoJ2J1Y2tldF9uYW1lJykuIi5zMy4iLiR0aGlzLT5tb2QtPkdldFByZWZlcmVuY2UoJ2FjY2Vzc19yZWdpb24nKS4iLmFtYXpvbmF3cy5jb20vIik7DQogICAgICAgICAgICANCiAgICAgICAgICAgIC8vaGVscGVyczo6X0Rpc3BsYXlBZG1pbk1lc3NhZ2UobnVsbCxhcnJheShzZWxmOjpsYW5nKCdtc2dfdnJmeV9pbnRlZ3JpdHl2ZXJpZmllZCcpKSk7DQoNCiAgICAgICAgfQ0KICAgICAgICBjYXRjaCAoXEFXU1NES1xFeGNlcHRpb24gJGUpIHsNCiAgICAgICAgICAgICR0aGlzLT5hd3NzZGstPl9EaXNwbGF5TWVzc2FnZSgkZS0+Z2V0VGV4dCgpLCRlLT5nZXRUeXBlKCkpOw0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQoNCiAgICAgICAgJG1lc3NhZ2UgPSAkdGhpcy0+YXdzc2RrLT5fRGlzcGxheU1lc3NhZ2UoJHRoaXMtPmxhbmcoJ21zZ192cmZ5X2ludGVncml0eXZlcmlmaWVkJyksInN1Y2Nlc3MiLDEpOw0KICAgICAgICAkc21hcnR5LT5hc3NpZ24oIm1lc3NhZ2UiLCRtZXNzYWdlKTsNCiAgICAgICAgcmV0dXJuIHRydWU7DQoJfQ0KICAgIA0KDQogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRTM0NsaWVudCgpew0KDQogICAgICAgICRyZXN1bHQgPSBhcnJheSgpOw0KICAgICAgICAkcmVzdWx0Wydjb25uJ10gPSB0cnVlOw0KDQogICAgICAgIHRyeSB7DQoNCiAgICAgICAgICAgICRzM0NsaWVudCA9IG5ldyBTM0NsaWVudChbDQogICAgICAgICAgICAgICAgJ2NyZWRlbnRpYWxzJyA9PiBzZWxmOjpnZXRfY3JlZGVudGlhbHMoKSwNCiAgICAgICAgICAgICAgICAncmVnaW9uJyA9PiBzZWxmOjpnZXRfbW9kKCktPkdldFByZWZlcmVuY2UoJ2FjY2Vzc19yZWdpb24nKSwNCiAgICAgICAgICAgICAgICAndmVyc2lvbicgPT4gJ2xhdGVzdCcNCiAgICAgICAgICAgICAgICBdKTsNCg0KICAgICAgICAgICAgJGJ1Y2tldHMgPSAkczNDbGllbnQtPmxpc3RCdWNrZXRzKCk7DQogICAgICAgICAgICANCiAgICAgICAgfSBjYXRjaCAoQXdzRXhjZXB0aW9uICRlKSB7DQogICAgICAgICAgICAkcmVzdWx0Wydjb25uJ10gPSBmYWxzZTsNCiAgICAgICAgICAgICRyZXN1bHRbJ21lc3NhZ2UnXSA9ICRlLT5nZXRBd3NFcnJvck1lc3NhZ2UoKTsNCiAgICAgICAgICAgIHJldHVybiAkcmVzdWx0Ow0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuICRzM0NsaWVudDsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gdXBsb2FkX2ZpbGUoJGZpbGVfbmFtZSwkZmlsZV90ZW1wX3NyYyl7DQoNCiAgICAgICAgJHRoaXMtPnMzQ2xpZW50ID0gJHRoaXM6OmdldFMzQ2xpZW50KCk7DQogICAgICAgICRyZXQgPSBhcnJheSgpOw0KICAgICAgICB0cnkgeyANCiAgICAgICAgICAgICRyZXN1bHQgPSAkdGhpcy0+czNDbGllbnQtPnB1dE9iamVjdChbIA0KICAgICAgICAgICAgICAgICdCdWNrZXQnID0+ICR0aGlzLT5idWNrZXRfbmFtZSwgDQogICAgICAgICAgICAgICAgJ0tleScgICAgPT4gJGZpbGVfbmFtZSwNCiAgICAgICAgICAgICAgICAnU291cmNlRmlsZScgPT4gJGZpbGVfdGVtcF9zcmMsDQogICAgICAgICAgICAgICAgJ1RhZ2dpbmcnID0+ICJNb2R1bGU9Q01TTVM6OkFXU1MzIg0KICAgICAgICAgICAgXSk7IA0KICAgICAgICAgICAgLy8kcmVzdWx0X2FyciA9ICRyZXN1bHQtPnRvQXJyYXkoKTsgDQoNCiAgICAgICAgICAgICRyZXRbMF0gPSB0cnVlOw0KICAgICAgICAgICAgJHJldFsyXSA9ICRmaWxlX25hbWU7ICANCg0KICAgICAgICB9IGNhdGNoIChBd3NFeGNlcHRpb24gJGUpIHsgDQogICAgICAgICAgICAkcmV0WzBdID0gZmFsc2U7DQogICAgICAgICAgICAkcmV0WzFdID0gJGUtPmdldEF3c0Vycm9yTWVzc2FnZSgpOw0KICAgICAgICAgICAgLy9lY2hvICRlLT5nZXRDb2RlKCkgLiAiICIgLiRlLT5nZXRNZXNzYWdlKCk7DQogICAgICAgIH0gDQoNCiAgICAgICAgcmV0dXJuICRyZXQ7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGxpc3RfbXlfYnVja2V0cygpew0KICAgICAgICAkYnVja2V0cyA9ICR0aGlzLT5zM0NsaWVudC0+bGlzdEJ1Y2tldHMoKTsNCiAgICAgICAgcmV0dXJuICRidWNrZXRzWydCdWNrZXRzJ107DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGJ1Y2tldHNFeGlzdHMoJGJ1Y2tldF9pZCl7DQogICAgICAgaWYoJHRoaXMtPnMzQ2xpZW50LT5kb2VzQnVja2V0RXhpc3QoJGJ1Y2tldF9pZCkpew0KICAgICAgICBlY2hvICJidWNrZXQgZXhpc3RzIjsNCiAgICAgICB9IGVsc2Ugew0KICAgICAgICBlY2hvICJidWNrZXQgZG9lcyBub3QgZXhpc3QiOw0KICAgICAgIH0NCg0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmVQYXRoKCRsaW5rLCRwYXRoKXsNCiAgICAgICAgJG5ld3BocmFzZSA9IHN0cl9yZXBsYWNlKCRwYXRoLCAiIiwgJGxpbmspOw0KICAgICAgICByZXR1cm4gJG5ld3BocmFzZTsNCiAgICAgfQ0KDQogICAgDQogICAgIHB1YmxpYyBmdW5jdGlvbiBsaXN0X215X2ZpbGVzKCl7DQogICAgICAgICRidWNrZXRzID0gJHRoaXMtPnMzQ2xpZW50LT5saXN0QnVja2V0cygpOw0KICAgICAgICByZXR1cm4gJGJ1Y2tldHNbJ0J1Y2tldHMnXTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2ZpbGUoJHByZWZpeCl7DQoNCiAgICAgICAgJG1vZCA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0FXU1MzJyk7DQogICAgICAgICR0aGlzLT5zM0NsaWVudCA9IHNlbGY6OmdldFMzQ2xpZW50KCk7DQoNCiAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICRmaWxlID0gJHRoaXMtPnMzQ2xpZW50LT5nZXRPYmplY3QoWw0KICAgICAgICAgICAgICAgICdCdWNrZXQnID0+ICRtb2QtPkdldE9wdGlvblZhbHVlKCJidWNrZXRfbmFtZSIpLA0KICAgICAgICAgICAgICAgICdLZXknID0+ICRwcmVmaXgsDQogICAgICAgICAgICBdKTsNCiAgICAgICAgICAgICRib2R5ID0gJGZpbGUtPmdldCgnQm9keScpOw0KICAgICAgICAgICAgJGJvZHktPnJld2luZCgpOw0KICAgICAgICAgICAgDQogICAgICAgIH0gY2F0Y2ggKEF3c0V4Y2VwdGlvbiAkZSkgew0KICAgICAgICAgICAgJGVycm9yc1tdID0gIkZhaWxlZCB0byBkb3dubG9hZCAkZmlsZV9uYW1lIGZyb20gJGJ1Y2tldF9uYW1lIHdpdGggZXJyb3I6ICIgLiAkZS0+Z2V0QXdzRXJyb3JNZXNzYWdlKCk7DQogICAgICAgICAgICAkZXJyb3JzW10gPSAiUGxlYXNlIGZpeCBlcnJvciB3aXRoIGZpbGUgZG93bmxvYWRpbmcgYmVmb3JlIGNvbnRpbnVpbmcuIjsNCiAgICAgICAgDQogICAgICAgICAgICAkbW9kLT5EaXNwbGF5RXJyb3JNZXNzYWdlKCRlcnJvcnMpOw0KDQogICAgICAgIH0NCg0KICAgIH0NCg0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2ZpbGVfaW5mbygkcHJlZml4KXsNCg0KICAgICAgICAkbW9kID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnQVdTUzMnKTsNCiAgICAgICAgJHMzQ2xpZW50ID0gc2VsZjo6Z2V0UzNDbGllbnQoKTsNCg0KICAgICAgICAkYnVja2V0X2lkID0gJG1vZC0+R2V0T3B0aW9uVmFsdWUoImJ1Y2tldF9uYW1lIik7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICAkZmlsZSA9ICRzM0NsaWVudC0+Z2V0T2JqZWN0KFsNCiAgICAgICAgICAgICAgICAnQnVja2V0JyA9PiAkYnVja2V0X2lkLA0KICAgICAgICAgICAgICAgICdLZXknID0+ICRwcmVmaXgsDQogICAgICAgICAgICBdKTsNCg0KICAgICAgICAgICAgJGhlYWQgPSAkczNDbGllbnQtPmhlYWRPYmplY3QoWw0KICAgICAgICAgICAgICAgICdCdWNrZXQnID0+ICRidWNrZXRfaWQsDQogICAgICAgICAgICAgICAgJ0tleScgPT4gJHByZWZpeA0KICAgICAgICAgICAgXSk7DQoNCiAgICAgICAgICAgICRvbmVyb3cgPSBuZXcgXHN0ZENsYXNzKCk7DQogICAgICAgICAgICAkb25lcm93LT5uYW1lID0gJHByZWZpeDsNCiAgICAgICAgICAgICRvbmVyb3ctPmJ1Y2tldCA9ICRidWNrZXRfaWQ7DQogICAgICAgICAgICAkb25lcm93LT5taW1lID0gJGhlYWRbJ0NvbnRlbnRUeXBlJ107DQogICAgICAgICAgICAkb25lcm93LT5zaXplPXNlbGY6OmZvcm1hdEJ5dGVzKCRmaWxlWydDb250ZW50TGVuZ3RoJ10pOw0KICAgICAgICAgICAgJG9uZXJvdy0+cG9zdGRhdGU9c3RydG90aW1lKCAkZmlsZVsnTGFzdE1vZGlmaWVkJ10gKTsNCiAgICAgICAgICAgICRvbmVyb3ctPnVybF9vcmlnaW5hbCA9IHNlbGY6OmdldFVybCgkcHJlZml4KTsNCiAgICAgICAgICAgICRvbmVyb3ctPnVybCA9ICRtb2QtPkdldFByZXR0eVVybCgkcHJlZml4KTsNCiAgICAgICAgICAgICRvbmVyb3ctPnVybF9wcmVzaWduZWQgPSBzZWxmOjpwcmVzaWduZWRVcmwoJHByZWZpeCk7DQogICAgICAgICAgICAkb25lcm93LT51cmwgPSBzdHJfcmVwbGFjZSgnXFwnLCcvJywkb25lcm93LT51cmwpOyAvLyB3aW5kb3plIGJvdGggc3Vja3MsIGFuZCBibG93cy4NCiAgICAgICAgICAgIGlmKHNlbGY6OmlzX2ZpbGVfaW1hZ2UoJG9uZXJvdy0+bmFtZSkpICRvbmVyb3ctPmlzaW1hZ2UgPSB0cnVlOw0KDQogICAgICAgICAgICByZXR1cm4gJG9uZXJvdzsNCg0KICAgICAgICAgICAgDQogICAgICAgIH0gY2F0Y2ggKEF3c0V4Y2VwdGlvbiAkZSkgew0KICAgICAgICAgICAgJGVycm9yc1tdID0gIkZhaWxlZCB0byBkb3dubG9hZCAkZmlsZV9uYW1lIGZyb20gJGJ1Y2tldF9uYW1lIHdpdGggZXJyb3I6ICIgLiAkZS0+Z2V0QXdzRXJyb3JNZXNzYWdlKCk7DQogICAgICAgICAgICAkZXJyb3JzW10gPSAiUGxlYXNlIGZpeCBlcnJvciB3aXRoIGZpbGUgZG93bmxvYWRpbmcgYmVmb3JlIGNvbnRpbnVpbmcuIjsNCiAgICAgICAgDQogICAgICAgICAgICAkbW9kLT5EaXNwbGF5RXJyb3JNZXNzYWdlKCRlcnJvcnMpOw0KDQogICAgICAgIH0NCg0KICAgIH0NCg0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVsZXRlT2JqZWN0KCRrZXluYW1lKXsNCg0KICAgICAgICAkaW5zdGFuY2UgPSBuZXcgc2VsZigpOw0KICAgICAgICAkczMgPSBzZWxmOjpnZXRTM0NsaWVudCgpOw0KICAgICAgICB0cnkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHMzLT5kZWxldGVPYmplY3QoWw0KICAgICAgICAgICAgICAgICAgICAnQnVja2V0JyA9PiAkaW5zdGFuY2UtPmJ1Y2tldF9uYW1lLA0KICAgICAgICAgICAgICAgICAgICAnS2V5JyAgICA9PiAka2V5bmFtZQ0KICAgICAgICAgICAgICAgIF0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgY2F0Y2ggKEF3c0V4Y2VwdGlvbiAkZSkgew0KICAgICAgICAgICAgICAgIGVjaG8gIkVycm9yIGRlbGV0aW5nIG9iamVjdDogIiAuICRlLT5nZXRBd3NFcnJvck1lc3NhZ2UoKSAuICJcbiI7DQogICAgICAgICAgICB9DQoNCiAgICB9DQoNCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlbGV0ZU9iamVjdERpcigkZGlyKXsNCiAgICAgICAgJGluc3RhbmNlID0gbmV3IHNlbGYoKTsNCiAgICAgICAgJHMzID0gc2VsZjo6Z2V0UzNDbGllbnQoKTsNCiAgICANCiAgICAgICAgJGtleXMgPSAkczMtPmxpc3RPYmplY3RzKFsNCiAgICAgICAgICAgICdCdWNrZXQnID0+ICRpbnN0YW5jZS0+YnVja2V0X25hbWUsDQogICAgICAgICAgICAnUHJlZml4JyA9PiAkZGlyDQogICAgICAgIF0pOw0KDQogICAgICAgIC8vIDMuIERlbGV0ZSB0aGUgb2JqZWN0cy4NCiAgICAgICAgZm9yZWFjaCAoJGtleXNbJ0NvbnRlbnRzJ10gYXMgJGtleSkNCiAgICAgICAgew0KICAgICAgICAgICAgJHMzLT5kZWxldGVPYmplY3RzKFsNCiAgICAgICAgICAgICAgICAnQnVja2V0JyAgPT4gJGluc3RhbmNlLT5idWNrZXRfbmFtZSwNCiAgICAgICAgICAgICAgICAnRGVsZXRlJyA9PiBbDQogICAgICAgICAgICAgICAgICAgICdPYmplY3RzJyA9PiBbDQogICAgICAgICAgICAgICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0tleScgPT4gJGtleVsnS2V5J10NCiAgICAgICAgICAgICAgICAgICAgICAgIF0NCiAgICAgICAgICAgICAgICAgICAgXQ0KICAgICAgICAgICAgICAgIF0NCiAgICAgICAgICAgIF0pOw0KICAgICAgICB9DQogICAgDQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIA0KICAgIH0NCiAgICANCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9tb2QoKXsNCiAgICAgICAgaWYoICFzZWxmOjokX19tb2QgKSBzZWxmOjokX19tb2QgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdBV1NTMycpOw0KICAgICAgICByZXR1cm4gc2VsZjo6JF9fbW9kOw0KICAgIH0NCg0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3Nkaygpew0KICAgICAgICBpZiggIXNlbGY6OiRfX3NkayApIHNlbGY6OiRfX3NkayA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0FXU1NESycpOw0KICAgICAgICByZXR1cm4gc2VsZjo6JF9fc2RrOw0KICAgIH0NCg0KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldF9jcmVkZW50aWFscygpew0KDQogICAgICAgICRtb2QgPSBzZWxmOjpnZXRfbW9kKCk7DQogICAgICAgICRzdHNDbGllbnQgPSBuZXcgU3RzQ2xpZW50KFsNCiAgICAgICAgICAgICd2ZXJzaW9uJyA9PiAnbGF0ZXN0JywNCiAgICAgICAgICAgICdyZWdpb24nID0+ICRtb2QtPkdldFByZWZlcmVuY2UoJ2FjY2Vzc19yZWdpb24nKSwNCiAgICAgICAgICAgICdjcmVkZW50aWFscycgPT4gWw0KICAgICAgICAgICAgICAgICdrZXknID0+ICRtb2QtPkdldFByZWZlcmVuY2UoJ2FjY2Vzc19rZXknKSwNCiAgICAgICAgICAgICAgICAnc2VjcmV0JyA9PiAkbW9kLT5HZXRQcmVmZXJlbmNlKCdhY2Nlc3Nfc2VjcmV0X2tleScpLA0KICAgICAgICAgICAgXSwNCiAgICAgICAgXSk7DQoNCiAgICAgICAgJHJlc3VsdCA9ICRzdHNDbGllbnQtPmdldFNlc3Npb25Ub2tlbigpOw0KICAgICAgICAkY3JlZGVudGlhbHMgPSAkc3RzQ2xpZW50LT5jcmVhdGVDcmVkZW50aWFscygkcmVzdWx0KTsNCg0KICAgICAgICByZXR1cm4gJGNyZWRlbnRpYWxzOw0KICAgIH0NCg0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0VXJsKCRrZXkpew0KICAgICAgICAkbW9kID0gc2VsZjo6Z2V0X21vZCgpOw0KICAgICAgICAkYnVja2V0X2lkID0gJG1vZC0+R2V0T3B0aW9uVmFsdWUoImJ1Y2tldF9uYW1lIik7DQoNCiAgICAgICAgJHMzQ2xpZW50ID0gc2VsZjo6Z2V0UzNDbGllbnQoKTsNCiAgICAgICAgJHVybCA9ICRzM0NsaWVudC0+Z2V0T2JqZWN0VXJsKCRidWNrZXRfaWQsICRrZXkpOw0KICAgICAgIA0KICAgICAgICByZXR1cm4gJHVybDsNCg0KICAgIH0NCg0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcHJlc2lnbmVkVXJsKCRrZXkpew0KDQogICAgICAgICRtb2QgPSBzZWxmOjpnZXRfbW9kKCk7DQogICAgICAgICRidWNrZXRfaWQgPSAkbW9kLT5HZXRPcHRpb25WYWx1ZSgiYnVja2V0X25hbWUiKTsNCiAgICAgICAgJHVzZV9jdXN0b21fdXJsID0gJG1vZC0+R2V0T3B0aW9uVmFsdWUoInVzZV9jdXN0b21fdXJsIik7DQogICAgICAgICRjdXN0b21fdXJsID0gJG1vZC0+R2V0T3B0aW9uVmFsdWUoImN1c3RvbV91cmwiKTsNCg0KICAgICAgICB0cnkgew0KICAgICAgICAgICAgJHMzQ2xpZW50ID0gc2VsZjo6Z2V0UzNDbGllbnQoKTsNCiAgICAgICAgICAgICRjbWQgPSAkczNDbGllbnQtPmdldENvbW1hbmQoJ0dldE9iamVjdCcsIFsNCiAgICAgICAgICAgICAgICAnQnVja2V0JyA9PiAkYnVja2V0X2lkLA0KICAgICAgICAgICAgICAgICdLZXknID0+ICRrZXkNCiAgICAgICAgICAgIF0pOw0KDQogICAgICAgICAgICAkcmVxdWVzdCA9ICRzM0NsaWVudC0+Y3JlYXRlUHJlc2lnbmVkUmVxdWVzdCgkY21kLCAnKzEgaG91cicpOw0KICAgICAgICAgICAgJHByZXNpZ25lZFVybCA9IChzdHJpbmcpJHJlcXVlc3QtPmdldFVyaSgpOw0KDQogICAgICAgICAgICBpZiggJHVzZV9jdXN0b21fdXJsICYmICRjdXN0b21fdXJsICkgew0KICAgICAgICAgICAgICAgICR1cmxQYXJ0cyA9IHBhcnNlX3VybCgkcHJlc2lnbmVkVXJsKTsNCiAgICAgICAgICAgICAgICBpZiAoJHVybFBhcnRzID09PSBmYWxzZSkgew0KICAgICAgICAgICAgICAgICAgICBlY2hvICJFcnJvciBwYXJzaW5nIHRoZSBVUkwiOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICR1cmxQYXJ0c1snc2NoZW1lJ10gPSBwYXJzZV91cmwoJGN1c3RvbV91cmwsIFBIUF9VUkxfU0NIRU1FKTsNCiAgICAgICAgICAgICAgICAgICAgJHVybFBhcnRzWydob3N0J10gPSBwYXJzZV91cmwoJGN1c3RvbV91cmwsIFBIUF9VUkxfSE9TVCk7DQogICAgICAgICAgICAgICAgICAgICRuZXdVcmwgPSAkdXJsUGFydHNbJ3NjaGVtZSddIC4gJzovLycgLiAkdXJsUGFydHNbJ2hvc3QnXTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR1cmxQYXJ0c1sncGF0aCddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJG5ld1VybCAuPSAkdXJsUGFydHNbJ3BhdGgnXTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHVybFBhcnRzWydxdWVyeSddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJG5ld1VybCAuPSAnPycuJHVybFBhcnRzWydxdWVyeSddOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICRwcmVzaWduZWRVcmwgPSAkbmV3VXJsOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuICRwcmVzaWduZWRVcmw7DQoNCiAgICAgICAgfSBjYXRjaCAoXEF3c0V4Y2VwdGlvbiAkZSkgew0KICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBlcnJvcg0KICAgICAgICAgICAgJG1lLT5zZXRFcnJvcihhcnJheSgNCiAgICAgICAgICAgICAgICAnZXJyb3InID0+ICJGYWlsZWQgdG8gY29ubmVjdCB0byBBV1Mgc2VydmVyIiwNCiAgICAgICAgICAgICAgICAnZXJybm8nID0+ICRlLT5nZXRBd3NFcnJvckNvZGUoKSwNCiAgICAgICAgICAgICAgICAnZXJyc3RyJyA9PiAkZS0+Z2V0QXdzRXJyb3JNZXNzYWdlKCkNCiAgICAgICAgICAgICkpOw0KDQogICAgICAgIH0NCiAgICAgICANCiAgICB9DQoNCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZvcm1hdEJ5dGVzKCRieXRlcykgew0KICAgICAgICBpZiAoJGJ5dGVzID4gMCkgew0KICAgICAgICAgICAgJGkgPSBmbG9vcihsb2coJGJ5dGVzKSAvIGxvZygxMDI0KSk7DQogICAgICAgICAgICAkc2l6ZXMgPSBhcnJheSgnQicsICdLQicsICdNQicsICdHQicsICdUQicsICdQQicsICdFQicsICdaQicsICdZQicpOw0KICAgICAgICAgICAgcmV0dXJuIHNwcmludGYoJyUuMDJGJywgcm91bmQoJGJ5dGVzIC8gcG93KDEwMjQsICRpKSwxKSkgKiAxIC4gJyAnIC4gQCRzaXplc1skaV07DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc3VtQnl0ZXMoJGl0ZW1zKSB7DQogICAgICAgICRzdW0gPSAwOw0KICAgICAgICBmb3JlYWNoICgkaXRlbXMgYXMgJGl0ZW0pIHsNCiAgICAgICAgICAgIGlmIChpc3NldCgkaXRlbS0+c2l6ZSkpIHsNCiAgICAgICAgICAgICAgICAkc3VtICs9ICRpdGVtLT5zaXplOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgDQogICAgICAgIHJldHVybiBzZWxmOjpmb3JtYXRCeXRlcygkc3VtKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzX2ZpbGVfYWNjZXB0YWJsZSggJGZpbGVfdHlwZSApDQogICAgew0KICAgICAgICAkbW9kID0gc2VsZjo6Z2V0X21vZCgpOw0KICAgICAgICAkZmlsZV90eXBlID0gc3RydG9sb3dlcigkZmlsZV90eXBlKTsNCiAgICAgICAgJGFsbG93VHlwZXMgPSBleHBsb2RlKCcsJywkbW9kLT5HZXRQcmVmZXJlbmNlKCdhbGxvd2VkJykpOw0KICAgICAgICBpZighaW5fYXJyYXkoJGZpbGVfdHlwZSwgJGFsbG93VHlwZXMpKSByZXR1cm4gRkFMU0U7DQogICAgICAgIHJldHVybiBUUlVFOw0KICAgIH0NCg0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNfZmlsZV9pbWFnZSggJHNyY19maWxlX25hbWUgKQ0KICAgIHsNCiAgICAgICAgJHN1cHBvcnRlZF9pbWFnZSA9IGFycmF5KA0KICAgICAgICAgICAgJ2dpZicsDQogICAgICAgICAgICAnanBnJywNCiAgICAgICAgICAgICdqcGVnJywNCiAgICAgICAgICAgICdwbmcnDQogICAgICAgICk7DQogICAgICAgIA0KICAgICAgICAkZXh0ID0gc3RydG9sb3dlcihwYXRoaW5mbygkc3JjX2ZpbGVfbmFtZSwgUEFUSElORk9fRVhURU5TSU9OKSk7DQogICAgICAgIGlmICghaW5fYXJyYXkoJGV4dCwgJHN1cHBvcnRlZF9pbWFnZSkpIHsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICBwdWJsaWMgZnVuY3Rpb24gY2hlY2tfaWFtX3BvbGljeSgpIHsNCiAgICAgICAgJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOw0KICAgICAgICAkZXJyb3IgPSBudWxsOw0KICAgICAgICB0cnkgew0KICAgICAgICAgICAgJHJlc3AgPSAkdGhpcy0+czNDbGllbnQtPmdldEJ1Y2tldFBvbGljeShbDQogICAgICAgICAgICAgICAgJ0J1Y2tldCcgPT4gJHRoaXMtPmJ1Y2tldF9uYW1lDQogICAgICAgICAgICBdKTsNCiAgICAgICAgICAgICRtZXNzYWdlID0gIlN1Y2NlZWQgaW4gcmVjZWl2aW5nIGJ1Y2tldCBwb2xpY3k6IjsNCg0KICAgICAgICB9IGNhdGNoIChBd3NFeGNlcHRpb24gJGUpIHsNCiAgICAgICAgICAgIGlmKCRlLT5nZXRTdGF0dXNDb2RlKCkgPT0gNDA0KXsNCiAgICAgICAgICAgICAgICAkZXJyb3IgPSAxOw0KICAgICAgICAgICAgICAgICRtZXNzYWdlID0gJHRoaXMtPmJ1Y2tldF9uYW1lLiIgIi4kZS0+Z2V0QXdzRXJyb3JNZXNzYWdlKCk7DQogICAgICAgICAgICAgICAgLy8kdGhpcy0+cHV0X2lhbV9wb2xpY3koKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgICRzbWFydHktPmFzc2lnbignbWVzc2FnZScsJG1lc3NhZ2UpOw0KICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ2Vycm9yJywkZXJyb3IpOw0KICAgICAgICANCg0KICAgIH0NCg0KICAgIA0KDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBwdXRfaWFtX3BvbGljeSgpIHsNCg0KICAgICAgICAkcG9saWN5ID0gJHRoaXMtPmdldF9pYW1fcG9saWN5KCk7DQogICAgICAgICRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsNCg0KICAgICAgICB0cnkgew0KICAgICAgICAgICAgJHJlc3AgPSAkdGhpcy0+czNDbGllbnQtPnB1dEJ1Y2tldFBvbGljeShbDQogICAgICAgICAgICAgICAgJ0J1Y2tldCcgPT4gJHRoaXMtPmJ1Y2tldF9uYW1lLA0KICAgICAgICAgICAgICAgICdQb2xpY3knID0+ICRwb2xpY3ksDQogICAgICAgICAgICBdKTsNCiAgICAgICAgICAgIGVjaG8gIlN1Y2NlZWQgaW4gcHV0IGEgcG9saWN5IG9uIGJ1Y2tldDogIiAuICR0aGlzLT5idWNrZXRfbmFtZSAuICJcbjxicj4iOw0KICAgICAgICB9IGNhdGNoIChBd3NFeGNlcHRpb24gJGUpIHsNCiAgICAgICAgICAgIC8vIERpc3BsYXkgZXJyb3IgbWVzc2FnZQ0KICAgICAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdtZXNzYWdlJywkdGhpcy0+YnVja2V0X25hbWUuIiAiLiRlLT5nZXRBd3NFcnJvck1lc3NhZ2UoKSk7DQoNCiAgICAgICAgfQ0KDQogICAgfQ0KDQogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfcG9saWN5KCl7DQogICAgICAgICRtb2QgPSBzZWxmOjpnZXRfbW9kKCk7DQogICAgICAgICRzM0NsaWVudCA9IHNlbGY6OmdldFMzQ2xpZW50KCk7DQogICAgICAgICRidWNrZXQgPSAkbW9kLT5HZXRPcHRpb25WYWx1ZSgiYnVja2V0X25hbWUiKTsNCg0KICAgICAgICB0cnkgew0KICAgICAgICAgICAgJHJlc3AgPSAkczNDbGllbnQtPmdldEJ1Y2tldEFjbChbDQogICAgICAgICAgICAgICAgJ0J1Y2tldCcgPT4gJGJ1Y2tldA0KICAgICAgICAgICAgXSk7DQogICAgICAgICAgICAvL3ByaW50X3IoJHJlc3ApOw0KICAgICAgICB9IGNhdGNoIChBd3NFeGNlcHRpb24gJGUpIHsNCiAgICAgICAgICAgIC8vIG91dHB1dCBlcnJvciBtZXNzYWdlIGlmIGZhaWxzDQogICAgICAgICAgICBlY2hvICRlLT5nZXRNZXNzYWdlKCk7DQogICAgICAgICAgICBlY2hvICJcbiI7DQogICAgICAgIH0NCg0KICAgIH0NCg0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0SW5zdGFuY2UoKQ0KICAgIHsNCiAgICAgICAgc3RhdGljICRpbnN0YW5jZSA9IG51bGw7DQogICAgICAgIGlmICghJGluc3RhbmNlKSB7DQogICAgICAgICAgICAkaW5zdGFuY2UgPSBuZXcgc2VsZigpOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuICRpbnN0YW5jZTsNCiAgICB9DQogICAgDQoNCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9pYW1fcG9saWN5KCkgOiBzdHJpbmcgew0KICAgICAgICAkbW9kID0gc2VsZjo6Z2V0X21vZCgpOw0KICAgICAgICAkYnVja2V0X2lkID0gJG1vZC0+R2V0T3B0aW9uVmFsdWUoImJ1Y2tldF9uYW1lIik7DQoJCSRidWNrZXQgPSBzdHJ0b2soICRidWNrZXRfaWQsICcvJyApOw0KDQoJCSRwYXRoID0gbnVsbDsNCg0KCQlpZiAoIHN0cnBvcyggJGJ1Y2tldF9pZCwgJy8nICkgKSB7DQoJCQkkcGF0aCA9IHN0cl9yZXBsYWNlKCBzdHJ0b2soICRidWNrZXRfaWQsICcvJyApIC4gJy8nLCAnJywgJGJ1Y2tldF9pZCApOw0KCQl9DQoNCgkJcmV0dXJuICd7DQogICAgICAgICAgICAiVmVyc2lvbiI6ICIyMDEyLTEwLTE3IiwNCiAgICAgICAgICAgICJTdGF0ZW1lbnQiOiBbDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAiU2lkIjogIkJhc2ljQWNjZXNzIiwNCiAgICAgICAgICAgICAgICAgICAgIlByaW5jaXBhbCI6ICIqIiwNCiAgICAgICAgICAgICAgICAgICAgIkVmZmVjdCI6ICJBbGxvdyIsDQogICAgICAgICAgICAgICAgICAgICJBY3Rpb24iOiBbDQogICAgICAgICAgICAgICAgICAgICAgICAiczM6QWJvcnRNdWx0aXBhcnRVcGxvYWQiLA0KICAgICAgICAgICAgICAgICAgICAgICAgInMzOkRlbGV0ZU9iamVjdCIsDQogICAgICAgICAgICAgICAgICAgICAgICAiczM6R2V0T2JqZWN0IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICJzMzpHZXRPYmplY3RBY2wiLA0KICAgICAgICAgICAgICAgICAgICAgICAgInMzOlB1dE9iamVjdCIsDQogICAgICAgICAgICAgICAgICAgICAgICAiczM6UHV0T2JqZWN0QWNsIg0KICAgICAgICAgICAgICAgICAgICBdLA0KICAgICAgICAgICAgICAgICAgICAiUmVzb3VyY2UiOiBbDQogICAgICAgICAgICAgICAgICAgICAgICAiYXJuOmF3czpzMzo6OicuJGJ1Y2tldF9pZC4nLyoiDQogICAgICAgICAgICAgICAgICAgIF0NCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgIlNpZCI6ICJBbGxvd1Jvb3RBbmRIb21lTGlzdGluZ09mQnVja2V0IiwNCiAgICAgICAgICAgICAgICAgICAgIlByaW5jaXBhbCI6ICIqIiwNCiAgICAgICAgICAgICAgICAgICAgIkVmZmVjdCI6ICJBbGxvdyIsDQogICAgICAgICAgICAgICAgICAgICJBY3Rpb24iOiBbDQogICAgICAgICAgICAgICAgICAgICAgICAiczM6R2V0QnVja2V0QWNsIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICJzMzpHZXRCdWNrZXRMb2NhdGlvbiIsDQogICAgICAgICAgICAgICAgICAgICAgICAiczM6R2V0QnVja2V0UG9saWN5IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICJzMzpMaXN0QnVja2V0Ig0KICAgICAgICAgICAgICAgICAgICBdLA0KICAgICAgICAgICAgICAgICAgICAiUmVzb3VyY2UiOiBbImFybjphd3M6czM6OjonIC4gJGJ1Y2tldF9pZCAuICciXQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIF0NCiAgICAgICAgfSc7DQoNCiAgICAgICAgDQoJfQ0KDQogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzb3J0X2J5X2tleSgkYXJyYXksICRrZXkpIHsNCiAgICAgICAgdXNvcnQoJGFycmF5LCBmdW5jdGlvbigkYSwgJGIpIHVzZSAoJGtleSkgew0KICAgICAgICAgICAgcmV0dXJuICRhWyRrZXldIC0gJGJbJGtleV07DQogICAgICAgIH0pOw0KICAgICAgICByZXR1cm4gJGFycmF5Ow0KICAgIH0NCg0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc29ydEJ5UHJvcGVydHkoJGFycmF5LCAkcHJvcGVydHkpIHsNCiAgICAgICAgdXNvcnQoJGFycmF5LCBmdW5jdGlvbigkYSwgJGIpIHVzZSAoJHByb3BlcnR5KSB7DQogICAgICAgICAgICByZXR1cm4gc3RyY21wKCRhLT4kcHJvcGVydHksICRiLT4kcHJvcGVydHkpOw0KICAgICAgICB9KTsNCiAgICAgICAgcmV0dXJuICRhcnJheTsNCiAgICB9DQoNCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1vdmVJdGVtc1RvQmVnaW5uaW5nQnlJbmRleCgmJGFycmF5LCAkaW5kaWNlc1RvTW92ZSkgew0KICAgICAgICAkaXRlbXNUb01vdmUgPSBhcnJheSgpOw0KICAgIA0KICAgICAgICAvLyBFeHRyYWN0IHRoZSBpdGVtcyB0byBtb3ZlIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBpbmRpY2VzDQogICAgICAgIGZvcmVhY2ggKCRpbmRpY2VzVG9Nb3ZlIGFzICRpbmRleCkgew0KICAgICAgICAgICAgaWYgKGlzc2V0KCRhcnJheVskaW5kZXhdKSkgew0KICAgICAgICAgICAgICAgICRpdGVtc1RvTW92ZVtdID0gJGFycmF5WyRpbmRleF07DQogICAgICAgICAgICAgICAgdW5zZXQoJGFycmF5WyRpbmRleF0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgDQogICAgICAgIC8vIE1lcmdlIHRoZSBpdGVtcyB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBhcnJheQ0KICAgICAgICAkYXJyYXkgPSBhcnJheV9tZXJnZSgkaXRlbXNUb01vdmUsICRhcnJheSk7DQogICAgfQ0KDQogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRVcERpcigkbXlBcnJheSl7DQoNCiAgICAgICAgJGNvbWJpbmVkU3RyaW5nID0gJyc7DQoNCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJG15QXJyYXkpIC0gMTsgJGkrKykgew0KICAgICAgICAgICAgJGNvbWJpbmVkU3RyaW5nIC49ICRteUFycmF5WyRpXS0+bmFtZTsNCiAgICAgICAgICAgICRjb21iaW5lZFN0cmluZyAuPSAnLyc7IC8vIEFkZCBhIHNlcGFyYXRvciAoZS5nLiwgY29tbWEgYW5kIHNwYWNlKQ0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuICRjb21iaW5lZFN0cmluZzsNCg0KICAgIH0NCiAgDQoNCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2F0Y2hXYXJuaW5nKCRlcnJubywgJGVycnN0ciwgJGVycmZpbGUsICRlcnJsaW5lKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPnNldEVycm9yKGFycmF5KA0KICAgICAgICAgICAgJ2Vycm9yJyA9PiAiQ29ubmVjdGluZyB0byB0aGUgQVdTIHNlcnZlciByYWlzZWQgYSBQSFAgd2FybmluZzogIiwNCiAgICAgICAgICAgICdlcnJubycgPT4gJGVycm5vLA0KICAgICAgICAgICAgJ2VycnN0cicgPT4gJGVycnN0ciwNCiAgICAgICAgICAgICdlcnJmaWxlJyA9PiAkZXJyZmlsZSwNCiAgICAgICAgICAgICdlcnJsaW5lJyA9PiAkZXJybGluZQ0KICAgICAgICApKTsNCiAgICB9DQoNCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0RXJyb3IoJGVycm9yLCRkZWJ1Zz0xKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPmVycm9yc1tdID0gJGVycm9yOw0KICAgICAgICBpZiAoJGRlYnVnID49IDEpIHsNCiAgICAgICAgICAgIGVjaG8gJzxwcmU+JzsNCiAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5lcnJvcnMgYXMgJGVycm9yKSB7DQogICAgICAgICAgICAgICAgcHJpbnRfcigkZXJyb3IpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWNobyAnPC9wcmU+JzsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHN0YXRpYyBmaW5hbCBwdWJsaWMgZnVuY3Rpb24gbG9hZGVyKCRwYXJhbXMsICRzbWFydHkpDQogICAgew0KICAgICAgICBpZihlbXB0eSgkcGFyYW1zWyJmb3JtYXQiXSkpIHsNCiAgICAgICAgICAgICRmb3JtYXQgPSAiJWIgJWUsICVZIjsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICRmb3JtYXQgPSAkcGFyYW1zWyJmb3JtYXQiXTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gc3RyZnRpbWUoJGZvcm1hdCx0aW1lKCkpOw0KICAgIH0NCg0KDQp9DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBBV1NTMw0KIyBBdXRob3JzOiBNYWdhbCBIZXppLCB3aXRoIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uLg0KIyBDb3B5cmlnaHQ6IChDKSAyMDIzIE1hZ2FsIEhlemksIGhfbWFnYWxAaG90bWFpbC5jb20NCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzLiBTZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLyAgDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyBNYWRlIFNpbXBsZShUTSkgaXMgKGMpIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIDIwMDQtMjAyMCAoaW5mb0BjbXNtYWRlc2ltcGxlLm9yZykNCiMgUHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0FXU1MzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VDQojIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIA0KIyBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMNCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluDQojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IA0KIyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgDQojIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgQW1hem9uIFdlYiBTZXJ2aWNlcywgQVdTLCBhbmQgdGhlIFBvd2VyZWQgYnkgQVdTIGxvZ28gYXJlIHRyYWRlbWFya3Mgb2YgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0Ow0KJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oQVdTUzM6Ok1BTkFHRV9QRVJNLCdNYW5hZ2UgQVdTUzMnKTsNCg0KJHVpZCA9IG51bGw7DQppZiggY21zbXMoKS0+dGVzdF9zdGF0ZShDbXNBcHA6OlNUQVRFX0lOU1RBTEwpICkgew0KICAkdWlkID0gMTsgLy8gaGFyZGNvZGUgdG8gZmlyc3QgdXNlcg0KfSBlbHNlIHsNCiAgJHVpZCA9IGdldF91c2VyaWQoKTsNCn0NCiMgU2V0dXAgc3VtbWFyeSB0ZW1wbGF0ZQ0KdHJ5IHsNCiAgICAkc3VtbWFyeV90ZW1wbGF0ZV90eXBlID0gbmV3IENtc0xheW91dFRlbXBsYXRlVHlwZSgpOw0KICAgICRzdW1tYXJ5X3RlbXBsYXRlX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOw0KICAgICRzdW1tYXJ5X3RlbXBsYXRlX3R5cGUtPnNldF9uYW1lKCdzdW1tYXJ5Jyk7DQogICAgJHN1bW1hcnlfdGVtcGxhdGVfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsNCiAgICAkc3VtbWFyeV90ZW1wbGF0ZV90eXBlLT5zZXRfbGFuZ19jYWxsYmFjaygnQVdTUzM6OnBhZ2VfdHlwZV9sYW5nX2NhbGxiYWNrJyk7DQogICAgJHN1bW1hcnlfdGVtcGxhdGVfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ0FXU1MzOjpyZXNldF9wYWdlX3R5cGVfZGVmYXVsdHMnKTsNCiAgICAkc3VtbWFyeV90ZW1wbGF0ZV90eXBlLT5zZXRfaGVscF9jYWxsYmFjaygnQVdTUzM6OnRlbXBsYXRlX2hlbHBfY2FsbGJhY2snKTsNCiAgICAkc3VtbWFyeV90ZW1wbGF0ZV90eXBlLT5yZXNldF9jb250ZW50X3RvX2ZhY3RvcnkoKTsNCiAgICAkc3VtbWFyeV90ZW1wbGF0ZV90eXBlLT5zYXZlKCk7DQogIH0NCiAgY2F0Y2goIENtc0V4Y2VwdGlvbiAkZSApIHsNCiAgICAvLyBsb2cgaXQNCiAgICBkZWJ1Z190b19sb2coX19GSUxFX18uJzonLl9fTElORV9fLicgJy4kZS0+R2V0TWVzc2FnZSgpKTsNCiAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdJbnN0YWxsYXRpb24gRXJyb3I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7DQogIH0NCg0KdHJ5IHsNCiAgICAkZm4gPSBkaXJuYW1lKF9fRklMRV9fKS5ESVJFQ1RPUllfU0VQQVJBVE9SLid0ZW1wbGF0ZXMnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ29yaWdfc3VtbWFyeV90ZW1wbGF0ZS50cGwnOw0KICAgIGlmKCBmaWxlX2V4aXN0cyggJGZuICkgKSB7DQogICAgICAkdGVtcGxhdGUgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsNCiAgICAgICR0cGwgPSBuZXcgQ21zTGF5b3V0VGVtcGxhdGUoKTsNCiAgICAgICR0cGwtPnNldF9uYW1lKCdBV1NTMyBTdW1tYXJ5IFNhbXBsZScpOw0KICAgICAgJHRwbC0+c2V0X293bmVyKCR1aWQpOw0KICAgICAgJHRwbC0+c2V0X2NvbnRlbnQoJHRlbXBsYXRlKTsNCiAgICAgICR0cGwtPnNldF90eXBlKCRzdW1tYXJ5X3RlbXBsYXRlX3R5cGUpOw0KICAgICAgJHRwbC0+c2V0X3R5cGVfZGZsdChUUlVFKTsNCiAgICAgICR0cGwtPnNhdmUoKTsNCiAgICB9DQogIH0NCiAgY2F0Y2goIENtc0V4Y2VwdGlvbiAkZSApIHsNCiAgICAvLyBsb2cgaXQNCiAgICBkZWJ1Z190b19sb2coX19GSUxFX18uJzonLl9fTElORV9fLicgJy4kZS0+R2V0TWVzc2FnZSgpKTsNCiAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdJbnN0YWxsYXRpb24gRXJyb3I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7DQogIH0NCg0KICAjIFNldHVwIGRldGFpbCB0ZW1wbGF0ZQ0KICB0cnkgew0KICAgICRkZXRhaWxfdGVtcGxhdGVfdHlwZSA9IG5ldyBDbXNMYXlvdXRUZW1wbGF0ZVR5cGUoKTsNCiAgICAkZGV0YWlsX3RlbXBsYXRlX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOw0KICAgICRkZXRhaWxfdGVtcGxhdGVfdHlwZS0+c2V0X25hbWUoJ2RldGFpbCcpOw0KICAgICRkZXRhaWxfdGVtcGxhdGVfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsNCiAgICAkZGV0YWlsX3RlbXBsYXRlX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdBV1NTMzo6cGFnZV90eXBlX2xhbmdfY2FsbGJhY2snKTsNCiAgICAkZGV0YWlsX3RlbXBsYXRlX3R5cGUtPnNldF9jb250ZW50X2NhbGxiYWNrKCdBV1NTMzo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7DQogICAgJGRldGFpbF90ZW1wbGF0ZV90eXBlLT5yZXNldF9jb250ZW50X3RvX2ZhY3RvcnkoKTsNCiAgICAkZGV0YWlsX3RlbXBsYXRlX3R5cGUtPnNldF9oZWxwX2NhbGxiYWNrKCdBV1NTMzo6dGVtcGxhdGVfaGVscF9jYWxsYmFjaycpOw0KICAgICRkZXRhaWxfdGVtcGxhdGVfdHlwZS0+c2F2ZSgpOw0KICB9DQogIGNhdGNoKCBDbXNFeGNlcHRpb24gJGUgKSB7DQogICAgLy8gbG9nIGl0DQogICAgZGVidWdfdG9fbG9nKF9fRklMRV9fLic6Jy5fX0xJTkVfXy4nICcuJGUtPkdldE1lc3NhZ2UoKSk7DQogICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnSW5zdGFsbGF0aW9uIEVycm9yOiAnLiRlLT5HZXRNZXNzYWdlKCkpOw0KICB9DQogIA0KICB0cnkgew0KICAgICRmbiA9IGRpcm5hbWUoX19GSUxFX18pLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3RlbXBsYXRlcycuRElSRUNUT1JZX1NFUEFSQVRPUi4nb3JpZ19kZXRhaWxfdGVtcGxhdGUudHBsJzsNCiAgICBpZiggZmlsZV9leGlzdHMoICRmbiApICkgew0KICAgICAgJHRlbXBsYXRlID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7DQogICAgICAkdHBsID0gbmV3IENtc0xheW91dFRlbXBsYXRlKCk7DQogICAgICAkdHBsLT5zZXRfbmFtZSgnQVdTUzMgRGV0YWlsIFNhbXBsZScpOw0KICAgICAgJHRwbC0+c2V0X293bmVyKCR1aWQpOw0KICAgICAgJHRwbC0+c2V0X2NvbnRlbnQoJHRlbXBsYXRlKTsNCiAgICAgICR0cGwtPnNldF90eXBlKCRkZXRhaWxfdGVtcGxhdGVfdHlwZSk7DQogICAgICAkdHBsLT5zZXRfdHlwZV9kZmx0KFRSVUUpOw0KICAgICAgJHRwbC0+c2F2ZSgpOw0KICAgIH0NCiAgfQ0KICBjYXRjaCggQ21zRXhjZXB0aW9uICRlICkgew0KICAgIC8vIGxvZyBpdA0KICAgIGRlYnVnX3RvX2xvZyhfX0ZJTEVfXy4nOicuX19MSU5FX18uJyAnLiRlLT5HZXRNZXNzYWdlKCkpOw0KICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0luc3RhbGxhdGlvbiBFcnJvcjogJy4kZS0+R2V0TWVzc2FnZSgpKTsNCiAgfQ0KDQogICMgU2V0dXAgdXBsb2FkIHRlbXBsYXRlDQogIHRyeSB7DQogICAgJHVwbG9hZF90ZW1wbGF0ZV90eXBlID0gbmV3IENtc0xheW91dFRlbXBsYXRlVHlwZSgpOw0KICAgICR1cGxvYWRfdGVtcGxhdGVfdHlwZS0+c2V0X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7DQogICAgJHVwbG9hZF90ZW1wbGF0ZV90eXBlLT5zZXRfbmFtZSgndXBsb2FkJyk7DQogICAgJHVwbG9hZF90ZW1wbGF0ZV90eXBlLT5zZXRfZGZsdF9mbGFnKFRSVUUpOw0KICAgICR1cGxvYWRfdGVtcGxhdGVfdHlwZS0+c2V0X2xhbmdfY2FsbGJhY2soJ0FXU1MzOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOw0KICAgICR1cGxvYWRfdGVtcGxhdGVfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ0FXU1MzOjpyZXNldF9wYWdlX3R5cGVfZGVmYXVsdHMnKTsNCiAgICAkdXBsb2FkX3RlbXBsYXRlX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOw0KICAgICR1cGxvYWRfdGVtcGxhdGVfdHlwZS0+c2V0X2hlbHBfY2FsbGJhY2soJ0FXU1MzOjp0ZW1wbGF0ZV9oZWxwX2NhbGxiYWNrJyk7DQogICAgJHVwbG9hZF90ZW1wbGF0ZV90eXBlLT5zYXZlKCk7DQogIH0NCiAgY2F0Y2goIENtc0V4Y2VwdGlvbiAkZSApIHsNCiAgICAvLyBsb2cgaXQNCiAgICBkZWJ1Z190b19sb2coX19GSUxFX18uJzonLl9fTElORV9fLicgJy4kZS0+R2V0TWVzc2FnZSgpKTsNCiAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdJbnN0YWxsYXRpb24gRXJyb3I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7DQogIH0NCiAgDQogIHRyeSB7DQogICAgJGZuID0gZGlybmFtZShfX0ZJTEVfXykuRElSRUNUT1JZX1NFUEFSQVRPUi4ndGVtcGxhdGVzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLidvcmlnX3VwbG9hZGZvcm1fdGVtcGxhdGUudHBsJzsNCiAgICBpZiggZmlsZV9leGlzdHMoICRmbiApICkgew0KICAgICAgJHRlbXBsYXRlID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7DQogICAgICAkdHBsID0gbmV3IENtc0xheW91dFRlbXBsYXRlKCk7DQogICAgICAkdHBsLT5zZXRfbmFtZSgnQVdTUzMgVXBsb2FkIEZvcm0gU2FtcGxlJyk7DQogICAgICAkdHBsLT5zZXRfb3duZXIoJHVpZCk7DQogICAgICAkdHBsLT5zZXRfY29udGVudCgkdGVtcGxhdGUpOw0KICAgICAgJHRwbC0+c2V0X3R5cGUoJHVwbG9hZF90ZW1wbGF0ZV90eXBlKTsNCiAgICAgICR0cGwtPnNldF90eXBlX2RmbHQoVFJVRSk7DQogICAgICAkdHBsLT5zYXZlKCk7DQogICAgfQ0KICB9DQogIGNhdGNoKCBDbXNFeGNlcHRpb24gJGUgKSB7DQogICAgLy8gbG9nIGl0DQogICAgZGVidWdfdG9fbG9nKF9fRklMRV9fLic6Jy5fX0xJTkVfXy4nICcuJGUtPkdldE1lc3NhZ2UoKSk7DQogICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnSW5zdGFsbGF0aW9uIEVycm9yOiAnLiRlLT5HZXRNZXNzYWdlKCkpOw0KICB9DQoNCg0KICAvLyBjcmVhdGUgcHJlZmVyZW5jZXMNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhbGxvd2VkJywgJ2pwZyxqcGVnLGdpZixwbmcnKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdpdGVtc2Rpc3BsYXllZCcsICcyNScpOw0KJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ29yZScsICdDb250ZW50UG9zdFJlbmRlcicsIGZhbHNlKTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBBV1NTMw0KIyBBdXRob3JzOiBNYWdhbCBIZXppLCB3aXRoIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uLg0KIyBDb3B5cmlnaHQ6IChDKSAyMDIzIE1hZ2FsIEhlemksIGhfbWFnYWxAaG90bWFpbC5jb20NCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzLiBTZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLyAgDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyBNYWRlIFNpbXBsZShUTSkgaXMgKGMpIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIDIwMDQtMjAyMCAoaW5mb0BjbXNtYWRlc2ltcGxlLm9yZykNCiMgUHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0FXU1MzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VDQojIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIA0KIyBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMNCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluDQojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IA0KIyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgDQojIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgQW1hem9uIFdlYiBTZXJ2aWNlcywgQVdTLCBhbmQgdGhlIFBvd2VyZWQgYnkgQVdTIGxvZ28gYXJlIHRyYWRlbWFya3Mgb2YgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0Ow0KJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oQVdTUzM6Ok1BTkFHRV9QRVJNKTsNCg0KJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCdkaXNwbGF5c3VtbWFyeScpOw0KJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCdkaXNwbGF5ZGV0YWlsJyk7DQokdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgpOw0KDQovLyByZW1vdmUgdGVtcGxhdGVzDQovLyBhbmQgdGVtcGxhdGUgdHlwZXMuDQp0cnkgew0KICAgICR0eXBlcyA9IENtc0xheW91dFRlbXBsYXRlVHlwZTo6bG9hZF9hbGxfYnlfb3JpZ2luYXRvcigkdGhpcy0+R2V0TmFtZSgpKTsNCiAgICBpZiggaXNfYXJyYXkoJHR5cGVzKSAmJiBjb3VudCgkdHlwZXMpICkgew0KICAgICAgZm9yZWFjaCggJHR5cGVzIGFzICR0eXBlICkgew0KICAgICAgICAkdGVtcGxhdGVzID0gJHR5cGUtPmdldF90ZW1wbGF0ZV9saXN0KCk7DQogICAgICAgIGlmKCBpc19hcnJheSgkdGVtcGxhdGVzKSAmJiBjb3VudCgkdGVtcGxhdGVzKSApIHsNCiAgICAgIGZvcmVhY2goICR0ZW1wbGF0ZXMgYXMgJHRlbXBsYXRlICkgew0KICAgICAgICAkdGVtcGxhdGUtPmRlbGV0ZSgpOw0KICAgICAgfQ0KICAgICAgICB9DQogICAgICAgICR0eXBlLT5kZWxldGUoKTsNCiAgICAgIH0NCiAgICB9DQogIH0NCiAgY2F0Y2goIEV4Y2VwdGlvbiAkZSApIHsNCiAgICAvLyBsb2cgaXQNCiAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdVbmluc3RhbGwgRXJyb3I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7DQogIH0NCg0KICAkdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0NvbnRlbnRQb3N0UmVuZGVyJyk7DQogIA0KPz4=]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CiRkYiA9ICR0aGlzLT5HZXREYigpOwoKJHVpZCA9IDE7IC8vIGhhcmRjb2RlIHRvIGZpcnN0IHVzZXIKCmlmKCB2ZXJzaW9uX2NvbXBhcmUoJG9sZHZlcnNpb24sJzEuMS4xJykgPD0gMCApIHsKICAgICMgU2V0dXAgdXBsb2FkIHRlbXBsYXRlCiAgICAkbWVzc2FnZSA9IG51bGw7CiAgICB0cnkgewogICAgICAgICR1cGxvYWRfdGVtcGxhdGVfdHlwZSA9IG5ldyBDbXNMYXlvdXRUZW1wbGF0ZVR5cGUoKTsKICAgICAgICAkdXBsb2FkX3RlbXBsYXRlX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICAgICAgICR1cGxvYWRfdGVtcGxhdGVfdHlwZS0+c2V0X25hbWUoJ3VwbG9hZCcpOwogICAgICAgICR1cGxvYWRfdGVtcGxhdGVfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAgICAgICAkdXBsb2FkX3RlbXBsYXRlX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdBV1NTMzo6cGFnZV90eXBlX2xhbmdfY2FsbGJhY2snKTsKICAgICAgICAkdXBsb2FkX3RlbXBsYXRlX3R5cGUtPnNldF9jb250ZW50X2NhbGxiYWNrKCdBV1NTMzo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgICAgICAgJHVwbG9hZF90ZW1wbGF0ZV90eXBlLT5yZXNldF9jb250ZW50X3RvX2ZhY3RvcnkoKTsKICAgICAgICAkdXBsb2FkX3RlbXBsYXRlX3R5cGUtPnNldF9oZWxwX2NhbGxiYWNrKCdBV1NTMzo6dGVtcGxhdGVfaGVscF9jYWxsYmFjaycpOwogICAgICAgICR1cGxvYWRfdGVtcGxhdGVfdHlwZS0+c2F2ZSgpOwogICAgICB9CiAgICAgIGNhdGNoKCBDbXNFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgLy8gbG9nIGl0CiAgICAgICAgJG1lc3NhZ2UgPSAkZS0+R2V0TWVzc2FnZSgpOwogICAgICAgIGRlYnVnX3RvX2xvZyhfX0ZJTEVfXy4nOicuX19MSU5FX18uJyAnLiRtZXNzYWdlKTsKICAgICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdVcGdyYWRlIEVycm9yOiAnLiRtZXNzYWdlKTsKICAgICAgfQoKICAgICAgdHJ5IHsKCiAgICAgICAgaWYoJG1lc3NhZ2UgPT0gIlRlbXBsYXRlIFR5cGUgd2l0aCB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzLiIpewogICAgICAgICAgICAkdXBsb2FkX3RlbXBsYXRlX3R5cGUgPSBDbXNMYXlvdXRUZW1wbGF0ZVR5cGU6OmxvYWQoJHRoaXMtPkdldE5hbWUoKSAuICc6OnVwbG9hZCcpOwogICAgICAgIH0KICAgIAogICAgICAgICRmbiA9IGRpcm5hbWUoX19GSUxFX18pLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3RlbXBsYXRlcycuRElSRUNUT1JZX1NFUEFSQVRPUi4nb3JpZ191cGxvYWRmb3JtX3RlbXBsYXRlLnRwbCc7CiAgICAgICAgaWYoIGZpbGVfZXhpc3RzKCAkZm4gKSApIHsKICAgICAgICAgICR0ZW1wbGF0ZSA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwogICAgICAgICAgJHRwbCA9IG5ldyBDbXNMYXlvdXRUZW1wbGF0ZSgpOwogICAgICAgICAgJHRwbC0+c2V0X25hbWUoJ0FXU1MzIFVwbG9hZCBGb3JtIFNhbXBsZScpOwogICAgICAgICAgJHRwbC0+c2V0X293bmVyKCR1aWQpOwogICAgICAgICAgJHRwbC0+c2V0X2NvbnRlbnQoJHRlbXBsYXRlKTsKICAgICAgICAgICR0cGwtPnNldF90eXBlKCR1cGxvYWRfdGVtcGxhdGVfdHlwZSk7CiAgICAgICAgICAkdHBsLT5zZXRfdHlwZV9kZmx0KFRSVUUpOwogICAgICAgICAgJHRwbC0+c2F2ZSgpOwogICAgICAgIH0KICAgICAgfQogICAgICBjYXRjaCggQ21zRXhjZXB0aW9uICRlICkgewogICAgICAgIC8vIGxvZyBpdAogICAgICAgIGRlYnVnX3RvX2xvZyhfX0ZJTEVfXy4nOicuX19MSU5FX18uJyAnLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ1VwZ3JhZGUgRXJyb3I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7CiAgICAgIH0KCn0KCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJBV1NTMyIKdmVyc2lvbiA9ICIxLjEuMSIKYXV0aG9yID0gIk1hZ2FsIEhlemkiCmF1dGhvcmVtYWlsID0gImhfbWFnYWxAaG90bWFpbC5jb20iCm1pbmNtc3ZlcnNpb24gPSAiMi4yLjEiCmxhenlsb2FkYWRtaW4gPSAwCmxhenlsb2FkZnJvbnRlbmQgPSAwCltkZXBlbmRzXQpBV1NTREsgPSAiMS4xLjAiCkZpbGVNYW5hZ2VyID0gIjEuNi4xMyIK]]></data>
	</file>
	<file>
	  <filename>/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGEgaHJlZj0iaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS93aGF0LWlzLWNsb3VkLWNvbXB1dGluZyI+PGltZyBzcmM9Imh0dHBzOi8vZDEuYXdzc3RhdGljLmNvbS9sb2dvcy9hd3MtbG9nby1sb2NrdXBzL3Bvd2VyZWRieWF3cy9Qb3dlcmVkLUJ5X2xvZ28taG9yaXpfUkdCLjg3YzcwYWY4YThhMzRiNjg2MDY1MjRhZGU2MjYxZGIwODM5NDdhMTQucG5nIiBhbHQ9IlBvd2VyZWQgYnkgQVdTIENsb3VkIENvbXB1dGluZyIgd2lkdGg9IjIwMCIgc3R5bGU9ImZsb2F0OnJpZ2h0Ij48L2E+CjxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPgo8cD5UaGlzIENNU01TIHBsdWdpbiBhbGxvd3MgeW91IHRvIHVzZSBBbWF6b27igJlzIFNpbXBsZSBTdG9yYWdlIFNlcnZpY2UgdG8gaG9zdCB5b3VyIG1lZGlhIGZvciB5b3VyIENNU01TIHNldHVwLjwvcD4KCjxwPkFtYXpvbiBTMyBpcyBhIGNoZWFwIGFuZCBjb3N0IGVmZmVjdGl2ZSB3YXkgdG8gc2NhbGUgeW91ciBzaXRlIHRvIGVhc2lseSBoYW5kbGUgbGFyZ2Ugc3Bpa2VzIGluIHRyYWZmaWMgd2l0aG91dCBoYXZpbmcgdG8gZ28gdGhyb3VnaCB0aGUgZXhwZW5zZSBvZiBzZXR0aW5nIHVwIHRoZSBpbmZyYXN0cnVjdHVyZSBmb3IgYSBjb250ZW50IGRlbGl2ZXJ5IG5ldHdvcmsuPC9wPgoKPHA+T25jZSBzZXR1cCwgdGhpcyBwbHVnaW4gdHJhbnNwYXJlbnRseSBpbnRlZ3JhdGVzIHdpdGggeW91ciBDTVNNUy4gRmlsZSB1cGxvYWRzIGFyZSBhdXRvbWF0aWNhbGx5IHNhdmVkIGludG8geW91ciBBbWF6b24gUzMgYnVja2V0IHdpdGhvdXQgYW55IGV4dHJhIHN0ZXBzLiBPbmNlIHNhdmVkLCB0aGVzZSBmaWxlcyB3aWxsIGJlIGRlbGl2ZXJlZCBieSBBbWF6b24gUzMsIGluc3RlYWQgb2YgeW91ciB3ZWIgaG9zdC48L3A+Cgo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4KPHA+Q29uZmlndXJlIHRoZSBwbHVnaW4gaW4gdGhlIOKAmE9wdGlvbnPigJkgKG9yIOKAmFNldHRpbmdz4oCZKSBzY3JlZW4gYnkgZm9sbG93aW5nIHRoZSBvbnNjcmVlbiBwcm9tcHRzLjxicj5PbmNlIHNldHVwIGlzIGNvbXBsZXRlZCwgeW91IGNhbiBlbWJlZCB0aGUge0FXU1MzfSB0YWcgaW4geW91ciBwYWdlcy4gWW91IGNhbiB1c2UgdGhlIFBhcmFtZXRlcnMgYmVsb3cgdG8gY3VzdG9taXplIHlvdXIgZXhwZXJpZW5jZS48L3A+CjxwPgo8cHJlPgp7QVdTUzN9CntBV1NTMyBwcmVmaXg9ImltYWdlcy8ifQp7QVdTUzMgYWN0aW9uPXVwbG9hZH0Ke0FXU1MzIGFjdGlvbj1kZXRhaWwgcHJlZml4PSJFWFdENDM0MiAoNCkuSlBHIn0KPC9wcmU+CjwvcD4KCjxoMz5GZWVkYmFjay9TdXBwb3J0PC9oMz4KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlIG9yIHRvIGZpbGUgYSBGZWF0dXJlIFJlcXVlc3Qgb3IgQnVnIFJlcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBNb2R1bGUgRm9yZ2UKPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9BV1NTMyIgdGFyZ2V0PSJfYmxhbmsiPkFXU1MzIFBhZ2U8L2E+LjwvbGk+CjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHBzOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmcvdmlld3RvcGljLnBocD9mPTcmdD04Mzc4OCI+QVdTUzMgZm9ydW0gdG9waWM8L2E+LiBZb3UgYXJlIHdhcm1seSBpbnZpdGVkIHRvIG9wZW4gYSBuZXcgdG9waWMgaWYgeW91IGRpZG4ndCBmaW5kIGFuIGFuc3dlciB0byB5b3VyIHF1ZXN0aW9uLjwvbGk+CjxsaT5MYXN0bHksIGlmIHlvdSBlbmpveSB0aGlzIG1vZHVsZSwgdXNlIGl0IG9uIGEgY29tbWVyY2lhbCB3ZWJzaXRlIG9yIHdvdWxkIGxpa2UgdG8gZW5jb3VyYWdlIGZ1dHVyZSBkZXZlbG9wbWVudCwgeW91IG1pZ2h0IGNvbnNpZGVyIGp1c3QgYSBzbWFsbCBkb25hdGlvbi4gQW55IGtpbmQgb2YgZmVlZGJhY2sgd2lsbCBiZSBtdWNoIGFwcHJlY2lhdGVkLjxicj4KPGEgaHJlZj0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9kb25hdGUvP2hvc3RlZF9idXR0b25faWQ9RldIQUJaVU4zTkM0TiIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYWhhOTk5L0RvbmF0ZUJ1dHRvbnMvbWFzdGVyL3BheXBhbC1kb25hdGUtaWNvbi03LnBuZyIgd2lkdGg9IjEyMCIgPjwvYT48YnI+Cgk8L2xpPgo8L3VsPgo8aDM+SW50ZXJlc3RlZCBpbiBkZXZlbG9wbWVudD88L2gzPgo8cD5DaGVjayBvdXQgdGhlIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9tYWdhbGgvQVdTUzMiPkdpdGh1YiByZXBvc2l0b3J5PC9hPi48L3A+CjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMjMsIE1hZ2FsIEhlemkgPGEgaHJlZj0ibWFpbHRvOmhfbWFnYWxAaG90bWFpbC5jb20iPiZsdDtoX21hZ2FsQGhvdG1haWwuY29tJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4Kc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+CjwvcD4KCjxwPjxzdHJvbmc+QW1hem9uIFdlYiBTZXJ2aWNlcywgQVdTLCBhbmQgdGhlIFBvd2VyZWQgYnkgQVdTIGxvZ28gYXJlIHRyYWRlbWFya3Mgb2YgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlczwvc3Ryb25nPjwvcD4K]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/admin_permissions_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBpZD0iYWJvdXRfYyI+DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8aDM+UGVybWlzc2lvbnMgb3ZlcnZpZXc8L2gzPg0KICAgIDxwPlRoZSBwbHVnaW4gd2lsbCBub3Qgd29yayB1bnRpbCBhbGwgdGhlIGNvbmZpZ3MgYXJlIGNvbXBsZXRlZDwvcD48YnI+DQogICAgDQogICAgPGgzPkNvbmZpZ3VyaW5nIGJsb2NrIHB1YmxpYyBhY2Nlc3Mgc2V0dGluZ3MgZm9yIHlvdXIgUzMgYnVja2V0czwvaDM+DQogICAgPHA+Rm9sbG93IHRoZXNlIHN0ZXBzIGlmIHlvdSBuZWVkIHRvIGNoYW5nZSB0aGUgcHVibGljIGFjY2VzcyBzZXR0aW5ncyBmb3IgYSBzaW5nbGUgUzMgYnVja2V0LjwvcD4NCiAgICA8ZGl2IGNsYXNzPSJwcm9jZWR1cmUiPg0KICA8b2w+PGxpPjxwPlNpZ24gaW4gdG8gdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgYW5kIG9wZW4gdGhlIEFtYXpvbiBTMyBjb25zb2xlIGF0DQogICAgICAgICA8YSBocmVmPSJodHRwczovL2NvbnNvbGUuYXdzLmFtYXpvbi5jb20vczMvIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj48c3Bhbj5odHRwczovL2NvbnNvbGUuYXdzLmFtYXpvbi5jb20vczMvPC9zcGFuPjwvYT4uPC9wPjwvbGk+PGxpPg0KICAgICAgICA8cD5JbiB0aGUgPGI+QnVja2V0IG5hbWU8L2I+IGxpc3QsIGNob29zZSB0aGUgbmFtZSBvZiB0aGUgYnVja2V0IHRoYXQgeW91DQogICAgICAgICAgd2FudC48L3A+DQogICAgICA8L2xpPjxsaT4NCiAgICAgICAgPHA+Q2hvb3NlIDxiPlBlcm1pc3Npb25zPC9iPi48L3A+DQogICAgICA8L2xpPjxsaT4NCiAgICAgICAgPHA+Q2hvb3NlIDxiPkVkaXQ8L2I+IHRvIGNoYW5nZSB0aGUgcHVibGljIGFjY2VzcyBzZXR0aW5ncyBmb3IgdGhlIGJ1Y2tldC4NCiAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZm91ciBBbWF6b24gUzMgQmxvY2sgUHVibGljIEFjY2VzcyBTZXR0aW5ncywgc2VlIDxhIGhyZWY9Imh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL2FjY2Vzcy1jb250cm9sLWJsb2NrLXB1YmxpYy1hY2Nlc3MuaHRtbCNhY2Nlc3MtY29udHJvbC1ibG9jay1wdWJsaWMtYWNjZXNzLW9wdGlvbnMiPkJsb2NrIHB1YmxpYyBhY2Nlc3MNCgkJCQlzZXR0aW5nczwvYT4uPC9wPg0KICAgICAgPC9saT48bGk+DQogICAgICAgIDxwPkNob29zZSB0aGUgc2V0dGluZyB0aGF0IHlvdSB3YW50IHRvIGNoYW5nZSwgYW5kIHRoZW4gY2hvb3NlDQogICAgICAgICAgPGI+U2F2ZTwvYj4uPC9wPg0KICAgICAgPC9saT48bGk+DQogICAgICAgIDxwPldoZW4geW91J3JlIGFza2VkIGZvciBjb25maXJtYXRpb24sIGVudGVyIDxjb2RlIGNsYXNzPSJ1c2VyaW5wdXQiPmNvbmZpcm08L2NvZGU+LiBUaGVuIGNob29zZQ0KICAgICAgICAgICAgPGI+Q29uZmlybTwvYj4gdG8gc2F2ZSB5b3VyIGNoYW5nZXMuPC9wPg0KICAgICAgPC9saT48L29sPjwvZGl2Pg0KICAgIDxicj4NCiAgICANCiAgICA8aDM+QnVja2V0IHBvbGljeTwvaDM+DQogICAgPHA+VGhlIGJ1Y2tldCBwb2xpY3ksIHdyaXR0ZW4gaW4gSlNPTiwgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBvYmplY3RzIHN0b3JlZCBpbiB0aGUgYnVja2V0LiBCdWNrZXQgcG9saWNpZXMgZG9uJ3QgYXBwbHkgdG8gb2JqZWN0cyBvd25lZCBieSBvdGhlciBhY2NvdW50czwvcD4NCiAgICA8cD5QbGVhc2UgYXR0YWNoIHRoZSBwcm92aWRlZCBwb2xpY3kgdG8geW91ciBCdWNrZXQgcG9saWN5IG9yIGlmIHlvdSBhbHJlYWR5IGhhdmUgYSBwb2xpY3kgZm9yIHRoaXMgYnVja2V0LCB1c2UgdGhlIHBvbGljeSBwcm92aWRlZCBhcyBhbiBleGFtcGxlIHRvIGJlIG1lcmdlZCB3aXRoIHlvdXIgZXhpc3Rpbmcgc2V0dXAuPC9wPg0KICAgIDxicj4NCiAgICANCiAgICA8cHJlPnskYnVja2V0X3BvbGljeX08L3ByZT4NCiAgICA8L2Rpdj4NCjwvZGl2Pg==]]></data>
	</file>
	<file>
	  <filename>/templates/admin_settings_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdnZXRzdGFydGVkJyl9OjwvaDM+DQoNCntpZiBpc3NldCgkbWVzc2FnZSl9eyRtZXNzYWdlfXsvaWZ9DQoNCntmb3JtX3N0YXJ0fQ0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdhY2Nlc3Nfa2V5Jyl9OiZuYnNwO3tjbXNfaGVscCBrZXkyPSdoZWxwX2FjY2Vzc19rZXknIHRpdGxlPSRtb2QtPkxhbmcoJ2FjY2Vzc19rZXknKX08L3A+DQogPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9c2V0dGluZ3NfaW5wdXRbYWNjZXNzX2tleV0iIHZhbHVlPSJ7JG1vZC0+R2V0T3B0aW9uVmFsdWUoImFjY2Vzc19rZXkiKX0iIHNpemU9IjUwIiBtYXhsZW5ndGg9IjUwIi8+DQogPC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2FjY2Vzc19zZWNyZXRfa2V5Jyl9OjwvcD4NCiA8cCBjbGFzcz0icGFnZWlucHV0Ij4NCiAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1zZXR0aW5nc19pbnB1dFthY2Nlc3Nfc2VjcmV0X2tleV0iIHZhbHVlPSJ7JG1vZC0+R2V0T3B0aW9uVmFsdWUoImFjY2Vzc19zZWNyZXRfa2V5Iil9IiBzaXplPSI1MCIgbWF4bGVuZ3RoPSI1MCIvPg0KIDwvcD4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdidWNrZXRfbmFtZScpfTombmJzcDt7Y21zX2hlbHAga2V5Mj0naGVscF9idWNrZXRfbmFtZScgdGl0bGU9JG1vZC0+TGFuZygnYnVja2V0X25hbWUnKX08L3A+DQogPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9c2V0dGluZ3NfaW5wdXRbYnVja2V0X25hbWVdIiB2YWx1ZT0ieyRtb2QtPkdldE9wdGlvblZhbHVlKCJidWNrZXRfbmFtZSIpfSIgc2l6ZT0iNTAiIG1heGxlbmd0aD0iNTAiLz4NCiA8L3A+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQo8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdyZWdpb24nKX06PC9wPg0KICA8ZGl2IGNsYXNzPSJwYWdlaW5wdXQiPg0KICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1zZXR0aW5nc19pbnB1dFthY2Nlc3NfcmVnaW9uXSI+DQogICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JGFjY2Vzc19yZWdpb25fbGlzdCBzZWxlY3RlZD0kbW9kLT5HZXRPcHRpb25WYWx1ZSgiYWNjZXNzX3JlZ2lvbiIpfQ0KICAgIDwvc2VsZWN0Pg0KICA8L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdhbGxvd2VkJyl9OiZuYnNwO3tjbXNfaGVscCBrZXkyPSdmaWVsZGRlZl9hbGxvd19oZWxwJyB0aXRsZT0kbW9kLT5MYW5nKCdhbGxvd2VkJyl9PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KCSAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9c2V0dGluZ3NfaW5wdXRbYWxsb3dlZF0iIHZhbHVlPSJ7JG1vZC0+R2V0T3B0aW9uVmFsdWUoJ2FsbG93ZWQnLCAncGRmLGRvYyxkb2N4LHhscyx4bHN4LGpwZyxwbmcsanBlZyxnaWYnKX0iIHNpemU9IjUwIiBtYXhsZW5ndGg9IjIwMCIvPg0KICA8L3A+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+PGxhYmVsIGZvcj0iZmxkNSI+eyRtb2QtPkxhbmcoJ2V4cGlyeV9pbnRlcnZhbCcpfTo8L2xhYmVsPiB7Y21zX2hlbHAga2V5PSdoZWxwX29wdF9leHBpcnlfaW50ZXJ2YWwnIHRpdGxlPSRtb2QtPkxhbmcoJ2V4cGlyeV9pbnRlcnZhbCcpfTwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfXNldHRpbmdzX2lucHV0W2V4cGlyeV9pbnRlcnZhbF0iIHZhbHVlPSJ7JG1vZC0+R2V0T3B0aW9uVmFsdWUoImV4cGlyeV9pbnRlcnZhbCIpfGRlZmF1bHQ6NjB9IiBzaXplPSI0IiBtYXhsZW5ndGg9IjQiLz4NCiAgICAgIDwvcD4NCgk8L2Rpdj4NCjxmaWVsZHNldD4NCiAgPGxlZ2VuZD57JG1vZC0+TGFuZygncHJvbXB0X2N1c3RvbV91cmwnKX08L2xlZ2VuZD4NCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQogICAgICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1zZXR0aW5nc19pbnB1dFt1c2VfY3VzdG9tX3VybF0iPg0KICAgICAgICAgICAge2Ntc195ZXNubyBzZWxlY3RlZD0kbW9kLT5HZXRPcHRpb25WYWx1ZSgidXNlX2N1c3RvbV91cmwiKX0NCiAgICAgICAgPC9zZWxlY3Q+DQogICAgICAgIDxici8+DQogICAgICAgIHskbW9kLT5MYW5nKCdoZWxwX3VzZV9jdXN0b21fdXJsJyl9DQogICAgPC9wPg0KICA8L2Rpdj4NCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2N1c3RvbV91cmwnKX06Jm5ic3A7e2Ntc19oZWxwIGtleTI9J2hlbHBfY3VzdG9tX3VybCcgdGl0bGU9JG1vZC0+TGFuZygnY3VzdG9tX3VybCcpfTwvcD4NCiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQogICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1zZXR0aW5nc19pbnB1dFtjdXN0b21fdXJsXSIgdmFsdWU9InskbW9kLT5HZXRPcHRpb25WYWx1ZSgiY3VzdG9tX3VybCIpfSIgc2l6ZT0iNTAiIG1heGxlbmd0aD0iMjAwIi8+DQogIDwvcD4NCiAgPC9kaXY+DQo8L2ZpZWxkc2V0Pg0KDQo8ZmllbGRzZXQ+DQoJPGxlZ2VuZD57JG1vZC0+TGFuZygnZGVmYXVsdF9vcHRpb25zJyl9PC9sZWdlbmQ+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2RldGFpbHBhZ2UnKX06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2RldGFpbHBhZ2V9PC9wPg0KICAgIDwvZGl2PiANCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfc3VtbWFyeXBhZ2UnKX06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3N1bW1hcnlwYWdlfTwvcD4NCiAgICA8L2Rpdj4gCQ0KICAJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2l0ZW1zZGlzcGxheWVkJyl9OjwvcD4NCg0KICAgICAgICB7JG9wdHM9WzEwPT4xMCwyNT0+MjUsNTA9PjUwLDEwMD0+MTAwLDEwMDA9PjEwMDBdfQ0KICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfXNldHRpbmdzX2lucHV0W2l0ZW1zZGlzcGxheWVkXSI+DQogICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kb3B0cyBzZWxlY3RlZD0kbW9kLT5HZXRPcHRpb25WYWx1ZSgiaXRlbXNkaXNwbGF5ZWQiKX0NCiAgICAgIDwvc2VsZWN0Pg0KICAgIDwvZGl2PiAJDQo8L2ZpZWxkc2V0Pg0KDQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KIDxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1zdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnYWRtaW5fc2F2ZScpfSIvPg0KIDwvcD4NCjwvZGl2Pg0Ke2Zvcm1fZW5kfQ0Ke2lmICRzZGtfbW9kLT5pc19kZXZlbG9wZXJfbW9kZSgpfQ0KICB7KmdldF90ZW1wbGF0ZV92YXJzKn0NCnsvaWZ9DQo=]]></data>
	</file>
	<file>
	  <filename>/templates/default.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iaG9saWRheVdyYXBwZXIiPg0KIHtmb3JlYWNoICRpdGVtcyBhcyAkaXRlbX0NCiA8ZGl2IGNsYXNzPSJob2xpZGF5Ij4NCiA8ZGl2IGNsYXNzPSJyb3ciPg0KIDxkaXYgY2xhc3M9ImNvbC1zbS02Ij4NCiA8YSBocmVmPSJ7Y21zX2FjdGlvbl91cmwgYWN0aW9uPSdkZXRhaWwnIGhpZD0kaXRlbS0+aWR9Ij57JGl0ZW0tPm5hbWV9PC9hPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJjb2wtc20tNiB0ZXh0LXJpZ2h0Ij57JGl0ZW0tPnRoZV9kYXRlfGRhdGVfZm9ybWF0OicleCd9PC9kaXY+DQogPC9kaXY+DQogPC9kaXY+DQoge2ZvcmVhY2hlbHNlfQ0KIDxkaXYgY2xhc3M94oCdYWxlcnQgYWxlcnQtZGFuZ2Vy4oCdPnskbW9kLT5MYW5nKCdzb3JyeV9ub2ZpbGVzJyl9PC9kaXY+DQogey9mb3JlYWNofQ0KPC9kaXY+]]></data>
	</file>
	<file>
	  <filename>/templates/delete.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kX2ZtLT5MYW5nKCdhY3Rpb25kZWxldGUnKX06PC9oMz4NCnthc3NpZ24gdmFyPSdjYW5jZWxsYWJlbCcgdmFsdWU9JG1vZF9mbS0+TGFuZygnY2FuY2VsJyl9DQp7aWYgaXNzZXQoJGVycm9ycyl9DQp7YXNzaWduIHZhcj0nY2FuY2VsbGFiZWwnIHZhbHVlPSRtb2RfZm0tPkxhbmcoJ3JldHVybicpfQ0Key9pZn0NCg0KDQp7KmNtc19oZWxwIGtleTI9J3NldHRpbmdzX25vc2VmdXJsJyB0aXRsZT1sYW5nKCd3YXJuX25vc2VmdXJsJykqfQ0KDQp7aWYgJGhhc2Rpcn0NCiAgPGRpdiBjbGFzcz0id2FybmluZyIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyI+eyRtb2QtPmxhbmcoJ3dhcm5fZGVsZXRlX2RpcmVjdG9yeScpfTwvZGl2Pg0Key9pZn0NCg0KeyRzdGFydGZvcm19DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kX2ZtLT5MYW5nKCdkZWxldGVzZWxlY3RlZCcpfTo8L3A+DQogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KICAgIHsnPGJyLz4nfGltcGxvZGU6JHNlbGFsbH0NCiAgPC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICA8cCBjbGFzcz0icGFnZXRleHQiPjwvcD4NCiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQogICAge2lmICFpc3NldCgkZXJyb3JzKX0NCiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfXN1Ym1pdCIgdmFsdWU9InskbW9kX2ZtLT5MYW5nKCdkZWxldGUnKX0iLz4NCiAgICB7L2lmfQ0KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9Y2FuY2VsIiB2YWx1ZT0ieyRjYW5jZWxsYWJlbH0iLz4NCiAgPC9wPg0KPC9kaXY+DQp7JGVuZGZvcm19DQoNCntpZiAkbW9kLT5pc19kZXZlbG9wZXJfbW9kZSgpfQ0KICB7Z2V0X3RlbXBsYXRlX3ZhcnN9DQp7L2lmfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/filemanager.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICFpc3NldCgkYWpheCl9DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KYS5maWxlbGluazp2aXNpdGVkIHsNCiAgIGNvbG9yOiAjMDAwOw0KfQ0KPC9zdHlsZT4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCnZhciByZWZyZXNoX3VybCA9ICd7JHJlZnJlc2hfdXJsfScrJyZzaG93dGVtcGxhdGU9ZmFsc2UnOw0KcmVmcmVzaF91cmwgPSByZWZyZXNoX3VybC5yZXBsYWNlKC9hbXA7L2csJycpOw0KDQovLyA8IVtDREFUQVsNCmZ1bmN0aW9uIGVuYWJsZV9idXR0b24oaWRsaXN0KSB7DQogICQoaWRsaXN0KS5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpLnJlbW92ZUNsYXNzKCd1aS1zdGF0ZS1kaXNhYmxlZCB1aS1idXR0b24tZGlzYWJsZWQnKTsNCn0NCmZ1bmN0aW9uIGRpc2FibGVfYnV0dG9uKGlkbGlzdCkgew0KICAkKGlkbGlzdCkuYXR0cignZGlzYWJsZWQnLCdkaXNhYmxlZCcpLmFkZENsYXNzKCd1aS1zdGF0ZS1kaXNhYmxlZCB1aS1idXR0b24tZGlzYWJsZWQnKTsNCn0NCg0KZnVuY3Rpb24gZW5hYmxlX2FjdGlvbl9idXR0b25zKCkgew0KDQogICAgdmFyIGZpbGVzID0gJCgiI2ZpbGVzYXJlYSBpbnB1dFt0eXBlPSdjaGVja2JveCddLmZpbGVzZWxlY3QiKS5maWx0ZXIoJzpjaGVja2VkJykubGVuZ3RoLA0KICAgICAgICBkaXJzID0gJCgiI2ZpbGVzYXJlYSBpbnB1dFt0eXBlPSdjaGVja2JveCddLmRpciIpLmZpbHRlcignOmNoZWNrZWQnKS5sZW5ndGgsDQogICAgICAgIGFyY2ggPSAkKCIjZmlsZXNhcmVhIGlucHV0W3R5cGU9J2NoZWNrYm94J10uYXJjaGl2ZSIpLmZpbHRlcignOmNoZWNrZWQnKS5sZW5ndGgsDQogICAgICAgIHRleHQgPSAkKCIjZmlsZXNhcmVhIGlucHV0W3R5cGU9J2NoZWNrYm94J10udGV4dCIpLmZpbHRlcignOmNoZWNrZWQnKS5sZW5ndGgsDQogICAgICAgIGltZ3MgPSAkKCIjZmlsZXNhcmVhIGlucHV0W3R5cGU9J2NoZWNrYm94J10uaW1hZ2UiKS5maWx0ZXIoJzpjaGVja2VkJykubGVuZ3RoOw0KDQogICAgZGlzYWJsZV9idXR0b24oJ2J1dHRvbi5maWxlYnRuJyk7DQogICAgJCgnYnV0dG9uLmZpbGVidG4nKS5hdHRyKCdkaXNhYmxlZCcsJ2Rpc2FibGVkJyk7DQogICAgaWYgKGZpbGVzID09IDAgJiYgZGlycyA9PSAwKSB7DQogICAgICAgIC8vIG5vdGhpbmcgc2VsZWN0ZWQsIGVuYWJsZSBhbnl0aGluZyB3aXRoIHNlbGVjdF9ub25lDQogICAgICAgIGVuYWJsZV9idXR0b24oJyNidG5fcmVmcmVzaCcpOw0KICAgIH0gZWxzZSBpZiAoZmlsZXMgPT0gMSkgew0KICAgICAgICAvLyAxIHNlbGVjdGVkLCBlbmFibGUgYW55dGhpbmcgd2l0aCBzZWxlY3Rfb25lDQogICAgICAgIGVuYWJsZV9idXR0b24oJyNidG5fZGVsZXRlJyk7DQoNCiAgICAgICAgaWYgKGRpcnMgPT0gMCkgZW5hYmxlX2J1dHRvbignI2J0bl9jb3B5Jyk7DQogICAgICAgIGlmIChhcmNoID09IDEpIGVuYWJsZV9idXR0b24oJyNidG5fdW5wYWNrJyk7DQogICAgICAgIGlmIChpbWdzID09IDEpIGVuYWJsZV9idXR0b24oJyNidG5fdmlldywjYnRuX3RodW1iLCNidG5fcmVzaXplY3JvcCwjYnRuX3JvdGF0ZScpOw0KICAgICAgICBpZiAodGV4dCA9PSAxKSBlbmFibGVfYnV0dG9uKCcjYnRuX3ZpZXcnKTsNCiAgICB9IGVsc2UgaWYgKGZpbGVzID4gMSAmJiBkaXJzID09IDApIHsNCiAgICAgICAgLy8gbXVsdGlwbGUgZmlsZXMgc2VsZWN0ZWQNCiAgICAgICAgZW5hYmxlX2J1dHRvbignI2J0bl9kZWxldGUsI2J0bl9jb3B5LCNidG5fbW92ZScpOw0KICAgIH0gZWxzZSBpZiAoZmlsZXMgPiAxICYmIGRpcnMgPiAwKSB7DQogICAgICAgIC8vIG11bHRpcGxlIHNlbGVjdGVkLCBhdCBsZWFzdCBvbmUgZGlyLg0KICAgICAgICBlbmFibGVfYnV0dG9uKCcjYnRuX2RlbGV0ZSwjYnRuX21vdmUnKTsNCiAgICB9DQp9DQoNCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsNCiAgICBlbmFibGVfYWN0aW9uX2J1dHRvbnMoKTsNCg0KICAgICQoJyNyZWZyZXNoJykudW5iaW5kKCdjbGljaycpOw0KICAgICQoJyNyZWZyZXNoJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoKSB7DQogICAgICAgIC8vIGFqYXh5IHJlbG9hZCBmb3IgdGhlIGZpbGVzIGFyZWEuDQogICAgICAgICQoJyNmaWxlc2FyZWEnKS5sb2FkKHJlZnJlc2hfdXJsKTsNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0pOw0KDQogICAgJChkb2N1bWVudCkub24oJ2Ryb3B6b25lX2NoZGlyJywgJCh0aGlzKSwgZnVuY3Rpb24gKGUsIGRhdGEpIHsNCiAgICAgICAgLy8gaWYgY2hhbmdlIGRpciB2aWEgdGhlIGRyb3B6b25lLCBtYWtlIHN1cmUgZmlsZW1hbmFnZXIgcmVmcmVzaGVzLg0KICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTsNCiAgICB9KTsNCiAgICAkKGRvY3VtZW50KS5vbignZHJvcHpvbmVfc3RvcCcsICQodGhpcyksIGZ1bmN0aW9uIChlLCBkYXRhKSB7DQogICAgICAgIC8vIGlmIGNoYW5nZSBkaXIgdmlhIHRoZSBkcm9wem9uZSwgbWFrZSBzdXJlIGZpbGVtYW5hZ2VyIHJlZnJlc2hlcy4NCiAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7DQogICAgfSk7DQoNCiAgICAkKGRvY3VtZW50KS5vbignY2hhbmdlJywgJyNmaWxlc2FyZWEgaW5wdXRbdHlwZT0iY2hlY2tib3giXS5maWxlc2VsZWN0JywgZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgLy8gZmluZCB0aGUgcGFyZW50IHJvdw0KICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOw0KICAgICAgICB2YXIgdCA9ICQodGhpcykuYXR0cignY2hlY2tlZCcpOw0KICAgICAgICBpZiAodCkgew0KICAgICAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCd0cicpLmFkZENsYXNzKCdzZWxlY3RlZCcpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCd0cicpLnJlbW92ZUNsYXNzKCdzZWxlY3RlZCcpOw0KICAgICAgICB9DQogICAgICAgIGVuYWJsZV9hY3Rpb25fYnV0dG9ucygpOw0KICAgIH0pOw0KDQogICAgJChkb2N1bWVudCkub24oJ2NoYW5nZScsICcjdGFnYWxsJywgZnVuY3Rpb24gKGV2ZW50KSB7DQogICAgICAgIGlmICgkKHRoaXMpLmlzKCc6Y2hlY2tlZCcpKSB7DQogICAgICAgICAgICAkKCcjZmlsZXNhcmVhIGlucHV0OmNoZWNrYm94LmZpbGVzZWxlY3QnKS5hdHRyKCdjaGVja2VkJywgdHJ1ZSkudHJpZ2dlcignY2hhbmdlJyk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkKCcjZmlsZXNhcmVhIGlucHV0OmNoZWNrYm94LmZpbGVzZWxlY3QnKS5hdHRyKCdjaGVja2VkJywgZmFsc2UpLnRyaWdnZXIoJ2NoYW5nZScpOw0KICAgICAgICB9DQogICAgfSk7DQoNCiAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnI2J0bl92aWV3JywgZnVuY3Rpb24gKCkgew0KICAgICAgICAvLyBmaW5kIHRoZSBzZWxlY3RlZCBpdGVtLg0KICAgICAgICB2YXIgdG1wID0gJCgiI2ZpbGVzYXJlYSBpbnB1dFt0eXBlPSdjaGVja2JveCddIikuZmlsdGVyKCc6Y2hlY2tlZCcpLnZhbCgpOw0KICAgICAgICB2YXIgdXJsID0gJ3skdmlld2ZpbGVfdXJsfSZzaG93dGVtcGxhdGU9ZmFsc2UmeyRhY3Rpb25pZH12aWV3ZmlsZT0nICsgdG1wOw0KICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSgvYW1wOy9nLCAnJyk7DQogICAgICAgICQoJyNwb3B1cF9jb250ZW50cycpLmxvYWQodXJsKTsNCiAgICAgICAgJCgnI3BvcHVwJykuZGlhbG9nKHsNCiAgICAgICAJICBtaW5XaWR0aDogMzgwLA0KICAgICAgICAgIG1heEhlaWdodDogNjAwDQogICAgICAgIH0pOw0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfSk7DQoNCiAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAndGQuY2xpY2thYmxlJywgZnVuY3Rpb24gKCkgew0KICAgICAgICB2YXIgdCA9ICQodGhpcykucGFyZW50KCkuZmluZCgnOmNoZWNrYm94JykuYXR0cignY2hlY2tlZCcpOw0KICAgICAgICBpZiAodCAhPSAnY2hlY2tlZCcpIHsNCiAgICAgICAgICAgICQodGhpcykucGFyZW50KCkuZmluZCgnOmNoZWNrYm94JykuYXR0cignY2hlY2tlZCcsIHRydWUpLnRyaWdnZXIoJ2NoYW5nZScpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnQoKS5maW5kKCc6Y2hlY2tib3gnKS5hdHRyKCdjaGVja2VkJywgZmFsc2UpLnRyaWdnZXIoJ2NoYW5nZScpOw0KICAgICAgICB9DQogICAgfSk7DQp9KTsNCi8vIF1dPg0KPC9zY3JpcHQ+DQoNCjxoMz57JEZpbGVNYW5hZ2VyLT5MYW5nKCdjdXJyZW50cGF0aCcpfQ0KICAgPHNwYW4gY2xhc3M9InBhdGhzZWxlY3RvciI+eyR1cF9ob21lfSAvIA0KICAge2ZvcmVhY2ggJHBhdGhfcGFydHMgYXMgJHBhcnR9DQogICAgIHtpZiAhZW1wdHkoJHBhcnQtPnVybCl9DQogICAgICAgPGEgaHJlZj0ieyRwYXJ0LT51cmx9Ij57JHBhcnQtPm5hbWV9PC9hPg0KICAgICB7ZWxzZX0NCiAgICAgICB7JHBhcnQtPm5hbWV9DQogICAgIHsvaWZ9DQogICAgIHtpZiAhJHBhcnRAbGFzdH08c3BhbiBjbGFzcz0iZHMiPi88L3NwYW4+ey9pZn0NCiAgIHsvZm9yZWFjaH0NCiAgIDwvc3Bhbj4NCjwvaDM+DQoNCntmdW5jdGlvbiBmaWxlYnRuIGljb249J3VpLWljb24tY2lyY2xlLWNoZWNrJ30NCnskYWRkY2xhc3M9J3VpLWJ1dHRvbi1pY29uLXByaW1hcnknfQ0Ke2lmIGlzc2V0KCR0ZXh0KSAmJiAkdGV4dCAhPSAnJ30NCiAgeyRhZGRjbGFzcz0ndWktYnV0dG9uLXRleHQtaWNvbi1wcmltYXJ5J30NCiAge2lmICFpc3NldCgkdGl0bGUpIHx8ICR0aXRsZSA9PSAnJ317JHRpdGxlPSR0ZXh0fXsvaWZ9DQp7L2lmfQ0KPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIG5hbWU9InskaW5hbWV9IiBpZD0ieyRpZH0iIHRpdGxlPSJ7JHRpdGxlfGRlZmF1bHQ6Jyd9IiBjbGFzcz0iZmlsZWJ0biB1aS1idXR0b24gdWktd2lkZ2V0IHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCB7JGFkZGNsYXNzfSI+DQogIDxzcGFuIGNsYXNzPSJ1aS1pY29uIHVpLWJ1dHRvbi1pY29uLXByaW1hcnkgeyRpY29ufSI+PC9zcGFuPg0KICB7aWYgaXNzZXQoJHRleHQpICYmICR0ZXh0ICE9ICcnfTxzcGFuIGNsYXNzPSJ1aS1idXR0b24tdGV4dCI+eyR0ZXh0fTwvc3Bhbj57L2lmfQ0KPC9idXR0b24+DQp7L2Z1bmN0aW9ufQ0KDQo8ZGl2Pg0KICB7JGZvcm1zdGFydH0NCjxkaXY+DQoJPGZpZWxkc2V0IGlkPSJuYXZCdXR0b25zIj4NCiAgICAgIHsqZmlsZWJ0biBpZD0nYnRuX25ld2RpcicgaW5hbWU9InskYWN0aW9uaWR9ZmlsZWFjdGlvbm5ld2RpciIgaWNvbj0ndWktaWNvbi1jaXJjbGUtcGx1cycgdGV4dD0kRmlsZU1hbmFnZXItPkxhbmcoJ25ld2RpcicpIHRpdGxlPSRGaWxlTWFuYWdlci0+TGFuZygndGl0bGVfbmV3ZGlyJykqfQ0KICAgICAgeypmaWxlYnRuIGlkPSdidG5fdmlldycgaW5hbWU9InskYWN0aW9uaWR9ZmlsZWFjdGlvbnZpZXciIGljb249J3VpLWljb24tY2lyY2xlLXpvb21pbicgdGV4dD0kRmlsZU1hbmFnZXItPkxhbmcoJ3ZpZXcnKSB0aXRsZT0kRmlsZU1hbmFnZXItPkxhbmcoJ3RpdGxlX3ZpZXcnKSp9DQoJCXtmaWxlYnRuIGlkPSdidG5fZGVsZXRlJyBpbmFtZT0ieyRhY3Rpb25pZH1maWxlYWN0aW9uZGVsZXRlIiBpY29uPSd1aS1pY29uLXRyYXNoJyB0ZXh0PSRGaWxlTWFuYWdlci0+TGFuZygnZGVsZXRlJykgdGl0bGU9JEZpbGVNYW5hZ2VyLT5MYW5nKCd0aXRsZV9kZWxldGUnKX0NCiAgICB7ZmlsZWJ0biBpZD0nYnRuX3JlZnJlc2gnIGluYW1lPSJ7JGFjdGlvbmlkfWZpbGVhY3Rpb25yZWZyZXNoIiBpY29uPSd1aS1pY29uLXJlZnJlc2gnIHRleHQ9JEZpbGVNYW5hZ2VyLT5MYW5nKCdyZWZyZXNoJykgdGl0bGU9JEZpbGVNYW5hZ2VyLT5MYW5nKCd0aXRsZV9yZWZyZXNoJyl9DQogICAgJm5ic3A7eyRtb2QtPkxhbmcoJ2xhc3RfcmVmcmVzaGVkJyl9Jm5ic3A7eyRsYXN0dXBkYXRlfGxvY2FsZWRhdGVfZm9ybWF0OidqICVoIFkgSDppOnMnfQ0KCTwvZmllbGRzZXQ+DQo8L2Rpdj4NCnskaGlkZGVucGF0aH0NCnsvaWZ9DQoNCjxkaXYgaWQ9ImZpbGVzYXJlYSI+DQoJPHRhYmxlIHdpZHRoPSIxMDAlIiBjbGFzcz0icGFnZXRhYmxlIHNjcm9sbGFibGUiPg0KCQk8dGhlYWQ+DQoJCQk8dHI+DQoJCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4NCiAgICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4NCgkJCQk8dGg+eyRGaWxlTWFuYWdlci0+TGFuZygiZmlsZW5hbWUiKX08L3RoPg0KCQkJCTx0aD57JEZpbGVNYW5hZ2VyLT5MYW5nKCdtaW1ldHlwZScpfTwvdGg+DQoJCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiIgdGl0bGU9InskRmlsZU1hbmFnZXItPkxhbmcoJ3RpdGxlX2NvbF9maWxlc2l6ZScpfSIgc3R5bGU9InRleHQtYWxpZ246cmlnaHQ7Ij57JEZpbGVNYW5hZ2VyLT5MYW5nKCJmaWxlc2l6ZSIpfTwvdGg+DQoJCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiIgdGl0bGU9InskRmlsZU1hbmFnZXItPkxhbmcoJ3RpdGxlX2NvbF9maWxlZGF0ZScpfSI+eyRGaWxlTWFuYWdlci0+TGFuZygiZmlsZWRhdGUiKX08L3RoPg0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPjwvdGg+DQoJCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiI+DQoJCQkJCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0idGFnYWxsIiB2YWx1ZT0idGFnYWxsIiBpZD0idGFnYWxsIiB0aXRsZT0ieyRGaWxlTWFuYWdlci0+TGFuZygndGl0bGVfdGFnYWxsJyl9Ii8+DQoJCQkJPC90aD4NCgkJCTwvdHI+DQoJCTwvdGhlYWQ+DQoJCTx0Ym9keT4NCgkJe2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1maWxlfQ0KCQkJe2N5Y2xlIHZhbHVlcz0icm93MSxyb3cyIiBhc3NpZ249cm93Y2xhc3N9DQoJCQk8dHIgY2xhc3M9Inskcm93Y2xhc3N9Ij4NCgkJCQk8dGQgdmFsaWduPSJtaWRkbGUiPnskZmlsZS0+aWNvbl9saW5rfTwvdGQ+DQogICAgPHRkIGNsYXNzPSJjbGlja2FibGUiIHZhbGlnbj0ibWlkZGxlIj57aWYgISRmaWxlLT5kaXJ9PGEgaHJlZj0ieyRmaWxlLT5wcmVzaWduZWRfdXJsfSIgdGFyZ2V0PSJfYmxhbmsiPnthZG1pbl9pY29uIGljb249J3Blcm1pc3Npb25zLmdpZicgYWx0PSd2aWV3X3BhZ2UnfGxhbmd9PC9hPnsvaWZ9PC90ZD4NCgkJCQk8dGQgY2xhc3M9ImNsaWNrYWJsZSIgdmFsaWduPSJtaWRkbGUiPnskZmlsZS0+dXJsX2xpbmt9PC90ZD4NCgkJCQk8dGQgY2xhc3M9ImNsaWNrYWJsZSIgdmFsaWduPSJtaWRkbGUiPnskZmlsZS0+bWltZX08L3RkPg0KCQkJCTx0ZCBjbGFzcz0iY2xpY2thYmxlIiBzdHlsZT0icGFkZGluZy1yaWdodDo4cHg7d2hpdGUtc3BhY2U6cHJlO3RleHQtYWxpZ246cmlnaHQ7IiB2YWxpZ249Im1pZGRsZSI+eypzM191dGlsczo6Zm9ybWF0Qnl0ZXMoJGZpbGUtPnNpemUpKn08L3RkPg0KICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY2xpY2thYmxlIiBzdHlsZT0icGFkZGluZy1yaWdodDo4cHg7d2hpdGUtc3BhY2U6cHJlOyIgdmFsaWduPSJtaWRkbGUiPnskZmlsZS0+ZGF0ZXxjbXNfZGF0ZV9mb3JtYXR9PC90ZD4NCgkJCQk8dGQ+eyRmaWxlLT5vcGVubGlua30geyphZG1pbl9pY29uIGljb249J3ZpZXcuZ2lmJyBhbHQ9Ik9wZW4iKn08L3RkPg0KCQkJCTx0ZD4NCgkJCQl7aWYgIWlzc2V0KCRmaWxlLT5ub0NoZWNrYm94KX0NCgkJCQkJPGxhYmVsIGZvcj0ieF97JGZpbGUtPnVybG5hbWV9IiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPnskRmlsZU1hbmFnZXItPkxhbmcoJ3RvZ2dsZScpfTwvbGFiZWw+DQoJCQkJCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgdGl0bGU9InskRmlsZU1hbmFnZXItPkxhbmcoJ3RvZ2dsZScpfSIgaWQ9InhfeyRmaWxlLT5uYW1lfSIgbmFtZT0ieyRhY3Rpb25pZH1zZWxhbGxbXSIgdmFsdWU9InskZmlsZS0+a2V5fSIgY2xhc3M9ImZpbGVzZWxlY3Qge2ltcGxvZGUoJyAnLCRmaWxlLT50eXBlKX0iIHtpZiBpc3NldCgkZmlsZS0+Y2hlY2tlZCl9Y2hlY2tlZD0iY2hlY2tlZCJ7L2lmfS8+DQoJCQkJey9pZn0NCgkJCQk8L3RkPg0KCQkJPC90cj4NCgkJey9mb3JlYWNofQ0KCQk8L3Rib2R5Pg0KCQk8dGZvb3Q+DQoJCQk8dHI+DQoJCQkJPHRkIGNvbHNwYW49IjYiPiZuYnNwO3skY291bnRzdGV4dH08L3RkPg0KCQkJPC90cj4NCgkJPC90Zm9vdD4NCgk8L3RhYmxlPg0KPC9kaXY+DQp7aWYgIWlzc2V0KCRhamF4KX0NCgl7KnskYWN0aW9uZHJvcGRvd259eyR0YXJnZXRkaXJ9eyRva2lucHV0fSp9DQoJeyRmb3JtZW5kfQ0KPC9kaXY+DQp7L2lmfQ0KDQo8ZGl2IGNsYXNzPSJyb3cgY19mdWxsIj4NCiAge2lmICRpdGVtY291bnQgPiAwICYmICRwYWdlY291bnQgPiAxfQ0KICAgIDxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIGdyaWRfMTIiIHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodDsiPg0KICAgICAge2Zvcm1fc3RhcnR9DQogICAgICB7JG1vZC0+TGFuZygncHJvbXB0X3BhZ2UnKX0mbmJzcDsNCiAgICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1wYWdlbnVtYmVyIj4NCiAgICAgICAge2Ntc19wYWdlb3B0aW9ucyBudW1wYWdlcz0kcGFnZWNvdW50IGN1cnBhZ2U9JHBhZ2VudW1iZXJ9DQogICAgICA8L3NlbGVjdD4mbmJzcDsNCiAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9cGFnaW5hdGUiIHZhbHVlPSJ7JG1vZC0+TGFuZygncHJvbXB0X2dvJyl9Ii8+DQogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfXByZWZpeCIgdmFsdWU9InskcGF0aH0iLz4NCiAgICAgIHtmb3JtX2VuZH0NCiAgICA8L2Rpdj4NCiAgey9pZn0NCjwvZGl2PnsqIC5yb3cgKn0NCg0KeypnZXRfdGVtcGxhdGVfdmFycyp9]]></data>
	</file>
	<file>
	  <filename>/templates/orig_detail_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRlbnRyeX0KICA8ZGl2IGNsYXNzPSJyb3cgbWItMiI+CiAgPGRpdiBjbGFzcz0iY29sLW1kLTYiPgogICAgPGRpdiBjbGFzcz0icm93IGctMCBib3JkZXIgcm91bmRlZCBvdmVyZmxvdy1oaWRkZW4gZmxleC1tZC1yb3cgbWItNCBzaGFkb3ctc20gaC1tZC0yNTAgcG9zaXRpb24tcmVsYXRpdmUiPgogICAgICA8ZGl2IGNsYXNzPSJjb2wgcC00IGQtZmxleCBmbGV4LWNvbHVtbiBwb3NpdGlvbi1zdGF0aWMiPgogICAgICB7aWYgaXNzZXQoJGVudHJ5LT5idWNrZXQpfQogICAgICAgIDxzdHJvbmcgY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1iLTIgdGV4dC1wcmltYXJ5Ij57JGVudHJ5LT5idWNrZXR9PC9zdHJvbmc+CiAgICAgIHsvaWZ9CiAgICAgICAgPGgzIGNsYXNzPSJtYi0wIj57JGVudHJ5LT5uYW1lfGNtc19lc2NhcGU6aHRtbGFsbH08L2gzPgogICAgICAgIHtpZiAkZW50cnktPnBvc3RkYXRlfTxkaXYgY2xhc3M9Im1iLTEgdGV4dC1tdXRlZCI+eyRlbnRyeS0+cG9zdGRhdGV8Y21zX2RhdGVfZm9ybWF0fTwvZGl2PnsvaWZ9CiAgICAgICAgPHAgY2xhc3M9ImNhcmQtdGV4dCBtYi1hdXRvIj57JG1vZC0+TGFuZygnbGFiZWxfbWltZScpfSB7JGVudHJ5LT5taW1lfSwgeyRtb2QtPkxhbmcoJ2xhYmVsX3NpemUnKX0geyRlbnRyeS0+c2l6ZX08L3A+CiAgICAgICAgPG9sIGNsYXNzPSJsaXN0LXVuc3R5bGVkIG1iLTAiPgogICAgICAgICAge2lmICRlbnRyeS0+dXJsX29yaWdpbmFsfTxsaT48YSBocmVmPSJ7JGVudHJ5LT51cmxfb3JpZ2luYWx9Ij57JG1vZC0+TGFuZygnbGFiZWxfdXJsX29yaWdpbmFsJyl9PC9hPjwvbGk+ey9pZn0KICAgICAgICAgIHtpZiAkZW50cnktPnVybH08bGk+PGEgaHJlZj0ieyRlbnRyeS0+dXJsfSI+eyRtb2QtPkxhbmcoJ2xhYmVsX3VybCcpfTwvYT48L2xpPnsvaWZ9CiAgICAgICAgICB7aWYgJGVudHJ5LT51cmxfcHJlc2lnbmVkfTxsaT48YSBocmVmPSJ7JGVudHJ5LT51cmxfcHJlc2lnbmVkfSI+eyRtb2QtPkxhbmcoJ2xhYmVsX3VybF9wcmVzaWduZWQnKX08L2E+PC9saT57L2lmfQogICAgICAgICAgPC9vbD4KICAgICAgPC9kaXY+CiAgICAgIHtpZiAkZW50cnktPmlzaW1hZ2V9CiAgICAgIDxkaXYgY2xhc3M9ImNvbC1hdXRvIGQtbm9uZSBkLWxnLWJsb2NrIHAtMCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJiZC1wbGFjZWhvbGRlci1pbWciIHdpZHRoPSIyMDAiPgogICAgICAgICAgICA8aW1nIHNyYz0ieyRlbnRyeS0+dXJsX3ByZXNpZ25lZH0iIHdpZHRoPSIyMDAiLz4KICAgICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgey9pZn0KICAgIDwvZGl2PgogIDwvZGl2PgogIDwvZGl2PgogIHsvaWZ9ICA=]]></data>
	</file>
	<file>
	  <filename>/templates/orig_summary_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iZC1tZC1mbGV4IGZsZXgtbWQtcm93LXJldmVyc2UgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIj4KICA8ZGl2IGNsYXNzPSJtYi0zIG1iLW1kLTAgZC1mbGV4IHRleHQtbm93cmFwIj4KICA8c21hbGwgY2xhc3M9ImQtaW5saW5lLWZsZXggcHgtMiBweS0xIGZ3LXNlbWlib2xkIHRleHQtc3VjY2Vzcy1lbXBoYXNpcyBiZy1zdWNjZXNzLXN1YnRsZSBib3JkZXIgYm9yZGVyLXN1Y2Nlc3Mtc3VidGxlIHJvdW5kZWQtMiBtZS0yIj5MYXN0IFJlZnJlc2hlZCB7JHN0YXJ0ZGF0ZXxsb2NhbGVkYXRlX2Zvcm1hdDonaiAlaCBZIEg6aTpzJ308L3NtYWxsPgogIDwvZGl2PgogIDxoMSBjbGFzcz0iYmQtdGl0bGUgbWItMCIgaWQ9ImNvbnRlbnQiPnskYnVja2V0fTwvaDE+CjwvZGl2PgogICAgICAgICAKICA8bmF2IGFyaWEtbGFiZWw9ImJyZWFkY3J1bWIiPgogIDxvbCBjbGFzcz0iYnJlYWRjcnVtYiI+CiAgPGxpIGNsYXNzPSJicmVhZGNydW1iLWl0ZW0gYWN0aXZlIiBhcmlhLWN1cnJlbnQ9InBhZ2UiPkhvbWU8L2xpPgogIHtmb3JlYWNoICRwYXRoX3BhcnRzIGFzICRwYXJ0fQogICAgPGxpIGNsYXNzPSJicmVhZGNydW1iLWl0ZW0iPgogICAge2lmICFlbXB0eSgkcGFydC0+dXJsKX0KICAgICAgPGEgaHJlZj0ieyRwYXJ0LT51cmx9Ij57JHBhcnQtPm5hbWV9PC9hPgogICAge2Vsc2V9CiAgICAgIHskcGFydC0+bmFtZX0KICAgIHsvaWZ9CiAgICA8L2xpPgogIHsvZm9yZWFjaH0KICA8L29sPgo8L25hdj4KCjxkaXYgY2xhc3M9ImNhcmQiPgo8dWwgY2xhc3M9Imxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaCI+CntpZiAkdXBfZGlydXJsfQogIDxsaSBjbGFzcz0ibGlzdC1ncm91cC1pdGVtIGJhY2t1cCI+eyR1cF9kaXJpY29ubGlua30geyR1cF9kaXJsaW5rfTwvbGk+CnsvaWZ9Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAge2lmICRlbnRyeS0+ZGlyfQogICAgPGxpIGNsYXNzPSJsaXN0LWdyb3VwLWl0ZW0iPjxhIGhyZWY9InskZW50cnktPmxpbmt9IiBjbGFzcz0iY2FyZC1saW5rIj57JGVudHJ5LT5pY29ufSB7JGVudHJ5LT5uYW1lfTwvYT48L2xpPgogIHtlbHNlfQogICAgPGxpIGNsYXNzPSJsaXN0LWdyb3VwLWl0ZW0iPgogICAgPGEgaHJlZj0ieyRlbnRyeS0+ZGV0YWlsX2xpbmt9IiBjbGFzcz0iY2FyZC1saW5rIj57JGVudHJ5LT5pY29ufTwvYT4gCiAgICB7JGVudHJ5LT5wcmVzaWduZWRfbGlua30KICAgIDwvbGk+CiAgey9pZn0Key9mb3JlYWNofQo8L3VsPgo8L2Rpdj4KCntpZiAkcGFnZWNvdW50ID4gMX0KICA8cD4Ke2lmICRwYWdlbnVtYmVyID4gMX0KeyRmaXJzdHBhZ2V9Jm5ic3A7eyRwcmV2cGFnZX0mbmJzcDsKey9pZn0KeyRwYWdldGV4dH0mbmJzcDt7JHBhZ2VudW1iZXJ9Jm5ic3A7eyRvZnRleHR9Jm5ic3A7eyRwYWdlY291bnR9CntpZiAkcGFnZW51bWJlciA8ICRwYWdlY291bnR9CiZuYnNwO3skbmV4dHBhZ2V9Jm5ic3A7eyRsYXN0cGFnZX0Key9pZn0KPC9wPgp7L2lmfQo8IS0tIEVuZCBBV1NTMyBEaXNwbGF5IFRlbXBsYXRlIC0tPg==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_uploadform_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iYmQtZXhhbXBsZSI+DQp7JHN0YXJ0Zm9ybX0NCntpZiAkbWVzc2FnZX17JG1lc3NhZ2V9ey9pZn0NCg0KPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+DQogIDxkaXYgY2xhc3M9ImN1c3RvbS1maWxlIj4NCiAgICA8aW5wdXQgdHlwZT0iZmlsZSIgY2xhc3M9ImN1c3RvbS1maWxlLWlucHV0IiBpZD0ieyRhY3Rpb25pZH1jdXN0b21GaWxlIiBuYW1lPSJ7JGFjdGlvbmlkfWlucHV0X2Jyb3dzZSI+DQogICAgPGxhYmVsIGNsYXNzPSJjdXN0b20tZmlsZS1sYWJlbCIgZm9yPSJ7JGFjdGlvbmlkfWN1c3RvbUZpbGUiPnskbW9kLT5MYW5nKCdjaG9vc2VfZmlsZScpfTwvbGFiZWw+DQogIDwvZGl2Pg0KPC9kaXY+DQp7KiBjYXB0Y2hhID8/ICp9DQp7aWYgaXNzZXQoJGNhcHRjaGEpfQ0KICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4NCiAgICB7JGNhcHRjaGF9PGJyLz4NCiAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCBtdC0zIiBuYW1lPSJ7JGFjdGlvbmlkfWlucHV0X2NhcHRjaGEiIHNpemU9IjEwIiBtYXhsZW5ndGg9IjEwIi8+DQogICAgPHNtYWxsIGlkPSJjYXB0Y2hhSGVscCIgY2xhc3M9ImZvcm0tdGV4dCB0ZXh0LW11dGVkIj57JG1vZC0+TGFuZygnY2FwdGNoYV90aXRsZScpfTwvc21hbGw+DQogIDwvZGl2Pg0Key9pZn0NCjxidXR0b24gdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfWlucHV0X3N1Ym1pdCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+eyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfTwvYnV0dG9uPg0KeyRlbmRmb3JtfQ0KPC9kaXY+DQoNCjwhLS0gcmVtb3ZlIHRoaXMgaWYgbm90IHVzaW5nIGJvb3RzdHJhcCAtLT4NCjxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2JzLWN1c3RvbS1maWxlLWlucHV0L2Rpc3QvYnMtY3VzdG9tLWZpbGUtaW5wdXQuanMiPjwvc2NyaXB0Pg0KPHNjcmlwdD4NCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsNCiAgYnNDdXN0b21GaWxlSW5wdXQuaW5pdCgpDQp9KQ0KPC9zY3JpcHQ+IA0KPCEtLSBlbmQgcmVtb3ZlIC0tPg==]]></data>
	</file>
	<file>
	  <filename>/templates/uploadview.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdD57bGl0ZXJhbH0NCiQoZnVuY3Rpb24gKCkgew0KICAgICQoJyNmaWxldXBsb2FkJykuZmlsZXVwbG9hZCh7DQogICAgICAgIGRhdGFUeXBlOiAnanNvbicsDQogICAgICAgIHN0YXJ0OiBmdW5jdGlvbihlLGRhdGEpIHsNCiAgICAgICAgICAkKCcjcHJvZ3Jlc3NhcmVhJykuc2hvdygpOw0KICAgICAgICB9LA0KICAgICAgICBwcm9ncmVzc2FsbDogZnVuY3Rpb24oZSwgZGF0YSkgew0KICAgICAgICAgIC8vIG92ZXJhbGwgcHJvZ3Jlc3MgY2FsbGJhY2sNCiAgICAgICAgICB2YXIgcGVyYyA9IChkYXRhLmxvYWRlZCAvIGRhdGEudG90YWwgKiAxMDApLnRvRml4ZWQoMik7DQogICAgICAgICAgdmFyIHRvdGFsID0gbnVsbDsNCiAgICAgICAgICB0b3RhbCA9IChkYXRhLmxvYWRlZCAvIGRhdGEudG90YWwgKiAxMDApLnRvRml4ZWQoMCk7DQogICAgICAgICAgdmFyIHN0ciA9IHBlcmMgKyAnICUnOw0KICAgICAgICAgIC8vY29uc29sZS5sb2codG90YWwpOw0KICAgICAgICAgIGJhclZhbHVlKHRvdGFsKTsNCiAgICAgICAgICANCiAgICAgICAgICBmdW5jdGlvbiBiYXJWYWx1ZSh0b3RhbCkgew0KICAgICAgICAgICAgJCgiI3Byb2dyZXNzYXJlYSIpLnByb2dyZXNzYmFyKCB7DQogICAgICAgICAgICAgIHZhbHVlOiBwYXJzZUludCh0b3RhbCkNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgJCgiLnVpLXByb2dyZXNzYmFyLXZhbHVlIikuaHRtbChzdHIpOw0KICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAgICAgZG9uZTogZnVuY3Rpb24gKGUsIGRhdGEpIHsNCiAgICAgICAgICAgIHZhciBmaWxlc2xvb3A9W107DQogICAgICAgICAgICBpZihkYXRhLnJlc3VsdC5maWxlcyAhPSB1bmRlZmluZWQpew0KICAgICAgICAgICAgICAkLmVhY2goZGF0YS5yZXN1bHQuZmlsZXMsIGZ1bmN0aW9uIChpbmRleCwgZmlsZSkgew0KICAgICAgICAgICAgICAgIGlmKGZpbGUuZXJyb3Ipew0KICAgICAgICAgICAgICAgICAgZmlsZXNsb29wLnB1c2goJzxwPicrZmlsZS5uYW1lICsgIiAtICIgKyBmaWxlLmVycm9yKyc8L3A+Jyk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGZpbGVzbG9vcC5sZW5ndGgpIHsNCiAgICAgICAgICAgICAgdmFyICRyZXNwb25zZSA9ICQoJzxhc2lkZS8+JykuYWRkQ2xhc3MoJ21lc3NhZ2UnKTsNCg0KICAgICAgICAgICAgICAgICRyZXNwb25zZS5hZGRDbGFzcygncGFnZWVycm9yY29udGFpbmVyJykNCiAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8c3Bhbj4nKS50ZXh0KCdDbG9zZScpLmFkZENsYXNzKCdjbG9zZS13YXJuaW5nJykpDQogICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoZmlsZXNsb29wLmpvaW4oJycpKTsNCiAgICAgICAgICAgDQogICAgICAgICAgICAgICQoJ2JvZHknKS5hcHBlbmQoJHJlc3BvbnNlKS5zbGlkZURvd24oMTAwMCwgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICAgICAgICAkcmVzcG9uc2Uuc2xpZGVVcCgpOw0KICAgICAgICAgICAgICAgICAgICAgICRyZXNwb25zZS5yZW1vdmUoKTsNCiAgICAgICAgICAgICAgICAgIH0sIDEwMDAwKTsNCiAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgfSwNCiAgICAgICAgc3RvcDogZnVuY3Rpb24oZSwgZGF0YSkgew0KICAgICAgICAgICQoJyNmaWxlc2FyZWEnKS5sb2FkKHJlZnJlc2hfdXJsKTsNCiAgICAgICAgICAkKCcjcHJvZ3Jlc3NhcmVhJykuZmFkZU91dCgpOw0KICAgICAgICB9DQogICAgfSk7DQp9KTsNCnsvbGl0ZXJhbH08L3NjcmlwdD4NCnskZm9ybXN0YXJ0fQ0KICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkaXNhYmxlX2J1ZmZlciIgdmFsdWU9IjEiIC8+DQogIHskaGlkZGVucGF0aH0NCiAgPGZpZWxkc2V0Pg0KICAgIDxkaXYgY2xhc3M9InVwbG9hZC13cmFwcGVyIj4NCiAgICAgIDxkaXYgc3R5bGU9IndpZHRoOiA2MCU7IGZsb2F0OiBsZWZ0OyI+DQogICAgICAgIHsqPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTUFYX0ZJTEVfU0laRSIgdmFsdWU9InskbWF4ZmlsZXNpemV9IiAvPip9eyogcmVjb21tZW5kYXRpb24gZm9yIGJyb3dzZXIgKn0NCiAgICAgICAgPGlucHV0IGlkPSJmaWxldXBsb2FkIiB0eXBlPSJmaWxlIiBuYW1lPSJ7JGFjdGlvbmlkfWZpbGVzW10iIHNpemU9IjUwIiB0aXRsZT0ieyRGaWxlTWFuYWdlci0+TGFuZygndGl0bGVfZmlsZWZpZWxkJyl9IiBtdWx0aXBsZS8+DQogICAgICAgIDxkaXYgaWQ9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij48L3A+DQogICAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQogICAgICAgICAgICA8aW5wdXQgaWQ9ImNhbmNlbCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2NhbmNlbCcpfSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ii8+DQogICAgICAgICAgICB7KjxpbnB1dCBuYW1lPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9InskbW9kLT5MYW5nKCdzdWJtaXQnKX0iLz4qfQ0KICAgICAgICAgIDwvcD4NCiAgICAgICAgPC9kaXY+DQogICAgICA8L2Rpdj4NCiAgICAgIDxkaXYgaWQ9ImxlZnRjb2wiIHN0eWxlPSJoZWlnaHQ6IDRlbTsgd2lkdGg6IDQwJTsgZmxvYXQ6IGxlZnQ7IGRpc3BsYXk6IHRhYmxlOyI+DQogICAgICAgIHtpZiAhaXNzZXQoJGlzX2llKX0NCiAgICAgICAgICA8ZGl2IGlkPSJkcm9wem9uZSIgY2xhc3M9InZjZW50ZXJlZCBoY2VudGVyZWQgZmFkZSIgdGl0bGU9InskbW9kLT5MYW5nKCd0aXRsZV9kcm9wem9uZScpfSI+PHAgaWQ9ImRyb3B6b25ldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9kcm9wZmlsZXMnKX08L3A+PC9kaXY+DQogICAgICAgIHsvaWZ9DQogICAgICA8L2Rpdj4NCiAgICAgIDxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+DQogICAgICA8ZGl2IGlkPSJwcm9ncmVzc2FyZWEiPjwvZGl2Pg0KICAgIDwvZGl2Pg0KICA8L2ZpZWxkc2V0Pg0KeyRmb3JtZW5kfQ0KDQo=]]></data>
	</file>
</module>
