# Name: smd_if v0.51 # Type: Client side plugin # Generic multiple if condition tests # Author: Stef Dawson # URL: http://stefdawson.com/ # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjY6InNtZF9pZiI7czo3OiJ2ZXJzaW9uIjtzOjQ6IjAuNTEi O3M6ODoicmV2aXNpb24iO3M6MDoiIjtzOjY6ImF1dGhvciI7czoxMToiU3RlZiBEYXdzb24i O3M6MTA6ImF1dGhvcl91cmkiO3M6MjI6Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS8iO3M6MTE6 ImRlc2NyaXB0aW9uIjtzOjM1OiJHZW5lcmljIG11bHRpcGxlIGlmIGNvbmRpdGlvbiB0ZXN0 cyI7czo0OiJ0eXBlIjtzOjE6IjAiO3M6NDoiaGVscCI7czoxOTY3NToiCTxwPjxkaXYgaWQ9 InNtZF9oZWxwIj48L3A+CgoJPGgxPnNtZF9pZjwvaDE+CgoJPHA+QSByZWFsbHkgc2ltcGxl LCBnZW5lcmljICYjODIxNjtpZiBjb25kaXRpb24mIzgyMTc7IHRlc3Rlci4gQ2FuIHRlc3Qg YW55IGZpZWxkIGluIHRoZSBjdXJyZW50IGFydGljbGUgb3IgbGlzdCBjb250ZXh0IGZvciBh IHZhcmlldHkgb2YgYXR0cmlidXRlcyBhbmQgdGFrZSBhY3Rpb24gaWYgPHNwYW4gY2xhc3M9 ImNhcHMiPlRSVUU8L3NwYW4+IG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5GQUxTRTwvc3Bhbj4u PC9wPgoKCTxoMj5GZWF0dXJlczwvaDI+CgoJPHVsPgoJCTxsaT5TdXBwb3J0cyBtb3N0IG1h am9yIHZhcmlhYmxlcyBzdWNoIGFzIHNlY3Rpb24sIGNhdGVnb3J5LCBjdXN0b20gZmllbGRz LCBpZCwgcXVlcnkgc3RyaW5nLCBhdXRob3IsIGJvZHksIGV4Y2VycHQsIHlhaGRlIHlhaGRl LCBwbHVzIHVybCB2YXJzLCBzZXJ2ZXIgdmFycyBhbmQgc3ViLWNhdGVnb3J5L3BhcmVudCBj aGVja2luZzwvbGk+CgkJPGxpPlRlc3RzIGluY2x1ZGUgZXF1YWxpdHksIGluZXF1YWxpdHks IGxlc3MgdGhhbiwgZ3JlYXRlciB0aGFuLCBlbXB0eSwgdXNlZCwgZGVmaW5lZCwgYmVnaW5z LCBjb250YWlucyBhbmQgaXNudW1lcmljPC9saT4KCQk8bGk+VGVzdHMgZm9yIG1vcmUgdGhh biBvbmUgY29uZGl0aW9uIGF0IG9uY2UgYW5kIGFwcGxpZXMgZWl0aGVyIDxzcGFuIGNsYXNz PSJjYXBzIj5BTkQ8L3NwYW4+IGxvZ2ljIChhbGwgdGVzdHMgbXVzdCBwYXNzKSBvciBPUiBs b2dpYyAoYW55IHRlc3QgbXVzdCBwYXNzKTwvbGk+CgkJPGxpPlVnbHkgYW5kIHZlcnkgZGly dHkuIFVzZXMgPHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4mIzgyMTc7cyA8Y29kZT5l dmFsKCk8L2NvZGU+IGNvbW1hbmQgd2hpY2ggbW9zdCBwcm9ncmFtbWVycyBjb25jdXIgc2hv dWxkIGJlIHJlbmFtZWQgPGNvZGU+ZXZpbCgpPC9jb2RlPjwvbGk+Cgk8L3VsPgoKCTxoMj5B dXRob3I8L2gyPgoKCTxwPjxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9jb21tZW50 Rm9ybSI+U3RlZiBEYXdzb248L2E+LiBCYXNlZCBvbiBhbiBpZGVhIGJyZXdpbmcgaW4gdGhl IGJhY2sgb2YgbXkgbWluZCB3aGlsZSBoYWNraW5nIGNoc19pZl91cmx2YXIuPC9wPgoKCTxo Mj5JbnN0YWxsYXRpb24gLyBVbmluc3RhbGxhdGlvbjwvaDI+CgoJPHA+RG93bmxvYWQgdGhl IHBsdWdpbiBmcm9tIGVpdGhlciA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3Bs dWdpbnMvOTMwL3NtZF9pZiI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIDxhIGhyZWY9 Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4sIHBhc3RlIHRo ZSBjb2RlIGludG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IEFkbWluIC0m IzYyOyBQbHVnaW5zIHBhbmUsIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgcGx1Z2luLiBWaXNp dCB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMu cGhwP2lkPTI1MzU3Ij5mb3J1bSB0aHJlYWQ8L2E+IGZvciBtb3JlIGluZm8gb3IgdG8gcmVw b3J0IG9uIHRoZSBzdWNjZXNzIG9yIG90aGVyd2lzZSBvZiB0aGUgcGx1Z2luLjwvcD4KCgk8 aDI+VXNhZ2U8L2gyPgoKCTxwPlVzZSB0aGUgdGFnIGluIGFueSBwYWdlLCBmb3JtIG9yIGFy dGljbGUgY29udGV4dC48L3A+CgoJPGgzIGNsYXNzPSJ0YWciPnNtZF9pZjwvaDM+CgoJPHAg Y2xhc3M9InRhZy1zdW1tYXJ5Ij5BdCB0aGUgcGxhY2UgeW91IHdpc2ggdG8gY29tcGFyZSBh IDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZpZWxkIHdpdGggYW5vdGhlciB2YWx1 ZSwgcHV0IHRoaXMgdGFnIHdpdGggYWxsIHRocmVlIG1hbmRhdG9yeSBhdHRyaWJ1dGVzIHNo YWRlZCBiZWxvdy4gRWFjaCB0YWtlIGEgc2VyaWVzIG9mIGNvbW1hLXNlcGFyYXRlZCBsaXN0 cyAmIzgyMTI7IHRob3VnaCB0aGUgPGEgaHJlZj0iI3BhcmFtZGVsaW0iPmNvbW1hIGlzIG92 ZXJyaWRhYmxlPC9hPiB3aXRoIHRoZSBwYXJhbV9kZWxpbSBhdHRyaWJ1dGUuIElmIHRoZSBy ZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24gdGVzdHMgaXMgPHNwYW4gY2xhc3M9ImNhcHMiPlRS VUU8L3NwYW4+IHRoZSBjb250YWluZWQgYmxvY2sgd2lsbCBiZSBleGVjdXRlZC4gSWYgdGhl IHJlc3VsdCBpcyA8c3BhbiBjbGFzcz0iY2FwcyI+RkFMU0U8L3NwYW4+LCBhbnkgPGNvZGU+ JiM2MDt0eHA6ZWxzZSAvJiM2Mjs8L2NvZGU+IHdpbGwgYmUgZXhlY3V0ZWQgaW5zdGVhZC4g V2l0aG91dCBhbnkgPGNvZGU+JiM2MDt0eHA6ZWxzZSAvJiM2Mjs8L2NvZGU+IGJsb2NrLCBu b3RoaW5nIGlzIG91dHB1dCBpZiB0aGUgcmVzdWx0IGlzIDxzcGFuIGNsYXNzPSJjYXBzIj5G QUxTRTwvc3Bhbj4uPC9wPgoKCTxoNCBjbGFzcz0iYXR0cyAiIGlkPSJhdHRyaWJ1dGVzIj5B dHRyaWJ1dGVzPC9oND4KCgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0i YXR0LW5hbWUgbWFuZCI+ZmllbGQ8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5U WFA8L3NwYW4+IDxhIGhyZWY9IiNmaWVsZCI+ZmllbGRzPC9hPiB0byB0ZXN0PC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIG1hbmQiPm9wZXJhdG9yPC9zcGFuPiA6IHRoZSA8 YSBocmVmPSIjb3BlcmF0b3IiPm9wZXJhdGlvbnM8L2E+IGZvciBjb21wYXJpc29uIHdpdGgg dGhhdCBmaWVsZCAoZS5nLiA8Y29kZT5lcTwvY29kZT4sIDxjb2RlPm5vdDwvY29kZT4sIDxj b2RlPmJlZ2luczwvY29kZT4sIGV0Yyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5h bWUgbWFuZCI+dmFsdWU8L3NwYW4+IDogdGhlIDxhIGhyZWY9IiN2YWx1ZSI+dmFsdWVzPC9h PiB3aXRoIHdoaWNoIHRvIGNvbXBhcmUgdGhlIGZpZWxkczwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdHQtbmFtZSI+bG9naWM8L3NwYW4+IDogaG93IG11bHRpcGxlIHRlc3RzIGFyZSBq b2luZWQ6IDxzcGFuIGNsYXNzPSJjYXBzIj5BTkQ8L3NwYW4+IG9yIE9SLiBEZWZhdWx0IGlz IDxzcGFuIGNsYXNzPSJjYXBzIj5BTkQ8L3NwYW4+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0dC1uYW1lIj5jYXNlX3NlbnNpdGl2ZTwvc3Bhbj4gOiAxID0gY2FzZS1zZW5zaXRpdmUg Y29tcGFyaXNvbjsgMCA9IGlnbm9yZSBjYXNlLiBEZWZhdWx0IGlzIDA8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnBhcmFtX2RlbGltPC9zcGFuPiA6IGRlbGltaXRlciB0 byB1c2Ugd2hlbiBzcGVjaWZ5aW5nIGZpZWxkLCBvcGVyYXRvciBvciB2YWx1ZSBsaXN0cy4g RGVmYXVsdCBpcyB0aGUgY29tbWEgKCwpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1u YW1lIj5tb2RfZGVsaW08L3NwYW4+IDogZGVsaW1pdGVyIHRvIHVzZSB3aGVuIHNwZWNpZnlp bmcgZmllbGQgb3Igb3BlcmF0b3IgbW9kaWZpZXJzLiBEZWZhdWx0IGlzIHRoZSBjb2xvbiAo Oik8L2xpPgoJPC91bD4KCgk8cD5UaGUgbGlzdHMgYXJlIHByb2Nlc3NlZCBpbiBvcmRlciwg aS5lLiB0aGUgMXN0IGZpZWxkIHVzZXMgdGhlIDFzdCBvcGVyYXRvciBpbiB0aGUgbGlzdCBh bmQgY29tcGFyZXMgaXQgdG8gdGhlIDFzdCB2YWx1ZTsgdGhlIDJuZCBmaWVsZCB1c2VzIHRo ZSAybmQgb3BlcmF0b3IgaW4gdGhlIGxpc3QgYW5kIGNvbXBhcmVzIGl0IHRvIHRoZSAybmQg dmFsdWUsIGFuZCBzbyBvbi4gVmFsdWVzIHNob3VsZCB1c3VhbGx5IGJlIHNwZWNpZmllZCB3 aXRoIHBsYWNlaG9sZGVycyB0byBtYWludGFpbiBvcmRlcjogZS5nLiA8Y29kZT52YWx1ZT0m IzM0OywgNCwsIHRvcCYjMzQ7PC9jb2RlPjwvcD4KCgk8cD5Ob3RlIHRoYXQsIGFsdGhvdWdo IHRoZSBmaXJzdCB0aHJlZSBhdHRyaWJ1dGVzIGFyZSBjb25zaWRlcmVkIG1hbmRhdG9yeSwg aWYgeW91IGhhcHBlbiB0byByZXF1aXJlIHRoZSBkZWZhdWx0IG9wZXJhdG9yIGZvciBhbGwg eW91ciB0ZXN0cywgeW91IGNhbiBzYWZlbHkgb21pdCA8Y29kZT5vcGVyYXRvcjwvY29kZT4u IFNpbWlsYXJseSB3aXRoIHZhbHVlczogaWYgeW91IGFyZSBlbnRpcmVseSB0ZXN0aW5nIHRo ZSBleGlzdGVuY2Ugb3IgdHlwZSBvZiB2YXJpYWJsZXMsIHlvdSBjYW4gb21pdCB0aGUgPGNv ZGU+dmFsdWU8L2NvZGU+IHBhcmFtZXRlciBpZiB5b3Ugd2lzaC48L3A+CgoJPGg0IGNsYXNz PSJhdHQtbmFtZSAiIGlkPSJmaWVsZCI+ZmllbGQ8L2g0PgoKCTxwPkxpc3Qgb2YgVGV4dFBh dHRlcm4gZmllbGRzIHRvIGxvb2sgYXQuIFBvc3NpYmxlIHZhbHVlcyBhcmU6Cgk8dWw+CgkJ PGxpPjxjb2RlPnNlY3Rpb248L2NvZGU+PC9saT4KCQk8bGk+PGNvZGU+Y2F0ZWdvcnk8L2Nv ZGU+IChvciA8Y29kZT5jYXRlZ29yeTE8L2NvZGU+LCBvciA8Y29kZT5jYXRlZ29yeTI8L2Nv ZGU+KTwvbGk+CgkJPGxpPjxjb2RlPmF1dGhvcmlkPC9jb2RlPjwvbGk+CgkJPGxpPjxjb2Rl PmlkPC9jb2RlPiAoYXJ0aWNsZSBJRCk8L2xpPgoJCTxsaT48Y29kZT5xdWVyeTwvY29kZT4g KHRoZSBxdWVyeSBzdHJpbmcgZnJvbSB0aGUgc2VhcmNoIGZvcm0pPC9saT4KCQk8bGk+PGNv ZGU+cGc8L2NvZGU+ICh0aGUgY3VycmVudCBwYWdlIG51bWJlcik8L2xpPgoJCTxsaT48Y29k ZT5zdGF0dXM8L2NvZGU+IChkb2N1bWVudCBzdGF0dXM6IDIwMCwgNDA0LCA0MDMsIGV0Yyk8 L2xpPgoJCTxsaT48Y29kZT5uZXh0X2lkPC9jb2RlPiAoSUQgb2YgbmV4dCBkb2N1bWVudCBp ZiBvbiBhcnRpY2xlIHBhZ2UpPC9saT4KCQk8bGk+PGNvZGU+bmV4dF90aXRsZTwvY29kZT4g KFRpdGxlIG9mIG5leHQgZG9jdW1lbnQgaWYgb24gYXJ0aWNsZSBwYWdlKTwvbGk+CgkJPGxp Pjxjb2RlPnByZXZfaWQ8L2NvZGU+PC9saT4KCQk8bGk+PGNvZGU+cHJldl90aXRsZTwvY29k ZT48L2xpPgoJCTxsaT48Y29kZT5vdGhlciBhcnRpY2xlIGZpZWxkPC9jb2RlPiAoZS5nLiBi b2R5LCBleGNlcnB0LCBhcnRpY2xlX2ltYWdlLCBrZXl3b3JkcyYjODIzMDspPC9saT4KCQk8 bGk+PGNvZGU+bXlfY3VzdG9tX2ZpZWxkX25hbWU8L2NvZGU+IChhbnkgY3VzdG9tIGZpZWxk cyB5b3UgaGF2ZSBkZWZpbmVkKTwvbGk+CgkJPGxpPjxjb2RlPnVybHZhcjpteV92YXJpYWJs ZV9uYW1lPC9jb2RlPiAoYW55IHZhcmlhYmxlIGluIHRoZSBhZGRyZXNzIGJhcik8L2xpPgoJ CTxsaT48Y29kZT5zdnJ2YXI6bXlfdmFyaWFibGVfbmFtZTwvY29kZT4gKGFueSBzZXJ2ZXIg dmFyaWFibGUsIGUuZy4gPHNwYW4gY2xhc3M9ImNhcHMiPkhUVFA8L3NwYW4+X1VTRVJfQUdF TlQpPC9saT4KCQk8bGk+PGNvZGU+cGFyZW50Om9wdGlvbmFsX21vZGlmaWVyczwvY29kZT4g KHdoZXRoZXIgdGhlIGdpdmVuIGNhdGVnb3J5IGlzIGEgZGVzY2VuZGVudCBvZiBhbm90aGVy IGNhdGVnb3J5KTwvbGk+Cgk8L3VsPjwvcD4KCgk8cD5JZiB5b3Ugc3BlY2lmeSBhIGZpZWxk IG5hbWUgdGhhdCBkb2VzIG5vdCBleGlzdCwgdGhlIHRleHQgeW91IHVzZSB3aWxsIGJlIHRh a2VuIHZlcmJhdGltIGluIG1vc3QgY2FzZXMuPC9wPgoKCTxwPlRoZSBzcGVjaWFsIGZpZWxk IDxjb2RlPnBhcmVudDwvY29kZT4gY2hlY2tzIHRoZSBwYXJlbnQgY2F0ZWdvcnkgZm9yIGEg bWF0Y2guIFVubGlrZSB0aGUgb3RoZXIgZmllbGQgdHlwZXMsIHRoZSBkZWZhdWx0IDxhIGhy ZWY9IiNvcGVyYXRvciI+b3BlcmF0b3I8L2E+IGZvciBwYXJlbnQgaXMgJiM4MjE2O2NvbnRh aW5zJiM4MjE3Oy4gVGhpcyBpcyBiZWNhdXNlIHRoZSBlbnRpcmUgdHJlZSBpcyBjaGVja2Vk IGZvciBhIG1hdGNoLCBzdGFydGluZyBmcm9tIHRoZSB0b3Agb2YgdGhlIHRyZWUgZG93biB0 byB0aGUgY3VycmVudCBjYXRlZ29yeS4gSW50ZXJuYWxseSwgdGhlIHBsdWdpbiBtYWtlcyB1 cCBhICYjODIyMDticmVhZGNydW1iIHRyYWlsJiM4MjIxOyBvZiBjYXRlZ29yaWVzIGluIHRo ZSBjdXJyZW50IGJyYW5jaCwgZWFjaCBzZXBhcmF0ZWQgYnkgYSBzcGFjZSwgc28gdGVzdGlu ZyBmb3IgZXF1YWxpdHkgd291bGQgcmVxdWlyZSBwdXR0aW5nIHRoZW0gYWxsIGluIHRoZSA8 YSBocmVmPSIjdmFsdWUiPnZhbHVlPC9hPiBwYXJhbWV0ZXIuPC9wPgoKCTxwPllvdSBhcmUg b2YgY291cnNlIGZyZWUgdG8gY2hvb3NlIGFuIGFsdGVybmF0aXZlIG9wZXJhdG9yOyA8Y29k ZT5iZWdpbnM8L2NvZGU+IGlzIHZlcnkgdXNlZnVsIGZvciB0ZXN0aW5nIGlmIHRoZSB0b3Ag bGV2ZWwgY2F0ZWdvcnkgbWF0Y2hlcyB0aGUgb25lIGdpdmVuIGluIHRoZSA8Y29kZT52YWx1 ZTwvY29kZT4gZmllbGQuPC9wPgoKCTxwPllvdSBjYW4gbW9kaWZ5IHRoZSBiZWhhdmlvdXIg b2YgdGhlIHBhcmVudCBvcHRpb24sIGFzIGZvbGxvd3MuIFNwZWNpZnlpbmcgJiM4MjIwO3Bh cmVudCYjODIyMTsgb24gaXRzIG93biB3aWxsIHVzZSB0aGUgZ2xvYmFsIGNhdGVnb3J5ICg8 Y29kZT4/Yz08L2NvZGU+KS4gSWYgeW91IGFkZCA8Y29kZT46Q0FUbjwvY29kZT4gdG8gdGhl IG9wdGlvbiAod2hlcmUgJiM4MjE2O24mIzgyMTc7IGlzIDEgb3IgMikgaXQgd2lsbCBpbnN0 ZWFkIGNvbXBhcmUgY2F0ZWdvcnkxIG9yIGNhdGVnb3J5MiByZXNwZWN0aXZlbHkuIElmIHlv dSBhZGQgPGNvZGU+OkxWTG48L2NvZGU+IHRvIHRoZSBvcHRpb24sIHRoZSBjb21wYXJpc29u IHdpbGwgYmUgcmVzdHJpY3RlZCB0byB0aGF0ICYjODIyMDtsZXZlbCYjODIyMTsgb2Ygc3Vi LWNhdGVnb3J5OyBMVkwxIGlzIHRoZSAmIzgyMjA7dG9wJiM4MjIxOyBsZXZlbCwgTFZMMiBp cyB0aGUgbmV4dCBzdWItY2F0ZWdvcnkgbGV2ZWwsIGFuZCBzbyBvbi4gV2hlbiB1c2luZyB0 aGVzZSBtb2RpZmllcnMsIHRoZSAmIzgyMTY7ZXEmIzgyMTc7IG9wZXJhdG9yIGJlY29tZXMg bW9yZSB1c2VmdWwgYmVjYXVzZSB5b3UgYXJlIGNvbXBhcmluZyBhIHNpbmdsZSBwYXJlbnQg Y2F0ZWdvcnkuPC9wPgoKCTxwPllvdSBjYW4gdXNlIDxzcGFuIGNsYXNzPSJjYXBzIj5DQVQ8 L3NwYW4+IGFuZCA8c3BhbiBjbGFzcz0iY2FwcyI+TFZMPC9zcGFuPiBpbiBjb21iaW5hdGlv biwgaW5kZXBlbmRlbnRseSBvciBub3QgYXQgYWxsLiBUaGlzIGFsbG93cyBjb21wYXJpc29u cyBzdWNoIGFzICYjODIyMDtpZiB0aGUgMm5kIHN1Yi1jYXRlZ29yeSBvZiBjYXRlZ29yeTEg ZXF1YWxzIGJsYWhibGFoJiM4MjIxOyBvciAmIzgyMjA7aWYgY2F0ZWdvcnkyIGlzIGEgY2hp bGQgb2YgYmxhaGJsYWgmIzgyMjE7LiBTZWUgPGEgaHJlZj0iI2VnNCI+RXhhbXBsZSA0PC9h Pi48L3A+CgoJPGg0IGNsYXNzPSJhdHQtbmFtZSAiIGlkPSJvcGVyYXRvciI+b3BlcmF0b3I8 L2g0PgoKCTxwPkxpc3Qgb2Ygb3BlcmF0b3JzIHRvIGFwcGx5LCBpbiBvcmRlciwgdG8gZWFj aCBmaWVsZC4gQ2hvb3NlIGZyb206PC9wPgoKCTx1bD4KCQk8bGk+PGNvZGU+ZXE8L2NvZGU+ IEVxdWFsICh0aGUgZGVmYXVsdCBmb3IgYWxsIGV4Y2VwdCAmIzgyMTY7cGFyZW50JiM4MjE3 Oyk8L2xpPgoJCTxsaT48Y29kZT5ub3Q8L2NvZGU+IE5vdCBlcXVhbDwvbGk+CgkJPGxpPjxj b2RlPmx0PC9jb2RlPiBMZXNzIHRoYW48L2xpPgoJCTxsaT48Y29kZT5ndDwvY29kZT4gR3Jl YXRlciB0aGFuPC9saT4KCQk8bGk+PGNvZGU+bGU8L2NvZGU+IExlc3MgdGhhbiBvciBlcXVh bCB0bzwvbGk+CgkJPGxpPjxjb2RlPmdlPC9jb2RlPiBHcmVhdGVyIHRoYW4gb3IgZXF1YWwg dG88L2xpPgoJCTxsaT48Y29kZT5iZWdpbnM8L2NvZGU+IFZhcmlhYmxlIGJlZ2lucyB3aXRo IGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVyczwvbGk+CgkJPGxpPjxjb2RlPmNvbnRhaW5zPC9j b2RlPiBWYXJpYWJsZSBjb250YWlucyBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgKGRlZmF1 bHQgZm9yICYjODIxNjtwYXJlbnQmIzgyMTc7KTwvbGk+CgkJPGxpPjxjb2RlPmlzbnVtPC9j b2RlPiBWYXJpYWJsZSBpcyBhIG51bWJlcjwvbGk+CgkJPGxpPjxjb2RlPmlzZW1wdHk8L2Nv ZGU+IFZhcmlhYmxlIGlzIGVtcHR5IChjb250YWlucyBub3RoaW5nKTwvbGk+CgkJPGxpPjxj b2RlPmlzdXNlZDwvY29kZT4gVmFyaWFibGUgaGFzIHNvbWUgdmFsdWU8L2xpPgoJCTxsaT48 Y29kZT5kZWZpbmVkPC9jb2RlPiBWYXJpYWJsZSBpcyBzZXQgKHVzZWZ1bCB3aXRoIHVybHZh ciB2YXJpYWJsZXMpPC9saT4KCQk8bGk+PGNvZGU+dW5kZWZpbmVkPC9jb2RlPiBWYXJpYWJs ZSBpcyBub3Qgc2V0LCBvciBtaXNzaW5nIGZyb20gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5V Ukw8L3NwYW4+IGxpbmU8L2xpPgoJPC91bD4KCgk8cD5XaXRoIHRoZSBjb21wYXJpc29uIG9w ZXJhdG9ycyAoZ3QsIGx0LCBnZSwgbGUpIHlvdSBtYXkgZmluZCBvZGQgYmVoYXZpb3VyIHdo ZW4gY29tcGFyaW5nIG51bWJlcnMuIEZvciBleGFtcGxlLCA8Y29kZT51cmx2YXI6cGljIGd0 IDY8L2NvZGU+IHdpbGwgcmV0dXJuIDxzcGFuIGNsYXNzPSJjYXBzIj5UUlVFPC9zcGFuPiBp ZiB0aGUgPGNvZGU+cGljPC9jb2RlPiB2YXJpYWJsZSBpcyBzZXQgdG8gJiM4MjIwO2ZyZWQm IzgyMjE7LiBUaGlzIGlzIGJlY2F1c2UgdGhlIHdvcmQgJiM4MjIwO2ZyZWQmIzgyMjE7IChv ciBhdCBsZWFzdCB0aGUgJiM4MjIwO2NoYXJhY3RlciBmJiM4MjIxOykgaXMgZ3JlYXRlciBp biB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkFTQ0lJPC9zcGFuPiB0YWJsZSB0aGFuIHRoZSAm IzgyMjA7Y2hhcmFjdGVyIDYmIzgyMjE7LjwvcD4KCgk8cD5UbyBjaXJjdW12ZW50IHRoaXMg cHJvYmxlbSwgeW91IG1heSBhcHBlbmQgPGNvZGU+Ok5VTTwvY29kZT4gdG8gdGhlIGVuZCBv ZiBhbnkgb2YgdGhlc2UgNCBvcGVyYXRvcnMgdG8gZm9yY2UgdGhlIHBsdWdpbiB0byBjaGVj ayB0aGF0IHRoZSB2YWx1ZXMgYXJlIGludGVnZXJzLjwvcD4KCgk8cD5Ob3RlIHRoYXQgd2hp bGUgPGNvZGU+ZGVmaW5lZDwvY29kZT4gYW5kIDxjb2RlPnVuZGVmaW5lZDwvY29kZT4gZGlm ZmVyIHNlbWFudGljYWxseSBmcm9tIDxjb2RlPmlzdXNlZDwvY29kZT4gYW5kIDxjb2RlPmlz ZW1wdHk8L2NvZGU+IChyZXNwZWN0aXZlbHkpLCB0aGUgd2F5IDxzcGFuIGNsYXNzPSJjYXBz Ij5UWFA8L3NwYW4+IGFzc2lnbnMgYXJ0aWNsZSB2YXJpYWJsZXMgbWVhbnMgdGhhdCwgZm9y IHRoZSBtb3N0IHBhcnQsIHRoZSB0ZXJtcyBhcmUgaW50ZXJjaGFuZ2VhYmxlLiBPbmUgY2F2 ZWF0IGlzIHRoYXQgPGNvZGU+ZGVmaW5lZDwvY29kZT4gYW5kIDxjb2RlPnVuZGVmaW5lZDwv Y29kZT4gZG9uJiM4MjE3O3QgbWFrZSBzZW5zZSB3aXRoIDxjb2RlPnBhcmVudDwvY29kZT4s IHNvIHRoZXkgYXJlIGZvcmJpZGRlbi4gV2hlbiBkZWFsaW5nIHdpdGggdXJsdmFycyBhbmQg c3ZydmFycywgdGhlIHR3byBzZXRzIG9mIG9wZXJhdG9ycyBiZWhhdmUgZGlmZmVyZW50bHku IFNlZSA8YSBocmVmPSIjZWc1Ij5FeGFtcGxlIDU8L2E+IGZvciBtb3JlLjwvcD4KCgk8aDQg Y2xhc3M9ImF0dC1uYW1lICIgaWQ9InZhbHVlIj52YWx1ZTwvaDQ+CgoJPHA+TGlzdCBvZiB2 YWx1ZXMgdG8gY29tcGFyZSBlYWNoIGZpZWxkIGluIHR1cm4gdG8uIENhbiBiZSBzdGF0aWMg dmFsdWVzL3RleHQgb3IgdGhlIG5hbWUgb2YgYW55IDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8 L3NwYW4+IGZpZWxkLCBsaWtlIHRob3NlIGdpdmVuIGluIDxhIGhyZWY9IiNmaWVsZCI+Zmll bGQ8L2E+IChleGNlcHQgJiM4MjIwO3BhcmVudCYjODIyMTspLjwvcD4KCgk8cD5UbyBkaXN0 aW5ndWlzaCBhIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZpZWxkIGZyb20gc3Rh dGljIHRleHQsIHByZWZpeCB0aGUgZmllbGQgbmFtZSB3aXRoIDxjb2RlPj88L2NvZGU+LiBG b3IgZXhhbXBsZTogPGNvZGU+dmFsdWU9JiMzNDt0aXRsZSYjMzQ7PC9jb2RlPiB3aWxsIGNv bXBhcmUgeW91ciBjaG9zZW4gZmllbGQgYWdhaW5zdCB0aGUgd29yZCAmIzgyMjA7dGl0bGUm IzgyMjE7LCB3aGVyZWFzIDxjb2RlPnZhbHVlPSYjMzQ7P3RpdGxlJiMzNDs8L2NvZGU+IHdp bGwgY29tcGFyZSB5b3VyIGZpZWxkIGFnYWluc3QgdGhlIGFydGljbGUmIzgyMTc7cyB0aXRs ZS48L3A+CgoJPHA+Tm90ZSB0aGF0IHlvdSBtYXkgZmluZCB1c2luZyBkb3VibGUtcXVvdGVz IGluIGZpZWxkcyBnaXZlcyB1bmV4cGVjdGVkIHJlc3VsdHMuIFRoZXkgYXJlIGJlc3QgYXZv aWRlZCwgb3Igd29ya2VkIGFyb3VuZCBieSB1c2luZyA8Y29kZT5jb250YWluczwvY29kZT4g aW5zdGVhZCBvZiA8Y29kZT5lcTwvY29kZT4uPC9wPgoKCTxoNCBjbGFzcz0iYXR0LW5hbWUg IiBpZD0ibG9naWMiPmxvZ2ljPC9oND4KCgk8cD5DYW4gYmUgb25lIG9mIDxjb2RlPmFuZDwv Y29kZT4gKHRoZSBkZWZhdWx0KSBvciA8Y29kZT5vcjwvY29kZT4uIElmIHVzaW5nIDxjb2Rl PmFuZDwvY29kZT4sIGFsbCBjb25kaXRpb25zIG11c3QgYmUgbWV0IGZvciBhIDxzcGFuIGNs YXNzPSJjYXBzIj5UUlVFPC9zcGFuPiByZXN1bHQuIElmIHVzaW5nIDxjb2RlPm9yPC9jb2Rl PiwgYW55IG9mIHRoZSBjb25kaXRpb25zIHRoYXQgbWF0Y2ggd2lsbCBnaXZlIGEgPHNwYW4g Y2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+IHJlc3VsdC48L3A+CgoJPGg0IGNsYXNzPSJhdHQt bmFtZSAiIGlkPSJjYXNlc2Vuc2UiPmNhc2Vfc2Vuc2l0aXZlPC9oND4KCgk8cD5CeSBkZWZh dWx0LCBhbGwgY29tcGFyaXNvbnMgYXJlIGNhc2UtaW5zZW5zaXRpdmUgKDApLiBJZiB5b3Ug d2lzaCB0byBtYWtlIHRoZW0gc2Vuc2l0aXZlIHRvIGNhcHRpbGlzYXRpb24sIHNwZWNpZnkg PGNvZGU+Y2FzZV9zZW5zaXRpdmU9JiMzNDsxJiMzNDs8L2NvZGU+PC9wPgoKCTxoNCBjbGFz cz0iYXR0LW5hbWUgIiBpZD0icGFyYW1kZWxpbSI+cGFyYW1fZGVsaW08L2g0PgoKCTxwPllv dSBub3JtYWxseSBzcGVjaWZ5IGNvbW1hLXNlcGFyYXRlZCBsaXN0cyB0byB0aGUgZmllbGQs IG9wZXJhdG9yIGFuZCB2YWx1ZSBwYXJhbWV0ZXJzLiBTb21ldGltZXMgdGhpcyBtaWdodCBu b3QgYmUgZGVzaXJhYmxlIGlmIHlvdSBoYXZlIHVzZWQgdGhhdCBjaGFyYWN0ZXIgaW4gdGhl IG5hbWUgb2YgYSBjdXN0b20gZmllbGQsIGZvciBleGFtcGxlLiBUaGlzIG9wdGlvbiBhbGxv d3MgeW91IHRvIGNoYW5nZSB0aGUgZGVsaW1pdGVyIHRvIGFsbW9zdCBhbnl0aGluZyB5b3Ug bGlrZSwgZS5nLiBzcGVjaWZ5aW5nIDxjb2RlPnBhcmFtX2RlbGltPSYjMzQ7Ly8mIzM0Ozwv Y29kZT4gbWVhbnMgeW91IHdvdWxkIHNwZWNpZnkgPGVtPmFsbDwvZW0+IHlvdXIgcGFyYW1l dGVyIGxpc3RzIGxpa2UgdGhpczo8L3A+CgoJPHA+PGNvZGU+ZmllbGQ9JiMzNDtzZWN0aW9u IC8vIHVybHZhcjp0eXBlJiMzNDsgb3BlcmF0b3I9JiMzNDtlcSAvLyBiZWdpbnMmIzM0OyB2 YWx1ZT0mIzM0O2FuaW1hbHMgLy8gdGlnZXImIzM0OzwvY29kZT48L3A+CgoJPGg0IGNsYXNz PSJhdHQtbmFtZSAiIGlkPSJtb2RkZWxpbSI+bW9kX2RlbGltPC9oND4KCgk8cD5WZXJ5IHNp bWlsYXIgdG8gPGEgaHJlZj0iI3BhcmFtZGVsaW0iPnBhcmFtX2RlbGltPC9hPiwgdGhpcyBn b3Zlcm5zIHRoZSBkZWxpbWl0ZXIgdG8gdXNlIGJldHdlZW4gYW4gb3B0aW9uIGFuZCBpdHMg bW9kaWZpZXIgKGUuZy4gdGhlIHRoaW5nIHNlcGFyYXRpbmcgdXJsdmFyIG9yIHN2cnZhciBm cm9tIHRoZSB2YXJpYWJsZSBuYW1lLCBvciBwYXJlbnQgZnJvbSA8Y29kZT5MVkw8L2NvZGU+ IGFuZCA8Y29kZT5DQVQ8L2NvZGU+LCBhbmQgYWxzbyB0aGUgY2hhcmFjdGVyKHMpIHRoYXQg c2VwYXJhdGUgYSBudW1lcmljYWwgb3BlcmF0b3IgZnJvbSB0aGUgPHNwYW4gY2xhc3M9ImNh cHMiPk5VTTwvc3Bhbj4gbW9kaWZpZXIpLiBJdCBpcyB0aGUgY29sb24gKDopIGJ5IGRlZmF1 bHQuPC9wPgoKCTxwPk5vdGUgdGhhdCBpbiBib3RoICYjODIxNjtkZWxpbSYjODIxNzsgYXR0 cmlidXRlcywgc29tZSBjaGFyYWN0ZXIgc2VxdWVuY2VzIG1heSBjYXVzZSBwcm9ibGVtcyAo cXVvdGVzICYjODIxMjsgc2luZ2xlIG9yIGRvdWJsZSAmIzgyMTI7IHNwcmluZyB0byBtaW5k OyBvdGhlcnMgbGlrZSBwYXJlbnRoZXNlcyBtYXkgYWxzbyBjYXVzZSB0aGUgcGx1Z2luIHRv IGV4cGxvZGUpLjwvcD4KCgk8aDI+RXhhbXBsZXM8L2gyPgoKCTxoMyBpZD0iZWcxIj5FeGFt cGxlIDE8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+JiM2 MDt0eHA6c21kX2lmIGZpZWxkPSYjMzQ7c2VjdGlvbiwgaWQmIzM0OwogICAgIG9wZXJhdG9y PSYjMzQ7YmVnaW5zLCBndCYjMzQ7CiAgICAgdmFsdWU9JiMzNDtsaW9uLCAxMiYjMzQ7JiM2 MjsKICYjNjA7dHhwOmFydGljbGUgLyYjNjI7CiYjNjA7dHhwOmVsc2UgLyYjNjI7CiAmIzYw O3AmIzYyO05vdCB0b2RheSwgdGhhbmtzJiM2MDsvcCYjNjI7CiYjNjA7L3R4cDpzbWRfaWYm IzYyOwo8L2NvZGU+PC9wcmU+CgoJPHA+Q2hlY2tzIGlmIHRoZSBjdXJyZW50IHNlY3Rpb24g bmFtZSBiZWdpbnMgd2l0aCB0aGUgd29yZCAmIzgyMjA7bGlvbiYjODIyMTsgYW5kIHRoZSBh cnRpY2xlIElEIGlzIGdyZWF0ZXIgdGhhbiAxMi4gRGlzcGxheXMgdGhlIGFydGljbGUgaWYg Ym90aCBjb25kaXRpb25zIGFyZSBtZXQgb3IgZGlzcGxheXMgdGhlIHRleHQgJiM4MjIwO05v dCB0b2RheSwgdGhhbmtzJiM4MjIxOyBpZiBub3QuPC9wPgoKCTxoMyBpZD0iZWcyIj5FeGFt cGxlIDI8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+JiM2 MDt0eHA6c21kX2lmIGZpZWxkPSYjMzQ7c3VtbWFyeSwgY2F0ZWdvcnksIHVybHZhcjpwaWMm IzM0OwogICAgIG9wZXJhdG9yPSYjMzQ7aXN1c2VkLCBlcSwgaXNudW0mIzM0OwogICAgIHZh bHVlPSYjMzQ7LCBhbmltYWwgLCYjMzQ7ICYjNjI7CiAmIzYwO3R4cDphcnRpY2xlIC8mIzYy OwomIzYwO3R4cDplbHNlIC8mIzYyOwogJiM2MDtwJiM2MjtOb3QgdG9kYXksIHRoYW5rcyYj NjA7L3AmIzYyOwomIzYwOy90eHA6c21kX2lmJiM2MjsKPC9jb2RlPjwvcHJlPgoKCTxwPkNo ZWNrcyBpZiB0aGUgY3VzdG9tIGZpZWxkIGxhYmVsbGVkICYjODIyMDtzdW1tYXJ5JiM4MjIx OyBoYXMgc29tZSBkYXRhIGluIGl0LCBjaGVja3MgaWYgdGhlIGdsb2JhbCBjYXRlZ29yeSBl cXVhbHMgJiM4MjIwO2FuaW1hbCYjODIyMTsgYW5kIHRlc3RzIGlmIHRoZSB1cmx2YXIgPGNv ZGU+cGljPC9jb2RlPiBpcyBudW1lcmljIChlLmcuIDxjb2RlPj9waWM9NTwvY29kZT4pLjwv cD4KCgk8cD5JZiBhbGwgdGhlc2UgY29uZGl0aW9ucyBhcmUgbWV0IHRoZSBhcnRpY2xlIGlz IGRpc3BsYXllZCwgZWxzZSB0aGUgbWVzc2FnZSBpcyBzaG93bi4gTm90ZSB0aGF0IDxjb2Rl PmlzdXNlZDwvY29kZT4gYW5kIDxjb2RlPmlzbnVtPC9jb2RlPiBkb24mIzgyMTc7dCB0YWtl IGFyZ3VtZW50cyBmb3IgPGNvZGU+dmFsdWU8L2NvZGU+IGFuZCB0aGVpciBwb3NpdGlvbnMg YXJlIGhlbGQgYnkgZW1wdHkgY29tbWFzICh0ZWNobmljYWxseSB0aGUgbGFzdCBjb21tYSBp c24mIzgyMTc7dCBuZWVkZWQgYnV0IGl0IGhlbHBzIGtlZXAgZXZlcnl0aGluZyBuZWF0IGlm IHlvdSBhZGQgZnVydGhlciB0ZXN0cyBsYXRlciBvbikuPC9wPgoKCTxoMyBpZD0iZWczIj5F eGFtcGxlIDM8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+ JiM2MDt0eHA6c21kX2lmIGZpZWxkPSYjMzQ7YXJ0aWNsZV9pbWFnZSwgc3ZydmFyOkhUVFBf VVNFUl9BR0VOVCYjMzQ7CiAgICAgb3BlcmF0b3I9JiMzNDtlcSwgY29udGFpbnMmIzM0Owog ICAgIHZhbHVlPSYjMzQ7dXJsdmFyOnBpYywgU2FmYXJpJiMzNDsKICAgICBsb2dpYz0mIzM0 O29yJiMzNDsmIzYyOwogJiM2MDt0eHA6YXJ0aWNsZSAvJiM2MjsKJiM2MDt0eHA6ZWxzZSAv JiM2MjsKICYjNjA7cCYjNjI7Tm90IHRvZGF5LCB0aGFua3MmIzYwOy9wJiM2MjsKJiM2MDsv dHhwOnNtZF9pZiYjNjI7CjwvY29kZT48L3ByZT4KCgk8cD5Db21wYXJlcyAoZm9yIGVxdWFs aXR5KSB0aGUgY3VycmVudCBhcnRpY2xlIGltYWdlIGlkIHdpdGggdGhlIHZhbHVlIG9mIHRo ZSB1cmwgdmFyaWFibGUgPGNvZGU+cGljPC9jb2RlPiBhbmQgY2hlY2tzIGlmIHRoZSB2YWx1 ZSBvZiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUVFA8L3NwYW4+X1VTRVJfQUdFTlQgc3Ry aW5nIGNvbnRhaW5zICYjODIyMDtTYWZhcmkmIzgyMjE7LiBUaGlzIGV4YW1wbGUgdXNlcyB0 aGUgJiM4MjE2O29yJiM4MjE3OyBsb2dpYywgaGVuY2UgaWYgPGVtPmVpdGhlcjwvZW0+IGNv bmRpdGlvbiBpcyBtZXQgdGhlIGFydGljbGUgaXMgc2hvd24sIG90aGVyd2lzZSB0aGUgJiM4 MjE2O25vdCB0b2RheSYjODIxNzsgbWVzc2FnZSBpcyBkaXNwbGF5ZWQuPC9wPgoKCTxoMyBp ZD0iZWc0Ij5FeGFtcGxlIDQ8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNz PSJibG9jayI+JiM2MDt0eHA6c21kX2lmIGZpZWxkPSYjMzQ7cGFyZW50OkxWTDImIzM0Owog ICAgIG9wZXJhdG9yPSYjMzQ7ZXEmIzM0OwogICAgIHZhbHVlPSYjMzQ7bWFtbWFsJiMzNDsm IzYyOwogJiM2MDt0eHA6YXJ0aWNsZSAvJiM2MjsKJiM2MDt0eHA6ZWxzZSAvJiM2MjsKICYj NjA7cCYjNjI7Tm90IHRvZGF5LCB0aGFua3MmIzYwOy9wJiM2MjsKJiM2MDsvdHhwOnNtZF9p ZiYjNjI7CjwvY29kZT48L3ByZT4KCgk8cD5DaGVja3MgdGhlIDJuZCBzdWItY2F0ZWdvcnkg b2YgdGhlIGdsb2JhbCBjYXRlZ29yeSYjODIxNztzIHRyZWUgdG8gc2VlIGlmIGl0IGVxdWFs cyAmIzgyMjA7bWFtbWFsJiM4MjIxOy4gSWYgaXQgZG9lcywgc2hvdyB0aGUgYXJ0aWNsZTsg aWYgbm90IHNob3cgdGhlIG1lc3NhZ2UuIFJlbW92aW5nIHRoZSA8Y29kZT46TFZMMjwvY29k ZT4gKHdoaWNoIGFsbG93cyB5b3UgdG8gYWxzbyByZW1vdmUgdGhlIG9wZXJhdG9yIHBhcmFt ZXRlciB0byBmb3JjZSB0aGUgY29tcGFyaXNvbiB0byBiZSAmIzgyMjA7Y29udGFpbnMmIzgy MjE7KSBjaGVja3MgaWYgdGhlIGN1cnJlbnQgZ2xvYmFsIGNhdGVnb3J5IGlzIGEgY2hpbGQg b2YgJiM4MjE2O21hbW1hbCYjODIxNzsgKGF0IGFueSBsZXZlbCkuPC9wPgoKCTxwPkNoYW5n ZSB0aGUgZmllbGQgdG8gPGNvZGU+cGFyZW50OkNBVDE8L2NvZGU+IHRvIHNlZSBpZiB0aGUg YXJ0aWNsZSYjODIxNztzIGNhdGVnb3J5MSBtYXRjaGVzICYjODIxNjttYW1tYWwmIzgyMTc7 IGF0IGFueSBsZXZlbCwgb3IgdXNlIDxjb2RlPmZpZWxkPSYjMzQ7cGFyZW50OkNBVDE6TFZM MiYjMzQ7PC9jb2RlPiB0byBjb21iaW5lIHRoZSBjaGVja3MuPC9wPgoKCTxoMyBpZD0iZWc1 Ij5FeGFtcGxlIDU8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9j ayI+JiM2MDt0eHA6c21kX2lmIGZpZWxkPSYjMzQ7dXJsdmFyOnBpYywgdXJsdmFyOnBhZ2Um IzM0OwogICAgIG9wZXJhdG9yPSYjMzQ7Z3Q6TlVNLCB1bmRlZmluZWQmIzM0OwogICAgIHZh bHVlPSYjMzQ7P2FydGljbGVfaW1hZ2UsJiMzNDsmIzYyOwogJiM2MDt0eHA6YXJ0aWNsZSAv JiM2MjsKJiM2MDt0eHA6ZWxzZSAvJiM2MjsKICYjNjA7cCYjNjI7Tm90IHRvZGF5LCB0aGFu a3MmIzYwOy9wJiM2MjsKJiM2MDsvdHhwOnNtZF9pZiYjNjI7CjwvY29kZT48L3ByZT4KCgk8 cD5UZXN0cyBpZiB0aGUgdXJsIHZhcmlhYmxlIDxjb2RlPnBpYzwvY29kZT4gaXMgc3RyaWN0 bHkgbnVtZXJpY2FsbHkgZ3JlYXRlciB0aGFuIHRoZSB2YWx1ZSBpbiB0aGUgY3VycmVudCBh cnRpY2xlJiM4MjE3O3MgPGNvZGU+YXJ0aWNsZV9pbWFnZTwvY29kZT4gZmllbGQgYW5kIHRo YXQgdGhlIHVybCB2YXJpYWJsZSA8Y29kZT5wYWdlPC9jb2RlPiBpcyBtaXNzaW5nIGZyb20g dGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGFkZHJlc3MuIENvbXBhcmUgdGhl IG91dGNvbWUgb2YgdGhpcyB0ZXN0IHdpdGggdGhlIG90aGVyIG9wZXJhdG9ycyB1c2luZyB0 aGUgZm9sbG93aW5nIHRhYmxlIHdoZW4gdGVzdGluZyB0aGUgPGNvZGU+cGFnZTwvY29kZT4g dXJsdmFyOjwvcD4KCgk8dGFibGU+CgkJPHRyPgoJCQk8dGg+PHNwYW4gY2xhc3M9ImNhcHMi PjxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+PC9zcGFuPiA8L3RoPgoJCQk8dGg+ZGVm aW5lZCA8L3RoPgoJCQk8dGg+dW5kZWZpbmVkIDwvdGg+CgkJCTx0aD5pc3VzZWQgPC90aD4K CQkJPHRoPmlzZW1wdHkgPC90aD4KCQk8L3RyPgoJCTx0cj4KCQkJPHRkPiBpbmRleC5waHA/ cGFnIDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBz Ij5GQUxTRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMi PjxzcGFuIGNsYXNzPSJjYXBzIj5UUlVFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQkJPHRkPiA8 c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPkZBTFNFPC9zcGFuPjwvc3Bh bj4gPC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMi PkZBTFNFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQk8L3RyPgoJCTx0cj4KCQkJPHRkPiBpbmRl eC5waHA/cGFnZT0gPC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xh c3M9ImNhcHMiPlRSVUU8L3NwYW4+PC9zcGFuPiA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNz PSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+RkFMU0U8L3NwYW4+PC9zcGFuPiA8L3RkPgoJ CQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+RkFMU0U8L3Nw YW4+PC9zcGFuPiA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFz cz0iY2FwcyI+VFJVRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJPC90cj4KCQk8dHI+CgkJCTx0 ZD4gaW5kZXgucGhwP3BhZ2U9NCA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48 c3BhbiBjbGFzcz0iY2FwcyI+VFJVRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJCTx0ZD4gPHNw YW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5GQUxTRTwvc3Bhbj48L3NwYW4+ IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5U UlVFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNw YW4gY2xhc3M9ImNhcHMiPkZBTFNFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQk8L3RyPgoJPC90 YWJsZT4KCgk8aDIgY2xhc3M9ImNoYW5nZWxvZyI+Q2hhbmdlbG9nPC9oMj4KCgk8dWw+CgkJ PGxpPjMwIERlYyAwNyB8IDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9kb3dubG9h ZHMvc21kX2lmX3YwLjEudHh0Ij52MC4xPC9hPiB8IEluaXRpYWwgcmVsZWFzZTwvbGk+CgkJ PGxpPjMwIERlYyAwNyB8IDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9kb3dubG9h ZHMvc21kX2lmX3YwLjIudHh0Ij52MC4yPC9hPiB8IEFkZGVkIHBhcmVudCBjYXRlZ29yeSBj aGVja2luZyAodGhhbmtzIHRoZV9naG9zdCk8L2xpPgoJCTxsaT4wMiBKYW4gMDggfCA8YSBo cmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vZG93bmxvYWRzL3NtZF9pZl92MC4zLnR4dCI+ djAuMzwvYT4gfCBBZGRlZCBkZWZpbmVkL3VuZGVmaW5lZCBhbmQgc3RyaWN0IG51bWVyaWMg Y29tcGFyaXNvbnM8L2xpPgoJCTxsaT4wNiBKYW4gMDggfCA8YSBocmVmPSJodHRwOi8vc3Rl ZmRhd3Nvbi5jb20vZG93bmxvYWRzL3NtZF9pZl92MC40LnR4dCI+djAuNDwvYT4gfCBBZGRl ZCA8Y29kZT4/PC9jb2RlPiBub3RhdGlvbiB0byBhbGxvdyB0aGUgdmFsdWUgdG8gcmVhZCA8 c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmaWVsZHM7IGJldHRlciBxdW90ZSBzdXBw b3J0IChib3RoIHRoYW5rcyBOZWlsQSk8L2xpPgoJCTxsaT4wNiBKYW4gMDggfCA8YSBocmVm PSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vZG93bmxvYWRzL3NtZF9pZl92MC40MS50eHQiPnYw LjQxPC9hPiB8IEZpeGVkIGxvd2VyIGNhc2UgZmllbGQgbmFtZXMgYW5kIHVuZGVmaW5lZCBp bmRleCBlcnJvciAodGhhbmtzIHBldGVyaik8L2xpPgoJCTxsaT4xNCBKYW4gMDggfCA8YSBo cmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vZG93bmxvYWRzL3NtZF9pZl92MC41LnR4dCI+ djAuNTwvYT4gfCBBZGRlZCBjYXNlX3NlbnNpdGl2ZSBvcHRpb247IG1hZGUgJiM4MjE2O2Nv bnRhaW5zJiM4MjE3OyB0aGUgZGVmYXVsdCBmb3IgJiM4MjE2O3BhcmVudCYjODIxNzsgdGVz dHM7IGltcHJvdmVkIGhlbHAgKGFsbCB0aGFua3MgdGhlX2dob3N0KTsgYWRkZWQgZGVsaW0g b3B0aW9uczwvbGk+CgkJPGxpPjE1IEphbiAwOCB8IDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3 c29uLmNvbS9kb3dubG9hZHMvc21kX2lmX3YwLjUxLnR4dCI+djAuNTE8L2E+IHwgRml4ZWQg ZGVmaW5lZC91bmRlZmluZWQgc3ludGF4IGVycm9yOyB0aWdodGVuZWQgaXN1c2VkL2lzZW1w dHkgdG8gZGlzdGluZ3Vpc2ggdGhlbSBmcm9tIGRlZmluZWQvdW5kZWZpbmVkPGJyIC8+Cjwv ZGl2PjwvbGk+Cgk8L3VsPgo8IS0tIC0tLSBCRUdJTiBQTFVHSU4gQ1NTIC0tLSAtLT4KPHN0 eWxlIHR5cGU9InRleHQvY3NzIj4KI3NtZF9oZWxwIHsgbGluZS1oZWlnaHQ6MS4zIDt9CiNz bWRfaGVscCBjb2RlIHsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udDogMTA1JS8xMzAlICJDb3Vy aWVyIE5ldyIsIGNvdXJpZXIsIG1vbm9zcGFjZTsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZD Qzt9CiNzbWRfaGVscCBjb2RlLmJsb2NrIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3JkZXI6 MXB4IGRvdHRlZCAjOTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBlNjhjOyBkaXNwbGF5OmJs b2NrOyBtYXJnaW46MTBweCAxMHB4IDIwcHg7IHBhZGRpbmc6MTBweDsgfQojc21kX2hlbHAg YTpsaW5rLCAjc21kX2hlbHAgYTp2aXNpdGVkIHsgY29sb3I6IGJsdWU7IHRleHQtZGVjb3Jh dGlvbjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90 dG9tOjFweDt9CiNzbWRfaGVscCBhOmhvdmVyLCAjc21kX2hlbHAgYTphY3RpdmUgeyBjb2xv cjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAycHggc29s aWQgYmx1ZTsgcGFkZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGgxIHsgY29sb3I6ICMz Njk7IGZvbnQ6IDIwcHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgbWFyZ2luOiAwOyB0ZXh0LWFs aWduOiBjZW50ZXI7IH0KI3NtZF9oZWxwIGgyIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlk IGJsYWNrOyBwYWRkaW5nOjEwcHggMCAwOyBjb2xvcjogIzM2OTsgZm9udDogMTdweCBHZW9y Z2lhLCBzYW5zLXNlcmlmOyB9CiNzbWRfaGVscCBoMyB7IGNvbG9yOiAjNjkzOyBmb250OiBi b2xkIDEycHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdp bjogMTBweCAwIDA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTt9CiNzbWRfaGVscCBoNCB7 IGZvbnQ6IGJvbGQgMTFweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFw eDsgbWFyZ2luOiAxMHB4IDAgMCA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfQojc21k X2hlbHAgLmF0dC1uYW1lIHsgZm9udC13ZWlnaHQ6Ym9sZDsgfQojc21kX2hlbHAgLm1hbmQg eyBiYWNrZ3JvdW5kOiNlZWU7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IH0KI3NtZF9oZWxw IHRhYmxlIHt3aWR0aDoxMDAlOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZy1ib3R0b206 MWVtO30KI3NtZF9oZWxwIHRkLCAjc21kX2hlbHAgdGgge2JvcmRlcjoxcHggc29saWQgIzk5 OTsgcGFkZGluZzouNWVtIDA7fQo8L3N0eWxlPgo8IS0tIC0tLSBFTkQgUExVR0lOIENTUyAt LS0gLS0+CiI7czozOiJjc3MiO3M6MTI3MzoiPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KI3Nt ZF9oZWxwIHsgbGluZS1oZWlnaHQ6MS4zIDt9CiNzbWRfaGVscCBjb2RlIHsgZm9udC13ZWln aHQ6Ym9sZDsgZm9udDogMTA1JS8xMzAlICJDb3VyaWVyIE5ldyIsIGNvdXJpZXIsIG1vbm9z cGFjZTsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZDQzt9CiNzbWRfaGVscCBjb2RlLmJsb2Nr IHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3JkZXI6MXB4IGRvdHRlZCAjOTk5OyBiYWNrZ3Jv dW5kLWNvbG9yOiAjZjBlNjhjOyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46MTBweCAxMHB4IDIw cHg7IHBhZGRpbmc6MTBweDsgfQojc21kX2hlbHAgYTpsaW5rLCAjc21kX2hlbHAgYTp2aXNp dGVkIHsgY29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyLWJvdHRv bTogMXB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNzbWRfaGVscCBhOmhv dmVyLCAjc21kX2hlbHAgYTphY3RpdmUgeyBjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9u OiBub25lOyBib3JkZXItYm90dG9tOiAycHggc29saWQgYmx1ZTsgcGFkZGluZy1ib3R0b206 MXB4O30KI3NtZF9oZWxwIGgxIHsgY29sb3I6ICMzNjk7IGZvbnQ6IDIwcHggR2VvcmdpYSwg c2Fucy1zZXJpZjsgbWFyZ2luOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KI3NtZF9oZWxw IGgyIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOjEwcHggMCAw OyBjb2xvcjogIzM2OTsgZm9udDogMTdweCBHZW9yZ2lhLCBzYW5zLXNlcmlmOyB9CiNzbWRf aGVscCBoMyB7IGNvbG9yOiAjNjkzOyBmb250OiBib2xkIDEycHggQXJpYWwsIHNhbnMtc2Vy aWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDA7dGV4dC10cmFuc2Zv cm06IHVwcGVyY2FzZTt9CiNzbWRfaGVscCBoNCB7IGZvbnQ6IGJvbGQgMTFweCBBcmlhbCwg c2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMCA7dGV4 dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfQojc21kX2hlbHAgLmF0dC1uYW1lIHsgZm9udC13 ZWlnaHQ6Ym9sZDsgfQojc21kX2hlbHAgLm1hbmQgeyBiYWNrZ3JvdW5kOiNlZWU7IGJvcmRl cjoxcHggZG90dGVkICM5OTk7IH0KI3NtZF9oZWxwIHRhYmxlIHt3aWR0aDoxMDAlOyB0ZXh0 LWFsaWduOmNlbnRlcjsgcGFkZGluZy1ib3R0b206MWVtO30KI3NtZF9oZWxwIHRkLCAjc21k X2hlbHAgdGgge2JvcmRlcjoxcHggc29saWQgIzk5OTsgcGFkZGluZzouNWVtIDA7fQo8L3N0 eWxlPiI7czo0OiJjb2RlIjtzOjU4NzU6ImZ1bmN0aW9uIHNtZF9pZigkYXR0cywkdGhpbmcp IHsKCWdsb2JhbCAkdGhpc2FydGljbGUsICRwcmV0ZXh0OwoKCWV4dHJhY3QobEF0dHMoYXJy YXkoCgkJJ2ZpZWxkJyA9PiAnJywKCQknb3BlcmF0b3InID0+ICcnLAoJCSd2YWx1ZScgPT4g JycsCgkJJ2xvZ2ljJyA9PiAnYW5kJywKCQknY2FzZV9zZW5zaXRpdmUnID0+IDAsCgkJJ3Bh cmFtX2RlbGltJyA9PiAnLCcsCgkJJ21vZF9kZWxpbScgPT4gJzonLAoJCSdkZWJ1ZycgPT4g JzAnLAoJKSwgJGF0dHMpKTsKCgkvLyBTcGVjaWFsIGZpZWxkIG5hbWVzIHRoYXQgcmVmZXIg dG8gJHByZXRleHQgb3IgZWxzZXdoZXJlIC0gZXZlcnl0aGluZyBlbHNlIGlzIGFzc3VtZWQg dG8KCS8vIGV4aXN0IGluICR0aGlzYXJ0aWNsZSBzbyBjdXN0b20gZmllbGRzIGNhbiBiZSB1 c2VkCgkkYWxsUHR4dCA9IGFycmF5KAoJCSJpZCIgPT4gJyRwcmV0ZXh0WyJpZCJdJywKCQki c2VjdGlvbiIgPT4gJyRwcmV0ZXh0WyJzIl0nLAoJCSJjYXRlZ29yeSIgPT4gJyRwcmV0ZXh0 WyJjIl0nLAoJCSJxdWVyeSIgPT4gJyRwcmV0ZXh0WyJxIl0nLAoJCSJwZyIgPT4gJyRwcmV0 ZXh0WyJwZyJdJywKCQkic3RhdHVzIiA9PiAnJHByZXRleHRbInN0YXR1cyJdJywKCQkibmV4 dF9pZCIgPT4gKChpc3NldCgkcHJldGV4dFsnbmV4dF9pZCddKSkgPyAnJHByZXRleHRbIm5l eHRfaWQiXScgOiAnJyksCgkJIm5leHRfdGl0bGUiID0+ICgoaXNzZXQoJHByZXRleHRbJ25l eHRfdGl0bGUnXSkpID8gJyRwcmV0ZXh0WyJuZXh0X3RpdGxlIl0nIDogJycpLAoJCSJwcmV2 X2lkIiA9PiAoKGlzc2V0KCRwcmV0ZXh0WydwcmV2X2lkJ10pKSA/ICckcHJldGV4dFsicHJl dl9pZCJdJyA6ICcnKSwKCQkicHJldl90aXRsZSIgPT4gKChpc3NldCgkcHJldGV4dFsncHJl dl90aXRsZSddKSkgPyAnJHByZXRleHRbInByZXZfdGl0bGUiXScgOiAnJyksCgkpOwoJLy8g RWFjaCBlbnRyeSBoYXMgdGhlIG9wZXJhdGlvbiB0byBiZSBldmFsKClkIGxhdGVyLCBpdCdz ICJ0eXBlIiAodGVzdCBWQUx1ZSBvciBWQVJpYWJsZSkgYW5kIGEgbGlzdCBvZiBkaXNhbGxv d2VkIGZpZWxkcwoJJGFsbE9wcyA9IGFycmF5KAoJCSdlcScgPT4gYXJyYXkoJ0ZJRUxEID09 PSBWQUxVRScsICdWQUwnLCAnJyksCgkJJ25vdCcgPT4gYXJyYXkoJ0ZJRUxEICE9PSBWQUxV RScsICdWQUwnLCAnJyksCgkJJ2d0JyA9PiBhcnJheSgnQ0FTVCBGSUVMRCA+IENBU1QgVkFM VUUnLCAnVkFMJywgJycpLAoJCSdnZScgPT4gYXJyYXkoJ0NBU1QgRklFTEQgPj0gQ0FTVCBW QUxVRScsICdWQUwnLCAnJyksCgkJJ2x0JyA9PiBhcnJheSgnQ0FTVCBGSUVMRCA8IENBU1Qg VkFMVUUnLCAnVkFMJywgJycpLAoJCSdsZScgPT4gYXJyYXkoJ0NBU1QgRklFTEQgPD0gQ0FT VCBWQUxVRScsICdWQUwnLCAnJyksCgkJJ2JlZ2lucycgPT4gYXJyYXkoJ3N0cnBvcyhGSUVM RCwgVkFMVUUpID09PSAwJywgJ1ZBTCcsICcnKSwKCQknY29udGFpbnMnID0+IGFycmF5KCdz dHJwb3MoRklFTEQsIFZBTFVFKSAhPT0gZmFsc2UnLCAnVkFMJywgJycpLAoJCSdkZWZpbmVk JyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSknLCAnVkFSJywgJ3BhcmVudCcpLAoJCSd1bmRl ZmluZWQnID0+IGFycmF5KCchaXNzZXQoVkFSTkFNRSknLCAnVkFSJywgJ3BhcmVudCcpLAoJ CSdpc251bScgPT4gYXJyYXkoJ2lzX251bWVyaWMoRklFTEQpJywgJ1ZBTCcsICcnKSwKCQkn aXNlbXB0eScgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIEZJRUxEID09ICIiJywgJ1ZB TCcsICcnKSwKCQknaXN1c2VkJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgRklFTEQg IT0gIiInLCAnVkFMJywgJycpLAoJKTsKCgkkbnVtZXJpY09wcyA9ICJndCwgZ2UsIGx0LCBs ZSI7CgkkZmllbGRzID0gZG9fbGlzdCgkZmllbGQsICRwYXJhbV9kZWxpbSk7Cgkkb3BzID0g ZG9fbGlzdCgkb3BlcmF0b3IsICRwYXJhbV9kZWxpbSk7CgkkbnVtT3BzID0gY291bnQoJG9w cyk7CgkkdmFscyA9IGRvX2xpc3QoJHZhbHVlLCAkcGFyYW1fZGVsaW0pOwoJJG51bVZhbHMg PSBjb3VudCgkdmFscyk7Cgkkb3V0ID0gYXJyYXkoKTsKCWZvciAoJGlkeCA9IDA7ICRpZHgg PCBjb3VudCgkZmllbGRzKTsgJGlkeCsrKSB7CgkJJGZsZCA9ICRmaWVsZHNbJGlkeF07CgkJ JGZsZFBhcnRzID0gZXhwbG9kZSgkbW9kX2RlbGltLCAkZmxkKTsKCQkkdmFsID0gKCRpZHgg PCAkbnVtVmFscykgPyAkdmFsc1skaWR4XSA6ICcnOwoJCSR2YWxQYXJ0cyA9IGV4cGxvZGUo JG1vZF9kZWxpbSwgJHZhbCk7CgkJJG9wID0gKCRpZHggPCAkbnVtT3BzICYmICRvcHNbJGlk eF0gIT0gJycpID8gJG9wc1skaWR4XSA6ICgoJGZsZFBhcnRzWzBdPT0icGFyZW50IikgPyAi Y29udGFpbnMiIDogImVxIik7CgkJJG9wUGFydHMgPSBleHBsb2RlKCRtb2RfZGVsaW0sICRv cCk7CgkJJG9wID0gKGFycmF5X2tleV9leGlzdHMoJG9wUGFydHNbMF0sICRhbGxPcHMpKSA/ ICRvcFBhcnRzWzBdIDogImVxIjsKCQkkY2FzdCA9ICgoY291bnQoJG9wUGFydHMpID09IDIp ICYmICgkb3BQYXJ0c1sxXSA9PT0gIk5VTSIpICYmIChpbl9saXN0KCRvcCwgJG51bWVyaWNP cHMpKSkgPyAnKGludCknIDogJyc7CgkJaWYgKCRkZWJ1ZykgewoJCQllY2hvICdURVNUICcu KCRpZHgrMSkubjsKCQkJZG1wKCRmbGRQYXJ0cywgJG9wUGFydHMsICR2YWxQYXJ0cyk7CgkJ fQoJCS8vIEdldCB0aGUgb3BlcmF0b3IgcmVwbGFjZW1lbnQgY29kZQoJCSR0eXBlID0gJGFs bE9wc1skb3BdWzFdOwoJCSRleGNsdWRlID0gZG9fbGlzdCgkYWxsT3BzWyRvcF1bMl0pOwoJ CSRvcCA9ICRhbGxPcHNbJG9wXVswXTsKCgkJLy8gQXMgbG9uZyBhcyB0aGUgY3VycmVudCBv cGVyYXRvciBhbGxvd3MgdGhpcyBmaWVsZC4uLgoJCWlmICghaW5fYXJyYXkoJGZsZFBhcnRz WzBdLCAkZXhjbHVkZSkpIHsKCQkJLy8gTWFrZSB1cCB0aGUgdGVzdCBmaWVsZCB2YXJpYWJs ZQoJCQlpZiAoYXJyYXlfa2V5X2V4aXN0cygkZmxkUGFydHNbMF0sICRhbGxQdHh0KSkgewoJ CQkJJGZsZCA9ICRhbGxQdHh0WyRmbGRQYXJ0c1swXV07CgkJCX0gZWxzZSBpZiAoJGZsZFBh cnRzWzBdID09ICJwYXJlbnQiKSB7CgkJCQkkbGV2ZWwgPSAnJzsKCQkJCWZvcmVhY2ggKCRm bGRQYXJ0cyBhcyAkcGFydCkgewoJCQkJCWlmICgkcGFydCA9PSAicGFyZW50IikgewoJCQkJ CQkkdGhlQ2F0ID0gJHByZXRleHRbJ2MnXTsKCQkJCQl9IGVsc2UgaWYgKHN0cnBvcygkcGFy dCwgIkNBVCIpID09PSAwKSB7CgkJCQkJCSR0aGVDYXQgPSAkdGhpc2FydGljbGVbImNhdGVn b3J5Ii5zdWJzdHIoJHBhcnQsIDMpXTsKCQkJCQl9IGVsc2UgaWYgKHN0cnBvcygkcGFydCwg IkxWTCIpID09PSAwKSB7CgkJCQkJCSRsZXZlbCA9IHN1YnN0cigkcGFydCwgMyk7CgkJCQkJ fQoJCQkJfQoKCQkJCSR0cmVlID0gZ2V0VHJlZVBhdGgoZG9TbGFzaCgkdGhlQ2F0KSwgJ2Fy dGljbGUnKTsKCQkJCWlmICgkZGVidWcpIHsKCQkJCQllY2hvICJDQVRFR09SWSBUUkVFOiI7 CgkJCQkJZG1wKCR0cmVlKTsKCQkJCX0KCQkJCSRpdGVtcyA9IGFycmF5KCk7CgkJCQlmb3Jl YWNoICgkdHJlZSBhcyAkbGVhZikgewoJCQkJCWlmICgkbGVhZlsnbmFtZSddID09ICJyb290 IiB8fCAkbGVhZlsnbmFtZSddID09ICR0aGVDYXQpIHsKCQkJCQkJY29udGludWU7CgkJCQkJ fSBlbHNlIGlmICgkbGV2ZWwgPT0gJycgfHwgJGxldmVsID09ICRsZWFmWydsZXZlbCddKSB7 CgkJCQkJCSRpdGVtc1tdID0gJGxlYWZbJ25hbWUnXTsKCQkJCQl9CgkJCQl9CgkJCQkkZmxk ID0gZG9RdW90ZShpbXBsb2RlKCIgIiwgJGl0ZW1zKSk7CgkJCX0gZWxzZSBpZiAoJGZsZFBh cnRzWzBdID09ICJ1cmx2YXIiKSB7CgkJCQlpZiAoY291bnQoJGZsZFBhcnRzKSA9PSAyKSB7 CgkJCQkJJGZsZCA9ICckX0dFVFsiJy4kZmxkUGFydHNbMV0uJyJdJzsKCQkJCX0KCQkJfSBl bHNlIGlmICgkZmxkUGFydHNbMF0gPT0gInN2cnZhciIpIHsKCQkJCWlmIChjb3VudCgkZmxk UGFydHMpID09IDIpIHsKCQkJCQkkZmxkID0gJyRfU0VSVkVSWyInLiRmbGRQYXJ0c1sxXS4n Il0nOwoJCQkJfQoJCQl9IGVsc2UgewoJCQkJJGZsZCA9ICckdGhpc2FydGljbGVbIicuc3Ry dG9sb3dlcigkZmxkUGFydHNbMF0pLiciXSc7CgkJCX0KCgkJCS8vIEZpbmQgdGhlIHJlYWwg dmFsdWUgdG8gY29tcGFyZSBhZ2FpbnN0IChtYXkgYmUgYW5vdGhlciBmaWVsZCkKCQkJaWYg KCR2YWxQYXJ0c1swXSA9PSAidXJsdmFyIikgewoJCQkJaWYgKGNvdW50KCR2YWxQYXJ0cykg PT0gMikgewoJCQkJCSR2YWwgPSAnJF9HRVRbIicuJHZhbFBhcnRzWzFdLiciXSc7CgkJCQl9 CgkJCX0gZWxzZSBpZiAoJHZhbFBhcnRzWzBdID09ICJzdnJ2YXIiKSB7CgkJCQlpZiAoY291 bnQoJHZhbFBhcnRzKSA9PSAyKSB7CgkJCQkJJHZhbCA9ICckX1NFUlZFUlsiJy4kdmFsUGFy dHNbMV0uJyJdJzsKCQkJCX0KCQkJfSBlbHNlIGlmIChzdHJwb3MoJHZhbFBhcnRzWzBdLCAi PyIpID09PSAwKSB7CgkJCQkkdmFsUGFydHNbMF0gPSBzdWJzdHIoc3RydG9sb3dlcigkdmFs UGFydHNbMF0pLCAxKTsKCQkJCWlmIChhcnJheV9rZXlfZXhpc3RzKCR2YWxQYXJ0c1swXSwg JGFsbFB0eHQpKSB7CgkJCQkJJHZhbCA9ICRhbGxQdHh0WyR2YWxQYXJ0c1swXV07CgkJCQl9 IGVsc2UgaWYgKGlzc2V0KCR0aGlzYXJ0aWNsZVskdmFsUGFydHNbMF1dKSkgewoJCQkJCSR2 YWwgPSAnJHRoaXNhcnRpY2xlWyInLiR2YWxQYXJ0c1swXS4nIl0nOwoJCQkJfQoJCQl9IGVs c2UgewoJCQkJJHZhbCA9IGRvUXVvdGUoc3RyX3JlcGxhY2UoJyInLCAnXCInLCAkdmFsUGFy dHNbMF0pKTsKCQkJfQoKCQkJLy8gQ2hlY2sgdGhlIHR5cGUgYW5kIGZpeCB0aGUgdmFyaWFi bGUgaWYgbmVjZXNzYXJ5CgkJCWlmICgoJHR5cGUgPT0gIlZBUiIpICYmICEoc3RycG9zKCRm bGQsICIkIikgPT09IDApKSB7CgkJCQkkZmxkID0gIiQiLnByZWdfcmVwbGFjZSgiL1teYS16 QS1aMC05XF9dKy8iLCAiIiwgJGZsZCk7CgkJCX0KCgkJCS8vIFJlcGxhY2UgdGhlIHN0cmlu ZyBwYXJ0cy4uLgoJCQkkY21kID0gc3RyX3JlcGxhY2UoIkNBU1QiLCAkY2FzdCwgJG9wKTsK CQkJJGNtZCA9IHN0cl9yZXBsYWNlKCJGSUVMRCIsICgoJGNhc2Vfc2Vuc2l0aXZlKSA/ICRm bGQgOiAnc3RydG9sb3dlcignLiRmbGQuJyknKSwgJGNtZCk7CgkJCSRjbWQgPSBzdHJfcmVw bGFjZSgiVkFSTkFNRSIsICRmbGQsICRjbWQpOwoJCQkkY21kID0gc3RyX3JlcGxhY2UoIlZB TFVFIiwgKCgkY2FzZV9zZW5zaXRpdmUpID8gJ1ZBTFVFJyA6ICdzdHJ0b2xvd2VyKFZBTFVF KScpLCAkY21kKTsKCQkJJGNtZCA9ICJcJG91dFtdID0gKCIuc3RyX3JlcGxhY2UoIlZBTFVF IiwgKCgkdmFsPT09IicnIiAmJiBzdHJwb3MoJG9wLCAic3RycG9zIikgIT09IGZhbHNlKSA/ ICInICciIDogJHZhbCksICRjbWQpLiIpID8gJ3RydWUnIDogJ2ZhbHNlJzsiOwoJCQlpZiAo JGRlYnVnKSB7CgkJCQlkbXAoJGNtZCk7CgkJCX0KCQkJLy8gLi4uIGFuZCBldmFsdWF0ZSB0 aGUgZXhwcmVzc2lvbgoJCQlldmFsKCRjbWQpOwoJCX0KCX0KCWlmICgkZGVidWcpIHsKCQll Y2hvICJSRVNVTFQ6IjsKCQlkbXAoJG91dCk7Cgl9CglpZiAoJGRlYnVnID09IDIpIHsKCQlk bXAoJHByZXRleHQpOwoJCWRtcCgkdGhpc2FydGljbGUpOwoJfQoJLy8gQ2hlY2sgbG9naWMK CSRyZXN1bHQgPSB0cnVlOwoJaWYgKHN0cnRvbG93ZXIoJGxvZ2ljKSA9PSAiYW5kIiAmJiBp bl9hcnJheSgiZmFsc2UiLCAkb3V0KSkgewoJCSRyZXN1bHQgPSBmYWxzZTsKCX0KCWlmIChz dHJ0b2xvd2VyKCRsb2dpYykgPT0gIm9yIiAmJiAhaW5fYXJyYXkoInRydWUiLCAkb3V0KSkg ewoJCSRyZXN1bHQgPSBmYWxzZTsKCX0KCglyZXR1cm4gcGFyc2UoRXZhbEVsc2UoJHRoaW5n LCAkcmVzdWx0KSk7Cn0iO3M6MzoibWQ1IjtzOjMyOiJhZWJlNmNmZGViMjNhYjQ0YjdlMTI0 NTY5ODFiMTRjMSI7fQ==