# jmc_event_manager v0.3beta # Event Manager for Textpattern # Joel Courtney # http://euphemize.net/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjc6InZlcnNpb24iO3M6NzoiMC4zYmV0YSI7czo2OiJhdXRob3IiO3M6MTM6Ikpv ZWwgQ291cnRuZXkiO3M6MTA6ImF1dGhvcl91cmkiO3M6MjE6Imh0dHA6Ly9ldXBoZW1pemUu bmV0LyI7czoxMToiZGVzY3JpcHRpb24iO3M6Mjk6IkV2ZW50IE1hbmFnZXIgZm9yIFRleHRw YXR0ZXJuIjtzOjQ6InR5cGUiO2k6MTtzOjQ6Im5hbWUiO3M6MTc6ImptY19ldmVudF9tYW5h Z2VyIjtzOjQ6ImhlbHAiO3M6MTMwMTQ6IjxoMiBjbGFzcz0iZW50cnktdGl0bGUiPmptY19l dmVudF9tYW5hZ2VyPC9oMj4KPGgzPjxhIGhyZWY9Imh0dHA6Ly9maWxlcy5ldXBoZW1pemUu bmV0L3RleHRwYXR0ZXJuL2ptY19ldmVudF9tYW5hZ2VyLnR4dCI+RG93bmxvYWQgam1jX2V2 ZW50X21hbmFnZXIgdjAuMmJldGE8L2E+PC9oMz4KPGgyPlByZWFtYmxlPC9oMj4KPHA+VGhl IGptY19ldmVudF9tYW5hZ2VyIGlzIGEgcGx1Z2luL2hhY2sgZm9yIHRleHRwYXR0ZXJuIGNy ZWF0ZWQgdG8gYWxsb3cgdXNlcnMgdG8gY3JlYXRlIGV2ZW50cyBhdCB2YXJpb3VzIHZlbnVl cy4gSXQgaGFzIGJlZW4gZG9uZSBzbyBjb21wbGV0ZWx5IGJ5ICYjODIxNjtqdTpmZW1haXog QCA8YSBocmVmPSJodHRwOi8vZXVwaGVtaXplLm5ldCI+ZXVwaGVtaXplLm5ldDwvYT4uIEFu eSBjb21tZW50cyBvciBzdWdnZXN0aW9ucyB3b3VsZCBiZSBhcHByZWNpYXRlZCBhbmQgdGhl IHN1cHBvcnQgdGhyZWFkIGF0IDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5j b20iPmZvcnVtLnRleHRwYXR0ZXJuLmNvbTwvYT4gaXMgPGEgaHJlZj0iaHR0cDovL2ZvcnVt LnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTExMTM3Ij5hdmFpbGFibGUgaGVy ZTwvYT4uIFdoaWxlIHRoaXMgaGVscCBmaWxlIGhhcyBhdHRlbXB0ZWQgdG8gYmUgYXMgdGhv cm91Z2ggYXMgcG9zc2libGUsIHRoaW5ncyBkbyBmYWxsIHRocm91Z2ggdGhlIGNyYWNrcy4g U2luY2Ugam1jX2V2ZW50X21hbmFnZXIgaXMgKHN0aWxsKSBpbiBhIGJldGEgc3RhZ2UsIHRo ZXJlIG1heSBleGlzdCBzb21lIGJ1Z3MgaW4gdGhlIG9wZXJhdGlvbi4gQWRkaXRpb25hbGx5 LCB0aGUgcGx1Z2luL2hhY2sgaXMgYW4gb25nb2luZyBwcm9qZWN0IGFuZCBtYXkgYmUgdXBk YXRlZCBmcm9tIHRpbWUgdG8gdGltZS4gVG8gZW5zdXJlIHRoYXQgeW91IGhhdmUgdGhlIG1v c3QgdXAgdG8gZGF0ZSB2ZXJzaW9uLCBwbGVhc2UgZW5zdXJlIHlvdSB2aXNpdCB0aGUgPGEg aHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTEx MTM3Ij5zdXBwb3J0IGZvcnVtIHRocmVhZDwvYT4gcmVndWxhcmx5LjwvcD4KPHA+am1jX2V2 ZW50X21hbmFnZXIgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBwbGVhc2UgdmlzaXQgPGEgaHJlZj0i aHR0cDovL3d3dy5nbnUub3JnL2NvcHlsZWZ0L2dwbC5odG1sIj5HTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZTwvYT4uPC9wPgo8aDI+SW5zdGFsbGF0aW9uPC9oMj4KPHA+VGhlIGluc3Rh bGxhdGlvbiBwYWNrYWdlIGlzIGEgc2ltcGxlIHByb2Nlc3MuIEZvciB0aG9zZSBvZiB5b3Ug dXBncmFkaW5nLCB0aGVyZSBhcmUgYWRkaXRpb25hbCByZXF1aXJlbWVudHMgb24geW91ciBi ZWhhbGYgZHVlIHRvIHRoZSBhZGRpdGlvbiBvZiBjYXRlZ29yaWVzIHRvIGptY19ldmVudF9t YW5hZ2VyLjwvcD4KPGgzPkZyZXNoIEluc3RhbGw8L2gzPgo8cD5Gb3IgdGhvc2UgdW5kZXJn b2luZyBhIGZyZXNoIGluc3RhbGwsIHBsZWFzZSBnbyB0aHJvdWdoIHRoZSBmb2xsb3dpbmcg c3RlcHM6PC9wPgo8b2w+CjxsaT5UdXJuIHRoZSBwbHVnaW4gdG8gYWN0aXZlPC9saT4KPGxp PkdvIHRvIENvbnRlbnQgYW5kIEV2ZW50IE1hbmFnZXIgdGFiczwvbGk+CjxsaT5EbyBhIGxp dHRsZSBkYW5jZSBhbmQgeW91JiM4MjE3O2xsIGZpbmQgdGhhdCB5b3UmIzgyMTc7cmUgcmVh ZHkgdG8gZ28hPC9saT4KPC9vbD4KPGgzPlVwZ3JhZGUgb24gUGFzdCBWZXJzaW9uPC9oMz4K PHA+QXMgd2l0aCBhbGwgdXBkYXRlcywgcGxlYXNlIGJhY2t1cCB5b3VyIGRhdGFiYXNlLCB0 aGVuIGdvIHRocm91Z2ggdGhlIGZvbGxvd2luZyBzdGVwczo8L3A+CjxvbD4KPGxpPlRocm91 Z2ggeW91ciBkYXRhYmFzZSBhZG1pbiwgYWRkIHRoZSBmb2xsb3dpbmcgY29sdW1ucyB0byB0 aGUKPHByZT50eHBfam1jX2V2ZW50PC9wcmU+CjxwPmFuZDwvcD4KPHByZT50eHBfam1jX2V2 ZW50X3ZlbnVlPC9wcmU+CjxwPnNldCBhcyBOVUxMIChvciBlcXVpdmFsZW50IG9uIHlvdXIg VGV4dHBhdHRlcm4gaW5zdGFsbGF0aW9uKTwvbGk+CjxsaT5BY3RpdmF0ZSBwbHVnaW48L2xp Pgo8bGk+R28gdG8gQ29udGVudCBhbmQgdGhlbiBFdmVudCBNYW5hZ2VyIHRhYjwvbGk+Cjxs aT5EbyBhIGxpdHRsZSBqaWcgYW5kIHlvdSBzaG91bGQgYmUgcmlnaHQgKyByZWFkeSB0byBn byE8L2xpPgo8L29sPgo8aDI+SW50cm9kdWN0aW9uIHRvIHRoZSBFdmVudCBNYW5hZ2VyPC9o Mj4KPHA+VGhlIGV2ZW50IG1hbmFnZXIgaGFzIHR3byBjb21wb25lbnRzIC0gdGhlIGFkbWlu IHNpZGUgY29udHJvbHMgYW5kIHRoZSBwdWJsaWMgc2lkZSBvdXRwdXQuIE9uIGluc3RhbGxh dGlvbiBpdCB3aWxsIGVuc3VyZSB0aGF0IGEgZGF0YWJhc2UgZXhpc3RzLCB0aGUgdGFibGVz IGV4aXN0LCBpbnN0YWxsaW5nIGlmIHRoZXkmIzgyMTc7cmUgbWlzc2luZywgYW5kIHRoYXQg YW4gZW50cnkgZXhpc3RzIGluIHRoZSB0YWJsZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBldmVu dCBtYW5hZ2VyIChpbiB0aGlzIHdheSBJIGNvbnNpZGVyIGl0IGEgaGFjaykuPC9wPgo8aDI+ RXZlbnQgTWFuYWdlciBUYWI8L2gyPgo8cD5XaGVuIHlvdSBnbyB0byB0aGUgZXZlbnQgbWFu YWdlciB0YWIgeW91IHdpbGwgYmUgcHJlc2VudGVkIHdpdGggYSBsaXN0IG9mIGV2ZW50cyB0 aGF0IGhhdmUgYmVlbiBlbnRlcmVkLiBDdXJyZW50bHksIHRoZSAmIzgyMjA7ZXZlbnRzIHBl ciBwYWdlJiM4MjIxOyBpcyBhIG1pcnJvciBvZiB0aGF0IHVzZWQgb24gdGhlIGFydGljbGUg cGFnZSwgYW5kIGFueSBhbHRlcmF0aW9uIHRvIHRoZSAmIzgyMjA7ZXZlbnRzIHBlciBwYWdl JiM4MjIxOyB3aWxsIGFsc28gYWx0ZXIgdGhlICYjODIyMDthcnRpY2xlcyBwZXIgcGFnZSYj ODIyMTsgdW5kZXIgdGhlICYjODIyMDthcnRpY2xlcyB0YWImIzgyMjE7LjwvcD4KPHA+VGhl cmUgYXJlIGN1cnJlbnRseSBmb3VyIHRvcCBsZXZlbCBidXR0b25zIGZvciB0aGUgRXZlbnQg TWFuYWdlcjo8L3A+Cjx1bD4KPGxpPkV2ZW50IE1hbmFnZXIgLSBNYW5hZ2VzIHRoZSBhY3R1 YWwgZXZlbnRzPC9saT4KPGxpPlZlbnVlIE1hbmFnZXIgLSBNYW5hZ2VzIHRoZSB2ZW51ZXMg Zm9yIHRoZSBldmVudHMuIEVhY2ggZXZlbnQgbXVzdCBiZSAmIzgyMjA7YXQmIzgyMjE7IGEg dmVudWU8L2xpPgo8bGk+Q2F0ZWdvcnkgTWFuYWdlciAtIE1hbmFnZXMgdGhlIG5ldyBjYXRl Z29yaWVzIGF2YWlsYWJsZSBmb3IgdGhlIHBsdWdpbjwvbGk+CjxsaT5SU1MgRmVlZCAtIEZv ciBmdXR1cmUgdmVyc2lvbnMgd2lsbCBhbGxvdyBhY2Nlc3MgdG8gYWx0ZXJhdGlvbnMgdG8g dGhlIFJTUyBmb3JtYXQ8L2xpPgo8L3VsPgo8aDM+RXZlbnQgTWFuYWdlcjwvaDM+CjxwPlRo ZSBkZWZhdWx0IHBhZ2Ugb2YgdGhlIHBsdWdpbiYjODIxNztzIHRhYi4gR2l2ZXMgdHdvIG9w dGlvbnM6PC9wPgo8dWw+CjxsaT5BZGQgRXZlbnQ8L2xpPgo8bGk+RXZlbnQgTGlzdGluZyAo ZGVmYXVsdCk8L2xpPgo8L3VsPgo8aDQ+QWRkIEV2ZW50PC9oND4KPHA+QWxsb3dzIHRoZSBh ZG1pbmlzdHJhdG9yIHRvIGFkZCBhbiBldmVudC4gVXRpbGlzZXMgPGEgaHJlZj0iaHR0cDov L21pY3JvZm9ybWF0cy5vcmcvIj5taWNyb2Zvcm1hdHM8L2E+IHN0eWxlIDxhIGhyZWY9Imh0 dHA6Ly9taWNyb2Zvcm1hdHMub3JnL3dpa2kvaGNhbGVuZGFyIj5oQ2FsZW5kYXI8L2E+Ljxh IGhyZWY9Imh0dHA6Ly9taWNyb2Zvcm1hdHMub3JnL3dpa2kvaGNhbGVuZGFyIj48L2E+PC9w Pgo8cD5PcHRpb25hbDo8L3A+Cjx1bD4KPGxpPkNhdGVnb3J5PC9saT4KPGxpPkV2ZW50IE5h bWU8L2xpPgo8bGk+UHJpY2U8L2xpPgo8bGk+T3RoZXIgQmFuZHM8L2xpPgo8bGk+T3RoZXIg SW5mbzwvbGk+CjwvdWw+CjxwPlJlcXVpcmVkOjwvcD4KPHVsPgo8bGk+U3RhcnQgRGF0ZSAr IFRpbWU8L2xpPgo8bGk+RmluaXNoIERhdGUgKyBUaW1lPC9saT4KPGxpPlZlbnVlPC9saT4K PC91bD4KPHA+PHN0cm9uZz5Ob3RlPC9zdHJvbmc+OiBFdmVudCBtdXN0IEZpbmlzaCA8ZW0+ YWZ0ZXI8L2VtPiBpdCBiZWdpbnMuPC9wPgo8aDQ+RXZlbnQgTGlzdGluZzwvaDQ+CjxwPkJh c2ljIGxpc3Rpbmcgb2YgYWxsIGV2ZW50cyBwYXN0LCBwcmVzZW50IGFuZCBmdXR1cmUuPC9w Pgo8aDM+VmVudWUgTGlzdGluZzwvaDM+CjxwPkdpdmVzIHR3byBvcHRpb25zOjwvcD4KPHVs Pgo8bGk+QWRkIFZlbnVlPC9saT4KPGxpPlZlbnVlIExpc3RpbmcgKGRlZmF1bHQpPC9saT4K PC91bD4KPGg0PkFkZCBWZW51ZTwvaDQ+CjxwPkFsbG93cyB0aGUgYWRtaW5pc3RyYXRvciB0 byBhZGQgYSB2ZW51ZS4gT25seSB0aGUgdmVudWUgbmFtZSBpcyByZXF1aXJlZC4gVXRpbGlz ZXMgPGEgaHJlZj0iaHR0cDovL21pY3JvZm9ybWF0cy5vcmcvIj5taWNyb2Zvcm1hdDwvYT4g c3R5bGUgPGEgaHJlZj0iaHR0cDovL21pY3JvZm9ybWF0cy5vcmcvd2lraS9oY2FyZCI+aENh cmQ8L2E+LjwvcD4KPGg0PlZlbnVlIExpc3Rpbmc8L2g0Pgo8cD5CYXNpYyBsaXN0aW5nIG9m IGFsbCB2ZW51ZXMuPC9wPgo8aDM+Q2F0ZWdvcnkgTWFuYWdlcjwvaDM+CjxwPkdpdmVzIHR3 byBvcHRpb25zOjwvcD4KPHVsPgo8bGk+QWRkIENhdGVnb3J5PC9saT4KPGxpPkNhdGVnb3J5 IExpc3RpbmcgKGRlZmF1bHQpPC9saT4KPC91bD4KPGg0PkFkZCBDYXRlZ29yeTwvaDQ+Cjxw PkFsbG93cyB0aGUgYWRtaW5pc3RyYXRvciB0byBhZGQgYW4gY2F0ZWdvcnkuIE9ubHkgdGhl IGNhdGVnb3J5IG5hbWUgaXMgcmVxdWlyZWQuPC9wPgo8aDQ+Q2F0ZWdvcnkgTGlzdGluZzwv aDQ+CjxwPkJhc2ljIGxpc3Rpbmcgb2YgYWxsIGNhdGVnb3JpZXMuPC9wPgo8aDM+UlNTIEZl ZWQ8L2gzPgo8cD5TdGlsbCB0byBjb21lIGluIGZ1dHVyZSB1cGRhdGVzLiBVbnN1cmUgYXMg b2YgeWV0IGFzIHRvIHRoZSBkZXNpZ24sIGxheW91dCBhbmQgb3B0aW9ucy4gSWYgeW91IGhh dmUgaWRlYXMsIHBsZWFzZSBjb250YWN0IG1lIHRocm91Z2ggdGhlIDxhIGhyZWY9Imh0dHA6 Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0xMTEzNyI+am1jX2V2 ZW50X21hbmFnZXIgcGx1Z2luIGZvcnVtIHRocmVhZDwvYT4uPC9wPgo8aDI+Q3JlYXRpbmcg RXZlbnQgTWFuYWdlciBPdXRwdXQ8L2gyPgo8cD5UaGUgam1jX2V2ZW50X21hbmFnZXIgdXNl cyB0aGUgZm9ybXMgaW4gdGV4dHBhdHRlcm4gdG8gY3JlYXRlIHRoZSB0ZW1wbGF0ZSBmb3Ig dGhlIG91dHB1dC4gWW91IG1heSB1c2UgYW55IGZvcm0geW91IGxpa2UsIHByb3ZpZGluZyB0 aGF0IGl0IGhhcyB0aGUgcmVsZXZhbnQgZGV0YWlscywgaS5lLiB5b3UgY2FuIGNhbGwgaXQg ZnJvbSB3aXRoaW4gYW4gYXJ0aWNsZSwgZnJvbSBhIHBhZ2Ugb3IgZXZlbiBmcm9tIGEgZm9y bSBpdHNlbGYgKDxlbT55ZXQgdG8gYmUgdGVzdGVkPC9lbT4pLjwvcD4KPGgzPkNhbGxpbmcg dGhlIEV2ZW50IE1hbmFnZXI8L2gzPgo8cD5JbiBvcmRlciB0byBjYWxsIHRoZSBldmVudCBt YW5hZ2VyLCBhIHNpbXBsZSBUZXh0cGF0dGVybiBzdHlsZSB0YWcgaXMgdXNlZDo8L3A+Cjxw Pjxjb2RlPjwgdHhwIDpqbWNfZXZlbnRzIGZvcm09ImZvcm1fbmFtZSIgLz48L2NvZGU+PC9w Pgo8cD5UaGUgZm9ybV9uYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBmb3JtIHlvdSB3b3VsZCBs aWtlIHRvIGNhbGwgYXMgdGhlIHRlbXBsYXRlLiBqbWNfZXZlbnRzIGN5Y2xlcyB0aHJvdWdo IDxlbT5hbGw8L2VtPiBldmVudHMgYW5zd2VyaW5nIGl0cyByZXN0cmljdGlvbnMsIHRoYXQg aXMgaXQgY3ljbGVzIHRocm91Z2ggZWFjaCByZWxldmFudCBlbnRyeS48L3A+CjxwPlRoZXJl IGFyZSBtYW55IG9wdGlvbnMgYXMgdG8gaG93IHRvIGxpbWl0IHRoZSBudW1iZXIgYW5kIHR5 cGUgb2YgZXZlbnRzIGJlaW5nIGNhbGxlZC4gVGhlIGZvbGxvd2luZyBhcmUgdGhlIG9wdGlv bnMsIGdpdmVuIHdpdGggZGV0YWlscyBhbHNvIG9mIHRoZSBkZWZhdWx0IChpZiBhbnkpLjwv cD4KPHA+Rm9ybWF0dGluZyBmb3IgdmVudWVzIGlzIGRvbmUgaW5kZXBlbmRlbnRseSBvZiwg b3Igd2l0aGluLCB0aGUgZXZlbnQgZm9ybS48L3A+CjxoND5saW1pdDwvaDQ+CjxwPlVzZWQg dG8gcmVzdHJpY3QgdGhlIG51bWJlciBvZiBldmVudHMuPC9wPgo8cD5FeGFtcGxlIHVzYWdl OjwvcD4KPGRsPgo8ZHQ+TGltaXQgdG8gdGVuIGV2ZW50czo8L2R0Pgo8ZGQ+PGNvZGU+PCB0 eHAgOmptY19ldmVudHMgZm9ybT0iZm9ybV9uYW1lIiBsaW1pdD0iMTAiIC8+PC9jb2RlPjwv ZGQ+CjxkdD5WYWx1ZXM6PC9kdD4KPGRkPgo8cHJlPjB8MTwvcHJlPgo8L2RkPgo8ZHQ+RGVm YXVsdDo8L2R0Pgo8ZGQ+CjxwcmU+MTwvcHJlPgo8L2RkPgo8L2RsPgo8aDQ+ZnV0dXJlPC9o ND4KPHA+VXNlZCB0byByZXN0cmljdCB0aGUgZXZlbnRzIHRvIHRob3NlIHRoYXQgd2lsbCBz dGFydCBpbiB0aGUgZnV0dXJlLjwvcD4KPHA+RXhhbXBsZSB1c2FnZTo8L3A+CjxkbD4KPGR0 PkxpbWl0IHRvIGZ1dHVyZTo8L2R0Pgo8ZGQ+PGNvZGU+PCB0eHAgOmptY19ldmVudHMgZm9y bT0iZm9ybV9uYW1lIiBmdXR1cmU9IjEiIC8+PC9jb2RlPjwvZGQ+CjxkdD5WYWx1ZXM6PC9k dD4KPGRkPgo8cHJlPjB8MTwvcHJlPgo8L2RkPgo8ZHQ+RGVmYXVsdDo8L2R0Pgo8ZGQ+Cjxw cmU+MTwvcHJlPgo8L2RkPgo8L2RsPgo8aDQ+cGFzdDwvaDQ+CjxwPlVzZWQgdG8gcmVzdHJp Y3QgdGhlIGV2ZW50cyB0byB0aG9zZSB0aGF0IHdpbGwgc3RhcnQgaW4gdGhlIHBhc3QuPC9w Pgo8cD5FeGFtcGxlIHVzYWdlOjwvcD4KPGRsPgo8ZHQ+UGFzdCBvbmx5OjwvZHQ+CjxkZD48 Y29kZT48IHR4cCA6am1jX2V2ZW50cyBmb3JtPSJmb3JtX25hbWUiIHBhc3Q9IjEiIGZ1dHVy ZT0iMCIgLz48L2NvZGU+PC9kZD4KPGR0PlBhc3QgYW5kIGZ1dHVyZTo8L2R0Pgo8ZGQ+PGNv ZGU+PCB0eHAgOmptY19ldmVudHMgZm9ybT0iZm9ybV9uYW1lIiBwYXN0PSIxIiBmdXR1cmU9 IjAiIC8+PC9jb2RlPjwvZGQ+CjxkdD5WYWx1ZXM6PC9kdD4KPGRkPgo8cHJlPjB8MTwvcHJl Pgo8L2RkPgo8ZHQ+RGVmYXVsdDo8L2R0Pgo8ZGQ+CjxwcmU+MTwvcHJlPgo8L2RkPgo8L2Rs Pgo8aDQ+Y3VycmVudDwvaDQ+CjxwPlVzZWQgdG8gcmVzdHJpY3QgdGhlIGV2ZW50cyB0byB0 aG9zZSB0aGF0IHdpbGwgaGF2ZSBzdGFydGVkLCBidXQgaGF2ZSBub3QgeWV0IGZpbmlzaGVk LjwvcD4KPHA+RXhhbXBsZSB1c2FnZTo8L3A+CjxkbD4KPGR0PkN1cnJlbnQgb25seTo8L2R0 Pgo8ZGQ+PGNvZGU+PCB0eHAgOmptY19ldmVudHMgZm9ybT0iZm9ybV9uYW1lIiBjdXJyZW50 PSIxIiBmdXR1cmU9IjAiIC8+PC9jb2RlPjwvZGQ+CjxkdD5DdXJyZW50IGFuZCBGdXR1cmU6 PC9kdD4KPGRkPjxjb2RlPjwgdHhwIDpqbWNfZXZlbnRzIGZvcm09ImZvcm1fbmFtZSIgY3Vy cmVudD0iMSIgZnV0dXJlPSIxIiAvPjwvY29kZT48L2RkPgo8ZHQ+Q3VycmVudCBhbmQgUGFz dDo8L2R0Pgo8ZGQ+PGNvZGU+PCB0eHAgOmptY19ldmVudHMgZm9ybT0iZm9ybV9uYW1lIiBj dXJyZW50PSIxIiBwYXN0PSIxIiBmdXR1cmU9IjAiIC8+PC9jb2RlPjwvZGQ+CjxkdD5DdXJy ZW50LCBQYXN0IGFuZCBmdXR1cmU6PC9kdD4KPGRkPjxjb2RlPjwgdHhwIDpqbWNfZXZlbnRz IGZvcm09ImZvcm1fbmFtZSIgY3VycmVudD0iMSIgcGFzdD0iMSIgZnV0dXJlPSIxIiAvPjwv Y29kZT48L2RkPgo8ZHQ+VmFsdWVzOjwvZHQ+CjxkZD4KPHByZT4wfDE8L3ByZT4KPC9kZD4K PGR0PkRlZmF1bHQ6PC9kdD4KPGRkPgo8cHJlPjE8L3ByZT4KPC9kZD4KPC9kbD4KPGg0PmNh dGVnb3J5X2lkPC9oND4KPHA+VXNlZCB0byByZXN0cmljdCB0aGUgZXZlbnRzIHRvIHRob3Nl IG9mIGEgcGFydGljdWxhciBjYXRlZ29yeSBvciBjYXRlZ29yaWVzLjwvcD4KPHA+RXhhbXBs ZSB1c2FnZTo8L3A+CjxkbD4KPGR0PlNpbmdsZSBjYXRlZ29yeSAod2hlcmUgY2F0ZWdvcnkm IzgyMTc7cyBJRD0yKTo8L2R0Pgo8ZGQ+PGNvZGU+PCB0eHAgOmptY19ldmVudHMgZm9ybT0i Zm9ybV9uYW1lIiBjYXRlZ29yeV9pZD0iMiIgLz48L2NvZGU+PC9kZD4KPGR0Pk11bHRpcGxl IGNhdGVnb3JpZXMgKHdoZXJlIGNhdGVnb3J5JiM4MjE3O3MgSUQgaXMgaW4gYXJyYXkoMiw0 KSk6PC9kdD4KPGRkPjxjb2RlPjwgdHhwIDpqbWNfZXZlbnRzIGZvcm09ImZvcm1fbmFtZSIg Y2F0ZWdvcnlfaWQ9IjIsNCIgLz48L2NvZGU+PC9kZD4KPGR0PlZhbHVlczo8L2R0Pgo8ZGQ+ CjxwcmU+VmFsaWQgSUQgZnJvbSB0eHBfam1jX2V2ZW50X2NhdGVnb3J5PC9wcmU+CjwvZGQ+ CjxkdD5EZWZhdWx0OjwvZHQ+CjxkZD4KPHByZT5OVUxMPC9wcmU+CjwvZGQ+CjwvZGw+Cjxo ND52ZW51ZV9pZDwvaDQ+CjxwPlVzZWQgdG8gcmVzdHJpY3QgdGhlIGV2ZW50cyB0byB0aG9z ZSB0aGF0IHdpbGwgb2NjdXIgYXQgYSBzcGVjaWZpZWQgdmVudWUgb3IgdmVudWVzLjwvcD4K PHA+RXhhbXBsZSB1c2FnZTo8L3A+CjxkbD4KPGR0PlNpbmdsZSB2ZW51ZSAod2hlcmUgdmVu dWXigJlzIElEPTIpOjwvZHQ+CjxkZD48Y29kZT48IHR4cCA6am1jX2V2ZW50cyBmb3JtPSJm b3JtX25hbWUiIHZlbnVlX2lkPSIyIiAvPjwvY29kZT48L2RkPgo8ZHQ+TXVsdGlwbGUgdmVu dWVzICh3aGVyZSB2ZW51ZeKAmXMgSUQgaXMgaW4gYXJyYXkoMiw0KSk6PC9kdD4KPGRkPjxj b2RlPjwgdHhwIDpqbWNfZXZlbnRzIGZvcm09ImZvcm1fbmFtZSIgdmVudWVfaWQ9IjIsNCIg Lz48L2NvZGU+PC9kZD4KPGR0PlZhbHVlczo8L2R0Pgo8ZGQ+CjxwcmU+VmFsaWQgSUQgZnJv bSB0eHBfam1jX2V2ZW50X3ZlbnVlPC9wcmU+CjwvZGQ+CjxkdD5EZWZhdWx0OjwvZHQ+Cjxk ZD4KPHByZT5OVUxMPC9wcmU+CjwvZGQ+CjwvZGw+CjxoND5ldmVudF9pZDwvaDQ+CjxwPlVz ZWQgdG8gcmVzdHJpY3QgdGhlIGV2ZW50cyB0byBhIHBhcnRpY3VsYXIgZXZlbnQgb3IgZ3Jv dXAgb2YgZXZlbnRzLiBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgb3ZlcnJpZGVzIDxzdHJvbmc+ YWxsPC9zdHJvbmc+IG90aGVyIHZhcmlhYmxlcyE8L3A+CjxwPkV4YW1wbGUgdXNhZ2U6PC9w Pgo8ZGw+CjxkdD5TaW5nbGUgZXZlbnQgKHdoZXJlIGV2ZW504oCZcyBJRD0yKTo8L2R0Pgo8 ZGQ+PGNvZGU+PCB0eHAgOmptY19ldmVudHMgZm9ybT0iZm9ybV9uYW1lIiBldmVudF9pZD0i MiIgLz48L2NvZGU+PC9kZD4KPGR0Pk11bHRpcGxlIGV2ZW50cyAod2hlcmUgZXZlbnTigJlz IElEIGlzIGluIGFycmF5KDIsNCkpOjwvZHQ+CjxkZD48Y29kZT48IHR4cCA6am1jX2V2ZW50 cyBmb3JtPSJmb3JtX25hbWUiIGV2ZW50X2lkPSIyLDQiIC8+PC9jb2RlPjwvZGQ+CjxkdD5W YWx1ZXM6PC9kdD4KPGRkPgo8cHJlPlZhbGlkIElEIGZyb20gdHhwX2ptY19ldmVudDwvcHJl Pgo8L2RkPgo8ZHQ+RGVmYXVsdDo8L2R0Pgo8ZGQ+CjxwcmU+TlVMTDwvcHJlPgo8L2RkPgo8 L2RsPgo8aDQ+c29ydF9ieTwvaDQ+CjxwPlB1dHMgaW4gcGxhY2UgdGhlIE15U1FMIHNvcnQg YnkgYSB2YXJpYWJsZSBuYW1lLiBVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggc29ydF9vcmRl ci48L3A+CjxkbD4KPGR0PlZhbHVlczo8L2R0Pgo8ZGQ+CjxwcmU+SUQgfCBuYW1lIHwgc3Rh cnRfRGF0ZVRpbWUgfCBmaW5pc2hfRGF0ZVRpbWUgfCBBdXRob3JJRCB8IExhc3RNb2RJRCB8 IFZlbnVlSUQgfCBQcmljZSB8IE90aGVyQmFuZHMgfCBPdGhlckJhbmRzX2h0bWwgfCBPdGhl ckluZm8gfE90aGVySW5mb19odG1sIHwgQ2F0ZWdvcnlJRDwvcHJlPgo8L2RkPgo8ZHQ+RGVm YXVsdDo8L2R0Pgo8ZGQ+CjxwcmU+c3RhcnRfRGF0ZVRpbWU8L3ByZT4KPC9kZD4KPC9kbD4K PGg0PnNvcnRfb3JkZXI8L2g0Pgo8cD5EZXRlcm1pbmdzIHRoZSBvcmRlciBpbiB3aGljaCB0 aGUgZXZlbnRzIHdpbGwgYmUgZGlzcGxheWVkLjwvcD4KPGRsPgo8ZHQ+VmFsdWVzOjwvZHQ+ CjxkZD4KPHByZT5hc2N8ZGVzYzwvcHJlPgo8L2RkPgo8ZHQ+RGVmYXVsdDo8L2R0Pgo8ZGQ+ CjxwcmU+YXNjPC9wcmU+CjwvZGQ+CjwvZGw+CjxoMj5Gb3JtczwvaDI+CjxwPkV2ZW50cyBh bmQgdmVudWVzIGVhY2ggaGF2ZSB0aGVpciBvd24gZm9ybXMgd2l0aCB0aGVpciBvd24gdmFy aWFibGVzLjwvcD4KPGgzPkV2ZW50IEZvcm1zPC9oMz4KPGg0PkV2ZW50IE5hbWU8L2g0Pgo8 aDQ+RXZlbnQgSUQ8L2g0Pgo8aDQ+RXZlbnQgUHJpY2U8L2g0Pgo8aDQ+T3RoZXIgQmFuZHM8 L2g0Pgo8cD5JbnNlcnRzIHRoZSBodG1sIGZvciBvdGhlciBiYW5kIGluZm9ybWF0aW9uLjwv cD4KPGg0Pk90aGVyIEluZm9ybWF0aW9uPC9oND4KPGgzPlZlbnVlIEZvcm1zPC9oMz4KPHA+ VmVudWUgZm9ybSBvcHRpb25zIGNhbiBiZSBjYWxsZWQgZWl0aGVyIGZyb20gdGhlIGV2ZW50 IGZvcm0gZGlyZWN0bHksIG9yIGZyb20gYSBzZXBhcmF0ZSBmb3JtIHVzaW5nIHRoZSB0YWc6 PC9wPgo8aDQ+VmVudWUgTmFtZTwvaDQ+CjxoND5WZW51ZSBJRDwvaDQ+CjxoND5WZW51ZSBB ZGRyZXNzIDE8L2g0Pgo8aDQ+VmVudWUgQWRkcmVzcyAyPC9oND4KPGg0PlZlbnVlIFN1YnVy YjwvaDQ+CjxoND5WZW51ZSBTdGF0ZTwvaDQ+CjxoND5WZW51ZSBDb3VudHJ5PC9oND4KPGg0 PlZlbnVlIFBvc3Rjb2RlPC9oND4KPGg0PlZlbnVlIFBob25lPC9oND4KPGg0PlZlbnVlIFVS TDwvaDQ+CjxoND5WZW51ZSBFbWFpbDwvaDQ+CjxoND5WZW51ZSBPdGhlciBJbmZvcm1hdGlv bjwvaDQ+CjxoMz5Vc2VmdWwgRnVuY3Rpb248L2gzPgo8cD5JbiBvcmRlciB0byBleGVjdXRl IGEgZmV3IG1vcmUgb3B0aW9ucywgdGhlcmUgaXMgYSByZXF1aXJlbWVudCB0byBtYW5pcHVs YXRlIHRoaW5ncyBzdWNoIGFzIGRhdGVzLjwvcD4KPGg0PkV2ZW50IFRpbWVzPC9oND4KPHA+ RXZlbnQgdGltZXMgZ2l2ZSBvdXRwdXQgb2YgZWl0aGVyIHRoZSBzdGFydCBvciBmaW5pc2gg ZGF0ZSBhbmQgdGltZSBvZiBhbiBldmVudCBhbmQgdXNlcyB0aGUgPGEgaHJlZj0iaHR0cDov L3d3dy5waHAubmV0L2RhdGV0aW1lIj5QSFAgRGF0ZVRpbWUgZnVuY3Rpb25hbGl0eTwvYT4g Zm9yIGZvcm1hdHRpbmcuIDxjb2RlPjwgdHhwIDpqbWNfZXZlbnRfdGltZSBwaHBfZGF0ZT0i cGhwRGF0ZUZ1bmN0aW9uIiAvPjwvY29kZT48L3A+CjxwPk9wdGlvbnM6PC9wPgo8cD48c3Ry b25nPnN0YXJ0PC9zdHJvbmc+IChpZiBzdGFydD0wIHRoZW4gZ2l2ZXMgZmluaXNoIHRpbWUp PC9wPgo8ZGw+CjxkdD5WYWx1ZXM8L2R0Pgo8ZGQ+CjxwcmU+MHwxPC9wcmU+CjwvZGQ+Cjxk dD5EZWZhdWx0PC9kdD4KPGRkPgo8cHJlPjE8L3ByZT4KPC9kZD4KPC9kbD4KPGg0PklmIFZh cmlhYmxlPC9oND4KPHA+Q2hlY2tzIHRvIHNlZSBpZiBhIHZhcmlhYmxlIGV4aXN0cy4gSWYg aXQgZG9lcyBub3QsIHRoZW4gZGVsZXRlcyB3aGF0IHRoZSB0YWdzIGVuY2xvc2UuPC9wPgo8 cCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmVkOyBtYXJnaW46IDEwcHggNTBweDsgcGFk ZGluZzogMTBweDsgYmFja2dyb3VuZDogI2ZmZWVlZSBub25lIHJlcGVhdCBzY3JvbGwgMCUg NTAlOyBjb2xvcjogZGFya3JlZDsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IC1tb3otaW5pdGlh bDsgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91 bmQtaW5saW5lLXBvbGljeTogLW1vei1pbml0aWFsIj48c3Ryb25nPldhcm5pbmc8L3N0cm9u Zz46IEV4cGVyaW1lbnRhbCAoc3RpbGwsIHNvcnJ5IGd1eXMgbz0pICk8L3A+CjxwPjxjb2Rl PjwgdHhwIDpqbWNfaWZfdmFyaWFibGUgdmFyaWFibGU9InZhcmlhYmxlTmFtZSI+PCAvIHR4 cCA6am1jX2lmX3ZhcmlhYmxlPjwvY29kZT5PcHRpb25zOjwvcD4KPHA+PHN0cm9uZz52YXJp YWJsZTwvc3Ryb25nPjwvcD4KPGRsPgo8ZHQ+VmFsdWVzOjwvZHQ+CjxkZD4KPHByZT5hbnkg aW4gdGhlIGRhdGFiYXNlIGZvciBhIHBhcnRpY3VsYXIgZXZlbnQgb3IgdmVudWU8L3ByZT4K PC9kZD4KPGR0PkRlZmF1bHQ6PC9kdD4KPGRkPgo8cHJlPk5VTEw8L3ByZT4KPC9kZD4KPC9k bD4KPGgyPkZ1dHVyZSBVcGRhdGVzPC9oMj4KPHA+VGhlIGZvbGxvd2luZyBmdXR1cmUgdXBk YXRlcyBhcmUgYmVpbmcgY29uc2lkZXJlZCBvciB3b3JrZWQgb246PC9wPgo8dWw+CjxsaT5S U1MgZmVlZCBmb3IgdGhlIEV2ZW50IE1hbmFnZXIgKG1hbnkgb2YgeW91IHdpbGwgZmluZCB0 aGlzIGEgYmlnIGJvbnVzISk8L2xpPgo8bGk+UHJvcGVyIEFkbWluIFBhbmVsICh0aGlzIHdp bGwgZGVhbCB3aXRoIHNvbWUgdGltZSBpc3N1ZXMsIHdoZXJlIGN1cnJlbnRseSBoYXZlIGFs bG93ZWQgb25seSAwMCwgMTUsIDMwIGFuZCA0NSBtaW51dGVzIGZvciB0aGUgdGltZSwgZnV0 dXJlIG9wdGlvbnMgd2lsbCBhbGxvdyB0aGUgYWRtaW5pc3RyYXRvcnMgdG8gZGVjaWRlZCBo b3cgdGhleSB3YW50IHRoZSBtaW51dGVzIHRvIGJlIGxpbWl0ZWQpLjwvbGk+CjxsaT5WZW51 ZSBkcm9wZG93biBhbmQgbGlzdHMgYnkgPGVtPmNvdW50cnk8L2VtPiB0aGVuIDxlbT5zdGF0 ZTwvZW0+ICh3aGVyZSBhcHBsaWNhYmxlKS48L2xpPgo8bGk+RHJvcGRvd24gaW4gQWRkIFZl bnVlIHRvIHVzZSA8ZW0+Y291bnRyeSBjb2RlczwvZW0+PC9saT4KPGxpPkluc3RhbGwgcGFj ayhzKSB3aXRoIE5ldyBTb3V0aCBXYWxlcyBhbmQgVmljdG9yaWFuIGxpdmUgbXVzaWMgdmVu dWVzIChJJiM4MjE3O20gYW4gYXVzc2llIGFmdGVyIGFsbCEpLjwvbGk+CjwvdWw+CjxoMj5B ZGRpdGlvbmFsIEZlYXR1cmVzIGFuZCBCdWcgRml4ZXM8L2gyPgo8cD5UaGUgZm9sbG93aW5n IGJ1Z3MgaGF2ZSBiZWVuIGZpeGVkIGFuZCBmZWF0dXJlcyBhZGRlZDo8L3A+CjxoMz52MC4z IGJldGE8L2gzPgo8dWw+CjxsaT5TcGxpdCBpbnRvIHR3byBwbHVnaW5zOzwvbGk+CjxsaT5X cmFwdGFncywgSUQgYW5kIENsYXNzTmFtZXMgYXZhaWxhYmxlOzwvbGk+CjxsaT5kdHN0YXJ0 IGFuZCBkdGVuZCBmb3IgbWljcm9mb3JtYXRzPC9saT4KPC91bD4KPGgzPnYwLjIgYmV0YTwv aDM+Cjx1bD4KPGxpPkNhdGVnb3JpZXM8L2xpPgo8bGk+Q3VycmVudCBldmVudCBvcHRpb24g Zm9yIGNhbGxpbmcgb2Y8L2xpPgo8L3VsPiI7czo0OiJjb2RlIjtzOjU4NTEzOiIKLy8gVGhp cyBpcyBhIFBMVUdJTiBURU1QTEFURS4KCi8vIENvcHkgdGhpcyBmaWxlIHRvIGEgbmV3IG5h bWUgbGlrZSBhYmNfbXlwbHVnaW4ucGhwLiAgRWRpdCB0aGUgY29kZSwgdGhlbgovLyBydW4g dGhpcyBmaWxlIGF0IHRoZSBjb21tYW5kIGxpbmUgdG8gcHJvZHVjZSBhIHBsdWdpbiBmb3Ig ZGlzdHJpYnV0aW9uOgovLyAkIHBocCBhYmNfbXlwbHVnaW4ucGhwID4gYWJjX215cGx1Z2lu LTAuMS50eHQKCi8vIFBsdWdpbiBuYW1lIGlzIG9wdGlvbmFsLiAgSWYgdW5zZXQsIGl0IHdp bGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIGN1cnJlbnQKLy8gZmlsZSBuYW1lLiBVbmNvbW1l bnQgYW5kIGVkaXQgdGhpcyBsaW5lIHRvIG92ZXJyaWRlOgojICRwbHVnaW5bJ25hbWUnXSA9 ICdhYmNfcGx1Z2luJzsKCiRwbHVnaW5bJ3ZlcnNpb24nXSA9ICcwLjNiZXRhJzsKJHBsdWdp blsnYXV0aG9yJ10gPSAnSm9lbCBDb3VydG5leSc7CiRwbHVnaW5bJ2F1dGhvcl91cmknXSA9 ICdodHRwOi8vZXVwaGVtaXplLm5ldC8nOwokcGx1Z2luWydkZXNjcmlwdGlvbiddID0gJ0V2 ZW50IE1hbmFnZXIgZm9yIFRleHRwYXR0ZXJuJzsKJHBsdWdpblsndHlwZSddID0gMTsgLy8g MCBmb3IgcmVndWxhciBwbHVnaW47IDEgaWYgaXQgaW5jbHVkZXMgYWRtaW4tc2lkZSBjb2Rl CgpAaW5jbHVkZV9vbmNlKCd6ZW1fdHBsLnBocCcpOwoKaWYgKDApIHsKPz4KIyAtLS0gQkVH SU4gUExVR0lOIEhFTFAgLS0tCjxoMiBjbGFzcz0iZW50cnktdGl0bGUiPmptY19ldmVudF9t YW5hZ2VyPC9oMj4KPGgzPjxhIGhyZWY9Imh0dHA6Ly9maWxlcy5ldXBoZW1pemUubmV0L3Rl eHRwYXR0ZXJuL2ptY19ldmVudF9tYW5hZ2VyLnR4dCI+RG93bmxvYWQgam1jX2V2ZW50X21h bmFnZXIgdjAuMmJldGE8L2E+PC9oMz4KPGgyPlByZWFtYmxlPC9oMj4KPHA+VGhlIGptY19l dmVudF9tYW5hZ2VyIGlzIGEgcGx1Z2luL2hhY2sgZm9yIHRleHRwYXR0ZXJuIGNyZWF0ZWQg dG8gYWxsb3cgdXNlcnMgdG8gY3JlYXRlIGV2ZW50cyBhdCB2YXJpb3VzIHZlbnVlcy4gSXQg aGFzIGJlZW4gZG9uZSBzbyBjb21wbGV0ZWx5IGJ5ICYjODIxNjtqdTpmZW1haXogQCA8YSBo cmVmPSJodHRwOi8vZXVwaGVtaXplLm5ldCI+ZXVwaGVtaXplLm5ldDwvYT4uIEFueSBjb21t ZW50cyBvciBzdWdnZXN0aW9ucyB3b3VsZCBiZSBhcHByZWNpYXRlZCBhbmQgdGhlIHN1cHBv cnQgdGhyZWFkIGF0IDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20iPmZv cnVtLnRleHRwYXR0ZXJuLmNvbTwvYT4gaXMgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRw YXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTExMTM3Ij5hdmFpbGFibGUgaGVyZTwvYT4u IFdoaWxlIHRoaXMgaGVscCBmaWxlIGhhcyBhdHRlbXB0ZWQgdG8gYmUgYXMgdGhvcm91Z2gg YXMgcG9zc2libGUsIHRoaW5ncyBkbyBmYWxsIHRocm91Z2ggdGhlIGNyYWNrcy4gU2luY2Ug am1jX2V2ZW50X21hbmFnZXIgaXMgKHN0aWxsKSBpbiBhIGJldGEgc3RhZ2UsIHRoZXJlIG1h eSBleGlzdCBzb21lIGJ1Z3MgaW4gdGhlIG9wZXJhdGlvbi4gQWRkaXRpb25hbGx5LCB0aGUg cGx1Z2luL2hhY2sgaXMgYW4gb25nb2luZyBwcm9qZWN0IGFuZCBtYXkgYmUgdXBkYXRlZCBm cm9tIHRpbWUgdG8gdGltZS4gVG8gZW5zdXJlIHRoYXQgeW91IGhhdmUgdGhlIG1vc3QgdXAg dG8gZGF0ZSB2ZXJzaW9uLCBwbGVhc2UgZW5zdXJlIHlvdSB2aXNpdCB0aGUgPGEgaHJlZj0i aHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTExMTM3Ij5z dXBwb3J0IGZvcnVtIHRocmVhZDwvYT4gcmVndWxhcmx5LjwvcD4KPHA+am1jX2V2ZW50X21h bmFnZXIgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBwbGVhc2UgdmlzaXQgPGEgaHJlZj0iaHR0cDov L3d3dy5nbnUub3JnL2NvcHlsZWZ0L2dwbC5odG1sIj5HTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZTwvYT4uPC9wPgo8aDI+SW5zdGFsbGF0aW9uPC9oMj4KPHA+VGhlIGluc3RhbGxhdGlv biBwYWNrYWdlIGlzIGEgc2ltcGxlIHByb2Nlc3MuIEZvciB0aG9zZSBvZiB5b3UgdXBncmFk aW5nLCB0aGVyZSBhcmUgYWRkaXRpb25hbCByZXF1aXJlbWVudHMgb24geW91ciBiZWhhbGYg ZHVlIHRvIHRoZSBhZGRpdGlvbiBvZiBjYXRlZ29yaWVzIHRvIGptY19ldmVudF9tYW5hZ2Vy LjwvcD4KPGgzPkZyZXNoIEluc3RhbGw8L2gzPgo8cD5Gb3IgdGhvc2UgdW5kZXJnb2luZyBh IGZyZXNoIGluc3RhbGwsIHBsZWFzZSBnbyB0aHJvdWdoIHRoZSBmb2xsb3dpbmcgc3RlcHM6 PC9wPgo8b2w+CjxsaT5UdXJuIHRoZSBwbHVnaW4gdG8gYWN0aXZlPC9saT4KPGxpPkdvIHRv IENvbnRlbnQgYW5kIEV2ZW50IE1hbmFnZXIgdGFiczwvbGk+CjxsaT5EbyBhIGxpdHRsZSBk YW5jZSBhbmQgeW91JiM4MjE3O2xsIGZpbmQgdGhhdCB5b3UmIzgyMTc7cmUgcmVhZHkgdG8g Z28hPC9saT4KPC9vbD4KPGgzPlVwZ3JhZGUgb24gUGFzdCBWZXJzaW9uPC9oMz4KPHA+QXMg d2l0aCBhbGwgdXBkYXRlcywgcGxlYXNlIGJhY2t1cCB5b3VyIGRhdGFiYXNlLCB0aGVuIGdv IHRocm91Z2ggdGhlIGZvbGxvd2luZyBzdGVwczo8L3A+CjxvbD4KPGxpPlRocm91Z2ggeW91 ciBkYXRhYmFzZSBhZG1pbiwgYWRkIHRoZSBmb2xsb3dpbmcgY29sdW1ucyB0byB0aGUKPHBy ZT50eHBfam1jX2V2ZW50PC9wcmU+CjxwPmFuZDwvcD4KPHByZT50eHBfam1jX2V2ZW50X3Zl bnVlPC9wcmU+CjxwPnNldCBhcyBOVUxMIChvciBlcXVpdmFsZW50IG9uIHlvdXIgVGV4dHBh dHRlcm4gaW5zdGFsbGF0aW9uKTwvbGk+CjxsaT5BY3RpdmF0ZSBwbHVnaW48L2xpPgo8bGk+ R28gdG8gQ29udGVudCBhbmQgdGhlbiBFdmVudCBNYW5hZ2VyIHRhYjwvbGk+CjxsaT5EbyBh IGxpdHRsZSBqaWcgYW5kIHlvdSBzaG91bGQgYmUgcmlnaHQgKyByZWFkeSB0byBnbyE8L2xp Pgo8L29sPgo8aDI+SW50cm9kdWN0aW9uIHRvIHRoZSBFdmVudCBNYW5hZ2VyPC9oMj4KPHA+ VGhlIGV2ZW50IG1hbmFnZXIgaGFzIHR3byBjb21wb25lbnRzIC0gdGhlIGFkbWluIHNpZGUg Y29udHJvbHMgYW5kIHRoZSBwdWJsaWMgc2lkZSBvdXRwdXQuIE9uIGluc3RhbGxhdGlvbiBp dCB3aWxsIGVuc3VyZSB0aGF0IGEgZGF0YWJhc2UgZXhpc3RzLCB0aGUgdGFibGVzIGV4aXN0 LCBpbnN0YWxsaW5nIGlmIHRoZXkmIzgyMTc7cmUgbWlzc2luZywgYW5kIHRoYXQgYW4gZW50 cnkgZXhpc3RzIGluIHRoZSB0YWJsZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBldmVudCBtYW5h Z2VyIChpbiB0aGlzIHdheSBJIGNvbnNpZGVyIGl0IGEgaGFjaykuPC9wPgo8aDI+RXZlbnQg TWFuYWdlciBUYWI8L2gyPgo8cD5XaGVuIHlvdSBnbyB0byB0aGUgZXZlbnQgbWFuYWdlciB0 YWIgeW91IHdpbGwgYmUgcHJlc2VudGVkIHdpdGggYSBsaXN0IG9mIGV2ZW50cyB0aGF0IGhh dmUgYmVlbiBlbnRlcmVkLiBDdXJyZW50bHksIHRoZSAmIzgyMjA7ZXZlbnRzIHBlciBwYWdl JiM4MjIxOyBpcyBhIG1pcnJvciBvZiB0aGF0IHVzZWQgb24gdGhlIGFydGljbGUgcGFnZSwg YW5kIGFueSBhbHRlcmF0aW9uIHRvIHRoZSAmIzgyMjA7ZXZlbnRzIHBlciBwYWdlJiM4MjIx OyB3aWxsIGFsc28gYWx0ZXIgdGhlICYjODIyMDthcnRpY2xlcyBwZXIgcGFnZSYjODIyMTsg dW5kZXIgdGhlICYjODIyMDthcnRpY2xlcyB0YWImIzgyMjE7LjwvcD4KPHA+VGhlcmUgYXJl IGN1cnJlbnRseSBmb3VyIHRvcCBsZXZlbCBidXR0b25zIGZvciB0aGUgRXZlbnQgTWFuYWdl cjo8L3A+Cjx1bD4KPGxpPkV2ZW50IE1hbmFnZXIgLSBNYW5hZ2VzIHRoZSBhY3R1YWwgZXZl bnRzPC9saT4KPGxpPlZlbnVlIE1hbmFnZXIgLSBNYW5hZ2VzIHRoZSB2ZW51ZXMgZm9yIHRo ZSBldmVudHMuIEVhY2ggZXZlbnQgbXVzdCBiZSAmIzgyMjA7YXQmIzgyMjE7IGEgdmVudWU8 L2xpPgo8bGk+Q2F0ZWdvcnkgTWFuYWdlciAtIE1hbmFnZXMgdGhlIG5ldyBjYXRlZ29yaWVz IGF2YWlsYWJsZSBmb3IgdGhlIHBsdWdpbjwvbGk+CjxsaT5SU1MgRmVlZCAtIEZvciBmdXR1 cmUgdmVyc2lvbnMgd2lsbCBhbGxvdyBhY2Nlc3MgdG8gYWx0ZXJhdGlvbnMgdG8gdGhlIFJT UyBmb3JtYXQ8L2xpPgo8L3VsPgo8aDM+RXZlbnQgTWFuYWdlcjwvaDM+CjxwPlRoZSBkZWZh dWx0IHBhZ2Ugb2YgdGhlIHBsdWdpbiYjODIxNztzIHRhYi4gR2l2ZXMgdHdvIG9wdGlvbnM6 PC9wPgo8dWw+CjxsaT5BZGQgRXZlbnQ8L2xpPgo8bGk+RXZlbnQgTGlzdGluZyAoZGVmYXVs dCk8L2xpPgo8L3VsPgo8aDQ+QWRkIEV2ZW50PC9oND4KPHA+QWxsb3dzIHRoZSBhZG1pbmlz dHJhdG9yIHRvIGFkZCBhbiBldmVudC4gVXRpbGlzZXMgPGEgaHJlZj0iaHR0cDovL21pY3Jv Zm9ybWF0cy5vcmcvIj5taWNyb2Zvcm1hdHM8L2E+IHN0eWxlIDxhIGhyZWY9Imh0dHA6Ly9t aWNyb2Zvcm1hdHMub3JnL3dpa2kvaGNhbGVuZGFyIj5oQ2FsZW5kYXI8L2E+LjxhIGhyZWY9 Imh0dHA6Ly9taWNyb2Zvcm1hdHMub3JnL3dpa2kvaGNhbGVuZGFyIj48L2E+PC9wPgo8cD5P cHRpb25hbDo8L3A+Cjx1bD4KPGxpPkNhdGVnb3J5PC9saT4KPGxpPkV2ZW50IE5hbWU8L2xp Pgo8bGk+UHJpY2U8L2xpPgo8bGk+T3RoZXIgQmFuZHM8L2xpPgo8bGk+T3RoZXIgSW5mbzwv bGk+CjwvdWw+CjxwPlJlcXVpcmVkOjwvcD4KPHVsPgo8bGk+U3RhcnQgRGF0ZSArIFRpbWU8 L2xpPgo8bGk+RmluaXNoIERhdGUgKyBUaW1lPC9saT4KPGxpPlZlbnVlPC9saT4KPC91bD4K PHA+PHN0cm9uZz5Ob3RlPC9zdHJvbmc+OiBFdmVudCBtdXN0IEZpbmlzaCA8ZW0+YWZ0ZXI8 L2VtPiBpdCBiZWdpbnMuPC9wPgo8aDQ+RXZlbnQgTGlzdGluZzwvaDQ+CjxwPkJhc2ljIGxp c3Rpbmcgb2YgYWxsIGV2ZW50cyBwYXN0LCBwcmVzZW50IGFuZCBmdXR1cmUuPC9wPgo8aDM+ VmVudWUgTGlzdGluZzwvaDM+CjxwPkdpdmVzIHR3byBvcHRpb25zOjwvcD4KPHVsPgo8bGk+ QWRkIFZlbnVlPC9saT4KPGxpPlZlbnVlIExpc3RpbmcgKGRlZmF1bHQpPC9saT4KPC91bD4K PGg0PkFkZCBWZW51ZTwvaDQ+CjxwPkFsbG93cyB0aGUgYWRtaW5pc3RyYXRvciB0byBhZGQg YSB2ZW51ZS4gT25seSB0aGUgdmVudWUgbmFtZSBpcyByZXF1aXJlZC4gVXRpbGlzZXMgPGEg aHJlZj0iaHR0cDovL21pY3JvZm9ybWF0cy5vcmcvIj5taWNyb2Zvcm1hdDwvYT4gc3R5bGUg PGEgaHJlZj0iaHR0cDovL21pY3JvZm9ybWF0cy5vcmcvd2lraS9oY2FyZCI+aENhcmQ8L2E+ LjwvcD4KPGg0PlZlbnVlIExpc3Rpbmc8L2g0Pgo8cD5CYXNpYyBsaXN0aW5nIG9mIGFsbCB2 ZW51ZXMuPC9wPgo8aDM+Q2F0ZWdvcnkgTWFuYWdlcjwvaDM+CjxwPkdpdmVzIHR3byBvcHRp b25zOjwvcD4KPHVsPgo8bGk+QWRkIENhdGVnb3J5PC9saT4KPGxpPkNhdGVnb3J5IExpc3Rp bmcgKGRlZmF1bHQpPC9saT4KPC91bD4KPGg0PkFkZCBDYXRlZ29yeTwvaDQ+CjxwPkFsbG93 cyB0aGUgYWRtaW5pc3RyYXRvciB0byBhZGQgYW4gY2F0ZWdvcnkuIE9ubHkgdGhlIGNhdGVn b3J5IG5hbWUgaXMgcmVxdWlyZWQuPC9wPgo8aDQ+Q2F0ZWdvcnkgTGlzdGluZzwvaDQ+Cjxw PkJhc2ljIGxpc3Rpbmcgb2YgYWxsIGNhdGVnb3JpZXMuPC9wPgo8aDM+UlNTIEZlZWQ8L2gz Pgo8cD5TdGlsbCB0byBjb21lIGluIGZ1dHVyZSB1cGRhdGVzLiBVbnN1cmUgYXMgb2YgeWV0 IGFzIHRvIHRoZSBkZXNpZ24sIGxheW91dCBhbmQgb3B0aW9ucy4gSWYgeW91IGhhdmUgaWRl YXMsIHBsZWFzZSBjb250YWN0IG1lIHRocm91Z2ggdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1 bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0xMTEzNyI+am1jX2V2ZW50X21h bmFnZXIgcGx1Z2luIGZvcnVtIHRocmVhZDwvYT4uPC9wPgo8aDI+Q3JlYXRpbmcgRXZlbnQg TWFuYWdlciBPdXRwdXQ8L2gyPgo8cD5UaGUgam1jX2V2ZW50X21hbmFnZXIgdXNlcyB0aGUg Zm9ybXMgaW4gdGV4dHBhdHRlcm4gdG8gY3JlYXRlIHRoZSB0ZW1wbGF0ZSBmb3IgdGhlIG91 dHB1dC4gWW91IG1heSB1c2UgYW55IGZvcm0geW91IGxpa2UsIHByb3ZpZGluZyB0aGF0IGl0 IGhhcyB0aGUgcmVsZXZhbnQgZGV0YWlscywgaS5lLiB5b3UgY2FuIGNhbGwgaXQgZnJvbSB3 aXRoaW4gYW4gYXJ0aWNsZSwgZnJvbSBhIHBhZ2Ugb3IgZXZlbiBmcm9tIGEgZm9ybSBpdHNl bGYgKDxlbT55ZXQgdG8gYmUgdGVzdGVkPC9lbT4pLjwvcD4KPGgzPkNhbGxpbmcgdGhlIEV2 ZW50IE1hbmFnZXI8L2gzPgo8cD5JbiBvcmRlciB0byBjYWxsIHRoZSBldmVudCBtYW5hZ2Vy LCBhIHNpbXBsZSBUZXh0cGF0dGVybiBzdHlsZSB0YWcgaXMgdXNlZDo8L3A+CjxwPjxjb2Rl PjwgdHhwIDpqbWNfZXZlbnRzIGZvcm09ImZvcm1fbmFtZSIgLz48L2NvZGU+PC9wPgo8cD5U aGUgZm9ybV9uYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBmb3JtIHlvdSB3b3VsZCBsaWtlIHRv IGNhbGwgYXMgdGhlIHRlbXBsYXRlLiBqbWNfZXZlbnRzIGN5Y2xlcyB0aHJvdWdoIDxlbT5h bGw8L2VtPiBldmVudHMgYW5zd2VyaW5nIGl0cyByZXN0cmljdGlvbnMsIHRoYXQgaXMgaXQg Y3ljbGVzIHRocm91Z2ggZWFjaCByZWxldmFudCBlbnRyeS48L3A+CjxwPlRoZXJlIGFyZSBt YW55IG9wdGlvbnMgYXMgdG8gaG93IHRvIGxpbWl0IHRoZSBudW1iZXIgYW5kIHR5cGUgb2Yg ZXZlbnRzIGJlaW5nIGNhbGxlZC4gVGhlIGZvbGxvd2luZyBhcmUgdGhlIG9wdGlvbnMsIGdp dmVuIHdpdGggZGV0YWlscyBhbHNvIG9mIHRoZSBkZWZhdWx0IChpZiBhbnkpLjwvcD4KPHA+ Rm9ybWF0dGluZyBmb3IgdmVudWVzIGlzIGRvbmUgaW5kZXBlbmRlbnRseSBvZiwgb3Igd2l0 aGluLCB0aGUgZXZlbnQgZm9ybS48L3A+CjxoND5saW1pdDwvaDQ+CjxwPlVzZWQgdG8gcmVz dHJpY3QgdGhlIG51bWJlciBvZiBldmVudHMuPC9wPgo8cD5FeGFtcGxlIHVzYWdlOjwvcD4K PGRsPgo8ZHQ+TGltaXQgdG8gdGVuIGV2ZW50czo8L2R0Pgo8ZGQ+PGNvZGU+PCB0eHAgOmpt Y19ldmVudHMgZm9ybT0iZm9ybV9uYW1lIiBsaW1pdD0iMTAiIC8+PC9jb2RlPjwvZGQ+Cjxk dD5WYWx1ZXM6PC9kdD4KPGRkPgo8cHJlPjB8MTwvcHJlPgo8L2RkPgo8ZHQ+RGVmYXVsdDo8 L2R0Pgo8ZGQ+CjxwcmU+MTwvcHJlPgo8L2RkPgo8L2RsPgo8aDQ+ZnV0dXJlPC9oND4KPHA+ VXNlZCB0byByZXN0cmljdCB0aGUgZXZlbnRzIHRvIHRob3NlIHRoYXQgd2lsbCBzdGFydCBp biB0aGUgZnV0dXJlLjwvcD4KPHA+RXhhbXBsZSB1c2FnZTo8L3A+CjxkbD4KPGR0PkxpbWl0 IHRvIGZ1dHVyZTo8L2R0Pgo8ZGQ+PGNvZGU+PCB0eHAgOmptY19ldmVudHMgZm9ybT0iZm9y bV9uYW1lIiBmdXR1cmU9IjEiIC8+PC9jb2RlPjwvZGQ+CjxkdD5WYWx1ZXM6PC9kdD4KPGRk Pgo8cHJlPjB8MTwvcHJlPgo8L2RkPgo8ZHQ+RGVmYXVsdDo8L2R0Pgo8ZGQ+CjxwcmU+MTwv cHJlPgo8L2RkPgo8L2RsPgo8aDQ+cGFzdDwvaDQ+CjxwPlVzZWQgdG8gcmVzdHJpY3QgdGhl IGV2ZW50cyB0byB0aG9zZSB0aGF0IHdpbGwgc3RhcnQgaW4gdGhlIHBhc3QuPC9wPgo8cD5F eGFtcGxlIHVzYWdlOjwvcD4KPGRsPgo8ZHQ+UGFzdCBvbmx5OjwvZHQ+CjxkZD48Y29kZT48 IHR4cCA6am1jX2V2ZW50cyBmb3JtPSJmb3JtX25hbWUiIHBhc3Q9IjEiIGZ1dHVyZT0iMCIg Lz48L2NvZGU+PC9kZD4KPGR0PlBhc3QgYW5kIGZ1dHVyZTo8L2R0Pgo8ZGQ+PGNvZGU+PCB0 eHAgOmptY19ldmVudHMgZm9ybT0iZm9ybV9uYW1lIiBwYXN0PSIxIiBmdXR1cmU9IjAiIC8+ PC9jb2RlPjwvZGQ+CjxkdD5WYWx1ZXM6PC9kdD4KPGRkPgo8cHJlPjB8MTwvcHJlPgo8L2Rk Pgo8ZHQ+RGVmYXVsdDo8L2R0Pgo8ZGQ+CjxwcmU+MTwvcHJlPgo8L2RkPgo8L2RsPgo8aDQ+ Y3VycmVudDwvaDQ+CjxwPlVzZWQgdG8gcmVzdHJpY3QgdGhlIGV2ZW50cyB0byB0aG9zZSB0 aGF0IHdpbGwgaGF2ZSBzdGFydGVkLCBidXQgaGF2ZSBub3QgeWV0IGZpbmlzaGVkLjwvcD4K PHA+RXhhbXBsZSB1c2FnZTo8L3A+CjxkbD4KPGR0PkN1cnJlbnQgb25seTo8L2R0Pgo8ZGQ+ PGNvZGU+PCB0eHAgOmptY19ldmVudHMgZm9ybT0iZm9ybV9uYW1lIiBjdXJyZW50PSIxIiBm dXR1cmU9IjAiIC8+PC9jb2RlPjwvZGQ+CjxkdD5DdXJyZW50IGFuZCBGdXR1cmU6PC9kdD4K PGRkPjxjb2RlPjwgdHhwIDpqbWNfZXZlbnRzIGZvcm09ImZvcm1fbmFtZSIgY3VycmVudD0i MSIgZnV0dXJlPSIxIiAvPjwvY29kZT48L2RkPgo8ZHQ+Q3VycmVudCBhbmQgUGFzdDo8L2R0 Pgo8ZGQ+PGNvZGU+PCB0eHAgOmptY19ldmVudHMgZm9ybT0iZm9ybV9uYW1lIiBjdXJyZW50 PSIxIiBwYXN0PSIxIiBmdXR1cmU9IjAiIC8+PC9jb2RlPjwvZGQ+CjxkdD5DdXJyZW50LCBQ YXN0IGFuZCBmdXR1cmU6PC9kdD4KPGRkPjxjb2RlPjwgdHhwIDpqbWNfZXZlbnRzIGZvcm09 ImZvcm1fbmFtZSIgY3VycmVudD0iMSIgcGFzdD0iMSIgZnV0dXJlPSIxIiAvPjwvY29kZT48 L2RkPgo8ZHQ+VmFsdWVzOjwvZHQ+CjxkZD4KPHByZT4wfDE8L3ByZT4KPC9kZD4KPGR0PkRl ZmF1bHQ6PC9kdD4KPGRkPgo8cHJlPjE8L3ByZT4KPC9kZD4KPC9kbD4KPGg0PmNhdGVnb3J5 X2lkPC9oND4KPHA+VXNlZCB0byByZXN0cmljdCB0aGUgZXZlbnRzIHRvIHRob3NlIG9mIGEg cGFydGljdWxhciBjYXRlZ29yeSBvciBjYXRlZ29yaWVzLjwvcD4KPHA+RXhhbXBsZSB1c2Fn ZTo8L3A+CjxkbD4KPGR0PlNpbmdsZSBjYXRlZ29yeSAod2hlcmUgY2F0ZWdvcnkmIzgyMTc7 cyBJRD0yKTo8L2R0Pgo8ZGQ+PGNvZGU+PCB0eHAgOmptY19ldmVudHMgZm9ybT0iZm9ybV9u YW1lIiBjYXRlZ29yeV9pZD0iMiIgLz48L2NvZGU+PC9kZD4KPGR0Pk11bHRpcGxlIGNhdGVn b3JpZXMgKHdoZXJlIGNhdGVnb3J5JiM4MjE3O3MgSUQgaXMgaW4gYXJyYXkoMiw0KSk6PC9k dD4KPGRkPjxjb2RlPjwgdHhwIDpqbWNfZXZlbnRzIGZvcm09ImZvcm1fbmFtZSIgY2F0ZWdv cnlfaWQ9IjIsNCIgLz48L2NvZGU+PC9kZD4KPGR0PlZhbHVlczo8L2R0Pgo8ZGQ+CjxwcmU+ VmFsaWQgSUQgZnJvbSB0eHBfam1jX2V2ZW50X2NhdGVnb3J5PC9wcmU+CjwvZGQ+CjxkdD5E ZWZhdWx0OjwvZHQ+CjxkZD4KPHByZT5OVUxMPC9wcmU+CjwvZGQ+CjwvZGw+CjxoND52ZW51 ZV9pZDwvaDQ+CjxwPlVzZWQgdG8gcmVzdHJpY3QgdGhlIGV2ZW50cyB0byB0aG9zZSB0aGF0 IHdpbGwgb2NjdXIgYXQgYSBzcGVjaWZpZWQgdmVudWUgb3IgdmVudWVzLjwvcD4KPHA+RXhh bXBsZSB1c2FnZTo8L3A+CjxkbD4KPGR0PlNpbmdsZSB2ZW51ZSAod2hlcmUgdmVudWXigJlz IElEPTIpOjwvZHQ+CjxkZD48Y29kZT48IHR4cCA6am1jX2V2ZW50cyBmb3JtPSJmb3JtX25h bWUiIHZlbnVlX2lkPSIyIiAvPjwvY29kZT48L2RkPgo8ZHQ+TXVsdGlwbGUgdmVudWVzICh3 aGVyZSB2ZW51ZeKAmXMgSUQgaXMgaW4gYXJyYXkoMiw0KSk6PC9kdD4KPGRkPjxjb2RlPjwg dHhwIDpqbWNfZXZlbnRzIGZvcm09ImZvcm1fbmFtZSIgdmVudWVfaWQ9IjIsNCIgLz48L2Nv ZGU+PC9kZD4KPGR0PlZhbHVlczo8L2R0Pgo8ZGQ+CjxwcmU+VmFsaWQgSUQgZnJvbSB0eHBf am1jX2V2ZW50X3ZlbnVlPC9wcmU+CjwvZGQ+CjxkdD5EZWZhdWx0OjwvZHQ+CjxkZD4KPHBy ZT5OVUxMPC9wcmU+CjwvZGQ+CjwvZGw+CjxoND5ldmVudF9pZDwvaDQ+CjxwPlVzZWQgdG8g cmVzdHJpY3QgdGhlIGV2ZW50cyB0byBhIHBhcnRpY3VsYXIgZXZlbnQgb3IgZ3JvdXAgb2Yg ZXZlbnRzLiBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgb3ZlcnJpZGVzIDxzdHJvbmc+YWxsPC9z dHJvbmc+IG90aGVyIHZhcmlhYmxlcyE8L3A+CjxwPkV4YW1wbGUgdXNhZ2U6PC9wPgo8ZGw+ CjxkdD5TaW5nbGUgZXZlbnQgKHdoZXJlIGV2ZW504oCZcyBJRD0yKTo8L2R0Pgo8ZGQ+PGNv ZGU+PCB0eHAgOmptY19ldmVudHMgZm9ybT0iZm9ybV9uYW1lIiBldmVudF9pZD0iMiIgLz48 L2NvZGU+PC9kZD4KPGR0Pk11bHRpcGxlIGV2ZW50cyAod2hlcmUgZXZlbnTigJlzIElEIGlz IGluIGFycmF5KDIsNCkpOjwvZHQ+CjxkZD48Y29kZT48IHR4cCA6am1jX2V2ZW50cyBmb3Jt PSJmb3JtX25hbWUiIGV2ZW50X2lkPSIyLDQiIC8+PC9jb2RlPjwvZGQ+CjxkdD5WYWx1ZXM6 PC9kdD4KPGRkPgo8cHJlPlZhbGlkIElEIGZyb20gdHhwX2ptY19ldmVudDwvcHJlPgo8L2Rk Pgo8ZHQ+RGVmYXVsdDo8L2R0Pgo8ZGQ+CjxwcmU+TlVMTDwvcHJlPgo8L2RkPgo8L2RsPgo8 aDQ+c29ydF9ieTwvaDQ+CjxwPlB1dHMgaW4gcGxhY2UgdGhlIE15U1FMIHNvcnQgYnkgYSB2 YXJpYWJsZSBuYW1lLiBVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggc29ydF9vcmRlci48L3A+ CjxkbD4KPGR0PlZhbHVlczo8L2R0Pgo8ZGQ+CjxwcmU+SUQgfCBuYW1lIHwgc3RhcnRfRGF0 ZVRpbWUgfCBmaW5pc2hfRGF0ZVRpbWUgfCBBdXRob3JJRCB8IExhc3RNb2RJRCB8IFZlbnVl SUQgfCBQcmljZSB8IE90aGVyQmFuZHMgfCBPdGhlckJhbmRzX2h0bWwgfCBPdGhlckluZm8g fE90aGVySW5mb19odG1sIHwgQ2F0ZWdvcnlJRDwvcHJlPgo8L2RkPgo8ZHQ+RGVmYXVsdDo8 L2R0Pgo8ZGQ+CjxwcmU+c3RhcnRfRGF0ZVRpbWU8L3ByZT4KPC9kZD4KPC9kbD4KPGg0PnNv cnRfb3JkZXI8L2g0Pgo8cD5EZXRlcm1pbmdzIHRoZSBvcmRlciBpbiB3aGljaCB0aGUgZXZl bnRzIHdpbGwgYmUgZGlzcGxheWVkLjwvcD4KPGRsPgo8ZHQ+VmFsdWVzOjwvZHQ+CjxkZD4K PHByZT5hc2N8ZGVzYzwvcHJlPgo8L2RkPgo8ZHQ+RGVmYXVsdDo8L2R0Pgo8ZGQ+CjxwcmU+ YXNjPC9wcmU+CjwvZGQ+CjwvZGw+CjxoMj5Gb3JtczwvaDI+CjxwPkV2ZW50cyBhbmQgdmVu dWVzIGVhY2ggaGF2ZSB0aGVpciBvd24gZm9ybXMgd2l0aCB0aGVpciBvd24gdmFyaWFibGVz LjwvcD4KPGgzPkV2ZW50IEZvcm1zPC9oMz4KPGg0PkV2ZW50IE5hbWU8L2g0Pgo8aDQ+RXZl bnQgSUQ8L2g0Pgo8aDQ+RXZlbnQgUHJpY2U8L2g0Pgo8aDQ+T3RoZXIgQmFuZHM8L2g0Pgo8 cD5JbnNlcnRzIHRoZSBodG1sIGZvciBvdGhlciBiYW5kIGluZm9ybWF0aW9uLjwvcD4KPGg0 Pk90aGVyIEluZm9ybWF0aW9uPC9oND4KPGgzPlZlbnVlIEZvcm1zPC9oMz4KPHA+VmVudWUg Zm9ybSBvcHRpb25zIGNhbiBiZSBjYWxsZWQgZWl0aGVyIGZyb20gdGhlIGV2ZW50IGZvcm0g ZGlyZWN0bHksIG9yIGZyb20gYSBzZXBhcmF0ZSBmb3JtIHVzaW5nIHRoZSB0YWc6PC9wPgo8 aDQ+VmVudWUgTmFtZTwvaDQ+CjxoND5WZW51ZSBJRDwvaDQ+CjxoND5WZW51ZSBBZGRyZXNz IDE8L2g0Pgo8aDQ+VmVudWUgQWRkcmVzcyAyPC9oND4KPGg0PlZlbnVlIFN1YnVyYjwvaDQ+ CjxoND5WZW51ZSBTdGF0ZTwvaDQ+CjxoND5WZW51ZSBDb3VudHJ5PC9oND4KPGg0PlZlbnVl IFBvc3Rjb2RlPC9oND4KPGg0PlZlbnVlIFBob25lPC9oND4KPGg0PlZlbnVlIFVSTDwvaDQ+ CjxoND5WZW51ZSBFbWFpbDwvaDQ+CjxoND5WZW51ZSBPdGhlciBJbmZvcm1hdGlvbjwvaDQ+ CjxoMz5Vc2VmdWwgRnVuY3Rpb248L2gzPgo8cD5JbiBvcmRlciB0byBleGVjdXRlIGEgZmV3 IG1vcmUgb3B0aW9ucywgdGhlcmUgaXMgYSByZXF1aXJlbWVudCB0byBtYW5pcHVsYXRlIHRo aW5ncyBzdWNoIGFzIGRhdGVzLjwvcD4KPGg0PkV2ZW50IFRpbWVzPC9oND4KPHA+RXZlbnQg dGltZXMgZ2l2ZSBvdXRwdXQgb2YgZWl0aGVyIHRoZSBzdGFydCBvciBmaW5pc2ggZGF0ZSBh bmQgdGltZSBvZiBhbiBldmVudCBhbmQgdXNlcyB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5w aHAubmV0L2RhdGV0aW1lIj5QSFAgRGF0ZVRpbWUgZnVuY3Rpb25hbGl0eTwvYT4gZm9yIGZv cm1hdHRpbmcuIDxjb2RlPjwgdHhwIDpqbWNfZXZlbnRfdGltZSBwaHBfZGF0ZT0icGhwRGF0 ZUZ1bmN0aW9uIiAvPjwvY29kZT48L3A+CjxwPk9wdGlvbnM6PC9wPgo8cD48c3Ryb25nPnN0 YXJ0PC9zdHJvbmc+IChpZiBzdGFydD0wIHRoZW4gZ2l2ZXMgZmluaXNoIHRpbWUpPC9wPgo8 ZGw+CjxkdD5WYWx1ZXM8L2R0Pgo8ZGQ+CjxwcmU+MHwxPC9wcmU+CjwvZGQ+CjxkdD5EZWZh dWx0PC9kdD4KPGRkPgo8cHJlPjE8L3ByZT4KPC9kZD4KPC9kbD4KPGg0PklmIFZhcmlhYmxl PC9oND4KPHA+Q2hlY2tzIHRvIHNlZSBpZiBhIHZhcmlhYmxlIGV4aXN0cy4gSWYgaXQgZG9l cyBub3QsIHRoZW4gZGVsZXRlcyB3aGF0IHRoZSB0YWdzIGVuY2xvc2UuPC9wPgo8cCBzdHls ZT0iYm9yZGVyOiAxcHggc29saWQgcmVkOyBtYXJnaW46IDEwcHggNTBweDsgcGFkZGluZzog MTBweDsgYmFja2dyb3VuZDogI2ZmZWVlZSBub25lIHJlcGVhdCBzY3JvbGwgMCUgNTAlOyBj b2xvcjogZGFya3JlZDsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IC1tb3otaW5pdGlhbDsgLW1v ei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5s aW5lLXBvbGljeTogLW1vei1pbml0aWFsIj48c3Ryb25nPldhcm5pbmc8L3N0cm9uZz46IEV4 cGVyaW1lbnRhbCAoc3RpbGwsIHNvcnJ5IGd1eXMgbz0pICk8L3A+CjxwPjxjb2RlPjwgdHhw IDpqbWNfaWZfdmFyaWFibGUgdmFyaWFibGU9InZhcmlhYmxlTmFtZSI+PCAvIHR4cCA6am1j X2lmX3ZhcmlhYmxlPjwvY29kZT5PcHRpb25zOjwvcD4KPHA+PHN0cm9uZz52YXJpYWJsZTwv c3Ryb25nPjwvcD4KPGRsPgo8ZHQ+VmFsdWVzOjwvZHQ+CjxkZD4KPHByZT5hbnkgaW4gdGhl IGRhdGFiYXNlIGZvciBhIHBhcnRpY3VsYXIgZXZlbnQgb3IgdmVudWU8L3ByZT4KPC9kZD4K PGR0PkRlZmF1bHQ6PC9kdD4KPGRkPgo8cHJlPk5VTEw8L3ByZT4KPC9kZD4KPC9kbD4KPGgy PkZ1dHVyZSBVcGRhdGVzPC9oMj4KPHA+VGhlIGZvbGxvd2luZyBmdXR1cmUgdXBkYXRlcyBh cmUgYmVpbmcgY29uc2lkZXJlZCBvciB3b3JrZWQgb246PC9wPgo8dWw+CjxsaT5SU1MgZmVl ZCBmb3IgdGhlIEV2ZW50IE1hbmFnZXIgKG1hbnkgb2YgeW91IHdpbGwgZmluZCB0aGlzIGEg YmlnIGJvbnVzISk8L2xpPgo8bGk+UHJvcGVyIEFkbWluIFBhbmVsICh0aGlzIHdpbGwgZGVh bCB3aXRoIHNvbWUgdGltZSBpc3N1ZXMsIHdoZXJlIGN1cnJlbnRseSBoYXZlIGFsbG93ZWQg b25seSAwMCwgMTUsIDMwIGFuZCA0NSBtaW51dGVzIGZvciB0aGUgdGltZSwgZnV0dXJlIG9w dGlvbnMgd2lsbCBhbGxvdyB0aGUgYWRtaW5pc3RyYXRvcnMgdG8gZGVjaWRlZCBob3cgdGhl eSB3YW50IHRoZSBtaW51dGVzIHRvIGJlIGxpbWl0ZWQpLjwvbGk+CjxsaT5WZW51ZSBkcm9w ZG93biBhbmQgbGlzdHMgYnkgPGVtPmNvdW50cnk8L2VtPiB0aGVuIDxlbT5zdGF0ZTwvZW0+ ICh3aGVyZSBhcHBsaWNhYmxlKS48L2xpPgo8bGk+RHJvcGRvd24gaW4gQWRkIFZlbnVlIHRv IHVzZSA8ZW0+Y291bnRyeSBjb2RlczwvZW0+PC9saT4KPGxpPkluc3RhbGwgcGFjayhzKSB3 aXRoIE5ldyBTb3V0aCBXYWxlcyBhbmQgVmljdG9yaWFuIGxpdmUgbXVzaWMgdmVudWVzIChJ JiM4MjE3O20gYW4gYXVzc2llIGFmdGVyIGFsbCEpLjwvbGk+CjwvdWw+CjxoMj5BZGRpdGlv bmFsIEZlYXR1cmVzIGFuZCBCdWcgRml4ZXM8L2gyPgo8cD5UaGUgZm9sbG93aW5nIGJ1Z3Mg aGF2ZSBiZWVuIGZpeGVkIGFuZCBmZWF0dXJlcyBhZGRlZDo8L3A+CjxoMz52MC4zIGJldGE8 L2gzPgo8dWw+CjxsaT5TcGxpdCBpbnRvIHR3byBwbHVnaW5zOzwvbGk+CjxsaT5XcmFwdGFn cywgSUQgYW5kIENsYXNzTmFtZXMgYXZhaWxhYmxlOzwvbGk+CjxsaT5kdHN0YXJ0IGFuZCBk dGVuZCBmb3IgbWljcm9mb3JtYXRzPC9saT4KPC91bD4KPGgzPnYwLjIgYmV0YTwvaDM+Cjx1 bD4KPGxpPkNhdGVnb3JpZXM8L2xpPgo8bGk+Q3VycmVudCBldmVudCBvcHRpb24gZm9yIGNh bGxpbmcgb2Y8L2xpPgo8L3VsPgojIC0tLSBFTkQgUExVR0lOIEhFTFAgLS0tCjw/cGhwCn0K Ci8vIFBsdWdpbiBjb2RlIGdvZXMgaGVyZS4gIE5vIG5lZWQgdG8gZXNjYXBlIHF1b3Rlcy4K CgkvLyBBZGQgYSBuZXcgdGFiIHRvIHRoZSBDb250ZW50IGFyZWEuCgkvLyAidGVzdCIgaXMg dGhlIG5hbWUgb2YgdGhlIGFzc29jaWF0ZWQgZXZlbnQ7ICJ0ZXN0aW5nIiBpcyB0aGUgZGlz cGxheWVkIHRpdGxlCglpZiAoQHR4cGludGVyZmFjZSA9PSAnYWRtaW4nKSB7CgkJLy8gQWRk IG5ldyB0YWJzIHVuZGVyICJHaWcgR3VpZGUiIGZvciAiR2lncyIsICJBZGQgYSBHaWciLCAi VmVudWUiIGFuZCAiQWRkIGEgVmVudWUiCgoJCWFkZF9wcml2cygnam1jX2V2ZW50X21hbmFn ZXInLCcxLDIsMyw0LDUsNicpOwoJCXJlZ2lzdGVyX3RhYigiY29udGVudCIsICJqbWNfZXZl bnRfbWFuYWdlciIsICJldmVudCBtYW5hZ2VyIik7CgoJCXJlZ2lzdGVyX2NhbGxiYWNrKCJq bWNfZXZlbnRfbWFuYWdlciIsICJqbWNfZXZlbnRfbWFuYWdlciIpOwoJCXJlZ2lzdGVyX2Nh bGxiYWNrKCJqbWNfZXZlbnRfbWFuYWdlciIsICJqbWNfZXZlbnRfY2F0ZWdvcmllcyIpOwoJ CXJlZ2lzdGVyX2NhbGxiYWNrKCJqbWNfZXZlbnRfbWFuYWdlciIsICJqbWNfZXZlbnRfbWFu YWdlcl92ZW51ZSIpOwoKCQlhZGRfcHJpdnMoJ3RhYi5qbWNfZXZlbnRfbWFuYWdlcl9wcmVm cycsJzEsMicpOwoJCXJlZ2lzdGVyX3RhYigiZXh0ZW5zaW9ucyIsICJqbWNfZXZlbnRfbWFu YWdlcl9wcmVmcyIsICJqbWNfZV9tIHByZWZzIik7CgkJcmVnaXN0ZXJfY2FsbGJhY2soImpt Y19ldmVudF9tYW5hZ2VyX3ByZWZzIiwgImptY19ldmVudF9tYW5hZ2VyX3ByZWZzIik7CgoJ CS8vIENyZWF0ZSBoYW5kbGVycyBmb3IgdGhlIEdpZyBndWlkZSB0YWJzCgl9CgoJLy8gTWFp biBmdW5jdGlvbiBtYW5hZ2VyIC0gYWN0cyBlc3NlbnRpYWxseSBhcyBhIGdpYW50IHN3aXRj aAoJZnVuY3Rpb24gam1jX2V2ZW50X21hbmFnZXIoJGV2ZW50LCAkc3RlcCkgewoJCS8vIERl Y2xhcmUgZ2xvYmFscwoJCWptY19ldmVudF9tYW5hZ2VyX2dsb2JhbHMoKTsKCQkvLyBDcmVh dGUgdGhlIHRvcCBtZW51IGFycmF5cwoJCSR0b3BfbWVudVsnbWFpbiddID0gdHIodGRjcygi Iiw0KSkudHIodGQoIjxhIGhyZWY9XCI/ZXZlbnQ9am1jX2V2ZW50X21hbmFnZXJcIiBjbGFz cz1cIm5hdmxpbmtcIj5FdmVudCBNYW5hZ2VyPC9hPiIpLnRkKCI8YSBocmVmPVwiP2V2ZW50 PWptY19ldmVudF9tYW5hZ2VyJiMzODtzdGVwPXZlbnVlX21hbmFnZXJcIiBjbGFzcz1cIm5h dmxpbmtcIj5WZW51ZSBNYW5hZ2VyPC9hPiIpLnRkKCI8YSBocmVmPVwiP2V2ZW50PWptY19l dmVudF9tYW5hZ2VyJiMzODtzdGVwPWNhdGVnb3J5X21hbmFnZXJcIiBjbGFzcz1cIm5hdmxp bmtcIj5DYXRlZ29yeSBNYW5hZ2VyPC9hPiIpLnRkKCI8YSBocmVmPVwiP2V2ZW50PWptY19l dmVudF9tYW5hZ2VyJiMzODtzdGVwPWZlZWRfbWFuYWdlclwiIGNsYXNzPVwibmF2bGlua1wi PlJTUyBGZWVkPC9hPiIpKTsKCQkkdG9wX21lbnVbJ2V2ZW50cyddID0gdHIodGQoIjxhIGhy ZWY9XCI/ZXZlbnQ9am1jX2V2ZW50X21hbmFnZXImIzM4O3N0ZXA9ZXZlbnRfYWRkXCIgY2xh c3M9XCJuYXZsaW5rXCI+QWRkIEV2ZW50PC9hPiIpLnRkKCI8YSBocmVmPVwiP2V2ZW50PWpt Y19ldmVudF9tYW5hZ2VyXCIgY2xhc3M9XCJuYXZsaW5rXCI+VXBjb21pbmcgRXZlbnRzPC9h PiIpLnRkKCI8YSBocmVmPVwiP2V2ZW50PWptY19ldmVudF9tYW5hZ2VyJiMzODtzdGVwPWV2 ZW50c19wYXN0XCIgY2xhc3M9XCJuYXZsaW5rXCI+UGFzdCBFdmVudHM8L2E+IikudGQoIiIp KTsKCQkkdG9wX21lbnVbJ3ZlbnVlcyddID0gdHIodGQoIiIpLnRkKCI8YSBocmVmPVwiP2V2 ZW50PWptY19ldmVudF9tYW5hZ2VyJiMzODtzdGVwPXZlbnVlX2FkZFwiIGNsYXNzPVwibmF2 bGlua1wiPkFkZCBWZW51ZTwvYT4iKS50ZCgiPGEgaHJlZj1cIj9ldmVudD1qbWNfZXZlbnRf bWFuYWdlciYjMzg7c3RlcD12ZW51ZV9tYW5hZ2VyXCIgY2xhc3M9XCJuYXZsaW5rXCI+VmVu dWUgTGlzdGluZzwvYT4iKS50ZCgiIikpOwoJCSR0b3BfbWVudVsnY2F0ZWdvcmllcyddID0g dHIodGQoIiIpLnRkKCI8YSBocmVmPVwiP2V2ZW50PWptY19ldmVudF9tYW5hZ2VyJiMzODtz dGVwPWNhdGVnb3J5X2FkZFwiIGNsYXNzPVwibmF2bGlua1wiPkFkZCBDYXRlZ29yeTwvYT4i KS50ZCgiPGEgaHJlZj1cIj9ldmVudD1qbWNfZXZlbnRfbWFuYWdlciYjMzg7c3RlcD1jYXRl Z29yeV9tYW5hZ2VyXCIgY2xhc3M9XCJuYXZsaW5rXCI+Q2F0ZWdvcnkgTGlzdGluZzwvYT4i KS50ZCgiIikpOwoJCSR0b3BfbWVudVsncnNzX2ZlZWRzJ10gPSB0cih0ZGNzKCJUaGlzIGZl YXR1cmUgaXMgeWV0IHRvIGJlIGltcGxlbWVudGVkLiBTb3JyeSBndXlzIDooIiw0KSk7CgoJ CS8vIE91dHB1dCB0aGUgdG9wIGZvciBkZWJ1Z2dpbmcgLSB3aWxsIHN0YXkgVU5USUwgZnVs bCByZWxlYXNlCgkJcGFnZXRvcCgiVGV4dHBhdHRlcm4iLCAiRXZlbnQ6ICRldmVudDsgU3Rl cDogJHN0ZXAuIik7CgoJCS8vIEh1ZyBldmVyeXRoaW5nIGluIGEgbmljZSBsaXR0bGUgRElW IQoJCWVjaG8gIjxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOjNlbTsgbWFyZ2luOiBhdXRvOyB0 ZXh0LWFsaWduOiBjZW50ZXJcIj5cclxuIjsKCgkJLy8gUnVuIHRoZSBpbnN0YWxsZXIgdG8g ZW5zdXJlIHRoYXQgdGFibGVzIGV4aXN0IQoJCS8vIFJldHVybnMgZXJyb3JzIChpZiBhbnkp CgkJZWNobyBqbWNfZXZlbnRfbWFuYWdlcl9pbnN0YWxsKCk7CgoJCS8qIENhc2UgR3VpZGUK CQkJVmVudWVzCgkJCQl2ZW51ZV9tYW5hZ2VyCgkJCQkJTGlzdGluZyBvZiB2ZW51ZXMgYW5k IHN1YmxpbmsgdG8gYWRkIHNlY3Rpb25zCgkJCQl2ZW51ZV9hZGQKCQkJCQlBZGQgYSBuZXcg dmVudWUgdG8gdGhlIGV4aXN0aW5nIGxpc3QKCQkJCXZlbnVlX3Bvc3QKCQkJCQlOZXcgdmVu dWUgaXMgZW50ZXJlZCBpbnRvIHRoZSBkYXRhYmFzZQoJCQkJdmVudWVfZWRpdAoJCQkJCUVk aXQgYW4gZXhpc3RpbmcgZW50cnkKCQkJCXZlbnVlX3NhdmUKCQkJCQlVcG9uIGNvbXBsZXRp b24gb2YgZWRpdGluZyB3aWxsIHNhdmUgY29udGVudHMKCQkJCXZlbnVlX211bHRpX2VkaXQK CQkJCQlEZWxldGluZyBvZiB2ZW51ZXMKCQkJRXZlbnRzCgkJCQlkZWZhdWx0CgkJCQkJTGlz dGluZyBvZiBldmVudHMgKGRlZmF1bHQgcGFnZSBmb3IgdGhlIHBsdWdpbikuCgoJCSovCgkJ c3dpdGNoKCRzdGVwKQoJCXsKCQkJY2FzZSAidmVudWVfbWFuYWdlciI6CgkJCQllY2hvIHRh ZygiVmVudWUgTWFuYWdlciIsICJoMiIpOwoJCQkJZWNobyBzdGFydFRhYmxlKCdsaXN0Jyk7 CgkJCQllY2hvICR0b3BfbWVudVsnbWFpbiddOwoJCQkJZWNobyAkdG9wX21lbnVbJ3ZlbnVl cyddOwoJCQkJZWNobyBlbmRUYWJsZSgpOwoJCQkJZWNobyB0YWcoIlZlbnVlcyIsICJoMyIp OwoJCQkJam1jX2V2ZW50X21hbmFnZXJfdmVudWVzKCk7CgkJCQlicmVhazsKCQkJY2FzZSAi dmVudWVfYWRkIjoKCQkJCWVjaG8gdGFnKCJWZW51ZSBNYW5hZ2VyIiwgImgyIik7CgkJCQll Y2hvIHN0YXJ0VGFibGUoJ2xpc3QnKTsKCQkJCWVjaG8gJHRvcF9tZW51WydtYWluJ107CgkJ CQllY2hvICR0b3BfbWVudVsndmVudWVzJ107CgkJCQllY2hvIGVuZFRhYmxlKCk7CgkJCQll Y2hvIHRhZygiVmVudWVzIiwgImgzIik7CgkJCQlqbWNfZXZlbnRfbWFuYWdlcl92ZW51ZV9m b3JtKCRzdGVwKTsKCQkJCWJyZWFrOwoJCQljYXNlICJ2ZW51ZV9wb3N0IjoKCQkJCWVjaG8g dGFnKCJWZW51ZSBNYW5hZ2VyIiwgImgyIik7CgkJCQllY2hvIHN0YXJ0VGFibGUoJ2xpc3Qn KTsKCQkJCWVjaG8gJHRvcF9tZW51WydtYWluJ107CgkJCQllY2hvICR0b3BfbWVudVsndmVu dWVzJ107CgkJCQllY2hvIGVuZFRhYmxlKCk7CgkJCQlpZigham1jX2V2ZW50X21hbmFnZXJf dmVudWVfcG9zdCgpKQoJCQkJewoJCQkJCWVjaG8gdGFnKCJFcnJvciBTYXZpbmcgVHJ5IEFn YWluIiwgImgzIik7CgkJCQkJam1jX2V2ZW50X21hbmFnZXJfdmVudWVfZm9ybSgkc3RlcCwg dHJ1ZSk7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJZWNobyB0YWcoIlZlbnVlIExpc3Rp bmciLCAiaDMiKTsKCQkJCQlqbWNfZXZlbnRfbWFuYWdlcl92ZW51ZXMoKTsKCQkJCX0KCQkJ CWJyZWFrOwoJCQljYXNlICJ2ZW51ZV9lZGl0IjoKCQkJCWVjaG8gdGFnKCJWZW51ZSBNYW5h Z2VyIiwgImgyIik7CgkJCQllY2hvIHN0YXJ0VGFibGUoJ2xpc3QnKTsKCQkJCWVjaG8gJHRv cF9tZW51WydtYWluJ107CgkJCQllY2hvICR0b3BfbWVudVsndmVudWVzJ107CgkJCQllY2hv IGVuZFRhYmxlKCk7CgkJCQllY2hvIHRhZygiRWRpdCBWZW51ZSIsICJoMyIpOwoJCQkJam1j X2V2ZW50X21hbmFnZXJfdmVudWVfZm9ybSgkc3RlcCwgdHJ1ZSk7CgkJCQlicmVhazsKCQkJ Y2FzZSAidmVudWVfc2F2ZSI6CgkJCQllY2hvIHRhZygiVmVudWUgTWFuYWdlciIsICJoMiIp OwoJCQkJZWNobyBzdGFydFRhYmxlKCdsaXN0Jyk7CgkJCQllY2hvICR0b3BfbWVudVsnbWFp biddOwoKCQkJCWVjaG8gJHRvcF9tZW51Wyd2ZW51ZXMnXTsKCQkJCWVjaG8gZW5kVGFibGUo KTsKCQkJCWlmKCFqbWNfZXZlbnRfbWFuYWdlcl92ZW51ZV9zYXZlKCkpCgkJCQl7CgkJCQkJ ZWNobyB0YWcoIkVycm9yIFNhdmluZyBUcnkgQWdhaW4iLCAiaDMiKTsKCQkJCQlqbWNfZXZl bnRfbWFuYWdlcl92ZW51ZV9mb3JtKCRzdGVwLCB0cnVlKTsKCQkJCX0KCQkJCWVsc2UKCQkJ CXsKCQkJCQllY2hvIHRhZygiVmVudWUgTGlzdGluZyIsICJoMyIpOwoJCQkJCWptY19ldmVu dF9tYW5hZ2VyX3ZlbnVlcygpOwoJCQkJfQoJCQkJYnJlYWs7CgkJCWNhc2UgInZlbnVlX211 bHRpX2VkaXQiOgoJCQkJZXZlbnRfbXVsdGlfZWRpdCgidHhwX2ptY19ldmVudF92ZW51ZSIs ICJJRCIpOwoJCQkJZWNobyBzdGFydFRhYmxlKCdsaXN0Jyk7CgkJCQllY2hvICR0b3BfbWVu dVsnbWFpbiddOwoJCQkJZWNobyAkdG9wX21lbnVbJ3ZlbnVlcyddOwoJCQkJZWNobyBlbmRU YWJsZSgpOwoJCQkJZWNobyB0YWcoIkNhdGVnb3J5IExpc3RpbmciLCAiaDMiKTsKCQkJCWpt Y19ldmVudF9tYW5hZ2VyX3ZlbnVlcygpOwoJCQkJYnJlYWs7CgkJCWNhc2UgImV2ZW50X3Zl bnVlX2NvbW1lbnRzIjoKCQkJCWVjaG8gdHIodGQoIlRvIGNvbWUiKSk7CgkJCQlicmVhazsK CgkJCWNhc2UgImNhdGVnb3J5X21hbmFnZXIiOgoJCQkJZWNobyB0YWcoIkNhdGVnb3J5IE1h bmFnZXIiLCAiaDIiKTsKCQkJCWVjaG8gc3RhcnRUYWJsZSgnbGlzdCcpOwoJCQkJZWNobyAk dG9wX21lbnVbJ21haW4nXTsKCQkJCWVjaG8gJHRvcF9tZW51WydjYXRlZ29yaWVzJ107CgkJ CQllY2hvIGVuZFRhYmxlKCk7CgkJCQllY2hvIHRhZygiQ2F0ZWdvcmllcyIsICJoMyIpOwoJ CQkJam1jX2V2ZW50X21hbmFnZXJfY2F0ZWdvcmllcygpOwoJCQkJYnJlYWs7CgkJCWNhc2Ug ImNhdGVnb3J5X2FkZCI6CgkJCQllY2hvIHRhZygiQ2F0ZWdvcnkgTWFuYWdlciIsICJoMiIp OwoJCQkJZWNobyBzdGFydFRhYmxlKCdsaXN0Jyk7CgkJCQllY2hvICR0b3BfbWVudVsnbWFp biddOwoJCQkJZWNobyAkdG9wX21lbnVbJ2NhdGVnb3JpZXMnXTsKCQkJCWVjaG8gZW5kVGFi bGUoKTsKCQkJCWVjaG8gdGFnKCJDYXRlZ29yeSIsICJoMyIpOwoJCQkJam1jX2V2ZW50X21h bmFnZXJfY2F0ZWdvcnlfZm9ybSgkc3RlcCk7CgkJCQlicmVhazsKCQkJY2FzZSAiY2F0ZWdv cnlfcG9zdCI6CgkJCQllY2hvIHRhZygiQ2F0ZWdvcnkgTWFuYWdlciIsICJoMiIpOwoJCQkJ ZWNobyBzdGFydFRhYmxlKCdsaXN0Jyk7CgkJCQllY2hvICR0b3BfbWVudVsnbWFpbiddOwoJ CQkJZWNobyAkdG9wX21lbnVbJ2NhdGVnb3JpZXMnXTsKCQkJCWVjaG8gZW5kVGFibGUoKTsK CQkJCWlmKCFqbWNfZXZlbnRfbWFuYWdlcl9jYXRlZ29yeV9wb3N0KCkpCgkJCQl7CgkJCQkJ ZWNobyB0YWcoIkVycm9yIFNhdmluZyBUcnkgQWdhaW4iLCAiaDMiKTsKCQkJCQlqbWNfZXZl bnRfbWFuYWdlcl9jYXRlZ29yeV9mb3JtKCRzdGVwLCB0cnVlKTsKCQkJCX0KCQkJCWVsc2UK CQkJCXsKCQkJCQllY2hvIHRhZygiQ2F0ZWdvcnkgTGlzdGluZyIsICJoMyIpOwoJCQkJCWpt Y19ldmVudF9tYW5hZ2VyX2NhdGVnb3JpZXMoKTsKCQkJCX0KCQkJCWJyZWFrOwoJCQljYXNl ICJjYXRlZ29yeV9lZGl0IjoKCQkJCWVjaG8gdGFnKCJWZW51ZSBNYW5hZ2VyIiwgImgyIik7 CgkJCQllY2hvIHN0YXJ0VGFibGUoJ2xpc3QnKTsKCQkJCWVjaG8gJHRvcF9tZW51WydtYWlu J107CgkJCQllY2hvICR0b3BfbWVudVsnY2F0ZWdvcmllcyddOwoJCQkJZWNobyBlbmRUYWJs ZSgpOwoJCQkJZWNobyB0YWcoIkVkaXQgQ2F0ZWdvcnkiLCAiaDMiKTsKCQkJCWptY19ldmVu dF9tYW5hZ2VyX2NhdGVnb3J5X2Zvcm0oJHN0ZXAsIHRydWUpOwoJCQkJYnJlYWs7CgkJCWNh c2UgImNhdGVnb3J5X3NhdmUiOgoJCQkJZWNobyB0YWcoIlZlbnVlIE1hbmFnZXIiLCAiaDIi KTsKCQkJCWVjaG8gc3RhcnRUYWJsZSgnbGlzdCcpOwoJCQkJZWNobyAkdG9wX21lbnVbJ21h aW4nXTsKCQkJCWVjaG8gJHRvcF9tZW51WydjYXRlZ29yaWVzJ107CgkJCQllY2hvIGVuZFRh YmxlKCk7CgkJCQlpZigham1jX2V2ZW50X21hbmFnZXJfY2F0ZWdvcnlfc2F2ZSgpKQoJCQkJ ewoJCQkJCWVjaG8gdGFnKCJFcnJvciBTYXZpbmcgVHJ5IEFnYWluIiwgImgzIik7CgkJCQkJ am1jX2V2ZW50X21hbmFnZXJfY2F0ZWdvcnlfZm9ybSgkc3RlcCwgdHJ1ZSk7CgkJCQl9CgkJ CQllbHNlCgkJCQl7CgkJCQkJZWNobyB0YWcoIkNhdGVnb3J5IExpc3RpbmciLCAiaDMiKTsK CQkJCQlqbWNfZXZlbnRfbWFuYWdlcl9jYXRlZ29yaWVzKCk7CgkJCQl9CgkJCQlicmVhazsK CQkJY2FzZSAiY2F0ZWdvcnlfbXVsdGlfZWRpdCI6CgkJCQlldmVudF9tdWx0aV9lZGl0KCJ0 eHBfam1jX2V2ZW50X2NhdGVnb3J5IiwgIklEIik7CgkJCQllY2hvIHN0YXJ0VGFibGUoJ2xp c3QnKTsKCQkJCWVjaG8gJHRvcF9tZW51WydtYWluJ107CgkJCQllY2hvICR0b3BfbWVudVsn Y2F0ZWdvcmllcyddOwoJCQkJZWNobyBlbmRUYWJsZSgpOwoJCQkJZWNobyB0YWcoIkNhdGVn b3J5IExpc3RpbmciLCAiaDMiKTsKCQkJCWptY19ldmVudF9tYW5hZ2VyX2NhdGVnb3JpZXMo KTsKCQkJCWJyZWFrOwoKCQkJY2FzZSAiZmVlZF9tYW5hZ2VyIjoKCQkJCWVjaG8gdGFnKCJS U1MgTWFuZ2VtZW50IiwgImgyIik7CgkJCQllY2hvIHRhZygiU29ycnkgZ3V5cywgc3RpbGwg ZGV2ZWxvcGluZyB0aGlzIG9uZSBhbmQgaXMgc3RpbGwgdG8gY29tZS4gSWYgeW91J3ZlIGdv dCBhbnkgaWRlYXMgcGxlYXNlIGRvbid0IGhlc2l0YXRlIHRvIGNvbnRhY3QgZXVwaGVtaXpl W2F0XWdtYWlsLmNvbSIsInAiKTsKCQkJCWVjaG8gdGFnKCJSZWdhcmRzLCBKb2VsICg8YSBo cmVmPVwiaHR0cDovL2V1cGhlbWl6ZS5uZXQvXCI+ZXVwaGVtaXplLm5ldDwvYT4pLiIsInAi KTsKCQkJCWJyZWFrOwoKCQkJY2FzZSAiZXZlbnRfYWRkIjoKCQkJCWVjaG8gdGFnKCJFdmVu dCBNYW5hZ2VyIiwgImgyIik7CgkJCQllY2hvIHN0YXJ0VGFibGUoJ2xpc3QnKTsKCQkJCWVj aG8gJHRvcF9tZW51WydtYWluJ107CgkJCQllY2hvICR0b3BfbWVudVsnZXZlbnRzJ107CgkJ CQllY2hvIGVuZFRhYmxlKCk7CgkJCQllY2hvIHRhZygiQWRkIEV2ZW50IiwgImgzIik7CgkJ CQlqbWNfZXZlbnRfbWFuYWdlcl9ldmVudF9mb3JtKCRzdGVwKTsKCQkJCWJyZWFrOwoJCQlj YXNlICJldmVudF9wb3N0IjoKCQkJCWVjaG8gdGFnKCJFdmVudCBNYW5hZ2VyIiwgImgyIik7 CgkJCQllY2hvIHN0YXJ0VGFibGUoJ2xpc3QnKTsKCQkJCWVjaG8gJHRvcF9tZW51WydtYWlu J107CgkJCQllY2hvICR0b3BfbWVudVsnZXZlbnRzJ107CgkJCQllY2hvIGVuZFRhYmxlKCk7 CgkJCQlpZigham1jX2V2ZW50X21hbmFnZXJfZXZlbnRfcG9zdCgpKQoJCQkJewoJCQkJCWVj aG8gdGFnKCJFcnJvciBDcmVhdGluZyBUcnkgQWdhaW4iLCAiaDMiLCAiZXJyb3Jfd2Fybmlu ZyIpOwoJCQkJCWptY19ldmVudF9tYW5hZ2VyX2V2ZW50X2Zvcm0oJHN0ZXApOwoJCQkJfQoJ CQkJZWxzZQoJCQkJewoJCQkJCWVjaG8gdGFnKCJFdmVudCBMaXN0aW5nIiwgImgzIik7CgkJ CQkJam1jX2V2ZW50X21hbmFnZXJfZXZlbnRzKCk7CgkJCQl9CgkJCQlicmVhazsKCQkJY2Fz ZSAiZXZlbnRfZWRpdCI6CgkJCQllY2hvIHRhZygiRXZlbnQgTWFuYWdlciIsICJoMiIpOwoJ CQkJZWNobyBzdGFydFRhYmxlKCdsaXN0Jyk7CgkJCQllY2hvICR0b3BfbWVudVsnbWFpbidd OwoJCQkJZWNobyAkdG9wX21lbnVbJ2V2ZW50cyddOwoJCQkJZWNobyBlbmRUYWJsZSgpOwoJ CQkJZWNobyB0YWcoIkVkaXQgRXZlbnQiLCAiaDMiKTsKCQkJCWptY19ldmVudF9tYW5hZ2Vy X2V2ZW50X2Zvcm0oJHN0ZXAsIHRydWUpOwoJCQkJYnJlYWs7CgkJCWNhc2UgImV2ZW50X3Nh dmUiOgoJCQkJZWNobyB0YWcoIkV2ZW50IE1hbmFnZXIiLCAiaDIiKTsKCQkJCWVjaG8gc3Rh cnRUYWJsZSgnbGlzdCcpOwoJCQkJZWNobyAkdG9wX21lbnVbJ21haW4nXTsKCQkJCWVjaG8g JHRvcF9tZW51WydldmVudHMnXTsKCQkJCWVjaG8gZW5kVGFibGUoKTsKCQkJCWlmKCFqbWNf ZXZlbnRfbWFuYWdlcl9ldmVudF9zYXZlKCkpCgkJCQl7CgkJCQkJZWNobyB0YWcoIkVycm9y IFNhdmluZyBUcnkgQWdhaW4iLCAiaDMiKTsKCQkJCQlqbWNfZXZlbnRfbWFuYWdlcl9ldmVu dF9mb3JtKCRzdGVwLCB0cnVlKTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvIHRh ZygiRXZlbnQgTGlzdGluZyIsICJoMyIpOwoJCQkJCWptY19ldmVudF9tYW5hZ2VyX2V2ZW50 cygpOwoJCQkJfQoJCQkJYnJlYWs7CgkJCWNhc2UgImV2ZW50X211bHRpX2VkaXQiOgoJCQkJ ZWNobyB0YWcoIkV2ZW50IE1hbmFnZXIiLCAiaDIiKTsKCQkJCWV2ZW50X211bHRpX2VkaXQo InR4cF9qbWNfZXZlbnQiLCAiSUQiKTsKCQkJCWVjaG8gc3RhcnRUYWJsZSgnbGlzdCcpOwoJ CQkJZWNobyAkdG9wX21lbnVbJ21haW4nXTsKCQkJCWVjaG8gJHRvcF9tZW51WydldmVudHMn XTsKCQkJCWVjaG8gZW5kVGFibGUoKTsKCQkJCWVjaG8gdGFnKCJFdmVudCBMaXN0aW5nIiwg ImgzIik7CgkJCQlqbWNfZXZlbnRfbWFuYWdlcl9ldmVudHMoKTsKCQkJCWJyZWFrOwoJCQlj YXNlICJldmVudHNfcGFzdCI6CgkJCQllY2hvIHRhZygiRXZlbnQgTWFuYWdlciIsICJoMiIp OwoJCQkJZWNobyBzdGFydFRhYmxlKCdsaXN0Jyk7CgkJCQllY2hvICR0b3BfbWVudVsnbWFp biddOwoJCQkJZWNobyAkdG9wX21lbnVbJ2V2ZW50cyddOwoJCQkJZWNobyBlbmRUYWJsZSgp OwoJCQkJZWNobyB0YWcoIlBhc3QgRXZlbnRzIiwgImgzIik7CgkJCQlqbWNfZXZlbnRfbWFu YWdlcl9ldmVudHMoZmFsc2UpOwoJCQkJYnJlYWs7CgkJCWRlZmF1bHQ6CgkJCQllY2hvIHRh ZygiRXZlbnQgTWFuYWdlciIsICJoMiIpOwoJCQkJZWNobyBzdGFydFRhYmxlKCdsaXN0Jyk7 CgkJCQllY2hvICR0b3BfbWVudVsnbWFpbiddOwoJCQkJZWNobyAkdG9wX21lbnVbJ2V2ZW50 cyddOwoJCQkJZWNobyBlbmRUYWJsZSgpOwoJCQkJZWNobyB0YWcoIlVwY29taW5nIEV2ZW50 cyIsICJoMyIpOwoJCQkJam1jX2V2ZW50X21hbmFnZXJfZXZlbnRzKCk7CgkJCQlicmVhazsK CQl9CgoJCWVjaG8gIjwvZGl2PlxyXG4iOwoJfQoKCWZ1bmN0aW9uIGptY19ldmVudF9tYW5h Z2VyX2V2ZW50cygkaXNfZnV0dXJlID0gdHJ1ZSkKCXsKCQkvLyBUYWtlbiBmcm9tIGV4aXN0 aW5nIFRYUCBDb2RlCgkJZXh0cmFjdChnZXRfcHJlZnMoKSk7CgkJJGx2YXJzID0gYXJyYXko InBhZ2UiLCJzb3J0IiwiZGlyIiwiY3JpdCIsJ21ldGhvZCcpOwoJCWV4dHJhY3QoZ3BzYSgk bHZhcnMpKTsKCQlnbG9iYWwgJHN0ZXA7CgoJCS8vIERlZmF1bHQgZ3JvdXBpbmcgb2YgZXZl bnRzCgkJJHRpbWUgPSAidW5peF90aW1lc3RhbXAoc3RhcnRfRGF0ZVRpbWUpIi4oJGlzX2Z1 dHVyZT8iPiI6IjwiKS50aW1lKCkuIiAiOwoJCS8vIERlZmF1bHQgc29ydCBzdGFydF9EYXRl VGltZSAodGltZSBvZiBldmVudCBzdGFydGluZykKCQlpZiAoISRzb3J0KSAkc29ydCA9ICJz dGFydF9EYXRlVGltZSI7CgkJLy8gRGVmYXVsdCBkaXJlY3Rpb24gb2Ygc29ydDogZGVzY2Vu ZGluZwoJCWlmICghJGRpcikgJGRpciA9ICJkZXNjIjsKCQkvLyBTZXQgdGhlIGxpbmsgZm8g aGVhZGVycyB0byB0aGUgb3Bwb3NpdGUgb2YgdGhlIGRpcmVjdGlvbiAoY291bGQgYmUgb3B0 aW1pc2VkKQoJCWlmICgkZGlyID09ICJkZXNjIikgeyAkbGlua2RpciA9ICJhc2MiOyB9IGVs c2UgeyAkbGlua2RpciA9ICJkZXNjIjsgfQoKCQkvLyBHZXQgbnVtYmVyIG9mIGV2ZW50cwoJ CSR0b3RhbCA9IGdldENvdW50KCd0eHBfam1jX2V2ZW50JywiJHRpbWUiKTsKCQkvLyBMaW1p dCBjdXJyZW50bHkgc2V0IHVzaW5nIHBhZ2UncyBsaW1pdAoJCSRsaW1pdCA9ICgkYXJ0aWNs ZV9saXN0X3BhZ2VieSkgPyAkYXJ0aWNsZV9saXN0X3BhZ2VieSA6IDI1OwoJCS8vIE51bWVy IG9mIHBhZ2VzIGlzIHRoZSByb3VuZGVkIHVwIHZhbHVlIG9mIHRoZSB0b3RhbCBlbnRyaWVz IGRpdmlkZWQgYnkgcGFnZSBsaW1pdAoJCSRudW1QYWdlcyA9IGNlaWwoJHRvdGFsLyRsaW1p dCk7CgkJLy8gU2V0IGRlZmF1bHQgcGFnZQoJCSRwYWdlID0gKCEkcGFnZSkgPyAxIDogJHBh Z2U7CgoJCS8vIE9mZnNldCBpcyBzbGlnaHRseSBkaWZmZXJlbnQgdG8gdGhlIHBhZ2UgKHNp bmNlIHdlIHN0YXJ0IHdpdGggdGhlIHplcm90aCByZWNvcmQgb24gcGFnZSBvbmUpCgkJJG9m ZnNldCA9ICgkcGFnZSAtIDEpICogJGxpbWl0OwoKCQllY2hvIGptY19uYXZfZm9ybSgnam1j X2V2ZW50X21hbmFnZXInLCAoJGlzX2Z1dHVyZT8nJzonZXZlbnRzX3Bhc3QnKSwgJHBhZ2Us ICRudW1QYWdlcywgJHNvcnQsICRkaXIpOwoKCQkvLyBTdGFydCBnZXR0aW5nIHJvd3MKCQkk cnMgPSBzYWZlX3Jvd3Nfc3RhcnQoCgkJCSIqLCB1bml4X3RpbWVzdGFtcChzdGFydF9EYXRl VGltZSkgYXMgdVN0YXJ0LCB1bml4X3RpbWVzdGFtcChmaW5pc2hfRGF0ZVRpbWUpIGFzIHVG aW5pc2giLAoJCQkidHhwX2ptY19ldmVudCIsCgkJCSIkdGltZSBvcmRlciBieSAkc29ydCAk ZGlyIGxpbWl0ICRvZmZzZXQsJGxpbWl0IgoJCSk7CgoJCS8vIElmIHRoZXJlIGFyZSByb3dz IHdlJ2xsIG1ha2Ugb3VyIHRhYmxlLiBJdCdkIGJlIG5pY2UgZm9yIGV2ZXJ5IHNlY29uZCBv bmUgdG8gYmUgYSBsaXR0bGUgYmV0dGVyIHB1dCB0b2dldGhlcgoJCWlmICgkcnMpIHsKCQkJ Ly8gU3RhcnQgdGhlIGZvcm0gZm9yIG11bHRpIGVkaXRpbmcKCQkJLy8gU3RhcnQgYSB0YWJs ZSB3aXRoIHRoZSBjbGFzcyAnbGlzdCcKCQkJLy8gU2V0IHVwIHRoZSBoZWFkZXJzIGZvciB0 aGUgY29sdW1ucwoJCQllY2hvICc8Zm9ybSBhY3Rpb249ImluZGV4LnBocCIgbWV0aG9kPSJw b3N0IiBuYW1lPSJsb25nZm9ybSIgb25zdWJtaXQ9InJldHVybiB2ZXJpZnkoXCcnLmdUeHQo J2FyZV95b3Vfc3VyZScpLidcJykiPicsCgkJCXN0YXJ0VGFibGUoJ2xpc3QnKSwKCQkJJzx0 cj4nLAoJCQkJam1jX2V2ZW50X2NvbHVtbl9oZWFkKCdDYXRlZ29yeScsICdDYXRlZ29yeUlE JywgJ2ptY19ldmVudF9tYW5hZ2VyJywgMSwgJGxpbmtkaXIpLAoJCQkJam1jX2V2ZW50X2Nv bHVtbl9oZWFkKCdFdmVudCcsICduYW1lJywgJ2ptY19ldmVudF9tYW5hZ2VyJywgMSwgJGxp bmtkaXIpLAoJCQkJam1jX2V2ZW50X2NvbHVtbl9oZWFkKCdTdGFydCcsICdzdGFydF9EYXRl VGltZScsICdqbWNfZXZlbnRfbWFuYWdlcicsIDEsICRsaW5rZGlyKSwKCQkJCWptY19ldmVu dF9jb2x1bW5faGVhZCgnRmluaXNoJywgJ3N0YXJ0X0RhdGVUaW1lJywgJ2ptY19ldmVudF9t YW5hZ2VyJywgMSwgJGxpbmtkaXIpLAoJCQkJam1jX2V2ZW50X2NvbHVtbl9oZWFkKCdWZW51 ZScsICdWZW51ZUlEJywgJ2ptY19ldmVudF9tYW5hZ2VyJywgMSwgJGxpbmtkaXIpLAoJCQkJ am1jX2V2ZW50X2NvbHVtbl9oZWFkKCdQcmljZScsICdQcmljZScsICdqbWNfZXZlbnRfbWFu YWdlcicsIDEsICRsaW5rZGlyKSwKCQkJCWptY19ldmVudF9jb2x1bW5faGVhZCgnUG9zdGVk IEJ5JywgJ0F1dGhvcklEJywgJ2ptY19ldmVudF9tYW5hZ2VyJywgMSwgJGxpbmtkaXIpLAoJ CQkJdGQoKSwKCQkJJzwvdHI+JzsKCQkJLy8gRm9yZWFjaCBvZiB0aGUgZW50cmllcyBjcmVh dGUgaXQncyBpbmZvcm1hdGlvbiBpbiB0aGUgcmVsZXZhbnQgY29sdW1ucwoJCQl3aGlsZSAo JGEgPSBuZXh0Um93KCRycykpIHsKCQkJCWV4dHJhY3QoJGEpOwoKCQkJCS8vIEdldCB0aGUg dmVudWUgJ25hbWUnIGZyb20gaXQncyBJRAoJCQkJaWYoJHZlbnVlID0gc2FmZV9yb3dzKCJu YW1lIiwgInR4cF9qbWNfZXZlbnRfdmVudWUiLCAiSUQgPSAkVmVudWVJRCIpKQoJCQkJCSR2 ZW51ZV9uYW1lID0gJHZlbnVlWzBdWyduYW1lJ107CgkJCQllbHNlCgkJCQkJJHZlbnVlX25h bWUgPSAnJzsKCgkJCQkkYXV0aG9yX25hbWUgPSAkQXV0aG9ySUQ7CgoJCQkJaWYoJENhdGVn b3J5ID0gc2FmZV9yb3coIm5hbWUiLCJ0eHBfam1jX2V2ZW50X2NhdGVnb3J5IiwgIklEID0g JENhdGVnb3J5SUQiKSkKCQkJCQkkQ2F0ZWdvcnkgPSAkQ2F0ZWdvcnlbJ25hbWUnXTsKCQkJ CWVsc2UKCQkJCQkkQ2F0ZWdveSA9ICIiOwoKCQkJCS8vIEV2ZW50IHN0YXJ0aW5nIHRpbWVz IGFuZCBkYXRlcyB3aXRoIG9mZnNldAoJCQkJJHN0YXJ0X2V2ZW50ZGF0ZSA9IGRhdGUoImQg TSB5IiwkdVN0YXJ0ICsgdHpfb2Zmc2V0KCkpOwoJCQkJJHN0YXJ0X2V2ZW50dGltZSA9IGRh dGUoImc6aSBhIiwkdVN0YXJ0ICsgdHpfb2Zmc2V0KCkpOwoJCQkJLy8gRXZlbnQgZmluaXNo IHRpbWVzIGFuZCBkYXRlcyB3aXRoIG9mZnNldAoJCQkJJGZpbmlzaF9ldmVudGRhdGUgPSBk YXRlKCJkIE0geSIsJHVGaW5pc2ggKyB0el9vZmZzZXQoKSk7CgkJCQkkZmluaXNoX2V2ZW50 dGltZSA9IGRhdGUoImc6aSBhIiwkdUZpbmlzaCArIHR6X29mZnNldCgpKTsKCgkJCQkvLyBT ZXR1cCB0aGUgbGlua3MgdG8gZWRpdGluZy4uLgoJCQkJJGV2ZW50bGluayA9IGVMaW5rKCdq bWNfZXZlbnRfbWFuYWdlcicsJ2V2ZW50X2VkaXQnLCdJRCcsJElELCRuYW1lKTsKCQkJCSRz dGFydF9ldmVudERhdGVUaW1lID0gZUxpbmsoJ2ptY19ldmVudF9tYW5hZ2VyJywnZXZlbnRf ZWRpdCcsJ0lEJywkSUQsJHN0YXJ0X2V2ZW50ZGF0ZSkuIiBhdCAiLiRzdGFydF9ldmVudHRp bWU7CgkJCQkkZmluaXNoX2V2ZW50RGF0ZVRpbWUgPSBlTGluaygnam1jX2V2ZW50X21hbmFn ZXInLCdldmVudF9lZGl0JywnSUQnLCRJRCwkZmluaXNoX2V2ZW50ZGF0ZSkuIiBhdCAiLiRm aW5pc2hfZXZlbnR0aW1lOwoJCQkJJHZsaW5rID0gZUxpbmsoJ2ptY19ldmVudF9tYW5hZ2Vy JywnZXZlbnRfZWRpdCcsJ0lEJywkSUQsJHZlbnVlX25hbWUpOwoJCQkJJG1vZGJveCA9IGZJ bnB1dCgnY2hlY2tib3gnLCdzZWxlY3RlZFtdJywkSUQsJycsJycsJycsJycsJycsJElEKTsK CgkJCQkvLyBPdXRwdXQgdGhlIHJvdwoJCQkJZWNobyAiPHRyPiIubiwKCQkJCQl0ZCgkQ2F0 ZWdvcnkpLAoJCQkJCXRkKCRldmVudGxpbmspLAoJCQkJCXRkKCRzdGFydF9ldmVudERhdGVU aW1lKSwKCQkJCQl0ZCgkZmluaXNoX2V2ZW50RGF0ZVRpbWUpLAoJCQkJCXRkKCR2bGluaywx MDApLAoJCQkJCXRkKCRQcmljZSw3NSksCgkJCQkJdGQoJGF1dGhvcl9uYW1lKSwKCQkJCQl0 ZCgkbW9kYm94KSwKCQkJCSc8L3RyPicubjsKCQkJfQoJCQkvLyBNb2RpZmllZCBtdWx0aWVk aXQgZm9ybSBiYXNlZCBvbiBleGlzdGluZyBvbmUgYnV0IHdpdGggbW9yZSBvcHRpb25zCgkJ CWVjaG8gdHIodGRhKHNlbGVjdF9idXR0b25zKCkuam1jX2V2ZW50X21hbmFnZXJfbXVsdGll ZGl0X2Zvcm0oJ2ptY19ldmVudF9tYW5hZ2VyJywgJ2V2ZW50X211bHRpX2VkaXQnKSwnIGNv bHNwYW49IjciIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0O2JvcmRlcjowcHgiJykpOwoJCQll Y2hvICI8L3RhYmxlPjwvZm9ybT4iOwoJCQkvLyBQYWdlYnkgZm9ybQoJCQllY2hvIHBhZ2Vi eV9mb3JtKCdsaXN0JywkYXJ0aWNsZV9saXN0X3BhZ2VieSk7CgkJCS8vIFVuc3VyZSB3aHkg LSB3YXMgaW4gdGhlIGFydGljbGUgbGlzdCB2ZXJzaW9uLi4uCgkJCXVuc2V0KCRzb3J0KTsK CQl9CgkJLy8gSWYgdGhlcmUgZXhpc3RzIG5vIGVudHJpZXMsIGRvbid0IGJvdGggd2l0aCBh bnl0aGluZwoJCWVsc2UKCQkJZWNobyAnQWRkaW5nIEZha2UgRW50cnkuJzsKCX0KCglmdW5j dGlvbiBqbWNfZXZlbnRfbWFuYWdlcl9ldmVudF9mb3JtKCRzdGVwLCAkZXhpc3RpbmdfaW5m byA9IGZhbHNlKQoJewoJCS8vIEdldCBJRCBpbmZvcm1hdGlvbiAoaWYgYW55KQoJCWdsb2Jh bCAkdmFyc19ldmVudHM7CgkJJGlkID0gKGdwcygnSUQnKT9ncHMoJ0lEJyk6JycpOwoJCS8v IElmIHRoZXJlIGlzIGFuIGlkIGFuZCBlZGl0aW5nIG9yIHNhdmluZyBvciBwb3N0aW5nCgkJ aWYoJGlkICYmICgkc3RlcCA9PSAnZXZlbnRfZWRpdCcgfHwgJHN0ZXAgPT0gJ2V2ZW50X3Nh dmUnIHx8ICRzdGVwID09ICdldmVudF9wb3N0JykpIHsKCQkJJHJvdyA9IHNhZmVfcm93KCIq LCB1bml4X3RpbWVzdGFtcChzdGFydF9EYXRlVGltZSkgYXMgc0RhdGVUaW1lLCB1bml4X3Rp bWVzdGFtcChmaW5pc2hfRGF0ZVRpbWUpIGFzIGZEYXRlVGltZSwgdW5peF90aW1lc3RhbXAo TGFzdE1vZCkgYXMgc0xhc3RNb2QiLCAidHhwX2ptY19ldmVudCIsICJJRCA9ICRpZCIpOwoJ CQlmb3JlYWNoKCRyb3cgYXMgJG49PiR2KQoJCQkJJCRuID0gc3RyaXBzbGFzaGVzKCR2KTsK CQl9CgkJLy8gSWYgbm8gZXhpc3RpbmcgaW5mb3JtYXRpb24gcmVzZXQgdGhlIHZhcmlhYmxl cwoJCWlmICghJGV4aXN0aW5nX2luZm8gJiYoJHN0ZXAgPT0gJ2V2ZW50X2FkZCcgb3IgJHN0 ZXA9PSdldmVudF9wb3N0JyBvciAkc3RlcCA9PSAnZXZlbnRfc2F2ZScpKXsKCQkJZm9yZWFj aCgkdmFyc19ldmVudHMgYXMgJHZhcikgewoJCQkJJCR2YXIgPSAnJzsKCQkJfQoJCQkvLyBS ZXN0YXJ0IHRoZSB0aW1lCgkJCSRzRGF0ZVRpbWUgPSB0aW1lKCkgKyB0el9vZmZzZXQoKTsK CQkJJGZEYXRlVGltZSA9IHRpbWUoKSArIHR6X29mZnNldCgpOwoJCX0KCQllbHNlewoJCQkk c0RhdGVUaW1lICs9IHR6X29mZnNldCgpOwoJCQkkZkRhdGVUaW1lICs9IHR6X29mZnNldCgp OwoJCX0KCgkJLy8gQ3JlYXRlIFRleHRib3hlcyBmb3IgdGhlIG90aGVyIGluZm9ybWF0aW9u CgkJJG90aGVyX2JhbmRzID0gJzx0ZXh0YXJlYSBuYW1lPSJPdGhlckJhbmRzIiBjb2xzPSI0 MCIgcm93cz0iNyIgdGFiaW5kZXg9IjQiPicuJE90aGVyQmFuZHMuJzwvdGV4dGFyZWE+JzsK CQkkb3RoZXJfaW5mbyA9ICc8dGV4dGFyZWEgbmFtZT0iT3RoZXJJbmZvIiBjb2xzPSI0MCIg cm93cz0iNyIgdGFiaW5kZXg9IjQiPicuJE90aGVySW5mby4nPC90ZXh0YXJlYT4nOwoKCQkv LyBFY2hvIHN0YXJ0IG9mIGZvcm0gKFJFVklTRSkKCQllY2hvICc8Zm9ybSBhY3Rpb249Imlu ZGV4LnBocCIgbWV0aG9kPSJwb3N0Ij4nOwoJCWVjaG8gJzxpbnB1dCB0eXBlPSJoaWRkZW4i IG5hbWU9ImV2ZW50IiB2YWx1ZT0iam1jX2V2ZW50X21hbmFnZXIiIC8+JzsKCQllY2hvICc8 aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzdGVwIiB2YWx1ZT0iJy4oJGlkPydldmVudF9z YXZlJzonZXZlbnRfcG9zdCcpLiciIC8+JzsKCQllY2hvICc8aW5wdXQgdHlwZT0iaGlkZGVu IiBuYW1lPSJJRCIgdmFsdWU9IicuKCRJRD8kSUQ6JycpLiciIC8+JzsKCgkJLy8gSW5wdXQg SW5mb3JtYXRpb24KCQllY2hvIHN0YXJ0VGFibGUoJ2VkaXQnKTsKCQllY2hvICI8dHI+PHRk PkNhdGVnb3J5PC90ZD48dGQ+Ii5jYXRlZ29yeWRyb3Bkb3duKCRDYXRlZ29yeUlELCAnNCcp LiI8L3RkPjx0ZD48L3RkPjwvdHI+IjsKCQllY2hvICI8dHI+PHRkPkV2ZW50IE5hbWU8L3Rk Pjx0ZD4iLmZJbnB1dCgndGV4dCcsICduYW1lJywgJG5hbWUsICcnLCAnJywgJycsICc1MCUn LCAnNCcpLiI8L3RkPjwvdHI+IjsKCQllY2hvICI8dHI+PHRkPlN0YXJ0IERhdGU8L3RkPjx0 ZD4iLmRhdGV0aW1lZHJvcGRvd24oImRheSIsICJldmVudF9zdGFydF9kYXkiLCBkYXRlKCdk Jywkc0RhdGVUaW1lKSwgJzQnKS5kYXRldGltZWRyb3Bkb3duKCJtb250aCIsICJldmVudF9z dGFydF9tb250aCIsIGRhdGUoJ20nLCRzRGF0ZVRpbWUpLCAnNCcpLmRhdGV0aW1lZHJvcGRv d24oInllYXIiLCAiZXZlbnRfc3RhcnRfeWVhciIsIGRhdGUoJ1knLCRzRGF0ZVRpbWUpLCAn NCcpLiI8L3RkPjwvdHI+IjsKCQllY2hvICI8dHI+PHRkPlN0YXJ0IFRpbWU8L3RkPjx0ZD4i LmRhdGV0aW1lZHJvcGRvd24oImhvdXIiLCAiZXZlbnRfc3RhcnRfaG91ciIsIGRhdGUoJ0gn LCRzRGF0ZVRpbWUpLCAnNCcpLmRhdGV0aW1lZHJvcGRvd24oIm1pbnV0ZSIsICJldmVudF9z dGFydF9taW51dGUiLCBkYXRlKCdpJywkc0RhdGVUaW1lKSwgJzQnKS4iPC90ZD48L3RyPiI7 CgkJZWNobyAiPHRyPjx0ZD5GaW5pc2ggRGF0ZTwvdGQ+PHRkPiIuZGF0ZXRpbWVkcm9wZG93 bigiZGF5IiwgImV2ZW50X2ZpbmlzaF9kYXkiLCBkYXRlKCdkJywkZkRhdGVUaW1lKSwgJzQn KS5kYXRldGltZWRyb3Bkb3duKCJtb250aCIsICJldmVudF9maW5pc2hfbW9udGgiLCBkYXRl KCdtJywkZkRhdGVUaW1lKSwgJzQnKS5kYXRldGltZWRyb3Bkb3duKCJ5ZWFyIiwgImV2ZW50 X2ZpbmlzaF95ZWFyIiwgZGF0ZSgnWScsJGZEYXRlVGltZSksICc0JykuIjwvdGQ+PC90cj4i OwoJCWVjaG8gIjx0cj48dGQ+RmluaXNoIFRpbWU8L3RkPjx0ZD4iLmRhdGV0aW1lZHJvcGRv d24oImhvdXIiLCAiZXZlbnRfZmluaXNoX2hvdXIiLCBkYXRlKCdIJywkZkRhdGVUaW1lKSwg JzQnKS5kYXRldGltZWRyb3Bkb3duKCJtaW51dGUiLCAiZXZlbnRfZmluaXNoX21pbnV0ZSIs IGRhdGUoJ2knLCRmRGF0ZVRpbWUpLCAnNCcpLiI8L3RkPjwvdHI+IjsKCQllY2hvICI8dHI+ PHRkPlZlbnVlPC90ZD48dGQ+Ii52ZW51ZWRyb3Bkb3duKCRWZW51ZUlELCAnNCcpLiI8L3Rk Pjx0ZD48L3RkPjwvdHI+IjsKCQllY2hvICI8dHI+PHRkPlByaWNlPC90ZD48dGQ+Ii5mSW5w dXQoJ3RleHQnLCAnUHJpY2UnLCAkUHJpY2UsICcnLCAnJywgJycsICc1MCUnLCAnNCcpLiI8 L3RkPjwvdHI+IjsKCQllY2hvICI8dHI+PHRkPk90aGVyIEJhbmRzPC90ZD48dGQ+Ii4kb3Ro ZXJfYmFuZHMuIjwvdGQ+PC90cj4iOwoJCWVjaG8gIjx0cj48dGQ+T3RoZXIgSW5mbzwvdGQ+ PHRkPiIuJG90aGVyX2luZm8uIjwvdGQ+PC90cj4iOwoJCWVjaG8gIjx0cj48dGQgY29sc3Bh bj1cIjJcIiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtcIj4iLmZJbnB1dCgnc3VibWl0 JywgJycsICgkSUQ/J1NhdmUgRXZlbnQnOidBZGQgRXZlbnQnKSwgJycsICcnLCAnJywgJzUw JScsICc0JykuIjwvdGQ+PC90cj4iOwoKICAgIAllY2hvICc8L3RhYmxlPjwvZm9ybT4nOwoJ fQoKCWZ1bmN0aW9uIGptY19ldmVudF9tYW5hZ2VyX2V2ZW50X3NhdmUoKQoJewoJCWdsb2Jh bCAkdHhwX3VzZXIsJHZhcnMsJHR4cGNmZzsKCQlnbG9iYWwgJHZhcnNfZXZlbnRzOwoJCSRj YWxlbmRhcl9zdGFydCA9IGFycmF5KCdldmVudF9zdGFydF95ZWFyJywgJ2V2ZW50X3N0YXJ0 X21vbnRoJywgJ2V2ZW50X3N0YXJ0X2RheScsICdldmVudF9zdGFydF9ob3VyJywgJ2V2ZW50 X3N0YXJ0X21pbnV0ZScpOwoJCSRjYWxlbmRhcl9maW5pc2ggPSBhcnJheSgnZXZlbnRfZmlu aXNoX3llYXInLCAnZXZlbnRfZmluaXNoX21vbnRoJywgJ2V2ZW50X2ZpbmlzaF9kYXknLCAn ZXZlbnRfZmluaXNoX2hvdXInLCAnZXZlbnRfZmluaXNoX21pbnV0ZScpOwoKCQlpbmNsdWRl X29uY2UgJHR4cGNmZ1sndHhwYXRoJ10uJy9saWIvY2xhc3NUZXh0aWxlLnBocCc7CgkJJHRl eHRpbGUgPSBuZXcgVGV4dGlsZSgpOwoKCQlleHRyYWN0KGdwc2EoYXJyYXlfbWVyZ2UoJHZh cnNfZXZlbnRzLCRjYWxlbmRhcl9zdGFydCwkY2FsZW5kYXJfZmluaXNoKSkpOwoKCQkkQ2F0 ZWdvcnlJRCA9ICRDYXRlZ29yeUlEPyRDYXRlZ29yeUlEOjA7CgkJJE90aGVyQmFuZHNfaHRt bCA9ICRPdGhlckJhbmRzPyR0ZXh0aWxlLT5UZXh0aWxlVGhpcygkT3RoZXJCYW5kcyk6IiI7 CgkJJE90aGVySW5mb19odG1sID0gJE90aGVySW5mbz8kdGV4dGlsZS0+VGV4dGlsZVRoaXMo JE90aGVySW5mbyk6IiI7CgoJCWlmKCFjaGVja2RhdGUoJGV2ZW50X3N0YXJ0X21vbnRoLCAk ZXZlbnRfc3RhcnRfZGF5LCAkZXZlbnRfc3RhcnRfeWVhcikgJiYgIWNoZWNrZGF0ZSgkZXZl bnRfZmluaXNoX21vbnRoLCAkZXZlbnRfZmluaXNoX2RheSwgJGV2ZW50X2ZpbmlzaF95ZWFy KSkKCQl7CgkJCWVjaG8gIjxzcGFuIGNsYXNzPVwiZXJyb3Jfd2FybmluZ1wiPjxzdHJvbmc+ RGF0ZSBFcnJvcjo8L3N0cm9uZz4gVGhlcmUgaXMgbm90ICRldmVudF9kYXkgZGF5cyBpbiAk ZXZlbnRfbW9udGggLiBUaGUgZGF5IGhhcyBiZWVuIHJvdW5kZWQgdG8gdGhlIGxhc3QgZGF5 IG9mICRldmVudF9tb250aC48L3NwYW4+IjsKCQkJLy8gVG8gZG8gdGhlIGZ1bmN0aW9uIGhl cmUuLi4KCQl9CgkJJHNEYXRlVGltZVUgPSBzdHJ0b3RpbWUoJGV2ZW50X3N0YXJ0X3llYXIu Jy0nLiRldmVudF9zdGFydF9tb250aC4nLScuJGV2ZW50X3N0YXJ0X2RheS4nICcuJGV2ZW50 X3N0YXJ0X2hvdXIuJzonLiRldmVudF9zdGFydF9taW51dGUuIjowMCIpLXR6X29mZnNldCgp OwoJCSRzRGF0ZVRpbWUgPSAiZnJvbV91bml4dGltZSgkc0RhdGVUaW1lVSkiOwoJCSRzRGF0 ZVRpbWUgPSAic3RhcnRfRGF0ZVRpbWU9JHNEYXRlVGltZSI7CgoJCSRmRGF0ZVRpbWVVID0g c3RydG90aW1lKCRldmVudF9maW5pc2hfeWVhci4nLScuJGV2ZW50X2ZpbmlzaF9tb250aC4n LScuJGV2ZW50X2ZpbmlzaF9kYXkuJyAnLiRldmVudF9maW5pc2hfaG91ci4nOicuJGV2ZW50 X2ZpbmlzaF9taW51dGUuIjowMCIpLXR6X29mZnNldCgpOwoJCSRmRGF0ZVRpbWUgPSAiZnJv bV91bml4dGltZSgkZkRhdGVUaW1lVSkiOwoJCSRmRGF0ZVRpbWUgPSAiZmluaXNoX0RhdGVU aW1lPSRmRGF0ZVRpbWUiOwoKCQlpZigkZkRhdGVUaW1lVSA+PSAkc0RhdGVUaW1lVSkKCQl7 CgkJCXNhZmVfdXBkYXRlKCJ0eHBfam1jX2V2ZW50IiwKCQkJCSIkc0RhdGVUaW1lLAoJCQkJ JGZEYXRlVGltZSwKCQkJCUNhdGVnb3J5SUQgPSAkQ2F0ZWdvcnlJRCwKCQkJCW5hbWUgPSAn Ii5hZGRzbGFzaGVzKCRuYW1lKS4iJywKCQkJCUxhc3RNb2QgPSBub3coKSwKCQkJCUxhc3RN b2RJRCA9ICciLmFkZHNsYXNoZXMoJHR4cF91c2VyKS4iJywKCQkJCVZlbnVlSUQgPSAkVmVu dWVJRCwKCQkJCVByaWNlID0gJyIuYWRkc2xhc2hlcygkUHJpY2UpLiInLAoJCQkJT3RoZXJC YW5kcyA9ICciLmFkZHNsYXNoZXMoJE90aGVyQmFuZHMpLiInLAoJCQkJT3RoZXJCYW5kc19o dG1sID0gJyRPdGhlckJhbmRzX2h0bWwnLAoJCQkJT3RoZXJJbmZvID0gJyIuYWRkc2xhc2hl cygkT3RoZXJJbmZvKS4iJywKCQkJCU90aGVySW5mb19odG1sID0gJyRPdGhlckluZm9faHRt bCciLAoJCQkJIklEID0gJyRJRCciKTsKCQl9CgkJZWxzZXsKCQkJZWNobyAiPHNwYW4gY2xh c3M9XCJlcnJvcl93YXJuaW5nXCI+PHN0cm9uZz5EYXRlIEVycm9yOjwvc3Ryb25nPiBGaW5p c2ggdGltZSBiZWZvcmUgc3RhcnQgdGltZS48L3NwYW4+IjsKCQkJcmV0dXJuIGZhbHNlOwoJ CX0KCgkJcmV0dXJuIHRydWU7Cgl9CgoJZnVuY3Rpb24gam1jX2V2ZW50X21hbmFnZXJfZXZl bnRfcG9zdCgpCgl7CgkJZ2xvYmFsICR0eHBfdXNlciwkdmFycywkdHhwY2ZnOwoJCWdsb2Jh bCAkdmFyc19ldmVudHM7CgkJJGNhbGVuZGFyX3N0YXJ0ID0gYXJyYXkoJ2V2ZW50X3N0YXJ0 X3llYXInLCAnZXZlbnRfc3RhcnRfbW9udGgnLCAnZXZlbnRfc3RhcnRfZGF5JywgJ2V2ZW50 X3N0YXJ0X2hvdXInLCAnZXZlbnRfc3RhcnRfbWludXRlJyk7CgkJJGNhbGVuZGFyX2Zpbmlz aCA9IGFycmF5KCdldmVudF9maW5pc2hfeWVhcicsICdldmVudF9maW5pc2hfbW9udGgnLCAn ZXZlbnRfZmluaXNoX2RheScsICdldmVudF9maW5pc2hfaG91cicsICdldmVudF9maW5pc2hf bWludXRlJyk7CgoJCWluY2x1ZGVfb25jZSAkdHhwY2ZnWyd0eHBhdGgnXS4nL2xpYi9jbGFz c1RleHRpbGUucGhwJzsKCQkkdGV4dGlsZSA9IG5ldyBUZXh0aWxlKCk7CgoJCWV4dHJhY3Qo Z3BzYShhcnJheV9tZXJnZSgkdmFyc19ldmVudHMsJGNhbGVuZGFyX3N0YXJ0LCRjYWxlbmRh cl9maW5pc2gpKSk7CgoJCSRDYXRlZ29yeUlEID0gJENhdGVnb3J5SUQ/JENhdGVnb3J5SUQ6 MDsKCQkkT3RoZXJCYW5kc19odG1sID0gJE90aGVyQmFuZHM/JHRleHRpbGUtPlRleHRpbGVU aGlzKCRPdGhlckJhbmRzKToiIjsKCQkkT3RoZXJJbmZvX2h0bWwgPSAkT3RoZXJJbmZvPyR0 ZXh0aWxlLT5UZXh0aWxlVGhpcygkT3RoZXJJbmZvKToiIjsKCgkJaWYoIWNoZWNrZGF0ZSgk ZXZlbnRfc3RhcnRfbW9udGgsICRldmVudF9zdGFydF9kYXksICRldmVudF9zdGFydF95ZWFy KSAmJiAhY2hlY2tkYXRlKCRldmVudF9maW5pc2hfbW9udGgsICRldmVudF9maW5pc2hfZGF5 LCAkZXZlbnRfZmluaXNoX3llYXIpKQoJCXsKCQkJZWNobyAiPHNwYW4gY2xhc3M9XCJlcnJv cl93YXJuaW5nXCI+PHN0cm9uZz5EYXRlIEVycm9yOjwvc3Ryb25nPiBUaGVyZSBpcyBub3Qg JGV2ZW50X2RheSBkYXlzIGluICRldmVudF9tb250aCAuIFRoZSBkYXkgaGFzIGJlZW4gcm91 bmRlZCB0byB0aGUgbGFzdCBkYXkgb2YgJGV2ZW50X21vbnRoLjwvc3Bhbj4iOwoJCQkvLyBU byBkbyB0aGUgZnVuY3Rpb24gaGVyZS4uLgoJCX0KCQkkc0RhdGVUaW1lID0gc3RydG90aW1l KCRldmVudF9zdGFydF95ZWFyLictJy4kZXZlbnRfc3RhcnRfbW9udGguJy0nLiRldmVudF9z dGFydF9kYXkuJyAnLiRldmVudF9zdGFydF9ob3VyLic6Jy4kZXZlbnRfc3RhcnRfbWludXRl LiI6MDAiKS10el9vZmZzZXQoKTsKCQkkc0RhdGVUaW1lID0gImZyb21fdW5peHRpbWUoJHNE YXRlVGltZSkiOwoJCSRzRGF0ZVRpbWUgPSAic3RhcnRfRGF0ZVRpbWU9JHNEYXRlVGltZSI7 CgoJCSRmRGF0ZVRpbWUgPSBzdHJ0b3RpbWUoJGV2ZW50X2ZpbmlzaF95ZWFyLictJy4kZXZl bnRfZmluaXNoX21vbnRoLictJy4kZXZlbnRfZmluaXNoX2RheS4nICcuJGV2ZW50X2Zpbmlz aF9ob3VyLic6Jy4kZXZlbnRfZmluaXNoX21pbnV0ZS4iOjAwIiktdHpfb2Zmc2V0KCk7CgkJ JGZEYXRlVGltZSA9ICJmcm9tX3VuaXh0aW1lKCRmRGF0ZVRpbWUpIjsKCQkkZkRhdGVUaW1l ID0gImZpbmlzaF9EYXRlVGltZT0kZkRhdGVUaW1lIjsKCgkJc2FmZV9pbnNlcnQoInR4cF9q bWNfZXZlbnQiLAoJCSIkc0RhdGVUaW1lLAoJCSRmRGF0ZVRpbWUsCgkJQ2F0ZWdvcnlJRCA9 ICRDYXRlZ29yeUlELAoJCW5hbWUgPSAnIi5hZGRzbGFzaGVzKCRuYW1lKS4iJywKCQlBdXRo b3JJRCA9ICciLmFkZHNsYXNoZXMoJHR4cF91c2VyKS4iJywKCQlWZW51ZUlEID0gJFZlbnVl SUQsCgkJUHJpY2UgPSAnIi5hZGRzbGFzaGVzKCRQcmljZSkuIicsCgkJT3RoZXJCYW5kcyA9 ICciLmFkZHNsYXNoZXMoJE90aGVyQmFuZHMpLiInLAoJCU90aGVyQmFuZHNfaHRtbCA9ICck T3RoZXJCYW5kc19odG1sJywKCQlPdGhlckluZm8gPSAnIi5hZGRzbGFzaGVzKCRPdGhlcklu Zm8pLiInLAoJCU90aGVySW5mb19odG1sID0gJyRPdGhlckluZm9faHRtbCciKTsKCgkJcmV0 dXJuIHRydWU7Cgl9CgoJZnVuY3Rpb24gam1jX2V2ZW50X21hbmFnZXJfdmVudWVzKCkKCXsK CQlleHRyYWN0KGdldF9wcmVmcygpKTsKCQkkbHZhcnMgPSBhcnJheSgicGFnZSIsInNvcnQi LCJkaXIiLCJjcml0IiwnbWV0aG9kJyk7CgkJZXh0cmFjdChncHNhKCRsdmFycykpOwoJCWds b2JhbCAkc3RlcDsKCgkJaWYgKCEkc29ydCkgJHNvcnQgPSAibmFtZSI7CgkJaWYgKCEkZGly KSAkZGlyID0gImFzYyI7CgkJaWYgKCRkaXIgPT0gImFzYyIpIHsgJGxpbmtkaXIgPSAiZGVz YyI7IH0gZWxzZSB7ICRsaW5rZGlyID0gImFzYyI7IH0KCgkJJHRvdGFsID0gZ2V0Q291bnQo J3R4cF9qbWNfZXZlbnRfdmVudWUnLCIxIik7CgkJJGxpbWl0ID0gKCRhcnRpY2xlX2xpc3Rf cGFnZWJ5KSA/ICRhcnRpY2xlX2xpc3RfcGFnZWJ5IDogMjU7CgkJJG51bVBhZ2VzID0gY2Vp bCgkdG90YWwvJGxpbWl0KTsKCQkkcGFnZSA9ICghJHBhZ2UpID8gMSA6ICRwYWdlOwoKCQkk b2Zmc2V0ID0gKCRwYWdlIC0gMSkgKiAkbGltaXQ7CgoJCWVjaG8gam1jX25hdl9mb3JtKCdq bWNfZXZlbnRfbWFuYWdlcicsICd2ZW51ZV9tYW5hZ2VyJywgJHBhZ2UsICRudW1QYWdlcywg JHNvcnQsICRkaXIpOwoKCQkkcnMgPSBzYWZlX3Jvd3Nfc3RhcnQoCgkJCSIqIiwKCQkJInR4 cF9qbWNfZXZlbnRfdmVudWUiLAoJCQkiSUQgb3JkZXIgYnkgJHNvcnQgJGRpciBsaW1pdCAk b2Zmc2V0LCRsaW1pdCIKCQkpOwoKCQlpZiAoJHJzKSB7CgkJCWVjaG8gJzxmb3JtIGFjdGlv bj0iaW5kZXgucGhwIiBtZXRob2Q9InBvc3QiIG5hbWU9Imxvbmdmb3JtIiBvbnN1Ym1pdD0i cmV0dXJuIHZlcmlmeShcJycuZ1R4dCgnYXJlX3lvdV9zdXJlJykuJ1wnKSI+JywKCQkJc3Rh cnRUYWJsZSgnbGlzdCcpLAoJCQknPHRyPicsCgkJCQlqbWNfZXZlbnRfY29sdW1uX2hlYWQo J0NhdGVnb3J5JywgJ0NhdGVnb3J5SUQnLCAnam1jX2V2ZW50X21hbmFnZXInLCAwLCAkbGlu a2RpciwgJ3ZlbnVlX21hbmFnZXInKSwKLy8JCQkJam1jX2V2ZW50X2NvbHVtbl9oZWFkKCdJ bWFnZScsICdpbWFnZVRodW1iJywgJ2ptY19ldmVudF9tYW5hZ2VyJywgMCwgJGxpbmtkaXIs ICd2ZW51ZV9tYW5hZ2VyJyksCgkJCQlqbWNfZXZlbnRfY29sdW1uX2hlYWQoJ1ZlbnVlJywg J25hbWUnLCAnam1jX2V2ZW50X21hbmFnZXInLCAxLCAkbGlua2RpciwgJ3ZlbnVlX21hbmFn ZXInKSwKCQkJCWptY19ldmVudF9jb2x1bW5faGVhZCgnU3RhdGUnLCAnc3RhdGUnLCAnam1j X2V2ZW50X21hbmFnZXInLCAxLCAkbGlua2RpciwgJ3ZlbnVlX21hbmFnZXInKSwKCQkJCWpt Y19ldmVudF9jb2x1bW5faGVhZCgnUGhvbmUnLCAncGhvbmUnLCAnam1jX2V2ZW50X21hbmFn ZXInLCAxLCAkbGlua2RpciwgJ3ZlbnVlX21hbmFnZXInKSwKCQkJCWptY19ldmVudF9jb2x1 bW5faGVhZCgnZW1haWwnLCAnZW1haWwnLCAnam1jX2V2ZW50X21hbmFnZXInLCAxLCAkbGlu a2RpciwgJ3ZlbnVlX21hbmFnZXInKSwKCQkJCWptY19ldmVudF9jb2x1bW5faGVhZCgnV2Vi IFBhZ2UnLCAndXJsJywgJ2ptY19ldmVudF9tYW5hZ2VyJywgMSwgJGxpbmtkaXIsICd2ZW51 ZV9tYW5hZ2VyJyksCgkJCQl0ZCgpLAoJCQknPC90cj4nOwoJCQl3aGlsZSAoJGEgPSBuZXh0 Um93KCRycykpIHsKCQkJCWV4dHJhY3QoJGEpOwoKCQkJCWlmKCRDYXRlZ29yeSA9IHNhZmVf cm93KCJuYW1lIiwidHhwX2ptY19ldmVudF9jYXRlZ29yeSIsICJJRCA9ICRDYXRlZ29yeUlE IikpCgkJCQkJJENhdGVnb3J5ID0gJENhdGVnb3J5WyduYW1lJ107CgkJCQllbHNlCgkJCQkJ JENhdGVnb3kgPSAiIjsKCgkJCQkkaW1hZ2UgPSBpbWFnZXRhZygkaW1hZ2VJRCk7CgoJCQkJ JGltYWdlbGluayA9IGVMaW5rKCdqbWNfZXZlbnRfbWFuYWdlcicsJ3ZlbnVlX2VkaXQnLCdJ RCcsJElELCRpbWFnZSk7OwoJCQkJJG5hbWVsaW5rID0gZUxpbmsoJ2ptY19ldmVudF9tYW5h Z2VyJywndmVudWVfZWRpdCcsJ0lEJywkSUQsJG5hbWUpOwoJCQkJJG1vZGJveCA9IGZJbnB1 dCgnY2hlY2tib3gnLCdzZWxlY3RlZFtdJywkSUQsJycsJycsJycsJycsJycsJElEKTsKCgkJ CQllY2hvICI8dHI+Ii5uLAoJCQkJCXRkKCRDYXRlZ29yeSksCgkJCQkJdGQoJGltYWdlbGlu ayksCgkJCQkJdGQoJG5hbWVsaW5rKSwKCQkJCQl0ZCgkc3RhdGUpLAoJCQkJCXRkKCRwaG9u ZSksCgkJCQkJdGQoKCRlbWFpbD8iPGEgaHJlZj1cIm1haWx0bzokZW1haWxcIj5lbWFpbCBs aW5rPC9hPiI6IiIpKSwKCQkJCQl0ZCgoJHVybD8iPGEgaHJlZj1cIiR1cmxcIiB0YXJnZXQ9 XCJfYmxhbmtcIj5leHRlcm5hbCBsaW5rPC9hPiI6IiIpKSwKCQkJCQl0ZCgkbW9kYm94KSwK CQkJCSc8L3RyPicubjsKCQkJfQoJCQllY2hvIHRyKHRkYShzZWxlY3RfYnV0dG9ucygpLmpt Y19ldmVudF9tYW5hZ2VyX211bHRpZWRpdF9mb3JtKCdqbWNfZXZlbnRfbWFuYWdlcicsICd2 ZW51ZV9tdWx0aV9lZGl0JyksJyBjb2xzcGFuPSI3IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdo dDtib3JkZXI6MHB4IicpKTsKCQkJZWNobyAiPC90YWJsZT48L2Zvcm0+IjsKCQkJZWNobyBw YWdlYnlfZm9ybSgnbGlzdCcsJGFydGljbGVfbGlzdF9wYWdlYnkpOwoJCQl1bnNldCgkc29y dCk7CgkJfQoJCWVsc2UKCQkJZWNobyAnTm8gZW50cmllcyBhdmFpbGFibGUuJzsKCX0KCglm dW5jdGlvbiBqbWNfZXZlbnRfbWFuYWdlcl92ZW51ZV9mb3JtKCRzdGVwLCAkZXhpc3Rpbmdf aW5mbyA9IGZhbHNlKQoJewoJCWdsb2JhbCAkdmFyc192ZW51ZXM7CgkJJGlkID0gKGdwcygn SUQnKT9ncHMoJ0lEJyk6JycpOwoJCWlmKCRpZCAmJiAoJHN0ZXA9PSd2ZW51ZV9lZGl0JyB8 fCAkc3RlcD09J3ZlbnVlX3NhdmUnIHx8ICRzdGVwPT0ndmVudWVfcG9zdCcpKSB7CgkJCSRy b3cgPSAoc2FmZV9yb3coIioiLCAidHhwX2ptY19ldmVudF92ZW51ZSIsICJJRCA9ICckaWQn IikpOwoJCQlmb3JlYWNoKCRyb3cgYXMgJG49PiR2KQoJCQkJJCRuID0gc3RyaXBzbGFzaGVz KCR2KTsKCQl9CgoJCWlmICghJGV4aXN0aW5nX2luZm8pewoJCQlmb3JlYWNoKCR2YXJzX3Zl bnVlcyBhcyAkdmFyKSB7CgkJCQkkJHZhciA9ICcnOwoJCQl9CgkJCSRzRGF0ZVRpbWUgPSB0 aW1lKCk7CgkJfQoKCQkkb3RoZXJfaW5mbyA9ICc8dGV4dGFyZWEgbmFtZT0iT3RoZXJJbmZv IiBjb2xzPSI0MCIgcm93cz0iNyIgdGFiaW5kZXg9IjQiPicuJE90aGVySW5mby4nPC90ZXh0 YXJlYT4nOwoKCQllY2hvICc8Zm9ybSBhY3Rpb249ImluZGV4LnBocCIgbWV0aG9kPSJwb3N0 Ij4nOwoJCWVjaG8gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImV2ZW50IiB2YWx1ZT0i am1jX2V2ZW50X21hbmFnZXIiIC8+JzsKCQllY2hvICc8aW5wdXQgdHlwZT0iaGlkZGVuIiBu YW1lPSJzdGVwIiB2YWx1ZT0iJy4oJGV4aXN0aW5nX2luZm8/J3ZlbnVlX3NhdmUnOid2ZW51 ZV9wb3N0JykuJyIgLz4nOwoJCWVjaG8gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IklE IiB2YWx1ZT0iJy4oJElEPyRJRDonJykuJyIgLz4nOwoKCQllY2hvIHN0YXJ0VGFibGUoJ2Vk aXQnKTsKCQllY2hvICI8dHI+PHRkPkNhdGVnb3J5PC90ZD48dGQ+Ii5jYXRlZ29yeWRyb3Bk b3duKCRDYXRlZ29yeUlELCAnNCcpLiI8L3RkPjx0ZD48L3RkPjwvdHI+IjsKCQllY2hvICI8 dHI+PHRkPk5hbWU8L3RkPjx0ZD4iLmZJbnB1dCgndGV4dCcsICduYW1lJywgJG5hbWUsICcn LCAnJywgJycsICc1MCUnLCAnNCcpLiI8L3RkPjwvdHI+IjsKCQllY2hvICI8dHI+PHRkPkFk ZHJlc3MgMTwvdGQ+PHRkPiIuZklucHV0KCd0ZXh0JywgJ2FkZHJlc3MxJywgJGFkZHJlc3Mx LCAnJywgJycsICcnLCAnNTAlJywgJzQnKS4iPC90ZD48L3RyPiI7CgkJZWNobyAiPHRyPjx0 ZD5BZGRyZXNzIDI8L3RkPjx0ZD4iLmZJbnB1dCgndGV4dCcsICdhZGRyZXNzMicsICRhZGRy ZXNzMiwgJycsICcnLCAnJywgJzUwJScsICc0JykuIjwvdGQ+PC90cj4iOwoJCWVjaG8gIjx0 cj48dGQ+U3VidXJiPC90ZD48dGQ+Ii5mSW5wdXQoJ3RleHQnLCAnc3VidXJiJywgJHN1YnVy YiwgJycsICcnLCAnJywgJzUwJScsICc0JykuIjwvdGQ+PC90cj4iOwoJCWVjaG8gIjx0cj48 dGQ+U3RhdGU8L3RkPjx0ZD4iLmZJbnB1dCgndGV4dCcsICdzdGF0ZScsICRzdGF0ZSwgJycs ICcnLCAnJywgJzUwJScsICc0JykuIjwvdGQ+PC90cj4iOwoJCWVjaG8gIjx0cj48dGQ+Q291 bnRyeTwvdGQ+PHRkPiIuZklucHV0KCd0ZXh0JywgJ2NvdW50cnknLCAkY291bnRyeSwgJycs ICcnLCAnJywgJzUwJScsICc0JykuIjwvdGQ+PC90cj4iOwoJCWVjaG8gIjx0cj48dGQ+UG9z dGNvZGU8L3RkPjx0ZD4iLmZJbnB1dCgndGV4dCcsICdwb3N0Y29kZScsICRwb3N0Y29kZSwg JycsICcnLCAnJywgJzUwJScsICc0JykuIjwvdGQ+PC90cj4iOwoJCWVjaG8gIjx0cj48dGQ+ UGhvbmU8L3RkPjx0ZD4iLmZJbnB1dCgndGV4dCcsICdwaG9uZScsICRwaG9uZSwgJycsICcn LCAnJywgJzUwJScsICc0JykuIjwvdGQ+PC90cj4iOwoJCWVjaG8gIjx0cj48dGQ+ZW1haWw8 L3RkPjx0ZD4iLmZJbnB1dCgndGV4dCcsICdlbWFpbCcsICRlbWFpbCwgJycsICcnLCAnJywg JzUwJScsICc0JykuIjwvdGQ+PC90cj4iOwoJCWVjaG8gIjx0cj48dGQ+dXJsPC90ZD48dGQ+ Ii5mSW5wdXQoJ3RleHQnLCAndXJsJywgJHVybCwgJycsICcnLCAnJywgJzUwJScsICc0Jyku IjwvdGQ+PC90cj4iOwoJCWVjaG8gIjx0cj48dGQ+T3RoZXIgSW5mbzwvdGQ+PHRkPiIuJG90 aGVyX2luZm8uIjwvdGQ+PC90cj4iOwoJCWVjaG8gIjx0cj48dGQgY29sc3Bhbj1cIjJcIiBz dHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtcIj4iLmZJbnB1dCgnc3VibWl0JywgJycsICgk SUQ/J1NhdmUgVmVudWUnOidBZGQgVmVudWUnKSwgJycsICcnLCAnJywgJzUwJScsICc0Jyku IjwvdGQ+PC90cj4iOwoKICAgIAllY2hvICc8L3RhYmxlPjwvZm9ybT4nOwoJfQoKCWZ1bmN0 aW9uIGptY19ldmVudF9tYW5hZ2VyX3ZlbnVlX3NhdmUoKQoJewoJCWdsb2JhbCAkdHhwX3Vz ZXIsJHZhcnMsJHR4cGNmZzsKCQlnbG9iYWwgJHZhcnNfdmVudWVzOwoKCQlpbmNsdWRlX29u Y2UgJHR4cGNmZ1sndHhwYXRoJ10uJy9saWIvY2xhc3NUZXh0aWxlLnBocCc7CgkJJHRleHRp bGUgPSBuZXcgVGV4dGlsZSgpOwoKCQlleHRyYWN0KGdwc2EoYXJyYXlfbWVyZ2UoJHZhcnNf dmVudWVzKSkpOwoKCQkkQ2F0ZWdvcnlJRCA9ICRDYXRlZ29yeUlEPyRDYXRlZ29yeUlEOjA7 CgkJJE90aGVySW5mb19odG1sID0gJHRleHRpbGUtPlRleHRpbGVUaGlzKCRPdGhlckluZm8p OwoKCQlzYWZlX3VwZGF0ZSgidHhwX2ptY19ldmVudF92ZW51ZSIsCgkJIm5hbWUgPSAnIi5h ZGRzbGFzaGVzKCRuYW1lKS4iJywKCQlDYXRlZ29yeUlEID0gJENhdGVnb3J5SUQsCgkJYWRk cmVzczEgPSAnIi5hZGRzbGFzaGVzKCRhZGRyZXNzMSkuIicsCgkJYWRkcmVzczIgPSAnIi5h ZGRzbGFzaGVzKCRhZGRyZXNzMikuIicsCgkJc3VidXJiID0gJyIuYWRkc2xhc2hlcygkc3Vi dXJiKS4iJywKCQlzdGF0ZSA9ICciLmFkZHNsYXNoZXMoJHN0YXRlKS4iJywKCQljb3VudHJ5 ID0gJyIuYWRkc2xhc2hlcygkY291bnRyeSkuIicsCgkJcG9zdGNvZGUgPSAnIi5hZGRzbGFz aGVzKCRwb3N0Y29kZSkuIicsCgkJcGhvbmUgPSAnIi5hZGRzbGFzaGVzKCRwaG9uZSkuIics CgkJZW1haWwgPSAnIi5hZGRzbGFzaGVzKCRlbWFpbCkuIicsCgkJdXJsID0gJyIuYWRkc2xh c2hlcygkdXJsKS4iJywKCQlPdGhlckluZm8gPSAnIi5hZGRzbGFzaGVzKCRPdGhlckluZm8p LiInLAoJCU90aGVySW5mb19odG1sID0gJyRPdGhlckluZm9faHRtbCciLAoJCSJJRCA9ICck SUQnIik7CgoJCXJldHVybiB0cnVlOwoJfQoKCWZ1bmN0aW9uIGptY19ldmVudF9tYW5hZ2Vy X3ZlbnVlX3Bvc3QoKQoJewoJCWdsb2JhbCAkdHhwX3VzZXIsJHZhcnMsJHR4cGNmZzsKCQln bG9iYWwgJHZhcnNfdmVudWVzOwoKCQlpbmNsdWRlX29uY2UgJHR4cGNmZ1sndHhwYXRoJ10u Jy9saWIvY2xhc3NUZXh0aWxlLnBocCc7CgkJJHRleHRpbGUgPSBuZXcgVGV4dGlsZSgpOwoK CQlleHRyYWN0KGdwc2EoYXJyYXlfbWVyZ2UoJHZhcnNfdmVudWVzKSkpOwoKCQkkQ2F0ZWdv cnlJRCA9ICRDYXRlZ29yeUlEPyRDYXRlZ29yeUlEOjA7CgkJJE90aGVySW5mb19odG1sID0g JHRleHRpbGUtPlRleHRpbGVUaGlzKCRPdGhlckluZm8pOwoKCQlzYWZlX2luc2VydCgidHhw X2ptY19ldmVudF92ZW51ZSIsCgkJIm5hbWUgPSAnIi5hZGRzbGFzaGVzKCRuYW1lKS4iJywK CQlDYXRlZ29yeUlEID0gJENhdGVnb3J5SUQsCgkJYWRkcmVzczEgPSAnIi5hZGRzbGFzaGVz KCRhZGRyZXNzMSkuIicsCgkJYWRkcmVzczIgPSAnIi5hZGRzbGFzaGVzKCRhZGRyZXNzMiku IicsCgkJc3VidXJiID0gJyIuYWRkc2xhc2hlcygkc3VidXJiKS4iJywKCQlzdGF0ZSA9ICci LmFkZHNsYXNoZXMoJHN0YXRlKS4iJywKCQljb3VudHJ5ID0gJyIuYWRkc2xhc2hlcygkY291 bnRyeSkuIicsCgkJcG9zdGNvZGUgPSAnIi5hZGRzbGFzaGVzKCRwb3N0Y29kZSkuIicsCgkJ cGhvbmUgPSAnIi5hZGRzbGFzaGVzKCRwaG9uZSkuIicsCgkJZW1haWwgPSAnIi5hZGRzbGFz aGVzKCRlbWFpbCkuIicsCgkJdXJsID0gJyIuYWRkc2xhc2hlcygkdXJsKS4iJywKCQlPdGhl ckluZm8gPSAnIi5hZGRzbGFzaGVzKCRPdGhlckluZm8pLiInLAoJCU90aGVySW5mb19odG1s ID0gJyRPdGhlckluZm9faHRtbCciKTsKCgkJcmV0dXJuIHRydWU7Cgl9CgoJZnVuY3Rpb24g am1jX2V2ZW50X21hbmFnZXJfY2F0ZWdvcmllcygpCgl7CgkJLy8gR2V0IHRoZSBnbG9iYWxz IGZyb20gdGV4dHBhdHRlcm4KCQlleHRyYWN0KGdldF9wcmVmcygpKTsKCQkkbHZhcnMgPSBh cnJheSgicGFnZSIsInNvcnQiLCJkaXIiLCJjcml0IiwnbWV0aG9kJyk7CgkJZXh0cmFjdChn cHNhKCRsdmFycykpOwoJCWdsb2JhbCAkc3RlcDsKCgkJLy8gU2V0IHRoZSBzb3J0IGJ5IGFu ZCBkaXJlY3Rpb24gdmFyaWFibGVzCgkJaWYgKCEkc29ydCkgJHNvcnQgPSAibmFtZSI7CgkJ aWYgKCEkZGlyKSAkZGlyID0gImFzYyI7CgkJaWYgKCRkaXIgPT0gImFzYyIpIHsgJGxpbmtk aXIgPSAiZGVzYyI7IH0gZWxzZSB7ICRsaW5rZGlyID0gImFzYyI7IH0KCgkJLy8gV29yayBv dXQgbnVtYmVyIG9mIHBhZ2VzCgkJJHRvdGFsID0gZ2V0Q291bnQoInR4cF9qbWNfZXZlbnRf Y2F0ZWdvcnkiLCIxIik7CgkJJGxpbWl0ID0gKCRhcnRpY2xlX2xpc3RfcGFnZWJ5KSA/ICRh cnRpY2xlX2xpc3RfcGFnZWJ5IDogMjU7CgkJJG51bVBhZ2VzID0gY2VpbCgkdG90YWwvJGxp bWl0KTsKCQkkcGFnZSA9ICghJHBhZ2UpID8gMSA6ICRwYWdlOwoKCQkvLyBEZWZpbmUgb2Zm c2V0IGZvciBjdXJyZW50IHBhZ2UKCQkkb2Zmc2V0ID0gKCRwYWdlIC0gMSkgKiAkbGltaXQ7 CgoJCS8vIENyZWF0ZSB0b3AgbGV2ZWwgcGFnZSBiYXNlZCBuYXYgZm9ybQoJCWVjaG8gam1j X25hdl9mb3JtKCdqbWNfZXZlbnRfbWFuYWdlcicsICdjYXRlZ29yeV9tYW5hZ2VyJywgJHBh Z2UsICRudW1QYWdlcywgJHNvcnQsICRkaXIpOwoKCQkkcnMgPSBzYWZlX3Jvd3Nfc3RhcnQo CgkJCSIqIiwKCQkJInR4cF9qbWNfZXZlbnRfY2F0ZWdvcnkiLAoJCQkiSUQgb3JkZXIgYnkg JHNvcnQgJGRpciBsaW1pdCAkb2Zmc2V0LCRsaW1pdCIKCQkpOwoKCQlpZiAoJHJzKSB7CgkJ CWVjaG8gJzxmb3JtIGFjdGlvbj0iaW5kZXgucGhwIiBtZXRob2Q9InBvc3QiIG5hbWU9Imxv bmdmb3JtIiBvbnN1Ym1pdD0icmV0dXJuIHZlcmlmeShcJycuZ1R4dCgnYXJlX3lvdV9zdXJl JykuJ1wnKSI+JywKCQkJc3RhcnRUYWJsZSgnbGlzdCcpLAoJCQknPHRyPicsCgkJCQlqbWNf ZXZlbnRfY29sdW1uX2hlYWQoJ0NhdGVnb3J5JywgJ25hbWUnLCAnam1jX2V2ZW50X21hbmFn ZXInLCAwLCAkbGlua2RpciwgJ2NhdGVnb3J5X21hbmFnZXInKSwKCQkJCXRkKCksCgkJCSc8 L3RyPic7CgkJCXdoaWxlICgkYSA9IG5leHRSb3coJHJzKSkgewoJCQkJZXh0cmFjdCgkYSk7 CgoJCQkJJG5hbWVsaW5rID0gZUxpbmsoJ2ptY19ldmVudF9tYW5hZ2VyJywnY2F0ZWdvcnlf ZWRpdCcsJ0lEJywkSUQsJG5hbWUpOwoJCQkJJG1vZGJveCA9IGZJbnB1dCgnY2hlY2tib3gn LCdzZWxlY3RlZFtdJywkSUQsJycsJycsJycsJycsJycsJElEKTsKCgkJCQllY2hvICI8dHI+ Ii5uLAoJCQkJCXRkKCRuYW1lbGluayksCgkJCQkJdGQoJG1vZGJveCksCgkJCQknPC90cj4n Lm47CgkJCX0KCQkJZWNobyB0cih0ZGEoc2VsZWN0X2J1dHRvbnMoKS5qbWNfZXZlbnRfbWFu YWdlcl9tdWx0aWVkaXRfZm9ybSgnam1jX2V2ZW50X21hbmFnZXInLCAnY2F0ZWdvcnlfbXVs dGlfZWRpdCcpLCcgY29sc3Bhbj0iNyIgc3R5bGU9InRleHQtYWxpZ246cmlnaHQ7Ym9yZGVy OjBweCInKSk7CgkJCWVjaG8gIjwvdGFibGU+PC9mb3JtPiI7CgkJCWVjaG8gcGFnZWJ5X2Zv cm0oJ2xpc3QnLCRhcnRpY2xlX2xpc3RfcGFnZWJ5KTsKCQkJdW5zZXQoJHNvcnQpOwoJCX0K CQllbHNlCgkJCWVjaG8gJ05vIGVudHJpZXMgYXZhaWxhYmxlLic7Cgl9CgoJZnVuY3Rpb24g am1jX2V2ZW50X21hbmFnZXJfY2F0ZWdvcnlfZm9ybSgkc3RlcCwgJGV4aXN0aW5nX2luZm8g PSBmYWxzZSkKCXsKCQkvLyBPYnRhaW4gZ2xvYmFsIHZhcmlhYmxlcwoJCWdsb2JhbCAkdmFy c19jYXRlZ29yaWVzOwoJCSRpZCA9IChncHMoJ0lEJyk/Z3BzKCdJRCcpOicnKTsKCQlpZigk aWQgJiYgKCRzdGVwPT0nY2F0ZWdvcnlfZWRpdCcgfHwgJHN0ZXA9PSdjYXRlZ29yeV9zYXZl JyB8fCAkc3RlcD09J2NhdGVnb3J5X3Bvc3QnKSkgewoJCQkkcm93ID0gKHNhZmVfcm93KCIq IiwgInR4cF9qbWNfZXZlbnRfY2F0ZWdvcnkiLCAiSUQgPSAnJGlkJyIpKTsKCQkJZm9yZWFj aCgkcm93IGFzICRuPT4kdikKCQkJCSQkbiA9IHN0cmlwc2xhc2hlcygkdik7CgkJfQoKCQlp ZiAoISRleGlzdGluZ19pbmZvKXsKCQkJZm9yZWFjaCgkdmFyc19jYXRlZ29yaWVzIGFzICR2 YXIpIHsKCQkJCSQkdmFyID0gJyc7CgkJCX0KCQl9CgoJCSRvdGhlcl9pbmZvID0gJzx0ZXh0 YXJlYSBuYW1lPSJPdGhlckluZm8iIGNvbHM9IjQwIiByb3dzPSI3IiB0YWJpbmRleD0iNCI+ Jy4kT3RoZXJJbmZvLic8L3RleHRhcmVhPic7CgoJCWVjaG8gJzxmb3JtIGFjdGlvbj0iaW5k ZXgucGhwIiBtZXRob2Q9InBvc3QiPic7CgkJZWNobyAnPGlucHV0IHR5cGU9ImhpZGRlbiIg bmFtZT0iZXZlbnQiIHZhbHVlPSJqbWNfZXZlbnRfbWFuYWdlciIgLz4nOwoJCWVjaG8gJzxp bnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InN0ZXAiIHZhbHVlPSInLigkZXhpc3RpbmdfaW5m bz8nY2F0ZWdvcnlfc2F2ZSc6J2NhdGVnb3J5X3Bvc3QnKS4nIiAvPic7CgkJZWNobyAnPGlu cHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iSUQiIHZhbHVlPSInLigkSUQ/JElEOicnKS4nIiAv Pic7CgoJCWVjaG8gc3RhcnRUYWJsZSgnZWRpdCcpOwoJCWVjaG8gIjx0cj48dGQ+TmFtZTwv dGQ+PHRkPiIuZklucHV0KCd0ZXh0JywgJ25hbWUnLCAkbmFtZSwgJycsICcnLCAnJywgJzUw JScsICc0JykuIjwvdGQ+PC90cj4iOwoJCWVjaG8gIjx0cj48dGQ+T3RoZXIgSW5mbzwvdGQ+ PHRkPiIuJG90aGVyX2luZm8uIjwvdGQ+PC90cj4iOwoJCWVjaG8gIjx0cj48dGQgY29sc3Bh bj1cIjJcIiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtcIj4iLmZJbnB1dCgnc3VibWl0 JywgJycsICgkSUQ/J1NhdmUgQ2F0ZWdvcnknOidBZGQgQ2F0ZWdvcnknKSwgJycsICcnLCAn JywgJzUwJScsICc0JykuIjwvdGQ+PC90cj4iOwoKICAgIAllY2hvICc8L3RhYmxlPjwvZm9y bT4nOwoJfQoKCWZ1bmN0aW9uIGptY19ldmVudF9tYW5hZ2VyX2NhdGVnb3J5X3NhdmUoKQoJ ewoJCWdsb2JhbCAkdHhwX3VzZXIsJHZhcnMsJHR4cGNmZzsKCQlnbG9iYWwgJHZhcnNfY2F0 ZWdvcmllczsKCgkJaW5jbHVkZV9vbmNlICR0eHBjZmdbJ3R4cGF0aCddLicvbGliL2NsYXNz VGV4dGlsZS5waHAnOwoJCSR0ZXh0aWxlID0gbmV3IFRleHRpbGUoKTsKCgkJZXh0cmFjdChn cHNhKGFycmF5X21lcmdlKCR2YXJzX2NhdGVnb3JpZXMpKSk7CgoJCSRPdGhlckluZm9faHRt bCA9ICR0ZXh0aWxlLT5UZXh0aWxlVGhpcygkT3RoZXJJbmZvKTsKCgkJc2FmZV91cGRhdGUo InR4cF9qbWNfZXZlbnRfY2F0ZWdvcnkiLAoJCSJuYW1lID0gJyIuYWRkc2xhc2hlcygkbmFt ZSkuIicsCgkJT3RoZXJJbmZvID0gJyIuYWRkc2xhc2hlcygkT3RoZXJJbmZvKS4iJywKCQlP dGhlckluZm9faHRtbCA9ICckT3RoZXJJbmZvX2h0bWwnIiwKCQkiSUQgPSAnJElEJyIpOwoK CQlyZXR1cm4gdHJ1ZTsKCX0KCglmdW5jdGlvbiBqbWNfZXZlbnRfbWFuYWdlcl9jYXRlZ29y eV9wb3N0KCkKCXsKCQlnbG9iYWwgJHR4cF91c2VyLCR2YXJzLCR0eHBjZmc7CgkJZ2xvYmFs ICR2YXJzX2NhdGVnb3JpZXM7CgoJCWluY2x1ZGVfb25jZSAkdHhwY2ZnWyd0eHBhdGgnXS4n L2xpYi9jbGFzc1RleHRpbGUucGhwJzsKCQkkdGV4dGlsZSA9IG5ldyBUZXh0aWxlKCk7CgoJ CWV4dHJhY3QoZ3BzYShhcnJheV9tZXJnZSgkdmFyc19jYXRlZ29yaWVzKSkpOwoKCQkkT3Ro ZXJJbmZvX2h0bWwgPSAkdGV4dGlsZS0+VGV4dGlsZVRoaXMoJE90aGVySW5mbyk7CgoJCXNh ZmVfaW5zZXJ0KCJ0eHBfam1jX2V2ZW50X2NhdGVnb3J5IiwKCQkibmFtZSA9ICciLmFkZHNs YXNoZXMoJG5hbWUpLiInLAoJCU90aGVySW5mbyA9ICciLmFkZHNsYXNoZXMoJE90aGVySW5m bykuIicsCgkJT3RoZXJJbmZvX2h0bWwgPSAnJE90aGVySW5mb19odG1sJyIpOwoKCQlyZXR1 cm4gdHJ1ZTsKCX0KCglmdW5jdGlvbiBqbWNfZXZlbnRfbWFuYWdlcl9wcmVmcygkZXZlbnQs ICRzdGVwKSB7CgkJZ2xvYmFsICRqbWNfZXZlbnRfbWFuYWdlcl9wcmVmczsKCQkkam1jX2V2 ZW50X21hbmFnZXJfcHJlZnMgPSBhcnJheSgpOwoKCQkvLyBXaGF0IGRvIGkgbmVlZCBmb3Ig cHJlZmVyZW5jZXM/CgoJCS8vIHBzKCkgcmV0dXJucyB0aGUgY29udGVudHMgb2YgUE9TVCB2 YXJzLCBpZiBhbnkKCQlwYWdldG9wKCJFdmVudCBNYW5hZ2VyIFByZWZlcmVuY2VzIiwgIlBy ZWZlcmVuY2VzIik7CgoJCS8vIEluc3RhbGwgdGhlIGV2ZW50IG1hbmFnZXIKCQllY2hvIGpt Y19ldmVudF9tYW5hZ2VyX2luc3RhbGwoKTsKCgkJZWNobyB0YWcoImptY19ldmVudF9tYW5h Z2VyIFByZWZlcmVuY2VzIiwgImgzIik7CgoJCS8vIFRoZSBlSW5wdXQvc0lucHV0IHBhcnQg b2YgdGhlIGZvcm0gaXMgaW1wb3J0YW50LCBzZXR0aW5nIHRoZSBldmVudCBhbmQgc3RlcCBy ZXNwZWN0aXZlbHkKCX0KCglmdW5jdGlvbiBqbWNfbmF2X2Zvcm0oJGV2ZW50LCAkc3RlcCwg JHBhZ2UsICRudW1QYWdlcywgJHNvcnQsICRkaXIpCgl7CgkJJG5hdltdID0gKCRwYWdlID4g MSkKCQkJPwlqbWNfUHJldk5leHRMaW5rKCRldmVudCwgJHN0ZXAsICRwYWdlLTEsZ1R4dCgn cHJldicpLCdwcmV2Jywkc29ydCwgJGRpcikKCQkJOgknJzsKCgkJJG5hdltdID0gc3Auc21h bGwoJHBhZ2UuICcvJy4kbnVtUGFnZXMpLnNwOwoKCQkkbmF2W10gPSAoJHBhZ2UgIT0gJG51 bVBhZ2VzKQoJCQk/CWptY19QcmV2TmV4dExpbmsoJGV2ZW50LCAkc3RlcCwgJHBhZ2UrMSxn VHh0KCduZXh0JyksJ25leHQnLCRzb3J0LCAkZGlyKQoJCQk6CScnOwoKCQlpZiAoJG5hdikg cmV0dXJuIGdyYWYoam9pbignJywkbmF2KSwnIGFsaWduPSJjZW50ZXIiJyk7Cgl9CgoJZnVu Y3Rpb24gam1jX1ByZXZOZXh0TGluaygkZXZlbnQsJHN0ZXAsJHRvcGFnZSwkbGFiZWwsJHR5 cGUsJHNvcnQ9JycsJGRpcj0nJykKCXsKCQlyZXR1cm4gam9pbignJyxhcnJheSgKCQkJJzxh IGhyZWY9Ij9ldmVudD0nLiRldmVudC5hLidzdGVwPScuJHN0ZXAuYS4ncGFnZT0nLiR0b3Bh Z2UsCgkJCSgkc29ydCkgPyBhLidzb3J0PScuJHNvcnQgOiAnJywKCQkJKCRkaXIpID8gYS4n ZGlyPScuJGRpciA6ICcnLAoJCQknIiBjbGFzcz0ibmF2bGluayI+JywKCQkJKCR0eXBlPT0i cHJldiIpID8gJyYjODI0OTsnLnNwLiRsYWJlbCA6ICRsYWJlbC5zcC4nJiM4MjUwOycsCgkJ CSc8L2E+JwoJCSkpOwoJfQoKCWZ1bmN0aW9uIGptY19ldmVudF9tYW5hZ2VyX2luc3RhbGwo KQoJewoJCS8vIFNRTCBEQiBJbmZvcm1hdGlvbgoJCWdsb2JhbCAkREIsJHR4cGNmZywgJHFj b3VudCwgJHByb2R1Y3Rpb25fc3RhdHVzOwoKCQkvLyBDaGVjayB0byBzZWUgaWYgdGhlIGV2 ZW50IGxpc3RpbmcgdGFibGUgcmVxdWlyZXMgaW5zdGFsbGF0aW9uCgkJaWYoIXNhZmVfY291 bnQoInR4cF9qbWNfZXZlbnQiLCAnSUQnKSkKCQkJJGluc3RhbGxbJ2V2ZW50J10gPSB0cnVl OwoJCWVsc2UKCQkJJGluc3RhbGxbJ2V2ZW50J10gPSBmYWxzZTsKCgkJLy8gQ2hlY2sgdG8g c2VlIGlmIHRoZSB2ZW51ZSBsaXN0aW5nIHRhYmxlIHJlcXVpcmVzIGluc3RhbGxhdGlvbgoJ CWlmKCFzYWZlX2NvdW50KCJ0eHBfam1jX2V2ZW50X3ZlbnVlIiwgJ0lEJykpCgkJCSRpbnN0 YWxsWyd2ZW51ZSddID0gdHJ1ZTsKCQllbHNlCgkJCSRpbnN0YWxsWyd2ZW51ZSddID0gZmFs c2U7CgoJCS8vIENoZWNrIHRvIHNlZSBpZiB0aGUgY2F0ZWdvcnkgdGFibGUgcmVxdWlyZXMg aW5zdGFsbGF0aW9uCgkJaWYoIXNhZmVfY291bnQoInR4cF9qbWNfZXZlbnRfY2F0ZWdvcnki LCAnSUQnKSkKCQkJJGluc3RhbGxbJ2NhdGVnb3J5J10gPSB0cnVlOwoJCWVsc2UKCQkJJGlu c3RhbGxbJ2NhdGVnb3J5J10gPSBmYWxzZTsKCgkJLy8gSWYgdGFibGVzIGV4aXN0IChjaGVj ayBpcyB2aWEgZW50cnkgYW5kIG5lZWRzIHRvIGJlIHVwZGF0ZWQgdG8gcHJvcGVybHkgcmVm bGVjdCB0aGUgZmFjdCB0aGF0IHRoZXJlIG1heSBiZSBhbiBlbXB0eSB0YWJsZSkKCQlpZigh JGluc3RhbGxbJ2V2ZW50J10gJiYgISRpbnN0YWxsWyd2ZW51ZSddICYmICEkaW5zdGFsbFsn Y2F0ZWdvcnknXSkKCQkJcmV0dXJuOwoKCQkvLyAoYykgQ2hyaXMgRGVhbiBUZXh0cGF0dGVy biBkYXRhYmFzZSBjaGVja2VyCgkJLy8gU1RBUlQKCQkkdmVyc2lvbiA9IG15c3FsX2dldF9z ZXJ2ZXJfaW5mbygpOwoJCS8vVXNlICJFTkdJTkUiIGlmIHZlcnNpb24gb2YgTXlTUUwgPiAo NC4wLjE4IG9yIDQuMS4yKQoJCSR0YWJsZXR5cGUgPSAoIGludHZhbCgkdmVyc2lvblswXSkg Pj0gNSB8fCBwcmVnX21hdGNoKCcjXjRcLigwXC5bMi05XXwoMVs4OV0pKXwoMVwuWzItOV0p IycsJHZlcnNpb24pKQoJCQkJCQk/ICIgRU5HSU5FPU15SVNBTSAiCgkJCQkJCTogIiBUWVBF PU15SVNBTSAiOwoKCQkvLyBPbiA0LjEgb3IgZ3JlYXRlciB1c2UgdXRmOC10YWJsZXMKCQlp ZiAoIGlzc2V0KCRkYmNoYXJzZXQpICYmIChpbnR2YWwoJHZlcnNpb25bMF0pID49IDUgfHwg cHJlZ19tYXRjaCgnI140XC5bMS05XSMnLCR2ZXJzaW9uKSkpCgkJewoJCQkkdGFibGV0eXBl IC49ICIgQ0hBUkFDVEVSIFNFVCA9ICRkYmNoYXJzZXQgIjsKCQkJaWYgKGlzc2V0KCRkYmNv bGxhdGUpKQoJCQkJJHRhYmxldHlwZSAuPSAiIENPTExBVEUgJGRiY29sbGF0ZSAiOwoJCQlt eXNxbF9xdWVyeSgiU0VUIE5BTUVTICIuJGRiY2hhcnNldCk7CgkJfQoKCQkvLyBEZWZhdWx0 IHRvIG1lc3N5IFVSTHMgaWYgd2Uga25vdyB0aGV5IHdvbid0IHdvcmsKCQkkcGVybWxpbmtf bW9kZSA9ICdzZWN0aW9uX2lkX3RpdGxlJzsKCQlpZiAoaXNfY2FsbGFibGUoJ2FwYWNoZV9n ZXRfbW9kdWxlcycpKSB7CgkJCSRtb2R1bGVzID0gYXBhY2hlX2dldF9tb2R1bGVzKCk7CgkJ CWlmICghaW5fYXJyYXkoJ21vZF9yZXdyaXRlJywgJG1vZHVsZXMpKQoJCQkJJHBlcm1saW5r X21vZGUgPSAnbWVzc3knOwoJCX0KCQllbHNlIHsKCQkJJHNlcnZlcl9zb2Z0d2FyZSA9IChA JF9TRVJWRVJbJ1NFUlZFUl9TT0ZUV0FSRSddIHx8IEAkX1NFUlZFUlsnSFRUUF9IT1NUJ10p CgkJCQk/ICggKEAkX1NFUlZFUlsnU0VSVkVSX1NPRlRXQVJFJ10pID8gIEAkX1NFUlZFUlsn U0VSVkVSX1NPRlRXQVJFJ10gOiAgJF9TRVJWRVJbJ0hUVFBfSE9TVCddICkKCQkJCTogJyc7 CgkJICAgaWYgKCFzdHJpc3RyKCRzZXJ2ZXJfc29mdHdhcmUsICdBcGFjaGUnKSkKCQkJCSRw ZXJtbGlua19tb2RlID0gJ21lc3N5JzsKCQl9CgoJCS8vIEVORAoKCQkvLyBDcmVhdGUgdGhl IFNRTCBDb21tYW5kIGFycmF5CgkJJGNyZWF0ZV9zcWwgPSBhcnJheSgpOwoKCQkvLyBJZiB0 aGUgZXZlbnQgdGFibGUgbmVlZHMgaW5zdGFsbGluZywgYWRkIFNRTCBjb21tYW5kcyB0byAk Y3JlYXRlX3NxbAoJCWlmKCRpbnN0YWxsWydldmVudCddKQoJCXsKCQkJJGNyZWF0ZV9zcWxb XSA9IkNSRUFURSBUQUJMRSBgIi5QRlguInR4cF9qbWNfZXZlbnRgICgKICBgSURgIGludCgx MSkgTk9UIE5VTEwgYXV0b19pbmNyZW1lbnQsCiAgYENhdGVnb3J5SURgIHZhcmNoYXIoNjQp IE5PVCBOVUxMIGRlZmF1bHQgJycsCiAgYG5hbWVgIHZhcmNoYXIoMjU1KSBOVUxMIGRlZmF1 bHQgJycsCiAgYHN0YXJ0X0RhdGVUaW1lYCBkYXRldGltZSBOT1QgTlVMTCBkZWZhdWx0ICcw MDAwLTAwLTAwIDAwOjAwOjAwJywKICBgZmluaXNoX0RhdGVUaW1lYCBkYXRldGltZSBOT1Qg TlVMTCBkZWZhdWx0ICcwMDAwLTAwLTAwIDAwOjAwOjAwJywKICBgQXV0aG9ySURgIHZhcmNo YXIoNjQpIE5PVCBOVUxMIGRlZmF1bHQgJycsCiAgYExhc3RNb2RgIGRhdGV0aW1lIE5PVCBO VUxMIGRlZmF1bHQgJzAwMDAtMDAtMDAgMDA6MDA6MDAnLAogIGBMYXN0TW9kSURgIHZhcmNo YXIoNjQpIE5PVCBOVUxMIGRlZmF1bHQgJycsCiAgYFZlbnVlSURgIHZhcmNoYXIoNjQpIE5P VCBOVUxMIGRlZmF1bHQgJycsCiAgYFByaWNlYCB2YXJjaGFyKDI1NSkgTk9UIE5VTEwgZGVm YXVsdCAnJywKICBgT3RoZXJCYW5kc2AgbWVkaXVtdGV4dCBOT1QgTlVMTCwKICBgT3RoZXJC YW5kc19odG1sYCBtZWRpdW10ZXh0IE5PVCBOVUxMLAogIGBPdGhlckluZm9gIHRleHQgTk9U IE5VTEwsCiAgYE90aGVySW5mb19odG1sYCBtZWRpdW10ZXh0IE5PVCBOVUxMLAogIGBjb21t ZW50c19jb3VudGAgaW50KDgpIE5PVCBOVUxMIGRlZmF1bHQgJzAnLAogIFBSSU1BUlkgS0VZ ICAoYElEYCksCiAgS0VZIGBzdGFydF9EYXRlVGltZWAgKGBzdGFydF9EYXRlVGltZWApLAog IEtFWSBgZmluaXNoX0RhdGVUaW1lYCAoYGZpbmlzaF9EYXRlVGltZWApLAogIEZVTExURVhU IEtFWSBgc2VhcmNoaW5nYCAoYE90aGVyQmFuZHNgLGBPdGhlckluZm9gKQopICR0YWJsZXR5 cGUgUEFDS19LRVlTPTEgQVVUT19JTkNSRU1FTlQ9MiAiOwoJCX0KCgkJLy8gSWYgdGhlIHZl bnVlIHRhYmxlIG5lZWRzIGluc3RhbGxpbmcsIGFkZCBTUUwgY29tbWFuZHMgdG8gJGNyZWF0 ZV9zcWwKCQlpZigkaW5zdGFsbFsndmVudWUnXSkKCQl7CgkJCSRjcmVhdGVfc3FsW10gPSJD UkVBVEUgVEFCTEUgYCIuUEZYLiJ0eHBfam1jX2V2ZW50X3ZlbnVlYCAoCiAgYElEYCBpbnQo MTEpIE5PVCBOVUxMIGF1dG9faW5jcmVtZW50LAogIGBDYXRlZ29yeUlEYCB2YXJjaGFyKDY0 KSBOT1QgTlVMTCBkZWZhdWx0ICcnLAogIGBuYW1lYCB2YXJjaGFyKDI1NSkgTk9UIE5VTEwg ZGVmYXVsdCAnJywKICBgaW1hZ2VJRGAgdmFyY2hhcig2NCkgTlVMTCBkZWZhdWx0ICcnLAog IGBhZGRyZXNzMWAgdmFyY2hhcigyNTUpIE5PVCBOVUxMIGRlZmF1bHQgJycsCiAgYGFkZHJl c3MyYCB2YXJjaGFyKDI1NSkgTk9UIE5VTEwgZGVmYXVsdCAnJywKICBgc3VidXJiYCB2YXJj aGFyKDI1NSkgTk9UIE5VTEwgZGVmYXVsdCAnJywKICBgc3RhdGVgIHZhcmNoYXIoMjU1KSBO T1QgTlVMTCBkZWZhdWx0ICcnLAogIGBjb3VudHJ5YCB2YXJjaGFyKDI1NSkgTk9UIE5VTEwg ZGVmYXVsdCAnJywKICBgcG9zdGNvZGVgIHZhcmNoYXIoMTApIE5PVCBOVUxMIGRlZmF1bHQg JycsCiAgYHBob25lYCB2YXJjaGFyKDI1NSkgTk9UIE5VTEwgZGVmYXVsdCAnJywKICBgdXJs YCB2YXJjaGFyKDI1NSkgTk9UIE5VTEwgZGVmYXVsdCAnJywKICBgZW1haWxgIHZhcmNoYXIo MjU1KSBOT1QgTlVMTCBkZWZhdWx0ICcnLAogIGBPdGhlckluZm9gIHRleHQgTk9UIE5VTEws CiAgYE90aGVySW5mb19odG1sYCBtZWRpdW10ZXh0IE5PVCBOVUxMLAogIGBjb21tZW50c19j b3VudGAgaW50KDgpIE5PVCBOVUxMIGRlZmF1bHQgJzAnLAogIFBSSU1BUlkgS0VZICAoYElE YCksCiAgS0VZIGBuYW1lYCAoYG5hbWVgKSwKICBGVUxMVEVYVCBLRVkgYHNlYXJjaGluZ2Ag KGBPdGhlckluZm9gKQopICR0YWJsZXR5cGUgUEFDS19LRVlTPTEgQVVUT19JTkNSRU1FTlQ9 MiAiOwoJCX0KCQkvLyBJZiB0aGUgdmVudWUgdGFibGUgbmVlZHMgaW5zdGFsbGluZywgYWRk IFNRTCBjb21tYW5kcyB0byAkY3JlYXRlX3NxbAoJCWlmKCRpbnN0YWxsWydjYXRlZ29yeSdd KQoJCXsKCQkJJGNyZWF0ZV9zcWxbXSA9IkNSRUFURSBUQUJMRSBgIi5QRlguInR4cF9qbWNf ZXZlbnRfY2F0ZWdvcnlgICgKICBgSURgIGludCgxMSkgTk9UIE5VTEwgYXV0b19pbmNyZW1l bnQsCiAgYG5hbWVgIHZhcmNoYXIoMjU1KSBOT1QgTlVMTCBkZWZhdWx0ICcnLAogIGBPdGhl ckluZm9gIHRleHQgTk9UIE5VTEwsCiAgYE90aGVySW5mb19odG1sYCBtZWRpdW10ZXh0IE5P VCBOVUxMLAogIFBSSU1BUlkgS0VZICAoYElEYCksCiAgS0VZIGBuYW1lYCAoYG5hbWVgKSwK ICBGVUxMVEVYVCBLRVkgYHNlYXJjaGluZ2AgKGBPdGhlckluZm9gKQopICR0YWJsZXR5cGUg UEFDS19LRVlTPTEgQVVUT19JTkNSRU1FTlQ9MiAiOwoJCX0KCQkvLyBFcnJvciBSZXR1cm4g dmFyaWFibGUKCQkkZXJyb3JzID0gIiI7CgoJCS8vIEZvcmVhY2ggU1FMIGNvbW1hbmQgZG8g cXVlcnkgYW5kIGFkZCBlcnJvcnMgKGlmIGFueSkgZm9yIHJldHVybgoJCWZvcmVhY2ggKCRj cmVhdGVfc3FsIGFzICRxdWVyeSkKCQl7CgkJCSRyZXN1bHQgPSBteXNxbF9xdWVyeSgkcXVl cnkpOwoJCQlpZiAoISRyZXN1bHQpCgkJCXsKCQkJCSRlcnJvcnMgLj0gKCEkZXJyb3JzP3Rh ZygiRXZlbnQgQ3JlYXRlIFRhYmxlcyBNeVNRTCBFcnJvcnMiLCJoMyIpLiI8b2w+XHJcbiI6 IiIpOwoJCQkJJGVycm9ycyAuPSB0YWcobXlzcWxfZXJyb3IoKSwibGkiKTsKCQkJCSRlcnJv cnMgLj0gIjwhLS1cclxuICRxdWVyeSBcclxuLS0+XHJcbiI7CgkJCX0KCQl9CgoJCWlmICgk aW5zdGFsbFsnZXZlbnQnXSkKCQkJc2FmZV9pbnNlcnQoInR4cF9qbWNfZXZlbnQiLAoJCQki Q2F0ZWdvcnlJRCA9ICcxJywKCQkJbmFtZSA9ICdBbiBldmVudCcsCgkJCXN0YXJ0X0RhdGVU aW1lID0gbm93KCksCgkJCWZpbmlzaF9EYXRlVGltZSA9IG5vdygpLAoJCQlBdXRob3JJRCA9 ICdqbWNfZXZlbnRfbWFuYWdlcicsCgkJCVZlbnVlSUQgPSAnMScsCgkJCVByaWNlID0gJ0hv dyBtdWNoPycsCgkJCU90aGVyQmFuZHMgPSAnJywKCQkJT3RoZXJCYW5kc19odG1sID0gJycs CgkJCU90aGVySW5mbyA9ICcnLAoJCQlPdGhlckluZm9faHRtbCA9ICcnIik7CgkJaWYgKCRp bnN0YWxsWyd2ZW51ZSddKQoJCQlzYWZlX2luc2VydCgidHhwX2ptY19ldmVudF92ZW51ZSIs CgkJCSJJRCA9IDEsCgkJCUNhdGVnb3J5SUQgPSAnMScsCgkJCW5hbWUgPSAnQSB2ZW51ZScs CgkJCWltYWdlSUQgPSAnJywKCQkJYWRkcmVzczEgPSAnJywKCQkJYWRkcmVzczIgPSAnJywK CQkJc3VidXJiID0gJycsCgkJCXN0YXRlID0gJycsCgkJCWNvdW50cnkgPSAnJywKCQkJcG9z dGNvZGUgPSAnJywKCQkJcGhvbmUgPSAnMTgwMCAwMDAgMDAwJywKCQkJdXJsID0gJ2h0dHA6 Ly93d3cudGhldXJsLmNvbScsCgkJCWVtYWlsID0gJ2luZm9AdGhldXJsLmNvbScsCgkJCU90 aGVySW5mbyA9ICcnLAoJCQlPdGhlckluZm9faHRtbCA9ICcnLAoJCQljb21tZW50c19jb3Vu dCA9ICcnIgoJCQkpOwoJCWlmICgkaW5zdGFsbFsnY2F0ZWdvcnknXSkKCQkJc2FmZV9pbnNl cnQoInR4cF9qbWNfZXZlbnRfY2F0ZWdvcnkiLAoJCQkiSUQgPSAxLAoJCQluYW1lID0gJ0Eg Q2F0ZWdvcnknLAoJCQlPdGhlckluZm8gPSAnU29tZXRoaW5nIGdvcnkhJywKCQkJT3RoZXJJ bmZvX2h0bWwgPSAnPHA+U29tZXRoaW5nIEdvcnkhPC9wPiciCgkJCSk7CgoKCQkvLyBJZiBu byBlcnJvcnMsIHNldCBlcnJvcnMgdG8gZmFsc2UKCQkkZXJyb3JzID0gKCEkZXJyb3JzP2Zh bHNlOiRlcnJvcnMuIjwvb2w+Iik7CgkJLy8gUmV0dXJuIGVycm9ycyB0byBjYWxsZXIgKGVp dGhlciBmYWxzZSBpZiBub25lIG9yIGVycm9yIGluZm9ybWF0aW9uIGlmIG5vdAoJCXJldHVy biB0YWcodGFnKCRlcnJvcnMsInRkIiksInRyIik7CgoJCS8vIEV2ZW50CgkJLy8gVGFibGU6 CQl0eHBfam1jX2V2ZW50CgkJLy8gVGltZToKCQkvLyBEYXRlOgoJCS8vIExvY2F0aW9uOgl2 Q2FyZCBvZiBTUUwgRXZlbnQgTG9jYXRpb24KCQkvLyBQcmljZToKCQkvLyBPdGhlciBCYW5k czoKCQkvLyBPdGhlciBJbmZvcm1hdGlvbjoKCgkJLy8gVmVudWUKCQkvLyBUYWJsZToJCXR4 cF9qbWNfZXZlbnRfdmVudWUKCQkvLyBOYW1lOgoJCS8vIEFkZHJlc3M6CgkJLy8gUGhvbmU6 CgkJLy8gdXJsOgoJCS8vIGVtYWlsOgoJCS8vIE90aGVyIEluZm9ybWF0aW9uOgoKCQkvLyBD YXRlZ29yaWVzCgkJLy8gVGFibGU6CQl0eHBfam1jX2V2ZW50X2NhdGVnb3J5CgkJLy8gTmFt ZToKCQkvLyBLZXk6CgkJLy8gVHlwZToKCQkvLyBJbmZvcm1hdGlvbjoKCX0KCglmdW5jdGlv biBqbWNfZXZlbnRfY29sdW1uX2hlYWQoJHZhbHVlLCAkc29ydD0nJywgJGN1cnJlbnRfZXZl bnQ9JycsICRpc2xpbms9JycsICRkaXI9JycsICRjdXJyZW50X3N0ZXA9JycpCgl7CgkJJG91 dHB1dF9odG1sID0gJzx0aCBjbGFzcz0ic21hbGwiPjxzdHJvbmc+JzsKCQkJaWYgKCRpc2xp bmspIHsKCQkJCSRvdXRwdXRfaHRtbCAuPSAnPGEgaHJlZj0iaW5kZXgucGhwJzsKCQkJCSRv dXRwdXRfaHRtbCAuPSAoJHNvcnQpID8gIj9zb3J0PSRzb3J0IjonJzsKCQkJCSRvdXRwdXRf aHRtbCAuPSAoJGRpcikgPyBhLiJkaXI9JGRpciI6Jyc7CgkJCQkkb3V0cHV0X2h0bWwgLj0g KCRjdXJyZW50X2V2ZW50KSA/IGEuImV2ZW50PSRjdXJyZW50X2V2ZW50IjonJzsKCQkJCSRv dXRwdXRfaHRtbCAuPSBhLiJzdGVwPSRjdXJyZW50X3N0ZXBcIj4iOwoJCQl9CgkJJG91dHB1 dF9odG1sIC49IGdUeHQoJHZhbHVlKTsKCQkJaWYgKCRpc2xpbmspIHsgJG91dHB1dF9odG1s IC49ICI8L2E+IjsgfQoJCSRvdXRwdXRfaHRtbCAuPSAnPC9zdHJvbmc+PC90aD4nOwoJCXJl dHVybiAkb3V0cHV0X2h0bWw7Cgl9CgoJZnVuY3Rpb24gaW1hZ2V0YWcoJGltYWdlX2lkKQoJ ewoJCWdsb2JhbCAkc2l0ZXVybCwgJGltZ19kaXI7Ci8qCgkJJGltYWdlID0gc2FmZV9yb3dz KCIqIiwgInR4cF9pbWFnZSIsICJpZCA9ICRpbWFnZV9pZCIpOwoJCWlmKCRpbWFnZSkKCQl7 CgkJCWV4dHJhY3QoJGltYWdlWzBdKTsKCgkJCSRyZXR1cm5fY29kZSA9ICI8aW1nIHNyYz1c Imh0dHA6Ly8iLiRzaXRldXJsLicvJy4kaW1nX2Rpci4nLycuJGlkLiJ0LmpwZ1wiIGFsdD1c IiRhbHRcIiAvPiI7CgoJCQlyZXR1cm4gJHJldHVybl9jb2RlOwoJCX0KCQllbHNlCgkJCXJl dHVybiAiIjsKKi8KCQlyZXR1cm4gIiI7Cgl9CgoJZnVuY3Rpb24gdmVudWVkcm9wZG93bigk VmVudWVJRCA9ICcnLCAkdGFiPScnKQoJewoJCSRycyA9IHNhZmVfcm93c19zdGFydCgKCQkJ IklELCBuYW1lIiwKCQkJInR4cF9qbWNfZXZlbnRfdmVudWUiLAoJCQkiSUQgb3JkZXIgYnkg bmFtZSBhc2MiCgkJKTsKCgkJaWYoJHJzKQoJCXsKCQkJJG91dCA9ICI8c2VsZWN0IG5hbWU9 XCJWZW51ZUlEXCIgdGFiaW5kZXg9XCIkdGFiXCI+XHJcbiI7CgkJCXdoaWxlKCRhID0gbmV4 dFJvdygkcnMpKQoJCQl7CgkJCQlleHRyYWN0KCRhKTsKCQkJCSRvdXQgLj0iPG9wdGlvbiB2 YWx1ZT1cIiRJRFwiICIuKCRJRD09JFZlbnVlSUQ/InNlbGVjdGVkPVwic2VsZWN0ZWRcIiI6 IiIpLiI+JG5hbWU8L29wdGlvbj5cclxuIjsKCQkJfQoJCQkkb3V0IC49ICI8L3NlbGVjdD5c clxuIjsKCgkJCXJldHVybiAkb3V0OwoJCX0KCQllbHNlCgkJCXJldHVybiAiPHNwYW4gY2xh c3M9XCJ3YXJuaW5nX2Vycm9yXCI+PHN0cm9uZz5FcnJvcjwvc3Ryb25nPjogPGEgaHJlZj1c Ij9ldmVudD1qbWNfZXZlbnRfbWFuYWdlciZzdGVwPXZlbnVlX21hbmFnZXJcIj5Zb3UgbXVz dCBmaXJzdCBhZGQgYSB2ZW51ZTwvYT4uIjsKCX0KCglmdW5jdGlvbiBjYXRlZ29yeWRyb3Bk b3duKCRDYXRlZ29yeUlEID0gJycsICR0YWI9JycpCgl7CgkJJHJzID0gc2FmZV9yb3dzX3N0 YXJ0KAoJCQkiSUQsIG5hbWUiLAoJCQkidHhwX2ptY19ldmVudF9jYXRlZ29yeSIsCgkJCSJJ RCBvcmRlciBieSBuYW1lIGFzYyIKCQkpOwoKCQlpZigkcnMpCgkJewoJCQkkb3V0ID0gIjxz ZWxlY3QgbmFtZT1cIkNhdGVnb3J5SURcIiB0YWJpbmRleD1cIiR0YWJcIj5cclxuIjsKCQkJ JG91dCAuPSI8b3B0aW9uIHZhbHVlPVwiXCIgIi4oISRDYXRlZ29yeUlEPyJzZWxlY3RlZD1c InNlbGVjdGVkXCIiOiIiKS4iPk5vbmU8L29wdGlvbj5cclxuIjsKCQkJd2hpbGUoJGEgPSBu ZXh0Um93KCRycykpCgkJCXsKCQkJCWV4dHJhY3QoJGEpOwoJCQkJJG91dCAuPSI8b3B0aW9u IHZhbHVlPVwiJElEXCIgIi4oJElEPT0kQ2F0ZWdvcnlJRD8ic2VsZWN0ZWQ9XCJzZWxlY3Rl ZFwiIjoiIikuIj4kbmFtZTwvb3B0aW9uPlxyXG4iOwoJCQl9CgoJCQkkb3V0IC49ICI8L3Nl bGVjdD5cclxuIjsKCgkJCXJldHVybiAkb3V0OwoJCX0KCQllbHNlCgkJCXJldHVybiAiPHNw YW4gY2xhc3M9XCJ3YXJuaW5nX2Vycm9yXCI+PHN0cm9uZz5FcnJvcjwvc3Ryb25nPjogPGEg aHJlZj1cIj9ldmVudD1qbWNfZXZlbnRfbWFuYWdlciZzdGVwPWNhdGVnb3J5X21hbmFnZXJc Ij5Zb3UgbXVzdCBmaXJzdCBhZGQgYSBjYXRlZ29yeTwvYT4uIjsKCX0KCglmdW5jdGlvbiBk YXRldGltZWRyb3Bkb3duKCR0eXBlLCAkbmFtZSwgJGRlZmF1bHQgPSAnJywgJHRhYj0nJykK CXsKCQkkdmFsdWVzID0gYXJyYXkoKTsKCQlzd2l0Y2goJHR5cGUpCgkJewoJCQljYXNlICJ5 ZWFyIjoKCQkJCWZvcigkeSA9IDE5NzA7ICR5IDwgMjEwMDsgJHkrKykKCQkJCQkkdmFsdWVz WyIkeSJdID0gJHk7CgkJCQlicmVhazsKCQkJY2FzZSAibW9udGgiOgoJCQkJJHZhbHVlc1si SmFudWFyeSJdID0gMTsKCQkJCSR2YWx1ZXNbIkZlYnJ1YXJ5Il0gPSAyOwoJCQkJJHZhbHVl c1siTWFyY2giXSA9IDM7CgkJCQkkdmFsdWVzWyJBcHJpbCJdID0gNDsKCQkJCSR2YWx1ZXNb Ik1heSJdID0gNTsKCQkJCSR2YWx1ZXNbIkp1bmUiXSA9IDY7CgkJCQkkdmFsdWVzWyJKdWx5 Il0gPSA3OwoJCQkJJHZhbHVlc1siQXVndXN0Il0gPSA4OwoJCQkJJHZhbHVlc1siU2VwdGVt YmVyIl0gPSA5OwoJCQkJJHZhbHVlc1siT2N0b2JlciJdID0gMTA7CgkJCQkkdmFsdWVzWyJO b3ZlbWJlciJdID0gMTE7CgkJCQkkdmFsdWVzWyJEZWNlbWJlciJdID0gMTI7CgkJCQlicmVh azsKCQkJY2FzZSAiZGF5IjoKCQkJCWZvcigkZCA9IDE7ICRkIDwgMzI7ICRkKyspCgkJCQkJ JHZhbHVlc1siJGQiXSA9ICRkOwoJCQkJYnJlYWs7CgkJCWNhc2UgImhvdXIiOgoJCQkJZm9y KCRoID0gMDsgJGggPCAyNDsgJGgrKykKCQkJCQkkdmFsdWVzWyIkaCJdID0gJGg7CgkJCQli cmVhazsKCQkJY2FzZSAibWludXRlIjoKCQkJCWZvcigkbSA9IDE1OyAkbSA8IDYwOykKCQkJ CXsKCQkJCQkkdmFsdWVzWyIkbSJdID0gJG07CgkJCQkJJG0gPSAkbSArIDE1OwoJCQkJfQoJ CQkJJHZhbHVlc1siMDAiXSA9ICIwIjsKCQkJCWJyZWFrOwoJCQlkZWZhdWx0OgoJCQkJcmV0 dXJuICI8c3BhbiBjbGFzcz1cIndhcm5pbmdfZXJyb3JcIj48c3Ryb25nPkVycm9yPC9zdHJv bmc+OiBEYXRlVGltZSAkdHlwZSBub24tZXhpc3RhbnQiOwoJCX0KCgkJaWYoISRkZWZhdWx0 KQoJCXsKCQkJc3dpdGNoKCR0eXBlKQoJCQl7CgkJCQljYXNlICJ5ZWFyIjoKCQkJCQkkZGVm YXVsdCA9IGRhdGUoJ1knLCB0aW1lKCkpOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAibW9udGgi OgoJCQkJCSRkZWZhdWx0ID0gZGF0ZSgnbScsIHRpbWUoKSk7CgkJCQkJYnJlYWs7CgkJCQlj YXNlICJkYXkiOgoJCQkJCSRkZWZhdWx0ID0gZGF0ZSgnZCcsIHRpbWUoKSk7CgkJCQkJYnJl YWs7CgkJCQljYXNlICJob3VyIjoKCQkJCQkkZGVmYXVsdCA9IGRhdGUoJ0gnLCB0aW1lKCkp OwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAibWludXRlIjoKCQkJCQkkZGVmYXVsdCA9IGRhdGUo J2cnLCB0aW1lKCkpICsgKDE1LShkYXRlKCdnJywgdGltZSgpKSklMTUpOwoJCQkJCWJyZWFr OwoJCQl9CgkJfQoKCQkkb3V0ID0gIjxzZWxlY3QgbmFtZT1cIiRuYW1lXCIgdGFiaW5kZXg9 XCIkdGFiXCI+IjsKCQlmb3JlYWNoKCR2YWx1ZXMgYXMgJG49PiR2KQoJCXsKCQkJJG91dCAu PSI8b3B0aW9uIHZhbHVlPVwiJHZcIiAiLigkdj09JGRlZmF1bHQ/InNlbGVjdGVkPVwic2Vs ZWN0ZWRcIiI6IiIpLiI+JG48L29wdGlvbj5cclxuIjsKCQl9CgkJJG91dCAuPSAiPC9zZWxl Y3Q+IjsKCgkJcmV0dXJuICRvdXQ7Cgl9CgoJZnVuY3Rpb24gam1jX2V2ZW50X21hbmFnZXJf bXVsdGllZGl0X2Zvcm0oJGV2ZW50LCRzdGVwKQoJewoJCSRtZXRob2QgPSBwcygnbWV0aG9k Jyk7CgkJJG1ldGhvZHMgPSBhcnJheSgnZGVsZXRlJz0+Z1R4dCgnZGVsZXRlJykpOwoJCXJl dHVybgoJCQlnVHh0KCd3aXRoX3NlbGVjdGVkJykuc3Auc2VsZWN0SW5wdXQoJ21ldGhvZCcs JG1ldGhvZHMsJG1ldGhvZCwxKS4KCQkJZUlucHV0KCRldmVudCkuc0lucHV0KCRzdGVwKS5m SW5wdXQoJ3N1Ym1pdCcsJycsZ1R4dCgnZ28nKSwnc21hbGxlcmJveCcpOwoJfQoKCWZ1bmN0 aW9uIGptY19ldmVudF9tYW5hZ2VyX2dsb2JhbHMoKXsKCQkvLyBEZWNsYXJlIGdsb2JhbCB2 YXJpYWJsZSBhcnJheXMKCQlnbG9iYWwgJHZhcnNfZXZlbnRzLCAkdmFyc192ZW51ZXMsICR2 YXJzX2NhdGVnb3JpZXM7CgkJJHZhcnNfZXZlbnRzID0gYXJyYXkoIklEIiwgIkNhdGVnb3J5 SUQiLCAic0RhdGVUaW1lIiwgImZEYXRlVGltZSIsICJuYW1lIiwgIkF1dGhvcklEIiwgIkxh c3RNb2QiLCAiTGFzdE1vZElEIiwgIlZlbnVlSUQiLCAiUHJpY2UiLCAiT3RoZXJCYW5kcyIs ICJPdGhlckJhbmRzX2h0bWwiLCAiT3RoZXJJbmZvIiwgIk90aGVySW5mb19odG1sIiwgImNv bW1lbnRzX2NvdW50Iik7CgkJJHZhcnNfdmVudWVzID0gYXJyYXkoIklEIiwgIkNhdGVnb3J5 SUQiLCAiaW1hZ2VJRCIsICJuYW1lIiwgImFkZHJlc3MxIiwgImFkZHJlc3MyIiwgInN1YnVy YiIsICJzdGF0ZSIsICJjb3VudHJ5IiwgInBvc3Rjb2RlIiwgInBob25lIiwgInVybCIsICJl bWFpbCIsICJPdGhlckluZm8iLCAiT3RoZXJJbmZvX2h0bWwiLCAiY29tbWVudHNfY291bnQi KTsKCQkkdmFyc19jYXRlZ29yaWVzID0gYXJyYXkoIklEIiwgIm5hbWUiLCAiT3RoZXJJbmZv IiwgIk90aGVySW5mb19odG1sIik7Cgl9IjtzOjM6Im1kNSI7czozMjoiMzg2NmI5NDYwNmJj ZTA4MGQ0NTMyZWY1ZTI0MDE1YzQiO30=