Name: series-workflowt9zq4 Phase: Succeeded StartedAt: 2026-07-02 14:17:29 +0000 UTC FinishedAt: 2026-07-02 17:50:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt9zq4[0] Phase: Succeeded StartedAt: 2026-07-02 14:17:29 +0000 UTC FinishedAt: 2026-07-02 14:31:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt9zq4[0].run-triage Phase: Succeeded StartedAt: 2026-07-02 14:17:29 +0000 UTC FinishedAt: 2026-07-02 14:31:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "bb09d0e64ecaa0aa0f7d1133a1696ed74dead295", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "bb09d0e64ecaa0aa0f7d1133a1696ed74dead295", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET" ], "series_id": "7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "reqsk_timer_handler", "tcp_fastopen_synack_timer" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE0OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZXFza190aW1lcl9oYW5kbGVyJiMzNDssCiAgICAmIzM0O3RjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgc2hpZnQgb3ZlcmZsb3cgaW4gVENQIFNZTi1BQ0sgdGltZW91dCBjYWxjdWxhdGlvbiBhbmQgY2FwcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgU1lOLUFDSyByZXRyaWVzIHRvIDYzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgVENQIHN0YWNrIHRoYXQgYWZmZWN0cyBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgYW5kIHRpbWVvdXQgaGFuZGxpbmcuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBTWU4tQUNLIHRpbWVyIGhhbmRsZXJzIGZvciBib3RoIHJlZ3VsYXIgYW5kIEZhc3QgT3BlbiBjb25uZWN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDozMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU1YjQ4MjhkZTQ2MWQ0YzA5Mjk3ZjIyMWJmOGRjNjFhY2EzNTM2NjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDE0OjMwOjE3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RjcC5oIGIvaW5jbHVkZS9uZXQvdGNwLmhcbmluZGV4IDZkMzc2ZWE0ZDFjMDFkLi5lZTc4NDM2Yjg5NjQ1YSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3RjcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC90Y3AuaFxuQEAgLTE4Myw2ICYjNDM7MTgzLDcgQEAgc3RhdGljX2Fzc2VydCgoMSBcdTAwM2NcdTAwM2MgQVRPX0JJVFMpIFx1MDAzZSBUQ1BfREVMQUNLX01BWCk7XG4gI2RlZmluZSBNQVhfVENQX0tFRVBJTlRWTFx0MzI3NjdcbiAjZGVmaW5lIE1BWF9UQ1BfS0VFUENOVFx0XHQxMjdcbiAjZGVmaW5lIE1BWF9UQ1BfU1lOQ05UXHRcdDEyN1xuJiM0MzsjZGVmaW5lIE1BWF9UQ1BfU1lOQUNLX1JFVFJJRVNcdDYzXG4gXG4gLyogRW5zdXJlIHRoYXQgVENQIFBBV1MgY2hlY2tzIGFyZSByZWxheGVkIGFmdGVyIH4yMTQ3IHNlY29uZHNcbiAgKiB0byBhdm9pZCBvdmVyZmxvd3MuIFRoaXMgYXNzdW1lcyBhIGNsb2NrIHNtYWxsZXIgdGhhbiAxIE1oei5cbkBAIC04ODIsMTIgJiM0Mzs4ODMsMjIgQEAgc3RhdGljIGlubGluZSB1MzIgX190Y3Bfc2V0X3J0byhjb25zdCBzdHJ1Y3QgdGNwX3NvY2sgKnRwKVxuIFx0cmV0dXJuIHVzZWNzX3RvX2ppZmZpZXMoKHRwLVx1MDAzZXNydHRfdXMgXHUwMDNlXHUwMDNlIDMpICYjNDM7IHRwLVx1MDAzZXJ0dHZhcl91cyk7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dChzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4mIzQzO3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dF9zayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXG4mIzQzO1x0XHRcdFx0XHRcdCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4ge1xuLVx0dTY0IHRpbWVvdXQgPSAodTY0KXJlcS1cdTAwM2V0aW1lb3V0IFx1MDAzY1x1MDAzYyByZXEtXHUwMDNlbnVtX3RpbWVvdXQ7XG4mIzQzO1x0dTMyIHJ0b19tYXggPSB0Y3BfcnRvX21heChzayk7XG4mIzQzO1x0dTY0IHRpbWVvdXQgPSByZXEtXHUwMDNldGltZW91dDtcbiYjNDM7XG4mIzQzO1x0aWYgKHJlcS1cdTAwM2VudW1fdGltZW91dCBcdTAwM2U9IEJJVFNfUEVSX1RZUEUodTY0KSB8fFxuJiM0MztcdCAgICB0aW1lb3V0IFx1MDAzZSBVNjRfTUFYIFx1MDAzZVx1MDAzZSByZXEtXHUwMDNlbnVtX3RpbWVvdXQpXG4mIzQzO1x0XHRyZXR1cm4gcnRvX21heDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuICh1bnNpZ25lZCBsb25nKW1pbl90KHU2NCwgdGltZW91dCBcdTAwM2NcdTAwM2MgcmVxLVx1MDAzZW51bV90aW1lb3V0LCBydG9fbWF4KTtcbiYjNDM7fVxuIFxuLVx0cmV0dXJuICh1bnNpZ25lZCBsb25nKW1pbl90KHU2NCwgdGltZW91dCxcbi1cdFx0XHRcdCAgICB0Y3BfcnRvX21heChyZXEtXHUwMDNlcnNrX2xpc3RlbmVyKSk7XG4mIzQzO3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dChzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gdGNwX3JlcXNrX3RpbWVvdXRfc2socmVxLVx1MDAzZXJza19saXN0ZW5lciwgcmVxKTtcbiB9XG4gXG4gdTMyIHRjcF9kZWxhY2tfbWF4KGNvbnN0IHN0cnVjdCBzb2NrICpzayk7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYyBiL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmNcbmluZGV4IDU2OTAyYmJhNTQ4MzhiLi5iNzQyMTJiYWUzZGQyNSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmNcbkBAIC0xMDU2LDYgJiM0MzsxMDU2LDggQEAgc3RhdGljIHZvaWQgcmVxc2tfdGltZXJfaGFuZGxlcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbiBcdG5ldCA9IHNvY2tfbmV0KHNrX2xpc3RlbmVyKTtcbiBcdG1heF9zeW5fYWNrX3JldHJpZXMgPSBSRUFEX09OQ0UoaWNzay1cdTAwM2VpY3NrX3N5bl9yZXRyaWVzKSA/IDpcbiBcdFx0UkVBRF9PTkNFKG5ldC1cdTAwM2VpcHY0LnN5c2N0bF90Y3Bfc3luYWNrX3JldHJpZXMpO1xuJiM0MztcdG1heF9zeW5fYWNrX3JldHJpZXMgPSBtaW5fdChpbnQsIG1heF9zeW5fYWNrX3JldHJpZXMsXG4mIzQzO1x0XHRcdFx0ICAgIE1BWF9UQ1BfU1lOQUNLX1JFVFJJRVMpO1xuIFx0LyogTm9ybWFsbHkgYWxsIHRoZSBvcGVucmVxcyBhcmUgeW91bmcgYW5kIGJlY29tZSBtYXR1cmVcbiBcdCAqIChpLmUuIGNvbnZlcnRlZCB0byBlc3RhYmxpc2hlZCBzb2NrZXQpIGZvciBmaXJzdCB0aW1lb3V0LlxuIFx0ICogSWYgc3luYWNrIHdhcyBub3QgYWNrbm93bGVkZ2VkIGZvciAxIHNlY29uZCwgaXQgbWVhbnNcbkBAIC0xMDg2LDcgJiM0MzsxMDg4LDkgQEAgc3RhdGljIHZvaWQgcmVxc2tfdGltZXJfaGFuZGxlcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbiBcdFx0fVxuIFx0fVxuIFxuLVx0c3luX2Fja19yZWNhbGMocmVxLCBtYXhfc3luX2Fja19yZXRyaWVzLCBSRUFEX09OQ0UocXVldWUtXHUwMDNlcnNrcV9kZWZlcl9hY2NlcHQpLFxuJiM0MztcdHN5bl9hY2tfcmVjYWxjKHJlcSwgbWF4X3N5bl9hY2tfcmV0cmllcyxcbiYjNDM7XHRcdCAgICAgICBtaW5fdCh1OCwgUkVBRF9PTkNFKHF1ZXVlLVx1MDAzZXJza3FfZGVmZXJfYWNjZXB0KSxcbiYjNDM7XHRcdFx0ICAgICBNQVhfVENQX1NZTkFDS19SRVRSSUVTKSxcbiBcdFx0ICAgICAgIFx1MDAyNmV4cGlyZSwgXHUwMDI2cmVzZW5kKTtcbiBcdHRjcF9zeW5fYWNrX3RpbWVvdXQocmVxKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYyBiL25ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jXG5pbmRleCBjYTExODBkYmExZGVhOS4uZjlkMjMzYjk4YmJjNmMgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmNcbkBAIC0zNSw2ICYjNDM7MzUsNyBAQCBzdGF0aWMgaW50IGlwX3R0bF9taW4gPSAxO1xuIHN0YXRpYyBpbnQgaXBfdHRsX21heCA9IDI1NTtcbiBzdGF0aWMgaW50IHRjcF9zeW5fcmV0cmllc19taW4gPSAxO1xuIHN0YXRpYyBpbnQgdGNwX3N5bl9yZXRyaWVzX21heCA9IE1BWF9UQ1BfU1lOQ05UO1xuJiM0MztzdGF0aWMgaW50IHRjcF9zeW5hY2tfcmV0cmllc19tYXggPSBNQVhfVENQX1NZTkFDS19SRVRSSUVTO1xuIHN0YXRpYyBpbnQgdGNwX3N5bl9saW5lYXJfdGltZW91dHNfbWF4ID0gTUFYX1RDUF9TWU5DTlQ7XG4gc3RhdGljIHVuc2lnbmVkIGxvbmcgaXBfcGluZ19ncm91cF9yYW5nZV9taW5bXSA9IHsgMCwgMCB9O1xuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGlwX3BpbmdfZ3JvdXBfcmFuZ2VfbWF4W10gPSB7IEdJRF9UX01BWCwgR0lEX1RfTUFYIH07XG5AQCAtMTAzNCw2ICYjNDM7MTAzNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIGlwdjRfbmV0X3RhYmxlW10gPSB7XG4gXHRcdC5tYXhsZW5cdFx0PSBzaXplb2YodTgpLFxuIFx0XHQubW9kZVx0XHQ9IDA2NDQsXG4gXHRcdC5wcm9jX2hhbmRsZXJcdD0gcHJvY19kb3U4dmVjX21pbm1heCxcbiYjNDM7XHRcdC5leHRyYTJcdFx0PSBcdTAwMjZ0Y3Bfc3luYWNrX3JldHJpZXNfbWF4XG4gXHR9LFxuICNpZmRlZiBDT05GSUdfU1lOX0NPT0tJRVNcbiBcdHtcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfdGltZXIuYyBiL25ldC9pcHY0L3RjcF90aW1lci5jXG5pbmRleCBiZjE3MWI1ZTFlYjMwNi4uYmJlZGYyYjllMWJjZWEgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfdGltZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX3RpbWVyLmNcbkBAIC00NjcsNiAmIzQzOzQ2Nyw3IEBAIHN0YXRpYyB2b2lkIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4gXHQgKi9cbiBcdG1heF9yZXRyaWVzID0gUkVBRF9PTkNFKGljc2stXHUwMDNlaWNza19zeW5fcmV0cmllcykgPyA6XG4gXHRcdFJFQURfT05DRShzb2NrX25ldChzayktXHUwMDNlaXB2NC5zeXNjdGxfdGNwX3N5bmFja19yZXRyaWVzKSAmIzQzOyAxO1xuJiM0MztcdG1heF9yZXRyaWVzID0gbWluX3QoaW50LCBtYXhfcmV0cmllcywgTUFYX1RDUF9TWU5BQ0tfUkVUUklFUyk7XG4gXG4gXHRpZiAocmVxLVx1MDAzZW51bV90aW1lb3V0IFx1MDAzZT0gbWF4X3JldHJpZXMpIHtcbiBcdFx0dGNwX3dyaXRlX2Vycihzayk7XG5AQCAtNDg4LDcgJiM0Mzs0ODksNyBAQCBzdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuIFx0aWYgKCF0cC1cdTAwM2VyZXRyYW5zX3N0YW1wKVxuIFx0XHR0cC1cdTAwM2VyZXRyYW5zX3N0YW1wID0gdGNwX3RpbWVfc3RhbXBfdHModHApO1xuIFx0dGNwX3Jlc2V0X3htaXRfdGltZXIoc2ssIElDU0tfVElNRV9SRVRSQU5TLFxuLVx0XHRcdCAgcmVxLVx1MDAzZXRpbWVvdXQgXHUwMDNjXHUwMDNjIHJlcS1cdTAwM2VudW1fdGltZW91dCwgZmFsc2UpO1xuJiM0MztcdFx0XHQgICAgIHRjcF9yZXFza190aW1lb3V0X3NrKHNrLCByZXEpLCBmYWxzZSk7XG4gfVxuIFxuIHN0YXRpYyBib29sIHRjcF9ydHhfcHJvYmUwX3RpbWVkX291dChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6MzA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JlcXNrX3RpbWVyX2hhbmRsZXImIzM0OywKICAgICYjMzQ7dGNwX2Zhc3RvcGVuX3N5bmFja190aW1lciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBzaGlmdCBvdmVyZmxvdyBpbiBUQ1AgU1lOLUFDSyB0aW1lb3V0IGNhbGN1bGF0aW9uIGFuZCBjYXBzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBTWU4tQUNLIHJldHJpZXMgdG8gNjMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBUQ1Agc3RhY2sgdGhhdCBhZmZlY3RzIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgdGltZW91dCBoYW5kbGluZy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIFNZTi1BQ0sgdGltZXIgaGFuZGxlcnMgZm9yIGJvdGggcmVndWxhciBhbmQgRmFzdCBPcGVuIGNvbm5lY3Rpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NWI0ODI4ZGU0NjFkNGMwOTI5N2YyMjFiZjhkYzYxYWNhMzUzNjY1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMiAxNDozMDoxNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RjcC5oIGIvaW5jbHVkZS9uZXQvdGNwLmgKaW5kZXggNmQzNzZlYTRkMWMwMWQuLmVlNzg0MzZiODk2NDVhIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC90Y3AuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC90Y3AuaApAQCAtMTgzLDYgJiM0MzsxODMsNyBAQCBzdGF0aWNfYXNzZXJ0KCgxICZsdDsmbHQ7IEFUT19CSVRTKSAmZ3Q7IFRDUF9ERUxBQ0tfTUFYKTsKICNkZWZpbmUgTUFYX1RDUF9LRUVQSU5UVkwJMzI3NjcKICNkZWZpbmUgTUFYX1RDUF9LRUVQQ05UCQkxMjcKICNkZWZpbmUgTUFYX1RDUF9TWU5DTlQJCTEyNwomIzQzOyNkZWZpbmUgTUFYX1RDUF9TWU5BQ0tfUkVUUklFUwk2MwogCiAvKiBFbnN1cmUgdGhhdCBUQ1AgUEFXUyBjaGVja3MgYXJlIHJlbGF4ZWQgYWZ0ZXIgfjIxNDcgc2Vjb25kcwogICogdG8gYXZvaWQgb3ZlcmZsb3dzLiBUaGlzIGFzc3VtZXMgYSBjbG9jayBzbWFsbGVyIHRoYW4gMSBNaHouCkBAIC04ODIsMTIgJiM0Mzs4ODMsMjIgQEAgc3RhdGljIGlubGluZSB1MzIgX190Y3Bfc2V0X3J0byhjb25zdCBzdHJ1Y3QgdGNwX3NvY2sgKnRwKQogCXJldHVybiB1c2Vjc190b19qaWZmaWVzKCh0cC0mZ3Q7c3J0dF91cyAmZ3Q7Jmd0OyAzKSAmIzQzOyB0cC0mZ3Q7cnR0dmFyX3VzKTsKIH0KIAotc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHRjcF9yZXFza190aW1lb3V0KHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSkKJiM0MztzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgdGNwX3JlcXNrX3RpbWVvdXRfc2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLAomIzQzOwkJCQkJCSBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpCiB7Ci0JdTY0IHRpbWVvdXQgPSAodTY0KXJlcS0mZ3Q7dGltZW91dCAmbHQ7Jmx0OyByZXEtJmd0O251bV90aW1lb3V0OwomIzQzOwl1MzIgcnRvX21heCA9IHRjcF9ydG9fbWF4KHNrKTsKJiM0MzsJdTY0IHRpbWVvdXQgPSByZXEtJmd0O3RpbWVvdXQ7CiYjNDM7CiYjNDM7CWlmIChyZXEtJmd0O251bV90aW1lb3V0ICZndDs9IEJJVFNfUEVSX1RZUEUodTY0KSB8fAomIzQzOwkgICAgdGltZW91dCAmZ3Q7IFU2NF9NQVggJmd0OyZndDsgcmVxLSZndDtudW1fdGltZW91dCkKJiM0MzsJCXJldHVybiBydG9fbWF4OwomIzQzOwomIzQzOwlyZXR1cm4gKHVuc2lnbmVkIGxvbmcpbWluX3QodTY0LCB0aW1lb3V0ICZsdDsmbHQ7IHJlcS0mZ3Q7bnVtX3RpbWVvdXQsIHJ0b19tYXgpOwomIzQzO30KIAotCXJldHVybiAodW5zaWduZWQgbG9uZyltaW5fdCh1NjQsIHRpbWVvdXQsCi0JCQkJICAgIHRjcF9ydG9fbWF4KHJlcS0mZ3Q7cnNrX2xpc3RlbmVyKSk7CiYjNDM7c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHRjcF9yZXFza190aW1lb3V0KHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSkKJiM0Mzt7CiYjNDM7CXJldHVybiB0Y3BfcmVxc2tfdGltZW91dF9zayhyZXEtJmd0O3Jza19saXN0ZW5lciwgcmVxKTsKIH0KIAogdTMyIHRjcF9kZWxhY2tfbWF4KGNvbnN0IHN0cnVjdCBzb2NrICpzayk7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jIGIvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYwppbmRleCA1NjkwMmJiYTU0ODM4Yi4uYjc0MjEyYmFlM2RkMjUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYwpAQCAtMTA1Niw2ICYjNDM7MTA1Niw4IEBAIHN0YXRpYyB2b2lkIHJlcXNrX3RpbWVyX2hhbmRsZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpCiAJbmV0ID0gc29ja19uZXQoc2tfbGlzdGVuZXIpOwogCW1heF9zeW5fYWNrX3JldHJpZXMgPSBSRUFEX09OQ0UoaWNzay0mZ3Q7aWNza19zeW5fcmV0cmllcykgPyA6CiAJCVJFQURfT05DRShuZXQtJmd0O2lwdjQuc3lzY3RsX3RjcF9zeW5hY2tfcmV0cmllcyk7CiYjNDM7CW1heF9zeW5fYWNrX3JldHJpZXMgPSBtaW5fdChpbnQsIG1heF9zeW5fYWNrX3JldHJpZXMsCiYjNDM7CQkJCSAgICBNQVhfVENQX1NZTkFDS19SRVRSSUVTKTsKIAkvKiBOb3JtYWxseSBhbGwgdGhlIG9wZW5yZXFzIGFyZSB5b3VuZyBhbmQgYmVjb21lIG1hdHVyZQogCSAqIChpLmUuIGNvbnZlcnRlZCB0byBlc3RhYmxpc2hlZCBzb2NrZXQpIGZvciBmaXJzdCB0aW1lb3V0LgogCSAqIElmIHN5bmFjayB3YXMgbm90IGFja25vd2xlZGdlZCBmb3IgMSBzZWNvbmQsIGl0IG1lYW5zCkBAIC0xMDg2LDcgJiM0MzsxMDg4LDkgQEAgc3RhdGljIHZvaWQgcmVxc2tfdGltZXJfaGFuZGxlcihzdHJ1Y3QgdGltZXJfbGlzdCAqdCkKIAkJfQogCX0KIAotCXN5bl9hY2tfcmVjYWxjKHJlcSwgbWF4X3N5bl9hY2tfcmV0cmllcywgUkVBRF9PTkNFKHF1ZXVlLSZndDtyc2txX2RlZmVyX2FjY2VwdCksCiYjNDM7CXN5bl9hY2tfcmVjYWxjKHJlcSwgbWF4X3N5bl9hY2tfcmV0cmllcywKJiM0MzsJCSAgICAgICBtaW5fdCh1OCwgUkVBRF9PTkNFKHF1ZXVlLSZndDtyc2txX2RlZmVyX2FjY2VwdCksCiYjNDM7CQkJICAgICBNQVhfVENQX1NZTkFDS19SRVRSSUVTKSwKIAkJICAgICAgICZhbXA7ZXhwaXJlLCAmYW1wO3Jlc2VuZCk7CiAJdGNwX3N5bl9hY2tfdGltZW91dChyZXEpOwogCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYyBiL25ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jCmluZGV4IGNhMTE4MGRiYTFkZWE5Li5mOWQyMzNiOThiYmM2YyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMKQEAgLTM1LDYgJiM0MzszNSw3IEBAIHN0YXRpYyBpbnQgaXBfdHRsX21pbiA9IDE7CiBzdGF0aWMgaW50IGlwX3R0bF9tYXggPSAyNTU7CiBzdGF0aWMgaW50IHRjcF9zeW5fcmV0cmllc19taW4gPSAxOwogc3RhdGljIGludCB0Y3Bfc3luX3JldHJpZXNfbWF4ID0gTUFYX1RDUF9TWU5DTlQ7CiYjNDM7c3RhdGljIGludCB0Y3Bfc3luYWNrX3JldHJpZXNfbWF4ID0gTUFYX1RDUF9TWU5BQ0tfUkVUUklFUzsKIHN0YXRpYyBpbnQgdGNwX3N5bl9saW5lYXJfdGltZW91dHNfbWF4ID0gTUFYX1RDUF9TWU5DTlQ7CiBzdGF0aWMgdW5zaWduZWQgbG9uZyBpcF9waW5nX2dyb3VwX3JhbmdlX21pbltdID0geyAwLCAwIH07CiBzdGF0aWMgdW5zaWduZWQgbG9uZyBpcF9waW5nX2dyb3VwX3JhbmdlX21heFtdID0geyBHSURfVF9NQVgsIEdJRF9UX01BWCB9OwpAQCAtMTAzNCw2ICYjNDM7MTAzNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIGlwdjRfbmV0X3RhYmxlW10gPSB7CiAJCS5tYXhsZW4JCT0gc2l6ZW9mKHU4KSwKIAkJLm1vZGUJCT0gMDY0NCwKIAkJLnByb2NfaGFuZGxlcgk9IHByb2NfZG91OHZlY19taW5tYXgsCiYjNDM7CQkuZXh0cmEyCQk9ICZhbXA7dGNwX3N5bmFja19yZXRyaWVzX21heAogCX0sCiAjaWZkZWYgQ09ORklHX1NZTl9DT09LSUVTCiAJewpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX3RpbWVyLmMgYi9uZXQvaXB2NC90Y3BfdGltZXIuYwppbmRleCBiZjE3MWI1ZTFlYjMwNi4uYmJlZGYyYjllMWJjZWEgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF90aW1lci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3RjcF90aW1lci5jCkBAIC00NjcsNiAmIzQzOzQ2Nyw3IEBAIHN0YXRpYyB2b2lkIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpCiAJICovCiAJbWF4X3JldHJpZXMgPSBSRUFEX09OQ0UoaWNzay0mZ3Q7aWNza19zeW5fcmV0cmllcykgPyA6CiAJCVJFQURfT05DRShzb2NrX25ldChzayktJmd0O2lwdjQuc3lzY3RsX3RjcF9zeW5hY2tfcmV0cmllcykgJiM0MzsgMTsKJiM0MzsJbWF4X3JldHJpZXMgPSBtaW5fdChpbnQsIG1heF9yZXRyaWVzLCBNQVhfVENQX1NZTkFDS19SRVRSSUVTKTsKIAogCWlmIChyZXEtJmd0O251bV90aW1lb3V0ICZndDs9IG1heF9yZXRyaWVzKSB7CiAJCXRjcF93cml0ZV9lcnIoc2spOwpAQCAtNDg4LDcgJiM0Mzs0ODksNyBAQCBzdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKQogCWlmICghdHAtJmd0O3JldHJhbnNfc3RhbXApCiAJCXRwLSZndDtyZXRyYW5zX3N0YW1wID0gdGNwX3RpbWVfc3RhbXBfdHModHApOwogCXRjcF9yZXNldF94bWl0X3RpbWVyKHNrLCBJQ1NLX1RJTUVfUkVUUkFOUywKLQkJCSAgcmVxLSZndDt0aW1lb3V0ICZsdDsmbHQ7IHJlcS0mZ3Q7bnVtX3RpbWVvdXQsIGZhbHNlKTsKJiM0MzsJCQkgICAgIHRjcF9yZXFza190aW1lb3V0X3NrKHNrLCByZXEpLCBmYWxzZSk7CiB9CiAKIHN0YXRpYyBib29sIHRjcF9ydHhfcHJvYmUwX3RpbWVkX291dChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE0OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NDAKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA1ODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUQ1AgU1lOLUFDSyBSZXRyeSBMb2dpYyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgaXQmIzM5O3MgYWRkcmVzc2luZyBzb21lIGNyaXRpY2FsIHJvYnVzdG5lc3MgaXNzdWVzIGluIHRoZSBUQ1AgU1lOLUFDSyByZXRyeSBtZWNoYW5pc20uIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGNoYW5nZXMgdG91Y2hpbmcgZm91ciBrZXkgZmlsZXM6IGBpbmNsdWRlL25ldC90Y3AuaGAsIGBuZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jYCwgYG5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jYCwgYW5kIGBuZXQvaXB2NC90Y3BfdGltZXIuY2AuIFRoaXMgdGVsbHMgbWUgaXQmIzM5O3Mgbm90IGEgdHJpdmlhbCBtb2RpZmljYXRpb24sIGJ1dCByYXRoZXIgYSBmb2N1c2VkIHJlZmluZW1lbnQgb2YgdGhlIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBwcm9jZXNzLgoKRmlyc3QsIGluIGBpbmNsdWRlL25ldC90Y3AuaGAsIHdlIHNlZSB0aGUgaW50cm9kdWN0aW9uIG9mIGBNQVhfVENQX1NZTkFDS19SRVRSSUVTYCwgbm93IGRlZmluZWQgYXMgNjMsIHdoaWNoIGlzIGltcG9ydGFudC4gQWxzbywgdGhlIGB0Y3BfcmVxc2tfdGltZW91dGAgZnVuY3Rpb24gaXMgbW9kaWZpZWQgdG8gdXNlIGB0Y3BfcmVxc2tfdGltZW91dF9za2AsIHdoaWNoIGhhcyBhIGNydWNpYWwgb3ZlcmZsb3cgY2hlY2suIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgZXhwbGljaXRseSBndWFyZGluZyBhZ2FpbnN0IHNoaWZ0IG92ZXJmbG93cywgd2hpY2ggaXMgc21hcnQuIElmIHRoZSByZXRyaWVzIGdvIHRvbyBoaWdoIGFuZCB0aW1lb3V0IHNoaWZ0cyB0b28gbWFueSB0aW1lcywgd2UgY2FuIG92ZXJmbG93IGEgdTY0IHdoaWNoIGNvdWxkIGNhdXNlIGlzc3Vlcy4KCk1vdmluZyB0byBgbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suY2AsIHRoZSBgcmVxc2tfdGltZXJfaGFuZGxlcmAgaXMgYmVpbmcgdXBkYXRlZCB0byBjYXAgYG1heF9zeW5fYWNrX3JldHJpZXNgIGF0IGBNQVhfVENQX1NZTkFDS19SRVRSSUVTYC4gU2ltaWxhcmx5LCB0aGV5JiMzOTtyZSBib3VuZGluZyBgcXVldWUtJmd0O3Jza3FfZGVmZXJfYWNjZXB0YCB3aXRoIHRoZSBzYW1lIGxpbWl0LCB3aGljaCBpcyBnb29kIGNvbnNpc3RlbmN5LgoKSW4gYG5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jYCwgdGhleSYjMzk7cmUgYWRkaW5nIGEgbmV3IHN5c2N0bCwgYHRjcF9zeW5hY2tfcmV0cmllc19tYXhgLCB3aGljaCBzZWVtcyB0byBwcm92aWRlIGEgdXNlci10dW5hYmxlIHVwcGVyIGJvdW5kIG9uIHRoZSByZXRyeSBjb3VudC4gVGhpcyBpcyBhIG5pY2UgZmVhdHVyZSwgZ2l2aW5nIGFkbWluaXN0cmF0b3JzIGEgbGV2ZWwgb2YgY29udHJvbCBvdmVyIHRoZSBzeXN0ZW0mIzM5O3MgYmVoYXZpb3IuCgpGaW5hbGx5LCBgbmV0L2lwdjQvdGNwX3RpbWVyLmNgIHNob3dzIHNpbWlsYXIgcHJvdGVjdGlvbnMgZm9yIGB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyYC4gVGhleSYjMzk7cmUgY2FwcGluZyB0aGUgcmV0cmllcyBhbmQgc3dpdGNoaW5nIHRvIGB0Y3BfcmVxc2tfdGltZW91dF9za2AsIGFnYWluLCB0byBhdm9pZCB0aGF0IHBlc2t5IHNoaWZ0IG92ZXJmbG93IHRoYXQgY2FuIG9jY3VyIHdoZW4gY2FsY3VsYXRpbmcgdGhlIHRpbWVvdXQuCgpPdmVyYWxsLCBpdCYjMzk7cyBjbGVhciB0aGlzIHBhdGNoIGlzIGFib3V0IGZpeGluZyBwb3RlbnRpYWwgb3ZlcmZsb3cgYnVncyBhbmQgZXN0YWJsaXNoaW5nIGhhcmQgbGltaXRzIG9uIHRoZSBudW1iZXIgb2YgU1lOLUFDSyByZXRyaWVzLiBJdCYjMzk7cyBhYm91dCBzdGFiaWxpdHkgYW5kIHByZXZlbnRpbmcgdGhlIHN5c3RlbSBmcm9tIGdldHRpbmcgc3R1Y2sgaW4gYW4gaW5maW5pdGUgcmV0cnkgbG9vcCBvciBtaXNjYWxjdWxhdGluZyB0aGUgdGltZW91dC4gVGhpcyBuZWVkcyB0byBiZSBmdXp6ZWQgdGhvcm91Z2hseS4KCk5vdywgbGV0JiMzOTtzIGNvbnNpZGVyIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gVGhlIGNvcmUgVENQIGZ1bmN0aW9uYWxpdHkgaXMgYWx3YXlzIGNvbXBpbGVkLCBzbyB3ZSBqdXN0IG5lZWQgYENPTkZJR19JTkVUYCB3aGljaCBpcyB2ZXJ5IGdlbmVyaWMuIFRoZSBwcmVzZW5jZSBvZiBgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcmAgaW4gYG5ldC9pcHY0L3RjcF90aW1lci5jYCBtZWFucyBgQ09ORklHX1RDUF9GQVNUT1BFTmAgbWlnaHQgYmUgYSByZWxldmFudCBjb25maWd1cmF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGtlZXAgdGhpcyBpbiBtaW5kIHdoZW4gZGV2aXNpbmcgZnV6emluZyBzdHJhdGVnaWVzLCBhcyB0aGUgYmVoYXZpb3IgbWF5IHZhcnkgZGVwZW5kaW5nIG9uIHdoZXRoZXIgRmFzdCBPcGVuIGlzIGVuYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX2Zhc3RvcGVuX3N5bmFja190aW1lciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaW5wdXQuYz03MDczPXN0YXRpYyB2b2lkIHRjcF9yY3Zfc3lucmVjdl9zdGF0ZV9mYXN0b3BlbihzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmMtNzA4NS1cdFdSSVRFX09OQ0UoaW5ldF9jc2soc2spLVx1MDAzZWljc2tfcmV0cmFuc21pdHMsIDApO1xubmV0L2lwdjQvdGNwX2lucHV0LmM6NzA4NjpcdC8qIEluIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoKSBvbiB0aGUgZmlyc3QgU1lOQUNLIFJUTyB3ZSBzZXRcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcwODctXHQgKiByZXRyYW5zX3N0YW1wIGJ1dCBkb24mIzM5O3QgZW50ZXIgQ0FfTG9zcywgc28gaW4gY2FzZSB0aGF0IGhhcHBlbmVkIHdlXG4tLVxubmV0L2lwdjQvdGNwX3RpbWVyLmM9NDQwPXN0YXRpYyB2b2lkIHRjcF91cGRhdGVfcnRvX3N0YXRzKHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQvaXB2NC90Y3BfdGltZXIuYy00NTYtICovXG5uZXQvaXB2NC90Y3BfdGltZXIuYzo0NTc6c3RhdGljIHZvaWQgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcbm5ldC9pcHY0L3RjcF90aW1lci5jLTQ1OC17XG4tLVxubmV0L2lwdjQvdGNwX3RpbWVyLmM9NTM2PXZvaWQgdGNwX3JldHJhbnNtaXRfdGltZXIoc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC9pcHY0L3RjcF90aW1lci5jLTU0OC1cdFx0XHQgICAgIHNrLVx1MDAzZXNrX3N0YXRlICE9IFRDUF9GSU5fV0FJVDEpO1xubmV0L2lwdjQvdGNwX3RpbWVyLmM6NTQ5Olx0XHR0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHNrLCByZXEpO1xubmV0L2lwdjQvdGNwX3RpbWVyLmMtNTUwLVx0XHQvKiBCZWZvcmUgd2UgcmVjZWl2ZSBBQ0sgdG8gb3VyIFNZTi1BQ0sgZG9uJiMzOTt0IHJldHJhbnNtaXRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDgzCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGEgVGltZXIgaW4gdGhlIFRDUCBTdGFjayoqCgpBbHJpZ2h0LCBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyYCB2YXJpYWJsZS4gVGhlIGZpcnN0IHRoaW5nIEkgYWx3YXlzIGRvIHdoZW4gSSBzZWUgc29tZXRoaW5nIGxpa2UgdGhpcyBpcyBsb29rIGZvciBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyIGtlcm5lbCBjb25maWd1cmF0aW9uIG9yIGZlYXR1cmUgc2V0LiBUaGF0IGBpZmRlZmAgY2hlY2sgaXMgdGhlIGtleS4gSXMgdGhpcyB0aW1lciBvbmx5IGRlZmluZWQgYW5kIHVzZWQgaWYgYSBjZXJ0YWluIGZlYXR1cmUsIG1heWJlIEZhc3QgT3BlbiBpdHNlbGYsIGlzIGVuYWJsZWQ/IE9yIGlzIGl0IHBhcnQgb2YgYSBtb3JlIGNvcmUgc2V0IG9mIFRDUCBmdW5jdGlvbmFsaXR5LCBwb3RlbnRpYWxseSBtb2RpZmllZCBieSBhIGRpZmZlcmVudCBmZWF0dXJlPyBLbm93aW5nIHRoYXQgd2lsbCBzaWduaWZpY2FudGx5IG5hcnJvdyBkb3duIHRoZSBwbGFjZXMgSSBuZWVkIHRvIGxvb2sgZm9yIGl0cyB1c2UgYW5kIGhvdyBpdCYjMzk7cyBpbXBhY3RlZCBieSB0aGUgc3Vycm91bmRpbmcgY29kZS4gVGltZSB0byBjaGVjayB0aG9zZSBgI2lmZGVmYCBkaXJlY3RpdmVzLiBMZXQmIzM5O3Mgc2VlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjaWZkZWYuKkZBU1RPUEVOJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzE5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIFRDUCBGYXN0IE9wZW4gU1lOLUFDSyBUaW1lcioqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBndXRzIG9mIFRDUCBGYXN0IE9wZW4uIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGhhbmRsaW5nIG9mIHRoZSBgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcmAuIFRoYXQgcG9pbnRzIG1lIGRpcmVjdGx5IHRvIGBuZXQvaXB2NC90Y3BfdGltZXIuY2AgaW4gdGhlIGtlcm5lbCBzb3VyY2UuIEkgc3VzcGVjdCB0aGVyZSYjMzk7cyBzb21ldGhpbmcgc3BlY2lmaWMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgYWJvdXQgdGhlIHRpbWVyJiMzOTtzIHJvbGUsIHByb2JhYmx5IHJlZ2FyZGluZyByZXRyYW5zbWlzc2lvbnMsIHRpbWVvdXRzLCBvciBzdGF0ZSB0cmFuc2l0aW9ucyByZWxhdGVkIHRvIEZhc3QgT3BlbiYjMzk7cyBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQuIE15IGluc3RpbmN0IHRlbGxzIG1lIHRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZmluZCB0aGUgbG9naWMgZm9yIGhhbmRsaW5nIHRoZSBTWU4tQUNLJiMzOTtzIGFja25vd2xlZGdtZW50IChvciBsYWNrIHRoZXJlb2YpIHdoZW4gRmFzdCBPcGVuIGlzIGluIHBsYXkuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBlZGdlIGNhc2VzIOKAkyB3aGF0IGhhcHBlbnMgaWYgdGhlIFNZTi1BQ0sgZ2V0cyBsb3N0LCBvciBkZWxheWVkLCB3aXRoIEZhc3QgT3BlbiBlbmFibGVkPyBMZXQmIzM5O3MgZ2V0IHRvIHRoZSBjb2RlIGFuZCBzZWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfdGltZXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQ1MDpcdFx0dHAtXHUwMDNldG90YWxfcnRvJiM0MzsmIzQzOztcbiA0NTE6XHR9XG4gNDUyOlx0XG4gNDUzOlx0LypcbiA0NTQ6XHQgKlx0VGltZXIgZm9yIEZhc3QgT3BlbiBzb2NrZXQgdG8gcmV0cmFuc21pdCBTWU5BQ0suIE5vdGUgdGhhdCB0aGVcbiA0NTU6XHQgKlx0c2sgaGVyZSBpcyB0aGUgY2hpbGQgc29ja2V0LCBub3QgdGhlIHBhcmVudCAobGlzdGVuZXIpIHNvY2tldC5cbiA0NTY6XHQgKi9cbiA0NTc6XHRzdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuIDQ1ODpcdHtcbiA0NTk6XHRcdHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29jayAqaWNzayA9IGluZXRfY3NrKHNrKTtcbiA0NjA6XHRcdHN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spO1xuIDQ2MTpcdFx0aW50IG1heF9yZXRyaWVzO1xuIDQ2MjpcdFxuIDQ2MzpcdFx0dGNwX3N5bl9hY2tfdGltZW91dChyZXEpO1xuIDQ2NDpcdFxuIDQ2NTpcdFx0LyogQWRkIG9uZSBtb3JlIHJldHJ5IGZvciBmYXN0b3Blbi5cbiA0NjY6XHRcdCAqIFBhaXJlZCB3aXRoIFdSSVRFX09OQ0UoKSBpbiB0Y3Bfc29ja19zZXRfc3luY250KClcbiA0Njc6XHRcdCAqL1xuIDQ2ODpcdFx0bWF4X3JldHJpZXMgPSBSRUFEX09OQ0UoaWNzay1cdTAwM2VpY3NrX3N5bl9yZXRyaWVzKSA/IDpcbiA0Njk6XHRcdFx0UkVBRF9PTkNFKHNvY2tfbmV0KHNrKS1cdTAwM2VpcHY0LnN5c2N0bF90Y3Bfc3luYWNrX3JldHJpZXMpICYjNDM7IDE7XG4gNDcwOlx0XHRtYXhfcmV0cmllcyA9IG1pbl90KGludCwgbWF4X3JldHJpZXMsIE1BWF9UQ1BfU1lOQUNLX1JFVFJJRVMpO1xuIDQ3MTpcdFxuIDQ3MjpcdFx0aWYgKHJlcS1cdTAwM2VudW1fdGltZW91dCBcdTAwM2U9IG1heF9yZXRyaWVzKSB7XG4gNDczOlx0XHRcdHRjcF93cml0ZV9lcnIoc2spO1xuIDQ3NDpcdFx0XHRyZXR1cm47XG4gNDc1Olx0XHR9XG4gNDc2Olx0XHQvKiBMb3dlciBjd25kIGFmdGVyIGNlcnRhaW4gU1lOQUNLIHRpbWVvdXQgbGlrZSB0Y3BfaW5pdF90cmFuc2ZlcigpICovXG4gNDc3Olx0XHRpZiAoaWNzay1cdTAwM2VpY3NrX3JldHJhbnNtaXRzID09IDEpXG4gNDc4Olx0XHRcdHRjcF9lbnRlcl9sb3NzKHNrKTtcbiA0Nzk6XHRcdC8qIFhYWCAoVEZPKSAtIFVubGlrZSByZWd1bGFyIFNZTi1BQ0sgcmV0cmFuc21pdCwgd2UgaWdub3JlIGVycm9yXG4gNDgwOlx0XHQgKiByZXR1cm5lZCBmcm9tIHJ0eF9zeW5fYWNrKCkgdG8gbWFrZSBpdCBtb3JlIHBlcnNpc3RlbnQgbGlrZVxuIDQ4MTpcdFx0ICogcmVndWxhciByZXRyYW5zbWl0IGJlY2F1c2UgaWYgdGhlIGNoaWxkIHNvY2tldCBoYXMgYmVlbiBhY2NlcHRlZFxuIDQ4MjpcdFx0ICogaXQmIzM5O3Mgbm90IGdvb2QgdG8gZ2l2ZSB1cCB0b28gZWFzaWx5LlxuIDQ4MzpcdFx0ICovXG4gNDg0Olx0XHR0Y3BfcnR4X3N5bmFjayhzaywgcmVxKTtcbiA0ODU6XHRcdGlmIChyZXEtXHUwMDNlbnVtX3JldHJhbnMgXHUwMDNlIDEgXHUwMDI2XHUwMDI2IHRjcF9yc2socmVxKS1cdTAwM2VhY2NlY25fb2spXG4gNDg2Olx0XHRcdHRjcF9yc2socmVxKS1cdTAwM2VhY2NlY25fZmFpbF9tb2RlIHw9IFRDUF9BQ0NFQ05fQUNFX0ZBSUxfU0VORDtcbiA0ODc6XHRcdHJlcS1cdTAwM2VudW1fdGltZW91dCYjNDM7JiM0Mzs7XG4gNDg4Olx0XHR0Y3BfdXBkYXRlX3J0b19zdGF0cyhzayk7XG4gNDg5Olx0XHRpZiAoIXRwLVx1MDAzZXJldHJhbnNfc3RhbXApXG4gNDkwOlx0XHRcdHRwLVx1MDAzZXJldHJhbnNfc3RhbXAgPSB0Y3BfdGltZV9zdGFtcF90cyh0cCk7XG4gNDkxOlx0XHR0Y3BfcmVzZXRfeG1pdF90aW1lcihzaywgSUNTS19USU1FX1JFVFJBTlMsXG4gNDkyOlx0XHRcdFx0ICAgICB0Y3BfcmVxc2tfdGltZW91dF9zayhzaywgcmVxKSwgZmFsc2UpO1xuIDQ5MzpcdH1cbiA0OTQ6XHRcbiA0OTU6XHRzdGF0aWMgYm9vbCB0Y3BfcnR4X3Byb2JlMF90aW1lZF9vdXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxuIDQ5NjpcdFx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIDQ5NzpcdFx0XHRcdFx0ICAgICB1MzIgcnR4X2RlbHRhKVxuIDQ5ODpcdHtcbiA0OTk6XHRcdGNvbnN0IHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29jayAqaWNzayA9IGluZXRfY3NrKHNrKTtcbiA1MDA6XHRcdHUzMiB1c2VyX3RpbWVvdXQgPSBSRUFEX09OQ0UoaWNzay1cdTAwM2VpY3NrX3VzZXJfdGltZW91dCk7XG4gNTAxOlx0XHRjb25zdCBzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3NrKHNrKTtcbiA1MDI6XHRcdGludCB0aW1lb3V0ID0gdGNwX3J0b19tYXgoc2spICogMjtcbiA1MDM6XHRcdHMzMiByY3ZfZGVsdGE7XG4gNTA0Olx0XG4gNTA1Olx0XHRpZiAodXNlcl90aW1lb3V0KSB7XG4gNTA2Olx0XHRcdC8qIElmIHVzZXIgYXBwbGljYXRpb24gc3BlY2lmaWVkIGEgVENQX1VTRVJfVElNRU9VVCxcbiA1MDc6XHRcdFx0ICogaXQgZG9lcyBub3Qgd2FudCB3aW4gMCBwYWNrZXRzIHRvICYjMzk7cmVzZXQgdGhlIHRpbWVyJiMzOTtcbiA1MDg6XHRcdFx0ICogd2hpbGUgcmV0cmFuc21pdHMgYXJlIG5vdCBtYWtpbmcgcHJvZ3Jlc3MuXG4gNTA5Olx0XHRcdCAqL1xuIDUxMDpcdFx0XHRpZiAocnR4X2RlbHRhIFx1MDAzZSB1c2VyX3RpbWVvdXQpXG4gNTExOlx0XHRcdFx0cmV0dXJuIHRydWU7XG4gNTEyOlx0XHRcdHRpbWVvdXQgPSBtaW5fdCh1MzIsIHRpbWVvdXQsIG1zZWNzX3RvX2ppZmZpZXModXNlcl90aW1lb3V0KSk7XG4gNTEzOlx0XHR9XG4gNTE0Olx0XHQvKiBOb3RlOiB0aW1lciBpbnRlcnJ1cHQgbWlnaHQgaGF2ZSBiZWVuIGRlbGF5ZWQgYnkgYXQgbGVhc3Qgb25lIGppZmZ5LFxuIDUxNTpcdFx0ICogYW5kIHRwLVx1MDAzZXJjdl90c3RhbXAgbWlnaHQgdmVyeSB3ZWxsIGhhdmUgYmVlbiB3cml0dGVuIHJlY2VudGx5LlxuIDUxNjpcdFx0ICogcmN2X2RlbHRhIGNhbiB0aHVzIGJlIG5lZ2F0aXZlLlxuIDUxNzpcdFx0ICovXG4gNTE4Olx0XHRyY3ZfZGVsdGEgPSB0Y3BfdGltZW91dF9leHBpcmVzKHNrKSAtIHRwLVx1MDAzZXJjdl90c3RhbXA7XG4gNTE5Olx0XHRpZiAocmN2X2RlbHRhIFx1MDAzYz0gdGltZW91dClcbiA1MjA6XHRcdFx0cmV0dXJuIGZhbHNlO1xuIDUyMTpcdFxuIDUyMjpcdFx0cmV0dXJuIG1zZWNzX3RvX2ppZmZpZXMocnR4X2RlbHRhKSBcdTAwM2UgdGltZW91dDtcbiA1MjM6XHR9XG4gNTI0Olx0XG4gNTI1Olx0LyoqXG4gNTI2Olx0ICogIHRjcF9yZXRyYW5zbWl0X3RpbWVyKCkgLSBUaGUgVENQIHJldHJhbnNtaXQgdGltZW91dCBoYW5kbGVyXG4gNTI3Olx0ICogIEBzazogIFBvaW50ZXIgdG8gdGhlIGN1cnJlbnQgc29ja2V0LlxuIDUyODpcdCAqXG4gNTI5Olx0ICogIFRoaXMgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgd2hlbiB0aGUga2VybmVsIHRpbWVyIGZvciBhIFRDUCBwYWNrZXRcbiA1MzA6XHQgKiAgb2YgdGhpcyBzb2NrZXQgZXhwaXJlcy5cbiA1MzE6XHQgKlxuIDUzMjpcdCAqICBJdCBoYW5kbGVzIHJldHJhbnNtaXNzaW9uLCB0aW1lciBhZGp1c3RtZW50IGFuZCBvdGhlciBuZWNlc3NhcnkgbWVhc3VyZXMuXG4gNTMzOlx0ICpcbiA1MzQ6XHQgKiAgUmV0dXJuczogTm90aGluZyAodm9pZClcbiA1MzU6XHQgKi9cbiA1MzY6XHR2b2lkIHRjcF9yZXRyYW5zbWl0X3RpbWVyKHN0cnVjdCBzb2NrICpzaylcbiA1Mzc6XHR7XG4gNTM4Olx0XHRzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3NrKHNrKTtcbiA1Mzk6XHRcdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrKTtcbiA1NDA6XHRcdHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29jayAqaWNzayA9IGluZXRfY3NrKHNrKTtcbiA1NDE6XHRcdHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcTtcbiA1NDI6XHRcdHN0cnVjdCBza19idWZmICpza2I7XG4gNTQzOlx0XG4gNTQ0Olx0XHRyZXEgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHRwLVx1MDAzZWZhc3RvcGVuX3JzayxcbiA1NDU6XHRcdFx0XHRcdFx0bG9ja2RlcF9zb2NrX2lzX2hlbGQoc2spKTtcbiA1NDY6XHRcdGlmIChyZXEpIHtcbiA1NDc6XHRcdFx0V0FSTl9PTl9PTkNFKHNrLVx1MDAzZXNrX3N0YXRlICE9IFRDUF9TWU5fUkVDViBcdTAwMjZcdTAwMjZcbiA1NDg6XHRcdFx0XHQgICAgIHNrLVx1MDAzZXNrX3N0YXRlICE9IFRDUF9GSU5fV0FJVDEpO1xuIDU0OTpcdFx0XHR0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHNrLCByZXEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE0OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczMTkKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgVENQIEZhc3QgT3BlbiBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIFRDUCBGYXN0IE9wZW4uIFRoZSBjb2RlIHNlZW1zIHRvIGJlIGNoZWNraW5nIGZvciBgQ09ORklHX1RDUF9GQVNUT1BFTmAsIG9yIGlmIHRoYXQmIzM5O3MgdW5kZWZpbmVkLCBqdXN0IHJlbHlpbmcgb24gYENPTkZJR19JTkVUYC4gV2FpdCBhIG1pbnV0ZSwgdGhhdCBkb2VzbiYjMzk7dCBzb3VuZCByaWdodC4gSSYjMzk7bSBwcmV0dHkgc3VyZSBUQ1AgRmFzdCBPcGVuIGlzbiYjMzk7dCBhIGNvbXBpbGUtdGltZSBvcHRpb24gaW4gdGhlIHdheSB0aGlzIGNvZGUgc3VnZ2VzdHMuIEl0JiMzOTtzIGFsbW9zdCBhbHdheXMgY29tcGlsZWQgaW4gYW5kIGNvbnRyb2xsZWQsIGFzIEkgcmVjYWxsLCB2aWEgYHN5c2N0bGAuIExldCBtZSBxdWlja2x5IGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGlzLiBJIHNob3VsZCBjaGVjayBpZiBgQ09ORklHX1RDUF9GQVNUT1BFTmAgZXZlbiBleGlzdHMgaW4gdGhpcyBjb250ZXh0LiBJdCBzZWVtcyBvZGQgdGhhdCB0aGUgY29kZSB3b3VsZCBjb25kaXRpb25hbGx5IGNvbXBpbGUgYmFzZWQgb24gaXRzIHByZXNlbmNlLiBUaGlzIHdhcnJhbnRzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiB0byBhdm9pZCBhbnkgcG90ZW50aWFsbHkgZmxhd2VkIGNvbmRpdGlvbmFsIGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBUQ1BfRkFTVE9QRU4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTgwCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUgd2UgZ28uIExldCYjMzk7cyBkaWcgaW50byB0aGlzLgoKKipJbnZlc3RpZ2F0aW5nIFRDUCBGYXN0IE9wZW4gYW5kIFJlbGF0ZWQgRnVuY3Rpb25hbGl0eSoqCgpBbHJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgdG8gZXN0YWJsaXNoIGlzIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHNpdHVhdGlvbiB3aGVyZSBgQ09ORklHX1RDUF9GQVNUT1BFTmAgaXNuJiMzOTt0IGVuYWJsZWQuIFRoYXQmIzM5O3MgYSBrZXkgaW5pdGlhbCBjb25zdHJhaW50LCBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kIHRocm91Z2hvdXQgdGhpcyBpbnZlc3RpZ2F0aW9uLiBOb3csIHdoZXJlIHRvIGdvIGZyb20gdGhlcmU/IExldCYjMzk7cyBjb25zaWRlciB0aGUgcmVsZXZhbnQgcm91dGluZXMuLi4gSSB3b25kZXIgYWJvdXQgYHJlcXNrX3RpbWVyX2hhbmRsZXJgLiBUaGF0JiMzOTtzIG9mdGVuIGEgY3J1Y2lhbCBwaWVjZSBpbiB0aGUgY29ubmVjdGlvbiBzZXR1cCBsaWZlY3ljbGUsIHNvIGl0JiMzOTtzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gQW5kIGFzIGEgc3RhcnRpbmcgcG9pbnQsIGl0IGxvb2tzIGxpa2UgdGhhdCBjb2RlIHJlc2lkZXMgaW4gYG5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmNgLiBMZXQmIzM5O3MgZm9jdXMgdGhlcmUuIFRoYXQgZGlyZWN0b3J5IGlzIGEgcHJldHR5IGdvb2QgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIGNvbm5lY3Rpb24tc3BlY2lmaWMgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVxc2tfdGltZXJfaGFuZGxlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jPTEwMTU9dm9pZCBpbmV0X2Nza19yZXFza19xdWV1ZV9kcm9wX2FuZF9wdXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMDIwLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxMDIxOnN0YXRpYyB2b2lkIHJlcXNrX3RpbWVyX2hhbmRsZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTEwMjIte1xuLS1cbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTA0Ny1cdFx0cmVmY291bnRfc2V0KFx1MDAyNm5yZXEtXHUwMDNlcnNrX3JlZmNudCwgMiAmIzQzOyAxKTtcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTA0ODpcdFx0dGltZXJfc2V0dXAoXHUwMDI2bnJlcS1cdTAwM2Vyc2tfdGltZXIsIHJlcXNrX3RpbWVyX2hhbmRsZXIsIFRJTUVSX1BJTk5FRCk7XG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTEwNDktXHRcdHJlcXNrX3F1ZXVlX21pZ3JhdGVkKFx1MDAyNmluZXRfY3NrKG5zayktXHUwMDNlaWNza19hY2NlcHRfcXVldWUsIHJlcSk7XG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz0xMTQyPXN0YXRpYyBib29sIHJlcXNrX3F1ZXVlX2hhc2hfcmVxKHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcbi0tXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTExNTAtXHRyZXEtXHUwMDNldGltZW91dCA9IHRjcF90aW1lb3V0X2luaXQoKHN0cnVjdCBzb2NrICopcmVxKTtcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTE1MTpcdHRpbWVyX3NldHVwKFx1MDAyNnJlcS1cdTAwM2Vyc2tfdGltZXIsIHJlcXNrX3RpbWVyX2hhbmRsZXIsIFRJTUVSX1BJTk5FRCk7XG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTExNTItXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWlncmF0ZV9yZXVzZXBvcnQuYz01ND1zdGF0aWMgc3RydWN0IG1pZ3JhdGVfcmV1c2Vwb3J0X3Rlc3RfY2FzZSB7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWlncmF0ZV9yZXVzZXBvcnQuYy04My1cdHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21pZ3JhdGVfcmV1c2Vwb3J0LmM6ODQ6XHRcdC5uYW1lID0gXCYjMzQ7SVB2NCBUQ1BfTkVXX1NZTl9SRUNWIHJlcXNrX3RpbWVyX2hhbmRsZXJcJiMzNDssXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTg1LVx0XHQuZmFtaWx5ID0gQUZfSU5FVCxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTExNS1cdHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21pZ3JhdGVfcmV1c2Vwb3J0LmM6MTE2Olx0XHQubmFtZSA9IFwmIzM0O0lQdjYgVENQX05FV19TWU5fUkVDViByZXFza190aW1lcl9oYW5kbGVyXCYjMzQ7LFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWlncmF0ZV9yZXVzZXBvcnQuYy0xMTctXHRcdC5mYW1pbHkgPSBBRl9JTkVUNixcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jPTQ5MT1zdGF0aWMgdm9pZCBydW5fdGVzdChzdHJ1Y3QgbWlncmF0ZV9yZXVzZXBvcnRfdGVzdF9jYXNlICp0ZXN0X2Nhc2UsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWlncmF0ZV9yZXVzZXBvcnQuYy01NDctXHRcdC8qIFdhaXQgZm9yIFNZTiYjNDM7QUNLIHRpbWVycyB0byBleHBpcmUgc28gdGhhdFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWlncmF0ZV9yZXVzZXBvcnQuYzo1NDg6XHRcdCAqIHJlcXNrX3RpbWVyX2hhbmRsZXIoKSBtaWdyYXRlcyBUQ1BfTkVXX1NZTl9SRUNWIHJlcXVlc3RzLlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWlncmF0ZV9yZXVzZXBvcnQuYy01NDktXHRcdCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjUyCgkJCQkJCQlvdXRwdXQ6IDEyMgoJCQkJCQkJdGhvdWdodHM6IDM4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgU1lOLUFDSyBSZXRyYW5zbWl0IFRpbWVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIHNlZSwgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBjcml0aWNhbCBUQ1AgZnVuY3Rpb25zOiBgcmVxc2tfdGltZXJfaGFuZGxlcmAsIHdoaWNoIGhhbmRsZXMgdGhlIFNZTi1BQ0sgcmV0cmFuc21pdHMgZm9yIHN0YW5kYXJkIFRDUCBjb25uZWN0aW9ucywgYW5kIGB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyYCBmb3IgVENQIEZhc3QgT3Blbi4gQm90aCBhcmUgYWJzb2x1dGVseSBjb3JlIHRvIHRoZSBUQ1AgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IHByb2Nlc3MuCgpUaGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZ3VyYXRpb25zIGhlcmUgYXJlIHN0cmFpZ2h0Zm9yd2FyZDogYElORVRgIGlzIGEgZ2l2ZW4sIG9mIGNvdXJzZS4gU2luY2UgdGhpcyBpbXBhY3RzIElQdjYgVENQIGFzIHdlbGwsIGBJUFY2YCBpcyBhbHNvIGFwcGxpY2FibGUuCgpNeSBwcmltYXJ5IHN5bWJvbHMgb2YgaW50ZXJlc3QgYXJlIGRlZmluaXRlbHkgYHJlcXNrX3RpbWVyX2hhbmRsZXJgIGFuZCBgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcmAuIFdhaXQsIGhhbmcgb24uLi4gYHRjcF9yZXFza190aW1lb3V0X3NrYCBpcyBhbiBpbmxpbmUgZnVuY3Rpb24gZGVmaW5lZCBpbiBgaW5jbHVkZS9uZXQvdGNwLmhgLiBUaGF0IG1lYW5zIGl0IHdvbiYjMzk7dCBzaG93IHVwIGFzIGEgc3RhbmRhbG9uZSBzeW1ib2wgaW4gdGhlIGtlcm5lbCBpbWFnZSwgc28gaXQmIzM5O3Mgbm90IGEgZGlyZWN0IGZvY3VzIHBvaW50LiBJJiMzOTt2ZSBjb25maXJtZWQgdGhpcyB3aXRoIGEgcXVpY2sgY2hlY2s6IHRoZSBoZWFkZXIgc2hvd3MgaXQgYXMgaW5saW5lLgoKU28sIHRvIGJlIHByZWNpc2UsIHRoZSBrZXkgc3ltYm9scyBhcmU6CiogICBgcmVxc2tfdGltZXJfaGFuZGxlcmAKKiAgIGB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyYAoKVGhlIHBhdGNoJiMzOTtzIGltcGFjdCBpcyBwcmV0dHkgY2xlYXI6IGl0JiMzOTtzIGZpeGluZyBhIHBvdGVudGlhbCBzaGlmdCBvdmVyZmxvdyBpbiB0aGUgU1lOLUFDSyB0aW1lb3V0IGNhbGN1bGF0aW9uIGFuZCBlbmZvcmNpbmcgYSBtYXhpbXVtIG9mIDYzIFNZTi1BQ0sgcmV0cmllcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRlZXAgd2l0aGluIHRoZSBUQ1Agc3RhY2suIEl0IGRpcmVjdGx5IGFmZmVjdHMgaG93IGNvbm5lY3Rpb25zIGFyZSBlc3RhYmxpc2hlZCBhbmQgaG93IHRpbWVvdXRzIGFyZSBoYW5kbGVkLiBUaGlzIHNjcmVhbXMgJiMzNDtmdXp6aW5nIHRhcmdldCYjMzQ7IOKAkyB0aGUgU1lOLUFDSyB0aW1lciBoYW5kbGVycyBhcmUgdGhlIHBsYWNlIHRvIGZvY3VzLiBXZSBuZWVkIHRvIGV4cGxvcmUgYm90aCByZWd1bGFyIGFuZCBGYXN0IE9wZW4gY29ubmVjdGlvbiBzY2VuYXJpb3MuCgpHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2UsIGFuZCBsb29raW5nIGF0IHRoZSBmdW5kYW1lbnRhbCBUQ1AgYXNwZWN0cywgSSB0aGluayB0aGUgYElORVRgIGNvbmZpZyBpcyBhZGVxdWF0ZS4gVGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgb2J2aW91cyBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBJIGNhbiBzZWUsIGp1c3Qgc3RhbmRhcmQgVENQIG9wZXJhdGlvbi4KCkkmIzM5O20gY29uZmlkZW50IGluIHRoaXMgYXNzZXNzbWVudC4gTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZXFza190aW1lcl9oYW5kbGVyJiMzNDssCiAgICAmIzM0O3RjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgc2hpZnQgb3ZlcmZsb3cgaW4gVENQIFNZTi1BQ0sgdGltZW91dCBjYWxjdWxhdGlvbiBhbmQgY2FwcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgU1lOLUFDSyByZXRyaWVzIHRvIDYzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgVENQIHN0YWNrIHRoYXQgYWZmZWN0cyBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgYW5kIHRpbWVvdXQgaGFuZGxpbmcuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBTWU4tQUNLIHRpbWVyIGhhbmRsZXJzIGZvciBib3RoIHJlZ3VsYXIgYW5kIEZhc3QgT3BlbiBjb25uZWN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JlcXNrX3RpbWVyX2hhbmRsZXImIzM0OywKICAgICYjMzQ7dGNwX2Zhc3RvcGVuX3N5bmFja190aW1lciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBzaGlmdCBvdmVyZmxvdyBpbiBUQ1AgU1lOLUFDSyB0aW1lb3V0IGNhbGN1bGF0aW9uIGFuZCBjYXBzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBTWU4tQUNLIHJldHJpZXMgdG8gNjMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBUQ1Agc3RhY2sgdGhhdCBhZmZlY3RzIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgdGltZW91dCBoYW5kbGluZy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIFNZTi1BQ0sgdGltZXIgaGFuZGxlcnMgZm9yIGJvdGggcmVndWxhciBhbmQgRmFzdCBPcGVuIGNvbm5lY3Rpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6MzA6MTkuNDMyMDIzOTY2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTExODEwOTQzMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJlcXNrX3RpbWVyX2hhbmRsZXJcIixcbiAgICBcInRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBzaGlmdCBvdmVyZmxvdyBpbiBUQ1AgU1lOLUFDSyB0aW1lb3V0IGNhbGN1bGF0aW9uIGFuZCBjYXBzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBTWU4tQUNLIHJldHJpZXMgdG8gNjMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBUQ1Agc3RhY2sgdGhhdCBhZmZlY3RzIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgdGltZW91dCBoYW5kbGluZy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIFNZTi1BQ0sgdGltZXIgaGFuZGxlcnMgZm9yIGJvdGggcmVndWxhciBhbmQgRmFzdCBPcGVuIGNvbm5lY3Rpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDozMDoxOS40MzIwMzI4NTdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MTQ3NTcyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU1YjQ4MjhkZTQ2MWQ0YzA5Mjk3ZjIyMWJmOGRjNjFhY2EzNTM2NjVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMiAxNDozMDoxNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC90Y3AuaCBiL2luY2x1ZGUvbmV0L3RjcC5oXFxuaW5kZXggNmQzNzZlYTRkMWMwMWQuLmVlNzg0MzZiODk2NDVhIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L3RjcC5oXFxuKysrIGIvaW5jbHVkZS9uZXQvdGNwLmhcXG5AQCAtMTgzLDYgKzE4Myw3IEBAIHN0YXRpY19hc3NlcnQoKDEgXFx1MDAzY1xcdTAwM2MgQVRPX0JJVFMpIFxcdTAwM2UgVENQX0RFTEFDS19NQVgpO1xcbiAjZGVmaW5lIE1BWF9UQ1BfS0VFUElOVFZMXFx0MzI3NjdcXG4gI2RlZmluZSBNQVhfVENQX0tFRVBDTlRcXHRcXHQxMjdcXG4gI2RlZmluZSBNQVhfVENQX1NZTkNOVFxcdFxcdDEyN1xcbisjZGVmaW5lIE1BWF9UQ1BfU1lOQUNLX1JFVFJJRVNcXHQ2M1xcbiBcXG4gLyogRW5zdXJlIHRoYXQgVENQIFBBV1MgY2hlY2tzIGFyZSByZWxheGVkIGFmdGVyIH4yMTQ3IHNlY29uZHNcXG4gICogdG8gYXZvaWQgb3ZlcmZsb3dzLiBUaGlzIGFzc3VtZXMgYSBjbG9jayBzbWFsbGVyIHRoYW4gMSBNaHouXFxuQEAgLTg4MiwxMiArODgzLDIyIEBAIHN0YXRpYyBpbmxpbmUgdTMyIF9fdGNwX3NldF9ydG8oY29uc3Qgc3RydWN0IHRjcF9zb2NrICp0cClcXG4gXFx0cmV0dXJuIHVzZWNzX3RvX2ppZmZpZXMoKHRwLVxcdTAwM2VzcnR0X3VzIFxcdTAwM2VcXHUwMDNlIDMpICsgdHAtXFx1MDAzZXJ0dHZhcl91cyk7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dChzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dF9zayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuIHtcXG4tXFx0dTY0IHRpbWVvdXQgPSAodTY0KXJlcS1cXHUwMDNldGltZW91dCBcXHUwMDNjXFx1MDAzYyByZXEtXFx1MDAzZW51bV90aW1lb3V0O1xcbitcXHR1MzIgcnRvX21heCA9IHRjcF9ydG9fbWF4KHNrKTtcXG4rXFx0dTY0IHRpbWVvdXQgPSByZXEtXFx1MDAzZXRpbWVvdXQ7XFxuK1xcbitcXHRpZiAocmVxLVxcdTAwM2VudW1fdGltZW91dCBcXHUwMDNlPSBCSVRTX1BFUl9UWVBFKHU2NCkgfHxcXG4rXFx0ICAgIHRpbWVvdXQgXFx1MDAzZSBVNjRfTUFYIFxcdTAwM2VcXHUwMDNlIHJlcS1cXHUwMDNlbnVtX3RpbWVvdXQpXFxuK1xcdFxcdHJldHVybiBydG9fbWF4O1xcbitcXG4rXFx0cmV0dXJuICh1bnNpZ25lZCBsb25nKW1pbl90KHU2NCwgdGltZW91dCBcXHUwMDNjXFx1MDAzYyByZXEtXFx1MDAzZW51bV90aW1lb3V0LCBydG9fbWF4KTtcXG4rfVxcbiBcXG4tXFx0cmV0dXJuICh1bnNpZ25lZCBsb25nKW1pbl90KHU2NCwgdGltZW91dCxcXG4tXFx0XFx0XFx0XFx0ICAgIHRjcF9ydG9fbWF4KHJlcS1cXHUwMDNlcnNrX2xpc3RlbmVyKSk7XFxuK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dChzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuK3tcXG4rXFx0cmV0dXJuIHRjcF9yZXFza190aW1lb3V0X3NrKHJlcS1cXHUwMDNlcnNrX2xpc3RlbmVyLCByZXEpO1xcbiB9XFxuIFxcbiB1MzIgdGNwX2RlbGFja19tYXgoY29uc3Qgc3RydWN0IHNvY2sgKnNrKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYyBiL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmNcXG5pbmRleCA1NjkwMmJiYTU0ODM4Yi4uYjc0MjEyYmFlM2RkMjUgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suY1xcbisrKyBiL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmNcXG5AQCAtMTA1Niw2ICsxMDU2LDggQEAgc3RhdGljIHZvaWQgcmVxc2tfdGltZXJfaGFuZGxlcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4gXFx0bmV0ID0gc29ja19uZXQoc2tfbGlzdGVuZXIpO1xcbiBcXHRtYXhfc3luX2Fja19yZXRyaWVzID0gUkVBRF9PTkNFKGljc2stXFx1MDAzZWljc2tfc3luX3JldHJpZXMpID8gOlxcbiBcXHRcXHRSRUFEX09OQ0UobmV0LVxcdTAwM2VpcHY0LnN5c2N0bF90Y3Bfc3luYWNrX3JldHJpZXMpO1xcbitcXHRtYXhfc3luX2Fja19yZXRyaWVzID0gbWluX3QoaW50LCBtYXhfc3luX2Fja19yZXRyaWVzLFxcbitcXHRcXHRcXHRcXHQgICAgTUFYX1RDUF9TWU5BQ0tfUkVUUklFUyk7XFxuIFxcdC8qIE5vcm1hbGx5IGFsbCB0aGUgb3BlbnJlcXMgYXJlIHlvdW5nIGFuZCBiZWNvbWUgbWF0dXJlXFxuIFxcdCAqIChpLmUuIGNvbnZlcnRlZCB0byBlc3RhYmxpc2hlZCBzb2NrZXQpIGZvciBmaXJzdCB0aW1lb3V0LlxcbiBcXHQgKiBJZiBzeW5hY2sgd2FzIG5vdCBhY2tub3dsZWRnZWQgZm9yIDEgc2Vjb25kLCBpdCBtZWFuc1xcbkBAIC0xMDg2LDcgKzEwODgsOSBAQCBzdGF0aWMgdm9pZCByZXFza190aW1lcl9oYW5kbGVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuLVxcdHN5bl9hY2tfcmVjYWxjKHJlcSwgbWF4X3N5bl9hY2tfcmV0cmllcywgUkVBRF9PTkNFKHF1ZXVlLVxcdTAwM2Vyc2txX2RlZmVyX2FjY2VwdCksXFxuK1xcdHN5bl9hY2tfcmVjYWxjKHJlcSwgbWF4X3N5bl9hY2tfcmV0cmllcyxcXG4rXFx0XFx0ICAgICAgIG1pbl90KHU4LCBSRUFEX09OQ0UocXVldWUtXFx1MDAzZXJza3FfZGVmZXJfYWNjZXB0KSxcXG4rXFx0XFx0XFx0ICAgICBNQVhfVENQX1NZTkFDS19SRVRSSUVTKSxcXG4gXFx0XFx0ICAgICAgIFxcdTAwMjZleHBpcmUsIFxcdTAwMjZyZXNlbmQpO1xcbiBcXHR0Y3Bfc3luX2Fja190aW1lb3V0KHJlcSk7XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYyBiL25ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jXFxuaW5kZXggY2ExMTgwZGJhMWRlYTkuLmY5ZDIzM2I5OGJiYzZjIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jXFxuKysrIGIvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmNcXG5AQCAtMzUsNiArMzUsNyBAQCBzdGF0aWMgaW50IGlwX3R0bF9taW4gPSAxO1xcbiBzdGF0aWMgaW50IGlwX3R0bF9tYXggPSAyNTU7XFxuIHN0YXRpYyBpbnQgdGNwX3N5bl9yZXRyaWVzX21pbiA9IDE7XFxuIHN0YXRpYyBpbnQgdGNwX3N5bl9yZXRyaWVzX21heCA9IE1BWF9UQ1BfU1lOQ05UO1xcbitzdGF0aWMgaW50IHRjcF9zeW5hY2tfcmV0cmllc19tYXggPSBNQVhfVENQX1NZTkFDS19SRVRSSUVTO1xcbiBzdGF0aWMgaW50IHRjcF9zeW5fbGluZWFyX3RpbWVvdXRzX21heCA9IE1BWF9UQ1BfU1lOQ05UO1xcbiBzdGF0aWMgdW5zaWduZWQgbG9uZyBpcF9waW5nX2dyb3VwX3JhbmdlX21pbltdID0geyAwLCAwIH07XFxuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGlwX3BpbmdfZ3JvdXBfcmFuZ2VfbWF4W10gPSB7IEdJRF9UX01BWCwgR0lEX1RfTUFYIH07XFxuQEAgLTEwMzQsNiArMTAzNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIGlwdjRfbmV0X3RhYmxlW10gPSB7XFxuIFxcdFxcdC5tYXhsZW5cXHRcXHQ9IHNpemVvZih1OCksXFxuIFxcdFxcdC5tb2RlXFx0XFx0PSAwNjQ0LFxcbiBcXHRcXHQucHJvY19oYW5kbGVyXFx0PSBwcm9jX2RvdTh2ZWNfbWlubWF4LFxcbitcXHRcXHQuZXh0cmEyXFx0XFx0PSBcXHUwMDI2dGNwX3N5bmFja19yZXRyaWVzX21heFxcbiBcXHR9LFxcbiAjaWZkZWYgQ09ORklHX1NZTl9DT09LSUVTXFxuIFxcdHtcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX3RpbWVyLmMgYi9uZXQvaXB2NC90Y3BfdGltZXIuY1xcbmluZGV4IGJmMTcxYjVlMWViMzA2Li5iYmVkZjJiOWUxYmNlYSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC90Y3BfdGltZXIuY1xcbisrKyBiL25ldC9pcHY0L3RjcF90aW1lci5jXFxuQEAgLTQ2Nyw2ICs0NjcsNyBAQCBzdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxcbiBcXHQgKi9cXG4gXFx0bWF4X3JldHJpZXMgPSBSRUFEX09OQ0UoaWNzay1cXHUwMDNlaWNza19zeW5fcmV0cmllcykgPyA6XFxuIFxcdFxcdFJFQURfT05DRShzb2NrX25ldChzayktXFx1MDAzZWlwdjQuc3lzY3RsX3RjcF9zeW5hY2tfcmV0cmllcykgKyAxO1xcbitcXHRtYXhfcmV0cmllcyA9IG1pbl90KGludCwgbWF4X3JldHJpZXMsIE1BWF9UQ1BfU1lOQUNLX1JFVFJJRVMpO1xcbiBcXG4gXFx0aWYgKHJlcS1cXHUwMDNlbnVtX3RpbWVvdXQgXFx1MDAzZT0gbWF4X3JldHJpZXMpIHtcXG4gXFx0XFx0dGNwX3dyaXRlX2Vycihzayk7XFxuQEAgLTQ4OCw3ICs0ODksNyBAQCBzdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxcbiBcXHRpZiAoIXRwLVxcdTAwM2VyZXRyYW5zX3N0YW1wKVxcbiBcXHRcXHR0cC1cXHUwMDNlcmV0cmFuc19zdGFtcCA9IHRjcF90aW1lX3N0YW1wX3RzKHRwKTtcXG4gXFx0dGNwX3Jlc2V0X3htaXRfdGltZXIoc2ssIElDU0tfVElNRV9SRVRSQU5TLFxcbi1cXHRcXHRcXHQgIHJlcS1cXHUwMDNldGltZW91dCBcXHUwMDNjXFx1MDAzYyByZXEtXFx1MDAzZW51bV90aW1lb3V0LCBmYWxzZSk7XFxuK1xcdFxcdFxcdCAgICAgdGNwX3JlcXNrX3RpbWVvdXRfc2soc2ssIHJlcSksIGZhbHNlKTtcXG4gfVxcbiBcXG4gc3RhdGljIGJvb2wgdGNwX3J0eF9wcm9iZTBfdGltZWRfb3V0KGNvbnN0IHN0cnVjdCBzb2NrICpzayxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6MzA6MTkuOTk2OTAxMzc2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDYxNjIwMzMzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmVxc2tfdGltZXJfaGFuZGxlclwiLFxuICAgIFwidGNwX2Zhc3RvcGVuX3N5bmFja190aW1lclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHNoaWZ0IG92ZXJmbG93IGluIFRDUCBTWU4tQUNLIHRpbWVvdXQgY2FsY3VsYXRpb24gYW5kIGNhcHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIFNZTi1BQ0sgcmV0cmllcyB0byA2My4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFRDUCBzdGFjayB0aGF0IGFmZmVjdHMgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IGFuZCB0aW1lb3V0IGhhbmRsaW5nLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgU1lOLUFDSyB0aW1lciBoYW5kbGVycyBmb3IgYm90aCByZWd1bGFyIGFuZCBGYXN0IE9wZW4gY29ubmVjdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTViNDgyOGRlNDYxZDRjMDkyOTdmMjIxYmY4ZGM2MWFjYTM1MzY2NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIgMTQ6MzA6MTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC90Y3AuaCBiL2luY2x1ZGUvbmV0L3RjcC5oXG5pbmRleCA2ZDM3NmVhNGQxYzAxZC4uZWU3ODQzNmI4OTY0NWEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC90Y3AuaFxuKysrIGIvaW5jbHVkZS9uZXQvdGNwLmhcbkBAIC0xODMsNiArMTgzLDcgQEAgc3RhdGljX2Fzc2VydCgoMSBcdTAwM2NcdTAwM2MgQVRPX0JJVFMpIFx1MDAzZSBUQ1BfREVMQUNLX01BWCk7XG4gI2RlZmluZSBNQVhfVENQX0tFRVBJTlRWTFx0MzI3NjdcbiAjZGVmaW5lIE1BWF9UQ1BfS0VFUENOVFx0XHQxMjdcbiAjZGVmaW5lIE1BWF9UQ1BfU1lOQ05UXHRcdDEyN1xuKyNkZWZpbmUgTUFYX1RDUF9TWU5BQ0tfUkVUUklFU1x0NjNcbiBcbiAvKiBFbnN1cmUgdGhhdCBUQ1AgUEFXUyBjaGVja3MgYXJlIHJlbGF4ZWQgYWZ0ZXIgfjIxNDcgc2Vjb25kc1xuICAqIHRvIGF2b2lkIG92ZXJmbG93cy4gVGhpcyBhc3N1bWVzIGEgY2xvY2sgc21hbGxlciB0aGFuIDEgTWh6LlxuQEAgLTg4MiwxMiArODgzLDIyIEBAIHN0YXRpYyBpbmxpbmUgdTMyIF9fdGNwX3NldF9ydG8oY29uc3Qgc3RydWN0IHRjcF9zb2NrICp0cClcbiBcdHJldHVybiB1c2Vjc190b19qaWZmaWVzKCh0cC1cdTAwM2VzcnR0X3VzIFx1MDAzZVx1MDAzZSAzKSArIHRwLVx1MDAzZXJ0dHZhcl91cyk7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dChzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4rc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHRjcF9yZXFza190aW1lb3V0X3NrKGNvbnN0IHN0cnVjdCBzb2NrICpzayxcbitcdFx0XHRcdFx0XHQgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuIHtcbi1cdHU2NCB0aW1lb3V0ID0gKHU2NClyZXEtXHUwMDNldGltZW91dCBcdTAwM2NcdTAwM2MgcmVxLVx1MDAzZW51bV90aW1lb3V0O1xuK1x0dTMyIHJ0b19tYXggPSB0Y3BfcnRvX21heChzayk7XG4rXHR1NjQgdGltZW91dCA9IHJlcS1cdTAwM2V0aW1lb3V0O1xuK1xuK1x0aWYgKHJlcS1cdTAwM2VudW1fdGltZW91dCBcdTAwM2U9IEJJVFNfUEVSX1RZUEUodTY0KSB8fFxuK1x0ICAgIHRpbWVvdXQgXHUwMDNlIFU2NF9NQVggXHUwMDNlXHUwMDNlIHJlcS1cdTAwM2VudW1fdGltZW91dClcbitcdFx0cmV0dXJuIHJ0b19tYXg7XG4rXG4rXHRyZXR1cm4gKHVuc2lnbmVkIGxvbmcpbWluX3QodTY0LCB0aW1lb3V0IFx1MDAzY1x1MDAzYyByZXEtXHUwMDNlbnVtX3RpbWVvdXQsIHJ0b19tYXgpO1xuK31cbiBcbi1cdHJldHVybiAodW5zaWduZWQgbG9uZyltaW5fdCh1NjQsIHRpbWVvdXQsXG4tXHRcdFx0XHQgICAgdGNwX3J0b19tYXgocmVxLVx1MDAzZXJza19saXN0ZW5lcikpO1xuK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dChzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4re1xuK1x0cmV0dXJuIHRjcF9yZXFza190aW1lb3V0X3NrKHJlcS1cdTAwM2Vyc2tfbGlzdGVuZXIsIHJlcSk7XG4gfVxuIFxuIHUzMiB0Y3BfZGVsYWNrX21heChjb25zdCBzdHJ1Y3Qgc29jayAqc2spO1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMgYi9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jXG5pbmRleCA1NjkwMmJiYTU0ODM4Yi4uYjc0MjEyYmFlM2RkMjUgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jXG4rKysgYi9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jXG5AQCAtMTA1Niw2ICsxMDU2LDggQEAgc3RhdGljIHZvaWQgcmVxc2tfdGltZXJfaGFuZGxlcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbiBcdG5ldCA9IHNvY2tfbmV0KHNrX2xpc3RlbmVyKTtcbiBcdG1heF9zeW5fYWNrX3JldHJpZXMgPSBSRUFEX09OQ0UoaWNzay1cdTAwM2VpY3NrX3N5bl9yZXRyaWVzKSA/IDpcbiBcdFx0UkVBRF9PTkNFKG5ldC1cdTAwM2VpcHY0LnN5c2N0bF90Y3Bfc3luYWNrX3JldHJpZXMpO1xuK1x0bWF4X3N5bl9hY2tfcmV0cmllcyA9IG1pbl90KGludCwgbWF4X3N5bl9hY2tfcmV0cmllcyxcbitcdFx0XHRcdCAgICBNQVhfVENQX1NZTkFDS19SRVRSSUVTKTtcbiBcdC8qIE5vcm1hbGx5IGFsbCB0aGUgb3BlbnJlcXMgYXJlIHlvdW5nIGFuZCBiZWNvbWUgbWF0dXJlXG4gXHQgKiAoaS5lLiBjb252ZXJ0ZWQgdG8gZXN0YWJsaXNoZWQgc29ja2V0KSBmb3IgZmlyc3QgdGltZW91dC5cbiBcdCAqIElmIHN5bmFjayB3YXMgbm90IGFja25vd2xlZGdlZCBmb3IgMSBzZWNvbmQsIGl0IG1lYW5zXG5AQCAtMTA4Niw3ICsxMDg4LDkgQEAgc3RhdGljIHZvaWQgcmVxc2tfdGltZXJfaGFuZGxlcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbiBcdFx0fVxuIFx0fVxuIFxuLVx0c3luX2Fja19yZWNhbGMocmVxLCBtYXhfc3luX2Fja19yZXRyaWVzLCBSRUFEX09OQ0UocXVldWUtXHUwMDNlcnNrcV9kZWZlcl9hY2NlcHQpLFxuK1x0c3luX2Fja19yZWNhbGMocmVxLCBtYXhfc3luX2Fja19yZXRyaWVzLFxuK1x0XHQgICAgICAgbWluX3QodTgsIFJFQURfT05DRShxdWV1ZS1cdTAwM2Vyc2txX2RlZmVyX2FjY2VwdCksXG4rXHRcdFx0ICAgICBNQVhfVENQX1NZTkFDS19SRVRSSUVTKSxcbiBcdFx0ICAgICAgIFx1MDAyNmV4cGlyZSwgXHUwMDI2cmVzZW5kKTtcbiBcdHRjcF9zeW5fYWNrX3RpbWVvdXQocmVxKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYyBiL25ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jXG5pbmRleCBjYTExODBkYmExZGVhOS4uZjlkMjMzYjk4YmJjNmMgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuY1xuKysrIGIvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmNcbkBAIC0zNSw2ICszNSw3IEBAIHN0YXRpYyBpbnQgaXBfdHRsX21pbiA9IDE7XG4gc3RhdGljIGludCBpcF90dGxfbWF4ID0gMjU1O1xuIHN0YXRpYyBpbnQgdGNwX3N5bl9yZXRyaWVzX21pbiA9IDE7XG4gc3RhdGljIGludCB0Y3Bfc3luX3JldHJpZXNfbWF4ID0gTUFYX1RDUF9TWU5DTlQ7XG4rc3RhdGljIGludCB0Y3Bfc3luYWNrX3JldHJpZXNfbWF4ID0gTUFYX1RDUF9TWU5BQ0tfUkVUUklFUztcbiBzdGF0aWMgaW50IHRjcF9zeW5fbGluZWFyX3RpbWVvdXRzX21heCA9IE1BWF9UQ1BfU1lOQ05UO1xuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGlwX3BpbmdfZ3JvdXBfcmFuZ2VfbWluW10gPSB7IDAsIDAgfTtcbiBzdGF0aWMgdW5zaWduZWQgbG9uZyBpcF9waW5nX2dyb3VwX3JhbmdlX21heFtdID0geyBHSURfVF9NQVgsIEdJRF9UX01BWCB9O1xuQEAgLTEwMzQsNiArMTAzNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIGlwdjRfbmV0X3RhYmxlW10gPSB7XG4gXHRcdC5tYXhsZW5cdFx0PSBzaXplb2YodTgpLFxuIFx0XHQubW9kZVx0XHQ9IDA2NDQsXG4gXHRcdC5wcm9jX2hhbmRsZXJcdD0gcHJvY19kb3U4dmVjX21pbm1heCxcbitcdFx0LmV4dHJhMlx0XHQ9IFx1MDAyNnRjcF9zeW5hY2tfcmV0cmllc19tYXhcbiBcdH0sXG4gI2lmZGVmIENPTkZJR19TWU5fQ09PS0lFU1xuIFx0e1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF90aW1lci5jIGIvbmV0L2lwdjQvdGNwX3RpbWVyLmNcbmluZGV4IGJmMTcxYjVlMWViMzA2Li5iYmVkZjJiOWUxYmNlYSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF90aW1lci5jXG4rKysgYi9uZXQvaXB2NC90Y3BfdGltZXIuY1xuQEAgLTQ2Nyw2ICs0NjcsNyBAQCBzdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuIFx0ICovXG4gXHRtYXhfcmV0cmllcyA9IFJFQURfT05DRShpY3NrLVx1MDAzZWljc2tfc3luX3JldHJpZXMpID8gOlxuIFx0XHRSRUFEX09OQ0Uoc29ja19uZXQoc2spLVx1MDAzZWlwdjQuc3lzY3RsX3RjcF9zeW5hY2tfcmV0cmllcykgKyAxO1xuK1x0bWF4X3JldHJpZXMgPSBtaW5fdChpbnQsIG1heF9yZXRyaWVzLCBNQVhfVENQX1NZTkFDS19SRVRSSUVTKTtcbiBcbiBcdGlmIChyZXEtXHUwMDNlbnVtX3RpbWVvdXQgXHUwMDNlPSBtYXhfcmV0cmllcykge1xuIFx0XHR0Y3Bfd3JpdGVfZXJyKHNrKTtcbkBAIC00ODgsNyArNDg5LDcgQEAgc3RhdGljIHZvaWQgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcbiBcdGlmICghdHAtXHUwMDNlcmV0cmFuc19zdGFtcClcbiBcdFx0dHAtXHUwMDNlcmV0cmFuc19zdGFtcCA9IHRjcF90aW1lX3N0YW1wX3RzKHRwKTtcbiBcdHRjcF9yZXNldF94bWl0X3RpbWVyKHNrLCBJQ1NLX1RJTUVfUkVUUkFOUyxcbi1cdFx0XHQgIHJlcS1cdTAwM2V0aW1lb3V0IFx1MDAzY1x1MDAzYyByZXEtXHUwMDNlbnVtX3RpbWVvdXQsIGZhbHNlKTtcbitcdFx0XHQgICAgIHRjcF9yZXFza190aW1lb3V0X3NrKHNrLCByZXEpLCBmYWxzZSk7XG4gfVxuIFxuIHN0YXRpYyBib29sIHRjcF9ydHhfcHJvYmUwX3RpbWVkX291dChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDozMDoxOS45OTY5MDMzMzZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NjE2ODg0OTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVENQIFNZTi1BQ0sgUmV0cnkgTG9naWMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBpdCdzIGFkZHJlc3Npbmcgc29tZSBjcml0aWNhbCByb2J1c3RuZXNzIGlzc3VlcyBpbiB0aGUgVENQIFNZTi1BQ0sgcmV0cnkgbWVjaGFuaXNtLiBXZSdyZSB0YWxraW5nIGFib3V0IGNoYW5nZXMgdG91Y2hpbmcgZm91ciBrZXkgZmlsZXM6IGBpbmNsdWRlL25ldC90Y3AuaGAsIGBuZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jYCwgYG5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jYCwgYW5kIGBuZXQvaXB2NC90Y3BfdGltZXIuY2AuIFRoaXMgdGVsbHMgbWUgaXQncyBub3QgYSB0cml2aWFsIG1vZGlmaWNhdGlvbiwgYnV0IHJhdGhlciBhIGZvY3VzZWQgcmVmaW5lbWVudCBvZiB0aGUgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IHByb2Nlc3MuXG5cbkZpcnN0LCBpbiBgaW5jbHVkZS9uZXQvdGNwLmhgLCB3ZSBzZWUgdGhlIGludHJvZHVjdGlvbiBvZiBgTUFYX1RDUF9TWU5BQ0tfUkVUUklFU2AsIG5vdyBkZWZpbmVkIGFzIDYzLCB3aGljaCBpcyBpbXBvcnRhbnQuIEFsc28sIHRoZSBgdGNwX3JlcXNrX3RpbWVvdXRgIGZ1bmN0aW9uIGlzIG1vZGlmaWVkIHRvIHVzZSBgdGNwX3JlcXNrX3RpbWVvdXRfc2tgLCB3aGljaCBoYXMgYSBjcnVjaWFsIG92ZXJmbG93IGNoZWNrLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgZXhwbGljaXRseSBndWFyZGluZyBhZ2FpbnN0IHNoaWZ0IG92ZXJmbG93cywgd2hpY2ggaXMgc21hcnQuIElmIHRoZSByZXRyaWVzIGdvIHRvbyBoaWdoIGFuZCB0aW1lb3V0IHNoaWZ0cyB0b28gbWFueSB0aW1lcywgd2UgY2FuIG92ZXJmbG93IGEgdTY0IHdoaWNoIGNvdWxkIGNhdXNlIGlzc3Vlcy5cblxuTW92aW5nIHRvIGBuZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jYCwgdGhlIGByZXFza190aW1lcl9oYW5kbGVyYCBpcyBiZWluZyB1cGRhdGVkIHRvIGNhcCBgbWF4X3N5bl9hY2tfcmV0cmllc2AgYXQgYE1BWF9UQ1BfU1lOQUNLX1JFVFJJRVNgLiBTaW1pbGFybHksIHRoZXkncmUgYm91bmRpbmcgYHF1ZXVlLVx1MDAzZXJza3FfZGVmZXJfYWNjZXB0YCB3aXRoIHRoZSBzYW1lIGxpbWl0LCB3aGljaCBpcyBnb29kIGNvbnNpc3RlbmN5LlxuXG5JbiBgbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmNgLCB0aGV5J3JlIGFkZGluZyBhIG5ldyBzeXNjdGwsIGB0Y3Bfc3luYWNrX3JldHJpZXNfbWF4YCwgd2hpY2ggc2VlbXMgdG8gcHJvdmlkZSBhIHVzZXItdHVuYWJsZSB1cHBlciBib3VuZCBvbiB0aGUgcmV0cnkgY291bnQuIFRoaXMgaXMgYSBuaWNlIGZlYXR1cmUsIGdpdmluZyBhZG1pbmlzdHJhdG9ycyBhIGxldmVsIG9mIGNvbnRyb2wgb3ZlciB0aGUgc3lzdGVtJ3MgYmVoYXZpb3IuXG5cbkZpbmFsbHksIGBuZXQvaXB2NC90Y3BfdGltZXIuY2Agc2hvd3Mgc2ltaWxhciBwcm90ZWN0aW9ucyBmb3IgYHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXJgLiBUaGV5J3JlIGNhcHBpbmcgdGhlIHJldHJpZXMgYW5kIHN3aXRjaGluZyB0byBgdGNwX3JlcXNrX3RpbWVvdXRfc2tgLCBhZ2FpbiwgdG8gYXZvaWQgdGhhdCBwZXNreSBzaGlmdCBvdmVyZmxvdyB0aGF0IGNhbiBvY2N1ciB3aGVuIGNhbGN1bGF0aW5nIHRoZSB0aW1lb3V0LlxuXG5PdmVyYWxsLCBpdCdzIGNsZWFyIHRoaXMgcGF0Y2ggaXMgYWJvdXQgZml4aW5nIHBvdGVudGlhbCBvdmVyZmxvdyBidWdzIGFuZCBlc3RhYmxpc2hpbmcgaGFyZCBsaW1pdHMgb24gdGhlIG51bWJlciBvZiBTWU4tQUNLIHJldHJpZXMuIEl0J3MgYWJvdXQgc3RhYmlsaXR5IGFuZCBwcmV2ZW50aW5nIHRoZSBzeXN0ZW0gZnJvbSBnZXR0aW5nIHN0dWNrIGluIGFuIGluZmluaXRlIHJldHJ5IGxvb3Agb3IgbWlzY2FsY3VsYXRpbmcgdGhlIHRpbWVvdXQuIFRoaXMgbmVlZHMgdG8gYmUgZnV6emVkIHRob3JvdWdobHkuXG5cbk5vdywgbGV0J3MgY29uc2lkZXIgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBUaGUgY29yZSBUQ1AgZnVuY3Rpb25hbGl0eSBpcyBhbHdheXMgY29tcGlsZWQsIHNvIHdlIGp1c3QgbmVlZCBgQ09ORklHX0lORVRgIHdoaWNoIGlzIHZlcnkgZ2VuZXJpYy4gVGhlIHByZXNlbmNlIG9mIGB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyYCBpbiBgbmV0L2lwdjQvdGNwX3RpbWVyLmNgIG1lYW5zIGBDT05GSUdfVENQX0ZBU1RPUEVOYCBtaWdodCBiZSBhIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24uIEknbGwgbmVlZCB0byBrZWVwIHRoaXMgaW4gbWluZCB3aGVuIGRldmlzaW5nIGZ1enppbmcgc3RyYXRlZ2llcywgYXMgdGhlIGJlaGF2aW9yIG1heSB2YXJ5IGRlcGVuZGluZyBvbiB3aGV0aGVyIEZhc3QgT3BlbiBpcyBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDQwLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTg2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6MzA6MjguNjEzNzkxMDc3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0ODM5NjI4MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX2Zhc3RvcGVuX3N5bmFja190aW1lclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC90Y3BfaW5wdXQuYz03MDczPXN0YXRpYyB2b2lkIHRjcF9yY3Zfc3lucmVjdl9zdGF0ZV9mYXN0b3BlbihzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03MDg1LVxcdFdSSVRFX09OQ0UoaW5ldF9jc2soc2spLVxcdTAwM2VpY3NrX3JldHJhbnNtaXRzLCAwKTtcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo3MDg2OlxcdC8qIEluIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoKSBvbiB0aGUgZmlyc3QgU1lOQUNLIFJUTyB3ZSBzZXRcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03MDg3LVxcdCAqIHJldHJhbnNfc3RhbXAgYnV0IGRvbid0IGVudGVyIENBX0xvc3MsIHNvIGluIGNhc2UgdGhhdCBoYXBwZW5lZCB3ZVxcbi0tXFxubmV0L2lwdjQvdGNwX3RpbWVyLmM9NDQwPXN0YXRpYyB2b2lkIHRjcF91cGRhdGVfcnRvX3N0YXRzKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9pcHY0L3RjcF90aW1lci5jLTQ1Ni0gKi9cXG5uZXQvaXB2NC90Y3BfdGltZXIuYzo0NTc6c3RhdGljIHZvaWQgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcXG5uZXQvaXB2NC90Y3BfdGltZXIuYy00NTgte1xcbi0tXFxubmV0L2lwdjQvdGNwX3RpbWVyLmM9NTM2PXZvaWQgdGNwX3JldHJhbnNtaXRfdGltZXIoc3RydWN0IHNvY2sgKnNrKVxcbi0tXFxubmV0L2lwdjQvdGNwX3RpbWVyLmMtNTQ4LVxcdFxcdFxcdCAgICAgc2stXFx1MDAzZXNrX3N0YXRlICE9IFRDUF9GSU5fV0FJVDEpO1xcbm5ldC9pcHY0L3RjcF90aW1lci5jOjU0OTpcXHRcXHR0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHNrLCByZXEpO1xcbm5ldC9pcHY0L3RjcF90aW1lci5jLTU1MC1cXHRcXHQvKiBCZWZvcmUgd2UgcmVjZWl2ZSBBQ0sgdG8gb3VyIFNZTi1BQ0sgZG9uJ3QgcmV0cmFuc21pdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDozMDozNC4wOTc3NjU2MDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDY4MzMxNTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBhIFRpbWVyIGluIHRoZSBUQ1AgU3RhY2sqKlxuXG5BbHJpZ2h0LCBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXJgIHZhcmlhYmxlLiBUaGUgZmlyc3QgdGhpbmcgSSBhbHdheXMgZG8gd2hlbiBJIHNlZSBzb21ldGhpbmcgbGlrZSB0aGlzIGlzIGxvb2sgZm9yIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIga2VybmVsIGNvbmZpZ3VyYXRpb24gb3IgZmVhdHVyZSBzZXQuIFRoYXQgYGlmZGVmYCBjaGVjayBpcyB0aGUga2V5LiBJcyB0aGlzIHRpbWVyIG9ubHkgZGVmaW5lZCBhbmQgdXNlZCBpZiBhIGNlcnRhaW4gZmVhdHVyZSwgbWF5YmUgRmFzdCBPcGVuIGl0c2VsZiwgaXMgZW5hYmxlZD8gT3IgaXMgaXQgcGFydCBvZiBhIG1vcmUgY29yZSBzZXQgb2YgVENQIGZ1bmN0aW9uYWxpdHksIHBvdGVudGlhbGx5IG1vZGlmaWVkIGJ5IGEgZGlmZmVyZW50IGZlYXR1cmU/IEtub3dpbmcgdGhhdCB3aWxsIHNpZ25pZmljYW50bHkgbmFycm93IGRvd24gdGhlIHBsYWNlcyBJIG5lZWQgdG8gbG9vayBmb3IgaXRzIHVzZSBhbmQgaG93IGl0J3MgaW1wYWN0ZWQgYnkgdGhlIHN1cnJvdW5kaW5nIGNvZGUuIFRpbWUgdG8gY2hlY2sgdGhvc2UgYCNpZmRlZmAgZGlyZWN0aXZlcy4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwODMsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDozMDozNy4xNjYwOTkwOTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU2MDA5NDA0MiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2lmZGVmLipGQVNUT1BFTlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6MzA6NDEuNzI2MjAyNTI3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk3MDM2OTk5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIFRDUCBGYXN0IE9wZW4gU1lOLUFDSyBUaW1lcioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhlIGd1dHMgb2YgVENQIEZhc3QgT3Blbi4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBoYW5kbGluZyBvZiB0aGUgYHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXJgLiBUaGF0IHBvaW50cyBtZSBkaXJlY3RseSB0byBgbmV0L2lwdjQvdGNwX3RpbWVyLmNgIGluIHRoZSBrZXJuZWwgc291cmNlLiBJIHN1c3BlY3QgdGhlcmUncyBzb21ldGhpbmcgc3BlY2lmaWMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgYWJvdXQgdGhlIHRpbWVyJ3Mgcm9sZSwgcHJvYmFibHkgcmVnYXJkaW5nIHJldHJhbnNtaXNzaW9ucywgdGltZW91dHMsIG9yIHN0YXRlIHRyYW5zaXRpb25zIHJlbGF0ZWQgdG8gRmFzdCBPcGVuJ3MgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50LiBNeSBpbnN0aW5jdCB0ZWxscyBtZSB0aGlzIGlzIHdoZXJlIEknbGwgZmluZCB0aGUgbG9naWMgZm9yIGhhbmRsaW5nIHRoZSBTWU4tQUNLJ3MgYWNrbm93bGVkZ21lbnQgKG9yIGxhY2sgdGhlcmVvZikgd2hlbiBGYXN0IE9wZW4gaXMgaW4gcGxheS4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB0aGUgZWRnZSBjYXNlcyDigJMgd2hhdCBoYXBwZW5zIGlmIHRoZSBTWU4tQUNLIGdldHMgbG9zdCwgb3IgZGVsYXllZCwgd2l0aCBGYXN0IE9wZW4gZW5hYmxlZD8gTGV0J3MgZ2V0IHRvIHRoZSBjb2RlIGFuZCBzZWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzMTksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDozMDo0NC42OTY1NzUxOThaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjY5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjQvdGNwX3RpbWVyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDUwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ1MDpcXHRcXHR0cC1cXHUwMDNldG90YWxfcnRvKys7XFxuIDQ1MTpcXHR9XFxuIDQ1MjpcXHRcXG4gNDUzOlxcdC8qXFxuIDQ1NDpcXHQgKlxcdFRpbWVyIGZvciBGYXN0IE9wZW4gc29ja2V0IHRvIHJldHJhbnNtaXQgU1lOQUNLLiBOb3RlIHRoYXQgdGhlXFxuIDQ1NTpcXHQgKlxcdHNrIGhlcmUgaXMgdGhlIGNoaWxkIHNvY2tldCwgbm90IHRoZSBwYXJlbnQgKGxpc3RlbmVyKSBzb2NrZXQuXFxuIDQ1NjpcXHQgKi9cXG4gNDU3OlxcdHN0YXRpYyB2b2lkIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuIDQ1ODpcXHR7XFxuIDQ1OTpcXHRcXHRzdHJ1Y3QgaW5ldF9jb25uZWN0aW9uX3NvY2sgKmljc2sgPSBpbmV0X2Nzayhzayk7XFxuIDQ2MDpcXHRcXHRzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3NrKHNrKTtcXG4gNDYxOlxcdFxcdGludCBtYXhfcmV0cmllcztcXG4gNDYyOlxcdFxcbiA0NjM6XFx0XFx0dGNwX3N5bl9hY2tfdGltZW91dChyZXEpO1xcbiA0NjQ6XFx0XFxuIDQ2NTpcXHRcXHQvKiBBZGQgb25lIG1vcmUgcmV0cnkgZm9yIGZhc3RvcGVuLlxcbiA0NjY6XFx0XFx0ICogUGFpcmVkIHdpdGggV1JJVEVfT05DRSgpIGluIHRjcF9zb2NrX3NldF9zeW5jbnQoKVxcbiA0Njc6XFx0XFx0ICovXFxuIDQ2ODpcXHRcXHRtYXhfcmV0cmllcyA9IFJFQURfT05DRShpY3NrLVxcdTAwM2VpY3NrX3N5bl9yZXRyaWVzKSA/IDpcXG4gNDY5OlxcdFxcdFxcdFJFQURfT05DRShzb2NrX25ldChzayktXFx1MDAzZWlwdjQuc3lzY3RsX3RjcF9zeW5hY2tfcmV0cmllcykgKyAxO1xcbiA0NzA6XFx0XFx0bWF4X3JldHJpZXMgPSBtaW5fdChpbnQsIG1heF9yZXRyaWVzLCBNQVhfVENQX1NZTkFDS19SRVRSSUVTKTtcXG4gNDcxOlxcdFxcbiA0NzI6XFx0XFx0aWYgKHJlcS1cXHUwMDNlbnVtX3RpbWVvdXQgXFx1MDAzZT0gbWF4X3JldHJpZXMpIHtcXG4gNDczOlxcdFxcdFxcdHRjcF93cml0ZV9lcnIoc2spO1xcbiA0NzQ6XFx0XFx0XFx0cmV0dXJuO1xcbiA0NzU6XFx0XFx0fVxcbiA0NzY6XFx0XFx0LyogTG93ZXIgY3duZCBhZnRlciBjZXJ0YWluIFNZTkFDSyB0aW1lb3V0IGxpa2UgdGNwX2luaXRfdHJhbnNmZXIoKSAqL1xcbiA0Nzc6XFx0XFx0aWYgKGljc2stXFx1MDAzZWljc2tfcmV0cmFuc21pdHMgPT0gMSlcXG4gNDc4OlxcdFxcdFxcdHRjcF9lbnRlcl9sb3NzKHNrKTtcXG4gNDc5OlxcdFxcdC8qIFhYWCAoVEZPKSAtIFVubGlrZSByZWd1bGFyIFNZTi1BQ0sgcmV0cmFuc21pdCwgd2UgaWdub3JlIGVycm9yXFxuIDQ4MDpcXHRcXHQgKiByZXR1cm5lZCBmcm9tIHJ0eF9zeW5fYWNrKCkgdG8gbWFrZSBpdCBtb3JlIHBlcnNpc3RlbnQgbGlrZVxcbiA0ODE6XFx0XFx0ICogcmVndWxhciByZXRyYW5zbWl0IGJlY2F1c2UgaWYgdGhlIGNoaWxkIHNvY2tldCBoYXMgYmVlbiBhY2NlcHRlZFxcbiA0ODI6XFx0XFx0ICogaXQncyBub3QgZ29vZCB0byBnaXZlIHVwIHRvbyBlYXNpbHkuXFxuIDQ4MzpcXHRcXHQgKi9cXG4gNDg0OlxcdFxcdHRjcF9ydHhfc3luYWNrKHNrLCByZXEpO1xcbiA0ODU6XFx0XFx0aWYgKHJlcS1cXHUwMDNlbnVtX3JldHJhbnMgXFx1MDAzZSAxIFxcdTAwMjZcXHUwMDI2IHRjcF9yc2socmVxKS1cXHUwMDNlYWNjZWNuX29rKVxcbiA0ODY6XFx0XFx0XFx0dGNwX3JzayhyZXEpLVxcdTAwM2VhY2NlY25fZmFpbF9tb2RlIHw9IFRDUF9BQ0NFQ05fQUNFX0ZBSUxfU0VORDtcXG4gNDg3OlxcdFxcdHJlcS1cXHUwMDNlbnVtX3RpbWVvdXQrKztcXG4gNDg4OlxcdFxcdHRjcF91cGRhdGVfcnRvX3N0YXRzKHNrKTtcXG4gNDg5OlxcdFxcdGlmICghdHAtXFx1MDAzZXJldHJhbnNfc3RhbXApXFxuIDQ5MDpcXHRcXHRcXHR0cC1cXHUwMDNlcmV0cmFuc19zdGFtcCA9IHRjcF90aW1lX3N0YW1wX3RzKHRwKTtcXG4gNDkxOlxcdFxcdHRjcF9yZXNldF94bWl0X3RpbWVyKHNrLCBJQ1NLX1RJTUVfUkVUUkFOUyxcXG4gNDkyOlxcdFxcdFxcdFxcdCAgICAgdGNwX3JlcXNrX3RpbWVvdXRfc2soc2ssIHJlcSksIGZhbHNlKTtcXG4gNDkzOlxcdH1cXG4gNDk0OlxcdFxcbiA0OTU6XFx0c3RhdGljIGJvb2wgdGNwX3J0eF9wcm9iZTBfdGltZWRfb3V0KGNvbnN0IHN0cnVjdCBzb2NrICpzayxcXG4gNDk2OlxcdFxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gNDk3OlxcdFxcdFxcdFxcdFxcdCAgICAgdTMyIHJ0eF9kZWx0YSlcXG4gNDk4OlxcdHtcXG4gNDk5OlxcdFxcdGNvbnN0IHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29jayAqaWNzayA9IGluZXRfY3NrKHNrKTtcXG4gNTAwOlxcdFxcdHUzMiB1c2VyX3RpbWVvdXQgPSBSRUFEX09OQ0UoaWNzay1cXHUwMDNlaWNza191c2VyX3RpbWVvdXQpO1xcbiA1MDE6XFx0XFx0Y29uc3Qgc3RydWN0IHRjcF9zb2NrICp0cCA9IHRjcF9zayhzayk7XFxuIDUwMjpcXHRcXHRpbnQgdGltZW91dCA9IHRjcF9ydG9fbWF4KHNrKSAqIDI7XFxuIDUwMzpcXHRcXHRzMzIgcmN2X2RlbHRhO1xcbiA1MDQ6XFx0XFxuIDUwNTpcXHRcXHRpZiAodXNlcl90aW1lb3V0KSB7XFxuIDUwNjpcXHRcXHRcXHQvKiBJZiB1c2VyIGFwcGxpY2F0aW9uIHNwZWNpZmllZCBhIFRDUF9VU0VSX1RJTUVPVVQsXFxuIDUwNzpcXHRcXHRcXHQgKiBpdCBkb2VzIG5vdCB3YW50IHdpbiAwIHBhY2tldHMgdG8gJ3Jlc2V0IHRoZSB0aW1lcidcXG4gNTA4OlxcdFxcdFxcdCAqIHdoaWxlIHJldHJhbnNtaXRzIGFyZSBub3QgbWFraW5nIHByb2dyZXNzLlxcbiA1MDk6XFx0XFx0XFx0ICovXFxuIDUxMDpcXHRcXHRcXHRpZiAocnR4X2RlbHRhIFxcdTAwM2UgdXNlcl90aW1lb3V0KVxcbiA1MTE6XFx0XFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuIDUxMjpcXHRcXHRcXHR0aW1lb3V0ID0gbWluX3QodTMyLCB0aW1lb3V0LCBtc2Vjc190b19qaWZmaWVzKHVzZXJfdGltZW91dCkpO1xcbiA1MTM6XFx0XFx0fVxcbiA1MTQ6XFx0XFx0LyogTm90ZTogdGltZXIgaW50ZXJydXB0IG1pZ2h0IGhhdmUgYmVlbiBkZWxheWVkIGJ5IGF0IGxlYXN0IG9uZSBqaWZmeSxcXG4gNTE1OlxcdFxcdCAqIGFuZCB0cC1cXHUwMDNlcmN2X3RzdGFtcCBtaWdodCB2ZXJ5IHdlbGwgaGF2ZSBiZWVuIHdyaXR0ZW4gcmVjZW50bHkuXFxuIDUxNjpcXHRcXHQgKiByY3ZfZGVsdGEgY2FuIHRodXMgYmUgbmVnYXRpdmUuXFxuIDUxNzpcXHRcXHQgKi9cXG4gNTE4OlxcdFxcdHJjdl9kZWx0YSA9IHRjcF90aW1lb3V0X2V4cGlyZXMoc2spIC0gdHAtXFx1MDAzZXJjdl90c3RhbXA7XFxuIDUxOTpcXHRcXHRpZiAocmN2X2RlbHRhIFxcdTAwM2M9IHRpbWVvdXQpXFxuIDUyMDpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIDUyMTpcXHRcXG4gNTIyOlxcdFxcdHJldHVybiBtc2Vjc190b19qaWZmaWVzKHJ0eF9kZWx0YSkgXFx1MDAzZSB0aW1lb3V0O1xcbiA1MjM6XFx0fVxcbiA1MjQ6XFx0XFxuIDUyNTpcXHQvKipcXG4gNTI2OlxcdCAqICB0Y3BfcmV0cmFuc21pdF90aW1lcigpIC0gVGhlIFRDUCByZXRyYW5zbWl0IHRpbWVvdXQgaGFuZGxlclxcbiA1Mjc6XFx0ICogIEBzazogIFBvaW50ZXIgdG8gdGhlIGN1cnJlbnQgc29ja2V0LlxcbiA1Mjg6XFx0ICpcXG4gNTI5OlxcdCAqICBUaGlzIGZ1bmN0aW9uIGdldHMgY2FsbGVkIHdoZW4gdGhlIGtlcm5lbCB0aW1lciBmb3IgYSBUQ1AgcGFja2V0XFxuIDUzMDpcXHQgKiAgb2YgdGhpcyBzb2NrZXQgZXhwaXJlcy5cXG4gNTMxOlxcdCAqXFxuIDUzMjpcXHQgKiAgSXQgaGFuZGxlcyByZXRyYW5zbWlzc2lvbiwgdGltZXIgYWRqdXN0bWVudCBhbmQgb3RoZXIgbmVjZXNzYXJ5IG1lYXN1cmVzLlxcbiA1MzM6XFx0ICpcXG4gNTM0OlxcdCAqICBSZXR1cm5zOiBOb3RoaW5nICh2b2lkKVxcbiA1MzU6XFx0ICovXFxuIDUzNjpcXHR2b2lkIHRjcF9yZXRyYW5zbWl0X3RpbWVyKHN0cnVjdCBzb2NrICpzaylcXG4gNTM3OlxcdHtcXG4gNTM4OlxcdFxcdHN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spO1xcbiA1Mzk6XFx0XFx0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spO1xcbiA1NDA6XFx0XFx0c3RydWN0IGluZXRfY29ubmVjdGlvbl9zb2NrICppY3NrID0gaW5ldF9jc2soc2spO1xcbiA1NDE6XFx0XFx0c3RydWN0IHJlcXVlc3Rfc29jayAqcmVxO1xcbiA1NDI6XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4gNTQzOlxcdFxcbiA1NDQ6XFx0XFx0cmVxID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZCh0cC1cXHUwMDNlZmFzdG9wZW5fcnNrLFxcbiA1NDU6XFx0XFx0XFx0XFx0XFx0XFx0bG9ja2RlcF9zb2NrX2lzX2hlbGQoc2spKTtcXG4gNTQ2OlxcdFxcdGlmIChyZXEpIHtcXG4gNTQ3OlxcdFxcdFxcdFdBUk5fT05fT05DRShzay1cXHUwMDNlc2tfc3RhdGUgIT0gVENQX1NZTl9SRUNWIFxcdTAwMjZcXHUwMDI2XFxuIDU0ODpcXHRcXHRcXHRcXHQgICAgIHNrLVxcdTAwM2Vza19zdGF0ZSAhPSBUQ1BfRklOX1dBSVQxKTtcXG4gNTQ5OlxcdFxcdFxcdHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoc2ssIHJlcSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE0OjMwOjQ0LjY5Njc0NDI3OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNTIxNTY4MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIFRDUCBGYXN0IE9wZW4gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gVENQIEZhc3QgT3Blbi4gVGhlIGNvZGUgc2VlbXMgdG8gYmUgY2hlY2tpbmcgZm9yIGBDT05GSUdfVENQX0ZBU1RPUEVOYCwgb3IgaWYgdGhhdCdzIHVuZGVmaW5lZCwganVzdCByZWx5aW5nIG9uIGBDT05GSUdfSU5FVGAuIFdhaXQgYSBtaW51dGUsIHRoYXQgZG9lc24ndCBzb3VuZCByaWdodC4gSSdtIHByZXR0eSBzdXJlIFRDUCBGYXN0IE9wZW4gaXNuJ3QgYSBjb21waWxlLXRpbWUgb3B0aW9uIGluIHRoZSB3YXkgdGhpcyBjb2RlIHN1Z2dlc3RzLiBJdCdzIGFsbW9zdCBhbHdheXMgY29tcGlsZWQgaW4gYW5kIGNvbnRyb2xsZWQsIGFzIEkgcmVjYWxsLCB2aWEgYHN5c2N0bGAuIExldCBtZSBxdWlja2x5IGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGlzLiBJIHNob3VsZCBjaGVjayBpZiBgQ09ORklHX1RDUF9GQVNUT1BFTmAgZXZlbiBleGlzdHMgaW4gdGhpcyBjb250ZXh0LiBJdCBzZWVtcyBvZGQgdGhhdCB0aGUgY29kZSB3b3VsZCBjb25kaXRpb25hbGx5IGNvbXBpbGUgYmFzZWQgb24gaXRzIHByZXNlbmNlLiBUaGlzIHdhcnJhbnRzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiB0byBhdm9pZCBhbnkgcG90ZW50aWFsbHkgZmxhd2VkIGNvbmRpdGlvbmFsIGxvZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzE5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDozMDo0OC4wNDg5MDM1NjRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NDY3MDQyODIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBUQ1BfRkFTVE9QRU5cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE0OjMwOjUyLjg5NTYxNTcxNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzA5ODU4MjY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlIHdlIGdvLiBMZXQncyBkaWcgaW50byB0aGlzLlxuXG4qKkludmVzdGlnYXRpbmcgVENQIEZhc3QgT3BlbiBhbmQgUmVsYXRlZCBGdW5jdGlvbmFsaXR5KipcblxuQWxyaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIHRvIGVzdGFibGlzaCBpcyB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHNpdHVhdGlvbiB3aGVyZSBgQ09ORklHX1RDUF9GQVNUT1BFTmAgaXNuJ3QgZW5hYmxlZC4gVGhhdCdzIGEga2V5IGluaXRpYWwgY29uc3RyYWludCwgc29tZXRoaW5nIHRvIGtlZXAgaW4gbWluZCB0aHJvdWdob3V0IHRoaXMgaW52ZXN0aWdhdGlvbi4gTm93LCB3aGVyZSB0byBnbyBmcm9tIHRoZXJlPyBMZXQncyBjb25zaWRlciB0aGUgcmVsZXZhbnQgcm91dGluZXMuLi4gSSB3b25kZXIgYWJvdXQgYHJlcXNrX3RpbWVyX2hhbmRsZXJgLiBUaGF0J3Mgb2Z0ZW4gYSBjcnVjaWFsIHBpZWNlIGluIHRoZSBjb25uZWN0aW9uIHNldHVwIGxpZmVjeWNsZSwgc28gaXQncyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIEFuZCBhcyBhIHN0YXJ0aW5nIHBvaW50LCBpdCBsb29rcyBsaWtlIHRoYXQgY29kZSByZXNpZGVzIGluIGBuZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jYC4gTGV0J3MgZm9jdXMgdGhlcmUuIFRoYXQgZGlyZWN0b3J5IGlzIGEgcHJldHR5IGdvb2QgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIGNvbm5lY3Rpb24tc3BlY2lmaWMgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU4MCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE0OjMwOjU4LjIwNTQ3NjIyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzkzMjE3NzczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlcXNrX3RpbWVyX2hhbmRsZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz0xMDE1PXZvaWQgaW5ldF9jc2tfcmVxc2tfcXVldWVfZHJvcF9hbmRfcHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxcbi0tXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMDIwLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTAyMTpzdGF0aWMgdm9pZCByZXFza190aW1lcl9oYW5kbGVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTAyMi17XFxuLS1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTEwNDctXFx0XFx0cmVmY291bnRfc2V0KFxcdTAwMjZucmVxLVxcdTAwM2Vyc2tfcmVmY250LCAyICsgMSk7XFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxMDQ4OlxcdFxcdHRpbWVyX3NldHVwKFxcdTAwMjZucmVxLVxcdTAwM2Vyc2tfdGltZXIsIHJlcXNrX3RpbWVyX2hhbmRsZXIsIFRJTUVSX1BJTk5FRCk7XFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMDQ5LVxcdFxcdHJlcXNrX3F1ZXVlX21pZ3JhdGVkKFxcdTAwMjZpbmV0X2Nzayhuc2spLVxcdTAwM2VpY3NrX2FjY2VwdF9xdWV1ZSwgcmVxKTtcXG4tLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM9MTE0Mj1zdGF0aWMgYm9vbCByZXFza19xdWV1ZV9oYXNoX3JlcShzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuLS1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTExNTAtXFx0cmVxLVxcdTAwM2V0aW1lb3V0ID0gdGNwX3RpbWVvdXRfaW5pdCgoc3RydWN0IHNvY2sgKilyZXEpO1xcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTE1MTpcXHR0aW1lcl9zZXR1cChcXHUwMDI2cmVxLVxcdTAwM2Vyc2tfdGltZXIsIHJlcXNrX3RpbWVyX2hhbmRsZXIsIFRJTUVSX1BJTk5FRCk7XFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMTUyLVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWlncmF0ZV9yZXVzZXBvcnQuYz01ND1zdGF0aWMgc3RydWN0IG1pZ3JhdGVfcmV1c2Vwb3J0X3Rlc3RfY2FzZSB7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTgzLVxcdHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jOjg0OlxcdFxcdC5uYW1lID0gXFxcIklQdjQgVENQX05FV19TWU5fUkVDViByZXFza190aW1lcl9oYW5kbGVyXFxcIixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTg1LVxcdFxcdC5mYW1pbHkgPSBBRl9JTkVULFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWlncmF0ZV9yZXVzZXBvcnQuYy0xMTUtXFx0e1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21pZ3JhdGVfcmV1c2Vwb3J0LmM6MTE2OlxcdFxcdC5uYW1lID0gXFxcIklQdjYgVENQX05FV19TWU5fUkVDViByZXFza190aW1lcl9oYW5kbGVyXFxcIixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTExNy1cXHRcXHQuZmFtaWx5ID0gQUZfSU5FVDYsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jPTQ5MT1zdGF0aWMgdm9pZCBydW5fdGVzdChzdHJ1Y3QgbWlncmF0ZV9yZXVzZXBvcnRfdGVzdF9jYXNlICp0ZXN0X2Nhc2UsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTU0Ny1cXHRcXHQvKiBXYWl0IGZvciBTWU4rQUNLIHRpbWVycyB0byBleHBpcmUgc28gdGhhdFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21pZ3JhdGVfcmV1c2Vwb3J0LmM6NTQ4OlxcdFxcdCAqIHJlcXNrX3RpbWVyX2hhbmRsZXIoKSBtaWdyYXRlcyBUQ1BfTkVXX1NZTl9SRUNWIHJlcXVlc3RzLlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21pZ3JhdGVfcmV1c2Vwb3J0LmMtNTQ5LVxcdFxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDozMTowMi45OTg3MDE5NzNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ3OTk0MTc1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgU1lOLUFDSyBSZXRyYW5zbWl0IFRpbWVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBzZWUsIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBjcml0aWNhbCBUQ1AgZnVuY3Rpb25zOiBgcmVxc2tfdGltZXJfaGFuZGxlcmAsIHdoaWNoIGhhbmRsZXMgdGhlIFNZTi1BQ0sgcmV0cmFuc21pdHMgZm9yIHN0YW5kYXJkIFRDUCBjb25uZWN0aW9ucywgYW5kIGB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyYCBmb3IgVENQIEZhc3QgT3Blbi4gQm90aCBhcmUgYWJzb2x1dGVseSBjb3JlIHRvIHRoZSBUQ1AgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IHByb2Nlc3MuXG5cblRoZSByZWxldmFudCBrZXJuZWwgY29uZmlndXJhdGlvbnMgaGVyZSBhcmUgc3RyYWlnaHRmb3J3YXJkOiBgSU5FVGAgaXMgYSBnaXZlbiwgb2YgY291cnNlLiBTaW5jZSB0aGlzIGltcGFjdHMgSVB2NiBUQ1AgYXMgd2VsbCwgYElQVjZgIGlzIGFsc28gYXBwbGljYWJsZS5cblxuTXkgcHJpbWFyeSBzeW1ib2xzIG9mIGludGVyZXN0IGFyZSBkZWZpbml0ZWx5IGByZXFza190aW1lcl9oYW5kbGVyYCBhbmQgYHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXJgLiBXYWl0LCBoYW5nIG9uLi4uIGB0Y3BfcmVxc2tfdGltZW91dF9za2AgaXMgYW4gaW5saW5lIGZ1bmN0aW9uIGRlZmluZWQgaW4gYGluY2x1ZGUvbmV0L3RjcC5oYC4gVGhhdCBtZWFucyBpdCB3b24ndCBzaG93IHVwIGFzIGEgc3RhbmRhbG9uZSBzeW1ib2wgaW4gdGhlIGtlcm5lbCBpbWFnZSwgc28gaXQncyBub3QgYSBkaXJlY3QgZm9jdXMgcG9pbnQuIEkndmUgY29uZmlybWVkIHRoaXMgd2l0aCBhIHF1aWNrIGNoZWNrOiB0aGUgaGVhZGVyIHNob3dzIGl0IGFzIGlubGluZS5cblxuU28sIHRvIGJlIHByZWNpc2UsIHRoZSBrZXkgc3ltYm9scyBhcmU6XG4qICAgYHJlcXNrX3RpbWVyX2hhbmRsZXJgXG4qICAgYHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXJgXG5cblRoZSBwYXRjaCdzIGltcGFjdCBpcyBwcmV0dHkgY2xlYXI6IGl0J3MgZml4aW5nIGEgcG90ZW50aWFsIHNoaWZ0IG92ZXJmbG93IGluIHRoZSBTWU4tQUNLIHRpbWVvdXQgY2FsY3VsYXRpb24gYW5kIGVuZm9yY2luZyBhIG1heGltdW0gb2YgNjMgU1lOLUFDSyByZXRyaWVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGVlcCB3aXRoaW4gdGhlIFRDUCBzdGFjay4gSXQgZGlyZWN0bHkgYWZmZWN0cyBob3cgY29ubmVjdGlvbnMgYXJlIGVzdGFibGlzaGVkIGFuZCBob3cgdGltZW91dHMgYXJlIGhhbmRsZWQuIFRoaXMgc2NyZWFtcyBcImZ1enppbmcgdGFyZ2V0XCIg4oCTIHRoZSBTWU4tQUNLIHRpbWVyIGhhbmRsZXJzIGFyZSB0aGUgcGxhY2UgdG8gZm9jdXMuIFdlIG5lZWQgdG8gZXhwbG9yZSBib3RoIHJlZ3VsYXIgYW5kIEZhc3QgT3BlbiBjb25uZWN0aW9uIHNjZW5hcmlvcy5cblxuR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLCBhbmQgbG9va2luZyBhdCB0aGUgZnVuZGFtZW50YWwgVENQIGFzcGVjdHMsIEkgdGhpbmsgdGhlIGBJTkVUYCBjb25maWcgaXMgYWRlcXVhdGUuIFRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgb2J2aW91cyBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBJIGNhbiBzZWUsIGp1c3Qgc3RhbmRhcmQgVENQIG9wZXJhdGlvbi5cblxuSSdtIGNvbmZpZGVudCBpbiB0aGlzIGFzc2Vzc21lbnQuIExldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODY1MiwiT3V0cHV0VG9rZW5zIjoxMjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6MzE6MTAuNDc4NjQ1OTg3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0NDUyMzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmVxc2tfdGltZXJfaGFuZGxlclwiLFxuICAgIFwidGNwX2Zhc3RvcGVuX3N5bmFja190aW1lclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHNoaWZ0IG92ZXJmbG93IGluIFRDUCBTWU4tQUNLIHRpbWVvdXQgY2FsY3VsYXRpb24gYW5kIGNhcHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIFNZTi1BQ0sgcmV0cmllcyB0byA2My4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFRDUCBzdGFjayB0aGF0IGFmZmVjdHMgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IGFuZCB0aW1lb3V0IGhhbmRsaW5nLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgU1lOLUFDSyB0aW1lciBoYW5kbGVycyBmb3IgYm90aCByZWd1bGFyIGFuZCBGYXN0IE9wZW4gY29ubmVjdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJlcXNrX3RpbWVyX2hhbmRsZXJcIixcbiAgICBcInRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBzaGlmdCBvdmVyZmxvdyBpbiBUQ1AgU1lOLUFDSyB0aW1lb3V0IGNhbGN1bGF0aW9uIGFuZCBjYXBzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBTWU4tQUNLIHJldHJpZXMgdG8gNjMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBUQ1Agc3RhY2sgdGhhdCBhZmZlY3RzIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgdGltZW91dCBoYW5kbGluZy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIFNZTi1BQ0sgdGltZXIgaGFuZGxlcnMgZm9yIGJvdGggcmVndWxhciBhbmQgRmFzdCBPcGVuIGNvbm5lY3Rpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowt9zq4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-02 14:17:29 +0000 UTC FinishedAt: 2026-07-02 14:31:12 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "bb09d0e64ecaa0aa0f7d1133a1696ed74dead295", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "bb09d0e64ecaa0aa0f7d1133a1696ed74dead295", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET" ], "series_id": "7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "reqsk_timer_handler", "tcp_fastopen_synack_timer" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE0OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZXFza190aW1lcl9oYW5kbGVyJiMzNDssCiAgICAmIzM0O3RjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgc2hpZnQgb3ZlcmZsb3cgaW4gVENQIFNZTi1BQ0sgdGltZW91dCBjYWxjdWxhdGlvbiBhbmQgY2FwcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgU1lOLUFDSyByZXRyaWVzIHRvIDYzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgVENQIHN0YWNrIHRoYXQgYWZmZWN0cyBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgYW5kIHRpbWVvdXQgaGFuZGxpbmcuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBTWU4tQUNLIHRpbWVyIGhhbmRsZXJzIGZvciBib3RoIHJlZ3VsYXIgYW5kIEZhc3QgT3BlbiBjb25uZWN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDozMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU1YjQ4MjhkZTQ2MWQ0YzA5Mjk3ZjIyMWJmOGRjNjFhY2EzNTM2NjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDE0OjMwOjE3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RjcC5oIGIvaW5jbHVkZS9uZXQvdGNwLmhcbmluZGV4IDZkMzc2ZWE0ZDFjMDFkLi5lZTc4NDM2Yjg5NjQ1YSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3RjcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC90Y3AuaFxuQEAgLTE4Myw2ICYjNDM7MTgzLDcgQEAgc3RhdGljX2Fzc2VydCgoMSBcdTAwM2NcdTAwM2MgQVRPX0JJVFMpIFx1MDAzZSBUQ1BfREVMQUNLX01BWCk7XG4gI2RlZmluZSBNQVhfVENQX0tFRVBJTlRWTFx0MzI3NjdcbiAjZGVmaW5lIE1BWF9UQ1BfS0VFUENOVFx0XHQxMjdcbiAjZGVmaW5lIE1BWF9UQ1BfU1lOQ05UXHRcdDEyN1xuJiM0MzsjZGVmaW5lIE1BWF9UQ1BfU1lOQUNLX1JFVFJJRVNcdDYzXG4gXG4gLyogRW5zdXJlIHRoYXQgVENQIFBBV1MgY2hlY2tzIGFyZSByZWxheGVkIGFmdGVyIH4yMTQ3IHNlY29uZHNcbiAgKiB0byBhdm9pZCBvdmVyZmxvd3MuIFRoaXMgYXNzdW1lcyBhIGNsb2NrIHNtYWxsZXIgdGhhbiAxIE1oei5cbkBAIC04ODIsMTIgJiM0Mzs4ODMsMjIgQEAgc3RhdGljIGlubGluZSB1MzIgX190Y3Bfc2V0X3J0byhjb25zdCBzdHJ1Y3QgdGNwX3NvY2sgKnRwKVxuIFx0cmV0dXJuIHVzZWNzX3RvX2ppZmZpZXMoKHRwLVx1MDAzZXNydHRfdXMgXHUwMDNlXHUwMDNlIDMpICYjNDM7IHRwLVx1MDAzZXJ0dHZhcl91cyk7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dChzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4mIzQzO3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dF9zayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXG4mIzQzO1x0XHRcdFx0XHRcdCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4ge1xuLVx0dTY0IHRpbWVvdXQgPSAodTY0KXJlcS1cdTAwM2V0aW1lb3V0IFx1MDAzY1x1MDAzYyByZXEtXHUwMDNlbnVtX3RpbWVvdXQ7XG4mIzQzO1x0dTMyIHJ0b19tYXggPSB0Y3BfcnRvX21heChzayk7XG4mIzQzO1x0dTY0IHRpbWVvdXQgPSByZXEtXHUwMDNldGltZW91dDtcbiYjNDM7XG4mIzQzO1x0aWYgKHJlcS1cdTAwM2VudW1fdGltZW91dCBcdTAwM2U9IEJJVFNfUEVSX1RZUEUodTY0KSB8fFxuJiM0MztcdCAgICB0aW1lb3V0IFx1MDAzZSBVNjRfTUFYIFx1MDAzZVx1MDAzZSByZXEtXHUwMDNlbnVtX3RpbWVvdXQpXG4mIzQzO1x0XHRyZXR1cm4gcnRvX21heDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuICh1bnNpZ25lZCBsb25nKW1pbl90KHU2NCwgdGltZW91dCBcdTAwM2NcdTAwM2MgcmVxLVx1MDAzZW51bV90aW1lb3V0LCBydG9fbWF4KTtcbiYjNDM7fVxuIFxuLVx0cmV0dXJuICh1bnNpZ25lZCBsb25nKW1pbl90KHU2NCwgdGltZW91dCxcbi1cdFx0XHRcdCAgICB0Y3BfcnRvX21heChyZXEtXHUwMDNlcnNrX2xpc3RlbmVyKSk7XG4mIzQzO3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dChzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gdGNwX3JlcXNrX3RpbWVvdXRfc2socmVxLVx1MDAzZXJza19saXN0ZW5lciwgcmVxKTtcbiB9XG4gXG4gdTMyIHRjcF9kZWxhY2tfbWF4KGNvbnN0IHN0cnVjdCBzb2NrICpzayk7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYyBiL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmNcbmluZGV4IDU2OTAyYmJhNTQ4MzhiLi5iNzQyMTJiYWUzZGQyNSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmNcbkBAIC0xMDU2LDYgJiM0MzsxMDU2LDggQEAgc3RhdGljIHZvaWQgcmVxc2tfdGltZXJfaGFuZGxlcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbiBcdG5ldCA9IHNvY2tfbmV0KHNrX2xpc3RlbmVyKTtcbiBcdG1heF9zeW5fYWNrX3JldHJpZXMgPSBSRUFEX09OQ0UoaWNzay1cdTAwM2VpY3NrX3N5bl9yZXRyaWVzKSA/IDpcbiBcdFx0UkVBRF9PTkNFKG5ldC1cdTAwM2VpcHY0LnN5c2N0bF90Y3Bfc3luYWNrX3JldHJpZXMpO1xuJiM0MztcdG1heF9zeW5fYWNrX3JldHJpZXMgPSBtaW5fdChpbnQsIG1heF9zeW5fYWNrX3JldHJpZXMsXG4mIzQzO1x0XHRcdFx0ICAgIE1BWF9UQ1BfU1lOQUNLX1JFVFJJRVMpO1xuIFx0LyogTm9ybWFsbHkgYWxsIHRoZSBvcGVucmVxcyBhcmUgeW91bmcgYW5kIGJlY29tZSBtYXR1cmVcbiBcdCAqIChpLmUuIGNvbnZlcnRlZCB0byBlc3RhYmxpc2hlZCBzb2NrZXQpIGZvciBmaXJzdCB0aW1lb3V0LlxuIFx0ICogSWYgc3luYWNrIHdhcyBub3QgYWNrbm93bGVkZ2VkIGZvciAxIHNlY29uZCwgaXQgbWVhbnNcbkBAIC0xMDg2LDcgJiM0MzsxMDg4LDkgQEAgc3RhdGljIHZvaWQgcmVxc2tfdGltZXJfaGFuZGxlcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbiBcdFx0fVxuIFx0fVxuIFxuLVx0c3luX2Fja19yZWNhbGMocmVxLCBtYXhfc3luX2Fja19yZXRyaWVzLCBSRUFEX09OQ0UocXVldWUtXHUwMDNlcnNrcV9kZWZlcl9hY2NlcHQpLFxuJiM0MztcdHN5bl9hY2tfcmVjYWxjKHJlcSwgbWF4X3N5bl9hY2tfcmV0cmllcyxcbiYjNDM7XHRcdCAgICAgICBtaW5fdCh1OCwgUkVBRF9PTkNFKHF1ZXVlLVx1MDAzZXJza3FfZGVmZXJfYWNjZXB0KSxcbiYjNDM7XHRcdFx0ICAgICBNQVhfVENQX1NZTkFDS19SRVRSSUVTKSxcbiBcdFx0ICAgICAgIFx1MDAyNmV4cGlyZSwgXHUwMDI2cmVzZW5kKTtcbiBcdHRjcF9zeW5fYWNrX3RpbWVvdXQocmVxKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYyBiL25ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jXG5pbmRleCBjYTExODBkYmExZGVhOS4uZjlkMjMzYjk4YmJjNmMgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmNcbkBAIC0zNSw2ICYjNDM7MzUsNyBAQCBzdGF0aWMgaW50IGlwX3R0bF9taW4gPSAxO1xuIHN0YXRpYyBpbnQgaXBfdHRsX21heCA9IDI1NTtcbiBzdGF0aWMgaW50IHRjcF9zeW5fcmV0cmllc19taW4gPSAxO1xuIHN0YXRpYyBpbnQgdGNwX3N5bl9yZXRyaWVzX21heCA9IE1BWF9UQ1BfU1lOQ05UO1xuJiM0MztzdGF0aWMgaW50IHRjcF9zeW5hY2tfcmV0cmllc19tYXggPSBNQVhfVENQX1NZTkFDS19SRVRSSUVTO1xuIHN0YXRpYyBpbnQgdGNwX3N5bl9saW5lYXJfdGltZW91dHNfbWF4ID0gTUFYX1RDUF9TWU5DTlQ7XG4gc3RhdGljIHVuc2lnbmVkIGxvbmcgaXBfcGluZ19ncm91cF9yYW5nZV9taW5bXSA9IHsgMCwgMCB9O1xuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGlwX3BpbmdfZ3JvdXBfcmFuZ2VfbWF4W10gPSB7IEdJRF9UX01BWCwgR0lEX1RfTUFYIH07XG5AQCAtMTAzNCw2ICYjNDM7MTAzNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIGlwdjRfbmV0X3RhYmxlW10gPSB7XG4gXHRcdC5tYXhsZW5cdFx0PSBzaXplb2YodTgpLFxuIFx0XHQubW9kZVx0XHQ9IDA2NDQsXG4gXHRcdC5wcm9jX2hhbmRsZXJcdD0gcHJvY19kb3U4dmVjX21pbm1heCxcbiYjNDM7XHRcdC5leHRyYTJcdFx0PSBcdTAwMjZ0Y3Bfc3luYWNrX3JldHJpZXNfbWF4XG4gXHR9LFxuICNpZmRlZiBDT05GSUdfU1lOX0NPT0tJRVNcbiBcdHtcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfdGltZXIuYyBiL25ldC9pcHY0L3RjcF90aW1lci5jXG5pbmRleCBiZjE3MWI1ZTFlYjMwNi4uYmJlZGYyYjllMWJjZWEgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfdGltZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX3RpbWVyLmNcbkBAIC00NjcsNiAmIzQzOzQ2Nyw3IEBAIHN0YXRpYyB2b2lkIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4gXHQgKi9cbiBcdG1heF9yZXRyaWVzID0gUkVBRF9PTkNFKGljc2stXHUwMDNlaWNza19zeW5fcmV0cmllcykgPyA6XG4gXHRcdFJFQURfT05DRShzb2NrX25ldChzayktXHUwMDNlaXB2NC5zeXNjdGxfdGNwX3N5bmFja19yZXRyaWVzKSAmIzQzOyAxO1xuJiM0MztcdG1heF9yZXRyaWVzID0gbWluX3QoaW50LCBtYXhfcmV0cmllcywgTUFYX1RDUF9TWU5BQ0tfUkVUUklFUyk7XG4gXG4gXHRpZiAocmVxLVx1MDAzZW51bV90aW1lb3V0IFx1MDAzZT0gbWF4X3JldHJpZXMpIHtcbiBcdFx0dGNwX3dyaXRlX2Vycihzayk7XG5AQCAtNDg4LDcgJiM0Mzs0ODksNyBAQCBzdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuIFx0aWYgKCF0cC1cdTAwM2VyZXRyYW5zX3N0YW1wKVxuIFx0XHR0cC1cdTAwM2VyZXRyYW5zX3N0YW1wID0gdGNwX3RpbWVfc3RhbXBfdHModHApO1xuIFx0dGNwX3Jlc2V0X3htaXRfdGltZXIoc2ssIElDU0tfVElNRV9SRVRSQU5TLFxuLVx0XHRcdCAgcmVxLVx1MDAzZXRpbWVvdXQgXHUwMDNjXHUwMDNjIHJlcS1cdTAwM2VudW1fdGltZW91dCwgZmFsc2UpO1xuJiM0MztcdFx0XHQgICAgIHRjcF9yZXFza190aW1lb3V0X3NrKHNrLCByZXEpLCBmYWxzZSk7XG4gfVxuIFxuIHN0YXRpYyBib29sIHRjcF9ydHhfcHJvYmUwX3RpbWVkX291dChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6MzA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JlcXNrX3RpbWVyX2hhbmRsZXImIzM0OywKICAgICYjMzQ7dGNwX2Zhc3RvcGVuX3N5bmFja190aW1lciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBzaGlmdCBvdmVyZmxvdyBpbiBUQ1AgU1lOLUFDSyB0aW1lb3V0IGNhbGN1bGF0aW9uIGFuZCBjYXBzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBTWU4tQUNLIHJldHJpZXMgdG8gNjMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBUQ1Agc3RhY2sgdGhhdCBhZmZlY3RzIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgdGltZW91dCBoYW5kbGluZy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIFNZTi1BQ0sgdGltZXIgaGFuZGxlcnMgZm9yIGJvdGggcmVndWxhciBhbmQgRmFzdCBPcGVuIGNvbm5lY3Rpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NWI0ODI4ZGU0NjFkNGMwOTI5N2YyMjFiZjhkYzYxYWNhMzUzNjY1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMiAxNDozMDoxNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RjcC5oIGIvaW5jbHVkZS9uZXQvdGNwLmgKaW5kZXggNmQzNzZlYTRkMWMwMWQuLmVlNzg0MzZiODk2NDVhIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC90Y3AuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC90Y3AuaApAQCAtMTgzLDYgJiM0MzsxODMsNyBAQCBzdGF0aWNfYXNzZXJ0KCgxICZsdDsmbHQ7IEFUT19CSVRTKSAmZ3Q7IFRDUF9ERUxBQ0tfTUFYKTsKICNkZWZpbmUgTUFYX1RDUF9LRUVQSU5UVkwJMzI3NjcKICNkZWZpbmUgTUFYX1RDUF9LRUVQQ05UCQkxMjcKICNkZWZpbmUgTUFYX1RDUF9TWU5DTlQJCTEyNwomIzQzOyNkZWZpbmUgTUFYX1RDUF9TWU5BQ0tfUkVUUklFUwk2MwogCiAvKiBFbnN1cmUgdGhhdCBUQ1AgUEFXUyBjaGVja3MgYXJlIHJlbGF4ZWQgYWZ0ZXIgfjIxNDcgc2Vjb25kcwogICogdG8gYXZvaWQgb3ZlcmZsb3dzLiBUaGlzIGFzc3VtZXMgYSBjbG9jayBzbWFsbGVyIHRoYW4gMSBNaHouCkBAIC04ODIsMTIgJiM0Mzs4ODMsMjIgQEAgc3RhdGljIGlubGluZSB1MzIgX190Y3Bfc2V0X3J0byhjb25zdCBzdHJ1Y3QgdGNwX3NvY2sgKnRwKQogCXJldHVybiB1c2Vjc190b19qaWZmaWVzKCh0cC0mZ3Q7c3J0dF91cyAmZ3Q7Jmd0OyAzKSAmIzQzOyB0cC0mZ3Q7cnR0dmFyX3VzKTsKIH0KIAotc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHRjcF9yZXFza190aW1lb3V0KHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSkKJiM0MztzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgdGNwX3JlcXNrX3RpbWVvdXRfc2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLAomIzQzOwkJCQkJCSBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpCiB7Ci0JdTY0IHRpbWVvdXQgPSAodTY0KXJlcS0mZ3Q7dGltZW91dCAmbHQ7Jmx0OyByZXEtJmd0O251bV90aW1lb3V0OwomIzQzOwl1MzIgcnRvX21heCA9IHRjcF9ydG9fbWF4KHNrKTsKJiM0MzsJdTY0IHRpbWVvdXQgPSByZXEtJmd0O3RpbWVvdXQ7CiYjNDM7CiYjNDM7CWlmIChyZXEtJmd0O251bV90aW1lb3V0ICZndDs9IEJJVFNfUEVSX1RZUEUodTY0KSB8fAomIzQzOwkgICAgdGltZW91dCAmZ3Q7IFU2NF9NQVggJmd0OyZndDsgcmVxLSZndDtudW1fdGltZW91dCkKJiM0MzsJCXJldHVybiBydG9fbWF4OwomIzQzOwomIzQzOwlyZXR1cm4gKHVuc2lnbmVkIGxvbmcpbWluX3QodTY0LCB0aW1lb3V0ICZsdDsmbHQ7IHJlcS0mZ3Q7bnVtX3RpbWVvdXQsIHJ0b19tYXgpOwomIzQzO30KIAotCXJldHVybiAodW5zaWduZWQgbG9uZyltaW5fdCh1NjQsIHRpbWVvdXQsCi0JCQkJICAgIHRjcF9ydG9fbWF4KHJlcS0mZ3Q7cnNrX2xpc3RlbmVyKSk7CiYjNDM7c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHRjcF9yZXFza190aW1lb3V0KHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSkKJiM0Mzt7CiYjNDM7CXJldHVybiB0Y3BfcmVxc2tfdGltZW91dF9zayhyZXEtJmd0O3Jza19saXN0ZW5lciwgcmVxKTsKIH0KIAogdTMyIHRjcF9kZWxhY2tfbWF4KGNvbnN0IHN0cnVjdCBzb2NrICpzayk7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jIGIvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYwppbmRleCA1NjkwMmJiYTU0ODM4Yi4uYjc0MjEyYmFlM2RkMjUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYwpAQCAtMTA1Niw2ICYjNDM7MTA1Niw4IEBAIHN0YXRpYyB2b2lkIHJlcXNrX3RpbWVyX2hhbmRsZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpCiAJbmV0ID0gc29ja19uZXQoc2tfbGlzdGVuZXIpOwogCW1heF9zeW5fYWNrX3JldHJpZXMgPSBSRUFEX09OQ0UoaWNzay0mZ3Q7aWNza19zeW5fcmV0cmllcykgPyA6CiAJCVJFQURfT05DRShuZXQtJmd0O2lwdjQuc3lzY3RsX3RjcF9zeW5hY2tfcmV0cmllcyk7CiYjNDM7CW1heF9zeW5fYWNrX3JldHJpZXMgPSBtaW5fdChpbnQsIG1heF9zeW5fYWNrX3JldHJpZXMsCiYjNDM7CQkJCSAgICBNQVhfVENQX1NZTkFDS19SRVRSSUVTKTsKIAkvKiBOb3JtYWxseSBhbGwgdGhlIG9wZW5yZXFzIGFyZSB5b3VuZyBhbmQgYmVjb21lIG1hdHVyZQogCSAqIChpLmUuIGNvbnZlcnRlZCB0byBlc3RhYmxpc2hlZCBzb2NrZXQpIGZvciBmaXJzdCB0aW1lb3V0LgogCSAqIElmIHN5bmFjayB3YXMgbm90IGFja25vd2xlZGdlZCBmb3IgMSBzZWNvbmQsIGl0IG1lYW5zCkBAIC0xMDg2LDcgJiM0MzsxMDg4LDkgQEAgc3RhdGljIHZvaWQgcmVxc2tfdGltZXJfaGFuZGxlcihzdHJ1Y3QgdGltZXJfbGlzdCAqdCkKIAkJfQogCX0KIAotCXN5bl9hY2tfcmVjYWxjKHJlcSwgbWF4X3N5bl9hY2tfcmV0cmllcywgUkVBRF9PTkNFKHF1ZXVlLSZndDtyc2txX2RlZmVyX2FjY2VwdCksCiYjNDM7CXN5bl9hY2tfcmVjYWxjKHJlcSwgbWF4X3N5bl9hY2tfcmV0cmllcywKJiM0MzsJCSAgICAgICBtaW5fdCh1OCwgUkVBRF9PTkNFKHF1ZXVlLSZndDtyc2txX2RlZmVyX2FjY2VwdCksCiYjNDM7CQkJICAgICBNQVhfVENQX1NZTkFDS19SRVRSSUVTKSwKIAkJICAgICAgICZhbXA7ZXhwaXJlLCAmYW1wO3Jlc2VuZCk7CiAJdGNwX3N5bl9hY2tfdGltZW91dChyZXEpOwogCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYyBiL25ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jCmluZGV4IGNhMTE4MGRiYTFkZWE5Li5mOWQyMzNiOThiYmM2YyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMKQEAgLTM1LDYgJiM0MzszNSw3IEBAIHN0YXRpYyBpbnQgaXBfdHRsX21pbiA9IDE7CiBzdGF0aWMgaW50IGlwX3R0bF9tYXggPSAyNTU7CiBzdGF0aWMgaW50IHRjcF9zeW5fcmV0cmllc19taW4gPSAxOwogc3RhdGljIGludCB0Y3Bfc3luX3JldHJpZXNfbWF4ID0gTUFYX1RDUF9TWU5DTlQ7CiYjNDM7c3RhdGljIGludCB0Y3Bfc3luYWNrX3JldHJpZXNfbWF4ID0gTUFYX1RDUF9TWU5BQ0tfUkVUUklFUzsKIHN0YXRpYyBpbnQgdGNwX3N5bl9saW5lYXJfdGltZW91dHNfbWF4ID0gTUFYX1RDUF9TWU5DTlQ7CiBzdGF0aWMgdW5zaWduZWQgbG9uZyBpcF9waW5nX2dyb3VwX3JhbmdlX21pbltdID0geyAwLCAwIH07CiBzdGF0aWMgdW5zaWduZWQgbG9uZyBpcF9waW5nX2dyb3VwX3JhbmdlX21heFtdID0geyBHSURfVF9NQVgsIEdJRF9UX01BWCB9OwpAQCAtMTAzNCw2ICYjNDM7MTAzNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIGlwdjRfbmV0X3RhYmxlW10gPSB7CiAJCS5tYXhsZW4JCT0gc2l6ZW9mKHU4KSwKIAkJLm1vZGUJCT0gMDY0NCwKIAkJLnByb2NfaGFuZGxlcgk9IHByb2NfZG91OHZlY19taW5tYXgsCiYjNDM7CQkuZXh0cmEyCQk9ICZhbXA7dGNwX3N5bmFja19yZXRyaWVzX21heAogCX0sCiAjaWZkZWYgQ09ORklHX1NZTl9DT09LSUVTCiAJewpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX3RpbWVyLmMgYi9uZXQvaXB2NC90Y3BfdGltZXIuYwppbmRleCBiZjE3MWI1ZTFlYjMwNi4uYmJlZGYyYjllMWJjZWEgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF90aW1lci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3RjcF90aW1lci5jCkBAIC00NjcsNiAmIzQzOzQ2Nyw3IEBAIHN0YXRpYyB2b2lkIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpCiAJICovCiAJbWF4X3JldHJpZXMgPSBSRUFEX09OQ0UoaWNzay0mZ3Q7aWNza19zeW5fcmV0cmllcykgPyA6CiAJCVJFQURfT05DRShzb2NrX25ldChzayktJmd0O2lwdjQuc3lzY3RsX3RjcF9zeW5hY2tfcmV0cmllcykgJiM0MzsgMTsKJiM0MzsJbWF4X3JldHJpZXMgPSBtaW5fdChpbnQsIG1heF9yZXRyaWVzLCBNQVhfVENQX1NZTkFDS19SRVRSSUVTKTsKIAogCWlmIChyZXEtJmd0O251bV90aW1lb3V0ICZndDs9IG1heF9yZXRyaWVzKSB7CiAJCXRjcF93cml0ZV9lcnIoc2spOwpAQCAtNDg4LDcgJiM0Mzs0ODksNyBAQCBzdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKQogCWlmICghdHAtJmd0O3JldHJhbnNfc3RhbXApCiAJCXRwLSZndDtyZXRyYW5zX3N0YW1wID0gdGNwX3RpbWVfc3RhbXBfdHModHApOwogCXRjcF9yZXNldF94bWl0X3RpbWVyKHNrLCBJQ1NLX1RJTUVfUkVUUkFOUywKLQkJCSAgcmVxLSZndDt0aW1lb3V0ICZsdDsmbHQ7IHJlcS0mZ3Q7bnVtX3RpbWVvdXQsIGZhbHNlKTsKJiM0MzsJCQkgICAgIHRjcF9yZXFza190aW1lb3V0X3NrKHNrLCByZXEpLCBmYWxzZSk7CiB9CiAKIHN0YXRpYyBib29sIHRjcF9ydHhfcHJvYmUwX3RpbWVkX291dChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE0OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NDAKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA1ODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUQ1AgU1lOLUFDSyBSZXRyeSBMb2dpYyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgaXQmIzM5O3MgYWRkcmVzc2luZyBzb21lIGNyaXRpY2FsIHJvYnVzdG5lc3MgaXNzdWVzIGluIHRoZSBUQ1AgU1lOLUFDSyByZXRyeSBtZWNoYW5pc20uIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGNoYW5nZXMgdG91Y2hpbmcgZm91ciBrZXkgZmlsZXM6IGBpbmNsdWRlL25ldC90Y3AuaGAsIGBuZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jYCwgYG5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jYCwgYW5kIGBuZXQvaXB2NC90Y3BfdGltZXIuY2AuIFRoaXMgdGVsbHMgbWUgaXQmIzM5O3Mgbm90IGEgdHJpdmlhbCBtb2RpZmljYXRpb24sIGJ1dCByYXRoZXIgYSBmb2N1c2VkIHJlZmluZW1lbnQgb2YgdGhlIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBwcm9jZXNzLgoKRmlyc3QsIGluIGBpbmNsdWRlL25ldC90Y3AuaGAsIHdlIHNlZSB0aGUgaW50cm9kdWN0aW9uIG9mIGBNQVhfVENQX1NZTkFDS19SRVRSSUVTYCwgbm93IGRlZmluZWQgYXMgNjMsIHdoaWNoIGlzIGltcG9ydGFudC4gQWxzbywgdGhlIGB0Y3BfcmVxc2tfdGltZW91dGAgZnVuY3Rpb24gaXMgbW9kaWZpZWQgdG8gdXNlIGB0Y3BfcmVxc2tfdGltZW91dF9za2AsIHdoaWNoIGhhcyBhIGNydWNpYWwgb3ZlcmZsb3cgY2hlY2suIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgZXhwbGljaXRseSBndWFyZGluZyBhZ2FpbnN0IHNoaWZ0IG92ZXJmbG93cywgd2hpY2ggaXMgc21hcnQuIElmIHRoZSByZXRyaWVzIGdvIHRvbyBoaWdoIGFuZCB0aW1lb3V0IHNoaWZ0cyB0b28gbWFueSB0aW1lcywgd2UgY2FuIG92ZXJmbG93IGEgdTY0IHdoaWNoIGNvdWxkIGNhdXNlIGlzc3Vlcy4KCk1vdmluZyB0byBgbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suY2AsIHRoZSBgcmVxc2tfdGltZXJfaGFuZGxlcmAgaXMgYmVpbmcgdXBkYXRlZCB0byBjYXAgYG1heF9zeW5fYWNrX3JldHJpZXNgIGF0IGBNQVhfVENQX1NZTkFDS19SRVRSSUVTYC4gU2ltaWxhcmx5LCB0aGV5JiMzOTtyZSBib3VuZGluZyBgcXVldWUtJmd0O3Jza3FfZGVmZXJfYWNjZXB0YCB3aXRoIHRoZSBzYW1lIGxpbWl0LCB3aGljaCBpcyBnb29kIGNvbnNpc3RlbmN5LgoKSW4gYG5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jYCwgdGhleSYjMzk7cmUgYWRkaW5nIGEgbmV3IHN5c2N0bCwgYHRjcF9zeW5hY2tfcmV0cmllc19tYXhgLCB3aGljaCBzZWVtcyB0byBwcm92aWRlIGEgdXNlci10dW5hYmxlIHVwcGVyIGJvdW5kIG9uIHRoZSByZXRyeSBjb3VudC4gVGhpcyBpcyBhIG5pY2UgZmVhdHVyZSwgZ2l2aW5nIGFkbWluaXN0cmF0b3JzIGEgbGV2ZWwgb2YgY29udHJvbCBvdmVyIHRoZSBzeXN0ZW0mIzM5O3MgYmVoYXZpb3IuCgpGaW5hbGx5LCBgbmV0L2lwdjQvdGNwX3RpbWVyLmNgIHNob3dzIHNpbWlsYXIgcHJvdGVjdGlvbnMgZm9yIGB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyYC4gVGhleSYjMzk7cmUgY2FwcGluZyB0aGUgcmV0cmllcyBhbmQgc3dpdGNoaW5nIHRvIGB0Y3BfcmVxc2tfdGltZW91dF9za2AsIGFnYWluLCB0byBhdm9pZCB0aGF0IHBlc2t5IHNoaWZ0IG92ZXJmbG93IHRoYXQgY2FuIG9jY3VyIHdoZW4gY2FsY3VsYXRpbmcgdGhlIHRpbWVvdXQuCgpPdmVyYWxsLCBpdCYjMzk7cyBjbGVhciB0aGlzIHBhdGNoIGlzIGFib3V0IGZpeGluZyBwb3RlbnRpYWwgb3ZlcmZsb3cgYnVncyBhbmQgZXN0YWJsaXNoaW5nIGhhcmQgbGltaXRzIG9uIHRoZSBudW1iZXIgb2YgU1lOLUFDSyByZXRyaWVzLiBJdCYjMzk7cyBhYm91dCBzdGFiaWxpdHkgYW5kIHByZXZlbnRpbmcgdGhlIHN5c3RlbSBmcm9tIGdldHRpbmcgc3R1Y2sgaW4gYW4gaW5maW5pdGUgcmV0cnkgbG9vcCBvciBtaXNjYWxjdWxhdGluZyB0aGUgdGltZW91dC4gVGhpcyBuZWVkcyB0byBiZSBmdXp6ZWQgdGhvcm91Z2hseS4KCk5vdywgbGV0JiMzOTtzIGNvbnNpZGVyIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gVGhlIGNvcmUgVENQIGZ1bmN0aW9uYWxpdHkgaXMgYWx3YXlzIGNvbXBpbGVkLCBzbyB3ZSBqdXN0IG5lZWQgYENPTkZJR19JTkVUYCB3aGljaCBpcyB2ZXJ5IGdlbmVyaWMuIFRoZSBwcmVzZW5jZSBvZiBgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcmAgaW4gYG5ldC9pcHY0L3RjcF90aW1lci5jYCBtZWFucyBgQ09ORklHX1RDUF9GQVNUT1BFTmAgbWlnaHQgYmUgYSByZWxldmFudCBjb25maWd1cmF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGtlZXAgdGhpcyBpbiBtaW5kIHdoZW4gZGV2aXNpbmcgZnV6emluZyBzdHJhdGVnaWVzLCBhcyB0aGUgYmVoYXZpb3IgbWF5IHZhcnkgZGVwZW5kaW5nIG9uIHdoZXRoZXIgRmFzdCBPcGVuIGlzIGVuYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX2Zhc3RvcGVuX3N5bmFja190aW1lciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaW5wdXQuYz03MDczPXN0YXRpYyB2b2lkIHRjcF9yY3Zfc3lucmVjdl9zdGF0ZV9mYXN0b3BlbihzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmMtNzA4NS1cdFdSSVRFX09OQ0UoaW5ldF9jc2soc2spLVx1MDAzZWljc2tfcmV0cmFuc21pdHMsIDApO1xubmV0L2lwdjQvdGNwX2lucHV0LmM6NzA4NjpcdC8qIEluIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoKSBvbiB0aGUgZmlyc3QgU1lOQUNLIFJUTyB3ZSBzZXRcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcwODctXHQgKiByZXRyYW5zX3N0YW1wIGJ1dCBkb24mIzM5O3QgZW50ZXIgQ0FfTG9zcywgc28gaW4gY2FzZSB0aGF0IGhhcHBlbmVkIHdlXG4tLVxubmV0L2lwdjQvdGNwX3RpbWVyLmM9NDQwPXN0YXRpYyB2b2lkIHRjcF91cGRhdGVfcnRvX3N0YXRzKHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQvaXB2NC90Y3BfdGltZXIuYy00NTYtICovXG5uZXQvaXB2NC90Y3BfdGltZXIuYzo0NTc6c3RhdGljIHZvaWQgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcbm5ldC9pcHY0L3RjcF90aW1lci5jLTQ1OC17XG4tLVxubmV0L2lwdjQvdGNwX3RpbWVyLmM9NTM2PXZvaWQgdGNwX3JldHJhbnNtaXRfdGltZXIoc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC9pcHY0L3RjcF90aW1lci5jLTU0OC1cdFx0XHQgICAgIHNrLVx1MDAzZXNrX3N0YXRlICE9IFRDUF9GSU5fV0FJVDEpO1xubmV0L2lwdjQvdGNwX3RpbWVyLmM6NTQ5Olx0XHR0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHNrLCByZXEpO1xubmV0L2lwdjQvdGNwX3RpbWVyLmMtNTUwLVx0XHQvKiBCZWZvcmUgd2UgcmVjZWl2ZSBBQ0sgdG8gb3VyIFNZTi1BQ0sgZG9uJiMzOTt0IHJldHJhbnNtaXRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDgzCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGEgVGltZXIgaW4gdGhlIFRDUCBTdGFjayoqCgpBbHJpZ2h0LCBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyYCB2YXJpYWJsZS4gVGhlIGZpcnN0IHRoaW5nIEkgYWx3YXlzIGRvIHdoZW4gSSBzZWUgc29tZXRoaW5nIGxpa2UgdGhpcyBpcyBsb29rIGZvciBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyIGtlcm5lbCBjb25maWd1cmF0aW9uIG9yIGZlYXR1cmUgc2V0LiBUaGF0IGBpZmRlZmAgY2hlY2sgaXMgdGhlIGtleS4gSXMgdGhpcyB0aW1lciBvbmx5IGRlZmluZWQgYW5kIHVzZWQgaWYgYSBjZXJ0YWluIGZlYXR1cmUsIG1heWJlIEZhc3QgT3BlbiBpdHNlbGYsIGlzIGVuYWJsZWQ/IE9yIGlzIGl0IHBhcnQgb2YgYSBtb3JlIGNvcmUgc2V0IG9mIFRDUCBmdW5jdGlvbmFsaXR5LCBwb3RlbnRpYWxseSBtb2RpZmllZCBieSBhIGRpZmZlcmVudCBmZWF0dXJlPyBLbm93aW5nIHRoYXQgd2lsbCBzaWduaWZpY2FudGx5IG5hcnJvdyBkb3duIHRoZSBwbGFjZXMgSSBuZWVkIHRvIGxvb2sgZm9yIGl0cyB1c2UgYW5kIGhvdyBpdCYjMzk7cyBpbXBhY3RlZCBieSB0aGUgc3Vycm91bmRpbmcgY29kZS4gVGltZSB0byBjaGVjayB0aG9zZSBgI2lmZGVmYCBkaXJlY3RpdmVzLiBMZXQmIzM5O3Mgc2VlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjaWZkZWYuKkZBU1RPUEVOJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzE5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIFRDUCBGYXN0IE9wZW4gU1lOLUFDSyBUaW1lcioqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBndXRzIG9mIFRDUCBGYXN0IE9wZW4uIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGhhbmRsaW5nIG9mIHRoZSBgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcmAuIFRoYXQgcG9pbnRzIG1lIGRpcmVjdGx5IHRvIGBuZXQvaXB2NC90Y3BfdGltZXIuY2AgaW4gdGhlIGtlcm5lbCBzb3VyY2UuIEkgc3VzcGVjdCB0aGVyZSYjMzk7cyBzb21ldGhpbmcgc3BlY2lmaWMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgYWJvdXQgdGhlIHRpbWVyJiMzOTtzIHJvbGUsIHByb2JhYmx5IHJlZ2FyZGluZyByZXRyYW5zbWlzc2lvbnMsIHRpbWVvdXRzLCBvciBzdGF0ZSB0cmFuc2l0aW9ucyByZWxhdGVkIHRvIEZhc3QgT3BlbiYjMzk7cyBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQuIE15IGluc3RpbmN0IHRlbGxzIG1lIHRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZmluZCB0aGUgbG9naWMgZm9yIGhhbmRsaW5nIHRoZSBTWU4tQUNLJiMzOTtzIGFja25vd2xlZGdtZW50IChvciBsYWNrIHRoZXJlb2YpIHdoZW4gRmFzdCBPcGVuIGlzIGluIHBsYXkuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBlZGdlIGNhc2VzIOKAkyB3aGF0IGhhcHBlbnMgaWYgdGhlIFNZTi1BQ0sgZ2V0cyBsb3N0LCBvciBkZWxheWVkLCB3aXRoIEZhc3QgT3BlbiBlbmFibGVkPyBMZXQmIzM5O3MgZ2V0IHRvIHRoZSBjb2RlIGFuZCBzZWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfdGltZXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQ1MDpcdFx0dHAtXHUwMDNldG90YWxfcnRvJiM0MzsmIzQzOztcbiA0NTE6XHR9XG4gNDUyOlx0XG4gNDUzOlx0LypcbiA0NTQ6XHQgKlx0VGltZXIgZm9yIEZhc3QgT3BlbiBzb2NrZXQgdG8gcmV0cmFuc21pdCBTWU5BQ0suIE5vdGUgdGhhdCB0aGVcbiA0NTU6XHQgKlx0c2sgaGVyZSBpcyB0aGUgY2hpbGQgc29ja2V0LCBub3QgdGhlIHBhcmVudCAobGlzdGVuZXIpIHNvY2tldC5cbiA0NTY6XHQgKi9cbiA0NTc6XHRzdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuIDQ1ODpcdHtcbiA0NTk6XHRcdHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29jayAqaWNzayA9IGluZXRfY3NrKHNrKTtcbiA0NjA6XHRcdHN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spO1xuIDQ2MTpcdFx0aW50IG1heF9yZXRyaWVzO1xuIDQ2MjpcdFxuIDQ2MzpcdFx0dGNwX3N5bl9hY2tfdGltZW91dChyZXEpO1xuIDQ2NDpcdFxuIDQ2NTpcdFx0LyogQWRkIG9uZSBtb3JlIHJldHJ5IGZvciBmYXN0b3Blbi5cbiA0NjY6XHRcdCAqIFBhaXJlZCB3aXRoIFdSSVRFX09OQ0UoKSBpbiB0Y3Bfc29ja19zZXRfc3luY250KClcbiA0Njc6XHRcdCAqL1xuIDQ2ODpcdFx0bWF4X3JldHJpZXMgPSBSRUFEX09OQ0UoaWNzay1cdTAwM2VpY3NrX3N5bl9yZXRyaWVzKSA/IDpcbiA0Njk6XHRcdFx0UkVBRF9PTkNFKHNvY2tfbmV0KHNrKS1cdTAwM2VpcHY0LnN5c2N0bF90Y3Bfc3luYWNrX3JldHJpZXMpICYjNDM7IDE7XG4gNDcwOlx0XHRtYXhfcmV0cmllcyA9IG1pbl90KGludCwgbWF4X3JldHJpZXMsIE1BWF9UQ1BfU1lOQUNLX1JFVFJJRVMpO1xuIDQ3MTpcdFxuIDQ3MjpcdFx0aWYgKHJlcS1cdTAwM2VudW1fdGltZW91dCBcdTAwM2U9IG1heF9yZXRyaWVzKSB7XG4gNDczOlx0XHRcdHRjcF93cml0ZV9lcnIoc2spO1xuIDQ3NDpcdFx0XHRyZXR1cm47XG4gNDc1Olx0XHR9XG4gNDc2Olx0XHQvKiBMb3dlciBjd25kIGFmdGVyIGNlcnRhaW4gU1lOQUNLIHRpbWVvdXQgbGlrZSB0Y3BfaW5pdF90cmFuc2ZlcigpICovXG4gNDc3Olx0XHRpZiAoaWNzay1cdTAwM2VpY3NrX3JldHJhbnNtaXRzID09IDEpXG4gNDc4Olx0XHRcdHRjcF9lbnRlcl9sb3NzKHNrKTtcbiA0Nzk6XHRcdC8qIFhYWCAoVEZPKSAtIFVubGlrZSByZWd1bGFyIFNZTi1BQ0sgcmV0cmFuc21pdCwgd2UgaWdub3JlIGVycm9yXG4gNDgwOlx0XHQgKiByZXR1cm5lZCBmcm9tIHJ0eF9zeW5fYWNrKCkgdG8gbWFrZSBpdCBtb3JlIHBlcnNpc3RlbnQgbGlrZVxuIDQ4MTpcdFx0ICogcmVndWxhciByZXRyYW5zbWl0IGJlY2F1c2UgaWYgdGhlIGNoaWxkIHNvY2tldCBoYXMgYmVlbiBhY2NlcHRlZFxuIDQ4MjpcdFx0ICogaXQmIzM5O3Mgbm90IGdvb2QgdG8gZ2l2ZSB1cCB0b28gZWFzaWx5LlxuIDQ4MzpcdFx0ICovXG4gNDg0Olx0XHR0Y3BfcnR4X3N5bmFjayhzaywgcmVxKTtcbiA0ODU6XHRcdGlmIChyZXEtXHUwMDNlbnVtX3JldHJhbnMgXHUwMDNlIDEgXHUwMDI2XHUwMDI2IHRjcF9yc2socmVxKS1cdTAwM2VhY2NlY25fb2spXG4gNDg2Olx0XHRcdHRjcF9yc2socmVxKS1cdTAwM2VhY2NlY25fZmFpbF9tb2RlIHw9IFRDUF9BQ0NFQ05fQUNFX0ZBSUxfU0VORDtcbiA0ODc6XHRcdHJlcS1cdTAwM2VudW1fdGltZW91dCYjNDM7JiM0Mzs7XG4gNDg4Olx0XHR0Y3BfdXBkYXRlX3J0b19zdGF0cyhzayk7XG4gNDg5Olx0XHRpZiAoIXRwLVx1MDAzZXJldHJhbnNfc3RhbXApXG4gNDkwOlx0XHRcdHRwLVx1MDAzZXJldHJhbnNfc3RhbXAgPSB0Y3BfdGltZV9zdGFtcF90cyh0cCk7XG4gNDkxOlx0XHR0Y3BfcmVzZXRfeG1pdF90aW1lcihzaywgSUNTS19USU1FX1JFVFJBTlMsXG4gNDkyOlx0XHRcdFx0ICAgICB0Y3BfcmVxc2tfdGltZW91dF9zayhzaywgcmVxKSwgZmFsc2UpO1xuIDQ5MzpcdH1cbiA0OTQ6XHRcbiA0OTU6XHRzdGF0aWMgYm9vbCB0Y3BfcnR4X3Byb2JlMF90aW1lZF9vdXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxuIDQ5NjpcdFx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIDQ5NzpcdFx0XHRcdFx0ICAgICB1MzIgcnR4X2RlbHRhKVxuIDQ5ODpcdHtcbiA0OTk6XHRcdGNvbnN0IHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29jayAqaWNzayA9IGluZXRfY3NrKHNrKTtcbiA1MDA6XHRcdHUzMiB1c2VyX3RpbWVvdXQgPSBSRUFEX09OQ0UoaWNzay1cdTAwM2VpY3NrX3VzZXJfdGltZW91dCk7XG4gNTAxOlx0XHRjb25zdCBzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3NrKHNrKTtcbiA1MDI6XHRcdGludCB0aW1lb3V0ID0gdGNwX3J0b19tYXgoc2spICogMjtcbiA1MDM6XHRcdHMzMiByY3ZfZGVsdGE7XG4gNTA0Olx0XG4gNTA1Olx0XHRpZiAodXNlcl90aW1lb3V0KSB7XG4gNTA2Olx0XHRcdC8qIElmIHVzZXIgYXBwbGljYXRpb24gc3BlY2lmaWVkIGEgVENQX1VTRVJfVElNRU9VVCxcbiA1MDc6XHRcdFx0ICogaXQgZG9lcyBub3Qgd2FudCB3aW4gMCBwYWNrZXRzIHRvICYjMzk7cmVzZXQgdGhlIHRpbWVyJiMzOTtcbiA1MDg6XHRcdFx0ICogd2hpbGUgcmV0cmFuc21pdHMgYXJlIG5vdCBtYWtpbmcgcHJvZ3Jlc3MuXG4gNTA5Olx0XHRcdCAqL1xuIDUxMDpcdFx0XHRpZiAocnR4X2RlbHRhIFx1MDAzZSB1c2VyX3RpbWVvdXQpXG4gNTExOlx0XHRcdFx0cmV0dXJuIHRydWU7XG4gNTEyOlx0XHRcdHRpbWVvdXQgPSBtaW5fdCh1MzIsIHRpbWVvdXQsIG1zZWNzX3RvX2ppZmZpZXModXNlcl90aW1lb3V0KSk7XG4gNTEzOlx0XHR9XG4gNTE0Olx0XHQvKiBOb3RlOiB0aW1lciBpbnRlcnJ1cHQgbWlnaHQgaGF2ZSBiZWVuIGRlbGF5ZWQgYnkgYXQgbGVhc3Qgb25lIGppZmZ5LFxuIDUxNTpcdFx0ICogYW5kIHRwLVx1MDAzZXJjdl90c3RhbXAgbWlnaHQgdmVyeSB3ZWxsIGhhdmUgYmVlbiB3cml0dGVuIHJlY2VudGx5LlxuIDUxNjpcdFx0ICogcmN2X2RlbHRhIGNhbiB0aHVzIGJlIG5lZ2F0aXZlLlxuIDUxNzpcdFx0ICovXG4gNTE4Olx0XHRyY3ZfZGVsdGEgPSB0Y3BfdGltZW91dF9leHBpcmVzKHNrKSAtIHRwLVx1MDAzZXJjdl90c3RhbXA7XG4gNTE5Olx0XHRpZiAocmN2X2RlbHRhIFx1MDAzYz0gdGltZW91dClcbiA1MjA6XHRcdFx0cmV0dXJuIGZhbHNlO1xuIDUyMTpcdFxuIDUyMjpcdFx0cmV0dXJuIG1zZWNzX3RvX2ppZmZpZXMocnR4X2RlbHRhKSBcdTAwM2UgdGltZW91dDtcbiA1MjM6XHR9XG4gNTI0Olx0XG4gNTI1Olx0LyoqXG4gNTI2Olx0ICogIHRjcF9yZXRyYW5zbWl0X3RpbWVyKCkgLSBUaGUgVENQIHJldHJhbnNtaXQgdGltZW91dCBoYW5kbGVyXG4gNTI3Olx0ICogIEBzazogIFBvaW50ZXIgdG8gdGhlIGN1cnJlbnQgc29ja2V0LlxuIDUyODpcdCAqXG4gNTI5Olx0ICogIFRoaXMgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgd2hlbiB0aGUga2VybmVsIHRpbWVyIGZvciBhIFRDUCBwYWNrZXRcbiA1MzA6XHQgKiAgb2YgdGhpcyBzb2NrZXQgZXhwaXJlcy5cbiA1MzE6XHQgKlxuIDUzMjpcdCAqICBJdCBoYW5kbGVzIHJldHJhbnNtaXNzaW9uLCB0aW1lciBhZGp1c3RtZW50IGFuZCBvdGhlciBuZWNlc3NhcnkgbWVhc3VyZXMuXG4gNTMzOlx0ICpcbiA1MzQ6XHQgKiAgUmV0dXJuczogTm90aGluZyAodm9pZClcbiA1MzU6XHQgKi9cbiA1MzY6XHR2b2lkIHRjcF9yZXRyYW5zbWl0X3RpbWVyKHN0cnVjdCBzb2NrICpzaylcbiA1Mzc6XHR7XG4gNTM4Olx0XHRzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3NrKHNrKTtcbiA1Mzk6XHRcdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrKTtcbiA1NDA6XHRcdHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29jayAqaWNzayA9IGluZXRfY3NrKHNrKTtcbiA1NDE6XHRcdHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcTtcbiA1NDI6XHRcdHN0cnVjdCBza19idWZmICpza2I7XG4gNTQzOlx0XG4gNTQ0Olx0XHRyZXEgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHRwLVx1MDAzZWZhc3RvcGVuX3JzayxcbiA1NDU6XHRcdFx0XHRcdFx0bG9ja2RlcF9zb2NrX2lzX2hlbGQoc2spKTtcbiA1NDY6XHRcdGlmIChyZXEpIHtcbiA1NDc6XHRcdFx0V0FSTl9PTl9PTkNFKHNrLVx1MDAzZXNrX3N0YXRlICE9IFRDUF9TWU5fUkVDViBcdTAwMjZcdTAwMjZcbiA1NDg6XHRcdFx0XHQgICAgIHNrLVx1MDAzZXNrX3N0YXRlICE9IFRDUF9GSU5fV0FJVDEpO1xuIDU0OTpcdFx0XHR0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHNrLCByZXEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE0OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczMTkKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgVENQIEZhc3QgT3BlbiBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIFRDUCBGYXN0IE9wZW4uIFRoZSBjb2RlIHNlZW1zIHRvIGJlIGNoZWNraW5nIGZvciBgQ09ORklHX1RDUF9GQVNUT1BFTmAsIG9yIGlmIHRoYXQmIzM5O3MgdW5kZWZpbmVkLCBqdXN0IHJlbHlpbmcgb24gYENPTkZJR19JTkVUYC4gV2FpdCBhIG1pbnV0ZSwgdGhhdCBkb2VzbiYjMzk7dCBzb3VuZCByaWdodC4gSSYjMzk7bSBwcmV0dHkgc3VyZSBUQ1AgRmFzdCBPcGVuIGlzbiYjMzk7dCBhIGNvbXBpbGUtdGltZSBvcHRpb24gaW4gdGhlIHdheSB0aGlzIGNvZGUgc3VnZ2VzdHMuIEl0JiMzOTtzIGFsbW9zdCBhbHdheXMgY29tcGlsZWQgaW4gYW5kIGNvbnRyb2xsZWQsIGFzIEkgcmVjYWxsLCB2aWEgYHN5c2N0bGAuIExldCBtZSBxdWlja2x5IGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGlzLiBJIHNob3VsZCBjaGVjayBpZiBgQ09ORklHX1RDUF9GQVNUT1BFTmAgZXZlbiBleGlzdHMgaW4gdGhpcyBjb250ZXh0LiBJdCBzZWVtcyBvZGQgdGhhdCB0aGUgY29kZSB3b3VsZCBjb25kaXRpb25hbGx5IGNvbXBpbGUgYmFzZWQgb24gaXRzIHByZXNlbmNlLiBUaGlzIHdhcnJhbnRzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiB0byBhdm9pZCBhbnkgcG90ZW50aWFsbHkgZmxhd2VkIGNvbmRpdGlvbmFsIGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBUQ1BfRkFTVE9QRU4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTgwCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUgd2UgZ28uIExldCYjMzk7cyBkaWcgaW50byB0aGlzLgoKKipJbnZlc3RpZ2F0aW5nIFRDUCBGYXN0IE9wZW4gYW5kIFJlbGF0ZWQgRnVuY3Rpb25hbGl0eSoqCgpBbHJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgdG8gZXN0YWJsaXNoIGlzIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHNpdHVhdGlvbiB3aGVyZSBgQ09ORklHX1RDUF9GQVNUT1BFTmAgaXNuJiMzOTt0IGVuYWJsZWQuIFRoYXQmIzM5O3MgYSBrZXkgaW5pdGlhbCBjb25zdHJhaW50LCBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kIHRocm91Z2hvdXQgdGhpcyBpbnZlc3RpZ2F0aW9uLiBOb3csIHdoZXJlIHRvIGdvIGZyb20gdGhlcmU/IExldCYjMzk7cyBjb25zaWRlciB0aGUgcmVsZXZhbnQgcm91dGluZXMuLi4gSSB3b25kZXIgYWJvdXQgYHJlcXNrX3RpbWVyX2hhbmRsZXJgLiBUaGF0JiMzOTtzIG9mdGVuIGEgY3J1Y2lhbCBwaWVjZSBpbiB0aGUgY29ubmVjdGlvbiBzZXR1cCBsaWZlY3ljbGUsIHNvIGl0JiMzOTtzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gQW5kIGFzIGEgc3RhcnRpbmcgcG9pbnQsIGl0IGxvb2tzIGxpa2UgdGhhdCBjb2RlIHJlc2lkZXMgaW4gYG5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmNgLiBMZXQmIzM5O3MgZm9jdXMgdGhlcmUuIFRoYXQgZGlyZWN0b3J5IGlzIGEgcHJldHR5IGdvb2QgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIGNvbm5lY3Rpb24tc3BlY2lmaWMgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVxc2tfdGltZXJfaGFuZGxlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jPTEwMTU9dm9pZCBpbmV0X2Nza19yZXFza19xdWV1ZV9kcm9wX2FuZF9wdXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMDIwLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxMDIxOnN0YXRpYyB2b2lkIHJlcXNrX3RpbWVyX2hhbmRsZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTEwMjIte1xuLS1cbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTA0Ny1cdFx0cmVmY291bnRfc2V0KFx1MDAyNm5yZXEtXHUwMDNlcnNrX3JlZmNudCwgMiAmIzQzOyAxKTtcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTA0ODpcdFx0dGltZXJfc2V0dXAoXHUwMDI2bnJlcS1cdTAwM2Vyc2tfdGltZXIsIHJlcXNrX3RpbWVyX2hhbmRsZXIsIFRJTUVSX1BJTk5FRCk7XG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTEwNDktXHRcdHJlcXNrX3F1ZXVlX21pZ3JhdGVkKFx1MDAyNmluZXRfY3NrKG5zayktXHUwMDNlaWNza19hY2NlcHRfcXVldWUsIHJlcSk7XG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz0xMTQyPXN0YXRpYyBib29sIHJlcXNrX3F1ZXVlX2hhc2hfcmVxKHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcbi0tXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTExNTAtXHRyZXEtXHUwMDNldGltZW91dCA9IHRjcF90aW1lb3V0X2luaXQoKHN0cnVjdCBzb2NrICopcmVxKTtcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTE1MTpcdHRpbWVyX3NldHVwKFx1MDAyNnJlcS1cdTAwM2Vyc2tfdGltZXIsIHJlcXNrX3RpbWVyX2hhbmRsZXIsIFRJTUVSX1BJTk5FRCk7XG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTExNTItXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWlncmF0ZV9yZXVzZXBvcnQuYz01ND1zdGF0aWMgc3RydWN0IG1pZ3JhdGVfcmV1c2Vwb3J0X3Rlc3RfY2FzZSB7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWlncmF0ZV9yZXVzZXBvcnQuYy04My1cdHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21pZ3JhdGVfcmV1c2Vwb3J0LmM6ODQ6XHRcdC5uYW1lID0gXCYjMzQ7SVB2NCBUQ1BfTkVXX1NZTl9SRUNWIHJlcXNrX3RpbWVyX2hhbmRsZXJcJiMzNDssXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTg1LVx0XHQuZmFtaWx5ID0gQUZfSU5FVCxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTExNS1cdHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21pZ3JhdGVfcmV1c2Vwb3J0LmM6MTE2Olx0XHQubmFtZSA9IFwmIzM0O0lQdjYgVENQX05FV19TWU5fUkVDViByZXFza190aW1lcl9oYW5kbGVyXCYjMzQ7LFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWlncmF0ZV9yZXVzZXBvcnQuYy0xMTctXHRcdC5mYW1pbHkgPSBBRl9JTkVUNixcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jPTQ5MT1zdGF0aWMgdm9pZCBydW5fdGVzdChzdHJ1Y3QgbWlncmF0ZV9yZXVzZXBvcnRfdGVzdF9jYXNlICp0ZXN0X2Nhc2UsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWlncmF0ZV9yZXVzZXBvcnQuYy01NDctXHRcdC8qIFdhaXQgZm9yIFNZTiYjNDM7QUNLIHRpbWVycyB0byBleHBpcmUgc28gdGhhdFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWlncmF0ZV9yZXVzZXBvcnQuYzo1NDg6XHRcdCAqIHJlcXNrX3RpbWVyX2hhbmRsZXIoKSBtaWdyYXRlcyBUQ1BfTkVXX1NZTl9SRUNWIHJlcXVlc3RzLlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWlncmF0ZV9yZXVzZXBvcnQuYy01NDktXHRcdCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjUyCgkJCQkJCQlvdXRwdXQ6IDEyMgoJCQkJCQkJdGhvdWdodHM6IDM4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgU1lOLUFDSyBSZXRyYW5zbWl0IFRpbWVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIHNlZSwgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBjcml0aWNhbCBUQ1AgZnVuY3Rpb25zOiBgcmVxc2tfdGltZXJfaGFuZGxlcmAsIHdoaWNoIGhhbmRsZXMgdGhlIFNZTi1BQ0sgcmV0cmFuc21pdHMgZm9yIHN0YW5kYXJkIFRDUCBjb25uZWN0aW9ucywgYW5kIGB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyYCBmb3IgVENQIEZhc3QgT3Blbi4gQm90aCBhcmUgYWJzb2x1dGVseSBjb3JlIHRvIHRoZSBUQ1AgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IHByb2Nlc3MuCgpUaGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZ3VyYXRpb25zIGhlcmUgYXJlIHN0cmFpZ2h0Zm9yd2FyZDogYElORVRgIGlzIGEgZ2l2ZW4sIG9mIGNvdXJzZS4gU2luY2UgdGhpcyBpbXBhY3RzIElQdjYgVENQIGFzIHdlbGwsIGBJUFY2YCBpcyBhbHNvIGFwcGxpY2FibGUuCgpNeSBwcmltYXJ5IHN5bWJvbHMgb2YgaW50ZXJlc3QgYXJlIGRlZmluaXRlbHkgYHJlcXNrX3RpbWVyX2hhbmRsZXJgIGFuZCBgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcmAuIFdhaXQsIGhhbmcgb24uLi4gYHRjcF9yZXFza190aW1lb3V0X3NrYCBpcyBhbiBpbmxpbmUgZnVuY3Rpb24gZGVmaW5lZCBpbiBgaW5jbHVkZS9uZXQvdGNwLmhgLiBUaGF0IG1lYW5zIGl0IHdvbiYjMzk7dCBzaG93IHVwIGFzIGEgc3RhbmRhbG9uZSBzeW1ib2wgaW4gdGhlIGtlcm5lbCBpbWFnZSwgc28gaXQmIzM5O3Mgbm90IGEgZGlyZWN0IGZvY3VzIHBvaW50LiBJJiMzOTt2ZSBjb25maXJtZWQgdGhpcyB3aXRoIGEgcXVpY2sgY2hlY2s6IHRoZSBoZWFkZXIgc2hvd3MgaXQgYXMgaW5saW5lLgoKU28sIHRvIGJlIHByZWNpc2UsIHRoZSBrZXkgc3ltYm9scyBhcmU6CiogICBgcmVxc2tfdGltZXJfaGFuZGxlcmAKKiAgIGB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyYAoKVGhlIHBhdGNoJiMzOTtzIGltcGFjdCBpcyBwcmV0dHkgY2xlYXI6IGl0JiMzOTtzIGZpeGluZyBhIHBvdGVudGlhbCBzaGlmdCBvdmVyZmxvdyBpbiB0aGUgU1lOLUFDSyB0aW1lb3V0IGNhbGN1bGF0aW9uIGFuZCBlbmZvcmNpbmcgYSBtYXhpbXVtIG9mIDYzIFNZTi1BQ0sgcmV0cmllcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRlZXAgd2l0aGluIHRoZSBUQ1Agc3RhY2suIEl0IGRpcmVjdGx5IGFmZmVjdHMgaG93IGNvbm5lY3Rpb25zIGFyZSBlc3RhYmxpc2hlZCBhbmQgaG93IHRpbWVvdXRzIGFyZSBoYW5kbGVkLiBUaGlzIHNjcmVhbXMgJiMzNDtmdXp6aW5nIHRhcmdldCYjMzQ7IOKAkyB0aGUgU1lOLUFDSyB0aW1lciBoYW5kbGVycyBhcmUgdGhlIHBsYWNlIHRvIGZvY3VzLiBXZSBuZWVkIHRvIGV4cGxvcmUgYm90aCByZWd1bGFyIGFuZCBGYXN0IE9wZW4gY29ubmVjdGlvbiBzY2VuYXJpb3MuCgpHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2UsIGFuZCBsb29raW5nIGF0IHRoZSBmdW5kYW1lbnRhbCBUQ1AgYXNwZWN0cywgSSB0aGluayB0aGUgYElORVRgIGNvbmZpZyBpcyBhZGVxdWF0ZS4gVGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgb2J2aW91cyBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBJIGNhbiBzZWUsIGp1c3Qgc3RhbmRhcmQgVENQIG9wZXJhdGlvbi4KCkkmIzM5O20gY29uZmlkZW50IGluIHRoaXMgYXNzZXNzbWVudC4gTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZXFza190aW1lcl9oYW5kbGVyJiMzNDssCiAgICAmIzM0O3RjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgc2hpZnQgb3ZlcmZsb3cgaW4gVENQIFNZTi1BQ0sgdGltZW91dCBjYWxjdWxhdGlvbiBhbmQgY2FwcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgU1lOLUFDSyByZXRyaWVzIHRvIDYzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgVENQIHN0YWNrIHRoYXQgYWZmZWN0cyBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgYW5kIHRpbWVvdXQgaGFuZGxpbmcuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBTWU4tQUNLIHRpbWVyIGhhbmRsZXJzIGZvciBib3RoIHJlZ3VsYXIgYW5kIEZhc3QgT3BlbiBjb25uZWN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JlcXNrX3RpbWVyX2hhbmRsZXImIzM0OywKICAgICYjMzQ7dGNwX2Zhc3RvcGVuX3N5bmFja190aW1lciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBzaGlmdCBvdmVyZmxvdyBpbiBUQ1AgU1lOLUFDSyB0aW1lb3V0IGNhbGN1bGF0aW9uIGFuZCBjYXBzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBTWU4tQUNLIHJldHJpZXMgdG8gNjMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBUQ1Agc3RhY2sgdGhhdCBhZmZlY3RzIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgdGltZW91dCBoYW5kbGluZy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIFNZTi1BQ0sgdGltZXIgaGFuZGxlcnMgZm9yIGJvdGggcmVndWxhciBhbmQgRmFzdCBPcGVuIGNvbm5lY3Rpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6MzA6MTkuNDMyMDIzOTY2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTExODEwOTQzMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJlcXNrX3RpbWVyX2hhbmRsZXJcIixcbiAgICBcInRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBzaGlmdCBvdmVyZmxvdyBpbiBUQ1AgU1lOLUFDSyB0aW1lb3V0IGNhbGN1bGF0aW9uIGFuZCBjYXBzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBTWU4tQUNLIHJldHJpZXMgdG8gNjMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBUQ1Agc3RhY2sgdGhhdCBhZmZlY3RzIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgdGltZW91dCBoYW5kbGluZy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIFNZTi1BQ0sgdGltZXIgaGFuZGxlcnMgZm9yIGJvdGggcmVndWxhciBhbmQgRmFzdCBPcGVuIGNvbm5lY3Rpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDozMDoxOS40MzIwMzI4NTdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MTQ3NTcyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU1YjQ4MjhkZTQ2MWQ0YzA5Mjk3ZjIyMWJmOGRjNjFhY2EzNTM2NjVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMiAxNDozMDoxNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC90Y3AuaCBiL2luY2x1ZGUvbmV0L3RjcC5oXFxuaW5kZXggNmQzNzZlYTRkMWMwMWQuLmVlNzg0MzZiODk2NDVhIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L3RjcC5oXFxuKysrIGIvaW5jbHVkZS9uZXQvdGNwLmhcXG5AQCAtMTgzLDYgKzE4Myw3IEBAIHN0YXRpY19hc3NlcnQoKDEgXFx1MDAzY1xcdTAwM2MgQVRPX0JJVFMpIFxcdTAwM2UgVENQX0RFTEFDS19NQVgpO1xcbiAjZGVmaW5lIE1BWF9UQ1BfS0VFUElOVFZMXFx0MzI3NjdcXG4gI2RlZmluZSBNQVhfVENQX0tFRVBDTlRcXHRcXHQxMjdcXG4gI2RlZmluZSBNQVhfVENQX1NZTkNOVFxcdFxcdDEyN1xcbisjZGVmaW5lIE1BWF9UQ1BfU1lOQUNLX1JFVFJJRVNcXHQ2M1xcbiBcXG4gLyogRW5zdXJlIHRoYXQgVENQIFBBV1MgY2hlY2tzIGFyZSByZWxheGVkIGFmdGVyIH4yMTQ3IHNlY29uZHNcXG4gICogdG8gYXZvaWQgb3ZlcmZsb3dzLiBUaGlzIGFzc3VtZXMgYSBjbG9jayBzbWFsbGVyIHRoYW4gMSBNaHouXFxuQEAgLTg4MiwxMiArODgzLDIyIEBAIHN0YXRpYyBpbmxpbmUgdTMyIF9fdGNwX3NldF9ydG8oY29uc3Qgc3RydWN0IHRjcF9zb2NrICp0cClcXG4gXFx0cmV0dXJuIHVzZWNzX3RvX2ppZmZpZXMoKHRwLVxcdTAwM2VzcnR0X3VzIFxcdTAwM2VcXHUwMDNlIDMpICsgdHAtXFx1MDAzZXJ0dHZhcl91cyk7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dChzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dF9zayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuIHtcXG4tXFx0dTY0IHRpbWVvdXQgPSAodTY0KXJlcS1cXHUwMDNldGltZW91dCBcXHUwMDNjXFx1MDAzYyByZXEtXFx1MDAzZW51bV90aW1lb3V0O1xcbitcXHR1MzIgcnRvX21heCA9IHRjcF9ydG9fbWF4KHNrKTtcXG4rXFx0dTY0IHRpbWVvdXQgPSByZXEtXFx1MDAzZXRpbWVvdXQ7XFxuK1xcbitcXHRpZiAocmVxLVxcdTAwM2VudW1fdGltZW91dCBcXHUwMDNlPSBCSVRTX1BFUl9UWVBFKHU2NCkgfHxcXG4rXFx0ICAgIHRpbWVvdXQgXFx1MDAzZSBVNjRfTUFYIFxcdTAwM2VcXHUwMDNlIHJlcS1cXHUwMDNlbnVtX3RpbWVvdXQpXFxuK1xcdFxcdHJldHVybiBydG9fbWF4O1xcbitcXG4rXFx0cmV0dXJuICh1bnNpZ25lZCBsb25nKW1pbl90KHU2NCwgdGltZW91dCBcXHUwMDNjXFx1MDAzYyByZXEtXFx1MDAzZW51bV90aW1lb3V0LCBydG9fbWF4KTtcXG4rfVxcbiBcXG4tXFx0cmV0dXJuICh1bnNpZ25lZCBsb25nKW1pbl90KHU2NCwgdGltZW91dCxcXG4tXFx0XFx0XFx0XFx0ICAgIHRjcF9ydG9fbWF4KHJlcS1cXHUwMDNlcnNrX2xpc3RlbmVyKSk7XFxuK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dChzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuK3tcXG4rXFx0cmV0dXJuIHRjcF9yZXFza190aW1lb3V0X3NrKHJlcS1cXHUwMDNlcnNrX2xpc3RlbmVyLCByZXEpO1xcbiB9XFxuIFxcbiB1MzIgdGNwX2RlbGFja19tYXgoY29uc3Qgc3RydWN0IHNvY2sgKnNrKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYyBiL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmNcXG5pbmRleCA1NjkwMmJiYTU0ODM4Yi4uYjc0MjEyYmFlM2RkMjUgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suY1xcbisrKyBiL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmNcXG5AQCAtMTA1Niw2ICsxMDU2LDggQEAgc3RhdGljIHZvaWQgcmVxc2tfdGltZXJfaGFuZGxlcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4gXFx0bmV0ID0gc29ja19uZXQoc2tfbGlzdGVuZXIpO1xcbiBcXHRtYXhfc3luX2Fja19yZXRyaWVzID0gUkVBRF9PTkNFKGljc2stXFx1MDAzZWljc2tfc3luX3JldHJpZXMpID8gOlxcbiBcXHRcXHRSRUFEX09OQ0UobmV0LVxcdTAwM2VpcHY0LnN5c2N0bF90Y3Bfc3luYWNrX3JldHJpZXMpO1xcbitcXHRtYXhfc3luX2Fja19yZXRyaWVzID0gbWluX3QoaW50LCBtYXhfc3luX2Fja19yZXRyaWVzLFxcbitcXHRcXHRcXHRcXHQgICAgTUFYX1RDUF9TWU5BQ0tfUkVUUklFUyk7XFxuIFxcdC8qIE5vcm1hbGx5IGFsbCB0aGUgb3BlbnJlcXMgYXJlIHlvdW5nIGFuZCBiZWNvbWUgbWF0dXJlXFxuIFxcdCAqIChpLmUuIGNvbnZlcnRlZCB0byBlc3RhYmxpc2hlZCBzb2NrZXQpIGZvciBmaXJzdCB0aW1lb3V0LlxcbiBcXHQgKiBJZiBzeW5hY2sgd2FzIG5vdCBhY2tub3dsZWRnZWQgZm9yIDEgc2Vjb25kLCBpdCBtZWFuc1xcbkBAIC0xMDg2LDcgKzEwODgsOSBAQCBzdGF0aWMgdm9pZCByZXFza190aW1lcl9oYW5kbGVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuLVxcdHN5bl9hY2tfcmVjYWxjKHJlcSwgbWF4X3N5bl9hY2tfcmV0cmllcywgUkVBRF9PTkNFKHF1ZXVlLVxcdTAwM2Vyc2txX2RlZmVyX2FjY2VwdCksXFxuK1xcdHN5bl9hY2tfcmVjYWxjKHJlcSwgbWF4X3N5bl9hY2tfcmV0cmllcyxcXG4rXFx0XFx0ICAgICAgIG1pbl90KHU4LCBSRUFEX09OQ0UocXVldWUtXFx1MDAzZXJza3FfZGVmZXJfYWNjZXB0KSxcXG4rXFx0XFx0XFx0ICAgICBNQVhfVENQX1NZTkFDS19SRVRSSUVTKSxcXG4gXFx0XFx0ICAgICAgIFxcdTAwMjZleHBpcmUsIFxcdTAwMjZyZXNlbmQpO1xcbiBcXHR0Y3Bfc3luX2Fja190aW1lb3V0KHJlcSk7XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYyBiL25ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jXFxuaW5kZXggY2ExMTgwZGJhMWRlYTkuLmY5ZDIzM2I5OGJiYzZjIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jXFxuKysrIGIvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmNcXG5AQCAtMzUsNiArMzUsNyBAQCBzdGF0aWMgaW50IGlwX3R0bF9taW4gPSAxO1xcbiBzdGF0aWMgaW50IGlwX3R0bF9tYXggPSAyNTU7XFxuIHN0YXRpYyBpbnQgdGNwX3N5bl9yZXRyaWVzX21pbiA9IDE7XFxuIHN0YXRpYyBpbnQgdGNwX3N5bl9yZXRyaWVzX21heCA9IE1BWF9UQ1BfU1lOQ05UO1xcbitzdGF0aWMgaW50IHRjcF9zeW5hY2tfcmV0cmllc19tYXggPSBNQVhfVENQX1NZTkFDS19SRVRSSUVTO1xcbiBzdGF0aWMgaW50IHRjcF9zeW5fbGluZWFyX3RpbWVvdXRzX21heCA9IE1BWF9UQ1BfU1lOQ05UO1xcbiBzdGF0aWMgdW5zaWduZWQgbG9uZyBpcF9waW5nX2dyb3VwX3JhbmdlX21pbltdID0geyAwLCAwIH07XFxuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGlwX3BpbmdfZ3JvdXBfcmFuZ2VfbWF4W10gPSB7IEdJRF9UX01BWCwgR0lEX1RfTUFYIH07XFxuQEAgLTEwMzQsNiArMTAzNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIGlwdjRfbmV0X3RhYmxlW10gPSB7XFxuIFxcdFxcdC5tYXhsZW5cXHRcXHQ9IHNpemVvZih1OCksXFxuIFxcdFxcdC5tb2RlXFx0XFx0PSAwNjQ0LFxcbiBcXHRcXHQucHJvY19oYW5kbGVyXFx0PSBwcm9jX2RvdTh2ZWNfbWlubWF4LFxcbitcXHRcXHQuZXh0cmEyXFx0XFx0PSBcXHUwMDI2dGNwX3N5bmFja19yZXRyaWVzX21heFxcbiBcXHR9LFxcbiAjaWZkZWYgQ09ORklHX1NZTl9DT09LSUVTXFxuIFxcdHtcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX3RpbWVyLmMgYi9uZXQvaXB2NC90Y3BfdGltZXIuY1xcbmluZGV4IGJmMTcxYjVlMWViMzA2Li5iYmVkZjJiOWUxYmNlYSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC90Y3BfdGltZXIuY1xcbisrKyBiL25ldC9pcHY0L3RjcF90aW1lci5jXFxuQEAgLTQ2Nyw2ICs0NjcsNyBAQCBzdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxcbiBcXHQgKi9cXG4gXFx0bWF4X3JldHJpZXMgPSBSRUFEX09OQ0UoaWNzay1cXHUwMDNlaWNza19zeW5fcmV0cmllcykgPyA6XFxuIFxcdFxcdFJFQURfT05DRShzb2NrX25ldChzayktXFx1MDAzZWlwdjQuc3lzY3RsX3RjcF9zeW5hY2tfcmV0cmllcykgKyAxO1xcbitcXHRtYXhfcmV0cmllcyA9IG1pbl90KGludCwgbWF4X3JldHJpZXMsIE1BWF9UQ1BfU1lOQUNLX1JFVFJJRVMpO1xcbiBcXG4gXFx0aWYgKHJlcS1cXHUwMDNlbnVtX3RpbWVvdXQgXFx1MDAzZT0gbWF4X3JldHJpZXMpIHtcXG4gXFx0XFx0dGNwX3dyaXRlX2Vycihzayk7XFxuQEAgLTQ4OCw3ICs0ODksNyBAQCBzdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxcbiBcXHRpZiAoIXRwLVxcdTAwM2VyZXRyYW5zX3N0YW1wKVxcbiBcXHRcXHR0cC1cXHUwMDNlcmV0cmFuc19zdGFtcCA9IHRjcF90aW1lX3N0YW1wX3RzKHRwKTtcXG4gXFx0dGNwX3Jlc2V0X3htaXRfdGltZXIoc2ssIElDU0tfVElNRV9SRVRSQU5TLFxcbi1cXHRcXHRcXHQgIHJlcS1cXHUwMDNldGltZW91dCBcXHUwMDNjXFx1MDAzYyByZXEtXFx1MDAzZW51bV90aW1lb3V0LCBmYWxzZSk7XFxuK1xcdFxcdFxcdCAgICAgdGNwX3JlcXNrX3RpbWVvdXRfc2soc2ssIHJlcSksIGZhbHNlKTtcXG4gfVxcbiBcXG4gc3RhdGljIGJvb2wgdGNwX3J0eF9wcm9iZTBfdGltZWRfb3V0KGNvbnN0IHN0cnVjdCBzb2NrICpzayxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6MzA6MTkuOTk2OTAxMzc2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDYxNjIwMzMzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmVxc2tfdGltZXJfaGFuZGxlclwiLFxuICAgIFwidGNwX2Zhc3RvcGVuX3N5bmFja190aW1lclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHNoaWZ0IG92ZXJmbG93IGluIFRDUCBTWU4tQUNLIHRpbWVvdXQgY2FsY3VsYXRpb24gYW5kIGNhcHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIFNZTi1BQ0sgcmV0cmllcyB0byA2My4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFRDUCBzdGFjayB0aGF0IGFmZmVjdHMgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IGFuZCB0aW1lb3V0IGhhbmRsaW5nLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgU1lOLUFDSyB0aW1lciBoYW5kbGVycyBmb3IgYm90aCByZWd1bGFyIGFuZCBGYXN0IE9wZW4gY29ubmVjdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTViNDgyOGRlNDYxZDRjMDkyOTdmMjIxYmY4ZGM2MWFjYTM1MzY2NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIgMTQ6MzA6MTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC90Y3AuaCBiL2luY2x1ZGUvbmV0L3RjcC5oXG5pbmRleCA2ZDM3NmVhNGQxYzAxZC4uZWU3ODQzNmI4OTY0NWEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC90Y3AuaFxuKysrIGIvaW5jbHVkZS9uZXQvdGNwLmhcbkBAIC0xODMsNiArMTgzLDcgQEAgc3RhdGljX2Fzc2VydCgoMSBcdTAwM2NcdTAwM2MgQVRPX0JJVFMpIFx1MDAzZSBUQ1BfREVMQUNLX01BWCk7XG4gI2RlZmluZSBNQVhfVENQX0tFRVBJTlRWTFx0MzI3NjdcbiAjZGVmaW5lIE1BWF9UQ1BfS0VFUENOVFx0XHQxMjdcbiAjZGVmaW5lIE1BWF9UQ1BfU1lOQ05UXHRcdDEyN1xuKyNkZWZpbmUgTUFYX1RDUF9TWU5BQ0tfUkVUUklFU1x0NjNcbiBcbiAvKiBFbnN1cmUgdGhhdCBUQ1AgUEFXUyBjaGVja3MgYXJlIHJlbGF4ZWQgYWZ0ZXIgfjIxNDcgc2Vjb25kc1xuICAqIHRvIGF2b2lkIG92ZXJmbG93cy4gVGhpcyBhc3N1bWVzIGEgY2xvY2sgc21hbGxlciB0aGFuIDEgTWh6LlxuQEAgLTg4MiwxMiArODgzLDIyIEBAIHN0YXRpYyBpbmxpbmUgdTMyIF9fdGNwX3NldF9ydG8oY29uc3Qgc3RydWN0IHRjcF9zb2NrICp0cClcbiBcdHJldHVybiB1c2Vjc190b19qaWZmaWVzKCh0cC1cdTAwM2VzcnR0X3VzIFx1MDAzZVx1MDAzZSAzKSArIHRwLVx1MDAzZXJ0dHZhcl91cyk7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dChzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4rc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHRjcF9yZXFza190aW1lb3V0X3NrKGNvbnN0IHN0cnVjdCBzb2NrICpzayxcbitcdFx0XHRcdFx0XHQgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuIHtcbi1cdHU2NCB0aW1lb3V0ID0gKHU2NClyZXEtXHUwMDNldGltZW91dCBcdTAwM2NcdTAwM2MgcmVxLVx1MDAzZW51bV90aW1lb3V0O1xuK1x0dTMyIHJ0b19tYXggPSB0Y3BfcnRvX21heChzayk7XG4rXHR1NjQgdGltZW91dCA9IHJlcS1cdTAwM2V0aW1lb3V0O1xuK1xuK1x0aWYgKHJlcS1cdTAwM2VudW1fdGltZW91dCBcdTAwM2U9IEJJVFNfUEVSX1RZUEUodTY0KSB8fFxuK1x0ICAgIHRpbWVvdXQgXHUwMDNlIFU2NF9NQVggXHUwMDNlXHUwMDNlIHJlcS1cdTAwM2VudW1fdGltZW91dClcbitcdFx0cmV0dXJuIHJ0b19tYXg7XG4rXG4rXHRyZXR1cm4gKHVuc2lnbmVkIGxvbmcpbWluX3QodTY0LCB0aW1lb3V0IFx1MDAzY1x1MDAzYyByZXEtXHUwMDNlbnVtX3RpbWVvdXQsIHJ0b19tYXgpO1xuK31cbiBcbi1cdHJldHVybiAodW5zaWduZWQgbG9uZyltaW5fdCh1NjQsIHRpbWVvdXQsXG4tXHRcdFx0XHQgICAgdGNwX3J0b19tYXgocmVxLVx1MDAzZXJza19saXN0ZW5lcikpO1xuK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dChzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4re1xuK1x0cmV0dXJuIHRjcF9yZXFza190aW1lb3V0X3NrKHJlcS1cdTAwM2Vyc2tfbGlzdGVuZXIsIHJlcSk7XG4gfVxuIFxuIHUzMiB0Y3BfZGVsYWNrX21heChjb25zdCBzdHJ1Y3Qgc29jayAqc2spO1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMgYi9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jXG5pbmRleCA1NjkwMmJiYTU0ODM4Yi4uYjc0MjEyYmFlM2RkMjUgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jXG4rKysgYi9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jXG5AQCAtMTA1Niw2ICsxMDU2LDggQEAgc3RhdGljIHZvaWQgcmVxc2tfdGltZXJfaGFuZGxlcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbiBcdG5ldCA9IHNvY2tfbmV0KHNrX2xpc3RlbmVyKTtcbiBcdG1heF9zeW5fYWNrX3JldHJpZXMgPSBSRUFEX09OQ0UoaWNzay1cdTAwM2VpY3NrX3N5bl9yZXRyaWVzKSA/IDpcbiBcdFx0UkVBRF9PTkNFKG5ldC1cdTAwM2VpcHY0LnN5c2N0bF90Y3Bfc3luYWNrX3JldHJpZXMpO1xuK1x0bWF4X3N5bl9hY2tfcmV0cmllcyA9IG1pbl90KGludCwgbWF4X3N5bl9hY2tfcmV0cmllcyxcbitcdFx0XHRcdCAgICBNQVhfVENQX1NZTkFDS19SRVRSSUVTKTtcbiBcdC8qIE5vcm1hbGx5IGFsbCB0aGUgb3BlbnJlcXMgYXJlIHlvdW5nIGFuZCBiZWNvbWUgbWF0dXJlXG4gXHQgKiAoaS5lLiBjb252ZXJ0ZWQgdG8gZXN0YWJsaXNoZWQgc29ja2V0KSBmb3IgZmlyc3QgdGltZW91dC5cbiBcdCAqIElmIHN5bmFjayB3YXMgbm90IGFja25vd2xlZGdlZCBmb3IgMSBzZWNvbmQsIGl0IG1lYW5zXG5AQCAtMTA4Niw3ICsxMDg4LDkgQEAgc3RhdGljIHZvaWQgcmVxc2tfdGltZXJfaGFuZGxlcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbiBcdFx0fVxuIFx0fVxuIFxuLVx0c3luX2Fja19yZWNhbGMocmVxLCBtYXhfc3luX2Fja19yZXRyaWVzLCBSRUFEX09OQ0UocXVldWUtXHUwMDNlcnNrcV9kZWZlcl9hY2NlcHQpLFxuK1x0c3luX2Fja19yZWNhbGMocmVxLCBtYXhfc3luX2Fja19yZXRyaWVzLFxuK1x0XHQgICAgICAgbWluX3QodTgsIFJFQURfT05DRShxdWV1ZS1cdTAwM2Vyc2txX2RlZmVyX2FjY2VwdCksXG4rXHRcdFx0ICAgICBNQVhfVENQX1NZTkFDS19SRVRSSUVTKSxcbiBcdFx0ICAgICAgIFx1MDAyNmV4cGlyZSwgXHUwMDI2cmVzZW5kKTtcbiBcdHRjcF9zeW5fYWNrX3RpbWVvdXQocmVxKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYyBiL25ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jXG5pbmRleCBjYTExODBkYmExZGVhOS4uZjlkMjMzYjk4YmJjNmMgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuY1xuKysrIGIvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmNcbkBAIC0zNSw2ICszNSw3IEBAIHN0YXRpYyBpbnQgaXBfdHRsX21pbiA9IDE7XG4gc3RhdGljIGludCBpcF90dGxfbWF4ID0gMjU1O1xuIHN0YXRpYyBpbnQgdGNwX3N5bl9yZXRyaWVzX21pbiA9IDE7XG4gc3RhdGljIGludCB0Y3Bfc3luX3JldHJpZXNfbWF4ID0gTUFYX1RDUF9TWU5DTlQ7XG4rc3RhdGljIGludCB0Y3Bfc3luYWNrX3JldHJpZXNfbWF4ID0gTUFYX1RDUF9TWU5BQ0tfUkVUUklFUztcbiBzdGF0aWMgaW50IHRjcF9zeW5fbGluZWFyX3RpbWVvdXRzX21heCA9IE1BWF9UQ1BfU1lOQ05UO1xuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGlwX3BpbmdfZ3JvdXBfcmFuZ2VfbWluW10gPSB7IDAsIDAgfTtcbiBzdGF0aWMgdW5zaWduZWQgbG9uZyBpcF9waW5nX2dyb3VwX3JhbmdlX21heFtdID0geyBHSURfVF9NQVgsIEdJRF9UX01BWCB9O1xuQEAgLTEwMzQsNiArMTAzNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIGlwdjRfbmV0X3RhYmxlW10gPSB7XG4gXHRcdC5tYXhsZW5cdFx0PSBzaXplb2YodTgpLFxuIFx0XHQubW9kZVx0XHQ9IDA2NDQsXG4gXHRcdC5wcm9jX2hhbmRsZXJcdD0gcHJvY19kb3U4dmVjX21pbm1heCxcbitcdFx0LmV4dHJhMlx0XHQ9IFx1MDAyNnRjcF9zeW5hY2tfcmV0cmllc19tYXhcbiBcdH0sXG4gI2lmZGVmIENPTkZJR19TWU5fQ09PS0lFU1xuIFx0e1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF90aW1lci5jIGIvbmV0L2lwdjQvdGNwX3RpbWVyLmNcbmluZGV4IGJmMTcxYjVlMWViMzA2Li5iYmVkZjJiOWUxYmNlYSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF90aW1lci5jXG4rKysgYi9uZXQvaXB2NC90Y3BfdGltZXIuY1xuQEAgLTQ2Nyw2ICs0NjcsNyBAQCBzdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuIFx0ICovXG4gXHRtYXhfcmV0cmllcyA9IFJFQURfT05DRShpY3NrLVx1MDAzZWljc2tfc3luX3JldHJpZXMpID8gOlxuIFx0XHRSRUFEX09OQ0Uoc29ja19uZXQoc2spLVx1MDAzZWlwdjQuc3lzY3RsX3RjcF9zeW5hY2tfcmV0cmllcykgKyAxO1xuK1x0bWF4X3JldHJpZXMgPSBtaW5fdChpbnQsIG1heF9yZXRyaWVzLCBNQVhfVENQX1NZTkFDS19SRVRSSUVTKTtcbiBcbiBcdGlmIChyZXEtXHUwMDNlbnVtX3RpbWVvdXQgXHUwMDNlPSBtYXhfcmV0cmllcykge1xuIFx0XHR0Y3Bfd3JpdGVfZXJyKHNrKTtcbkBAIC00ODgsNyArNDg5LDcgQEAgc3RhdGljIHZvaWQgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcbiBcdGlmICghdHAtXHUwMDNlcmV0cmFuc19zdGFtcClcbiBcdFx0dHAtXHUwMDNlcmV0cmFuc19zdGFtcCA9IHRjcF90aW1lX3N0YW1wX3RzKHRwKTtcbiBcdHRjcF9yZXNldF94bWl0X3RpbWVyKHNrLCBJQ1NLX1RJTUVfUkVUUkFOUyxcbi1cdFx0XHQgIHJlcS1cdTAwM2V0aW1lb3V0IFx1MDAzY1x1MDAzYyByZXEtXHUwMDNlbnVtX3RpbWVvdXQsIGZhbHNlKTtcbitcdFx0XHQgICAgIHRjcF9yZXFza190aW1lb3V0X3NrKHNrLCByZXEpLCBmYWxzZSk7XG4gfVxuIFxuIHN0YXRpYyBib29sIHRjcF9ydHhfcHJvYmUwX3RpbWVkX291dChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDozMDoxOS45OTY5MDMzMzZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NjE2ODg0OTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVENQIFNZTi1BQ0sgUmV0cnkgTG9naWMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBpdCdzIGFkZHJlc3Npbmcgc29tZSBjcml0aWNhbCByb2J1c3RuZXNzIGlzc3VlcyBpbiB0aGUgVENQIFNZTi1BQ0sgcmV0cnkgbWVjaGFuaXNtLiBXZSdyZSB0YWxraW5nIGFib3V0IGNoYW5nZXMgdG91Y2hpbmcgZm91ciBrZXkgZmlsZXM6IGBpbmNsdWRlL25ldC90Y3AuaGAsIGBuZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jYCwgYG5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jYCwgYW5kIGBuZXQvaXB2NC90Y3BfdGltZXIuY2AuIFRoaXMgdGVsbHMgbWUgaXQncyBub3QgYSB0cml2aWFsIG1vZGlmaWNhdGlvbiwgYnV0IHJhdGhlciBhIGZvY3VzZWQgcmVmaW5lbWVudCBvZiB0aGUgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IHByb2Nlc3MuXG5cbkZpcnN0LCBpbiBgaW5jbHVkZS9uZXQvdGNwLmhgLCB3ZSBzZWUgdGhlIGludHJvZHVjdGlvbiBvZiBgTUFYX1RDUF9TWU5BQ0tfUkVUUklFU2AsIG5vdyBkZWZpbmVkIGFzIDYzLCB3aGljaCBpcyBpbXBvcnRhbnQuIEFsc28sIHRoZSBgdGNwX3JlcXNrX3RpbWVvdXRgIGZ1bmN0aW9uIGlzIG1vZGlmaWVkIHRvIHVzZSBgdGNwX3JlcXNrX3RpbWVvdXRfc2tgLCB3aGljaCBoYXMgYSBjcnVjaWFsIG92ZXJmbG93IGNoZWNrLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgZXhwbGljaXRseSBndWFyZGluZyBhZ2FpbnN0IHNoaWZ0IG92ZXJmbG93cywgd2hpY2ggaXMgc21hcnQuIElmIHRoZSByZXRyaWVzIGdvIHRvbyBoaWdoIGFuZCB0aW1lb3V0IHNoaWZ0cyB0b28gbWFueSB0aW1lcywgd2UgY2FuIG92ZXJmbG93IGEgdTY0IHdoaWNoIGNvdWxkIGNhdXNlIGlzc3Vlcy5cblxuTW92aW5nIHRvIGBuZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jYCwgdGhlIGByZXFza190aW1lcl9oYW5kbGVyYCBpcyBiZWluZyB1cGRhdGVkIHRvIGNhcCBgbWF4X3N5bl9hY2tfcmV0cmllc2AgYXQgYE1BWF9UQ1BfU1lOQUNLX1JFVFJJRVNgLiBTaW1pbGFybHksIHRoZXkncmUgYm91bmRpbmcgYHF1ZXVlLVx1MDAzZXJza3FfZGVmZXJfYWNjZXB0YCB3aXRoIHRoZSBzYW1lIGxpbWl0LCB3aGljaCBpcyBnb29kIGNvbnNpc3RlbmN5LlxuXG5JbiBgbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmNgLCB0aGV5J3JlIGFkZGluZyBhIG5ldyBzeXNjdGwsIGB0Y3Bfc3luYWNrX3JldHJpZXNfbWF4YCwgd2hpY2ggc2VlbXMgdG8gcHJvdmlkZSBhIHVzZXItdHVuYWJsZSB1cHBlciBib3VuZCBvbiB0aGUgcmV0cnkgY291bnQuIFRoaXMgaXMgYSBuaWNlIGZlYXR1cmUsIGdpdmluZyBhZG1pbmlzdHJhdG9ycyBhIGxldmVsIG9mIGNvbnRyb2wgb3ZlciB0aGUgc3lzdGVtJ3MgYmVoYXZpb3IuXG5cbkZpbmFsbHksIGBuZXQvaXB2NC90Y3BfdGltZXIuY2Agc2hvd3Mgc2ltaWxhciBwcm90ZWN0aW9ucyBmb3IgYHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXJgLiBUaGV5J3JlIGNhcHBpbmcgdGhlIHJldHJpZXMgYW5kIHN3aXRjaGluZyB0byBgdGNwX3JlcXNrX3RpbWVvdXRfc2tgLCBhZ2FpbiwgdG8gYXZvaWQgdGhhdCBwZXNreSBzaGlmdCBvdmVyZmxvdyB0aGF0IGNhbiBvY2N1ciB3aGVuIGNhbGN1bGF0aW5nIHRoZSB0aW1lb3V0LlxuXG5PdmVyYWxsLCBpdCdzIGNsZWFyIHRoaXMgcGF0Y2ggaXMgYWJvdXQgZml4aW5nIHBvdGVudGlhbCBvdmVyZmxvdyBidWdzIGFuZCBlc3RhYmxpc2hpbmcgaGFyZCBsaW1pdHMgb24gdGhlIG51bWJlciBvZiBTWU4tQUNLIHJldHJpZXMuIEl0J3MgYWJvdXQgc3RhYmlsaXR5IGFuZCBwcmV2ZW50aW5nIHRoZSBzeXN0ZW0gZnJvbSBnZXR0aW5nIHN0dWNrIGluIGFuIGluZmluaXRlIHJldHJ5IGxvb3Agb3IgbWlzY2FsY3VsYXRpbmcgdGhlIHRpbWVvdXQuIFRoaXMgbmVlZHMgdG8gYmUgZnV6emVkIHRob3JvdWdobHkuXG5cbk5vdywgbGV0J3MgY29uc2lkZXIgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBUaGUgY29yZSBUQ1AgZnVuY3Rpb25hbGl0eSBpcyBhbHdheXMgY29tcGlsZWQsIHNvIHdlIGp1c3QgbmVlZCBgQ09ORklHX0lORVRgIHdoaWNoIGlzIHZlcnkgZ2VuZXJpYy4gVGhlIHByZXNlbmNlIG9mIGB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyYCBpbiBgbmV0L2lwdjQvdGNwX3RpbWVyLmNgIG1lYW5zIGBDT05GSUdfVENQX0ZBU1RPUEVOYCBtaWdodCBiZSBhIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24uIEknbGwgbmVlZCB0byBrZWVwIHRoaXMgaW4gbWluZCB3aGVuIGRldmlzaW5nIGZ1enppbmcgc3RyYXRlZ2llcywgYXMgdGhlIGJlaGF2aW9yIG1heSB2YXJ5IGRlcGVuZGluZyBvbiB3aGV0aGVyIEZhc3QgT3BlbiBpcyBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDQwLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTg2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6MzA6MjguNjEzNzkxMDc3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0ODM5NjI4MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX2Zhc3RvcGVuX3N5bmFja190aW1lclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC90Y3BfaW5wdXQuYz03MDczPXN0YXRpYyB2b2lkIHRjcF9yY3Zfc3lucmVjdl9zdGF0ZV9mYXN0b3BlbihzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03MDg1LVxcdFdSSVRFX09OQ0UoaW5ldF9jc2soc2spLVxcdTAwM2VpY3NrX3JldHJhbnNtaXRzLCAwKTtcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo3MDg2OlxcdC8qIEluIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoKSBvbiB0aGUgZmlyc3QgU1lOQUNLIFJUTyB3ZSBzZXRcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03MDg3LVxcdCAqIHJldHJhbnNfc3RhbXAgYnV0IGRvbid0IGVudGVyIENBX0xvc3MsIHNvIGluIGNhc2UgdGhhdCBoYXBwZW5lZCB3ZVxcbi0tXFxubmV0L2lwdjQvdGNwX3RpbWVyLmM9NDQwPXN0YXRpYyB2b2lkIHRjcF91cGRhdGVfcnRvX3N0YXRzKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9pcHY0L3RjcF90aW1lci5jLTQ1Ni0gKi9cXG5uZXQvaXB2NC90Y3BfdGltZXIuYzo0NTc6c3RhdGljIHZvaWQgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcXG5uZXQvaXB2NC90Y3BfdGltZXIuYy00NTgte1xcbi0tXFxubmV0L2lwdjQvdGNwX3RpbWVyLmM9NTM2PXZvaWQgdGNwX3JldHJhbnNtaXRfdGltZXIoc3RydWN0IHNvY2sgKnNrKVxcbi0tXFxubmV0L2lwdjQvdGNwX3RpbWVyLmMtNTQ4LVxcdFxcdFxcdCAgICAgc2stXFx1MDAzZXNrX3N0YXRlICE9IFRDUF9GSU5fV0FJVDEpO1xcbm5ldC9pcHY0L3RjcF90aW1lci5jOjU0OTpcXHRcXHR0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHNrLCByZXEpO1xcbm5ldC9pcHY0L3RjcF90aW1lci5jLTU1MC1cXHRcXHQvKiBCZWZvcmUgd2UgcmVjZWl2ZSBBQ0sgdG8gb3VyIFNZTi1BQ0sgZG9uJ3QgcmV0cmFuc21pdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDozMDozNC4wOTc3NjU2MDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDY4MzMxNTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBhIFRpbWVyIGluIHRoZSBUQ1AgU3RhY2sqKlxuXG5BbHJpZ2h0LCBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXJgIHZhcmlhYmxlLiBUaGUgZmlyc3QgdGhpbmcgSSBhbHdheXMgZG8gd2hlbiBJIHNlZSBzb21ldGhpbmcgbGlrZSB0aGlzIGlzIGxvb2sgZm9yIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIga2VybmVsIGNvbmZpZ3VyYXRpb24gb3IgZmVhdHVyZSBzZXQuIFRoYXQgYGlmZGVmYCBjaGVjayBpcyB0aGUga2V5LiBJcyB0aGlzIHRpbWVyIG9ubHkgZGVmaW5lZCBhbmQgdXNlZCBpZiBhIGNlcnRhaW4gZmVhdHVyZSwgbWF5YmUgRmFzdCBPcGVuIGl0c2VsZiwgaXMgZW5hYmxlZD8gT3IgaXMgaXQgcGFydCBvZiBhIG1vcmUgY29yZSBzZXQgb2YgVENQIGZ1bmN0aW9uYWxpdHksIHBvdGVudGlhbGx5IG1vZGlmaWVkIGJ5IGEgZGlmZmVyZW50IGZlYXR1cmU/IEtub3dpbmcgdGhhdCB3aWxsIHNpZ25pZmljYW50bHkgbmFycm93IGRvd24gdGhlIHBsYWNlcyBJIG5lZWQgdG8gbG9vayBmb3IgaXRzIHVzZSBhbmQgaG93IGl0J3MgaW1wYWN0ZWQgYnkgdGhlIHN1cnJvdW5kaW5nIGNvZGUuIFRpbWUgdG8gY2hlY2sgdGhvc2UgYCNpZmRlZmAgZGlyZWN0aXZlcy4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwODMsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDozMDozNy4xNjYwOTkwOTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU2MDA5NDA0MiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2lmZGVmLipGQVNUT1BFTlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6MzA6NDEuNzI2MjAyNTI3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk3MDM2OTk5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIFRDUCBGYXN0IE9wZW4gU1lOLUFDSyBUaW1lcioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhlIGd1dHMgb2YgVENQIEZhc3QgT3Blbi4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBoYW5kbGluZyBvZiB0aGUgYHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXJgLiBUaGF0IHBvaW50cyBtZSBkaXJlY3RseSB0byBgbmV0L2lwdjQvdGNwX3RpbWVyLmNgIGluIHRoZSBrZXJuZWwgc291cmNlLiBJIHN1c3BlY3QgdGhlcmUncyBzb21ldGhpbmcgc3BlY2lmaWMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgYWJvdXQgdGhlIHRpbWVyJ3Mgcm9sZSwgcHJvYmFibHkgcmVnYXJkaW5nIHJldHJhbnNtaXNzaW9ucywgdGltZW91dHMsIG9yIHN0YXRlIHRyYW5zaXRpb25zIHJlbGF0ZWQgdG8gRmFzdCBPcGVuJ3MgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50LiBNeSBpbnN0aW5jdCB0ZWxscyBtZSB0aGlzIGlzIHdoZXJlIEknbGwgZmluZCB0aGUgbG9naWMgZm9yIGhhbmRsaW5nIHRoZSBTWU4tQUNLJ3MgYWNrbm93bGVkZ21lbnQgKG9yIGxhY2sgdGhlcmVvZikgd2hlbiBGYXN0IE9wZW4gaXMgaW4gcGxheS4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB0aGUgZWRnZSBjYXNlcyDigJMgd2hhdCBoYXBwZW5zIGlmIHRoZSBTWU4tQUNLIGdldHMgbG9zdCwgb3IgZGVsYXllZCwgd2l0aCBGYXN0IE9wZW4gZW5hYmxlZD8gTGV0J3MgZ2V0IHRvIHRoZSBjb2RlIGFuZCBzZWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzMTksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDozMDo0NC42OTY1NzUxOThaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjY5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjQvdGNwX3RpbWVyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDUwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ1MDpcXHRcXHR0cC1cXHUwMDNldG90YWxfcnRvKys7XFxuIDQ1MTpcXHR9XFxuIDQ1MjpcXHRcXG4gNDUzOlxcdC8qXFxuIDQ1NDpcXHQgKlxcdFRpbWVyIGZvciBGYXN0IE9wZW4gc29ja2V0IHRvIHJldHJhbnNtaXQgU1lOQUNLLiBOb3RlIHRoYXQgdGhlXFxuIDQ1NTpcXHQgKlxcdHNrIGhlcmUgaXMgdGhlIGNoaWxkIHNvY2tldCwgbm90IHRoZSBwYXJlbnQgKGxpc3RlbmVyKSBzb2NrZXQuXFxuIDQ1NjpcXHQgKi9cXG4gNDU3OlxcdHN0YXRpYyB2b2lkIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuIDQ1ODpcXHR7XFxuIDQ1OTpcXHRcXHRzdHJ1Y3QgaW5ldF9jb25uZWN0aW9uX3NvY2sgKmljc2sgPSBpbmV0X2Nzayhzayk7XFxuIDQ2MDpcXHRcXHRzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3NrKHNrKTtcXG4gNDYxOlxcdFxcdGludCBtYXhfcmV0cmllcztcXG4gNDYyOlxcdFxcbiA0NjM6XFx0XFx0dGNwX3N5bl9hY2tfdGltZW91dChyZXEpO1xcbiA0NjQ6XFx0XFxuIDQ2NTpcXHRcXHQvKiBBZGQgb25lIG1vcmUgcmV0cnkgZm9yIGZhc3RvcGVuLlxcbiA0NjY6XFx0XFx0ICogUGFpcmVkIHdpdGggV1JJVEVfT05DRSgpIGluIHRjcF9zb2NrX3NldF9zeW5jbnQoKVxcbiA0Njc6XFx0XFx0ICovXFxuIDQ2ODpcXHRcXHRtYXhfcmV0cmllcyA9IFJFQURfT05DRShpY3NrLVxcdTAwM2VpY3NrX3N5bl9yZXRyaWVzKSA/IDpcXG4gNDY5OlxcdFxcdFxcdFJFQURfT05DRShzb2NrX25ldChzayktXFx1MDAzZWlwdjQuc3lzY3RsX3RjcF9zeW5hY2tfcmV0cmllcykgKyAxO1xcbiA0NzA6XFx0XFx0bWF4X3JldHJpZXMgPSBtaW5fdChpbnQsIG1heF9yZXRyaWVzLCBNQVhfVENQX1NZTkFDS19SRVRSSUVTKTtcXG4gNDcxOlxcdFxcbiA0NzI6XFx0XFx0aWYgKHJlcS1cXHUwMDNlbnVtX3RpbWVvdXQgXFx1MDAzZT0gbWF4X3JldHJpZXMpIHtcXG4gNDczOlxcdFxcdFxcdHRjcF93cml0ZV9lcnIoc2spO1xcbiA0NzQ6XFx0XFx0XFx0cmV0dXJuO1xcbiA0NzU6XFx0XFx0fVxcbiA0NzY6XFx0XFx0LyogTG93ZXIgY3duZCBhZnRlciBjZXJ0YWluIFNZTkFDSyB0aW1lb3V0IGxpa2UgdGNwX2luaXRfdHJhbnNmZXIoKSAqL1xcbiA0Nzc6XFx0XFx0aWYgKGljc2stXFx1MDAzZWljc2tfcmV0cmFuc21pdHMgPT0gMSlcXG4gNDc4OlxcdFxcdFxcdHRjcF9lbnRlcl9sb3NzKHNrKTtcXG4gNDc5OlxcdFxcdC8qIFhYWCAoVEZPKSAtIFVubGlrZSByZWd1bGFyIFNZTi1BQ0sgcmV0cmFuc21pdCwgd2UgaWdub3JlIGVycm9yXFxuIDQ4MDpcXHRcXHQgKiByZXR1cm5lZCBmcm9tIHJ0eF9zeW5fYWNrKCkgdG8gbWFrZSBpdCBtb3JlIHBlcnNpc3RlbnQgbGlrZVxcbiA0ODE6XFx0XFx0ICogcmVndWxhciByZXRyYW5zbWl0IGJlY2F1c2UgaWYgdGhlIGNoaWxkIHNvY2tldCBoYXMgYmVlbiBhY2NlcHRlZFxcbiA0ODI6XFx0XFx0ICogaXQncyBub3QgZ29vZCB0byBnaXZlIHVwIHRvbyBlYXNpbHkuXFxuIDQ4MzpcXHRcXHQgKi9cXG4gNDg0OlxcdFxcdHRjcF9ydHhfc3luYWNrKHNrLCByZXEpO1xcbiA0ODU6XFx0XFx0aWYgKHJlcS1cXHUwMDNlbnVtX3JldHJhbnMgXFx1MDAzZSAxIFxcdTAwMjZcXHUwMDI2IHRjcF9yc2socmVxKS1cXHUwMDNlYWNjZWNuX29rKVxcbiA0ODY6XFx0XFx0XFx0dGNwX3JzayhyZXEpLVxcdTAwM2VhY2NlY25fZmFpbF9tb2RlIHw9IFRDUF9BQ0NFQ05fQUNFX0ZBSUxfU0VORDtcXG4gNDg3OlxcdFxcdHJlcS1cXHUwMDNlbnVtX3RpbWVvdXQrKztcXG4gNDg4OlxcdFxcdHRjcF91cGRhdGVfcnRvX3N0YXRzKHNrKTtcXG4gNDg5OlxcdFxcdGlmICghdHAtXFx1MDAzZXJldHJhbnNfc3RhbXApXFxuIDQ5MDpcXHRcXHRcXHR0cC1cXHUwMDNlcmV0cmFuc19zdGFtcCA9IHRjcF90aW1lX3N0YW1wX3RzKHRwKTtcXG4gNDkxOlxcdFxcdHRjcF9yZXNldF94bWl0X3RpbWVyKHNrLCBJQ1NLX1RJTUVfUkVUUkFOUyxcXG4gNDkyOlxcdFxcdFxcdFxcdCAgICAgdGNwX3JlcXNrX3RpbWVvdXRfc2soc2ssIHJlcSksIGZhbHNlKTtcXG4gNDkzOlxcdH1cXG4gNDk0OlxcdFxcbiA0OTU6XFx0c3RhdGljIGJvb2wgdGNwX3J0eF9wcm9iZTBfdGltZWRfb3V0KGNvbnN0IHN0cnVjdCBzb2NrICpzayxcXG4gNDk2OlxcdFxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gNDk3OlxcdFxcdFxcdFxcdFxcdCAgICAgdTMyIHJ0eF9kZWx0YSlcXG4gNDk4OlxcdHtcXG4gNDk5OlxcdFxcdGNvbnN0IHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29jayAqaWNzayA9IGluZXRfY3NrKHNrKTtcXG4gNTAwOlxcdFxcdHUzMiB1c2VyX3RpbWVvdXQgPSBSRUFEX09OQ0UoaWNzay1cXHUwMDNlaWNza191c2VyX3RpbWVvdXQpO1xcbiA1MDE6XFx0XFx0Y29uc3Qgc3RydWN0IHRjcF9zb2NrICp0cCA9IHRjcF9zayhzayk7XFxuIDUwMjpcXHRcXHRpbnQgdGltZW91dCA9IHRjcF9ydG9fbWF4KHNrKSAqIDI7XFxuIDUwMzpcXHRcXHRzMzIgcmN2X2RlbHRhO1xcbiA1MDQ6XFx0XFxuIDUwNTpcXHRcXHRpZiAodXNlcl90aW1lb3V0KSB7XFxuIDUwNjpcXHRcXHRcXHQvKiBJZiB1c2VyIGFwcGxpY2F0aW9uIHNwZWNpZmllZCBhIFRDUF9VU0VSX1RJTUVPVVQsXFxuIDUwNzpcXHRcXHRcXHQgKiBpdCBkb2VzIG5vdCB3YW50IHdpbiAwIHBhY2tldHMgdG8gJ3Jlc2V0IHRoZSB0aW1lcidcXG4gNTA4OlxcdFxcdFxcdCAqIHdoaWxlIHJldHJhbnNtaXRzIGFyZSBub3QgbWFraW5nIHByb2dyZXNzLlxcbiA1MDk6XFx0XFx0XFx0ICovXFxuIDUxMDpcXHRcXHRcXHRpZiAocnR4X2RlbHRhIFxcdTAwM2UgdXNlcl90aW1lb3V0KVxcbiA1MTE6XFx0XFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuIDUxMjpcXHRcXHRcXHR0aW1lb3V0ID0gbWluX3QodTMyLCB0aW1lb3V0LCBtc2Vjc190b19qaWZmaWVzKHVzZXJfdGltZW91dCkpO1xcbiA1MTM6XFx0XFx0fVxcbiA1MTQ6XFx0XFx0LyogTm90ZTogdGltZXIgaW50ZXJydXB0IG1pZ2h0IGhhdmUgYmVlbiBkZWxheWVkIGJ5IGF0IGxlYXN0IG9uZSBqaWZmeSxcXG4gNTE1OlxcdFxcdCAqIGFuZCB0cC1cXHUwMDNlcmN2X3RzdGFtcCBtaWdodCB2ZXJ5IHdlbGwgaGF2ZSBiZWVuIHdyaXR0ZW4gcmVjZW50bHkuXFxuIDUxNjpcXHRcXHQgKiByY3ZfZGVsdGEgY2FuIHRodXMgYmUgbmVnYXRpdmUuXFxuIDUxNzpcXHRcXHQgKi9cXG4gNTE4OlxcdFxcdHJjdl9kZWx0YSA9IHRjcF90aW1lb3V0X2V4cGlyZXMoc2spIC0gdHAtXFx1MDAzZXJjdl90c3RhbXA7XFxuIDUxOTpcXHRcXHRpZiAocmN2X2RlbHRhIFxcdTAwM2M9IHRpbWVvdXQpXFxuIDUyMDpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIDUyMTpcXHRcXG4gNTIyOlxcdFxcdHJldHVybiBtc2Vjc190b19qaWZmaWVzKHJ0eF9kZWx0YSkgXFx1MDAzZSB0aW1lb3V0O1xcbiA1MjM6XFx0fVxcbiA1MjQ6XFx0XFxuIDUyNTpcXHQvKipcXG4gNTI2OlxcdCAqICB0Y3BfcmV0cmFuc21pdF90aW1lcigpIC0gVGhlIFRDUCByZXRyYW5zbWl0IHRpbWVvdXQgaGFuZGxlclxcbiA1Mjc6XFx0ICogIEBzazogIFBvaW50ZXIgdG8gdGhlIGN1cnJlbnQgc29ja2V0LlxcbiA1Mjg6XFx0ICpcXG4gNTI5OlxcdCAqICBUaGlzIGZ1bmN0aW9uIGdldHMgY2FsbGVkIHdoZW4gdGhlIGtlcm5lbCB0aW1lciBmb3IgYSBUQ1AgcGFja2V0XFxuIDUzMDpcXHQgKiAgb2YgdGhpcyBzb2NrZXQgZXhwaXJlcy5cXG4gNTMxOlxcdCAqXFxuIDUzMjpcXHQgKiAgSXQgaGFuZGxlcyByZXRyYW5zbWlzc2lvbiwgdGltZXIgYWRqdXN0bWVudCBhbmQgb3RoZXIgbmVjZXNzYXJ5IG1lYXN1cmVzLlxcbiA1MzM6XFx0ICpcXG4gNTM0OlxcdCAqICBSZXR1cm5zOiBOb3RoaW5nICh2b2lkKVxcbiA1MzU6XFx0ICovXFxuIDUzNjpcXHR2b2lkIHRjcF9yZXRyYW5zbWl0X3RpbWVyKHN0cnVjdCBzb2NrICpzaylcXG4gNTM3OlxcdHtcXG4gNTM4OlxcdFxcdHN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spO1xcbiA1Mzk6XFx0XFx0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spO1xcbiA1NDA6XFx0XFx0c3RydWN0IGluZXRfY29ubmVjdGlvbl9zb2NrICppY3NrID0gaW5ldF9jc2soc2spO1xcbiA1NDE6XFx0XFx0c3RydWN0IHJlcXVlc3Rfc29jayAqcmVxO1xcbiA1NDI6XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4gNTQzOlxcdFxcbiA1NDQ6XFx0XFx0cmVxID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZCh0cC1cXHUwMDNlZmFzdG9wZW5fcnNrLFxcbiA1NDU6XFx0XFx0XFx0XFx0XFx0XFx0bG9ja2RlcF9zb2NrX2lzX2hlbGQoc2spKTtcXG4gNTQ2OlxcdFxcdGlmIChyZXEpIHtcXG4gNTQ3OlxcdFxcdFxcdFdBUk5fT05fT05DRShzay1cXHUwMDNlc2tfc3RhdGUgIT0gVENQX1NZTl9SRUNWIFxcdTAwMjZcXHUwMDI2XFxuIDU0ODpcXHRcXHRcXHRcXHQgICAgIHNrLVxcdTAwM2Vza19zdGF0ZSAhPSBUQ1BfRklOX1dBSVQxKTtcXG4gNTQ5OlxcdFxcdFxcdHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoc2ssIHJlcSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE0OjMwOjQ0LjY5Njc0NDI3OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNTIxNTY4MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIFRDUCBGYXN0IE9wZW4gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gVENQIEZhc3QgT3Blbi4gVGhlIGNvZGUgc2VlbXMgdG8gYmUgY2hlY2tpbmcgZm9yIGBDT05GSUdfVENQX0ZBU1RPUEVOYCwgb3IgaWYgdGhhdCdzIHVuZGVmaW5lZCwganVzdCByZWx5aW5nIG9uIGBDT05GSUdfSU5FVGAuIFdhaXQgYSBtaW51dGUsIHRoYXQgZG9lc24ndCBzb3VuZCByaWdodC4gSSdtIHByZXR0eSBzdXJlIFRDUCBGYXN0IE9wZW4gaXNuJ3QgYSBjb21waWxlLXRpbWUgb3B0aW9uIGluIHRoZSB3YXkgdGhpcyBjb2RlIHN1Z2dlc3RzLiBJdCdzIGFsbW9zdCBhbHdheXMgY29tcGlsZWQgaW4gYW5kIGNvbnRyb2xsZWQsIGFzIEkgcmVjYWxsLCB2aWEgYHN5c2N0bGAuIExldCBtZSBxdWlja2x5IGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGlzLiBJIHNob3VsZCBjaGVjayBpZiBgQ09ORklHX1RDUF9GQVNUT1BFTmAgZXZlbiBleGlzdHMgaW4gdGhpcyBjb250ZXh0LiBJdCBzZWVtcyBvZGQgdGhhdCB0aGUgY29kZSB3b3VsZCBjb25kaXRpb25hbGx5IGNvbXBpbGUgYmFzZWQgb24gaXRzIHByZXNlbmNlLiBUaGlzIHdhcnJhbnRzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiB0byBhdm9pZCBhbnkgcG90ZW50aWFsbHkgZmxhd2VkIGNvbmRpdGlvbmFsIGxvZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzE5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDozMDo0OC4wNDg5MDM1NjRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NDY3MDQyODIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBUQ1BfRkFTVE9QRU5cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE0OjMwOjUyLjg5NTYxNTcxNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzA5ODU4MjY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlIHdlIGdvLiBMZXQncyBkaWcgaW50byB0aGlzLlxuXG4qKkludmVzdGlnYXRpbmcgVENQIEZhc3QgT3BlbiBhbmQgUmVsYXRlZCBGdW5jdGlvbmFsaXR5KipcblxuQWxyaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIHRvIGVzdGFibGlzaCBpcyB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHNpdHVhdGlvbiB3aGVyZSBgQ09ORklHX1RDUF9GQVNUT1BFTmAgaXNuJ3QgZW5hYmxlZC4gVGhhdCdzIGEga2V5IGluaXRpYWwgY29uc3RyYWludCwgc29tZXRoaW5nIHRvIGtlZXAgaW4gbWluZCB0aHJvdWdob3V0IHRoaXMgaW52ZXN0aWdhdGlvbi4gTm93LCB3aGVyZSB0byBnbyBmcm9tIHRoZXJlPyBMZXQncyBjb25zaWRlciB0aGUgcmVsZXZhbnQgcm91dGluZXMuLi4gSSB3b25kZXIgYWJvdXQgYHJlcXNrX3RpbWVyX2hhbmRsZXJgLiBUaGF0J3Mgb2Z0ZW4gYSBjcnVjaWFsIHBpZWNlIGluIHRoZSBjb25uZWN0aW9uIHNldHVwIGxpZmVjeWNsZSwgc28gaXQncyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIEFuZCBhcyBhIHN0YXJ0aW5nIHBvaW50LCBpdCBsb29rcyBsaWtlIHRoYXQgY29kZSByZXNpZGVzIGluIGBuZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jYC4gTGV0J3MgZm9jdXMgdGhlcmUuIFRoYXQgZGlyZWN0b3J5IGlzIGEgcHJldHR5IGdvb2QgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIGNvbm5lY3Rpb24tc3BlY2lmaWMgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU4MCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE0OjMwOjU4LjIwNTQ3NjIyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzkzMjE3NzczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlcXNrX3RpbWVyX2hhbmRsZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz0xMDE1PXZvaWQgaW5ldF9jc2tfcmVxc2tfcXVldWVfZHJvcF9hbmRfcHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxcbi0tXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMDIwLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTAyMTpzdGF0aWMgdm9pZCByZXFza190aW1lcl9oYW5kbGVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTAyMi17XFxuLS1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTEwNDctXFx0XFx0cmVmY291bnRfc2V0KFxcdTAwMjZucmVxLVxcdTAwM2Vyc2tfcmVmY250LCAyICsgMSk7XFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxMDQ4OlxcdFxcdHRpbWVyX3NldHVwKFxcdTAwMjZucmVxLVxcdTAwM2Vyc2tfdGltZXIsIHJlcXNrX3RpbWVyX2hhbmRsZXIsIFRJTUVSX1BJTk5FRCk7XFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMDQ5LVxcdFxcdHJlcXNrX3F1ZXVlX21pZ3JhdGVkKFxcdTAwMjZpbmV0X2Nzayhuc2spLVxcdTAwM2VpY3NrX2FjY2VwdF9xdWV1ZSwgcmVxKTtcXG4tLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM9MTE0Mj1zdGF0aWMgYm9vbCByZXFza19xdWV1ZV9oYXNoX3JlcShzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuLS1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTExNTAtXFx0cmVxLVxcdTAwM2V0aW1lb3V0ID0gdGNwX3RpbWVvdXRfaW5pdCgoc3RydWN0IHNvY2sgKilyZXEpO1xcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTE1MTpcXHR0aW1lcl9zZXR1cChcXHUwMDI2cmVxLVxcdTAwM2Vyc2tfdGltZXIsIHJlcXNrX3RpbWVyX2hhbmRsZXIsIFRJTUVSX1BJTk5FRCk7XFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMTUyLVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWlncmF0ZV9yZXVzZXBvcnQuYz01ND1zdGF0aWMgc3RydWN0IG1pZ3JhdGVfcmV1c2Vwb3J0X3Rlc3RfY2FzZSB7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTgzLVxcdHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jOjg0OlxcdFxcdC5uYW1lID0gXFxcIklQdjQgVENQX05FV19TWU5fUkVDViByZXFza190aW1lcl9oYW5kbGVyXFxcIixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTg1LVxcdFxcdC5mYW1pbHkgPSBBRl9JTkVULFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWlncmF0ZV9yZXVzZXBvcnQuYy0xMTUtXFx0e1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21pZ3JhdGVfcmV1c2Vwb3J0LmM6MTE2OlxcdFxcdC5uYW1lID0gXFxcIklQdjYgVENQX05FV19TWU5fUkVDViByZXFza190aW1lcl9oYW5kbGVyXFxcIixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTExNy1cXHRcXHQuZmFtaWx5ID0gQUZfSU5FVDYsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jPTQ5MT1zdGF0aWMgdm9pZCBydW5fdGVzdChzdHJ1Y3QgbWlncmF0ZV9yZXVzZXBvcnRfdGVzdF9jYXNlICp0ZXN0X2Nhc2UsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTU0Ny1cXHRcXHQvKiBXYWl0IGZvciBTWU4rQUNLIHRpbWVycyB0byBleHBpcmUgc28gdGhhdFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21pZ3JhdGVfcmV1c2Vwb3J0LmM6NTQ4OlxcdFxcdCAqIHJlcXNrX3RpbWVyX2hhbmRsZXIoKSBtaWdyYXRlcyBUQ1BfTkVXX1NZTl9SRUNWIHJlcXVlc3RzLlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21pZ3JhdGVfcmV1c2Vwb3J0LmMtNTQ5LVxcdFxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDozMTowMi45OTg3MDE5NzNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ3OTk0MTc1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgU1lOLUFDSyBSZXRyYW5zbWl0IFRpbWVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBzZWUsIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBjcml0aWNhbCBUQ1AgZnVuY3Rpb25zOiBgcmVxc2tfdGltZXJfaGFuZGxlcmAsIHdoaWNoIGhhbmRsZXMgdGhlIFNZTi1BQ0sgcmV0cmFuc21pdHMgZm9yIHN0YW5kYXJkIFRDUCBjb25uZWN0aW9ucywgYW5kIGB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyYCBmb3IgVENQIEZhc3QgT3Blbi4gQm90aCBhcmUgYWJzb2x1dGVseSBjb3JlIHRvIHRoZSBUQ1AgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IHByb2Nlc3MuXG5cblRoZSByZWxldmFudCBrZXJuZWwgY29uZmlndXJhdGlvbnMgaGVyZSBhcmUgc3RyYWlnaHRmb3J3YXJkOiBgSU5FVGAgaXMgYSBnaXZlbiwgb2YgY291cnNlLiBTaW5jZSB0aGlzIGltcGFjdHMgSVB2NiBUQ1AgYXMgd2VsbCwgYElQVjZgIGlzIGFsc28gYXBwbGljYWJsZS5cblxuTXkgcHJpbWFyeSBzeW1ib2xzIG9mIGludGVyZXN0IGFyZSBkZWZpbml0ZWx5IGByZXFza190aW1lcl9oYW5kbGVyYCBhbmQgYHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXJgLiBXYWl0LCBoYW5nIG9uLi4uIGB0Y3BfcmVxc2tfdGltZW91dF9za2AgaXMgYW4gaW5saW5lIGZ1bmN0aW9uIGRlZmluZWQgaW4gYGluY2x1ZGUvbmV0L3RjcC5oYC4gVGhhdCBtZWFucyBpdCB3b24ndCBzaG93IHVwIGFzIGEgc3RhbmRhbG9uZSBzeW1ib2wgaW4gdGhlIGtlcm5lbCBpbWFnZSwgc28gaXQncyBub3QgYSBkaXJlY3QgZm9jdXMgcG9pbnQuIEkndmUgY29uZmlybWVkIHRoaXMgd2l0aCBhIHF1aWNrIGNoZWNrOiB0aGUgaGVhZGVyIHNob3dzIGl0IGFzIGlubGluZS5cblxuU28sIHRvIGJlIHByZWNpc2UsIHRoZSBrZXkgc3ltYm9scyBhcmU6XG4qICAgYHJlcXNrX3RpbWVyX2hhbmRsZXJgXG4qICAgYHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXJgXG5cblRoZSBwYXRjaCdzIGltcGFjdCBpcyBwcmV0dHkgY2xlYXI6IGl0J3MgZml4aW5nIGEgcG90ZW50aWFsIHNoaWZ0IG92ZXJmbG93IGluIHRoZSBTWU4tQUNLIHRpbWVvdXQgY2FsY3VsYXRpb24gYW5kIGVuZm9yY2luZyBhIG1heGltdW0gb2YgNjMgU1lOLUFDSyByZXRyaWVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGVlcCB3aXRoaW4gdGhlIFRDUCBzdGFjay4gSXQgZGlyZWN0bHkgYWZmZWN0cyBob3cgY29ubmVjdGlvbnMgYXJlIGVzdGFibGlzaGVkIGFuZCBob3cgdGltZW91dHMgYXJlIGhhbmRsZWQuIFRoaXMgc2NyZWFtcyBcImZ1enppbmcgdGFyZ2V0XCIg4oCTIHRoZSBTWU4tQUNLIHRpbWVyIGhhbmRsZXJzIGFyZSB0aGUgcGxhY2UgdG8gZm9jdXMuIFdlIG5lZWQgdG8gZXhwbG9yZSBib3RoIHJlZ3VsYXIgYW5kIEZhc3QgT3BlbiBjb25uZWN0aW9uIHNjZW5hcmlvcy5cblxuR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLCBhbmQgbG9va2luZyBhdCB0aGUgZnVuZGFtZW50YWwgVENQIGFzcGVjdHMsIEkgdGhpbmsgdGhlIGBJTkVUYCBjb25maWcgaXMgYWRlcXVhdGUuIFRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgb2J2aW91cyBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBJIGNhbiBzZWUsIGp1c3Qgc3RhbmRhcmQgVENQIG9wZXJhdGlvbi5cblxuSSdtIGNvbmZpZGVudCBpbiB0aGlzIGFzc2Vzc21lbnQuIExldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODY1MiwiT3V0cHV0VG9rZW5zIjoxMjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6MzE6MTAuNDc4NjQ1OTg3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0NDUyMzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmVxc2tfdGltZXJfaGFuZGxlclwiLFxuICAgIFwidGNwX2Zhc3RvcGVuX3N5bmFja190aW1lclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHNoaWZ0IG92ZXJmbG93IGluIFRDUCBTWU4tQUNLIHRpbWVvdXQgY2FsY3VsYXRpb24gYW5kIGNhcHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIFNZTi1BQ0sgcmV0cmllcyB0byA2My4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFRDUCBzdGFjayB0aGF0IGFmZmVjdHMgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IGFuZCB0aW1lb3V0IGhhbmRsaW5nLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgU1lOLUFDSyB0aW1lciBoYW5kbGVycyBmb3IgYm90aCByZWd1bGFyIGFuZCBGYXN0IE9wZW4gY29ubmVjdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJlcXNrX3RpbWVyX2hhbmRsZXJcIixcbiAgICBcInRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBzaGlmdCBvdmVyZmxvdyBpbiBUQ1AgU1lOLUFDSyB0aW1lb3V0IGNhbGN1bGF0aW9uIGFuZCBjYXBzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBTWU4tQUNLIHJldHJpZXMgdG8gNjMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBUQ1Agc3RhY2sgdGhhdCBhZmZlY3RzIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgdGltZW91dCBoYW5kbGluZy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIFNZTi1BQ0sgdGltZXIgaGFuZGxlcnMgZm9yIGJvdGggcmVndWxhciBhbmQgRmFzdCBPcGVuIGNvbm5lY3Rpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowt9zq4[1] Phase: Succeeded StartedAt: 2026-07-02 14:31:22 +0000 UTC FinishedAt: 2026-07-02 14:31:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt9zq4[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-02 14:31:22 +0000 UTC FinishedAt: 2026-07-02 14:31:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt9zq4[2] Phase: Succeeded StartedAt: 2026-07-02 14:31:22 +0000 UTC FinishedAt: 2026-07-02 17:50:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-07-02 14:31:22 +0000 UTC FinishedAt: 2026-07-02 17:50:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-02 14:31:22 +0000 UTC FinishedAt: 2026-07-02 14:31:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-02 14:31:22 +0000 UTC FinishedAt: 2026-07-02 14:31:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt9zq4/series-workflowt9zq4-convert-artifact-1830732895/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-02 14:31:56 +0000 UTC FinishedAt: 2026-07-02 15:04:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-02 14:31:56 +0000 UTC FinishedAt: 2026-07-02 15:04:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*3cccba78-9150-4c7c-86fe-90599058d930,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt9zq4/series-workflowt9zq4-convert-artifact-1830732895/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "1044b910-2212-400c-a322-6582cf3f5670", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt9zq4/series-workflowt9zq4-build-action-4197558629/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-02 14:31:56 +0000 UTC FinishedAt: 2026-07-02 15:04:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*3cccba78-9150-4c7c-86fe-90599058d930,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt9zq4/series-workflowt9zq4-convert-artifact-1830732895/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "1044b910-2212-400c-a322-6582cf3f5670", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt9zq4/series-workflowt9zq4-build-action-4197558629/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-02 15:04:32 +0000 UTC FinishedAt: 2026-07-02 15:04:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-02 15:04:32 +0000 UTC FinishedAt: 2026-07-02 15:04:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-02 15:04:32 +0000 UTC FinishedAt: 2026-07-02 15:04:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-02 15:04:32 +0000 UTC FinishedAt: 2026-07-02 15:04:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt9zq4/series-workflowt9zq4-convert-artifact-2901320942/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-02 15:04:52 +0000 UTC FinishedAt: 2026-07-02 15:07:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-02 15:04:52 +0000 UTC FinishedAt: 2026-07-02 15:07:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1044b910-2212-400c-a322-6582cf3f5670,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt9zq4/series-workflowt9zq4-build-action-4197558629/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-02 15:07:12 +0000 UTC FinishedAt: 2026-07-02 15:07:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-02 15:07:12 +0000 UTC FinishedAt: 2026-07-02 15:07:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-02 15:07:12 +0000 UTC FinishedAt: 2026-07-02 15:30:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-02 15:07:12 +0000 UTC FinishedAt: 2026-07-02 15:30:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*3cccba78-9150-4c7c-86fe-90599058d930,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt9zq4/series-workflowt9zq4-convert-artifact-2901320942/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "82b34ece-010d-4700-b155-e10483167d75", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt9zq4/series-workflowt9zq4-build-action-2736289282/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-02 15:07:12 +0000 UTC FinishedAt: 2026-07-02 15:30:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*3cccba78-9150-4c7c-86fe-90599058d930,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt9zq4/series-workflowt9zq4-convert-artifact-2901320942/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "82b34ece-010d-4700-b155-e10483167d75", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt9zq4/series-workflowt9zq4-build-action-2736289282/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-02 15:30:17 +0000 UTC FinishedAt: 2026-07-02 15:30:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-02 15:30:17 +0000 UTC FinishedAt: 2026-07-02 15:30:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-02 15:30:17 +0000 UTC FinishedAt: 2026-07-02 15:32:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-02 15:30:17 +0000 UTC FinishedAt: 2026-07-02 15:32:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*82b34ece-010d-4700-b155-e10483167d75,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt9zq4/series-workflowt9zq4-build-action-2736289282/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Failed StartedAt: 2026-07-02 15:32:38 +0000 UTC FinishedAt: 2026-07-02 17:50:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Failed StartedAt: 2026-07-02 15:32:38 +0000 UTC FinishedAt: 2026-07-02 17:50:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*1044b910-2212-400c-a322-6582cf3f5670,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*82b34ece-010d-4700-b155-e10483167d75,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt9zq4/series-workflowt9zq4-build-action-4197558629/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt9zq4/series-workflowt9zq4-build-action-2736289282/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-02 15:32:38 +0000 UTC FinishedAt: 2026-07-02 15:32:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-02 15:32:38 +0000 UTC FinishedAt: 2026-07-02 15:32:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt9zq4/series-workflowt9zq4-convert-artifact-3756807571/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-02 15:32:38 +0000 UTC FinishedAt: 2026-07-02 15:32:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-02 15:32:38 +0000 UTC FinishedAt: 2026-07-02 15:32:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-02 15:32:38 +0000 UTC FinishedAt: 2026-07-02 15:32:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Failed StartedAt: 2026-07-02 15:32:59 +0000 UTC FinishedAt: 2026-07-02 17:50:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt9zq4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["reqsk_timer_handler","tcp_fastopen_synack_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7d5bf00b-2df3-49a4-ae8f-e2e4699f9da4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Error StartedAt: 2026-07-02 15:32:59 +0000 UTC FinishedAt: 2026-07-02 17:50:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1044b910-2212-400c-a322-6582cf3f5670,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*82b34ece-010d-4700-b155-e10483167d75,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt9zq4/series-workflowt9zq4-build-action-4197558629/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt9zq4/series-workflowt9zq4-build-action-2736289282/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt9zq4/series-workflowt9zq4-convert-artifact-3756807571/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil