PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KPHRpdGxlPkNoYXJzZXRzIGFuZCBzdWJtaXR0aW5nIGZvcm1zPC90aXRsZT4KPC9oZWFkPgo8Ym9keT4KPGZvcm0gYWN0aW9uPSI/IiBuYW1lPWY+CiA8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1xIHZhbHVlPSImIzExMDU7JiM2NjU2MDsmIzExOTA4MzvnYyI+PGJyPgo8L2Zvcm0+CjxzY3JpcHQ+CmlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKfQoKaWYgKGRvY3VtZW50LlVSTC5zdWJzdHJpbmcoMCwgNCkgPT0gImZpbGUiKSB7CgogICAgaWYgKGRvY3VtZW50LlVSTC5pbmRleE9mKCc/JykgPT0gLTEpIHsKICAgICAgICBkb2N1bWVudC5mLnEudmFsdWUgKz0gIlx1MDMyNyI7IC8vIGNlZGlsbGEgZm9yICdjJwogICAgICAgIGRvY3VtZW50LmYuc3VibWl0KCk7CgogICAgfSBlbHNlIHsKICAgICAgICBpZiAodW5lc2NhcGUoZG9jdW1lbnQuVVJMLnN1YnN0cmluZyhkb2N1bWVudC5VUkwuaW5kZXhPZignPycpKzEsIGRvY3VtZW50LlVSTC5sZW5ndGgpKSA9PSB1bmVzY2FwZSgicT0lMjYlMjMxMTA1JTNCJTI2JTIzNjY1NjAlM0IlMjYlMjMxMTkwODMlM0IlRTclRTciKSkKICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoIjxwPlN1Y2Nlc3M8L3A+Iik7CiAgICAgICAgZWxzZQogICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiPHA+RmFpbHVyZSwgcXVlcnkgaXMgIiArIGRvY3VtZW50LlVSTC5zdWJzdHJpbmcoZG9jdW1lbnQuVVJMLmluZGV4T2YoJz8nKSsxLCBkb2N1bWVudC5VUkwubGVuZ3RoKSArICI8L3A+Iik7CiAgICAgICAgCiAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgIH0KCn0gZWxzZSB7CgogICAgZG9jdW1lbnQud3JpdGUoIjxwPlRoaXMgdGVzdCBkb2Vzbid0IHdvcmsgZGlyZWN0bHkgZnJvbSBidWd6aWxsYSwgcGxlYXNlIHNhdmUgaXQgdG8gYSBsb2NhbCBmaWxlIGZpcnN0LjwvcD4iKTsKfQo8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+