PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD48IS0tCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgICAgICAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGZyb20geG1sIHNvdXJjZTogRE8gTk9UIEVESVQKICAgICAgICBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWAogICAgICAtLT4KPHRpdGxlPm1vZF9mY2dpZCAtIEFwYWNoZSBIVFRQIFNlcnZlciBWZXJzaW9uIDIuNTwvdGl0bGU+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTWFpbiBzdHlsZXNoZWV0IiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLWxvb3NlLTEwMHBjLmNzcyIgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgbWVkaWE9ImFsbCIgdHlwZT0idGV4dC9jc3MiIHRpdGxlPSJObyBTaWRlYmFyIC0gRGVmYXVsdCBmb250IHNpemUiIC8+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwtcHJpbnQuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJwcmludCIgdHlwZT0idGV4dC9jc3MiIC8+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vc3R5bGUvY3NzL3ByZXR0aWZ5LmNzcyIgLz4KPHNjcmlwdCBzcmM9Ii4uL3N0eWxlL3NjcmlwdHMvcHJldHRpZnkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8L3NjcmlwdD4KCjxsaW5rIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIgcmVsPSJzaG9ydGN1dCBpY29uIiAvPjwvaGVhZD4KPGJvZHk+CjxkaXYgaWQ9InBhZ2UtaGVhZGVyIj4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4uL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL3F1aWNrcmVmZXJlbmNlLmh0bWwiPkRpcmVjdGl2ZXM8L2E+IHwgPGEgaHJlZj0iaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9GQVEiPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPgo8cCBjbGFzcz0iYXBhY2hlIj5BcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjU8L3A+CjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2ZlYXRoZXIuZ2lmIiAvPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ1cCI+PGEgaHJlZj0iLi8iPjxpbWcgdGl0bGU9IiZsdDstIiBhbHQ9IiZsdDstIiBzcmM9Ii4uL2ltYWdlcy9sZWZ0LmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgaWQ9InBhdGgiPgo8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BcGFjaGU8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIj5IVFRQIFNlcnZlcjwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLyI+RG9jdW1lbnRhdGlvbjwvYT4gJmd0OyA8YSBocmVmPSIuLi8iPlZlcnNpb24gMi41PC9hPiAmZ3Q7IDxhIGhyZWY9Ii4vIj5Nb2R1bGVzPC9hPjwvZGl2Pgo8ZGl2IGlkPSJwYWdlLWNvbnRlbnQiPgo8ZGl2IGlkPSJwcmVhbWJsZSI+PGgxPkFwYWNoZSBNb2R1bGUgbW9kX2ZjZ2lkPC9oMT4KPGRpdiBjbGFzcz0idG9wbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9tb2QvbW9kX2ZjZ2lkLmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT48L3A+CjwvZGl2Pgo8dGFibGUgY2xhc3M9Im1vZHVsZSI+PHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+UHJvdmlkZXMgZm9yIGV4ZWN1dGlvbiBvZiBGYXN0Q0dJIGFwcGxpY2F0aW9uczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlcm5hbDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI01vZHVsZUlkZW50aWZpZXIiPk1vZHVsZaBJZGVudGlmaWVyOjwvYT48L3RoPjx0ZD5mY2dpZF9tb2R1bGU8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNTb3VyY2VGaWxlIj5Tb3VyY2WgRmlsZTo8L2E+PC90aD48dGQ+bW9kX2ZjZ2lkLmM8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNDb21wYXRpYmlsaXR5Ij5Db21wYXRpYmlsaXR5OjwvYT48L3RoPjx0ZD5BcGFjaGUgMi4wIGFuZCBoaWdoZXI8L3RkPjwvdHI+PC90YWJsZT4KPGgzPlN1bW1hcnk8L2gzPgoKICAgIDxwPkFueSBwcm9ncmFtIGFzc2lnbmVkIHRvIHRoZSBoYW5kbGVyIDxjb2RlPmZjZ2lkLXNjcmlwdDwvY29kZT4gaXMgcHJvY2Vzc2VkCiAgICB1c2luZyB0aGUgRmFzdENHSSBwcm90b2NvbDsgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9mY2dpZC5odG1sIj5tb2RfZmNnaWQ8L2E+PC9jb2RlPiBzdGFydHMgYSBzdWZmaWNpZW50CiAgICBudW1iZXIgaW5zdGFuY2VzIG9mIHRoZSBwcm9ncmFtIHRvIGhhbmRsZSBjb25jdXJyZW50IHJlcXVlc3RzLCBhbmQgdGhlc2UKICAgIHByb2dyYW1zIHJlbWFpbiBydW5uaW5nIHRvIGhhbmRsZSBmdXJ0aGVyIGluY29taW5nIHJlcXVlc3RzLiAgVGhpcyBpcwogICAgc2lnbmlmaWNhbnRseSBmYXN0ZXIgdGhhbiB1c2luZyB0aGUgZGVmYXVsdCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2NnaS5odG1sIj5tb2RfY2dpPC9hPjwvY29kZT4gb3IKICAgIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfY2dpZC5odG1sIj5tb2RfY2dpZDwvYT48L2NvZGU+IG1vZHVsZXMgdG8gbGF1bmNoIHRoZSBwcm9ncmFtIHVwb24gZWFjaCByZXF1ZXN0LgogICAgSG93ZXZlciwgdGhlIHByb2dyYW1zIGludm9rZWQgYnkgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9mY2dpZC5odG1sIj5tb2RfZmNnaWQ8L2E+PC9jb2RlPiBjb250aW51ZSB0bwogICAgY29uc3VtZSByZXNvdXJjZXMsIHNvIHRoZSBhZG1pbmlzdHJhdG9yIG11c3Qgd2VpZ2ggdGhlIGltcGFjdCBvZiBpbnZva2luZwogICAgYSBwYXJ0aWN1bGFyIHByb2dyYW0gb25jZSBwZXIgcmVxdWVzdCBhZ2FpbnN0IHRoZSByZXNvdXJjZXMgcmVxdWlyZWQgdG8KICAgIGxlYXZlIGEgc3VmZmljaWVudCBudW1iZXIgb2YgaW5zdGFuY2VzIHJ1bm5pbmcgY29udGludW91c2x5LjwvcD4KCiAgICA8cD5UaGUgcG9vbCBvZiBmY2dpZC1pbnZva2VkIHByb2dyYW1zIGlzIHNoYXJlZCBiZXR3ZWVuIGFsbCBodHRwZCB3b3JrZXJzLgogICAgQ29uZmlndXJhdGlvbiBkaXJlY3RpdmVzIGJlbG93IGxldCB0aGUgYWRtaW5pc3RyYXRvciB0dW5lIHRoZSBudW1iZXIgb2YKICAgIGluc3RhbmNlcyBvZiB0aGUgcHJvZ3JhbSB0aGF0IHdpbGwgcnVuIGNvbmN1cnJlbnRseS48L3A+CgogICAgPHA+U3BlY2lmaWMgZXhlY3V0YWJsZXMgYXJlIGFzc2lnbmVkIHRoaXMgaGFuZGxlciBlaXRoZXIgYnkgaGF2aW5nIGEgbmFtZQogICAgY29udGFpbmluZyBhbiBleHRlbnNpb24gZGVmaW5lZCBieSB0aGUKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfbWltZS5odG1sI2FkZGhhbmRsZXIiPkFkZEhhbmRsZXI8L2E+PC9jb2RlPiBkaXJlY3RpdmUsIG9yIHdpdGggYW4KICAgIG92ZXJyaWRlIHVzaW5nIHRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX21pbWUuaHRtbCNzZXRoYW5kbGVyIj5TZXRIYW5kbGVyPC9hPjwvY29kZT4KICAgIGRpcmVjdGl2ZSAoZS5nLiwgZm9yIGFsbCBmaWxlcyBpbiBhIHNwZWNpZmljIGRpcmVjdG9yeSBzdWNoIGFzIGNnaS1iaW4pLjwvcD4KCiAgICA8cD5Tb21lIGNoYW5nZXMgaGF2ZSBiZWVuIG1hZGUgaW4gdGhlIEFTRiByZWxlYXNlIG9mIG1vZF9mY2dpZCB3aGljaAogICAgY2FuIGFmZmVjdCBleGlzdGluZyBjb25maWd1cmF0aW9ucy4gIEFsbCBkb2N1bWVudGF0aW9uIHJlZmVycyB0byBuZXcKICAgIG5hbWVzIGZvciB0aGUgZGlyZWN0aXZlcy4gIChUaGUgb2xkIG5hbWVzIHN0aWxsIHdvcmsgYnV0IGFyZSBub3cKICAgIGRlcHJlY2F0ZWQuKSAgUGxlYXNlIHJlYWQgdGhlIDxhIGhyZWY9IiN1cGdyYWRlIj5VcGdyYWRlIE5vdGVzPC9hPiBmb3IKICAgIGRldGFpbHMuPC9wPgoKICAgIDxwPkZvciBhbiBpbnRyb2R1Y3Rpb24gdG8gdXNpbmcgQ0dJIHNjcmlwdHMgd2l0aCBBcGFjaGUsIHNlZQogICAgdGhlIGdlbmVyaWMgdHV0b3JpYWwgb24gPGEgaHJlZj0iLi4vaG93dG8vY2dpLmh0bWwiPkR5bmFtaWMgQ29udGVudAogICAgV2l0aCBDR0k8L2E+LjwvcD4KCiAgPC9kaXY+CjxkaXYgaWQ9InF1aWNrdmlldyI+PGgzIGNsYXNzPSJkaXJlY3RpdmVzIj5EaXJlY3RpdmVzPC9oMz4KPHVsIGlkPSJ0b2MiPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNmY2dpZGFjY2Vzc2NoZWNrZXIiPkZjZ2lkQWNjZXNzQ2hlY2tlcjwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNmY2dpZGFjY2Vzc2NoZWNrZXJhdXRob3JpdGF0aXZlIj5GY2dpZEFjY2Vzc0NoZWNrZXJBdXRob3JpdGF0aXZlPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2ZjZ2lkYXV0aGVudGljYXRvciI+RmNnaWRBdXRoZW50aWNhdG9yPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2ZjZ2lkYXV0aGVudGljYXRvcmF1dGhvcml0YXRpdmUiPkZjZ2lkQXV0aGVudGljYXRvckF1dGhvcml0YXRpdmU8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjZmNnaWRhdXRob3JpemVyIj5GY2dpZEF1dGhvcml6ZXI8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjZmNnaWRhdXRob3JpemVyYXV0aG9yaXRhdGl2ZSI+RmNnaWRBdXRob3JpemVyQXV0aG9yaXRhdGl2ZTwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNmY2dpZGJ1c3lzY2FuaW50ZXJ2YWwiPkZjZ2lkQnVzeVNjYW5JbnRlcnZhbDwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNmY2dpZGJ1c3l0aW1lb3V0Ij5GY2dpZEJ1c3lUaW1lb3V0PC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2ZjZ2lkY21kb3B0aW9ucyI+RmNnaWRDbWRPcHRpb25zPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2ZjZ2lkY29ubmVjdHRpbWVvdXQiPkZjZ2lkQ29ubmVjdFRpbWVvdXQ8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjZmNnaWRlcnJvcnNjYW5pbnRlcnZhbCI+RmNnaWRFcnJvclNjYW5JbnRlcnZhbDwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNmY2dpZGZpeHBhdGhpbmZvIj5GY2dpZEZpeFBhdGhpbmZvPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2ZjZ2lkaWRsZXNjYW5pbnRlcnZhbCI+RmNnaWRJZGxlU2NhbkludGVydmFsPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2ZjZ2lkaWRsZXRpbWVvdXQiPkZjZ2lkSWRsZVRpbWVvdXQ8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjZmNnaWRpbml0aWFsZW52Ij5GY2dpZEluaXRpYWxFbnY8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjZmNnaWRpb3RpbWVvdXQiPkZjZ2lkSU9UaW1lb3V0PC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2ZjZ2lkaXBjZGlyIj5GY2dpZElQQ0RpcjwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNmY2dpZG1heHByb2Nlc3NlcyI+RmNnaWRNYXhQcm9jZXNzZXM8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjZmNnaWRtYXhwcm9jZXNzZXNwZXJjbGFzcyI+RmNnaWRNYXhQcm9jZXNzZXNQZXJDbGFzczwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNmY2dpZG1heHJlcXVlc3Rpbm1lbSI+RmNnaWRNYXhSZXF1ZXN0SW5NZW08L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjZmNnaWRtYXhyZXF1ZXN0bGVuIj5GY2dpZE1heFJlcXVlc3RMZW48L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjZmNnaWRtYXhyZXF1ZXN0c3BlcnByb2Nlc3MiPkZjZ2lkTWF4UmVxdWVzdHNQZXJQcm9jZXNzPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2ZjZ2lkbWlucHJvY2Vzc2VzcGVyY2xhc3MiPkZjZ2lkTWluUHJvY2Vzc2VzUGVyQ2xhc3M8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjZmNnaWRvdXRwdXRidWZmZXJzaXplIj5GY2dpZE91dHB1dEJ1ZmZlclNpemU8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjZmNnaWRwYXNzaGVhZGVyIj5GY2dpZFBhc3NIZWFkZXI8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjZmNnaWRwcm9jZXNzbGlmZXRpbWUiPkZjZ2lkUHJvY2Vzc0xpZmVUaW1lPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2ZjZ2lkcHJvY2Vzc3RhYmxlZmlsZSI+RmNnaWRQcm9jZXNzVGFibGVGaWxlPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2ZjZ2lkc3Bhd25zY29yZSI+RmNnaWRTcGF3blNjb3JlPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2ZjZ2lkc3Bhd25zY29yZXVwbGltaXQiPkZjZ2lkU3Bhd25TY29yZVVwTGltaXQ8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjZmNnaWR0ZXJtaW5hdGlvbnNjb3JlIj5GY2dpZFRlcm1pbmF0aW9uU2NvcmU8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjZmNnaWR0aW1lc2NvcmUiPkZjZ2lkVGltZVNjb3JlPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2ZjZ2lkd2luMzJwcmV2ZW50b3JwaGFucyI+RmNnaWRXaW4zMlByZXZlbnRPcnBoYW5zPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2ZjZ2lkd3JhcHBlciI+RmNnaWRXcmFwcGVyPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2ZjZ2lkem9tYmllc2NhbmludGVydmFsIj5GY2dpZFpvbWJpZVNjYW5JbnRlcnZhbDwvYT48L2xpPgo8L3VsPgo8aDM+VG9waWNzPC9oMz4KPHVsIGlkPSJ0b3BpY3MiPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiN1cGdyYWRlIj5VcGdyYWRlIE5vdGVzPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2Vycm9yZG9jdW1lbnRzIj5GY2dpZCBhbmQgQXBhY2hlIEVycm9yRG9jdW1lbnQ8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjZXhhbXBsZXMiPkV4YW1wbGVzPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3Byb2Nlc3MtbWdtdCI+UHJvY2VzcyBNYW5hZ2VtZW50PC9hPjwvbGk+CjwvdWw+PGgzPlNlZSBhbHNvPC9oMz4KPHVsIGNsYXNzPSJzZWVhbHNvIj4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvaG93dG8vY2dpLmh0bWwiPkR5bmFtaWMgQ29udGVudCBXaXRoIENHSTwvYT48L2xpPgo8bGk+PGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy9tb2QvbW9kX2NnaS5odG1sIj5tb2RfY2dpPC9hPjwvbGk+CjxsaT48YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzL21vZC9tb2RfY2dpZC5odG1sIj5tb2RfY2dpZDwvYT48L2xpPgo8L3VsPjx1bCBjbGFzcz0ic2VlYWxzbyI+PGxpPjxhIGhyZWY9IiNjb21tZW50c19zZWN0aW9uIj5Db21tZW50czwvYT48L2xpPjwvdWw+PC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9InVwZ3JhZGUiIGlkPSJ1cGdyYWRlIj5VcGdyYWRlIE5vdGVzPC9hPjwvaDI+CiAgICAKICAgIDxwPlRoZSBmb2xsb3dpbmcgY2hhbmdlcyBoYXZlIGJlZW4gbWFkZSBpbiB0aGUgQVNGIHJlbGVhc2Ugb2YgbW9kX2ZjZ2lkCiAgICBhbmQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgd2hlbiB1cGdyYWRpbmcgZnJvbSB0aGUgb3JpZ2luYWwgdmVyc2lvbiBieQogICAgUnlhbiBQYW4gKFBhbiBRaW5nZmVuZykuPC9wPgogICAgPHVsPgogICAgICA8bGk+QWxsIGRpcmVjdGl2ZXMgaGF2ZSBiZWVuIHJlbmFtZWQgaW4gb3JkZXIgdG8gdXNlIGEgY29tbW9uIHByZWZpeCAiRmNnaWQiLgogICAgICBVbmRlcnNjb3JlcyBpbiBkaXJlY3RpdmUgbmFtZXMgaGF2ZSBiZWVuIGVsaW1pbmF0ZWQgaW4gZmF2b3Igb2YKICAgICAgQ2FtZWxDYXNlLiBUaGUgb2xkIGRpcmVjdGl2ZSBuYW1lcyB3aWxsIHN0aWxsIHdvcmsgYnV0IGFyZSBkZXByZWNhdGVkLgogICAgICBUbyBmaXggeW91ciBjb25maWd1cmF0aW9uIHlvdSBjYW4gdXNlIHRoZSBzZWQgc2NyaXB0IGJ1aWxkL2ZpeGNvbmYuc2VkLgogICAgICBUaGUgZm9sbG93aW5nIHRhYmxlIGNvbnRhaW5zIG9sZCBhbmQgbmV3IGRpcmVjdGl2ZSBuYW1lczoKICAgICAgPHRhYmxlIGNsYXNzPSJib3JkZXJlZCI+PHRyIGNsYXNzPSJoZWFkZXIiPjx0aD5PbGQgTmFtZTwvdGg+PHRoPk5ldyBOYW1lPC90aD48L3RyPgo8dHI+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+QnVzeVNjYW5JbnRlcnZhbDwvY29kZT48L3RkPgogICAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZGJ1c3lzY2FuaW50ZXJ2YWwiPkZjZ2lkQnVzeVNjYW5JbnRlcnZhbDwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8L3RyPgo8dHIgY2xhc3M9Im9kZCI+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+QnVzeVRpbWVvdXQ8L2NvZGU+PC90ZD4KICAgICAgICAgIDx0ZD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRidXN5dGltZW91dCI+RmNnaWRCdXN5VGltZW91dDwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8L3RyPgo8dHI+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+RGVmYXVsdEluaXRFbnY8L2NvZGU+PC90ZD4KICAgICAgICAgIDx0ZD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRpbml0aWFsZW52Ij5GY2dpZEluaXRpYWxFbnY8L2E+PC9jb2RlPjwvdGQ+CiAgICAgICAgPC90cj4KPHRyIGNsYXNzPSJvZGQiPgogICAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkRlZmF1bHRNYXhDbGFzc1Byb2Nlc3NDb3VudDwvY29kZT48L3RkPgogICAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZG1heHByb2Nlc3Nlc3BlcmNsYXNzIj5GY2dpZE1heFByb2Nlc3Nlc1BlckNsYXNzPC9hPjwvY29kZT48L3RkPgogICAgICAgIDwvdHI+Cjx0cj4KICAgICAgICAgIDx0ZD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5EZWZhdWx0TWluQ2xhc3NQcm9jZXNzQ291bnQ8L2NvZGU+PC90ZD4KICAgICAgICAgIDx0ZD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRtaW5wcm9jZXNzZXNwZXJjbGFzcyI+RmNnaWRNaW5Qcm9jZXNzZXNQZXJDbGFzczwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8L3RyPgo8dHIgY2xhc3M9Im9kZCI+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+RXJyb3JTY2FuSW50ZXJ2YWw8L2NvZGU+PC90ZD4KICAgICAgICAgIDx0ZD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRlcnJvcnNjYW5pbnRlcnZhbCI+RmNnaWRFcnJvclNjYW5JbnRlcnZhbDwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8L3RyPgo8dHI+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+RmFzdENnaUFjY2Vzc0NoZWNrZXI8L2NvZGU+PC90ZD4KICAgICAgICAgIDx0ZD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRhY2Nlc3NjaGVja2VyIj5GY2dpZEFjY2Vzc0NoZWNrZXI8L2E+PC9jb2RlPjwvdGQ+CiAgICAgICAgPC90cj4KPHRyIGNsYXNzPSJvZGQiPgogICAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkZhc3RDZ2lBY2Nlc3NDaGVja2VyQXV0aG9yaXRhdGl2ZTwvY29kZT48L3RkPgogICAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZGFjY2Vzc2NoZWNrZXJhdXRob3JpdGF0aXZlIj5GY2dpZEFjY2Vzc0NoZWNrZXJBdXRob3JpdGF0aXZlPC9hPjwvY29kZT48L3RkPgogICAgICAgIDwvdHI+Cjx0cj4KICAgICAgICAgIDx0ZD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5GYXN0Q2dpQXV0aGVudGljYXRvcjwvY29kZT48L3RkPgogICAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZGF1dGhlbnRpY2F0b3IiPkZjZ2lkQXV0aGVudGljYXRvcjwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8L3RyPgo8dHIgY2xhc3M9Im9kZCI+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+RmFzdENnaUF1dGhlbnRpY2F0b3JBdXRob3JpdGF0aXZlPC9jb2RlPjwvdGQ+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkYXV0aGVudGljYXRvcmF1dGhvcml0YXRpdmUiPkZjZ2lkQXV0aGVudGljYXRvckF1dGhvcml0YXRpdmU8L2E+PC9jb2RlPjwvdGQ+CiAgICAgICAgPC90cj4KPHRyPgogICAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkZhc3RDZ2lBdXRob3JpemVyPC9jb2RlPjwvdGQ+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkYXV0aG9yaXplciI+RmNnaWRBdXRob3JpemVyPC9hPjwvY29kZT48L3RkPgogICAgICAgIDwvdHI+Cjx0ciBjbGFzcz0ib2RkIj4KICAgICAgICAgIDx0ZD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5GYXN0Q2dpQXV0aG9yaXplckF1dGhvcml0YXRpdmU8L2NvZGU+PC90ZD4KICAgICAgICAgIDx0ZD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRhdXRob3JpemVyYXV0aG9yaXRhdGl2ZSI+RmNnaWRBdXRob3JpemVyQXV0aG9yaXRhdGl2ZTwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8L3RyPgo8dHI+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+RkNHSVdyYXBwZXI8L2NvZGU+PC90ZD4KICAgICAgICAgIDx0ZD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWR3cmFwcGVyIj5GY2dpZFdyYXBwZXI8L2E+PC9jb2RlPjwvdGQ+CiAgICAgICAgPC90cj4KPHRyIGNsYXNzPSJvZGQiPgogICAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPklkbGVTY2FuSW50ZXJ2YWw8L2NvZGU+PC90ZD4KICAgICAgICAgIDx0ZD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRpZGxlc2NhbmludGVydmFsIj5GY2dpZElkbGVTY2FuSW50ZXJ2YWw8L2E+PC9jb2RlPjwvdGQ+CiAgICAgICAgPC90cj4KPHRyPgogICAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPklkbGVUaW1lb3V0PC9jb2RlPjwvdGQ+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkaWRsZXRpbWVvdXQiPkZjZ2lkSWRsZVRpbWVvdXQ8L2E+PC9jb2RlPjwvdGQ+CiAgICAgICAgPC90cj4KPHRyIGNsYXNzPSJvZGQiPgogICAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPklQQ0NvbW1UaW1lb3V0PC9jb2RlPjwvdGQ+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkaW90aW1lb3V0Ij5GY2dpZElPVGltZW91dDwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8L3RyPgo8dHI+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+SVBDQ29ubmVjdFRpbWVvdXQ8L2NvZGU+PC90ZD4KICAgICAgICAgIDx0ZD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRjb25uZWN0dGltZW91dCI+RmNnaWRDb25uZWN0VGltZW91dDwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8L3RyPgo8dHIgY2xhc3M9Im9kZCI+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+TWF4UHJvY2Vzc0NvdW50PC9jb2RlPjwvdGQ+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkbWF4cHJvY2Vzc2VzIj5GY2dpZE1heFByb2Nlc3NlczwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8L3RyPgo8dHI+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+TWF4UmVxdWVzdEluTWVtPC9jb2RlPjwvdGQ+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkbWF4cmVxdWVzdGlubWVtIj5GY2dpZE1heFJlcXVlc3RJbk1lbTwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8L3RyPgo8dHIgY2xhc3M9Im9kZCI+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+TWF4UmVxdWVzdExlbjwvY29kZT48L3RkPgogICAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZG1heHJlcXVlc3RsZW4iPkZjZ2lkTWF4UmVxdWVzdExlbjwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8L3RyPgo8dHI+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+TWF4UmVxdWVzdHNQZXJQcm9jZXNzPC9jb2RlPjwvdGQ+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkbWF4cmVxdWVzdHNwZXJwcm9jZXNzIj5GY2dpZE1heFJlcXVlc3RzUGVyUHJvY2VzczwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8L3RyPgo8dHIgY2xhc3M9Im9kZCI+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+T3V0cHV0QnVmZmVyU2l6ZTwvY29kZT48L3RkPgogICAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZG91dHB1dGJ1ZmZlcnNpemUiPkZjZ2lkT3V0cHV0QnVmZmVyU2l6ZTwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8L3RyPgo8dHI+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+UGFzc0hlYWRlcjwvY29kZT48L3RkPgogICAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZHBhc3NoZWFkZXIiPkZjZ2lkUGFzc0hlYWRlcjwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8L3RyPgo8dHIgY2xhc3M9Im9kZCI+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+UEhQX0ZpeF9QYXRoaW5mb19FbmFibGU8L2NvZGU+PC90ZD4KICAgICAgICAgIDx0ZD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRmaXhwYXRoaW5mbyI+RmNnaWRGaXhQYXRoaW5mbzwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8L3RyPgo8dHI+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+UHJvY2Vzc0xpZmVUaW1lPC9jb2RlPjwvdGQ+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkcHJvY2Vzc2xpZmV0aW1lIj5GY2dpZFByb2Nlc3NMaWZlVGltZTwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8L3RyPgo8dHIgY2xhc3M9Im9kZCI+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+U2hhcmVtZW1QYXRoPC9jb2RlPjwvdGQ+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkcHJvY2Vzc3RhYmxlZmlsZSI+RmNnaWRQcm9jZXNzVGFibGVGaWxlPC9hPjwvY29kZT48L3RkPgogICAgICAgIDwvdHI+Cjx0cj4KICAgICAgICAgIDx0ZD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5Tb2NrZXRQYXRoPC9jb2RlPjwvdGQ+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkaXBjZGlyIj5GY2dpZElQQ0RpcjwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8L3RyPgo8dHIgY2xhc3M9Im9kZCI+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+U3Bhd25TY29yZTwvY29kZT48L3RkPgogICAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZHNwYXduc2NvcmUiPkZjZ2lkU3Bhd25TY29yZTwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8L3RyPgo8dHI+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+U3Bhd25TY29yZVVwTGltaXQ8L2NvZGU+PC90ZD4KICAgICAgICAgIDx0ZD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRzcGF3bnNjb3JldXBsaW1pdCI+RmNnaWRTcGF3blNjb3JlVXBMaW1pdDwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8L3RyPgo8dHIgY2xhc3M9Im9kZCI+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+VGVybWluYXRpb25TY29yZTwvY29kZT48L3RkPgogICAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZHRlcm1pbmF0aW9uc2NvcmUiPkZjZ2lkVGVybWluYXRpb25TY29yZTwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8L3RyPgo8dHI+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+VGltZVNjb3JlPC9jb2RlPjwvdGQ+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkdGltZXNjb3JlIj5GY2dpZFRpbWVTY29yZTwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8L3RyPgo8dHIgY2xhc3M9Im9kZCI+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+Wm9tYmllU2NhbkludGVydmFsPC9jb2RlPjwvdGQ+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkem9tYmllc2NhbmludGVydmFsIj5GY2dpZFpvbWJpZVNjYW5JbnRlcnZhbDwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8L3RyPgo8L3RhYmxlPgogICAgICA8L2xpPgogICAgPC91bD4KCiAgPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0iZXJyb3Jkb2N1bWVudHMiIGlkPSJlcnJvcmRvY3VtZW50cyI+RmNnaWQgYW5kIEFwYWNoZSBFcnJvckRvY3VtZW50PC9hPjwvaDI+CiAgICAKICAgIDxwPlRoZSBjb3JlIGRpcmVjdGl2ZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvY29yZS5odG1sI2Vycm9yZG9jdW1lbnQiPkVycm9yRG9jdW1lbnQ8L2E+PC9jb2RlPiBhbGxvd3MgdGhlIHVzZXIgdG8gc3BlY2lmeSBjdXN0b20gZXJyb3IgcGFnZXMKICAgICAgIGZvciBzcGVjaWZpYyBIVFRQIGVycm9yIGNvZGVzLiBBbiBpbXBvcnRhbnQgbm90ZSBtdXN0IGJlIG1hZGU6IGlmIHRoZSBlcnJvciAKICAgICAgIHBhZ2UgaXMgZ2VuZXJhdGVkIGJ5IHRoZSBmYXN0Y2dpIHNjcmlwdCwgPGNvZGU+bW9kX2ZjZ2lkPC9jb2RlPiB3aWxsCiAgICAgICBwYXNzIHRoZSByZXNwb25zZSBkb3duIHRvIHRoZSBvdXRwdXQgZmlsdGVyIGNoYWluIGJ5cGFzc2luZyB0aGUgQXBhY2hlJ3MgCiAgICAgICBFcnJvckRvY3VtZW50cy4gQ29udmVyc2VseSwgaWYgdGhlIGVycm9yIGlzIGdlbmVyYXRlZCBieSBBcGFjaGUgaXRzZWxmIChmb3IgZXhhbXBsZSwgYSBIVFRQIDQwNAogICAgICAgZHVlIHRvIGEgbWlzc2luZyByZXNvdXJjZSkgdGhlbiB0aGUgRXJyb3JEb2N1bWVudCBzZXQgd2lsbCBiZSB1c2VkLiAKICAgICAgIFRoaXMgYmVoYXZpb3VyIGlzIHRoZSBtb3N0IGNvbnNlcnZhdGl2ZSBvbmUgdG8gaW50ZXJmZXJlIGFzIGxpdHRsZSBhcwogICAgICAgcG9zc2libGUgd2l0aCB0aGUgZmFzdGNnaSdzIHJlc3BvbnNlIGdlbmVyYXRpb24gbG9naWMuIDxjb2RlPm1vZF9wcm94eTwvY29kZT4gc2hvd3MgdGhlIHNhbWUgCiAgICAgICBiZWhhdmlvdXIgYnV0IGl0IG9mZmVycyA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX3Byb3h5Lmh0bWwjcHJveHllcnJvcm92ZXJyaWRlIj5Qcm94eUVycm9yT3ZlcnJpZGU8L2E+PC9jb2RlPiAKICAgICAgIHRvIGZvcmNlIHRoZSB1c2Ugb2YgRXJyb3JEb2N1bWVudHMsIG1lYW53aGlsZSA8Y29kZT5tb2RfZmNnaWQ8L2NvZGU+IGRvZXMgbm90LiAKICAgICAgIEEgY29tbW9uIHdvcmthcm91bmQgaXMgdG8gaW5zdHJ1Y3QgdGhlIGZjZ2kgc2NyaXB0IHRvIGdlbmVyYXRlIHRoZSBFcnJvckRvY3VtZW50cwogICAgICAgdG8gaGF2ZSBmdWxsIGNvbnRyb2wgb2YgdGhlIHJlc3BvbnNlIGNvbnRlbnQuPC9wPgogIDwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImV4YW1wbGVzIiBpZD0iZXhhbXBsZXMiPkV4YW1wbGVzPC9hPjwvaDI+CiAgICAKCiAgICA8ZGl2IGNsYXNzPSJub3RlIj48aDM+Tm90ZTwvaDM+CiAgICA8cD5UaGUgZXhhbXBsZXMgYXNzdW1lIHRoYXQgbW9kX2ZjZ2lkIGFuZCBvdGhlciBuZWNlc3NhcnkKICAgIG1vZHVsZXMgYXJlIGxvYWRlZCBpbnRvIHRoZSBzZXJ2ZXIgYWxyZWFkeSwgZWl0aGVyIGJ1aWx0LWluIG9yCiAgICB2aWEgdGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2Rfc28uaHRtbCNsb2FkbW9kdWxlIj5Mb2FkTW9kdWxlPC9hPjwvY29kZT4KICAgIGRpcmVjdGl2ZS48L3A+CgogICAgPHA+QWRkaXRpb25hbGx5LCB0aGUgZXhhbXBsZSBjb25maWd1cmF0aW9ucyBwcm92aWRlIGZ1bGwgYWNjZXNzCiAgICB0byB0aGUgYXBwbGljYXRpb25zIHVzaW5nIGFjY2VzcyBjb250cm9sIGRpcmVjdGl2ZXMgd2hpY2ggd29yawogICAgd2l0aCBBcGFjaGUgMi4wIGFuZCAyLjIuICBUaGVzZSBkaXJlY3RpdmVzIGFyZSBub3QgYXBwcm9wcmlhdGUKICAgIGZvciBhbGwgZW52aXJvbm1lbnRzLCBhbmQgdGhleSBkbyBub3Qgd29yayBmb3IgZGV2ZWxvcG1lbnQKICAgIGxldmVscyBvZiBBcGFjaGUgSFRUUCBTZXJ2ZXIgKFN1YnZlcnNpb24gdHJ1bmspLjwvcD4KICAgIDwvZGl2PgoKICAgIDxwPlRoZSBmaXJzdCBleGFtcGxlIGlzIGEgdmVyeSBzaW1wbGUgUGVybCBGYXN0Q0dJIGFwcGxpY2F0aW9uLAogICAgYW5kIGl0cyBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZXMuICBUaGlzIGlzIHR5cGljYWwgZm9yIEZhc3RDR0kKICAgIGFwcGxpY2F0aW9ucyB3aGljaCByZXF1aXJlIG5vIHNwZWNpYWwgY29uZmlndXJhdGlvbi48L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPlBlcmwgRmFzdENHSSBhcHBsaWNhdGlvbiAtIC91c3IvbG9jYWwvYXBhY2hlL2ZjZ2ktYmluL2Zvby5wbDwvaDM+PHA+PGNvZGU+CiAgICAjIS91c3IvYmluL3Blcmw8YnIgLz4KICAgIHVzZSBDR0k6OkZhc3Q7PGJyIC8+CiAgICA8YnIgLz4KICAgIHdoaWxlIChteSAkcSA9IENHSTo6RmFzdC0mZ3Q7bmV3KSB7PGJyIC8+CiAgICA8c3BhbiBjbGFzcz0iaW5kZW50Ij4KICAgICAgICBwcmludCgiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluXG5cbiIpOzxiciAvPgogICAgICAgIGZvcmVhY2ggJHZhciAoc29ydChrZXlzKCVFTlYpKSkgezxiciAvPgogICAgICAgIDxzcGFuIGNsYXNzPSJpbmRlbnQiPgogICAgICAgICAgICAkdmFsID0gJEVOVnskdmFyfTs8YnIgLz4KICAgICAgICAgICAgJHZhbCA9fiBzfFxufFxcbnxnOzxiciAvPgogICAgICAgICAgICAkdmFsID1+IHN8InxcXCJ8Zzs8YnIgLz4KICAgICAgICAgICAgcHJpbnQgIiR7dmFyfT1cIiR7dmFsfVwiXG4iOzxiciAvPgogICAgICAgIDwvc3Bhbj4KICAgICAgICB9PGJyIC8+CiAgICA8L3NwYW4+CiAgICB9PGJyIC8+CiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxoMz5Db25maWd1cmF0aW9uIGRpcmVjdGl2ZXM8L2gzPjxwPjxjb2RlPgogICAgJmx0O0RpcmVjdG9yeSAvdXNyL2xvY2FsL2FwYWNoZS9mY2dpLWJpbi8mZ3Q7PGJyIC8+CiAgICA8c3BhbiBjbGFzcz0iaW5kZW50Ij4KICAgICAgU2V0SGFuZGxlciBmY2dpZC1zY3JpcHQ8YnIgLz4KICAgICAgT3B0aW9ucyArRXhlY0NHSTxiciAvPgogICAgICA8YnIgLz4KICAgICAgIyBDdXN0b21pemUgdGhlIG5leHQgdHdvIGRpcmVjdGl2ZXMgZm9yIHlvdXIgcmVxdWlyZW1lbnRzLjxiciAvPgogICAgICBPcmRlciBhbGxvdyxkZW55PGJyIC8+CiAgICAgIEFsbG93IGZyb20gYWxsPGJyIC8+CiAgICA8L3NwYW4+CiAgICAmbHQ7L0RpcmVjdG9yeSZndDs8YnIgLz4KICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+UEhQIGFwcGxpY2F0aW9ucyBhcmUgdXN1YWxseSBjb25maWd1cmVkIHVzaW5nIHRoZQogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkd3JhcHBlciI+RmNnaWRXcmFwcGVyPC9hPjwvY29kZT4gZGlyZWN0aXZlCiAgICBhbmQgYSBjb3JyZXNwb25kaW5nIHdyYXBwZXIgc2NyaXB0LiAgVGhlIHdyYXBwZXIgc2NyaXB0IGNhbiBiZQogICAgYW4gYXBwcm9wcmlhdGUgcGxhY2UgdG8gZGVmaW5lIGFueSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgcmVxdWlyZWQKICAgIGJ5IHRoZSBhcHBsaWNhdGlvbiwgc3VjaCBhcyA8Y29kZT5QSFBfRkNHSV9NQVhfUkVRVUVTVFM8L2NvZGU+CiAgICBvciBhbnl0aGluZyBlbHNlLiAgKEVudmlyb25tZW50IHZhcmlhYmxlcyBjYW4gYWxzbyBiZSBzZXQgd2l0aAogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkaW5pdGlhbGVudiI+RmNnaWRJbml0aWFsRW52PC9hPjwvY29kZT4sCiAgICBidXQgdGhleSB0aGVuIGFwcGx5IHRvIGFsbCBhcHBsaWNhdGlvbnMuKTwvcD4KCiAgICA8cD5IZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCB1c2VzIGEgd3JhcHBlciBzY3JpcHQgdG8gaW52b2tlIFBIUDo8L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPlBIUCBhcHBsaWNhdGlvbiAtIC91c3IvbG9jYWwvcGhwYXBwL3BocGluZm8ucGhwPC9oMz48cD48Y29kZT4KICAgICZsdDs/cGhwPGJyIC8+CiAgICA8c3BhbiBjbGFzcz0iaW5kZW50Ij4KICAgICAgcGhwaW5mbygpOzxiciAvPgogICAgPC9zcGFuPgogICAgPyZndDs8YnIgLz4KICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPkNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlczwvaDM+PHA+PGNvZGU+CiAgICAjIEZjZ2lkTWF4UmVxdWVzdHNQZXJQcm9jZXNzIHNob3VsZCBiZSAmbHQ7PSBQSFBfRkNHSV9NQVhfUkVRVUVTVFM8YnIgLz4KICAgICMgVGhlIGV4YW1wbGUgUEhQIHdyYXBwZXIgc2NyaXB0IG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBQSFAgc2V0dGluZy48YnIgLz4KICAgIEZjZ2lkTWF4UmVxdWVzdHNQZXJQcm9jZXNzIDEwMDAwPGJyIC8+CiAgICA8YnIgLz4KICAgICMgVW5jb21tZW50IHRoZSBmb2xsb3dpbmcgbGluZSBpZiBjZ2kuZml4X3BhdGhpbmZvIGlzIHNldCB0byAxIGluPGJyIC8+CiAgICAjIHBocC5pbmk6PGJyIC8+CiAgICAjIEZjZ2lkRml4UGF0aGluZm8gMTxiciAvPgogICAgPGJyIC8+CiAgICBBbGlhcyAvcGhwYXBwLyAvdXNyL2xvY2FsL3BocGFwcC88YnIgLz4KICAgICZsdDtMb2NhdGlvbiAvcGhwYXBwLyZndDs8YnIgLz4KICAgIDxzcGFuIGNsYXNzPSJpbmRlbnQiPgogICAgICBBZGRIYW5kbGVyIGZjZ2lkLXNjcmlwdCAucGhwPGJyIC8+CiAgICAgIE9wdGlvbnMgK0V4ZWNDR0k8YnIgLz4KICAgICAgRmNnaWRXcmFwcGVyIC91c3IvbG9jYWwvYmluL3BocC13cmFwcGVyIC5waHA8YnIgLz4KICAgICAgPGJyIC8+CiAgICAgICMgQ3VzdG9taXplIHRoZSBuZXh0IHR3byBkaXJlY3RpdmVzIGZvciB5b3VyIHJlcXVpcmVtZW50cy48YnIgLz4KICAgICAgT3JkZXIgYWxsb3csZGVueTxiciAvPgogICAgICBBbGxvdyBmcm9tIGFsbDxiciAvPgogICAgPC9zcGFuPgogICAgJmx0Oy9Mb2NhdGlvbiZndDs8YnIgLz4KICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPlBIUCB3cmFwcGVyIHNjcmlwdCAtIC91c3IvbG9jYWwvYmluL3BocC13cmFwcGVyPC9oMz48cD48Y29kZT4KICAgICMhL2Jpbi9zaDxiciAvPgogICAgIyBTZXQgZGVzaXJlZCBQSFBfRkNHSV8qIGVudmlyb25tZW50IHZhcmlhYmxlcy48YnIgLz4KICAgICMgRXhhbXBsZTo8YnIgLz4KICAgICMgUEhQIEZhc3RDR0kgcHJvY2Vzc2VzIGV4aXQgYWZ0ZXIgNTAwIHJlcXVlc3RzIGJ5IGRlZmF1bHQuPGJyIC8+CiAgICBQSFBfRkNHSV9NQVhfUkVRVUVTVFM9MTAwMDA8YnIgLz4KICAgIGV4cG9ydCBQSFBfRkNHSV9NQVhfUkVRVUVTVFM8YnIgLz4KICAgIDxiciAvPgogICAgIyBSZXBsYWNlIHdpdGggdGhlIHBhdGggdG8geW91ciBGYXN0Q0dJLWVuYWJsZWQgUEhQIGV4ZWN1dGFibGU8YnIgLz4KICAgIGV4ZWMgL3Vzci9sb2NhbC9iaW4vcGhwLWNnaTxiciAvPgogICAgPC9jb2RlPjwvcD48L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJub3RlIj48aDM+U3BlY2lhbCBQSFAgY29uc2lkZXJhdGlvbnM8L2gzPgogICAgPHA+QnkgZGVmYXVsdCwgUEhQIEZhc3RDR0kgcHJvY2Vzc2VzIGV4aXQgYWZ0ZXIgaGFuZGxpbmcgNTAwCiAgICByZXF1ZXN0cywgYW5kIHRoZXkgbWF5IGV4aXQgYWZ0ZXIgdGhpcyBtb2R1bGUgaGFzIGFscmVhZHkKICAgIGNvbm5lY3RlZCB0byB0aGUgYXBwbGljYXRpb24gYW5kIHNlbnQgdGhlIG5leHQgcmVxdWVzdC4gIFdoZW4gdGhhdAogICAgb2NjdXJzLCBhbiBlcnJvciB3aWxsIGJlIGxvZ2dlZCBhbmQgPGNvZGU+NTAwIEludGVybmFsIFNlcnZlcgogICAgRXJyb3I8L2NvZGU+IHdpbGwgYmUgcmV0dXJuZWQgdG8gdGhlIGNsaWVudC4gIFRoaXMgUEhQIGJlaGF2aW9yCiAgICBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyA8Y29kZT5QSFBfRkNHSV9NQVhfUkVRVUVTVFM8L2NvZGU+IHRvCiAgICAwLCBidXQgdGhhdCBjYW4gYmUgYSBwcm9ibGVtIGlmIHRoZSBQSFAgYXBwbGljYXRpb24gbGVha3MKICAgIHJlc291cmNlcy4gIEFsdGVybmF0aXZlbHksIDxjb2RlPlBIUF9GQ0dJX01BWF9SRVFVRVNUUzwvY29kZT4gY2FuCiAgICBiZSBzZXQgdG8gYSBtdWNoIGhpZ2hlciB2YWx1ZSB0aGFuIHRoZSBkZWZhdWx0IHRvIHJlZHVjZSB0aGUKICAgIGZyZXF1ZW5jeSBvZiB0aGlzIHByb2JsZW0uCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRtYXhyZXF1ZXN0c3BlcnByb2Nlc3MiPkZjZ2lkTWF4UmVxdWVzdHNQZXJQcm9jZXNzPC9hPjwvY29kZT4KICAgIGNhbiBiZSBzZXQgdG8gYSB2YWx1ZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8KICAgIDxjb2RlPlBIUF9GQ0dJX01BWF9SRVFVRVNUUzwvY29kZT4gdG8gcmVzb2x2ZSB0aGUgcHJvYmxlbS48L3A+CgogICAgPHA+UEhQIGNoaWxkIHByb2Nlc3MgbWFuYWdlbWVudCAoPGNvZGU+UEhQX0ZDR0lfQ0hJTERSRU48L2NvZGU+KQogICAgc2hvdWxkIGFsd2F5cyBiZSBkaXNhYmxlZCB3aXRoIG1vZF9mY2dpZCwgd2hpY2ggd2lsbCBvbmx5IHJvdXRlCiAgICBvbmUgcmVxdWVzdCBhdCBhIHRpbWUgdG8gYXBwbGljYXRpb24gcHJvY2Vzc2VzIGl0IGhhcyBzcGF3bmVkOwogICAgdGh1cywgYW55IGNoaWxkIHByb2Nlc3NlcyBjcmVhdGVkIGJ5IFBIUCB3aWxsIG5vdCBiZSB1c2VkCiAgICBlZmZlY3RpdmVseS4gIChBZGRpdGlvbmFsbHksIHRoZSBQSFAgY2hpbGQgcHJvY2Vzc2VzIG1heSBub3QgYmUKICAgIHRlcm1pbmF0ZWQgcHJvcGVybHkuKSBCeSBkZWZhdWx0LCBhbmQgd2l0aCB0aGUgZW52aXJvbm1lbnQKICAgIHZhcmlhYmxlIHNldHRpbmcgPGNvZGU+UEhQX0ZDR0lfQ0hJTERSRU49MDwvY29kZT4sIFBIUCBjaGlsZAogICAgcHJvY2VzcyBtYW5hZ2VtZW50IGlzIGRpc2FibGVkLjwvcD4KCiAgICA8cD5UaGUgcG9wdWxhciBBUEMgb3Bjb2RlIGNhY2hlIGZvciBQSFAgY2Fubm90IHNoYXJlIGEgY2FjaGUKICAgIGJldHdlZW4gUEhQIEZhc3RDR0kgcHJvY2Vzc2VzIHVubGVzcyBQSFAgbWFuYWdlcyB0aGUgY2hpbGQKICAgIHByb2Nlc3Nlcy4gIFRodXMsIHRoZSBlZmZlY3RpdmVuZXNzIG9mIHRoZSBjYWNoZSBpcyBsaW1pdGVkIHdpdGgKICAgIG1vZF9mY2dpZDsgY29uY3VycmVudCBQSFAgcmVxdWVzdHMgd2lsbCB1c2UgZGlmZmVyZW50IG9wY29kZQogICAgY2FjaGVzLjwvcD4KICAgIDwvZGl2PgoKICA8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJwcm9jZXNzLW1nbXQiIGlkPSJwcm9jZXNzLW1nbXQiPlByb2Nlc3MgTWFuYWdlbWVudDwvYT48L2gyPgogICAgCgogICAgPHA+bW9kX2ZjZ2lkIGhhcyBzZXZlcmFsIHR5cGVzIG9mIGNvbnRyb2xzIHdoaWNoIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgIG9mIGFkZGl0aW9uYWwgYXBwbGljYXRpb24gcHJvY2Vzc2VzOjwvcD4KCiAgICA8dGFibGUgY2xhc3M9ImJvcmRlcmVkIj48dHIgY2xhc3M9ImhlYWRlciI+PHRoPlR5cGUgb2YgY29udHJvbDwvdGg+PHRoPkRpcmVjdGl2ZTwvdGg+PC90cj4KPHRyPgogICAgICAgIDx0ZD5nbG9iYWwgbGltaXQgb24gbnVtYmVyIG9mIHByb2Nlc3NlczwvdGQ+CiAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZG1heHByb2Nlc3NlcyI+RmNnaWRNYXhQcm9jZXNzZXM8L2E+PC9jb2RlPjwvdGQ+CiAgICAgIDwvdHI+Cjx0ciBjbGFzcz0ib2RkIj4KICAgICAgICA8dGQ+bGltaXQgb24gbnVtYmVyIG9mIHByb2Nlc3NlcyBwZXIgYXBwbGljYXRpb248L3RkPgogICAgICAgIDx0ZD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRtYXhwcm9jZXNzZXNwZXJjbGFzcyI+RmNnaWRNYXhQcm9jZXNzZXNQZXJDbGFzczwvYT48L2NvZGU+PC90ZD4KICAgICAgPC90cj4KPHRyPgogICAgICAgIDx0ZD5saW1pdCBvbiByYXRlIG9mIHNwYXduaW5nIG5ldyBhcHBsaWNhdGlvbiBwcm9jZXNzZXM8L3RkPgogICAgICAgIDx0ZD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRzcGF3bnNjb3JldXBsaW1pdCI+RmNnaWRTcGF3blNjb3JlVXBMaW1pdDwvYT48L2NvZGU+IGFuZAogICAgICAgIG90aGVyIHNjb3JlLXJlbGF0ZWQgZGlyZWN0aXZlczwvdGQ+CiAgICAgIDwvdHI+CjwvdGFibGU+CgogICAgPHA+bW9kX2ZjZ2lkIGhhcyBzZXZlcmFsIHR5cGVzIG9mIGNvbnRyb2xzIHdoaWNoIGFmZmVjdCB0aGUgdGVybWluYXRpb24KICAgIG9mIGV4aXN0aW5nIGFwcGxpY2F0aW9uIHByb2Nlc3Nlczo8L3A+CgogICAgPHRhYmxlIGNsYXNzPSJib3JkZXJlZCI+PHRyIGNsYXNzPSJoZWFkZXIiPjx0aD5UeXBlIG9mIGNvbnRyb2w8L3RoPjx0aD5EaXJlY3RpdmU8L3RoPjwvdHI+Cjx0cj4KICAgICAgICA8dGQ+dGVybWluYXRpb24gYWZ0ZXIgYW4gaWRsZSBwZXJpb2Q8L3RkPgogICAgICAgIDx0ZD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRpZGxldGltZW91dCI+RmNnaWRJZGxlVGltZW91dDwvYT48L2NvZGU+PC90ZD4KICAgICAgPC90cj4KPHRyIGNsYXNzPSJvZGQiPgogICAgICAgIDx0ZD50ZXJtaW5hdGlvbiBhZnRlciBpdCBoYW5kbGVzIGEgY2VydGFpbiBudW1iZXIgb2YgcmVxdWVzdHM8L3RkPgogICAgICAgIDx0ZD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRtYXhyZXF1ZXN0c3BlcnByb2Nlc3MiPkZjZ2lkTWF4UmVxdWVzdHNQZXJQcm9jZXNzPC9hPjwvY29kZT48L3RkPgogICAgICA8L3RyPgo8dHI+CiAgICAgICAgPHRkPnRlcm1pbmF0aW9uIGFmdGVyIGEgY2VydGFpbiBsaWZldGltZTwvdGQ+CiAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZHByb2Nlc3NsaWZldGltZSI+RmNnaWRQcm9jZXNzTGlmZXRpbWU8L2E+PC9jb2RlPjwvdGQ+CiAgICAgIDwvdHI+CjwvdGFibGU+CgogICAgPHA+U2V2ZXJhbCBvZiB0aGUgZGlyZWN0aXZlcyBjb250cm9sIHByb2Nlc3NpbmcgZm9yIGEgPGVtPnByb2Nlc3MKICAgIGNsYXNzPC9lbT4uICBBIHByb2Nlc3MgY2xhc3MgaXMgdGhlIHNldCBvZiBwcm9jZXNzZXMgd2hpY2ggd2VyZSBzdGFydGVkCiAgICB3aXRoIHRoZSBzYW1lIGV4ZWN1dGFibGUgZmlsZSBhbmQgc2hhcmUgY2VydGFpbiBvdGhlciBjaGFyYWN0ZXJpc3RpY3Mgc3VjaAogICAgYXMgdmlydHVhbCBob3N0IGFuZCBpZGVudGl0eS4gIFR3byBjb21tYW5kcyB3aGljaCBhcmUgbGlua3MgdG8gb3Igb3RoZXJ3aXNlCiAgICByZWZlciB0byB0aGUgc2FtZSBleGVjdXRhYmxlIGZpbGUgc2hhcmUgdGhlIHNhbWUgcHJvY2VzcyBjbGFzcy48L3A+CgogICAgPGRpdiBjbGFzcz0ibm90ZSI+PGgzPk5vdGU8L2gzPgogICAgPHA+Q2VydGFpbiBzZXR0aW5ncyBvciBvdGhlciBjb25jZXB0cyB0aGF0IGRlcGVuZCBvbiB0aGUgdmlydHVhbCBob3N0LAogICAgc3VjaCBhcyA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRpbml0aWFsZW52Ij5GY2dpZEluaXRpYWxFbnY8L2E+PC9jb2RlPgogICAgb3IgcHJvY2VzcyBjbGFzc2VzLCBkaXN0aW5ndWlzaCBiZXR3ZWVuIHZpcnR1YWwgaG9zdHMgb25seSBpZiB0aGV5CiAgICBoYXZlIGRpc3RpbmN0IHNlcnZlciBuYW1lcy4gIChTZWUgdGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPlNlcnZlck5hbWU8L2NvZGU+CiAgICBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLikgSW4gdGhlIGNhc2Ugb2YKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZGluaXRpYWxlbnYiPkZjZ2lkSW5pdGlhbEVudjwvYT48L2NvZGU+LCBpZiB0d28KICAgIHZpcnR1YWwgaG9zdHMgaGF2ZSB0aGUgc2FtZSBzZXJ2ZXIgbmFtZSBidXQgZGlmZmVyZW50IGVudmlyb25tZW50cyBhcwogICAgZGVmaW5lZCBieQogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkaW5pdGlhbGVudiI+RmNnaWRJbml0aWFsRW52PC9hPjwvY29kZT4sIHRoZQogICAgZW52aXJvbm1lbnQgdXNlZCBmb3IgYSBwYXJ0aWN1bGFyIHJlcXVlc3Qgd2lsbCBiZSB0aGF0IGRlZmluZWQgZm9yIHRoZQogICAgdmlydHVhbCBob3N0IG9mIHRoZSByZXF1ZXN0IHRoYXQgY2F1c2VkIHRoZSBGYXN0Q0dJIHByb2Nlc3MgdG8gYmUKICAgIHN0YXJ0ZWQuPC9wPgogICAgPC9kaXY+CgogICAgPHA+SW5mb3JtYXRpb24gYWJvdXQgZWFjaCBwcm9jZXNzIHdpbGwgYmUgZGlzcGxheWVkIGluIHRoZQogICAgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9zdGF0dXMuaHRtbCI+bW9kX3N0YXR1czwvYT48L2NvZGU+IHNlcnZlci1zdGF0dXMgcGFnZS48L3A+CiAgPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkZjZ2lkQWNjZXNzQ2hlY2tlciIgaWQ9IkZjZ2lkQWNjZXNzQ2hlY2tlciI+RmNnaWRBY2Nlc3NDaGVja2VyPC9hPiA8YSBuYW1lPSJmY2dpZGFjY2Vzc2NoZWNrZXIiIGlkPSJmY2dpZGFjY2Vzc2NoZWNrZXIiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPmZ1bGwgcGF0aCB0byBGYXN0Q0dJIGFjY2VzcyBjaGVja2VyPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkZjZ2lkQWNjZXNzQ2hlY2tlciA8ZW0+Y29tbWFuZDwvZW0+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPm5vbmU8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+ZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNPdmVycmlkZSI+T3ZlcnJpZGU6PC9hPjwvdGg+PHRkPkZpbGVJbmZvPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVybmFsPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9mY2dpZDwvdGQ+PC90cj4KPC90YWJsZT4KICAgICAgPHA+QWNjZXNzIGNoZWNraW5nIG9yLCBtb3JlIGZvcm1hbGx5LCBhY2Nlc3MgY29udHJvbCwgaXMgYSBwcm9jZWR1cmUKICAgICAgd2hpY2ggdmVyaWZpZXMgdGhhdCB0aGUgY2xpZW50IGlzIGFsbG93ZWQgdG8gYWNjZXNzIGEgcmVzb3VyY2UsIHVzaW5nCiAgICAgIHNvbWUgbWVjaGFuaXNtIG90aGVyIHRoYW4gYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24uPC9wPgoKICAgICAgPHA+S2V5IGVudmlyb25tZW50IHZhcmlhYmxlcyBwYXNzZWQgdG8gdGhlIGFwcGxpY2F0aW9uIGZvciBhY2Nlc3MKICAgICAgY2hlY2tpbmcgYXJlOjwvcD4KCiAgICAgIDxkbD4KICAgICAgICA8ZHQ+PGNvZGU+RkNHSV9BUEFDSEVfUk9MRTwvY29kZT48L2R0PgogICAgICAgIDxkZD5zZXQgdG8gPGNvZGU+QUNDRVNTX0NIRUNLRVI8L2NvZGU+OyBieSBjaGVja2luZyB0aGUgY3VycmVudCByb2xlLAogICAgICAgIHRoZSBzYW1lIEZhc3RDR0kgYXBwbGljYXRpb24gY2FuIGhhbmRsZSBtdWx0aXBsZSBzdGFnZXMgb2YgcmVxdWVzdAogICAgICAgIHByb2Nlc3Npbmc8L2RkPgogICAgICA8L2RsPgoKICAgICAgPHA+VGhlIGFwcGxpY2F0aW9uIG11c3Qgb3V0cHV0IGEgPGNvZGU+U3RhdHVzPC9jb2RlPiBsaW5lIHRvIGluZGljYXRlCiAgICAgIHRoZSByZXN1bHQgb2YgdGhlIGNoZWNrLjwvcD4KCiAgICAgIDxkaXYgY2xhc3M9Indhcm5pbmciPjxoMz5XYXJuaW5nPC9oMz4KICAgICAgPHA+QmVmb3JlIDIuMy42LCBvbmx5IG9uZSBGYXN0Q0dJIGFwcGxpY2F0aW9uIG9mIGFueSB0eXBlIChBQUEgb3IgaGFuZGxlcikKICAgICAgY2FuIGJlIHVzZWQgZm9yIGEgcGFydGljdWxhciByZXF1ZXN0IFVSSS4gIE90aGVyd2lzZSwgdGhlIHdyb25nIEZhc3RDR0kKICAgICAgYXBwbGljYXRpb24gbWF5IGJlIGludm9rZWQgZm9yIG9uZSBvciBtb3JlIHBoYXNlcyBvZiByZXF1ZXN0IHByb2Nlc3NpbmcuPC9wPgogICAgICA8L2Rpdj4KICAgIAo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iRmNnaWRBY2Nlc3NDaGVja2VyQXV0aG9yaXRhdGl2ZSIgaWQ9IkZjZ2lkQWNjZXNzQ2hlY2tlckF1dGhvcml0YXRpdmUiPkZjZ2lkQWNjZXNzQ2hlY2tlckF1dGhvcml0YXRpdmU8L2E+IDxhIG5hbWU9ImZjZ2lkYWNjZXNzY2hlY2tlcmF1dGhvcml0YXRpdmUiIGlkPSJmY2dpZGFjY2Vzc2NoZWNrZXJhdXRob3JpdGF0aXZlIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5TZXQgdG8gJ29mZicgdG8gYWxsb3cgYWNjZXNzIGNvbnRyb2wgdG8gYmUgcGFzc2VkIGFsb25nIHRvIGxvd2VyIG1vZHVsZXMgdXBvbiBmYWlsdXJlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkZjZ2lkQWNjZXNzQ2hlY2tlckF1dGhvcml0YXRpdmUgPGVtPk9ufE9mZjwvZW0+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkZjZ2lkQWNjZXNzQ2hlY2tlckF1dGhvcml0YXRpdmUgT248L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+ZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNPdmVycmlkZSI+T3ZlcnJpZGU6PC9hPjwvdGg+PHRkPkZpbGVJbmZvPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVybmFsPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9mY2dpZDwvdGQ+PC90cj4KPC90YWJsZT4KICAgICAgPHA+VGhpcyBkaXJlY3RpdmUgY29udHJvbHMgd2hldGhlciBvciBub3Qgb3RoZXIgYWNjZXNzIGNoZWNrZXJzCiAgICAgIGFyZSBhbGxvd2VkIHRvIHJ1biB3aGVuIHRoaXMgbW9kdWxlIGhhcyBhbiBhY2Nlc3MgY2hlY2tlciBjb25maWd1cmVkCiAgICAgIGFuZCBpdCBmYWlscyBhIHJlcXVlc3QuICBJZiB0aGlzIGRpcmVjdGl2ZSBpcyA8Y29kZT5PbjwvY29kZT4gKGRlZmF1bHQpCiAgICAgIGFuZCBhIEZhc3RDR0kgYWNjZXNzIGNoZWNrZXIgcmV0dXJucyBhIGZhaWx1cmUgc3RhdHVzLCBhIGZhaWx1cmUgaXMKICAgICAgcmV0dXJuZWQgdG8gdGhlIGNsaWVudCB3aXRob3V0IGdpdmluZyBvdGhlciBhY2Nlc3MgY2hlY2tlcnMgYSBjaGFuY2UgdG8KICAgICAgYWxsb3cgYWNjZXNzLiAgSWYgdGhpcyBkaXJlY3RpdmUgaXMgPGNvZGU+T2ZmPC9jb2RlPiwgb3RoZXIgYWNjZXNzCiAgICAgIGNoZWNrZXJzIHdpbGwgYmUgY2FsbGVkLjwvcD4KICAgIAo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iRmNnaWRBdXRoZW50aWNhdG9yIiBpZD0iRmNnaWRBdXRoZW50aWNhdG9yIj5GY2dpZEF1dGhlbnRpY2F0b3I8L2E+IDxhIG5hbWU9ImZjZ2lkYXV0aGVudGljYXRvciIgaWQ9ImZjZ2lkYXV0aGVudGljYXRvciI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+ZnVsbCBwYXRoIHRvIEZhc3RDR0kgYXV0aGVudGljYXRvcjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5GY2dpZEF1dGhlbnRpY2F0b3IgPGVtPmNvbW1hbmQ8L2VtPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5ub25lPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPmRpcmVjdG9yeSwgLmh0YWNjZXNzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjT3ZlcnJpZGUiPk92ZXJyaWRlOjwvYT48L3RoPjx0ZD5GaWxlSW5mbzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlcm5hbDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfZmNnaWQ8L3RkPjwvdHI+CjwvdGFibGU+CiAgICAgIDxwPkF1dGhlbnRpY2F0aW9uIGlzIHRoZSBwcm9jZWR1cmUgd2hpY2ggdmVyaWZpZXMgdGhhdCB0aGUgdXNlciBpcwogICAgICB3aG8gdGhleSBjbGFpbSB0aGV5IGFyZS4gIFRoaXMgZGlyZWN0aXZlIHNwZWNpZmllcyB0aGUgZnVsbCBwYXRoIHRvCiAgICAgIGEgRmFzdENHSSBhcHBsaWNhdGlvbiB3aGljaCB3aWxsIGhhbmRsZSBhdXRoZW50aWNhdGlvbiBmb3IgYSBwYXJ0aWN1bGFyCiAgICAgIGNvbnRleHQsIHN1Y2ggYXMgYSBkaXJlY3RvcnkuPC9wPgoKICAgICAgPHA+S2V5IGVudmlyb25tZW50IHZhcmlhYmxlcyBwYXNzZWQgdG8gdGhlIGFwcGxpY2F0aW9uIG9uIGF1dGhlbnRpY2F0aW9uCiAgICAgIGFyZTo8L3A+CgogICAgICA8ZGw+CiAgICAgICAgPGR0Pjxjb2RlPlJFTU9URV9VU0VSPC9jb2RlPjwvZHQ+CiAgICAgICAgPGRkPnNldCB0byB0aGUgdXNlciBpZCBvZiB0aGUgY2xpZW50PC9kZD4KCiAgICAgICAgPGR0Pjxjb2RlPlJFTU9URV9QQVNTV0Q8L2NvZGU+PC9kdD4KICAgICAgICA8ZGQ+c2V0IHRvIHRoZSBwbGFpbiB0ZXh0IHBhc3N3b3JkIHByb3ZpZGVkIGJ5IHRoZSBjbGllbnQ8L2RkPgoKICAgICAgICA8ZHQ+PGNvZGU+RkNHSV9BUEFDSEVfUk9MRTwvY29kZT48L2R0PgogICAgICAgIDxkZD5zZXQgdG8gPGNvZGU+QVVUSEVOVElDQVRPUjwvY29kZT47IGJ5IGNoZWNraW5nIHRoZSBjdXJyZW50IHJvbGUsCiAgICAgICAgdGhlIHNhbWUgRmFzdENHSSBhcHBsaWNhdGlvbiBjYW4gaGFuZGxlIG11bHRpcGxlIHN0YWdlcyBvZiByZXF1ZXN0CiAgICAgICAgcHJvY2Vzc2luZzwvZGQ+CiAgICAgIDwvZGw+CgogICAgICA8cD5UaGUgYXBwbGljYXRpb24gbXVzdCBvdXRwdXQgYSA8Y29kZT5TdGF0dXM8L2NvZGU+IGxpbmUgdG8gaW5kaWNhdGUKICAgICAgdGhlIHJlc3VsdCBvZiBhdXRoZW50aWNhdGlvbi48L3A+CgogICAgICA8ZGl2IGNsYXNzPSJ3YXJuaW5nIj48aDM+V2FybmluZzwvaDM+CiAgICAgIDxwPkJlZm9yZSAyLjMuNiwgb25seSBvbmUgRmFzdENHSSBhcHBsaWNhdGlvbiBvZiBhbnkgdHlwZSAoQUFBIG9yIGhhbmRsZXIpCiAgICAgIGNhbiBiZSB1c2VkIGZvciBhIHBhcnRpY3VsYXIgcmVxdWVzdCBVUkkuICBPdGhlcndpc2UsIHRoZSB3cm9uZyBGYXN0Q0dJCiAgICAgIGFwcGxpY2F0aW9uIG1heSBiZSBpbnZva2VkIGZvciBvbmUgb3IgbW9yZSBwaGFzZXMgb2YgcmVxdWVzdCBwcm9jZXNzaW5nLjwvcD4KICAgICAgPC9kaXY+CiAgICAKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkZjZ2lkQXV0aGVudGljYXRvckF1dGhvcml0YXRpdmUiIGlkPSJGY2dpZEF1dGhlbnRpY2F0b3JBdXRob3JpdGF0aXZlIj5GY2dpZEF1dGhlbnRpY2F0b3JBdXRob3JpdGF0aXZlPC9hPiA8YSBuYW1lPSJmY2dpZGF1dGhlbnRpY2F0b3JhdXRob3JpdGF0aXZlIiBpZD0iZmNnaWRhdXRoZW50aWNhdG9yYXV0aG9yaXRhdGl2ZSI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+U2V0IHRvICdvZmYnIHRvIGFsbG93IGF1dGhlbnRpY2F0aW9uIHRvIGJlIHBhc3NlZCBhbG9uZyB0byBsb3dlciBtb2R1bGVzIHVwb24gZmFpbHVyZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5GY2dpZEF1dGhlbnRpY2F0b3JBdXRob3JpdGF0aXZlIDxlbT5PbnxPZmY8L2VtPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5GY2dpZEF1dGhlbnRpY2F0b3JBdXRob3JpdGF0aXZlIE9uPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPmRpcmVjdG9yeSwgLmh0YWNjZXNzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjT3ZlcnJpZGUiPk92ZXJyaWRlOjwvYT48L3RoPjx0ZD5GaWxlSW5mbzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlcm5hbDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfZmNnaWQ8L3RkPjwvdHI+CjwvdGFibGU+CiAgICAgIDxwPlRoaXMgZGlyZWN0aXZlIGNvbnRyb2xzIHdoZXRoZXIgb3Igbm90IG90aGVyIGF1dGhlbnRpY2F0b3JzCiAgICAgIGFyZSBhbGxvd2VkIHRvIHJ1biB3aGVuIHRoaXMgbW9kdWxlIGhhcyBhbiBhdXRoZW50aWNhdG9yIGNvbmZpZ3VyZWQKICAgICAgYW5kIGl0IGZhaWxzIGEgcmVxdWVzdC4gIElmIHRoaXMgZGlyZWN0aXZlIGlzIDxjb2RlPk9uPC9jb2RlPiAoZGVmYXVsdCkKICAgICAgYW5kIGEgRmFzdENHSSBhdXRoZW50aWNhdG9yIHJldHVybnMgYSBmYWlsdXJlIHN0YXR1cywgYSBmYWlsdXJlIGlzCiAgICAgIHJldHVybmVkIHRvIHRoZSBjbGllbnQgd2l0aG91dCBnaXZpbmcgb3RoZXIgYXV0aGVudGljYXRvcnMgYSBjaGFuY2UgdG8KICAgICAgdmFsaWRhdGUgdGhlIGNsaWVudCBpZGVudGl0eS4gIElmIHRoaXMgZGlyZWN0aXZlIGlzIDxjb2RlPk9mZjwvY29kZT4sCiAgICAgIG90aGVyIGF1dGhlbnRpY2F0b3JzIHdpbGwgYmUgY2FsbGVkLjwvcD4KICAgIAo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iRmNnaWRBdXRob3JpemVyIiBpZD0iRmNnaWRBdXRob3JpemVyIj5GY2dpZEF1dGhvcml6ZXI8L2E+IDxhIG5hbWU9ImZjZ2lkYXV0aG9yaXplciIgaWQ9ImZjZ2lkYXV0aG9yaXplciI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+ZnVsbCBwYXRoIHRvIEZhc3RDR0kgYXV0aG9yaXplcjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5GY2dpZEF1dGhvcml6ZXIgPGVtPmNvbW1hbmQ8L2VtPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5ub25lPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPmRpcmVjdG9yeSwgLmh0YWNjZXNzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjT3ZlcnJpZGUiPk92ZXJyaWRlOjwvYT48L3RoPjx0ZD5GaWxlSW5mbzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlcm5hbDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfZmNnaWQ8L3RkPjwvdHI+CjwvdGFibGU+CiAgICAgIDxwPkF1dGhvcml6YXRpb24gaXMgdGhlIHByb2NlZHVyZSB3aGljaCB2ZXJpZmllcyB0aGF0IHRoZSB1c2VyIGlzCiAgICAgIGFsbG93ZWQgdG8gYWNjZXNzIGEgcGFydGljdWxhciByZXNvdXJjZS4gIFRoaXMgZGlyZWN0aXZlIHNwZWNpZmllcwogICAgICB0aGUgZnVsbCBwYXRoIHRvIGEgRmFzdENHSSBhcHBsaWNhdGlvbiB3aGljaCB3aWxsIGhhbmRsZSBhdXRob3JpemF0aW9uCiAgICAgIGZvciBhIHBhcnRpY3VsYXIgY29udGV4dCwgc3VjaCBhcyBhIGRpcmVjdG9yeS48L3A+CgogICAgICA8cD5LZXkgZW52aXJvbm1lbnQgdmFyaWFibGVzIHBhc3NlZCB0byB0aGUgYXBwbGljYXRpb24gb24gYXV0aG9yaXphdGlvbgogICAgICBhcmU6PC9wPgoKICAgICAgPGRsPgogICAgICAgIDxkdD48Y29kZT5SRU1PVEVfVVNFUjwvY29kZT48L2R0PgogICAgICAgIDxkZD5zZXQgdG8gdGhlIHVzZXIgaWQgb2YgdGhlIGNsaWVudCwgd2hpY2ggaGFzIGFscmVhZHkgYmVlbgogICAgICAgIGF1dGhlbnRpY2F0ZWQ8L2RkPgoKICAgICAgICA8ZHQ+PGNvZGU+RkNHSV9BUEFDSEVfUk9MRTwvY29kZT48L2R0PgogICAgICAgIDxkZD5zZXQgdG8gPGNvZGU+QVVUSE9SSVpFUjwvY29kZT47IGJ5IGNoZWNraW5nIHRoZSBjdXJyZW50IHJvbGUsIHRoZQogICAgICAgIHNhbWUgRmFzdENHSSBhcHBsaWNhdGlvbiBjYW4gaGFuZGxlIG11bHRpcGxlIHN0YWdlcyBvZiByZXF1ZXN0CiAgICAgICAgcHJvY2Vzc2luZzwvZGQ+CiAgICAgIDwvZGw+CgogICAgICA8cD5UaGUgYXBwbGljYXRpb24gbXVzdCBvdXRwdXQgYSA8Y29kZT5TdGF0dXM8L2NvZGU+IGxpbmUgdG8gaW5kaWNhdGUKICAgICAgdGhlIHJlc3VsdCBvZiBhdXRob3JpemF0aW9uLjwvcD4KCiAgICAgIDxkaXYgY2xhc3M9Indhcm5pbmciPjxoMz5XYXJuaW5nPC9oMz4KICAgICAgPHA+QmVmb3JlIDIuMy42LCBvbmx5IG9uZSBGYXN0Q0dJIGFwcGxpY2F0aW9uIG9mIGFueSB0eXBlIChBQUEgb3IgaGFuZGxlcikKICAgICAgY2FuIGJlIHVzZWQgZm9yIGEgcGFydGljdWxhciByZXF1ZXN0IFVSSS4gIE90aGVyd2lzZSwgdGhlIHdyb25nIEZhc3RDR0kKICAgICAgYXBwbGljYXRpb24gbWF5IGJlIGludm9rZWQgZm9yIG9uZSBvciBtb3JlIHBoYXNlcyBvZiByZXF1ZXN0IHByb2Nlc3NpbmcuPC9wPgogICAgICA8L2Rpdj4KICAgIAo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iRmNnaWRBdXRob3JpemVyQXV0aG9yaXRhdGl2ZSIgaWQ9IkZjZ2lkQXV0aG9yaXplckF1dGhvcml0YXRpdmUiPkZjZ2lkQXV0aG9yaXplckF1dGhvcml0YXRpdmU8L2E+IDxhIG5hbWU9ImZjZ2lkYXV0aG9yaXplcmF1dGhvcml0YXRpdmUiIGlkPSJmY2dpZGF1dGhvcml6ZXJhdXRob3JpdGF0aXZlIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5TZXQgdG8gJ29mZicgdG8gYWxsb3cgYXV0aG9yaXphdGlvbiB0byBiZSBwYXNzZWQgYWxvbmcgdG8gbG93ZXIgbW9kdWxlcyB1cG9uIGZhaWx1cmU8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+RmNnaWRBdXRob3JpemVyQXV0aG9yaXRhdGl2ZSA8ZW0+T258T2ZmPC9lbT48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+RmNnaWRBdXRob3JpemVyQXV0aG9yaXRhdGl2ZSBPbjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5kaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+RmlsZUluZm88L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZXJuYWw8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2ZjZ2lkPC90ZD48L3RyPgo8L3RhYmxlPgogICAgICA8cD5UaGlzIGRpcmVjdGl2ZSBjb250cm9scyB3aGV0aGVyIG9yIG5vdCBvdGhlciBhdXRob3JpemVycwogICAgICBhcmUgYWxsb3dlZCB0byBydW4gd2hlbiB0aGlzIG1vZHVsZSBoYXMgYW4gYXV0aG9yaXplciBjb25maWd1cmVkCiAgICAgIGFuZCBpdCBmYWlscyBhIHJlcXVlc3QuICBJZiB0aGlzIGRpcmVjdGl2ZSBpcyA8Y29kZT5PbjwvY29kZT4gKGRlZmF1bHQpCiAgICAgIGFuZCBhIEZhc3RDR0kgYXV0aG9yaXplciByZXR1cm5zIGEgZmFpbHVyZSBzdGF0dXMsIGEgZmFpbHVyZSBpcwogICAgICByZXR1cm5lZCB0byB0aGUgY2xpZW50IHdpdGhvdXQgZ2l2aW5nIG90aGVyIGF1dGhvcml6ZXIgYSBjaGFuY2UgdG8KICAgICAgYWNjZXNzIHRoZSByZXNvdXJjZS4gIElmIHRoaXMgZGlyZWN0aXZlIGlzIDxjb2RlPk9mZjwvY29kZT4sIG90aGVyCiAgICAgIGF1dGhvcml6ZXJzIHdpbGwgYmUgY2FsbGVkLjwvcD4KICAgIAo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iRmNnaWRCdXN5U2NhbkludGVydmFsIiBpZD0iRmNnaWRCdXN5U2NhbkludGVydmFsIj5GY2dpZEJ1c3lTY2FuSW50ZXJ2YWw8L2E+IDxhIG5hbWU9ImZjZ2lkYnVzeXNjYW5pbnRlcnZhbCIgaWQ9ImZjZ2lkYnVzeXNjYW5pbnRlcnZhbCI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+c2NhbiBpbnRlcnZhbCBmb3IgYnVzeSB0aW1lb3V0IHByb2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+RmNnaWRCdXN5U2NhbkludGVydmFsIDxlbT5zZWNvbmRzPC9lbT48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+RmNnaWRCdXN5U2NhbkludGVydmFsIDEyMDwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVybmFsPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9mY2dpZDwvdGQ+PC90cj4KPC90YWJsZT4KICAgICAgPHA+VGhlIG1vZHVsZSBwZXJmb3JtcyB0aGUKICAgICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkYnVzeXRpbWVvdXQiPkZjZ2lkQnVzeVRpbWVvdXQ8L2E+PC9jb2RlPiBjaGVjayBhdCB0aGlzCiAgICAgIGludGVydmFsLjwvcD4KICAgIAo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iRmNnaWRCdXN5VGltZW91dCIgaWQ9IkZjZ2lkQnVzeVRpbWVvdXQiPkZjZ2lkQnVzeVRpbWVvdXQ8L2E+IDxhIG5hbWU9ImZjZ2lkYnVzeXRpbWVvdXQiIGlkPSJmY2dpZGJ1c3l0aW1lb3V0Ij5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5hIEZhc3RDR0kgYXBwbGljYXRpb24gd2lsbCBiZSBraWxsZWQgYWZ0ZXIgaGFuZGxpbmcgYSByZXF1ZXN0IGZvciBGY2dpZEJ1c3lUaW1lb3V0PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkZjZ2lkQnVzeVRpbWVvdXQgPGVtPnNlY29uZHM8L2VtPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5GY2dpZEJ1c3lUaW1lb3V0IDMwMDwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnLCB2aXJ0dWFsIGhvc3Q8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZXJuYWw8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2ZjZ2lkPC90ZD48L3RyPgo8L3RhYmxlPgogICAgICA8cD5UaGlzIGlzIHRoZSBtYXhpbXVtIHRpbWUgbGltaXQgZm9yIHJlcXVlc3QgaGFuZGxpbmcuICBJZiBhIEZhc3RDR0kKICAgICAgcmVxdWVzdCBkb2VzIG5vdCBjb21wbGV0ZSB3aXRoaW4gRmNnaWRCdXN5VGltZW91dCBzZWNvbmRzLCBpdCB3aWxsIGJlCiAgICAgIHN1YmplY3QgdG8gdGVybWluYXRpb24uICBCZWNhdXNlIHRoZSBjaGVjayBpcyBwZXJmb3JtZWQgYXQgdGhlCiAgICAgIGludGVydmFsIGRlZmluZWQgYnkgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkYnVzeXNjYW5pbnRlcnZhbCI+RmNnaWRCdXN5U2NhbkludGVydmFsPC9hPjwvY29kZT4sCiAgICAgIHJlcXVlc3QgaGFuZGxpbmcgbWF5IGJlIGFsbG93ZWQgdG8gcHJvY2VlZCBmb3IgYSBsb25nZXIgcGVyaW9kIG9mIHRpbWUuPC9wPgoKICAgICAgPHA+VGhlIHB1cnBvc2Ugb2YgdGhpcyBkaXJlY3RpdmUgaXMgdG8gdGVybWluYXRlIGh1bmcgYXBwbGljYXRpb25zLgogICAgICBUaGUgZGVmYXVsdCB0aW1lb3V0IG1heSBuZWVkIHRvIGJlIGluY3JlYXNlZCBmb3IgYXBwbGljYXRpb25zIHRoYXQKICAgICAgY2FuIHRha2UgbG9uZ2VyIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QuPC9wPgogICAgCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJGY2dpZENtZE9wdGlvbnMiIGlkPSJGY2dpZENtZE9wdGlvbnMiPkZjZ2lkQ21kT3B0aW9uczwvYT4gPGEgbmFtZT0iZmNnaWRjbWRvcHRpb25zIiBpZD0iZmNnaWRjbWRvcHRpb25zIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5TZXQgcHJvY2Vzc2luZyBvcHRpb25zIGZvciBhIEZhc3RDR0kKICAgIGNvbW1hbmQ8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+RmNnaWRDbWRPcHRpb25zIDxlbT5jb21tYW5kPC9lbT4gPGVtPm9wdGlvbjwvZW0+CiAgICBbPGVtPm9wdGlvbjwvZW0+XSAuLi48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVybmFsPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9mY2dpZDwvdGQ+PC90cj4KPC90YWJsZT4KICAgICAgPHA+VGhpcyBkaXJlY3RpdmUgYWxsb3dzIHByb2Nlc3Npbmcgb3B0aW9ucyB0byBiZSBzcGVjaWZpZWQgZm9yCiAgICAgIGEgc3BlY2lmaWMgY29tbWFuZCBzcGF3bmVkIGJ5IG1vZF9mY2dpZC4gIEVhY2ggb3B0aW9uIGZvciB0aGUKICAgICAgY29tbWFuZCBjb3JyZXNwb25kcyB0byBhbm90aGVyIGRpcmVjdGl2ZSB0aGF0IG5vcm1hbGx5IGFwcGxpZXMgdG8KICAgICAgYWxsIGNvbW1hbmRzIHN0YXJ0ZWQgd2l0aGluIGEgcGFydGljdWxhciBjb250ZXh0LiAgSWYgYQogICAgICBwYXJ0aWN1bGFyIG9wdGlvbiBpcyBub3Qgc3BlY2lmaWVkIG9uIHRoaXMgZGlyZWN0aXZlLCB0aGUKICAgICAgZGVmYXVsdCB3aWxsIGJlIHVzZWQuPC9wPgoKICAgICAgPHA+VGhlIGZvbGxvd2luZyB0YWJsZSBwcm92aWRlcyBhIGxpc3Qgb2Ygb3B0aW9ucyBhbmQKICAgICAgY29ycmVzcG9uZGluZyBkaXJlY3RpdmVzOjwvcD4KCiAgICAgIDx0YWJsZSBjbGFzcz0iYm9yZGVyZWQiPjx0ciBjbGFzcz0iaGVhZGVyIj48dGg+T3B0aW9uIG5hbWUgYW5kIHN5bnRheDwvdGg+PHRoPkNvcnJlc3BvbmRpbmcgZGlyZWN0aXZlPC90aD48L3RyPgo8dHI+CiAgICAgICAgICA8dGQ+PGNvZGU+Q29ubmVjdFRpbWVvdXQgPGVtPnNlY29uZHM8L2VtPjwvY29kZT48L3RkPgogICAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZGNvbm5lY3R0aW1lb3V0Ij5GY2dpZENvbm5lY3RUaW1lb3V0PC9hPjwvY29kZT48L3RkPgogICAgICAgIDwvdHI+Cjx0ciBjbGFzcz0ib2RkIj4KICAgICAgICAgIDx0ZD48Y29kZT5JZGxlVGltZW91dCA8ZW0+c2Vjb25kczwvZW0+PC9jb2RlPjwvdGQ+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkaWRsZXRpbWVvdXQiPkZjZ2lkSWRsZVRpbWVvdXQ8L2E+PC9jb2RlPjwvdGQ+CiAgICAgICAgPC90cj4KPHRyPgogICAgICAgICAgPHRkPjxjb2RlPkluaXRpYWxFbnYgPGVtPm5hbWVbPXZhbHVlXTwvZW0+PC9jb2RlPjwvdGQ+CiAgICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkaW5pdGlhbGVudiI+RmNnaWRJbml0aWFsRW52PC9hPjwvY29kZT48L3RkPgogICAgICAgIDwvdHI+Cjx0ciBjbGFzcz0ib2RkIj4KICAgICAgICAgIDx0ZD48Y29kZT5JT1RpbWVvdXQgPGVtPnNlY29uZHM8L2VtPjwvY29kZT48L3RkPgogICAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZGlvdGltZW91dCI+RmNnaWRJT1RpbWVvdXQ8L2E+PC9jb2RlPjwvdGQ+CiAgICAgICAgPC90cj4KPHRyPgogICAgICAgICAgPHRkPjxjb2RlPk1heFByb2Nlc3NlcyA8ZW0+dmFsdWU8L2VtPjwvY29kZT48L3RkPgogICAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZG1heHByb2Nlc3Nlc3BlcmNsYXNzIj5GY2dpZE1heFByb2Nlc3Nlc1BlckNsYXNzPC9hPjwvY29kZT48L3RkPgogICAgICAgIDwvdHI+Cjx0ciBjbGFzcz0ib2RkIj4KICAgICAgICAgIDx0ZD48Y29kZT5NYXhQcm9jZXNzTGlmZVRpbWUgPGVtPnNlY29uZHM8L2VtPjwvY29kZT48L3RkPgogICAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZHByb2Nlc3NsaWZldGltZSI+RmNnaWRQcm9jZXNzTGlmZVRpbWU8L2E+PC9jb2RlPjwvdGQ+CiAgICAgICAgPC90cj4KPHRyPgogICAgICAgICAgPHRkPjxjb2RlPk1heFJlcXVlc3RzUGVyUHJvY2VzcyA8ZW0+dmFsdWU8L2VtPjwvY29kZT48L3RkPgogICAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZG1heHJlcXVlc3RzcGVycHJvY2VzcyI+RmNnaWRNYXhSZXF1ZXN0c1BlclByb2Nlc3M8L2E+PC9jb2RlPjwvdGQ+CiAgICAgICAgPC90cj4KPHRyIGNsYXNzPSJvZGQiPgogICAgICAgICAgPHRkPjxjb2RlPk1pblByb2Nlc3NlcyA8ZW0+dmFsdWU8L2VtPjwvY29kZT48L3RkPgogICAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZG1pbnByb2Nlc3Nlc3BlcmNsYXNzIj5GY2dpZE1pblByb2Nlc3Nlc1BlckNsYXNzPC9hPjwvY29kZT48L3RkPgogICAgICAgIDwvdHI+CjwvdGFibGU+CgogICAgICA8cD5NdWx0aXBsZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIGRlZmluZWQgYnkgcmVwZWF0aW5nCiAgICAgIHRoZSA8Y29kZT5Jbml0aWFsRW52PC9jb2RlPiBvcHRpb24uPC9wPgoKICAgICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPkV4YW1wbGU8L2gzPjxwPjxjb2RlPgogICAgICBGY2dpZENtZE9wdGlvbnMgL3Vzci9sb2NhbC9iaW4vd3JhcHBlciBcPGJyIC8+CiAgICAgIDxzcGFuIGNsYXNzPSJpbmRlbnQiPgogICAgICBJbml0aWFsRW52IE1BWF9SRVFVRVNUUz0yMDAwIFw8YnIgLz4KICAgICAgTWF4UmVxdWVzdHNQZXJQcm9jZXNzIDIwMDAgXDxiciAvPgogICAgICBJT1RpbWVvdXQgOTA8YnIgLz4KICAgICAgPC9zcGFuPgogICAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgICAgPHA+V2hlbiA8Y29kZT4vdXNyL2xvY2FsL2Jpbi93cmFwcGVyPC9jb2RlPiBpcyBzcGF3bmVkLCBpdHMgaW5pdGlhbAogICAgICBlbnZpcm9ubWVudCBjb250YWlucyB0aGUgPGNvZGU+TUFYX1JFUVVFU1RTPTIwMDA8L2NvZGU+CiAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlIHNldHRpbmc7IGFkZGl0aW9uYWxseSwgbW9kX2ZjZ2lkIHdpbGwKICAgICAgdGVybWluYXRlIGl0IGFmdGVyIGl0IGhhcyBoYW5kbGVkIDIwMDAgcmVxdWVzdHMsIGFuZCBJL08KICAgICAgb3BlcmF0aW9ucyB3aWxsIHRpbWUgb3V0IGFmdGVyIDkwIHNlY29uZHMuICBEaXJlY3RpdmVzCiAgICAgIGNvcnJlc3BvbmRpbmcgdG8gb3RoZXIgb3B0aW9ucywgc3VjaCBhcwogICAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRpZGxldGltZW91dCI+RmNnaWRJZGxlVGltZW91dDwvYT48L2NvZGU+IG9yCiAgICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZHByb2Nlc3NsaWZldGltZSI+RmNnaWRQcm9jZXNzTGlmZVRpbWU8L2E+PC9jb2RlPiwKICAgICAgd2lsbCBiZSBpZ25vcmVkIGZvciB0aGlzIGNvbW1hbmQ7IGRlZmF1bHRzIHdpbGwgYmUgdXNlZCBmb3Igb3B0aW9ucwogICAgICBub3Qgc3BlY2lmaWVkIG9uIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkZjZ2lkQ21kT3B0aW9uczwvY29kZT4uPC9wPgogICAgCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJGY2dpZENvbm5lY3RUaW1lb3V0IiBpZD0iRmNnaWRDb25uZWN0VGltZW91dCI+RmNnaWRDb25uZWN0VGltZW91dDwvYT4gPGEgbmFtZT0iZmNnaWRjb25uZWN0dGltZW91dCIgaWQ9ImZjZ2lkY29ubmVjdHRpbWVvdXQiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkNvbm5lY3QgdGltZW91dCB0byBGYXN0Q0dJIHNlcnZlcjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5GY2dpZENvbm5lY3RUaW1lb3V0IDxlbT5zZWNvbmRzPC9lbT48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+RmNnaWRDb25uZWN0VGltZW91dCAzPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWcsIHZpcnR1YWwgaG9zdDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlcm5hbDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfZmNnaWQ8L3RkPjwvdHI+CjwvdGFibGU+CiAgICAgIDxwPlRoaXMgaXMgdGhlIG1heGltdW0gcGVyaW9kIG9mIHRpbWUgdGhlIG1vZHVsZSB3aWxsIHdhaXQKICAgICAgd2hpbGUgdHJ5aW5nIHRvIGNvbm5lY3QgdG8gYSBGYXN0Q0dJIGFwcGxpY2F0aW9uIG9uIFdpbmRvd3MuCiAgICAgIChUaGlzIGRpcmVjdGl2ZSBpcyBub3QgcmVzcGVjdGVkIG9uIFVuaXgsIHdoZXJlIEFGX1VOSVggZGVmYXVsdHMKICAgICAgd2lsbCBhcHBseS4pPC9wPgoKICAgICAgPHA+VGhpcyBzZXR0aW5nIHdpbGwgYXBwbHkgdG8gYWxsIGFwcGxpY2F0aW9ucyBzcGF3bmVkIGZvciB0aGlzCiAgICAgIHNlcnZlciBvciB2aXJ0dWFsIGhvc3QuICBVc2UKICAgICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkY21kb3B0aW9ucyI+RmNnaWRDbWRPcHRpb25zPC9hPjwvY29kZT4gdG8gYXBwbHkKICAgICAgdGhpcyBzZXR0aW5nIHRvIGEgc2luZ2xlIGFwcGxpY2F0aW9uLjwvcD4KICAgIAo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iRmNnaWRFcnJvclNjYW5JbnRlcnZhbCIgaWQ9IkZjZ2lkRXJyb3JTY2FuSW50ZXJ2YWwiPkZjZ2lkRXJyb3JTY2FuSW50ZXJ2YWw8L2E+IDxhIG5hbWU9ImZjZ2lkZXJyb3JzY2FuaW50ZXJ2YWwiIGlkPSJmY2dpZGVycm9yc2NhbmludGVydmFsIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5zY2FuIGludGVydmFsIGZvciBleGl0ZWQgcHJvY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5GY2dpZEVycm9yU2NhbkludGVydmFsIDxlbT5zZWNvbmRzPC9lbT48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+RmNnaWRFcnJvclNjYW5JbnRlcnZhbCAzPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZXJuYWw8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2ZjZ2lkPC90ZD48L3RyPgo8L3RhYmxlPgogICAgICA8cD5UaGlzIGlzIHRoZSBpbnRlcnZhbCBhdCB3aGljaCB0aGUgbW9kdWxlIHdpbGwgaGFuZGxlCiAgICAgIHBlbmRpbmcgcHJvY2VzcyB0ZXJtaW5hdGlvbi4gIFRlcm1pbmF0aW9uIGlzIHBlbmRpbmcgZm9yCiAgICAgIGFueSBwcm9jZXNzZXMgd2hpY2ggaGF2ZSBleGNlZWRlZAogICAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRpZGxldGltZW91dCI+RmNnaWRJZGxlVGltZW91dDwvYT48L2NvZGU+IG9yCiAgICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZHByb2Nlc3NsaWZldGltZSI+RmNnaWRQcm9jZXNzTGlmZVRpbWU8L2E+PC9jb2RlPi48L3A+CgogICAgICA8cD5Vbml4OiBtb2RfZmNnaWQgd2lsbCB0ZXJtaW5hdGUgc3VjaCBwcm9jZXNzZXMgd2l0aCBTSUdURVJNOwogICAgICBpZiB0aGUgcHJvY2VzcyBpcyBzdGlsbCBhY3RpdmUgZHVyaW5nIHRoZSBuZXh0IHNjYW4sIHRoZSBwcm9jZXNzCiAgICAgIHdpbGwgYmUgdGVybWluYXRlZCB3aXRoIFNJR0tJTEwuICBUaHVzLCB0aGlzIGRpcmVjdGl2ZSBjb250cm9scyB0aGUKICAgICAgYW1vdW50IG9mIHRpbWUgZm9yIG9yZGVybHkgcHJvY2VzcyB0ZXJtaW5hdGUgYmVmb3JlIGJlaW5nIGZvcmNpYmx5CiAgICAgIGtpbGxlZC48L3A+CiAgICAKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkZjZ2lkRml4UGF0aGluZm8iIGlkPSJGY2dpZEZpeFBhdGhpbmZvIj5GY2dpZEZpeFBhdGhpbmZvPC9hPiA8YSBuYW1lPSJmY2dpZGZpeHBhdGhpbmZvIiBpZD0iZmNnaWRmaXhwYXRoaW5mbyI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+TWlycm9yIHRoZSBQSFAgPGNvZGU+Y2dpLmZpeF9wYXRoaW5mbzwvY29kZT4KICAgIHNldHRpbmc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+RmNnaWRGaXhQYXRoaW5mbyAxPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkZjZ2lkRml4UGF0aGluZm8gMDwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVybmFsPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9mY2dpZDwvdGQ+PC90cj4KPC90YWJsZT4KICAgICAgPHA+VGhpcyBkaXJlY3RpdmUgZW5hYmxlcyBzcGVjaWFsIDxjb2RlPlNDUklQVF9OQU1FPC9jb2RlPgogICAgICBwcm9jZXNzaW5nIHdoaWNoIGFsbG93cyBQSFAgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIHBhdGggaW5mb3JtYXRpb24uCiAgICAgIFRoZSBzZXR0aW5nIG9mIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkZjZ2lkRml4UGF0aGluZm88L2NvZGU+CiAgICAgIHNob3VsZCBtaXJyb3IgdGhlIDxjb2RlPmNnaS5maXhfcGF0aGluZm88L2NvZGU+IHNldHRpbmcgaW4KICAgICAgPGNvZGU+cGhwLmluaTwvY29kZT4uPC9wPgogICAgCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJGY2dpZElkbGVTY2FuSW50ZXJ2YWwiIGlkPSJGY2dpZElkbGVTY2FuSW50ZXJ2YWwiPkZjZ2lkSWRsZVNjYW5JbnRlcnZhbDwvYT4gPGEgbmFtZT0iZmNnaWRpZGxlc2NhbmludGVydmFsIiBpZD0iZmNnaWRpZGxlc2NhbmludGVydmFsIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5zY2FuIGludGVydmFsIGZvciBpZGxlIHRpbWVvdXQgcHJvY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5GY2dpZElkbGVTY2FuSW50ZXJ2YWwgPGVtPnNlY29uZHM8L2VtPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5GY2dpZElkbGVTY2FuSW50ZXJ2YWwgMTIwPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZXJuYWw8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2ZjZ2lkPC90ZD48L3RyPgo8L3RhYmxlPgogICAgICA8cD5UaGlzIGlzIHRoZSBpbnRlcnZhbCBhdCB3aGljaCB0aGUgbW9kdWxlIHdpbGwgc2VhcmNoIGZvcgogICAgICBwcm9jZXNzZXMgd2hpY2ggaGF2ZSBleGNlZWRlZAogICAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRpZGxldGltZW91dCI+RmNnaWRJZGxlVGltZW91dDwvYT48L2NvZGU+IG9yCiAgICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZHByb2Nlc3NsaWZldGltZSI+RmNnaWRQcm9jZXNzTGlmZVRpbWU8L2E+PC9jb2RlPi48L3A+CiAgICAKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkZjZ2lkSWRsZVRpbWVvdXQiIGlkPSJGY2dpZElkbGVUaW1lb3V0Ij5GY2dpZElkbGVUaW1lb3V0PC9hPiA8YSBuYW1lPSJmY2dpZGlkbGV0aW1lb3V0IiBpZD0iZmNnaWRpZGxldGltZW91dCI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+QW4gaWRsZSBGYXN0Q0dJIGFwcGxpY2F0aW9uIHdpbGwgYmUga2lsbGVkIGFmdGVyIEZjZ2lkSWRsZVRpbWVvdXQ8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+RmNnaWRJZGxlVGltZW91dCA8ZW0+c2Vjb25kczwvZW0+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkZjZ2lkSWRsZVRpbWVvdXQgMzAwPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWcsIHZpcnR1YWwgaG9zdDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlcm5hbDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfZmNnaWQ8L3RkPjwvdHI+CjwvdGFibGU+CiAgICAgIDxwPkFwcGxpY2F0aW9uIHByb2Nlc3NlcyB3aGljaCBoYXZlIG5vdCBoYW5kbGVkIGEgcmVxdWVzdCBmb3IgdGhpcwogICAgICBwZXJpb2Qgb2YgdGltZSB3aWxsIGJlIHRlcm1pbmF0ZWQsIGlmIHRoZSBudW1iZXIgb2YgcHJvY2Vzc3NlcyBmb3IgdGhlCiAgICAgIGNsYXNzIGV4Y2VlZHMKICAgICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkbWlucHJvY2Vzc2VzcGVyY2xhc3MiPkZjZ2lkTWluUHJvY2Vzc2VzUGVyQ2xhc3M8L2E+PC9jb2RlPi4KICAgICAgQSB2YWx1ZSBvZiA8Y29kZT4wPC9jb2RlPiBkaXNhYmxlcyB0aGUgY2hlY2suPC9wPgoKICAgICAgPHA+VGhpcyBpZGxlIHRpbWVvdXQgY2hlY2sgaXMgcGVyZm9ybWVkIGF0IHRoZSBmcmVxdWVuY3kgb2YgdGhlIGNvbmZpZ3VyZWQKICAgICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkaWRsZXNjYW5pbnRlcnZhbCI+RmNnaWRJZGxlU2NhbkludGVydmFsPC9hPjwvY29kZT4uPC9wPgoKICAgICAgPHA+VGhpcyBzZXR0aW5nIHdpbGwgYXBwbHkgdG8gYWxsIGFwcGxpY2F0aW9ucyBzcGF3bmVkIGZvciB0aGlzCiAgICAgIHNlcnZlciBvciB2aXJ0dWFsIGhvc3QuICBVc2UKICAgICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkY21kb3B0aW9ucyI+RmNnaWRDbWRPcHRpb25zPC9hPjwvY29kZT4gdG8gYXBwbHkKICAgICAgdGhpcyBzZXR0aW5nIHRvIGEgc2luZ2xlIGFwcGxpY2F0aW9uLjwvcD4KICAgIAo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iRmNnaWRJbml0aWFsRW52IiBpZD0iRmNnaWRJbml0aWFsRW52Ij5GY2dpZEluaXRpYWxFbnY8L2E+IDxhIG5hbWU9ImZjZ2lkaW5pdGlhbGVudiIgaWQ9ImZjZ2lkaW5pdGlhbGVudiI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+YW4gZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZSBhbmQgb3B0aW9uYWwgdmFsdWUgdG8gcGFzcyB0byBGYXN0Q0dJLjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5GY2dpZEluaXRpYWxFbnYgPGVtPm5hbWU8L2VtPiBbIDxlbT52YWx1ZTwvZW0+IF08L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+bm9uZTwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnLCB2aXJ0dWFsIGhvc3Q8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZXJuYWw8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2ZjZ2lkPC90ZD48L3RyPgo8L3RhYmxlPgogICAgICA8cD5Vc2UgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+RmNnaWRJbml0aWFsRW52PC9jb2RlPiB0byBkZWZpbmUgZW52aXJvbm1lbnQKICAgICAgdmFyaWFibGVzIHRvIHBhc3MgdG8gdGhlIEZhc3RDR0kgYXBwbGljYXRpb24uICBUaGlzIGRpcmVjdGl2ZSBjYW4KICAgICAgYmUgdXNlZCBtdWx0aXBsZSB0aW1lcy48L3A+CgogICAgICA8cD5UaGlzIHNldHRpbmcgd2lsbCBhcHBseSB0byBhbGwgYXBwbGljYXRpb25zIHNwYXduZWQgZm9yIHRoaXMKICAgICAgc2VydmVyIG9yIHZpcnR1YWwgaG9zdC4gIFVzZQogICAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRjbWRvcHRpb25zIj5GY2dpZENtZE9wdGlvbnM8L2E+PC9jb2RlPiB0byBhcHBseQogICAgICB0aGlzIHNldHRpbmcgdG8gYSBzaW5nbGUgYXBwbGljYXRpb24uPC9wPgogICAgCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJGY2dpZElPVGltZW91dCIgaWQ9IkZjZ2lkSU9UaW1lb3V0Ij5GY2dpZElPVGltZW91dDwvYT4gPGEgbmFtZT0iZmNnaWRpb3RpbWVvdXQiIGlkPSJmY2dpZGlvdGltZW91dCI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+Q29tbXVuaWNhdGlvbiB0aW1lb3V0IHRvIEZhc3RDR0kgc2VydmVyPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkZjZ2lkSU9UaW1lb3V0IDxlbT5zZWNvbmRzPC9lbT48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+RmNnaWRJT1RpbWVvdXQgNDA8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVybmFsPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9mY2dpZDwvdGQ+PC90cj4KPC90YWJsZT4KICAgICAgPHA+VGhpcyBpcyB0aGUgbWF4aW11bSBwZXJpb2Qgb2YgdGltZSB0aGUgbW9kdWxlIHdpbGwgd2FpdAogICAgICB3aGlsZSB0cnlpbmcgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvIGEgRmFzdENHSSBhcHBsaWNhdGlvbi48L3A+CgogICAgICA8ZGl2IGNsYXNzPSJub3RlIj48aDM+Tm90ZTwvaDM+CiAgICAgIDxwPlRoZSBGYXN0Q0dJIGFwcGxpY2F0aW9uIG11c3QgYmVnaW4gZ2VuZXJhdGluZyB0aGUgcmVzcG9uc2Ugd2l0aGluCiAgICAgIHRoaXMgcGVyaW9kIG9mIHRpbWUuICBJbmNyZWFzZSB0aGlzIGRpcmVjdGl2ZSBhcyBuZWNlc3NhcnkgdG8gaGFuZGxlCiAgICAgIGFwcGxpY2F0aW9ucyB3aGljaCB0YWtlIGEgcmVsYXRpdmVseSBsb25nIHBlcmlvZCBvZiB0aW1lIHRvIHJlc3BvbmQuPC9wPgogICAgICA8L2Rpdj4KCiAgICAgIDxwPlRoaXMgc2V0dGluZyB3aWxsIGFwcGx5IHRvIGFsbCBhcHBsaWNhdGlvbnMgc3Bhd25lZCBmb3IgdGhpcwogICAgICBzZXJ2ZXIgb3IgdmlydHVhbCBob3N0LiAgVXNlCiAgICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZGNtZG9wdGlvbnMiPkZjZ2lkQ21kT3B0aW9uczwvYT48L2NvZGU+IHRvIGFwcGx5CiAgICAgIHRoaXMgc2V0dGluZyB0byBhIHNpbmdsZSBhcHBsaWNhdGlvbi48L3A+CiAgICAKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkZjZ2lkSVBDRGlyIiBpZD0iRmNnaWRJUENEaXIiPkZjZ2lkSVBDRGlyPC9hPiA8YSBuYW1lPSJmY2dpZGlwY2RpciIgaWQ9ImZjZ2lkaXBjZGlyIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5kaXJlY3RvcnkgZm9yIEFGX1VOSVggc29ja2V0cyAoVW5peCkgb3IgcGlwZXMgKFdpbmRvd3MpPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkZjZ2lkSVBDRGlyIDxlbT5wYXRobmFtZTwvZW0+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkZjZ2lkSVBDRGlyIGxvZ3MvZmNnaWRzb2NrPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZXJuYWw8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2ZjZ2lkPC90ZD48L3RyPgo8L3RhYmxlPgogICAgICA8cD5UaGlzIG1vZHVsZSB1c2VzIEFGX1VOSVggc29ja2V0cyBvciBuYW1lZCBwaXBlcywgZGVwZW5kaW5nIG9uIHRoZQogICAgICBwbGF0Zm9ybSwgdG8gY29tbXVuaWNhdGUgd2l0aCBGYXN0Q0dJIGFwcGxpY2F0aW9ucy4gIFRoaXMgZGlyZWN0aXZlCiAgICAgIHNwZWNpZmllcyB0aGUgZGlyZWN0b3J5IHdoZXJlIHRob3NlIHNvY2tldHMgb3IgbmFtZWQgcGlwZXMgd2lsbCBiZQogICAgICBjcmVhdGVkLjwvcD4KICAgIAo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iRmNnaWRNYXhQcm9jZXNzZXMiIGlkPSJGY2dpZE1heFByb2Nlc3NlcyI+RmNnaWRNYXhQcm9jZXNzZXM8L2E+IDxhIG5hbWU9ImZjZ2lkbWF4cHJvY2Vzc2VzIiBpZD0iZmNnaWRtYXhwcm9jZXNzZXMiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPm1heGltdW0gbnVtYmVyIG9mIEZhc3RDR0kgYXBwbGljYXRpb24gcHJvY2Vzc2VzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkZjZ2lkTWF4UHJvY2Vzc2VzIDxlbT52YWx1ZTwvZW0+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkZjZ2lkTWF4UHJvY2Vzc2VzIDEwMDA8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlcm5hbDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfZmNnaWQ8L3RkPjwvdHI+CjwvdGFibGU+CiAgICAgIDxwPlRoaXMgZGlyZWN0aXZlIHNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIEZhc3RDR0kgYXBwbGljYXRpb24KICAgICAgcHJvY2Vzc2VzIHdoaWNoIGNhbiBiZSBhY3RpdmUgYXQgb25lIHRpbWUuPC9wPgogICAgCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJGY2dpZE1heFByb2Nlc3Nlc1BlckNsYXNzIiBpZD0iRmNnaWRNYXhQcm9jZXNzZXNQZXJDbGFzcyI+RmNnaWRNYXhQcm9jZXNzZXNQZXJDbGFzczwvYT4gPGEgbmFtZT0iZmNnaWRtYXhwcm9jZXNzZXNwZXJjbGFzcyIgaWQ9ImZjZ2lkbWF4cHJvY2Vzc2VzcGVyY2xhc3MiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPk1heCBwcm9jZXNzIGNvdW50IG9mIG9uZSBjbGFzcyBvZiBGYXN0Q0dJIGFwcGxpY2F0aW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkZjZ2lkTWF4UHJvY2Vzc2VzUGVyQ2xhc3MgPGVtPnZhbHVlPC9lbT48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+RmNnaWRNYXhQcm9jZXNzZXNQZXJDbGFzcyAxMDA8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVybmFsPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9mY2dpZDwvdGQ+PC90cj4KPC90YWJsZT4KICAgICAgPHA+VGhpcyBkaXJlY3RpdmUgc2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgcHJvY2Vzc2VzIHRoYXQgY2FuIGJlCiAgICAgIHN0YXJ0ZWQgZm9yIGVhY2ggcHJvY2VzcyBjbGFzcy48L3A+CgogICAgICA8cD5UaGlzIHNldHRpbmcgd2lsbCBhcHBseSB0byBhbGwgYXBwbGljYXRpb25zIHNwYXduZWQgZm9yIHRoaXMKICAgICAgc2VydmVyIG9yIHZpcnR1YWwgaG9zdC4gIFVzZQogICAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRjbWRvcHRpb25zIj5GY2dpZENtZE9wdGlvbnM8L2E+PC9jb2RlPiB0byBhcHBseQogICAgICB0aGlzIHNldHRpbmcgdG8gYSBzaW5nbGUgYXBwbGljYXRpb24uPC9wPgogICAgCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJGY2dpZE1heFJlcXVlc3RJbk1lbSIgaWQ9IkZjZ2lkTWF4UmVxdWVzdEluTWVtIj5GY2dpZE1heFJlcXVlc3RJbk1lbTwvYT4gPGEgbmFtZT0iZmNnaWRtYXhyZXF1ZXN0aW5tZW0iIGlkPSJmY2dpZG1heHJlcXVlc3Rpbm1lbSI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+bWF4aW11bSBzaXplIG9mIGEgcmVxdWVzdCB3aGljaCB3aWxsIGJlIGhlbGQgaW4gbWVtb3J5PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkZjZ2lkTWF4UmVxdWVzdEluTWVtIDxlbT5ieXRlczwvZW0+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkZjZ2lkTWF4UmVxdWVzdEluTWVtIDY1NTM2PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWcsIHZpcnR1YWwgaG9zdDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlcm5hbDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfZmNnaWQ8L3RkPjwvdHI+CjwvdGFibGU+CiAgICAgIDxwPlRoaXMgbW9kdWxlIHJlYWRzIHRoZSBlbnRpcmUgcmVxdWVzdCBib2R5IGZyb20gdGhlIGNsaWVudAogICAgICBiZWZvcmUgc2VuZGluZyBpdCB0byB0aGUgYXBwbGljYXRpb24uICBOb3JtYWxseSB0aGUgcmVxdWVzdCBib2R5CiAgICAgIHdpbGwgYmUgc3RvcmVkIGluIG1lbW9yeS4gIE9uY2UgdGhlIGFtb3VudCBvZiByZXF1ZXN0IGJvZHkgcmVhZAogICAgICBmcm9tIHRoZSBjbGllbnQgZXhjZWVkcyA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5GY2dpZE1heFJlcXVlc3RJbk1lbTwvY29kZT4KICAgICAgYnl0ZXMsIHRoZSByZW1haW5kZXIgb2YgdGhlIHJlcXVlc3QgYm9keSB3aWxsIGJlIHN0b3JlZCBpbiBhCiAgICAgIHRlbXBvcmFyeSBmaWxlLjwvcD4KICAgIAo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iRmNnaWRNYXhSZXF1ZXN0TGVuIiBpZD0iRmNnaWRNYXhSZXF1ZXN0TGVuIj5GY2dpZE1heFJlcXVlc3RMZW48L2E+IDxhIG5hbWU9ImZjZ2lkbWF4cmVxdWVzdGxlbiIgaWQ9ImZjZ2lkbWF4cmVxdWVzdGxlbiI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+bWF4aW11bSBIVFRQIHJlcXVlc3QgbGVuZ3RoPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkZjZ2lkTWF4UmVxdWVzdExlbiA8ZW0+Ynl0ZXM8L2VtPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5GY2dpZE1heFJlcXVlc3RMZW4gMTMxMDcyPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWcsIHZpcnR1YWwgaG9zdDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlcm5hbDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfZmNnaWQ8L3RkPjwvdHI+CjwvdGFibGU+CiAgICAgIDxwPklmIHRoZSBzaXplIG9mIHRoZSByZXF1ZXN0IGJvZHkgZXhjZWVkcyB0aGlzIGFtb3VudCwgdGhlCiAgICAgIHJlcXVlc3Qgd2lsbCBmYWlsIHdpdGggPGNvZGU+NTAwIFNlcnZlciBFcnJvcjwvY29kZT4uPC9wPgoKICAgICAgPHA+QWRtaW5pc3RyYXRvcnMgc2hvdWxkIGNoYW5nZSB0aGlzIHRvIGFuIGFwcHJvcHJpYXRlIHZhbHVlIGZvciB0aGVpciBzaXRlIGJhc2VkCiAgICAgIG9uIGFwcGxpY2F0aW9uIHJlcXVpcmVtZW50cy48L3A+CgogICAgICA8ZGl2IGNsYXNzPSJ3YXJuaW5nIj48aDM+V2FybmluZzwvaDM+CiAgICAgIDxwPkJlZm9yZSAyLjMuNiwgdGhpcyBkZWZhdWx0ZWQgdG8gMUdCLiAgTW9zdCB1c2VycyBvZiBlYXJsaWVyIHZlcnNpb25zIHNob3VsZAogICAgICB1c2UgdGhpcyBkaXJlY3RpdmUgdG8gc2V0IGEgbW9yZSByZWFzb25hYmxlIGxpbWl0LjwvcD4KICAgICAgPC9kaXY+CiAgICAKPGgzPlNlZSBhbHNvPC9oMz4KPHVsPgo8bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkbWF4cmVxdWVzdGlubWVtIj5GY2dpZE1heFJlcXVlc3RJbk1lbTwvYT48L2NvZGU+PC9saT4KPC91bD4KPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkZjZ2lkTWF4UmVxdWVzdHNQZXJQcm9jZXNzIiBpZD0iRmNnaWRNYXhSZXF1ZXN0c1BlclByb2Nlc3MiPkZjZ2lkTWF4UmVxdWVzdHNQZXJQcm9jZXNzPC9hPiA8YSBuYW1lPSJmY2dpZG1heHJlcXVlc3RzcGVycHJvY2VzcyIgaWQ9ImZjZ2lkbWF4cmVxdWVzdHNwZXJwcm9jZXNzIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5NYXggcmVxdWVzdHMgaGFuZGxlZCBieSBlYWNoIEZhc3RDR0kgYXBwbGljYXRpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+RmNnaWRNYXhSZXF1ZXN0c1BlclByb2Nlc3MgPGVtPnZhbHVlPC9lbT48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+RmNnaWRNYXhSZXF1ZXN0c1BlclByb2Nlc3MgMDwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnLCB2aXJ0dWFsIGhvc3Q8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZXJuYWw8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2ZjZ2lkPC90ZD48L3RyPgo8L3RhYmxlPgogICAgICA8cD5GYXN0Q0dJIGFwcGxpY2F0aW9uIHByb2Nlc3NlcyB3aWxsIGJlIHRlcm1pbmF0ZWQgYWZ0ZXIgaGFuZGxpbmcKICAgICAgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgcmVxdWVzdHMuICBBIHZhbHVlIG9mIDxjb2RlPjA8L2NvZGU+CiAgICAgIGRpc2FibGVzIHRoZSBjaGVjay48L3A+CiAgICAgIDxkaXYgY2xhc3M9Im5vdGUiPjxoMz5Ob3RlPC9oMz4KICAgICAgPHA+QSB2YWx1ZSBvZiA8Y29kZT4tMTwvY29kZT4gaXMgY3VycmVudGx5IGFjY2VwdGVkIGZvciBlYXNlIG9mCiAgICAgIG1pZ3JhdGlvbiBmb3IgZXhpc3RpbmcgY29uZmlndXJhdGlvbnMuICBJdCBpcyB0cmVhdGVkIHRoZSBzYW1lIGFzCiAgICAgIDxjb2RlPjA8L2NvZGU+LjwvcD4KICAgICAgPC9kaXY+CiAgICAgIDxwPkNlcnRhaW4gYXBwbGljYXRpb25zLCBub3RhYmx5IFBIUCBhcyBGYXN0Q0dJLCBoYXZlIHRoZWlyIG93bgogICAgICBmYWNpbGl0eSBmb3IgdGVybWluYXRpbmcgYWZ0ZXIgaGFuZGxpbmcgYSBjZXJ0YWluIG51bWJlciBvZgogICAgICByZXF1ZXN0cy4gIFRoaXMgZGlyZWN0aXZlIGNhbiBiZSB1c2VkIHRvIGF2b2lkIHNlbmRpbmcKICAgICAgYWRkaXRpb25hbCByZXF1ZXN0cyB0byB0aGUgYXBwbGljYXRpb24gYWZ0ZXIgaXQgaGFzIGhhbmRsZWQgaXRzCiAgICAgIGxpbWl0LjwvcD4KICAgICAgPGRpdiBjbGFzcz0ibm90ZSI+PGgzPk5vdGU8L2gzPgogICAgICA8cD5JZiB0aGlzIGlzIHNldCBzdWNoIHRoYXQgZnJlcXVlbnQgcHJvY2VzcyBjcmVhdGlvbiB3aWxsIGJlCiAgICAgIHJlcXVpcmVkLCB5b3Ugd2lsbCBsaWtlbHkgbmVlZCB0byBhZGp1c3QKICAgICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkc3Bhd25zY29yZXVwbGltaXQiPkZjZ2lkU3Bhd25TY29yZVVwTGltaXQ8L2E+PC9jb2RlPgogICAgICBvciBvdGhlciBzY29yZS1yZWxhdGVkIGRpcmVjdGl2ZXMgdG8gYWxsb3cgbW9yZSBmcmVxdWVudCBwcm9jZXNzCiAgICAgIGNyZWF0aW9uLjwvcD4KICAgICAgPC9kaXY+CgogICAgICA8cD5UaGlzIHNldHRpbmcgd2lsbCBhcHBseSB0byBhbGwgYXBwbGljYXRpb25zIHNwYXduZWQgZm9yIHRoaXMKICAgICAgc2VydmVyIG9yIHZpcnR1YWwgaG9zdC4gIFVzZQogICAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRjbWRvcHRpb25zIj5GY2dpZENtZE9wdGlvbnM8L2E+PC9jb2RlPiB0byBhcHBseQogICAgICB0aGlzIHNldHRpbmcgdG8gYSBzaW5nbGUgYXBwbGljYXRpb24uPC9wPgogICAgCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJGY2dpZE1pblByb2Nlc3Nlc1BlckNsYXNzIiBpZD0iRmNnaWRNaW5Qcm9jZXNzZXNQZXJDbGFzcyI+RmNnaWRNaW5Qcm9jZXNzZXNQZXJDbGFzczwvYT4gPGEgbmFtZT0iZmNnaWRtaW5wcm9jZXNzZXNwZXJjbGFzcyIgaWQ9ImZjZ2lkbWlucHJvY2Vzc2VzcGVyY2xhc3MiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPk1pbiBwcm9jZXNzIGNvdW50IG9mIG9uZSBjbGFzcyBvZiBGYXN0Q0dJIGFwcGxpY2F0aW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkZjZ2lkTWluUHJvY2Vzc2VzUGVyQ2xhc3MgPGVtPnZhbHVlPC9lbT48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+RmNnaWRNaW5Qcm9jZXNzZXNQZXJDbGFzcyAzPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWcsIHZpcnR1YWwgaG9zdDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlcm5hbDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfZmNnaWQ8L3RkPjwvdHI+CjwvdGFibGU+CiAgICAgIDxwPlRoaXMgZGlyZWN0aXZlIHNldHMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIHByb2Nlc3NlcyB0aGF0IHdpbGwgYmUKICAgICAgcmV0YWluZWQgaW4gYSBwcm9jZXNzIGNsYXNzIGFmdGVyIGZpbmlzaGluZyByZXF1ZXN0cy48L3A+CgogICAgICA8cD5UaGlzIHNldHRpbmcgd2lsbCBhcHBseSB0byBhbGwgYXBwbGljYXRpb25zIHNwYXduZWQgZm9yIHRoaXMKICAgICAgc2VydmVyIG9yIHZpcnR1YWwgaG9zdC4gIFVzZQogICAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRjbWRvcHRpb25zIj5GY2dpZENtZE9wdGlvbnM8L2E+PC9jb2RlPiB0byBhcHBseQogICAgICB0aGlzIHNldHRpbmcgdG8gYSBzaW5nbGUgYXBwbGljYXRpb24uPC9wPgogICAgCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJGY2dpZE91dHB1dEJ1ZmZlclNpemUiIGlkPSJGY2dpZE91dHB1dEJ1ZmZlclNpemUiPkZjZ2lkT3V0cHV0QnVmZmVyU2l6ZTwvYT4gPGEgbmFtZT0iZmNnaWRvdXRwdXRidWZmZXJzaXplIiBpZD0iZmNnaWRvdXRwdXRidWZmZXJzaXplIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5DR0kgb3V0cHV0IGJ1ZmZlciBzaXplPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkZjZ2lkT3V0cHV0QnVmZmVyU2l6ZSA8ZW0+Ynl0ZXM8L2VtPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5GY2dpZE91dHB1dEJ1ZmZlclNpemUgNjU1MzY8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVybmFsPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9mY2dpZDwvdGQ+PC90cj4KPC90YWJsZT4KICAgICAgPHA+VGhpcyBpcyB0aGUgbWF4aW11bSBhbW91bnQgb2YgcmVzcG9uc2UgZGF0YSB0aGUgbW9kdWxlIHdpbGwgcmVhZAogICAgICBmcm9tIHRoZSBGYXN0Q0dJIGFwcGxpY2F0aW9uIGJlZm9yZSBmbHVzaGluZyB0aGUgZGF0YSB0byB0aGUgY2xpZW50LjwvcD4KICAgIAo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iRmNnaWRQYXNzSGVhZGVyIiBpZD0iRmNnaWRQYXNzSGVhZGVyIj5GY2dpZFBhc3NIZWFkZXI8L2E+IDxhIG5hbWU9ImZjZ2lkcGFzc2hlYWRlciIgaWQ9ImZjZ2lkcGFzc2hlYWRlciI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+SGVhZGVyIG5hbWUgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gRmFzdENHSSBhcyBlbnZpcm9ubWVudCB2YXJpYWJsZS48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+RmNnaWRQYXNzSGVhZGVyIDxlbT5uYW1lPC9lbT48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+bm9uZTwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnLCB2aXJ0dWFsIGhvc3Q8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZXJuYWw8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2ZjZ2lkPC90ZD48L3RyPgo8L3RhYmxlPgogICAgICA8cD5UaGlzIGRpcmVjdGl2ZSBzcGVjaWZpZXMgdGhlIG5hbWUgb2YgYSByZXF1ZXN0IGhlYWRlciB3aGljaAogICAgICB3aWxsIGJlIHBhc3NlZCB0byB0aGUgRmFzdENHSSBhcHBsaWNhdGlvbiBhcyBhbiBlbnZpcm9ubWVudAogICAgICB2YXJpYWJsZS4gIFRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBkZXJpdmVkIGZyb20KICAgICAgdGhlIHZhbHVlIHNwZWNpZmllZCBvbiB0aGlzIGRpcmVjdGl2ZSwgYXMgZGlzY3Vzc2VkIGJlbG93OjwvcD4KCiAgICAgIDxwPlRoZSBsZWdhY3kgYmVoYXZpb3IgaXMgdG8gdXNlIHRoZSB2YWx1ZSBzcGVjaWZpZWQgb24gdGhpcyBkaXJlY3RpdmUKICAgICAgYXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUsIGNvbnZlcnRpbmcgaHlwaGVucyB0byB1bmRlcnNjb3Jlcy4KICAgICAgTm8gY2FzZSBjb252ZXJzaW9uIGlzIHBlcmZvcm1lZC48L3A+CgogICAgICA8cD5CZWdpbm5pbmcgd2l0aCByZWxlYXNlIDIuMy42LCBhbiBhZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlCiAgICAgIGlzIGNyZWF0ZWQuICBUaGUgdmFsdWUgc3BlY2lmaWVkIG9uIHRoaXMgZGlyZWN0aXZlIGlzIGNvbnZlcnRlZCB0bwogICAgICB1cHBlciBjYXNlLCBwcmVmaXhlZCB3aXRoIDxjb2RlPkhUVFBfPC9jb2RlPiwgYW5kIGh5cGhlbnMgYXJlCiAgICAgIGNvbnZlcnRlZCB0byB1bmRlcnNjb3Jlcy48L3A+CgogICAgICA8ZGl2IGNsYXNzPSJub3RlIj48aDM+Tm90ZTwvaDM+CiAgICAgIDxwPk1vc3QgcmVxdWVzdCBoZWFkZXJzIGFyZSBhbHJlYWR5IGF2YWlsYWJsZSB0byB0aGUgYXBwbGljYXRpb24KICAgICAgYXMgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBhbmQgZ2VuZXJhbGx5IGFyZSBwcmVmaXhlZCB3aXRoCiAgICAgIDxjb2RlPkhUVFBfPC9jb2RlPi4gIChOb3RhYmxlIGV4Y2VwdGlvbnMgYXJlIDxjb2RlPkNvbnRlbnQtdHlwZTwvY29kZT4KICAgICAgYW5kIDxjb2RlPkNvbnRlbnQtbGVuZ3RoPC9jb2RlPiwgd2hpY2ggZG8gbm90IGhhdmUgdGhlCiAgICAgIDxjb2RlPkhUVFBfPC9jb2RlPiBwcmVmaXguKSAgVGh1cywgdGhpcyBkaXJlY3RpdmUgaXMgb25seSByZXF1aXJlZAogICAgICBmb3IgcmVxdWVzdCBoZWFkZXJzIHRoYXQgYXJlIHB1cnBvc2VmdWxseSBvbWl0dGVkLCBzdWNoIGFzCiAgICAgIDxjb2RlPkF1dGhvcml6YXRpb248L2NvZGU+IGFuZCA8Y29kZT5Qcm94eS1BdXRob3JpemF0aW9uPC9jb2RlPi4KICAgICAgT25seSBwYXNzIHRoZXNlIHJlcXVlc3QgaGVhZGVycyBpZiBhYnNvbHV0ZWx5IHJlcXVpcmVkLjwvcD4KICAgICAgPC9kaXY+CiAgICAKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkZjZ2lkUHJvY2Vzc0xpZmVUaW1lIiBpZD0iRmNnaWRQcm9jZXNzTGlmZVRpbWUiPkZjZ2lkUHJvY2Vzc0xpZmVUaW1lPC9hPiA8YSBuYW1lPSJmY2dpZHByb2Nlc3NsaWZldGltZSIgaWQ9ImZjZ2lkcHJvY2Vzc2xpZmV0aW1lIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5tYXhpbXVtIEZhc3RDR0kgYXBwbGljYXRpb24gcHJvY2VzcyBsaWZldGltZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5GY2dpZFByb2Nlc3NMaWZlVGltZSA8ZW0+c2Vjb25kczwvZW0+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkZjZ2lkUHJvY2Vzc0xpZmVUaW1lIDM2MDA8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVybmFsPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9mY2dpZDwvdGQ+PC90cj4KPC90YWJsZT4KICAgICAgPHA+SWRsZSBhcHBsaWNhdGlvbiBwcm9jZXNzZXMgd2hpY2ggaGF2ZSBleGlzdGVkIGZvciBncmVhdGVyCiAgICAgIHRoYW4gdGhpcyB0aW1lIHdpbGwgYmUgdGVybWluYXRlZCwgaWYgdGhlIG51bWJlciBvZiBwcm9jZXNzc2VzIGZvciB0aGUKICAgICAgY2xhc3MgZXhjZWVkcwogICAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRtaW5wcm9jZXNzZXNwZXJjbGFzcyI+RmNnaWRNaW5Qcm9jZXNzZXNQZXJDbGFzczwvYT48L2NvZGU+LgogICAgICBBIHZhbHVlIG9mIDxjb2RlPjA8L2NvZGU+IGRpc2FibGVzIHRoZSBjaGVjay48L3A+CgogICAgICA8cD5UaGlzIHByb2Nlc3MgbGlmZXRpbWUgY2hlY2sgaXMgcGVyZm9ybWVkIGF0IHRoZSBmcmVxdWVuY3kgb2YgdGhlIGNvbmZpZ3VyZWQKICAgICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkaWRsZXNjYW5pbnRlcnZhbCI+RmNnaWRJZGxlU2NhbkludGVydmFsPC9hPjwvY29kZT4uPC9wPgoKICAgICAgPHA+VGhpcyBzZXR0aW5nIHdpbGwgYXBwbHkgdG8gYWxsIGFwcGxpY2F0aW9ucyBzcGF3bmVkIGZvciB0aGlzCiAgICAgIHNlcnZlciBvciB2aXJ0dWFsIGhvc3QuICBVc2UKICAgICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkY21kb3B0aW9ucyI+RmNnaWRDbWRPcHRpb25zPC9hPjwvY29kZT4gdG8gYXBwbHkKICAgICAgdGhpcyBzZXR0aW5nIHRvIGEgc2luZ2xlIGFwcGxpY2F0aW9uLjwvcD4KICAgIAo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iRmNnaWRQcm9jZXNzVGFibGVGaWxlIiBpZD0iRmNnaWRQcm9jZXNzVGFibGVGaWxlIj5GY2dpZFByb2Nlc3NUYWJsZUZpbGU8L2E+IDxhIG5hbWU9ImZjZ2lkcHJvY2Vzc3RhYmxlZmlsZSIgaWQ9ImZjZ2lkcHJvY2Vzc3RhYmxlZmlsZSI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+c2hhcmVkIG1lbW9yeSBmaWxlIHBhdGg8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+RmNnaWRQcm9jZXNzVGFibGVGaWxlIDxlbT5wYXRobmFtZTwvZW0+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkZjZ2lkUHJvY2Vzc1RhYmxlRmlsZSBsb2dzL2ZjZ2lkX3NobTwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVybmFsPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9mY2dpZDwvdGQ+PC90cj4KPC90YWJsZT4KICAgICAgPHA+VGhpcyBtb2R1bGUgdXNlcyBzaGFyZWQgbWVtb3J5IG9uIFVuaXggdG8gbWFpbnRhaW4gc3RhdGUgd2hpY2gKICAgICAgaXMgc2hhcmVkIGJldHdlZW4gaHR0cGQgcHJvY2Vzc2VzLiAgVGhpcyBkaXJlY3RpdmUgc3BlY2lmaWVzIHRoZQogICAgICBuYW1lIG9mIHRoZSBzaGFyZWQgbWVtb3J5IGZpbGUuPC9wPgogICAgCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJGY2dpZFNwYXduU2NvcmUiIGlkPSJGY2dpZFNwYXduU2NvcmUiPkZjZ2lkU3Bhd25TY29yZTwvYT4gPGEgbmFtZT0iZmNnaWRzcGF3bnNjb3JlIiBpZD0iZmNnaWRzcGF3bnNjb3JlIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5FYWNoIHNwYXduIGFkZHMgdGhpcyB2YWx1ZSB0byB0aGUgcHJvY2VzcyBhY3Rpdml0eSBzY29yZS48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+RmNnaWRTcGF3blNjb3JlIDxlbT52YWx1ZTwvZW0+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkZjZ2lkU3Bhd25TY29yZSAxPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZXJuYWw8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2ZjZ2lkPC90ZD48L3RyPgo8L3RhYmxlPgogICAgICA8cD5Mb3dlciB2YWx1ZXMgb2YgdGhpcyBkaXJlY3RpdmUgaW5jcmVhc2UgdGhlIGFsbG93ZWQgc3Bhd24gcmF0ZS48L3A+CgogICAgICA8cD5SZWZlciB0byB0aGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkc3Bhd25zY29yZXVwbGltaXQiPkZjZ2lkU3Bhd25TY29yZVVwTGltaXQ8L2E+PC9jb2RlPgogICAgICBkaXJlY3RpdmUgZm9yIG1vcmUgaW5mb3JtYXRpb24uPC9wPgogICAgCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJGY2dpZFNwYXduU2NvcmVVcExpbWl0IiBpZD0iRmNnaWRTcGF3blNjb3JlVXBMaW1pdCI+RmNnaWRTcGF3blNjb3JlVXBMaW1pdDwvYT4gPGEgbmFtZT0iZmNnaWRzcGF3bnNjb3JldXBsaW1pdCIgaWQ9ImZjZ2lkc3Bhd25zY29yZXVwbGltaXQiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPk1heGltdW0gdmFsdWUgb2YgdGhlIHByb2Nlc3MgYWN0aXZpdHkgc2NvcmUgd2hpY2ggYWxsb3dzCiAgICBhIHNwYXduIHRvIG9jY3VyPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkZjZ2lkU3Bhd25TY29yZVVwTGltaXQgPGVtPnZhbHVlPC9lbT48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+RmNnaWRTcGF3blNjb3JlVXBMaW1pdCAxMDwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVybmFsPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9mY2dpZDwvdGQ+PC90cj4KPC90YWJsZT4KICAgICAgPHA+QSBwcm9jZXNzIGFjdGl2aXR5IHNjb3JlIGlzIG1haW50YWluZWQgZm9yIGVhY2ggRmFzdENHSSBhcHBsaWNhdGlvbjsKICAgICAgdGhlIHNjb3JlIGlzIHVzZWQgdG8gY29udHJvbCB0aGUgcmF0ZSBvZiBzcGF3bmluZyBpbiBvcmRlciB0byBhdm9pZAogICAgICBwbGFjaW5nIHRvbyBtdWNoIGxvYWQgb24gdGhlIHN5c3RlbSwgcGFydGljdWxhcmx5IGZvciBhcHBsaWNhdGlvbnMgdGhhdAogICAgICBhcmUgcmVwZWF0ZWRseSBleGl0aW5nIGFibm9ybWFsbHkuPC9wPgoKICAgICAgPHA+VGhlIHZhbHVlIG9mIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZHNwYXduc2NvcmUiPkZjZ2lkU3Bhd25TY29yZTwvYT48L2NvZGU+CiAgICAgIGlzIGFkZGVkIHRvIHRoZSBzY29yZSBmb3IgZXZlcnkgc3Bhd25lZCBhcHBsaWNhdGlvbiBwcm9jZXNzLiAgVGhlIHZhbHVlIG9mCiAgICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZHRlcm1pbmF0aW9uc2NvcmUiPkZjZ2lkVGVybWluYXRpb25TY29yZTwvYT48L2NvZGU+IGlzIGFkZGVkCiAgICAgIHRvIHRoZSBzY29yZSBmb3IgZXZlcnkgdGVybWluYXRlZCBhcHBsaWNhdGlvbiBwcm9jZXNzLiAgVGhlIHZhbHVlIG9mCiAgICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZHRpbWVzY29yZSI+RmNnaWRUaW1lU2NvcmU8L2E+PC9jb2RlPiBpcyBzdWJ0cmFjdGVkCiAgICAgIGZyb20gdGhlIHNjb3JlIGV2ZXJ5IHNlY29uZC48L3A+CgogICAgICA8cD5XaGVuIHRoZSBjdXJyZW50IHNjb3JlIGlzIGhpZ2hlciB0aGFuIHRoZSB2YWx1ZSBvZgogICAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5GY2dpZFNwYXduU2NvcmVVcExpbWl0PC9jb2RlPiwgbm8gYWRkaXRpb25hbCBhcHBsaWNhdGlvbgogICAgICBwcm9jZXNzZXMgd2lsbCBiZSBzcGF3bmVkOyBzdWJzZXF1ZW50IHJlcXVlc3RzIG11c3Qgd2FpdCB1bnRpbCBhbiBleGlzdGluZwogICAgICBwcm9jZXNzIGlzIGZyZWUgb3IgdW50aWwgdGhlIHNjb3JlIGRlY3JlYXNlcyBiZWxvdyB0aGUgbGltaXQuPC9wPgoKICAgICAgPHA+SWYgdGhlIGxpbWl0IGlzIHJlYWNoZWQgdW5kZXIgbm9ybWFsIGxvYWQsIGl0IG1heSBub3QgYmUgc3VmZmljaWVudCB0bwogICAgICBzaW1wbHkgaW5jcmVhc2UgdGhlIGxpbWl0LCBhcyB0aGF0IHdvdWxkIG9ubHkgZGVsYXkgdGhlIGFtb3VudCBvZiB0aW1lCiAgICAgIGJlZm9yZSB0aGUgbGltaXQgaXMgcmVhY2hlZCBhZ2Fpbi4gIERlY3JlYXNlIHRoZSB2YWx1ZSBvZgogICAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWRzcGF3bnNjb3JlIj5GY2dpZFNwYXduU2NvcmU8L2E+PC9jb2RlPiBhbmQvb3IKICAgICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkdGVybWluYXRpb25zY29yZSI+RmNnaWRUZXJtaW5hdGlvblNjb3JlPC9hPjwvY29kZT4sIG9yCiAgICAgIGluY3JlYXNlIHRoZSB2YWx1ZSBvZiA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjZmNnaWR0aW1lc2NvcmUiPkZjZ2lkVGltZVNjb3JlPC9hPjwvY29kZT4sCiAgICAgIHRvIGFsbG93IGEgaGlnaGVyIHJhdGUgb2Ygc3Bhd25pbmcuPC9wPgogICAgCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJGY2dpZFRlcm1pbmF0aW9uU2NvcmUiIGlkPSJGY2dpZFRlcm1pbmF0aW9uU2NvcmUiPkZjZ2lkVGVybWluYXRpb25TY29yZTwvYT4gPGEgbmFtZT0iZmNnaWR0ZXJtaW5hdGlvbnNjb3JlIiBpZD0iZmNnaWR0ZXJtaW5hdGlvbnNjb3JlIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5FYWNoIHRlcm1pbmF0ZWQgcHJvY2VzcyBhZGRzIHRoaXMgdmFsdWUgdG8gdGhlIHByb2Nlc3MgYWN0aXZpdHkKICAgIHNjb3JlLjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5GY2dpZFRlcm1pbmF0aW9uU2NvcmUgPGVtPnZhbHVlPC9lbT48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+RmNnaWRUZXJtaW5hdGlvblNjb3JlIDI8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlcm5hbDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfZmNnaWQ8L3RkPjwvdHI+CjwvdGFibGU+CiAgICAgIDxwPkxvd2VyIHZhbHVlcyBvZiB0aGlzIGRpcmVjdGl2ZSBpbmNyZWFzZSB0aGUgYWxsb3dlZCBzcGF3biByYXRlLiAgTmVnYXRpdmUKICAgICAgdmFsdWVzIGNhbiBiZSB1c2VmdWwgaW4gc29tZSBjaXJjdW1zdGFuY2VzLCBzdWNoIGFzIGFsbG93aW5nIHByb2Nlc3MKICAgICAgcmVwbGFjZW1lbnQgd2l0aG91dCBpbmNyZWFzaW5nIHRoZSBzY29yZS48L3A+CgogICAgICA8cD5SZWZlciB0byB0aGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2ZjZ2lkc3Bhd25zY29yZXVwbGltaXQiPkZjZ2lkU3Bhd25TY29yZVVwTGltaXQ8L2E+PC9jb2RlPgogICAgICBkaXJlY3RpdmUgZm9yIG1vcmUgaW5mb3JtYXRpb24uPC9wPgogICAgCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJGY2dpZFRpbWVTY29yZSIgaWQ9IkZjZ2lkVGltZVNjb3JlIj5GY2dpZFRpbWVTY29yZTwvYT4gPGEgbmFtZT0iZmNnaWR0aW1lc2NvcmUiIGlkPSJmY2dpZHRpbWVzY29yZSI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+QW1vdW50IHN1YnRyYWN0ZWQgZnJvbSBwcm9jZXNzIGFjdGl2aXR5IHNjb3JlIGVhY2gKICAgIHNlY29uZDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5GY2dpZFRpbWVTY29yZSA8ZW0+dmFsdWU8L2VtPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5GY2dpZFRpbWVTY29yZSAxPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZXJuYWw8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2ZjZ2lkPC90ZD48L3RyPgo8L3RhYmxlPgogICAgICA8cD5IaWdoZXIgdmFsdWVzIG9mIHRoaXMgZGlyZWN0aXZlIGluY3JlYXNlIHRoZSBhbGxvd2VkIHNwYXduIHJhdGUuPC9wPgoKICAgICAgPHA+UmVmZXIgdG8gdGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNmY2dpZHNwYXduc2NvcmV1cGxpbWl0Ij5GY2dpZFNwYXduU2NvcmVVcExpbWl0PC9hPjwvY29kZT4KICAgICAgZGlyZWN0aXZlIGZvciBtb3JlIGluZm9ybWF0aW9uLjwvcD4KICAgIAo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iRmNnaWRXaW4zMlByZXZlbnRPcnBoYW5zIiBpZD0iRmNnaWRXaW4zMlByZXZlbnRPcnBoYW5zIj5GY2dpZFdpbjMyUHJldmVudE9ycGhhbnM8L2E+IDxhIG5hbWU9ImZjZ2lkd2luMzJwcmV2ZW50b3JwaGFucyIgaWQ9ImZjZ2lkd2luMzJwcmV2ZW50b3JwaGFucyI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+Sm9iIENvbnRyb2wgb3JwaGFuIHByZXZlbnRpb24gZm9yIGZjZ2kgd29ya2Vycy48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+RmNnaWRXaW4zMlByZXZlbnRPcnBoYW5zIDxlbT5PbnxPZmY8L2VtPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5GY2dpZFdpbjMyUHJldmVudE9ycGhhbnMgT2ZmPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZXJuYWw8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2ZjZ2lkPC90ZD48L3RyPgo8L3RhYmxlPgogICAgICA8cD5Vc2VzIEpvYiBDb250cm9sIE9iamVjdHMgb24gV2luZG93cywgb25seSwgdG8gZW5mb3JjZSBzaHV0ZG93biBvZiBhbGwKICAgICAgZmNnaSBwcm9jZXNzZXMgY3JlYXRlZCBieSB0aGUgaHR0cGQgd29ya2VyIHdoZW4gdGhlIGh0dHBkIHdvcmtlciBoYXMgYmVlbgogICAgICB0ZXJtaW5hdGVkLiBQcm9jZXNzZXMgdGVybWluYXRlZCBpbiB0aGlzIHdheSBkbyBub3QgaGF2ZSB0aGUgb3Bwb3J0dW5pdHkKICAgICAgdG8gY2xlYW4gdXAgZ3JhY2VmdWxseSwgY29tcGxldGUgcGVuZGluZyBkaXNrIHdyaXRlcywgb3Igc2ltaWxhciBjbG9zdXJlCiAgICAgIHRyYW5zYWN0aW9ucywgdGhlcmVmb3JlIHRoaXMgYmVoYXZpb3IgaXMgZXhwZXJpbWVudGFsIGFuZCBkaXNhYmxlZCwgYnkKICAgICAgZGVmYXVsdC48L3A+CiAgICAKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkZjZ2lkV3JhcHBlciIgaWQ9IkZjZ2lkV3JhcHBlciI+RmNnaWRXcmFwcGVyPC9hPiA8YSBuYW1lPSJmY2dpZHdyYXBwZXIiIGlkPSJmY2dpZHdyYXBwZXIiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlRoZSBDR0kgd3JhcHBlciBzZXR0aW5nPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkZjZ2lkV3JhcHBlciA8ZW0+Y29tbWFuZDwvZW0+IFsgPGVtPnN1ZmZpeDwvZW0+IF0gWyB2aXJ0dWFsIF08L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+bm9uZTwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnLCB2aXJ0dWFsIGhvc3QsIGRpcmVjdG9yeSwgLmh0YWNjZXNzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjT3ZlcnJpZGUiPk92ZXJyaWRlOjwvYT48L3RoPjx0ZD5GaWxlSW5mbzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlcm5hbDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfZmNnaWQ8L3RkPjwvdHI+CjwvdGFibGU+CiAgICAgIDxwPlRoZSBnaXZlbiBjb21tYW5kIGlzIHVzZWQgdG8gc3Bhd24gRkNHSSBzZXJ2ZXIgcHJvY2Vzc2VzLiBJZiB0aGlzIGRpcmVjdGl2ZQogICAgICBpcyBub3QgdXNlZCwgdGhlIGZpbGUgcG9pbnRlZCB0byBieSB0aGUgcmVxdWVzdCBVUkwgd2lsbCBiZSB1c2VkIGluc3RlYWQuCiAgICAgIE9wdGlvbnMgZm9yIHRoZSBjb21tYW5kIGNhbiBiZSBpbmNsdWRlZCB1c2luZyBxdW90YXRpb24gbWFya3Mgc3Vycm91bmRpbmcKICAgICAgdGhlIGNvbW1hbmQgYW5kIG9wdGlvbnMuPC9wPgogICAgICA8cD5UaGUgb3B0aW9uYWwgPGNvZGU+c3VmZml4PC9jb2RlPiBhcmd1bWVudCByZXN0cmljdHMgdGhlIHVzZSBvZiB0aGlzIEZDR0kKICAgICAgc2VydmVyIHRvIGFsbCBVUkxzIHdpdGggdGhlIGdpdmVuIGV4YWN0IHBhdGggc3VmZml4LiBBIHN1ZmZpeCBuZWVkcyB0byBzdGFydAogICAgICB3aXRoICc8Y29kZT4uPC9jb2RlPicuPC9wPgogICAgICA8cD5UaGUgPGNvZGU+dmlydHVhbDwvY29kZT4gZmxhZyBzaWduYWxzIHRoYXQgdGhlcmUgd2lsbCBiZSBubyBjaGVjawogICAgICB3aGV0aGVyIHRoZSByZXF1ZXN0IFVSTCBhY3R1YWxseSBwb2ludHMgdG8gYW4gZXhpc3RpbmcgZmlsZS4gVGhlIG9ubHkKICAgICAgZmlsZSB3aGljaCBuZWVkcyB0byBleGlzdCBpcyB0aGUgd3JhcHBlciBpdHNlbGYuPC9wPgogICAgICA8cD5UaGUgZGlyZWN0aXZlIGNhbiBiZSB1c2VkIG11bHRpcGxlIHRpbWVzLiBBIHdyYXBwZXIgZGVmaW5lZCB3aXRob3V0IGEgc3VmZml4CiAgICAgIGlzIHVzZWQgYXMgYSBkZWZhdWx0IGluIGNhc2Ugbm8gc3VmZml4IG1hdGNoZXMuPC9wPgogICAgCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJGY2dpZFpvbWJpZVNjYW5JbnRlcnZhbCIgaWQ9IkZjZ2lkWm9tYmllU2NhbkludGVydmFsIj5GY2dpZFpvbWJpZVNjYW5JbnRlcnZhbDwvYT4gPGEgbmFtZT0iZmNnaWR6b21iaWVzY2FuaW50ZXJ2YWwiIGlkPSJmY2dpZHpvbWJpZXNjYW5pbnRlcnZhbCI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+c2NhbiBpbnRlcnZhbCBmb3Igem9tYmllIHByb2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+RmNnaWRab21iaWVTY2FuSW50ZXJ2YWwgPGVtPnNlY29uZHM8L2VtPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5GY2dpZFpvbWJpZVNjYW5JbnRlcnZhbCAzPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZXJuYWw8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2ZjZ2lkPC90ZD48L3RyPgo8L3RhYmxlPgogICAgICA8cD5UaGUgbW9kdWxlIGNoZWNrcyBmb3IgZXhpdGVkIEZhc3RDR0kgYXBwbGljYXRpb25zIGF0IHRoaXMgaW50ZXJ2YWwuCiAgICAgIER1cmluZyB0aGlzIHBlcmlvZCBvZiB0aW1lLCB0aGUgYXBwbGljYXRpb24gbWF5IGV4aXN0IGluIHRoZSBwcm9jZXNzCiAgICAgIHRhYmxlIGFzIGEgem9tYmllIChvbiBVbml4KS48L3A+CiAgICAKPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJib3R0b21sYW5nIj4KPHA+PHNwYW4+QXZhaWxhYmxlIExhbmd1YWdlczogPC9zcGFuPjxhIGhyZWY9Ii4uL2VuL21vZC9tb2RfZmNnaWQuaHRtbCIgdGl0bGU9IkVuZ2xpc2giPiZuYnNwO2VuJm5ic3A7PC9hPjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiBhbHQ9InRvcCIgLz48L2E+PC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGgyPjxhIGlkPSJjb21tZW50c19zZWN0aW9uIiBuYW1lPSJjb21tZW50c19zZWN0aW9uIj5Db21tZW50czwvYT48L2gyPjxkaXYgY2xhc3M9Indhcm5pbmciPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPjxiciAvPlRoaXMgaXMgbm90IGEgUSZhbXA7QSBzZWN0aW9uLiBDb21tZW50cyBwbGFjZWQgaGVyZSBzaG91bGQgYmUgcG9pbnRlZCB0b3dhcmRzIHN1Z2dlc3Rpb25zIG9uIGltcHJvdmluZyB0aGUgZG9jdW1lbnRhdGlvbiBvciBzZXJ2ZXIsIGFuZCBtYXkgYmUgcmVtb3ZlZCBhZ2FpbiBieSBvdXIgbW9kZXJhdG9ycyBpZiB0aGV5IGFyZSBlaXRoZXIgaW1wbGVtZW50ZWQgb3IgY29uc2lkZXJlZCBpbnZhbGlkL29mZi10b3BpYy4gUXVlc3Rpb25zIG9uIGhvdyB0byBtYW5hZ2UgdGhlIEFwYWNoZSBIVFRQIFNlcnZlciBzaG91bGQgYmUgZGlyZWN0ZWQgYXQgZWl0aGVyIG91ciBJUkMgY2hhbm5lbCwgI2h0dHBkLCBvbiBGcmVlbm9kZSwgb3Igc2VudCB0byBvdXIgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvbGlzdHMuaHRtbCI+bWFpbGluZyBsaXN0czwvYT4uPC9kaXY+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tLy8tLT48IVtDREFUQVsvLz48IS0tCnZhciBjb21tZW50c19zaG9ydG5hbWUgPSAnaHR0cGQnOwp2YXIgY29tbWVudHNfaWRlbnRpZmllciA9ICdodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzL3RydW5rL21vZC9tb2RfZmNnaWQuaHRtbCc7CihmdW5jdGlvbih3LCBkKSB7CiAgICBpZiAody5sb2NhdGlvbi5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpID09ICJodHRwZC5hcGFjaGUub3JnIikgewogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+PFwvZGl2PicpOwogICAgICAgIHZhciBzID0gZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgICBzLmFzeW5jID0gdHJ1ZTsKICAgICAgICBzLnNyYyA9ICdodHRwczovL2NvbW1lbnRzLmFwYWNoZS5vcmcvc2hvd19jb21tZW50cy5sdWE/c2l0ZT0nICsgY29tbWVudHNfc2hvcnRuYW1lICsgJyZwYWdlPScgKyBjb21tZW50c19pZGVudGlmaWVyOwogICAgICAgIChkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0gfHwgZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdKS5hcHBlbmRDaGlsZChzKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+Q29tbWVudHMgYXJlIGRpc2FibGVkIGZvciB0aGlzIHBhZ2UgYXQgdGhlIG1vbWVudC48XC9kaXY+Jyk7CiAgICB9Cn0pKHdpbmRvdywgZG9jdW1lbnQpOwovLy0tPjwhXV0+PC9zY3JpcHQ+PC9kaXY+PGRpdiBpZD0iZm9vdGVyIj4KPHAgY2xhc3M9ImFwYWNoZSI+Q29weXJpZ2h0IDIwMTQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLjxiciAvPkxpY2Vuc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiPkFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMDwvYT4uPC9wPgo8cCBjbGFzcz0ibWVudSI+PGEgaHJlZj0iLi4vbW9kLyI+TW9kdWxlczwvYT4gfCA8YSBocmVmPSIuLi9tb2QvcXVpY2tyZWZlcmVuY2UuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSJodHRwOi8vd2lraS5hcGFjaGUub3JnL2h0dHBkL0ZBUSI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwiPkdsb3NzYXJ5PC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+U2l0ZW1hcDwvYT48L3A+PC9kaXY+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0vLy0tPjwhW0NEQVRBWy8vPjwhLS0KaWYgKHR5cGVvZihwcmV0dHlQcmludCkgIT09ICd1bmRlZmluZWQnKSB7CiAgICBwcmV0dHlQcmludCgpOwp9Ci8vLS0+PCFdXT48L3NjcmlwdD4KPC9ib2R5PjwvaHRtbD4=