I2luY2x1ZGUgPGN0eXBlLmg+CiNpbmNsdWRlIDxsb2NhbGUuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCgpzdGF0aWMgaW50IGRvX3Rlc3QgKF9fbG9jYWxlX3QgbCk7CgppbnQKbWFpbiAodm9pZCkKewogIGxvY2FsZV90IGw7CiAgbG9jYWxlX3QgbDI7CiAgaW50IHJlc3VsdDsKCiAgbCA9IG5ld2xvY2FsZSAoMSA8PCBMQ19BTEwsICJkZV9ERS5JU08tODg1OS0xIiwgTlVMTCk7CiAgaWYgKGwgPT0gTlVMTCkKICAgIHsKICAgICAgcHJpbnRmICgibmV3bG9jYWxlIGZhaWxlZDogJW1cbiIpOwogICAgICBleGl0IChFWElUX0ZBSUxVUkUpOwogICAgfQogIHB1dHMgKCJSdW5uaW5nIHRlc3RzIG9mIGNyZWF0ZWQgbG9jYWxlIik7CiAgcmVzdWx0ID0gZG9fdGVzdCAobCk7CgogIGwyID0gZHVwbG9jYWxlIChsKTsKICBpZiAobDIgPT0gTlVMTCkKICAgIHsKICAgICAgcHJpbnRmICgiZHVwbG9jYWxlIGZhaWxlZDogJW1cbiIpOwogICAgICBleGl0IChFWElUX0ZBSUxVUkUpOwogICAgfQogIGZyZWVsb2NhbGUgKGwpOwogIHB1dHMgKCJSdW5uaW5nIHRlc3RzIG9mIGR1cGxpY2F0ZWQgbG9jYWxlIik7CiAgcmVzdWx0IHw9IGRvX3Rlc3QgKGwyKTsKCiAgcmV0dXJuIHJlc3VsdDsKfQoKCnN0YXRpYyBjb25zdCBjaGFyIHN0cltdID0gIjAxMjM0NTY3ODlhYmNkZWYgQUJDREVGIGdoaWprbG1ub3BxcnN0dXZ3eHl65MT21vzcIjsKc3RhdGljIGNvbnN0IGNoYXIgZXhkW10gPSAiMTExMTExMTExMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiOwpzdGF0aWMgY29uc3QgY2hhciBleGFbXSA9ICIwMDAwMDAwMDAwMTExMTExMDExMTExMTAxMTExMTExMTExMTExMTExMTExMTExMTExMSI7CnN0YXRpYyBjb25zdCBjaGFyIGV4eFtdID0gIjExMTExMTExMTExMTExMTEwMTExMTExMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIjsKCgpzdGF0aWMgaW50CmRvX3Rlc3QgKGxvY2FsZV90IGwpCnsKICBpbnQgcmVzdWx0ID0gMDsKc2l6ZV90IG47CgojZGVmaW5lIERPX1RFU1QoVEVTVCwgUkVTKSBcCiAgZm9yIChuID0gMDsgbiA8IHNpemVvZiAoc3RyKSAtIDE7ICsrbikJCQkJICAgICAgXAogICAgaWYgKCcwJyArIChURVNUIChzdHJbbl0sIGwpICE9IDApICE9IFJFU1tuXSkJCQkgICAgICBcCiAgICAgIHsJCQkJCQkJCQkgICAgICBcCglwcmludGYgKCIlcyglYykgZmFpbGVkXG4iLCAjVEVTVCwgc3RyW25dKTsJCQkgICAgICBcCglyZXN1bHQgPSAxOwkJCQkJCQkgICAgICBcCiAgICAgIH0KCiAgRE9fVEVTVCAoaXNkaWdpdF9sLCBleGQpOwogIERPX1RFU1QgKGlzYWxwaGFfbCwgZXhhKTsKICBET19URVNUIChpc3hkaWdpdF9sLCBleHgpOwoKICByZXR1cm4gcmVzdWx0Owp9Cg==