PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD4KPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KPCEtLQogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIHhtbCBzb3VyY2U6IERPIE5PVCBFRElUCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgLS0+Cjx0aXRsZT5tb2RfbGRhcCAtIEFwYWNoZSBIVFRQIFNlcnZlciBWZXJzaW9uIDIuNDwvdGl0bGU+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTWFpbiBzdHlsZXNoZWV0IiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLWxvb3NlLTEwMHBjLmNzcyIgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgbWVkaWE9ImFsbCIgdHlwZT0idGV4dC9jc3MiIHRpdGxlPSJObyBTaWRlYmFyIC0gRGVmYXVsdCBmb250IHNpemUiIC8+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwtcHJpbnQuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJwcmludCIgdHlwZT0idGV4dC9jc3MiIC8+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vc3R5bGUvY3NzL3ByZXR0aWZ5LmNzcyIgLz4KPHNjcmlwdCBzcmM9Ii4uL3N0eWxlL3NjcmlwdHMvcHJldHRpZnkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8L3NjcmlwdD4KCjxsaW5rIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIgcmVsPSJzaG9ydGN1dCBpY29uIiAvPjwvaGVhZD4KPGJvZHk+CjxkaXYgaWQ9InBhZ2UtaGVhZGVyIj4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4uL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL2RpcmVjdGl2ZXMuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSJodHRwOi8vd2lraS5hcGFjaGUub3JnL2h0dHBkL0ZBUSI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwiPkdsb3NzYXJ5PC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+U2l0ZW1hcDwvYT48L3A+CjxwIGNsYXNzPSJhcGFjaGUiPkFwYWNoZSBIVFRQIFNlcnZlciBWZXJzaW9uIDIuNDwvcD4KPGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZmVhdGhlci5wbmciIC8+PC9kaXY+CjxkaXYgY2xhc3M9InVwIj48YSBocmVmPSIuLyI+PGltZyB0aXRsZT0iJmx0Oy0iIGFsdD0iJmx0Oy0iIHNyYz0iLi4vaW1hZ2VzL2xlZnQuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBpZD0icGF0aCI+CjxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFwYWNoZTwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy8iPkhUVFAgU2VydmVyPC9hPiAmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvIj5Eb2N1bWVudGF0aW9uPC9hPiAmZ3Q7IDxhIGhyZWY9Ii4uLyI+VmVyc2lvbiAyLjQ8L2E+ICZndDsgPGEgaHJlZj0iLi8iPk1vZHVsZXM8L2E+PC9kaXY+CjxkaXYgaWQ9InBhZ2UtY29udGVudCI+CjxkaXYgaWQ9InByZWFtYmxlIj48aDE+QXBhY2hlIE1vZHVsZSBtb2RfbGRhcDwvaDE+CjxkaXYgY2xhc3M9InRvcGxhbmciPgo8cD48c3Bhbj5BdmFpbGFibGUgTGFuZ3VhZ2VzOiA8L3NwYW4+PGEgaHJlZj0iLi4vZW4vbW9kL21vZF9sZGFwLmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9mci9tb2QvbW9kX2xkYXAuaHRtbCIgaHJlZmxhbmc9ImZyIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkZyYW7nYWlzIj4mbmJzcDtmciZuYnNwOzwvYT48L3A+CjwvZGl2Pgo8dGFibGUgY2xhc3M9Im1vZHVsZSI+PHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+TERBUCBjb25uZWN0aW9uIHBvb2xpbmcgYW5kIHJlc3VsdCBjYWNoaW5nIHNlcnZpY2VzIGZvciB1c2UKYnkgb3RoZXIgTERBUCBtb2R1bGVzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9Im1vZHVsZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVuc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI01vZHVsZUlkZW50aWZpZXIiPk1vZHVsZaBJZGVudGlmaWVyOjwvYT48L3RoPjx0ZD5sZGFwX21vZHVsZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI1NvdXJjZUZpbGUiPlNvdXJjZaBGaWxlOjwvYT48L3RoPjx0ZD51dGlsX2xkYXAuYzwvdGQ+PC90cj48L3RhYmxlPgo8aDM+U3VtbWFyeTwvaDM+CgogICAgPHA+VGhpcyBtb2R1bGUgd2FzIGNyZWF0ZWQgdG8gaW1wcm92ZSB0aGUgcGVyZm9ybWFuY2Ugb2YKICAgIHdlYnNpdGVzIHJlbHlpbmcgb24gYmFja2VuZCBjb25uZWN0aW9ucyB0byBMREFQIHNlcnZlcnMuIEluCiAgICBhZGRpdGlvbiB0byB0aGUgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IHRoZSBzdGFuZGFyZCBMREFQCiAgICBsaWJyYXJpZXMsIHRoaXMgbW9kdWxlIGFkZHMgYW4gTERBUCBjb25uZWN0aW9uIHBvb2wgYW5kIGFuIExEQVAKICAgIHNoYXJlZCBtZW1vcnkgY2FjaGUuPC9wPgoKICAgIDxwPlRvIGVuYWJsZSB0aGlzIG1vZHVsZSwgTERBUCBzdXBwb3J0IG11c3QgYmUgY29tcGlsZWQgaW50bwogICAgYXByLXV0aWwuIFRoaXMgaXMgYWNoaWV2ZWQgYnkgYWRkaW5nIHRoZSA8Y29kZT4tLXdpdGgtbGRhcDwvY29kZT4KICAgIGZsYWcgdG8gdGhlIDxjb2RlIGNsYXNzPSJwcm9ncmFtIj48YSBocmVmPSIuLi9wcm9ncmFtcy9jb25maWd1cmUuaHRtbCI+Y29uZmlndXJlPC9hPjwvY29kZT4gc2NyaXB0IHdoZW4gYnVpbGRpbmcKICAgIEFwYWNoZS48L3A+CgogICAgPHA+U1NML1RMUyBzdXBwb3J0IGlzIGRlcGVuZGVudCBvbiB3aGljaCBMREFQIHRvb2xraXQgaGFzIGJlZW4KICAgIGxpbmtlZCB0byA8YSBjbGFzcz0iZ2xvc3NhcnlsaW5rIiBocmVmPSIuLi9nbG9zc2FyeS5odG1sI2FwciIgdGl0bGU9InNlZSBnbG9zc2FyeSI+QVBSPC9hPi4gQXMgb2YgdGhpcyB3cml0aW5nLCBBUFItdXRpbCBzdXBwb3J0czoKICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbmxkYXAub3JnLyI+T3BlbkxEQVAgU0RLPC9hPiAoMi54IG9yIGxhdGVyKSwKICAgIDxhIGhyZWY9Imh0dHA6Ly9kZXZlbG9wZXIubm92ZWxsLmNvbS9uZGsvY2xkYXAuaHRtIj5Ob3ZlbGwgTERBUAogICAgU0RLPC9hPiwgPGEgaHJlZj0iaHR0cHM6Ly93aWtpLm1vemlsbGEub3JnL0xEQVBfQ19TREsiPgogICAgTW96aWxsYSBMREFQIFNESzwvYT4sIG5hdGl2ZSBTb2xhcmlzIExEQVAgU0RLIChNb3ppbGxhIGJhc2VkKSBvciB0aGUKICAgIG5hdGl2ZSBNaWNyb3NvZnQgTERBUCBTREsuIFNlZSB0aGUgPGEgaHJlZj0iaHR0cDovL2Fwci5hcGFjaGUub3JnIj5BUFI8L2E+CiAgICB3ZWJzaXRlIGZvciBkZXRhaWxzLjwvcD4KCjwvZGl2Pgo8ZGl2IGlkPSJxdWlja3ZpZXciPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZm91bmRhdGlvbi9jb250cmlidXRpbmcuaHRtbCIgY2xhc3M9ImJhZGdlIj48aW1nIHNyYz0iaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9pbWFnZXMvU3VwcG9ydEFwYWNoZS1zbWFsbC5wbmciIGFsdD0iU3VwcG9ydCBBcGFjaGUhIiAvPjwvYT48aDM+VG9waWNzPC9oMz4KPHVsIGlkPSJ0b3BpY3MiPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNleGFtcGxlY29uZmlnIj5FeGFtcGxlIENvbmZpZ3VyYXRpb248L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjcG9vbCI+TERBUCBDb25uZWN0aW9uIFBvb2w8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjY2FjaGUiPkxEQVAgQ2FjaGU8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjdXNpbmdzc2x0bHMiPlVzaW5nIFNTTC9UTFM8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjc2V0dGluZ2NlcnRzIj5TU0wvVExTIENlcnRpZmljYXRlczwvYT48L2xpPgo8L3VsPjxoMyBjbGFzcz0iZGlyZWN0aXZlcyI+RGlyZWN0aXZlczwvaDM+Cjx1bCBpZD0idG9jIj4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjbGRhcGNhY2hlZW50cmllcyI+TERBUENhY2hlRW50cmllczwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNsZGFwY2FjaGV0dGwiPkxEQVBDYWNoZVRUTDwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNsZGFwY29ubmVjdGlvbnBvb2x0dGwiPkxEQVBDb25uZWN0aW9uUG9vbFRUTDwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNsZGFwY29ubmVjdGlvbnRpbWVvdXQiPkxEQVBDb25uZWN0aW9uVGltZW91dDwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNsZGFwbGlicmFyeWRlYnVnIj5MREFQTGlicmFyeURlYnVnPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2xkYXBvcGNhY2hlZW50cmllcyI+TERBUE9wQ2FjaGVFbnRyaWVzPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2xkYXBvcGNhY2hldHRsIj5MREFQT3BDYWNoZVRUTDwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNsZGFwcmVmZXJyYWxob3BsaW1pdCI+TERBUFJlZmVycmFsSG9wTGltaXQ8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjbGRhcHJlZmVycmFscyI+TERBUFJlZmVycmFsczwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNsZGFwcmV0cmllcyI+TERBUFJldHJpZXM8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjbGRhcHJldHJ5ZGVsYXkiPkxEQVBSZXRyeURlbGF5PC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2xkYXBzaGFyZWRjYWNoZWZpbGUiPkxEQVBTaGFyZWRDYWNoZUZpbGU8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjbGRhcHNoYXJlZGNhY2hlc2l6ZSI+TERBUFNoYXJlZENhY2hlU2l6ZTwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNsZGFwdGltZW91dCI+TERBUFRpbWVvdXQ8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjbGRhcHRydXN0ZWRjbGllbnRjZXJ0Ij5MREFQVHJ1c3RlZENsaWVudENlcnQ8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjbGRhcHRydXN0ZWRnbG9iYWxjZXJ0Ij5MREFQVHJ1c3RlZEdsb2JhbENlcnQ8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjbGRhcHRydXN0ZWRtb2RlIj5MREFQVHJ1c3RlZE1vZGU8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjbGRhcHZlcmlmeXNlcnZlcmNlcnQiPkxEQVBWZXJpZnlTZXJ2ZXJDZXJ0PC9hPjwvbGk+CjwvdWw+CjxoMz5CdWdmaXggY2hlY2tsaXN0PC9oMz48dWwgY2xhc3M9InNlZWFsc28iPjxsaT48YSBocmVmPSJodHRwczovL3d3dy5hcGFjaGUub3JnL2Rpc3QvaHR0cGQvQ0hBTkdFU18yLjQiPmh0dHBkIGNoYW5nZWxvZzwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwczovL2J6LmFwYWNoZS5vcmcvYnVnemlsbGEvYnVnbGlzdC5jZ2k/YnVnX3N0YXR1cz1fX29wZW5fXyZhbXA7bGlzdF9pZD0xNDQ1MzImYW1wO3Byb2R1Y3Q9QXBhY2hlJTIwaHR0cGQtMiZhbXA7cXVlcnlfZm9ybWF0PXNwZWNpZmljJmFtcDtvcmRlcj1jaGFuZ2VkZGF0ZSUyMERFU0MlMkNwcmlvcml0eSUyQ2J1Z19zZXZlcml0eSZhbXA7Y29tcG9uZW50PW1vZF9sZGFwIj5Lbm93biBpc3N1ZXM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9iei5hcGFjaGUub3JnL2J1Z3ppbGxhL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1BcGFjaGUlMjBodHRwZC0yJmFtcDtjb21wb25lbnQ9bW9kX2xkYXAiPlJlcG9ydCBhIGJ1ZzwvYT48L2xpPjwvdWw+PGgzPlNlZSBhbHNvPC9oMz4KPHVsIGNsYXNzPSJzZWVhbHNvIj4KPGxpPjxhIGhyZWY9IiNjb21tZW50c19zZWN0aW9uIj5Db21tZW50czwvYT48L2xpPjwvdWw+PC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImV4YW1wbGVjb25maWciIGlkPSJleGFtcGxlY29uZmlnIj5FeGFtcGxlIENvbmZpZ3VyYXRpb248L2E+PC9oMj4KICAgIDxwPlRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBjb25maWd1cmF0aW9uIHRoYXQgdXNlcwogICAgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9sZGFwLmh0bWwiPm1vZF9sZGFwPC9hPjwvY29kZT4gdG8gaW5jcmVhc2UgdGhlIHBlcmZvcm1hbmNlIG9mIEhUVFAgQmFzaWMKICAgIGF1dGhlbnRpY2F0aW9uIHByb3ZpZGVkIGJ5IDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aG56X2xkYXAuaHRtbCI+bW9kX2F1dGhuel9sZGFwPC9hPjwvY29kZT4uPC9wPgoKICAgIDxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj4jIEVuYWJsZSB0aGUgTERBUCBjb25uZWN0aW9uIHBvb2wgYW5kIHNoYXJlZAojIG1lbW9yeSBjYWNoZS4gRW5hYmxlIHRoZSBMREFQIGNhY2hlIHN0YXR1cwojIGhhbmRsZXIuIFJlcXVpcmVzIHRoYXQgbW9kX2xkYXAgYW5kIG1vZF9hdXRobnpfbGRhcAojIGJlIGxvYWRlZC4gQ2hhbmdlIHRoZSAieW91cmRvbWFpbi5leGFtcGxlLmNvbSIgdG8KIyBtYXRjaCB5b3VyIGRvbWFpbi4KCkxEQVBTaGFyZWRDYWNoZVNpemUgNTAwMDAwCkxEQVBDYWNoZUVudHJpZXMgMTAyNApMREFQQ2FjaGVUVEwgNjAwCkxEQVBPcENhY2hlRW50cmllcyAxMDI0CkxEQVBPcENhY2hlVFRMIDYwMAoKJmx0O0xvY2F0aW9uICIvbGRhcC1zdGF0dXMiJmd0OwogICAgU2V0SGFuZGxlciBsZGFwLXN0YXR1cwoKICAgIFJlcXVpcmUgaG9zdCB5b3VyZG9tYWluLmV4YW1wbGUuY29tCgogICAgU2F0aXNmeSBhbnkKICAgIEF1dGhUeXBlIEJhc2ljCiAgICBBdXRoTmFtZSAiTERBUCBQcm90ZWN0ZWQiCiAgICBBdXRoQmFzaWNQcm92aWRlciBsZGFwCiAgICBBdXRoTERBUFVSTCAibGRhcDovLzEyNy4wLjAuMS9kYz1leGFtcGxlLGRjPWNvbT91aWQ/b25lIgogICAgUmVxdWlyZSB2YWxpZC11c2VyCiZsdDsvTG9jYXRpb24mZ3Q7PC9wcmU+Cgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJwb29sIiBpZD0icG9vbCI+TERBUCBDb25uZWN0aW9uIFBvb2w8L2E+PC9oMj4KCiAgICA8cD5MREFQIGNvbm5lY3Rpb25zIGFyZSBwb29sZWQgZnJvbSByZXF1ZXN0IHRvIHJlcXVlc3QuIFRoaXMKICAgIGFsbG93cyB0aGUgTERBUCBzZXJ2ZXIgdG8gcmVtYWluIGNvbm5lY3RlZCBhbmQgYm91bmQgcmVhZHkgZm9yCiAgICB0aGUgbmV4dCByZXF1ZXN0LCB3aXRob3V0IHRoZSBuZWVkIHRvIHVuYmluZC9jb25uZWN0L3JlYmluZC4KICAgIFRoZSBwZXJmb3JtYW5jZSBhZHZhbnRhZ2VzIGFyZSBzaW1pbGFyIHRvIHRoZSBlZmZlY3Qgb2YgSFRUUAogICAga2VlcGFsaXZlcy48L3A+CgogICAgPHA+T24gYSBidXN5IHNlcnZlciBpdCBpcyBwb3NzaWJsZSB0aGF0IG1hbnkgcmVxdWVzdHMgd2lsbCB0cnkKICAgIGFuZCBhY2Nlc3MgdGhlIHNhbWUgTERBUCBzZXJ2ZXIgY29ubmVjdGlvbiBzaW11bHRhbmVvdXNseS4KICAgIFdoZXJlIGFuIExEQVAgY29ubmVjdGlvbiBpcyBpbiB1c2UsIEFwYWNoZSB3aWxsIGNyZWF0ZSBhIG5ldwogICAgY29ubmVjdGlvbiBhbG9uZ3NpZGUgdGhlIG9yaWdpbmFsIG9uZS4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlCiAgICBjb25uZWN0aW9uIHBvb2wgZG9lcyBub3QgYmVjb21lIGEgYm90dGxlbmVjay48L3A+CgogICAgPHA+VGhlcmUgaXMgbm8gbmVlZCB0byBtYW51YWxseSBlbmFibGUgY29ubmVjdGlvbiBwb29saW5nIGluCiAgICB0aGUgQXBhY2hlIGNvbmZpZ3VyYXRpb24uIEFueSBtb2R1bGUgdXNpbmcgdGhpcyBtb2R1bGUgZm9yCiAgICBhY2Nlc3MgdG8gTERBUCBzZXJ2aWNlcyB3aWxsIHNoYXJlIHRoZSBjb25uZWN0aW9uIHBvb2wuPC9wPgoKICAgIDxwPkxEQVAgY29ubmVjdGlvbnMgY2FuIGtlZXAgdHJhY2sgb2YgdGhlIGxkYXAgY2xpZW50CiAgICBjcmVkZW50aWFscyB1c2VkIHdoZW4gYmluZGluZyB0byBhbiBMREFQIHNlcnZlci4gVGhlc2UKICAgIGNyZWRlbnRpYWxzIGNhbiBiZSBwcm92aWRlZCB0byBMREFQIHNlcnZlcnMgdGhhdCBkbyBub3QKICAgIGFsbG93IGFub255bW91cyBiaW5kcyBkdXJpbmcgcmVmZXJyYWwgY2hhc2luZy4gVG8gY29udHJvbAogICAgdGhpcyBmZWF0dXJlLCBzZWUgdGhlCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjbGRhcHJlZmVycmFscyI+TERBUFJlZmVycmFsczwvYT48L2NvZGU+IGFuZAogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2xkYXByZWZlcnJhbGhvcGxpbWl0Ij5MREFQUmVmZXJyYWxIb3BMaW1pdDwvYT48L2NvZGU+CiAgICBkaXJlY3RpdmVzLiBCeSBkZWZhdWx0LCB0aGlzIGZlYXR1cmUgaXMgZW5hYmxlZC48L3A+CjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImNhY2hlIiBpZD0iY2FjaGUiPkxEQVAgQ2FjaGU8L2E+PC9oMj4KCiAgICA8cD5Gb3IgaW1wcm92ZWQgcGVyZm9ybWFuY2UsIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfbGRhcC5odG1sIj5tb2RfbGRhcDwvYT48L2NvZGU+IHVzZXMgYW4gYWdncmVzc2l2ZQogICAgY2FjaGluZyBzdHJhdGVneSB0byBtaW5pbWl6ZSB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgdGhlIExEQVAKICAgIHNlcnZlciBtdXN0IGJlIGNvbnRhY3RlZC4gQ2FjaGluZyBjYW4gZWFzaWx5IGRvdWJsZSBvciB0cmlwbGUKICAgIHRoZSB0aHJvdWdocHV0IG9mIEFwYWNoZSB3aGVuIGl0IGlzIHNlcnZpbmcgcGFnZXMgcHJvdGVjdGVkCiAgICB3aXRoIG1vZF9hdXRobnpfbGRhcC4gSW4gYWRkaXRpb24sIHRoZSBsb2FkIG9uIHRoZSBMREFQIHNlcnZlcgogICAgd2lsbCBiZSBzaWduaWZpY2FudGx5IGRlY3JlYXNlZC48L3A+CgogICAgPHA+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9sZGFwLmh0bWwiPm1vZF9sZGFwPC9hPjwvY29kZT4gc3VwcG9ydHMgdHdvIHR5cGVzIG9mIExEQVAgY2FjaGluZyBkdXJpbmcKICAgIHRoZSBzZWFyY2gvYmluZCBwaGFzZSB3aXRoIGEgPGVtPnNlYXJjaC9iaW5kIGNhY2hlPC9lbT4gYW5kCiAgICBkdXJpbmcgdGhlIGNvbXBhcmUgcGhhc2Ugd2l0aCB0d28gPGVtPm9wZXJhdGlvbgogICAgY2FjaGVzPC9lbT4uIEVhY2ggTERBUCBVUkwgdGhhdCBpcyB1c2VkIGJ5IHRoZSBzZXJ2ZXIgaGFzCiAgICBpdHMgb3duIHNldCBvZiB0aGVzZSB0aHJlZSBjYWNoZXMuPC9wPgoKICAgIDxoMz48YSBuYW1lPSJzZWFyY2gtYmluZCIgaWQ9InNlYXJjaC1iaW5kIj5UaGUgU2VhcmNoL0JpbmQgQ2FjaGU8L2E+PC9oMz4KICAgICAgPHA+VGhlIHByb2Nlc3Mgb2YgZG9pbmcgYSBzZWFyY2ggYW5kIHRoZW4gYSBiaW5kIGlzIHRoZQogICAgICBtb3N0IHRpbWUtY29uc3VtaW5nIGFzcGVjdCBvZiBMREFQIG9wZXJhdGlvbiwgZXNwZWNpYWxseSBpZgogICAgICB0aGUgZGlyZWN0b3J5IGlzIGxhcmdlLiBUaGUgc2VhcmNoL2JpbmQgY2FjaGUgaXMgdXNlZCB0bwogICAgICBjYWNoZSBhbGwgc2VhcmNoZXMgdGhhdCByZXN1bHRlZCBpbiBzdWNjZXNzZnVsIGJpbmRzLgogICAgICBOZWdhdGl2ZSByZXN1bHRzICg8ZW0+aS5lLjwvZW0+LCB1bnN1Y2Nlc3NmdWwgc2VhcmNoZXMsIG9yIHNlYXJjaGVzCiAgICAgIHRoYXQgZGlkIG5vdCByZXN1bHQgaW4gYSBzdWNjZXNzZnVsIGJpbmQpIGFyZSBub3QgY2FjaGVkLgogICAgICBUaGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGRlY2lzaW9uIGlzIHRoYXQgY29ubmVjdGlvbnMgd2l0aAogICAgICBpbnZhbGlkIGNyZWRlbnRpYWxzIGFyZSBvbmx5IGEgdGlueSBwZXJjZW50YWdlIG9mIHRoZSB0b3RhbAogICAgICBudW1iZXIgb2YgY29ubmVjdGlvbnMsIHNvIGJ5IG5vdCBjYWNoaW5nIGludmFsaWQKICAgICAgY3JlZGVudGlhbHMsIHRoZSBzaXplIG9mIHRoZSBjYWNoZSBpcyByZWR1Y2VkLjwvcD4KCiAgICAgIDxwPjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfbGRhcC5odG1sIj5tb2RfbGRhcDwvYT48L2NvZGU+IHN0b3JlcyB0aGUgdXNlcm5hbWUsIHRoZSBETgogICAgICByZXRyaWV2ZWQsIHRoZSBwYXNzd29yZCB1c2VkIHRvIGJpbmQsIGFuZCB0aGUgdGltZSBvZiB0aGUgYmluZAogICAgICBpbiB0aGUgY2FjaGUuIFdoZW5ldmVyIGEgbmV3IGNvbm5lY3Rpb24gaXMgaW5pdGlhdGVkIHdpdGggdGhlCiAgICAgIHNhbWUgdXNlcm5hbWUsIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfbGRhcC5odG1sIj5tb2RfbGRhcDwvYT48L2NvZGU+IGNvbXBhcmVzIHRoZSBwYXNzd29yZAogICAgICBvZiB0aGUgbmV3IGNvbm5lY3Rpb24gd2l0aCB0aGUgcGFzc3dvcmQgaW4gdGhlIGNhY2hlLiBJZiB0aGUKICAgICAgcGFzc3dvcmRzIG1hdGNoLCBhbmQgaWYgdGhlIGNhY2hlZCBlbnRyeSBpcyBub3QgdG9vIG9sZCwKICAgICAgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9sZGFwLmh0bWwiPm1vZF9sZGFwPC9hPjwvY29kZT4gYnlwYXNzZXMgdGhlIHNlYXJjaC9iaW5kIHBoYXNlLjwvcD4KCiAgICAgIDxwPlRoZSBzZWFyY2ggYW5kIGJpbmQgY2FjaGUgaXMgY29udHJvbGxlZCB3aXRoIHRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjbGRhcGNhY2hlZW50cmllcyI+TERBUENhY2hlRW50cmllczwvYT48L2NvZGU+IGFuZCA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjbGRhcGNhY2hldHRsIj5MREFQQ2FjaGVUVEw8L2E+PC9jb2RlPiBkaXJlY3RpdmVzLjwvcD4KICAgIAoKICAgIDxoMz48YSBuYW1lPSJvcGNhY2hlcyIgaWQ9Im9wY2FjaGVzIj5PcGVyYXRpb24gQ2FjaGVzPC9hPjwvaDM+CiAgICAgIDxwPkR1cmluZyBhdHRyaWJ1dGUgYW5kIGRpc3Rpbmd1aXNoZWQgbmFtZSBjb21wYXJpc29uCiAgICAgIGZ1bmN0aW9ucywgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9sZGFwLmh0bWwiPm1vZF9sZGFwPC9hPjwvY29kZT4gdXNlcyB0d28gb3BlcmF0aW9uIGNhY2hlcwogICAgICB0byBjYWNoZSB0aGUgY29tcGFyZSBvcGVyYXRpb25zLiBUaGUgZmlyc3QgY29tcGFyZSBjYWNoZSBpcwogICAgICB1c2VkIHRvIGNhY2hlIHRoZSByZXN1bHRzIG9mIGNvbXBhcmVzIGRvbmUgdG8gdGVzdCBmb3IgTERBUAogICAgICBncm91cCBtZW1iZXJzaGlwLiBUaGUgc2Vjb25kIGNvbXBhcmUgY2FjaGUgaXMgdXNlZCB0byBjYWNoZQogICAgICB0aGUgcmVzdWx0cyBvZiBjb21wYXJpc29ucyBkb25lIGJldHdlZW4gZGlzdGluZ3Vpc2hlZAogICAgICBuYW1lcy48L3A+CgogICAgICA8cD5Ob3RlIHRoYXQsIHdoZW4gZ3JvdXAgbWVtYmVyc2hpcCBpcyBiZWluZyBjaGVja2VkLCBhbnkgc3ViLWdyb3VwCiAgICAgIGNvbXBhcmlzb24gcmVzdWx0cyBhcmUgY2FjaGVkIHRvIHNwZWVkIGZ1dHVyZSBzdWItZ3JvdXAgY29tcGFyaXNvbnMuPC9wPgoKICAgICAgPHA+VGhlIGJlaGF2aW9yIG9mIGJvdGggb2YgdGhlc2UgY2FjaGVzIGlzIGNvbnRyb2xsZWQgd2l0aAogICAgICB0aGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2xkYXBvcGNhY2hlZW50cmllcyI+TERBUE9wQ2FjaGVFbnRyaWVzPC9hPjwvY29kZT4KICAgICAgYW5kIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNsZGFwb3BjYWNoZXR0bCI+TERBUE9wQ2FjaGVUVEw8L2E+PC9jb2RlPgogICAgICBkaXJlY3RpdmVzLjwvcD4KICAgIAoKICAgIDxoMz48YSBuYW1lPSJtb25pdG9yaW5nIiBpZD0ibW9uaXRvcmluZyI+TW9uaXRvcmluZyB0aGUgQ2FjaGU8L2E+PC9oMz4KICAgICAgPHA+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9sZGFwLmh0bWwiPm1vZF9sZGFwPC9hPjwvY29kZT4gaGFzIGEgY29udGVudCBoYW5kbGVyIHRoYXQgYWxsb3dzCiAgICAgIGFkbWluaXN0cmF0b3JzIHRvIG1vbml0b3IgdGhlIGNhY2hlIHBlcmZvcm1hbmNlLiBUaGUgbmFtZSBvZgogICAgICB0aGUgY29udGVudCBoYW5kbGVyIGlzIDxjb2RlPmxkYXAtc3RhdHVzPC9jb2RlPiwgc28gdGhlCiAgICAgIGZvbGxvd2luZyBkaXJlY3RpdmVzIGNvdWxkIGJlIHVzZWQgdG8gYWNjZXNzIHRoZQogICAgICA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2xkYXAuaHRtbCI+bW9kX2xkYXA8L2E+PC9jb2RlPiBjYWNoZSBpbmZvcm1hdGlvbjo8L3A+CgogICAgICA8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+Jmx0O0xvY2F0aW9uICIvc2VydmVyL2NhY2hlLWluZm8iJmd0OwogICAgU2V0SGFuZGxlciBsZGFwLXN0YXR1cwombHQ7L0xvY2F0aW9uJmd0OzwvcHJlPgoKCiAgICAgIDxwPkJ5IGZldGNoaW5nIHRoZSBVUkwgPGNvZGU+aHR0cDovL3NlcnZlcm5hbWUvY2FjaGUtaW5mbzwvY29kZT4sCiAgICAgIHRoZSBhZG1pbmlzdHJhdG9yIGNhbiBnZXQgYSBzdGF0dXMgcmVwb3J0IG9mIGV2ZXJ5IGNhY2hlIHRoYXQgaXMgdXNlZAogICAgICBieSA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2xkYXAuaHRtbCI+bW9kX2xkYXA8L2E+PC9jb2RlPiBjYWNoZS4gTm90ZSB0aGF0IGlmIEFwYWNoZSBkb2VzIG5vdAogICAgICBzdXBwb3J0IHNoYXJlZCBtZW1vcnksIHRoZW4gZWFjaCA8Y29kZSBjbGFzcz0icHJvZ3JhbSI+PGEgaHJlZj0iLi4vcHJvZ3JhbXMvaHR0cGQuaHRtbCI+aHR0cGQ8L2E+PC9jb2RlPiBpbnN0YW5jZSBoYXMgaXRzCiAgICAgIG93biBjYWNoZSwgc28gcmVsb2FkaW5nIHRoZSBVUkwgd2lsbCByZXN1bHQgaW4gZGlmZmVyZW50CiAgICAgIGluZm9ybWF0aW9uIGVhY2ggdGltZSwgZGVwZW5kaW5nIG9uIHdoaWNoIDxjb2RlIGNsYXNzPSJwcm9ncmFtIj48YSBocmVmPSIuLi9wcm9ncmFtcy9odHRwZC5odG1sIj5odHRwZDwvYT48L2NvZGU+CiAgICAgIGluc3RhbmNlIHByb2Nlc3NlcyB0aGUgcmVxdWVzdC48L3A+CiAgICAKPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0idXNpbmdzc2x0bHMiIGlkPSJ1c2luZ3NzbHRscyI+VXNpbmcgU1NML1RMUzwvYT48L2gyPgoKICAgIDxwPlRoZSBhYmlsaXR5IHRvIGNyZWF0ZSBhbiBTU0wgYW5kIFRMUyBjb25uZWN0aW9ucyB0byBhbiBMREFQIHNlcnZlcgogICAgaXMgZGVmaW5lZCBieSB0aGUgZGlyZWN0aXZlcwogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2xkYXB0cnVzdGVkZ2xvYmFsY2VydCI+TERBUFRydXN0ZWRHbG9iYWxDZXJ0PC9hPjwvY29kZT4sCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjbGRhcHRydXN0ZWRjbGllbnRjZXJ0Ij5MREFQVHJ1c3RlZENsaWVudENlcnQ8L2E+PC9jb2RlPgogICAgIGFuZCA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjbGRhcHRydXN0ZWRtb2RlIj5MREFQVHJ1c3RlZE1vZGU8L2E+PC9jb2RlPi4KICAgIFRoZXNlIGRpcmVjdGl2ZXMgc3BlY2lmeSB0aGUgQ0EgYW5kIG9wdGlvbmFsIGNsaWVudCBjZXJ0aWZpY2F0ZXMgdG8gYmUgdXNlZCwKICAgIGFzIHdlbGwgYXMgdGhlIHR5cGUgb2YgZW5jcnlwdGlvbiB0byBiZSB1c2VkIG9uIHRoZSBjb25uZWN0aW9uIChub25lLCBTU0wgb3IKICAgIFRMUy9TVEFSVFRMUykuPC9wPgoKICAgIDxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj4jIEVzdGFibGlzaCBhbiBTU0wgTERBUCBjb25uZWN0aW9uIG9uIHBvcnQgNjM2LiBSZXF1aXJlcyB0aGF0CiMgbW9kX2xkYXAgYW5kIG1vZF9hdXRobnpfbGRhcCBiZSBsb2FkZWQuIENoYW5nZSB0aGUKIyAieW91cmRvbWFpbi5leGFtcGxlLmNvbSIgdG8gbWF0Y2ggeW91ciBkb21haW4uCgpMREFQVHJ1c3RlZEdsb2JhbENlcnQgQ0FfREVSICIvY2VydHMvY2VydGZpbGUuZGVyIgoKJmx0O0xvY2F0aW9uICIvbGRhcC1zdGF0dXMiJmd0OwogICAgU2V0SGFuZGxlciBsZGFwLXN0YXR1cwoKICAgIFJlcXVpcmUgaG9zdCB5b3VyZG9tYWluLmV4YW1wbGUuY29tCgogICAgU2F0aXNmeSBhbnkKICAgIEF1dGhUeXBlIEJhc2ljCiAgICBBdXRoTmFtZSAiTERBUCBQcm90ZWN0ZWQiCiAgICBBdXRoQmFzaWNQcm92aWRlciBsZGFwCiAgICBBdXRoTERBUFVSTCAibGRhcHM6Ly8xMjcuMC4wLjEvZGM9ZXhhbXBsZSxkYz1jb20/dWlkP29uZSIKICAgIFJlcXVpcmUgdmFsaWQtdXNlcgombHQ7L0xvY2F0aW9uJmd0OzwvcHJlPgoKCiAgICA8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+IyBFc3RhYmxpc2ggYSBUTFMgTERBUCBjb25uZWN0aW9uIG9uIHBvcnQgMzg5LiBSZXF1aXJlcyB0aGF0CiMgbW9kX2xkYXAgYW5kIG1vZF9hdXRobnpfbGRhcCBiZSBsb2FkZWQuIENoYW5nZSB0aGUKIyAieW91cmRvbWFpbi5leGFtcGxlLmNvbSIgdG8gbWF0Y2ggeW91ciBkb21haW4uCgpMREFQVHJ1c3RlZEdsb2JhbENlcnQgQ0FfREVSICIvY2VydHMvY2VydGZpbGUuZGVyIgoKJmx0O0xvY2F0aW9uICIvbGRhcC1zdGF0dXMiJmd0OwogICAgU2V0SGFuZGxlciBsZGFwLXN0YXR1cwoKICAgIFJlcXVpcmUgaG9zdCB5b3VyZG9tYWluLmV4YW1wbGUuY29tCgogICAgU2F0aXNmeSBhbnkKICAgIEF1dGhUeXBlIEJhc2ljCiAgICBBdXRoTmFtZSAiTERBUCBQcm90ZWN0ZWQiCiAgICBBdXRoQmFzaWNQcm92aWRlciBsZGFwCiAgICBBdXRoTERBUFVSTCAibGRhcDovLzEyNy4wLjAuMS9kYz1leGFtcGxlLGRjPWNvbT91aWQ/b25lIiBUTFMKICAgIFJlcXVpcmUgdmFsaWQtdXNlcgombHQ7L0xvY2F0aW9uJmd0OzwvcHJlPgoKCjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9InNldHRpbmdjZXJ0cyIgaWQ9InNldHRpbmdjZXJ0cyI+U1NML1RMUyBDZXJ0aWZpY2F0ZXM8L2E+PC9oMj4KCiAgICA8cD5UaGUgZGlmZmVyZW50IExEQVAgU0RLcyBoYXZlIHdpZGVseSBkaWZmZXJlbnQgbWV0aG9kcyBvZiBzZXR0aW5nCiAgICBhbmQgaGFuZGxpbmcgYm90aCBDQSBhbmQgY2xpZW50IHNpZGUgY2VydGlmaWNhdGVzLjwvcD4KCiAgICA8cD5JZiB5b3UgaW50ZW5kIHRvIHVzZSBTU0wgb3IgVExTLCByZWFkIHRoaXMgc2VjdGlvbiBDQVJFRlVMTFkgc28gYXMgdG8KICAgIHVuZGVyc3RhbmQgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gY29uZmlndXJhdGlvbnMgb24gdGhlIGRpZmZlcmVudCBMREFQCiAgICB0b29sa2l0cyBzdXBwb3J0ZWQuPC9wPgoKICAgIDxoMz48YSBuYW1lPSJzZXR0aW5nY2VydHMtbmV0c2NhcGUiIGlkPSJzZXR0aW5nY2VydHMtbmV0c2NhcGUiPk5ldHNjYXBlL01vemlsbGEvaVBsYW5ldCBTREs8L2E+PC9oMz4KICAgICAgICA8cD5DQSBjZXJ0aWZpY2F0ZXMgYXJlIHNwZWNpZmllZCB3aXRoaW4gYSBmaWxlIGNhbGxlZCBjZXJ0Ny5kYi4KICAgICAgICBUaGUgU0RLIHdpbGwgbm90IHRhbGsgdG8gYW55IExEQVAgc2VydmVyIHdob3NlIGNlcnRpZmljYXRlIHdhcwogICAgICAgIG5vdCBzaWduZWQgYnkgYSBDQSBzcGVjaWZpZWQgaW4gdGhpcyBmaWxlLiBJZgogICAgICAgIGNsaWVudCBjZXJ0aWZpY2F0ZXMgYXJlIHJlcXVpcmVkLCBhbiBvcHRpb25hbCBrZXkzLmRiIGZpbGUgbWF5CiAgICAgICAgYmUgc3BlY2lmaWVkIHdpdGggYW4gb3B0aW9uYWwgcGFzc3dvcmQuIFRoZSBzZWNtb2QgZmlsZSBjYW4gYmUKICAgICAgICBzcGVjaWZpZWQgaWYgcmVxdWlyZWQuIFRoZXNlIGZpbGVzIGFyZSBpbiB0aGUgc2FtZSBmb3JtYXQgYXMKICAgICAgICB1c2VkIGJ5IHRoZSBOZXRzY2FwZSBDb21tdW5pY2F0b3Igb3IgTW96aWxsYSB3ZWIgYnJvd3NlcnMuIFRoZSBlYXNpZXN0CiAgICAgICAgd2F5IHRvIG9idGFpbiB0aGVzZSBmaWxlcyBpcyB0byBncmFiIHRoZW0gZnJvbSB5b3VyIGJyb3dzZXIKICAgICAgICBpbnN0YWxsYXRpb24uPC9wPgoKICAgICAgICA8cD5DbGllbnQgY2VydGlmaWNhdGVzIGFyZSBzcGVjaWZpZWQgcGVyIGNvbm5lY3Rpb24gdXNpbmcgdGhlCiAgICAgICAgTERBUFRydXN0ZWRDbGllbnRDZXJ0IGRpcmVjdGl2ZSBieSByZWZlcnJpbmcKICAgICAgICB0byB0aGUgY2VydGlmaWNhdGUgIm5pY2tuYW1lIi4gQW4gb3B0aW9uYWwgcGFzc3dvcmQgbWF5IGJlCiAgICAgICAgc3BlY2lmaWVkIHRvIHVubG9jayB0aGUgY2VydGlmaWNhdGUncyBwcml2YXRlIGtleS48L3A+CgogICAgICAgIDxwPlRoZSBTREsgc3VwcG9ydHMgU1NMIG9ubHkuIEFuIGF0dGVtcHQgdG8gdXNlIFNUQVJUVExTIHdpbGwgY2F1c2UKICAgICAgICBhbiBlcnJvciB3aGVuIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBjb250YWN0IHRoZSBMREFQIHNlcnZlciBhdAogICAgICAgIHJ1bnRpbWUuPC9wPgoKICAgICAgICA8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+IyBTcGVjaWZ5IGEgTmV0c2NhcGUgQ0EgY2VydGlmaWNhdGUgZmlsZQpMREFQVHJ1c3RlZEdsb2JhbENlcnQgQ0FfQ0VSVDdfREIgIi9jZXJ0cy9jZXJ0Ny5kYiIKIyBTcGVjaWZ5IGFuIG9wdGlvbmFsIGtleTMuZGIgZmlsZSBmb3IgY2xpZW50IGNlcnRpZmljYXRlIHN1cHBvcnQKTERBUFRydXN0ZWRHbG9iYWxDZXJ0IENFUlRfS0VZM19EQiAiL2NlcnRzL2tleTMuZGIiCiMgU3BlY2lmeSB0aGUgc2VjbW9kIGZpbGUgaWYgcmVxdWlyZWQKTERBUFRydXN0ZWRHbG9iYWxDZXJ0IENBX1NFQ01PRCAiL2NlcnRzL3NlY21vZCIKJmx0O0xvY2F0aW9uICIvbGRhcC1zdGF0dXMiJmd0OwogICAgU2V0SGFuZGxlciBsZGFwLXN0YXR1cwoKICAgIFJlcXVpcmUgaG9zdCB5b3VyZG9tYWluLmV4YW1wbGUuY29tCgogICAgU2F0aXNmeSBhbnkKICAgIEF1dGhUeXBlIEJhc2ljCiAgICBBdXRoTmFtZSAiTERBUCBQcm90ZWN0ZWQiCiAgICBBdXRoQmFzaWNQcm92aWRlciBsZGFwCiAgICBMREFQVHJ1c3RlZENsaWVudENlcnQgQ0VSVF9OSUNLTkFNRSAmbHQ7bmlja25hbWUmZ3Q7IFtwYXNzd29yZF0KICAgIEF1dGhMREFQVVJMICJsZGFwczovLzEyNy4wLjAuMS9kYz1leGFtcGxlLGRjPWNvbT91aWQ/b25lIgogICAgUmVxdWlyZSB2YWxpZC11c2VyCiZsdDsvTG9jYXRpb24mZ3Q7PC9wcmU+CgoKICAgIAoKICAgIDxoMz48YSBuYW1lPSJzZXR0aW5nY2VydHMtbm92ZWxsIiBpZD0ic2V0dGluZ2NlcnRzLW5vdmVsbCI+Tm92ZWxsIFNESzwvYT48L2gzPgoKICAgICAgICA8cD5PbmUgb3IgbW9yZSBDQSBjZXJ0aWZpY2F0ZXMgbXVzdCBiZSBzcGVjaWZpZWQgZm9yIHRoZSBOb3ZlbGwKICAgICAgICBTREsgdG8gd29yayBjb3JyZWN0bHkuIFRoZXNlIGNlcnRpZmljYXRlcyBjYW4gYmUgc3BlY2lmaWVkIGFzCiAgICAgICAgYmluYXJ5IERFUiBvciBCYXNlNjQgKFBFTSkgZW5jb2RlZCBmaWxlcy48L3A+CgogICAgICAgIDxwPk5vdGU6IENsaWVudCBjZXJ0aWZpY2F0ZXMgYXJlIHNwZWNpZmllZCBnbG9iYWxseSByYXRoZXIgdGhhbiBwZXIKICAgICAgICBjb25uZWN0aW9uLCBhbmQgc28gbXVzdCBiZSBzcGVjaWZpZWQgd2l0aCB0aGUgTERBUFRydXN0ZWRHbG9iYWxDZXJ0CiAgICAgICAgZGlyZWN0aXZlIGFzIGJlbG93LiBUcnlpbmcgdG8gc2V0IGNsaWVudCBjZXJ0aWZpY2F0ZXMgdmlhIHRoZQogICAgICAgIExEQVBUcnVzdGVkQ2xpZW50Q2VydCBkaXJlY3RpdmUgd2lsbCBjYXVzZSBhbiBlcnJvciB0byBiZSBsb2dnZWQKICAgICAgICB3aGVuIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBjb25uZWN0IHRvIHRoZSBMREFQIHNlcnZlci4uPC9wPgoKICAgICAgICA8cD5UaGUgU0RLIHN1cHBvcnRzIGJvdGggU1NMIGFuZCBTVEFSVFRMUywgc2V0IHVzaW5nIHRoZQogICAgICAgIExEQVBUcnVzdGVkTW9kZSBwYXJhbWV0ZXIuIElmIGFuIGxkYXBzOi8vIFVSTCBpcyBzcGVjaWZpZWQsCiAgICAgICAgU1NMIG1vZGUgaXMgZm9yY2VkLCBvdmVycmlkZSB0aGlzIGRpcmVjdGl2ZS48L3A+CgogICAgICAgIDxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj4jIFNwZWNpZnkgdHdvIENBIGNlcnRpZmljYXRlIGZpbGVzCkxEQVBUcnVzdGVkR2xvYmFsQ2VydCBDQV9ERVIgIi9jZXJ0cy9jYWNlcnQxLmRlciIKTERBUFRydXN0ZWRHbG9iYWxDZXJ0IENBX0JBU0U2NCAiL2NlcnRzL2NhY2VydDIucGVtIgojIFNwZWNpZnkgYSBjbGllbnQgY2VydGlmaWNhdGUgZmlsZSBhbmQga2V5CkxEQVBUcnVzdGVkR2xvYmFsQ2VydCBDRVJUX0JBU0U2NCAiL2NlcnRzL2NlcnQxLnBlbSIKTERBUFRydXN0ZWRHbG9iYWxDZXJ0IEtFWV9CQVNFNjQgIi9jZXJ0cy9rZXkxLnBlbSIgW3Bhc3N3b3JkXQojIERvIG5vdCB1c2UgdGhpcyBkaXJlY3RpdmUsIGFzIGl0IHdpbGwgdGhyb3cgYW4gZXJyb3IKI0xEQVBUcnVzdGVkQ2xpZW50Q2VydCBDRVJUX0JBU0U2NCAiL2NlcnRzL2NlcnQxLnBlbSI8L3ByZT4KCgogICAgCgogICAgPGgzPjxhIG5hbWU9InNldHRpbmdjZXJ0cy1vcGVubGRhcCIgaWQ9InNldHRpbmdjZXJ0cy1vcGVubGRhcCI+T3BlbkxEQVAgU0RLPC9hPjwvaDM+CgogICAgICAgIDxwPk9uZSBvciBtb3JlIENBIGNlcnRpZmljYXRlcyBtdXN0IGJlIHNwZWNpZmllZCBmb3IgdGhlIE9wZW5MREFQCiAgICAgICAgU0RLIHRvIHdvcmsgY29ycmVjdGx5LiBUaGVzZSBjZXJ0aWZpY2F0ZXMgY2FuIGJlIHNwZWNpZmllZCBhcwogICAgICAgIGJpbmFyeSBERVIgb3IgQmFzZTY0IChQRU0pIGVuY29kZWQgZmlsZXMuPC9wPgoKICAgICAgICA8cD5Cb3RoIENBIGFuZCBjbGllbnQgY2VydGlmaWNhdGVzIG1heSBiZSBzcGVjaWZpZWQgZ2xvYmFsbHkKICAgICAgICAoTERBUFRydXN0ZWRHbG9iYWxDZXJ0KSBvciBwZXItY29ubmVjdGlvbiAoTERBUFRydXN0ZWRDbGllbnRDZXJ0KS4KICAgICAgICBXaGVuIGFueSBzZXR0aW5ncyBhcmUgc3BlY2lmaWVkIHBlci1jb25uZWN0aW9uLCB0aGUgZ2xvYmFsCiAgICAgICAgc2V0dGluZ3MgYXJlIHN1cGVyc2VkZWQuPC9wPgoKICAgICAgICA8cD5UaGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIFNESyBjbGFpbXMgdG8gc3VwcG9ydCBib3RoIFNTTCBhbmQKICAgICAgICBTVEFSVFRMUywgaG93ZXZlciBTVEFSVFRMUyBkb2VzIG5vdCBzZWVtIHRvIHdvcmsgb24gYWxsIHZlcnNpb25zCiAgICAgICAgb2YgdGhlIFNESy4gVGhlIFNTTC9UTFMgbW9kZSBjYW4gYmUgc2V0IHVzaW5nIHRoZQogICAgICAgIExEQVBUcnVzdGVkTW9kZSBwYXJhbWV0ZXIuIElmIGFuIGxkYXBzOi8vIFVSTCBpcyBzcGVjaWZpZWQsCiAgICAgICAgU1NMIG1vZGUgaXMgZm9yY2VkLiBUaGUgT3BlbkxEQVAgZG9jdW1lbnRhdGlvbiBub3RlcyB0aGF0IFNTTAogICAgICAgIChsZGFwczovLykgc3VwcG9ydCBoYXMgYmVlbiBkZXByZWNhdGVkIHRvIGJlIHJlcGxhY2VkIHdpdGggVExTLAogICAgICAgIGFsdGhvdWdoIHRoZSBTU0wgZnVuY3Rpb25hbGl0eSBzdGlsbCB3b3Jrcy48L3A+CgogICAgICAgIDxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj4jIFNwZWNpZnkgdHdvIENBIGNlcnRpZmljYXRlIGZpbGVzCkxEQVBUcnVzdGVkR2xvYmFsQ2VydCBDQV9ERVIgIi9jZXJ0cy9jYWNlcnQxLmRlciIKTERBUFRydXN0ZWRHbG9iYWxDZXJ0IENBX0JBU0U2NCAiL2NlcnRzL2NhY2VydDIucGVtIgombHQ7TG9jYXRpb24gIi9sZGFwLXN0YXR1cyImZ3Q7CiAgICBTZXRIYW5kbGVyIGxkYXAtc3RhdHVzCgogICAgUmVxdWlyZSBob3N0IHlvdXJkb21haW4uZXhhbXBsZS5jb20KCiAgICBMREFQVHJ1c3RlZENsaWVudENlcnQgQ0VSVF9CQVNFNjQgIi9jZXJ0cy9jZXJ0MS5wZW0iCiAgICBMREFQVHJ1c3RlZENsaWVudENlcnQgS0VZX0JBU0U2NCAiL2NlcnRzL2tleTEucGVtIgogICAgIyBDQSBjZXJ0cyByZXNwZWNpZmllZCBkdWUgdG8gcGVyLWRpcmVjdG9yeSBjbGllbnQgY2VydHMKICAgIExEQVBUcnVzdGVkQ2xpZW50Q2VydCBDQV9ERVIgIi9jZXJ0cy9jYWNlcnQxLmRlciIKICAgIExEQVBUcnVzdGVkQ2xpZW50Q2VydCBDQV9CQVNFNjQgIi9jZXJ0cy9jYWNlcnQyLnBlbSIKICAgIFNhdGlzZnkgYW55CiAgICBBdXRoVHlwZSBCYXNpYwogICAgQXV0aE5hbWUgIkxEQVAgUHJvdGVjdGVkIgogICAgQXV0aEJhc2ljUHJvdmlkZXIgbGRhcAogICAgQXV0aExEQVBVUkwgImxkYXBzOi8vMTI3LjAuMC4xL2RjPWV4YW1wbGUsZGM9Y29tP3VpZD9vbmUiCiAgICBSZXF1aXJlIHZhbGlkLXVzZXIKJmx0Oy9Mb2NhdGlvbiZndDs8L3ByZT4KCgogICAgCgogICAgPGgzPjxhIG5hbWU9InNldHRpbmdjZXJ0cy1zb2xhcmlzIiBpZD0ic2V0dGluZ2NlcnRzLXNvbGFyaXMiPlNvbGFyaXMgU0RLPC9hPjwvaDM+CgogICAgICAgIDxwPlNTTC9UTFMgZm9yIHRoZSBuYXRpdmUgU29sYXJpcyBMREFQIGxpYnJhcmllcyBpcyBub3QgeWV0CiAgICAgICAgc3VwcG9ydGVkLiBJZiByZXF1aXJlZCwgaW5zdGFsbCBhbmQgdXNlIHRoZSBPcGVuTERBUCBsaWJyYXJpZXMKICAgICAgICBpbnN0ZWFkLjwvcD4KCiAgICAKCiAgICA8aDM+PGEgbmFtZT0ic2V0dGluZ2NlcnRzLW1pY3Jvc29mdCIgaWQ9InNldHRpbmdjZXJ0cy1taWNyb3NvZnQiPk1pY3Jvc29mdCBTREs8L2E+PC9oMz4KCiAgICAgICAgPHA+U1NML1RMUyBjZXJ0aWZpY2F0ZSBjb25maWd1cmF0aW9uIGZvciB0aGUgbmF0aXZlIE1pY3Jvc29mdAogICAgICAgIExEQVAgbGlicmFyaWVzIGlzIGRvbmUgaW5zaWRlIHRoZSBzeXN0ZW0gcmVnaXN0cnksIGFuZCBubwogICAgICAgIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlcyBhcmUgcmVxdWlyZWQuPC9wPgoKICAgICAgICA8cD5Cb3RoIFNTTCBhbmQgVExTIGFyZSBzdXBwb3J0ZWQgYnkgdXNpbmcgdGhlIGxkYXBzOi8vIFVSTAogICAgICAgIGZvcm1hdCwgb3IgYnkgdXNpbmcgdGhlIExEQVBUcnVzdGVkTW9kZSBkaXJlY3RpdmUgYWNjb3JkaW5nbHkuPC9wPgoKICAgICAgICA8cD5Ob3RlOiBUaGUgc3RhdHVzIG9mIHN1cHBvcnQgZm9yIGNsaWVudCBjZXJ0aWZpY2F0ZXMgaXMgbm90IHlldCBrbm93bgogICAgICAgIGZvciB0aGlzIHRvb2xraXQuPC9wPgoKICAgIAoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkxEQVBDYWNoZUVudHJpZXMiIGlkPSJMREFQQ2FjaGVFbnRyaWVzIj5MREFQQ2FjaGVFbnRyaWVzPC9hPiA8YSBuYW1lPSJsZGFwY2FjaGVlbnRyaWVzIiBpZD0ibGRhcGNhY2hlZW50cmllcyI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+TWF4aW11bSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgcHJpbWFyeSBMREFQIGNhY2hlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkxEQVBDYWNoZUVudHJpZXMgPHZhcj5udW1iZXI8L3Zhcj48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+TERBUENhY2hlRW50cmllcyAxMDI0PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9sZGFwPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+U3BlY2lmaWVzIHRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIHByaW1hcnkgTERBUCBjYWNoZS4gVGhpcwogICAgY2FjaGUgY29udGFpbnMgc3VjY2Vzc2Z1bCBzZWFyY2gvYmluZHMuIFNldCBpdCB0byAwIHRvIHR1cm4gb2ZmCiAgICBzZWFyY2gvYmluZCBjYWNoaW5nLiBUaGUgZGVmYXVsdCBzaXplIGlzIDEwMjQgY2FjaGVkCiAgICBzZWFyY2hlcy48L3A+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iTERBUENhY2hlVFRMIiBpZD0iTERBUENhY2hlVFRMIj5MREFQQ2FjaGVUVEw8L2E+IDxhIG5hbWU9ImxkYXBjYWNoZXR0bCIgaWQ9ImxkYXBjYWNoZXR0bCI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+VGltZSB0aGF0IGNhY2hlZCBpdGVtcyByZW1haW4gdmFsaWQ8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+TERBUENhY2hlVFRMIDx2YXI+c2Vjb25kczwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5MREFQQ2FjaGVUVEwgNjAwPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9sZGFwPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+U3BlY2lmaWVzIHRoZSB0aW1lIChpbiBzZWNvbmRzKSB0aGF0IGFuIGl0ZW0gaW4gdGhlCiAgICBzZWFyY2gvYmluZCBjYWNoZSByZW1haW5zIHZhbGlkLiBUaGUgZGVmYXVsdCBpcyA2MDAgc2Vjb25kcyAoMTAKICAgIG1pbnV0ZXMpLjwvcD4KCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJMREFQQ29ubmVjdGlvblBvb2xUVEwiIGlkPSJMREFQQ29ubmVjdGlvblBvb2xUVEwiPkxEQVBDb25uZWN0aW9uUG9vbFRUTDwvYT4gPGEgbmFtZT0ibGRhcGNvbm5lY3Rpb25wb29sdHRsIiBpZD0ibGRhcGNvbm5lY3Rpb25wb29sdHRsIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5EaXNjYXJkIGJhY2tlbmQgY29ubmVjdGlvbnMgdGhhdCBoYXZlIGJlZW4gc2l0dGluZyBpbiB0aGUgY29ubmVjdGlvbiBwb29sIHRvbyBsb25nPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkxEQVBDb25uZWN0aW9uUG9vbFRUTCA8dmFyPm48L3Zhcj48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+TERBUENvbm5lY3Rpb25Qb29sVFRMIC0xPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWcsIHZpcnR1YWwgaG9zdDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2xkYXA8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb21wYXRpYmlsaXR5Ij5Db21wYXRpYmlsaXR5OjwvYT48L3RoPjx0ZD5BcGFjaGUgSFRUUCBTZXJ2ZXIgMi4zLjEyIGFuZCBsYXRlcjwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPlNwZWNpZmllcyB0aGUgbWF4aW11bSBhZ2UsIGluIHNlY29uZHMsIHRoYXQgYSBwb29sZWQgTERBUCBjb25uZWN0aW9uIGNhbiByZW1haW4gaWRsZQogICAgYW5kIHN0aWxsIGJlIGF2YWlsYWJsZSBmb3IgdXNlLiAgQ29ubmVjdGlvbnMgYXJlIGNsZWFuZWQgdXAgd2hlbiB0aGV5IGFyZSBuZXh0IG5lZWRlZCwKICAgIG5vdCBhc3luY2hyb25vdXNseS48L3A+CgogICAgPHA+QSBzZXR0aW5nIG9mIDAgY2F1c2VzIGNvbm5lY3Rpb25zIHRvIG5ldmVyIGJlIHNhdmVkIGluIHRoZSBiYWNrZW5kCiAgICBjb25uZWN0aW9uIHBvb2wuICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiAtMSwgYW5kIGFueSBvdGhlciBuZWdhdGl2ZSB2YWx1ZSwKICAgIGFsbG93cyBjb25uZWN0aW9ucyBvZiBhbnkgYWdlIHRvIGJlIHJldXNlZC48L3A+CgogICAgPHA+Rm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRoZSByZWZlcmVuY2UgdGltZSB1c2VkIGJ5IHRoaXMgZGlyZWN0aXZlIGlzCiAgICBiYXNlZCBvbiB3aGVuIHRoZSBMREFQIGNvbm5lY3Rpb24gaXMgcmV0dXJuZWQgdG8gdGhlIHBvb2wsIG5vdCB0aGUgdGltZQogICAgb2YgdGhlIGxhc3Qgc3VjY2Vzc2Z1bCBJL08gd2l0aCB0aGUgTERBUCBzZXJ2ZXIuICA8L3A+CgogICAgPHA+U2luY2UgMi40LjEwLCBuZXcgbWVhc3VyZXMgYXJlIGluIHBsYWNlIHRvIGF2b2lkIHRoZSByZWZlcmVuY2UgdGltZQogICAgZnJvbSBiZWluZyBpbmZsYXRlZCBieSBjYWNoZSBoaXRzIG9yIHNsb3cgcmVxdWVzdHMuICBGaXJzdCwgdGhlIHJlZmVyZW5jZQogICAgdGltZSBpcyBub3QgdXBkYXRlZCBpZiBubyBiYWNrZW5kIExEQVAgY29ubmNldGlvbnMgd2VyZSBuZWVkZWQuIFNlY29uZCwKICAgIHRoZSByZWZlcmVuY2UgdGltZSB1c2VzIHRoZSB0aW1lIHRoZSBIVFRQIHJlcXVlc3Qgd2FzIHJlY2VpdmVkIGluc3RlYWQKICAgIG9mIHRoZSB0aW1lIHRoZSByZXF1ZXN0IGlzIGNvbXBsZXRlZC48L3A+CgogICAgPGRpdiBjbGFzcz0ibm90ZSI+PHA+VGhpcyB0aW1lb3V0IGRlZmF1bHRzIHRvIHVuaXRzIG9mIHNlY29uZHMsIGJ1dCBhY2NlcHRzCiAgICBzdWZmaXhlcyBmb3IgbWlsbGlzZWNvbmRzIChtcyksIG1pbnV0ZXMgKG1pbiksIGFuZCBob3VycyAoaCkuCiAgICA8L3A+PC9kaXY+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iTERBUENvbm5lY3Rpb25UaW1lb3V0IiBpZD0iTERBUENvbm5lY3Rpb25UaW1lb3V0Ij5MREFQQ29ubmVjdGlvblRpbWVvdXQ8L2E+IDxhIG5hbWU9ImxkYXBjb25uZWN0aW9udGltZW91dCIgaWQ9ImxkYXBjb25uZWN0aW9udGltZW91dCI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+U3BlY2lmaWVzIHRoZSBzb2NrZXQgY29ubmVjdGlvbiB0aW1lb3V0IGluIHNlY29uZHM8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+TERBUENvbm5lY3Rpb25UaW1lb3V0IDx2YXI+c2Vjb25kczwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVuc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfbGRhcDwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPlRoaXMgZGlyZWN0aXZlIGNvbmZpZ3VyZXMgdGhlIExEQVBfT1BUX05FVFdPUktfVElNRU9VVCAob3IgTERBUF9PUFRfQ09OTkVDVF9USU1FT1VUKQogICAgb3B0aW9uIGluIHRoZSB1bmRlcmx5aW5nIExEQVAgY2xpZW50IGxpYnJhcnksIHdoZW4gYXZhaWxhYmxlLiAgVGhpcyB2YWx1ZQogICAgdHlwaWNhbGx5IGNvbnRyb2xzIGhvdyBsb25nIHRoZSBMREFQIGNsaWVudCBsaWJyYXJ5IHdpbGwgd2FpdCBmb3IgdGhlIFRDUAogICAgY29ubmVjdGlvbiB0byB0aGUgTERBUCBzZXJ2ZXIgdG8gY29tcGxldGUuPC9wPgoKICAgIDxwPiBJZiBhIGNvbm5lY3Rpb24gaXMgbm90IHN1Y2Nlc3NmdWwgd2l0aCB0aGUgdGltZW91dCBwZXJpb2QsIGVpdGhlciBhbiBlcnJvciB3aWxsIGJlCiAgICByZXR1cm5lZCBvciB0aGUgTERBUCBjbGllbnQgbGlicmFyeSB3aWxsIGF0dGVtcHQgdG8gY29ubmVjdCB0byBhIHNlY29uZGFyeSBMREFQCiAgICBzZXJ2ZXIgaWYgb25lIGlzIHNwZWNpZmllZCAodmlhIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgaG9zdG5hbWVzIGluIHRoZQogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRobnpfbGRhcC5odG1sI2F1dGhsZGFwdXJsIj5BdXRoTERBUFVSTDwvYT48L2NvZGU+KS48L3A+CgogICAgPHA+VGhlIGRlZmF1bHQgaXMgMTAgc2Vjb25kcywgaWYgdGhlIExEQVAgY2xpZW50IGxpYnJhcnkgbGlua2VkIHdpdGggdGhlCiAgICBzZXJ2ZXIgc3VwcG9ydHMgdGhlIExEQVBfT1BUX05FVFdPUktfVElNRU9VVCBvcHRpb24uPC9wPgoKICAgIDxkaXYgY2xhc3M9Im5vdGUiPkxEQVBDb25uZWN0aW9uVGltZW91dCBpcyBvbmx5IGF2YWlsYWJsZSB3aGVuIHRoZSBMREFQIGNsaWVudCBsaWJyYXJ5IGxpbmtlZAogICAgd2l0aCB0aGUgc2VydmVyIHN1cHBvcnRzIHRoZSBMREFQX09QVF9ORVRXT1JLX1RJTUVPVVQKICAgIChvciBMREFQX09QVF9DT05ORUNUX1RJTUVPVVQpIG9wdGlvbiwgYW5kIHRoZSB1bHRpbWF0ZSBiZWhhdmlvciBpcwogICAgZGljdGF0ZWQgZW50aXJlbHkgYnkgdGhlIExEQVAgY2xpZW50IGxpYnJhcnkuCiAgICA8L2Rpdj4KCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJMREFQTGlicmFyeURlYnVnIiBpZD0iTERBUExpYnJhcnlEZWJ1ZyI+TERBUExpYnJhcnlEZWJ1ZzwvYT4gPGEgbmFtZT0ibGRhcGxpYnJhcnlkZWJ1ZyIgaWQ9ImxkYXBsaWJyYXJ5ZGVidWciPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkVuYWJsZSBkZWJ1Z2dpbmcgaW4gdGhlIExEQVAgU0RLPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkxEQVBMaWJyYXJ5RGVidWcgPHZhcj43PC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPmRpc2FibGVkPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9sZGFwPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VHVybnMgb24gU0RLLXNwZWNpZmljIExEQVAgZGVidWcgb3B0aW9ucyB0aGF0IGdlbmVyYWxseSBjYXVzZSB0aGUgTERBUAogICAgU0RLIHRvIGxvZyB2ZXJib3NlIHRyYWNlIGluZm9ybWF0aW9uIHRvIHRoZSBtYWluIEFwYWNoZSBlcnJvciBsb2cuCiAgICBUaGUgdHJhY2UgbWVzc2FnZXMgZnJvbSB0aGUgTERBUCBTREsgcHJvdmlkZSBnb3J5IGRldGFpbHMgdGhhdAogICAgY2FuIGJlIHVzZWZ1bCBkdXJpbmcgZGVidWdnaW5nIG9mIGNvbm5lY3Rpdml0eSBwcm9ibGVtcyB3aXRoIGJhY2tlbmQgTERBUCBzZXJ2ZXJzPC9wPgoKICAgIDxwPlRoaXMgb3B0aW9uIGlzIG9ubHkgY29uZmlndXJhYmxlIHdoZW4gQXBhY2hlIEhUVFAgU2VydmVyIGlzIGxpbmtlZCB3aXRoCiAgICBhbiBMREFQIFNESyB0aGF0IGltcGxlbWVudHMgPGNvZGU+TERBUF9PUFRfREVCVUc8L2NvZGU+IG9yCiAgICA8Y29kZT5MREFQX09QVF9ERUJVR19MRVZFTDwvY29kZT4sIHN1Y2ggYXMgT3BlbkxEQVAgKGEgdmFsdWUgb2YgNyBpcyB2ZXJib3NlKQogICAgb3IgVGl2b2xpIERpcmVjdG9yeSBTZXJ2ZXIgKGEgdmFsdWUgb2YgNjU1MzUgaXMgdmVyYm9zZSkuPC9wPgoKICAgIDxkaXYgY2xhc3M9Indhcm5pbmciPgogICAgPHA+VGhlIGxvZ2dlZCBpbmZvcm1hdGlvbiB3aWxsIGxpa2VseSBjb250YWluIHBsYWludGV4dCBjcmVkZW50aWFscyBiZWluZyB1c2VkIG9yCiAgICB2YWxpZGF0ZWQgYnkgTERBUCBhdXRoZW50aWNhdGlvbiwgc28gY2FyZSBzaG91bGQgYmUgdGFrZW4gaW4gcHJvdGVjdGluZyBhbmQgcHVyZ2luZwogICAgdGhlIGVycm9yIGxvZyB3aGVuIHRoaXMgZGlyZWN0aXZlIGlzIHVzZWQuPC9wPgogICAgPC9kaXY+CgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkxEQVBPcENhY2hlRW50cmllcyIgaWQ9IkxEQVBPcENhY2hlRW50cmllcyI+TERBUE9wQ2FjaGVFbnRyaWVzPC9hPiA8YSBuYW1lPSJsZGFwb3BjYWNoZWVudHJpZXMiIGlkPSJsZGFwb3BjYWNoZWVudHJpZXMiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPk51bWJlciBvZiBlbnRyaWVzIHVzZWQgdG8gY2FjaGUgTERBUCBjb21wYXJlCm9wZXJhdGlvbnM8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+TERBUE9wQ2FjaGVFbnRyaWVzIDx2YXI+bnVtYmVyPC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkxEQVBPcENhY2hlRW50cmllcyAxMDI0PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9sZGFwPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhpcyBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfbGRhcC5odG1sIj5tb2RfbGRhcDwvYT48L2NvZGU+CiAgICB3aWxsIHVzZSB0byBjYWNoZSBMREFQIGNvbXBhcmUgb3BlcmF0aW9ucy4gVGhlIGRlZmF1bHQgaXMgMTAyNAogICAgZW50cmllcy4gIFNldHRpbmcgaXQgdG8gMCBkaXNhYmxlcyBvcGVyYXRpb24gY2FjaGluZy48L3A+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iTERBUE9wQ2FjaGVUVEwiIGlkPSJMREFQT3BDYWNoZVRUTCI+TERBUE9wQ2FjaGVUVEw8L2E+IDxhIG5hbWU9ImxkYXBvcGNhY2hldHRsIiBpZD0ibGRhcG9wY2FjaGV0dGwiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlRpbWUgdGhhdCBlbnRyaWVzIGluIHRoZSBvcGVyYXRpb24gY2FjaGUgcmVtYWluCnZhbGlkPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkxEQVBPcENhY2hlVFRMIDx2YXI+c2Vjb25kczwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5MREFQT3BDYWNoZVRUTCA2MDA8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2xkYXA8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5TcGVjaWZpZXMgdGhlIHRpbWUgKGluIHNlY29uZHMpIHRoYXQgZW50cmllcyBpbiB0aGUKICAgIG9wZXJhdGlvbiBjYWNoZSByZW1haW4gdmFsaWQuIFRoZSBkZWZhdWx0IGlzIDYwMCBzZWNvbmRzLjwvcD4KCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJMREFQUmVmZXJyYWxIb3BMaW1pdCIgaWQ9IkxEQVBSZWZlcnJhbEhvcExpbWl0Ij5MREFQUmVmZXJyYWxIb3BMaW1pdDwvYT4gPGEgbmFtZT0ibGRhcHJlZmVycmFsaG9wbGltaXQiIGlkPSJsZGFwcmVmZXJyYWxob3BsaW1pdCI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+VGhlIG1heGltdW0gbnVtYmVyIG9mIHJlZmVycmFsIGhvcHMgdG8gY2hhc2UgYmVmb3JlIHRlcm1pbmF0aW5nIGFuIExEQVAgcXVlcnkuPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkxEQVBSZWZlcnJhbEhvcExpbWl0IDx2YXI+bnVtYmVyPC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPlNESyBkZXBlbmRlbnQsIHR5cGljYWxseSBiZXR3ZWVuIDUgYW5kIDEwPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPmRpcmVjdG9yeSwgLmh0YWNjZXNzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjT3ZlcnJpZGUiPk92ZXJyaWRlOjwvYT48L3RoPjx0ZD5BdXRoQ29uZmlnPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVuc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfbGRhcDwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPlRoaXMgZGlyZWN0aXZlLCBpZiBlbmFibGVkIGJ5IHRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5MREFQUmVmZXJyYWxzPC9jb2RlPiBkaXJlY3RpdmUsCiAgICBsaW1pdHMgdGhlIG51bWJlciBvZiByZWZlcnJhbCBob3BzIHRoYXQgYXJlIGZvbGxvd2VkIGJlZm9yZSB0ZXJtaW5hdGluZyBhbgogICAgTERBUCBxdWVyeS48L3A+Cgo8ZGl2IGNsYXNzPSJ3YXJuaW5nIj4KPHA+IFN1cHBvcnQgZm9yIHRoaXMgdHVuYWJsZSBpcyB1bmNvbW1vbiBpbiBMREFQIFNES3MuPC9wPgo8L2Rpdj4KCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJMREFQUmVmZXJyYWxzIiBpZD0iTERBUFJlZmVycmFscyI+TERBUFJlZmVycmFsczwvYT4gPGEgbmFtZT0ibGRhcHJlZmVycmFscyIgaWQ9ImxkYXByZWZlcnJhbHMiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkVuYWJsZSByZWZlcnJhbCBjaGFzaW5nIGR1cmluZyBxdWVyaWVzIHRvIHRoZSBMREFQIHNlcnZlci48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+TERBUFJlZmVycmFscyA8dmFyPk9ufE9mZnxkZWZhdWx0PC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkxEQVBSZWZlcnJhbHMgT248L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+ZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNPdmVycmlkZSI+T3ZlcnJpZGU6PC9hPjwvdGg+PHRkPkF1dGhDb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9sZGFwPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29tcGF0aWJpbGl0eSI+Q29tcGF0aWJpbGl0eTo8L2E+PC90aD48dGQ+VGhlIDx2YXI+ZGVmYXVsdDwvdmFyPiBwYXJhbWV0ZXIgaXMgYXZhaWxhYmxlIGluIEFwYWNoZSAyLjQuNyBhbmQgbGF0ZXI8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5Tb21lIExEQVAgc2VydmVycyBkaXZpZGUgdGhlaXIgZGlyZWN0b3J5IGFtb25nIG11bHRpcGxlIGRvbWFpbnMgYW5kIHVzZSByZWZlcnJhbHMKICAgIHRvIGRpcmVjdCBhIGNsaWVudCB3aGVuIGEgZG9tYWluIGJvdW5kYXJ5IGlzIGNyb3NzZWQuIFRoaXMgaXMgc2ltaWxhciB0byBhIEhUVFAgcmVkaXJlY3QuCiAgICBMREFQIGNsaWVudCBsaWJyYXJpZXMgbWF5IG9yIG1heSBub3QgY2hhc2UgcmVmZXJyYWxzIGJ5IGRlZmF1bHQuIFRoaXMgZGlyZWN0aXZlCiAgICBleHBsaWNpdGx5IGNvbmZpZ3VyZXMgdGhlIHJlZmVycmFsIGNoYXNpbmcgaW4gdGhlIHVuZGVybHlpbmcgU0RLLjwvcD4KCgogICAgPHA+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+TERBUFJlZmVycmFsczwvY29kZT4gdGFrZXMgdGhlIGZvbGxvd2luZyB2YWx1ZXM6PC9wPgogICAgPGRsPgogICAgIDxkdD4ib24iPC9kdD4KICAgICA8ZGQ+IDxwPiBXaGVuIHNldCB0byAib24iLCB0aGUgdW5kZXJseWluZyBTREsncyByZWZlcnJhbCBjaGFzaW5nIHN0YXRlCiAgICAgICAgICAgICAgaXMgZW5hYmxlZCwgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+TERBUFJlZmVycmFsSG9wTGltaXQ8L2NvZGU+IGlzIHVzZWQgdG8KICAgICAgICAgICAgICBvdmVycmlkZSB0aGUgU0RLJ3MgaG9wIGxpbWl0LCBhbmQgYW4gTERBUCByZWJpbmQgY2FsbGJhY2sgaXMKICAgICAgICAgICAgICByZWdpc3RlcmVkLjwvcD48L2RkPgogICAgIDxkdD4ib2ZmIjwvZHQ+CiAgICAgPGRkPiA8cD4gV2hlbiBzZXQgdG8gIm9mZiIsIHRoZSB1bmRlcmx5aW5nIFNESydzIHJlZmVycmFsIGNoYXNpbmcgc3RhdGUKICAgICAgICAgICAgICBpcyBkaXNhYmxlZCBjb21wbGV0ZWx5LjwvcD48L2RkPgogICAgIDxkdD4iZGVmYXVsdCI8L2R0PgogICAgIDxkZD4gPHA+IFdoZW4gc2V0IHRvICJkZWZhdWx0IiwgdGhlIHVuZGVybHlpbmcgU0RLJ3MgcmVmZXJyYWwgY2hhc2luZyBzdGF0ZQogICAgICAgICAgICAgIGlzIG5vdCBjaGFuZ2VkLCA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5MREFQUmVmZXJyYWxIb3BMaW1pdDwvY29kZT4gaXMgbm90CiAgICAgICAgICAgICAgdXNlZCB0byBvdmVyaWRlIHRoZSBTREsncyBob3AgbGltaXQsIGFuZCBubyBMREFQIHJlYmluZCBjYWxsYmFjayBpcwogICAgICAgICAgICAgIHJlZ2lzdGVyZWQuPC9wPjwvZGQ+CiAgICA8L2RsPgoKICAgIDxwPlRoZSBkaXJlY3RpdmUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+TERBUFJlZmVycmFsSG9wTGltaXQ8L2NvZGU+IHdvcmtzIGluIGNvbmp1bmN0aW9uIHdpdGgKICAgIHRoaXMgZGlyZWN0aXZlIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgcmVmZXJyYWwgaG9wcyB0byBmb2xsb3cgYmVmb3JlIHRlcm1pbmF0aW5nIHRoZSBMREFQIHF1ZXJ5LgogICAgV2hlbiByZWZlcnJhbCBwcm9jZXNzaW5nIGlzIGVuYWJsZWQgYnkgYSB2YWx1ZSBvZiAiT24iLCBjbGllbnQgY3JlZGVudGlhbHMgd2lsbCBiZSBwcm92aWRlZCwKICAgIHZpYSBhIHJlYmluZCBjYWxsYmFjaywgZm9yIGFueSBMREFQIHNlcnZlciByZXF1aXJpbmcgdGhlbS48L3A+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iTERBUFJldHJpZXMiIGlkPSJMREFQUmV0cmllcyI+TERBUFJldHJpZXM8L2E+IDxhIG5hbWU9ImxkYXByZXRyaWVzIiBpZD0ibGRhcHJldHJpZXMiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkNvbmZpZ3VyZXMgdGhlIG51bWJlciBvZiBMREFQIHNlcnZlciByZXRyaWVzLjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5MREFQUmV0cmllcyA8dmFyPm51bWJlci1vZi1yZXRyaWVzPC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkxEQVBSZXRyaWVzIDM8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2xkYXA8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGUgc2VydmVyIHdpbGwgcmV0cnkgZmFpbGVkIExEQVAgcmVxdWVzdHMgdXAgdG8KICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkxEQVBSZXRyaWVzPC9jb2RlPiB0aW1lcy4gIFNldHRpbmcgdGhpcwogICAgZGlyZWN0aXZlIHRvIDAgZGlzYWJsZXMgcmV0cmllcy48L3A+CiAgICA8cD5MREFQIGVycm9ycyBzdWNoIGFzIHRpbWVvdXRzIGFuZCByZWZ1c2VkIGNvbm5lY3Rpb25zIGFyZSByZXRyeWFibGUuPC9wPgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkxEQVBSZXRyeURlbGF5IiBpZD0iTERBUFJldHJ5RGVsYXkiPkxEQVBSZXRyeURlbGF5PC9hPiA8YSBuYW1lPSJsZGFwcmV0cnlkZWxheSIgaWQ9ImxkYXByZXRyeWRlbGF5Ij5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5Db25maWd1cmVzIHRoZSBkZWxheSBiZXR3ZWVuIExEQVAgc2VydmVyIHJldHJpZXMuPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkxEQVBSZXRyeURlbGF5IDx2YXI+c2Vjb25kczwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5MREFQUmV0cnlEZWxheSAwPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9sZGFwPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+SWYgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+TERBUFJldHJ5RGVsYXk8L2NvZGU+IGlzIHNldCB0byBhIG5vbi16ZXJvCiAgICB2YWx1ZSwgdGhlIHNlcnZlciB3aWxsIGRlbGF5IHJldHJ5aW5nIGFuIExEQVAgcmVxdWVzdCBmb3IgdGhlCiAgICBzcGVjaWZpZWQgYW1vdW50IG9mIHRpbWUuICBTZXR0aW5nIHRoaXMgZGlyZWN0aXZlIHRvIDAgd2lsbAogICAgcmVzdWx0IGluIGFueSByZXRyeSB0byBvY2N1ciB3aXRob3V0IGRlbGF5LjwvcD4KCiAgICA8cD5MREFQIGVycm9ycyBzdWNoIGFzIHRpbWVvdXRzIGFuZCByZWZ1c2VkIGNvbm5lY3Rpb25zIGFyZSByZXRyeWFibGUuPC9wPgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkxEQVBTaGFyZWRDYWNoZUZpbGUiIGlkPSJMREFQU2hhcmVkQ2FjaGVGaWxlIj5MREFQU2hhcmVkQ2FjaGVGaWxlPC9hPiA8YSBuYW1lPSJsZGFwc2hhcmVkY2FjaGVmaWxlIiBpZD0ibGRhcHNoYXJlZGNhY2hlZmlsZSI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+U2V0cyB0aGUgc2hhcmVkIG1lbW9yeSBjYWNoZSBmaWxlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkxEQVBTaGFyZWRDYWNoZUZpbGUgPHZhcj5kaXJlY3RvcnktcGF0aC9maWxlbmFtZTwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVuc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfbGRhcDwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPlNwZWNpZmllcyB0aGUgZGlyZWN0b3J5IHBhdGggYW5kIGZpbGUgbmFtZSBvZiB0aGUgc2hhcmVkIG1lbW9yeQogICAgY2FjaGUgZmlsZS4gSWYgbm90IHNldCwgYW5vbnltb3VzIHNoYXJlZCBtZW1vcnkgd2lsbCBiZSB1c2VkIGlmIHRoZQogICAgcGxhdGZvcm0gc3VwcG9ydHMgaXQuPC9wPgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkxEQVBTaGFyZWRDYWNoZVNpemUiIGlkPSJMREFQU2hhcmVkQ2FjaGVTaXplIj5MREFQU2hhcmVkQ2FjaGVTaXplPC9hPiA8YSBuYW1lPSJsZGFwc2hhcmVkY2FjaGVzaXplIiBpZD0ibGRhcHNoYXJlZGNhY2hlc2l6ZSI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+U2l6ZSBpbiBieXRlcyBvZiB0aGUgc2hhcmVkLW1lbW9yeSBjYWNoZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5MREFQU2hhcmVkQ2FjaGVTaXplIDx2YXI+Ynl0ZXM8L3Zhcj48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+TERBUFNoYXJlZENhY2hlU2l6ZSA1MDAwMDA8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2xkYXA8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5TcGVjaWZpZXMgdGhlIG51bWJlciBvZiBieXRlcyB0byBhbGxvY2F0ZSBmb3IgdGhlIHNoYXJlZAogICAgbWVtb3J5IGNhY2hlLiBUaGUgZGVmYXVsdCBpcyA1MDBrYi4gSWYgc2V0IHRvIDAsIHNoYXJlZCBtZW1vcnkKICAgIGNhY2hpbmcgd2lsbCBub3QgYmUgdXNlZCBhbmQgZXZlcnkgSFRUUEQgcHJvY2VzcyB3aWxsIGNyZWF0ZSBpdHMKICAgIG93biBjYWNoZS48L3A+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iTERBUFRpbWVvdXQiIGlkPSJMREFQVGltZW91dCI+TERBUFRpbWVvdXQ8L2E+IDxhIG5hbWU9ImxkYXB0aW1lb3V0IiBpZD0ibGRhcHRpbWVvdXQiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlNwZWNpZmllcyB0aGUgdGltZW91dCBmb3IgTERBUCBzZWFyY2ggYW5kIGJpbmQgb3BlcmF0aW9ucywgaW4gc2Vjb25kczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5MREFQVGltZW91dCA8dmFyPnNlY29uZHM8L3Zhcj48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+TERBUFRpbWVvdXQgNjA8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2xkYXA8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb21wYXRpYmlsaXR5Ij5Db21wYXRpYmlsaXR5OjwvYT48L3RoPjx0ZD5BcGFjaGUgSFRUUCBTZXJ2ZXIgMi4zLjUgYW5kIGxhdGVyPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhpcyBkaXJlY3RpdmUgY29uZmlndXJlcyB0aGUgdGltZW91dCBmb3IgYmluZCBhbmQgc2VhcmNoIG9wZXJhdGlvbnMsIGFzIHdlbGwgYXMKICAgIHRoZSBMREFQX09QVF9USU1FT1VUIG9wdGlvbiBpbiB0aGUgdW5kZXJseWluZyBMREFQIGNsaWVudCBsaWJyYXJ5LCB3aGVuIGF2YWlsYWJsZS48L3A+CgogICAgPHA+IElmIHRoZSB0aW1lb3V0IGV4cGlyZXMsIGh0dHBkIHdpbGwgcmV0cnkgaW4gY2FzZSBhbiBleGlzdGluZyBjb25uZWN0aW9uIGhhcwogICAgYmVlbiBzaWxlbnRseSBkcm9wcGVkIGJ5IGEgZmlyZXdhbGwuIEhvd2V2ZXIsIHBlcmZvcm1hbmNlIHdpbGwgYmUgbXVjaCBiZXR0ZXIgaWYKICAgIHRoZSBmaXJld2FsbCBpcyBjb25maWd1cmVkIHRvIHNlbmQgVENQIFJTVCBwYWNrZXRzIGluc3RlYWQgb2Ygc2lsZW50bHkgZHJvcHBpbmcKICAgIHBhY2tldHMuPC9wPgoKICAgIDxkaXYgY2xhc3M9Im5vdGUiPgogICAgPHA+VGltZW91dHMgZm9yIGxkYXAgY29tcGFyZSBvcGVyYXRpb25zIHJlcXVpcmVzIGFuIFNESyB3aXRoIExEQVBfT1BUX1RJTUVPVVQsIHN1Y2ggYXMgT3BlbkxEQVAgJmd0Oz0gMi40LjQuPC9wPgogICAgPC9kaXY+CgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkxEQVBUcnVzdGVkQ2xpZW50Q2VydCIgaWQ9IkxEQVBUcnVzdGVkQ2xpZW50Q2VydCI+TERBUFRydXN0ZWRDbGllbnRDZXJ0PC9hPiA8YSBuYW1lPSJsZGFwdHJ1c3RlZGNsaWVudGNlcnQiIGlkPSJsZGFwdHJ1c3RlZGNsaWVudGNlcnQiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlNldHMgdGhlIGZpbGUgY29udGFpbmluZyBvciBuaWNrbmFtZSByZWZlcnJpbmcgdG8gYSBwZXIKY29ubmVjdGlvbiBjbGllbnQgY2VydGlmaWNhdGUuIE5vdCBhbGwgTERBUCB0b29sa2l0cyBzdXBwb3J0IHBlcgpjb25uZWN0aW9uIGNsaWVudCBjZXJ0aWZpY2F0ZXMuPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkxEQVBUcnVzdGVkQ2xpZW50Q2VydCA8dmFyPnR5cGU8L3Zhcj4gPHZhcj5kaXJlY3RvcnktcGF0aC9maWxlbmFtZS9uaWNrbmFtZTwvdmFyPiA8dmFyPltwYXNzd29yZF08L3Zhcj48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+ZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9sZGFwPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+SXQgc3BlY2lmaWVzIHRoZSBkaXJlY3RvcnkgcGF0aCwgZmlsZSBuYW1lIG9yIG5pY2tuYW1lIG9mIGEKICAgIHBlciBjb25uZWN0aW9uIGNsaWVudCBjZXJ0aWZpY2F0ZSB1c2VkIHdoZW4gZXN0YWJsaXNoaW5nIGFuIFNTTAogICAgb3IgVExTIGNvbm5lY3Rpb24gdG8gYW4gTERBUCBzZXJ2ZXIuIERpZmZlcmVudCBsb2NhdGlvbnMgb3IKICAgIGRpcmVjdG9yaWVzIG1heSBoYXZlIHRoZWlyIG93biBpbmRlcGVuZGVudCBjbGllbnQgY2VydGlmaWNhdGUKICAgIHNldHRpbmdzLiBTb21lIExEQVAgdG9vbGtpdHMgKG5vdGFibHkgTm92ZWxsKQogICAgZG8gbm90IHN1cHBvcnQgcGVyIGNvbm5lY3Rpb24gY2xpZW50IGNlcnRpZmljYXRlcywgYW5kIHdpbGwgdGhyb3cgYW4KICAgIGVycm9yIG9uIExEQVAgc2VydmVyIGNvbm5lY3Rpb24gaWYgeW91IHRyeSB0byB1c2UgdGhpcyBkaXJlY3RpdmUKICAgIChVc2UgdGhlIExEQVBUcnVzdGVkR2xvYmFsQ2VydCBkaXJlY3RpdmUgaW5zdGVhZCBmb3IgTm92ZWxsIGNsaWVudAogICAgY2VydGlmaWNhdGVzIC0gU2VlIHRoZSBTU0wvVExTIGNlcnRpZmljYXRlIGd1aWRlIGFib3ZlIGZvciBkZXRhaWxzKS4KICAgIFRoZSB0eXBlIHNwZWNpZmllcyB0aGUga2luZCBvZiBjZXJ0aWZpY2F0ZSBwYXJhbWV0ZXIgYmVpbmcKICAgIHNldCwgZGVwZW5kaW5nIG9uIHRoZSBMREFQIHRvb2xraXQgYmVpbmcgdXNlZC4gU3VwcG9ydGVkIHR5cGVzIGFyZTo8L3A+CiAgICA8dWw+CiAgICAgIDxsaT5DQV9ERVIgLSBiaW5hcnkgREVSIGVuY29kZWQgQ0EgY2VydGlmaWNhdGU8L2xpPgogICAgICA8bGk+Q0FfQkFTRTY0IC0gUEVNIGVuY29kZWQgQ0EgY2VydGlmaWNhdGU8L2xpPgogICAgICA8bGk+Q0VSVF9ERVIgLSBiaW5hcnkgREVSIGVuY29kZWQgY2xpZW50IGNlcnRpZmljYXRlPC9saT4KICAgICAgPGxpPkNFUlRfQkFTRTY0IC0gUEVNIGVuY29kZWQgY2xpZW50IGNlcnRpZmljYXRlPC9saT4KICAgICAgPGxpPkNFUlRfTklDS05BTUUgLSBDbGllbnQgY2VydGlmaWNhdGUgIm5pY2tuYW1lIiAoTmV0c2NhcGUgU0RLKTwvbGk+CiAgICAgIDxsaT5LRVlfREVSIC0gYmluYXJ5IERFUiBlbmNvZGVkIHByaXZhdGUga2V5PC9saT4KICAgICAgPGxpPktFWV9CQVNFNjQgLSBQRU0gZW5jb2RlZCBwcml2YXRlIGtleTwvbGk+CiAgICA8L3VsPgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkxEQVBUcnVzdGVkR2xvYmFsQ2VydCIgaWQ9IkxEQVBUcnVzdGVkR2xvYmFsQ2VydCI+TERBUFRydXN0ZWRHbG9iYWxDZXJ0PC9hPiA8YSBuYW1lPSJsZGFwdHJ1c3RlZGdsb2JhbGNlcnQiIGlkPSJsZGFwdHJ1c3RlZGdsb2JhbGNlcnQiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlNldHMgdGhlIGZpbGUgb3IgZGF0YWJhc2UgY29udGFpbmluZyBnbG9iYWwgdHJ1c3RlZApDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgb3IgZ2xvYmFsIGNsaWVudCBjZXJ0aWZpY2F0ZXM8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+TERBUFRydXN0ZWRHbG9iYWxDZXJ0IDx2YXI+dHlwZTwvdmFyPiA8dmFyPmRpcmVjdG9yeS1wYXRoL2ZpbGVuYW1lPC92YXI+IDx2YXI+W3Bhc3N3b3JkXTwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVuc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfbGRhcDwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPkl0IHNwZWNpZmllcyB0aGUgZGlyZWN0b3J5IHBhdGggYW5kIGZpbGUgbmFtZSBvZiB0aGUgdHJ1c3RlZCBDQQogICAgY2VydGlmaWNhdGVzIGFuZC9vciBzeXN0ZW0gd2lkZSBjbGllbnQgY2VydGlmaWNhdGVzIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfbGRhcC5odG1sIj5tb2RfbGRhcDwvYT48L2NvZGU+CiAgICBzaG91bGQgdXNlIHdoZW4gZXN0YWJsaXNoaW5nIGFuIFNTTCBvciBUTFMgY29ubmVjdGlvbiB0byBhbiBMREFQCiAgICBzZXJ2ZXIuIE5vdGUgdGhhdCBhbGwgY2VydGlmaWNhdGUgaW5mb3JtYXRpb24gc3BlY2lmaWVkIHVzaW5nIHRoaXMgZGlyZWN0aXZlCiAgICBpcyBhcHBsaWVkIGdsb2JhbGx5IHRvIHRoZSBlbnRpcmUgc2VydmVyIGluc3RhbGxhdGlvbi4gU29tZSBMREFQIHRvb2xraXRzCiAgICAobm90YWJseSBOb3ZlbGwpIHJlcXVpcmUgYWxsIGNsaWVudCBjZXJ0aWZpY2F0ZXMgdG8gYmUgc2V0IGdsb2JhbGx5IHVzaW5nCiAgICB0aGlzIGRpcmVjdGl2ZS4gTW9zdCBvdGhlciB0b29sa2l0cyByZXF1aXJlIGNsaWVudHMgY2VydGlmaWNhdGVzIHRvIGJlIHNldAogICAgcGVyIERpcmVjdG9yeSBvciBwZXIgTG9jYXRpb24gdXNpbmcgTERBUFRydXN0ZWRDbGllbnRDZXJ0LiBJZiB5b3UgZ2V0IHRoaXMKICAgIHdyb25nLCBhbiBlcnJvciBtYXkgYmUgbG9nZ2VkIHdoZW4gYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGNvbnRhY3QgdGhlIExEQVAKICAgIHNlcnZlciwgb3IgdGhlIGNvbm5lY3Rpb24gbWF5IHNpbGVudGx5IGZhaWwgKFNlZSB0aGUgU1NML1RMUyBjZXJ0aWZpY2F0ZQogICAgZ3VpZGUgYWJvdmUgZm9yIGRldGFpbHMpLgogICAgVGhlIHR5cGUgc3BlY2lmaWVzIHRoZSBraW5kIG9mIGNlcnRpZmljYXRlIHBhcmFtZXRlciBiZWluZwogICAgc2V0LCBkZXBlbmRpbmcgb24gdGhlIExEQVAgdG9vbGtpdCBiZWluZyB1c2VkLiBTdXBwb3J0ZWQgdHlwZXMgYXJlOjwvcD4KICAgIDx1bD4KICAgICAgPGxpPkNBX0RFUiAtIGJpbmFyeSBERVIgZW5jb2RlZCBDQSBjZXJ0aWZpY2F0ZTwvbGk+CiAgICAgIDxsaT5DQV9CQVNFNjQgLSBQRU0gZW5jb2RlZCBDQSBjZXJ0aWZpY2F0ZTwvbGk+CiAgICAgIDxsaT5DQV9DRVJUN19EQiAtIE5ldHNjYXBlIGNlcnQ3LmRiIENBIGNlcnRpZmljYXRlIGRhdGFiYXNlIGZpbGU8L2xpPgogICAgICA8bGk+Q0FfU0VDTU9EIC0gTmV0c2NhcGUgc2VjbW9kIGRhdGFiYXNlIGZpbGU8L2xpPgogICAgICA8bGk+Q0VSVF9ERVIgLSBiaW5hcnkgREVSIGVuY29kZWQgY2xpZW50IGNlcnRpZmljYXRlPC9saT4KICAgICAgPGxpPkNFUlRfQkFTRTY0IC0gUEVNIGVuY29kZWQgY2xpZW50IGNlcnRpZmljYXRlPC9saT4KICAgICAgPGxpPkNFUlRfS0VZM19EQiAtIE5ldHNjYXBlIGtleTMuZGIgY2xpZW50IGNlcnRpZmljYXRlIGRhdGFiYXNlIGZpbGU8L2xpPgogICAgICA8bGk+Q0VSVF9OSUNLTkFNRSAtIENsaWVudCBjZXJ0aWZpY2F0ZSAibmlja25hbWUiIChOZXRzY2FwZSBTREspPC9saT4KICAgICAgPGxpPkNFUlRfUEZYIC0gUEtDUyMxMiBlbmNvZGVkIGNsaWVudCBjZXJ0aWZpY2F0ZSAoTm92ZWxsIFNESyk8L2xpPgogICAgICA8bGk+S0VZX0RFUiAtIGJpbmFyeSBERVIgZW5jb2RlZCBwcml2YXRlIGtleTwvbGk+CiAgICAgIDxsaT5LRVlfQkFTRTY0IC0gUEVNIGVuY29kZWQgcHJpdmF0ZSBrZXk8L2xpPgogICAgICA8bGk+S0VZX1BGWCAtIFBLQ1MjMTIgZW5jb2RlZCBwcml2YXRlIGtleSAoTm92ZWxsIFNESyk8L2xpPgogICAgPC91bD4KCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJMREFQVHJ1c3RlZE1vZGUiIGlkPSJMREFQVHJ1c3RlZE1vZGUiPkxEQVBUcnVzdGVkTW9kZTwvYT4gPGEgbmFtZT0ibGRhcHRydXN0ZWRtb2RlIiBpZD0ibGRhcHRydXN0ZWRtb2RlIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5TcGVjaWZpZXMgdGhlIFNTTC9UTFMgbW9kZSB0byBiZSB1c2VkIHdoZW4gY29ubmVjdGluZyB0byBhbiBMREFQIHNlcnZlci48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+TERBUFRydXN0ZWRNb2RlIDx2YXI+dHlwZTwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnLCB2aXJ0dWFsIGhvc3Q8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9sZGFwPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhlIGZvbGxvd2luZyBtb2RlcyBhcmUgc3VwcG9ydGVkOjwvcD4KICAgIDx1bD4KICAgICAgPGxpPk5PTkUgLSBubyBlbmNyeXB0aW9uPC9saT4KICAgICAgPGxpPlNTTCAtIGxkYXBzOi8vIGVuY3J5cHRpb24gb24gZGVmYXVsdCBwb3J0IDYzNjwvbGk+CiAgICAgIDxsaT5UTFMgLSBTVEFSVFRMUyBlbmNyeXB0aW9uIG9uIGRlZmF1bHQgcG9ydCAzODk8L2xpPgogICAgPC91bD4KCiAgICA8cD5Ob3QgYWxsIExEQVAgdG9vbGtpdHMgc3VwcG9ydCBhbGwgdGhlIGFib3ZlIG1vZGVzLiBBbiBlcnJvciBtZXNzYWdlCiAgICB3aWxsIGJlIGxvZ2dlZCBhdCBydW50aW1lIGlmIGEgbW9kZSBpcyBub3Qgc3VwcG9ydGVkLCBhbmQgdGhlCiAgICBjb25uZWN0aW9uIHRvIHRoZSBMREFQIHNlcnZlciB3aWxsIGZhaWwuCiAgICA8L3A+CgogICAgPHA+SWYgYW4gbGRhcHM6Ly8gVVJMIGlzIHNwZWNpZmllZCwgdGhlIG1vZGUgYmVjb21lcyBTU0wgYW5kIHRoZSBzZXR0aW5nCiAgICBvZiBMREFQVHJ1c3RlZE1vZGUgaXMgaWdub3JlZC48L3A+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iTERBUFZlcmlmeVNlcnZlckNlcnQiIGlkPSJMREFQVmVyaWZ5U2VydmVyQ2VydCI+TERBUFZlcmlmeVNlcnZlckNlcnQ8L2E+IDxhIG5hbWU9ImxkYXB2ZXJpZnlzZXJ2ZXJjZXJ0IiBpZD0ibGRhcHZlcmlmeXNlcnZlcmNlcnQiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkZvcmNlIHNlcnZlciBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+TERBUFZlcmlmeVNlcnZlckNlcnQgPHZhcj5PbnxPZmY8L3Zhcj48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+TERBUFZlcmlmeVNlcnZlckNlcnQgT248L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2xkYXA8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5TcGVjaWZpZXMgd2hldGhlciB0byBmb3JjZSB0aGUgdmVyaWZpY2F0aW9uIG9mIGEKICAgIHNlcnZlciBjZXJ0aWZpY2F0ZSB3aGVuIGVzdGFibGlzaGluZyBhbiBTU0wgY29ubmVjdGlvbiB0byB0aGUKICAgIExEQVAgc2VydmVyLjwvcD4KCjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iYm90dG9tbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9tb2QvbW9kX2xkYXAuaHRtbCIgdGl0bGU9IkVuZ2xpc2giPiZuYnNwO2VuJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2ZyL21vZC9tb2RfbGRhcC5odG1sIiBocmVmbGFuZz0iZnIiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRnJhbudhaXMiPiZuYnNwO2ZyJm5ic3A7PC9hPjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiBhbHQ9InRvcCIgLz48L2E+PC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGgyPjxhIGlkPSJjb21tZW50c19zZWN0aW9uIiBuYW1lPSJjb21tZW50c19zZWN0aW9uIj5Db21tZW50czwvYT48L2gyPjxkaXYgY2xhc3M9Indhcm5pbmciPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPjxiciAvPlRoaXMgaXMgbm90IGEgUSZhbXA7QSBzZWN0aW9uLiBDb21tZW50cyBwbGFjZWQgaGVyZSBzaG91bGQgYmUgcG9pbnRlZCB0b3dhcmRzIHN1Z2dlc3Rpb25zIG9uIGltcHJvdmluZyB0aGUgZG9jdW1lbnRhdGlvbiBvciBzZXJ2ZXIsIGFuZCBtYXkgYmUgcmVtb3ZlZCBhZ2FpbiBieSBvdXIgbW9kZXJhdG9ycyBpZiB0aGV5IGFyZSBlaXRoZXIgaW1wbGVtZW50ZWQgb3IgY29uc2lkZXJlZCBpbnZhbGlkL29mZi10b3BpYy4gUXVlc3Rpb25zIG9uIGhvdyB0byBtYW5hZ2UgdGhlIEFwYWNoZSBIVFRQIFNlcnZlciBzaG91bGQgYmUgZGlyZWN0ZWQgYXQgZWl0aGVyIG91ciBJUkMgY2hhbm5lbCwgI2h0dHBkLCBvbiBGcmVlbm9kZSwgb3Igc2VudCB0byBvdXIgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvbGlzdHMuaHRtbCI+bWFpbGluZyBsaXN0czwvYT4uPC9kaXY+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tLy8tLT48IVtDREFUQVsvLz48IS0tCnZhciBjb21tZW50c19zaG9ydG5hbWUgPSAnaHR0cGQnOwp2YXIgY29tbWVudHNfaWRlbnRpZmllciA9ICdodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLzIuNC9tb2QvbW9kX2xkYXAuaHRtbCc7CihmdW5jdGlvbih3LCBkKSB7CiAgICBpZiAody5sb2NhdGlvbi5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpID09ICJodHRwZC5hcGFjaGUub3JnIikgewogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+PFwvZGl2PicpOwogICAgICAgIHZhciBzID0gZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgICBzLmFzeW5jID0gdHJ1ZTsKICAgICAgICBzLnNyYyA9ICdodHRwczovL2NvbW1lbnRzLmFwYWNoZS5vcmcvc2hvd19jb21tZW50cy5sdWE/c2l0ZT0nICsgY29tbWVudHNfc2hvcnRuYW1lICsgJyZwYWdlPScgKyBjb21tZW50c19pZGVudGlmaWVyOwogICAgICAgIChkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0gfHwgZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdKS5hcHBlbmRDaGlsZChzKTsKICAgIH0KICAgIGVsc2UgeyAKICAgICAgICBkLndyaXRlKCc8ZGl2IGlkPSJjb21tZW50c190aHJlYWQiPkNvbW1lbnRzIGFyZSBkaXNhYmxlZCBmb3IgdGhpcyBwYWdlIGF0IHRoZSBtb21lbnQuPFwvZGl2PicpOwogICAgfQp9KSh3aW5kb3csIGRvY3VtZW50KTsKLy8tLT48IV1dPjwvc2NyaXB0PjwvZGl2PjxkaXYgaWQ9ImZvb3RlciI+CjxwIGNsYXNzPSJhcGFjaGUiPkNvcHlyaWdodCAyMDE4IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi48YnIgLz5MaWNlbnNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIj5BcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjA8L2E+LjwvcD4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4uL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL2RpcmVjdGl2ZXMuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSJodHRwOi8vd2lraS5hcGFjaGUub3JnL2h0dHBkL0ZBUSI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwiPkdsb3NzYXJ5PC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+U2l0ZW1hcDwvYT48L3A+PC9kaXY+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0vLy0tPjwhW0NEQVRBWy8vPjwhLS0KaWYgKHR5cGVvZihwcmV0dHlQcmludCkgIT09ICd1bmRlZmluZWQnKSB7CiAgICBwcmV0dHlQcmludCgpOwp9Ci8vLS0+PCFdXT48L3NjcmlwdD4KPC9ib2R5PjwvaHRtbD4=