# rvm_inherit v0.4 # Template inheritance # # License: GNU GPLv2 or later # # Ruud van Melick # http://vanmelick.com/txp/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTE6InJ2bV9pbmhlcml0IjtzOjc6InZlcnNpb24iO3M6Mzoi MC40IjtzOjY6ImF1dGhvciI7czoxNToiUnV1ZCB2YW4gTWVsaWNrIjtzOjEwOiJhdXRob3Jf dXJpIjtzOjI1OiJodHRwOi8vdmFubWVsaWNrLmNvbS90eHAvIjtzOjExOiJkZXNjcmlwdGlv biI7czoyMDoiVGVtcGxhdGUgaW5oZXJpdGFuY2UiO3M6NDoidHlwZSI7aTowO3M6NDoiaGVs cCI7czoxNTE2NDoiPHA+PHN0eWxlPgogICBsaSBjb2RlIHtmb250LXdlaWdodDogYm9sZDt9 CiAgIHByZSB7cGFkZGluZzogMC41ZW0gMWVtOyBiYWNrZ3JvdW5kOiAjZWVlOyBib3JkZXI6 IDFweCBkYXNoZWQgI2NjYzt9CiAgIGgxLCBoMiwgaDMsIGgzIGNvZGUge2ZvbnQtZmFtaWx5 OiBzYW5zLXNlcmlmOyBmb250LXdlaWdodDogYm9sZDt9CiAgIGgxLCBoMiwgaDMge21hcmdp bi1sZWZ0OiAtMWVtO30KICAgaDIsIGgzIHttYXJnaW4tdG9wOiAyZW07fQogICBsaSBhIGNv ZGUge2ZvbnQtd2VpZ2h0OiBub3JtYWw7fQogICBjb2RlIHtib3JkZXI6IDBweDsgYmFja2dy b3VuZDogbm9uZTt9PGJyIC8+Cjwvc3R5bGU+PC9wPgoKCjxoMSBpZD0idG9wIj5ydm1faW5o ZXJpdDwvaDE+Cgo8cD5UaGlzIHBsdWdpbiBtYWtlcyBpdCBwb3NzaWJsZSB0byB1c2UgdGVt cGxhdGUgaW5oZXJpdGFuY2UuPC9wPgoKPHA+UGxlYXNlIHJlcG9ydHMgYnVncyBhbmQgcHJv YmxlbXMgd2l0aCB0aGlzIHBsdWdpbiBpbiA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBh dHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9NDU1NTIiPnRoaXMgZm9ydW0gdGhyZWFkPC9h PjwvcD4KCgo8aDIgaWQ9ImNvbnRlbnRzIj5Db250ZW50czwvaDI+Cgo8dWw+Cgk8bGk+PGEg aHJlZj0iI3RhZ3MiPlRhZ3M8L2E+Cgk8dWw+CgkJPGxpPjxhIGhyZWY9IiNydm1faW5oZXJp dCI+PGNvZGU+Jmx0O3R4cDpydm1faW5oZXJpdCZndDs8L2NvZGU+PC9hPjwvbGk+CgkJPGxp PjxhIGhyZWY9IiNydm1fYmxvY2siPjxjb2RlPiZsdDt0eHA6cnZtX2Jsb2NrJmd0OzwvY29k ZT48L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3J2bV9jaGlsZCI+PGNvZGU+Jmx0O3R4cDpy dm1fY2hpbGQmZ3Q7PC9jb2RlPjwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjcnZtX3BhcmVu dCI+PGNvZGU+Jmx0O3R4cDpydm1fcGFyZW50Jmd0OzwvY29kZT48L2E+PC9saT4KCTwvdWw+ PC9saT4KCTxsaT48YSBocmVmPSIjc3RhcnQiPkdldHRpbmcgc3RhcnRlZDwvYT48L2xpPgoJ PGxpPjxhIGhyZWY9IiNuZXN0aW5nIj5OZXN0aW5nIGJsb2NrczwvYT48L2xpPgoJPGxpPjxh IGhyZWY9IiNtdWx0aXBsZSI+UmVuZGVyaW5nIGEgYmxvY2sgbXVsdGlwbGUgdGltZXM8L2E+ PC9saT4KCTxsaT48YSBocmVmPSIjY2hpbGQiPkNoaWxkcmVuPC9hPjwvbGk+Cgk8bGk+PGEg aHJlZj0iI3BhcmVudCI+UGFyZW50czwvYT48L2xpPgo8L3VsPgoKCjxoMyBpZD0icnZtX2lu aGVyaXQiPjxjb2RlPiZsdDt0eHA6cnZtX2luaGVyaXQgLyZndDs8L2NvZGU+PC9oMz4KCjxw Pk11c3QgYmUgdXNlZCBhcyBhIGNvbnRhaW5lciB0YWcuIFNob3VsZCBjb250YWluIG9ubHkg PGNvZGU+Jmx0O3R4cDpydm1fYmxvY2smZ3Q7PC9jb2RlPiwgPGNvZGU+Jmx0O3R4cDpydm1f Y2hpbGQmZ3Q7PC9jb2RlPiBhbmQvb3IgPGNvZGU+Jmx0O3R4cDpydm1fcGFyZW50Jmd0Ozwv Y29kZT4gdGFncywgYWx0aG91Z2ggdGhvc2UgdGFncyBjYW4gb2YgY291cnNlIGNvbnRhaW4g b3RoZXIgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gdGFncy48L3A+Cgo8aDQ+QXR0 cmlidXRlczo8L2g0PgoKPHVsPgoJPGxpPjxjb2RlPmZvcm09JnF1b3Q7dGV4dCZxdW90Ozwv Y29kZT48YnIgLz4KTmFtZSBvZiBhbiBleGlzdGluZyA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQ PC9zcGFuPiBmb3JtIHlvdSB3aXNoIHRvIGluaGVyaXQuPC9saT4KCTxsaT48Y29kZT5wYWdl PSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+Ck5hbWUgb2YgYW4gZXhpc3RpbmcgPHNw YW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gcGFnZSB5b3Ugd2lzaCB0byBpbmhlcml0Ljwv bGk+CjwvdWw+Cgo8cD5UaGUgPGNvZGU+cGFnZTwvY29kZT4gYW5kIDxjb2RlPmZvcm08L2Nv ZGU+IGF0dHJpYnV0ZXMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gSWYgbmVpdGhlciBpcyBz ZXQgaXQsIDxjb2RlPnBhZ2U8L2NvZGU+IGlzIHNldCB0byAmIzgyMTY7ZGVmYXVsdCYjODIx Nzs7PC9wPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKPGgzIGlk PSJydm1fYmxvY2siPjxjb2RlPiZsdDt0eHA6cnZtX2Jsb2NrIC8mZ3Q7PC9jb2RlPjwvaDM+ Cgo8cD5DYW4gYmUgdXNlZCBhcyBhIHNlbGYtY2xvc2luZyB0YWcgYW5kIGFzIGEgY29udGFp bmVyIHRhZy48L3A+Cgo8aDQ+QXR0cmlidXRlczo8L2g0PgoKPHVsPgoJPGxpPjxjb2RlPm5h bWU9JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KSWRlbnRpZmllciBvZiBhIGJsb2Nr IGluIHRoZSBpbmhlcml0YW5jZSBjaGFpbi4gSWYgbmVpdGhlciA8Y29kZT5jaGlsZDwvY29k ZT4gbm9yIDxjb2RlPnBhcmVudDwvY29kZT4gaXMgc2V0LCA8Y29kZT5uYW1lPC9jb2RlPiBk ZWZhdWx0cyB0byBhbiBlbXB0eSBzdHJpbmcuIEluIG90aGVyIGNhc2VzLCBhbiBhdHRlbXB0 IGlzIG1hZGUgdG8gZ3Vlc3MgdGhlIGNvcnJlY3QgbmFtZSBkZXBlbmRpbmcgb24gdGhlIGNv bnRleHQgd2hlcmUgdGhpcyB0YWcgaXMgdXNlZC48L2xpPgoJPGxpPjxjb2RlPmNoaWxkPSZx dW90O2ludGVnZXImcXVvdDs8L2NvZGU+PGJyIC8+CklmIHNldCB0byA8Y29kZT4xPC9jb2Rl PiBpdCByZWZlcmVuY2VzIHRoZSBjb250ZW50cyBvZiB0aGUgY2hpbGQgYmxvY2sgaW4gdGhl IGluaGVyaXRhbmNlIGNoYWluLiBJZiBzZXQgdG8gPGNvZGU+MjwvY29kZT4gaXQgcmVmZXJl bmNlcyB0aGUgY29udGVudHMgb2YgdGhlIGdyYW5kY2hpbGQmIzgyMzA7IGV0Yy48L2xpPgoJ PGxpPjxjb2RlPnBhcmVudD0mcXVvdDtpbnRlZ2VyJnF1b3Q7PC9jb2RlPjxiciAvPgpJZiBz ZXQgdG8gPGNvZGU+MTwvY29kZT4gaXQgcmVmZXJlbmNlcyB0aGUgY29udGVudHMgb2YgdGhl IHBhcmVudCBibG9jayBpbiB0aGUgaW5oZXJpdGFuY2UgY2hhaW4uIElmIHNldCB0byA8Y29k ZT4yPC9jb2RlPiBpdCByZWZlcmVuY2VzIHRoZSBjb250ZW50cyBvZiB0aGUgZ3JhbmRwYXJl bnQmIzgyMzA7IGV0Yy48L2xpPgo8L3VsPgoKPHA+VGhlIDxjb2RlPmNoaWxkPC9jb2RlPiBh bmQgPGNvZGU+cGFyZW50PC9jb2RlPiBhdHRyaWJ1dGVzIGFyZSBtdXR1YWxseSBleGNsdXNp dmU7IGF0IG1vc3Qgb25seSBvbmUgb2YgdGhlbSBtYXkgYmUgc2V0LjwvcD4KCjxwPjxhIGhy ZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCjxoMyBpZD0icnZtX2NoaWxkIj48Y29k ZT4mbHQ7dHhwOnJ2bV9jaGlsZCAvJmd0OzwvY29kZT48L2gzPgoKPHA+U2hvdWxkIG9ubHkg YmUgdXNlZCBhcyBhIHNlbGYtY2xvc2luZyB0YWcgYW5kIGlzIG1lcmVseSBzaG9ydGVyIHdh eSB0byB3cml0ZSA8Y29kZT4mbHQ7dHhwOnJ2bV9ibG9jayBjaGlsZD0mcXVvdDsxJnF1b3Q7 LyZndDs8L2NvZGU+PC9wPgoKPGg0PkF0dHJpYnV0ZXM6PC9oND4KCjx1bD4KCTxsaT48Y29k ZT5uYW1lPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+CklkZW50aWZpZXIgb2YgYSBi bG9jayBpbiB0aGUgaW5oZXJpdGFuY2UgY2hhaW4uIElmIG5vdCBzZXQsIGFuIGF0dGVtcHQg aXMgbWFkZSB0byBndWVzcyB0aGUgY29ycmVjdCBuYW1lIGRlcGVuZGluZyBvbiB0aGUgY29u dGV4dCB3aGVyZSB0aGlzIHRhZyBpcyB1c2VkIChvciBpdCBkZWZhdWx0cyB0byBhbiBlbXB0 eSBzdHJpbmcpLjwvbGk+CjwvdWw+Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwv YT48L3A+Cgo8aDMgaWQ9InJ2bV9jaGlsZCI+PGNvZGU+Jmx0O3R4cDpydm1fcGFyZW50IC8m Z3Q7PC9jb2RlPjwvaDM+Cgo8cD5TaG91bGQgb25seSBiZSB1c2VkIGFzIGEgc2VsZi1jbG9z aW5nIHRhZyBhbmQgaXMgbWVyZWx5IHNob3J0ZXIgd2F5IHRvIHdyaXRlIDxjb2RlPiZsdDt0 eHA6cnZtX2Jsb2NrIHBhcmVudD0mcXVvdDsxJnF1b3Q7LyZndDs8L2NvZGU+PC9wPgoKPGg0 PkF0dHJpYnV0ZXM6PC9oND4KCjx1bD4KCTxsaT48Y29kZT5uYW1lPSZxdW90O3RleHQmcXVv dDs8L2NvZGU+PGJyIC8+CklkZW50aWZpZXIgb2YgYSBibG9jayBpbiB0aGUgaW5oZXJpdGFu Y2UgY2hhaW4uIElmIG5vdCBzZXQsIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBndWVzcyB0aGUg Y29ycmVjdCBuYW1lIGRlcGVuZGluZyBvbiB0aGUgY29udGV4dCB3aGVyZSB0aGlzIHRhZyBp cyB1c2VkIChvciBpdCBkZWZhdWx0cyB0byBhbiBlbXB0eSBzdHJpbmcpLjwvbGk+CjwvdWw+ Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+CgoKPGgyIGlkPSJzdGFy dCI+R2V0dGluZyBzdGFydGVkPC9oMj4KCjxwPlVzaW5nIHRlbXBsYXRlIGluaGVyaXRhbmNl LCB0d28gb3IgbW9yZSB0ZW1wbGF0ZXMgY2FuIG9yZ2FuaXplIHRoZW1zZWx2ZXMgaW50byBh biBpbmhlcml0YW5jZSBjaGFpbi4gVGhlc2UgdGVtcGxhdGVzIGNhbiBiZSA8c3BhbiBjbGFz cz0iY2FwcyI+VFhQPC9zcGFuPiBwYWdlcyBvciA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9z cGFuPiBmb3Jtcy4gWW91IGNhbiBtaXggZm9ybXMgYW5kIHBhZ2VzIGluIGFuIGluaGVyaXRh bmNlIGNoYWluLiBUaGlzIHBsdWdpbiB0cmVhdHMgdGhlbSBhcyBpZiB0aGV5IHdlcmUgdGhl IHNhbWUuPC9wPgoKPHA+SW4gdGhlIGV4YW1wbGVzIGdpdmVuIGhlcmUgSSYjODIxNztsbCBv bmx5IHVzZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBwYWdlcy4gVGhlc2UgZXhh bXBsZXMgd2VyZSBib3Jyb3dlZCBmcm9tIDxhIGhyZWY9Imh0dHA6Ly9kb2NzLm1ha290ZW1w bGF0ZXMub3JnL2VuL2xhdGVzdC9pbmhlcml0YW5jZS5odG1sIj5NYWtvPC9hPiwgd2hpY2gg aW5zcGlyZWQgbWUgdG8gd3JpdGUgdGhpcyBwbHVnaW4uPC9wPgoKPHA+U3VwcG9zZSB5b3Ug aGF2ZSBhIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHBhZ2UgJiM4MjE2O2RlZmF1 bHQmIzgyMTc7IHRoYXQgY29udGFpbnM6PC9wPgoKPHByZT48Y29kZT4mbHQ7aHRtbCZndDsK ICAgICZsdDtib2R5Jmd0OwogICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7aGVhZGVyJnF1 b3Q7Jmd0OwogICAgICAgICAgICAmbHQ7cnZtX2Jsb2NrIG5hbWU9JnF1b3Q7aGVhZGVyJnF1 b3Q7IC8mZ3Q7CiAgICAgICAgJmx0Oy9kaXYmZ3Q7CgogICAgICAgICZsdDt0eHA6cnZtX2Js b2NrJmd0OwoKICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2Zvb3RlciZxdW90OyZndDsK ICAgICAgICAgICAgJmx0O3R4cDpydm1fYmxvY2sgbmFtZT0mcXVvdDtmb290ZXImcXVvdDsm Z3Q7CiAgICAgICAgICAgICAgICB0aGlzIGlzIHRoZSBmb290ZXIKICAgICAgICAgICAgJmx0 Oy90eHA6cnZtX2Jsb2NrJmd0OwogICAgICAgICZsdDsvZGl2Jmd0OwogICAgJmx0Oy9ib2R5 Jmd0OwombHQ7L2h0bWwmZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+QW5kIHlvdSBoYXZlIGFuIGlu aGVyaXRpbmcgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gcGFnZSAmIzgyMTY7ZGF1 Z2h0ZXImIzgyMTc7IHdoaWNoIGNvbnRhaW5zOjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDpy dm1faW5oZXJpdCBwYWdlPSZxdW90O2RlZmF1bHQmcXVvdDsmZ3Q7CiAgICAmbHQ7dHhwOnJ2 bV9ibG9jayBuYW1lPSZxdW90O2hlYWRlciZxdW90OyZndDsKICAgICAgICB0aGlzIGlzIHNv bWUgaGVhZGVyIGNvbnRlbnQKICAgICZsdDsvdHhwOnJ2bV9ibG9jayZndDsKCiAgICAmbHQ7 dHhwOnJ2bV9ibG9jayZndDsKICAgICAgICB0aGlzIGlzIHRoZSBib2R5IGNvbnRlbnQuCiAg ICAmbHQ7L3R4cDpydm1fYmxvY2smZ3Q7CiZsdDsvdHhwOnJ2bV9pbmhlcml0Jmd0OzwvY29k ZT48L3ByZT4KCjxwPlRoZSByZXN1bHQsIHdoZW4gdXNpbmcgdGhhdCAmIzgyMTY7ZGF1Z2h0 ZXImIzgyMTc7IHRlbXBsYXRlLCBpczo8L3A+Cgo8cHJlPjxjb2RlPiZsdDtodG1sJmd0Owog ICAgJmx0O2JvZHkmZ3Q7CiAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtoZWFkZXImcXVv dDsmZ3Q7CiAgICAgICAgICAgIHRoaXMgaXMgc29tZSBoZWFkZXIgY29udGVudAogICAgICAg ICZsdDsvZGl2Jmd0OwoKICAgICAgICB0aGlzIGlzIHRoZSBib2R5IGNvbnRlbnQuCgogICAg ICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7Zm9vdGVyJnF1b3Q7Jmd0OwogICAgICAgICAgICB0 aGlzIGlzIHRoZSBmb290ZXIKICAgICAgICAmbHQ7L2RpdiZndDsKICAgICZsdDsvYm9keSZn dDsKJmx0Oy9odG1sJmd0OzwvY29kZT48L3ByZT4KCjxwPkluIHRoaXMgZXhhbXBsZSB0aGUg Ym9keSBhbmQgaGVhZGVyIGNvbnRlbnQgb2YgdGhlICYjODIxNjtkYXVnaHRlciYjODIxNzsg cGFnZSBvdmVycmlkZSB0aGUgY29ycmVzcG9uZGluZyBwYXJ0cyBpbiB0aGUgJiM4MjE2O2Rl ZmF1bHQmIzgyMTc7IHBhZ2UuIE5vdGhpbmcgd2FzIHNwZWNpZmllZCBmb3IgdGhlICYjODIx Njtmb290ZXImIzgyMTc7IGJsb2NrIGluIHRoZSAmIzgyMTY7ZGF1Z2h0ZXImIzgyMTc7IHRl bXBsYXRlLCBzbyB0aGF0IHJlbWFpbnMgYXMgaXQgd2FzIGluIHRoZSAmIzgyMTY7ZGVmYXVs dCYjODIxNzsgdGVtcGxhdGUuPC9wPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8 L2E+PC9wPgoKCjxoMiBpZD0ibmVzdGluZyI+TmVzdGluZyBibG9ja3M8L2gyPgoKPHA+VGhl IG5hbWVkIGJsb2NrcyBkZWZpbmVkIGluIGFuIGluaGVyaXRlZCB0ZW1wbGF0ZSBjYW4gYWxz byBiZSBuZXN0ZWQgd2l0aGluIG90aGVyIGJsb2Nrcy4gVGhlIG5hbWUgZ2l2ZW4gdG8gZWFj aCBibG9jayBpcyBnbG9iYWxseSBhY2Nlc3NpYmxlIHZpYSBhbnkgaW5oZXJpdGluZyB0ZW1w bGF0ZS4gV2UgY2FuIGFkZCBhIG5ldyBibG9jayB0aXRsZSB0byBvdXIgaGVhZGVyIGJsb2Nr IGluIHRoZSAmIzgyMTY7ZGVmYXVsdCYjODIxNzsgdGVtcGxhdGU6PC9wPgoKPHByZT48Y29k ZT4mbHQ7aHRtbCZndDsKICAgICZsdDtib2R5Jmd0OwogICAgICAgICZsdDtkaXYgY2xhc3M9 JnF1b3Q7aGVhZGVyJnF1b3Q7Jmd0OwogICAgICAgICAgICAmbHQ7dHhwOnJ2bV9ibG9jayBu YW1lPSZxdW90O2hlYWRlciZxdW90OyZndDsKICAgICAgICAgICAgICAgICZsdDtoMiZndDsK ICAgICAgICAgICAgICAgICAgICAmbHQ7dHhwOnJ2bV9ibG9jayBuYW1lPSZxdW90O3RpdGxl JnF1b3Q7IC8mZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7L2gyJmd0OwogICAgICAgICAgICAm bHQ7L3R4cDpydm1fYmxvY2smZ3Q7CiAgICAgICAgJmx0Oy9kaXYmZ3Q7CgogICAgICAgICZs dDt0eHA6cnZtX2Jsb2NrIC8mZ3Q7CgogICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7Zm9v dGVyJnF1b3Q7Jmd0OwogICAgICAgICAgICAmbHQ7dHhwOnJ2bV9ibG9jayBuYW1lPSZxdW90 O2Zvb3RlciZxdW90OyZndDsKICAgICAgICAgICAgICAgIHRoaXMgaXMgdGhlIGZvb3Rlcgog ICAgICAgICAgICAmbHQ7L3R4cDpydm1fYmxvY2smZ3Q7CiAgICAgICAgJmx0Oy9kaXYmZ3Q7 CiAgICAmbHQ7L2JvZHkmZ3Q7CiZsdDsvaHRtbCZndDs8L2NvZGU+PC9wcmU+Cgo8cD5UaGUg aW5oZXJpdGluZyB0ZW1wbGF0ZSAmIzgyMTY7ZGF1Z2h0ZXImIzgyMTc7IGNhbiBuYW1lIGVp dGhlciBvciBib3RoIG9mIGhlYWRlciBhbmQgdGl0bGUsIHNlcGFyYXRlbHkgb3IgbmVzdGVk IHRoZW1zZWx2ZXM6PC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnJ2bV9pbmhlcml0IHBhZ2U9 JnF1b3Q7ZGVmYXVsdCZxdW90OyZndDsKICAgICZsdDt0eHA6cnZtX2Jsb2NrIG5hbWU9JnF1 b3Q7aGVhZGVyJnF1b3Q7Jmd0OwogICAgICAgIHRoaXMgaXMgc29tZSBoZWFkZXIgY29udGVu dAogICAgICAgICZsdDt0eHA6cnZtX3BhcmVudCAvJmd0OwogICAgJmx0Oy90eHA6cnZtX2Js b2NrJmd0OwoKICAgICZsdDt0eHA6cnZtX2Jsb2NrIG5hbWU9JnF1b3Q7dGl0bGUmcXVvdDsm Z3Q7CiAgICAgICAgdGhpcyBpcyB0aGUgdGl0bGUKICAgICZsdDsvdHhwOnJ2bV9ibG9jayZn dDsKCiAgICAmbHQ7dHhwOnJ2bV9ibG9jayZndDsKICAgICAgICB0aGlzIGlzIHRoZSBib2R5 IGNvbnRlbnQuCiAgICAmbHQ7dHhwOnJ2bV9ibG9jayZndDsKJmx0Oy90eHA6cnZtX2luaGVy aXQmZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+VGhlIHJlc3VsdCB3b3VsZCBiZTo8L3A+Cgo8cHJl Pjxjb2RlPiZsdDtodG1sJmd0OwogICAgJmx0O2JvZHkmZ3Q7CiAgICAgICAgJmx0O2RpdiBj bGFzcz0mcXVvdDtoZWFkZXImcXVvdDsmZ3Q7CiAgICAgICAgICAgIHRoaXMgaXMgY29tZSBo ZWFkZXIgY29udGVudAogICAgICAgICAgICAmbHQ7aDImZ3Q7CiAgICAgICAgICAgICAgICB0 aGlzIGlzIHRoZSB0aXRsZQogICAgICAgICAgICAmbHQ7L2gyJmd0OwogICAgICAgICZsdDsv ZGl2Jmd0OwoKICAgICAgICB0aGlzIGlzIHRoZSBib2R5IGNvbnRlbnQuCgogICAgICAgICZs dDtkaXYgY2xhc3M9JnF1b3Q7Zm9vdGVyJnF1b3Q7Jmd0OwogICAgICAgICAgICB0aGlzIGlz IHRoZSBmb290ZXIKICAgICAgICAmbHQ7L2RpdiZndDsKICAgICZsdDsvYm9keSZndDsKJmx0 Oy9odG1sJmd0OzwvY29kZT48L3ByZT4KCjxwPk5vdGUgd2hlbiB3ZSBvdmVycm9kZSBoZWFk ZXIsIHdlIGFkZGVkIGFuIGV4dHJhIDxjb2RlPiZsdDt0eHA6cnZtX3BhcmVudCAvJmd0Ozwv Y29kZT4gaW4gb3JkZXIgdG8gaW52b2tlIHRoZSBwYXJlbnTigJlzIGhlYWRlciBibG9jayBp biBhZGRpdGlvbiB0byBvdXIgb3duLiBUaGF04oCZcyBkZXNjcmliZWQgaW4gbW9yZSBkZXRh aWwgPGEgaHJlZj0iI3BhcmVudCI+YmVsb3c8L2E+LjwvcD4KCjxwPjxhIGhyZWY9IiN0b3Ai PkJhY2sgdG8gdG9wPC9hPjwvcD4KCgo8aDIgaWQ9Im11bHRpcGxlIj5SZW5kZXJpbmcgYSBu YW1lZCBibG9jayBtdWx0aXBsZSB0aW1lczwvaDI+Cgo8cD5Zb3UgY2FuIHVzZSBtdWx0aXBs ZSBibG9ja3Mgd2l0aCB0aGUgc2FtZSBuYW1lIHdpdGhpbiBvbmUgdGVtcGxhdGU6PC9wPgoK PHByZT48Y29kZT4mbHQ7aHRtbCZndDsKICAgICZsdDtoZWFkJmd0OwogICAgICAgICZsdDt0 aXRsZSZndDsmbHQ7dHhwOnJ2bV9ibG9jayBuYW1lPSZxdW90O3RpdGxlJnF1b3Q7IC8mZ3Q7 Jmx0Oy90aXRsZSZndDsKICAgICZsdDsvaGVhZCZndDsKICAgICZsdDtib2R5Jmd0OwogICAg Jmx0O3R4cDpydm1fYmxvY2sgbmFtZT0mcXVvdDtoZWFkZXImcXVvdDsmZ3Q7CiAgICAgICAg Jmx0O2gyJmd0OyZsdDt0eHA6cnZtX2Jsb2NrIG5hbWU9JnF1b3Q7dGl0bGUmcXVvdDsgLyZn dDsmbHQ7L2gyJmd0OwogICAgJmx0Oy90eHA6cnZtX2Jsb2NrJmd0OwogICAgJmx0Oy9ib2R5 Jmd0OwombHQ7L2h0bWwmZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+V2hlcmUgYWJvdmUgYW4gaW5o ZXJpdGluZyB0ZW1wbGF0ZSBjYW4gZGVmaW5lIDxjb2RlPiZsdDt0eHA6cnZtX2Jsb2NrIG5h bWU9JnF1b3Q7dGl0bGUmcXVvdDsmZ3Q7PC9jb2RlPiBqdXN0IG9uY2UsIGFuZCBpdCB3aWxs IGJlIHVzZWQgaW4gdGhlIGJhc2UgdGVtcGxhdGUgYm90aCBpbiB0aGUgPGNvZGU+Jmx0O3Rp dGxlJmd0OzwvY29kZT4gc2VjdGlvbiBhcyB3ZWxsIGFzIHRoZSA8Y29kZT4mbHQ7aDImZ3Q7 PC9jb2RlPjxiciAvPgp0aGlzIGlzIHRoZSBib2R5IGNvbnRlbnQuPC9wPgoKPHA+PGEgaHJl Zj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCjxoMiBpZD0iY2hpbGQiPkNoaWxkcmVu PC9oMj4KCjxwPlNvbWV0aW1lcyB5b3UgaGF2ZSBhbiBpbmhlcml0YW5jZSBjaGFpbiB0aGF0 IHNwYW5zIG1vcmUgdGhhbiB0d28gdGVtcGxhdGVzLiBPciBtYXliZSB5b3UgZG9u4oCZdCwg YnV0IHlvdeKAmWQgbGlrZSB0byBidWlsZCB5b3VyIHN5c3RlbSBzdWNoIHRoYXQgZXh0cmEg aW5oZXJpdGVkIHRlbXBsYXRlcyBjYW4gYmUgaW5zZXJ0ZWQgaW4gdGhlIG1pZGRsZSBvZiBh IGNoYWluIHdoZXJlIHRoZXkgd291bGQgYmUgc21vb3RobHkgaW50ZWdyYXRlZC4gSWYgZWFj aCB0ZW1wbGF0ZSB3YW50cyB0byBkZWZpbmUgaXRzIGxheW91dCBqdXN0IHdpdGhpbiBpdHMg bWFpbiBib2R5LCB5b3UgY2Fu4oCZdCBqdXN0IGNhbGwgPGNvZGU+Jmx0O3R4cDpibG9jayAv Jmd0OzwvY29kZT4gdG8gZ2V0IGF0IHRoZSBpbmhlcml0aW5nIHRlbXBsYXRl4oCZcyBib2R5 LCBzaW5jZSB0aGF0IGlzIG9ubHkgdGhlIHRvcG1vc3QgYm9keS4gVG8gZ2V0IGF0IHRoZSBi b2R5IG9mIHRoZSBpbmhlcml0aW5nIHRlbXBsYXRlLCB5b3UgdXNlIDxjb2RlPiZsdDt0eHA6 cnZtX2NoaWxkIC8mZ3Q7PC9jb2RlPi48L3A+Cgo8cHJlPjxjb2RlPiZsdDtodG1sJmd0Owog ICAgJmx0O2JvZHkmZ3Q7CiAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtoZWFkZXImcXVv dDsmZ3Q7CiAgICAgICAgICAgICZsdDt0eHA6cnZtX2Jsb2NrIG5hbWU9JnF1b3Q7aGVhZGVy JnF1b3Q7IC8mZ3Q7CiAgICAgICAgJmx0Oy9kaXYmZ3Q7CgogICAgICAgICZsdDt0eHA6cnZt X2NoaWxkIC8mZ3Q7CgogICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7Zm9vdGVyJnF1b3Q7 Jmd0OwogICAgICAgICAgICAmbHQ7dHhwOnJ2bV9ibG9jayBuYW1lPSZxdW90O2Zvb3RlciZx dW90OyZndDsKICAgICAgICAgICAgICAgIHRoaXMgaXMgdGhlIGZvb3RlcgogICAgICAgICAg ICAmbHQ7L3R4cDpydm1fYmxvY2smZ3Q7CiAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAmbHQ7 L2JvZHkmZ3Q7CiZsdDsvaHRtbCZndDs8L2NvZGU+PC9wcmU+Cgo8cD5MZXRzIGFsc28gYWRk IGFuIGludGVybWVkaWF0ZSB0ZW1wbGF0ZSBjYWxsZWQgJiM4MjE2O2RhdWdodGVyJiM4MjE3 OyB3aGljaCBpbmhlcml0cyBmcm9tIHRoZSAmIzgyMTY7ZGVmYXVsdCYjODIxNzsgcGFnZTo8 L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6cnZtX2luaGVyaXQgcGFnZT0mcXVvdDtkZWZhdWx0 JnF1b3Q7LyZndDsKICAgICZsdDt1bCZndDsKICAgICAgICAmbHQ7dHhwOnJ2bV9ibG9jayBu YW1lPSZxdW90O3Rvb2xiYXImcXVvdDsmZ3Q7CiAgICAgICAgICAgICZsdDtsaSZndDtzZWxl Y3Rpb24gMSZsdDsvbGkmZ3Q7CiAgICAgICAgICAgICZsdDtsaSZndDtzZWxlY3Rpb24gMiZs dDsvbGkmZ3Q7CiAgICAgICAgICAgICZsdDtsaSZndDtzZWxlY3Rpb24gMyZsdDsvbGkmZ3Q7 CiAgICAgICAgJmx0Oy90eHA6cnZtX2Jsb2NrJmd0OwogICAgJmx0Oy91bCZndDsKICAgICZs dDtkaXYgY2xhc3M9JnF1b3Q7bWFpbmxheW91dCZxdW90OyZndDsKICAgICAgICAmbHQ7dHhw OnJ2bV9jaGlsZCAvJmd0OwogICAgJmx0Oy9kaXYmZ3Q7CiZsdDsvdHhwOnJ2bV9pbmhlcml0 Jmd0OzwvY29kZT48L3ByZT4KCjxwPkFuZCBmaW5hbGx5IGNyZWF0ZSBhICYjODIxNjtncmFu ZGRhdWdodGVyJiM4MjE3OyB0ZW1wbGF0ZSB0byBpbmhlcml0IGZyb20gJiM4MjE2O2RhdWdo dGVyJiM4MjE3Ozo8L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6cnZtX2luaGVyaXQgcGFnZT0m cXVvdDtkYXVnaHRlciZxdW90Oy8mZ3Q7CiAgICAmbHQ7dHhwOnJ2bV9ibG9jayBuYW1lPSZx dW90O2hlYWRlciZxdW90OyZndDsKICAgICAgICB0aGlzIGlzIHNvbWUgaGVhZGVyIGNvbnRl bnQKICAgICZsdDsvdHhwOnJ2bV9ibG9jayZndDsKCiAgICAmbHQ7dHhwOnJ2bV9ibG9jayZn dDsKICAgICAgICB0aGlzIGlzIHRoZSBib2R5IGNvbnRlbnQuCiAgICAmbHQ7L3R4cDpydm1f YmxvY2smZ3Q7CiZsdDsvdHhwOnJ2bV9pbmhlcml0Jmd0OzwvY29kZT48L3ByZT4KCjxwPklu IHRoaXMgc2V0dXAsIGVhY2ggY2FsbCB0byA8Y29kZT4mbHQ7dHhwOnJ2bV9jaGlsZCAvJmd0 OzwvY29kZT4gd2lsbCByZW5kZXIgdGhlIGJvZHkgb2YgdGhlIG5leHQgdGVtcGxhdGUgaW4g dGhlIGluaGVyaXRhbmNlIGNoYWluICh3aGljaCBjYW4gYmUgd3JpdHRlbiBhcyAmIzgyMTY7 Z3JhbmRkYXVnaHRlciYjODIxNzsgLSZndDsgJiM4MjE2O2RhdWdodGVyJiM4MjE3OyAtJmd0 OyAmIzgyMTY7ZGVmYXVsdCYjODIxNzspLiBUaGUgb3V0cHV0IHdlIGdldCB3b3VsZCBiZTo8 L3A+Cgo8cHJlPjxjb2RlPiZsdDtodG1sJmd0OwogICAgJmx0O2JvZHkmZ3Q7CiAgICAgICAg Jmx0O2RpdiBjbGFzcz0mcXVvdDtoZWFkZXImcXVvdDsmZ3Q7CiAgICAgICAgICAgIHRoaXMg aXMgc29tZSBoZWFkZXIgY29udGVudAogICAgICAgICZsdDsvZGl2Jmd0OwoKICAgICAgICAm bHQ7dWwmZ3Q7CiAgICAgICAgICAgICZsdDtsaSZndDtzZWxlY3Rpb24gMSZsdDsvbGkmZ3Q7 CiAgICAgICAgICAgICZsdDtsaSZndDtzZWxlY3Rpb24gMiZsdDsvbGkmZ3Q7CiAgICAgICAg ICAgICZsdDtsaSZndDtzZWxlY3Rpb24gMyZsdDsvbGkmZ3Q7CiAgICAgICAgJmx0Oy91bCZn dDsKCiAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDttYWlubGF5b3V0JnF1b3Q7Jmd0Owog ICAgICAgIHRoaXMgaXMgdGhlIGJvZHkgY29udGVudC4KICAgICAgICAmbHQ7L2RpdiZndDsK CiAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtmb290ZXImcXVvdDsmZ3Q7CiAgICAgICAg ICAgIHRoaXMgaXMgdGhlIGZvb3RlcgogICAgICAgICZsdDsvZGl2Jmd0OwogICAgJmx0Oy9i b2R5Jmd0OwombHQ7L2h0bWwmZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+U28gYWJvdmUsIHdlIGhh dmUgdGhlIDxjb2RlPiZsdDtodG1sJmd0OzwvY29kZT4sIDxjb2RlPiZsdDtib2R5Jmd0Ozwv Y29kZT4gYW5kIGhlYWRlci9mb290ZXIgbGF5b3V0IG9mIHRoZSAmIzgyMTY7ZGVmYXVsdCYj ODIxNzsgcGFnZSwgd2UgaGF2ZSB0aGUgPGNvZGU+Jmx0O3VsJmd0OzwvY29kZT4gYW5kIG1h aW5sYXlvdXQgc2VjdGlvbiBvZiB0aGUgJiM4MjE2O2RhdWdodGVyJiM4MjE3OyBwYWdlLCBh bmQgdGhlIG1haW4gYm9keSBvZiB0aGUgJiM4MjE2O2dyYW5kZGF1Z2h0ZXImIzgyMTc7IHBh Z2UgYXMgd2VsbCBhcyBpdHMgb3ZlcnJpZGRlbiAmIzgyMTY7aGVhZGVyJiM4MjE3OyBibG9j ay4gVGhlICYjODIxNjtkYXVnaHRlciYjODIxNzsgdGVtcGxhdGUgaXMgaW5zZXJ0ZWQgaW50 byB0aGUgbWlkZGxlIG9mIHRoZSBjaGFpbiB3aXRob3V0ICYjODIxNjtkZWZhdWx0JiM4MjE3 OyB0ZW1wbGF0ZSBoYXZpbmcgdG8gY2hhbmdlIGFueXRoaW5nLiBXaXRob3V0IDxjb2RlPiZs dDt0eHA6cnZtX2NoaWxkJmd0OzwvY29kZT4sIG9ubHkgdGhlIG1haW4gYm9keSBvZiB0aGUg JiM4MjE2O2dyYW5kZGF1Z2h0ZXImIzgyMTc7IHRlbXBsYXRlIGNvdWxkIGJlIHVzZWQ7IHRo ZXJlIHdvdWxkIGJlIG5vIHdheSB0byBjYWxsIHRoZSAmIzgyMTY7ZGF1Z2h0ZXImIzgyMTc7 IGJvZHkgY29udGVudC48L3A+Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48 L3A+CgoKPGgyIGlkPSJwYXJlbnQiPlBhcmVudHM8L2gyPgoKPHA+TGV0cyBub3cgbG9vayBh dCBwYXJlbnRzOyB0aGUgb3Bwb3NpdGUgb2YgY2hpbGRyZW4uIFRoZSBwYXJlbnQgdGVtcGxh dGUgaXMgdGhlIG9uZSBpbW1lZGlhdGVseSBwcmVjZWRpbmcgdGhlIGN1cnJlbnQgdGVtcGxh dGUuIEJsb2NrcyBjYW4gY2FsbCB1cG9uIHRoZWlyIG92ZXJyaWRkZW4gdmVyc2lvbnMuIFRo aXMgaXMgbm90IGFzIGhhcmQgYXMgaXQgc291bmRzLiBMZXRzIG1vZGlmeSB0aGUgJiM4MjE2 O2dyYW5kZGF1Z2h0ZXImIzgyMTc7IHRlbXBsYXRlIHRvIGF1Z21lbnQgdGhlIGxpc3Qgb2Yg c2VsZWN0aW9ucyBwcm92aWRlZCBieSB0aGUgJiM4MjE2O3Rvb2xiYXImIzgyMTc7IGJsb2Nr IGluIHRoZSAmIzgyMTY7ZGF1Z2h0ZXImIzgyMTc7IHRlbXBsYXRlOjwvcD4KCjxwcmU+PGNv ZGU+Jmx0O3R4cDpydm1faW5oZXJpdCBwYWdlPSZxdW90O2RhdWdodGVyJnF1b3Q7IC8mZ3Q7 CiAgICAmbHQ7dHhwOnJ2bV9ibG9jayBuYW1lPSZxdW90O2hlYWRlciZxdW90OyZndDsKICAg ICAgICB0aGlzIGlzIHNvbWUgaGVhZGVyIGNvbnRlbnQKICAgICZsdDsvdHhwOnJ2bV9ibG9j ayZndDsKCiAgICAmbHQ7dHhwOnJ2bV9ibG9jayBuYW1lPSZxdW90O3Rvb2xiYXImcXVvdDsm Z3Q7CiAgICAgICAgJmx0O3R4cDpydm1fcGFyZW50IC8mZ3Q7CiAgICAgICAgJmx0O2xpJmd0 O3NlbGVjdGlvbiA0Jmx0Oy9saSZndDsKICAgICAgICAmbHQ7bGkmZ3Q7c2VsZWN0aW9uIDUm bHQ7L2xpJmd0OwogICAgJmx0Oy90eHA6cnZtX2Jsb2NrJmd0OwoKICAgICZsdDt0eHA6cnZt X2Jsb2NrJmd0OwogICAgICAgIHRoaXMgaXMgdGhlIGJvZHkgY29udGVudC4KICAgICZsdDsv dHhwOnJ2bV9ibG9jayZndDsKJmx0Oy90eHA6cnZtX2luaGVyaXQmZ3Q7PC9jb2RlPjwvcHJl PgoKPHA+QWJvdmUsIHdlIGltcGxlbWVudGVkIGEgJiM4MjE2O3Rvb2xiYXImIzgyMTc7IGJs b2NrLCB3aGljaCBpcyBtZWFudCB0byBvdmVycmlkZSB0aGUgZGVmaW5pdGlvbiBvZiB0b29s YmFyIHdpdGhpbiB0aGUgaW5oZXJpdGVkIHRlbXBsYXRlICYjODIxNjtncmFuZGRhdWdodGVy JiM4MjE3Oy4gSG93ZXZlciwgc2luY2Ugd2Ugd2FudCB0aGUgY29udGVudCBmcm9tIHRoYXQg b2YgJiM4MjE2O2RhdWdodGVyJiM4MjE3OyBhcyB3ZWxsLCB3ZSBjYWxsIGl0IHZpYSB0aGUg PGNvZGU+Jmx0O3R4cDpydm1fcGFyZW50Jmd0OzwvY29kZT4gdGFnIHdoZW5ldmVyIHdlIHdh bnQgaXTigJlzIGNvbnRlbnQsIGluIHRoaXMgY2FzZSBiZWZvcmUgd2UgYWRkIG91ciBvd24g c2VsZWN0aW9ucy4gU28gdGhlIG91dHB1dCBmb3IgdGhlIHdob2xlIHRoaW5nIGlzIG5vdzo8 L3A+Cgo8cHJlPjxjb2RlPiZsdDtodG1sJmd0OwogICAgJmx0O2JvZHkmZ3Q7CiAgICAgICAg Jmx0O2RpdiBjbGFzcz0mcXVvdDtoZWFkZXImcXVvdDsmZ3Q7CiAgICAgICAgICAgIHRoaXMg aXMgc29tZSBoZWFkZXIgY29udGVudAogICAgICAgICZsdDsvZGl2Jmd0OwoKICAgICAgICAm bHQ7dWwmZ3Q7CiAgICAgICAgICAgICZsdDtsaSZndDtzZWxlY3Rpb24gMSZsdDsvbGkmZ3Q7 CiAgICAgICAgICAgICZsdDtsaSZndDtzZWxlY3Rpb24gMiZsdDsvbGkmZ3Q7CiAgICAgICAg ICAgICZsdDtsaSZndDtzZWxlY3Rpb24gMyZsdDsvbGkmZ3Q7CiAgICAgICAgICAgICZsdDts aSZndDtzZWxlY3Rpb24gNCZsdDsvbGkmZ3Q7CiAgICAgICAgICAgICZsdDtsaSZndDtzZWxl Y3Rpb24gNSZsdDsvbGkmZ3Q7CiAgICAgICAgJmx0Oy91bCZndDsKCiAgICAgICAgJmx0O2Rp diBjbGFzcz0mcXVvdDttYWlubGF5b3V0JnF1b3Q7Jmd0OwogICAgICAgIHRoaXMgaXMgdGhl IGJvZHkgY29udGVudC4KICAgICAgICAmbHQ7L2RpdiZndDsKCiAgICAgICAgJmx0O2RpdiBj bGFzcz0mcXVvdDtmb290ZXImcXVvdDsmZ3Q7CiAgICAgICAgICAgIHRoaXMgaXMgdGhlIGZv b3RlcgogICAgICAgICZsdDsvZGl2Jmd0OwogICAgJmx0Oy9ib2R5Jmd0OwombHQ7L2h0bWwm Z3Q7PC9jb2RlPjwvcHJlPgoKPHA+YW5kIHlvdeKAmXJlIG5vdyBhIHRlbXBsYXRlIGluaGVy aXRhbmNlIG5pbmphITwvcD4KCjxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwv cD4iO3M6NDoiY29kZSI7czozMjY1OiIKaWYgKGNsYXNzX2V4aXN0cygnXFRleHRwYXR0ZXJu XFRhZ1xSZWdpc3RyeScpKSB7CglUeHA6OmdldCgnXFRleHRwYXR0ZXJuXFRhZ1xSZWdpc3Ry eScpCgkJLT5yZWdpc3RlcigncnZtX2luaGVyaXQnKQoJCS0+cmVnaXN0ZXIoJ3J2bV9ibG9j aycpCgkJLT5yZWdpc3RlcigncnZtX2NoaWxkJykKCQktPnJlZ2lzdGVyKCdydm1fcGFyZW50 Jyk7Cn0KCmZ1bmN0aW9uIHJ2bV9pbmhlcml0KCRhdHRzLCAkdGhpbmcgPSBudWxsKQp7Cglz dGF0aWMgJHN0YWNrID0gYXJyYXkoKTsKCglleHRyYWN0KGxBdHRzKGFycmF5KAoJCSdwYWdl JyA9PiBmYWxzZSwKCQknZm9ybScgPT4gZmFsc2UKCSksICRhdHRzKSk7CgoJJG91dCA9ICcn OwoJcnZtX2Jsb2NrKGZhbHNlKTsKCglpZiAoJHRoaW5nICE9PSBudWxsKQoJewoJCXBhcnNl KCR0aGluZyk7Cgl9CgllbHNlCgl7CgkJdHJpZ2dlcl9lcnJvcigncnZtX2luaGVyaXQgc2hv dWxkIGJlIHVzZWQgYXMgYSBjb250YWluZXIgdGFnJyk7Cgl9CgoJcnZtX2Jsb2NrKHRydWUp OwoKCWlmICgkcGFnZSA9PT0gZmFsc2UgYW5kICRmb3JtID09PSBmYWxzZSkKCXsKCQkkcGFn ZSA9ICdkZWZhdWx0JzsKCX0KCglpZiAoJHBhZ2UgIT09IGZhbHNlKQoJewoJCWlmIChpbl9h cnJheSgkcGFnZSwgJHN0YWNrLCB0cnVlKSkKCQl7CgkJCXRyaWdnZXJfZXJyb3IoJ2NpcmN1 bGFyIHBhZ2UgcmVmZXJlbmNlOiAnIC4gYXJyYXlfcG9wKCRzdGFjaykgLiAnIGNhbGxzICcg LiAkcGFnZSk7CgkJfQoJCWVsc2UKCQl7CgkJCSRzdGFja1tdID0gJHBhZ2U7CgoJCQlpZiAo aXNfY2FsbGFibGUoJ2ZldGNoX3BhZ2UnKSkKCQkJewoJCQkJJHBhZ2UgPSBmZXRjaF9wYWdl KCRwYWdlKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRwYWdlID0gc2FmZV9maWVsZCgndXNl cl9odG1sJywndHhwX3BhZ2UnLCJuYW1lPSciLmRvU2xhc2goJHBhZ2UpLiInIik7CgkJCX0K CgkJCSRvdXQgPSAoJHBhZ2UgPT09IGZhbHNlID8gJycgOiBwYXJzZSgkcGFnZSkpOwoJCX0K CX0KCWVsc2UKCXsKCQkkb3V0ID0gcGFyc2VfZm9ybSgkZm9ybSk7Cgl9CgoJcnZtX2Jsb2Nr KGZhbHNlKTsKCXJldHVybiAkb3V0Owp9CgpmdW5jdGlvbiBydm1fYmxvY2soJGF0dHMsICR0 aGluZyA9IG51bGwpCnsKCXN0YXRpYyAkcGFyc2UgPSB0cnVlOwoJc3RhdGljICRjaGFpbiA9 IGFycmF5KCk7CglzdGF0aWMgJGNoaWxkcmVuID0gYXJyYXkoKTsKCXN0YXRpYyAkcGFyZW50 cyA9IGFycmF5KCk7CglzdGF0aWMgJHF1ZXVlID0gYXJyYXkoKTsKCglpZiAoaXNfYm9vbCgk YXR0cykpCgl7CgkJJHBhcnNlID0gJGF0dHM7CgkJcmV0dXJuOwoJfQoKCWV4dHJhY3QobEF0 dHMoYXJyYXkoCgkJJ25hbWUnID0+IGZhbHNlLAoJCSdjaGlsZCcgPT4gZmFsc2UsCgkJJ3Bh cmVudCcgPT4gZmFsc2UKCSksICRhdHRzKSk7CgoJJG91dCA9ICcnOwoKCWlmICgkY2hpbGQg b3IgJHBhcmVudCkKCXsKCQlpZiAoJHRoaW5nICE9PSBudWxsKQoJCXsKCQkJdHJpZ2dlcl9l cnJvcignaWdub3JpbmcgY29udGFpbmVyIGNvbnRlbnRzIGJlY2F1c2UgY2hpbGQgb3IgcGFy ZW50IGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQnKTsKCQl9CgoJCWlmICgkbmFtZSA9PT0gZmFs c2UpCgkJewoJCSAJaWYgKCFlbXB0eSgkcXVldWUpKQoJCSAJewoJCQkJJG5hbWUgPSBlbmQo JHF1ZXVlKTsKCQkJfQoJCQllbHNlaWYgKCRwYXJlbnQpCgkJCXsKCQkJCXRyaWdnZXJfZXJy b3IoJ3VzZSBvZiBwYXJlbnQgYXR0cmlidXRlIGluIGEgc3RhbmRhbG9uZSBibG9jayB0YWcg aXMgbm90IGFsbG93ZWQnKTsKCQkJfQoJCX0KCX0KCglpZiAoJG5hbWUgPT09IGZhbHNlKQoJ ewoJCSRuYW1lID0gJyc7Cgl9CgoJaWYgKCRjaGlsZCAhPT0gZmFsc2UpCgl7CgkJaWYgKGFz c2VydF9pbnQoJGNoaWxkKSBhbmQgJGNoaWxkID4gMCkKCQl7CgkJCWlmICghaXNzZXQoJGNo aWxkcmVuWyRuYW1lXSkpCgkJCXsKCQkJCSRjaGlsZHJlblskbmFtZV0gPSBjb3VudCgkY2hh aW5bJG5hbWVdKTsKCQkJfQoKCQkJJGNoaWxkcmVuWyRuYW1lXSAtPSAkY2hpbGQ7CgoJCQlp ZiAoaXNzZXQoJGNoYWluWyRuYW1lXSkgYW5kICRjaGlsZHJlblskbmFtZV0gPj0gMCkKCQkJ ewoJCQkJJHRoaW5nID0gJGNoYWluWyRuYW1lXVskY2hpbGRyZW5bJG5hbWVdXTsKCQkJCSRv dXQgPSAoJHRoaW5nID09PSBudWxsID8gJycgOiBwYXJzZSgkdGhpbmcpKTsKCQkJfQoJCX0K CX0KCWVsc2VpZiAoJHBhcmVudCAhPT0gZmFsc2UpCgl7CgkJaWYgKGFzc2VydF9pbnQoJHBh cmVudCkgYW5kICRwYXJlbnQgPiAwKQoJCXsKCQkJaWYgKCFpc3NldCgkcGFyZW50c1skbmFt ZV0pKQoJCQl7CgkJCQkkcGFyZW50c1skbmFtZV0gPSAwOwoJCQl9CgoJCQkkcGFyZW50c1sk bmFtZV0gKz0gJHBhcmVudDsKCgkJCWlmIChpc3NldCgkY2hhaW5bJG5hbWVdKSBhbmQgJHBh cmVudHNbJG5hbWVdIDwgY291bnQoJGNoYWluWyRuYW1lXSkpCgkJCXsKCQkJCSR0aGluZyA9 ICRjaGFpblskbmFtZV1bJHBhcmVudHNbJG5hbWVdXTsKCQkJCSRvdXQgPSAoJHRoaW5nID09 PSBudWxsID8gJycgOiBwYXJzZSgkdGhpbmcpKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCXRy aWdnZXJfZXJyb3IoJ21pc3NpbmcgcGFyZW50Jyk7CgkJCX0KCQl9Cgl9CgllbHNlCgl7CgkJ JGNoYWluWyRuYW1lXVtdID0gJHRoaW5nOwoKCQlpZiAoJHBhcnNlKQoJCXsKCQkJaWYgKGlu X2FycmF5KCRuYW1lLCAkcXVldWUpKQoJCQl7CgkJCQl0cmlnZ2VyX2Vycm9yKCdkbyBub3Qg bmVzdCBibG9ja3Mgd2l0aCB0aGUgc2FtZSBuYW1lLCB1bmxlc3MgaXQgaXMgYSBwYXJlbnQv Y2hpbGQgY29uc3RydWN0LicpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHF1ZXVlW10gPSAk bmFtZTsKCQkJCSR0aGluZyA9ICRjaGFpblskbmFtZV1bMF07CgkJCQkkb3V0ID0gKCR0aGlu ZyA9PT0gbnVsbCA/ICcnIDogcGFyc2UoJHRoaW5nKSk7CgkJCQlhcnJheV9wb3AoJHF1ZXVl KTsKCQkJfQoKCQkJYXJyYXlfcG9wKCRjaGFpblskbmFtZV0pOyAjIG5lZWRlZCBpbiBjYXNl IGEgdGVtcGxhdGUgY29udGFpbnMgdGhlIHNhbWUgYmxvY2sgbW9yZSB0aGVuIG9uY2UuCgkJ fQoJfQoKCXJldHVybiAkb3V0Owp9CgpmdW5jdGlvbiBydm1fY2hpbGQoJGF0dHMsICR0aGlu ZyA9IG51bGwpCnsKCSRhdHRzWydjaGlsZCddID0gMTsKCXJldHVybiBydm1fYmxvY2soJGF0 dHMpOwp9CgpmdW5jdGlvbiBydm1fcGFyZW50KCRhdHRzLCAkdGhpbmcgPSBudWxsKQp7Cgkk YXR0c1sncGFyZW50J10gPSAxOwoJcmV0dXJuIHJ2bV9ibG9jaygkYXR0cyk7Cn0KIjtzOjM6 Im1kNSI7czozMjoiZjM5MGUxZThlMWJlMjc0NTE4MDE3NWEzYjE4ZmM0NTAiO30=