Ly89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBGaWxlICAgOiAgU1RMX3BlcmZfYW5hbHl6ZXIuaGgKLy8gQXV0aG9yIDogIEwuIFBsYWduZSA8bGF1cmVudC5wbGFnbmVAZWRmLmZyKT4gICAgICAgIAovLyBDb3B5cmlnaHQgKEMpIEVERiBSJkQsICBtYXIgZOljIDMgMTg6NTk6MzUgQ0VUIDIwMDIKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyAKLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgovLyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQovLyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMgovLyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLy8gCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAovLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgovLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNywgVVNBLgovLyAKI2lmbmRlZiBfU1RMX1BFUkZfQU5BTFlTRVJfSEgKI2RlZmluZSBfU1RMX1BFUkZfQU5BTFlTRVJfSEgKCiNpbmNsdWRlICJTVExfdGltZXIuaGgiCiNpbmNsdWRlICJiZW5jaF9wYXJhbWV0ZXIuaGgiCgp0ZW1wbGF0ZTxjbGFzcyBBQ1RJT04+CmNsYXNzIFNUTF9QZXJmX0FuYWx5emVyewpwdWJsaWM6ICAKICBTVExfUGVyZl9BbmFseXplcih1bnNpZ25lZCBsb25nIGxvbmcgbmJfc2FtcGxlPURFRkFVTFRfTkJfU0FNUExFKTpfbmJfc2FtcGxlKG5iX3NhbXBsZSksX2Nocm9ub3MoKQogIHsKICAgIE1FU1NBR0UoIlNUTF9QZXJmX0FuYWx5emVyIEN0b3IiKTsKICB9OyAKICBTVExfUGVyZl9BbmFseXplciggY29uc3QgU1RMX1BlcmZfQW5hbHl6ZXIgJiApewogICAgSU5GT1MoIkNvcHkgQ3RvciBub3QgaW1wbGVtZW50ZWQiKTsKICAgIGV4aXQoMCk7CiAgfTsKICB+U1RMX1BlcmZfQW5hbHl6ZXIoIHZvaWQgKXsKICAgIE1FU1NBR0UoIlNUTF9QZXJmX0FuYWx5emVyIER0b3IiKTsKICB9OwogIAogIAogIGlubGluZSBkb3VibGUgZXZhbF9tZmxvcHMoaW50IHNpemUpCiAgewoKICAgIEFDVElPTiBhY3Rpb24oc2l6ZSk7CgogICAgX2Nocm9ub3Muc3RhcnRfYmFzZWxpbmUoX25iX3NhbXBsZSk7CiAgICAgIAogICAgZG8gewoKICAgICAgYWN0aW9uLmluaXRpYWxpemUoKTsKICAgIH0gd2hpbGUgKF9jaHJvbm9zLmNoZWNrKCkpOwoKICAgIGRvdWJsZSBiYXNlbGluZV90aW1lPV9jaHJvbm9zLmdldF90aW1lKCk7CgogICAgX2Nocm9ub3Muc3RhcnQoX25iX3NhbXBsZSk7CiAgICBkbyB7CiAgICAgIGFjdGlvbi5pbml0aWFsaXplKCk7CiAgICAgIGFjdGlvbi5jYWxjdWxhdGUoKTsKICAgIH0gd2hpbGUgKF9jaHJvbm9zLmNoZWNrKCkpOwoKICAgIGRvdWJsZSBjYWxjdWxhdGVfdGltZT1fY2hyb25vcy5nZXRfdGltZSgpOwoKICAgIGRvdWJsZSBjb3JyZWN0ZWRfdGltZT1jYWxjdWxhdGVfdGltZS1iYXNlbGluZV90aW1lOwogICAgCiAgICAvLyAgICBjb3V0IDw8IHNpemUgPDwiICI8PGJhc2VsaW5lX3RpbWU8PCIgIjw8Y2FsY3VsYXRlX3RpbWU8PCIgIjw8Y29ycmVjdGVkX3RpbWU8PCIgIjw8YWN0aW9uLm5iX29wX2Jhc2UoKSA8PCBlbmRsOyAgICAKICAgIAogICAgcmV0dXJuIGFjdGlvbi5uYl9vcF9iYXNlKCkvKGNvcnJlY3RlZF90aW1lKjEwMDAwMDAuMCk7CiAgICAvL3JldHVybiBhY3Rpb24ubmJfb3BfYmFzZSgpLyhjYWxjdWxhdGVfdGltZSoxMDAwMDAwLjApOwogICAgCiAgfQpwcml2YXRlOgoKICBTVExfVGltZXIgX2Nocm9ub3M7CiAgdW5zaWduZWQgbG9uZyBsb25nIF9uYl9zYW1wbGU7CgogIAp9OwoKICAKICAKI2VuZGlmCg==