ZGlmZiAtLWdpdCBhL2FwL2FwcC9pbmNsdWRlL3J0Y190aW1lci5oIGIvYXAvYXBwL2luY2x1ZGUvcnRjX3RpbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2RiZWNmNgotLS0gL2Rldi9udWxsCisrKyBiL2FwL2FwcC9pbmNsdWRlL3J0Y190aW1lci5oCkBAIC0wLDAgKzEsMTcxIEBACisvKioKKyogQGZpbGUgcnRjX3RpbWVyLmgKKyogQGJyaWVmIFB1YmxpYyBBUElzIG9mIFNhbmVjaGlwcworKgorKiBDb3B5cmlnaHQgKEMpIDIwMTcgU2FuZWNoaXBzIFRlY2hub2xvZ3kgQ28uLCBMdGQuCisqIEBhdXRob3IgIExpbnh1IEdlYmluCisqIEBkZWZncm91cCBzaV9pZCBTYW5lY2hpcHMKKyoKKyogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCisjaWZuZGVmIF9SVENfVElNRVJfSAorI2RlZmluZSBfUlRDX1RJTUVSX0gKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5jbHVkZSBoZWFkZXIgZmlsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2luY2x1ZGUgIDxzeXMvdGltZS5oPgorI2luY2x1ZGUgIm1lc3NhZ2UuaCIKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNybyBkZWZpbml0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgRE9YWUdFTl9TSE9VTERfU0tJUF9USElTCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgZGVmaW5pdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioKKyogQGJyaWVmIHJ0YyBtZXNzYWdlIHR5cGUKKyogQG5vdGUKKyovCitlbnVtIFJUQ19DUFUgeworCVJUQ19DUFVfQ1AgPSAwLCAgIC8vcnRj08ljcLeixvAKKwlSVENfQ1BVX0FQLCAgICAgICAvL3J0Y9PJQVC3osbwCit9OworCisvKioKKyogQGJyaWVmIHJ0YyB0eXBlCisqIEBub3RlCisqLwordHlwZWRlZiBlbnVtIHsKKwlSVENfSURfU1RBUlQgPSAwLAorCVdJRklfSU5URVJWQUxfU0xFRVAsCisJV0lGSV9QV1JfU0FWRSwKKwlXSUZJX1dBS0VfVVBfU1lTVEVNLAorCVdJRklfV1BTX1JFU1VMVF9DSEVDSywKKwlXSUZJX1RTV19TTEVFUCwKKwlXSUZJX1RTV19XQUtFVVAsCisJV0lGSV9BQ0xfU0VSVklDRSwKKwlXRFRfVEVNUF9QUk9URUNULAorCVJUQ19TQUZFQ0FSRV9DT05USU1FLAorCVJUQ19TQUZFQ0FSRV9ERUxBWSwKKwlSVENfSURfRlBfQ0xPQ0ssCisJUlRDX0lEX05PVERJU1RVUkJfQkVHSU4sCisJUlRDX0lEX05PVERJU1RVUkJfRU5ELAorCVJUQ19JRF9NTUlfQUxBUk0sCisJUlRDX0lEX01NSV9DTE9DS19NT0RFX0NIRUNLLAorCVJUQ19JRF9UUkFDS19CRUdJTiwKKwlSVENfSURfVFJBQ0tfVVBMT0FEPVJUQ19JRF9UUkFDS19CRUdJTiwKKwlSVENfSURfVFJBQ0tfQkFTRSwKKwlSVENfSURfVFJBQ0tfU0VSVkVSX0NPTiwKKwlSVENfSURfVFJBQ0tfU0xBVkVfU0VSVkVSX0NPTiwKKwlSVENfSURfVFJBQ0tfU0xBVkVfU0VSVkVSX0NNRCwKKwlSVENfSURfVFJBQ0tfREVCVUdfU0VSVkVSX0NPTiwKKwlSVENfSURfVFJBQ0tfTElOSywKKwlSVENfSURfVFJBQ0tfTElOS19USU1FT1VULAorCVJUQ19JRF9UUkFDS19BR1BTLAorCVJUQ19JRF9UUkFDS19XRUFUSEVSX1VQREFURSwKKwlSVENfSURfVFJBQ0tfRU5ELAorCVJUQ19JRF9FTkQsCit9IFJUQ19JRDsKKyNlbmRpZgorCisvKioKKyogQGJyaWVmIHJ0YyDP+8+iwODQzQorKiBAcGFyYW0gUlRDX01TR19BTEFSTV9FTEFQU0VEILWxtqjKscb3tKW3osqxu+G3otXiuPbP+8+iuPi2qMqxxvfTtdPQ1d8KKyogQHBhcmFtIFJUQ19NU0dfVElNRV9DSEFOR0VEIFJUQ8qxvOS4/NDCOrHtyr7KwL3nyrG85Leiyfqx5Luvo6y8tMqxvOTNrLK9zeqzybvy1d/Tw7unyta2r9bY0MLJ6NbDtbHHsLXEysC958qxvOTBy6OstMvKsVJUQ734s8y74bnjsqW4+NLR16Ky4crAvefKsbzktcTEo7/po6zS1MjDz+C52MSjv+m9+NDQysC958qxvOS2qMqxxve1xNbY0MLJ6NbDCisqIEBub3RlCisqLworI2lmbmRlZiBET1hZR0VOX1NIT1VMRF9TS0lQX1RISVMKK2VudW0gUlRDX01TR19DTUQgeworCVJUQ19NU0dfR0VUX1RJTUUgPSBNU0dfQ01EX1JUQ19CQVNFLAkvL7vxyKHKsbzko6zWsb3TtffTw2xpbnV4z7XNs8qxvOS907/aCisJUlRDX01TR19TRVRfVElNRSwJCQkJCQkvL8no1sPKsbzkCisJUlRDX01TR19BRERfQUxBUk0sCQkJCQkJLy/M7bzTcnRjtqjKscb3CisJUlRDX01TR19ERUxfQUxBUk0sCQkJCQkJLy/JvrP9cnRjtqjKscb3CisJUlRDX01TR19BTEFSTV9USU1FT1VULAkJCQkJLy9SVEMgYWxhcm22qMqxxvfKsbzks6zKsQorCVJUQ19NU0dfVElNRVJfVElNRU9VVCwJCQkJCS8vUlRDIHRpbWVytqjKscb3yrG85LOsyrEKKwlSVENfTVNHX0FMQVJNX0VMQVBTRUQsCQkJCQkvL7WxtqjKscb3tKW3osqxu+G3otXiuPbP+8+iuPi2qMqxxvfTtdPQ1d8KKwlSVENfTVNHX0RFTF9BTEwsCQkJCQkJLy/H5bP9y/nT0LnYu/qyu7GjtOa1xLaoyrHG96Ost/HU8nJ0Y7aoyrHG97W9teO7ubvhyc+xqAorCVJUQ19NU0dfVElNRV9DSEFOR0VELAkJCQkJLy9SVEPKsbzkuPzQwjqx7cq+ysC958qxvOS3osn6seS7r6OsvLTKsbzkzayyvc3qs8m78tXf08O7p8rWtq/W2NDCyejWw7Wxx7C1xMrAvefKsbzkwcujrLTLyrFSVEO9+LPMu+G547KluPjS0deisuHKwL3nyrG85LXExKO/6aOs0tTIw8/gudjEo7/pvfjQ0MrAvefKsbzktqjKscb3tcTW2NDCyejWwworfTsKKyNlbmRpZgorCisvKioKKyogQGJyaWVmIHJ0YyBkYXRhIGJ1ZmZlcgorKiBAcGFyYW0gc3JjTW9kdWxlILS0vai2qMqxxve1xMSjv+kKKyogQHBhcmFtIG1vZHVsZSC2qMqxxvdpZAorKiBAcGFyYW0gdWxTZWMgvOS49MqxvOSjrLWlzrs6cworKiBAcGFyYW0gdGltZV92YWwgILWxx7DKsbzkCisqIEBwYXJhbSB3YWtldXAgICC52Lv6u73Q0aOsMTq08r+qo6wwOrnYsdUKKyogQHBhcmFtIGlzX3V0YyAgyse38XV0Y8qxvOSjrAorKiBAcGFyYW0gY3B1ICBydGO3osbwtcRjcHWjrCAwOiBjcCwgMTphcAorKiBAbm90ZSB1dGPKsbzk1f2zo7HIvc+zpKOs08NXS0FMTbaoyrHG9worKi8KK3R5cGVkZWYgc3RydWN0IHRhZ19SVENfREFUQV9CVUYgeworCWludCBzcmNNb2R1bGU7CisJdW5zaWduZWQgaW50ICAgbW9kdWxlOworCXVuc2lnbmVkIGxvbmcgICB1bFNlYzsKKwl1bnNpZ25lZCBsb25nIHRpbWVfdmFsOworCWludCB3YWtldXA7CisJaW50IGlzX3V0YzsKKwlpbnQgY3B1OworfSBSVENfREFUQV9CVUY7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICBHbG9iYWwgZnVuY3Rpb24gZGVjbGFyYXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisqIEBicmllZiAgzO2807aoyrHG9worKiBAcGFyYW0gdWxTZWMJtqjKscb3yrG85KOstaXOu8PrCisqIEBwYXJhbSBydGNfaWQJtqjKscb3SUQKKyogQHBhcmFtIHNyY19pZAm0tL2otqjKscb3tcTEo7/pSUQKKyogQHJldHVybiCzybmmt7W72DCjrMqnsNy3tbvYLTEKKyovCitpbnQgcnRjX3RpbWVyX2FkZCh1bnNpZ25lZCBsb25nIHVsU2VjLCBSVENfSUQgcnRjX2lkLCBpbnQgc3JjX2lkKTsKKworLyoqCisqIEBicmllZiDM7bzTtqjKscb3CisqIEBwYXJhbSB0aW1lCbaoyrHG98qxvOSjrLWlzrvKwL3nyrHW0yzQ6NKqzO46IHRtX3NlYy90bV9taW4vdG1faG91ci90bV9tZGF5L3RtX21vbi90bV95ZWFyCisqIEBwYXJhbSBydGNfaWQJtqjKscb3SUSjrAorKiBAcGFyYW0gc3JjX2lkCbS0vai2qMqxxve1xMSjv+lJRAorKiBAcGFyYW0gd2FrZXVwCbnYu/rKx7fxu73Q0QorKiBAbm90ZSB3YWtldXAJyscwsru7vdDRLCAxILu90NEKKyogQHJldHVybiCzybmmt7W72DCjrMqnsNy3tbvYLTEKKyovCitpbnQgcnRjX3RpbWVyX2FkZF91dGMoc3RydWN0IHRtICp0aW1lLCBSVENfSUQgcnRjX2lkLCBpbnQgc3JjX2lkLCBpbnQgd2FrZXVwKTsKKworCisvKioKKyogQGJyaWVmIMm+s/22qMqxxvcKKyogQHBhcmFtIHJ0Y19pZAm2qMqxxvdJRAorKiBAcGFyYW0gc3JjX2lkCbS0vai2qMqxxve1xMSjv+lJRAorKiBAcmV0dXJuILPJuaa3tbvYMKOsyqew3Le1u9gtMQorKi8KK2ludCBydGNfdGltZXJfZGVsKFJUQ19JRCBydGNfaWQsIGludCBzcmNfaWQpOworCisKKy8qKgorKiBAYnJpZWYgyb6z/cv509C2qMqxxvcKKyogQHBhcmFtIHNyY19pZAkJyb6z/baoyrHG97XExKO/6UlECisqIEBwYXJhbSByZXFfY21kCbvYuLS1xM/7z6JjbWQKKyogQHJldHVybiCzybmmt7W72DCjrMqnsNy3tbvYLTEKKyovCitpbnQgcnRjX3RpbWVyX2RlbF9hbGwoaW50IHNyY19pZCwgdW5zaWduZWQgc2hvcnQgcmVxX2NtZCk7CisKKworLyoqCisqIEBicmllZiDJ6NbDcnRjtbHHsMqxvOQKKyogQHBhcmFtIHNyY19pZAnJ6NbDyrG85LXExKO/6UlECisqIEByZXR1cm4gyejWw3J0Y7Wxx7DKsbzkCisqLworaW50ICBydGNfc2V0X3RpbWUoaW50IHNyY19pZCk7CisKKyNlbmRpZgorCisK