<?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>CGSimplePWA</name>
	<version>1.0.1</version>
    <mincmsversion>2.2.8</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgZG9lcyB0aGlzIGRvPC9oMz4KPHA+VGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBxdWljayBhbmQgZWFzeSB3YXkgdG8gdHJhbnNmb3JtIHlvdXIgQ01TTVMgd2Vic2l0ZSBpbnRvIGEgQkFTSUMgUHJvZ3Jlc3NpdmUgV2ViIEFwcGxpY2F0aW9uIChQV0EpLiAgIFRoaXMgYWxsb3dzIHVzZXJzIHRvIGVhc2lseSBhZGQgYW4gaWNvbiB0byB5b3VyIHdlYnNpdGUgdG8gdGhlaXIgbW9iaWxlIGRldmljZSdzIGhvbWUgc2NyZWVuLCBoYW5kbGVzIHdoZW4gdGhlIGRldmljZSBpcyBvZmZsaW5lLCBhbmQgcHJvdmlkZXMgYSBtb3JlIG5hdGl2ZS1leHBlcmllbmNlIGZvciBtb2JpbGUgZGV2aWNlcy48L3A+CjxwPlRoaXMgbW9kdWxlIHdpbGwgZ2VuZXJhdGUgYSBtYW5pZmVzdC5qc29uIGZpbGUsIGFuZCBhc3NvY2lhdGVkIG1ldGEgdGFncyB0byBsaW5rIHRvIHRoZSBtYW5pZmVzdC4gIEl0IHdpbGwgYWxzbyBnZW5lcmF0ZSBtZXRhIHRhZ3MgZm9yIElPUyBkZXZpY2VzIHRvIGFsbG93IHRoZW0gdG8gb3BlcmF0ZSBpbiBhIG1vcmUgbmF0aXZlIHdheS4gICBBbHNvLCB0aGUgbW9kdWxlIHdpbGwgZ2VuZXJhdGUgYSBzZXJ2aWNlIHdvcmtlciB0aGF0IGNhY2hlcyBzdGF0aWMgYXNzZXRzIGZvciBpbmNyZWFzZWQgcGVyZm9ybWFuY2UgYW5kIG9mZmxpbmUgbW9kZS48L3A+Cgo8aDM+SG93IGRvIEkgVXNlIGl0PC9oMz4KPHVsPgogICAgPGxpPkluc3RhbGwgdGhlIG1vZHVsZTwvbGk+CiAgICA8bGk+U2V0IHRoZSBtb2R1bGUgc2V0dGluZ3M8L2xpPgogICAgPGxpPk9wdGlvbmFsbHkgc2V0IHN0YXRpYyByZXNvdXJjZXM8L2xpPgogICAgPGxpPkFkZCB0aGUge0NHU2ltcGxlUFdBfSB0YWcgdG8gdGhlIGhlYWQgc2VjdGlvbiBvZiB0aGUgcGFnZSB0ZW1wbGF0ZS48L2xpPgogICAgPGxpPk9wdGlvbmFsbHkgY3JlYXRlIGFuIG9mZmxpbmUgcGFnZTwvbGk+CiAgICA8bGk+T3B0aW9uYWxseSBpbmNsdWRlIHNvbWUgamF2YXNjcmlwdCBhbmQgc3R5bGluZyB0byBndWlkZSB0aGUgdXNlciBpbiBhZGRpbmcgdGhlIGFwcCB0byB0aGVpciBob21lIHNjcmVlbi48L2xpPgogICAgPGxpPk9wdGlvbmFsbHkgaW5jbHVkZSBzb21lIGphdmFzY3JpcHQgdG8gYWxsb3cgcmVsb2FkaW5nIG9mIHRoZSBwYWdlIChpLmU6IHB1bGwgdG8gcmVsb2FkKTwvbGk+CjwvdWw+Cgo8aDM+UmVxdWlyZW1lbnRzPC9oMz4KPHA+SW4gb3JkZXIgdG8gY3JlYXRlIGEgcHJvZ3Jlc3NpdmUgYXBwbGljYXRpb24geW91ciB3ZWJzaXRlIG11c3QgYXQgYSBtaW5pbXVtIG1lZXQgdGhpcyByZXF1aXJlbWVudHM6PC9wPgo8dWw+CiAgICA8bGk+WW91ciBhcHBsaWNhdGlvbiBtdXN0IGJlIHNlcnZlZCB2aWEgSFRUUFM8L2xpPgogICAgPGxpPllvdXIgYXBwbGljYXRpb24gbXVzdCBiZSByZXNwb25zaXZlPC9saT4KICAgIDxsaT5UaGUgQ01TTVMgd2ViIHJvb3QgZGlyZWN0b3J5IG11c3QgYmUgd3JpdGFibGUgYnkgQ01TTVMgYXMgdGhlIG1hbmlmZXN0IGFuZCBzZXJ2aWNlIHdvcmtlciBhcmUgcGxhY2VkIGluIHRoZSByb290IGRpcmVjdG9yeS48L2xpPgo8L3VsPgo8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFdlIHJlY29tbWVuZCB0aGF0IHlvdSByZXNlYXJjaCBQcm9ncmVzc2l2ZSBXZWIgQXBwIHRlY2hub2xvZ3kgb24gdGhlIHdlYi4gVGhlcmUgYXJlIG1hbnksIG1hbnkgcmVzb3VyY2VzLjwvcD4KPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiB0aGUgQ0dXZWJQdXNoIG1vZHVsZSBpcyBjdXJyZW50bHkgbm90IGNvbXBhdGlibGUgd2l0aCB0aGlzIG1vZHVsZSBhcyB0aGV5IGJvdGggcHJvdmlkZSB0aGVpciBvd24gc2VydmljZSB3b3JrZXJzLCBhbmQgb25seSBvbmUgc2VydmljZSB3b3JrZXIgaXMgcGVybWl0dGVkIHBlciBzaXRlLjwvcD4KCjxoMz5UaGUgU2VydmljZSBXb3JrZXI8L2gzPgo8cD5UaGUgc2VydmljZSB3b3JrZXIgcHJvdmlkZWQgYnkgdGhpcyBtb2R1bGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgd2hlbiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjaGFuZ2VzOjwvcD4KPHVsPgogICA8bGk+VGhlIHNlcnZpY2Ugd29ya2VyIHRlbXBsYXRlIGNoYW5nZXM8L2xpPgogICA8bGk+QW55IGZpbGUgd2l0aGluIHRoZSBDTVNNUyBhc3NldHMgZGlyZWN0b3J5IGNoYW5nZXM8L2xpPgogICA8bGk+VGhlIG9mZmxpbmUgcGFnZSAoaWYgaXQgZXhpc3RzKSBjaGFuZ2VzLjwvbGk+CiAgIDxsaT5UaGUgc3RhdGljIGFzc2V0IGxpc3Qgc3BlY2lmZWlkIGluIHRoZSBhZG1pbiBwYW5lbCBjaGFuZ2VzPC9saT4KPC91bD4KPHA+SXQncyBiZWhhdmlvciBpcyB0byBjYWNoZSB0aGUgc3RhdGljIFVSTHMgc3BlY2lmaWVkIGluIHRoZSBjb25maWcgcGFuZWwgb24gaW5zdGFsbGF0aW9uLCBhbmQgdGhlbiBkbyBhIGNoYWNoZS10aGVuLW5ldHdvcmstdGhlbi1jYWNoZSBhcHByb2FjaCBmb3IgYW55IHJlcXVlc3RlZCBhc3NldHMgYmVsb3cgdGhlIENNU01TIGFzc2V0cyBkaXJlY3RvcnkuICAgVGhpcyBhbGxvd3MgeW91IHRvIHVzZSBzdGF0aWMgYXNzZXRzIGFzIHlvdSB3b3VsZCwgd2l0aG91dCBoYXZpbmcgdG8gZXhwbGljaXRseSB3b3JyeSBhYm91dCB1cGRhdGluZyBhIGxpc3Qgb2YgZmlsZXMgdG8gY2FjaGU8L3A+CjxwPk9sZCBjYWNoZXMgYXJlIHJlbW92ZWQgZXZlcnkgdGltZSB0aGUgc2VydmljZSB3b3JrZXIgaXMgYWN0aXZhdGVkIGFuZC9vciB0aGUgc2VydmljZSB3b3JrZXIgY2hhbmdlcyBmb3IgcGVyZm9ybWFuY2UgYW5kIHRvIHJlZHVjZSBzdG9yYWdlIHJlcXVpcmVtZW50cy48L3A+Cgo8aDM+RmlsZSBHZW5lcmF0aW9uPC9oMz4KPHA+VGhlIG1hbmlmZXN0IGpzb24gZmlsZSBpcyBnZW5lcmF0ZWQgZWFjaCB0aW1lIHlvdSBjbGljayB0aGUgc3VibWl0IGJ1dHRvbiBvbiB0aGUgc2V0dGluZ3MgdGFiIG9mIHRoZSBtb2R1bGUncyBhZG1pbiBwYW5lbC48L3A+CjxwPlRoZSBzZXJ2aWNlIHdvcmtlciBqYXZhc2NyaXB0IGZpbGUgaXMgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgb24gcmVxdWVzdCBpZiBjZXJ0YWluIGNvbmRpdGlvbnMgaGF2ZSBiZWVuIG1ldC4gIFRvIGZvcmNlIGl0IHRvIGJlIHJlZ2VuZXJhZWQgeW91IGNhbiB0b3VjaCBvciBjaGFuZ2UgYSBmaWxlIGluIHlvdXIgYXNzZXRzIGRpcmVjdG9yeS48L3A+Cgo8aDM+VGhlIE9mZmxpbmUgUGFnZSBUeXBlPC9oMz4KPHA+VGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBuZXcgY29udGVudCB0eXBlIGNhbGxlZCAiQ0dTaW1wbGVQV0EgT2ZmbGluZSBQYWdlIiB0aGF0IGFsbG93cyB5b3UgdG8gY3JlYXRlIGEgcGFnZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIHRoZSBkZXZpY2UgaXMgb2ZmbGluZS4gIElmIGEgcGFnZSBvZiB0aGlzIHR5cGUgZXhpc3RzLCBpdCBpcyBjYWNoZWQgYnkgdGhlIHNlcnZpY2Ugd29ya2VyLiAgT25seSBvbmUgcGFnZSBvZiB0aGlzIHR5cGUgaXMgcGVybWl0dGVkLjwvcD4KPHA+Q3JlYXRpbmcgYW4gb2ZmbGluZSBwYWdlIHJlcXVpcmVzIHNwZWNpYWwgY29uc2lkZXJhdGlvbjo8L3A+Cjx1bGw+CiAgIDxsaT5BbGwgYXNzZXRzIHVzZWQgYnkgdGhlIG9mZmxpbmUgcGFnZSBtdXN0IGJlIGNhY2hlZCBieSB0aGUgc2VydmljZSB3b3JrZXIKICAgICAgIDxwPlRoaXMgbWVhbnMgdGhhdCBlYWNoIGFzc2V0IHVzZWQgYnkgdGhlIG9mZmxpbmUgcGFnZSBtdXN0IGJlIHNwZWNpZmllZCBpbiB0aGUgIlN0YXRpYyBBc3NldHMiIHRhYiBvZiB0aGlzIG1vZHVsZSdzIGFkbWluIHBhbmVsLjwvcD4KICAgICAgIDxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gSXQgYWxzbyBtZWFucyB0aGF0IHlvdSBwcm9iYWJseSBjYW5ub3QgdXNlIHtjbXNfc3R5bGVzaGVldH0gaW4gdGhlIHBhZ2UgdGVtcGxhdGUgZm9yIHRoZSBlcnJvciBwYXRoIGFzIHRoaXMgcGF0aCBpcyBkeW5hbWljLiAgSSBzdWdnZXN0IHlvdSB1c2Ugc3RhdGljIHN0eWxlc2hlZXRzIHVuZGVyIHRoZSBhc3NldHMgcGF0aCBmb3IgdGhpcyBwYWdlLjwvcD4KICAgPC9saT4KICAgPGxpPlRoZSBvZmZsaW5lIHBhZ2Ugc2hvdWxkIG5vdCBtYWtlIGFueSBhamF4IHJlcXVlc3RzLCBvciBzdWJtaXQgZm9ybSByZXN1bHRzICh0aGV5IHdvdWxkIHByb2JhYmx5IGZhaWwgYW55d2F5cyk8L2xpPgogICA8bGk+SXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0aGUgb2ZmbGluZSBwYWdlIGhhdmUgYSByZWxvYWQgYnV0dG9uIG9yIGxpbmsgdG8gYWxsb3cgcmVsb2FkaW5nIHRoZSB3ZWJzaXRlIHdoZW4gdGhlIGRldmljZSBjb21lcyBiYWNrIG9ubGluZS48L2xpPgo8L3VsPgo8bGk+SXQgaXMgcG9zc2libGUgdG8gdXNlIGphdmFzY3JpcHQgZnVuY3Rpb25hbGl0eSBpbiB0aGUgb2ZmbGluZSBwYWdlIGFzIGxvbmcgYXMgdGhhdCBmdW5jdGlvbmFsaXR5IGRvZXMgbm90IHJlbHkgb24gZXh0ZXJuYWwgc2VydmljZXMuPC9saT4KCjxoMz5TdXBwb3J0PC9oMz4KPHA+VGhlIG1vZHVsZSBhdXRob3IgaXMgaW4gbm8gd2F5IG9ibGlnYXRlZCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoaXMgY29kZSBpbiBhbnkgZmFzaGlvbi4gIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5BIGJ1ZyB0cmFja2luZyBhbmQgZmVhdHVyZSByZXF1ZXN0IHN5c3RlbSBoYXMgYmVlbiBjcmVhdGVkIGZvciB0aGlzIG1vZHVsZSA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2Zyb250ZW5kdXNlcnMiPmhlcmU8L2E+LiAgUGxlYXNlIGJlIHZlcmJvc2UgYW5kIGRlc2NyaXB0aXZlIHdoZW4gc3VibWl0dGluZyBidWcgcmVwb3J0cyBhbmQgZmVhdHVyZSByZXF1ZXN0cywgYW5kIGZvciBidWcgcmVwb3J0cyBlbnN1cmUgdGhhdCB5b3UgaGF2ZSBwcm92aWRlZCBzdWZmaWNpZW50IGluZm9ybWF0aW9uIHRvIHJlbGlhYmx5IHJlcHJvZHVjZSB0aGUgaXNzdWUuPC9saT4KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi4gIFdoZW4gZGVzY3JpYmluZyBhbiBpc3N1ZSBwbGVhc2UgbWFrZSBhbiBlZmZvcnQgdG8gcHJvdmlkZSBhbGwgcmVsYXZhbnQgaW5mb3JtYXRpb24sIGEgdGhvcm91Z2ggZGVzY3JpcHRpb24gb2YgeW91ciBpc3N1ZSwgYW5kIHN0ZXBzIHRvIHJlcHJvZHVjZSBpdCBvciB5b3VyIGRpc2N1c3Npb24gbWF5IGJlIGlnbm9yZWQuPC9saT4KPGxpPlRoZSBhdXRob3IsIGNhbGd1eTEwMDAsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+CjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS4gIEhvd2V2ZXIsIHBsZWFzZSB1c2UgdGhpcyBhcyBhIGxhc3QgcmVzb3J0LCBhbmQgZW5zdXJlIHRoYXQgeW91IGhhdmUgZm9sbG93ZWQgYWxsIGFwcGxpY2FibGUgaW5zdHJ1Y3Rpb25zIG9uIHRoZSBmb3JnZSwgaW4gdGhlIGZvcnVtcywgZXRjLjwvbGk+CjwvdWw+Cgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA4LCBSb2JlcnQgQ2FtcGJlbGwgPGEgaHJlZj0ibWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciPiZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4Kc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+PC9wPgo8aDM+RGVwZW5kZW5jaWVzPC9oMz48dWw+PGxpPkNHRXh0ZW5zaW9ucyA9Jmd0OyAxLjUzLjEwPC9saT48L3VsPg==]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBjYWxndXkxMDAwICZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMC4xPGJyIC8+]]></about>
	<description><![CDATA[-- Missing Languagestring: moddescription --]]></description>
	<requires>
	  <requiredname>CGExtensions</requiredname>
	  <requiredversion>1.53.10</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHU2ltcGxlUFdBOwp1c2UgQ0dTaW1wbGVQV0E7CmlmKCAhJGdDbXMgKSBleGl0OwovLyBpZiggISRnQ21zLT5pc19odHRwc19yZXF1ZXN0KCkgKSByZXR1cm47IC8vIGh0dHBzIG9ubHkKCiRnZXRfc2l6ZSA9IGZ1bmN0aW9uKCAkc3RyICkgewogICAgJHRtcCA9IGV4cGxvZGUoJ3gnLCRzdHIsMik7CiAgICByZXR1cm4gKGludCkgJHRtcFswXTsKfTsKCi8vIG91dHB1dCB0aGUgbWV0YSB0YWcgZm9yIHRoZSBzaXRlbWFwLnhtbAokcHJlZnMgPSAkdGhpcy0+c3RvcmFnZSgpLT5sb2FkUHJlZnMoKTsKaWYoICRwcmVmcy0+aW5jbHVkZV9zdyApICR0aGlzLT5nZW5lcmF0b3IoKS0+YXV0b0dlbmVyYXRlU2VydmljZVdvcmtlcigpOwoKLy8gZmluZCB0aGUgc21hbGxlc3QgaWNvbiB0aGF0IGlzID4gMTgweDE4MAokaWNvbl9zcmMgPSBudWxsOwokaWNvbl9zaXplID0gMTAwMDAwMDsKZm9yZWFjaCggJHByZWZzLT5pY29ucyBhcyAkaWNvbiApIHsKICAgICR0X3NpemUgPSAkZ2V0X3NpemUoJGljb25bJ3NpemVzJ10pOwogICAgaWYoICR0X3NpemUgPj0gMTgwICYmICR0X3NpemUgPCAkaWNvbl9zaXplICkgewogICAgICAgICRpY29uX3NyYyA9ICRpY29uWydzcmMnXTsKICAgICAgICAkaWNvbl9zaXplID0gJHRfc2l6ZTsKICAgIH0KfQoKJHRwbCA9ICRzbWFydHktPkNyZWF0ZVRlbXBsYXRlKCAkdGhpcy0+R2V0VGVtcGxhdGVSZXNvdXJjZSgnZGVmYXVsdC50cGwnKSwgbnVsbCwgbnVsbCwgJHNtYXJ0eSk7CiR0cGwtPmFzc2lnbigncHJlZnMnLCAkcHJlZnMpOwokdHBsLT5hc3NpZ24oJ21hbmlmZXN0X3VybCcsIENNU19ST09UX1VSTC4nLycuQ0dTaW1wbGVQV0E6Ok1BTklGRVNUX0ZJTEVOQU1FKTsKJHRwbC0+YXNzaWduKCJtYW5pZmVzdF9wYXRoIiwgJy8nLkNHU2ltcGxlUFdBOjpNQU5JRkVTVF9GSUxFTkFNRSk7CiR0cGwtPmFzc2lnbignaW5pdGpzX3VybCcsICR0aGlzLT5HZXRNb2R1bGVVcmxQYXRoKCkuJy9qcy9jZ3B3YS5qcycpOwokdHBsLT5hc3NpZ24oJ2ljb25fMTgwJywgJGNvbmZpZ1snYXNzZXRzX3VybCddLicvJy4kaWNvblsnc3JjJ10pOwokdHBsLT5kaXNwbGF5KCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHU2ltcGxlUFdBOwp1c2UgY2dlX2ltYWdlOyAvLyBDR0V4dGVuc2lvbnMKCnRyeSB7CiAgICAkcHJlZnMgPSAkdGhpcy0+c3RvcmFnZSgpLT5sb2FkUHJlZnMoKTsKCiAgICBpZiggIWVtcHR5KCRfUE9TVCkgKSB7CgogICAgICAgIGlmKCBpc3NldCgkX1BPU1RbJ3N1Ym1pdCddKSApIHsKICAgICAgICAgICAgLy8gc2F2ZSBzZXR0aW5ncwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJGFyciA9IG51bGw7CiAgICAgICAgICAgICAgICAkYXJyWyduYW1lJ10gPSBmaWx0ZXJfdmFyKCAkX1BPU1RbJ25hbWUnXSwgRklMVEVSX1NBTklUSVpFX1NUUklORyApOwogICAgICAgICAgICAgICAgJGFyclsnc2hvcnRfbmFtZSddID0gZmlsdGVyX3ZhciggJF9QT1NUWydzaG9ydF9uYW1lJ10sIEZJTFRFUl9TQU5JVElaRV9TVFJJTkcgKTsKICAgICAgICAgICAgICAgICRhcnJbJ2Rlc2NyaXB0aW9uJ10gPSBmaWx0ZXJfdmFyKCAkX1BPU1RbJ2Rlc2NyaXB0aW9uJ10sIEZJTFRFUl9TQU5JVElaRV9TVFJJTkcgKTsKICAgICAgICAgICAgICAgICRhcnJbJ2JhY2tncm91bmRfY29sb3InXSA9IGZpbHRlcl92YXIoICRfUE9TVFsnYmFja2dyb3VuZF9jb2xvciddLCBGSUxURVJfU0FOSVRJWkVfU1RSSU5HICk7CiAgICAgICAgICAgICAgICAkYXJyWyd0aGVtZV9jb2xvciddID0gZmlsdGVyX3ZhciggJF9QT1NUWyd0aGVtZV9jb2xvciddLCBGSUxURVJfU0FOSVRJWkVfU1RSSU5HICk7CiAgICAgICAgICAgICAgICAkYXJyWydkaXNwbGF5J10gPSBmaWx0ZXJfdmFyKCAkX1BPU1RbJ2Rpc3BsYXknXSwgRklMVEVSX1NBTklUSVpFX1NUUklORyApOwogICAgICAgICAgICAgICAgJGFyclsnb3JpZW50YXRpb24nXSA9IGZpbHRlcl92YXIoICRfUE9TVFsnb3JpZW50YXRpb24nXSwgRklMVEVSX1NBTklUSVpFX1NUUklORyApOwogICAgICAgICAgICAgICAgJGFyclsnaW5jbHVkZV9zdyddID0gY21zX3RvX2Jvb2woICRfUE9TVFsndXNlX3N3J10gKTsKICAgICAgICAgICAgICAgICRhcnJbJ2luY2x1ZGVfaW9zbWV0YSddID0gY21zX3RvX2Jvb2woICRfUE9TVFsndXNlX2lvc21ldGEnXSApOwogICAgICAgICAgICAgICAgJGFyclsnc3RhcnRfcGFnZSddID0gKGludCkgJF9QT1NUWydzdGFydHBhZ2UnXTsKCiAgICAgICAgICAgICAgICAkbWFzdGVyX2ljb24gPSAkYXJyWydtYXN0ZXJfaWNvbiddID0gZmlsdGVyX3ZhciggJF9QT1NUWydtYXN0ZXJfaWNvbiddLCBGSUxURVJfU0FOSVRJWkVfU1RSSU5HICk7CiAgICAgICAgICAgICAgICBpZiggISRtYXN0ZXJfaWNvbiApIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oICR0aGlzLT5MYW5nKCdlcnJfbm9pbWFnZScpICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7CiAgICAgICAgICAgICAgICAgICAgJG1hc3Rlcl9mbiA9ICRjb25maWdbJ3VwbG9hZHNfcGF0aCddLicvJy4kbWFzdGVyX2ljb247CiAgICAgICAgICAgICAgICAgICAgaWYoICFpc19maWxlKCAkbWFzdGVyX2ZuICkgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oICR0aGlzLT5MYW5nKCdlcnJfZmlsZW5vdGZvdW5kJykgKTsKCiAgICAgICAgICAgICAgICAgICAgJGRlc2lyZWRfc2l6ZXMgPSBbIDEwMjQsIDUxMiwgMjU2LCAxOTIsIDE4MCwgMTY3LCAxNTIsIDE0NCwgMTI4LCA2NCwgMTYgXTsKICAgICAgICAgICAgICAgICAgICAkc2l6ZSA9IGdldGltYWdlc2l6ZSgkbWFzdGVyX2ZuKTsKICAgICAgICAgICAgICAgICAgICBpZiggISRzaXplICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCAkdGhpcy0+TGFuZygnZXJyX25vaW1hZ2VzaXplJykgKTsKCiAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAoIWVtcHR5KCRzaXplWydtaW1lJ10pKSA/ICRzaXplWydtaW1lJ10gOiBudWxsOwogICAgICAgICAgICAgICAgICAgICRvcmlnX3dpZHRoID0gJHNpemVbMF07CiAgICAgICAgICAgICAgICAgICAgJG9yaWdfaGVpZ2h0ID0gJHNpemVbMV07CiAgICAgICAgICAgICAgICAgICAgaWYoICRvcmlnX3dpZHRoIDwgNTEyICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCAkdGhpcy0+TGFuZygnZXJyX2ltYWdlc2l6ZScsICRkZXNpcmVkX3NpemVzWzBdICkgKTsKICAgICAgICAgICAgICAgICAgICBpZiggJG9yaWdfd2lkdGggIT0gJG9yaWdfaGVpZ2h0ICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCAkdGhpcy0+TGFuZygnZXJyX2ltZ25vdHNxdWFyZScpICk7CiAgICAgICAgICAgICAgICAgICAgaWYoICEkdHlwZSB8fCAhc3RhcnRzd2l0aCgkdHlwZSwnaW1hZ2UvJykgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oICR0aGlzLT5MYW5nKCdlcnJfaW1hZ2V0eXBlJykgKTsKICAgICAgICAgICAgICAgICAgICAkZXh0ID0gc3Vic3RyKHN0cnJjaHIoJG1hc3Rlcl9mbiwgJy4nKSwgMSk7CgogICAgICAgICAgICAgICAgICAgIC8vIG5vdywgZ2l2ZW4gc29tZSBzaXplcy4uLiB3ZSB0cnkgdG8gZ2VuZXJhdGUgc29tZSBpY29ucwogICAgICAgICAgICAgICAgICAgICRkZXN0cGF0aCA9ICRjb25maWdbJ2Fzc2V0c19wYXRoJ10uJy9pY29ucyc7CiAgICAgICAgICAgICAgICAgICAgaWYoICFpc19kaXIoICRkZXN0cGF0aCApICkgewogICAgICAgICAgICAgICAgICAgICAgICAkcmVzID0gbWtkaXIoICRkZXN0cGF0aCApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiggISRyZXMgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oICR0aGlzLT5MYW5nKCdlcnJfbWtkaXInLCRkZXN0cGF0aCkgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYoICFpc193cml0YWJsZSggJGRlc3RwYXRoICkgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oICR0aGlzLT5MYW5nKCdlcnJfd3JpdGFibGUnKSApOwogICAgICAgICAgICAgICAgICAgICRhcnJbJ2ljb25zJ10gPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2goICRkZXNpcmVkX3NpemVzIGFzICRzaXplICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiggJG9yaWdfd2lkdGggPCAkc2l6ZSApIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAkZm5hbWUgPSAicHdhX2ljb25feyRzaXplfS57JGV4dH0iOwogICAgICAgICAgICAgICAgICAgICAgICAkb3V0ZmlsZSA9ICIkZGVzdHBhdGgvJGZuYW1lIjsKICAgICAgICAgICAgICAgICAgICAgICAgY2dlX2ltYWdlOjpyZXNpemUoICRtYXN0ZXJfZm4sICRvdXRmaWxlLCAkc2l6ZSwgJHNpemUgKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHJlYyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAkcmVjWydzcmMnXSA9ICRjb25maWdbJ2Fzc2V0c19kaXInXS4iL2ljb25zL3skZm5hbWV9IjsKICAgICAgICAgICAgICAgICAgICAgICAgJHJlY1snc2l6ZXMnXT0gInskc2l6ZX14eyRzaXplfSI7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vJHJlY1snd2lkdGgnXSA9ICRzaXplOwogICAgICAgICAgICAgICAgICAgICAgICAvLyRyZWNbJ2hlaWdodCddID0gJHNpemU7CiAgICAgICAgICAgICAgICAgICAgICAgICRyZWNbJ3R5cGUnXSA9ICR0eXBlOwogICAgICAgICAgICAgICAgICAgICAgICAkYXJyWydpY29ucyddW10gPSAkcmVjOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkcHJlZnMgPSBQcmVmczo6Y3JlYXRlX2Zyb21fYXJyYXkoICRhcnIgKTsKICAgICAgICAgICAgICAgICR0aGlzLT5zdG9yYWdlKCktPnNhdmVQcmVmcyggJHByZWZzICk7CgogICAgICAgICAgICAgICAgLy8gZ2VuZXJhdGUgdGhlIG1hbmlmZXN0LnhtbAogICAgICAgICAgICAgICAgJHRoaXMtPmdlbmVyYXRvcigpLT5nZW5lcmF0ZU1hbmlmZXN0KCAkcHJlZnMgKTsKCiAgICAgICAgICAgICAgICAvLyBnZW5lcmF0ZSBzZXJ2aWNlIHdvcmtlcgogICAgICAgICAgICAgICAgLy8gJHRoaXMtPmdlbmVyYXRlU2VydmljZVdvcmtlciggJHByZWZzLCB0aW1lKCkgKTsKCiAgICAgICAgICAgICAgICBlY2hvICR0aGlzLT5TaG93TWVzc2FnZSggJHRoaXMtPkxhbmcoJ21zZ19zYXZlZCcpICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCAkZS0+R2V0TWVzc2FnZSgpICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGVsc2UgaWYoICRfUE9TVFsnc3VibWl0X3N0YXRpYyddICkgewogICAgICAgICAgICAvLyBwYXJzZSBhbmQgc2F2ZSBzdGF0aWMgdGV4dC4KICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRzdGF0aWNfdGV4dCA9IGZpbHRlcl92YXIoICRfUE9TVFsnc3RhdGljJ10sIEZJTFRFUl9TQU5JVElaRV9TVFJJTkcgKTsKICAgICAgICAgICAgICAgICR0aGlzLT5zdG9yYWdlKCktPnNldFN0YXRpY1RleHQoICRzdGF0aWNfdGV4dCApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAgICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycyggJGUtPkdldE1lc3NhZ2UoKSApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICRzdGF0aWNfdGV4dCA9ICR0aGlzLT5zdG9yYWdlKCktPmdldFN0YXRpY1RleHQoKTsKICAgICRkaXNwbGF5X2xpc3QgPQogICAgICAgIFsKICAgICAgICAgICAgUHJlZnM6OkRJU1BMQVlfU1RBTkRBTE9ORSA9PiAkdGhpcy0+TGFuZygnZGlzcGxheV9zdGFuZGFsb25lJyksCiAgICAgICAgICAgIFByZWZzOjpESVNQTEFZX0JST1dTRVIgPT4gJHRoaXMtPkxhbmcoJ2Rpc3BsYXlfYnJvd3NlcicpLAogICAgICAgICAgICBQcmVmczo6RElTUExBWV9GVUxMU0NSRUVOID0+ICR0aGlzLT5MYW5nKCdkaXNwbGF5X2Z1bGxzY3JlZW4nKSwKICAgICAgICAgICAgUHJlZnM6OkRJU1BMQVlfTUlOSU1BTFVJID0+ICR0aGlzLT5MYW5nKCdkaXNwbGF5X21pbmltYWx1aScpLAogICAgICAgIF07CiAgICAkb3JpZW50YXRpb25fbGlzdCA9CiAgICAgICAgWwogICAgICAgICAgICBQcmVmczo6T1JJRU5UQVRJT05fREZMVCA9PiAkdGhpcy0+TGFuZygnb3JpZW50YXRpb25fZGZsdCcpLAogICAgICAgICAgICBQcmVmczo6T1JJRU5UQVRJT05fUE9SVFJBSVQgPT4gJHRoaXMtPkxhbmcoJ29yaWVudGF0aW9uX3BvcnRyYWl0JyksCiAgICAgICAgICAgIFByZWZzOjpPUklFTlRBVElPTl9MQU5EU0NBUEUgPT4gJHRoaXMtPkxhbmcoJ29yaWVudGF0aW9uX2xhbmRzY2FwZScpLAogICAgICAgIF07CiAgICAkdHBsID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoICR0aGlzLT5HZXRUZW1wbGF0ZVJlc291cmNlKCAnZGVmYXVsdGFkbWluLnRwbCcpICk7CiAgICAkdHBsLT5hc3NpZ24oJ3ByZWZzJywkcHJlZnMpOwogICAgJHRwbC0+YXNzaWduKCdkaXNwbGF5X2xpc3QnLCRkaXNwbGF5X2xpc3QpOwogICAgJHRwbC0+YXNzaWduKCdvcmllbnRhdGlvbl9saXN0Jywkb3JpZW50YXRpb25fbGlzdCk7CiAgICAkdHBsLT5hc3NpZ24oJ3N0YXRpY190ZXh0Jywkc3RhdGljX3RleHQpOwogICAgJHRwbC0+ZGlzcGxheSgpOwp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycyggJGUtPkdldE1lc3NhZ2UoKSApOwp9]]></data>
	</file>
	<file>
	  <filename>/action.manifest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHU2ltcGxlUFdBOwoKJGhhbmRsZXJzID0gb2JfbGlzdF9oYW5kbGVycygpOwpmb3IgKCRjbnQgPSAwOyAkY250IDwgc2l6ZW9mKCRoYW5kbGVycyk7ICRjbnQrKykgeyBvYl9lbmRfY2xlYW4oKTsgfQokaGVhZGVyKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL21hbmlmZXN0K2pzb24nKTsKCiR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSggJHRoaXMtPkdldFRlbXBsYXRlUmVzb3VyY2UoJ21hbmlmZXN0LnRwbCcpICk7CiR0cGwtPmRpc3BsYXkoKTsKCmV4aXQ7]]></data>
	</file>
	<file>
	  <filename>/CGSimplePWA.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKdXNlIENHU2ltcGxlUFdBXFByZWZzOwp1c2UgQ0dTaW1wbGVQV0FcT2ZmbGluZVBhZ2VUeXBlOwp1c2UgQ0dTaW1wbGVQV0FcU3RvcmFnZTsKdXNlIENHU2ltcGxlUFdBXEdlbmVyYXRvcjsKCmZpbmFsIGNsYXNzIENHU2ltcGxlUFdBIGV4dGVuZHMgQ0dFeHRlbnNpb25zCnsKICAgIGNvbnN0IE1BTklGRVNUX0ZJTEVOQU1FID0gJ2NncHdhX21hbmlmZXN0Lmpzb24nOwogICAgY29uc3QgV09SS0VSX0ZJTEVOQU1FID0gJ2NncHdhX3NlcnZpY2V3b3JrZXIuanMnOwoKICAgIHByaXZhdGUgJHNlcnZpY2VXb3JrZXJBZGRvbnM7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICBzdGF0aWMgJF9pbml0aWFsaXplZDsKICAgICAgICBpZiggJF9pbml0aWFsaXplZCApIHJldHVybjsKICAgICAgICAkX2luaXRpYWxpemVkID0gdHJ1ZTsKCiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgpOwoKICAgICAgICAkY29udGVudG9wcyA9IENvbnRlbnRPcGVyYXRpb25zOjpnZXRfaW5zdGFuY2UoKTsKCiAgICAgICAgJG9iaiA9IG5ldyBDbXNDb250ZW50VHlwZVBsYWNlaG9sZGVyKCk7CiAgICAgICAgJG9iai0+Y2xhc3MgPSAnQ0dTaW1wbGVQV0FcXE9mZmxpbmVQYWdlVHlwZSc7CiAgICAgICAgJG9iai0+dHlwZSA9ICdjZ3B3YV9vZmZsaW5lcGFnZXR5cGUnOwogICAgICAgICRvYmotPmZpbGVuYW1lID0gX19ESVJfXy4nL2xpYi9jbGFzcy5PZmZsaW5lUGFnZVR5cGUucGhwJzsKICAgICAgICAkb2JqLT5sb2FkZWQgPSBmYWxzZTsKICAgICAgICAkb2JqLT5mcmllbmRseW5hbWUgPSAkdGhpcy0+TGFuZygnY29udGVudHR5cGVfb2ZmbGluZXBhZ2UnKTsKICAgICAgICAkY29udGVudG9wcy0+cmVnaXN0ZXJfY29udGVudF90eXBlKCRvYmopOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRWZXJzaW9uKCkgeyByZXR1cm4gJzEuMC4xJzsgfQogICAgcHVibGljIGZ1bmN0aW9uIE1pbmltdW1DbXNWZXJzaW9uKCkgeyByZXR1cm4gJzIuMi44JzsgfQogICAgcHVibGljIGZ1bmN0aW9uIEhhc0FkbWluKCkgeyByZXR1cm4gVFJVRTsgfQogICAgcHVibGljIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkgeyByZXR1cm4gVFJVRTsgfQogICAgcHVibGljIGZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKSB7IHJldHVybiAkdGhpcy0+TGFuZygnbW9kZGVzY3JpcHRpb24nKTsgfQogICAgcHVibGljIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpIHsgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJyk7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXREZXBlbmRlbmNpZXMoKSB7IHJldHVybiBbJ0NHRXh0ZW5zaW9ucyc9PicxLjUzLjEwJ107IH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gSW5pdGlhbGl6ZUZyb250ZW5kKCkKICAgIHsKICAgICAgICAkdGhpcy0+UmVnaXN0ZXJNb2R1bGVQbHVnaW4oKTsKICAgIH0KCiAgICAvLy8vIC0tLS0gTXkgZnVuY3Rpb25zIC0tLS0gLy8vLwoKICAgIHB1YmxpYyBmdW5jdGlvbiByZWdpc3RlclNlcnZpY2VXb3JrZXJBZGRvbiggU2VydmljZVdvcmtlckFkZG9uICRvYmogKQogICAgewogICAgICAgICR0aGlzLT5zZXJ2aWNlV29ya2VyQWRkb25zW10gPSAkb2JqOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRTZXJ2aWNlV29ya2VyQWRkb25zKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNlcnZpY2VXb3JrZXJBZGRvbnM7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHN0b3JhZ2UoKQogICAgewogICAgICAgIHN0YXRpYyAkX29iajsKICAgICAgICBpZiggISRfb2JqICkgJF9vYmogPSBuZXcgU3RvcmFnZSggJHRoaXMgKTsKICAgICAgICByZXR1cm4gJF9vYmo7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdlbmVyYXRvcigpCiAgICB7CiAgICAgICAgc3RhdGljICRfb2JqOwogICAgICAgIGlmKCAhJF9vYmogKSAkX29iaiA9IG5ldyBHZW5lcmF0b3IoICR0aGlzLCAkdGhpcy0+c3RvcmFnZSgpICk7CiAgICAgICAgcmV0dXJuICRfb2JqOwogICAgfQp9IC8vIGVuZCBvZiBjbGFzcwo=]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/COPYING</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMiwgSnVuZSAxOTkxCgogQ29weXJpZ2h0IChDKSAxOTg5LCAxOTkxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUKCiAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgpmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgaXQuICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwpMaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBmcmVlCnNvZnR3YXJlLS10byBtYWtlIHN1cmUgdGhlIHNvZnR3YXJlIGlzIGZyZWUgZm9yIGFsbCBpdHMgdXNlcnMuICBUaGlzCkdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBtb3N0IG9mIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24ncyBzb2Z0d2FyZSBhbmQgdG8gYW55IG90aGVyIHByb2dyYW0gd2hvc2UgYXV0aG9ycyBjb21taXQgdG8KdXNpbmcgaXQuICAoU29tZSBvdGhlciBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gc29mdHdhcmUgaXMgY292ZXJlZCBieQp0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluc3RlYWQuKSAgWW91IGNhbiBhcHBseSBpdCB0bwp5b3VyIHByb2dyYW1zLCB0b28uCgogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQpoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCnRoaXMgc2VydmljZSBpZiB5b3Ugd2lzaCksIHRoYXQgeW91IHJlY2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldCBpdAppZiB5b3Ugd2FudCBpdCwgdGhhdCB5b3UgY2FuIGNoYW5nZSB0aGUgc29mdHdhcmUgb3IgdXNlIHBpZWNlcyBvZiBpdAppbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuCgogIFRvIHByb3RlY3QgeW91ciByaWdodHMsIHdlIG5lZWQgdG8gbWFrZSByZXN0cmljdGlvbnMgdGhhdCBmb3JiaWQKYW55b25lIHRvIGRlbnkgeW91IHRoZXNlIHJpZ2h0cyBvciB0byBhc2sgeW91IHRvIHN1cnJlbmRlciB0aGUgcmlnaHRzLgpUaGVzZSByZXN0cmljdGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3IgeW91IGlmIHlvdQpkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgc29mdHdhcmUsIG9yIGlmIHlvdSBtb2RpZnkgaXQuCgogIEZvciBleGFtcGxlLCBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2Ygc3VjaCBhIHByb2dyYW0sIHdoZXRoZXIKZ3JhdGlzIG9yIGZvciBhIGZlZSwgeW91IG11c3QgZ2l2ZSB0aGUgcmVjaXBpZW50cyBhbGwgdGhlIHJpZ2h0cyB0aGF0CnlvdSBoYXZlLiAgWW91IG11c3QgbWFrZSBzdXJlIHRoYXQgdGhleSwgdG9vLCByZWNlaXZlIG9yIGNhbiBnZXQgdGhlCnNvdXJjZSBjb2RlLiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIKcmlnaHRzLgoKICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggdHdvIHN0ZXBzOiAoMSkgY29weXJpZ2h0IHRoZSBzb2Z0d2FyZSwgYW5kCigyKSBvZmZlciB5b3UgdGhpcyBsaWNlbnNlIHdoaWNoIGdpdmVzIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHksCmRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGUgc29mdHdhcmUuCgogIEFsc28sIGZvciBlYWNoIGF1dGhvcidzIHByb3RlY3Rpb24gYW5kIG91cnMsIHdlIHdhbnQgdG8gbWFrZSBjZXJ0YWluCnRoYXQgZXZlcnlvbmUgdW5kZXJzdGFuZHMgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlCnNvZnR3YXJlLiAgSWYgdGhlIHNvZnR3YXJlIGlzIG1vZGlmaWVkIGJ5IHNvbWVvbmUgZWxzZSBhbmQgcGFzc2VkIG9uLCB3ZQp3YW50IGl0cyByZWNpcGllbnRzIHRvIGtub3cgdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsLCBzbwp0aGF0IGFueSBwcm9ibGVtcyBpbnRyb2R1Y2VkIGJ5IG90aGVycyB3aWxsIG5vdCByZWZsZWN0IG9uIHRoZSBvcmlnaW5hbAphdXRob3JzJyByZXB1dGF0aW9ucy4KCiAgRmluYWxseSwgYW55IGZyZWUgcHJvZ3JhbSBpcyB0aHJlYXRlbmVkIGNvbnN0YW50bHkgYnkgc29mdHdhcmUKcGF0ZW50cy4gIFdlIHdpc2ggdG8gYXZvaWQgdGhlIGRhbmdlciB0aGF0IHJlZGlzdHJpYnV0b3JzIG9mIGEgZnJlZQpwcm9ncmFtIHdpbGwgaW5kaXZpZHVhbGx5IG9idGFpbiBwYXRlbnQgbGljZW5zZXMsIGluIGVmZmVjdCBtYWtpbmcgdGhlCnByb2dyYW0gcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHdlIGhhdmUgbWFkZSBpdCBjbGVhciB0aGF0IGFueQpwYXRlbnQgbXVzdCBiZSBsaWNlbnNlZCBmb3IgZXZlcnlvbmUncyBmcmVlIHVzZSBvciBub3QgbGljZW5zZWQgYXQgYWxsLgoKICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAptb2RpZmljYXRpb24gZm9sbG93LgoKICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgQ09QWUlORywgRElTVFJJQlVUSU9OIEFORCBNT0RJRklDQVRJT04KCiAgMC4gVGhpcyBMaWNlbnNlIGFwcGxpZXMgdG8gYW55IHByb2dyYW0gb3Igb3RoZXIgd29yayB3aGljaCBjb250YWlucwphIG5vdGljZSBwbGFjZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXIgc2F5aW5nIGl0IG1heSBiZSBkaXN0cmlidXRlZAp1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhlICJQcm9ncmFtIiwgYmVsb3csCnJlZmVycyB0byBhbnkgc3VjaCBwcm9ncmFtIG9yIHdvcmssIGFuZCBhICJ3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtIgptZWFucyBlaXRoZXIgdGhlIFByb2dyYW0gb3IgYW55IGRlcml2YXRpdmUgd29yayB1bmRlciBjb3B5cmlnaHQgbGF3Ogp0aGF0IGlzIHRvIHNheSwgYSB3b3JrIGNvbnRhaW5pbmcgdGhlIFByb2dyYW0gb3IgYSBwb3J0aW9uIG9mIGl0LAplaXRoZXIgdmVyYmF0aW0gb3Igd2l0aCBtb2RpZmljYXRpb25zIGFuZC9vciB0cmFuc2xhdGVkIGludG8gYW5vdGhlcgpsYW5ndWFnZS4gIChIZXJlaW5hZnRlciwgdHJhbnNsYXRpb24gaXMgaW5jbHVkZWQgd2l0aG91dCBsaW1pdGF0aW9uIGluCnRoZSB0ZXJtICJtb2RpZmljYXRpb24iLikgIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLgoKQWN0aXZpdGllcyBvdGhlciB0aGFuIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQgbW9kaWZpY2F0aW9uIGFyZSBub3QKY292ZXJlZCBieSB0aGlzIExpY2Vuc2U7IHRoZXkgYXJlIG91dHNpZGUgaXRzIHNjb3BlLiAgVGhlIGFjdCBvZgpydW5uaW5nIHRoZSBQcm9ncmFtIGlzIG5vdCByZXN0cmljdGVkLCBhbmQgdGhlIG91dHB1dCBmcm9tIHRoZSBQcm9ncmFtCmlzIGNvdmVyZWQgb25seSBpZiBpdHMgY29udGVudHMgY29uc3RpdHV0ZSBhIHdvcmsgYmFzZWQgb24gdGhlClByb2dyYW0gKGluZGVwZW5kZW50IG9mIGhhdmluZyBiZWVuIG1hZGUgYnkgcnVubmluZyB0aGUgUHJvZ3JhbSkuCldoZXRoZXIgdGhhdCBpcyB0cnVlIGRlcGVuZHMgb24gd2hhdCB0aGUgUHJvZ3JhbSBkb2VzLgoKICAxLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mIHRoZSBQcm9ncmFtJ3MKc291cmNlIGNvZGUgYXMgeW91IHJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91CmNvbnNwaWN1b3VzbHkgYW5kIGFwcHJvcHJpYXRlbHkgcHVibGlzaCBvbiBlYWNoIGNvcHkgYW4gYXBwcm9wcmlhdGUKY29weXJpZ2h0IG5vdGljZSBhbmQgZGlzY2xhaW1lciBvZiB3YXJyYW50eTsga2VlcCBpbnRhY3QgYWxsIHRoZQpub3RpY2VzIHRoYXQgcmVmZXIgdG8gdGhpcyBMaWNlbnNlIGFuZCB0byB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7CmFuZCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBQcm9ncmFtIGEgY29weSBvZiB0aGlzIExpY2Vuc2UKYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4KCllvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksIGFuZAp5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEgZmVlLgoKICAyLiBZb3UgbWF5IG1vZGlmeSB5b3VyIGNvcHkgb3IgY29waWVzIG9mIHRoZSBQcm9ncmFtIG9yIGFueSBwb3J0aW9uCm9mIGl0LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBhbmQgY29weSBhbmQKZGlzdHJpYnV0ZSBzdWNoIG1vZGlmaWNhdGlvbnMgb3Igd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiAxCmFib3ZlLCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6CgogICAgYSkgWW91IG11c3QgY2F1c2UgdGhlIG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCiAgICBzdGF0aW5nIHRoYXQgeW91IGNoYW5nZWQgdGhlIGZpbGVzIGFuZCB0aGUgZGF0ZSBvZiBhbnkgY2hhbmdlLgoKICAgIGIpIFlvdSBtdXN0IGNhdXNlIGFueSB3b3JrIHRoYXQgeW91IGRpc3RyaWJ1dGUgb3IgcHVibGlzaCwgdGhhdCBpbgogICAgd2hvbGUgb3IgaW4gcGFydCBjb250YWlucyBvciBpcyBkZXJpdmVkIGZyb20gdGhlIFByb2dyYW0gb3IgYW55CiAgICBwYXJ0IHRoZXJlb2YsIHRvIGJlIGxpY2Vuc2VkIGFzIGEgd2hvbGUgYXQgbm8gY2hhcmdlIHRvIGFsbCB0aGlyZAogICAgcGFydGllcyB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgoKICAgIGMpIElmIHRoZSBtb2RpZmllZCBwcm9ncmFtIG5vcm1hbGx5IHJlYWRzIGNvbW1hbmRzIGludGVyYWN0aXZlbHkKICAgIHdoZW4gcnVuLCB5b3UgbXVzdCBjYXVzZSBpdCwgd2hlbiBzdGFydGVkIHJ1bm5pbmcgZm9yIHN1Y2gKICAgIGludGVyYWN0aXZlIHVzZSBpbiB0aGUgbW9zdCBvcmRpbmFyeSB3YXksIHRvIHByaW50IG9yIGRpc3BsYXkgYW4KICAgIGFubm91bmNlbWVudCBpbmNsdWRpbmcgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSBhbmQgYQogICAgbm90aWNlIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgKG9yIGVsc2UsIHNheWluZyB0aGF0IHlvdSBwcm92aWRlCiAgICBhIHdhcnJhbnR5KSBhbmQgdGhhdCB1c2VycyBtYXkgcmVkaXN0cmlidXRlIHRoZSBwcm9ncmFtIHVuZGVyCiAgICB0aGVzZSBjb25kaXRpb25zLCBhbmQgdGVsbGluZyB0aGUgdXNlciBob3cgdG8gdmlldyBhIGNvcHkgb2YgdGhpcwogICAgTGljZW5zZS4gIChFeGNlcHRpb246IGlmIHRoZSBQcm9ncmFtIGl0c2VsZiBpcyBpbnRlcmFjdGl2ZSBidXQKICAgIGRvZXMgbm90IG5vcm1hbGx5IHByaW50IHN1Y2ggYW4gYW5ub3VuY2VtZW50LCB5b3VyIHdvcmsgYmFzZWQgb24KICAgIHRoZSBQcm9ncmFtIGlzIG5vdCByZXF1aXJlZCB0byBwcmludCBhbiBhbm5vdW5jZW1lbnQuKQoKVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgppZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtLAphbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KdGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQpzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCm9uIHRoZSBQcm9ncmFtLCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgp0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQplbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUgaXQuCgpUaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKeW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCmV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgpjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBQcm9ncmFtLgoKSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgUHJvZ3JhbQp3aXRoIHRoZSBQcm9ncmFtIChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSkgb24gYSB2b2x1bWUgb2YKYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KCiAgMy4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhIHdvcmsgYmFzZWQgb24gaXQsCnVuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcyBvZgpTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gZG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6CgogICAgYSkgQWNjb21wYW55IGl0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZQogICAgc291cmNlIGNvZGUsIHdoaWNoIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zCiAgICAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlOyBvciwKCiAgICBiKSBBY2NvbXBhbnkgaXQgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFzdCB0aHJlZQogICAgeWVhcnMsIHRvIGdpdmUgYW55IHRoaXJkIHBhcnR5LCBmb3IgYSBjaGFyZ2Ugbm8gbW9yZSB0aGFuIHlvdXIKICAgIGNvc3Qgb2YgcGh5c2ljYWxseSBwZXJmb3JtaW5nIHNvdXJjZSBkaXN0cmlidXRpb24sIGEgY29tcGxldGUKICAgIG1hY2hpbmUtcmVhZGFibGUgY29weSBvZiB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZSwgdG8gYmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtCiAgICBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCgogICAgYykgQWNjb21wYW55IGl0IHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSByZWNlaXZlZCBhcyB0byB0aGUgb2ZmZXIKICAgIHRvIGRpc3RyaWJ1dGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZS4gIChUaGlzIGFsdGVybmF0aXZlIGlzCiAgICBhbGxvd2VkIG9ubHkgZm9yIG5vbmNvbW1lcmNpYWwgZGlzdHJpYnV0aW9uIGFuZCBvbmx5IGlmIHlvdQogICAgcmVjZWl2ZWQgdGhlIHByb2dyYW0gaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHdpdGggc3VjaAogICAgYW4gb2ZmZXIsIGluIGFjY29yZCB3aXRoIFN1YnNlY3Rpb24gYiBhYm92ZS4pCgpUaGUgc291cmNlIGNvZGUgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCm1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGFuIGV4ZWN1dGFibGUgd29yaywgY29tcGxldGUgc291cmNlCmNvZGUgbWVhbnMgYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55CmFzc29jaWF0ZWQgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0bwpjb250cm9sIGNvbXBpbGF0aW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGV4ZWN1dGFibGUuICBIb3dldmVyLCBhcyBhCnNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgc291cmNlIGNvZGUgZGlzdHJpYnV0ZWQgbmVlZCBub3QgaW5jbHVkZQphbnl0aGluZyB0aGF0IGlzIG5vcm1hbGx5IGRpc3RyaWJ1dGVkIChpbiBlaXRoZXIgc291cmNlIG9yIGJpbmFyeQpmb3JtKSB3aXRoIHRoZSBtYWpvciBjb21wb25lbnRzIChjb21waWxlciwga2VybmVsLCBhbmQgc28gb24pIG9mIHRoZQpvcGVyYXRpbmcgc3lzdGVtIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHJ1bnMsIHVubGVzcyB0aGF0IGNvbXBvbmVudAppdHNlbGYgYWNjb21wYW5pZXMgdGhlIGV4ZWN1dGFibGUuCgpJZiBkaXN0cmlidXRpb24gb2YgZXhlY3V0YWJsZSBvciBvYmplY3QgY29kZSBpcyBtYWRlIGJ5IG9mZmVyaW5nCmFjY2VzcyB0byBjb3B5IGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCB0aGVuIG9mZmVyaW5nIGVxdWl2YWxlbnQKYWNjZXNzIHRvIGNvcHkgdGhlIHNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2UgY291bnRzIGFzCmRpc3RyaWJ1dGlvbiBvZiB0aGUgc291cmNlIGNvZGUsIGV2ZW4gdGhvdWdoIHRoaXJkIHBhcnRpZXMgYXJlIG5vdApjb21wZWxsZWQgdG8gY29weSB0aGUgc291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLgoKICA0LiBZb3UgbWF5IG5vdCBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0KZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkgYXR0ZW1wdApvdGhlcndpc2UgdG8gY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gaXMKdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlLgpIb3dldmVyLCBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcywgb3IgcmlnaHRzLCBmcm9tIHlvdSB1bmRlcgp0aGlzIExpY2Vuc2Ugd2lsbCBub3QgaGF2ZSB0aGVpciBsaWNlbnNlcyB0ZXJtaW5hdGVkIHNvIGxvbmcgYXMgc3VjaApwYXJ0aWVzIHJlbWFpbiBpbiBmdWxsIGNvbXBsaWFuY2UuCgogIDUuIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UsIHNpbmNlIHlvdSBoYXZlIG5vdApzaWduZWQgaXQuICBIb3dldmVyLCBub3RoaW5nIGVsc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIG1vZGlmeSBvcgpkaXN0cmlidXRlIHRoZSBQcm9ncmFtIG9yIGl0cyBkZXJpdmF0aXZlIHdvcmtzLiAgVGhlc2UgYWN0aW9ucyBhcmUKcHJvaGliaXRlZCBieSBsYXcgaWYgeW91IGRvIG5vdCBhY2NlcHQgdGhpcyBMaWNlbnNlLiAgVGhlcmVmb3JlLCBieQptb2RpZnlpbmcgb3IgZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKUHJvZ3JhbSksIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLCBhbmQKYWxsIGl0cyB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW5nIG9yIG1vZGlmeWluZwp0aGUgUHJvZ3JhbSBvciB3b3JrcyBiYXNlZCBvbiBpdC4KCiAgNi4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpQcm9ncmFtKSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQpvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlIG9yIG1vZGlmeSB0aGUgUHJvZ3JhbSBzdWJqZWN0IHRvCnRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyCnJlc3RyaWN0aW9ucyBvbiB0aGUgcmVjaXBpZW50cycgZXhlcmNpc2Ugb2YgdGhlIHJpZ2h0cyBncmFudGVkIGhlcmVpbi4KWW91IGFyZSBub3QgcmVzcG9uc2libGUgZm9yIGVuZm9yY2luZyBjb21wbGlhbmNlIGJ5IHRoaXJkIHBhcnRpZXMgdG8KdGhpcyBMaWNlbnNlLgoKICA3LiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CmluZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksCmNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdApleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdApkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudApsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGJ5CmFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgp0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCnJlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0uCgpJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIKYW55IHBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0bwphcHBseSBhbmQgdGhlIHNlY3Rpb24gYXMgYSB3aG9sZSBpcyBpbnRlbmRlZCB0byBhcHBseSBpbiBvdGhlcgpjaXJjdW1zdGFuY2VzLgoKSXQgaXMgbm90IHRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiB0byBpbmR1Y2UgeW91IHRvIGluZnJpbmdlIGFueQpwYXRlbnRzIG9yIG90aGVyIHByb3BlcnR5IHJpZ2h0IGNsYWltcyBvciB0byBjb250ZXN0IHZhbGlkaXR5IG9mIGFueQpzdWNoIGNsYWltczsgdGhpcyBzZWN0aW9uIGhhcyB0aGUgc29sZSBwdXJwb3NlIG9mIHByb3RlY3RpbmcgdGhlCmludGVncml0eSBvZiB0aGUgZnJlZSBzb2Z0d2FyZSBkaXN0cmlidXRpb24gc3lzdGVtLCB3aGljaCBpcwppbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAp0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdApzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCnRvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBhIGxpY2Vuc2VlIGNhbm5vdAppbXBvc2UgdGhhdCBjaG9pY2UuCgpUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCgogIDguIElmIHRoZSBkaXN0cmlidXRpb24gYW5kL29yIHVzZSBvZiB0aGUgUHJvZ3JhbSBpcyByZXN0cmljdGVkIGluCmNlcnRhaW4gY291bnRyaWVzIGVpdGhlciBieSBwYXRlbnRzIG9yIGJ5IGNvcHlyaWdodGVkIGludGVyZmFjZXMsIHRoZQpvcmlnaW5hbCBjb3B5cmlnaHQgaG9sZGVyIHdobyBwbGFjZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBMaWNlbnNlCm1heSBhZGQgYW4gZXhwbGljaXQgZ2VvZ3JhcGhpY2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1ZGluZwp0aG9zZSBjb3VudHJpZXMsIHNvIHRoYXQgZGlzdHJpYnV0aW9uIGlzIHBlcm1pdHRlZCBvbmx5IGluIG9yIGFtb25nCmNvdW50cmllcyBub3QgdGh1cyBleGNsdWRlZC4gIEluIHN1Y2ggY2FzZSwgdGhpcyBMaWNlbnNlIGluY29ycG9yYXRlcwp0aGUgbGltaXRhdGlvbiBhcyBpZiB3cml0dGVuIGluIHRoZSBib2R5IG9mIHRoaXMgTGljZW5zZS4KCiAgOS4gVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lvbnMKb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCmJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bwphZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KCkVhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlIFByb2dyYW0Kc3BlY2lmaWVzIGEgdmVyc2lvbiBudW1iZXIgb2YgdGhpcyBMaWNlbnNlIHdoaWNoIGFwcGxpZXMgdG8gaXQgYW5kICJhbnkKbGF0ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucwplaXRoZXIgb2YgdGhhdCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgSWYgdGhlIFByb2dyYW0gZG9lcyBub3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVyIG9mCnRoaXMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbi4KCiAgMTAuIElmIHlvdSB3aXNoIHRvIGluY29ycG9yYXRlIHBhcnRzIG9mIHRoZSBQcm9ncmFtIGludG8gb3RoZXIgZnJlZQpwcm9ncmFtcyB3aG9zZSBkaXN0cmlidXRpb24gY29uZGl0aW9ucyBhcmUgZGlmZmVyZW50LCB3cml0ZSB0byB0aGUgYXV0aG9yCnRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcyBjb3B5cmlnaHRlZCBieSB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMKbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyIGRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMKb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMgb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZApvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcgYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTyBXQVJSQU5UWQoKICAxMS4gQkVDQVVTRSBUSEUgUFJPR1JBTSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8gV0FSUkFOVFkKRk9SIFRIRSBQUk9HUkFNLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4gIEVYQ0VQVCBXSEVOCk9USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMKUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQKT1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUwpUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0gSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFClBST0dSQU0gUFJPVkUgREVGRUNUSVZFLCBZT1UgQVNTVU1FIFRIRSBDT1NUIE9GIEFMTCBORUNFU1NBUlkgU0VSVklDSU5HLApSRVBBSVIgT1IgQ09SUkVDVElPTi4KCiAgMTIuIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORwpXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1BWSBNT0RJRlkgQU5EL09SClJFRElTVFJJQlVURSBUSEUgUFJPR1JBTSBBUyBQRVJNSVRURUQgQUJPVkUsIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsCklOQ0xVRElORyBBTlkgR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORwpPVVQgT0YgVEhFIFVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEClRPIExPU1MgT0YgREFUQSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWQpZT1UgT1IgVEhJUkQgUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUgpQUk9HUkFNUyksIEVWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUKUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgoKICAgICAgICAgICAgICAgICAgICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCgogICAgICAgICAgICBIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMKCiAgSWYgeW91IGRldmVsb3AgYSBuZXcgcHJvZ3JhbSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdApwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgdGhlIGJlc3Qgd2F5IHRvIGFjaGlldmUgdGhpcyBpcyB0byBtYWtlIGl0CmZyZWUgc29mdHdhcmUgd2hpY2ggZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlIHVuZGVyIHRoZXNlIHRlcm1zLgoKICBUbyBkbyBzbywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgcHJvZ3JhbS4gIEl0IGlzIHNhZmVzdAp0byBhdHRhY2ggdGhlbSB0byB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgZmlsZSB0byBtb3N0IGVmZmVjdGl2ZWx5CmNvbnZleSB0aGUgZXhjbHVzaW9uIG9mIHdhcnJhbnR5OyBhbmQgZWFjaCBmaWxlIHNob3VsZCBoYXZlIGF0IGxlYXN0CnRoZSAiY29weXJpZ2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90aWNlIGlzIGZvdW5kLgoKICAgIDxvbmUgbGluZSB0byBnaXZlIHRoZSBwcm9ncmFtJ3MgbmFtZSBhbmQgYSBicmllZiBpZGVhIG9mIHdoYXQgaXQgZG9lcy4+CiAgICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwogICAgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKICAgIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCgpBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4KCklmIHRoZSBwcm9ncmFtIGlzIGludGVyYWN0aXZlLCBtYWtlIGl0IG91dHB1dCBhIHNob3J0IG5vdGljZSBsaWtlIHRoaXMKd2hlbiBpdCBzdGFydHMgaW4gYW4gaW50ZXJhY3RpdmUgbW9kZToKCiAgICBHbm9tb3Zpc2lvbiB2ZXJzaW9uIDY5LCBDb3B5cmlnaHQgKEMpIHllYXIgbmFtZSBvZiBhdXRob3IKICAgIEdub21vdmlzaW9uIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMgdHlwZSBgc2hvdyB3Jy4KICAgIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2VsY29tZSB0byByZWRpc3RyaWJ1dGUgaXQKICAgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9uczsgdHlwZSBgc2hvdyBjJyBmb3IgZGV0YWlscy4KClRoZSBoeXBvdGhldGljYWwgY29tbWFuZHMgYHNob3cgdycgYW5kIGBzaG93IGMnIHNob3VsZCBzaG93IHRoZSBhcHByb3ByaWF0ZQpwYXJ0cyBvZiB0aGUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIE9mIGNvdXJzZSwgdGhlIGNvbW1hbmRzIHlvdSB1c2UgbWF5CmJlIGNhbGxlZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBgc2hvdyB3JyBhbmQgYHNob3cgYyc7IHRoZXkgY291bGQgZXZlbiBiZQptb3VzZS1jbGlja3Mgb3IgbWVudSBpdGVtcy0td2hhdGV2ZXIgc3VpdHMgeW91ciBwcm9ncmFtLgoKWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHlvdXIKc2Nob29sLCBpZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUgcHJvZ3JhbSwgaWYKbmVjZXNzYXJ5LiAgSGVyZSBpcyBhIHNhbXBsZTsgYWx0ZXIgdGhlIG5hbWVzOgoKICBZb3lvZHluZSwgSW5jLiwgaGVyZWJ5IGRpc2NsYWltcyBhbGwgY29weXJpZ2h0IGludGVyZXN0IGluIHRoZSBwcm9ncmFtCiAgYEdub21vdmlzaW9uJyAod2hpY2ggbWFrZXMgcGFzc2VzIGF0IGNvbXBpbGVycykgd3JpdHRlbiBieSBKYW1lcyBIYWNrZXIuCgogIDxzaWduYXR1cmUgb2YgVHkgQ29vbj4sIDEgQXByaWwgMTk4OQogIFR5IENvb24sIFByZXNpZGVudCBvZiBWaWNlCgpUaGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtIGludG8KcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdSBtYXkKY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGggdGhlCmxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLgo=]]></data>
	</file>
	<file>
	  <filename>/doc/help.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPldoYXQgZG9lcyB0aGlzIGRvPC9oMz4KPHA+VGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBxdWljayBhbmQgZWFzeSB3YXkgdG8gdHJhbnNmb3JtIHlvdXIgQ01TTVMgd2Vic2l0ZSBpbnRvIGEgQkFTSUMgUHJvZ3Jlc3NpdmUgV2ViIEFwcGxpY2F0aW9uIChQV0EpLiAgIFRoaXMgYWxsb3dzIHVzZXJzIHRvIGVhc2lseSBhZGQgYW4gaWNvbiB0byB5b3VyIHdlYnNpdGUgdG8gdGhlaXIgbW9iaWxlIGRldmljZSdzIGhvbWUgc2NyZWVuLCBoYW5kbGVzIHdoZW4gdGhlIGRldmljZSBpcyBvZmZsaW5lLCBhbmQgcHJvdmlkZXMgYSBtb3JlIG5hdGl2ZS1leHBlcmllbmNlIGZvciBtb2JpbGUgZGV2aWNlcy48L3A+CjxwPlRoaXMgbW9kdWxlIHdpbGwgZ2VuZXJhdGUgYSBtYW5pZmVzdC5qc29uIGZpbGUsIGFuZCBhc3NvY2lhdGVkIG1ldGEgdGFncyB0byBsaW5rIHRvIHRoZSBtYW5pZmVzdC4gIEl0IHdpbGwgYWxzbyBnZW5lcmF0ZSBtZXRhIHRhZ3MgZm9yIElPUyBkZXZpY2VzIHRvIGFsbG93IHRoZW0gdG8gb3BlcmF0ZSBpbiBhIG1vcmUgbmF0aXZlIHdheS4gICBBbHNvLCB0aGUgbW9kdWxlIHdpbGwgZ2VuZXJhdGUgYSBzZXJ2aWNlIHdvcmtlciB0aGF0IGNhY2hlcyBzdGF0aWMgYXNzZXRzIGZvciBpbmNyZWFzZWQgcGVyZm9ybWFuY2UgYW5kIG9mZmxpbmUgbW9kZS48L3A+Cgo8aDM+SG93IGRvIEkgVXNlIGl0PC9oMz4KPHVsPgogICAgPGxpPkluc3RhbGwgdGhlIG1vZHVsZTwvbGk+CiAgICA8bGk+U2V0IHRoZSBtb2R1bGUgc2V0dGluZ3M8L2xpPgogICAgPGxpPk9wdGlvbmFsbHkgc2V0IHN0YXRpYyByZXNvdXJjZXM8L2xpPgogICAgPGxpPkFkZCB0aGUge0NHU2ltcGxlUFdBfSB0YWcgdG8gdGhlIGhlYWQgc2VjdGlvbiBvZiB0aGUgcGFnZSB0ZW1wbGF0ZS48L2xpPgogICAgPGxpPk9wdGlvbmFsbHkgY3JlYXRlIGFuIG9mZmxpbmUgcGFnZTwvbGk+CiAgICA8bGk+T3B0aW9uYWxseSBpbmNsdWRlIHNvbWUgamF2YXNjcmlwdCBhbmQgc3R5bGluZyB0byBndWlkZSB0aGUgdXNlciBpbiBhZGRpbmcgdGhlIGFwcCB0byB0aGVpciBob21lIHNjcmVlbi48L2xpPgogICAgPGxpPk9wdGlvbmFsbHkgaW5jbHVkZSBzb21lIGphdmFzY3JpcHQgdG8gYWxsb3cgcmVsb2FkaW5nIG9mIHRoZSBwYWdlIChpLmU6IHB1bGwgdG8gcmVsb2FkKTwvbGk+CjwvdWw+Cgo8aDM+UmVxdWlyZW1lbnRzPC9oMz4KPHA+SW4gb3JkZXIgdG8gY3JlYXRlIGEgcHJvZ3Jlc3NpdmUgYXBwbGljYXRpb24geW91ciB3ZWJzaXRlIG11c3QgYXQgYSBtaW5pbXVtIG1lZXQgdGhpcyByZXF1aXJlbWVudHM6PC9wPgo8dWw+CiAgICA8bGk+WW91ciBhcHBsaWNhdGlvbiBtdXN0IGJlIHNlcnZlZCB2aWEgSFRUUFM8L2xpPgogICAgPGxpPllvdXIgYXBwbGljYXRpb24gbXVzdCBiZSByZXNwb25zaXZlPC9saT4KICAgIDxsaT5UaGUgQ01TTVMgd2ViIHJvb3QgZGlyZWN0b3J5IG11c3QgYmUgd3JpdGFibGUgYnkgQ01TTVMgYXMgdGhlIG1hbmlmZXN0IGFuZCBzZXJ2aWNlIHdvcmtlciBhcmUgcGxhY2VkIGluIHRoZSByb290IGRpcmVjdG9yeS48L2xpPgo8L3VsPgo8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFdlIHJlY29tbWVuZCB0aGF0IHlvdSByZXNlYXJjaCBQcm9ncmVzc2l2ZSBXZWIgQXBwIHRlY2hub2xvZ3kgb24gdGhlIHdlYi4gVGhlcmUgYXJlIG1hbnksIG1hbnkgcmVzb3VyY2VzLjwvcD4KPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiB0aGUgQ0dXZWJQdXNoIG1vZHVsZSBpcyBjdXJyZW50bHkgbm90IGNvbXBhdGlibGUgd2l0aCB0aGlzIG1vZHVsZSBhcyB0aGV5IGJvdGggcHJvdmlkZSB0aGVpciBvd24gc2VydmljZSB3b3JrZXJzLCBhbmQgb25seSBvbmUgc2VydmljZSB3b3JrZXIgaXMgcGVybWl0dGVkIHBlciBzaXRlLjwvcD4KCjxoMz5UaGUgU2VydmljZSBXb3JrZXI8L2gzPgo8cD5UaGUgc2VydmljZSB3b3JrZXIgcHJvdmlkZWQgYnkgdGhpcyBtb2R1bGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgd2hlbiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjaGFuZ2VzOjwvcD4KPHVsPgogICA8bGk+VGhlIHNlcnZpY2Ugd29ya2VyIHRlbXBsYXRlIGNoYW5nZXM8L2xpPgogICA8bGk+QW55IGZpbGUgd2l0aGluIHRoZSBDTVNNUyBhc3NldHMgZGlyZWN0b3J5IGNoYW5nZXM8L2xpPgogICA8bGk+VGhlIG9mZmxpbmUgcGFnZSAoaWYgaXQgZXhpc3RzKSBjaGFuZ2VzLjwvbGk+CiAgIDxsaT5UaGUgc3RhdGljIGFzc2V0IGxpc3Qgc3BlY2lmZWlkIGluIHRoZSBhZG1pbiBwYW5lbCBjaGFuZ2VzPC9saT4KPC91bD4KPHA+SXQncyBiZWhhdmlvciBpcyB0byBjYWNoZSB0aGUgc3RhdGljIFVSTHMgc3BlY2lmaWVkIGluIHRoZSBjb25maWcgcGFuZWwgb24gaW5zdGFsbGF0aW9uLCBhbmQgdGhlbiBkbyBhIGNoYWNoZS10aGVuLW5ldHdvcmstdGhlbi1jYWNoZSBhcHByb2FjaCBmb3IgYW55IHJlcXVlc3RlZCBhc3NldHMgYmVsb3cgdGhlIENNU01TIGFzc2V0cyBkaXJlY3RvcnkuICAgVGhpcyBhbGxvd3MgeW91IHRvIHVzZSBzdGF0aWMgYXNzZXRzIGFzIHlvdSB3b3VsZCwgd2l0aG91dCBoYXZpbmcgdG8gZXhwbGljaXRseSB3b3JyeSBhYm91dCB1cGRhdGluZyBhIGxpc3Qgb2YgZmlsZXMgdG8gY2FjaGU8L3A+CjxwPk9sZCBjYWNoZXMgYXJlIHJlbW92ZWQgZXZlcnkgdGltZSB0aGUgc2VydmljZSB3b3JrZXIgaXMgYWN0aXZhdGVkIGFuZC9vciB0aGUgc2VydmljZSB3b3JrZXIgY2hhbmdlcyBmb3IgcGVyZm9ybWFuY2UgYW5kIHRvIHJlZHVjZSBzdG9yYWdlIHJlcXVpcmVtZW50cy48L3A+Cgo8aDM+RmlsZSBHZW5lcmF0aW9uPC9oMz4KPHA+VGhlIG1hbmlmZXN0IGpzb24gZmlsZSBpcyBnZW5lcmF0ZWQgZWFjaCB0aW1lIHlvdSBjbGljayB0aGUgc3VibWl0IGJ1dHRvbiBvbiB0aGUgc2V0dGluZ3MgdGFiIG9mIHRoZSBtb2R1bGUncyBhZG1pbiBwYW5lbC48L3A+CjxwPlRoZSBzZXJ2aWNlIHdvcmtlciBqYXZhc2NyaXB0IGZpbGUgaXMgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgb24gcmVxdWVzdCBpZiBjZXJ0YWluIGNvbmRpdGlvbnMgaGF2ZSBiZWVuIG1ldC4gIFRvIGZvcmNlIGl0IHRvIGJlIHJlZ2VuZXJhZWQgeW91IGNhbiB0b3VjaCBvciBjaGFuZ2UgYSBmaWxlIGluIHlvdXIgYXNzZXRzIGRpcmVjdG9yeS48L3A+Cgo8aDM+VGhlIE9mZmxpbmUgUGFnZSBUeXBlPC9oMz4KPHA+VGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBuZXcgY29udGVudCB0eXBlIGNhbGxlZCAiQ0dTaW1wbGVQV0EgT2ZmbGluZSBQYWdlIiB0aGF0IGFsbG93cyB5b3UgdG8gY3JlYXRlIGEgcGFnZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIHRoZSBkZXZpY2UgaXMgb2ZmbGluZS4gIElmIGEgcGFnZSBvZiB0aGlzIHR5cGUgZXhpc3RzLCBpdCBpcyBjYWNoZWQgYnkgdGhlIHNlcnZpY2Ugd29ya2VyLiAgT25seSBvbmUgcGFnZSBvZiB0aGlzIHR5cGUgaXMgcGVybWl0dGVkLjwvcD4KPHA+Q3JlYXRpbmcgYW4gb2ZmbGluZSBwYWdlIHJlcXVpcmVzIHNwZWNpYWwgY29uc2lkZXJhdGlvbjo8L3A+Cjx1bGw+CiAgIDxsaT5BbGwgYXNzZXRzIHVzZWQgYnkgdGhlIG9mZmxpbmUgcGFnZSBtdXN0IGJlIGNhY2hlZCBieSB0aGUgc2VydmljZSB3b3JrZXIKICAgICAgIDxwPlRoaXMgbWVhbnMgdGhhdCBlYWNoIGFzc2V0IHVzZWQgYnkgdGhlIG9mZmxpbmUgcGFnZSBtdXN0IGJlIHNwZWNpZmllZCBpbiB0aGUgIlN0YXRpYyBBc3NldHMiIHRhYiBvZiB0aGlzIG1vZHVsZSdzIGFkbWluIHBhbmVsLjwvcD4KICAgICAgIDxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gSXQgYWxzbyBtZWFucyB0aGF0IHlvdSBwcm9iYWJseSBjYW5ub3QgdXNlIHtjbXNfc3R5bGVzaGVldH0gaW4gdGhlIHBhZ2UgdGVtcGxhdGUgZm9yIHRoZSBlcnJvciBwYXRoIGFzIHRoaXMgcGF0aCBpcyBkeW5hbWljLiAgSSBzdWdnZXN0IHlvdSB1c2Ugc3RhdGljIHN0eWxlc2hlZXRzIHVuZGVyIHRoZSBhc3NldHMgcGF0aCBmb3IgdGhpcyBwYWdlLjwvcD4KICAgPC9saT4KICAgPGxpPlRoZSBvZmZsaW5lIHBhZ2Ugc2hvdWxkIG5vdCBtYWtlIGFueSBhamF4IHJlcXVlc3RzLCBvciBzdWJtaXQgZm9ybSByZXN1bHRzICh0aGV5IHdvdWxkIHByb2JhYmx5IGZhaWwgYW55d2F5cyk8L2xpPgogICA8bGk+SXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0aGUgb2ZmbGluZSBwYWdlIGhhdmUgYSByZWxvYWQgYnV0dG9uIG9yIGxpbmsgdG8gYWxsb3cgcmVsb2FkaW5nIHRoZSB3ZWJzaXRlIHdoZW4gdGhlIGRldmljZSBjb21lcyBiYWNrIG9ubGluZS48L2xpPgo8L3VsPgo8bGk+SXQgaXMgcG9zc2libGUgdG8gdXNlIGphdmFzY3JpcHQgZnVuY3Rpb25hbGl0eSBpbiB0aGUgb2ZmbGluZSBwYWdlIGFzIGxvbmcgYXMgdGhhdCBmdW5jdGlvbmFsaXR5IGRvZXMgbm90IHJlbHkgb24gZXh0ZXJuYWwgc2VydmljZXMuPC9saT4KCjxoMz5TdXBwb3J0PC9oMz4KPHA+VGhlIG1vZHVsZSBhdXRob3IgaXMgaW4gbm8gd2F5IG9ibGlnYXRlZCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoaXMgY29kZSBpbiBhbnkgZmFzaGlvbi4gIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5BIGJ1ZyB0cmFja2luZyBhbmQgZmVhdHVyZSByZXF1ZXN0IHN5c3RlbSBoYXMgYmVlbiBjcmVhdGVkIGZvciB0aGlzIG1vZHVsZSA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2Zyb250ZW5kdXNlcnMiPmhlcmU8L2E+LiAgUGxlYXNlIGJlIHZlcmJvc2UgYW5kIGRlc2NyaXB0aXZlIHdoZW4gc3VibWl0dGluZyBidWcgcmVwb3J0cyBhbmQgZmVhdHVyZSByZXF1ZXN0cywgYW5kIGZvciBidWcgcmVwb3J0cyBlbnN1cmUgdGhhdCB5b3UgaGF2ZSBwcm92aWRlZCBzdWZmaWNpZW50IGluZm9ybWF0aW9uIHRvIHJlbGlhYmx5IHJlcHJvZHVjZSB0aGUgaXNzdWUuPC9saT4KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi4gIFdoZW4gZGVzY3JpYmluZyBhbiBpc3N1ZSBwbGVhc2UgbWFrZSBhbiBlZmZvcnQgdG8gcHJvdmlkZSBhbGwgcmVsYXZhbnQgaW5mb3JtYXRpb24sIGEgdGhvcm91Z2ggZGVzY3JpcHRpb24gb2YgeW91ciBpc3N1ZSwgYW5kIHN0ZXBzIHRvIHJlcHJvZHVjZSBpdCBvciB5b3VyIGRpc2N1c3Npb24gbWF5IGJlIGlnbm9yZWQuPC9saT4KPGxpPlRoZSBhdXRob3IsIGNhbGd1eTEwMDAsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+CjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS4gIEhvd2V2ZXIsIHBsZWFzZSB1c2UgdGhpcyBhcyBhIGxhc3QgcmVzb3J0LCBhbmQgZW5zdXJlIHRoYXQgeW91IGhhdmUgZm9sbG93ZWQgYWxsIGFwcGxpY2FibGUgaW5zdHJ1Y3Rpb25zIG9uIHRoZSBmb3JnZSwgaW4gdGhlIGZvcnVtcywgZXRjLjwvbGk+CjwvdWw+Cgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA4LCBSb2JlcnQgQ2FtcGJlbGwgPGEgaHJlZj0ibWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciPiZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4Kc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+PC9wPgo=]]></data>
	</file>
	<file>
	  <filename>/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/cgpwa.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lyogc2NyaXB0IHRvIGluaXRpYWxpemUgdGhlIENHUFdBIHNlcnZpY2Ugd29ya2VyICovCmlmKCAnc2VydmljZVdvcmtlcicgaW4gbmF2aWdhdG9yICkgewogICAgYmFzZV9wYXRoID0gZnVuY3Rpb24oKSB7CglsZXQgcGFnZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5zcGxpdCgnLycpLnBvcCgpOwogICAgICAgIGxldCBwYXRoQXJyYXkgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuc3BsaXQoJy8nKQoJbGV0IGluZGV4T2ZTZWdtZW50ID0gcGF0aEFycmF5LmluZGV4T2YocGFnZSkKCWlmKCBwYWdlLmxlbmd0aCA9PSAwICkgaW5kZXhPZlNlZ21lbnQgPSBwYXRoQXJyYXkubGVuZ3RoIC0gMTsKICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHBhdGhBcnJheS5zbGljZSgwLGluZGV4T2ZTZWdtZW50KS5qb2luKCcvJykgKyAnLycKICAgIH0KCiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggJ2xvYWQnLCAoKSA9PiB7CglsZXQgdXJsID0gYmFzZV9wYXRoKCkgKyAnY2dwd2Ffc2VydmljZXdvcmtlci5qcycKCWNvbnNvbGUubG9nKCdzZXJ2aWNlIHdvcmtlciB1cmwgaXMgJyt1cmwpCgluYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlciggdXJsICkKICAgIH0pCn0K]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2luZm9fZl91c2Vfc3cnXSA9ICdZb3UgY2FuIG9wdGlvbmFsbHkgZGlzYWJsZSB0aGUgc2VydmljZSB3b3JrZXIgaGVyZS4gIEl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byBkaXNhYmxlIHRoZSBzZXJ2aWNlIHdvcmtlciBhcyBpdCB3aWxsIHByZXZlbnQgdGhlIFBXQSBmcm9tIG9wZXJhdGluZyBwcm9wZXJseSc7CiRsYW5nWydpbmZvX2ZfdXNlX2lvc21ldGEnXSA9ICdIZXJlIHlvdSBjYW4gY2hvb3NlIHRvIG9wdGlvbmFsbHkgZGlzYWJsZSBJT1Mgc3BlY2lmaWMgbWV0YSB0YWdzIGluIHRoZSBoZWFkZXIuICBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIGluY2x1ZGluZyB0aGVtIG1hbnVhbGx5Lic7CiRsYW5nWydsYmxfc3RhcnRwYWdlJ10gPSAnU3RhcnQgcGFnZSc7CiRsYW5nWydpbmZvX2Zfc3RhcnRwYWdlJ10gPSAnT3B0aW9uYWxseSwgc3BlY2lmeSBhbiBhbHRlcm5hdGUgcGFnZSB0byBiZSBkaXNwbGF5ZWQgd2hlbiB0aGUgdXNlciBvcGVucyB0aGUgYXBwIGZyb20gdGhlIGhvbWUgc2NyZWVuLiAgSWYgbm90IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgY29udGVudCBwYWdlIHdpbGwgYmUgdXNlZC4nOwokbGFuZ1snaW5mb19zdGF0aWNfdGFiJ10gPSAnU3BlY2lmeSBVUkxTIHRvIHJlc291cmNlcyAoY3NzLGpzLGltYWdlcykgdGhhdCBzaG91bGQgYWx3YXlzIGJlIGNhY2hlZCBieSB0aGUgc2VydmljZSB3b3JrZXIuICBUaGVzZSBhcmUgcGFydGljdWxhcmx5IHVzZWZ1bCB3aGVuIHRoZSBkZXZpY2UgaXMgb2ZmbGluZSB0byBkaXNwbGF5IGEgc3R5bGVkIG9mZmxpbmUgcGFnZSc7CiRsYW5nWydpbmZvX3N0YXRpY19yZXNvdXJjZXMnXSA9ICdTcGVjaWZ5IG9uZSBVUkwgcGVyIGxpbmUuICBBYnNvbHV0ZSBVUkxzIG9yIFVSTHMgcmVsYXRpdmUgdG8gdGhlIENNU01TIHJvb3QgYXJlIHBlcm1pdHRlZC4gIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHBsYWNlIGFsbCBjYWNoYWJsZSBhc3NldHMgd2l0aGluIHRoZSBhc3NldHMgZGlyZWN0b3J5Lic7CiRsYW5nWydsYmxfc3RhdGljX3Jlc291cmNlcyddID0gJ1N0YXRpYy9vZmZsaW5lIGFzc2V0cyc7CiRsYW5nWydoZHJfc2V0dGluZ3MnXSA9ICdTZXR0aW5ncyc7CiRsYW5nWydoZHJfc3RhdGljJ10gPSAnU3RhdGljL29mZmxpbmUgYXNzZXRzJzsKJGxhbmdbJ2luZm9fZl9uYW1lJ10gPSAnU3BlY2lmeSBhIG5hbWUgZm9yIHRoZSBhcHBsaWNhdGlvbi4gIFNob3VsZCBiZSAxMiBjaGFyYWN0ZXJzIG9yIGxlc3MuICBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgc2l0ZSBuYW1lIHdpbGwgYmUgdXNlZCc7CiRsYW5nWydpbmZvX2Zfc2hvcnRfbmFtZSddID0gJ09wdGlvbmFsbHkgc3BlY2lmeSBhIHNob3J0IG5hbWUgZm9yIHRoZSBhcHAuICBUaGlzIHdpbGwgYmUgdXNlZCB3aGVuIHRoZSB1c2VyIGlzIHByb21wdGVkIHRvIGFkZCB0aGUgYXBwIHRvIHRoZSBob21lIHNjcmVlbic7CiRsYW5nWydpbmZvX2ZfYmFja2dyb3VuZF9jb2xvciddID0gJ1NwZWNpZnkgYSBiYWNrZ3JvdW5kIGNvbG9yIGZvciBhIHNwbGFzaCBzY3JlZW4uICBTaG91bGQgYmUgYSBoZXhhZGVjaW1hbCBSR0IgY29sb3IgcHJlY2VkZWQgYnkgYSAjIGNoYXJhY3Rlcic7CiRsYW5nWydpbmZvX2ZfdGhlbWVfY29sb3InXSA9ICdTcGVjaWZ5IGEgdGhlbWUgY29sb3IgZm9yIHRoZSBhcHAuICBTaG91bGQgYmUgYSBoZXhhZGVjaW1hbCBSR0IgY29sb3IgcHJlY2VkZWQgYnkgYSAjIGNoYXJhY3Rlcic7CiRsYW5nWydpbmZvX2ZfZGlzcGxheSddID0gJ1NldCB0aGUgZGlzcGxheSBtb2RlIGZvciB0aGUgYXBwLiAgRm9yIGFuZHJvaWQgUFdBIGFwcHMsIHRoZSBkaXNwbGF5IG11c3QgYmUgc2V0IHRvICJTdGFuZGFsb25lIic7CiRsYW5nWydpbmZvX2Zfb3JpZW50YXRpb24nXSA9ICdPcHRpb25hbGx5IHNldCBhIGZpeGVkIG9yaWVudGF0aW9uIGZvciB0aGUgYXBwLiAgV2UgcmVjb21tZW5kIHlvdSBsZWF2ZSB0aGlzIGluICJhdXRvIiBtb2RlIi4nOwokbGFuZ1snaW5mb19mX21hc3Rlcl9pY29uJ10gPSAnU2VsZWN0IGEgc3F1YXJlLCBvcGFxdWUgaWNvbiB3aXRoIGEgc2l6ZSBvZiBhdCBsZWFzdCA1MTJ4NTEyLiAgVGhpcyBhcHBsaWNhdG9uIHdpbGwgY3JlYXRlIGEgc2VyaWVzIG9mIHNtYWxsZXIgaWNvbiBmcm9tIHRoaXMgaW1hZ2UgYW5kIHN0b3JlIHRoZW0gaW4gL2Fzc2V0cy9pY29ucyc7CiRsYW5nWydsYmxfdXNlX3N3J10gPSAnRW5hYmxlIGEgc2VydmljZSB3b3JrZXInOwokbGFuZ1snaW5mb191c2Vfc3cnXSA9ICdBIHNlcnZpY2Ugd29ya2VyIG11c3QgYmUgZW5hYmxlZCBmb3IgYSBQV0EgYXBwIHRvIGJlIHJlY29nbml6ZWQuICBJbiByYXJlIG9jY2FzaW9ucyB5b3UgbWF5IHdhbnQgdG8gZGlzYWJsZSBpdCc7CiRsYW5nWydsYmxfdXNlX2lvc21ldGEnXSA9ICdFbmFibGUgSU9TIG1ldGEgdGFncyc7CiRsYW5nWydpbmZvX3VzZV9zdyddID0gJ1RoaXMgZmxhZyB3aWxsIGRpc2FibGUgdGhlIGluc2VydGlvbiBvZiBJT1Mgc3BlY2lmaWMgbWV0YSB0YWdzIGluIHRoZSBwYWdlIGhlYWRlci4gIFlvdSBtYXkgd2lzaCB0byBkaXNhYmxlIHRoaXMgaWYgeW91IGhhdmUgbWV0YSB0YWdzIGZyb20gZWxzZXdoZXJlJzsKJGxhbmdbJ2NvbnRlbnR0eXBlX29mZmxpbmVwYWdlJ10gPSAnQ0dTaW1wbGVQV0EgT2ZmbGluZSBQYWdlJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1N1Ym1pdCc7CiRsYW5nWydsYmxfbmFtZSddID0gJ05hbWUnOwokbGFuZ1snbGJsX3Nob3J0X25hbWUnXSA9ICdTaG9ydCBuYW1lJzsKJGxhbmdbJ2xibF9kZXNjcmlwdGlvbiddID0gJ0Rlc2NyaXB0aW9uJzsKJGxhbmdbJ2xibF9iYWNrZ3JvdW5kX2NvbG9yJ10gPSAnQmFja2dyb3VuZCBjb2xvcic7CiRsYW5nWydsYmxfdGhlbWVfY29sb3InXSA9ICdUaGVtZSBjb2xvcic7CiRsYW5nWydsYmxfZGlzcGxheSddID0gJ0Rpc3BsYXknOwokbGFuZ1snbGJsX29yaWVudGF0aW9uJ10gPSAnT3JpZW50YXRpb24nOwokbGFuZ1snbGJsX21hc3Rlcl9pY29uJ10gPSAnTGFyZ2UgaWNvbic7CiRsYW5nWydkaXNwbGF5X2Jyb3dzZXInXSA9ICdCcm93c2VyJzsKJGxhbmdbJ2Rpc3BsYXlfZnVsbHNjcmVlbiddID0gJ0Z1bGxzY3JlZW4nOwokbGFuZ1snZGlzcGxheV9zdGFuZGFsb25lJ10gPSAnU3RhbmRhbG9uZSc7CiRsYW5nWydkaXNwbGF5X21pbmltYWx1aSddID0gJ01pbmltYWwtdWknOwokbGFuZ1snb3JpZW50YXRpb25fZGZsdCddID0gJ0RlZmF1bHQvQXV0byc7CiRsYW5nWydvcmllbnRhdGlvbl9wb3J0cmFpdCddID0gJ1BvcnRyYWl0JzsKJGxhbmdbJ29yaWVudGF0aW9uX2xhbmRzY2FwZSddID0gJ0xhbmRzY2FwZSc7CiRsYW5nWydtc2dfc2F2ZWQnXSA9ICdTZXR0aW5ncyBzYXZlZCc7]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.Generator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHU2ltcGxlUFdBOwp1c2UgQ0dTaW1wbGVQV0E7CnVzZSBjbXNfc2l0ZXByZWZzOwoKY2xhc3MgR2VuZXJhdG9yCnsKICAgIGNvbnN0IFBSRUZfTEFTVFRTID0gJ19sYXN0dHNfJzsKICAgIGNvbnN0IFBSRUZfU0lHID0gJ19wcmVmX3NpZ18nOwogICAgY29uc3QgUFJFRl9TVEFUSUNTSUcgPSAnX3N0YXRpY19zaWdfJzsKICAgIGNvbnN0IFBSRUZfU1RBUlRQQUdFVFMgPSAnX3N0YXJ0cGFnZXRzXyc7CgogICAgcHJpdmF0ZSAkbW9kOwogICAgcHJpdmF0ZSAkc3RvcmFnZTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoIENHU2ltcGxlUFdBICRtb2QsIFN0b3JhZ2UgJHN0b3JhZ2UgKQogICAgewogICAgICAgICR0aGlzLT5tb2QgPSAkbW9kOwogICAgICAgICR0aGlzLT5zdG9yYWdlID0gJHN0b3JhZ2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdlbmVyYXRlTWFuaWZlc3QoIFByZWZzICRwcmVmcywgJGRlc3QgPSBudWxsICkKICAgIHsKICAgICAgICAkY29uZmlnID0gJHRoaXMtPm1vZC0+R2V0Q29uZmlnKCk7CiAgICAgICAgaWYoICEkZGVzdCApIHsKICAgICAgICAgICAgJGRlc3QgPSAkY29uZmlnWydyb290X3BhdGgnXS4nLycuQ0dTaW1wbGVQV0E6Ok1BTklGRVNUX0ZJTEVOQU1FOwogICAgICAgIH0KICAgICAgICBpZiggaXNfZmlsZSgkZGVzdCkgJiYgIWlzX3dyaXRhYmxlKCRkZXN0KSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbiggJHRoaXMtPm1vZC0+TGFuZygnZXJyX3Blcm1pc3Npb24nLCAkZGVzdCkgKTsKCiAgICAgICAgJHN0YXJ0X3BhZ2UgPSAkcHJlZnMtPnN0YXJ0X3BhZ2U7CiAgICAgICAgJHN0YXJ0X3VybCA9IG51bGw7CiAgICAgICAgaWYoICRzdGFydF9wYWdlID4gMCApIHsKICAgICAgICAgICAgJGNvbnRlbnRfb2JqID0gY21zbXMoKS0+R2V0Q29udGVudE9wZXJhdGlvbnMoKS0+TG9hZENvbnRlbnRGcm9tSUQoICRzdGFydF9wYWdlICk7CiAgICAgICAgICAgIGlmKCAkY29udGVudF9vYmogJiYgJGNvbnRlbnRfb2JqLT5BY3RpdmUoKSApIHsKICAgICAgICAgICAgICAgIC8vIG11c3QgYmUgYSByZWxhdGl2ZSB1cmwuLi4uIGJ1dCwgcHJldHR5IHVybHMgZG9uJ3QgbWF0dGVyIGluIFBXQSBhcHBzLgogICAgICAgICAgICAgICAgJHN0YXJ0X3VybCA9ICdpbmRleC5waHA/Jy4kY29uZmlnWydxdWVyeV92YXInXS4nPScuJHN0YXJ0X3BhZ2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJGRhdGEgPSBqc29uX2RlY29kZSgganNvbl9lbmNvZGUoICRwcmVmcyApLCBUUlVFICk7CiAgICAgICAgaWYoIGVtcHR5KCRkYXRhWyduYW1lJ10pICkgJGRhdGFbJ25hbWUnXSA9IGNtc19zaXRlcHJlZnM6OmdldCgnc2l0ZW5hbWUnLCdDTVNNUyBTaXRlJyk7CiAgICAgICAgaWYoICFlbXB0eSgkc3RhcnRfdXJsKSApICRkYXRhWydzdGFydF91cmwnXSA9ICRzdGFydF91cmw7CiAgICAgICAgdW5zZXQoICRkYXRhWydtYXN0ZXJfaWNvbiddLCAkZGF0YVsnaW5jbHVkZV9zdyddLCAkZGF0YVsnaW5jbHVkZV9pb3NtZXRhJ10sICRkYXRhWydzdGFydF9wYWdlJ10gKTsKICAgICAgICBpZiggJGRhdGFbJ29yaWVudGF0aW9uJ10gPT0gUHJlZnM6Ok9SSUVOVEFUSU9OX0RGTFQgKSB1bnNldCggJGRhdGFbJ29yaWVudGF0aW9uJ10gKTsKICAgICAgICAkb3V0ID0ganNvbl9lbmNvZGUoICRkYXRhLCBKU09OX1BSRVRUWV9QUklOVCB8IEpTT05fVU5FU0NBUEVEX1NMQVNIRVMgKTsKICAgICAgICBmaWxlX3B1dF9jb250ZW50cyggJGRlc3QsICRvdXQgKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZmluZExhc3RNb2RpZmllZEFzc2V0VGltZSgpCiAgICB7CiAgICAgICAgJGZpbmRfbGFzdG1vZGlmaWVkdHNfYnlwYXRoID0gZnVuY3Rpb24oJHN0YXJ0cGF0aCwgJGxhdGVzdCA9IG51bGwpIHVzZSAoJiRmaW5kX2xhc3Rtb2RpZmllZHRzX2J5cGF0aCkgewogICAgICAgICAgICAkc3RhcnRwYXRoID0gdHJpbSgkc3RhcnRwYXRoKTsKICAgICAgICAgICAgJGRoID0gb3BlbmRpcigkc3RhcnRwYXRoKTsKICAgICAgICAgICAgd2hpbGUoIGZhbHNlICE9PSAoJGVudHJ5ID0gcmVhZGRpcigkZGgpKSApIHsKICAgICAgICAgICAgICAgIGlmKCAkZW50cnkgPT0gJy4nIHx8ICRlbnRyeSA9PSAnLi4nICkgY29udGludWU7CgogICAgICAgICAgICAgICAgJGZ1bGxwYXRoID0gJHN0YXJ0cGF0aC4nLycuJGVudHJ5OwogICAgICAgICAgICAgICAgaWYoIGlzX2ZpbGUoJGZ1bGxwYXRoKSApIHsKICAgICAgICAgICAgICAgICAgICAkbXRpbWUgPSBmaWxlbXRpbWUoJGZ1bGxwYXRoKTsKICAgICAgICAgICAgICAgICAgICBpZiggJG10aW1lID4gJGxhdGVzdCApICRsYXRlc3QgPSAkbXRpbWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmKCBpc19kaXIoJGZ1bGxwYXRoKSApIHsKICAgICAgICAgICAgICAgICAgICAkbGF0ZXN0ID0gJGZpbmRfbGFzdG1vZGlmaWVkdHNfYnlwYXRoKCAkZnVsbHBhdGgsICRsYXRlc3QgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBjbG9zZWRpcigkZGgpOwogICAgICAgICAgICByZXR1cm4gJGxhdGVzdDsKICAgICAgICB9OwoKICAgICAgICAkYXNzZXRzX3BhdGggPSAkdGhpcy0+bW9kLT5HZXRDb25maWcoKVsnYXNzZXRzX3BhdGgnXTsKICAgICAgICByZXR1cm4gJGZpbmRfbGFzdG1vZGlmaWVkdHNfYnlwYXRoKCRhc3NldHNfcGF0aCk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGZpbmRMYXN0QWRkb25Nb2RpZmllZFRpbWUoKQogICAgewogICAgICAgICR2YWwgPSAwOwogICAgICAgIGlmKCAhZW1wdHkoJHRoaXMtPm1vZC0+Z2V0U2VydmljZVdvcmtlckFkZG9ucygpICkgKSB7CiAgICAgICAgICAgIGZvcmVhY2goICR0aGlzLT5tb2QtPmdldFNlcnZpY2VXb3JrZXJBZGRvbnMoKSBhcyAkYWRkb24gKSB7CiAgICAgICAgICAgICAgICAkdmFsID0gbWF4KCR2YWwsJGFkZG9uLT5nZXRNb2RpZmllZERhdGUoKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICR2YWw7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGZpbmRTdGFydFBhZ2VMYXN0TW9kaWZpZWQoICRwYWdlX2lkICkKICAgIHsKICAgICAgICAkb3V0ID0gbnVsbDsKICAgICAgICBpZiggJHBhZ2VfaWQgPiAwICkgewogICAgICAgICAgICAkY29udGVudF9vYmogPSBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5Mb2FkQ29udGVudEZyb21JRCggJHBhZ2VfaWQgKTsKICAgICAgICAgICAgaWYoICRjb250ZW50X29iaiAmJiAkY29udGVudF9vYmotPkFjdGl2ZSgpICkgewogICAgICAgICAgICAgICAgJG91dCA9IHN0cnRvdGltZSggJGNvbnRlbnRfb2JqLT5HZXRNb2RpZmllZERhdGUoKSApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhdXRvR2VuZXJhdGVTZXJ2aWNlV29ya2VyKCkKICAgIHsKICAgICAgICAkcHJlZnMgPSAkdGhpcy0+c3RvcmFnZS0+bG9hZFByZWZzKCk7CiAgICAgICAgaWYoICEkcHJlZnMtPmluY2x1ZGVfc3cgKSByZXR1cm47CgogICAgICAgIC8vIGZpbmQgdGhlIHRpbWVzdGFtcCBvZiB0aGUgbGFzdCBtb2RpZmllZCBmaWxlIGluIHRoZSBhc3NldHNfcGF0aAogICAgICAgIC8vIGlmIGl0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgTEFTVFRJTUUgcHJlZiB0aGVuIGdlbmVyYXRlIHRoZSB0cwogICAgICAgICRsYXN0dHMgPSAoaW50KSAkdGhpcy0+bW9kLT5HZXRQcmVmZXJlbmNlKCBzZWxmOjpQUkVGX0xBU1RUUyApOwogICAgICAgICRmb3VuZHRzID0gKGludCkgJHRoaXMtPmZpbmRMYXN0TW9kaWZpZWRBc3NldFRpbWUoKTsKICAgICAgICAkZm91bmR0cyA9IG1heCggJHRoaXMtPmZpbmRMYXN0QWRkb25Nb2RpZmllZFRpbWUoKSwgJGZvdW5kdHMgKTsKICAgICAgICAkYXNzZXRzX2NoYW5nZWQgPSAkbGFzdHRzIDwgJGZvdW5kdHM7CiAgICAgICAgJHByZWZzX3NpZyA9ICR0aGlzLT5zdG9yYWdlLT5nZXRQcmVmZXJlbmNlc1NpZygpOwogICAgICAgICRwcmVmc19jaGFuZ2VkID0gJHRoaXMtPm1vZC0+R2V0UHJlZmVyZW5jZSggc2VsZjo6UFJFRl9TSUcgKSAhPSAkcHJlZnNfc2lnOwogICAgICAgICRzdGF0aWNfc2lnID0gbWQ1KCR0aGlzLT5zdG9yYWdlLT5nZXRTdGF0aWNUZXh0KCkpOwogICAgICAgICRzdGF0aWNfY2hhbmdlZCA9ICR0aGlzLT5tb2QtPkdldFByZWZlcmVuY2UoIHNlbGY6OlBSRUZfU1RBVElDU0lHICkgIT0gJHN0YXRpY19zaWcgJiYgJHRoaXMtPnN0b3JhZ2UtPmdldFN0YXRpY1RleHQoKTsKICAgICAgICAkc3RhcnRwYWdlX2NoYW5nZWQgPSAkc3RhcnRwYWdlX3RzID0gbnVsbDsKICAgICAgICBpZiggJHByZWZzLT5zdGFydF9wYWdlID4gMCApIHsKICAgICAgICAgICAgJHN0YXJ0cGFnZV90cyA9ICR0aGlzLT5maW5kU3RhcnRQYWdlTGFzdE1vZGlmaWVkKCAkcHJlZnMtPnN0YXJ0X3BhZ2UgKTsKICAgICAgICAgICAgJHN0YXJ0cGFnZV9sYXN0dHMgPSAkdGhpcy0+bW9kLT5HZXRQcmVmZXJlbmNlKCBzZWxmOjpQUkVGX1NUQVJUUEFHRVRTICk7CiAgICAgICAgICAgICRzdGFydHBhZ2VfY2hhbmdlZCA9ICRzdGFydHBhZ2VfdHMgPiAkc3RhcnRwYWdlX2xhc3R0czsKICAgICAgICB9CgogICAgICAgIGlmKCB0cnVlIHx8ICRhc3NldHNfY2hhbmdlZCB8fCAkcHJlZnNfY2hhbmdlZCB8fCAkc3RhdGljX2NoYW5nZWQgfHwgJHN0YXJ0cGFnZV9jaGFuZ2VkICkgewogICAgICAgICAgICAvLyBzb21lIGZpbGUgaGFzIGNoYW5nZWQgc2luY2Ugb3VyIGxhc3Qgc2NhbgogICAgICAgICAgICAkdGhpcy0+Z2VuZXJhdGVTZXJ2aWNlV29ya2VyKCRwcmVmcywgdGltZSgpKTsKICAgICAgICAgICAgaWYoICRhc3NldHNfY2hhbmdlZCApICR0aGlzLT5tb2QtPlNldFByZWZlcmVuY2UoIHNlbGY6OlBSRUZfTEFTVFRTLCAkZm91bmR0cyApOwogICAgICAgICAgICBpZiggJHByZWZzX2NoYW5nZWQgKSAkdGhpcy0+bW9kLT5TZXRQcmVmZXJlbmNlKCBzZWxmOjpQUkVGX1NJRywgJHByZWZzX3NpZyApOwogICAgICAgICAgICBpZiggJHN0YXRpY19jaGFuZ2VkICkgJHRoaXMtPm1vZC0+U2V0UHJlZmVyZW5jZSggc2VsZjo6UFJFRl9TVEFUSUNTSUcsICRzdGF0aWNfc2lnICk7CiAgICAgICAgICAgIGlmKCAkc3RhcnRwYWdlX2NoYW5nZWQgKSAkdGhpcy0+bW9kLT5TZXRQcmVmZXJlbmNlKCBzZWxmOjpQUkVGX1NUQVJUUEFHRVRTLCAkc3RhcnRwYWdlX3RzICk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5lcmF0ZVNlcnZpY2VXb3JrZXIoIFByZWZzICRwcmVmcywgJHRzLCBzdHJpbmcgJGRlc3QgPSBudWxsICkKICAgIHsKICAgICAgICAkdHMgPSAoaW50KSAkdHM7CgogICAgICAgIC8vIGFic29sdXRlbHkgZ2VuZXJhdGUgdGhlIHNlcnZpY2Ugd29ya2VyCiAgICAgICAgJGNvbmZpZyA9ICR0aGlzLT5tb2QtPkdldENvbmZpZygpOwogICAgICAgIGlmKCAhJGRlc3QgKSB7CiAgICAgICAgICAgICRkZXN0ID0gJGNvbmZpZ1sncm9vdF9wYXRoJ10uJy8nLkNHU2ltcGxlUFdBOjpXT1JLRVJfRklMRU5BTUU7CiAgICAgICAgfQogICAgICAgIGlmKCBpc19maWxlKCRkZXN0KSAmJiAhaXNfd3JpdGFibGUoJGRlc3QpICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCAkdGhpcy0+bW9kLT5MYW5nKCdlcnJfcGVybWlzc2lvbicsICRkZXN0KSApOwoKICAgICAgICAvLyBpZiB3ZSBoYXZlIGFuIG9mZmxpbmUgcGFnZQogICAgICAgIC8vIGdldCBpdHMgVVJMCiAgICAgICAgJG9mZmxpbmVfdXJsID0gbnVsbDsKICAgICAgICAkY29udGVudG9wcyA9IGNtc21zKCktPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CiAgICAgICAgJGNvbnRlbnRvYmogPSAkY29udGVudG9wcy0+TG9hZENvbnRlbnRGcm9tQWxpYXMoIE9mZmxpbmVQYWdlVHlwZTo6UEFHRV9BTElBUyApOwogICAgICAgIGlmKCAkY29udGVudG9iaiApICRvZmZsaW5lX3VybCA9ICRjb250ZW50b2JqLT5HZXRVUkwoKTsKCiAgICAgICAgLy8gd2UgYWxyZWFkeSBtdXN0IGhhdmUgaGFkIHRoZXNlIHJlc291cmNlcyBwYXJzZWQKICAgICAgICAkc3RhdGljX3VybHMgPSAkdGhpcy0+c3RvcmFnZS0+Z2V0U3RhdGljVVJMUygpOwoKICAgICAgICAkc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7CiAgICAgICAgJHRwbCA9ICRzbWFydHktPkNyZWF0ZVRlbXBsYXRlKCR0aGlzLT5tb2QtPkdldFRlbXBsYXRlUmVzb3VyY2UoJ3NlcnZpY2V3b3JrZXIudHBsJykpOwogICAgICAgICR0cGwtPmFzc2lnbignY2FjaGVfdHMnLCR0cyk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdhc3NldHNfZGlyJywgJGNvbmZpZ1snYXNzZXRzX2RpciddKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ29mZmxpbmVfdXJsJywkb2ZmbGluZV91cmwpOwogICAgICAgICR0cGwtPmFzc2lnbignc3RhdGljX3VybHMnLCR0aGlzLT5zdG9yYWdlLT5nZXRTdGF0aWNVUkxTKCkpOwogICAgICAgICRvdXQgPSAkdHBsLT5mZXRjaCgpOwogICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRkZXN0LCAkb3V0KTsKICAgIH0KCn0gLy8gY2xhc3M=]]></data>
	</file>
	<file>
	  <filename>/lib/class.OfflinePageType.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHU2ltcGxlUFdBOwp1c2UgQ29udGVudDsKCmNsYXNzIE9mZmxpbmVQYWdlVHlwZSBleHRlbmRzIENvbnRlbnQKewogICAgY29uc3QgUEFHRV9BTElBUyA9ICdjZ3B3YV9PZmZsaW5lUGFnZSc7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7CgogICAgICAgICR0aGlzLT5kb0FsaWFzQ2hlY2sgPSBmYWxzZTsKICAgICAgICAkdGhpcy0+ZG9BdXRvQWxpYXNJZkVuYWJsZWQgPSBmYWxzZTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0X21vZCgpCiAgICB7CiAgICAgICAgcmV0dXJuIFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX0NHU0lNUExFUFdBKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gSGFuZGxlc0FsaWFzKCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgcHVibGljIGZ1bmN0aW9uIFR5cGUoKSB7IHJldHVybiAnY2dwd2Ffb2ZmbGluZXBhZ2V0eXBlJzsgfQogICAgcHVibGljIGZ1bmN0aW9uIEZyaWVuZGxZTmFtZSgpIHsgcmV0dXJuICR0aGlzLT5nZXRfbW9kKCktPkxhbmcoJ2NvbnRlbnR0eXBlX29mZmxpbmVwYWdlJyk7IH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0UHJvcGVydGllcygpCiAgICB7CiAgICAgICAgcGFyZW50OjpTZXRQcm9wZXJ0aWVzKCk7CiAgICAgICAgLy8kdGhpcy0+UmVtb3ZlUHJvcGVydHkoJ3NlY3VyZScsMCk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByb3BlcnR5KCdzZWFyY2hhYmxlJywwKTsKICAgICAgICAvLyR0aGlzLT5SZW1vdmVQcm9wZXJ0eSgncGFyZW50JywtMSk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByb3BlcnR5KCdzaG93aW5tZW51JyxmYWxzZSk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByb3BlcnR5KCdtZW51dGV4dCcsJycpOwogICAgICAgICR0aGlzLT5SZW1vdmVQcm9wZXJ0eSgndGFyZ2V0JywnJyk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByb3BlcnR5KCdleHRyYTEnLCcnKTsKICAgICAgICAkdGhpcy0+UmVtb3ZlUHJvcGVydHkoJ2V4dHJhMicsJycpOwogICAgICAgICR0aGlzLT5SZW1vdmVQcm9wZXJ0eSgnZXh0cmEzJywnJyk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByb3BlcnR5KCdpbWFnZScsJycpOwogICAgICAgICR0aGlzLT5SZW1vdmVQcm9wZXJ0eSgndGh1bWJuYWlsJywnJyk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByb3BlcnR5KCd0YWJpbmRleCcsJycpOwogICAgICAgICR0aGlzLT5SZW1vdmVQcm9wZXJ0eSgnYWNjZXNza2V5JywnJyk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByb3BlcnR5KCd0aXRsZWF0dHJpYnV0ZScsJycpOwogICAgICAgICR0aGlzLT5SZW1vdmVQcm9wZXJ0eSgnYWN0aXZlJyx0cnVlKTsKICAgICAgICAkdGhpcy0+UmVtb3ZlUHJvcGVydHkoJ2NhY2hhYmxlJyxmYWxzZSk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByb3BlcnR5KCdwYWdlX3VybCcsJycpOwoKICAgICAgICAkdGhpcy0+UmVtb3ZlUHJvcGVydHkoJ2FsaWFzJywnJyk7CiAgICAgICAgJHRoaXMtPkFkZEJhc2VQcm9wZXJ0eSgnYWxpYXMnLDEwLDEpOwoKICAgICAgICAjVHVybiBvbiBwcmV2aWV3CiAgICAgICAgJHRoaXMtPm1QcmV2aWV3ID0gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gSXNDb3B5YWJsZSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gSXNEZWZhdWx0UG9zc2libGUoKSB7IHJldHVybiBmYWxzZTsgfQogICAgcHVibGljIGZ1bmN0aW9uIEhhc1VzYWJsZUxpbmsoKSB7IHJldHVybiBmYWxzZTsgfQogICAgcHVibGljIGZ1bmN0aW9uIFdhbnRzQ2hpbGRyZW4oKSB7IHJldHVybiBmYWxzZTsgfQogICAgcHVibGljIGZ1bmN0aW9uIElzU3lzdGVtUGFnZSgpIHsgcmV0dXJuIHRydWU7IH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gRmlsbFBhcmFtcygkcGFyYW1zLCAkZWRpdGluZyA9IGZhbHNlKQogICAgewoKICAgICAgICBwYXJlbnQ6OkZpbGxQYXJhbXMoJHBhcmFtcywkZWRpdGluZyk7CiAgICAgICAgJHRoaXMtPm1TaG93SW5NZW51ID0gZmFsc2U7CiAgICAgICAgJHRoaXMtPm1DYWNoYWJsZSA9IGZhbHNlOwogICAgICAgICR0aGlzLT5tQWN0aXZlID0gdHJ1ZTsKICAgIH0KCiAgICBmdW5jdGlvbiBkaXNwbGF5X3NpbmdsZV9lbGVtZW50KCRvbmUsJGFkZGluZykKICAgIHsKICAgICAgICBzd2l0Y2goJG9uZSkgewogICAgICAgIGNhc2UgJ2FsaWFzJzoKICAgICAgICAgICAgJGZsZCA9ICc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhbGlhcyIgdmFsdWU9Iicuc2VsZjo6UEFHRV9BTElBUy4nIiByZWFkb25seS8+PHNwYW4+Jy5zZWxmOjpQQUdFX0FMSUFTLic8L3NwYW4+JzsKICAgICAgICAgICAgcmV0dXJuIFsgbGFuZygnYWxpYXMnKSwgJGZsZCBdOwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICByZXR1cm4gcGFyZW50OjpkaXNwbGF5X3NpbmdsZV9lbGVtZW50KCRvbmUsJGFkZGluZyk7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIFZhbGlkYXRlRGF0YSgpCiAgICB7CiAgICAgICAgJGVycm9ycyA9IHBhcmVudDo6VmFsaWRhdGVEYXRhKCk7CiAgICAgICAgaWYoICRlcnJvcnMgPT09IEZBTFNFICkgJGVycm9ycyA9IFtdOwoKICAgICAgICAvL0RvIG91ciBvd24gYWxpYXMgY2hlY2sKICAgICAgICBpZiAoJHRoaXMtPm1BbGlhcyA9PSAnJykgewogICAgICAgICAgICAkZXJyb3JzW10gPSBsYW5nKCdub2ZpZWxkZ2l2ZW4nLCBbbGFuZygnZXJyb3JfdHlwZScpXSApOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKCAkdGhpcy0+bUFsaWFzICE9IHNlbGY6OlBBR0VfQUxJQVMgKSB7CiAgICAgICAgICAgICRlcnJvcnNbXSA9ICdpbnZhbGlkIGFsaWFzICcuJHRoaXMtPm1BbGlhczsgLy8gdG9kbzogdHJhbnNsYXRlIG1lLgogICAgICAgIH0KICAgICAgICBlbHNlIGlmICgkdGhpcy0+bUFsaWFzICE9ICR0aGlzLT5tT2xkQWxpYXMpIHsKICAgICAgICAgICAgJGdDbXMgPSBjbXNtcygpOwogICAgICAgICAgICAkY29udGVudG9wcyA9ICRnQ21zLT5HZXRDb250ZW50T3BlcmF0aW9ucygpOwogICAgICAgICAgICAkZXJyb3IgPSAkY29udGVudG9wcy0+Q2hlY2tBbGlhc0Vycm9yKCR0aGlzLT5tQWxpYXMsICR0aGlzLT5tSWQpOwogICAgICAgICAgICBpZiAoJGVycm9yICE9PSBGQUxTRSkgJGVycm9yc1tdID0gJGVycm9yOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIChjb3VudCgkZXJyb3JzKSA+IDAgPyAkZXJyb3JzIDogRkFMU0UpOwogICAgfQp9IC8vIGNsYXNz]]></data>
	</file>
	<file>
	  <filename>/lib/class.Prefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHU2ltcGxlUFdBOwoKY2xhc3MgUHJlZnMgaW1wbGVtZW50cyBcSnNvblNlcmlhbGl6YWJsZSwgXEFycmF5QWNjZXNzCnsKICAgIGNvbnN0IERJU1BMQVlfQlJPV1NFUiA9ICdicm93c2VyJzsKICAgIGNvbnN0IERJU1BMQVlfRlVMTFNDUkVFTiA9ICdmdWxsc2NyZWVuJzsKICAgIGNvbnN0IERJU1BMQVlfU1RBTkRBTE9ORSA9ICdzdGFuZGFsb25lJzsKICAgIGNvbnN0IERJU1BMQVlfTUlOSU1BTFVJICA9ICdtaW5pbWFsLXVpJzsKICAgIGNvbnN0IE9SSUVOVEFUSU9OX0RGTFQgICA9ICdkZmx0JzsKICAgIGNvbnN0IE9SSUVOVEFUSU9OX1BPUlRSQUlUID0gJ3BvcnRyYWl0JzsKICAgIGNvbnN0IE9SSUVOVEFUSU9OX0xBTkRTQ0FQRSA9ICdsYW5kc2NhcGUnOwoKICAgIHByaXZhdGUgJF9kYXRhID0KICAgICAgICBbCiAgICAgICAgICAgICduYW1lJz0+bnVsbCwgJ3Nob3J0X25hbWUnPT5udWxsLCAnZGVzY3JpcHRpb24nPT5udWxsLAogICAgICAgICAgICAnZGlzcGxheSc9PnNlbGY6OkRJU1BMQVlfU1RBTkRBTE9ORSwgJ29yaWVudGF0aW9uJz0+c2VsZjo6T1JJRU5UQVRJT05fREZMVCwKICAgICAgICAgICAgJ2JhY2tncm91bmRfY29sb3InPT4nI2ZmZmZmZicsICd0aGVtZV9jb2xvcic9PicjMDAwMDAwJywgJ21hc3Rlcl9pY29uJz0+bnVsbCwgJ2ljb25zJz0+bnVsbCwKICAgICAgICAgICAgJ3N0YXJ0X3BhZ2UnPT5udWxsLAogICAgICAgICAgICAnaW5jbHVkZV9zdyc9PnRydWUsICdpbmNsdWRlX2lvc21ldGEnPT50cnVlLAogICAgICAgIF07CgogICAgcHVibGljIGZ1bmN0aW9uIE9mZnNldEdldCggJGtleSApCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fX2dldCggJGtleSApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldCggJGtleSApCiAgICB7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ25hbWUnOgogICAgICAgIGNhc2UgJ3Nob3J0X25hbWUnOgogICAgICAgIGNhc2UgJ2Rlc2NyaXB0aW9uJzoKICAgICAgICBjYXNlICdkaXNwbGF5JzoKICAgICAgICBjYXNlICdvcmllbnRhdGlvbic6CiAgICAgICAgY2FzZSAnYmFja2dyb3VuZF9jb2xvcic6CiAgICAgICAgY2FzZSAndGhlbWVfY29sb3InOgogICAgICAgIGNhc2UgJ21hc3Rlcl9pY29uJzoKICAgICAgICBjYXNlICdzdGFydF9wYWdlJzoKICAgICAgICAgICAgcmV0dXJuIHRyaW0oJHRoaXMtPl9kYXRhWyRrZXldKTsKCiAgICAgICAgY2FzZSAnaW5jbHVkZV9zdyc6CiAgICAgICAgY2FzZSAnaW5jbHVkZV9pb3NtZXRhJzoKICAgICAgICAgICAgcmV0dXJuIChib29sKSAkdGhpcy0+X2RhdGFbJGtleV07CgogICAgICAgIGNhc2UgJ2ljb25zJzoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5fZGF0YVska2V5XTsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oIiRrZXkgaXMgbm90IGEgZ2V0dGFibGUgcHJvcGVydHkgb2YgIi5nZXRfY2xhc3MoJHRoaXMpKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIE9mZnNldFNldCggJGtleSwgJHZhbCApCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fX3NldCggJGtleSwgJHZhbCApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3NldCggJGtleSwgJHZhbCApCiAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oIiRrZXkgaXMgbm90IGEgc2V0dGFibGUgcHJvcGVydHkgb2YgIi5nZXRfY2xhc3MoJHRoaXMpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gT2Zmc2V0RXhpc3RzKCAka2V5ICkKICAgIHsKICAgICAgICByZXR1cm4gaXNzZXQoICR0aGlzLT5fZGF0YVska2V5XSApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRVbnNldCggJGtleSApIHt9CgogICAgcHVibGljIGZ1bmN0aW9uIGpzb25TZXJpYWxpemUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X2RhdGE7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVfZnJvbV9hcnJheSggYXJyYXkgJGluICkKICAgIHsKICAgICAgICAkb2JqID0gbmV3IHNlbGY7CiAgICAgICAgZm9yZWFjaCggJGluIGFzICRrZXkgPT4gJHZhbCkgewogICAgICAgICAgICBzd2l0Y2goICRrZXkgKSB7CiAgICAgICAgICAgIGNhc2UgJ25hbWUnOgogICAgICAgICAgICBjYXNlICdzaG9ydF9uYW1lJzoKICAgICAgICAgICAgY2FzZSAnZGlzcGxheSc6CiAgICAgICAgICAgIGNhc2UgJ3RoZW1lX2NvbG9yJzoKICAgICAgICAgICAgY2FzZSAnYmFja2dyb3VuZF9jb2xvcic6CiAgICAgICAgICAgIGNhc2UgJ21hc3Rlcl9pY29uJzoKICAgICAgICAgICAgY2FzZSAnc3RhcnRfcGFnZSc6CgkgICAgY2FzZSAnZGVzY3JpcHRpb24nOgogICAgICAgICAgICAgICAgJG9iai0+X2RhdGFbJGtleV0gPSB0cmltKCR2YWwpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ2luY2x1ZGVfc3cnOgogICAgICAgICAgICBjYXNlICdpbmNsdWRlX2lvc21ldGEnOgogICAgICAgICAgICAgICAgJG9iai0+X2RhdGFbJGtleV0gPSBjbXNfdG9fYm9vbCgkdmFsKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdkaXNwbGF5JzoKICAgICAgICAgICAgICAgICR2YWwgPSBzdHJ0b2xvd2VyKCR2YWwpOwogICAgICAgICAgICAgICAgc3dpdGNoKCAkdmFsICkgewogICAgICAgICAgICAgICAgY2FzZSBzZWxmOjpESVNQTEFZX0JST1dTRVI6CiAgICAgICAgICAgICAgICBjYXNlIHNlbGY6OkRJU1BMQVlfRlVMTFNDUkVFTjoKICAgICAgICAgICAgICAgIGNhc2Ugc2VsZjo6RElTUExBWV9TVEFOZEFMT05FOgogICAgICAgICAgICAgICAgY2FzZSBzZWxmOjpESVNQTEFZX01JTklNQUxVSToKICAgICAgICAgICAgICAgICAgICAkb2JqLT5fZGF0YVska2V5XSA9ICR2YWw7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIC8vIHVua25vd24sIGRvIG5vdGhpbmcKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdvcmllbnRhdGlvbic6CiAgICAgICAgICAgICAgICAkdmFsID0gc3RydG9sb3dlcigkdmFsKTsKICAgICAgICAgICAgICAgIHN3aXRjaCggJHZhbCApIHsKICAgICAgICAgICAgICAgIGNhc2Ugc2VsZjo6T1JJRU5UQVRJT05fUE9SVFJBSVQ6CiAgICAgICAgICAgICAgICBjYXNlIHNlbGY6Ok9SSUVOVEFUSU9OX0xBTkRTQ0FQRToKICAgICAgICAgICAgICAgICAgICAkb2JqLT5fZGF0YVska2V5XSA9ICR2YWw7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIHNlbGY6Ok9SSUVOVEFUSU9OX0RGTFQ6CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICRvYmotPl9kYXRhWyRrZXldID0gc2VsZjo6T1JJRU5UQVRJT05fREZMVDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdpY29ucyc6CiAgICAgICAgICAgICAgICBpZiggaXNfYXJyYXkoJHZhbCkgKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCggJHZhbCBhcyAkcm93ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiggaXNzZXQoJHJvd1snc3JjJ10pICYmICFlbXB0eSgkcm93WydzcmMnXSkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc2V0KCRyb3dbJ3NpemVzJ10pICYmICFlbXB0eSgkcm93WydzaXplcyddKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNzZXQoJHJvd1sndHlwZSddKSAmJiAhZW1wdHkoJHJvd1sndHlwZSddKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvYmotPl9kYXRhWyRrZXldW10gPSAkcm93OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb2JqOwogICAgfQoKfSAvLyBjbGFzcwo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.ServiceWorkerAddon.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHU2ltcGxlUFdBOwoKYWJzdHJhY3QgY2xhc3MgU2VydmljZVdvcmtlckFkZG9uCnsKICAgIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiBnZXRTY3JpcHRVUkwoKSA6IHN0cmluZzsKCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gZ2V0TW9kaWZpZWREYXRlKCkgOiBpbnQ7Cgp9IC8vIGNsYXNz]]></data>
	</file>
	<file>
	  <filename>/lib/class.Storage.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHU2ltcGxlUFdBOwp1c2UgQ0dTaW1wbGVQV0E7CgpjbGFzcyBTdG9yYWdlCnsKICAgIGNvbnN0IFBSRUZfUFJFRlNPQkogPSAnX3ByZWZzXyc7CiAgICBjb25zdCBQUkVGX1BSRUZTU0lHID0gJ19wcmVmc3NpZ18nOwogICAgY29uc3QgUFJFRl9TVEFUSUNUWFQgPSAnX3N0YXRpY18nOwogICAgY29uc3QgUFJFRl9TVEFUSUNTSUcgPSAnX3N0YXRpY3NpZ18nOwoKICAgIHByaXZhdGUgJG1vZDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoIENHU2ltcGxlUFdBICRtb2QgKQogICAgewogICAgICAgICR0aGlzLT5tb2QgPSAkbW9kOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkUHJlZnMoKQogICAgewogICAgICAgICRwcmVmcyA9IFByZWZzOjpjcmVhdGVfZnJvbV9hcnJheSggW10gKTsKICAgICAgICAkZGF0YSA9ICR0aGlzLT5tb2QtPkdldFByZWZlcmVuY2UoIHNlbGY6OlBSRUZfUFJFRlNPQkogKTsKICAgICAgICBpZiggJGRhdGEgKSAkZGF0YSA9IGpzb25fZGVjb2RlKCAkZGF0YSwgVFJVRSApOwogICAgICAgIGlmKCAkZGF0YSApICRwcmVmcyA9IFByZWZzOjpjcmVhdGVfZnJvbV9hcnJheSggJGRhdGEgKTsKICAgICAgICByZXR1cm4gJHByZWZzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQcmVmZXJlbmNlc1NpZygpCiAgICB7CiAgICAgICAgJGRhdGEgPSAkdGhpcy0+bW9kLT5HZXRQcmVmZXJlbmNlKCBzZWxmOjpQUkVGX1BSRUZTT0JKICk7CiAgICAgICAgaWYoICRkYXRhICkgcmV0dXJuIG1kNSgkZGF0YSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNhdmVQcmVmcyggUHJlZnMgJHByZWZzICkKICAgIHsKICAgICAgICAkZGF0YSA9IGpzb25fZW5jb2RlKCAkcHJlZnMgKTsKICAgICAgICAkdGhpcy0+bW9kLT5TZXRQcmVmZXJlbmNlKCBzZWxmOjpQUkVGX1BSRUZTT0JKLCAkZGF0YSApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdGF0aWNUZXh0KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm1vZC0+R2V0UHJlZmVyZW5jZSggc2VsZjo6UFJFRl9TVEFUSUNUWFQgKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0U3RhdGljVGV4dCggJHN0ciApCiAgICB7CiAgICAgICAgJHN0ciA9IHRyaW0oJHN0cik7CiAgICAgICAgJHRoaXMtPm1vZC0+U2V0UHJlZmVyZW5jZSggc2VsZjo6UFJFRl9TVEFUSUNUWFQsICRzdHIgKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3RhdGljVVJMUygpCiAgICB7CiAgICAgICAgJGNvbmZpZyA9ICR0aGlzLT5tb2QtPkdldENvbmZpZygpOwogICAgICAgICR2YWxpZGF0ZV9yZWxhdGl2ZV91cmwgPSBmdW5jdGlvbiggJHVybCApIHVzZSAoJGNvbmZpZykgewogICAgICAgICAgICAvLyBleGNsdWRlIGFueXRoaW5nIHdpdGggdGhlICcuLi8nIHBhdHRlcm4KICAgICAgICAgICAgaWYoIHN0cnBvcyggJHVybCwgJy4uLycpICE9PSBGQUxTRSApIHJldHVybjsKICAgICAgICAgICAgLy8gZXhjbHVkZSBhbnl0aGluZyB0aGF0IHN0YXJ0cyB3aXRoIHRoZSBmdHAgcHJvdG9jb2wKICAgICAgICAgICAgaWYoIHN0YXJ0c3dpdGgoICR1cmwsICdmdHA6Ly8nKSApIHJldHVybjsKICAgICAgICAgICAgaWYoIHN0YXJ0c3dpdGgoICR1cmwsICdodHRwOi8vJykgfHwgc3RhcnRzd2l0aCgkdXJsLCdodHRwczovLycpICkgewogICAgICAgICAgICAgICAgLy8gc3R1ZmYgd2l0aCBodHRwIGNhbiBiZSBhY2NlcHRlZC4KICAgICAgICAgICAgICAgIGlmKCBzdGFydHN3aXRoKCAkdXJsLCAkY29uZmlnWydyb290X3VybCddKSApIHsKICAgICAgICAgICAgICAgICAgICAkdXJsID0gc3Vic3RyKCR1cmwsc3RybGVuKCRjb25maWdbJ3Jvb3RfdXJsJ10pKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gZXh0ZXJuYWwgdXJsCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR1cmw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gaWYgaXQgc3RhcnRzIHdpdGggLyByZW1vdmUgdGhlIGxlYWRpbmcgc2xhc2gKICAgICAgICAgICAgaWYoIHN0YXJ0c3dpdGgoICR1cmwsICcvJykgKSAkdXJsID0gc3Vic3RyKCR1cmwsMSk7CiAgICAgICAgICAgIC8vIGJ1aWxkIGEgZmlsZXNwZWMKICAgICAgICAgICAgLy8gZW5zdXJlIHRoZSBmaWxlIGV4aXN0cwogICAgICAgICAgICAkZnMgPSAkY29uZmlnWydyb290X3BhdGgnXS4nLycuJHVybDsKICAgICAgICAgICAgaWYoICFpc19maWxlKCRmcykgKSByZXR1cm47CiAgICAgICAgICAgIHJldHVybiAkdXJsOwogICAgICAgIH07CgogICAgICAgICR0ZXh0ID0gJHRoaXMtPmdldFN0YXRpY1RleHQoKTsKICAgICAgICBpZiggISR0ZXh0ICkgcmV0dXJuOwoKICAgICAgICAkb3V0ID0gbnVsbDsKICAgICAgICAkbGluZXMgPSBleHBsb2RlKCJcbiIsICR0ZXh0KTsKICAgICAgICBmb3JlYWNoKCAkbGluZXMgYXMgJGxpbmUgKSB7CiAgICAgICAgICAgICRsaW5lID0gdHJpbSgkbGluZSk7CiAgICAgICAgICAgIGlmKCAhJGxpbmUgKSBjb250aW51ZTsKCiAgICAgICAgICAgICR0bXAgPSAkdmFsaWRhdGVfcmVsYXRpdmVfdXJsKCAkbGluZSApOwogICAgICAgICAgICBpZiggJHRtcCApICRvdXRbXSA9ICR0bXA7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKCn0gLy8gY2xhc3MK]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJDR1NpbXBsZVBXQSIKdmVyc2lvbiA9ICIxLjAuMSIKYXV0aG9yID0gImNhbGd1eTEwMDAiCmF1dGhvcmVtYWlsID0gImNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciCm1pbmNtc3ZlcnNpb24gPSAiMi4yLjgiCmxhenlsb2FkYWRtaW4gPSAwCmxhenlsb2FkZnJvbnRlbmQgPSAwCltkZXBlbmRzXQpDR0V4dGVuc2lvbnMgPSAiMS41My4xMCIK]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/default.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGxpbmsgcmVsPSJtYW5pZmVzdCIgaHJlZj0ieyRtYW5pZmVzdF91cmx9Ij4Ke2lmICRwcmVmcy0+aW5jbHVkZV9zd30KICAgeyogSElOVDogWW91IG1heSBiZSBhYmxlIHRvIHVzZSBjbXNfcXVldWVfc2NyaXB0IGhlcmUsIGlmIHRoaXMgdGFnIGlzIHBsYWNlZCBpbiB0aGUgdG9wIG9mIHRoZSBDTVNNUyBwYWdlIHRlbXBsYXRlLAogICAgICBhbmQgb3V0cHV0IGFzc2lnbmVkIHRvIGEgdmFyaWFibGUgdGhhdCBpcyB1c2VkIGluIHRoZSBoZWFkIHNlY3Rpb24gKn0KICAgPHNjcmlwdCBzcmM9InskaW5pdGpzX3VybH0iPjwvc2NyaXB0Pgp7L2lmfQp7aWYgJHByZWZzLT5pbmNsdWRlX2lvc21ldGF9CiAgIHsqIElPUyBtZXRhIHRhZ3MsCiAgICAgIG5vdGU6IHJlY2VudCB2ZXJzaW9ucyBvZiBJT1MgcmVhZCB0aGUgbWFuaWZlc3QsIGFuZCBzdXBwb3J0IHNlcnZpY2Ugd29ya2VycwogICAgICBub3RlOiByZWNlbnQgdmVyc2lvbnMgb2YgSU9TIHdpbGwgcmVzaXplIChzbWFsbGVyKSBpY29ucyB0aGF0IGFyZSBzbWFsbGVyIHRoYW4gMTgweDE4MCBmb3IgdmFyaW91cyBkZXZpY2VzCiAgICp9CiAgIDxtZXRhIG5hbWU9ImFwcGxlLW1vYmlsZS13ZWItYXBwLWNhcGFibGUiIGNvbnRlbnQ9InllcyI+CiAgIDxtZXRhIG5hbWU9ImFwcGxlLW1vYmlsZS13ZWItYXBwLXRpdGxlIiBjb250ZW50PSJ7JHByZWZzLT5zaG9ydF9uYW1lfGRlZmF1bHQ6JHByZWZzLT5uYW1lfHRydW5jYXRlOjEyfSI+CiAgIHtpZiAhZW1wdHkoJGljb25fMTgwKX08bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9InskaWNvbl8xODB9IiAvPnsvaWZ9CnsvaWZ9]]></data>
	</file>
	<file>
	  <filename>/templates/defaultadmin.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdD4KJChmdW5jdGlvbigpewogICAkKCdbbmFtZT1tYXN0ZXJfaWNvbl0nKS5yZW1vdmVBdHRyKCdzaXplJyk7Cn0pCjwvc2NyaXB0PgoKe3RhYl9oZWFkZXIgbmFtZT0nc2V0dGluZ3MnIGxhYmVsPSRtb2QtPkxhbmcoJ2hkcl9zZXR0aW5ncycpfQp7dGFiX2hlYWRlciBuYW1lPSdzdGF0aWMnIGxhYmVsPSRtb2QtPkxhbmcoJ2hkcl9zdGF0aWMnKX0KCnt0YWJfc3RhcnQgbmFtZT0nc2V0dGluZ3MnfQp7Zm9ybV9zdGFydH0KPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgPGxhYmVsIGNsYXNzPSJncmlkXzMiIGZvcj0iZl9uYW1lIj57JG1vZC0+TGFuZygnbGJsX25hbWUnKX06PC9sYWJlbD4KICAgPGRpdiBjbGFzcz0iZ3JpZF84Ij4KICAgIAk8aW5wdXQgY2xhc3M9ImdyaWRfMTIiIGlkPSJmX25hbWUiIG5hbWU9Im5hbWUiIHZhbHVlPSJ7JHByZWZzLm5hbWV9Ii8+Cgk8ZGl2IGNsYXNzPSJncmlkXzEyIj57JG1vZC0+TGFuZygnaW5mb19mX25hbWUnKX08L2Rpdj4KICAgPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfMyIgZm9yPSJmX3Nob3J0X25hbWUiPnskbW9kLT5MYW5nKCdsYmxfc2hvcnRfbmFtZScpfTo8L2xhYmVsPgogICA8ZGl2IGNsYXNzPSJncmlkXzgiPgogICAgCTxpbnB1dCBjbGFzcz0iZ3JpZF8xMiIgaWQ9ImZfc2hvcnRfbmFtZSIgbmFtZT0ic2hvcnRfbmFtZSIgdmFsdWU9InskcHJlZnMuc2hvcnRfbmFtZX0iLz4KCTxkaXYgY2xhc3M9ImdyaWRfMTIiPnskbW9kLT5MYW5nKCdpbmZvX2Zfc2hvcnRfbmFtZScpfTwvZGl2PgogICA8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgIDxsYWJlbCBjbGFzcz0iZ3JpZF8zIiBmb3I9ImZfZGVzY3JpcHRpb24iPnskbW9kLT5MYW5nKCdsYmxfZGVzY3JpcHRpb24nKX06PC9sYWJlbD4KICAgPGRpdiBjbGFzcz0iZ3JpZF84Ij4KICAgIAk8aW5wdXQgY2xhc3M9ImdyaWRfMTIiIGlkPSJmX2Rlc2NyaXB0aW9uIiBuYW1lPSJkZXNjcmlwdGlvbiIgdmFsdWU9InskcHJlZnMuZGVzY3JpcHRpb259Ii8+CiAgIDwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgPGxhYmVsIGNsYXNzPSJncmlkXzMiIGZvcj0iZl9iZ2NvbG9yIj57JG1vZC0+TGFuZygnbGJsX2JhY2tncm91bmRfY29sb3InKX06PC9sYWJlbD4KICAgPGRpdiBjbGFzcz0iZ3JpZF84Ij4KICAgIAk8aW5wdXQgY2xhc3M9ImdyaWRfMiIgaWQ9ImZfYmdjb2xvciIgbmFtZT0iYmFja2dyb3VuZF9jb2xvciIgdmFsdWU9InskcHJlZnMuYmFja2dyb3VuZF9jb2xvcn0iIHR5cGU9ImNvbG9yIi8+Cgk8ZGl2IGNsYXNzPSJncmlkXzEyIj57JG1vZC0+TGFuZygnaW5mb19mX2JhY2tncm91bmRfY29sb3InKX08L2Rpdj4KICAgPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfMyIgZm9yPSJmX3RoZW1lY29sb3IiPnskbW9kLT5MYW5nKCdsYmxfdGhlbWVfY29sb3InKX06PC9sYWJlbD4KICAgPGRpdiBjbGFzcz0iZ3JpZF84Ij4KICAgIAk8aW5wdXQgY2xhc3M9ImdyaWRfMiIgaWQ9ImZfdGhlbWVjb2xvciIgbmFtZT0idGhlbWVfY29sb3IiIHZhbHVlPSJ7JHByZWZzLnRoZW1lX2NvbG9yfSIgdHlwZT0iY29sb3IiLz4KCTxkaXYgY2xhc3M9ImdyaWRfMTIiPnskbW9kLT5MYW5nKCdpbmZvX2ZfdGhlbWVfY29sb3InKX08L2Rpdj4KICAgPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfMyIgZm9yPSJmX2Rpc3BsYXkiPnskbW9kLT5MYW5nKCdsYmxfZGlzcGxheScpfTo8L2xhYmVsPgogICA8ZGl2IGNsYXNzPSJncmlkXzgiPgogICAgICAgIDxzZWxlY3QgY2xhc3M9ImdyaWRfMTIiIGlkPSJmX2Rpc3BsYXkiIG5hbWU9ImRpc3BsYXkiPgoJICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kZGlzcGxheV9saXN0IHNlbGVjdGVkPSRwcmVmcy5kaXNwbGF5fQoJPC9zZWxlY3Q+Cgk8ZGl2IGNsYXNzPSJncmlkXzEyIj57JG1vZC0+TGFuZygnaW5mb19mX2Rpc3BsYXknKX08L2Rpdj4KICAgPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfMyIgZm9yPSJmX2Rpc3BsYXkiPnskbW9kLT5MYW5nKCdsYmxfc3RhcnRwYWdlJyl9OjwvbGFiZWw+CiAgIDxkaXYgY2xhc3M9ImdyaWRfOCI+CiAgICAgICAge3BhZ2Vfc2VsZWN0b3IgbmFtZT0nc3RhcnRwYWdlJyB2YWx1ZT0kcHJlZnMuc3RhcnRfcGFnZX0KCTxkaXYgY2xhc3M9ImdyaWRfMTIiPnskbW9kLT5MYW5nKCdpbmZvX2Zfc3RhcnRwYWdlJyl9PC9kaXY+CiAgIDwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgPGxhYmVsIGNsYXNzPSJncmlkXzMiIGZvcj0iZl9vcmllbnRhdGlvbiI+eyRtb2QtPkxhbmcoJ2xibF9vcmllbnRhdGlvbicpfTo8L2xhYmVsPgogICA8ZGl2IGNsYXNzPSJncmlkXzgiPgogICAgICAgIDxzZWxlY3QgY2xhc3M9ImdyaWRfMTIiIGlkPSJmX29yaWVudGF0aW9uIiBuYW1lPSJvcmllbnRhdGlvbiI+CgkgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRvcmllbnRhdGlvbl9saXN0IHNlbGVjdGVkPSRwcmVmcy5vcmllbnRhdGlvbn0KCTwvc2VsZWN0PgoJPGRpdiBjbGFzcz0iZ3JpZF8xMiI+eyRtb2QtPkxhbmcoJ2luZm9fZl9vcmllbnRhdGlvbicpfTwvZGl2PgogICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfMyI+eyRtb2QtPkxhbmcoJ2xibF9tYXN0ZXJfaWNvbicpfTo8L2xhYmVsPgogICA8ZGl2IGNsYXNzPSJncmlkXzYiPgogICAgCXtjbXNfZmlsZXBpY2tlciBuYW1lPSdtYXN0ZXJfaWNvbicgdmFsdWU9JHByZWZzLm1hc3Rlcl9pY29ufQoJPGRpdiBjbGFzcz0iZ3JpZF8xMiI+eyRtb2QtPkxhbmcoJ2luZm9fZl9tYXN0ZXJfaWNvbicpfTwvZGl2PgogICA8L2Rpdj4KPC9kaXY+Cgo8aHIvPgoKPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgPGxhYmVsIGNsYXNzPSJncmlkXzMiIGZvcj0iZl91c2Vfc3ciPnskbW9kLT5MYW5nKCdsYmxfdXNlX3N3Jyl9OjwvbGFiZWw+CiAgIDxkaXYgY2xhc3M9ImdyaWRfOCI+CiAgICAgICAgPHNlbGVjdCBjbGFzcz0iZ3JpZF8xMiIgaWQ9ImZfdXNlX3N3IiBuYW1lPSJ1c2Vfc3ciPgoJICAgIHtjbXNfeWVzbm8gc2VsZWN0ZWQ9JHByZWZzLmluY2x1ZGVfc3d9Cgk8L3NlbGVjdD4KCTxkaXYgY2xhc3M9ImdyaWRfMTIiPnskbW9kLT5MYW5nKCdpbmZvX2ZfdXNlX3N3Jyl9PC9kaXY+CiAgIDwvZGl2Pgo8L2Rpdj4KCjxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgIDxsYWJlbCBjbGFzcz0iZ3JpZF8zIiBmb3I9ImZfdXNlX2lvc21ldGEiPnskbW9kLT5MYW5nKCdsYmxfdXNlX2lvc21ldGEnKX06PC9sYWJlbD4KICAgPGRpdiBjbGFzcz0iZ3JpZF84Ij4KICAgICAgICA8c2VsZWN0IGNsYXNzPSJncmlkXzEyIiBpZD0iZl91c2VfaW9zbWV0YSIgbmFtZT0idXNlX2lvc21ldGEiPgoJICAgIHtjbXNfeWVzbm8gc2VsZWN0ZWQ9JHByZWZzLmluY2x1ZGVfaW9zbWV0YX0KCTwvc2VsZWN0PgoJPGRpdiBjbGFzcz0iZ3JpZF8xMiI+eyRtb2QtPkxhbmcoJ2luZm9fZl91c2VfaW9zbWV0YScpfTwvZGl2PgogICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8ZGl2IGNsYXNzPSJncmlkXzMiPiZuYnNwOzwvZGl2PgogICA8ZGl2IGNsYXNzPSJncmlkXzgiPgogICAgICAgIDxpbnB1dCBjbGFzcz0iZ3JpZF8yIiB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9InskbW9kLT5MYW5nKCdzdWJtaXQnKX0iLz4KICAgPC9kaXY+CjwvZGl2Pgp7Zm9ybV9lbmR9Cgp7dGFiX3N0YXJ0IG5hbWU9J3N0YXRpYyd9Cntmb3JtX3N0YXJ0fQo8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRtb2QtPkxhbmcoJ2luZm9fc3RhdGljX3RhYicpfTwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfMyI+eyRtb2QtPkxhbmcoJ2xibF9zdGF0aWNfcmVzb3VyY2VzJyl9PC9sYWJlbD4KICAgPGRpdiBjbGFzcz0iZ3JpZF84Ij4KICAgICAgIDx0ZXh0YXJlYSBjbGFzcz0iZ3JpZF8xMiIgbmFtZT0ic3RhdGljIiByb3dzPSIxMCI+eyRzdGF0aWNfdGV4dH08L3RleHRhcmVhPgogICAgICAgPGRpdiBjbGFzcz0iZ3JpZF8xMiI+eyRtb2QtPkxhbmcoJ2luZm9fc3RhdGljX3Jlc291cmNlcycpfTwvZGl2PgogICA8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdF9zdGF0aWMiIHZhbHVlPSJ7bGFuZygnc3VibWl0Jyl9Ii8+CjwvZGl2Pgp7Zm9ybV9lbmR9Cgp7dGFiX2VuZH0=]]></data>
	</file>
	<file>
	  <filename>/templates/manifest.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAie2lmICFlbXB0eSgkcHJlZnMubmFtZSl9eyRwcmVmcy5uYW1lfXtlbHNlfXtzaXRlbmFtZX17L2lmfSIsCiAgICAic2hvcnRfbmFtZSI6ICJ7JHByZWZzLnNob3J0X25hbWV9IiwKICAgICJzdGFydF91cmwiOiAie3Jvb3RfdXJsfSIsCiAgICAiYmFja2dyb3VuZF9jb2xvciI6ICJ7JHByZWZzLmJhY2tncm91bmRfY29sb3J9IiwKICAgICJkZXNjcmlwdGlvbiI6ICJ7JHByZWZzLmRlc2NyaXB0aW9ufSIsCiAgICAiaWNvbnMiOiBbCntmb3JlYWNoICRwcmVmcy5pY29ucyBhcyAkaWNvbn0KICAgICAgIHsge3N0cmlwfQogICAgICAgICAic3JjIjogInskaWNvbi5zcmN9IiwKCSAidHlwZSI6ICJ7JGljb24udHlwZX0iLAoJICJzaXplcyI6ICJ7JGljb24ud2lkdGh9KnskaWNvbi5oZWlnaHR9IgogICAgICAgICB7L3N0cmlwfSB9e2lmICEkaWNvbkBsYXN0fSx7L2lmfQp7L2ZvcmVhY2h9CiAgICBdCn0=]]></data>
	</file>
	<file>
	  <filename>/templates/serviceworker.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogYSBzaW1wbGUgc2VydmljZSB3b3JrZXIgdGhhdCB3aWxsIGNhY2hlIGFsbCBVUkxTIGluIHRoZSAvYXNzZXRzIGRpcmVjdG9yeSAqLwpjb25zdCBDQUNIRV9OQU1FICA9ICdjYWNoZS17JGNhY2hlX3RzfScKY29uc3QgQVNTRVRTX0RJUiAgPSAneyRhc3NldHNfZGlyfScKY29uc3QgUk9PVF9VUkwgICAgPSAne3Jvb3RfdXJsfScKY29uc3QgT0ZGTElORV9VUkwgPSAneyRvZmZsaW5lX3VybH0nCmNvbnN0IFNUQVRJQ19VUkxTID0ge2pzb25fZW5jb2RlKCRzdGF0aWNfdXJscyl9CgpmdW5jdGlvbiBjcmVhdGVDYWNoZUJ1c3RlZFJlcXVlc3QodXJsKSB7CiAgICBsZXQgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHVybCwgeyBjYWNoZTogJ3JlbG9hZCcgfSk7CgogICAgLy8gU2VlIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LXJlcXVlc3QtbW9kZQogICAgLy8gVGhpcyBpcyBub3QgeWV0IHN1cHBvcnRlZCBpbiBDaHJvbWUgYXMgb2YgTTQ4LCBzbyB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkgY2hlY2sgdG8gc2VlCiAgICAvLyBpZiB0aGUgY2FjaGU6ICdyZWxvYWQnIG9wdGlvbiBoYWQgYW55IGVmZmVjdC4KICAgIGlmICgnY2FjaGUnIGluIHJlcXVlc3QpIHJldHVybiByZXF1ZXN0OwoKICAgIC8vIElmIHsgY2FjaGU6ICdyZWxvYWQnIH0gZGlkbid0IGhhdmUgYW55IGVmZmVjdCwgYXBwZW5kIGEgY2FjaGUtYnVzdGluZyBVUkwgcGFyYW1ldGVyIGluc3RlYWQuCiAgICBsZXQgYnVzdGVkVXJsID0gbmV3IFVSTCh1cmwsIHNlbGYubG9jYXRpb24uaHJlZik7CiAgICBidXN0ZWRVcmwuc2VhcmNoICs9IChidXN0ZWRVcmwuc2VhcmNoID8gJyYnIDogJycpICsgJ2NhY2hlYnVzdD0nICsgRGF0ZS5ub3coKTsKICAgIHJldHVybiBuZXcgUmVxdWVzdChidXN0ZWRVcmwpOwp9CgpmdW5jdGlvbiBpc0Fzc2V0UmVxdWVzdCggcmVxdWVzdCApIHsKICAgIGxldCB1cmwgPSBuZXcgVVJMKHJlcXVlc3QudXJsKQogICAgbGV0IHJlID0gbmV3IFJlZ0V4cCggJy8nICsgQVNTRVRTX0RJUiArICcvJyApCiAgICBpZiggcmVxdWVzdC5tZXRob2QgPT09ICdHRVQnICYmIHJlcXVlc3QudXJsLnN0YXJ0c1dpdGgoUk9PVF9VUkwpICYmIHJlcXVlc3QudXJsLm1hdGNoKHJlKSApIHJldHVybiB0cnVlCn0KCi8qKgoqIG9uIGluc3RhbGwsIGNhY2hlIHRoZSBvZmZsaW5lIFVSTCwgYW5kIGFueSBoYXJkY29kZWQgcmVzb3VyY2VzIHRoYXQgaXQgcmVxdWlyZXMuCiovCnNlbGYuYWRkRXZlbnRMaXN0ZW5lcignaW5zdGFsbCcsZnVuY3Rpb24oZXZlbnQpIHsKICAgIGlmKCBPRkZMSU5FX1VSTC5sZW5ndGggKSB7CiAgICAgICAgZXZlbnQud2FpdFVudGlsKAogICAgICAgICAgICBmZXRjaCggY3JlYXRlQ2FjaGVCdXN0ZWRSZXF1ZXN0KCBPRkZMSU5FX1VSTCApICkudGhlbihmdW5jdGlvbihyZXNwb25zZSkgewoJICAgICAgICByZXR1cm4gY2FjaGVzLm9wZW4oQ0FDSEVfTkFNRSkudGhlbihmdW5jdGlvbihjYWNoZSkgewoJICAgICAgICAgICAgcmV0dXJuIGNhY2hlLnB1dChPRkZMSU5FX1VSTCwgcmVzcG9uc2UpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KQogICAgICAgICkKICAgIH0KICAgIGlmKCBTVEFUSUNfVVJMUyAmJiBTVEFUSUNfVVJMUy5sZW5ndGggKSB7CiAgICAgICAgZXZlbnQud2FpdFVudGlsKAoJICAgIFByb21pc2UuYWxsKAoJICAgICAgICBTVEFUSUNfVVJMUy5tYXAoKGl0ZW0pID0+IHsKCQkgICAgcmV0dXJuIGZldGNoKGl0ZW0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CgkJICAgICAgIHJldHVybiBjYWNoZXMub3BlbihDQUNIRV9OQU1FKS50aGVuKGZ1bmN0aW9uKGNhY2hlKSB7CgkJICAgICAgICAgIHJldHVybiBjYWNoZS5wdXQoaXRlbSwgcmVzcG9uc2UpCiAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgKQogICAgICAgICkKICAgIH0KfSkKCi8qKgogKiBPbiBhY3RpdmF0ZSwgY2xlYXIgY2FjaGVzIHRoYXQgYXJlIE5PVCBlcXVhbCB0byBDQUNIRV9OQU1FCiovCnNlbGYuYWRkRXZlbnRMaXN0ZW5lcignYWN0aXZhdGUnLGZ1bmN0aW9uKGV2ZW50KSB7CiAgICBldmVudC53YWl0VW50aWwoCiAgICAgICAgY2FjaGVzLmtleXMoKS50aGVuKCAoY2FjaGVOYW1lcykgPT4gewoJICAgIHJldHVybiBQcm9taXNlLmFsbCgKCSAgICAgICAgY2FjaGVOYW1lcy5maWx0ZXIoIChjYWNoZW5hbWUpID0+IHsKCQkgICAgcmV0dXJuIGNhY2hlbmFtZSAhPSBDQUNIRV9OQU1FCiAgICAgICAgICAgICAgICB9KS5tYXAoIChjYWNoZW5hbWUpID0+IHsKCQkgICAgcmV0dXJuIGNhY2hlcy5kZWxldGUoY2FjaGVuYW1lKQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgKQogICAgICAgIH0pCiAgICApCn0pCgoKLyogaW50ZXJjZXB0IGZldGNoLCBhbmQgc2VlIGlmIGl0IGlzIGluIHRoZSBjYWNoZS4KICAgaWYgaXQgaXMgbm90IGluIHRoZSBjYWNoZSwgdGhlbiBmZXRjaCBpdAogICBpZiB0aGUgcGF0aCBzdGFydHMgd2l0aCAvYXNzZXRzIHRoZW4gd2UgY2FuIGNhY2hlIGl0LgoqLwpzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgZnVuY3Rpb24oZXZlbnQpIHsKICAgIGV2ZW50LnJlc3BvbmRXaXRoKAogICAgICAgIGNhY2hlcy5vcGVuKENBQ0hFX05BTUUpLnRoZW4oZnVuY3Rpb24oY2FjaGUpIHsKCSAgICAvLyBpZiB3ZSBhcmUgcmVxdWVzdGluZyBhbiBodG1sIHBhZ2UKCSAgICAvLyBvdGhlcndpc2Ugc29tZSBvdGhlciBhc3NldCB0eXBlCgkgICAgaWYgKGV2ZW50LnJlcXVlc3QubW9kZSA9PT0gJ25hdmlnYXRlJyB8fCAoZXZlbnQucmVxdWVzdC5tZXRob2QgPT09ICdHRVQnICYmICBldmVudC5yZXF1ZXN0LmhlYWRlcnMuZ2V0KCdhY2NlcHQnKS5pbmNsdWRlcygndGV4dC9odG1sJykpKSB7CgkgICAgICAgLy8gZm9yIEhUTUwgcmVxdWVzdHMsIHBhc3MgdGhlbSB0aHJvdWdoLCBidXQgaWYgdGhleSBmYWlsLCByZXR1cm4gdGhlIG9mZmxpbmUgcGFnZQoJICAgICAgIHJldHVybiBmZXRjaChldmVudC5yZXF1ZXN0KS5jYXRjaChlcnJvciA9PiB7CgkgICAgICAgCSAgIGlmKCBPRkZMSU5FX1VSTC5sZW5ndGggKSByZXR1cm4gY2FjaGVzLm1hdGNoKE9GRkxJTkVfVVJMKQoJCSAgIHRocm93IGVycm9yCiAgICAgICAgICAgICAgIH0pCgkgICAgfSBlbHNlIGlmKCBldmVudC5yZXF1ZXN0Lm1ldGhvZCA9PSAnR0VUJyAmJiBpc0Fzc2V0UmVxdWVzdChldmVudC5yZXF1ZXN0KSApIHsKCSAgICAgICAgLy8gcmV0dXJuIGNhY2hlIGZpbGUgT1IgZmV0Y2ggYW5kIGNhY2hlIChjYWNoZSBmaXJzdCwgdGhlbiBuZXR3b3JrIGFuZCBjYWNoZSkKCSAgICAgICAgcmV0dXJuIGNhY2hlLm1hdGNoKGV2ZW50LnJlcXVlc3QpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpewoJICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlIHx8IGZldGNoKGV2ZW50LnJlcXVlc3QpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpewoJCSAgICAgICAgLy8gYWRkIHRoZSBpdGVtIHRvIHRoZSBjYWNoZQoJCSAgICAgICAgY2FjaGUucHV0KGV2ZW50LnJlcXVlc3QsIHJlc3BvbnNlLmNsb25lKCkpOwoJCSAgICAgICAgcmV0dXJuIHJlc3BvbnNlOwogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9KQoJICAgIH0gZWxzZSB7CgkgICAgICAgLy8gbm9ybWFsIHJlcXVlc3QuCiAgICAgICAgICAgICAgIHJldHVybiBmZXRjaChldmVudC5yZXF1ZXN0KTsKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICApCn0pCg==]]></data>
	</file>
</module>
