PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD48IS0tCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgICAgICAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGZyb20geG1sIHNvdXJjZTogRE8gTk9UIEVESVQKICAgICAgICBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWAogICAgICAtLT4KPHRpdGxlPm1vZF9jYWNoZSAtIEFwYWNoZSBIVFRQIFNlcnZlcjwvdGl0bGU+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTWFpbiBzdHlsZXNoZWV0IiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLWxvb3NlLTEwMHBjLmNzcyIgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgbWVkaWE9ImFsbCIgdHlwZT0idGV4dC9jc3MiIHRpdGxlPSJObyBTaWRlYmFyIC0gRGVmYXVsdCBmb250IHNpemUiIC8+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwtcHJpbnQuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJwcmludCIgdHlwZT0idGV4dC9jc3MiIC8+CjxsaW5rIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIgcmVsPSJzaG9ydGN1dCBpY29uIiAvPjwvaGVhZD4KPGJvZHk+CjxkaXYgaWQ9InBhZ2UtaGVhZGVyIj4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4uL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL2RpcmVjdGl2ZXMuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSIuLi9mYXEvIj5GQVE8L2E+IHwgPGEgaHJlZj0iLi4vZ2xvc3NhcnkuaHRtbCI+R2xvc3Nhcnk8L2E+IHwgPGEgaHJlZj0iLi4vc2l0ZW1hcC5odG1sIj5TaXRlbWFwPC9hPjwvcD4KPHAgY2xhc3M9ImFwYWNoZSI+QXBhY2hlIEhUVFAgU2VydmVyIFZlcnNpb24gMi4zPC9wPgo8aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9mZWF0aGVyLmdpZiIgLz48L2Rpdj4KPGRpdiBjbGFzcz0idXAiPjxhIGhyZWY9Ii4vIj48aW1nIHRpdGxlPSImbHQ7LSIgYWx0PSImbHQ7LSIgc3JjPSIuLi9pbWFnZXMvbGVmdC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGlkPSJwYXRoIj4KPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QXBhY2hlPC9hPiAmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnLyI+SFRUUCBTZXJ2ZXI8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy8iPkRvY3VtZW50YXRpb248L2E+ICZndDsgPGEgaHJlZj0iLi4vIj5WZXJzaW9uIDIuMzwvYT4gJmd0OyA8YSBocmVmPSIuLyI+TW9kdWxlczwvYT48L2Rpdj4KPGRpdiBpZD0icGFnZS1jb250ZW50Ij4KPGRpdiBpZD0icHJlYW1ibGUiPjxoMT5BcGFjaGUgTW9kdWxlIG1vZF9jYWNoZTwvaDE+CjxkaXYgY2xhc3M9InRvcGxhbmciPgo8cD48c3Bhbj5BdmFpbGFibGUgTGFuZ3VhZ2VzOiA8L3NwYW4+PGEgaHJlZj0iLi4vZW4vbW9kL21vZF9jYWNoZS5odG1sIiB0aXRsZT0iRW5nbGlzaCI+Jm5ic3A7ZW4mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4vamEvbW9kL21vZF9jYWNoZS5odG1sIiBocmVmbGFuZz0iamEiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iSmFwYW5lc2UiPiZuYnNwO2phJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2tvL21vZC9tb2RfY2FjaGUuaHRtbCIgaHJlZmxhbmc9ImtvIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IktvcmVhbiI+Jm5ic3A7a28mbmJzcDs8L2E+PC9wPgo8L2Rpdj4KPHRhYmxlIGNsYXNzPSJtb2R1bGUiPjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkNvbnRlbnQgY2FjaGUga2V5ZWQgdG8gVVJJcy48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9Im1vZHVsZS1kaWN0Lmh0bWwjTW9kdWxlSWRlbnRpZmllciI+TW9kdWxloElkZW50aWZpZXI6PC9hPjwvdGg+PHRkPmNhY2hlX21vZHVsZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI1NvdXJjZUZpbGUiPlNvdXJjZaBGaWxlOjwvYT48L3RoPjx0ZD5tb2RfY2FjaGUuYzwvdGQ+PC90cj48L3RhYmxlPgo8aDM+U3VtbWFyeTwvaDM+CgogICAgPGRpdiBjbGFzcz0id2FybmluZyI+VGhpcyBtb2R1bGUgc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXJlIGFuZAogICAgY2FuIGJlIHVzZWQgdG8gY2lyY3VtdmVudCA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGh6X2hvc3QuaHRtbCNhbGxvdyI+QWxsb3c8L2E+PC9jb2RlPiBhbmQgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRoel9ob3N0Lmh0bWwjZGVueSI+RGVueTwvYT48L2NvZGU+IGRpcmVjdGl2ZXMuIFlvdSAKICAgIHNob3VsZCBub3QgZW5hYmxlIGNhY2hpbmcgZm9yIGFueSBjb250ZW50IHRvIHdoaWNoIHlvdSB3aXNoCiAgICB0byBsaW1pdCBhY2Nlc3MgYnkgY2xpZW50IGhvc3QgbmFtZSwgYWRkcmVzcyBvciBlbnZpcm9ubWVudAogICAgdmFyaWFibGUuPC9kaXY+ICAKCiAgICA8cD48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2NhY2hlLmh0bWwiPm1vZF9jYWNoZTwvYT48L2NvZGU+IGltcGxlbWVudHMgYW4gPGEgaHJlZj0iaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjYxNi50eHQiPlJGQyAyNjE2PC9hPiBjb21wbGlhbnQgSFRUUAogICAgY29udGVudCBjYWNoZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGNhY2hlIGVpdGhlciBsb2NhbCBvciBwcm94aWVkIGNvbnRlbnQuCiAgICA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2NhY2hlLmh0bWwiPm1vZF9jYWNoZTwvYT48L2NvZGU+IHJlcXVpcmVzIHRoZSBzZXJ2aWNlcyBvZiBvbmUgb3IgbW9yZSBzdG9yYWdlCiAgICBtYW5hZ2VtZW50IG1vZHVsZXMuIFR3byBzdG9yYWdlIG1hbmFnZW1lbnQgbW9kdWxlcyBhcmUgaW5jbHVkZWQgaW4KICAgIHRoZSBiYXNlIEFwYWNoZSBkaXN0cmlidXRpb246PC9wPgogICAgPGRsPgogICAgPGR0Pjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfZGlza19jYWNoZS5odG1sIj5tb2RfZGlza19jYWNoZTwvYT48L2NvZGU+PC9kdD4KICAgIDxkZD5pbXBsZW1lbnRzIGEgZGlzayBiYXNlZCBzdG9yYWdlIG1hbmFnZXIuPC9kZD4KCiAgICA8ZHQ+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9tZW1fY2FjaGUuaHRtbCI+bW9kX21lbV9jYWNoZTwvYT48L2NvZGU+PC9kdD4KICAgIDxkZD5pbXBsZW1lbnRzIGEgbWVtb3J5IGJhc2VkIHN0b3JhZ2UgbWFuYWdlci4gCiAgICA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX21lbV9jYWNoZS5odG1sIj5tb2RfbWVtX2NhY2hlPC9hPjwvY29kZT4gY2FuIGJlIGNvbmZpZ3VyZWQgdG8gb3BlcmF0ZSBpbiB0d28KICAgIG1vZGVzOiBjYWNoaW5nIG9wZW4gZmlsZSBkZXNjcmlwdG9ycyBvciBjYWNoaW5nIG9iamVjdHMgaW4gaGVhcCBzdG9yYWdlLgogICAgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9tZW1fY2FjaGUuaHRtbCI+bW9kX21lbV9jYWNoZTwvYT48L2NvZGU+IGNhbiBiZSB1c2VkIHRvIGNhY2hlIGxvY2FsbHkgZ2VuZXJhdGVkIGNvbnRlbnQKICAgIG9yIHRvIGNhY2hlIGJhY2tlbmQgc2VydmVyIGNvbnRlbnQgZm9yIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfcHJveHkuaHRtbCI+bW9kX3Byb3h5PC9hPjwvY29kZT4gd2hlbgogICAgY29uZmlndXJlZCB1c2luZyA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX3Byb3h5Lmh0bWwjcHJveHlwYXNzIj5Qcm94eVBhc3M8L2E+PC9jb2RlPgogICAgKGFrYSA8ZGZuPnJldmVyc2UgcHJveHk8L2Rmbj4pPC9kZD4KICAgIDwvZGw+CgogICAgPHA+Q29udGVudCBpcyBzdG9yZWQgaW4gYW5kIHJldHJpZXZlZCBmcm9tIHRoZSBjYWNoZSB1c2luZyBVUkkgYmFzZWQga2V5cy4gQ29udGVudCB3aXRoCiAgICBhY2Nlc3MgcHJvdGVjdGlvbiBpcyBub3QgY2FjaGVkLjwvcD4KPC9kaXY+CjxkaXYgaWQ9InF1aWNrdmlldyI+PGgzIGNsYXNzPSJkaXJlY3RpdmVzIj5EaXJlY3RpdmVzPC9oMz4KPHVsIGlkPSJ0b2MiPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNjYWNoZWRlZmF1bHRleHBpcmUiPkNhY2hlRGVmYXVsdEV4cGlyZTwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNjYWNoZWRpc2FibGUiPkNhY2hlRGlzYWJsZTwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNjYWNoZWVuYWJsZSI+Q2FjaGVFbmFibGU8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjY2FjaGVpZ25vcmVjYWNoZWNvbnRyb2wiPkNhY2hlSWdub3JlQ2FjaGVDb250cm9sPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2NhY2hlaWdub3JlaGVhZGVycyI+Q2FjaGVJZ25vcmVIZWFkZXJzPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2NhY2hlaWdub3Jlbm9sYXN0bW9kIj5DYWNoZUlnbm9yZU5vTGFzdE1vZDwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNjYWNoZWxhc3Rtb2RpZmllZGZhY3RvciI+Q2FjaGVMYXN0TW9kaWZpZWRGYWN0b3I8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjY2FjaGVtYXhleHBpcmUiPkNhY2hlTWF4RXhwaXJlPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2NhY2hlc3RvcmVub3N0b3JlIj5DYWNoZVN0b3JlTm9TdG9yZTwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNjYWNoZXN0b3JlcHJpdmF0ZSI+Q2FjaGVTdG9yZVByaXZhdGU8L2E+PC9saT4KPC91bD4KPGgzPlRvcGljczwvaDM+Cjx1bCBpZD0idG9waWNzIj4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjcmVsYXRlZCI+UmVsYXRlZCBNb2R1bGVzIGFuZCBEaXJlY3RpdmVzPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3NhbXBsZWNvbmYiPlNhbXBsZSBDb25maWd1cmF0aW9uPC9hPjwvbGk+CjwvdWw+PC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9InJlbGF0ZWQiIGlkPSJyZWxhdGVkIj5SZWxhdGVkIE1vZHVsZXMgYW5kIERpcmVjdGl2ZXM8L2E+PC9oMj4KICAgIDx0YWJsZSBjbGFzcz0icmVsYXRlZCI+PHRyPjx0aD5SZWxhdGVkIE1vZHVsZXM8L3RoPjx0aD5SZWxhdGVkIERpcmVjdGl2ZXM8L3RoPjwvdHI+PHRyPjx0ZD48dWw+PGxpPjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfZGlza19jYWNoZS5odG1sIj5tb2RfZGlza19jYWNoZTwvYT48L2NvZGU+PC9saT48bGk+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9tZW1fY2FjaGUuaHRtbCI+bW9kX21lbV9jYWNoZTwvYT48L2NvZGU+PC9saT48L3VsPjwvdGQ+PHRkPjx1bD48bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9kaXNrX2NhY2hlLmh0bWwjY2FjaGVyb290Ij5DYWNoZVJvb3Q8L2E+PC9jb2RlPjwvbGk+PGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfZGlza19jYWNoZS5odG1sI2NhY2hlc2l6ZSI+Q2FjaGVTaXplPC9hPjwvY29kZT48L2xpPjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX2Rpc2tfY2FjaGUuaHRtbCNjYWNoZWRpcmxldmVscyI+Q2FjaGVEaXJMZXZlbHM8L2E+PC9jb2RlPjwvbGk+PGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfZGlza19jYWNoZS5odG1sI2NhY2hlZGlybGVuZ3RoIj5DYWNoZURpckxlbmd0aDwvYT48L2NvZGU+PC9saT48bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9kaXNrX2NhY2hlLmh0bWwjY2FjaGVtaW5maWxlc2l6ZSI+Q2FjaGVNaW5GaWxlU2l6ZTwvYT48L2NvZGU+PC9saT48bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9kaXNrX2NhY2hlLmh0bWwjY2FjaGVtYXhmaWxlc2l6ZSI+Q2FjaGVNYXhGaWxlU2l6ZTwvYT48L2NvZGU+PC9saT48bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9tZW1fY2FjaGUuaHRtbCNtY2FjaGVzaXplIj5NQ2FjaGVTaXplPC9hPjwvY29kZT48L2xpPjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX21lbV9jYWNoZS5odG1sI21jYWNoZW1heG9iamVjdGNvdW50Ij5NQ2FjaGVNYXhPYmplY3RDb3VudDwvYT48L2NvZGU+PC9saT48bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9tZW1fY2FjaGUuaHRtbCNtY2FjaGVtaW5vYmplY3RzaXplIj5NQ2FjaGVNaW5PYmplY3RTaXplPC9hPjwvY29kZT48L2xpPjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX21lbV9jYWNoZS5odG1sI21jYWNoZW1heG9iamVjdHNpemUiPk1DYWNoZU1heE9iamVjdFNpemU8L2E+PC9jb2RlPjwvbGk+PGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfbWVtX2NhY2hlLmh0bWwjbWNhY2hlcmVtb3ZhbGFsZ29yaXRobSI+TUNhY2hlUmVtb3ZhbEFsZ29yaXRobTwvYT48L2NvZGU+PC9saT48bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9tZW1fY2FjaGUuaHRtbCNtY2FjaGVtYXhzdHJlYW1pbmdidWZmZXIiPk1DYWNoZU1heFN0cmVhbWluZ0J1ZmZlcjwvYT48L2NvZGU+PC9saT48L3VsPjwvdGQ+PC90cj48L3RhYmxlPgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJzYW1wbGVjb25mIiBpZD0ic2FtcGxlY29uZiI+U2FtcGxlIENvbmZpZ3VyYXRpb248L2E+PC9oMj4KICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxoMz5TYW1wbGUgaHR0cGQuY29uZjwvaDM+PHA+PGNvZGU+CiAgICAgICM8YnIgLz4KICAgICAgIyBTYW1wbGUgQ2FjaGUgQ29uZmlndXJhdGlvbjxiciAvPgogICAgICAjPGJyIC8+CiAgICAgIExvYWRNb2R1bGUgY2FjaGVfbW9kdWxlIG1vZHVsZXMvbW9kX2NhY2hlLnNvPGJyIC8+CiAgICAgIDxiciAvPgogICAgICAmbHQ7SWZNb2R1bGUgbW9kX2NhY2hlLmMmZ3Q7PGJyIC8+CiAgICAgIDxzcGFuIGNsYXNzPSJpbmRlbnQiPgogICAgICAgICNMb2FkTW9kdWxlIGRpc2tfY2FjaGVfbW9kdWxlIG1vZHVsZXMvbW9kX2Rpc2tfY2FjaGUuc288YnIgLz4KICAgICAgICAjIElmIHlvdSB3YW50IHRvIHVzZSBtb2RfZGlza19jYWNoZSBpbnN0ZWFkIG9mIG1vZF9tZW1fY2FjaGUsPGJyIC8+CiAgICAgICAgIyB1bmNvbW1lbnQgdGhlIGxpbmUgYWJvdmUgYW5kIGNvbW1lbnQgb3V0IHRoZSBMb2FkTW9kdWxlIGxpbmUgYmVsb3cuPGJyIC8+CiAgICAgICAgJmx0O0lmTW9kdWxlIG1vZF9kaXNrX2NhY2hlLmMmZ3Q7PGJyIC8+CiAgICAgICAgPHNwYW4gY2xhc3M9ImluZGVudCI+CiAgICAgICAgICBDYWNoZVJvb3QgYzovY2FjaGVyb290PGJyIC8+CiAgICAgICAgICBDYWNoZUVuYWJsZSBkaXNrICAvPGJyIC8+CiAgICAgICAgICBDYWNoZURpckxldmVscyA1PGJyIC8+CiAgICAgICAgICBDYWNoZURpckxlbmd0aCAzPGJyIC8+CiAgICAgICAgPC9zcGFuPgogICAgICAgICZsdDsvSWZNb2R1bGUmZ3Q7IDxiciAvPgogICAgICAgIDxiciAvPgogICAgICAgIExvYWRNb2R1bGUgbWVtX2NhY2hlX21vZHVsZSBtb2R1bGVzL21vZF9tZW1fY2FjaGUuc288YnIgLz4KICAgICAgICAmbHQ7SWZNb2R1bGUgbW9kX21lbV9jYWNoZS5jJmd0OzxiciAvPgogICAgICAgIDxzcGFuIGNsYXNzPSJpbmRlbnQiPgogICAgICAgICAgQ2FjaGVFbmFibGUgbWVtICAvPGJyIC8+CiAgICAgICAgICBNQ2FjaGVTaXplIDQwOTY8YnIgLz4KICAgICAgICAgIE1DYWNoZU1heE9iamVjdENvdW50IDEwMDxiciAvPgogICAgICAgICAgTUNhY2hlTWluT2JqZWN0U2l6ZSAxPGJyIC8+CiAgICAgICAgICBNQ2FjaGVNYXhPYmplY3RTaXplIDIwNDg8YnIgLz4KICAgICAgICA8L3NwYW4+CiAgICAgICAgJmx0Oy9JZk1vZHVsZSZndDs8YnIgLz4KICAgICAgICA8YnIgLz4KICAgICAgICAjIFdoZW4gYWN0aW5nIGFzIGEgcHJveHksIGRvbid0IGNhY2hlIHRoZSBsaXN0IG9mIHNlY3VyaXR5IHVwZGF0ZXM8YnIgLz4KICAgICAgICBDYWNoZURpc2FibGUgaHR0cDovL3NlY3VyaXR5LnVwZGF0ZS5zZXJ2ZXIvdXBkYXRlLWxpc3QvPGJyIC8+CiAgICAgIDwvc3Bhbj4KICAgICAgJmx0Oy9JZk1vZHVsZSZndDsKICAgIDwvY29kZT48L3A+PC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJDYWNoZURlZmF1bHRFeHBpcmUiIGlkPSJDYWNoZURlZmF1bHRFeHBpcmUiPkNhY2hlRGVmYXVsdEV4cGlyZTwvYT4gPGEgbmFtZT0iY2FjaGVkZWZhdWx0ZXhwaXJlIiBpZD0iY2FjaGVkZWZhdWx0ZXhwaXJlIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5UaGUgZGVmYXVsdCBkdXJhdGlvbiB0byBjYWNoZSBhIGRvY3VtZW50IHdoZW4gbm8gZXhwaXJ5IGRhdGUgaXMgc3BlY2lmaWVkLjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5DYWNoZURlZmF1bHRFeHBpcmUgPHZhcj5zZWNvbmRzPC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkNhY2hlRGVmYXVsdEV4cGlyZSAzNjAwIChvbmUgaG91cik8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVuc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfY2FjaGU8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+Q2FjaGVEZWZhdWx0RXhwaXJlPC9jb2RlPiBkaXJlY3RpdmUgc3BlY2lmaWVzIGEgZGVmYXVsdCB0aW1lLAogICAgaW4gc2Vjb25kcywgdG8gY2FjaGUgYSBkb2N1bWVudCBpZiBuZWl0aGVyIGFuIGV4cGlyeSBkYXRlIG5vciBsYXN0LW1vZGlmaWVkIGRhdGUgYXJlIHByb3ZpZGVkCiAgICB3aXRoIHRoZSBkb2N1bWVudC4gVGhlIHZhbHVlIHNwZWNpZmllZCB3aXRoIHRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5DYWNoZU1heEV4cGlyZTwvY29kZT4KICAgIGRpcmVjdGl2ZSBkb2VzIDxlbT5ub3Q8L2VtPiBvdmVycmlkZSB0aGlzIHNldHRpbmcuPC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICBDYWNoZURlZmF1bHRFeHBpcmUgODY0MDAKICAgIDwvY29kZT48L3A+PC9kaXY+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iQ2FjaGVEaXNhYmxlIiBpZD0iQ2FjaGVEaXNhYmxlIj5DYWNoZURpc2FibGU8L2E+IDxhIG5hbWU9ImNhY2hlZGlzYWJsZSIgaWQ9ImNhY2hlZGlzYWJsZSI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+RGlzYWJsZSBjYWNoaW5nIG9mIHNwZWNpZmllZCBVUkxzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkNhY2hlRGlzYWJsZSA8dmFyPiB1cmwtc3RyaW5nPC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWcsIHZpcnR1YWwgaG9zdDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2NhY2hlPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkNhY2hlRGlzYWJsZTwvY29kZT4gZGlyZWN0aXZlIGluc3RydWN0cwogICAgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9jYWNoZS5odG1sIj5tb2RfY2FjaGU8L2E+PC9jb2RlPiB0byA8ZW0+bm90PC9lbT4gY2FjaGUgdXJscyBhdCBvciBiZWxvdwogICAgPHZhcj51cmwtc3RyaW5nPC92YXI+LjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48aDM+RXhhbXBsZTwvaDM+PHA+PGNvZGU+CiAgICAgIENhY2hlRGlzYWJsZSAvbG9jYWxfZmlsZXMKICAgIDwvY29kZT48L3A+PC9kaXY+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iQ2FjaGVFbmFibGUiIGlkPSJDYWNoZUVuYWJsZSI+Q2FjaGVFbmFibGU8L2E+IDxhIG5hbWU9ImNhY2hlZW5hYmxlIiBpZD0iY2FjaGVlbmFibGUiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkVuYWJsZSBjYWNoaW5nIG9mIHNwZWNpZmllZCBVUkxzIHVzaW5nIGEgc3BlY2lmaWVkIHN0b3JhZ2UKbWFuYWdlcjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5DYWNoZUVuYWJsZSA8dmFyPmNhY2hlX3R5cGU8L3Zhcj4gPHZhcj51cmwtc3RyaW5nPC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWcsIHZpcnR1YWwgaG9zdDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2NhY2hlPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkNhY2hlRW5hYmxlPC9jb2RlPiBkaXJlY3RpdmUgaW5zdHJ1Y3RzCiAgICA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2NhY2hlLmh0bWwiPm1vZF9jYWNoZTwvYT48L2NvZGU+IHRvIGNhY2hlIHVybHMgYXQgb3IgYmVsb3cKICAgIDx2YXI+dXJsLXN0cmluZzwvdmFyPi4gVGhlIGNhY2hlIHN0b3JhZ2UgbWFuYWdlciBpcyBzcGVjaWZpZWQgd2l0aCB0aGUKICAgIDx2YXI+Y2FjaGVfdHlwZTwvdmFyPiBhcmd1bWVudC4gPHZhcj5jYWNoZV90eXBlPC92YXI+IDxjb2RlPiBtZW08L2NvZGU+CiAgICBpbnN0cnVjdHMgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9jYWNoZS5odG1sIj5tb2RfY2FjaGU8L2E+PC9jb2RlPiB0byB1c2UgdGhlIG1lbW9yeSBiYXNlZCBzdG9yYWdlCiAgICBtYW5hZ2VyIGltcGxlbWVudGVkIGJ5IDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfbWVtX2NhY2hlLmh0bWwiPm1vZF9tZW1fY2FjaGU8L2E+PC9jb2RlPi4gCiAgICA8dmFyPmNhY2hlX3R5cGU8L3Zhcj4gPGNvZGU+ZGlzazwvY29kZT4gaW5zdHJ1Y3RzCiAgICA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2NhY2hlLmh0bWwiPm1vZF9jYWNoZTwvYT48L2NvZGU+IHRvIHVzZSB0aGUgZGlzayBiYXNlZCBzdG9yYWdlIG1hbmFnZXIKICAgIGltcGxlbWVudGVkIGJ5IDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfZGlza19jYWNoZS5odG1sIj5tb2RfZGlza19jYWNoZTwvYT48L2NvZGU+LgogICAgPHZhcj5jYWNoZV90eXBlPC92YXI+IDxjb2RlPmZkPC9jb2RlPiBpbnN0cnVjdHMKICAgIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfY2FjaGUuaHRtbCI+bW9kX2NhY2hlPC9hPjwvY29kZT4gdG8gdXNlIHRoZSBmaWxlIGRlc2NyaXB0b3IgY2FjaGUgaW1wbGVtZW50ZWQKICAgIGJ5IDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfbWVtX2NhY2hlLmh0bWwiPm1vZF9tZW1fY2FjaGU8L2E+PC9jb2RlPi48L3A+CiAgICA8cD5JbiB0aGUgZXZlbnQgdGhhdCB0aGUgVVJMIHNwYWNlIG92ZXJsYXBzIGJldHdlZW4gZGlmZmVyZW50CiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5DYWNoZUVuYWJsZTwvY29kZT4gZGlyZWN0aXZlcyAoYXMgaW4gdGhlIGV4YW1wbGUgYmVsb3cpLAogICAgZWFjaCBwb3NzaWJsZSBzdG9yYWdlIG1hbmFnZXIgd2lsbCBiZSBydW4gdW50aWwgdGhlIGZpcnN0IG9uZSB0aGF0CiAgICBhY3R1YWxseSBwcm9jZXNzZXMgdGhlIHJlcXVlc3QuIFRoZSBvcmRlciBpbiB3aGljaCB0aGUgc3RvcmFnZSBtYW5hZ2VycyBhcmUKICAgIHJ1biBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciBvZiB0aGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+Q2FjaGVFbmFibGU8L2NvZGU+CiAgICBkaXJlY3RpdmVzIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuPC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICBDYWNoZUVuYWJsZSAgbWVtICAgL21hbnVhbDxiciAvPgogICAgICBDYWNoZUVuYWJsZSAgZmQgICAgL2ltYWdlczxiciAvPgogICAgICBDYWNoZUVuYWJsZSAgZGlzayAgLzxiciAvPgogICAgPC9jb2RlPjwvcD48L2Rpdj4KCiAgICA8cD5XaGVuIGFjdGluZyBhcyBhIGZvcndhcmQgcHJveHkgc2VydmVyLCA8dmFyPnVybC1zdHJpbmc8L3Zhcj4gY2FuCiAgICBhbHNvIGJlIHVzZWQgdG8gc3BlY2lmeSByZW1vdGUgc2l0ZXMgYW5kIHByb3h5IHByb3RvY29scyB3aGljaCAKICAgIGNhY2hpbmcgc2hvdWxkIGJlIGVuYWJsZWQgZm9yLjwvcD4KIAogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICMgQ2FjaGUgcHJveGllZCB1cmwnczxiciAvPgogICAgICBDYWNoZUVuYWJsZSAgZGlzayAgLzxiciAvPjxiciAvPgogICAgICAjIENhY2hlIEZUUC1wcm94aWVkIHVybCdzPGJyIC8+CiAgICAgIENhY2hlRW5hYmxlICBkaXNrICBmdHA6Ly88YnIgLz48YnIgLz4KICAgICAgIyBDYWNoZSBjb250ZW50IGZyb20gd3d3LmFwYWNoZS5vcmc8YnIgLz4KICAgICAgQ2FjaGVFbmFibGUgIGRpc2sgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy88YnIgLz4KICAgIDwvY29kZT48L3A+PC9kaXY+CgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkNhY2hlSWdub3JlQ2FjaGVDb250cm9sIiBpZD0iQ2FjaGVJZ25vcmVDYWNoZUNvbnRyb2wiPkNhY2hlSWdub3JlQ2FjaGVDb250cm9sPC9hPiA8YSBuYW1lPSJjYWNoZWlnbm9yZWNhY2hlY29udHJvbCIgaWQ9ImNhY2hlaWdub3JlY2FjaGVjb250cm9sIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5JZ25vcmUgcmVxdWVzdCB0byBub3Qgc2VydmUgY2FjaGVkIGNvbnRlbnQgdG8gY2xpZW50PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkNhY2hlSWdub3JlQ2FjaGVDb250cm9sIE9ufE9mZjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5DYWNoZUlnbm9yZUNhY2hlQ29udHJvbCBPZmY8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVuc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfY2FjaGU8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5PcmRpbmFyaWx5LCByZXF1ZXN0cyBjb250YWluaW5nIGEgQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUgb3IKICAgIFByYWdtYTogbm8tY2FjaGUgaGVhZGVyIHZhbHVlIHdpbGwgbm90IGJlIHNlcnZlZCBmcm9tIHRoZSBjYWNoZS4gIFRoZQogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+Q2FjaGVJZ25vcmVDYWNoZUNvbnRyb2w8L2NvZGU+IGRpcmVjdGl2ZSBhbGxvd3MgdGhpcwogICAgYmVoYXZpb3IgdG8gYmUgb3ZlcnJpZGRlbi4gIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkNhY2hlSWdub3JlQ2FjaGVDb250cm9sPC9jb2RlPgogICAgT24gdGVsbHMgdGhlIHNlcnZlciB0byBhdHRlbXB0IHRvIHNlcnZlIHRoZSByZXNvdXJjZSBmcm9tIHRoZSBjYWNoZSBldmVuCiAgICBpZiB0aGUgcmVxdWVzdCBjb250YWlucyBuby1jYWNoZSBoZWFkZXIgdmFsdWVzLiAgUmVzb3VyY2VzIHJlcXVpcmluZwogICAgYXV0aG9yaXphdGlvbiB3aWxsIDxlbT5uZXZlcjwvZW0+IGJlIGNhY2hlZC48L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgIENhY2hlSWdub3JlQ2FjaGVDb250cm9sIE9uCiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxkaXYgY2xhc3M9Indhcm5pbmciPjxoMz5XYXJuaW5nOjwvaDM+CiAgICAgICBUaGlzIGRpcmVjdGl2ZSB3aWxsIGFsbG93IHNlcnZpbmcgZnJvbSB0aGUgY2FjaGUgZXZlbiBpZiB0aGUgY2xpZW50IGhhcwogICAgICAgcmVxdWVzdGVkIHRoYXQgdGhlIGRvY3VtZW50IG5vdCBiZSBzZXJ2ZWQgZnJvbSB0aGUgY2FjaGUuICBUaGlzIG1pZ2h0CiAgICAgICByZXN1bHQgaW4gc3RhbGUgY29udGVudCBiZWluZyBzZXJ2ZWQuCiAgICA8L2Rpdj4KCjxoMz5TZWUgYWxzbzwvaDM+Cjx1bD4KPGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNjYWNoZXN0b3JlcHJpdmF0ZSI+Q2FjaGVTdG9yZVByaXZhdGU8L2E+PC9jb2RlPjwvbGk+CjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjY2FjaGVzdG9yZW5vc3RvcmUiPkNhY2hlU3RvcmVOb1N0b3JlPC9hPjwvY29kZT48L2xpPgo8L3VsPgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iQ2FjaGVJZ25vcmVIZWFkZXJzIiBpZD0iQ2FjaGVJZ25vcmVIZWFkZXJzIj5DYWNoZUlnbm9yZUhlYWRlcnM8L2E+IDxhIG5hbWU9ImNhY2hlaWdub3JlaGVhZGVycyIgaWQ9ImNhY2hlaWdub3JlaGVhZGVycyI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+RG8gbm90IHN0b3JlIHRoZSBnaXZlbiBIVFRQIGhlYWRlcihzKSBpbiB0aGUgY2FjaGUuCjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5DYWNoZUlnbm9yZUhlYWRlcnMgPHZhcj5oZWFkZXItc3RyaW5nPC92YXI+IFs8dmFyPmhlYWRlci1zdHJpbmc8L3Zhcj5dIC4uLjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5DYWNoZUlnbm9yZUhlYWRlcnMgTm9uZTwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnLCB2aXJ0dWFsIGhvc3Q8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9jYWNoZTwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPkFjY29yZGluZyB0byBSRkMgMjYxNiwgaG9wLWJ5LWhvcCBIVFRQIGhlYWRlcnMgYXJlIG5vdCBzdG9yZWQgaW4KICAgIHRoZSBjYWNoZS4gIFRoZSBmb2xsb3dpbmcgSFRUUCBoZWFkZXJzIGFyZSBob3AtYnktaG9wIGhlYWRlcnMgYW5kIHRodXMKICAgIGRvIG5vdCBnZXQgc3RvcmVkIGluIHRoZSBjYWNoZSBpbiA8ZW0+YW55PC9lbT4gY2FzZSByZWdhcmRsZXNzIG9mIHRoZQogICAgc2V0dGluZyBvZiA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5DYWNoZUlnbm9yZUhlYWRlcnM8L2NvZGU+OjwvcD4KCiAgICA8dWw+CiAgICAgIDxsaT48Y29kZT5Db25uZWN0aW9uPC9jb2RlPjwvbGk+CiAgICAgIDxsaT48Y29kZT5LZWVwLUFsaXZlPC9jb2RlPjwvbGk+CiAgICAgIDxsaT48Y29kZT5Qcm94eS1BdXRoZW50aWNhdGU8L2NvZGU+PC9saT4KICAgICAgPGxpPjxjb2RlPlByb3h5LUF1dGhvcml6YXRpb248L2NvZGU+PC9saT4KICAgICAgPGxpPjxjb2RlPlRFPC9jb2RlPjwvbGk+CiAgICAgIDxsaT48Y29kZT5UcmFpbGVyczwvY29kZT48L2xpPgogICAgICA8bGk+PGNvZGU+VHJhbnNmZXItRW5jb2Rpbmc8L2NvZGU+PC9saT4KICAgICAgPGxpPjxjb2RlPlVwZ3JhZGU8L2NvZGU+PC9saT4KICAgIDwvdWw+CgogICAgPHA+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+Q2FjaGVJZ25vcmVIZWFkZXJzPC9jb2RlPiBzcGVjaWZpZXMgYWRkaXRpb25hbCBIVFRQCiAgICBoZWFkZXJzIHRoYXQgc2hvdWxkIG5vdCB0byBiZSBzdG9yZWQgaW4gdGhlIGNhY2hlLiAgRm9yIGV4YW1wbGUsIGl0IG1ha2VzCiAgICBzZW5zZSBpbiBzb21lIGNhc2VzIHRvIHByZXZlbnQgY29va2llcyBmcm9tIGJlaW5nIHN0b3JlZCBpbiB0aGUgY2FjaGUuPC9wPgoKICAgIDxwPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkNhY2hlSWdub3JlSGVhZGVyczwvY29kZT4gdGFrZXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdAogICAgb2YgSFRUUCBoZWFkZXJzIHRoYXQgc2hvdWxkIG5vdCBiZSBzdG9yZWQgaW4gdGhlIGNhY2hlLiBJZiBvbmx5IGhvcC1ieS1ob3AKICAgIGhlYWRlcnMgbm90IHNob3VsZCBiZSBzdG9yZWQgaW4gdGhlIGNhY2hlICh0aGUgUkZDIDI2MTYgY29tcGxpYW50CiAgICBiZWhhdmlvdXIpLCA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5DYWNoZUlnbm9yZUhlYWRlcnM8L2NvZGU+IGNhbiBiZSBzZXQgdG8KICAgIDxjb2RlPk5vbmU8L2NvZGU+LjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48aDM+RXhhbXBsZSAxPC9oMz48cD48Y29kZT4KICAgICAgQ2FjaGVJZ25vcmVIZWFkZXJzIFNldC1Db29raWUKICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPkV4YW1wbGUgMjwvaDM+PHA+PGNvZGU+CiAgICAgIENhY2hlSWdub3JlSGVhZGVycyBOb25lCiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxkaXYgY2xhc3M9Indhcm5pbmciPjxoMz5XYXJuaW5nOjwvaDM+CiAgICAgIElmIGhlYWRlcnMgbGlrZSA8Y29kZT5FeHBpcmVzPC9jb2RlPiB3aGljaCBhcmUgbmVlZGVkIGZvciBwcm9wZXIgY2FjaGUKICAgICAgbWFuYWdlbWVudCBhcmUgbm90IHN0b3JlZCBkdWUgdG8gYQogICAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5DYWNoZUlnbm9yZUhlYWRlcnM8L2NvZGU+IHNldHRpbmcsIHRoZSBiZWhhdmlvdXIgb2YKICAgICAgbW9kX2NhY2hlIGlzIHVuZGVmaW5lZC4KICAgIDwvZGl2PgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkNhY2hlSWdub3JlTm9MYXN0TW9kIiBpZD0iQ2FjaGVJZ25vcmVOb0xhc3RNb2QiPkNhY2hlSWdub3JlTm9MYXN0TW9kPC9hPiA8YSBuYW1lPSJjYWNoZWlnbm9yZW5vbGFzdG1vZCIgaWQ9ImNhY2hlaWdub3Jlbm9sYXN0bW9kIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5JZ25vcmUgdGhlIGZhY3QgdGhhdCBhIHJlc3BvbnNlIGhhcyBubyBMYXN0IE1vZGlmaWVkCmhlYWRlci48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+Q2FjaGVJZ25vcmVOb0xhc3RNb2QgT258T2ZmPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkNhY2hlSWdub3JlTm9MYXN0TW9kIE9mZjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnLCB2aXJ0dWFsIGhvc3Q8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9jYWNoZTwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPk9yZGluYXJpbHksIGRvY3VtZW50cyB3aXRob3V0IGEgbGFzdC1tb2RpZmllZCBkYXRlIGFyZSBub3QgY2FjaGVkLgogICAgVW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzIHRoZSBsYXN0LW1vZGlmaWVkIGRhdGUgaXMgcmVtb3ZlZCAoZHVyaW5nCiAgICA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2luY2x1ZGUuaHRtbCI+bW9kX2luY2x1ZGU8L2E+PC9jb2RlPiBwcm9jZXNzaW5nIGZvciBleGFtcGxlKSBvciBub3QgcHJvdmlkZWQKICAgIGF0IGFsbC4gVGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkNhY2hlSWdub3JlTm9MYXN0TW9kPC9jb2RlPiBkaXJlY3RpdmUKICAgIHByb3ZpZGVzIGEgd2F5IHRvIHNwZWNpZnkgdGhhdCBkb2N1bWVudHMgd2l0aG91dCBsYXN0LW1vZGlmaWVkIGRhdGVzCiAgICBzaG91bGQgYmUgY29uc2lkZXJlZCBmb3IgY2FjaGluZywgZXZlbiB3aXRob3V0IGEgbGFzdC1tb2RpZmllZCBkYXRlLgogICAgSWYgbmVpdGhlciBhIGxhc3QtbW9kaWZpZWQgZGF0ZSBub3IgYW4gZXhwaXJ5IGRhdGUgYXJlIHByb3ZpZGVkIHdpdGgKICAgIHRoZSBkb2N1bWVudCB0aGVuIHRoZSB2YWx1ZSBzcGVjaWZpZWQgYnkgdGhlCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5DYWNoZURlZmF1bHRFeHBpcmU8L2NvZGU+IGRpcmVjdGl2ZSB3aWxsIGJlIHVzZWQgdG8KICAgIGdlbmVyYXRlIGFuIGV4cGlyYXRpb24gZGF0ZS48L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgIENhY2hlSWdub3JlTm9MYXN0TW9kIE9uCiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkNhY2hlTGFzdE1vZGlmaWVkRmFjdG9yIiBpZD0iQ2FjaGVMYXN0TW9kaWZpZWRGYWN0b3IiPkNhY2hlTGFzdE1vZGlmaWVkRmFjdG9yPC9hPiA8YSBuYW1lPSJjYWNoZWxhc3Rtb2RpZmllZGZhY3RvciIgaWQ9ImNhY2hlbGFzdG1vZGlmaWVkZmFjdG9yIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5UaGUgZmFjdG9yIHVzZWQgdG8gY29tcHV0ZSBhbiBleHBpcnkgZGF0ZSBiYXNlZCBvbiB0aGUKTGFzdE1vZGlmaWVkIGRhdGUuPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkNhY2hlTGFzdE1vZGlmaWVkRmFjdG9yIDx2YXI+ZmxvYXQ8L3Zhcj48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+Q2FjaGVMYXN0TW9kaWZpZWRGYWN0b3IgMC4xPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWcsIHZpcnR1YWwgaG9zdDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2NhY2hlPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+SW4gdGhlIGV2ZW50IHRoYXQgYSBkb2N1bWVudCBkb2VzIG5vdCBwcm92aWRlIGFuIGV4cGlyeSBkYXRlIGJ1dCBkb2VzCiAgICBwcm92aWRlIGEgbGFzdC1tb2RpZmllZCBkYXRlLCBhbiBleHBpcnkgZGF0ZSBjYW4gYmUgY2FsY3VsYXRlZCBiYXNlZCBvbgogICAgdGhlIHRpbWUgc2luY2UgdGhlIGRvY3VtZW50IHdhcyBsYXN0IG1vZGlmaWVkLiBUaGUKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkNhY2hlTGFzdE1vZGlmaWVkRmFjdG9yPC9jb2RlPiBkaXJlY3RpdmUgc3BlY2lmaWVzIGEKICAgIDx2YXI+ZmFjdG9yPC92YXI+IHRvIGJlIHVzZWQgaW4gdGhlIGdlbmVyYXRpb24gb2YgdGhpcyBleHBpcnkgZGF0ZQogICAgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgZm9ybXVsYToKCiAgICA8Y29kZT5leHBpcnktcGVyaW9kID0gdGltZS1zaW5jZS1sYXN0LW1vZGlmaWVkLWRhdGUgKiA8dmFyPmZhY3RvcjwvdmFyPgogICAgZXhwaXJ5LWRhdGUgPSBjdXJyZW50LWRhdGUgKyBleHBpcnktcGVyaW9kPC9jb2RlPgoKICAgIEZvciBleGFtcGxlLCBpZiB0aGUgZG9jdW1lbnQgd2FzIGxhc3QgbW9kaWZpZWQgMTAgaG91cnMgYWdvLCBhbmQKICAgIDx2YXI+ZmFjdG9yPC92YXI+IGlzIDAuMSB0aGVuIHRoZSBleHBpcnktcGVyaW9kIHdpbGwgYmUgc2V0IHRvCiAgICAxMCowLjEgPSAxIGhvdXIuIElmIHRoZSBjdXJyZW50IHRpbWUgd2FzIDM6MDBwbSB0aGVuIHRoZSBjb21wdXRlZAogICAgZXhwaXJ5LWRhdGUgd291bGQgYmUgMzowMHBtICsgMWhvdXIgPSA0OjAwcG0uCgogICAgSWYgdGhlIGV4cGlyeS1wZXJpb2Qgd291bGQgYmUgbG9uZ2VyIHRoYW4gdGhhdCBzZXQgYnkKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkNhY2hlTWF4RXhwaXJlPC9jb2RlPiwgdGhlbiB0aGUgbGF0dGVyIHRha2VzCiAgICBwcmVjZWRlbmNlLjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgQ2FjaGVMYXN0TW9kaWZpZWRGYWN0b3IgMC41CiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkNhY2hlTWF4RXhwaXJlIiBpZD0iQ2FjaGVNYXhFeHBpcmUiPkNhY2hlTWF4RXhwaXJlPC9hPiA8YSBuYW1lPSJjYWNoZW1heGV4cGlyZSIgaWQ9ImNhY2hlbWF4ZXhwaXJlIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5UaGUgbWF4aW11bSB0aW1lIGluIHNlY29uZHMgdG8gY2FjaGUgYSBkb2N1bWVudDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5DYWNoZU1heEV4cGlyZSA8dmFyPnNlY29uZHM8L3Zhcj48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+Q2FjaGVNYXhFeHBpcmUgODY0MDAgKG9uZSBkYXkpPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWcsIHZpcnR1YWwgaG9zdDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2NhY2hlPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkNhY2hlTWF4RXhwaXJlPC9jb2RlPiBkaXJlY3RpdmUgc3BlY2lmaWVzIHRoZSBtYXhpbXVtIG51bWJlciBvZgogICAgc2Vjb25kcyBmb3Igd2hpY2ggY2FjaGFibGUgSFRUUCBkb2N1bWVudHMgd2lsbCBiZSByZXRhaW5lZCB3aXRob3V0IGNoZWNraW5nIHRoZSBvcmlnaW4KICAgIHNlcnZlci4gVGh1cywgZG9jdW1lbnRzIHdpbGwgYmUgb3V0IG9mIGRhdGUgYXQgbW9zdCB0aGlzIG51bWJlciBvZiBzZWNvbmRzLiBUaGlzIG1heGltdW0KICAgIHZhbHVlIGlzIGVuZm9yY2VkIGV2ZW4gaWYgYW4gZXhwaXJ5IGRhdGUgd2FzIHN1cHBsaWVkIHdpdGggdGhlIGRvY3VtZW50LjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgQ2FjaGVNYXhFeHBpcmUgNjA0ODAwCiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkNhY2hlU3RvcmVOb1N0b3JlIiBpZD0iQ2FjaGVTdG9yZU5vU3RvcmUiPkNhY2hlU3RvcmVOb1N0b3JlPC9hPiA8YSBuYW1lPSJjYWNoZXN0b3Jlbm9zdG9yZSIgaWQ9ImNhY2hlc3RvcmVub3N0b3JlIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5BdHRlbXB0IHRvIGNhY2hlIHJlcXVlc3RzIG9yIHJlc3BvbnNlcyB0aGF0IGhhdmUgYmVlbiBtYXJrZWQgYXMgbm8tc3RvcmUuPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkNhY2hlU3RvcmVOb1N0b3JlIE9ufE9mZjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5DYWNoZVN0b3JlTm9TdG9yZSBPZmY8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVuc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfY2FjaGU8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5PcmRpbmFyaWx5LCByZXF1ZXN0cyBvciByZXNwb25zZXMgd2l0aCBDYWNoZS1Db250cm9sOiBuby1zdG9yZSBoZWFkZXIKICAgICAgIHZhbHVlcyB3aWxsIG5vdCBiZSBzdG9yZWQgaW4gdGhlIGNhY2hlLiAgVGhlCiAgICAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5DYWNoZVN0b3JlTm9DYWNoZTwvY29kZT4gZGlyZWN0aXZlIGFsbG93cyB0aGlzCiAgICAgICBiZWhhdmlvciB0byBiZSBvdmVycmlkZGVuLiAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+Q2FjaGVTdG9yZU5vQ2FjaGU8L2NvZGU+IE9uCiAgICAgICB0ZWxscyB0aGUgc2VydmVyIHRvIGF0dGVtcHQgdG8gY2FjaGUgdGhlIHJlc291cmNlIGV2ZW4gaWYgaXQgY29udGFpbnMKICAgICAgIG5vLXN0b3JlIGhlYWRlciB2YWx1ZXMuICBSZXNvdXJjZXMgcmVxdWlyaW5nIGF1dGhvcml6YXRpb24gd2lsbAogICAgICAgPGVtPm5ldmVyPC9lbT4gYmUgY2FjaGVkLjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgQ2FjaGVTdG9yZU5vU3RvcmUgT24KICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPGRpdiBjbGFzcz0id2FybmluZyI+PGgzPldhcm5pbmc6PC9oMz4KICAgICAgIEFzIGRlc2NyaWJlZCBpbiBSRkMgMjYxNiwgdGhlIG5vLXN0b3JlIGRpcmVjdGl2ZSBpcyBpbnRlbmRlZCB0bwogICAgICAgInByZXZlbnQgdGhlIGluYWR2ZXJ0ZW50IHJlbGVhc2Ugb3IgcmV0ZW50aW9uIG9mIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbgogICAgICAgKGZvciBleGFtcGxlLCBvbiBiYWNrdXAgdGFwZXMpLiIgIEVuYWJsaW5nIHRoaXMgb3B0aW9uIGNvdWxkIHN0b3JlCiAgICAgICBzZW5zaXRpdmUgaW5mb3JtYXRpb24gaW4gdGhlIGNhY2hlLiAgWW91IGFyZSBoZXJlYnkgd2FybmVkLgogICAgPC9kaXY+Cgo8aDM+U2VlIGFsc288L2gzPgo8dWw+CjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjY2FjaGVpZ25vcmVjYWNoZWNvbnRyb2wiPkNhY2hlSWdub3JlQ2FjaGVDb250cm9sPC9hPjwvY29kZT48L2xpPgo8bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2NhY2hlc3RvcmVwcml2YXRlIj5DYWNoZVN0b3JlUHJpdmF0ZTwvYT48L2NvZGU+PC9saT4KPC91bD4KPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkNhY2hlU3RvcmVQcml2YXRlIiBpZD0iQ2FjaGVTdG9yZVByaXZhdGUiPkNhY2hlU3RvcmVQcml2YXRlPC9hPiA8YSBuYW1lPSJjYWNoZXN0b3JlcHJpdmF0ZSIgaWQ9ImNhY2hlc3RvcmVwcml2YXRlIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5BdHRlbXB0IHRvIGNhY2hlIHJlc3BvbnNlcyB0aGF0IHRoZSBzZXJ2ZXIgaGFzIG1hcmtlZCBhcyBwcml2YXRlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkNhY2hlU3RvcmVQcml2YXRlIE9ufE9mZjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5DYWNoZVN0b3JlUHJpdmF0ZSBPZmY8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVuc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfY2FjaGU8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5PcmRpbmFyaWx5LCByZXNwb25zZXMgd2l0aCBDYWNoZS1Db250cm9sOiBwcml2YXRlIGhlYWRlciB2YWx1ZXMgd2lsbCBub3QKICAgICAgIGJlIHN0b3JlZCBpbiB0aGUgY2FjaGUuICBUaGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+Q2FjaGVTdG9yZVByaXZhdGU8L2NvZGU+CiAgICAgICBkaXJlY3RpdmUgYWxsb3dzIHRoaXMgYmVoYXZpb3IgdG8gYmUgb3ZlcnJpZGRlbi4KICAgICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkNhY2hlU3RvcmVQcml2YXRlPC9jb2RlPiBPbgogICAgICAgdGVsbHMgdGhlIHNlcnZlciB0byBhdHRlbXB0IHRvIGNhY2hlIHRoZSByZXNvdXJjZSBldmVuIGlmIGl0IGNvbnRhaW5zCiAgICAgICBwcml2YXRlIGhlYWRlciB2YWx1ZXMuICBSZXNvdXJjZXMgcmVxdWlyaW5nIGF1dGhvcml6YXRpb24gd2lsbAogICAgICAgPGVtPm5ldmVyPC9lbT4gYmUgY2FjaGVkLjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgQ2FjaGVTdG9yZVByaXZhdGUgT24KICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPGRpdiBjbGFzcz0id2FybmluZyI+PGgzPldhcm5pbmc6PC9oMz4KICAgICAgIFRoaXMgZGlyZWN0aXZlIHdpbGwgYWxsb3cgY2FjaGluZyBldmVuIGlmIHRoZSB1cHN0cmVhbSBzZXJ2ZXIgaGFzCiAgICAgICByZXF1ZXN0ZWQgdGhhdCB0aGUgcmVzb3VyY2Ugbm90IGJlIGNhY2hlZC4gIFRoaXMgZGlyZWN0aXZlIGlzIG9ubHkKICAgICAgIGlkZWFsIGZvciBhICdwcml2YXRlJyBjYWNoZS4KICAgIDwvZGl2PgoKPGgzPlNlZSBhbHNvPC9oMz4KPHVsPgo8bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2NhY2hlaWdub3JlY2FjaGVjb250cm9sIj5DYWNoZUlnbm9yZUNhY2hlQ29udHJvbDwvYT48L2NvZGU+PC9saT4KPGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNjYWNoZXN0b3Jlbm9zdG9yZSI+Q2FjaGVTdG9yZU5vU3RvcmU8L2E+PC9jb2RlPjwvbGk+CjwvdWw+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iYm90dG9tbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9tb2QvbW9kX2NhY2hlLmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9qYS9tb2QvbW9kX2NhY2hlLmh0bWwiIGhyZWZsYW5nPSJqYSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJKYXBhbmVzZSI+Jm5ic3A7amEmbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4va28vbW9kL21vZF9jYWNoZS5odG1sIiBocmVmbGFuZz0ia28iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT48L3A+CjwvZGl2PjxkaXYgaWQ9ImZvb3RlciI+CjxwIGNsYXNzPSJhcGFjaGUiPkNvcHlyaWdodCAxOTk1LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG9yIGl0cyBsaWNlbnNvcnMsIGFzIGFwcGxpY2FibGUuPGJyIC8+TGljZW5zZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCI+QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wPC9hPi48L3A+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuLi9tb2QvIj5Nb2R1bGVzPC9hPiB8IDxhIGhyZWY9Ii4uL21vZC9kaXJlY3RpdmVzLmh0bWwiPkRpcmVjdGl2ZXM8L2E+IHwgPGEgaHJlZj0iLi4vZmFxLyI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwiPkdsb3NzYXJ5PC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+U2l0ZW1hcDwvYT48L3A+PC9kaXY+CjwvYm9keT48L2h0bWw+