ZGlmZiAtLWdpdCBhL2xpYl9pMzg2L3BjYXRfdGltZXIuYyBiL2xpYl9pMzg2L3BjYXRfdGltZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjgyZjY0Ci0tLSAvZGV2L251bGwKKysrIGIvbGliX2kzODYvcGNhdF90aW1lci5jCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDAyCisgKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgZGFuaWVsQG9taWNyb24uc2UuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9pODI1NC5oPgorI2luY2x1ZGUgPGFzbS9pYm1wYy5oPgorCisjZGVmaW5lIFRJTUVSMF9WQUxVRSAweDA0YWEgLyogMWtIeiAxLjkzMThNSHogLyAxMDAwICovCisjZGVmaW5lIFRJTUVSMl9WQUxVRSAweDBhOGUgLyogNDQwSHogKi8KKworaW50IHRpbWVyX2luaXQodm9pZCkKK3sKKwkvKiBpbml0aWFsaXplIHRpbWVyIDAgYW5kIDIKKwkgKgorCSAqIFRpbWVyIDAgaXMgdXNlZCB0byBpbmNyZW1lbnQgc3lzdGVtX3RpY2sgMTAwMCB0aW1lcy9zZWMKKwkgKiBUaW1lciAxIHdhcyB1c2VkIGZvciBEUkFNIHJlZnJlc2ggaW4gZWFybHkgUEMncworCSAqIFRpbWVyIDIgaXMgdXNlZCB0byBkcml2ZSB0aGUgc3BlYWtlcgorCSAqICh0byBzdGFzcnQgYSBiZWVwOiB3cml0ZSAzIHRvIHBvcnQgMHg2MSwKKwkgKiB0byBzdG9wIGl0IGFnYWluOiB3cml0ZSAwKQorCSAqLworCW91dGIgKFBJVF9DTURfQ1RSMCB8IFBJVF9DTURfQk9USCB8IFBJVF9DTURfTU9ERTIsCisJICAgICAgUElUX0JBU0UgKyBQSVRfQ09NTUFORCk7CisJb3V0YiAoVElNRVIwX1ZBTFVFICYgMHhmZiwgUElUX0JBU0UgKyBQSVRfVDApOworCW91dGIgKFRJTUVSMF9WQUxVRSA+PiA4LCBQSVRfQkFTRSArIFBJVF9UMCk7CisKKwlvdXRiIChQSVRfQ01EX0NUUjIgfCBQSVRfQ01EX0JPVEggfCBQSVRfQ01EX01PREUzLAorCSAgICAgIFBJVF9CQVNFICsgUElUX0NPTU1BTkQpOworCW91dGIgKFRJTUVSMl9WQUxVRSAmIDB4ZmYsIFBJVF9CQVNFICsgUElUX1QyKTsKKwlvdXRiIChUSU1FUjJfVkFMVUUgPj4gOCwgUElUX0JBU0UgKyBQSVRfVDIpOworCisJaXJxX2luc3RhbGxfaGFuZGxlciAoMCwgdGltZXJfaXNyLCBOVUxMKTsKKwl1bm1hc2tfaXJxICgwKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdTE2IHJlYWRfcGl0KHZvaWQpCit7CisJdTggbG93OworCisJb3V0YiAoUElUX0NNRF9MQVRDSCwgUElUX0JBU0UgKyBQSVRfQ09NTUFORCk7CisJbG93ID0gaW5iIChQSVRfQkFTRSArIFBJVF9UMCk7CisKKwlyZXR1cm4gKChpbmIgKFBJVF9CQVNFICsgUElUX1QwKSA8PCA4KSB8IGxvdyk7Cit9CisKKy8qIHRoaXMgaXMgbm90IHZlcnkgZXhhY3QgKi8KK3ZvaWQgdWRlbGF5ICh1bnNpZ25lZCBsb25nIHVzZWMpCit7CisJaW50IGNvdW50ZXI7CisJaW50IHdyYXBzOworCisJaWYgKHRpbWVyX2luaXRfZG9uZSkKKwl7CisJCWNvdW50ZXIgPSByZWFkX3BpdCAoKTsKKwkJd3JhcHMgPSB1c2VjIC8gMTAwMDsKKwkJdXNlYyA9IHVzZWMgJSAxMDAwOworCisJCXVzZWMgKj0gMTE5NDsKKwkJdXNlYyAvPSAxMDAwOworCQl1c2VjICs9IGNvdW50ZXI7CisKKwkJd2hpbGUgKHVzZWMgPiAxMTk0KSB7CisJCQl1c2VjIC09IDExOTQ7CisJCQl3cmFwcysrOworCQl9CisKKwkJd2hpbGUgKDEpIHsKKwkJCWludCBuZXdfY291bnQgPSByZWFkX3BpdCAoKTsKKworCQkJaWYgKCgobmV3X2NvdW50IDwgdXNlYykgJiYgIXdyYXBzKSB8fCB3cmFwcyA8IDApCisJCQkJYnJlYWs7CisKKwkJCWlmIChuZXdfY291bnQgPiBjb3VudGVyKQorCQkJCXdyYXBzLS07CisKKwkJCWNvdW50ZXIgPSBuZXdfY291bnQ7CisJCX0KKwl9CisKK30K