PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD4KPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KPCEtLQogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIHhtbCBzb3VyY2U6IERPIE5PVCBFRElUCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgLS0+Cjx0aXRsZT5tb2RfYWN0aW9ucyAtIEFwYWNoZSBIVFRQIFNlcnZlciBWZXJzaW9uIDIuNTwvdGl0bGU+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTWFpbiBzdHlsZXNoZWV0IiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLWxvb3NlLTEwMHBjLmNzcyIgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgbWVkaWE9ImFsbCIgdHlwZT0idGV4dC9jc3MiIHRpdGxlPSJObyBTaWRlYmFyIC0gRGVmYXVsdCBmb250IHNpemUiIC8+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwtcHJpbnQuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJwcmludCIgdHlwZT0idGV4dC9jc3MiIC8+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vc3R5bGUvY3NzL3ByZXR0aWZ5LmNzcyIgLz4KPHNjcmlwdCBzcmM9Ii4uL3N0eWxlL3NjcmlwdHMvcHJldHRpZnkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8L3NjcmlwdD4KCjxsaW5rIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIgcmVsPSJzaG9ydGN1dCBpY29uIiAvPjwvaGVhZD4KPGJvZHk+CjxkaXYgaWQ9InBhZ2UtaGVhZGVyIj4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4uL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL3F1aWNrcmVmZXJlbmNlLmh0bWwiPkRpcmVjdGl2ZXM8L2E+IHwgPGEgaHJlZj0iaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9GQVEiPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPgo8cCBjbGFzcz0iYXBhY2hlIj5BcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjU8L3A+CjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2ZlYXRoZXIucG5nIiAvPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ1cCI+PGEgaHJlZj0iLi8iPjxpbWcgdGl0bGU9IiZsdDstIiBhbHQ9IiZsdDstIiBzcmM9Ii4uL2ltYWdlcy9sZWZ0LmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgaWQ9InBhdGgiPgo8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BcGFjaGU8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIj5IVFRQIFNlcnZlcjwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLyI+RG9jdW1lbnRhdGlvbjwvYT4gJmd0OyA8YSBocmVmPSIuLi8iPlZlcnNpb24gMi41PC9hPiAmZ3Q7IDxhIGhyZWY9Ii4vIj5Nb2R1bGVzPC9hPjwvZGl2Pgo8ZGl2IGlkPSJwYWdlLWNvbnRlbnQiPgo8ZGl2IGlkPSJwcmVhbWJsZSI+PGgxPkFwYWNoZSBNb2R1bGUgbW9kX2FjdGlvbnM8L2gxPgo8ZGl2IGNsYXNzPSJ0b3BsYW5nIj4KPHA+PHNwYW4+QXZhaWxhYmxlIExhbmd1YWdlczogPC9zcGFuPjxhIGhyZWY9Ii4uL2RlL21vZC9tb2RfYWN0aW9ucy5odG1sIiBocmVmbGFuZz0iZGUiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRGV1dHNjaCI+Jm5ic3A7ZGUmbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4vZW4vbW9kL21vZF9hY3Rpb25zLmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9mci9tb2QvbW9kX2FjdGlvbnMuaHRtbCIgaHJlZmxhbmc9ImZyIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkZyYW7nYWlzIj4mbmJzcDtmciZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9qYS9tb2QvbW9kX2FjdGlvbnMuaHRtbCIgaHJlZmxhbmc9ImphIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkphcGFuZXNlIj4mbmJzcDtqYSZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9rby9tb2QvbW9kX2FjdGlvbnMuaHRtbCIgaHJlZmxhbmc9ImtvIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IktvcmVhbiI+Jm5ic3A7a28mbmJzcDs8L2E+PC9wPgo8L2Rpdj4KPHRhYmxlIGNsYXNzPSJtb2R1bGUiPjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkV4ZWN1dGUgQ0dJIHNjcmlwdHMgYmFzZWQgb24gbWVkaWEgdHlwZSBvciByZXF1ZXN0IG1ldGhvZC48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+QmFzZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI01vZHVsZUlkZW50aWZpZXIiPk1vZHVsZaBJZGVudGlmaWVyOjwvYT48L3RoPjx0ZD5hY3Rpb25zX21vZHVsZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI1NvdXJjZUZpbGUiPlNvdXJjZaBGaWxlOjwvYT48L3RoPjx0ZD5tb2RfYWN0aW9ucy5jPC90ZD48L3RyPjwvdGFibGU+CjxoMz5TdW1tYXJ5PC9oMz4KCiAgICA8cD5UaGlzIG1vZHVsZSBoYXMgdHdvIGRpcmVjdGl2ZXMuIFRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYWN0aW9uIj5BY3Rpb248L2E+PC9jb2RlPiBkaXJlY3RpdmUgbGV0cyB5b3UgcnVuIENHSQogICAgc2NyaXB0cyB3aGVuZXZlciBhIGZpbGUgb2YgYSBjZXJ0YWluIDxhIGNsYXNzPSJnbG9zc2FyeWxpbmsiIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwjbWltZS10eXBlIiB0aXRsZT0ic2VlIGdsb3NzYXJ5Ij5NSU1FIGNvbnRlbnQgdHlwZTwvYT4gaXMgcmVxdWVzdGVkLiBUaGUKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNzY3JpcHQiPlNjcmlwdDwvYT48L2NvZGU+IGRpcmVjdGl2ZSBsZXRzCiAgICB5b3UgcnVuIENHSSBzY3JpcHRzIHdoZW5ldmVyIGEgcGFydGljdWxhciBtZXRob2QgaXMgdXNlZCBpbiBhCiAgICByZXF1ZXN0LiBUaGlzIG1ha2VzIGl0IG11Y2ggZWFzaWVyIHRvIGV4ZWN1dGUgc2NyaXB0cyB0aGF0IHByb2Nlc3MKICAgIGZpbGVzLjwvcD4gPC9kaXY+CjxkaXYgaWQ9InF1aWNrdmlldyI+PGgzIGNsYXNzPSJkaXJlY3RpdmVzIj5EaXJlY3RpdmVzPC9oMz4KPHVsIGlkPSJ0b2MiPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNhY3Rpb24iPkFjdGlvbjwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNzY3JpcHQiPlNjcmlwdDwvYT48L2xpPgo8L3VsPgo8aDM+QnVnZml4IGNoZWNrbGlzdDwvaDM+PHVsIGNsYXNzPSJzZWVhbHNvIj48bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9kaXN0L2h0dHBkL0NIQU5HRVNfMi40Ij5odHRwZCBjaGFuZ2Vsb2c8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9iei5hcGFjaGUub3JnL2J1Z3ppbGxhL2J1Z2xpc3QuY2dpP2J1Z19zdGF0dXM9X19vcGVuX18mYW1wO2xpc3RfaWQ9MTQ0NTMyJmFtcDtwcm9kdWN0PUFwYWNoZSUyMGh0dHBkLTImYW1wO3F1ZXJ5X2Zvcm1hdD1zcGVjaWZpYyZhbXA7b3JkZXI9Y2hhbmdlZGRhdGUlMjBERVNDJTJDcHJpb3JpdHklMkNidWdfc2V2ZXJpdHkmYW1wO2NvbXBvbmVudD1tb2RfYWN0aW9ucyI+S25vd24gaXNzdWVzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vYnouYXBhY2hlLm9yZy9idWd6aWxsYS9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9QXBhY2hlJTIwaHR0cGQtMiZhbXA7Y29tcG9uZW50PW1vZF9hY3Rpb25zIj5SZXBvcnQgYSBidWc8L2E+PC9saT48L3VsPjxoMz5TZWUgYWxzbzwvaDM+Cjx1bCBjbGFzcz0ic2VlYWxzbyI+CjxsaT48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2NnaS5odG1sIj5tb2RfY2dpPC9hPjwvY29kZT48L2xpPgo8bGk+PGEgaHJlZj0iLi4vaG93dG8vY2dpLmh0bWwiPkR5bmFtaWMgQ29udGVudCB3aXRoIENHSTwvYT48L2xpPgo8bGk+PGEgaHJlZj0iLi4vaGFuZGxlci5odG1sIj5BcGFjaGUgaHR0cGQncyBIYW5kbGVyIFVzZTwvYT48L2xpPgo8bGk+PGEgaHJlZj0iI2NvbW1lbnRzX3NlY3Rpb24iPkNvbW1lbnRzPC9hPjwvbGk+PC91bD48L2Rpdj4KCjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkFjdGlvbiIgaWQ9IkFjdGlvbiI+QWN0aW9uPC9hPiA8YSBuYW1lPSJhY3Rpb24iIGlkPSJhY3Rpb24iPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkFjdGl2YXRlcyBhIENHSSBzY3JpcHQgZm9yIGEgcGFydGljdWxhciBoYW5kbGVyIG9yCmNvbnRlbnQtdHlwZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5BY3Rpb24gPHZhcj5hY3Rpb24tdHlwZTwvdmFyPiA8dmFyPmNnaS1zY3JpcHQ8L3Zhcj4gW3ZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWcsIHZpcnR1YWwgaG9zdCwgZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNPdmVycmlkZSI+T3ZlcnJpZGU6PC9hPjwvdGg+PHRkPkZpbGVJbmZvPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkJhc2U8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2FjdGlvbnM8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGlzIGRpcmVjdGl2ZSBhZGRzIGFuIGFjdGlvbiwgd2hpY2ggd2lsbCBhY3RpdmF0ZQogICAgPHZhcj5jZ2ktc2NyaXB0PC92YXI+IHdoZW4gPHZhcj5hY3Rpb24tdHlwZTwvdmFyPiBpcyB0cmlnZ2VyZWQgYnkKICAgIHRoZSByZXF1ZXN0LiAgVGhlIDx2YXI+Y2dpLXNjcmlwdDwvdmFyPiBpcyB0aGUgVVJMLXBhdGggdG8gYQogICAgcmVzb3VyY2UgdGhhdCBoYXMgYmVlbiBkZXNpZ25hdGVkIGFzIGEgQ0dJIHNjcmlwdCB1c2luZyA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX2FsaWFzLmh0bWwjc2NyaXB0YWxpYXMiPlNjcmlwdEFsaWFzPC9hPjwvY29kZT4gb3IgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9taW1lLmh0bWwjYWRkaGFuZGxlciI+QWRkSGFuZGxlcjwvYT48L2NvZGU+LiAgVGhlCiAgICA8dmFyPmFjdGlvbi10eXBlPC92YXI+IGNhbiBiZSBlaXRoZXIgYSA8YSBocmVmPSIuLi9oYW5kbGVyLmh0bWwiPmhhbmRsZXI8L2E+IG9yIGEgPGEgY2xhc3M9Imdsb3NzYXJ5bGluayIgaHJlZj0iLi4vZ2xvc3NhcnkuaHRtbCNtaW1lLXR5cGUiIHRpdGxlPSJzZWUgZ2xvc3NhcnkiPk1JTUUgY29udGVudCB0eXBlPC9hPi4gSXQgc2VuZHMgdGhlIFVSTCBhbmQKICAgIGZpbGUgcGF0aCBvZiB0aGUgcmVxdWVzdGVkIGRvY3VtZW50IHVzaW5nIHRoZSBzdGFuZGFyZCBDR0kKICAgIDxjb2RlPlBBVEhfSU5GTzwvY29kZT4gYW5kIDxjb2RlPlBBVEhfVFJBTlNMQVRFRDwvY29kZT4KICAgIGVudmlyb25tZW50IHZhcmlhYmxlcy4gVGhlIGhhbmRsZXIgdXNlZCBmb3IgdGhlIHBhcnRpY3VsYXIgcmVxdWVzdAogICAgaXMgcGFzc2VkIHVzaW5nIHRoZSA8Y29kZT5SRURJUkVDVF9IQU5ETEVSPC9jb2RlPiB2YXJpYWJsZS48L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPkV4YW1wbGU6IE1JTUUgdHlwZTwvaDM+PHByZSBjbGFzcz0icHJldHR5cHJpbnQgbGFuZy1jb25maWciPiMgUmVxdWVzdHMgZm9yIGZpbGVzIG9mIGEgcGFydGljdWxhciBNSU1FIGNvbnRlbnQgdHlwZToKQWN0aW9uIGltYWdlL2dpZiAvY2dpLWJpbi9pbWFnZXMuY2dpPC9wcmU+CjwvZGl2PgoKICAgIDxwPkluIHRoaXMgZXhhbXBsZSwgcmVxdWVzdHMgZm9yIGZpbGVzIHdpdGggYSBNSU1FIGNvbnRlbnQKICAgIHR5cGUgb2YgPGNvZGU+aW1hZ2UvZ2lmPC9jb2RlPiB3aWxsIGJlIGhhbmRsZWQgYnkgdGhlCiAgICBzcGVjaWZpZWQgY2dpIHNjcmlwdCA8Y29kZT4vY2dpLWJpbi9pbWFnZXMuY2dpPC9jb2RlPi48L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPkV4YW1wbGU6IEZpbGUgZXh0ZW5zaW9uPC9oMz48cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+IyBGaWxlcyBvZiBhIHBhcnRpY3VsYXIgZmlsZSBleHRlbnNpb24KQWRkSGFuZGxlciBteS1maWxlLXR5cGUgLnh5egpBY3Rpb24gbXktZmlsZS10eXBlIC9jZ2ktYmluL3Byb2dyYW0uY2dpPC9wcmU+CjwvZGl2PgogICAgPHA+SW4gdGhpcyBleGFtcGxlLCByZXF1ZXN0cyBmb3IgZmlsZXMgd2l0aCBhIGZpbGUgZXh0ZW5zaW9uIG9mCiAgICA8Y29kZT4ueHl6PC9jb2RlPiBhcmUgaGFuZGxlZCBieSB0aGUgc3BlY2lmaWVkIGNnaSBzY3JpcHQKICAgIDxjb2RlPi9jZ2ktYmluL3Byb2dyYW0uY2dpPC9jb2RlPi48L3A+CgogICAgPHA+VGhlIG9wdGlvbmFsIDxjb2RlPnZpcnR1YWw8L2NvZGU+IG1vZGlmaWVyIHR1cm5zIG9mZiB0aGUgY2hlY2sKICAgIHdoZXRoZXIgdGhlIHJlcXVlc3RlZCBmaWxlIHJlYWxseSBleGlzdHMuIFRoaXMgaXMgdXNlZnVsLCBmb3IgZXhhbXBsZSwKICAgIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+QWN0aW9uPC9jb2RlPiBkaXJlY3RpdmUgaW4KICAgIHZpcnR1YWwgbG9jYXRpb25zLjwvcD4KCiAgICA8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+Jmx0O0xvY2F0aW9uICIvbmV3cyImZ3Q7CiAgICBTZXRIYW5kbGVyIG5ld3MtaGFuZGxlcgogICAgQWN0aW9uIG5ld3MtaGFuZGxlciAvY2dpLWJpbi9uZXdzLmNnaSB2aXJ0dWFsCiZsdDsvTG9jYXRpb24mZ3Q7PC9wcmU+CgoKPGgzPlNlZSBhbHNvPC9oMz4KPHVsPgo8bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9taW1lLmh0bWwjYWRkaGFuZGxlciI+QWRkSGFuZGxlcjwvYT48L2NvZGU+PC9saT4KPC91bD4KPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IlNjcmlwdCIgaWQ9IlNjcmlwdCI+U2NyaXB0PC9hPiA8YSBuYW1lPSJzY3JpcHQiIGlkPSJzY3JpcHQiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkFjdGl2YXRlcyBhIENHSSBzY3JpcHQgZm9yIGEgcGFydGljdWxhciByZXF1ZXN0Cm1ldGhvZC48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+U2NyaXB0IDx2YXI+bWV0aG9kPC92YXI+IDx2YXI+Y2dpLXNjcmlwdDwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnLCB2aXJ0dWFsIGhvc3QsIGRpcmVjdG9yeTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5CYXNlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9hY3Rpb25zPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhpcyBkaXJlY3RpdmUgYWRkcyBhbiBhY3Rpb24sIHdoaWNoIHdpbGwgYWN0aXZhdGUKICAgIDx2YXI+Y2dpLXNjcmlwdDwvdmFyPiB3aGVuIGEgZmlsZSBpcyByZXF1ZXN0ZWQgdXNpbmcgdGhlIG1ldGhvZCBvZgogICAgPHZhcj5tZXRob2Q8L3Zhcj4uIFRoZSA8dmFyPmNnaS1zY3JpcHQ8L3Zhcj4gaXMgdGhlIFVSTC1wYXRoIHRvIGEKICAgIHJlc291cmNlIHRoYXQgaGFzIGJlZW4gZGVzaWduYXRlZCBhcyBhIENHSSBzY3JpcHQgdXNpbmcgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hbGlhcy5odG1sI3NjcmlwdGFsaWFzIj5TY3JpcHRBbGlhczwvYT48L2NvZGU+IG9yIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfbWltZS5odG1sI2FkZGhhbmRsZXIiPkFkZEhhbmRsZXI8L2E+PC9jb2RlPi4gIFRoZSBVUkwgYW5kCiAgICBmaWxlIHBhdGggb2YgdGhlIHJlcXVlc3RlZCBkb2N1bWVudCBpcyBzZW50IHVzaW5nIHRoZSBzdGFuZGFyZCBDR0kKICAgIDxjb2RlPlBBVEhfSU5GTzwvY29kZT4gYW5kIDxjb2RlPlBBVEhfVFJBTlNMQVRFRDwvY29kZT4gZW52aXJvbm1lbnQKICAgIHZhcmlhYmxlcy48L3A+CgogICAgPGRpdiBjbGFzcz0ibm90ZSI+CiAgICAgIEFueSBhcmJpdHJhcnkgbWV0aG9kIG5hbWUgbWF5IGJlIHVzZWQuIDxzdHJvbmc+TWV0aG9kIG5hbWVzIGFyZQogICAgICBjYXNlLXNlbnNpdGl2ZTwvc3Ryb25nPiwgc28gPGNvZGU+U2NyaXB0IFBVVDwvY29kZT4gYW5kCiAgICAgIDxjb2RlPlNjcmlwdCBwdXQ8L2NvZGU+IGhhdmUgdHdvIGVudGlyZWx5IGRpZmZlcmVudAogICAgICBlZmZlY3RzLgogICAgPC9kaXY+CgogICAgPHA+Tm90ZSB0aGF0IHRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5TY3JpcHQ8L2NvZGU+IGNvbW1hbmQgZGVmaW5lcyBkZWZhdWx0CiAgICBhY3Rpb25zIG9ubHkuIElmIGEgQ0dJIHNjcmlwdCBpcyBjYWxsZWQsIG9yIHNvbWUgb3RoZXIgcmVzb3VyY2UgdGhhdCBpcwogICAgY2FwYWJsZSBvZiBoYW5kbGluZyB0aGUgcmVxdWVzdGVkIG1ldGhvZCBpbnRlcm5hbGx5LCBpdCB3aWxsIGRvCiAgICBzby4gQWxzbyBub3RlIHRoYXQgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+U2NyaXB0PC9jb2RlPiB3aXRoIGEgbWV0aG9kIG9mCiAgICA8Y29kZT5HRVQ8L2NvZGU+IHdpbGwgb25seSBiZSBjYWxsZWQgaWYgdGhlcmUgYXJlIHF1ZXJ5IGFyZ3VtZW50cyBwcmVzZW50CiAgICAoPGVtPmUuZy48L2VtPiwgZm9vLmh0bWw/aGkpLiBPdGhlcndpc2UsIHRoZSByZXF1ZXN0IHdpbGwKICAgIHByb2NlZWQgbm9ybWFsbHkuPC9wPgoKICAgIDxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj4jIEFsbCBHRVQgcmVxdWVzdHMgZ28gaGVyZQpTY3JpcHQgR0VUIC9jZ2ktYmluL3NlYXJjaAoKIyBBIENHSSBQVVQgaGFuZGxlcgpTY3JpcHQgUFVUIC9+Ym9iL3B1dC5jZ2k8L3ByZT4KCgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9ImJvdHRvbWxhbmciPgo8cD48c3Bhbj5BdmFpbGFibGUgTGFuZ3VhZ2VzOiA8L3NwYW4+PGEgaHJlZj0iLi4vZGUvbW9kL21vZF9hY3Rpb25zLmh0bWwiIGhyZWZsYW5nPSJkZSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJEZXV0c2NoIj4mbmJzcDtkZSZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9lbi9tb2QvbW9kX2FjdGlvbnMuaHRtbCIgdGl0bGU9IkVuZ2xpc2giPiZuYnNwO2VuJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2ZyL21vZC9tb2RfYWN0aW9ucy5odG1sIiBocmVmbGFuZz0iZnIiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRnJhbudhaXMiPiZuYnNwO2ZyJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2phL21vZC9tb2RfYWN0aW9ucy5odG1sIiBocmVmbGFuZz0iamEiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iSmFwYW5lc2UiPiZuYnNwO2phJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2tvL21vZC9tb2RfYWN0aW9ucy5odG1sIiBocmVmbGFuZz0ia28iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT48L3A+CjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgYWx0PSJ0b3AiIC8+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InNlY3Rpb24iPjxoMj48YSBpZD0iY29tbWVudHNfc2VjdGlvbiIgbmFtZT0iY29tbWVudHNfc2VjdGlvbiI+Q29tbWVudHM8L2E+PC9oMj48ZGl2IGNsYXNzPSJ3YXJuaW5nIj48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz48YnIgLz5UaGlzIGlzIG5vdCBhIFEmYW1wO0Egc2VjdGlvbi4gQ29tbWVudHMgcGxhY2VkIGhlcmUgc2hvdWxkIGJlIHBvaW50ZWQgdG93YXJkcyBzdWdnZXN0aW9ucyBvbiBpbXByb3ZpbmcgdGhlIGRvY3VtZW50YXRpb24gb3Igc2VydmVyLCBhbmQgbWF5IGJlIHJlbW92ZWQgYWdhaW4gYnkgb3VyIG1vZGVyYXRvcnMgaWYgdGhleSBhcmUgZWl0aGVyIGltcGxlbWVudGVkIG9yIGNvbnNpZGVyZWQgaW52YWxpZC9vZmYtdG9waWMuIFF1ZXN0aW9ucyBvbiBob3cgdG8gbWFuYWdlIHRoZSBBcGFjaGUgSFRUUCBTZXJ2ZXIgc2hvdWxkIGJlIGRpcmVjdGVkIGF0IGVpdGhlciBvdXIgSVJDIGNoYW5uZWwsICNodHRwZCwgb24gRnJlZW5vZGUsIG9yIHNlbnQgdG8gb3VyIDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2xpc3RzLmh0bWwiPm1haWxpbmcgbGlzdHM8L2E+LjwvZGl2Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLS8vLS0+PCFbQ0RBVEFbLy8+PCEtLQp2YXIgY29tbWVudHNfc2hvcnRuYW1lID0gJ2h0dHBkJzsKdmFyIGNvbW1lbnRzX2lkZW50aWZpZXIgPSAnaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy90cnVuay9tb2QvbW9kX2FjdGlvbnMuaHRtbCc7CihmdW5jdGlvbih3LCBkKSB7CiAgICBpZiAody5sb2NhdGlvbi5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpID09ICJodHRwZC5hcGFjaGUub3JnIikgewogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+PFwvZGl2PicpOwogICAgICAgIHZhciBzID0gZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgICBzLmFzeW5jID0gdHJ1ZTsKICAgICAgICBzLnNyYyA9ICdodHRwczovL2NvbW1lbnRzLmFwYWNoZS5vcmcvc2hvd19jb21tZW50cy5sdWE/c2l0ZT0nICsgY29tbWVudHNfc2hvcnRuYW1lICsgJyZwYWdlPScgKyBjb21tZW50c19pZGVudGlmaWVyOwogICAgICAgIChkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0gfHwgZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdKS5hcHBlbmRDaGlsZChzKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+Q29tbWVudHMgYXJlIGRpc2FibGVkIGZvciB0aGlzIHBhZ2UgYXQgdGhlIG1vbWVudC48XC9kaXY+Jyk7CiAgICB9Cn0pKHdpbmRvdywgZG9jdW1lbnQpOwovLy0tPjwhXV0+PC9zY3JpcHQ+PC9kaXY+PGRpdiBpZD0iZm9vdGVyIj4KPHAgY2xhc3M9ImFwYWNoZSI+Q29weXJpZ2h0IDIwMTcgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLjxiciAvPkxpY2Vuc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiPkFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMDwvYT4uPC9wPgo8cCBjbGFzcz0ibWVudSI+PGEgaHJlZj0iLi4vbW9kLyI+TW9kdWxlczwvYT4gfCA8YSBocmVmPSIuLi9tb2QvcXVpY2tyZWZlcmVuY2UuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSJodHRwOi8vd2lraS5hcGFjaGUub3JnL2h0dHBkL0ZBUSI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwiPkdsb3NzYXJ5PC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+U2l0ZW1hcDwvYT48L3A+PC9kaXY+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0vLy0tPjwhW0NEQVRBWy8vPjwhLS0KaWYgKHR5cGVvZihwcmV0dHlQcmludCkgIT09ICd1bmRlZmluZWQnKSB7CiAgICBwcmV0dHlQcmludCgpOwp9Ci8vLS0+PCFdXT48L3NjcmlwdD4KPC9ib2R5PjwvaHRtbD4=