PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD48IS0tCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgICAgICAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGZyb20geG1sIHNvdXJjZTogRE8gTk9UIEVESVQKICAgICAgICBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWAogICAgICAtLT4KPHRpdGxlPm1vZF9hdXRoel9ob3N0IC0gQXBhY2hlIEhUVFAgU2VydmVyPC90aXRsZT4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIgdHlwZT0idGV4dC9jc3MiIHRpdGxlPSJNYWluIHN0eWxlc2hlZXQiIC8+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwtbG9vc2UtMTAwcGMuY3NzIiByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiB0eXBlPSJ0ZXh0L2NzcyIgdGl0bGU9Ik5vIFNpZGViYXIgLSBEZWZhdWx0IGZvbnQgc2l6ZSIgLz4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC1wcmludC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9InByaW50IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPGxpbmsgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIiByZWw9InNob3J0Y3V0IGljb24iIC8+PC9oZWFkPgo8Ym9keT4KPGRpdiBpZD0icGFnZS1oZWFkZXIiPgo8cCBjbGFzcz0ibWVudSI+PGEgaHJlZj0iLi4vbW9kLyI+TW9kdWxlczwvYT4gfCA8YSBocmVmPSIuLi9tb2QvZGlyZWN0aXZlcy5odG1sIj5EaXJlY3RpdmVzPC9hPiB8IDxhIGhyZWY9Ii4uL2ZhcS8iPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPgo8cCBjbGFzcz0iYXBhY2hlIj5BcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjM8L3A+CjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2ZlYXRoZXIuZ2lmIiAvPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ1cCI+PGEgaHJlZj0iLi8iPjxpbWcgdGl0bGU9IiZsdDstIiBhbHQ9IiZsdDstIiBzcmM9Ii4uL2ltYWdlcy9sZWZ0LmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgaWQ9InBhdGgiPgo8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BcGFjaGU8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIj5IVFRQIFNlcnZlcjwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLXByb2plY3QvIj5Eb2N1bWVudGF0aW9uPC9hPiAmZ3Q7IDxhIGhyZWY9Ii4uLyI+VmVyc2lvbiAyLjM8L2E+ICZndDsgPGEgaHJlZj0iLi8iPk1vZHVsZXM8L2E+PC9kaXY+CjxkaXYgaWQ9InBhZ2UtY29udGVudCI+CjxkaXYgaWQ9InByZWFtYmxlIj48aDE+QXBhY2hlIE1vZHVsZSBtb2RfYXV0aHpfaG9zdDwvaDE+CjxkaXYgY2xhc3M9InRvcGxhbmciPgo8cD48c3Bhbj5BdmFpbGFibGUgTGFuZ3VhZ2VzOiA8L3NwYW4+PGEgaHJlZj0iLi4vZW4vbW9kL21vZF9hdXRoel9ob3N0Lmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9qYS9tb2QvbW9kX2F1dGh6X2hvc3QuaHRtbCIgaHJlZmxhbmc9ImphIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkphcGFuZXNlIj4mbmJzcDtqYSZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9rby9tb2QvbW9kX2F1dGh6X2hvc3QuaHRtbCIgaHJlZmxhbmc9ImtvIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IktvcmVhbiI+Jm5ic3A7a28mbmJzcDs8L2E+PC9wPgo8L2Rpdj4KPHRhYmxlIGNsYXNzPSJtb2R1bGUiPjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkdyb3VwIGF1dGhvcml6YXRpb25zIGJhc2VkIG9uIGhvc3QgKG5hbWUgb3IgSVAKYWRkcmVzcyk8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+QmFzZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI01vZHVsZUlkZW50aWZpZXIiPk1vZHVsZaBJZGVudGlmaWVyOjwvYT48L3RoPjx0ZD5hdXRoel9ob3N0X21vZHVsZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI1NvdXJjZUZpbGUiPlNvdXJjZaBGaWxlOjwvYT48L3RoPjx0ZD5tb2RfYXV0aHpfaG9zdC5jPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9Im1vZHVsZS1kaWN0Lmh0bWwjQ29tcGF0aWJpbGl0eSI+Q29tcGF0aWJpbGl0eTo8L2E+PC90aD48dGQ+QXZhaWxhYmxlIGluIEFwYWNoZSAyLjEgYW5kIGxhdGVyPC90ZD48L3RyPjwvdGFibGU+CjxoMz5TdW1tYXJ5PC9oMz4KCiAgICA8cD5UaGUgZGlyZWN0aXZlcyBwcm92aWRlZCBieSA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGh6X2hvc3QuaHRtbCI+bW9kX2F1dGh6X2hvc3Q8L2E+PC9jb2RlPiBhcmUKICAgIHVzZWQgaW4gPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCNkaXJlY3RvcnkiPiZsdDtEaXJlY3RvcnkmZ3Q7PC9hPjwvY29kZT4sCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvY29yZS5odG1sI2ZpbGVzIj4mbHQ7RmlsZXMmZ3Q7PC9hPjwvY29kZT4sIGFuZAogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCNsb2NhdGlvbiI+Jmx0O0xvY2F0aW9uJmd0OzwvYT48L2NvZGU+IHNlY3Rpb25zCiAgICBhcyB3ZWxsIGFzIDxjb2RlPjxhIGhyZWY9ImNvcmUuaHRtbCNhY2Nlc3NmaWxlbmFtZSI+Lmh0YWNjZXNzPC9hPgogICAgPC9jb2RlPiBmaWxlcyB0byBjb250cm9sIGFjY2VzcyB0byBwYXJ0aWN1bGFyIHBhcnRzIG9mIHRoZSBzZXJ2ZXIuCiAgICBBY2Nlc3MgY2FuIGJlIGNvbnRyb2xsZWQgYmFzZWQgb24gdGhlIGNsaWVudCBob3N0bmFtZSwgSVAgYWRkcmVzcywgb3IKICAgIG90aGVyIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgY2xpZW50IHJlcXVlc3QsIGFzIGNhcHR1cmVkIGluIDxhIGhyZWY9Ii4uL2Vudi5odG1sIj5lbnZpcm9ubWVudCB2YXJpYWJsZXM8L2E+LiBUaGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2FsbG93Ij5BbGxvdzwvYT48L2NvZGU+IGFuZCA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZGVueSI+RGVueTwvYT48L2NvZGU+IGRpcmVjdGl2ZXMgYXJlIHVzZWQgdG8KICAgIHNwZWNpZnkgd2hpY2ggY2xpZW50cyBhcmUgb3IgYXJlIG5vdCBhbGxvd2VkIGFjY2VzcyB0byB0aGUgc2VydmVyLAogICAgd2hpbGUgdGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNvcmRlciI+T3JkZXI8L2E+PC9jb2RlPgogICAgZGlyZWN0aXZlIHNldHMgdGhlIGRlZmF1bHQgYWNjZXNzIHN0YXRlLCBhbmQgY29uZmlndXJlcyBob3cgdGhlCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYWxsb3ciPkFsbG93PC9hPjwvY29kZT4gYW5kIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNkZW55Ij5EZW55PC9hPjwvY29kZT4gZGlyZWN0aXZlcyBpbnRlcmFjdCB3aXRoIGVhY2gKICAgIG90aGVyLjwvcD4KCiAgICA8cD5Cb3RoIGhvc3QtYmFzZWQgYWNjZXNzIHJlc3RyaWN0aW9ucyBhbmQgcGFzc3dvcmQtYmFzZWQKICAgIGF1dGhlbnRpY2F0aW9uIG1heSBiZSBpbXBsZW1lbnRlZCBzaW11bHRhbmVvdXNseS4gSW4gdGhhdCBjYXNlLAogICAgdGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9jb3JlLmh0bWwjc2F0aXNmeSI+U2F0aXNmeTwvYT48L2NvZGU+IGRpcmVjdGl2ZSBpcyB1c2VkCiAgICB0byBkZXRlcm1pbmUgaG93IHRoZSB0d28gc2V0cyBvZiByZXN0cmljdGlvbnMgaW50ZXJhY3QuPC9wPgoKICAgIDxwPkluIGdlbmVyYWwsIGFjY2VzcyByZXN0cmljdGlvbiBkaXJlY3RpdmVzIGFwcGx5IHRvIGFsbAogICAgYWNjZXNzIG1ldGhvZHMgKDxjb2RlPkdFVDwvY29kZT4sIDxjb2RlPlBVVDwvY29kZT4sCiAgICA8Y29kZT5QT1NUPC9jb2RlPiwgZXRjKS4gVGhpcyBpcyB0aGUgZGVzaXJlZCBiZWhhdmlvciBpbiBtb3N0CiAgICBjYXNlcy4gSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdG8gcmVzdHJpY3Qgc29tZSBtZXRob2RzLCB3aGlsZQogICAgbGVhdmluZyBvdGhlciBtZXRob2RzIHVucmVzdHJpY3RlZCwgYnkgZW5jbG9zaW5nIHRoZSBkaXJlY3RpdmVzCiAgICBpbiBhIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9jb3JlLmh0bWwjbGltaXQiPiZsdDtMaW1pdCZndDs8L2E+PC9jb2RlPiBzZWN0aW9uLjwvcD4KPC9kaXY+CjxkaXYgaWQ9InF1aWNrdmlldyI+PGgzIGNsYXNzPSJkaXJlY3RpdmVzIj5EaXJlY3RpdmVzPC9oMz4KPHVsIGlkPSJ0b2MiPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNhbGxvdyI+QWxsb3c8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjZGVueSI+RGVueTwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNvcmRlciI+T3JkZXI8L2E+PC9saT4KPC91bD4KPGgzPlNlZSBhbHNvPC9oMz4KPHVsIGNsYXNzPSJzZWVhbHNvIj4KPGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9jb3JlLmh0bWwjc2F0aXNmeSI+U2F0aXNmeTwvYT48L2NvZGU+PC9saT4KPGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9jb3JlLmh0bWwjcmVxdWlyZSI+UmVxdWlyZTwvYT48L2NvZGU+PC9saT4KPC91bD48L2Rpdj4KCjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkFsbG93IiBpZD0iQWxsb3ciPkFsbG93PC9hPiA8YSBuYW1lPSJhbGxvdyIgaWQ9ImFsbG93Ij5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5Db250cm9scyB3aGljaCBob3N0cyBjYW4gYWNjZXNzIGFuIGFyZWEgb2YgdGhlCnNlcnZlcjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT4gQWxsb3cgZnJvbSBhbGx8PHZhcj5ob3N0PC92YXI+fGVudj08dmFyPmVudi12YXJpYWJsZTwvdmFyPgpbPHZhcj5ob3N0PC92YXI+fGVudj08dmFyPmVudi12YXJpYWJsZTwvdmFyPl0gLi4uPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPmRpcmVjdG9yeSwgLmh0YWNjZXNzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjT3ZlcnJpZGUiPk92ZXJyaWRlOjwvYT48L3RoPjx0ZD5MaW1pdDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5CYXNlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9hdXRoel9ob3N0PC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkFsbG93PC9jb2RlPiBkaXJlY3RpdmUgYWZmZWN0cyB3aGljaCBob3N0cyBjYW4KICAgIGFjY2VzcyBhbiBhcmVhIG9mIHRoZSBzZXJ2ZXIuIEFjY2VzcyBjYW4gYmUgY29udHJvbGxlZCBieQogICAgaG9zdG5hbWUsIElQIEFkZHJlc3MsIElQIEFkZHJlc3MgcmFuZ2UsIG9yIGJ5IG90aGVyCiAgICBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIGNsaWVudCByZXF1ZXN0IGNhcHR1cmVkIGluIGVudmlyb25tZW50CiAgICB2YXJpYWJsZXMuPC9wPgoKICAgIDxwPlRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGlzIGRpcmVjdGl2ZSBpcyBhbHdheXMKICAgIDxjb2RlPmZyb208L2NvZGU+LiBUaGUgc3Vic2VxdWVudCBhcmd1bWVudHMgY2FuIHRha2UgdGhyZWUKICAgIGRpZmZlcmVudCBmb3Jtcy4gSWYgPGNvZGU+QWxsb3cgZnJvbSBhbGw8L2NvZGU+IGlzIHNwZWNpZmllZCwgdGhlbgogICAgYWxsIGhvc3RzIGFyZSBhbGxvd2VkIGFjY2Vzcywgc3ViamVjdCB0byB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNkZW55Ij5EZW55PC9hPjwvY29kZT4gYW5kIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNvcmRlciI+T3JkZXI8L2E+PC9jb2RlPiBkaXJlY3RpdmVzIGFzIGRpc2N1c3NlZAogICAgYmVsb3cuIFRvIGFsbG93IG9ubHkgcGFydGljdWxhciBob3N0cyBvciBncm91cHMgb2YgaG9zdHMgdG8gYWNjZXNzCiAgICB0aGUgc2VydmVyLCB0aGUgPGVtPmhvc3Q8L2VtPiBjYW4gYmUgc3BlY2lmaWVkIGluIGFueSBvZiB0aGUKICAgIGZvbGxvd2luZyBmb3JtYXRzOjwvcD4KCiAgICA8ZGw+CiAgICAgIDxkdD5BIChwYXJ0aWFsKSBkb21haW4tbmFtZTwvZHQ+CgogICAgICA8ZGQ+CiAgICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxoMz5FeGFtcGxlOjwvaDM+PHA+PGNvZGU+CiAgICAgICAgQWxsb3cgZnJvbSBhcGFjaGUub3JnPGJyIC8+CiAgICAgICAgQWxsb3cgZnJvbSAubmV0IGV4YW1wbGUuZWR1CiAgICAgIDwvY29kZT48L3A+PC9kaXY+CiAgICAgIDxwPkhvc3RzIHdob3NlIG5hbWVzIG1hdGNoLCBvciBlbmQgaW4sIHRoaXMgc3RyaW5nIGFyZSBhbGxvd2VkCiAgICAgIGFjY2Vzcy4gT25seSBjb21wbGV0ZSBjb21wb25lbnRzIGFyZSBtYXRjaGVkLCBzbyB0aGUgYWJvdmUKICAgICAgZXhhbXBsZSB3aWxsIG1hdGNoIDxjb2RlPmZvby5hcGFjaGUub3JnPC9jb2RlPiBidXQgaXQgd2lsbCBub3QKICAgICAgbWF0Y2ggPGNvZGU+Zm9vYXBhY2hlLm9yZzwvY29kZT4uIFRoaXMgY29uZmlndXJhdGlvbiB3aWxsIGNhdXNlCiAgICAgIEFwYWNoZSB0byBwZXJmb3JtIGEgZG91YmxlIHJldmVyc2UgRE5TIGxvb2t1cCBvbiB0aGUgY2xpZW50IElQCiAgICAgIGFkZHJlc3MsIHJlZ2FyZGxlc3Mgb2YgdGhlIHNldHRpbmcgb2YgdGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9jb3JlLmh0bWwjaG9zdG5hbWVsb29rdXBzIj5Ib3N0bmFtZUxvb2t1cHM8L2E+PC9jb2RlPiBkaXJlY3RpdmUuICBJdCB3aWxsIGRvCiAgICAgIGEgcmV2ZXJzZSBETlMgbG9va3VwIG9uIHRoZSBJUCBhZGRyZXNzIHRvIGZpbmQgdGhlIGFzc29jaWF0ZWQKICAgICAgaG9zdG5hbWUsIGFuZCB0aGVuIGRvIGEgZm9yd2FyZCBsb29rdXAgb24gdGhlIGhvc3RuYW1lIHRvIGFzc3VyZQogICAgICB0aGF0IGl0IG1hdGNoZXMgdGhlIG9yaWdpbmFsIElQIGFkZHJlc3MuICBPbmx5IGlmIHRoZSBmb3J3YXJkCiAgICAgIGFuZCByZXZlcnNlIEROUyBhcmUgY29uc2lzdGVudCBhbmQgdGhlIGhvc3RuYW1lIG1hdGNoZXMgd2lsbAogICAgICBhY2Nlc3MgYmUgYWxsb3dlZC48L3A+PC9kZD4KCiAgICAgIDxkdD5BIGZ1bGwgSVAgYWRkcmVzczwvZHQ+CgogICAgICA8ZGQ+CiAgICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxoMz5FeGFtcGxlOjwvaDM+PHA+PGNvZGU+CiAgICAgICAgQWxsb3cgZnJvbSAxMC4xLjIuMzxiciAvPgogICAgICAgIEFsbG93IGZyb20gMTkyLjE2OC4xLjEwNCAxOTIuMTY4LjEuMjA1CiAgICAgIDwvY29kZT48L3A+PC9kaXY+CiAgICAgIDxwPkFuIElQIGFkZHJlc3Mgb2YgYSBob3N0IGFsbG93ZWQgYWNjZXNzPC9wPjwvZGQ+CgogICAgICA8ZHQ+QSBwYXJ0aWFsIElQIGFkZHJlc3M8L2R0PgoKICAgICAgPGRkPgogICAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48aDM+RXhhbXBsZTo8L2gzPjxwPjxjb2RlPgogICAgICAgIEFsbG93IGZyb20gMTAuMTxiciAvPgogICAgICAgIEFsbG93IGZyb20gMTAgMTcyLjIwIDE5Mi4xNjguMgogICAgICA8L2NvZGU+PC9wPjwvZGl2PgogICAgICA8cD5UaGUgZmlyc3QgMSB0byAzIGJ5dGVzIG9mIGFuIElQIGFkZHJlc3MsIGZvciBzdWJuZXQKICAgICAgcmVzdHJpY3Rpb24uPC9wPjwvZGQ+CgogICAgICA8ZHQ+QSBuZXR3b3JrL25ldG1hc2sgcGFpcjwvZHQ+CgogICAgICA8ZGQ+CiAgICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxoMz5FeGFtcGxlOjwvaDM+PHA+PGNvZGU+CiAgICAgICAgQWxsb3cgZnJvbSAxMC4xLjAuMC8yNTUuMjU1LjAuMAogICAgICA8L2NvZGU+PC9wPjwvZGl2PgogICAgICA8cD5BIG5ldHdvcmsgYS5iLmMuZCwgYW5kIGEgbmV0bWFzayB3LngueS56LiBGb3IgbW9yZQogICAgICBmaW5lLWdyYWluZWQgc3VibmV0IHJlc3RyaWN0aW9uLjwvcD48L2RkPgoKICAgICAgPGR0PkEgbmV0d29yay9ubm4gQ0lEUiBzcGVjaWZpY2F0aW9uPC9kdD4KCiAgICAgIDxkZD4KICAgICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPkV4YW1wbGU6PC9oMz48cD48Y29kZT4KICAgICAgICBBbGxvdyBmcm9tIDEwLjEuMC4wLzE2CiAgICAgIDwvY29kZT48L3A+PC9kaXY+CiAgICAgIDxwPlNpbWlsYXIgdG8gdGhlIHByZXZpb3VzIGNhc2UsIGV4Y2VwdCB0aGUgbmV0bWFzayBjb25zaXN0cyBvZgogICAgICBubm4gaGlnaC1vcmRlciAxIGJpdHMuPC9wPjwvZGQ+CiAgICA8L2RsPgoKICAgIDxwPk5vdGUgdGhhdCB0aGUgbGFzdCB0aHJlZSBleGFtcGxlcyBhYm92ZSBtYXRjaCBleGFjdGx5IHRoZQogICAgc2FtZSBzZXQgb2YgaG9zdHMuPC9wPgoKICAgIDxwPklQdjYgYWRkcmVzc2VzIGFuZCBJUHY2IHN1Ym5ldHMgY2FuIGJlIHNwZWNpZmllZCBhcyBzaG93bgogICAgYmVsb3c6PC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICAgQWxsb3cgZnJvbSAyMDAxOmRiODo6YTAwOjIwZmY6ZmVhNzpjY2VhPGJyIC8+CiAgICAgICBBbGxvdyBmcm9tIDIwMDE6ZGI4OjphMDA6MjBmZjpmZWE3OmNjZWEvMTAKICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+VGhlIHRoaXJkIGZvcm1hdCBvZiB0aGUgYXJndW1lbnRzIHRvIHRoZQogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+QWxsb3c8L2NvZGU+IGRpcmVjdGl2ZSBhbGxvd3MgYWNjZXNzIHRvIHRoZSBzZXJ2ZXIKICAgIHRvIGJlIGNvbnRyb2xsZWQgYmFzZWQgb24gdGhlIGV4aXN0ZW5jZSBvZiBhbiA8YSBocmVmPSIuLi9lbnYuaHRtbCI+ZW52aXJvbm1lbnQgdmFyaWFibGU8L2E+LiBXaGVuIDxjb2RlPkFsbG93IGZyb20KICAgIGVudj08dmFyPmVudi12YXJpYWJsZTwvdmFyPjwvY29kZT4gaXMgc3BlY2lmaWVkLCB0aGVuIHRoZSByZXF1ZXN0IGlzCiAgICBhbGxvd2VkIGFjY2VzcyBpZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgPHZhcj5lbnYtdmFyaWFibGU8L3Zhcj4KICAgIGV4aXN0cy4gVGhlIHNlcnZlciBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBzZXQgZW52aXJvbm1lbnQKICAgIHZhcmlhYmxlcyBpbiBhIGZsZXhpYmxlIHdheSBiYXNlZCBvbiBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIGNsaWVudAogICAgcmVxdWVzdCB1c2luZyB0aGUgZGlyZWN0aXZlcyBwcm92aWRlZCBieQogICAgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9zZXRlbnZpZi5odG1sIj5tb2Rfc2V0ZW52aWY8L2E+PC9jb2RlPi4gVGhlcmVmb3JlLCB0aGlzIGRpcmVjdGl2ZSBjYW4gYmUKICAgIHVzZWQgdG8gYWxsb3cgYWNjZXNzIGJhc2VkIG9uIHN1Y2ggZmFjdG9ycyBhcyB0aGUgY2xpZW50cwogICAgPGNvZGU+VXNlci1BZ2VudDwvY29kZT4gKGJyb3dzZXIgdHlwZSksIDxjb2RlPlJlZmVyZXI8L2NvZGU+LCBvcgogICAgb3RoZXIgSFRUUCByZXF1ZXN0IGhlYWRlciBmaWVsZHMuPC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxoMz5FeGFtcGxlOjwvaDM+PHA+PGNvZGU+CiAgICAgIFNldEVudklmIFVzZXItQWdlbnQgXktub2NrS25vY2svMlwuMCBsZXRfbWVfaW48YnIgLz4KICAgICAgJmx0O0RpcmVjdG9yeSAvZG9jcm9vdCZndDs8YnIgLz4KICAgICAgPHNwYW4gY2xhc3M9ImluZGVudCI+CiAgICAgICAgT3JkZXIgRGVueSxBbGxvdzxiciAvPgogICAgICAgIERlbnkgZnJvbSBhbGw8YnIgLz4KICAgICAgICBBbGxvdyBmcm9tIGVudj1sZXRfbWVfaW48YnIgLz4KICAgICAgPC9zcGFuPgogICAgICAmbHQ7L0RpcmVjdG9yeSZndDsKICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+SW4gdGhpcyBjYXNlLCBicm93c2VycyB3aXRoIGEgdXNlci1hZ2VudCBzdHJpbmcgYmVnaW5uaW5nCiAgICB3aXRoIDxjb2RlPktub2NrS25vY2svMi4wPC9jb2RlPiB3aWxsIGJlIGFsbG93ZWQgYWNjZXNzLCBhbmQgYWxsCiAgICBvdGhlcnMgd2lsbCBiZSBkZW5pZWQuPC9wPgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkRlbnkiIGlkPSJEZW55Ij5EZW55PC9hPiA8YSBuYW1lPSJkZW55IiBpZD0iZGVueSI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+Q29udHJvbHMgd2hpY2ggaG9zdHMgYXJlIGRlbmllZCBhY2Nlc3MgdG8gdGhlCnNlcnZlcjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT4gRGVueSBmcm9tIGFsbHw8dmFyPmhvc3Q8L3Zhcj58ZW52PTx2YXI+ZW52LXZhcmlhYmxlPC92YXI+Cls8dmFyPmhvc3Q8L3Zhcj58ZW52PTx2YXI+ZW52LXZhcmlhYmxlPC92YXI+XSAuLi48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+ZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNPdmVycmlkZSI+T3ZlcnJpZGU6PC9hPjwvdGg+PHRkPkxpbWl0PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkJhc2U8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2F1dGh6X2hvc3Q8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGlzIGRpcmVjdGl2ZSBhbGxvd3MgYWNjZXNzIHRvIHRoZSBzZXJ2ZXIgdG8gYmUgcmVzdHJpY3RlZAogICAgYmFzZWQgb24gaG9zdG5hbWUsIElQIGFkZHJlc3MsIG9yIGVudmlyb25tZW50IHZhcmlhYmxlcy4gVGhlCiAgICBhcmd1bWVudHMgZm9yIHRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5EZW55PC9jb2RlPiBkaXJlY3RpdmUgYXJlCiAgICBpZGVudGljYWwgdG8gdGhlIGFyZ3VtZW50cyBmb3IgdGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNhbGxvdyI+QWxsb3c8L2E+PC9jb2RlPiBkaXJlY3RpdmUuPC9wPgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9Ik9yZGVyIiBpZD0iT3JkZXIiPk9yZGVyPC9hPiA8YSBuYW1lPSJvcmRlciIgaWQ9Im9yZGVyIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5Db250cm9scyB0aGUgZGVmYXVsdCBhY2Nlc3Mgc3RhdGUgYW5kIHRoZSBvcmRlciBpbiB3aGljaAo8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5BbGxvdzwvY29kZT4gYW5kIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkRlbnk8L2NvZGU+IGFyZQpldmFsdWF0ZWQuPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPiBPcmRlciA8dmFyPm9yZGVyaW5nPC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPk9yZGVyIERlbnksQWxsb3c8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+ZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNPdmVycmlkZSI+T3ZlcnJpZGU6PC9hPjwvdGg+PHRkPkxpbWl0PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkJhc2U8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2F1dGh6X2hvc3Q8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+T3JkZXI8L2NvZGU+IGRpcmVjdGl2ZSBjb250cm9scyB0aGUgZGVmYXVsdAogICAgYWNjZXNzIHN0YXRlIGFuZCB0aGUgb3JkZXIgaW4gd2hpY2ggPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2FsbG93Ij5BbGxvdzwvYT48L2NvZGU+IGFuZCA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZGVueSI+RGVueTwvYT48L2NvZGU+IGRpcmVjdGl2ZXMgYXJlIGV2YWx1YXRlZC4KICAgIDx2YXI+T3JkZXJpbmc8L3Zhcj4gaXMgb25lIG9mPC9wPgoKICAgIDxkbD4KICAgICAgPGR0Pjxjb2RlPkRlbnksQWxsb3c8L2NvZGU+PC9kdD4KCiAgICAgIDxkZD5UaGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2RlbnkiPkRlbnk8L2E+PC9jb2RlPiBkaXJlY3RpdmVzCiAgICAgIGFyZSBldmFsdWF0ZWQgYmVmb3JlIHRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYWxsb3ciPkFsbG93PC9hPjwvY29kZT4gZGlyZWN0aXZlcy4gQWNjZXNzIGlzCiAgICAgIGFsbG93ZWQgYnkgZGVmYXVsdC4gQW55IGNsaWVudCB3aGljaCBkb2VzIG5vdCBtYXRjaCBhCiAgICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNkZW55Ij5EZW55PC9hPjwvY29kZT4gZGlyZWN0aXZlIG9yIGRvZXMKICAgICAgbWF0Y2ggYW4gPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2FsbG93Ij5BbGxvdzwvYT48L2NvZGU+CiAgICAgIGRpcmVjdGl2ZSB3aWxsIGJlIGFsbG93ZWQgYWNjZXNzIHRvIHRoZSBzZXJ2ZXIuPC9kZD4KCiAgICAgIDxkdD48Y29kZT5BbGxvdyxEZW55PC9jb2RlPjwvZHQ+CgogICAgICA8ZGQ+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNhbGxvdyI+QWxsb3c8L2E+PC9jb2RlPgogICAgICBkaXJlY3RpdmVzIGFyZSBldmFsdWF0ZWQgYmVmb3JlIHRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZGVueSI+RGVueTwvYT48L2NvZGU+IGRpcmVjdGl2ZXMuIEFjY2VzcyBpcyBkZW5pZWQKICAgICAgYnkgZGVmYXVsdC4gQW55IGNsaWVudCB3aGljaCBkb2VzIG5vdCBtYXRjaCBhbiA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYWxsb3ciPkFsbG93PC9hPjwvY29kZT4gZGlyZWN0aXZlIG9yIGRvZXMgbWF0Y2ggYQogICAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZGVueSI+RGVueTwvYT48L2NvZGU+IGRpcmVjdGl2ZSB3aWxsIGJlCiAgICAgIGRlbmllZCBhY2Nlc3MgdG8gdGhlIHNlcnZlci48L2RkPgoKICAgICAgPGR0Pjxjb2RlPk11dHVhbC1mYWlsdXJlPC9jb2RlPjwvZHQ+CgogICAgICA8ZGQ+T25seSB0aG9zZSBob3N0cyB3aGljaCBhcHBlYXIgb24gdGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNhbGxvdyI+QWxsb3c8L2E+PC9jb2RlPiBsaXN0IGFuZCBkbyBub3QgYXBwZWFyIG9uCiAgICAgIHRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZGVueSI+RGVueTwvYT48L2NvZGU+IGxpc3QgYXJlCiAgICAgIGdyYW50ZWQgYWNjZXNzLiBUaGlzIG9yZGVyaW5nIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMgPGNvZGU+T3JkZXIKICAgICAgQWxsb3csRGVueTwvY29kZT4gYW5kIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdGhhdAogICAgICBjb25maWd1cmF0aW9uLjwvZGQ+CiAgICA8L2RsPgoKICAgIDxwPktleXdvcmRzIG1heSBvbmx5IGJlIHNlcGFyYXRlZCBieSBhIGNvbW1hOyA8ZW0+bm8gd2hpdGVzcGFjZTwvZW0+IGlzCiAgICBhbGxvd2VkIGJldHdlZW4gdGhlbS4gTm90ZSB0aGF0IGluIGFsbCBjYXNlcyBldmVyeSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYWxsb3ciPkFsbG93PC9hPjwvY29kZT4gYW5kIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNkZW55Ij5EZW55PC9hPjwvY29kZT4gc3RhdGVtZW50IGlzIGV2YWx1YXRlZC48L3A+CgogICAgPHA+SW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCBhbGwgaG9zdHMgaW4gdGhlIGFwYWNoZS5vcmcgZG9tYWluCiAgICBhcmUgYWxsb3dlZCBhY2Nlc3M7IGFsbCBvdGhlciBob3N0cyBhcmUgZGVuaWVkIGFjY2Vzcy48L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgIE9yZGVyIERlbnksQWxsb3c8YnIgLz4KICAgICAgRGVueSBmcm9tIGFsbDxiciAvPgogICAgICBBbGxvdyBmcm9tIGFwYWNoZS5vcmcKICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+SW4gdGhlIG5leHQgZXhhbXBsZSwgYWxsIGhvc3RzIGluIHRoZSBhcGFjaGUub3JnIGRvbWFpbiBhcmUKICAgIGFsbG93ZWQgYWNjZXNzLCBleGNlcHQgZm9yIHRoZSBob3N0cyB3aGljaCBhcmUgaW4gdGhlCiAgICBmb28uYXBhY2hlLm9yZyBzdWJkb21haW4sIHdobyBhcmUgZGVuaWVkIGFjY2Vzcy4gQWxsIGhvc3RzIG5vdAogICAgaW4gdGhlIGFwYWNoZS5vcmcgZG9tYWluIGFyZSBkZW5pZWQgYWNjZXNzIGJlY2F1c2UgdGhlIGRlZmF1bHQKICAgIHN0YXRlIGlzIHRvIGRlbnkgYWNjZXNzIHRvIHRoZSBzZXJ2ZXIuPC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICBPcmRlciBBbGxvdyxEZW55PGJyIC8+CiAgICAgIEFsbG93IGZyb20gYXBhY2hlLm9yZzxiciAvPgogICAgICBEZW55IGZyb20gZm9vLmFwYWNoZS5vcmcKICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+T24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5PcmRlcjwvY29kZT4gaW4gdGhlIGxhc3QKICAgIGV4YW1wbGUgaXMgY2hhbmdlZCB0byA8Y29kZT5EZW55LEFsbG93PC9jb2RlPiwgYWxsIGhvc3RzIHdpbGwKICAgIGJlIGFsbG93ZWQgYWNjZXNzLiBUaGlzIGhhcHBlbnMgYmVjYXVzZSwgcmVnYXJkbGVzcyBvZiB0aGUKICAgIGFjdHVhbCBvcmRlcmluZyBvZiB0aGUgZGlyZWN0aXZlcyBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlLAogICAgdGhlIDxjb2RlPkFsbG93IGZyb20gYXBhY2hlLm9yZzwvY29kZT4gd2lsbCBiZSBldmFsdWF0ZWQgbGFzdAogICAgYW5kIHdpbGwgb3ZlcnJpZGUgdGhlIDxjb2RlPkRlbnkgZnJvbSBmb28uYXBhY2hlLm9yZzwvY29kZT4uCiAgICBBbGwgaG9zdHMgbm90IGluIHRoZSA8Y29kZT5hcGFjaGUub3JnPC9jb2RlPiBkb21haW4gd2lsbCBhbHNvCiAgICBiZSBhbGxvd2VkIGFjY2VzcyBiZWNhdXNlIHRoZSBkZWZhdWx0IHN0YXRlIHdpbGwgY2hhbmdlIHRvCiAgICA8ZW0+YWxsb3c8L2VtPi48L3A+CgogICAgPHA+VGhlIHByZXNlbmNlIG9mIGFuIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPk9yZGVyPC9jb2RlPiBkaXJlY3RpdmUgY2FuIGFmZmVjdAogICAgYWNjZXNzIHRvIGEgcGFydCBvZiB0aGUgc2VydmVyIGV2ZW4gaW4gdGhlIGFic2VuY2Ugb2YgYWNjb21wYW55aW5nCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYWxsb3ciPkFsbG93PC9hPjwvY29kZT4gYW5kIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNkZW55Ij5EZW55PC9hPjwvY29kZT4gZGlyZWN0aXZlcyBiZWNhdXNlIG9mIGl0cyBlZmZlY3QKICAgIG9uIHRoZSBkZWZhdWx0IGFjY2VzcyBzdGF0ZS4gRm9yIGV4YW1wbGUsPC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICAmbHQ7RGlyZWN0b3J5IC93d3cmZ3Q7PGJyIC8+CiAgICAgIDxzcGFuIGNsYXNzPSJpbmRlbnQiPgogICAgICAgIE9yZGVyIEFsbG93LERlbnk8YnIgLz4KICAgICAgPC9zcGFuPgogICAgICAmbHQ7L0RpcmVjdG9yeSZndDsKICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+d2lsbCBkZW55IGFsbCBhY2Nlc3MgdG8gdGhlIDxjb2RlPi93d3c8L2NvZGU+IGRpcmVjdG9yeQogICAgYmVjYXVzZSB0aGUgZGVmYXVsdCBhY2Nlc3Mgc3RhdGUgd2lsbCBiZSBzZXQgdG8KICAgIDxlbT5kZW55PC9lbT4uPC9wPgoKICAgIDxwPlRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5PcmRlcjwvY29kZT4gZGlyZWN0aXZlIGNvbnRyb2xzIHRoZSBvcmRlciBvZiBhY2Nlc3MKICAgIGRpcmVjdGl2ZSBwcm9jZXNzaW5nIG9ubHkgd2l0aGluIGVhY2ggcGhhc2Ugb2YgdGhlIHNlcnZlcidzCiAgICBjb25maWd1cmF0aW9uIHByb2Nlc3NpbmcuIFRoaXMgaW1wbGllcywgZm9yIGV4YW1wbGUsIHRoYXQgYW4KICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNhbGxvdyI+QWxsb3c8L2E+PC9jb2RlPiBvciA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZGVueSI+RGVueTwvYT48L2NvZGU+IGRpcmVjdGl2ZSBvY2N1cnJpbmcgaW4gYQogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCNsb2NhdGlvbiI+Jmx0O0xvY2F0aW9uJmd0OzwvYT48L2NvZGU+IHNlY3Rpb24gd2lsbAogICAgYWx3YXlzIGJlIGV2YWx1YXRlZCBhZnRlciBhbiA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYWxsb3ciPkFsbG93PC9hPjwvY29kZT4gb3IgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2RlbnkiPkRlbnk8L2E+PC9jb2RlPiBkaXJlY3RpdmUgb2NjdXJyaW5nIGluIGEKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9jb3JlLmh0bWwjZGlyZWN0b3J5Ij4mbHQ7RGlyZWN0b3J5Jmd0OzwvYT48L2NvZGU+IHNlY3Rpb24gb3IKICAgIDxjb2RlPi5odGFjY2VzczwvY29kZT4gZmlsZSwgcmVnYXJkbGVzcyBvZiB0aGUgc2V0dGluZyBvZiB0aGUKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPk9yZGVyPC9jb2RlPiBkaXJlY3RpdmUuIEZvciBkZXRhaWxzIG9uIHRoZSBtZXJnaW5nCiAgICBvZiBjb25maWd1cmF0aW9uIHNlY3Rpb25zLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gb24gPGEgaHJlZj0iLi4vc2VjdGlvbnMuaHRtbCI+SG93IERpcmVjdG9yeSwgTG9jYXRpb24gYW5kIEZpbGVzIHNlY3Rpb25zCiAgICB3b3JrPC9hPi48L3A+Cgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9ImJvdHRvbWxhbmciPgo8cD48c3Bhbj5BdmFpbGFibGUgTGFuZ3VhZ2VzOiA8L3NwYW4+PGEgaHJlZj0iLi4vZW4vbW9kL21vZF9hdXRoel9ob3N0Lmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9qYS9tb2QvbW9kX2F1dGh6X2hvc3QuaHRtbCIgaHJlZmxhbmc9ImphIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkphcGFuZXNlIj4mbmJzcDtqYSZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9rby9tb2QvbW9kX2F1dGh6X2hvc3QuaHRtbCIgaHJlZmxhbmc9ImtvIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IktvcmVhbiI+Jm5ic3A7a28mbmJzcDs8L2E+PC9wPgo8L2Rpdj48ZGl2IGlkPSJmb290ZXIiPgo8cCBjbGFzcz0iYXBhY2hlIj5Db3B5cmlnaHQgMTk5NS0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiBvciBpdHMgbGljZW5zb3JzLCBhcyBhcHBsaWNhYmxlLjxiciAvPkxpY2Vuc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiPkFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMDwvYT4uPC9wPgo8cCBjbGFzcz0ibWVudSI+PGEgaHJlZj0iLi4vbW9kLyI+TW9kdWxlczwvYT4gfCA8YSBocmVmPSIuLi9tb2QvZGlyZWN0aXZlcy5odG1sIj5EaXJlY3RpdmVzPC9hPiB8IDxhIGhyZWY9Ii4uL2ZhcS8iPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPjwvZGl2Pgo8L2JvZHk+PC9odG1sPg==