<?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>CGFEURegister</name>
	<version>1.0.1</version>
    <mincmsversion>2.2.10</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPlRoaXMgbW9kdWxlIGlzIGEgY29tcGFuaW9uIG1vZHVsZSB0byBGcm9udEVuZHVzZXJzIHRvIGFsbG93IHVzZXJzIHRvIGNyZWF0ZSB0aGVpciBvd24gYWNjb3VudCBvbiB5b3VyIHdlYnNpdGUuPC9wPgoKPGgzPkZlYXR1cmVzOjwvaDM+Cjx1bD4KICAgPGxpPldvcmtzIHdpdGggRkVVIEdyb3VwcyBhbmQgUHJvcGVydGllczwvbGk+CiAgIDxsaT5Xb3JrcyB3aXRoIEZyb250RW5kVXNlcnMnIGVtYWlsIGFuZCBwYXNzd29yZCBwb2xpY2llcy48L2xpPgogICA8bGk+U3RvcmVzIHRlbXBvcmFyeSB1c2VyIGluZm9ybWF0aW9uIHNlY3VyZWx5PC9saT4KICAgPGxpPlNlbmRzIGVtYWlsIHJlbWluZGVycyB0byB1c2VycyB3aG8gaGF2ZSBub3QgcmVnaXN0ZXJlZC48L2xpPgogICA8bGk+UmVxdWlyZXMgdXNlcnMgdG8gdmVyaWZ5IHRoZWlyIHJlZ2lzdHJhdGlvbiBieSBjbGlja2luZyBvbiBhIGxpbmsgaW4gYW4gZW1haWwgYmVmb3JlIGJlaW5nIHB1c2hlZCBsaXZlLjwvcD4KICAgPGxpPkZsZXhpYmxlIHRlbXBsYXRlczwvbGk+CiAgIDxsaT5DdXN0b21pemFibGUgZW1haWwgdGVtcGxhdGVzPC9saT4KICAgPGxpPlVzZXJuYW1lIGJsYWNrbGlzdCBhbmQgd2hpdGVsaXN0PC9saT4KICAgPGxpPndvcmtzIHdpdGggY2FwdGNoYTwvbGk+CiAgIDxsaT5DU1JGIHByb3RlY3Rpb248L2xpPgogICA8bGk+QW4gYWRtaW4gaW50ZXJmYWNlIHRvIGFsbG93IG1hbmFnZXJzIHRvIG1hbmFnZSB1c2VycyB3aG8gaGF2ZSBub3QgY29tcGxldGVkIHRoZSByZWdpc3RyYXRpb24gcHJvY2Vzcy48L2xpPgogICA8bGk+bW9yZS4uPC9saT4KPC91bD4KCjxoMz5Ib3cgZG8gSSB1c2UgaXQ8L2gzPgo8cD5UbyBwcm9wZXJseSB1c2UgdGhpcyBtb2R1bGUsIHlvdSBuZWVkIHRvIGhhdmUgdGhlIEZyb250RW5kVXNlcnMgbW9kdWxlIHByb3Blcmx5IGNvbmZpZ3VyZWQgd2l0aCBhdCBsZWFzdCBvbmUgZ3JvdXAuICBZb3Ugc2hvdWxkIGhhdmUgYWxyZWFkeSBjcmVhdGVkIGFuZCB0ZXN0ZWQgbG9naW4sIGFuZCBsb2dvdXQgZnVuY3Rpb25hbGl0eS48L3A+CjxwPk5leHQsIGFmdGVyIGluc3RhbGxpbmcgdGhlIG1vZHVsZSwgYWRkIHRoZSA8Y29kZT57Q0dGRVVSZWdpc3RlciBncm91cD0nVEhFR1JPVVAnfTwvY29kZT4gdGFnIHRvIGEgY29udGVudCBwYWdlLiAgWW91IG11c3Qgc3BlY2lmeSB0aGUgbmFtZSBvZiBhIHZhbGlkIEZyb250RW5kVXNlcnMgZ3JvdXAuPC9wPgo8cD5Zb3Ugc2hvdWxkIGFkanVzdCB5b3VyIGNvbmZpZy5waHAgZmlsZSB3aXRoIGFwcHJvcHJpYXRlIHNldHRpbmdzIDxlbT4oc2VlIGJlbG93KTwvZW0+IHRvIGNvbmZpZ3VyZSB0aGlzIG1vZHVsZSB0byB5b3VyIGxpa2luZy48L3A+CjxwPk90aGVyIHRoYW4gdGhlIGdyb3VwIHBhcmFtZXRlciwgbW9zdCBvdGhlciBwYXJhbWV0ZXJzIHRoYXQgdGhpcyBtb2R1bGUgdXRpbGl6ZXMgc2hvdWxkIGJlIHNldCB1c2luZyB0aGUge2Ntc19tb2R1bGVfaGludH0gcGx1Z2luIGluIHlvdXIgcGFnZSB0ZW1wbGF0ZSBvciBwYWdlIHNwZWNpZmljIHNtYXJ0eSBsb2dpYyBmaWVsZCwgIGJlZm9yZSB0aGUgbW9kdWxlIGlzIGNhbGxlZC48L3A+Cgo8ZGl2IGNsYXNzPSJ3YXJuaW5nIj4KICAgIDxoMyBpZD0icHJpdmFjeSI+UHJpdmFjeSBXYXJuaW5nOjwvaDM+CiAgICA8cD5BZG1pbmlzdHJhdG9ycyBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBzYWZldHkgYW5kIHNlY3VyaXR5IG9mIGFueSBwZXJzb25hbCBpbmZvcm1hdGlvbiBjb2xsZWN0ZWQuPC9wPgogICAgPHA+VGhpcyBtb2R1bGUgZG9lcyBsb2cgdGhlIElQIGFkZHJlc3Mgb2YgdXNlcnMuIFRoaXMgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBEby1Ob3QtVHJhY2sgcG9saWNpZXMsIGFuZCBtYXkgYnJlYWsgc29tZSBsYXdzLjwvcD4KPC9kaXY+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KICAgPGxpPjxjb2RlPmFjdGlvbjwvY29kZT4gPGVtPihvcHRpb25hbCBzdHJpbmc9InJlZ2lzdGVyIik8L2VtPgogICAgICAgPHVsPgogICAgICAgICAgIDxsaT48Y29kZT5yZWdpc3RlcjwvY29kZT4gLSBUaGlzIGlzIHRoZSBkZWZhdWx0IGFjdGlvbi4gIEl0IHByb3ZpZGVzIHRoZSByZWdpc3RyYXRpb24gZm9ybS48L2xpPgoJICAgPGxpPjxjb2RlPnJlcGVhdGNvZGU8L2NvZGU+IC0gVGhpcyBhY3Rpb24gcHJvdmlkZXMgYSBmb3JtIGFsbG93aW5nIHRoZSB1c2VyIHRvIHJlcXVlc3QgYW5vdGhlciB2ZXJpZmljYXRpb24gY29kZS48L2xpPgogICAgICAgPC91bD4KICAgICAgIDxwPlRoaXMgcGFyYW1ldGVyLCB1bmxpa2UgdGhlIG90aGVyIHBhcmFtZXRlcnMsIHNob3VsZCBiZSBzcGVjaWZpZWQgb24gdGhlIG1vZHVsZSB0YWcuPC9wPgogICA8L2xpPgoKICAgPGxpPjxjb2RlPmdyb3VwPC9jb2RlPiA8c3Ryb25nPnJlcXVpcmVkIHN0cmluZzwvY29kZT4KICAgICAgIDxwPlVzZWQgb255IGJ5IHRoZSAicmVnaXN0ZXIiIGFjdGlvbiwgeW91IG11c3Qgc3BlY2lmeSB0aGUgbmFtZSBvZiBhIHZhbGlkIEZyb250RW5kVXNlcnMgZ3JvdXAgZm9yIHVzZXJzIHRvIHJlZ2lzdGVyIHRvLjwvcD4KICAgICAgIDxwPlRoaXMgcGFyYW1ldGVyLCB1bmxpa2UgdGhlIG90aGVyIHBhcmFtZXRlcnMsIHNob3VsZCBiZSBzcGVjaWZpZWQgb24gdGhlIG1vZHVsZSB0YWcsIHdoZW4gY2FsbGluZyB0aGUgcmVnaXN0ZXIgYWN0aW9uLjwvcD4KICAgPC9saT4KCiAgIDxsaT48Y29kZT5pbmxpbmU8L2NvZGU+IDxlbT4ob3B0aW9uYWwgYm9vbGVhbj1mYWxzZSk8L2VtPgogICAgICAgPHA+VXNlZCBieSB0aGUgInJlZ2lzdGVyIiBhbmQgInJlcGVhdGNvZGUiIGFjdGlvbnMsIHRoaXMgcGFyYW1ldGVyIGluZGljYXRlcyB0aGF0IHRoZSBvdXRwdXQgZnJvbSB0aGUgbW9kdWxlIGFjdGlvbiwgZm9yIGV4YW1wbGUgYWZ0ZXIgdGhlIGZvcm0gaXMgc3VibWl0dGVkLCBzaG91bGQgcmVwbGFjZSB0aGUgb3JpZ2luYWwgdGFnLiAgIFRoaXMgbWF5IGJlIHVzZWZ1bCBmb3IgZXhhbXBsZSB0byBwbGFjZSBhIHJlZ2lzdHJhdGlvbiBmb3JtIGluIGEgc2lkZWJhciwgZXRjLjwvcD4KICAgICAgIDxwPlRoaXMgcGFyYW1ldGVyIGhhcyBubyBlZmZlY3Qgb24gdGhlIHZlcmlmeSBmb3JtIGFjdGlvbi48L3A+CiAgIDwvbGk+CgogICA8bGk+PGNvZGU+bm9jYXB0Y2hhPC9jb2RlPiA8ZW0+KG9wdGlvbmFsIGJvb2xlYW49ZmFsc2UpPC9lbT4KICAgICAgIDxwPlVzZWQgYnkgdGhlICJyZWdpc3RlciIgYW5kICJyZXBlYXRjb2RlIiBhY3Rpb25zLCB0aGlzIHBhcmFtZXRlciBpbmRpY2F0ZXMgdGhhdCBjYXB0Y2hhIHNob3VsZCBub3QgYmUgdXNlZCAoZXZlbiBpZiBpdCBpcyBhdmFpbGFibGUpIGZvciB0aG9zZSBhY3Rpb25zLjwvcD4KICAgPC9saT4KCiAgIDxsaT48Y29kZT5yZWd0ZW1wbGF0ZTwvY29kZT4gPGVtPihvcHRpb25hbCBzdHJpbmc9J3JlZ2lzdGVyLnRwbCcpPC9lbT4KICAgICAgIDxwPlVzZWQgYnkgdGhlIGRlZmF1bHQgInJlZ2lzdGVyIiBhY3Rpb24sIHRoaXMgcGFyYW1ldGVyIGFsbG93cyBzcGVjaWZ5aW5nIHRoZSBuYW1lIG9mIGFuIGFsdGVybmF0ZSB0ZW1wbGF0ZS4gIFNlZSB0aGUgc2VjdGlvbiBhYm91dCB0ZW1wbGF0ZXMgYmVsb3cuPC9wPgogICA8L2xpPgoKICAgPGxpPjxjb2RlPmFmdGVydmVyaWZ5dGVtcGxhdGU8L2NvZGU+IDxlbT4ob3B0aW9uYWwgc3RyaW5nPSdhZnRlcl92ZXJpZnkudHBsJyk8L2VtPgogICAgICAgPHA+VXNlZCBieSB0aGUgInZlcmlmeSIgYWN0aW9uLCB0aGlzIHBhcmFtZXRlciBhbGxvd3Mgc3BlY2lmeWluZyB0aGUgbmFtZSBvZiBhbiBhbHRlcm5hdGUgdGVtcGxhdGUgZm9yIGRhdGEgdGhhdCBpcyBkaXNwbGF5ZWQgYWZ0ZXIgYXR0ZW1wdHMgYXQgdmVyaWZpY2F0aW9uLjwvcD4KICAgICAgIDxwPlNlZSB0aGUgc2VjdGlvbiBhYm91dCB0ZW1wbGF0ZXMgYmVsb3cuPC9wPgogICA8L2xpPgoKICAgPGxpPjxjb2RlPnJlcGVhdGNvZGV0ZW1wbGF0ZTwvY29kZT4gPGVtPihvcHRpb25hbCBzdHJpbmc9J3JlcGVhdGNvZGUudHBsJyk8L2VtPgogICAgICAgPHA+VXNlZCBieSB0aGUgInJlcGVhdGNvZGUiIGFjdGlvbiwgdGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHNwZWNpZnlpbmcgYW4gYWx0ZXJuYXRlIHRlbXBsYXRlIGZvciB0aGUgcmVwZWF0IGNvZGUgZm9ybS48L3A+CiAgICAgICA8cD5TZWUgdGhlIHNlY3Rpb24gYWJvdXQgdGVtcGxhdGVzIGJlbG93LjwvcD4KICAgPC9saT4KPC91bD4KCjxoMz5Db25maWcgZW50cmllczwvaDM+CjxwPlRoaXMgbW9kdWxlIHdpbGwgcmVhZCBzb21lIHNldHRpbmdzIGZyb20gdGhlIENNU01TIGNvbmZpZy5waHAgZmlsZSwgaXQgY2FuIGFsc28gdXRpbGl6ZSBzb21lIGNvbmZpZyBlbnRyaWVzIGZyb20gdGhlIEZyb250RW5kdXNlcnMgbW9kdWxlLjwvcD4KPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBUaGlzIG1vZHVsZSB3aWxsIG5vdCByZWFkIHRoZSBvcHRpb25hbCBhc3NldHMvY29uZmlncy9mZXVfc2V0dGluZ3MuanNvbiBmaWxlLjwvcD4KPHVsPgogICAgPGxpPjxjb2RlPmNnZnJfbG9naW5fYWZ0ZXJfdmVyaWZ5PC9jb2RlPiAtIDxlbT4oYm9vbD1mYWxzZSk8L2VtPgogICAgICAgIDxwPklmIGVuYWJsZWQsIGFmdGVyIHRoZSB1c2VyIGNvbXBsZXRlcyB0aGUgdmVyaWZpY2F0aW9uIG9mIGhpcyBlbWFpbCBhY2NvdW50LCBoZSB3aWxsIGJlIGltbWVkaWF0ZWx5IGxvZ2dlZCBpbiB0byBGRVUuPC9wPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5jZ2ZyX3VzZXJuYW1lX3doaXRlbGlzdDwvY29kZT4gLSA8ZW0+KHN0cmluZz1udWxsKTwvZW0+CiAgICAgICAgPHA+QSBzdHJpbmcgY29udGFpbmluZyB1c2VybmFtZSBwYXR0ZXJucyAod2lsZGNhcmRzIGFyZSBzdXBwb3J0ZWQpIHRoYXQgc2hvdWxkIGJlIGFsbG93ZWQgdG8gcmVnaXN0ZXIuICBJZiB5b3Ugd2lzaCB0byBoYXZlIG11bHRpcGxlIHBhdHRlcm5zIHNlcGFyYXRlIGVhY2ggcGF0dGVybiBvbiBzZXBhcmF0ZSBsaW5lcy4gaS5lLjo8L3A+Cgk8cHJlPjxjb2RlPiRjb25maWdbJ2NnZnJfdXNlcm5hbWVfd2hpdGVsaXN0J10gPSAnKkBteWRvbWFpbi5jb208YnIvPgoqQG15b3RoZXJkb21haW4uY29tJzs8L2NvZGU+PC9wcmU+CiAgICAgICAgPHA+SWYgdGhpcyBjb25maWcgZW50cnkgaXMgc3BlY2lmaWVkIGFuZCB0aGUgY2dmcl91c2VybmFtZV9ibGFja2xpc3QgaXMgbm90LCB0aGVuIE9OTFkgdXNlcnMgbWF0Y2hpbmcgdGhlc2UgcGF0dGVybnMgd2lsbCBiZSBhYmxlIHRvIHJlZ2lzdGVyLjwvcD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+Y2dmcl91c2VybmFtZV9ibGFja2xpc3Q8L2NvZGU+IC0gPGVtPihzdHJpbmc9bnVsbCk8L2VtPgogICAgICAgIDxwPkEgc3RyaW5nIGNvbnRhaW5pbmcgdXNlcm5hbWUgcGF0dGVybnMgKHdpbGRjYXJkcyBhcmUgc3VwcG9ydGVkKSB0aGF0IGFyZSBhYnNvbHV0ZWx5IG5vdCBhbGxvd2VkIHRvIHJlZ2lzdGVyLiAgSWYgeW91IHdpc2ggdG8gaGF2ZSBtdWx0aXBsZSBwYXR0ZXJucywgc2VwYXJhdGUgZWFjaCBwYXR0ZXJuIG9uIHNlcGFyYXRlIGxpbmVzLiAgaS5lLjo8L3A+Cgk8cHJlPjxjb2RlPiRjb25maWdbJ2NnZnJfdXNlcm5hbWVfYmxhY2tsaXN0J10gPSAncm9vdEAqPGJyLz4KKkBiYWRkb21haW4uY29tJzs8L2NvZGU+PC9wcmU+CiAgICA8L2xpPgogICAgPGxpPjxjb2RlPmNnZnJfb25yZWdpc3Rlcl9ub3RpZnlfYWRtaW5ncm91cDwvY29kZT4gLSA8ZW0+KHN0cmluZz1udWxsKTwvZW0+CiAgICAgICAgIDxwPklmIHRoaXMgaXMgdGhlIG5hbWUgb2YgYSB2YWxpZCBhZG1pbiBncm91cCA8ZW0+KGNhc2Ugc2Vuc2l0aXZlKTwvZW0+IFRoZW4gdGhlIG1lbWJlcnMgb2YgdGhpcyBncm91cCB3aWxsIGJlIG5vdGlmaWVkIHRoYXQgYSB1c2VyIGhhcyByZWdpc3RlcmVkCgkgICB1c2luZyB0aGUgImFkbWluX25vdGlmeV91c2VycmVnaXN0ZXJlZC5lbWwiIHRlbXBsYXRlLgoJIDwvcD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+Y2dmcl9vbnB1c2hfbm90aWZ5X2FkbWluZ3JvdXA8L2NvZGU+IC0gPGVtPihzdHJpbmc9bnVsbCk8L2VtPgogICAgICAgICA8cD5JZiB0aGlzIGlzIHRoZSBuYW1lIG9mIGEgdmFsaWQgYWRtaW4gZ3JvdXAgPGVtPihjYXNlIHNlbnNpdGl2ZSk8L2VtPiBUaGVuIHRoZSBtZW1iZXJzIG9mIHRoaXMgZ3JvdXAgd2lsbCBiZSBub3RpZmllZCB0aGF0IGEgdXNlciBoYXMgY29tcGxldGVkCgkgICB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MsIGFuZCBoYXMgYmVlbiBwdXNoZWQgdG8gRkVVIHVzaW5nIHRoZSAiYWRtaW5fbm90aWZ5X3VzZXJyZWdpc3RlcmVkLmVtbCIgdGVtcGxhdGUuCgkgPC9wPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5jZ2ZyX2Rpc2FibGVfcmVwZWF0Y29kZTwvY29kZT4gLSA8ZW0+KGJvb2w9ZmFsc2UpPC9lbT4KICAgICAgICAgPHA+VXNlIHRoaXMgY29uZmlnIGVudHJ5IHRvIGNvbXBsZXRlbHkgZGlzYWJsZSB0aGUgcmVwZWF0Y29kZSBhY3Rpb24uPC9wPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5jZ2ZyX3ZlcmlmeWNvZGVfZXhwaXJlX2hvdXJzPC9jb2RlPiAtIDxlbT4oaW50PTI0KjcpPC9lbT4KICAgICAgICAgPHA+VGhpcyBjb25maWcgZW50cnkgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgaG91cnMgdGhhdCBhbiBleHBpcnkgY29kZSBpcyB2YWxpZCBmb3IuICBJZiBzZXQgdG8gMCB0aGVuIGNvZGVzIGRvIG5vdCBleHBpcmUgb24gdGhlaXIgb3duLjwvcD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+Y2dmcl91c2VyX2V4cGlyZV9ob3VyczwvY29kZT4gLSA8ZW0+KGludD0yNCo3KTwvZW0+CiAgICAgICAgIDxwPlRoaXMgY29uZmlnIGVudHJ5IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGhvdXJzIHRoYXQgdXNlciBoYXMgdG8gY29tcGxldGUgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLiAgSWYgc2V0IHRvIDAgdGhlbiB1c2VyIGFjY291bnRzIG5ldmVyIGV4cGlyZS48L3A+CiAgICA8L2xpPgogICAgPGxpPjxjb2RlPmNnZnJfcmVwZWF0Y29kZV9wYWdlPC9jb2RlPiAtIDxlbT4oc3RyaW5nPSIiKTwvZW0+CiAgICAgICAgPHA+VGhpcyBjb25maWcgZW50cnkgaXMgdXNlZCBieSB0aGUgdGFzayB0aGF0IHJlbWluZHMgdXNlcnMgdG8gcmVnaXN0ZXIgdG8gc3BlY2lmeSBhIHBhZ2UgdG8gcmV0dXJudG8gaW4gdGhlIGxpbmsgdGhhdCBpcyBwcm92aWRlZCB3aXRoaW4gdGhhdCBlbWFpbC4gIEl0IHNwZWNpZmllcyBhIHBhZ2UgYWxpYXMgb2YgYSBjb250ZW50IHBhZ2UuPC9wPgoJPHA+SWYgbm90IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgY29udGVudCBwYWdlIHdpbGwgYmUgdXNlZC48L3A+Cgk8cD5UaGlzIGNvbmZpZyBlbnRyeSBpcyBub3Qgc3BlY2lmaWNhbGx5IG5lZWRlZCwgeW91IGNhbiBzcGVjaWZ5IHRoZSBwYWdlIGluIHRoZSBvbl9yZW1pbmQuZW1sIHRlbXBsYXRlLjwvcD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+Y2dmcl9yZW1pbmR1c2Vyc19hZnRlcl9ob3VyczwvY29kZT4gLSA8ZW0+KGludD0yNCk8L2VtPgogICAgICAgICA8cD5UaGlzIGNvbmZpZyBlbnRyeSBlbmFibGVzIGZ1bmN0aW9uYWxpdHkgdGhhdCB3aWxsIHNlbmQgZW1haWxzIHRvIHVzZXJzIHdobyBoYXZlIHJlZ2lzdGVyZWQsIGJ1dCBoYXZlIG5vdCB2ZXJpZmllZCB0aGVpciBhY2NvdW50IHdpdGggYSByZWdpc3RyYXRpb24gY29kZS4gIEJ5IGRlZmF1bHQgdGhlIGVtYWlsIHdpbGwgYmUgc2VudCBldmVyeSAyNCBob3VycyBhZnRlciByZWdpc3RyYXRpb24gVU5USUwgdGhlIHVzZXIgaXMgcHVzaGVkIGxpdmUgaW50byBGRVUuICBJZiB0aGlzIHZhbHVlIGlzIHNldCB0byAwIHRoZW4gbm8gcmVtaW5kZXJzIHdpbGwgYmUgc2VudC48L3A+CiAgICA8L2xpPgogICAgPGxpPjxjb2RlPmZldV91c2VybmFtZV9pc19lbWFpbDwvY29kZT4gLSA8ZW0+KGJvb2w9dHJ1ZSk8L2VtPgogICAgICAgICA8cD5UaGlzIGlzIHRoZSBib29sZWFuIHNldHRpbmcgdXNlZCBieSB0aGUgRnJvbnRFbmRVc2VycyBtb2R1bGUgdGhhdCBjb250cm9scyB0aGUgdHlwZSBvZiBmaWVsZCB1c2VkIGZvciB0aGUgdXNlcm5hbWUuPC9wPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5mZXVfZXhwaXJlYWdlX21vbnRoczwvY29kZT4gLSA8ZW0+KGludD01MjApPC9lbT4KICAgICAgICAgPHA+VGhpcyBpcyB0aGUgaW50ZWdlciBzZXR0aW5nIHVzZWQgYnkgdGhlIEZyb250RW5kVXNlcnMgbW9kdWxlIHRvIGluZGljYXRlIHRoZSBudW1iZXIgb2YgbW9udGhzIGJlb2ZyZSBuZXcgdXNlciBhY2NvdW50cyBleHBpcmUuPC9wPgoJIDxwPlRoaXMgaXMgdXNlZCB3aGVuIGNyZWF0aW5nIHRoZSB1c2VyIGFjY291bnQgaW4gdGhlIEZyb250RW5kVXNlcnMgbW9kdWxlLiBVc2VyIGV4cGlyeSBjYW4gYmUgYWRqdXN0ZWQgb24gYSBwZXItdXNlciBiYXNpcyBmcm9tIHdpdGhpbiBGRVUuPC9wPgogICAgPC9saT4KPC91bD4KCjxoMz5UZW1wbGF0ZXM8L2gzPgo8cD5Vc2luZyBhIGN1c3RvbSB0ZW1wbGF0ZSBmb3IgYSBmcm9udGVuZCBhY3Rpb24gb2YgQ0dGRVVSZWdpc3RlciBpcyBhIHRocmVlIHN0ZXAgcHJvY2Vzczo8Lz4KPG9sPgogICA8bGk+Q29weSB0aGUgZGVzaXJlZCB0ZW1wbGF0ZSBmaWxlIHRvIGEgbmV3IGxvY2F0aW9uLgogICAgICAgPHA+V2hlbiBDR0ZFVVJlZ2lzdGVyIGlzIHNoaXBwZWQsIGl0J3MgZmFjdG9yeSB0ZW1wbGF0ZXMgd2lsbCBiZSBsb2NhdGVkIGluIC9tb2R1bGVzL0NHRkVVUmVnaXN0ZXIvdGVtcGxhdGVzLiAgRWFjaCBkaWZmZXJlbnQgYWN0aW9uIGhhcyBhIGRpZmZlcmVudCBkZWZhdWx0IHRlbXBsYXRlOjwvcD4KICAgICAgIDx1bD4KICAgICAgICAgICA8bGk+VGhlIHJlZ2lzdHJhdGlvbiBmb3JtCgkgICAgICAgPHA+TG9jYXRpb246ICA8Y29kZT4vbW9kdWxlcy9DR0ZFVVJlZ2lzdGVyL3RlbXBsYXRlcy9yZWdpc3Rlci50cGw8L2NvZGU+PC9wPgoJICAgPC9saT4KCSAgIDxsaT5UaGUgdmVyaWZ5IG1lc3NhZ2UKCSAgICAgICA8cD5Mb2NhdGlvbjogIDxjb2RlPi9tb2R1bGVzL0NHRkVVUmVnaXN0ZXIvdGVtcGxhdGVzL2FmdGVyX3ZlcmlmeS50cGw8L2NvZGU+PC9wPgoJICAgPC9saT4KCSAgIDxsaT5UaGUgcmVxdWVzdGNvZGUgZm9ybQoJICAgICAgIDxwPkxvY2F0aW9uOiAgPGNvZGU+L21vZHVsZXMvQ0dGRVVSZWdpc3Rlci90ZW1wbGF0ZXMvcmVxdWVzdGNvZGUudHBsPC9jb2RlPjwvcD4KCSAgIDwvbGk+CiAgICAgICA8L3VsPgogICAgICAgPHA+WW91IHNob3VsZCA8c3Ryb25nPk5FVkVSPC9zdHJvbmc+IG1vZGlmeSB0aGVzZSBzb3VyY2UgZmlsZXMuICBUaGVzZSBmaWxlcyBjYW4gYmUgb3ZlcndyaXR0ZW4gd2hlbiB0aGUgbW9kdWxlIGlzIHVwZ3JhZGVkLiAgQWx3YXlzIGNvcHkgdGhlbSB0byBhIG5ldyBsb2NhdGlvbi48L3A+CgogICAgICAgPHA+VGhlcmUgYXJlIG51bWVyb3VzIGxvY2F0aW9ucyB3aGVyZSB5b3UgY2FuIGxvY2F0ZSB5b3VyIGN1c3RvbSB0ZW1wbGF0ZXM6PC9wPgogICAgICAgPHVsPgoJICAgPGxpPkludG8gdGhlIDxjb2RlPi9hc3NldHMvbW9kdWxlX2N1c3RvbS9DR0ZFVVJlZ2lzdGVyL3RlbXBsYXRlczwvY29kZT4gZGlyZWN0b3J5IDxzdHJvbmc+KHJlY29tbWVuZGVkKTwvc3Ryb25nPi4KCSAgICAgICA8cD5Zb3UgbWF5IG5lZWQgdG8gY3JlYXRlIHRoaXMgZGlyZWN0b3J5IHN0cnVjdHVyZSwgYXMgaXQgZG9lcyBub3QgZXhpc3QgYnkgZGVmYXVsdC4gIEZpbGVzIGluIHRoZSBtb2R1bGVfY3VzdG9tIGRpcmVjdG9yeSB3aWxsIG5vdCBiZSBvdmVyd3JpdHRlbiB3aGVuIHRoZSBtb2R1bGUgaXMgdXBncmFkZWQuPC9wPgoJICAgICAgIDxwPkZpbGVzIGluIHRoaXMgZGlyZWN0b3J5IE1VU1QgZW5kIHdpdGggYSAudHBsIGV4dGVuc2lvbiwgYW5kIGFyZSBhY2Nlc3NlZCBieSBqdXN0IHNwZWNpZnlpbmcgdGhlIGZpbGVuYW1lLiAgaS5lLjogIDxjb2RlPm15X2xvZ2luX3RlbXBsYXRlLnRwbDwvY29kZT48L3A+CgkgICA8L2xpPgogICAgICAgICAgIDxsaT5JbnRvIHRoZSA8Y29kZT4vYXNzZXRzL3RlbXBsYXRlczwvY29kZT4gZGlyZWN0b3J5LgoJICAgICAgIDxwPkNvcHkgdGhlIGZhY3RvcnkgdGVtcGxhdGUgdG8gYSBkZXNpcmVkIGZpbGVuYW1lIGluIDxjb2RlPi9hc3NldHMvdGVtcGxhdGVzPC9jb2RlPi4gIEdpdmUgdGhlIG5ldyBmaWxlIGEgLnRwbCBleHRlbnNpb24uPC9wPgoJICAgICAgIDxwPkZpbGVzIGluIHRoaXMgZGlyZWN0b3J5IGFyZSBhY2Nlc3NlZCBieSBzcGVjaWZ5aW5nIHRoZSBjbXNfZmlsZSByZXNvdXJjZS4gICBpLmU6ICA8Y29kZT5jbXNfZmlsZTpteV9sb2dpbl90ZW1wbGF0ZS50cGw8L2NvZGU+PC9wPgoJICAgPC9saT4KCSAgIDxsaT5JbnRvIERlc2lnbiBNYW5hZ2VyCgkgICAgICAgPHA+T3BlbiB0aGUgZmlsZSBpbiB5b3VyIGZhdm9yaXRlIGVkaXRvciwgYW5kICdjb3B5JyB0aGUgdGV4dCBpbnRvIHRoZSBjbGlwYm9hcmQuPC9wPgoJICAgICAgIDxwPkNyZWF0ZSBhIG5ldyB0ZW1wbGF0ZSBvZiBhbnkgdHlwZSBpbiB0aGUgRGVzaWduTWFuYWdlciBtb2R1bGUuIGFuZCAncGFzdGUnIHRoZSBjb250ZW50cyBmcm9tIHRoZSBjbGlwYm9hcmQgaW50byB0aGUgdGV4dGFyZWE8L3A+CgkgICAgICAgPHA+R2l2ZSB0aGUgbmV3IHRlbXBsYXRlIGEgbmFtZSBXSVRIT1VUIGEgLnRwbCBleHRlbnNpb24uPC9wPgoJICAgICAgIDxwPlRlbXBsYXRlcyBpbiBkZXNpZ24gbWFuYWdlciBhcmUgYWNjZXNzZWQgYnkganVzdCBzcGVjaWZ5aW5nIHRoZSB0ZW1wbGF0ZSBuYW1lLiAgaS5lOiA8Y29kZT5yZWdpc3RlcnRlbXBsYXRlPSIibXkgbG9naW4gdGVtcGxhdGUiPC9jb2RlPjwvcD4KCSAgIDwvbGk+CiAgICAgICA8L3VsPgogICA8L2xpPgoKICAgPGxpPlRlbGwgQ0dGRVVSZWdpc3RlciB0byB1c2UgdGhlIG5ldyB0ZW1wbGF0ZQogICAgICAgPHA+SW4gYSBwYXJlbnQgcGFnZSB0ZW1wbGF0ZSwgb3IgaW4gdGhlICdzbWFydHkgbG9naWMgdGhhdCBpcyBzcGVjaWZpYyB0byB0aGlzIHBhZ2UnIGZpZWxkIGluIGEgY29udGVudCBwYWdlIHlvdSBzaG91bGQgdXNlIHRoZSA8Y29kZT57Y21zX21vZHVsZV9oaW50fTwvY29kZT4gcGx1Z2luIHRvIHRlbGwgQ0dGRVVSZWdpc3RlciB0byB1c2UgdGhlIG5ldyB0ZW1wbGF0ZS4gIGkuZS46PC9wPgogICAgICAgPHByZT48Y29kZT57Y21zX21vZHVsZV9oaW50IG1vZHVsZT1DR0ZFVVJlZ2lzdGVyIGxvZ2ludGVtcGxhdGU9Im15X3JlZ2lzdGVyX3RlbXBsYXRlLnRwbCJ9PC9jb2RlPjwvcHJlPgogICAgICAgPHA+VGhlIGV4YW1wbGUgYWJvdmUgYXNzdW1lcyB0aGF0IHRoZSBwYXRoIHRvIHRoZSBmaWxlIGlzOiAgPGNvZGU+L2Fzc2V0cy9tb2R1bGVfY3VzdG9tL0NHRkVVUmVnaXN0ZXIvdGVtcGxhdGVzL215X2xvZ2luX3RlbXBsYXRlLnRwbDwvY29kZT4KICAgICAgIDxwPlRoZSB7Y21zX21vZHVsZV9oaW50fSBwbHVnaW4gdGVsbHMgQ01TIHRvIHByb3ZpZGUgdGhhdCBwYXJhbWV0ZXIgdG8gdGhlIG1vZHVsZSBieSBkZWZhdWx0IHdoZW4gaXQgaXMgY2FsbGVkLiAgVGhpcyBwbHVnaW4gbXVzdCBiZSBjYWxsZWQgQkVGT1JFIHRoZSBwcmltYXJ5IGNvbnRlbnQgYmxvY2sgaW4geW91ciB0ZW1wbGF0ZS4gICBZb3UgbWF5IGNhbGwgdGhpcyBwbHVnaW4gbXVsdGlwbGUgdGltZXMgdG8gcHJlc2V0IHBhcmFtZXRlcnMgZm9yIGRpZmZlcmVudCBtb2R1bGVzLiBpLmU6PC9wPgogICAgICAgPHByZT48Y29kZT57Y21zX21vZHVsZV9oaW50IG1vZHVsZT1DR0ZFVVJlZ2lzdGVyIGxvZ2ludGVtcGxhdGU9J215X3JlZ2lzdGVyX3RlbXBsYXRlLnRwbCd9PGJyLz4Ke2Ntc19tb2R1bGVfaGludCBtb2R1bGU9Q0dGRVVSZWdpc3RlciBhZnRlcnZlcmlmeXRlbXBsYXRlPSdteV92ZXJpZnlfdGVtcGxhdGUudHBsJ308YnIvPgogICA8L2xpPgoKICAgPGxpPk1vZGlmeSBhbmQgdGVzdCB5b3VyIG5ldyB0ZW1wbGF0ZQogICAgICAgPHA+SWYgdGhlIHRlbXBsYXRlIGlzIHN0b3JlZCBpbiB0aGUgZmlsZXN5c3RlbSB5b3UgY2FuIG5vdyB1c2UgeW91ciBmYXZvcml0ZSBlZGl0b3IsIGFuZCBzb3VyY2UgY29kZSBtYW5hZ2VtZW50IHN5c3RlbSB0byBtYW5hZ2UgdGhpcyBmaWxlLjwvY29kZT4KICAgPC9saT4KPC9vbD4KCjxoMz5FbWFpbHM8L2gzPgo8cD5UaGlzIG1vZHVsZSB1c2VzIHRoZSB0ZW1wbGF0YWJsZSBlbWFpbCBmdW5jdGlvbmFsaXR5IHByb3ZpZGVkIGJ5IHRoZSBDR0V4dGVuc2lvbnMgbW9kdWxlIHRvIHNlbmQgZW1haWwgbWVzc2FnZXMuICBUaGUgZm9sbG93aW5nIGVtYWlsIHRlbXBsYXRlcyBhcmUgcHJvdmlkZWQ6PC9wPgo8dWw+CiAgICA8bGk+PGNvZGU+ZW1haWxzL29uX3JlZ2lzdGVyLmVtbAogICAgICAgIDxwPlRoaXMgZW1haWwgdGVtcGxhdGUgaXMgdXNlZCB0byBzZW5kIGEgbWVzc2FnZSB0byB0aGUgdXNlciB3aXRoIGluZm9ybWF0aW9uIGFzIHRvIGhvdyB0byB2ZXJpZnkgaGlzIGVtYWlsIGFkZHJlc3MgYW5kIGNvbXBsZXRlIHRoZSByZWdpc3RyYXRpb24gcHJvY2Vzcy48L3A+CiAgICA8L2xpPgogICAgPGxpPjxjb2RlPmVtYWlscy9vbl9yZXBlYXRjb2RlLmVtbAoJPHA+VGhpcyBlbWFpbCB0ZW1wbGF0ZSBpcyB1c2VkIHRvIHNlbmQgYSBtZXNzYWdlIHRvIHRoZSB1c2VyIHdoZW4gdGhleSBoYXZlIHJlcXVlc3RlZCBhbm90aGVyIHZlcmlmaWNhdGlvbiBjb2RlLjwvcD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+ZW1haWxzL29uX3JlbWluZC5lbWwKCTxwPlRoaXMgZW1haWwgdGVtcGxhdGUgaXMgdXNlZCB0byBzZW5kIGEgbWVzc2FnZSB0byB0aGUgdXNlciB3aG8gaGFzIHJlZ2lzdGVyZWQsIGJ1dCBoYXMgbm90IHlldCBjb21wbGV0ZWQgdGhlIHJlZ2lzdHJhdGluIHByb2Nlc3MgYnkgdmVyaWZ5aW5nIHRoZSByZWdpc3RyYXRpb24gY29kZS48L3A+Cgk8cD5Ob3RlOiB0aGlzIGVtYWlsIGlzIHRyaWdnZXJlZCBmcm9tIGEgYmFja2dyb3VuZCB0YXNrLiAgSXQgaXMgbm90IHBvc3NpYmxlIHRvIGRldGVybWluZSBhIHVzZXJzIGxhbmd1YWdlLjwvcD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+ZW1haWxzL2FkbWluX25vdGlmeV91c2VycmVnaXN0ZXJlZC5lbWwKICAgICAgICA8cD5UaGlzIGVtYWlsIHRlbXBsYXRlIGlzIHVzZWQgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gbWVtYmVycyBvZiBhIG5hbWVkIGFkbWluIGdyb3VwIGluZGljYXRpbmcgdGhhdCBhIG5ldyB1c2VyIGhhcyByZWdpc3RlcmVkLjwvcD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+ZW1haWxzL2FkbWluX25vdGlmeV91c2VycHVzaGVkLmVtbAogICAgICAgIDxwPlRoaXMgZW1haWwgdGVtcGxhdGUgaXMgdXNlZCB0byBzZW5kIGEgbWVzc2FnZSB0byBtZW1iZXJzIG9mIGEgbmFtZWQgYWRtaW4gZ3JvdXAgaW5kaWNhdGluZyB0aGF0IGEgbmV3IHVzZXIgaGFzIGNvbXBsZXRlZCB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MgYW5kIGlzIG5vdyBpbiB0aGUgRnJvbnRFbmRVc2VycyBtb2R1bGUuPC9wPgogICAgPC9saT4KPC91bD4KPHA+VG8gY3VzdG9taXplIHRoZXNlIHRlbXBsYXRlcywgeW91IHNob3VsZCBjb3B5IHRoZSBhcHByb3ByaWF0ZSBmaWxlIHRvIHRoZSA8Y29kZT4vYXNzZXRzL21vZHVsZV9jdXN0b20vQ0dGRVVSZWdpc3Rlci9lbWFpbHM8L2NvZGU+IGRpcmVjdG9yeSBiZWxvdyB0aGUgQ01TTVMgcm9vdCBwYXRoLiAgQ3JlYXRlIHRoZSBkaXJlY3RvcnkgaWYgbmVjZXNzYXJ5LiAgIFlvdSBzaG91bGQgTkVWRVIgbW9kaWZ5IHRoZSBmaWxlcyBpbiB0aGUgbW9kdWxlJ3Mgc291cmNlIGNvZGUgZGlyZWN0b3J5LjwvcD4KPHA+U2VlIHRoZSBoZWxwIGluIHRoZSBDR0V4dGVuc2lvbnMgbW9kdWxlIGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3RydWN0dXJlIG9mIC5lbWwgZmlsZXMuPC9wPgoKPGgzPkhvb2tzPC9oMz4KPHVsPgogICA8bGk+PGNvZGU+Q0dGRVVSZWdpc3Rlcjo6UHJlUmVuZGVyKCk8L2NvZGU+CiAgICAgICA8cD5UaGlzIGhvb2sgc2VuZHMgbm8gcGFyYW1ldGVycy48L3A+CiAgICAgICA8cD5UaGlzIGhvb2sgaXMgdHJpZ2dlcmVkIGJlZm9yZSByZW5kZXJpbmcgb2YgYW55IGZyb250ZW5kIGFjdGlvbi4gIEl0IGFsbG93cyB0aGlyZCBwYXJ0eSBjb2RlIHRvIGRvIHBlcm1pc3Npb25zIGNoZWNrLCByYXRlIGxpbWl0aW5nIGV0Yy48L3A+CiAgICAgICA8cD5UbyBzdG9wIHByb2Nlc3NpbmcsIGhhbmRsZXJzIHNob3VsZCB0aHJvdyBydW50aW1lIGV4Y2VwdGlvbnMuPC9wPgogICA8L2xpPgogICA8bGk+PGNvZGU+Q0dGRVVSZWdpc3Rlcjo6QmVmb3JlUmVnaXN0ZXIoVXNlcik8L2NvZGU+CiAgICAgICA8cD5UaGlzIGhvb2sgaXMgdHJpZ2dlcmVkIHByaW9yIHRvIHNhdmluZyB0aGUgbmV3IHVzZXIgaW5mb3JtYXRpb24gdG8gdGhlIGRhdGFiYXNlLiAgSXQgaXMgdXNlZnVsIGZvciB2YWxpZGF0aW5nIGRhdGEgYmVmb3JlIHJlZ2lzdGVyaW5nIGEgdXNlciBvciBzZW5kaW5nIGVtYWlscy48L3A+CiAgICAgICA8cD5QYXJhbWV0ZXJzOjwvcD4KICAgICAgIDx1bD4KCSAgICA8bGk+PGNvZGU+VXNlcjwvY29kZT4gLSBBIHVzZXIgb2JqZWN0IGNvb250YWluaW5nIHRoZSB1c2VyIHJlZ2lzdHJhdGlvbiBkYXRhLjwvbGk+CiAgICAgICA8L3VsPgogICA8L2xpPgogICA8bGk+PGNvZGU+Q0dGRVVSZWdpc3Rlcjo6QWZ0ZXJSZWdpc3RlcihVc2VyKTwvY29kZT4KICAgICAgIDxwPlRoaXMgaG9vayBpcyB0cmlnZ2VyZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgc2F2aW5nIHRoZSBuZXcgdXNlciBpbmZvcm1hdGlvbiB0byB0aGUgZGF0YWJhc2UuIEl0IGlzIHVzZWZ1bCBmb3IgdHJpZ2dlcmluZyBvdGhlciB0aGlyZCBwYXJ0eSBmdW5jdGlvbmFsaXR5LjwvcD4KICAgICAgIDxwPlBhcmFtZXRlcnM6PC9wPgogICAgICAgPHVsPgoJICAgIDxsaT48Y29kZT5Vc2VyPC9jb2RlPiAtIEEgdXNlciBvYmplY3QgY29vbnRhaW5pbmcgdGhlIHVzZXIgcmVnaXN0cmF0aW9uIGRhdGEuPC9saT4KICAgICAgIDwvdWw+CiAgIDwvbGk+CiAgIDxsaT48Y29kZT5DR0ZFVVJlZ2lzdGVyOjpBZnRlclJlcGVhdENvZGUoYXJyYXkpPC9jb2RlPgogICAgICAgPHA+VGhpcyBob29rIGlzIHRyaWdnZXJlZCBpbW1lZGlhdGVseSBhZnRlciBhIHJlcGVhdCBjb2RlIGlzIHNlbnQgZnJvbSB0aGUgcmVwZWF0IGNvZGUgYWN0aW9uLiAgSXQgaXMgdXNlZnVsIHRvIHRpZSBpbiBvdGhlciB0aGlyZCBwYXJ0eSBmdW5jdGlvbmFsaXR5LjwvcD4KICAgICAgIDxwPlBhcmFtZXRlcnMgPGVtPihhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L2VtPjo8L3A+CiAgICAgICA8dWw+CgkgICAgPGxpPjxjb2RlPmZpZWxkczwvY29kZT4gLSA8ZW0+KHR5cGU9UmVnRmllbGRTZXQpPC9lbT4gLSBUaGUgc2V0IG9mIGZpZWxkcyBhc3NvY2lhdGVkIHdpdGggdGhlIGdyb3VwIHRoYXQgdGhlIHVzZXIgaXMgYXNzb2NpYXRlZCB3aXRoLjwvbGk+CgkgICAgPGxpPjxjb2RlPnVzZXI8L2NvZGU+IC0gPGVtPih0eXBlPVVzZXIpPC9lbT4gLSBUaGUgdXNlciBvYmplY3Q8L2xpPgogICAgICAgPC91bD4KICAgPC9saT4KICAgPGxpPjxjb2RlPkNHRkVVUmVnaXN0ZXI6OkFmdGVyVXNlclB1c2hlZChhcnJheSk8L2NvZGU+CiAgICAgICA8cD5UaGlzIGhvb2sgaXMgdHJpZ2dlcmVkIGltbWVkaWF0ZWx5IGFmdGVyIGEgcmVwZWF0IGNvZGUgaXMgcHVzaGVkIGZyb20gdGhpcyBtb2R1bGUgaW50byBGRVUuICBJdCBpcyB1c2VmdWwgdG8gdGllIGluIG90aGVyIHRoaXJkIHBhcnR5IGZ1bmN0aW9uYWxpdHkuPC9wPgogICAgICAgPHA+UGFyYW1ldGVycyA8ZW0+KGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvZW0+OjwvcD4KICAgICAgIDx1bD4KCSAgICA8bGk+PGNvZGU+ZmllbGRzPC9jb2RlPiAtIDxlbT4odHlwZT1SZWdGaWVsZFNldCk8L2VtPiAtIFRoZSBzZXQgb2YgZmllbGRzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ3JvdXAgdGhhdCB0aGUgdXNlciBpcyBhc3NvY2lhdGVkIHdpdGguPC9saT4KCSAgICA8bGk+PGNvZGU+ZmV1X3VpZDwvY29kZT4gLSA8ZW0+KHR5cGU9aW50KTwvZW0+IC0gVGhlIG5ldyBmZXUgdXNlciBpZC48L2xpPgogICAgICAgPC91bD4KICAgPC9saT4KPC91bD4KCgo8aDM+UmVxdWlyZW1lbnRzPC9oMz4KPHVsPgogICAgPGxpPk9wZW4gU1NMIGxpYnJhcmllcyBmb3IgZW5jcnlwdGlvbi48L2xpPgogICAgPGxpPkZyb250RW5kVXNlcnMgMy4wKzwvbGk+CiAgICA8bGk+Q0dFeHRlbnNpb25zPC9saT4KPC91bD4KCjxoMz5JbXBvcnRhbnQgQ2xhc3NlczwvaDM+Cjx1bD4KICAgICA8bGk+VGhlIFVzZXIgY2xhc3MKICAgICAgICAgPHA+VGhpcyBjbGFzcyBpcyB1c2VkIHRvIHJlcHJlc2VudCBpbmZvcm1hdGlvbiBhYm91dCBhIHVzZXIgdGhhdCBpcyByZWdpc3RlcmluZy4gIEl0IGlzIHByb3ZpZGVkIHRvIGhvb2tzLCBhbmQgdG8gdmFyaW91cyB0ZW1wbGF0ZXMuPC9wPgogICAgICAgICA8cD5TdGFuZGFyZCBwcm9wZXJ0aWVzOjwvcD4KCSA8dWw+CiAgICAgICAgICAgICA8bGk+PGNvZGU+aWQ8L2NvZGU+IC0gPGVtPih0eXBlPWludCk8L2VtPiAtIFRoZSB1bmlxdWUgaWQgd2l0aGluIHRoaXMgbW9kdWxlIG9mIHRoZSByZWdpc3RyYXRpb24uICBUaGlzIGlzIE5PVCB0aGUgRkVVIHVpZC48L2xpPgoJICAgICA8bGk+PGNvZGU+Y3JlYXRlZDwvY29kZT4gLSA8ZW0+KHR5cGU9aW50KTwvZW0+IC0gVGhlIHVuaXggdGltZXN0YW1wIG9mIHRoZSB0aW1lIHRoYXQgdGhpcyB1c2VyIGluaXRpYWxseSByZWdpc3RlcmVkLjwvbGk+CgkgICAgIDxsaT48Y29kZT5naWQ8L2NvZGU+IC0gPGVtPih0eXBlPWludCk8L2VtPiAtIFRoZSBGRVUgZ3JvdXAgaWQgb2YgdGhlIGdyb3VwIHRoZSB1c2VyIGlzIHJlZ2lzdGVyaW5nIHRvLjwvbGk+CgkgPC91bD4KCSA8cD5BZGRpdGlvbmFsbHksIHRoZSB1c2VyIHdpbGwgaGF2ZSBkaWZmZXJlbnQgcHJvcGVydGllcyBhc3NvY2lhdGVkIHdpdGggdGhlbSBzdWNoIGFzIHVzZXJuYW1lLCBwYXNzd29yZCwgYW5kIHdoYXRldmVyIG90aGVyIHByb3BlcnRpZXMgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgRkVVIGdyb3VwIHRoYXQgdXNlcnMgYXJlIHJlZ2lzdGVyaW5nIHRvLiAgVGhleSBjYW4gYmUgYWRkcmVzc2VkIHN1Y2ggYXMgPGNvZGU+eyR1c2VyLT51c2VybmFtZX08L2NvZGU+LjwvcD4KICAgICA8L2xpPgoKICAgICA8bGk+VGhlIFJlZ0ZpZWxkIGNsYXNzCiAgICAgICAgIDxwPlRoaXMgY2xhc3MgaXMgdXNlZCB0byByZXByZXNlbnQgaW5mb3JtYXRpb24gYWJvdXQgYSBwYXJ0aWN1bGFyIGZpZWxkIHRoYXQgYSB1c2VyIG11c3QgY29tcGxldGUgd2hlbiByZWdpc3RlcmluZy4gIFRoZXJlIGFyZSBhIGZldyBzdGFuZGFyZCBmaWVsZHMgc3VjaCBhcyB1c2VybmFtZS9lbWFpbCwgcGFzc3dvcmQgYW5kIHJlcGVhdCBwYXNzd29yZC4gIFRoZXJlIG1heSBhbHNvIGJlIGFkZGl0aW9uYWwgZmllbGRzIHRoYXQgYXJlIHN0aXB1bGF0ZWQgYnkgdGhlIEZFVSBncm91cCB0aGF0IHRoZSB1c2VyIGlzIHJlZ2lzdGVyaW5nIHRvLjwvcD4KCSA8cD5TdGFuZGFyZCBwcm9wZXJ0aWVzOjwvcD4KCSA8dWw+CgkgICAgIDxsaT48Y29kZT5uYW1lPC9jb2RlPiAtIDxlbT4odHlwZT1zdHJpbmcpPC9lbT4gLSBUaGUgbmFtZSBvZiB0aGUgZmllbGQuPC9saT4KCSAgICAgPGxpPjxjb2RlPnR5cGU8L2NvZGU+IC0gPGVtPih0eXBlPWludCk8L2VtPiAtIFRoZSB0eXBlIG9mIHRoZSBmaWVsZC4KCSAgICAgICAgICA8dWw+CgkJCTxsaT4wID09IFRleHQgZmllbGQ8L2xpPgoJCQk8bGk+MSA9PSBDaGVja2JveCBmaWVsZDwvbGk+CgkJCTxsaT4yID09IEVtYWlsIGZpZWxkPC9saT4KCQkJPGxpPjMgPT0gVGV4dEFyZWEgZmllbGQ8L2xpPgoJCQk8bGk+NCA9PSBEcm9wZG93biBmaWVsZDwvbGk+CgkJCTxsaT41ID09IE11bHRpc2VsZWN0IGZpZWxkPC9saT4KCQkJPGxpPjYgPT0gSW1hZ2UgZmllbGQgPGVtPihZb3Ugc2hvdWxkIG5ldmVyIHNlZSB0aGVzZSBmaWVsZHMgaW4gQ0dGRVVSZWdpc3Rlcik8L2VtPjwvbGk+CgkJCTxsaT43ID09IFJhZGlvIGJ1dHRvbiBncm91cDwvbGk+CgkJCTxsaT44ID09IERhdGUgZmllbGQ8L2xpPgoJCQk8bGk+OSA9PSBEYXRhIGZpZWxkIDxlbT4oWW91IHNob3VsZCBuZXZlciBzZWUgdGhlc2UgZmllbGRzIGluIENHRkVVUmVnaXN0ZXIpPC9lbT48L2xpPgoJCQk8bGk+MTAgPT0gVGVsIGZpZWxkPC9saT4KCQkgIDwvdWw+CiAgICAgICAgICAgICA8L2xpPgoJICAgICA8bGk+PGNvZGU+cHJvbXB0PC9jb2RlPiAtIDxlbT4odHlwZT1zdHJpbmcpPC9lbT4gLSBBIHByb21wdCB0byB1c2UgZm9yIHRoZSBmaWVsZC4KCSAgICAgICAgIDxwPkl0IGlzIG5vdCBtYW5kYXRvcnkgdGhhdCB5b3UgdXNlIHRoZSBwcm9tcHQgaW4gZW1haWxzIG9yIHRlbXBsYXRlcy48L3A+PC9saT4KCSAgICAgPGxpPjxjb2RlPnJlcXVpcmVkPC9jb2RlPiAtIDxlbT4odHlwZT1pbnQpPC9lbT4gLSBJbmRpY2F0ZXMgdGhlIHJlcXVpcmVkIHN0YXR1cyBmb3IgdGhpcyBmaWVsZC4KCSAgICAgICAgICA8cD4wID09IG9mZiwgMSA9IG9wdGlvbmFsLCAyID09IHJlcXVpcmVkLCAzID09IGhpZGRlbiwgNCA9PSByZWFkb25seS48L3A+CgkJICA8cD5Ob3JtYWxseSB5b3Ugc2hvdWxkIG9ubHkgc2VlIHByb3BlcnRpZXMgdGhhdCBhcmUgcmVxdWlyZWQgb3Igb3B0aW9uYWwuPC9wPgogICAgICAgICAgICAgPC9saT4KCSAgICAgPGxpPjxjb2RlPm9wdGlvbnM8L2NvZGU+IC0gPGVtPih0eXBlPWhhc2gpPC9lbT4gLSBGb3Igc2VsZWN0LCBkcm9wZG93biwgcmFkaW9idXR0b24gYW5kIG11bHRpc2VsZWN0IGZpZWxkcyB0aGlzIHByb3BlcnR5IHdpbGwgY29udGFpbiBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvZiBvcHRpb25zLjwvbGk+CgkgICAgIDxsaT48Y29kZT51bmlxdWU8L2NvZGU+IC0gPGVtPih0eXBlPWJvb2wpPC9lbT4gLSBXaGV0aGVyIHRoZSB2YWx1ZSBmb3IgdGhpcyBwcm9wZXJ0eSBtdXN0IGJlIHVuaXF1ZSBhY3Jvc3MgYWxsIHVzZXJzLjwvbGk+CgkgICAgIDxsaT48Y29kZT5leHRyYTwvY29kZT4gLSA8ZW0+KHR5cGU9aGFzaCk8L2VtPjwvbGk+CgkgPC91bD4KICAgICA8L2xpPgoKICAgICA8bGk+VGhlIFJlZ0ZpZWxkU2V0IGNsYXNzCiAgICAgICAgIDxwPlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIGNvbGxlY3Rpb24gb2YgUmVnRmllbGQgb2JqZWN0cy4gIEl0IGlzIGNvdW50YWJsZSBhbmQgaXRlcmF0YWJsZS4gIFNvIDxjb2RlPntjb3VudCgkc2V0KX08L2NvZGU+IGFuZCA8Y29kZT57Zm9yZWFjaCAkc2V0IGFzICRmaWVsZH0uLi57L2ZvcmVhY2h9PC9jb2RlPiB3aWxsIHdvcmsgcHJvcGVybHkuPC9wPgoJIDxwPkFkZGl0aW9uYWwgbWV0aG9kczo8L3A+CgkgPHVsPgoJICAgICA8bGk+PGNvZGU+aGFzX2ZpZWxkKHN0cmluZyAkZmllbGRuYW1lKSA6IGJvb2w8L2NvZGU+CgkgICAgICAgICA8cD5UaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCBvbiBhIFJlZ0ZpZWxkU2V0IHRvIHRlc3QgaWYgYSBzcGVjaWZpYyBmaWVsZCAoYnkgbmFtZSkgaXMgY29udGFpbmVkIGluIHRoZSBzZXQuPC9saT4KCSAgICAgPC9saT4KCSAgICAgPGxpPjxjb2RlPmdldF9lbWFpbF9maWVsZCgpIDogUmVnRmllbGQ8L2NvZGU+CgkgICAgICAgICA8cD5UaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCBvbiBhIFJlZ0ZpZWxkU2V0IHRvIHJldHVybiB0aGUgZmllbGQgZGVmaW5pdGlvbiBvZiB0aGUgZmlyc3QgZmllbGQgdGhhdCBpcyBvZiB0eXBlICdlbWFpbCcuPC9wPgoJICAgICA8L2xpPgoJIDwvdWw+CiAgICAgPC9saT4KPC91bD4KCjxoMz5CYWNrZ3JvdW5kIFRhc2tzPC9oMz4KPHA+VGhpcyBtb2R1bGUgcGVyZm9ybXMgc29tZSB0YXNrcyBpbiB0aGUgYmFja2dvdW5kOjwvcD4KPHVsPgogICAgPGxpPlJlbWluZCB1c2VycyB3aG8gaGF2ZSBub3QgY29tcGxldGVkIHJlZ2lzdGVyaW5nLjwvbGk+CiAgICA8bGk+Q2xlYW4gdXAgdXNlciByZWdpc3RyYXRpb24gZGF0YSB0aGF0IGhhcyBleHBpcmVkLjwvbGk+CjwvdWw+Cgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoZSBtb2R1bGUgYXV0aG9yIGlzIGluIG5vIHdheSBvYmxpZ2F0ZWQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGlzIGNvZGUgaW4gYW55IGZhc2hpb24uICBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+QSBidWcgdHJhY2tpbmcgYW5kIGZlYXR1cmUgcmVxdWVzdCBzeXN0ZW0gaGFzIGJlZW4gY3JlYXRlZCBmb3IgdGhpcyBtb2R1bGUgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9mcm9udGVuZHVzZXJzIj5oZXJlPC9hPi4gIFBsZWFzZSBiZSB2ZXJib3NlIGFuZCBkZXNjcmlwdGl2ZSB3aGVuIHN1Ym1pdHRpbmcgYnVnIHJlcG9ydHMgYW5kIGZlYXR1cmUgcmVxdWVzdHMsIGFuZCBmb3IgYnVnIHJlcG9ydHMgZW5zdXJlIHRoYXQgeW91IGhhdmUgcHJvdmlkZWQgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byByZWxpYWJseSByZXByb2R1Y2UgdGhlIGlzc3VlLjwvbGk+CjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uICBXaGVuIGRlc2NyaWJpbmcgYW4gaXNzdWUgcGxlYXNlIG1ha2UgYW4gZWZmb3J0IHRvIHByb3ZpZGUgYWxsIHJlbGF2YW50IGluZm9ybWF0aW9uLCBhIHRob3JvdWdoIGRlc2NyaXB0aW9uIG9mIHlvdXIgaXNzdWUsIGFuZCBzdGVwcyB0byByZXByb2R1Y2UgaXQgb3IgeW91ciBkaXNjdXNzaW9uIG1heSBiZSBpZ25vcmVkLjwvbGk+CjxsaT5UaGUgYXV0aG9yLCBjYWxndXkxMDAwLCBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPgo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkuICBIb3dldmVyLCBwbGVhc2UgdXNlIHRoaXMgYXMgYSBsYXN0IHJlc29ydCwgYW5kIGVuc3VyZSB0aGF0IHlvdSBoYXZlIGZvbGxvd2VkIGFsbCBhcHBsaWNhYmxlIGluc3RydWN0aW9ucyBvbiB0aGUgZm9yZ2UsIGluIHRoZSBmb3J1bXMsIGV0Yy48L2xpPgo8L3VsPgoKPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAwOCwgUm9iZXJ0IENhbXBiZWxsIDxhIGhyZWY9Im1haWx0bzpjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnIj4mbHQ7Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cml0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCihhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uPC9wPgo8cD5Ib3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCmluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCnNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQpPciByZWFkIGl0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+b25saW5lPC9hPjwvcD4KPGgzPkRlcGVuZGVuY2llczwvaDM+PHVsPjxsaT5DR0V4dGVuc2lvbnMgPSZndDsgMS42NC4yPC9saT48bGk+RnJvbnRFbmRVc2VycyA9Jmd0OyAyLjk5PC9saT48L3VsPg==]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBjYWxndXkxMDAwICZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMC4xPGJyIC8+]]></about>
	<requires>
	  <requiredname>CGExtensions</requiredname>
	  <requiredversion>1.64.2</requiredversion>
	</requires>
	<requires>
	  <requiredname>FrontEndUsers</requiredname>
	  <requiredversion>2.99</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.admin_edit_user.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBjZ2VfcGFyYW07CgokZmlsdGVyX2ZpZWxkcyA9IGZ1bmN0aW9uKFJlZ0ZpZWxkU2V0ICRzZXQpIDogUmVnRmllbGRTZXQgewogICAgJGxpc3QgPSBudWxsOwogICAgZm9yZWFjaCggJHNldCBhcyAkb25lICkgewogICAgICAgIGlmKCAkb25lLT50eXBlICE9PSAtMTAwICkgJGxpc3RbJG9uZS0+bmFtZV0gPSAkb25lOwogICAgfQogICAgcmV0dXJuIG5ldyBSZWdGaWVsZFNldCgkbGlzdCk7Cn07Cgp0cnkgewogICAgJHVpZCA9IGNnZV9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCAndWlkJyk7CiAgICAkdXNlciA9ICR0aGlzLT5yZWdNYW5hZ2VyKCktPmxvYWRfdXNlcl9ieV9pZCgkdWlkKTsKICAgIGlmKCAhJHVzZXIgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdVc2VyIG5vdCBmb3VuZCcpOwogICAgJGZpZWxkcyA9ICR0aGlzLT5yZWdNYW5hZ2VyKCktPmdldF9yZWdpc3RyYXRpb25fZmllbGRzKCR1c2VyLT5naWQpOwogICAgJGZpZWxkcyA9ICRmaWx0ZXJfZmllbGRzKCRmaWVsZHMpOwoKICAgIGlmKCAhZW1wdHkoJF9QT1NUKSApIHsKICAgICAgICBpZiggY2dlX3BhcmFtOjpleGlzdHMoJF9QT1NULCAnY2FuY2VsJykgKSB7CiAgICAgICAgICAgICR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoKTsKICAgICAgICB9CiAgICAgICAgZWxzZWlmKCBjZ2VfcGFyYW06OmV4aXN0cygkX1BPU1QsICdkZWxldGV1c2VyJykgKSB7CiAgICAgICAgICAgICR0aGlzLT5yZWdNYW5hZ2VyKCktPmRlbGV0ZV91c2VyX2Z1bGwoJHVzZXIpOwogICAgICAgICAgICBhdWRpdCgkdXNlci0+aWQsJHRoaXMtPkdldE5hbWUoKSwnVXNlciAnLiR1c2VyLT51c2VybmFtZS4nIGRlbGV0ZWQnKTsKCiAgICAgICAgICAgICR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdtc2dfdXNlcl9kZWxldGVkJykpOwogICAgICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCk7CiAgICAgICAgfQogICAgICAgIGVsc2VpZiggY2dlX3BhcmFtOjpleGlzdHMoJF9QT1NULCAncHVzaHVzZXInKSApIHsKICAgICAgICAgICAgJGZldV91aWQgPSAkdGhpcy0+cmVnX2hhbmRsZXIoKS0+Zm9yY2VfcHVzaF91c2VyX2xpdmUoJHVzZXIpOwogICAgICAgICAgICBhdWRpdCgkdXNlci0+aWQsJHRoaXMtPkdldE5hbWUoKSwnVXNlciAnLiR1c2VyLT51c2VybmFtZS4nIHB1c2hlZCB0byBGRVUgd2l0aCB1aWQgJy4kZmV1X3VpZCk7CiAgICAgICAgICAgICR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoKTsKICAgICAgICB9CiAgICAgICAgZWxzZWlmKCBjZ2VfcGFyYW06OmV4aXN0cygkX1BPU1QsICduZXdjb2RlJykgKSB7CiAgICAgICAgICAgICRjb2RlID0gJHRoaXMtPnJlZ01hbmFnZXIoKS0+Y3JlYXRlX3JlZ2lzdHJhdGlvbl9jb2RlKCR1c2VyKTsKICAgICAgICAgICAgJHRoaXMtPnJtZ3ItPnNhdmVfdmVyaWZpY2F0aW9uX2NvZGUoJGNvZGUpOwogICAgICAgICAgICAkdGhpcy0+cHJvY2Vzc29yLT5leGVjdXRlKCRmaWVsZHMsICR1c2VyLCAkY29kZSk7CiAgICAgICAgICAgIGF1ZGl0KCR1c2VyLT5pZCwkdGhpcy0+R2V0TmFtZSgpLCdTZW50IGEgbmV3IGNvZGUgdG8gJy4kdXNlci0+dXNlcm5hbWUpOwoKICAgICAgICAgICAgJHRoaXMtPlNldE1lc3NhZ2UoJHRoaXMtPkxhbmcoJ21zZ191c2VyX25ld2NvZGUnKSk7CiAgICAgICAgICAgICR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoKTsKICAgICAgICB9CiAgICAgICAgZWxzZWlmKCBjZ2VfcGFyYW06OmV4aXN0cygkX1BPU1QsICdzdWJtaXQnKSApIHsKICAgICAgICAgICAgJHVzZXIgPSAkdGhpcy0+cmVnTWFuYWdlcigpLT5maWxsX2Zyb21fZGF0YSgkZmllbGRzLCAkdXNlciwgJF9QT1NUKTsKICAgICAgICAgICAgJHRoaXMtPnJlZ1ZlcmlmaWVyKCktPnZhbGlkYXRlX3B1cmVfcmVnaXN0cmF0aW9uKCRmaWVsZHMsICR1c2VyKTsKICAgICAgICAgICAgJHRoaXMtPnJlZ01hbmFnZXIoKS0+c2F2ZV91c2VyKCR1c2VyKTsKICAgICAgICAgICAgYXVkaXQoJHVzZXItPmlkLCR0aGlzLT5HZXROYW1lKCksJ1VzZXIgJy4kdXNlci0+dXNlcm5hbWUuJyBlZGl0ZWQnKTsKCiAgICAgICAgICAgICR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdtc2dfdXNlcl9zYXZlZCcpKTsKICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigpOwogICAgICAgIH0KICAgIH0KICAgIC8vIHRvZG86cGFnaW5hdGlvbiBhbmQgZmlsdGVyaW5nCiAgICAkdHBsID0gJHRoaXMtPkNyZWF0ZVNtYXJ0eVRlbXBsYXRlKCdhZG1pbl9lZGl0X3VzZXIudHBsJyk7CiAgICAkdHBsLT5hc3NpZ24oJ3VzZXInLCAkdXNlcik7CiAgICAkdHBsLT5hc3NpZ24oJ2ZpZWxkcycsICRmaWVsZHMpOwogICAgJHRwbC0+ZGlzcGxheSgpOwp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgJHRoaXMtPlNldEVycm9yKCRlLT5HZXRNZXNzYWdlKCkpOwogICAgJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigpOwp9]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGFuIGFsaWFzIGZvciB0aGUgcmVnaXN0ZXIgYWN0aW9uCnJlcXVpcmUoX19ESVJfXy4iL2FjdGlvbi5yZWdpc3Rlci5waHAiKTsK]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgovLyBsb2FkIHJlZ2lzdHJhdGlvbnMsIGFsbG93IGZpbHRlcmluZyBieSBkYXRlIGFuZCB1c2VybmFtZSBtYXRjaAp0cnkgewogICAgJGZpbHRlciA9ICR0aGlzLT5yZWdNYW5hZ2VyKCktPmNyZWF0ZV91c2VyX2ZpbHRlcigpOwogICAgLy8gdG9kbzpwYWdpbmF0aW9uIGFuZCBmaWx0ZXJpbmcKCiAgICAkbWF0Y2hlcyA9ICR0aGlzLT5yZWdNYW5hZ2VyKCktPmxvYWRfdXNlcnNfYnlfZmlsdGVyKCRmaWx0ZXIpOwogICAgJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgnZGVmYXVsdGFkbWluLnRwbCcpOwogICAgJHRwbC0+YXNzaWduKCd1c2VycycsICRtYXRjaGVzKTsKICAgICR0cGwtPmRpc3BsYXkoKTsKfQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJGUpOwp9]]></data>
	</file>
	<file>
	  <filename>/action.register.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDTVNNU1xIb29rTWFuYWdlcjsKdXNlIGNnZV9wYXJhbTsKdXNlIGNnZV91dGlsczsKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKY2xhc3MgTm9Vc2VyRGF0YUV4Y2VwdGlvbiBleHRlbmRzIFxSdW50aW1lRXhjZXB0aW9uIHt9Cgp0cnkgewogICAgSG9va01hbmFnZXI6OmRvX2hvb2soJ0NHRkVVUmVnaXN0ZXI6OlByZVJlbmRlcicpOwoKICAgICRlcnJvciA9ICRmaW5hbF9tZXNzYWdlID0gJHVzZXIgPSAkY2FwdGNoYSA9IG51bGw7CiAgICAkZmV1ID0gJHRoaXMtPmZldSgpOwogICAgJHJlZ01hbmFnZXIgPSAkdGhpcy0+cmVnTWFuYWdlcigpOwogICAgaWYoICRmZXUtPkxvZ2dlZEluSUQoKSApIHJldHVybjsgIC8vIGFscmVhZHkgbG9nZ2VkIGluCiAgICAkdGhldGVtcGxhdGUgPSBjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywgJ3JlZ3RlbXBsYXRlJywgJ3JlZ2lzdGVyLnRwbCcpOwogICAgJGlubGluZSA9IGNnZV9wYXJhbTo6Z2V0X2Jvb2woJHBhcmFtcywgJ2lubGluZScpOwogICAgJG5vY2FwdGNoYSA9IGNnZV9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCAnbm9jYXB0Y2hhJyk7CiAgICBpZiggISRub2NhcHRjaGEgKSAkY2FwdGNoYSA9ICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgnQ2FwdGNoYScpOwoKICAgIC8vIGdyb3VwIGlzIGEgcmVxdWlyZWQgcGFyYW1ldGVyLgogICAgJGdyb3VwID0gY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICdncm91cCcpOwogICAgaWYoICEkZ3JvdXAgKSB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignTm8gZ3JvdXAgcGFyYW1ldGVyIHBhc3NlZCB0byAnLiR0aGlzLT5HZXROYW1lKCkpOwogICAgJGdpZCA9ICRmZXUtPkdldEdyb3VwSUQoJGdyb3VwKTsKICAgIGlmKCAkZ2lkIDwgMSApIHRocm93IG5ldyBcQ21zRXJyb3I0MDRFeGNlcHRpb24oJ0ludmFsaWQgZ3JvdXAgbmFtZSBwYXNzZWQgdG8gJy4kdGhpcy0+R2V0TmFtZSgpKTsKICAgICRncm91cGluZm8gPSAkZmV1LT5HZXRHcm91cEluZm8oJGdpZCk7CiAgICBpZiggISRncm91cGluZm8gKSB0aHJvdyBuZXcgXENtc0Vycm9yNDA0RXhjZXB0aW9uKCdDb3VsZCBub3QgZmluZCBGRVUgZ3JvdXAgJy4kZ3JvdXApOwoKICAgICRmaWVsZHMgPSAkcmVnTWFuYWdlci0+Z2V0X3JlZ2lzdHJhdGlvbl9maWVsZHMoJGdpZCk7CiAgICBpZiggIWNvdW50KCRmaWVsZHMpICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignTm8gcHJvcGVydGllcyBmb3VuZCBmb3IgdGhlIHNlbGVjdGVkIHJlZ2lzdHJhdGlvbiBncm91cCcpOwogICAgJHVzZXIgPSAkcmVnTWFuYWdlci0+Y3JlYXRlX25ld191c2VyKCRmaWVsZHMsIG51bGwsICRnaWQpOwoKICAgIGlmKCAoJGtleSA9IGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCAnYWZ0ZXInKSkgKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJHRtcCA9ICR0aGlzLT5zZXNzaW9uX2dldCgka2V5KTsKICAgICAgICAgICAgJHRoaXMtPnNlc3Npb25fY2xlYXIoJGtleSk7CiAgICAgICAgICAgIGlmKCAhJHRtcCApIHRocm93IG5ldyBOb1VzZXJEYXRhRXhjZXB0aW9uKCdDb3VsZCBub3QgcmV0cmlldmUgdXNlciBkYXRhJyk7CiAgICAgICAgICAgICRkYXRhID0ganNvbl9kZWNvZGUoJHRtcCxUUlVFKTsKICAgICAgICAgICAgJHVzZXIgPSAkcmVnTWFuYWdlci0+Y3JlYXRlX25ld191c2VyKCRmaWVsZHMsICRkYXRhKTsKICAgICAgICAgICAgJGZpbmFsX21lc3NhZ2UgPSAkdGhpcy0+cmVnX3NlbmRlcigpLT5nZXRfZmluYWxfbWVzc2FnZSgkZmllbGRzLCAkdXNlcik7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBOb1VzZXJEYXRhRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAkZXJyb3IgPSAkZS0+R2V0TWVzc2FnZSgpOwogICAgICAgIH0KICAgICAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgJGVycm9yID0gJGUtPkdldE1lc3NhZ2UoKTsKICAgICAgICAgICAgY2dlX3V0aWxzOjpsb2dfZXhjZXB0aW9uKCRlKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIGlmKCBjZ2VfcGFyYW06OmV4aXN0cygkX1BPU1QsICRpZC4nc3VibWl0JykgKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgaWYoICFjZ2VfdXRpbHM6OnZhbGlkX2Zvcm1fY3NyZigpICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCAkdGhpcy0+TGFuZygnZXJyX3NlY3VyaXR5JykgKTsKICAgICAgICAgICAgJHVzZXIgPSAkcmVnTWFuYWdlci0+ZmlsbF9mcm9tX2RhdGEoJGZpZWxkcywgJHVzZXIsICRfUE9TVCk7CgogICAgICAgICAgICAvLyBjaGVjayB0aGUgY2FwdGNoYQogICAgICAgICAgICBpZiggISRub2NhcHRjaGEgJiYgJGNhcHRjaGEgJiYgISRjYXB0Y2hhLT5DaGVja0NhcHRjaGEoY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2NhcHRjaGFfdGV4dCcpKSApIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfY2FwdGNoYW1pc21hdGNoJykpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBzYXZlIHRoaXMgdGhpbmcKICAgICAgICAgICAgJHVzZXIgPSAkdGhpcy0+cmVnX2hhbmRsZXIoKS0+cmVnaXN0ZXJfdXNlcigkdXNlcik7CgogICAgICAgICAgICAvLyByZWRpcmVjdCBhZnRlciBwb3N0LgogICAgICAgICAgICAkZ3VpZCA9IGNnZV91dGlsczo6Y3JlYXRlX2d1aWQoKTsKICAgICAgICAgICAgJHRoaXMtPnNlc3Npb25fcHV0KCRndWlkLCBqc29uX2VuY29kZSgkdXNlcikpOwogICAgICAgICAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCdyZWdpc3RlcicsICRyZXR1cm5pZCwgWydhZnRlcic9PiRndWlkLCAnZ3JvdXAnPT4kZ3JvdXBdLCAkaW5saW5lKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIFxSdW50aW1lRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAkZXJyb3IgPSAkZS0+R2V0TWVzc2FnZSgpOwogICAgICAgIH0KICAgICAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgLy8gZ29ubmEgZGVsZXRlIHRoZSB1c2VyIGlmIHdlIGNhbgogICAgICAgICAgICAkZXJyb3IgPSAkZS0+R2V0TWVzc2FnZSgpOwogICAgICAgICAgICBpZiggJHVzZXItPmlkICkgewogICAgICAgICAgICAgICAgJHJlZ01hbmFnZXItPmRlbGV0ZV91c2VyX2Z1bGwoJHVzZXIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJHVzZXIgPSAkcmVnTWFuYWdlci0+bG9hZF91c2VyX2J5X3VzZXJuYW1lKCR1c2VyLT51c2VybmFtZSk7CiAgICAgICAgICAgICAgICAkcmVnTWFuYWdlci0+ZGVsZXRlX3VzZXJfZnVsbCgkdXNlcik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgkdGhldGVtcGxhdGUpOwogICAgJHRwbC0+YXNzaWduKCdncm91cCcsICRncm91cGluZm8pOwogICAgJHRwbC0+YXNzaWduKCdwcm9wZXJ0aWVzJywgJGZpZWxkcyk7CiAgICAkdHBsLT5hc3NpZ24oJ2Vycm9yJywgJGVycm9yKTsKICAgICR0cGwtPmFzc2lnbignZmluYWxfbWVzc2FnZScsICRmaW5hbF9tZXNzYWdlKTsKICAgICR0cGwtPmFzc2lnbigndXNlcicsICR1c2VyKTsKICAgICR0cGwtPmFzc2lnbignaW5saW5lJywgJGlubGluZSk7CiAgICAkdHBsLT5hc3NpZ24oJ2NhcHRjaGEnLCAoaXNfb2JqZWN0KCRjYXB0Y2hhKSkgPyAkY2FwdGNoYS0+Z2V0Q2FwdGNoYSgpIDogbnVsbCk7CiAgICAkdHBsLT5hc3NpZ24oJ2NhcHRjaGFfaW5wdXRfbmFtZScsIChpc19vYmplY3QoJGNhcHRjaGEpICYmICRjYXB0Y2hhLT5OZWVkc0lucHV0RmllbGQoKSkgPyAkaWQuJ2NhcHRjaGFfdGV4dCcgOiBudWxsICk7CiAgICAkdHBsLT5kaXNwbGF5KCk7Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICB0aHJvdyAkZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/action.repeatcode.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDTVNNU1xIb29rTWFuYWdlcjsKdXNlIGNnZV9wYXJhbTsKdXNlIGNnZV91dGlsczsKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKdHJ5IHsKICAgIGlmKCAkdGhpcy0+c2V0dGluZ3MoKS0+ZGlzYWJsZV9yZXBlYXRjb2RlKSB0aHJvdyBuZXcgXENtc0Vycm9yNDAzRXhjZXB0aW9uKCdQZXJtaXNzaW9uIGRlbmllZCcpOwogICAgSG9va01hbmFnZXI6OmRvX2hvb2soJ0NHRkVVUmVnaXN0ZXI6OlByZVJlbmRlcicpOwogICAgJHVzZXJuYW1lID0gJGVycm9yID0gJGZpbmFsX21lc3NhZ2UgPSAkY2FwdGNoYSA9IG51bGw7CiAgICAkcmVnTWFuYWdlciA9ICR0aGlzLT5yZWdNYW5hZ2VyKCk7CgogICAgJHRoZXRlbXBsYXRlID0gY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICdyZXBlYXRjb2RldGVtcGxhdGUnLCAncmVwZWF0Y29kZS50cGwnKTsKICAgICRpbmxpbmUgPSBjZ2VfcGFyYW06OmdldF9ib29sKCRwYXJhbXMsICdpbmxpbmUnKTsKICAgICRub2NhcHRjaGEgPSBjZ2VfcGFyYW06OmdldF9pbnQoJHBhcmFtcywgJ25vY2FwdGNoYScpOwogICAgaWYoICEkbm9jYXB0Y2hhICkgJGNhcHRjaGEgPSAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ0NhcHRjaGEnKTsKICAgICR1c2VybmFtZV90eXBlID0gKCR0aGlzLT5mZXUoKS0+R2V0VXNlcm5hbWVGaWVsZFR5cGUoKSA9PSAyKSA/ICdlbWFpbCcgOiAndGV4dCc7CgogICAgaWYoICgka2V5ID0gY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICdhZnRlcicpKSApIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAkdG1wID0gJHRoaXMtPnNlc3Npb25fZ2V0KCRrZXkpOwogICAgICAgICAgICAkdGhpcy0+c2Vzc2lvbl9jbGVhcigka2V5KTsKICAgICAgICAgICAgaWYoICEkdG1wICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ291bGQgbm90IHJldHJpZXZlIHVzZXIgZGF0YScpOwogICAgICAgICAgICAkZGF0YSA9IGpzb25fZGVjb2RlKCR0bXAsVFJVRSk7CiAgICAgICAgICAgIGlmKCAhaXNzZXQoJGRhdGFbJ2lkJ10pIHx8ICFpc3NldCgkZGF0YVsnY3JlYXRlZCddKSB8fCAhaXNzZXQoJGRhdGFbJ2dpZCddKSApIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0ludmFsaWQgdXNlciBkYXRhIHJldHJpZXZlZCcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRnaWQgPSBjZ2VfcGFyYW06OmdldF9pbnQoJGRhdGEsJ2dpZCcpOwogICAgICAgICAgICAkZmllbGRzID0gJHJlZ01hbmFnZXItPmdldF9yZWdpc3RyYXRpb25fZmllbGRzKCRnaWQpOwogICAgICAgICAgICAkdXNlciA9ICRyZWdNYW5hZ2VyLT5jcmVhdGVfbmV3X3VzZXIoJGZpZWxkcywgJGRhdGEpOwogICAgICAgICAgICAvLyBmaWVsZHMgbWF5IGJlIGVtcHR5IGlmIGdyb3VwIGlzIHJlbW92ZWQgd2l0aCB3aGlsZSB1c2VyIGlzIHJlZ2lzdGVyaW5nLgogICAgICAgICAgICBpZiggISRmaWVsZHMgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDb3VsZCBub3QgZ2V0IGZpZWxkcyBmb3IgdXNlciB3aXRoIGdpZCAnLiR1c2VyLT5naWQpOwogICAgICAgICAgICAkZmluYWxfbWVzc2FnZSA9ICR0aGlzLT5yZWdfc2VuZGVyKCktPmdldF9yZXBlYXRjb2RlX2ZpbmFsbWVzc2FnZSgkZmllbGRzLCAkdXNlcik7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAkZXJyb3IgPSAkZS0+R2V0TWVzc2FnZSgpOwogICAgICAgICAgICBjZ2VfdXRpbHM6OmxvZ19leGNlcHRpb24oKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIGlmKCBjZ2VfcGFyYW06OmV4aXN0cygkX1BPU1QsJGlkLid1c2VybmFtZScpICkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGlmKCAhY2dlX3V0aWxzOjp2YWxpZF9mb3JtX2NzcmYoKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbiggJHRoaXMtPkxhbmcoJ2Vycl9zZWN1cml0eScpICk7CgogICAgICAgICAgICAkdXNlcm5hbWUgPSBjbXNfaHRtbF9lbnRpdHlfZGVjb2RlKGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCAndXNlcm5hbWUnKSk7CgogICAgICAgICAgICAvLyBjaGVjayB0aGUgY2FwdGNoYQogICAgICAgICAgICBpZiggJGNhcHRjaGEgJiYgISRjYXB0Y2hhLT5DaGVja0NhcHRjaGEoY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICdjYXB0Y2hhX3RleHQnKSkgKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycl9jYXB0Y2hhbWlzbWF0Y2gnKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGxvYWQgdGhlIHVzZXIgZ2l2ZW4gdGhlIHVzZXJuYW1lIGFuZCBtYWtlIHN1cmUgaXQgaXMgbm90IHRvbyBvbGQKICAgICAgICAgICAgJHVzZXIgPSAkcmVnTWFuYWdlci0+bG9hZF91c2VyX2J5X3VzZXJuYW1lKCR1c2VybmFtZSk7CiAgICAgICAgICAgIGlmKCAhJHVzZXIgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oICR0aGlzLT5MYW5nKCdlcnJfdXNlcl9ub3Rmb3VuZCcpICk7CiAgICAgICAgICAgIGlmKCAoJGhycyA9ICR0aGlzLT5zZXR0aW5ncygpLT51c2VyX2V4cGlyZV9ob3VycykgPiAwICYmICR1c2VyLT5jcmVhdGVkIDwgdGltZSgpIC0gJGhycyAqIDM2MDAgKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oICR0aGlzLT5MYW5nKCdlcnJfdXNlcl9ub3Rmb3VuZCcpICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRmaWVsZHMgPSAkcmVnTWFuYWdlci0+Z2V0X3JlZ2lzdHJhdGlvbl9maWVsZHMoJHVzZXItPmdpZCk7CiAgICAgICAgICAgIC8vIGZpZWxkcyBtYXkgYmUgZW1wdHkgaWYgZ3JvdXAgaXMgcmVtb3ZlZCB3aXRoIHdoaWxlIHVzZXIgaXMgcmVnaXN0ZXJpbmcuCiAgICAgICAgICAgIGlmKCAhJGZpZWxkcyApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0NvdWxkIG5vdCBnZXQgZmllbGRzIGZvciB1c2VyIHdpdGggZ2lkICcuJHVzZXItPmdpZCk7CgogICAgICAgICAgICAvLyBnZW5lcmF0ZSBhbm90aGVyIHJlZ2lzdHJhdGlvbiBjb2RlCiAgICAgICAgICAgICRjb2RlID0gJHJlZ01hbmFnZXItPmNyZWF0ZV9yZWdpc3RyYXRpb25fY29kZSgkdXNlcik7CiAgICAgICAgICAgICRyZWdNYW5hZ2VyLT5zYXZlX3ZlcmlmaWNhdGlvbl9jb2RlKCRjb2RlKTsKCiAgICAgICAgICAgIC8vIGNhbGwgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzb3IKICAgICAgICAgICAgJHRoaXMtPnJlZ19zZW5kZXIoKS0+ZXhlY3V0ZV9yZXBlYXRjb2RlKCRmaWVsZHMsICR1c2VyLCAkY29kZSk7CiAgICAgICAgICAgIEhvb2tNYW5hZ2VyOjpkb19ob29rKCdDR0ZFVVJlZ2lzdGVyOjpBZnRlclJlcGVhdENvZGUnLCBbJ2ZpZWxkcyc9PiRmaWVsZHMsICd1c2VyJz0+JHVzZXJdKTsKCiAgICAgICAgICAgIC8vIHJlZGlyZWN0IGFmdGVyIHBvc3QKICAgICAgICAgICAgJGd1aWQgPSBjZ2VfdXRpbHM6OmNyZWF0ZV9ndWlkKCk7CiAgICAgICAgICAgICR0aGlzLT5zZXNzaW9uX3B1dCgkZ3VpZCwganNvbl9lbmNvZGUoJHVzZXIpKTsKICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwncmVwZWF0Y29kZScsICRyZXR1cm5pZCwgWydhZnRlcic9PiRndWlkXSwgJGlubGluZSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcUnVudGltZUV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgJGVycm9yID0gJGUtPkdldE1lc3NhZ2UoKTsKICAgICAgICB9CiAgICB9CgogICAgJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgkdGhldGVtcGxhdGUpOwogICAgJHRwbC0+YXNzaWduKCdpbmxpbmUnLCAkaW5saW5lKTsKICAgICR0cGwtPmFzc2lnbigndXNlcm5hbWUnLCAkdXNlcm5hbWUpOwogICAgJHRwbC0+YXNzaWduKCdmaW5hbF9tZXNzYWdlJywkZmluYWxfbWVzc2FnZSk7CiAgICAkdHBsLT5hc3NpZ24oJ2Vycm9yJywgJGVycm9yKTsKICAgICR0cGwtPmFzc2lnbignY2FwdGNoYScsIChpc19vYmplY3QoJGNhcHRjaGEpKSA/ICRjYXB0Y2hhLT5nZXRDYXB0Y2hhKCkgOiBudWxsKTsKICAgICR0cGwtPmFzc2lnbignY2FwdGNoYV9pbnB1dF9uYW1lJywgKGlzX29iamVjdCgkY2FwdGNoYSkgJiYgJGNhcHRjaGEtPk5lZWRzSW5wdXRGaWVsZCgpKSA/ICRpZC4nY2FwdGNoYV90ZXh0JyA6IG51bGwgKTsKICAgICR0cGwtPmFzc2lnbignaW5wdXRfdHlwZScsICR1c2VybmFtZV90eXBlKTsKICAgICR0cGwtPmRpc3BsYXkoKTsKfQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgIGNnZV91dGlsczo6bG9nX2V4Y2VwdGlvbigkZSk7CiAgICB0aHJvdyAkZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/action.verify.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDTVNNU1xIb29rTWFuYWdlcjsKdXNlIGNnZV9wYXJhbTsKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKJGZpbmFsX21lc3NhZ2UgPSAkZXJyb3IgPSAkbG9nZ2VkX2luID0gJHVzZXIgPSAkZmV1X3VpZCA9IG51bGw7CnRyeSB7CiAgICBIb29rTWFuYWdlcjo6ZG9faG9vaygnQ0dGRVVSZWdpc3Rlcjo6UHJlUmVuZGVyJyApOwogICAgJGVycm9yID0gJGZpbmFsX21lc3NhZ2UgPSAkdXNlciA9IG51bGw7CiAgICAkZmV1ID0gJHRoaXMtPmZldSgpOwogICAgJHJlZ01hbmFnZXIgPSAkdGhpcy0+cmVnTWFuYWdlcigpOwogICAgJHVzZXJfaWQgPSBjZ2VfcGFyYW06OmdldF9pbnQoJHBhcmFtcywndWlkJyk7CiAgICAkY29kZV9zdHIgPSBjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnY29kZScpOwoKICAgICRmZXVfdWlkID0gJHRoaXMtPnJlZ19oYW5kbGVyKCktPnB1c2hfdXNlcl9saXZlKCR1c2VyX2lkLCAkY29kZV9zdHIpOwogICAgaWYoICR0aGlzLT5zZXR0aW5ncygpLT5sb2dpbl9hZnRlcl92ZXJpZnkgKSAkdGhpcy0+ZmV1KCktPlNldFVzZXJMb2dnZWRpbigkZmV1X3VpZCk7CgogICAgJGZpbmFsX21lc3NhZ2UgPSAkdGhpcy0+TGFuZygnbXNnX2FmdGVyX3ZlcmlmeScpOwp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgLy8gZGlzcGxheSBlcnJvciBtZXNzYWdlCiAgICAkZXJyb3IgPSAkZS0+R2V0TWVzc2FnZSgpOwp9CgoKJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZShjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnYWZ0ZXJ2ZXJpZnl0ZW1wbGF0ZScsJ2FmdGVyX3ZlcmlmeS50cGwnKSk7CiR0cGwtPmFzc2lnbignZXJyb3InLCAkZXJyb3IpOwokdHBsLT5hc3NpZ24oJ2ZpbmFsX21lc3NhZ2UnLCAkZmluYWxfbWVzc2FnZSk7CiR0cGwtPmFzc2lnbignbG9nZ2VkX2luJywgJGxvZ2dlZF9pbik7CiR0cGwtPmFzc2lnbigndXNlcicsICR1c2VyKTsKJHRwbC0+YXNzaWduKCdmZXVfdWlkJywgJGZldV91aWQpOwokdHBsLT5kaXNwbGF5KCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/CGFEURegister.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKdXNlIENHRkVVUmVnaXN0ZXJcUmVnaXN0cmF0aW9uTWFuYWdlcjsKdXNlIENHRkVVUmVnaXN0ZXJcSG9va1JlZ2lzdHJhdGlvbk1hbmFnZXI7CnVzZSBDR0ZFVVJlZ2lzdGVyXFJlZ2lzdHJhdGlvblZlcmlmaWVySW50ZXJmYWNlOwp1c2UgQ0dGRVVSZWdpc3RlclxSZWdpc3RyYXRpb25Qcm9jZXNzb3JJbnRlcmZhY2U7CnVzZSBDR0ZFVVJlZ2lzdGVyXE5vcm1hbFJlZ2lzdHJhdGlvblZlcmlmaWVyOwp1c2UgQ0dGRVVSZWdpc3RlclxCbGFja2xpc3RSZWdpc3RyYXRpb25WZXJpZmllcjsKdXNlIENHRkVVUmVnaXN0ZXJcU2V0dGluZ3M7CnVzZSBDR0ZFVVJlZ2lzdGVyXEVtYWlsUmVnaXN0cmF0aW9uUHJvY2Vzc29yOwp1c2UgQ0dGRVVSZWdpc3RlclxSZWdpc3RyYXRpb25IYW5kbGVySW50ZXJmYWNlOwp1c2UgQ0dGRVVSZWdpc3RlclxIb29rUmVnaXN0cmF0aW9uSGFuZGxlcjsKdXNlIENHRkVVUmVnaXN0ZXJcQWRtaW5Ob3RpZmllcjsKdXNlIENHRkVVUmVnaXN0ZXJcRW1haWxBZG1pbk5vdGlmaWVyOwp1c2UgQ0dGRVVSZWdpc3RlclxBZG1pbk5vdGlmaWVyVXNpbmdOb3RpZmljYXRpb25zOwp1c2UgQ0dGRVVSZWdpc3RlclxIb3VybHlIb29rVGFzazsKdXNlIENHRkVVUmVnaXN0ZXJcVGFza01hbmFnZXI7CnVzZSBDR0ZFVVJlZ2lzdGVyXFJlbWluZFVzZXJzVGFzazsKdXNlIENHRkVVUmVnaXN0ZXJcQ2xlYXJFeHBpcmVkVXNlcnNUYXNrOwp1c2UgQ01TTVNcSG9va01hbmFnZXI7CgpmaW5hbCBjbGFzcyBDR0ZFVVJlZ2lzdGVyIGV4dGVuZHMgQ0dFeHRlbnNpb25zCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRWZXJzaW9uKCkgeyByZXR1cm4gJzEuMC4xJzsgfQogICAgcHVibGljIGZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCkgeyByZXR1cm4gJzIuMi4xMCc7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXREZXBlbmRlbmNpZXMoKSB7IHJldHVybiBbICdDR0V4dGVuc2lvbnMnPT4nMS42NC4yJywgJ0Zyb250RW5kVXNlcnMnPT4nMi45OScgXTsgfQogICAgcHVibGljIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkgeyByZXR1cm4gVFJVRTsgfQogICAgcHVibGljIGZ1bmN0aW9uIEhhc0FkbWluKCkgeyByZXR1cm4gVFJVRTsgfQogICAgcHVibGljIGZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbiAoKSB7IHJldHVybiAndXNlcnNncm91cHMnOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpOyB9CgogICAgcHVibGljIGZ1bmN0aW9uIFNldFBhcmFtZXRlcnMoKQogICAgewogICAgICAgIHBhcmVudDo6U2V0UGFyYW1ldGVycygpOwogICAgICAgIEhvb2tNYW5hZ2VyOjphZGRfaG9vaygnQ0dGRVVSZWdpc3Rlcjo6X19JbnRlcm5hbEhvdXJseVRhc2snLCBbICR0aGlzLCAnaG9va19ob3VybHknXSApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBJbml0aWFsaXplRnJvbnRlbmQoKQogICAgewogICAgICAgIHBhcmVudDo6SW5pdGlhbGl6ZUZyb250ZW5kKCk7CiAgICAgICAgJHRoaXMtPlJlZ2lzdGVyTW9kdWxlUGx1Z2luKCk7CiAgICAgICAgJHRoaXMtPlJlZ2lzdGVyUm91dGUoJy9jZ2ZldXJcL3ZlcmlmeVwvKD9QPHJldHVybmlkPlswLTldKylcLyg/UDx1aWQ+WzAtOV0rKVwvKD9QPGNvZGU+Lio/KSQvJywgWydhY3Rpb24nPT4ndmVyaWZ5J10gKTsKCiAgICAgICAgSG9va01hbmFnZXI6OmFkZF9ob29rKCdDR0ZFVVJlZ2lzdGVyOjpBZnRlclJlZ2lzdGVyJywgWyAkdGhpcywgJ2hvb2tfYWZ0ZXJyZWdpc3Rlcl9lbWFpbGFkbWluJ10gKTsKICAgICAgICBIb29rTWFuYWdlcjo6YWRkX2hvb2soJ0NHRkVVUmVnaXN0ZXI6OkFmdGVyVXNlclB1c2hlZCcsIFsgJHRoaXMsICdob29rX2FmdGVycHVzaGVkX2VtYWlsYWRtaW4nXSApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfcHJldHR5X3VybCgkaWQsJGFjdGlvbiwkcmV0dXJuaWQ9JycsJHBhcmFtcz1hcnJheSgpLCRpbmxpbmU9ZmFsc2UpCiAgICB7CiAgICAgICAgaWYoICRhY3Rpb24gIT0gJ3ZlcmlmeScgKSByZXR1cm47CiAgICAgICAgaWYoICEoJGNvZGUgPSBjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnY29kZScpKSApIHJldHVybjsKICAgICAgICAkdWlkID0gY2dlX3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJ3VpZCcpOwogICAgICAgIGlmKCAkdWlkIDwgMSApIHJldHVybjsKICAgICAgICByZXR1cm4gImNnZmV1ci92ZXJpZnkvJHJldHVybmlkLyR1aWQvJGNvZGUiOwogICAgfQoKICAgIGZ1bmN0aW9uIEhhc0NhcGFiaWxpdHkoJGNhcGFiaWxpdHksJHBhcmFtcyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgc3dpdGNoKCAkY2FwYWJpbGl0eSApIHsKICAgICAgICBjYXNlICd0YXNrcyc6CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0X3Rhc2tzKCkKICAgIHsKICAgICAgICAkb3V0ID0gbnVsbDsKICAgICAgICAkb3V0W10gPSBuZXcgSG91cmx5SG9va1Rhc2soKTsKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBmZXUoKSA6IEZyb250RW5kVXNlcnMKICAgIHsKICAgICAgICBzdGF0aWMgJF9vYmo7CiAgICAgICAgaWYoICEkX29iaiApICRfb2JqID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKE1PRF9GUk9OVEVORFVTRVJTKTsKICAgICAgICByZXR1cm4gJF9vYmo7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNldHRpbmdzKCkgOiBTZXR0aW5ncwogICAgewogICAgICAgIC8vIGEgc2V0dGluZ3MgY2xhc3MKICAgICAgICBzdGF0aWMgJF9vYmo7CiAgICAgICAgaWYoICEkX29iaiApICRfb2JqID0gbmV3IFNldHRpbmdzKCR0aGlzLT5jb25maWcpOwogICAgICAgIHJldHVybiAkX29iajsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcmVnTWFuYWdlcigpIDogUmVnaXN0cmF0aW9uTWFuYWdlcgogICAgewogICAgICAgIC8vIHRoaXMgaXMgcmVzcG9uc2libGUgZm9yIHNhdmluZyBhbmQgcmV0cmlldmluZyB1c2VycyBhbmQgdmVyaWZpY2F0aW9uIGNvZGVzIHRvL2Zyb20gdGhlIGRhdGFiYXNlCiAgICAgICAgc3RhdGljICRfb2JqOwogICAgICAgIGlmKCAhJF9vYmogKSB7CiAgICAgICAgICAgICRfb2JqID0gbmV3IEhvb2tSZWdpc3RyYXRpb25NYW5hZ2VyKCR0aGlzLCAkdGhpcy0+ZmV1KCksICR0aGlzLT5nZXRfZXh0ZW5kZWRfZGIoKSwgJHRoaXMtPnNldHRpbmdzKCkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJF9vYmo7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHJlZ1ZlcmlmaWVyKCkgOiBSZWdpc3RyYXRpb25WZXJpZmllckludGVyZmFjZQogICAgewogICAgICAgIC8vIHRvZG86IGNvdWxkIGhhdmUgZGVjb3JhdG9yIGhlcmUgdGhhdCBzZW5kcyBob29rcwogICAgICAgIHN0YXRpYyAkX29iajsKICAgICAgICBpZiggISRfb2JqICkgewogICAgICAgICAgICAkX29iaiA9IG5ldyBOb3JtYWxSZWdpc3RyYXRpb25WZXJpZmllcigkdGhpcywgJHRoaXMtPmZldSgpLCAkdGhpcy0+Z2V0X2V4dGVuZGVkX2RiKCkpOwogICAgICAgICAgICBpZiggJHRoaXMtPmNtcy0+aXNfZnJvbnRlbmRfcmVxdWVzdCgpICYmICR0aGlzLT5zZXR0aW5ncygpLT51c2VybmFtZV9ibGFja2xpc3QgKSAkX29iaiA9IG5ldyBCbGFja2xpc3RSZWdpc3RyYXRpb25WZXJpZmllcigkX29iaiwgJHRoaXMtPnNldHRpbmdzKCkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJF9vYmo7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHJlZ19zZW5kZXIoKSA6IFJlZ2lzdHJhdGlvblByb2Nlc3NvckludGVyZmFjZQogICAgewogICAgICAgIC8vIHRoaXMgaXMgdXNlZCBmb3Igc2VuZGluZyB0aGUgcmVnaXN0cmF0aW9uIGluZm9ybWF0aW9uIHRvIHRoZSB1c2VyLgogICAgICAgIHN0YXRpYyAkX29iajsKICAgICAgICBpZiggISRfb2JqICkgJF9vYmogPSBuZXcgRW1haWxSZWdpc3RyYXRpb25Qcm9jZXNzb3IoJHRoaXMsICR0aGlzLT5zZXR0aW5ncygpKTsKICAgICAgICByZXR1cm4gJF9vYmo7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGFkbWluX25vdGlmaWVyKCkgOiBBZG1pbk5vdGlmaWVyCiAgICB7CiAgICAgICAgLy8gYW4gb2JqZWN0IHRoYXQga25vd3MgaG93IHRvIG5vdGlmeSBhZG1pbnMKICAgICAgICBzdGF0aWMgJF9vYmo7CiAgICAgICAgaWYoICEkX29iaiApIHsKICAgICAgICAgICAgJG5vdGlmaWVyID0gbnVsbDsKICAgICAgICAgICAgJGxpc3QgPSAkdGhpcy0+R2V0TW9kdWxlc1dpdGhDYXBhYmlsaXR5KCdub3RpZmljYXRpb25zJyk7CiAgICAgICAgICAgIGlmKCAhZW1wdHkoJGxpc3QpICYmICEkdGhpcy0+c2V0dGluZ3MoKS0+dXNlX2J1aWx0aW5fbm90aWZpY2F0aW9ucyApIHsKICAgICAgICAgICAgICAgICRtb2RfbmFtZSA9ICRsaXN0WzBdOwogICAgICAgICAgICAgICAgaWYoICRtb2RfbmFtZSApICRub3RpZmllciA9ICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgkbW9kX25hbWUpOwogICAgICAgICAgICAgICAgaWYoICRub3RpZmllciApICRfb2JqID0gbmV3IEFkbWluTm90aWZpZXJVc2luZ05vdGlmaWNhdGlvbnMoJHRoaXMsICR0aGlzLT5zZXR0aW5ncygpLCAkbm90aWZpZXIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKCAhJF9vYmogKSAkX29iaiA9IG5ldyBFbWFpbEFkbWluTm90aWZpZXIoJHRoaXMsICR0aGlzLT5zZXR0aW5ncygpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRfb2JqOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiByZWdfaGFuZGxlcigpIDogUmVnaXN0cmF0aW9uSGFuZGxlckludGVyZmFjZQogICAgewogICAgICAgIC8vIGFuIGFnZ3JlZ2F0ZSB0aGF0IGtub3dzIGhvdyB0byBoYW5kbGUgYm90aCB1c2VyIHJlZ2lzdHJhdGlvbiBBTkQgcHVzaGluZyBsaXZlLgogICAgICAgIHN0YXRpYyAkX29iajsKICAgICAgICBpZiggISRfb2JqICkgJF9vYmogPSBuZXcgSG9va1JlZ2lzdHJhdGlvbkhhbmRsZXIoJHRoaXMtPnJlZ01hbmFnZXIoKSwgJHRoaXMtPnJlZ19zZW5kZXIoKSwgJHRoaXMtPnJlZ1ZlcmlmaWVyKCkpOwogICAgICAgIHJldHVybiAkX29iajsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gdGFza19tYW5hZ2VyKCkgOiBUYXNrTWFuYWdlcgogICAgewogICAgICAgIC8vIHNob3VsZCBiZSBhbiBhYnN0cmFjdCBjbGFzcyBvciBpbnRlcmZhY2UKICAgICAgICBzdGF0aWMgJF9vYmo7CiAgICAgICAgaWYoICEkX29iaiApIHsKICAgICAgICAgICAgJF9vYmogPSBuZXcgVGFza01hbmFnZXIoJHRoaXMtPmdldF90YXNrcygpKTsKICAgICAgICAgICAgJF9vYmotPnJlZ2lzdGVyX3Rhc2sobmV3IFJlbWluZFVzZXJzVGFzaygkdGhpcywgJHRoaXMtPnJlZ01hbmFnZXIoKSwgJHRoaXMtPnNldHRpbmdzKCkpKTsKICAgICAgICAgICAgJF9vYmotPnJlZ2lzdGVyX3Rhc2sobmV3IENsZWFyRXhwaXJlZFVzZXJzVGFzaygkdGhpcywgJHRoaXMtPnJlZ01hbmFnZXIoKSwgJHRoaXMtPnNldHRpbmdzKCkpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRfb2JqOwogICAgfQoKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCgogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhvb2tfYWZ0ZXJyZWdpc3Rlcl9lbWFpbGFkbWluKGFycmF5ICRwYXJhbXMpCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJGdyb3VwID0gJHRoaXMtPnNldHRpbmdzKCktPm9ucmVnaXN0ZXJfbm90aWZ5X2FkbWluZ3JvdXA7CiAgICAgICAgICAgIGlmKCAhJGdyb3VwICkgcmV0dXJuOwoKICAgICAgICAgICAgJHVzZXIgPSAkcGFyYW1zWyd1c2VyJ107CiAgICAgICAgICAgICRmaWVsZHMgPSAkdGhpcy0+cmVnTWFuYWdlcigpLT5nZXRfcmVnaXN0cmF0aW9uX2ZpZWxkcygkdXNlci0+Z2lkKTsKICAgICAgICAgICAgJHRoaXMtPmFkbWluX25vdGlmaWVyKCktPm5vdGlmeV91c2VyX3JlZ2lzdGVyZWQoJGZpZWxkcywgJHVzZXIpOwogICAgICAgIH0KICAgICAgICBjYXRjaCggXENHRXh0ZW5zaW9uc1xFbWFpbFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgIGRlYnVnX3RvX2xvZyhfX01FVEhPRF9fKTsKICAgICAgICAgICAgY2dlX3V0aWxzOjpsb2dfZXhjZXB0aW9uKCRlKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhvb2tfYWZ0ZXJwdXNoZWRfZW1haWxhZG1pbihhcnJheSAkcGFyYW1zKQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRncm91cCA9ICR0aGlzLT5zZXR0aW5ncygpLT5vbnJlZ2lzdGVyX25vdGlmeV9hZG1pbmdyb3VwOwogICAgICAgICAgICBpZiggISRncm91cCApIHJldHVybjsKCiAgICAgICAgICAgICR0aGlzLT5hZG1pbl9ub3RpZmllcigpLT5ub3RpZnlfdXNlcl9wdXNoZWQoJHBhcmFtc1snZmV1X3VpZCddLCAkcGFyYW1zWydmaWVsZHMnXSwgJHBhcmFtc1sndXNlciddKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIFxDR0V4dGVuc2lvbnNcRW1haWxcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICBkZWJ1Z190b19sb2coX19NRVRIT0RfXyk7CiAgICAgICAgICAgIGNnZV91dGlsczo6bG9nX2V4Y2VwdGlvbigkZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBob29rX2hvdXJseSgpCiAgICB7CiAgICAgICAgZGVidWdfdG9fbG9nKF9fTUVUSE9EX18pOwoKICAgICAgICAvLyBydW5zIHZpYSBwc2V1ZG9jcm9uLgogICAgICAgIC8vIHdlIHdhbnQgZGFpbHksIGhvdXJseSwgYW5kIHdlZWtseSBzdHVmZgogICAgICAgICRub3cgPSB0aW1lKCk7CiAgICAgICAgJGxyX2hvdXJseSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdob3VybHlfbGFzdHJ1bicpOwogICAgICAgICBpZiggJGxyX2hvdXJseSA8ICRub3cgLSAzNjAwICkgewogICAgICAgICAgICAkdGhpcy0+dGFza19tYW5hZ2VyKCktPmhvdXJseSgpOwogICAgICAgICAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnaG91cmx5X2xhc3RydW4nLCAkbm93KTsKICAgICAgICB9CiAgICAgICAgJGxyX2RhaWx5ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RhaWx5X2xhc3RydW4nKTsKICAgICAgICBpZiggJGxyX2RhaWx5IDwgJG5vdyAtIDM2MDAgKiAyNCApIHsKICAgICAgICAgICAgZGVidWdfdG9fbG9nKCdkbyBkYWlseSB0YXNrcycpOwogICAgICAgICAgICAkdGhpcy0+dGFza19tYW5hZ2VyKCktPmRhaWx5KCk7CiAgICAgICAgICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkYWlseV9sYXN0cnVuJywgJG5vdyk7CiAgICAgICAgfQogICAgICAgICRscl93ZWVrbHkgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnd2Vla2x5X2xhc3RydW4nKTsKICAgICAgICBpZiggJGxyX3dlZWtseSA9ICRub3cgLSAzNjAwICogMjQgKiA3ICkgewogICAgICAgICAgICBkZWJ1Z190b19sb2coJ2RvIHdlZWtseSB0YXNrcycpOwogICAgICAgICAgICAkdGhpcy0+dGFza19tYW5hZ2VyKCktPndlZWtseSgpOwogICAgICAgICAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnd2Vla2x5X2xhc3RydW4nLCAkbm93KTsKICAgICAgICB9CiAgICAgICAgJGxyX21vbnRobHkgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbW9udGhseV9sYXN0cnVuJyk7CiAgICAgICAgaWYoICRscl9tb250aGx5ID0gJG5vdyAtIDM2MDAgKiAyNCAqIDMwICkgewogICAgICAgICAgICBkZWJ1Z190b19sb2coJ2RvIG1vbnRobHkgdGFza3MnKTsKICAgICAgICAgICAgJHRoaXMtPnRhc2tfbWFuYWdlcigpLT5tb250aGx5KCk7CiAgICAgICAgICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtb250aGx5X2xhc3RydW4nLCAkbm93KTsKICAgICAgICB9CiAgICB9CgogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCiAgICBwdWJsaWMgZnVuY3Rpb24gdXNlcnNfdGFibGVfbmFtZSgpIHsgcmV0dXJuIENNU19EQl9QUkVGSVguJ21vZF9jZ2ZyX3VzZXJzJzsgfQogICAgcHVibGljIGZ1bmN0aW9uIGNvZGVzX3RhYmxlX25hbWUoKSB7IHJldHVybiBDTVNfREJfUFJFRklYLidtb2RfY2dmcl9jb2Rlcyc7IH0KCn0gLy8gY2xhc3MK]]></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[PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPlRoaXMgbW9kdWxlIGlzIGEgY29tcGFuaW9uIG1vZHVsZSB0byBGcm9udEVuZHVzZXJzIHRvIGFsbG93IHVzZXJzIHRvIGNyZWF0ZSB0aGVpciBvd24gYWNjb3VudCBvbiB5b3VyIHdlYnNpdGUuPC9wPgoKPGgzPkZlYXR1cmVzOjwvaDM+Cjx1bD4KICAgPGxpPldvcmtzIHdpdGggRkVVIEdyb3VwcyBhbmQgUHJvcGVydGllczwvbGk+CiAgIDxsaT5Xb3JrcyB3aXRoIEZyb250RW5kVXNlcnMnIGVtYWlsIGFuZCBwYXNzd29yZCBwb2xpY2llcy48L2xpPgogICA8bGk+U3RvcmVzIHRlbXBvcmFyeSB1c2VyIGluZm9ybWF0aW9uIHNlY3VyZWx5PC9saT4KICAgPGxpPlNlbmRzIGVtYWlsIHJlbWluZGVycyB0byB1c2VycyB3aG8gaGF2ZSBub3QgcmVnaXN0ZXJlZC48L2xpPgogICA8bGk+UmVxdWlyZXMgdXNlcnMgdG8gdmVyaWZ5IHRoZWlyIHJlZ2lzdHJhdGlvbiBieSBjbGlja2luZyBvbiBhIGxpbmsgaW4gYW4gZW1haWwgYmVmb3JlIGJlaW5nIHB1c2hlZCBsaXZlLjwvcD4KICAgPGxpPkZsZXhpYmxlIHRlbXBsYXRlczwvbGk+CiAgIDxsaT5DdXN0b21pemFibGUgZW1haWwgdGVtcGxhdGVzPC9saT4KICAgPGxpPlVzZXJuYW1lIGJsYWNrbGlzdCBhbmQgd2hpdGVsaXN0PC9saT4KICAgPGxpPndvcmtzIHdpdGggY2FwdGNoYTwvbGk+CiAgIDxsaT5DU1JGIHByb3RlY3Rpb248L2xpPgogICA8bGk+QW4gYWRtaW4gaW50ZXJmYWNlIHRvIGFsbG93IG1hbmFnZXJzIHRvIG1hbmFnZSB1c2VycyB3aG8gaGF2ZSBub3QgY29tcGxldGVkIHRoZSByZWdpc3RyYXRpb24gcHJvY2Vzcy48L2xpPgogICA8bGk+bW9yZS4uPC9saT4KPC91bD4KCjxoMz5Ib3cgZG8gSSB1c2UgaXQ8L2gzPgo8cD5UbyBwcm9wZXJseSB1c2UgdGhpcyBtb2R1bGUsIHlvdSBuZWVkIHRvIGhhdmUgdGhlIEZyb250RW5kVXNlcnMgbW9kdWxlIHByb3Blcmx5IGNvbmZpZ3VyZWQgd2l0aCBhdCBsZWFzdCBvbmUgZ3JvdXAuICBZb3Ugc2hvdWxkIGhhdmUgYWxyZWFkeSBjcmVhdGVkIGFuZCB0ZXN0ZWQgbG9naW4sIGFuZCBsb2dvdXQgZnVuY3Rpb25hbGl0eS48L3A+CjxwPk5leHQsIGFmdGVyIGluc3RhbGxpbmcgdGhlIG1vZHVsZSwgYWRkIHRoZSA8Y29kZT57Q0dGRVVSZWdpc3RlciBncm91cD0nVEhFR1JPVVAnfTwvY29kZT4gdGFnIHRvIGEgY29udGVudCBwYWdlLiAgWW91IG11c3Qgc3BlY2lmeSB0aGUgbmFtZSBvZiBhIHZhbGlkIEZyb250RW5kVXNlcnMgZ3JvdXAuPC9wPgo8cD5Zb3Ugc2hvdWxkIGFkanVzdCB5b3VyIGNvbmZpZy5waHAgZmlsZSB3aXRoIGFwcHJvcHJpYXRlIHNldHRpbmdzIDxlbT4oc2VlIGJlbG93KTwvZW0+IHRvIGNvbmZpZ3VyZSB0aGlzIG1vZHVsZSB0byB5b3VyIGxpa2luZy48L3A+CjxwPk90aGVyIHRoYW4gdGhlIGdyb3VwIHBhcmFtZXRlciwgbW9zdCBvdGhlciBwYXJhbWV0ZXJzIHRoYXQgdGhpcyBtb2R1bGUgdXRpbGl6ZXMgc2hvdWxkIGJlIHNldCB1c2luZyB0aGUge2Ntc19tb2R1bGVfaGludH0gcGx1Z2luIGluIHlvdXIgcGFnZSB0ZW1wbGF0ZSBvciBwYWdlIHNwZWNpZmljIHNtYXJ0eSBsb2dpYyBmaWVsZCwgIGJlZm9yZSB0aGUgbW9kdWxlIGlzIGNhbGxlZC48L3A+Cgo8ZGl2IGNsYXNzPSJ3YXJuaW5nIj4KICAgIDxoMyBpZD0icHJpdmFjeSI+UHJpdmFjeSBXYXJuaW5nOjwvaDM+CiAgICA8cD5BZG1pbmlzdHJhdG9ycyBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBzYWZldHkgYW5kIHNlY3VyaXR5IG9mIGFueSBwZXJzb25hbCBpbmZvcm1hdGlvbiBjb2xsZWN0ZWQuPC9wPgogICAgPHA+VGhpcyBtb2R1bGUgZG9lcyBsb2cgdGhlIElQIGFkZHJlc3Mgb2YgdXNlcnMuIFRoaXMgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBEby1Ob3QtVHJhY2sgcG9saWNpZXMsIGFuZCBtYXkgYnJlYWsgc29tZSBsYXdzLjwvcD4KPC9kaXY+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KICAgPGxpPjxjb2RlPmFjdGlvbjwvY29kZT4gPGVtPihvcHRpb25hbCBzdHJpbmc9InJlZ2lzdGVyIik8L2VtPgogICAgICAgPHVsPgogICAgICAgICAgIDxsaT48Y29kZT5yZWdpc3RlcjwvY29kZT4gLSBUaGlzIGlzIHRoZSBkZWZhdWx0IGFjdGlvbi4gIEl0IHByb3ZpZGVzIHRoZSByZWdpc3RyYXRpb24gZm9ybS48L2xpPgoJICAgPGxpPjxjb2RlPnJlcGVhdGNvZGU8L2NvZGU+IC0gVGhpcyBhY3Rpb24gcHJvdmlkZXMgYSBmb3JtIGFsbG93aW5nIHRoZSB1c2VyIHRvIHJlcXVlc3QgYW5vdGhlciB2ZXJpZmljYXRpb24gY29kZS48L2xpPgogICAgICAgPC91bD4KICAgICAgIDxwPlRoaXMgcGFyYW1ldGVyLCB1bmxpa2UgdGhlIG90aGVyIHBhcmFtZXRlcnMsIHNob3VsZCBiZSBzcGVjaWZpZWQgb24gdGhlIG1vZHVsZSB0YWcuPC9wPgogICA8L2xpPgoKICAgPGxpPjxjb2RlPmdyb3VwPC9jb2RlPiA8c3Ryb25nPnJlcXVpcmVkIHN0cmluZzwvY29kZT4KICAgICAgIDxwPlVzZWQgb255IGJ5IHRoZSAicmVnaXN0ZXIiIGFjdGlvbiwgeW91IG11c3Qgc3BlY2lmeSB0aGUgbmFtZSBvZiBhIHZhbGlkIEZyb250RW5kVXNlcnMgZ3JvdXAgZm9yIHVzZXJzIHRvIHJlZ2lzdGVyIHRvLjwvcD4KICAgICAgIDxwPlRoaXMgcGFyYW1ldGVyLCB1bmxpa2UgdGhlIG90aGVyIHBhcmFtZXRlcnMsIHNob3VsZCBiZSBzcGVjaWZpZWQgb24gdGhlIG1vZHVsZSB0YWcsIHdoZW4gY2FsbGluZyB0aGUgcmVnaXN0ZXIgYWN0aW9uLjwvcD4KICAgPC9saT4KCiAgIDxsaT48Y29kZT5pbmxpbmU8L2NvZGU+IDxlbT4ob3B0aW9uYWwgYm9vbGVhbj1mYWxzZSk8L2VtPgogICAgICAgPHA+VXNlZCBieSB0aGUgInJlZ2lzdGVyIiBhbmQgInJlcGVhdGNvZGUiIGFjdGlvbnMsIHRoaXMgcGFyYW1ldGVyIGluZGljYXRlcyB0aGF0IHRoZSBvdXRwdXQgZnJvbSB0aGUgbW9kdWxlIGFjdGlvbiwgZm9yIGV4YW1wbGUgYWZ0ZXIgdGhlIGZvcm0gaXMgc3VibWl0dGVkLCBzaG91bGQgcmVwbGFjZSB0aGUgb3JpZ2luYWwgdGFnLiAgIFRoaXMgbWF5IGJlIHVzZWZ1bCBmb3IgZXhhbXBsZSB0byBwbGFjZSBhIHJlZ2lzdHJhdGlvbiBmb3JtIGluIGEgc2lkZWJhciwgZXRjLjwvcD4KICAgICAgIDxwPlRoaXMgcGFyYW1ldGVyIGhhcyBubyBlZmZlY3Qgb24gdGhlIHZlcmlmeSBmb3JtIGFjdGlvbi48L3A+CiAgIDwvbGk+CgogICA8bGk+PGNvZGU+bm9jYXB0Y2hhPC9jb2RlPiA8ZW0+KG9wdGlvbmFsIGJvb2xlYW49ZmFsc2UpPC9lbT4KICAgICAgIDxwPlVzZWQgYnkgdGhlICJyZWdpc3RlciIgYW5kICJyZXBlYXRjb2RlIiBhY3Rpb25zLCB0aGlzIHBhcmFtZXRlciBpbmRpY2F0ZXMgdGhhdCBjYXB0Y2hhIHNob3VsZCBub3QgYmUgdXNlZCAoZXZlbiBpZiBpdCBpcyBhdmFpbGFibGUpIGZvciB0aG9zZSBhY3Rpb25zLjwvcD4KICAgPC9saT4KCiAgIDxsaT48Y29kZT5yZWd0ZW1wbGF0ZTwvY29kZT4gPGVtPihvcHRpb25hbCBzdHJpbmc9J3JlZ2lzdGVyLnRwbCcpPC9lbT4KICAgICAgIDxwPlVzZWQgYnkgdGhlIGRlZmF1bHQgInJlZ2lzdGVyIiBhY3Rpb24sIHRoaXMgcGFyYW1ldGVyIGFsbG93cyBzcGVjaWZ5aW5nIHRoZSBuYW1lIG9mIGFuIGFsdGVybmF0ZSB0ZW1wbGF0ZS4gIFNlZSB0aGUgc2VjdGlvbiBhYm91dCB0ZW1wbGF0ZXMgYmVsb3cuPC9wPgogICA8L2xpPgoKICAgPGxpPjxjb2RlPmFmdGVydmVyaWZ5dGVtcGxhdGU8L2NvZGU+IDxlbT4ob3B0aW9uYWwgc3RyaW5nPSdhZnRlcl92ZXJpZnkudHBsJyk8L2VtPgogICAgICAgPHA+VXNlZCBieSB0aGUgInZlcmlmeSIgYWN0aW9uLCB0aGlzIHBhcmFtZXRlciBhbGxvd3Mgc3BlY2lmeWluZyB0aGUgbmFtZSBvZiBhbiBhbHRlcm5hdGUgdGVtcGxhdGUgZm9yIGRhdGEgdGhhdCBpcyBkaXNwbGF5ZWQgYWZ0ZXIgYXR0ZW1wdHMgYXQgdmVyaWZpY2F0aW9uLjwvcD4KICAgICAgIDxwPlNlZSB0aGUgc2VjdGlvbiBhYm91dCB0ZW1wbGF0ZXMgYmVsb3cuPC9wPgogICA8L2xpPgoKICAgPGxpPjxjb2RlPnJlcGVhdGNvZGV0ZW1wbGF0ZTwvY29kZT4gPGVtPihvcHRpb25hbCBzdHJpbmc9J3JlcGVhdGNvZGUudHBsJyk8L2VtPgogICAgICAgPHA+VXNlZCBieSB0aGUgInJlcGVhdGNvZGUiIGFjdGlvbiwgdGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHNwZWNpZnlpbmcgYW4gYWx0ZXJuYXRlIHRlbXBsYXRlIGZvciB0aGUgcmVwZWF0IGNvZGUgZm9ybS48L3A+CiAgICAgICA8cD5TZWUgdGhlIHNlY3Rpb24gYWJvdXQgdGVtcGxhdGVzIGJlbG93LjwvcD4KICAgPC9saT4KPC91bD4KCjxoMz5Db25maWcgZW50cmllczwvaDM+CjxwPlRoaXMgbW9kdWxlIHdpbGwgcmVhZCBzb21lIHNldHRpbmdzIGZyb20gdGhlIENNU01TIGNvbmZpZy5waHAgZmlsZSwgaXQgY2FuIGFsc28gdXRpbGl6ZSBzb21lIGNvbmZpZyBlbnRyaWVzIGZyb20gdGhlIEZyb250RW5kdXNlcnMgbW9kdWxlLjwvcD4KPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBUaGlzIG1vZHVsZSB3aWxsIG5vdCByZWFkIHRoZSBvcHRpb25hbCBhc3NldHMvY29uZmlncy9mZXVfc2V0dGluZ3MuanNvbiBmaWxlLjwvcD4KPHVsPgogICAgPGxpPjxjb2RlPmNnZnJfbG9naW5fYWZ0ZXJfdmVyaWZ5PC9jb2RlPiAtIDxlbT4oYm9vbD1mYWxzZSk8L2VtPgogICAgICAgIDxwPklmIGVuYWJsZWQsIGFmdGVyIHRoZSB1c2VyIGNvbXBsZXRlcyB0aGUgdmVyaWZpY2F0aW9uIG9mIGhpcyBlbWFpbCBhY2NvdW50LCBoZSB3aWxsIGJlIGltbWVkaWF0ZWx5IGxvZ2dlZCBpbiB0byBGRVUuPC9wPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5jZ2ZyX3VzZXJuYW1lX3doaXRlbGlzdDwvY29kZT4gLSA8ZW0+KHN0cmluZz1udWxsKTwvZW0+CiAgICAgICAgPHA+QSBzdHJpbmcgY29udGFpbmluZyB1c2VybmFtZSBwYXR0ZXJucyAod2lsZGNhcmRzIGFyZSBzdXBwb3J0ZWQpIHRoYXQgc2hvdWxkIGJlIGFsbG93ZWQgdG8gcmVnaXN0ZXIuICBJZiB5b3Ugd2lzaCB0byBoYXZlIG11bHRpcGxlIHBhdHRlcm5zIHNlcGFyYXRlIGVhY2ggcGF0dGVybiBvbiBzZXBhcmF0ZSBsaW5lcy4gaS5lLjo8L3A+Cgk8cHJlPjxjb2RlPiRjb25maWdbJ2NnZnJfdXNlcm5hbWVfd2hpdGVsaXN0J10gPSAnKkBteWRvbWFpbi5jb208YnIvPgoqQG15b3RoZXJkb21haW4uY29tJzs8L2NvZGU+PC9wcmU+CiAgICAgICAgPHA+SWYgdGhpcyBjb25maWcgZW50cnkgaXMgc3BlY2lmaWVkIGFuZCB0aGUgY2dmcl91c2VybmFtZV9ibGFja2xpc3QgaXMgbm90LCB0aGVuIE9OTFkgdXNlcnMgbWF0Y2hpbmcgdGhlc2UgcGF0dGVybnMgd2lsbCBiZSBhYmxlIHRvIHJlZ2lzdGVyLjwvcD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+Y2dmcl91c2VybmFtZV9ibGFja2xpc3Q8L2NvZGU+IC0gPGVtPihzdHJpbmc9bnVsbCk8L2VtPgogICAgICAgIDxwPkEgc3RyaW5nIGNvbnRhaW5pbmcgdXNlcm5hbWUgcGF0dGVybnMgKHdpbGRjYXJkcyBhcmUgc3VwcG9ydGVkKSB0aGF0IGFyZSBhYnNvbHV0ZWx5IG5vdCBhbGxvd2VkIHRvIHJlZ2lzdGVyLiAgSWYgeW91IHdpc2ggdG8gaGF2ZSBtdWx0aXBsZSBwYXR0ZXJucywgc2VwYXJhdGUgZWFjaCBwYXR0ZXJuIG9uIHNlcGFyYXRlIGxpbmVzLiAgaS5lLjo8L3A+Cgk8cHJlPjxjb2RlPiRjb25maWdbJ2NnZnJfdXNlcm5hbWVfYmxhY2tsaXN0J10gPSAncm9vdEAqPGJyLz4KKkBiYWRkb21haW4uY29tJzs8L2NvZGU+PC9wcmU+CiAgICA8L2xpPgogICAgPGxpPjxjb2RlPmNnZnJfb25yZWdpc3Rlcl9ub3RpZnlfYWRtaW5ncm91cDwvY29kZT4gLSA8ZW0+KHN0cmluZz1udWxsKTwvZW0+CiAgICAgICAgIDxwPklmIHRoaXMgaXMgdGhlIG5hbWUgb2YgYSB2YWxpZCBhZG1pbiBncm91cCA8ZW0+KGNhc2Ugc2Vuc2l0aXZlKTwvZW0+IFRoZW4gdGhlIG1lbWJlcnMgb2YgdGhpcyBncm91cCB3aWxsIGJlIG5vdGlmaWVkIHRoYXQgYSB1c2VyIGhhcyByZWdpc3RlcmVkCgkgICB1c2luZyB0aGUgImFkbWluX25vdGlmeV91c2VycmVnaXN0ZXJlZC5lbWwiIHRlbXBsYXRlLgoJIDwvcD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+Y2dmcl9vbnB1c2hfbm90aWZ5X2FkbWluZ3JvdXA8L2NvZGU+IC0gPGVtPihzdHJpbmc9bnVsbCk8L2VtPgogICAgICAgICA8cD5JZiB0aGlzIGlzIHRoZSBuYW1lIG9mIGEgdmFsaWQgYWRtaW4gZ3JvdXAgPGVtPihjYXNlIHNlbnNpdGl2ZSk8L2VtPiBUaGVuIHRoZSBtZW1iZXJzIG9mIHRoaXMgZ3JvdXAgd2lsbCBiZSBub3RpZmllZCB0aGF0IGEgdXNlciBoYXMgY29tcGxldGVkCgkgICB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MsIGFuZCBoYXMgYmVlbiBwdXNoZWQgdG8gRkVVIHVzaW5nIHRoZSAiYWRtaW5fbm90aWZ5X3VzZXJyZWdpc3RlcmVkLmVtbCIgdGVtcGxhdGUuCgkgPC9wPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5jZ2ZyX2Rpc2FibGVfcmVwZWF0Y29kZTwvY29kZT4gLSA8ZW0+KGJvb2w9ZmFsc2UpPC9lbT4KICAgICAgICAgPHA+VXNlIHRoaXMgY29uZmlnIGVudHJ5IHRvIGNvbXBsZXRlbHkgZGlzYWJsZSB0aGUgcmVwZWF0Y29kZSBhY3Rpb24uPC9wPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5jZ2ZyX3ZlcmlmeWNvZGVfZXhwaXJlX2hvdXJzPC9jb2RlPiAtIDxlbT4oaW50PTI0KjcpPC9lbT4KICAgICAgICAgPHA+VGhpcyBjb25maWcgZW50cnkgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgaG91cnMgdGhhdCBhbiBleHBpcnkgY29kZSBpcyB2YWxpZCBmb3IuICBJZiBzZXQgdG8gMCB0aGVuIGNvZGVzIGRvIG5vdCBleHBpcmUgb24gdGhlaXIgb3duLjwvcD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+Y2dmcl91c2VyX2V4cGlyZV9ob3VyczwvY29kZT4gLSA8ZW0+KGludD0yNCo3KTwvZW0+CiAgICAgICAgIDxwPlRoaXMgY29uZmlnIGVudHJ5IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGhvdXJzIHRoYXQgdXNlciBoYXMgdG8gY29tcGxldGUgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLiAgSWYgc2V0IHRvIDAgdGhlbiB1c2VyIGFjY291bnRzIG5ldmVyIGV4cGlyZS48L3A+CiAgICA8L2xpPgogICAgPGxpPjxjb2RlPmNnZnJfcmVwZWF0Y29kZV9wYWdlPC9jb2RlPiAtIDxlbT4oc3RyaW5nPSIiKTwvZW0+CiAgICAgICAgPHA+VGhpcyBjb25maWcgZW50cnkgaXMgdXNlZCBieSB0aGUgdGFzayB0aGF0IHJlbWluZHMgdXNlcnMgdG8gcmVnaXN0ZXIgdG8gc3BlY2lmeSBhIHBhZ2UgdG8gcmV0dXJudG8gaW4gdGhlIGxpbmsgdGhhdCBpcyBwcm92aWRlZCB3aXRoaW4gdGhhdCBlbWFpbC4gIEl0IHNwZWNpZmllcyBhIHBhZ2UgYWxpYXMgb2YgYSBjb250ZW50IHBhZ2UuPC9wPgoJPHA+SWYgbm90IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgY29udGVudCBwYWdlIHdpbGwgYmUgdXNlZC48L3A+Cgk8cD5UaGlzIGNvbmZpZyBlbnRyeSBpcyBub3Qgc3BlY2lmaWNhbGx5IG5lZWRlZCwgeW91IGNhbiBzcGVjaWZ5IHRoZSBwYWdlIGluIHRoZSBvbl9yZW1pbmQuZW1sIHRlbXBsYXRlLjwvcD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+Y2dmcl9yZW1pbmR1c2Vyc19hZnRlcl9ob3VyczwvY29kZT4gLSA8ZW0+KGludD0yNCk8L2VtPgogICAgICAgICA8cD5UaGlzIGNvbmZpZyBlbnRyeSBlbmFibGVzIGZ1bmN0aW9uYWxpdHkgdGhhdCB3aWxsIHNlbmQgZW1haWxzIHRvIHVzZXJzIHdobyBoYXZlIHJlZ2lzdGVyZWQsIGJ1dCBoYXZlIG5vdCB2ZXJpZmllZCB0aGVpciBhY2NvdW50IHdpdGggYSByZWdpc3RyYXRpb24gY29kZS4gIEJ5IGRlZmF1bHQgdGhlIGVtYWlsIHdpbGwgYmUgc2VudCBldmVyeSAyNCBob3VycyBhZnRlciByZWdpc3RyYXRpb24gVU5USUwgdGhlIHVzZXIgaXMgcHVzaGVkIGxpdmUgaW50byBGRVUuICBJZiB0aGlzIHZhbHVlIGlzIHNldCB0byAwIHRoZW4gbm8gcmVtaW5kZXJzIHdpbGwgYmUgc2VudC48L3A+CiAgICA8L2xpPgogICAgPGxpPjxjb2RlPmZldV91c2VybmFtZV9pc19lbWFpbDwvY29kZT4gLSA8ZW0+KGJvb2w9dHJ1ZSk8L2VtPgogICAgICAgICA8cD5UaGlzIGlzIHRoZSBib29sZWFuIHNldHRpbmcgdXNlZCBieSB0aGUgRnJvbnRFbmRVc2VycyBtb2R1bGUgdGhhdCBjb250cm9scyB0aGUgdHlwZSBvZiBmaWVsZCB1c2VkIGZvciB0aGUgdXNlcm5hbWUuPC9wPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5mZXVfZXhwaXJlYWdlX21vbnRoczwvY29kZT4gLSA8ZW0+KGludD01MjApPC9lbT4KICAgICAgICAgPHA+VGhpcyBpcyB0aGUgaW50ZWdlciBzZXR0aW5nIHVzZWQgYnkgdGhlIEZyb250RW5kVXNlcnMgbW9kdWxlIHRvIGluZGljYXRlIHRoZSBudW1iZXIgb2YgbW9udGhzIGJlb2ZyZSBuZXcgdXNlciBhY2NvdW50cyBleHBpcmUuPC9wPgoJIDxwPlRoaXMgaXMgdXNlZCB3aGVuIGNyZWF0aW5nIHRoZSB1c2VyIGFjY291bnQgaW4gdGhlIEZyb250RW5kVXNlcnMgbW9kdWxlLiBVc2VyIGV4cGlyeSBjYW4gYmUgYWRqdXN0ZWQgb24gYSBwZXItdXNlciBiYXNpcyBmcm9tIHdpdGhpbiBGRVUuPC9wPgogICAgPC9saT4KPC91bD4KCjxoMz5UZW1wbGF0ZXM8L2gzPgo8cD5Vc2luZyBhIGN1c3RvbSB0ZW1wbGF0ZSBmb3IgYSBmcm9udGVuZCBhY3Rpb24gb2YgQ0dGRVVSZWdpc3RlciBpcyBhIHRocmVlIHN0ZXAgcHJvY2Vzczo8Lz4KPG9sPgogICA8bGk+Q29weSB0aGUgZGVzaXJlZCB0ZW1wbGF0ZSBmaWxlIHRvIGEgbmV3IGxvY2F0aW9uLgogICAgICAgPHA+V2hlbiBDR0ZFVVJlZ2lzdGVyIGlzIHNoaXBwZWQsIGl0J3MgZmFjdG9yeSB0ZW1wbGF0ZXMgd2lsbCBiZSBsb2NhdGVkIGluIC9tb2R1bGVzL0NHRkVVUmVnaXN0ZXIvdGVtcGxhdGVzLiAgRWFjaCBkaWZmZXJlbnQgYWN0aW9uIGhhcyBhIGRpZmZlcmVudCBkZWZhdWx0IHRlbXBsYXRlOjwvcD4KICAgICAgIDx1bD4KICAgICAgICAgICA8bGk+VGhlIHJlZ2lzdHJhdGlvbiBmb3JtCgkgICAgICAgPHA+TG9jYXRpb246ICA8Y29kZT4vbW9kdWxlcy9DR0ZFVVJlZ2lzdGVyL3RlbXBsYXRlcy9yZWdpc3Rlci50cGw8L2NvZGU+PC9wPgoJICAgPC9saT4KCSAgIDxsaT5UaGUgdmVyaWZ5IG1lc3NhZ2UKCSAgICAgICA8cD5Mb2NhdGlvbjogIDxjb2RlPi9tb2R1bGVzL0NHRkVVUmVnaXN0ZXIvdGVtcGxhdGVzL2FmdGVyX3ZlcmlmeS50cGw8L2NvZGU+PC9wPgoJICAgPC9saT4KCSAgIDxsaT5UaGUgcmVxdWVzdGNvZGUgZm9ybQoJICAgICAgIDxwPkxvY2F0aW9uOiAgPGNvZGU+L21vZHVsZXMvQ0dGRVVSZWdpc3Rlci90ZW1wbGF0ZXMvcmVxdWVzdGNvZGUudHBsPC9jb2RlPjwvcD4KCSAgIDwvbGk+CiAgICAgICA8L3VsPgogICAgICAgPHA+WW91IHNob3VsZCA8c3Ryb25nPk5FVkVSPC9zdHJvbmc+IG1vZGlmeSB0aGVzZSBzb3VyY2UgZmlsZXMuICBUaGVzZSBmaWxlcyBjYW4gYmUgb3ZlcndyaXR0ZW4gd2hlbiB0aGUgbW9kdWxlIGlzIHVwZ3JhZGVkLiAgQWx3YXlzIGNvcHkgdGhlbSB0byBhIG5ldyBsb2NhdGlvbi48L3A+CgogICAgICAgPHA+VGhlcmUgYXJlIG51bWVyb3VzIGxvY2F0aW9ucyB3aGVyZSB5b3UgY2FuIGxvY2F0ZSB5b3VyIGN1c3RvbSB0ZW1wbGF0ZXM6PC9wPgogICAgICAgPHVsPgoJICAgPGxpPkludG8gdGhlIDxjb2RlPi9hc3NldHMvbW9kdWxlX2N1c3RvbS9DR0ZFVVJlZ2lzdGVyL3RlbXBsYXRlczwvY29kZT4gZGlyZWN0b3J5IDxzdHJvbmc+KHJlY29tbWVuZGVkKTwvc3Ryb25nPi4KCSAgICAgICA8cD5Zb3UgbWF5IG5lZWQgdG8gY3JlYXRlIHRoaXMgZGlyZWN0b3J5IHN0cnVjdHVyZSwgYXMgaXQgZG9lcyBub3QgZXhpc3QgYnkgZGVmYXVsdC4gIEZpbGVzIGluIHRoZSBtb2R1bGVfY3VzdG9tIGRpcmVjdG9yeSB3aWxsIG5vdCBiZSBvdmVyd3JpdHRlbiB3aGVuIHRoZSBtb2R1bGUgaXMgdXBncmFkZWQuPC9wPgoJICAgICAgIDxwPkZpbGVzIGluIHRoaXMgZGlyZWN0b3J5IE1VU1QgZW5kIHdpdGggYSAudHBsIGV4dGVuc2lvbiwgYW5kIGFyZSBhY2Nlc3NlZCBieSBqdXN0IHNwZWNpZnlpbmcgdGhlIGZpbGVuYW1lLiAgaS5lLjogIDxjb2RlPm15X2xvZ2luX3RlbXBsYXRlLnRwbDwvY29kZT48L3A+CgkgICA8L2xpPgogICAgICAgICAgIDxsaT5JbnRvIHRoZSA8Y29kZT4vYXNzZXRzL3RlbXBsYXRlczwvY29kZT4gZGlyZWN0b3J5LgoJICAgICAgIDxwPkNvcHkgdGhlIGZhY3RvcnkgdGVtcGxhdGUgdG8gYSBkZXNpcmVkIGZpbGVuYW1lIGluIDxjb2RlPi9hc3NldHMvdGVtcGxhdGVzPC9jb2RlPi4gIEdpdmUgdGhlIG5ldyBmaWxlIGEgLnRwbCBleHRlbnNpb24uPC9wPgoJICAgICAgIDxwPkZpbGVzIGluIHRoaXMgZGlyZWN0b3J5IGFyZSBhY2Nlc3NlZCBieSBzcGVjaWZ5aW5nIHRoZSBjbXNfZmlsZSByZXNvdXJjZS4gICBpLmU6ICA8Y29kZT5jbXNfZmlsZTpteV9sb2dpbl90ZW1wbGF0ZS50cGw8L2NvZGU+PC9wPgoJICAgPC9saT4KCSAgIDxsaT5JbnRvIERlc2lnbiBNYW5hZ2VyCgkgICAgICAgPHA+T3BlbiB0aGUgZmlsZSBpbiB5b3VyIGZhdm9yaXRlIGVkaXRvciwgYW5kICdjb3B5JyB0aGUgdGV4dCBpbnRvIHRoZSBjbGlwYm9hcmQuPC9wPgoJICAgICAgIDxwPkNyZWF0ZSBhIG5ldyB0ZW1wbGF0ZSBvZiBhbnkgdHlwZSBpbiB0aGUgRGVzaWduTWFuYWdlciBtb2R1bGUuIGFuZCAncGFzdGUnIHRoZSBjb250ZW50cyBmcm9tIHRoZSBjbGlwYm9hcmQgaW50byB0aGUgdGV4dGFyZWE8L3A+CgkgICAgICAgPHA+R2l2ZSB0aGUgbmV3IHRlbXBsYXRlIGEgbmFtZSBXSVRIT1VUIGEgLnRwbCBleHRlbnNpb24uPC9wPgoJICAgICAgIDxwPlRlbXBsYXRlcyBpbiBkZXNpZ24gbWFuYWdlciBhcmUgYWNjZXNzZWQgYnkganVzdCBzcGVjaWZ5aW5nIHRoZSB0ZW1wbGF0ZSBuYW1lLiAgaS5lOiA8Y29kZT5yZWdpc3RlcnRlbXBsYXRlPSIibXkgbG9naW4gdGVtcGxhdGUiPC9jb2RlPjwvcD4KCSAgIDwvbGk+CiAgICAgICA8L3VsPgogICA8L2xpPgoKICAgPGxpPlRlbGwgQ0dGRVVSZWdpc3RlciB0byB1c2UgdGhlIG5ldyB0ZW1wbGF0ZQogICAgICAgPHA+SW4gYSBwYXJlbnQgcGFnZSB0ZW1wbGF0ZSwgb3IgaW4gdGhlICdzbWFydHkgbG9naWMgdGhhdCBpcyBzcGVjaWZpYyB0byB0aGlzIHBhZ2UnIGZpZWxkIGluIGEgY29udGVudCBwYWdlIHlvdSBzaG91bGQgdXNlIHRoZSA8Y29kZT57Y21zX21vZHVsZV9oaW50fTwvY29kZT4gcGx1Z2luIHRvIHRlbGwgQ0dGRVVSZWdpc3RlciB0byB1c2UgdGhlIG5ldyB0ZW1wbGF0ZS4gIGkuZS46PC9wPgogICAgICAgPHByZT48Y29kZT57Y21zX21vZHVsZV9oaW50IG1vZHVsZT1DR0ZFVVJlZ2lzdGVyIGxvZ2ludGVtcGxhdGU9Im15X3JlZ2lzdGVyX3RlbXBsYXRlLnRwbCJ9PC9jb2RlPjwvcHJlPgogICAgICAgPHA+VGhlIGV4YW1wbGUgYWJvdmUgYXNzdW1lcyB0aGF0IHRoZSBwYXRoIHRvIHRoZSBmaWxlIGlzOiAgPGNvZGU+L2Fzc2V0cy9tb2R1bGVfY3VzdG9tL0NHRkVVUmVnaXN0ZXIvdGVtcGxhdGVzL215X2xvZ2luX3RlbXBsYXRlLnRwbDwvY29kZT4KICAgICAgIDxwPlRoZSB7Y21zX21vZHVsZV9oaW50fSBwbHVnaW4gdGVsbHMgQ01TIHRvIHByb3ZpZGUgdGhhdCBwYXJhbWV0ZXIgdG8gdGhlIG1vZHVsZSBieSBkZWZhdWx0IHdoZW4gaXQgaXMgY2FsbGVkLiAgVGhpcyBwbHVnaW4gbXVzdCBiZSBjYWxsZWQgQkVGT1JFIHRoZSBwcmltYXJ5IGNvbnRlbnQgYmxvY2sgaW4geW91ciB0ZW1wbGF0ZS4gICBZb3UgbWF5IGNhbGwgdGhpcyBwbHVnaW4gbXVsdGlwbGUgdGltZXMgdG8gcHJlc2V0IHBhcmFtZXRlcnMgZm9yIGRpZmZlcmVudCBtb2R1bGVzLiBpLmU6PC9wPgogICAgICAgPHByZT48Y29kZT57Y21zX21vZHVsZV9oaW50IG1vZHVsZT1DR0ZFVVJlZ2lzdGVyIGxvZ2ludGVtcGxhdGU9J215X3JlZ2lzdGVyX3RlbXBsYXRlLnRwbCd9PGJyLz4Ke2Ntc19tb2R1bGVfaGludCBtb2R1bGU9Q0dGRVVSZWdpc3RlciBhZnRlcnZlcmlmeXRlbXBsYXRlPSdteV92ZXJpZnlfdGVtcGxhdGUudHBsJ308YnIvPgogICA8L2xpPgoKICAgPGxpPk1vZGlmeSBhbmQgdGVzdCB5b3VyIG5ldyB0ZW1wbGF0ZQogICAgICAgPHA+SWYgdGhlIHRlbXBsYXRlIGlzIHN0b3JlZCBpbiB0aGUgZmlsZXN5c3RlbSB5b3UgY2FuIG5vdyB1c2UgeW91ciBmYXZvcml0ZSBlZGl0b3IsIGFuZCBzb3VyY2UgY29kZSBtYW5hZ2VtZW50IHN5c3RlbSB0byBtYW5hZ2UgdGhpcyBmaWxlLjwvY29kZT4KICAgPC9saT4KPC9vbD4KCjxoMz5FbWFpbHM8L2gzPgo8cD5UaGlzIG1vZHVsZSB1c2VzIHRoZSB0ZW1wbGF0YWJsZSBlbWFpbCBmdW5jdGlvbmFsaXR5IHByb3ZpZGVkIGJ5IHRoZSBDR0V4dGVuc2lvbnMgbW9kdWxlIHRvIHNlbmQgZW1haWwgbWVzc2FnZXMuICBUaGUgZm9sbG93aW5nIGVtYWlsIHRlbXBsYXRlcyBhcmUgcHJvdmlkZWQ6PC9wPgo8dWw+CiAgICA8bGk+PGNvZGU+ZW1haWxzL29uX3JlZ2lzdGVyLmVtbAogICAgICAgIDxwPlRoaXMgZW1haWwgdGVtcGxhdGUgaXMgdXNlZCB0byBzZW5kIGEgbWVzc2FnZSB0byB0aGUgdXNlciB3aXRoIGluZm9ybWF0aW9uIGFzIHRvIGhvdyB0byB2ZXJpZnkgaGlzIGVtYWlsIGFkZHJlc3MgYW5kIGNvbXBsZXRlIHRoZSByZWdpc3RyYXRpb24gcHJvY2Vzcy48L3A+CiAgICA8L2xpPgogICAgPGxpPjxjb2RlPmVtYWlscy9vbl9yZXBlYXRjb2RlLmVtbAoJPHA+VGhpcyBlbWFpbCB0ZW1wbGF0ZSBpcyB1c2VkIHRvIHNlbmQgYSBtZXNzYWdlIHRvIHRoZSB1c2VyIHdoZW4gdGhleSBoYXZlIHJlcXVlc3RlZCBhbm90aGVyIHZlcmlmaWNhdGlvbiBjb2RlLjwvcD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+ZW1haWxzL29uX3JlbWluZC5lbWwKCTxwPlRoaXMgZW1haWwgdGVtcGxhdGUgaXMgdXNlZCB0byBzZW5kIGEgbWVzc2FnZSB0byB0aGUgdXNlciB3aG8gaGFzIHJlZ2lzdGVyZWQsIGJ1dCBoYXMgbm90IHlldCBjb21wbGV0ZWQgdGhlIHJlZ2lzdHJhdGluIHByb2Nlc3MgYnkgdmVyaWZ5aW5nIHRoZSByZWdpc3RyYXRpb24gY29kZS48L3A+Cgk8cD5Ob3RlOiB0aGlzIGVtYWlsIGlzIHRyaWdnZXJlZCBmcm9tIGEgYmFja2dyb3VuZCB0YXNrLiAgSXQgaXMgbm90IHBvc3NpYmxlIHRvIGRldGVybWluZSBhIHVzZXJzIGxhbmd1YWdlLjwvcD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+ZW1haWxzL2FkbWluX25vdGlmeV91c2VycmVnaXN0ZXJlZC5lbWwKICAgICAgICA8cD5UaGlzIGVtYWlsIHRlbXBsYXRlIGlzIHVzZWQgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gbWVtYmVycyBvZiBhIG5hbWVkIGFkbWluIGdyb3VwIGluZGljYXRpbmcgdGhhdCBhIG5ldyB1c2VyIGhhcyByZWdpc3RlcmVkLjwvcD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+ZW1haWxzL2FkbWluX25vdGlmeV91c2VycHVzaGVkLmVtbAogICAgICAgIDxwPlRoaXMgZW1haWwgdGVtcGxhdGUgaXMgdXNlZCB0byBzZW5kIGEgbWVzc2FnZSB0byBtZW1iZXJzIG9mIGEgbmFtZWQgYWRtaW4gZ3JvdXAgaW5kaWNhdGluZyB0aGF0IGEgbmV3IHVzZXIgaGFzIGNvbXBsZXRlZCB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MgYW5kIGlzIG5vdyBpbiB0aGUgRnJvbnRFbmRVc2VycyBtb2R1bGUuPC9wPgogICAgPC9saT4KPC91bD4KPHA+VG8gY3VzdG9taXplIHRoZXNlIHRlbXBsYXRlcywgeW91IHNob3VsZCBjb3B5IHRoZSBhcHByb3ByaWF0ZSBmaWxlIHRvIHRoZSA8Y29kZT4vYXNzZXRzL21vZHVsZV9jdXN0b20vQ0dGRVVSZWdpc3Rlci9lbWFpbHM8L2NvZGU+IGRpcmVjdG9yeSBiZWxvdyB0aGUgQ01TTVMgcm9vdCBwYXRoLiAgQ3JlYXRlIHRoZSBkaXJlY3RvcnkgaWYgbmVjZXNzYXJ5LiAgIFlvdSBzaG91bGQgTkVWRVIgbW9kaWZ5IHRoZSBmaWxlcyBpbiB0aGUgbW9kdWxlJ3Mgc291cmNlIGNvZGUgZGlyZWN0b3J5LjwvcD4KPHA+U2VlIHRoZSBoZWxwIGluIHRoZSBDR0V4dGVuc2lvbnMgbW9kdWxlIGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3RydWN0dXJlIG9mIC5lbWwgZmlsZXMuPC9wPgoKPGgzPkhvb2tzPC9oMz4KPHVsPgogICA8bGk+PGNvZGU+Q0dGRVVSZWdpc3Rlcjo6UHJlUmVuZGVyKCk8L2NvZGU+CiAgICAgICA8cD5UaGlzIGhvb2sgc2VuZHMgbm8gcGFyYW1ldGVycy48L3A+CiAgICAgICA8cD5UaGlzIGhvb2sgaXMgdHJpZ2dlcmVkIGJlZm9yZSByZW5kZXJpbmcgb2YgYW55IGZyb250ZW5kIGFjdGlvbi4gIEl0IGFsbG93cyB0aGlyZCBwYXJ0eSBjb2RlIHRvIGRvIHBlcm1pc3Npb25zIGNoZWNrLCByYXRlIGxpbWl0aW5nIGV0Yy48L3A+CiAgICAgICA8cD5UbyBzdG9wIHByb2Nlc3NpbmcsIGhhbmRsZXJzIHNob3VsZCB0aHJvdyBydW50aW1lIGV4Y2VwdGlvbnMuPC9wPgogICA8L2xpPgogICA8bGk+PGNvZGU+Q0dGRVVSZWdpc3Rlcjo6QmVmb3JlUmVnaXN0ZXIoVXNlcik8L2NvZGU+CiAgICAgICA8cD5UaGlzIGhvb2sgaXMgdHJpZ2dlcmVkIHByaW9yIHRvIHNhdmluZyB0aGUgbmV3IHVzZXIgaW5mb3JtYXRpb24gdG8gdGhlIGRhdGFiYXNlLiAgSXQgaXMgdXNlZnVsIGZvciB2YWxpZGF0aW5nIGRhdGEgYmVmb3JlIHJlZ2lzdGVyaW5nIGEgdXNlciBvciBzZW5kaW5nIGVtYWlscy48L3A+CiAgICAgICA8cD5QYXJhbWV0ZXJzOjwvcD4KICAgICAgIDx1bD4KCSAgICA8bGk+PGNvZGU+VXNlcjwvY29kZT4gLSBBIHVzZXIgb2JqZWN0IGNvb250YWluaW5nIHRoZSB1c2VyIHJlZ2lzdHJhdGlvbiBkYXRhLjwvbGk+CiAgICAgICA8L3VsPgogICA8L2xpPgogICA8bGk+PGNvZGU+Q0dGRVVSZWdpc3Rlcjo6QWZ0ZXJSZWdpc3RlcihVc2VyKTwvY29kZT4KICAgICAgIDxwPlRoaXMgaG9vayBpcyB0cmlnZ2VyZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgc2F2aW5nIHRoZSBuZXcgdXNlciBpbmZvcm1hdGlvbiB0byB0aGUgZGF0YWJhc2UuIEl0IGlzIHVzZWZ1bCBmb3IgdHJpZ2dlcmluZyBvdGhlciB0aGlyZCBwYXJ0eSBmdW5jdGlvbmFsaXR5LjwvcD4KICAgICAgIDxwPlBhcmFtZXRlcnM6PC9wPgogICAgICAgPHVsPgoJICAgIDxsaT48Y29kZT5Vc2VyPC9jb2RlPiAtIEEgdXNlciBvYmplY3QgY29vbnRhaW5pbmcgdGhlIHVzZXIgcmVnaXN0cmF0aW9uIGRhdGEuPC9saT4KICAgICAgIDwvdWw+CiAgIDwvbGk+CiAgIDxsaT48Y29kZT5DR0ZFVVJlZ2lzdGVyOjpBZnRlclJlcGVhdENvZGUoYXJyYXkpPC9jb2RlPgogICAgICAgPHA+VGhpcyBob29rIGlzIHRyaWdnZXJlZCBpbW1lZGlhdGVseSBhZnRlciBhIHJlcGVhdCBjb2RlIGlzIHNlbnQgZnJvbSB0aGUgcmVwZWF0IGNvZGUgYWN0aW9uLiAgSXQgaXMgdXNlZnVsIHRvIHRpZSBpbiBvdGhlciB0aGlyZCBwYXJ0eSBmdW5jdGlvbmFsaXR5LjwvcD4KICAgICAgIDxwPlBhcmFtZXRlcnMgPGVtPihhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L2VtPjo8L3A+CiAgICAgICA8dWw+CgkgICAgPGxpPjxjb2RlPmZpZWxkczwvY29kZT4gLSA8ZW0+KHR5cGU9UmVnRmllbGRTZXQpPC9lbT4gLSBUaGUgc2V0IG9mIGZpZWxkcyBhc3NvY2lhdGVkIHdpdGggdGhlIGdyb3VwIHRoYXQgdGhlIHVzZXIgaXMgYXNzb2NpYXRlZCB3aXRoLjwvbGk+CgkgICAgPGxpPjxjb2RlPnVzZXI8L2NvZGU+IC0gPGVtPih0eXBlPVVzZXIpPC9lbT4gLSBUaGUgdXNlciBvYmplY3Q8L2xpPgogICAgICAgPC91bD4KICAgPC9saT4KICAgPGxpPjxjb2RlPkNHRkVVUmVnaXN0ZXI6OkFmdGVyVXNlclB1c2hlZChhcnJheSk8L2NvZGU+CiAgICAgICA8cD5UaGlzIGhvb2sgaXMgdHJpZ2dlcmVkIGltbWVkaWF0ZWx5IGFmdGVyIGEgcmVwZWF0IGNvZGUgaXMgcHVzaGVkIGZyb20gdGhpcyBtb2R1bGUgaW50byBGRVUuICBJdCBpcyB1c2VmdWwgdG8gdGllIGluIG90aGVyIHRoaXJkIHBhcnR5IGZ1bmN0aW9uYWxpdHkuPC9wPgogICAgICAgPHA+UGFyYW1ldGVycyA8ZW0+KGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvZW0+OjwvcD4KICAgICAgIDx1bD4KCSAgICA8bGk+PGNvZGU+ZmllbGRzPC9jb2RlPiAtIDxlbT4odHlwZT1SZWdGaWVsZFNldCk8L2VtPiAtIFRoZSBzZXQgb2YgZmllbGRzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ3JvdXAgdGhhdCB0aGUgdXNlciBpcyBhc3NvY2lhdGVkIHdpdGguPC9saT4KCSAgICA8bGk+PGNvZGU+ZmV1X3VpZDwvY29kZT4gLSA8ZW0+KHR5cGU9aW50KTwvZW0+IC0gVGhlIG5ldyBmZXUgdXNlciBpZC48L2xpPgogICAgICAgPC91bD4KICAgPC9saT4KPC91bD4KCgo8aDM+UmVxdWlyZW1lbnRzPC9oMz4KPHVsPgogICAgPGxpPk9wZW4gU1NMIGxpYnJhcmllcyBmb3IgZW5jcnlwdGlvbi48L2xpPgogICAgPGxpPkZyb250RW5kVXNlcnMgMy4wKzwvbGk+CiAgICA8bGk+Q0dFeHRlbnNpb25zPC9saT4KPC91bD4KCjxoMz5JbXBvcnRhbnQgQ2xhc3NlczwvaDM+Cjx1bD4KICAgICA8bGk+VGhlIFVzZXIgY2xhc3MKICAgICAgICAgPHA+VGhpcyBjbGFzcyBpcyB1c2VkIHRvIHJlcHJlc2VudCBpbmZvcm1hdGlvbiBhYm91dCBhIHVzZXIgdGhhdCBpcyByZWdpc3RlcmluZy4gIEl0IGlzIHByb3ZpZGVkIHRvIGhvb2tzLCBhbmQgdG8gdmFyaW91cyB0ZW1wbGF0ZXMuPC9wPgogICAgICAgICA8cD5TdGFuZGFyZCBwcm9wZXJ0aWVzOjwvcD4KCSA8dWw+CiAgICAgICAgICAgICA8bGk+PGNvZGU+aWQ8L2NvZGU+IC0gPGVtPih0eXBlPWludCk8L2VtPiAtIFRoZSB1bmlxdWUgaWQgd2l0aGluIHRoaXMgbW9kdWxlIG9mIHRoZSByZWdpc3RyYXRpb24uICBUaGlzIGlzIE5PVCB0aGUgRkVVIHVpZC48L2xpPgoJICAgICA8bGk+PGNvZGU+Y3JlYXRlZDwvY29kZT4gLSA8ZW0+KHR5cGU9aW50KTwvZW0+IC0gVGhlIHVuaXggdGltZXN0YW1wIG9mIHRoZSB0aW1lIHRoYXQgdGhpcyB1c2VyIGluaXRpYWxseSByZWdpc3RlcmVkLjwvbGk+CgkgICAgIDxsaT48Y29kZT5naWQ8L2NvZGU+IC0gPGVtPih0eXBlPWludCk8L2VtPiAtIFRoZSBGRVUgZ3JvdXAgaWQgb2YgdGhlIGdyb3VwIHRoZSB1c2VyIGlzIHJlZ2lzdGVyaW5nIHRvLjwvbGk+CgkgPC91bD4KCSA8cD5BZGRpdGlvbmFsbHksIHRoZSB1c2VyIHdpbGwgaGF2ZSBkaWZmZXJlbnQgcHJvcGVydGllcyBhc3NvY2lhdGVkIHdpdGggdGhlbSBzdWNoIGFzIHVzZXJuYW1lLCBwYXNzd29yZCwgYW5kIHdoYXRldmVyIG90aGVyIHByb3BlcnRpZXMgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgRkVVIGdyb3VwIHRoYXQgdXNlcnMgYXJlIHJlZ2lzdGVyaW5nIHRvLiAgVGhleSBjYW4gYmUgYWRkcmVzc2VkIHN1Y2ggYXMgPGNvZGU+eyR1c2VyLT51c2VybmFtZX08L2NvZGU+LjwvcD4KICAgICA8L2xpPgoKICAgICA8bGk+VGhlIFJlZ0ZpZWxkIGNsYXNzCiAgICAgICAgIDxwPlRoaXMgY2xhc3MgaXMgdXNlZCB0byByZXByZXNlbnQgaW5mb3JtYXRpb24gYWJvdXQgYSBwYXJ0aWN1bGFyIGZpZWxkIHRoYXQgYSB1c2VyIG11c3QgY29tcGxldGUgd2hlbiByZWdpc3RlcmluZy4gIFRoZXJlIGFyZSBhIGZldyBzdGFuZGFyZCBmaWVsZHMgc3VjaCBhcyB1c2VybmFtZS9lbWFpbCwgcGFzc3dvcmQgYW5kIHJlcGVhdCBwYXNzd29yZC4gIFRoZXJlIG1heSBhbHNvIGJlIGFkZGl0aW9uYWwgZmllbGRzIHRoYXQgYXJlIHN0aXB1bGF0ZWQgYnkgdGhlIEZFVSBncm91cCB0aGF0IHRoZSB1c2VyIGlzIHJlZ2lzdGVyaW5nIHRvLjwvcD4KCSA8cD5TdGFuZGFyZCBwcm9wZXJ0aWVzOjwvcD4KCSA8dWw+CgkgICAgIDxsaT48Y29kZT5uYW1lPC9jb2RlPiAtIDxlbT4odHlwZT1zdHJpbmcpPC9lbT4gLSBUaGUgbmFtZSBvZiB0aGUgZmllbGQuPC9saT4KCSAgICAgPGxpPjxjb2RlPnR5cGU8L2NvZGU+IC0gPGVtPih0eXBlPWludCk8L2VtPiAtIFRoZSB0eXBlIG9mIHRoZSBmaWVsZC4KCSAgICAgICAgICA8dWw+CgkJCTxsaT4wID09IFRleHQgZmllbGQ8L2xpPgoJCQk8bGk+MSA9PSBDaGVja2JveCBmaWVsZDwvbGk+CgkJCTxsaT4yID09IEVtYWlsIGZpZWxkPC9saT4KCQkJPGxpPjMgPT0gVGV4dEFyZWEgZmllbGQ8L2xpPgoJCQk8bGk+NCA9PSBEcm9wZG93biBmaWVsZDwvbGk+CgkJCTxsaT41ID09IE11bHRpc2VsZWN0IGZpZWxkPC9saT4KCQkJPGxpPjYgPT0gSW1hZ2UgZmllbGQgPGVtPihZb3Ugc2hvdWxkIG5ldmVyIHNlZSB0aGVzZSBmaWVsZHMgaW4gQ0dGRVVSZWdpc3Rlcik8L2VtPjwvbGk+CgkJCTxsaT43ID09IFJhZGlvIGJ1dHRvbiBncm91cDwvbGk+CgkJCTxsaT44ID09IERhdGUgZmllbGQ8L2xpPgoJCQk8bGk+OSA9PSBEYXRhIGZpZWxkIDxlbT4oWW91IHNob3VsZCBuZXZlciBzZWUgdGhlc2UgZmllbGRzIGluIENHRkVVUmVnaXN0ZXIpPC9lbT48L2xpPgoJCQk8bGk+MTAgPT0gVGVsIGZpZWxkPC9saT4KCQkgIDwvdWw+CiAgICAgICAgICAgICA8L2xpPgoJICAgICA8bGk+PGNvZGU+cHJvbXB0PC9jb2RlPiAtIDxlbT4odHlwZT1zdHJpbmcpPC9lbT4gLSBBIHByb21wdCB0byB1c2UgZm9yIHRoZSBmaWVsZC4KCSAgICAgICAgIDxwPkl0IGlzIG5vdCBtYW5kYXRvcnkgdGhhdCB5b3UgdXNlIHRoZSBwcm9tcHQgaW4gZW1haWxzIG9yIHRlbXBsYXRlcy48L3A+PC9saT4KCSAgICAgPGxpPjxjb2RlPnJlcXVpcmVkPC9jb2RlPiAtIDxlbT4odHlwZT1pbnQpPC9lbT4gLSBJbmRpY2F0ZXMgdGhlIHJlcXVpcmVkIHN0YXR1cyBmb3IgdGhpcyBmaWVsZC4KCSAgICAgICAgICA8cD4wID09IG9mZiwgMSA9IG9wdGlvbmFsLCAyID09IHJlcXVpcmVkLCAzID09IGhpZGRlbiwgNCA9PSByZWFkb25seS48L3A+CgkJICA8cD5Ob3JtYWxseSB5b3Ugc2hvdWxkIG9ubHkgc2VlIHByb3BlcnRpZXMgdGhhdCBhcmUgcmVxdWlyZWQgb3Igb3B0aW9uYWwuPC9wPgogICAgICAgICAgICAgPC9saT4KCSAgICAgPGxpPjxjb2RlPm9wdGlvbnM8L2NvZGU+IC0gPGVtPih0eXBlPWhhc2gpPC9lbT4gLSBGb3Igc2VsZWN0LCBkcm9wZG93biwgcmFkaW9idXR0b24gYW5kIG11bHRpc2VsZWN0IGZpZWxkcyB0aGlzIHByb3BlcnR5IHdpbGwgY29udGFpbiBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvZiBvcHRpb25zLjwvbGk+CgkgICAgIDxsaT48Y29kZT51bmlxdWU8L2NvZGU+IC0gPGVtPih0eXBlPWJvb2wpPC9lbT4gLSBXaGV0aGVyIHRoZSB2YWx1ZSBmb3IgdGhpcyBwcm9wZXJ0eSBtdXN0IGJlIHVuaXF1ZSBhY3Jvc3MgYWxsIHVzZXJzLjwvbGk+CgkgICAgIDxsaT48Y29kZT5leHRyYTwvY29kZT4gLSA8ZW0+KHR5cGU9aGFzaCk8L2VtPjwvbGk+CgkgPC91bD4KICAgICA8L2xpPgoKICAgICA8bGk+VGhlIFJlZ0ZpZWxkU2V0IGNsYXNzCiAgICAgICAgIDxwPlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIGNvbGxlY3Rpb24gb2YgUmVnRmllbGQgb2JqZWN0cy4gIEl0IGlzIGNvdW50YWJsZSBhbmQgaXRlcmF0YWJsZS4gIFNvIDxjb2RlPntjb3VudCgkc2V0KX08L2NvZGU+IGFuZCA8Y29kZT57Zm9yZWFjaCAkc2V0IGFzICRmaWVsZH0uLi57L2ZvcmVhY2h9PC9jb2RlPiB3aWxsIHdvcmsgcHJvcGVybHkuPC9wPgoJIDxwPkFkZGl0aW9uYWwgbWV0aG9kczo8L3A+CgkgPHVsPgoJICAgICA8bGk+PGNvZGU+aGFzX2ZpZWxkKHN0cmluZyAkZmllbGRuYW1lKSA6IGJvb2w8L2NvZGU+CgkgICAgICAgICA8cD5UaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCBvbiBhIFJlZ0ZpZWxkU2V0IHRvIHRlc3QgaWYgYSBzcGVjaWZpYyBmaWVsZCAoYnkgbmFtZSkgaXMgY29udGFpbmVkIGluIHRoZSBzZXQuPC9saT4KCSAgICAgPC9saT4KCSAgICAgPGxpPjxjb2RlPmdldF9lbWFpbF9maWVsZCgpIDogUmVnRmllbGQ8L2NvZGU+CgkgICAgICAgICA8cD5UaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCBvbiBhIFJlZ0ZpZWxkU2V0IHRvIHJldHVybiB0aGUgZmllbGQgZGVmaW5pdGlvbiBvZiB0aGUgZmlyc3QgZmllbGQgdGhhdCBpcyBvZiB0eXBlICdlbWFpbCcuPC9wPgoJICAgICA8L2xpPgoJIDwvdWw+CiAgICAgPC9saT4KPC91bD4KCjxoMz5CYWNrZ3JvdW5kIFRhc2tzPC9oMz4KPHA+VGhpcyBtb2R1bGUgcGVyZm9ybXMgc29tZSB0YXNrcyBpbiB0aGUgYmFja2dvdW5kOjwvcD4KPHVsPgogICAgPGxpPlJlbWluZCB1c2VycyB3aG8gaGF2ZSBub3QgY29tcGxldGVkIHJlZ2lzdGVyaW5nLjwvbGk+CiAgICA8bGk+Q2xlYW4gdXAgdXNlciByZWdpc3RyYXRpb24gZGF0YSB0aGF0IGhhcyBleHBpcmVkLjwvbGk+CjwvdWw+Cgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoZSBtb2R1bGUgYXV0aG9yIGlzIGluIG5vIHdheSBvYmxpZ2F0ZWQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGlzIGNvZGUgaW4gYW55IGZhc2hpb24uICBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+QSBidWcgdHJhY2tpbmcgYW5kIGZlYXR1cmUgcmVxdWVzdCBzeXN0ZW0gaGFzIGJlZW4gY3JlYXRlZCBmb3IgdGhpcyBtb2R1bGUgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9mcm9udGVuZHVzZXJzIj5oZXJlPC9hPi4gIFBsZWFzZSBiZSB2ZXJib3NlIGFuZCBkZXNjcmlwdGl2ZSB3aGVuIHN1Ym1pdHRpbmcgYnVnIHJlcG9ydHMgYW5kIGZlYXR1cmUgcmVxdWVzdHMsIGFuZCBmb3IgYnVnIHJlcG9ydHMgZW5zdXJlIHRoYXQgeW91IGhhdmUgcHJvdmlkZWQgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byByZWxpYWJseSByZXByb2R1Y2UgdGhlIGlzc3VlLjwvbGk+CjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uICBXaGVuIGRlc2NyaWJpbmcgYW4gaXNzdWUgcGxlYXNlIG1ha2UgYW4gZWZmb3J0IHRvIHByb3ZpZGUgYWxsIHJlbGF2YW50IGluZm9ybWF0aW9uLCBhIHRob3JvdWdoIGRlc2NyaXB0aW9uIG9mIHlvdXIgaXNzdWUsIGFuZCBzdGVwcyB0byByZXByb2R1Y2UgaXQgb3IgeW91ciBkaXNjdXNzaW9uIG1heSBiZSBpZ25vcmVkLjwvbGk+CjxsaT5UaGUgYXV0aG9yLCBjYWxndXkxMDAwLCBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPgo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkuICBIb3dldmVyLCBwbGVhc2UgdXNlIHRoaXMgYXMgYSBsYXN0IHJlc29ydCwgYW5kIGVuc3VyZSB0aGF0IHlvdSBoYXZlIGZvbGxvd2VkIGFsbCBhcHBsaWNhYmxlIGluc3RydWN0aW9ucyBvbiB0aGUgZm9yZ2UsIGluIHRoZSBmb3J1bXMsIGV0Yy48L2xpPgo8L3VsPgoKPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAwOCwgUm9iZXJ0IENhbXBiZWxsIDxhIGhyZWY9Im1haWx0bzpjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnIj4mbHQ7Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cml0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCihhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uPC9wPgo8cD5Ib3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCmluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCnNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQpPciByZWFkIGl0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+b25saW5lPC9hPjwvcD4K]]></data>
	</file>
	<file>
	  <filename>/doc/todo.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[MS4gIERPTkUgVGFzayB0byBjbGVhciBleHBpcmVkIHVzZXJzIChhY2NvcmRpbmcgdG8gc2V0dGluZ3MpCjIuICBUYXNrIHRvIGNsZWFyIGV4cGlyZWQgYXV0aHRva2VucwozLiAgRE9ORSBCbGFja2xpc3QvV2hpdGVsaXN0IHVzZXJuYW1lcyAodXNlcyBhIHByb2Nlc3NvcikKNC4gIERvY3VtZW50YXRpb24KICAgIC0gZmVhdHVyZXMKICAgIC0gc2VjdXJpdHkgbWVjaGFuaXNtcwogICAgLSBhY3Rpb25zCiAgICAtIHBhcmFtcwogICAgLSBpbmxpbmUKICAgIC0gY29uZmlnIGVudHJpZXMKICAgIC0gdGVtcGxhdGVzCiAgICAtIGVtYWlscwogICAgLSBob29rcwogICAgLSB1c2VyIG9iamVjdAogICAgLSBmaWVsZHMgYXJyYXkKICAgIC0gYmFja2dyb3VuZCB0YXNrcwo1LiAgRE9ORSBBZG1pbiBDUlVECjYuICBET05FIEFkbWluIFB1c2ggdXNlciBsaXZlCjcuICBET05FIEFkbWluIENyZWF0ZSBuZXcgdmVyaWZ5Y29kZSBmb3IgdXNlcgogICAgKHNlbmRzIHRoZSByZWdpc3RyYXRpb24gZW1haWwgYWdhaW4gd2l0aCBuZXcgY29kZSkKICAgIC0gdXNlIHJlZ1Byb2Nlc3Nvcgo4LiAgRE9ORTogRW1haWwgbm90aWZ5IG5ldyByZWdpc3RyYXRpb24KOS4gIERPTkU6IExhbmcgc3RyaW5ncwoxMC4gQWRtaW4gbm90aWZpY2F0aW9uIGZvciBvbGQsIHVuZXhwaXJlZCByZWdpc3RyYXRpb25zCjExLiBET05FIFRhc2sgdG8gU2VuZCByZW1pbmRlciBlbWFpbHMgZXZlcnkgTiBob3VycyBhZnRlciByZWdpc3RlcmluZwoxMi4gQ0xJIENvbW1hbmRzCg==]]></data>
	</file>
	<file>
	  <filename>/emails/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/emails/admin_notify_userpushed.eml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZW5jb2RlX3N1YmplY3QgPSB0cnVlCj09PT0gc3ViamVjdCA9PT09ClJlZ2lzdHJhdGlvbiBjb21wbGV0ZWQgb24ge3NpdGVuYW1lfQo9PT09IGJvZHkgPT09PQo8cD5BIG5ldyB1c2VyIGhhcyBjb21wbGV0ZWQgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIGFuZCBpcyBub3cgYSBjb21wbGV0ZWQgdXNlciBvbiB7c2l0ZW5hbWV9LjwvcD4KCjxwPlVzZXJuYW1lOiA8c3Ryb25nPnskdXNlci0+dXNlcm5hbWV8ZGVmYXVsdDonKiogdW5rbm93biAqKid9PC9zdHJvbmc+PC9wPgo8cD5GRVUgVUlEOiAgPHN0cm9uZz57JGZldV91aWR9PC9zdHJvbmc+PC9wPgo=]]></data>
	</file>
	<file>
	  <filename>/emails/admin_notify_userregistered.eml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZW5jb2RlX3N1YmplY3QgPSB0cnVlCj09PT0gc3ViamVjdCA9PT09Ck5ldyByZWdpc3RyYXRpb24gb24ge3NpdGVuYW1lfQo9PT09IGJvZHkgPT09PQo8cD5BIG5ldyB1c2VyIGhhcyBub3cgcmVnaXN0ZXJlZCBvbiB7c2l0ZW5hbWV9PC9wPgo8cD5UaGlzIG1lc3NhZ2UgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSB1c2VyIGhhcyBjb21wbGV0ZWQgdGhlIHByb2Nlc3MsIGp1c3QgdGhhdCBoZSBoYXMgcmVnaXN0cmVkLjwvcD4KCjxwPlVzZXJuYW1lOiA8c3Ryb25nPnskdXNlci0+dXNlcm5hbWV8ZGVmYXVsdDonKiogdW5rbm93biAqKid9PC9zdHJvbmc+PC9wPgo=]]></data>
	</file>
	<file>
	  <filename>/emails/on_register.eml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZW5jb2RlX3N1YmplY3Q9dHJ1ZQo9PT09IHN1YmplY3QgPT09PQpXZWxjb21lIHRvIHtzaXRlbmFtZX0KPT09PSBib2R5ID09PT0KPGgyPldlbGNvbWU8L2gyPgo8cD5IZWxsbyA8c3Ryb25nPnskdXNlci0+dXNlcm5hbWV9PC9zdHJvbmc+IHRoYW5rIHlvdSBmb3IgcmVnaXN0ZXJpbmcgdG8gPGVtPntzaXRlbmFtZX08L2VtPi48L3A+Cgp7Y21zX2FjdGlvbl91cmwgbW9kdWxlPUNHRkVVUmVnaXN0ZXIgYWN0aW9uPXZlcmlmeSB1aWQ9JHVzZXItPmlkIGNvZGU9JGRhdGEtPnZlcmlmeV9jb2RlIGFzc2lnbj12ZXJpZnlfdXJsfQo8cD5UaGVyZSBpcyBvbmx5IG9uZSBtb3JlIHRoaW5nIHRvIGRvLiAgIFBsZWFzZSBjbGljayB0aGUgYnV0dG9uIGJlbG93LjwvcD4KPHAgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPgogICAgPGEgaHJlZj0ieyR2ZXJpZnlfdXJsfSIgdGFyZ2V0PSJfX2JsYW5rIj48YnV0dG9uPlZlcmlmeTwvYnV0dG9uPjwvYT4KPC9wPgoKPHA+SWYgeW91ciBicm93c2VyIGRvZXMgbm90IGFsbG93IHlvdSB0byBjbGljayBvbiBsaW5rcywgdGhlbiB5b3UgY2FuIGNvcHkgYW5kIHBhc3RlIHRoZSBmb2xsb3dpbmcgVVJMIGludG8geW91ciBicm93c2VyLjwvcD4KPHByZT48Y29kZT57JHZlcmlmeV91cmx9PC9jb2RlPjwvcHJlPgoKe2lmICRkYXRhLT5leHBpcmVzfQo8cD5UaGlzIGNvZGUgd2lsbCBleHBpcmUgYXQgYXBwcm94aW1hdGVseSB7JGRhdGEtPmV4cGlyZXN8ZGF0ZV9mb3JtYXQ6JyV4ICVYJ30gPGVtPihzZXJ2ZXIgdGltZSk8L2VtPi48L3A+CnsvaWZ9Cgo8aHIvPgo8cD5UaGFuayB5b3UgZm9yIHJlZ2lzdGVyaW5nIHdpdGgge3NpdGVuYW1lfTwvcD4KPHA+SWYgeW91IGFyZSByZWNlaXZpbmcgdGhpcyBlbWFpbCBpbmNvcnJlY3RseSwgeW91IGNhbiBzYWZlbHkgaWdub3JlIGl0LjwvcD4K]]></data>
	</file>
	<file>
	  <filename>/emails/on_remind.eml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZW5jb2RlX3N1YmplY3QgPSB0cnVlCj09PT0gc3ViamVjdCA9PT09ClBsZWFzZSBjb21wbGV0ZSB5b3VyIHJlZ2lzdHJhdGlvbgo9PT09IGJvZHkgPT09PQo8aDM+SGVsbG8gPHN0cm9uZz57JHVzZXItPnVzZXJuYW1lfTwvc3Ryb25nPjwvaDM+Cgo8cD5JdCBhcHBlYXJzIHlvdSBoYXZlIG5vdCBmaW5pc2hlZCByZWdpc3RlcmluZyB3aXRoIDxzdHJvbmc+e3NpdGVuYW1lfTwvc3Ryb25nPiB5ZXQuPC9wPgoKPHA+V2UgcHJldmlvdXNseSBzZW50IHlvdSBhbiBlbWFpbCBjb250YWluaW5nIGEgbGluayB0aGF0IGFsbG93ZWQgeW91IHRvIGNvbXBsZXRlIHlvdXIgcmVnaXN0cmF0aW9uIG9uIHtzaXRlbmFtZX0uCiAgIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhhdCBlbWFpbCwgb3IgaGF2ZSBsb3N0IGl0LCBpdCBpcyBub3QgYW4gaXNzdWUuICBZb3UgY2FuIHJlcXVlc3QgYW5vdGhlciBjb2RlIGJ5IGNsaWNraW5nIG9uIHRoZSBsaW5rIGJlbG93Lgo8L3A+Cgo8cCBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+CiAgICAgeyogd2UgaGF2ZSBhIHBhZ2UgaWQgcmVzb2x2ZWQgZnJvbSB0aGUgc2V0dGluZ3MgcGFnZSwgaWYgbm90IHNldCBpbiB0aGUgc2V0dGluZ3MgdGhlIGRlZmF1bHQgY29udGVudCBwYWdlIHdpbGwgYmUgdXNlZCAqfQogICAgIHsqIHlvdSBjb3VsZCBzcGVjaWZ5IGFueSBwYWdlIGhlcmUgKn0KICAgICB7Y21zX2FjdGlvbl91cmwgbW9kdWxlPUNHRkVVUmVnaXN0ZXIgYWN0aW9uPXJlcGVhdGNvZGUgcmV0dXJuaWQ9JHJlcGVhdGNvZGVfcGFnZSBhc3NpZ249J3JlcGVhdGNvZGVfdXJsJ30KICAgICA8YSBocmVmPSJ7JHJlcGVhdGNvZGVfdXJsfSI+PGJ1dHRvbj5SZXF1ZXN0IGNvZGU8L2J1dHRvbj48L2E+CjwvcD4KCjxwPklmIHlvdSByZWNlaXZlZCB0aGlzIGVtYWlsIGluIGVycm9yLCB5b3UgY2FuIHNhZmVseSBpZ25vcmUgaXQuPC9wPgo=]]></data>
	</file>
	<file>
	  <filename>/emails/on_repeatcode.eml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZW5jb2RlX3N1YmplY3Q9dHJ1ZQo9PT09IHN1YmplY3QgPT09PQpZb3VyIHZlcmlmaWNhdGlvbiBjb2RlCj09PT0gYm9keSA9PT09CjxoMz5IZWxsbyA8c3Ryb25nPnskdXNlci0+dXNlcm5hbWV9PC9zdHJvbmc+PC9oMz4KCntjbXNfYWN0aW9uX3VybCBtb2R1bGU9Q0dGRVVSZWdpc3RlciBhY3Rpb249dmVyaWZ5IHVpZD0kdXNlci0+aWQgY29kZT0kZGF0YS0+dmVyaWZ5X2NvZGUgYXNzaWduPXZlcmlmeV91cmx9CjxwPldlIGFyZSBzb3JyeSB0aGF0IHlvdSBoYXZlIGhhZCBhIHByb2JsZW0gZ2V0dGluZyB5b3VyIHZlcmlmaWNhdGlvbiBjb2RlLiAgTGV0cyBob3BlIHRoYXQgdGhpcyBvbmUgd29ya3MuPC9wPgoKPHA+UGxlYXNlIGNsaWNrIHRoZSBidXR0b24gYmVsb3cuPC9wPgo8cCBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+CiAgICA8YSBocmVmPSJ7JHZlcmlmeV91cmx9IiB0YXJnZXQ9Il9fYmxhbmsiPjxidXR0b24+VmVyaWZ5PC9idXR0b24+PC9hPgo8L3A+Cgo8cD5JZiB5b3VyIGJyb3dzZXIgZG9lcyBub3QgYWxsb3cgeW91IHRvIGNsaWNrIG9uIGxpbmtzLCB0aGVuIHlvdSBjYW4gY29weSBhbmQgcGFzdGUgdGhlIGZvbGxvd2luZyBVUkwgaW50byB5b3VyIGJyb3dzZXIuPC9wPgo8cHJlPjxjb2RlPnskdmVyaWZ5X3VybH08L2NvZGU+PC9wcmU+Cgp7aWYgJGRhdGEtPmV4cGlyZXN9CjxwPlRoaXMgY29kZSB3aWxsIGV4cGlyZSBhdCBhcHByb3hpbWF0ZWx5IHskZGF0YS0+ZXhwaXJlc3xkYXRlX2Zvcm1hdDonJXggJVgnfSA8ZW0+KHNlcnZlciB0aW1lKTwvZW0+LjwvcD4Key9pZn0KCjxoci8+CjxwPlRoYW5rIHlvdSBmb3IgcmVnaXN0ZXJpbmcgd2l0aCB7c2l0ZW5hbWV9PC9wPgo8cD5JZiB5b3UgYXJlIHJlY2VpdmluZyB0aGlzIGVtYWlsIGluY29ycmVjdGx5LCB5b3UgY2FuIHNhZmVseSBpZ25vcmUgaXQuPC9wPgo=]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2Vycm9yX2NhcHRjaGFtaXNtYXRjaCddID0gJ1RoZSBjYXB0Y2hhIGRhdGEgc3VibWl0dGVkIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCB2YWx1ZSc7CiRsYW5nWydsYmxfbmV3Y29kZSddID0gJ1NlbmQgdXNlciBhIG5ldyBjb2RlJzsKJGxhbmdbJ21zZ19ub3VzZXJzJ10gPSAnVGhlcmUgYXJlIG5vIHJlZ2lzdGVyaW5nIHVzZXJzIHRoYXQgbWF0Y2ggeW91ciBjcml0ZXJpYSc7CiRsYW5nWydtc2dfdXNlcl9kZWxldGVkJ10gPSAnVXNlciBkZWxldGVkJzsKJGxhbmdbJ21zZ191c2VyX3NhdmVkJ10gPSAnVXNlciBzYXZlZCc7CiRsYW5nWydtc2dfdXNlcl9wdXNoZWRsaXZlJ10gPSAnVXNlciBwdXNoZWQgdG8gRnJvbnRFbmRVc2Vycyc7CiRsYW5nWydoZHJfbWFuYWdlX3VzZXInXSA9ICdNYW5hZ2UgdXNlciByZWdpc3RyYXRpb24nOwokbGFuZ1snbGJsX3N1Ym1pdCddID0gJ1N1Ym1pdCc7CiRsYW5nWydsYmxfY2FuY2VsJ10gPSAnQ2FuY2VsJzsKJGxhbmdbJ2xibF9kZWxldGUnXSA9ICdEZWxldGUnOwokbGFuZ1snbGJsX3B1c2hsaXZlJ10gPSAnUHVzaCBsaXZlJzsKJGxhbmdbJ2xibF9lZGl0J10gPSAnRWRpdCc7CiRsYW5nWydsYmxfZXhwaXJlZCddID0gJ0V4cGlyZWQnOwokbGFuZ1snbGJsX3VzZXJuYW1lJ10gPSAnVXNlcm5hbWUnOwokbGFuZ1snbGJsX2NyZWF0ZWQnXSA9ICdDcmVhdGVkJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0Zyb250ZW5kIFVzZXIgUmVnaXN0cmF0aW9ucyc7CiRsYW5nWydlcnJfdXNlcm5hbWVfY2Fubm90cmVnaXN0ZXInXSA9ICdTb3JyeSwgY2Fubm90IHJlZ2lzdGVyJzsKJGxhbmdbJ3NlbmRjb2RlJ10gPSAnU2VuZCBjb2RlJzsKJGxhbmdbJ3JlZ2lzdGVyJ10gPSAnUmVnaXN0ZXInOwokbGFuZ1sncHJvbXB0X2NhcHRjaGEnXSA9ICdQbGVhc2UgZW50ZXIgdGhlIGNhcHRjaGEgdGV4dCc7CiRsYW5nWydwcm9tcHRfdXNlcm5hbWVlbWFpbCddID0gJ1VzZXJuYW1lL0VtYWlsJzsKJGxhbmdbJ2Vycl9jYXB0Y2hhbWlzbWF0Y2gnXSA9ICdUaGUgY2FwdGNoYSB0ZXh0IGlzIGluY29ycmVjdCc7CiRsYW5nWydlcnJfbWlzc2luZ191c2VybmFtZSddID0gJ1BsZWFzZSBlbnRlciBhIHVzZXJuYW1lJzsKJGxhbmdbJ2Vycl9pbnZhbGlkX3VzZXJuYW1lJ10gPSAnVGhlIHVzZXJuYW1lIGVudGVyZWQgaXMgaW52YWxpZCc7CiRsYW5nWydlcnJfc2VjdXJpdHknXSA9ICdJbnZhbGlkIGZvcm0gc3VibWlzc2lvbiAoc29tZSBzZWN1cml0eSBkYXRhIGlzIG1pc3Npbmcgb3IgaW52YWxpZCknOwokbGFuZ1snZXJyX3VzZXJfbm90Zm91bmQnXSA9ICdTb3JyeSwgd2UgY291bGQgbm90IGZpbmQgdGhhdCB1c2VyJzsKJGxhbmdbJ2Vycl91c2VybmFtZV9leGlzdHMnXSA9ICdUaGF0IHVzZXJuYW1lIGlzIGFscmVhZHkgdGFrZW4nOwokbGFuZ1snZXJyX3JlcXVpcmVkX2ZpZWxkJ10gPSAnUGxlYXNlIGVudGVyIGEgdmFsdWUgZm9yICIlcyInOwokbGFuZ1snZXJyX2ludmFsaWRfZmllbGQnXSA9ICdUaGUgdmFsdWUgZW50ZXJlZCBmb3IgIiVzIiBpcyBpbnZhbGlkJzsKJGxhbmdbJ2Vycl9ub3VuaXF1ZV9maWVsZCddID0gJ1RoZSB2YWx1ZSBlbnRlcmVkIGZvciAiJXMiIGlzIG5vdCB1bmlxdWUgb24gdGhpcyBzeXN0ZW0uJzsKJGxhbmdbJ2Vycl9wYXNzd29yZF9taXNtYXRjaCddID0gJ1BsZWFzZSBlbnRlciB0aGUgcGFzc3dvcmRzIGluIGJvdGggZmllbGRzIG1hdGNoJzsKJGxhbmdbJ2Vycl9pbnZhbGlkX3Bhc3N3b3JkJ10gPSAnVGhlIHBhc3N3b3JkIHlvdSBlbnRlcmVkIGlzIG5vdCBzdHJvbmcgZW5vdWdoLiAgUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBkaWdpdCwgYXQgbGVhc3Qgb25lIHVwcGVyY2FzZSBjaGFyYWN0ZXIsIGFuZCBvbmUgbG93ZXJjYXNlIGxldHRlcic7CiRsYW5nWydlcnJfY2Fubm90dmVyaWZ5J10gPSAnU29ycnksIHdlIGNvdWxkIG5vdCBjb25maXJtIHlvdXIgdmFsaWRhdGlvbic7CiRsYW5nWydtc2dfd2VsY29tZSddID0gJ1dlbGNvbWUnOwokbGFuZ1snbXNnX2FmdGVyX3ZlcmlmeSddID0gJ1RoYW5rIHlvdSBmb3IgdmVyaWZ5aW5nIHlvdXIgcmVnaXN0cmF0aW9uJzsKJGxhbmdbJ2luZm9fcmVwZWF0Y29kZSddID0gJ0lmIHlvdSBoYXZlIGFscmVhZHkgc3VibWl0dGVkIHJlZ2lzdHJhdGlvbiBpbmZvLCBidXQgZGlkIG5vdCByZWNlaXZlIHRoZSByZWdpc3RyYXRpb24gY29kZGUsIHlvdSBjYW4gZW50ZXIgeW91ciB1c2VybmFtZSBhZ2FpbiBhbmQgd2Ugd2lsbCBhdHRlbXB0IHRvIHNlbmQgeW91IGFub3RoZXIgY29kZS4nOwokbGFuZ1sncG9zdF9yZXBlYXRjb2RlX21lc3NhZ2UnXSA9ICdUaGFua3MsIGNoZWNrIHlvdXIgZW1haWwgZm9yIGEgbmV3IHZlcmlmaWNhdGlvbiBjb2RlJzsK]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/abstract.FilterResultSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgphYnN0cmFjdCBjbGFzcyBGaWx0ZXJSZXN1bHRTZXQgZXh0ZW5kcyBTZXQKewogICAgcHJpdmF0ZSAkX2ZpbHRlcjsKICAgIHByaXZhdGUgJF90b3RhbDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoRmlsdGVyICRmaWx0ZXIsIGludCAkbm1hdGNoZXMsIGFycmF5ICRtYXRjaGVzID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+X2ZpbHRlciA9ICRmaWx0ZXI7CiAgICAgICAgJHRoaXMtPl90b3RhbCA9ICRubWF0Y2hlczsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRtYXRjaGVzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19nZXQoIHN0cmluZyAka2V5ICkKICAgIHsKICAgICAgICBzd2l0Y2goICRrZXkgKSB7CiAgICAgICAgY2FzZSAncGFnZWNvdW50JzoKICAgICAgICAgICAgcmV0dXJuIGNlaWwoJHRoaXMtPl90b3RhbCAvICR0aGlzLT5fZmlsdGVyLT5saW1pdCk7CgogICAgICAgIGNhc2UgJ3BhZ2UnOgogICAgICAgICAgICByZXR1cm4gZmxvb3IoJHRoaXMtPl9maWx0ZXItPm9mZnNldCAvICR0aGlzLT5fZmlsdGVyLT5saW1pdCkgKyAxOwoKICAgICAgICBjYXNlICd0b3RhbCc6CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+X3RvdGFsOwoKICAgICAgICBjYXNlICdmaWx0ZXInOgogICAgICAgICAgICByZXR1cm4gJHRoaXMtPl9maWx0ZXI7CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCIka2V5IGlzIG5vdCBhIGdldHRhYmxlIHByb3BlcnR5IG9mICIuZ2V0X2NsYXNzKCR0aGlzKSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBwYWdlTGlzdChpbnQgJHN1cnJvdW5kID0gNSkKICAgIHsKICAgICAgICAkc3Vycm91bmQgPSBtYXgoMixtaW4oNTAsJHN1cnJvdW5kKSk7CgogICAgICAgICRsaXN0ID0gYXJyYXkoKTsKICAgICAgICBmb3IoICRpID0gMTsgJGkgPD0gbWluKCRzdXJyb3VuZCwkdGhpcy0+cGFnZWNvdW50KTsgJGkrKyApIHsKICAgICAgICAgICAgJGxpc3RbXSA9IChpbnQpJGk7CiAgICAgICAgfQoKICAgICAgICAkeDEgPSBtYXgoMSwoaW50KSgkdGhpcy0+cGFnZSAtICRzdXJyb3VuZCAvIDIpKTsKICAgICAgICAkeDIgPSBtaW4oJHRoaXMtPnBhZ2Vjb3VudCAtIDEsKGludCkoJHRoaXMtPnBhZ2UgKyAkc3Vycm91bmQgLyAyKSApOwogICAgICAgIGZvciggJGkgPSAkeDE7ICRpIDw9ICR4MjsgJGkrKyApIHsKICAgICAgICAgICAgJGxpc3RbXSA9IChpbnQpJGk7CiAgICAgICAgfQoKICAgICAgICBmb3IoICRpID0gbWF4KDEsJHRoaXMtPnBhZ2Vjb3VudCAtICRzdXJyb3VuZCk7ICRpIDwgJHRoaXMtPnBhZ2Vjb3VudDsgJGkrKykgewogICAgICAgICAgICAkbGlzdFtdID0gKGludCkkaTsKICAgICAgICB9CgogICAgICAgICRsaXN0ID0gYXJyYXlfdW5pcXVlKCRsaXN0KTsKICAgICAgICBzb3J0KCRsaXN0KTsKICAgICAgICByZXR1cm4gJGxpc3Q7CiAgICB9CgoKfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/abstract.Set.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBJdGVyYXRvcjsKdXNlIENvdW50YWJsZTsKCmFic3RyYWN0IGNsYXNzIFNldCBpbXBsZW1lbnRzIEl0ZXJhdG9yLCBDb3VudGFibGUKewogICAgcHJpdmF0ZSAkX2xpc3Q7CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF9fY29uc3RydWN0KCBhcnJheSAkbWF0Y2hlcyA9IG51bGwgKQogICAgewogICAgICAgICR0aGlzLT5fbGlzdCA9ICRtYXRjaGVzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZXdpbmQoKSB7IGlmKCAhZW1wdHkoJHRoaXMtPl9saXN0KSApIHJlc2V0KCR0aGlzLT5fbGlzdCk7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBjdXJyZW50KCkgeyByZXR1cm4gIWVtcHR5KCR0aGlzLT5fbGlzdCkgPyBjdXJyZW50KCR0aGlzLT5fbGlzdCkgOiBudWxsOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24ga2V5KCkgeyByZXR1cm4gIWVtcHR5KCR0aGlzLT5fbGlzdCkgPyBrZXkoJHRoaXMtPl9saXN0KSA6IG51bGw7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBuZXh0KCkgeyByZXR1cm4gbmV4dCgkdGhpcy0+X2xpc3QpOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gdmFsaWQoKSB7IHJldHVybiAoJHRoaXMtPmtleSgpICE9PSBudWxsKTsgfQogICAgcHVibGljIGZ1bmN0aW9uIGNvdW50KCkgeyByZXR1cm4gKGVtcHR5KCR0aGlzLT5fbGlzdCkpID8gMCA6IGNvdW50KCR0aGlzLT5fbGlzdCk7IH0KCn0gLy8gY2xhc3MK]]></data>
	</file>
	<file>
	  <filename>/lib/class.AbstractVerifierDecorator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgphYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFZlcmlmaWVyRGVjb3JhdG9yCnsKICAgIHByb3RlY3RlZCAkcGFyZW50OwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChSZWdpc3RyYXRpb25WZXJpZmllckludGVyZmFjZSAkcGFyZW50ID0gbnVsbCkKICAgIHsKICAgICAgICAvLyBub3RlOiB3ZSB3YW50IHRvIHVzZSBhIHNwZWNpZmljIGludGVyZmFjZSBoZXJlLgogICAgICAgICR0aGlzLT5wYXJlbnQgPSAkcGFyZW50OwogICAgfQoKICAgIC8vIHRoaXMgaXMgYW4gZW1wdHkgdHlwZSBzbyBmYXIuCglwdWJsaWMgZnVuY3Rpb24gX19jYWxsKHN0cmluZyAkbWV0aG9kLCAkYXJncykKCXsKICAgICAgICBpZiggISR0aGlzLT5wYXJlbnQgKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oZ2V0X2NsYXNzKCR0aGlzKS4nIGRvZXMgbm90IGhhdmUgYSBtZXRob2QgZW50aXRsZWQgJy4kbWV0aG9kKTsKICAgICAgICB9CgkgICAgcmV0dXJuIGNhbGxfdXNlcl9mdW5jX2FycmF5KCBbICR0aGlzLT5wYXJlbnQsICRtZXRob2QgXSwgJGFyZ3MgKTsKICAgIH0KfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.AdminNotifierUsingNotifications.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBub3RpZmljYXRpb25fbWVzc2FnZTsgLy8gQ0dFeHRlbnNpb25zCnVzZSBjZ2VfdXNlcm9wczsKdXNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDTVNNb2R1bGU7CgpjbGFzcyBBZG1pbk5vdGlmaWVyVXNpbmdOb3RpZmljYXRpb25zIGltcGxlbWVudHMgQWRtaW5Ob3RpZmllcgp7CiAgICBwcml2YXRlICRtb2Q7CiAgICBwcml2YXRlICRzZXR0aW5nczsKICAgIHByaXZhdGUgJG5vdGlmaWVyOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChDR0ZFVVJlZ2lzdGVyICRtb2QsIFNldHRpbmdzICRzZXR0aW5ncywgQ01TTW9kdWxlICRub3RpZmllcikKICAgIHsKICAgICAgICBpZiggIW1ldGhvZF9leGlzdHMoJG5vdGlmaWVyLCdzZW5kX21lc3NhZ2UnKSApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIG5vdGlmaWVyIHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwogICAgICAgICR0aGlzLT5tb2QgPSAkbW9kOwogICAgICAgICR0aGlzLT5zZXR0aW5ncyA9ICRzZXR0aW5nczsKICAgICAgICAkdGhpcy0+bm90aWZpZXIgPSAkbm90aWZpZXI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG5vdGlmeV91c2VyX3JlZ2lzdGVyZWQoUmVnRmllbGRTZXQgJGZpZWxkcywgVXNlciAkdXNlcikKICAgIHsKICAgICAgICBpZiggISgkZ25hbWUgPSAkdGhpcy0+c2V0dGluZ3MtPm9ucmVnaXN0ZXJfbm90aWZ5X2FkbWluZ3JvdXApICkgcmV0dXJuOwoKICAgICAgICAkZW1sID0gJHRoaXMtPm1vZC0+Z2V0X2VtYWlsX3N0b3JhZ2UoKS0+bG9hZCgnYWRtaW5fbm90aWZ5X3VzZXJyZWdpc3RlcmVkLmVtbCcpOwogICAgICAgIGlmKCAhJGVtbCApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0NvdWxkIG5vdCBmaW5kIHRoZSBhZG1pbl9ub3RpZnlfdXNlcnJlZ2lzdGVyZWQuZW1sIGVtYWlsIHRlbXBsYXRlJyk7CiAgICAgICAgJGVtbCA9ICRlbWwtPmFkZF9kYXRhKCd1c2VyJywgJHVzZXIpCiAgICAgICAgICAgIC0+YWRkX2RhdGEoJ2ZpZWxkcycsICRmaWVsZHMpCiAgICAgICAgICAgIC0+YWRkX2FkbWluX2dyb3VwKCRnbmFtZSk7CiAgICAgICAgJHByb2MgPSAkdGhpcy0+bW9kLT5jcmVhdGVfbmV3X21haWxwcm9jZXNzb3IoJGVtbCk7CgogICAgICAgIC8vIGNyZWF0ZSBhbmQgc2VuZCBhIG5vdGlmaWNhdGlvbiBtZXNzYWdlCiAgICAgICAgJG1zZyA9IG5ldyBub3RpZmljYXRpb25fbWVzc2FnZTsKICAgICAgICAkbXNnLT50b19ncm91cCA9IGNnZV91c2Vyb3BzOjpnZXRfZ3JvdXBpZCgkZ25hbWUpICogLTE7CiAgICAgICAgJG1zZy0+c3ViamVjdCA9ICRwcm9jLT5nZXRfZW1haWxfc3ViamVjdCgkZW1sKTsKICAgICAgICAkbXNnLT5ib2R5ID0gJHByb2MtPmdldF9lbWFpbF9ib2R5KCRlbWwpOwogICAgICAgICRtc2ctPmh0bWwgPSB0cnVlOwogICAgICAgICR0aGlzLT5ub3RpZmllci0+c2VuZF9tZXNzYWdlKCRtc2cpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBub3RpZnlfdXNlcl9wdXNoZWQoaW50ICRmZXVfdWlkLCBSZWdGaWVsZFNldCAkZmllbGRzLCBVc2VyICR1c2VyKQogICAgewogICAgICAgIGlmKCAhKCRnbmFtZSA9ICR0aGlzLT5zZXR0aW5ncy0+b25wdXNoX25vdGlmeV9hZG1pbmdyb3VwKSApIHJldHVybjsKICAgICAgICBpZiggJGZldV91aWQgPCAxICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignaW52YWxpZCBmZXVfdWlkIHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwoKICAgICAgICAkZW1sID0gJHRoaXMtPm1vZC0+Z2V0X2VtYWlsX3N0b3JhZ2UoKS0+bG9hZCgnYWRtaW5fbm90aWZ5X3VzZXJwdXNoZWQuZW1sJyk7CiAgICAgICAgaWYoICEkZW1sICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ291bGQgbm90IGZpbmQgdGhlIGFkbWluX25vdGlmeV91c2VycHVzaGVkLmVtbCBlbWFpbCB0ZW1wbGF0ZScpOwogICAgICAgICRlbWwgPSAkZW1sLT5hZGRfZGF0YSgndXNlcicsICR1c2VyKQogICAgICAgICAgICAtPmFkZF9kYXRhKCdmaWVsZHMnLCAkZmllbGRzKQogICAgICAgICAgICAtPmFkZF9kYXRhKCdmZXVfdWlkJywgJGZldV91aWQpCiAgICAgICAgICAgIC0+YWRkX2FkbWluX2dyb3VwKCRnbmFtZSk7CiAgICAgICAgJHByb2MgPSAkdGhpcy0+bW9kLT5jcmVhdGVfbmV3X21haWxwcm9jZXNzb3IoJGVtbCk7CgogICAgICAgIC8vIGNyZWF0ZSBhbmQgc2VuZCBhIG5vdGlmaWNhdGlvbiBtZXNzYWdlCiAgICAgICAgJG1zZyA9IG5ldyBub3RpZmljYXRpb25fbWVzc2FnZTsKICAgICAgICAkbXNnLT50b19ncm91cCA9IGNnZV91c2Vyb3BzOjpnZXRfZ3JvdXBpZCgkZ25hbWUpICogLTE7CiAgICAgICAgJG1zZy0+c3ViamVjdCA9ICRwcm9jLT5nZXRfZW1haWxfc3ViamVjdCgpOwogICAgICAgICRtc2ctPmJvZHkgPSAkcHJvYy0+Z2V0X2VtYWlsX2JvZHkoKTsKICAgICAgICAkbXNnLT5odG1sID0gdHJ1ZTsKICAgICAgICAkdGhpcy0+bm90aWZpZXItPnNlbmRfbWVzc2FnZSgkbXNnKTsKICAgIH0KfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.AuditRegistrationManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgpjbGFzcyBSZWdpc3RyYXRpb25NYW5hZ2VyIGV4dGVuZHMgUmVnaXN0cmF0aW9uTWFuYWdlckRlY29yYXRvcgp7Cgp9IC8vIGNsYXNz]]></data>
	</file>
	<file>
	  <filename>/lib/class.BlacklistRegistrationVerifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDR0ZFVVJlZ2lzdGVyOwoKY2xhc3MgQmxhY2tsaXN0UmVnaXN0cmF0aW9uVmVyaWZpZXIKICAgIGV4dGVuZHMgQWJzdHJhY3RWZXJpZmllckRlY29yYXRvcgogICAgaW1wbGVtZW50cyBSZWdpc3RyYXRpb25WZXJpZmllckludGVyZmFjZQp7CiAgICBwcml2YXRlICRzZXR0aW5nczsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoUmVnaXN0cmF0aW9uVmVyaWZpZXJJbnRlcmZhY2UgJHBhcmVudCwgU2V0dGluZ3MgJHNldHRpbmdzKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJHBhcmVudCk7CiAgICAgICAgJHRoaXMtPnNldHRpbmdzID0gJHNldHRpbmdzOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBtYXRjaF91c2VybmFtZV9mcm9tX3N0cmluZyhzdHJpbmcgJGxpc3QsIHN0cmluZyAkdXNlcm5hbWUpIDogYm9vbAogICAgewogICAgICAgICRsaXN0ID0gcHJlZ19zcGxpdCgiLygoXHIoPyFcbikpfCgoPzwhXHIpXG4pfChcclxuKSkvIiwgJGxpc3QpOwogICAgICAgIGlmIChjb3VudCgkbGlzdCkpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJGxpc3QgYXMgJG9uZV9saW5lKSB7CiAgICAgICAgICAgICAgICAkcmVnZXggPSAnL14nIC4gc3RyX3JlcGxhY2UoIkAiLCAiXEAiLCBzdHJfcmVwbGFjZSgiXCoiLCAiLioiLCBwcmVnX3F1b3RlKCRvbmVfbGluZSkpKSAuICckLyc7CiAgICAgICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgkcmVnZXgsICR1c2VybmFtZSkgPiAwKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmFsaWRhdGVfcHVyZV9yZWdpc3RyYXRpb24oUmVnRmllbGRTZXQgJGZpZWxkcywgVXNlciAkdXNlcikKICAgIHsKICAgICAgICAvLyBiZWNhdXNlIHRoZSBpbnRlcmZhY2Ugc2F5cyB3ZSBoYXZlIHRvIGhhdmUgdGhpcyBtZXRob2QKICAgICAgICByZXR1cm4gJHRoaXMtPnBhcmVudC0+dmFsaWRhdGVfcHVyZV9yZWdpc3RyYXRpb24oJGZpZWxkcywgJHVzZXIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2YWxpZGF0ZV9yZWdpc3RyYXRpb24oUmVnRmllbGRTZXQgJGZpZWxkcywgVXNlciAkdXNlcikKICAgIHsKICAgICAgICAvLyBjaGVjayBpZiB3ZSBoYXZlIGJsYWNrbGlzdCBzdHVmZgogICAgICAgICRtYXRjaGVzX2JsYWNrbGlzdCA9ICRtYXRjaGVzX3doaXRlbGlzdCA9IG51bGw7CiAgICAgICAgaWYoICR0aGlzLT5zZXR0aW5ncy0+dXNlcm5hbWVfYmxhY2tsaXN0ICkgewogICAgICAgICAgICAkbWF0Y2hlc19ibGFja2xpc3QgPSAkdGhpcy0+bWF0Y2hfdXNlcm5hbWVfZnJvbV9zdHJpbmcoJHRoaXMtPnNldHRpbmdzLT51c2VybmFtZV9ibGFja2xpc3QsICR1c2VyLT51c2VybmFtZSk7CiAgICAgICAgfQogICAgICAgIGlmKCAkdGhpcy0+c2V0dGluZ3MtPnVzZXJuYW1lX3doaXRlbGlzdCApIHsKICAgICAgICAgICAgJG1hdGNoZXNfd2hpdGVsaXN0ID0gJHRoaXMtPm1hdGNoX3VzZXJuYW1lX2Zyb21fc3RyaW5nKCR0aGlzLT5zZXR0aW5ncy0+dXNlcm5hbWVfd2hpdGVsaXN0LCAkdXNlci0+dXNlcm5hbWUpOwogICAgICAgIH0KCiAgICAgICAgaWYoICR0aGlzLT5zZXR0aW5ncy0+dXNlcm5hbWVfYmxhY2tsaXN0ICkgewogICAgICAgICAgICBpZiggISRtYXRjaGVzX2JsYWNrbGlzdCAmJiAhJG1hdGNoZXNfd2hpdGVsaXN0ICkgewogICAgICAgICAgICAgICAgLy8gZmFpbGVkIHZhbGlkIGJsYWNrbGlzdCwgbm90IGV4Y2x1ZGVkIGluIHdoaXRlbGlzdC4KICAgICAgICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJHRoaXMtPm1vZC0+TGFuZygnZXJyX3VzZXJuYW1lX2Nhbm5vdHJlZ2lzdGVyJykpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoICR0aGlzLT5zZXR0aW5ncy0+dXNlcm5hbWVfd2hpdGVsaXN0ICYmICEkbWF0Y2hlc193aGl0ZWxpc3QgKSB7CiAgICAgICAgICAgIC8vIG5vIGJsYWNrbGlzdCwgaGF2ZSB3aGl0ZWxpc3QgYW5kIGRvZXMgbm90IG1hdGNoIHdoaXRlbGlzdC4KICAgICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcigkdGhpcy0+bW9kLT5MYW5nKCdlcnJfdXNlcm5hbWVfY2Fubm90cmVnaXN0ZXInKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnBhcmVudC0+dmFsaWRhdGVfcmVnaXN0cmF0aW9uKCRmaWVsZHMsICR1c2VyKTsKICAgIH0KfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.ClearExpiredUsersTask.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDR0ZFVVJlZ2lzdGVyOwp1c2UgY21zX3V0aWxzOwoKaW5jbHVkZV9vbmNlKF9fRElSX18uJy9pbnRlcmZhY2UuVGFza0ludGVyZmFjZS5waHAnICk7IC8vIGdyb3NzLgpjbGFzcyBDbGVhckV4cGlyZWRVc2Vyc1Rhc2sgaW1wbGVtZW50cyBEYWlseVRhc2sKewogICAgY29uc3QgTEFTVFJVTl9QUkVGID0gJ0NsZWFyRXhwaXJlZFVzZXJzVGFza19sYXN0cnVuJzsKCiAgICBwcml2YXRlICRtb2Q7CiAgICBwcml2YXRlICRyZWdtZ3I7CiAgICBwcml2YXRlICRzZXR0aW5nczsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoQ0dGRVVSZWdpc3RlciAkbW9kLCBSZWdpc3RyYXRpb25NYW5hZ2VyRGVjb3JhdG9yICRyZWdtZ3IsIFNldHRpbmdzICRzZXR0aW5ncykKICAgIHsKICAgICAgICAkdGhpcy0+bW9kID0gJG1vZDsKICAgICAgICAkdGhpcy0+cmVnbWdyID0gJHJlZ21ncjsKICAgICAgICAkdGhpcy0+c2V0dGluZ3MgPSAkc2V0dGluZ3M7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGRhaWx5KCkKICAgIHsKICAgICAgICBpZiggKCR1c2VyX2V4cGlyZV9ob3VycyA9ICR0aGlzLT5zZXR0aW5ncy0+dXNlcl9leHBpcmVfaG91cnMpIDwgMSApIHJldHVybjsKICAgICAgICAkbm93ID0gdGltZSgpOwogICAgICAgICRsYXN0cnVuID0gKGludCkgJHRoaXMtPm1vZC0+R2V0UHJlZmVyZW5jZShzZWxmOjpMQVNUUlVOX1BSRUYpOwogICAgICAgICR0aGlzLT5tb2QtPlNldFByZWZlcmVuY2Uoc2VsZjo6TEFTVFJVTl9QUkVGLCAkbm93KTsKCiAgICAgICAgJGZpbHRlciA9ICR0aGlzLT5yZWdtZ3ItPmNyZWF0ZV91c2VyX2ZpbHRlciggWydleHBpcmVkJz0+dHJ1ZSBdICk7CiAgICAgICAgJHVzZXJzID0gJHRoaXMtPnJlZ21nci0+bG9hZF91c2Vyc19ieV9maWx0ZXIoJGZpbHRlcik7CiAgICAgICAgZm9yZWFjaCggJHVzZXJzIGFzICR1c2VyICkgewogICAgICAgICAgICAkdGhpcy0+cmVnbWdyLT5kZWxldGVfdXNlcl9mdWxsKCR1c2VyKTsKICAgICAgICAgICAgYXVkaXQoJHVzZXItPmlkLCR0aGlzLT5tb2QtPkdldE5hbWUoKSwnRGVsZXRlZCBleHBpcmVkIHVzZXIgJy4kdXNlci0+dXNlcm5hbWUpOwogICAgICAgIH0KICAgIH0KfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.EmailAdminNotifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDR0ZFVVJlZ2lzdGVyOwoKY2xhc3MgRW1haWxBZG1pbk5vdGlmaWVyIGltcGxlbWVudHMgQWRtaW5Ob3RpZmllcgp7CiAgICBwcml2YXRlICRtb2Q7CiAgICBwcml2YXRlICRzZXR0aW5nczsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoQ0dGRVVSZWdpc3RlciAkbW9kLCBTZXR0aW5ncyAkc2V0dGluZ3MpCiAgICB7CiAgICAgICAgJHRoaXMtPm1vZCA9ICRtb2Q7CiAgICAgICAgJHRoaXMtPnNldHRpbmdzID0gJHNldHRpbmdzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBub3RpZnlfdXNlcl9yZWdpc3RlcmVkKFJlZ0ZpZWxkU2V0ICRmaWVsZHMsIFVzZXIgJHVzZXIpCiAgICB7CiAgICAgICAgaWYoICEoJGduYW1lID0gJHRoaXMtPnNldHRpbmdzLT5vbnJlZ2lzdGVyX25vdGlmeV9hZG1pbmdyb3VwKSApIHJldHVybjsKCiAgICAgICAgJGVtbCA9ICR0aGlzLT5tb2QtPmdldF9lbWFpbF9zdG9yYWdlKCktPmxvYWQoJ2FkbWluX25vdGlmeV91c2VycmVnaXN0ZXJlZC5lbWwnKTsKICAgICAgICBpZiggISRlbWwgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDb3VsZCBub3QgZmluZCB0aGUgYWRtaW5fbm90aWZ5X3VzZXJyZWdpc3RlcmVkLmVtbCBlbWFpbCB0ZW1wbGF0ZScpOwogICAgICAgICRlbWwgPSAkZW1sLT5hZGRfZGF0YSgndXNlcicsICR1c2VyKQogICAgICAgICAgICAtPmFkZF9kYXRhKCdmaWVsZHMnLCAkZmllbGRzKQogICAgICAgICAgICAtPmFkZF9hZG1pbl9ncm91cCgkZ25hbWUpOwogICAgICAgICR0aGlzLT5tb2QtPmNyZWF0ZV9uZXdfbWFpbHByb2Nlc3NvcigkZW1sKS0+c2VuZCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBub3RpZnlfdXNlcl9wdXNoZWQoaW50ICRmZXVfdWlkLCBSZWdGaWVsZFNldCAkZmllbGRzLCBVc2VyICR1c2VyKQogICAgewogICAgICAgIGlmKCAhKCRnbmFtZSA9ICR0aGlzLT5zZXR0aW5ncy0+b25wdXNoX25vdGlmeV9hZG1pbmdyb3VwKSApIHJldHVybjsKICAgICAgICBpZiggJGZldV91aWQgPCAxICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignaW52YWxpZCBmZXVfdWlkIHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwoKICAgICAgICAkZW1sID0gJHRoaXMtPm1vZC0+Z2V0X2VtYWlsX3N0b3JhZ2UoKS0+bG9hZCgnYWRtaW5fbm90aWZ5X3VzZXJwdXNoZWQuZW1sJyk7CiAgICAgICAgaWYoICEkZW1sICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ291bGQgbm90IGZpbmQgdGhlIGFkbWluX25vdGlmeV91c2VycHVzaGVkLmVtbCBlbWFpbCB0ZW1wbGF0ZScpOwogICAgICAgICRlbWwgPSAkZW1sLT5hZGRfZGF0YSgndXNlcicsICR1c2VyKQogICAgICAgICAgICAtPmFkZF9kYXRhKCdmaWVsZHMnLCAkZmllbGRzKQogICAgICAgICAgICAtPmFkZF9kYXRhKCdmZXVfdWlkJywgJGZldV91aWQpCiAgICAgICAgICAgIC0+YWRkX2FkbWluX2dyb3VwKCRnbmFtZSk7CiAgICAgICAgJHRoaXMtPm1vZC0+Y3JlYXRlX25ld19tYWlscHJvY2Vzc29yKCRlbWwpLT5zZW5kKCk7CiAgICB9Cn0gLy8gY2xhc3MK]]></data>
	</file>
	<file>
	  <filename>/lib/class.EmailRegistrationProcessor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDR0ZFVVJlZ2lzdGVyOwp1c2UgRnJvbnRFbmRVc2VyczsKCmNsYXNzIEVtYWlsUmVnaXN0cmF0aW9uUHJvY2Vzc29yIGltcGxlbWVudHMgUmVnaXN0cmF0aW9uUHJvY2Vzc29ySW50ZXJmYWNlCnsKICAgIHByaXZhdGUgJG1vZDsKICAgIHByaXZhdGUgJHNldHRpbmdzOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChDR0ZFVVJlZ2lzdGVyICRtb2QsIFNldHRpbmdzICRzZXR0aW5ncykKICAgIHsKICAgICAgICAkdGhpcy0+bW9kID0gJG1vZDsKICAgICAgICAkdGhpcy0+c2V0dGluZ3MgPSAkc2V0dGluZ3M7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF9lbWFpbChSZWdGaWVsZFNldCAkc2V0LCBVc2VyICR1c2VyKQogICAgewogICAgICAgIC8vIGdldCBhbiBlbWFpbCBhZGRyZXNzCiAgICAgICAgJGVtYWlsID0gbnVsbDsKICAgICAgICBpZiggJHRoaXMtPnNldHRpbmdzLT51c2VybmFtZV9pc19lbWFpbCApIHsKICAgICAgICAgICAgcmV0dXJuICR1c2VyLT5nZXQoJHVzZXI6OlVTRVJOQU1FX0ZJRUxEKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmb3JlYWNoKCAkc2V0IGFzICRmaWVsZCApIHsKICAgICAgICAgICAgICAgIGlmKCAkZmllbGQtPnR5cGUgPT0gRnJvbnRlbmRVc2Vyczo6UFJPUFRZUEVfRU1BSUwgKSB7CiAgICAgICAgICAgICAgICAgICAgJHByb3BuYW1lID0gJGZpZWxkLT5uYW1lOwogICAgICAgICAgICAgICAgICAgICRlbWFpbCA9ICR1c2VyLT5nZXQoJHByb3BuYW1lKTsKICAgICAgICAgICAgICAgICAgICBpZiggJGVtYWlsICkgcmV0dXJuICRlbWFpbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXhlY3V0ZShSZWdGaWVsZFNldCAkc2V0LCBVc2VyICR1c2VyLCBWZXJpZmljYXRpb25EYXRhICRkYXRhKQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRlbWFpbCA9ICR0aGlzLT5nZXRfZW1haWwoJHNldCwgJHVzZXIpOwogICAgICAgICAgICBpZiggISRlbWFpbCApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0NvdWxkIG5vdCBmaW5kIGEgdmFsaWQgZW1haWwgYWRkcmVzcyB0byBzZW5kIHRvJyk7CgogICAgICAgICAgICAkZW1sID0gJHRoaXMtPm1vZC0+Z2V0X2VtYWlsX3N0b3JhZ2UoKS0+bG9hZCgnb25fcmVnaXN0ZXIuZW1sJyk7CiAgICAgICAgICAgIGlmKCAhJGVtbCApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0NvdWxkIG5vdCBmaW5kIHRoZSBvbl9yZWdpc3Rlci5lbWwgZW1haWwgdGVtcGxhdGUnKTsKICAgICAgICAgICAgJGVtbCA9ICRlbWwtPmFkZF9hZGRyZXNzKCRlbWFpbCkKICAgICAgICAgICAgICAgIC0+YWRkX2RhdGEoJ2ZpZWxkcycsICRzZXQpCiAgICAgICAgICAgICAgICAtPmFkZF9kYXRhKCd1c2VyJywgJHVzZXIpCiAgICAgICAgICAgICAgICAtPmFkZF9kYXRhKCdkYXRhJywgJGRhdGEpOwogICAgICAgICAgICAkdGhpcy0+bW9kLT5jcmVhdGVfbmV3X21haWxwcm9jZXNzb3IoICRlbWwgKS0+c2VuZCgpOwogICAgICAgICAgICBhdWRpdCgkdXNlci0+aWQsJHRoaXMtPm1vZC0+R2V0TmFtZSgpLCdTZW50IHJlZ2lzdHJhdGlvbiBlbWFpbCB0byAnLiR1c2VyLT51c2VybmFtZSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9maW5hbF9tZXNzYWdlKFJlZ0ZpZWxkU2V0ICRzZXQsIFVzZXIgJHVzZXIpIDogc3RyaW5nCiAgICB7CiAgICAgICAgJGVtYWlsID0gJHRoaXMtPmdldF9lbWFpbCgkc2V0LCAkdXNlcik7CiAgICAgICAgaWYoICEkZW1haWwgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDb3VsZCBub3QgZmluZCBhIHZhbGlkIGVtYWlsIGFkZHJlc3MgdG8gc2VuZCB0bycpOwoKICAgICAgICAkdHBsID0gJHRoaXMtPm1vZC0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJ3Bvc3RfcmVnaXN0ZXJfbWVzc2FnZS50cGwnKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ2VtYWlsJywkZW1haWwpOwogICAgICAgICR0cGwtPmFzc2lnbigndXNlcicsJHVzZXIpOwogICAgICAgIHJldHVybiAkdHBsLT5mZXRjaCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlX3JlcGVhdGNvZGUoUmVnRmllbGRTZXQgJHNldCwgVXNlciAkdXNlciwgVmVyaWZpY2F0aW9uRGF0YSAkZGF0YSkKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAkZW1haWwgPSAkdGhpcy0+Z2V0X2VtYWlsKCRzZXQsICR1c2VyKTsKICAgICAgICAgICAgaWYoICEkZW1haWwgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDb3VsZCBub3QgZmluZCBhIHZhbGlkIGVtYWlsIGFkZHJlc3MgdG8gc2VuZCB0bycpOwoKICAgICAgICAgICAgJHN0b3JhZ2UgPSAkdGhpcy0+bW9kLT5nZXRfZW1haWxfc3RvcmFnZSgpOwogICAgICAgICAgICAkZW1sID0gJHN0b3JhZ2UtPmxvYWQoJ29uX3JlcGVhdGNvZGUuZW1sJyk7CiAgICAgICAgICAgIGlmKCAhJGVtbCApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0NvdWxkIG5vdCBmaW5kIHRoZSBvbl9yZXBlYXRjb2RlLmVtbCBlbWFpbCB0ZW1wbGF0ZScpOwogICAgICAgICAgICAkZW1sID0gJGVtbC0+YWRkX2FkZHJlc3MoJGVtYWlsKQogICAgICAgICAgICAgICAgLT5hZGRfZGF0YSgnZmllbGRzJywgJHNldCkKICAgICAgICAgICAgICAgIC0+YWRkX2RhdGEoJ3VzZXInLCAkdXNlcikKICAgICAgICAgICAgICAgIC0+YWRkX2RhdGEoJ2RhdGEnLCAkZGF0YSk7CiAgICAgICAgICAgICR0aGlzLT5tb2QtPmNyZWF0ZV9uZXdfbWFpbHByb2Nlc3NvciggJGVtbCApLT5zZW5kKCk7CiAgICAgICAgICAgIGF1ZGl0KCR1c2VyLT5pZCwkdGhpcy0+bW9kLT5HZXROYW1lKCksJ1NlbnQgcmVwZWF0Y29kZSBlbWFpbCB0byAnLiR1c2VyLT51c2VybmFtZSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9yZXBlYXRjb2RlX2ZpbmFsbWVzc2FnZShSZWdGaWVsZFNldCAkc2V0LCBVc2VyICR1c2VyKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bW9kLT5MYW5nKCdwb3N0X3JlcGVhdGNvZGVfbWVzc2FnZScpOwogICAgfQp9IC8vIGNsYXNz]]></data>
	</file>
	<file>
	  <filename>/lib/class.Filter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGlzIGZpbGUgZGVzY3JpYmVzIGFuIGFic3RyYWN0IGZpbHRlciBjbGFzcy4KICoKICogQHBhY2thZ2UgQ0dGRVVSZWdpc3RlcgogKiBAY2F0ZWdvcnkgUXVlcnkvRmlsdGVyCiAqIEBhdXRob3IgIGNhbGd1eTEwMDAgPGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmc+CiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IDIwMTkgYnkgUm9iZXJ0IENhbXBiZWxsCiAqLwoKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgovKioKICogQSBjbGFzcyB0aGF0IGRlc2NyaWJlcyBhIGZpbHRlci4KICoKICogQHByb3AgaW50ICRsaW1pdCBUaGUgbWF4aW11bSBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuICBNaW5pbXVtIG9mIDEuCiAqIEBwcm9wIGludCAkb2Zmc2V0IFRoZSBzdGFydCBwb3NpdGlvbiAoc3RhcnRpbmcgYXQgMCkgb2YgaXRlbXMgdG8gcmV0dXJuLgogKi8KYWJzdHJhY3QgY2xhc3MgRmlsdGVyCnsKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwcml2YXRlICRfZGF0YSA9IFsgJ2xpbWl0Jz0+MTAwMCwgJ29mZnNldCc9PiAwIF07CgogICAgLyoqCiAgICAgKiBDb25zdHJ1Y3RvcgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkaW4gQW4gYXJyYXkgb2YgaW5wdXQgcHJvcGVydGllcy4gIFRoZSBhYnN0cmFjdCBjbGFzcyB1bmRlcnN0YW5kcyB0aGUgbGltaXQsIGFuZCBvZmZzZXQgcHJvb3BlcnR5LiBib3RoIGludGVnZXJzLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX19jb25zdHJ1Y3QoIGFycmF5ICRpbiA9IG51bGwgKQogICAgewogICAgICAgIGlmKCAhaXNfbnVsbCgkaW4pICkgewogICAgICAgICAgICBmb3JlYWNoKCAkaW4gYXMgJGtleSA9PiAkdmFsICkgewogICAgICAgICAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgICAgICAgICAgY2FzZSAnbGltaXQnOgogICAgICAgICAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9IG1heCgxLChpbnQpJHZhbCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdvZmZzZXQnOgogICAgICAgICAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9IG1heCgwLChpbnQpJHZhbCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldCggc3RyaW5nICRrZXkgKQogICAgewogICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICBjYXNlICdsaW1pdCc6CiAgICAgICAgICAgIHJldHVybiAoaW50KSAkdGhpcy0+X2RhdGFbJGtleV07CgogICAgICAgIGNhc2UgJ29mZnNldCc6CiAgICAgICAgICAgIHJldHVybiAoaW50KSAkdGhpcy0+X2RhdGFbJGtleV07CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oIiRrZXkgaXMgbm90IGEgZ2V0dGFibGUgcHJvcGVydHkgb2YgIi5nZXRfY2xhc3MoJHRoaXMpKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3NldCggc3RyaW5nICRrZXksICR2YWwgKQogICAgewogICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oIiRrZXkgaXMgbm90IGEgc2V0dGFibGUgcHJvcGVydHkgb2YgIi5nZXRfY2xhc3MoJHRoaXMpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEEgbWV0aG9kIHRvIGFkanVzdCB0aGUgdmFsdWUgb2YgYSBwcm9wZXJ0eS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRrZXkKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBhZGp1c3Qoc3RyaW5nICRrZXksICR2YWwpCiAgICB7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ2xpbWl0JzoKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gbWF4KDEsbWluKDEwMDAwMCwoaW50KSR2YWwpKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnb2Zmc2V0JzoKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gbWF4KDAsKGludCkkdmFsKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiJGtleSBpcyBub3QgYW4gYWRqdXN0YWJsZSBwcm9wZXJ0eSBvZiAiLmdldF9jbGFzcygkdGhpcykpOwogICAgICAgIH0KICAgIH0KfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.HookRegistrationHandler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDTVNNU1xIb29rTWFuYWdlcjsKCmNsYXNzIEhvb2tSZWdpc3RyYXRpb25IYW5kbGVyIGV4dGVuZHMgU2ltcGxlUmVnaXN0cmF0aW9uSGFuZGxlcgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gcmVnaXN0ZXJfdXNlcihVc2VyICR1c2VyKSA6IFVzZXIKICAgIHsKICAgICAgICBIb29rTWFuYWdlcjo6ZG9faG9vaygnQ0dGRVVSZWdpc3Rlcjo6QmVmb3JlUmVnaXN0ZXInLCBbJ3VzZXInPT4kdXNlcl0pOwogICAgICAgICR1c2VyID0gcGFyZW50OjpyZWdpc3Rlcl91c2VyKCR1c2VyKTsKICAgICAgICBIb29rTWFuYWdlcjo6ZG9faG9vaygnQ0dGRVVSZWdpc3Rlcjo6QWZ0ZXJSZWdpc3RlcicsIFsndXNlcic9PiR1c2VyXSk7CiAgICAgICAgcmV0dXJuICR1c2VyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBwdXNoX3VzZXJfbGl2ZShpbnQgJHVzZXJfaWQsIHN0cmluZyAkY29kZV9zdHIpIDogaW50CiAgICB7CiAgICAgICAgJGZldV91aWQgPSBwYXJlbnQ6OnB1c2hfdXNlcl9saXZlKCR1c2VyX2lkLCAkY29kZV9zdHIpOwogICAgICAgIEhvb2tNYW5hZ2VyOjpkb19ob29rKCdDR0ZFVVJlZ2lzdGVyOjpBZnRlclVzZXJQdXNoZWQnLCBbJ3VzZXInPT4kdXNlciwgJ2ZldV91aWQnPT4kZmV1X3VpZF0pOwogICAgICAgIHJldHVybiAkZmV1X3VpZDsKICAgIH0KCn0gLy8gY2xhc3M=]]></data>
	</file>
	<file>
	  <filename>/lib/class.HookRegistrationManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDTVNNU1xIb29rTWFuYWdlcjsKCmNsYXNzIEhvb2tSZWdpc3RyYXRpb25NYW5hZ2VyIGV4dGVuZHMgUmVnaXN0cmF0aW9uTWFuYWdlcgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gcHVzaF91c2VyX2xpdmUoUmVnRmllbGRTZXQgJGZpZWxkcywgVXNlciAkdXNlcikgOiBpbnQKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAkZmV1X3VpZCA9IHBhcmVudDo6cHVzaF91c2VyX2xpdmUoJGZpZWxkcywgJHVzZXIpOwogICAgICAgICAgICBIb29rTWFuYWdlcjo6ZG9faG9vaygnQ0dGRVVSZWdpc3Rlcjo6QWZ0ZXJVc2VyUHVzaGVkJywgWyAnZmllbGRzJz0+JGZpZWxkcywgJ3VzZXInPT4kdXNlciwgJ2ZldV91aWQnPT4kZmV1X3VpZCBdICk7CiAgICAgICAgICAgIHJldHVybiAkZmV1X3VpZDsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIFxDR0V4dGVuc2lvbnNcRW1haWxcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICBkZWJ1Z190b19sb2coX19NRVRIT0RfXyk7CiAgICAgICAgICAgIGNnZV91dGlsczo6bG9nX2V4Y2VwdGlvbigkZSk7CiAgICAgICAgfQogICAgfQp9IC8vIGNsYXNz]]></data>
	</file>
	<file>
	  <filename>/lib/class.HourlyHookTask.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDR0ZFVVJlZ2lzdGVyOwp1c2UgQ21zUmVndWxhclRhc2s7CnVzZSBjbXNfdXRpbHM7CnVzZSBjbXNfc2l0ZXByZWZzOwp1c2UgQ01TTVNcSG9va01hbmFnZXI7CgpjbGFzcyBIb3VybHlIb29rVGFzayBpbXBsZW1lbnRzIENtc1JlZ3VsYXJUYXNrCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfbmFtZSgpIHsgcmV0dXJuIGdldF9jbGFzcygpOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2Rlc2NyaXB0aW9uKCkge30KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdCgkdGltZSA9ICcnKQogICAgewogICAgICAgIGlmKCAhJHRpbWUgKSAkdGltZSA9IHRpbWUoKTsKICAgICAgICAkbGFzdHJ1biA9IChpbnQpIGNtc19zaXRlcHJlZnM6OmdldChfX0NMQVNTX18pOwogICAgICAgIGlmKCAkdGltZSAtICRsYXN0cnVuID4gMzYwMCApIHJldHVybiB0cnVlOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXhlY3V0ZSgkdGltZSA9ICcnKQogICAgewogICAgICAgIGlmKCAhJHRpbWUgKSAkdGltZSA9IHRpbWUoKTsKICAgICAgICBIb29rTWFuYWdlcjo6ZG9faG9vaygnQ0dGRVVSZWdpc3Rlcjo6X19JbnRlcm5hbEhvdXJseVRhc2snLCAkdGltZSk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG9uX3N1Y2Nlc3MoJHRpbWUgPSAnJykKICAgIHsKICAgICAgICBpZiggISR0aW1lICkgJHRpbWUgPSB0aW1lKCk7CiAgICAgICAgY21zX3NpdGVwcmVmczo6c2V0KF9fQ0xBU1NfXywkdGltZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG9uX2ZhaWx1cmUoJHRpbWUgPSAnJykKICAgIHsKICAgICAgICBpZiggISR0aW1lICkgJHRpbWUgPSB0aW1lKCk7CiAgICB9Cgp9IC8vIGNsYXNz]]></data>
	</file>
	<file>
	  <filename>/lib/class.NormalRegistrationVerifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDR0ZFVVJlZ2lzdGVyOwp1c2UgRnJvbnRFbmRVc2VyczsKdXNlIENNU01TXERhdGFiYXNlXENvbm5lY3Rpb24gYXMgRGF0YWJhc2U7CgoKY2xhc3MgTm9ybWFsUmVnaXN0cmF0aW9uVmVyaWZpZXIgZXh0ZW5kcyBBYnN0cmFjdFZlcmlmaWVyRGVjb3JhdG9yCiAgICBpbXBsZW1lbnRzIFJlZ2lzdHJhdGlvblZlcmlmaWVySW50ZXJmYWNlCnsKICAgIHByaXZhdGUgJG1vZDsKICAgIHByaXZhdGUgJGZldTsKICAgIHByaXZhdGUgJGRiOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChDR0ZFVVJlZ2lzdGVyICRtb2QsIEZyb250RW5kVXNlcnMgJGZldSwgRGF0YWJhc2UgJGRiKQogICAgewogICAgICAgICR0aGlzLT5tb2QgPSAkbW9kOwogICAgICAgICR0aGlzLT5mZXUgPSAkZmV1OwogICAgICAgICR0aGlzLT5kYiA9ICRkYjsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaXNfdXNlcm5hbWVVc2VkKHN0cmluZyAkdXNlcm5hbWUsIGludCAkdWlkID0gbnVsbCkgOiBib29sCiAgICB7CiAgICAgICAgLy8gY2hlY2sgb3VyIGV4aXN0aW5nIGRhdGFiYXNlCiAgICAgICAgaWYoICEkdXNlcm5hbWUgKSB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCB1c2VybmFtZSBwYXNzZWQgdG8gJy5fX01FVEhPRF9fKTsKICAgICAgICAkc3FsID0gJ1NFTEVDVCBpZCBGUk9NICcuJHRoaXMtPm1vZC0+dXNlcnNfdGFibGVfbmFtZSgpLicgV0hFUkUgdXNlcm5hbWUgPSA/JzsKICAgICAgICAkcGFybXMgPSBbICR1c2VybmFtZSBdOwogICAgICAgIGlmICgkdWlkID4gIDApIHsKICAgICAgICAgICAgJHNxbCAuPSAnIEFORCBpZCAhPSA/JzsKICAgICAgICAgICAgJHBhcm1zW10gPSAkdWlkOwogICAgICAgIH0KICAgICAgICAkcmVzID0gJHRoaXMtPmRiLT5HZXRPbmUoJHNxbCwgJHBhcm1zKTsKICAgICAgICBpZiggJHJlcyApIHJldHVybiB0cnVlOwoKICAgICAgICAkdWlkID0gJHRoaXMtPmZldS0+R2V0VXNlcklEKCR1c2VybmFtZSk7CiAgICAgICAgaWYoICR1aWQgPiAwICkgcmV0dXJuIHRydWU7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2YWxpZGF0ZV9wdXJlX3JlZ2lzdHJhdGlvbihSZWdGaWVsZFNldCAkZmllbGRzLCBVc2VyICR1c2VyKQogICAgewogICAgICAgICR1c2VybmFtZSA9ICR1c2VyLT5nZXQoJHVzZXI6OlVTRVJOQU1FX0ZJRUxEKTsKICAgICAgICBpZiggISR1c2VybmFtZSApIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJHRoaXMtPm1vZC0+TGFuZygnZXJyX21pc3NpbmdfdXNlcm5hbWUnKSk7CgogICAgICAgIGlmKCAhJHRoaXMtPmZldS0+SXNWYWxpZFVzZXJuYW1lKCR1c2VybmFtZSkgKSB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCR0aGlzLT5tb2QtPkxhbmcoJ2Vycl9pbnZhbGlkX3VzZXJuYW1lJykpOwogICAgICAgIGlmKCAkdGhpcy0+aXNfdXNlcm5hbWVVc2VkKCR1c2VybmFtZSwgJHVzZXItPmlkKSApIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJHRoaXMtPm1vZC0+TGFuZygnZXJyX3VzZXJuYW1lX2V4aXN0cycpKTsKCiAgICAgICAgLy8gdmFsaWRhdGUgdGhhdCByZXF1aXJlZCBwcm9wZXJ0aWVzIGFyZSBzZXQKICAgICAgICAvLyB2YWxpZGF0ZSB0aGF0IHByb3BlcnR5IHZhbHVlcyBhcmUgdmFsaWQKICAgICAgICAvLyB2YWxpZGF0ZSBhbnkgcHJvcGVydGllcyB0aGF0IG5lZWQgdG8gYmUgdW5pcXVlCiAgICAgICAgZm9yZWFjaCggJGZpZWxkcyBhcyAkZmllbGQgKSB7CiAgICAgICAgICAgICRuYW1lID0gJGZpZWxkLT5uYW1lOwogICAgICAgICAgICAkdmFsID0gJHVzZXItPmdldCgkbmFtZSk7CiAgICAgICAgICAgIGlmKCAkZmllbGQtPnJlcXVpcmVkID09IC0xMDAgKSBjb250aW51ZTsgLy8gbm8gdmFsaWRhdGlvbiBhZ2FpbnN0IGludGVybmFsIGRhdGEgdmFsdWVzLCBpbmRlcGVuZGVudCBvZiB0eXBlLgogICAgICAgICAgICBpZiggJGZpZWxkLT5yZXF1aXJlZCA9PSAyICYmICEkdmFsICkgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcigkdGhpcy0+bW9kLT5MYW5nKCdlcnJfcmVxdWlyZWRfZmllbGQnLCAkZmllbGQtPnByb21wdCkpOwoKICAgICAgICAgICAgc3dpdGNoKCAkZmllbGQtPnR5cGUgKSB7CiAgICAgICAgICAgIGNhc2UgMjogLy8gZW1haWwKICAgICAgICAgICAgICAgIGlmKCAkdmFsICYmICFpc19lbWFpbCgkdmFsKSApIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJHRoaXMtPm1vZC0+TGFuZygnZXJyX2ludmFsaWRfZmllbGQnLCAkZmllbGQtPnByb21wdCkpOwogICAgICAgICAgICAgICAgaWYoICRmaWVsZC0+dW5pcXVlICYmICEkdGhpcy0+ZmV1LT5Jc1VzZXJQcm9wZXJ0eVZhbHVlVW5pcXVlKG51bGwsJG5hbWUsJHZhbCkgKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcigkdGhpcy0+bW9kLT5MYW5nKCdlcnJfbm9udW5pcXVlX2ZpZWxkJywgJGZpZWxkLT5wcm9tcHQsICRmaWVsZC0+dmFsdWUpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDQ6IC8vIGRyb3Bkb3duCiAgICAgICAgICAgIGNhc2UgNzogLy8gcmFkaW9idG5zCiAgICAgICAgICAgICAgICBpZiggJHZhbCAmJiAhYXJyYXlfa2V5X2V4aXN0cygkdmFsLCRmaWVsZC0+b3B0aW9ucykgKSB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCR0aGlzLT5tb2QtPkxhbmcoJ2Vycl9pbnZhbGlkX2ZpZWxkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmllbGQtPnByb21wdCkpOwogICAgICAgICAgICAgICAgaWYoICRmaWVsZC0+dW5pcXVlICYmICEkdGhpcy0+ZmV1LT5Jc1VzZXJQcm9wZXJ0eVZhbHVlVW5pcXVlKG51bGwsICRuYW1lLCR2YWwpICkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJHRoaXMtPm1vZC0+TGFuZygnZXJyX25vbnVuaXF1ZV9maWVsZCcsICRmaWVsZC0+cHJvbXB0LCAkZmllbGQtPnZhbHVlKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA1OiAvLyBtdWx0aXNlbGVjdAogICAgICAgICAgICAgICAgaWYoICR2YWwgKSB7CiAgICAgICAgICAgICAgICAgICAgJGRpZmYgPSBhcnJheV9kaWZmKCR2YWwsJGZpZWxkLT5vcHRpb25zKTsKICAgICAgICAgICAgICAgICAgICBpZiggIWVtcHR5KCRkaWZmKSApIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJHRoaXMtPm1vZC0+TGFuZygnZXJyX2ludmFsaWRfZmllbGQnLCAkZmllbGQtPnByb21wdCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlX3JlZ2lzdHJhdGlvbihSZWdGaWVsZFNldCAkZmllbGRzLCBVc2VyICR1c2VyKQogICAgewogICAgICAgICRwYXNzd29yZCA9ICR1c2VyLT5nZXQoJHVzZXI6OlBBU1NXT1JEX0ZJRUxEKTsKICAgICAgICAkcmVwZWF0ICAgPSAkdXNlci0+Z2V0KCR1c2VyOjpSRVBFQVRfRklFTEQpOwoKICAgICAgICBpZiggISRwYXNzd29yZCApIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJHRoaXMtPm1vZC0+bGFuZygnZXJyX3Bhc3N3b3JkX3JlcXVpcmVkJykpOwogICAgICAgIGlmKCAkcmVwZWF0ICE9ICRwYXNzd29yZCApIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJHRoaXMtPm1vZC0+TGFuZygnZXJyX3Bhc3N3b3JkX21pc21hdGNoJykpOwogICAgICAgIGlmKCAhJHRoaXMtPmZldS0+SXNWYWxpZFBhc3N3b3JkKCRwYXNzd29yZCkgKSB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCR0aGlzLT5tb2QtPkxhbmcoJ2Vycl9pbnZhbGlkX3Bhc3N3b3JkaCcpKTsKCiAgICAgICAgJHRoaXMtPnZhbGlkYXRlX3B1cmVfcmVnaXN0cmF0aW9uKCRmaWVsZHMsICR1c2VyKTsKICAgIH0KfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.RegField.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBjZ2VfYXJyYXk7CgpjbGFzcyBSZWdGaWVsZAp7CiAgICBwcml2YXRlICRfZGF0YSA9IFsKICAgICAgICAnbmFtZSc9Pm51bGwsICdwcm9tcHQnPT5udWxsLCAndHlwZSc9Pm51bGwsICdyZXF1aXJlZCc9PjIsICdvcHRpb25zJz0+bnVsbCwgJ3VuaXF1ZSc9PmZhbHNlLCAnZXh0cmEnPT5udWxsCiAgICAgICAgXTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19nZXQoc3RyaW5nICRrZXkpCiAgICB7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ25hbWUnOgogICAgICAgIGNhc2UgJ3Byb21wdCc6CiAgICAgICAgICAgIHJldHVybiB0cmltKCR0aGlzLT5fZGF0YVska2V5XSk7CiAgICAgICAgY2FzZSAndHlwZSc6CiAgICAgICAgY2FzZSAncmVxdWlyZWQnOgogICAgICAgICAgICByZXR1cm4gKGludCkgJHRoaXMtPl9kYXRhWyRrZXldOwogICAgICAgIGNhc2UgJ3VuaXF1ZSc6CiAgICAgICAgICAgIHJldHVybiAoYm9vbCkgJHRoaXMtPl9kYXRhWyRrZXldOwogICAgICAgIGNhc2UgJ29wdGlvbnMnOgogICAgICAgICAgICByZXR1cm4gJHRoaXMtPl9kYXRhWyRrZXldOwogICAgICAgIGNhc2UgJ2V4dHJhJzoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5fZGF0YVska2V5XTsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCIka2V5IGlzIG5vdCBhIGdldHRhYmxlIHByb3BlcnR5IG9mICIuX19NRVRIT0RfXyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3NldChzdHJpbmcgJGtleSwgJHZhbCkKICAgIHsKICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCIka2V5IGlzIG5vdCBhIHNldHRhYmxlIHByb3BlcnR5IG9mICIuX19NRVRIT0RfXyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tX2FycmF5KCBhcnJheSAkaW4gKSA6IFJlZ0ZpZWxkCiAgICB7CiAgICAgICAgJG9iaiA9IG5ldyBzZWxmOwogICAgICAgIGZvcmVhY2goICRpbiBhcyAka2V5ID0+ICR2YWwgKSB7CiAgICAgICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICAgICAgY2FzZSAnbmFtZSc6CiAgICAgICAgICAgIGNhc2UgJ3Byb21wdCc6CiAgICAgICAgICAgICAgICAkb2JqLT5fZGF0YVska2V5XSA9IHRyaW0oJHZhbCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAndHlwZSc6CiAgICAgICAgICAgIGNhc2UgJ3JlcXVpcmVkJzoKICAgICAgICAgICAgICAgICRvYmotPl9kYXRhWyRrZXldID0gKGludCkgJHZhbDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdvcHRpb25zJzoKICAgICAgICAgICAgICAgIGlmKCBpc19hcnJheSgkdmFsKSAmJiAhZW1wdHkoJHZhbCkgKSB7CiAgICAgICAgICAgICAgICAgICAgJHRtcCA9ICR2YWw7CiAgICAgICAgICAgICAgICAgICAgaWYoIGlzc2V0KCR2YWxbMF0pICYmIGlzX2FycmF5KCR2YWxbMF0pICYmIGlzc2V0KCR2YWxbMF1bJ29wdGlvbl9uYW1lJ10pICkgewogICAgICAgICAgICAgICAgICAgICAgICAkdG1wID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCggJHZhbCBhcyAkcmVjICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRtcFskcmVjWydvcHRpb25fbmFtZSddXSA9ICRyZWNbJ29wdGlvbl90ZXh0J107CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJHZhbCA9ICR0bXA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRvYmotPl9kYXRhWyRrZXldID0gJHZhbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdleHRyYSc6CiAgICAgICAgICAgICAgICBpZiggY2dlX2FycmF5Ojppc19oYXNoKCR2YWwpICkgJG9iai0+X2RhdGFbJGtleV0gPSAkdmFsOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3VuaXF1ZSc6CiAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSBjbXNfdG9fYm9vbCgkdmFsKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyB2YWxpZGF0ZQogICAgICAgIGlmKCAhJG9iai0+bmFtZSApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdFdmVyeSBSZWdGaWVsZCBtdXN0IGhhdmUgYSBuYW1lJyk7CiAgICAgICAgaWYoICEkb2JqLT5wcm9tcHQgKSB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignRXZlcnkgUmVnRmllbGQgbXVzdCBoYXZlIGEgcHJvbXB0Jyk7CiAgICAgICAgaWYoICRvYmotPnR5cGUgIT0gLTEwMCAmJiAkb2JqLT50eXBlIDwgMCAmJiAkb2JqLT50eXBlID4gOCAmJiAkb2JqLT50eXBlICE9IDYgKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGZpZWxkIHR5cGUgJy4kb2JqLT50eXBlKTsKICAgICAgICB9CiAgICAgICAgaWYoICRvYmotPnJlcXVpcmVkICE9IDEgJiYgJG9iai0+cmVxdWlyZWQgIT0gMiApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50KCdJbnZhbGlkIHJlcXVpcmVkIHZhbHVlLiAgbXVzdCBiZSAxIG9yIDInKTsKICAgICAgICBzd2l0Y2goICRvYmotPnR5cGUgKSB7CiAgICAgICAgY2FzZSA0OiAvLyBkcm9wZG93bgogICAgICAgIGNhc2UgNTogLy8gbXVsdGlzZWxlY3QKICAgICAgICBjYXNlIDc6IC8vIHJhZGlvYnRucwogICAgICAgICAgICBpZiggIWlzX2FycmF5KCRvYmotPm9wdGlvbnMpIHx8IGNvdW50KCRvYmotPm9wdGlvbnMpIDwgMiApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50KCdkcm9wZG93bi9yYWRpbyBidXR0b24gZmllbGRzIG11c3QgaGF2ZSBhdCBsZWFzdCAyIG9wdGlvbnMnKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb2JqOwogICAgfQp9IC8vIGNsYXNz]]></data>
	</file>
	<file>
	  <filename>/lib/class.RegFieldSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgpjbGFzcyBSZWdGaWVsZFNldCBleHRlbmRzIFNldAp7CiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoIGFycmF5ICRtYXRjaGVzID0gbnVsbCApCiAgICB7CiAgICAgICAgaWYoIGlzX2FycmF5KCRtYXRjaGVzKSAmJiAhZW1wdHkoJG1hdGNoZXMpICkgewogICAgICAgICAgICBmb3JlYWNoKCAkbWF0Y2hlcyBhcyAkbWF0Y2ggKSB7CiAgICAgICAgICAgICAgICBpZiggISRtYXRjaCBpbnN0YW5jZW9mIFJlZ0ZpZWxkICkgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgZGF0YSBwYXNzZWQgdG8gJy5fX01FVEhPRF9fKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRtYXRjaGVzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzX2ZpZWxkKHN0cmluZyAka2V5KSA6IGJvb2wKICAgIHsKICAgICAgICBmb3JlYWNoKCAkdGhpcyBhcyAkZmllbGQgKSB7CiAgICAgICAgICAgIGlmKCAkZmllbGQtPm5hbWUgPT0gJGtleSApIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9lbWFpbF9maWVsZCgpIDogUmVnRmllbGQKICAgIHsKICAgICAgICBmb3JlYWNoKCAkdGhpcyBhcyAkZmllbGQgKSB7CiAgICAgICAgICAgIGlmKCAkZmllbGQtPnR5cGUgPT0gMiApIHJldHVybiAkZmllbGQ7CiAgICAgICAgfQogICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0NvdWxkIG5vdCBmaW5kIGFuIGVtYWlsIGZpZWxkIG9mIHR5cGUgZW1haWwnKTsKICAgIH0KfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.RegistrationManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDTVNNU1xEYXRhYmFzZVxDb25uZWN0aW9uIGFzIERhdGFiYXNlOwp1c2UgQ0dGRVVSZWdpc3RlcjsKdXNlIEZyb250RW5kVXNlcnM7CnVzZSBjZ2VfcGFyYW07CnVzZSBjZ2VfZW5jcnlwdDsKdXNlIGNnZV91dGlsczsKCmNsYXNzIFJlZ2lzdHJhdGlvbk1hbmFnZXIgZXh0ZW5kcyBSZWdpc3RyYXRpb25NYW5hZ2VyRGVjb3JhdG9yCnsKICAgIGNvbnN0IEVOQ1JZUFRJT05fS0VZID0gJ0VuY3J5cHRpb25LZXknOwoKICAgIHByaXZhdGUgJG1vZDsKICAgIHByaXZhdGUgJGZldTsKICAgIHByaXZhdGUgJGRiOwogICAgcHJpdmF0ZSAkc2V0dGluZ3M7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KENHRkVVUmVnaXN0ZXIgJG1vZCwgRnJvbnRFbmRVc2VycyAkZmV1LCBEYXRhYmFzZSAkZGIsIFNldHRpbmdzICRzZXR0aW5ncykKICAgIHsKICAgICAgICAkdGhpcy0+bW9kID0gJG1vZDsKICAgICAgICAkdGhpcy0+ZmV1ID0gJGZldTsKICAgICAgICAkdGhpcy0+ZGIgPSAkZGI7CiAgICAgICAgJHRoaXMtPnNldHRpbmdzID0gJHNldHRpbmdzOwogICAgICAgIC8vIGRvIG5vdCBjYWxsIHBhcmVudAogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRfZW5jcnlwdGlvbl9rZXkoKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bW9kLT5HZXRQcmVmZXJlbmNlKHNlbGY6OkVOQ1JZUFRJT05fS0VZKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlX25ld191c2VyKFJlZ0ZpZWxkU2V0ICRmaWVsZHMsIGFycmF5ICRpbiA9IG51bGwsIGludCAkZ2lkID0gbnVsbCkgOiBVc2VyCiAgICB7CiAgICAgICAgJHRtcCA9IFtdOwogICAgICAgIGZvcmVhY2goICRmaWVsZHMgYXMgJG5hbWUgPT4gJGZpZWxkICkgewogICAgICAgICAgICAkdG1wWyRuYW1lXSA9ICRpblskbmFtZV0gPz8gbnVsbDsKICAgICAgICB9CiAgICAgICAgaWYoICRnaWQgPiAwICkgJHRtcFsnZ2lkJ10gPSAkZ2lkOwogICAgICAgICR1c2VyID0gbmV3IFVzZXIoJHRtcCk7CiAgICAgICAgcmV0dXJuICR1c2VyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzYXZlX3VzZXIoVXNlciAkdXNlcikgOiBVc2VyCiAgICB7CiAgICAgICAgJHVzZXJuYW1lID0gJHVzZXItPmdldCgkdXNlcjo6VVNFUk5BTUVfRklFTEQpOwogICAgICAgICR1aWQgPSAkdXNlci0+aWQ7CgogICAgICAgICRkYXRhID0ganNvbl9lbmNvZGUoJHVzZXIpOwogICAgICAgICRlbmNyeXB0ZWQgPSBiYXNlNjRfZW5jb2RlKGNnZV9lbmNyeXB0OjplbmNyeXB0KCR0aGlzLT5nZXRfZW5jcnlwdGlvbl9rZXkoKSwgJGRhdGEpKTsKICAgICAgICAkc2lnID0gc2hhMShfX0ZJTEVfXy4kdGhpcy0+Z2V0X2VuY3J5cHRpb25fa2V5KCkuJGVuY3J5cHRlZCk7CgogICAgICAgIGlmKCAkdWlkIDwgMSApIHsKICAgICAgICAgICAgLy8gaXQgaXMgYW4gaW5zZXJ0CiAgICAgICAgICAgICRub3cgPSB0aW1lKCk7CiAgICAgICAgICAgICRzcWwgPSAnSU5TRVJUIElOVE8gJy4kdGhpcy0+bW9kLT51c2Vyc190YWJsZV9uYW1lKCkuJyAodXNlcm5hbWUsIGNyZWF0ZWQsIHNpZywgZGF0YSkgVkFMVUVTICg/LD8sPyw/KSc7CiAgICAgICAgICAgICR0aGlzLT5kYi0+RXhlY3V0ZSgkc3FsLCBbJHVzZXJuYW1lLCAkbm93LCAkc2lnLCAkZW5jcnlwdGVkXSApOwogICAgICAgICAgICAkbmV3X2lkID0gJHRoaXMtPmRiLT5JbnNlcnRfSUQoKTsKICAgICAgICAgICAgLy8gbm90ZSBpZCBhbmQgY3JlYXRlZCBhcmUgbm90IHN0b3JlZCB3aXRoIHRoZSBlbmNyeXB0ZWQgZGF0YS4KICAgICAgICAgICAgJHVzZXIgPSAkdXNlci0+d2l0aCgnaWQnLCRuZXdfaWQpLT53aXRoKCdjcmVhdGVkJywkbm93KTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIC8vIGl0IGlzIGFuIHVwZGF0ZQogICAgICAgICAgICAkc3FsID0gJ1VQREFURSAnLiR0aGlzLT5tb2QtPnVzZXJzX3RhYmxlX25hbWUoKS4nIFNFVCB1c2VybmFtZSA9ID8sIHNpZyA9ID8sIGRhdGEgPSA/IFdIRVJFIGlkID0gPyc7CiAgICAgICAgICAgICR0aGlzLT5kYi0+RXhlY3V0ZSgkc3FsLCBbJHVzZXJuYW1lLCAkc2lnLCAkZW5jcnlwdGVkLCAkdWlkXSApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHVzZXI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGRlbGV0ZV91c2VyX2Z1bGwoIFVzZXIgJHVzZXIgKQogICAgewogICAgICAgIGlmKCAkdXNlci0+aWQgPCAxIHx8ICR1c2VyLT5jcmVhdGVkIDwgMSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0Nhbm5vdCBkZWxldGUgYSB0ZW1wIHVzZXIgd2l0aG91dCBhIHZhbGlkIGlkIG9yIGNyZWF0ZSBkYXRlJyk7CgogICAgICAgIC8vIGRlbGV0ZSB0ZW1wIGNvZGVzCiAgICAgICAgJHNxbCA9ICdERUxFVEUgRlJPTSAnLiR0aGlzLT5tb2QtPmNvZGVzX3RhYmxlX25hbWUoKS4nIFdIRVJFIHVpZCA9ID8nOwogICAgICAgICR0aGlzLT5kYi0+RXhlY3V0ZSgkc3FsLCBbJHVzZXItPmlkXSk7CgogICAgICAgIC8vIGRlbGV0ZSB0aGUgdXNlciByZWNvcmQuCiAgICAgICAgJHNxbCA9ICdERUxFVEUgRlJPTSAnLiR0aGlzLT5tb2QtPnVzZXJzX3RhYmxlX25hbWUoKS4nIFdIRVJFIGlkID0gPyc7CiAgICAgICAgJHRoaXMtPmRiLT5FeGVjdXRlKCRzcWwsIFskdXNlci0+aWRdKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZF91c2VyX2J5X2lkKGludCAkaWQpCiAgICB7CiAgICAgICAgaWYoICRpZCA8IDEgKSB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiaW52YWxpZCBpZCBwYXNzZWQgdG8gIi5fX01FVEhPRF9fKTsKICAgICAgICAkc3FsID0gJ1NFTEVDVCAqIEZST00gJy4kdGhpcy0+bW9kLT51c2Vyc190YWJsZV9uYW1lKCkuJyBXSEVSRSBpZCA9ID8nOwogICAgICAgICRyb3cgPSAkdGhpcy0+ZGItPkdldFJvdygkc3FsLCBbICRpZCBdICk7CiAgICAgICAgaWYoICEkcm93ICkgcmV0dXJuOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmNyZWF0ZV91c2VyX2Zyb21fcm93KCRyb3cpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjcmVhdGVfdXNlcl9mcm9tX3JvdyhhcnJheSAkcm93KQogICAgewogICAgICAgIGlmKCAhJHJvd1snZGF0YSddIHx8ICEkcm93WydzaWcnXSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0ludmFsaWQgZGF0YSBmb3VuZCBpbiB1c2VycyB0YWJsZSBmb3IgdXNlciAnLiRpZCk7CiAgICAgICAgJGNhbGMgPSBzaGExKF9fRklMRV9fLiR0aGlzLT5nZXRfZW5jcnlwdGlvbl9rZXkoKS4kcm93WydkYXRhJ10pOwogICAgICAgIGlmKCAkY2FsYyAhPSAkcm93WydzaWcnXSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0NvdWxkIG5vdCB2ZXJpZnkgc2lnbmF0dXJlIG9mIGRhdGFiYXNlIGRhdGEgZm9yIHVzZXIgJy4kaWQpOwogICAgICAgICRkZWNyeXB0ZWQgPSBjZ2VfZW5jcnlwdDo6ZGVjcnlwdCgkdGhpcy0+Z2V0X2VuY3J5cHRpb25fa2V5KCksIGJhc2U2NF9kZWNvZGUoJHJvd1snZGF0YSddKSk7CiAgICAgICAgaWYoICEkZGVjcnlwdGVkICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ291bGQgbm90IGRlY3J5cHQgcmVnaXN0cmF0aW9uIGRhdGEgZm9yIHVzZXIgJy4kaWQpOwogICAgICAgICRkZWNyeXB0ZWQgPSBqc29uX2RlY29kZSgkZGVjcnlwdGVkLFRSVUUpOwogICAgICAgICRkZWNyeXB0ZWRbJ2lkJ10gPSAkcm93WydpZCddOwogICAgICAgICRkZWNyeXB0ZWRbJ2NyZWF0ZWQnXSA9ICRyb3dbJ2NyZWF0ZWQnXTsKICAgICAgICByZXR1cm4gbmV3IFVzZXIoJGRlY3J5cHRlZCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGxvYWRfdXNlcl9ieV91c2VybmFtZShzdHJpbmcgJHVzZXJuYW1lKQogICAgewogICAgICAgICR1c2VybmFtZSA9IHRyaW0oJHVzZXJuYW1lKTsKICAgICAgICBpZiggISR1c2VybmFtZSApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJpbnZhbGlkIHVzZXJuYW1lIHBhc3NlZCB0byAiLl9fTUVUSE9EX18pOwogICAgICAgICRzcWwgPSAnU0VMRUNUICogRlJPTSAnLiR0aGlzLT5tb2QtPnVzZXJzX3RhYmxlX25hbWUoKS4nIFdIRVJFIHVzZXJuYW1lID0gPyc7CiAgICAgICAgJHJvdyA9ICR0aGlzLT5kYi0+R2V0Um93KCRzcWwsIFsgJHVzZXJuYW1lIF0pOwogICAgICAgIGlmKCAhJHJvdyApIHJldHVybjsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5jcmVhdGVfdXNlcl9mcm9tX3Jvdygkcm93KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNfdXNlcl9leHBpcmVkKFVzZXIgJHVzZXIpCiAgICB7CiAgICAgICAgaWYoICEkdXNlci0+aWQgfHwgISR1c2VyLT5jcmVhdGVkICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ2Fubm90IHRlc3QgaWYgYSB1c2VyIGlzIGV4cGlyZWQgd2l0aG91dCBhIHVpZCBvciBjcmVyYXRlZGF0ZScpOwogICAgICAgIGlmKCAkdGhpcy0+c2V0dGluZ3MtPnVzZXJfZXhwaXJlX2hvdXJzIDwgMSApIHJldHVybiBmYWxzZTsKICAgICAgICBpZiggJHVzZXItPmNyZWF0ZWQgPj0gdGltZSgpIC0gJHRoaXMtPnNldHRpbmdzLT51c2VyX2V4cGlyZV9ob3VycyAqIDM2MDAgKSByZXR1cm4gZmFsc2U7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHB1c2hfdXNlcl9saXZlKFJlZ0ZpZWxkU2V0ICRmaWVsZHMsIFVzZXIgJHVzZXIpIDogaW50CiAgICB7CiAgICAgICAgaWYoICEkdXNlci0+aWQgfHwgISR1c2VyLT5jcmVhdGVkICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ2Fubm90IHB1c2ggdXNlciBsaXZlIHdpdGhvdXQgYSB1aWQgb3IgY3JlcmF0ZWRhdGUnKTsKICAgICAgICBpZiggJHRoaXMtPmlzX3VzZXJfZXhwaXJlZCgkdXNlcikgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDYW5ub3QgcHVzaCBleHBpcmVkIHVzZXIgbGl2ZScpOwogICAgICAgIGlmKCAhJHVzZXItPnBhc3N3b3JkICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQSB1c2VyIG11c3QgaGF2ZSBhIHBhc3N3b3JkIHRvIHB1c2ggbGl2ZScpOwogICAgICAgIGlmKCAkdXNlci0+Z2lkIDwgMSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ05vIGdyb3VwIGFzc29jaWF0ZWQgd2l0aCB0ZW1wIHVzZXInKTsKCiAgICAgICAgJGZtdCA9ICIrJWQgbW9udGhzIjsKICAgICAgICAkZXhwaXJlcyA9IHN0cnRvdGltZShzcHJpbnRmKCcrJWQgbW9udGhzJyxtYXgoMSwkdGhpcy0+c2V0dGluZ3MtPmV4cGlyZWFnZV9tb250aHMpKSk7CiAgICAgICAgaWYoICRleHBpcmVzID09IDAgKSAkZXhwaXJlcyA9IFBIUF9JTlRfTUFYOwoKICAgICAgICAkcHJvcHMgPSBudWxsOwogICAgICAgIGZvcmVhY2goJGZpZWxkcyBhcyAkZmllbGQpIHsKICAgICAgICAgICAgaWYoICRmaWVsZC0+bmFtZSA9PSBVc2VyOjpVU0VSTkFNRV9GSUVMRCApIGNvbnRpbnVlOwogICAgICAgICAgICBpZiggJGZpZWxkLT5uYW1lID09IFVzZXI6OlBBU1NXT1JEX0ZJRUxEICkgY29udGludWU7CiAgICAgICAgICAgIGlmKCAkZmllbGQtPm5hbWUgPT0gVXNlcjo6UkVQRUFUX0ZJRUxEICkgY29udGludWU7CiAgICAgICAgICAgICRwcm9wc1skZmllbGQtPm5hbWVdID0gJHVzZXItPmdldCgkZmllbGQtPm5hbWUpOwogICAgICAgIH0KCiAgICAgICAgJGZldV91aWQgPSBudWxsOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRyZXMgPSAkdGhpcy0+ZmV1LT5BZGRVc2VyKCR1c2VyLT51c2VybmFtZSwgJHVzZXItPnBhc3N3b3JkLCAkZXhwaXJlcywgZmFsc2UsICR1c2VyLT5jcmVhdGVkKTsKICAgICAgICAgICAgaWYoICFpc19hcnJheSgkcmVzKSB8fCAhaXNzZXQoJHJlc1swXSkgfHwgISRyZXNbMF0gKSB7CiAgICAgICAgICAgICAgICAkbXNnID0gJHJlc1sxXSA/PyBudWxsOwogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignUHJvYmxlbSBjcmVhdGluZyB1c2VyOiAnLiRtc2cpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRmZXVfdWlkID0gKGludCkgJHJlc1sxXTsKCiAgICAgICAgICAgIC8vIGFkZCBoaW0gdG8gaGlzIGdyb3VwCiAgICAgICAgICAgICRyZXMgPSAkdGhpcy0+ZmV1LT5Bc3NpZ25Vc2VyVG9Hcm91cCgkZmV1X3VpZCwgJHVzZXItPmdpZCk7CiAgICAgICAgICAgIGlmKCAhJHJlcyApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ1Byb2JsZW0gYXNzaWduaW5nIHVzZXIgdG8gZ3JvdXAnKTsKCiAgICAgICAgICAgIC8vIG5vdyBhZGQgdGhlIHVzZXIgcHJvcGVydGllcwogICAgICAgICAgICAkcmVzID0gJHRoaXMtPmZldS0+U2V0VXNlclByb3BlcnRpZXMoJGZldV91aWQsICRwcm9wcyk7CiAgICAgICAgICAgIGlmKCAhJHJlcyApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ1Byb2JsZW0gc2V0dGluZyB1c2VyIHByb3BlcnRpZXMnKTsKICAgICAgICAgICAgcmV0dXJuICRmZXVfdWlkOwogICAgICAgIH0KICAgICAgICBjYXRjaCggXExvZ2ljRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICBpZiggJGZldV91aWQgPiAwICkgJHRoaXMtPmZldS0+RGVsZXRlVXNlckZ1bGwoJGZldV91aWQpOwogICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICB9CiAgICB9CgogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF9ncm91cF9wcm9wZXJ0aWVzKGludCAkZ2lkKSA6IGFycmF5CiAgICB7CiAgICAgICAgaWYoICRnaWQgPCAxICkgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ2ludmFsaWQgZ2lkIHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwogICAgICAgICRkZWZucyA9ICR0aGlzLT5mZXUtPkdldFByb3BlcnR5RGVmbnMoKTsKICAgICAgICBpZiggIWNvdW50KCRkZWZucykgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdObyBwcm9wZXJ0eSBkZWZpbml0aW9ucyBmb3VuZCcpOwogICAgICAgIGZvcmVhY2goICRkZWZucyBhcyAmJGRlZm4gKSB7CiAgICAgICAgICAgIC8vIHRvZG86IGlmIGl0IGlzIGEgc2VsZWN0IGZpZWxkLCBnZXQgdGhlIG9wdGlvbnMKICAgICAgICAgICAgJGRlZm5bJ29wdGlvbnMnXSA9ICR0aGlzLT5mZXUtPkdldFNlbGVjdE9wdGlvbnMoJGRlZm5bJ25hbWUnXSwyKTsKICAgICAgICB9CiAgICAgICAgJHJlbG5zID0gJHRoaXMtPmZldS0+R2V0R3JvdXBQcm9wZXJ0eVJlbGF0aW9ucygkZ2lkKTsKICAgICAgICBpZiggISRyZWxucyApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ05vIHByb3BlcnRpZXMgYXNzaWVkIHRvIHRoZSBncm91cCAnLiRnaWQpOwoKICAgICAgICAkb3V0ID0gW107CiAgICAgICAgZm9yZWFjaCggJHJlbG5zIGFzICRyZWxuICkgewogICAgICAgICAgICAkbmFtZSA9ICRyZWxuWyduYW1lJ107CiAgICAgICAgICAgIGlmKCAhaXNzZXQoJGRlZm5zWyRuYW1lXSkgKSBjb250aW51ZTsKICAgICAgICAgICAgaWYoICRkZWZuc1skbmFtZV1bJ3R5cGUnXSA9PSA2IHx8ICRkZWZuc1skbmFtZV1bJ3R5cGUnXSA9PSA5ICkgY29udGludWU7IC8vIGltYWdlCiAgICAgICAgICAgIGlmKCAkcmVsblsncmVxdWlyZWQnXSAhPSAxICYmICRyZWxuWydyZXF1aXJlZCddICE9IDIpIGNvbnRpbnVlOwogICAgICAgICAgICAkb3V0WyRuYW1lXSA9IGFycmF5X21lcmdlKCAkZGVmbnNbJG5hbWVdLCAkcmVsbiApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3JlZ2lzdHJhdGlvbl9maWVsZHMoaW50ICRnaWQpIDogUmVnRmllbGRTZXQKICAgIHsKICAgICAgICAkdXNlcm5hbWVfdHlwZSA9ICR0aGlzLT5mZXUtPkdldFVzZXJuYW1lRmllbGRUeXBlKCk7CiAgICAgICAgJG91dCA9IG51bGw7CiAgICAgICAgJGFyciA9IFsKICAgICAgICAgICAgLy8gdXNlcm5hbWUgaXMgYSB0ZXh0IGZpZWxkCiAgICAgICAgICAgICduYW1lJz0+IFVzZXI6OlVTRVJOQU1FX0ZJRUxELAogICAgICAgICAgICAncHJvbXB0Jz0+KCR1c2VybmFtZV90eXBlID09IDIpID8gJHRoaXMtPmZldS0+TGFuZygncHJvbXB0X2VtYWlsJykgOiAkdGhpcy0+ZmV1LT5MYW5nKCdwcm9tcHRfdXNlcm5hbWUnKSwKICAgICAgICAgICAgJ3R5cGUnPT4kdXNlcm5hbWVfdHlwZSwKICAgICAgICAgICAgJ3JlcXVpcmVkJz0+MiwKICAgICAgICAgICAgJ29wdGlvbnMnPT5udWxsLAogICAgICAgICAgICBdOwogICAgICAgICRvdXRbJ3VzZXJuYW1lJ10gPSBSZWdGaWVsZDo6ZnJvbV9hcnJheSgkYXJyKTsKICAgICAgICAkYXJyID0gWwogICAgICAgICAgICAvLyBwYXNzd29yZAogICAgICAgICAgICAnbmFtZSc9PiBVc2VyOjpQQVNTV09SRF9GSUVMRCwKICAgICAgICAgICAgJ3Byb21wdCc9PiR0aGlzLT5mZXUtPkxhbmcoJ3Byb21wdF9wYXNzd29yZCcpLCAndHlwZSc9Pi0xMDAsCiAgICAgICAgICAgICdyZXF1aXJlZCc9PjIsCiAgICAgICAgICAgICdvcHRpb25zJz0+bnVsbCwKICAgICAgICAgICAgXTsKICAgICAgICAkb3V0WydwYXNzd29yZCddID0gUmVnRmllbGQ6OmZyb21fYXJyYXkoJGFycik7CiAgICAgICAgJGFyciA9IFsKICAgICAgICAgICAgLy8gcmVwZWF0IHBhc3N3b3JkCiAgICAgICAgICAgICduYW1lJz0+IFVzZXI6OlJFUEVBVF9GSUVMRCwKICAgICAgICAgICAgJ3Byb21wdCc9PiR0aGlzLT5mZXUtPkxhbmcoJ3JlcGVhdHBhc3N3b3JkJyksICd0eXBlJz0+LTEwMCwKICAgICAgICAgICAgJ3JlcXVpcmVkJz0+MiwKICAgICAgICAgICAgJ29wdGlvbnMnPT5udWxsLAogICAgICAgICAgICBdOwogICAgICAgICRvdXRbJ3JlcGVhdHBhc3N3b3JkJ10gPSBSZWdGaWVsZDo6ZnJvbV9hcnJheSgkYXJyKTsKICAgICAgICAkcHJvcHMgPSAkdGhpcy0+Z2V0X2dyb3VwX3Byb3BlcnRpZXMoJGdpZCk7CiAgICAgICAgZm9yZWFjaCggJHByb3BzIGFzICRuYW1lID0+ICRwcm9wICkgewogICAgICAgICAgICAkb3V0WyRuYW1lXSA9IFJlZ0ZpZWxkOjpmcm9tX2FycmF5KCRwcm9wKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5ldyBSZWdGaWVsZFNldCgkb3V0KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZmlsbF9mcm9tX2RhdGEoUmVnRmllbGRTZXQgJGZpZWxkc2V0LCBVc2VyICR1c2VyLCBhcnJheSAkZm9ybWRhdGEpIDogVXNlcgogICAgewogICAgICAgIGZvcmVhY2goICRmaWVsZHNldCBhcyAkZmllbGQgKSB7CiAgICAgICAgICAgIHN3aXRjaCggJGZpZWxkLT50eXBlICkgewogICAgICAgICAgICBjYXNlIC0xMDA6IC8vIHBhc3N3b3JkCiAgICAgICAgICAgIGNhc2UgMDogICAgLy8gdGV4dAogICAgICAgICAgICBjYXNlIDE6ICAgIC8vIGNoZWNrYm94CiAgICAgICAgICAgIGNhc2UgMjogICAgLy8gZW1haWwKICAgICAgICAgICAgY2FzZSAxMDogICAgLy8gdGVsCiAgICAgICAgICAgICAgICAkdXNlciA9ICR1c2VyLT53aXRoKCRmaWVsZC0+bmFtZSwgY21zX2h0bWxfZW50aXR5X2RlY29kZShjZ2VfcGFyYW06OmdldF9zdHJpbmcoJGZvcm1kYXRhLCAkZmllbGQtPm5hbWUpKSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAzOiAgICAvLyB0ZXh0YXJlYQogICAgICAgICAgICAgICAgJHVzZXIgPSAkdXNlci0+d2l0aCgkZmllbGQtPm5hbWUsIGNtc19odG1sX2VudGl0eV9kZWNvZGUoY2dlX3BhcmFtOjpnZXRfaHRtbCgkZm9ybWRhdGEsICRmaWVsZC0+bmFtZSkpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDQ6ICAgIC8vIGRyb3Bkb3duCiAgICAgICAgICAgIGNhc2UgNzogICAgLy8gcmFkaW9idG5zCiAgICAgICAgICAgICAgICAkdXNlciA9ICR1c2VyLT53aXRoKCRmaWVsZC0+bmFtZSwgY21zX2h0bWxfZW50aXR5X2RlY29kZShjZ2VfcGFyYW06OmdldF9zdHJpbmcoJGZvcm1kYXRhLCAkZmllbGQtPm5hbWUpKSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA1OiAgICAvLyBtdWx0aXNlbGVjdAogICAgICAgICAgICBjYXNlIDg6ICAgIC8vIGRhdGUKICAgICAgICAgICAgICAgIGlmKCBjZ2VfcGFyYW06OmV4aXN0cygkZm9ybWRhdGEsICRmaWVsZC0+bmFtZS4nTW9udGgnKSApIHsKICAgICAgICAgICAgICAgICAgICAkdXNlciA9ICR1c2VyLT53aXRoKGNnZV9wYXJhbTo6Z2V0X3NlcGFyYXRlZF9kYXRlKCRmb3JtZGF0YSwgJGZpZWxkLT5uYW1lKSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICR1c2VyID0gJHVzZXItPndpdGgoc3RydG90aW1lKGNnZV9wYXJhbTo6Z2V0X2RhdGUoJGZvcm1kYXRhLCAkZmllbGQtPm5hbWUpKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJHVzZXI7CiAgICB9CgogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCgogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZV9yZWdpc3RyYXRpb25fY29kZShVc2VyICR1c2VyKSA6IFZlcmlmaWNhdGlvbkRhdGEKICAgIHsKICAgICAgICAkZXhwaXJlcyA9ICgkdGhpcy0+c2V0dGluZ3MtPnZlcmlmeWNvZGVfZXhwaXJlX2hvdXJzIDwgMSkgPyAwIDogJHRoaXMtPnNldHRpbmdzLT52ZXJpZnljb2RlX2V4cGlyZV9ob3VycyAqIDM2MDAgKyB0aW1lKCk7CiAgICAgICAgJGFyciA9IFsgJ3VpZCc9PiR1c2VyLT5nZXQoJ2lkJyksICdleHBpcmVzJz0+JGV4cGlyZXMsICd2ZXJpZnlfY29kZSc9PmNnZV91dGlsczo6Y3JlYXRlX2d1aWQoKSBdOwogICAgICAgIHJldHVybiBuZXcgVmVyaWZpY2F0aW9uRGF0YSgkYXJyKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZF92ZXJpZmljYXRpb25fY29kZShzdHJpbmcgJGNvZGUpCiAgICB7CiAgICAgICAgJGNvZGUgPSB0cmltKCRjb2RlKTsKICAgICAgICBpZiggISRjb2RlICkgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgZGF0YSBwYXNzZWQgdG8gJy5fX01FVEhPRF9fKTsKCiAgICAgICAgJHNxbCA9ICdTRUxFQ1QgKiBGUk9tICcuJHRoaXMtPm1vZC0+Y29kZXNfdGFibGVfbmFtZSgpLicgV0hFUkUgdmVyaWZ5X2NvZGUgPSA/JzsKICAgICAgICAkcm93ID0gJHRoaXMtPmRiLT5HZXRSb3coJHNxbCwgWyRjb2RlXSk7CiAgICAgICAgaWYoICEkcm93ICkgcmV0dXJuOwogICAgICAgIHJldHVybiBuZXcgVmVyaWZpY2F0aW9uRGF0YSgkcm93KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2F2ZV92ZXJpZmljYXRpb25fY29kZShWZXJpZmljYXRpb25EYXRhICRjb2RlKQogICAgewogICAgICAgIGlmKCAkY29kZS0+dWlkIDwgMSB8fCAkY29kZS0+ZXhwaXJlcyA8IDAgfHwgISRjb2RlLT52ZXJpZnlfY29kZSApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgdmVyaWZpY2F0aW9uIGNvZGUgZGF0YSBwYXNzZWQgdG8gIi5fX01FVEhPRF9fKTsKICAgICAgICB9CgogICAgICAgICRzcWwgPSAnSU5TRVJUIElOVE8gJy4kdGhpcy0+bW9kLT5jb2Rlc190YWJsZV9uYW1lKCkuJyAodWlkLCB2ZXJpZnlfY29kZSwgZXhwaXJlcykgVkFMVUVTICg/LD8sPyknOwogICAgICAgICR0aGlzLT5kYi0+RXhlY3V0ZSgkc3FsLCBbJGNvZGUtPnVpZCwgJGNvZGUtPnZlcmlmeV9jb2RlLCAkY29kZS0+ZXhwaXJlc10pOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBkZWxldGVfZXhwaXJlZF9jb2RlcygpCiAgICB7CiAgICAgICAgJHNxbCA9ICdERUxFVEUgRlJPTSAnLiR0aGlzLT5tb2QtPmNvZGVzX3RhYmxlX25hbWUoKS4nIFdIRVJFIGV4cGlyZXMgPCA/JzsKICAgICAgICAkdGhpcy0+ZGItPkV4ZWN1dGUoJHNxbCwgW3RpbWUoKSAtIDMwMF0gKTsKICAgIH0KCiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlX3VzZXJfZmlsdGVyKCBhcnJheSAkcGFybXMgPSBudWxsICkgOiBVc2VyRmlsdGVyCiAgICB7CiAgICAgICAgaWYoIGlzX251bGwoJHBhcm1zKSApICRwYXJtcyA9IFtdOwogICAgICAgIHJldHVybiBuZXcgVXNlckZpbHRlcigkcGFybXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkX3VzZXJzX2J5X2ZpbHRlcihVc2VyRmlsdGVyICRmaWx0ZXIpIDogVXNlclNldAogICAgewogICAgICAgICRzcWwgPSAnU0VMRUNUIFNRTF9DQUxDX0ZPVU5EX1JPV1MgKiBGUk9NICcuJHRoaXMtPm1vZC0+dXNlcnNfdGFibGVfbmFtZSgpOwogICAgICAgICR3aGVyZSA9ICRwYXJtcyA9IG51bGw7CgogICAgICAgIGlmKCAkZmlsdGVyLT51c2VybmFtZV9wYXR0ZXJuICkgewogICAgICAgICAgICAkd2hlcmVbXSA9ICd1c2VybmFtZSBMSUtFID8nOwogICAgICAgICAgICAkcGFybXNbXSA9ICR0aGlzLT53aWxkY2FyZCgkZmlsdGVyLT51c2VybmFtZV9wYXR0ZXJuKTsKICAgICAgICB9CiAgICAgICAgaWYoICRmaWx0ZXItPmNyZWF0ZWRfYmVmb3JlID4gMCApIHsKICAgICAgICAgICAgJHdoZXJlW10gPSAnY3JlYXRlZCA8ID8nOwogICAgICAgICAgICAkcGFybXNbXSA9ICRmaWx0ZXItPmNyZWF0ZWRfYmVmb3JlOwogICAgICAgIH0KICAgICAgICBpZiggJGZpbHRlci0+Y3JlYXRlZF9hZnRlciA+IDAgKSB7CiAgICAgICAgICAgICR3aGVyZVtdID0gJ2NyZWF0ZWQgPiA/JzsKICAgICAgICAgICAgJHBhcm1zW10gPSAkZmlsdGVyLT5jcmVhdGVkX2FmdGVyOwogICAgICAgIH0KICAgICAgICBpZiggJGZpbHRlci0+ZXhwaXJlZCAmJiAkdGhpcy0+c2V0dGluZ3MtPnVzZXJfZXhwaXJlX2hvdXJzID4gMCApIHsKICAgICAgICAgICAgJHdoZXJlW10gPSAnY3JlYXRlZCA8ID8nOwogICAgICAgICAgICAkcGFybXNbXSA9IHRpbWUoKSAtICR0aGlzLT5zZXR0aW5ncy0+dXNlcl9leHBpcmVfaG91cnMgKiAzNjAwOwogICAgICAgIH0KCiAgICAgICAgaWYoICFlbXB0eSgkd2hlcmUpICkgJHNxbCAuPSAnIFdIRVJFICcuaW1wbG9kZSgnIEFORCAnLCR3aGVyZSk7CgogICAgICAgICRycyA9ICR0aGlzLT5kYi0+U2VsZWN0TGltaXQoJHNxbCwgJGZpbHRlci0+bGltaXQsICRmaWx0ZXItPm9mZnNldCwgJHBhcm1zKTsKICAgICAgICAkZm91bmRfcm93cyA9ICR0aGlzLT5kYi0+R2V0T25lKCdTRUxFQ1QgRk9VTkRfUk9XUygpJyk7CgogICAgICAgICRtYXRjaGVzID0gbnVsbDsKICAgICAgICB3aGlsZSggJHJzICYmICEkcnMtPkVPRigpICkgewogICAgICAgICAgICAkbWF0Y2hlc1tdID0gJHRoaXMtPmNyZWF0ZV91c2VyX2Zyb21fcm93KCRycy0+ZmllbGRzKTsKICAgICAgICAgICAgJHJzLT5Nb3ZlTmV4dCgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBVc2VyU2V0KCRmaWx0ZXIsICRmb3VuZF9yb3dzLCAkbWF0Y2hlcyk7CiAgICB9Cgp9IC8vIGNsYXNzCg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.RegistrationManagerDecorator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgphYnN0cmFjdCBjbGFzcyBSZWdpc3RyYXRpb25NYW5hZ2VyRGVjb3JhdG9yCnsKICAgIHByb3RlY3RlZCAkcGFyZW50OwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChSZWdpc3RyYXRpb25NYW5hZ2VyRGVjb3JhdG9yICRwYXJlbnQgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5wYXJlbnQgPSAkcGFyZW50OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NhbGwoc3RyaW5nICRtZXRob2QsICRhcmdzKQogICAgewogICAgICAgIGlmKCAhJHRoaXMtPnBhcmVudCApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbihnZXRfY2xhc3MoJHRoaXMpLicgZG9lcyBub3QgaGF2ZSBhIG1ldGhvZCBlbnRpdGxlZCAnLiRtZXRob2QpOwogICAgICAgIH0KCXJldHVybiBjYWxsX3VzZXJfZnVuY19hcnJheSggWyAkdGhpcy0+cGFyZW50LCAkbWV0aG9kIF0sICRhcmdzICk7CiAgICB9Cn0gLy8gY2xhc3MK]]></data>
	</file>
	<file>
	  <filename>/lib/class.RemindUsersTask.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDR0ZFVVJlZ2lzdGVyOwp1c2UgY21zX3V0aWxzOwoKaW5jbHVkZV9vbmNlKF9fRElSX18uJy9pbnRlcmZhY2UuVGFza0ludGVyZmFjZS5waHAnICk7IC8vIGdyb3NzLgpjbGFzcyBSZW1pbmRVc2Vyc1Rhc2sgaW1wbGVtZW50cyBIb3VybHlUYXNrCnsKICAgIGNvbnN0IExBU1RSVU5fUFJFRiA9ICdSZW1pbmRVc2Vyc1Rhc2tfbGFzdHJ1bic7CgogICAgcHJpdmF0ZSAkbW9kOwogICAgcHJpdmF0ZSAkcmVnbWdyOwogICAgcHJpdmF0ZSAkc2V0dGluZ3M7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KENHRkVVUmVnaXN0ZXIgJG1vZCwgUmVnaXN0cmF0aW9uTWFuYWdlckRlY29yYXRvciAkcmVnbWdyLCBTZXR0aW5ncyAkc2V0dGluZ3MpCiAgICB7CiAgICAgICAgJHRoaXMtPm1vZCA9ICRtb2Q7CiAgICAgICAgJHRoaXMtPnJlZ21nciA9ICRyZWdtZ3I7CiAgICAgICAgJHRoaXMtPnNldHRpbmdzID0gJHNldHRpbmdzOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRfZW1haWwoUmVnRmllbGRTZXQgJHNldCwgVXNlciAkdXNlcikKICAgIHsKICAgICAgICAvLyB0aGlzIHV0aWxpdHkgbWV0aG9kIHNob3VsZCBwcm9sbHkgYmUgaW4gdGhlIFJlZ2lzdHJhdGlvbk1hbmFnZXIKICAgICAgICAkZW1haWwgPSBudWxsOwogICAgICAgIGlmKCAkdGhpcy0+c2V0dGluZ3MtPnVzZXJuYW1lX2lzX2VtYWlsICkgewogICAgICAgICAgICByZXR1cm4gJHVzZXItPmdldCgkdXNlcjo6VVNFUk5BTUVfRklFTEQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZvcmVhY2goICRzZXQgYXMgJGZpZWxkICkgewogICAgICAgICAgICAgICAgaWYoICRmaWVsZC0+dHlwZSA9PSBGcm9udGVuZFVzZXJzOjpQUk9QVFlQRV9FTUFJTCApIHsKICAgICAgICAgICAgICAgICAgICAkcHJvcG5hbWUgPSAkZmllbGQtPm5hbWU7CiAgICAgICAgICAgICAgICAgICAgJGVtYWlsID0gJHVzZXItPmdldCgkcHJvcG5hbWUpOwogICAgICAgICAgICAgICAgICAgIGlmKCAkZW1haWwgKSByZXR1cm4gJGVtYWlsOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZW5kX3JlbWluZGVyX2VtYWlsKFVzZXIgJHVzZXIpCiAgICB7CiAgICAgICAgJGZpZWxkcyA9ICR0aGlzLT5yZWdtZ3ItPmdldF9yZWdpc3RyYXRpb25fZmllbGRzKCR1c2VyLT5naWQpOwogICAgICAgICRlbWFpbCA9ICR0aGlzLT5nZXRfZW1haWwoJGZpZWxkcywgJHVzZXIpOwogICAgICAgIGlmKCAhJGVtYWlsICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ291bGQgbm90IGZpbmQgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIHRvIHNlbmQgdG8nKTsKCiAgICAgICAgJGRlc3RwYWdlID0gJHRoaXMtPm1vZC0+Y21zLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5HZXREZWZhdWx0Q29udGVudCgpOwogICAgICAgIGlmKCAkdGhpcy0+c2V0dGluZ3MtPnJlcGVhdGNvZGVfcGFnZSApIHsKICAgICAgICAgICAgJGRlc3RwYWdlID0gJHRoaXMtPm1vZC0+cmVzb2x2ZV9hbGlhc19vcl9pZCggJHRoaXMtPnNldHRpbmdzLT5yZXBlYXRjb2RlX3BhZ2UsICRkZXN0cGFnZSApOwogICAgICAgIH0KCiAgICAgICAgJGVtbCA9ICR0aGlzLT5tb2QtPmdldF9lbWFpbF9zdG9yYWdlKCktPmxvYWQoJ29uX3JlbWluZC5lbWwnKTsKICAgICAgICBpZiggISRlbWwgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDb3VsZCBub3QgZmluZCB0aGUgb25fcmVnaXN0ZXIuZW1sIGVtYWlsIHRlbXBsYXRlJyk7CiAgICAgICAgJGVtbCA9ICRlbWwtPmFkZF9hZGRyZXNzKCRlbWFpbCkKICAgICAgICAgICAgLT5hZGRfZGF0YSgnZmllbGRzJywgJGZpZWxkcykKICAgICAgICAgICAgLT5hZGRfZGF0YSgncmVwZWF0Y29kZV9wYWdlJywgJGRlc3RwYWdlKQogICAgICAgICAgICAtPmFkZF9kYXRhKCd1c2VyJywgJHVzZXIpOwogICAgICAgICR0aGlzLT5tb2QtPmNyZWF0ZV9uZXdfbWFpbHByb2Nlc3NvciggJGVtbCApLT5zZW5kKCk7CiAgICB9CgogICAgLy8gcHJvYmFibHkgc2hvdWxkIGJlIGEgZGFpbHkgdGFzawogICAgcHVibGljIGZ1bmN0aW9uIGhvdXJseSgpCiAgICB7CiAgICAgICAgLy8gZ2V0IHRoZSBsYXN0IHJ1bgogICAgICAgIGRlYnVnX3RvX2xvZyhfX01FVEhPRF9fKTsKCiAgICAgICAgaWYoICgkcmVtaW5kX2hvdXJzX2ludGVydmFsID0gJHRoaXMtPnNldHRpbmdzLT5yZW1pbmR1c2Vyc19hZnRlcl9ob3VycykgPCAxICkgcmV0dXJuOwogICAgICAgICRub3cgPSB0aW1lKCk7CiAgICAgICAgJGxhc3RydW4gPSAoaW50KSAkdGhpcy0+bW9kLT5HZXRQcmVmZXJlbmNlKHNlbGY6OkxBU1RSVU5fUFJFRik7CiAgICAgICAgJHRoaXMtPm1vZC0+U2V0UHJlZmVyZW5jZShzZWxmOjpMQVNUUlVOX1BSRUYsICRub3cpOwoKICAgICAgICAkbWF4X2NyZWF0ZWQgPSBtYXgoJGxhc3RydW4sICRub3cgLSAkcmVtaW5kX2hvdXJzX2ludGVydmFsKTsKICAgICAgICAkZmlsdGVyID0gJHRoaXMtPnJlZ21nci0+Y3JlYXRlX3VzZXJfZmlsdGVyKCBbJ2NyZWF0ZWRfYmVmb3JlJz0+JG1heF9jcmVhdGVkIF0gKTsKICAgICAgICAkdXNlcnMgPSAkdGhpcy0+cmVnbWdyLT5sb2FkX3VzZXJzX2J5X2ZpbHRlcigkZmlsdGVyKTsKICAgICAgICBmb3JlYWNoKCAkdXNlcnMgYXMgJHVzZXIgKSB7CiAgICAgICAgICAgIGlmKCAoJGhycyA9ICR0aGlzLT5zZXR0aW5ncy0+dXNlcl9leHBpcmVfaG91cnMpID4gMCAmJiAkdXNlci0+Y3JlYXRlZCA+PSAkbm93IC0gJGhycyAqIDM2MDAgKSB7CiAgICAgICAgICAgICAgICAvLyBub3QgZXhwaXJlZAogICAgICAgICAgICAgICAgJHRoaXMtPnNlbmRfcmVtaW5kZXJfZW1haWwoJHVzZXIpOwogICAgICAgICAgICAgICAgYXVkaXQoJHVzZXItPmlkLCR0aGlzLT5tb2QtPkdldE5hbWUoKSwnU2VudCByZW1pbmRlciBlbWFpbCB0byAnLiR1c2VyLT51c2VybmFtZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0gLy8gY2xhc3M=]]></data>
	</file>
	<file>
	  <filename>/lib/class.Settings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBGcm9udEVuZFVzZXJzOwp1c2UgY2dlX3BhcmFtOwoKY2xhc3MgU2V0dGluZ3MKewogICAgcHJpdmF0ZSAkX2RhdGEgPSBbCiAgICAgICAgJ3VzZXJuYW1lX3doaXRlbGlzdCc9Pm51bGwsICd1c2VybmFtZV9ibGFja2xpc3QnPT5udWxsLCAnbG9naW5fYWZ0ZXJfdmVyaWZ5Jz0+ZmFsc2UsCiAgICAgICAgJ3ZlcmlmeWNvZGVfZXhwaXJlX2hvdXJzJyA9PiAwLCAndXNlcm5hbWVfaXNfZW1haWwnPT5udWxsLCAndXNlcl9leHBpcmVfaG91cnMnID0+IDAsCiAgICAgICAgJ2V4cGlyZWFnZV9tb250aHMnID0+IDAsICdkaXNhYmxlX3JlcGVhdGNvZGUnPT5udWxsLAogICAgICAgICdvbnJlZ2lzdGVyX25vdGlmeV9hZG1pbmdyb3VwJz0+bnVsbCwgJ25vcHVzaF9ub3RpZnlfYWRtaW5ncm91cCc9Pm51bGwsCiAgICAgICAgJ3VzZV9idWlsdGluX25vdGlmaWNhdGlvbnMnPT5mYWxzZSwKICAgICAgICBdOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggJG9wdHMgKQogICAgewogICAgICAgIGlmKCAhaXNfYXJyYXkoJG9wdHMpICYmICEgJG9wdHMgaW5zdGFuY2VvZiBcY21zX2NvbmZpZyApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGlucHV0IHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwoKICAgICAgICAkdGhpcy0+X2RhdGFbJ2xvZ2luX2FmdGVyX3ZlcmlmeSddID0gY2dlX3BhcmFtOjpnZXRfYm9vbCgkb3B0cywnY2dmcl9sb2dpbl9hZnRlcl92ZXJpZnknLGZhbHNlKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ3VzZV9idWlsdGluX25vdGlmaWNhdGlvbnMnXSA9IGNnZV9wYXJhbTo6Z2V0X2Jvb2woJG9wdHMsJ2NnZnJfdXNlX2J1aWx0aW5fbm90aWZpY2F0aW9ucycsZmFsc2UpOwogICAgICAgICR0aGlzLT5fZGF0YVsndXNlcm5hbWVfd2hpdGVsaXN0J10gPSBjZ2VfcGFyYW06OmdldF9zdHJpbmcoJG9wdHMsJ2NnZnJfdXNlcm5hbWVfd2hpdGVsaXN0Jyk7CiAgICAgICAgJHRoaXMtPl9kYXRhWyd1c2VybmFtZV9ibGFja2xpc3QnXSA9IGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkb3B0cywnY2dmcl91c2VybmFtZV9ibGFja2xpc3QnKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ29ucmVnaXN0ZXJfbm90aWZ5X2FkbWluZ3JvdXAnXSA9IGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkb3B0cywnY2dmcl9vbnJlZ2lzdGVyX25vdGlmeV9hZG1pbmdyb3VwJyk7CiAgICAgICAgJHRoaXMtPl9kYXRhWydvbnB1c2hfbm90aWZ5X2FkbWluZ3JvdXAnXSA9IGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkb3B0cywnY2dmcl9vbnB1c2hfbm90aWZ5X2FkbWluZ3JvdXAnKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ2Rpc2FibGVfcmVwZWF0Y29kZSddID0gY2dlX3BhcmFtOjpnZXRfYm9vbCgkb3B0cywnY2dmcl9kaXNhYmxlX3JlcGVhdGNvZGUnLCBmYWxzZSk7CiAgICAgICAgJHRoaXMtPl9kYXRhWyd2ZXJpZnljb2RlX2V4cGlyZV9ob3VycyddID0gY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRvcHRzLCdjZ2ZyX3ZlcmlmeWNvZGVfZXhwaXJlX2hvdXJzJywgMjQgKiA3KTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ3JlbWluZHVzZXJzX2FmdGVyX2hvdXJzJ10gPSBjZ2VfcGFyYW06OmdldF9pbnQoJG9wdHMsJ2NnZnJfcmVtaW5kdXNlcnNfYWZ0ZXJfaG91cnMnLCAyNCk7ICAvLyBvbmUgZGF5CiAgICAgICAgJHRoaXMtPl9kYXRhWydyZXBlYXRjb2RlX3BhZ2UnXSA9IGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkb3B0cywnY2dmcl9yZXBlYXRjb2RlX3BhZ2UnKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ3VzZXJfZXhwaXJlX2hvdXJzJ10gPSBjZ2VfcGFyYW06OmdldF9zdHJpbmcoJG9wdHMsJ2NnZnJfdXNlcl9leHBpcmVfaG91cnMnLCAyNCAqIDcpOyAvLyBvbmUgd2VlawogICAgICAgICR0aGlzLT5fZGF0YVsndXNlcm5hbWVfaXNfZW1haWwnXSA9IGNnZV9wYXJhbTo6Z2V0X2Jvb2woJG9wdHMsICdmZXVfdXNlcm5hbWVfaXNfZW1haWwnLCB0cnVlKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ2V4cGlyZWFnZV9tb250aHMnXSA9IGNnZV9wYXJhbTo6R2V0X2ludCgkb3B0cywgJ2ZldV9leHBpcmVhZ2VfbW9udGhzJywgNTIwKTsKCiAgICAgICAgaWYoICR0aGlzLT52ZXJpZnljb2RlX2V4cGlyZV9ob3VycyA+ICR0aGlzLT51c2VyX2V4cGlyZV9ob3VycyApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdjZ2ZyX3ZlcmlmeWNvZGVfZXhwaXJlX2hvdXJzIGdyZWF0ZXIgdGhhbiBjZ2ZyX3VzZXJfZXhwaXJlX2hvdXJzJyk7CiAgICAgICAgaWYoICR0aGlzLT5leHBpcmVhZ2VfbW9udGhzIDwgMSApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdmZXVfZXhwaXJlYWdlX21vbnRocyBoYXMgYW4gaW52YWxpZCB2YWx1ZScpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldChzdHJpbmcgJGtleSkKICAgIHsKICAgICAgICBzd2l0Y2goICRrZXkgKSB7CiAgICAgICAgY2FzZSAnbG9naW5fYWZ0ZXJfdmVyaWZ5JzoKICAgICAgICBjYXNlICd1c2VybmFtZV9pc19lbWFpbCc6CiAgICAgICAgY2FzZSAnZGlzYWJsZV9yZXBlYXRjb2RlJzoKICAgICAgICBjYXNlICd1c2VfYnVpbHRpbl9ub3RpZmljYXRpb25zJzoKICAgICAgICAgICAgcmV0dXJuIChib29sKSAkdGhpcy0+X2RhdGFbJGtleV07CiAgICAgICAgY2FzZSAndXNlcm5hbWVfd2hpdGVsaXN0JzoKICAgICAgICBjYXNlICd1c2VybmFtZV9ibGFja2xpc3QnOgogICAgICAgIGNhc2UgJ29ucmVnaXN0ZXJfbm90aWZ5X2FkbWluZ3JvdXAnOwogICAgICAgIGNhc2UgJ29ucHVzaF9ub3RpZnlfYWRtaW5ncm91cCc7CiAgICAgICAgY2FzZSAncmVwZWF0Y29kZV9wYWdlJzoKICAgICAgICAgICAgaWYoICFpc19udWxsKCR0aGlzLT5fZGF0YVska2V5XSkgKSByZXR1cm4gdHJpbSgkdGhpcy0+X2RhdGFbJGtleV0pOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICd2ZXJpZnljb2RlX2V4cGlyZV9ob3Vycyc6CiAgICAgICAgY2FzZSAndXNlcl9leHBpcmVfaG91cnMnOgogICAgICAgIGNhc2UgJ2V4cGlyZWFnZV9tb250aHMnOgogICAgICAgIGNhc2UgJ3JlbWluZHVzZXJzX2FmdGVyX2hvdXJzJzoKICAgICAgICAgICAgcmV0dXJuIG1heCgwLCAoaW50KSAkdGhpcy0+X2RhdGFbJGtleV0pOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oIiRrZXkgaXMgbm90IGEgZ2V0dGFibGUgcHJvcGVydHkgb2YgIi5fX0NMQVNTX18pOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19zZXQoc3RyaW5nICRrZXksICR2YWwpCiAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiJGtleSBpcyBub3QgYSBzZXR0YWJsZSBwcm9wZXJ0eSBvZiAiLl9fQ0xBU1NfXyk7CiAgICB9Cn0gLy8gY2xhc3M=]]></data>
	</file>
	<file>
	  <filename>/lib/class.SimpleRegistrationHandler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgpjbGFzcyBTaW1wbGVSZWdpc3RyYXRpb25IYW5kbGVyIGltcGxlbWVudHMgUmVnaXN0cmF0aW9uSGFuZGxlckludGVyZmFjZQp7CiAgICBwcml2YXRlICRybWdyOwogICAgcHJpdmF0ZSAkcHJvY2Vzc29yOwogICAgcHJpdmF0ZSAkdmVyaWZpZXI7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KFJlZ2lzdHJhdGlvbk1hbmFnZXIgJHJtZ3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0cmF0aW9uUHJvY2Vzc29ySW50ZXJmYWNlICRwcm9jZXNzb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0cmF0aW9uVmVyaWZpZXJJbnRlcmZhY2UgJHZlcmlmaWVyKQogICAgewogICAgICAgICR0aGlzLT5ybWdyID0gJHJtZ3I7CiAgICAgICAgJHRoaXMtPnByb2Nlc3NvciA9ICRwcm9jZXNzb3I7CiAgICAgICAgJHRoaXMtPnZlcmlmaWVyID0gJHZlcmlmaWVyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZWdpc3Rlcl91c2VyKFVzZXIgJHVzZXIpIDogVXNlcgogICAgewogICAgICAgICRmaWVsZHMgPSAkdGhpcy0+cm1nci0+Z2V0X3JlZ2lzdHJhdGlvbl9maWVsZHMoJHVzZXItPmdpZCk7CiAgICAgICAgJHRoaXMtPnZlcmlmaWVyLT52YWxpZGF0ZV9yZWdpc3RyYXRpb24oJGZpZWxkcywgJHVzZXIpOwoKICAgICAgICAkdXNlciA9ICR0aGlzLT5ybWdyLT5zYXZlX3VzZXIoJHVzZXIpOwogICAgICAgICRjb2RlID0gJHRoaXMtPnJtZ3ItPmNyZWF0ZV9yZWdpc3RyYXRpb25fY29kZSgkdXNlcik7CiAgICAgICAgJHRoaXMtPnJtZ3ItPnNhdmVfdmVyaWZpY2F0aW9uX2NvZGUoJGNvZGUpOwogICAgICAgICR0aGlzLT5wcm9jZXNzb3ItPmV4ZWN1dGUoJGZpZWxkcywgJHVzZXIsICRjb2RlKTsKICAgICAgICByZXR1cm4gJHVzZXI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGZvcmNlX3B1c2hfdXNlcl9saXZlKFVzZXIgJHVzZXIpIDogaW50CiAgICB7CiAgICAgICAgJGZpZWxkcyA9ICR0aGlzLT5ybWdyLT5nZXRfcmVnaXN0cmF0aW9uX2ZpZWxkcygkdXNlci0+Z2lkKTsKICAgICAgICAkZmV1X3VpZCA9ICR0aGlzLT5ybWdyLT5wdXNoX3VzZXJfbGl2ZSgkZmllbGRzLCAkdXNlcik7CiAgICAgICAgJHRoaXMtPnJtZ3ItPmRlbGV0ZV91c2VyX2Z1bGwoJHVzZXIpOwogICAgICAgIHJldHVybiAkZmV1X3VpZDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcHVzaF91c2VyX2xpdmUoaW50ICR1c2VyX2lkLCBzdHJpbmcgJGNvZGVfc3RyKSA6IGludAogICAgewogICAgICAgICR1c2VyID0gJHRoaXMtPnJtZ3ItPmxvYWRfdXNlcl9ieV9pZCgkdXNlcl9pZCk7CiAgICAgICAgJGNvZGUgPSAkdGhpcy0+cm1nci0+bG9hZF92ZXJpZmljYXRpb25fY29kZSgkY29kZV9zdHIpOwoKICAgICAgICAvLyBjaGVjayBpZiB0aGUgdXNlciBpcyB2YWxpZCBpZiB0aGUgY29kZSBpcyB2YWxpZAogICAgICAgIGlmKCAhJHVzZXIgfHwgISRjb2RlICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJfY2Fubm90dmVyaWZ5JykpOwogICAgICAgIGlmKCAkdXNlci0+Z2lkIDwgMSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyX2Nhbm5vdHZlcmlmeScpLicgMicpOwogICAgICAgIGlmKCAkdXNlci0+aWQgIT0gJGNvZGUtPnVpZCB8fCAkY29kZS0+ZXhwaXJlcyA8IHRpbWUoKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyX2Nhbm5vdHZlcmlmeScpLicgMycpOwogICAgICAgIGlmKCAkdGhpcy0+cm1nci0+aXNfdXNlcl9leHBpcmVkKCR1c2VyKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyX2Nhbm5vdHZlcmlmeScpLicgNCcpOwoKICAgICAgICAvLyBmb3JjZXB1c2ggbGl2ZQogICAgICAgIHJldHVybiAkdGhpcy0+Zm9yY2VfcHVzaF91c2VyX2xpdmUoJHVzZXIpOwogICAgfQoKfSAvLyBjbGFzcwo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.TaskManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgpjbGFzcyBUYXNrTWFuYWdlcgp7CiAgICBwcml2YXRlICR0YXNrcyA9IFtdOwoKICAgIHB1YmxpYyBmdW5jdGlvbiByZWdpc3Rlcl90YXNrKFRhc2tJbnRlcmZhY2UgJGludGFzaykKICAgIHsKICAgICAgICBmb3JlYWNoKCAkdGhpcy0+dGFza3MgYXMgJG9uZXRhc2sgKSB7CiAgICAgICAgICAgIGlmKCBnZXRfY2xhc3MoJG9uZXRhc2spID09IGdldF9jbGFzcygkaW50YXNrKSApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdBbiBpbnN0YW5jZSBvZiAnLmdldF9jbGFzcygkaW50YXNrKS4nIGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZCcpOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+dGFza3NbXSA9ICRpbnRhc2s7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhvdXJseSgpCiAgICB7CiAgICAgICAgZm9yZWFjaCggJHRoaXMtPnRhc2tzIGFzICR0YXNrICkgewogICAgICAgICAgICBpZiggJHRhc2sgaW5zdGFuY2VvZiBIb3VybHlUYXNrICkgJHRhc2stPmhvdXJseSgpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZGFpbHkoKQogICAgewogICAgICAgIGZvcmVhY2goICR0aGlzLT50YXNrcyBhcyAkdGFzayApIHsKICAgICAgICAgICAgaWYoICR0YXNrIGluc3RhbmNlb2YgRGFpbHlUYXNrICkgJHRhc2stPmRhaWx5KCk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3ZWVrbHkoKQogICAgewogICAgICAgIGZvcmVhY2goICR0aGlzLT50YXNrcyBhcyAkdGFzayApIHsKICAgICAgICAgICAgaWYoICR0YXNrIGluc3RhbmNlb2YgV2Vla2x5VGFzayApICR0YXNrLT53ZWVrbHkoKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG1vbnRobHkoKQogICAgewogICAgICAgIGZvcmVhY2goICR0aGlzLT50YXNrcyBhcyAkdGFzayApIHsKICAgICAgICAgICAgaWYoICR0YXNrIGluc3RhbmNlb2YgTW9udGx5VGFzayApICR0YXNrLT5tb250aGx5KCk7CiAgICAgICAgfQogICAgfQoKfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.User.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBKc29uU2VyaWFsaXphYmxlOwp1c2UgY2dlX2FycmF5OwoKY2xhc3MgVXNlciBpbXBsZW1lbnRzIEpzb25TZXJpYWxpemFibGUKewogICAgY29uc3QgVVNFUk5BTUVfRklFTEQgPSAndXNlcm5hbWUnOwogICAgY29uc3QgUEFTU1dPUkRfRklFTEQgPSAncGFzc3dvcmQnOwogICAgY29uc3QgUkVQRUFUX0ZJRUxEID0gJ3JlcGVhdHBhc3N3b3JkJzsKICAgIHByaXZhdGUgJF9kYXRhID0gWyAnaWQnPT5udWxsLCAnY3JlYXRlZCc9Pm51bGwgXTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoIGFycmF5ICRpbiApCiAgICB7CiAgICAgICAgZm9yZWFjaCggJGluIGFzICRrZXkgPT4gJHZhbCApIHsKICAgICAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgICAgICBjYXNlICdpZCc6CiAgICAgICAgICAgIGNhc2UgJ2NyZWF0ZWQnOgogICAgICAgICAgICBjYXNlICdnaWQnOgogICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gKGludCkgJHZhbDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgaWYoICFpc19udWxsKCR2YWwpICYmICFpc19zdHJpbmcoJHZhbCkgJiYgIWlzX3NjYWxhcigkdmFsKSApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIHByb3BlcnR5IGRhdGEgcGFzc2VkIHRvICcuX19NRVRIT0RfXyk7CiAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSAkdmFsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldChzdHJpbmcgJGtleSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldCgka2V5KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19zZXQoc3RyaW5nICRrZXksICR2YWwpCiAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiJGtleSBpcyBub3QgYSBzZXR0YWJsZSBwcm9wZXJ0eSBvZiAiLl9fQ0xBU1NfXyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9faXNzZXQoc3RyaW5nICRrZXkpCiAgICB7CiAgICAgICAgcmV0dXJuIGlzc2V0KCR0aGlzLT5fZGF0YVska2V5XSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGgoc3RyaW5nICRrZXksICR2YWwpIDogVXNlcgogICAgewogICAgICAgICRrZXkgPSB0cmltKCRrZXkpOwogICAgICAgIGlmKCAhJGtleSApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGtleSBwYXNzZWQgdG8gJy5fX01FVEhPRF9fKTsKCiAgICAgICAgJG9iaiA9IGNsb25lICR0aGlzOwogICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICBjYXNlICdpZCc6CiAgICAgICAgY2FzZSAnY3JlYXRlZCc6CiAgICAgICAgY2FzZSAnZ2lkJzoKICAgICAgICAgICAgaWYoICFpc19pbnQoJHZhbCkgfHwgJHZhbCA8IDEgKSB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCB2YWx1ZSBmb3IgJGtleSBwYXNzZWQgdG8gIi5fX01FVEhPRF9fKTsKICAgICAgICAgICAgJG9iai0+X2RhdGFbJGtleV0gPSAkdmFsOwogICAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICBpZiggIWFycmF5X2tleV9leGlzdHMoJGtleSwgJHRoaXMtPl9kYXRhKSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oIiRrZXkgaXMgbm90IGEgc2V0dGFibGUgcHJvcGVydHkgb2YgIi5fX0NMQVNTX18pOwogICAgICAgICAgICBpZiggIWlzX251bGwoJHZhbCkgJiYgIWlzX3NjYWxhcigkdmFsKSAmJiAhaXNfc3RyaW5nKCR2YWwpICkgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgdmFsdWUgZm9yICRrZXkgcGFzc2VkIHRvICIuX19NRVRIT0RfXyk7CiAgICAgICAgICAgICRvYmotPl9kYXRhWyRrZXldID0gJHZhbDsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb2JqOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXQoc3RyaW5nICRrZXkpCiAgICB7CiAgICAgICAgJGtleSA9IHRyaW0oJGtleSk7CiAgICAgICAgaWYoICEka2V5ICkgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQga2V5ICcuJGtleS4nIHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwogICAgICAgIGlmKCAhYXJyYXlfa2V5X2V4aXN0cygka2V5LCR0aGlzLT5fZGF0YSkgKSB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBrZXkgJGtleSBwYXNzZWQgdG8gIi5fX01FVEhPRF9fKTsKICAgICAgICByZXR1cm4gJHRoaXMtPl9kYXRhWyRrZXldOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBKc29uU2VyaWFsaXplKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9kYXRhOwogICAgfQoKfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.UserFilter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBjZ2VfYXJyYXk7CgpjbGFzcyBVc2VyRmlsdGVyIGV4dGVuZHMgRmlsdGVyCnsKICAgIHByaXZhdGUgJF9kYXRhID0gWyAndXNlcm5hbWVfcGF0dGVybic9Pm51bGwsICdjcmVhdGVkX2FmdGVyJz0+bnVsbCwgJ2NyZWF0ZWRfYmVmb3JlJz0+bnVsbCwgJ2V4cGlyZWQnPT5udWxsIF07CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCBhcnJheSAkb3B0cyApCiAgICB7CiAgICAgICAgaWYoICFjZ2VfYXJyYXk6OmlzX2hhc2goJG9wdHMpICkgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgZGF0YSBwYXNzZWQgdG8gJy5fX01FVEhPRF9fKTsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRvcHRzKTsKICAgICAgICBmb3JlYWNoKCAkb3B0cyBhcyAka2V5ID0+ICR2YWwgKSB7CiAgICAgICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICAgICAgY2FzZSAndXNlcm5hbWVfcGF0dGVybic6CiAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSB0cmltKCR2YWwpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ2NyZWF0ZWRfYmVmb3JlJzoKICAgICAgICAgICAgY2FzZSAnY3JlYXRlZF9hZnRlcic6CiAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSAoaW50KSAkdmFsOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ2V4cGlyZWQnOgogICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gY21zX3RvX2Jvb2woJHZhbCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19nZXQoc3RyaW5nICRrZXkpCiAgICB7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ3VzZXJuYW1lX3BhdHRlcm4nOgogICAgICAgICAgICByZXR1cm4gdHJpbSgkdGhpcy0+X2RhdGFbJGtleV0pOwogICAgICAgIGNhc2UgJ2NyZWF0ZWRfYmVmb3JlJzoKICAgICAgICBjYXNlICdjcmVhdGVkX2FmdGVyJzoKICAgICAgICAgICAgcmV0dXJuIChpbnQpICR0aGlzLT5fZGF0YVska2V5XTsKICAgICAgICBjYXNlICdleHBpcmVkJzoKICAgICAgICAgICAgcmV0dXJuIChib29sKSAkdGhpcy0+X2RhdGFbJGtleV07CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0dXJuIHBhcmVudDo6X19nZXQoJGtleSk7CiAgICAgICAgfQogICAgfQoKCn0gLy8gY2xhc3M=]]></data>
	</file>
	<file>
	  <filename>/lib/class.UsernameFilterDecorator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgpjbGFzcyBVc2VybmFtZUZpbHRlckRlY29yYXRvcgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gdmFsaWRhdGVfcmVnaXN0cmF0aW9uKFJlZ0ZpZWxkU2V0ICRmaWVsZHMsIFVzZXIgJHVzZXIpCiAgICB7CiAgICAgICAgLy8gdG9kbzogbWF0Y2ggdXNlcm5hbWUvZW1haWxzCiAgICAgICAgLy8gb24gZmFpbHVyZSwgZG8gYSBob29rIGFuZCB0aGVuIHRocm93IGFuIGV4Y2VwdGlvbgogICAgICAgIHJldHVybiAkdGhpcy0+cGFyZW50LT52YWxpZGF0ZV9yZWdpc3RyYXRpb24oJGZpZWxkcywgJHVzZXIpOwogICAgfQoKfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.UserSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgpjbGFzcyBVc2VyU2V0IGV4dGVuZHMgRmlsdGVyUmVzdWx0U2V0CnsKfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.ValidationError.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgpjbGFzcyBWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBcUnVudGltZUV4Y2VwdGlvbiB7fQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.VerificationData.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgpjbGFzcyBWZXJpZmljYXRpb25EYXRhCnsKICAgIHByaXZhdGUgJF9kYXRhID0gWyd1aWQnPT5udWxsLCAndmVyaWZ5X2NvZGUnPT5udWxsLCAnZXhwaXJlcyc9Pm51bGwgXTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGluKQogICAgewogICAgICAgIGZvcmVhY2goJGluIGFzICRrZXkgPT4gJHZhbCkgewogICAgICAgICAgICBzd2l0Y2goICRrZXkgKSB7CiAgICAgICAgICAgIGNhc2UgJ3VpZCc6CiAgICAgICAgICAgIGNhc2UgJ2V4cGlyZXMnOgogICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gKGludCkgJHZhbDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICd2ZXJpZnlfY29kZSc6CiAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSB0cmltKCR2YWwpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiggJHRoaXMtPnVpZCA8IDEgKSB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBkYXRhIHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwogICAgICAgIGlmKCAhJHRoaXMtPnZlcmlmeV9jb2RlICkgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgZGF0YSBwYXNzZWQgdG8gJy5fX01FVEhPRF9fKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19nZXQoc3RyaW5nICRrZXkpCiAgICB7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ3VpZCc6CiAgICAgICAgY2FzZSAnZXhwaXJlcyc6CiAgICAgICAgICAgIGlmKCAhaXNfbnVsbCgkdGhpcy0+X2RhdGFbJGtleV0pICkgcmV0dXJuIChpbnQpICR0aGlzLT5fZGF0YVska2V5XTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAndmVyaWZ5X2NvZGUnOgogICAgICAgICAgICBpZiggIWlzX251bGwoJHRoaXMtPl9kYXRhWyRrZXldKSApIHJldHVybiB0cmltKCR0aGlzLT5fZGF0YVska2V5XSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oIiRrZXkgaXMgbm90IGEgZ2V0dGFibGUgcHJvcGVydHkgb2YgIi5fX0NMQVNTX18pOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19zZXQoc3RyaW5nICRrZXksICR2YWwpCiAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiJGtleSBpcyBub3QgYSBzZXR0YWJsZSBwcm9wZXJ0eSBvZiAiLl9fQ0xBU1NfXyk7CiAgICB9Cgp9IC8vIGNsYXNz]]></data>
	</file>
	<file>
	  <filename>/lib/interface.AdminNotifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgppbnRlcmZhY2UgQWRtaW5Ob3RpZmllcgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gbm90aWZ5X3VzZXJfcmVnaXN0ZXJlZChSZWdGaWVsZFNldCAkc2V0LCBVc2VyICR1c2VyKTsKICAgIHB1YmxpYyBmdW5jdGlvbiBub3RpZnlfdXNlcl9wdXNoZWQoaW50ICRmZXVfdWlkLCBSZWdGaWVsZFNldCAkc2V0LCBVc2VyICR1c2VyKTsKfSAvLyBpbnRlcmZhY2U=]]></data>
	</file>
	<file>
	  <filename>/lib/interface.RegistrationHandlerInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgppbnRlcmZhY2UgUmVnaXN0cmF0aW9uSGFuZGxlckludGVyZmFjZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gcmVnaXN0ZXJfdXNlcihVc2VyICR1c2VyKSA6IFVzZXI7CiAgICBwdWJsaWMgZnVuY3Rpb24gZm9yY2VfcHVzaF91c2VyX2xpdmUoVXNlciAkdXNlcikgOiBpbnQ7CiAgICBwdWJsaWMgZnVuY3Rpb24gcHVzaF91c2VyX2xpdmUoaW50ICR1c2VyX2lkLCBzdHJpbmcgJGNvZGVfc3RyKSA6IGludDsKfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/interface.RegistrationProcessorInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgppbnRlcmZhY2UgUmVnaXN0cmF0aW9uUHJvY2Vzc29ySW50ZXJmYWNlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlKFJlZ0ZpZWxkU2V0ICRzZXQsIFVzZXIgJHVzZXIsIFZlcmlmaWNhdGlvbkRhdGEgJGRhdGEpOwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9maW5hbF9tZXNzYWdlKFJlZ0ZpZWxkU2V0ICRzZXQsIFVzZXIgJHVzZXIpIDogc3RyaW5nOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlX3JlcGVhdGNvZGUoUmVnRmllbGRTZXQgJHNldCwgVXNlciAkdXNlciwgVmVyaWZpY2F0aW9uRGF0YSAkZGF0YSk7CiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3JlcGVhdGNvZGVfZmluYWxtZXNzYWdlKFJlZ0ZpZWxkU2V0ICRzZXQsIFVzZXIgJHVzZXIpIDogc3RyaW5nOwp9IC8vIGludGVyZmFjZQ==]]></data>
	</file>
	<file>
	  <filename>/lib/interface.RegistrationVerifierInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgppbnRlcmZhY2UgUmVnaXN0cmF0aW9uVmVyaWZpZXJJbnRlcmZhY2UKewogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlX3B1cmVfcmVnaXN0cmF0aW9uKFJlZ0ZpZWxkU2V0ICRmaWVsZHMsIFVzZXIgJHVzZXIpOwogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlX3JlZ2lzdHJhdGlvbihSZWdGaWVsZFNldCAkc2V0LCBVc2VyICR1c2VyKTsKfSAvLyBpbnRlcmZhY2U=]]></data>
	</file>
	<file>
	  <filename>/lib/interface.TaskInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgppbnRlcmZhY2UgVGFza0ludGVyZmFjZSB7fQoKaW50ZXJmYWNlIEhvdXJseVRhc2sgZXh0ZW5kcyBUYXNrSW50ZXJmYWNlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBob3VybHkoKTsKfQoKaW50ZXJmYWNlIERhaWx5VGFzayBleHRlbmRzIFRhc2tJbnRlcmZhY2UKewogICAgcHVibGljIGZ1bmN0aW9uIGRhaWx5KCk7Cn0KCmludGVyZmFjZSBXZWVrbHlUYXNrIGV4dGVuZHMgVGFza0ludGVyZmFjZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gd2Vla2x5KCk7Cn0KCmludGVyZmFjZSBNb250aGx5VGFzayBleHRlbmRzIFRhc2tJbnRlcmZhY2UKewogICAgcHVibGljIGZ1bmN0aW9uIG1vbnRobHkoKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiRkYiA9ICR0aGlzLT5nZXRfZXh0ZW5kZWRfZGIoKTsKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwokdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdFTkdJTkU9SW5ub0RCJyk7CgokZmxkcyA9ICIKICAgICAgaWQgSSBLRVkgQVVUTyBOT1ROVUxMLAogICAgICB1c2VybmFtZSBDKDI1NikgTk9UTlVMTCwKICAgICAgY3JlYXRlZCBJIE5PVE5VTEwsCiAgICAgIHNpZyBDKDI1NikgTk9UTlVMTCwKICAgICAgZGF0YSBYMiBOT1ROVUxMCiI7CiRzcWxhcnIgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoJHRoaXMtPnVzZXJzX3RhYmxlX25hbWUoKSwgJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycik7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTChDTVNfREJfUFJFRklYLidtb2RfY2dmcl9pZHgwJywkdGhpcy0+dXNlcnNfdGFibGVfbmFtZSgpLCd1c2VybmFtZScsIFsgJ1VOSVFVRScgXSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiRmbGRzID0gIgogICAgICB1aWQgSSBLRVkgTk9UTlVMTCwKICAgICAgdmVyaWZ5X2NvZGUgQyg2NCkgS0VZIE5PVE5VTEwsCiAgICAgIGV4cGlyZXMgSSBOT1ROVUxMCiI7CiRzcWxhcnIgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoJHRoaXMtPmNvZGVzX3RhYmxlX25hbWUoKSwgJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycik7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTChDTVNfREJfUFJFRklYLidtb2RfY2dmcl9pZHgxJywkdGhpcy0+Y29kZXNfdGFibGVfbmFtZSgpLCd1c2VybmFtZScpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTChDTVNfREJfUFJFRklYLidtb2RfY2dmcl9pZHgyJywkdGhpcy0+Y29kZXNfdGFibGVfbmFtZSgpLCd2ZXJpZnlfY29kZScsIFsnVU5JUVVFJ10pOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Ci8vIHRvZG86IGZvcmVpZ24ga2V5IHJlbGF0aW9uc2hpcCBvbiBpZAoKJGtleSA9IGJpbjJoZXgocmFuZG9tX2J5dGVzKDY0KSkuX19GSUxFX187CiRrZXkgPSBoYXNoKCdzaGEyNTYnLCRrZXkpOwoka2V5ID0gaGFzaCgnc2hhMjU2Jywka2V5KTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJHRoaXMtPnJlZ01hbmFnZXIoKTo6RU5DUllQVElPTl9LRVksJGtleSk7]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiRkYiA9ICR0aGlzLT5nZXRfZXh0ZW5kZWRfZGIoKTsKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwokdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdFTkdJTkU9SW5ub0RCJyk7Cgokc3FsYXJyID0gJGRpY3QtPkRyb3BUYWJsZVNRTCgkdGhpcy0+Y29kZXNfdGFibGVfbmFtZSgpKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyKTsKJHNxbGFyciA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoJHRoaXMtPnVzZXJzX3RhYmxlX25hbWUoKSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycik7CiR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJDR0ZFVVJlZ2lzdGVyIgp2ZXJzaW9uID0gIjEuMC4xIgphdXRob3IgPSAiY2FsZ3V5MTAwMCIKYXV0aG9yZW1haWwgPSAiY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyIKbWluY21zdmVyc2lvbiA9ICIyLjIuMTAiCmxhenlsb2FkYWRtaW4gPSAwCmxhenlsb2FkZnJvbnRlbmQgPSAwCltkZXBlbmRzXQpDR0V4dGVuc2lvbnMgPSAiMS42NC4yIgpGcm9udEVuZFVzZXJzID0gMi45OQo=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/admin_edit_user.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdoZHJfbWFuYWdlX3VzZXInKX08L2gzPgoKe2Zvcm1fc3RhcnQgdWlkPSR1c2VyLT5pZH0KICAgIDxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2xibF9zdWJtaXQnKX0iLz4KICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJjYW5jZWwiIHZhbHVlPSJ7JG1vZC0+TGFuZygnbGJsX2NhbmNlbCcpfSIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImRlbGV0ZXVzZXIiIHZhbHVlPSJ7JG1vZC0+TGFuZygnbGJsX2RlbGV0ZScpfSIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InB1c2h1c2VyIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2xibF9wdXNobGl2ZScpfSIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9Im5ld2NvZGUiIHZhbHVlPSJ7JG1vZC0+TGFuZygnbGJsX25ld2NvZGUnKX0iLz4KICAgIDwvZGl2PgogICAgPGJyLz4KCiAgICB7Zm9yZWFjaCAkZmllbGRzIGFzICRuYW1lID0+ICRmaWVsZH0KICAgICAgICB7JHJlcXVpcmVkPScnfXtpZiAkZmllbGQtPnJlcXVpcmVkPT0yfXskcmVxdWlyZWQ9J3JlcXVpcmVkJ317L2lmfQogICAgICAgIHskcGF0dGVybj0nJ317aWYgIWVtcHR5KCRmaWVsZC0+ZXh0cmEucGF0dGVybil9eyRwYXR0ZXJuPSJwYXR0ZXJuPXskZmllbGQtPmV4dHJhLnBhdHRlcm59In17L2lmfQogICAgICAgIHskcGxhY2Vob2xkZXI9Jyd9e2lmICFlbXB0eSgkZmllbGQtPmV4dHJhLnBsYWNlaG9sZGVyKX17JHBsYWNlaG9sZGVyPSJwbGFjZWhvbGRlcj17JGZpZWxkLT5leHRyYS5wbGFjZWhvbGRlcn0ifXsvaWZ9CiAgICAgICAgPGRpdiBjbGFzcz0iY19mdWxsIGNmIHtpZiAkcmVxdWlyZWR9cmVxdWlyZWR7L2lmfSI+CiAgICAgICAgICAgIHtpZiAkZmllbGQtPnR5cGUgPT0gMH17KiB0ZXh0ICp9CiAgICAJICAgICAgICA8bGFiZWwgZm9yPSJwcm9wX3skbmFtZX0iIGNsYXNzPSJncmlkXzMiPnskZmllbGQtPnByb21wdH06PC9sYWJlbD4KICAgIAkJPGlucHV0IGlkPSJwcm9wX3skbmFtZX0iIHR5cGU9InRleHQiIGNsYXNzPSJncmlkXzgiIG5hbWU9InskbmFtZX0iIHZhbHVlPSJ7JHVzZXItPmdldCgkbmFtZSl9IiB7JHJlcXVpcmVkfSB7JHBhdHRlcm59IHskcGxhY2Vob2xkZXJ9IC8+CiAgICAJICAgIHtlbHNlIGlmICRmaWVsZC0+dHlwZSA9PSAxfXsqIGNoZWNrYm94ICp9CiAgICAJICAgICAgICA8bGFiZWwgZm9yPSJwcm9wX3skbmFtZX0iIGNsYXNzPSJncmlkXzMiPnskZmllbGQtPnByb21wdH06PC9sYWJlbD4KICAgIAkJPHNwYW4gY2xhc3M9ImdyaWRfOCI+CiAgICAJCSAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JG5hbWV9IiB2YWx1ZT0iMCIvPgogICAgCQkgICAgPGlucHV0IGlkPSJwcm9wX3skbmFtZX0iIHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iZ3JpZF84IiBuYW1lPSJ7JG5hbWV9IiB2YWx1ZT0iMSIge2lmICR1c2VyLT5nZXQoJG5hbWUpfWNoZWNrZWR7L2lmfSB7JHJlcXVpcmVkfSAvPgogICAgCQk8L3NwYW4+CiAgICAJICAgIHtlbHNlIGlmICRmaWVsZC0+dHlwZSA9PSAyfXsqIGVtYWlsICp9CiAgICAJICAgICAgICA8bGFiZWwgZm9yPSJwcm9wX3skbmFtZX0iIGNsYXNzPSJncmlkXzMiPnskZmllbGQtPnByb21wdH06PC9sYWJlbD4KICAgIAkJPGlucHV0IGlkPSJwcm9wX3skbmFtZX0iIHR5cGU9ImVtYWlsIiBjbGFzcz0iZ3JpZF84IiBuYW1lPSJ7JG5hbWV9IiB2YWx1ZT0ieyR1c2VyLT5nZXQoJG5hbWUpfSIgeyRyZXF1aXJlZH0geyRwYXR0ZXJufSB7JHBsYWNlaG9sZGVyfSAvPgogICAgCSAgICB7ZWxzZSBpZiAkZmllbGQtPnR5cGUgPT0gM317KiB0ZXh0YXJlYSAqfQogICAgCSAgICAgICAgPGxhYmVsIGZvcj0icHJvcF97JG5hbWV9IiBjbGFzcz0iZ3JpZF8zIj57JGZpZWxkLT5wcm9tcHR9OjwvbGFiZWw+CiAgICAJCTx0ZXh0YXJlYSBpZD0icHJvcF97JG5hbWV9IiBjbGFzcz0iZ3JpZF84IiBuYW1lPSJ7JG5hbWV9IiB7JHJlcXVpcmVkfT57JHVzZXItPmdldCgkbmFtZSl9PC90ZXh0YXJlYT4KICAgIAkgICAge2Vsc2UgaWYgJGZpZWxkLT50eXBlID09IDR9eyogZHJvcGRvd24gKn0KICAgIAkgICAgICAgIDxsYWJlbCBmb3I9InByb3BfeyRuYW1lfSIgY2xhc3M9ImdyaWRfMyI+eyRmaWVsZC0+cHJvbXB0fTo8L2xhYmVsPgogICAgCQk8c2VsZWN0IGlkPSJwcm9wX3skbmFtZX0iIGNsYXNzPSJncmlkXzgiIG5hbWU9InskbmFtZX0iIHskcmVxdWlyZWR9PgogICAgCQkgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRmaWVsZC0+b3B0aW9ucyBzZWxlY3RlZD0kdXNlci0+Z2V0KCRuYW1lKX0KICAgIAkJPC9zZWxlY3Q+CiAgICAJICAgIHtlbHNlIGlmICRmaWVsZC0+dHlwZSA9PSA1fXsqIG11bHRpc2VsZWN0ICp9CiAgICAJICAgICAgICA8bGFiZWwgZm9yPSJwcm9wX3skbmFtZX0iIGNsYXNzPSJncmlkXzMiPnskZmllbGQtPnByb21wdH06PC9sYWJlbD4KICAgIAkJPHNlbGVjdCBpZD0icHJvcF97JG5hbWV9IiBjbGFzcz0iZ3JpZF84IiBuYW1lPSJ7JG5hbWV9W10iIG11bHRpcGxlIHskcmVxdWlyZWR9PgogICAgCQkgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRmaWVsZC0+b3B0aW9ucyBzZWxlY3RlZD0kdXNlci0+Z2V0KCRuYW1lKX0KICAgIAkJPC9zZWxlY3Q+CiAgICAJICAgIHtlbHNlIGlmICRmaWVsZC0+dHlwZSA9PSA3fXsqIHJhZGlvYnV0bnMgKn0KICAgIAkgICAgICAgIDxsYWJlbCBmb3I9InByb3BfeyRuYW1lfSIgY2xhc3M9ImdyaWRfMyI+eyRmaWVsZC0+cHJvbXB0fTo8L2xhYmVsPgogICAgCQk8c3BhbiBjbGFzcz0iZ3JpZF84Ij4KICAgIAkJICAgIHtmb3JlYWNoICRmaWVsZC0+b3B0aW9ucyBhcyAkdmFsID0+ICRsYmx9CgkJICAgICAgIDxzcGFuIGNsYXNzPSJyYWRpb2J0biI+CgkJICAgICAgICAgICA8aW5wdXQge2lmICRsYmxAZmlyc3R9aWQ9InByb3BfeyRuYW1lfSJ7L2lmfSB0eXBlPSJyYWRpbyIgbmFtZT0ieyRuYW1lfVtdIiB2YWx1ZT0ieyR2YWx9IiB7aWYgJHVzZXItPmdldCgkbmFtZSkgPT0gJHZhbH1jaGVja2Vkey9pZn0geyRyZXF1aXJlZH0+CgkJCSAgIDxzcGFuPnskbGJsfTwvc3Bhbj4KCQkgICAgICAgPC9zcGFuPgogICAgCQkgICAgICAge2lmICEkbGJsQGxhc3R9PGJyLz57L2lmfQogICAgCQkgICAgey9mb3JlYWNofQogICAgCQk8L3NwYW4+CiAgICAJICAgIHtlbHNlIGlmICRmaWVsZC0+dHlwZSA9PSA4fXsqIGRhdGUgKn0KICAgIAkgICAgICAgIDxsYWJlbCBjbGFzcz0iZ3JpZF8zIj57JGZpZWxkLT5wcm9tcHR9OjwvbGFiZWw+CgkJPHNwYW4gY2xhc3M9ImdyaWRfOCI+CgkJICAgIHtodG1sX3NlbGVjdF9kYXRlIHRpbWU9JHVzZXItPmdldCgkbmFtZSkgc3RhcnRfeWVhcj0kZmllbGQtPmV4dHJhLnN0YXJ0X3llYXJ8ZGVmYXVsdDoxOTAwIGVuZF95ZWFyPSRmaWVsZC0+ZXh0cmEuZW5kX3llYXJ8ZGVmYXVsdDonKzIwJyBwcmVmaXg9InskbmFtZX0ifQoJICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIHtlbHNlIGlmICRmaWVsZC0+dHlwZSA9PSAxMH17KiB0ZWwgKn0KICAgIAkgICAgICAgIDxsYWJlbCBmb3I9InByb3BfeyRuYW1lfSIgY2xhc3M9ImdyaWRfMyI+eyRmaWVsZC0+cHJvbXB0fTo8L2xhYmVsPgogICAgCQk8aW5wdXQgaWQ9InByb3BfeyRuYW1lfSIgdHlwZT0idGV4dCIgY2xhc3M9ImdyaWRfOCIgbmFtZT0ieyRuYW1lfSIgdmFsdWU9InskdXNlci0+Z2V0KCRuYW1lKX0iIHskcmVxdWlyZWR9IHskcGF0dGVybn0geyRwbGFjZWhvbGRlcn0gLz4KICAgICAgICAgICAgey9pZn0KICAgICAgICA8L2Rpdj4KICAgIHsvZm9yZWFjaH0KCntmb3JtX2VuZH0=]]></data>
	</file>
	<file>
	  <filename>/templates/after_verify.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICFlbXB0eSgkZmluYWxfbWVzc2FnZSl9CiAgICA8aDM+eyRtb2QtPkxhbmcoJ21zZ193ZWxjb21lJyl9IDxzcGFuPnskdXNlci0+dXNlcm5hbWV9PC9zcGFuPiA8ZW0+KHskZmV1X3VpZH0pPC9lbT48L2gzPgogICAgPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyI+CiAgICAgICAgeyRmaW5hbF9tZXNzYWdlfQoJe2lmICRsb2dnZWRfaW59CgkgICAgeyogd2UgYXJlIGxvZ2dlZCBpbiwgd2UgY291bGQgbGluayB0byB0aGUgbWVtYmVycyBhcmUsIG9yIHJlZGlyZWN0IHRoZXJlICp9Cgl7ZWxzZX0KCSAgICB7KiB3ZSBjb3VsZCB1c2UgY21zX3NlbGZsaW5rIHRvIGxpbmsgdG8gYSBsb2dpbiBwYWdlICp9Cgl7L2lmfQogICAgPC9kaXY+CiAgICB7KiB3ZSBjb3VsZCBhbHNvIHJlZGlyZWN0IGhlcmUgaWYgd2Ugd2lzaGVkICp9CntlbHNlaWYgIWVtcHR5KCRlcnJvcil9CiAgICA8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1kYW5nZXIiPnskZXJyb3J9PC9kaXY+CntlbHNlfQogICAgPHA+SU5URVJOQUwgRVJST1IgKHRoaXMgc2hvdWxkIG5vdCBoYXBwZW4pPC9wPgp7L2lmfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/defaultadmin.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICFjb3VudCgkdXNlcnMpfQogICAgPGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbW9kLT5MYW5nKCdtc2dfbm91c2VycycpfTwvZGl2Pgp7ZWxzZX0KICAgIDx0YWJsZSBjbGFzcz0icGFnZXRhYmxlIj4KICAgICAgICA8dGhlYWQ+CgkgICAgPHRyPgoJICAgICAgICA8dGg+eyRtb2QtPkxhbmcoJ2xibF91c2VybmFtZScpfTwvdGg+CgkgICAgICAgIDx0aD57JG1vZC0+TGFuZygnbGJsX2NyZWF0ZWQnKX08L3RoPgoJICAgICAgICA8dGg+eyRtb2QtPkxhbmcoJ2xibF9leHBpcmVkJyl9PC90aD4KCQk8dGggY2xhc3M9InBhZ2VpY29uIj48L3RoPgoJICAgIDwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5PgoJICAgIHtmb3JlYWNoICR1c2VycyBhcyAkdXNlcn0KCSAgICAgICAge2Ntc19hY3Rpb25fdXJsIGFjdGlvbj1hZG1pbl9lZGl0X3VzZXIgdWlkPSR1c2VyLT5pZCBhc3NpZ249J2VkaXRfdXJsJ30KCSAgICAgICAgPHRyIGNsYXNzPSJ7Y3ljbGUgdmFsdWVzPSdyb3cxLHJvdzInfSI+CgkJICAgIDx0ZD48YSBocmVmPSJ7JGVkaXRfdXJsfSIgdGl0bGU9InskbW9kLT5MYW5nKCdsYmxfZWRpdCcpfSI+eyR1c2VyLT51c2VybmFtZX08L2E+PC90ZD4KCQkgICAgPHRkPnskdXNlci0+Y3JlYXRlZHxkYXRlX2Zvcm1hdDonJXggJUg6JU0nfTwvdGQ+CgkJICAgIDx0ZD5UT0RPPC90ZD4KCQkgICAgPHRkPjxhIGhyZWY9InskZWRpdF91cmx9Ij57YWRtaW5faWNvbiBpY29uPSdlZGl0LmdpZicgdGl0bGU9JG1vZC0+TGFuZygnbGJsX2VkaXQnKX08L2E+PC90ZD4KCQk8L3RyPgoJICAgIHsvZm9yZWFjaH0KCTwvdGJvZHk+CiAgICA8L3RhYmxlPgp7L2lmfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/post_register_message.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHA+VGhhbmsgeW91IGZvciByZWdpc3RlcmluZyB3aXRoIHVzLjwvcD4KPHA+VGhlcmUgaXMganVzdCBvbmUgbW9yZSBzdGVwLiBBbiBlbWFpbCBoYXMgYmVlbiBzZW50IHRvIDxzcGFuIGNsYXNzPSJlbWFpbCI+eyRlbWFpbH08L3NwYW4+IHRoYXQgY29udGFpbnMgYSBsaW5rLjwvcD4KPHA+VG8gY29uZmlybSB5b3VyIGFjY291bnQsIHBsZWFzZSBjbGljayBvbiB0aGUgbGluayBpbiB0aGUgZW1haWwuPC9wPg==]]></data>
	</file>
	<file>
	  <filename>/templates/register.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICFlbXB0eSgkZmluYWxfbWVzc2FnZSl9CgogICAgPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyI+eyRmaW5hbF9tZXNzYWdlfTwvZGl2PgogICAgeyogY291bGQgY2hhbmdlIG91ciBmaW5hbCBtZXNzYWdlIGhlcmUgKn0KICAgIHsqIGNvdWxkIGFsc28gZG8gcmVkaXJlY3Rpb24gaGVyZSAqfQoKe2Vsc2V9CgogICAge2lmICRlcnJvcn08ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1kYW5nZXIiPnskZXJyb3J9PC9kaXY+ey9pZn0KCiAgICB7Zm9ybV9zdGFydCBncm91cD0kZ3JvdXAuZ3JvdXBuYW1lIGlubGluZT0kaW5saW5lfXtjZ2VfZm9ybV9jc3JmfQogICAge2lmICFlbXB0eSgkcHJvcGVydGllcyl9CiAgICAgICAge2ZvcmVhY2ggJHByb3BlcnRpZXMgYXMgJG5hbWUgPT4gJHByb3BlcnR5fQogICAgICAgICAgICB7JHJlcXVpcmVkPScnfXtpZiAkcHJvcGVydHktPnJlcXVpcmVkPT0yfXskcmVxdWlyZWQ9J3JlcXVpcmVkJ317L2lmfQoJICAgIHskcGF0dGVybj0nJ317aWYgIWVtcHR5KCRwcm9wZXJ0eS0+ZXh0cmEucGF0dGVybil9eyRwYXR0ZXJuPSJwYXR0ZXJuPXskcHJvcGVydHktPmV4dHJhLnBhdHRlcm59In17L2lmfQoJICAgIHskcGxhY2Vob2xkZXI9Jyd9e2lmICFlbXB0eSgkcHJvcGVydHktPmV4dHJhLnBsYWNlaG9sZGVyKX17JHBsYWNlaG9sZGVyPSJwbGFjZWhvbGRlcj17JHByb3BlcnR5LT5leHRyYS5wbGFjZWhvbGRlcn0ifXsvaWZ9CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyB7aWYgJHJlcXVpcmVkfXJlcXVpcmVkey9pZn0iPgogICAgICAgICAgICB7aWYgJHByb3BlcnR5LT50eXBlID09IC0xMDB9eyogcGFzc3dvcmQgKn0KICAgIAkgICAgICAgIDxsYWJlbCBmb3I9InByb3BfeyRuYW1lfSIgY2xhc3M9ImNvbC1zbS0yIj57JHByb3BlcnR5LT5wcm9tcHR9OjwvbGFiZWw+CiAgICAJCTxpbnB1dCBpZD0icHJvcF97JG5hbWV9IiB0eXBlPSJwYXNzd29yZCIgY2xhc3M9ImNvbC1zbS0xMCIgbmFtZT0ieyRuYW1lfSIgdmFsdWU9InskdXNlci0+Z2V0KCRuYW1lKX0iIHskcmVxdWlyZWR9IC8+CiAgICAgICAgICAgIHtlbHNlIGlmICRwcm9wZXJ0eS0+dHlwZSA9PSAwfXsqIHRleHQgKn0KICAgIAkgICAgICAgIDxsYWJlbCBmb3I9InByb3BfeyRuYW1lfSIgY2xhc3M9ImNvbC1zbS0yIj57JHByb3BlcnR5LT5wcm9tcHR9OjwvbGFiZWw+CiAgICAJCTxpbnB1dCBpZD0icHJvcF97JG5hbWV9IiB0eXBlPSJ0ZXh0IiBjbGFzcz0iY29sLXNtLTEwIiBuYW1lPSJ7JG5hbWV9IiB2YWx1ZT0ieyR1c2VyLT5nZXQoJG5hbWUpfSIgeyRyZXF1aXJlZH0geyRwYXR0ZXJufSB7JHBsYWNlaG9sZGVyfSAvPgogICAgCSAgICB7ZWxzZSBpZiAkcHJvcGVydHktPnR5cGUgPT0gMX17KiBjaGVja2JveCAqfQogICAgCSAgICAgICAgPGxhYmVsIGZvcj0icHJvcF97JG5hbWV9IiBjbGFzcz0iY29sLXNtLTIiPnskcHJvcGVydHktPnByb21wdH06PC9sYWJlbD4KICAgIAkJPHNwYW4gY2xhc3M9ImNvbC1zbS0xMCI+CiAgICAJCSAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JG5hbWV9IiB2YWx1ZT0iMCIvPgogICAgCQkgICAgPGlucHV0IGlkPSJwcm9wX3skbmFtZX0iIHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iY29sLXNtLTEwIiBuYW1lPSJ7JG5hbWV9IiB2YWx1ZT0iMSIge2lmICR1c2VyLT5nZXQoJG5hbWUpfWNoZWNrZWR7L2lmfSB7JHJlcXVpcmVkfSAvPgogICAgCQk8L3NwYW4+CiAgICAJICAgIHtlbHNlIGlmICRwcm9wZXJ0eS0+dHlwZSA9PSAyfXsqIGVtYWlsICp9CiAgICAJICAgICAgICA8bGFiZWwgZm9yPSJwcm9wX3skbmFtZX0iIGNsYXNzPSJjb2wtc20tMiI+eyRwcm9wZXJ0eS0+cHJvbXB0fTo8L2xhYmVsPgogICAgCQk8aW5wdXQgaWQ9InByb3BfeyRuYW1lfSIgdHlwZT0iZW1haWwiIGNsYXNzPSJjb2wtc20tMTAiIG5hbWU9InskbmFtZX0iIHZhbHVlPSJ7JHVzZXItPmdldCgkbmFtZSl9IiB7JHJlcXVpcmVkfSB7JHBhdHRlcm59IHskcGxhY2Vob2xkZXJ9IC8+CiAgICAJICAgIHtlbHNlIGlmICRwcm9wZXJ0eS0+dHlwZSA9PSAzfXsqIHRleHRhcmVhICp9CiAgICAJICAgICAgICA8bGFiZWwgZm9yPSJwcm9wX3skbmFtZX0iIGNsYXNzPSJjb2wtc20tMiI+eyRwcm9wZXJ0eS0+cHJvbXB0fTo8L2xhYmVsPgogICAgCQk8dGV4dGFyZWEgaWQ9InByb3BfeyRuYW1lfSIgY2xhc3M9ImNvbC1zbS0xMCIgbmFtZT0ieyRuYW1lfSIgeyRyZXF1aXJlZH0+eyR1c2VyLT5nZXQoJG5hbWUpfTwvdGV4dGFyZWE+CiAgICAJICAgIHtlbHNlIGlmICRwcm9wZXJ0eS0+dHlwZSA9PSA0fXsqIGRyb3Bkb3duICp9CiAgICAJICAgICAgICA8bGFiZWwgZm9yPSJwcm9wX3skbmFtZX0iIGNsYXNzPSJjb2wtc20tMiI+eyRwcm9wZXJ0eS0+cHJvbXB0fTo8L2xhYmVsPgogICAgCQk8c2VsZWN0IGlkPSJwcm9wX3skbmFtZX0iIGNsYXNzPSJjb2wtc20tMTAiIG5hbWU9InskbmFtZX0iIHskcmVxdWlyZWR9PgogICAgCQkgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRwcm9wZXJ0eS0+b3B0aW9ucyBzZWxlY3RlZD0kdXNlci0+Z2V0KCRuYW1lKX0KICAgIAkJPC9zZWxlY3Q+CiAgICAJICAgIHtlbHNlIGlmICRwcm9wZXJ0eS0+dHlwZSA9PSA1fXsqIG11bHRpc2VsZWN0ICp9CiAgICAJICAgICAgICA8bGFiZWwgZm9yPSJwcm9wX3skbmFtZX0iIGNsYXNzPSJjb2wtc20tMiI+eyRwcm9wZXJ0eS0+cHJvbXB0fTo8L2xhYmVsPgogICAgCQk8c2VsZWN0IGlkPSJwcm9wX3skbmFtZX0iIGNsYXNzPSJjb2wtc20tMTAiIG5hbWU9InskbmFtZX1bXSIgbXVsdGlwbGUgeyRyZXF1aXJlZH0+CiAgICAJCSAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JHByb3BlcnR5LT5vcHRpb25zIHNlbGVjdGVkPSR1c2VyLT5nZXQoJG5hbWUpfQogICAgCQk8L3NlbGVjdD4KICAgIAkgICAge2Vsc2UgaWYgJHByb3BlcnR5LT50eXBlID09IDd9eyogcmFkaW9idXRucyAqfQogICAgCSAgICAgICAgPGxhYmVsIGZvcj0icHJvcF97JG5hbWV9IiBjbGFzcz0iY29sLXNtLTIiPnskcHJvcGVydHktPnByb21wdH06PC9sYWJlbD4KICAgIAkJPHNwYW4gY2xhc3M9ImNvbC1zbS0xMCI+CiAgICAJCSAgICB7Zm9yZWFjaCAkcHJvcGVydHktPm9wdGlvbnMgYXMgJHZhbCA9PiAkbGJsfQoJCSAgICAgICA8c3BhbiBjbGFzcz0icmFkaW9idG4iPgoJCSAgICAgICAgICAgPGlucHV0IHtpZiAkbGJsQGZpcnN0fWlkPSJwcm9wX3skbmFtZX0iey9pZn0gdHlwZT0icmFkaW8iIG5hbWU9InskbmFtZX1bXSIgdmFsdWU9InskdmFsfSIge2lmICR1c2VyLT5nZXQoJG5hbWUpID09ICR2YWx9Y2hlY2tlZHsvaWZ9IHskcmVxdWlyZWR9PgoJCQkgICA8c3Bhbj57JGxibH08L3NwYW4+CgkJICAgICAgIDwvc3Bhbj4KICAgIAkJICAgICAgIHtpZiAhJGxibEBsYXN0fTxici8+ey9pZn0KICAgIAkJICAgIHsvZm9yZWFjaH0KICAgIAkJPC9zcGFuPgogICAgCSAgICB7ZWxzZSBpZiAkcHJvcGVydHktPnR5cGUgPT0gOH17KiBkYXRlICp9CiAgICAJICAgICAgICA8bGFiZWwgY2xhc3M9ImNvbC1zbS0yIj57JHByb3BlcnR5LT5wcm9tcHR9OjwvbGFiZWw+CgkJPHNwYW4gY2xhc3M9ImNvbC1zbS0xMCI+CgkJICAgIHtodG1sX3NlbGVjdF9kYXRlIHRpbWU9JHVzZXItPmdldCgkbmFtZSkgc3RhcnRfeWVhcj0kcHJvcGVydHktPmV4dHJhLnN0YXJ0X3llYXJ8ZGVmYXVsdDoxOTAwIGVuZF95ZWFyPSRwcm9wZXJ0eS0+ZXh0cmEuZW5kX3llYXJ8ZGVmYXVsdDonKzIwJyBwcmVmaXg9InskbmFtZX0ifQoJICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIHtlbHNlIGlmICRwcm9wZXJ0eS0+dHlwZSA9PSAxMH17KiB0ZWwgKn0KICAgIAkgICAgICAgIDxsYWJlbCBmb3I9InByb3BfeyRuYW1lfSIgY2xhc3M9ImNvbC1zbS0yIj57JHByb3BlcnR5LT5wcm9tcHR9OjwvbGFiZWw+CiAgICAJCTxpbnB1dCBpZD0icHJvcF97JG5hbWV9IiB0eXBlPSJ0ZXh0IiBjbGFzcz0iY29sLXNtLTEwIiBuYW1lPSJ7JG5hbWV9IiB2YWx1ZT0ieyR1c2VyLT5nZXQoJG5hbWUpfSIgeyRyZXF1aXJlZH0geyRwYXR0ZXJufSB7JHBsYWNlaG9sZGVyfSAvPgogICAgICAgICAgICB7L2lmfQogICAgCSAgICA8L2Rpdj4KICAgICAgICB7L2ZvcmVhY2h9CiAgICB7L2lmfQoKICAgIHsqIG9wdGlvbmFsIGNhcHRjaGEgKn0KICAgIHtpZiAkY2FwdGNoYX0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FwdGNoYSI+CgkgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+eyRjYXB0Y2hhfTwvZGl2PgoJCXtpZiAkY2FwdGNoYV9pbnB1dF9uYW1lfQoJICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPnskbW9kLT5MYW5nKCdwcm9tcHRfY2FwdGNoYScpfTwvZGl2PgoJICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImNvbC1zbS02IiBuYW1lPSJ7JGNhcHRjaGFfaW5wdXRfbmFtZX0iIGF1dG9jb21wbGV0ZT0ib2ZmIi8+CgkgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIHsvaWZ9CgkgICAgPC9kaXY+CiAgICB7L2lmfQoKICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1zdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygncmVnaXN0ZXInKX0iLz4KICAgIDwvZGl2PgogICAge2Zvcm1fZW5kfQoKey9pZn0=]]></data>
	</file>
	<file>
	  <filename>/templates/repeatcode.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICFlbXB0eSgkZmluYWxfbWVzc2FnZSl9CgogICAgPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyI+eyRmaW5hbF9tZXNzYWdlfTwvZGl2PgogICAgeyogY291bGQgY2hhbmdlIG91ciBmaW5hbCBtZXNzYWdlIGhlcmUgKn0KICAgIHsqIGNvdWxkIGFsc28gZG8gcmVkaXJlY3Rpb24gaGVyZSAqfQoKe2Vsc2V9CgogICAgPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyI+eyRtb2QtPkxhbmcoJ2luZm9fcmVwZWF0Y29kZScpfTwvZGl2PgoKICAgIHtpZiAkZXJyb3J9PGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtZGFuZ2VyIj57JGVycm9yfTwvZGl2PnsvaWZ9CgogICAge2Zvcm1fc3RhcnQgaW5saW5lPSRpbmxpbmV9e2NnZV9mb3JtX2NzcmZ9CiAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KCSAgICA8bGFiZWwgZm9yPSJ1c2VybmFtZSIgY2xhc3M9ImNvbC1zbS02Ij57JG1vZC0+TGFuZygncHJvbXB0X3VzZXJuYW1lZW1haWwnKX08L2xhYmVsPgoJICAgIDxpbnB1dCBpZD0idXNlcm5hbWUiIGNsYXNzPSJjb2wtc20tNiIgdHlwZT0ieyRpbnB1dF90eXBlfSIgdmFsdWU9InskdXNlcm5hbWV9IiBuYW1lPSJ7JGFjdGlvbmlkfXVzZXJuYW1lIiByZXF1aXJlZCBhdXRvY29tcGxldGU9Im9mZiIvPgoJPC9kaXY+CgogICAgICAgIHsqIG9wdGlvbmFsIGNhcHRjaGEgKn0KICAgICAgICB7aWYgJGNhcHRjaGF9CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcHRjaGEiPgoJICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPnskY2FwdGNoYX08L2Rpdj4KCQl7aWYgJGNhcHRjaGFfaW5wdXRfbmFtZX0KCSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS02Ij57JG1vZC0+TGFuZygncHJvbXB0X2NhcHRjaGEnKX08L2Rpdj4KCSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS02Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJjb2wtc20tNiIgbmFtZT0ieyRjYXB0Y2hhX2lucHV0X25hbWV9IiBhdXRvY29tcGxldGU9Im9mZiIvPgoJICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICB7L2lmfQoJICAgIDwvZGl2PgogICAgICAgIHsvaWZ9CgogICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnc2VuZGNvZGUnKX0iLz4KICAgICAgICA8L2Rpdj4KICAgIHtmb3JtX2VuZH0KCnsvaWZ9]]></data>
	</file>
</module>
