ISB7IGRnLWRvIHJ1biB9CiEgVGVzdHMgdGhlIGZpeCBmb3IgUFIzNTk1OSwgaW4gd2hpY2ggdGhlIHN0cnVjdHVyZSBzdWJwYXR0ZXJuIHdhcyBkZWNsYXJlZCBzdGF0aWMKISBzbyB0aGF0IHRoaXMgdGVzdCBmYWllZCBvbiB0aGUgc2Vjb25kIHJlY3Vyc2l2ZSBjYWxsLgohCiEgQ29udHJpYnV0ZWQgYnkgTWljaGHrbCBCYXVkaW4gPG1pY2hhZWwuYmF1ZGluQGdtYWlsLmNvbT4KIQpwcm9ncmFtIHRlc3Rwcm9nCiAgdHlwZSA6OiB0X3R5cGUKICAgIGludGVnZXIsIGRpbWVuc2lvbig6KSwgYWxsb2NhdGFibGUgOjogY2hhcnMKICBlbmQgdHlwZSB0X3R5cGUKICBpbnRlZ2VyLCBzYXZlIDo6IGNhbGxuYiA9IDAKICB0eXBlKHRfdHlwZSkgOjogdGhpcwogIGFsbG9jYXRlICggdGhpcyAlIGNoYXJzICggNCkpCiAgaWYgKC5ub3QucmVjdXJzaXZlZnVuYyAodGhpcykgLm9yLiAoY2FsbG5iIC5uZS4gMTApKSBTVE9QIDEKY29udGFpbnMKICByZWN1cnNpdmUgZnVuY3Rpb24gcmVjdXJzaXZlZnVuYyAoIHRoaXMgKSByZXN1bHQgKCBtYXRjaCApCiAgICB0eXBlKHRfdHlwZSksIGludGVudChpbikgOjogdGhpcwogICAgdHlwZSh0X3R5cGUpIDo6IHN1YnBhdHRlcm4KICAgIGxvZ2ljYWwgOjogbWF0Y2gKICAgIGNhbGxuYiA9IGNhbGxuYiArIDEKICAgIG1hdGNoID0gKGNhbGxuYiA9PSAxMCkKICAgIGlmICgoLk5PVC4gYWxsb2NhdGVkICh0aGlzICUgY2hhcnMpKSAuT1IuIG1hdGNoKSByZXR1cm4KICAgIGFsbG9jYXRlICggc3VicGF0dGVybiAlIGNoYXJzICggNCApICkKICAgIG1hdGNoID0gcmVjdXJzaXZlZnVuYyAoIHN1YnBhdHRlcm4gKQogIGVuZCBmdW5jdGlvbiByZWN1cnNpdmVmdW5jCmVuZCBwcm9ncmFtIHRlc3Rwcm9nCg==