PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD4KPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KPCEtLQogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIHhtbCBzb3VyY2U6IERPIE5PVCBFRElUCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgLS0+Cjx0aXRsZT5tb2Rfc2xvdG1lbV9zaG0gLSBBcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjQ8L3RpdGxlPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiB0eXBlPSJ0ZXh0L2NzcyIgdGl0bGU9Ik1haW4gc3R5bGVzaGVldCIgLz4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC1sb29zZS0xMDBwYy5jc3MiIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTm8gU2lkZWJhciAtIERlZmF1bHQgZm9udCBzaXplIiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLXByaW50LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0icHJpbnQiIHR5cGU9InRleHQvY3NzIiAvPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlL2Nzcy9wcmV0dGlmeS5jc3MiIC8+CjxzY3JpcHQgc3JjPSIuLi9zdHlsZS9zY3JpcHRzL3ByZXR0aWZ5Lm1pbi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPC9zY3JpcHQ+Cgo8bGluayBocmVmPSIuLi9pbWFnZXMvZmF2aWNvbi5pY28iIHJlbD0ic2hvcnRjdXQgaWNvbiIgLz48L2hlYWQ+Cjxib2R5Pgo8ZGl2IGlkPSJwYWdlLWhlYWRlciI+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuLi9tb2QvIj5Nb2R1bGVzPC9hPiB8IDxhIGhyZWY9Ii4uL21vZC9kaXJlY3RpdmVzLmh0bWwiPkRpcmVjdGl2ZXM8L2E+IHwgPGEgaHJlZj0iaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9GQVEiPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPgo8cCBjbGFzcz0iYXBhY2hlIj5BcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjQ8L3A+CjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2ZlYXRoZXIucG5nIiAvPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ1cCI+PGEgaHJlZj0iLi8iPjxpbWcgdGl0bGU9IiZsdDstIiBhbHQ9IiZsdDstIiBzcmM9Ii4uL2ltYWdlcy9sZWZ0LmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgaWQ9InBhdGgiPgo8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BcGFjaGU8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIj5IVFRQIFNlcnZlcjwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLyI+RG9jdW1lbnRhdGlvbjwvYT4gJmd0OyA8YSBocmVmPSIuLi8iPlZlcnNpb24gMi40PC9hPiAmZ3Q7IDxhIGhyZWY9Ii4vIj5Nb2R1bGVzPC9hPjwvZGl2Pgo8ZGl2IGlkPSJwYWdlLWNvbnRlbnQiPgo8ZGl2IGlkPSJwcmVhbWJsZSI+PGgxPkFwYWNoZSBNb2R1bGUgbW9kX3Nsb3RtZW1fc2htPC9oMT4KPGRpdiBjbGFzcz0idG9wbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9tb2QvbW9kX3Nsb3RtZW1fc2htLmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9mci9tb2QvbW9kX3Nsb3RtZW1fc2htLmh0bWwiIGhyZWZsYW5nPSJmciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJGcmFu52FpcyI+Jm5ic3A7ZnImbmJzcDs8L2E+PC9wPgo8L2Rpdj4KPHRhYmxlIGNsYXNzPSJtb2R1bGUiPjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlNsb3QtYmFzZWQgc2hhcmVkIG1lbW9yeSBwcm92aWRlci48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9Im1vZHVsZS1kaWN0Lmh0bWwjTW9kdWxlSWRlbnRpZmllciI+TW9kdWxloElkZW50aWZpZXI6PC9hPjwvdGg+PHRkPnNsb3RtZW1fc2htX21vZHVsZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI1NvdXJjZUZpbGUiPlNvdXJjZaBGaWxlOjwvYT48L3RoPjx0ZD5tb2Rfc2xvdG1lbV9zaG0uYzwvdGQ+PC90cj48L3RhYmxlPgo8aDM+U3VtbWFyeTwvaDM+CgogICAgPHA+PGNvZGU+bW9kX3Nsb3RtZW1fc2htPC9jb2RlPiBpcyBhIG1lbW9yeSBwcm92aWRlciB3aGljaAogICAgcHJvdmlkZXMgZm9yIGNyZWF0aW9uIGFuZCBhY2Nlc3MgdG8gYSBzaGFyZWQgbWVtb3J5IHNlZ21lbnQKICAgIGluIHdoaWNoIHRoZSBkYXRhc2V0cyBhcmUgb3JnYW5pemVkIGluICJzbG90cy4iCiAgICA8L3A+CgogICAgPHA+QWxsIHNoYXJlZCBtZW1vcnkgaXMgY2xlYXJlZCBhbmQgY2xlYW5lZCB3aXRoIGVhY2gKICAgIHJlc3RhcnQsIHdoZXRoZXIgZ3JhY2VmdWwgb3Igbm90LiBUaGUgZGF0YSBpdHNlbGYgaXMKICAgIHN0b3JlZCBhbmQgcmVzdG9yZWQgd2l0aGluIGEgZmlsZSBub3RlZCBieSB0aGUgPGNvZGU+bmFtZTwvY29kZT4KICAgIHBhcmFtZXRlciBpbiB0aGUgPGNvZGU+Y3JlYXRlPC9jb2RlPiBhbmQgPGNvZGU+YXR0YWNoPC9jb2RlPgogICAgY2FsbHMuIElmIG5vdCBzcGVjaWZpZWQgd2l0aCBhbiBhYnNvbHV0ZSBwYXRoLCB0aGUgZmlsZSB3aWxsIGJlCiAgICBjcmVhdGVkIHJlbGF0aXZlIHRvIHRoZSBwYXRoIHNwZWNpZmllZCBieSB0aGUKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9jb3JlLmh0bWwjZGVmYXVsdHJ1bnRpbWVkaXIiPkRlZmF1bHRSdW50aW1lRGlyPC9hPjwvY29kZT4gZGlyZWN0aXZlLgogICAgPC9wPgoKICAgIDxwPjxjb2RlPm1vZF9zbG90bWVtX3NobTwvY29kZT4gcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBBUEkgZnVuY3Rpb25zOgogICAgPC9wPgoKICAgIDxkbD4KICAgICAgPGR0PmFwcl9zdGF0dXNfdCBkb2FsbChhcF9zbG90bWVtX2luc3RhbmNlX3QgKnMsIGFwX3Nsb3RtZW1fY2FsbGJhY2tfZm5fdCAqZnVuYywgdm9pZCAqZGF0YSwgYXByX3Bvb2xfdCAqcG9vbCk8L2R0PgogICAgICA8ZGQ+Y2FsbCB0aGUgY2FsbGJhY2sgb24gYWxsIHdvcmtlciBzbG90czwvZGQ+CgogICAgICA8ZHQ+YXByX3N0YXR1c190IGNyZWF0ZShhcF9zbG90bWVtX2luc3RhbmNlX3QgKipuZXcsIGNvbnN0IGNoYXIgKm5hbWUsIGFwcl9zaXplX3QgaXRlbV9zaXplLCB1bnNpZ25lZCBpbnQgaXRlbV9udW0sIGFwX3Nsb3RtZW1fdHlwZV90IHR5cGUsIGFwcl9wb29sX3QgKnBvb2wpPC9kdD4KICAgICAgPGRkPmNyZWF0ZSBhIG5ldyBzbG90bWVtIHdpdGggZWFjaCBpdGVtIHNpemUgaXMgaXRlbV9zaXplLiA8Y29kZT5uYW1lPC9jb2RlPiBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgZmlsZW5hbWUgZm9yIHRoZSBwZXJzaXN0ZW50IHN0b3JlIG9mCiAgICAgIHRoZSBzaGFyZWQgbWVtb3J5IGlmIGNvbmZpZ3VyZWQuIFZhbHVlcyBhcmU6CiAgICAgICA8ZGw+CiAgICAgICAgIDxkdD48Y29kZT4ibm9uZSI8L2NvZGU+PC9kdD4KICAgICAgICAgPGRkPjxjb2RlPkFub255bW91cyBzaGFyZWQgbWVtb3J5IGFuZCBubyBwZXJzaXN0ZW50IHN0b3JlPC9jb2RlPjwvZGQ+CiAgICAgICAgIDxkdD48Y29kZT4iZmlsZS1uYW1lIjwvY29kZT48L2R0PgogICAgICAgICA8ZGQ+PGNvZGU+W0RlZmF1bHRSdW50aW1lRGlyXS9maWxlLW5hbWU8L2NvZGU+PC9kZD4KICAgICAgICAgPGR0Pjxjb2RlPiIvYWJzb2x1dGUtZmlsZS1uYW1lIjwvY29kZT48L2R0PgogICAgICAgICA8ZGQ+PGNvZGU+QWJzb2x1dGUgZmlsZSBuYW1lPC9jb2RlPjwvZGQ+CiAgICAgICA8L2RsPjwvZGQ+CgogICAgICA8ZHQ+YXByX3N0YXR1c190IGF0dGFjaChhcF9zbG90bWVtX2luc3RhbmNlX3QgKipuZXcsIGNvbnN0IGNoYXIgKm5hbWUsIGFwcl9zaXplX3QgKml0ZW1fc2l6ZSwgdW5zaWduZWQgaW50ICppdGVtX251bSwgYXByX3Bvb2xfdCAqcG9vbCk8L2R0PgogICAgICA8ZGQ+YXR0YWNoIHRvIGFuIGV4aXN0aW5nIHNsb3RtZW0uIFNlZSA8Y29kZT5jcmVhdGU8L2NvZGU+IGZvciBkZXNjcmlwdGlvbiBvZiA8Y29kZT5uYW1lPC9jb2RlPiBwYXJhbWV0ZXIuPC9kZD4KCiAgICAgIDxkdD5hcHJfc3RhdHVzX3QgZHB0cihhcF9zbG90bWVtX2luc3RhbmNlX3QgKnMsIHVuc2lnbmVkIGludCBpdGVtX2lkLCB2b2lkKiptZW0pPC9kdD4KICAgICAgPGRkPmdldCB0aGUgZGlyZWN0IHBvaW50ZXIgdG8gdGhlIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggdGhpcyB3b3JrZXIgc2xvdC48L2RkPgoKICAgICAgPGR0PmFwcl9zdGF0dXNfdCBnZXQoYXBfc2xvdG1lbV9pbnN0YW5jZV90ICpzLCB1bnNpZ25lZCBpbnQgaXRlbV9pZCwgdW5zaWduZWQgY2hhciAqZGVzdCwgYXByX3NpemVfdCBkZXN0X2xlbik8L2R0PgogICAgICA8ZGQ+Z2V0L3JlYWQgdGhlIG1lbW9yeSBmcm9tIHRoaXMgc2xvdCB0byBkZXN0PC9kZD4KCiAgICAgIDxkdD5hcHJfc3RhdHVzX3QgcHV0KGFwX3Nsb3RtZW1faW5zdGFuY2VfdCAqc2xvdCwgdW5zaWduZWQgaW50IGl0ZW1faWQsIHVuc2lnbmVkIGNoYXIgKnNyYywgYXByX3NpemVfdCBzcmNfbGVuKTwvZHQ+CiAgICAgIDxkZD5wdXQvd3JpdGUgdGhlIGRhdGEgZnJvbSBzcmMgdG8gdGhpcyBzbG90PC9kZD4KCiAgICAgIDxkdD51bnNpZ25lZCBpbnQgbnVtX3Nsb3RzKGFwX3Nsb3RtZW1faW5zdGFuY2VfdCAqcyk8L2R0PgogICAgICA8ZGQ+cmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2Ygc2xvdHMgaW4gdGhlIHNlZ21lbnQ8L2RkPgoKICAgICAgPGR0PmFwcl9zaXplX3Qgc2xvdF9zaXplKGFwX3Nsb3RtZW1faW5zdGFuY2VfdCAqcyk8L2R0PgogICAgICA8ZGQ+cmV0dXJuIHRoZSB0b3RhbCBkYXRhIHNpemUsIGluIGJ5dGVzLCBvZiBhIHNsb3QgaW4gdGhlIHNlZ21lbnQ8L2RkPgoKICAgICAgPGR0PmFwcl9zdGF0dXNfdCBncmFiKGFwX3Nsb3RtZW1faW5zdGFuY2VfdCAqcywgdW5zaWduZWQgaW50ICppdGVtX2lkKTs8L2R0PgogICAgICA8ZGQ+Z3JhYiBvciBhbGxvY2F0ZSB0aGUgZmlyc3QgZnJlZSBzbG90IGFuZCBtYXJrIGFzIGluLXVzZSAoZG9lcyBub3QgZG8gYW55IGRhdGEgY29weWluZyk8L2RkPgoKICAgICAgPGR0PmFwcl9zdGF0dXNfdCBmZ3JhYihhcF9zbG90bWVtX2luc3RhbmNlX3QgKnMsIHVuc2lnbmVkIGludCBpdGVtX2lkKTs8L2R0PgogICAgICA8ZGQ+Zm9yY2VkIGdyYWIgb3IgYWxsb2NhdGUgdGhlIHNwZWNpZmllZCBzbG90IGFuZCBtYXJrIGFzIGluLXVzZSAoZG9lcyBub3QgZG8gYW55IGRhdGEgY29weWluZyk8L2RkPgoKICAgICAgPGR0PmFwcl9zdGF0dXNfdCByZWxlYXNlKGFwX3Nsb3RtZW1faW5zdGFuY2VfdCAqcywgdW5zaWduZWQgaW50IGl0ZW1faWQpOzwvZHQ+CiAgICAgIDxkZD5yZWxlYXNlIG9yIGZyZWUgYSBzbG90IGFuZCBtYXJrIGFzIG5vdCBpbi11c2UgKGRvZXMgbm90IGRvIGFueSBkYXRhIGNvcHlpbmcpPC9kZD4KICAgIDwvZGw+Cgo8L2Rpdj4KPGRpdiBpZD0icXVpY2t2aWV3Ij48aDMgY2xhc3M9ImRpcmVjdGl2ZXMiPkRpcmVjdGl2ZXM8L2gzPgo8cD5UaGlzIG1vZHVsZSBwcm92aWRlcyBubwogICAgICAgICAgICBkaXJlY3RpdmVzLjwvcD4KPGgzPkJ1Z2ZpeCBjaGVja2xpc3Q8L2gzPjx1bCBjbGFzcz0ic2VlYWxzbyI+PGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZGlzdC9odHRwZC9DSEFOR0VTXzIuNCI+aHR0cGQgY2hhbmdlbG9nPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vYnouYXBhY2hlLm9yZy9idWd6aWxsYS9idWdsaXN0LmNnaT9idWdfc3RhdHVzPV9fb3Blbl9fJmFtcDtsaXN0X2lkPTE0NDUzMiZhbXA7cHJvZHVjdD1BcGFjaGUlMjBodHRwZC0yJmFtcDtxdWVyeV9mb3JtYXQ9c3BlY2lmaWMmYW1wO29yZGVyPWNoYW5nZWRkYXRlJTIwREVTQyUyQ3ByaW9yaXR5JTJDYnVnX3NldmVyaXR5JmFtcDtjb21wb25lbnQ9bW9kX3Nsb3RtZW1fc2htIj5Lbm93biBpc3N1ZXM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9iei5hcGFjaGUub3JnL2J1Z3ppbGxhL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1BcGFjaGUlMjBodHRwZC0yJmFtcDtjb21wb25lbnQ9bW9kX3Nsb3RtZW1fc2htIj5SZXBvcnQgYSBidWc8L2E+PC9saT48L3VsPjxoMz5TZWUgYWxzbzwvaDM+Cjx1bCBjbGFzcz0ic2VlYWxzbyI+CjxsaT48YSBocmVmPSIjY29tbWVudHNfc2VjdGlvbiI+Q29tbWVudHM8L2E+PC9saT48L3VsPjwvZGl2PgoKPC9kaXY+CjxkaXYgY2xhc3M9ImJvdHRvbWxhbmciPgo8cD48c3Bhbj5BdmFpbGFibGUgTGFuZ3VhZ2VzOiA8L3NwYW4+PGEgaHJlZj0iLi4vZW4vbW9kL21vZF9zbG90bWVtX3NobS5odG1sIiB0aXRsZT0iRW5nbGlzaCI+Jm5ic3A7ZW4mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4vZnIvbW9kL21vZF9zbG90bWVtX3NobS5odG1sIiBocmVmbGFuZz0iZnIiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRnJhbudhaXMiPiZuYnNwO2ZyJm5ic3A7PC9hPjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiBhbHQ9InRvcCIgLz48L2E+PC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGgyPjxhIGlkPSJjb21tZW50c19zZWN0aW9uIiBuYW1lPSJjb21tZW50c19zZWN0aW9uIj5Db21tZW50czwvYT48L2gyPjxkaXYgY2xhc3M9Indhcm5pbmciPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPjxiciAvPlRoaXMgaXMgbm90IGEgUSZhbXA7QSBzZWN0aW9uLiBDb21tZW50cyBwbGFjZWQgaGVyZSBzaG91bGQgYmUgcG9pbnRlZCB0b3dhcmRzIHN1Z2dlc3Rpb25zIG9uIGltcHJvdmluZyB0aGUgZG9jdW1lbnRhdGlvbiBvciBzZXJ2ZXIsIGFuZCBtYXkgYmUgcmVtb3ZlZCBhZ2FpbiBieSBvdXIgbW9kZXJhdG9ycyBpZiB0aGV5IGFyZSBlaXRoZXIgaW1wbGVtZW50ZWQgb3IgY29uc2lkZXJlZCBpbnZhbGlkL29mZi10b3BpYy4gUXVlc3Rpb25zIG9uIGhvdyB0byBtYW5hZ2UgdGhlIEFwYWNoZSBIVFRQIFNlcnZlciBzaG91bGQgYmUgZGlyZWN0ZWQgYXQgZWl0aGVyIG91ciBJUkMgY2hhbm5lbCwgI2h0dHBkLCBvbiBGcmVlbm9kZSwgb3Igc2VudCB0byBvdXIgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvbGlzdHMuaHRtbCI+bWFpbGluZyBsaXN0czwvYT4uPC9kaXY+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tLy8tLT48IVtDREFUQVsvLz48IS0tCnZhciBjb21tZW50c19zaG9ydG5hbWUgPSAnaHR0cGQnOwp2YXIgY29tbWVudHNfaWRlbnRpZmllciA9ICdodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLzIuNC9tb2QvbW9kX3Nsb3RtZW1fc2htLmh0bWwnOwooZnVuY3Rpb24odywgZCkgewogICAgaWYgKHcubG9jYXRpb24uaG9zdG5hbWUudG9Mb3dlckNhc2UoKSA9PSAiaHR0cGQuYXBhY2hlLm9yZyIpIHsKICAgICAgICBkLndyaXRlKCc8ZGl2IGlkPSJjb21tZW50c190aHJlYWQiPjxcL2Rpdj4nKTsKICAgICAgICB2YXIgcyA9IGQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICAgICAgcy50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7CiAgICAgICAgcy5hc3luYyA9IHRydWU7CiAgICAgICAgcy5zcmMgPSAnaHR0cHM6Ly9jb21tZW50cy5hcGFjaGUub3JnL3Nob3dfY29tbWVudHMubHVhP3NpdGU9JyArIGNvbW1lbnRzX3Nob3J0bmFtZSArICcmcGFnZT0nICsgY29tbWVudHNfaWRlbnRpZmllcjsKICAgICAgICAoZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdIHx8IGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXSkuYXBwZW5kQ2hpbGQocyk7CiAgICB9CiAgICBlbHNlIHsgCiAgICAgICAgZC53cml0ZSgnPGRpdiBpZD0iY29tbWVudHNfdGhyZWFkIj5Db21tZW50cyBhcmUgZGlzYWJsZWQgZm9yIHRoaXMgcGFnZSBhdCB0aGUgbW9tZW50LjxcL2Rpdj4nKTsKICAgIH0KfSkod2luZG93LCBkb2N1bWVudCk7Ci8vLS0+PCFdXT48L3NjcmlwdD48L2Rpdj48ZGl2IGlkPSJmb290ZXIiPgo8cCBjbGFzcz0iYXBhY2hlIj5Db3B5cmlnaHQgMjAxNiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uPGJyIC8+TGljZW5zZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCI+QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wPC9hPi48L3A+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuLi9tb2QvIj5Nb2R1bGVzPC9hPiB8IDxhIGhyZWY9Ii4uL21vZC9kaXJlY3RpdmVzLmh0bWwiPkRpcmVjdGl2ZXM8L2E+IHwgPGEgaHJlZj0iaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9GQVEiPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPjwvZGl2PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tLy8tLT48IVtDREFUQVsvLz48IS0tCmlmICh0eXBlb2YocHJldHR5UHJpbnQpICE9PSAndW5kZWZpbmVkJykgewogICAgcHJldHR5UHJpbnQoKTsKfQovLy0tPjwhXV0+PC9zY3JpcHQ+CjwvYm9keT48L2h0bWw+