Name: series-workflowrvhfv Phase: Succeeded StartedAt: 2026-07-27 07:20:54 +0000 UTC FinishedAt: 2026-07-27 12:22:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvhfv[0] Phase: Succeeded StartedAt: 2026-07-27 07:20:54 +0000 UTC FinishedAt: 2026-07-27 07:42:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvhfv[0].run-triage Phase: Succeeded StartedAt: 2026-07-27 07:20:54 +0000 UTC FinishedAt: 2026-07-27 07:42:35 +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": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "X25" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "X25" ], "series_id": "5fbdb97a-8f3c-46e0-9f9e-a303770c7901" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "x25_destroy_timer", "x25_heartbeat_expiry", "x25_timer_expiry", "x25_connect", "x25_release", "x25_bind", "x25_listen", "x25_accept" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1gyNSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3gyNV9kZXN0cm95X3RpbWVyJiMzNDssCiAgICAmIzM0O3gyNV9oZWFydGJlYXRfZXhwaXJ5JiMzNDssCiAgICAmIzM0O3gyNV90aW1lcl9leHBpcnkmIzM0OywKICAgICYjMzQ7eDI1X2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7eDI1X3JlbGVhc2UmIzM0OywKICAgICYjMzQ7eDI1X2JpbmQmIzM0OywKICAgICYjMzQ7eDI1X2xpc3RlbiYjMzQ7LAogICAgJiMzNDt4MjVfYWNjZXB0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHRpbWVyIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgcmVhcm1pbmcgbG9naWMgaW4gdGhlIFguMjUgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24uIEl0IHJlcGxhY2VzIHJhdyB0aW1lciBBUEkgY2FsbHMgd2l0aCBzb2NrZXQgdGltZXIgZnVuY3Rpb25zIChza19yZXNldF90aW1lciwgc2tfc3RvcF90aW1lcikgYW5kIGFkZHMgbWlzc2luZyBzb2NrX3B1dCgpIGNhbGxzIGluIHRpbWVyIGNhbGxiYWNrcyB0byBwcmV2ZW50IHVzZS1hZnRlci1mcmVlIG9yIG1lbW9yeSBsZWFrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgcHJvdG9jb2wgY29kZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDViZDE0YzI4Mzk2MjNhZDI0OGM2NWNlZjA1NzQzZDQxYzBjYWIzN2JcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAwNzo0MToyNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQveDI1L2FmX3gyNS5jIGIvbmV0L3gyNS9hZl94MjUuY1xuaW5kZXggOGFhZTkyNzNiN2MxNDQuLjAzM2U3ZDA1OWY1OGM2IDEwMDY0NFxuLS0tIGEvbmV0L3gyNS9hZl94MjUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3gyNS9hZl94MjUuY1xuQEAgLTM2Myw2ICYjNDM7MzYzLDcgQEAgc3RhdGljIHZvaWQgeDI1X2Rlc3Ryb3lfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4gXHRzdHJ1Y3Qgc29jayAqc2sgPSB0aW1lcl9jb250YWluZXJfb2Yoc2ssIHQsIHNrX3RpbWVyKTtcbiBcbiBcdHgyNV9kZXN0cm95X3NvY2tldF9mcm9tX3RpbWVyKHNrKTtcbiYjNDM7XHRzb2NrX3B1dChzayk7XG4gfVxuIFxuIC8qXG5AQCAtMzk4LDkgJiM0MzszOTksOCBAQCBzdGF0aWMgdm9pZCBfX3gyNV9kZXN0cm95X3NvY2tldChzdHJ1Y3Qgc29jayAqc2spXG4gXG4gXHRpZiAoc2tfaGFzX2FsbG9jYXRpb25zKHNrKSkge1xuIFx0XHQvKiBEZWZlcjogb3V0c3RhbmRpbmcgYnVmZmVycyAqL1xuLVx0XHRzay1cdTAwM2Vza190aW1lci5leHBpcmVzICA9IGppZmZpZXMgJiM0MzsgMTAgKiBIWjtcbiBcdFx0c2stXHUwMDNlc2tfdGltZXIuZnVuY3Rpb24gPSB4MjVfZGVzdHJveV90aW1lcjtcbi1cdFx0YWRkX3RpbWVyKFx1MDAyNnNrLVx1MDAzZXNrX3RpbWVyKTtcbiYjNDM7XHRcdHNrX3Jlc2V0X3RpbWVyKHNrLCBcdTAwMjZzay1cdTAwM2Vza190aW1lciwgamlmZmllcyAmIzQzOyAxMCAqIEhaKTtcbiBcdH0gZWxzZSB7XG4gXHRcdC8qIGRyb3AgbGFzdCByZWZlcmVuY2Ugc28gc29ja19wdXQgd2lsbCBmcmVlICovXG4gXHRcdF9fc29ja19wdXQoc2spO1xuZGlmZiAtLWdpdCBhL25ldC94MjUveDI1X3RpbWVyLmMgYi9uZXQveDI1L3gyNV90aW1lci5jXG5pbmRleCAyZWM2M2ExZjRjNmQ0Mi4uNzg5NmNkNDNmMWNjMWUgMTAwNjQ0XG4tLS0gYS9uZXQveDI1L3gyNV90aW1lci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveDI1L3gyNV90aW1lci5jXG5AQCAtMzYsNDUgJiM0MzszNiw0NSBAQCB2b2lkIHgyNV9pbml0X3RpbWVycyhzdHJ1Y3Qgc29jayAqc2spXG4gXG4gdm9pZCB4MjVfc3RhcnRfaGVhcnRiZWF0KHN0cnVjdCBzb2NrICpzaylcbiB7XG4tXHRtb2RfdGltZXIoXHUwMDI2c2stXHUwMDNlc2tfdGltZXIsIGppZmZpZXMgJiM0MzsgNSAqIEhaKTtcbiYjNDM7XHRza19yZXNldF90aW1lcihzaywgXHUwMDI2c2stXHUwMDNlc2tfdGltZXIsIGppZmZpZXMgJiM0MzsgNSAqIEhaKTtcbiB9XG4gXG4gdm9pZCB4MjVfc3RvcF9oZWFydGJlYXQoc3RydWN0IHNvY2sgKnNrKVxuIHtcbi1cdHRpbWVyX2RlbGV0ZShcdTAwMjZzay1cdTAwM2Vza190aW1lcik7XG4mIzQzO1x0c2tfc3RvcF90aW1lcihzaywgXHUwMDI2c2stXHUwMDNlc2tfdGltZXIpO1xuIH1cbiBcbiB2b2lkIHgyNV9zdGFydF90MnRpbWVyKHN0cnVjdCBzb2NrICpzaylcbiB7XG4gXHRzdHJ1Y3QgeDI1X3NvY2sgKngyNSA9IHgyNV9zayhzayk7XG4gXG4tXHRtb2RfdGltZXIoXHUwMDI2eDI1LVx1MDAzZXRpbWVyLCBqaWZmaWVzICYjNDM7IHgyNS1cdTAwM2V0Mik7XG4mIzQzO1x0c2tfcmVzZXRfdGltZXIoc2ssIFx1MDAyNngyNS1cdTAwM2V0aW1lciwgamlmZmllcyAmIzQzOyB4MjUtXHUwMDNldDIpO1xuIH1cbiBcbiB2b2lkIHgyNV9zdGFydF90MjF0aW1lcihzdHJ1Y3Qgc29jayAqc2spXG4ge1xuIFx0c3RydWN0IHgyNV9zb2NrICp4MjUgPSB4MjVfc2soc2spO1xuIFxuLVx0bW9kX3RpbWVyKFx1MDAyNngyNS1cdTAwM2V0aW1lciwgamlmZmllcyAmIzQzOyB4MjUtXHUwMDNldDIxKTtcbiYjNDM7XHRza19yZXNldF90aW1lcihzaywgXHUwMDI2eDI1LVx1MDAzZXRpbWVyLCBqaWZmaWVzICYjNDM7IHgyNS1cdTAwM2V0MjEpO1xuIH1cbiBcbiB2b2lkIHgyNV9zdGFydF90MjJ0aW1lcihzdHJ1Y3Qgc29jayAqc2spXG4ge1xuIFx0c3RydWN0IHgyNV9zb2NrICp4MjUgPSB4MjVfc2soc2spO1xuIFxuLVx0bW9kX3RpbWVyKFx1MDAyNngyNS1cdTAwM2V0aW1lciwgamlmZmllcyAmIzQzOyB4MjUtXHUwMDNldDIyKTtcbiYjNDM7XHRza19yZXNldF90aW1lcihzaywgXHUwMDI2eDI1LVx1MDAzZXRpbWVyLCBqaWZmaWVzICYjNDM7IHgyNS1cdTAwM2V0MjIpO1xuIH1cbiBcbiB2b2lkIHgyNV9zdGFydF90MjN0aW1lcihzdHJ1Y3Qgc29jayAqc2spXG4ge1xuIFx0c3RydWN0IHgyNV9zb2NrICp4MjUgPSB4MjVfc2soc2spO1xuIFxuLVx0bW9kX3RpbWVyKFx1MDAyNngyNS1cdTAwM2V0aW1lciwgamlmZmllcyAmIzQzOyB4MjUtXHUwMDNldDIzKTtcbiYjNDM7XHRza19yZXNldF90aW1lcihzaywgXHUwMDI2eDI1LVx1MDAzZXRpbWVyLCBqaWZmaWVzICYjNDM7IHgyNS1cdTAwM2V0MjMpO1xuIH1cbiBcbiB2b2lkIHgyNV9zdG9wX3RpbWVyKHN0cnVjdCBzb2NrICpzaylcbiB7XG4tXHR0aW1lcl9kZWxldGUoXHUwMDI2eDI1X3NrKHNrKS1cdTAwM2V0aW1lcik7XG4mIzQzO1x0c2tfc3RvcF90aW1lcihzaywgXHUwMDI2eDI1X3NrKHNrKS1cdTAwM2V0aW1lcik7XG4gfVxuIFxuIHVuc2lnbmVkIGxvbmcgeDI1X2Rpc3BsYXlfdGltZXIoc3RydWN0IHNvY2sgKnNrKVxuQEAgLTEwOCw3ICYjNDM7MTA4LDcgQEAgc3RhdGljIHZvaWQgeDI1X2hlYXJ0YmVhdF9leHBpcnkoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4gXHRcdFx0ICAgICBzb2NrX2ZsYWcoc2ssIFNPQ0tfREVBRCkpKSB7XG4gXHRcdFx0XHRiaF91bmxvY2tfc29jayhzayk7XG4gXHRcdFx0XHR4MjVfZGVzdHJveV9zb2NrZXRfZnJvbV90aW1lcihzayk7XG4tXHRcdFx0XHRyZXR1cm47XG4mIzQzO1x0XHRcdFx0Z290byBvdXQ7XG4gXHRcdFx0fVxuIFx0XHRcdGJyZWFrO1xuIFxuQEAgLTEyMCw4ICYjNDM7MTIwLDE0IEBAIHN0YXRpYyB2b2lkIHgyNV9oZWFydGJlYXRfZXhwaXJ5KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuIFx0XHRcdGJyZWFrO1xuIFx0fVxuIHJlc3RhcnRfaGVhcnRiZWF0OlxuLVx0eDI1X3N0YXJ0X2hlYXJ0YmVhdChzayk7XG4mIzQzO1x0LyogRG8gbm90IHJlYXJtIG9uY2UgX194MjVfZGVzdHJveV9zb2NrZXQoKSBoYXMgdW5saW5rZWQgdGhlIHNvY2tldDpcbiYjNDM7XHQgKiBpdCBpcyBwYXN0IGl0cyBjYW5jZWwgcG9pbnQgYW5kIG93bnMgdGhlIHRlYXJkb3duIGZyb20gdGhlcmUgb24uXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHNrX2hhc2hlZChzaykpXG4mIzQzO1x0XHR4MjVfc3RhcnRfaGVhcnRiZWF0KHNrKTtcbiBcdGJoX3VubG9ja19zb2NrKHNrKTtcbiYjNDM7b3V0OlxuJiM0MztcdHNvY2tfcHV0KHNrKTtcbiB9XG4gXG4gLypcbkBAIC0xNjYsNCAmIzQzOzE3Miw1IEBAIHN0YXRpYyB2b2lkIHgyNV90aW1lcl9leHBpcnkoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4gXHR9IGVsc2VcbiBcdFx0eDI1X2RvX3RpbWVyX2V4cGlyeShzayk7XG4gXHRiaF91bmxvY2tfc29jayhzayk7XG4mIzQzO1x0c29ja19wdXQoc2spO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WDI1JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eDI1X2Rlc3Ryb3lfdGltZXImIzM0OywKICAgICYjMzQ7eDI1X2hlYXJ0YmVhdF9leHBpcnkmIzM0OywKICAgICYjMzQ7eDI1X3RpbWVyX2V4cGlyeSYjMzQ7LAogICAgJiMzNDt4MjVfY29ubmVjdCYjMzQ7LAogICAgJiMzNDt4MjVfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDt4MjVfYmluZCYjMzQ7LAogICAgJiMzNDt4MjVfbGlzdGVuJiMzNDssCiAgICAmIzM0O3gyNV9hY2NlcHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgdGltZXIgcmVmZXJlbmNlIGNvdW50aW5nIGFuZCByZWFybWluZyBsb2dpYyBpbiB0aGUgWC4yNSBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbi4gSXQgcmVwbGFjZXMgcmF3IHRpbWVyIEFQSSBjYWxscyB3aXRoIHNvY2tldCB0aW1lciBmdW5jdGlvbnMgKHNrX3Jlc2V0X3RpbWVyLCBza19zdG9wX3RpbWVyKSBhbmQgYWRkcyBtaXNzaW5nIHNvY2tfcHV0KCkgY2FsbHMgaW4gdGltZXIgY2FsbGJhY2tzIHRvIHByZXZlbnQgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGxlYWtzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29yayBwcm90b2NvbCBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWJkMTRjMjgzOTYyM2FkMjQ4YzY1Y2VmMDU3NDNkNDFjMGNhYjM3YgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDI3IDA3OjQxOjI1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3gyNS9hZl94MjUuYyBiL25ldC94MjUvYWZfeDI1LmMKaW5kZXggOGFhZTkyNzNiN2MxNDQuLjAzM2U3ZDA1OWY1OGM2IDEwMDY0NAotLS0gYS9uZXQveDI1L2FmX3gyNS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94MjUvYWZfeDI1LmMKQEAgLTM2Myw2ICYjNDM7MzYzLDcgQEAgc3RhdGljIHZvaWQgeDI1X2Rlc3Ryb3lfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpCiAJc3RydWN0IHNvY2sgKnNrID0gdGltZXJfY29udGFpbmVyX29mKHNrLCB0LCBza190aW1lcik7CiAKIAl4MjVfZGVzdHJveV9zb2NrZXRfZnJvbV90aW1lcihzayk7CiYjNDM7CXNvY2tfcHV0KHNrKTsKIH0KIAogLyoKQEAgLTM5OCw5ICYjNDM7Mzk5LDggQEAgc3RhdGljIHZvaWQgX194MjVfZGVzdHJveV9zb2NrZXQoc3RydWN0IHNvY2sgKnNrKQogCiAJaWYgKHNrX2hhc19hbGxvY2F0aW9ucyhzaykpIHsKIAkJLyogRGVmZXI6IG91dHN0YW5kaW5nIGJ1ZmZlcnMgKi8KLQkJc2stJmd0O3NrX3RpbWVyLmV4cGlyZXMgID0gamlmZmllcyAmIzQzOyAxMCAqIEhaOwogCQlzay0mZ3Q7c2tfdGltZXIuZnVuY3Rpb24gPSB4MjVfZGVzdHJveV90aW1lcjsKLQkJYWRkX3RpbWVyKCZhbXA7c2stJmd0O3NrX3RpbWVyKTsKJiM0MzsJCXNrX3Jlc2V0X3RpbWVyKHNrLCAmYW1wO3NrLSZndDtza190aW1lciwgamlmZmllcyAmIzQzOyAxMCAqIEhaKTsKIAl9IGVsc2UgewogCQkvKiBkcm9wIGxhc3QgcmVmZXJlbmNlIHNvIHNvY2tfcHV0IHdpbGwgZnJlZSAqLwogCQlfX3NvY2tfcHV0KHNrKTsKZGlmZiAtLWdpdCBhL25ldC94MjUveDI1X3RpbWVyLmMgYi9uZXQveDI1L3gyNV90aW1lci5jCmluZGV4IDJlYzYzYTFmNGM2ZDQyLi43ODk2Y2Q0M2YxY2MxZSAxMDA2NDQKLS0tIGEvbmV0L3gyNS94MjVfdGltZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQveDI1L3gyNV90aW1lci5jCkBAIC0zNiw0NSAmIzQzOzM2LDQ1IEBAIHZvaWQgeDI1X2luaXRfdGltZXJzKHN0cnVjdCBzb2NrICpzaykKIAogdm9pZCB4MjVfc3RhcnRfaGVhcnRiZWF0KHN0cnVjdCBzb2NrICpzaykKIHsKLQltb2RfdGltZXIoJmFtcDtzay0mZ3Q7c2tfdGltZXIsIGppZmZpZXMgJiM0MzsgNSAqIEhaKTsKJiM0MzsJc2tfcmVzZXRfdGltZXIoc2ssICZhbXA7c2stJmd0O3NrX3RpbWVyLCBqaWZmaWVzICYjNDM7IDUgKiBIWik7CiB9CiAKIHZvaWQgeDI1X3N0b3BfaGVhcnRiZWF0KHN0cnVjdCBzb2NrICpzaykKIHsKLQl0aW1lcl9kZWxldGUoJmFtcDtzay0mZ3Q7c2tfdGltZXIpOwomIzQzOwlza19zdG9wX3RpbWVyKHNrLCAmYW1wO3NrLSZndDtza190aW1lcik7CiB9CiAKIHZvaWQgeDI1X3N0YXJ0X3QydGltZXIoc3RydWN0IHNvY2sgKnNrKQogewogCXN0cnVjdCB4MjVfc29jayAqeDI1ID0geDI1X3NrKHNrKTsKIAotCW1vZF90aW1lcigmYW1wO3gyNS0mZ3Q7dGltZXIsIGppZmZpZXMgJiM0MzsgeDI1LSZndDt0Mik7CiYjNDM7CXNrX3Jlc2V0X3RpbWVyKHNrLCAmYW1wO3gyNS0mZ3Q7dGltZXIsIGppZmZpZXMgJiM0MzsgeDI1LSZndDt0Mik7CiB9CiAKIHZvaWQgeDI1X3N0YXJ0X3QyMXRpbWVyKHN0cnVjdCBzb2NrICpzaykKIHsKIAlzdHJ1Y3QgeDI1X3NvY2sgKngyNSA9IHgyNV9zayhzayk7CiAKLQltb2RfdGltZXIoJmFtcDt4MjUtJmd0O3RpbWVyLCBqaWZmaWVzICYjNDM7IHgyNS0mZ3Q7dDIxKTsKJiM0MzsJc2tfcmVzZXRfdGltZXIoc2ssICZhbXA7eDI1LSZndDt0aW1lciwgamlmZmllcyAmIzQzOyB4MjUtJmd0O3QyMSk7CiB9CiAKIHZvaWQgeDI1X3N0YXJ0X3QyMnRpbWVyKHN0cnVjdCBzb2NrICpzaykKIHsKIAlzdHJ1Y3QgeDI1X3NvY2sgKngyNSA9IHgyNV9zayhzayk7CiAKLQltb2RfdGltZXIoJmFtcDt4MjUtJmd0O3RpbWVyLCBqaWZmaWVzICYjNDM7IHgyNS0mZ3Q7dDIyKTsKJiM0MzsJc2tfcmVzZXRfdGltZXIoc2ssICZhbXA7eDI1LSZndDt0aW1lciwgamlmZmllcyAmIzQzOyB4MjUtJmd0O3QyMik7CiB9CiAKIHZvaWQgeDI1X3N0YXJ0X3QyM3RpbWVyKHN0cnVjdCBzb2NrICpzaykKIHsKIAlzdHJ1Y3QgeDI1X3NvY2sgKngyNSA9IHgyNV9zayhzayk7CiAKLQltb2RfdGltZXIoJmFtcDt4MjUtJmd0O3RpbWVyLCBqaWZmaWVzICYjNDM7IHgyNS0mZ3Q7dDIzKTsKJiM0MzsJc2tfcmVzZXRfdGltZXIoc2ssICZhbXA7eDI1LSZndDt0aW1lciwgamlmZmllcyAmIzQzOyB4MjUtJmd0O3QyMyk7CiB9CiAKIHZvaWQgeDI1X3N0b3BfdGltZXIoc3RydWN0IHNvY2sgKnNrKQogewotCXRpbWVyX2RlbGV0ZSgmYW1wO3gyNV9zayhzayktJmd0O3RpbWVyKTsKJiM0MzsJc2tfc3RvcF90aW1lcihzaywgJmFtcDt4MjVfc2soc2spLSZndDt0aW1lcik7CiB9CiAKIHVuc2lnbmVkIGxvbmcgeDI1X2Rpc3BsYXlfdGltZXIoc3RydWN0IHNvY2sgKnNrKQpAQCAtMTA4LDcgJiM0MzsxMDgsNyBAQCBzdGF0aWMgdm9pZCB4MjVfaGVhcnRiZWF0X2V4cGlyeShzdHJ1Y3QgdGltZXJfbGlzdCAqdCkKIAkJCSAgICAgc29ja19mbGFnKHNrLCBTT0NLX0RFQUQpKSkgewogCQkJCWJoX3VubG9ja19zb2NrKHNrKTsKIAkJCQl4MjVfZGVzdHJveV9zb2NrZXRfZnJvbV90aW1lcihzayk7Ci0JCQkJcmV0dXJuOwomIzQzOwkJCQlnb3RvIG91dDsKIAkJCX0KIAkJCWJyZWFrOwogCkBAIC0xMjAsOCAmIzQzOzEyMCwxNCBAQCBzdGF0aWMgdm9pZCB4MjVfaGVhcnRiZWF0X2V4cGlyeShzdHJ1Y3QgdGltZXJfbGlzdCAqdCkKIAkJCWJyZWFrOwogCX0KIHJlc3RhcnRfaGVhcnRiZWF0OgotCXgyNV9zdGFydF9oZWFydGJlYXQoc2spOwomIzQzOwkvKiBEbyBub3QgcmVhcm0gb25jZSBfX3gyNV9kZXN0cm95X3NvY2tldCgpIGhhcyB1bmxpbmtlZCB0aGUgc29ja2V0OgomIzQzOwkgKiBpdCBpcyBwYXN0IGl0cyBjYW5jZWwgcG9pbnQgYW5kIG93bnMgdGhlIHRlYXJkb3duIGZyb20gdGhlcmUgb24uCiYjNDM7CSAqLwomIzQzOwlpZiAoc2tfaGFzaGVkKHNrKSkKJiM0MzsJCXgyNV9zdGFydF9oZWFydGJlYXQoc2spOwogCWJoX3VubG9ja19zb2NrKHNrKTsKJiM0MztvdXQ6CiYjNDM7CXNvY2tfcHV0KHNrKTsKIH0KIAogLyoKQEAgLTE2Niw0ICYjNDM7MTcyLDUgQEAgc3RhdGljIHZvaWQgeDI1X3RpbWVyX2V4cGlyeShzdHJ1Y3QgdGltZXJfbGlzdCAqdCkKIAl9IGVsc2UKIAkJeDI1X2RvX3RpbWVyX2V4cGlyeShzayk7CiAJYmhfdW5sb2NrX3NvY2soc2spOwomIzQzOwlzb2NrX3B1dChzayk7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyODcKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqWC4yNSBUaW1lciBNYW5hZ2VtZW50OiBBIENyaXRpY2FsIFJldmlldyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHplcm9pbmcgaW4gb24gdGhlIFguMjUgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24g4oCTIHNwZWNpZmljYWxseSwgYGFmX3gyNS5jYCBhbmQgYHgyNV90aW1lci5jYC4gSW50ZXJlc3RpbmcuIFRoZSBjb3JlIG9mIHRoaXMgaXMgYWJvdXQgdGhlIHRpbWVyIGhhbmRsaW5nLCBhbmQgaXQgc291bmRzIGxpa2UgYSBzaWduaWZpY2FudCBpbXByb3ZlbWVudCBpbiBzb2NrZXQgbWFuYWdlbWVudCBpcyB1bmRlcndheS4gSXQmIzM5O3Mgc2hpZnRpbmcgZnJvbSB0aGUgb2xkZXIgYG1vZF90aW1lcmAgYW5kIGB0aW1lcl9kZWxldGVgIG1ldGhvZHMgdG8gYHNrX3Jlc2V0X3RpbWVyYCBhbmQgYHNrX3N0b3BfdGltZXJgLiBUaGF0IGltbWVkaWF0ZWx5IHN1Z2dlc3RzIGEgbW92ZSB0b3dhcmRzIGEgbW9yZSByb2J1c3QgYW5kIHBvc3NpYmx5IG1vcmUgZWZmaWNpZW50IGFwcHJvYWNoLiBBbmQgdGhlIGFkZGl0aW9uIG9mIGBzb2NrX3B1dChzaylgIHdpdGhpbiB0aGUgdGltZXIgY2FsbGJhY2tzPyBUaGF0JiMzOTtzIHRoZSByZWFsIG1lYXQgb2YgaXQg4oCTIGEgZm9jdXNlZCBhdHRlbXB0IHRvIGhhbmRsZSBzb2NrZXQgcmVmZXJlbmNlcyBjb3JyZWN0bHkuIFRoYXQmIzM5O3MgYSBnb29kIHNpZ247IGl0IHBvaW50cyBkaXJlY3RseSB0b3dhcmRzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eSBvciBhIG1lbW9yeSBsZWFrIHdpdGhpbiB0aG9zZSBYLjI1IHNvY2tldCB0aW1lcnMuIEdvdHRhIGJlIGNhcmVmdWwgd2l0aCB0aG9zZSB0aW1lcnMgYW5kIHNvY2tldCByZWZlcmVuY2VzLi4uIHRoZXkmIzM5O3JlIGVhc3kgdG8gZ2V0IHdyb25nIGFuZCBjYXVzZSBtYWpvciBoZWFkYWNoZXMuIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byB2ZXJpZnkgdGhhdC4KCk15IG5leHQgc3RlcCBpcyB0byB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgS2NvbmZpZyBmaWxlIGZvciBYLjI1IHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nJiMzOTtzIHNldCB1cCBjb3JyZWN0bHkuIEdvdHRhIG1ha2Ugc3VyZSBpdCYjMzk7cyBlbmFibGVkIGFuZCBub3QgYWNjaWRlbnRhbGx5IGRpc2FibGVkLiBUaGVuLCBJIHdpbGwgZGVsdmUgZGVlcGVyLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCB0byBzZWUgKmhvdyogdGhlIHNvY2tldCByZWZlcmVuY2VzIHdlcmUgYmVpbmcgbWlzaGFuZGxlZCBiZWZvcmUgYW5kIGV4YWN0bHkgKmhvdyogdGhlc2UgY2hhbmdlcyByZXNvbHZlIHRoZSBpc3N1ZS4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBzaG91bGQgYnJpbmcgc29tZSBzdGFiaWxpdHkgdG8gdGhlIFguMjUgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFgyNSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94MjUvS2NvbmZpZy01LVxubmV0L3gyNS9LY29uZmlnOjY6Y29uZmlnIFgyNVxubmV0L3gyNS9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtDQ0lUVCBYLjI1IFBhY2tldCBMYXllclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NDEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6CgoqKkFuYWx5emluZyBEZXBlbmRlbmNpZXM6IFgyNSoqCgpBbHJpZ2h0LCB0aGUgaW5pdGlhbCBwcm9tcHQgaXMgc3RyYWlnaHRmb3J3YXJkLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoICYjMzQ7ZGVwZW5kZW5jaWVzJiMzNDsgYW5kICYjMzQ7WDI1LCYjMzQ7IHdoaWNoIGxpa2VseSByZWxhdGVzIHRvIGEgc3BlY2lmaWMgc3lzdGVtLCBjb21wb25lbnQsIG9yIGNvZGViYXNlLCBnaXZlbiB0aGUgc3BlY2lhbGl6ZWQgbmF0dXJlIG9mIHRoZSB0ZXJtaW5vbG9neS4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRlbHZlIGludG8gdGhlIGFyY2hpdGVjdHVyZSBhbmQgaWRlbnRpZnkgdGhlIGNyaXRpY2FsIHJlbGF0aW9uc2hpcHMgYXQgcGxheS4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgWDI1ICppcyogd2l0aGluIHRoaXMgY29udGV4dC4gSXMgaXQgYSBsaWJyYXJ5PyBBIHNlcnZpY2U/IEEgaGFyZHdhcmUgY29tcG9uZW50PyBLbm93aW5nIGl0cyByb2xlIHdpbGwgaGVhdmlseSBpbmZsdWVuY2UgaG93IEkgYXBwcm9hY2ggZGVwZW5kZW5jeSBhbmFseXNpcy4KCk15IHRob3VnaHQgcHJvY2VzcyBxdWlja2x5IGJyYW5jaGVzIGludG8gc2V2ZXJhbCBrZXkgYXJlYXM6CgoqICAgKipJZGVudGlmeWluZyB0aGUgc2NvcGU6KiogV2hhdCBjb25zdGl0dXRlcyBhIGRlcGVuZGVuY3kgaW4gdGhpcyBzY2VuYXJpbz8gSXMgaXQgYSBjb2RlLWxldmVsIGRlcGVuZGVuY3kgKGltcG9ydHMsIHVzZXMsIGV0Yy4pLCBhIHJ1bnRpbWUgZGVwZW5kZW5jeSAobGlicmFyaWVzLCBzZXJ2aWNlcyksIGEgaGFyZHdhcmUgZGVwZW5kZW5jeSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSB0eXBlIG9mIGRlcGVuZGVuY3kgaW5mbHVlbmNlcyB0aGUgdG9vbHMgYW5kIG1ldGhvZG9sb2dpZXMgSSYjMzk7ZCBlbXBsb3kuCiogICAqKkNob29zaW5nIHRoZSByaWdodCB0b29sc2V0OioqIERvIEkgcmVhY2ggZm9yIGEgc3RhdGljIGFuYWx5c2lzIHRvb2wgZm9yIGNvZGUgZGVwZW5kZW5jaWVzPyBQZXJoYXBzIGEgbW9uaXRvcmluZyBzeXN0ZW0gZm9yIHJ1bnRpbWUgaW50ZXJhY3Rpb25zPyBPciBtYXliZSBJIGhhdmUgdG8gc3RhcnQgbG9va2luZyBhdCBkb2N1bWVudGF0aW9uPyBLbm93aW5nIHRoZSB0eXBlIG9mIGRlcGVuZGVuY3kgd2lsbCBkZWNpZGUgdGhpcy4KKiAgICoqRG9jdW1lbnRpbmcgdGhlIGZpbmRpbmdzOioqIFdoYXQgYXJlIHRoZSBleHBlY3RlZCBvdXRwdXRzPyBUaGlzIGhlbHBzIGRlY2lkZSB0aGUgbWV0aG9kIGZvciBkb2N1bWVudGF0aW9uIG9mIHRoZSBkZXBlbmRlbmNpZXMuCiogICAqKkNvbnNpZGVyaW5nIHRoZSBpbXBsaWNhdGlvbnM6KiogV2hhdCBpbXBhY3QgZG8gdGhlc2UgZGVwZW5kZW5jaWVzIGhhdmU/IFRoZWlyIHNldmVyaXR5PyBBcmUgdGhlcmUgcG90ZW50aWFsIHJpc2tzIG9yIHZ1bG5lcmFiaWxpdGllcyBhc3NvY2lhdGVkIHdpdGggdGhlc2UgZGVwZW5kZW5jaWVzPyBUaGlzIGFzc2Vzc21lbnQgd2lsbCBpbmZvcm0gZGVjaXNpb25zIGFib3V0IG1pdGlnYXRpb24gc3RyYXRlZ2llcyAodXBkYXRlcywgcGF0Y2hpbmcsIGlzb2xhdGlvbiwgZXRjLikuCgpFc3NlbnRpYWxseSwgSSYjMzk7bSBmb3JtaW5nIGEgcGxhbiBmb3IgYSBjb21wcmVoZW5zaXZlIGludmVzdGlnYXRpb24sIGEgbWVudGFsIGNoZWNrbGlzdCBvZiBxdWVzdGlvbnMgdG8gYW5zd2VyIGFuZCBhY3Rpb25zIHRvIHRha2UgdG8gZ2FpbiBhIGZ1bGwgdW5kZXJzdGFuZGluZyBvZiBYMjUmIzM5O3MgZGVwZW5kZW5jaWVzLiBNeSBleHBlcnRpc2UgYWxsb3dzIG1lIHRvIHF1aWNrbHkgZXN0YWJsaXNoIHRoaXMgZnJhbWV3b3JrLCBhbnRpY2lwYXRpbmcgdGhlIGNoYWxsZW5nZXMgYW5kIG9wcG9ydHVuaXRpZXMgaW5oZXJlbnQgaW4gdGhlIHRhc2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQveDI1L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBDQ0lUVCBYLjI1IFBhY2tldCBMYXllclxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgWDI1XG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtDQ0lUVCBYLjI1IFBhY2tldCBMYXllclwmIzM0O1xuICAgODpcdFx0aGVscFxuICAgOTpcdFx0ICBYLjI1IGlzIGEgc2V0IG9mIHN0YW5kYXJkaXplZCBuZXR3b3JrIHByb3RvY29scywgc2ltaWxhciBpbiBzY29wZSB0b1xuICAxMDpcdFx0ICBmcmFtZSByZWxheTsgdGhlIG9uZSBwaHlzaWNhbCBsaW5lIGZyb20geW91ciBib3ggdG8gdGhlIFguMjUgbmV0d29ya1xuICAxMTpcdFx0ICBlbnRyeSBwb2ludCBjYW4gY2Fycnkgc2V2ZXJhbCBsb2dpY2FsIHBvaW50LXRvLXBvaW50IGNvbm5lY3Rpb25zXG4gIDEyOlx0XHQgIChjYWxsZWQgXCYjMzQ7dmlydHVhbCBjaXJjdWl0c1wmIzM0OykgdG8gb3RoZXIgY29tcHV0ZXJzIGNvbm5lY3RlZCB0byB0aGUgWC4yNVxuICAxMzpcdFx0ICBuZXR3b3JrLiBHb3Zlcm5tZW50cywgYmFua3MsIGFuZCBvdGhlciBvcmdhbml6YXRpb25zIHRlbmQgdG8gdXNlIGl0XG4gIDE0Olx0XHQgIHRvIGNvbm5lY3QgdG8gZWFjaCBvdGhlciBvciB0byBmb3JtIFdpZGUgQXJlYSBOZXR3b3JrcyAoV0FOcykuIE1hbnlcbiAgMTU6XHRcdCAgY291bnRyaWVzIGhhdmUgcHVibGljIFguMjUgbmV0d29ya3MuIFguMjUgY29uc2lzdHMgb2YgdHdvXG4gIDE2Olx0XHQgIHByb3RvY29sczogdGhlIGhpZ2hlciBsZXZlbCBQYWNrZXQgTGF5ZXIgUHJvdG9jb2wgKFBMUCkgKHNheSBZIGhlcmVcbiAgMTc6XHRcdCAgaWYgeW91IHdhbnQgdGhhdCkgYW5kIHRoZSBsb3dlciBsZXZlbCBkYXRhIGxpbmsgbGF5ZXIgcHJvdG9jb2wgTEFQQlxuICAxODpcdFx0ICAoc2F5IFkgdG8gXCYjMzQ7TEFQQiBEYXRhIExpbmsgRHJpdmVyXCYjMzQ7IGJlbG93IGlmIHlvdSB3YW50IHRoYXQpLlxuICAxOTpcdFxuICAyMDpcdFx0ICBJbmZvcm1hdGlvbiBhYm91dCBYLjI1IGZvciBMaW51eCBpcyBjb250YWluZWQgaW4gdGhlIGZpbGVzXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYyMgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDIyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFguMjUgQ29uZmlndXJhdGlvbiBDaGFuZ2VzKioKCk9rYXksIHNvIGBDT05GSUdfWDI1YCBpcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlLCB0aGF0JiMzOTtzIG15IHN0YXJ0aW5nIHBvaW50LiBOb3csIGxldCYjMzk7cyBkcmlsbCBkb3duIGFuZCBzZWUgd2hhdCBzcGVjaWZpY2FsbHkgaGFzIGJlZW4gY2hhbmdlZC4gSXQgbG9va3MgbGlrZSB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHJldm9sdmUgaGVhdmlseSBhcm91bmQgdGltZXJzOiBgeDI1X2Rlc3Ryb3lfdGltZXJgLCBgX194MjVfZGVzdHJveV9zb2NrZXRgLCBgeDI1X3N0YXJ0X2hlYXJ0YmVhdGAsIGB4MjVfc3RvcF9oZWFydGJlYXRgLCBhbmQgYWxsIHRoZSBgeDI1X3N0YXJ0X3QqdGltZXJgIGFuZCBgeDI1X3N0b3BfdGltZXJgIHZhcmlhbnRzLiBUaGUgZXhwaXJ5IGZ1bmN0aW9ucywgbGlrZSBgeDI1X2hlYXJ0YmVhdF9leHBpcnlgIGFuZCBgeDI1X3RpbWVyX2V4cGlyeWAsIGFyZSBhbHNvIHRoZXJlLgoKR2l2ZW4gdGhlIGNvbmNlbnRyYXRpb24gb24gdGhlc2UgdGltZXJzLCBteSBpbW1lZGlhdGUgZm9jdXMgd2lsbCBiZSBvbiB0aGUgZW50cnkgcG9pbnRzIGludG8gdGhlIFguMjUgc29ja2V0IGZ1bmN0aW9uYWxpdHkgdGhhdCBpbml0aWF0ZSBvciBpbnRlcmFjdCB3aXRoIHRoZXNlIHRpbWVycy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhdXNhbCByZWxhdGlvbnNoaXBzIGhlcmUuIEZvciBpbnN0YW5jZSwgYHgyNV9zdGFydF9oZWFydGJlYXRgIGxvb2tzIGltcG9ydGFudCwgYW5kIEkgc2VlIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGB4MjVfY3JlYXRlYCwgd2hpY2ggbWFrZXMgc2Vuc2UgYmVjYXVzZSB3ZSBzdGFydCBtb25pdG9yaW5nIGNvbm5lY3Rpb25zIHJpZ2h0IGF3YXksIGFuZCBhbHNvLCBpbXBvcnRhbnRseSwgZnJvbSBgeDI1X2Nvbm5lY3RgLiBTbywgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSwgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBmb3IgWC4yNSBzb2NrZXQgY3JlYXRpb24gYW5kIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudC4gSSBuZWVkIHRvIHNlZSB0aGUgY29tcGxldGUgbGlmZWN5Y2xlLiBUaGF0JiMzOTtzIHdoZXJlIEkgc2hvdWxkIGNvbmNlbnRyYXRlIG15IGVmZm9ydHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eDI1X2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94MjUvYWZfeDI1LmM9NTA0PXN0YXRpYyBzdHJ1Y3Qgc29jayAqeDI1X2FsbG9jX3NvY2tldChzdHJ1Y3QgbmV0ICpuZXQsIGludCBrZXJuKVxuLS1cbm5ldC94MjUvYWZfeDI1LmMtNTIyLVxubmV0L3gyNS9hZl94MjUuYzo1MjM6c3RhdGljIGludCB4MjVfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IHByb3RvY29sLFxubmV0L3gyNS9hZl94MjUuYy01MjQtXHRcdCAgICAgIGludCBrZXJuKVxuLS1cbm5ldC94MjUvYWZfeDI1LmM9MTYxOT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9wcm90b19mYW1pbHkgeDI1X2ZhbWlseV9vcHMgPSB7XG5uZXQveDI1L2FmX3gyNS5jLTE2MjAtXHQuZmFtaWx5ID1cdEFGX1gyNSxcbm5ldC94MjUvYWZfeDI1LmM6MTYyMTpcdC5jcmVhdGUgPVx0eDI1X2NyZWF0ZSxcbm5ldC94MjUvYWZfeDI1LmMtMTYyMi1cdC5vd25lclx0PVx0VEhJU19NT0RVTEUsXG4tLVxubmV0L3gyNS94MjVfZmFjaWxpdGllcy5jPTQxPWludCB4MjVfcGFyc2VfZmFjaWxpdGllcyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeDI1X2ZhY2lsaXRpZXMgKmZhY2lsaXRpZXMsXG4tLVxubmV0L3gyNS94MjVfZmFjaWxpdGllcy5jLTE4Ny0gKi9cbm5ldC94MjUveDI1X2ZhY2lsaXRpZXMuYzoxODg6aW50IHgyNV9jcmVhdGVfZmFjaWxpdGllcyh1bnNpZ25lZCBjaGFyICpidWZmZXIsXG5uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmMtMTg5LVx0XHRzdHJ1Y3QgeDI1X2ZhY2lsaXRpZXMgKmZhY2lsaXRpZXMsXG4tLVxubmV0L3gyNS94MjVfc3Vici5jPTExMD12b2lkIHgyNV93cml0ZV9pbnRlcm5hbChzdHJ1Y3Qgc29jayAqc2ssIGludCBmcmFtZXR5cGUpXG4tLVxubmV0L3gyNS94MjVfc3Vici5jLTE4Ny1cdFx0XHRza2JfcHV0X2RhdGEoc2tiLCBhZGRyZXNzZXMsIGxlbik7XG5uZXQveDI1L3gyNV9zdWJyLmM6MTg4Olx0XHRcdGxlbiAgICAgPSB4MjVfY3JlYXRlX2ZhY2lsaXRpZXMoZmFjaWxpdGllcyxcbm5ldC94MjUveDI1X3N1YnIuYy0xODktXHRcdFx0XHRcdFx1MDAyNngyNS1cdTAwM2VmYWNpbGl0aWVzLFxuLS1cbm5ldC94MjUveDI1X3N1YnIuYy0yMDEtXHRcdFx0KmRwdHImIzQzOyYjNDM7ID0gMHgwMDtcdFx0LyogQWRkcmVzcyBsZW5ndGhzICovXG5uZXQveDI1L3gyNV9zdWJyLmM6MjAyOlx0XHRcdGxlbiAgICAgPSB4MjVfY3JlYXRlX2ZhY2lsaXRpZXMoZmFjaWxpdGllcyxcbm5ldC94MjUveDI1X3N1YnIuYy0yMDMtXHRcdFx0XHRcdFx0XHRcdTAwMjZ4MjUtXHUwMDNlZmFjaWxpdGllcyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODE3CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkZ1enppbmcgWC4yNSAtIFRhcmdldHRpbmcgdGhlIEVudHJ5IFBvaW50cyoqCgpBbHJpZ2h0LCBpZiBJJiMzOTttIGdvaW5nIHRvIGZ1enogdGhpcyBYLjI1IGltcGxlbWVudGF0aW9uLCBJIG5lZWQgdG8gc3RhcnQgdGhpbmtpbmcgYWJvdXQgdGhlIGtleSBhdHRhY2sgc3VyZmFjZXMuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBvYnZpb3VzIHJvdXRlIGlzIHRocm91Z2ggdGhlIGV4cG9zZWQgc29ja2V0IG9wZXJhdGlvbnMuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCBuZWVkIHRvIGZvY3VzIG9uOiBgeDI1X2NyZWF0ZWAsIHdoaWNoIHNldHMgdXAgdGhlIGluaXRpYWwgc29ja2V0LiBUaGVuLCBgeDI1X2Nvbm5lY3RgLCBgeDI1X2JpbmRgLCBhbmQgYHgyNV9saXN0ZW5gLCB0aGF0IGhhbmRsZSBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQsIGFuZCB0aGUgb3Bwb3NpdGUgd2l0aCBgeDI1X2FjY2VwdGAsIGZvciB0aGUgbGlzdGVuaW5nIHNpZGUuIFRoZSByZWFsIG1lYXQgb2YgaXQsIHRob3VnaCwgaGFzIHRvIGJlIGluIHRoZSBkYXRhIGV4Y2hhbmdlLiBJJiMzOTttIGltYWdpbmluZyBJJiMzOTtsbCBuZWVkIHRvIHJlYWxseSBoYW1tZXIgYHgyNV9zZW5kbXNnYCBhbmQgYHgyNV9yZWN2bXNnYCB3aXRoIG1hbGZvcm1lZCBwYWNrZXRzLCBhbmQgdGhlbiBJIGNhbiByZWxlYXNlIHJlc291cmNlcyB3aXRoIGB4MjVfcmVsZWFzZWAuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGVuZXJnaWVzIGFuZCB3aGVyZSBJJiMzOTttIGdvaW5nIHRvIGZpbmQgdGhlIHJlYWwgYnVncywgSSBzdXNwZWN0LiBUaGUgb3RoZXIgZW50cmllcyBwcm92aWRlIHRoZSBzZXR1cCBhbmQgdGVhcmRvd24sIGJ1dCB0aGUgbWVhdCBpcyBpbiBzZW5kaW5nIGFuZCByZWNlaXZpbmcgZGF0YSBvbiB0aGlzIHByb3RvY29sLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4MjVfY29ubmVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94MjUvYWZfeDI1LmM9NzA4PXN0YXRpYyBpbnQgeDI1X3dhaXRfZm9yX2Nvbm5lY3Rpb25fZXN0YWJsaXNobWVudChzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L3gyNS9hZl94MjUuYy03NDEtXG5uZXQveDI1L2FmX3gyNS5jOjc0MjpzdGF0aWMgaW50IHgyNV9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1YWRkcixcbm5ldC94MjUvYWZfeDI1LmMtNzQzLVx0XHQgICAgICAgaW50IGFkZHJfbGVuLCBpbnQgZmxhZ3MpXG4tLVxubmV0L3gyNS9hZl94MjUuYz0xNzM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHgyNV9wcm90b19vcHMgPSB7XG4tLVxubmV0L3gyNS9hZl94MjUuYy0xNzM4LVx0LmJpbmQgPVx0XHR4MjVfYmluZCxcbm5ldC94MjUvYWZfeDI1LmM6MTczOTpcdC5jb25uZWN0ID1cdHgyNV9jb25uZWN0LFxubmV0L3gyNS9hZl94MjUuYy0xNzQwLVx0LnNvY2tldHBhaXIgPVx0c29ja19ub19zb2NrZXRwYWlyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDU4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoZSByZWxldmFudCBmaWVsZDoKCioqQXNzZXNzaW5nIHRoZSBTdGF0dXMgb2YgYHgyNV9yZWxlYXNlYCoqCgpBbHJpZ2h0LCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcyB0byBjaGVjayBgeDI1X3JlbGVhc2VgLiBUaGF04oCZcyBteSBwcmltYXJ5IHBvaW50IG9mIGZvY3VzLiBJdCYjMzk7cyB0aGUga2V5IHZhcmlhYmxlIG9yIG1vZHVsZSBpbiBxdWVzdGlvbi4gSSBuZWVkIHRvIGtub3cgdGhlIGN1cnJlbnQgc3RhdGUuIElzIGl0IHN0YWJsZSwgc3RpbGwgaW4gZGV2ZWxvcG1lbnQsIHJlYWR5IGZvciBwcm9kdWN0aW9uLCBvciBleHBlcmllbmNpbmcgaXNzdWVzPyBLbm93aW5nIHRoZSBzdGF0dXMgb2YgYHgyNV9yZWxlYXNlYCBpcyB0aGUgbW9zdCBsb2dpY2FsIG5leHQgc3RlcC4gSSBuZWVkIGEgcXVpY2sgb3ZlcnZpZXcgb2YgaXRzIGNvbmRpdGlvbiBiZWZvcmUgbW92aW5nIGZvcndhcmQgd2l0aCBhbnl0aGluZyBlbHNlIHJlbGF0ZWQgdG8gdGhlIHByb2plY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3gyNV9yZWxlYXNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3gyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3gyNS9hZl94MjUuYz01ODM9c3RhdGljIHN0cnVjdCBzb2NrICp4MjVfbWFrZV9uZXcoc3RydWN0IHNvY2sgKm9zaylcbi0tXG5uZXQveDI1L2FmX3gyNS5jLTYyMC1cbm5ldC94MjUvYWZfeDI1LmM6NjIxOnN0YXRpYyBpbnQgeDI1X3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcbm5ldC94MjUvYWZfeDI1LmMtNjIyLXtcbi0tXG5uZXQveDI1L2FmX3gyNS5jPTE3MzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgeDI1X3Byb3RvX29wcyA9IHtcbi0tXG5uZXQveDI1L2FmX3gyNS5jLTE3MzYtXHQub3duZXIgPVx0VEhJU19NT0RVTEUsXG5uZXQveDI1L2FmX3gyNS5jOjE3Mzc6XHQucmVsZWFzZSA9XHR4MjVfcmVsZWFzZSxcbm5ldC94MjUvYWZfeDI1LmMtMTczOC1cdC5iaW5kID1cdFx0eDI1X2JpbmQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4OTEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBYLjI1IFRpbWVyIEhhbmRsaW5nIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3BlY2lmaWNhbGx5IGFkZHJlc3NpbmcgdGltZXIgYmVoYXZpb3Igd2l0aGluIHRoZSBYLjI1IGNvZGUuIFRoYXQgbWVhbnMgdGhlIGtleSBmdW5jdGlvbnMgdG8gZXhhbWluZSBhcmUgdGhvc2UgdGhhdCBpbnRlcmFjdCB3aXRoIHRpbWVycywgbGlrZWx5IGR1cmluZyBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQsIHRlYXJkb3duLCBhbmQgZGF0YSB0cmFuc2Zlci4gQmFzZWQgb24gdGhhdCwgSSYjMzk7bSB0aGlua2luZyB0aGUgcHJpbWFyeSBzeW1ib2xzIHRvIGZvY3VzIG9uIGFyZSBgeDI1X2Nvbm5lY3RgLCBgeDI1X3JlbGVhc2VgLCBgeDI1X3NlbmRtc2dgLCBhbmQgYHgyNV9yZWN2bXNnYC4gVGhhdCBsb29rcyBnb29kLgoKTm93LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwLCBsZXQgbWUgcXVpY2tseSB2ZXJpZnkgdGhhdCB0aGUgYENPTkZJR19YMjVgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIHN1ZmZpY2llbnQgZm9yIHRoaXMgcGF0Y2ggdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBKdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGVuc3VyZSB0aGUgbmVjZXNzYXJ5IGNvZGUgcGF0aHMgYXJlIGVuYWJsZWQuIFllcCwgc2VlbXMgbGlrZSBpdC4KCk5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGVzZSB0aW1lci1yZWxhdGVkIGZ1bmN0aW9ucy4gTGV0IG1lIGNoZWNrIHRoZSB2aXNpYmlsaXR5IG9mIHNvbWUgb2YgdGhlIHRpbWVyIGZ1bmN0aW9ucyB0aGVtc2VsdmVzLiBgeDI1X2Rlc3Ryb3lfdGltZXJgIGlzIHN0YXRpYywgZ29vZC4gU28gaXMgYF9feDI1X2Rlc3Ryb3lfc29ja2V0YC4gYHgyNV9zdGFydF9oZWFydGJlYXRgLCBldmVuIHRob3VnaCBpdCYjMzk7cyBub3Qgc3RhdGljLCBpcyBhbiBpbnRlcm5hbCBoZWxwZXIgc28gaXQgc2hvdWxkbiYjMzk7dCBtYXR0ZXIgdG9vIG11Y2guIGB4MjVfaGVhcnRiZWF0X2V4cGlyeWAgYW5kIGB4MjVfdGltZXJfZXhwaXJ5YCBhcmUgYm90aCBzdGF0aWMuIFNvIHRoaXMgY29uZmlybXMgbXkgaW5pdGlhbCB0aG91Z2h0IGFib3V0IHRoZSBzb2NrZXQgb3BlcmF0aW9ucy4KClRoZSBtb3JlIEkgbG9vayBhdCB0aGlzLCB0aGUgbW9yZSBJIHJlYWxpemUgbXkgcHJldmlvdXMgbGlzdCBvZiBmb2N1cyBzeW1ib2xzIHNob3VsZCBlbmNvbXBhc3MgYWxsIHNvY2tldCBvcGVyYXRpb25zIHRoYXQgbWlnaHQgdHJpZ2dlciB0aGVzZSB0aW1lcnMuIFNvLCB0byBiZSBjb21wbGV0ZSwgSSBuZWVkIHRvIGluY2x1ZGU6IGB4MjVfY29ubmVjdGAsIGB4MjVfcmVsZWFzZWAsIGB4MjVfYmluZGAsIGB4MjVfbGlzdGVuYCwgYHgyNV9hY2NlcHRgLCBgeDI1X3NlbmRtc2dgLCBhbmQgYHgyNV9yZWN2bXNnYC4KCkp1c3QgdG8gY292ZXIgYWxsIGJhc2VzLCBsZXQgbWUgY2hlY2sgdGhlIHZpc2liaWxpdHkgb2YgYHgyNV9jcmVhdGVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4MjVfY3JlYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3gyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3gyNS9hZl94MjUuYz01MDQ9c3RhdGljIHN0cnVjdCBzb2NrICp4MjVfYWxsb2Nfc29ja2V0KHN0cnVjdCBuZXQgKm5ldCwgaW50IGtlcm4pXG4tLVxubmV0L3gyNS9hZl94MjUuYy01MjItXG5uZXQveDI1L2FmX3gyNS5jOjUyMzpzdGF0aWMgaW50IHgyNV9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgcHJvdG9jb2wsXG5uZXQveDI1L2FmX3gyNS5jLTUyNC1cdFx0ICAgICAgaW50IGtlcm4pXG4tLVxubmV0L3gyNS9hZl94MjUuYz0xNjE5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X3Byb3RvX2ZhbWlseSB4MjVfZmFtaWx5X29wcyA9IHtcbm5ldC94MjUvYWZfeDI1LmMtMTYyMC1cdC5mYW1pbHkgPVx0QUZfWDI1LFxubmV0L3gyNS9hZl94MjUuYzoxNjIxOlx0LmNyZWF0ZSA9XHR4MjVfY3JlYXRlLFxubmV0L3gyNS9hZl94MjUuYy0xNjIyLVx0Lm93bmVyXHQ9XHRUSElTX01PRFVMRSxcbi0tXG5uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmM9NDE9aW50IHgyNV9wYXJzZV9mYWNpbGl0aWVzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4MjVfZmFjaWxpdGllcyAqZmFjaWxpdGllcyxcbi0tXG5uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmMtMTg3LSAqL1xubmV0L3gyNS94MjVfZmFjaWxpdGllcy5jOjE4ODppbnQgeDI1X2NyZWF0ZV9mYWNpbGl0aWVzKHVuc2lnbmVkIGNoYXIgKmJ1ZmZlcixcbm5ldC94MjUveDI1X2ZhY2lsaXRpZXMuYy0xODktXHRcdHN0cnVjdCB4MjVfZmFjaWxpdGllcyAqZmFjaWxpdGllcyxcbi0tXG5uZXQveDI1L3gyNV9zdWJyLmM9MTEwPXZvaWQgeDI1X3dyaXRlX2ludGVybmFsKHN0cnVjdCBzb2NrICpzaywgaW50IGZyYW1ldHlwZSlcbi0tXG5uZXQveDI1L3gyNV9zdWJyLmMtMTg3LVx0XHRcdHNrYl9wdXRfZGF0YShza2IsIGFkZHJlc3NlcywgbGVuKTtcbm5ldC94MjUveDI1X3N1YnIuYzoxODg6XHRcdFx0bGVuICAgICA9IHgyNV9jcmVhdGVfZmFjaWxpdGllcyhmYWNpbGl0aWVzLFxubmV0L3gyNS94MjVfc3Vici5jLTE4OS1cdFx0XHRcdFx0XHUwMDI2eDI1LVx1MDAzZWZhY2lsaXRpZXMsXG4tLVxubmV0L3gyNS94MjVfc3Vici5jLTIwMS1cdFx0XHQqZHB0ciYjNDM7JiM0MzsgPSAweDAwO1x0XHQvKiBBZGRyZXNzIGxlbmd0aHMgKi9cbm5ldC94MjUveDI1X3N1YnIuYzoyMDI6XHRcdFx0bGVuICAgICA9IHgyNV9jcmVhdGVfZmFjaWxpdGllcyhmYWNpbGl0aWVzLFxubmV0L3gyNS94MjVfc3Vici5jLTIwMy1cdFx0XHRcdFx0XHRcdFx1MDAyNngyNS1cdTAwM2VmYWNpbGl0aWVzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4Mjc0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlguMjUgRnVuY3Rpb24gQ2FsbCBBbmFseXNpcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBYLjI1IGNvZGUsIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgYXQgbWUgaXMgdGhhdCB0aGVzZSBjb3JlIGZ1bmN0aW9ucywgYHgyNV9jcmVhdGVgLCBgeDI1X2Nvbm5lY3RgLCBgeDI1X3JlbGVhc2VgLCBgeDI1X2JpbmRgLCBgeDI1X2xpc3RlbmAsIGB4MjVfYWNjZXB0YCwgYHgyNV9zZW5kbXNnYCwgYW5kIGB4MjVfcmVjdm1zZ2AgYXJlIGFsbCBkZWNsYXJlZCBhcyBgc3RhdGljYC4gVGhhdCYjMzk7cyB1bnVzdWFsLCBhbmQgaW1tZWRpYXRlbHkgcmFpc2VzIGEgcXVlc3Rpb24gaW4gbXkgbWluZC4KCklmIHRoZXNlIGNyaXRpY2FsIG5ldHdvcmsgZnVuY3Rpb25zIGFyZSBgc3RhdGljYCwgdGhleSYjMzk7cmUgb25seSB2aXNpYmxlIHdpdGhpbiB0aGUgY29tcGlsYXRpb24gdW5pdCBpbiBgbmV0L3gyNS9hZl94MjUuY2AuIEJ1dCB0aGF0IGNhbiYjMzk7dCBiZSAqYWxsKiB0aGVyZSBpcyB0byBYLjI1LCBjYW4gaXQ/IFRoZXJlICptdXN0KiBiZSBwdWJsaWMgZW50cnkgcG9pbnRzIHNvbWV3aGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwgYXJlIHN1cHBvc2VkIHRvIGludGVyYWN0IHdpdGggdGhlIFguMjUgc3RhY2suIFNvLCB0aGUgZm9sbG93LXVwIHF1ZXN0aW9uIGlzOiBXaGVyZSBhcmUgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGRlZmluZWQgaW4gYG5ldC94MjUvYWZfeDI1LmNgPyBXaGF0IGFyZSB0aGUgaW50ZXJmYWNlIHBvaW50cyBpbnRvIHRoZSBYLjI1IGxheWVyPyBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gZGlnIGRlZXBlciBoZXJlLiBUaGVyZSBoYXMgdG8gYmUgYSBtZWNoYW5pc20gZm9yIG90aGVyIGtlcm5lbCBtb2R1bGVzIHRvIGNhbGwgaW50byB0aGlzIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15pbnQgeDI1XyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94MjUvYWZfeDI1LmM9NzY9c3RydWN0IGNvbXBhdF94MjVfc3Vic2NyaXBfc3RydWN0IHtcbi0tXG5uZXQveDI1L2FmX3gyNS5jLTgzLVxubmV0L3gyNS9hZl94MjUuYzo4NDppbnQgeDI1X3BhcnNlX2FkZHJlc3NfYmxvY2soc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC94MjUvYWZfeDI1LmMtODUtXHRcdHN0cnVjdCB4MjVfYWRkcmVzcyAqY2FsbGVkX2FkZHIsXG4tLVxubmV0L3gyNS9hZl94MjUuYy0xMTctXG5uZXQveDI1L2FmX3gyNS5jOjExODppbnQgeDI1X2FkZHJfbnRvYSh1bnNpZ25lZCBjaGFyICpwLCBzdHJ1Y3QgeDI1X2FkZHJlc3MgKmNhbGxlZF9hZGRyLFxubmV0L3gyNS9hZl94MjUuYy0xMTktXHRcdCAgc3RydWN0IHgyNV9hZGRyZXNzICpjYWxsaW5nX2FkZHIpXG4tLVxubmV0L3gyNS9hZl94MjUuYy0xNTQtXG5uZXQveDI1L2FmX3gyNS5jOjE1NTppbnQgeDI1X2FkZHJfYXRvbih1bnNpZ25lZCBjaGFyICpwLCBzdHJ1Y3QgeDI1X2FkZHJlc3MgKmNhbGxlZF9hZGRyLFxubmV0L3gyNS9hZl94MjUuYy0xNTYtXHRcdCAgc3RydWN0IHgyNV9hZGRyZXNzICpjYWxsaW5nX2FkZHIpXG4tLVxubmV0L3gyNS9hZl94MjUuYz05MTI9c3RhdGljIGludCB4MjVfZ2V0bmFtZShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLFxuLS1cbm5ldC94MjUvYWZfeDI1LmMtOTM1LVxubmV0L3gyNS9hZl94MjUuYzo5MzY6aW50IHgyNV9yeF9jYWxsX3JlcXVlc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHgyNV9uZWlnaCAqbmIsXG5uZXQveDI1L2FmX3gyNS5jLTkzNy1cdFx0XHR1bnNpZ25lZCBpbnQgbGNpKVxuLS1cbm5ldC94MjUveDI1X2Rldi5jPTI2PXN0YXRpYyBpbnQgeDI1X3JlY2VpdmVfZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeDI1X25laWdoICpuYilcbi0tXG5uZXQveDI1L3gyNV9kZXYuYy05My1cbm5ldC94MjUveDI1X2Rldi5jOjk0OmludCB4MjVfbGFwYl9yZWNlaXZlX2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5uZXQveDI1L3gyNV9kZXYuYy05NS1cdFx0XHQgICBzdHJ1Y3QgcGFja2V0X3R5cGUgKnB0eXBlLCBzdHJ1Y3QgbmV0X2RldmljZSAqb3JpZ19kZXYpXG4tLVxubmV0L3gyNS94MjVfZmFjaWxpdGllcy5jLTQwLSAqL1xubmV0L3gyNS94MjVfZmFjaWxpdGllcy5jOjQxOmludCB4MjVfcGFyc2VfZmFjaWxpdGllcyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeDI1X2ZhY2lsaXRpZXMgKmZhY2lsaXRpZXMsXG5uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmMtNDItXHRcdHN0cnVjdCB4MjVfZHRlX2ZhY2lsaXRpZXMgKmR0ZV9mYWNzLCB1bnNpZ25lZCBsb25nICp2Y19mYWNfbWFzaylcbi0tXG5uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmMtMTg3LSAqL1xubmV0L3gyNS94MjVfZmFjaWxpdGllcy5jOjE4ODppbnQgeDI1X2NyZWF0ZV9mYWNpbGl0aWVzKHVuc2lnbmVkIGNoYXIgKmJ1ZmZlcixcbm5ldC94MjUveDI1X2ZhY2lsaXRpZXMuYy0xODktXHRcdHN0cnVjdCB4MjVfZmFjaWxpdGllcyAqZmFjaWxpdGllcyxcbi0tXG5uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmMtMjY0LSAqL1xubmV0L3gyNS94MjVfZmFjaWxpdGllcy5jOjI2NTppbnQgeDI1X25lZ290aWF0ZV9mYWNpbGl0aWVzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrICpzayxcbm5ldC94MjUveDI1X2ZhY2lsaXRpZXMuYy0yNjYtXHRcdHN0cnVjdCB4MjVfZmFjaWxpdGllcyAqbmV3LCBzdHJ1Y3QgeDI1X2R0ZV9mYWNpbGl0aWVzICpkdGUpXG4tLVxubmV0L3gyNS94MjVfZm9yd2FyZC5jPTE1PURFRklORV9SV0xPQ0soeDI1X2ZvcndhcmRfbGlzdF9sb2NrKTtcbm5ldC94MjUveDI1X2ZvcndhcmQuYy0xNi1cbm5ldC94MjUveDI1X2ZvcndhcmQuYzoxNzppbnQgeDI1X2ZvcndhcmRfY2FsbChzdHJ1Y3QgeDI1X2FkZHJlc3MgKmRlc3RfYWRkciwgc3RydWN0IHgyNV9uZWlnaCAqZnJvbSxcbm5ldC94MjUveDI1X2ZvcndhcmQuYy0xOC1cdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbGNpKVxuLS1cbm5ldC94MjUveDI1X2ZvcndhcmQuYy04OC1cbm5ldC94MjUveDI1X2ZvcndhcmQuYzo4OTppbnQgeDI1X2ZvcndhcmRfZGF0YShpbnQgbGNpLCBzdHJ1Y3QgeDI1X25laWdoICpmcm9tLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKSB7XG5uZXQveDI1L3gyNV9mb3J3YXJkLmMtOTAtXG4tLVxubmV0L3gyNS94MjVfaW4uYz0zOTM9c3RhdGljIGludCB4MjVfc3RhdGU1X21hY2hpbmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZnJhbWV0eXBlKVxuLS1cbm5ldC94MjUveDI1X2luLmMtNDE3LS8qIEhpZ2hlciBsZXZlbCB1cGNhbGwgZm9yIGEgTEFQQiBmcmFtZSAqL1xubmV0L3gyNS94MjVfaW4uYzo0MTg6aW50IHgyNV9wcm9jZXNzX3J4X2ZyYW1lKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC94MjUveDI1X2luLmMtNDE5LXtcbi0tXG5uZXQveDI1L3gyNV9pbi5jLTQ1MC1cbm5ldC94MjUveDI1X2luLmM6NDUxOmludCB4MjVfYmFja2xvZ19yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L3gyNS94MjVfaW4uYy00NTIte1xuLS1cbm5ldC94MjUveDI1X2xpbmsuYz0zMzI9c3RydWN0IHgyNV9uZWlnaCAqeDI1X2dldF9uZWlnaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC94MjUveDI1X2xpbmsuYy0zNTItICovXG5uZXQveDI1L3gyNV9saW5rLmM6MzUzOmludCB4MjVfc3Vic2NyX2lvY3RsKHVuc2lnbmVkIGludCBjbWQsIHZvaWQgX191c2VyICphcmcpXG5uZXQveDI1L3gyNV9saW5rLmMtMzU0LXtcbi0tXG5uZXQveDI1L3gyNV9vdXQuYz0yOD1zdGF0aWMgaW50IHgyNV9wYWNzaXplX3RvX2J5dGVzKHVuc2lnbmVkIGludCBwYWNzaXplKVxuLS1cbm5ldC94MjUveDI1X291dC5jLTQ2LSAqL1xubmV0L3gyNS94MjVfb3V0LmM6NDc6aW50IHgyNV9vdXRwdXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L3gyNS94MjVfb3V0LmMtNDgte1xuLS1cbm5ldC94MjUveDI1X3JvdXRlLmM9MTM1PXN0cnVjdCB4MjVfcm91dGUgKngyNV9nZXRfcm91dGUoc3RydWN0IHgyNV9hZGRyZXNzICphZGRyKVxuLS1cbm5ldC94MjUveDI1X3JvdXRlLmMtMTU5LSAqL1xubmV0L3gyNS94MjVfcm91dGUuYzoxNjA6aW50IHgyNV9yb3V0ZV9pb2N0bCh1bnNpZ25lZCBpbnQgY21kLCB2b2lkIF9fdXNlciAqYXJnKVxubmV0L3gyNS94MjVfcm91dGUuYy0xNjEte1xuLS1cbm5ldC94MjUveDI1X3N1YnIuYz02OT12b2lkIHgyNV9yZXF1ZXVlX2ZyYW1lcyhzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L3gyNS94MjVfc3Vici5jLTkwLSAqL1xubmV0L3gyNS94MjVfc3Vici5jOjkxOmludCB4MjVfdmFsaWRhdGVfbnIoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBzaG9ydCBucilcbm5ldC94MjUveDI1X3N1YnIuYy05Mi17XG4tLVxubmV0L3gyNS94MjVfc3Vici5jPTExMD12b2lkIHgyNV93cml0ZV9pbnRlcm5hbChzdHJ1Y3Qgc29jayAqc2ssIGludCBmcmFtZXR5cGUpXG4tLVxubmV0L3gyNS94MjVfc3Vici5jLTI2MC0gKi9cbm5ldC94MjUveDI1X3N1YnIuYzoyNjE6aW50IHgyNV9kZWNvZGUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKm5zLCBpbnQgKm5yLCBpbnQgKnEsXG5uZXQveDI1L3gyNV9zdWJyLmMtMjYyLVx0ICAgICAgIGludCAqZCwgaW50ICptKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDY3OAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDYyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBUaG91Z2h0IFByb2Nlc3Mgb24gSWRlbnRpZnlpbmcgRm9jdXMgU3ltYm9scyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gY2hvb3NlIHNvbWUgZ29vZCBmb2N1cyBzeW1ib2xzIGZvciB0aGlzIGFuYWx5c2lzLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSB3YW50cyBtZSB0byBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zLCBub3QgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIEkgaW5pdGlhbGx5IGNvbnNpZGVyZWQgdGhlIGNvcmUgWC4yNSBzb2NrZXQgb3BlcmF0aW9uczogYHgyNV9jcmVhdGVgLCBgeDI1X2Nvbm5lY3RgLCBgeDI1X3JlbGVhc2VgLCBgeDI1X2JpbmRgLCBgeDI1X2xpc3RlbmAsIGB4MjVfYWNjZXB0YCwgYHgyNV9zZW5kbXNnYCwgYW5kIGB4MjVfcmVjdm1zZ2AuIFRoZXNlIHNlZW0gbGlrZSB0aGUgb2J2aW91cyBjYW5kaWRhdGVzIHNpbmNlIHRoZXkgYXJlIHRoZSBtYWluIHNvY2tldCBvcGVyYXRpb25zLiBCdXQsIGFyZSB0aGV5IGlubGluZWQ/CgpJIHJlbWVtYmVyIHRoZXNlIGZ1bmN0aW9ucyBhcmUgcGFzc2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzIHdpdGhpbiBgeDI1X3Byb3RvX29wc2AgYW5kIGB4MjVfZmFtaWx5X29wc2AuIFNvIHRoZXkgKnNob3VsZG4mIzM5O3QqIGJlIGlubGluZWQuIFRoYXQgbWVhbnMgdGhleSBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMsIG1ha2luZyB0aGVtIHZhbGlkIGZvY3VzIHN5bWJvbHMuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgY29uZmlybSB0aGF0IGB4MjVfY29ubmVjdGAgaXMgaW5kZWVkIHBhc3NlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIuIFllcywgY29uZmlybWVkLiBHb29kLCB0aGV5IGFyZSB2aWFibGUuCgpOZXh0LCBJJiMzOTtsbCBxdWlja2x5IHNjYW4gdGhlIGZ1bmN0aW9ucyBpbiBgeDI1X3RpbWVyLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHByb21pc2luZyBjYW5kaWRhdGVzLiBJIHNlZSBmdW5jdGlvbnMgbGlrZSBgeDI1X3N0YXJ0X2hlYXJ0YmVhdGAsIGB4MjVfc3RvcF9oZWFydGJlYXRgLCBgeDI1X3N0YXJ0X3QydGltZXJgLCBldGMuIFRoZXNlIGFyZSBub24tc3RhdGljIGJ1dCBzZWVtIHRvIGJlIGludGVybmFsLiBJIG5lZWQgdG8gY2hlY2sgaWYgdGhleSBhcmUgZXhwb3J0ZWQgb3IganVzdCB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCB0aGV5IGFyZSBtb3N0bHkgbW9kdWxlLWludGVybmFsLCBzbyBwcm9iYWJseSBub3QgZ29vZCBjYW5kaWRhdGVzIGZvciBkaXJlY3QgZm9jdXMuIEkgdGhlbiBjb25zaWRlciBgeDI1X2luaXRfdGltZXJzYCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgeDI1X2FsbG9jX3NvY2tldGAsIGFuZCBgeDI1X3N0YXJ0X2hlYXJ0YmVhdGAgd2hpY2ggaXMgY2FsbGVkIGZyb20gYHgyNV9hbGxvY19zb2NrZXRgIGFuZCBgeDI1X2hlYXJ0YmVhdF9leHBpcnlgLgoKVGhpbmtpbmcgbW9yZSBicm9hZGx5LCBJIG5lZWQgdG8gbG9vayBmb3IgZnVuY3Rpb25zIHRoYXQgYXJlIGNyaXRpY2FsIHRvIHRoZSBiZWhhdmlvciBiZWluZyBtb2RpZmllZC4gQmVzaWRlcyB0aGUgc29ja2V0IG9wZXJhdGlvbnMsIEkgc2hvdWxkIGNvbnNpZGVyIHRoZSBmdW5jdGlvbnMgdGhhdCBoYW5kbGUgZnJhbWUgcmVjZXB0aW9uIGFuZCB0aW1lciBleHBpcnkuIE15IGZpcnN0IHBhc3MgYXQgcG90ZW50aWFsIGNhbmRpZGF0ZXMgYXJlOiBgeDI1X2Nvbm5lY3RgLCBgeDI1X3JlbGVhc2VgLCBgeDI1X3J4X2NhbGxfcmVxdWVzdGAsIGB4MjVfbGFwYl9yZWNlaXZlX2ZyYW1lYCwgYHgyNV9wcm9jZXNzX3J4X2ZyYW1lYCwgYHgyNV90aW1lcl9leHBpcnlgLCBhbmQgYHgyNV9oZWFydGJlYXRfZXhwaXJ5YC4KCldhaXQgYSBtaW51dGUsIGB4MjVfdGltZXJfZXhwaXJ5YCBhbmQgYHgyNV9oZWFydGJlYXRfZXhwaXJ5YCBhcmUgdGhlICphY3R1YWwqIHRpbWVyIGNhbGxiYWNrcywgYW5kIHRoZXkgd2VyZSB0aGUgdGFyZ2V0cyBvZiB0aGUgbW9kaWZpY2F0aW9ucyEgVGhleSBhcmUgc3RhdGljLCBidXQgSSByZW1lbWJlciB0aGV5JiMzOTtyZSBwYXNzZWQgdG8gYHRpbWVyX3NldHVwYC4gVGhpcyBtZWFucyB0aGV5IGFyZSAqbm90KiBpbmxpbmVkIGFuZCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIFRoZXkgYXJlICpleGNlbGxlbnQqIGZvY3VzIHN5bWJvbHMuIFRoZXkgYXJlIHRoZSBjb3JlIG9mIHRoZSB0aW1lciBsb2dpYyBJIGFtIGxvb2tpbmcgYXQuIEkgd2lsbCBub3cgZXhhbWluZSB0aGVzZSBjbG9zZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4MjVfdGltZXJfZXhwaXJ5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3gyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3gyNS94MjVfdGltZXIuYz0yND1zdGF0aWMgdm9pZCB4MjVfaGVhcnRiZWF0X2V4cGlyeShzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7XG5uZXQveDI1L3gyNV90aW1lci5jOjI1OnN0YXRpYyB2b2lkIHgyNV90aW1lcl9leHBpcnkoc3RydWN0IHRpbWVyX2xpc3QgKnQpO1xubmV0L3gyNS94MjVfdGltZXIuYy0yNi1cbm5ldC94MjUveDI1X3RpbWVyLmM9Mjc9dm9pZCB4MjVfaW5pdF90aW1lcnMoc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC94MjUveDI1X3RpbWVyLmMtMzAtXG5uZXQveDI1L3gyNV90aW1lci5jOjMxOlx0dGltZXJfc2V0dXAoXHUwMDI2eDI1LVx1MDAzZXRpbWVyLCB4MjVfdGltZXJfZXhwaXJ5LCAwKTtcbm5ldC94MjUveDI1X3RpbWVyLmMtMzItXG4tLVxubmV0L3gyNS94MjVfdGltZXIuYz0xMzc9c3RhdGljIGlubGluZSB2b2lkIHgyNV9kb190aW1lcl9leHBpcnkoc3RydWN0IHNvY2sgKiBzaylcbi0tXG5uZXQveDI1L3gyNV90aW1lci5jLTE2Mi1cbm5ldC94MjUveDI1X3RpbWVyLmM6MTYzOnN0YXRpYyB2b2lkIHgyNV90aW1lcl9leHBpcnkoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG5uZXQveDI1L3gyNV90aW1lci5jLTE2NC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMjgwCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkFuYWx5emluZyB0aGUgVGltZXIgQ2FsbGJhY2sgQ2hhbmdlcyoqCgpSaWdodCwgc28gSSBzZWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aW1lciBjYWxsYmFja3MgaW4gdGhpcyBwYXRjaC4gU3BlY2lmaWNhbGx5LCBgeDI1X3RpbWVyX2V4cGlyeWAgYW5kIGB4MjVfaGVhcnRiZWF0X2V4cGlyeWAgYXJlIHRoZSB0d28gbWFpbiBjYWxsYmFja3MgdGhhdCBoYXZlIGJlZW4gaWRlbnRpZmllZCBhcyB0aW1lci1yZWxhdGVkIGluIHRoaXMgc2VjdGlvbiBvZiBjb2RlLiBNYWtlcyBwZXJmZWN0IHNlbnNlOyB0aGV5JiMzOTtyZSBuYW1lZCBhZnRlciBleHBpcnkgZXZlbnRzLCBzbyB0aGF0JiMzOTtzIGEgcHJldHR5IGNsZWFyIGluZGljYXRvci4gQW5kIGxldCYjMzk7cyBub3QgZm9yZ2V0IGB4MjVfZGVzdHJveV90aW1lcmAuIEl0JiMzOTtzIGFub3RoZXIgY2FsbGJhY2sgZnVuY3Rpb24sIHRoaXMgb25lIGRlYWxpbmcgd2l0aCB0aW1lciBkZXN0cnVjdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aG9zZSB0aHJlZSBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSwgdG8gZnVsbHkgZ3Jhc3Agd2hhdCB0aGlzIHBhdGNoIGlzIGRvaW5nIHdpdGggWC4yNSB0aW1lcnMuIFRoZSBjaGFuZ2VzIGNvdWxkIGludm9sdmUgaG93IHRoZSB0aW1lcnMgYXJlIGluaXRpYWxpemVkLCBob3cgdGhlaXIgZXhwaXJhdGlvbnMgYXJlIGhhbmRsZWQsIG9yIGV2ZW4gdGhlIHByb2Nlc3Mgb2YgY2xlYW5pbmcgdXAgdGhlc2UgdGltZXJzLiBUaW1lIHRvIGRpdmUgZGVlcGVyIGFuZCBhbmFseXplIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4MjVfZGVzdHJveV90aW1lciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94MjUvYWZfeDI1LmM9MzU2PXN0YXRpYyB2b2lkIF9feDI1X2Rlc3Ryb3lfc29ja2V0KHN0cnVjdCBzb2NrICopO1xuLS1cbm5ldC94MjUvYWZfeDI1LmMtMzYwLSAqL1xubmV0L3gyNS9hZl94MjUuYzozNjE6c3RhdGljIHZvaWQgeDI1X2Rlc3Ryb3lfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG5uZXQveDI1L2FmX3gyNS5jLTM2Mi17XG4tLVxubmV0L3gyNS9hZl94MjUuYz0zNzY9c3RhdGljIHZvaWQgX194MjVfZGVzdHJveV9zb2NrZXQoc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC94MjUvYWZfeDI1LmMtNDAxLVx0XHQvKiBEZWZlcjogb3V0c3RhbmRpbmcgYnVmZmVycyAqL1xubmV0L3gyNS9hZl94MjUuYzo0MDI6XHRcdHNrLVx1MDAzZXNrX3RpbWVyLmZ1bmN0aW9uID0geDI1X2Rlc3Ryb3lfdGltZXI7XG5uZXQveDI1L2FmX3gyNS5jLTQwMy1cdFx0c2tfcmVzZXRfdGltZXIoc2ssIFx1MDAyNnNrLVx1MDAzZXNrX3RpbWVyLCBqaWZmaWVzICYjNDM7IDEwICogSFopO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjgzMgoJCQkJCQkJb3V0cHV0OiAxODgKCQkJCQkJCXRob3VnaHRzOiA4NDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqWC4yNSBUaW1lciBGaXhlcyBhbmQgRnV6emluZyBTdHJhdGVneSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBYLjI1IHBhdGNoIGFuZCBJJiMzOTt2ZSBnb3QgYSBnb29kIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGdvaW5nIG9uLiBUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGZpeGluZyBzb21lIHRpbWVyIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZXMsIHdoaWNoLCBpZiBsZWZ0IHVuZml4ZWQsIGNvdWxkIGRlZmluaXRlbHkgbGVhZCB0byBzb21lIG5hc3R5IG1lbW9yeSBtYW5hZ2VtZW50IHByb2JsZW1zIGRvd24gdGhlIGxpbmUuIEkmIzM5O20gdGhpbmtpbmcsIHRoaXMgZGVmaW5pdGVseSBuZWVkcyBmdXp6aW5nLgoKTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBpZGVudGlmeSBmb2N1cyBzeW1ib2xzLiBJIHRoaW5rIHRoZXNlIGFyZSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRvIHRhcmdldDogYHgyNV9kZXN0cm95X3RpbWVyYCwgYHgyNV9oZWFydGJlYXRfZXhwaXJ5YCwgYHgyNV90aW1lcl9leHBpcnlgLCBgeDI1X2Nvbm5lY3RgLCBgeDI1X3JlbGVhc2VgLiBIb3dldmVyLCBJJiMzOTt2ZSBleHBhbmRlZCB0aGUgbGlzdCB0byBpbmNsdWRlIGB4MjVfYmluZGAsIGB4MjVfbGlzdGVuYCwgYW5kIGB4MjVfYWNjZXB0YCBhcyB3ZWxsLCBhcyB0aGV5IGFyZSBlc3NlbnRpYWwgZW50cnkgcG9pbnRzIGludG8gWC4yNSBzb2NrZXQgdXNhZ2UuCgpXYWl0IGEgbWludXRlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGZ1bmN0aW9uIGB4MjVfZGVzdHJveV90aW1lcmAgd2hpY2ggaXMgc3RhdGljIGFuZCBhIHRpbWVyIGNhbGxiYWNrLCBpcyB2YWxpZCBhcyBhIGZvY3VzIHN5bWJvbC4gSWYgaXQmIzM5O3Mgbm90IGlubGluZWQsIHRoZW4gdGhlIHN0YXRpYyBxdWFsaWZpZXIgc2hvdWxkIG5vdCBiZSBhbiBpc3N1ZSBhcyB0aGUgZnVuY3Rpb24gd2lsbCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIE9rYXksIHRoYXQgY2hlY2tzIG91dC4KCk5vdywgbGV0JiMzOTtzIHNlZSwgd2hhdCBlbHNlIG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQ/IEZyb20gYSBjb25maWd1cmF0aW9uIHN0YW5kcG9pbnQsIEkgYmVsaWV2ZSBgQ09ORklHX1gyNWAgaXMgdGhlIG9ubHkgcmVsZXZhbnQgZmxhZyB0byBlbmFibGUuCgpJJiMzOTt2ZSB0YWtlbiBhIGNsb3NlciBsb29rIGF0IHRoZSBwYXRjaCBpdHNlbGYgdG8gZW5zdXJlIEkgZGlkbiYjMzk7dCBtaXNzIGFueXRoaW5nLiBJdCBhcHBlYXJzIHRoZSBjaGFuZ2VzIGFyZSBzcG90IG9uLiBgc29ja19wdXQoc2spYCBpcyBjb3JyZWN0bHkgYWRkZWQgYXQgdGhlIGVuZCBvZiB0aGUgdGltZXIgY2FsbGJhY2tzIChgeDI1X2Rlc3Ryb3lfdGltZXJgLCBgeDI1X2hlYXJ0YmVhdF9leHBpcnlgLCBgeDI1X3RpbWVyX2V4cGlyeWApLiBUaGlzIGlzIGNydWNpYWwgYmVjYXVzZSBpdCBlbnN1cmVzIHRoZSByZWZlcmVuY2UgdGFrZW4gYnkgYHNrX3Jlc2V0X3RpbWVyYCBvciBgYWRkX3RpbWVyYCBpcyBkcm9wcGVkIHByb3Blcmx5LiBJJiMzOTt2ZSBhbHNvIHZlcmlmaWVkIHRoYXQgdGhlIHBhdGNoIGNvcnJlY3RseSB1c2VzIGBza19yZXNldF90aW1lcmAsIGFuZCBmcm9tIHdoYXQgSSBjYW4gdGVsbCwgaXQmIzM5O3Mgb3BlcmF0aW5nIGFzIGludGVuZGVkLiBJdCBhZGRzIGEgcmVmZXJlbmNlIHdoZW4gYSB0aW1lciBpcyBhcm1lZCBhbmQgZHJvcHMgaXQgd2hlbiB0aGUgdGltZXIgaXMgc3RvcHBlZCBvciBleGVjdXRlZC4gVGhpcyBwcmV2ZW50cyBkb3VibGUtZnJlZXMuIFRoZSBoZWFydGJlYXQgaW1wbGVtZW50YXRpb24gYWxzbyBjaGVja3MgaWYgdGhlIHNvY2tldCBoYXMgYmVlbiB1bmxpbmtlZCBiZWZvcmUgcmVhcm1pbmcgdGhlIGhlYXJ0YmVhdC4KClNvLCBvdmVyYWxsLCB0aGlzIHBhdGNoIGlzIGEgZnVuY3Rpb25hbCBpbXByb3ZlbWVudC4gVGhlIGFkZGl0aW9uIG9mIGZ1enppbmcgZm9jdXMgc3ltYm9scyBhbmQgZW5hYmxpbmcgYENPTkZJR19YMjVgIHNlZW0gbGlrZSBhIGdvb2QgYXBwcm9hY2ggdG8gZW5zdXJlIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBjaGFuZ2VzLiBJJiMzOTttIHNhdGlzZmllZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1gyNSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3gyNV9kZXN0cm95X3RpbWVyJiMzNDssCiAgICAmIzM0O3gyNV9oZWFydGJlYXRfZXhwaXJ5JiMzNDssCiAgICAmIzM0O3gyNV90aW1lcl9leHBpcnkmIzM0OywKICAgICYjMzQ7eDI1X2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7eDI1X3JlbGVhc2UmIzM0OywKICAgICYjMzQ7eDI1X2JpbmQmIzM0OywKICAgICYjMzQ7eDI1X2xpc3RlbiYjMzQ7LAogICAgJiMzNDt4MjVfYWNjZXB0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHRpbWVyIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgcmVhcm1pbmcgbG9naWMgaW4gdGhlIFguMjUgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24uIEl0IHJlcGxhY2VzIHJhdyB0aW1lciBBUEkgY2FsbHMgd2l0aCBzb2NrZXQgdGltZXIgZnVuY3Rpb25zIChza19yZXNldF90aW1lciwgc2tfc3RvcF90aW1lcikgYW5kIGFkZHMgbWlzc2luZyBzb2NrX3B1dCgpIGNhbGxzIGluIHRpbWVyIGNhbGxiYWNrcyB0byBwcmV2ZW50IHVzZS1hZnRlci1mcmVlIG9yIG1lbW9yeSBsZWFrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgcHJvdG9jb2wgY29kZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WDI1JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eDI1X2Rlc3Ryb3lfdGltZXImIzM0OywKICAgICYjMzQ7eDI1X2hlYXJ0YmVhdF9leHBpcnkmIzM0OywKICAgICYjMzQ7eDI1X3RpbWVyX2V4cGlyeSYjMzQ7LAogICAgJiMzNDt4MjVfY29ubmVjdCYjMzQ7LAogICAgJiMzNDt4MjVfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDt4MjVfYmluZCYjMzQ7LAogICAgJiMzNDt4MjVfbGlzdGVuJiMzNDssCiAgICAmIzM0O3gyNV9hY2NlcHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgdGltZXIgcmVmZXJlbmNlIGNvdW50aW5nIGFuZCByZWFybWluZyBsb2dpYyBpbiB0aGUgWC4yNSBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbi4gSXQgcmVwbGFjZXMgcmF3IHRpbWVyIEFQSSBjYWxscyB3aXRoIHNvY2tldCB0aW1lciBmdW5jdGlvbnMgKHNrX3Jlc2V0X3RpbWVyLCBza19zdG9wX3RpbWVyKSBhbmQgYWRkcyBtaXNzaW5nIHNvY2tfcHV0KCkgY2FsbHMgaW4gdGltZXIgY2FsbGJhY2tzIHRvIHByZXZlbnQgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGxlYWtzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29yayBwcm90b2NvbCBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDE6MjYuODY4ODAxNjRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzA2ODkyMTY3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYMjVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4MjVfZGVzdHJveV90aW1lclwiLFxuICAgIFwieDI1X2hlYXJ0YmVhdF9leHBpcnlcIixcbiAgICBcIngyNV90aW1lcl9leHBpcnlcIixcbiAgICBcIngyNV9jb25uZWN0XCIsXG4gICAgXCJ4MjVfcmVsZWFzZVwiLFxuICAgIFwieDI1X2JpbmRcIixcbiAgICBcIngyNV9saXN0ZW5cIixcbiAgICBcIngyNV9hY2NlcHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyB0aW1lciByZWZlcmVuY2UgY291bnRpbmcgYW5kIHJlYXJtaW5nIGxvZ2ljIGluIHRoZSBYLjI1IHByb3RvY29sIGltcGxlbWVudGF0aW9uLiBJdCByZXBsYWNlcyByYXcgdGltZXIgQVBJIGNhbGxzIHdpdGggc29ja2V0IHRpbWVyIGZ1bmN0aW9ucyAoc2tfcmVzZXRfdGltZXIsIHNrX3N0b3BfdGltZXIpIGFuZCBhZGRzIG1pc3Npbmcgc29ja19wdXQoKSBjYWxscyBpbiB0aW1lciBjYWxsYmFja3MgdG8gcHJldmVudCB1c2UtYWZ0ZXItZnJlZSBvciBtZW1vcnkgbGVha3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JrIHByb3RvY29sIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjQxOjI2Ljg2ODgwNzUxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzkxMDA0MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1YmQxNGMyODM5NjIzYWQyNDhjNjVjZWYwNTc0M2Q0MWMwY2FiMzdiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDI3IDA3OjQxOjI1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC94MjUvYWZfeDI1LmMgYi9uZXQveDI1L2FmX3gyNS5jXFxuaW5kZXggOGFhZTkyNzNiN2MxNDQuLjAzM2U3ZDA1OWY1OGM2IDEwMDY0NFxcbi0tLSBhL25ldC94MjUvYWZfeDI1LmNcXG4rKysgYi9uZXQveDI1L2FmX3gyNS5jXFxuQEAgLTM2Myw2ICszNjMsNyBAQCBzdGF0aWMgdm9pZCB4MjVfZGVzdHJveV90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4gXFx0c3RydWN0IHNvY2sgKnNrID0gdGltZXJfY29udGFpbmVyX29mKHNrLCB0LCBza190aW1lcik7XFxuIFxcbiBcXHR4MjVfZGVzdHJveV9zb2NrZXRfZnJvbV90aW1lcihzayk7XFxuK1xcdHNvY2tfcHV0KHNrKTtcXG4gfVxcbiBcXG4gLypcXG5AQCAtMzk4LDkgKzM5OSw4IEBAIHN0YXRpYyB2b2lkIF9feDI1X2Rlc3Ryb3lfc29ja2V0KHN0cnVjdCBzb2NrICpzaylcXG4gXFxuIFxcdGlmIChza19oYXNfYWxsb2NhdGlvbnMoc2spKSB7XFxuIFxcdFxcdC8qIERlZmVyOiBvdXRzdGFuZGluZyBidWZmZXJzICovXFxuLVxcdFxcdHNrLVxcdTAwM2Vza190aW1lci5leHBpcmVzICA9IGppZmZpZXMgKyAxMCAqIEhaO1xcbiBcXHRcXHRzay1cXHUwMDNlc2tfdGltZXIuZnVuY3Rpb24gPSB4MjVfZGVzdHJveV90aW1lcjtcXG4tXFx0XFx0YWRkX3RpbWVyKFxcdTAwMjZzay1cXHUwMDNlc2tfdGltZXIpO1xcbitcXHRcXHRza19yZXNldF90aW1lcihzaywgXFx1MDAyNnNrLVxcdTAwM2Vza190aW1lciwgamlmZmllcyArIDEwICogSFopO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHQvKiBkcm9wIGxhc3QgcmVmZXJlbmNlIHNvIHNvY2tfcHV0IHdpbGwgZnJlZSAqL1xcbiBcXHRcXHRfX3NvY2tfcHV0KHNrKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L3gyNS94MjVfdGltZXIuYyBiL25ldC94MjUveDI1X3RpbWVyLmNcXG5pbmRleCAyZWM2M2ExZjRjNmQ0Mi4uNzg5NmNkNDNmMWNjMWUgMTAwNjQ0XFxuLS0tIGEvbmV0L3gyNS94MjVfdGltZXIuY1xcbisrKyBiL25ldC94MjUveDI1X3RpbWVyLmNcXG5AQCAtMzYsNDUgKzM2LDQ1IEBAIHZvaWQgeDI1X2luaXRfdGltZXJzKHN0cnVjdCBzb2NrICpzaylcXG4gXFxuIHZvaWQgeDI1X3N0YXJ0X2hlYXJ0YmVhdChzdHJ1Y3Qgc29jayAqc2spXFxuIHtcXG4tXFx0bW9kX3RpbWVyKFxcdTAwMjZzay1cXHUwMDNlc2tfdGltZXIsIGppZmZpZXMgKyA1ICogSFopO1xcbitcXHRza19yZXNldF90aW1lcihzaywgXFx1MDAyNnNrLVxcdTAwM2Vza190aW1lciwgamlmZmllcyArIDUgKiBIWik7XFxuIH1cXG4gXFxuIHZvaWQgeDI1X3N0b3BfaGVhcnRiZWF0KHN0cnVjdCBzb2NrICpzaylcXG4ge1xcbi1cXHR0aW1lcl9kZWxldGUoXFx1MDAyNnNrLVxcdTAwM2Vza190aW1lcik7XFxuK1xcdHNrX3N0b3BfdGltZXIoc2ssIFxcdTAwMjZzay1cXHUwMDNlc2tfdGltZXIpO1xcbiB9XFxuIFxcbiB2b2lkIHgyNV9zdGFydF90MnRpbWVyKHN0cnVjdCBzb2NrICpzaylcXG4ge1xcbiBcXHRzdHJ1Y3QgeDI1X3NvY2sgKngyNSA9IHgyNV9zayhzayk7XFxuIFxcbi1cXHRtb2RfdGltZXIoXFx1MDAyNngyNS1cXHUwMDNldGltZXIsIGppZmZpZXMgKyB4MjUtXFx1MDAzZXQyKTtcXG4rXFx0c2tfcmVzZXRfdGltZXIoc2ssIFxcdTAwMjZ4MjUtXFx1MDAzZXRpbWVyLCBqaWZmaWVzICsgeDI1LVxcdTAwM2V0Mik7XFxuIH1cXG4gXFxuIHZvaWQgeDI1X3N0YXJ0X3QyMXRpbWVyKHN0cnVjdCBzb2NrICpzaylcXG4ge1xcbiBcXHRzdHJ1Y3QgeDI1X3NvY2sgKngyNSA9IHgyNV9zayhzayk7XFxuIFxcbi1cXHRtb2RfdGltZXIoXFx1MDAyNngyNS1cXHUwMDNldGltZXIsIGppZmZpZXMgKyB4MjUtXFx1MDAzZXQyMSk7XFxuK1xcdHNrX3Jlc2V0X3RpbWVyKHNrLCBcXHUwMDI2eDI1LVxcdTAwM2V0aW1lciwgamlmZmllcyArIHgyNS1cXHUwMDNldDIxKTtcXG4gfVxcbiBcXG4gdm9pZCB4MjVfc3RhcnRfdDIydGltZXIoc3RydWN0IHNvY2sgKnNrKVxcbiB7XFxuIFxcdHN0cnVjdCB4MjVfc29jayAqeDI1ID0geDI1X3NrKHNrKTtcXG4gXFxuLVxcdG1vZF90aW1lcihcXHUwMDI2eDI1LVxcdTAwM2V0aW1lciwgamlmZmllcyArIHgyNS1cXHUwMDNldDIyKTtcXG4rXFx0c2tfcmVzZXRfdGltZXIoc2ssIFxcdTAwMjZ4MjUtXFx1MDAzZXRpbWVyLCBqaWZmaWVzICsgeDI1LVxcdTAwM2V0MjIpO1xcbiB9XFxuIFxcbiB2b2lkIHgyNV9zdGFydF90MjN0aW1lcihzdHJ1Y3Qgc29jayAqc2spXFxuIHtcXG4gXFx0c3RydWN0IHgyNV9zb2NrICp4MjUgPSB4MjVfc2soc2spO1xcbiBcXG4tXFx0bW9kX3RpbWVyKFxcdTAwMjZ4MjUtXFx1MDAzZXRpbWVyLCBqaWZmaWVzICsgeDI1LVxcdTAwM2V0MjMpO1xcbitcXHRza19yZXNldF90aW1lcihzaywgXFx1MDAyNngyNS1cXHUwMDNldGltZXIsIGppZmZpZXMgKyB4MjUtXFx1MDAzZXQyMyk7XFxuIH1cXG4gXFxuIHZvaWQgeDI1X3N0b3BfdGltZXIoc3RydWN0IHNvY2sgKnNrKVxcbiB7XFxuLVxcdHRpbWVyX2RlbGV0ZShcXHUwMDI2eDI1X3NrKHNrKS1cXHUwMDNldGltZXIpO1xcbitcXHRza19zdG9wX3RpbWVyKHNrLCBcXHUwMDI2eDI1X3NrKHNrKS1cXHUwMDNldGltZXIpO1xcbiB9XFxuIFxcbiB1bnNpZ25lZCBsb25nIHgyNV9kaXNwbGF5X3RpbWVyKHN0cnVjdCBzb2NrICpzaylcXG5AQCAtMTA4LDcgKzEwOCw3IEBAIHN0YXRpYyB2b2lkIHgyNV9oZWFydGJlYXRfZXhwaXJ5KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbiBcXHRcXHRcXHQgICAgIHNvY2tfZmxhZyhzaywgU09DS19ERUFEKSkpIHtcXG4gXFx0XFx0XFx0XFx0YmhfdW5sb2NrX3NvY2soc2spO1xcbiBcXHRcXHRcXHRcXHR4MjVfZGVzdHJveV9zb2NrZXRfZnJvbV90aW1lcihzayk7XFxuLVxcdFxcdFxcdFxcdHJldHVybjtcXG4rXFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcbkBAIC0xMjAsOCArMTIwLDE0IEBAIHN0YXRpYyB2b2lkIHgyNV9oZWFydGJlYXRfZXhwaXJ5KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0fVxcbiByZXN0YXJ0X2hlYXJ0YmVhdDpcXG4tXFx0eDI1X3N0YXJ0X2hlYXJ0YmVhdChzayk7XFxuK1xcdC8qIERvIG5vdCByZWFybSBvbmNlIF9feDI1X2Rlc3Ryb3lfc29ja2V0KCkgaGFzIHVubGlua2VkIHRoZSBzb2NrZXQ6XFxuK1xcdCAqIGl0IGlzIHBhc3QgaXRzIGNhbmNlbCBwb2ludCBhbmQgb3ducyB0aGUgdGVhcmRvd24gZnJvbSB0aGVyZSBvbi5cXG4rXFx0ICovXFxuK1xcdGlmIChza19oYXNoZWQoc2spKVxcbitcXHRcXHR4MjVfc3RhcnRfaGVhcnRiZWF0KHNrKTtcXG4gXFx0YmhfdW5sb2NrX3NvY2soc2spO1xcbitvdXQ6XFxuK1xcdHNvY2tfcHV0KHNrKTtcXG4gfVxcbiBcXG4gLypcXG5AQCAtMTY2LDQgKzE3Miw1IEBAIHN0YXRpYyB2b2lkIHgyNV90aW1lcl9leHBpcnkoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuIFxcdH0gZWxzZVxcbiBcXHRcXHR4MjVfZG9fdGltZXJfZXhwaXJ5KHNrKTtcXG4gXFx0YmhfdW5sb2NrX3NvY2soc2spO1xcbitcXHRzb2NrX3B1dChzayk7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDE6MjcuNDA4NTYwMDdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1NjUyOTE1NTgxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYMjVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4MjVfZGVzdHJveV90aW1lclwiLFxuICAgIFwieDI1X2hlYXJ0YmVhdF9leHBpcnlcIixcbiAgICBcIngyNV90aW1lcl9leHBpcnlcIixcbiAgICBcIngyNV9jb25uZWN0XCIsXG4gICAgXCJ4MjVfcmVsZWFzZVwiLFxuICAgIFwieDI1X2JpbmRcIixcbiAgICBcIngyNV9saXN0ZW5cIixcbiAgICBcIngyNV9hY2NlcHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyB0aW1lciByZWZlcmVuY2UgY291bnRpbmcgYW5kIHJlYXJtaW5nIGxvZ2ljIGluIHRoZSBYLjI1IHByb3RvY29sIGltcGxlbWVudGF0aW9uLiBJdCByZXBsYWNlcyByYXcgdGltZXIgQVBJIGNhbGxzIHdpdGggc29ja2V0IHRpbWVyIGZ1bmN0aW9ucyAoc2tfcmVzZXRfdGltZXIsIHNrX3N0b3BfdGltZXIpIGFuZCBhZGRzIG1pc3Npbmcgc29ja19wdXQoKSBjYWxscyBpbiB0aW1lciBjYWxsYmFja3MgdG8gcHJldmVudCB1c2UtYWZ0ZXItZnJlZSBvciBtZW1vcnkgbGVha3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JrIHByb3RvY29sIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDViZDE0YzI4Mzk2MjNhZDI0OGM2NWNlZjA1NzQzZDQxYzBjYWIzN2JcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAwNzo0MToyNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC94MjUvYWZfeDI1LmMgYi9uZXQveDI1L2FmX3gyNS5jXG5pbmRleCA4YWFlOTI3M2I3YzE0NC4uMDMzZTdkMDU5ZjU4YzYgMTAwNjQ0XG4tLS0gYS9uZXQveDI1L2FmX3gyNS5jXG4rKysgYi9uZXQveDI1L2FmX3gyNS5jXG5AQCAtMzYzLDYgKzM2Myw3IEBAIHN0YXRpYyB2b2lkIHgyNV9kZXN0cm95X3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuIFx0c3RydWN0IHNvY2sgKnNrID0gdGltZXJfY29udGFpbmVyX29mKHNrLCB0LCBza190aW1lcik7XG4gXG4gXHR4MjVfZGVzdHJveV9zb2NrZXRfZnJvbV90aW1lcihzayk7XG4rXHRzb2NrX3B1dChzayk7XG4gfVxuIFxuIC8qXG5AQCAtMzk4LDkgKzM5OSw4IEBAIHN0YXRpYyB2b2lkIF9feDI1X2Rlc3Ryb3lfc29ja2V0KHN0cnVjdCBzb2NrICpzaylcbiBcbiBcdGlmIChza19oYXNfYWxsb2NhdGlvbnMoc2spKSB7XG4gXHRcdC8qIERlZmVyOiBvdXRzdGFuZGluZyBidWZmZXJzICovXG4tXHRcdHNrLVx1MDAzZXNrX3RpbWVyLmV4cGlyZXMgID0gamlmZmllcyArIDEwICogSFo7XG4gXHRcdHNrLVx1MDAzZXNrX3RpbWVyLmZ1bmN0aW9uID0geDI1X2Rlc3Ryb3lfdGltZXI7XG4tXHRcdGFkZF90aW1lcihcdTAwMjZzay1cdTAwM2Vza190aW1lcik7XG4rXHRcdHNrX3Jlc2V0X3RpbWVyKHNrLCBcdTAwMjZzay1cdTAwM2Vza190aW1lciwgamlmZmllcyArIDEwICogSFopO1xuIFx0fSBlbHNlIHtcbiBcdFx0LyogZHJvcCBsYXN0IHJlZmVyZW5jZSBzbyBzb2NrX3B1dCB3aWxsIGZyZWUgKi9cbiBcdFx0X19zb2NrX3B1dChzayk7XG5kaWZmIC0tZ2l0IGEvbmV0L3gyNS94MjVfdGltZXIuYyBiL25ldC94MjUveDI1X3RpbWVyLmNcbmluZGV4IDJlYzYzYTFmNGM2ZDQyLi43ODk2Y2Q0M2YxY2MxZSAxMDA2NDRcbi0tLSBhL25ldC94MjUveDI1X3RpbWVyLmNcbisrKyBiL25ldC94MjUveDI1X3RpbWVyLmNcbkBAIC0zNiw0NSArMzYsNDUgQEAgdm9pZCB4MjVfaW5pdF90aW1lcnMoc3RydWN0IHNvY2sgKnNrKVxuIFxuIHZvaWQgeDI1X3N0YXJ0X2hlYXJ0YmVhdChzdHJ1Y3Qgc29jayAqc2spXG4ge1xuLVx0bW9kX3RpbWVyKFx1MDAyNnNrLVx1MDAzZXNrX3RpbWVyLCBqaWZmaWVzICsgNSAqIEhaKTtcbitcdHNrX3Jlc2V0X3RpbWVyKHNrLCBcdTAwMjZzay1cdTAwM2Vza190aW1lciwgamlmZmllcyArIDUgKiBIWik7XG4gfVxuIFxuIHZvaWQgeDI1X3N0b3BfaGVhcnRiZWF0KHN0cnVjdCBzb2NrICpzaylcbiB7XG4tXHR0aW1lcl9kZWxldGUoXHUwMDI2c2stXHUwMDNlc2tfdGltZXIpO1xuK1x0c2tfc3RvcF90aW1lcihzaywgXHUwMDI2c2stXHUwMDNlc2tfdGltZXIpO1xuIH1cbiBcbiB2b2lkIHgyNV9zdGFydF90MnRpbWVyKHN0cnVjdCBzb2NrICpzaylcbiB7XG4gXHRzdHJ1Y3QgeDI1X3NvY2sgKngyNSA9IHgyNV9zayhzayk7XG4gXG4tXHRtb2RfdGltZXIoXHUwMDI2eDI1LVx1MDAzZXRpbWVyLCBqaWZmaWVzICsgeDI1LVx1MDAzZXQyKTtcbitcdHNrX3Jlc2V0X3RpbWVyKHNrLCBcdTAwMjZ4MjUtXHUwMDNldGltZXIsIGppZmZpZXMgKyB4MjUtXHUwMDNldDIpO1xuIH1cbiBcbiB2b2lkIHgyNV9zdGFydF90MjF0aW1lcihzdHJ1Y3Qgc29jayAqc2spXG4ge1xuIFx0c3RydWN0IHgyNV9zb2NrICp4MjUgPSB4MjVfc2soc2spO1xuIFxuLVx0bW9kX3RpbWVyKFx1MDAyNngyNS1cdTAwM2V0aW1lciwgamlmZmllcyArIHgyNS1cdTAwM2V0MjEpO1xuK1x0c2tfcmVzZXRfdGltZXIoc2ssIFx1MDAyNngyNS1cdTAwM2V0aW1lciwgamlmZmllcyArIHgyNS1cdTAwM2V0MjEpO1xuIH1cbiBcbiB2b2lkIHgyNV9zdGFydF90MjJ0aW1lcihzdHJ1Y3Qgc29jayAqc2spXG4ge1xuIFx0c3RydWN0IHgyNV9zb2NrICp4MjUgPSB4MjVfc2soc2spO1xuIFxuLVx0bW9kX3RpbWVyKFx1MDAyNngyNS1cdTAwM2V0aW1lciwgamlmZmllcyArIHgyNS1cdTAwM2V0MjIpO1xuK1x0c2tfcmVzZXRfdGltZXIoc2ssIFx1MDAyNngyNS1cdTAwM2V0aW1lciwgamlmZmllcyArIHgyNS1cdTAwM2V0MjIpO1xuIH1cbiBcbiB2b2lkIHgyNV9zdGFydF90MjN0aW1lcihzdHJ1Y3Qgc29jayAqc2spXG4ge1xuIFx0c3RydWN0IHgyNV9zb2NrICp4MjUgPSB4MjVfc2soc2spO1xuIFxuLVx0bW9kX3RpbWVyKFx1MDAyNngyNS1cdTAwM2V0aW1lciwgamlmZmllcyArIHgyNS1cdTAwM2V0MjMpO1xuK1x0c2tfcmVzZXRfdGltZXIoc2ssIFx1MDAyNngyNS1cdTAwM2V0aW1lciwgamlmZmllcyArIHgyNS1cdTAwM2V0MjMpO1xuIH1cbiBcbiB2b2lkIHgyNV9zdG9wX3RpbWVyKHN0cnVjdCBzb2NrICpzaylcbiB7XG4tXHR0aW1lcl9kZWxldGUoXHUwMDI2eDI1X3NrKHNrKS1cdTAwM2V0aW1lcik7XG4rXHRza19zdG9wX3RpbWVyKHNrLCBcdTAwMjZ4MjVfc2soc2spLVx1MDAzZXRpbWVyKTtcbiB9XG4gXG4gdW5zaWduZWQgbG9uZyB4MjVfZGlzcGxheV90aW1lcihzdHJ1Y3Qgc29jayAqc2spXG5AQCAtMTA4LDcgKzEwOCw3IEBAIHN0YXRpYyB2b2lkIHgyNV9oZWFydGJlYXRfZXhwaXJ5KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuIFx0XHRcdCAgICAgc29ja19mbGFnKHNrLCBTT0NLX0RFQUQpKSkge1xuIFx0XHRcdFx0YmhfdW5sb2NrX3NvY2soc2spO1xuIFx0XHRcdFx0eDI1X2Rlc3Ryb3lfc29ja2V0X2Zyb21fdGltZXIoc2spO1xuLVx0XHRcdFx0cmV0dXJuO1xuK1x0XHRcdFx0Z290byBvdXQ7XG4gXHRcdFx0fVxuIFx0XHRcdGJyZWFrO1xuIFxuQEAgLTEyMCw4ICsxMjAsMTQgQEAgc3RhdGljIHZvaWQgeDI1X2hlYXJ0YmVhdF9leHBpcnkoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4gXHRcdFx0YnJlYWs7XG4gXHR9XG4gcmVzdGFydF9oZWFydGJlYXQ6XG4tXHR4MjVfc3RhcnRfaGVhcnRiZWF0KHNrKTtcbitcdC8qIERvIG5vdCByZWFybSBvbmNlIF9feDI1X2Rlc3Ryb3lfc29ja2V0KCkgaGFzIHVubGlua2VkIHRoZSBzb2NrZXQ6XG4rXHQgKiBpdCBpcyBwYXN0IGl0cyBjYW5jZWwgcG9pbnQgYW5kIG93bnMgdGhlIHRlYXJkb3duIGZyb20gdGhlcmUgb24uXG4rXHQgKi9cbitcdGlmIChza19oYXNoZWQoc2spKVxuK1x0XHR4MjVfc3RhcnRfaGVhcnRiZWF0KHNrKTtcbiBcdGJoX3VubG9ja19zb2NrKHNrKTtcbitvdXQ6XG4rXHRzb2NrX3B1dChzayk7XG4gfVxuIFxuIC8qXG5AQCAtMTY2LDQgKzE3Miw1IEBAIHN0YXRpYyB2b2lkIHgyNV90aW1lcl9leHBpcnkoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4gXHR9IGVsc2VcbiBcdFx0eDI1X2RvX3RpbWVyX2V4cGlyeShzayk7XG4gXHRiaF91bmxvY2tfc29jayhzayk7XG4rXHRzb2NrX3B1dChzayk7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDE6MjcuNDA4NTYxMjNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTczMDI0NTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlguMjUgVGltZXIgTWFuYWdlbWVudDogQSBDcml0aWNhbCBSZXZpZXcqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHplcm9pbmcgaW4gb24gdGhlIFguMjUgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24g4oCTIHNwZWNpZmljYWxseSwgYGFmX3gyNS5jYCBhbmQgYHgyNV90aW1lci5jYC4gSW50ZXJlc3RpbmcuIFRoZSBjb3JlIG9mIHRoaXMgaXMgYWJvdXQgdGhlIHRpbWVyIGhhbmRsaW5nLCBhbmQgaXQgc291bmRzIGxpa2UgYSBzaWduaWZpY2FudCBpbXByb3ZlbWVudCBpbiBzb2NrZXQgbWFuYWdlbWVudCBpcyB1bmRlcndheS4gSXQncyBzaGlmdGluZyBmcm9tIHRoZSBvbGRlciBgbW9kX3RpbWVyYCBhbmQgYHRpbWVyX2RlbGV0ZWAgbWV0aG9kcyB0byBgc2tfcmVzZXRfdGltZXJgIGFuZCBgc2tfc3RvcF90aW1lcmAuIFRoYXQgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgYSBtb3ZlIHRvd2FyZHMgYSBtb3JlIHJvYnVzdCBhbmQgcG9zc2libHkgbW9yZSBlZmZpY2llbnQgYXBwcm9hY2guIEFuZCB0aGUgYWRkaXRpb24gb2YgYHNvY2tfcHV0KHNrKWAgd2l0aGluIHRoZSB0aW1lciBjYWxsYmFja3M/IFRoYXQncyB0aGUgcmVhbCBtZWF0IG9mIGl0IOKAkyBhIGZvY3VzZWQgYXR0ZW1wdCB0byBoYW5kbGUgc29ja2V0IHJlZmVyZW5jZXMgY29ycmVjdGx5LiBUaGF0J3MgYSBnb29kIHNpZ247IGl0IHBvaW50cyBkaXJlY3RseSB0b3dhcmRzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eSBvciBhIG1lbW9yeSBsZWFrIHdpdGhpbiB0aG9zZSBYLjI1IHNvY2tldCB0aW1lcnMuIEdvdHRhIGJlIGNhcmVmdWwgd2l0aCB0aG9zZSB0aW1lcnMgYW5kIHNvY2tldCByZWZlcmVuY2VzLi4uIHRoZXkncmUgZWFzeSB0byBnZXQgd3JvbmcgYW5kIGNhdXNlIG1ham9yIGhlYWRhY2hlcy4gSSdtIGdvaW5nIHRvIHdhbnQgdG8gdmVyaWZ5IHRoYXQuXG5cbk15IG5leHQgc3RlcCBpcyB0byB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgS2NvbmZpZyBmaWxlIGZvciBYLjI1IHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nJ3Mgc2V0IHVwIGNvcnJlY3RseS4gR290dGEgbWFrZSBzdXJlIGl0J3MgZW5hYmxlZCBhbmQgbm90IGFjY2lkZW50YWxseSBkaXNhYmxlZC4gVGhlbiwgSSB3aWxsIGRlbHZlIGRlZXBlci4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCB0byBzZWUgKmhvdyogdGhlIHNvY2tldCByZWZlcmVuY2VzIHdlcmUgYmVpbmcgbWlzaGFuZGxlZCBiZWZvcmUgYW5kIGV4YWN0bHkgKmhvdyogdGhlc2UgY2hhbmdlcyByZXNvbHZlIHRoZSBpc3N1ZS4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBzaG91bGQgYnJpbmcgc29tZSBzdGFiaWxpdHkgdG8gdGhlIFguMjUgaW1wbGVtZW50YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyODcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzo0MTozMS45ODE1ODg0MzZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM3NzIxOTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBYMjVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3gyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3gyNS9LY29uZmlnLTUtXFxubmV0L3gyNS9LY29uZmlnOjY6Y29uZmlnIFgyNVxcbm5ldC94MjUvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJDQ0lUVCBYLjI1IFBhY2tldCBMYXllclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDE6MzIuMjE5MzE1MjQzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ0NzcwMDcwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBIZXJlJ3MgaG93IEknZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIERlcGVuZGVuY2llczogWDI1KipcblxuQWxyaWdodCwgdGhlIGluaXRpYWwgcHJvbXB0IGlzIHN0cmFpZ2h0Zm9yd2FyZC4gV2UncmUgZGVhbGluZyB3aXRoIFwiZGVwZW5kZW5jaWVzXCIgYW5kIFwiWDI1LFwiIHdoaWNoIGxpa2VseSByZWxhdGVzIHRvIGEgc3BlY2lmaWMgc3lzdGVtLCBjb21wb25lbnQsIG9yIGNvZGViYXNlLCBnaXZlbiB0aGUgc3BlY2lhbGl6ZWQgbmF0dXJlIG9mIHRoZSB0ZXJtaW5vbG9neS4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRlbHZlIGludG8gdGhlIGFyY2hpdGVjdHVyZSBhbmQgaWRlbnRpZnkgdGhlIGNyaXRpY2FsIHJlbGF0aW9uc2hpcHMgYXQgcGxheS4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBYMjUgKmlzKiB3aXRoaW4gdGhpcyBjb250ZXh0LiBJcyBpdCBhIGxpYnJhcnk/IEEgc2VydmljZT8gQSBoYXJkd2FyZSBjb21wb25lbnQ/IEtub3dpbmcgaXRzIHJvbGUgd2lsbCBoZWF2aWx5IGluZmx1ZW5jZSBob3cgSSBhcHByb2FjaCBkZXBlbmRlbmN5IGFuYWx5c2lzLlxuXG5NeSB0aG91Z2h0IHByb2Nlc3MgcXVpY2tseSBicmFuY2hlcyBpbnRvIHNldmVyYWwga2V5IGFyZWFzOlxuXG4qICAgKipJZGVudGlmeWluZyB0aGUgc2NvcGU6KiogV2hhdCBjb25zdGl0dXRlcyBhIGRlcGVuZGVuY3kgaW4gdGhpcyBzY2VuYXJpbz8gSXMgaXQgYSBjb2RlLWxldmVsIGRlcGVuZGVuY3kgKGltcG9ydHMsIHVzZXMsIGV0Yy4pLCBhIHJ1bnRpbWUgZGVwZW5kZW5jeSAobGlicmFyaWVzLCBzZXJ2aWNlcyksIGEgaGFyZHdhcmUgZGVwZW5kZW5jeSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSB0eXBlIG9mIGRlcGVuZGVuY3kgaW5mbHVlbmNlcyB0aGUgdG9vbHMgYW5kIG1ldGhvZG9sb2dpZXMgSSdkIGVtcGxveS5cbiogICAqKkNob29zaW5nIHRoZSByaWdodCB0b29sc2V0OioqIERvIEkgcmVhY2ggZm9yIGEgc3RhdGljIGFuYWx5c2lzIHRvb2wgZm9yIGNvZGUgZGVwZW5kZW5jaWVzPyBQZXJoYXBzIGEgbW9uaXRvcmluZyBzeXN0ZW0gZm9yIHJ1bnRpbWUgaW50ZXJhY3Rpb25zPyBPciBtYXliZSBJIGhhdmUgdG8gc3RhcnQgbG9va2luZyBhdCBkb2N1bWVudGF0aW9uPyBLbm93aW5nIHRoZSB0eXBlIG9mIGRlcGVuZGVuY3kgd2lsbCBkZWNpZGUgdGhpcy5cbiogICAqKkRvY3VtZW50aW5nIHRoZSBmaW5kaW5nczoqKiBXaGF0IGFyZSB0aGUgZXhwZWN0ZWQgb3V0cHV0cz8gVGhpcyBoZWxwcyBkZWNpZGUgdGhlIG1ldGhvZCBmb3IgZG9jdW1lbnRhdGlvbiBvZiB0aGUgZGVwZW5kZW5jaWVzLlxuKiAgICoqQ29uc2lkZXJpbmcgdGhlIGltcGxpY2F0aW9uczoqKiBXaGF0IGltcGFjdCBkbyB0aGVzZSBkZXBlbmRlbmNpZXMgaGF2ZT8gVGhlaXIgc2V2ZXJpdHk/IEFyZSB0aGVyZSBwb3RlbnRpYWwgcmlza3Mgb3IgdnVsbmVyYWJpbGl0aWVzIGFzc29jaWF0ZWQgd2l0aCB0aGVzZSBkZXBlbmRlbmNpZXM/IFRoaXMgYXNzZXNzbWVudCB3aWxsIGluZm9ybSBkZWNpc2lvbnMgYWJvdXQgbWl0aWdhdGlvbiBzdHJhdGVnaWVzICh1cGRhdGVzLCBwYXRjaGluZywgaXNvbGF0aW9uLCBldGMuKS5cblxuRXNzZW50aWFsbHksIEknbSBmb3JtaW5nIGEgcGxhbiBmb3IgYSBjb21wcmVoZW5zaXZlIGludmVzdGlnYXRpb24sIGEgbWVudGFsIGNoZWNrbGlzdCBvZiBxdWVzdGlvbnMgdG8gYW5zd2VyIGFuZCBhY3Rpb25zIHRvIHRha2UgdG8gZ2FpbiBhIGZ1bGwgdW5kZXJzdGFuZGluZyBvZiBYMjUncyBkZXBlbmRlbmNpZXMuIE15IGV4cGVydGlzZSBhbGxvd3MgbWUgdG8gcXVpY2tseSBlc3RhYmxpc2ggdGhpcyBmcmFtZXdvcmssIGFudGljaXBhdGluZyB0aGUgY2hhbGxlbmdlcyBhbmQgb3Bwb3J0dW5pdGllcyBpbmhlcmVudCBpbiB0aGUgdGFzay5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg0MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjQxOjM2LjY2NzAxODE0NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2OTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC94MjUvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBDQ0lUVCBYLjI1IFBhY2tldCBMYXllclxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgWDI1XFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiQ0NJVFQgWC4yNSBQYWNrZXQgTGF5ZXJcXFwiXFxuICAgODpcXHRcXHRoZWxwXFxuICAgOTpcXHRcXHQgIFguMjUgaXMgYSBzZXQgb2Ygc3RhbmRhcmRpemVkIG5ldHdvcmsgcHJvdG9jb2xzLCBzaW1pbGFyIGluIHNjb3BlIHRvXFxuICAxMDpcXHRcXHQgIGZyYW1lIHJlbGF5OyB0aGUgb25lIHBoeXNpY2FsIGxpbmUgZnJvbSB5b3VyIGJveCB0byB0aGUgWC4yNSBuZXR3b3JrXFxuICAxMTpcXHRcXHQgIGVudHJ5IHBvaW50IGNhbiBjYXJyeSBzZXZlcmFsIGxvZ2ljYWwgcG9pbnQtdG8tcG9pbnQgY29ubmVjdGlvbnNcXG4gIDEyOlxcdFxcdCAgKGNhbGxlZCBcXFwidmlydHVhbCBjaXJjdWl0c1xcXCIpIHRvIG90aGVyIGNvbXB1dGVycyBjb25uZWN0ZWQgdG8gdGhlIFguMjVcXG4gIDEzOlxcdFxcdCAgbmV0d29yay4gR292ZXJubWVudHMsIGJhbmtzLCBhbmQgb3RoZXIgb3JnYW5pemF0aW9ucyB0ZW5kIHRvIHVzZSBpdFxcbiAgMTQ6XFx0XFx0ICB0byBjb25uZWN0IHRvIGVhY2ggb3RoZXIgb3IgdG8gZm9ybSBXaWRlIEFyZWEgTmV0d29ya3MgKFdBTnMpLiBNYW55XFxuICAxNTpcXHRcXHQgIGNvdW50cmllcyBoYXZlIHB1YmxpYyBYLjI1IG5ldHdvcmtzLiBYLjI1IGNvbnNpc3RzIG9mIHR3b1xcbiAgMTY6XFx0XFx0ICBwcm90b2NvbHM6IHRoZSBoaWdoZXIgbGV2ZWwgUGFja2V0IExheWVyIFByb3RvY29sIChQTFApIChzYXkgWSBoZXJlXFxuICAxNzpcXHRcXHQgIGlmIHlvdSB3YW50IHRoYXQpIGFuZCB0aGUgbG93ZXIgbGV2ZWwgZGF0YSBsaW5rIGxheWVyIHByb3RvY29sIExBUEJcXG4gIDE4OlxcdFxcdCAgKHNheSBZIHRvIFxcXCJMQVBCIERhdGEgTGluayBEcml2ZXJcXFwiIGJlbG93IGlmIHlvdSB3YW50IHRoYXQpLlxcbiAgMTk6XFx0XFxuICAyMDpcXHRcXHQgIEluZm9ybWF0aW9uIGFib3V0IFguMjUgZm9yIExpbnV4IGlzIGNvbnRhaW5lZCBpbiB0aGUgZmlsZXNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDE6MzYuNjY3MDc3MDc2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTExNTQ5OTE2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFguMjUgQ29uZmlndXJhdGlvbiBDaGFuZ2VzKipcblxuT2theSwgc28gYENPTkZJR19YMjVgIGlzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUsIHRoYXQncyBteSBzdGFydGluZyBwb2ludC4gTm93LCBsZXQncyBkcmlsbCBkb3duIGFuZCBzZWUgd2hhdCBzcGVjaWZpY2FsbHkgaGFzIGJlZW4gY2hhbmdlZC4gSXQgbG9va3MgbGlrZSB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHJldm9sdmUgaGVhdmlseSBhcm91bmQgdGltZXJzOiBgeDI1X2Rlc3Ryb3lfdGltZXJgLCBgX194MjVfZGVzdHJveV9zb2NrZXRgLCBgeDI1X3N0YXJ0X2hlYXJ0YmVhdGAsIGB4MjVfc3RvcF9oZWFydGJlYXRgLCBhbmQgYWxsIHRoZSBgeDI1X3N0YXJ0X3QqdGltZXJgIGFuZCBgeDI1X3N0b3BfdGltZXJgIHZhcmlhbnRzLiBUaGUgZXhwaXJ5IGZ1bmN0aW9ucywgbGlrZSBgeDI1X2hlYXJ0YmVhdF9leHBpcnlgIGFuZCBgeDI1X3RpbWVyX2V4cGlyeWAsIGFyZSBhbHNvIHRoZXJlLlxuXG5HaXZlbiB0aGUgY29uY2VudHJhdGlvbiBvbiB0aGVzZSB0aW1lcnMsIG15IGltbWVkaWF0ZSBmb2N1cyB3aWxsIGJlIG9uIHRoZSBlbnRyeSBwb2ludHMgaW50byB0aGUgWC4yNSBzb2NrZXQgZnVuY3Rpb25hbGl0eSB0aGF0IGluaXRpYXRlIG9yIGludGVyYWN0IHdpdGggdGhlc2UgdGltZXJzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2F1c2FsIHJlbGF0aW9uc2hpcHMgaGVyZS4gRm9yIGluc3RhbmNlLCBgeDI1X3N0YXJ0X2hlYXJ0YmVhdGAgbG9va3MgaW1wb3J0YW50LCBhbmQgSSBzZWUgaXQncyBjYWxsZWQgZnJvbSBgeDI1X2NyZWF0ZWAsIHdoaWNoIG1ha2VzIHNlbnNlIGJlY2F1c2Ugd2Ugc3RhcnQgbW9uaXRvcmluZyBjb25uZWN0aW9ucyByaWdodCBhd2F5LCBhbmQgYWxzbywgaW1wb3J0YW50bHksIGZyb20gYHgyNV9jb25uZWN0YC4gU28sIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUsIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludHMgZm9yIFguMjUgc29ja2V0IGNyZWF0aW9uIGFuZCBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQuIEkgbmVlZCB0byBzZWUgdGhlIGNvbXBsZXRlIGxpZmVjeWNsZS4gVGhhdCdzIHdoZXJlIEkgc2hvdWxkIGNvbmNlbnRyYXRlIG15IGVmZm9ydHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MjIsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzo0MTo0MS43ODI1Nzg1NzFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4NzU0NTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIngyNV9jcmVhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3gyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3gyNS9hZl94MjUuYz01MDQ9c3RhdGljIHN0cnVjdCBzb2NrICp4MjVfYWxsb2Nfc29ja2V0KHN0cnVjdCBuZXQgKm5ldCwgaW50IGtlcm4pXFxuLS1cXG5uZXQveDI1L2FmX3gyNS5jLTUyMi1cXG5uZXQveDI1L2FmX3gyNS5jOjUyMzpzdGF0aWMgaW50IHgyNV9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgcHJvdG9jb2wsXFxubmV0L3gyNS9hZl94MjUuYy01MjQtXFx0XFx0ICAgICAgaW50IGtlcm4pXFxuLS1cXG5uZXQveDI1L2FmX3gyNS5jPTE2MTk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfcHJvdG9fZmFtaWx5IHgyNV9mYW1pbHlfb3BzID0ge1xcbm5ldC94MjUvYWZfeDI1LmMtMTYyMC1cXHQuZmFtaWx5ID1cXHRBRl9YMjUsXFxubmV0L3gyNS9hZl94MjUuYzoxNjIxOlxcdC5jcmVhdGUgPVxcdHgyNV9jcmVhdGUsXFxubmV0L3gyNS9hZl94MjUuYy0xNjIyLVxcdC5vd25lclxcdD1cXHRUSElTX01PRFVMRSxcXG4tLVxcbm5ldC94MjUveDI1X2ZhY2lsaXRpZXMuYz00MT1pbnQgeDI1X3BhcnNlX2ZhY2lsaXRpZXMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHgyNV9mYWNpbGl0aWVzICpmYWNpbGl0aWVzLFxcbi0tXFxubmV0L3gyNS94MjVfZmFjaWxpdGllcy5jLTE4Ny0gKi9cXG5uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmM6MTg4OmludCB4MjVfY3JlYXRlX2ZhY2lsaXRpZXModW5zaWduZWQgY2hhciAqYnVmZmVyLFxcbm5ldC94MjUveDI1X2ZhY2lsaXRpZXMuYy0xODktXFx0XFx0c3RydWN0IHgyNV9mYWNpbGl0aWVzICpmYWNpbGl0aWVzLFxcbi0tXFxubmV0L3gyNS94MjVfc3Vici5jPTExMD12b2lkIHgyNV93cml0ZV9pbnRlcm5hbChzdHJ1Y3Qgc29jayAqc2ssIGludCBmcmFtZXR5cGUpXFxuLS1cXG5uZXQveDI1L3gyNV9zdWJyLmMtMTg3LVxcdFxcdFxcdHNrYl9wdXRfZGF0YShza2IsIGFkZHJlc3NlcywgbGVuKTtcXG5uZXQveDI1L3gyNV9zdWJyLmM6MTg4OlxcdFxcdFxcdGxlbiAgICAgPSB4MjVfY3JlYXRlX2ZhY2lsaXRpZXMoZmFjaWxpdGllcyxcXG5uZXQveDI1L3gyNV9zdWJyLmMtMTg5LVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZ4MjUtXFx1MDAzZWZhY2lsaXRpZXMsXFxuLS1cXG5uZXQveDI1L3gyNV9zdWJyLmMtMjAxLVxcdFxcdFxcdCpkcHRyKysgPSAweDAwO1xcdFxcdC8qIEFkZHJlc3MgbGVuZ3RocyAqL1xcbm5ldC94MjUveDI1X3N1YnIuYzoyMDI6XFx0XFx0XFx0bGVuICAgICA9IHgyNV9jcmVhdGVfZmFjaWxpdGllcyhmYWNpbGl0aWVzLFxcbm5ldC94MjUveDI1X3N1YnIuYy0yMDMtXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNngyNS1cXHUwMDNlZmFjaWxpdGllcyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDE6NDEuOTUxMzM4MzEyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg5Mzc3NTA5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRnV6emluZyBYLjI1IC0gVGFyZ2V0dGluZyB0aGUgRW50cnkgUG9pbnRzKipcblxuQWxyaWdodCwgaWYgSSdtIGdvaW5nIHRvIGZ1enogdGhpcyBYLjI1IGltcGxlbWVudGF0aW9uLCBJIG5lZWQgdG8gc3RhcnQgdGhpbmtpbmcgYWJvdXQgdGhlIGtleSBhdHRhY2sgc3VyZmFjZXMuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBvYnZpb3VzIHJvdXRlIGlzIHRocm91Z2ggdGhlIGV4cG9zZWQgc29ja2V0IG9wZXJhdGlvbnMuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIEknbGwgbmVlZCB0byBmb2N1cyBvbjogYHgyNV9jcmVhdGVgLCB3aGljaCBzZXRzIHVwIHRoZSBpbml0aWFsIHNvY2tldC4gVGhlbiwgYHgyNV9jb25uZWN0YCwgYHgyNV9iaW5kYCwgYW5kIGB4MjVfbGlzdGVuYCwgdGhhdCBoYW5kbGUgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50LCBhbmQgdGhlIG9wcG9zaXRlIHdpdGggYHgyNV9hY2NlcHRgLCBmb3IgdGhlIGxpc3RlbmluZyBzaWRlLiBUaGUgcmVhbCBtZWF0IG9mIGl0LCB0aG91Z2gsIGhhcyB0byBiZSBpbiB0aGUgZGF0YSBleGNoYW5nZS4gSSdtIGltYWdpbmluZyBJJ2xsIG5lZWQgdG8gcmVhbGx5IGhhbW1lciBgeDI1X3NlbmRtc2dgIGFuZCBgeDI1X3JlY3Ztc2dgIHdpdGggbWFsZm9ybWVkIHBhY2tldHMsIGFuZCB0aGVuIEkgY2FuIHJlbGVhc2UgcmVzb3VyY2VzIHdpdGggYHgyNV9yZWxlYXNlYC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBlbmVyZ2llcyBhbmQgd2hlcmUgSSdtIGdvaW5nIHRvIGZpbmQgdGhlIHJlYWwgYnVncywgSSBzdXNwZWN0LiBUaGUgb3RoZXIgZW50cmllcyBwcm92aWRlIHRoZSBzZXR1cCBhbmQgdGVhcmRvd24sIGJ1dCB0aGUgbWVhdCBpcyBpbiBzZW5kaW5nIGFuZCByZWNlaXZpbmcgZGF0YSBvbiB0aGlzIHByb3RvY29sLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODE3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDE6NDUuODQ1MTE1Mjg1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzE0NTI2MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieDI1X2Nvbm5lY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3gyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3gyNS9hZl94MjUuYz03MDg9c3RhdGljIGludCB4MjVfd2FpdF9mb3JfY29ubmVjdGlvbl9lc3RhYmxpc2htZW50KHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC94MjUvYWZfeDI1LmMtNzQxLVxcbm5ldC94MjUvYWZfeDI1LmM6NzQyOnN0YXRpYyBpbnQgeDI1X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKnVhZGRyLFxcbm5ldC94MjUvYWZfeDI1LmMtNzQzLVxcdFxcdCAgICAgICBpbnQgYWRkcl9sZW4sIGludCBmbGFncylcXG4tLVxcbm5ldC94MjUvYWZfeDI1LmM9MTczND1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyB4MjVfcHJvdG9fb3BzID0ge1xcbi0tXFxubmV0L3gyNS9hZl94MjUuYy0xNzM4LVxcdC5iaW5kID1cXHRcXHR4MjVfYmluZCxcXG5uZXQveDI1L2FmX3gyNS5jOjE3Mzk6XFx0LmNvbm5lY3QgPVxcdHgyNV9jb25uZWN0LFxcbm5ldC94MjUvYWZfeDI1LmMtMTc0MC1cXHQuc29ja2V0cGFpciA9XFx0c29ja19ub19zb2NrZXRwYWlyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzo0MTo0Ni4wNzY1NzcxMzNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzExNjMxNDgxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoZSByZWxldmFudCBmaWVsZDpcblxuKipBc3Nlc3NpbmcgdGhlIFN0YXR1cyBvZiBgeDI1X3JlbGVhc2VgKipcblxuQWxyaWdodCwgdGhlIGZpcnN0IHRoaW5nIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMgdG8gY2hlY2sgYHgyNV9yZWxlYXNlYC4gVGhhdOKAmXMgbXkgcHJpbWFyeSBwb2ludCBvZiBmb2N1cy4gSXQncyB0aGUga2V5IHZhcmlhYmxlIG9yIG1vZHVsZSBpbiBxdWVzdGlvbi4gSSBuZWVkIHRvIGtub3cgdGhlIGN1cnJlbnQgc3RhdGUuIElzIGl0IHN0YWJsZSwgc3RpbGwgaW4gZGV2ZWxvcG1lbnQsIHJlYWR5IGZvciBwcm9kdWN0aW9uLCBvciBleHBlcmllbmNpbmcgaXNzdWVzPyBLbm93aW5nIHRoZSBzdGF0dXMgb2YgYHgyNV9yZWxlYXNlYCBpcyB0aGUgbW9zdCBsb2dpY2FsIG5leHQgc3RlcC4gSSBuZWVkIGEgcXVpY2sgb3ZlcnZpZXcgb2YgaXRzIGNvbmRpdGlvbiBiZWZvcmUgbW92aW5nIGZvcndhcmQgd2l0aCBhbnl0aGluZyBlbHNlIHJlbGF0ZWQgdG8gdGhlIHByb2plY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NTgsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzo0MTo0OS4xOTI4OTQ3NjlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMzU1MDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIngyNV9yZWxlYXNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94MjUvYWZfeDI1LmM9NTgzPXN0YXRpYyBzdHJ1Y3Qgc29jayAqeDI1X21ha2VfbmV3KHN0cnVjdCBzb2NrICpvc2spXFxuLS1cXG5uZXQveDI1L2FmX3gyNS5jLTYyMC1cXG5uZXQveDI1L2FmX3gyNS5jOjYyMTpzdGF0aWMgaW50IHgyNV9yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXFxubmV0L3gyNS9hZl94MjUuYy02MjIte1xcbi0tXFxubmV0L3gyNS9hZl94MjUuYz0xNzM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHgyNV9wcm90b19vcHMgPSB7XFxuLS1cXG5uZXQveDI1L2FmX3gyNS5jLTE3MzYtXFx0Lm93bmVyID1cXHRUSElTX01PRFVMRSxcXG5uZXQveDI1L2FmX3gyNS5jOjE3Mzc6XFx0LnJlbGVhc2UgPVxcdHgyNV9yZWxlYXNlLFxcbm5ldC94MjUvYWZfeDI1LmMtMTczOC1cXHQuYmluZCA9XFx0XFx0eDI1X2JpbmQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjQxOjQ5LjI1MzI1NTE3NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTM2OTkzNjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgWC4yNSBUaW1lciBIYW5kbGluZyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3BlY2lmaWNhbGx5IGFkZHJlc3NpbmcgdGltZXIgYmVoYXZpb3Igd2l0aGluIHRoZSBYLjI1IGNvZGUuIFRoYXQgbWVhbnMgdGhlIGtleSBmdW5jdGlvbnMgdG8gZXhhbWluZSBhcmUgdGhvc2UgdGhhdCBpbnRlcmFjdCB3aXRoIHRpbWVycywgbGlrZWx5IGR1cmluZyBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQsIHRlYXJkb3duLCBhbmQgZGF0YSB0cmFuc2Zlci4gQmFzZWQgb24gdGhhdCwgSSdtIHRoaW5raW5nIHRoZSBwcmltYXJ5IHN5bWJvbHMgdG8gZm9jdXMgb24gYXJlIGB4MjVfY29ubmVjdGAsIGB4MjVfcmVsZWFzZWAsIGB4MjVfc2VuZG1zZ2AsIGFuZCBgeDI1X3JlY3Ztc2dgLiBUaGF0IGxvb2tzIGdvb2QuXG5cbk5vdywgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCwgbGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIGBDT05GSUdfWDI1YCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBzdWZmaWNpZW50IGZvciB0aGlzIHBhdGNoIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gSnVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBlbnN1cmUgdGhlIG5lY2Vzc2FyeSBjb2RlIHBhdGhzIGFyZSBlbmFibGVkLiBZZXAsIHNlZW1zIGxpa2UgaXQuXG5cbk5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGVzZSB0aW1lci1yZWxhdGVkIGZ1bmN0aW9ucy4gTGV0IG1lIGNoZWNrIHRoZSB2aXNpYmlsaXR5IG9mIHNvbWUgb2YgdGhlIHRpbWVyIGZ1bmN0aW9ucyB0aGVtc2VsdmVzLiBgeDI1X2Rlc3Ryb3lfdGltZXJgIGlzIHN0YXRpYywgZ29vZC4gU28gaXMgYF9feDI1X2Rlc3Ryb3lfc29ja2V0YC4gYHgyNV9zdGFydF9oZWFydGJlYXRgLCBldmVuIHRob3VnaCBpdCdzIG5vdCBzdGF0aWMsIGlzIGFuIGludGVybmFsIGhlbHBlciBzbyBpdCBzaG91bGRuJ3QgbWF0dGVyIHRvbyBtdWNoLiBgeDI1X2hlYXJ0YmVhdF9leHBpcnlgIGFuZCBgeDI1X3RpbWVyX2V4cGlyeWAgYXJlIGJvdGggc3RhdGljLiBTbyB0aGlzIGNvbmZpcm1zIG15IGluaXRpYWwgdGhvdWdodCBhYm91dCB0aGUgc29ja2V0IG9wZXJhdGlvbnMuXG5cblRoZSBtb3JlIEkgbG9vayBhdCB0aGlzLCB0aGUgbW9yZSBJIHJlYWxpemUgbXkgcHJldmlvdXMgbGlzdCBvZiBmb2N1cyBzeW1ib2xzIHNob3VsZCBlbmNvbXBhc3MgYWxsIHNvY2tldCBvcGVyYXRpb25zIHRoYXQgbWlnaHQgdHJpZ2dlciB0aGVzZSB0aW1lcnMuIFNvLCB0byBiZSBjb21wbGV0ZSwgSSBuZWVkIHRvIGluY2x1ZGU6IGB4MjVfY29ubmVjdGAsIGB4MjVfcmVsZWFzZWAsIGB4MjVfYmluZGAsIGB4MjVfbGlzdGVuYCwgYHgyNV9hY2NlcHRgLCBgeDI1X3NlbmRtc2dgLCBhbmQgYHgyNV9yZWN2bXNnYC5cblxuSnVzdCB0byBjb3ZlciBhbGwgYmFzZXMsIGxldCBtZSBjaGVjayB0aGUgdmlzaWJpbGl0eSBvZiBgeDI1X2NyZWF0ZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4OTEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDE6NTUuMTkwMjUxMTA2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjkxODAyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieDI1X2NyZWF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveDI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveDI1L2FmX3gyNS5jPTUwND1zdGF0aWMgc3RydWN0IHNvY2sgKngyNV9hbGxvY19zb2NrZXQoc3RydWN0IG5ldCAqbmV0LCBpbnQga2VybilcXG4tLVxcbm5ldC94MjUvYWZfeDI1LmMtNTIyLVxcbm5ldC94MjUvYWZfeDI1LmM6NTIzOnN0YXRpYyBpbnQgeDI1X2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBwcm90b2NvbCxcXG5uZXQveDI1L2FmX3gyNS5jLTUyNC1cXHRcXHQgICAgICBpbnQga2VybilcXG4tLVxcbm5ldC94MjUvYWZfeDI1LmM9MTYxOT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9wcm90b19mYW1pbHkgeDI1X2ZhbWlseV9vcHMgPSB7XFxubmV0L3gyNS9hZl94MjUuYy0xNjIwLVxcdC5mYW1pbHkgPVxcdEFGX1gyNSxcXG5uZXQveDI1L2FmX3gyNS5jOjE2MjE6XFx0LmNyZWF0ZSA9XFx0eDI1X2NyZWF0ZSxcXG5uZXQveDI1L2FmX3gyNS5jLTE2MjItXFx0Lm93bmVyXFx0PVxcdFRISVNfTU9EVUxFLFxcbi0tXFxubmV0L3gyNS94MjVfZmFjaWxpdGllcy5jPTQxPWludCB4MjVfcGFyc2VfZmFjaWxpdGllcyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeDI1X2ZhY2lsaXRpZXMgKmZhY2lsaXRpZXMsXFxuLS1cXG5uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmMtMTg3LSAqL1xcbm5ldC94MjUveDI1X2ZhY2lsaXRpZXMuYzoxODg6aW50IHgyNV9jcmVhdGVfZmFjaWxpdGllcyh1bnNpZ25lZCBjaGFyICpidWZmZXIsXFxubmV0L3gyNS94MjVfZmFjaWxpdGllcy5jLTE4OS1cXHRcXHRzdHJ1Y3QgeDI1X2ZhY2lsaXRpZXMgKmZhY2lsaXRpZXMsXFxuLS1cXG5uZXQveDI1L3gyNV9zdWJyLmM9MTEwPXZvaWQgeDI1X3dyaXRlX2ludGVybmFsKHN0cnVjdCBzb2NrICpzaywgaW50IGZyYW1ldHlwZSlcXG4tLVxcbm5ldC94MjUveDI1X3N1YnIuYy0xODctXFx0XFx0XFx0c2tiX3B1dF9kYXRhKHNrYiwgYWRkcmVzc2VzLCBsZW4pO1xcbm5ldC94MjUveDI1X3N1YnIuYzoxODg6XFx0XFx0XFx0bGVuICAgICA9IHgyNV9jcmVhdGVfZmFjaWxpdGllcyhmYWNpbGl0aWVzLFxcbm5ldC94MjUveDI1X3N1YnIuYy0xODktXFx0XFx0XFx0XFx0XFx0XFx1MDAyNngyNS1cXHUwMDNlZmFjaWxpdGllcyxcXG4tLVxcbm5ldC94MjUveDI1X3N1YnIuYy0yMDEtXFx0XFx0XFx0KmRwdHIrKyA9IDB4MDA7XFx0XFx0LyogQWRkcmVzcyBsZW5ndGhzICovXFxubmV0L3gyNS94MjVfc3Vici5jOjIwMjpcXHRcXHRcXHRsZW4gICAgID0geDI1X2NyZWF0ZV9mYWNpbGl0aWVzKGZhY2lsaXRpZXMsXFxubmV0L3gyNS94MjVfc3Vici5jLTIwMy1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2eDI1LVxcdTAwM2VmYWNpbGl0aWVzLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzo0MTo1NS4zNTk0MzY0MDZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYzOTM1MzgyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipYLjI1IEZ1bmN0aW9uIENhbGwgQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIFguMjUgY29kZSwgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBhdCBtZSBpcyB0aGF0IHRoZXNlIGNvcmUgZnVuY3Rpb25zLCBgeDI1X2NyZWF0ZWAsIGB4MjVfY29ubmVjdGAsIGB4MjVfcmVsZWFzZWAsIGB4MjVfYmluZGAsIGB4MjVfbGlzdGVuYCwgYHgyNV9hY2NlcHRgLCBgeDI1X3NlbmRtc2dgLCBhbmQgYHgyNV9yZWN2bXNnYCBhcmUgYWxsIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBUaGF0J3MgdW51c3VhbCwgYW5kIGltbWVkaWF0ZWx5IHJhaXNlcyBhIHF1ZXN0aW9uIGluIG15IG1pbmQuXG5cbklmIHRoZXNlIGNyaXRpY2FsIG5ldHdvcmsgZnVuY3Rpb25zIGFyZSBgc3RhdGljYCwgdGhleSdyZSBvbmx5IHZpc2libGUgd2l0aGluIHRoZSBjb21waWxhdGlvbiB1bml0IGluIGBuZXQveDI1L2FmX3gyNS5jYC4gQnV0IHRoYXQgY2FuJ3QgYmUgKmFsbCogdGhlcmUgaXMgdG8gWC4yNSwgY2FuIGl0PyBUaGVyZSAqbXVzdCogYmUgcHVibGljIGVudHJ5IHBvaW50cyBzb21ld2hlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsIGFyZSBzdXBwb3NlZCB0byBpbnRlcmFjdCB3aXRoIHRoZSBYLjI1IHN0YWNrLiBTbywgdGhlIGZvbGxvdy11cCBxdWVzdGlvbiBpczogV2hlcmUgYXJlIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGBuZXQveDI1L2FmX3gyNS5jYD8gV2hhdCBhcmUgdGhlIGludGVyZmFjZSBwb2ludHMgaW50byB0aGUgWC4yNSBsYXllcj8gSSdtIGdvaW5nIHRvIGhhdmUgdG8gZGlnIGRlZXBlciBoZXJlLiBUaGVyZSBoYXMgdG8gYmUgYSBtZWNoYW5pc20gZm9yIG90aGVyIGtlcm5lbCBtb2R1bGVzIHRvIGNhbGwgaW50byB0aGlzIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyNzQsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDE6NTkuOTk4NzkyNTg4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjEyNTM4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeaW50IHgyNV9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3gyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3gyNS9hZl94MjUuYz03Nj1zdHJ1Y3QgY29tcGF0X3gyNV9zdWJzY3JpcF9zdHJ1Y3Qge1xcbi0tXFxubmV0L3gyNS9hZl94MjUuYy04My1cXG5uZXQveDI1L2FmX3gyNS5jOjg0OmludCB4MjVfcGFyc2VfYWRkcmVzc19ibG9jayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC94MjUvYWZfeDI1LmMtODUtXFx0XFx0c3RydWN0IHgyNV9hZGRyZXNzICpjYWxsZWRfYWRkcixcXG4tLVxcbm5ldC94MjUvYWZfeDI1LmMtMTE3LVxcbm5ldC94MjUvYWZfeDI1LmM6MTE4OmludCB4MjVfYWRkcl9udG9hKHVuc2lnbmVkIGNoYXIgKnAsIHN0cnVjdCB4MjVfYWRkcmVzcyAqY2FsbGVkX2FkZHIsXFxubmV0L3gyNS9hZl94MjUuYy0xMTktXFx0XFx0ICBzdHJ1Y3QgeDI1X2FkZHJlc3MgKmNhbGxpbmdfYWRkcilcXG4tLVxcbm5ldC94MjUvYWZfeDI1LmMtMTU0LVxcbm5ldC94MjUvYWZfeDI1LmM6MTU1OmludCB4MjVfYWRkcl9hdG9uKHVuc2lnbmVkIGNoYXIgKnAsIHN0cnVjdCB4MjVfYWRkcmVzcyAqY2FsbGVkX2FkZHIsXFxubmV0L3gyNS9hZl94MjUuYy0xNTYtXFx0XFx0ICBzdHJ1Y3QgeDI1X2FkZHJlc3MgKmNhbGxpbmdfYWRkcilcXG4tLVxcbm5ldC94MjUvYWZfeDI1LmM9OTEyPXN0YXRpYyBpbnQgeDI1X2dldG5hbWUoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1YWRkcixcXG4tLVxcbm5ldC94MjUvYWZfeDI1LmMtOTM1LVxcbm5ldC94MjUvYWZfeDI1LmM6OTM2OmludCB4MjVfcnhfY2FsbF9yZXF1ZXN0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4MjVfbmVpZ2ggKm5iLFxcbm5ldC94MjUvYWZfeDI1LmMtOTM3LVxcdFxcdFxcdHVuc2lnbmVkIGludCBsY2kpXFxuLS1cXG5uZXQveDI1L3gyNV9kZXYuYz0yNj1zdGF0aWMgaW50IHgyNV9yZWNlaXZlX2RhdGEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHgyNV9uZWlnaCAqbmIpXFxuLS1cXG5uZXQveDI1L3gyNV9kZXYuYy05My1cXG5uZXQveDI1L3gyNV9kZXYuYzo5NDppbnQgeDI1X2xhcGJfcmVjZWl2ZV9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC94MjUveDI1X2Rldi5jLTk1LVxcdFxcdFxcdCAgIHN0cnVjdCBwYWNrZXRfdHlwZSAqcHR5cGUsIHN0cnVjdCBuZXRfZGV2aWNlICpvcmlnX2RldilcXG4tLVxcbm5ldC94MjUveDI1X2ZhY2lsaXRpZXMuYy00MC0gKi9cXG5uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmM6NDE6aW50IHgyNV9wYXJzZV9mYWNpbGl0aWVzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4MjVfZmFjaWxpdGllcyAqZmFjaWxpdGllcyxcXG5uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmMtNDItXFx0XFx0c3RydWN0IHgyNV9kdGVfZmFjaWxpdGllcyAqZHRlX2ZhY3MsIHVuc2lnbmVkIGxvbmcgKnZjX2ZhY19tYXNrKVxcbi0tXFxubmV0L3gyNS94MjVfZmFjaWxpdGllcy5jLTE4Ny0gKi9cXG5uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmM6MTg4OmludCB4MjVfY3JlYXRlX2ZhY2lsaXRpZXModW5zaWduZWQgY2hhciAqYnVmZmVyLFxcbm5ldC94MjUveDI1X2ZhY2lsaXRpZXMuYy0xODktXFx0XFx0c3RydWN0IHgyNV9mYWNpbGl0aWVzICpmYWNpbGl0aWVzLFxcbi0tXFxubmV0L3gyNS94MjVfZmFjaWxpdGllcy5jLTI2NC0gKi9cXG5uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmM6MjY1OmludCB4MjVfbmVnb3RpYXRlX2ZhY2lsaXRpZXMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2sgKnNrLFxcbm5ldC94MjUveDI1X2ZhY2lsaXRpZXMuYy0yNjYtXFx0XFx0c3RydWN0IHgyNV9mYWNpbGl0aWVzICpuZXcsIHN0cnVjdCB4MjVfZHRlX2ZhY2lsaXRpZXMgKmR0ZSlcXG4tLVxcbm5ldC94MjUveDI1X2ZvcndhcmQuYz0xNT1ERUZJTkVfUldMT0NLKHgyNV9mb3J3YXJkX2xpc3RfbG9jayk7XFxubmV0L3gyNS94MjVfZm9yd2FyZC5jLTE2LVxcbm5ldC94MjUveDI1X2ZvcndhcmQuYzoxNzppbnQgeDI1X2ZvcndhcmRfY2FsbChzdHJ1Y3QgeDI1X2FkZHJlc3MgKmRlc3RfYWRkciwgc3RydWN0IHgyNV9uZWlnaCAqZnJvbSxcXG5uZXQveDI1L3gyNV9mb3J3YXJkLmMtMTgtXFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGxjaSlcXG4tLVxcbm5ldC94MjUveDI1X2ZvcndhcmQuYy04OC1cXG5uZXQveDI1L3gyNV9mb3J3YXJkLmM6ODk6aW50IHgyNV9mb3J3YXJkX2RhdGEoaW50IGxjaSwgc3RydWN0IHgyNV9uZWlnaCAqZnJvbSwgc3RydWN0IHNrX2J1ZmYgKnNrYikge1xcbm5ldC94MjUveDI1X2ZvcndhcmQuYy05MC1cXG4tLVxcbm5ldC94MjUveDI1X2luLmM9MzkzPXN0YXRpYyBpbnQgeDI1X3N0YXRlNV9tYWNoaW5lKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGZyYW1ldHlwZSlcXG4tLVxcbm5ldC94MjUveDI1X2luLmMtNDE3LS8qIEhpZ2hlciBsZXZlbCB1cGNhbGwgZm9yIGEgTEFQQiBmcmFtZSAqL1xcbm5ldC94MjUveDI1X2luLmM6NDE4OmludCB4MjVfcHJvY2Vzc19yeF9mcmFtZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3gyNS94MjVfaW4uYy00MTkte1xcbi0tXFxubmV0L3gyNS94MjVfaW4uYy00NTAtXFxubmV0L3gyNS94MjVfaW4uYzo0NTE6aW50IHgyNV9iYWNrbG9nX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3gyNS94MjVfaW4uYy00NTIte1xcbi0tXFxubmV0L3gyNS94MjVfbGluay5jPTMzMj1zdHJ1Y3QgeDI1X25laWdoICp4MjVfZ2V0X25laWdoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQveDI1L3gyNV9saW5rLmMtMzUyLSAqL1xcbm5ldC94MjUveDI1X2xpbmsuYzozNTM6aW50IHgyNV9zdWJzY3JfaW9jdGwodW5zaWduZWQgaW50IGNtZCwgdm9pZCBfX3VzZXIgKmFyZylcXG5uZXQveDI1L3gyNV9saW5rLmMtMzU0LXtcXG4tLVxcbm5ldC94MjUveDI1X291dC5jPTI4PXN0YXRpYyBpbnQgeDI1X3BhY3NpemVfdG9fYnl0ZXModW5zaWduZWQgaW50IHBhY3NpemUpXFxuLS1cXG5uZXQveDI1L3gyNV9vdXQuYy00Ni0gKi9cXG5uZXQveDI1L3gyNV9vdXQuYzo0NzppbnQgeDI1X291dHB1dChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3gyNS94MjVfb3V0LmMtNDgte1xcbi0tXFxubmV0L3gyNS94MjVfcm91dGUuYz0xMzU9c3RydWN0IHgyNV9yb3V0ZSAqeDI1X2dldF9yb3V0ZShzdHJ1Y3QgeDI1X2FkZHJlc3MgKmFkZHIpXFxuLS1cXG5uZXQveDI1L3gyNV9yb3V0ZS5jLTE1OS0gKi9cXG5uZXQveDI1L3gyNV9yb3V0ZS5jOjE2MDppbnQgeDI1X3JvdXRlX2lvY3RsKHVuc2lnbmVkIGludCBjbWQsIHZvaWQgX191c2VyICphcmcpXFxubmV0L3gyNS94MjVfcm91dGUuYy0xNjEte1xcbi0tXFxubmV0L3gyNS94MjVfc3Vici5jPTY5PXZvaWQgeDI1X3JlcXVldWVfZnJhbWVzKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC94MjUveDI1X3N1YnIuYy05MC0gKi9cXG5uZXQveDI1L3gyNV9zdWJyLmM6OTE6aW50IHgyNV92YWxpZGF0ZV9ucihzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIHNob3J0IG5yKVxcbm5ldC94MjUveDI1X3N1YnIuYy05Mi17XFxuLS1cXG5uZXQveDI1L3gyNV9zdWJyLmM9MTEwPXZvaWQgeDI1X3dyaXRlX2ludGVybmFsKHN0cnVjdCBzb2NrICpzaywgaW50IGZyYW1ldHlwZSlcXG4tLVxcbm5ldC94MjUveDI1X3N1YnIuYy0yNjAtICovXFxubmV0L3gyNS94MjVfc3Vici5jOjI2MTppbnQgeDI1X2RlY29kZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsIGludCAqbnMsIGludCAqbnIsIGludCAqcSxcXG5uZXQveDI1L3gyNV9zdWJyLmMtMjYyLVxcdCAgICAgICBpbnQgKmQsIGludCAqbSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDI6MDAuMDYwOTIyNTQ1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5NDY2OTg4MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgVGhvdWdodCBQcm9jZXNzIG9uIElkZW50aWZ5aW5nIEZvY3VzIFN5bWJvbHMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gY2hvb3NlIHNvbWUgZ29vZCBmb2N1cyBzeW1ib2xzIGZvciB0aGlzIGFuYWx5c2lzLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSB3YW50cyBtZSB0byBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zLCBub3QgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIEkgaW5pdGlhbGx5IGNvbnNpZGVyZWQgdGhlIGNvcmUgWC4yNSBzb2NrZXQgb3BlcmF0aW9uczogYHgyNV9jcmVhdGVgLCBgeDI1X2Nvbm5lY3RgLCBgeDI1X3JlbGVhc2VgLCBgeDI1X2JpbmRgLCBgeDI1X2xpc3RlbmAsIGB4MjVfYWNjZXB0YCwgYHgyNV9zZW5kbXNnYCwgYW5kIGB4MjVfcmVjdm1zZ2AuIFRoZXNlIHNlZW0gbGlrZSB0aGUgb2J2aW91cyBjYW5kaWRhdGVzIHNpbmNlIHRoZXkgYXJlIHRoZSBtYWluIHNvY2tldCBvcGVyYXRpb25zLiBCdXQsIGFyZSB0aGV5IGlubGluZWQ/XG5cbkkgcmVtZW1iZXIgdGhlc2UgZnVuY3Rpb25zIGFyZSBwYXNzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIGB4MjVfcHJvdG9fb3BzYCBhbmQgYHgyNV9mYW1pbHlfb3BzYC4gU28gdGhleSAqc2hvdWxkbid0KiBiZSBpbmxpbmVkLiBUaGF0IG1lYW5zIHRoZXkgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLCBtYWtpbmcgdGhlbSB2YWxpZCBmb2N1cyBzeW1ib2xzLiBTcGVjaWZpY2FsbHksIEknbGwgY29uZmlybSB0aGF0IGB4MjVfY29ubmVjdGAgaXMgaW5kZWVkIHBhc3NlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIuIFllcywgY29uZmlybWVkLiBHb29kLCB0aGV5IGFyZSB2aWFibGUuXG5cbk5leHQsIEknbGwgcXVpY2tseSBzY2FuIHRoZSBmdW5jdGlvbnMgaW4gYHgyNV90aW1lci5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBwcm9taXNpbmcgY2FuZGlkYXRlcy4gSSBzZWUgZnVuY3Rpb25zIGxpa2UgYHgyNV9zdGFydF9oZWFydGJlYXRgLCBgeDI1X3N0b3BfaGVhcnRiZWF0YCwgYHgyNV9zdGFydF90MnRpbWVyYCwgZXRjLiBUaGVzZSBhcmUgbm9uLXN0YXRpYyBidXQgc2VlbSB0byBiZSBpbnRlcm5hbC4gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXkgYXJlIGV4cG9ydGVkIG9yIGp1c3QgdXNlZCB3aXRoaW4gdGhlIG1vZHVsZS4gRnJvbSBhIHF1aWNrIGdsYW5jZSwgdGhleSBhcmUgbW9zdGx5IG1vZHVsZS1pbnRlcm5hbCwgc28gcHJvYmFibHkgbm90IGdvb2QgY2FuZGlkYXRlcyBmb3IgZGlyZWN0IGZvY3VzLiBJIHRoZW4gY29uc2lkZXIgYHgyNV9pbml0X3RpbWVyc2Agd2hpY2ggaXMgY2FsbGVkIGZyb20gYHgyNV9hbGxvY19zb2NrZXRgLCBhbmQgYHgyNV9zdGFydF9oZWFydGJlYXRgIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGB4MjVfYWxsb2Nfc29ja2V0YCBhbmQgYHgyNV9oZWFydGJlYXRfZXhwaXJ5YC5cblxuVGhpbmtpbmcgbW9yZSBicm9hZGx5LCBJIG5lZWQgdG8gbG9vayBmb3IgZnVuY3Rpb25zIHRoYXQgYXJlIGNyaXRpY2FsIHRvIHRoZSBiZWhhdmlvciBiZWluZyBtb2RpZmllZC4gQmVzaWRlcyB0aGUgc29ja2V0IG9wZXJhdGlvbnMsIEkgc2hvdWxkIGNvbnNpZGVyIHRoZSBmdW5jdGlvbnMgdGhhdCBoYW5kbGUgZnJhbWUgcmVjZXB0aW9uIGFuZCB0aW1lciBleHBpcnkuIE15IGZpcnN0IHBhc3MgYXQgcG90ZW50aWFsIGNhbmRpZGF0ZXMgYXJlOiBgeDI1X2Nvbm5lY3RgLCBgeDI1X3JlbGVhc2VgLCBgeDI1X3J4X2NhbGxfcmVxdWVzdGAsIGB4MjVfbGFwYl9yZWNlaXZlX2ZyYW1lYCwgYHgyNV9wcm9jZXNzX3J4X2ZyYW1lYCwgYHgyNV90aW1lcl9leHBpcnlgLCBhbmQgYHgyNV9oZWFydGJlYXRfZXhwaXJ5YC5cblxuV2FpdCBhIG1pbnV0ZSwgYHgyNV90aW1lcl9leHBpcnlgIGFuZCBgeDI1X2hlYXJ0YmVhdF9leHBpcnlgIGFyZSB0aGUgKmFjdHVhbCogdGltZXIgY2FsbGJhY2tzLCBhbmQgdGhleSB3ZXJlIHRoZSB0YXJnZXRzIG9mIHRoZSBtb2RpZmljYXRpb25zISBUaGV5IGFyZSBzdGF0aWMsIGJ1dCBJIHJlbWVtYmVyIHRoZXkncmUgcGFzc2VkIHRvIGB0aW1lcl9zZXR1cGAuIFRoaXMgbWVhbnMgdGhleSBhcmUgKm5vdCogaW5saW5lZCBhbmQgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLiBUaGV5IGFyZSAqZXhjZWxsZW50KiBmb2N1cyBzeW1ib2xzLiBUaGV5IGFyZSB0aGUgY29yZSBvZiB0aGUgdGltZXIgbG9naWMgSSBhbSBsb29raW5nIGF0LiBJIHdpbGwgbm93IGV4YW1pbmUgdGhlc2UgY2xvc2VseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2NzgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDI6MDkuMDA3NjI0MDI3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTYwNTUyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4MjVfdGltZXJfZXhwaXJ5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94MjUveDI1X3RpbWVyLmM9MjQ9c3RhdGljIHZvaWQgeDI1X2hlYXJ0YmVhdF9leHBpcnkoc3RydWN0IHRpbWVyX2xpc3QgKnQpO1xcbm5ldC94MjUveDI1X3RpbWVyLmM6MjU6c3RhdGljIHZvaWQgeDI1X3RpbWVyX2V4cGlyeShzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7XFxubmV0L3gyNS94MjVfdGltZXIuYy0yNi1cXG5uZXQveDI1L3gyNV90aW1lci5jPTI3PXZvaWQgeDI1X2luaXRfdGltZXJzKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC94MjUveDI1X3RpbWVyLmMtMzAtXFxubmV0L3gyNS94MjVfdGltZXIuYzozMTpcXHR0aW1lcl9zZXR1cChcXHUwMDI2eDI1LVxcdTAwM2V0aW1lciwgeDI1X3RpbWVyX2V4cGlyeSwgMCk7XFxubmV0L3gyNS94MjVfdGltZXIuYy0zMi1cXG4tLVxcbm5ldC94MjUveDI1X3RpbWVyLmM9MTM3PXN0YXRpYyBpbmxpbmUgdm9pZCB4MjVfZG9fdGltZXJfZXhwaXJ5KHN0cnVjdCBzb2NrICogc2spXFxuLS1cXG5uZXQveDI1L3gyNV90aW1lci5jLTE2Mi1cXG5uZXQveDI1L3gyNV90aW1lci5jOjE2MzpzdGF0aWMgdm9pZCB4MjVfdGltZXJfZXhwaXJ5KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbm5ldC94MjUveDI1X3RpbWVyLmMtMTY0LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDI6MDkuMDY5MjM2NzczWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NDA2NDQxODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkFuYWx5emluZyB0aGUgVGltZXIgQ2FsbGJhY2sgQ2hhbmdlcyoqXG5cblJpZ2h0LCBzbyBJIHNlZSB3ZSdyZSBkZWFsaW5nIHdpdGggdGltZXIgY2FsbGJhY2tzIGluIHRoaXMgcGF0Y2guIFNwZWNpZmljYWxseSwgYHgyNV90aW1lcl9leHBpcnlgIGFuZCBgeDI1X2hlYXJ0YmVhdF9leHBpcnlgIGFyZSB0aGUgdHdvIG1haW4gY2FsbGJhY2tzIHRoYXQgaGF2ZSBiZWVuIGlkZW50aWZpZWQgYXMgdGltZXItcmVsYXRlZCBpbiB0aGlzIHNlY3Rpb24gb2YgY29kZS4gTWFrZXMgcGVyZmVjdCBzZW5zZTsgdGhleSdyZSBuYW1lZCBhZnRlciBleHBpcnkgZXZlbnRzLCBzbyB0aGF0J3MgYSBwcmV0dHkgY2xlYXIgaW5kaWNhdG9yLiBBbmQgbGV0J3Mgbm90IGZvcmdldCBgeDI1X2Rlc3Ryb3lfdGltZXJgLiBJdCdzIGFub3RoZXIgY2FsbGJhY2sgZnVuY3Rpb24sIHRoaXMgb25lIGRlYWxpbmcgd2l0aCB0aW1lciBkZXN0cnVjdGlvbi4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRob3NlIHRocmVlIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5LCB0byBmdWxseSBncmFzcCB3aGF0IHRoaXMgcGF0Y2ggaXMgZG9pbmcgd2l0aCBYLjI1IHRpbWVycy4gVGhlIGNoYW5nZXMgY291bGQgaW52b2x2ZSBob3cgdGhlIHRpbWVycyBhcmUgaW5pdGlhbGl6ZWQsIGhvdyB0aGVpciBleHBpcmF0aW9ucyBhcmUgaGFuZGxlZCwgb3IgZXZlbiB0aGUgcHJvY2VzcyBvZiBjbGVhbmluZyB1cCB0aGVzZSB0aW1lcnMuIFRpbWUgdG8gZGl2ZSBkZWVwZXIgYW5kIGFuYWx5emUgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjgwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDI6MTIuNzA5ODgzNDUxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTA4NTQyNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieDI1X2Rlc3Ryb3lfdGltZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3gyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3gyNS9hZl94MjUuYz0zNTY9c3RhdGljIHZvaWQgX194MjVfZGVzdHJveV9zb2NrZXQoc3RydWN0IHNvY2sgKik7XFxuLS1cXG5uZXQveDI1L2FmX3gyNS5jLTM2MC0gKi9cXG5uZXQveDI1L2FmX3gyNS5jOjM2MTpzdGF0aWMgdm9pZCB4MjVfZGVzdHJveV90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG5uZXQveDI1L2FmX3gyNS5jLTM2Mi17XFxuLS1cXG5uZXQveDI1L2FmX3gyNS5jPTM3Nj1zdGF0aWMgdm9pZCBfX3gyNV9kZXN0cm95X3NvY2tldChzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQveDI1L2FmX3gyNS5jLTQwMS1cXHRcXHQvKiBEZWZlcjogb3V0c3RhbmRpbmcgYnVmZmVycyAqL1xcbm5ldC94MjUvYWZfeDI1LmM6NDAyOlxcdFxcdHNrLVxcdTAwM2Vza190aW1lci5mdW5jdGlvbiA9IHgyNV9kZXN0cm95X3RpbWVyO1xcbm5ldC94MjUvYWZfeDI1LmMtNDAzLVxcdFxcdHNrX3Jlc2V0X3RpbWVyKHNrLCBcXHUwMDI2c2stXFx1MDAzZXNrX3RpbWVyLCBqaWZmaWVzICsgMTAgKiBIWik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjQyOjEyLjkyMDc0NTY1OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDk0MTkyMTEzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipYLjI1IFRpbWVyIEZpeGVzIGFuZCBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBYLjI1IHBhdGNoIGFuZCBJJ3ZlIGdvdCBhIGdvb2QgaGFuZGxlIG9uIHdoYXQncyBnb2luZyBvbi4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBmaXhpbmcgc29tZSB0aW1lciByZWZlcmVuY2UgY291bnRpbmcgaXNzdWVzLCB3aGljaCwgaWYgbGVmdCB1bmZpeGVkLCBjb3VsZCBkZWZpbml0ZWx5IGxlYWQgdG8gc29tZSBuYXN0eSBtZW1vcnkgbWFuYWdlbWVudCBwcm9ibGVtcyBkb3duIHRoZSBsaW5lLiBJJ20gdGhpbmtpbmcsIHRoaXMgZGVmaW5pdGVseSBuZWVkcyBmdXp6aW5nLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGlkZW50aWZ5IGZvY3VzIHN5bWJvbHMuIEkgdGhpbmsgdGhlc2UgYXJlIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdG8gdGFyZ2V0OiBgeDI1X2Rlc3Ryb3lfdGltZXJgLCBgeDI1X2hlYXJ0YmVhdF9leHBpcnlgLCBgeDI1X3RpbWVyX2V4cGlyeWAsIGB4MjVfY29ubmVjdGAsIGB4MjVfcmVsZWFzZWAuIEhvd2V2ZXIsIEkndmUgZXhwYW5kZWQgdGhlIGxpc3QgdG8gaW5jbHVkZSBgeDI1X2JpbmRgLCBgeDI1X2xpc3RlbmAsIGFuZCBgeDI1X2FjY2VwdGAgYXMgd2VsbCwgYXMgdGhleSBhcmUgZXNzZW50aWFsIGVudHJ5IHBvaW50cyBpbnRvIFguMjUgc29ja2V0IHVzYWdlLlxuXG5XYWl0IGEgbWludXRlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGZ1bmN0aW9uIGB4MjVfZGVzdHJveV90aW1lcmAgd2hpY2ggaXMgc3RhdGljIGFuZCBhIHRpbWVyIGNhbGxiYWNrLCBpcyB2YWxpZCBhcyBhIGZvY3VzIHN5bWJvbC4gSWYgaXQncyBub3QgaW5saW5lZCwgdGhlbiB0aGUgc3RhdGljIHF1YWxpZmllciBzaG91bGQgbm90IGJlIGFuIGlzc3VlIGFzIHRoZSBmdW5jdGlvbiB3aWxsIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gT2theSwgdGhhdCBjaGVja3Mgb3V0LlxuXG5Ob3csIGxldCdzIHNlZSwgd2hhdCBlbHNlIG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQ/IEZyb20gYSBjb25maWd1cmF0aW9uIHN0YW5kcG9pbnQsIEkgYmVsaWV2ZSBgQ09ORklHX1gyNWAgaXMgdGhlIG9ubHkgcmVsZXZhbnQgZmxhZyB0byBlbmFibGUuXG5cbkkndmUgdGFrZW4gYSBjbG9zZXIgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmIHRvIGVuc3VyZSBJIGRpZG4ndCBtaXNzIGFueXRoaW5nLiBJdCBhcHBlYXJzIHRoZSBjaGFuZ2VzIGFyZSBzcG90IG9uLiBgc29ja19wdXQoc2spYCBpcyBjb3JyZWN0bHkgYWRkZWQgYXQgdGhlIGVuZCBvZiB0aGUgdGltZXIgY2FsbGJhY2tzIChgeDI1X2Rlc3Ryb3lfdGltZXJgLCBgeDI1X2hlYXJ0YmVhdF9leHBpcnlgLCBgeDI1X3RpbWVyX2V4cGlyeWApLiBUaGlzIGlzIGNydWNpYWwgYmVjYXVzZSBpdCBlbnN1cmVzIHRoZSByZWZlcmVuY2UgdGFrZW4gYnkgYHNrX3Jlc2V0X3RpbWVyYCBvciBgYWRkX3RpbWVyYCBpcyBkcm9wcGVkIHByb3Blcmx5LiBJJ3ZlIGFsc28gdmVyaWZpZWQgdGhhdCB0aGUgcGF0Y2ggY29ycmVjdGx5IHVzZXMgYHNrX3Jlc2V0X3RpbWVyYCwgYW5kIGZyb20gd2hhdCBJIGNhbiB0ZWxsLCBpdCdzIG9wZXJhdGluZyBhcyBpbnRlbmRlZC4gSXQgYWRkcyBhIHJlZmVyZW5jZSB3aGVuIGEgdGltZXIgaXMgYXJtZWQgYW5kIGRyb3BzIGl0IHdoZW4gdGhlIHRpbWVyIGlzIHN0b3BwZWQgb3IgZXhlY3V0ZWQuIFRoaXMgcHJldmVudHMgZG91YmxlLWZyZWVzLiBUaGUgaGVhcnRiZWF0IGltcGxlbWVudGF0aW9uIGFsc28gY2hlY2tzIGlmIHRoZSBzb2NrZXQgaGFzIGJlZW4gdW5saW5rZWQgYmVmb3JlIHJlYXJtaW5nIHRoZSBoZWFydGJlYXQuXG5cblNvLCBvdmVyYWxsLCB0aGlzIHBhdGNoIGlzIGEgZnVuY3Rpb25hbCBpbXByb3ZlbWVudC4gVGhlIGFkZGl0aW9uIG9mIGZ1enppbmcgZm9jdXMgc3ltYm9scyBhbmQgZW5hYmxpbmcgYENPTkZJR19YMjVgIHNlZW0gbGlrZSBhIGdvb2QgYXBwcm9hY2ggdG8gZW5zdXJlIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBjaGFuZ2VzLiBJJ20gc2F0aXNmaWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjgzMiwiT3V0cHV0VG9rZW5zIjoxODgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDI6MjMuODYyNjY5OTYxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUwNDM3MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlgyNVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIngyNV9kZXN0cm95X3RpbWVyXCIsXG4gICAgXCJ4MjVfaGVhcnRiZWF0X2V4cGlyeVwiLFxuICAgIFwieDI1X3RpbWVyX2V4cGlyeVwiLFxuICAgIFwieDI1X2Nvbm5lY3RcIixcbiAgICBcIngyNV9yZWxlYXNlXCIsXG4gICAgXCJ4MjVfYmluZFwiLFxuICAgIFwieDI1X2xpc3RlblwiLFxuICAgIFwieDI1X2FjY2VwdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHRpbWVyIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgcmVhcm1pbmcgbG9naWMgaW4gdGhlIFguMjUgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24uIEl0IHJlcGxhY2VzIHJhdyB0aW1lciBBUEkgY2FsbHMgd2l0aCBzb2NrZXQgdGltZXIgZnVuY3Rpb25zIChza19yZXNldF90aW1lciwgc2tfc3RvcF90aW1lcikgYW5kIGFkZHMgbWlzc2luZyBzb2NrX3B1dCgpIGNhbGxzIGluIHRpbWVyIGNhbGxiYWNrcyB0byBwcmV2ZW50IHVzZS1hZnRlci1mcmVlIG9yIG1lbW9yeSBsZWFrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgcHJvdG9jb2wgY29kZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYMjVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4MjVfZGVzdHJveV90aW1lclwiLFxuICAgIFwieDI1X2hlYXJ0YmVhdF9leHBpcnlcIixcbiAgICBcIngyNV90aW1lcl9leHBpcnlcIixcbiAgICBcIngyNV9jb25uZWN0XCIsXG4gICAgXCJ4MjVfcmVsZWFzZVwiLFxuICAgIFwieDI1X2JpbmRcIixcbiAgICBcIngyNV9saXN0ZW5cIixcbiAgICBcIngyNV9hY2NlcHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyB0aW1lciByZWZlcmVuY2UgY291bnRpbmcgYW5kIHJlYXJtaW5nIGxvZ2ljIGluIHRoZSBYLjI1IHByb3RvY29sIGltcGxlbWVudGF0aW9uLiBJdCByZXBsYWNlcyByYXcgdGltZXIgQVBJIGNhbGxzIHdpdGggc29ja2V0IHRpbWVyIGZ1bmN0aW9ucyAoc2tfcmVzZXRfdGltZXIsIHNrX3N0b3BfdGltZXIpIGFuZCBhZGRzIG1pc3Npbmcgc29ja19wdXQoKSBjYWxscyBpbiB0aW1lciBjYWxsYmFja3MgdG8gcHJldmVudCB1c2UtYWZ0ZXItZnJlZSBvciBtZW1vcnkgbGVha3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JrIHByb3RvY29sIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowrvhfv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-27 07:20:54 +0000 UTC FinishedAt: 2026-07-27 07:42:25 +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": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "X25" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "X25" ], "series_id": "5fbdb97a-8f3c-46e0-9f9e-a303770c7901" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "x25_destroy_timer", "x25_heartbeat_expiry", "x25_timer_expiry", "x25_connect", "x25_release", "x25_bind", "x25_listen", "x25_accept" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1gyNSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3gyNV9kZXN0cm95X3RpbWVyJiMzNDssCiAgICAmIzM0O3gyNV9oZWFydGJlYXRfZXhwaXJ5JiMzNDssCiAgICAmIzM0O3gyNV90aW1lcl9leHBpcnkmIzM0OywKICAgICYjMzQ7eDI1X2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7eDI1X3JlbGVhc2UmIzM0OywKICAgICYjMzQ7eDI1X2JpbmQmIzM0OywKICAgICYjMzQ7eDI1X2xpc3RlbiYjMzQ7LAogICAgJiMzNDt4MjVfYWNjZXB0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHRpbWVyIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgcmVhcm1pbmcgbG9naWMgaW4gdGhlIFguMjUgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24uIEl0IHJlcGxhY2VzIHJhdyB0aW1lciBBUEkgY2FsbHMgd2l0aCBzb2NrZXQgdGltZXIgZnVuY3Rpb25zIChza19yZXNldF90aW1lciwgc2tfc3RvcF90aW1lcikgYW5kIGFkZHMgbWlzc2luZyBzb2NrX3B1dCgpIGNhbGxzIGluIHRpbWVyIGNhbGxiYWNrcyB0byBwcmV2ZW50IHVzZS1hZnRlci1mcmVlIG9yIG1lbW9yeSBsZWFrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgcHJvdG9jb2wgY29kZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDViZDE0YzI4Mzk2MjNhZDI0OGM2NWNlZjA1NzQzZDQxYzBjYWIzN2JcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAwNzo0MToyNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQveDI1L2FmX3gyNS5jIGIvbmV0L3gyNS9hZl94MjUuY1xuaW5kZXggOGFhZTkyNzNiN2MxNDQuLjAzM2U3ZDA1OWY1OGM2IDEwMDY0NFxuLS0tIGEvbmV0L3gyNS9hZl94MjUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3gyNS9hZl94MjUuY1xuQEAgLTM2Myw2ICYjNDM7MzYzLDcgQEAgc3RhdGljIHZvaWQgeDI1X2Rlc3Ryb3lfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4gXHRzdHJ1Y3Qgc29jayAqc2sgPSB0aW1lcl9jb250YWluZXJfb2Yoc2ssIHQsIHNrX3RpbWVyKTtcbiBcbiBcdHgyNV9kZXN0cm95X3NvY2tldF9mcm9tX3RpbWVyKHNrKTtcbiYjNDM7XHRzb2NrX3B1dChzayk7XG4gfVxuIFxuIC8qXG5AQCAtMzk4LDkgJiM0MzszOTksOCBAQCBzdGF0aWMgdm9pZCBfX3gyNV9kZXN0cm95X3NvY2tldChzdHJ1Y3Qgc29jayAqc2spXG4gXG4gXHRpZiAoc2tfaGFzX2FsbG9jYXRpb25zKHNrKSkge1xuIFx0XHQvKiBEZWZlcjogb3V0c3RhbmRpbmcgYnVmZmVycyAqL1xuLVx0XHRzay1cdTAwM2Vza190aW1lci5leHBpcmVzICA9IGppZmZpZXMgJiM0MzsgMTAgKiBIWjtcbiBcdFx0c2stXHUwMDNlc2tfdGltZXIuZnVuY3Rpb24gPSB4MjVfZGVzdHJveV90aW1lcjtcbi1cdFx0YWRkX3RpbWVyKFx1MDAyNnNrLVx1MDAzZXNrX3RpbWVyKTtcbiYjNDM7XHRcdHNrX3Jlc2V0X3RpbWVyKHNrLCBcdTAwMjZzay1cdTAwM2Vza190aW1lciwgamlmZmllcyAmIzQzOyAxMCAqIEhaKTtcbiBcdH0gZWxzZSB7XG4gXHRcdC8qIGRyb3AgbGFzdCByZWZlcmVuY2Ugc28gc29ja19wdXQgd2lsbCBmcmVlICovXG4gXHRcdF9fc29ja19wdXQoc2spO1xuZGlmZiAtLWdpdCBhL25ldC94MjUveDI1X3RpbWVyLmMgYi9uZXQveDI1L3gyNV90aW1lci5jXG5pbmRleCAyZWM2M2ExZjRjNmQ0Mi4uNzg5NmNkNDNmMWNjMWUgMTAwNjQ0XG4tLS0gYS9uZXQveDI1L3gyNV90aW1lci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveDI1L3gyNV90aW1lci5jXG5AQCAtMzYsNDUgJiM0MzszNiw0NSBAQCB2b2lkIHgyNV9pbml0X3RpbWVycyhzdHJ1Y3Qgc29jayAqc2spXG4gXG4gdm9pZCB4MjVfc3RhcnRfaGVhcnRiZWF0KHN0cnVjdCBzb2NrICpzaylcbiB7XG4tXHRtb2RfdGltZXIoXHUwMDI2c2stXHUwMDNlc2tfdGltZXIsIGppZmZpZXMgJiM0MzsgNSAqIEhaKTtcbiYjNDM7XHRza19yZXNldF90aW1lcihzaywgXHUwMDI2c2stXHUwMDNlc2tfdGltZXIsIGppZmZpZXMgJiM0MzsgNSAqIEhaKTtcbiB9XG4gXG4gdm9pZCB4MjVfc3RvcF9oZWFydGJlYXQoc3RydWN0IHNvY2sgKnNrKVxuIHtcbi1cdHRpbWVyX2RlbGV0ZShcdTAwMjZzay1cdTAwM2Vza190aW1lcik7XG4mIzQzO1x0c2tfc3RvcF90aW1lcihzaywgXHUwMDI2c2stXHUwMDNlc2tfdGltZXIpO1xuIH1cbiBcbiB2b2lkIHgyNV9zdGFydF90MnRpbWVyKHN0cnVjdCBzb2NrICpzaylcbiB7XG4gXHRzdHJ1Y3QgeDI1X3NvY2sgKngyNSA9IHgyNV9zayhzayk7XG4gXG4tXHRtb2RfdGltZXIoXHUwMDI2eDI1LVx1MDAzZXRpbWVyLCBqaWZmaWVzICYjNDM7IHgyNS1cdTAwM2V0Mik7XG4mIzQzO1x0c2tfcmVzZXRfdGltZXIoc2ssIFx1MDAyNngyNS1cdTAwM2V0aW1lciwgamlmZmllcyAmIzQzOyB4MjUtXHUwMDNldDIpO1xuIH1cbiBcbiB2b2lkIHgyNV9zdGFydF90MjF0aW1lcihzdHJ1Y3Qgc29jayAqc2spXG4ge1xuIFx0c3RydWN0IHgyNV9zb2NrICp4MjUgPSB4MjVfc2soc2spO1xuIFxuLVx0bW9kX3RpbWVyKFx1MDAyNngyNS1cdTAwM2V0aW1lciwgamlmZmllcyAmIzQzOyB4MjUtXHUwMDNldDIxKTtcbiYjNDM7XHRza19yZXNldF90aW1lcihzaywgXHUwMDI2eDI1LVx1MDAzZXRpbWVyLCBqaWZmaWVzICYjNDM7IHgyNS1cdTAwM2V0MjEpO1xuIH1cbiBcbiB2b2lkIHgyNV9zdGFydF90MjJ0aW1lcihzdHJ1Y3Qgc29jayAqc2spXG4ge1xuIFx0c3RydWN0IHgyNV9zb2NrICp4MjUgPSB4MjVfc2soc2spO1xuIFxuLVx0bW9kX3RpbWVyKFx1MDAyNngyNS1cdTAwM2V0aW1lciwgamlmZmllcyAmIzQzOyB4MjUtXHUwMDNldDIyKTtcbiYjNDM7XHRza19yZXNldF90aW1lcihzaywgXHUwMDI2eDI1LVx1MDAzZXRpbWVyLCBqaWZmaWVzICYjNDM7IHgyNS1cdTAwM2V0MjIpO1xuIH1cbiBcbiB2b2lkIHgyNV9zdGFydF90MjN0aW1lcihzdHJ1Y3Qgc29jayAqc2spXG4ge1xuIFx0c3RydWN0IHgyNV9zb2NrICp4MjUgPSB4MjVfc2soc2spO1xuIFxuLVx0bW9kX3RpbWVyKFx1MDAyNngyNS1cdTAwM2V0aW1lciwgamlmZmllcyAmIzQzOyB4MjUtXHUwMDNldDIzKTtcbiYjNDM7XHRza19yZXNldF90aW1lcihzaywgXHUwMDI2eDI1LVx1MDAzZXRpbWVyLCBqaWZmaWVzICYjNDM7IHgyNS1cdTAwM2V0MjMpO1xuIH1cbiBcbiB2b2lkIHgyNV9zdG9wX3RpbWVyKHN0cnVjdCBzb2NrICpzaylcbiB7XG4tXHR0aW1lcl9kZWxldGUoXHUwMDI2eDI1X3NrKHNrKS1cdTAwM2V0aW1lcik7XG4mIzQzO1x0c2tfc3RvcF90aW1lcihzaywgXHUwMDI2eDI1X3NrKHNrKS1cdTAwM2V0aW1lcik7XG4gfVxuIFxuIHVuc2lnbmVkIGxvbmcgeDI1X2Rpc3BsYXlfdGltZXIoc3RydWN0IHNvY2sgKnNrKVxuQEAgLTEwOCw3ICYjNDM7MTA4LDcgQEAgc3RhdGljIHZvaWQgeDI1X2hlYXJ0YmVhdF9leHBpcnkoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4gXHRcdFx0ICAgICBzb2NrX2ZsYWcoc2ssIFNPQ0tfREVBRCkpKSB7XG4gXHRcdFx0XHRiaF91bmxvY2tfc29jayhzayk7XG4gXHRcdFx0XHR4MjVfZGVzdHJveV9zb2NrZXRfZnJvbV90aW1lcihzayk7XG4tXHRcdFx0XHRyZXR1cm47XG4mIzQzO1x0XHRcdFx0Z290byBvdXQ7XG4gXHRcdFx0fVxuIFx0XHRcdGJyZWFrO1xuIFxuQEAgLTEyMCw4ICYjNDM7MTIwLDE0IEBAIHN0YXRpYyB2b2lkIHgyNV9oZWFydGJlYXRfZXhwaXJ5KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuIFx0XHRcdGJyZWFrO1xuIFx0fVxuIHJlc3RhcnRfaGVhcnRiZWF0OlxuLVx0eDI1X3N0YXJ0X2hlYXJ0YmVhdChzayk7XG4mIzQzO1x0LyogRG8gbm90IHJlYXJtIG9uY2UgX194MjVfZGVzdHJveV9zb2NrZXQoKSBoYXMgdW5saW5rZWQgdGhlIHNvY2tldDpcbiYjNDM7XHQgKiBpdCBpcyBwYXN0IGl0cyBjYW5jZWwgcG9pbnQgYW5kIG93bnMgdGhlIHRlYXJkb3duIGZyb20gdGhlcmUgb24uXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHNrX2hhc2hlZChzaykpXG4mIzQzO1x0XHR4MjVfc3RhcnRfaGVhcnRiZWF0KHNrKTtcbiBcdGJoX3VubG9ja19zb2NrKHNrKTtcbiYjNDM7b3V0OlxuJiM0MztcdHNvY2tfcHV0KHNrKTtcbiB9XG4gXG4gLypcbkBAIC0xNjYsNCAmIzQzOzE3Miw1IEBAIHN0YXRpYyB2b2lkIHgyNV90aW1lcl9leHBpcnkoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4gXHR9IGVsc2VcbiBcdFx0eDI1X2RvX3RpbWVyX2V4cGlyeShzayk7XG4gXHRiaF91bmxvY2tfc29jayhzayk7XG4mIzQzO1x0c29ja19wdXQoc2spO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WDI1JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eDI1X2Rlc3Ryb3lfdGltZXImIzM0OywKICAgICYjMzQ7eDI1X2hlYXJ0YmVhdF9leHBpcnkmIzM0OywKICAgICYjMzQ7eDI1X3RpbWVyX2V4cGlyeSYjMzQ7LAogICAgJiMzNDt4MjVfY29ubmVjdCYjMzQ7LAogICAgJiMzNDt4MjVfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDt4MjVfYmluZCYjMzQ7LAogICAgJiMzNDt4MjVfbGlzdGVuJiMzNDssCiAgICAmIzM0O3gyNV9hY2NlcHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgdGltZXIgcmVmZXJlbmNlIGNvdW50aW5nIGFuZCByZWFybWluZyBsb2dpYyBpbiB0aGUgWC4yNSBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbi4gSXQgcmVwbGFjZXMgcmF3IHRpbWVyIEFQSSBjYWxscyB3aXRoIHNvY2tldCB0aW1lciBmdW5jdGlvbnMgKHNrX3Jlc2V0X3RpbWVyLCBza19zdG9wX3RpbWVyKSBhbmQgYWRkcyBtaXNzaW5nIHNvY2tfcHV0KCkgY2FsbHMgaW4gdGltZXIgY2FsbGJhY2tzIHRvIHByZXZlbnQgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGxlYWtzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29yayBwcm90b2NvbCBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWJkMTRjMjgzOTYyM2FkMjQ4YzY1Y2VmMDU3NDNkNDFjMGNhYjM3YgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDI3IDA3OjQxOjI1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3gyNS9hZl94MjUuYyBiL25ldC94MjUvYWZfeDI1LmMKaW5kZXggOGFhZTkyNzNiN2MxNDQuLjAzM2U3ZDA1OWY1OGM2IDEwMDY0NAotLS0gYS9uZXQveDI1L2FmX3gyNS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94MjUvYWZfeDI1LmMKQEAgLTM2Myw2ICYjNDM7MzYzLDcgQEAgc3RhdGljIHZvaWQgeDI1X2Rlc3Ryb3lfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpCiAJc3RydWN0IHNvY2sgKnNrID0gdGltZXJfY29udGFpbmVyX29mKHNrLCB0LCBza190aW1lcik7CiAKIAl4MjVfZGVzdHJveV9zb2NrZXRfZnJvbV90aW1lcihzayk7CiYjNDM7CXNvY2tfcHV0KHNrKTsKIH0KIAogLyoKQEAgLTM5OCw5ICYjNDM7Mzk5LDggQEAgc3RhdGljIHZvaWQgX194MjVfZGVzdHJveV9zb2NrZXQoc3RydWN0IHNvY2sgKnNrKQogCiAJaWYgKHNrX2hhc19hbGxvY2F0aW9ucyhzaykpIHsKIAkJLyogRGVmZXI6IG91dHN0YW5kaW5nIGJ1ZmZlcnMgKi8KLQkJc2stJmd0O3NrX3RpbWVyLmV4cGlyZXMgID0gamlmZmllcyAmIzQzOyAxMCAqIEhaOwogCQlzay0mZ3Q7c2tfdGltZXIuZnVuY3Rpb24gPSB4MjVfZGVzdHJveV90aW1lcjsKLQkJYWRkX3RpbWVyKCZhbXA7c2stJmd0O3NrX3RpbWVyKTsKJiM0MzsJCXNrX3Jlc2V0X3RpbWVyKHNrLCAmYW1wO3NrLSZndDtza190aW1lciwgamlmZmllcyAmIzQzOyAxMCAqIEhaKTsKIAl9IGVsc2UgewogCQkvKiBkcm9wIGxhc3QgcmVmZXJlbmNlIHNvIHNvY2tfcHV0IHdpbGwgZnJlZSAqLwogCQlfX3NvY2tfcHV0KHNrKTsKZGlmZiAtLWdpdCBhL25ldC94MjUveDI1X3RpbWVyLmMgYi9uZXQveDI1L3gyNV90aW1lci5jCmluZGV4IDJlYzYzYTFmNGM2ZDQyLi43ODk2Y2Q0M2YxY2MxZSAxMDA2NDQKLS0tIGEvbmV0L3gyNS94MjVfdGltZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQveDI1L3gyNV90aW1lci5jCkBAIC0zNiw0NSAmIzQzOzM2LDQ1IEBAIHZvaWQgeDI1X2luaXRfdGltZXJzKHN0cnVjdCBzb2NrICpzaykKIAogdm9pZCB4MjVfc3RhcnRfaGVhcnRiZWF0KHN0cnVjdCBzb2NrICpzaykKIHsKLQltb2RfdGltZXIoJmFtcDtzay0mZ3Q7c2tfdGltZXIsIGppZmZpZXMgJiM0MzsgNSAqIEhaKTsKJiM0MzsJc2tfcmVzZXRfdGltZXIoc2ssICZhbXA7c2stJmd0O3NrX3RpbWVyLCBqaWZmaWVzICYjNDM7IDUgKiBIWik7CiB9CiAKIHZvaWQgeDI1X3N0b3BfaGVhcnRiZWF0KHN0cnVjdCBzb2NrICpzaykKIHsKLQl0aW1lcl9kZWxldGUoJmFtcDtzay0mZ3Q7c2tfdGltZXIpOwomIzQzOwlza19zdG9wX3RpbWVyKHNrLCAmYW1wO3NrLSZndDtza190aW1lcik7CiB9CiAKIHZvaWQgeDI1X3N0YXJ0X3QydGltZXIoc3RydWN0IHNvY2sgKnNrKQogewogCXN0cnVjdCB4MjVfc29jayAqeDI1ID0geDI1X3NrKHNrKTsKIAotCW1vZF90aW1lcigmYW1wO3gyNS0mZ3Q7dGltZXIsIGppZmZpZXMgJiM0MzsgeDI1LSZndDt0Mik7CiYjNDM7CXNrX3Jlc2V0X3RpbWVyKHNrLCAmYW1wO3gyNS0mZ3Q7dGltZXIsIGppZmZpZXMgJiM0MzsgeDI1LSZndDt0Mik7CiB9CiAKIHZvaWQgeDI1X3N0YXJ0X3QyMXRpbWVyKHN0cnVjdCBzb2NrICpzaykKIHsKIAlzdHJ1Y3QgeDI1X3NvY2sgKngyNSA9IHgyNV9zayhzayk7CiAKLQltb2RfdGltZXIoJmFtcDt4MjUtJmd0O3RpbWVyLCBqaWZmaWVzICYjNDM7IHgyNS0mZ3Q7dDIxKTsKJiM0MzsJc2tfcmVzZXRfdGltZXIoc2ssICZhbXA7eDI1LSZndDt0aW1lciwgamlmZmllcyAmIzQzOyB4MjUtJmd0O3QyMSk7CiB9CiAKIHZvaWQgeDI1X3N0YXJ0X3QyMnRpbWVyKHN0cnVjdCBzb2NrICpzaykKIHsKIAlzdHJ1Y3QgeDI1X3NvY2sgKngyNSA9IHgyNV9zayhzayk7CiAKLQltb2RfdGltZXIoJmFtcDt4MjUtJmd0O3RpbWVyLCBqaWZmaWVzICYjNDM7IHgyNS0mZ3Q7dDIyKTsKJiM0MzsJc2tfcmVzZXRfdGltZXIoc2ssICZhbXA7eDI1LSZndDt0aW1lciwgamlmZmllcyAmIzQzOyB4MjUtJmd0O3QyMik7CiB9CiAKIHZvaWQgeDI1X3N0YXJ0X3QyM3RpbWVyKHN0cnVjdCBzb2NrICpzaykKIHsKIAlzdHJ1Y3QgeDI1X3NvY2sgKngyNSA9IHgyNV9zayhzayk7CiAKLQltb2RfdGltZXIoJmFtcDt4MjUtJmd0O3RpbWVyLCBqaWZmaWVzICYjNDM7IHgyNS0mZ3Q7dDIzKTsKJiM0MzsJc2tfcmVzZXRfdGltZXIoc2ssICZhbXA7eDI1LSZndDt0aW1lciwgamlmZmllcyAmIzQzOyB4MjUtJmd0O3QyMyk7CiB9CiAKIHZvaWQgeDI1X3N0b3BfdGltZXIoc3RydWN0IHNvY2sgKnNrKQogewotCXRpbWVyX2RlbGV0ZSgmYW1wO3gyNV9zayhzayktJmd0O3RpbWVyKTsKJiM0MzsJc2tfc3RvcF90aW1lcihzaywgJmFtcDt4MjVfc2soc2spLSZndDt0aW1lcik7CiB9CiAKIHVuc2lnbmVkIGxvbmcgeDI1X2Rpc3BsYXlfdGltZXIoc3RydWN0IHNvY2sgKnNrKQpAQCAtMTA4LDcgJiM0MzsxMDgsNyBAQCBzdGF0aWMgdm9pZCB4MjVfaGVhcnRiZWF0X2V4cGlyeShzdHJ1Y3QgdGltZXJfbGlzdCAqdCkKIAkJCSAgICAgc29ja19mbGFnKHNrLCBTT0NLX0RFQUQpKSkgewogCQkJCWJoX3VubG9ja19zb2NrKHNrKTsKIAkJCQl4MjVfZGVzdHJveV9zb2NrZXRfZnJvbV90aW1lcihzayk7Ci0JCQkJcmV0dXJuOwomIzQzOwkJCQlnb3RvIG91dDsKIAkJCX0KIAkJCWJyZWFrOwogCkBAIC0xMjAsOCAmIzQzOzEyMCwxNCBAQCBzdGF0aWMgdm9pZCB4MjVfaGVhcnRiZWF0X2V4cGlyeShzdHJ1Y3QgdGltZXJfbGlzdCAqdCkKIAkJCWJyZWFrOwogCX0KIHJlc3RhcnRfaGVhcnRiZWF0OgotCXgyNV9zdGFydF9oZWFydGJlYXQoc2spOwomIzQzOwkvKiBEbyBub3QgcmVhcm0gb25jZSBfX3gyNV9kZXN0cm95X3NvY2tldCgpIGhhcyB1bmxpbmtlZCB0aGUgc29ja2V0OgomIzQzOwkgKiBpdCBpcyBwYXN0IGl0cyBjYW5jZWwgcG9pbnQgYW5kIG93bnMgdGhlIHRlYXJkb3duIGZyb20gdGhlcmUgb24uCiYjNDM7CSAqLwomIzQzOwlpZiAoc2tfaGFzaGVkKHNrKSkKJiM0MzsJCXgyNV9zdGFydF9oZWFydGJlYXQoc2spOwogCWJoX3VubG9ja19zb2NrKHNrKTsKJiM0MztvdXQ6CiYjNDM7CXNvY2tfcHV0KHNrKTsKIH0KIAogLyoKQEAgLTE2Niw0ICYjNDM7MTcyLDUgQEAgc3RhdGljIHZvaWQgeDI1X3RpbWVyX2V4cGlyeShzdHJ1Y3QgdGltZXJfbGlzdCAqdCkKIAl9IGVsc2UKIAkJeDI1X2RvX3RpbWVyX2V4cGlyeShzayk7CiAJYmhfdW5sb2NrX3NvY2soc2spOwomIzQzOwlzb2NrX3B1dChzayk7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyODcKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqWC4yNSBUaW1lciBNYW5hZ2VtZW50OiBBIENyaXRpY2FsIFJldmlldyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHplcm9pbmcgaW4gb24gdGhlIFguMjUgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24g4oCTIHNwZWNpZmljYWxseSwgYGFmX3gyNS5jYCBhbmQgYHgyNV90aW1lci5jYC4gSW50ZXJlc3RpbmcuIFRoZSBjb3JlIG9mIHRoaXMgaXMgYWJvdXQgdGhlIHRpbWVyIGhhbmRsaW5nLCBhbmQgaXQgc291bmRzIGxpa2UgYSBzaWduaWZpY2FudCBpbXByb3ZlbWVudCBpbiBzb2NrZXQgbWFuYWdlbWVudCBpcyB1bmRlcndheS4gSXQmIzM5O3Mgc2hpZnRpbmcgZnJvbSB0aGUgb2xkZXIgYG1vZF90aW1lcmAgYW5kIGB0aW1lcl9kZWxldGVgIG1ldGhvZHMgdG8gYHNrX3Jlc2V0X3RpbWVyYCBhbmQgYHNrX3N0b3BfdGltZXJgLiBUaGF0IGltbWVkaWF0ZWx5IHN1Z2dlc3RzIGEgbW92ZSB0b3dhcmRzIGEgbW9yZSByb2J1c3QgYW5kIHBvc3NpYmx5IG1vcmUgZWZmaWNpZW50IGFwcHJvYWNoLiBBbmQgdGhlIGFkZGl0aW9uIG9mIGBzb2NrX3B1dChzaylgIHdpdGhpbiB0aGUgdGltZXIgY2FsbGJhY2tzPyBUaGF0JiMzOTtzIHRoZSByZWFsIG1lYXQgb2YgaXQg4oCTIGEgZm9jdXNlZCBhdHRlbXB0IHRvIGhhbmRsZSBzb2NrZXQgcmVmZXJlbmNlcyBjb3JyZWN0bHkuIFRoYXQmIzM5O3MgYSBnb29kIHNpZ247IGl0IHBvaW50cyBkaXJlY3RseSB0b3dhcmRzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eSBvciBhIG1lbW9yeSBsZWFrIHdpdGhpbiB0aG9zZSBYLjI1IHNvY2tldCB0aW1lcnMuIEdvdHRhIGJlIGNhcmVmdWwgd2l0aCB0aG9zZSB0aW1lcnMgYW5kIHNvY2tldCByZWZlcmVuY2VzLi4uIHRoZXkmIzM5O3JlIGVhc3kgdG8gZ2V0IHdyb25nIGFuZCBjYXVzZSBtYWpvciBoZWFkYWNoZXMuIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byB2ZXJpZnkgdGhhdC4KCk15IG5leHQgc3RlcCBpcyB0byB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgS2NvbmZpZyBmaWxlIGZvciBYLjI1IHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nJiMzOTtzIHNldCB1cCBjb3JyZWN0bHkuIEdvdHRhIG1ha2Ugc3VyZSBpdCYjMzk7cyBlbmFibGVkIGFuZCBub3QgYWNjaWRlbnRhbGx5IGRpc2FibGVkLiBUaGVuLCBJIHdpbGwgZGVsdmUgZGVlcGVyLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCB0byBzZWUgKmhvdyogdGhlIHNvY2tldCByZWZlcmVuY2VzIHdlcmUgYmVpbmcgbWlzaGFuZGxlZCBiZWZvcmUgYW5kIGV4YWN0bHkgKmhvdyogdGhlc2UgY2hhbmdlcyByZXNvbHZlIHRoZSBpc3N1ZS4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBzaG91bGQgYnJpbmcgc29tZSBzdGFiaWxpdHkgdG8gdGhlIFguMjUgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFgyNSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94MjUvS2NvbmZpZy01LVxubmV0L3gyNS9LY29uZmlnOjY6Y29uZmlnIFgyNVxubmV0L3gyNS9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtDQ0lUVCBYLjI1IFBhY2tldCBMYXllclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NDEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6CgoqKkFuYWx5emluZyBEZXBlbmRlbmNpZXM6IFgyNSoqCgpBbHJpZ2h0LCB0aGUgaW5pdGlhbCBwcm9tcHQgaXMgc3RyYWlnaHRmb3J3YXJkLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoICYjMzQ7ZGVwZW5kZW5jaWVzJiMzNDsgYW5kICYjMzQ7WDI1LCYjMzQ7IHdoaWNoIGxpa2VseSByZWxhdGVzIHRvIGEgc3BlY2lmaWMgc3lzdGVtLCBjb21wb25lbnQsIG9yIGNvZGViYXNlLCBnaXZlbiB0aGUgc3BlY2lhbGl6ZWQgbmF0dXJlIG9mIHRoZSB0ZXJtaW5vbG9neS4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRlbHZlIGludG8gdGhlIGFyY2hpdGVjdHVyZSBhbmQgaWRlbnRpZnkgdGhlIGNyaXRpY2FsIHJlbGF0aW9uc2hpcHMgYXQgcGxheS4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgWDI1ICppcyogd2l0aGluIHRoaXMgY29udGV4dC4gSXMgaXQgYSBsaWJyYXJ5PyBBIHNlcnZpY2U/IEEgaGFyZHdhcmUgY29tcG9uZW50PyBLbm93aW5nIGl0cyByb2xlIHdpbGwgaGVhdmlseSBpbmZsdWVuY2UgaG93IEkgYXBwcm9hY2ggZGVwZW5kZW5jeSBhbmFseXNpcy4KCk15IHRob3VnaHQgcHJvY2VzcyBxdWlja2x5IGJyYW5jaGVzIGludG8gc2V2ZXJhbCBrZXkgYXJlYXM6CgoqICAgKipJZGVudGlmeWluZyB0aGUgc2NvcGU6KiogV2hhdCBjb25zdGl0dXRlcyBhIGRlcGVuZGVuY3kgaW4gdGhpcyBzY2VuYXJpbz8gSXMgaXQgYSBjb2RlLWxldmVsIGRlcGVuZGVuY3kgKGltcG9ydHMsIHVzZXMsIGV0Yy4pLCBhIHJ1bnRpbWUgZGVwZW5kZW5jeSAobGlicmFyaWVzLCBzZXJ2aWNlcyksIGEgaGFyZHdhcmUgZGVwZW5kZW5jeSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSB0eXBlIG9mIGRlcGVuZGVuY3kgaW5mbHVlbmNlcyB0aGUgdG9vbHMgYW5kIG1ldGhvZG9sb2dpZXMgSSYjMzk7ZCBlbXBsb3kuCiogICAqKkNob29zaW5nIHRoZSByaWdodCB0b29sc2V0OioqIERvIEkgcmVhY2ggZm9yIGEgc3RhdGljIGFuYWx5c2lzIHRvb2wgZm9yIGNvZGUgZGVwZW5kZW5jaWVzPyBQZXJoYXBzIGEgbW9uaXRvcmluZyBzeXN0ZW0gZm9yIHJ1bnRpbWUgaW50ZXJhY3Rpb25zPyBPciBtYXliZSBJIGhhdmUgdG8gc3RhcnQgbG9va2luZyBhdCBkb2N1bWVudGF0aW9uPyBLbm93aW5nIHRoZSB0eXBlIG9mIGRlcGVuZGVuY3kgd2lsbCBkZWNpZGUgdGhpcy4KKiAgICoqRG9jdW1lbnRpbmcgdGhlIGZpbmRpbmdzOioqIFdoYXQgYXJlIHRoZSBleHBlY3RlZCBvdXRwdXRzPyBUaGlzIGhlbHBzIGRlY2lkZSB0aGUgbWV0aG9kIGZvciBkb2N1bWVudGF0aW9uIG9mIHRoZSBkZXBlbmRlbmNpZXMuCiogICAqKkNvbnNpZGVyaW5nIHRoZSBpbXBsaWNhdGlvbnM6KiogV2hhdCBpbXBhY3QgZG8gdGhlc2UgZGVwZW5kZW5jaWVzIGhhdmU/IFRoZWlyIHNldmVyaXR5PyBBcmUgdGhlcmUgcG90ZW50aWFsIHJpc2tzIG9yIHZ1bG5lcmFiaWxpdGllcyBhc3NvY2lhdGVkIHdpdGggdGhlc2UgZGVwZW5kZW5jaWVzPyBUaGlzIGFzc2Vzc21lbnQgd2lsbCBpbmZvcm0gZGVjaXNpb25zIGFib3V0IG1pdGlnYXRpb24gc3RyYXRlZ2llcyAodXBkYXRlcywgcGF0Y2hpbmcsIGlzb2xhdGlvbiwgZXRjLikuCgpFc3NlbnRpYWxseSwgSSYjMzk7bSBmb3JtaW5nIGEgcGxhbiBmb3IgYSBjb21wcmVoZW5zaXZlIGludmVzdGlnYXRpb24sIGEgbWVudGFsIGNoZWNrbGlzdCBvZiBxdWVzdGlvbnMgdG8gYW5zd2VyIGFuZCBhY3Rpb25zIHRvIHRha2UgdG8gZ2FpbiBhIGZ1bGwgdW5kZXJzdGFuZGluZyBvZiBYMjUmIzM5O3MgZGVwZW5kZW5jaWVzLiBNeSBleHBlcnRpc2UgYWxsb3dzIG1lIHRvIHF1aWNrbHkgZXN0YWJsaXNoIHRoaXMgZnJhbWV3b3JrLCBhbnRpY2lwYXRpbmcgdGhlIGNoYWxsZW5nZXMgYW5kIG9wcG9ydHVuaXRpZXMgaW5oZXJlbnQgaW4gdGhlIHRhc2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQveDI1L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBDQ0lUVCBYLjI1IFBhY2tldCBMYXllclxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgWDI1XG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtDQ0lUVCBYLjI1IFBhY2tldCBMYXllclwmIzM0O1xuICAgODpcdFx0aGVscFxuICAgOTpcdFx0ICBYLjI1IGlzIGEgc2V0IG9mIHN0YW5kYXJkaXplZCBuZXR3b3JrIHByb3RvY29scywgc2ltaWxhciBpbiBzY29wZSB0b1xuICAxMDpcdFx0ICBmcmFtZSByZWxheTsgdGhlIG9uZSBwaHlzaWNhbCBsaW5lIGZyb20geW91ciBib3ggdG8gdGhlIFguMjUgbmV0d29ya1xuICAxMTpcdFx0ICBlbnRyeSBwb2ludCBjYW4gY2Fycnkgc2V2ZXJhbCBsb2dpY2FsIHBvaW50LXRvLXBvaW50IGNvbm5lY3Rpb25zXG4gIDEyOlx0XHQgIChjYWxsZWQgXCYjMzQ7dmlydHVhbCBjaXJjdWl0c1wmIzM0OykgdG8gb3RoZXIgY29tcHV0ZXJzIGNvbm5lY3RlZCB0byB0aGUgWC4yNVxuICAxMzpcdFx0ICBuZXR3b3JrLiBHb3Zlcm5tZW50cywgYmFua3MsIGFuZCBvdGhlciBvcmdhbml6YXRpb25zIHRlbmQgdG8gdXNlIGl0XG4gIDE0Olx0XHQgIHRvIGNvbm5lY3QgdG8gZWFjaCBvdGhlciBvciB0byBmb3JtIFdpZGUgQXJlYSBOZXR3b3JrcyAoV0FOcykuIE1hbnlcbiAgMTU6XHRcdCAgY291bnRyaWVzIGhhdmUgcHVibGljIFguMjUgbmV0d29ya3MuIFguMjUgY29uc2lzdHMgb2YgdHdvXG4gIDE2Olx0XHQgIHByb3RvY29sczogdGhlIGhpZ2hlciBsZXZlbCBQYWNrZXQgTGF5ZXIgUHJvdG9jb2wgKFBMUCkgKHNheSBZIGhlcmVcbiAgMTc6XHRcdCAgaWYgeW91IHdhbnQgdGhhdCkgYW5kIHRoZSBsb3dlciBsZXZlbCBkYXRhIGxpbmsgbGF5ZXIgcHJvdG9jb2wgTEFQQlxuICAxODpcdFx0ICAoc2F5IFkgdG8gXCYjMzQ7TEFQQiBEYXRhIExpbmsgRHJpdmVyXCYjMzQ7IGJlbG93IGlmIHlvdSB3YW50IHRoYXQpLlxuICAxOTpcdFxuICAyMDpcdFx0ICBJbmZvcm1hdGlvbiBhYm91dCBYLjI1IGZvciBMaW51eCBpcyBjb250YWluZWQgaW4gdGhlIGZpbGVzXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYyMgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDIyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFguMjUgQ29uZmlndXJhdGlvbiBDaGFuZ2VzKioKCk9rYXksIHNvIGBDT05GSUdfWDI1YCBpcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlLCB0aGF0JiMzOTtzIG15IHN0YXJ0aW5nIHBvaW50LiBOb3csIGxldCYjMzk7cyBkcmlsbCBkb3duIGFuZCBzZWUgd2hhdCBzcGVjaWZpY2FsbHkgaGFzIGJlZW4gY2hhbmdlZC4gSXQgbG9va3MgbGlrZSB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHJldm9sdmUgaGVhdmlseSBhcm91bmQgdGltZXJzOiBgeDI1X2Rlc3Ryb3lfdGltZXJgLCBgX194MjVfZGVzdHJveV9zb2NrZXRgLCBgeDI1X3N0YXJ0X2hlYXJ0YmVhdGAsIGB4MjVfc3RvcF9oZWFydGJlYXRgLCBhbmQgYWxsIHRoZSBgeDI1X3N0YXJ0X3QqdGltZXJgIGFuZCBgeDI1X3N0b3BfdGltZXJgIHZhcmlhbnRzLiBUaGUgZXhwaXJ5IGZ1bmN0aW9ucywgbGlrZSBgeDI1X2hlYXJ0YmVhdF9leHBpcnlgIGFuZCBgeDI1X3RpbWVyX2V4cGlyeWAsIGFyZSBhbHNvIHRoZXJlLgoKR2l2ZW4gdGhlIGNvbmNlbnRyYXRpb24gb24gdGhlc2UgdGltZXJzLCBteSBpbW1lZGlhdGUgZm9jdXMgd2lsbCBiZSBvbiB0aGUgZW50cnkgcG9pbnRzIGludG8gdGhlIFguMjUgc29ja2V0IGZ1bmN0aW9uYWxpdHkgdGhhdCBpbml0aWF0ZSBvciBpbnRlcmFjdCB3aXRoIHRoZXNlIHRpbWVycy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhdXNhbCByZWxhdGlvbnNoaXBzIGhlcmUuIEZvciBpbnN0YW5jZSwgYHgyNV9zdGFydF9oZWFydGJlYXRgIGxvb2tzIGltcG9ydGFudCwgYW5kIEkgc2VlIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGB4MjVfY3JlYXRlYCwgd2hpY2ggbWFrZXMgc2Vuc2UgYmVjYXVzZSB3ZSBzdGFydCBtb25pdG9yaW5nIGNvbm5lY3Rpb25zIHJpZ2h0IGF3YXksIGFuZCBhbHNvLCBpbXBvcnRhbnRseSwgZnJvbSBgeDI1X2Nvbm5lY3RgLiBTbywgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSwgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBmb3IgWC4yNSBzb2NrZXQgY3JlYXRpb24gYW5kIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudC4gSSBuZWVkIHRvIHNlZSB0aGUgY29tcGxldGUgbGlmZWN5Y2xlLiBUaGF0JiMzOTtzIHdoZXJlIEkgc2hvdWxkIGNvbmNlbnRyYXRlIG15IGVmZm9ydHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eDI1X2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94MjUvYWZfeDI1LmM9NTA0PXN0YXRpYyBzdHJ1Y3Qgc29jayAqeDI1X2FsbG9jX3NvY2tldChzdHJ1Y3QgbmV0ICpuZXQsIGludCBrZXJuKVxuLS1cbm5ldC94MjUvYWZfeDI1LmMtNTIyLVxubmV0L3gyNS9hZl94MjUuYzo1MjM6c3RhdGljIGludCB4MjVfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IHByb3RvY29sLFxubmV0L3gyNS9hZl94MjUuYy01MjQtXHRcdCAgICAgIGludCBrZXJuKVxuLS1cbm5ldC94MjUvYWZfeDI1LmM9MTYxOT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9wcm90b19mYW1pbHkgeDI1X2ZhbWlseV9vcHMgPSB7XG5uZXQveDI1L2FmX3gyNS5jLTE2MjAtXHQuZmFtaWx5ID1cdEFGX1gyNSxcbm5ldC94MjUvYWZfeDI1LmM6MTYyMTpcdC5jcmVhdGUgPVx0eDI1X2NyZWF0ZSxcbm5ldC94MjUvYWZfeDI1LmMtMTYyMi1cdC5vd25lclx0PVx0VEhJU19NT0RVTEUsXG4tLVxubmV0L3gyNS94MjVfZmFjaWxpdGllcy5jPTQxPWludCB4MjVfcGFyc2VfZmFjaWxpdGllcyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeDI1X2ZhY2lsaXRpZXMgKmZhY2lsaXRpZXMsXG4tLVxubmV0L3gyNS94MjVfZmFjaWxpdGllcy5jLTE4Ny0gKi9cbm5ldC94MjUveDI1X2ZhY2lsaXRpZXMuYzoxODg6aW50IHgyNV9jcmVhdGVfZmFjaWxpdGllcyh1bnNpZ25lZCBjaGFyICpidWZmZXIsXG5uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmMtMTg5LVx0XHRzdHJ1Y3QgeDI1X2ZhY2lsaXRpZXMgKmZhY2lsaXRpZXMsXG4tLVxubmV0L3gyNS94MjVfc3Vici5jPTExMD12b2lkIHgyNV93cml0ZV9pbnRlcm5hbChzdHJ1Y3Qgc29jayAqc2ssIGludCBmcmFtZXR5cGUpXG4tLVxubmV0L3gyNS94MjVfc3Vici5jLTE4Ny1cdFx0XHRza2JfcHV0X2RhdGEoc2tiLCBhZGRyZXNzZXMsIGxlbik7XG5uZXQveDI1L3gyNV9zdWJyLmM6MTg4Olx0XHRcdGxlbiAgICAgPSB4MjVfY3JlYXRlX2ZhY2lsaXRpZXMoZmFjaWxpdGllcyxcbm5ldC94MjUveDI1X3N1YnIuYy0xODktXHRcdFx0XHRcdFx1MDAyNngyNS1cdTAwM2VmYWNpbGl0aWVzLFxuLS1cbm5ldC94MjUveDI1X3N1YnIuYy0yMDEtXHRcdFx0KmRwdHImIzQzOyYjNDM7ID0gMHgwMDtcdFx0LyogQWRkcmVzcyBsZW5ndGhzICovXG5uZXQveDI1L3gyNV9zdWJyLmM6MjAyOlx0XHRcdGxlbiAgICAgPSB4MjVfY3JlYXRlX2ZhY2lsaXRpZXMoZmFjaWxpdGllcyxcbm5ldC94MjUveDI1X3N1YnIuYy0yMDMtXHRcdFx0XHRcdFx0XHRcdTAwMjZ4MjUtXHUwMDNlZmFjaWxpdGllcyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODE3CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkZ1enppbmcgWC4yNSAtIFRhcmdldHRpbmcgdGhlIEVudHJ5IFBvaW50cyoqCgpBbHJpZ2h0LCBpZiBJJiMzOTttIGdvaW5nIHRvIGZ1enogdGhpcyBYLjI1IGltcGxlbWVudGF0aW9uLCBJIG5lZWQgdG8gc3RhcnQgdGhpbmtpbmcgYWJvdXQgdGhlIGtleSBhdHRhY2sgc3VyZmFjZXMuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBvYnZpb3VzIHJvdXRlIGlzIHRocm91Z2ggdGhlIGV4cG9zZWQgc29ja2V0IG9wZXJhdGlvbnMuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCBuZWVkIHRvIGZvY3VzIG9uOiBgeDI1X2NyZWF0ZWAsIHdoaWNoIHNldHMgdXAgdGhlIGluaXRpYWwgc29ja2V0LiBUaGVuLCBgeDI1X2Nvbm5lY3RgLCBgeDI1X2JpbmRgLCBhbmQgYHgyNV9saXN0ZW5gLCB0aGF0IGhhbmRsZSBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQsIGFuZCB0aGUgb3Bwb3NpdGUgd2l0aCBgeDI1X2FjY2VwdGAsIGZvciB0aGUgbGlzdGVuaW5nIHNpZGUuIFRoZSByZWFsIG1lYXQgb2YgaXQsIHRob3VnaCwgaGFzIHRvIGJlIGluIHRoZSBkYXRhIGV4Y2hhbmdlLiBJJiMzOTttIGltYWdpbmluZyBJJiMzOTtsbCBuZWVkIHRvIHJlYWxseSBoYW1tZXIgYHgyNV9zZW5kbXNnYCBhbmQgYHgyNV9yZWN2bXNnYCB3aXRoIG1hbGZvcm1lZCBwYWNrZXRzLCBhbmQgdGhlbiBJIGNhbiByZWxlYXNlIHJlc291cmNlcyB3aXRoIGB4MjVfcmVsZWFzZWAuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGVuZXJnaWVzIGFuZCB3aGVyZSBJJiMzOTttIGdvaW5nIHRvIGZpbmQgdGhlIHJlYWwgYnVncywgSSBzdXNwZWN0LiBUaGUgb3RoZXIgZW50cmllcyBwcm92aWRlIHRoZSBzZXR1cCBhbmQgdGVhcmRvd24sIGJ1dCB0aGUgbWVhdCBpcyBpbiBzZW5kaW5nIGFuZCByZWNlaXZpbmcgZGF0YSBvbiB0aGlzIHByb3RvY29sLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4MjVfY29ubmVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94MjUvYWZfeDI1LmM9NzA4PXN0YXRpYyBpbnQgeDI1X3dhaXRfZm9yX2Nvbm5lY3Rpb25fZXN0YWJsaXNobWVudChzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L3gyNS9hZl94MjUuYy03NDEtXG5uZXQveDI1L2FmX3gyNS5jOjc0MjpzdGF0aWMgaW50IHgyNV9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1YWRkcixcbm5ldC94MjUvYWZfeDI1LmMtNzQzLVx0XHQgICAgICAgaW50IGFkZHJfbGVuLCBpbnQgZmxhZ3MpXG4tLVxubmV0L3gyNS9hZl94MjUuYz0xNzM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHgyNV9wcm90b19vcHMgPSB7XG4tLVxubmV0L3gyNS9hZl94MjUuYy0xNzM4LVx0LmJpbmQgPVx0XHR4MjVfYmluZCxcbm5ldC94MjUvYWZfeDI1LmM6MTczOTpcdC5jb25uZWN0ID1cdHgyNV9jb25uZWN0LFxubmV0L3gyNS9hZl94MjUuYy0xNzQwLVx0LnNvY2tldHBhaXIgPVx0c29ja19ub19zb2NrZXRwYWlyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDU4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoZSByZWxldmFudCBmaWVsZDoKCioqQXNzZXNzaW5nIHRoZSBTdGF0dXMgb2YgYHgyNV9yZWxlYXNlYCoqCgpBbHJpZ2h0LCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcyB0byBjaGVjayBgeDI1X3JlbGVhc2VgLiBUaGF04oCZcyBteSBwcmltYXJ5IHBvaW50IG9mIGZvY3VzLiBJdCYjMzk7cyB0aGUga2V5IHZhcmlhYmxlIG9yIG1vZHVsZSBpbiBxdWVzdGlvbi4gSSBuZWVkIHRvIGtub3cgdGhlIGN1cnJlbnQgc3RhdGUuIElzIGl0IHN0YWJsZSwgc3RpbGwgaW4gZGV2ZWxvcG1lbnQsIHJlYWR5IGZvciBwcm9kdWN0aW9uLCBvciBleHBlcmllbmNpbmcgaXNzdWVzPyBLbm93aW5nIHRoZSBzdGF0dXMgb2YgYHgyNV9yZWxlYXNlYCBpcyB0aGUgbW9zdCBsb2dpY2FsIG5leHQgc3RlcC4gSSBuZWVkIGEgcXVpY2sgb3ZlcnZpZXcgb2YgaXRzIGNvbmRpdGlvbiBiZWZvcmUgbW92aW5nIGZvcndhcmQgd2l0aCBhbnl0aGluZyBlbHNlIHJlbGF0ZWQgdG8gdGhlIHByb2plY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3gyNV9yZWxlYXNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3gyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3gyNS9hZl94MjUuYz01ODM9c3RhdGljIHN0cnVjdCBzb2NrICp4MjVfbWFrZV9uZXcoc3RydWN0IHNvY2sgKm9zaylcbi0tXG5uZXQveDI1L2FmX3gyNS5jLTYyMC1cbm5ldC94MjUvYWZfeDI1LmM6NjIxOnN0YXRpYyBpbnQgeDI1X3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcbm5ldC94MjUvYWZfeDI1LmMtNjIyLXtcbi0tXG5uZXQveDI1L2FmX3gyNS5jPTE3MzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgeDI1X3Byb3RvX29wcyA9IHtcbi0tXG5uZXQveDI1L2FmX3gyNS5jLTE3MzYtXHQub3duZXIgPVx0VEhJU19NT0RVTEUsXG5uZXQveDI1L2FmX3gyNS5jOjE3Mzc6XHQucmVsZWFzZSA9XHR4MjVfcmVsZWFzZSxcbm5ldC94MjUvYWZfeDI1LmMtMTczOC1cdC5iaW5kID1cdFx0eDI1X2JpbmQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4OTEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBYLjI1IFRpbWVyIEhhbmRsaW5nIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3BlY2lmaWNhbGx5IGFkZHJlc3NpbmcgdGltZXIgYmVoYXZpb3Igd2l0aGluIHRoZSBYLjI1IGNvZGUuIFRoYXQgbWVhbnMgdGhlIGtleSBmdW5jdGlvbnMgdG8gZXhhbWluZSBhcmUgdGhvc2UgdGhhdCBpbnRlcmFjdCB3aXRoIHRpbWVycywgbGlrZWx5IGR1cmluZyBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQsIHRlYXJkb3duLCBhbmQgZGF0YSB0cmFuc2Zlci4gQmFzZWQgb24gdGhhdCwgSSYjMzk7bSB0aGlua2luZyB0aGUgcHJpbWFyeSBzeW1ib2xzIHRvIGZvY3VzIG9uIGFyZSBgeDI1X2Nvbm5lY3RgLCBgeDI1X3JlbGVhc2VgLCBgeDI1X3NlbmRtc2dgLCBhbmQgYHgyNV9yZWN2bXNnYC4gVGhhdCBsb29rcyBnb29kLgoKTm93LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwLCBsZXQgbWUgcXVpY2tseSB2ZXJpZnkgdGhhdCB0aGUgYENPTkZJR19YMjVgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIHN1ZmZpY2llbnQgZm9yIHRoaXMgcGF0Y2ggdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBKdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGVuc3VyZSB0aGUgbmVjZXNzYXJ5IGNvZGUgcGF0aHMgYXJlIGVuYWJsZWQuIFllcCwgc2VlbXMgbGlrZSBpdC4KCk5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGVzZSB0aW1lci1yZWxhdGVkIGZ1bmN0aW9ucy4gTGV0IG1lIGNoZWNrIHRoZSB2aXNpYmlsaXR5IG9mIHNvbWUgb2YgdGhlIHRpbWVyIGZ1bmN0aW9ucyB0aGVtc2VsdmVzLiBgeDI1X2Rlc3Ryb3lfdGltZXJgIGlzIHN0YXRpYywgZ29vZC4gU28gaXMgYF9feDI1X2Rlc3Ryb3lfc29ja2V0YC4gYHgyNV9zdGFydF9oZWFydGJlYXRgLCBldmVuIHRob3VnaCBpdCYjMzk7cyBub3Qgc3RhdGljLCBpcyBhbiBpbnRlcm5hbCBoZWxwZXIgc28gaXQgc2hvdWxkbiYjMzk7dCBtYXR0ZXIgdG9vIG11Y2guIGB4MjVfaGVhcnRiZWF0X2V4cGlyeWAgYW5kIGB4MjVfdGltZXJfZXhwaXJ5YCBhcmUgYm90aCBzdGF0aWMuIFNvIHRoaXMgY29uZmlybXMgbXkgaW5pdGlhbCB0aG91Z2h0IGFib3V0IHRoZSBzb2NrZXQgb3BlcmF0aW9ucy4KClRoZSBtb3JlIEkgbG9vayBhdCB0aGlzLCB0aGUgbW9yZSBJIHJlYWxpemUgbXkgcHJldmlvdXMgbGlzdCBvZiBmb2N1cyBzeW1ib2xzIHNob3VsZCBlbmNvbXBhc3MgYWxsIHNvY2tldCBvcGVyYXRpb25zIHRoYXQgbWlnaHQgdHJpZ2dlciB0aGVzZSB0aW1lcnMuIFNvLCB0byBiZSBjb21wbGV0ZSwgSSBuZWVkIHRvIGluY2x1ZGU6IGB4MjVfY29ubmVjdGAsIGB4MjVfcmVsZWFzZWAsIGB4MjVfYmluZGAsIGB4MjVfbGlzdGVuYCwgYHgyNV9hY2NlcHRgLCBgeDI1X3NlbmRtc2dgLCBhbmQgYHgyNV9yZWN2bXNnYC4KCkp1c3QgdG8gY292ZXIgYWxsIGJhc2VzLCBsZXQgbWUgY2hlY2sgdGhlIHZpc2liaWxpdHkgb2YgYHgyNV9jcmVhdGVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4MjVfY3JlYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3gyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3gyNS9hZl94MjUuYz01MDQ9c3RhdGljIHN0cnVjdCBzb2NrICp4MjVfYWxsb2Nfc29ja2V0KHN0cnVjdCBuZXQgKm5ldCwgaW50IGtlcm4pXG4tLVxubmV0L3gyNS9hZl94MjUuYy01MjItXG5uZXQveDI1L2FmX3gyNS5jOjUyMzpzdGF0aWMgaW50IHgyNV9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgcHJvdG9jb2wsXG5uZXQveDI1L2FmX3gyNS5jLTUyNC1cdFx0ICAgICAgaW50IGtlcm4pXG4tLVxubmV0L3gyNS9hZl94MjUuYz0xNjE5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X3Byb3RvX2ZhbWlseSB4MjVfZmFtaWx5X29wcyA9IHtcbm5ldC94MjUvYWZfeDI1LmMtMTYyMC1cdC5mYW1pbHkgPVx0QUZfWDI1LFxubmV0L3gyNS9hZl94MjUuYzoxNjIxOlx0LmNyZWF0ZSA9XHR4MjVfY3JlYXRlLFxubmV0L3gyNS9hZl94MjUuYy0xNjIyLVx0Lm93bmVyXHQ9XHRUSElTX01PRFVMRSxcbi0tXG5uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmM9NDE9aW50IHgyNV9wYXJzZV9mYWNpbGl0aWVzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4MjVfZmFjaWxpdGllcyAqZmFjaWxpdGllcyxcbi0tXG5uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmMtMTg3LSAqL1xubmV0L3gyNS94MjVfZmFjaWxpdGllcy5jOjE4ODppbnQgeDI1X2NyZWF0ZV9mYWNpbGl0aWVzKHVuc2lnbmVkIGNoYXIgKmJ1ZmZlcixcbm5ldC94MjUveDI1X2ZhY2lsaXRpZXMuYy0xODktXHRcdHN0cnVjdCB4MjVfZmFjaWxpdGllcyAqZmFjaWxpdGllcyxcbi0tXG5uZXQveDI1L3gyNV9zdWJyLmM9MTEwPXZvaWQgeDI1X3dyaXRlX2ludGVybmFsKHN0cnVjdCBzb2NrICpzaywgaW50IGZyYW1ldHlwZSlcbi0tXG5uZXQveDI1L3gyNV9zdWJyLmMtMTg3LVx0XHRcdHNrYl9wdXRfZGF0YShza2IsIGFkZHJlc3NlcywgbGVuKTtcbm5ldC94MjUveDI1X3N1YnIuYzoxODg6XHRcdFx0bGVuICAgICA9IHgyNV9jcmVhdGVfZmFjaWxpdGllcyhmYWNpbGl0aWVzLFxubmV0L3gyNS94MjVfc3Vici5jLTE4OS1cdFx0XHRcdFx0XHUwMDI2eDI1LVx1MDAzZWZhY2lsaXRpZXMsXG4tLVxubmV0L3gyNS94MjVfc3Vici5jLTIwMS1cdFx0XHQqZHB0ciYjNDM7JiM0MzsgPSAweDAwO1x0XHQvKiBBZGRyZXNzIGxlbmd0aHMgKi9cbm5ldC94MjUveDI1X3N1YnIuYzoyMDI6XHRcdFx0bGVuICAgICA9IHgyNV9jcmVhdGVfZmFjaWxpdGllcyhmYWNpbGl0aWVzLFxubmV0L3gyNS94MjVfc3Vici5jLTIwMy1cdFx0XHRcdFx0XHRcdFx1MDAyNngyNS1cdTAwM2VmYWNpbGl0aWVzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4Mjc0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlguMjUgRnVuY3Rpb24gQ2FsbCBBbmFseXNpcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBYLjI1IGNvZGUsIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgYXQgbWUgaXMgdGhhdCB0aGVzZSBjb3JlIGZ1bmN0aW9ucywgYHgyNV9jcmVhdGVgLCBgeDI1X2Nvbm5lY3RgLCBgeDI1X3JlbGVhc2VgLCBgeDI1X2JpbmRgLCBgeDI1X2xpc3RlbmAsIGB4MjVfYWNjZXB0YCwgYHgyNV9zZW5kbXNnYCwgYW5kIGB4MjVfcmVjdm1zZ2AgYXJlIGFsbCBkZWNsYXJlZCBhcyBgc3RhdGljYC4gVGhhdCYjMzk7cyB1bnVzdWFsLCBhbmQgaW1tZWRpYXRlbHkgcmFpc2VzIGEgcXVlc3Rpb24gaW4gbXkgbWluZC4KCklmIHRoZXNlIGNyaXRpY2FsIG5ldHdvcmsgZnVuY3Rpb25zIGFyZSBgc3RhdGljYCwgdGhleSYjMzk7cmUgb25seSB2aXNpYmxlIHdpdGhpbiB0aGUgY29tcGlsYXRpb24gdW5pdCBpbiBgbmV0L3gyNS9hZl94MjUuY2AuIEJ1dCB0aGF0IGNhbiYjMzk7dCBiZSAqYWxsKiB0aGVyZSBpcyB0byBYLjI1LCBjYW4gaXQ/IFRoZXJlICptdXN0KiBiZSBwdWJsaWMgZW50cnkgcG9pbnRzIHNvbWV3aGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwgYXJlIHN1cHBvc2VkIHRvIGludGVyYWN0IHdpdGggdGhlIFguMjUgc3RhY2suIFNvLCB0aGUgZm9sbG93LXVwIHF1ZXN0aW9uIGlzOiBXaGVyZSBhcmUgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGRlZmluZWQgaW4gYG5ldC94MjUvYWZfeDI1LmNgPyBXaGF0IGFyZSB0aGUgaW50ZXJmYWNlIHBvaW50cyBpbnRvIHRoZSBYLjI1IGxheWVyPyBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gZGlnIGRlZXBlciBoZXJlLiBUaGVyZSBoYXMgdG8gYmUgYSBtZWNoYW5pc20gZm9yIG90aGVyIGtlcm5lbCBtb2R1bGVzIHRvIGNhbGwgaW50byB0aGlzIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15pbnQgeDI1XyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94MjUvYWZfeDI1LmM9NzY9c3RydWN0IGNvbXBhdF94MjVfc3Vic2NyaXBfc3RydWN0IHtcbi0tXG5uZXQveDI1L2FmX3gyNS5jLTgzLVxubmV0L3gyNS9hZl94MjUuYzo4NDppbnQgeDI1X3BhcnNlX2FkZHJlc3NfYmxvY2soc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC94MjUvYWZfeDI1LmMtODUtXHRcdHN0cnVjdCB4MjVfYWRkcmVzcyAqY2FsbGVkX2FkZHIsXG4tLVxubmV0L3gyNS9hZl94MjUuYy0xMTctXG5uZXQveDI1L2FmX3gyNS5jOjExODppbnQgeDI1X2FkZHJfbnRvYSh1bnNpZ25lZCBjaGFyICpwLCBzdHJ1Y3QgeDI1X2FkZHJlc3MgKmNhbGxlZF9hZGRyLFxubmV0L3gyNS9hZl94MjUuYy0xMTktXHRcdCAgc3RydWN0IHgyNV9hZGRyZXNzICpjYWxsaW5nX2FkZHIpXG4tLVxubmV0L3gyNS9hZl94MjUuYy0xNTQtXG5uZXQveDI1L2FmX3gyNS5jOjE1NTppbnQgeDI1X2FkZHJfYXRvbih1bnNpZ25lZCBjaGFyICpwLCBzdHJ1Y3QgeDI1X2FkZHJlc3MgKmNhbGxlZF9hZGRyLFxubmV0L3gyNS9hZl94MjUuYy0xNTYtXHRcdCAgc3RydWN0IHgyNV9hZGRyZXNzICpjYWxsaW5nX2FkZHIpXG4tLVxubmV0L3gyNS9hZl94MjUuYz05MTI9c3RhdGljIGludCB4MjVfZ2V0bmFtZShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLFxuLS1cbm5ldC94MjUvYWZfeDI1LmMtOTM1LVxubmV0L3gyNS9hZl94MjUuYzo5MzY6aW50IHgyNV9yeF9jYWxsX3JlcXVlc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHgyNV9uZWlnaCAqbmIsXG5uZXQveDI1L2FmX3gyNS5jLTkzNy1cdFx0XHR1bnNpZ25lZCBpbnQgbGNpKVxuLS1cbm5ldC94MjUveDI1X2Rldi5jPTI2PXN0YXRpYyBpbnQgeDI1X3JlY2VpdmVfZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeDI1X25laWdoICpuYilcbi0tXG5uZXQveDI1L3gyNV9kZXYuYy05My1cbm5ldC94MjUveDI1X2Rldi5jOjk0OmludCB4MjVfbGFwYl9yZWNlaXZlX2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5uZXQveDI1L3gyNV9kZXYuYy05NS1cdFx0XHQgICBzdHJ1Y3QgcGFja2V0X3R5cGUgKnB0eXBlLCBzdHJ1Y3QgbmV0X2RldmljZSAqb3JpZ19kZXYpXG4tLVxubmV0L3gyNS94MjVfZmFjaWxpdGllcy5jLTQwLSAqL1xubmV0L3gyNS94MjVfZmFjaWxpdGllcy5jOjQxOmludCB4MjVfcGFyc2VfZmFjaWxpdGllcyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeDI1X2ZhY2lsaXRpZXMgKmZhY2lsaXRpZXMsXG5uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmMtNDItXHRcdHN0cnVjdCB4MjVfZHRlX2ZhY2lsaXRpZXMgKmR0ZV9mYWNzLCB1bnNpZ25lZCBsb25nICp2Y19mYWNfbWFzaylcbi0tXG5uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmMtMTg3LSAqL1xubmV0L3gyNS94MjVfZmFjaWxpdGllcy5jOjE4ODppbnQgeDI1X2NyZWF0ZV9mYWNpbGl0aWVzKHVuc2lnbmVkIGNoYXIgKmJ1ZmZlcixcbm5ldC94MjUveDI1X2ZhY2lsaXRpZXMuYy0xODktXHRcdHN0cnVjdCB4MjVfZmFjaWxpdGllcyAqZmFjaWxpdGllcyxcbi0tXG5uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmMtMjY0LSAqL1xubmV0L3gyNS94MjVfZmFjaWxpdGllcy5jOjI2NTppbnQgeDI1X25lZ290aWF0ZV9mYWNpbGl0aWVzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrICpzayxcbm5ldC94MjUveDI1X2ZhY2lsaXRpZXMuYy0yNjYtXHRcdHN0cnVjdCB4MjVfZmFjaWxpdGllcyAqbmV3LCBzdHJ1Y3QgeDI1X2R0ZV9mYWNpbGl0aWVzICpkdGUpXG4tLVxubmV0L3gyNS94MjVfZm9yd2FyZC5jPTE1PURFRklORV9SV0xPQ0soeDI1X2ZvcndhcmRfbGlzdF9sb2NrKTtcbm5ldC94MjUveDI1X2ZvcndhcmQuYy0xNi1cbm5ldC94MjUveDI1X2ZvcndhcmQuYzoxNzppbnQgeDI1X2ZvcndhcmRfY2FsbChzdHJ1Y3QgeDI1X2FkZHJlc3MgKmRlc3RfYWRkciwgc3RydWN0IHgyNV9uZWlnaCAqZnJvbSxcbm5ldC94MjUveDI1X2ZvcndhcmQuYy0xOC1cdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbGNpKVxuLS1cbm5ldC94MjUveDI1X2ZvcndhcmQuYy04OC1cbm5ldC94MjUveDI1X2ZvcndhcmQuYzo4OTppbnQgeDI1X2ZvcndhcmRfZGF0YShpbnQgbGNpLCBzdHJ1Y3QgeDI1X25laWdoICpmcm9tLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKSB7XG5uZXQveDI1L3gyNV9mb3J3YXJkLmMtOTAtXG4tLVxubmV0L3gyNS94MjVfaW4uYz0zOTM9c3RhdGljIGludCB4MjVfc3RhdGU1X21hY2hpbmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZnJhbWV0eXBlKVxuLS1cbm5ldC94MjUveDI1X2luLmMtNDE3LS8qIEhpZ2hlciBsZXZlbCB1cGNhbGwgZm9yIGEgTEFQQiBmcmFtZSAqL1xubmV0L3gyNS94MjVfaW4uYzo0MTg6aW50IHgyNV9wcm9jZXNzX3J4X2ZyYW1lKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC94MjUveDI1X2luLmMtNDE5LXtcbi0tXG5uZXQveDI1L3gyNV9pbi5jLTQ1MC1cbm5ldC94MjUveDI1X2luLmM6NDUxOmludCB4MjVfYmFja2xvZ19yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L3gyNS94MjVfaW4uYy00NTIte1xuLS1cbm5ldC94MjUveDI1X2xpbmsuYz0zMzI9c3RydWN0IHgyNV9uZWlnaCAqeDI1X2dldF9uZWlnaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC94MjUveDI1X2xpbmsuYy0zNTItICovXG5uZXQveDI1L3gyNV9saW5rLmM6MzUzOmludCB4MjVfc3Vic2NyX2lvY3RsKHVuc2lnbmVkIGludCBjbWQsIHZvaWQgX191c2VyICphcmcpXG5uZXQveDI1L3gyNV9saW5rLmMtMzU0LXtcbi0tXG5uZXQveDI1L3gyNV9vdXQuYz0yOD1zdGF0aWMgaW50IHgyNV9wYWNzaXplX3RvX2J5dGVzKHVuc2lnbmVkIGludCBwYWNzaXplKVxuLS1cbm5ldC94MjUveDI1X291dC5jLTQ2LSAqL1xubmV0L3gyNS94MjVfb3V0LmM6NDc6aW50IHgyNV9vdXRwdXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L3gyNS94MjVfb3V0LmMtNDgte1xuLS1cbm5ldC94MjUveDI1X3JvdXRlLmM9MTM1PXN0cnVjdCB4MjVfcm91dGUgKngyNV9nZXRfcm91dGUoc3RydWN0IHgyNV9hZGRyZXNzICphZGRyKVxuLS1cbm5ldC94MjUveDI1X3JvdXRlLmMtMTU5LSAqL1xubmV0L3gyNS94MjVfcm91dGUuYzoxNjA6aW50IHgyNV9yb3V0ZV9pb2N0bCh1bnNpZ25lZCBpbnQgY21kLCB2b2lkIF9fdXNlciAqYXJnKVxubmV0L3gyNS94MjVfcm91dGUuYy0xNjEte1xuLS1cbm5ldC94MjUveDI1X3N1YnIuYz02OT12b2lkIHgyNV9yZXF1ZXVlX2ZyYW1lcyhzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L3gyNS94MjVfc3Vici5jLTkwLSAqL1xubmV0L3gyNS94MjVfc3Vici5jOjkxOmludCB4MjVfdmFsaWRhdGVfbnIoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBzaG9ydCBucilcbm5ldC94MjUveDI1X3N1YnIuYy05Mi17XG4tLVxubmV0L3gyNS94MjVfc3Vici5jPTExMD12b2lkIHgyNV93cml0ZV9pbnRlcm5hbChzdHJ1Y3Qgc29jayAqc2ssIGludCBmcmFtZXR5cGUpXG4tLVxubmV0L3gyNS94MjVfc3Vici5jLTI2MC0gKi9cbm5ldC94MjUveDI1X3N1YnIuYzoyNjE6aW50IHgyNV9kZWNvZGUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKm5zLCBpbnQgKm5yLCBpbnQgKnEsXG5uZXQveDI1L3gyNV9zdWJyLmMtMjYyLVx0ICAgICAgIGludCAqZCwgaW50ICptKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDY3OAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDYyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBUaG91Z2h0IFByb2Nlc3Mgb24gSWRlbnRpZnlpbmcgRm9jdXMgU3ltYm9scyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gY2hvb3NlIHNvbWUgZ29vZCBmb2N1cyBzeW1ib2xzIGZvciB0aGlzIGFuYWx5c2lzLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSB3YW50cyBtZSB0byBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zLCBub3QgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIEkgaW5pdGlhbGx5IGNvbnNpZGVyZWQgdGhlIGNvcmUgWC4yNSBzb2NrZXQgb3BlcmF0aW9uczogYHgyNV9jcmVhdGVgLCBgeDI1X2Nvbm5lY3RgLCBgeDI1X3JlbGVhc2VgLCBgeDI1X2JpbmRgLCBgeDI1X2xpc3RlbmAsIGB4MjVfYWNjZXB0YCwgYHgyNV9zZW5kbXNnYCwgYW5kIGB4MjVfcmVjdm1zZ2AuIFRoZXNlIHNlZW0gbGlrZSB0aGUgb2J2aW91cyBjYW5kaWRhdGVzIHNpbmNlIHRoZXkgYXJlIHRoZSBtYWluIHNvY2tldCBvcGVyYXRpb25zLiBCdXQsIGFyZSB0aGV5IGlubGluZWQ/CgpJIHJlbWVtYmVyIHRoZXNlIGZ1bmN0aW9ucyBhcmUgcGFzc2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzIHdpdGhpbiBgeDI1X3Byb3RvX29wc2AgYW5kIGB4MjVfZmFtaWx5X29wc2AuIFNvIHRoZXkgKnNob3VsZG4mIzM5O3QqIGJlIGlubGluZWQuIFRoYXQgbWVhbnMgdGhleSBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMsIG1ha2luZyB0aGVtIHZhbGlkIGZvY3VzIHN5bWJvbHMuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgY29uZmlybSB0aGF0IGB4MjVfY29ubmVjdGAgaXMgaW5kZWVkIHBhc3NlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIuIFllcywgY29uZmlybWVkLiBHb29kLCB0aGV5IGFyZSB2aWFibGUuCgpOZXh0LCBJJiMzOTtsbCBxdWlja2x5IHNjYW4gdGhlIGZ1bmN0aW9ucyBpbiBgeDI1X3RpbWVyLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHByb21pc2luZyBjYW5kaWRhdGVzLiBJIHNlZSBmdW5jdGlvbnMgbGlrZSBgeDI1X3N0YXJ0X2hlYXJ0YmVhdGAsIGB4MjVfc3RvcF9oZWFydGJlYXRgLCBgeDI1X3N0YXJ0X3QydGltZXJgLCBldGMuIFRoZXNlIGFyZSBub24tc3RhdGljIGJ1dCBzZWVtIHRvIGJlIGludGVybmFsLiBJIG5lZWQgdG8gY2hlY2sgaWYgdGhleSBhcmUgZXhwb3J0ZWQgb3IganVzdCB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCB0aGV5IGFyZSBtb3N0bHkgbW9kdWxlLWludGVybmFsLCBzbyBwcm9iYWJseSBub3QgZ29vZCBjYW5kaWRhdGVzIGZvciBkaXJlY3QgZm9jdXMuIEkgdGhlbiBjb25zaWRlciBgeDI1X2luaXRfdGltZXJzYCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgeDI1X2FsbG9jX3NvY2tldGAsIGFuZCBgeDI1X3N0YXJ0X2hlYXJ0YmVhdGAgd2hpY2ggaXMgY2FsbGVkIGZyb20gYHgyNV9hbGxvY19zb2NrZXRgIGFuZCBgeDI1X2hlYXJ0YmVhdF9leHBpcnlgLgoKVGhpbmtpbmcgbW9yZSBicm9hZGx5LCBJIG5lZWQgdG8gbG9vayBmb3IgZnVuY3Rpb25zIHRoYXQgYXJlIGNyaXRpY2FsIHRvIHRoZSBiZWhhdmlvciBiZWluZyBtb2RpZmllZC4gQmVzaWRlcyB0aGUgc29ja2V0IG9wZXJhdGlvbnMsIEkgc2hvdWxkIGNvbnNpZGVyIHRoZSBmdW5jdGlvbnMgdGhhdCBoYW5kbGUgZnJhbWUgcmVjZXB0aW9uIGFuZCB0aW1lciBleHBpcnkuIE15IGZpcnN0IHBhc3MgYXQgcG90ZW50aWFsIGNhbmRpZGF0ZXMgYXJlOiBgeDI1X2Nvbm5lY3RgLCBgeDI1X3JlbGVhc2VgLCBgeDI1X3J4X2NhbGxfcmVxdWVzdGAsIGB4MjVfbGFwYl9yZWNlaXZlX2ZyYW1lYCwgYHgyNV9wcm9jZXNzX3J4X2ZyYW1lYCwgYHgyNV90aW1lcl9leHBpcnlgLCBhbmQgYHgyNV9oZWFydGJlYXRfZXhwaXJ5YC4KCldhaXQgYSBtaW51dGUsIGB4MjVfdGltZXJfZXhwaXJ5YCBhbmQgYHgyNV9oZWFydGJlYXRfZXhwaXJ5YCBhcmUgdGhlICphY3R1YWwqIHRpbWVyIGNhbGxiYWNrcywgYW5kIHRoZXkgd2VyZSB0aGUgdGFyZ2V0cyBvZiB0aGUgbW9kaWZpY2F0aW9ucyEgVGhleSBhcmUgc3RhdGljLCBidXQgSSByZW1lbWJlciB0aGV5JiMzOTtyZSBwYXNzZWQgdG8gYHRpbWVyX3NldHVwYC4gVGhpcyBtZWFucyB0aGV5IGFyZSAqbm90KiBpbmxpbmVkIGFuZCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIFRoZXkgYXJlICpleGNlbGxlbnQqIGZvY3VzIHN5bWJvbHMuIFRoZXkgYXJlIHRoZSBjb3JlIG9mIHRoZSB0aW1lciBsb2dpYyBJIGFtIGxvb2tpbmcgYXQuIEkgd2lsbCBub3cgZXhhbWluZSB0aGVzZSBjbG9zZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4MjVfdGltZXJfZXhwaXJ5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3gyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3gyNS94MjVfdGltZXIuYz0yND1zdGF0aWMgdm9pZCB4MjVfaGVhcnRiZWF0X2V4cGlyeShzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7XG5uZXQveDI1L3gyNV90aW1lci5jOjI1OnN0YXRpYyB2b2lkIHgyNV90aW1lcl9leHBpcnkoc3RydWN0IHRpbWVyX2xpc3QgKnQpO1xubmV0L3gyNS94MjVfdGltZXIuYy0yNi1cbm5ldC94MjUveDI1X3RpbWVyLmM9Mjc9dm9pZCB4MjVfaW5pdF90aW1lcnMoc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC94MjUveDI1X3RpbWVyLmMtMzAtXG5uZXQveDI1L3gyNV90aW1lci5jOjMxOlx0dGltZXJfc2V0dXAoXHUwMDI2eDI1LVx1MDAzZXRpbWVyLCB4MjVfdGltZXJfZXhwaXJ5LCAwKTtcbm5ldC94MjUveDI1X3RpbWVyLmMtMzItXG4tLVxubmV0L3gyNS94MjVfdGltZXIuYz0xMzc9c3RhdGljIGlubGluZSB2b2lkIHgyNV9kb190aW1lcl9leHBpcnkoc3RydWN0IHNvY2sgKiBzaylcbi0tXG5uZXQveDI1L3gyNV90aW1lci5jLTE2Mi1cbm5ldC94MjUveDI1X3RpbWVyLmM6MTYzOnN0YXRpYyB2b2lkIHgyNV90aW1lcl9leHBpcnkoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG5uZXQveDI1L3gyNV90aW1lci5jLTE2NC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMjgwCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkFuYWx5emluZyB0aGUgVGltZXIgQ2FsbGJhY2sgQ2hhbmdlcyoqCgpSaWdodCwgc28gSSBzZWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aW1lciBjYWxsYmFja3MgaW4gdGhpcyBwYXRjaC4gU3BlY2lmaWNhbGx5LCBgeDI1X3RpbWVyX2V4cGlyeWAgYW5kIGB4MjVfaGVhcnRiZWF0X2V4cGlyeWAgYXJlIHRoZSB0d28gbWFpbiBjYWxsYmFja3MgdGhhdCBoYXZlIGJlZW4gaWRlbnRpZmllZCBhcyB0aW1lci1yZWxhdGVkIGluIHRoaXMgc2VjdGlvbiBvZiBjb2RlLiBNYWtlcyBwZXJmZWN0IHNlbnNlOyB0aGV5JiMzOTtyZSBuYW1lZCBhZnRlciBleHBpcnkgZXZlbnRzLCBzbyB0aGF0JiMzOTtzIGEgcHJldHR5IGNsZWFyIGluZGljYXRvci4gQW5kIGxldCYjMzk7cyBub3QgZm9yZ2V0IGB4MjVfZGVzdHJveV90aW1lcmAuIEl0JiMzOTtzIGFub3RoZXIgY2FsbGJhY2sgZnVuY3Rpb24sIHRoaXMgb25lIGRlYWxpbmcgd2l0aCB0aW1lciBkZXN0cnVjdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aG9zZSB0aHJlZSBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSwgdG8gZnVsbHkgZ3Jhc3Agd2hhdCB0aGlzIHBhdGNoIGlzIGRvaW5nIHdpdGggWC4yNSB0aW1lcnMuIFRoZSBjaGFuZ2VzIGNvdWxkIGludm9sdmUgaG93IHRoZSB0aW1lcnMgYXJlIGluaXRpYWxpemVkLCBob3cgdGhlaXIgZXhwaXJhdGlvbnMgYXJlIGhhbmRsZWQsIG9yIGV2ZW4gdGhlIHByb2Nlc3Mgb2YgY2xlYW5pbmcgdXAgdGhlc2UgdGltZXJzLiBUaW1lIHRvIGRpdmUgZGVlcGVyIGFuZCBhbmFseXplIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4MjVfZGVzdHJveV90aW1lciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94MjUvYWZfeDI1LmM9MzU2PXN0YXRpYyB2b2lkIF9feDI1X2Rlc3Ryb3lfc29ja2V0KHN0cnVjdCBzb2NrICopO1xuLS1cbm5ldC94MjUvYWZfeDI1LmMtMzYwLSAqL1xubmV0L3gyNS9hZl94MjUuYzozNjE6c3RhdGljIHZvaWQgeDI1X2Rlc3Ryb3lfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG5uZXQveDI1L2FmX3gyNS5jLTM2Mi17XG4tLVxubmV0L3gyNS9hZl94MjUuYz0zNzY9c3RhdGljIHZvaWQgX194MjVfZGVzdHJveV9zb2NrZXQoc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC94MjUvYWZfeDI1LmMtNDAxLVx0XHQvKiBEZWZlcjogb3V0c3RhbmRpbmcgYnVmZmVycyAqL1xubmV0L3gyNS9hZl94MjUuYzo0MDI6XHRcdHNrLVx1MDAzZXNrX3RpbWVyLmZ1bmN0aW9uID0geDI1X2Rlc3Ryb3lfdGltZXI7XG5uZXQveDI1L2FmX3gyNS5jLTQwMy1cdFx0c2tfcmVzZXRfdGltZXIoc2ssIFx1MDAyNnNrLVx1MDAzZXNrX3RpbWVyLCBqaWZmaWVzICYjNDM7IDEwICogSFopO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjgzMgoJCQkJCQkJb3V0cHV0OiAxODgKCQkJCQkJCXRob3VnaHRzOiA4NDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqWC4yNSBUaW1lciBGaXhlcyBhbmQgRnV6emluZyBTdHJhdGVneSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBYLjI1IHBhdGNoIGFuZCBJJiMzOTt2ZSBnb3QgYSBnb29kIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGdvaW5nIG9uLiBUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGZpeGluZyBzb21lIHRpbWVyIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZXMsIHdoaWNoLCBpZiBsZWZ0IHVuZml4ZWQsIGNvdWxkIGRlZmluaXRlbHkgbGVhZCB0byBzb21lIG5hc3R5IG1lbW9yeSBtYW5hZ2VtZW50IHByb2JsZW1zIGRvd24gdGhlIGxpbmUuIEkmIzM5O20gdGhpbmtpbmcsIHRoaXMgZGVmaW5pdGVseSBuZWVkcyBmdXp6aW5nLgoKTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBpZGVudGlmeSBmb2N1cyBzeW1ib2xzLiBJIHRoaW5rIHRoZXNlIGFyZSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRvIHRhcmdldDogYHgyNV9kZXN0cm95X3RpbWVyYCwgYHgyNV9oZWFydGJlYXRfZXhwaXJ5YCwgYHgyNV90aW1lcl9leHBpcnlgLCBgeDI1X2Nvbm5lY3RgLCBgeDI1X3JlbGVhc2VgLiBIb3dldmVyLCBJJiMzOTt2ZSBleHBhbmRlZCB0aGUgbGlzdCB0byBpbmNsdWRlIGB4MjVfYmluZGAsIGB4MjVfbGlzdGVuYCwgYW5kIGB4MjVfYWNjZXB0YCBhcyB3ZWxsLCBhcyB0aGV5IGFyZSBlc3NlbnRpYWwgZW50cnkgcG9pbnRzIGludG8gWC4yNSBzb2NrZXQgdXNhZ2UuCgpXYWl0IGEgbWludXRlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGZ1bmN0aW9uIGB4MjVfZGVzdHJveV90aW1lcmAgd2hpY2ggaXMgc3RhdGljIGFuZCBhIHRpbWVyIGNhbGxiYWNrLCBpcyB2YWxpZCBhcyBhIGZvY3VzIHN5bWJvbC4gSWYgaXQmIzM5O3Mgbm90IGlubGluZWQsIHRoZW4gdGhlIHN0YXRpYyBxdWFsaWZpZXIgc2hvdWxkIG5vdCBiZSBhbiBpc3N1ZSBhcyB0aGUgZnVuY3Rpb24gd2lsbCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIE9rYXksIHRoYXQgY2hlY2tzIG91dC4KCk5vdywgbGV0JiMzOTtzIHNlZSwgd2hhdCBlbHNlIG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQ/IEZyb20gYSBjb25maWd1cmF0aW9uIHN0YW5kcG9pbnQsIEkgYmVsaWV2ZSBgQ09ORklHX1gyNWAgaXMgdGhlIG9ubHkgcmVsZXZhbnQgZmxhZyB0byBlbmFibGUuCgpJJiMzOTt2ZSB0YWtlbiBhIGNsb3NlciBsb29rIGF0IHRoZSBwYXRjaCBpdHNlbGYgdG8gZW5zdXJlIEkgZGlkbiYjMzk7dCBtaXNzIGFueXRoaW5nLiBJdCBhcHBlYXJzIHRoZSBjaGFuZ2VzIGFyZSBzcG90IG9uLiBgc29ja19wdXQoc2spYCBpcyBjb3JyZWN0bHkgYWRkZWQgYXQgdGhlIGVuZCBvZiB0aGUgdGltZXIgY2FsbGJhY2tzIChgeDI1X2Rlc3Ryb3lfdGltZXJgLCBgeDI1X2hlYXJ0YmVhdF9leHBpcnlgLCBgeDI1X3RpbWVyX2V4cGlyeWApLiBUaGlzIGlzIGNydWNpYWwgYmVjYXVzZSBpdCBlbnN1cmVzIHRoZSByZWZlcmVuY2UgdGFrZW4gYnkgYHNrX3Jlc2V0X3RpbWVyYCBvciBgYWRkX3RpbWVyYCBpcyBkcm9wcGVkIHByb3Blcmx5LiBJJiMzOTt2ZSBhbHNvIHZlcmlmaWVkIHRoYXQgdGhlIHBhdGNoIGNvcnJlY3RseSB1c2VzIGBza19yZXNldF90aW1lcmAsIGFuZCBmcm9tIHdoYXQgSSBjYW4gdGVsbCwgaXQmIzM5O3Mgb3BlcmF0aW5nIGFzIGludGVuZGVkLiBJdCBhZGRzIGEgcmVmZXJlbmNlIHdoZW4gYSB0aW1lciBpcyBhcm1lZCBhbmQgZHJvcHMgaXQgd2hlbiB0aGUgdGltZXIgaXMgc3RvcHBlZCBvciBleGVjdXRlZC4gVGhpcyBwcmV2ZW50cyBkb3VibGUtZnJlZXMuIFRoZSBoZWFydGJlYXQgaW1wbGVtZW50YXRpb24gYWxzbyBjaGVja3MgaWYgdGhlIHNvY2tldCBoYXMgYmVlbiB1bmxpbmtlZCBiZWZvcmUgcmVhcm1pbmcgdGhlIGhlYXJ0YmVhdC4KClNvLCBvdmVyYWxsLCB0aGlzIHBhdGNoIGlzIGEgZnVuY3Rpb25hbCBpbXByb3ZlbWVudC4gVGhlIGFkZGl0aW9uIG9mIGZ1enppbmcgZm9jdXMgc3ltYm9scyBhbmQgZW5hYmxpbmcgYENPTkZJR19YMjVgIHNlZW0gbGlrZSBhIGdvb2QgYXBwcm9hY2ggdG8gZW5zdXJlIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBjaGFuZ2VzLiBJJiMzOTttIHNhdGlzZmllZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1gyNSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3gyNV9kZXN0cm95X3RpbWVyJiMzNDssCiAgICAmIzM0O3gyNV9oZWFydGJlYXRfZXhwaXJ5JiMzNDssCiAgICAmIzM0O3gyNV90aW1lcl9leHBpcnkmIzM0OywKICAgICYjMzQ7eDI1X2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7eDI1X3JlbGVhc2UmIzM0OywKICAgICYjMzQ7eDI1X2JpbmQmIzM0OywKICAgICYjMzQ7eDI1X2xpc3RlbiYjMzQ7LAogICAgJiMzNDt4MjVfYWNjZXB0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHRpbWVyIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgcmVhcm1pbmcgbG9naWMgaW4gdGhlIFguMjUgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24uIEl0IHJlcGxhY2VzIHJhdyB0aW1lciBBUEkgY2FsbHMgd2l0aCBzb2NrZXQgdGltZXIgZnVuY3Rpb25zIChza19yZXNldF90aW1lciwgc2tfc3RvcF90aW1lcikgYW5kIGFkZHMgbWlzc2luZyBzb2NrX3B1dCgpIGNhbGxzIGluIHRpbWVyIGNhbGxiYWNrcyB0byBwcmV2ZW50IHVzZS1hZnRlci1mcmVlIG9yIG1lbW9yeSBsZWFrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgcHJvdG9jb2wgY29kZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WDI1JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eDI1X2Rlc3Ryb3lfdGltZXImIzM0OywKICAgICYjMzQ7eDI1X2hlYXJ0YmVhdF9leHBpcnkmIzM0OywKICAgICYjMzQ7eDI1X3RpbWVyX2V4cGlyeSYjMzQ7LAogICAgJiMzNDt4MjVfY29ubmVjdCYjMzQ7LAogICAgJiMzNDt4MjVfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDt4MjVfYmluZCYjMzQ7LAogICAgJiMzNDt4MjVfbGlzdGVuJiMzNDssCiAgICAmIzM0O3gyNV9hY2NlcHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgdGltZXIgcmVmZXJlbmNlIGNvdW50aW5nIGFuZCByZWFybWluZyBsb2dpYyBpbiB0aGUgWC4yNSBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbi4gSXQgcmVwbGFjZXMgcmF3IHRpbWVyIEFQSSBjYWxscyB3aXRoIHNvY2tldCB0aW1lciBmdW5jdGlvbnMgKHNrX3Jlc2V0X3RpbWVyLCBza19zdG9wX3RpbWVyKSBhbmQgYWRkcyBtaXNzaW5nIHNvY2tfcHV0KCkgY2FsbHMgaW4gdGltZXIgY2FsbGJhY2tzIHRvIHByZXZlbnQgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGxlYWtzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29yayBwcm90b2NvbCBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDE6MjYuODY4ODAxNjRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzA2ODkyMTY3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYMjVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4MjVfZGVzdHJveV90aW1lclwiLFxuICAgIFwieDI1X2hlYXJ0YmVhdF9leHBpcnlcIixcbiAgICBcIngyNV90aW1lcl9leHBpcnlcIixcbiAgICBcIngyNV9jb25uZWN0XCIsXG4gICAgXCJ4MjVfcmVsZWFzZVwiLFxuICAgIFwieDI1X2JpbmRcIixcbiAgICBcIngyNV9saXN0ZW5cIixcbiAgICBcIngyNV9hY2NlcHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyB0aW1lciByZWZlcmVuY2UgY291bnRpbmcgYW5kIHJlYXJtaW5nIGxvZ2ljIGluIHRoZSBYLjI1IHByb3RvY29sIGltcGxlbWVudGF0aW9uLiBJdCByZXBsYWNlcyByYXcgdGltZXIgQVBJIGNhbGxzIHdpdGggc29ja2V0IHRpbWVyIGZ1bmN0aW9ucyAoc2tfcmVzZXRfdGltZXIsIHNrX3N0b3BfdGltZXIpIGFuZCBhZGRzIG1pc3Npbmcgc29ja19wdXQoKSBjYWxscyBpbiB0aW1lciBjYWxsYmFja3MgdG8gcHJldmVudCB1c2UtYWZ0ZXItZnJlZSBvciBtZW1vcnkgbGVha3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JrIHByb3RvY29sIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjQxOjI2Ljg2ODgwNzUxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzkxMDA0MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1YmQxNGMyODM5NjIzYWQyNDhjNjVjZWYwNTc0M2Q0MWMwY2FiMzdiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDI3IDA3OjQxOjI1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC94MjUvYWZfeDI1LmMgYi9uZXQveDI1L2FmX3gyNS5jXFxuaW5kZXggOGFhZTkyNzNiN2MxNDQuLjAzM2U3ZDA1OWY1OGM2IDEwMDY0NFxcbi0tLSBhL25ldC94MjUvYWZfeDI1LmNcXG4rKysgYi9uZXQveDI1L2FmX3gyNS5jXFxuQEAgLTM2Myw2ICszNjMsNyBAQCBzdGF0aWMgdm9pZCB4MjVfZGVzdHJveV90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4gXFx0c3RydWN0IHNvY2sgKnNrID0gdGltZXJfY29udGFpbmVyX29mKHNrLCB0LCBza190aW1lcik7XFxuIFxcbiBcXHR4MjVfZGVzdHJveV9zb2NrZXRfZnJvbV90aW1lcihzayk7XFxuK1xcdHNvY2tfcHV0KHNrKTtcXG4gfVxcbiBcXG4gLypcXG5AQCAtMzk4LDkgKzM5OSw4IEBAIHN0YXRpYyB2b2lkIF9feDI1X2Rlc3Ryb3lfc29ja2V0KHN0cnVjdCBzb2NrICpzaylcXG4gXFxuIFxcdGlmIChza19oYXNfYWxsb2NhdGlvbnMoc2spKSB7XFxuIFxcdFxcdC8qIERlZmVyOiBvdXRzdGFuZGluZyBidWZmZXJzICovXFxuLVxcdFxcdHNrLVxcdTAwM2Vza190aW1lci5leHBpcmVzICA9IGppZmZpZXMgKyAxMCAqIEhaO1xcbiBcXHRcXHRzay1cXHUwMDNlc2tfdGltZXIuZnVuY3Rpb24gPSB4MjVfZGVzdHJveV90aW1lcjtcXG4tXFx0XFx0YWRkX3RpbWVyKFxcdTAwMjZzay1cXHUwMDNlc2tfdGltZXIpO1xcbitcXHRcXHRza19yZXNldF90aW1lcihzaywgXFx1MDAyNnNrLVxcdTAwM2Vza190aW1lciwgamlmZmllcyArIDEwICogSFopO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHQvKiBkcm9wIGxhc3QgcmVmZXJlbmNlIHNvIHNvY2tfcHV0IHdpbGwgZnJlZSAqL1xcbiBcXHRcXHRfX3NvY2tfcHV0KHNrKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L3gyNS94MjVfdGltZXIuYyBiL25ldC94MjUveDI1X3RpbWVyLmNcXG5pbmRleCAyZWM2M2ExZjRjNmQ0Mi4uNzg5NmNkNDNmMWNjMWUgMTAwNjQ0XFxuLS0tIGEvbmV0L3gyNS94MjVfdGltZXIuY1xcbisrKyBiL25ldC94MjUveDI1X3RpbWVyLmNcXG5AQCAtMzYsNDUgKzM2LDQ1IEBAIHZvaWQgeDI1X2luaXRfdGltZXJzKHN0cnVjdCBzb2NrICpzaylcXG4gXFxuIHZvaWQgeDI1X3N0YXJ0X2hlYXJ0YmVhdChzdHJ1Y3Qgc29jayAqc2spXFxuIHtcXG4tXFx0bW9kX3RpbWVyKFxcdTAwMjZzay1cXHUwMDNlc2tfdGltZXIsIGppZmZpZXMgKyA1ICogSFopO1xcbitcXHRza19yZXNldF90aW1lcihzaywgXFx1MDAyNnNrLVxcdTAwM2Vza190aW1lciwgamlmZmllcyArIDUgKiBIWik7XFxuIH1cXG4gXFxuIHZvaWQgeDI1X3N0b3BfaGVhcnRiZWF0KHN0cnVjdCBzb2NrICpzaylcXG4ge1xcbi1cXHR0aW1lcl9kZWxldGUoXFx1MDAyNnNrLVxcdTAwM2Vza190aW1lcik7XFxuK1xcdHNrX3N0b3BfdGltZXIoc2ssIFxcdTAwMjZzay1cXHUwMDNlc2tfdGltZXIpO1xcbiB9XFxuIFxcbiB2b2lkIHgyNV9zdGFydF90MnRpbWVyKHN0cnVjdCBzb2NrICpzaylcXG4ge1xcbiBcXHRzdHJ1Y3QgeDI1X3NvY2sgKngyNSA9IHgyNV9zayhzayk7XFxuIFxcbi1cXHRtb2RfdGltZXIoXFx1MDAyNngyNS1cXHUwMDNldGltZXIsIGppZmZpZXMgKyB4MjUtXFx1MDAzZXQyKTtcXG4rXFx0c2tfcmVzZXRfdGltZXIoc2ssIFxcdTAwMjZ4MjUtXFx1MDAzZXRpbWVyLCBqaWZmaWVzICsgeDI1LVxcdTAwM2V0Mik7XFxuIH1cXG4gXFxuIHZvaWQgeDI1X3N0YXJ0X3QyMXRpbWVyKHN0cnVjdCBzb2NrICpzaylcXG4ge1xcbiBcXHRzdHJ1Y3QgeDI1X3NvY2sgKngyNSA9IHgyNV9zayhzayk7XFxuIFxcbi1cXHRtb2RfdGltZXIoXFx1MDAyNngyNS1cXHUwMDNldGltZXIsIGppZmZpZXMgKyB4MjUtXFx1MDAzZXQyMSk7XFxuK1xcdHNrX3Jlc2V0X3RpbWVyKHNrLCBcXHUwMDI2eDI1LVxcdTAwM2V0aW1lciwgamlmZmllcyArIHgyNS1cXHUwMDNldDIxKTtcXG4gfVxcbiBcXG4gdm9pZCB4MjVfc3RhcnRfdDIydGltZXIoc3RydWN0IHNvY2sgKnNrKVxcbiB7XFxuIFxcdHN0cnVjdCB4MjVfc29jayAqeDI1ID0geDI1X3NrKHNrKTtcXG4gXFxuLVxcdG1vZF90aW1lcihcXHUwMDI2eDI1LVxcdTAwM2V0aW1lciwgamlmZmllcyArIHgyNS1cXHUwMDNldDIyKTtcXG4rXFx0c2tfcmVzZXRfdGltZXIoc2ssIFxcdTAwMjZ4MjUtXFx1MDAzZXRpbWVyLCBqaWZmaWVzICsgeDI1LVxcdTAwM2V0MjIpO1xcbiB9XFxuIFxcbiB2b2lkIHgyNV9zdGFydF90MjN0aW1lcihzdHJ1Y3Qgc29jayAqc2spXFxuIHtcXG4gXFx0c3RydWN0IHgyNV9zb2NrICp4MjUgPSB4MjVfc2soc2spO1xcbiBcXG4tXFx0bW9kX3RpbWVyKFxcdTAwMjZ4MjUtXFx1MDAzZXRpbWVyLCBqaWZmaWVzICsgeDI1LVxcdTAwM2V0MjMpO1xcbitcXHRza19yZXNldF90aW1lcihzaywgXFx1MDAyNngyNS1cXHUwMDNldGltZXIsIGppZmZpZXMgKyB4MjUtXFx1MDAzZXQyMyk7XFxuIH1cXG4gXFxuIHZvaWQgeDI1X3N0b3BfdGltZXIoc3RydWN0IHNvY2sgKnNrKVxcbiB7XFxuLVxcdHRpbWVyX2RlbGV0ZShcXHUwMDI2eDI1X3NrKHNrKS1cXHUwMDNldGltZXIpO1xcbitcXHRza19zdG9wX3RpbWVyKHNrLCBcXHUwMDI2eDI1X3NrKHNrKS1cXHUwMDNldGltZXIpO1xcbiB9XFxuIFxcbiB1bnNpZ25lZCBsb25nIHgyNV9kaXNwbGF5X3RpbWVyKHN0cnVjdCBzb2NrICpzaylcXG5AQCAtMTA4LDcgKzEwOCw3IEBAIHN0YXRpYyB2b2lkIHgyNV9oZWFydGJlYXRfZXhwaXJ5KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbiBcXHRcXHRcXHQgICAgIHNvY2tfZmxhZyhzaywgU09DS19ERUFEKSkpIHtcXG4gXFx0XFx0XFx0XFx0YmhfdW5sb2NrX3NvY2soc2spO1xcbiBcXHRcXHRcXHRcXHR4MjVfZGVzdHJveV9zb2NrZXRfZnJvbV90aW1lcihzayk7XFxuLVxcdFxcdFxcdFxcdHJldHVybjtcXG4rXFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcbkBAIC0xMjAsOCArMTIwLDE0IEBAIHN0YXRpYyB2b2lkIHgyNV9oZWFydGJlYXRfZXhwaXJ5KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0fVxcbiByZXN0YXJ0X2hlYXJ0YmVhdDpcXG4tXFx0eDI1X3N0YXJ0X2hlYXJ0YmVhdChzayk7XFxuK1xcdC8qIERvIG5vdCByZWFybSBvbmNlIF9feDI1X2Rlc3Ryb3lfc29ja2V0KCkgaGFzIHVubGlua2VkIHRoZSBzb2NrZXQ6XFxuK1xcdCAqIGl0IGlzIHBhc3QgaXRzIGNhbmNlbCBwb2ludCBhbmQgb3ducyB0aGUgdGVhcmRvd24gZnJvbSB0aGVyZSBvbi5cXG4rXFx0ICovXFxuK1xcdGlmIChza19oYXNoZWQoc2spKVxcbitcXHRcXHR4MjVfc3RhcnRfaGVhcnRiZWF0KHNrKTtcXG4gXFx0YmhfdW5sb2NrX3NvY2soc2spO1xcbitvdXQ6XFxuK1xcdHNvY2tfcHV0KHNrKTtcXG4gfVxcbiBcXG4gLypcXG5AQCAtMTY2LDQgKzE3Miw1IEBAIHN0YXRpYyB2b2lkIHgyNV90aW1lcl9leHBpcnkoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuIFxcdH0gZWxzZVxcbiBcXHRcXHR4MjVfZG9fdGltZXJfZXhwaXJ5KHNrKTtcXG4gXFx0YmhfdW5sb2NrX3NvY2soc2spO1xcbitcXHRzb2NrX3B1dChzayk7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDE6MjcuNDA4NTYwMDdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1NjUyOTE1NTgxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYMjVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4MjVfZGVzdHJveV90aW1lclwiLFxuICAgIFwieDI1X2hlYXJ0YmVhdF9leHBpcnlcIixcbiAgICBcIngyNV90aW1lcl9leHBpcnlcIixcbiAgICBcIngyNV9jb25uZWN0XCIsXG4gICAgXCJ4MjVfcmVsZWFzZVwiLFxuICAgIFwieDI1X2JpbmRcIixcbiAgICBcIngyNV9saXN0ZW5cIixcbiAgICBcIngyNV9hY2NlcHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyB0aW1lciByZWZlcmVuY2UgY291bnRpbmcgYW5kIHJlYXJtaW5nIGxvZ2ljIGluIHRoZSBYLjI1IHByb3RvY29sIGltcGxlbWVudGF0aW9uLiBJdCByZXBsYWNlcyByYXcgdGltZXIgQVBJIGNhbGxzIHdpdGggc29ja2V0IHRpbWVyIGZ1bmN0aW9ucyAoc2tfcmVzZXRfdGltZXIsIHNrX3N0b3BfdGltZXIpIGFuZCBhZGRzIG1pc3Npbmcgc29ja19wdXQoKSBjYWxscyBpbiB0aW1lciBjYWxsYmFja3MgdG8gcHJldmVudCB1c2UtYWZ0ZXItZnJlZSBvciBtZW1vcnkgbGVha3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JrIHByb3RvY29sIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDViZDE0YzI4Mzk2MjNhZDI0OGM2NWNlZjA1NzQzZDQxYzBjYWIzN2JcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAwNzo0MToyNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC94MjUvYWZfeDI1LmMgYi9uZXQveDI1L2FmX3gyNS5jXG5pbmRleCA4YWFlOTI3M2I3YzE0NC4uMDMzZTdkMDU5ZjU4YzYgMTAwNjQ0XG4tLS0gYS9uZXQveDI1L2FmX3gyNS5jXG4rKysgYi9uZXQveDI1L2FmX3gyNS5jXG5AQCAtMzYzLDYgKzM2Myw3IEBAIHN0YXRpYyB2b2lkIHgyNV9kZXN0cm95X3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuIFx0c3RydWN0IHNvY2sgKnNrID0gdGltZXJfY29udGFpbmVyX29mKHNrLCB0LCBza190aW1lcik7XG4gXG4gXHR4MjVfZGVzdHJveV9zb2NrZXRfZnJvbV90aW1lcihzayk7XG4rXHRzb2NrX3B1dChzayk7XG4gfVxuIFxuIC8qXG5AQCAtMzk4LDkgKzM5OSw4IEBAIHN0YXRpYyB2b2lkIF9feDI1X2Rlc3Ryb3lfc29ja2V0KHN0cnVjdCBzb2NrICpzaylcbiBcbiBcdGlmIChza19oYXNfYWxsb2NhdGlvbnMoc2spKSB7XG4gXHRcdC8qIERlZmVyOiBvdXRzdGFuZGluZyBidWZmZXJzICovXG4tXHRcdHNrLVx1MDAzZXNrX3RpbWVyLmV4cGlyZXMgID0gamlmZmllcyArIDEwICogSFo7XG4gXHRcdHNrLVx1MDAzZXNrX3RpbWVyLmZ1bmN0aW9uID0geDI1X2Rlc3Ryb3lfdGltZXI7XG4tXHRcdGFkZF90aW1lcihcdTAwMjZzay1cdTAwM2Vza190aW1lcik7XG4rXHRcdHNrX3Jlc2V0X3RpbWVyKHNrLCBcdTAwMjZzay1cdTAwM2Vza190aW1lciwgamlmZmllcyArIDEwICogSFopO1xuIFx0fSBlbHNlIHtcbiBcdFx0LyogZHJvcCBsYXN0IHJlZmVyZW5jZSBzbyBzb2NrX3B1dCB3aWxsIGZyZWUgKi9cbiBcdFx0X19zb2NrX3B1dChzayk7XG5kaWZmIC0tZ2l0IGEvbmV0L3gyNS94MjVfdGltZXIuYyBiL25ldC94MjUveDI1X3RpbWVyLmNcbmluZGV4IDJlYzYzYTFmNGM2ZDQyLi43ODk2Y2Q0M2YxY2MxZSAxMDA2NDRcbi0tLSBhL25ldC94MjUveDI1X3RpbWVyLmNcbisrKyBiL25ldC94MjUveDI1X3RpbWVyLmNcbkBAIC0zNiw0NSArMzYsNDUgQEAgdm9pZCB4MjVfaW5pdF90aW1lcnMoc3RydWN0IHNvY2sgKnNrKVxuIFxuIHZvaWQgeDI1X3N0YXJ0X2hlYXJ0YmVhdChzdHJ1Y3Qgc29jayAqc2spXG4ge1xuLVx0bW9kX3RpbWVyKFx1MDAyNnNrLVx1MDAzZXNrX3RpbWVyLCBqaWZmaWVzICsgNSAqIEhaKTtcbitcdHNrX3Jlc2V0X3RpbWVyKHNrLCBcdTAwMjZzay1cdTAwM2Vza190aW1lciwgamlmZmllcyArIDUgKiBIWik7XG4gfVxuIFxuIHZvaWQgeDI1X3N0b3BfaGVhcnRiZWF0KHN0cnVjdCBzb2NrICpzaylcbiB7XG4tXHR0aW1lcl9kZWxldGUoXHUwMDI2c2stXHUwMDNlc2tfdGltZXIpO1xuK1x0c2tfc3RvcF90aW1lcihzaywgXHUwMDI2c2stXHUwMDNlc2tfdGltZXIpO1xuIH1cbiBcbiB2b2lkIHgyNV9zdGFydF90MnRpbWVyKHN0cnVjdCBzb2NrICpzaylcbiB7XG4gXHRzdHJ1Y3QgeDI1X3NvY2sgKngyNSA9IHgyNV9zayhzayk7XG4gXG4tXHRtb2RfdGltZXIoXHUwMDI2eDI1LVx1MDAzZXRpbWVyLCBqaWZmaWVzICsgeDI1LVx1MDAzZXQyKTtcbitcdHNrX3Jlc2V0X3RpbWVyKHNrLCBcdTAwMjZ4MjUtXHUwMDNldGltZXIsIGppZmZpZXMgKyB4MjUtXHUwMDNldDIpO1xuIH1cbiBcbiB2b2lkIHgyNV9zdGFydF90MjF0aW1lcihzdHJ1Y3Qgc29jayAqc2spXG4ge1xuIFx0c3RydWN0IHgyNV9zb2NrICp4MjUgPSB4MjVfc2soc2spO1xuIFxuLVx0bW9kX3RpbWVyKFx1MDAyNngyNS1cdTAwM2V0aW1lciwgamlmZmllcyArIHgyNS1cdTAwM2V0MjEpO1xuK1x0c2tfcmVzZXRfdGltZXIoc2ssIFx1MDAyNngyNS1cdTAwM2V0aW1lciwgamlmZmllcyArIHgyNS1cdTAwM2V0MjEpO1xuIH1cbiBcbiB2b2lkIHgyNV9zdGFydF90MjJ0aW1lcihzdHJ1Y3Qgc29jayAqc2spXG4ge1xuIFx0c3RydWN0IHgyNV9zb2NrICp4MjUgPSB4MjVfc2soc2spO1xuIFxuLVx0bW9kX3RpbWVyKFx1MDAyNngyNS1cdTAwM2V0aW1lciwgamlmZmllcyArIHgyNS1cdTAwM2V0MjIpO1xuK1x0c2tfcmVzZXRfdGltZXIoc2ssIFx1MDAyNngyNS1cdTAwM2V0aW1lciwgamlmZmllcyArIHgyNS1cdTAwM2V0MjIpO1xuIH1cbiBcbiB2b2lkIHgyNV9zdGFydF90MjN0aW1lcihzdHJ1Y3Qgc29jayAqc2spXG4ge1xuIFx0c3RydWN0IHgyNV9zb2NrICp4MjUgPSB4MjVfc2soc2spO1xuIFxuLVx0bW9kX3RpbWVyKFx1MDAyNngyNS1cdTAwM2V0aW1lciwgamlmZmllcyArIHgyNS1cdTAwM2V0MjMpO1xuK1x0c2tfcmVzZXRfdGltZXIoc2ssIFx1MDAyNngyNS1cdTAwM2V0aW1lciwgamlmZmllcyArIHgyNS1cdTAwM2V0MjMpO1xuIH1cbiBcbiB2b2lkIHgyNV9zdG9wX3RpbWVyKHN0cnVjdCBzb2NrICpzaylcbiB7XG4tXHR0aW1lcl9kZWxldGUoXHUwMDI2eDI1X3NrKHNrKS1cdTAwM2V0aW1lcik7XG4rXHRza19zdG9wX3RpbWVyKHNrLCBcdTAwMjZ4MjVfc2soc2spLVx1MDAzZXRpbWVyKTtcbiB9XG4gXG4gdW5zaWduZWQgbG9uZyB4MjVfZGlzcGxheV90aW1lcihzdHJ1Y3Qgc29jayAqc2spXG5AQCAtMTA4LDcgKzEwOCw3IEBAIHN0YXRpYyB2b2lkIHgyNV9oZWFydGJlYXRfZXhwaXJ5KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuIFx0XHRcdCAgICAgc29ja19mbGFnKHNrLCBTT0NLX0RFQUQpKSkge1xuIFx0XHRcdFx0YmhfdW5sb2NrX3NvY2soc2spO1xuIFx0XHRcdFx0eDI1X2Rlc3Ryb3lfc29ja2V0X2Zyb21fdGltZXIoc2spO1xuLVx0XHRcdFx0cmV0dXJuO1xuK1x0XHRcdFx0Z290byBvdXQ7XG4gXHRcdFx0fVxuIFx0XHRcdGJyZWFrO1xuIFxuQEAgLTEyMCw4ICsxMjAsMTQgQEAgc3RhdGljIHZvaWQgeDI1X2hlYXJ0YmVhdF9leHBpcnkoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4gXHRcdFx0YnJlYWs7XG4gXHR9XG4gcmVzdGFydF9oZWFydGJlYXQ6XG4tXHR4MjVfc3RhcnRfaGVhcnRiZWF0KHNrKTtcbitcdC8qIERvIG5vdCByZWFybSBvbmNlIF9feDI1X2Rlc3Ryb3lfc29ja2V0KCkgaGFzIHVubGlua2VkIHRoZSBzb2NrZXQ6XG4rXHQgKiBpdCBpcyBwYXN0IGl0cyBjYW5jZWwgcG9pbnQgYW5kIG93bnMgdGhlIHRlYXJkb3duIGZyb20gdGhlcmUgb24uXG4rXHQgKi9cbitcdGlmIChza19oYXNoZWQoc2spKVxuK1x0XHR4MjVfc3RhcnRfaGVhcnRiZWF0KHNrKTtcbiBcdGJoX3VubG9ja19zb2NrKHNrKTtcbitvdXQ6XG4rXHRzb2NrX3B1dChzayk7XG4gfVxuIFxuIC8qXG5AQCAtMTY2LDQgKzE3Miw1IEBAIHN0YXRpYyB2b2lkIHgyNV90aW1lcl9leHBpcnkoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4gXHR9IGVsc2VcbiBcdFx0eDI1X2RvX3RpbWVyX2V4cGlyeShzayk7XG4gXHRiaF91bmxvY2tfc29jayhzayk7XG4rXHRzb2NrX3B1dChzayk7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDE6MjcuNDA4NTYxMjNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTczMDI0NTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlguMjUgVGltZXIgTWFuYWdlbWVudDogQSBDcml0aWNhbCBSZXZpZXcqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHplcm9pbmcgaW4gb24gdGhlIFguMjUgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24g4oCTIHNwZWNpZmljYWxseSwgYGFmX3gyNS5jYCBhbmQgYHgyNV90aW1lci5jYC4gSW50ZXJlc3RpbmcuIFRoZSBjb3JlIG9mIHRoaXMgaXMgYWJvdXQgdGhlIHRpbWVyIGhhbmRsaW5nLCBhbmQgaXQgc291bmRzIGxpa2UgYSBzaWduaWZpY2FudCBpbXByb3ZlbWVudCBpbiBzb2NrZXQgbWFuYWdlbWVudCBpcyB1bmRlcndheS4gSXQncyBzaGlmdGluZyBmcm9tIHRoZSBvbGRlciBgbW9kX3RpbWVyYCBhbmQgYHRpbWVyX2RlbGV0ZWAgbWV0aG9kcyB0byBgc2tfcmVzZXRfdGltZXJgIGFuZCBgc2tfc3RvcF90aW1lcmAuIFRoYXQgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgYSBtb3ZlIHRvd2FyZHMgYSBtb3JlIHJvYnVzdCBhbmQgcG9zc2libHkgbW9yZSBlZmZpY2llbnQgYXBwcm9hY2guIEFuZCB0aGUgYWRkaXRpb24gb2YgYHNvY2tfcHV0KHNrKWAgd2l0aGluIHRoZSB0aW1lciBjYWxsYmFja3M/IFRoYXQncyB0aGUgcmVhbCBtZWF0IG9mIGl0IOKAkyBhIGZvY3VzZWQgYXR0ZW1wdCB0byBoYW5kbGUgc29ja2V0IHJlZmVyZW5jZXMgY29ycmVjdGx5LiBUaGF0J3MgYSBnb29kIHNpZ247IGl0IHBvaW50cyBkaXJlY3RseSB0b3dhcmRzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eSBvciBhIG1lbW9yeSBsZWFrIHdpdGhpbiB0aG9zZSBYLjI1IHNvY2tldCB0aW1lcnMuIEdvdHRhIGJlIGNhcmVmdWwgd2l0aCB0aG9zZSB0aW1lcnMgYW5kIHNvY2tldCByZWZlcmVuY2VzLi4uIHRoZXkncmUgZWFzeSB0byBnZXQgd3JvbmcgYW5kIGNhdXNlIG1ham9yIGhlYWRhY2hlcy4gSSdtIGdvaW5nIHRvIHdhbnQgdG8gdmVyaWZ5IHRoYXQuXG5cbk15IG5leHQgc3RlcCBpcyB0byB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgS2NvbmZpZyBmaWxlIGZvciBYLjI1IHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nJ3Mgc2V0IHVwIGNvcnJlY3RseS4gR290dGEgbWFrZSBzdXJlIGl0J3MgZW5hYmxlZCBhbmQgbm90IGFjY2lkZW50YWxseSBkaXNhYmxlZC4gVGhlbiwgSSB3aWxsIGRlbHZlIGRlZXBlci4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCB0byBzZWUgKmhvdyogdGhlIHNvY2tldCByZWZlcmVuY2VzIHdlcmUgYmVpbmcgbWlzaGFuZGxlZCBiZWZvcmUgYW5kIGV4YWN0bHkgKmhvdyogdGhlc2UgY2hhbmdlcyByZXNvbHZlIHRoZSBpc3N1ZS4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBzaG91bGQgYnJpbmcgc29tZSBzdGFiaWxpdHkgdG8gdGhlIFguMjUgaW1wbGVtZW50YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyODcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzo0MTozMS45ODE1ODg0MzZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM3NzIxOTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBYMjVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3gyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3gyNS9LY29uZmlnLTUtXFxubmV0L3gyNS9LY29uZmlnOjY6Y29uZmlnIFgyNVxcbm5ldC94MjUvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJDQ0lUVCBYLjI1IFBhY2tldCBMYXllclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDE6MzIuMjE5MzE1MjQzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ0NzcwMDcwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBIZXJlJ3MgaG93IEknZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIERlcGVuZGVuY2llczogWDI1KipcblxuQWxyaWdodCwgdGhlIGluaXRpYWwgcHJvbXB0IGlzIHN0cmFpZ2h0Zm9yd2FyZC4gV2UncmUgZGVhbGluZyB3aXRoIFwiZGVwZW5kZW5jaWVzXCIgYW5kIFwiWDI1LFwiIHdoaWNoIGxpa2VseSByZWxhdGVzIHRvIGEgc3BlY2lmaWMgc3lzdGVtLCBjb21wb25lbnQsIG9yIGNvZGViYXNlLCBnaXZlbiB0aGUgc3BlY2lhbGl6ZWQgbmF0dXJlIG9mIHRoZSB0ZXJtaW5vbG9neS4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRlbHZlIGludG8gdGhlIGFyY2hpdGVjdHVyZSBhbmQgaWRlbnRpZnkgdGhlIGNyaXRpY2FsIHJlbGF0aW9uc2hpcHMgYXQgcGxheS4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBYMjUgKmlzKiB3aXRoaW4gdGhpcyBjb250ZXh0LiBJcyBpdCBhIGxpYnJhcnk/IEEgc2VydmljZT8gQSBoYXJkd2FyZSBjb21wb25lbnQ/IEtub3dpbmcgaXRzIHJvbGUgd2lsbCBoZWF2aWx5IGluZmx1ZW5jZSBob3cgSSBhcHByb2FjaCBkZXBlbmRlbmN5IGFuYWx5c2lzLlxuXG5NeSB0aG91Z2h0IHByb2Nlc3MgcXVpY2tseSBicmFuY2hlcyBpbnRvIHNldmVyYWwga2V5IGFyZWFzOlxuXG4qICAgKipJZGVudGlmeWluZyB0aGUgc2NvcGU6KiogV2hhdCBjb25zdGl0dXRlcyBhIGRlcGVuZGVuY3kgaW4gdGhpcyBzY2VuYXJpbz8gSXMgaXQgYSBjb2RlLWxldmVsIGRlcGVuZGVuY3kgKGltcG9ydHMsIHVzZXMsIGV0Yy4pLCBhIHJ1bnRpbWUgZGVwZW5kZW5jeSAobGlicmFyaWVzLCBzZXJ2aWNlcyksIGEgaGFyZHdhcmUgZGVwZW5kZW5jeSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSB0eXBlIG9mIGRlcGVuZGVuY3kgaW5mbHVlbmNlcyB0aGUgdG9vbHMgYW5kIG1ldGhvZG9sb2dpZXMgSSdkIGVtcGxveS5cbiogICAqKkNob29zaW5nIHRoZSByaWdodCB0b29sc2V0OioqIERvIEkgcmVhY2ggZm9yIGEgc3RhdGljIGFuYWx5c2lzIHRvb2wgZm9yIGNvZGUgZGVwZW5kZW5jaWVzPyBQZXJoYXBzIGEgbW9uaXRvcmluZyBzeXN0ZW0gZm9yIHJ1bnRpbWUgaW50ZXJhY3Rpb25zPyBPciBtYXliZSBJIGhhdmUgdG8gc3RhcnQgbG9va2luZyBhdCBkb2N1bWVudGF0aW9uPyBLbm93aW5nIHRoZSB0eXBlIG9mIGRlcGVuZGVuY3kgd2lsbCBkZWNpZGUgdGhpcy5cbiogICAqKkRvY3VtZW50aW5nIHRoZSBmaW5kaW5nczoqKiBXaGF0IGFyZSB0aGUgZXhwZWN0ZWQgb3V0cHV0cz8gVGhpcyBoZWxwcyBkZWNpZGUgdGhlIG1ldGhvZCBmb3IgZG9jdW1lbnRhdGlvbiBvZiB0aGUgZGVwZW5kZW5jaWVzLlxuKiAgICoqQ29uc2lkZXJpbmcgdGhlIGltcGxpY2F0aW9uczoqKiBXaGF0IGltcGFjdCBkbyB0aGVzZSBkZXBlbmRlbmNpZXMgaGF2ZT8gVGhlaXIgc2V2ZXJpdHk/IEFyZSB0aGVyZSBwb3RlbnRpYWwgcmlza3Mgb3IgdnVsbmVyYWJpbGl0aWVzIGFzc29jaWF0ZWQgd2l0aCB0aGVzZSBkZXBlbmRlbmNpZXM/IFRoaXMgYXNzZXNzbWVudCB3aWxsIGluZm9ybSBkZWNpc2lvbnMgYWJvdXQgbWl0aWdhdGlvbiBzdHJhdGVnaWVzICh1cGRhdGVzLCBwYXRjaGluZywgaXNvbGF0aW9uLCBldGMuKS5cblxuRXNzZW50aWFsbHksIEknbSBmb3JtaW5nIGEgcGxhbiBmb3IgYSBjb21wcmVoZW5zaXZlIGludmVzdGlnYXRpb24sIGEgbWVudGFsIGNoZWNrbGlzdCBvZiBxdWVzdGlvbnMgdG8gYW5zd2VyIGFuZCBhY3Rpb25zIHRvIHRha2UgdG8gZ2FpbiBhIGZ1bGwgdW5kZXJzdGFuZGluZyBvZiBYMjUncyBkZXBlbmRlbmNpZXMuIE15IGV4cGVydGlzZSBhbGxvd3MgbWUgdG8gcXVpY2tseSBlc3RhYmxpc2ggdGhpcyBmcmFtZXdvcmssIGFudGljaXBhdGluZyB0aGUgY2hhbGxlbmdlcyBhbmQgb3Bwb3J0dW5pdGllcyBpbmhlcmVudCBpbiB0aGUgdGFzay5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg0MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjQxOjM2LjY2NzAxODE0NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2OTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC94MjUvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBDQ0lUVCBYLjI1IFBhY2tldCBMYXllclxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgWDI1XFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiQ0NJVFQgWC4yNSBQYWNrZXQgTGF5ZXJcXFwiXFxuICAgODpcXHRcXHRoZWxwXFxuICAgOTpcXHRcXHQgIFguMjUgaXMgYSBzZXQgb2Ygc3RhbmRhcmRpemVkIG5ldHdvcmsgcHJvdG9jb2xzLCBzaW1pbGFyIGluIHNjb3BlIHRvXFxuICAxMDpcXHRcXHQgIGZyYW1lIHJlbGF5OyB0aGUgb25lIHBoeXNpY2FsIGxpbmUgZnJvbSB5b3VyIGJveCB0byB0aGUgWC4yNSBuZXR3b3JrXFxuICAxMTpcXHRcXHQgIGVudHJ5IHBvaW50IGNhbiBjYXJyeSBzZXZlcmFsIGxvZ2ljYWwgcG9pbnQtdG8tcG9pbnQgY29ubmVjdGlvbnNcXG4gIDEyOlxcdFxcdCAgKGNhbGxlZCBcXFwidmlydHVhbCBjaXJjdWl0c1xcXCIpIHRvIG90aGVyIGNvbXB1dGVycyBjb25uZWN0ZWQgdG8gdGhlIFguMjVcXG4gIDEzOlxcdFxcdCAgbmV0d29yay4gR292ZXJubWVudHMsIGJhbmtzLCBhbmQgb3RoZXIgb3JnYW5pemF0aW9ucyB0ZW5kIHRvIHVzZSBpdFxcbiAgMTQ6XFx0XFx0ICB0byBjb25uZWN0IHRvIGVhY2ggb3RoZXIgb3IgdG8gZm9ybSBXaWRlIEFyZWEgTmV0d29ya3MgKFdBTnMpLiBNYW55XFxuICAxNTpcXHRcXHQgIGNvdW50cmllcyBoYXZlIHB1YmxpYyBYLjI1IG5ldHdvcmtzLiBYLjI1IGNvbnNpc3RzIG9mIHR3b1xcbiAgMTY6XFx0XFx0ICBwcm90b2NvbHM6IHRoZSBoaWdoZXIgbGV2ZWwgUGFja2V0IExheWVyIFByb3RvY29sIChQTFApIChzYXkgWSBoZXJlXFxuICAxNzpcXHRcXHQgIGlmIHlvdSB3YW50IHRoYXQpIGFuZCB0aGUgbG93ZXIgbGV2ZWwgZGF0YSBsaW5rIGxheWVyIHByb3RvY29sIExBUEJcXG4gIDE4OlxcdFxcdCAgKHNheSBZIHRvIFxcXCJMQVBCIERhdGEgTGluayBEcml2ZXJcXFwiIGJlbG93IGlmIHlvdSB3YW50IHRoYXQpLlxcbiAgMTk6XFx0XFxuICAyMDpcXHRcXHQgIEluZm9ybWF0aW9uIGFib3V0IFguMjUgZm9yIExpbnV4IGlzIGNvbnRhaW5lZCBpbiB0aGUgZmlsZXNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDE6MzYuNjY3MDc3MDc2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTExNTQ5OTE2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFguMjUgQ29uZmlndXJhdGlvbiBDaGFuZ2VzKipcblxuT2theSwgc28gYENPTkZJR19YMjVgIGlzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUsIHRoYXQncyBteSBzdGFydGluZyBwb2ludC4gTm93LCBsZXQncyBkcmlsbCBkb3duIGFuZCBzZWUgd2hhdCBzcGVjaWZpY2FsbHkgaGFzIGJlZW4gY2hhbmdlZC4gSXQgbG9va3MgbGlrZSB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHJldm9sdmUgaGVhdmlseSBhcm91bmQgdGltZXJzOiBgeDI1X2Rlc3Ryb3lfdGltZXJgLCBgX194MjVfZGVzdHJveV9zb2NrZXRgLCBgeDI1X3N0YXJ0X2hlYXJ0YmVhdGAsIGB4MjVfc3RvcF9oZWFydGJlYXRgLCBhbmQgYWxsIHRoZSBgeDI1X3N0YXJ0X3QqdGltZXJgIGFuZCBgeDI1X3N0b3BfdGltZXJgIHZhcmlhbnRzLiBUaGUgZXhwaXJ5IGZ1bmN0aW9ucywgbGlrZSBgeDI1X2hlYXJ0YmVhdF9leHBpcnlgIGFuZCBgeDI1X3RpbWVyX2V4cGlyeWAsIGFyZSBhbHNvIHRoZXJlLlxuXG5HaXZlbiB0aGUgY29uY2VudHJhdGlvbiBvbiB0aGVzZSB0aW1lcnMsIG15IGltbWVkaWF0ZSBmb2N1cyB3aWxsIGJlIG9uIHRoZSBlbnRyeSBwb2ludHMgaW50byB0aGUgWC4yNSBzb2NrZXQgZnVuY3Rpb25hbGl0eSB0aGF0IGluaXRpYXRlIG9yIGludGVyYWN0IHdpdGggdGhlc2UgdGltZXJzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2F1c2FsIHJlbGF0aW9uc2hpcHMgaGVyZS4gRm9yIGluc3RhbmNlLCBgeDI1X3N0YXJ0X2hlYXJ0YmVhdGAgbG9va3MgaW1wb3J0YW50LCBhbmQgSSBzZWUgaXQncyBjYWxsZWQgZnJvbSBgeDI1X2NyZWF0ZWAsIHdoaWNoIG1ha2VzIHNlbnNlIGJlY2F1c2Ugd2Ugc3RhcnQgbW9uaXRvcmluZyBjb25uZWN0aW9ucyByaWdodCBhd2F5LCBhbmQgYWxzbywgaW1wb3J0YW50bHksIGZyb20gYHgyNV9jb25uZWN0YC4gU28sIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUsIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludHMgZm9yIFguMjUgc29ja2V0IGNyZWF0aW9uIGFuZCBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQuIEkgbmVlZCB0byBzZWUgdGhlIGNvbXBsZXRlIGxpZmVjeWNsZS4gVGhhdCdzIHdoZXJlIEkgc2hvdWxkIGNvbmNlbnRyYXRlIG15IGVmZm9ydHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MjIsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzo0MTo0MS43ODI1Nzg1NzFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4NzU0NTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIngyNV9jcmVhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3gyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3gyNS9hZl94MjUuYz01MDQ9c3RhdGljIHN0cnVjdCBzb2NrICp4MjVfYWxsb2Nfc29ja2V0KHN0cnVjdCBuZXQgKm5ldCwgaW50IGtlcm4pXFxuLS1cXG5uZXQveDI1L2FmX3gyNS5jLTUyMi1cXG5uZXQveDI1L2FmX3gyNS5jOjUyMzpzdGF0aWMgaW50IHgyNV9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgcHJvdG9jb2wsXFxubmV0L3gyNS9hZl94MjUuYy01MjQtXFx0XFx0ICAgICAgaW50IGtlcm4pXFxuLS1cXG5uZXQveDI1L2FmX3gyNS5jPTE2MTk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfcHJvdG9fZmFtaWx5IHgyNV9mYW1pbHlfb3BzID0ge1xcbm5ldC94MjUvYWZfeDI1LmMtMTYyMC1cXHQuZmFtaWx5ID1cXHRBRl9YMjUsXFxubmV0L3gyNS9hZl94MjUuYzoxNjIxOlxcdC5jcmVhdGUgPVxcdHgyNV9jcmVhdGUsXFxubmV0L3gyNS9hZl94MjUuYy0xNjIyLVxcdC5vd25lclxcdD1cXHRUSElTX01PRFVMRSxcXG4tLVxcbm5ldC94MjUveDI1X2ZhY2lsaXRpZXMuYz00MT1pbnQgeDI1X3BhcnNlX2ZhY2lsaXRpZXMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHgyNV9mYWNpbGl0aWVzICpmYWNpbGl0aWVzLFxcbi0tXFxubmV0L3gyNS94MjVfZmFjaWxpdGllcy5jLTE4Ny0gKi9cXG5uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmM6MTg4OmludCB4MjVfY3JlYXRlX2ZhY2lsaXRpZXModW5zaWduZWQgY2hhciAqYnVmZmVyLFxcbm5ldC94MjUveDI1X2ZhY2lsaXRpZXMuYy0xODktXFx0XFx0c3RydWN0IHgyNV9mYWNpbGl0aWVzICpmYWNpbGl0aWVzLFxcbi0tXFxubmV0L3gyNS94MjVfc3Vici5jPTExMD12b2lkIHgyNV93cml0ZV9pbnRlcm5hbChzdHJ1Y3Qgc29jayAqc2ssIGludCBmcmFtZXR5cGUpXFxuLS1cXG5uZXQveDI1L3gyNV9zdWJyLmMtMTg3LVxcdFxcdFxcdHNrYl9wdXRfZGF0YShza2IsIGFkZHJlc3NlcywgbGVuKTtcXG5uZXQveDI1L3gyNV9zdWJyLmM6MTg4OlxcdFxcdFxcdGxlbiAgICAgPSB4MjVfY3JlYXRlX2ZhY2lsaXRpZXMoZmFjaWxpdGllcyxcXG5uZXQveDI1L3gyNV9zdWJyLmMtMTg5LVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZ4MjUtXFx1MDAzZWZhY2lsaXRpZXMsXFxuLS1cXG5uZXQveDI1L3gyNV9zdWJyLmMtMjAxLVxcdFxcdFxcdCpkcHRyKysgPSAweDAwO1xcdFxcdC8qIEFkZHJlc3MgbGVuZ3RocyAqL1xcbm5ldC94MjUveDI1X3N1YnIuYzoyMDI6XFx0XFx0XFx0bGVuICAgICA9IHgyNV9jcmVhdGVfZmFjaWxpdGllcyhmYWNpbGl0aWVzLFxcbm5ldC94MjUveDI1X3N1YnIuYy0yMDMtXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNngyNS1cXHUwMDNlZmFjaWxpdGllcyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDE6NDEuOTUxMzM4MzEyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg5Mzc3NTA5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRnV6emluZyBYLjI1IC0gVGFyZ2V0dGluZyB0aGUgRW50cnkgUG9pbnRzKipcblxuQWxyaWdodCwgaWYgSSdtIGdvaW5nIHRvIGZ1enogdGhpcyBYLjI1IGltcGxlbWVudGF0aW9uLCBJIG5lZWQgdG8gc3RhcnQgdGhpbmtpbmcgYWJvdXQgdGhlIGtleSBhdHRhY2sgc3VyZmFjZXMuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBvYnZpb3VzIHJvdXRlIGlzIHRocm91Z2ggdGhlIGV4cG9zZWQgc29ja2V0IG9wZXJhdGlvbnMuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIEknbGwgbmVlZCB0byBmb2N1cyBvbjogYHgyNV9jcmVhdGVgLCB3aGljaCBzZXRzIHVwIHRoZSBpbml0aWFsIHNvY2tldC4gVGhlbiwgYHgyNV9jb25uZWN0YCwgYHgyNV9iaW5kYCwgYW5kIGB4MjVfbGlzdGVuYCwgdGhhdCBoYW5kbGUgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50LCBhbmQgdGhlIG9wcG9zaXRlIHdpdGggYHgyNV9hY2NlcHRgLCBmb3IgdGhlIGxpc3RlbmluZyBzaWRlLiBUaGUgcmVhbCBtZWF0IG9mIGl0LCB0aG91Z2gsIGhhcyB0byBiZSBpbiB0aGUgZGF0YSBleGNoYW5nZS4gSSdtIGltYWdpbmluZyBJJ2xsIG5lZWQgdG8gcmVhbGx5IGhhbW1lciBgeDI1X3NlbmRtc2dgIGFuZCBgeDI1X3JlY3Ztc2dgIHdpdGggbWFsZm9ybWVkIHBhY2tldHMsIGFuZCB0aGVuIEkgY2FuIHJlbGVhc2UgcmVzb3VyY2VzIHdpdGggYHgyNV9yZWxlYXNlYC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBlbmVyZ2llcyBhbmQgd2hlcmUgSSdtIGdvaW5nIHRvIGZpbmQgdGhlIHJlYWwgYnVncywgSSBzdXNwZWN0LiBUaGUgb3RoZXIgZW50cmllcyBwcm92aWRlIHRoZSBzZXR1cCBhbmQgdGVhcmRvd24sIGJ1dCB0aGUgbWVhdCBpcyBpbiBzZW5kaW5nIGFuZCByZWNlaXZpbmcgZGF0YSBvbiB0aGlzIHByb3RvY29sLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODE3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDE6NDUuODQ1MTE1Mjg1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzE0NTI2MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieDI1X2Nvbm5lY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3gyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3gyNS9hZl94MjUuYz03MDg9c3RhdGljIGludCB4MjVfd2FpdF9mb3JfY29ubmVjdGlvbl9lc3RhYmxpc2htZW50KHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC94MjUvYWZfeDI1LmMtNzQxLVxcbm5ldC94MjUvYWZfeDI1LmM6NzQyOnN0YXRpYyBpbnQgeDI1X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKnVhZGRyLFxcbm5ldC94MjUvYWZfeDI1LmMtNzQzLVxcdFxcdCAgICAgICBpbnQgYWRkcl9sZW4sIGludCBmbGFncylcXG4tLVxcbm5ldC94MjUvYWZfeDI1LmM9MTczND1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyB4MjVfcHJvdG9fb3BzID0ge1xcbi0tXFxubmV0L3gyNS9hZl94MjUuYy0xNzM4LVxcdC5iaW5kID1cXHRcXHR4MjVfYmluZCxcXG5uZXQveDI1L2FmX3gyNS5jOjE3Mzk6XFx0LmNvbm5lY3QgPVxcdHgyNV9jb25uZWN0LFxcbm5ldC94MjUvYWZfeDI1LmMtMTc0MC1cXHQuc29ja2V0cGFpciA9XFx0c29ja19ub19zb2NrZXRwYWlyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzo0MTo0Ni4wNzY1NzcxMzNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzExNjMxNDgxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoZSByZWxldmFudCBmaWVsZDpcblxuKipBc3Nlc3NpbmcgdGhlIFN0YXR1cyBvZiBgeDI1X3JlbGVhc2VgKipcblxuQWxyaWdodCwgdGhlIGZpcnN0IHRoaW5nIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMgdG8gY2hlY2sgYHgyNV9yZWxlYXNlYC4gVGhhdOKAmXMgbXkgcHJpbWFyeSBwb2ludCBvZiBmb2N1cy4gSXQncyB0aGUga2V5IHZhcmlhYmxlIG9yIG1vZHVsZSBpbiBxdWVzdGlvbi4gSSBuZWVkIHRvIGtub3cgdGhlIGN1cnJlbnQgc3RhdGUuIElzIGl0IHN0YWJsZSwgc3RpbGwgaW4gZGV2ZWxvcG1lbnQsIHJlYWR5IGZvciBwcm9kdWN0aW9uLCBvciBleHBlcmllbmNpbmcgaXNzdWVzPyBLbm93aW5nIHRoZSBzdGF0dXMgb2YgYHgyNV9yZWxlYXNlYCBpcyB0aGUgbW9zdCBsb2dpY2FsIG5leHQgc3RlcC4gSSBuZWVkIGEgcXVpY2sgb3ZlcnZpZXcgb2YgaXRzIGNvbmRpdGlvbiBiZWZvcmUgbW92aW5nIGZvcndhcmQgd2l0aCBhbnl0aGluZyBlbHNlIHJlbGF0ZWQgdG8gdGhlIHByb2plY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NTgsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzo0MTo0OS4xOTI4OTQ3NjlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMzU1MDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIngyNV9yZWxlYXNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94MjUvYWZfeDI1LmM9NTgzPXN0YXRpYyBzdHJ1Y3Qgc29jayAqeDI1X21ha2VfbmV3KHN0cnVjdCBzb2NrICpvc2spXFxuLS1cXG5uZXQveDI1L2FmX3gyNS5jLTYyMC1cXG5uZXQveDI1L2FmX3gyNS5jOjYyMTpzdGF0aWMgaW50IHgyNV9yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXFxubmV0L3gyNS9hZl94MjUuYy02MjIte1xcbi0tXFxubmV0L3gyNS9hZl94MjUuYz0xNzM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHgyNV9wcm90b19vcHMgPSB7XFxuLS1cXG5uZXQveDI1L2FmX3gyNS5jLTE3MzYtXFx0Lm93bmVyID1cXHRUSElTX01PRFVMRSxcXG5uZXQveDI1L2FmX3gyNS5jOjE3Mzc6XFx0LnJlbGVhc2UgPVxcdHgyNV9yZWxlYXNlLFxcbm5ldC94MjUvYWZfeDI1LmMtMTczOC1cXHQuYmluZCA9XFx0XFx0eDI1X2JpbmQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjQxOjQ5LjI1MzI1NTE3NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTM2OTkzNjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgWC4yNSBUaW1lciBIYW5kbGluZyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3BlY2lmaWNhbGx5IGFkZHJlc3NpbmcgdGltZXIgYmVoYXZpb3Igd2l0aGluIHRoZSBYLjI1IGNvZGUuIFRoYXQgbWVhbnMgdGhlIGtleSBmdW5jdGlvbnMgdG8gZXhhbWluZSBhcmUgdGhvc2UgdGhhdCBpbnRlcmFjdCB3aXRoIHRpbWVycywgbGlrZWx5IGR1cmluZyBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQsIHRlYXJkb3duLCBhbmQgZGF0YSB0cmFuc2Zlci4gQmFzZWQgb24gdGhhdCwgSSdtIHRoaW5raW5nIHRoZSBwcmltYXJ5IHN5bWJvbHMgdG8gZm9jdXMgb24gYXJlIGB4MjVfY29ubmVjdGAsIGB4MjVfcmVsZWFzZWAsIGB4MjVfc2VuZG1zZ2AsIGFuZCBgeDI1X3JlY3Ztc2dgLiBUaGF0IGxvb2tzIGdvb2QuXG5cbk5vdywgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCwgbGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIGBDT05GSUdfWDI1YCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBzdWZmaWNpZW50IGZvciB0aGlzIHBhdGNoIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gSnVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBlbnN1cmUgdGhlIG5lY2Vzc2FyeSBjb2RlIHBhdGhzIGFyZSBlbmFibGVkLiBZZXAsIHNlZW1zIGxpa2UgaXQuXG5cbk5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGVzZSB0aW1lci1yZWxhdGVkIGZ1bmN0aW9ucy4gTGV0IG1lIGNoZWNrIHRoZSB2aXNpYmlsaXR5IG9mIHNvbWUgb2YgdGhlIHRpbWVyIGZ1bmN0aW9ucyB0aGVtc2VsdmVzLiBgeDI1X2Rlc3Ryb3lfdGltZXJgIGlzIHN0YXRpYywgZ29vZC4gU28gaXMgYF9feDI1X2Rlc3Ryb3lfc29ja2V0YC4gYHgyNV9zdGFydF9oZWFydGJlYXRgLCBldmVuIHRob3VnaCBpdCdzIG5vdCBzdGF0aWMsIGlzIGFuIGludGVybmFsIGhlbHBlciBzbyBpdCBzaG91bGRuJ3QgbWF0dGVyIHRvbyBtdWNoLiBgeDI1X2hlYXJ0YmVhdF9leHBpcnlgIGFuZCBgeDI1X3RpbWVyX2V4cGlyeWAgYXJlIGJvdGggc3RhdGljLiBTbyB0aGlzIGNvbmZpcm1zIG15IGluaXRpYWwgdGhvdWdodCBhYm91dCB0aGUgc29ja2V0IG9wZXJhdGlvbnMuXG5cblRoZSBtb3JlIEkgbG9vayBhdCB0aGlzLCB0aGUgbW9yZSBJIHJlYWxpemUgbXkgcHJldmlvdXMgbGlzdCBvZiBmb2N1cyBzeW1ib2xzIHNob3VsZCBlbmNvbXBhc3MgYWxsIHNvY2tldCBvcGVyYXRpb25zIHRoYXQgbWlnaHQgdHJpZ2dlciB0aGVzZSB0aW1lcnMuIFNvLCB0byBiZSBjb21wbGV0ZSwgSSBuZWVkIHRvIGluY2x1ZGU6IGB4MjVfY29ubmVjdGAsIGB4MjVfcmVsZWFzZWAsIGB4MjVfYmluZGAsIGB4MjVfbGlzdGVuYCwgYHgyNV9hY2NlcHRgLCBgeDI1X3NlbmRtc2dgLCBhbmQgYHgyNV9yZWN2bXNnYC5cblxuSnVzdCB0byBjb3ZlciBhbGwgYmFzZXMsIGxldCBtZSBjaGVjayB0aGUgdmlzaWJpbGl0eSBvZiBgeDI1X2NyZWF0ZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4OTEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDE6NTUuMTkwMjUxMTA2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjkxODAyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieDI1X2NyZWF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveDI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveDI1L2FmX3gyNS5jPTUwND1zdGF0aWMgc3RydWN0IHNvY2sgKngyNV9hbGxvY19zb2NrZXQoc3RydWN0IG5ldCAqbmV0LCBpbnQga2VybilcXG4tLVxcbm5ldC94MjUvYWZfeDI1LmMtNTIyLVxcbm5ldC94MjUvYWZfeDI1LmM6NTIzOnN0YXRpYyBpbnQgeDI1X2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBwcm90b2NvbCxcXG5uZXQveDI1L2FmX3gyNS5jLTUyNC1cXHRcXHQgICAgICBpbnQga2VybilcXG4tLVxcbm5ldC94MjUvYWZfeDI1LmM9MTYxOT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9wcm90b19mYW1pbHkgeDI1X2ZhbWlseV9vcHMgPSB7XFxubmV0L3gyNS9hZl94MjUuYy0xNjIwLVxcdC5mYW1pbHkgPVxcdEFGX1gyNSxcXG5uZXQveDI1L2FmX3gyNS5jOjE2MjE6XFx0LmNyZWF0ZSA9XFx0eDI1X2NyZWF0ZSxcXG5uZXQveDI1L2FmX3gyNS5jLTE2MjItXFx0Lm93bmVyXFx0PVxcdFRISVNfTU9EVUxFLFxcbi0tXFxubmV0L3gyNS94MjVfZmFjaWxpdGllcy5jPTQxPWludCB4MjVfcGFyc2VfZmFjaWxpdGllcyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeDI1X2ZhY2lsaXRpZXMgKmZhY2lsaXRpZXMsXFxuLS1cXG5uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmMtMTg3LSAqL1xcbm5ldC94MjUveDI1X2ZhY2lsaXRpZXMuYzoxODg6aW50IHgyNV9jcmVhdGVfZmFjaWxpdGllcyh1bnNpZ25lZCBjaGFyICpidWZmZXIsXFxubmV0L3gyNS94MjVfZmFjaWxpdGllcy5jLTE4OS1cXHRcXHRzdHJ1Y3QgeDI1X2ZhY2lsaXRpZXMgKmZhY2lsaXRpZXMsXFxuLS1cXG5uZXQveDI1L3gyNV9zdWJyLmM9MTEwPXZvaWQgeDI1X3dyaXRlX2ludGVybmFsKHN0cnVjdCBzb2NrICpzaywgaW50IGZyYW1ldHlwZSlcXG4tLVxcbm5ldC94MjUveDI1X3N1YnIuYy0xODctXFx0XFx0XFx0c2tiX3B1dF9kYXRhKHNrYiwgYWRkcmVzc2VzLCBsZW4pO1xcbm5ldC94MjUveDI1X3N1YnIuYzoxODg6XFx0XFx0XFx0bGVuICAgICA9IHgyNV9jcmVhdGVfZmFjaWxpdGllcyhmYWNpbGl0aWVzLFxcbm5ldC94MjUveDI1X3N1YnIuYy0xODktXFx0XFx0XFx0XFx0XFx0XFx1MDAyNngyNS1cXHUwMDNlZmFjaWxpdGllcyxcXG4tLVxcbm5ldC94MjUveDI1X3N1YnIuYy0yMDEtXFx0XFx0XFx0KmRwdHIrKyA9IDB4MDA7XFx0XFx0LyogQWRkcmVzcyBsZW5ndGhzICovXFxubmV0L3gyNS94MjVfc3Vici5jOjIwMjpcXHRcXHRcXHRsZW4gICAgID0geDI1X2NyZWF0ZV9mYWNpbGl0aWVzKGZhY2lsaXRpZXMsXFxubmV0L3gyNS94MjVfc3Vici5jLTIwMy1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2eDI1LVxcdTAwM2VmYWNpbGl0aWVzLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzo0MTo1NS4zNTk0MzY0MDZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYzOTM1MzgyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipYLjI1IEZ1bmN0aW9uIENhbGwgQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIFguMjUgY29kZSwgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBhdCBtZSBpcyB0aGF0IHRoZXNlIGNvcmUgZnVuY3Rpb25zLCBgeDI1X2NyZWF0ZWAsIGB4MjVfY29ubmVjdGAsIGB4MjVfcmVsZWFzZWAsIGB4MjVfYmluZGAsIGB4MjVfbGlzdGVuYCwgYHgyNV9hY2NlcHRgLCBgeDI1X3NlbmRtc2dgLCBhbmQgYHgyNV9yZWN2bXNnYCBhcmUgYWxsIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBUaGF0J3MgdW51c3VhbCwgYW5kIGltbWVkaWF0ZWx5IHJhaXNlcyBhIHF1ZXN0aW9uIGluIG15IG1pbmQuXG5cbklmIHRoZXNlIGNyaXRpY2FsIG5ldHdvcmsgZnVuY3Rpb25zIGFyZSBgc3RhdGljYCwgdGhleSdyZSBvbmx5IHZpc2libGUgd2l0aGluIHRoZSBjb21waWxhdGlvbiB1bml0IGluIGBuZXQveDI1L2FmX3gyNS5jYC4gQnV0IHRoYXQgY2FuJ3QgYmUgKmFsbCogdGhlcmUgaXMgdG8gWC4yNSwgY2FuIGl0PyBUaGVyZSAqbXVzdCogYmUgcHVibGljIGVudHJ5IHBvaW50cyBzb21ld2hlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsIGFyZSBzdXBwb3NlZCB0byBpbnRlcmFjdCB3aXRoIHRoZSBYLjI1IHN0YWNrLiBTbywgdGhlIGZvbGxvdy11cCBxdWVzdGlvbiBpczogV2hlcmUgYXJlIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGBuZXQveDI1L2FmX3gyNS5jYD8gV2hhdCBhcmUgdGhlIGludGVyZmFjZSBwb2ludHMgaW50byB0aGUgWC4yNSBsYXllcj8gSSdtIGdvaW5nIHRvIGhhdmUgdG8gZGlnIGRlZXBlciBoZXJlLiBUaGVyZSBoYXMgdG8gYmUgYSBtZWNoYW5pc20gZm9yIG90aGVyIGtlcm5lbCBtb2R1bGVzIHRvIGNhbGwgaW50byB0aGlzIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyNzQsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDE6NTkuOTk4NzkyNTg4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjEyNTM4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeaW50IHgyNV9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3gyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3gyNS9hZl94MjUuYz03Nj1zdHJ1Y3QgY29tcGF0X3gyNV9zdWJzY3JpcF9zdHJ1Y3Qge1xcbi0tXFxubmV0L3gyNS9hZl94MjUuYy04My1cXG5uZXQveDI1L2FmX3gyNS5jOjg0OmludCB4MjVfcGFyc2VfYWRkcmVzc19ibG9jayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC94MjUvYWZfeDI1LmMtODUtXFx0XFx0c3RydWN0IHgyNV9hZGRyZXNzICpjYWxsZWRfYWRkcixcXG4tLVxcbm5ldC94MjUvYWZfeDI1LmMtMTE3LVxcbm5ldC94MjUvYWZfeDI1LmM6MTE4OmludCB4MjVfYWRkcl9udG9hKHVuc2lnbmVkIGNoYXIgKnAsIHN0cnVjdCB4MjVfYWRkcmVzcyAqY2FsbGVkX2FkZHIsXFxubmV0L3gyNS9hZl94MjUuYy0xMTktXFx0XFx0ICBzdHJ1Y3QgeDI1X2FkZHJlc3MgKmNhbGxpbmdfYWRkcilcXG4tLVxcbm5ldC94MjUvYWZfeDI1LmMtMTU0LVxcbm5ldC94MjUvYWZfeDI1LmM6MTU1OmludCB4MjVfYWRkcl9hdG9uKHVuc2lnbmVkIGNoYXIgKnAsIHN0cnVjdCB4MjVfYWRkcmVzcyAqY2FsbGVkX2FkZHIsXFxubmV0L3gyNS9hZl94MjUuYy0xNTYtXFx0XFx0ICBzdHJ1Y3QgeDI1X2FkZHJlc3MgKmNhbGxpbmdfYWRkcilcXG4tLVxcbm5ldC94MjUvYWZfeDI1LmM9OTEyPXN0YXRpYyBpbnQgeDI1X2dldG5hbWUoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1YWRkcixcXG4tLVxcbm5ldC94MjUvYWZfeDI1LmMtOTM1LVxcbm5ldC94MjUvYWZfeDI1LmM6OTM2OmludCB4MjVfcnhfY2FsbF9yZXF1ZXN0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4MjVfbmVpZ2ggKm5iLFxcbm5ldC94MjUvYWZfeDI1LmMtOTM3LVxcdFxcdFxcdHVuc2lnbmVkIGludCBsY2kpXFxuLS1cXG5uZXQveDI1L3gyNV9kZXYuYz0yNj1zdGF0aWMgaW50IHgyNV9yZWNlaXZlX2RhdGEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHgyNV9uZWlnaCAqbmIpXFxuLS1cXG5uZXQveDI1L3gyNV9kZXYuYy05My1cXG5uZXQveDI1L3gyNV9kZXYuYzo5NDppbnQgeDI1X2xhcGJfcmVjZWl2ZV9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC94MjUveDI1X2Rldi5jLTk1LVxcdFxcdFxcdCAgIHN0cnVjdCBwYWNrZXRfdHlwZSAqcHR5cGUsIHN0cnVjdCBuZXRfZGV2aWNlICpvcmlnX2RldilcXG4tLVxcbm5ldC94MjUveDI1X2ZhY2lsaXRpZXMuYy00MC0gKi9cXG5uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmM6NDE6aW50IHgyNV9wYXJzZV9mYWNpbGl0aWVzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4MjVfZmFjaWxpdGllcyAqZmFjaWxpdGllcyxcXG5uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmMtNDItXFx0XFx0c3RydWN0IHgyNV9kdGVfZmFjaWxpdGllcyAqZHRlX2ZhY3MsIHVuc2lnbmVkIGxvbmcgKnZjX2ZhY19tYXNrKVxcbi0tXFxubmV0L3gyNS94MjVfZmFjaWxpdGllcy5jLTE4Ny0gKi9cXG5uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmM6MTg4OmludCB4MjVfY3JlYXRlX2ZhY2lsaXRpZXModW5zaWduZWQgY2hhciAqYnVmZmVyLFxcbm5ldC94MjUveDI1X2ZhY2lsaXRpZXMuYy0xODktXFx0XFx0c3RydWN0IHgyNV9mYWNpbGl0aWVzICpmYWNpbGl0aWVzLFxcbi0tXFxubmV0L3gyNS94MjVfZmFjaWxpdGllcy5jLTI2NC0gKi9cXG5uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmM6MjY1OmludCB4MjVfbmVnb3RpYXRlX2ZhY2lsaXRpZXMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2sgKnNrLFxcbm5ldC94MjUveDI1X2ZhY2lsaXRpZXMuYy0yNjYtXFx0XFx0c3RydWN0IHgyNV9mYWNpbGl0aWVzICpuZXcsIHN0cnVjdCB4MjVfZHRlX2ZhY2lsaXRpZXMgKmR0ZSlcXG4tLVxcbm5ldC94MjUveDI1X2ZvcndhcmQuYz0xNT1ERUZJTkVfUldMT0NLKHgyNV9mb3J3YXJkX2xpc3RfbG9jayk7XFxubmV0L3gyNS94MjVfZm9yd2FyZC5jLTE2LVxcbm5ldC94MjUveDI1X2ZvcndhcmQuYzoxNzppbnQgeDI1X2ZvcndhcmRfY2FsbChzdHJ1Y3QgeDI1X2FkZHJlc3MgKmRlc3RfYWRkciwgc3RydWN0IHgyNV9uZWlnaCAqZnJvbSxcXG5uZXQveDI1L3gyNV9mb3J3YXJkLmMtMTgtXFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGxjaSlcXG4tLVxcbm5ldC94MjUveDI1X2ZvcndhcmQuYy04OC1cXG5uZXQveDI1L3gyNV9mb3J3YXJkLmM6ODk6aW50IHgyNV9mb3J3YXJkX2RhdGEoaW50IGxjaSwgc3RydWN0IHgyNV9uZWlnaCAqZnJvbSwgc3RydWN0IHNrX2J1ZmYgKnNrYikge1xcbm5ldC94MjUveDI1X2ZvcndhcmQuYy05MC1cXG4tLVxcbm5ldC94MjUveDI1X2luLmM9MzkzPXN0YXRpYyBpbnQgeDI1X3N0YXRlNV9tYWNoaW5lKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGZyYW1ldHlwZSlcXG4tLVxcbm5ldC94MjUveDI1X2luLmMtNDE3LS8qIEhpZ2hlciBsZXZlbCB1cGNhbGwgZm9yIGEgTEFQQiBmcmFtZSAqL1xcbm5ldC94MjUveDI1X2luLmM6NDE4OmludCB4MjVfcHJvY2Vzc19yeF9mcmFtZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3gyNS94MjVfaW4uYy00MTkte1xcbi0tXFxubmV0L3gyNS94MjVfaW4uYy00NTAtXFxubmV0L3gyNS94MjVfaW4uYzo0NTE6aW50IHgyNV9iYWNrbG9nX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3gyNS94MjVfaW4uYy00NTIte1xcbi0tXFxubmV0L3gyNS94MjVfbGluay5jPTMzMj1zdHJ1Y3QgeDI1X25laWdoICp4MjVfZ2V0X25laWdoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQveDI1L3gyNV9saW5rLmMtMzUyLSAqL1xcbm5ldC94MjUveDI1X2xpbmsuYzozNTM6aW50IHgyNV9zdWJzY3JfaW9jdGwodW5zaWduZWQgaW50IGNtZCwgdm9pZCBfX3VzZXIgKmFyZylcXG5uZXQveDI1L3gyNV9saW5rLmMtMzU0LXtcXG4tLVxcbm5ldC94MjUveDI1X291dC5jPTI4PXN0YXRpYyBpbnQgeDI1X3BhY3NpemVfdG9fYnl0ZXModW5zaWduZWQgaW50IHBhY3NpemUpXFxuLS1cXG5uZXQveDI1L3gyNV9vdXQuYy00Ni0gKi9cXG5uZXQveDI1L3gyNV9vdXQuYzo0NzppbnQgeDI1X291dHB1dChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3gyNS94MjVfb3V0LmMtNDgte1xcbi0tXFxubmV0L3gyNS94MjVfcm91dGUuYz0xMzU9c3RydWN0IHgyNV9yb3V0ZSAqeDI1X2dldF9yb3V0ZShzdHJ1Y3QgeDI1X2FkZHJlc3MgKmFkZHIpXFxuLS1cXG5uZXQveDI1L3gyNV9yb3V0ZS5jLTE1OS0gKi9cXG5uZXQveDI1L3gyNV9yb3V0ZS5jOjE2MDppbnQgeDI1X3JvdXRlX2lvY3RsKHVuc2lnbmVkIGludCBjbWQsIHZvaWQgX191c2VyICphcmcpXFxubmV0L3gyNS94MjVfcm91dGUuYy0xNjEte1xcbi0tXFxubmV0L3gyNS94MjVfc3Vici5jPTY5PXZvaWQgeDI1X3JlcXVldWVfZnJhbWVzKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC94MjUveDI1X3N1YnIuYy05MC0gKi9cXG5uZXQveDI1L3gyNV9zdWJyLmM6OTE6aW50IHgyNV92YWxpZGF0ZV9ucihzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIHNob3J0IG5yKVxcbm5ldC94MjUveDI1X3N1YnIuYy05Mi17XFxuLS1cXG5uZXQveDI1L3gyNV9zdWJyLmM9MTEwPXZvaWQgeDI1X3dyaXRlX2ludGVybmFsKHN0cnVjdCBzb2NrICpzaywgaW50IGZyYW1ldHlwZSlcXG4tLVxcbm5ldC94MjUveDI1X3N1YnIuYy0yNjAtICovXFxubmV0L3gyNS94MjVfc3Vici5jOjI2MTppbnQgeDI1X2RlY29kZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsIGludCAqbnMsIGludCAqbnIsIGludCAqcSxcXG5uZXQveDI1L3gyNV9zdWJyLmMtMjYyLVxcdCAgICAgICBpbnQgKmQsIGludCAqbSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDI6MDAuMDYwOTIyNTQ1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5NDY2OTg4MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgVGhvdWdodCBQcm9jZXNzIG9uIElkZW50aWZ5aW5nIEZvY3VzIFN5bWJvbHMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gY2hvb3NlIHNvbWUgZ29vZCBmb2N1cyBzeW1ib2xzIGZvciB0aGlzIGFuYWx5c2lzLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSB3YW50cyBtZSB0byBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zLCBub3QgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIEkgaW5pdGlhbGx5IGNvbnNpZGVyZWQgdGhlIGNvcmUgWC4yNSBzb2NrZXQgb3BlcmF0aW9uczogYHgyNV9jcmVhdGVgLCBgeDI1X2Nvbm5lY3RgLCBgeDI1X3JlbGVhc2VgLCBgeDI1X2JpbmRgLCBgeDI1X2xpc3RlbmAsIGB4MjVfYWNjZXB0YCwgYHgyNV9zZW5kbXNnYCwgYW5kIGB4MjVfcmVjdm1zZ2AuIFRoZXNlIHNlZW0gbGlrZSB0aGUgb2J2aW91cyBjYW5kaWRhdGVzIHNpbmNlIHRoZXkgYXJlIHRoZSBtYWluIHNvY2tldCBvcGVyYXRpb25zLiBCdXQsIGFyZSB0aGV5IGlubGluZWQ/XG5cbkkgcmVtZW1iZXIgdGhlc2UgZnVuY3Rpb25zIGFyZSBwYXNzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIGB4MjVfcHJvdG9fb3BzYCBhbmQgYHgyNV9mYW1pbHlfb3BzYC4gU28gdGhleSAqc2hvdWxkbid0KiBiZSBpbmxpbmVkLiBUaGF0IG1lYW5zIHRoZXkgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLCBtYWtpbmcgdGhlbSB2YWxpZCBmb2N1cyBzeW1ib2xzLiBTcGVjaWZpY2FsbHksIEknbGwgY29uZmlybSB0aGF0IGB4MjVfY29ubmVjdGAgaXMgaW5kZWVkIHBhc3NlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIuIFllcywgY29uZmlybWVkLiBHb29kLCB0aGV5IGFyZSB2aWFibGUuXG5cbk5leHQsIEknbGwgcXVpY2tseSBzY2FuIHRoZSBmdW5jdGlvbnMgaW4gYHgyNV90aW1lci5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBwcm9taXNpbmcgY2FuZGlkYXRlcy4gSSBzZWUgZnVuY3Rpb25zIGxpa2UgYHgyNV9zdGFydF9oZWFydGJlYXRgLCBgeDI1X3N0b3BfaGVhcnRiZWF0YCwgYHgyNV9zdGFydF90MnRpbWVyYCwgZXRjLiBUaGVzZSBhcmUgbm9uLXN0YXRpYyBidXQgc2VlbSB0byBiZSBpbnRlcm5hbC4gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXkgYXJlIGV4cG9ydGVkIG9yIGp1c3QgdXNlZCB3aXRoaW4gdGhlIG1vZHVsZS4gRnJvbSBhIHF1aWNrIGdsYW5jZSwgdGhleSBhcmUgbW9zdGx5IG1vZHVsZS1pbnRlcm5hbCwgc28gcHJvYmFibHkgbm90IGdvb2QgY2FuZGlkYXRlcyBmb3IgZGlyZWN0IGZvY3VzLiBJIHRoZW4gY29uc2lkZXIgYHgyNV9pbml0X3RpbWVyc2Agd2hpY2ggaXMgY2FsbGVkIGZyb20gYHgyNV9hbGxvY19zb2NrZXRgLCBhbmQgYHgyNV9zdGFydF9oZWFydGJlYXRgIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGB4MjVfYWxsb2Nfc29ja2V0YCBhbmQgYHgyNV9oZWFydGJlYXRfZXhwaXJ5YC5cblxuVGhpbmtpbmcgbW9yZSBicm9hZGx5LCBJIG5lZWQgdG8gbG9vayBmb3IgZnVuY3Rpb25zIHRoYXQgYXJlIGNyaXRpY2FsIHRvIHRoZSBiZWhhdmlvciBiZWluZyBtb2RpZmllZC4gQmVzaWRlcyB0aGUgc29ja2V0IG9wZXJhdGlvbnMsIEkgc2hvdWxkIGNvbnNpZGVyIHRoZSBmdW5jdGlvbnMgdGhhdCBoYW5kbGUgZnJhbWUgcmVjZXB0aW9uIGFuZCB0aW1lciBleHBpcnkuIE15IGZpcnN0IHBhc3MgYXQgcG90ZW50aWFsIGNhbmRpZGF0ZXMgYXJlOiBgeDI1X2Nvbm5lY3RgLCBgeDI1X3JlbGVhc2VgLCBgeDI1X3J4X2NhbGxfcmVxdWVzdGAsIGB4MjVfbGFwYl9yZWNlaXZlX2ZyYW1lYCwgYHgyNV9wcm9jZXNzX3J4X2ZyYW1lYCwgYHgyNV90aW1lcl9leHBpcnlgLCBhbmQgYHgyNV9oZWFydGJlYXRfZXhwaXJ5YC5cblxuV2FpdCBhIG1pbnV0ZSwgYHgyNV90aW1lcl9leHBpcnlgIGFuZCBgeDI1X2hlYXJ0YmVhdF9leHBpcnlgIGFyZSB0aGUgKmFjdHVhbCogdGltZXIgY2FsbGJhY2tzLCBhbmQgdGhleSB3ZXJlIHRoZSB0YXJnZXRzIG9mIHRoZSBtb2RpZmljYXRpb25zISBUaGV5IGFyZSBzdGF0aWMsIGJ1dCBJIHJlbWVtYmVyIHRoZXkncmUgcGFzc2VkIHRvIGB0aW1lcl9zZXR1cGAuIFRoaXMgbWVhbnMgdGhleSBhcmUgKm5vdCogaW5saW5lZCBhbmQgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLiBUaGV5IGFyZSAqZXhjZWxsZW50KiBmb2N1cyBzeW1ib2xzLiBUaGV5IGFyZSB0aGUgY29yZSBvZiB0aGUgdGltZXIgbG9naWMgSSBhbSBsb29raW5nIGF0LiBJIHdpbGwgbm93IGV4YW1pbmUgdGhlc2UgY2xvc2VseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2NzgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDI6MDkuMDA3NjI0MDI3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTYwNTUyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4MjVfdGltZXJfZXhwaXJ5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94MjUveDI1X3RpbWVyLmM9MjQ9c3RhdGljIHZvaWQgeDI1X2hlYXJ0YmVhdF9leHBpcnkoc3RydWN0IHRpbWVyX2xpc3QgKnQpO1xcbm5ldC94MjUveDI1X3RpbWVyLmM6MjU6c3RhdGljIHZvaWQgeDI1X3RpbWVyX2V4cGlyeShzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7XFxubmV0L3gyNS94MjVfdGltZXIuYy0yNi1cXG5uZXQveDI1L3gyNV90aW1lci5jPTI3PXZvaWQgeDI1X2luaXRfdGltZXJzKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC94MjUveDI1X3RpbWVyLmMtMzAtXFxubmV0L3gyNS94MjVfdGltZXIuYzozMTpcXHR0aW1lcl9zZXR1cChcXHUwMDI2eDI1LVxcdTAwM2V0aW1lciwgeDI1X3RpbWVyX2V4cGlyeSwgMCk7XFxubmV0L3gyNS94MjVfdGltZXIuYy0zMi1cXG4tLVxcbm5ldC94MjUveDI1X3RpbWVyLmM9MTM3PXN0YXRpYyBpbmxpbmUgdm9pZCB4MjVfZG9fdGltZXJfZXhwaXJ5KHN0cnVjdCBzb2NrICogc2spXFxuLS1cXG5uZXQveDI1L3gyNV90aW1lci5jLTE2Mi1cXG5uZXQveDI1L3gyNV90aW1lci5jOjE2MzpzdGF0aWMgdm9pZCB4MjVfdGltZXJfZXhwaXJ5KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbm5ldC94MjUveDI1X3RpbWVyLmMtMTY0LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDI6MDkuMDY5MjM2NzczWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NDA2NDQxODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkFuYWx5emluZyB0aGUgVGltZXIgQ2FsbGJhY2sgQ2hhbmdlcyoqXG5cblJpZ2h0LCBzbyBJIHNlZSB3ZSdyZSBkZWFsaW5nIHdpdGggdGltZXIgY2FsbGJhY2tzIGluIHRoaXMgcGF0Y2guIFNwZWNpZmljYWxseSwgYHgyNV90aW1lcl9leHBpcnlgIGFuZCBgeDI1X2hlYXJ0YmVhdF9leHBpcnlgIGFyZSB0aGUgdHdvIG1haW4gY2FsbGJhY2tzIHRoYXQgaGF2ZSBiZWVuIGlkZW50aWZpZWQgYXMgdGltZXItcmVsYXRlZCBpbiB0aGlzIHNlY3Rpb24gb2YgY29kZS4gTWFrZXMgcGVyZmVjdCBzZW5zZTsgdGhleSdyZSBuYW1lZCBhZnRlciBleHBpcnkgZXZlbnRzLCBzbyB0aGF0J3MgYSBwcmV0dHkgY2xlYXIgaW5kaWNhdG9yLiBBbmQgbGV0J3Mgbm90IGZvcmdldCBgeDI1X2Rlc3Ryb3lfdGltZXJgLiBJdCdzIGFub3RoZXIgY2FsbGJhY2sgZnVuY3Rpb24sIHRoaXMgb25lIGRlYWxpbmcgd2l0aCB0aW1lciBkZXN0cnVjdGlvbi4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRob3NlIHRocmVlIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5LCB0byBmdWxseSBncmFzcCB3aGF0IHRoaXMgcGF0Y2ggaXMgZG9pbmcgd2l0aCBYLjI1IHRpbWVycy4gVGhlIGNoYW5nZXMgY291bGQgaW52b2x2ZSBob3cgdGhlIHRpbWVycyBhcmUgaW5pdGlhbGl6ZWQsIGhvdyB0aGVpciBleHBpcmF0aW9ucyBhcmUgaGFuZGxlZCwgb3IgZXZlbiB0aGUgcHJvY2VzcyBvZiBjbGVhbmluZyB1cCB0aGVzZSB0aW1lcnMuIFRpbWUgdG8gZGl2ZSBkZWVwZXIgYW5kIGFuYWx5emUgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjgwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDI6MTIuNzA5ODgzNDUxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTA4NTQyNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieDI1X2Rlc3Ryb3lfdGltZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3gyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3gyNS9hZl94MjUuYz0zNTY9c3RhdGljIHZvaWQgX194MjVfZGVzdHJveV9zb2NrZXQoc3RydWN0IHNvY2sgKik7XFxuLS1cXG5uZXQveDI1L2FmX3gyNS5jLTM2MC0gKi9cXG5uZXQveDI1L2FmX3gyNS5jOjM2MTpzdGF0aWMgdm9pZCB4MjVfZGVzdHJveV90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG5uZXQveDI1L2FmX3gyNS5jLTM2Mi17XFxuLS1cXG5uZXQveDI1L2FmX3gyNS5jPTM3Nj1zdGF0aWMgdm9pZCBfX3gyNV9kZXN0cm95X3NvY2tldChzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQveDI1L2FmX3gyNS5jLTQwMS1cXHRcXHQvKiBEZWZlcjogb3V0c3RhbmRpbmcgYnVmZmVycyAqL1xcbm5ldC94MjUvYWZfeDI1LmM6NDAyOlxcdFxcdHNrLVxcdTAwM2Vza190aW1lci5mdW5jdGlvbiA9IHgyNV9kZXN0cm95X3RpbWVyO1xcbm5ldC94MjUvYWZfeDI1LmMtNDAzLVxcdFxcdHNrX3Jlc2V0X3RpbWVyKHNrLCBcXHUwMDI2c2stXFx1MDAzZXNrX3RpbWVyLCBqaWZmaWVzICsgMTAgKiBIWik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjQyOjEyLjkyMDc0NTY1OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDk0MTkyMTEzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipYLjI1IFRpbWVyIEZpeGVzIGFuZCBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBYLjI1IHBhdGNoIGFuZCBJJ3ZlIGdvdCBhIGdvb2QgaGFuZGxlIG9uIHdoYXQncyBnb2luZyBvbi4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBmaXhpbmcgc29tZSB0aW1lciByZWZlcmVuY2UgY291bnRpbmcgaXNzdWVzLCB3aGljaCwgaWYgbGVmdCB1bmZpeGVkLCBjb3VsZCBkZWZpbml0ZWx5IGxlYWQgdG8gc29tZSBuYXN0eSBtZW1vcnkgbWFuYWdlbWVudCBwcm9ibGVtcyBkb3duIHRoZSBsaW5lLiBJJ20gdGhpbmtpbmcsIHRoaXMgZGVmaW5pdGVseSBuZWVkcyBmdXp6aW5nLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGlkZW50aWZ5IGZvY3VzIHN5bWJvbHMuIEkgdGhpbmsgdGhlc2UgYXJlIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdG8gdGFyZ2V0OiBgeDI1X2Rlc3Ryb3lfdGltZXJgLCBgeDI1X2hlYXJ0YmVhdF9leHBpcnlgLCBgeDI1X3RpbWVyX2V4cGlyeWAsIGB4MjVfY29ubmVjdGAsIGB4MjVfcmVsZWFzZWAuIEhvd2V2ZXIsIEkndmUgZXhwYW5kZWQgdGhlIGxpc3QgdG8gaW5jbHVkZSBgeDI1X2JpbmRgLCBgeDI1X2xpc3RlbmAsIGFuZCBgeDI1X2FjY2VwdGAgYXMgd2VsbCwgYXMgdGhleSBhcmUgZXNzZW50aWFsIGVudHJ5IHBvaW50cyBpbnRvIFguMjUgc29ja2V0IHVzYWdlLlxuXG5XYWl0IGEgbWludXRlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGZ1bmN0aW9uIGB4MjVfZGVzdHJveV90aW1lcmAgd2hpY2ggaXMgc3RhdGljIGFuZCBhIHRpbWVyIGNhbGxiYWNrLCBpcyB2YWxpZCBhcyBhIGZvY3VzIHN5bWJvbC4gSWYgaXQncyBub3QgaW5saW5lZCwgdGhlbiB0aGUgc3RhdGljIHF1YWxpZmllciBzaG91bGQgbm90IGJlIGFuIGlzc3VlIGFzIHRoZSBmdW5jdGlvbiB3aWxsIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gT2theSwgdGhhdCBjaGVja3Mgb3V0LlxuXG5Ob3csIGxldCdzIHNlZSwgd2hhdCBlbHNlIG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQ/IEZyb20gYSBjb25maWd1cmF0aW9uIHN0YW5kcG9pbnQsIEkgYmVsaWV2ZSBgQ09ORklHX1gyNWAgaXMgdGhlIG9ubHkgcmVsZXZhbnQgZmxhZyB0byBlbmFibGUuXG5cbkkndmUgdGFrZW4gYSBjbG9zZXIgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmIHRvIGVuc3VyZSBJIGRpZG4ndCBtaXNzIGFueXRoaW5nLiBJdCBhcHBlYXJzIHRoZSBjaGFuZ2VzIGFyZSBzcG90IG9uLiBgc29ja19wdXQoc2spYCBpcyBjb3JyZWN0bHkgYWRkZWQgYXQgdGhlIGVuZCBvZiB0aGUgdGltZXIgY2FsbGJhY2tzIChgeDI1X2Rlc3Ryb3lfdGltZXJgLCBgeDI1X2hlYXJ0YmVhdF9leHBpcnlgLCBgeDI1X3RpbWVyX2V4cGlyeWApLiBUaGlzIGlzIGNydWNpYWwgYmVjYXVzZSBpdCBlbnN1cmVzIHRoZSByZWZlcmVuY2UgdGFrZW4gYnkgYHNrX3Jlc2V0X3RpbWVyYCBvciBgYWRkX3RpbWVyYCBpcyBkcm9wcGVkIHByb3Blcmx5LiBJJ3ZlIGFsc28gdmVyaWZpZWQgdGhhdCB0aGUgcGF0Y2ggY29ycmVjdGx5IHVzZXMgYHNrX3Jlc2V0X3RpbWVyYCwgYW5kIGZyb20gd2hhdCBJIGNhbiB0ZWxsLCBpdCdzIG9wZXJhdGluZyBhcyBpbnRlbmRlZC4gSXQgYWRkcyBhIHJlZmVyZW5jZSB3aGVuIGEgdGltZXIgaXMgYXJtZWQgYW5kIGRyb3BzIGl0IHdoZW4gdGhlIHRpbWVyIGlzIHN0b3BwZWQgb3IgZXhlY3V0ZWQuIFRoaXMgcHJldmVudHMgZG91YmxlLWZyZWVzLiBUaGUgaGVhcnRiZWF0IGltcGxlbWVudGF0aW9uIGFsc28gY2hlY2tzIGlmIHRoZSBzb2NrZXQgaGFzIGJlZW4gdW5saW5rZWQgYmVmb3JlIHJlYXJtaW5nIHRoZSBoZWFydGJlYXQuXG5cblNvLCBvdmVyYWxsLCB0aGlzIHBhdGNoIGlzIGEgZnVuY3Rpb25hbCBpbXByb3ZlbWVudC4gVGhlIGFkZGl0aW9uIG9mIGZ1enppbmcgZm9jdXMgc3ltYm9scyBhbmQgZW5hYmxpbmcgYENPTkZJR19YMjVgIHNlZW0gbGlrZSBhIGdvb2QgYXBwcm9hY2ggdG8gZW5zdXJlIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBjaGFuZ2VzLiBJJ20gc2F0aXNmaWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjgzMiwiT3V0cHV0VG9rZW5zIjoxODgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDI6MjMuODYyNjY5OTYxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUwNDM3MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlgyNVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIngyNV9kZXN0cm95X3RpbWVyXCIsXG4gICAgXCJ4MjVfaGVhcnRiZWF0X2V4cGlyeVwiLFxuICAgIFwieDI1X3RpbWVyX2V4cGlyeVwiLFxuICAgIFwieDI1X2Nvbm5lY3RcIixcbiAgICBcIngyNV9yZWxlYXNlXCIsXG4gICAgXCJ4MjVfYmluZFwiLFxuICAgIFwieDI1X2xpc3RlblwiLFxuICAgIFwieDI1X2FjY2VwdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHRpbWVyIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgcmVhcm1pbmcgbG9naWMgaW4gdGhlIFguMjUgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24uIEl0IHJlcGxhY2VzIHJhdyB0aW1lciBBUEkgY2FsbHMgd2l0aCBzb2NrZXQgdGltZXIgZnVuY3Rpb25zIChza19yZXNldF90aW1lciwgc2tfc3RvcF90aW1lcikgYW5kIGFkZHMgbWlzc2luZyBzb2NrX3B1dCgpIGNhbGxzIGluIHRpbWVyIGNhbGxiYWNrcyB0byBwcmV2ZW50IHVzZS1hZnRlci1mcmVlIG9yIG1lbW9yeSBsZWFrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgcHJvdG9jb2wgY29kZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYMjVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4MjVfZGVzdHJveV90aW1lclwiLFxuICAgIFwieDI1X2hlYXJ0YmVhdF9leHBpcnlcIixcbiAgICBcIngyNV90aW1lcl9leHBpcnlcIixcbiAgICBcIngyNV9jb25uZWN0XCIsXG4gICAgXCJ4MjVfcmVsZWFzZVwiLFxuICAgIFwieDI1X2JpbmRcIixcbiAgICBcIngyNV9saXN0ZW5cIixcbiAgICBcIngyNV9hY2NlcHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyB0aW1lciByZWZlcmVuY2UgY291bnRpbmcgYW5kIHJlYXJtaW5nIGxvZ2ljIGluIHRoZSBYLjI1IHByb3RvY29sIGltcGxlbWVudGF0aW9uLiBJdCByZXBsYWNlcyByYXcgdGltZXIgQVBJIGNhbGxzIHdpdGggc29ja2V0IHRpbWVyIGZ1bmN0aW9ucyAoc2tfcmVzZXRfdGltZXIsIHNrX3N0b3BfdGltZXIpIGFuZCBhZGRzIG1pc3Npbmcgc29ja19wdXQoKSBjYWxscyBpbiB0aW1lciBjYWxsYmFja3MgdG8gcHJldmVudCB1c2UtYWZ0ZXItZnJlZSBvciBtZW1vcnkgbGVha3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JrIHByb3RvY29sIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowrvhfv[1] Phase: Succeeded StartedAt: 2026-07-27 07:42:35 +0000 UTC FinishedAt: 2026-07-27 07:42:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvhfv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-27 07:42:35 +0000 UTC FinishedAt: 2026-07-27 07:42:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvhfv[2] Phase: Succeeded StartedAt: 2026-07-27 07:42:35 +0000 UTC FinishedAt: 2026-07-27 12:22:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-27 07:42:35 +0000 UTC FinishedAt: 2026-07-27 12:22:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 07:42:35 +0000 UTC FinishedAt: 2026-07-27 07:42:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 07:42:35 +0000 UTC FinishedAt: 2026-07-27 07:42:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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-workflowrvhfv/series-workflowrvhfv-convert-artifact-3677942198/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 07:42:45 +0000 UTC FinishedAt: 2026-07-27 08:31:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 07:42:45 +0000 UTC FinishedAt: 2026-07-27 08:31:45 +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:*e6c575a6-f975-4dd6-ac09-4f3e55efdfaf,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-workflowrvhfv/series-workflowrvhfv-convert-artifact-3677942198/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": "e6e30f4b-e91d-4d1b-9415-36178e3c3f3f", "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-workflowrvhfv/series-workflowrvhfv-build-action-3599374540/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 07:42:45 +0000 UTC FinishedAt: 2026-07-27 08:31:35 +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:*e6c575a6-f975-4dd6-ac09-4f3e55efdfaf,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-workflowrvhfv/series-workflowrvhfv-convert-artifact-3677942198/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": "e6e30f4b-e91d-4d1b-9415-36178e3c3f3f", "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-workflowrvhfv/series-workflowrvhfv-build-action-3599374540/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 08:31:45 +0000 UTC FinishedAt: 2026-07-27 08:31:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 08:31:45 +0000 UTC FinishedAt: 2026-07-27 08:31:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 08:31:45 +0000 UTC FinishedAt: 2026-07-27 08:31:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 08:31:45 +0000 UTC FinishedAt: 2026-07-27 08:31:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-workflowrvhfv/series-workflowrvhfv-convert-artifact-4241449801/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 08:31:55 +0000 UTC FinishedAt: 2026-07-27 08:34:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 08:31:55 +0000 UTC FinishedAt: 2026-07-27 08:34:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e6e30f4b-e91d-4d1b-9415-36178e3c3f3f,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-workflowrvhfv/series-workflowrvhfv-build-action-3599374540/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-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 08:34:37 +0000 UTC FinishedAt: 2026-07-27 08:34:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 08:34:37 +0000 UTC FinishedAt: 2026-07-27 08:34:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 08:34:37 +0000 UTC FinishedAt: 2026-07-27 09:17:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 08:34:37 +0000 UTC FinishedAt: 2026-07-27 09:17:45 +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:*e6c575a6-f975-4dd6-ac09-4f3e55efdfaf,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-workflowrvhfv/series-workflowrvhfv-convert-artifact-4241449801/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": "946ad0b1-dcd9-486a-a9a0-cc27ce3eb782", "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-workflowrvhfv/series-workflowrvhfv-build-action-1859449381/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 08:34:37 +0000 UTC FinishedAt: 2026-07-27 09:17:35 +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:*e6c575a6-f975-4dd6-ac09-4f3e55efdfaf,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-workflowrvhfv/series-workflowrvhfv-convert-artifact-4241449801/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": "946ad0b1-dcd9-486a-a9a0-cc27ce3eb782", "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-workflowrvhfv/series-workflowrvhfv-build-action-1859449381/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 09:17:45 +0000 UTC FinishedAt: 2026-07-27 09:17:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 09:17:45 +0000 UTC FinishedAt: 2026-07-27 09:17:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 09:17:45 +0000 UTC FinishedAt: 2026-07-27 09:19:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 09:17:45 +0000 UTC FinishedAt: 2026-07-27 09:19:35 +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:*946ad0b1-dcd9-486a-a9a0-cc27ce3eb782,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-workflowrvhfv/series-workflowrvhfv-build-action-1859449381/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-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-27 09:19:45 +0000 UTC FinishedAt: 2026-07-27 12:22:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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: Succeeded StartedAt: 2026-07-27 09:19:45 +0000 UTC FinishedAt: 2026-07-27 12:22:43 +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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"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:*e6e30f4b-e91d-4d1b-9415-36178e3c3f3f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*946ad0b1-dcd9-486a-a9a0-cc27ce3eb782,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-workflowrvhfv/series-workflowrvhfv-build-action-3599374540/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-workflowrvhfv/series-workflowrvhfv-build-action-1859449381/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 09:19:45 +0000 UTC FinishedAt: 2026-07-27 09:19:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 09:19:45 +0000 UTC FinishedAt: 2026-07-27 09:19:49 +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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"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-workflowrvhfv/series-workflowrvhfv-convert-artifact-3867617438/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 09:19:45 +0000 UTC FinishedAt: 2026-07-27 09:19:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 09:19:45 +0000 UTC FinishedAt: 2026-07-27 09:19:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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-27 09:19:45 +0000 UTC FinishedAt: 2026-07-27 09:19:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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: Succeeded StartedAt: 2026-07-27 09:19:55 +0000 UTC FinishedAt: 2026-07-27 12:22:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvhfv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"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":["x25_destroy_timer","x25_heartbeat_expiry","x25_timer_expiry","x25_connect","x25_release","x25_bind","x25_listen","x25_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["X25"],"series_id":"5fbdb97a-8f3c-46e0-9f9e-a303770c7901","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: Succeeded StartedAt: 2026-07-27 09:19:55 +0000 UTC FinishedAt: 2026-07-27 12:22:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e6e30f4b-e91d-4d1b-9415-36178e3c3f3f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*946ad0b1-dcd9-486a-a9a0-cc27ce3eb782,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-workflowrvhfv/series-workflowrvhfv-build-action-3599374540/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-workflowrvhfv/series-workflowrvhfv-build-action-1859449381/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-workflowrvhfv/series-workflowrvhfv-convert-artifact-3867617438/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}