# zem_contact_reborn v4.0.3.21 # Form mailer for Textpattern # # License: GNU GPLv2 or later # # TXP Community # http://forum.textpattern.com/viewtopic.php?id=23728 # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTg6InplbV9jb250YWN0X3JlYm9ybiI7czo3OiJ2ZXJzaW9u IjtzOjg6IjQuMC4zLjIxIjtzOjY6ImF1dGhvciI7czoxMzoiVFhQIENvbW11bml0eSI7czox MDoiYXV0aG9yX3VyaSI7czo1MToiaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3 dG9waWMucGhwP2lkPTIzNzI4IjtzOjExOiJkZXNjcmlwdGlvbiI7czoyNzoiRm9ybSBtYWls ZXIgZm9yIFRleHRwYXR0ZXJuIjtzOjQ6InR5cGUiO2k6MDtzOjQ6ImhlbHAiO3M6MzY3MzI6 IiA8c3R5bGU+CiAgIGxpIGNvZGUge2ZvbnQtd2VpZ2h0OiBib2xkO30KICAgcHJlIHtwYWRk aW5nOiAwLjVlbSAxZW07IGJhY2tncm91bmQ6ICNlZWU7IGJvcmRlcjogMXB4IGRhc2hlZCAj Y2NjO30KICAgaDEsIGgyLCBoMywgaDMgY29kZSB7Zm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7 IGZvbnQtd2VpZ2h0OiBib2xkO30KICAgaDEsIGgyLCBoMyB7bWFyZ2luLWxlZnQ6IC0xZW07 fQogICBoMiwgaDMge21hcmdpbi10b3A6IDJlbTt9CiAgIGgxIHtmb250LXNpemU6IDNlbTt9 CiAgIGgyIHtmb250LXNpemU6IDJlbTt9CiAgIGgzIHtmb250LXNpemU6IDEuNWVtO30KICAg bGkgYSBjb2RlIHtmb250LXdlaWdodDogbm9ybWFsO30KICAgLnJlcXVpcmVkLCAud2Fybmlu ZyB7Y29sb3I6cmVkO30KIDwvc3R5bGU+Cgo8aDEgaWQ9InRvcCI+WmVtIENvbnRhY3QgUmVi b3JuPC9oMT4KCjxwPlBsZWFzZSByZXBvcnRzIGJ1Z3MgYW5kIHByb2JsZW1zIHdpdGggdGhp cyBwbHVnaW4gaW4gPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3 dG9waWMucGhwP2lkPTIzNzI4Ij50aGlzIGZvcnVtIHRocmVhZDwvYT4uPC9wPgoKPHAgY2xh c3M9InJlcXVpcmVkIj5UaGlzIHBsdWdpbiByZXF1aXJlcyBhIHNlcGFyYXRlIGxhbmd1YWdl IHBsdWdpbiBjYWxsZWQgPGNvZGU+emVtX2NvbnRhY3RfbGFuZzwvY29kZT4gdG8gYmUgaW5z dGFsbGVkIGFuZCBhY3RpdmF0ZWQgdG8gd29yayBwcm9wZXJseS48L3A+CgoKPGgyIGlkPSJj b250ZW50cyI+Q29udGVudHM8L2gyPgoKPHVsPgoJPGxpPjxhIGhyZWY9IiNmZWF0dXJlcyI+ RmVhdHVyZXM8L2E+PC9saT4KCTxsaT48YSBocmVmPSIjc3RhcnQiPkdldHRpbmcgc3RhcnRl ZDwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0iI2NvbnRhY3Rmb3JtIj5Db250YWN0IGZvcm08 L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3NlbmRhcnRpY2xlIj5TZW5kIGFydGljbGU8L2E+ PC9saT4KCTwvdWw+PC9saT4KCTxsaT48YSBocmVmPSIjdGFncyI+VGFnczwvYT4KCTx1bD4K CQk8bGk+PGEgaHJlZj0iI3pjIj4gPGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdCAvJmd0Ozwv Y29kZT4gPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiN6Y190ZXh0Ij4gPGNvZGU+Jmx0O3R4 cDp6ZW1fY29udGFjdF90ZXh0IC8mZ3Q7PC9jb2RlPiA8L2E+PC9saT4KCQk8bGk+PGEgaHJl Zj0iI3pjX2VtYWlsIj4gPGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9lbWFpbCAvJmd0Ozwv Y29kZT4gPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiN6Y190ZXh0YXJlYSI+IDxjb2RlPiZs dDt0eHA6emVtX2NvbnRhY3RfdGV4dGFyZWEgLyZndDs8L2NvZGU+IDwvYT48L2xpPgoJCTxs aT48YSBocmVmPSIjemNfc3VibWl0Ij4gPGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zdWJt aXQgLyZndDs8L2NvZGU+IDwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjemNfc2VsZWN0Ij4g PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zZWxlY3QgLyZndDs8L2NvZGU+IDwvYT48L2xp PgoJCTxsaT48YSBocmVmPSIjemNfY2hlY2tib3giPiA8Y29kZT4mbHQ7dHhwOnplbV9jb250 YWN0X2NoZWNrYm94IC8mZ3Q7PC9jb2RlPiA8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3pj X3JhZGlvIj4gPGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9yYWRpbyAvJmd0OzwvY29kZT4g PC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiN6Y19zZWNyZXQiPiA8Y29kZT4mbHQ7dHhwOnpl bV9jb250YWN0X3NlY3JldCAvJmd0OzwvY29kZT4gPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9 IiN6Y19zZXJ2ZXJfaW5mbyI+IDxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3Rfc2VydmVyaW5m byAvJmd0OzwvY29kZT4gPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiN6Y19zZW5kX2FydGlj bGUiPiA8Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3NlbmRfYXJ0aWNsZSAvJmd0OzwvY29k ZT4gPC9hPjwvbGk+Cgk8L3VsPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI2FkdmFuY2VkIj5BZHZh bmNlZCBleGFtcGxlczwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0iI3Nob3dfZXJyb3IiPlNl cGFyYXRlIGlucHV0IGFuZCBlcnJvciBmb3JtczwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIj c3ViamVjdF9mb3JtIj5Vc2VyIHNlbGVjdGFibGUgc3ViamVjdCBmaWVsZDwvYT48L2xpPgoJ CTxsaT48YSBocmVmPSIjdG9fZm9ybSI+VXNlciBzZWxlY3RhYmxlIHJlY2lwaWVudCwgd2l0 aG91dCBzaG93aW5nIGVtYWlsIGFkZHJlc3NlczwvYT48L2xpPgoJPC91bD48L2xpPgoJPGxp PjxhIGhyZWY9IiNzdHlsaW5nIj5TdHlsaW5nPC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI2hp c3RvcnkiPkhpc3Rvcnk8L2E+PC9saT4KCTxsaT48YSBocmVmPSIjY3JlZGl0cyI+Q3JlZGl0 czwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNhcGkiPlBsdWdpbiA8c3BhbiBjbGFzcz0iY2Fw cyI+QVBJPC9zcGFuPiBhbmQgY2FsbGJhY2sgZXZlbnRzPC9hPjwvbGk+CjwvdWw+CgoKCjxo MiBpZD0iZmVhdHVyZXMiPkZlYXR1cmVzPC9oMj4KCjx1bD4KCTxsaT5BcmJpdHJhcnkgdGV4 dCBmaWVsZHMgY2FuIGJlIHNwZWNpZmllZCwgd2l0aCBtaW4vbWF4L3JlcXVpcmVkIHNldHRp bmdzIGZvciB2YWxpZGF0aW9uLjwvbGk+Cgk8bGk+RW1haWwgYWRkcmVzcyB2YWxpZGF0aW9u LCBpbmNsdWRpbmcgYSBjaGVjayBmb3IgYSB2YWxpZCBNWCByZWNvcmQgKFVuaXggb25seSku PC9saT4KCTxsaT5TYWZlIGVzY2FwaW5nIG9mIGlucHV0IGRhdGEuPC9saT4KCTxsaT48c3Bh biBjbGFzcz0iY2FwcyI+VVRGPC9zcGFuPi04IHNhZmUuPC9saT4KCTxsaT5BY2Nlc3NpYmxl IGZvcm0gbGF5b3V0LCBpbmNsdWRpbmcgPGNvZGU+Jmx0O2xhYmVsJmd0OzwvY29kZT4sIDxj b2RlPiZsdDtsZWdlbmQmZ3Q7PC9jb2RlPiBhbmQgPGNvZGU+Jmx0O2ZpZWxkc2V0Jmd0Ozwv Y29kZT4gdGFncy48L2xpPgoJPGxpPlZhcmlvdXMgY2xhc3NlcyBhbmQgaWRzIHRvIGFsbG93 IGVhc3kgc3R5bGluZyBvZiBhbGwgcGFydHMgb2YgdGhlIGZvcm0uPC9saT4KCTxsaT5BIHNl cGFyYXRlIGxhbmd1YWdlIHBsdWctaW4gdG8gZW5hYmxlIGVhc3kgbG9jYWxpc2F0aW9uLjwv bGk+Cgk8bGk+U3BhbSBwcmV2ZW50aW9uIDxzcGFuIGNsYXNzPSJjYXBzIj5BUEk8L3NwYW4+ ICh1c2VkIGJ5IFRyYW5xdWlsbG8mIzgyMTc7cyA8Y29kZT5wYXBfY29udGFjdF9jbGVhbmVy PC9jb2RlPiBwbHVnaW4pLjwvbGk+CjwvdWw+Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRv IHRvcDwvYT48L3A+CgoKPGgyIGlkPSJzdGFydCI+R2V0dGluZyBzdGFydGVkPC9oMj4KCgo8 aDMgaWQ9ImNvbnRhY3Rmb3JtIj5Db250YWN0IGZvcm08L2gzPgoKPHA+VGhlIHNpbXBsZXN0 IGZvcm0gaXMgc2hvd24gYmVsb3csIHdoaWNoIHByb2R1Y2VzIGEgZGVmYXVsdCBmb3JtIHdp dGggTmFtZSwgRW1haWwgYW5kIE1lc3NhZ2UgZmllbGRzLiBFbWFpbCB3aWxsIGJlIGRlbGl2 ZXJlZCB0byByZWNpcGllbnRAZXhhbXBsZS5jb20sIHdpdGggdGhlIHVzZXImIzgyMTc7cyBz dXBwbGllZCBlbWFpbCBhcyB0aGUgJiM4MjIwO0Zyb206JiM4MjIxOyBhZGRyZXNzLjwvcD4K CjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdCB0bz0mcXVvdDtyZWNpcGllbnRAZXhh bXBsZS5jb20mcXVvdDsgLyZndDs8L2NvZGU+PC9wcmU+Cgo8cD5UbyBzcGVjaWZ5IGZpZWxk cyBleHBsaWNpdGx5LCB1c2Ugc29tZXRoaW5nIGxpa2UgdGhpczo8L3A+Cgo8cHJlPjxjb2Rl PiZsdDt0eHA6emVtX2NvbnRhY3QgdG89JnF1b3Q7cmVjaXBpZW50QGV4YW1wbGUuY29tJnF1 b3Q7Jmd0OwogICZsdDt0eHA6emVtX2NvbnRhY3RfZW1haWwgLyZndDsKICAmbHQ7dHhwOnpl bV9jb250YWN0X3RleHQgbGFiZWw9JnF1b3Q7UGhvbmUmcXVvdDsgbWluPTcgbWF4PTE1LyZn dDsKICAmbHQ7dHhwOnplbV9jb250YWN0X3RleHRhcmVhIGxhYmVsPSZxdW90O1lvdXIgcXVl c3Rpb24mcXVvdDsgLyZndDsKICAmbHQ7dHhwOnplbV9jb250YWN0X3N1Ym1pdCBsYWJlbD0m cXVvdDtTZW5kJnF1b3Q7IC8mZ3Q7CiZsdDsvdHhwOnplbV9jb250YWN0Jmd0OzwvY29kZT48 L3ByZT4KCjxwPkFsdGVybmF0aXZlbHksIHBsYWNlIHRoZSBmaWVsZCBzcGVjaWZpY2F0aW9u cyBpbiBhIFRleHRwYXR0ZXJuIGZvcm0sIGFuZCBjYWxsIGl0IGxpa2UgdGhpczo8L3A+Cgo8 cHJlPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3QgdG89JnF1b3Q7cmVjaXBpZW50QGV4YW1w bGUuY29tJnF1b3Q7IGZvcm09JnF1b3Q7bXljb250YWN0Zm9ybSZxdW90OyAvJmd0OzwvY29k ZT48L3ByZT4KCjxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgo8aDMg aWQ9InNlbmRhcnRpY2xlIj5TZW5kIGFydGljbGU8L2gzPgoKPHA+V2l0aGluIHRoZSBjb250 ZXh0IG9mIGFuIGluZGl2aWR1YWwgYXJ0aWNsZSwgdGhpcyBwbHVnaW4gY2FuIGJlIHVzZWQg dG8gc2VuZCB0aGUgYXJ0aWNsZSAob3IgZXhjZXJwdCwgaWYgaXQgZXhpc3RzKSB0byBhbiBl bWFpbCBhZGRyZXNzIHNwZWNpZmllZCBieSB0aGUgdmlzaXRvci4gVGhpcyByZXF1aXJlcyBh dCBsZWFzdCB0d28gdGFnczo8YnIgLz4KPHVsPgoJPGxpPjxjb2RlPnplbV9jb250YWN0PC9j b2RlPiwgdG8gY3JlYXRlIGZvcm0gdGhhdCBpcyBpbml0aWFsbHkgaGlkZGVuIGJ5IHNldHRp bmcgdGhlIDxjb2RlPnNlbmRfYXJ0aWNsZTwvY29kZT4gYXR0cmlidXRlLjwvbGk+Cgk8bGk+ PGNvZGU+emVtX2NvbnRhY3Rfc2VuZF9hcnRpY2xlPC9jb2RlPiwgdG8gY3JlYXRlIGEgJiM4 MjE2O3NlbmQgYXJ0aWNsZSYjODIxNzsgbGluayB3aGljaCByZXZlYWxzIHRoZSBhZm9yZW1l bnRpb25lZCBmb3JtIHdoZW4gY2xpY2tlZC48L2xpPjxiciAvPgo8L3VsPjwvcD4KCjxwcmU+ PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdCBzZW5kX2FydGljbGU9JnF1b3Q7MSZxdW90OyAv Jmd0OwombHQ7dHhwOnplbV9jb250YWN0X3NlbmRfYXJ0aWNsZSAvJmd0OzwvY29kZT48L3By ZT4KCjxwPkJ5IGRlZmF1bHQgdGhlIGZvcm0gY29udGFpbnMgZmllbGRzIGZvciB5b3VyIG5h bWUgYW5kIGVtYWlsIGFkZHJlc3MsIHRoZSByZWNpcGllbnQmIzgyMTc7cyBlbWFpbCBhZGRy ZXNzIGFuZCBhIHBlcnNvbmFsIG1lc3NhZ2UsIGJ1dCBzaW1pbGFyIHRvIGNvbnRhY3QgZm9y bXMgeW91IGNhbiBjcmVhdGUgeW91ciBvd24gZm9ybSBsYXlvdXQuIFNvbWUgdGhpbmdzIHlv dSBuZWVkIHRvIGtub3c6PGJyIC8+Cjx1bD4KCTxsaT5TZXQgdGhlIDxjb2RlPnNlbmRfYXJ0 aWNsZTwvY29kZT4gYXR0cmlidXRlIHRvIDxjb2RlPjE8L2NvZGU+IGluIHRoZSA8Y29kZT56 ZW1fY29udGFjdDwvY29kZT4gdGFnLjwvbGk+Cgk8bGk+VXNlIGEgPGNvZGU+emVtX2NvbnRh Y3RfZW1haWw8L2NvZGU+IHRhZyB3aXRoIHRoZSA8Y29kZT5zZW5kX2FydGljbGU8L2NvZGU+ IGF0dHJpYnV0ZSBzZXQgdG8gPGNvZGU+MTwvY29kZT4uIFRoaXMgZmllbGQgd2lsbCBiZSB1 c2VkIGFzIHRoZSByZWNpcGllbnQgZW1haWwgYWRkcmVzcy48L2xpPjxiciAvPgo8L3VsPjwv cD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdCB0bz0mcXVvdDt5b3VAZXhhbXBs ZS5jb20mcXVvdDsgc2VuZF9hcnRpY2xlPSZxdW90OzEmcXVvdDsmZ3Q7CiAgJmx0O3R4cDp6 ZW1fY29udGFjdF9lbWFpbCBsYWJlbD0mcXVvdDtSZWNpcGllbnQgRW1haWwmcXVvdDsgc2Vu ZF9hcnRpY2xlPSZxdW90OzEmcXVvdDsgLyZndDsKICAmbHQ7dHhwOnplbV9jb250YWN0X2Vt YWlsIGxhYmVsPSZxdW90O1lvdXIgRW1haWwmcXVvdDsgLyZndDsKICAmbHQ7dHhwOnplbV9j b250YWN0X3N1Ym1pdCBsYWJlbD0mcXVvdDtTZW5kIEFydGljbGUmcXVvdDsgLyZndDsKJmx0 Oy90eHA6emVtX2NvbnRhY3QmZ3Q7CgombHQ7dHhwOnplbV9jb250YWN0X3NlbmRfYXJ0aWNs ZSAvJmd0OzwvY29kZT48L3ByZT4KCjxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9h PjwvcD4KCgo8aDIgaWQ9InRhZ3MiPlRhZ3M8L2gyPgoKPHA+PGEgaHJlZj0iI3pjIj48Y29k ZT4mbHQ7dHhwOnplbV9jb250YWN0IC8mZ3Q7PC9jb2RlPjwvYT4gcHJvZHVjZXMgYSBmbGV4 aWJsZSwgY3VzdG9taXNhYmxlIGVtYWlsIGNvbnRhY3QgZm9ybS4gSXQgaXMgaW50ZW5kZWQg Zm9yIHVzZSBhcyBhbiBlbnF1aXJ5IGZvcm0gZm9yIGNvbW1lcmNpYWwgYW5kIHByaXZhdGUg c2l0ZXMsIGFuZCBpbmNsdWRlcyBzZXZlcmFsIGZlYXR1cmVzIHRvIGhlbHAgcmVkdWNlIGNv bW1vbiBwcm9ibGVtcyB3aXRoIHN1Y2ggZm9ybXMgKGludmFsaWQgZW1haWwgYWRkcmVzc2Vz LCBtaXNzaW5nIGluZm9ybWF0aW9uKS48L3A+Cgo8cD48YSBocmVmPSIjemNfc2VuZF9hcnRp Y2xlIj48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3NlbmRfYXJ0aWNsZSAvJmd0OzwvY29k ZT48L2E+IGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhICYjODIyMDtzZW5kIGFydGljbGUmIzgy MjE7IGxpbmsgd2l0aGluIGFuIGFydGljbGUgZm9ybSwgY29ubmVjdGluZyBpdCB0byB0aGUg Y29udGFjdCBmb3JtLjwvcD4KCjxwPkFsbCBvdGhlciB0YWdzIHByb3ZpZGVkIGJ5IHRoaXMg cGx1Z2luIGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlIGEgPGNvZGU+Jmx0O3R4cDp6ZW1fY29u dGFjdCZndDs8L2NvZGU+ICYjODIzMDsgPGNvZGU+Jmx0Oy90eHA6emVtX2NvbnRhY3QmZ3Q7 PC9jb2RlPiBjb250YWluZXIgdGFnIG9yIGluIGEgVGV4dHBhdHRlcm4gZm9ybSB1c2VkIGFz IHRoZSA8Y29kZT5mb3JtPC9jb2RlPiBhdHRyaWJ1dGUgaW4gdGhlIDxjb2RlPiZsdDt0eHA6 emVtX2NvbnRhY3QgLyZndDs8L2NvZGU+IHRhZy48L3A+Cgo8cD48YSBocmVmPSIjdG9wIj5C YWNrIHRvIHRvcDwvYT48L3A+CgoKPGgzIGlkPSJ6YyI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29u dGFjdCAvJmd0OzwvY29kZT48L2gzPgoKPHA+TWF5IGJlIHVzZWQgYXMgYSBzZWxmLWNsb3Np bmcgb3IgY29udGFpbmVyIHRhZy4gUGxhY2UgdGhpcyB3aGVyZSB5b3Ugd2FudCB0aGUgaW5w dXQgZm9ybSB0byBnby4gU3RhdHVzIGFuZCBlcnJvciBtZXNzYWdlcywgaWYgYW55LCB3aWxs IGJlIGRpc3BsYXllZCBiZWZvcmUgdGhlIGZvcm0uPC9wPgoKPGg0PkF0dHJpYnV0ZXM8L2g0 PgoKPHVsPgoJPGxpPjxjb2RlPnRvPSZxdW90O2VtYWlsIGFkZHJlc3MmcXVvdDs8L2NvZGU+ IDxzcGFuIGNsYXNzPSJyZXF1aXJlZCI+cmVxdWlyZWQ8L3NwYW4+PGJyIC8+ClJlY2lwaWVu dCBlbWFpbCBhZGRyZXNzLjwvbGk+Cgk8bGk+PGNvZGU+dG9fZm9ybT0mcXVvdDtmb3JtIG5h bWUmcXVvdDs8L2NvZGU+PGJyIC8+ClVzZSBzcGVjaWZpZWQgZm9ybSAob3ZlcnJpZGVzIDxz dHJvbmc+dG88L3N0cm9uZz4gYXR0cmlidXRlKS48L2xpPgo8L3VsPgoKPHVsPgoJPGxpPjxj b2RlPmZyb209JnF1b3Q7ZW1haWwgYWRkcmVzcyZxdW90OzwvY29kZT48YnIgLz4KRW1haWwg YWRkcmVzcyB1c2VkIGluIHRoZSAmIzgyMjA7RnJvbTomIzgyMjE7IGZpZWxkIHdoZW4gc2Vu ZGluZyBlbWFpbC4gRGVmYXVsdHMgdG8gdGhlIHNlbmRlciYjODIxNztzIGVtYWlsIGFkZHJl c3MuIElmIHNwZWNpZmllZCwgdGhlIHNlbmRlciYjODIxNztzIGVtYWlsIGFkZHJlc3Mgd2ls bCBiZSBwbGFjZWQgaW4gdGhlICYjODIyMDtSZXBseS1UbzomIzgyMjE7IGZpZWxkIGluc3Rl YWQuPC9saT4KCTxsaT48Y29kZT5mcm9tX2Zvcm09JnF1b3Q7Zm9ybSBuYW1lJnF1b3Q7PC9j b2RlPjxiciAvPgpVc2Ugc3BlY2lmaWVkIGZvcm0gKG92ZXJyaWRlcyA8c3Ryb25nPmZyb208 L3N0cm9uZz4gYXR0cmlidXRlKS48L2xpPgo8L3VsPgoKPHVsPgoJPGxpPjxjb2RlPnN1Ympl Y3Q9JnF1b3Q7c3ViamVjdCB0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpTdWJqZWN0IHVzZWQg d2hlbiBzZW5kaW5nIGFuIGVtYWlsLiBEZWZhdWx0IGlzIHRoZSBzaXRlIG5hbWUuPC9saT4K CTxsaT48Y29kZT5zdWJqZWN0X2Zvcm09JnF1b3Q7Zm9ybSBuYW1lJnF1b3Q7PC9jb2RlPjxi ciAvPgpVc2Ugc3BlY2lmaWVkIGZvcm0gKG92ZXJyaWRlcyA8c3Ryb25nPnN1YmplY3Q8L3N0 cm9uZz4gYXR0cmlidXRlKS48L2xpPgo8L3VsPgoKPHVsPgoJPGxpPjxjb2RlPnRoYW5rcz0m cXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpNZXNzYWdlIHNob3duIGFmdGVyIHN1Y2Nl c3NmdWxseSBzdWJtaXR0aW5nIGEgbWVzc2FnZS4gRGVmYXVsdCBpcyA8c3Ryb25nPlRoYW5r IHlvdSwgeW91ciBtZXNzYWdlIGhhcyBiZWVuIHNlbnQ8L3N0cm9uZz4uPC9saT4KCTxsaT48 Y29kZT50aGFua3NfZm9ybT0mcXVvdDtmb3JtIG5hbWUmcXVvdDs8L2NvZGU+PGJyIC8+ClVz ZSBzcGVjaWZpZWQgZm9ybSAob3ZlcnJpZGVzIDxzdHJvbmc+dGhhbmtzPC9zdHJvbmc+IGF0 dHJpYnV0ZSkuPC9saT4KCTxsaT48Y29kZT5yZWRpcmVjdD0mcXVvdDtVUkwmcXVvdDs8L2Nv ZGU+PGJyIC8+ClJlZGlyZWN0IHRvIHNwZWNpZmllZCA8c3BhbiBjbGFzcz0iY2FwcyI+VVJM PC9zcGFuPiAob3ZlcnJpZGVzIDxzdHJvbmc+dGhhbmtzPC9zdHJvbmc+IGFuZCA8c3Ryb25n PnRoYW5rc19mb3JtPC9zdHJvbmc+IGF0dHJpYnV0ZXMpLiA8c3BhbiBjbGFzcz0iY2FwcyI+ VVJMPC9zcGFuPiBtdXN0IGJlIHJlbGF0aXZlIHRvIHRoZSBUZXh0cGF0dGVybiBTaXRlIDxz cGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+LiBFeGFtcGxlOiA8ZW0+cmVkaXJlY3Q9JiM4 MjIwO21vbmtleSYjODIyMTs8L2VtPiB3b3VsZCByZWRpcmVjdCB0byBodHRwOi8vZXhhbXBs ZS5jb20vbW9ua2V5LjwvbGk+CjwvdWw+Cgo8dWw+Cgk8bGk+PGNvZGU+bGFiZWw9JnF1b3Q7 dGV4dCZxdW90OzwvY29kZT48YnIgLz4KTGFiZWwgZm9yIHRoZSBjb250YWN0IGZvcm0uIElm IHNldCB0byBhbiBlbXB0eSBzdHJpbmcsIGRpc3BsYXkgb2YgdGhlIGZpZWxkc2V0IGFuZCBs ZWdlbmQgdGFncyB3aWxsIGJlIHN1cHByZXNzZWQuIERlZmF1bHQgaXMgPHN0cm9uZz5Db250 YWN0PC9zdHJvbmc+LjwvbGk+Cgk8bGk+PGNvZGU+c2VuZF9hcnRpY2xlPSZxdW90O2Jvb2xl YW4mcXVvdDs8L2NvZGU+PGJyIC8+CldoZXRoZXIgdG8gdXNlIHRoaXMgZm9ybSB0byA8YSBo cmVmPSIjYXJ0aWNsZSI+c2VuZCBhbiBhcnRpY2xlPC9hPi4gQXZhaWxhYmxlIHZhbHVlczog PHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS4gRGVm YXVsdCBpcyA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS48L2xpPgoJPGxpPjxjb2RlPmNvcHlz ZW5kZXI9JnF1b3Q7Ym9vbGVhbiZxdW90OzwvY29kZT48YnIgLz4KV2hldGhlciB0byBzZW5k IGEgY29weSBvZiB0aGUgZW1haWwgdG8gdGhlIHNlbmRlciYjODIxNztzIGFkZHJlc3MuIEF2 YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKSwgPHN0cm9uZz4wPC9z dHJvbmc+IChubykuIERlZmF1bHQgaXMgPHN0cm9uZz4wPC9zdHJvbmc+IChubykuPC9saT4K PC91bD4KCjx1bD4KCTxsaT48Y29kZT5mb3JtPSZxdW90O2Zvcm0gbmFtZSZxdW90OzwvY29k ZT48YnIgLz4KVXNlIHNwZWNpZmllZCBmb3JtLCBjb250YWluaW5nIHRoZSBsYXlvdXQgb2Yg dGhlIGNvbnRhY3QgZm9ybSBmaWVsZHMuPC9saT4KCTxsaT48Y29kZT5zaG93X2lucHV0PSZx dW90O2Jvb2xlYW4mcXVvdDs8L2NvZGU+PGJyIC8+CiBXaGV0aGVyIHRvIGRpc3BsYXkgdGhl IGZvcm0gaW5wdXQgZmllbGRzLiBBdmFpbGFibGUgdmFsdWVzOiA8c3Ryb25nPjE8L3N0cm9u Zz4gKHllcyksIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8pLiBEZWZhdWx0IGlzIDxzdHJvbmc+ MTwvc3Ryb25nPiAoeWVzKS48L2xpPgoJPGxpPjxjb2RlPnNob3dfZXJyb3I9JnF1b3Q7Ym9v bGVhbiZxdW90OzwvY29kZT48YnIgLz4KIFdoZXRoZXIgdG8gZGlzcGxheSBlcnJvciBhbmQg c3RhdHVzIG1lc3NhZ2VzLiBBdmFpbGFibGUgdmFsdWVzOiA8c3Ryb25nPjE8L3N0cm9uZz4g KHllcyksIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8pLiBEZWZhdWx0IGlzIDxzdHJvbmc+MTwv c3Ryb25nPiAoeWVzKS48L2xpPgo8L3VsPgoKPGg0PkV4YW1wbGVzPC9oND4KCjxwPlNlZSA8 YSBocmVmPSIjY29udGFjdGZvcm0iPkdldHRpbmcgc3RhcnRlZDwvYT4gYW5kIDxhIGhyZWY9 IiNhZHZhbmNlZCI+QWR2YW5jZWQgZXhhbXBsZXM8L2E+LjwvcD4KCjxwPjxhIGhyZWY9IiN0 b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgo8aDMgaWQ9InpjX3RleHQiPjxjb2RlPiZsdDt0 eHA6emVtX2NvbnRhY3RfdGV4dCAvJmd0OzwvY29kZT48L2gzPgoKPHA+Q3JlYXRlcyBhIHRl eHQgaW5wdXQgZmllbGQgYW5kIGNvcnJlc3BvbmRpbmcgPGNvZGU+Jmx0O2xhYmVsJmd0Ozwv Y29kZT4gdGFnLiBUaGUgaW5wdXQgdmFsdWUgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZW1h aWwsIHByZWNlZGVkIGJ5IHRoZSBsYWJlbC48L3A+Cgo8aDQ+QXR0cmlidXRlczwvaDQ+Cgo8 dWw+Cgk8bGk+PGNvZGU+bGFiZWw9JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KVGV4 dCBsYWJlbCBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuIERlZmF1bHQgaXMgPHN0cm9uZz5UZXh0 PC9zdHJvbmc+LjwvbGk+Cgk8bGk+PGNvZGU+bmFtZT0mcXVvdDt2YWx1ZSZxdW90OzwvY29k ZT48YnIgLz4KRmllbGQgbmFtZSwgYXMgdXNlZCBpbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMi PkhUTUw8L3NwYW4+IGlucHV0IHRhZy48L2xpPgoJPGxpPjxjb2RlPmJyZWFrPSZxdW90O3Rh ZyZxdW90OzwvY29kZT48YnIgLz4KQnJlYWsgdGFnIGJldHdlZW4gdGhlIGxhYmVsIGFuZCBp bnB1dCBmaWVsZC4gRGVmYXVsdCBpcyA8Y29kZT4mbHQ7YnIgLyZndDs8L2NvZGU+LiBVc2Ug PGNvZGU+YnJlYWs9JnF1b3Q7JnF1b3Q7PC9jb2RlPiB0byBwdXQgdGhlIGxhYmVsIGFuZCBp bnB1dCBmaWVsZCBvbiB0aGUgc2FtZSBsaW5lLjwvbGk+Cgk8bGk+PGNvZGU+ZGVmYXVsdD0m cXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIgLz4KRGVmYXVsdCB2YWx1ZSB3aGVuIG5vIGlu cHV0IGlzIHByb3ZpZGVkLjwvbGk+Cgk8bGk+PGNvZGU+bWluPSZxdW90O2ludGVnZXImcXVv dDs8L2NvZGU+PGJyIC8+Ck1pbmltdW0gaW5wdXQgbGVuZ3RoIGluIGNoYXJhY3RlcnMuIERl ZmF1bHQgaXMgPHN0cm9uZz4wPC9zdHJvbmc+LjwvbGk+Cgk8bGk+PGNvZGU+bWF4PSZxdW90 O2ludGVnZXImcXVvdDs8L2NvZGU+PGJyIC8+Ck1heGltdW0gaW5wdXQgbGVuZ3RoIGluIGNo YXJhY3RlcnMuIERlZmF1bHQgaXMgPHN0cm9uZz4xMDA8L3N0cm9uZz4uPC9saT4KCTxsaT48 Y29kZT5zaXplPSZxdW90O2ludGVnZXImcXVvdDs8L2NvZGU+PGJyIC8+ClNpemUgb2YgdGhl IGlucHV0IGZpZWxkIGFzIGRpc3BsYXllZCB0byB0aGUgdXNlci48L2xpPgoJPGxpPjxjb2Rl PnJlcXVpcmVkPSZxdW90O2Jvb2xlYW4mcXVvdDs8L2NvZGU+PGJyIC8+CldoZXRoZXIgdGhp cyB0ZXh0IGZpZWxkIG11c3QgYmUgZmlsbGVkIG91dC4gQXZhaWxhYmxlIHZhbHVlczogPHN0 cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS4gRGVmYXVs dCBpcyA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcykuPC9saT4KPC91bD4KCjxoND5FeGFtcGxl PC9oND4KCjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF90ZXh0IGxhYmVsPSZxdW90 O1lvdXIgbmFtZSZxdW90OyAvJmd0OzwvY29kZT48L3ByZT4KCjxwPjxhIGhyZWY9IiN0b3Ai PkJhY2sgdG8gdG9wPC9hPjwvcD4KCgo8aDMgaWQ9InpjX2VtYWlsIj48Y29kZT4mbHQ7dHhw OnplbV9jb250YWN0X2VtYWlsIC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5JbnB1dCBmaWVsZCBm b3IgdXNlciYjODIxNztzIGVtYWlsIGFkZHJlc3MuPC9wPgoKPHA+VGhlIGVudGVyZWQgZW1h aWwgYWRkcmVzcyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgdmFsaWRhdGVkIHRvIG1ha2Ugc3Vy ZSBpdCBpcyBvZiB0aGUgZm9ybSAmIzgyMjA7YWJjQHh4eC55eXlbLnp6el0mIzgyMjE7LiBP biBub24tV2luZG93cyBzZXJ2ZXJzLCBhIHRlc3Qgd2lsbCBiZSBkb25lIHRvIHZlcmlmeSB0 aGF0IGFuIEEgb3IgTVggcmVjb3JkIGV4aXN0cyBmb3IgdGhlIGRvbWFpbi4gTmVpdGhlciB0 ZXN0IHByZXZlbnRzIHNwYW0sIGJ1dCBpdCBkb2VzIGhlbHAgZGV0ZWN0aW5nIGFjY2lkZW50 YWwgdHlwaW5nIGVycm9ycy48L3A+Cgo8aDQ+QXR0cmlidXRlczwvaDQ+Cgo8dWw+Cgk8bGk+ PGNvZGU+bGFiZWw9JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KVGV4dCBsYWJlbCBk aXNwbGF5ZWQgdG8gdGhlIHVzZXIuIERlZmF1bHQgaXMgPHN0cm9uZz5FbWFpbDwvc3Ryb25n Pi48L2xpPgoJPGxpPjxjb2RlPm5hbWU9JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+ CkZpZWxkIG5hbWUsIGFzIHVzZWQgaW4gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9z cGFuPiBpbnB1dCB0YWcuPC9saT4KCTxsaT48Y29kZT5icmVhaz0mcXVvdDt0YWcmcXVvdDs8 L2NvZGU+PGJyIC8+CkJyZWFrIHRhZyBiZXR3ZWVuIHRoZSBsYWJlbCBhbmQgaW5wdXQgZmll bGQuIERlZmF1bHQgaXMgPGNvZGU+Jmx0O2JyIC8mZ3Q7PC9jb2RlPi4gVXNlIDxjb2RlPmJy ZWFrPSZxdW90OyZxdW90OzwvY29kZT4gdG8gcHV0IHRoZSBsYWJlbCBhbmQgaW5wdXQgZmll bGQgb24gdGhlIHNhbWUgbGluZS48L2xpPgoJPGxpPjxjb2RlPmRlZmF1bHQ9JnF1b3Q7dmFs dWUmcXVvdDs8L2NvZGU+PGJyIC8+CkRlZmF1bHQgdmFsdWUgd2hlbiBubyBpbnB1dCBpcyBw cm92aWRlZC48L2xpPgoJPGxpPjxjb2RlPm1pbj0mcXVvdDtpbnRlZ2VyJnF1b3Q7PC9jb2Rl PjxiciAvPgpNaW5pbXVtIGlucHV0IGxlbmd0aCBpbiBjaGFyYWN0ZXJzLiBEZWZhdWx0IGlz IDxzdHJvbmc+MDwvc3Ryb25nPi48L2xpPgoJPGxpPjxjb2RlPm1heD0mcXVvdDtpbnRlZ2Vy JnF1b3Q7PC9jb2RlPjxiciAvPgpNYXhpbXVtIGlucHV0IGxlbmd0aCBpbiBjaGFyYWN0ZXJz LiBEZWZhdWx0IGlzIDxzdHJvbmc+MTAwPC9zdHJvbmc+LjwvbGk+Cgk8bGk+PGNvZGU+c2l6 ZT0mcXVvdDtpbnRlZ2VyJnF1b3Q7PC9jb2RlPjxiciAvPgpTaXplIG9mIHRoZSBpbnB1dCBm aWVsZCBhcyBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuPC9saT4KCTxsaT48Y29kZT5yZXF1aXJl ZD0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgpXaGV0aGVyIHRoaXMgdGV4dCBm aWVsZCBtdXN0IGJlIGZpbGxlZCBvdXQuIEF2YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+MTwv c3Ryb25nPiAoeWVzKSwgPHN0cm9uZz4wPC9zdHJvbmc+IChubykuIERlZmF1bHQgaXMgPHN0 cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLjwvbGk+Cgk8bGk+PGNvZGU+c2VuZF9hcnRpY2xlPSZx dW90O2Jvb2xlYW4mcXVvdDs8L2NvZGU+PGJyIC8+CldoZXRoZXIgdGhpcyBmaWVsZCBpcyB1 c2VkIGFzIHRoZSByZWNpcGllbnQgZW1haWwgYWRkcmVzcyB3aGVuIHVzaW5nIHRoZSBzZW5k X2FydGljbGUgZnVuY3Rpb24uIEF2YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+MTwvc3Ryb25n PiAoeWVzKSwgPHN0cm9uZz4wPC9zdHJvbmc+IChubykuIERlZmF1bHQgaXMgPHN0cm9uZz4w PC9zdHJvbmc+IChubykuPC9saT4KPC91bD4KCjxoND5FeGFtcGxlPC9oND4KCjxwcmU+PGNv ZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9lbWFpbCBsYWJlbD0mcXVvdDtZb3VyIGVtYWlsIGFk ZHJlc3MmcXVvdDsgLyZndDs8L2NvZGU+PC9wcmU+Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNr IHRvIHRvcDwvYT48L3A+CgoKPGgzIGlkPSJ6Y190ZXh0YXJlYSI+PGNvZGU+Jmx0O3R4cDp6 ZW1fY29udGFjdF90ZXh0YXJlYSAvJmd0OzwvY29kZT48L2gzPgoKPHA+Q3JlYXRlcyBhIHRl eHRhcmVhLjwvcD4KCjxoND5BdHRyaWJ1dGVzPC9oND4KCjx1bD4KCTxsaT48Y29kZT5sYWJl bD0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpUZXh0IGxhYmVsIGRpc3BsYXllZCB0 byB0aGUgdXNlci4gRGVmYXVsdCBpcyA8c3Ryb25nPk1lc3NhZ2U8L3N0cm9uZz4uPC9saT4K CTxsaT48Y29kZT5uYW1lPSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2RlPjxiciAvPgpGaWVsZCBu YW1lLCBhcyB1c2VkIGluIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gaW5w dXQgdGFnLjwvbGk+Cgk8bGk+PGNvZGU+YnJlYWs9JnF1b3Q7dGFnJnF1b3Q7PC9jb2RlPjxi ciAvPgpCcmVhayB0YWcgYmV0d2VlbiB0aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkLiBEZWZh dWx0IGlzIDxjb2RlPiZsdDticiAvJmd0OzwvY29kZT4uIFVzZSA8Y29kZT5icmVhaz0mcXVv dDsmcXVvdDs8L2NvZGU+IHRvIHB1dCB0aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkIG9uIHRo ZSBzYW1lIGxpbmUuPC9saT4KCTxsaT48Y29kZT5kZWZhdWx0PSZxdW90O3ZhbHVlJnF1b3Q7 PC9jb2RlPjxiciAvPgpEZWZhdWx0IHZhbHVlIHdoZW4gbm8gaW5wdXQgaXMgcHJvdmlkZWQu PC9saT4KCTxsaT48Y29kZT5jb2xzPSZxdW90O2ludGVnZXImcXVvdDs8L2NvZGU+PGJyIC8+ CkNvbHVtbiB3aWR0aC4gRGVmYXVsdCBpcyA8c3Ryb25nPjU4PC9zdHJvbmc+LjwvbGk+Cgk8 bGk+PGNvZGU+cm93cz0mcXVvdDtpbnRlZ2VyJnF1b3Q7PC9jb2RlPjxiciAvPgpSb3cgaGVp Z2h0LiBEZWZhdWx0IGlzIDxzdHJvbmc+ODwvc3Ryb25nPi48L2xpPgoJPGxpPjxjb2RlPm1p bj0mcXVvdDtpbnRlZ2VyJnF1b3Q7PC9jb2RlPjxiciAvPgpNaW5pbXVtIGlucHV0IGxlbmd0 aCBpbiBjaGFyYWN0ZXJzLiBEZWZhdWx0IGlzIDxzdHJvbmc+MDwvc3Ryb25nPi48L2xpPgoJ PGxpPjxjb2RlPm1heD0mcXVvdDtpbnRlZ2VyJnF1b3Q7PC9jb2RlPjxiciAvPgpNYXhpbXVt IGlucHV0IGxlbmd0aCBpbiBjaGFyYWN0ZXJzLiBEZWZhdWx0IGlzIDxzdHJvbmc+MTAwMDA8 L3N0cm9uZz4uPC9saT4KCTxsaT48Y29kZT5yZXF1aXJlZD0mcXVvdDtib29sZWFuJnF1b3Q7 PC9jb2RlPjxiciAvPgpXaGV0aGVyIHRoaXMgdGV4dCBmaWVsZCBtdXN0IGJlIGZpbGxlZCBv dXQuIEF2YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKSwgPHN0cm9u Zz4wPC9zdHJvbmc+IChubykuIERlZmF1bHQgaXMgPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMp LjwvbGk+CjwvdWw+Cgo8aDQ+RXhhbXBsZTwvaDQ+Cgo8cD5UZXh0YXJlYSB0aGF0IGlzIDQw IGNoYXJzIHdpZGUsIDEwIGxpbmVzIGhpZ2gsIHdpdGggYSBjdXN0b21pemVkIGxhYmVsOjwv cD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF90ZXh0YXJlYSBjb2xzPSZxdW90 OzQwJnF1b3Q7IHJvd3M9JnF1b3Q7MTAmcXVvdDsgbGFiZWw9JnF1b3Q7WW91ciBxdWVzdGlv biZxdW90OyAvJmd0OzwvY29kZT48L3ByZT4KCjxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8g dG9wPC9hPjwvcD4KCgo8aDMgaWQ9InpjX3N1Ym1pdCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29u dGFjdF9zdWJtaXQgLyZndDs8L2NvZGU+PC9oMz4KCjxwPkNyZWF0ZXMgYSBzdWJtaXQgYnV0 dG9uLjxiciAvPgpXaGVuIHVzZWQgYXMgYSBjb250YWluZXIgdGFnLCBhICYjODIyMDtidXR0 b24mIzgyMjE7IGVsZW1lbnQgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgYW4gJiM4MjIwO2lu cHV0JiM4MjIxOyBlbGVtZW50LjwvcD4KCjxoND5BdHRyaWJ1dGVzOjwvaDQ+Cgo8dWw+Cgk8 bGk+PGNvZGU+bGFiZWw9JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KVGV4dCBzaG93 biBvbiB0aGUgc3VibWl0IGJ1dHRvbi4gRGVmYXVsdCBpcyAmIzgyMjA7U2VuZCYjODIyMTsu PC9saT4KCTxsaT48Y29kZT5idXR0b249JnF1b3Q7Ym9vbGVhbiZxdW90OzwvY29kZT48YnIg Lz4KPGVtPkRlcHJlY2F0ZWQuIFVzZSBhIGNvbnRhaW5lciB0YWcgaWYgeW91IHdhbnQgYSBi dXR0b24gZWxlbWVudC48L2VtPjwvbGk+CjwvdWw+Cgo8aDQ+RXhhbXBsZXM8L2g0PgoKPHA+ U3RhbmRhcmQgc3VibWl0IGJ1dHRvbjo8L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6emVtX2Nv bnRhY3Rfc3VibWl0IC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+U3VibWl0IGJ1dHRvbiB3aXRo IHlvdXIgb3duIHRleHQ6PC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3N1 Ym1pdCBsYWJlbD0mcXVvdDtTZW5kJnF1b3Q7IC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+VXNh Z2UgYXMgYSBjb250YWluZXIgdGFnLCB3aGljaCBhbGxvd3MgeW91IHRvIHVzZSBUZXh0cGF0 dGVybiB0YWdzIGFuZCA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gbWFya3VwIGlu IHRoZSBzdWJtaXQgYnV0dG9uOjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFj dF9zdWJtaXQmZ3Q7Jmx0O3N0cm9uZyZndDtTZW5kJmx0Oy9zdHJvbmcmZ3Q7IHF1ZXN0aW9u Jmx0Oy90eHA6emVtX2NvbnRhY3Rfc3VibWl0Jmd0OzwvY29kZT48L3ByZT4KCjxwcmU+PGNv ZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zdWJtaXQmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7cGF0 aC90by9pbWcucG5nJnF1b3Q7IGFsdD0mcXVvdDtzdWJtaXQmcXVvdDsmZ3Q7Jmx0Oy90eHA6 emVtX2NvbnRhY3Rfc3VibWl0Jmd0OzwvY29kZT48L3ByZT4KCjxwPjxhIGhyZWY9IiN0b3Ai PkJhY2sgdG8gdG9wPC9hPjwvcD4KCgo8aDMgaWQ9InpjX3NlbGVjdCI+PGNvZGU+Jmx0O3R4 cDp6ZW1fY29udGFjdF9zZWxlY3QgLyZndDs8L2NvZGU+PC9oMz4KCjxwPkNyZWF0ZXMgYSBk cm9wLWRvd24gc2VsZWN0aW9uIGxpc3QuPC9wPgoKPGg0PkF0dHJpYnV0ZXM8L2g0PgoKPHVs PgoJPGxpPjxjb2RlPmxpc3Q9JnF1b3Q7Y29tbWEtc2VwYXJhdGVkIHZhbHVlcyZxdW90Ozwv Y29kZT4gPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5yZXF1aXJlZDwvc3Bhbj48YnIgLz4KTGlz dCBvZiBpdGVtcyB0byBzaG93IGluIHRoZSBzZWxlY3QgYm94LjwvbGk+Cgk8bGk+PGNvZGU+ c2VsZWN0ZWQ9JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+Ckxpc3QgaXRlbSB0aGF0 IGlzIHNlbGVjdGVkIGJ5IGRlZmF1bHQuPC9saT4KCTxsaT48Y29kZT5sYWJlbD0mcXVvdDt0 ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpUZXh0IGxhYmVsIGRpc3BsYXllZCB0byB0aGUgdXNl ci4gRGVmYXVsdCBpcyA8c3Ryb25nPk9wdGlvbjwvc3Ryb25nPi48L2xpPgoJPGxpPjxjb2Rl Pm5hbWU9JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+CkZpZWxkIG5hbWUsIGFzIHVz ZWQgaW4gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBpbnB1dCB0YWcuPC9s aT4KCTxsaT48Y29kZT5icmVhaz0mcXVvdDt0YWcmcXVvdDs8L2NvZGU+PGJyIC8+CkJyZWFr IHRhZyBiZXR3ZWVuIHRoZSBsYWJlbCBhbmQgaW5wdXQgZmllbGQuIERlZmF1bHQgaXMgPGNv ZGU+Jmx0O2JyIC8mZ3Q7PC9jb2RlPi4gVXNlIDxjb2RlPmJyZWFrPSZxdW90OyZxdW90Ozwv Y29kZT4gdG8gcHV0IHRoZSBsYWJlbCBhbmQgaW5wdXQgZmllbGQgb24gdGhlIHNhbWUgbGlu ZS48L2xpPgoJPGxpPjxjb2RlPmRlbGltaXRlcj0mcXVvdDtjaGFyYWN0ZXImcXVvdDs8L2Nv ZGU+PGJyIC8+ClNlcGFyYXRvciBjaGFyYWN0ZXIgdXNlZCBpbiB0aGUgPHN0cm9uZz5saXN0 PC9zdHJvbmc+IGF0dHJpYnV0ZS4gRGVmYXVsdCBpcyA8c3Ryb25nPiw8L3N0cm9uZz4gKGNv bW1hKS48L2xpPgoJPGxpPjxjb2RlPnJlcXVpcmVkPSZxdW90O2Jvb2xlYW4mcXVvdDs8L2Nv ZGU+PGJyIC8+CldoZXRoZXIgYSBub24tZW1wdHkgb3B0aW9uIG11c3QgYmUgc2VsZWN0ZWQu IEF2YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKSwgPHN0cm9uZz4w PC9zdHJvbmc+IChubykuIERlZmF1bHQgaXMgPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLjwv bGk+CjwvdWw+Cgo8aDQ+RXhhbXBsZXM8L2g0PgoKPHA+U2VsZWN0IGxpc3QgbGFiZWxlZCAm IzgyMTY7RGVwYXJ0bWVudCYjODIxNzssIGNvbnRhaW5pbmcgdGhyZWUgb3B0aW9ucyBhbmQg YSBibGFuayBvcHRpb24gKGR1ZSB0byB0aGUgY29tbWEgYmVmb3JlICYjODIxNjtNYXJrZXRp bmcmIzgyMTc7KSBzaG93biBieSBkZWZhdWx0LCBmb3JjaW5nIHRoZSB1c2VyIHRvIG1ha2Ug YSBzZWxlY3Rpb24uPC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3NlbGVj dCBsYWJlbD0mcXVvdDtEZXBhcnRtZW50JnF1b3Q7IGxpc3Q9JnF1b3Q7LE1hcmtldGluZyxT YWxlcyxTdXBwb3J0JnF1b3Q7IC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+U2VsZWN0IGxpc3Qg Y29udGFpbmluZyB0aHJlZSBvcHRpb25zIHdpdGggJiM4MjE2O01hcmtldGluZyYjODIxNzsg c2VsZWN0ZWQgYnkgZGVmYXVsdC48L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRh Y3Rfc2VsZWN0IGxpc3Q9JnF1b3Q7TWFya2V0aW5nLFNhbGVzLFN1cHBvcnQmcXVvdDsgc2Vs ZWN0ZWQ9JnF1b3Q7TWFya2V0aW5nJnF1b3Q7IC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+PGEg aHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCjxoMyBpZD0iemNfY2hlY2tib3gi Pjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3RfY2hlY2tib3ggLyZndDs8L2NvZGU+PC9oMz4K CjxwPkNyZWF0ZXMgYSBjaGVjayBib3guPC9wPgoKPGg0PkF0dHJpYnV0ZXM8L2g0PgoKPHVs PgoJPGxpPjxjb2RlPmxhYmVsPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+ClRleHQg bGFiZWwgZGlzcGxheWVkIHRvIHRoZSB1c2VyLiBEZWZhdWx0IGlzIDxzdHJvbmc+Q2hlY2ti b3g8L3N0cm9uZz4uPC9saT4KCTxsaT48Y29kZT5uYW1lPSZxdW90O3ZhbHVlJnF1b3Q7PC9j b2RlPjxiciAvPgpGaWVsZCBuYW1lLCBhcyB1c2VkIGluIHRoZSA8c3BhbiBjbGFzcz0iY2Fw cyI+SFRNTDwvc3Bhbj4gaW5wdXQgdGFnLjwvbGk+Cgk8bGk+PGNvZGU+YnJlYWs9JnF1b3Q7 dGFnJnF1b3Q7PC9jb2RlPjxiciAvPgpCcmVhayB0YWcgYmV0d2VlbiB0aGUgbGFiZWwgYW5k IGlucHV0IGZpZWxkLiBEZWZhdWx0IGlzIDxjb2RlPiZsdDticiAvJmd0OzwvY29kZT4uIFVz ZSA8Y29kZT5icmVhaz0mcXVvdDsmcXVvdDs8L2NvZGU+IHRvIHB1dCB0aGUgbGFiZWwgYW5k IGlucHV0IGZpZWxkIG9uIHRoZSBzYW1lIGxpbmUuPC9saT4KCTxsaT48Y29kZT5jaGVja2Vk PSZxdW90O2Jvb2xlYW4mcXVvdDs8L2NvZGU+PGJyIC8+CldoZXRoZXIgdGhpcyBib3ggaXMg Y2hlY2tlZCB3aGVuIGZpcnN0IGRpc3BsYXllZC4gQXZhaWxhYmxlIHZhbHVlczogPHN0cm9u Zz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS4gRGVmYXVsdCBp cyAmIzgyMjA7MCYjODIyMTsgKG5vKS48L2xpPgoJPGxpPjxjb2RlPnJlcXVpcmVkPSZxdW90 O2Jvb2xlYW4mcXVvdDs8L2NvZGU+PGJyIC8+CldoZXRoZXIgdGhpcyBjaGVja2JveCBtdXN0 IGJlIGZpbGxlZCBvdXQuIEF2YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+MTwvc3Ryb25nPiAo eWVzKSwgPHN0cm9uZz4wPC9zdHJvbmc+IChubykuIERlZmF1bHQgaXMgPHN0cm9uZz4xPC9z dHJvbmc+ICh5ZXMpLjwvbGk+CjwvdWw+Cgo8aDQ+RXhhbXBsZXM8L2g0PgoKPHA+U2hyaW5r LXdyYXAgYWdyZWVtZW50IHdoaWNoIG11c3QgYmUgY2hlY2tlZCBieSB0aGUgdXNlciBiZWZv cmUgdGhlIGVtYWlsIHdpbGwgYmUgc2VudC48L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6emVt X2NvbnRhY3RfY2hlY2tib3ggbGFiZWw9JnF1b3Q7SSBhY2NlcHQgdGhlIHRlcm1zIGFuZCBj b25kaXRpb25zJnF1b3Q7IC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+T3B0aW9uYWwgY2hlY2ti b3hlczo8L3A+Cgo8cHJlPjxjb2RlPlNlbGVjdCB3aGljaCBvcGVyYXRpbmcgc3lzdGVtcyBh cmUgeW91IGZhbWlsaWFyIHdpdGg6Jmx0O2JyIC8mZ3Q7CiZsdDt0eHA6emVtX2NvbnRhY3Rf Y2hlY2tib3ggbGFiZWw9JnF1b3Q7V2luZG93cyZxdW90OyByZXF1aXJlZD0mcXVvdDswJnF1 b3Q7IC8mZ3Q7Jmx0O2JyIC8mZ3Q7CiZsdDt0eHA6emVtX2NvbnRhY3RfY2hlY2tib3ggbGFi ZWw9JnF1b3Q7VW5peC9MaW51eC9CU0QmcXVvdDsgcmVxdWlyZWQ9JnF1b3Q7MCZxdW90OyAv Jmd0OyZsdDticiAvJmd0OwombHQ7dHhwOnplbV9jb250YWN0X2NoZWNrYm94IGxhYmVsPSZx dW90O01hY09TJnF1b3Q7IHJlcXVpcmVkPSZxdW90OzAmcXVvdDsgLyZndDsmbHQ7YnIgLyZn dDs8L2NvZGU+PC9wcmU+Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+ CgoKPGgzIGlkPSJ6Y19yYWRpbyI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9yYWRpbyAv Jmd0OzwvY29kZT48L2gzPgoKPHA+Q3JlYXRlcyBhIHJhZGlvIGJ1dHRvbi48L3A+Cgo8aDQ+ QXR0cmlidXRlczwvaDQ+Cgo8dWw+Cgk8bGk+PGNvZGU+Z3JvdXA9JnF1b3Q7dGV4dCZxdW90 OzwvY29kZT4gPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5yZXF1aXJlZDwvc3Bhbj48YnIgLz4K VGV4dCB1c2VkIGluIHRoZSBlbWFpbCB0byBkZXNjcmliZSB0aGlzIGdyb3VwIG9mIHJhZGlv IGJ1dHRvbnMuIFRoaXMgYXR0cmlidXRlIHZhbHVlIGlzIHJlbWVtYmVyZWQgZm9yIHN1YnNl cXVlbnQgcmFkaW8gYnV0dG9ucywgc28geW91IG9ubHkgaGF2ZSB0byBzZXQgaXQgb24gdGhl IGZpcnN0IHJhZGlvIGJ1dHRvbiBvZiBhIGdyb3VwLiBEZWZhdWx0IGlzIDxzdHJvbmc+UmFk aW88L3N0cm9uZz4uPC9saT4KCTxsaT48Y29kZT5sYWJlbD0mcXVvdDt0ZXh0JnF1b3Q7PC9j b2RlPiA8c3BhbiBjbGFzcz0icmVxdWlyZWQiPnJlcXVpcmVkPC9zcGFuPjxiciAvPgpUZXh0 IGxhYmVsIGRpc3BsYXllZCB0byB0aGUgdXNlciBhcyByYWRpbyBidXR0b24gb3B0aW9uLjwv bGk+Cgk8bGk+PGNvZGU+bmFtZT0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIgLz4KRmll bGQgbmFtZSwgYXMgdXNlZCBpbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+ IGlucHV0IHRhZy4gVGhpcyBhdHRyaWJ1dGUgdmFsdWUgaXMgcmVtZW1iZXJlZCBmb3Igc3Vi c2VxdWVudCByYWRpbyBidXR0b25zLCBzbyB5b3Ugb25seSBoYXZlIHRvIHNldCBpdCBvbiB0 aGUgZmlyc3QgcmFkaW8gYnV0dG9uIG9mIGEgZ3JvdXAuIElmIGl0IGhhc24mIzgyMTc7dCBi ZWVuIHNldCBhdCBhbGwsIGl0IHdpbGwgYmUgZGVyaXZlZCBmcm9tIHRoZSA8Y29kZT5ncm91 cDwvY29kZT4gYXR0cmlidXRlLjwvbGk+Cgk8bGk+PGNvZGU+YnJlYWs9JnF1b3Q7dGFnJnF1 b3Q7PC9jb2RlPjxiciAvPgpCcmVhayB0YWcgYmV0d2VlbiB0aGUgbGFiZWwgYW5kIGZpZWxk LiBEZWZhdWx0IGlzIGEgc3BhY2UuPC9saT4KCTxsaT48Y29kZT5jaGVja2VkPSZxdW90O2Jv b2xlYW4mcXVvdDs8L2NvZGU+PGJyIC8+CldoZXRoZXIgdGhpcyByYWRpbyBvcHRpb24gaXMg Y2hlY2tlZCB3aGVuIHRoZSBmb3JtIGlzIGZpcnN0IGRpc3BsYXllZC4gQXZhaWxhYmxlIHZh bHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8L3N0cm9uZz4gKG5v KS4gRGVmYXVsdCBpcyA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS48L2xpPgo8L3VsPgoKPGg0 PkV4YW1wbGU8L2g0PgoKPHA+R3JvdXAgbXV0dWFsbHkgZXhjbHVzaXZlIHJhZGlvIGJ1dHRv bnMgYnkgc2V0dGluZyB0aGUgPGNvZGU+Z3JvdXA8L2NvZGU+IGF0dHJpYnV0ZSBvbiB0aGUg Zmlyc3QgcmFkaW8gYnV0dG9uIGluIGEgZ3JvdXAuIE9ubHkgdGhlIGNob3NlbiByYWRpbyBi dXR0b24gZnJvbSBlYWNoIGdyb3VwIHdpbGwgYmUgdXNlZCBpbiB0aGUgZW1haWwgbWVzc2Fn ZS4gVGhlIG1lc3NhZ2Ugd2lsbCBiZSBvdXRwdXQgaW4gdGhlIGZvcm0gPHN0cm9uZz5ncm91 cDogbGFiZWw8L3N0cm9uZz4gZm9yIGVhY2ggb2YgdGhlIGNob3NlbiByYWRpbyBidXR0b25z LjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9yYWRpbyBsYWJlbD0mcXVv dDtNZWRpdW0mcXVvdDsgZ3JvdXA9JnF1b3Q7SSBsaWtlIG15IHN0ZWFrJnF1b3Q7IC8mZ3Q7 CiZsdDt0eHA6emVtX2NvbnRhY3RfcmFkaW8gbGFiZWw9JnF1b3Q7UmFyZSZxdW90OyAvJmd0 OwombHQ7dHhwOnplbV9jb250YWN0X3JhZGlvIGxhYmVsPSZxdW90O1dlbGwgZG9uZSZxdW90 OyAvJmd0OwoKJmx0O3R4cDp6ZW1fY29udGFjdF9yYWRpbyBsYWJlbD0mcXVvdDtXaW5lJnF1 b3Q7IGdyb3VwPSZxdW90O1dpdGggYSBnbGFzcyBvZiZxdW90OyAvJmd0OwombHQ7dHhwOnpl bV9jb250YWN0X3JhZGlvIGxhYmVsPSZxdW90O0JlZXImcXVvdDsgLyZndDsKJmx0O3R4cDp6 ZW1fY29udGFjdF9yYWRpbyBsYWJlbD0mcXVvdDtXYXRlciZxdW90OyAvJmd0OzwvY29kZT48 L3ByZT4KCjxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgo8aDMgaWQ9 InpjX3NlY3JldCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zZWNyZXQgLyZndDs8L2Nv ZGU+PC9oMz4KCjxwPlRoaXMgdGFnIGhhcyBubyBlZmZlY3Qgb24gdGhlIGZvcm0gb3IgPHNw YW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IG91dHB1dCwgYnV0IHdpbGwgaW5jbHVkZSBh ZGRpdGlvbmFsIGluZm9ybWF0aW9uIGluIHRoZSBlbWFpbC4gSXQgY2FuIGJlIHVzZWQgYXMg YSBzZWxmLWNsb3NpbmcgdGFnIG9yIGFzIGEgY29udGFpbmVyIHRhZy48L3A+Cgo8aDQ+QXR0 cmlidXRlczwvaDQ+Cgo8dWw+Cgk8bGk+PGNvZGU+bmFtZT0mcXVvdDt0ZXh0JnF1b3Q7PC9j b2RlPjxiciAvPgpVc2VkIGludGVybmFsbHkuIFNldCB0aGlzIG9ubHkgaWYgeW91IGhhdmUg bXVsdGlwbGUgJiM4MjE2O3NlY3JldCYjODIxNzsgZm9ybSBlbGVtZW50cyB3aXRoIGlkZW50 aWNhbCBsYWJlbHMuPC9saT4KCTxsaT48Y29kZT5sYWJlbD0mcXVvdDt0ZXh0JnF1b3Q7PC9j b2RlPjxiciAvPgpVc2VkIHRvIGlkZW50aWZ5IHRoZSBmaWVsZCBpbiB0aGUgZW1haWwuIERl ZmF1bHQgaXMgPHN0cm9uZz5TZWNyZXQ8L3N0cm9uZz4uPC9saT4KCTxsaT48Y29kZT52YWx1 ZT0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIgLz4KU29tZSB0ZXh0IHlvdSB3YW50IHRv IGFkZCB0byB0aGUgZW1haWwuPC9saT4KPC91bD4KCjxoND5FeGFtcGxlczwvaDQ+Cgo8cD5V c2FnZSBhcyBhIHNlbGYtY2xvc2luZyB0YWc8L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6emVt X2NvbnRhY3Rfc2VjcmV0IHZhbHVlPSZxdW90O1RoZSBhbnN3ZXIgaXMgNDImcXVvdDsgLyZn dDs8L2NvZGU+PC9wcmU+Cgo8cD5Vc2FnZSBhcyBhIGNvbnRhaW5lciB0YWc8L3A+Cgo8cHJl Pjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3Rfc2VjcmV0IGxhYmVsPSZxdW90O0RlYXIgdXNl ciZxdW90OyZndDsKICBQbGVhc2UgcHJvdmlkZSBhIHVzZWZ1bCBleGFtcGxlIGZvciB0aGlz IHRhZyEKJmx0Oy90eHA6emVtX2NvbnRhY3Rfc2VjcmV0Jmd0OzwvY29kZT48L3ByZT4KCjxw PjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgo8aDMgaWQ9InpjX3NlcnZl cmluZm8iPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3Rfc2VydmVyaW5mbyAvJmd0OzwvY29k ZT48L2gzPgoKPHA+VGhpcyB0YWcgaGFzIG5vIGVmZmVjdCBvbiB0aGUgZm9ybSBvciA8c3Bh biBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gb3V0cHV0LCBidXQgd2lsbCBpbmNsdWRlIGFk ZGl0aW9uYWwgaW5mb3JtYXRpb24gaW4gdGhlIGVtYWlsIGJhc2VkIG9uIHRoZSA8c3BhbiBj bGFzcz0iY2FwcyI+UEhQPC9zcGFuPiAkX1NFUlZFUiB2YXJpYWJsZS48L3A+Cgo8aDQ+QXR0 cmlidXRlczwvaDQ+Cgo8dWw+Cgk8bGk+PGNvZGU+bmFtZT0mcXVvdDt2YWx1ZSZxdW90Ozwv Y29kZT4gPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5yZXF1aXJlZDwvc3Bhbj48YnIgLz4KTmFt ZSBvZiB0aGUgc2VydmVyIHZhcmlhYmxlLiBTZWUgdGhlIDxhIGhyZWY9Imh0dHA6Ly9waHAu bmV0L21hbnVhbC9yZXNlcnZlZC52YXJpYWJsZXMucGhwI3Jlc2VydmVkLnZhcmlhYmxlcy5z ZXJ2ZXIiPjxzcGFuIGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+IG1hbnVhbDwvYT4gZm9yIGEg ZnVsbCBsaXN0LjwvbGk+Cgk8bGk+PGNvZGU+bGFiZWw9JnF1b3Q7dGV4dCZxdW90OzwvY29k ZT48YnIgLz4KVXNlZCB0byBpZGVudGlmeSB0aGUgZmllbGQgaW4gdGhlIGVtYWlsLiBEZWZh dWx0cyB0byB0aGUgdmFsdWUgb2YgdGhlIDxzdHJvbmc+bmFtZTwvc3Ryb25nPiBhdHRyaWJ1 dGUuPC9saT4KPC91bD4KCjxoND5FeGFtcGxlczwvaDQ+Cgo8cD5BZGQgdGhlIElQIGFkZHJl c3Mgb2YgdGhlIHZpc2l0b3IgdG8gdGhlIGVtYWlsPC9wPgoKPHByZT48Y29kZT4mbHQ7dHhw OnplbV9jb250YWN0X3NlcnZlcmluZm8gbmFtZT0mcXVvdDtSRU1PVEVfQUREUiZxdW90OyBs YWJlbD0mcXVvdDtJUCBudW1iZXImcXVvdDsgLyZndDs8L2NvZGU+PC9wcmU+Cgo8cD5BZGQg dGhlIG5hbWUgb2YgdGhlIHZpc2l0b3ImIzgyMTc7cyBicm93c2VyIHRvIHRoZSBlbWFpbDwv cD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zZXJ2ZXJpbmZvIG5hbWU9JnF1 b3Q7SFRUUF9VU0VSX0FHRU5UJnF1b3Q7IGxhYmVsPSZxdW90O0Jyb3dzZXImcXVvdDsgLyZn dDs8L2NvZGU+PC9wcmU+Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+ CgoKPGgzIGlkPSJ6Y19zZW5kX2FydGljbGUiPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3Rf c2VuZF9hcnRpY2xlIC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5Vc2UgdGhpcyB0YWcgaW4geW91 ciBpbmRpdmlkdWFsIGFydGljbGUgZm9ybSwgd2hlcmUgeW91IHdhbnQgdGhlICYjODIyMDtz ZW5kIGFydGljbGUmIzgyMjE7IGxpbmsgdG8gYmUgZGlzcGxheWVkLjwvcD4KCgo8aDQ+QXR0 cmlidXRlczo8L2g0PgoKPHVsPgoJPGxpPjxjb2RlPmxpbmt0ZXh0PSZxdW90O3RleHQmcXVv dDs8L2NvZGU+PGJyIC8+ClRleHQgZGlzcGxheWVkIGZvciB0aGUgbGluay4gRGVmYXVsdCBp cyA8c3Ryb25nPnNlbmQgYXJ0aWNsZTwvc3Ryb25nPjwvbGk+CjwvdWw+Cgo8aDQ+RXhhbXBs ZXM6PC9oND4KCjxwPlNlZSA8YSBocmVmPSIjc2VuZGFydGljbGUiPkdldHRpbmcgc3RhcnRl ZDwvYT48L3A+Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+CgoKPGgy IGlkPSJhZHZhbmNlZCI+QWR2YW5jZWQgZXhhbXBsZXM8L2gyPgoKCjxoMyBpZD0ic2hvd19l cnJvciI+U2VwYXJhdGUgaW5wdXQgYW5kIGVycm9yIGZvcm1zPC9oMz4KCjxwPlVzaW5nIDxj b2RlPnNob3dfaW5wdXQ8L2NvZGU+IGFuZCA8Y29kZT5zaG93X2Vycm9yPC9jb2RlPiB0byBk aXNwbGF5IHRoZSBmb3JtIGFuZCBlcnJvciBtZXNzYWdlcyBvbiBkaWZmZXJlbnQgcGFydHMg b2YgYSBwYWdlLiBBIGZvcm0gaXMgdXNlZCB0byBtYWtlIHN1cmUgdGhlIGNvbnRlbnRzIG9m IGJvdGggZm9ybXMgYXJlIGlkZW50aWNhbCwgb3RoZXJ3aXNlIHRoZXkgd291bGQgYmUgc2Vl biBhcyB0d28gaW5kZXBlbmRlbnQgZm9ybXMuIFRoZSBmaXJzdCBmb3JtIG9ubHkgc2hvd3Mg ZXJyb3JzIChubyBpbnB1dCksIHRoZSBzZWNvbmQgZm9ybSBvbmx5IHNob3dzIHRoZSBpbnB1 dCBmaWVsZHMgKG5vIGVycm9ycykuPC9wPgoKPHByZT48Y29kZT4mbHQ7ZGl2IGlkPSZxdW90 O2Vycm9yJnF1b3Q7Jmd0OwogICZsdDt0eHA6emVtX2NvbnRhY3QgZm9ybT0mcXVvdDtjb250 YWN0X2Zvcm0mcXVvdDsgc2hvd19pbnB1dD0mcXVvdDswJnF1b3Q7IC8mZ3Q7CiZsdDsvZGl2 Jmd0OwoKJmx0O2RpdiBpZD0mcXVvdDtpbnB1dGZvcm0mcXVvdDsmZ3Q7CiAgJmx0O3R4cDp6 ZW1fY29udGFjdCBmb3JtPSZxdW90O2NvbnRhY3RfZm9ybSZxdW90OyBzaG93X2Vycm9yPSZx dW90OzAmcXVvdDsgLyZndDsKJmx0Oy9kaXYmZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+QXBhcnQg ZnJvbSB0aGUgPGNvZGU+c2hvd19lcnJvcjwvY29kZT4gYW5kIDxjb2RlPnNob3dfaW5wdXQ8 L2NvZGU+IGF0dHJpYnV0ZXMsIGFsbCBvdGhlciBhdHRyaWJ1dGVzIG11c3QgYmUgMTAwJSBp ZGVudGljYWwgaW4gYm90aCBmb3Jtcywgb3RoZXJ3aXNlIHRoZXkgd291bGQgYmUgc2VlbiBh cyB0d28gdW5yZWxhdGVkIGZvcm1zLjwvcD4KCjxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8g dG9wPC9hPjwvcD4KCgo8aDMgaWQ9InN1YmplY3RfZm9ybSI+VXNlciBzZWxlY3RhYmxlIHN1 YmplY3QgZmllbGQ8L2gzPgoKPHA+U3BlY2lmeSB0aGUgPGNvZGU+c3ViamVjdF9mb3JtPC9j b2RlPiBhdHRyaWJ1dGUgYW5kIGNyZWF0ZSBhIGZvcm0gd2hpY2ggaW5jbHVkZXMgYSA8Y29k ZT56ZW1fY29udGFjdF9zZWxlY3Q8L2NvZGU+IHRhZzo8L3A+Cgo8cHJlPjxjb2RlPiZsdDt0 eHA6emVtX2NvbnRhY3QgdG89JnF1b3Q7eW91QGV4YW1wbGUuY29tJnF1b3Q7IHN1YmplY3Rf Zm9ybT0mcXVvdDtteV9zdWJqZWN0X2Zvcm0mcXVvdDsgLyZndDsKICAmbHQ7dHhwOnplbV9j b250YWN0X3RleHQgbGFiZWw9JnF1b3Q7TmFtZSZxdW90OyAvJmd0OyZsdDticiAvJmd0Owog ICZsdDt0eHA6emVtX2NvbnRhY3RfZW1haWwgLyZndDsmbHQ7YnIgLyZndDsKICAmbHQ7dHhw OnplbV9jb250YWN0X3NlbGVjdCBsYWJlbD0mcXVvdDtDaG9vc2UgU3ViamVjdCZxdW90OyBs aXN0PSZxdW90OyxRdWVzdGlvbixGZWVkYmFjayZxdW90OyAvJmd0OyZsdDticiAvJmd0Owog ICZsdDt0eHA6emVtX2NvbnRhY3RfdGV4dGFyZWEgbGFiZWw9JnF1b3Q7TWVzc2FnZSZxdW90 OyAvJmd0OyZsdDticiAvJmd0OwombHQ7L3R4cDp6ZW1fY29udGFjdCZndDs8L2NvZGU+PC9w cmU+Cgo8cD5DcmVhdGUgYSBUZXh0cGF0dGVybiBmb3JtIGNhbGxlZCAmIzgyMjA7bXlfc3Vi amVjdF9mb3JtJiM4MjIxOywgY29udGFpbmluZzo8L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6 cGhwJmd0OwogIGdsb2JhbCAkemVtX2NvbnRhY3RfZm9ybTsKICBlY2hvICR6ZW1fY29udGFj dF9mb3JtWyYjMzk7Q2hvb3NlIFN1YmplY3QmIzM5O107CiZsdDsvdHhwOnBocCZndDs8L2Nv ZGU+PC9wcmU+Cgo8cD5UaGUgPGNvZGU+bGFiZWw8L2NvZGU+IHVzZWQgaW4gdGhlIDxjb2Rl PnplbV9jb250YWN0X3NlbGVjdDwvY29kZT4gdGFnIG11c3QgYmUgaWRlbnRpY2FsIHRvIHRo ZSBjb3JyZXNwb25kaW5nIHZhcmlhYmxlIGluIHRoZSA8Y29kZT5zdWJqZWN0X2Zvcm08L2Nv ZGU+LiBIZXJlIHdlIHVzZWQgPGNvZGU+Q2hvb3NlIHN1YmplY3Q8L2NvZGU+LjwvcD4KCjxw PklmIHlvdSYjODIxNztkIHByZWZlciB0byBhZGQgYSBjb21tb24gcHJlZml4IGZvciBhbGwg c3ViamVjdHMsIHVzZSBhIDxjb2RlPnN1YmplY3RfZm9ybTwvY29kZT4gY29udGFpbmluZzo8 L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6cGhwJmd0OwogIGdsb2JhbCAkemVtX2NvbnRhY3Rf Zm9ybTsKICBlY2hvICYjMzk7TXkgY29tbW9uIHByZWZpeCAtICYjMzk7IC4gJHplbV9jb250 YWN0X2Zvcm1bJiMzOTtDaG9vc2UgU3ViamVjdCYjMzk7XTsKJmx0Oy90eHA6cGhwJmd0Ozwv Y29kZT48L3ByZT4KCjxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgo8 aDMgaWQ9InRvX2Zvcm0iPlVzZXIgc2VsZWN0YWJsZSByZWNpcGllbnQsIHdpdGhvdXQgc2hv d2luZyBlbWFpbCBhZGRyZXNzPC9oMz4KCjxwPlNwZWNpZnkgdGhlIDxjb2RlPnRvX2Zvcm08 L2NvZGU+IGF0dHJpYnV0ZSBhbmQgY3JlYXRlIGEgZm9ybSB3aGljaCBpbmNsdWRlcyBhIDxj b2RlPnplbV9jb250YWN0X3NlbGVjdDwvY29kZT4gdGFnOjwvcD4KCjxwcmU+PGNvZGU+Jmx0 O3R4cDp6ZW1fY29udGFjdCB0b19mb3JtPSZxdW90O215X3plbV9jb250YWN0X3RvX2Zvcm0m cXVvdDsmZ3Q7CiAgJmx0O3R4cDp6ZW1fY29udGFjdF90ZXh0IGxhYmVsPSZxdW90O05hbWUm cXVvdDsgLyZndDsmbHQ7YnIgLyZndDsKICAmbHQ7dHhwOnplbV9jb250YWN0X2VtYWlsIC8m Z3Q7Jmx0O2JyIC8mZ3Q7CiAgJmx0O3R4cDp6ZW1fY29udGFjdF9zZWxlY3QgbGFiZWw9JnF1 b3Q7RGVwYXJ0bWVudCZxdW90OyBsaXN0PSZxdW90OyxTdXBwb3J0LFNhbGVzJnF1b3Q7IC8m Z3Q7Jmx0O2JyIC8mZ3Q7CiAgJmx0O3R4cDp6ZW1fY29udGFjdF90ZXh0YXJlYSBsYWJlbD0m cXVvdDtNZXNzYWdlJnF1b3Q7IC8mZ3Q7Jmx0O2JyIC8mZ3Q7CiZsdDsvdHhwOnplbV9jb250 YWN0Jmd0OzwvY29kZT48L3ByZT4KCjxwPkNyZWF0ZSBhIFRleHRwYXR0ZXJuIGZvcm0gY2Fs bGVkICYjODIyMDtteV96ZW1fY29udGFjdF90b19mb3JtJiM4MjIxOywgY29udGFpbmluZzo8 L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6cGhwJmd0OwogIGdsb2JhbCAkemVtX2NvbnRhY3Rf Zm9ybTsKICBzd2l0Y2goJHplbV9jb250YWN0X2Zvcm1bJiMzOTtEZXBhcnRtZW50JiMzOTtd KQogIHsKICAgIGNhc2UgJiMzOTtTdXBwb3J0JiMzOTs6CiAgICAgIGVjaG8gJiMzOTtjcmV3 QGV4YW1wbGUuY29tJiMzOTs7CiAgICAgIGJyZWFrOwogICAgY2FzZSAmIzM5O1NhbGVzJiMz OTs6CiAgICAgIGVjaG8gJiMzOTtzaG93bWV0aGVtb25leUBleGFtcGxlLmNvbSYjMzk7Owog ICAgICBicmVhazsKICAgIGRlZmF1bHQ6CiAgICAgIGVjaG8gJiMzOTtzb21lb25lQGV4YW1w bGUuY29tJiMzOTs7CiAgfQombHQ7L3R4cDpwaHAmZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+VGhl IDxjb2RlPmxhYmVsPC9jb2RlPiB1c2VkIGluIHRoZSA8Y29kZT56ZW1fY29udGFjdF9zZWxl Y3Q8L2NvZGU+IHRhZyBtdXN0IGJlIGlkZW50aWNhbCB0byB0aGUgY29ycmVzcG9uc2luZyB2 YXJpYWJsZSBpbiB0aGUgPGNvZGU+dG9fZm9ybTwvY29kZT4uIEhlcmUgd2UgdXNlZCA8Y29k ZT5EZXBhcnRtZW50PC9jb2RlPi48L3A+Cgo8cD5BICYjODIxNjtkZWZhdWx0JiM4MjE3OyBl bWFpbCBhZGRyZXNzIGluIHRoZSA8Y29kZT50b19mb3JtPC9jb2RlPiBpcyBzcGVjaWZpZWQg dG8gZW5zdXJlIHRoYXQgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIGlzIHVzZWQgaW4gY2FzZXMg d2hlcmUgeW91IGFkZCBvciBjaGFuZ2UgYSBzZWxlY3QvcmFkaW8gb3B0aW9uIGFuZCBmb3Jn ZXQgdG8gdXBkYXRlIHRoZSA8Y29kZT50b19mb3JtPC9jb2RlPi48L3A+Cgo8cCBjbGFzcz0i d2FybmluZyI+TmV2ZXIgdXNlIHRhZ3MgbGlrZSA8Y29kZT56ZW1fY29udGFjdF90ZXh0PC9j b2RlPiwgPGNvZGU+emVtX2NvbnRhY3RfZW1haWw8L2NvZGU+IG9yIDxjb2RlPnplbV9jb250 YWN0X3RleHRhcmVhPC9jb2RlPiBmb3Igc2V0dGluZyB0aGUgcmVjaXBpZW50IGFkZHJlc3Ms IG90aGVyd2lzZSB5b3VyIGZvcm0gY2FuIGJlIGFidXNlZCB0byBzZW5kIHNwYW0gdG8gYW55 IGVtYWlsIGFkZHJlc3MhPC9wPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+ PC9wPgoKCjxoMiBpZD0ic3R5bGluZyI+U3R5bGluZzwvaDI+Cgo8cD5UaGUgZm9ybSBpdHNl bGYgaGFzIGEgY2xhc3MgPHN0cm9uZz56ZW1Db250YWN0Rm9ybTwvc3Ryb25nPiBzZXQgb24g dGhlIDxjb2RlPkZPUk08L2NvZGU+IDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiB0 YWcuPC9wPgoKPHA+VGhlIGxpc3Qgb2YgZXJyb3IgbWVzc2FnZXMgKGlmIGFueSkgaGFzIGEg Y2xhc3MgPHN0cm9uZz56ZW1FcnJvcjwvc3Ryb25nPiBzZXQgb24gdGhlIDxjb2RlPlVMPC9j b2RlPiA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gdGFnIHRoYXQgZW5jbG9zZXMg dGhlIGxpc3Qgb2YgZXJyb3JzLjwvcD4KCjxwPkFsbCBmb3JtIGVsZW1lbnRzIGFuZCBjb3Jy ZXNwb25kaW5nIGxhYmVscyBoYXZlIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyAob3IgaWRzIHNl dCk6PGJyIC8+CjxvbD4KCTxsaT5PbmUgb2YgPHN0cm9uZz56ZW1UZXh0PC9zdHJvbmc+LCA8 c3Ryb25nPnplbVRleHRhcmVhPC9zdHJvbmc+LCA8c3Ryb25nPnplbVNlbGVjdDwvc3Ryb25n PiwgPHN0cm9uZz56ZW1SYWRpbzwvc3Ryb25nPiwgPHN0cm9uZz56ZW1DaGVja2JveDwvc3Ry b25nPiwgPHN0cm9uZz56ZW1TdWJtaXQ8L3N0cm9uZz4uIEl0IHNob3VsZCBiZSBvYnZpb3Vz IHdoaWNoIGNsYXNzIGlzIHVzZWQgZm9yIHdoaWNoIGZvcm0gZWxlbWVudCAoYW5kIGNvcnJl c3BvbmRpbmcgbGFiZWwpLjwvbGk+Cgk8bGk+PHN0cm9uZz56ZW1SZXF1aXJlZDwvc3Ryb25n PiBvciA8c3Ryb25nPmVycm9yRWxlbWVudDwvc3Ryb25nPiBvciA8c3Ryb25nPnplbVJlcXVp cmVkZXJyb3JFbGVtZW50PC9zdHJvbmc+LCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgZm9y bSBlbGVtZW50IGlzIHJlcXVpcmVkLCBhbiBlcnJvciB3YXMgZm91bmQgaW4gd2hhdGV2ZXIg dGhlIHZpc2l0b3IgZW50ZXJlZCYjODIzMDsgb3IgYm90aC48L2xpPgoJPGxpPkFuIGluZGl2 aWR1YWwgJiM4MjIwO2lkJiM4MjIxOyBvciAmIzgyMjA7Y2xhc3MmIzgyMjE7IHNldCB0byB0 aGUgdmFsdWUgb2YgdGhlIDxjb2RlPm5hbWU8L2NvZGU+IGF0dHJpYnV0ZSBvZiB0aGUgY29y cmVzcG9uZGluZyB0YWcuIFdoZW4gc3R5bGluZyBmb3JtcyBiYXNlZCBvbiB0aGlzIGNsYXNz LCB5b3Ugc2hvdWxkIGV4cGxpY2l0bHkgc2V0IHRoZSA8Y29kZT5uYW1lPC9jb2RlPiBhdHRy aWJ1dGUgYmVjYXVzZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBuYW1lcyBtYXkgY2hhbmdl IGluIG5ld2VyIHplbV9jb250YWN0X3JlYm9ybiB2ZXJzaW9ucy48L2xpPjxiciAvPgo8L29s PjwvcD4KCjxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgo8aDIgaWQ9 Imhpc3RvcnkiPkhpc3Rvcnk8L2gyPgoKPHA+T25seSB0aGUgY2hhbmdlcyB0aGF0IG1heSBh ZmZlY3QgcGVvcGxlIHdobyB1cGdyYWRlIGFyZSBkZXRhaWxlZCBiZWxvdy48YnIgLz4KVG8g c2F2ZSBzcGFjZSwgbGlua3MgdG8gZm9ydW0gdG9waWNzIHRoYXQgZGV0YWlsIGFsbCB0aGUg Y2hhbmdlcyBpbiBlYWNoIHZlcnNpb24gaGF2ZSBiZWVuIGFkZGVkLjwvcD4KCjx1bD4KCTxs aT4wNyBmZWIgMjAxNjogPHN0cm9uZz52ZXJzaW9uIDQuMC4zLjIxPC9zdHJvbmc+OiBDb21w YXRpYmxlIHdpdGggPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gNC42IGFuZCA8c3Bh biBjbGFzcz0iY2FwcyI+UEhQPC9zcGFuPiA1LjMrPC9saT4KCTxsaT4yMyBhdWcgMjAwNzog PHN0cm9uZz52ZXJzaW9uIDQuMC4zLjIwPC9zdHJvbmc+IDxhIGhyZWY9Imh0dHA6Ly9mb3J1 bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0yMzcyOCI+Y2hhbmdlbG9nPC9h PjwvbGk+Cgk8bGk+MTQgZmViIDIwMDc6IDxzdHJvbmc+dmVyc2lvbiA0LjAuMy4xOTwvc3Ry b25nPiA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5w aHA/aWQ9MjExNDQiPmNoYW5nZWxvZzwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0iI3NlbmRh cnRpY2xlIj5zZW5kX2FydGljbGU8L2E+IGZ1bmN0aW9uYWxpdHkgcmV2aXNlZCwgcmVxdWly aW5nIGNoYW5nZXMgd2hlbiB1cGdyYWRpbmcgZnJvbSBlYXJsaWVyIHZlcnNpb25zPC9saT4K CQk8bGk+TmV3IGxhbmd1YWdlIHN0cmluZ3M6ICYjODIxNjtzZW5kX2FydGljbGUmIzgyMTc7 IGFuZCAmIzgyMTY7cmVjaXBpZW50JiM4MjE3OyAocmVwbGFjZXMgJiM4MjE2O3JlY2VpdmVy JiM4MjE3Oyk8L2xpPgoJCTxsaT5TZXRzIG9mIHJhZGlvIGJ1dHRvbnMgcmVxdWlyZSB0aGUg bmV3IDxhIGhyZWY9IiN6Y19yYWRpbyI+Z3JvdXA8L2E+IGF0dHJpYnV0ZTwvbGk+CgkJPGxp Plllcy9ObyB2YWx1ZXMgZGVwcmVjYXRlZCBpbiBmYXZvciBmb3IgdGhlIDxzcGFuIGNsYXNz PSJjYXBzIj5UWFA8L3NwYW4+IHN0YW5kYXJkIDEvMCB2YWx1ZXMgKHllcy9ubyBzdGlsbCB3 b3JrIGluIHRoaXMgdmVyc2lvbik8L2xpPgoJPC91bD48L2xpPgoJPGxpPjIwIG5vdiAyMDA2 OiA8c3Ryb25nPnZlcnNpb24gNC4wLjMuMTg8L3N0cm9uZz4gPGEgaHJlZj0iaHR0cDovL2Zv cnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTE5ODIzIj5jaGFuZ2Vsb2c8 L2E+Cgk8dWw+CgkJPGxpPklEcyAmIzgyMTY7emVtQ29udGFjdEZvcm0mIzgyMTc7IGFuZCAm IzgyMTY7emVtU3VibWl0JiM4MjE3OyBoYXZlIGNoYW5nZWQgdG8gY2xhc3NlcyB0byBhbGxv dyBtdWx0aXBsZSBmb3JtcyBwZXIgcGFnZTwvbGk+CgkJPGxpPk5ldyBsYW5ndWFnZSBzdHJp bmdzOiAmIzgyMTY7Zm9ybV91c2VkJiM4MjE3OywgJiM4MjE2O2ludmFsaWRfdXRmOCYjODIx NzssICYjODIxNjttYXhfd2FybmluZyYjODIxNzssICYjODIxNjtuYW1lJiM4MjE3OywgJiM4 MjE2O3JlZnJlc2gmIzgyMTc7LCAmIzgyMTY7c2VjcmV0JiM4MjE3OzwvbGk+Cgk8L3VsPjwv bGk+Cgk8bGk+MTIgbWFyIDIwMDY6IDxzdHJvbmc+dmVyc2lvbiA0LjAuMy4xNzwvc3Ryb25n PiA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/ aWQ9MTM0MTYiPmNoYW5nZWxvZzwvYT48L2xpPgoJPGxpPjExIGZlYiAyMDA2OiA8c3Ryb25n PnZlcnNpb24gLjE2PC9zdHJvbmc+PC9saT4KCTxsaT4wNiBmZWIgMjAwNjogPHN0cm9uZz52 ZXJzaW9uIC4xNTwvc3Ryb25nPjwvbGk+Cgk8bGk+MDMgZmViIDIwMDY6IDxzdHJvbmc+dmVy c2lvbiAuMTQ8L3N0cm9uZz4KCTx1bD4KCQk8bGk+UmVxdWlyZXMgc2VwYXJhdGUgemVtX2Nv bnRhY3RfbGFuZyBwbHVnaW48L2xpPgoJPC91bD48L2xpPgoJPGxpPjI5IGphbiAyMDA2OiA8 c3Ryb25nPnZlcnNpb24gLjEyPC9zdHJvbmc+PC9saT4KCTxsaT4yNyBqYW4gMjAwNjogPHN0 cm9uZz52ZXJzaW9uIC4xMTwvc3Ryb25nPjwvbGk+Cgk8bGk+MjMgamFuIDIwMDY6IDxzdHJv bmc+dmVyc2lvbiAuMDkgYW5kIC4xMDwvc3Ryb25nPjwvbGk+Cgk8bGk+MjMgamFuIDIwMDY6 IDxzdHJvbmc+dmVyc2lvbiAuMDg8L3N0cm9uZz48L2xpPgoJPGxpPjE3IGphbiAyMDA2OiA8 c3Ryb25nPnZlcnNpb24gLjA3PC9zdHJvbmc+PC9saT4KCTxsaT4xNiBqYW4gMjAwNjogPHN0 cm9uZz52ZXJzaW9uIC4wNSBhbmQgLjA2PC9zdHJvbmc+PC9saT4KCTxsaT4xNSBqYW4gMjAw NjogPHN0cm9uZz52ZXJzaW9uIC4wNDwvc3Ryb25nPjwvbGk+Cgk8bGk+MTAgamFuIDIwMDY6 IDxzdHJvbmc+dmVyc2lvbiAuMDM8L3N0cm9uZz48L2xpPgoJPGxpPjE5IGRlYyAyMDA1OiA8 c3Ryb25nPnZlcnNpb24gLjAyPC9zdHJvbmc+PC9saT4KPC91bD4KCjxwPjxhIGhyZWY9IiN0 b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgo8aDIgaWQ9ImNyZWRpdHMiPkNyZWRpdHM8L2gy PgoKPHVsPgoJPGxpPjxzdHJvbmc+emVtPC9zdHJvbmc+IHdyb3RlIHRoZSB6ZW1fY29udGFj dCAwLjYgcGx1Z2luIG9uIHdoaWNoIHRoaXMgcGx1Z2luIHdhcyBpbml0aWFsbHkgYmFzZWQu PC9saT4KCTxsaT48c3Ryb25nPk1hcnk8L3N0cm9uZz4gY29tcGxldGVseSByZXZpc2VkIHRo ZSBwbHVnaW4gY29kZS48L2xpPgoJPGxpPjxzdHJvbmc+U3R1YXJ0PC9zdHJvbmc+IFR1cm5l ZCBpdCBpbnRvIGEgcGx1Z2luLCBhZGRlZCBhIHJldmlzZWQgaGVscCB0ZXh0IGFuZCBhZGRp dGlvbmFsIGNvZGUuIE1haW50YWluZWQgYWxsIHBsdWdpbiB2ZXJzaW9ucyB0aWxsIDQuMC4z LjE3LjwvbGk+Cgk8bGk+PHN0cm9uZz53ZXQ8L3N0cm9uZz4gYWRkZWQgdGhlIHplbV9jb250 YWN0X3JhZGlvIHRhZy48L2xpPgoJPGxpPjxzdHJvbmc+VHJhbnF1aWxsbzwvc3Ryb25nPiBh ZGRlZCB0aGUgYW50aS1zcGFtIDxzcGFuIGNsYXNzPSJjYXBzIj5BUEk8L3NwYW4+IGFuZCB6 ZW1fY29udGFjdF9zZW5kX2FydGljbGUgZnVuY3Rpb25hbGl0eS48L2xpPgoJPGxpPjxzdHJv bmc+YXNsc3c2Njwvc3Ryb25nPiwgPHN0cm9uZz5qZHlrYXN0PC9zdHJvbmc+IGFuZCBvdGhl cnMgKD8pIHByb3ZpZGVkIGFkZGl0aW9uYWwgY29kZTwvbGk+Cgk8bGk+PHN0cm9uZz5SdXVk PC9zdHJvbmc+IGNsZWFuZWQgdXAgYW5kIGF1ZGl0ZWQgdGhlIGNvZGUgdG8gd2VlZCBvdXQg YnVncyBhbmQgY29tcGxldGVseSByZXZpc2VkIHRoZSBoZWxwIHRleHQuIE1haW50YWluZXIg b2YgdmVyc2lvbnMgNC4wLjMuMTggYW5kIHVwLjwvbGk+Cgk8bGk+U3VwcG9ydGVkIGFuZCB0 ZXN0ZWQgdG8gZGVzdHJ1Y3Rpb24gYnkgdGhlIFRleHRwYXR0ZXJuIGNvbW11bml0eS48L2xp Pgo8L3VsPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCjxoMiBp ZD0iYXBpIj5aZW0gQ29udGFjdCBSZWJvcm4mIzgyMTc7cyA8c3BhbiBjbGFzcz0iY2FwcyI+ QVBJPC9zcGFuPjwvaDI+Cgo8cD5UaGUgcGx1Z2luIDxzcGFuIGNsYXNzPSJjYXBzIj5BUEk8 L3NwYW4+IG9mIHplbSBjb250YWN0LCBkZXZlbG9wZWQgYnkgVHJhbnF1aWxsbywgaXMgc2lt aWxhciB0byB0aGUgY29tbWVudHMgPHNwYW4gY2xhc3M9ImNhcHMiPkFQSTwvc3Bhbj4gb2Yg VGV4dHBhdHRlcm4sIHdoaWNoIGlzIGV4cGxhaW5lZCBpbiB0aGUgVGV4dGJvb2sgPGEgaHJl Zj0iaHR0cDovL3RleHRwYXR0ZXJuLm5ldC93aWtpL2luZGV4LnBocD90aXRsZT1QbHVnaW5f RGV2ZWxvcG1lbnRfVG9waWNzIj5QbHVnaW4gRGV2ZWxvcG1lbnQgVG9waWNzPC9hPiBhbmQg PGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm5ldC93aWtpL2luZGV4LnBocD90aXRsZT1D b21iYXRfQ29tbWVudF9TcGFtIj5Db21iYXQgQ29tbWVudCBTcGFtPC9hPi48L3A+Cgo8cD5U d28gY2FsbGJhY2sgZXZlbnRzIGV4aXN0IGluIHplbV9jb250YWN0X3JlYm9ybjo8YnIgLz4K PHVsPgoJPGxpPjxjb2RlPnplbWNvbnRhY3Quc3VibWl0PC9jb2RlPiBpcyBjYWxsZWQgYWZ0 ZXIgdGhlIGZvcm0gaXMgc3VibWl0dGVkIGFuZCB0aGUgdmFsdWVzIGFyZSBjaGVja2VkIGlm IGVtcHR5IG9yIHZhbGlkIGVtYWlsIGFkZHJlc3NlcywgYnV0IGJlZm9yZSB0aGUgbWFpbCBp cyBzZW50LjwvbGk+Cgk8bGk+PGNvZGU+emVtY29udGFjdC5mb3JtPC9jb2RlPiBsZXQmIzgy MTc7cyB5b3UgaW5zZXJ0IGNvbnRlbnQgaW4gdGhlIGNvbnRhY3QgZm9ybSBhcyBkaXNwbGF5 ZWQgdG8gdGhlIHZpc2l0b3IuPC9saT48YnIgLz4KPC91bD48L3A+Cgo8cD5Gb3IgcmVmZXJl bmNlIGhlcmUgYXJlIHRoZSBjb21tYW5kcyB0aGF0IHdpbGwgYmUgaW50ZXJlc3RpbmcgdG8g cGx1Z2luIGRldmVsb3BlcnM6PC9wPgoKPHByZT48Y29kZT4vLyBUaGlzIHdpbGwgY2FsbCB5 b3VyIGZ1bmN0aW9uIGJlZm9yZSB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQKLy8gU28geW91IGNh biBhbmFseXNlIHRoZSBzdWJtaXR0ZWQgZGF0YQpyZWdpc3Rlcl9jYWxsYmFjaygmIzM5O2Fi Y19teWZ1bmN0aW9uJiMzOTssJiMzOTt6ZW1jb250YWN0LnN1Ym1pdCYjMzk7KTsKCi8vIFRo aXMgd2lsbCBjYWxsIHlvdXIgZnVuY3Rpb24gYW5kIGFkZCB0aGUgb3V0cHV0ICh1c2UgcmV0 dXJuICRteXN0dWZmKQovLyB0byB0aGUgY29udGFjdC1mb3JtLgpyZWdpc3Rlcl9jYWxsYmFj aygmIzM5O2FiY19teW90aGVyZnVuY3Rpb24yJiMzOTssJiMzOTt6ZW1jb250YWN0LmZvcm0m IzM5Oyk7CgovLyBUbyBnZXQgaG9sZCBvZiB0aGUgZm9ybS12YXJpYWJsZXMgeW91IGNhbiB1 c2UKZ2xvYmFsIHplbV9jb250YWN0X2Zvcm07CgovLyBXaXRoIHRoZSBmb2xsb3dpbmcgdHdv IGxpbmVzIHlvdSBjYW4gdGVsbCB6ZW1fY29udGFjdCBpZiB5b3VyCi8vIHBsdWdpbiBmb3Vu ZCBzcGFtCiRldmFsdWF0b3IgPSZhbXA7IGdldF96ZW1jb250YWN0X2V2YWx1YXRvcigpOwoK Ly8gVGhlIHBhc3NlZCB2YWx1ZSBtdXN0IGJlIG5vbi16ZXJvIHRvIG1hcmsgdGhlIGNvbnRl bnQgYXMgc3BhbS4KLy8gVmFsdWUgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDEu CiRldmFsdWF0b3IgLSZndDsgYWRkX3plbWNvbnRhY3Rfc3RhdHVzKDEpOzwvY29kZT48L3By ZT4KCjxwPk11bHRpcGxlIHBsdWdpbnMgY2FuIGJlIGFjdGl2ZSBhdCB0aGUgc2FtZSB0aW1l IGFuZCBlYWNoIG9mIHRoZW0gY2FuIG1hcmsgdGhlIHN1Ym1pdHRlZCBjb250ZW50IGFzIHNw YW0gYW5kIHByZXZlbnQgdGhlIGZvcm0gZnJvbSBiZWluZyBzdWJtaXR0ZWQuPC9wPgoKPHA+ PHN0cm9uZz5BbiBleGFtcGxlIG9mIGEgcGx1Zy1pbiBjb25uZWN0aW5nIHRvIFplbSBDb250 YWN0IFJlYm9ybiYjODIxNztzIDxzcGFuIGNsYXNzPSJjYXBzIj5BUEk8L3NwYW4+Ojwvc3Ry b25nPjwvcD4KCjxwcmU+PGNvZGU+cmVnaXN0ZXJfY2FsbGJhY2soJiMzOTtwYXBfemVtY29u dGFjdF9mb3JtJiMzOTssJiMzOTt6ZW1jb250YWN0LmZvcm0mIzM5Oyk7CnJlZ2lzdGVyX2Nh bGxiYWNrKCYjMzk7cGFwX3plbWNvbnRhY3Rfc3VibWl0JiMzOTssJiMzOTt6ZW1jb250YWN0 LnN1Ym1pdCYjMzk7KTsKCmZ1bmN0aW9uIHBhcF96ZW1jb250YWN0X2Zvcm0oKSB7CiAgJGZp ZWxkID0gJiMzOTsmbHQ7ZGl2IHN0eWxlPSZxdW90O2Rpc3BsYXk6bm9uZSZxdW90OyZndDsm IzM5Oy4KICAgIGZpbnB1dCgmIzM5O3RleHQmIzM5OywmIzM5O3Bob25lJiMzOTsscHMoJiMz OTtwaG9uZSYjMzk7KSwmIzM5OyYjMzk7LCYjMzk7JiMzOTssJiMzOTsmIzM5OywmIzM5OyYj Mzk7LCYjMzk7JiMzOTssJiMzOTtwaG9uZSYjMzk7KS4mIzM5OyZsdDticiAvJmd0OyYjMzk7 LgogICAgZmlucHV0KCYjMzk7dGV4dCYjMzk7LCYjMzk7bWFpbCYjMzk7LHBzKCYjMzk7bWFp bCYjMzk7KSwmIzM5OyYjMzk7LCYjMzk7JiMzOTssJiMzOTsmIzM5OywmIzM5OyYjMzk7LCYj Mzk7JiMzOTssJiMzOTttYWlsJiMzOTspLiYjMzk7Jmx0Oy9kaXYmZ3Q7JiMzOTs7CiAgcmV0 dXJuICRmaWVsZDsmbHQ7L2NvZGUmZ3Q7Cn0KCmZ1bmN0aW9uIHBhcF96ZW1jb250YWN0X3N1 Ym1pdCgpIHsKICAkY2hlY2tpbmdfbWFpbF9maWVsZCA9IHRyaW0ocHMoJiMzOTttYWlsJiMz OTspKTsKICAkY2hlY2tpbmdfcGhvbmVfZmllbGQgPSB0cmltKHBzKCYjMzk7cGhvbmUmIzM5 OykpOwoKICAkZXZhbHVhdGlvbiA9JmFtcDsgZ2V0X3plbWNvbnRhY3RfZXZhbHVhdG9yKCk7 CgogIC8vIElmIHRoZSBoaWRkZW4gZmllbGRzIGFyZSBmaWxsZWQgb3V0LCB0aGUgY29udGFj dCBmb3JtIHdvbiYjMzk7dCBiZSBzdWJtaXR0ZWQhCiAgaWYgKCRjaGVja2luZ19tYWlsX2Zp ZWxkICE9ICYjMzk7JiMzOTsgb3IgJGNoZWNraW5nX3Bob25lX2ZpZWxkICE9ICYjMzk7JiMz OTspIHsKICAgICRldmFsdWF0aW9uIC0mZ3Q7IGFkZF96ZW1jb250YWN0X3N0YXR1cygxKTsK ICB9CiAgcmV0dXJuOwp9PC9jb2RlPjwvcHJlPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0 byB0b3A8L2E+PC9wPiI7czo0OiJjb2RlIjtzOjIxMzQwOiIKaWYgKGNsYXNzX2V4aXN0cygn XFRleHRwYXR0ZXJuXFRhZ1xSZWdpc3RyeScpKSB7CiAgVHhwOjpnZXQoJ1xUZXh0cGF0dGVy blxUYWdcUmVnaXN0cnknKQogICAgLT5yZWdpc3RlcignemVtX2NvbnRhY3QnKQogICAgLT5y ZWdpc3RlcignemVtX2NvbnRhY3RfdGV4dCcpCiAgICAtPnJlZ2lzdGVyKCd6ZW1fY29udGFj dF9lbWFpbCcpCiAgICAtPnJlZ2lzdGVyKCd6ZW1fY29udGFjdF90ZXh0YXJlYScpCiAgICAt PnJlZ2lzdGVyKCd6ZW1fY29udGFjdF9zdWJtaXQnKQogICAgLT5yZWdpc3RlcignemVtX2Nv bnRhY3Rfc2VsZWN0JykKICAgIC0+cmVnaXN0ZXIoJ3plbV9jb250YWN0X2NoZWNrYm94JykK ICAgIC0+cmVnaXN0ZXIoJ3plbV9jb250YWN0X3JhZGlvJykKICAgIC0+cmVnaXN0ZXIoJ3pl bV9jb250YWN0X3NlY3JldCcpCiAgICAtPnJlZ2lzdGVyKCd6ZW1fY29udGFjdF9zZXJ2ZXJp bmZvJykKICAgIC0+cmVnaXN0ZXIoJ3plbV9jb250YWN0X3NlbmRfYXJ0aWNsZScpOwp9CgoK ZnVuY3Rpb24gemVtX2NvbnRhY3QoJGF0dHMsICR0aGluZyA9ICcnKQp7CglnbG9iYWwgJHNp dGVuYW1lLCAkcHJlZnMsICRwcm9kdWN0aW9uX3N0YXR1cywgJHplbV9jb250YWN0X2Zyb20s CgkJJHplbV9jb250YWN0X3JlY2lwaWVudCwgJHplbV9jb250YWN0X2Vycm9yLCAkemVtX2Nv bnRhY3Rfc3VibWl0LAoJCSR6ZW1fY29udGFjdF9mb3JtLCAkemVtX2NvbnRhY3RfbGFiZWxz LCAkemVtX2NvbnRhY3RfdmFsdWVzOwoKCWV4dHJhY3QoemVtX2NvbnRhY3RfbEF0dHMoYXJy YXkoCgkJJ2NvcHlzZW5kZXInCT0+IDAsCgkJJ2Zvcm0nCQk9PiAnJywKCQknZnJvbScJCT0+ ICcnLAoJCSdmcm9tX2Zvcm0nCT0+ICcnLAoJCSdsYWJlbCcJCT0+IHplbV9jb250YWN0X2dU eHQoJ2NvbnRhY3QnKSwKCQkncmVkaXJlY3QnCT0+ICcnLAoJCSdzaG93X2Vycm9yJwk9PiAx LAoJCSdzaG93X2lucHV0Jwk9PiAxLAoJCSdzZW5kX2FydGljbGUnCT0+IDAsCgkJJ3N1Ympl Y3QnCT0+IHplbV9jb250YWN0X2dUeHQoJ2VtYWlsX3N1YmplY3QnLCBodG1sX2VudGl0eV9k ZWNvZGUoJHNpdGVuYW1lLEVOVF9RVU9URVMpKSwKCQknc3ViamVjdF9mb3JtJwk9PiAnJywK CQkndG8nCQk9PiAnJywKCQkndG9fZm9ybScJPT4gJycsCgkJJ3RoYW5rcycJPT4gZ3JhZih6 ZW1fY29udGFjdF9nVHh0KCdlbWFpbF90aGFua3MnKSksCgkJJ3RoYW5rc19mb3JtJwk9PiAn JwoJKSwgJGF0dHMpKTsKCgl1bnNldCgkYXR0c1snc2hvd19lcnJvciddLCAkYXR0c1snc2hv d19pbnB1dCddKTsKCSR6ZW1fY29udGFjdF9mb3JtX2lkID0gbWQ1KHNlcmlhbGl6ZSgkYXR0 cykucHJlZ19yZXBsYWNlKCcvW1x0XHNcclxuXS8nLCcnLCR0aGluZykpOwoJJHplbV9jb250 YWN0X3N1Ym1pdCA9IChwcygnemVtX2NvbnRhY3RfZm9ybV9pZCcpID09ICR6ZW1fY29udGFj dF9mb3JtX2lkKTsKCglpZiAoIWlzX2NhbGxhYmxlKCdtYWlsJykpCgl7CgkJcmV0dXJuICgk cHJvZHVjdGlvbl9zdGF0dXMgPT0gJ2xpdmUnKSA/CgkJCXplbV9jb250YWN0X2dUeHQoJ21h aWxfc29ycnknKSA6CgkJCWdUeHQoJ3dhcm5fbWFpbF91bmF2YWlsYWJsZScpOwoJfQoKCXN0 YXRpYyAkaGVhZGVyc19zZW50ID0gZmFsc2U7CglpZiAoISRoZWFkZXJzX3NlbnQpIHsKCQlo ZWFkZXIoJ0xhc3QtTW9kaWZpZWQ6ICcuZ21kYXRlKCdELCBkIE0gWSBIOmk6cycsdGltZSgp LTM2MDAqMjQqNykuJyBHTVQnKTsKCQloZWFkZXIoJ0V4cGlyZXM6ICcuZ21kYXRlKCdELCBk IE0gWSBIOmk6cycsdGltZSgpKzYwMCkuJyBHTVQnKTsKCQloZWFkZXIoJ0NhY2hlLUNvbnRy b2w6IG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUnKTsKCQkkaGVhZGVyc19zZW50ID0gdHJ1 ZTsKCX0KCgkkbm9uY2UgICA9IG15c3FsX3JlYWxfZXNjYXBlX3N0cmluZyhwcygnemVtX2Nv bnRhY3Rfbm9uY2UnKSk7CgkkcmVub25jZSA9IGZhbHNlOwoKCWlmICgkemVtX2NvbnRhY3Rf c3VibWl0KQoJewoJCXNhZmVfZGVsZXRlKCd0eHBfZGlzY3Vzc19ub25jZScsICdpc3N1ZV90 aW1lIDwgZGF0ZV9zdWIobm93KCksIGludGVydmFsIDEwIG1pbnV0ZSknKTsKCQlpZiAoJHJz ID0gc2FmZV9yb3coJ3VzZWQnLCAndHhwX2Rpc2N1c3Nfbm9uY2UnLCAibm9uY2UgPSAnJG5v bmNlJyIpKQoJCXsKCQkJaWYgKCRyc1sndXNlZCddKQoJCQl7CgkJCQl1bnNldCgkemVtX2Nv bnRhY3RfZXJyb3IpOwoJCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9n VHh0KCdmb3JtX3VzZWQnKTsKCQkJCSRyZW5vbmNlID0gdHJ1ZTsKCQkJCSRfUE9TVCA9IGFy cmF5KCk7CgkJCQkkX1BPU1RbJ3plbV9jb250YWN0X3N1Ym1pdCddID0gVFJVRTsKCQkJCSRf UE9TVFsnemVtX2NvbnRhY3RfZm9ybV9pZCddID0gJHplbV9jb250YWN0X2Zvcm1faWQ7CgkJ CQkkX1BPU1RbJ3plbV9jb250YWN0X25vbmNlJ10gPSAkbm9uY2U7CgkJCX0KCQl9CgkJZWxz ZQoJCXsKCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9nVHh0KCdmb3Jt X2V4cGlyZWQnKTsKCQkJJHJlbm9uY2UgPSB0cnVlOwoJCX0KCX0KCglpZiAoJHplbV9jb250 YWN0X3N1Ym1pdCBhbmQgJG5vbmNlIGFuZCAhJHJlbm9uY2UpCgl7CgkJJHplbV9jb250YWN0 X25vbmNlID0gJG5vbmNlOwoJfQoKCWVsc2VpZiAoISRzaG93X2Vycm9yIG9yICRzaG93X2lu cHV0KQoJewoJCSR6ZW1fY29udGFjdF9ub25jZSA9IG1kNSh1bmlxaWQocmFuZCgpLCB0cnVl KSk7CgkJc2FmZV9pbnNlcnQoJ3R4cF9kaXNjdXNzX25vbmNlJywgImlzc3VlX3RpbWUgPSBu b3coKSwgbm9uY2UgPSAnJHplbV9jb250YWN0X25vbmNlJyIpOwoJfQoKCSRmb3JtID0gKCRm b3JtKSA/IGZldGNoX2Zvcm0oJGZvcm0pIDogJHRoaW5nOwoKCWlmIChlbXB0eSgkZm9ybSkp Cgl7CgkJJGZvcm0gPSAnCjx0eHA6emVtX2NvbnRhY3RfdGV4dCBsYWJlbD0iJy56ZW1fY29u dGFjdF9nVHh0KCduYW1lJykuJyIgLz48YnIgLz4KPHR4cDp6ZW1fY29udGFjdF9lbWFpbCAv PjxiciAvPicuCigkc2VuZF9hcnRpY2xlID8gJzx0eHA6emVtX2NvbnRhY3RfZW1haWwgc2Vu ZF9hcnRpY2xlPSIxIiBsYWJlbD0iJy56ZW1fY29udGFjdF9nVHh0KCdyZWNpcGllbnQnKS4n IiAvPjxiciAvPicgOiAnJykuCic8dHhwOnplbV9jb250YWN0X3RleHRhcmVhIC8+PGJyIC8+ Cjx0eHA6emVtX2NvbnRhY3Rfc3VibWl0IC8+Cic7Cgl9CgoJJGZvcm0gPSBwYXJzZSgkZm9y bSk7CgoJaWYgKCR0b19mb3JtKQoJewoJCSR0byA9IHBhcnNlKGZldGNoX2Zvcm0oJHRvX2Zv cm0pKTsKCX0KCglpZiAoISR0byBhbmQgISRzZW5kX2FydGljbGUpCgl7CgkJcmV0dXJuIHpl bV9jb250YWN0X2dUeHQoJ3RvX21pc3NpbmcnKTsKCX0KCgkkb3V0ID0gJyc7CgoJaWYgKCEk emVtX2NvbnRhY3Rfc3VibWl0KSB7CgkgICMgZG9uJ3Qgc2hvdyBlcnJvcnMgb3Igc2VuZCBt YWlsCgl9CgoJZWxzZWlmICghZW1wdHkoJHplbV9jb250YWN0X2Vycm9yKSkKCXsKCQlpZiAo JHNob3dfZXJyb3Igb3IgISRzaG93X2lucHV0KQoJCXsKCQkJJG91dCAuPSBuLic8dWwgY2xh c3M9InplbUVycm9yIj4nOwoKCQkJZm9yZWFjaCAoYXJyYXlfdW5pcXVlKCR6ZW1fY29udGFj dF9lcnJvcikgYXMgJGVycm9yKQoJCQl7CgkJCQkkb3V0IC49IG4udC4nPGxpPicuJGVycm9y Lic8L2xpPic7CgkJCX0KCgkJCSRvdXQgLj0gbi4nPC91bD4nOwoKCQkJaWYgKCEkc2hvd19p bnB1dCkgcmV0dXJuICRvdXQ7CgkJfQoJfQoKCWVsc2VpZiAoJHNob3dfaW5wdXQgYW5kIGlz X2FycmF5KCR6ZW1fY29udGFjdF9mb3JtKSkKCXsKCQkvLy8gbG9hZCBhbmQgY2hlY2sgc3Bh bSBwbHVnaW5zLwoJCWNhbGxiYWNrX2V2ZW50KCd6ZW1jb250YWN0LnN1Ym1pdCcpOwoJCSRl dmFsdWF0aW9uID0mIGdldF96ZW1jb250YWN0X2V2YWx1YXRvcigpOwoJCSRjbGVhbiA9ICRl dmFsdWF0aW9uLT5nZXRfemVtY29udGFjdF9zdGF0dXMoKTsKCQlpZiAoJGNsZWFuICE9IDAp IHsKCQkJcmV0dXJuIHplbV9jb250YWN0X2dUeHQoJ3NwYW0nKTsKCQl9CgoJCWlmICgkZnJv bV9mb3JtKQoJCXsKCQkJJGZyb20gPSBwYXJzZShmZXRjaF9mb3JtKCRmcm9tX2Zvcm0pKTsK CQl9CgoJCWlmICgkc3ViamVjdF9mb3JtKQoJCXsKCQkJJHN1YmplY3QgPSBwYXJzZShmZXRj aF9mb3JtKCRzdWJqZWN0X2Zvcm0pKTsKCQl9CgoJCSRzZXAgPSAhaXNfd2luZG93cygpID8g IlxuIiA6ICJcclxuIjsKCgkJJG1zZyA9IGFycmF5KCk7CgoJCWZvcmVhY2ggKCR6ZW1fY29u dGFjdF9sYWJlbHMgYXMgJG5hbWUgPT4gJGxhYmVsKQoJCXsKCQkJaWYgKCF0cmltKCR6ZW1f Y29udGFjdF92YWx1ZXNbJG5hbWVdKSkgY29udGludWU7CgkJCSRtc2dbXSA9ICRsYWJlbC4n OiAnLiR6ZW1fY29udGFjdF92YWx1ZXNbJG5hbWVdOwoJCX0KCgkJaWYgKCRzZW5kX2FydGlj bGUpCgkJewoJCQlnbG9iYWwgJHRoaXNhcnRpY2xlOwoJCQkkc3ViamVjdCA9IHN0cl9yZXBs YWNlKCcmIzM4OycsICcmJywgJHRoaXNhcnRpY2xlWyd0aXRsZSddKTsKCQkJJG1zZ1tdID0g cGVybWxpbmt1cmwoJHRoaXNhcnRpY2xlKTsKCQkJJG1zZ1tdID0gJHN1YmplY3Q7CgkJCSRz X2FyID0gYXJyYXkoJyYjODIxNjsnLCAnJiM4MjE3OycsICcmIzgyMjA7JywgJyYjODIyMTsn LCAnJiM4MjE3OycsICcmIzgyNDI7JywgJyYjODI0MzsnLCAnJiM4MjMwOycsICcmIzgyMTE7 JywgJyYjODIxMjsnLCAnJiMyMTU7JywgJyYjODQ4MjsnLCAnJiMxNzQ7JywgJyYjMTY5Oycs ICcmbHQ7JywgJyZndDsnLCAnJnF1b3Q7JywgJyZhbXA7JywgJyYjMzg7JywgIlx0IiwgJzxw Jyk7CgkJCWlmICgkcHJlZnNbJ292ZXJyaWRlX2VtYWlsY2hhcnNldCddIGFuZCBpc19jYWxs YWJsZSgndXRmOF9kZWNvZGUnKSkgewoJCQkJJHJfYXIgPSBhcnJheSgiJyIsICInIiwgJyIn LCAnIicsICInIiwgIiciLCAnIicsICcuLi4nLCAnLScsICctLScsICd4JywgJ1t0bV0nLCAn KHIpJywgJyhjKScsICc8JywgJz4nLCAnIicsICcmJywgJyYnLCAnICcsICJcbjxwIik7CgkJ CX0KCQkJZWxzZQoJCQl7CgkJCQkkcl9hciA9IGFycmF5KCfigJgnLCAn4oCZJywgJ+KAnCcs ICfigJ0nLCAn4oCZJywgJ+KAsicsICfigLMnLCAn4oCmJywgJ+KAkycsICfigJQnLCAnw5cn LCAn4oSiJywgJ8KuJywgJ8KpJywgJzwnLCAnPicsICciJywgJyYnLCAnJicsICcgJywgIlxu PHAiKTsKCQkJfQoJCQkkbXNnW10gPSB0cmltKHN0cmlwX3RhZ3Moc3RyX3JlcGxhY2UoJHNf YXIsJHJfYXIsKHRyaW0oc3RyaXBfdGFncygkdGhpc2FydGljbGVbJ2V4Y2VycHQnXSkpID8g JHRoaXNhcnRpY2xlWydleGNlcnB0J10gOiAkdGhpc2FydGljbGVbJ2JvZHknXSkpKSk7CgkJ CWlmIChlbXB0eSgkemVtX2NvbnRhY3RfcmVjaXBpZW50KSkKCQkJewoJCQkJcmV0dXJuIHpl bV9jb250YWN0X2dUeHQoJ2ZpZWxkX21pc3NpbmcnLCB6ZW1fY29udGFjdF9nVHh0KCdyZWNp cGllbnQnKSk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkdG8gPSAkemVtX2NvbnRhY3RfcmVj aXBpZW50OwoJCQl9CgkJfQoKCQkkbXNnID0gam9pbigiXG5cbiIsICRtc2cpOwoJCSRtc2cg PSBzdHJfcmVwbGFjZSgiXHJcbiIsICJcbiIsICRtc2cpOwoJCSRtc2cgPSBzdHJfcmVwbGFj ZSgiXHIiLCAiXG4iLCAkbXNnKTsKCQkkbXNnID0gc3RyX3JlcGxhY2UoIlxuIiwgJHNlcCwg JG1zZyk7CgoJCWlmICgkZnJvbSkKCQl7CgkJCSRyZXBseSA9ICR6ZW1fY29udGFjdF9mcm9t OwoJCX0KCgkJZWxzZQoJCXsKCQkJJGZyb20gPSAkemVtX2NvbnRhY3RfZnJvbTsKCQkJJHJl cGx5ID0gJyc7CgkJfQoKCQkkZnJvbSAgICA9IHplbV9jb250YWN0X3N0cmlwKCRmcm9tKTsK CQkkdG8gICAgICA9IHplbV9jb250YWN0X3N0cmlwKCR0byk7CgkJJHN1YmplY3QgPSB6ZW1f Y29udGFjdF9zdHJpcCgkc3ViamVjdCk7CgkJJHJlcGx5ICAgPSB6ZW1fY29udGFjdF9zdHJp cCgkcmVwbHkpOwoJCSRtc2cgICAgID0gemVtX2NvbnRhY3Rfc3RyaXAoJG1zZywgRkFMU0Up OwoKCQlpZiAoJHByZWZzWydvdmVycmlkZV9lbWFpbGNoYXJzZXQnXSBhbmQgaXNfY2FsbGFi bGUoJ3V0ZjhfZGVjb2RlJykpCgkJewoJCQkkY2hhcnNldCA9ICdJU08tODg1OS0xJzsKCQkJ JHN1YmplY3QgPSB1dGY4X2RlY29kZSgkc3ViamVjdCk7CgkJCSRtc2cgICAgID0gdXRmOF9k ZWNvZGUoJG1zZyk7CgkJfQoKCQllbHNlCgkJewoJCQkkY2hhcnNldCA9ICdVVEYtOCc7CgkJ fQoKCQkkc3ViamVjdCA9IHplbV9jb250YWN0X21haWxoZWFkZXIoJHN1YmplY3QsICd0ZXh0 Jyk7CgoJCSRoZWFkZXJzID0gJ0Zyb206ICcuJGZyb20uCgkJCSgkcmVwbHkgPyAoJHNlcC4n UmVwbHktVG86ICcuJHJlcGx5KSA6ICcnKS4KCQkJJHNlcC4nWC1NYWlsZXI6IFRleHRwYXR0 ZXJuICh6ZW1fY29udGFjdF9yZWJvcm4pJy4KCQkJJHNlcC4nWC1PcmlnaW5hdGluZy1JUDog Jy56ZW1fY29udGFjdF9zdHJpcCgoIWVtcHR5KCRfU0VSVkVSWydIVFRQX1hfRk9SV0FSREVE X0ZPUiddKSA/ICRfU0VSVkVSWydIVFRQX1hfRk9SV0FSREVEX0ZPUiddLicgdmlhICcgOiAn JykuJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10pLgoJCQkkc2VwLidDb250ZW50LVRyYW5zZmVy LUVuY29kaW5nOiA4Yml0Jy4KCQkJJHNlcC4nQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBj aGFyc2V0PSInLiRjaGFyc2V0LiciJzsKCgkJc2FmZV91cGRhdGUoJ3R4cF9kaXNjdXNzX25v bmNlJywgInVzZWQgPSAnMScsIGlzc3VlX3RpbWUgPSBub3coKSIsICJub25jZSA9ICckbm9u Y2UnIik7CgoJCWlmIChtYWlsKCR0bywgJHN1YmplY3QsICRtc2csICRoZWFkZXJzKSkKCQl7 CgkJCSRfUE9TVCA9IGFycmF5KCk7CgoJCQlpZiAoJGNvcHlzZW5kZXIgYW5kICR6ZW1fY29u dGFjdF9mcm9tKQoJCQl7CgkJCQltYWlsKHplbV9jb250YWN0X3N0cmlwKCR6ZW1fY29udGFj dF9mcm9tKSwgJHN1YmplY3QsICRtc2csICRoZWFkZXJzKTsKCQkJfQoKCQkJaWYgKCRyZWRp cmVjdCkKCQkJewoJCQkJd2hpbGUgKEBvYl9lbmRfY2xlYW4oKSk7CgkJCQkkdXJpID0gaHUu bHRyaW0oJHJlZGlyZWN0LCcvJyk7CgkJCQlpZiAoZW1wdHkoJF9TRVJWRVJbJ0ZDR0lfUk9M RSddKSBhbmQgZW1wdHkoJF9FTlZbJ0ZDR0lfUk9MRSddKSkKCQkJCXsKCQkJCQl0eHBfc3Rh dHVzX2hlYWRlcignMzAzIFNlZSBPdGhlcicpOwoJCQkJCWhlYWRlcignTG9jYXRpb246ICcu JHVyaSk7CgkJCQkJaGVhZGVyKCdDb25uZWN0aW9uOiBjbG9zZScpOwoJCQkJCWhlYWRlcign Q29udGVudC1MZW5ndGg6IDAnKTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkdXJpID0g aHRtbHNwZWNpYWxjaGFycygkdXJpKTsKCQkJCQkkcmVmcmVzaCA9IHplbV9jb250YWN0X2dU eHQoJ3JlZnJlc2gnKTsKCQkJCQllY2hvIDw8PEVORAo8IURPQ1RZUEUgaHRtbCBQVUJMSUMg Ii0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53 My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHht bG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWw6bGFuZz0iZW4iIGxhbmc9 ImVuIj4KPGhlYWQ+Cgk8dGl0bGU+JHNpdGVuYW1lPC90aXRsZT4KCTxtZXRhIGh0dHAtZXF1 aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAv PgoJPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDt1cmw9JHVyaSIgLz4K PC9oZWFkPgo8Ym9keT4KPGEgaHJlZj0iJHVyaSI+JHJlZnJlc2g8L2E+CjwvYm9keT4KPC9o dG1sPgpFTkQ7CgkJCQl9CgkJCQlleGl0OwoJCQl9CgoJCQllbHNlCgkJCXsKCQkJCXJldHVy biAnPGRpdiBjbGFzcz0iemVtVGhhbmtzIiBpZD0iemNyJy4kemVtX2NvbnRhY3RfZm9ybV9p ZC4nIj4nIC4KCQkJCQkoJHRoYW5rc19mb3JtID8gZmV0Y2hfZm9ybSgkdGhhbmtzX2Zvcm0p IDogJHRoYW5rcykgLgoJCQkJCSc8L2Rpdj4nOwoJCQl9CgkJfQoKCQllbHNlCgkJewoJCQkk b3V0IC49IGdyYWYoemVtX2NvbnRhY3RfZ1R4dCgnbWFpbF9zb3JyeScpKTsKCQl9Cgl9CgoJ aWYgKCRzaG93X2lucHV0IGFuZCAhJHNlbmRfYXJ0aWNsZSBvciBncHMoJ3plbV9jb250YWN0 X3NlbmRfYXJ0aWNsZScpKQoJewoJCXJldHVybiAnPGZvcm0gbWV0aG9kPSJwb3N0IicuKCgh JHNob3dfZXJyb3IgYW5kICR6ZW1fY29udGFjdF9lcnJvcikgPyAnJyA6ICcgaWQ9Inpjcicu JHplbV9jb250YWN0X2Zvcm1faWQuJyInKS4nIGNsYXNzPSJ6ZW1Db250YWN0Rm9ybSIgYWN0 aW9uPSInLmh0bWxzcGVjaWFsY2hhcnMoc2VydmVyU2V0KCdSRVFVRVNUX1VSSScpKS4nI3pj cicuJHplbV9jb250YWN0X2Zvcm1faWQuJyI+Jy4KCQkJKCAkbGFiZWwgPyBuLic8ZmllbGRz ZXQ+JyA6IG4uJzxkaXY+JyApLgoJCQkoICRsYWJlbCA/IG4uJzxsZWdlbmQ+Jy5odG1sc3Bl Y2lhbGNoYXJzKCRsYWJlbCkuJzwvbGVnZW5kPicgOiAnJyApLgoJCQkkb3V0LgoJCQluLic8 aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ6ZW1fY29udGFjdF9ub25jZSIgdmFsdWU9Iicu JHplbV9jb250YWN0X25vbmNlLiciIC8+Jy4KCQkJbi4nPGlucHV0IHR5cGU9ImhpZGRlbiIg bmFtZT0iemVtX2NvbnRhY3RfZm9ybV9pZCIgdmFsdWU9IicuJHplbV9jb250YWN0X2Zvcm1f aWQuJyIgLz4nLgoJCQkkZm9ybS4KCQkJY2FsbGJhY2tfZXZlbnQoJ3plbWNvbnRhY3QuZm9y bScpLgoJCQkoICRsYWJlbCA/IChuLic8L2ZpZWxkc2V0PicpIDogKG4uJzwvZGl2PicpICku CgkJCW4uJzwvZm9ybT4nOwoJfQoKCXJldHVybiAnJzsKfQoKZnVuY3Rpb24gemVtX2NvbnRh Y3Rfc3RyaXAoJHN0ciwgJGhlYWRlciA9IFRSVUUpIHsKCWlmICgkaGVhZGVyKSAkc3RyID0g c3RyaXBfcm4oJHN0cik7CglyZXR1cm4gcHJlZ19yZXBsYWNlKCcvW1x4MDBdLycsICcgJywg JHN0cik7Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X3RleHQoJGF0dHMpCnsKCWdsb2JhbCAk emVtX2NvbnRhY3RfZXJyb3IsICR6ZW1fY29udGFjdF9zdWJtaXQ7CgoJZXh0cmFjdCh6ZW1f Y29udGFjdF9sQXR0cyhhcnJheSgKCQknYnJlYWsnCQk9PiBiciwKCQknZGVmYXVsdCcJPT4g JycsCgkJJ2lzRXJyb3InCT0+ICcnLAoJCSdsYWJlbCcJCT0+IHplbV9jb250YWN0X2dUeHQo J3RleHQnKSwKCQknbWF4JwkJPT4gMTAwLAoJCSdtaW4nCQk9PiAwLAoJCSduYW1lJwkJPT4g JycsCgkJJ3JlcXVpcmVkJwk9PiAxLAoJCSdzaXplJwkJPT4gJycKCSksICRhdHRzKSk7CgoJ JG1pbiA9IGludHZhbCgkbWluKTsKCSRtYXggPSBpbnR2YWwoJG1heCk7Cgkkc2l6ZSA9IGlu dHZhbCgkc2l6ZSk7CgoJaWYgKGVtcHR5KCRuYW1lKSkgJG5hbWUgPSB6ZW1fY29udGFjdF9s YWJlbDJuYW1lKCRsYWJlbCk7CgoJaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQpCgl7CgkJJHZh bHVlID0gdHJpbShwcygkbmFtZSkpOwoJCSR1dGY4bGVuID0gcHJlZ19tYXRjaF9hbGwoIi8u L3N1IiwgJHZhbHVlLCAkdXRmOGFyKTsKCQkkaGxhYmVsID0gaHRtbHNwZWNpYWxjaGFycygk bGFiZWwpOwoKCQlpZiAoc3RybGVuKCR2YWx1ZSkpCgkJewoJCQlpZiAoISR1dGY4bGVuKQoJ CQl7CgkJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ2ludmFs aWRfdXRmOCcsICRobGFiZWwpOwoJCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsKCQkJ fQoKCQkJZWxzZWlmICgkbWluIGFuZCAkdXRmOGxlbiA8ICRtaW4pCgkJCXsKCQkJCSR6ZW1f Y29udGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnbWluX3dhcm5pbmcnLCAkaGxh YmVsLCAkbWluKTsKCQkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7CgkJCX0KCgkJCWVs c2VpZiAoJG1heCBhbmQgJHV0ZjhsZW4gPiAkbWF4KQoJCQl7CgkJCQkkemVtX2NvbnRhY3Rf ZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ21heF93YXJuaW5nJywgJGhsYWJlbCwgJG1h eCk7CgkJCQkkaXNFcnJvciA9ICJlcnJvckVsZW1lbnQiOwoJCQkJIyR2YWx1ZSA9IGpvaW4o JycsYXJyYXlfc2xpY2UoJGFyWzBdLDAsJG1heCkpOwoJCQl9CgoJCQllbHNlCgkJCXsKCQkJ CXplbV9jb250YWN0X3N0b3JlKCRuYW1lLCAkbGFiZWwsICR2YWx1ZSk7CgkJCX0KCQl9CgkJ ZWxzZWlmICgkcmVxdWlyZWQpCgkJewoJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9j b250YWN0X2dUeHQoJ2ZpZWxkX21pc3NpbmcnLCAkaGxhYmVsKTsKCQkJJGlzRXJyb3IgPSAi ZXJyb3JFbGVtZW50IjsKCQl9Cgl9CgoJZWxzZQoJewoJCSR2YWx1ZSA9ICRkZWZhdWx0OwoJ fQoKCSRzaXplID0gKCRzaXplKSA/ICcgc2l6ZT0iJy4kc2l6ZS4nIicgOiAnJzsKCSRtYXhs ZW5ndGggPSAoJG1heCkgPyAnIG1heGxlbmd0aD0iJy4kbWF4LiciJyA6ICcnOwoKCSR6ZW1S ZXF1aXJlZCA9ICRyZXF1aXJlZCA/ICd6ZW1SZXF1aXJlZCcgOiAnJzsKCiAgICAgICAgcmV0 dXJuICc8bGFiZWwgZm9yPSInLiRuYW1lLiciIGNsYXNzPSJ6ZW1UZXh0ICcuJHplbVJlcXVp cmVkLiRpc0Vycm9yLicgJy4kbmFtZS4nIj4nLmh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKS4n PC9sYWJlbD4nLiRicmVhay4KCQknPGlucHV0IHR5cGU9InRleHQiIGlkPSInLiRuYW1lLici IGNsYXNzPSJ6ZW1UZXh0ICcuJHplbVJlcXVpcmVkLiRpc0Vycm9yLiciIG5hbWU9IicuJG5h bWUuJyIgdmFsdWU9IicuaHRtbHNwZWNpYWxjaGFycygkdmFsdWUpLiciJy4kc2l6ZS4kbWF4 bGVuZ3RoLicgLz4nOwp9CgpmdW5jdGlvbiB6ZW1fY29udGFjdF90ZXh0YXJlYSgkYXR0cykK ewoJZ2xvYmFsICR6ZW1fY29udGFjdF9lcnJvciwgJHplbV9jb250YWN0X3N1Ym1pdDsKCgll eHRyYWN0KHplbV9jb250YWN0X2xBdHRzKGFycmF5KAoJCSdicmVhaycJCT0+IGJyLAoJCSdj b2xzJwkJPT4gNTgsCgkJJ2RlZmF1bHQnCT0+ICcnLAoJCSdpc0Vycm9yJwk9PiAnJywKCQkn bGFiZWwnCQk9PiB6ZW1fY29udGFjdF9nVHh0KCdtZXNzYWdlJyksCgkJJ21heCcJCT0+IDEw MDAwLAoJCSdtaW4nCQk9PiAwLAoJCSduYW1lJwkJPT4gJycsCgkJJ3JlcXVpcmVkJwk9PiAx LAoJCSdyb3dzJwkJPT4gOAoJKSwgJGF0dHMpKTsKCgkkbWluID0gaW50dmFsKCRtaW4pOwoJ JG1heCA9IGludHZhbCgkbWF4KTsKCSRjb2xzID0gaW50dmFsKCRjb2xzKTsKCSRyb3dzID0g aW50dmFsKCRyb3dzKTsKCglpZiAoZW1wdHkoJG5hbWUpKSAkbmFtZSA9IHplbV9jb250YWN0 X2xhYmVsMm5hbWUoJGxhYmVsKTsKCglpZiAoJHplbV9jb250YWN0X3N1Ym1pdCkKCXsKCQkk dmFsdWUgPSBwcmVnX3JlcGxhY2UoJy9eXHMqW1xyXG5dLycsICcnLCBydHJpbShwcygkbmFt ZSkpKTsKCQkkdXRmOGxlbiA9IHByZWdfbWF0Y2hfYWxsKCIvLi9zdSIsIGx0cmltKCR2YWx1 ZSksICR1dGY4YXIpOwoJCSRobGFiZWwgPSBodG1sc3BlY2lhbGNoYXJzKCRsYWJlbCk7CgoJ CWlmIChzdHJsZW4obHRyaW0oJHZhbHVlKSkpCgkJewoJCQlpZiAoISR1dGY4bGVuKQoJCQl7 CgkJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ2ludmFsaWRf dXRmOCcsICRobGFiZWwpOwoJCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsKCQkJfQoK CQkJZWxzZWlmICgkbWluIGFuZCAkdXRmOGxlbiA8ICRtaW4pCgkJCXsKCQkJCSR6ZW1fY29u dGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnbWluX3dhcm5pbmcnLCAkaGxhYmVs LCAkbWluKTsKCQkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7CgkJCX0KCgkJCWVsc2Vp ZiAoJG1heCBhbmQgJHV0ZjhsZW4gPiAkbWF4KQoJCQl7CgkJCQkkemVtX2NvbnRhY3RfZXJy b3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ21heF93YXJuaW5nJywgJGhsYWJlbCwgJG1heCk7 CgkJCQkkaXNFcnJvciA9ICJlcnJvckVsZW1lbnQiOwoJCQkJIyR2YWx1ZSA9IGpvaW4oJycs YXJyYXlfc2xpY2UoJHV0ZjhhclswXSwwLCRtYXgpKTsKCQkJfQoKCQkJZWxzZQoJCQl7CgkJ CQl6ZW1fY29udGFjdF9zdG9yZSgkbmFtZSwgJGxhYmVsLCAkdmFsdWUpOwoJCQl9CgkJfQoK CQllbHNlaWYgKCRyZXF1aXJlZCkKCQl7CgkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVt X2NvbnRhY3RfZ1R4dCgnZmllbGRfbWlzc2luZycsICRobGFiZWwpOwoJCQkkaXNFcnJvciA9 ICJlcnJvckVsZW1lbnQiOwoJCX0KCX0KCgllbHNlCgl7CgkJJHZhbHVlID0gJGRlZmF1bHQ7 Cgl9CgoJJHplbVJlcXVpcmVkID0gJHJlcXVpcmVkID8gJ3plbVJlcXVpcmVkJyA6ICcnOwoK CXJldHVybiAnPGxhYmVsIGZvcj0iJy4kbmFtZS4nIiBjbGFzcz0iemVtVGV4dGFyZWEgJy4k emVtUmVxdWlyZWQuJGlzRXJyb3IuJyAnLiRuYW1lLiciPicuaHRtbHNwZWNpYWxjaGFycygk bGFiZWwpLic8L2xhYmVsPicuJGJyZWFrLgoJCSc8dGV4dGFyZWEgaWQ9IicuJG5hbWUuJyIg Y2xhc3M9InplbVRleHRhcmVhICcuJHplbVJlcXVpcmVkLiRpc0Vycm9yLiciIG5hbWU9Iicu JG5hbWUuJyIgY29scz0iJy4kY29scy4nIiByb3dzPSInLiRyb3dzLiciPicuaHRtbHNwZWNp YWxjaGFycygkdmFsdWUpLic8L3RleHRhcmVhPic7Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0 X2VtYWlsKCRhdHRzKQp7CglnbG9iYWwgJHplbV9jb250YWN0X2Vycm9yLCAkemVtX2NvbnRh Y3Rfc3VibWl0LCAkemVtX2NvbnRhY3RfZnJvbSwgJHplbV9jb250YWN0X3JlY2lwaWVudDsK CglleHRyYWN0KHplbV9jb250YWN0X2xBdHRzKGFycmF5KAoJCSdkZWZhdWx0Jwk9PiAnJywK CQknaXNFcnJvcicJPT4gJycsCgkJJ2xhYmVsJwkJPT4gemVtX2NvbnRhY3RfZ1R4dCgnZW1h aWwnKSwKCQknbWF4JwkJPT4gMTAwLAoJCSdtaW4nCQk9PiAwLAoJCSduYW1lJwkJPT4gJycs CgkJJ3JlcXVpcmVkJwk9PiAxLAoJCSdicmVhaycJCT0+IGJyLAoJCSdzaXplJwkJPT4gJycs CgkJJ3NlbmRfYXJ0aWNsZScJPT4gMAoJKSwgJGF0dHMpKTsKCglpZiAoZW1wdHkoJG5hbWUp KSAkbmFtZSA9IHplbV9jb250YWN0X2xhYmVsMm5hbWUoJGxhYmVsKTsKCgkkZW1haWwgPSAk emVtX2NvbnRhY3Rfc3VibWl0ID8gdHJpbShwcygkbmFtZSkpIDogJGRlZmF1bHQ7CgoJaWYg KCR6ZW1fY29udGFjdF9zdWJtaXQgYW5kIHN0cmxlbigkZW1haWwpKQoJewoJCWlmICghaXNf dmFsaWRfZW1haWwoJGVtYWlsKSkKCQl7CgkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVt X2NvbnRhY3RfZ1R4dCgnaW52YWxpZF9lbWFpbCcsIGh0bWxzcGVjaWFsY2hhcnMoJGVtYWls KSk7CgkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7CgkJfQoKCQllbHNlCgkJewoJCQlw cmVnX21hdGNoKCIvQCguKykkLyIsICRlbWFpbCwgJG1hdGNoKTsKCQkJJGRvbWFpbiA9ICRt YXRjaFsxXTsKCgkJCWlmIChpc19jYWxsYWJsZSgnY2hlY2tkbnNycicpIGFuZCBjaGVja2Ru c3JyKCd0ZXh0cGF0dGVybi5jb20uJywnQScpIGFuZCAhY2hlY2tkbnNycigkZG9tYWluLicu JywnTVgnKSBhbmQgIWNoZWNrZG5zcnIoJGRvbWFpbi4nLicsJ0EnKSkKCQkJewoJCQkJJHpl bV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9nVHh0KCdpbnZhbGlkX2hvc3QnLCBo dG1sc3BlY2lhbGNoYXJzKCRkb21haW4pKTsKCQkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVu dCI7CgkJCX0KCgkJCWVsc2UKCQkJewoJCQkJaWYgKCRzZW5kX2FydGljbGUpIHsKCQkJCQkk emVtX2NvbnRhY3RfcmVjaXBpZW50ID0gJGVtYWlsOwoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJ JHplbV9jb250YWN0X2Zyb20gPSAkZW1haWw7CgkJCQl9CgkJCX0KCQl9Cgl9CgoJcmV0dXJu IHplbV9jb250YWN0X3RleHQoYXJyYXkoCgkJJ2RlZmF1bHQnCT0+ICRlbWFpbCwKCQknaXNF cnJvcicJPT4gJGlzRXJyb3IsCgkJJ2xhYmVsJwkJPT4gJGxhYmVsLAoJCSdtYXgnCQk9PiAk bWF4LAoJCSdtaW4nCQk9PiAkbWluLAoJCSduYW1lJwkJPT4gJG5hbWUsCgkJJ3JlcXVpcmVk Jwk9PiAkcmVxdWlyZWQsCgkJJ2JyZWFrJwkJPT4gJGJyZWFrLAoJCSdzaXplJwkJPT4gJHNp emUKCSkpOwp9CgpmdW5jdGlvbiB6ZW1fY29udGFjdF9zZWxlY3QoJGF0dHMpCnsKCWdsb2Jh bCAkemVtX2NvbnRhY3RfZXJyb3IsICR6ZW1fY29udGFjdF9zdWJtaXQ7CgoJZXh0cmFjdCh6 ZW1fY29udGFjdF9sQXR0cyhhcnJheSgKCQknbmFtZScJCT0+ICcnLAoJCSdicmVhaycJCT0+ ICcgJywKCQknZGVsaW1pdGVyJwk9PiAnLCcsCgkJJ2lzRXJyb3InCT0+ICcnLAoJCSdsYWJl bCcJCT0+IHplbV9jb250YWN0X2dUeHQoJ29wdGlvbicpLAoJCSdsaXN0JwkJPT4gemVtX2Nv bnRhY3RfZ1R4dCgnZ2VuZXJhbF9pbnF1aXJ5JyksCgkJJ3JlcXVpcmVkJwk9PiAxLAoJCSdz ZWxlY3RlZCcJPT4gJycKCSksICRhdHRzKSk7CgoJaWYgKGVtcHR5KCRuYW1lKSkgJG5hbWUg PSB6ZW1fY29udGFjdF9sYWJlbDJuYW1lKCRsYWJlbCk7CgoJJGxpc3QgPSBhcnJheV9tYXAo J3RyaW0nLCBleHBsb2RlKCRkZWxpbWl0ZXIsIHByZWdfcmVwbGFjZSgnL1tcclxuXHRcc10r LycsICcgJywkbGlzdCkpKTsKCglpZiAoJHplbV9jb250YWN0X3N1Ym1pdCkKCXsKCQkkdmFs dWUgPSB0cmltKHBzKCRuYW1lKSk7CgoJCWlmIChzdHJsZW4oJHZhbHVlKSkKCQl7CgkJCWlm IChpbl9hcnJheSgkdmFsdWUsICRsaXN0KSkKCQkJewoJCQkJemVtX2NvbnRhY3Rfc3RvcmUo JG5hbWUsICRsYWJlbCwgJHZhbHVlKTsKCQkJfQoKCQkJZWxzZQoJCQl7CgkJCQkkemVtX2Nv bnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ2ludmFsaWRfdmFsdWUnLCBodG1s c3BlY2lhbGNoYXJzKCRsYWJlbCksIGh0bWxzcGVjaWFsY2hhcnMoJHZhbHVlKSk7CgkJCQkk aXNFcnJvciA9ICJlcnJvckVsZW1lbnQiOwoJCQl9CgkJfQoKCQllbHNlaWYgKCRyZXF1aXJl ZCkKCQl7CgkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnZmll bGRfbWlzc2luZycsIGh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKSk7CgkJCSRpc0Vycm9yID0g ImVycm9yRWxlbWVudCI7CgkJfQoJfQoJZWxzZQoJewoJCSR2YWx1ZSA9ICRzZWxlY3RlZDsK CX0KCgkkb3V0ID0gJyc7CgoJZm9yZWFjaCAoJGxpc3QgYXMgJGl0ZW0pCgl7CgkJJG91dCAu PSBuLnQuJzxvcHRpb24nLigkaXRlbSA9PSAkdmFsdWUgPyAnIHNlbGVjdGVkPSJzZWxlY3Rl ZCI+JyA6ICc+JykuKHN0cmxlbigkaXRlbSkgPyBodG1sc3BlY2lhbGNoYXJzKCRpdGVtKSA6 ICcgJykuJzwvb3B0aW9uPic7Cgl9CgoJJHplbVJlcXVpcmVkID0gJHJlcXVpcmVkID8gJ3pl bVJlcXVpcmVkJyA6ICcnOwoKCXJldHVybiAnPGxhYmVsIGZvcj0iJy4kbmFtZS4nIiBjbGFz cz0iemVtU2VsZWN0ICcuJHplbVJlcXVpcmVkLiRpc0Vycm9yLicgJy4kbmFtZS4nIj4nLmh0 bWxzcGVjaWFsY2hhcnMoJGxhYmVsKS4nPC9sYWJlbD4nLiRicmVhay4KCQluLic8c2VsZWN0 IGlkPSInLiRuYW1lLiciIG5hbWU9IicuJG5hbWUuJyIgY2xhc3M9InplbVNlbGVjdCAnLiR6 ZW1SZXF1aXJlZC4kaXNFcnJvci4nIj4nLgoJCQkkb3V0LgoJCW4uJzwvc2VsZWN0Pic7Cn0K CmZ1bmN0aW9uIHplbV9jb250YWN0X2NoZWNrYm94KCRhdHRzKQp7CglnbG9iYWwgJHplbV9j b250YWN0X2Vycm9yLCAkemVtX2NvbnRhY3Rfc3VibWl0OwoKCWV4dHJhY3QoemVtX2NvbnRh Y3RfbEF0dHMoYXJyYXkoCgkJJ2JyZWFrJwkJPT4gJyAnLAoJCSdjaGVja2VkJwk9PiAwLAoJ CSdpc0Vycm9yJwk9PiAnJywKCQknbGFiZWwnCQk9PiB6ZW1fY29udGFjdF9nVHh0KCdjaGVj a2JveCcpLAoJCSduYW1lJwkJPT4gJycsCgkJJ3JlcXVpcmVkJwk9PiAxCgkpLCAkYXR0cykp OwoKCWlmIChlbXB0eSgkbmFtZSkpICRuYW1lID0gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgk bGFiZWwpOwoKCWlmICgkemVtX2NvbnRhY3Rfc3VibWl0KQoJewoJCSR2YWx1ZSA9IChib29s KSBwcygkbmFtZSk7CgoJCWlmICgkcmVxdWlyZWQgYW5kICEkdmFsdWUpCgkJewoJCQkkemVt X2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ2ZpZWxkX21pc3NpbmcnLCBo dG1sc3BlY2lhbGNoYXJzKCRsYWJlbCkpOwoJCQkkaXNFcnJvciA9ICJlcnJvckVsZW1lbnQi OwoJCX0KCgkJZWxzZQoJCXsKCQkJemVtX2NvbnRhY3Rfc3RvcmUoJG5hbWUsICRsYWJlbCwg JHZhbHVlID8gZ1R4dCgneWVzJykgOiBnVHh0KCdubycpKTsKCQl9Cgl9CgoJZWxzZSB7CgkJ JHZhbHVlID0gJGNoZWNrZWQ7Cgl9CgoJJHplbVJlcXVpcmVkID0gJHJlcXVpcmVkID8gJ3pl bVJlcXVpcmVkJyA6ICcnOwoKCXJldHVybiAnPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0i Jy4kbmFtZS4nIiBjbGFzcz0iemVtQ2hlY2tib3ggJy4kemVtUmVxdWlyZWQuJGlzRXJyb3Iu JyIgbmFtZT0iJy4kbmFtZS4nIicuCgkJKCR2YWx1ZSA/ICcgY2hlY2tlZD0iY2hlY2tlZCIn IDogJycpLicgLz4nLiRicmVhay4KCQknPGxhYmVsIGZvcj0iJy4kbmFtZS4nIiBjbGFzcz0i emVtQ2hlY2tib3ggJy4kemVtUmVxdWlyZWQuJGlzRXJyb3IuJyAnLiRuYW1lLiciPicuaHRt bHNwZWNpYWxjaGFycygkbGFiZWwpLic8L2xhYmVsPic7Cn0KCmZ1bmN0aW9uIHplbV9jb250 YWN0X3NlcnZlcmluZm8oJGF0dHMpCnsKCWdsb2JhbCAkemVtX2NvbnRhY3Rfc3VibWl0OwoK CWV4dHJhY3QoemVtX2NvbnRhY3RfbEF0dHMoYXJyYXkoCgkJJ2xhYmVsJwkJPT4gJycsCgkJ J25hbWUnCQk9PiAnJwoJKSwgJGF0dHMpKTsKCglpZiAoZW1wdHkoJG5hbWUpKSAkbmFtZSA9 IHplbV9jb250YWN0X2xhYmVsMm5hbWUoJGxhYmVsKTsKCglpZiAoc3RybGVuKCRuYW1lKSBh bmQgJHplbV9jb250YWN0X3N1Ym1pdCkKCXsKCQlpZiAoISRsYWJlbCkgJGxhYmVsID0gJG5h bWU7CgkJemVtX2NvbnRhY3Rfc3RvcmUoJG5hbWUsICRsYWJlbCwgc2VydmVyU2V0KCRuYW1l KSk7Cgl9Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X3NlY3JldCgkYXR0cywgJHRoaW5nID0g JycpCnsKCWdsb2JhbCAkemVtX2NvbnRhY3Rfc3VibWl0OwoKCWV4dHJhY3QoemVtX2NvbnRh Y3RfbEF0dHMoYXJyYXkoCgkJJ25hbWUnCT0+ICcnLAoJCSdsYWJlbCcJPT4gemVtX2NvbnRh Y3RfZ1R4dCgnc2VjcmV0JyksCgkJJ3ZhbHVlJwk9PiAnJwoJKSwgJGF0dHMpKTsKCgkkbmFt ZSA9IHplbV9jb250YWN0X2xhYmVsMm5hbWUoJG5hbWUgPyAkbmFtZSA6ICRsYWJlbCk7CgoJ aWYgKCR6ZW1fY29udGFjdF9zdWJtaXQpCgl7CgkJaWYgKCR0aGluZykgJHZhbHVlID0gdHJp bShwYXJzZSgkdGhpbmcpKTsKCQl6ZW1fY29udGFjdF9zdG9yZSgkbmFtZSwgJGxhYmVsLCAk dmFsdWUpOwoJfQoKCXJldHVybiAnJzsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3RfcmFkaW8o JGF0dHMpCnsKCWdsb2JhbCAkemVtX2NvbnRhY3RfZXJyb3IsICR6ZW1fY29udGFjdF9zdWJt aXQsICR6ZW1fY29udGFjdF92YWx1ZXM7CgoJZXh0cmFjdCh6ZW1fY29udGFjdF9sQXR0cyhh cnJheSgKCQknYnJlYWsnCQk9PiAnICcsCgkJJ2NoZWNrZWQnCT0+IDAsCgkJJ2dyb3VwJwkJ PT4gJycsCgkJJ2xhYmVsJwkJPT4gemVtX2NvbnRhY3RfZ1R4dCgnb3B0aW9uJyksCgkJJ25h bWUnCQk9PiAnJwoJKSwgJGF0dHMpKTsKCglzdGF0aWMgJGN1cl9uYW1lID0gJyc7CglzdGF0 aWMgJGN1cl9ncm91cCA9ICcnOwoKCWlmICghJG5hbWUgYW5kICEkZ3JvdXAgYW5kICEkY3Vy X25hbWUgYW5kICEkY3VyX2dyb3VwKSB7CgkJJGN1cl9ncm91cCA9IHplbV9jb250YWN0X2dU eHQoJ3JhZGlvJyk7CgkJJGN1cl9uYW1lID0gJGN1cl9ncm91cDsKCX0KCWlmICgkZ3JvdXAg YW5kICEkbmFtZSBhbmQgJGdyb3VwICE9ICRjdXJfZ3JvdXApICRuYW1lID0gJGdyb3VwOwoK CWlmICgkbmFtZSkgJGN1cl9uYW1lID0gJG5hbWU7CgllbHNlICRuYW1lID0gJGN1cl9uYW1l OwoKCWlmICgkZ3JvdXApICRjdXJfZ3JvdXAgPSAkZ3JvdXA7CgllbHNlICRncm91cCA9ICRj dXJfZ3JvdXA7CgoJJGlkICAgPSAncScubWQ1KCRuYW1lLic9PicuJGxhYmVsKTsKCSRuYW1l ID0gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgkbmFtZSk7CgoJaWYgKCR6ZW1fY29udGFjdF9z dWJtaXQpCgl7CgkJJGlzX2NoZWNrZWQgPSAocHMoJG5hbWUpID09ICRpZCk7CgoJCWlmICgk aXNfY2hlY2tlZCBvciAkY2hlY2tlZCBhbmQgIWlzc2V0KCR6ZW1fY29udGFjdF92YWx1ZXNb JG5hbWVdKSkKCQl7CgkJCXplbV9jb250YWN0X3N0b3JlKCRuYW1lLCAkZ3JvdXAsICRsYWJl bCk7CgkJfQoJfQoKCWVsc2UKCXsKCQkkaXNfY2hlY2tlZCA9ICRjaGVja2VkOwoJfQoKCXJl dHVybiAnPGlucHV0IHZhbHVlPSInLiRpZC4nIiB0eXBlPSJyYWRpbyIgaWQ9IicuJGlkLici IGNsYXNzPSJ6ZW1SYWRpbyAnLiRuYW1lLiciIG5hbWU9IicuJG5hbWUuJyInLgoJCSggJGlz X2NoZWNrZWQgPyAnIGNoZWNrZWQ9ImNoZWNrZWQiIC8+JyA6ICcgLz4nKS4kYnJlYWsuCgkJ JzxsYWJlbCBmb3I9IicuJGlkLiciIGNsYXNzPSJ6ZW1SYWRpbyAnLiRuYW1lLiciPicuaHRt bHNwZWNpYWxjaGFycygkbGFiZWwpLic8L2xhYmVsPic7Cn0KCmZ1bmN0aW9uIHplbV9jb250 YWN0X3NlbmRfYXJ0aWNsZSgkYXR0cykKewoJaWYgKCFpc3NldCgkX1JFUVVFU1RbJ3plbV9j b250YWN0X3NlbmRfYXJ0aWNsZSddKSkgewoJCSRsaW5rdGV4dCA9IChlbXB0eSgkYXR0c1sn bGlua3RleHQnXSkpID8gemVtX2NvbnRhY3RfZ1R4dCgnc2VuZF9hcnRpY2xlJykgOiAkYXR0 c1snbGlua3RleHQnXTsKCQkkam9pbiA9IChlbXB0eSgkX1NFUlZFUlsnUVVFUllfU1RSSU5H J10pKSA/ICc/JyA6ICcmJzsKCQkkaHJlZiA9ICRfU0VSVkVSWydSRVFVRVNUX1VSSSddLiRq b2luLid6ZW1fY29udGFjdF9zZW5kX2FydGljbGU9eWVzJzsKCQlyZXR1cm4gJzxhIGhyZWY9 IicuaHRtbHNwZWNpYWxjaGFycygkaHJlZikuJyI+Jy5odG1sc3BlY2lhbGNoYXJzKCRsaW5r dGV4dCkuJzwvYT4nOwoJfQoJcmV0dXJuOwp9CgpmdW5jdGlvbiB6ZW1fY29udGFjdF9zdWJt aXQoJGF0dHMsICR0aGluZykKewoJZXh0cmFjdCh6ZW1fY29udGFjdF9sQXR0cyhhcnJheSgK CQknYnV0dG9uJwk9PiAwLAoJCSdsYWJlbCcJCT0+IHplbV9jb250YWN0X2dUeHQoJ3NlbmQn KQoJKSwgJGF0dHMpKTsKCgkkbGFiZWwgPSBodG1sc3BlY2lhbGNoYXJzKCRsYWJlbCk7CgoJ aWYgKCRidXR0b24gb3Igc3RybGVuKCR0aGluZykpCgl7CgkJcmV0dXJuICc8YnV0dG9uIHR5 cGU9InN1Ym1pdCIgY2xhc3M9InplbVN1Ym1pdCIgbmFtZT0iemVtX2NvbnRhY3Rfc3VibWl0 IiB2YWx1ZT0iJy4kbGFiZWwuJyI+Jy4oJHRoaW5nID8gdHJpbShwYXJzZSgkdGhpbmcpKSA6 ICRsYWJlbCkuJzwvYnV0dG9uPic7Cgl9CgllbHNlCgl7CgkJcmV0dXJuICc8aW5wdXQgdHlw ZT0ic3VibWl0IiBjbGFzcz0iemVtU3VibWl0IiBuYW1lPSJ6ZW1fY29udGFjdF9zdWJtaXQi IHZhbHVlPSInLiRsYWJlbC4nIiAvPic7Cgl9Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X2xB dHRzKCRhcnIsICRhdHRzKQp7Cglmb3JlYWNoKGFycmF5KCdidXR0b24nLCAnY29weXNlbmRl cicsICdjaGVja2VkJywgJ3JlcXVpcmVkJywgJ3NlbmRfYXJ0aWNsZScsICdzaG93X2lucHV0 JywgJ3Nob3dfZXJyb3InKSBhcyAka2V5KQoJewoJCWlmIChpc3NldCgkYXR0c1ska2V5XSkp CgkJewoJCQkkYXR0c1ska2V5XSA9ICgkYXR0c1ska2V5XSA9PT0gJ3llcycgb3IgaW50dmFs KCRhdHRzWyRrZXldKSkgPyAxIDogMDsKCQl9Cgl9CglpZiAoaXNzZXQoJGF0dHNbJ2JyZWFr J10pIGFuZCAkYXR0c1snYnJlYWsnXSA9PSAnYnInKSAkYXR0c1snYnJlYWsnXSA9ICc8YnIg Lz4nOwoJcmV0dXJuIGxBdHRzKCRhcnIsICRhdHRzKTsKfQoKY2xhc3MgemVtY29udGFjdF9l dmFsdWF0aW9uCnsKCXZhciAkc3RhdHVzOwoKCWZ1bmN0aW9uIHplbWNvbnRhY3RfZXZhbHVh dGlvbigpIHsKCQkkdGhpcy0+c3RhdHVzID0gMDsKCX0KCglmdW5jdGlvbiBhZGRfemVtY29u dGFjdF9zdGF0dXMoJGNoZWNrKSB7CgkJJHRoaXMtPnN0YXR1cyArPSAkY2hlY2s7Cgl9CgoJ ZnVuY3Rpb24gZ2V0X3plbWNvbnRhY3Rfc3RhdHVzKCkgewoJCXJldHVybiAkdGhpcy0+c3Rh dHVzOwoJfQp9CgpmdW5jdGlvbiAmZ2V0X3plbWNvbnRhY3RfZXZhbHVhdG9yKCkKewoJc3Rh dGljICRpbnN0YW5jZTsKCglpZighaXNzZXQoJGluc3RhbmNlKSkgewoJCSRpbnN0YW5jZSA9 IG5ldyB6ZW1jb250YWN0X2V2YWx1YXRpb24oKTsKCX0KCXJldHVybiAkaW5zdGFuY2U7Cn0K CmZ1bmN0aW9uIHplbV9jb250YWN0X2xhYmVsMm5hbWUoJGxhYmVsKQp7CgkkbGFiZWwgPSB0 cmltKCRsYWJlbCk7CglpZiAoc3RybGVuKCRsYWJlbCkgPT0gMCkgcmV0dXJuICdpbnZhbGlk JzsKCWlmIChzdHJsZW4oJGxhYmVsKSA8PSAzMiBhbmQgcHJlZ19tYXRjaCgnL15bYS16QS1a XVtBLVphLXowLTk6Xy1dKiQvJywgJGxhYmVsKSkgcmV0dXJuICRsYWJlbDsKCWVsc2UgcmV0 dXJuICdxJy5tZDUoJGxhYmVsKTsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3Rfc3RvcmUoJG5h bWUsICRsYWJlbCwgJHZhbHVlKQp7CglnbG9iYWwgJHplbV9jb250YWN0X2Zvcm0sICR6ZW1f Y29udGFjdF9sYWJlbHMsICR6ZW1fY29udGFjdF92YWx1ZXM7CgkkemVtX2NvbnRhY3RfZm9y bVskbGFiZWxdID0gJHZhbHVlOwoJJHplbV9jb250YWN0X2xhYmVsc1skbmFtZV0gPSAkbGFi ZWw7CgkkemVtX2NvbnRhY3RfdmFsdWVzWyRuYW1lXSA9ICR2YWx1ZTsKfQoKZnVuY3Rpb24g emVtX2NvbnRhY3RfbWFpbGhlYWRlcigkc3RyaW5nLCAkdHlwZSkKewoJZ2xvYmFsICRwcmVm czsKCWlmICghc3Ryc3RyKCRzdHJpbmcsJz0/JykgYW5kICFwcmVnX21hdGNoKCcvW1x4MDAt XHgxRlx4N0YtXHhGRl0vJywgJHN0cmluZykpIHsKCQlpZiAoInBocmFzZSIgPT0gJHR5cGUp IHsKCQkJaWYgKHByZWdfbWF0Y2goJy9bXVsoKTw+QCw7OiIuXHg1Q10vJywgJHN0cmluZykp IHsKCQkJCSRzdHJpbmcgPSAnIicuIHN0cnRyKCRzdHJpbmcsIGFycmF5KCJcXCIgPT4gIlxc XFwiLCAnIicgPT4gJ1wiJykpIC4gJyInOwoJCQl9CgkJfQoJCWVsc2VpZiAoInRleHQiICE9 ICR0eXBlKSB7CgkJCXRyaWdnZXJfZXJyb3IoJ1Vua25vd24gZW5jb2RlX21haWxoZWFkZXIg dHlwZScsIEVfVVNFUl9XQVJOSU5HKTsKCQl9CgkJcmV0dXJuICRzdHJpbmc7Cgl9CglpZiAo JHByZWZzWydvdmVycmlkZV9lbWFpbGNoYXJzZXQnXSkgewoJCSRzdGFydCA9ICc9P0lTTy04 ODU5LTE/Qj8nOwoJCSRwY3JlICA9ICcvLnsxLDQyfS9zJzsKCX0KCWVsc2UgewoJCSRzdGFy dCA9ICc9P1VURi04P0I/JzsKCQkkcGNyZSAgPSAnLy57MSw0NX0oPz1bXHgwMC1ceDdGXHhD MC1ceEZGXXwkKS9zJzsKCX0KCSRlbmQgPSAnPz0nOwoJJHNlcCA9IGlzX3dpbmRvd3MoKSA/ ICJcclxuIiA6ICJcbiI7CglwcmVnX21hdGNoX2FsbCgkcGNyZSwgJHN0cmluZywgJG1hdGNo ZXMpOwoJcmV0dXJuICRzdGFydCAuIGpvaW4oJGVuZC4kc2VwLicgJy4kc3RhcnQsIGFycmF5 X21hcCgnYmFzZTY0X2VuY29kZScsJG1hdGNoZXNbMF0pKSAuICRlbmQ7Cn0KIjtzOjM6Im1k NSI7czozMjoiNWVlYTFmZDg5MzE3OTI1ZWYxYThlMmUyYmMyYmU0ZjgiO30=