# zem_contact_reborn v4.0.3.20 # 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 IjtzOjg6IjQuMC4zLjIwIjtzOjY6ImF1dGhvciI7czoxMzoiVFhQIENvbW11bml0eSI7czox MDoiYXV0aG9yX3VyaSI7czo1MToiaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3 dG9waWMucGhwP2lkPTIzNzI4IjtzOjExOiJkZXNjcmlwdGlvbiI7czoyNzoiRm9ybSBtYWls ZXIgZm9yIFRleHRwYXR0ZXJuIjtzOjQ6InR5cGUiO2k6MDtzOjQ6ImhlbHAiO3M6MzYzOTU6 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 aWQ9InNlbmRhcnRpY2xlIj5TZW5kIGFydGljbGU8L2gzPgoKV2l0aGluIHRoZSBjb250ZXh0 IG9mIGFuIGluZGl2aWR1YWwgYXJ0aWNsZSwgdGhpcyBwbHVnaW4gY2FuIGJlIHVzZWQgdG8g c2VuZCB0aGUgYXJ0aWNsZSAob3IgZXhjZXJwdCwgaWYgaXQgZXhpc3RzKSB0byBhbiBlbWFp bCBhZGRyZXNzIHNwZWNpZmllZCBieSB0aGUgdmlzaXRvci4gVGhpcyByZXF1aXJlcyBhdCBs ZWFzdCB0d28gdGFnczoKPHVsPgoJPGxpPjxjb2RlPnplbV9jb250YWN0PC9jb2RlPiwgdG8g Y3JlYXRlIGZvcm0gdGhhdCBpcyBpbml0aWFsbHkgaGlkZGVuIGJ5IHNldHRpbmcgdGhlIDxj b2RlPnNlbmRfYXJ0aWNsZTwvY29kZT4gYXR0cmlidXRlLjwvbGk+Cgk8bGk+PGNvZGU+emVt X2NvbnRhY3Rfc2VuZF9hcnRpY2xlPC9jb2RlPiwgdG8gY3JlYXRlIGEgJiM4MjE2O3NlbmQg YXJ0aWNsZSYjODIxNzsgbGluayB3aGljaCByZXZlYWxzIHRoZSBhZm9yZW1lbnRpb25lZCBm b3JtIHdoZW4gY2xpY2tlZC48L2xpPgo8L3VsPgoKPHByZT48Y29kZT4mbHQ7dHhwOnplbV9j b250YWN0IHNlbmRfYXJ0aWNsZT0mcXVvdDsxJnF1b3Q7IC8mZ3Q7CiZsdDt0eHA6emVtX2Nv bnRhY3Rfc2VuZF9hcnRpY2xlIC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+QnkgZGVmYXVsdCB0 aGUgZm9ybSBjb250YWlucyBmaWVsZHMgZm9yIHlvdXIgbmFtZSBhbmQgZW1haWwgYWRkcmVz cywgdGhlIHJlY2lwaWVudCYjODIxNztzIGVtYWlsIGFkZHJlc3MgYW5kIGEgcGVyc29uYWwg bWVzc2FnZSwgYnV0IHNpbWlsYXIgdG8gY29udGFjdCBmb3JtcyB5b3UgY2FuIGNyZWF0ZSB5 b3VyIG93biBmb3JtIGxheW91dC4gU29tZSB0aGluZ3MgeW91IG5lZWQgdG8ga25vdzo8YnIg Lz4KPHVsPgoJPGxpPlNldCB0aGUgPGNvZGU+c2VuZF9hcnRpY2xlPC9jb2RlPiBhdHRyaWJ1 dGUgdG8gPGNvZGU+MTwvY29kZT4gaW4gdGhlIDxjb2RlPnplbV9jb250YWN0PC9jb2RlPiB0 YWcuPC9saT4KCTxsaT5Vc2UgYSA8Y29kZT56ZW1fY29udGFjdF9lbWFpbDwvY29kZT4gdGFn IHdpdGggdGhlIDxjb2RlPnNlbmRfYXJ0aWNsZTwvY29kZT4gYXR0cmlidXRlIHNldCB0byA8 Y29kZT4xPC9jb2RlPi4gVGhpcyBmaWVsZCB3aWxsIGJlIHVzZWQgYXMgdGhlIHJlY2lwaWVu dCBlbWFpbCBhZGRyZXNzLjwvbGk+PGJyIC8+CjwvdWw+PC9wPgoKPHByZT48Y29kZT4mbHQ7 dHhwOnplbV9jb250YWN0IHRvPSZxdW90O3lvdUBleGFtcGxlLmNvbSZxdW90OyBzZW5kX2Fy dGljbGU9JnF1b3Q7MSZxdW90OyZndDsKICAmbHQ7dHhwOnplbV9jb250YWN0X2VtYWlsIGxh YmVsPSZxdW90O1JlY2lwaWVudCBFbWFpbCZxdW90OyBzZW5kX2FydGljbGU9JnF1b3Q7MSZx dW90OyAvJmd0OwogICZsdDt0eHA6emVtX2NvbnRhY3RfZW1haWwgbGFiZWw9JnF1b3Q7WW91 ciBFbWFpbCZxdW90OyAvJmd0OwogICZsdDt0eHA6emVtX2NvbnRhY3Rfc3VibWl0IGxhYmVs PSZxdW90O1NlbmQgQXJ0aWNsZSZxdW90OyAvJmd0OwombHQ7L3R4cDp6ZW1fY29udGFjdCZn dDsKCiZsdDt0eHA6emVtX2NvbnRhY3Rfc2VuZF9hcnRpY2xlIC8mZ3Q7PC9jb2RlPjwvcHJl PgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCjxoMiBpZD0idGFn cyI+VGFnczwvaDI+Cgo8cD48YSBocmVmPSIjemMiPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRh Y3QgLyZndDs8L2NvZGU+PC9hPiBwcm9kdWNlcyBhIGZsZXhpYmxlLCBjdXN0b21pc2FibGUg ZW1haWwgY29udGFjdCBmb3JtLiBJdCBpcyBpbnRlbmRlZCBmb3IgdXNlIGFzIGFuIGVucXVp cnkgZm9ybSBmb3IgY29tbWVyY2lhbCBhbmQgcHJpdmF0ZSBzaXRlcywgYW5kIGluY2x1ZGVz IHNldmVyYWwgZmVhdHVyZXMgdG8gaGVscCByZWR1Y2UgY29tbW9uIHByb2JsZW1zIHdpdGgg c3VjaCBmb3JtcyAoaW52YWxpZCBlbWFpbCBhZGRyZXNzZXMsIG1pc3NpbmcgaW5mb3JtYXRp b24pLjwvcD4KCjxwPjxhIGhyZWY9IiN6Y19zZW5kX2FydGljbGUiPjxjb2RlPiZsdDt0eHA6 emVtX2NvbnRhY3Rfc2VuZF9hcnRpY2xlIC8mZ3Q7PC9jb2RlPjwvYT4gY2FuIGJlIHVzZWQg dG8gY3JlYXRlIGEgJiM4MjIwO3NlbmQgYXJ0aWNsZSYjODIyMTsgbGluayB3aXRoaW4gYW4g YXJ0aWNsZSBmb3JtLCBjb25uZWN0aW5nIGl0IHRvIHRoZSBjb250YWN0IGZvcm0uPC9wPgoK PHA+QWxsIG90aGVyIHRhZ3MgcHJvdmlkZWQgYnkgdGhpcyBwbHVnaW4gY2FuIG9ubHkgYmUg dXNlZCBpbnNpZGUgYSA8Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0Jmd0OzwvY29kZT4gJiM4 MjMwOyA8Y29kZT4mbHQ7L3R4cDp6ZW1fY29udGFjdCZndDs8L2NvZGU+IGNvbnRhaW5lciB0 YWcgb3IgaW4gYSBUZXh0cGF0dGVybiBmb3JtIHVzZWQgYXMgdGhlIDxjb2RlPmZvcm08L2Nv ZGU+IGF0dHJpYnV0ZSBpbiB0aGUgPGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdCAvJmd0Ozwv Y29kZT4gdGFnLjwvcD4KCjxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4K Cgo8aDMgaWQ9InpjIj48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0IC8mZ3Q7PC9jb2RlPjwv aDM+Cgo8cD5NYXkgYmUgdXNlZCBhcyBhIHNlbGYtY2xvc2luZyBvciBjb250YWluZXIgdGFn LiBQbGFjZSB0aGlzIHdoZXJlIHlvdSB3YW50IHRoZSBpbnB1dCBmb3JtIHRvIGdvLiBTdGF0 dXMgYW5kIGVycm9yIG1lc3NhZ2VzLCBpZiBhbnksIHdpbGwgYmUgZGlzcGxheWVkIGJlZm9y ZSB0aGUgZm9ybS48L3A+Cgo8aDQ+QXR0cmlidXRlczwvaDQ+Cgo8dWw+Cgk8bGk+PGNvZGU+ dG89JnF1b3Q7ZW1haWwgYWRkcmVzcyZxdW90OzwvY29kZT4gPHNwYW4gY2xhc3M9InJlcXVp cmVkIj5yZXF1aXJlZDwvc3Bhbj48YnIgLz4KUmVjaXBpZW50IGVtYWlsIGFkZHJlc3MuPC9s aT4KCTxsaT48Y29kZT50b19mb3JtPSZxdW90O2Zvcm0gbmFtZSZxdW90OzwvY29kZT48YnIg Lz4KVXNlIHNwZWNpZmllZCBmb3JtIChvdmVycmlkZXMgPHN0cm9uZz50bzwvc3Ryb25nPiBh dHRyaWJ1dGUpLjwvbGk+CjwvdWw+Cgo8dWw+Cgk8bGk+PGNvZGU+ZnJvbT0mcXVvdDtlbWFp bCBhZGRyZXNzJnF1b3Q7PC9jb2RlPjxiciAvPgpFbWFpbCBhZGRyZXNzIHVzZWQgaW4gdGhl ICYjODIyMDtGcm9tOiYjODIyMTsgZmllbGQgd2hlbiBzZW5kaW5nIGVtYWlsLiBEZWZhdWx0 cyB0byB0aGUgc2VuZGVyJiM4MjE3O3MgZW1haWwgYWRkcmVzcy4gSWYgc3BlY2lmaWVkLCB0 aGUgc2VuZGVyJiM4MjE3O3MgZW1haWwgYWRkcmVzcyB3aWxsIGJlIHBsYWNlZCBpbiB0aGUg JiM4MjIwO1JlcGx5LVRvOiYjODIyMTsgZmllbGQgaW5zdGVhZC48L2xpPgoJPGxpPjxjb2Rl PmZyb21fZm9ybT0mcXVvdDtmb3JtIG5hbWUmcXVvdDs8L2NvZGU+PGJyIC8+ClVzZSBzcGVj aWZpZWQgZm9ybSAob3ZlcnJpZGVzIDxzdHJvbmc+ZnJvbTwvc3Ryb25nPiBhdHRyaWJ1dGUp LjwvbGk+CjwvdWw+Cgo8dWw+Cgk8bGk+PGNvZGU+c3ViamVjdD0mcXVvdDtzdWJqZWN0IHRl eHQmcXVvdDs8L2NvZGU+PGJyIC8+ClN1YmplY3QgdXNlZCB3aGVuIHNlbmRpbmcgYW4gZW1h aWwuIERlZmF1bHQgaXMgdGhlIHNpdGUgbmFtZS48L2xpPgoJPGxpPjxjb2RlPnN1YmplY3Rf Zm9ybT0mcXVvdDtmb3JtIG5hbWUmcXVvdDs8L2NvZGU+PGJyIC8+ClVzZSBzcGVjaWZpZWQg Zm9ybSAob3ZlcnJpZGVzIDxzdHJvbmc+c3ViamVjdDwvc3Ryb25nPiBhdHRyaWJ1dGUpLjwv bGk+CjwvdWw+Cgo8dWw+Cgk8bGk+PGNvZGU+dGhhbmtzPSZxdW90O3RleHQmcXVvdDs8L2Nv ZGU+PGJyIC8+Ck1lc3NhZ2Ugc2hvd24gYWZ0ZXIgc3VjY2Vzc2Z1bGx5IHN1Ym1pdHRpbmcg YSBtZXNzYWdlLiBEZWZhdWx0IGlzIDxzdHJvbmc+VGhhbmsgeW91LCB5b3VyIG1lc3NhZ2Ug aGFzIGJlZW4gc2VudDwvc3Ryb25nPi48L2xpPgoJPGxpPjxjb2RlPnRoYW5rc19mb3JtPSZx dW90O2Zvcm0gbmFtZSZxdW90OzwvY29kZT48YnIgLz4KVXNlIHNwZWNpZmllZCBmb3JtIChv dmVycmlkZXMgPHN0cm9uZz50aGFua3M8L3N0cm9uZz4gYXR0cmlidXRlKS48L2xpPgoJPGxp Pjxjb2RlPnJlZGlyZWN0PSZxdW90O1VSTCZxdW90OzwvY29kZT48YnIgLz4KUmVkaXJlY3Qg dG8gc3BlY2lmaWVkIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IChvdmVycmlkZXMg PHN0cm9uZz50aGFua3M8L3N0cm9uZz4gYW5kIDxzdHJvbmc+dGhhbmtzX2Zvcm08L3N0cm9u Zz4gYXR0cmlidXRlcykuIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IG11c3QgYmUg cmVsYXRpdmUgdG8gdGhlIFRleHRwYXR0ZXJuIFNpdGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVS TDwvc3Bhbj4uIEV4YW1wbGU6IDxlbT5yZWRpcmVjdD0mIzgyMjA7bW9ua2V5JiM4MjIxOzwv ZW0+IHdvdWxkIHJlZGlyZWN0IHRvIGh0dHA6Ly9leGFtcGxlLmNvbS9tb25rZXkuPC9saT4K PC91bD4KCjx1bD4KCTxsaT48Y29kZT5sYWJlbD0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxi ciAvPgpMYWJlbCBmb3IgdGhlIGNvbnRhY3QgZm9ybS4gSWYgc2V0IHRvIGFuIGVtcHR5IHN0 cmluZywgZGlzcGxheSBvZiB0aGUgZmllbGRzZXQgYW5kIGxlZ2VuZCB0YWdzIHdpbGwgYmUg c3VwcHJlc3NlZC4gRGVmYXVsdCBpcyA8c3Ryb25nPkNvbnRhY3Q8L3N0cm9uZz4uPC9saT4K CTxsaT48Y29kZT5zZW5kX2FydGljbGU9JnF1b3Q7Ym9vbGVhbiZxdW90OzwvY29kZT48YnIg Lz4KV2hldGhlciB0byB1c2UgdGhpcyBmb3JtIHRvIDxhIGhyZWY9IiNhcnRpY2xlIj5zZW5k IGFuIGFydGljbGU8L2E+LiBBdmFpbGFibGUgdmFsdWVzOiA8c3Ryb25nPjE8L3N0cm9uZz4g KHllcyksIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8pLiBEZWZhdWx0IGlzIDxzdHJvbmc+MDwv c3Ryb25nPiAobm8pLjwvbGk+Cgk8bGk+PGNvZGU+Y29weXNlbmRlcj0mcXVvdDtib29sZWFu JnF1b3Q7PC9jb2RlPjxiciAvPgpXaGV0aGVyIHRvIHNlbmQgYSBjb3B5IG9mIHRoZSBlbWFp bCB0byB0aGUgc2VuZGVyJiM4MjE3O3MgYWRkcmVzcy4gQXZhaWxhYmxlIHZhbHVlczogPHN0 cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS4gRGVmYXVs dCBpcyA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS48L2xpPgo8L3VsPgoKPHVsPgoJPGxpPjxj b2RlPmZvcm09JnF1b3Q7Zm9ybSBuYW1lJnF1b3Q7PC9jb2RlPjxiciAvPgpVc2Ugc3BlY2lm aWVkIGZvcm0sIGNvbnRhaW5pbmcgdGhlIGxheW91dCBvZiB0aGUgY29udGFjdCBmb3JtIGZp ZWxkcy48L2xpPgoJPGxpPjxjb2RlPnNob3dfaW5wdXQ9JnF1b3Q7Ym9vbGVhbiZxdW90Ozwv Y29kZT48YnIgLz4KIFdoZXRoZXIgdG8gZGlzcGxheSB0aGUgZm9ybSBpbnB1dCBmaWVsZHMu IEF2YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKSwgPHN0cm9uZz4w PC9zdHJvbmc+IChubykuIERlZmF1bHQgaXMgPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLjwv bGk+Cgk8bGk+PGNvZGU+c2hvd19lcnJvcj0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2RlPjxi ciAvPgogV2hldGhlciB0byBkaXNwbGF5IGVycm9yIGFuZCBzdGF0dXMgbWVzc2FnZXMuIEF2 YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKSwgPHN0cm9uZz4wPC9z dHJvbmc+IChubykuIERlZmF1bHQgaXMgPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLjwvbGk+ CjwvdWw+Cgo8aDQ+RXhhbXBsZXM8L2g0PgoKPHA+U2VlIDxhIGhyZWY9IiNjb250YWN0Zm9y bSI+R2V0dGluZyBzdGFydGVkPC9hPiBhbmQgPGEgaHJlZj0iI2FkdmFuY2VkIj5BZHZhbmNl ZCBleGFtcGxlczwvYT4uPC9wPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+ PC9wPgoKCjxoMyBpZD0iemNfdGV4dCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF90ZXh0 IC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5DcmVhdGVzIGEgdGV4dCBpbnB1dCBmaWVsZCBhbmQg Y29ycmVzcG9uZGluZyA8Y29kZT4mbHQ7bGFiZWwmZ3Q7PC9jb2RlPiB0YWcuIFRoZSBpbnB1 dCB2YWx1ZSB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBlbWFpbCwgcHJlY2VkZWQgYnkgdGhl IGxhYmVsLjwvcD4KCjxoND5BdHRyaWJ1dGVzPC9oND4KCjx1bD4KCTxsaT48Y29kZT5sYWJl bD0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpUZXh0IGxhYmVsIGRpc3BsYXllZCB0 byB0aGUgdXNlci4gRGVmYXVsdCBpcyA8c3Ryb25nPlRleHQ8L3N0cm9uZz4uPC9saT4KCTxs aT48Y29kZT5uYW1lPSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2RlPjxiciAvPgpGaWVsZCBuYW1l LCBhcyB1c2VkIGluIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gaW5wdXQg dGFnLjwvbGk+Cgk8bGk+PGNvZGU+YnJlYWs9JnF1b3Q7dGFnJnF1b3Q7PC9jb2RlPjxiciAv PgpCcmVhayB0YWcgYmV0d2VlbiB0aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkLiBEZWZhdWx0 IGlzIDxjb2RlPiZsdDticiAvJmd0OzwvY29kZT4uIFVzZSA8Y29kZT5icmVhaz0mcXVvdDsm cXVvdDs8L2NvZGU+IHRvIHB1dCB0aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkIG9uIHRoZSBz YW1lIGxpbmUuPC9saT4KCTxsaT48Y29kZT5kZWZhdWx0PSZxdW90O3ZhbHVlJnF1b3Q7PC9j b2RlPjxiciAvPgpEZWZhdWx0IHZhbHVlIHdoZW4gbm8gaW5wdXQgaXMgcHJvdmlkZWQuPC9s aT4KCTxsaT48Y29kZT5taW49JnF1b3Q7aW50ZWdlciZxdW90OzwvY29kZT48YnIgLz4KTWlu aW11bSBpbnB1dCBsZW5ndGggaW4gY2hhcmFjdGVycy4gRGVmYXVsdCBpcyA8c3Ryb25nPjA8 L3N0cm9uZz4uPC9saT4KCTxsaT48Y29kZT5tYXg9JnF1b3Q7aW50ZWdlciZxdW90OzwvY29k ZT48YnIgLz4KTWF4aW11bSBpbnB1dCBsZW5ndGggaW4gY2hhcmFjdGVycy4gRGVmYXVsdCBp cyA8c3Ryb25nPjEwMDwvc3Ryb25nPi48L2xpPgoJPGxpPjxjb2RlPnNpemU9JnF1b3Q7aW50 ZWdlciZxdW90OzwvY29kZT48YnIgLz4KU2l6ZSBvZiB0aGUgaW5wdXQgZmllbGQgYXMgZGlz cGxheWVkIHRvIHRoZSB1c2VyLjwvbGk+Cgk8bGk+PGNvZGU+cmVxdWlyZWQ9JnF1b3Q7Ym9v bGVhbiZxdW90OzwvY29kZT48YnIgLz4KV2hldGhlciB0aGlzIHRleHQgZmllbGQgbXVzdCBi ZSBmaWxsZWQgb3V0LiBBdmFpbGFibGUgdmFsdWVzOiA8c3Ryb25nPjE8L3N0cm9uZz4gKHll cyksIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8pLiBEZWZhdWx0IGlzIDxzdHJvbmc+MTwvc3Ry b25nPiAoeWVzKS48L2xpPgo8L3VsPgoKPGg0PkV4YW1wbGU8L2g0PgoKPHByZT48Y29kZT4m bHQ7dHhwOnplbV9jb250YWN0X3RleHQgbGFiZWw9JnF1b3Q7WW91ciBuYW1lJnF1b3Q7IC8m Z3Q7PC9jb2RlPjwvcHJlPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9w PgoKCjxoMyBpZD0iemNfZW1haWwiPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3RfZW1haWwg LyZndDs8L2NvZGU+PC9oMz4KCjxwPklucHV0IGZpZWxkIGZvciB1c2VyJiM4MjE3O3MgZW1h aWwgYWRkcmVzcy48L3A+Cgo8cD5UaGUgZW50ZXJlZCBlbWFpbCBhZGRyZXNzIHdpbGwgYXV0 b21hdGljYWxseSBiZSB2YWxpZGF0ZWQgdG8gbWFrZSBzdXJlIGl0IGlzIG9mIHRoZSBmb3Jt ICYjODIyMDthYmNAeHh4Lnl5eVsuenp6XSYjODIyMTsuIE9uIG5vbi1XaW5kb3dzIHNlcnZl cnMsIGEgdGVzdCB3aWxsIGJlIGRvbmUgdG8gdmVyaWZ5IHRoYXQgYW4gQSBvciBNWCByZWNv cmQgZXhpc3RzIGZvciB0aGUgZG9tYWluLiBOZWl0aGVyIHRlc3QgcHJldmVudHMgc3BhbSwg YnV0IGl0IGRvZXMgaGVscCBkZXRlY3RpbmcgYWNjaWRlbnRhbCB0eXBpbmcgZXJyb3JzLjwv cD4KCjxoND5BdHRyaWJ1dGVzPC9oND4KCjx1bD4KCTxsaT48Y29kZT5sYWJlbD0mcXVvdDt0 ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpUZXh0IGxhYmVsIGRpc3BsYXllZCB0byB0aGUgdXNl ci4gRGVmYXVsdCBpcyA8c3Ryb25nPkVtYWlsPC9zdHJvbmc+LjwvbGk+Cgk8bGk+PGNvZGU+ bmFtZT0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIgLz4KRmllbGQgbmFtZSwgYXMgdXNl ZCBpbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGlucHV0IHRhZy48L2xp PgoJPGxpPjxjb2RlPmJyZWFrPSZxdW90O3RhZyZxdW90OzwvY29kZT48YnIgLz4KQnJlYWsg dGFnIGJldHdlZW4gdGhlIGxhYmVsIGFuZCBpbnB1dCBmaWVsZC4gRGVmYXVsdCBpcyA8Y29k ZT4mbHQ7YnIgLyZndDs8L2NvZGU+LiBVc2UgPGNvZGU+YnJlYWs9JnF1b3Q7JnF1b3Q7PC9j b2RlPiB0byBwdXQgdGhlIGxhYmVsIGFuZCBpbnB1dCBmaWVsZCBvbiB0aGUgc2FtZSBsaW5l LjwvbGk+Cgk8bGk+PGNvZGU+ZGVmYXVsdD0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIg Lz4KRGVmYXVsdCB2YWx1ZSB3aGVuIG5vIGlucHV0IGlzIHByb3ZpZGVkLjwvbGk+Cgk8bGk+ PGNvZGU+bWluPSZxdW90O2ludGVnZXImcXVvdDs8L2NvZGU+PGJyIC8+Ck1pbmltdW0gaW5w dXQgbGVuZ3RoIGluIGNoYXJhY3RlcnMuIERlZmF1bHQgaXMgPHN0cm9uZz4wPC9zdHJvbmc+ LjwvbGk+Cgk8bGk+PGNvZGU+bWF4PSZxdW90O2ludGVnZXImcXVvdDs8L2NvZGU+PGJyIC8+ Ck1heGltdW0gaW5wdXQgbGVuZ3RoIGluIGNoYXJhY3RlcnMuIERlZmF1bHQgaXMgPHN0cm9u Zz4xMDA8L3N0cm9uZz4uPC9saT4KCTxsaT48Y29kZT5zaXplPSZxdW90O2ludGVnZXImcXVv dDs8L2NvZGU+PGJyIC8+ClNpemUgb2YgdGhlIGlucHV0IGZpZWxkIGFzIGRpc3BsYXllZCB0 byB0aGUgdXNlci48L2xpPgoJPGxpPjxjb2RlPnJlcXVpcmVkPSZxdW90O2Jvb2xlYW4mcXVv dDs8L2NvZGU+PGJyIC8+CldoZXRoZXIgdGhpcyB0ZXh0IGZpZWxkIG11c3QgYmUgZmlsbGVk IG91dC4gQXZhaWxhYmxlIHZhbHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ry b25nPjA8L3N0cm9uZz4gKG5vKS4gRGVmYXVsdCBpcyA8c3Ryb25nPjE8L3N0cm9uZz4gKHll cykuPC9saT4KCTxsaT48Y29kZT5zZW5kX2FydGljbGU9JnF1b3Q7Ym9vbGVhbiZxdW90Ozwv Y29kZT48YnIgLz4KV2hldGhlciB0aGlzIGZpZWxkIGlzIHVzZWQgYXMgdGhlIHJlY2lwaWVu dCBlbWFpbCBhZGRyZXNzIHdoZW4gdXNpbmcgdGhlIHNlbmRfYXJ0aWNsZSBmdW5jdGlvbi4g QXZhaWxhYmxlIHZhbHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8 L3N0cm9uZz4gKG5vKS4gRGVmYXVsdCBpcyA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS48L2xp Pgo8L3VsPgoKPGg0PkV4YW1wbGU8L2g0PgoKPHByZT48Y29kZT4mbHQ7dHhwOnplbV9jb250 YWN0X2VtYWlsIGxhYmVsPSZxdW90O1lvdXIgZW1haWwgYWRkcmVzcyZxdW90OyAvJmd0Ozwv Y29kZT48L3ByZT4KCjxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgo8 aDMgaWQ9InpjX3RleHRhcmVhIj48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3RleHRhcmVh IC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5DcmVhdGVzIGEgdGV4dGFyZWEuPC9wPgoKPGg0PkF0 dHJpYnV0ZXM8L2g0PgoKPHVsPgoJPGxpPjxjb2RlPmxhYmVsPSZxdW90O3RleHQmcXVvdDs8 L2NvZGU+PGJyIC8+ClRleHQgbGFiZWwgZGlzcGxheWVkIHRvIHRoZSB1c2VyLiBEZWZhdWx0 IGlzIDxzdHJvbmc+TWVzc2FnZTwvc3Ryb25nPi48L2xpPgoJPGxpPjxjb2RlPm5hbWU9JnF1 b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+CkZpZWxkIG5hbWUsIGFzIHVzZWQgaW4gdGhl IDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBpbnB1dCB0YWcuPC9saT4KCTxsaT48 Y29kZT5icmVhaz0mcXVvdDt0YWcmcXVvdDs8L2NvZGU+PGJyIC8+CkJyZWFrIHRhZyBiZXR3 ZWVuIHRoZSBsYWJlbCBhbmQgaW5wdXQgZmllbGQuIERlZmF1bHQgaXMgPGNvZGU+Jmx0O2Jy IC8mZ3Q7PC9jb2RlPi4gVXNlIDxjb2RlPmJyZWFrPSZxdW90OyZxdW90OzwvY29kZT4gdG8g cHV0IHRoZSBsYWJlbCBhbmQgaW5wdXQgZmllbGQgb24gdGhlIHNhbWUgbGluZS48L2xpPgoJ PGxpPjxjb2RlPmRlZmF1bHQ9JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+CkRlZmF1 bHQgdmFsdWUgd2hlbiBubyBpbnB1dCBpcyBwcm92aWRlZC48L2xpPgoJPGxpPjxjb2RlPmNv bHM9JnF1b3Q7aW50ZWdlciZxdW90OzwvY29kZT48YnIgLz4KQ29sdW1uIHdpZHRoLiBEZWZh dWx0IGlzIDxzdHJvbmc+NTg8L3N0cm9uZz4uPC9saT4KCTxsaT48Y29kZT5yb3dzPSZxdW90 O2ludGVnZXImcXVvdDs8L2NvZGU+PGJyIC8+ClJvdyBoZWlnaHQuIERlZmF1bHQgaXMgPHN0 cm9uZz44PC9zdHJvbmc+LjwvbGk+Cgk8bGk+PGNvZGU+bWluPSZxdW90O2ludGVnZXImcXVv dDs8L2NvZGU+PGJyIC8+Ck1pbmltdW0gaW5wdXQgbGVuZ3RoIGluIGNoYXJhY3RlcnMuIERl ZmF1bHQgaXMgPHN0cm9uZz4wPC9zdHJvbmc+LjwvbGk+Cgk8bGk+PGNvZGU+bWF4PSZxdW90 O2ludGVnZXImcXVvdDs8L2NvZGU+PGJyIC8+Ck1heGltdW0gaW5wdXQgbGVuZ3RoIGluIGNo YXJhY3RlcnMuIERlZmF1bHQgaXMgPHN0cm9uZz4xMDAwMDwvc3Ryb25nPi48L2xpPgoJPGxp Pjxjb2RlPnJlcXVpcmVkPSZxdW90O2Jvb2xlYW4mcXVvdDs8L2NvZGU+PGJyIC8+CldoZXRo ZXIgdGhpcyB0ZXh0IGZpZWxkIG11c3QgYmUgZmlsbGVkIG91dC4gQXZhaWxhYmxlIHZhbHVl czogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS4g RGVmYXVsdCBpcyA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcykuPC9saT4KPC91bD4KCjxoND5F eGFtcGxlPC9oND4KCjxwPlRleHRhcmVhIHRoYXQgaXMgNDAgY2hhcnMgd2lkZSwgMTAgbGlu ZXMgaGlnaCwgd2l0aCBhIGN1c3RvbWl6ZWQgbGFiZWw6PC9wPgoKPHByZT48Y29kZT4mbHQ7 dHhwOnplbV9jb250YWN0X3RleHRhcmVhIGNvbHM9JnF1b3Q7NDAmcXVvdDsgcm93cz0mcXVv dDsxMCZxdW90OyBsYWJlbD0mcXVvdDtZb3VyIHF1ZXN0aW9uJnF1b3Q7IC8mZ3Q7PC9jb2Rl PjwvcHJlPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCjxoMyBp ZD0iemNfc3VibWl0Ij48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3N1Ym1pdCAvJmd0Ozwv Y29kZT48L2gzPgoKPHA+Q3JlYXRlcyBhIHN1Ym1pdCBidXR0b24uPGJyIC8+CldoZW4gdXNl ZCBhcyBhIGNvbnRhaW5lciB0YWcsIGEgJiM4MjIwO2J1dHRvbiYjODIyMTsgZWxlbWVudCB3 aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiBhbiAmIzgyMjA7aW5wdXQmIzgyMjE7IGVsZW1lbnQu PC9wPgoKPGg0PkF0dHJpYnV0ZXM6PC9oND4KCjx1bD4KCTxsaT48Y29kZT5sYWJlbD0mcXVv dDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpUZXh0IHNob3duIG9uIHRoZSBzdWJtaXQgYnV0 dG9uLiBEZWZhdWx0IGlzICYjODIyMDtTZW5kJiM4MjIxOy48L2xpPgoJPGxpPjxjb2RlPmJ1 dHRvbj0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgo8ZW0+RGVwcmVjYXRlZC4g VXNlIGEgY29udGFpbmVyIHRhZyBpZiB5b3Ugd2FudCBhIGJ1dHRvbiBlbGVtZW50LjwvZW0+ PC9saT4KPC91bD4KCjxoND5FeGFtcGxlczwvaDQ+Cgo8cD5TdGFuZGFyZCBzdWJtaXQgYnV0 dG9uOjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zdWJtaXQgLyZndDs8 L2NvZGU+PC9wcmU+Cgo8cD5TdWJtaXQgYnV0dG9uIHdpdGggeW91ciBvd24gdGV4dDo8L3A+ Cgo8cHJlPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3Rfc3VibWl0IGxhYmVsPSZxdW90O1Nl bmQmcXVvdDsgLyZndDs8L2NvZGU+PC9wcmU+Cgo8cD5Vc2FnZSBhcyBhIGNvbnRhaW5lciB0 YWcsIHdoaWNoIGFsbG93cyB5b3UgdG8gdXNlIFRleHRwYXR0ZXJuIHRhZ3MgYW5kIDxzcGFu IGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBtYXJrdXAgaW4gdGhlIHN1Ym1pdCBidXR0b246 PC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3N1Ym1pdCZndDsmbHQ7c3Ry b25nJmd0O1NlbmQmbHQ7L3N0cm9uZyZndDsgcXVlc3Rpb24mbHQ7L3R4cDp6ZW1fY29udGFj dF9zdWJtaXQmZ3Q7PC9jb2RlPjwvcHJlPgoKPHByZT48Y29kZT4mbHQ7dHhwOnplbV9jb250 YWN0X3N1Ym1pdCZndDsmbHQ7aW1nIHNyYz0mcXVvdDtwYXRoL3RvL2ltZy5wbmcmcXVvdDsg YWx0PSZxdW90O3N1Ym1pdCZxdW90OyZndDsmbHQ7L3R4cDp6ZW1fY29udGFjdF9zdWJtaXQm Z3Q7PC9jb2RlPjwvcHJlPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9w PgoKCjxoMyBpZD0iemNfc2VsZWN0Ij48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3NlbGVj dCAvJmd0OzwvY29kZT48L2gzPgoKPHA+Q3JlYXRlcyBhIGRyb3AtZG93biBzZWxlY3Rpb24g bGlzdC48L3A+Cgo8aDQ+QXR0cmlidXRlczwvaDQ+Cgo8dWw+Cgk8bGk+PGNvZGU+bGlzdD0m cXVvdDtjb21tYS1zZXBhcmF0ZWQgdmFsdWVzJnF1b3Q7PC9jb2RlPiA8c3BhbiBjbGFzcz0i cmVxdWlyZWQiPnJlcXVpcmVkPC9zcGFuPjxiciAvPgpMaXN0IG9mIGl0ZW1zIHRvIHNob3cg aW4gdGhlIHNlbGVjdCBib3guPC9saT4KCTxsaT48Y29kZT5zZWxlY3RlZD0mcXVvdDt2YWx1 ZSZxdW90OzwvY29kZT48YnIgLz4KTGlzdCBpdGVtIHRoYXQgaXMgc2VsZWN0ZWQgYnkgZGVm YXVsdC48L2xpPgoJPGxpPjxjb2RlPmxhYmVsPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJy IC8+ClRleHQgbGFiZWwgZGlzcGxheWVkIHRvIHRoZSB1c2VyLiBEZWZhdWx0IGlzIDxzdHJv bmc+T3B0aW9uPC9zdHJvbmc+LjwvbGk+Cgk8bGk+PGNvZGU+bmFtZT0mcXVvdDt2YWx1ZSZx dW90OzwvY29kZT48YnIgLz4KRmllbGQgbmFtZSwgYXMgdXNlZCBpbiB0aGUgPHNwYW4gY2xh c3M9ImNhcHMiPkhUTUw8L3NwYW4+IGlucHV0IHRhZy48L2xpPgoJPGxpPjxjb2RlPmJyZWFr PSZxdW90O3RhZyZxdW90OzwvY29kZT48YnIgLz4KQnJlYWsgdGFnIGJldHdlZW4gdGhlIGxh YmVsIGFuZCBpbnB1dCBmaWVsZC4gRGVmYXVsdCBpcyA8Y29kZT4mbHQ7YnIgLyZndDs8L2Nv ZGU+LiBVc2UgPGNvZGU+YnJlYWs9JnF1b3Q7JnF1b3Q7PC9jb2RlPiB0byBwdXQgdGhlIGxh YmVsIGFuZCBpbnB1dCBmaWVsZCBvbiB0aGUgc2FtZSBsaW5lLjwvbGk+Cgk8bGk+PGNvZGU+ ZGVsaW1pdGVyPSZxdW90O2NoYXJhY3RlciZxdW90OzwvY29kZT48YnIgLz4KU2VwYXJhdG9y IGNoYXJhY3RlciB1c2VkIGluIHRoZSA8c3Ryb25nPmxpc3Q8L3N0cm9uZz4gYXR0cmlidXRl LiBEZWZhdWx0IGlzIDxzdHJvbmc+LDwvc3Ryb25nPiAoY29tbWEpLjwvbGk+Cgk8bGk+PGNv ZGU+cmVxdWlyZWQ9JnF1b3Q7Ym9vbGVhbiZxdW90OzwvY29kZT48YnIgLz4KV2hldGhlciBh IG5vbi1lbXB0eSBvcHRpb24gbXVzdCBiZSBzZWxlY3RlZC4gQXZhaWxhYmxlIHZhbHVlczog PHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS4gRGVm YXVsdCBpcyA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcykuPC9saT4KPC91bD4KCjxoND5FeGFt cGxlczwvaDQ+Cgo8cD5TZWxlY3QgbGlzdCBsYWJlbGVkICYjODIxNjtEZXBhcnRtZW50JiM4 MjE3OywgY29udGFpbmluZyB0aHJlZSBvcHRpb25zIGFuZCBhIGJsYW5rIG9wdGlvbiAoZHVl IHRvIHRoZSBjb21tYSBiZWZvcmUgJiM4MjE2O01hcmtldGluZyYjODIxNzspIHNob3duIGJ5 IGRlZmF1bHQsIGZvcmNpbmcgdGhlIHVzZXIgdG8gbWFrZSBhIHNlbGVjdGlvbi48L3A+Cgo8 cHJlPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3Rfc2VsZWN0IGxhYmVsPSZxdW90O0RlcGFy dG1lbnQmcXVvdDsgbGlzdD0mcXVvdDssTWFya2V0aW5nLFNhbGVzLFN1cHBvcnQmcXVvdDsg LyZndDs8L2NvZGU+PC9wcmU+Cgo8cD5TZWxlY3QgbGlzdCBjb250YWluaW5nIHRocmVlIG9w dGlvbnMgd2l0aCAmIzgyMTY7TWFya2V0aW5nJiM4MjE3OyBzZWxlY3RlZCBieSBkZWZhdWx0 LjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zZWxlY3QgbGlzdD0mcXVv dDtNYXJrZXRpbmcsU2FsZXMsU3VwcG9ydCZxdW90OyBzZWxlY3RlZD0mcXVvdDtNYXJrZXRp bmcmcXVvdDsgLyZndDs8L2NvZGU+PC9wcmU+Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRv IHRvcDwvYT48L3A+CgoKPGgzIGlkPSJ6Y19jaGVja2JveCI+PGNvZGU+Jmx0O3R4cDp6ZW1f Y29udGFjdF9jaGVja2JveCAvJmd0OzwvY29kZT48L2gzPgoKPHA+Q3JlYXRlcyBhIGNoZWNr IGJveC48L3A+Cgo8aDQ+QXR0cmlidXRlczwvaDQ+Cgo8dWw+Cgk8bGk+PGNvZGU+bGFiZWw9 JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KVGV4dCBsYWJlbCBkaXNwbGF5ZWQgdG8g dGhlIHVzZXIuIERlZmF1bHQgaXMgPHN0cm9uZz5DaGVja2JveDwvc3Ryb25nPi48L2xpPgoJ PGxpPjxjb2RlPm5hbWU9JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+CkZpZWxkIG5h bWUsIGFzIHVzZWQgaW4gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBpbnB1 dCB0YWcuPC9saT4KCTxsaT48Y29kZT5icmVhaz0mcXVvdDt0YWcmcXVvdDs8L2NvZGU+PGJy IC8+CkJyZWFrIHRhZyBiZXR3ZWVuIHRoZSBsYWJlbCBhbmQgaW5wdXQgZmllbGQuIERlZmF1 bHQgaXMgPGNvZGU+Jmx0O2JyIC8mZ3Q7PC9jb2RlPi4gVXNlIDxjb2RlPmJyZWFrPSZxdW90 OyZxdW90OzwvY29kZT4gdG8gcHV0IHRoZSBsYWJlbCBhbmQgaW5wdXQgZmllbGQgb24gdGhl IHNhbWUgbGluZS48L2xpPgoJPGxpPjxjb2RlPmNoZWNrZWQ9JnF1b3Q7Ym9vbGVhbiZxdW90 OzwvY29kZT48YnIgLz4KV2hldGhlciB0aGlzIGJveCBpcyBjaGVja2VkIHdoZW4gZmlyc3Qg ZGlzcGxheWVkLiBBdmFpbGFibGUgdmFsdWVzOiA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcyks IDxzdHJvbmc+MDwvc3Ryb25nPiAobm8pLiBEZWZhdWx0IGlzICYjODIyMDswJiM4MjIxOyAo bm8pLjwvbGk+Cgk8bGk+PGNvZGU+cmVxdWlyZWQ9JnF1b3Q7Ym9vbGVhbiZxdW90OzwvY29k ZT48YnIgLz4KV2hldGhlciB0aGlzIGNoZWNrYm94IG11c3QgYmUgZmlsbGVkIG91dC4gQXZh aWxhYmxlIHZhbHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8L3N0 cm9uZz4gKG5vKS4gRGVmYXVsdCBpcyA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcykuPC9saT4K PC91bD4KCjxoND5FeGFtcGxlczwvaDQ+Cgo8cD5TaHJpbmstd3JhcCBhZ3JlZW1lbnQgd2hp Y2ggbXVzdCBiZSBjaGVja2VkIGJ5IHRoZSB1c2VyIGJlZm9yZSB0aGUgZW1haWwgd2lsbCBi ZSBzZW50LjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9jaGVja2JveCBs YWJlbD0mcXVvdDtJIGFjY2VwdCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMmcXVvdDsgLyZn dDs8L2NvZGU+PC9wcmU+Cgo8cD5PcHRpb25hbCBjaGVja2JveGVzOjwvcD4KCjxwcmU+PGNv ZGU+U2VsZWN0IHdoaWNoIG9wZXJhdGluZyBzeXN0ZW1zIGFyZSB5b3UgZmFtaWxpYXIgd2l0 aDombHQ7YnIgLyZndDsKJmx0O3R4cDp6ZW1fY29udGFjdF9jaGVja2JveCBsYWJlbD0mcXVv dDtXaW5kb3dzJnF1b3Q7IHJlcXVpcmVkPSZxdW90OzAmcXVvdDsgLyZndDsmbHQ7YnIgLyZn dDsKJmx0O3R4cDp6ZW1fY29udGFjdF9jaGVja2JveCBsYWJlbD0mcXVvdDtVbml4L0xpbnV4 L0JTRCZxdW90OyByZXF1aXJlZD0mcXVvdDswJnF1b3Q7IC8mZ3Q7Jmx0O2JyIC8mZ3Q7CiZs dDt0eHA6emVtX2NvbnRhY3RfY2hlY2tib3ggbGFiZWw9JnF1b3Q7TWFjT1MmcXVvdDsgcmVx dWlyZWQ9JnF1b3Q7MCZxdW90OyAvJmd0OyZsdDticiAvJmd0OzwvY29kZT48L3ByZT4KCjxw PjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgo8aDMgaWQ9InpjX3JhZGlv Ij48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3JhZGlvIC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8 cD5DcmVhdGVzIGEgcmFkaW8gYnV0dG9uLjwvcD4KCjxoND5BdHRyaWJ1dGVzPC9oND4KCjx1 bD4KCTxsaT48Y29kZT5ncm91cD0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPiA8c3BhbiBjbGFz cz0icmVxdWlyZWQiPnJlcXVpcmVkPC9zcGFuPjxiciAvPgpUZXh0IHVzZWQgaW4gdGhlIGVt YWlsIHRvIGRlc2NyaWJlIHRoaXMgZ3JvdXAgb2YgcmFkaW8gYnV0dG9ucy4gVGhpcyBhdHRy aWJ1dGUgdmFsdWUgaXMgcmVtZW1iZXJlZCBmb3Igc3Vic2VxdWVudCByYWRpbyBidXR0b25z LCBzbyB5b3Ugb25seSBoYXZlIHRvIHNldCBpdCBvbiB0aGUgZmlyc3QgcmFkaW8gYnV0dG9u IG9mIGEgZ3JvdXAuIERlZmF1bHQgaXMgPHN0cm9uZz5SYWRpbzwvc3Ryb25nPi48L2xpPgoJ PGxpPjxjb2RlPmxhYmVsPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+IDxzcGFuIGNsYXNzPSJy ZXF1aXJlZCI+cmVxdWlyZWQ8L3NwYW4+PGJyIC8+ClRleHQgbGFiZWwgZGlzcGxheWVkIHRv IHRoZSB1c2VyIGFzIHJhZGlvIGJ1dHRvbiBvcHRpb24uPC9saT4KCTxsaT48Y29kZT5uYW1l PSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2RlPjxiciAvPgpGaWVsZCBuYW1lLCBhcyB1c2VkIGlu IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gaW5wdXQgdGFnLiBUaGlzIGF0 dHJpYnV0ZSB2YWx1ZSBpcyByZW1lbWJlcmVkIGZvciBzdWJzZXF1ZW50IHJhZGlvIGJ1dHRv bnMsIHNvIHlvdSBvbmx5IGhhdmUgdG8gc2V0IGl0IG9uIHRoZSBmaXJzdCByYWRpbyBidXR0 b24gb2YgYSBncm91cC4gSWYgaXQgaGFzbiYjODIxNzt0IGJlZW4gc2V0IGF0IGFsbCwgaXQg d2lsbCBiZSBkZXJpdmVkIGZyb20gdGhlIDxjb2RlPmdyb3VwPC9jb2RlPiBhdHRyaWJ1dGUu PC9saT4KCTxsaT48Y29kZT5icmVhaz0mcXVvdDt0YWcmcXVvdDs8L2NvZGU+PGJyIC8+CkJy ZWFrIHRhZyBiZXR3ZWVuIHRoZSBsYWJlbCBhbmQgZmllbGQuIERlZmF1bHQgaXMgYSBzcGFj ZS48L2xpPgoJPGxpPjxjb2RlPmNoZWNrZWQ9JnF1b3Q7Ym9vbGVhbiZxdW90OzwvY29kZT48 YnIgLz4KV2hldGhlciB0aGlzIHJhZGlvIG9wdGlvbiBpcyBjaGVja2VkIHdoZW4gdGhlIGZv cm0gaXMgZmlyc3QgZGlzcGxheWVkLiBBdmFpbGFibGUgdmFsdWVzOiA8c3Ryb25nPjE8L3N0 cm9uZz4gKHllcyksIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8pLiBEZWZhdWx0IGlzIDxzdHJv bmc+MDwvc3Ryb25nPiAobm8pLjwvbGk+CjwvdWw+Cgo8aDQ+RXhhbXBsZTwvaDQ+Cgo8cD5H cm91cCBtdXR1YWxseSBleGNsdXNpdmUgcmFkaW8gYnV0dG9ucyBieSBzZXR0aW5nIHRoZSA8 Y29kZT5ncm91cDwvY29kZT4gYXR0cmlidXRlIG9uIHRoZSBmaXJzdCByYWRpbyBidXR0b24g aW4gYSBncm91cC4gT25seSB0aGUgY2hvc2VuIHJhZGlvIGJ1dHRvbiBmcm9tIGVhY2ggZ3Jv dXAgd2lsbCBiZSB1c2VkIGluIHRoZSBlbWFpbCBtZXNzYWdlLiBUaGUgbWVzc2FnZSB3aWxs IGJlIG91dHB1dCBpbiB0aGUgZm9ybSA8c3Ryb25nPmdyb3VwOiBsYWJlbDwvc3Ryb25nPiBm b3IgZWFjaCBvZiB0aGUgY2hvc2VuIHJhZGlvIGJ1dHRvbnMuPC9wPgoKPHByZT48Y29kZT4m bHQ7dHhwOnplbV9jb250YWN0X3JhZGlvIGxhYmVsPSZxdW90O01lZGl1bSZxdW90OyBncm91 cD0mcXVvdDtJIGxpa2UgbXkgc3RlYWsmcXVvdDsgLyZndDsKJmx0O3R4cDp6ZW1fY29udGFj dF9yYWRpbyBsYWJlbD0mcXVvdDtSYXJlJnF1b3Q7IC8mZ3Q7CiZsdDt0eHA6emVtX2NvbnRh Y3RfcmFkaW8gbGFiZWw9JnF1b3Q7V2VsbCBkb25lJnF1b3Q7IC8mZ3Q7CgombHQ7dHhwOnpl bV9jb250YWN0X3JhZGlvIGxhYmVsPSZxdW90O1dpbmUmcXVvdDsgZ3JvdXA9JnF1b3Q7V2l0 aCBhIGdsYXNzIG9mJnF1b3Q7IC8mZ3Q7CiZsdDt0eHA6emVtX2NvbnRhY3RfcmFkaW8gbGFi ZWw9JnF1b3Q7QmVlciZxdW90OyAvJmd0OwombHQ7dHhwOnplbV9jb250YWN0X3JhZGlvIGxh YmVsPSZxdW90O1dhdGVyJnF1b3Q7IC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+PGEgaHJlZj0i I3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCjxoMyBpZD0iemNfc2VjcmV0Ij48Y29kZT4m bHQ7dHhwOnplbV9jb250YWN0X3NlY3JldCAvJmd0OzwvY29kZT48L2gzPgoKPHA+VGhpcyB0 YWcgaGFzIG5vIGVmZmVjdCBvbiB0aGUgZm9ybSBvciA8c3BhbiBjbGFzcz0iY2FwcyI+SFRN TDwvc3Bhbj4gb3V0cHV0LCBidXQgd2lsbCBpbmNsdWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRp b24gaW4gdGhlIGVtYWlsLiBJdCBjYW4gYmUgdXNlZCBhcyBhIHNlbGYtY2xvc2luZyB0YWcg b3IgYXMgYSBjb250YWluZXIgdGFnLjwvcD4KCjxoND5BdHRyaWJ1dGVzPC9oND4KCjx1bD4K CTxsaT48Y29kZT5uYW1lPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+ClVzZWQgaW50 ZXJuYWxseS4gU2V0IHRoaXMgb25seSBpZiB5b3UgaGF2ZSBtdWx0aXBsZSAmIzgyMTY7c2Vj cmV0JiM4MjE3OyBmb3JtIGVsZW1lbnRzIHdpdGggaWRlbnRpY2FsIGxhYmVscy48L2xpPgoJ PGxpPjxjb2RlPmxhYmVsPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+ClVzZWQgdG8g aWRlbnRpZnkgdGhlIGZpZWxkIGluIHRoZSBlbWFpbC4gRGVmYXVsdCBpcyA8c3Ryb25nPlNl Y3JldDwvc3Ryb25nPi48L2xpPgoJPGxpPjxjb2RlPnZhbHVlPSZxdW90O3ZhbHVlJnF1b3Q7 PC9jb2RlPjxiciAvPgpTb21lIHRleHQgeW91IHdhbnQgdG8gYWRkIHRvIHRoZSBlbWFpbC48 L2xpPgo8L3VsPgoKPGg0PkV4YW1wbGVzPC9oND4KCjxwPlVzYWdlIGFzIGEgc2VsZi1jbG9z aW5nIHRhZzwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zZWNyZXQgdmFs dWU9JnF1b3Q7VGhlIGFuc3dlciBpcyA0MiZxdW90OyAvJmd0OzwvY29kZT48L3ByZT4KCjxw PlVzYWdlIGFzIGEgY29udGFpbmVyIHRhZzwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1f Y29udGFjdF9zZWNyZXQgbGFiZWw9JnF1b3Q7RGVhciB1c2VyJnF1b3Q7Jmd0OwogIFBsZWFz ZSBwcm92aWRlIGEgdXNlZnVsIGV4YW1wbGUgZm9yIHRoaXMgdGFnIQombHQ7L3R4cDp6ZW1f Y29udGFjdF9zZWNyZXQmZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFj ayB0byB0b3A8L2E+PC9wPgoKCjxoMyBpZD0iemNfc2VydmVyaW5mbyI+PGNvZGU+Jmx0O3R4 cDp6ZW1fY29udGFjdF9zZXJ2ZXJpbmZvIC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5UaGlzIHRh ZyBoYXMgbm8gZWZmZWN0IG9uIHRoZSBmb3JtIG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1M PC9zcGFuPiBvdXRwdXQsIGJ1dCB3aWxsIGluY2x1ZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlv biBpbiB0aGUgZW1haWwgYmFzZWQgb24gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5QSFA8L3Nw YW4+ICRfU0VSVkVSIHZhcmlhYmxlLjwvcD4KCjxoND5BdHRyaWJ1dGVzPC9oND4KCjx1bD4K CTxsaT48Y29kZT5uYW1lPSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2RlPiA8c3BhbiBjbGFzcz0i cmVxdWlyZWQiPnJlcXVpcmVkPC9zcGFuPjxiciAvPgpOYW1lIG9mIHRoZSBzZXJ2ZXIgdmFy aWFibGUuIFNlZSB0aGUgPGEgaHJlZj0iaHR0cDovL3BocC5uZXQvbWFudWFsL3Jlc2VydmVk LnZhcmlhYmxlcy5waHAjcmVzZXJ2ZWQudmFyaWFibGVzLnNlcnZlciI+PHNwYW4gY2xhc3M9 ImNhcHMiPlBIUDwvc3Bhbj4gbWFudWFsPC9hPiBmb3IgYSBmdWxsIGxpc3QuPC9saT4KCTxs aT48Y29kZT5sYWJlbD0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpVc2VkIHRvIGlk ZW50aWZ5IHRoZSBmaWVsZCBpbiB0aGUgZW1haWwuIERlZmF1bHRzIHRvIHRoZSB2YWx1ZSBv ZiB0aGUgPHN0cm9uZz5uYW1lPC9zdHJvbmc+IGF0dHJpYnV0ZS48L2xpPgo8L3VsPgoKPGg0 PkV4YW1wbGVzPC9oND4KCjxwPkFkZCB0aGUgSVAgYWRkcmVzcyBvZiB0aGUgdmlzaXRvciB0 byB0aGUgZW1haWw8L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3Rfc2VydmVy aW5mbyBuYW1lPSZxdW90O1JFTU9URV9BRERSJnF1b3Q7IGxhYmVsPSZxdW90O0lQIG51bWJl ciZxdW90OyAvJmd0OzwvY29kZT48L3ByZT4KCjxwPkFkZCB0aGUgbmFtZSBvZiB0aGUgdmlz aXRvciYjODIxNztzIGJyb3dzZXIgdG8gdGhlIGVtYWlsPC9wPgoKPHByZT48Y29kZT4mbHQ7 dHhwOnplbV9jb250YWN0X3NlcnZlcmluZm8gbmFtZT0mcXVvdDtIVFRQX1VTRVJfQUdFTlQm cXVvdDsgbGFiZWw9JnF1b3Q7QnJvd3NlciZxdW90OyAvJmd0OzwvY29kZT48L3ByZT4KCjxw PjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgo8aDMgaWQ9InpjX3NlbmRf YXJ0aWNsZSI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zZW5kX2FydGljbGUgLyZndDs8 L2NvZGU+PC9oMz4KCjxwPlVzZSB0aGlzIHRhZyBpbiB5b3VyIGluZGl2aWR1YWwgYXJ0aWNs ZSBmb3JtLCB3aGVyZSB5b3Ugd2FudCB0aGUgJiM4MjIwO3NlbmQgYXJ0aWNsZSYjODIyMTsg bGluayB0byBiZSBkaXNwbGF5ZWQuPC9wPgoKCjxoND5BdHRyaWJ1dGVzOjwvaDQ+Cgo8dWw+ Cgk8bGk+PGNvZGU+bGlua3RleHQ9JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KVGV4 dCBkaXNwbGF5ZWQgZm9yIHRoZSBsaW5rLiBEZWZhdWx0IGlzIDxzdHJvbmc+c2VuZCBhcnRp Y2xlPC9zdHJvbmc+PC9saT4KPC91bD4KCjxoND5FeGFtcGxlczo8L2g0PgoKPHA+U2VlIDxh IGhyZWY9IiNzZW5kYXJ0aWNsZSI+R2V0dGluZyBzdGFydGVkPC9hPjwvcD4KCjxwPjxhIGhy ZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgo8aDIgaWQ9ImFkdmFuY2VkIj5BZHZh bmNlZCBleGFtcGxlczwvaDI+CgoKPGgzIGlkPSJzaG93X2Vycm9yIj5TZXBhcmF0ZSBpbnB1 dCBhbmQgZXJyb3IgZm9ybXM8L2gzPgoKPHA+VXNpbmcgPGNvZGU+c2hvd19pbnB1dDwvY29k ZT4gYW5kIDxjb2RlPnNob3dfZXJyb3I8L2NvZGU+IHRvIGRpc3BsYXkgdGhlIGZvcm0gYW5k IGVycm9yIG1lc3NhZ2VzIG9uIGRpZmZlcmVudCBwYXJ0cyBvZiBhIHBhZ2UuIEEgZm9ybSBp cyB1c2VkIHRvIG1ha2Ugc3VyZSB0aGUgY29udGVudHMgb2YgYm90aCBmb3JtcyBhcmUgaWRl bnRpY2FsLCBvdGhlcndpc2UgdGhleSB3b3VsZCBiZSBzZWVuIGFzIHR3byBpbmRlcGVuZGVu dCBmb3Jtcy4gVGhlIGZpcnN0IGZvcm0gb25seSBzaG93cyBlcnJvcnMgKG5vIGlucHV0KSwg dGhlIHNlY29uZCBmb3JtIG9ubHkgc2hvd3MgdGhlIGlucHV0IGZpZWxkcyAobm8gZXJyb3Jz KS48L3A+Cgo8cHJlPjxjb2RlPiZsdDtkaXYgaWQ9JnF1b3Q7ZXJyb3ImcXVvdDsmZ3Q7CiAg Jmx0O3R4cDp6ZW1fY29udGFjdCBmb3JtPSZxdW90O2NvbnRhY3RfZm9ybSZxdW90OyBzaG93 X2lucHV0PSZxdW90OzAmcXVvdDsgLyZndDsKJmx0Oy9kaXYmZ3Q7CgombHQ7ZGl2IGlkPSZx dW90O2lucHV0Zm9ybSZxdW90OyZndDsKICAmbHQ7dHhwOnplbV9jb250YWN0IGZvcm09JnF1 b3Q7Y29udGFjdF9mb3JtJnF1b3Q7IHNob3dfZXJyb3I9JnF1b3Q7MCZxdW90OyAvJmd0Owom bHQ7L2RpdiZndDs8L2NvZGU+PC9wcmU+Cgo8cD5BcGFydCBmcm9tIHRoZSA8Y29kZT5zaG93 X2Vycm9yPC9jb2RlPiBhbmQgPGNvZGU+c2hvd19pbnB1dDwvY29kZT4gYXR0cmlidXRlcywg YWxsIG90aGVyIGF0dHJpYnV0ZXMgbXVzdCBiZSAxMDAlIGlkZW50aWNhbCBpbiBib3RoIGZv cm1zLCBvdGhlcndpc2UgdGhleSB3b3VsZCBiZSBzZWVuIGFzIHR3byB1bnJlbGF0ZWQgZm9y bXMuPC9wPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCjxoMyBp ZD0ic3ViamVjdF9mb3JtIj5Vc2VyIHNlbGVjdGFibGUgc3ViamVjdCBmaWVsZDwvaDM+Cgo8 cD5TcGVjaWZ5IHRoZSA8Y29kZT5zdWJqZWN0X2Zvcm08L2NvZGU+IGF0dHJpYnV0ZSBhbmQg Y3JlYXRlIGEgZm9ybSB3aGljaCBpbmNsdWRlcyBhIDxjb2RlPnplbV9jb250YWN0X3NlbGVj dDwvY29kZT4gdGFnOjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdCB0bz0m cXVvdDt5b3VAZXhhbXBsZS5jb20mcXVvdDsgc3ViamVjdF9mb3JtPSZxdW90O215X3N1Ympl Y3RfZm9ybSZxdW90OyAvJmd0OwogICZsdDt0eHA6emVtX2NvbnRhY3RfdGV4dCBsYWJlbD0m cXVvdDtOYW1lJnF1b3Q7IC8mZ3Q7Jmx0O2JyIC8mZ3Q7CiAgJmx0O3R4cDp6ZW1fY29udGFj dF9lbWFpbCAvJmd0OyZsdDticiAvJmd0OwogICZsdDt0eHA6emVtX2NvbnRhY3Rfc2VsZWN0 IGxhYmVsPSZxdW90O0Nob29zZSBTdWJqZWN0JnF1b3Q7IGxpc3Q9JnF1b3Q7LFF1ZXN0aW9u LEZlZWRiYWNrJnF1b3Q7IC8mZ3Q7Jmx0O2JyIC8mZ3Q7CiAgJmx0O3R4cDp6ZW1fY29udGFj dF90ZXh0YXJlYSBsYWJlbD0mcXVvdDtNZXNzYWdlJnF1b3Q7IC8mZ3Q7Jmx0O2JyIC8mZ3Q7 CiZsdDsvdHhwOnplbV9jb250YWN0Jmd0OzwvY29kZT48L3ByZT4KCjxwPkNyZWF0ZSBhIFRl eHRwYXR0ZXJuIGZvcm0gY2FsbGVkICYjODIyMDtteV9zdWJqZWN0X2Zvcm0mIzgyMjE7LCBj b250YWluaW5nOjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDpwaHAmZ3Q7CiAgZ2xvYmFsICR6 ZW1fY29udGFjdF9mb3JtOwogIGVjaG8gJHplbV9jb250YWN0X2Zvcm1bJiMzOTtDaG9vc2Ug U3ViamVjdCYjMzk7XTsKJmx0Oy90eHA6cGhwJmd0OzwvY29kZT48L3ByZT4KCjxwPlRoZSA8 Y29kZT5sYWJlbDwvY29kZT4gdXNlZCBpbiB0aGUgPGNvZGU+emVtX2NvbnRhY3Rfc2VsZWN0 PC9jb2RlPiB0YWcgbXVzdCBiZSBpZGVudGljYWwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdmFy aWFibGUgaW4gdGhlIDxjb2RlPnN1YmplY3RfZm9ybTwvY29kZT4uIEhlcmUgd2UgdXNlZCA8 Y29kZT5DaG9vc2Ugc3ViamVjdDwvY29kZT4uPC9wPgoKPHA+SWYgeW91JiM4MjE3O2QgcHJl ZmVyIHRvIGFkZCBhIGNvbW1vbiBwcmVmaXggZm9yIGFsbCBzdWJqZWN0cywgdXNlIGEgPGNv ZGU+c3ViamVjdF9mb3JtPC9jb2RlPiBjb250YWluaW5nOjwvcD4KCjxwcmU+PGNvZGU+Jmx0 O3R4cDpwaHAmZ3Q7CiAgZ2xvYmFsICR6ZW1fY29udGFjdF9mb3JtOwogIGVjaG8gJiMzOTtN eSBjb21tb24gcHJlZml4IC0gJiMzOTsgLiAkemVtX2NvbnRhY3RfZm9ybVsmIzM5O0Nob29z ZSBTdWJqZWN0JiMzOTtdOwombHQ7L3R4cDpwaHAmZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+PGEg aHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCjxoMyBpZD0idG9fZm9ybSI+VXNl ciBzZWxlY3RhYmxlIHJlY2lwaWVudCwgd2l0aG91dCBzaG93aW5nIGVtYWlsIGFkZHJlc3M8 L2gzPgoKPHA+U3BlY2lmeSB0aGUgPGNvZGU+dG9fZm9ybTwvY29kZT4gYXR0cmlidXRlIGFu ZCBjcmVhdGUgYSBmb3JtIHdoaWNoIGluY2x1ZGVzIGEgPGNvZGU+emVtX2NvbnRhY3Rfc2Vs ZWN0PC9jb2RlPiB0YWc6PC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0IHRv X2Zvcm09JnF1b3Q7bXlfemVtX2NvbnRhY3RfdG9fZm9ybSZxdW90OyZndDsKICAmbHQ7dHhw OnplbV9jb250YWN0X3RleHQgbGFiZWw9JnF1b3Q7TmFtZSZxdW90OyAvJmd0OyZsdDticiAv Jmd0OwogICZsdDt0eHA6emVtX2NvbnRhY3RfZW1haWwgLyZndDsmbHQ7YnIgLyZndDsKICAm bHQ7dHhwOnplbV9jb250YWN0X3NlbGVjdCBsYWJlbD0mcXVvdDtEZXBhcnRtZW50JnF1b3Q7 IGxpc3Q9JnF1b3Q7LFN1cHBvcnQsU2FsZXMmcXVvdDsgLyZndDsmbHQ7YnIgLyZndDsKICAm bHQ7dHhwOnplbV9jb250YWN0X3RleHRhcmVhIGxhYmVsPSZxdW90O01lc3NhZ2UmcXVvdDsg LyZndDsmbHQ7YnIgLyZndDsKJmx0Oy90eHA6emVtX2NvbnRhY3QmZ3Q7PC9jb2RlPjwvcHJl PgoKPHA+Q3JlYXRlIGEgVGV4dHBhdHRlcm4gZm9ybSBjYWxsZWQgJiM4MjIwO215X3plbV9j b250YWN0X3RvX2Zvcm0mIzgyMjE7LCBjb250YWluaW5nOjwvcD4KCjxwcmU+PGNvZGU+Jmx0 O3R4cDpwaHAmZ3Q7CiAgZ2xvYmFsICR6ZW1fY29udGFjdF9mb3JtOwogIHN3aXRjaCgkemVt X2NvbnRhY3RfZm9ybVsmIzM5O0RlcGFydG1lbnQmIzM5O10pCiAgewogICAgY2FzZSAmIzM5 O1N1cHBvcnQmIzM5OzoKICAgICAgZWNobyAmIzM5O2NyZXdAZXhhbXBsZS5jb20mIzM5OzsK ICAgICAgYnJlYWs7CiAgICBjYXNlICYjMzk7U2FsZXMmIzM5OzoKICAgICAgZWNobyAmIzM5 O3Nob3dtZXRoZW1vbmV5QGV4YW1wbGUuY29tJiMzOTs7CiAgICAgIGJyZWFrOwogICAgZGVm YXVsdDoKICAgICAgZWNobyAmIzM5O3NvbWVvbmVAZXhhbXBsZS5jb20mIzM5OzsKICB9CiZs dDsvdHhwOnBocCZndDs8L2NvZGU+PC9wcmU+Cgo8cD5UaGUgPGNvZGU+bGFiZWw8L2NvZGU+ IHVzZWQgaW4gdGhlIDxjb2RlPnplbV9jb250YWN0X3NlbGVjdDwvY29kZT4gdGFnIG11c3Qg YmUgaWRlbnRpY2FsIHRvIHRoZSBjb3JyZXNwb25zaW5nIHZhcmlhYmxlIGluIHRoZSA8Y29k ZT50b19mb3JtPC9jb2RlPi4gSGVyZSB3ZSB1c2VkIDxjb2RlPkRlcGFydG1lbnQ8L2NvZGU+ LjwvcD4KCjxwPkEgJiM4MjE2O2RlZmF1bHQmIzgyMTc7IGVtYWlsIGFkZHJlc3MgaW4gdGhl IDxjb2RlPnRvX2Zvcm08L2NvZGU+IGlzIHNwZWNpZmllZCB0byBlbnN1cmUgdGhhdCBhIHZh bGlkIGVtYWlsIGFkZHJlc3MgaXMgdXNlZCBpbiBjYXNlcyB3aGVyZSB5b3UgYWRkIG9yIGNo YW5nZSBhIHNlbGVjdC9yYWRpbyBvcHRpb24gYW5kIGZvcmdldCB0byB1cGRhdGUgdGhlIDxj b2RlPnRvX2Zvcm08L2NvZGU+LjwvcD4KCjxwIGNsYXNzPSJ3YXJuaW5nIj5OZXZlciB1c2Ug dGFncyBsaWtlIDxjb2RlPnplbV9jb250YWN0X3RleHQ8L2NvZGU+LCA8Y29kZT56ZW1fY29u dGFjdF9lbWFpbDwvY29kZT4gb3IgPGNvZGU+emVtX2NvbnRhY3RfdGV4dGFyZWE8L2NvZGU+ IGZvciBzZXR0aW5nIHRoZSByZWNpcGllbnQgYWRkcmVzcywgb3RoZXJ3aXNlIHlvdXIgZm9y bSBjYW4gYmUgYWJ1c2VkIHRvIHNlbmQgc3BhbSB0byBhbnkgZW1haWwgYWRkcmVzcyE8L3A+ Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+CgoKPGgyIGlkPSJzdHls aW5nIj5TdHlsaW5nPC9oMj4KCjxwPlRoZSBmb3JtIGl0c2VsZiBoYXMgYSBjbGFzcyA8c3Ry b25nPnplbUNvbnRhY3RGb3JtPC9zdHJvbmc+IHNldCBvbiB0aGUgPGNvZGU+Rk9STTwvY29k ZT4gPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IHRhZy48L3A+Cgo8cD5UaGUgbGlz dCBvZiBlcnJvciBtZXNzYWdlcyAoaWYgYW55KSBoYXMgYSBjbGFzcyA8c3Ryb25nPnplbUVy cm9yPC9zdHJvbmc+IHNldCBvbiB0aGUgPGNvZGU+VUw8L2NvZGU+IDxzcGFuIGNsYXNzPSJj YXBzIj5IVE1MPC9zcGFuPiB0YWcgdGhhdCBlbmNsb3NlcyB0aGUgbGlzdCBvZiBlcnJvcnMu PC9wPgoKQWxsIGZvcm0gZWxlbWVudHMgYW5kIGNvcnJlc3BvbmRpbmcgbGFiZWxzIGhhdmUg dGhlIGZvbGxvd2luZyBjbGFzc2VzIChvciBpZHMgc2V0KToKPG9sPgoJPGxpPk9uZSBvZiA8 c3Ryb25nPnplbVRleHQ8L3N0cm9uZz4sIDxzdHJvbmc+emVtVGV4dGFyZWE8L3N0cm9uZz4s IDxzdHJvbmc+emVtU2VsZWN0PC9zdHJvbmc+LCA8c3Ryb25nPnplbVJhZGlvPC9zdHJvbmc+ LCA8c3Ryb25nPnplbUNoZWNrYm94PC9zdHJvbmc+LCA8c3Ryb25nPnplbVN1Ym1pdDwvc3Ry b25nPi4gSXQgc2hvdWxkIGJlIG9idmlvdXMgd2hpY2ggY2xhc3MgaXMgdXNlZCBmb3Igd2hp Y2ggZm9ybSBlbGVtZW50IChhbmQgY29ycmVzcG9uZGluZyBsYWJlbCkuPC9saT4KCTxsaT48 c3Ryb25nPnplbVJlcXVpcmVkPC9zdHJvbmc+IG9yIDxzdHJvbmc+ZXJyb3JFbGVtZW50PC9z dHJvbmc+IG9yIDxzdHJvbmc+emVtUmVxdWlyZWRlcnJvckVsZW1lbnQ8L3N0cm9uZz4sIGRl cGVuZGluZyBvbiB3aGV0aGVyIHRoZSBmb3JtIGVsZW1lbnQgaXMgcmVxdWlyZWQsIGFuIGVy cm9yIHdhcyBmb3VuZCBpbiB3aGF0ZXZlciB0aGUgdmlzaXRvciBlbnRlcmVkJiM4MjMwOyBv ciBib3RoLjwvbGk+Cgk8bGk+QW4gaW5kaXZpZHVhbCAmIzgyMjA7aWQmIzgyMjE7IG9yICYj ODIyMDtjbGFzcyYjODIyMTsgc2V0IHRvIHRoZSB2YWx1ZSBvZiB0aGUgPGNvZGU+bmFtZTwv Y29kZT4gYXR0cmlidXRlIG9mIHRoZSBjb3JyZXNwb25kaW5nIHRhZy4gV2hlbiBzdHlsaW5n IGZvcm1zIGJhc2VkIG9uIHRoaXMgY2xhc3MsIHlvdSBzaG91bGQgZXhwbGljaXRseSBzZXQg dGhlIDxjb2RlPm5hbWU8L2NvZGU+IGF0dHJpYnV0ZSBiZWNhdXNlIGF1dG9tYXRpY2FsbHkg Z2VuZXJhdGVkIG5hbWVzIG1heSBjaGFuZ2UgaW4gbmV3ZXIgemVtX2NvbnRhY3RfcmVib3Ju IHZlcnNpb25zLjwvbGk+Cjwvb2w+Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwv YT48L3A+CgoKPGgyIGlkPSJoaXN0b3J5Ij5IaXN0b3J5PC9oMj4KCjxwPk9ubHkgdGhlIGNo YW5nZXMgdGhhdCBtYXkgYWZmZWN0IHBlb3BsZSB3aG8gdXBncmFkZSBhcmUgZGV0YWlsZWQg YmVsb3cuPGJyIC8+ClRvIHNhdmUgc3BhY2UsIGxpbmtzIHRvIGZvcnVtIHRvcGljcyB0aGF0 IGRldGFpbCBhbGwgdGhlIGNoYW5nZXMgaW4gZWFjaCB2ZXJzaW9uIGhhdmUgYmVlbiBhZGRl ZC48L3A+Cgo8dWw+Cgk8bGk+MTQgZmViIDIwMDc6IDxzdHJvbmc+dmVyc2lvbiA0LjAuMy4x OTwvc3Ryb25nPiA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0 b3BpYy5waHA/aWQ9MjExNDQiPmNoYW5nZWxvZzwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0i I3NlbmRhcnRpY2xlIj5zZW5kX2FydGljbGU8L2E+IGZ1bmN0aW9uYWxpdHkgcmV2aXNlZCwg cmVxdWlyaW5nIGNoYW5nZXMgd2hlbiB1cGdyYWRpbmcgZnJvbSBlYXJsaWVyIHZlcnNpb25z PC9saT4KCQk8bGk+TmV3IGxhbmd1YWdlIHN0cmluZ3M6ICYjODIxNjtzZW5kX2FydGljbGUm IzgyMTc7IGFuZCAmIzgyMTY7cmVjaXBpZW50JiM4MjE3OyAocmVwbGFjZXMgJiM4MjE2O3Jl Y2VpdmVyJiM4MjE3Oyk8L2xpPgoJCTxsaT5TZXRzIG9mIHJhZGlvIGJ1dHRvbnMgcmVxdWly ZSB0aGUgbmV3IDxhIGhyZWY9IiN6Y19yYWRpbyI+Z3JvdXA8L2E+IGF0dHJpYnV0ZTwvbGk+ CgkJPGxpPlllcy9ObyB2YWx1ZXMgZGVwcmVjYXRlZCBpbiBmYXZvciBmb3IgdGhlIDxzcGFu IGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHN0YW5kYXJkIDEvMCB2YWx1ZXMgKHllcy9ubyBz dGlsbCB3b3JrIGluIHRoaXMgdmVyc2lvbik8L2xpPgoJPC91bD48L2xpPgoJPGxpPjIwIG5v diAyMDA2OiA8c3Ryb25nPnZlcnNpb24gNC4wLjMuMTg8L3N0cm9uZz4gPGEgaHJlZj0iaHR0 cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTE5ODIzIj5jaGFu Z2Vsb2c8L2E+Cgk8dWw+CgkJPGxpPklEcyAmIzgyMTY7emVtQ29udGFjdEZvcm0mIzgyMTc7 IGFuZCAmIzgyMTY7emVtU3VibWl0JiM4MjE3OyBoYXZlIGNoYW5nZWQgdG8gY2xhc3NlcyB0 byBhbGxvdyBtdWx0aXBsZSBmb3JtcyBwZXIgcGFnZTwvbGk+CgkJPGxpPk5ldyBsYW5ndWFn ZSBzdHJpbmdzOiAmIzgyMTY7Zm9ybV91c2VkJiM4MjE3OywgJiM4MjE2O2ludmFsaWRfdXRm OCYjODIxNzssICYjODIxNjttYXhfd2FybmluZyYjODIxNzssICYjODIxNjtuYW1lJiM4MjE3 OywgJiM4MjE2O3JlZnJlc2gmIzgyMTc7LCAmIzgyMTY7c2VjcmV0JiM4MjE3OzwvbGk+Cgk8 L3VsPjwvbGk+Cgk8bGk+MTIgbWFyIDIwMDY6IDxzdHJvbmc+dmVyc2lvbiA0LjAuMy4xNzwv c3Ryb25nPiA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3Bp Yy5waHA/aWQ9MTM0MTYiPmNoYW5nZWxvZzwvYT48L2xpPgoJPGxpPjExIGZlYiAyMDA2OiA8 c3Ryb25nPnZlcnNpb24gLjE2PC9zdHJvbmc+PC9saT4KCTxsaT4wNiBmZWIgMjAwNjogPHN0 cm9uZz52ZXJzaW9uIC4xNTwvc3Ryb25nPjwvbGk+Cgk8bGk+MDMgZmViIDIwMDY6IDxzdHJv bmc+dmVyc2lvbiAuMTQ8L3N0cm9uZz4KCTx1bD4KCQk8bGk+UmVxdWlyZXMgc2VwYXJhdGUg emVtX2NvbnRhY3RfbGFuZyBwbHVnaW48L2xpPgoJPC91bD48L2xpPgoJPGxpPjI5IGphbiAy MDA2OiA8c3Ryb25nPnZlcnNpb24gLjEyPC9zdHJvbmc+PC9saT4KCTxsaT4yNyBqYW4gMjAw NjogPHN0cm9uZz52ZXJzaW9uIC4xMTwvc3Ryb25nPjwvbGk+Cgk8bGk+MjMgamFuIDIwMDY6 IDxzdHJvbmc+dmVyc2lvbiAuMDkgYW5kIC4xMDwvc3Ryb25nPjwvbGk+Cgk8bGk+MjMgamFu IDIwMDY6IDxzdHJvbmc+dmVyc2lvbiAuMDg8L3N0cm9uZz48L2xpPgoJPGxpPjE3IGphbiAy MDA2OiA8c3Ryb25nPnZlcnNpb24gLjA3PC9zdHJvbmc+PC9saT4KCTxsaT4xNiBqYW4gMjAw NjogPHN0cm9uZz52ZXJzaW9uIC4wNSBhbmQgLjA2PC9zdHJvbmc+PC9saT4KCTxsaT4xNSBq YW4gMjAwNjogPHN0cm9uZz52ZXJzaW9uIC4wNDwvc3Ryb25nPjwvbGk+Cgk8bGk+MTAgamFu IDIwMDY6IDxzdHJvbmc+dmVyc2lvbiAuMDM8L3N0cm9uZz48L2xpPgoJPGxpPjE5IGRlYyAy MDA1OiA8c3Ryb25nPnZlcnNpb24gLjAyPC9zdHJvbmc+PC9saT4KPC91bD4KCjxwPjxhIGhy ZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgo8aDIgaWQ9ImNyZWRpdHMiPkNyZWRp dHM8L2gyPgoKPHVsPgoJPGxpPjxzdHJvbmc+emVtPC9zdHJvbmc+IHdyb3RlIHRoZSB6ZW1f Y29udGFjdCAwLjYgcGx1Z2luIG9uIHdoaWNoIHRoaXMgcGx1Z2luIHdhcyBpbml0aWFsbHkg YmFzZWQuPC9saT4KCTxsaT48c3Ryb25nPk1hcnk8L3N0cm9uZz4gY29tcGxldGVseSByZXZp c2VkIHRoZSBwbHVnaW4gY29kZS48L2xpPgoJPGxpPjxzdHJvbmc+U3R1YXJ0PC9zdHJvbmc+ IFR1cm5lZCBpdCBpbnRvIGEgcGx1Z2luLCBhZGRlZCBhIHJldmlzZWQgaGVscCB0ZXh0IGFu ZCBhZGRpdGlvbmFsIGNvZGUuIE1haW50YWluZWQgYWxsIHBsdWdpbiB2ZXJzaW9ucyB0aWxs IDQuMC4zLjE3LjwvbGk+Cgk8bGk+PHN0cm9uZz53ZXQ8L3N0cm9uZz4gYWRkZWQgdGhlIHpl bV9jb250YWN0X3JhZGlvIHRhZy48L2xpPgoJPGxpPjxzdHJvbmc+VHJhbnF1aWxsbzwvc3Ry b25nPiBhZGRlZCB0aGUgYW50aS1zcGFtIDxzcGFuIGNsYXNzPSJjYXBzIj5BUEk8L3NwYW4+ IGFuZCB6ZW1fY29udGFjdF9zZW5kX2FydGljbGUgZnVuY3Rpb25hbGl0eS48L2xpPgoJPGxp PjxzdHJvbmc+YXNsc3c2Njwvc3Ryb25nPiwgPHN0cm9uZz5qZHlrYXN0PC9zdHJvbmc+IGFu ZCBvdGhlcnMgKD8pIHByb3ZpZGVkIGFkZGl0aW9uYWwgY29kZTwvbGk+Cgk8bGk+PHN0cm9u Zz5SdXVkPC9zdHJvbmc+IGNsZWFuZWQgdXAgYW5kIGF1ZGl0ZWQgdGhlIGNvZGUgdG8gd2Vl ZCBvdXQgYnVncyBhbmQgY29tcGxldGVseSByZXZpc2VkIHRoZSBoZWxwIHRleHQuIE1haW50 YWluZXIgb2YgdmVyc2lvbnMgNC4wLjMuMTggYW5kIHVwLjwvbGk+Cgk8bGk+U3VwcG9ydGVk IGFuZCB0ZXN0ZWQgdG8gZGVzdHJ1Y3Rpb24gYnkgdGhlIFRleHRwYXR0ZXJuIGNvbW11bml0 eS48L2xpPgo8L3VsPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoK CjxoMiBpZD0iYXBpIj5aZW0gQ29udGFjdCBSZWJvcm4mIzgyMTc7cyA8c3BhbiBjbGFzcz0i Y2FwcyI+QVBJPC9zcGFuPjwvaDI+Cgo8cD5UaGUgcGx1Z2luIDxzcGFuIGNsYXNzPSJjYXBz Ij5BUEk8L3NwYW4+IG9mIHplbSBjb250YWN0LCBkZXZlbG9wZWQgYnkgVHJhbnF1aWxsbywg aXMgc2ltaWxhciB0byB0aGUgY29tbWVudHMgPHNwYW4gY2xhc3M9ImNhcHMiPkFQSTwvc3Bh bj4gb2YgVGV4dHBhdHRlcm4sIHdoaWNoIGlzIGV4cGxhaW5lZCBpbiB0aGUgVGV4dGJvb2sg PGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm5ldC93aWtpL2luZGV4LnBocD90aXRsZT1Q bHVnaW5fRGV2ZWxvcG1lbnRfVG9waWNzIj5QbHVnaW4gRGV2ZWxvcG1lbnQgVG9waWNzPC9h PiBhbmQgPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm5ldC93aWtpL2luZGV4LnBocD90 aXRsZT1Db21iYXRfQ29tbWVudF9TcGFtIj5Db21iYXQgQ29tbWVudCBTcGFtPC9hPi48L3A+ CgpUd28gY2FsbGJhY2sgZXZlbnRzIGV4aXN0IGluIHplbV9jb250YWN0X3JlYm9ybjoKPHVs PgoJPGxpPjxjb2RlPnplbWNvbnRhY3Quc3VibWl0PC9jb2RlPiBpcyBjYWxsZWQgYWZ0ZXIg dGhlIGZvcm0gaXMgc3VibWl0dGVkIGFuZCB0aGUgdmFsdWVzIGFyZSBjaGVja2VkIGlmIGVt cHR5IG9yIHZhbGlkIGVtYWlsIGFkZHJlc3NlcywgYnV0IGJlZm9yZSB0aGUgbWFpbCBpcyBz ZW50LjwvbGk+Cgk8bGk+PGNvZGU+emVtY29udGFjdC5mb3JtPC9jb2RlPiBsZXQmIzgyMTc7 cyB5b3UgaW5zZXJ0IGNvbnRlbnQgaW4gdGhlIGNvbnRhY3QgZm9ybSBhcyBkaXNwbGF5ZWQg dG8gdGhlIHZpc2l0b3IuPC9saT4KPC91bD4KCjxwPkZvciByZWZlcmVuY2UgaGVyZSBhcmUg dGhlIGNvbW1hbmRzIHRoYXQgd2lsbCBiZSBpbnRlcmVzdGluZyB0byBwbHVnaW4gZGV2ZWxv cGVyczo8L3A+Cgo8cHJlPjxjb2RlPi8vIFRoaXMgd2lsbCBjYWxsIHlvdXIgZnVuY3Rpb24g YmVmb3JlIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZAovLyBTbyB5b3UgY2FuIGFuYWx5c2UgdGhl IHN1Ym1pdHRlZCBkYXRhCnJlZ2lzdGVyX2NhbGxiYWNrKCYjMzk7YWJjX215ZnVuY3Rpb24m IzM5OywmIzM5O3plbWNvbnRhY3Quc3VibWl0JiMzOTspOwoKLy8gVGhpcyB3aWxsIGNhbGwg eW91ciBmdW5jdGlvbiBhbmQgYWRkIHRoZSBvdXRwdXQgKHVzZSByZXR1cm4gJG15c3R1ZmYp Ci8vIHRvIHRoZSBjb250YWN0LWZvcm0uCnJlZ2lzdGVyX2NhbGxiYWNrKCYjMzk7YWJjX215 b3RoZXJmdW5jdGlvbjImIzM5OywmIzM5O3plbWNvbnRhY3QuZm9ybSYjMzk7KTsKCi8vIFRv IGdldCBob2xkIG9mIHRoZSBmb3JtLXZhcmlhYmxlcyB5b3UgY2FuIHVzZQpnbG9iYWwgemVt X2NvbnRhY3RfZm9ybTsKCi8vIFdpdGggdGhlIGZvbGxvd2luZyB0d28gbGluZXMgeW91IGNh biB0ZWxsIHplbV9jb250YWN0IGlmIHlvdXIKLy8gcGx1Z2luIGZvdW5kIHNwYW0KJGV2YWx1 YXRvciA9JmFtcDsgZ2V0X3plbWNvbnRhY3RfZXZhbHVhdG9yKCk7CgovLyBUaGUgcGFzc2Vk IHZhbHVlIG11c3QgYmUgbm9uLXplcm8gdG8gbWFyayB0aGUgY29udGVudCBhcyBzcGFtLgov LyBWYWx1ZSBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMS4KJGV2YWx1YXRvciAt Jmd0OyBhZGRfemVtY29udGFjdF9zdGF0dXMoMSk7PC9jb2RlPjwvcHJlPgoKPHA+TXVsdGlw bGUgcGx1Z2lucyBjYW4gYmUgYWN0aXZlIGF0IHRoZSBzYW1lIHRpbWUgYW5kIGVhY2ggb2Yg dGhlbSBjYW4gbWFyayB0aGUgc3VibWl0dGVkIGNvbnRlbnQgYXMgc3BhbSBhbmQgcHJldmVu dCB0aGUgZm9ybSBmcm9tIGJlaW5nIHN1Ym1pdHRlZC48L3A+Cgo8cD48c3Ryb25nPkFuIGV4 YW1wbGUgb2YgYSBwbHVnLWluIGNvbm5lY3RpbmcgdG8gWmVtIENvbnRhY3QgUmVib3JuJiM4 MjE3O3MgPHNwYW4gY2xhc3M9ImNhcHMiPkFQSTwvc3Bhbj46PC9zdHJvbmc+PC9wPgoKPHBy ZT48Y29kZT5yZWdpc3Rlcl9jYWxsYmFjaygmIzM5O3BhcF96ZW1jb250YWN0X2Zvcm0mIzM5 OywmIzM5O3plbWNvbnRhY3QuZm9ybSYjMzk7KTsKcmVnaXN0ZXJfY2FsbGJhY2soJiMzOTtw YXBfemVtY29udGFjdF9zdWJtaXQmIzM5OywmIzM5O3plbWNvbnRhY3Quc3VibWl0JiMzOTsp OwoKZnVuY3Rpb24gcGFwX3plbWNvbnRhY3RfZm9ybSgpIHsKICAkZmllbGQgPSAmIzM5OyZs dDtkaXYgc3R5bGU9JnF1b3Q7ZGlzcGxheTpub25lJnF1b3Q7Jmd0OyYjMzk7LgogICAgZmlu cHV0KCYjMzk7dGV4dCYjMzk7LCYjMzk7cGhvbmUmIzM5OyxwcygmIzM5O3Bob25lJiMzOTsp LCYjMzk7JiMzOTssJiMzOTsmIzM5OywmIzM5OyYjMzk7LCYjMzk7JiMzOTssJiMzOTsmIzM5 OywmIzM5O3Bob25lJiMzOTspLiYjMzk7Jmx0O2JyIC8mZ3Q7JiMzOTsuCiAgICBmaW5wdXQo JiMzOTt0ZXh0JiMzOTssJiMzOTttYWlsJiMzOTsscHMoJiMzOTttYWlsJiMzOTspLCYjMzk7 JiMzOTssJiMzOTsmIzM5OywmIzM5OyYjMzk7LCYjMzk7JiMzOTssJiMzOTsmIzM5OywmIzM5 O21haWwmIzM5OykuJiMzOTsmbHQ7L2RpdiZndDsmIzM5OzsKICByZXR1cm4gJGZpZWxkOyZs dDsvY29kZSZndDsKfQoKZnVuY3Rpb24gcGFwX3plbWNvbnRhY3Rfc3VibWl0KCkgewogICRj aGVja2luZ19tYWlsX2ZpZWxkID0gdHJpbShwcygmIzM5O21haWwmIzM5OykpOwogICRjaGVj a2luZ19waG9uZV9maWVsZCA9IHRyaW0ocHMoJiMzOTtwaG9uZSYjMzk7KSk7CgogICRldmFs dWF0aW9uID0mYW1wOyBnZXRfemVtY29udGFjdF9ldmFsdWF0b3IoKTsKCiAgLy8gSWYgdGhl IGhpZGRlbiBmaWVsZHMgYXJlIGZpbGxlZCBvdXQsIHRoZSBjb250YWN0IGZvcm0gd29uJiMz OTt0IGJlIHN1Ym1pdHRlZCEKICBpZiAoJGNoZWNraW5nX21haWxfZmllbGQgIT0gJiMzOTsm IzM5OyBvciAkY2hlY2tpbmdfcGhvbmVfZmllbGQgIT0gJiMzOTsmIzM5OykgewogICAgJGV2 YWx1YXRpb24gLSZndDsgYWRkX3plbWNvbnRhY3Rfc3RhdHVzKDEpOwogIH0KICByZXR1cm47 Cn08L2NvZGU+PC9wcmU+Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+ IjtzOjQ6ImNvZGUiO3M6MjA4MzQ6IgpmdW5jdGlvbiB6ZW1fY29udGFjdCgkYXR0cywgJHRo aW5nID0gJycpCnsKCWdsb2JhbCAkc2l0ZW5hbWUsICRwcmVmcywgJHByb2R1Y3Rpb25fc3Rh dHVzLCAkemVtX2NvbnRhY3RfZnJvbSwKCQkkemVtX2NvbnRhY3RfcmVjaXBpZW50LCAkemVt X2NvbnRhY3RfZXJyb3IsICR6ZW1fY29udGFjdF9zdWJtaXQsCgkJJHplbV9jb250YWN0X2Zv cm0sICR6ZW1fY29udGFjdF9sYWJlbHMsICR6ZW1fY29udGFjdF92YWx1ZXM7CgoJZXh0cmFj dCh6ZW1fY29udGFjdF9sQXR0cyhhcnJheSgKCQknY29weXNlbmRlcicJPT4gMCwKCQknZm9y bScJCT0+ICcnLAoJCSdmcm9tJwkJPT4gJycsCgkJJ2Zyb21fZm9ybScJPT4gJycsCgkJJ2xh YmVsJwkJPT4gemVtX2NvbnRhY3RfZ1R4dCgnY29udGFjdCcpLAoJCSdyZWRpcmVjdCcJPT4g JycsCgkJJ3Nob3dfZXJyb3InCT0+IDEsCgkJJ3Nob3dfaW5wdXQnCT0+IDEsCgkJJ3NlbmRf YXJ0aWNsZScJPT4gMCwKCQknc3ViamVjdCcJPT4gemVtX2NvbnRhY3RfZ1R4dCgnZW1haWxf c3ViamVjdCcsIGh0bWxfZW50aXR5X2RlY29kZSgkc2l0ZW5hbWUsRU5UX1FVT1RFUykpLAoJ CSdzdWJqZWN0X2Zvcm0nCT0+ICcnLAoJCSd0bycJCT0+ICcnLAoJCSd0b19mb3JtJwk9PiAn JywKCQkndGhhbmtzJwk9PiBncmFmKHplbV9jb250YWN0X2dUeHQoJ2VtYWlsX3RoYW5rcycp KSwKCQkndGhhbmtzX2Zvcm0nCT0+ICcnCgkpLCAkYXR0cykpOwoKCXVuc2V0KCRhdHRzWydz aG93X2Vycm9yJ10sICRhdHRzWydzaG93X2lucHV0J10pOwoJJHplbV9jb250YWN0X2Zvcm1f aWQgPSBtZDUoc2VyaWFsaXplKCRhdHRzKS5wcmVnX3JlcGxhY2UoJy9bXHRcc1xyXG5dLycs JycsJHRoaW5nKSk7CgkkemVtX2NvbnRhY3Rfc3VibWl0ID0gKHBzKCd6ZW1fY29udGFjdF9m b3JtX2lkJykgPT0gJHplbV9jb250YWN0X2Zvcm1faWQpOwoKCWlmICghaXNfY2FsbGFibGUo J21haWwnKSkKCXsKCQlyZXR1cm4gKCRwcm9kdWN0aW9uX3N0YXR1cyA9PSAnbGl2ZScpID8K CQkJemVtX2NvbnRhY3RfZ1R4dCgnbWFpbF9zb3JyeScpIDoKCQkJZ1R4dCgnd2Fybl9tYWls X3VuYXZhaWxhYmxlJyk7Cgl9CgoJc3RhdGljICRoZWFkZXJzX3NlbnQgPSBmYWxzZTsKCWlm ICghJGhlYWRlcnNfc2VudCkgewoJCWhlYWRlcignTGFzdC1Nb2RpZmllZDogJy5nbWRhdGUo J0QsIGQgTSBZIEg6aTpzJyx0aW1lKCktMzYwMCoyNCo3KS4nIEdNVCcpOwoJCWhlYWRlcign RXhwaXJlczogJy5nbWRhdGUoJ0QsIGQgTSBZIEg6aTpzJyx0aW1lKCkrNjAwKS4nIEdNVCcp OwoJCWhlYWRlcignQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZScp OwoJCSRoZWFkZXJzX3NlbnQgPSB0cnVlOwoJfQoKCSRub25jZSAgID0gbXlzcWxfcmVhbF9l c2NhcGVfc3RyaW5nKHBzKCd6ZW1fY29udGFjdF9ub25jZScpKTsKCSRyZW5vbmNlID0gZmFs c2U7CgoJaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQpCgl7CgkJc2FmZV9kZWxldGUoJ3R4cF9k aXNjdXNzX25vbmNlJywgJ2lzc3VlX3RpbWUgPCBkYXRlX3N1Yihub3coKSwgaW50ZXJ2YWwg MTAgbWludXRlKScpOwoJCWlmICgkcnMgPSBzYWZlX3JvdygndXNlZCcsICd0eHBfZGlzY3Vz c19ub25jZScsICJub25jZSA9ICckbm9uY2UnIikpCgkJewoJCQlpZiAoJHJzWyd1c2VkJ10p CgkJCXsKCQkJCXVuc2V0KCR6ZW1fY29udGFjdF9lcnJvcik7CgkJCQkkemVtX2NvbnRhY3Rf ZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ2Zvcm1fdXNlZCcpOwoJCQkJJHJlbm9uY2Ug PSB0cnVlOwoJCQkJJF9QT1NUID0gYXJyYXkoKTsKCQkJCSRfUE9TVFsnemVtX2NvbnRhY3Rf c3VibWl0J10gPSBUUlVFOwoJCQkJJF9QT1NUWyd6ZW1fY29udGFjdF9mb3JtX2lkJ10gPSAk emVtX2NvbnRhY3RfZm9ybV9pZDsKCQkJCSRfUE9TVFsnemVtX2NvbnRhY3Rfbm9uY2UnXSA9 ICRub25jZTsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9 IHplbV9jb250YWN0X2dUeHQoJ2Zvcm1fZXhwaXJlZCcpOwoJCQkkcmVub25jZSA9IHRydWU7 CgkJfQoJfQoKCWlmICgkemVtX2NvbnRhY3Rfc3VibWl0IGFuZCAkbm9uY2UgYW5kICEkcmVu b25jZSkKCXsKCQkkemVtX2NvbnRhY3Rfbm9uY2UgPSAkbm9uY2U7Cgl9CgoJZWxzZWlmICgh JHNob3dfZXJyb3Igb3IgJHNob3dfaW5wdXQpCgl7CgkJJHplbV9jb250YWN0X25vbmNlID0g bWQ1KHVuaXFpZChyYW5kKCksIHRydWUpKTsKCQlzYWZlX2luc2VydCgndHhwX2Rpc2N1c3Nf bm9uY2UnLCAiaXNzdWVfdGltZSA9IG5vdygpLCBub25jZSA9ICckemVtX2NvbnRhY3Rfbm9u Y2UnIik7Cgl9CgoJJGZvcm0gPSAoJGZvcm0pID8gZmV0Y2hfZm9ybSgkZm9ybSkgOiAkdGhp bmc7CgoJaWYgKGVtcHR5KCRmb3JtKSkKCXsKCQkkZm9ybSA9ICcKPHR4cDp6ZW1fY29udGFj dF90ZXh0IGxhYmVsPSInLnplbV9jb250YWN0X2dUeHQoJ25hbWUnKS4nIiAvPjxiciAvPgo8 dHhwOnplbV9jb250YWN0X2VtYWlsIC8+PGJyIC8+Jy4KKCRzZW5kX2FydGljbGUgPyAnPHR4 cDp6ZW1fY29udGFjdF9lbWFpbCBzZW5kX2FydGljbGU9IjEiIGxhYmVsPSInLnplbV9jb250 YWN0X2dUeHQoJ3JlY2lwaWVudCcpLiciIC8+PGJyIC8+JyA6ICcnKS4KJzx0eHA6emVtX2Nv bnRhY3RfdGV4dGFyZWEgLz48YnIgLz4KPHR4cDp6ZW1fY29udGFjdF9zdWJtaXQgLz4KJzsK CX0KCgkkZm9ybSA9IHBhcnNlKCRmb3JtKTsKCglpZiAoJHRvX2Zvcm0pCgl7CgkJJHRvID0g cGFyc2UoZmV0Y2hfZm9ybSgkdG9fZm9ybSkpOwoJfQoKCWlmICghJHRvIGFuZCAhJHNlbmRf YXJ0aWNsZSkKCXsKCQlyZXR1cm4gemVtX2NvbnRhY3RfZ1R4dCgndG9fbWlzc2luZycpOwoJ fQoKCSRvdXQgPSAnJzsKCglpZiAoISR6ZW1fY29udGFjdF9zdWJtaXQpIHsKCSAgIyBkb24n dCBzaG93IGVycm9ycyBvciBzZW5kIG1haWwKCX0KCgllbHNlaWYgKCFlbXB0eSgkemVtX2Nv bnRhY3RfZXJyb3IpKQoJewoJCWlmICgkc2hvd19lcnJvciBvciAhJHNob3dfaW5wdXQpCgkJ ewoJCQkkb3V0IC49IG4uJzx1bCBjbGFzcz0iemVtRXJyb3IiPic7CgoJCQlmb3JlYWNoIChh cnJheV91bmlxdWUoJHplbV9jb250YWN0X2Vycm9yKSBhcyAkZXJyb3IpCgkJCXsKCQkJCSRv dXQgLj0gbi50Lic8bGk+Jy4kZXJyb3IuJzwvbGk+JzsKCQkJfQoKCQkJJG91dCAuPSBuLic8 L3VsPic7CgoJCQlpZiAoISRzaG93X2lucHV0KSByZXR1cm4gJG91dDsKCQl9Cgl9CgoJZWxz ZWlmICgkc2hvd19pbnB1dCBhbmQgaXNfYXJyYXkoJHplbV9jb250YWN0X2Zvcm0pKQoJewoJ CS8vLyBsb2FkIGFuZCBjaGVjayBzcGFtIHBsdWdpbnMvCgkJY2FsbGJhY2tfZXZlbnQoJ3pl bWNvbnRhY3Quc3VibWl0Jyk7CgkJJGV2YWx1YXRpb24gPSYgZ2V0X3plbWNvbnRhY3RfZXZh bHVhdG9yKCk7CgkJJGNsZWFuID0gJGV2YWx1YXRpb24tPmdldF96ZW1jb250YWN0X3N0YXR1 cygpOwoJCWlmICgkY2xlYW4gIT0gMCkgewoJCQlyZXR1cm4gemVtX2NvbnRhY3RfZ1R4dCgn c3BhbScpOwoJCX0KCgkJaWYgKCRmcm9tX2Zvcm0pCgkJewoJCQkkZnJvbSA9IHBhcnNlKGZl dGNoX2Zvcm0oJGZyb21fZm9ybSkpOwoJCX0KCgkJaWYgKCRzdWJqZWN0X2Zvcm0pCgkJewoJ CQkkc3ViamVjdCA9IHBhcnNlKGZldGNoX2Zvcm0oJHN1YmplY3RfZm9ybSkpOwoJCX0KCgkJ JHNlcCA9ICFpc193aW5kb3dzKCkgPyAiXG4iIDogIlxyXG4iOwoKCQkkbXNnID0gYXJyYXko KTsKCgkJZm9yZWFjaCAoJHplbV9jb250YWN0X2xhYmVscyBhcyAkbmFtZSA9PiAkbGFiZWwp CgkJewoJCQlpZiAoIXRyaW0oJHplbV9jb250YWN0X3ZhbHVlc1skbmFtZV0pKSBjb250aW51 ZTsKCQkJJG1zZ1tdID0gJGxhYmVsLic6ICcuJHplbV9jb250YWN0X3ZhbHVlc1skbmFtZV07 CgkJfQoKCQlpZiAoJHNlbmRfYXJ0aWNsZSkKCQl7CgkJCWdsb2JhbCAkdGhpc2FydGljbGU7 CgkJCSRzdWJqZWN0ID0gc3RyX3JlcGxhY2UoJyYjMzg7JywgJyYnLCAkdGhpc2FydGljbGVb J3RpdGxlJ10pOwoJCQkkbXNnW10gPSBwZXJtbGlua3VybCgkdGhpc2FydGljbGUpOwoJCQkk bXNnW10gPSAkc3ViamVjdDsKCQkJJHNfYXIgPSBhcnJheSgnJiM4MjE2OycsICcmIzgyMTc7 JywgJyYjODIyMDsnLCAnJiM4MjIxOycsICcmIzgyMTc7JywgJyYjODI0MjsnLCAnJiM4MjQz OycsICcmIzgyMzA7JywgJyYjODIxMTsnLCAnJiM4MjEyOycsICcmIzIxNTsnLCAnJiM4NDgy OycsICcmIzE3NDsnLCAnJiMxNjk7JywgJyZsdDsnLCAnJmd0OycsICcmcXVvdDsnLCAnJmFt cDsnLCAnJiMzODsnLCAiXHQiLCAnPHAnKTsKCQkJaWYgKCRwcmVmc1snb3ZlcnJpZGVfZW1h aWxjaGFyc2V0J10gYW5kIGlzX2NhbGxhYmxlKCd1dGY4X2RlY29kZScpKSB7CgkJCQkkcl9h ciA9IGFycmF5KCInIiwgIiciLCAnIicsICciJywgIiciLCAiJyIsICciJywgJy4uLicsICct JywgJy0tJywgJ3gnLCAnW3RtXScsICcociknLCAnKGMpJywgJzwnLCAnPicsICciJywgJyYn LCAnJicsICcgJywgIlxuPHAiKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRyX2FyID0gYXJy YXkoJ+KAmCcsICfigJknLCAn4oCcJywgJ+KAnScsICfigJknLCAn4oCyJywgJ+KAsycsICfi gKYnLCAn4oCTJywgJ+KAlCcsICfDlycsICfihKInLCAnwq4nLCAnwqknLCAnPCcsICc+Jywg JyInLCAnJicsICcmJywgJyAnLCAiXG48cCIpOwoJCQl9CgkJCSRtc2dbXSA9IHRyaW0oc3Ry aXBfdGFncyhzdHJfcmVwbGFjZSgkc19hciwkcl9hciwodHJpbShzdHJpcF90YWdzKCR0aGlz YXJ0aWNsZVsnZXhjZXJwdCddKSkgPyAkdGhpc2FydGljbGVbJ2V4Y2VycHQnXSA6ICR0aGlz YXJ0aWNsZVsnYm9keSddKSkpKTsKCQkJaWYgKGVtcHR5KCR6ZW1fY29udGFjdF9yZWNpcGll bnQpKQoJCQl7CgkJCQlyZXR1cm4gemVtX2NvbnRhY3RfZ1R4dCgnZmllbGRfbWlzc2luZycs IHplbV9jb250YWN0X2dUeHQoJ3JlY2lwaWVudCcpKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJ CSR0byA9ICR6ZW1fY29udGFjdF9yZWNpcGllbnQ7CgkJCX0KCQl9CgoJCSRtc2cgPSBqb2lu KCJcblxuIiwgJG1zZyk7CgkJJG1zZyA9IHN0cl9yZXBsYWNlKCJcclxuIiwgIlxuIiwgJG1z Zyk7CgkJJG1zZyA9IHN0cl9yZXBsYWNlKCJcciIsICJcbiIsICRtc2cpOwoJCSRtc2cgPSBz dHJfcmVwbGFjZSgiXG4iLCAkc2VwLCAkbXNnKTsKCgkJaWYgKCRmcm9tKQoJCXsKCQkJJHJl cGx5ID0gJHplbV9jb250YWN0X2Zyb207CgkJfQoKCQllbHNlCgkJewoJCQkkZnJvbSA9ICR6 ZW1fY29udGFjdF9mcm9tOwoJCQkkcmVwbHkgPSAnJzsKCQl9CgoJCSRmcm9tICAgID0gemVt X2NvbnRhY3Rfc3RyaXAoJGZyb20pOwoJCSR0byAgICAgID0gemVtX2NvbnRhY3Rfc3RyaXAo JHRvKTsKCQkkc3ViamVjdCA9IHplbV9jb250YWN0X3N0cmlwKCRzdWJqZWN0KTsKCQkkcmVw bHkgICA9IHplbV9jb250YWN0X3N0cmlwKCRyZXBseSk7CgkJJG1zZyAgICAgPSB6ZW1fY29u dGFjdF9zdHJpcCgkbXNnLCBGQUxTRSk7CgoJCWlmICgkcHJlZnNbJ292ZXJyaWRlX2VtYWls Y2hhcnNldCddIGFuZCBpc19jYWxsYWJsZSgndXRmOF9kZWNvZGUnKSkKCQl7CgkJCSRjaGFy c2V0ID0gJ0lTTy04ODU5LTEnOwoJCQkkc3ViamVjdCA9IHV0ZjhfZGVjb2RlKCRzdWJqZWN0 KTsKCQkJJG1zZyAgICAgPSB1dGY4X2RlY29kZSgkbXNnKTsKCQl9CgoJCWVsc2UKCQl7CgkJ CSRjaGFyc2V0ID0gJ1VURi04JzsKCQl9CgoJCSRzdWJqZWN0ID0gemVtX2NvbnRhY3RfbWFp bGhlYWRlcigkc3ViamVjdCwgJ3RleHQnKTsKCgkJJGhlYWRlcnMgPSAnRnJvbTogJy4kZnJv bS4KCQkJKCRyZXBseSA/ICgkc2VwLidSZXBseS1UbzogJy4kcmVwbHkpIDogJycpLgoJCQkk c2VwLidYLU1haWxlcjogVGV4dHBhdHRlcm4gKHplbV9jb250YWN0X3JlYm9ybiknLgoJCQkk c2VwLidYLU9yaWdpbmF0aW5nLUlQOiAnLnplbV9jb250YWN0X3N0cmlwKCghZW1wdHkoJF9T RVJWRVJbJ0hUVFBfWF9GT1JXQVJERURfRk9SJ10pID8gJF9TRVJWRVJbJ0hUVFBfWF9GT1JX QVJERURfRk9SJ10uJyB2aWEgJyA6ICcnKS4kX1NFUlZFUlsnUkVNT1RFX0FERFInXSkuCgkJ CSRzZXAuJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQnLgoJCQkkc2VwLidDb250 ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9IicuJGNoYXJzZXQuJyInOwoKCQlzYWZl X3VwZGF0ZSgndHhwX2Rpc2N1c3Nfbm9uY2UnLCAidXNlZCA9ICcxJywgaXNzdWVfdGltZSA9 IG5vdygpIiwgIm5vbmNlID0gJyRub25jZSciKTsKCgkJaWYgKG1haWwoJHRvLCAkc3ViamVj dCwgJG1zZywgJGhlYWRlcnMpKQoJCXsKCQkJJF9QT1NUID0gYXJyYXkoKTsKCgkJCWlmICgk Y29weXNlbmRlciBhbmQgJHplbV9jb250YWN0X2Zyb20pCgkJCXsKCQkJCW1haWwoemVtX2Nv bnRhY3Rfc3RyaXAoJHplbV9jb250YWN0X2Zyb20pLCAkc3ViamVjdCwgJG1zZywgJGhlYWRl cnMpOwoJCQl9CgoJCQlpZiAoJHJlZGlyZWN0KQoJCQl7CgkJCQl3aGlsZSAoQG9iX2VuZF9j bGVhbigpKTsKCQkJCSR1cmkgPSBodS5sdHJpbSgkcmVkaXJlY3QsJy8nKTsKCQkJCWlmIChl bXB0eSgkX1NFUlZFUlsnRkNHSV9ST0xFJ10pIGFuZCBlbXB0eSgkX0VOVlsnRkNHSV9ST0xF J10pKQoJCQkJewoJCQkJCXR4cF9zdGF0dXNfaGVhZGVyKCczMDMgU2VlIE90aGVyJyk7CgkJ CQkJaGVhZGVyKCdMb2NhdGlvbjogJy4kdXJpKTsKCQkJCQloZWFkZXIoJ0Nvbm5lY3Rpb246 IGNsb3NlJyk7CgkJCQkJaGVhZGVyKCdDb250ZW50LUxlbmd0aDogMCcpOwoJCQkJfQoJCQkJ ZWxzZQoJCQkJewoJCQkJCSR1cmkgPSBodG1sc3BlY2lhbGNoYXJzKCR1cmkpOwoJCQkJCSRy ZWZyZXNoID0gemVtX2NvbnRhY3RfZ1R4dCgncmVmcmVzaCcpOwoJCQkJCWVjaG8gPDw8RU5E CjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRp b25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFu c2l0aW9uYWwuZHRkIj4KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0 bWwiIHhtbDpsYW5nPSJlbiIgbGFuZz0iZW4iPgo8aGVhZD4KCTx0aXRsZT4kc2l0ZW5hbWU8 L3RpdGxlPgoJPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0 L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+Cgk8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBj b250ZW50PSIwO3VybD0kdXJpIiAvPgo8L2hlYWQ+Cjxib2R5Pgo8YSBocmVmPSIkdXJpIj4k cmVmcmVzaDwvYT4KPC9ib2R5Pgo8L2h0bWw+CkVORDsKCQkJCX0KCQkJCWV4aXQ7CgkJCX0K CgkJCWVsc2UKCQkJewoJCQkJcmV0dXJuICc8ZGl2IGNsYXNzPSJ6ZW1UaGFua3MiIGlkPSJ6 Y3InLiR6ZW1fY29udGFjdF9mb3JtX2lkLiciPicgLgoJCQkJCSgkdGhhbmtzX2Zvcm0gPyBm ZXRjaF9mb3JtKCR0aGFua3NfZm9ybSkgOiAkdGhhbmtzKSAuCgkJCQkJJzwvZGl2Pic7CgkJ CX0KCQl9CgoJCWVsc2UKCQl7CgkJCSRvdXQgLj0gZ3JhZih6ZW1fY29udGFjdF9nVHh0KCdt YWlsX3NvcnJ5JykpOwoJCX0KCX0KCglpZiAoJHNob3dfaW5wdXQgYW5kICEkc2VuZF9hcnRp Y2xlIG9yIGdwcygnemVtX2NvbnRhY3Rfc2VuZF9hcnRpY2xlJykpCgl7CgkJcmV0dXJuICc8 Zm9ybSBtZXRob2Q9InBvc3QiJy4oKCEkc2hvd19lcnJvciBhbmQgJHplbV9jb250YWN0X2Vy cm9yKSA/ICcnIDogJyBpZD0iemNyJy4kemVtX2NvbnRhY3RfZm9ybV9pZC4nIicpLicgY2xh c3M9InplbUNvbnRhY3RGb3JtIiBhY3Rpb249IicuaHRtbHNwZWNpYWxjaGFycyhzZXJ2ZXJT ZXQoJ1JFUVVFU1RfVVJJJykpLicjemNyJy4kemVtX2NvbnRhY3RfZm9ybV9pZC4nIj4nLgoJ CQkoICRsYWJlbCA/IG4uJzxmaWVsZHNldD4nIDogbi4nPGRpdj4nICkuCgkJCSggJGxhYmVs ID8gbi4nPGxlZ2VuZD4nLmh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKS4nPC9sZWdlbmQ+JyA6 ICcnICkuCgkJCSRvdXQuCgkJCW4uJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InplbV9j b250YWN0X25vbmNlIiB2YWx1ZT0iJy4kemVtX2NvbnRhY3Rfbm9uY2UuJyIgLz4nLgoJCQlu Lic8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ6ZW1fY29udGFjdF9mb3JtX2lkIiB2YWx1 ZT0iJy4kemVtX2NvbnRhY3RfZm9ybV9pZC4nIiAvPicuCgkJCSRmb3JtLgoJCQljYWxsYmFj a19ldmVudCgnemVtY29udGFjdC5mb3JtJykuCgkJCSggJGxhYmVsID8gKG4uJzwvZmllbGRz ZXQ+JykgOiAobi4nPC9kaXY+JykgKS4KCQkJbi4nPC9mb3JtPic7Cgl9CgoJcmV0dXJuICcn Owp9CgpmdW5jdGlvbiB6ZW1fY29udGFjdF9zdHJpcCgkc3RyLCAkaGVhZGVyID0gVFJVRSkg ewoJaWYgKCRoZWFkZXIpICRzdHIgPSBzdHJpcF9ybigkc3RyKTsKCXJldHVybiBwcmVnX3Jl cGxhY2UoJy9bXHgwMF0vJywgJyAnLCAkc3RyKTsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3Rf dGV4dCgkYXR0cykKewoJZ2xvYmFsICR6ZW1fY29udGFjdF9lcnJvciwgJHplbV9jb250YWN0 X3N1Ym1pdDsKCglleHRyYWN0KHplbV9jb250YWN0X2xBdHRzKGFycmF5KAoJCSdicmVhaycJ CT0+IGJyLAoJCSdkZWZhdWx0Jwk9PiAnJywKCQknaXNFcnJvcicJPT4gJycsCgkJJ2xhYmVs JwkJPT4gemVtX2NvbnRhY3RfZ1R4dCgndGV4dCcpLAoJCSdtYXgnCQk9PiAxMDAsCgkJJ21p bicJCT0+IDAsCgkJJ25hbWUnCQk9PiAnJywKCQkncmVxdWlyZWQnCT0+IDEsCgkJJ3NpemUn CQk9PiAnJwoJKSwgJGF0dHMpKTsKCgkkbWluID0gaW50dmFsKCRtaW4pOwoJJG1heCA9IGlu dHZhbCgkbWF4KTsKCSRzaXplID0gaW50dmFsKCRzaXplKTsKCglpZiAoZW1wdHkoJG5hbWUp KSAkbmFtZSA9IHplbV9jb250YWN0X2xhYmVsMm5hbWUoJGxhYmVsKTsKCglpZiAoJHplbV9j b250YWN0X3N1Ym1pdCkKCXsKCQkkdmFsdWUgPSB0cmltKHBzKCRuYW1lKSk7CgkJJHV0Zjhs ZW4gPSBwcmVnX21hdGNoX2FsbCgiLy4vc3UiLCAkdmFsdWUsICR1dGY4YXIpOwoJCSRobGFi ZWwgPSBodG1sc3BlY2lhbGNoYXJzKCRsYWJlbCk7CgoJCWlmIChzdHJsZW4oJHZhbHVlKSkK CQl7CgkJCWlmICghJHV0ZjhsZW4pCgkJCXsKCQkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0g emVtX2NvbnRhY3RfZ1R4dCgnaW52YWxpZF91dGY4JywgJGhsYWJlbCk7CgkJCQkkaXNFcnJv ciA9ICJlcnJvckVsZW1lbnQiOwoJCQl9CgoJCQllbHNlaWYgKCRtaW4gYW5kICR1dGY4bGVu IDwgJG1pbikKCQkJewoJCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9n VHh0KCdtaW5fd2FybmluZycsICRobGFiZWwsICRtaW4pOwoJCQkJJGlzRXJyb3IgPSAiZXJy b3JFbGVtZW50IjsKCQkJfQoKCQkJZWxzZWlmICgkbWF4IGFuZCAkdXRmOGxlbiA+ICRtYXgp CgkJCXsKCQkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnbWF4 X3dhcm5pbmcnLCAkaGxhYmVsLCAkbWF4KTsKCQkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVu dCI7CgkJCQkjJHZhbHVlID0gam9pbignJyxhcnJheV9zbGljZSgkYXJbMF0sMCwkbWF4KSk7 CgkJCX0KCgkJCWVsc2UKCQkJewoJCQkJemVtX2NvbnRhY3Rfc3RvcmUoJG5hbWUsICRsYWJl bCwgJHZhbHVlKTsKCQkJfQoJCX0KCQllbHNlaWYgKCRyZXF1aXJlZCkKCQl7CgkJCSR6ZW1f Y29udGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnZmllbGRfbWlzc2luZycsICRo bGFiZWwpOwoJCQkkaXNFcnJvciA9ICJlcnJvckVsZW1lbnQiOwoJCX0KCX0KCgllbHNlCgl7 CgkJJHZhbHVlID0gJGRlZmF1bHQ7Cgl9CgoJJHNpemUgPSAoJHNpemUpID8gJyBzaXplPSIn LiRzaXplLiciJyA6ICcnOwoJJG1heGxlbmd0aCA9ICgkbWF4KSA/ICcgbWF4bGVuZ3RoPSIn LiRtYXguJyInIDogJyc7CgoJJHplbVJlcXVpcmVkID0gJHJlcXVpcmVkID8gJ3plbVJlcXVp cmVkJyA6ICcnOwoKICAgICAgICByZXR1cm4gJzxsYWJlbCBmb3I9IicuJG5hbWUuJyIgY2xh c3M9InplbVRleHQgJy4kemVtUmVxdWlyZWQuJGlzRXJyb3IuJyAnLiRuYW1lLiciPicuaHRt bHNwZWNpYWxjaGFycygkbGFiZWwpLic8L2xhYmVsPicuJGJyZWFrLgoJCSc8aW5wdXQgdHlw ZT0idGV4dCIgaWQ9IicuJG5hbWUuJyIgY2xhc3M9InplbVRleHQgJy4kemVtUmVxdWlyZWQu JGlzRXJyb3IuJyIgbmFtZT0iJy4kbmFtZS4nIiB2YWx1ZT0iJy5odG1sc3BlY2lhbGNoYXJz KCR2YWx1ZSkuJyInLiRzaXplLiRtYXhsZW5ndGguJyAvPic7Cn0KCmZ1bmN0aW9uIHplbV9j b250YWN0X3RleHRhcmVhKCRhdHRzKQp7CglnbG9iYWwgJHplbV9jb250YWN0X2Vycm9yLCAk emVtX2NvbnRhY3Rfc3VibWl0OwoKCWV4dHJhY3QoemVtX2NvbnRhY3RfbEF0dHMoYXJyYXko CgkJJ2JyZWFrJwkJPT4gYnIsCgkJJ2NvbHMnCQk9PiA1OCwKCQknZGVmYXVsdCcJPT4gJycs CgkJJ2lzRXJyb3InCT0+ICcnLAoJCSdsYWJlbCcJCT0+IHplbV9jb250YWN0X2dUeHQoJ21l c3NhZ2UnKSwKCQknbWF4JwkJPT4gMTAwMDAsCgkJJ21pbicJCT0+IDAsCgkJJ25hbWUnCQk9 PiAnJywKCQkncmVxdWlyZWQnCT0+IDEsCgkJJ3Jvd3MnCQk9PiA4CgkpLCAkYXR0cykpOwoK CSRtaW4gPSBpbnR2YWwoJG1pbik7CgkkbWF4ID0gaW50dmFsKCRtYXgpOwoJJGNvbHMgPSBp bnR2YWwoJGNvbHMpOwoJJHJvd3MgPSBpbnR2YWwoJHJvd3MpOwoKCWlmIChlbXB0eSgkbmFt ZSkpICRuYW1lID0gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgkbGFiZWwpOwoKCWlmICgkemVt X2NvbnRhY3Rfc3VibWl0KQoJewoJCSR2YWx1ZSA9IHByZWdfcmVwbGFjZSgnL15ccypbXHJc bl0vJywgJycsIHJ0cmltKHBzKCRuYW1lKSkpOwoJCSR1dGY4bGVuID0gcHJlZ19tYXRjaF9h bGwoIi8uL3N1IiwgbHRyaW0oJHZhbHVlKSwgJHV0Zjhhcik7CgkJJGhsYWJlbCA9IGh0bWxz cGVjaWFsY2hhcnMoJGxhYmVsKTsKCgkJaWYgKHN0cmxlbihsdHJpbSgkdmFsdWUpKSkKCQl7 CgkJCWlmICghJHV0ZjhsZW4pCgkJCXsKCQkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVt X2NvbnRhY3RfZ1R4dCgnaW52YWxpZF91dGY4JywgJGhsYWJlbCk7CgkJCQkkaXNFcnJvciA9 ICJlcnJvckVsZW1lbnQiOwoJCQl9CgoJCQllbHNlaWYgKCRtaW4gYW5kICR1dGY4bGVuIDwg JG1pbikKCQkJewoJCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9nVHh0 KCdtaW5fd2FybmluZycsICRobGFiZWwsICRtaW4pOwoJCQkJJGlzRXJyb3IgPSAiZXJyb3JF bGVtZW50IjsKCQkJfQoKCQkJZWxzZWlmICgkbWF4IGFuZCAkdXRmOGxlbiA+ICRtYXgpCgkJ CXsKCQkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnbWF4X3dh cm5pbmcnLCAkaGxhYmVsLCAkbWF4KTsKCQkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7 CgkJCQkjJHZhbHVlID0gam9pbignJyxhcnJheV9zbGljZSgkdXRmOGFyWzBdLDAsJG1heCkp OwoJCQl9CgoJCQllbHNlCgkJCXsKCQkJCXplbV9jb250YWN0X3N0b3JlKCRuYW1lLCAkbGFi ZWwsICR2YWx1ZSk7CgkJCX0KCQl9CgoJCWVsc2VpZiAoJHJlcXVpcmVkKQoJCXsKCQkJJHpl bV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9nVHh0KCdmaWVsZF9taXNzaW5nJywg JGhsYWJlbCk7CgkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7CgkJfQoJfQoKCWVsc2UK CXsKCQkkdmFsdWUgPSAkZGVmYXVsdDsKCX0KCgkkemVtUmVxdWlyZWQgPSAkcmVxdWlyZWQg PyAnemVtUmVxdWlyZWQnIDogJyc7CgoJcmV0dXJuICc8bGFiZWwgZm9yPSInLiRuYW1lLici IGNsYXNzPSJ6ZW1UZXh0YXJlYSAnLiR6ZW1SZXF1aXJlZC4kaXNFcnJvci4nICcuJG5hbWUu JyI+Jy5odG1sc3BlY2lhbGNoYXJzKCRsYWJlbCkuJzwvbGFiZWw+Jy4kYnJlYWsuCgkJJzx0 ZXh0YXJlYSBpZD0iJy4kbmFtZS4nIiBjbGFzcz0iemVtVGV4dGFyZWEgJy4kemVtUmVxdWly ZWQuJGlzRXJyb3IuJyIgbmFtZT0iJy4kbmFtZS4nIiBjb2xzPSInLiRjb2xzLiciIHJvd3M9 IicuJHJvd3MuJyI+Jy5odG1sc3BlY2lhbGNoYXJzKCR2YWx1ZSkuJzwvdGV4dGFyZWE+JzsK fQoKZnVuY3Rpb24gemVtX2NvbnRhY3RfZW1haWwoJGF0dHMpCnsKCWdsb2JhbCAkemVtX2Nv bnRhY3RfZXJyb3IsICR6ZW1fY29udGFjdF9zdWJtaXQsICR6ZW1fY29udGFjdF9mcm9tLCAk emVtX2NvbnRhY3RfcmVjaXBpZW50OwoKCWV4dHJhY3QoemVtX2NvbnRhY3RfbEF0dHMoYXJy YXkoCgkJJ2RlZmF1bHQnCT0+ICcnLAoJCSdpc0Vycm9yJwk9PiAnJywKCQknbGFiZWwnCQk9 PiB6ZW1fY29udGFjdF9nVHh0KCdlbWFpbCcpLAoJCSdtYXgnCQk9PiAxMDAsCgkJJ21pbicJ CT0+IDAsCgkJJ25hbWUnCQk9PiAnJywKCQkncmVxdWlyZWQnCT0+IDEsCgkJJ2JyZWFrJwkJ PT4gYnIsCgkJJ3NpemUnCQk9PiAnJywKCQknc2VuZF9hcnRpY2xlJwk9PiAwCgkpLCAkYXR0 cykpOwoKCWlmIChlbXB0eSgkbmFtZSkpICRuYW1lID0gemVtX2NvbnRhY3RfbGFiZWwybmFt ZSgkbGFiZWwpOwoKCSRlbWFpbCA9ICR6ZW1fY29udGFjdF9zdWJtaXQgPyB0cmltKHBzKCRu YW1lKSkgOiAkZGVmYXVsdDsKCglpZiAoJHplbV9jb250YWN0X3N1Ym1pdCBhbmQgc3RybGVu KCRlbWFpbCkpCgl7CgkJaWYgKCFpc192YWxpZF9lbWFpbCgkZW1haWwpKQoJCXsKCQkJJHpl bV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9nVHh0KCdpbnZhbGlkX2VtYWlsJywg aHRtbHNwZWNpYWxjaGFycygkZW1haWwpKTsKCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50 IjsKCQl9CgoJCWVsc2UKCQl7CgkJCXByZWdfbWF0Y2goIi9AKC4rKSQvIiwgJGVtYWlsLCAk bWF0Y2gpOwoJCQkkZG9tYWluID0gJG1hdGNoWzFdOwoKCQkJaWYgKGlzX2NhbGxhYmxlKCdj aGVja2Ruc3JyJykgYW5kIGNoZWNrZG5zcnIoJ3RleHRwYXR0ZXJuLmNvbS4nLCdBJykgYW5k ICFjaGVja2Ruc3JyKCRkb21haW4uJy4nLCdNWCcpIGFuZCAhY2hlY2tkbnNycigkZG9tYWlu LicuJywnQScpKQoJCQl7CgkJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0 X2dUeHQoJ2ludmFsaWRfaG9zdCcsIGh0bWxzcGVjaWFsY2hhcnMoJGRvbWFpbikpOwoJCQkJ JGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsKCQkJfQoKCQkJZWxzZQoJCQl7CgkJCQlpZiAo JHNlbmRfYXJ0aWNsZSkgewoJCQkJCSR6ZW1fY29udGFjdF9yZWNpcGllbnQgPSAkZW1haWw7 CgkJCQl9CgkJCQllbHNlIHsKCQkJCQkkemVtX2NvbnRhY3RfZnJvbSA9ICRlbWFpbDsKCQkJ CX0KCQkJfQoJCX0KCX0KCglyZXR1cm4gemVtX2NvbnRhY3RfdGV4dChhcnJheSgKCQknZGVm YXVsdCcJPT4gJGVtYWlsLAoJCSdpc0Vycm9yJwk9PiAkaXNFcnJvciwKCQknbGFiZWwnCQk9 PiAkbGFiZWwsCgkJJ21heCcJCT0+ICRtYXgsCgkJJ21pbicJCT0+ICRtaW4sCgkJJ25hbWUn CQk9PiAkbmFtZSwKCQkncmVxdWlyZWQnCT0+ICRyZXF1aXJlZCwKCQknYnJlYWsnCQk9PiAk YnJlYWssCgkJJ3NpemUnCQk9PiAkc2l6ZQoJKSk7Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0 X3NlbGVjdCgkYXR0cykKewoJZ2xvYmFsICR6ZW1fY29udGFjdF9lcnJvciwgJHplbV9jb250 YWN0X3N1Ym1pdDsKCglleHRyYWN0KHplbV9jb250YWN0X2xBdHRzKGFycmF5KAoJCSduYW1l JwkJPT4gJycsCgkJJ2JyZWFrJwkJPT4gJyAnLAoJCSdkZWxpbWl0ZXInCT0+ICcsJywKCQkn aXNFcnJvcicJPT4gJycsCgkJJ2xhYmVsJwkJPT4gemVtX2NvbnRhY3RfZ1R4dCgnb3B0aW9u JyksCgkJJ2xpc3QnCQk9PiB6ZW1fY29udGFjdF9nVHh0KCdnZW5lcmFsX2lucXVpcnknKSwK CQkncmVxdWlyZWQnCT0+IDEsCgkJJ3NlbGVjdGVkJwk9PiAnJwoJKSwgJGF0dHMpKTsKCglp ZiAoZW1wdHkoJG5hbWUpKSAkbmFtZSA9IHplbV9jb250YWN0X2xhYmVsMm5hbWUoJGxhYmVs KTsKCgkkbGlzdCA9IGFycmF5X21hcCgndHJpbScsIHNwbGl0KCRkZWxpbWl0ZXIsIHByZWdf cmVwbGFjZSgnL1tcclxuXHRcc10rLycsICcgJywkbGlzdCkpKTsKCglpZiAoJHplbV9jb250 YWN0X3N1Ym1pdCkKCXsKCQkkdmFsdWUgPSB0cmltKHBzKCRuYW1lKSk7CgoJCWlmIChzdHJs ZW4oJHZhbHVlKSkKCQl7CgkJCWlmIChpbl9hcnJheSgkdmFsdWUsICRsaXN0KSkKCQkJewoJ CQkJemVtX2NvbnRhY3Rfc3RvcmUoJG5hbWUsICRsYWJlbCwgJHZhbHVlKTsKCQkJfQoKCQkJ ZWxzZQoJCQl7CgkJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQo J2ludmFsaWRfdmFsdWUnLCBodG1sc3BlY2lhbGNoYXJzKCRsYWJlbCksIGh0bWxzcGVjaWFs Y2hhcnMoJHZhbHVlKSk7CgkJCQkkaXNFcnJvciA9ICJlcnJvckVsZW1lbnQiOwoJCQl9CgkJ fQoKCQllbHNlaWYgKCRyZXF1aXJlZCkKCQl7CgkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0g emVtX2NvbnRhY3RfZ1R4dCgnZmllbGRfbWlzc2luZycsIGh0bWxzcGVjaWFsY2hhcnMoJGxh YmVsKSk7CgkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7CgkJfQoJfQoJZWxzZQoJewoJ CSR2YWx1ZSA9ICRzZWxlY3RlZDsKCX0KCgkkb3V0ID0gJyc7CgoJZm9yZWFjaCAoJGxpc3Qg YXMgJGl0ZW0pCgl7CgkJJG91dCAuPSBuLnQuJzxvcHRpb24nLigkaXRlbSA9PSAkdmFsdWUg PyAnIHNlbGVjdGVkPSJzZWxlY3RlZCI+JyA6ICc+JykuKHN0cmxlbigkaXRlbSkgPyBodG1s c3BlY2lhbGNoYXJzKCRpdGVtKSA6ICcgJykuJzwvb3B0aW9uPic7Cgl9CgoJJHplbVJlcXVp cmVkID0gJHJlcXVpcmVkID8gJ3plbVJlcXVpcmVkJyA6ICcnOwoKCXJldHVybiAnPGxhYmVs IGZvcj0iJy4kbmFtZS4nIiBjbGFzcz0iemVtU2VsZWN0ICcuJHplbVJlcXVpcmVkLiRpc0Vy cm9yLicgJy4kbmFtZS4nIj4nLmh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKS4nPC9sYWJlbD4n LiRicmVhay4KCQluLic8c2VsZWN0IGlkPSInLiRuYW1lLiciIG5hbWU9IicuJG5hbWUuJyIg Y2xhc3M9InplbVNlbGVjdCAnLiR6ZW1SZXF1aXJlZC4kaXNFcnJvci4nIj4nLgoJCQkkb3V0 LgoJCW4uJzwvc2VsZWN0Pic7Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X2NoZWNrYm94KCRh dHRzKQp7CglnbG9iYWwgJHplbV9jb250YWN0X2Vycm9yLCAkemVtX2NvbnRhY3Rfc3VibWl0 OwoKCWV4dHJhY3QoemVtX2NvbnRhY3RfbEF0dHMoYXJyYXkoCgkJJ2JyZWFrJwkJPT4gJyAn LAoJCSdjaGVja2VkJwk9PiAwLAoJCSdpc0Vycm9yJwk9PiAnJywKCQknbGFiZWwnCQk9PiB6 ZW1fY29udGFjdF9nVHh0KCdjaGVja2JveCcpLAoJCSduYW1lJwkJPT4gJycsCgkJJ3JlcXVp cmVkJwk9PiAxCgkpLCAkYXR0cykpOwoKCWlmIChlbXB0eSgkbmFtZSkpICRuYW1lID0gemVt X2NvbnRhY3RfbGFiZWwybmFtZSgkbGFiZWwpOwoKCWlmICgkemVtX2NvbnRhY3Rfc3VibWl0 KQoJewoJCSR2YWx1ZSA9IChib29sKSBwcygkbmFtZSk7CgoJCWlmICgkcmVxdWlyZWQgYW5k ICEkdmFsdWUpCgkJewoJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dU eHQoJ2ZpZWxkX21pc3NpbmcnLCBodG1sc3BlY2lhbGNoYXJzKCRsYWJlbCkpOwoJCQkkaXNF cnJvciA9ICJlcnJvckVsZW1lbnQiOwoJCX0KCgkJZWxzZQoJCXsKCQkJemVtX2NvbnRhY3Rf c3RvcmUoJG5hbWUsICRsYWJlbCwgJHZhbHVlID8gZ1R4dCgneWVzJykgOiBnVHh0KCdubycp KTsKCQl9Cgl9CgoJZWxzZSB7CgkJJHZhbHVlID0gJGNoZWNrZWQ7Cgl9CgoJJHplbVJlcXVp cmVkID0gJHJlcXVpcmVkID8gJ3plbVJlcXVpcmVkJyA6ICcnOwoKCXJldHVybiAnPGlucHV0 IHR5cGU9ImNoZWNrYm94IiBpZD0iJy4kbmFtZS4nIiBjbGFzcz0iemVtQ2hlY2tib3ggJy4k emVtUmVxdWlyZWQuJGlzRXJyb3IuJyIgbmFtZT0iJy4kbmFtZS4nIicuCgkJKCR2YWx1ZSA/ ICcgY2hlY2tlZD0iY2hlY2tlZCInIDogJycpLicgLz4nLiRicmVhay4KCQknPGxhYmVsIGZv cj0iJy4kbmFtZS4nIiBjbGFzcz0iemVtQ2hlY2tib3ggJy4kemVtUmVxdWlyZWQuJGlzRXJy b3IuJyAnLiRuYW1lLiciPicuaHRtbHNwZWNpYWxjaGFycygkbGFiZWwpLic8L2xhYmVsPic7 Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X3NlcnZlcmluZm8oJGF0dHMpCnsKCWdsb2JhbCAk emVtX2NvbnRhY3Rfc3VibWl0OwoKCWV4dHJhY3QoemVtX2NvbnRhY3RfbEF0dHMoYXJyYXko CgkJJ2xhYmVsJwkJPT4gJycsCgkJJ25hbWUnCQk9PiAnJwoJKSwgJGF0dHMpKTsKCglpZiAo ZW1wdHkoJG5hbWUpKSAkbmFtZSA9IHplbV9jb250YWN0X2xhYmVsMm5hbWUoJGxhYmVsKTsK CglpZiAoc3RybGVuKCRuYW1lKSBhbmQgJHplbV9jb250YWN0X3N1Ym1pdCkKCXsKCQlpZiAo ISRsYWJlbCkgJGxhYmVsID0gJG5hbWU7CgkJemVtX2NvbnRhY3Rfc3RvcmUoJG5hbWUsICRs YWJlbCwgc2VydmVyU2V0KCRuYW1lKSk7Cgl9Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X3Nl Y3JldCgkYXR0cywgJHRoaW5nID0gJycpCnsKCWdsb2JhbCAkemVtX2NvbnRhY3Rfc3VibWl0 OwoKCWV4dHJhY3QoemVtX2NvbnRhY3RfbEF0dHMoYXJyYXkoCgkJJ25hbWUnCT0+ICcnLAoJ CSdsYWJlbCcJPT4gemVtX2NvbnRhY3RfZ1R4dCgnc2VjcmV0JyksCgkJJ3ZhbHVlJwk9PiAn JwoJKSwgJGF0dHMpKTsKCgkkbmFtZSA9IHplbV9jb250YWN0X2xhYmVsMm5hbWUoJG5hbWUg PyAkbmFtZSA6ICRsYWJlbCk7CgoJaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQpCgl7CgkJaWYg KCR0aGluZykgJHZhbHVlID0gdHJpbShwYXJzZSgkdGhpbmcpKTsKCQl6ZW1fY29udGFjdF9z dG9yZSgkbmFtZSwgJGxhYmVsLCAkdmFsdWUpOwoJfQoKCXJldHVybiAnJzsKfQoKZnVuY3Rp b24gemVtX2NvbnRhY3RfcmFkaW8oJGF0dHMpCnsKCWdsb2JhbCAkemVtX2NvbnRhY3RfZXJy b3IsICR6ZW1fY29udGFjdF9zdWJtaXQsICR6ZW1fY29udGFjdF92YWx1ZXM7CgoJZXh0cmFj dCh6ZW1fY29udGFjdF9sQXR0cyhhcnJheSgKCQknYnJlYWsnCQk9PiAnICcsCgkJJ2NoZWNr ZWQnCT0+IDAsCgkJJ2dyb3VwJwkJPT4gJycsCgkJJ2xhYmVsJwkJPT4gemVtX2NvbnRhY3Rf Z1R4dCgnb3B0aW9uJyksCgkJJ25hbWUnCQk9PiAnJwoJKSwgJGF0dHMpKTsKCglzdGF0aWMg JGN1cl9uYW1lID0gJyc7CglzdGF0aWMgJGN1cl9ncm91cCA9ICcnOwoKCWlmICghJG5hbWUg YW5kICEkZ3JvdXAgYW5kICEkY3VyX25hbWUgYW5kICEkY3VyX2dyb3VwKSB7CgkJJGN1cl9n cm91cCA9IHplbV9jb250YWN0X2dUeHQoJ3JhZGlvJyk7CgkJJGN1cl9uYW1lID0gJGN1cl9n cm91cDsKCX0KCWlmICgkZ3JvdXAgYW5kICEkbmFtZSBhbmQgJGdyb3VwICE9ICRjdXJfZ3Jv dXApICRuYW1lID0gJGdyb3VwOwoKCWlmICgkbmFtZSkgJGN1cl9uYW1lID0gJG5hbWU7Cgll bHNlICRuYW1lID0gJGN1cl9uYW1lOwoKCWlmICgkZ3JvdXApICRjdXJfZ3JvdXAgPSAkZ3Jv dXA7CgllbHNlICRncm91cCA9ICRjdXJfZ3JvdXA7CgoJJGlkICAgPSAncScubWQ1KCRuYW1l Lic9PicuJGxhYmVsKTsKCSRuYW1lID0gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgkbmFtZSk7 CgoJaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQpCgl7CgkJJGlzX2NoZWNrZWQgPSAocHMoJG5h bWUpID09ICRpZCk7CgoJCWlmICgkaXNfY2hlY2tlZCBvciAkY2hlY2tlZCBhbmQgIWlzc2V0 KCR6ZW1fY29udGFjdF92YWx1ZXNbJG5hbWVdKSkKCQl7CgkJCXplbV9jb250YWN0X3N0b3Jl KCRuYW1lLCAkZ3JvdXAsICRsYWJlbCk7CgkJfQoJfQoKCWVsc2UKCXsKCQkkaXNfY2hlY2tl ZCA9ICRjaGVja2VkOwoJfQoKCXJldHVybiAnPGlucHV0IHZhbHVlPSInLiRpZC4nIiB0eXBl PSJyYWRpbyIgaWQ9IicuJGlkLiciIGNsYXNzPSJ6ZW1SYWRpbyAnLiRuYW1lLiciIG5hbWU9 IicuJG5hbWUuJyInLgoJCSggJGlzX2NoZWNrZWQgPyAnIGNoZWNrZWQ9ImNoZWNrZWQiIC8+ JyA6ICcgLz4nKS4kYnJlYWsuCgkJJzxsYWJlbCBmb3I9IicuJGlkLiciIGNsYXNzPSJ6ZW1S YWRpbyAnLiRuYW1lLiciPicuaHRtbHNwZWNpYWxjaGFycygkbGFiZWwpLic8L2xhYmVsPic7 Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X3NlbmRfYXJ0aWNsZSgkYXR0cykKewoJaWYgKCFp c3NldCgkX1JFUVVFU1RbJ3plbV9jb250YWN0X3NlbmRfYXJ0aWNsZSddKSkgewoJCSRsaW5r dGV4dCA9IChlbXB0eSgkYXR0c1snbGlua3RleHQnXSkpID8gemVtX2NvbnRhY3RfZ1R4dCgn c2VuZF9hcnRpY2xlJykgOiAkYXR0c1snbGlua3RleHQnXTsKCQkkam9pbiA9IChlbXB0eSgk X1NFUlZFUlsnUVVFUllfU1RSSU5HJ10pKSA/ICc/JyA6ICcmJzsKCQkkaHJlZiA9ICRfU0VS VkVSWydSRVFVRVNUX1VSSSddLiRqb2luLid6ZW1fY29udGFjdF9zZW5kX2FydGljbGU9eWVz JzsKCQlyZXR1cm4gJzxhIGhyZWY9IicuaHRtbHNwZWNpYWxjaGFycygkaHJlZikuJyI+Jy5o dG1sc3BlY2lhbGNoYXJzKCRsaW5rdGV4dCkuJzwvYT4nOwoJfQoJcmV0dXJuOwp9CgpmdW5j dGlvbiB6ZW1fY29udGFjdF9zdWJtaXQoJGF0dHMsICR0aGluZykKewoJZXh0cmFjdCh6ZW1f Y29udGFjdF9sQXR0cyhhcnJheSgKCQknYnV0dG9uJwk9PiAwLAoJCSdsYWJlbCcJCT0+IHpl bV9jb250YWN0X2dUeHQoJ3NlbmQnKQoJKSwgJGF0dHMpKTsKCgkkbGFiZWwgPSBodG1sc3Bl Y2lhbGNoYXJzKCRsYWJlbCk7CgoJaWYgKCRidXR0b24gb3Igc3RybGVuKCR0aGluZykpCgl7 CgkJcmV0dXJuICc8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9InplbVN1Ym1pdCIgbmFt ZT0iemVtX2NvbnRhY3Rfc3VibWl0IiB2YWx1ZT0iJy4kbGFiZWwuJyI+Jy4oJHRoaW5nID8g dHJpbShwYXJzZSgkdGhpbmcpKSA6ICRsYWJlbCkuJzwvYnV0dG9uPic7Cgl9CgllbHNlCgl7 CgkJcmV0dXJuICc8aW5wdXQgdHlwZT0ic3VibWl0IiBjbGFzcz0iemVtU3VibWl0IiBuYW1l PSJ6ZW1fY29udGFjdF9zdWJtaXQiIHZhbHVlPSInLiRsYWJlbC4nIiAvPic7Cgl9Cn0KCmZ1 bmN0aW9uIHplbV9jb250YWN0X2xBdHRzKCRhcnIsICRhdHRzKQp7Cglmb3JlYWNoKGFycmF5 KCdidXR0b24nLCAnY29weXNlbmRlcicsICdjaGVja2VkJywgJ3JlcXVpcmVkJywgJ3NlbmRf YXJ0aWNsZScsICdzaG93X2lucHV0JywgJ3Nob3dfZXJyb3InKSBhcyAka2V5KQoJewoJCWlm IChpc3NldCgkYXR0c1ska2V5XSkpCgkJewoJCQkkYXR0c1ska2V5XSA9ICgkYXR0c1ska2V5 XSA9PT0gJ3llcycgb3IgaW50dmFsKCRhdHRzWyRrZXldKSkgPyAxIDogMDsKCQl9Cgl9Cglp ZiAoaXNzZXQoJGF0dHNbJ2JyZWFrJ10pIGFuZCAkYXR0c1snYnJlYWsnXSA9PSAnYnInKSAk YXR0c1snYnJlYWsnXSA9ICc8YnIgLz4nOwoJcmV0dXJuIGxBdHRzKCRhcnIsICRhdHRzKTsK fQoKY2xhc3MgemVtY29udGFjdF9ldmFsdWF0aW9uCnsKCXZhciAkc3RhdHVzOwoKCWZ1bmN0 aW9uIHplbWNvbnRhY3RfZXZhbHVhdGlvbigpIHsKCQkkdGhpcy0+c3RhdHVzID0gMDsKCX0K CglmdW5jdGlvbiBhZGRfemVtY29udGFjdF9zdGF0dXMoJGNoZWNrKSB7CgkJJHRoaXMtPnN0 YXR1cyArPSAkY2hlY2s7Cgl9CgoJZnVuY3Rpb24gZ2V0X3plbWNvbnRhY3Rfc3RhdHVzKCkg ewoJCXJldHVybiAkdGhpcy0+c3RhdHVzOwoJfQp9CgpmdW5jdGlvbiAmZ2V0X3plbWNvbnRh Y3RfZXZhbHVhdG9yKCkKewoJc3RhdGljICRpbnN0YW5jZTsKCglpZighaXNzZXQoJGluc3Rh bmNlKSkgewoJCSRpbnN0YW5jZSA9IG5ldyB6ZW1jb250YWN0X2V2YWx1YXRpb24oKTsKCX0K CXJldHVybiAkaW5zdGFuY2U7Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X2xhYmVsMm5hbWUo JGxhYmVsKQp7CgkkbGFiZWwgPSB0cmltKCRsYWJlbCk7CglpZiAoc3RybGVuKCRsYWJlbCkg PT0gMCkgcmV0dXJuICdpbnZhbGlkJzsKCWlmIChzdHJsZW4oJGxhYmVsKSA8PSAzMiBhbmQg cHJlZ19tYXRjaCgnL15bYS16QS1aXVtBLVphLXowLTk6Xy1dKiQvJywgJGxhYmVsKSkgcmV0 dXJuICRsYWJlbDsKCWVsc2UgcmV0dXJuICdxJy5tZDUoJGxhYmVsKTsKfQoKZnVuY3Rpb24g emVtX2NvbnRhY3Rfc3RvcmUoJG5hbWUsICRsYWJlbCwgJHZhbHVlKQp7CglnbG9iYWwgJHpl bV9jb250YWN0X2Zvcm0sICR6ZW1fY29udGFjdF9sYWJlbHMsICR6ZW1fY29udGFjdF92YWx1 ZXM7CgkkemVtX2NvbnRhY3RfZm9ybVskbGFiZWxdID0gJHZhbHVlOwoJJHplbV9jb250YWN0 X2xhYmVsc1skbmFtZV0gPSAkbGFiZWw7CgkkemVtX2NvbnRhY3RfdmFsdWVzWyRuYW1lXSA9 ICR2YWx1ZTsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3RfbWFpbGhlYWRlcigkc3RyaW5nLCAk dHlwZSkKewoJZ2xvYmFsICRwcmVmczsKCWlmICghc3Ryc3RyKCRzdHJpbmcsJz0/JykgYW5k ICFwcmVnX21hdGNoKCcvW1x4MDAtXHgxRlx4N0YtXHhGRl0vJywgJHN0cmluZykpIHsKCQlp ZiAoInBocmFzZSIgPT0gJHR5cGUpIHsKCQkJaWYgKHByZWdfbWF0Y2goJy9bXVsoKTw+QCw7 OiIuXHg1Q10vJywgJHN0cmluZykpIHsKCQkJCSRzdHJpbmcgPSAnIicuIHN0cnRyKCRzdHJp bmcsIGFycmF5KCJcXCIgPT4gIlxcXFwiLCAnIicgPT4gJ1wiJykpIC4gJyInOwoJCQl9CgkJ fQoJCWVsc2VpZiAoInRleHQiICE9ICR0eXBlKSB7CgkJCXRyaWdnZXJfZXJyb3IoJ1Vua25v d24gZW5jb2RlX21haWxoZWFkZXIgdHlwZScsIEVfVVNFUl9XQVJOSU5HKTsKCQl9CgkJcmV0 dXJuICRzdHJpbmc7Cgl9CglpZiAoJHByZWZzWydvdmVycmlkZV9lbWFpbGNoYXJzZXQnXSkg ewoJCSRzdGFydCA9ICc9P0lTTy04ODU5LTE/Qj8nOwoJCSRwY3JlICA9ICcvLnsxLDQyfS9z JzsKCX0KCWVsc2UgewoJCSRzdGFydCA9ICc9P1VURi04P0I/JzsKCQkkcGNyZSAgPSAnLy57 MSw0NX0oPz1bXHgwMC1ceDdGXHhDMC1ceEZGXXwkKS9zJzsKCX0KCSRlbmQgPSAnPz0nOwoJ JHNlcCA9IGlzX3dpbmRvd3MoKSA/ICJcclxuIiA6ICJcbiI7CglwcmVnX21hdGNoX2FsbCgk cGNyZSwgJHN0cmluZywgJG1hdGNoZXMpOwoJcmV0dXJuICRzdGFydCAuIGpvaW4oJGVuZC4k c2VwLicgJy4kc3RhcnQsIGFycmF5X21hcCgnYmFzZTY0X2VuY29kZScsJG1hdGNoZXNbMF0p KSAuICRlbmQ7Cn0KIjtzOjM6Im1kNSI7czozMjoiY2I3NzJmMzA1NzI3YTllOWU1ZmQ3ZDE2 MTZmNTY5OTYiO30=