# rvm_plugin_diff v0.3 # Find changes made to installed plugins # # License: GNU GPLv2 or later # # Ruud van Melick # http://vanmelick.com/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTU6InJ2bV9wbHVnaW5fZGlmZiI7czo3OiJ2ZXJzaW9uIjtz OjM6IjAuMyI7czo2OiJhdXRob3IiO3M6MTU6IlJ1dWQgdmFuIE1lbGljayI7czoxMDoiYXV0 aG9yX3VyaSI7czoyMToiaHR0cDovL3Zhbm1lbGljay5jb20vIjtzOjExOiJkZXNjcmlwdGlv biI7czozODoiRmluZCBjaGFuZ2VzIG1hZGUgdG8gaW5zdGFsbGVkIHBsdWdpbnMiO3M6NDoi dHlwZSI7aToxO3M6NDoiaGVscCI7czo1NjA6IjxwPkluIHRoZSBleHRlbnNpb25zIHRhYiwg eW91JiM4MjE3O2xsIGZpbmQgYSBuZXcgdGFiIGNhbGxlZCAmIzgyMTY7UGx1Z2luIERpZmYm IzgyMTc7LCB3aGljaCB5b3UgY2FuIHVzZSB0bzo8L3A+Cgo8dWw+Cgk8bGk+RmluZCB3aGF0 IGNoYW5nZXMgd2VyZSBtYWRlIHRvIGluc3RhbGxlZCBwbHVnaW5zLjwvbGk+Cgk8bGk+RG93 bmxvYWQgdGhvc2UgY2hhbmdlcyBpbiB1bmlmaWVkIGRpZmYgZm9ybWF0LiBUaGUgcmVzdWx0 aW5nIHBhdGNoIHVzZXMgPHNwYW4gY2xhc3M9ImNhcHMiPlVOSVg8L3NwYW4+LXN0eWxlIChM RikgbGluZSBlbmRpbmdzLCB3aGljaCB5b3UgbWF5IGhhdmUgdG8gY29udmVydCBpZiB5b3Um IzgyMTc7cmUgZGV2ZWxvcGluZyBvbiBhIGRpZmZlcmVudCBwbGF0Zm9ybSAoV2luZG93cyA9 IDxzcGFuIGNsYXNzPSJjYXBzIj5DUkxGPC9zcGFuPiwgTWFjID0gQ1IpLjwvbGk+Cgk8bGk+ U2VlIHRoZSBjb2RlIHdpdGggbGluZSBudW1iZXJzIGF0IHRoZSBiZWdpbm5pbmcgb2YgZWFj aCBsaW5lIChtYWtlcyBmaW5kaW5nIGVycm9ycyBlYXNpZXIpLjwvbGk+CjwvdWw+IjtzOjQ6 ImNvZGUiO3M6ODk4NToiaWYgKEB0eHBpbnRlcmZhY2UgPT0gJ2FkbWluJykgewogIGFkZF9w cml2cygncnZtX3BsdWdpbl9kaWZmJywgJzEsMicpOwogIHJlZ2lzdGVyX3RhYignZXh0ZW5z aW9ucycsICdydm1fcGx1Z2luX2RpZmYnLCAnUGx1Z2luIERpZmYnKTsKICByZWdpc3Rlcl9j YWxsYmFjaygncnZtX3BsdWdpbl9kaWZmJywgJ3J2bV9wbHVnaW5fZGlmZicpOwp9CgovKioK ICBEaWZmIHJvdXRpbmUgdXNlcyBzb21lIHBhcnRzIG9mIHRoZSBjb2RlIGZvdW5kIGF0IHRo aXMgYWRkcmVzczoKICBodHRwOi8vd3d3LmhvbG9taW5kLmRlL3BocG5ldC9kaWZmMi5zcmMu cGhwCiAgQ29weXJpZ2h0IChDKSAyMDAzICBEYW5pZWwgVW50ZXJiZXJnZXIgPGRpZmYucGhw bmV0QGhvbG9taW5kLmRlPgogIENvcHlyaWdodCAoQykgMjAwNSAgTmlscyBLbmFwcG1laWVy IChuZXh0IHZlcnNpb24pCiAgTGljZW5zZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug dmVyc2lvbiAyIG9yIGxhdGVyCiAgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC5o dG1sCioqLwoKZnVuY3Rpb24gcnZtX3BsdWdpbl9kaWZmKCRldmVudCwgJHN0ZXApIHsKICBw YWdldG9wKCdQbHVnaW4gRGlmZicpOwoKICAkbmFtZSA9IGdwcygnbmFtZScpOwogICRub3Nw YWNlID0gZ3BzKCdub3NwYWNlJykgPyAxIDogMDsKICAkY29udGV4dCA9IGlzX251bWVyaWMo Z3BzKCdjb250ZXh0JykpID8gaW50dmFsKGdwcygnY29udGV4dCcpKSA6ICc1JzsKCiAgJHBs dWdpbnMgPSBhcnJheSgpOwogICRtcGx1Z2lucyA9IHNhZmVfY29sdW1uKCduYW1lJywgJ3R4 cF9wbHVnaW4nLCAnY29kZSAhPSBjb2RlX3Jlc3RvcmUnKTsKICAkb3BsdWdpbnMgPSBzYWZl X2NvbHVtbignbmFtZScsICd0eHBfcGx1Z2luJywgJ2NvZGUgPSBjb2RlX3Jlc3RvcmUnKTsK ICBhc29ydCgkb3BsdWdpbnMpOyBhc29ydCgkbXBsdWdpbnMpOwogIGlmICgkbXBsdWdpbnMp IHsKICAgICRwbHVnaW5zW10gPSAnICc7CiAgICBpZiAoJG9wbHVnaW5zKSAkcGx1Z2luc1td ID0gJyAtLS0tLSBNT0RJRklFRCAtLS0tLSAnOwogICAgZm9yZWFjaCgkbXBsdWdpbnMgYXMg JHBsdWdpbikgJHBsdWdpbnNbXSA9ICRwbHVnaW47CiAgfQogIGlmICgkb3BsdWdpbnMpIHsK ICAgICRwbHVnaW5zW10gPSAnICc7CiAgICBpZiAoJG1wbHVnaW5zKSAkcGx1Z2luc1tdID0g JyAtLS0tLSBPUklHSU5BTCAtLS0tLSAnOwogICAgZm9yZWFjaCgkb3BsdWdpbnMgYXMgJHBs dWdpbikgJHBsdWdpbnNbXSA9ICRwbHVnaW47CiAgfQogIGlmIChpc3NldCgkcGx1Z2luc1sk bmFtZV0pKSAkbmFtZSA9ICRwbHVnaW5zWyRuYW1lXTsKCiAgZWNobyAnPGRpdiBzdHlsZT0i Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JhY2tncm91bmQ6I2Y3ZjdmNztwYWRkaW5nOjFlbTtt YXJnaW4tbGVmdDoyZW07ZmxvYXQ6bGVmdDsiPic7CiAgZWNobyBmb3JtKAogICAgJzxwPlBs dWdpbiAnLnNlbGVjdElucHV0KCduYW1lJywgJHBsdWdpbnMsICRuYW1lLCAwKS4nPC9wPicu CiAgICAnPHA+U2hvdyA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iY29udGV4dCIgbWF4bGVu Z3RoPSI0IiBzaXplPSIzIiB2YWx1ZT0iJy4kY29udGV4dC4nIiBjbGFzcz0iZWRpdCIgLz4g bGluZXMgYXJvdW5kIGVhY2ggY2hhbmdlPC9wPicuCiAgICAnPHA+Jy5jaGVja2JveCgnbm9z cGFjZScsJ2lnbm9yZScsJG5vc3BhY2UpLicgSWdub3JlIHdoaXRlIHNwYWNlIGNoYW5nZXM8 L3A+Jy4KICAgIGVJbnB1dCgncnZtX3BsdWdpbl9kaWZmJykuCiAgICBmSW5wdXQoJ3N1Ym1p dCcsJycsJ1Nob3cgQ2hhbmdlcycsJ3B1Ymxpc2gnKQogICk7CiAgZWNobyAnPC9kaXY+JzsK ICBlY2hvICc8YnIgc3R5bGU9ImNsZWFyOmJvdGgiIC8+JzsKCiAgJHJzID0gc2FmZV9yb3co J2NvZGUsY29kZV9yZXN0b3JlLG5hbWUsdmVyc2lvbicsICd0eHBfcGx1Z2luJywgIm5hbWU9 JyIuc2FmZV9lc2NhcGUoJG5hbWUpLiInIik7CiAgaWYgKCEkcnMpIHJldHVybjsKICBleHRy YWN0KCRycyk7CiAgdW5zZXQoJHJzKTsKCiAgIyBmb3JjZSBVbml4LXN0eWxlIGxpbmUgYnJl YWtzCiAgJGNvZGVfcmVzdG9yZSA9IHN0cl9yZXBsYWNlKCJcclxuIiwgbiwgJGNvZGVfcmVz dG9yZSk7CiAgJGNvZGVfcmVzdG9yZSA9IHN0cl9yZXBsYWNlKCJcciIsIG4sICRjb2RlX3Jl c3RvcmUpOwogICRjb2RlID0gc3RyX3JlcGxhY2UoIlxyXG4iLCBuLCAkY29kZSk7CiAgJGNv ZGUgPSBzdHJfcmVwbGFjZSgiXHIiLCBuLCAkY29kZSk7CgogICMgc3BsaXQgdGhlIHNvdXJj ZSB0ZXh0IGludG8gYXJyYXlzIG9mIGxpbmVzCiAgJHQxID0gZXhwbG9kZShuLHRyaW0oJGNv ZGVfcmVzdG9yZSkpOwogICR0MiA9IGV4cGxvZGUobix0cmltKCRjb2RlKSk7CiAgdW5zZXQo JGNvZGVfcmVzdG9yZSwkY29kZSk7CgogICMgYnVpbGQgYSByZXZlcnNlLWluZGV4IGFycmF5 IHVzaW5nIHRoZSBsaW5lIGFzIGtleSBhbmQgbGluZSBudW1iZXIgYXMgdmFsdWUKICBmb3Jl YWNoKCR0MSBhcyAkaT0+JHgpICRyMVskeF1bXSA9ICRpOwogIGZvcmVhY2goJHQyIGFzICRp PT4keCkgJHIyWyR4XVtdID0gJGk7CgogICRhMT0wOyAkYTI9MDsgICAjIHN0YXJ0IGF0IGJl Z2lubmluZyBvZiBlYWNoIGxpc3QKICAkYWN0aW9ucyA9IGFycmF5KCk7CiAgJGlzX2RpZmYg PSBmYWxzZTsKCiAgIyB3YWxrIHRoaXMgbG9vcCB1bnRpbCB3ZSByZWFjaCB0aGUgZW5kIG9m IG9uZSBvZiB0aGUgbGlzdHMKICB3aGlsZSAoJGExPGNvdW50KCR0MSkgJiYgJGEyPGNvdW50 KCR0MikpIHsKICAgICMgaWYgd2UgaGF2ZSBhIGNvbW1vbiBlbGVtZW50LCBzYXZlIGl0IGFu ZCBnbyB0byB0aGUgbmV4dAogICAgaWYgKCRub3NwYWNlID8gdHJpbSgkdDFbJGExXSk9PXRy aW0oJHQyWyRhMl0pIDogJHQxWyRhMV09PSR0MlskYTJdKQogICAgICB7ICRhY3Rpb25zW109 MDsgJGExKys7ICRhMisrOyBjb250aW51ZTsgfQogICAgIyBvdGhlcndpc2UsIGZpbmQgdGhl IHNob3J0ZXN0IG1vdmUgKE1hbmhhdHRhbi1kaXN0YW5jZSkgZnJvbSB0aGUKICAgICMgY3Vy cmVudCBsb2NhdGlvbgogICAgJGlzX2RpZmYgPSB0cnVlOwogICAgJGJlc3QxPWNvdW50KCR0 MSk7ICRiZXN0Mj1jb3VudCgkdDIpOwogICAgJHMxPSRhMTsgJHMyPSRhMjsKICAgIHdoaWxl KCRzMSskczIgPCAkYmVzdDErJGJlc3QyKSB7CiAgICAgICRkPS0xOwogICAgICBmb3JlYWNo KChhcnJheSlAJHIxWyR0MlskczJdXSBhcyAkbikKICAgICAgICBpZiAoJG4+PSRzMSkgeyAk ZD0kbjsgYnJlYWs7IH0KICAgICAgaWYgKCRkPj0kczEgYW5kICRkKyRzMiA8ICRiZXN0MSsk YmVzdDIpCiAgICAgICAgeyAkYmVzdDE9JGQ7ICRiZXN0Mj0kczI7IH0KICAgICAgJGQ9LTE7 CiAgICAgIGZvcmVhY2goKGFycmF5KUAkcjJbJHQxWyRzMV1dIGFzICRuKQogICAgICAgIGlm ICgkbj49JHMyKSB7ICRkPSRuOyBicmVhazsgfQogICAgICBpZiAoJGQ+PSRzMiBhbmQgJHMx KyRkIDwgJGJlc3QxKyRiZXN0MikKICAgICAgICB7ICRiZXN0MT0kczE7ICRiZXN0Mj0kZDsg fQogICAgICAkczErKzsgJHMyKys7CiAgICB9CiAgICB3aGlsZSAoJGExPCRiZXN0MSkgeyAk YWN0aW9uc1tdPTE7ICRhMSsrOyB9ICAjIGRlbGV0ZWQgZWxlbWVudHMKICAgIHdoaWxlICgk YTI8JGJlc3QyKSB7ICRhY3Rpb25zW109MjsgJGEyKys7IH0gICMgYWRkZWQgZWxlbWVudHMK ICB9CiAgdW5zZXQoJHIxLCRyMik7CgogICMgd2UndmUgcmVhY2hlZCB0aGUgZW5kIG9mIG9u ZSBsaXN0LCBub3cgd2FsayB0byB0aGUgZW5kIG9mIHRoZSBvdGhlcgogIHdoaWxlKCRhMTxj b3VudCgkdDEpKSB7ICRhY3Rpb25zW109MTsgJGExKys7IH0gICMgZGVsZXRlZCBlbGVtZW50 cwogIHdoaWxlKCRhMjxjb3VudCgkdDIpKSB7ICRhY3Rpb25zW109MjsgJGEyKys7IH0gICMg YWRkZWQgZWxlbWVudHMKCiAgIyBjcmVhdGUgJGxpbmVzIGFycmF5IHdpdGggYWxsIG5lZWRl ZCBpbmZvIGZvciBmdXJ0aGVyIHByb2Nlc3NpbmcKICAkaTE9JGkyPTA7CiAgJGxpbmVzID0g YXJyYXkoKTsKICBmb3JlYWNoKCRhY3Rpb25zIGFzICRhY3QpIHsKICAgICRsaW5lID0gKCRh Y3Q9PTEgPyAkdDFbJGkxXSA6ICR0MlskaTJdKTsKICAgICRsaW5lX29sZCA9ICgkYWN0PT0y ID8gMCA6ICsrJGkxKTsKICAgICRsaW5lX25ldyA9ICgkYWN0PT0xID8gMCA6ICsrJGkyKTsK ICAgICRsaW5lc1tdID0gYXJyYXkoJGxpbmVfb2xkLCAkbGluZV9uZXcsICRsaW5lLCAyKTsK ICB9CgogICMgcmVtZW1iZXIgaG93IG11Y2ggc3BhY2UgdGhlIGxpbmUgbnVtYmVycyB3aWxs IG5lZWQKICAkbjEgPSBzdHJsZW4oY291bnQoJHQxKSk7IGlmICgkbjEgPCAzKSAkbjEgPSAz OyAkbjErKzsKICAkbjIgPSBzdHJsZW4oY291bnQoJHQyKSk7IGlmICgkbjIgPCAzKSAkbjIg PSAzOyAkbjIrKzsKICB1bnNldCgkdDEsJHQyLCRhY3Rpb25zKTsKCiAgIyBtYXJrIGxpbmVz IHRoYXQgYXJlIG5lZWRlZCB0byBwcm92aWRlIGNvbnRleHQKICBpZiAoJGlzX2RpZmYpIHsK ICAgIGlmICh0cmltKCRjb250ZXh0KSAhPSAnJykgewogICAgICAkY291bnQgPSAwOwogICAg ICBmb3JlYWNoKCRsaW5lcyBhcyAkbnIgPT4gJGxpbmUpIHsKICAgICAgICBpZiAoJGxpbmVb MF0gYW5kICRsaW5lWzFdKSB7CiAgICAgICAgICBpZiAoJGNvdW50KSAkY291bnQtLTsKICAg ICAgICAgIGVsc2UgJGxpbmVzWyRucl1bM10tLTsKICAgICAgICB9CiAgICAgICAgZWxzZSAk Y291bnQgPSAkY29udGV4dDsKICAgICAgfQogICAgICAkY291bnQgPSAwOwogICAgICBmb3Io JG5yID0gY291bnQoJGxpbmVzKS0xOyAkbnIgPj0gMDsgJG5yLS0pIHsKICAgICAgICBpZiAo JGxpbmVzWyRucl1bMF0gYW5kICRsaW5lc1skbnJdWzFdKSB7CiAgICAgICAgICBpZiAoJGNv dW50KSAkY291bnQtLTsKICAgICAgICAgIGVsc2UgJGxpbmVzWyRucl1bM10tLTsKICAgICAg ICB9CiAgICAgICAgZWxzZSAkY291bnQgPSAkY29udGV4dDsKICAgICAgfQogICAgfQoKICAg ICMgdW5pZmllZCBkaWZmCiAgICBpZiAoZ3BzKCdmb3JtYXQnKSkgewogICAgICAkdWRpZmYg PSAnJzsKICAgICAgJGRpZmYgPSBhcnJheSgwLDAsMCwwKTsKICAgICAgZm9yZWFjaCgkbGlu ZXMgYXMgJGxpbmUpIHsKICAgICAgICBpZiAoISRsaW5lWzNdKSB7CiAgICAgICAgICBpZiAo JG91dCkgewogICAgICAgICAgICAkdWRpZmYgLj0gJGRpZmZbNF0uJG91dDsKICAgICAgICAg ICAgJG91dCA9ICcnOwogICAgICAgICAgICAkZGlmZiA9IGFycmF5KDAsMCwwLDApOwogICAg ICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIGlmICghJGRpZmZb MF0pICRkaWZmWzBdID0gJGxpbmVbMF07CiAgICAgICAgICBpZiAoISRkaWZmWzFdKSAkZGlm ZlsxXSA9ICRsaW5lWzFdOwogICAgICAgICAgaWYgKCRsaW5lWzBdKSAkZGlmZlsyXSA9ICRs aW5lWzBdOwogICAgICAgICAgaWYgKCRsaW5lWzFdKSAkZGlmZlszXSA9ICRsaW5lWzFdOwog ICAgICAgICAgJGRpZmZbNF0gPSAnQEAgLScuJGRpZmZbMF0uJywnLigkZGlmZlsyXSsxLSRk aWZmWzBdKS4nICsnLiRkaWZmWzFdLicsJy4oJGRpZmZbM10rMS0kZGlmZlsxXSkuJyBAQCcu bjsKICAgICAgICAgICRvdXQgLj0gKCEkbGluZVsxXSA/ICctJyA6ICghJGxpbmVbMF0gPyAn KycgOiAnICcpKSAuICRsaW5lWzJdIC4gbjsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYg KCRvdXQpICR1ZGlmZiAuPSAkZGlmZls0XS4kb3V0OwoKICAgICAgIyBzZW5kIHVuaWZpZWQg ZGlmZiBmaWxlCiAgICAgIGlmICgkdWRpZmYpIHsKICAgICAgICAkcGx1Z2luID0gJG5hbWUu Jy0nLiR2ZXJzaW9uOwogICAgICAgICR0aW1lID0gc3RyZnRpbWUoJyAlWS0lbS0lZCAlSDol TTolUy4wMDAwMDAwMDAgJXonLHRpbWUoKSk7CiAgICAgICAgJHVkaWZmID0gJy0tLSAnLiRw bHVnaW4uJy5vcmlnJy4kdGltZS5uLicrKysgJy4kcGx1Z2luLicubmV3Jy4kdGltZS5uLiR1 ZGlmZjsKICAgICAgICBvYl9jbGVhbigpOwogICAgICAgIGhlYWRlcignQ29udGVudC1EZXNj cmlwdGlvbjogUGx1Z2luIERpZmYnKTsKICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTog dGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04Jyk7CiAgICAgICAgaGVhZGVyKCdDb250ZW50LUxl bmd0aDogJyAuIHN0cmxlbigkdWRpZmYpKTsKICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtRGlz cG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSInIC4gJHBsdWdpbiAuICcuZGlmZiIn KTsKICAgICAgICBlY2hvICR1ZGlmZjsKICAgICAgICBvYl9mbHVzaCgpOwogICAgICAgIGZs dXNoKCk7CiAgICAgICAgZXhpdDsKICAgICAgfQogICAgfQoKICAgICMgYWRkIGlubGluZSBk aWZmIG1hcmtlcnMKICAgICRpbnMgPSAkZGVsID0gYXJyYXkoKTsKICAgIGZvcmVhY2goJGxp bmVzIGFzICRuciA9PiAkbGluZSkgewogICAgICBpZiAoJGxpbmVbMF0gYW5kICRsaW5lWzFd KSB7CiAgICAgICAgaWYgKCRkZWwgYW5kIGNvdW50KCRkZWwpID09IGNvdW50KCRpbnMpKSB7 CiAgICAgICAgICB3aGlsZSgkZGVsbnIgPSBhcnJheV9zaGlmdCgkZGVsKSBhbmQgJGluc25y ID0gYXJyYXlfc2hpZnQoJGlucykpIHsKICAgICAgICAgICAgJGJlZ2luID0gMDsgJGVuZCA9 IDA7CiAgICAgICAgICAgICRkZWxzdHIgPSAkbGluZXNbJGRlbG5yXVsyXTsKICAgICAgICAg ICAgJGluc3N0ciA9ICRsaW5lc1skaW5zbnJdWzJdOwogICAgICAgICAgICAkbWF4ID0gbWlu KHN0cmxlbigkaW5zc3RyKSxzdHJsZW4oJGRlbHN0cikpOwogICAgICAgICAgICB3aGlsZSgk YmVnaW4gPD0gJG1heCBhbmQgc3Vic3RyKCRkZWxzdHIsJGJlZ2luLDEpID09IHN1YnN0cigk aW5zc3RyLCRiZWdpbiwxKSkgJGJlZ2luKys7CiAgICAgICAgICAgIHdoaWxlKCRlbmQgPD0g JG1heCBhbmQgc3Vic3RyKCRkZWxzdHIsLSRlbmQtMSwxKSA9PSBzdWJzdHIoJGluc3N0ciwt JGVuZC0xLDEpKSAkZW5kKys7CiAgICAgICAgICAgIGlmICghJGJlZ2luIGFuZCAhJGVuZCkg Y29udGludWU7CiAgICAgICAgICAgIGZvcmVhY2goYXJyYXkoJGRlbG5yLCRpbnNucikgYXMg JGxpbmVucikgewogICAgICAgICAgICAgICRzdHIgPSAkbGluZXNbJGxpbmVucl1bMl07CiAg ICAgICAgICAgICAgJGxlbiA9IHN0cmxlbigkc3RyKSAtICRiZWdpbiAtICRlbmQ7CiAgICAg ICAgICAgICAgaWYgKCRsZW4gPCAwKSB7ICRlbmQgKz0gJGxlbjsgJGxlbiA9IDA7IH0KICAg ICAgICAgICAgICAkbGluZXNbJGxpbmVucl1bMl0gPSBzdWJzdHIoJHN0ciwwLCRiZWdpbiku IlxyIi5zdWJzdHIoJHN0ciwkYmVnaW4sJGxlbikuIlxyIi4oJGVuZD9zdWJzdHIoJHN0ciwt JGVuZCk6JycpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAg ICRpbnMgPSAkZGVsID0gYXJyYXkoKTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICBp ZiAoJGxpbmVbMF0pICRkZWxbXSA9ICRucjsKICAgICAgICBlbHNlICRpbnNbXSA9ICRucjsK ICAgICAgfQogICAgfQogIH0KCiAgIyBkb3dubG9hZCBsaW5rCiAgaWYgKCRpc19kaWZmKSBl Y2hvICc8cCBzdHlsZT0ibWFyZ2luLWxlZnQ6M2VtIj48YSBocmVmPSI/ZXZlbnQ9cnZtX3Bs dWdpbl9kaWZmJy5hLidmb3JtYXQ9ZGlmZicuYS4nbmFtZT0nLnVybGVuY29kZSgkbmFtZSku YS4nY29udGV4dD0nLiRjb250ZXh0LmEuJ25vc3BhY2U9Jy4kbm9zcGFjZS4nIj5Eb3dubG9h ZCBpbiA8c3Ryb25nPnVuaWZpZWQgZGlmZjwvc3Ryb25nPiBmb3JtYXQ8L2E+PC9wPic7Cgog ICMgY29sb3IgZGlmZgogICRsc3R5bGUgPSAnIHN0eWxlPSJjb2xvcjogIzk5OTsgYm9yZGVy LXJpZ2h0OjFweCBzb2xpZCAjY2NjO3BhZGRpbmc6MGVtIC41ZW0gMGVtIDBlbTsiJzsKICBl Y2hvICc8cHJlPic7CiAgaWYgKCRpc19kaWZmKSB7CiAgICBlY2hvICI8c3BhbiRsc3R5bGU+ Ii5zdHJfcGFkKCdPbGQnLCAkbjEsICcgJywgU1RSX1BBRF9MRUZUKS4nPC9zcGFuPic7CiAg ICBlY2hvICI8c3BhbiRsc3R5bGU+Ii5zdHJfcGFkKCdOZXcnLCAkbjIsICcgJywgU1RSX1BB RF9MRUZUKS4nPC9zcGFuPicubjsKICB9CiAgJHNraXAgPSBmYWxzZTsKICBmb3JlYWNoKCRs aW5lcyBhcyAkbGluZSkgewogICAgaWYgKCEkbGluZVszXSkgewogICAgICAjIGVtcHR5IHNw YWNlIGJldHdlZW4gZGlmZiBwYXJ0cwogICAgICBpZiAoISRza2lwKSBlY2hvICc8ZGl2IHN0 eWxlPSJiYWNrZ3JvdW5kOiNmN2Y3Zjc7aGVpZ2h0OjJlbTtib3JkZXI6MXB4IHNvbGlkICNj Y2MiO2JvcmRlci1yaWdodDpub25lOz4mbmJzcDs8L2Rpdj4nOwogICAgICAkc2tpcCA9IHRy dWU7CiAgICAgIGNvbnRpbnVlOwogICAgfQogICAgZWxzZSAkc2tpcCA9IGZhbHNlOwogICAg aWYgKCRpc19kaWZmKSBlY2hvICI8c3BhbiRsc3R5bGU+Ii5zdHJfcGFkKCgkbGluZVswXSA/ ICRsaW5lWzBdIDogJycpLCRuMSwnICcsU1RSX1BBRF9MRUZUKS4nPC9zcGFuPic7CiAgICBl Y2hvICI8c3BhbiRsc3R5bGU+Ii5zdHJfcGFkKCgkbGluZVsxXSA/ICRsaW5lWzFdIDogJycp LCRuMiwnICcsU1RSX1BBRF9MRUZUKS4nPC9zcGFuPic7CiAgICBpZiAoISRsaW5lWzFdKSBl Y2hvICc8c3BhbiBzdHlsZT0iYmFja2dyb3VuZDogI2ZkZDsiPic7CiAgICBpZiAoISRsaW5l WzBdKSBlY2hvICc8c3BhbiBzdHlsZT0iYmFja2dyb3VuZDogI2RmZDsiPic7CiAgICAkc3Ry ID0gc3RyX3JlcGxhY2UoIlx0IiwnICAnLGh0bWxzcGVjaWFsY2hhcnMoJGxpbmVbMl0pKTsK ICAgIGlmICghJGxpbmVbMV0gb3IgISRsaW5lWzBdKSB7CiAgICAgICMgY29sb3IgaW5saW5l IGRpZmYKICAgICAgJGNvbG9yID0gJGxpbmVbMF0gPyAnI2VhYScgOiAnIzllOSc7CiAgICAg ICRzdHIgPSBwcmVnX3JlcGxhY2UoJy9cciguKilcci8nLCc8c3BhbiBzdHlsZT0iYmFja2dy b3VuZDonLiRjb2xvci4nIj4kezF9PC9zcGFuPicsJHN0cik7CiAgICB9CiAgICBlY2hvICcg Jy4kc3RyOwogICAgaWYgKCEkbGluZVswXSBvciAhJGxpbmVbMV0pIGVjaG8gJzwvc3Bhbj4n OwogICAgZWNobyBuOwogIH0KICBlY2hvICc8L3ByZT4nOwp9IjtzOjM6Im1kNSI7czozMjoi MDY0MjYyZDdhNjFjZTRiMGYxMzlmZmVjM2YxZWJmYjUiO30=