# low_discuss v0.5
# An alternative to Textpattern's built-in comments functions
# Justin Low
# http://justinlow.com/

# ......................................................................
# This is a plugin for Textpattern - http://textpattern.com/
# To install: textpattern > admin > plugins
# Paste the following text into the 'Install plugin' box:
# ......................................................................

YTo5OntzOjc6InZlcnNpb24iO3M6MzoiMC41IjtzOjY6ImF1dGhvciI7czoxMDoiSnVzdGlu
IExvdyI7czoxMDoiYXV0aG9yX3VyaSI7czoyMToiaHR0cDovL2p1c3Rpbmxvdy5jb20vIjtz
OjExOiJkZXNjcmlwdGlvbiI7czo1OToiQW4gYWx0ZXJuYXRpdmUgdG8gVGV4dHBhdHRlcm4n
cyBidWlsdC1pbiBjb21tZW50cyBmdW5jdGlvbnMiO3M6NDoidHlwZSI7aTowO3M6NDoibmFt
ZSI7czoxMToibG93X2Rpc2N1c3MiO3M6NDoiaGVscCI7czozMTk5OiIKPGgxPk92ZXJ2aWV3
PC9oMT4KCgk8cD5BIHNldCBvZiBwbHVnaW5zIHRvIHJlcGxhY2UgdGhlIGJ1aWx0LWluIFRl
eHRwYXR0ZXJuIGZ1bmN0aW9ucy48L3A+CgoJPGgxPlByZXJlcXVpc2l0ZXM8L2gxPgoKCTxw
PllvdSB3aWxsIGFsc28gbmVlZCB0byB1c2UgYW5vdGhlciBwbHVnaW4sIDxzdHJvbmc+bG93
X2FydGljbGU8L3N0cm9uZz4gaW4gb3JkZXIgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhpcyBw
bHVnaW4mIzgyMTc7cyBmdW5jdGlvbnMuIFlvdSBjYW4gZG93bmxvYWQgdGhpcyBwbHVnaW4g
PGEgaHJlZj0iaHR0cDovL2p1c3Rpbmxvdy5jb20vcGx1Z2lucy9yZWxlYXNlL2xvd19hcnRp
Y2xlLnR4dCI+aGVyZTwvYT4uPC9wPgoKCTxoMT5UYWdzPC9oMT4KCTx1bD4KCTxsaT48Y29k
ZT4mbHQ7dHhwOmxvd19kaXNjdXNzIC8mZ3Q7PC9jb2RlPiYjODIxMjtEaXNwbGF5cyBjb21t
ZW50czwvbGk+CgkJPGxpPjxjb2RlPiZsdDt0eHA6bG93X2Rpc2N1c3NfZm9ybSAvJmd0Ozwv
Y29kZT4mIzgyMTI7RGlzcGxheXMgaW5wdXQgZm9ybTwvbGk+CgkJPGxpPjxjb2RlPiZsdDt0
eHA6bG93X2NvbW1lbnRzX2ludml0ZSAvJmd0OzwvY29kZT4mIzgyMTI7UmVwbGFjZXMgPGNv
ZGU+Jmx0O3R4cDpjb21tZW50c19pbnZpdGUgLyZndDs8L2NvZGU+PC9saT4KCQk8bGk+PGNv
ZGU+Jmx0O3R4cDpsb3dfZGlzY3Vzc192YWxpZGF0ZSAvJmd0OzwvY29kZT4mIzgyMTI7R2Vu
ZXJhdGVzIHRoZSBuZWNlc3NhcnkgSFRNTCBjb2RlIG5lZWRlZCBmb3IgdGhlIEphdmFzY3Jp
cHQgZm9ybSB2YWxpZGF0b3I7IHNlZSBub3RlcyBiZWxvdzwvbGk+Cgk8L3VsPgoKCTxoMT5B
dHRyaWJ1dGVzPC9oMT4KCgk8aDI+PGNvZGU+Jmx0O3R4cDpsb3dfZGlzY3VzcyAvJmd0Ozwv
Y29kZT48L2gyPgoJPHVsPgoJPGxpPjxjb2RlPnNvcnRieTwvY29kZT4mIzgyMTI7RGVmYXVs
dHMgdG8gPGNvZGU+cG9zdGVkPC9jb2RlPi4gRGVmaW5lcyB3aGljaCBmaWVsZCB0byBzb3J0
IGNvbW1lbnRzIGJ5LjwvbGk+CgkJPGxpPjxjb2RlPnNvcnRkaXI8L2NvZGU+JiM4MjEyO0Rl
ZmF1bHRzIHRvIDxjb2RlPmFzYzwvY29kZT4uIERlZmluZXMgd2hpY2ggZGlyZWN0aW9uIGNv
bW1lbnRzIGFyZSBzb3J0ZWQgaW4uPC9saT4KCQk8bGk+PGNvZGU+ZGlzcGxheWZvcm08L2Nv
ZGU+JiM4MjEyO0RlZmF1bHRzIHRvIDxjb2RlPmNvbW1lbnRzPC9jb2RlPi4gWW91IGNhbiB1
c2UgdGhpcyBhdHRyaWJ1dGUgdG8gZGVmaW5lIGEgY3VzdG9tIGZvcm0uPC9saT4KCTwvdWw+
CgoJPGgyPjxjb2RlPiZsdDt0eHA6bG93X2Rpc2N1c3NfZm9ybSAvJmd0OzwvY29kZT48L2gy
PgoJPHVsPgoJPGxpPjxjb2RlPmlucHV0Zm9ybTwvY29kZT4mIzgyMTI7RGVmYXVsdHMgdG8g
JiM4MjE3O0Bjb21tZW50X2Zvcm1AJiM4MjE3Oy4gWW91IGNhbiB1c2UgdGhpcyBhdHRyaWJ1
dGUgdG8gZGVmaW5lIGEgY3VzdG9tIGZvcm0uPC9saT4KCTwvdWw+CgoJPGgxPk5vdGVzPC9o
MT4KCgk8aDI+PGNvZGU+Jmx0O3R4cDpsb3dfZGlzY3Vzc192YWxpZGF0ZSAvJmd0OzwvY29k
ZT48L2gyPgoKCTxwPkluIG9yZGVyIHRvIHVzZSB0aGlzIHRhZywgeW91IHdpbGwgbmVlZCB0
byBkb3dubG9hZCB0aGUgSmF2YXNjcmlwdCBmaWxlIGZyb20gPGEgaHJlZj0iaHR0cDovL3d3
dy5qYXZhc2NyaXB0LWNvZGVyLmNvbS9odG1sLWZvcm0vamF2YXNjcmlwdC1mb3JtLXZhbGlk
YXRpb24ucGh0bWwiPkphdmFTY3JpcHQtQ29kZXIuY29tPC9hPi4gSSBjYW5ub3QgZGlzdHJp
YnV0ZSB0aGUgZmlsZSB3aXRoIHRoaXMgcGx1Z2luIGR1ZSB0byBsaWNlbnNpbmcgaXNzdWVz
LiA8YSBocmVmPSJodHRwOi8vd3d3LmphdmFzY3JpcHQtY29kZXIuY29tL2h0bWwtZm9ybS9q
YXZhc2NyaXB0X2Zvcm0uemlwIj5Eb3dubG9hZCB0aGUgemlwIGZpbGU8L2E+LCBleHRyYWN0
IGl0IHRvIGEgY29udmVuaWVudCBsb2NhdGlvbiBhbmQgdXBsb2FkIHRoZSBmaWxlIDxjb2Rl
Pmdlbl92YWxpZGF0b3J2Mi5qczwvY29kZT4gdG8geW91ciB3ZWJzaXRlLjwvcD4KCgk8cD5O
ZXh0LCB5b3Ugd2lsbCBuZWVkIHRvIHBhc3RlIHRoZSBmb2xsb3dpbmcgY29kZSBpbnRvIHlv
dXIgcGFnZSB0ZW1wbGF0ZXMsIHdpdGhpbiB0aGUgPGNvZGU+Jmx0O2hlYWQmZ3Q7Li4uJmx0
Oy9oZWFkJmd0OzwvY29kZT4gdGFnczo8L3A+Cgo8Y29kZT4mbHQ7c2NyaXB0IGxhbmd1YWdl
PSJKYXZhU2NyaXB0IiBzcmM9Ii9nZW5fdmFsaWRhdG9ydjIuanMiIHR5cGU9InRleHQvamF2
YXNjcmlwdCImZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7PC9jb2RlPgoKCTxwPkluIHRoZSBhYm92ZSBp
bnN0YW5jZSwgaXQgaXMgYXNzdW1lZCB0aGF0IHlvdSBoYXZlIHBsYWNlZCB0aGUgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgeW91ciB3ZWJzaXRlLjwvcD4KCgk8cD5PbmNlIHRo
aXMgaXMgZG9uZSwgeW91IGNhbiBwbGFjZSB0aGUgPGNvZGU+Jmx0O3R4cDpsb3dfZGlzY3Vz
c192YWxpZGF0ZSAvJmd0OzwvY29kZT4gdGFnIGFmdGVyIHRoZSA8Y29kZT4mbHQ7dHhwOmxv
d19kaXNjdXNzX2Zvcm0gLyZndDs8L2NvZGU+IHRhZyBpbiB5b3VyIHRlbXBsYXRlLjwvcD4K
Cgk8aDE+U2FtcGxlPC9oMT4KCgk8cD5UaGlzIGlzIGEgYmFzaWMgaW1wbGVtZW50YXRpb24g
b2YgdGhlIHBsdWdpbiBmdW5jdGlvbmFsaXR5LjwvcD4KCjxjb2RlPiZsdDt0eHA6aWZfYXJ0
aWNsZV9saXN0Jmd0OzwvY29kZT48YnIgLz4KPGNvZGU+Jmx0O3R4cDpjb21tZW50c19pbnZp
dGUgLyZndDs8L2NvZGU+PGJyIC8+Cjxjb2RlPiZsdDsvdHhwOmlmX2FydGljbGVfbGlzdCZn
dDs8L2NvZGU+PGJyIC8+Cjxjb2RlPiA8L2NvZGU+PGJyIC8+Cjxjb2RlPiZsdDt0eHA6aWZf
aW5kaXZpZHVhbF9hcnRpY2xlJmd0OzwvY29kZT48YnIgLz4KPGNvZGU+Jmx0O3R4cDpsb3df
ZGlzY3VzcyAvJmd0OzwvY29kZT48YnIgLz4KPGNvZGU+Jmx0O3R4cDpsb3dfZGlzY3Vzc19m
b3JtIC8mZ3Q7PC9jb2RlPjxiciAvPgo8Y29kZT4mbHQ7dHhwOmxvd19kaXNjdXNzX3ZhbGlk
YXRlIC8mZ3Q7PC9jb2RlPjxiciAvPgo8Y29kZT4mbHQ7L3R4cDppZl9pbmRpdmlkdWFsX2Fy
dGljbGUmZ3Q7PC9jb2RlPgoKCTxwPk5vdGUgdGhhdCB3aXRob3V0IHRoZSBjb25kaXRpb25h
bCB0YWdzLCB5b3Ugd291bGQgc2VlIHRoZSBjb21tZW50cyBhbmQgZm9ybSAoZGVwZW5kaW5n
IG9uIHdoYXQgeW91IHVzZSkgZXZlbiBvbiB0aGUgYXJ0aWNsZSBsaXN0IHBhZ2UuPC9wPgoK
IjtzOjQ6ImNvZGUiO3M6NTU1NDoiCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gRXhhbXBsZSBwdWJsaWMgc2lkZSB0YWdzCgoJ
Ly8gQSBzaW1wbGUgc2VsZi1jbG9zaW5nIHRhZwoJLy8gPHR4cDp6ZW1faGVsbG9fd29ybGQg
bmFtZT0iQm9iIiAvPgoKCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZnVuY3Rpb24gbG93X2Rpc2N1c3MoJGF0dHMp
CnsKCWdsb2JhbCAkY29tbWVudHNfYXJlX29sLCAkdGhpc2FydGljbGU7CgkkSUQgPSAkdGhp
c2FydGljbGVbJ3RoaXNpZCddOwoKCWV4dHJhY3QobEF0dHMoYXJyYXkoCgkJJ2Rpc3BsYXlm
b3JtJyAgPT4gJ2NvbW1lbnRzJywKCQknc29ydGJ5JyAgICAgICA9PiAncG9zdGVkJywKCQkn
c29ydGRpcicgICAgICA9PiAnYXNjJywKCSksJGF0dHMpKTsKCglleHRyYWN0KAoJCXNhZmVf
cm93KAoJCQkiQW5ub3RhdGUsQW5ub3RhdGVJbnZpdGUsdW5peF90aW1lc3RhbXAoUG9zdGVk
KSBhcyB1UG9zdGVkIiwKCQkJCSJ0ZXh0cGF0dGVybiIsICJJRD0nJElEJyIKCQkpCgkpOwoK
CSRkYXJyID0gbG93X2ZldGNoQ29tbWVudHMoJElELCAkc29ydGJ5LCAkc29ydGRpcik7CgoJ
Ly8kb3V0ID0gbi4nPGgzIGlkPSInLmdUeHQoJ2NvbW1lbnQnKS4nIj4nLiRBbm5vdGF0ZUlu
dml0ZS4nPC9oMz4nLm47CgoKCglpZiAoJGRhcnIpIHsKCQkkb3V0Lj0gKCRjb21tZW50c19h
cmVfb2wpID8gJzxvbD4nLm4gOiAnJzsKCQkkb3V0Lj0gbG93X2Zvcm1hdENvbW1lbnRzKCRk
YXJyLCAkZGlzcGxheWZvcm0pOwoJCSRvdXQuPSAoJGNvbW1lbnRzX2FyZV9vbCkgPyBuLic8
L29sPicgOiAnJzsKCX0KCgkJJHdhc0Fubm90YXRlZCA9ICghJEFubm90YXRlKSA/IGdldENv
dW50KCd0eHBfZGlzY3VzcycsInBhcmVudGlkPSRJRCIpIDogJyc7CgovKgkJaWYgKCFjaGVj
a0NvbW1lbnRzQWxsb3dlZCgkSUQpKSB7CgkJCSRvdXQgLj0gZ3JhZihnVHh0KCJjb21tZW50
c19jbG9zZWQiKSk7CgkJfSBlbHNlIHsKCQkJJG91dCAuPSBsb3dfY29tbWVudEZvcm0oICRJ
RCApOwoJCX0qLwoJcmV0dXJuICRvdXQ7Cgp9Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZnVuY3Rpb24gbG93X2Zl
dGNoQ29tbWVudHMoJGlkLCAkc29ydGJ5LCAkc29ydGRpcikKewoJJHJzID0gc2FmZV9yb3dz
KAoJCSIqLCB1bml4X3RpbWVzdGFtcChwb3N0ZWQpIGFzIHRpbWUiLAoJCSJ0eHBfZGlzY3Vz
cyIsICJwYXJlbnRpZD0nJGlkJyBhbmQgdmlzaWJsZT0nMScgb3JkZXIgYnkgIi4kc29ydGJ5
LiIgIi4kc29ydGRpcgoJKTsKCglpZiAoJHJzKSByZXR1cm4gJHJzOwp9Ci8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
ZnVuY3Rpb24gbG93X2Zvcm1hdENvbW1lbnRzKCRkYXJyLCAkZGlzcGxheWZvcm0pCnsKCWds
b2JhbCAkcHJlZnMsJHR4cGNmZywkY29tbWVudHNfZGlzYWxsb3dfaW1hZ2VzLCR0eHBhYzsK
CWV4dHJhY3QoJHByZWZzKTsKCSRwcmV2aWV3ID0gZ3BzKCdwcmV2aWV3Jyk7CgkkaWQgPSBn
cHMoJ2lkJyk7CgkkRm9ybSA9IGZldGNoKCdGb3JtJywndHhwX2Zvcm0nLCduYW1lJywkZGlz
cGxheWZvcm0pOwoJJG91dCA9IGFycmF5KCk7CgoJZm9yZWFjaCgkZGFyciBhcyAkdmFycykg
ewoJCSRHTE9CQUxTWyd0aGlzY29tbWVudCddID0gJHZhcnM7CgkJZXh0cmFjdCgkdmFycyk7
CgoJCWlmKCRjb21tZW50c19kYXRlZm9ybWF0ID09ICJzaW5jZSIpIHsKCQkJJGNvbW1lbnRf
dGltZSA9IHNpbmNlKCR0aW1lICsgdHpfb2Zmc2V0KCkpOwoJCX0gZWxzZSB7CgkJCSRjb21t
ZW50X3RpbWUgPSBzYWZlX3N0cmZ0aW1lKCRjb21tZW50c19kYXRlZm9ybWF0LCR0aW1lKTsK
CQl9CgoJCSR3ZWIgPSBzdHJfcmVwbGFjZSgiaHR0cDovLyIsICIiLCAkd2ViKTsKCgkJaWYg
KCRlbWFpbCAmJiAhJHdlYiAmJiAhJHR4cGFjWyduZXZlcl9kaXNwbGF5X2VtYWlsJ10pCgkJ
CSRuYW1lID0gJzxhIGhyZWY9IicuZUUoJ21haWx0bzonLiRlbWFpbCkuJyInLihAJHR4cGFj
Wydjb21tZW50X25vZm9sbG93J10gPyAnIHJlbD0ibm9mb2xsb3ciJyA6ICcnKS4nPicuJG5h
bWUuJzwvYT4nOwoKCQlpZiAoJHdlYikKCQkJJG5hbWUgPSAnPGEgaHJlZj0iaHR0cDovLycu
JHdlYi4nIiB0aXRsZT0iJy4kd2ViLiciJy4oQCR0eHBhY1snY29tbWVudF9ub2ZvbGxvdydd
ID8gJyByZWw9Im5vZm9sbG93IicgOiAnJykuJz4nLiRuYW1lLic8L2E+JzsKCgkJJGRsaW5r
ID0gcGVybWxpbmt1cmxfaWQoJHBhcmVudGlkKS4nI2MnLiRkaXNjdXNzaWQ7CgoJCSR2YWxz
ID0gYXJyYXkoCgkJCSdjb21tZW50X25hbWUnPT4kbmFtZSwKCQkJJ21lc3NhZ2UnPT4kbWVz
c2FnZSwKCQkJJ2NvbW1lbnRfdGltZSc9PiRjb21tZW50X3RpbWUKCQkpOwoKCQkkdGVtcCA9
ICRGb3JtOwoJCWZvcmVhY2goJHZhbHMgYXMgJGE9PiRiKSB7CgkJCSR0ZW1wID0gc3RyX3Jl
cGxhY2UoJzx0eHA6Jy4kYS4nIC8+JywkYiwkdGVtcCk7CgkJfQoKCQkkdGVtcCA9IHByZWdf
cmVwbGFjZSgnLzwodHhwOmNvbW1lbnRfcGVybWxpbmspPiguKik8XC9cXDE+L1UnLAoJCQkn
PGEgaHJlZj0iJy4kZGxpbmsuJyI+JDI8L2E+JywkdGVtcCk7CgkJJHRlbXAgPSBwYXJzZSgk
dGVtcCk7CgoJCSRvdXRbXSA9ICgkY29tbWVudHNfYXJlX29sKQoJCT8Jbi50Lic8bGkgaWQ9
ImMnLiRkaXNjdXNzaWQuJyI+Jy4kdGVtcC4nPC9saT4nCgkJOgluLnQuJzxkaXYgaWQ9ImMn
LiRkaXNjdXNzaWQuJyI+Jy4kdGVtcC4nPC9kaXY+JzsKCX0KCQlyZXR1cm4gam9pbihuLCRv
dXQpOwoJfQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCmZ1bmN0aW9uIGxvd19kaXNjdXNzX2Zvcm0oJGF0dHMpCnsK
CWdsb2JhbCAkdHhwYWMsICR0aGlzYXJ0aWNsZTsKCSRJRCA9ICR0aGlzYXJ0aWNsZVsndGhp
c2lkJ107CgkkaWQgPSAkSUQ7CgoJZXh0cmFjdChsQXR0cyhhcnJheSgKCQknaW5wdXRmb3Jt
JyAgICA9PiAnY29tbWVudF9mb3JtJywKCSksJGF0dHMpKTsKCgkkbmFtZXdhcm4gPSAnJzsK
CSRlbWFpbHdhcm4gPSAnJzsKCSRjb21tZW50d2FybiA9ICcnOwoJJG5hbWU9IHBjcygnbmFt
ZScpOwoJJGVtYWlsPSBwY3MoJ2VtYWlsJyk7Cgkkd2ViPSBwY3MoJ3dlYicpOwoJZXh0cmFj
dCggZG9TdHJpcFRhZ3MoIGRvRGVFbnQgKCBwc2EoIGFycmF5KAoJCSdyZW1lbWJlcicsCgkJ
J2ZvcmdldCcsCgkJJ3BhcmVudGlkJywKCQkncHJldmlldycsCgkJJ21lc3NhZ2UnLAoJCSdz
dWJtaXQnLAoJCSdiYWNrcGFnZScKCSkgKSApICkgKTsKCgkkcGFyZW50aWQgPSAoISRwYXJl
bnRpZCkgPyAkaWQgOiAkcGFyZW50aWQ7CgoJaWYgKCRyZW1lbWJlcj09MSkgeyBzZXRDb29r
aWVzKCRuYW1lLCRlbWFpbCwkd2ViKTsgfQoJaWYgKCRmb3JnZXQ9PTEpIHsgZGVzdHJveUNv
b2tpZXMoKTsgfQoKCSRvdXQgPSAnPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb249IiIgbmFt
ZT0iZGlzY3Vzc19mb3JtIj4nOwoKCSRmb3JtID0gZmV0Y2goJ0Zvcm0nLCd0eHBfZm9ybScs
J25hbWUnLCdjb21tZW50X2Zvcm0nKTsKCgkkdGV4dGFyZWEgPSAnPHRleHRhcmVhIG5hbWU9
Im1lc3NhZ2UiIGNvbHM9IjMwIiByb3dzPSIxMiIgdGFiaW5kZXg9IjQiPicuaHRtbHNwZWNp
YWxjaGFycygkbWVzc2FnZSkuJzwvdGV4dGFyZWE+JzsKCgkkY29tbWVudF9zdWJtaXRfYnV0
dG9uID0gZklucHV0KCdzdWJtaXQnLCdzdWJtaXQnLGdUeHQoJ3N1Ym1pdCcpLCdidXR0b24n
KTsKCgkkY2hlY2tib3ggPSAoIWVtcHR5KCRfQ09PS0lFWyd0eHBfbmFtZSddKSkKCT8JY2hl
Y2tib3goJ2ZvcmdldCcsMSwwKS4nICcuZ1R4dCgnZm9yZ2V0JykKCToJY2hlY2tib3goJ3Jl
bWVtYmVyJywxLDEpLicgJy5nVHh0KCdyZW1lbWJlcicpOwoKCSR2YWxzID0gYXJyYXkoCgkJ
J2NvbW1lbnRfbmFtZV9pbnB1dCcgICAgPT4gJG5hbWV3YXJuLmlucHV0KCd0ZXh0JywnbmFt
ZScsICAkbmFtZSwgIjI1IiwnJywiMSIpLAoJCSdjb21tZW50X2VtYWlsX2lucHV0JyAgID0+
ICRlbWFpbHdhcm4uaW5wdXQoJ3RleHQnLCdlbWFpbCcsICRlbWFpbCwiMjUiLCcnLCIyIiks
CgkJJ2NvbW1lbnRfd2ViX2lucHV0JyAgICAgPT4gaW5wdXQoJ3RleHQnLCd3ZWInLCAgICR3
ZWIsICAiMjUiLCcnLCIzIiksCgkJJ2NvbW1lbnRfbWVzc2FnZV9pbnB1dCcgPT4gJGNvbW1l
bnR3YXJuLiR0ZXh0YXJlYSwKCQknY29tbWVudF9yZW1lbWJlcicgICAgICA9PiAkY2hlY2ti
b3gsCgkJJ2NvbW1lbnRfcHJldmlldycgICAgICAgPT4gbnVsbCwKCQknY29tbWVudF9zdWJt
aXQnICAgICAgICA9PiBmSW5wdXQoJ3N1Ym1pdCcsJ3N1Ym1pdCcsZ1R4dCgnc3VibWl0Jyks
J2J1dHRvbicpCgkpOwoKCWZvcmVhY2ggKCR2YWxzIGFzICRhPT4kYikgewoJCSRmb3JtID0g
c3RyX3JlcGxhY2UoJzx0eHA6Jy4kYS4nIC8+JywkYiwkZm9ybSk7Cgl9CgoJJGZvcm0gPSBw
YXJzZSgkZm9ybSk7CgoJJG5vbmNlID0gbWQ1KCB1bmlxaWQoIHJhbmQoKSwgdHJ1ZSApICk7
CglzYWZlX2luc2VydCgidHhwX2Rpc2N1c3Nfbm9uY2UiLCAiaXNzdWVfdGltZT1ub3coKSwg
bm9uY2U9JyRub25jZSciKTsKCgkkb3V0IC49ICRmb3JtOwoJJG91dCAuPSBncmFmKGZJbnB1
dCgnaGlkZGVuJywncGFyZW50aWQnLCRwYXJlbnRpZCkpOwoJJG91dCAuPSBoSW5wdXQoJ25v
bmNlJywkbm9uY2UpOwoKCSRvdXQgLj0gZ3JhZihmSW5wdXQoJ2hpZGRlbicsJ2JhY2twYWdl
JyxzZXJ2ZXJzZXQoIlJFUVVFU1RfVVJJIikpKTsKCSRvdXQgLj0gJzwvZm9ybT4nOwoKCWlm
ICghY2hlY2tDb21tZW50c0FsbG93ZWQoJElEKSkgewoJCXJldHVybiBncmFmKGdUeHQoImNv
bW1lbnRzX2Nsb3NlZCIpKTsKCX0gZWxzZSB7CgkJcmV0dXJuICRvdXQ7Cgl9Cn0KLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpmdW5jdGlvbiBsb3dfZGlzY3Vzc192YWxpZGF0ZSgpCnsKCSRzID0gJzxzY3JpcHQg
bGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgdmFyIGZy
bXZhbGlkYXRvciAgPSBuZXcgVmFsaWRhdG9yKCJkaXNjdXNzX2Zvcm0iKTsKICBmcm12YWxp
ZGF0b3IuYWRkVmFsaWRhdGlvbigibmFtZSIsInJlcSIsIlBsZWFzZSBlbnRlciB5b3VyIG5h
bWUiKTsKCiAgZnJtdmFsaWRhdG9yLmFkZFZhbGlkYXRpb24oImVtYWlsIiwicmVxIiwiUGxl
YXNlIGVudGVyIHlvdXIgZW1haWwgYWRkcmVzcyIpOwogIGZybXZhbGlkYXRvci5hZGRWYWxp
ZGF0aW9uKCJlbWFpbCIsImVtYWlsIiwiUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRk
cmVzcyIpOwogIGZybXZhbGlkYXRvci5hZGRWYWxpZGF0aW9uKCJtZXNzYWdlIiwicmVxIiwi
UGxlYXNlIGVudGVyIHlvdXIgY29tbWVudCIpOwoKPC9zY3JpcHQ+JzsKCXJldHVybiAkczsK
fQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiI7czozOiJtZDUiO3M6MzI6IjFiYTRiZjZlNTUwYzA5MmMxNmQzOGU3
MzJmNzEwNWQ0Ijt9
