# Name: soo_editarea v0.1.5 # Type: Admin only plugin # Integrate the EditArea admin-side code editor # Author: Jeff Soo # URL: http://ipsedixit.net/txp/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjEyOiJzb29fZWRpdGFyZWEiO3M6NjoiYXV0aG9yIjtzOjg6 IkplZmYgU29vIjtzOjEwOiJhdXRob3JfdXJpIjtzOjI1OiJodHRwOi8vaXBzZWRpeGl0Lm5l dC90eHAvIjtzOjc6InZlcnNpb24iO3M6NToiMC4xLjUiO3M6MTE6ImRlc2NyaXB0aW9uIjtz OjQ1OiJJbnRlZ3JhdGUgdGhlIEVkaXRBcmVhIGFkbWluLXNpZGUgY29kZSBlZGl0b3IiO3M6 NDoiaGVscCI7czo3NTcwOiI8aDE+c29vX2VkaXRhcmVhPC9oMT4KCjxwPlRoaXMgaXMgYSBw bHVnaW4gZm9yIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5jb20iPlRleHRwYXR0ZXJu PC9hPi48L3A+Cgo8dWw+Cgk8bGk+PGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJu LmlvL3ZpZXd0b3BpYy5waHA/aWQ9MzUxNDMiPlN1cHBvcnQgZm9ydW0gdG9waWM8L2E+PC9s aT4KCTxsaT48YSBocmVmPSJodHRwOi8vaXBzZWRpeGl0Lm5ldC90eHAvMTI0L3Nvb19lZGl0 YXJlYSI+QXV0aG9yIHNpdGU8L2E+PC9saT4KCTxsaT48YSBocmVmPSJodHRwczovL2dpdGh1 Yi5jb20vanNvby9zb29fZWRpdGFyZWEiPkdpdEh1YjwvYT48L2xpPgo8L3VsPgoKPGRpdiBp ZD0idG9jIj4KCjxoMj5Db250ZW50czwvaDI+Cgo8dWw+Cgk8bGk+PGEgaHJlZj0iI292ZXJ2 aWV3Ij5PdmVydmlldzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNpbnN0YWxsYXRpb24iPklu c3RhbGxhdGlvbjwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNjb25maWd1cmF0aW9uIj5Db25m aWd1cmF0aW9uIG9wdGlvbnM8L2E+PC9saT4KCTxsaT48YSBocmVmPSIjdHhwX2hpZ2hsaWdo dGluZyI+VHhwIHRhZyBoaWdobGlnaHRpbmc8L2E+PC9saT4KCTxsaT48YSBocmVmPSIjaXNz dWVzIj5Lbm93biBpc3N1ZXM8L2E+PC9saT4KCTxsaT48YSBocmVmPSIjaGlzdG9yeSI+SGlz dG9yeTwvYT48L2xpPgo8L3VsPgoKPC9kaXY+Cgo8aDIgaWQ9Im92ZXJ2aWV3Ij5PdmVydmll dzwvaDI+Cgo8cD48YSBocmVmPSJodHRwOi8vd3d3LmNkb2xpdmV0LmNvbS9lZGl0YXJlYS8i PkVkaXRBcmVhPC9hPiBpcyBhIEphdmFTY3JpcHQtYmFzZWQgY29kZSBlZGl0b3IgZm9yIGJy b3dzZXIgdGV4dGFyZWFzLiBGZWF0dXJlcyBpbmNsdWRlOjwvcD4KCjx1bD4KCTxsaT5Db2Rl IGhpZ2hsaWdodGluZzwvbGk+Cgk8bGk+QnJvd3NlciB0YWIta2V5IG92ZXJyaWRlIGZvciBw cm9wZXIgdGFiYmluZyBpbiB0aGUgdGV4dGFyZWE8L2xpPgoJPGxpPkZ1bGwtc2NyZWVuIG1v ZGU8L2xpPgoJPGxpPkZpbmQgJmFtcDsgcmVwbGFjZSB3LyByZWdleCBzdXBwb3J0PC9saT4K CTxsaT5NdWx0aXBsZSB1bmRvL3JlZG88L2xpPgo8L3VsPgoKPHA+PHN0cm9uZz5zb29fZWRp dGFyZWE8L3N0cm9uZz4gcHJvdmlkZXMgZWFzeSBpbnRlZ3JhdGlvbiBvZiBFZGl0QXJlYSBp bnRvIFRleHRwYXR0ZXJuLiAoV2VsbCwgcHJldHR5IGVhc3k6IHRoZXJlIGFyZSBhIGZldyBz dGVwcyBpbnZvbHZlZC4pPC9wPgoKPHA+PGVtPlN1Z2dlc3RlZCBieSB0aGUgKGFwcGFyZW50 bHkgZGVmdW5jdCkgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3 dG9waWMucGhwP2lkPTMzOTE1Ij5hdGJfZWRpdGFyZWE8L2E+IHBsdWdpbiwgYW5kIDxhIGhy ZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0yMTM3 MCI+ZGlzY3Vzc2lvbjwvYT4gb24gdGhlIFR4cCBmb3J1bS48L2VtPjwvcD4KCjxoMz5GZWF0 dXJlczo8L2gzPgoKPHA+WW91IGNhbiBzZXQgcGx1Z2luIHByZWZlcmVuY2VzIGZvcjo8L3A+ Cgo8dWw+Cgk8bGk+U3ludGF4IGxhbmd1YWdlIGZvciBQYWdlICZhbXA7IEZvcm0gZWRpdGlu ZywgYWxsb3dpbmcgY3VzdG9tIHN5bnRheCBmaWxlPC9saT4KCTxsaT5Tb3VyY2UgcGF0aCwg bWFraW5nIGl0IGVhc2llciB0byBzaGFyZSBvbmUgRWRpdEFyZWEgaW5zdGFsbGF0aW9uIGFj cm9zcyBtdWx0aXBsZSBzaXRlczwvbGk+Cgk8bGk+VmFyaW91cyBFZGl0QXJlYSBvcHRpb25z ICh0b29sdGlwIGxhbmd1YWdlLCBmb250IHNpemUgJmFtcDsgZmFtaWx5LCAmYW1wO2MuKTwv bGk+CjwvdWw+Cgo8aDIgaWQ9Imluc3RhbGxhdGlvbiI+SW5zdGFsbGF0aW9uPC9oMj4KCjxw PjxhIGhyZWY9Imh0dHBzOi8vZG9jcy50ZXh0cGF0dGVybi5pby9hZG1pbmlzdHJhdGlvbi9w bHVnaW5zLXBhbmVsIj5JbnN0YWxsIGFuZCBhY3RpdmF0ZSB0aGUgcGx1Z2luPC9hPiBpbiB0 aGUgdXN1YWwgd2F5LjwvcD4KCjxwPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jZG9s aXZldC9FZGl0QXJlYSI+Q2xvbmUgb3IgZG93bmxvYWQgRWRpdEFyZWE8L2E+IGFuZCBwbGFj ZSB0aGUgPGNvZGU+ZWRpdF9hcmVhPC9jb2RlPiBkaXJlY3RvcnkgaW4gYSBzZXJ2ZXItYWNj ZXNzaWJsZSBsb2NhdGlvbiBvZiB5b3VyIGNob2ljZS4gKFRoZSBkZWZhdWx0IGlzIDxjb2Rl Pi90ZXh0cGF0dGVybi9lZGl0X2FyZWE8L2NvZGU+LCBidXQgeW91IGNhbiBjaGFuZ2UgdGhp cyBpbiB0aGUgcGx1Z2luJiM4MjE3O3MgT3B0aW9ucyBzZXR0aW5ncy4gR2l2ZW4gdGhlIGNo YW5nZXMgaW4gbW9yZSByZWNlbnQgdmVyc2lvbnMgb2YgVGV4dHBhdHRlcm5zIEkgc2hvdWxk IHByb2JhYmx5IHVwZGF0ZSB0aGlzLik8L3A+Cgo8cD5PcHRpb25hbGx5LCBkb3dubG9hZCB0 aGUgPGEgaHJlZj0iaHR0cDovL2lwc2VkaXhpdC5uZXQvZmlsZV9kb3dubG9hZC8xNi90eHAu anMiPnR4cC5qcyBzeW50YXggZmlsZTwvYT4gKG9yIDxhIGhyZWY9Imh0dHA6Ly93d3cuY2Rv bGl2ZXQuY29tL2VkaXRhcmVhL2VkaXRhcmVhL2RvY3MvY3VzdG9taXphdGlvbl9zeW50YXgu aHRtbCI+Y3JlYXRlIHlvdXIgb3duPC9hPikgYW5kIHBsYWNlIGl0IGluIDxjb2RlPmVkaXRf YXJlYS9yZWdfc3ludGF4PC9jb2RlPi48L3A+Cgo8aDIgaWQ9ImNvbmZpZ3VyYXRpb24iPkNv bmZpZ3VyYXRpb24gb3B0aW9uczwvaDI+Cgo8cD5UaGUgZmlyc3QgdHdvIHN0ZXBzIGluIElu c3RhbGxhdGlvbiwgYWJvdmUsIGFyZSBhbGwgeW91IG5lZWQgdG8gZ2V0IEVkaXRBcmVhIHdv cmtpbmcgd2l0aCBzdGFuZGFyZCA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gc3lu dGF4IGhpZ2hsaWdodGluZyBmb3IgUGFnZXMgYW5kIEZvcm1zLCBhbmQgPHNwYW4gY2xhc3M9 ImNhcHMiPkNTUzwvc3Bhbj4gaGlnaGxpZ2h0aW5nIGZvciBTdHlsZXMuPC9wPgoKPHA+VG8g YWN0aXZhdGUgdGhlIFR4cCBzeW50YXggZmlsZSAoZnJvbSBzdGVwIDMsIGFib3ZlKSwgb3Ig dG8gdXNlIGEgZGlmZmVyZW50IGxvY2F0aW9uIGZvciB0aGUgRWRpdEFyZWEgZmlsZXMsIGlu c3RhbGwgYW5kIGFjdGl2YXRlIHRoZSA8YSBocmVmPSJodHRwOi8vaXBzZWRpeGl0Lm5ldC90 eHAvOTIvc29vX3BsdWdpbl9wcmVmIj5zb29fcGx1Z2luX3ByZWY8L2E+IHBsdWdpbiAoVHhw IDQuMi4wIG9yIGdyZWF0ZXIgPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5yZXF1aXJlZDwvc3Bh bj4pLiBUaGVuLCBpbiB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9kb2NzLnRleHRwYXR0ZXJuLmlv L2FkbWluaXN0cmF0aW9uL3BsdWdpbnMtcGFuZWwiPm1haW4gcGx1Z2luIHBhbmVsPC9hPiwg Y2xpY2sgdGhlIE9wdGlvbnMgbGluayBmb3IgPHN0cm9uZz5zb29fZWRpdGFyZWE8L3N0cm9u Zz4gKGxvb2sgaW4gdGhlIDxzdHJvbmc+TWFuYWdlPC9zdHJvbmc+IGNvbHVtbiBhdCByaWdo dCkuPC9wPgoKPHA+VG8gdXNlIHRoZSBUeHAgc3ludGF4IGZpbGUsIGNoYW5nZSB0aGUgPHN0 cm9uZz5QYWdlIFRlbXBsYXRlIGFuZCBGb3JtIHN5bnRheDwvc3Ryb25nPiBzZXR0aW5nIHRv ICYjODIyMDt0eHAmIzgyMjE7LjwvcD4KCjxwPlRoZSA8c3Ryb25nPkVkaXRBcmVhIGRpcmVj dG9yeTwvc3Ryb25nPiBzZXR0aW5nIGlzIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9z cGFuPiAocmVsYXRpdmUgdG8gPGNvZGU+L3RleHRwYXR0ZXJuL2luZGV4LnBocDwvY29kZT4p IG9mIHRoZSBFZGl0QXJlYSBmaWxlcy4gKEhpbnQ6IGZvciBzaGFyaW5nIG9uZSBzZXQgb2Yg RWRpdEFyZWEgZmlsZXMgYWNyb3NzIG11bHRpcGxlIHNpdGVzLCBwdXQgdGhlIGZpbGVzIGlu IGFueSBzZXJ2ZXItYWNjZXNzaWJsZSBsb2NhdGlvbiB5b3UgY2hvb3NlLCB0aGVuIGFkZCBh IHN5bWJvbGljIGxpbmsgdG8gZWFjaCBzaXRlJiM4MjE3O3MgPGNvZGU+L3RleHRwYXR0ZXJu PC9jb2RlPiBkaXJlY3RvcnkuKTwvcD4KCjxoMz5Nb3JlIG9wdGlvbnM6PC9oMz4KCjx1bD4K CTxsaT48c3Ryb25nPkxhbmd1YWdlOjwvc3Ryb25nPiBmb3IgRWRpdEFyZWEgdG9vbHRpcHMu IFVzZSB0aGUgdHdvLWxldHRlciBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZpbGUgaW4g PGNvZGU+ZWRpdF9hcmVhL2xhbmdzPC9jb2RlPi48L2xpPgoJPGxpPjxzdHJvbmc+Rm9udCBz aXplOjwvc3Ryb25nPiBkZWZhdWx0IGZvbnQgc2l6ZSBmb3IgdGhlIGVkaXRvcjwvbGk+Cgk8 bGk+PHN0cm9uZz5Gb250IGZhbWlseTo8L3N0cm9uZz4gY29tbWEtc2VwYXJhdGVkIGxpc3Qg b2YgZm9udCBuYW1lcyAoPHNwYW4gY2xhc3M9ImRlZmF1bHQiPmRlZmF1bHQ8L3NwYW4+ICYj ODIyMDttb25vc3BhY2UmIzgyMjE7KS48L2xpPgoJPGxpPjxzdHJvbmc+RWRpdG9yIGhlaWdo dDo8L3N0cm9uZz4gZGVmYXVsdCBoZWlnaHQgb2YgdGhlIEVkaXRBcmVhIHRleHRhcmVhPC9s aT4KCTxsaT48c3Ryb25nPkVkaXRvciB3aWR0aDo8L3N0cm9uZz4gYXMgYWJvdmUsIGZvciB3 aWR0aDwvbGk+Cgk8bGk+PHN0cm9uZz5Db252ZXJ0IHRhYiB0byBzcGFjZXM6PC9zdHJvbmc+ IGNvbnZlcnQgdGFicyB0byB0aGlzIG1hbnkgc3BhY2VzIChsZWF2ZSBhdCAwIGZvciBzdGFu ZGFyZCB0YWJzKTwvbGk+Cgk8bGk+PHN0cm9uZz5FZGl0QXJlYSBQbHVnaW5zOjwvc3Ryb25n PiBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBFZGl0QXJlYSBwbHVnaW5zIChlLmcuIDxhIGhy ZWY9Imh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC96ZW4tY29kaW5nLyI+emVuY29kaW5nPC9h PikuIEl0JiM4MjE3O3MgdXAgdG8geW91IHRvIGluc3RhbGwgYW55IHN1Y2ggcGx1Z2lucyBh cHByb3ByaWF0ZWx5LjwvbGk+CjwvdWw+Cgo8aDIgaWQ9InR4cF9oaWdobGlnaHRpbmciPlR4 cCB0YWcgaGlnaGxpZ2h0aW5nPC9oMj4KCjxwPkJ5IGRlZmF1bHQgdGhlIHBsdWdpbiB1c2Vz IEVkaXRBcmVhJiM4MjE3O3MgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGhpZ2hs aWdodGluZyBmb3IgUGFnZSBUZW1wbGF0ZSBhbmQgRm9ybSBlZGl0aW5nLCBnaXZpbmcgVHhw IHRhZ3MgdGhlIHNhbWUgaGlnaGxpZ2h0IGNvbG91ciBhcyA8c3BhbiBjbGFzcz0iY2FwcyI+ SFRNTDwvc3Bhbj4gdGFncy4gVG8gaGF2ZSBUeHAgdGFncyBhcHBlYXIgaW4gYSBkaWZmZXJl bnQgY29sb3VyLCBmb2xsb3cgdGhlIGluc3RhbGxhdGlvbi9jb25maWd1cmF0aW9uIGluc3Ry dWN0aW9ucyBhYm92ZSBmb3IgYWRkaW5nIHRoZSB0eHAuanMgZmlsZS4gKElmIHlvdSBsYXRl ciB1cGdyYWRlIHRoZSBFZGl0QXJlYSBmaWxlcyB5b3Ugd2lsbCBoYXZlIHRvIHJlbWVtYmVy IHRvIHByZXNlcnZlIHRoaXMgZmlsZS4pPC9wPgoKPHA+VGhlIHR4cC5qcyBmaWxlIGxpbmtl ZCBhYm92ZSBoaWdobGlnaHRzIFR4cCB0YWdzIGluIGEgbG92ZWx5IG9yYW5nZSBjb2xvdXIu IFRvIGNoYW5nZSBpdCAob3IgYW55IG9mIHRoZSBvdGhlciBjb2xvdXJzKSwgZWRpdCB0eHAu anMgdG8gc3VpdCAobG9vayB0b3dhcmQgdGhlIGJvdHRvbSBvZiB0aGUgZmlsZSkuIElmIHlv dSYjODIxNztkIHByZWZlciBhIHNvb3RoaW5nIGdyZWVuIGZvciB5b3VyIFR4cCB0YWdzLCB1 bmNvbW1lbnQgdGhlIGxpbmUgbmVhciB0aGUgYm90dG9tIGxhYmVsZWQgJiM4MjIwO2dyZWVu JiM4MjIxOywgYW5kIGNvbW1lbnQgdGhlIGxpbmUgYWJvdmUgaXQgbGFiZWxlZCAmIzgyMjA7 b3JhbmdlJiM4MjIxOyAoaS5lLiwgcmVtb3ZlIHRoZSB0d28gc2xhc2hlcyBhdCB0aGUgc3Rh cnQgb2YgdGhlICYjODIyMDtncmVlbiYjODIyMTsgbGluZSwgYW5kIGFkZCB0d28gc2xhc2hl cyB0byB0aGUgc3RhcnQgb2YgdGhlICYjODIyMDtvcmFuZ2UmIzgyMjE7IGxpbmUpLjwvcD4K CjxoMiBpZD0iaXNzdWVzIj5Lbm93biBpc3N1ZXM8L2gyPgoKPHA+VGhlIEVkaXRBcmVhIHBy b2plY3QgaXRzZWxmIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuPC9wPgoKPHVsPgoJPGxpPjxh IGhyZWY9Imh0dHA6Ly93d3cuY2RvbGl2ZXQuY29tL2VkaXRhcmVhLyI+QXV0aG9yIHBhZ2U8 L2E+PC9saT4KCTxsaT48YSBocmVmPSJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0 cy9lZGl0YXJlYS8iPlNvdXJjZUZvcmdlPC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iaHR0cHM6 Ly9naXRodWIuY29tL2Nkb2xpdmV0L0VkaXRBcmVhIj5HaXRIdWI8L2E+PC9saT4KPC91bD4K CjxwPlRoZXJlIGFyZSBzb21lIGJyb3dzZXIgY29tcGF0aWJpbGl0eSBpc3N1ZXMgcmVnYXJk aW5nIGFwcGVhcmFuY2UuIEluIG9yZGVyIHRvIGdldCBhIHVzYWJsZSBhcHBlYXJhbmNlIGlu IFdlYktpdC1iYXNlZCBicm93c2VycyAoZS5nLiwgU2FmYXJpKSwgSSBoYXZlIGhhZCB0byBt b2RpZnkgPGNvZGU+ZWRpdF9hcmVhX2Z1bGwuanM8L2NvZGU+LiBUaGlzIG1vZGlmaWVkIGZp bGUgaXMgYXZhaWxhYmxlIG9uIHRoZSA8c3Ryb25nPnNvb19lZGl0YXJlYTwvc3Ryb25nPiA8 YSBocmVmPSJodHRwOi8vaXBzZWRpeGl0Lm5ldC90eHAvMTI0L3Nvb19lZGl0YXJlYSI+ZG93 bmxvYWQgcGFnZTwvYT4gYW5kIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9qc29vL3Nv b19lZGl0YXJlYSI+R2l0SHViIHJlcG88L2E+LiBUaGVyZSBhcmUgdW5kb3VidGVkbHkgaXNz dWVzIHdpdGggb3RoZXIgYnJvd3NlcnMgYXMgd2VsbCwgYW5kIGl0IG1heSBiZSBhIGNoYWxs ZW5nZSB0byBjb21lIHVwIHdpdGggYSBmaXggZm9yIGEgc2l0ZSB3aXRoIGFkbWluaXN0cmF0 b3JzIHVzaW5nIGEgdmFyaWV0eSBvZiBvcGVyYXRpbmcgc3lzdGVtcyBhbmQgYnJvd3NlcnMu PC9wPgoKPGgyIGlkPSJoaXN0b3J5Ij5WZXJzaW9uIEhpc3Rvcnk8L2gyPgoKPGgzPjAuMS41 ICgyMDEyLzAxLzI0KTwvaDM+Cgo8dWw+Cgk8bGk+QWRkZWQgcHJlZiBmb3IgRWRpdEFyZWEg cGx1Z2lucyAoYXMgcmVxdWVzdGVkIGJ5IG1yZGFsZSk8L2xpPgo8L3VsPgoKPGgzPjAuMS40 ICgyMDExLzA0LzI3KTwvaDM+Cgo8dWw+Cgk8bGk+QWRkZWQgZGVmYXVsdCBoZWlnaHQvd2lk dGggcHJlZnMgKGFzIHJlcXVlc3RlZCBieSBtcmRhbGUpPC9saT4KPC91bD4KCjxoMz4wLjEu MyAoMjAxMC8xMi8zMCk8L2gzPgoKPHVsPgoJPGxpPkZpeGVkIGJ1ZyB3aXRoIEludGVybmV0 IEV4cGxvcmVyICg8Y29kZT50eXBlPC9jb2RlPiBhdHRyaWJ1dGUgaW4gPGNvZGU+c2NyaXB0 PC9jb2RlPiB0YWcpPC9saT4KCTxsaT5HZW5lcmFsIGNvZGUgY2xlYW5pbmc8L2xpPgo8L3Vs PgoKPGgzPjAuMS4yICgyMDEwLzEyLzIwKTwvaDM+Cgo8dWw+Cgk8bGk+QWRkZWQgcHJlZmVy ZW5jZSBzZXR0aW5ncyBmb3Igc2V2ZXJhbCBFZGl0QXJlYSBvcHRpb25zPC9saT4KPC91bD4K CjxoMz4wLjEuMSAoMjAxMC8xMi8yMCk8L2gzPgoKPHVsPgoJPGxpPkRvY3VtZW50YXRpb24g dXBkYXRlIDxlbT5bdGhhbmtzIHRvIE1hcmMgQy4gZm9yIHRoZSBzdWdnZXN0aW9uc108L2Vt PjwvbGk+CjwvdWw+Cgo8aDM+MC4xLjAgKDIwMTAvMTIvMjApPC9oMz4KCjx1bD4KCTxsaT5J bml0aWFsIHJlbGVhc2U8L2xpPgoJPGxpPkVkaXRBcmVhIGludGVncmF0aW9uIGZvciBUeHAm IzgyMTc7cyBQYWdlIFRlbXBsYXRlLCBGb3JtLCBhbmQgPHNwYW4gY2xhc3M9ImNhcHMiPkNT Uzwvc3Bhbj4gZWRpdG9yczwvbGk+CjwvdWw+IjtzOjQ6ImNvZGUiO3M6NDA2MDoiCmlmIChA dHhwaW50ZXJmYWNlID09ICdhZG1pbicpIHsKICAgIEByZXF1aXJlX3BsdWdpbignc29vX3Bs dWdpbl9wcmVmJyk7ICAgICAvLyBvcHRpb25hbAoKICAgIGFkZF9wcml2cygncGx1Z2luX3By ZWZzLnNvb19lZGl0YXJlYScsJzEsMicpOwogICAgYWRkX3ByaXZzKCdwbHVnaW5fbGlmZWN5 Y2xlLnNvb19lZGl0YXJlYScsJzEsMicpOwogICAgcmVnaXN0ZXJfY2FsbGJhY2soJ3Nvb19l ZGl0YXJlYV9tYW5hZ2VfcHJlZnMnLCAncGx1Z2luX3ByZWZzLnNvb19lZGl0YXJlYScpOwog ICAgcmVnaXN0ZXJfY2FsbGJhY2soJ3Nvb19lZGl0YXJlYV9tYW5hZ2VfcHJlZnMnLCAncGx1 Z2luX2xpZmVjeWNsZS5zb29fZWRpdGFyZWEnKTsKCiAgICAvLyBPbmx5IGFjdGl2YXRlIHBs dWdpbiB3aGVuIG5lZWRlZAogICAgaWYgKGluX2FycmF5KGdwcygnZXZlbnQnKSwgYXJyYXko J3BhZ2UnLCAnZm9ybScsICdjc3MnKSkpIHsKICAgICAgICByZWdpc3Rlcl9jYWxsYmFjaygn c29vX2VkaXRhcmVhJywgJ2FkbWluX3NpZGUnLCAnaGVhZF9lbmQnKTsKICAgIH0KfQoKZnVu Y3Rpb24gc29vX2VkaXRhcmVhX21hbmFnZV9wcmVmcygkZXZlbnQsICRzdGVwKQp7CiAgICBp ZiAoZnVuY3Rpb25fZXhpc3RzKCdzb29fcGx1Z2luX3ByZWYnKSkgewogICAgICAgIHJldHVy biBzb29fcGx1Z2luX3ByZWYoJGV2ZW50LCAkc3RlcCwgc29vX2VkaXRhcmVhX3ByZWZfc3Bl YygpKTsKICAgIH0KCiAgICAgICAgLy8gbWVzc2FnZSB0byBpbnN0YWxsIHNvb19wbHVnaW5f cHJlZgogICAgaWYgKHN1YnN0cigkZXZlbnQsIDAsIDEyKSA9PSAncGx1Z2luX3ByZWZzJykg ewogICAgICAgICRwbHVnaW4gPSBzdWJzdHIoJGV2ZW50LCAxMyk7CiAgICAgICAgJG1lc3Nh Z2UgPSAnPHA+PGJyIC8+PHN0cm9uZz4nIC4gZ1R4dCgnZWRpdCcpIC4gIiAkcGx1Z2luICIg LgogICAgICAgICAgICBnVHh0KCdlZGl0X3ByZWZlcmVuY2VzJykgLiAnOjwvc3Ryb25nPjxi ciAvPicgLiBnVHh0KCdpbnN0YWxsX3BsdWdpbicpIC4KICAgICAgICAgICAgJyA8YSBocmVm PSJodHRwOi8vaXBzZWRpeGl0Lm5ldC90eHAvOTIvc29vX3BsdWdpbl9wcmVmIj4nIC4KICAg ICAgICAgICAgJ3Nvb19wbHVnaW5fcHJlZjwvYT48L3A+JzsKICAgICAgICBwYWdldG9wKGdU eHQoJ2VkaXRfcHJlZmVyZW5jZXMnKSAuICIgJiM4MjUwOyAkcGx1Z2luIiwgJG1lc3NhZ2Up OwogICAgfQp9CgpmdW5jdGlvbiBzb29fZWRpdGFyZWFfcHJlZl9zcGVjKCkKewogICAgcmV0 dXJuIGFycmF5KAogICAgICAgICdwYWdlX2Zvcm1fbGFuZycgPT4gYXJyYXkoCiAgICAgICAg ICAgICd2YWwnICAgPT4gJ2h0bWwnLAogICAgICAgICAgICAnaHRtbCcgID0+ICd0ZXh0X2lu cHV0JywKICAgICAgICAgICAgJ3RleHQnICA9PiAnUGFnZSBUZW1wbGF0ZSBhbmQgRm9ybSBz eW50YXgnLAogICAgICAgICksCiAgICAgICAgJ2VkaXRhcmVhX2RpcicgPT4gYXJyYXkoCiAg ICAgICAgICAgICd2YWwnICAgPT4gJ2VkaXRfYXJlYScsCiAgICAgICAgICAgICdodG1sJyAg PT4gJ3RleHRfaW5wdXQnLAogICAgICAgICAgICAndGV4dCcgID0+ICdFZGl0QXJlYSBkaXJl Y3RvcnknLAogICAgICAgICksCiAgICAgICAgJ2xhbmd1YWdlJyA9PiBhcnJheSgKICAgICAg ICAgICAgJ3ZhbCcgICA9PiAnZW4nLAogICAgICAgICAgICAnaHRtbCcgID0+ICd0ZXh0X2lu cHV0JywKICAgICAgICAgICAgJ3RleHQnICA9PiAnTGFuZ3VhZ2UnLAogICAgICAgICksCiAg ICAgICAgJ21pbl9oZWlnaHQnID0+IGFycmF5KAogICAgICAgICAgICAndmFsJyAgID0+IDUw MCwKICAgICAgICAgICAgJ2h0bWwnICA9PiAndGV4dF9pbnB1dCcsCiAgICAgICAgICAgICd0 ZXh0JyAgPT4gJ0VkaXRvciBoZWlnaHQnLAogICAgICAgICksCiAgICAgICAgJ21pbl93aWR0 aCcgPT4gYXJyYXkoCiAgICAgICAgICAgICd2YWwnICAgPT4gNDAwLAogICAgICAgICAgICAn aHRtbCcgID0+ICd0ZXh0X2lucHV0JywKICAgICAgICAgICAgJ3RleHQnICA9PiAnRWRpdG9y IHdpZHRoJywKICAgICAgICApLAogICAgICAgICdmb250X3NpemUnID0+IGFycmF5KAogICAg ICAgICAgICAndmFsJyAgID0+IDEwLAogICAgICAgICAgICAnaHRtbCcgID0+ICd0ZXh0X2lu cHV0JywKICAgICAgICAgICAgJ3RleHQnICA9PiAnRm9udCBzaXplJywKICAgICAgICApLAog ICAgICAgICdmb250X2ZhbWlseScgPT4gYXJyYXkoCiAgICAgICAgICAgICd2YWwnICAgPT4g J21vbm9zcGFjZScsCiAgICAgICAgICAgICdodG1sJyAgPT4gJ3RleHRfaW5wdXQnLAogICAg ICAgICAgICAndGV4dCcgID0+ICdGb250IGZhbWlseScsCiAgICAgICAgKSwKICAgICAgICAn cmVwbGFjZV90YWJfYnlfc3BhY2VzJyA9PiBhcnJheSgKICAgICAgICAgICAgJ3ZhbCcgICA9 PiAwLAogICAgICAgICAgICAnaHRtbCcgID0+ICd0ZXh0X2lucHV0JywKICAgICAgICAgICAg J3RleHQnICA9PiAnQ29udmVydCB0YWIgdG8gc3BhY2VzJywKICAgICAgICApLAogICAgICAg ICdwbHVnaW5zJyA9PiBhcnJheSgKICAgICAgICAgICAgJ3ZhbCcgICA9PiAnJywKICAgICAg ICAgICAgJ2h0bWwnICA9PiAndGV4dF9pbnB1dCcsCiAgICAgICAgICAgICd0ZXh0JyAgPT4g J0VkaXRBcmVhIHBsdWdpbnMgKGNvbW1hLXNlcGFyYXRlZCknLAogICAgICAgICksCiAgICAp Owp9CgpmdW5jdGlvbiBzb29fZWRpdGFyZWFfcHJlZnMoKQp7CiAgICBzdGF0aWMgJHByZWZz OwogICAgaWYgKCEgJHByZWZzKSB7CiAgICAgICAgZm9yZWFjaCAoc29vX2VkaXRhcmVhX3By ZWZfc3BlYygpIGFzICRuYW1lID0+ICRzcGVjKSB7CiAgICAgICAgICAgICRwcmVmc1skbmFt ZV0gPSAkc3BlY1sndmFsJ107CiAgICAgICAgfQogICAgICAgIGlmIChmdW5jdGlvbl9leGlz dHMoJ3Nvb19wbHVnaW5fcHJlZl92YWxzJykpIHsKICAgICAgICAgICAgJHByZWZzID0gYXJy YXlfbWVyZ2UoJHByZWZzLCBzb29fcGx1Z2luX3ByZWZfdmFscygnc29vX2VkaXRhcmVhJykp OwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAkcHJlZnM7Cn0KCmZ1bmN0aW9uIHNvb19l ZGl0YXJlYSgpCnsKICAgICRwcmVmcyA9IHNvb19lZGl0YXJlYV9wcmVmcygpOwogICAgZXh0 cmFjdCgkcHJlZnMpOwogICAgJGV4Y2x1ZGVfZnJvbV9pbml0ID0gYXJyYXlfZmxpcChhcnJh eSgncGFnZV9mb3JtX2xhbmcnLCAnZWRpdGFyZWFfZGlyJykpOwogICAgJGluaXQgPSBhcnJh eV9kaWZmX2tleSgkcHJlZnMsICRleGNsdWRlX2Zyb21faW5pdCk7CiAgICAkdGV4dGFyZWEg PSBhcnJheSgKICAgICAgICAncGFnZScgPT4gYXJyYXkoCiAgICAgICAgICAgICdpZCcgPT4g J2h0bWwnLAogICAgICAgICAgICAnc3ludGF4JyA9PiAkcGFnZV9mb3JtX2xhbmcsCiAgICAg ICAgKSwKICAgICAgICAnZm9ybScgPT4gYXJyYXkoCiAgICAgICAgICAgICdpZCcgPT4gJ2Zv cm0nLAogICAgICAgICAgICAnc3ludGF4JyA9PiAkcGFnZV9mb3JtX2xhbmcsCiAgICAgICAg KSwKICAgICAgICAnY3NzJyA9PiBhcnJheSgKICAgICAgICAgICAgJ2lkJyA9PiAnY3NzJywK ICAgICAgICAgICAgJ3N5bnRheCcgPT4gJ2NzcycsCiAgICAgICAgKSwKICAgICk7CiAgICAk aW5pdCA9IGFycmF5X21lcmdlKCR0ZXh0YXJlYVtncHMoJ2V2ZW50JyldLCAkaW5pdCk7Ci8v ICBpZiAoIHN1YnN0cihncHMoJ25hbWUnKSwgLTMpID09ICcuanMnICkKLy8gICAgICAkaW5p dFsnc3ludGF4J10gPSAnanMnOwoKICAgICRmdW5jID0gJ2VkaXRBcmVhTG9hZGVyLmluaXQo eycubi50LidzdGFydF9oaWdobGlnaHQ6IHRydWUnOwogICAgZm9yZWFjaCAoJGluaXQgYXMg JGsgPT4gJHYpIGlmICgkdikgewogICAgICAgICRmdW5jIC49IG4udC4iLCRrOiAiLiggaXNf bnVtZXJpYygkdikgPyAkdiA6ICJcIiR2XCIiICk7CiAgICB9CiAgICAkZnVuYyAuPSBuLid9 KTsnOwoKICAgIGVjaG8KICAgICAgICAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi IHNyYz0iJywKICAgICAgICAkZWRpdGFyZWFfZGlyLAogICAgICAgICcvZWRpdF9hcmVhX2Z1 bGwuanMiPjwvc2NyaXB0PicsCiAgICAgICAgbiwgc2NyaXB0X2pzKCRmdW5jKSwgbgogICAg Owp9CiI7czo0OiJ0eXBlIjtzOjE6IjMiO3M6NToiZmxhZ3MiO3M6MToiMyI7czo1OiJvcmRl ciI7czoxOiI1IjtzOjM6Im1kNSI7czozMjoiNDY0YzM0ODNjZDJjN2Y4NDVkMGQ4OTgzYjUx ODA3OTEiO30=