PGhlYWQ+PG1ldGEgY2hhcnNldD0iaXNvLTg4NTktMSI+PC9oZWFkPgo8Ym9keT4KPHA+VGVzdCBob3cgVVJMcyBhcmUgZW5jb2RlZC48L3A+CjxvbCBpZD1yZXN1bHQ+PC9vbD4KPHNjcmlwdD4KICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQogICAgewogICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuYXBwZW5kQ2hpbGQoaXRlbSk7CiAgICB9CgogICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICB9CgogICAgPCEtLSBGaXJlZm94IDMgZW5jb2RlcyBxdWVyeSBwYXJ0IG9mIFhNTEh0dHBSZXF1ZXN0IHJlcXVlc3RzIGFzIFVURi04LCBidXQgV2ViS2l0IGRvZXNuJ3Qgc3BlY2lhbCBjYXNlIHRoZXNlLiAtLT4KICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CiAgICByZXEub3BlbigiR0VUIiwgIi94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvcHJpbnQtcXVlcnkuY2dpP1r8cmljaCIsIGZhbHNlKTsKICAgIHJlcS5zZW5kKCk7CiAgICBsb2coImFicy1wYXRoOiAiICsgKHJlcS5yZXNwb25zZVRleHQgPT0gIlolRkNyaWNoIiA/ICJQQVNTIiA6ICJGQUlMICgiICsgcmVxLnJlc3BvbnNlVGV4dCArICIpIikpOwoKICAgIHJlcS5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3ByaW50LXF1ZXJ5LmNnaT9a/HJpY2giLCBmYWxzZSk7CiAgICByZXEuc2VuZCgpOwogICAgbG9nKCJyZWwtcGF0aDogIiArIChyZXEucmVzcG9uc2VUZXh0ID09ICJaJUZDcmljaCIgPyAiUEFTUyIgOiAiRkFJTCAoIiArIHJlcS5yZXNwb25zZVRleHQgKyAiKSIpKTsKCiAgICByZXEub3BlbigiR0VUIiwgZG9jdW1lbnQuVVJMLnJlcGxhY2UoL2VuY29kZS1yZXF1ZXN0LXVybC0yXC5odG1sLywgIiIpICsgInJlc291cmNlcy9wcmludC1xdWVyeS5jZ2k/WvxyaWNoIiwgZmFsc2UpOwogICAgcmVxLnNlbmQoKTsKICAgIGxvZygiYWJzb2x1dGU6ICIgKyAocmVxLnJlc3BvbnNlVGV4dCA9PSAiWiVGQ3JpY2giID8gIlBBU1MiIDogIkZBSUwgKCIgKyByZXEucmVzcG9uc2VUZXh0ICsgIikiKSk7CgogICAgdmFyIGZyYW1lc0xvYWRlZCA9IDA7CiAgICBmdW5jdGlvbiBmcmFtZUxvYWRlZCgpCiAgICB7CiAgICAgICAgKytmcmFtZXNMb2FkZWQ7CiAgICAgICAgaWYgKGZyYW1lc0xvYWRlZCA9PSAyKSB7CiAgICAgICAgICAgIGxvZygiRnJhbWUsIGFicy1wYXRoOiAiICsgKGZyYW1lc1swXS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQudGV4dENvbnRlbnQgPT0gIlolRkNyaWNoIiA/ICJQQVNTIiA6ICJGQUlMICgiICsgZnJhbWVzWzBdLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC50ZXh0Q29udGVudCArICIpIikpOwogICAgICAgICAgICBsb2coIkZyYW1lLCByZWwtcGF0aDogIiArIChmcmFtZXNbMV0uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnRleHRDb250ZW50ID09ICJaJUZDcmljaCIgPyAiUEFTUyIgOiAiRkFJTCAoIiArIGZyYW1lc1swXS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQudGV4dENvbnRlbnQgKyAiKSIpKTsKCiAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgIH0KICAgIH0KPC9zY3JpcHQ+CjxpZnJhbWUgc3JjPSIveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3ByaW50LXF1ZXJ5LmNnaT9a/HJpY2giIG9ubG9hZD0iZnJhbWVMb2FkZWQoKSI+PC9pZnJhbWU+CjxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvcHJpbnQtcXVlcnkuY2dpP1r8cmljaCIgb25sb2FkPSJmcmFtZUxvYWRlZCgpIj48L2lmcmFtZT4KPC9ib2R5Pgo=