Name: series-workflowpr7cp Phase: Succeeded StartedAt: 2026-07-31 19:11:31 +0000 UTC FinishedAt: 2026-07-31 23:17:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr7cp[0] Phase: Succeeded StartedAt: 2026-07-31 19:11:31 +0000 UTC FinishedAt: 2026-07-31 19:30:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr7cp[0].run-triage Phase: Succeeded StartedAt: 2026-07-31 19:11:31 +0000 UTC FinishedAt: 2026-07-31 19:30:24 +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": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TIPC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TIPC" ], "series_id": "28753c25-e0ae-420b-a38c-7a0f776a947b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tipc_named_node_up", "tipc_named_dist_cluster_scope", "tipc_nametbl_publish", "tipc_nametbl_withdraw", "tipc_node_wakeup" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMxIDE5OjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0aXBjX25hbWVkX25vZGVfdXAmIzM0OywKICAgICYjMzQ7dGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGUmIzM0OywKICAgICYjMzQ7dGlwY19uYW1ldGJsX3B1Ymxpc2gmIzM0OywKICAgICYjMzQ7dGlwY19uYW1ldGJsX3dpdGhkcmF3JiMzNDssCiAgICAmIzM0O3RpcGNfbm9kZV93YWtldXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHdvcmtxdWV1ZSBmb3IgYnVsayBkaXN0cmlidXRpb24gb2YgY2x1c3RlciBzY29wZSBwdWJsaWNhdGlvbnMgaW4gVElQQywgbW9kaWZ5aW5nIGNvcmUgcHJvdG9jb2wgbG9naWMgc3VjaCBhcyBub2RlIHN0YXRlIG1hbmFnZW1lbnQgYW5kIG5hbWUgdGFibGUgcHVibGlzaGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBUSVBDIHN1YnN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxOToyOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDllMWZhZjcyMTE2ODc0YjM2MWJjZGRjNjg0NDhkYjA2MTI3OWNjMzBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAxOToyOTozMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvdGlwYy9jb3JlLmMgYi9uZXQvdGlwYy9jb3JlLmNcbmluZGV4IDMxNTk3NWMzYmU4MTguLjFlMWZlNzhjYzRlZTQgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC90aXBjL2NvcmUuY1xuQEAgLTYxLDYgJiM0Mzs2MSw4IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCB0aXBjX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcbiBcdHRuLVx1MDAzZXRyaWFsX2FkZHIgPSAwO1xuIFx0dG4tXHUwMDNlYWRkcl90cmlhbF9lbmQgPSAwO1xuIFx0dG4tXHUwMDNlY2FwYWJpbGl0aWVzID0gVElQQ19OT0RFX0NBUEFCSUxJVElFUztcbiYjNDM7XHRhdG9taWNfc2V0KFx1MDAyNnRuLVx1MDAzZW5vZGVfd3FfY291bnQsIDApO1xuJiM0MztcdGF0b21pY19zZXQoXHUwMDI2dG4tXHUwMDNlZmluYWxpemVkLCAwKTtcbiBcdElOSVRfV09SSyhcdTAwMjZ0bi1cdTAwM2V3b3JrLCB0aXBjX25ldF9maW5hbGl6ZV93b3JrKTtcbiBcdG1lbXNldCh0bi1cdTAwM2Vub2RlX2lkLCAwLCBzaXplb2YodG4tXHUwMDNlbm9kZV9pZCkpO1xuIFx0bWVtc2V0KHRuLVx1MDAzZW5vZGVfaWRfc3RyaW5nLCAwLCBzaXplb2YodG4tXHUwMDNlbm9kZV9pZF9zdHJpbmcpKTtcbkBAIC0xMTksNiAmIzQzOzEyMSw3IEBAIHN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgdGlwY19leGl0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXG4gI2lmZGVmIENPTkZJR19USVBDX0NSWVBUT1xuIFx0dGlwY19jcnlwdG9fc3RvcChcdTAwMjZ0aXBjX25ldChuZXQpLVx1MDAzZWNyeXB0b190eCk7XG4gI2VuZGlmXG4mIzQzO1x0d2FpdF92YXJfZXZlbnQoXHUwMDI2dG4tXHUwMDNlbm9kZV93cV9jb3VudCwgIWF0b21pY19yZWFkKFx1MDAyNnRuLVx1MDAzZW5vZGVfd3FfY291bnQpKTtcbiBcdHdhaXRfdmFyX2V2ZW50KFx1MDAyNnRuLVx1MDAzZXdxX2NvdW50LCBhdG9taWNfcmVhZChcdTAwMjZ0bi1cdTAwM2V3cV9jb3VudCkgPT0gMCk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL25ldC90aXBjL2NvcmUuaCBiL25ldC90aXBjL2NvcmUuaFxuaW5kZXggOWNlNWY5ZmY2Y2MwMy4uYmUzMzVjZTgzMzg5YSAxMDA2NDRcbi0tLSBhL25ldC90aXBjL2NvcmUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvY29yZS5oXG5AQCAtMTQ1LDYgJiM0MzsxNDUsMTAgQEAgc3RydWN0IHRpcGNfbmV0IHtcbiBcdHN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrO1xuIFx0LyogVGhlIG51bWJlcnMgb2Ygd29yayBxdWV1ZXMgaW4gc2NoZWR1bGUgKi9cbiBcdGF0b21pY190IHdxX2NvdW50O1xuJiM0MztcdC8qIFRoZSBudW1iZXJzIG9mIHdvcmtzIG9mIGNyZWF0ZWQgbm9kZXMgaW4gc2NoZWR1bGUgKi9cbiYjNDM7XHRhdG9taWNfdCBub2RlX3dxX2NvdW50O1xuJiM0MztcdC8qIGZsYWcgdG8gd2FrZSB1cCBzY2hlZHVsZWQgd29ya3Mgb2YgY3JlYXRlZCBub2RlcyAqL1xuJiM0MztcdGF0b21pY190IGZpbmFsaXplZDtcbiB9O1xuIFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IHRpcGNfbmV0ICp0aXBjX25ldChzdHJ1Y3QgbmV0ICpuZXQpXG5kaWZmIC0tZ2l0IGEvbmV0L3RpcGMvbmFtZV9kaXN0ci5jIGIvbmV0L3RpcGMvbmFtZV9kaXN0ci5jXG5pbmRleCBiYTRmNDkwNmUxM2I3Li5jOGUyODQ5NzM1NmVmIDEwMDY0NFxuLS0tIGEvbmV0L3RpcGMvbmFtZV9kaXN0ci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvdGlwYy9uYW1lX2Rpc3RyLmNcbkBAIC0xNDcsOCAmIzQzOzE0Nyw4IEBAIHN0cnVjdCBza19idWZmICp0aXBjX25hbWVkX3dpdGhkcmF3KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHB1YmxpY2F0aW9uICpwKVxuICAqIEBwbHM6IGxpbmtlZCBsaXN0IG9mIHB1YmxpY2F0aW9uIGl0ZW1zIHRvIGJlIHBhY2tlZCBpbnRvIGJ1ZmZlciBjaGFpblxuICAqIEBzZXFubzogc2VxdWVuY2UgbnVtYmVyIGZvciB0aGlzIG1lc3NhZ2VcbiAgKi9cbi1zdGF0aWMgdm9pZCBuYW1lZF9kaXN0cmlidXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCxcbi1cdFx0XHQgICAgIHUzMiBkbm9kZSwgc3RydWN0IGxpc3RfaGVhZCAqcGxzLCB1MTYgc2Vxbm8pXG4mIzQzO3N0YXRpYyBpbnQgbmFtZWRfZGlzdHJpYnV0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsXG4mIzQzO1x0XHRcdCAgICB1MzIgZG5vZGUsIHN0cnVjdCBsaXN0X2hlYWQgKnBscywgdTE2IHNlcW5vKVxuIHtcbiBcdHN0cnVjdCBwdWJsaWNhdGlvbiAqcHVibDtcbiBcdHN0cnVjdCBza19idWZmICpza2IgPSBOVUxMO1xuQEAgLTE2NCw4ICYjNDM7MTY0LDkgQEAgc3RhdGljIHZvaWQgbmFtZWRfZGlzdHJpYnV0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsXG4gXHRcdFx0c2tiID0gbmFtZWRfcHJlcGFyZV9idWYobmV0LCBQVUJMSUNBVElPTiwgbXNnX3JlbSxcbiBcdFx0XHRcdFx0XHRkbm9kZSk7XG4gXHRcdFx0aWYgKCFza2IpIHtcbiYjNDM7XHRcdFx0XHRfX3NrYl9xdWV1ZV9wdXJnZShsaXN0KTtcbiBcdFx0XHRcdHByX3dhcm4oXCYjMzQ7QnVsayBwdWJsaWNhdGlvbiBmYWlsdXJlXFxuXCYjMzQ7KTtcbi1cdFx0XHRcdHJldHVybjtcbiYjNDM7XHRcdFx0XHRyZXR1cm4gMTtcbiBcdFx0XHR9XG4gXHRcdFx0aGRyID0gYnVmX21zZyhza2IpO1xuIFx0XHRcdG1zZ19zZXRfYmNfYWNrX2ludmFsaWQoaGRyLCB0cnVlKTtcbkBAIC0xOTUsMTUgJiM0MzsxOTYsMTYgQEAgc3RhdGljIHZvaWQgbmFtZWRfZGlzdHJpYnV0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsXG4gXHRoZHIgPSBidWZfbXNnKHNrYl9wZWVrX3RhaWwobGlzdCkpO1xuIFx0bXNnX3NldF9sYXN0X2J1bGsoaGRyKTtcbiBcdG1zZ19zZXRfbmFtZWRfc2Vxbm8oaGRyLCBzZXFubyk7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiBcbiAvKipcbi0gKiB0aXBjX25hbWVkX25vZGVfdXAgLSB0ZWxsIHNwZWNpZmllZCBub2RlIGFib3V0IGFsbCBwdWJsaWNhdGlvbnMgYnkgdGhpcyBub2RlXG4mIzQzOyAqIHRpcGNfbmFtZWRfZGlzdHJpYnV0ZSAtIGRpc3RyaWJ1dGUgYWxsIHB1YmxpY2F0aW9ucyB0byBzcGVjaWZpZWQgbm9kZVxuICAqIEBuZXQ6IHRoZSBhc3NvY2lhdGVkIG5ldHdvcmsgbmFtZXNwYWNlXG4gICogQGRub2RlOiBkZXN0aW5hdGlvbiBub2RlXG4tICogQGNhcGFiaWxpdGllczogcGVlciBub2RlJiMzOTtzIGNhcGFiaWxpdGllc1xuICAqL1xuLXZvaWQgdGlwY19uYW1lZF9ub2RlX3VwKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlLCB1MTYgY2FwYWJpbGl0aWVzKVxuJiM0MztzdGF0aWMgaW50IHRpcGNfbmFtZWRfZGlzdHJpYnV0ZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSlcbiB7XG4gXHRzdHJ1Y3QgbmFtZV90YWJsZSAqbnQgPSB0aXBjX25hbWVfdGFibGUobmV0KTtcbiBcdHN0cnVjdCB0aXBjX25ldCAqdG4gPSB0aXBjX25ldChuZXQpO1xuQEAgLTIxMiwxNSAmIzQzOzIxNCw4NiBAQCB2b2lkIHRpcGNfbmFtZWRfbm9kZV91cChzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSwgdTE2IGNhcGFiaWxpdGllcylcbiBcbiBcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZoZWFkKTtcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZ0bi1cdTAwM2VuYW1ldGJsX2xvY2spO1xuLVx0aWYgKCEoY2FwYWJpbGl0aWVzIFx1MDAyNiBUSVBDX05BTUVEX0JDQVNUKSlcbi1cdFx0bnQtXHUwMDNlcmNfZGVzdHMmIzQzOyYjNDM7O1xuIFx0c2Vxbm8gPSBudC1cdTAwM2VzbmRfbnh0O1xuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dG4tXHUwMDNlbmFtZXRibF9sb2NrKTtcbiBcbiBcdHJlYWRfbG9ja19iaChcdTAwMjZudC1cdTAwM2VjbHVzdGVyX3Njb3BlX2xvY2spO1xuLVx0bmFtZWRfZGlzdHJpYnV0ZShuZXQsIFx1MDAyNmhlYWQsIGRub2RlLCBcdTAwMjZudC1cdTAwM2VjbHVzdGVyX3Njb3BlLCBzZXFubyk7XG4mIzQzO1x0aWYgKG5hbWVkX2Rpc3RyaWJ1dGUobmV0LCBcdTAwMjZoZWFkLCBkbm9kZSwgXHUwMDI2bnQtXHUwMDNlY2x1c3Rlcl9zY29wZSwgc2Vxbm8pKSB7XG4mIzQzO1x0XHRyZWFkX3VubG9ja19iaChcdTAwMjZudC1cdTAwM2VjbHVzdGVyX3Njb3BlX2xvY2spO1xuJiM0MztcdFx0cmV0dXJuIC1FTk9CVUZTO1xuJiM0MztcdH1cbiBcdHRpcGNfbm9kZV94bWl0KG5ldCwgXHUwMDI2aGVhZCwgZG5vZGUsIDApO1xuIFx0cmVhZF91bmxvY2tfYmgoXHUwMDI2bnQtXHUwMDNlY2x1c3Rlcl9zY29wZV9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiB0aXBjX25hbWVkX25vZGVfdXAgLSB0ZWxsIHNwZWNpZmllZCBub2RlIGFib3V0IGFsbCBwdWJsaWNhdGlvbnMgYnkgdGhpcyBub2RlXG4mIzQzOyAqIEBuZXQ6IHRoZSBhc3NvY2lhdGVkIG5ldHdvcmsgbmFtZXNwYWNlXG4mIzQzOyAqIEBkbm9kZTogZGVzdGluYXRpb24gbm9kZVxuJiM0MzsgKiBAY2FwYWJpbGl0aWVzOiBwZWVyIG5vZGUmIzM5O3MgY2FwYWJpbGl0aWVzXG4mIzQzOyAqL1xuJiM0MztpbnQgdGlwY19uYW1lZF9ub2RlX3VwKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlLCB1MTYgY2FwYWJpbGl0aWVzKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG5hbWVfdGFibGUgKm50ID0gdGlwY19uYW1lX3RhYmxlKG5ldCk7XG4mIzQzO1x0c3RydWN0IHRpcGNfbmV0ICp0biA9IHRpcGNfbmV0KG5ldCk7XG4mIzQzO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZ0bi1cdTAwM2VuYW1ldGJsX2xvY2spO1xuJiM0MztcdGlmICghKGNhcGFiaWxpdGllcyBcdTAwMjYgVElQQ19OQU1FRF9CQ0FTVCkpXG4mIzQzO1x0XHRudC1cdTAwM2VyY19kZXN0cyYjNDM7JiM0Mzs7XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dG4tXHUwMDNlbmFtZXRibF9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmVhZF9sb2NrX2JoKFx1MDAyNm50LVx1MDAzZWNsdXN0ZXJfc2NvcGVfbG9jayk7XG4mIzQzO1x0LyogMS4gdGlwY19uZXRfZmluYWxpemVfd29yaygpIGlzIG5vdCBzY2hlZHVsZWQgYmVjYXVzZSBvZiBuYW1lc3BhY2VcbiYjNDM7XHQgKiAgICB0ZWFyZG93bi5cbiYjNDM7XHQgKiAyLiBPciB0aXBjX25ldF9maW5hbGl6ZSgpIC0tLVx1MDAzZSB0aXBjX25hbWV0YmxfcHVibGlzaCgpIGhhcyBmYWlsZWRcbiYjNDM7XHQgKiAgICB0byBpbnNlcnQgbm9kZSBzZWxmIGFkZHJlc3MgcHVibGljYXRpb24gaW50byBudC1cdTAwM2VjbHVzdGVyX3Njb3BlXG4mIzQzO1x0ICogICAgZHVlIHRvIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUuXG4mIzQzO1x0ICogMy4gT3IgdGlwY19uZXRfZmluYWxpemUoKSAtLS1cdTAwM2UgdGlwY19uYW1ldGJsX3B1Ymxpc2goKSBoYXMgbm90XG4mIzQzO1x0ICogICAgZXhlY3V0ZWQgeWV0LlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICh1bmxpa2VseShsaXN0X2VtcHR5KFx1MDAyNm50LVx1MDAzZWNsdXN0ZXJfc2NvcGUpKSkge1xuJiM0MztcdFx0cmVhZF91bmxvY2tfYmgoXHUwMDI2bnQtXHUwMDNlY2x1c3Rlcl9zY29wZV9sb2NrKTtcbiYjNDM7XHRcdHJldHVybiAxO1xuJiM0MztcdH1cbiYjNDM7XHRyZWFkX3VubG9ja19iaChcdTAwMjZudC1cdTAwM2VjbHVzdGVyX3Njb3BlX2xvY2spO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gdGlwY19uYW1lZF9kaXN0cmlidXRlKG5ldCwgZG5vZGUpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogdGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGUgLSBkaXN0cmlidXRlIGFsbCBwdWJsaWNhdGlvbnMgdG8gc3BlY2lmaWVkIG5vZGVcbiYjNDM7ICogQG5ldDogdGhlIGFzc29jaWF0ZWQgbmV0d29yayBuYW1lc3BhY2VcbiYjNDM7ICogQGRub2RlOiBkZXN0aW5hdGlvbiBub2RlXG4mIzQzOyAqL1xuJiM0MztpbnQgdGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbmFtZV90YWJsZSAqbnQgPSB0aXBjX25hbWVfdGFibGUobmV0KTtcbiYjNDM7XHRib29sIHJlaW5zZXJ0ID0gZmFsc2U7XG4mIzQzO1xuJiM0MztcdHJlYWRfbG9ja19iaChcdTAwMjZudC1cdTAwM2VjbHVzdGVyX3Njb3BlX2xvY2spO1xuJiM0MztcdGlmICh1bmxpa2VseShsaXN0X2VtcHR5KFx1MDAyNm50LVx1MDAzZWNsdXN0ZXJfc2NvcGUpKSlcbiYjNDM7XHRcdHJlaW5zZXJ0ID0gdHJ1ZTtcbiYjNDM7XHRyZWFkX3VubG9ja19iaChcdTAwMjZudC1cdTAwM2VjbHVzdGVyX3Njb3BlX2xvY2spO1xuJiM0MztcdC8qIHRpcGNfbmV0X2ZpbmFsaXplKCkgLS0tXHUwMDNlIHRpcGNfbmFtZXRibF9wdWJsaXNoKCkgaGFzIGZhaWxlZCB0byBpbnNlcnRcbiYjNDM7XHQgKiBub2RlIHNlbGYgYWRkcmVzcyBwdWJsaWNhdGlvbiBpbnRvIG50LVx1MDAzZWNsdXN0ZXJfc2NvcGUgZHVlIHRvIG1lbW9yeVxuJiM0MztcdCAqIGFsbG9jYXRpb24gZmFpbHVyZS4gU28sIHJlaW5zZXJ0IHRoaXMgcHVibGljYXRpb24uXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHJlaW5zZXJ0KSB7XG4mIzQzO1x0XHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobmV0KTtcbiYjNDM7XHRcdHN0cnVjdCB0aXBjX3NvY2tldF9hZGRyIHNrO1xuJiM0MztcdFx0c3RydWN0IHRpcGNfdWFkZHIgdWE7XG4mIzQzO1xuJiM0MztcdFx0c2sucmVmID0gMDtcbiYjNDM7XHRcdHNrLm5vZGUgPSB0bi1cdTAwM2Vub2RlX2FkZHI7XG4mIzQzO1x0XHR0aXBjX3VhZGRyKFx1MDAyNnVhLCBUSVBDX1NFUlZJQ0VfUkFOR0UsIFRJUENfQ0xVU1RFUl9TQ09QRSxcbiYjNDM7XHRcdFx0ICAgVElQQ19OT0RFX1NUQVRFLCB0bi1cdTAwM2Vub2RlX2FkZHIsIHRuLVx1MDAzZW5vZGVfYWRkcik7XG4mIzQzO1x0XHRpZiAoIXRpcGNfbmFtZXRibF9wdWJsaXNoKG5ldCwgXHUwMDI2dWEsIFx1MDAyNnNrLCB0bi1cdTAwM2Vub2RlX2FkZHIpKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVOT0JVRlM7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gdGlwY19uYW1lZF9kaXN0cmlidXRlKG5ldCwgZG5vZGUpO1xuIH1cbiBcbiAvKipcbmRpZmYgLS1naXQgYS9uZXQvdGlwYy9uYW1lX2Rpc3RyLmggYi9uZXQvdGlwYy9uYW1lX2Rpc3RyLmhcbmluZGV4IGM2NzdmNmYwODJkZmIuLmNhZGY0ZThjM2U2NmMgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9uYW1lX2Rpc3RyLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC90aXBjL25hbWVfZGlzdHIuaFxuQEAgLTY5LDcgJiM0Mzs2OSw4IEBAIHN0cnVjdCBkaXN0cl9pdGVtIHtcbiBcbiBzdHJ1Y3Qgc2tfYnVmZiAqdGlwY19uYW1lZF9wdWJsaXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHB1YmxpY2F0aW9uICpwdWJsKTtcbiBzdHJ1Y3Qgc2tfYnVmZiAqdGlwY19uYW1lZF93aXRoZHJhdyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBwdWJsaWNhdGlvbiAqcHVibCk7XG4tdm9pZCB0aXBjX25hbWVkX25vZGVfdXAoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUsIHUxNiBjYXBhYmlsaXRpZXMpO1xuJiM0MztpbnQgdGlwY19uYW1lZF9ub2RlX3VwKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlLCB1MTYgY2FwYWJpbGl0aWVzKTtcbiYjNDM7aW50IHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlKTtcbiB2b2lkIHRpcGNfbmFtZWRfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqbmFtZWRxLFxuIFx0XHQgICAgdTE2ICpyY3Zfbnh0LCBib29sICpvcGVuKTtcbiB2b2lkIHRpcGNfbmFtZWRfcmVpbml0KHN0cnVjdCBuZXQgKm5ldCk7XG5kaWZmIC0tZ2l0IGEvbmV0L3RpcGMvbmFtZV90YWJsZS5jIGIvbmV0L3RpcGMvbmFtZV90YWJsZS5jXG5pbmRleCAyNTNjNzJkMTM2NmViLi42ZmRhMzZhYjE3NjY5IDEwMDY0NFxuLS0tIGEvbmV0L3RpcGMvbmFtZV90YWJsZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvdGlwYy9uYW1lX3RhYmxlLmNcbkBAIC03NjMsMjEgJiM0Mzs3NjMsNDAgQEAgc3RydWN0IHB1YmxpY2F0aW9uICp0aXBjX25hbWV0YmxfcHVibGlzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX3VhZGRyICp1YSxcbiBcdFx0XHRcdFx0IHN0cnVjdCB0aXBjX3NvY2tldF9hZGRyICpzaywgdTMyIGtleSlcbiB7XG4gXHRzdHJ1Y3QgbmFtZV90YWJsZSAqbnQgPSB0aXBjX25hbWVfdGFibGUobmV0KTtcbiYjNDM7XHR1MzIgbWF4X3VzZXJfcHViID0gVElQQ19NQVhfUFVCTCAtIDE7XG4gXHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobmV0KTtcbiBcdHN0cnVjdCBwdWJsaWNhdGlvbiAqcCA9IE5VTEw7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gTlVMTDtcbiYjNDM7XHRib29sIHByb3RvY29sX3R5cGUgPSBmYWxzZTtcbiBcdHUzMiByY19kZXN0cztcbiBcbiYjNDM7XHRpZiAodWEtXHUwMDNlc3IudHlwZSA9PSBUSVBDX05PREVfU1RBVEUgfHwgdWEtXHUwMDNlc3IudHlwZSA9PSBUSVBDX0xJTktfU1RBVEUgfHxcbiYjNDM7XHQgICAgdWEtXHUwMDNlc3IudHlwZSA9PSBUSVBDX1RPUF9TUlYpXG4mIzQzO1x0XHRwcm90b2NvbF90eXBlID0gdHJ1ZTtcbiYjNDM7XG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2dG4tXHUwMDNlbmFtZXRibF9sb2NrKTtcbiYjNDM7XHRpZiAocHJvdG9jb2xfdHlwZSlcbiYjNDM7XHRcdGdvdG8gaW5zZXJ0O1xuIFxuLVx0aWYgKG50LVx1MDAzZWxvY2FsX3B1YmxfY291bnQgXHUwMDNlPSBUSVBDX01BWF9QVUJMKSB7XG4tXHRcdHByX3dhcm4oXCYjMzQ7QmluZCBmYWlsZWQsIG1heCBsaW1pdCAldSByZWFjaGVkXFxuXCYjMzQ7LCBUSVBDX01BWF9QVUJMKTtcbiYjNDM7XHQvKiBSZXNlcnZlIG9uZSBlbnRyeSBmb3Igbm9kZSBzdGF0ZSBzZXJ2aWNlIHR5cGUgYmVjYXVzZSBpdCBoYXMgY2x1c3RlclxuJiM0MztcdCAqIHNjb3BlIGFuZCBpdCBpcyBkaXN0cmlidXRlZCBpbiBidWxrLiBTbywgdGhlIG1heGltdW0gbnVtYmVyIG9mIHVzZXImIzM5O3NcbiYjNDM7XHQgKiBwdWJsaWNhdGlvbnMgaXMgKFRJUENfTUFYX1BVQkwgLSAxKS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAobnQtXHUwMDNlbG9jYWxfcHVibF9jb3VudCBcdTAwM2U9IG1heF91c2VyX3B1Yikge1xuJiM0MztcdFx0cHJfd2FybihcJiMzNDtCaW5kIGZhaWxlZCwgbWF4IGxpbWl0ICV1IHJlYWNoZWRcXG5cJiMzNDssIG1heF91c2VyX3B1Yik7XG4gXHRcdGdvdG8gZXhpdDtcbiBcdH1cbiBcbiYjNDM7aW5zZXJ0OlxuIFx0cCA9IHRpcGNfbmFtZXRibF9pbnNlcnRfcHVibChuZXQsIHVhLCBzaywga2V5KTtcbiBcdGlmIChwKSB7XG4tXHRcdG50LVx1MDAzZWxvY2FsX3B1YmxfY291bnQmIzQzOyYjNDM7O1xuJiM0MztcdFx0LyogTm90IGNvdW50IG5vZGUgc3RhdGUsIGxpbmsgc3RhdGUgYW5kIHRvcG9sb2d5IHNlcnZlciB0eXBlc1xuJiM0MztcdFx0ICogc28gdGhhdCBtYXhpbXVtIG50LVx1MDAzZWxvY2FsX3B1YmxfY291bnQgZG9lcyBub3QgcHJldmVudFxuJiM0MztcdFx0ICogcHJvdG9jb2wgc2VydmljZSB0eXBlcyBmcm9tIGJlaW5nIGluc2VydGVkIGludG8gdGhlIG5hbWVcbiYjNDM7XHRcdCAqIHRhYmxlLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRpZiAoIXByb3RvY29sX3R5cGUpXG4mIzQzO1x0XHRcdG50LVx1MDAzZWxvY2FsX3B1YmxfY291bnQmIzQzOyYjNDM7O1xuIFx0XHRza2IgPSB0aXBjX25hbWVkX3B1Ymxpc2gobmV0LCBwKTtcbiBcdH1cbiBcdHJjX2Rlc3RzID0gbnQtXHUwMDNlcmNfZGVzdHM7XG5AQCAtODEwLDcgJiM0Mzs4MjksMTAgQEAgdm9pZCB0aXBjX25hbWV0Ymxfd2l0aGRyYXcoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGlwY191YWRkciAqdWEsXG4gXG4gXHRwID0gdGlwY19uYW1ldGJsX3JlbW92ZV9wdWJsKG5ldCwgdWEsIHNrLCBrZXkpO1xuIFx0aWYgKHApIHtcbi1cdFx0bnQtXHUwMDNlbG9jYWxfcHVibF9jb3VudC0tO1xuJiM0MztcdFx0aWYgKHAtXHUwMDNlc3IudHlwZSAhPSBUSVBDX05PREVfU1RBVEUgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgcC1cdTAwM2Vzci50eXBlICE9IFRJUENfTElOS19TVEFURSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICBwLVx1MDAzZXNyLnR5cGUgIT0gVElQQ19UT1BfU1JWKVxuJiM0MztcdFx0XHRudC1cdTAwM2Vsb2NhbF9wdWJsX2NvdW50LS07XG4gXHRcdHNrYiA9IHRpcGNfbmFtZWRfd2l0aGRyYXcobmV0LCBwKTtcbiBcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZwLVx1MDAzZWJpbmRpbmdfc29jayk7XG4gXHRcdGtmcmVlX3JjdShwLCByY3UpO1xuZGlmZiAtLWdpdCBhL25ldC90aXBjL25ldC5jIGIvbmV0L3RpcGMvbmV0LmNcbmluZGV4IDdlNjVkMGIwYzRhOGQuLjc1YWM0ZTNjZDAxYTggMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9uZXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvbmV0LmNcbkBAIC0xMzksNiAmIzQzOzEzOSwxMSBAQCBzdGF0aWMgdm9pZCB0aXBjX25ldF9maW5hbGl6ZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBhZGRyKVxuIFx0dGlwY19za19yZWluaXQobmV0KTtcbiBcdHRpcGNfbW9uX3JlaW5pdF9zZWxmKG5ldCk7XG4gXHR0aXBjX25hbWV0YmxfcHVibGlzaChuZXQsIFx1MDAyNnVhLCBcdTAwMjZzaywgYWRkcik7XG4mIzQzO1x0YXRvbWljX3NldChcdTAwMjZ0bi1cdTAwM2VmaW5hbGl6ZWQsIDEpO1xuJiM0MztcdC8qIFdha2UgdXAgbm9kZXMgd2FpdGluZyBmb3IgZGlzdHJpYnV0aW5nIGJ1bGsgb2YgcHVibGljYXRpb25zXG4mIzQzO1x0ICogaWYgYXBwbGljYWJsZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHR0aXBjX25vZGVfd2FrZXVwKG5ldCk7XG4gfVxuIFxuIHZvaWQgdGlwY19uZXRfZmluYWxpemVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kaWZmIC0tZ2l0IGEvbmV0L3RpcGMvbm9kZS5jIGIvbmV0L3RpcGMvbm9kZS5jXG5pbmRleCA4ZTRlZjI2MzBhZTRmLi4zMzQ4MTJiZGFiNzY1IDEwMDY0NFxuLS0tIGEvbmV0L3RpcGMvbm9kZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvdGlwYy9ub2RlLmNcbkBAIC0xMTEsNiAmIzQzOzExMSw5IEBAIHN0cnVjdCB0aXBjX2JjbGlua19lbnRyeSB7XG4gICogQHBlZXJfbmV0OiBwZWVyJiMzOTtzIG5ldCBuYW1lc3BhY2VcbiAgKiBAcGVlcl9oYXNoX21peDogaGFzaCBmb3IgdGhpcyBwZWVyIChGSVhNRSlcbiAgKiBAY3J5cHRvX3J4OiBSWCBjcnlwdG8gaGFuZGxlclxuJiM0MzsgKiBAd29yazogd29yayBpdGVtIGZvciBidWxrIGRpc3RyaWJ1dGlvbiBvZiBjbHVzdGVyIHNjb3BlIHB1YmxpY2F0aW9uc1xuJiM0MzsgKiBAd29ya19zY2hlZHVsZWQ6IGZsYWcgdG8gaW5kaWNhdGUgdGhlIHdvcmsgaGFzIGJlZW4gc2NoZWR1bGVkXG4mIzQzOyAqIEBmaW5hbGl6ZWQ6IGZsYWcgdG8gd2FrZSB1cCBzY2hlZHVsZWQgd29ya1xuICAqL1xuIHN0cnVjdCB0aXBjX25vZGUge1xuIFx0dTMyIGFkZHI7XG5AQCAtMTQ1LDYgJiM0MzsxNDgsOSBAQCBzdHJ1Y3QgdGlwY19ub2RlIHtcbiAjaWZkZWYgQ09ORklHX1RJUENfQ1JZUFRPXG4gXHRzdHJ1Y3QgdGlwY19jcnlwdG8gKmNyeXB0b19yeDtcbiAjZW5kaWZcbiYjNDM7XHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yaztcbiYjNDM7XHRhdG9taWNfdCB3b3JrX3NjaGVkdWxlZDtcbiYjNDM7XHRhdG9taWNfdCBmaW5hbGl6ZWQ7XG4gfTtcbiBcbiAvKiBOb2RlIEZTTSBzdGF0ZXMgYW5kIGV2ZW50czpcbkBAIC0zOTMsNiAmIzQzOzM5OSw1OSBAQCBzdGF0aWMgdm9pZCB0aXBjX25vZGVfd3JpdGVfdW5sb2NrX2Zhc3Qoc3RydWN0IHRpcGNfbm9kZSAqbilcbiBcdHdyaXRlX3VubG9ja19iaChcdTAwMjZuLVx1MDAzZWxvY2spO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgdGlwY19ub2RlX2Rvd24oc3RydWN0IHRpcGNfbm9kZSAqbilcbiYjNDM7e1xuJiM0MztcdGludCBiZWFyZXJfaWQ7XG4mIzQzO1xuJiM0MztcdGZvciAoYmVhcmVyX2lkID0gMDsgYmVhcmVyX2lkIFx1MDAzYyBNQVhfQkVBUkVSUzsgYmVhcmVyX2lkJiM0MzsmIzQzOylcbiYjNDM7XHRcdHRpcGNfbm9kZV9saW5rX2Rvd24obiwgYmVhcmVyX2lkLCBmYWxzZSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHRpcGNfbm9kZV9kaXN0X2J1bGsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHRpcGNfbm9kZSAqbm9kZSA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdGlwY19ub2RlLCB3b3JrKTtcbiYjNDM7XHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobm9kZS1cdTAwM2VuZXQpO1xuJiM0MztcbiYjNDM7XHR3YWl0X3Zhcl9ldmVudChcdTAwMjZub2RlLVx1MDAzZWZpbmFsaXplZCwgYXRvbWljX3JlYWQoXHUwMDI2bm9kZS1cdTAwM2VmaW5hbGl6ZWQpKTtcbiYjNDM7XG4mIzQzO1x0Lyogbm9kZSBpcyBkb3duICovXG4mIzQzO1x0aWYgKCFhdG9taWNfcmVhZChcdTAwMjZub2RlLVx1MDAzZXdvcmtfc2NoZWR1bGVkKSlcbiYjNDM7XHRcdGdvdG8gZXhpdDtcbiYjNDM7XG4mIzQzO1x0LyogU3RvcCB3YWtpbmcgdXAgd29yayBpbiB0aXBjX25vZGVfdGltZW91dCgpICovXG4mIzQzO1x0YXRvbWljX3NldChcdTAwMjZub2RlLVx1MDAzZXdvcmtfc2NoZWR1bGVkLCAwKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlKG5vZGUtXHUwMDNlbmV0LCBub2RlLVx1MDAzZWFkZHIpIFx1MDAzYyAwKVxuJiM0MztcdFx0dGlwY19ub2RlX2Rvd24obm9kZSk7XG4mIzQzO1xuJiM0MztleGl0OlxuJiM0MztcdGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KFx1MDAyNnRuLVx1MDAzZW5vZGVfd3FfY291bnQpKVxuJiM0MztcdFx0d2FrZV91cF92YXIoXHUwMDI2dG4tXHUwMDNlbm9kZV93cV9jb3VudCk7XG4mIzQzO1xuJiM0MztcdHRpcGNfbm9kZV9wdXQobm9kZSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHRpcGNfbm9kZV9jYW5jZWxfd29yayhzdHJ1Y3QgdGlwY19ub2RlICpub2RlKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGF0b21pY19yZWFkKFx1MDAyNm5vZGUtXHUwMDNld29ya19zY2hlZHVsZWQpKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobm9kZS1cdTAwM2VuZXQpO1xuJiM0MztcbiYjNDM7XHRcdC8qIFdha2UgdXAgc2NoZWR1bGVkIHdvcmsgaWYgaXQgaXMgd2FpdGluZy4gKi9cbiYjNDM7XHRcdGlmICghYXRvbWljX3JlYWQoXHUwMDI2bm9kZS1cdTAwM2VmaW5hbGl6ZWQpKSB7XG4mIzQzO1x0XHRcdGF0b21pY19zZXQoXHUwMDI2bm9kZS1cdTAwM2V3b3JrX3NjaGVkdWxlZCwgMCk7XG4mIzQzO1x0XHRcdGF0b21pY19zZXQoXHUwMDI2bm9kZS1cdTAwM2VmaW5hbGl6ZWQsIDEpO1xuJiM0MztcdFx0XHR3YWtlX3VwX3ZhcihcdTAwMjZub2RlLVx1MDAzZWZpbmFsaXplZCk7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0LyogV29yayBpcyBwZW5kaW5nICovXG4mIzQzO1x0XHRpZiAoY2FuY2VsX3dvcmsoXHUwMDI2bm9kZS1cdTAwM2V3b3JrKSkge1xuJiM0MztcdFx0XHRpZiAoYXRvbWljX2RlY19hbmRfdGVzdChcdTAwMjZ0bi1cdTAwM2Vub2RlX3dxX2NvdW50KSlcbiYjNDM7XHRcdFx0XHR3YWtlX3VwX3ZhcihcdTAwMjZ0bi1cdTAwM2Vub2RlX3dxX2NvdW50KTtcbiYjNDM7XHRcdFx0dGlwY19ub2RlX3B1dChub2RlKTtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgdGlwY19ub2RlX3dyaXRlX3VubG9jayhzdHJ1Y3QgdGlwY19ub2RlICpuKVxuIFx0X19yZWxlYXNlcyhuLVx1MDAzZWxvY2spXG4ge1xuQEAgLTQyMSwxMSAmIzQzOzQ4MCwzMiBAQCBzdGF0aWMgdm9pZCB0aXBjX25vZGVfd3JpdGVfdW5sb2NrKHN0cnVjdCB0aXBjX25vZGUgKm4pXG4gXG4gXHR3cml0ZV91bmxvY2tfYmgoXHUwMDI2bi1cdTAwM2Vsb2NrKTtcbiBcbi1cdGlmIChmbGFncyBcdTAwMjYgVElQQ19OT1RJRllfTk9ERV9ET1dOKVxuJiM0MztcdGlmIChmbGFncyBcdTAwMjYgVElQQ19OT1RJRllfTk9ERV9ET1dOKSB7XG4gXHRcdHRpcGNfcHVibF9ub3RpZnkobmV0LCBwdWJsX2xpc3QsIG5vZGUsIG4tXHUwMDNlY2FwYWJpbGl0aWVzKTtcbi1cbi1cdGlmIChmbGFncyBcdTAwMjYgVElQQ19OT1RJRllfTk9ERV9VUClcbi1cdFx0dGlwY19uYW1lZF9ub2RlX3VwKG5ldCwgbm9kZSwgbi1cdTAwM2VjYXBhYmlsaXRpZXMpO1xuJiM0MztcdFx0dGlwY19ub2RlX2NhbmNlbF93b3JrKG4pO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKGZsYWdzIFx1MDAyNiBUSVBDX05PVElGWV9OT0RFX1VQKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobmV0KTtcbiYjNDM7XHRcdGludCByYyA9IDA7XG4mIzQzO1xuJiM0MztcdFx0cmMgPSB0aXBjX25hbWVkX25vZGVfdXAobmV0LCBub2RlLCBuLVx1MDAzZWNhcGFiaWxpdGllcyk7XG4mIzQzO1x0XHQvKiBEZWZlciBidWxrIGRpc3RyaWJ1dGlvbiB0byB3b3JrIHF1ZXVlICovXG4mIzQzO1x0XHRpZiAocmMgXHUwMDNlIDApIHtcbiYjNDM7XHRcdFx0YXRvbWljX3NldChcdTAwMjZuLVx1MDAzZXdvcmtfc2NoZWR1bGVkLCAxKTtcbiYjNDM7XHRcdFx0YXRvbWljX2luYyhcdTAwMjZ0bi1cdTAwM2Vub2RlX3dxX2NvdW50KTtcbiYjNDM7XHRcdFx0dGlwY19ub2RlX2dldChuKTtcbiYjNDM7XHRcdFx0aWYgKCFzY2hlZHVsZV93b3JrKFx1MDAyNm4tXHUwMDNld29yaykpIHtcbiYjNDM7XHRcdFx0XHRhdG9taWNfZGVjKFx1MDAyNnRuLVx1MDAzZW5vZGVfd3FfY291bnQpO1xuJiM0MztcdFx0XHRcdHRpcGNfbm9kZV9wdXQobik7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdH0gZWxzZSBpZiAocmMgXHUwMDNjIDApIHtcbiYjNDM7XHRcdFx0LyogQnJpbmcgdGhlIG5vZGUgZG93biB0byBzdGFydCBvdmVyIGJ1bGsgZGlzdHJpYnV0aW9uXG4mIzQzO1x0XHRcdCAqIHdoZW4gdGhlIGZpcnN0IGxpbmsgaXMgdXAgYWdhaW4uXG4mIzQzO1x0XHRcdCAqL1xuJiM0MztcdFx0XHR0aXBjX25vZGVfZG93bihuKTtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4gXG4gXHRpZiAoZmxhZ3MgXHUwMDI2IFRJUENfTk9USUZZX0xJTktfVVApIHtcbiBcdFx0dGlwY19tb25fcGVlcl91cChuZXQsIG5vZGUsIGJlYXJlcl9pZCk7XG5AQCAtNTY0LDYgJiM0Mzs2NDQsOSBAQCBzdHJ1Y3QgdGlwY19ub2RlICp0aXBjX25vZGVfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGFkZHIsIHU4ICpwZWVyX2lkLFxuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bi1cdTAwM2VsaXN0KTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNm4tXHUwMDNlcHVibF9saXN0KTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNm4tXHUwMDNlY29ubl9za3MpO1xuJiM0MztcdElOSVRfV09SSyhcdTAwMjZuLVx1MDAzZXdvcmssIHRpcGNfbm9kZV9kaXN0X2J1bGspO1xuJiM0MztcdGF0b21pY19zZXQoXHUwMDI2bi1cdTAwM2V3b3JrX3NjaGVkdWxlZCwgMCk7XG4mIzQzO1x0YXRvbWljX3NldChcdTAwMjZuLVx1MDAzZWZpbmFsaXplZCwgMCk7XG4gXHRza2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNm4tXHUwMDNlYmNfZW50cnkubmFtZWRxKTtcbiBcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2bi1cdTAwM2ViY19lbnRyeS5pbnB1dHExKTtcbiBcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZuLVx1MDAzZWJjX2VudHJ5LmFycnZxKTtcbkBAIC02NTMsNiAmIzQzOzczNiwyMSBAQCB2b2lkIHRpcGNfbm9kZV9zdG9wKHN0cnVjdCBuZXQgKm5ldClcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnRuLVx1MDAzZW5vZGVfbGlzdF9sb2NrKTtcbiB9XG4gXG4mIzQzO3ZvaWQgdGlwY19ub2RlX3dha2V1cChzdHJ1Y3QgbmV0ICpuZXQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobmV0KTtcbiYjNDM7XHRzdHJ1Y3QgdGlwY19ub2RlICpub2RlO1xuJiM0MztcbiYjNDM7XHRyY3VfcmVhZF9sb2NrKCk7XG4mIzQzO1x0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3Uobm9kZSwgXHUwMDI2dG4tXHUwMDNlbm9kZV9saXN0LCBsaXN0KSB7XG4mIzQzO1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2bm9kZS1cdTAwM2V3b3JrX3NjaGVkdWxlZCkpIHtcbiYjNDM7XHRcdFx0YXRvbWljX3NldChcdTAwMjZub2RlLVx1MDAzZWZpbmFsaXplZCwgMSk7XG4mIzQzO1x0XHRcdHdha2VfdXBfdmFyKFx1MDAyNm5vZGUtXHUwMDNlZmluYWxpemVkKTtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO1x0cmN1X3JlYWRfdW5sb2NrKCk7XG4mIzQzO31cbiYjNDM7XG4gdm9pZCB0aXBjX25vZGVfc3Vic2NyaWJlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGxpc3RfaGVhZCAqc3Vic2NyLCB1MzIgYWRkcilcbiB7XG4gXHRzdHJ1Y3QgdGlwY19ub2RlICpuO1xuQEAgLTgwMSw2ICYjNDM7ODk5LDcgQEAgc3RhdGljIGJvb2wgdGlwY19ub2RlX2NsZWFudXAoc3RydWN0IHRpcGNfbm9kZSAqcGVlcilcbiBzdGF0aWMgdm9pZCB0aXBjX25vZGVfdGltZW91dChzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbiB7XG4gXHRzdHJ1Y3QgdGlwY19ub2RlICpuID0gdGltZXJfY29udGFpbmVyX29mKG4sIHQsIHRpbWVyKTtcbiYjNDM7XHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobi1cdTAwM2VuZXQpO1xuIFx0c3RydWN0IHRpcGNfbGlua19lbnRyeSAqbGU7XG4gXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHhtaXRxO1xuIFx0aW50IHJlbWFpbnMgPSBuLVx1MDAzZWxpbmtfY250O1xuQEAgLTgxNCw2ICYjNDM7OTEzLDExIEBAIHN0YXRpYyB2b2lkIHRpcGNfbm9kZV90aW1lb3V0KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4mIzQzO1x0aWYgKGF0b21pY19yZWFkKFx1MDAyNnRuLVx1MDAzZWZpbmFsaXplZCkgXHUwMDI2XHUwMDI2IGF0b21pY19yZWFkKFx1MDAyNm4tXHUwMDNld29ya19zY2hlZHVsZWQpKSB7XG4mIzQzO1x0XHRhdG9taWNfc2V0KFx1MDAyNm4tXHUwMDNlZmluYWxpemVkLCAxKTtcbiYjNDM7XHRcdHdha2VfdXBfdmFyKFx1MDAyNm4tXHUwMDNlZmluYWxpemVkKTtcbiYjNDM7XHR9XG4mIzQzO1xuICNpZmRlZiBDT05GSUdfVElQQ19DUllQVE9cbiBcdC8qIFRha2UgYW55IGNyeXB0byBrZXkgcmVsYXRlZCBhY3Rpb25zIGZpcnN0ICovXG4gXHR0aXBjX2NyeXB0b190aW1lb3V0KG4tXHUwMDNlY3J5cHRvX3J4KTtcbmRpZmYgLS1naXQgYS9uZXQvdGlwYy9ub2RlLmggYi9uZXQvdGlwYy9ub2RlLmhcbmluZGV4IDE1NGE1YmJiMGQyOWQuLmM3YmMzYmMwNTMyODUgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9ub2RlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC90aXBjL25vZGUuaFxuQEAgLTc1LDYgJiM0Mzs3NSw3IEBAIGVudW0ge1xuICNkZWZpbmUgSU5WQUxJRF9CRUFSRVJfSUQgLTFcbiBcbiB2b2lkIHRpcGNfbm9kZV9zdG9wKHN0cnVjdCBuZXQgKm5ldCk7XG4mIzQzO3ZvaWQgdGlwY19ub2RlX3dha2V1cChzdHJ1Y3QgbmV0ICpuZXQpO1xuIGJvb2wgdGlwY19ub2RlX2dldF9pZChzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBhZGRyLCB1OCAqaWQpO1xuIHUzMiB0aXBjX25vZGVfZ2V0X2FkZHIoc3RydWN0IHRpcGNfbm9kZSAqbm9kZSk7XG4gY2hhciAqdGlwY19ub2RlX2dldF9pZF9zdHIoc3RydWN0IHRpcGNfbm9kZSAqbm9kZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTk6Mjk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0aXBjX25hbWVkX25vZGVfdXAmIzM0OywKICAgICYjMzQ7dGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGUmIzM0OywKICAgICYjMzQ7dGlwY19uYW1ldGJsX3B1Ymxpc2gmIzM0OywKICAgICYjMzQ7dGlwY19uYW1ldGJsX3dpdGhkcmF3JiMzNDssCiAgICAmIzM0O3RpcGNfbm9kZV93YWtldXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHdvcmtxdWV1ZSBmb3IgYnVsayBkaXN0cmlidXRpb24gb2YgY2x1c3RlciBzY29wZSBwdWJsaWNhdGlvbnMgaW4gVElQQywgbW9kaWZ5aW5nIGNvcmUgcHJvdG9jb2wgbG9naWMgc3VjaCBhcyBub2RlIHN0YXRlIG1hbmFnZW1lbnQgYW5kIG5hbWUgdGFibGUgcHVibGlzaGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBUSVBDIHN1YnN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDllMWZhZjcyMTE2ODc0YjM2MWJjZGRjNjg0NDhkYjA2MTI3OWNjMzAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzMSAxOToyOTozMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC90aXBjL2NvcmUuYyBiL25ldC90aXBjL2NvcmUuYwppbmRleCAzMTU5NzVjM2JlODE4Li4xZTFmZTc4Y2M0ZWU0IDEwMDY0NAotLS0gYS9uZXQvdGlwYy9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvY29yZS5jCkBAIC02MSw2ICYjNDM7NjEsOCBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgdGlwY19pbml0X25ldChzdHJ1Y3QgbmV0ICpuZXQpCiAJdG4tJmd0O3RyaWFsX2FkZHIgPSAwOwogCXRuLSZndDthZGRyX3RyaWFsX2VuZCA9IDA7CiAJdG4tJmd0O2NhcGFiaWxpdGllcyA9IFRJUENfTk9ERV9DQVBBQklMSVRJRVM7CiYjNDM7CWF0b21pY19zZXQoJmFtcDt0bi0mZ3Q7bm9kZV93cV9jb3VudCwgMCk7CiYjNDM7CWF0b21pY19zZXQoJmFtcDt0bi0mZ3Q7ZmluYWxpemVkLCAwKTsKIAlJTklUX1dPUksoJmFtcDt0bi0mZ3Q7d29yaywgdGlwY19uZXRfZmluYWxpemVfd29yayk7CiAJbWVtc2V0KHRuLSZndDtub2RlX2lkLCAwLCBzaXplb2YodG4tJmd0O25vZGVfaWQpKTsKIAltZW1zZXQodG4tJmd0O25vZGVfaWRfc3RyaW5nLCAwLCBzaXplb2YodG4tJmd0O25vZGVfaWRfc3RyaW5nKSk7CkBAIC0xMTksNiAmIzQzOzEyMSw3IEBAIHN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgdGlwY19leGl0X25ldChzdHJ1Y3QgbmV0ICpuZXQpCiAjaWZkZWYgQ09ORklHX1RJUENfQ1JZUFRPCiAJdGlwY19jcnlwdG9fc3RvcCgmYW1wO3RpcGNfbmV0KG5ldCktJmd0O2NyeXB0b190eCk7CiAjZW5kaWYKJiM0MzsJd2FpdF92YXJfZXZlbnQoJmFtcDt0bi0mZ3Q7bm9kZV93cV9jb3VudCwgIWF0b21pY19yZWFkKCZhbXA7dG4tJmd0O25vZGVfd3FfY291bnQpKTsKIAl3YWl0X3Zhcl9ldmVudCgmYW1wO3RuLSZndDt3cV9jb3VudCwgYXRvbWljX3JlYWQoJmFtcDt0bi0mZ3Q7d3FfY291bnQpID09IDApOwogfQogCmRpZmYgLS1naXQgYS9uZXQvdGlwYy9jb3JlLmggYi9uZXQvdGlwYy9jb3JlLmgKaW5kZXggOWNlNWY5ZmY2Y2MwMy4uYmUzMzVjZTgzMzg5YSAxMDA2NDQKLS0tIGEvbmV0L3RpcGMvY29yZS5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC90aXBjL2NvcmUuaApAQCAtMTQ1LDYgJiM0MzsxNDUsMTAgQEAgc3RydWN0IHRpcGNfbmV0IHsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKIAkvKiBUaGUgbnVtYmVycyBvZiB3b3JrIHF1ZXVlcyBpbiBzY2hlZHVsZSAqLwogCWF0b21pY190IHdxX2NvdW50OwomIzQzOwkvKiBUaGUgbnVtYmVycyBvZiB3b3JrcyBvZiBjcmVhdGVkIG5vZGVzIGluIHNjaGVkdWxlICovCiYjNDM7CWF0b21pY190IG5vZGVfd3FfY291bnQ7CiYjNDM7CS8qIGZsYWcgdG8gd2FrZSB1cCBzY2hlZHVsZWQgd29ya3Mgb2YgY3JlYXRlZCBub2RlcyAqLwomIzQzOwlhdG9taWNfdCBmaW5hbGl6ZWQ7CiB9OwogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB0aXBjX25ldCAqdGlwY19uZXQoc3RydWN0IG5ldCAqbmV0KQpkaWZmIC0tZ2l0IGEvbmV0L3RpcGMvbmFtZV9kaXN0ci5jIGIvbmV0L3RpcGMvbmFtZV9kaXN0ci5jCmluZGV4IGJhNGY0OTA2ZTEzYjcuLmM4ZTI4NDk3MzU2ZWYgMTAwNjQ0Ci0tLSBhL25ldC90aXBjL25hbWVfZGlzdHIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvdGlwYy9uYW1lX2Rpc3RyLmMKQEAgLTE0Nyw4ICYjNDM7MTQ3LDggQEAgc3RydWN0IHNrX2J1ZmYgKnRpcGNfbmFtZWRfd2l0aGRyYXcoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgcHVibGljYXRpb24gKnApCiAgKiBAcGxzOiBsaW5rZWQgbGlzdCBvZiBwdWJsaWNhdGlvbiBpdGVtcyB0byBiZSBwYWNrZWQgaW50byBidWZmZXIgY2hhaW4KICAqIEBzZXFubzogc2VxdWVuY2UgbnVtYmVyIGZvciB0aGlzIG1lc3NhZ2UKICAqLwotc3RhdGljIHZvaWQgbmFtZWRfZGlzdHJpYnV0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsCi0JCQkgICAgIHUzMiBkbm9kZSwgc3RydWN0IGxpc3RfaGVhZCAqcGxzLCB1MTYgc2Vxbm8pCiYjNDM7c3RhdGljIGludCBuYW1lZF9kaXN0cmlidXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCwKJiM0MzsJCQkgICAgdTMyIGRub2RlLCBzdHJ1Y3QgbGlzdF9oZWFkICpwbHMsIHUxNiBzZXFubykKIHsKIAlzdHJ1Y3QgcHVibGljYXRpb24gKnB1Ymw7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYiA9IE5VTEw7CkBAIC0xNjQsOCAmIzQzOzE2NCw5IEBAIHN0YXRpYyB2b2lkIG5hbWVkX2Rpc3RyaWJ1dGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0LAogCQkJc2tiID0gbmFtZWRfcHJlcGFyZV9idWYobmV0LCBQVUJMSUNBVElPTiwgbXNnX3JlbSwKIAkJCQkJCWRub2RlKTsKIAkJCWlmICghc2tiKSB7CiYjNDM7CQkJCV9fc2tiX3F1ZXVlX3B1cmdlKGxpc3QpOwogCQkJCXByX3dhcm4oJiMzNDtCdWxrIHB1YmxpY2F0aW9uIGZhaWx1cmVcbiYjMzQ7KTsKLQkJCQlyZXR1cm47CiYjNDM7CQkJCXJldHVybiAxOwogCQkJfQogCQkJaGRyID0gYnVmX21zZyhza2IpOwogCQkJbXNnX3NldF9iY19hY2tfaW52YWxpZChoZHIsIHRydWUpOwpAQCAtMTk1LDE1ICYjNDM7MTk2LDE2IEBAIHN0YXRpYyB2b2lkIG5hbWVkX2Rpc3RyaWJ1dGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0LAogCWhkciA9IGJ1Zl9tc2coc2tiX3BlZWtfdGFpbChsaXN0KSk7CiAJbXNnX3NldF9sYXN0X2J1bGsoaGRyKTsKIAltc2dfc2V0X25hbWVkX3NlcW5vKGhkciwgc2Vxbm8pOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKIH0KIAogLyoqCi0gKiB0aXBjX25hbWVkX25vZGVfdXAgLSB0ZWxsIHNwZWNpZmllZCBub2RlIGFib3V0IGFsbCBwdWJsaWNhdGlvbnMgYnkgdGhpcyBub2RlCiYjNDM7ICogdGlwY19uYW1lZF9kaXN0cmlidXRlIC0gZGlzdHJpYnV0ZSBhbGwgcHVibGljYXRpb25zIHRvIHNwZWNpZmllZCBub2RlCiAgKiBAbmV0OiB0aGUgYXNzb2NpYXRlZCBuZXR3b3JrIG5hbWVzcGFjZQogICogQGRub2RlOiBkZXN0aW5hdGlvbiBub2RlCi0gKiBAY2FwYWJpbGl0aWVzOiBwZWVyIG5vZGUmIzM5O3MgY2FwYWJpbGl0aWVzCiAgKi8KLXZvaWQgdGlwY19uYW1lZF9ub2RlX3VwKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlLCB1MTYgY2FwYWJpbGl0aWVzKQomIzQzO3N0YXRpYyBpbnQgdGlwY19uYW1lZF9kaXN0cmlidXRlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlKQogewogCXN0cnVjdCBuYW1lX3RhYmxlICpudCA9IHRpcGNfbmFtZV90YWJsZShuZXQpOwogCXN0cnVjdCB0aXBjX25ldCAqdG4gPSB0aXBjX25ldChuZXQpOwpAQCAtMjEyLDE1ICYjNDM7MjE0LDg2IEBAIHZvaWQgdGlwY19uYW1lZF9ub2RlX3VwKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlLCB1MTYgY2FwYWJpbGl0aWVzKQogCiAJX19za2JfcXVldWVfaGVhZF9pbml0KCZhbXA7aGVhZCk7CiAJc3Bpbl9sb2NrX2JoKCZhbXA7dG4tJmd0O25hbWV0YmxfbG9jayk7Ci0JaWYgKCEoY2FwYWJpbGl0aWVzICZhbXA7IFRJUENfTkFNRURfQkNBU1QpKQotCQludC0mZ3Q7cmNfZGVzdHMmIzQzOyYjNDM7OwogCXNlcW5vID0gbnQtJmd0O3NuZF9ueHQ7CiAJc3Bpbl91bmxvY2tfYmgoJmFtcDt0bi0mZ3Q7bmFtZXRibF9sb2NrKTsKIAogCXJlYWRfbG9ja19iaCgmYW1wO250LSZndDtjbHVzdGVyX3Njb3BlX2xvY2spOwotCW5hbWVkX2Rpc3RyaWJ1dGUobmV0LCAmYW1wO2hlYWQsIGRub2RlLCAmYW1wO250LSZndDtjbHVzdGVyX3Njb3BlLCBzZXFubyk7CiYjNDM7CWlmIChuYW1lZF9kaXN0cmlidXRlKG5ldCwgJmFtcDtoZWFkLCBkbm9kZSwgJmFtcDtudC0mZ3Q7Y2x1c3Rlcl9zY29wZSwgc2Vxbm8pKSB7CiYjNDM7CQlyZWFkX3VubG9ja19iaCgmYW1wO250LSZndDtjbHVzdGVyX3Njb3BlX2xvY2spOwomIzQzOwkJcmV0dXJuIC1FTk9CVUZTOwomIzQzOwl9CiAJdGlwY19ub2RlX3htaXQobmV0LCAmYW1wO2hlYWQsIGRub2RlLCAwKTsKIAlyZWFkX3VubG9ja19iaCgmYW1wO250LSZndDtjbHVzdGVyX3Njb3BlX2xvY2spOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogdGlwY19uYW1lZF9ub2RlX3VwIC0gdGVsbCBzcGVjaWZpZWQgbm9kZSBhYm91dCBhbGwgcHVibGljYXRpb25zIGJ5IHRoaXMgbm9kZQomIzQzOyAqIEBuZXQ6IHRoZSBhc3NvY2lhdGVkIG5ldHdvcmsgbmFtZXNwYWNlCiYjNDM7ICogQGRub2RlOiBkZXN0aW5hdGlvbiBub2RlCiYjNDM7ICogQGNhcGFiaWxpdGllczogcGVlciBub2RlJiMzOTtzIGNhcGFiaWxpdGllcwomIzQzOyAqLwomIzQzO2ludCB0aXBjX25hbWVkX25vZGVfdXAoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUsIHUxNiBjYXBhYmlsaXRpZXMpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbmFtZV90YWJsZSAqbnQgPSB0aXBjX25hbWVfdGFibGUobmV0KTsKJiM0MzsJc3RydWN0IHRpcGNfbmV0ICp0biA9IHRpcGNfbmV0KG5ldCk7CiYjNDM7CiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO3RuLSZndDtuYW1ldGJsX2xvY2spOwomIzQzOwlpZiAoIShjYXBhYmlsaXRpZXMgJmFtcDsgVElQQ19OQU1FRF9CQ0FTVCkpCiYjNDM7CQludC0mZ3Q7cmNfZGVzdHMmIzQzOyYjNDM7OwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO3RuLSZndDtuYW1ldGJsX2xvY2spOwomIzQzOwomIzQzOwlyZWFkX2xvY2tfYmgoJmFtcDtudC0mZ3Q7Y2x1c3Rlcl9zY29wZV9sb2NrKTsKJiM0MzsJLyogMS4gdGlwY19uZXRfZmluYWxpemVfd29yaygpIGlzIG5vdCBzY2hlZHVsZWQgYmVjYXVzZSBvZiBuYW1lc3BhY2UKJiM0MzsJICogICAgdGVhcmRvd24uCiYjNDM7CSAqIDIuIE9yIHRpcGNfbmV0X2ZpbmFsaXplKCkgLS0tJmd0OyB0aXBjX25hbWV0YmxfcHVibGlzaCgpIGhhcyBmYWlsZWQKJiM0MzsJICogICAgdG8gaW5zZXJ0IG5vZGUgc2VsZiBhZGRyZXNzIHB1YmxpY2F0aW9uIGludG8gbnQtJmd0O2NsdXN0ZXJfc2NvcGUKJiM0MzsJICogICAgZHVlIHRvIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUuCiYjNDM7CSAqIDMuIE9yIHRpcGNfbmV0X2ZpbmFsaXplKCkgLS0tJmd0OyB0aXBjX25hbWV0YmxfcHVibGlzaCgpIGhhcyBub3QKJiM0MzsJICogICAgZXhlY3V0ZWQgeWV0LgomIzQzOwkgKi8KJiM0MzsJaWYgKHVubGlrZWx5KGxpc3RfZW1wdHkoJmFtcDtudC0mZ3Q7Y2x1c3Rlcl9zY29wZSkpKSB7CiYjNDM7CQlyZWFkX3VubG9ja19iaCgmYW1wO250LSZndDtjbHVzdGVyX3Njb3BlX2xvY2spOwomIzQzOwkJcmV0dXJuIDE7CiYjNDM7CX0KJiM0MzsJcmVhZF91bmxvY2tfYmgoJmFtcDtudC0mZ3Q7Y2x1c3Rlcl9zY29wZV9sb2NrKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHRpcGNfbmFtZWRfZGlzdHJpYnV0ZShuZXQsIGRub2RlKTsKJiM0Mzt9CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogdGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGUgLSBkaXN0cmlidXRlIGFsbCBwdWJsaWNhdGlvbnMgdG8gc3BlY2lmaWVkIG5vZGUKJiM0MzsgKiBAbmV0OiB0aGUgYXNzb2NpYXRlZCBuZXR3b3JrIG5hbWVzcGFjZQomIzQzOyAqIEBkbm9kZTogZGVzdGluYXRpb24gbm9kZQomIzQzOyAqLwomIzQzO2ludCB0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBuYW1lX3RhYmxlICpudCA9IHRpcGNfbmFtZV90YWJsZShuZXQpOwomIzQzOwlib29sIHJlaW5zZXJ0ID0gZmFsc2U7CiYjNDM7CiYjNDM7CXJlYWRfbG9ja19iaCgmYW1wO250LSZndDtjbHVzdGVyX3Njb3BlX2xvY2spOwomIzQzOwlpZiAodW5saWtlbHkobGlzdF9lbXB0eSgmYW1wO250LSZndDtjbHVzdGVyX3Njb3BlKSkpCiYjNDM7CQlyZWluc2VydCA9IHRydWU7CiYjNDM7CXJlYWRfdW5sb2NrX2JoKCZhbXA7bnQtJmd0O2NsdXN0ZXJfc2NvcGVfbG9jayk7CiYjNDM7CS8qIHRpcGNfbmV0X2ZpbmFsaXplKCkgLS0tJmd0OyB0aXBjX25hbWV0YmxfcHVibGlzaCgpIGhhcyBmYWlsZWQgdG8gaW5zZXJ0CiYjNDM7CSAqIG5vZGUgc2VsZiBhZGRyZXNzIHB1YmxpY2F0aW9uIGludG8gbnQtJmd0O2NsdXN0ZXJfc2NvcGUgZHVlIHRvIG1lbW9yeQomIzQzOwkgKiBhbGxvY2F0aW9uIGZhaWx1cmUuIFNvLCByZWluc2VydCB0aGlzIHB1YmxpY2F0aW9uLgomIzQzOwkgKi8KJiM0MzsJaWYgKHJlaW5zZXJ0KSB7CiYjNDM7CQlzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobmV0KTsKJiM0MzsJCXN0cnVjdCB0aXBjX3NvY2tldF9hZGRyIHNrOwomIzQzOwkJc3RydWN0IHRpcGNfdWFkZHIgdWE7CiYjNDM7CiYjNDM7CQlzay5yZWYgPSAwOwomIzQzOwkJc2subm9kZSA9IHRuLSZndDtub2RlX2FkZHI7CiYjNDM7CQl0aXBjX3VhZGRyKCZhbXA7dWEsIFRJUENfU0VSVklDRV9SQU5HRSwgVElQQ19DTFVTVEVSX1NDT1BFLAomIzQzOwkJCSAgIFRJUENfTk9ERV9TVEFURSwgdG4tJmd0O25vZGVfYWRkciwgdG4tJmd0O25vZGVfYWRkcik7CiYjNDM7CQlpZiAoIXRpcGNfbmFtZXRibF9wdWJsaXNoKG5ldCwgJmFtcDt1YSwgJmFtcDtzaywgdG4tJmd0O25vZGVfYWRkcikpCiYjNDM7CQkJcmV0dXJuIC1FTk9CVUZTOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiB0aXBjX25hbWVkX2Rpc3RyaWJ1dGUobmV0LCBkbm9kZSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvbmV0L3RpcGMvbmFtZV9kaXN0ci5oIGIvbmV0L3RpcGMvbmFtZV9kaXN0ci5oCmluZGV4IGM2NzdmNmYwODJkZmIuLmNhZGY0ZThjM2U2NmMgMTAwNjQ0Ci0tLSBhL25ldC90aXBjL25hbWVfZGlzdHIuaAomIzQzOyYjNDM7JiM0MzsgYi9uZXQvdGlwYy9uYW1lX2Rpc3RyLmgKQEAgLTY5LDcgJiM0Mzs2OSw4IEBAIHN0cnVjdCBkaXN0cl9pdGVtIHsKIAogc3RydWN0IHNrX2J1ZmYgKnRpcGNfbmFtZWRfcHVibGlzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBwdWJsaWNhdGlvbiAqcHVibCk7CiBzdHJ1Y3Qgc2tfYnVmZiAqdGlwY19uYW1lZF93aXRoZHJhdyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBwdWJsaWNhdGlvbiAqcHVibCk7Ci12b2lkIHRpcGNfbmFtZWRfbm9kZV91cChzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSwgdTE2IGNhcGFiaWxpdGllcyk7CiYjNDM7aW50IHRpcGNfbmFtZWRfbm9kZV91cChzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSwgdTE2IGNhcGFiaWxpdGllcyk7CiYjNDM7aW50IHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlKTsKIHZvaWQgdGlwY19uYW1lZF9yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpuYW1lZHEsCiAJCSAgICB1MTYgKnJjdl9ueHQsIGJvb2wgKm9wZW4pOwogdm9pZCB0aXBjX25hbWVkX3JlaW5pdChzdHJ1Y3QgbmV0ICpuZXQpOwpkaWZmIC0tZ2l0IGEvbmV0L3RpcGMvbmFtZV90YWJsZS5jIGIvbmV0L3RpcGMvbmFtZV90YWJsZS5jCmluZGV4IDI1M2M3MmQxMzY2ZWIuLjZmZGEzNmFiMTc2NjkgMTAwNjQ0Ci0tLSBhL25ldC90aXBjL25hbWVfdGFibGUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvdGlwYy9uYW1lX3RhYmxlLmMKQEAgLTc2MywyMSAmIzQzOzc2Myw0MCBAQCBzdHJ1Y3QgcHVibGljYXRpb24gKnRpcGNfbmFtZXRibF9wdWJsaXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfdWFkZHIgKnVhLAogCQkJCQkgc3RydWN0IHRpcGNfc29ja2V0X2FkZHIgKnNrLCB1MzIga2V5KQogewogCXN0cnVjdCBuYW1lX3RhYmxlICpudCA9IHRpcGNfbmFtZV90YWJsZShuZXQpOwomIzQzOwl1MzIgbWF4X3VzZXJfcHViID0gVElQQ19NQVhfUFVCTCAtIDE7CiAJc3RydWN0IHRpcGNfbmV0ICp0biA9IHRpcGNfbmV0KG5ldCk7CiAJc3RydWN0IHB1YmxpY2F0aW9uICpwID0gTlVMTDsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gTlVMTDsKJiM0MzsJYm9vbCBwcm90b2NvbF90eXBlID0gZmFsc2U7CiAJdTMyIHJjX2Rlc3RzOwogCiYjNDM7CWlmICh1YS0mZ3Q7c3IudHlwZSA9PSBUSVBDX05PREVfU1RBVEUgfHwgdWEtJmd0O3NyLnR5cGUgPT0gVElQQ19MSU5LX1NUQVRFIHx8CiYjNDM7CSAgICB1YS0mZ3Q7c3IudHlwZSA9PSBUSVBDX1RPUF9TUlYpCiYjNDM7CQlwcm90b2NvbF90eXBlID0gdHJ1ZTsKJiM0MzsKIAlzcGluX2xvY2tfYmgoJmFtcDt0bi0mZ3Q7bmFtZXRibF9sb2NrKTsKJiM0MzsJaWYgKHByb3RvY29sX3R5cGUpCiYjNDM7CQlnb3RvIGluc2VydDsKIAotCWlmIChudC0mZ3Q7bG9jYWxfcHVibF9jb3VudCAmZ3Q7PSBUSVBDX01BWF9QVUJMKSB7Ci0JCXByX3dhcm4oJiMzNDtCaW5kIGZhaWxlZCwgbWF4IGxpbWl0ICV1IHJlYWNoZWRcbiYjMzQ7LCBUSVBDX01BWF9QVUJMKTsKJiM0MzsJLyogUmVzZXJ2ZSBvbmUgZW50cnkgZm9yIG5vZGUgc3RhdGUgc2VydmljZSB0eXBlIGJlY2F1c2UgaXQgaGFzIGNsdXN0ZXIKJiM0MzsJICogc2NvcGUgYW5kIGl0IGlzIGRpc3RyaWJ1dGVkIGluIGJ1bGsuIFNvLCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdXNlciYjMzk7cwomIzQzOwkgKiBwdWJsaWNhdGlvbnMgaXMgKFRJUENfTUFYX1BVQkwgLSAxKS4KJiM0MzsJICovCiYjNDM7CWlmIChudC0mZ3Q7bG9jYWxfcHVibF9jb3VudCAmZ3Q7PSBtYXhfdXNlcl9wdWIpIHsKJiM0MzsJCXByX3dhcm4oJiMzNDtCaW5kIGZhaWxlZCwgbWF4IGxpbWl0ICV1IHJlYWNoZWRcbiYjMzQ7LCBtYXhfdXNlcl9wdWIpOwogCQlnb3RvIGV4aXQ7CiAJfQogCiYjNDM7aW5zZXJ0OgogCXAgPSB0aXBjX25hbWV0YmxfaW5zZXJ0X3B1YmwobmV0LCB1YSwgc2ssIGtleSk7CiAJaWYgKHApIHsKLQkJbnQtJmd0O2xvY2FsX3B1YmxfY291bnQmIzQzOyYjNDM7OwomIzQzOwkJLyogTm90IGNvdW50IG5vZGUgc3RhdGUsIGxpbmsgc3RhdGUgYW5kIHRvcG9sb2d5IHNlcnZlciB0eXBlcwomIzQzOwkJICogc28gdGhhdCBtYXhpbXVtIG50LSZndDtsb2NhbF9wdWJsX2NvdW50IGRvZXMgbm90IHByZXZlbnQKJiM0MzsJCSAqIHByb3RvY29sIHNlcnZpY2UgdHlwZXMgZnJvbSBiZWluZyBpbnNlcnRlZCBpbnRvIHRoZSBuYW1lCiYjNDM7CQkgKiB0YWJsZS4KJiM0MzsJCSAqLwomIzQzOwkJaWYgKCFwcm90b2NvbF90eXBlKQomIzQzOwkJCW50LSZndDtsb2NhbF9wdWJsX2NvdW50JiM0MzsmIzQzOzsKIAkJc2tiID0gdGlwY19uYW1lZF9wdWJsaXNoKG5ldCwgcCk7CiAJfQogCXJjX2Rlc3RzID0gbnQtJmd0O3JjX2Rlc3RzOwpAQCAtODEwLDcgJiM0Mzs4MjksMTAgQEAgdm9pZCB0aXBjX25hbWV0Ymxfd2l0aGRyYXcoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGlwY191YWRkciAqdWEsCiAKIAlwID0gdGlwY19uYW1ldGJsX3JlbW92ZV9wdWJsKG5ldCwgdWEsIHNrLCBrZXkpOwogCWlmIChwKSB7Ci0JCW50LSZndDtsb2NhbF9wdWJsX2NvdW50LS07CiYjNDM7CQlpZiAocC0mZ3Q7c3IudHlwZSAhPSBUSVBDX05PREVfU1RBVEUgJmFtcDsmYW1wOwomIzQzOwkJICAgIHAtJmd0O3NyLnR5cGUgIT0gVElQQ19MSU5LX1NUQVRFICZhbXA7JmFtcDsKJiM0MzsJCSAgICBwLSZndDtzci50eXBlICE9IFRJUENfVE9QX1NSVikKJiM0MzsJCQludC0mZ3Q7bG9jYWxfcHVibF9jb3VudC0tOwogCQlza2IgPSB0aXBjX25hbWVkX3dpdGhkcmF3KG5ldCwgcCk7CiAJCWxpc3RfZGVsX2luaXQoJmFtcDtwLSZndDtiaW5kaW5nX3NvY2spOwogCQlrZnJlZV9yY3UocCwgcmN1KTsKZGlmZiAtLWdpdCBhL25ldC90aXBjL25ldC5jIGIvbmV0L3RpcGMvbmV0LmMKaW5kZXggN2U2NWQwYjBjNGE4ZC4uNzVhYzRlM2NkMDFhOCAxMDA2NDQKLS0tIGEvbmV0L3RpcGMvbmV0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvbmV0LmMKQEAgLTEzOSw2ICYjNDM7MTM5LDExIEBAIHN0YXRpYyB2b2lkIHRpcGNfbmV0X2ZpbmFsaXplKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGFkZHIpCiAJdGlwY19za19yZWluaXQobmV0KTsKIAl0aXBjX21vbl9yZWluaXRfc2VsZihuZXQpOwogCXRpcGNfbmFtZXRibF9wdWJsaXNoKG5ldCwgJmFtcDt1YSwgJmFtcDtzaywgYWRkcik7CiYjNDM7CWF0b21pY19zZXQoJmFtcDt0bi0mZ3Q7ZmluYWxpemVkLCAxKTsKJiM0MzsJLyogV2FrZSB1cCBub2RlcyB3YWl0aW5nIGZvciBkaXN0cmlidXRpbmcgYnVsayBvZiBwdWJsaWNhdGlvbnMKJiM0MzsJICogaWYgYXBwbGljYWJsZS4KJiM0MzsJICovCiYjNDM7CXRpcGNfbm9kZV93YWtldXAobmV0KTsKIH0KIAogdm9pZCB0aXBjX25ldF9maW5hbGl6ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKZGlmZiAtLWdpdCBhL25ldC90aXBjL25vZGUuYyBiL25ldC90aXBjL25vZGUuYwppbmRleCA4ZTRlZjI2MzBhZTRmLi4zMzQ4MTJiZGFiNzY1IDEwMDY0NAotLS0gYS9uZXQvdGlwYy9ub2RlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvbm9kZS5jCkBAIC0xMTEsNiAmIzQzOzExMSw5IEBAIHN0cnVjdCB0aXBjX2JjbGlua19lbnRyeSB7CiAgKiBAcGVlcl9uZXQ6IHBlZXImIzM5O3MgbmV0IG5hbWVzcGFjZQogICogQHBlZXJfaGFzaF9taXg6IGhhc2ggZm9yIHRoaXMgcGVlciAoRklYTUUpCiAgKiBAY3J5cHRvX3J4OiBSWCBjcnlwdG8gaGFuZGxlcgomIzQzOyAqIEB3b3JrOiB3b3JrIGl0ZW0gZm9yIGJ1bGsgZGlzdHJpYnV0aW9uIG9mIGNsdXN0ZXIgc2NvcGUgcHVibGljYXRpb25zCiYjNDM7ICogQHdvcmtfc2NoZWR1bGVkOiBmbGFnIHRvIGluZGljYXRlIHRoZSB3b3JrIGhhcyBiZWVuIHNjaGVkdWxlZAomIzQzOyAqIEBmaW5hbGl6ZWQ6IGZsYWcgdG8gd2FrZSB1cCBzY2hlZHVsZWQgd29yawogICovCiBzdHJ1Y3QgdGlwY19ub2RlIHsKIAl1MzIgYWRkcjsKQEAgLTE0NSw2ICYjNDM7MTQ4LDkgQEAgc3RydWN0IHRpcGNfbm9kZSB7CiAjaWZkZWYgQ09ORklHX1RJUENfQ1JZUFRPCiAJc3RydWN0IHRpcGNfY3J5cHRvICpjcnlwdG9fcng7CiAjZW5kaWYKJiM0MzsJc3RydWN0IHdvcmtfc3RydWN0IHdvcms7CiYjNDM7CWF0b21pY190IHdvcmtfc2NoZWR1bGVkOwomIzQzOwlhdG9taWNfdCBmaW5hbGl6ZWQ7CiB9OwogCiAvKiBOb2RlIEZTTSBzdGF0ZXMgYW5kIGV2ZW50czoKQEAgLTM5Myw2ICYjNDM7Mzk5LDU5IEBAIHN0YXRpYyB2b2lkIHRpcGNfbm9kZV93cml0ZV91bmxvY2tfZmFzdChzdHJ1Y3QgdGlwY19ub2RlICpuKQogCXdyaXRlX3VubG9ja19iaCgmYW1wO24tJmd0O2xvY2spOwogfQogCiYjNDM7c3RhdGljIHZvaWQgdGlwY19ub2RlX2Rvd24oc3RydWN0IHRpcGNfbm9kZSAqbikKJiM0Mzt7CiYjNDM7CWludCBiZWFyZXJfaWQ7CiYjNDM7CiYjNDM7CWZvciAoYmVhcmVyX2lkID0gMDsgYmVhcmVyX2lkICZsdDsgTUFYX0JFQVJFUlM7IGJlYXJlcl9pZCYjNDM7JiM0MzspCiYjNDM7CQl0aXBjX25vZGVfbGlua19kb3duKG4sIGJlYXJlcl9pZCwgZmFsc2UpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0aXBjX25vZGVfZGlzdF9idWxrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKJiM0Mzt7CiYjNDM7CXN0cnVjdCB0aXBjX25vZGUgKm5vZGUgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHRpcGNfbm9kZSwgd29yayk7CiYjNDM7CXN0cnVjdCB0aXBjX25ldCAqdG4gPSB0aXBjX25ldChub2RlLSZndDtuZXQpOwomIzQzOwomIzQzOwl3YWl0X3Zhcl9ldmVudCgmYW1wO25vZGUtJmd0O2ZpbmFsaXplZCwgYXRvbWljX3JlYWQoJmFtcDtub2RlLSZndDtmaW5hbGl6ZWQpKTsKJiM0MzsKJiM0MzsJLyogbm9kZSBpcyBkb3duICovCiYjNDM7CWlmICghYXRvbWljX3JlYWQoJmFtcDtub2RlLSZndDt3b3JrX3NjaGVkdWxlZCkpCiYjNDM7CQlnb3RvIGV4aXQ7CiYjNDM7CiYjNDM7CS8qIFN0b3Agd2FraW5nIHVwIHdvcmsgaW4gdGlwY19ub2RlX3RpbWVvdXQoKSAqLwomIzQzOwlhdG9taWNfc2V0KCZhbXA7bm9kZS0mZ3Q7d29ya19zY2hlZHVsZWQsIDApOwomIzQzOwomIzQzOwlpZiAodGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGUobm9kZS0mZ3Q7bmV0LCBub2RlLSZndDthZGRyKSAmbHQ7IDApCiYjNDM7CQl0aXBjX25vZGVfZG93bihub2RlKTsKJiM0MzsKJiM0MztleGl0OgomIzQzOwlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmYW1wO3RuLSZndDtub2RlX3dxX2NvdW50KSkKJiM0MzsJCXdha2VfdXBfdmFyKCZhbXA7dG4tJmd0O25vZGVfd3FfY291bnQpOwomIzQzOwomIzQzOwl0aXBjX25vZGVfcHV0KG5vZGUpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0aXBjX25vZGVfY2FuY2VsX3dvcmsoc3RydWN0IHRpcGNfbm9kZSAqbm9kZSkKJiM0Mzt7CiYjNDM7CWlmIChhdG9taWNfcmVhZCgmYW1wO25vZGUtJmd0O3dvcmtfc2NoZWR1bGVkKSkgewomIzQzOwkJc3RydWN0IHRpcGNfbmV0ICp0biA9IHRpcGNfbmV0KG5vZGUtJmd0O25ldCk7CiYjNDM7CiYjNDM7CQkvKiBXYWtlIHVwIHNjaGVkdWxlZCB3b3JrIGlmIGl0IGlzIHdhaXRpbmcuICovCiYjNDM7CQlpZiAoIWF0b21pY19yZWFkKCZhbXA7bm9kZS0mZ3Q7ZmluYWxpemVkKSkgewomIzQzOwkJCWF0b21pY19zZXQoJmFtcDtub2RlLSZndDt3b3JrX3NjaGVkdWxlZCwgMCk7CiYjNDM7CQkJYXRvbWljX3NldCgmYW1wO25vZGUtJmd0O2ZpbmFsaXplZCwgMSk7CiYjNDM7CQkJd2FrZV91cF92YXIoJmFtcDtub2RlLSZndDtmaW5hbGl6ZWQpOwomIzQzOwkJfQomIzQzOwomIzQzOwkJLyogV29yayBpcyBwZW5kaW5nICovCiYjNDM7CQlpZiAoY2FuY2VsX3dvcmsoJmFtcDtub2RlLSZndDt3b3JrKSkgewomIzQzOwkJCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZhbXA7dG4tJmd0O25vZGVfd3FfY291bnQpKQomIzQzOwkJCQl3YWtlX3VwX3ZhcigmYW1wO3RuLSZndDtub2RlX3dxX2NvdW50KTsKJiM0MzsJCQl0aXBjX25vZGVfcHV0KG5vZGUpOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgdGlwY19ub2RlX3dyaXRlX3VubG9jayhzdHJ1Y3QgdGlwY19ub2RlICpuKQogCV9fcmVsZWFzZXMobi0mZ3Q7bG9jaykKIHsKQEAgLTQyMSwxMSAmIzQzOzQ4MCwzMiBAQCBzdGF0aWMgdm9pZCB0aXBjX25vZGVfd3JpdGVfdW5sb2NrKHN0cnVjdCB0aXBjX25vZGUgKm4pCiAKIAl3cml0ZV91bmxvY2tfYmgoJmFtcDtuLSZndDtsb2NrKTsKIAotCWlmIChmbGFncyAmYW1wOyBUSVBDX05PVElGWV9OT0RFX0RPV04pCiYjNDM7CWlmIChmbGFncyAmYW1wOyBUSVBDX05PVElGWV9OT0RFX0RPV04pIHsKIAkJdGlwY19wdWJsX25vdGlmeShuZXQsIHB1YmxfbGlzdCwgbm9kZSwgbi0mZ3Q7Y2FwYWJpbGl0aWVzKTsKLQotCWlmIChmbGFncyAmYW1wOyBUSVBDX05PVElGWV9OT0RFX1VQKQotCQl0aXBjX25hbWVkX25vZGVfdXAobmV0LCBub2RlLCBuLSZndDtjYXBhYmlsaXRpZXMpOwomIzQzOwkJdGlwY19ub2RlX2NhbmNlbF93b3JrKG4pOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChmbGFncyAmYW1wOyBUSVBDX05PVElGWV9OT0RFX1VQKSB7CiYjNDM7CQlzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobmV0KTsKJiM0MzsJCWludCByYyA9IDA7CiYjNDM7CiYjNDM7CQlyYyA9IHRpcGNfbmFtZWRfbm9kZV91cChuZXQsIG5vZGUsIG4tJmd0O2NhcGFiaWxpdGllcyk7CiYjNDM7CQkvKiBEZWZlciBidWxrIGRpc3RyaWJ1dGlvbiB0byB3b3JrIHF1ZXVlICovCiYjNDM7CQlpZiAocmMgJmd0OyAwKSB7CiYjNDM7CQkJYXRvbWljX3NldCgmYW1wO24tJmd0O3dvcmtfc2NoZWR1bGVkLCAxKTsKJiM0MzsJCQlhdG9taWNfaW5jKCZhbXA7dG4tJmd0O25vZGVfd3FfY291bnQpOwomIzQzOwkJCXRpcGNfbm9kZV9nZXQobik7CiYjNDM7CQkJaWYgKCFzY2hlZHVsZV93b3JrKCZhbXA7bi0mZ3Q7d29yaykpIHsKJiM0MzsJCQkJYXRvbWljX2RlYygmYW1wO3RuLSZndDtub2RlX3dxX2NvdW50KTsKJiM0MzsJCQkJdGlwY19ub2RlX3B1dChuKTsKJiM0MzsJCQl9CiYjNDM7CQl9IGVsc2UgaWYgKHJjICZsdDsgMCkgewomIzQzOwkJCS8qIEJyaW5nIHRoZSBub2RlIGRvd24gdG8gc3RhcnQgb3ZlciBidWxrIGRpc3RyaWJ1dGlvbgomIzQzOwkJCSAqIHdoZW4gdGhlIGZpcnN0IGxpbmsgaXMgdXAgYWdhaW4uCiYjNDM7CQkJICovCiYjNDM7CQkJdGlwY19ub2RlX2Rvd24obik7CiYjNDM7CQl9CiYjNDM7CX0KIAogCWlmIChmbGFncyAmYW1wOyBUSVBDX05PVElGWV9MSU5LX1VQKSB7CiAJCXRpcGNfbW9uX3BlZXJfdXAobmV0LCBub2RlLCBiZWFyZXJfaWQpOwpAQCAtNTY0LDYgJiM0Mzs2NDQsOSBAQCBzdHJ1Y3QgdGlwY19ub2RlICp0aXBjX25vZGVfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGFkZHIsIHU4ICpwZWVyX2lkLAogCUlOSVRfTElTVF9IRUFEKCZhbXA7bi0mZ3Q7bGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtuLSZndDtwdWJsX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7bi0mZ3Q7Y29ubl9za3MpOwomIzQzOwlJTklUX1dPUksoJmFtcDtuLSZndDt3b3JrLCB0aXBjX25vZGVfZGlzdF9idWxrKTsKJiM0MzsJYXRvbWljX3NldCgmYW1wO24tJmd0O3dvcmtfc2NoZWR1bGVkLCAwKTsKJiM0MzsJYXRvbWljX3NldCgmYW1wO24tJmd0O2ZpbmFsaXplZCwgMCk7CiAJc2tiX3F1ZXVlX2hlYWRfaW5pdCgmYW1wO24tJmd0O2JjX2VudHJ5Lm5hbWVkcSk7CiAJc2tiX3F1ZXVlX2hlYWRfaW5pdCgmYW1wO24tJmd0O2JjX2VudHJ5LmlucHV0cTEpOwogCV9fc2tiX3F1ZXVlX2hlYWRfaW5pdCgmYW1wO24tJmd0O2JjX2VudHJ5LmFycnZxKTsKQEAgLTY1Myw2ICYjNDM7NzM2LDIxIEBAIHZvaWQgdGlwY19ub2RlX3N0b3Aoc3RydWN0IG5ldCAqbmV0KQogCXNwaW5fdW5sb2NrX2JoKCZhbXA7dG4tJmd0O25vZGVfbGlzdF9sb2NrKTsKIH0KIAomIzQzO3ZvaWQgdGlwY19ub2RlX3dha2V1cChzdHJ1Y3QgbmV0ICpuZXQpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobmV0KTsKJiM0MzsJc3RydWN0IHRpcGNfbm9kZSAqbm9kZTsKJiM0MzsKJiM0MzsJcmN1X3JlYWRfbG9jaygpOwomIzQzOwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShub2RlLCAmYW1wO3RuLSZndDtub2RlX2xpc3QsIGxpc3QpIHsKJiM0MzsJCWlmIChhdG9taWNfcmVhZCgmYW1wO25vZGUtJmd0O3dvcmtfc2NoZWR1bGVkKSkgewomIzQzOwkJCWF0b21pY19zZXQoJmFtcDtub2RlLSZndDtmaW5hbGl6ZWQsIDEpOwomIzQzOwkJCXdha2VfdXBfdmFyKCZhbXA7bm9kZS0mZ3Q7ZmluYWxpemVkKTsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwlyY3VfcmVhZF91bmxvY2soKTsKJiM0Mzt9CiYjNDM7CiB2b2lkIHRpcGNfbm9kZV9zdWJzY3JpYmUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbGlzdF9oZWFkICpzdWJzY3IsIHUzMiBhZGRyKQogewogCXN0cnVjdCB0aXBjX25vZGUgKm47CkBAIC04MDEsNiAmIzQzOzg5OSw3IEBAIHN0YXRpYyBib29sIHRpcGNfbm9kZV9jbGVhbnVwKHN0cnVjdCB0aXBjX25vZGUgKnBlZXIpCiBzdGF0aWMgdm9pZCB0aXBjX25vZGVfdGltZW91dChzdHJ1Y3QgdGltZXJfbGlzdCAqdCkKIHsKIAlzdHJ1Y3QgdGlwY19ub2RlICpuID0gdGltZXJfY29udGFpbmVyX29mKG4sIHQsIHRpbWVyKTsKJiM0MzsJc3RydWN0IHRpcGNfbmV0ICp0biA9IHRpcGNfbmV0KG4tJmd0O25ldCk7CiAJc3RydWN0IHRpcGNfbGlua19lbnRyeSAqbGU7CiAJc3RydWN0IHNrX2J1ZmZfaGVhZCB4bWl0cTsKIAlpbnQgcmVtYWlucyA9IG4tJmd0O2xpbmtfY250OwpAQCAtODE0LDYgJiM0Mzs5MTMsMTEgQEAgc3RhdGljIHZvaWQgdGlwY19ub2RlX3RpbWVvdXQoc3RydWN0IHRpbWVyX2xpc3QgKnQpCiAJCXJldHVybjsKIAl9CiAKJiM0MzsJaWYgKGF0b21pY19yZWFkKCZhbXA7dG4tJmd0O2ZpbmFsaXplZCkgJmFtcDsmYW1wOyBhdG9taWNfcmVhZCgmYW1wO24tJmd0O3dvcmtfc2NoZWR1bGVkKSkgewomIzQzOwkJYXRvbWljX3NldCgmYW1wO24tJmd0O2ZpbmFsaXplZCwgMSk7CiYjNDM7CQl3YWtlX3VwX3ZhcigmYW1wO24tJmd0O2ZpbmFsaXplZCk7CiYjNDM7CX0KJiM0MzsKICNpZmRlZiBDT05GSUdfVElQQ19DUllQVE8KIAkvKiBUYWtlIGFueSBjcnlwdG8ga2V5IHJlbGF0ZWQgYWN0aW9ucyBmaXJzdCAqLwogCXRpcGNfY3J5cHRvX3RpbWVvdXQobi0mZ3Q7Y3J5cHRvX3J4KTsKZGlmZiAtLWdpdCBhL25ldC90aXBjL25vZGUuaCBiL25ldC90aXBjL25vZGUuaAppbmRleCAxNTRhNWJiYjBkMjlkLi5jN2JjM2JjMDUzMjg1IDEwMDY0NAotLS0gYS9uZXQvdGlwYy9ub2RlLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvbm9kZS5oCkBAIC03NSw2ICYjNDM7NzUsNyBAQCBlbnVtIHsKICNkZWZpbmUgSU5WQUxJRF9CRUFSRVJfSUQgLTEKIAogdm9pZCB0aXBjX25vZGVfc3RvcChzdHJ1Y3QgbmV0ICpuZXQpOwomIzQzO3ZvaWQgdGlwY19ub2RlX3dha2V1cChzdHJ1Y3QgbmV0ICpuZXQpOwogYm9vbCB0aXBjX25vZGVfZ2V0X2lkKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGFkZHIsIHU4ICppZCk7CiB1MzIgdGlwY19ub2RlX2dldF9hZGRyKHN0cnVjdCB0aXBjX25vZGUgKm5vZGUpOwogY2hhciAqdGlwY19ub2RlX2dldF9pZF9zdHIoc3RydWN0IHRpcGNfbm9kZSAqbm9kZSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE5OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5NzMKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVElQQyBQYXRjaCBmb3IgdGhlIExpbnV4IEtlcm5lbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgcG9raW5nIGFyb3VuZCBpbiB0aGUgVElQQyBzdWJzeXN0ZW0gb2YgdGhlIExpbnV4IGtlcm5lbC4gSXQgdG91Y2hlcyBxdWl0ZSBhIGZldyBmaWxlczogYGNvcmUuY2AsIGBjb3JlLmhgLCBgbmFtZV9kaXN0ci5jYCwgYG5hbWVfZGlzdHIuaGAsIGBuYW1lX3RhYmxlLmNgLCBgbmV0LmNgLCBgbm9kZS5jYCwgYW5kIGBub2RlLmhgLiBTZWVtcyBsaWtlIGEgcHJldHR5IHNpZ25pZmljYW50IGFyZWEgb2YgdGhlIGNvZGUuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSByaWdodCBpbiBhbmQgdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGFjdHVhbGx5IGNoYW5naW5nLiBSaWdodCBvZmYgdGhlIGJhdCwgaXQgbG9va3MgbGlrZSB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSB3b3JrcXVldWUgc3BlY2lmaWNhbGx5IGZvciBlZmZpY2llbnRseSBkaXN0cmlidXRpbmcgcHVibGljYXRpb25zIGFjcm9zcyB0aGUgY2x1c3RlciBzY29wZSwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEl0IGFsc28gYXBwZWFycyB3ZSYjMzk7cmUgYWRkaW5nIHNvbWUgYXRvbWljIHZhcmlhYmxlcywgYG5vZGVfd3FfY291bnRgIGFuZCBgZmluYWxpemVkYCwgdG8gdGhlIGB0aXBjX25ldGAgc3RydWN0dXJlLiBUaGUgY2hhbmdlIHRvIGB0aXBjX25hbWVkX25vZGVfdXBgIHRvIHJldHVybiBhbiBpbnRlZ2VyIGluc3RlYWQgb2Ygdm9pZCBpbW1lZGlhdGVseSByYWlzZXMgbXkgZXllYnJvd3Mg4oCTIHRoYXQmIzM5O3Mgb2Z0ZW4gYSBzaWduYWwgb2YgYSBiZWhhdmlvcmFsIGNoYW5nZSBvciBlcnJvciByZXBvcnRpbmcgYmVpbmcgYWRkZWQuIFdlIGhhdmUgYSBuZXcgZnVuY3Rpb24sIGB0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZWAsIHdoaWNoIGNvdWxkIGJlIHRpZWQgdG8gdGhlIHdvcmtxdWV1ZS4gQWxzbywgdGhlIG1vZGlmaWNhdGlvbnMgdG8gYHRpcGNfbmFtZXRibF9wdWJsaXNoYCB0byBtYW5hZ2UgYHByb3RvY29sX3R5cGVgIGFuZCByZXNlcnZlIGFuIGVudHJ5IGZvciB0aGUgbm9kZSBzdGF0ZSBzZXJ2aWNlIHR5cGUgYXJlIG5vdGFibGUuIFBsdXMsIGEgbmV3IHdvcmsgZnVuY3Rpb24sIGB0aXBjX25vZGVfZGlzdF9idWxrYCwgaXMgYmVpbmcgYWRkZWQsIGFsc28gaW4gYG5vZGUuY2AuIFRoZSBjaGFuZ2VzIHRvIGB0aXBjX25vZGVfd3JpdGVfdW5sb2NrYCBpbmRpY2F0ZSB0aGF0IHRoZSB3b3JrcXVldWUgaXMgdHJpZ2dlcmVkIGlmIGB0aXBjX25hbWVkX25vZGVfdXBgIHJlcG9ydHMgYSBwb3NpdGl2ZSB2YWx1ZS4gQW5kIGZpbmFsbHksIHdlIGhhdmUgYSBuZXcgZnVuY3Rpb24sIGB0aXBjX25vZGVfd2FrZXVwYC4KCkFscmlnaHQsIHB1dHRpbmcgaXQgYWxsIHRvZ2V0aGVyLCB0aGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgVElQQyBpbXBsZW1lbnRhdGlvbi4gQW5kIGdpdmVuIHRoZSBuYXR1cmUgb2YgVElQQywgd2hpY2ggaXMgYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBzb21lIHNlcmlvdXMgZnV6emluZy4gU2VjdXJpdHkgaXMgcGFyYW1vdW50LCBhbmQgdGhlc2UgdHlwZXMgb2YgY2hhbmdlcyBhcmUgcHJpbWUgdGFyZ2V0cyBmb3IgdnVsbmVyYWJpbGl0eSBkaXNjb3ZlcnkuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhvc2UgQ09ORklHIG9wdGlvbnMuIEkgcmVtZW1iZXIgVElQQyBpcyBjb250cm9sbGVkIGJ5IGBDT05GSUdfVElQQ2AuIExldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGluIGBuZXQvdGlwYy9LY29uZmlnYCB0byBiZSBzdXJlIEkgaGF2ZSB0aGUgd2hvbGUgcGljdHVyZSBiZWZvcmUgZ29pbmcgYW55IGZ1cnRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTk6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRJUEMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdGlwYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL0tjb25maWctNS1cbm5ldC90aXBjL0tjb25maWc6NjptZW51Y29uZmlnIFRJUENcbm5ldC90aXBjL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBUSVBDIFByb3RvY29sXCYjMzQ7XG4tLVxubmV0L3RpcGMvS2NvbmZpZy0yMy1cbm5ldC90aXBjL0tjb25maWc6MjQ6Y29uZmlnIFRJUENfTUVESUFfSUJcbm5ldC90aXBjL0tjb25maWctMjUtXHRib29sIFwmIzM0O0luZmluaUJhbmQgbWVkaWEgdHlwZSBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3RpcGMvS2NvbmZpZy0yOS1cdCAgSVAtb3Zlci1JbmZpbmlCYW5kIGRldmljZXMuXG5uZXQvdGlwYy9LY29uZmlnOjMwOmNvbmZpZyBUSVBDX01FRElBX1VEUFxubmV0L3RpcGMvS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7SVAvVURQIG1lZGlhIHR5cGUgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC90aXBjL0tjb25maWctMzctXG5uZXQvdGlwYy9LY29uZmlnOjM4OmNvbmZpZyBUSVBDX0NSWVBUT1xubmV0L3RpcGMvS2NvbmZpZy0zOS1cdGJvb2wgXCYjMzQ7VElQQyBlbmNyeXB0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvdGlwYy9LY29uZmlnLTUyLVxubmV0L3RpcGMvS2NvbmZpZzo1Mzpjb25maWcgVElQQ19ESUFHXG5uZXQvdGlwYy9LY29uZmlnLTU0LVx0dHJpc3RhdGUgXCYjMzQ7VElQQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTk6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTE0MwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZToKCioqQ2hlY2tpbmcgdGhlIFRJUEMgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gaXQuIGBDT05GSUdfVElQQ2AgaXMgY2xlYXJseSB0aGUgY2VudHJhbCBjb25maWd1cmF0aW9uIG9wdGlvbiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhlcmUsIHRoYXQmIzM5O3Mgb2J2aW91cy4gTm93IHRoZSBjcnVjaWFsIHN0ZXAgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgaXRzIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMsIG9wdGlvbnMsIG9yIGV2ZW4gb3RoZXIgbW9kdWxlcyBuZWVkIHRvIGJlIGVuYWJsZWQgb3IgYXJlIGFmZmVjdGVkIGlmIGBDT05GSUdfVElQQ2AgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4gVGhpcyBpcyB3aGVyZSB0aGUgZWZmaWNpZW5jeSBvZiBteSB3b3JrZmxvdyBjb21lcyBpbiwgSSBjYW7igJl0IHNwZW5kIHRpbWUgb24gdGhlIGJhc2ljcyDigJMgSSYjMzk7bSBsb29raW5nIGZvciB0aGUgbm9uLW9idmlvdXMgcmVsYXRpb25zaGlwcywgYW55IHBvdGVudGlhbCBjb25mbGljdHMsIGFuZCB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMgZm9yIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byBpbW1lZGlhdGVseSB1bmRlcnN0YW5kIHRoZSBlbnRpcmUgbGFuZHNjYXBlLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgY29ubmVjdGVkIHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE5OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdGlwYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL0tjb25maWc9Nj1tZW51Y29uZmlnIFRJUENcbm5ldC90aXBjL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBUSVBDIFByb3RvY29sXCYjMzQ7XG5uZXQvdGlwYy9LY29uZmlnOjg6XHRkZXBlbmRzIG9uIElORVRcbm5ldC90aXBjL0tjb25maWctOS1cdGhlbHBcbi0tXG5uZXQvdGlwYy9LY29uZmlnPTI0PWNvbmZpZyBUSVBDX01FRElBX0lCXG5uZXQvdGlwYy9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtJbmZpbmlCYW5kIG1lZGlhIHR5cGUgc3VwcG9ydFwmIzM0O1xubmV0L3RpcGMvS2NvbmZpZzoyNjpcdGRlcGVuZHMgb24gVElQQyBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORF9JUE9JQlxubmV0L3RpcGMvS2NvbmZpZy0yNy1cdGhlbHBcbi0tXG5uZXQvdGlwYy9LY29uZmlnPTMwPWNvbmZpZyBUSVBDX01FRElBX1VEUFxubmV0L3RpcGMvS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7SVAvVURQIG1lZGlhIHR5cGUgc3VwcG9ydFwmIzM0O1xubmV0L3RpcGMvS2NvbmZpZzozMjpcdGRlcGVuZHMgb24gVElQQ1xubmV0L3RpcGMvS2NvbmZpZy0zMy1cdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuLS1cbm5ldC90aXBjL0tjb25maWc9Mzg9Y29uZmlnIFRJUENfQ1JZUFRPXG5uZXQvdGlwYy9LY29uZmlnLTM5LVx0Ym9vbCBcJiMzNDtUSVBDIGVuY3J5cHRpb24gc3VwcG9ydFwmIzM0O1xubmV0L3RpcGMvS2NvbmZpZzo0MDpcdGRlcGVuZHMgb24gVElQQ1xubmV0L3RpcGMvS2NvbmZpZy00MS1cdHNlbGVjdCBDUllQVE9cbi0tXG5uZXQvdGlwYy9LY29uZmlnPTUzPWNvbmZpZyBUSVBDX0RJQUdcbm5ldC90aXBjL0tjb25maWctNTQtXHR0cmlzdGF0ZSBcJiMzNDtUSVBDOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbm5ldC90aXBjL0tjb25maWc6NTU6XHRkZXBlbmRzIG9uIFRJUENcbm5ldC90aXBjL0tjb25maWctNTYtXHRkZWZhdWx0IHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxOToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NzY3CgkJCQkJCQlvdXRwdXQ6IDY5CgkJCQkJCQl0aG91Z2h0czogNDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVElQQyBDb25maWd1cmF0aW9uIGZvciBGb2N1cyBTeW1ib2xzKioKCk9rYXksIHNvIGBUSVBDYCBkZXBlbmRzIG9uIGBJTkVUYCwgdGhhdCYjMzk7cyBvdXIgc3RhcnRpbmcgcG9pbnQuIFdlIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbi4gTG9va2luZyBhdCB0aGUgcGF0Y2gsIHRoZSBjb2RlIG1vZGlmaWVzIGEgYnVuY2ggb2YgZnVuY3Rpb25zLiBOb3csIHdoaWNoIG9uZXMgYXJlIGtleT8KClRoZSBwYXRjaCBzZWVtcyB0byBiZSB0b3VjaGluZyBgdGlwY19pbml0X25ldGAsIGB0aXBjX2V4aXRfbmV0YCwgYG5hbWVkX2Rpc3RyaWJ1dGVgLCBgdGlwY19uYW1lZF9kaXN0cmlidXRlYCwgYHRpcGNfbmFtZWRfbm9kZV91cGAsIGB0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZWAsIGB0aXBjX25hbWV0YmxfcHVibGlzaGAsIGB0aXBjX25hbWV0Ymxfd2l0aGRyYXdgLCBgdGlwY19uZXRfZmluYWxpemVgLCBgdGlwY19ub2RlX2Rvd25gLCBgdGlwY19ub2RlX2Rpc3RfYnVsa2AsIGB0aXBjX25vZGVfY2FuY2VsX3dvcmtgLCBgdGlwY19ub2RlX3dyaXRlX3VubG9ja2AsIGB0aXBjX25vZGVfY3JlYXRlYCwgYHRpcGNfbm9kZV93YWtldXBgLCBhbmQgYHRpcGNfbm9kZV90aW1lb3V0YC4gVGhhdCYjMzk7cyBhIGxvdCwgYnV0IHdlIGNhbiBkZWZpbml0ZWx5IG5hcnJvdyBpdCBkb3duLgoKTGV0JiMzOTtzIGZvY3VzIG9uIHRoZSBmdW5jdGlvbnMgSSBzdXNwZWN0IGFyZSBtb3N0IGNlbnRyYWwgdG8gdGhlIGNoYW5nZXM6IGB0aXBjX25hbWVkX25vZGVfdXBgLCBgdGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGVgLCBgdGlwY19uYW1ldGJsX3B1Ymxpc2hgLCBgdGlwY19uYW1ldGJsX3dpdGhkcmF3YCwgYHRpcGNfbm9kZV9kaXN0X2J1bGtgLCBhbmQgYHRpcGNfbm9kZV93YWtldXBgLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIOKAkyBhcmUgdGhlc2UgZnVuY3Rpb25zIHN0YXRpYyBvciBleHBvcnRlZD8gTGV0JiMzOTtzIGNoZWNrLiBBaGEsIGB0aXBjX25hbWVkX25vZGVfdXBgLCBgdGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGVgLCBgdGlwY19uYW1ldGJsX3B1Ymxpc2hgLCBgdGlwY19uYW1ldGJsX3dpdGhkcmF3YCwgYW5kIGB0aXBjX25vZGVfd2FrZXVwYCBhcmUgZ2xvYmFsLCB3aGljaCBpcyB3aGF0IHdlIG5lZWQgdG8gZm9jdXMgb24uIGB0aXBjX25vZGVfZGlzdF9idWxrYCBpcyAqc3RhdGljKiwgc28gaXQmIzM5O3Mgbm90IGdvaW5nIHRvIGJlIGEgZ29vZCBzeW1ib2wuCgpOb3csIGxldCYjMzk7cyBnbyBjaGVjayB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzOiBgbmV0L3RpcGMvbmFtZV9kaXN0ci5jYCBhbmQgYG5ldC90aXBjL25vZGUuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTk6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGlwY19uYW1lZF9ub2RlX3VwfHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlfHRpcGNfbmFtZXRibF9wdWJsaXNofHRpcGNfbmFtZXRibF93aXRoZHJhd3x0aXBjX25vZGVfd2FrZXVwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL25hbWVfZGlzdHIuYz0yMDg9c3RhdGljIGludCB0aXBjX25hbWVkX2Rpc3RyaWJ1dGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUpXG4tLVxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTIzMS0vKipcbm5ldC90aXBjL25hbWVfZGlzdHIuYzoyMzI6ICogdGlwY19uYW1lZF9ub2RlX3VwIC0gdGVsbCBzcGVjaWZpZWQgbm9kZSBhYm91dCBhbGwgcHVibGljYXRpb25zIGJ5IHRoaXMgbm9kZVxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTIzMy0gKiBAbmV0OiB0aGUgYXNzb2NpYXRlZCBuZXR3b3JrIG5hbWVzcGFjZVxuLS1cbm5ldC90aXBjL25hbWVfZGlzdHIuYy0yMzYtICovXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmM6MjM3OmludCB0aXBjX25hbWVkX25vZGVfdXAoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUsIHUxNiBjYXBhYmlsaXRpZXMpXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmMtMjM4LXtcbi0tXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmMtMjQ5LVx0ICogICAgdGVhcmRvd24uXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmM6MjUwOlx0ICogMi4gT3IgdGlwY19uZXRfZmluYWxpemUoKSAtLS1cdTAwM2UgdGlwY19uYW1ldGJsX3B1Ymxpc2goKSBoYXMgZmFpbGVkXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmMtMjUxLVx0ICogICAgdG8gaW5zZXJ0IG5vZGUgc2VsZiBhZGRyZXNzIHB1YmxpY2F0aW9uIGludG8gbnQtXHUwMDNlY2x1c3Rlcl9zY29wZVxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTI1Mi1cdCAqICAgIGR1ZSB0byBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlLlxubmV0L3RpcGMvbmFtZV9kaXN0ci5jOjI1MzpcdCAqIDMuIE9yIHRpcGNfbmV0X2ZpbmFsaXplKCkgLS0tXHUwMDNlIHRpcGNfbmFtZXRibF9wdWJsaXNoKCkgaGFzIG5vdFxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTI1NC1cdCAqICAgIGV4ZWN1dGVkIHlldC5cbi0tXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmMtMjY1LS8qKlxubmV0L3RpcGMvbmFtZV9kaXN0ci5jOjI2NjogKiB0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZSAtIGRpc3RyaWJ1dGUgYWxsIHB1YmxpY2F0aW9ucyB0byBzcGVjaWZpZWQgbm9kZVxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTI2Ny0gKiBAbmV0OiB0aGUgYXNzb2NpYXRlZCBuZXR3b3JrIG5hbWVzcGFjZVxuLS1cbm5ldC90aXBjL25hbWVfZGlzdHIuYy0yNjktICovXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmM6MjcwOmludCB0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSlcbm5ldC90aXBjL25hbWVfZGlzdHIuYy0yNzEte1xuLS1cbm5ldC90aXBjL25hbWVfZGlzdHIuYy0yNzgtXHRyZWFkX3VubG9ja19iaChcdTAwMjZudC1cdTAwM2VjbHVzdGVyX3Njb3BlX2xvY2spO1xubmV0L3RpcGMvbmFtZV9kaXN0ci5jOjI3OTpcdC8qIHRpcGNfbmV0X2ZpbmFsaXplKCkgLS0tXHUwMDNlIHRpcGNfbmFtZXRibF9wdWJsaXNoKCkgaGFzIGZhaWxlZCB0byBpbnNlcnRcbm5ldC90aXBjL25hbWVfZGlzdHIuYy0yODAtXHQgKiBub2RlIHNlbGYgYWRkcmVzcyBwdWJsaWNhdGlvbiBpbnRvIG50LVx1MDAzZWNsdXN0ZXJfc2NvcGUgZHVlIHRvIG1lbW9yeVxuLS1cbm5ldC90aXBjL25hbWVfZGlzdHIuYy0yOTEtXHRcdFx0ICAgVElQQ19OT0RFX1NUQVRFLCB0bi1cdTAwM2Vub2RlX2FkZHIsIHRuLVx1MDAzZW5vZGVfYWRkcik7XG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmM6MjkyOlx0XHRpZiAoIXRpcGNfbmFtZXRibF9wdWJsaXNoKG5ldCwgXHUwMDI2dWEsIFx1MDAyNnNrLCB0bi1cdTAwM2Vub2RlX2FkZHIpKVxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTI5My1cdFx0XHRyZXR1cm4gLUVOT0JVRlM7XG4tLVxubmV0L3RpcGMvbmFtZV9kaXN0ci5oPTcxPXN0cnVjdCBza19idWZmICp0aXBjX25hbWVkX3dpdGhkcmF3KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHB1YmxpY2F0aW9uICpwdWJsKTtcbm5ldC90aXBjL25hbWVfZGlzdHIuaDo3MjppbnQgdGlwY19uYW1lZF9ub2RlX3VwKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlLCB1MTYgY2FwYWJpbGl0aWVzKTtcbm5ldC90aXBjL25hbWVfZGlzdHIuaDo3MzppbnQgdGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUpO1xubmV0L3RpcGMvbmFtZV9kaXN0ci5oLTc0LXZvaWQgdGlwY19uYW1lZF9yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpuYW1lZHEsXG4tLVxubmV0L3RpcGMvbmFtZV90YWJsZS5jPTczMj12b2lkIHRpcGNfbmFtZXRibF9idWlsZF9ncm91cChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX2dyb3VwICpncnAsXG4tLVxubmV0L3RpcGMvbmFtZV90YWJsZS5jLTc1OS1cbm5ldC90aXBjL25hbWVfdGFibGUuYzo3NjA6LyogdGlwY19uYW1ldGJsX3B1Ymxpc2ggLSBhZGQgc2VydmljZSBiaW5kaW5nIHRvIG5hbWUgdGFibGVcbm5ldC90aXBjL25hbWVfdGFibGUuYy03NjEtICovXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmM6NzYyOnN0cnVjdCBwdWJsaWNhdGlvbiAqdGlwY19uYW1ldGJsX3B1Ymxpc2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGlwY191YWRkciAqdWEsXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmMtNzYzLVx0XHRcdFx0XHQgc3RydWN0IHRpcGNfc29ja2V0X2FkZHIgKnNrLCB1MzIga2V5KVxuLS1cbm5ldC90aXBjL25hbWVfdGFibGUuYy04MTItLyoqXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmM6ODEzOiAqIHRpcGNfbmFtZXRibF93aXRoZHJhdyAtIHdpdGhkcmF3IGEgc2VydmljZSBiaW5kaW5nXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmMtODE0LSAqIEBuZXQ6IG5ldHdvcmsgbmFtZXNwYWNlXG4tLVxubmV0L3RpcGMvbmFtZV90YWJsZS5jLTgxOC0gKi9cbm5ldC90aXBjL25hbWVfdGFibGUuYzo4MTk6dm9pZCB0aXBjX25hbWV0Ymxfd2l0aGRyYXcoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGlwY191YWRkciAqdWEsXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmMtODIwLVx0XHRcdCAgIHN0cnVjdCB0aXBjX3NvY2tldF9hZGRyICpzaywgdTMyIGtleSlcbi0tXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmg9MTI2PXZvaWQgdGlwY19uYW1ldGJsX2J1aWxkX2dyb3VwKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfZ3JvdXAgKmdycCxcbm5ldC90aXBjL25hbWVfdGFibGUuaC0xMjctXHRcdFx0ICAgICAgc3RydWN0IHRpcGNfdWFkZHIgKnVhKTtcbm5ldC90aXBjL25hbWVfdGFibGUuaDoxMjg6c3RydWN0IHB1YmxpY2F0aW9uICp0aXBjX25hbWV0YmxfcHVibGlzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX3VhZGRyICp1YSxcbm5ldC90aXBjL25hbWVfdGFibGUuaC0xMjktXHRcdFx0XHRcdCBzdHJ1Y3QgdGlwY19zb2NrZXRfYWRkciAqc2ssIHUzMiBrZXkpO1xubmV0L3RpcGMvbmFtZV90YWJsZS5oOjEzMDp2b2lkIHRpcGNfbmFtZXRibF93aXRoZHJhdyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX3VhZGRyICp1YSxcbm5ldC90aXBjL25hbWVfdGFibGUuaC0xMzEtXHRcdFx0ICAgc3RydWN0IHRpcGNfc29ja2V0X2FkZHIgKnNrLCB1MzIga2V5KTtcbi0tXG5uZXQvdGlwYy9uZXQuYz0xMjY9c3RhdGljIHZvaWQgdGlwY19uZXRfZmluYWxpemUoc3RydWN0IG5ldCAqbmV0LCB1MzIgYWRkcilcbi0tXG5uZXQvdGlwYy9uZXQuYy0xNDAtXHR0aXBjX21vbl9yZWluaXRfc2VsZihuZXQpO1xubmV0L3RpcGMvbmV0LmM6MTQxOlx0dGlwY19uYW1ldGJsX3B1Ymxpc2gobmV0LCBcdTAwMjZ1YSwgXHUwMDI2c2ssIGFkZHIpO1xubmV0L3RpcGMvbmV0LmMtMTQyLVx0YXRvbWljX3NldChcdTAwMjZ0bi1cdTAwM2VmaW5hbGl6ZWQsIDEpO1xuLS1cbm5ldC90aXBjL25ldC5jLTE0NS1cdCAqL1xubmV0L3RpcGMvbmV0LmM6MTQ2Olx0dGlwY19ub2RlX3dha2V1cChuZXQpO1xubmV0L3RpcGMvbmV0LmMtMTQ3LX1cbi0tXG5uZXQvdGlwYy9ub2RlLmM9NDEwPXN0YXRpYyB2b2lkIHRpcGNfbm9kZV9kaXN0X2J1bGsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC90aXBjL25vZGUuYy00MjMtXG5uZXQvdGlwYy9ub2RlLmM6NDI0Olx0aWYgKHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlKG5vZGUtXHUwMDNlbmV0LCBub2RlLVx1MDAzZWFkZHIpIFx1MDAzYyAwKVxubmV0L3RpcGMvbm9kZS5jLTQyNS1cdFx0dGlwY19ub2RlX2Rvd24obm9kZSk7XG4tLVxubmV0L3RpcGMvbm9kZS5jPTQ1NT1zdGF0aWMgdm9pZCB0aXBjX25vZGVfd3JpdGVfdW5sb2NrKHN0cnVjdCB0aXBjX25vZGUgKm4pXG4tLVxubmV0L3RpcGMvbm9kZS5jLTQ5MS1cbm5ldC90aXBjL25vZGUuYzo0OTI6XHRcdHJjID0gdGlwY19uYW1lZF9ub2RlX3VwKG5ldCwgbm9kZSwgbi1cdTAwM2VjYXBhYmlsaXRpZXMpO1xubmV0L3RpcGMvbm9kZS5jLTQ5My1cdFx0LyogRGVmZXIgYnVsayBkaXN0cmlidXRpb24gdG8gd29yayBxdWV1ZSAqL1xuLS1cbm5ldC90aXBjL25vZGUuYy01MTEtXHRcdHRpcGNfbW9uX3BlZXJfdXAobmV0LCBub2RlLCBiZWFyZXJfaWQpO1xubmV0L3RpcGMvbm9kZS5jOjUxMjpcdFx0dGlwY19uYW1ldGJsX3B1Ymxpc2gobmV0LCBcdTAwMjZ1YSwgXHUwMDI2c2ssIHNrLnJlZik7XG5uZXQvdGlwYy9ub2RlLmMtNTEzLVx0fVxuLS1cbm5ldC90aXBjL25vZGUuYy01MTUtXHRcdHRpcGNfbW9uX3BlZXJfZG93bihuZXQsIG5vZGUsIGJlYXJlcl9pZCk7XG5uZXQvdGlwYy9ub2RlLmM6NTE2Olx0XHR0aXBjX25hbWV0Ymxfd2l0aGRyYXcobmV0LCBcdTAwMjZ1YSwgXHUwMDI2c2ssIHNrLnJlZik7XG5uZXQvdGlwYy9ub2RlLmMtNTE3LVx0fVxuLS1cbm5ldC90aXBjL25vZGUuYz03Mjg9dm9pZCB0aXBjX25vZGVfc3RvcChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L3RpcGMvbm9kZS5jLTczOC1cbm5ldC90aXBjL25vZGUuYzo3Mzk6dm9pZCB0aXBjX25vZGVfd2FrZXVwKHN0cnVjdCBuZXQgKm5ldClcbm5ldC90aXBjL25vZGUuYy03NDAte1xuLS1cbm5ldC90aXBjL25vZGUuaD03Nz12b2lkIHRpcGNfbm9kZV9zdG9wKHN0cnVjdCBuZXQgKm5ldCk7XG5uZXQvdGlwYy9ub2RlLmg6Nzg6dm9pZCB0aXBjX25vZGVfd2FrZXVwKHN0cnVjdCBuZXQgKm5ldCk7XG5uZXQvdGlwYy9ub2RlLmgtNzktYm9vbCB0aXBjX25vZGVfZ2V0X2lkKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGFkZHIsIHU4ICppZCk7XG4tLVxubmV0L3RpcGMvc29ja2V0LmM9MjkwNz1zdGF0aWMgaW50IHRpcGNfc2tfcHVibGlzaChzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCB0aXBjX3VhZGRyICp1YSlcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yOTIxLVx0c2thZGRyLm5vZGUgPSB0aXBjX293bl9hZGRyKG5ldCk7XG5uZXQvdGlwYy9zb2NrZXQuYzoyOTIyOlx0cCA9IHRpcGNfbmFtZXRibF9wdWJsaXNoKG5ldCwgdWEsIFx1MDAyNnNrYWRkciwga2V5KTtcbm5ldC90aXBjL3NvY2tldC5jLTI5MjMtXHRpZiAodW5saWtlbHkoIXApKVxuLS1cbm5ldC90aXBjL3NvY2tldC5jPTI5MzI9c3RhdGljIGludCB0aXBjX3NrX3dpdGhkcmF3KHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgc3RydWN0IHRpcGNfdWFkZHIgKnVhKVxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTI5NDItXHRcdFx0XHQgICBwLVx1MDAzZXNyLnR5cGUsIHAtXHUwMDNlc3IubG93ZXIsIHAtXHUwMDNlc3IudXBwZXIpO1xubmV0L3RpcGMvc29ja2V0LmM6Mjk0MzpcdFx0XHR0aXBjX25hbWV0Ymxfd2l0aGRyYXcobmV0LCBcdTAwMjZfdWEsIFx1MDAyNnAtXHUwMDNlc2ssIHAtXHUwMDNla2V5KTtcbm5ldC90aXBjL3NvY2tldC5jLTI5NDQtXHRcdFx0Y29udGludWU7XG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMjk1NC1cdFx0XHRicmVhaztcbm5ldC90aXBjL3NvY2tldC5jOjI5NTU6XHRcdHRpcGNfbmFtZXRibF93aXRoZHJhdyhuZXQsIHVhLCBcdTAwMjZwLVx1MDAzZXNrLCBwLVx1MDAzZWtleSk7XG5uZXQvdGlwYy9zb2NrZXQuYy0yOTU2LVx0XHRyYyA9IDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTk6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMzMTgKCQkJCQkJCW91dHB1dDogMTQ1CgkJCQkJCQl0aG91Z2h0czogMjI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IEFzc2Vzc21lbnQ6IFRJUEMgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgYXNzb2NpYXRlZCBzeW1ib2xzLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdvcnRoIHB1cnN1aW5nIHdpdGggZnV6emluZy4gVGhlIGtleSBmdW5jdGlvbnMgdG8gdGFyZ2V0IGFyZTogYHRpcGNfbmFtZWRfbm9kZV91cGAsIGB0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZWAsIGB0aXBjX25hbWV0YmxfcHVibGlzaGAsIGB0aXBjX25hbWV0Ymxfd2l0aGRyYXdgLCBhbmQgYHRpcGNfbm9kZV93YWtldXBgLiBUaGV5JiMzOTtyZSBhbGwgZXhwb3J0ZWQsIHNvIHRoYXQgbWFrZXMgdGhpbmdzIHN0cmFpZ2h0Zm9yd2FyZCBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS4KCkkgbmVlZGVkIHRvIGNvbmZpcm0gdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24gYW5kIGluaXRpYWxseSBJIHRob3VnaHQgaXQgd2FzIGp1c3QgYFRJUENgLCBidXQgSSB3YW50ZWQgdG8gbWFrZSBzdXJlIHRoZXJlIHdlcmVuJiMzOTt0IGFueSBvdGhlciBkZXBlbmRlbmNpZXMgdGhhdCBJIHdhcyBtaXNzaW5nLiBJdCBsb29rcyBsaWtlIGBDT05GSUdfVElQQ2AgaXMgdGhlIHByaW1hcnkgb25lLCBhbmQgdGhhbmtmdWxseSBpdCBjYW4gYmUgYnVpbHQtaW4sIHdoaWNoIGlzIHdoYXQgd2UgdXN1YWxseSB3YW50IGZvciBzeXprYWxsZXIuCgpJIGRpZCBhIHNlY29uZCBwYXNzIHRocm91Z2ggdGhlIHBhdGNoIHRvIHNlZSBpZiBJIGhhZCBtaXNzZWQgYW55dGhpbmcuIFRoZXJlJiMzOTtzIGEgYCNpZmRlZiBDT05GSUdfVElQQ19DUllQVE9gIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBidXQgdGhlIHBhdGNoIGl0c2VsZiBkb2VzbiYjMzk7dCBzZWVtIHRvIGRlcGVuZCBvbiBpdC4gU28sIHllYWgsIGl0IGxvb2tzIGxpa2UgYFRJUENgIGFsb25lIGlzIHN1ZmZpY2llbnQgZm9yIHRoaXMgb25lLgoKQWxyaWdodCwgd2l0aCB0aGF0IGNvbmZpcm1lZCwgSSB0aGluayB3ZSYjMzk7cmUgZ29vZCB0byBjYWxsIGBzZXQtcmVzdWx0c2AgYW5kIG1vdmUgZm9yd2FyZCB3aXRoIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE5OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtUSVBDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGlwY19uYW1lZF9ub2RlX3VwJiMzNDssCiAgICAmIzM0O3RpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlJiMzNDssCiAgICAmIzM0O3RpcGNfbmFtZXRibF9wdWJsaXNoJiMzNDssCiAgICAmIzM0O3RpcGNfbmFtZXRibF93aXRoZHJhdyYjMzQ7LAogICAgJiMzNDt0aXBjX25vZGVfd2FrZXVwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSB3b3JrcXVldWUgZm9yIGJ1bGsgZGlzdHJpYnV0aW9uIG9mIGNsdXN0ZXIgc2NvcGUgcHVibGljYXRpb25zIGluIFRJUEMsIG1vZGlmeWluZyBjb3JlIHByb3RvY29sIGxvZ2ljIHN1Y2ggYXMgbm9kZSBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBuYW1lIHRhYmxlIHB1Ymxpc2hpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgVElQQyBzdWJzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0aXBjX25hbWVkX25vZGVfdXAmIzM0OywKICAgICYjMzQ7dGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGUmIzM0OywKICAgICYjMzQ7dGlwY19uYW1ldGJsX3B1Ymxpc2gmIzM0OywKICAgICYjMzQ7dGlwY19uYW1ldGJsX3dpdGhkcmF3JiMzNDssCiAgICAmIzM0O3RpcGNfbm9kZV93YWtldXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHdvcmtxdWV1ZSBmb3IgYnVsayBkaXN0cmlidXRpb24gb2YgY2x1c3RlciBzY29wZSBwdWJsaWNhdGlvbnMgaW4gVElQQywgbW9kaWZ5aW5nIGNvcmUgcHJvdG9jb2wgbG9naWMgc3VjaCBhcyBub2RlIHN0YXRlIG1hbmFnZW1lbnQgYW5kIG5hbWUgdGFibGUgcHVibGlzaGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBUSVBDIHN1YnN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE5OjI5OjMzLjcyMTI0MTMyNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MjcwNzQ2Nzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRJUENcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0aXBjX25hbWVkX25vZGVfdXBcIixcbiAgICBcInRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlXCIsXG4gICAgXCJ0aXBjX25hbWV0YmxfcHVibGlzaFwiLFxuICAgIFwidGlwY19uYW1ldGJsX3dpdGhkcmF3XCIsXG4gICAgXCJ0aXBjX25vZGVfd2FrZXVwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHdvcmtxdWV1ZSBmb3IgYnVsayBkaXN0cmlidXRpb24gb2YgY2x1c3RlciBzY29wZSBwdWJsaWNhdGlvbnMgaW4gVElQQywgbW9kaWZ5aW5nIGNvcmUgcHJvdG9jb2wgbG9naWMgc3VjaCBhcyBub2RlIHN0YXRlIG1hbmFnZW1lbnQgYW5kIG5hbWUgdGFibGUgcHVibGlzaGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBUSVBDIHN1YnN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTk6Mjk6MzMuNzIxMjQ2Nzk0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzQ0NjM0NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5ZTFmYWY3MjExNjg3NGIzNjFiY2RkYzY4NDQ4ZGIwNjEyNzljYzMwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDMxIDE5OjI5OjMzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC90aXBjL2NvcmUuYyBiL25ldC90aXBjL2NvcmUuY1xcbmluZGV4IDMxNTk3NWMzYmU4MTguLjFlMWZlNzhjYzRlZTQgMTAwNjQ0XFxuLS0tIGEvbmV0L3RpcGMvY29yZS5jXFxuKysrIGIvbmV0L3RpcGMvY29yZS5jXFxuQEAgLTYxLDYgKzYxLDggQEAgc3RhdGljIGludCBfX25ldF9pbml0IHRpcGNfaW5pdF9uZXQoc3RydWN0IG5ldCAqbmV0KVxcbiBcXHR0bi1cXHUwMDNldHJpYWxfYWRkciA9IDA7XFxuIFxcdHRuLVxcdTAwM2VhZGRyX3RyaWFsX2VuZCA9IDA7XFxuIFxcdHRuLVxcdTAwM2VjYXBhYmlsaXRpZXMgPSBUSVBDX05PREVfQ0FQQUJJTElUSUVTO1xcbitcXHRhdG9taWNfc2V0KFxcdTAwMjZ0bi1cXHUwMDNlbm9kZV93cV9jb3VudCwgMCk7XFxuK1xcdGF0b21pY19zZXQoXFx1MDAyNnRuLVxcdTAwM2VmaW5hbGl6ZWQsIDApO1xcbiBcXHRJTklUX1dPUksoXFx1MDAyNnRuLVxcdTAwM2V3b3JrLCB0aXBjX25ldF9maW5hbGl6ZV93b3JrKTtcXG4gXFx0bWVtc2V0KHRuLVxcdTAwM2Vub2RlX2lkLCAwLCBzaXplb2YodG4tXFx1MDAzZW5vZGVfaWQpKTtcXG4gXFx0bWVtc2V0KHRuLVxcdTAwM2Vub2RlX2lkX3N0cmluZywgMCwgc2l6ZW9mKHRuLVxcdTAwM2Vub2RlX2lkX3N0cmluZykpO1xcbkBAIC0xMTksNiArMTIxLDcgQEAgc3RhdGljIHZvaWQgX19uZXRfZXhpdCB0aXBjX2V4aXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcXG4gI2lmZGVmIENPTkZJR19USVBDX0NSWVBUT1xcbiBcXHR0aXBjX2NyeXB0b19zdG9wKFxcdTAwMjZ0aXBjX25ldChuZXQpLVxcdTAwM2VjcnlwdG9fdHgpO1xcbiAjZW5kaWZcXG4rXFx0d2FpdF92YXJfZXZlbnQoXFx1MDAyNnRuLVxcdTAwM2Vub2RlX3dxX2NvdW50LCAhYXRvbWljX3JlYWQoXFx1MDAyNnRuLVxcdTAwM2Vub2RlX3dxX2NvdW50KSk7XFxuIFxcdHdhaXRfdmFyX2V2ZW50KFxcdTAwMjZ0bi1cXHUwMDNld3FfY291bnQsIGF0b21pY19yZWFkKFxcdTAwMjZ0bi1cXHUwMDNld3FfY291bnQpID09IDApO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvdGlwYy9jb3JlLmggYi9uZXQvdGlwYy9jb3JlLmhcXG5pbmRleCA5Y2U1ZjlmZjZjYzAzLi5iZTMzNWNlODMzODlhIDEwMDY0NFxcbi0tLSBhL25ldC90aXBjL2NvcmUuaFxcbisrKyBiL25ldC90aXBjL2NvcmUuaFxcbkBAIC0xNDUsNiArMTQ1LDEwIEBAIHN0cnVjdCB0aXBjX25ldCB7XFxuIFxcdHN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrO1xcbiBcXHQvKiBUaGUgbnVtYmVycyBvZiB3b3JrIHF1ZXVlcyBpbiBzY2hlZHVsZSAqL1xcbiBcXHRhdG9taWNfdCB3cV9jb3VudDtcXG4rXFx0LyogVGhlIG51bWJlcnMgb2Ygd29ya3Mgb2YgY3JlYXRlZCBub2RlcyBpbiBzY2hlZHVsZSAqL1xcbitcXHRhdG9taWNfdCBub2RlX3dxX2NvdW50O1xcbitcXHQvKiBmbGFnIHRvIHdha2UgdXAgc2NoZWR1bGVkIHdvcmtzIG9mIGNyZWF0ZWQgbm9kZXMgKi9cXG4rXFx0YXRvbWljX3QgZmluYWxpemVkO1xcbiB9O1xcbiBcXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgdGlwY19uZXQgKnRpcGNfbmV0KHN0cnVjdCBuZXQgKm5ldClcXG5kaWZmIC0tZ2l0IGEvbmV0L3RpcGMvbmFtZV9kaXN0ci5jIGIvbmV0L3RpcGMvbmFtZV9kaXN0ci5jXFxuaW5kZXggYmE0ZjQ5MDZlMTNiNy4uYzhlMjg0OTczNTZlZiAxMDA2NDRcXG4tLS0gYS9uZXQvdGlwYy9uYW1lX2Rpc3RyLmNcXG4rKysgYi9uZXQvdGlwYy9uYW1lX2Rpc3RyLmNcXG5AQCAtMTQ3LDggKzE0Nyw4IEBAIHN0cnVjdCBza19idWZmICp0aXBjX25hbWVkX3dpdGhkcmF3KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHB1YmxpY2F0aW9uICpwKVxcbiAgKiBAcGxzOiBsaW5rZWQgbGlzdCBvZiBwdWJsaWNhdGlvbiBpdGVtcyB0byBiZSBwYWNrZWQgaW50byBidWZmZXIgY2hhaW5cXG4gICogQHNlcW5vOiBzZXF1ZW5jZSBudW1iZXIgZm9yIHRoaXMgbWVzc2FnZVxcbiAgKi9cXG4tc3RhdGljIHZvaWQgbmFtZWRfZGlzdHJpYnV0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsXFxuLVxcdFxcdFxcdCAgICAgdTMyIGRub2RlLCBzdHJ1Y3QgbGlzdF9oZWFkICpwbHMsIHUxNiBzZXFubylcXG4rc3RhdGljIGludCBuYW1lZF9kaXN0cmlidXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCxcXG4rXFx0XFx0XFx0ICAgIHUzMiBkbm9kZSwgc3RydWN0IGxpc3RfaGVhZCAqcGxzLCB1MTYgc2Vxbm8pXFxuIHtcXG4gXFx0c3RydWN0IHB1YmxpY2F0aW9uICpwdWJsO1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gTlVMTDtcXG5AQCAtMTY0LDggKzE2NCw5IEBAIHN0YXRpYyB2b2lkIG5hbWVkX2Rpc3RyaWJ1dGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0LFxcbiBcXHRcXHRcXHRza2IgPSBuYW1lZF9wcmVwYXJlX2J1ZihuZXQsIFBVQkxJQ0FUSU9OLCBtc2dfcmVtLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRkbm9kZSk7XFxuIFxcdFxcdFxcdGlmICghc2tiKSB7XFxuK1xcdFxcdFxcdFxcdF9fc2tiX3F1ZXVlX3B1cmdlKGxpc3QpO1xcbiBcXHRcXHRcXHRcXHRwcl93YXJuKFxcXCJCdWxrIHB1YmxpY2F0aW9uIGZhaWx1cmVcXFxcblxcXCIpO1xcbi1cXHRcXHRcXHRcXHRyZXR1cm47XFxuK1xcdFxcdFxcdFxcdHJldHVybiAxO1xcbiBcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdGhkciA9IGJ1Zl9tc2coc2tiKTtcXG4gXFx0XFx0XFx0bXNnX3NldF9iY19hY2tfaW52YWxpZChoZHIsIHRydWUpO1xcbkBAIC0xOTUsMTUgKzE5NiwxNiBAQCBzdGF0aWMgdm9pZCBuYW1lZF9kaXN0cmlidXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCxcXG4gXFx0aGRyID0gYnVmX21zZyhza2JfcGVla190YWlsKGxpc3QpKTtcXG4gXFx0bXNnX3NldF9sYXN0X2J1bGsoaGRyKTtcXG4gXFx0bXNnX3NldF9uYW1lZF9zZXFubyhoZHIsIHNlcW5vKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbiB9XFxuIFxcbiAvKipcXG4tICogdGlwY19uYW1lZF9ub2RlX3VwIC0gdGVsbCBzcGVjaWZpZWQgbm9kZSBhYm91dCBhbGwgcHVibGljYXRpb25zIGJ5IHRoaXMgbm9kZVxcbisgKiB0aXBjX25hbWVkX2Rpc3RyaWJ1dGUgLSBkaXN0cmlidXRlIGFsbCBwdWJsaWNhdGlvbnMgdG8gc3BlY2lmaWVkIG5vZGVcXG4gICogQG5ldDogdGhlIGFzc29jaWF0ZWQgbmV0d29yayBuYW1lc3BhY2VcXG4gICogQGRub2RlOiBkZXN0aW5hdGlvbiBub2RlXFxuLSAqIEBjYXBhYmlsaXRpZXM6IHBlZXIgbm9kZSdzIGNhcGFiaWxpdGllc1xcbiAgKi9cXG4tdm9pZCB0aXBjX25hbWVkX25vZGVfdXAoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUsIHUxNiBjYXBhYmlsaXRpZXMpXFxuK3N0YXRpYyBpbnQgdGlwY19uYW1lZF9kaXN0cmlidXRlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlKVxcbiB7XFxuIFxcdHN0cnVjdCBuYW1lX3RhYmxlICpudCA9IHRpcGNfbmFtZV90YWJsZShuZXQpO1xcbiBcXHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobmV0KTtcXG5AQCAtMjEyLDE1ICsyMTQsODYgQEAgdm9pZCB0aXBjX25hbWVkX25vZGVfdXAoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUsIHUxNiBjYXBhYmlsaXRpZXMpXFxuIFxcbiBcXHRfX3NrYl9xdWV1ZV9oZWFkX2luaXQoXFx1MDAyNmhlYWQpO1xcbiBcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnRuLVxcdTAwM2VuYW1ldGJsX2xvY2spO1xcbi1cXHRpZiAoIShjYXBhYmlsaXRpZXMgXFx1MDAyNiBUSVBDX05BTUVEX0JDQVNUKSlcXG4tXFx0XFx0bnQtXFx1MDAzZXJjX2Rlc3RzKys7XFxuIFxcdHNlcW5vID0gbnQtXFx1MDAzZXNuZF9ueHQ7XFxuIFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ0bi1cXHUwMDNlbmFtZXRibF9sb2NrKTtcXG4gXFxuIFxcdHJlYWRfbG9ja19iaChcXHUwMDI2bnQtXFx1MDAzZWNsdXN0ZXJfc2NvcGVfbG9jayk7XFxuLVxcdG5hbWVkX2Rpc3RyaWJ1dGUobmV0LCBcXHUwMDI2aGVhZCwgZG5vZGUsIFxcdTAwMjZudC1cXHUwMDNlY2x1c3Rlcl9zY29wZSwgc2Vxbm8pO1xcbitcXHRpZiAobmFtZWRfZGlzdHJpYnV0ZShuZXQsIFxcdTAwMjZoZWFkLCBkbm9kZSwgXFx1MDAyNm50LVxcdTAwM2VjbHVzdGVyX3Njb3BlLCBzZXFubykpIHtcXG4rXFx0XFx0cmVhZF91bmxvY2tfYmgoXFx1MDAyNm50LVxcdTAwM2VjbHVzdGVyX3Njb3BlX2xvY2spO1xcbitcXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxuK1xcdH1cXG4gXFx0dGlwY19ub2RlX3htaXQobmV0LCBcXHUwMDI2aGVhZCwgZG5vZGUsIDApO1xcbiBcXHRyZWFkX3VubG9ja19iaChcXHUwMDI2bnQtXFx1MDAzZWNsdXN0ZXJfc2NvcGVfbG9jayk7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rLyoqXFxuKyAqIHRpcGNfbmFtZWRfbm9kZV91cCAtIHRlbGwgc3BlY2lmaWVkIG5vZGUgYWJvdXQgYWxsIHB1YmxpY2F0aW9ucyBieSB0aGlzIG5vZGVcXG4rICogQG5ldDogdGhlIGFzc29jaWF0ZWQgbmV0d29yayBuYW1lc3BhY2VcXG4rICogQGRub2RlOiBkZXN0aW5hdGlvbiBub2RlXFxuKyAqIEBjYXBhYmlsaXRpZXM6IHBlZXIgbm9kZSdzIGNhcGFiaWxpdGllc1xcbisgKi9cXG4raW50IHRpcGNfbmFtZWRfbm9kZV91cChzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSwgdTE2IGNhcGFiaWxpdGllcylcXG4re1xcbitcXHRzdHJ1Y3QgbmFtZV90YWJsZSAqbnQgPSB0aXBjX25hbWVfdGFibGUobmV0KTtcXG4rXFx0c3RydWN0IHRpcGNfbmV0ICp0biA9IHRpcGNfbmV0KG5ldCk7XFxuK1xcbitcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnRuLVxcdTAwM2VuYW1ldGJsX2xvY2spO1xcbitcXHRpZiAoIShjYXBhYmlsaXRpZXMgXFx1MDAyNiBUSVBDX05BTUVEX0JDQVNUKSlcXG4rXFx0XFx0bnQtXFx1MDAzZXJjX2Rlc3RzKys7XFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ0bi1cXHUwMDNlbmFtZXRibF9sb2NrKTtcXG4rXFxuK1xcdHJlYWRfbG9ja19iaChcXHUwMDI2bnQtXFx1MDAzZWNsdXN0ZXJfc2NvcGVfbG9jayk7XFxuK1xcdC8qIDEuIHRpcGNfbmV0X2ZpbmFsaXplX3dvcmsoKSBpcyBub3Qgc2NoZWR1bGVkIGJlY2F1c2Ugb2YgbmFtZXNwYWNlXFxuK1xcdCAqICAgIHRlYXJkb3duLlxcbitcXHQgKiAyLiBPciB0aXBjX25ldF9maW5hbGl6ZSgpIC0tLVxcdTAwM2UgdGlwY19uYW1ldGJsX3B1Ymxpc2goKSBoYXMgZmFpbGVkXFxuK1xcdCAqICAgIHRvIGluc2VydCBub2RlIHNlbGYgYWRkcmVzcyBwdWJsaWNhdGlvbiBpbnRvIG50LVxcdTAwM2VjbHVzdGVyX3Njb3BlXFxuK1xcdCAqICAgIGR1ZSB0byBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlLlxcbitcXHQgKiAzLiBPciB0aXBjX25ldF9maW5hbGl6ZSgpIC0tLVxcdTAwM2UgdGlwY19uYW1ldGJsX3B1Ymxpc2goKSBoYXMgbm90XFxuK1xcdCAqICAgIGV4ZWN1dGVkIHlldC5cXG4rXFx0ICovXFxuK1xcdGlmICh1bmxpa2VseShsaXN0X2VtcHR5KFxcdTAwMjZudC1cXHUwMDNlY2x1c3Rlcl9zY29wZSkpKSB7XFxuK1xcdFxcdHJlYWRfdW5sb2NrX2JoKFxcdTAwMjZudC1cXHUwMDNlY2x1c3Rlcl9zY29wZV9sb2NrKTtcXG4rXFx0XFx0cmV0dXJuIDE7XFxuK1xcdH1cXG4rXFx0cmVhZF91bmxvY2tfYmgoXFx1MDAyNm50LVxcdTAwM2VjbHVzdGVyX3Njb3BlX2xvY2spO1xcbitcXG4rXFx0cmV0dXJuIHRpcGNfbmFtZWRfZGlzdHJpYnV0ZShuZXQsIGRub2RlKTtcXG4rfVxcbitcXG4rLyoqXFxuKyAqIHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlIC0gZGlzdHJpYnV0ZSBhbGwgcHVibGljYXRpb25zIHRvIHNwZWNpZmllZCBub2RlXFxuKyAqIEBuZXQ6IHRoZSBhc3NvY2lhdGVkIG5ldHdvcmsgbmFtZXNwYWNlXFxuKyAqIEBkbm9kZTogZGVzdGluYXRpb24gbm9kZVxcbisgKi9cXG4raW50IHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlKVxcbit7XFxuK1xcdHN0cnVjdCBuYW1lX3RhYmxlICpudCA9IHRpcGNfbmFtZV90YWJsZShuZXQpO1xcbitcXHRib29sIHJlaW5zZXJ0ID0gZmFsc2U7XFxuK1xcbitcXHRyZWFkX2xvY2tfYmgoXFx1MDAyNm50LVxcdTAwM2VjbHVzdGVyX3Njb3BlX2xvY2spO1xcbitcXHRpZiAodW5saWtlbHkobGlzdF9lbXB0eShcXHUwMDI2bnQtXFx1MDAzZWNsdXN0ZXJfc2NvcGUpKSlcXG4rXFx0XFx0cmVpbnNlcnQgPSB0cnVlO1xcbitcXHRyZWFkX3VubG9ja19iaChcXHUwMDI2bnQtXFx1MDAzZWNsdXN0ZXJfc2NvcGVfbG9jayk7XFxuK1xcdC8qIHRpcGNfbmV0X2ZpbmFsaXplKCkgLS0tXFx1MDAzZSB0aXBjX25hbWV0YmxfcHVibGlzaCgpIGhhcyBmYWlsZWQgdG8gaW5zZXJ0XFxuK1xcdCAqIG5vZGUgc2VsZiBhZGRyZXNzIHB1YmxpY2F0aW9uIGludG8gbnQtXFx1MDAzZWNsdXN0ZXJfc2NvcGUgZHVlIHRvIG1lbW9yeVxcbitcXHQgKiBhbGxvY2F0aW9uIGZhaWx1cmUuIFNvLCByZWluc2VydCB0aGlzIHB1YmxpY2F0aW9uLlxcbitcXHQgKi9cXG4rXFx0aWYgKHJlaW5zZXJ0KSB7XFxuK1xcdFxcdHN0cnVjdCB0aXBjX25ldCAqdG4gPSB0aXBjX25ldChuZXQpO1xcbitcXHRcXHRzdHJ1Y3QgdGlwY19zb2NrZXRfYWRkciBzaztcXG4rXFx0XFx0c3RydWN0IHRpcGNfdWFkZHIgdWE7XFxuK1xcbitcXHRcXHRzay5yZWYgPSAwO1xcbitcXHRcXHRzay5ub2RlID0gdG4tXFx1MDAzZW5vZGVfYWRkcjtcXG4rXFx0XFx0dGlwY191YWRkcihcXHUwMDI2dWEsIFRJUENfU0VSVklDRV9SQU5HRSwgVElQQ19DTFVTVEVSX1NDT1BFLFxcbitcXHRcXHRcXHQgICBUSVBDX05PREVfU1RBVEUsIHRuLVxcdTAwM2Vub2RlX2FkZHIsIHRuLVxcdTAwM2Vub2RlX2FkZHIpO1xcbitcXHRcXHRpZiAoIXRpcGNfbmFtZXRibF9wdWJsaXNoKG5ldCwgXFx1MDAyNnVhLCBcXHUwMDI2c2ssIHRuLVxcdTAwM2Vub2RlX2FkZHIpKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiB0aXBjX25hbWVkX2Rpc3RyaWJ1dGUobmV0LCBkbm9kZSk7XFxuIH1cXG4gXFxuIC8qKlxcbmRpZmYgLS1naXQgYS9uZXQvdGlwYy9uYW1lX2Rpc3RyLmggYi9uZXQvdGlwYy9uYW1lX2Rpc3RyLmhcXG5pbmRleCBjNjc3ZjZmMDgyZGZiLi5jYWRmNGU4YzNlNjZjIDEwMDY0NFxcbi0tLSBhL25ldC90aXBjL25hbWVfZGlzdHIuaFxcbisrKyBiL25ldC90aXBjL25hbWVfZGlzdHIuaFxcbkBAIC02OSw3ICs2OSw4IEBAIHN0cnVjdCBkaXN0cl9pdGVtIHtcXG4gXFxuIHN0cnVjdCBza19idWZmICp0aXBjX25hbWVkX3B1Ymxpc2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgcHVibGljYXRpb24gKnB1YmwpO1xcbiBzdHJ1Y3Qgc2tfYnVmZiAqdGlwY19uYW1lZF93aXRoZHJhdyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBwdWJsaWNhdGlvbiAqcHVibCk7XFxuLXZvaWQgdGlwY19uYW1lZF9ub2RlX3VwKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlLCB1MTYgY2FwYWJpbGl0aWVzKTtcXG4raW50IHRpcGNfbmFtZWRfbm9kZV91cChzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSwgdTE2IGNhcGFiaWxpdGllcyk7XFxuK2ludCB0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSk7XFxuIHZvaWQgdGlwY19uYW1lZF9yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpuYW1lZHEsXFxuIFxcdFxcdCAgICB1MTYgKnJjdl9ueHQsIGJvb2wgKm9wZW4pO1xcbiB2b2lkIHRpcGNfbmFtZWRfcmVpbml0KHN0cnVjdCBuZXQgKm5ldCk7XFxuZGlmZiAtLWdpdCBhL25ldC90aXBjL25hbWVfdGFibGUuYyBiL25ldC90aXBjL25hbWVfdGFibGUuY1xcbmluZGV4IDI1M2M3MmQxMzY2ZWIuLjZmZGEzNmFiMTc2NjkgMTAwNjQ0XFxuLS0tIGEvbmV0L3RpcGMvbmFtZV90YWJsZS5jXFxuKysrIGIvbmV0L3RpcGMvbmFtZV90YWJsZS5jXFxuQEAgLTc2MywyMSArNzYzLDQwIEBAIHN0cnVjdCBwdWJsaWNhdGlvbiAqdGlwY19uYW1ldGJsX3B1Ymxpc2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGlwY191YWRkciAqdWEsXFxuIFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgdGlwY19zb2NrZXRfYWRkciAqc2ssIHUzMiBrZXkpXFxuIHtcXG4gXFx0c3RydWN0IG5hbWVfdGFibGUgKm50ID0gdGlwY19uYW1lX3RhYmxlKG5ldCk7XFxuK1xcdHUzMiBtYXhfdXNlcl9wdWIgPSBUSVBDX01BWF9QVUJMIC0gMTtcXG4gXFx0c3RydWN0IHRpcGNfbmV0ICp0biA9IHRpcGNfbmV0KG5ldCk7XFxuIFxcdHN0cnVjdCBwdWJsaWNhdGlvbiAqcCA9IE5VTEw7XFxuIFxcdHN0cnVjdCBza19idWZmICpza2IgPSBOVUxMO1xcbitcXHRib29sIHByb3RvY29sX3R5cGUgPSBmYWxzZTtcXG4gXFx0dTMyIHJjX2Rlc3RzO1xcbiBcXG4rXFx0aWYgKHVhLVxcdTAwM2Vzci50eXBlID09IFRJUENfTk9ERV9TVEFURSB8fCB1YS1cXHUwMDNlc3IudHlwZSA9PSBUSVBDX0xJTktfU1RBVEUgfHxcXG4rXFx0ICAgIHVhLVxcdTAwM2Vzci50eXBlID09IFRJUENfVE9QX1NSVilcXG4rXFx0XFx0cHJvdG9jb2xfdHlwZSA9IHRydWU7XFxuK1xcbiBcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnRuLVxcdTAwM2VuYW1ldGJsX2xvY2spO1xcbitcXHRpZiAocHJvdG9jb2xfdHlwZSlcXG4rXFx0XFx0Z290byBpbnNlcnQ7XFxuIFxcbi1cXHRpZiAobnQtXFx1MDAzZWxvY2FsX3B1YmxfY291bnQgXFx1MDAzZT0gVElQQ19NQVhfUFVCTCkge1xcbi1cXHRcXHRwcl93YXJuKFxcXCJCaW5kIGZhaWxlZCwgbWF4IGxpbWl0ICV1IHJlYWNoZWRcXFxcblxcXCIsIFRJUENfTUFYX1BVQkwpO1xcbitcXHQvKiBSZXNlcnZlIG9uZSBlbnRyeSBmb3Igbm9kZSBzdGF0ZSBzZXJ2aWNlIHR5cGUgYmVjYXVzZSBpdCBoYXMgY2x1c3RlclxcbitcXHQgKiBzY29wZSBhbmQgaXQgaXMgZGlzdHJpYnV0ZWQgaW4gYnVsay4gU28sIHRoZSBtYXhpbXVtIG51bWJlciBvZiB1c2VyJ3NcXG4rXFx0ICogcHVibGljYXRpb25zIGlzIChUSVBDX01BWF9QVUJMIC0gMSkuXFxuK1xcdCAqL1xcbitcXHRpZiAobnQtXFx1MDAzZWxvY2FsX3B1YmxfY291bnQgXFx1MDAzZT0gbWF4X3VzZXJfcHViKSB7XFxuK1xcdFxcdHByX3dhcm4oXFxcIkJpbmQgZmFpbGVkLCBtYXggbGltaXQgJXUgcmVhY2hlZFxcXFxuXFxcIiwgbWF4X3VzZXJfcHViKTtcXG4gXFx0XFx0Z290byBleGl0O1xcbiBcXHR9XFxuIFxcbitpbnNlcnQ6XFxuIFxcdHAgPSB0aXBjX25hbWV0YmxfaW5zZXJ0X3B1YmwobmV0LCB1YSwgc2ssIGtleSk7XFxuIFxcdGlmIChwKSB7XFxuLVxcdFxcdG50LVxcdTAwM2Vsb2NhbF9wdWJsX2NvdW50Kys7XFxuK1xcdFxcdC8qIE5vdCBjb3VudCBub2RlIHN0YXRlLCBsaW5rIHN0YXRlIGFuZCB0b3BvbG9neSBzZXJ2ZXIgdHlwZXNcXG4rXFx0XFx0ICogc28gdGhhdCBtYXhpbXVtIG50LVxcdTAwM2Vsb2NhbF9wdWJsX2NvdW50IGRvZXMgbm90IHByZXZlbnRcXG4rXFx0XFx0ICogcHJvdG9jb2wgc2VydmljZSB0eXBlcyBmcm9tIGJlaW5nIGluc2VydGVkIGludG8gdGhlIG5hbWVcXG4rXFx0XFx0ICogdGFibGUuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAoIXByb3RvY29sX3R5cGUpXFxuK1xcdFxcdFxcdG50LVxcdTAwM2Vsb2NhbF9wdWJsX2NvdW50Kys7XFxuIFxcdFxcdHNrYiA9IHRpcGNfbmFtZWRfcHVibGlzaChuZXQsIHApO1xcbiBcXHR9XFxuIFxcdHJjX2Rlc3RzID0gbnQtXFx1MDAzZXJjX2Rlc3RzO1xcbkBAIC04MTAsNyArODI5LDEwIEBAIHZvaWQgdGlwY19uYW1ldGJsX3dpdGhkcmF3KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfdWFkZHIgKnVhLFxcbiBcXG4gXFx0cCA9IHRpcGNfbmFtZXRibF9yZW1vdmVfcHVibChuZXQsIHVhLCBzaywga2V5KTtcXG4gXFx0aWYgKHApIHtcXG4tXFx0XFx0bnQtXFx1MDAzZWxvY2FsX3B1YmxfY291bnQtLTtcXG4rXFx0XFx0aWYgKHAtXFx1MDAzZXNyLnR5cGUgIT0gVElQQ19OT0RFX1NUQVRFIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICBwLVxcdTAwM2Vzci50eXBlICE9IFRJUENfTElOS19TVEFURSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgcC1cXHUwMDNlc3IudHlwZSAhPSBUSVBDX1RPUF9TUlYpXFxuK1xcdFxcdFxcdG50LVxcdTAwM2Vsb2NhbF9wdWJsX2NvdW50LS07XFxuIFxcdFxcdHNrYiA9IHRpcGNfbmFtZWRfd2l0aGRyYXcobmV0LCBwKTtcXG4gXFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2cC1cXHUwMDNlYmluZGluZ19zb2NrKTtcXG4gXFx0XFx0a2ZyZWVfcmN1KHAsIHJjdSk7XFxuZGlmZiAtLWdpdCBhL25ldC90aXBjL25ldC5jIGIvbmV0L3RpcGMvbmV0LmNcXG5pbmRleCA3ZTY1ZDBiMGM0YThkLi43NWFjNGUzY2QwMWE4IDEwMDY0NFxcbi0tLSBhL25ldC90aXBjL25ldC5jXFxuKysrIGIvbmV0L3RpcGMvbmV0LmNcXG5AQCAtMTM5LDYgKzEzOSwxMSBAQCBzdGF0aWMgdm9pZCB0aXBjX25ldF9maW5hbGl6ZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBhZGRyKVxcbiBcXHR0aXBjX3NrX3JlaW5pdChuZXQpO1xcbiBcXHR0aXBjX21vbl9yZWluaXRfc2VsZihuZXQpO1xcbiBcXHR0aXBjX25hbWV0YmxfcHVibGlzaChuZXQsIFxcdTAwMjZ1YSwgXFx1MDAyNnNrLCBhZGRyKTtcXG4rXFx0YXRvbWljX3NldChcXHUwMDI2dG4tXFx1MDAzZWZpbmFsaXplZCwgMSk7XFxuK1xcdC8qIFdha2UgdXAgbm9kZXMgd2FpdGluZyBmb3IgZGlzdHJpYnV0aW5nIGJ1bGsgb2YgcHVibGljYXRpb25zXFxuK1xcdCAqIGlmIGFwcGxpY2FibGUuXFxuK1xcdCAqL1xcbitcXHR0aXBjX25vZGVfd2FrZXVwKG5ldCk7XFxuIH1cXG4gXFxuIHZvaWQgdGlwY19uZXRfZmluYWxpemVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZGlmZiAtLWdpdCBhL25ldC90aXBjL25vZGUuYyBiL25ldC90aXBjL25vZGUuY1xcbmluZGV4IDhlNGVmMjYzMGFlNGYuLjMzNDgxMmJkYWI3NjUgMTAwNjQ0XFxuLS0tIGEvbmV0L3RpcGMvbm9kZS5jXFxuKysrIGIvbmV0L3RpcGMvbm9kZS5jXFxuQEAgLTExMSw2ICsxMTEsOSBAQCBzdHJ1Y3QgdGlwY19iY2xpbmtfZW50cnkge1xcbiAgKiBAcGVlcl9uZXQ6IHBlZXIncyBuZXQgbmFtZXNwYWNlXFxuICAqIEBwZWVyX2hhc2hfbWl4OiBoYXNoIGZvciB0aGlzIHBlZXIgKEZJWE1FKVxcbiAgKiBAY3J5cHRvX3J4OiBSWCBjcnlwdG8gaGFuZGxlclxcbisgKiBAd29yazogd29yayBpdGVtIGZvciBidWxrIGRpc3RyaWJ1dGlvbiBvZiBjbHVzdGVyIHNjb3BlIHB1YmxpY2F0aW9uc1xcbisgKiBAd29ya19zY2hlZHVsZWQ6IGZsYWcgdG8gaW5kaWNhdGUgdGhlIHdvcmsgaGFzIGJlZW4gc2NoZWR1bGVkXFxuKyAqIEBmaW5hbGl6ZWQ6IGZsYWcgdG8gd2FrZSB1cCBzY2hlZHVsZWQgd29ya1xcbiAgKi9cXG4gc3RydWN0IHRpcGNfbm9kZSB7XFxuIFxcdHUzMiBhZGRyO1xcbkBAIC0xNDUsNiArMTQ4LDkgQEAgc3RydWN0IHRpcGNfbm9kZSB7XFxuICNpZmRlZiBDT05GSUdfVElQQ19DUllQVE9cXG4gXFx0c3RydWN0IHRpcGNfY3J5cHRvICpjcnlwdG9fcng7XFxuICNlbmRpZlxcbitcXHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yaztcXG4rXFx0YXRvbWljX3Qgd29ya19zY2hlZHVsZWQ7XFxuK1xcdGF0b21pY190IGZpbmFsaXplZDtcXG4gfTtcXG4gXFxuIC8qIE5vZGUgRlNNIHN0YXRlcyBhbmQgZXZlbnRzOlxcbkBAIC0zOTMsNiArMzk5LDU5IEBAIHN0YXRpYyB2b2lkIHRpcGNfbm9kZV93cml0ZV91bmxvY2tfZmFzdChzdHJ1Y3QgdGlwY19ub2RlICpuKVxcbiBcXHR3cml0ZV91bmxvY2tfYmgoXFx1MDAyNm4tXFx1MDAzZWxvY2spO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCB0aXBjX25vZGVfZG93bihzdHJ1Y3QgdGlwY19ub2RlICpuKVxcbit7XFxuK1xcdGludCBiZWFyZXJfaWQ7XFxuK1xcbitcXHRmb3IgKGJlYXJlcl9pZCA9IDA7IGJlYXJlcl9pZCBcXHUwMDNjIE1BWF9CRUFSRVJTOyBiZWFyZXJfaWQrKylcXG4rXFx0XFx0dGlwY19ub2RlX2xpbmtfZG93bihuLCBiZWFyZXJfaWQsIGZhbHNlKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgdGlwY19ub2RlX2Rpc3RfYnVsayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuK3tcXG4rXFx0c3RydWN0IHRpcGNfbm9kZSAqbm9kZSA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdGlwY19ub2RlLCB3b3JrKTtcXG4rXFx0c3RydWN0IHRpcGNfbmV0ICp0biA9IHRpcGNfbmV0KG5vZGUtXFx1MDAzZW5ldCk7XFxuK1xcbitcXHR3YWl0X3Zhcl9ldmVudChcXHUwMDI2bm9kZS1cXHUwMDNlZmluYWxpemVkLCBhdG9taWNfcmVhZChcXHUwMDI2bm9kZS1cXHUwMDNlZmluYWxpemVkKSk7XFxuK1xcbitcXHQvKiBub2RlIGlzIGRvd24gKi9cXG4rXFx0aWYgKCFhdG9taWNfcmVhZChcXHUwMDI2bm9kZS1cXHUwMDNld29ya19zY2hlZHVsZWQpKVxcbitcXHRcXHRnb3RvIGV4aXQ7XFxuK1xcbitcXHQvKiBTdG9wIHdha2luZyB1cCB3b3JrIGluIHRpcGNfbm9kZV90aW1lb3V0KCkgKi9cXG4rXFx0YXRvbWljX3NldChcXHUwMDI2bm9kZS1cXHUwMDNld29ya19zY2hlZHVsZWQsIDApO1xcbitcXG4rXFx0aWYgKHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlKG5vZGUtXFx1MDAzZW5ldCwgbm9kZS1cXHUwMDNlYWRkcikgXFx1MDAzYyAwKVxcbitcXHRcXHR0aXBjX25vZGVfZG93bihub2RlKTtcXG4rXFxuK2V4aXQ6XFxuK1xcdGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KFxcdTAwMjZ0bi1cXHUwMDNlbm9kZV93cV9jb3VudCkpXFxuK1xcdFxcdHdha2VfdXBfdmFyKFxcdTAwMjZ0bi1cXHUwMDNlbm9kZV93cV9jb3VudCk7XFxuK1xcbitcXHR0aXBjX25vZGVfcHV0KG5vZGUpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCB0aXBjX25vZGVfY2FuY2VsX3dvcmsoc3RydWN0IHRpcGNfbm9kZSAqbm9kZSlcXG4re1xcbitcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNm5vZGUtXFx1MDAzZXdvcmtfc2NoZWR1bGVkKSkge1xcbitcXHRcXHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobm9kZS1cXHUwMDNlbmV0KTtcXG4rXFxuK1xcdFxcdC8qIFdha2UgdXAgc2NoZWR1bGVkIHdvcmsgaWYgaXQgaXMgd2FpdGluZy4gKi9cXG4rXFx0XFx0aWYgKCFhdG9taWNfcmVhZChcXHUwMDI2bm9kZS1cXHUwMDNlZmluYWxpemVkKSkge1xcbitcXHRcXHRcXHRhdG9taWNfc2V0KFxcdTAwMjZub2RlLVxcdTAwM2V3b3JrX3NjaGVkdWxlZCwgMCk7XFxuK1xcdFxcdFxcdGF0b21pY19zZXQoXFx1MDAyNm5vZGUtXFx1MDAzZWZpbmFsaXplZCwgMSk7XFxuK1xcdFxcdFxcdHdha2VfdXBfdmFyKFxcdTAwMjZub2RlLVxcdTAwM2VmaW5hbGl6ZWQpO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHQvKiBXb3JrIGlzIHBlbmRpbmcgKi9cXG4rXFx0XFx0aWYgKGNhbmNlbF93b3JrKFxcdTAwMjZub2RlLVxcdTAwM2V3b3JrKSkge1xcbitcXHRcXHRcXHRpZiAoYXRvbWljX2RlY19hbmRfdGVzdChcXHUwMDI2dG4tXFx1MDAzZW5vZGVfd3FfY291bnQpKVxcbitcXHRcXHRcXHRcXHR3YWtlX3VwX3ZhcihcXHUwMDI2dG4tXFx1MDAzZW5vZGVfd3FfY291bnQpO1xcbitcXHRcXHRcXHR0aXBjX25vZGVfcHV0KG5vZGUpO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgdGlwY19ub2RlX3dyaXRlX3VubG9jayhzdHJ1Y3QgdGlwY19ub2RlICpuKVxcbiBcXHRfX3JlbGVhc2VzKG4tXFx1MDAzZWxvY2spXFxuIHtcXG5AQCAtNDIxLDExICs0ODAsMzIgQEAgc3RhdGljIHZvaWQgdGlwY19ub2RlX3dyaXRlX3VubG9jayhzdHJ1Y3QgdGlwY19ub2RlICpuKVxcbiBcXG4gXFx0d3JpdGVfdW5sb2NrX2JoKFxcdTAwMjZuLVxcdTAwM2Vsb2NrKTtcXG4gXFxuLVxcdGlmIChmbGFncyBcXHUwMDI2IFRJUENfTk9USUZZX05PREVfRE9XTilcXG4rXFx0aWYgKGZsYWdzIFxcdTAwMjYgVElQQ19OT1RJRllfTk9ERV9ET1dOKSB7XFxuIFxcdFxcdHRpcGNfcHVibF9ub3RpZnkobmV0LCBwdWJsX2xpc3QsIG5vZGUsIG4tXFx1MDAzZWNhcGFiaWxpdGllcyk7XFxuLVxcbi1cXHRpZiAoZmxhZ3MgXFx1MDAyNiBUSVBDX05PVElGWV9OT0RFX1VQKVxcbi1cXHRcXHR0aXBjX25hbWVkX25vZGVfdXAobmV0LCBub2RlLCBuLVxcdTAwM2VjYXBhYmlsaXRpZXMpO1xcbitcXHRcXHR0aXBjX25vZGVfY2FuY2VsX3dvcmsobik7XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChmbGFncyBcXHUwMDI2IFRJUENfTk9USUZZX05PREVfVVApIHtcXG4rXFx0XFx0c3RydWN0IHRpcGNfbmV0ICp0biA9IHRpcGNfbmV0KG5ldCk7XFxuK1xcdFxcdGludCByYyA9IDA7XFxuK1xcbitcXHRcXHRyYyA9IHRpcGNfbmFtZWRfbm9kZV91cChuZXQsIG5vZGUsIG4tXFx1MDAzZWNhcGFiaWxpdGllcyk7XFxuK1xcdFxcdC8qIERlZmVyIGJ1bGsgZGlzdHJpYnV0aW9uIHRvIHdvcmsgcXVldWUgKi9cXG4rXFx0XFx0aWYgKHJjIFxcdTAwM2UgMCkge1xcbitcXHRcXHRcXHRhdG9taWNfc2V0KFxcdTAwMjZuLVxcdTAwM2V3b3JrX3NjaGVkdWxlZCwgMSk7XFxuK1xcdFxcdFxcdGF0b21pY19pbmMoXFx1MDAyNnRuLVxcdTAwM2Vub2RlX3dxX2NvdW50KTtcXG4rXFx0XFx0XFx0dGlwY19ub2RlX2dldChuKTtcXG4rXFx0XFx0XFx0aWYgKCFzY2hlZHVsZV93b3JrKFxcdTAwMjZuLVxcdTAwM2V3b3JrKSkge1xcbitcXHRcXHRcXHRcXHRhdG9taWNfZGVjKFxcdTAwMjZ0bi1cXHUwMDNlbm9kZV93cV9jb3VudCk7XFxuK1xcdFxcdFxcdFxcdHRpcGNfbm9kZV9wdXQobik7XFxuK1xcdFxcdFxcdH1cXG4rXFx0XFx0fSBlbHNlIGlmIChyYyBcXHUwMDNjIDApIHtcXG4rXFx0XFx0XFx0LyogQnJpbmcgdGhlIG5vZGUgZG93biB0byBzdGFydCBvdmVyIGJ1bGsgZGlzdHJpYnV0aW9uXFxuK1xcdFxcdFxcdCAqIHdoZW4gdGhlIGZpcnN0IGxpbmsgaXMgdXAgYWdhaW4uXFxuK1xcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHR0aXBjX25vZGVfZG93bihuKTtcXG4rXFx0XFx0fVxcbitcXHR9XFxuIFxcbiBcXHRpZiAoZmxhZ3MgXFx1MDAyNiBUSVBDX05PVElGWV9MSU5LX1VQKSB7XFxuIFxcdFxcdHRpcGNfbW9uX3BlZXJfdXAobmV0LCBub2RlLCBiZWFyZXJfaWQpO1xcbkBAIC01NjQsNiArNjQ0LDkgQEAgc3RydWN0IHRpcGNfbm9kZSAqdGlwY19ub2RlX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBhZGRyLCB1OCAqcGVlcl9pZCxcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNm4tXFx1MDAzZWxpc3QpO1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2bi1cXHUwMDNlcHVibF9saXN0KTtcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNm4tXFx1MDAzZWNvbm5fc2tzKTtcXG4rXFx0SU5JVF9XT1JLKFxcdTAwMjZuLVxcdTAwM2V3b3JrLCB0aXBjX25vZGVfZGlzdF9idWxrKTtcXG4rXFx0YXRvbWljX3NldChcXHUwMDI2bi1cXHUwMDNld29ya19zY2hlZHVsZWQsIDApO1xcbitcXHRhdG9taWNfc2V0KFxcdTAwMjZuLVxcdTAwM2VmaW5hbGl6ZWQsIDApO1xcbiBcXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZuLVxcdTAwM2ViY19lbnRyeS5uYW1lZHEpO1xcbiBcXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZuLVxcdTAwM2ViY19lbnRyeS5pbnB1dHExKTtcXG4gXFx0X19za2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZuLVxcdTAwM2ViY19lbnRyeS5hcnJ2cSk7XFxuQEAgLTY1Myw2ICs3MzYsMjEgQEAgdm9pZCB0aXBjX25vZGVfc3RvcChzdHJ1Y3QgbmV0ICpuZXQpXFxuIFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ0bi1cXHUwMDNlbm9kZV9saXN0X2xvY2spO1xcbiB9XFxuIFxcbit2b2lkIHRpcGNfbm9kZV93YWtldXAoc3RydWN0IG5ldCAqbmV0KVxcbit7XFxuK1xcdHN0cnVjdCB0aXBjX25ldCAqdG4gPSB0aXBjX25ldChuZXQpO1xcbitcXHRzdHJ1Y3QgdGlwY19ub2RlICpub2RlO1xcbitcXG4rXFx0cmN1X3JlYWRfbG9jaygpO1xcbitcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShub2RlLCBcXHUwMDI2dG4tXFx1MDAzZW5vZGVfbGlzdCwgbGlzdCkge1xcbitcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNm5vZGUtXFx1MDAzZXdvcmtfc2NoZWR1bGVkKSkge1xcbitcXHRcXHRcXHRhdG9taWNfc2V0KFxcdTAwMjZub2RlLVxcdTAwM2VmaW5hbGl6ZWQsIDEpO1xcbitcXHRcXHRcXHR3YWtlX3VwX3ZhcihcXHUwMDI2bm9kZS1cXHUwMDNlZmluYWxpemVkKTtcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcdHJjdV9yZWFkX3VubG9jaygpO1xcbit9XFxuK1xcbiB2b2lkIHRpcGNfbm9kZV9zdWJzY3JpYmUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbGlzdF9oZWFkICpzdWJzY3IsIHUzMiBhZGRyKVxcbiB7XFxuIFxcdHN0cnVjdCB0aXBjX25vZGUgKm47XFxuQEAgLTgwMSw2ICs4OTksNyBAQCBzdGF0aWMgYm9vbCB0aXBjX25vZGVfY2xlYW51cChzdHJ1Y3QgdGlwY19ub2RlICpwZWVyKVxcbiBzdGF0aWMgdm9pZCB0aXBjX25vZGVfdGltZW91dChzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4ge1xcbiBcXHRzdHJ1Y3QgdGlwY19ub2RlICpuID0gdGltZXJfY29udGFpbmVyX29mKG4sIHQsIHRpbWVyKTtcXG4rXFx0c3RydWN0IHRpcGNfbmV0ICp0biA9IHRpcGNfbmV0KG4tXFx1MDAzZW5ldCk7XFxuIFxcdHN0cnVjdCB0aXBjX2xpbmtfZW50cnkgKmxlO1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHhtaXRxO1xcbiBcXHRpbnQgcmVtYWlucyA9IG4tXFx1MDAzZWxpbmtfY250O1xcbkBAIC04MTQsNiArOTEzLDExIEBAIHN0YXRpYyB2b2lkIHRpcGNfbm9kZV90aW1lb3V0KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFxuK1xcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2dG4tXFx1MDAzZWZpbmFsaXplZCkgXFx1MDAyNlxcdTAwMjYgYXRvbWljX3JlYWQoXFx1MDAyNm4tXFx1MDAzZXdvcmtfc2NoZWR1bGVkKSkge1xcbitcXHRcXHRhdG9taWNfc2V0KFxcdTAwMjZuLVxcdTAwM2VmaW5hbGl6ZWQsIDEpO1xcbitcXHRcXHR3YWtlX3VwX3ZhcihcXHUwMDI2bi1cXHUwMDNlZmluYWxpemVkKTtcXG4rXFx0fVxcbitcXG4gI2lmZGVmIENPTkZJR19USVBDX0NSWVBUT1xcbiBcXHQvKiBUYWtlIGFueSBjcnlwdG8ga2V5IHJlbGF0ZWQgYWN0aW9ucyBmaXJzdCAqL1xcbiBcXHR0aXBjX2NyeXB0b190aW1lb3V0KG4tXFx1MDAzZWNyeXB0b19yeCk7XFxuZGlmZiAtLWdpdCBhL25ldC90aXBjL25vZGUuaCBiL25ldC90aXBjL25vZGUuaFxcbmluZGV4IDE1NGE1YmJiMGQyOWQuLmM3YmMzYmMwNTMyODUgMTAwNjQ0XFxuLS0tIGEvbmV0L3RpcGMvbm9kZS5oXFxuKysrIGIvbmV0L3RpcGMvbm9kZS5oXFxuQEAgLTc1LDYgKzc1LDcgQEAgZW51bSB7XFxuICNkZWZpbmUgSU5WQUxJRF9CRUFSRVJfSUQgLTFcXG4gXFxuIHZvaWQgdGlwY19ub2RlX3N0b3Aoc3RydWN0IG5ldCAqbmV0KTtcXG4rdm9pZCB0aXBjX25vZGVfd2FrZXVwKHN0cnVjdCBuZXQgKm5ldCk7XFxuIGJvb2wgdGlwY19ub2RlX2dldF9pZChzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBhZGRyLCB1OCAqaWQpO1xcbiB1MzIgdGlwY19ub2RlX2dldF9hZGRyKHN0cnVjdCB0aXBjX25vZGUgKm5vZGUpO1xcbiBjaGFyICp0aXBjX25vZGVfZ2V0X2lkX3N0cihzdHJ1Y3QgdGlwY19ub2RlICpub2RlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTk6Mjk6MzQuMDk2MzY1MDg4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Mzg4OTU2MTMwODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVElQQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRpcGNfbmFtZWRfbm9kZV91cFwiLFxuICAgIFwidGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGVcIixcbiAgICBcInRpcGNfbmFtZXRibF9wdWJsaXNoXCIsXG4gICAgXCJ0aXBjX25hbWV0Ymxfd2l0aGRyYXdcIixcbiAgICBcInRpcGNfbm9kZV93YWtldXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgd29ya3F1ZXVlIGZvciBidWxrIGRpc3RyaWJ1dGlvbiBvZiBjbHVzdGVyIHNjb3BlIHB1YmxpY2F0aW9ucyBpbiBUSVBDLCBtb2RpZnlpbmcgY29yZSBwcm90b2NvbCBsb2dpYyBzdWNoIGFzIG5vZGUgc3RhdGUgbWFuYWdlbWVudCBhbmQgbmFtZSB0YWJsZSBwdWJsaXNoaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIFRJUEMgc3Vic3lzdGVtLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5ZTFmYWY3MjExNjg3NGIzNjFiY2RkYzY4NDQ4ZGIwNjEyNzljYzMwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMTk6Mjk6MzMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvdGlwYy9jb3JlLmMgYi9uZXQvdGlwYy9jb3JlLmNcbmluZGV4IDMxNTk3NWMzYmU4MTguLjFlMWZlNzhjYzRlZTQgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9jb3JlLmNcbisrKyBiL25ldC90aXBjL2NvcmUuY1xuQEAgLTYxLDYgKzYxLDggQEAgc3RhdGljIGludCBfX25ldF9pbml0IHRpcGNfaW5pdF9uZXQoc3RydWN0IG5ldCAqbmV0KVxuIFx0dG4tXHUwMDNldHJpYWxfYWRkciA9IDA7XG4gXHR0bi1cdTAwM2VhZGRyX3RyaWFsX2VuZCA9IDA7XG4gXHR0bi1cdTAwM2VjYXBhYmlsaXRpZXMgPSBUSVBDX05PREVfQ0FQQUJJTElUSUVTO1xuK1x0YXRvbWljX3NldChcdTAwMjZ0bi1cdTAwM2Vub2RlX3dxX2NvdW50LCAwKTtcbitcdGF0b21pY19zZXQoXHUwMDI2dG4tXHUwMDNlZmluYWxpemVkLCAwKTtcbiBcdElOSVRfV09SSyhcdTAwMjZ0bi1cdTAwM2V3b3JrLCB0aXBjX25ldF9maW5hbGl6ZV93b3JrKTtcbiBcdG1lbXNldCh0bi1cdTAwM2Vub2RlX2lkLCAwLCBzaXplb2YodG4tXHUwMDNlbm9kZV9pZCkpO1xuIFx0bWVtc2V0KHRuLVx1MDAzZW5vZGVfaWRfc3RyaW5nLCAwLCBzaXplb2YodG4tXHUwMDNlbm9kZV9pZF9zdHJpbmcpKTtcbkBAIC0xMTksNiArMTIxLDcgQEAgc3RhdGljIHZvaWQgX19uZXRfZXhpdCB0aXBjX2V4aXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcbiAjaWZkZWYgQ09ORklHX1RJUENfQ1JZUFRPXG4gXHR0aXBjX2NyeXB0b19zdG9wKFx1MDAyNnRpcGNfbmV0KG5ldCktXHUwMDNlY3J5cHRvX3R4KTtcbiAjZW5kaWZcbitcdHdhaXRfdmFyX2V2ZW50KFx1MDAyNnRuLVx1MDAzZW5vZGVfd3FfY291bnQsICFhdG9taWNfcmVhZChcdTAwMjZ0bi1cdTAwM2Vub2RlX3dxX2NvdW50KSk7XG4gXHR3YWl0X3Zhcl9ldmVudChcdTAwMjZ0bi1cdTAwM2V3cV9jb3VudCwgYXRvbWljX3JlYWQoXHUwMDI2dG4tXHUwMDNld3FfY291bnQpID09IDApO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvdGlwYy9jb3JlLmggYi9uZXQvdGlwYy9jb3JlLmhcbmluZGV4IDljZTVmOWZmNmNjMDMuLmJlMzM1Y2U4MzM4OWEgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9jb3JlLmhcbisrKyBiL25ldC90aXBjL2NvcmUuaFxuQEAgLTE0NSw2ICsxNDUsMTAgQEAgc3RydWN0IHRpcGNfbmV0IHtcbiBcdHN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrO1xuIFx0LyogVGhlIG51bWJlcnMgb2Ygd29yayBxdWV1ZXMgaW4gc2NoZWR1bGUgKi9cbiBcdGF0b21pY190IHdxX2NvdW50O1xuK1x0LyogVGhlIG51bWJlcnMgb2Ygd29ya3Mgb2YgY3JlYXRlZCBub2RlcyBpbiBzY2hlZHVsZSAqL1xuK1x0YXRvbWljX3Qgbm9kZV93cV9jb3VudDtcbitcdC8qIGZsYWcgdG8gd2FrZSB1cCBzY2hlZHVsZWQgd29ya3Mgb2YgY3JlYXRlZCBub2RlcyAqL1xuK1x0YXRvbWljX3QgZmluYWxpemVkO1xuIH07XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgdGlwY19uZXQgKnRpcGNfbmV0KHN0cnVjdCBuZXQgKm5ldClcbmRpZmYgLS1naXQgYS9uZXQvdGlwYy9uYW1lX2Rpc3RyLmMgYi9uZXQvdGlwYy9uYW1lX2Rpc3RyLmNcbmluZGV4IGJhNGY0OTA2ZTEzYjcuLmM4ZTI4NDk3MzU2ZWYgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9uYW1lX2Rpc3RyLmNcbisrKyBiL25ldC90aXBjL25hbWVfZGlzdHIuY1xuQEAgLTE0Nyw4ICsxNDcsOCBAQCBzdHJ1Y3Qgc2tfYnVmZiAqdGlwY19uYW1lZF93aXRoZHJhdyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBwdWJsaWNhdGlvbiAqcClcbiAgKiBAcGxzOiBsaW5rZWQgbGlzdCBvZiBwdWJsaWNhdGlvbiBpdGVtcyB0byBiZSBwYWNrZWQgaW50byBidWZmZXIgY2hhaW5cbiAgKiBAc2Vxbm86IHNlcXVlbmNlIG51bWJlciBmb3IgdGhpcyBtZXNzYWdlXG4gICovXG4tc3RhdGljIHZvaWQgbmFtZWRfZGlzdHJpYnV0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsXG4tXHRcdFx0ICAgICB1MzIgZG5vZGUsIHN0cnVjdCBsaXN0X2hlYWQgKnBscywgdTE2IHNlcW5vKVxuK3N0YXRpYyBpbnQgbmFtZWRfZGlzdHJpYnV0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsXG4rXHRcdFx0ICAgIHUzMiBkbm9kZSwgc3RydWN0IGxpc3RfaGVhZCAqcGxzLCB1MTYgc2Vxbm8pXG4ge1xuIFx0c3RydWN0IHB1YmxpY2F0aW9uICpwdWJsO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IE5VTEw7XG5AQCAtMTY0LDggKzE2NCw5IEBAIHN0YXRpYyB2b2lkIG5hbWVkX2Rpc3RyaWJ1dGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0LFxuIFx0XHRcdHNrYiA9IG5hbWVkX3ByZXBhcmVfYnVmKG5ldCwgUFVCTElDQVRJT04sIG1zZ19yZW0sXG4gXHRcdFx0XHRcdFx0ZG5vZGUpO1xuIFx0XHRcdGlmICghc2tiKSB7XG4rXHRcdFx0XHRfX3NrYl9xdWV1ZV9wdXJnZShsaXN0KTtcbiBcdFx0XHRcdHByX3dhcm4oXCJCdWxrIHB1YmxpY2F0aW9uIGZhaWx1cmVcXG5cIik7XG4tXHRcdFx0XHRyZXR1cm47XG4rXHRcdFx0XHRyZXR1cm4gMTtcbiBcdFx0XHR9XG4gXHRcdFx0aGRyID0gYnVmX21zZyhza2IpO1xuIFx0XHRcdG1zZ19zZXRfYmNfYWNrX2ludmFsaWQoaGRyLCB0cnVlKTtcbkBAIC0xOTUsMTUgKzE5NiwxNiBAQCBzdGF0aWMgdm9pZCBuYW1lZF9kaXN0cmlidXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCxcbiBcdGhkciA9IGJ1Zl9tc2coc2tiX3BlZWtfdGFpbChsaXN0KSk7XG4gXHRtc2dfc2V0X2xhc3RfYnVsayhoZHIpO1xuIFx0bXNnX3NldF9uYW1lZF9zZXFubyhoZHIsIHNlcW5vKTtcbitcbitcdHJldHVybiAwO1xuIH1cbiBcbiAvKipcbi0gKiB0aXBjX25hbWVkX25vZGVfdXAgLSB0ZWxsIHNwZWNpZmllZCBub2RlIGFib3V0IGFsbCBwdWJsaWNhdGlvbnMgYnkgdGhpcyBub2RlXG4rICogdGlwY19uYW1lZF9kaXN0cmlidXRlIC0gZGlzdHJpYnV0ZSBhbGwgcHVibGljYXRpb25zIHRvIHNwZWNpZmllZCBub2RlXG4gICogQG5ldDogdGhlIGFzc29jaWF0ZWQgbmV0d29yayBuYW1lc3BhY2VcbiAgKiBAZG5vZGU6IGRlc3RpbmF0aW9uIG5vZGVcbi0gKiBAY2FwYWJpbGl0aWVzOiBwZWVyIG5vZGUncyBjYXBhYmlsaXRpZXNcbiAgKi9cbi12b2lkIHRpcGNfbmFtZWRfbm9kZV91cChzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSwgdTE2IGNhcGFiaWxpdGllcylcbitzdGF0aWMgaW50IHRpcGNfbmFtZWRfZGlzdHJpYnV0ZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSlcbiB7XG4gXHRzdHJ1Y3QgbmFtZV90YWJsZSAqbnQgPSB0aXBjX25hbWVfdGFibGUobmV0KTtcbiBcdHN0cnVjdCB0aXBjX25ldCAqdG4gPSB0aXBjX25ldChuZXQpO1xuQEAgLTIxMiwxNSArMjE0LDg2IEBAIHZvaWQgdGlwY19uYW1lZF9ub2RlX3VwKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlLCB1MTYgY2FwYWJpbGl0aWVzKVxuIFxuIFx0X19za2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNmhlYWQpO1xuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnRuLVx1MDAzZW5hbWV0YmxfbG9jayk7XG4tXHRpZiAoIShjYXBhYmlsaXRpZXMgXHUwMDI2IFRJUENfTkFNRURfQkNBU1QpKVxuLVx0XHRudC1cdTAwM2VyY19kZXN0cysrO1xuIFx0c2Vxbm8gPSBudC1cdTAwM2VzbmRfbnh0O1xuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dG4tXHUwMDNlbmFtZXRibF9sb2NrKTtcbiBcbiBcdHJlYWRfbG9ja19iaChcdTAwMjZudC1cdTAwM2VjbHVzdGVyX3Njb3BlX2xvY2spO1xuLVx0bmFtZWRfZGlzdHJpYnV0ZShuZXQsIFx1MDAyNmhlYWQsIGRub2RlLCBcdTAwMjZudC1cdTAwM2VjbHVzdGVyX3Njb3BlLCBzZXFubyk7XG4rXHRpZiAobmFtZWRfZGlzdHJpYnV0ZShuZXQsIFx1MDAyNmhlYWQsIGRub2RlLCBcdTAwMjZudC1cdTAwM2VjbHVzdGVyX3Njb3BlLCBzZXFubykpIHtcbitcdFx0cmVhZF91bmxvY2tfYmgoXHUwMDI2bnQtXHUwMDNlY2x1c3Rlcl9zY29wZV9sb2NrKTtcbitcdFx0cmV0dXJuIC1FTk9CVUZTO1xuK1x0fVxuIFx0dGlwY19ub2RlX3htaXQobmV0LCBcdTAwMjZoZWFkLCBkbm9kZSwgMCk7XG4gXHRyZWFkX3VubG9ja19iaChcdTAwMjZudC1cdTAwM2VjbHVzdGVyX3Njb3BlX2xvY2spO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuKy8qKlxuKyAqIHRpcGNfbmFtZWRfbm9kZV91cCAtIHRlbGwgc3BlY2lmaWVkIG5vZGUgYWJvdXQgYWxsIHB1YmxpY2F0aW9ucyBieSB0aGlzIG5vZGVcbisgKiBAbmV0OiB0aGUgYXNzb2NpYXRlZCBuZXR3b3JrIG5hbWVzcGFjZVxuKyAqIEBkbm9kZTogZGVzdGluYXRpb24gbm9kZVxuKyAqIEBjYXBhYmlsaXRpZXM6IHBlZXIgbm9kZSdzIGNhcGFiaWxpdGllc1xuKyAqL1xuK2ludCB0aXBjX25hbWVkX25vZGVfdXAoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUsIHUxNiBjYXBhYmlsaXRpZXMpXG4re1xuK1x0c3RydWN0IG5hbWVfdGFibGUgKm50ID0gdGlwY19uYW1lX3RhYmxlKG5ldCk7XG4rXHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobmV0KTtcbitcbitcdHNwaW5fbG9ja19iaChcdTAwMjZ0bi1cdTAwM2VuYW1ldGJsX2xvY2spO1xuK1x0aWYgKCEoY2FwYWJpbGl0aWVzIFx1MDAyNiBUSVBDX05BTUVEX0JDQVNUKSlcbitcdFx0bnQtXHUwMDNlcmNfZGVzdHMrKztcbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnRuLVx1MDAzZW5hbWV0YmxfbG9jayk7XG4rXG4rXHRyZWFkX2xvY2tfYmgoXHUwMDI2bnQtXHUwMDNlY2x1c3Rlcl9zY29wZV9sb2NrKTtcbitcdC8qIDEuIHRpcGNfbmV0X2ZpbmFsaXplX3dvcmsoKSBpcyBub3Qgc2NoZWR1bGVkIGJlY2F1c2Ugb2YgbmFtZXNwYWNlXG4rXHQgKiAgICB0ZWFyZG93bi5cbitcdCAqIDIuIE9yIHRpcGNfbmV0X2ZpbmFsaXplKCkgLS0tXHUwMDNlIHRpcGNfbmFtZXRibF9wdWJsaXNoKCkgaGFzIGZhaWxlZFxuK1x0ICogICAgdG8gaW5zZXJ0IG5vZGUgc2VsZiBhZGRyZXNzIHB1YmxpY2F0aW9uIGludG8gbnQtXHUwMDNlY2x1c3Rlcl9zY29wZVxuK1x0ICogICAgZHVlIHRvIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUuXG4rXHQgKiAzLiBPciB0aXBjX25ldF9maW5hbGl6ZSgpIC0tLVx1MDAzZSB0aXBjX25hbWV0YmxfcHVibGlzaCgpIGhhcyBub3RcbitcdCAqICAgIGV4ZWN1dGVkIHlldC5cbitcdCAqL1xuK1x0aWYgKHVubGlrZWx5KGxpc3RfZW1wdHkoXHUwMDI2bnQtXHUwMDNlY2x1c3Rlcl9zY29wZSkpKSB7XG4rXHRcdHJlYWRfdW5sb2NrX2JoKFx1MDAyNm50LVx1MDAzZWNsdXN0ZXJfc2NvcGVfbG9jayk7XG4rXHRcdHJldHVybiAxO1xuK1x0fVxuK1x0cmVhZF91bmxvY2tfYmgoXHUwMDI2bnQtXHUwMDNlY2x1c3Rlcl9zY29wZV9sb2NrKTtcbitcbitcdHJldHVybiB0aXBjX25hbWVkX2Rpc3RyaWJ1dGUobmV0LCBkbm9kZSk7XG4rfVxuK1xuKy8qKlxuKyAqIHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlIC0gZGlzdHJpYnV0ZSBhbGwgcHVibGljYXRpb25zIHRvIHNwZWNpZmllZCBub2RlXG4rICogQG5ldDogdGhlIGFzc29jaWF0ZWQgbmV0d29yayBuYW1lc3BhY2VcbisgKiBAZG5vZGU6IGRlc3RpbmF0aW9uIG5vZGVcbisgKi9cbitpbnQgdGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUpXG4re1xuK1x0c3RydWN0IG5hbWVfdGFibGUgKm50ID0gdGlwY19uYW1lX3RhYmxlKG5ldCk7XG4rXHRib29sIHJlaW5zZXJ0ID0gZmFsc2U7XG4rXG4rXHRyZWFkX2xvY2tfYmgoXHUwMDI2bnQtXHUwMDNlY2x1c3Rlcl9zY29wZV9sb2NrKTtcbitcdGlmICh1bmxpa2VseShsaXN0X2VtcHR5KFx1MDAyNm50LVx1MDAzZWNsdXN0ZXJfc2NvcGUpKSlcbitcdFx0cmVpbnNlcnQgPSB0cnVlO1xuK1x0cmVhZF91bmxvY2tfYmgoXHUwMDI2bnQtXHUwMDNlY2x1c3Rlcl9zY29wZV9sb2NrKTtcbitcdC8qIHRpcGNfbmV0X2ZpbmFsaXplKCkgLS0tXHUwMDNlIHRpcGNfbmFtZXRibF9wdWJsaXNoKCkgaGFzIGZhaWxlZCB0byBpbnNlcnRcbitcdCAqIG5vZGUgc2VsZiBhZGRyZXNzIHB1YmxpY2F0aW9uIGludG8gbnQtXHUwMDNlY2x1c3Rlcl9zY29wZSBkdWUgdG8gbWVtb3J5XG4rXHQgKiBhbGxvY2F0aW9uIGZhaWx1cmUuIFNvLCByZWluc2VydCB0aGlzIHB1YmxpY2F0aW9uLlxuK1x0ICovXG4rXHRpZiAocmVpbnNlcnQpIHtcbitcdFx0c3RydWN0IHRpcGNfbmV0ICp0biA9IHRpcGNfbmV0KG5ldCk7XG4rXHRcdHN0cnVjdCB0aXBjX3NvY2tldF9hZGRyIHNrO1xuK1x0XHRzdHJ1Y3QgdGlwY191YWRkciB1YTtcbitcbitcdFx0c2sucmVmID0gMDtcbitcdFx0c2subm9kZSA9IHRuLVx1MDAzZW5vZGVfYWRkcjtcbitcdFx0dGlwY191YWRkcihcdTAwMjZ1YSwgVElQQ19TRVJWSUNFX1JBTkdFLCBUSVBDX0NMVVNURVJfU0NPUEUsXG4rXHRcdFx0ICAgVElQQ19OT0RFX1NUQVRFLCB0bi1cdTAwM2Vub2RlX2FkZHIsIHRuLVx1MDAzZW5vZGVfYWRkcik7XG4rXHRcdGlmICghdGlwY19uYW1ldGJsX3B1Ymxpc2gobmV0LCBcdTAwMjZ1YSwgXHUwMDI2c2ssIHRuLVx1MDAzZW5vZGVfYWRkcikpXG4rXHRcdFx0cmV0dXJuIC1FTk9CVUZTO1xuK1x0fVxuK1xuK1x0cmV0dXJuIHRpcGNfbmFtZWRfZGlzdHJpYnV0ZShuZXQsIGRub2RlKTtcbiB9XG4gXG4gLyoqXG5kaWZmIC0tZ2l0IGEvbmV0L3RpcGMvbmFtZV9kaXN0ci5oIGIvbmV0L3RpcGMvbmFtZV9kaXN0ci5oXG5pbmRleCBjNjc3ZjZmMDgyZGZiLi5jYWRmNGU4YzNlNjZjIDEwMDY0NFxuLS0tIGEvbmV0L3RpcGMvbmFtZV9kaXN0ci5oXG4rKysgYi9uZXQvdGlwYy9uYW1lX2Rpc3RyLmhcbkBAIC02OSw3ICs2OSw4IEBAIHN0cnVjdCBkaXN0cl9pdGVtIHtcbiBcbiBzdHJ1Y3Qgc2tfYnVmZiAqdGlwY19uYW1lZF9wdWJsaXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHB1YmxpY2F0aW9uICpwdWJsKTtcbiBzdHJ1Y3Qgc2tfYnVmZiAqdGlwY19uYW1lZF93aXRoZHJhdyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBwdWJsaWNhdGlvbiAqcHVibCk7XG4tdm9pZCB0aXBjX25hbWVkX25vZGVfdXAoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUsIHUxNiBjYXBhYmlsaXRpZXMpO1xuK2ludCB0aXBjX25hbWVkX25vZGVfdXAoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUsIHUxNiBjYXBhYmlsaXRpZXMpO1xuK2ludCB0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSk7XG4gdm9pZCB0aXBjX25hbWVkX3JjdihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKm5hbWVkcSxcbiBcdFx0ICAgIHUxNiAqcmN2X254dCwgYm9vbCAqb3Blbik7XG4gdm9pZCB0aXBjX25hbWVkX3JlaW5pdChzdHJ1Y3QgbmV0ICpuZXQpO1xuZGlmZiAtLWdpdCBhL25ldC90aXBjL25hbWVfdGFibGUuYyBiL25ldC90aXBjL25hbWVfdGFibGUuY1xuaW5kZXggMjUzYzcyZDEzNjZlYi4uNmZkYTM2YWIxNzY2OSAxMDA2NDRcbi0tLSBhL25ldC90aXBjL25hbWVfdGFibGUuY1xuKysrIGIvbmV0L3RpcGMvbmFtZV90YWJsZS5jXG5AQCAtNzYzLDIxICs3NjMsNDAgQEAgc3RydWN0IHB1YmxpY2F0aW9uICp0aXBjX25hbWV0YmxfcHVibGlzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX3VhZGRyICp1YSxcbiBcdFx0XHRcdFx0IHN0cnVjdCB0aXBjX3NvY2tldF9hZGRyICpzaywgdTMyIGtleSlcbiB7XG4gXHRzdHJ1Y3QgbmFtZV90YWJsZSAqbnQgPSB0aXBjX25hbWVfdGFibGUobmV0KTtcbitcdHUzMiBtYXhfdXNlcl9wdWIgPSBUSVBDX01BWF9QVUJMIC0gMTtcbiBcdHN0cnVjdCB0aXBjX25ldCAqdG4gPSB0aXBjX25ldChuZXQpO1xuIFx0c3RydWN0IHB1YmxpY2F0aW9uICpwID0gTlVMTDtcbiBcdHN0cnVjdCBza19idWZmICpza2IgPSBOVUxMO1xuK1x0Ym9vbCBwcm90b2NvbF90eXBlID0gZmFsc2U7XG4gXHR1MzIgcmNfZGVzdHM7XG4gXG4rXHRpZiAodWEtXHUwMDNlc3IudHlwZSA9PSBUSVBDX05PREVfU1RBVEUgfHwgdWEtXHUwMDNlc3IudHlwZSA9PSBUSVBDX0xJTktfU1RBVEUgfHxcbitcdCAgICB1YS1cdTAwM2Vzci50eXBlID09IFRJUENfVE9QX1NSVilcbitcdFx0cHJvdG9jb2xfdHlwZSA9IHRydWU7XG4rXG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2dG4tXHUwMDNlbmFtZXRibF9sb2NrKTtcbitcdGlmIChwcm90b2NvbF90eXBlKVxuK1x0XHRnb3RvIGluc2VydDtcbiBcbi1cdGlmIChudC1cdTAwM2Vsb2NhbF9wdWJsX2NvdW50IFx1MDAzZT0gVElQQ19NQVhfUFVCTCkge1xuLVx0XHRwcl93YXJuKFwiQmluZCBmYWlsZWQsIG1heCBsaW1pdCAldSByZWFjaGVkXFxuXCIsIFRJUENfTUFYX1BVQkwpO1xuK1x0LyogUmVzZXJ2ZSBvbmUgZW50cnkgZm9yIG5vZGUgc3RhdGUgc2VydmljZSB0eXBlIGJlY2F1c2UgaXQgaGFzIGNsdXN0ZXJcbitcdCAqIHNjb3BlIGFuZCBpdCBpcyBkaXN0cmlidXRlZCBpbiBidWxrLiBTbywgdGhlIG1heGltdW0gbnVtYmVyIG9mIHVzZXInc1xuK1x0ICogcHVibGljYXRpb25zIGlzIChUSVBDX01BWF9QVUJMIC0gMSkuXG4rXHQgKi9cbitcdGlmIChudC1cdTAwM2Vsb2NhbF9wdWJsX2NvdW50IFx1MDAzZT0gbWF4X3VzZXJfcHViKSB7XG4rXHRcdHByX3dhcm4oXCJCaW5kIGZhaWxlZCwgbWF4IGxpbWl0ICV1IHJlYWNoZWRcXG5cIiwgbWF4X3VzZXJfcHViKTtcbiBcdFx0Z290byBleGl0O1xuIFx0fVxuIFxuK2luc2VydDpcbiBcdHAgPSB0aXBjX25hbWV0YmxfaW5zZXJ0X3B1YmwobmV0LCB1YSwgc2ssIGtleSk7XG4gXHRpZiAocCkge1xuLVx0XHRudC1cdTAwM2Vsb2NhbF9wdWJsX2NvdW50Kys7XG4rXHRcdC8qIE5vdCBjb3VudCBub2RlIHN0YXRlLCBsaW5rIHN0YXRlIGFuZCB0b3BvbG9neSBzZXJ2ZXIgdHlwZXNcbitcdFx0ICogc28gdGhhdCBtYXhpbXVtIG50LVx1MDAzZWxvY2FsX3B1YmxfY291bnQgZG9lcyBub3QgcHJldmVudFxuK1x0XHQgKiBwcm90b2NvbCBzZXJ2aWNlIHR5cGVzIGZyb20gYmVpbmcgaW5zZXJ0ZWQgaW50byB0aGUgbmFtZVxuK1x0XHQgKiB0YWJsZS5cbitcdFx0ICovXG4rXHRcdGlmICghcHJvdG9jb2xfdHlwZSlcbitcdFx0XHRudC1cdTAwM2Vsb2NhbF9wdWJsX2NvdW50Kys7XG4gXHRcdHNrYiA9IHRpcGNfbmFtZWRfcHVibGlzaChuZXQsIHApO1xuIFx0fVxuIFx0cmNfZGVzdHMgPSBudC1cdTAwM2VyY19kZXN0cztcbkBAIC04MTAsNyArODI5LDEwIEBAIHZvaWQgdGlwY19uYW1ldGJsX3dpdGhkcmF3KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfdWFkZHIgKnVhLFxuIFxuIFx0cCA9IHRpcGNfbmFtZXRibF9yZW1vdmVfcHVibChuZXQsIHVhLCBzaywga2V5KTtcbiBcdGlmIChwKSB7XG4tXHRcdG50LVx1MDAzZWxvY2FsX3B1YmxfY291bnQtLTtcbitcdFx0aWYgKHAtXHUwMDNlc3IudHlwZSAhPSBUSVBDX05PREVfU1RBVEUgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICBwLVx1MDAzZXNyLnR5cGUgIT0gVElQQ19MSU5LX1NUQVRFIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgcC1cdTAwM2Vzci50eXBlICE9IFRJUENfVE9QX1NSVilcbitcdFx0XHRudC1cdTAwM2Vsb2NhbF9wdWJsX2NvdW50LS07XG4gXHRcdHNrYiA9IHRpcGNfbmFtZWRfd2l0aGRyYXcobmV0LCBwKTtcbiBcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZwLVx1MDAzZWJpbmRpbmdfc29jayk7XG4gXHRcdGtmcmVlX3JjdShwLCByY3UpO1xuZGlmZiAtLWdpdCBhL25ldC90aXBjL25ldC5jIGIvbmV0L3RpcGMvbmV0LmNcbmluZGV4IDdlNjVkMGIwYzRhOGQuLjc1YWM0ZTNjZDAxYTggMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9uZXQuY1xuKysrIGIvbmV0L3RpcGMvbmV0LmNcbkBAIC0xMzksNiArMTM5LDExIEBAIHN0YXRpYyB2b2lkIHRpcGNfbmV0X2ZpbmFsaXplKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGFkZHIpXG4gXHR0aXBjX3NrX3JlaW5pdChuZXQpO1xuIFx0dGlwY19tb25fcmVpbml0X3NlbGYobmV0KTtcbiBcdHRpcGNfbmFtZXRibF9wdWJsaXNoKG5ldCwgXHUwMDI2dWEsIFx1MDAyNnNrLCBhZGRyKTtcbitcdGF0b21pY19zZXQoXHUwMDI2dG4tXHUwMDNlZmluYWxpemVkLCAxKTtcbitcdC8qIFdha2UgdXAgbm9kZXMgd2FpdGluZyBmb3IgZGlzdHJpYnV0aW5nIGJ1bGsgb2YgcHVibGljYXRpb25zXG4rXHQgKiBpZiBhcHBsaWNhYmxlLlxuK1x0ICovXG4rXHR0aXBjX25vZGVfd2FrZXVwKG5ldCk7XG4gfVxuIFxuIHZvaWQgdGlwY19uZXRfZmluYWxpemVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kaWZmIC0tZ2l0IGEvbmV0L3RpcGMvbm9kZS5jIGIvbmV0L3RpcGMvbm9kZS5jXG5pbmRleCA4ZTRlZjI2MzBhZTRmLi4zMzQ4MTJiZGFiNzY1IDEwMDY0NFxuLS0tIGEvbmV0L3RpcGMvbm9kZS5jXG4rKysgYi9uZXQvdGlwYy9ub2RlLmNcbkBAIC0xMTEsNiArMTExLDkgQEAgc3RydWN0IHRpcGNfYmNsaW5rX2VudHJ5IHtcbiAgKiBAcGVlcl9uZXQ6IHBlZXIncyBuZXQgbmFtZXNwYWNlXG4gICogQHBlZXJfaGFzaF9taXg6IGhhc2ggZm9yIHRoaXMgcGVlciAoRklYTUUpXG4gICogQGNyeXB0b19yeDogUlggY3J5cHRvIGhhbmRsZXJcbisgKiBAd29yazogd29yayBpdGVtIGZvciBidWxrIGRpc3RyaWJ1dGlvbiBvZiBjbHVzdGVyIHNjb3BlIHB1YmxpY2F0aW9uc1xuKyAqIEB3b3JrX3NjaGVkdWxlZDogZmxhZyB0byBpbmRpY2F0ZSB0aGUgd29yayBoYXMgYmVlbiBzY2hlZHVsZWRcbisgKiBAZmluYWxpemVkOiBmbGFnIHRvIHdha2UgdXAgc2NoZWR1bGVkIHdvcmtcbiAgKi9cbiBzdHJ1Y3QgdGlwY19ub2RlIHtcbiBcdHUzMiBhZGRyO1xuQEAgLTE0NSw2ICsxNDgsOSBAQCBzdHJ1Y3QgdGlwY19ub2RlIHtcbiAjaWZkZWYgQ09ORklHX1RJUENfQ1JZUFRPXG4gXHRzdHJ1Y3QgdGlwY19jcnlwdG8gKmNyeXB0b19yeDtcbiAjZW5kaWZcbitcdHN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrO1xuK1x0YXRvbWljX3Qgd29ya19zY2hlZHVsZWQ7XG4rXHRhdG9taWNfdCBmaW5hbGl6ZWQ7XG4gfTtcbiBcbiAvKiBOb2RlIEZTTSBzdGF0ZXMgYW5kIGV2ZW50czpcbkBAIC0zOTMsNiArMzk5LDU5IEBAIHN0YXRpYyB2b2lkIHRpcGNfbm9kZV93cml0ZV91bmxvY2tfZmFzdChzdHJ1Y3QgdGlwY19ub2RlICpuKVxuIFx0d3JpdGVfdW5sb2NrX2JoKFx1MDAyNm4tXHUwMDNlbG9jayk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHRpcGNfbm9kZV9kb3duKHN0cnVjdCB0aXBjX25vZGUgKm4pXG4re1xuK1x0aW50IGJlYXJlcl9pZDtcbitcbitcdGZvciAoYmVhcmVyX2lkID0gMDsgYmVhcmVyX2lkIFx1MDAzYyBNQVhfQkVBUkVSUzsgYmVhcmVyX2lkKyspXG4rXHRcdHRpcGNfbm9kZV9saW5rX2Rvd24obiwgYmVhcmVyX2lkLCBmYWxzZSk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHRpcGNfbm9kZV9kaXN0X2J1bGsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuK3tcbitcdHN0cnVjdCB0aXBjX25vZGUgKm5vZGUgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHRpcGNfbm9kZSwgd29yayk7XG4rXHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobm9kZS1cdTAwM2VuZXQpO1xuK1xuK1x0d2FpdF92YXJfZXZlbnQoXHUwMDI2bm9kZS1cdTAwM2VmaW5hbGl6ZWQsIGF0b21pY19yZWFkKFx1MDAyNm5vZGUtXHUwMDNlZmluYWxpemVkKSk7XG4rXG4rXHQvKiBub2RlIGlzIGRvd24gKi9cbitcdGlmICghYXRvbWljX3JlYWQoXHUwMDI2bm9kZS1cdTAwM2V3b3JrX3NjaGVkdWxlZCkpXG4rXHRcdGdvdG8gZXhpdDtcbitcbitcdC8qIFN0b3Agd2FraW5nIHVwIHdvcmsgaW4gdGlwY19ub2RlX3RpbWVvdXQoKSAqL1xuK1x0YXRvbWljX3NldChcdTAwMjZub2RlLVx1MDAzZXdvcmtfc2NoZWR1bGVkLCAwKTtcbitcbitcdGlmICh0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZShub2RlLVx1MDAzZW5ldCwgbm9kZS1cdTAwM2VhZGRyKSBcdTAwM2MgMClcbitcdFx0dGlwY19ub2RlX2Rvd24obm9kZSk7XG4rXG4rZXhpdDpcbitcdGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KFx1MDAyNnRuLVx1MDAzZW5vZGVfd3FfY291bnQpKVxuK1x0XHR3YWtlX3VwX3ZhcihcdTAwMjZ0bi1cdTAwM2Vub2RlX3dxX2NvdW50KTtcbitcbitcdHRpcGNfbm9kZV9wdXQobm9kZSk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHRpcGNfbm9kZV9jYW5jZWxfd29yayhzdHJ1Y3QgdGlwY19ub2RlICpub2RlKVxuK3tcbitcdGlmIChhdG9taWNfcmVhZChcdTAwMjZub2RlLVx1MDAzZXdvcmtfc2NoZWR1bGVkKSkge1xuK1x0XHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobm9kZS1cdTAwM2VuZXQpO1xuK1xuK1x0XHQvKiBXYWtlIHVwIHNjaGVkdWxlZCB3b3JrIGlmIGl0IGlzIHdhaXRpbmcuICovXG4rXHRcdGlmICghYXRvbWljX3JlYWQoXHUwMDI2bm9kZS1cdTAwM2VmaW5hbGl6ZWQpKSB7XG4rXHRcdFx0YXRvbWljX3NldChcdTAwMjZub2RlLVx1MDAzZXdvcmtfc2NoZWR1bGVkLCAwKTtcbitcdFx0XHRhdG9taWNfc2V0KFx1MDAyNm5vZGUtXHUwMDNlZmluYWxpemVkLCAxKTtcbitcdFx0XHR3YWtlX3VwX3ZhcihcdTAwMjZub2RlLVx1MDAzZWZpbmFsaXplZCk7XG4rXHRcdH1cbitcbitcdFx0LyogV29yayBpcyBwZW5kaW5nICovXG4rXHRcdGlmIChjYW5jZWxfd29yayhcdTAwMjZub2RlLVx1MDAzZXdvcmspKSB7XG4rXHRcdFx0aWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoXHUwMDI2dG4tXHUwMDNlbm9kZV93cV9jb3VudCkpXG4rXHRcdFx0XHR3YWtlX3VwX3ZhcihcdTAwMjZ0bi1cdTAwM2Vub2RlX3dxX2NvdW50KTtcbitcdFx0XHR0aXBjX25vZGVfcHV0KG5vZGUpO1xuK1x0XHR9XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyB2b2lkIHRpcGNfbm9kZV93cml0ZV91bmxvY2soc3RydWN0IHRpcGNfbm9kZSAqbilcbiBcdF9fcmVsZWFzZXMobi1cdTAwM2Vsb2NrKVxuIHtcbkBAIC00MjEsMTEgKzQ4MCwzMiBAQCBzdGF0aWMgdm9pZCB0aXBjX25vZGVfd3JpdGVfdW5sb2NrKHN0cnVjdCB0aXBjX25vZGUgKm4pXG4gXG4gXHR3cml0ZV91bmxvY2tfYmgoXHUwMDI2bi1cdTAwM2Vsb2NrKTtcbiBcbi1cdGlmIChmbGFncyBcdTAwMjYgVElQQ19OT1RJRllfTk9ERV9ET1dOKVxuK1x0aWYgKGZsYWdzIFx1MDAyNiBUSVBDX05PVElGWV9OT0RFX0RPV04pIHtcbiBcdFx0dGlwY19wdWJsX25vdGlmeShuZXQsIHB1YmxfbGlzdCwgbm9kZSwgbi1cdTAwM2VjYXBhYmlsaXRpZXMpO1xuLVxuLVx0aWYgKGZsYWdzIFx1MDAyNiBUSVBDX05PVElGWV9OT0RFX1VQKVxuLVx0XHR0aXBjX25hbWVkX25vZGVfdXAobmV0LCBub2RlLCBuLVx1MDAzZWNhcGFiaWxpdGllcyk7XG4rXHRcdHRpcGNfbm9kZV9jYW5jZWxfd29yayhuKTtcbitcdH1cbitcbitcdGlmIChmbGFncyBcdTAwMjYgVElQQ19OT1RJRllfTk9ERV9VUCkge1xuK1x0XHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobmV0KTtcbitcdFx0aW50IHJjID0gMDtcbitcbitcdFx0cmMgPSB0aXBjX25hbWVkX25vZGVfdXAobmV0LCBub2RlLCBuLVx1MDAzZWNhcGFiaWxpdGllcyk7XG4rXHRcdC8qIERlZmVyIGJ1bGsgZGlzdHJpYnV0aW9uIHRvIHdvcmsgcXVldWUgKi9cbitcdFx0aWYgKHJjIFx1MDAzZSAwKSB7XG4rXHRcdFx0YXRvbWljX3NldChcdTAwMjZuLVx1MDAzZXdvcmtfc2NoZWR1bGVkLCAxKTtcbitcdFx0XHRhdG9taWNfaW5jKFx1MDAyNnRuLVx1MDAzZW5vZGVfd3FfY291bnQpO1xuK1x0XHRcdHRpcGNfbm9kZV9nZXQobik7XG4rXHRcdFx0aWYgKCFzY2hlZHVsZV93b3JrKFx1MDAyNm4tXHUwMDNld29yaykpIHtcbitcdFx0XHRcdGF0b21pY19kZWMoXHUwMDI2dG4tXHUwMDNlbm9kZV93cV9jb3VudCk7XG4rXHRcdFx0XHR0aXBjX25vZGVfcHV0KG4pO1xuK1x0XHRcdH1cbitcdFx0fSBlbHNlIGlmIChyYyBcdTAwM2MgMCkge1xuK1x0XHRcdC8qIEJyaW5nIHRoZSBub2RlIGRvd24gdG8gc3RhcnQgb3ZlciBidWxrIGRpc3RyaWJ1dGlvblxuK1x0XHRcdCAqIHdoZW4gdGhlIGZpcnN0IGxpbmsgaXMgdXAgYWdhaW4uXG4rXHRcdFx0ICovXG4rXHRcdFx0dGlwY19ub2RlX2Rvd24obik7XG4rXHRcdH1cbitcdH1cbiBcbiBcdGlmIChmbGFncyBcdTAwMjYgVElQQ19OT1RJRllfTElOS19VUCkge1xuIFx0XHR0aXBjX21vbl9wZWVyX3VwKG5ldCwgbm9kZSwgYmVhcmVyX2lkKTtcbkBAIC01NjQsNiArNjQ0LDkgQEAgc3RydWN0IHRpcGNfbm9kZSAqdGlwY19ub2RlX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBhZGRyLCB1OCAqcGVlcl9pZCxcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNm4tXHUwMDNlbGlzdCk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZuLVx1MDAzZXB1YmxfbGlzdCk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZuLVx1MDAzZWNvbm5fc2tzKTtcbitcdElOSVRfV09SSyhcdTAwMjZuLVx1MDAzZXdvcmssIHRpcGNfbm9kZV9kaXN0X2J1bGspO1xuK1x0YXRvbWljX3NldChcdTAwMjZuLVx1MDAzZXdvcmtfc2NoZWR1bGVkLCAwKTtcbitcdGF0b21pY19zZXQoXHUwMDI2bi1cdTAwM2VmaW5hbGl6ZWQsIDApO1xuIFx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZuLVx1MDAzZWJjX2VudHJ5Lm5hbWVkcSk7XG4gXHRza2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNm4tXHUwMDNlYmNfZW50cnkuaW5wdXRxMSk7XG4gXHRfX3NrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2bi1cdTAwM2ViY19lbnRyeS5hcnJ2cSk7XG5AQCAtNjUzLDYgKzczNiwyMSBAQCB2b2lkIHRpcGNfbm9kZV9zdG9wKHN0cnVjdCBuZXQgKm5ldClcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnRuLVx1MDAzZW5vZGVfbGlzdF9sb2NrKTtcbiB9XG4gXG4rdm9pZCB0aXBjX25vZGVfd2FrZXVwKHN0cnVjdCBuZXQgKm5ldClcbit7XG4rXHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobmV0KTtcbitcdHN0cnVjdCB0aXBjX25vZGUgKm5vZGU7XG4rXG4rXHRyY3VfcmVhZF9sb2NrKCk7XG4rXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShub2RlLCBcdTAwMjZ0bi1cdTAwM2Vub2RlX2xpc3QsIGxpc3QpIHtcbitcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNm5vZGUtXHUwMDNld29ya19zY2hlZHVsZWQpKSB7XG4rXHRcdFx0YXRvbWljX3NldChcdTAwMjZub2RlLVx1MDAzZWZpbmFsaXplZCwgMSk7XG4rXHRcdFx0d2FrZV91cF92YXIoXHUwMDI2bm9kZS1cdTAwM2VmaW5hbGl6ZWQpO1xuK1x0XHR9XG4rXHR9XG4rXHRyY3VfcmVhZF91bmxvY2soKTtcbit9XG4rXG4gdm9pZCB0aXBjX25vZGVfc3Vic2NyaWJlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGxpc3RfaGVhZCAqc3Vic2NyLCB1MzIgYWRkcilcbiB7XG4gXHRzdHJ1Y3QgdGlwY19ub2RlICpuO1xuQEAgLTgwMSw2ICs4OTksNyBAQCBzdGF0aWMgYm9vbCB0aXBjX25vZGVfY2xlYW51cChzdHJ1Y3QgdGlwY19ub2RlICpwZWVyKVxuIHN0YXRpYyB2b2lkIHRpcGNfbm9kZV90aW1lb3V0KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuIHtcbiBcdHN0cnVjdCB0aXBjX25vZGUgKm4gPSB0aW1lcl9jb250YWluZXJfb2YobiwgdCwgdGltZXIpO1xuK1x0c3RydWN0IHRpcGNfbmV0ICp0biA9IHRpcGNfbmV0KG4tXHUwMDNlbmV0KTtcbiBcdHN0cnVjdCB0aXBjX2xpbmtfZW50cnkgKmxlO1xuIFx0c3RydWN0IHNrX2J1ZmZfaGVhZCB4bWl0cTtcbiBcdGludCByZW1haW5zID0gbi1cdTAwM2VsaW5rX2NudDtcbkBAIC04MTQsNiArOTEzLDExIEBAIHN0YXRpYyB2b2lkIHRpcGNfbm9kZV90aW1lb3V0KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4rXHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2dG4tXHUwMDNlZmluYWxpemVkKSBcdTAwMjZcdTAwMjYgYXRvbWljX3JlYWQoXHUwMDI2bi1cdTAwM2V3b3JrX3NjaGVkdWxlZCkpIHtcbitcdFx0YXRvbWljX3NldChcdTAwMjZuLVx1MDAzZWZpbmFsaXplZCwgMSk7XG4rXHRcdHdha2VfdXBfdmFyKFx1MDAyNm4tXHUwMDNlZmluYWxpemVkKTtcbitcdH1cbitcbiAjaWZkZWYgQ09ORklHX1RJUENfQ1JZUFRPXG4gXHQvKiBUYWtlIGFueSBjcnlwdG8ga2V5IHJlbGF0ZWQgYWN0aW9ucyBmaXJzdCAqL1xuIFx0dGlwY19jcnlwdG9fdGltZW91dChuLVx1MDAzZWNyeXB0b19yeCk7XG5kaWZmIC0tZ2l0IGEvbmV0L3RpcGMvbm9kZS5oIGIvbmV0L3RpcGMvbm9kZS5oXG5pbmRleCAxNTRhNWJiYjBkMjlkLi5jN2JjM2JjMDUzMjg1IDEwMDY0NFxuLS0tIGEvbmV0L3RpcGMvbm9kZS5oXG4rKysgYi9uZXQvdGlwYy9ub2RlLmhcbkBAIC03NSw2ICs3NSw3IEBAIGVudW0ge1xuICNkZWZpbmUgSU5WQUxJRF9CRUFSRVJfSUQgLTFcbiBcbiB2b2lkIHRpcGNfbm9kZV9zdG9wKHN0cnVjdCBuZXQgKm5ldCk7XG4rdm9pZCB0aXBjX25vZGVfd2FrZXVwKHN0cnVjdCBuZXQgKm5ldCk7XG4gYm9vbCB0aXBjX25vZGVfZ2V0X2lkKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGFkZHIsIHU4ICppZCk7XG4gdTMyIHRpcGNfbm9kZV9nZXRfYWRkcihzdHJ1Y3QgdGlwY19ub2RlICpub2RlKTtcbiBjaGFyICp0aXBjX25vZGVfZ2V0X2lkX3N0cihzdHJ1Y3QgdGlwY19ub2RlICpub2RlKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE5OjI5OjM0LjA5NjM2NjYwOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2NjA5OTY2MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVElQQyBQYXRjaCBmb3IgdGhlIExpbnV4IEtlcm5lbCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgcG9raW5nIGFyb3VuZCBpbiB0aGUgVElQQyBzdWJzeXN0ZW0gb2YgdGhlIExpbnV4IGtlcm5lbC4gSXQgdG91Y2hlcyBxdWl0ZSBhIGZldyBmaWxlczogYGNvcmUuY2AsIGBjb3JlLmhgLCBgbmFtZV9kaXN0ci5jYCwgYG5hbWVfZGlzdHIuaGAsIGBuYW1lX3RhYmxlLmNgLCBgbmV0LmNgLCBgbm9kZS5jYCwgYW5kIGBub2RlLmhgLiBTZWVtcyBsaWtlIGEgcHJldHR5IHNpZ25pZmljYW50IGFyZWEgb2YgdGhlIGNvZGUuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIHJpZ2h0IGluIGFuZCB1bmRlcnN0YW5kIHdoYXQncyBhY3R1YWxseSBjaGFuZ2luZy4gUmlnaHQgb2ZmIHRoZSBiYXQsIGl0IGxvb2tzIGxpa2UgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgd29ya3F1ZXVlIHNwZWNpZmljYWxseSBmb3IgZWZmaWNpZW50bHkgZGlzdHJpYnV0aW5nIHB1YmxpY2F0aW9ucyBhY3Jvc3MgdGhlIGNsdXN0ZXIgc2NvcGUsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJdCBhbHNvIGFwcGVhcnMgd2UncmUgYWRkaW5nIHNvbWUgYXRvbWljIHZhcmlhYmxlcywgYG5vZGVfd3FfY291bnRgIGFuZCBgZmluYWxpemVkYCwgdG8gdGhlIGB0aXBjX25ldGAgc3RydWN0dXJlLiBUaGUgY2hhbmdlIHRvIGB0aXBjX25hbWVkX25vZGVfdXBgIHRvIHJldHVybiBhbiBpbnRlZ2VyIGluc3RlYWQgb2Ygdm9pZCBpbW1lZGlhdGVseSByYWlzZXMgbXkgZXllYnJvd3Mg4oCTIHRoYXQncyBvZnRlbiBhIHNpZ25hbCBvZiBhIGJlaGF2aW9yYWwgY2hhbmdlIG9yIGVycm9yIHJlcG9ydGluZyBiZWluZyBhZGRlZC4gV2UgaGF2ZSBhIG5ldyBmdW5jdGlvbiwgYHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlYCwgd2hpY2ggY291bGQgYmUgdGllZCB0byB0aGUgd29ya3F1ZXVlLiBBbHNvLCB0aGUgbW9kaWZpY2F0aW9ucyB0byBgdGlwY19uYW1ldGJsX3B1Ymxpc2hgIHRvIG1hbmFnZSBgcHJvdG9jb2xfdHlwZWAgYW5kIHJlc2VydmUgYW4gZW50cnkgZm9yIHRoZSBub2RlIHN0YXRlIHNlcnZpY2UgdHlwZSBhcmUgbm90YWJsZS4gUGx1cywgYSBuZXcgd29yayBmdW5jdGlvbiwgYHRpcGNfbm9kZV9kaXN0X2J1bGtgLCBpcyBiZWluZyBhZGRlZCwgYWxzbyBpbiBgbm9kZS5jYC4gVGhlIGNoYW5nZXMgdG8gYHRpcGNfbm9kZV93cml0ZV91bmxvY2tgIGluZGljYXRlIHRoYXQgdGhlIHdvcmtxdWV1ZSBpcyB0cmlnZ2VyZWQgaWYgYHRpcGNfbmFtZWRfbm9kZV91cGAgcmVwb3J0cyBhIHBvc2l0aXZlIHZhbHVlLiBBbmQgZmluYWxseSwgd2UgaGF2ZSBhIG5ldyBmdW5jdGlvbiwgYHRpcGNfbm9kZV93YWtldXBgLlxuXG5BbHJpZ2h0LCBwdXR0aW5nIGl0IGFsbCB0b2dldGhlciwgdGhpcyBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIFRJUEMgaW1wbGVtZW50YXRpb24uIEFuZCBnaXZlbiB0aGUgbmF0dXJlIG9mIFRJUEMsIHdoaWNoIGlzIGFjY2Vzc2libGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB0aGlzIGRlZmluaXRlbHkgd2FycmFudHMgc29tZSBzZXJpb3VzIGZ1enppbmcuIFNlY3VyaXR5IGlzIHBhcmFtb3VudCwgYW5kIHRoZXNlIHR5cGVzIG9mIGNoYW5nZXMgYXJlIHByaW1lIHRhcmdldHMgZm9yIHZ1bG5lcmFiaWxpdHkgZGlzY292ZXJ5LlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aG9zZSBDT05GSUcgb3B0aW9ucy4gSSByZW1lbWJlciBUSVBDIGlzIGNvbnRyb2xsZWQgYnkgYENPTkZJR19USVBDYC4gTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgaW4gYG5ldC90aXBjL0tjb25maWdgIHRvIGJlIHN1cmUgSSBoYXZlIHRoZSB3aG9sZSBwaWN0dXJlIGJlZm9yZSBnb2luZyBhbnkgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzk3MywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE5OjI5OjQxLjc1NzM2NTU0NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzI4MDQ0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVElQQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL0tjb25maWctNS1cXG5uZXQvdGlwYy9LY29uZmlnOjY6bWVudWNvbmZpZyBUSVBDXFxubmV0L3RpcGMvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgVElQQyBQcm90b2NvbFxcXCJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctMjMtXFxubmV0L3RpcGMvS2NvbmZpZzoyNDpjb25maWcgVElQQ19NRURJQV9JQlxcbm5ldC90aXBjL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiSW5maW5pQmFuZCBtZWRpYSB0eXBlIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTI5LVxcdCAgSVAtb3Zlci1JbmZpbmlCYW5kIGRldmljZXMuXFxubmV0L3RpcGMvS2NvbmZpZzozMDpjb25maWcgVElQQ19NRURJQV9VRFBcXG5uZXQvdGlwYy9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIklQL1VEUCBtZWRpYSB0eXBlIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTM3LVxcbm5ldC90aXBjL0tjb25maWc6Mzg6Y29uZmlnIFRJUENfQ1JZUFRPXFxubmV0L3RpcGMvS2NvbmZpZy0zOS1cXHRib29sIFxcXCJUSVBDIGVuY3J5cHRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctNTItXFxubmV0L3RpcGMvS2NvbmZpZzo1Mzpjb25maWcgVElQQ19ESUFHXFxubmV0L3RpcGMvS2NvbmZpZy01NC1cXHR0cmlzdGF0ZSBcXFwiVElQQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxOToyOTo0MS44MTA2NTEyNDRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTMwOTA5NjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIHRoZSBUSVBDIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBpdC4gYENPTkZJR19USVBDYCBpcyBjbGVhcmx5IHRoZSBjZW50cmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdlJ3JlIGRlYWxpbmcgd2l0aCBoZXJlLCB0aGF0J3Mgb2J2aW91cy4gTm93IHRoZSBjcnVjaWFsIHN0ZXAgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgaXRzIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMsIG9wdGlvbnMsIG9yIGV2ZW4gb3RoZXIgbW9kdWxlcyBuZWVkIHRvIGJlIGVuYWJsZWQgb3IgYXJlIGFmZmVjdGVkIGlmIGBDT05GSUdfVElQQ2AgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4gVGhpcyBpcyB3aGVyZSB0aGUgZWZmaWNpZW5jeSBvZiBteSB3b3JrZmxvdyBjb21lcyBpbiwgSSBjYW7igJl0IHNwZW5kIHRpbWUgb24gdGhlIGJhc2ljcyDigJMgSSdtIGxvb2tpbmcgZm9yIHRoZSBub24tb2J2aW91cyByZWxhdGlvbnNoaXBzLCBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cywgYW5kIHRoZSBicm9hZGVyIGltcGxpY2F0aW9ucyBmb3IgdGhlIHN5c3RlbS4gSSBuZWVkIHRvIGltbWVkaWF0ZWx5IHVuZGVyc3RhbmQgdGhlIGVudGlyZSBsYW5kc2NhcGUuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCdzIGFjdHVhbGx5IGNvbm5lY3RlZCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTE0MywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE5OjI5OjQ5Ljk0MTU2NTA1M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTI1Njc4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC90aXBjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3RpcGMvS2NvbmZpZz02PW1lbnVjb25maWcgVElQQ1xcbm5ldC90aXBjL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiVGhlIFRJUEMgUHJvdG9jb2xcXFwiXFxubmV0L3RpcGMvS2NvbmZpZzo4OlxcdGRlcGVuZHMgb24gSU5FVFxcbm5ldC90aXBjL0tjb25maWctOS1cXHRoZWxwXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnPTI0PWNvbmZpZyBUSVBDX01FRElBX0lCXFxubmV0L3RpcGMvS2NvbmZpZy0yNS1cXHRib29sIFxcXCJJbmZpbmlCYW5kIG1lZGlhIHR5cGUgc3VwcG9ydFxcXCJcXG5uZXQvdGlwYy9LY29uZmlnOjI2OlxcdGRlcGVuZHMgb24gVElQQyBcXHUwMDI2XFx1MDAyNiBJTkZJTklCQU5EX0lQT0lCXFxubmV0L3RpcGMvS2NvbmZpZy0yNy1cXHRoZWxwXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnPTMwPWNvbmZpZyBUSVBDX01FRElBX1VEUFxcbm5ldC90aXBjL0tjb25maWctMzEtXFx0Ym9vbCBcXFwiSVAvVURQIG1lZGlhIHR5cGUgc3VwcG9ydFxcXCJcXG5uZXQvdGlwYy9LY29uZmlnOjMyOlxcdGRlcGVuZHMgb24gVElQQ1xcbm5ldC90aXBjL0tjb25maWctMzMtXFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnPTM4PWNvbmZpZyBUSVBDX0NSWVBUT1xcbm5ldC90aXBjL0tjb25maWctMzktXFx0Ym9vbCBcXFwiVElQQyBlbmNyeXB0aW9uIHN1cHBvcnRcXFwiXFxubmV0L3RpcGMvS2NvbmZpZzo0MDpcXHRkZXBlbmRzIG9uIFRJUENcXG5uZXQvdGlwYy9LY29uZmlnLTQxLVxcdHNlbGVjdCBDUllQVE9cXG4tLVxcbm5ldC90aXBjL0tjb25maWc9NTM9Y29uZmlnIFRJUENfRElBR1xcbm5ldC90aXBjL0tjb25maWctNTQtXFx0dHJpc3RhdGUgXFxcIlRJUEM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG5uZXQvdGlwYy9LY29uZmlnOjU1OlxcdGRlcGVuZHMgb24gVElQQ1xcbm5ldC90aXBjL0tjb25maWctNTYtXFx0ZGVmYXVsdCB5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE5OjI5OjQ5Ljk5MDgyNjE3MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5NTAwNzQ3NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUSVBDIENvbmZpZ3VyYXRpb24gZm9yIEZvY3VzIFN5bWJvbHMqKlxuXG5Pa2F5LCBzbyBgVElQQ2AgZGVwZW5kcyBvbiBgSU5FVGAsIHRoYXQncyBvdXIgc3RhcnRpbmcgcG9pbnQuIFdlIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbi4gTG9va2luZyBhdCB0aGUgcGF0Y2gsIHRoZSBjb2RlIG1vZGlmaWVzIGEgYnVuY2ggb2YgZnVuY3Rpb25zLiBOb3csIHdoaWNoIG9uZXMgYXJlIGtleT9cblxuVGhlIHBhdGNoIHNlZW1zIHRvIGJlIHRvdWNoaW5nIGB0aXBjX2luaXRfbmV0YCwgYHRpcGNfZXhpdF9uZXRgLCBgbmFtZWRfZGlzdHJpYnV0ZWAsIGB0aXBjX25hbWVkX2Rpc3RyaWJ1dGVgLCBgdGlwY19uYW1lZF9ub2RlX3VwYCwgYHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlYCwgYHRpcGNfbmFtZXRibF9wdWJsaXNoYCwgYHRpcGNfbmFtZXRibF93aXRoZHJhd2AsIGB0aXBjX25ldF9maW5hbGl6ZWAsIGB0aXBjX25vZGVfZG93bmAsIGB0aXBjX25vZGVfZGlzdF9idWxrYCwgYHRpcGNfbm9kZV9jYW5jZWxfd29ya2AsIGB0aXBjX25vZGVfd3JpdGVfdW5sb2NrYCwgYHRpcGNfbm9kZV9jcmVhdGVgLCBgdGlwY19ub2RlX3dha2V1cGAsIGFuZCBgdGlwY19ub2RlX3RpbWVvdXRgLiBUaGF0J3MgYSBsb3QsIGJ1dCB3ZSBjYW4gZGVmaW5pdGVseSBuYXJyb3cgaXQgZG93bi5cblxuTGV0J3MgZm9jdXMgb24gdGhlIGZ1bmN0aW9ucyBJIHN1c3BlY3QgYXJlIG1vc3QgY2VudHJhbCB0byB0aGUgY2hhbmdlczogYHRpcGNfbmFtZWRfbm9kZV91cGAsIGB0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZWAsIGB0aXBjX25hbWV0YmxfcHVibGlzaGAsIGB0aXBjX25hbWV0Ymxfd2l0aGRyYXdgLCBgdGlwY19ub2RlX2Rpc3RfYnVsa2AsIGFuZCBgdGlwY19ub2RlX3dha2V1cGAuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiDigJMgYXJlIHRoZXNlIGZ1bmN0aW9ucyBzdGF0aWMgb3IgZXhwb3J0ZWQ/IExldCdzIGNoZWNrLiBBaGEsIGB0aXBjX25hbWVkX25vZGVfdXBgLCBgdGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGVgLCBgdGlwY19uYW1ldGJsX3B1Ymxpc2hgLCBgdGlwY19uYW1ldGJsX3dpdGhkcmF3YCwgYW5kIGB0aXBjX25vZGVfd2FrZXVwYCBhcmUgZ2xvYmFsLCB3aGljaCBpcyB3aGF0IHdlIG5lZWQgdG8gZm9jdXMgb24uIGB0aXBjX25vZGVfZGlzdF9idWxrYCBpcyAqc3RhdGljKiwgc28gaXQncyBub3QgZ29pbmcgdG8gYmUgYSBnb29kIHN5bWJvbC5cblxuTm93LCBsZXQncyBnbyBjaGVjayB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzOiBgbmV0L3RpcGMvbmFtZV9kaXN0ci5jYCBhbmQgYG5ldC90aXBjL25vZGUuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3NjcsIk91dHB1dFRva2VucyI6NjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTk6Mjk6NTYuOTQwOTAzNjYxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MTY4NTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRpcGNfbmFtZWRfbm9kZV91cHx0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZXx0aXBjX25hbWV0YmxfcHVibGlzaHx0aXBjX25hbWV0Ymxfd2l0aGRyYXd8dGlwY19ub2RlX3dha2V1cFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3RpcGMvbmFtZV9kaXN0ci5jPTIwOD1zdGF0aWMgaW50IHRpcGNfbmFtZWRfZGlzdHJpYnV0ZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSlcXG4tLVxcbm5ldC90aXBjL25hbWVfZGlzdHIuYy0yMzEtLyoqXFxubmV0L3RpcGMvbmFtZV9kaXN0ci5jOjIzMjogKiB0aXBjX25hbWVkX25vZGVfdXAgLSB0ZWxsIHNwZWNpZmllZCBub2RlIGFib3V0IGFsbCBwdWJsaWNhdGlvbnMgYnkgdGhpcyBub2RlXFxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTIzMy0gKiBAbmV0OiB0aGUgYXNzb2NpYXRlZCBuZXR3b3JrIG5hbWVzcGFjZVxcbi0tXFxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTIzNi0gKi9cXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmM6MjM3OmludCB0aXBjX25hbWVkX25vZGVfdXAoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUsIHUxNiBjYXBhYmlsaXRpZXMpXFxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTIzOC17XFxuLS1cXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmMtMjQ5LVxcdCAqICAgIHRlYXJkb3duLlxcbm5ldC90aXBjL25hbWVfZGlzdHIuYzoyNTA6XFx0ICogMi4gT3IgdGlwY19uZXRfZmluYWxpemUoKSAtLS1cXHUwMDNlIHRpcGNfbmFtZXRibF9wdWJsaXNoKCkgaGFzIGZhaWxlZFxcbm5ldC90aXBjL25hbWVfZGlzdHIuYy0yNTEtXFx0ICogICAgdG8gaW5zZXJ0IG5vZGUgc2VsZiBhZGRyZXNzIHB1YmxpY2F0aW9uIGludG8gbnQtXFx1MDAzZWNsdXN0ZXJfc2NvcGVcXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmMtMjUyLVxcdCAqICAgIGR1ZSB0byBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlLlxcbm5ldC90aXBjL25hbWVfZGlzdHIuYzoyNTM6XFx0ICogMy4gT3IgdGlwY19uZXRfZmluYWxpemUoKSAtLS1cXHUwMDNlIHRpcGNfbmFtZXRibF9wdWJsaXNoKCkgaGFzIG5vdFxcbm5ldC90aXBjL25hbWVfZGlzdHIuYy0yNTQtXFx0ICogICAgZXhlY3V0ZWQgeWV0Llxcbi0tXFxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTI2NS0vKipcXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmM6MjY2OiAqIHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlIC0gZGlzdHJpYnV0ZSBhbGwgcHVibGljYXRpb25zIHRvIHNwZWNpZmllZCBub2RlXFxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTI2Ny0gKiBAbmV0OiB0aGUgYXNzb2NpYXRlZCBuZXR3b3JrIG5hbWVzcGFjZVxcbi0tXFxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTI2OS0gKi9cXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmM6MjcwOmludCB0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSlcXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmMtMjcxLXtcXG4tLVxcbm5ldC90aXBjL25hbWVfZGlzdHIuYy0yNzgtXFx0cmVhZF91bmxvY2tfYmgoXFx1MDAyNm50LVxcdTAwM2VjbHVzdGVyX3Njb3BlX2xvY2spO1xcbm5ldC90aXBjL25hbWVfZGlzdHIuYzoyNzk6XFx0LyogdGlwY19uZXRfZmluYWxpemUoKSAtLS1cXHUwMDNlIHRpcGNfbmFtZXRibF9wdWJsaXNoKCkgaGFzIGZhaWxlZCB0byBpbnNlcnRcXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmMtMjgwLVxcdCAqIG5vZGUgc2VsZiBhZGRyZXNzIHB1YmxpY2F0aW9uIGludG8gbnQtXFx1MDAzZWNsdXN0ZXJfc2NvcGUgZHVlIHRvIG1lbW9yeVxcbi0tXFxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTI5MS1cXHRcXHRcXHQgICBUSVBDX05PREVfU1RBVEUsIHRuLVxcdTAwM2Vub2RlX2FkZHIsIHRuLVxcdTAwM2Vub2RlX2FkZHIpO1xcbm5ldC90aXBjL25hbWVfZGlzdHIuYzoyOTI6XFx0XFx0aWYgKCF0aXBjX25hbWV0YmxfcHVibGlzaChuZXQsIFxcdTAwMjZ1YSwgXFx1MDAyNnNrLCB0bi1cXHUwMDNlbm9kZV9hZGRyKSlcXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmMtMjkzLVxcdFxcdFxcdHJldHVybiAtRU5PQlVGUztcXG4tLVxcbm5ldC90aXBjL25hbWVfZGlzdHIuaD03MT1zdHJ1Y3Qgc2tfYnVmZiAqdGlwY19uYW1lZF93aXRoZHJhdyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBwdWJsaWNhdGlvbiAqcHVibCk7XFxubmV0L3RpcGMvbmFtZV9kaXN0ci5oOjcyOmludCB0aXBjX25hbWVkX25vZGVfdXAoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUsIHUxNiBjYXBhYmlsaXRpZXMpO1xcbm5ldC90aXBjL25hbWVfZGlzdHIuaDo3MzppbnQgdGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUpO1xcbm5ldC90aXBjL25hbWVfZGlzdHIuaC03NC12b2lkIHRpcGNfbmFtZWRfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqbmFtZWRxLFxcbi0tXFxubmV0L3RpcGMvbmFtZV90YWJsZS5jPTczMj12b2lkIHRpcGNfbmFtZXRibF9idWlsZF9ncm91cChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX2dyb3VwICpncnAsXFxuLS1cXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmMtNzU5LVxcbm5ldC90aXBjL25hbWVfdGFibGUuYzo3NjA6LyogdGlwY19uYW1ldGJsX3B1Ymxpc2ggLSBhZGQgc2VydmljZSBiaW5kaW5nIHRvIG5hbWUgdGFibGVcXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmMtNzYxLSAqL1xcbm5ldC90aXBjL25hbWVfdGFibGUuYzo3NjI6c3RydWN0IHB1YmxpY2F0aW9uICp0aXBjX25hbWV0YmxfcHVibGlzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX3VhZGRyICp1YSxcXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmMtNzYzLVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgdGlwY19zb2NrZXRfYWRkciAqc2ssIHUzMiBrZXkpXFxuLS1cXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmMtODEyLS8qKlxcbm5ldC90aXBjL25hbWVfdGFibGUuYzo4MTM6ICogdGlwY19uYW1ldGJsX3dpdGhkcmF3IC0gd2l0aGRyYXcgYSBzZXJ2aWNlIGJpbmRpbmdcXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmMtODE0LSAqIEBuZXQ6IG5ldHdvcmsgbmFtZXNwYWNlXFxuLS1cXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmMtODE4LSAqL1xcbm5ldC90aXBjL25hbWVfdGFibGUuYzo4MTk6dm9pZCB0aXBjX25hbWV0Ymxfd2l0aGRyYXcoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGlwY191YWRkciAqdWEsXFxubmV0L3RpcGMvbmFtZV90YWJsZS5jLTgyMC1cXHRcXHRcXHQgICBzdHJ1Y3QgdGlwY19zb2NrZXRfYWRkciAqc2ssIHUzMiBrZXkpXFxuLS1cXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmg9MTI2PXZvaWQgdGlwY19uYW1ldGJsX2J1aWxkX2dyb3VwKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfZ3JvdXAgKmdycCxcXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmgtMTI3LVxcdFxcdFxcdCAgICAgIHN0cnVjdCB0aXBjX3VhZGRyICp1YSk7XFxubmV0L3RpcGMvbmFtZV90YWJsZS5oOjEyODpzdHJ1Y3QgcHVibGljYXRpb24gKnRpcGNfbmFtZXRibF9wdWJsaXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfdWFkZHIgKnVhLFxcbm5ldC90aXBjL25hbWVfdGFibGUuaC0xMjktXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCB0aXBjX3NvY2tldF9hZGRyICpzaywgdTMyIGtleSk7XFxubmV0L3RpcGMvbmFtZV90YWJsZS5oOjEzMDp2b2lkIHRpcGNfbmFtZXRibF93aXRoZHJhdyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX3VhZGRyICp1YSxcXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmgtMTMxLVxcdFxcdFxcdCAgIHN0cnVjdCB0aXBjX3NvY2tldF9hZGRyICpzaywgdTMyIGtleSk7XFxuLS1cXG5uZXQvdGlwYy9uZXQuYz0xMjY9c3RhdGljIHZvaWQgdGlwY19uZXRfZmluYWxpemUoc3RydWN0IG5ldCAqbmV0LCB1MzIgYWRkcilcXG4tLVxcbm5ldC90aXBjL25ldC5jLTE0MC1cXHR0aXBjX21vbl9yZWluaXRfc2VsZihuZXQpO1xcbm5ldC90aXBjL25ldC5jOjE0MTpcXHR0aXBjX25hbWV0YmxfcHVibGlzaChuZXQsIFxcdTAwMjZ1YSwgXFx1MDAyNnNrLCBhZGRyKTtcXG5uZXQvdGlwYy9uZXQuYy0xNDItXFx0YXRvbWljX3NldChcXHUwMDI2dG4tXFx1MDAzZWZpbmFsaXplZCwgMSk7XFxuLS1cXG5uZXQvdGlwYy9uZXQuYy0xNDUtXFx0ICovXFxubmV0L3RpcGMvbmV0LmM6MTQ2OlxcdHRpcGNfbm9kZV93YWtldXAobmV0KTtcXG5uZXQvdGlwYy9uZXQuYy0xNDctfVxcbi0tXFxubmV0L3RpcGMvbm9kZS5jPTQxMD1zdGF0aWMgdm9pZCB0aXBjX25vZGVfZGlzdF9idWxrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC90aXBjL25vZGUuYy00MjMtXFxubmV0L3RpcGMvbm9kZS5jOjQyNDpcXHRpZiAodGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGUobm9kZS1cXHUwMDNlbmV0LCBub2RlLVxcdTAwM2VhZGRyKSBcXHUwMDNjIDApXFxubmV0L3RpcGMvbm9kZS5jLTQyNS1cXHRcXHR0aXBjX25vZGVfZG93bihub2RlKTtcXG4tLVxcbm5ldC90aXBjL25vZGUuYz00NTU9c3RhdGljIHZvaWQgdGlwY19ub2RlX3dyaXRlX3VubG9jayhzdHJ1Y3QgdGlwY19ub2RlICpuKVxcbi0tXFxubmV0L3RpcGMvbm9kZS5jLTQ5MS1cXG5uZXQvdGlwYy9ub2RlLmM6NDkyOlxcdFxcdHJjID0gdGlwY19uYW1lZF9ub2RlX3VwKG5ldCwgbm9kZSwgbi1cXHUwMDNlY2FwYWJpbGl0aWVzKTtcXG5uZXQvdGlwYy9ub2RlLmMtNDkzLVxcdFxcdC8qIERlZmVyIGJ1bGsgZGlzdHJpYnV0aW9uIHRvIHdvcmsgcXVldWUgKi9cXG4tLVxcbm5ldC90aXBjL25vZGUuYy01MTEtXFx0XFx0dGlwY19tb25fcGVlcl91cChuZXQsIG5vZGUsIGJlYXJlcl9pZCk7XFxubmV0L3RpcGMvbm9kZS5jOjUxMjpcXHRcXHR0aXBjX25hbWV0YmxfcHVibGlzaChuZXQsIFxcdTAwMjZ1YSwgXFx1MDAyNnNrLCBzay5yZWYpO1xcbm5ldC90aXBjL25vZGUuYy01MTMtXFx0fVxcbi0tXFxubmV0L3RpcGMvbm9kZS5jLTUxNS1cXHRcXHR0aXBjX21vbl9wZWVyX2Rvd24obmV0LCBub2RlLCBiZWFyZXJfaWQpO1xcbm5ldC90aXBjL25vZGUuYzo1MTY6XFx0XFx0dGlwY19uYW1ldGJsX3dpdGhkcmF3KG5ldCwgXFx1MDAyNnVhLCBcXHUwMDI2c2ssIHNrLnJlZik7XFxubmV0L3RpcGMvbm9kZS5jLTUxNy1cXHR9XFxuLS1cXG5uZXQvdGlwYy9ub2RlLmM9NzI4PXZvaWQgdGlwY19ub2RlX3N0b3Aoc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxubmV0L3RpcGMvbm9kZS5jLTczOC1cXG5uZXQvdGlwYy9ub2RlLmM6NzM5OnZvaWQgdGlwY19ub2RlX3dha2V1cChzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L3RpcGMvbm9kZS5jLTc0MC17XFxuLS1cXG5uZXQvdGlwYy9ub2RlLmg9Nzc9dm9pZCB0aXBjX25vZGVfc3RvcChzdHJ1Y3QgbmV0ICpuZXQpO1xcbm5ldC90aXBjL25vZGUuaDo3ODp2b2lkIHRpcGNfbm9kZV93YWtldXAoc3RydWN0IG5ldCAqbmV0KTtcXG5uZXQvdGlwYy9ub2RlLmgtNzktYm9vbCB0aXBjX25vZGVfZ2V0X2lkKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGFkZHIsIHU4ICppZCk7XFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYz0yOTA3PXN0YXRpYyBpbnQgdGlwY19za19wdWJsaXNoKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgc3RydWN0IHRpcGNfdWFkZHIgKnVhKVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjkyMS1cXHRza2FkZHIubm9kZSA9IHRpcGNfb3duX2FkZHIobmV0KTtcXG5uZXQvdGlwYy9zb2NrZXQuYzoyOTIyOlxcdHAgPSB0aXBjX25hbWV0YmxfcHVibGlzaChuZXQsIHVhLCBcXHUwMDI2c2thZGRyLCBrZXkpO1xcbm5ldC90aXBjL3NvY2tldC5jLTI5MjMtXFx0aWYgKHVubGlrZWx5KCFwKSlcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTI5MzI9c3RhdGljIGludCB0aXBjX3NrX3dpdGhkcmF3KHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgc3RydWN0IHRpcGNfdWFkZHIgKnVhKVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjk0Mi1cXHRcXHRcXHRcXHQgICBwLVxcdTAwM2Vzci50eXBlLCBwLVxcdTAwM2Vzci5sb3dlciwgcC1cXHUwMDNlc3IudXBwZXIpO1xcbm5ldC90aXBjL3NvY2tldC5jOjI5NDM6XFx0XFx0XFx0dGlwY19uYW1ldGJsX3dpdGhkcmF3KG5ldCwgXFx1MDAyNl91YSwgXFx1MDAyNnAtXFx1MDAzZXNrLCBwLVxcdTAwM2VrZXkpO1xcbm5ldC90aXBjL3NvY2tldC5jLTI5NDQtXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yOTU0LVxcdFxcdFxcdGJyZWFrO1xcbm5ldC90aXBjL3NvY2tldC5jOjI5NTU6XFx0XFx0dGlwY19uYW1ldGJsX3dpdGhkcmF3KG5ldCwgdWEsIFxcdTAwMjZwLVxcdTAwM2VzaywgcC1cXHUwMDNla2V5KTtcXG5uZXQvdGlwYy9zb2NrZXQuYy0yOTU2LVxcdFxcdHJjID0gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTk6Mjk6NTYuOTg1MDc2NDNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTg0MjM1MzkzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBBc3Nlc3NtZW50OiBUSVBDIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRoZSBhc3NvY2lhdGVkIHN5bWJvbHMuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgd29ydGggcHVyc3Vpbmcgd2l0aCBmdXp6aW5nLiBUaGUga2V5IGZ1bmN0aW9ucyB0byB0YXJnZXQgYXJlOiBgdGlwY19uYW1lZF9ub2RlX3VwYCwgYHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlYCwgYHRpcGNfbmFtZXRibF9wdWJsaXNoYCwgYHRpcGNfbmFtZXRibF93aXRoZHJhd2AsIGFuZCBgdGlwY19ub2RlX3dha2V1cGAuIFRoZXkncmUgYWxsIGV4cG9ydGVkLCBzbyB0aGF0IG1ha2VzIHRoaW5ncyBzdHJhaWdodGZvcndhcmQgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuXG5cbkkgbmVlZGVkIHRvIGNvbmZpcm0gdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24gYW5kIGluaXRpYWxseSBJIHRob3VnaHQgaXQgd2FzIGp1c3QgYFRJUENgLCBidXQgSSB3YW50ZWQgdG8gbWFrZSBzdXJlIHRoZXJlIHdlcmVuJ3QgYW55IG90aGVyIGRlcGVuZGVuY2llcyB0aGF0IEkgd2FzIG1pc3NpbmcuIEl0IGxvb2tzIGxpa2UgYENPTkZJR19USVBDYCBpcyB0aGUgcHJpbWFyeSBvbmUsIGFuZCB0aGFua2Z1bGx5IGl0IGNhbiBiZSBidWlsdC1pbiwgd2hpY2ggaXMgd2hhdCB3ZSB1c3VhbGx5IHdhbnQgZm9yIHN5emthbGxlci5cblxuSSBkaWQgYSBzZWNvbmQgcGFzcyB0aHJvdWdoIHRoZSBwYXRjaCB0byBzZWUgaWYgSSBoYWQgbWlzc2VkIGFueXRoaW5nLiBUaGVyZSdzIGEgYCNpZmRlZiBDT05GSUdfVElQQ19DUllQVE9gIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBidXQgdGhlIHBhdGNoIGl0c2VsZiBkb2Vzbid0IHNlZW0gdG8gZGVwZW5kIG9uIGl0LiBTbywgeWVhaCwgaXQgbG9va3MgbGlrZSBgVElQQ2AgYWxvbmUgaXMgc3VmZmljaWVudCBmb3IgdGhpcyBvbmUuXG5cbkFscmlnaHQsIHdpdGggdGhhdCBjb25maXJtZWQsIEkgdGhpbmsgd2UncmUgZ29vZCB0byBjYWxsIGBzZXQtcmVzdWx0c2AgYW5kIG1vdmUgZm9yd2FyZCB3aXRoIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMzE4LCJPdXRwdXRUb2tlbnMiOjE0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxOTozMDoxMi44Mjc0MzI2OTRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjQ1NDIwNTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRJUENcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0aXBjX25hbWVkX25vZGVfdXBcIixcbiAgICBcInRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlXCIsXG4gICAgXCJ0aXBjX25hbWV0YmxfcHVibGlzaFwiLFxuICAgIFwidGlwY19uYW1ldGJsX3dpdGhkcmF3XCIsXG4gICAgXCJ0aXBjX25vZGVfd2FrZXVwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHdvcmtxdWV1ZSBmb3IgYnVsayBkaXN0cmlidXRpb24gb2YgY2x1c3RlciBzY29wZSBwdWJsaWNhdGlvbnMgaW4gVElQQywgbW9kaWZ5aW5nIGNvcmUgcHJvdG9jb2wgbG9naWMgc3VjaCBhcyBub2RlIHN0YXRlIG1hbmFnZW1lbnQgYW5kIG5hbWUgdGFibGUgcHVibGlzaGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBUSVBDIHN1YnN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUSVBDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGlwY19uYW1lZF9ub2RlX3VwXCIsXG4gICAgXCJ0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZVwiLFxuICAgIFwidGlwY19uYW1ldGJsX3B1Ymxpc2hcIixcbiAgICBcInRpcGNfbmFtZXRibF93aXRoZHJhd1wiLFxuICAgIFwidGlwY19ub2RlX3dha2V1cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSB3b3JrcXVldWUgZm9yIGJ1bGsgZGlzdHJpYnV0aW9uIG9mIGNsdXN0ZXIgc2NvcGUgcHVibGljYXRpb25zIGluIFRJUEMsIG1vZGlmeWluZyBjb3JlIHByb3RvY29sIGxvZ2ljIHN1Y2ggYXMgbm9kZSBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBuYW1lIHRhYmxlIHB1Ymxpc2hpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgVElQQyBzdWJzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowpr7cp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-31 19:11:31 +0000 UTC FinishedAt: 2026-07-31 19:30:14 +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": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TIPC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TIPC" ], "series_id": "28753c25-e0ae-420b-a38c-7a0f776a947b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tipc_named_node_up", "tipc_named_dist_cluster_scope", "tipc_nametbl_publish", "tipc_nametbl_withdraw", "tipc_node_wakeup" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMxIDE5OjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0aXBjX25hbWVkX25vZGVfdXAmIzM0OywKICAgICYjMzQ7dGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGUmIzM0OywKICAgICYjMzQ7dGlwY19uYW1ldGJsX3B1Ymxpc2gmIzM0OywKICAgICYjMzQ7dGlwY19uYW1ldGJsX3dpdGhkcmF3JiMzNDssCiAgICAmIzM0O3RpcGNfbm9kZV93YWtldXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHdvcmtxdWV1ZSBmb3IgYnVsayBkaXN0cmlidXRpb24gb2YgY2x1c3RlciBzY29wZSBwdWJsaWNhdGlvbnMgaW4gVElQQywgbW9kaWZ5aW5nIGNvcmUgcHJvdG9jb2wgbG9naWMgc3VjaCBhcyBub2RlIHN0YXRlIG1hbmFnZW1lbnQgYW5kIG5hbWUgdGFibGUgcHVibGlzaGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBUSVBDIHN1YnN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxOToyOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDllMWZhZjcyMTE2ODc0YjM2MWJjZGRjNjg0NDhkYjA2MTI3OWNjMzBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAxOToyOTozMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvdGlwYy9jb3JlLmMgYi9uZXQvdGlwYy9jb3JlLmNcbmluZGV4IDMxNTk3NWMzYmU4MTguLjFlMWZlNzhjYzRlZTQgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC90aXBjL2NvcmUuY1xuQEAgLTYxLDYgJiM0Mzs2MSw4IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCB0aXBjX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcbiBcdHRuLVx1MDAzZXRyaWFsX2FkZHIgPSAwO1xuIFx0dG4tXHUwMDNlYWRkcl90cmlhbF9lbmQgPSAwO1xuIFx0dG4tXHUwMDNlY2FwYWJpbGl0aWVzID0gVElQQ19OT0RFX0NBUEFCSUxJVElFUztcbiYjNDM7XHRhdG9taWNfc2V0KFx1MDAyNnRuLVx1MDAzZW5vZGVfd3FfY291bnQsIDApO1xuJiM0MztcdGF0b21pY19zZXQoXHUwMDI2dG4tXHUwMDNlZmluYWxpemVkLCAwKTtcbiBcdElOSVRfV09SSyhcdTAwMjZ0bi1cdTAwM2V3b3JrLCB0aXBjX25ldF9maW5hbGl6ZV93b3JrKTtcbiBcdG1lbXNldCh0bi1cdTAwM2Vub2RlX2lkLCAwLCBzaXplb2YodG4tXHUwMDNlbm9kZV9pZCkpO1xuIFx0bWVtc2V0KHRuLVx1MDAzZW5vZGVfaWRfc3RyaW5nLCAwLCBzaXplb2YodG4tXHUwMDNlbm9kZV9pZF9zdHJpbmcpKTtcbkBAIC0xMTksNiAmIzQzOzEyMSw3IEBAIHN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgdGlwY19leGl0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXG4gI2lmZGVmIENPTkZJR19USVBDX0NSWVBUT1xuIFx0dGlwY19jcnlwdG9fc3RvcChcdTAwMjZ0aXBjX25ldChuZXQpLVx1MDAzZWNyeXB0b190eCk7XG4gI2VuZGlmXG4mIzQzO1x0d2FpdF92YXJfZXZlbnQoXHUwMDI2dG4tXHUwMDNlbm9kZV93cV9jb3VudCwgIWF0b21pY19yZWFkKFx1MDAyNnRuLVx1MDAzZW5vZGVfd3FfY291bnQpKTtcbiBcdHdhaXRfdmFyX2V2ZW50KFx1MDAyNnRuLVx1MDAzZXdxX2NvdW50LCBhdG9taWNfcmVhZChcdTAwMjZ0bi1cdTAwM2V3cV9jb3VudCkgPT0gMCk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL25ldC90aXBjL2NvcmUuaCBiL25ldC90aXBjL2NvcmUuaFxuaW5kZXggOWNlNWY5ZmY2Y2MwMy4uYmUzMzVjZTgzMzg5YSAxMDA2NDRcbi0tLSBhL25ldC90aXBjL2NvcmUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvY29yZS5oXG5AQCAtMTQ1LDYgJiM0MzsxNDUsMTAgQEAgc3RydWN0IHRpcGNfbmV0IHtcbiBcdHN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrO1xuIFx0LyogVGhlIG51bWJlcnMgb2Ygd29yayBxdWV1ZXMgaW4gc2NoZWR1bGUgKi9cbiBcdGF0b21pY190IHdxX2NvdW50O1xuJiM0MztcdC8qIFRoZSBudW1iZXJzIG9mIHdvcmtzIG9mIGNyZWF0ZWQgbm9kZXMgaW4gc2NoZWR1bGUgKi9cbiYjNDM7XHRhdG9taWNfdCBub2RlX3dxX2NvdW50O1xuJiM0MztcdC8qIGZsYWcgdG8gd2FrZSB1cCBzY2hlZHVsZWQgd29ya3Mgb2YgY3JlYXRlZCBub2RlcyAqL1xuJiM0MztcdGF0b21pY190IGZpbmFsaXplZDtcbiB9O1xuIFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IHRpcGNfbmV0ICp0aXBjX25ldChzdHJ1Y3QgbmV0ICpuZXQpXG5kaWZmIC0tZ2l0IGEvbmV0L3RpcGMvbmFtZV9kaXN0ci5jIGIvbmV0L3RpcGMvbmFtZV9kaXN0ci5jXG5pbmRleCBiYTRmNDkwNmUxM2I3Li5jOGUyODQ5NzM1NmVmIDEwMDY0NFxuLS0tIGEvbmV0L3RpcGMvbmFtZV9kaXN0ci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvdGlwYy9uYW1lX2Rpc3RyLmNcbkBAIC0xNDcsOCAmIzQzOzE0Nyw4IEBAIHN0cnVjdCBza19idWZmICp0aXBjX25hbWVkX3dpdGhkcmF3KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHB1YmxpY2F0aW9uICpwKVxuICAqIEBwbHM6IGxpbmtlZCBsaXN0IG9mIHB1YmxpY2F0aW9uIGl0ZW1zIHRvIGJlIHBhY2tlZCBpbnRvIGJ1ZmZlciBjaGFpblxuICAqIEBzZXFubzogc2VxdWVuY2UgbnVtYmVyIGZvciB0aGlzIG1lc3NhZ2VcbiAgKi9cbi1zdGF0aWMgdm9pZCBuYW1lZF9kaXN0cmlidXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCxcbi1cdFx0XHQgICAgIHUzMiBkbm9kZSwgc3RydWN0IGxpc3RfaGVhZCAqcGxzLCB1MTYgc2Vxbm8pXG4mIzQzO3N0YXRpYyBpbnQgbmFtZWRfZGlzdHJpYnV0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsXG4mIzQzO1x0XHRcdCAgICB1MzIgZG5vZGUsIHN0cnVjdCBsaXN0X2hlYWQgKnBscywgdTE2IHNlcW5vKVxuIHtcbiBcdHN0cnVjdCBwdWJsaWNhdGlvbiAqcHVibDtcbiBcdHN0cnVjdCBza19idWZmICpza2IgPSBOVUxMO1xuQEAgLTE2NCw4ICYjNDM7MTY0LDkgQEAgc3RhdGljIHZvaWQgbmFtZWRfZGlzdHJpYnV0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsXG4gXHRcdFx0c2tiID0gbmFtZWRfcHJlcGFyZV9idWYobmV0LCBQVUJMSUNBVElPTiwgbXNnX3JlbSxcbiBcdFx0XHRcdFx0XHRkbm9kZSk7XG4gXHRcdFx0aWYgKCFza2IpIHtcbiYjNDM7XHRcdFx0XHRfX3NrYl9xdWV1ZV9wdXJnZShsaXN0KTtcbiBcdFx0XHRcdHByX3dhcm4oXCYjMzQ7QnVsayBwdWJsaWNhdGlvbiBmYWlsdXJlXFxuXCYjMzQ7KTtcbi1cdFx0XHRcdHJldHVybjtcbiYjNDM7XHRcdFx0XHRyZXR1cm4gMTtcbiBcdFx0XHR9XG4gXHRcdFx0aGRyID0gYnVmX21zZyhza2IpO1xuIFx0XHRcdG1zZ19zZXRfYmNfYWNrX2ludmFsaWQoaGRyLCB0cnVlKTtcbkBAIC0xOTUsMTUgJiM0MzsxOTYsMTYgQEAgc3RhdGljIHZvaWQgbmFtZWRfZGlzdHJpYnV0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsXG4gXHRoZHIgPSBidWZfbXNnKHNrYl9wZWVrX3RhaWwobGlzdCkpO1xuIFx0bXNnX3NldF9sYXN0X2J1bGsoaGRyKTtcbiBcdG1zZ19zZXRfbmFtZWRfc2Vxbm8oaGRyLCBzZXFubyk7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiBcbiAvKipcbi0gKiB0aXBjX25hbWVkX25vZGVfdXAgLSB0ZWxsIHNwZWNpZmllZCBub2RlIGFib3V0IGFsbCBwdWJsaWNhdGlvbnMgYnkgdGhpcyBub2RlXG4mIzQzOyAqIHRpcGNfbmFtZWRfZGlzdHJpYnV0ZSAtIGRpc3RyaWJ1dGUgYWxsIHB1YmxpY2F0aW9ucyB0byBzcGVjaWZpZWQgbm9kZVxuICAqIEBuZXQ6IHRoZSBhc3NvY2lhdGVkIG5ldHdvcmsgbmFtZXNwYWNlXG4gICogQGRub2RlOiBkZXN0aW5hdGlvbiBub2RlXG4tICogQGNhcGFiaWxpdGllczogcGVlciBub2RlJiMzOTtzIGNhcGFiaWxpdGllc1xuICAqL1xuLXZvaWQgdGlwY19uYW1lZF9ub2RlX3VwKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlLCB1MTYgY2FwYWJpbGl0aWVzKVxuJiM0MztzdGF0aWMgaW50IHRpcGNfbmFtZWRfZGlzdHJpYnV0ZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSlcbiB7XG4gXHRzdHJ1Y3QgbmFtZV90YWJsZSAqbnQgPSB0aXBjX25hbWVfdGFibGUobmV0KTtcbiBcdHN0cnVjdCB0aXBjX25ldCAqdG4gPSB0aXBjX25ldChuZXQpO1xuQEAgLTIxMiwxNSAmIzQzOzIxNCw4NiBAQCB2b2lkIHRpcGNfbmFtZWRfbm9kZV91cChzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSwgdTE2IGNhcGFiaWxpdGllcylcbiBcbiBcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZoZWFkKTtcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZ0bi1cdTAwM2VuYW1ldGJsX2xvY2spO1xuLVx0aWYgKCEoY2FwYWJpbGl0aWVzIFx1MDAyNiBUSVBDX05BTUVEX0JDQVNUKSlcbi1cdFx0bnQtXHUwMDNlcmNfZGVzdHMmIzQzOyYjNDM7O1xuIFx0c2Vxbm8gPSBudC1cdTAwM2VzbmRfbnh0O1xuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dG4tXHUwMDNlbmFtZXRibF9sb2NrKTtcbiBcbiBcdHJlYWRfbG9ja19iaChcdTAwMjZudC1cdTAwM2VjbHVzdGVyX3Njb3BlX2xvY2spO1xuLVx0bmFtZWRfZGlzdHJpYnV0ZShuZXQsIFx1MDAyNmhlYWQsIGRub2RlLCBcdTAwMjZudC1cdTAwM2VjbHVzdGVyX3Njb3BlLCBzZXFubyk7XG4mIzQzO1x0aWYgKG5hbWVkX2Rpc3RyaWJ1dGUobmV0LCBcdTAwMjZoZWFkLCBkbm9kZSwgXHUwMDI2bnQtXHUwMDNlY2x1c3Rlcl9zY29wZSwgc2Vxbm8pKSB7XG4mIzQzO1x0XHRyZWFkX3VubG9ja19iaChcdTAwMjZudC1cdTAwM2VjbHVzdGVyX3Njb3BlX2xvY2spO1xuJiM0MztcdFx0cmV0dXJuIC1FTk9CVUZTO1xuJiM0MztcdH1cbiBcdHRpcGNfbm9kZV94bWl0KG5ldCwgXHUwMDI2aGVhZCwgZG5vZGUsIDApO1xuIFx0cmVhZF91bmxvY2tfYmgoXHUwMDI2bnQtXHUwMDNlY2x1c3Rlcl9zY29wZV9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiB0aXBjX25hbWVkX25vZGVfdXAgLSB0ZWxsIHNwZWNpZmllZCBub2RlIGFib3V0IGFsbCBwdWJsaWNhdGlvbnMgYnkgdGhpcyBub2RlXG4mIzQzOyAqIEBuZXQ6IHRoZSBhc3NvY2lhdGVkIG5ldHdvcmsgbmFtZXNwYWNlXG4mIzQzOyAqIEBkbm9kZTogZGVzdGluYXRpb24gbm9kZVxuJiM0MzsgKiBAY2FwYWJpbGl0aWVzOiBwZWVyIG5vZGUmIzM5O3MgY2FwYWJpbGl0aWVzXG4mIzQzOyAqL1xuJiM0MztpbnQgdGlwY19uYW1lZF9ub2RlX3VwKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlLCB1MTYgY2FwYWJpbGl0aWVzKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG5hbWVfdGFibGUgKm50ID0gdGlwY19uYW1lX3RhYmxlKG5ldCk7XG4mIzQzO1x0c3RydWN0IHRpcGNfbmV0ICp0biA9IHRpcGNfbmV0KG5ldCk7XG4mIzQzO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZ0bi1cdTAwM2VuYW1ldGJsX2xvY2spO1xuJiM0MztcdGlmICghKGNhcGFiaWxpdGllcyBcdTAwMjYgVElQQ19OQU1FRF9CQ0FTVCkpXG4mIzQzO1x0XHRudC1cdTAwM2VyY19kZXN0cyYjNDM7JiM0Mzs7XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dG4tXHUwMDNlbmFtZXRibF9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmVhZF9sb2NrX2JoKFx1MDAyNm50LVx1MDAzZWNsdXN0ZXJfc2NvcGVfbG9jayk7XG4mIzQzO1x0LyogMS4gdGlwY19uZXRfZmluYWxpemVfd29yaygpIGlzIG5vdCBzY2hlZHVsZWQgYmVjYXVzZSBvZiBuYW1lc3BhY2VcbiYjNDM7XHQgKiAgICB0ZWFyZG93bi5cbiYjNDM7XHQgKiAyLiBPciB0aXBjX25ldF9maW5hbGl6ZSgpIC0tLVx1MDAzZSB0aXBjX25hbWV0YmxfcHVibGlzaCgpIGhhcyBmYWlsZWRcbiYjNDM7XHQgKiAgICB0byBpbnNlcnQgbm9kZSBzZWxmIGFkZHJlc3MgcHVibGljYXRpb24gaW50byBudC1cdTAwM2VjbHVzdGVyX3Njb3BlXG4mIzQzO1x0ICogICAgZHVlIHRvIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUuXG4mIzQzO1x0ICogMy4gT3IgdGlwY19uZXRfZmluYWxpemUoKSAtLS1cdTAwM2UgdGlwY19uYW1ldGJsX3B1Ymxpc2goKSBoYXMgbm90XG4mIzQzO1x0ICogICAgZXhlY3V0ZWQgeWV0LlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICh1bmxpa2VseShsaXN0X2VtcHR5KFx1MDAyNm50LVx1MDAzZWNsdXN0ZXJfc2NvcGUpKSkge1xuJiM0MztcdFx0cmVhZF91bmxvY2tfYmgoXHUwMDI2bnQtXHUwMDNlY2x1c3Rlcl9zY29wZV9sb2NrKTtcbiYjNDM7XHRcdHJldHVybiAxO1xuJiM0MztcdH1cbiYjNDM7XHRyZWFkX3VubG9ja19iaChcdTAwMjZudC1cdTAwM2VjbHVzdGVyX3Njb3BlX2xvY2spO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gdGlwY19uYW1lZF9kaXN0cmlidXRlKG5ldCwgZG5vZGUpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogdGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGUgLSBkaXN0cmlidXRlIGFsbCBwdWJsaWNhdGlvbnMgdG8gc3BlY2lmaWVkIG5vZGVcbiYjNDM7ICogQG5ldDogdGhlIGFzc29jaWF0ZWQgbmV0d29yayBuYW1lc3BhY2VcbiYjNDM7ICogQGRub2RlOiBkZXN0aW5hdGlvbiBub2RlXG4mIzQzOyAqL1xuJiM0MztpbnQgdGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbmFtZV90YWJsZSAqbnQgPSB0aXBjX25hbWVfdGFibGUobmV0KTtcbiYjNDM7XHRib29sIHJlaW5zZXJ0ID0gZmFsc2U7XG4mIzQzO1xuJiM0MztcdHJlYWRfbG9ja19iaChcdTAwMjZudC1cdTAwM2VjbHVzdGVyX3Njb3BlX2xvY2spO1xuJiM0MztcdGlmICh1bmxpa2VseShsaXN0X2VtcHR5KFx1MDAyNm50LVx1MDAzZWNsdXN0ZXJfc2NvcGUpKSlcbiYjNDM7XHRcdHJlaW5zZXJ0ID0gdHJ1ZTtcbiYjNDM7XHRyZWFkX3VubG9ja19iaChcdTAwMjZudC1cdTAwM2VjbHVzdGVyX3Njb3BlX2xvY2spO1xuJiM0MztcdC8qIHRpcGNfbmV0X2ZpbmFsaXplKCkgLS0tXHUwMDNlIHRpcGNfbmFtZXRibF9wdWJsaXNoKCkgaGFzIGZhaWxlZCB0byBpbnNlcnRcbiYjNDM7XHQgKiBub2RlIHNlbGYgYWRkcmVzcyBwdWJsaWNhdGlvbiBpbnRvIG50LVx1MDAzZWNsdXN0ZXJfc2NvcGUgZHVlIHRvIG1lbW9yeVxuJiM0MztcdCAqIGFsbG9jYXRpb24gZmFpbHVyZS4gU28sIHJlaW5zZXJ0IHRoaXMgcHVibGljYXRpb24uXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHJlaW5zZXJ0KSB7XG4mIzQzO1x0XHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobmV0KTtcbiYjNDM7XHRcdHN0cnVjdCB0aXBjX3NvY2tldF9hZGRyIHNrO1xuJiM0MztcdFx0c3RydWN0IHRpcGNfdWFkZHIgdWE7XG4mIzQzO1xuJiM0MztcdFx0c2sucmVmID0gMDtcbiYjNDM7XHRcdHNrLm5vZGUgPSB0bi1cdTAwM2Vub2RlX2FkZHI7XG4mIzQzO1x0XHR0aXBjX3VhZGRyKFx1MDAyNnVhLCBUSVBDX1NFUlZJQ0VfUkFOR0UsIFRJUENfQ0xVU1RFUl9TQ09QRSxcbiYjNDM7XHRcdFx0ICAgVElQQ19OT0RFX1NUQVRFLCB0bi1cdTAwM2Vub2RlX2FkZHIsIHRuLVx1MDAzZW5vZGVfYWRkcik7XG4mIzQzO1x0XHRpZiAoIXRpcGNfbmFtZXRibF9wdWJsaXNoKG5ldCwgXHUwMDI2dWEsIFx1MDAyNnNrLCB0bi1cdTAwM2Vub2RlX2FkZHIpKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVOT0JVRlM7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gdGlwY19uYW1lZF9kaXN0cmlidXRlKG5ldCwgZG5vZGUpO1xuIH1cbiBcbiAvKipcbmRpZmYgLS1naXQgYS9uZXQvdGlwYy9uYW1lX2Rpc3RyLmggYi9uZXQvdGlwYy9uYW1lX2Rpc3RyLmhcbmluZGV4IGM2NzdmNmYwODJkZmIuLmNhZGY0ZThjM2U2NmMgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9uYW1lX2Rpc3RyLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC90aXBjL25hbWVfZGlzdHIuaFxuQEAgLTY5LDcgJiM0Mzs2OSw4IEBAIHN0cnVjdCBkaXN0cl9pdGVtIHtcbiBcbiBzdHJ1Y3Qgc2tfYnVmZiAqdGlwY19uYW1lZF9wdWJsaXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHB1YmxpY2F0aW9uICpwdWJsKTtcbiBzdHJ1Y3Qgc2tfYnVmZiAqdGlwY19uYW1lZF93aXRoZHJhdyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBwdWJsaWNhdGlvbiAqcHVibCk7XG4tdm9pZCB0aXBjX25hbWVkX25vZGVfdXAoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUsIHUxNiBjYXBhYmlsaXRpZXMpO1xuJiM0MztpbnQgdGlwY19uYW1lZF9ub2RlX3VwKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlLCB1MTYgY2FwYWJpbGl0aWVzKTtcbiYjNDM7aW50IHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlKTtcbiB2b2lkIHRpcGNfbmFtZWRfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqbmFtZWRxLFxuIFx0XHQgICAgdTE2ICpyY3Zfbnh0LCBib29sICpvcGVuKTtcbiB2b2lkIHRpcGNfbmFtZWRfcmVpbml0KHN0cnVjdCBuZXQgKm5ldCk7XG5kaWZmIC0tZ2l0IGEvbmV0L3RpcGMvbmFtZV90YWJsZS5jIGIvbmV0L3RpcGMvbmFtZV90YWJsZS5jXG5pbmRleCAyNTNjNzJkMTM2NmViLi42ZmRhMzZhYjE3NjY5IDEwMDY0NFxuLS0tIGEvbmV0L3RpcGMvbmFtZV90YWJsZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvdGlwYy9uYW1lX3RhYmxlLmNcbkBAIC03NjMsMjEgJiM0Mzs3NjMsNDAgQEAgc3RydWN0IHB1YmxpY2F0aW9uICp0aXBjX25hbWV0YmxfcHVibGlzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX3VhZGRyICp1YSxcbiBcdFx0XHRcdFx0IHN0cnVjdCB0aXBjX3NvY2tldF9hZGRyICpzaywgdTMyIGtleSlcbiB7XG4gXHRzdHJ1Y3QgbmFtZV90YWJsZSAqbnQgPSB0aXBjX25hbWVfdGFibGUobmV0KTtcbiYjNDM7XHR1MzIgbWF4X3VzZXJfcHViID0gVElQQ19NQVhfUFVCTCAtIDE7XG4gXHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobmV0KTtcbiBcdHN0cnVjdCBwdWJsaWNhdGlvbiAqcCA9IE5VTEw7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gTlVMTDtcbiYjNDM7XHRib29sIHByb3RvY29sX3R5cGUgPSBmYWxzZTtcbiBcdHUzMiByY19kZXN0cztcbiBcbiYjNDM7XHRpZiAodWEtXHUwMDNlc3IudHlwZSA9PSBUSVBDX05PREVfU1RBVEUgfHwgdWEtXHUwMDNlc3IudHlwZSA9PSBUSVBDX0xJTktfU1RBVEUgfHxcbiYjNDM7XHQgICAgdWEtXHUwMDNlc3IudHlwZSA9PSBUSVBDX1RPUF9TUlYpXG4mIzQzO1x0XHRwcm90b2NvbF90eXBlID0gdHJ1ZTtcbiYjNDM7XG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2dG4tXHUwMDNlbmFtZXRibF9sb2NrKTtcbiYjNDM7XHRpZiAocHJvdG9jb2xfdHlwZSlcbiYjNDM7XHRcdGdvdG8gaW5zZXJ0O1xuIFxuLVx0aWYgKG50LVx1MDAzZWxvY2FsX3B1YmxfY291bnQgXHUwMDNlPSBUSVBDX01BWF9QVUJMKSB7XG4tXHRcdHByX3dhcm4oXCYjMzQ7QmluZCBmYWlsZWQsIG1heCBsaW1pdCAldSByZWFjaGVkXFxuXCYjMzQ7LCBUSVBDX01BWF9QVUJMKTtcbiYjNDM7XHQvKiBSZXNlcnZlIG9uZSBlbnRyeSBmb3Igbm9kZSBzdGF0ZSBzZXJ2aWNlIHR5cGUgYmVjYXVzZSBpdCBoYXMgY2x1c3RlclxuJiM0MztcdCAqIHNjb3BlIGFuZCBpdCBpcyBkaXN0cmlidXRlZCBpbiBidWxrLiBTbywgdGhlIG1heGltdW0gbnVtYmVyIG9mIHVzZXImIzM5O3NcbiYjNDM7XHQgKiBwdWJsaWNhdGlvbnMgaXMgKFRJUENfTUFYX1BVQkwgLSAxKS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAobnQtXHUwMDNlbG9jYWxfcHVibF9jb3VudCBcdTAwM2U9IG1heF91c2VyX3B1Yikge1xuJiM0MztcdFx0cHJfd2FybihcJiMzNDtCaW5kIGZhaWxlZCwgbWF4IGxpbWl0ICV1IHJlYWNoZWRcXG5cJiMzNDssIG1heF91c2VyX3B1Yik7XG4gXHRcdGdvdG8gZXhpdDtcbiBcdH1cbiBcbiYjNDM7aW5zZXJ0OlxuIFx0cCA9IHRpcGNfbmFtZXRibF9pbnNlcnRfcHVibChuZXQsIHVhLCBzaywga2V5KTtcbiBcdGlmIChwKSB7XG4tXHRcdG50LVx1MDAzZWxvY2FsX3B1YmxfY291bnQmIzQzOyYjNDM7O1xuJiM0MztcdFx0LyogTm90IGNvdW50IG5vZGUgc3RhdGUsIGxpbmsgc3RhdGUgYW5kIHRvcG9sb2d5IHNlcnZlciB0eXBlc1xuJiM0MztcdFx0ICogc28gdGhhdCBtYXhpbXVtIG50LVx1MDAzZWxvY2FsX3B1YmxfY291bnQgZG9lcyBub3QgcHJldmVudFxuJiM0MztcdFx0ICogcHJvdG9jb2wgc2VydmljZSB0eXBlcyBmcm9tIGJlaW5nIGluc2VydGVkIGludG8gdGhlIG5hbWVcbiYjNDM7XHRcdCAqIHRhYmxlLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRpZiAoIXByb3RvY29sX3R5cGUpXG4mIzQzO1x0XHRcdG50LVx1MDAzZWxvY2FsX3B1YmxfY291bnQmIzQzOyYjNDM7O1xuIFx0XHRza2IgPSB0aXBjX25hbWVkX3B1Ymxpc2gobmV0LCBwKTtcbiBcdH1cbiBcdHJjX2Rlc3RzID0gbnQtXHUwMDNlcmNfZGVzdHM7XG5AQCAtODEwLDcgJiM0Mzs4MjksMTAgQEAgdm9pZCB0aXBjX25hbWV0Ymxfd2l0aGRyYXcoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGlwY191YWRkciAqdWEsXG4gXG4gXHRwID0gdGlwY19uYW1ldGJsX3JlbW92ZV9wdWJsKG5ldCwgdWEsIHNrLCBrZXkpO1xuIFx0aWYgKHApIHtcbi1cdFx0bnQtXHUwMDNlbG9jYWxfcHVibF9jb3VudC0tO1xuJiM0MztcdFx0aWYgKHAtXHUwMDNlc3IudHlwZSAhPSBUSVBDX05PREVfU1RBVEUgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgcC1cdTAwM2Vzci50eXBlICE9IFRJUENfTElOS19TVEFURSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICBwLVx1MDAzZXNyLnR5cGUgIT0gVElQQ19UT1BfU1JWKVxuJiM0MztcdFx0XHRudC1cdTAwM2Vsb2NhbF9wdWJsX2NvdW50LS07XG4gXHRcdHNrYiA9IHRpcGNfbmFtZWRfd2l0aGRyYXcobmV0LCBwKTtcbiBcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZwLVx1MDAzZWJpbmRpbmdfc29jayk7XG4gXHRcdGtmcmVlX3JjdShwLCByY3UpO1xuZGlmZiAtLWdpdCBhL25ldC90aXBjL25ldC5jIGIvbmV0L3RpcGMvbmV0LmNcbmluZGV4IDdlNjVkMGIwYzRhOGQuLjc1YWM0ZTNjZDAxYTggMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9uZXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvbmV0LmNcbkBAIC0xMzksNiAmIzQzOzEzOSwxMSBAQCBzdGF0aWMgdm9pZCB0aXBjX25ldF9maW5hbGl6ZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBhZGRyKVxuIFx0dGlwY19za19yZWluaXQobmV0KTtcbiBcdHRpcGNfbW9uX3JlaW5pdF9zZWxmKG5ldCk7XG4gXHR0aXBjX25hbWV0YmxfcHVibGlzaChuZXQsIFx1MDAyNnVhLCBcdTAwMjZzaywgYWRkcik7XG4mIzQzO1x0YXRvbWljX3NldChcdTAwMjZ0bi1cdTAwM2VmaW5hbGl6ZWQsIDEpO1xuJiM0MztcdC8qIFdha2UgdXAgbm9kZXMgd2FpdGluZyBmb3IgZGlzdHJpYnV0aW5nIGJ1bGsgb2YgcHVibGljYXRpb25zXG4mIzQzO1x0ICogaWYgYXBwbGljYWJsZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHR0aXBjX25vZGVfd2FrZXVwKG5ldCk7XG4gfVxuIFxuIHZvaWQgdGlwY19uZXRfZmluYWxpemVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kaWZmIC0tZ2l0IGEvbmV0L3RpcGMvbm9kZS5jIGIvbmV0L3RpcGMvbm9kZS5jXG5pbmRleCA4ZTRlZjI2MzBhZTRmLi4zMzQ4MTJiZGFiNzY1IDEwMDY0NFxuLS0tIGEvbmV0L3RpcGMvbm9kZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvdGlwYy9ub2RlLmNcbkBAIC0xMTEsNiAmIzQzOzExMSw5IEBAIHN0cnVjdCB0aXBjX2JjbGlua19lbnRyeSB7XG4gICogQHBlZXJfbmV0OiBwZWVyJiMzOTtzIG5ldCBuYW1lc3BhY2VcbiAgKiBAcGVlcl9oYXNoX21peDogaGFzaCBmb3IgdGhpcyBwZWVyIChGSVhNRSlcbiAgKiBAY3J5cHRvX3J4OiBSWCBjcnlwdG8gaGFuZGxlclxuJiM0MzsgKiBAd29yazogd29yayBpdGVtIGZvciBidWxrIGRpc3RyaWJ1dGlvbiBvZiBjbHVzdGVyIHNjb3BlIHB1YmxpY2F0aW9uc1xuJiM0MzsgKiBAd29ya19zY2hlZHVsZWQ6IGZsYWcgdG8gaW5kaWNhdGUgdGhlIHdvcmsgaGFzIGJlZW4gc2NoZWR1bGVkXG4mIzQzOyAqIEBmaW5hbGl6ZWQ6IGZsYWcgdG8gd2FrZSB1cCBzY2hlZHVsZWQgd29ya1xuICAqL1xuIHN0cnVjdCB0aXBjX25vZGUge1xuIFx0dTMyIGFkZHI7XG5AQCAtMTQ1LDYgJiM0MzsxNDgsOSBAQCBzdHJ1Y3QgdGlwY19ub2RlIHtcbiAjaWZkZWYgQ09ORklHX1RJUENfQ1JZUFRPXG4gXHRzdHJ1Y3QgdGlwY19jcnlwdG8gKmNyeXB0b19yeDtcbiAjZW5kaWZcbiYjNDM7XHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yaztcbiYjNDM7XHRhdG9taWNfdCB3b3JrX3NjaGVkdWxlZDtcbiYjNDM7XHRhdG9taWNfdCBmaW5hbGl6ZWQ7XG4gfTtcbiBcbiAvKiBOb2RlIEZTTSBzdGF0ZXMgYW5kIGV2ZW50czpcbkBAIC0zOTMsNiAmIzQzOzM5OSw1OSBAQCBzdGF0aWMgdm9pZCB0aXBjX25vZGVfd3JpdGVfdW5sb2NrX2Zhc3Qoc3RydWN0IHRpcGNfbm9kZSAqbilcbiBcdHdyaXRlX3VubG9ja19iaChcdTAwMjZuLVx1MDAzZWxvY2spO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgdGlwY19ub2RlX2Rvd24oc3RydWN0IHRpcGNfbm9kZSAqbilcbiYjNDM7e1xuJiM0MztcdGludCBiZWFyZXJfaWQ7XG4mIzQzO1xuJiM0MztcdGZvciAoYmVhcmVyX2lkID0gMDsgYmVhcmVyX2lkIFx1MDAzYyBNQVhfQkVBUkVSUzsgYmVhcmVyX2lkJiM0MzsmIzQzOylcbiYjNDM7XHRcdHRpcGNfbm9kZV9saW5rX2Rvd24obiwgYmVhcmVyX2lkLCBmYWxzZSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHRpcGNfbm9kZV9kaXN0X2J1bGsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHRpcGNfbm9kZSAqbm9kZSA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdGlwY19ub2RlLCB3b3JrKTtcbiYjNDM7XHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobm9kZS1cdTAwM2VuZXQpO1xuJiM0MztcbiYjNDM7XHR3YWl0X3Zhcl9ldmVudChcdTAwMjZub2RlLVx1MDAzZWZpbmFsaXplZCwgYXRvbWljX3JlYWQoXHUwMDI2bm9kZS1cdTAwM2VmaW5hbGl6ZWQpKTtcbiYjNDM7XG4mIzQzO1x0Lyogbm9kZSBpcyBkb3duICovXG4mIzQzO1x0aWYgKCFhdG9taWNfcmVhZChcdTAwMjZub2RlLVx1MDAzZXdvcmtfc2NoZWR1bGVkKSlcbiYjNDM7XHRcdGdvdG8gZXhpdDtcbiYjNDM7XG4mIzQzO1x0LyogU3RvcCB3YWtpbmcgdXAgd29yayBpbiB0aXBjX25vZGVfdGltZW91dCgpICovXG4mIzQzO1x0YXRvbWljX3NldChcdTAwMjZub2RlLVx1MDAzZXdvcmtfc2NoZWR1bGVkLCAwKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlKG5vZGUtXHUwMDNlbmV0LCBub2RlLVx1MDAzZWFkZHIpIFx1MDAzYyAwKVxuJiM0MztcdFx0dGlwY19ub2RlX2Rvd24obm9kZSk7XG4mIzQzO1xuJiM0MztleGl0OlxuJiM0MztcdGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KFx1MDAyNnRuLVx1MDAzZW5vZGVfd3FfY291bnQpKVxuJiM0MztcdFx0d2FrZV91cF92YXIoXHUwMDI2dG4tXHUwMDNlbm9kZV93cV9jb3VudCk7XG4mIzQzO1xuJiM0MztcdHRpcGNfbm9kZV9wdXQobm9kZSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHRpcGNfbm9kZV9jYW5jZWxfd29yayhzdHJ1Y3QgdGlwY19ub2RlICpub2RlKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGF0b21pY19yZWFkKFx1MDAyNm5vZGUtXHUwMDNld29ya19zY2hlZHVsZWQpKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobm9kZS1cdTAwM2VuZXQpO1xuJiM0MztcbiYjNDM7XHRcdC8qIFdha2UgdXAgc2NoZWR1bGVkIHdvcmsgaWYgaXQgaXMgd2FpdGluZy4gKi9cbiYjNDM7XHRcdGlmICghYXRvbWljX3JlYWQoXHUwMDI2bm9kZS1cdTAwM2VmaW5hbGl6ZWQpKSB7XG4mIzQzO1x0XHRcdGF0b21pY19zZXQoXHUwMDI2bm9kZS1cdTAwM2V3b3JrX3NjaGVkdWxlZCwgMCk7XG4mIzQzO1x0XHRcdGF0b21pY19zZXQoXHUwMDI2bm9kZS1cdTAwM2VmaW5hbGl6ZWQsIDEpO1xuJiM0MztcdFx0XHR3YWtlX3VwX3ZhcihcdTAwMjZub2RlLVx1MDAzZWZpbmFsaXplZCk7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0LyogV29yayBpcyBwZW5kaW5nICovXG4mIzQzO1x0XHRpZiAoY2FuY2VsX3dvcmsoXHUwMDI2bm9kZS1cdTAwM2V3b3JrKSkge1xuJiM0MztcdFx0XHRpZiAoYXRvbWljX2RlY19hbmRfdGVzdChcdTAwMjZ0bi1cdTAwM2Vub2RlX3dxX2NvdW50KSlcbiYjNDM7XHRcdFx0XHR3YWtlX3VwX3ZhcihcdTAwMjZ0bi1cdTAwM2Vub2RlX3dxX2NvdW50KTtcbiYjNDM7XHRcdFx0dGlwY19ub2RlX3B1dChub2RlKTtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgdGlwY19ub2RlX3dyaXRlX3VubG9jayhzdHJ1Y3QgdGlwY19ub2RlICpuKVxuIFx0X19yZWxlYXNlcyhuLVx1MDAzZWxvY2spXG4ge1xuQEAgLTQyMSwxMSAmIzQzOzQ4MCwzMiBAQCBzdGF0aWMgdm9pZCB0aXBjX25vZGVfd3JpdGVfdW5sb2NrKHN0cnVjdCB0aXBjX25vZGUgKm4pXG4gXG4gXHR3cml0ZV91bmxvY2tfYmgoXHUwMDI2bi1cdTAwM2Vsb2NrKTtcbiBcbi1cdGlmIChmbGFncyBcdTAwMjYgVElQQ19OT1RJRllfTk9ERV9ET1dOKVxuJiM0MztcdGlmIChmbGFncyBcdTAwMjYgVElQQ19OT1RJRllfTk9ERV9ET1dOKSB7XG4gXHRcdHRpcGNfcHVibF9ub3RpZnkobmV0LCBwdWJsX2xpc3QsIG5vZGUsIG4tXHUwMDNlY2FwYWJpbGl0aWVzKTtcbi1cbi1cdGlmIChmbGFncyBcdTAwMjYgVElQQ19OT1RJRllfTk9ERV9VUClcbi1cdFx0dGlwY19uYW1lZF9ub2RlX3VwKG5ldCwgbm9kZSwgbi1cdTAwM2VjYXBhYmlsaXRpZXMpO1xuJiM0MztcdFx0dGlwY19ub2RlX2NhbmNlbF93b3JrKG4pO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKGZsYWdzIFx1MDAyNiBUSVBDX05PVElGWV9OT0RFX1VQKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobmV0KTtcbiYjNDM7XHRcdGludCByYyA9IDA7XG4mIzQzO1xuJiM0MztcdFx0cmMgPSB0aXBjX25hbWVkX25vZGVfdXAobmV0LCBub2RlLCBuLVx1MDAzZWNhcGFiaWxpdGllcyk7XG4mIzQzO1x0XHQvKiBEZWZlciBidWxrIGRpc3RyaWJ1dGlvbiB0byB3b3JrIHF1ZXVlICovXG4mIzQzO1x0XHRpZiAocmMgXHUwMDNlIDApIHtcbiYjNDM7XHRcdFx0YXRvbWljX3NldChcdTAwMjZuLVx1MDAzZXdvcmtfc2NoZWR1bGVkLCAxKTtcbiYjNDM7XHRcdFx0YXRvbWljX2luYyhcdTAwMjZ0bi1cdTAwM2Vub2RlX3dxX2NvdW50KTtcbiYjNDM7XHRcdFx0dGlwY19ub2RlX2dldChuKTtcbiYjNDM7XHRcdFx0aWYgKCFzY2hlZHVsZV93b3JrKFx1MDAyNm4tXHUwMDNld29yaykpIHtcbiYjNDM7XHRcdFx0XHRhdG9taWNfZGVjKFx1MDAyNnRuLVx1MDAzZW5vZGVfd3FfY291bnQpO1xuJiM0MztcdFx0XHRcdHRpcGNfbm9kZV9wdXQobik7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdH0gZWxzZSBpZiAocmMgXHUwMDNjIDApIHtcbiYjNDM7XHRcdFx0LyogQnJpbmcgdGhlIG5vZGUgZG93biB0byBzdGFydCBvdmVyIGJ1bGsgZGlzdHJpYnV0aW9uXG4mIzQzO1x0XHRcdCAqIHdoZW4gdGhlIGZpcnN0IGxpbmsgaXMgdXAgYWdhaW4uXG4mIzQzO1x0XHRcdCAqL1xuJiM0MztcdFx0XHR0aXBjX25vZGVfZG93bihuKTtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4gXG4gXHRpZiAoZmxhZ3MgXHUwMDI2IFRJUENfTk9USUZZX0xJTktfVVApIHtcbiBcdFx0dGlwY19tb25fcGVlcl91cChuZXQsIG5vZGUsIGJlYXJlcl9pZCk7XG5AQCAtNTY0LDYgJiM0Mzs2NDQsOSBAQCBzdHJ1Y3QgdGlwY19ub2RlICp0aXBjX25vZGVfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGFkZHIsIHU4ICpwZWVyX2lkLFxuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bi1cdTAwM2VsaXN0KTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNm4tXHUwMDNlcHVibF9saXN0KTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNm4tXHUwMDNlY29ubl9za3MpO1xuJiM0MztcdElOSVRfV09SSyhcdTAwMjZuLVx1MDAzZXdvcmssIHRpcGNfbm9kZV9kaXN0X2J1bGspO1xuJiM0MztcdGF0b21pY19zZXQoXHUwMDI2bi1cdTAwM2V3b3JrX3NjaGVkdWxlZCwgMCk7XG4mIzQzO1x0YXRvbWljX3NldChcdTAwMjZuLVx1MDAzZWZpbmFsaXplZCwgMCk7XG4gXHRza2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNm4tXHUwMDNlYmNfZW50cnkubmFtZWRxKTtcbiBcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2bi1cdTAwM2ViY19lbnRyeS5pbnB1dHExKTtcbiBcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZuLVx1MDAzZWJjX2VudHJ5LmFycnZxKTtcbkBAIC02NTMsNiAmIzQzOzczNiwyMSBAQCB2b2lkIHRpcGNfbm9kZV9zdG9wKHN0cnVjdCBuZXQgKm5ldClcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnRuLVx1MDAzZW5vZGVfbGlzdF9sb2NrKTtcbiB9XG4gXG4mIzQzO3ZvaWQgdGlwY19ub2RlX3dha2V1cChzdHJ1Y3QgbmV0ICpuZXQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobmV0KTtcbiYjNDM7XHRzdHJ1Y3QgdGlwY19ub2RlICpub2RlO1xuJiM0MztcbiYjNDM7XHRyY3VfcmVhZF9sb2NrKCk7XG4mIzQzO1x0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3Uobm9kZSwgXHUwMDI2dG4tXHUwMDNlbm9kZV9saXN0LCBsaXN0KSB7XG4mIzQzO1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2bm9kZS1cdTAwM2V3b3JrX3NjaGVkdWxlZCkpIHtcbiYjNDM7XHRcdFx0YXRvbWljX3NldChcdTAwMjZub2RlLVx1MDAzZWZpbmFsaXplZCwgMSk7XG4mIzQzO1x0XHRcdHdha2VfdXBfdmFyKFx1MDAyNm5vZGUtXHUwMDNlZmluYWxpemVkKTtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO1x0cmN1X3JlYWRfdW5sb2NrKCk7XG4mIzQzO31cbiYjNDM7XG4gdm9pZCB0aXBjX25vZGVfc3Vic2NyaWJlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGxpc3RfaGVhZCAqc3Vic2NyLCB1MzIgYWRkcilcbiB7XG4gXHRzdHJ1Y3QgdGlwY19ub2RlICpuO1xuQEAgLTgwMSw2ICYjNDM7ODk5LDcgQEAgc3RhdGljIGJvb2wgdGlwY19ub2RlX2NsZWFudXAoc3RydWN0IHRpcGNfbm9kZSAqcGVlcilcbiBzdGF0aWMgdm9pZCB0aXBjX25vZGVfdGltZW91dChzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbiB7XG4gXHRzdHJ1Y3QgdGlwY19ub2RlICpuID0gdGltZXJfY29udGFpbmVyX29mKG4sIHQsIHRpbWVyKTtcbiYjNDM7XHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobi1cdTAwM2VuZXQpO1xuIFx0c3RydWN0IHRpcGNfbGlua19lbnRyeSAqbGU7XG4gXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHhtaXRxO1xuIFx0aW50IHJlbWFpbnMgPSBuLVx1MDAzZWxpbmtfY250O1xuQEAgLTgxNCw2ICYjNDM7OTEzLDExIEBAIHN0YXRpYyB2b2lkIHRpcGNfbm9kZV90aW1lb3V0KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4mIzQzO1x0aWYgKGF0b21pY19yZWFkKFx1MDAyNnRuLVx1MDAzZWZpbmFsaXplZCkgXHUwMDI2XHUwMDI2IGF0b21pY19yZWFkKFx1MDAyNm4tXHUwMDNld29ya19zY2hlZHVsZWQpKSB7XG4mIzQzO1x0XHRhdG9taWNfc2V0KFx1MDAyNm4tXHUwMDNlZmluYWxpemVkLCAxKTtcbiYjNDM7XHRcdHdha2VfdXBfdmFyKFx1MDAyNm4tXHUwMDNlZmluYWxpemVkKTtcbiYjNDM7XHR9XG4mIzQzO1xuICNpZmRlZiBDT05GSUdfVElQQ19DUllQVE9cbiBcdC8qIFRha2UgYW55IGNyeXB0byBrZXkgcmVsYXRlZCBhY3Rpb25zIGZpcnN0ICovXG4gXHR0aXBjX2NyeXB0b190aW1lb3V0KG4tXHUwMDNlY3J5cHRvX3J4KTtcbmRpZmYgLS1naXQgYS9uZXQvdGlwYy9ub2RlLmggYi9uZXQvdGlwYy9ub2RlLmhcbmluZGV4IDE1NGE1YmJiMGQyOWQuLmM3YmMzYmMwNTMyODUgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9ub2RlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC90aXBjL25vZGUuaFxuQEAgLTc1LDYgJiM0Mzs3NSw3IEBAIGVudW0ge1xuICNkZWZpbmUgSU5WQUxJRF9CRUFSRVJfSUQgLTFcbiBcbiB2b2lkIHRpcGNfbm9kZV9zdG9wKHN0cnVjdCBuZXQgKm5ldCk7XG4mIzQzO3ZvaWQgdGlwY19ub2RlX3dha2V1cChzdHJ1Y3QgbmV0ICpuZXQpO1xuIGJvb2wgdGlwY19ub2RlX2dldF9pZChzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBhZGRyLCB1OCAqaWQpO1xuIHUzMiB0aXBjX25vZGVfZ2V0X2FkZHIoc3RydWN0IHRpcGNfbm9kZSAqbm9kZSk7XG4gY2hhciAqdGlwY19ub2RlX2dldF9pZF9zdHIoc3RydWN0IHRpcGNfbm9kZSAqbm9kZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTk6Mjk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0aXBjX25hbWVkX25vZGVfdXAmIzM0OywKICAgICYjMzQ7dGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGUmIzM0OywKICAgICYjMzQ7dGlwY19uYW1ldGJsX3B1Ymxpc2gmIzM0OywKICAgICYjMzQ7dGlwY19uYW1ldGJsX3dpdGhkcmF3JiMzNDssCiAgICAmIzM0O3RpcGNfbm9kZV93YWtldXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHdvcmtxdWV1ZSBmb3IgYnVsayBkaXN0cmlidXRpb24gb2YgY2x1c3RlciBzY29wZSBwdWJsaWNhdGlvbnMgaW4gVElQQywgbW9kaWZ5aW5nIGNvcmUgcHJvdG9jb2wgbG9naWMgc3VjaCBhcyBub2RlIHN0YXRlIG1hbmFnZW1lbnQgYW5kIG5hbWUgdGFibGUgcHVibGlzaGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBUSVBDIHN1YnN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDllMWZhZjcyMTE2ODc0YjM2MWJjZGRjNjg0NDhkYjA2MTI3OWNjMzAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzMSAxOToyOTozMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC90aXBjL2NvcmUuYyBiL25ldC90aXBjL2NvcmUuYwppbmRleCAzMTU5NzVjM2JlODE4Li4xZTFmZTc4Y2M0ZWU0IDEwMDY0NAotLS0gYS9uZXQvdGlwYy9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvY29yZS5jCkBAIC02MSw2ICYjNDM7NjEsOCBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgdGlwY19pbml0X25ldChzdHJ1Y3QgbmV0ICpuZXQpCiAJdG4tJmd0O3RyaWFsX2FkZHIgPSAwOwogCXRuLSZndDthZGRyX3RyaWFsX2VuZCA9IDA7CiAJdG4tJmd0O2NhcGFiaWxpdGllcyA9IFRJUENfTk9ERV9DQVBBQklMSVRJRVM7CiYjNDM7CWF0b21pY19zZXQoJmFtcDt0bi0mZ3Q7bm9kZV93cV9jb3VudCwgMCk7CiYjNDM7CWF0b21pY19zZXQoJmFtcDt0bi0mZ3Q7ZmluYWxpemVkLCAwKTsKIAlJTklUX1dPUksoJmFtcDt0bi0mZ3Q7d29yaywgdGlwY19uZXRfZmluYWxpemVfd29yayk7CiAJbWVtc2V0KHRuLSZndDtub2RlX2lkLCAwLCBzaXplb2YodG4tJmd0O25vZGVfaWQpKTsKIAltZW1zZXQodG4tJmd0O25vZGVfaWRfc3RyaW5nLCAwLCBzaXplb2YodG4tJmd0O25vZGVfaWRfc3RyaW5nKSk7CkBAIC0xMTksNiAmIzQzOzEyMSw3IEBAIHN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgdGlwY19leGl0X25ldChzdHJ1Y3QgbmV0ICpuZXQpCiAjaWZkZWYgQ09ORklHX1RJUENfQ1JZUFRPCiAJdGlwY19jcnlwdG9fc3RvcCgmYW1wO3RpcGNfbmV0KG5ldCktJmd0O2NyeXB0b190eCk7CiAjZW5kaWYKJiM0MzsJd2FpdF92YXJfZXZlbnQoJmFtcDt0bi0mZ3Q7bm9kZV93cV9jb3VudCwgIWF0b21pY19yZWFkKCZhbXA7dG4tJmd0O25vZGVfd3FfY291bnQpKTsKIAl3YWl0X3Zhcl9ldmVudCgmYW1wO3RuLSZndDt3cV9jb3VudCwgYXRvbWljX3JlYWQoJmFtcDt0bi0mZ3Q7d3FfY291bnQpID09IDApOwogfQogCmRpZmYgLS1naXQgYS9uZXQvdGlwYy9jb3JlLmggYi9uZXQvdGlwYy9jb3JlLmgKaW5kZXggOWNlNWY5ZmY2Y2MwMy4uYmUzMzVjZTgzMzg5YSAxMDA2NDQKLS0tIGEvbmV0L3RpcGMvY29yZS5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC90aXBjL2NvcmUuaApAQCAtMTQ1LDYgJiM0MzsxNDUsMTAgQEAgc3RydWN0IHRpcGNfbmV0IHsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKIAkvKiBUaGUgbnVtYmVycyBvZiB3b3JrIHF1ZXVlcyBpbiBzY2hlZHVsZSAqLwogCWF0b21pY190IHdxX2NvdW50OwomIzQzOwkvKiBUaGUgbnVtYmVycyBvZiB3b3JrcyBvZiBjcmVhdGVkIG5vZGVzIGluIHNjaGVkdWxlICovCiYjNDM7CWF0b21pY190IG5vZGVfd3FfY291bnQ7CiYjNDM7CS8qIGZsYWcgdG8gd2FrZSB1cCBzY2hlZHVsZWQgd29ya3Mgb2YgY3JlYXRlZCBub2RlcyAqLwomIzQzOwlhdG9taWNfdCBmaW5hbGl6ZWQ7CiB9OwogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB0aXBjX25ldCAqdGlwY19uZXQoc3RydWN0IG5ldCAqbmV0KQpkaWZmIC0tZ2l0IGEvbmV0L3RpcGMvbmFtZV9kaXN0ci5jIGIvbmV0L3RpcGMvbmFtZV9kaXN0ci5jCmluZGV4IGJhNGY0OTA2ZTEzYjcuLmM4ZTI4NDk3MzU2ZWYgMTAwNjQ0Ci0tLSBhL25ldC90aXBjL25hbWVfZGlzdHIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvdGlwYy9uYW1lX2Rpc3RyLmMKQEAgLTE0Nyw4ICYjNDM7MTQ3LDggQEAgc3RydWN0IHNrX2J1ZmYgKnRpcGNfbmFtZWRfd2l0aGRyYXcoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgcHVibGljYXRpb24gKnApCiAgKiBAcGxzOiBsaW5rZWQgbGlzdCBvZiBwdWJsaWNhdGlvbiBpdGVtcyB0byBiZSBwYWNrZWQgaW50byBidWZmZXIgY2hhaW4KICAqIEBzZXFubzogc2VxdWVuY2UgbnVtYmVyIGZvciB0aGlzIG1lc3NhZ2UKICAqLwotc3RhdGljIHZvaWQgbmFtZWRfZGlzdHJpYnV0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsCi0JCQkgICAgIHUzMiBkbm9kZSwgc3RydWN0IGxpc3RfaGVhZCAqcGxzLCB1MTYgc2Vxbm8pCiYjNDM7c3RhdGljIGludCBuYW1lZF9kaXN0cmlidXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCwKJiM0MzsJCQkgICAgdTMyIGRub2RlLCBzdHJ1Y3QgbGlzdF9oZWFkICpwbHMsIHUxNiBzZXFubykKIHsKIAlzdHJ1Y3QgcHVibGljYXRpb24gKnB1Ymw7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYiA9IE5VTEw7CkBAIC0xNjQsOCAmIzQzOzE2NCw5IEBAIHN0YXRpYyB2b2lkIG5hbWVkX2Rpc3RyaWJ1dGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0LAogCQkJc2tiID0gbmFtZWRfcHJlcGFyZV9idWYobmV0LCBQVUJMSUNBVElPTiwgbXNnX3JlbSwKIAkJCQkJCWRub2RlKTsKIAkJCWlmICghc2tiKSB7CiYjNDM7CQkJCV9fc2tiX3F1ZXVlX3B1cmdlKGxpc3QpOwogCQkJCXByX3dhcm4oJiMzNDtCdWxrIHB1YmxpY2F0aW9uIGZhaWx1cmVcbiYjMzQ7KTsKLQkJCQlyZXR1cm47CiYjNDM7CQkJCXJldHVybiAxOwogCQkJfQogCQkJaGRyID0gYnVmX21zZyhza2IpOwogCQkJbXNnX3NldF9iY19hY2tfaW52YWxpZChoZHIsIHRydWUpOwpAQCAtMTk1LDE1ICYjNDM7MTk2LDE2IEBAIHN0YXRpYyB2b2lkIG5hbWVkX2Rpc3RyaWJ1dGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0LAogCWhkciA9IGJ1Zl9tc2coc2tiX3BlZWtfdGFpbChsaXN0KSk7CiAJbXNnX3NldF9sYXN0X2J1bGsoaGRyKTsKIAltc2dfc2V0X25hbWVkX3NlcW5vKGhkciwgc2Vxbm8pOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKIH0KIAogLyoqCi0gKiB0aXBjX25hbWVkX25vZGVfdXAgLSB0ZWxsIHNwZWNpZmllZCBub2RlIGFib3V0IGFsbCBwdWJsaWNhdGlvbnMgYnkgdGhpcyBub2RlCiYjNDM7ICogdGlwY19uYW1lZF9kaXN0cmlidXRlIC0gZGlzdHJpYnV0ZSBhbGwgcHVibGljYXRpb25zIHRvIHNwZWNpZmllZCBub2RlCiAgKiBAbmV0OiB0aGUgYXNzb2NpYXRlZCBuZXR3b3JrIG5hbWVzcGFjZQogICogQGRub2RlOiBkZXN0aW5hdGlvbiBub2RlCi0gKiBAY2FwYWJpbGl0aWVzOiBwZWVyIG5vZGUmIzM5O3MgY2FwYWJpbGl0aWVzCiAgKi8KLXZvaWQgdGlwY19uYW1lZF9ub2RlX3VwKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlLCB1MTYgY2FwYWJpbGl0aWVzKQomIzQzO3N0YXRpYyBpbnQgdGlwY19uYW1lZF9kaXN0cmlidXRlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlKQogewogCXN0cnVjdCBuYW1lX3RhYmxlICpudCA9IHRpcGNfbmFtZV90YWJsZShuZXQpOwogCXN0cnVjdCB0aXBjX25ldCAqdG4gPSB0aXBjX25ldChuZXQpOwpAQCAtMjEyLDE1ICYjNDM7MjE0LDg2IEBAIHZvaWQgdGlwY19uYW1lZF9ub2RlX3VwKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlLCB1MTYgY2FwYWJpbGl0aWVzKQogCiAJX19za2JfcXVldWVfaGVhZF9pbml0KCZhbXA7aGVhZCk7CiAJc3Bpbl9sb2NrX2JoKCZhbXA7dG4tJmd0O25hbWV0YmxfbG9jayk7Ci0JaWYgKCEoY2FwYWJpbGl0aWVzICZhbXA7IFRJUENfTkFNRURfQkNBU1QpKQotCQludC0mZ3Q7cmNfZGVzdHMmIzQzOyYjNDM7OwogCXNlcW5vID0gbnQtJmd0O3NuZF9ueHQ7CiAJc3Bpbl91bmxvY2tfYmgoJmFtcDt0bi0mZ3Q7bmFtZXRibF9sb2NrKTsKIAogCXJlYWRfbG9ja19iaCgmYW1wO250LSZndDtjbHVzdGVyX3Njb3BlX2xvY2spOwotCW5hbWVkX2Rpc3RyaWJ1dGUobmV0LCAmYW1wO2hlYWQsIGRub2RlLCAmYW1wO250LSZndDtjbHVzdGVyX3Njb3BlLCBzZXFubyk7CiYjNDM7CWlmIChuYW1lZF9kaXN0cmlidXRlKG5ldCwgJmFtcDtoZWFkLCBkbm9kZSwgJmFtcDtudC0mZ3Q7Y2x1c3Rlcl9zY29wZSwgc2Vxbm8pKSB7CiYjNDM7CQlyZWFkX3VubG9ja19iaCgmYW1wO250LSZndDtjbHVzdGVyX3Njb3BlX2xvY2spOwomIzQzOwkJcmV0dXJuIC1FTk9CVUZTOwomIzQzOwl9CiAJdGlwY19ub2RlX3htaXQobmV0LCAmYW1wO2hlYWQsIGRub2RlLCAwKTsKIAlyZWFkX3VubG9ja19iaCgmYW1wO250LSZndDtjbHVzdGVyX3Njb3BlX2xvY2spOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogdGlwY19uYW1lZF9ub2RlX3VwIC0gdGVsbCBzcGVjaWZpZWQgbm9kZSBhYm91dCBhbGwgcHVibGljYXRpb25zIGJ5IHRoaXMgbm9kZQomIzQzOyAqIEBuZXQ6IHRoZSBhc3NvY2lhdGVkIG5ldHdvcmsgbmFtZXNwYWNlCiYjNDM7ICogQGRub2RlOiBkZXN0aW5hdGlvbiBub2RlCiYjNDM7ICogQGNhcGFiaWxpdGllczogcGVlciBub2RlJiMzOTtzIGNhcGFiaWxpdGllcwomIzQzOyAqLwomIzQzO2ludCB0aXBjX25hbWVkX25vZGVfdXAoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUsIHUxNiBjYXBhYmlsaXRpZXMpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbmFtZV90YWJsZSAqbnQgPSB0aXBjX25hbWVfdGFibGUobmV0KTsKJiM0MzsJc3RydWN0IHRpcGNfbmV0ICp0biA9IHRpcGNfbmV0KG5ldCk7CiYjNDM7CiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO3RuLSZndDtuYW1ldGJsX2xvY2spOwomIzQzOwlpZiAoIShjYXBhYmlsaXRpZXMgJmFtcDsgVElQQ19OQU1FRF9CQ0FTVCkpCiYjNDM7CQludC0mZ3Q7cmNfZGVzdHMmIzQzOyYjNDM7OwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO3RuLSZndDtuYW1ldGJsX2xvY2spOwomIzQzOwomIzQzOwlyZWFkX2xvY2tfYmgoJmFtcDtudC0mZ3Q7Y2x1c3Rlcl9zY29wZV9sb2NrKTsKJiM0MzsJLyogMS4gdGlwY19uZXRfZmluYWxpemVfd29yaygpIGlzIG5vdCBzY2hlZHVsZWQgYmVjYXVzZSBvZiBuYW1lc3BhY2UKJiM0MzsJICogICAgdGVhcmRvd24uCiYjNDM7CSAqIDIuIE9yIHRpcGNfbmV0X2ZpbmFsaXplKCkgLS0tJmd0OyB0aXBjX25hbWV0YmxfcHVibGlzaCgpIGhhcyBmYWlsZWQKJiM0MzsJICogICAgdG8gaW5zZXJ0IG5vZGUgc2VsZiBhZGRyZXNzIHB1YmxpY2F0aW9uIGludG8gbnQtJmd0O2NsdXN0ZXJfc2NvcGUKJiM0MzsJICogICAgZHVlIHRvIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUuCiYjNDM7CSAqIDMuIE9yIHRpcGNfbmV0X2ZpbmFsaXplKCkgLS0tJmd0OyB0aXBjX25hbWV0YmxfcHVibGlzaCgpIGhhcyBub3QKJiM0MzsJICogICAgZXhlY3V0ZWQgeWV0LgomIzQzOwkgKi8KJiM0MzsJaWYgKHVubGlrZWx5KGxpc3RfZW1wdHkoJmFtcDtudC0mZ3Q7Y2x1c3Rlcl9zY29wZSkpKSB7CiYjNDM7CQlyZWFkX3VubG9ja19iaCgmYW1wO250LSZndDtjbHVzdGVyX3Njb3BlX2xvY2spOwomIzQzOwkJcmV0dXJuIDE7CiYjNDM7CX0KJiM0MzsJcmVhZF91bmxvY2tfYmgoJmFtcDtudC0mZ3Q7Y2x1c3Rlcl9zY29wZV9sb2NrKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHRpcGNfbmFtZWRfZGlzdHJpYnV0ZShuZXQsIGRub2RlKTsKJiM0Mzt9CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogdGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGUgLSBkaXN0cmlidXRlIGFsbCBwdWJsaWNhdGlvbnMgdG8gc3BlY2lmaWVkIG5vZGUKJiM0MzsgKiBAbmV0OiB0aGUgYXNzb2NpYXRlZCBuZXR3b3JrIG5hbWVzcGFjZQomIzQzOyAqIEBkbm9kZTogZGVzdGluYXRpb24gbm9kZQomIzQzOyAqLwomIzQzO2ludCB0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBuYW1lX3RhYmxlICpudCA9IHRpcGNfbmFtZV90YWJsZShuZXQpOwomIzQzOwlib29sIHJlaW5zZXJ0ID0gZmFsc2U7CiYjNDM7CiYjNDM7CXJlYWRfbG9ja19iaCgmYW1wO250LSZndDtjbHVzdGVyX3Njb3BlX2xvY2spOwomIzQzOwlpZiAodW5saWtlbHkobGlzdF9lbXB0eSgmYW1wO250LSZndDtjbHVzdGVyX3Njb3BlKSkpCiYjNDM7CQlyZWluc2VydCA9IHRydWU7CiYjNDM7CXJlYWRfdW5sb2NrX2JoKCZhbXA7bnQtJmd0O2NsdXN0ZXJfc2NvcGVfbG9jayk7CiYjNDM7CS8qIHRpcGNfbmV0X2ZpbmFsaXplKCkgLS0tJmd0OyB0aXBjX25hbWV0YmxfcHVibGlzaCgpIGhhcyBmYWlsZWQgdG8gaW5zZXJ0CiYjNDM7CSAqIG5vZGUgc2VsZiBhZGRyZXNzIHB1YmxpY2F0aW9uIGludG8gbnQtJmd0O2NsdXN0ZXJfc2NvcGUgZHVlIHRvIG1lbW9yeQomIzQzOwkgKiBhbGxvY2F0aW9uIGZhaWx1cmUuIFNvLCByZWluc2VydCB0aGlzIHB1YmxpY2F0aW9uLgomIzQzOwkgKi8KJiM0MzsJaWYgKHJlaW5zZXJ0KSB7CiYjNDM7CQlzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobmV0KTsKJiM0MzsJCXN0cnVjdCB0aXBjX3NvY2tldF9hZGRyIHNrOwomIzQzOwkJc3RydWN0IHRpcGNfdWFkZHIgdWE7CiYjNDM7CiYjNDM7CQlzay5yZWYgPSAwOwomIzQzOwkJc2subm9kZSA9IHRuLSZndDtub2RlX2FkZHI7CiYjNDM7CQl0aXBjX3VhZGRyKCZhbXA7dWEsIFRJUENfU0VSVklDRV9SQU5HRSwgVElQQ19DTFVTVEVSX1NDT1BFLAomIzQzOwkJCSAgIFRJUENfTk9ERV9TVEFURSwgdG4tJmd0O25vZGVfYWRkciwgdG4tJmd0O25vZGVfYWRkcik7CiYjNDM7CQlpZiAoIXRpcGNfbmFtZXRibF9wdWJsaXNoKG5ldCwgJmFtcDt1YSwgJmFtcDtzaywgdG4tJmd0O25vZGVfYWRkcikpCiYjNDM7CQkJcmV0dXJuIC1FTk9CVUZTOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiB0aXBjX25hbWVkX2Rpc3RyaWJ1dGUobmV0LCBkbm9kZSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvbmV0L3RpcGMvbmFtZV9kaXN0ci5oIGIvbmV0L3RpcGMvbmFtZV9kaXN0ci5oCmluZGV4IGM2NzdmNmYwODJkZmIuLmNhZGY0ZThjM2U2NmMgMTAwNjQ0Ci0tLSBhL25ldC90aXBjL25hbWVfZGlzdHIuaAomIzQzOyYjNDM7JiM0MzsgYi9uZXQvdGlwYy9uYW1lX2Rpc3RyLmgKQEAgLTY5LDcgJiM0Mzs2OSw4IEBAIHN0cnVjdCBkaXN0cl9pdGVtIHsKIAogc3RydWN0IHNrX2J1ZmYgKnRpcGNfbmFtZWRfcHVibGlzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBwdWJsaWNhdGlvbiAqcHVibCk7CiBzdHJ1Y3Qgc2tfYnVmZiAqdGlwY19uYW1lZF93aXRoZHJhdyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBwdWJsaWNhdGlvbiAqcHVibCk7Ci12b2lkIHRpcGNfbmFtZWRfbm9kZV91cChzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSwgdTE2IGNhcGFiaWxpdGllcyk7CiYjNDM7aW50IHRpcGNfbmFtZWRfbm9kZV91cChzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSwgdTE2IGNhcGFiaWxpdGllcyk7CiYjNDM7aW50IHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlKTsKIHZvaWQgdGlwY19uYW1lZF9yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpuYW1lZHEsCiAJCSAgICB1MTYgKnJjdl9ueHQsIGJvb2wgKm9wZW4pOwogdm9pZCB0aXBjX25hbWVkX3JlaW5pdChzdHJ1Y3QgbmV0ICpuZXQpOwpkaWZmIC0tZ2l0IGEvbmV0L3RpcGMvbmFtZV90YWJsZS5jIGIvbmV0L3RpcGMvbmFtZV90YWJsZS5jCmluZGV4IDI1M2M3MmQxMzY2ZWIuLjZmZGEzNmFiMTc2NjkgMTAwNjQ0Ci0tLSBhL25ldC90aXBjL25hbWVfdGFibGUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvdGlwYy9uYW1lX3RhYmxlLmMKQEAgLTc2MywyMSAmIzQzOzc2Myw0MCBAQCBzdHJ1Y3QgcHVibGljYXRpb24gKnRpcGNfbmFtZXRibF9wdWJsaXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfdWFkZHIgKnVhLAogCQkJCQkgc3RydWN0IHRpcGNfc29ja2V0X2FkZHIgKnNrLCB1MzIga2V5KQogewogCXN0cnVjdCBuYW1lX3RhYmxlICpudCA9IHRpcGNfbmFtZV90YWJsZShuZXQpOwomIzQzOwl1MzIgbWF4X3VzZXJfcHViID0gVElQQ19NQVhfUFVCTCAtIDE7CiAJc3RydWN0IHRpcGNfbmV0ICp0biA9IHRpcGNfbmV0KG5ldCk7CiAJc3RydWN0IHB1YmxpY2F0aW9uICpwID0gTlVMTDsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gTlVMTDsKJiM0MzsJYm9vbCBwcm90b2NvbF90eXBlID0gZmFsc2U7CiAJdTMyIHJjX2Rlc3RzOwogCiYjNDM7CWlmICh1YS0mZ3Q7c3IudHlwZSA9PSBUSVBDX05PREVfU1RBVEUgfHwgdWEtJmd0O3NyLnR5cGUgPT0gVElQQ19MSU5LX1NUQVRFIHx8CiYjNDM7CSAgICB1YS0mZ3Q7c3IudHlwZSA9PSBUSVBDX1RPUF9TUlYpCiYjNDM7CQlwcm90b2NvbF90eXBlID0gdHJ1ZTsKJiM0MzsKIAlzcGluX2xvY2tfYmgoJmFtcDt0bi0mZ3Q7bmFtZXRibF9sb2NrKTsKJiM0MzsJaWYgKHByb3RvY29sX3R5cGUpCiYjNDM7CQlnb3RvIGluc2VydDsKIAotCWlmIChudC0mZ3Q7bG9jYWxfcHVibF9jb3VudCAmZ3Q7PSBUSVBDX01BWF9QVUJMKSB7Ci0JCXByX3dhcm4oJiMzNDtCaW5kIGZhaWxlZCwgbWF4IGxpbWl0ICV1IHJlYWNoZWRcbiYjMzQ7LCBUSVBDX01BWF9QVUJMKTsKJiM0MzsJLyogUmVzZXJ2ZSBvbmUgZW50cnkgZm9yIG5vZGUgc3RhdGUgc2VydmljZSB0eXBlIGJlY2F1c2UgaXQgaGFzIGNsdXN0ZXIKJiM0MzsJICogc2NvcGUgYW5kIGl0IGlzIGRpc3RyaWJ1dGVkIGluIGJ1bGsuIFNvLCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdXNlciYjMzk7cwomIzQzOwkgKiBwdWJsaWNhdGlvbnMgaXMgKFRJUENfTUFYX1BVQkwgLSAxKS4KJiM0MzsJICovCiYjNDM7CWlmIChudC0mZ3Q7bG9jYWxfcHVibF9jb3VudCAmZ3Q7PSBtYXhfdXNlcl9wdWIpIHsKJiM0MzsJCXByX3dhcm4oJiMzNDtCaW5kIGZhaWxlZCwgbWF4IGxpbWl0ICV1IHJlYWNoZWRcbiYjMzQ7LCBtYXhfdXNlcl9wdWIpOwogCQlnb3RvIGV4aXQ7CiAJfQogCiYjNDM7aW5zZXJ0OgogCXAgPSB0aXBjX25hbWV0YmxfaW5zZXJ0X3B1YmwobmV0LCB1YSwgc2ssIGtleSk7CiAJaWYgKHApIHsKLQkJbnQtJmd0O2xvY2FsX3B1YmxfY291bnQmIzQzOyYjNDM7OwomIzQzOwkJLyogTm90IGNvdW50IG5vZGUgc3RhdGUsIGxpbmsgc3RhdGUgYW5kIHRvcG9sb2d5IHNlcnZlciB0eXBlcwomIzQzOwkJICogc28gdGhhdCBtYXhpbXVtIG50LSZndDtsb2NhbF9wdWJsX2NvdW50IGRvZXMgbm90IHByZXZlbnQKJiM0MzsJCSAqIHByb3RvY29sIHNlcnZpY2UgdHlwZXMgZnJvbSBiZWluZyBpbnNlcnRlZCBpbnRvIHRoZSBuYW1lCiYjNDM7CQkgKiB0YWJsZS4KJiM0MzsJCSAqLwomIzQzOwkJaWYgKCFwcm90b2NvbF90eXBlKQomIzQzOwkJCW50LSZndDtsb2NhbF9wdWJsX2NvdW50JiM0MzsmIzQzOzsKIAkJc2tiID0gdGlwY19uYW1lZF9wdWJsaXNoKG5ldCwgcCk7CiAJfQogCXJjX2Rlc3RzID0gbnQtJmd0O3JjX2Rlc3RzOwpAQCAtODEwLDcgJiM0Mzs4MjksMTAgQEAgdm9pZCB0aXBjX25hbWV0Ymxfd2l0aGRyYXcoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGlwY191YWRkciAqdWEsCiAKIAlwID0gdGlwY19uYW1ldGJsX3JlbW92ZV9wdWJsKG5ldCwgdWEsIHNrLCBrZXkpOwogCWlmIChwKSB7Ci0JCW50LSZndDtsb2NhbF9wdWJsX2NvdW50LS07CiYjNDM7CQlpZiAocC0mZ3Q7c3IudHlwZSAhPSBUSVBDX05PREVfU1RBVEUgJmFtcDsmYW1wOwomIzQzOwkJICAgIHAtJmd0O3NyLnR5cGUgIT0gVElQQ19MSU5LX1NUQVRFICZhbXA7JmFtcDsKJiM0MzsJCSAgICBwLSZndDtzci50eXBlICE9IFRJUENfVE9QX1NSVikKJiM0MzsJCQludC0mZ3Q7bG9jYWxfcHVibF9jb3VudC0tOwogCQlza2IgPSB0aXBjX25hbWVkX3dpdGhkcmF3KG5ldCwgcCk7CiAJCWxpc3RfZGVsX2luaXQoJmFtcDtwLSZndDtiaW5kaW5nX3NvY2spOwogCQlrZnJlZV9yY3UocCwgcmN1KTsKZGlmZiAtLWdpdCBhL25ldC90aXBjL25ldC5jIGIvbmV0L3RpcGMvbmV0LmMKaW5kZXggN2U2NWQwYjBjNGE4ZC4uNzVhYzRlM2NkMDFhOCAxMDA2NDQKLS0tIGEvbmV0L3RpcGMvbmV0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvbmV0LmMKQEAgLTEzOSw2ICYjNDM7MTM5LDExIEBAIHN0YXRpYyB2b2lkIHRpcGNfbmV0X2ZpbmFsaXplKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGFkZHIpCiAJdGlwY19za19yZWluaXQobmV0KTsKIAl0aXBjX21vbl9yZWluaXRfc2VsZihuZXQpOwogCXRpcGNfbmFtZXRibF9wdWJsaXNoKG5ldCwgJmFtcDt1YSwgJmFtcDtzaywgYWRkcik7CiYjNDM7CWF0b21pY19zZXQoJmFtcDt0bi0mZ3Q7ZmluYWxpemVkLCAxKTsKJiM0MzsJLyogV2FrZSB1cCBub2RlcyB3YWl0aW5nIGZvciBkaXN0cmlidXRpbmcgYnVsayBvZiBwdWJsaWNhdGlvbnMKJiM0MzsJICogaWYgYXBwbGljYWJsZS4KJiM0MzsJICovCiYjNDM7CXRpcGNfbm9kZV93YWtldXAobmV0KTsKIH0KIAogdm9pZCB0aXBjX25ldF9maW5hbGl6ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKZGlmZiAtLWdpdCBhL25ldC90aXBjL25vZGUuYyBiL25ldC90aXBjL25vZGUuYwppbmRleCA4ZTRlZjI2MzBhZTRmLi4zMzQ4MTJiZGFiNzY1IDEwMDY0NAotLS0gYS9uZXQvdGlwYy9ub2RlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvbm9kZS5jCkBAIC0xMTEsNiAmIzQzOzExMSw5IEBAIHN0cnVjdCB0aXBjX2JjbGlua19lbnRyeSB7CiAgKiBAcGVlcl9uZXQ6IHBlZXImIzM5O3MgbmV0IG5hbWVzcGFjZQogICogQHBlZXJfaGFzaF9taXg6IGhhc2ggZm9yIHRoaXMgcGVlciAoRklYTUUpCiAgKiBAY3J5cHRvX3J4OiBSWCBjcnlwdG8gaGFuZGxlcgomIzQzOyAqIEB3b3JrOiB3b3JrIGl0ZW0gZm9yIGJ1bGsgZGlzdHJpYnV0aW9uIG9mIGNsdXN0ZXIgc2NvcGUgcHVibGljYXRpb25zCiYjNDM7ICogQHdvcmtfc2NoZWR1bGVkOiBmbGFnIHRvIGluZGljYXRlIHRoZSB3b3JrIGhhcyBiZWVuIHNjaGVkdWxlZAomIzQzOyAqIEBmaW5hbGl6ZWQ6IGZsYWcgdG8gd2FrZSB1cCBzY2hlZHVsZWQgd29yawogICovCiBzdHJ1Y3QgdGlwY19ub2RlIHsKIAl1MzIgYWRkcjsKQEAgLTE0NSw2ICYjNDM7MTQ4LDkgQEAgc3RydWN0IHRpcGNfbm9kZSB7CiAjaWZkZWYgQ09ORklHX1RJUENfQ1JZUFRPCiAJc3RydWN0IHRpcGNfY3J5cHRvICpjcnlwdG9fcng7CiAjZW5kaWYKJiM0MzsJc3RydWN0IHdvcmtfc3RydWN0IHdvcms7CiYjNDM7CWF0b21pY190IHdvcmtfc2NoZWR1bGVkOwomIzQzOwlhdG9taWNfdCBmaW5hbGl6ZWQ7CiB9OwogCiAvKiBOb2RlIEZTTSBzdGF0ZXMgYW5kIGV2ZW50czoKQEAgLTM5Myw2ICYjNDM7Mzk5LDU5IEBAIHN0YXRpYyB2b2lkIHRpcGNfbm9kZV93cml0ZV91bmxvY2tfZmFzdChzdHJ1Y3QgdGlwY19ub2RlICpuKQogCXdyaXRlX3VubG9ja19iaCgmYW1wO24tJmd0O2xvY2spOwogfQogCiYjNDM7c3RhdGljIHZvaWQgdGlwY19ub2RlX2Rvd24oc3RydWN0IHRpcGNfbm9kZSAqbikKJiM0Mzt7CiYjNDM7CWludCBiZWFyZXJfaWQ7CiYjNDM7CiYjNDM7CWZvciAoYmVhcmVyX2lkID0gMDsgYmVhcmVyX2lkICZsdDsgTUFYX0JFQVJFUlM7IGJlYXJlcl9pZCYjNDM7JiM0MzspCiYjNDM7CQl0aXBjX25vZGVfbGlua19kb3duKG4sIGJlYXJlcl9pZCwgZmFsc2UpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0aXBjX25vZGVfZGlzdF9idWxrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKJiM0Mzt7CiYjNDM7CXN0cnVjdCB0aXBjX25vZGUgKm5vZGUgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHRpcGNfbm9kZSwgd29yayk7CiYjNDM7CXN0cnVjdCB0aXBjX25ldCAqdG4gPSB0aXBjX25ldChub2RlLSZndDtuZXQpOwomIzQzOwomIzQzOwl3YWl0X3Zhcl9ldmVudCgmYW1wO25vZGUtJmd0O2ZpbmFsaXplZCwgYXRvbWljX3JlYWQoJmFtcDtub2RlLSZndDtmaW5hbGl6ZWQpKTsKJiM0MzsKJiM0MzsJLyogbm9kZSBpcyBkb3duICovCiYjNDM7CWlmICghYXRvbWljX3JlYWQoJmFtcDtub2RlLSZndDt3b3JrX3NjaGVkdWxlZCkpCiYjNDM7CQlnb3RvIGV4aXQ7CiYjNDM7CiYjNDM7CS8qIFN0b3Agd2FraW5nIHVwIHdvcmsgaW4gdGlwY19ub2RlX3RpbWVvdXQoKSAqLwomIzQzOwlhdG9taWNfc2V0KCZhbXA7bm9kZS0mZ3Q7d29ya19zY2hlZHVsZWQsIDApOwomIzQzOwomIzQzOwlpZiAodGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGUobm9kZS0mZ3Q7bmV0LCBub2RlLSZndDthZGRyKSAmbHQ7IDApCiYjNDM7CQl0aXBjX25vZGVfZG93bihub2RlKTsKJiM0MzsKJiM0MztleGl0OgomIzQzOwlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmYW1wO3RuLSZndDtub2RlX3dxX2NvdW50KSkKJiM0MzsJCXdha2VfdXBfdmFyKCZhbXA7dG4tJmd0O25vZGVfd3FfY291bnQpOwomIzQzOwomIzQzOwl0aXBjX25vZGVfcHV0KG5vZGUpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0aXBjX25vZGVfY2FuY2VsX3dvcmsoc3RydWN0IHRpcGNfbm9kZSAqbm9kZSkKJiM0Mzt7CiYjNDM7CWlmIChhdG9taWNfcmVhZCgmYW1wO25vZGUtJmd0O3dvcmtfc2NoZWR1bGVkKSkgewomIzQzOwkJc3RydWN0IHRpcGNfbmV0ICp0biA9IHRpcGNfbmV0KG5vZGUtJmd0O25ldCk7CiYjNDM7CiYjNDM7CQkvKiBXYWtlIHVwIHNjaGVkdWxlZCB3b3JrIGlmIGl0IGlzIHdhaXRpbmcuICovCiYjNDM7CQlpZiAoIWF0b21pY19yZWFkKCZhbXA7bm9kZS0mZ3Q7ZmluYWxpemVkKSkgewomIzQzOwkJCWF0b21pY19zZXQoJmFtcDtub2RlLSZndDt3b3JrX3NjaGVkdWxlZCwgMCk7CiYjNDM7CQkJYXRvbWljX3NldCgmYW1wO25vZGUtJmd0O2ZpbmFsaXplZCwgMSk7CiYjNDM7CQkJd2FrZV91cF92YXIoJmFtcDtub2RlLSZndDtmaW5hbGl6ZWQpOwomIzQzOwkJfQomIzQzOwomIzQzOwkJLyogV29yayBpcyBwZW5kaW5nICovCiYjNDM7CQlpZiAoY2FuY2VsX3dvcmsoJmFtcDtub2RlLSZndDt3b3JrKSkgewomIzQzOwkJCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZhbXA7dG4tJmd0O25vZGVfd3FfY291bnQpKQomIzQzOwkJCQl3YWtlX3VwX3ZhcigmYW1wO3RuLSZndDtub2RlX3dxX2NvdW50KTsKJiM0MzsJCQl0aXBjX25vZGVfcHV0KG5vZGUpOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgdGlwY19ub2RlX3dyaXRlX3VubG9jayhzdHJ1Y3QgdGlwY19ub2RlICpuKQogCV9fcmVsZWFzZXMobi0mZ3Q7bG9jaykKIHsKQEAgLTQyMSwxMSAmIzQzOzQ4MCwzMiBAQCBzdGF0aWMgdm9pZCB0aXBjX25vZGVfd3JpdGVfdW5sb2NrKHN0cnVjdCB0aXBjX25vZGUgKm4pCiAKIAl3cml0ZV91bmxvY2tfYmgoJmFtcDtuLSZndDtsb2NrKTsKIAotCWlmIChmbGFncyAmYW1wOyBUSVBDX05PVElGWV9OT0RFX0RPV04pCiYjNDM7CWlmIChmbGFncyAmYW1wOyBUSVBDX05PVElGWV9OT0RFX0RPV04pIHsKIAkJdGlwY19wdWJsX25vdGlmeShuZXQsIHB1YmxfbGlzdCwgbm9kZSwgbi0mZ3Q7Y2FwYWJpbGl0aWVzKTsKLQotCWlmIChmbGFncyAmYW1wOyBUSVBDX05PVElGWV9OT0RFX1VQKQotCQl0aXBjX25hbWVkX25vZGVfdXAobmV0LCBub2RlLCBuLSZndDtjYXBhYmlsaXRpZXMpOwomIzQzOwkJdGlwY19ub2RlX2NhbmNlbF93b3JrKG4pOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChmbGFncyAmYW1wOyBUSVBDX05PVElGWV9OT0RFX1VQKSB7CiYjNDM7CQlzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobmV0KTsKJiM0MzsJCWludCByYyA9IDA7CiYjNDM7CiYjNDM7CQlyYyA9IHRpcGNfbmFtZWRfbm9kZV91cChuZXQsIG5vZGUsIG4tJmd0O2NhcGFiaWxpdGllcyk7CiYjNDM7CQkvKiBEZWZlciBidWxrIGRpc3RyaWJ1dGlvbiB0byB3b3JrIHF1ZXVlICovCiYjNDM7CQlpZiAocmMgJmd0OyAwKSB7CiYjNDM7CQkJYXRvbWljX3NldCgmYW1wO24tJmd0O3dvcmtfc2NoZWR1bGVkLCAxKTsKJiM0MzsJCQlhdG9taWNfaW5jKCZhbXA7dG4tJmd0O25vZGVfd3FfY291bnQpOwomIzQzOwkJCXRpcGNfbm9kZV9nZXQobik7CiYjNDM7CQkJaWYgKCFzY2hlZHVsZV93b3JrKCZhbXA7bi0mZ3Q7d29yaykpIHsKJiM0MzsJCQkJYXRvbWljX2RlYygmYW1wO3RuLSZndDtub2RlX3dxX2NvdW50KTsKJiM0MzsJCQkJdGlwY19ub2RlX3B1dChuKTsKJiM0MzsJCQl9CiYjNDM7CQl9IGVsc2UgaWYgKHJjICZsdDsgMCkgewomIzQzOwkJCS8qIEJyaW5nIHRoZSBub2RlIGRvd24gdG8gc3RhcnQgb3ZlciBidWxrIGRpc3RyaWJ1dGlvbgomIzQzOwkJCSAqIHdoZW4gdGhlIGZpcnN0IGxpbmsgaXMgdXAgYWdhaW4uCiYjNDM7CQkJICovCiYjNDM7CQkJdGlwY19ub2RlX2Rvd24obik7CiYjNDM7CQl9CiYjNDM7CX0KIAogCWlmIChmbGFncyAmYW1wOyBUSVBDX05PVElGWV9MSU5LX1VQKSB7CiAJCXRpcGNfbW9uX3BlZXJfdXAobmV0LCBub2RlLCBiZWFyZXJfaWQpOwpAQCAtNTY0LDYgJiM0Mzs2NDQsOSBAQCBzdHJ1Y3QgdGlwY19ub2RlICp0aXBjX25vZGVfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGFkZHIsIHU4ICpwZWVyX2lkLAogCUlOSVRfTElTVF9IRUFEKCZhbXA7bi0mZ3Q7bGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtuLSZndDtwdWJsX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7bi0mZ3Q7Y29ubl9za3MpOwomIzQzOwlJTklUX1dPUksoJmFtcDtuLSZndDt3b3JrLCB0aXBjX25vZGVfZGlzdF9idWxrKTsKJiM0MzsJYXRvbWljX3NldCgmYW1wO24tJmd0O3dvcmtfc2NoZWR1bGVkLCAwKTsKJiM0MzsJYXRvbWljX3NldCgmYW1wO24tJmd0O2ZpbmFsaXplZCwgMCk7CiAJc2tiX3F1ZXVlX2hlYWRfaW5pdCgmYW1wO24tJmd0O2JjX2VudHJ5Lm5hbWVkcSk7CiAJc2tiX3F1ZXVlX2hlYWRfaW5pdCgmYW1wO24tJmd0O2JjX2VudHJ5LmlucHV0cTEpOwogCV9fc2tiX3F1ZXVlX2hlYWRfaW5pdCgmYW1wO24tJmd0O2JjX2VudHJ5LmFycnZxKTsKQEAgLTY1Myw2ICYjNDM7NzM2LDIxIEBAIHZvaWQgdGlwY19ub2RlX3N0b3Aoc3RydWN0IG5ldCAqbmV0KQogCXNwaW5fdW5sb2NrX2JoKCZhbXA7dG4tJmd0O25vZGVfbGlzdF9sb2NrKTsKIH0KIAomIzQzO3ZvaWQgdGlwY19ub2RlX3dha2V1cChzdHJ1Y3QgbmV0ICpuZXQpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobmV0KTsKJiM0MzsJc3RydWN0IHRpcGNfbm9kZSAqbm9kZTsKJiM0MzsKJiM0MzsJcmN1X3JlYWRfbG9jaygpOwomIzQzOwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShub2RlLCAmYW1wO3RuLSZndDtub2RlX2xpc3QsIGxpc3QpIHsKJiM0MzsJCWlmIChhdG9taWNfcmVhZCgmYW1wO25vZGUtJmd0O3dvcmtfc2NoZWR1bGVkKSkgewomIzQzOwkJCWF0b21pY19zZXQoJmFtcDtub2RlLSZndDtmaW5hbGl6ZWQsIDEpOwomIzQzOwkJCXdha2VfdXBfdmFyKCZhbXA7bm9kZS0mZ3Q7ZmluYWxpemVkKTsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwlyY3VfcmVhZF91bmxvY2soKTsKJiM0Mzt9CiYjNDM7CiB2b2lkIHRpcGNfbm9kZV9zdWJzY3JpYmUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbGlzdF9oZWFkICpzdWJzY3IsIHUzMiBhZGRyKQogewogCXN0cnVjdCB0aXBjX25vZGUgKm47CkBAIC04MDEsNiAmIzQzOzg5OSw3IEBAIHN0YXRpYyBib29sIHRpcGNfbm9kZV9jbGVhbnVwKHN0cnVjdCB0aXBjX25vZGUgKnBlZXIpCiBzdGF0aWMgdm9pZCB0aXBjX25vZGVfdGltZW91dChzdHJ1Y3QgdGltZXJfbGlzdCAqdCkKIHsKIAlzdHJ1Y3QgdGlwY19ub2RlICpuID0gdGltZXJfY29udGFpbmVyX29mKG4sIHQsIHRpbWVyKTsKJiM0MzsJc3RydWN0IHRpcGNfbmV0ICp0biA9IHRpcGNfbmV0KG4tJmd0O25ldCk7CiAJc3RydWN0IHRpcGNfbGlua19lbnRyeSAqbGU7CiAJc3RydWN0IHNrX2J1ZmZfaGVhZCB4bWl0cTsKIAlpbnQgcmVtYWlucyA9IG4tJmd0O2xpbmtfY250OwpAQCAtODE0LDYgJiM0Mzs5MTMsMTEgQEAgc3RhdGljIHZvaWQgdGlwY19ub2RlX3RpbWVvdXQoc3RydWN0IHRpbWVyX2xpc3QgKnQpCiAJCXJldHVybjsKIAl9CiAKJiM0MzsJaWYgKGF0b21pY19yZWFkKCZhbXA7dG4tJmd0O2ZpbmFsaXplZCkgJmFtcDsmYW1wOyBhdG9taWNfcmVhZCgmYW1wO24tJmd0O3dvcmtfc2NoZWR1bGVkKSkgewomIzQzOwkJYXRvbWljX3NldCgmYW1wO24tJmd0O2ZpbmFsaXplZCwgMSk7CiYjNDM7CQl3YWtlX3VwX3ZhcigmYW1wO24tJmd0O2ZpbmFsaXplZCk7CiYjNDM7CX0KJiM0MzsKICNpZmRlZiBDT05GSUdfVElQQ19DUllQVE8KIAkvKiBUYWtlIGFueSBjcnlwdG8ga2V5IHJlbGF0ZWQgYWN0aW9ucyBmaXJzdCAqLwogCXRpcGNfY3J5cHRvX3RpbWVvdXQobi0mZ3Q7Y3J5cHRvX3J4KTsKZGlmZiAtLWdpdCBhL25ldC90aXBjL25vZGUuaCBiL25ldC90aXBjL25vZGUuaAppbmRleCAxNTRhNWJiYjBkMjlkLi5jN2JjM2JjMDUzMjg1IDEwMDY0NAotLS0gYS9uZXQvdGlwYy9ub2RlLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvbm9kZS5oCkBAIC03NSw2ICYjNDM7NzUsNyBAQCBlbnVtIHsKICNkZWZpbmUgSU5WQUxJRF9CRUFSRVJfSUQgLTEKIAogdm9pZCB0aXBjX25vZGVfc3RvcChzdHJ1Y3QgbmV0ICpuZXQpOwomIzQzO3ZvaWQgdGlwY19ub2RlX3dha2V1cChzdHJ1Y3QgbmV0ICpuZXQpOwogYm9vbCB0aXBjX25vZGVfZ2V0X2lkKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGFkZHIsIHU4ICppZCk7CiB1MzIgdGlwY19ub2RlX2dldF9hZGRyKHN0cnVjdCB0aXBjX25vZGUgKm5vZGUpOwogY2hhciAqdGlwY19ub2RlX2dldF9pZF9zdHIoc3RydWN0IHRpcGNfbm9kZSAqbm9kZSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE5OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5NzMKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVElQQyBQYXRjaCBmb3IgdGhlIExpbnV4IEtlcm5lbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgcG9raW5nIGFyb3VuZCBpbiB0aGUgVElQQyBzdWJzeXN0ZW0gb2YgdGhlIExpbnV4IGtlcm5lbC4gSXQgdG91Y2hlcyBxdWl0ZSBhIGZldyBmaWxlczogYGNvcmUuY2AsIGBjb3JlLmhgLCBgbmFtZV9kaXN0ci5jYCwgYG5hbWVfZGlzdHIuaGAsIGBuYW1lX3RhYmxlLmNgLCBgbmV0LmNgLCBgbm9kZS5jYCwgYW5kIGBub2RlLmhgLiBTZWVtcyBsaWtlIGEgcHJldHR5IHNpZ25pZmljYW50IGFyZWEgb2YgdGhlIGNvZGUuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSByaWdodCBpbiBhbmQgdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGFjdHVhbGx5IGNoYW5naW5nLiBSaWdodCBvZmYgdGhlIGJhdCwgaXQgbG9va3MgbGlrZSB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSB3b3JrcXVldWUgc3BlY2lmaWNhbGx5IGZvciBlZmZpY2llbnRseSBkaXN0cmlidXRpbmcgcHVibGljYXRpb25zIGFjcm9zcyB0aGUgY2x1c3RlciBzY29wZSwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEl0IGFsc28gYXBwZWFycyB3ZSYjMzk7cmUgYWRkaW5nIHNvbWUgYXRvbWljIHZhcmlhYmxlcywgYG5vZGVfd3FfY291bnRgIGFuZCBgZmluYWxpemVkYCwgdG8gdGhlIGB0aXBjX25ldGAgc3RydWN0dXJlLiBUaGUgY2hhbmdlIHRvIGB0aXBjX25hbWVkX25vZGVfdXBgIHRvIHJldHVybiBhbiBpbnRlZ2VyIGluc3RlYWQgb2Ygdm9pZCBpbW1lZGlhdGVseSByYWlzZXMgbXkgZXllYnJvd3Mg4oCTIHRoYXQmIzM5O3Mgb2Z0ZW4gYSBzaWduYWwgb2YgYSBiZWhhdmlvcmFsIGNoYW5nZSBvciBlcnJvciByZXBvcnRpbmcgYmVpbmcgYWRkZWQuIFdlIGhhdmUgYSBuZXcgZnVuY3Rpb24sIGB0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZWAsIHdoaWNoIGNvdWxkIGJlIHRpZWQgdG8gdGhlIHdvcmtxdWV1ZS4gQWxzbywgdGhlIG1vZGlmaWNhdGlvbnMgdG8gYHRpcGNfbmFtZXRibF9wdWJsaXNoYCB0byBtYW5hZ2UgYHByb3RvY29sX3R5cGVgIGFuZCByZXNlcnZlIGFuIGVudHJ5IGZvciB0aGUgbm9kZSBzdGF0ZSBzZXJ2aWNlIHR5cGUgYXJlIG5vdGFibGUuIFBsdXMsIGEgbmV3IHdvcmsgZnVuY3Rpb24sIGB0aXBjX25vZGVfZGlzdF9idWxrYCwgaXMgYmVpbmcgYWRkZWQsIGFsc28gaW4gYG5vZGUuY2AuIFRoZSBjaGFuZ2VzIHRvIGB0aXBjX25vZGVfd3JpdGVfdW5sb2NrYCBpbmRpY2F0ZSB0aGF0IHRoZSB3b3JrcXVldWUgaXMgdHJpZ2dlcmVkIGlmIGB0aXBjX25hbWVkX25vZGVfdXBgIHJlcG9ydHMgYSBwb3NpdGl2ZSB2YWx1ZS4gQW5kIGZpbmFsbHksIHdlIGhhdmUgYSBuZXcgZnVuY3Rpb24sIGB0aXBjX25vZGVfd2FrZXVwYC4KCkFscmlnaHQsIHB1dHRpbmcgaXQgYWxsIHRvZ2V0aGVyLCB0aGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgVElQQyBpbXBsZW1lbnRhdGlvbi4gQW5kIGdpdmVuIHRoZSBuYXR1cmUgb2YgVElQQywgd2hpY2ggaXMgYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBzb21lIHNlcmlvdXMgZnV6emluZy4gU2VjdXJpdHkgaXMgcGFyYW1vdW50LCBhbmQgdGhlc2UgdHlwZXMgb2YgY2hhbmdlcyBhcmUgcHJpbWUgdGFyZ2V0cyBmb3IgdnVsbmVyYWJpbGl0eSBkaXNjb3ZlcnkuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhvc2UgQ09ORklHIG9wdGlvbnMuIEkgcmVtZW1iZXIgVElQQyBpcyBjb250cm9sbGVkIGJ5IGBDT05GSUdfVElQQ2AuIExldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGluIGBuZXQvdGlwYy9LY29uZmlnYCB0byBiZSBzdXJlIEkgaGF2ZSB0aGUgd2hvbGUgcGljdHVyZSBiZWZvcmUgZ29pbmcgYW55IGZ1cnRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTk6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRJUEMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdGlwYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL0tjb25maWctNS1cbm5ldC90aXBjL0tjb25maWc6NjptZW51Y29uZmlnIFRJUENcbm5ldC90aXBjL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBUSVBDIFByb3RvY29sXCYjMzQ7XG4tLVxubmV0L3RpcGMvS2NvbmZpZy0yMy1cbm5ldC90aXBjL0tjb25maWc6MjQ6Y29uZmlnIFRJUENfTUVESUFfSUJcbm5ldC90aXBjL0tjb25maWctMjUtXHRib29sIFwmIzM0O0luZmluaUJhbmQgbWVkaWEgdHlwZSBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3RpcGMvS2NvbmZpZy0yOS1cdCAgSVAtb3Zlci1JbmZpbmlCYW5kIGRldmljZXMuXG5uZXQvdGlwYy9LY29uZmlnOjMwOmNvbmZpZyBUSVBDX01FRElBX1VEUFxubmV0L3RpcGMvS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7SVAvVURQIG1lZGlhIHR5cGUgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC90aXBjL0tjb25maWctMzctXG5uZXQvdGlwYy9LY29uZmlnOjM4OmNvbmZpZyBUSVBDX0NSWVBUT1xubmV0L3RpcGMvS2NvbmZpZy0zOS1cdGJvb2wgXCYjMzQ7VElQQyBlbmNyeXB0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvdGlwYy9LY29uZmlnLTUyLVxubmV0L3RpcGMvS2NvbmZpZzo1Mzpjb25maWcgVElQQ19ESUFHXG5uZXQvdGlwYy9LY29uZmlnLTU0LVx0dHJpc3RhdGUgXCYjMzQ7VElQQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTk6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTE0MwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZToKCioqQ2hlY2tpbmcgdGhlIFRJUEMgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gaXQuIGBDT05GSUdfVElQQ2AgaXMgY2xlYXJseSB0aGUgY2VudHJhbCBjb25maWd1cmF0aW9uIG9wdGlvbiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhlcmUsIHRoYXQmIzM5O3Mgb2J2aW91cy4gTm93IHRoZSBjcnVjaWFsIHN0ZXAgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgaXRzIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMsIG9wdGlvbnMsIG9yIGV2ZW4gb3RoZXIgbW9kdWxlcyBuZWVkIHRvIGJlIGVuYWJsZWQgb3IgYXJlIGFmZmVjdGVkIGlmIGBDT05GSUdfVElQQ2AgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4gVGhpcyBpcyB3aGVyZSB0aGUgZWZmaWNpZW5jeSBvZiBteSB3b3JrZmxvdyBjb21lcyBpbiwgSSBjYW7igJl0IHNwZW5kIHRpbWUgb24gdGhlIGJhc2ljcyDigJMgSSYjMzk7bSBsb29raW5nIGZvciB0aGUgbm9uLW9idmlvdXMgcmVsYXRpb25zaGlwcywgYW55IHBvdGVudGlhbCBjb25mbGljdHMsIGFuZCB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMgZm9yIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byBpbW1lZGlhdGVseSB1bmRlcnN0YW5kIHRoZSBlbnRpcmUgbGFuZHNjYXBlLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgY29ubmVjdGVkIHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE5OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdGlwYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL0tjb25maWc9Nj1tZW51Y29uZmlnIFRJUENcbm5ldC90aXBjL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBUSVBDIFByb3RvY29sXCYjMzQ7XG5uZXQvdGlwYy9LY29uZmlnOjg6XHRkZXBlbmRzIG9uIElORVRcbm5ldC90aXBjL0tjb25maWctOS1cdGhlbHBcbi0tXG5uZXQvdGlwYy9LY29uZmlnPTI0PWNvbmZpZyBUSVBDX01FRElBX0lCXG5uZXQvdGlwYy9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtJbmZpbmlCYW5kIG1lZGlhIHR5cGUgc3VwcG9ydFwmIzM0O1xubmV0L3RpcGMvS2NvbmZpZzoyNjpcdGRlcGVuZHMgb24gVElQQyBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORF9JUE9JQlxubmV0L3RpcGMvS2NvbmZpZy0yNy1cdGhlbHBcbi0tXG5uZXQvdGlwYy9LY29uZmlnPTMwPWNvbmZpZyBUSVBDX01FRElBX1VEUFxubmV0L3RpcGMvS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7SVAvVURQIG1lZGlhIHR5cGUgc3VwcG9ydFwmIzM0O1xubmV0L3RpcGMvS2NvbmZpZzozMjpcdGRlcGVuZHMgb24gVElQQ1xubmV0L3RpcGMvS2NvbmZpZy0zMy1cdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuLS1cbm5ldC90aXBjL0tjb25maWc9Mzg9Y29uZmlnIFRJUENfQ1JZUFRPXG5uZXQvdGlwYy9LY29uZmlnLTM5LVx0Ym9vbCBcJiMzNDtUSVBDIGVuY3J5cHRpb24gc3VwcG9ydFwmIzM0O1xubmV0L3RpcGMvS2NvbmZpZzo0MDpcdGRlcGVuZHMgb24gVElQQ1xubmV0L3RpcGMvS2NvbmZpZy00MS1cdHNlbGVjdCBDUllQVE9cbi0tXG5uZXQvdGlwYy9LY29uZmlnPTUzPWNvbmZpZyBUSVBDX0RJQUdcbm5ldC90aXBjL0tjb25maWctNTQtXHR0cmlzdGF0ZSBcJiMzNDtUSVBDOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbm5ldC90aXBjL0tjb25maWc6NTU6XHRkZXBlbmRzIG9uIFRJUENcbm5ldC90aXBjL0tjb25maWctNTYtXHRkZWZhdWx0IHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxOToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NzY3CgkJCQkJCQlvdXRwdXQ6IDY5CgkJCQkJCQl0aG91Z2h0czogNDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVElQQyBDb25maWd1cmF0aW9uIGZvciBGb2N1cyBTeW1ib2xzKioKCk9rYXksIHNvIGBUSVBDYCBkZXBlbmRzIG9uIGBJTkVUYCwgdGhhdCYjMzk7cyBvdXIgc3RhcnRpbmcgcG9pbnQuIFdlIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbi4gTG9va2luZyBhdCB0aGUgcGF0Y2gsIHRoZSBjb2RlIG1vZGlmaWVzIGEgYnVuY2ggb2YgZnVuY3Rpb25zLiBOb3csIHdoaWNoIG9uZXMgYXJlIGtleT8KClRoZSBwYXRjaCBzZWVtcyB0byBiZSB0b3VjaGluZyBgdGlwY19pbml0X25ldGAsIGB0aXBjX2V4aXRfbmV0YCwgYG5hbWVkX2Rpc3RyaWJ1dGVgLCBgdGlwY19uYW1lZF9kaXN0cmlidXRlYCwgYHRpcGNfbmFtZWRfbm9kZV91cGAsIGB0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZWAsIGB0aXBjX25hbWV0YmxfcHVibGlzaGAsIGB0aXBjX25hbWV0Ymxfd2l0aGRyYXdgLCBgdGlwY19uZXRfZmluYWxpemVgLCBgdGlwY19ub2RlX2Rvd25gLCBgdGlwY19ub2RlX2Rpc3RfYnVsa2AsIGB0aXBjX25vZGVfY2FuY2VsX3dvcmtgLCBgdGlwY19ub2RlX3dyaXRlX3VubG9ja2AsIGB0aXBjX25vZGVfY3JlYXRlYCwgYHRpcGNfbm9kZV93YWtldXBgLCBhbmQgYHRpcGNfbm9kZV90aW1lb3V0YC4gVGhhdCYjMzk7cyBhIGxvdCwgYnV0IHdlIGNhbiBkZWZpbml0ZWx5IG5hcnJvdyBpdCBkb3duLgoKTGV0JiMzOTtzIGZvY3VzIG9uIHRoZSBmdW5jdGlvbnMgSSBzdXNwZWN0IGFyZSBtb3N0IGNlbnRyYWwgdG8gdGhlIGNoYW5nZXM6IGB0aXBjX25hbWVkX25vZGVfdXBgLCBgdGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGVgLCBgdGlwY19uYW1ldGJsX3B1Ymxpc2hgLCBgdGlwY19uYW1ldGJsX3dpdGhkcmF3YCwgYHRpcGNfbm9kZV9kaXN0X2J1bGtgLCBhbmQgYHRpcGNfbm9kZV93YWtldXBgLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIOKAkyBhcmUgdGhlc2UgZnVuY3Rpb25zIHN0YXRpYyBvciBleHBvcnRlZD8gTGV0JiMzOTtzIGNoZWNrLiBBaGEsIGB0aXBjX25hbWVkX25vZGVfdXBgLCBgdGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGVgLCBgdGlwY19uYW1ldGJsX3B1Ymxpc2hgLCBgdGlwY19uYW1ldGJsX3dpdGhkcmF3YCwgYW5kIGB0aXBjX25vZGVfd2FrZXVwYCBhcmUgZ2xvYmFsLCB3aGljaCBpcyB3aGF0IHdlIG5lZWQgdG8gZm9jdXMgb24uIGB0aXBjX25vZGVfZGlzdF9idWxrYCBpcyAqc3RhdGljKiwgc28gaXQmIzM5O3Mgbm90IGdvaW5nIHRvIGJlIGEgZ29vZCBzeW1ib2wuCgpOb3csIGxldCYjMzk7cyBnbyBjaGVjayB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzOiBgbmV0L3RpcGMvbmFtZV9kaXN0ci5jYCBhbmQgYG5ldC90aXBjL25vZGUuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTk6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGlwY19uYW1lZF9ub2RlX3VwfHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlfHRpcGNfbmFtZXRibF9wdWJsaXNofHRpcGNfbmFtZXRibF93aXRoZHJhd3x0aXBjX25vZGVfd2FrZXVwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL25hbWVfZGlzdHIuYz0yMDg9c3RhdGljIGludCB0aXBjX25hbWVkX2Rpc3RyaWJ1dGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUpXG4tLVxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTIzMS0vKipcbm5ldC90aXBjL25hbWVfZGlzdHIuYzoyMzI6ICogdGlwY19uYW1lZF9ub2RlX3VwIC0gdGVsbCBzcGVjaWZpZWQgbm9kZSBhYm91dCBhbGwgcHVibGljYXRpb25zIGJ5IHRoaXMgbm9kZVxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTIzMy0gKiBAbmV0OiB0aGUgYXNzb2NpYXRlZCBuZXR3b3JrIG5hbWVzcGFjZVxuLS1cbm5ldC90aXBjL25hbWVfZGlzdHIuYy0yMzYtICovXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmM6MjM3OmludCB0aXBjX25hbWVkX25vZGVfdXAoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUsIHUxNiBjYXBhYmlsaXRpZXMpXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmMtMjM4LXtcbi0tXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmMtMjQ5LVx0ICogICAgdGVhcmRvd24uXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmM6MjUwOlx0ICogMi4gT3IgdGlwY19uZXRfZmluYWxpemUoKSAtLS1cdTAwM2UgdGlwY19uYW1ldGJsX3B1Ymxpc2goKSBoYXMgZmFpbGVkXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmMtMjUxLVx0ICogICAgdG8gaW5zZXJ0IG5vZGUgc2VsZiBhZGRyZXNzIHB1YmxpY2F0aW9uIGludG8gbnQtXHUwMDNlY2x1c3Rlcl9zY29wZVxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTI1Mi1cdCAqICAgIGR1ZSB0byBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlLlxubmV0L3RpcGMvbmFtZV9kaXN0ci5jOjI1MzpcdCAqIDMuIE9yIHRpcGNfbmV0X2ZpbmFsaXplKCkgLS0tXHUwMDNlIHRpcGNfbmFtZXRibF9wdWJsaXNoKCkgaGFzIG5vdFxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTI1NC1cdCAqICAgIGV4ZWN1dGVkIHlldC5cbi0tXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmMtMjY1LS8qKlxubmV0L3RpcGMvbmFtZV9kaXN0ci5jOjI2NjogKiB0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZSAtIGRpc3RyaWJ1dGUgYWxsIHB1YmxpY2F0aW9ucyB0byBzcGVjaWZpZWQgbm9kZVxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTI2Ny0gKiBAbmV0OiB0aGUgYXNzb2NpYXRlZCBuZXR3b3JrIG5hbWVzcGFjZVxuLS1cbm5ldC90aXBjL25hbWVfZGlzdHIuYy0yNjktICovXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmM6MjcwOmludCB0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSlcbm5ldC90aXBjL25hbWVfZGlzdHIuYy0yNzEte1xuLS1cbm5ldC90aXBjL25hbWVfZGlzdHIuYy0yNzgtXHRyZWFkX3VubG9ja19iaChcdTAwMjZudC1cdTAwM2VjbHVzdGVyX3Njb3BlX2xvY2spO1xubmV0L3RpcGMvbmFtZV9kaXN0ci5jOjI3OTpcdC8qIHRpcGNfbmV0X2ZpbmFsaXplKCkgLS0tXHUwMDNlIHRpcGNfbmFtZXRibF9wdWJsaXNoKCkgaGFzIGZhaWxlZCB0byBpbnNlcnRcbm5ldC90aXBjL25hbWVfZGlzdHIuYy0yODAtXHQgKiBub2RlIHNlbGYgYWRkcmVzcyBwdWJsaWNhdGlvbiBpbnRvIG50LVx1MDAzZWNsdXN0ZXJfc2NvcGUgZHVlIHRvIG1lbW9yeVxuLS1cbm5ldC90aXBjL25hbWVfZGlzdHIuYy0yOTEtXHRcdFx0ICAgVElQQ19OT0RFX1NUQVRFLCB0bi1cdTAwM2Vub2RlX2FkZHIsIHRuLVx1MDAzZW5vZGVfYWRkcik7XG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmM6MjkyOlx0XHRpZiAoIXRpcGNfbmFtZXRibF9wdWJsaXNoKG5ldCwgXHUwMDI2dWEsIFx1MDAyNnNrLCB0bi1cdTAwM2Vub2RlX2FkZHIpKVxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTI5My1cdFx0XHRyZXR1cm4gLUVOT0JVRlM7XG4tLVxubmV0L3RpcGMvbmFtZV9kaXN0ci5oPTcxPXN0cnVjdCBza19idWZmICp0aXBjX25hbWVkX3dpdGhkcmF3KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHB1YmxpY2F0aW9uICpwdWJsKTtcbm5ldC90aXBjL25hbWVfZGlzdHIuaDo3MjppbnQgdGlwY19uYW1lZF9ub2RlX3VwKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlLCB1MTYgY2FwYWJpbGl0aWVzKTtcbm5ldC90aXBjL25hbWVfZGlzdHIuaDo3MzppbnQgdGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUpO1xubmV0L3RpcGMvbmFtZV9kaXN0ci5oLTc0LXZvaWQgdGlwY19uYW1lZF9yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpuYW1lZHEsXG4tLVxubmV0L3RpcGMvbmFtZV90YWJsZS5jPTczMj12b2lkIHRpcGNfbmFtZXRibF9idWlsZF9ncm91cChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX2dyb3VwICpncnAsXG4tLVxubmV0L3RpcGMvbmFtZV90YWJsZS5jLTc1OS1cbm5ldC90aXBjL25hbWVfdGFibGUuYzo3NjA6LyogdGlwY19uYW1ldGJsX3B1Ymxpc2ggLSBhZGQgc2VydmljZSBiaW5kaW5nIHRvIG5hbWUgdGFibGVcbm5ldC90aXBjL25hbWVfdGFibGUuYy03NjEtICovXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmM6NzYyOnN0cnVjdCBwdWJsaWNhdGlvbiAqdGlwY19uYW1ldGJsX3B1Ymxpc2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGlwY191YWRkciAqdWEsXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmMtNzYzLVx0XHRcdFx0XHQgc3RydWN0IHRpcGNfc29ja2V0X2FkZHIgKnNrLCB1MzIga2V5KVxuLS1cbm5ldC90aXBjL25hbWVfdGFibGUuYy04MTItLyoqXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmM6ODEzOiAqIHRpcGNfbmFtZXRibF93aXRoZHJhdyAtIHdpdGhkcmF3IGEgc2VydmljZSBiaW5kaW5nXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmMtODE0LSAqIEBuZXQ6IG5ldHdvcmsgbmFtZXNwYWNlXG4tLVxubmV0L3RpcGMvbmFtZV90YWJsZS5jLTgxOC0gKi9cbm5ldC90aXBjL25hbWVfdGFibGUuYzo4MTk6dm9pZCB0aXBjX25hbWV0Ymxfd2l0aGRyYXcoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGlwY191YWRkciAqdWEsXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmMtODIwLVx0XHRcdCAgIHN0cnVjdCB0aXBjX3NvY2tldF9hZGRyICpzaywgdTMyIGtleSlcbi0tXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmg9MTI2PXZvaWQgdGlwY19uYW1ldGJsX2J1aWxkX2dyb3VwKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfZ3JvdXAgKmdycCxcbm5ldC90aXBjL25hbWVfdGFibGUuaC0xMjctXHRcdFx0ICAgICAgc3RydWN0IHRpcGNfdWFkZHIgKnVhKTtcbm5ldC90aXBjL25hbWVfdGFibGUuaDoxMjg6c3RydWN0IHB1YmxpY2F0aW9uICp0aXBjX25hbWV0YmxfcHVibGlzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX3VhZGRyICp1YSxcbm5ldC90aXBjL25hbWVfdGFibGUuaC0xMjktXHRcdFx0XHRcdCBzdHJ1Y3QgdGlwY19zb2NrZXRfYWRkciAqc2ssIHUzMiBrZXkpO1xubmV0L3RpcGMvbmFtZV90YWJsZS5oOjEzMDp2b2lkIHRpcGNfbmFtZXRibF93aXRoZHJhdyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX3VhZGRyICp1YSxcbm5ldC90aXBjL25hbWVfdGFibGUuaC0xMzEtXHRcdFx0ICAgc3RydWN0IHRpcGNfc29ja2V0X2FkZHIgKnNrLCB1MzIga2V5KTtcbi0tXG5uZXQvdGlwYy9uZXQuYz0xMjY9c3RhdGljIHZvaWQgdGlwY19uZXRfZmluYWxpemUoc3RydWN0IG5ldCAqbmV0LCB1MzIgYWRkcilcbi0tXG5uZXQvdGlwYy9uZXQuYy0xNDAtXHR0aXBjX21vbl9yZWluaXRfc2VsZihuZXQpO1xubmV0L3RpcGMvbmV0LmM6MTQxOlx0dGlwY19uYW1ldGJsX3B1Ymxpc2gobmV0LCBcdTAwMjZ1YSwgXHUwMDI2c2ssIGFkZHIpO1xubmV0L3RpcGMvbmV0LmMtMTQyLVx0YXRvbWljX3NldChcdTAwMjZ0bi1cdTAwM2VmaW5hbGl6ZWQsIDEpO1xuLS1cbm5ldC90aXBjL25ldC5jLTE0NS1cdCAqL1xubmV0L3RpcGMvbmV0LmM6MTQ2Olx0dGlwY19ub2RlX3dha2V1cChuZXQpO1xubmV0L3RpcGMvbmV0LmMtMTQ3LX1cbi0tXG5uZXQvdGlwYy9ub2RlLmM9NDEwPXN0YXRpYyB2b2lkIHRpcGNfbm9kZV9kaXN0X2J1bGsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC90aXBjL25vZGUuYy00MjMtXG5uZXQvdGlwYy9ub2RlLmM6NDI0Olx0aWYgKHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlKG5vZGUtXHUwMDNlbmV0LCBub2RlLVx1MDAzZWFkZHIpIFx1MDAzYyAwKVxubmV0L3RpcGMvbm9kZS5jLTQyNS1cdFx0dGlwY19ub2RlX2Rvd24obm9kZSk7XG4tLVxubmV0L3RpcGMvbm9kZS5jPTQ1NT1zdGF0aWMgdm9pZCB0aXBjX25vZGVfd3JpdGVfdW5sb2NrKHN0cnVjdCB0aXBjX25vZGUgKm4pXG4tLVxubmV0L3RpcGMvbm9kZS5jLTQ5MS1cbm5ldC90aXBjL25vZGUuYzo0OTI6XHRcdHJjID0gdGlwY19uYW1lZF9ub2RlX3VwKG5ldCwgbm9kZSwgbi1cdTAwM2VjYXBhYmlsaXRpZXMpO1xubmV0L3RpcGMvbm9kZS5jLTQ5My1cdFx0LyogRGVmZXIgYnVsayBkaXN0cmlidXRpb24gdG8gd29yayBxdWV1ZSAqL1xuLS1cbm5ldC90aXBjL25vZGUuYy01MTEtXHRcdHRpcGNfbW9uX3BlZXJfdXAobmV0LCBub2RlLCBiZWFyZXJfaWQpO1xubmV0L3RpcGMvbm9kZS5jOjUxMjpcdFx0dGlwY19uYW1ldGJsX3B1Ymxpc2gobmV0LCBcdTAwMjZ1YSwgXHUwMDI2c2ssIHNrLnJlZik7XG5uZXQvdGlwYy9ub2RlLmMtNTEzLVx0fVxuLS1cbm5ldC90aXBjL25vZGUuYy01MTUtXHRcdHRpcGNfbW9uX3BlZXJfZG93bihuZXQsIG5vZGUsIGJlYXJlcl9pZCk7XG5uZXQvdGlwYy9ub2RlLmM6NTE2Olx0XHR0aXBjX25hbWV0Ymxfd2l0aGRyYXcobmV0LCBcdTAwMjZ1YSwgXHUwMDI2c2ssIHNrLnJlZik7XG5uZXQvdGlwYy9ub2RlLmMtNTE3LVx0fVxuLS1cbm5ldC90aXBjL25vZGUuYz03Mjg9dm9pZCB0aXBjX25vZGVfc3RvcChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L3RpcGMvbm9kZS5jLTczOC1cbm5ldC90aXBjL25vZGUuYzo3Mzk6dm9pZCB0aXBjX25vZGVfd2FrZXVwKHN0cnVjdCBuZXQgKm5ldClcbm5ldC90aXBjL25vZGUuYy03NDAte1xuLS1cbm5ldC90aXBjL25vZGUuaD03Nz12b2lkIHRpcGNfbm9kZV9zdG9wKHN0cnVjdCBuZXQgKm5ldCk7XG5uZXQvdGlwYy9ub2RlLmg6Nzg6dm9pZCB0aXBjX25vZGVfd2FrZXVwKHN0cnVjdCBuZXQgKm5ldCk7XG5uZXQvdGlwYy9ub2RlLmgtNzktYm9vbCB0aXBjX25vZGVfZ2V0X2lkKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGFkZHIsIHU4ICppZCk7XG4tLVxubmV0L3RpcGMvc29ja2V0LmM9MjkwNz1zdGF0aWMgaW50IHRpcGNfc2tfcHVibGlzaChzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCB0aXBjX3VhZGRyICp1YSlcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yOTIxLVx0c2thZGRyLm5vZGUgPSB0aXBjX293bl9hZGRyKG5ldCk7XG5uZXQvdGlwYy9zb2NrZXQuYzoyOTIyOlx0cCA9IHRpcGNfbmFtZXRibF9wdWJsaXNoKG5ldCwgdWEsIFx1MDAyNnNrYWRkciwga2V5KTtcbm5ldC90aXBjL3NvY2tldC5jLTI5MjMtXHRpZiAodW5saWtlbHkoIXApKVxuLS1cbm5ldC90aXBjL3NvY2tldC5jPTI5MzI9c3RhdGljIGludCB0aXBjX3NrX3dpdGhkcmF3KHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgc3RydWN0IHRpcGNfdWFkZHIgKnVhKVxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTI5NDItXHRcdFx0XHQgICBwLVx1MDAzZXNyLnR5cGUsIHAtXHUwMDNlc3IubG93ZXIsIHAtXHUwMDNlc3IudXBwZXIpO1xubmV0L3RpcGMvc29ja2V0LmM6Mjk0MzpcdFx0XHR0aXBjX25hbWV0Ymxfd2l0aGRyYXcobmV0LCBcdTAwMjZfdWEsIFx1MDAyNnAtXHUwMDNlc2ssIHAtXHUwMDNla2V5KTtcbm5ldC90aXBjL3NvY2tldC5jLTI5NDQtXHRcdFx0Y29udGludWU7XG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMjk1NC1cdFx0XHRicmVhaztcbm5ldC90aXBjL3NvY2tldC5jOjI5NTU6XHRcdHRpcGNfbmFtZXRibF93aXRoZHJhdyhuZXQsIHVhLCBcdTAwMjZwLVx1MDAzZXNrLCBwLVx1MDAzZWtleSk7XG5uZXQvdGlwYy9zb2NrZXQuYy0yOTU2LVx0XHRyYyA9IDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTk6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMzMTgKCQkJCQkJCW91dHB1dDogMTQ1CgkJCQkJCQl0aG91Z2h0czogMjI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IEFzc2Vzc21lbnQ6IFRJUEMgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgYXNzb2NpYXRlZCBzeW1ib2xzLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdvcnRoIHB1cnN1aW5nIHdpdGggZnV6emluZy4gVGhlIGtleSBmdW5jdGlvbnMgdG8gdGFyZ2V0IGFyZTogYHRpcGNfbmFtZWRfbm9kZV91cGAsIGB0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZWAsIGB0aXBjX25hbWV0YmxfcHVibGlzaGAsIGB0aXBjX25hbWV0Ymxfd2l0aGRyYXdgLCBhbmQgYHRpcGNfbm9kZV93YWtldXBgLiBUaGV5JiMzOTtyZSBhbGwgZXhwb3J0ZWQsIHNvIHRoYXQgbWFrZXMgdGhpbmdzIHN0cmFpZ2h0Zm9yd2FyZCBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS4KCkkgbmVlZGVkIHRvIGNvbmZpcm0gdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24gYW5kIGluaXRpYWxseSBJIHRob3VnaHQgaXQgd2FzIGp1c3QgYFRJUENgLCBidXQgSSB3YW50ZWQgdG8gbWFrZSBzdXJlIHRoZXJlIHdlcmVuJiMzOTt0IGFueSBvdGhlciBkZXBlbmRlbmNpZXMgdGhhdCBJIHdhcyBtaXNzaW5nLiBJdCBsb29rcyBsaWtlIGBDT05GSUdfVElQQ2AgaXMgdGhlIHByaW1hcnkgb25lLCBhbmQgdGhhbmtmdWxseSBpdCBjYW4gYmUgYnVpbHQtaW4sIHdoaWNoIGlzIHdoYXQgd2UgdXN1YWxseSB3YW50IGZvciBzeXprYWxsZXIuCgpJIGRpZCBhIHNlY29uZCBwYXNzIHRocm91Z2ggdGhlIHBhdGNoIHRvIHNlZSBpZiBJIGhhZCBtaXNzZWQgYW55dGhpbmcuIFRoZXJlJiMzOTtzIGEgYCNpZmRlZiBDT05GSUdfVElQQ19DUllQVE9gIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBidXQgdGhlIHBhdGNoIGl0c2VsZiBkb2VzbiYjMzk7dCBzZWVtIHRvIGRlcGVuZCBvbiBpdC4gU28sIHllYWgsIGl0IGxvb2tzIGxpa2UgYFRJUENgIGFsb25lIGlzIHN1ZmZpY2llbnQgZm9yIHRoaXMgb25lLgoKQWxyaWdodCwgd2l0aCB0aGF0IGNvbmZpcm1lZCwgSSB0aGluayB3ZSYjMzk7cmUgZ29vZCB0byBjYWxsIGBzZXQtcmVzdWx0c2AgYW5kIG1vdmUgZm9yd2FyZCB3aXRoIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE5OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtUSVBDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGlwY19uYW1lZF9ub2RlX3VwJiMzNDssCiAgICAmIzM0O3RpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlJiMzNDssCiAgICAmIzM0O3RpcGNfbmFtZXRibF9wdWJsaXNoJiMzNDssCiAgICAmIzM0O3RpcGNfbmFtZXRibF93aXRoZHJhdyYjMzQ7LAogICAgJiMzNDt0aXBjX25vZGVfd2FrZXVwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSB3b3JrcXVldWUgZm9yIGJ1bGsgZGlzdHJpYnV0aW9uIG9mIGNsdXN0ZXIgc2NvcGUgcHVibGljYXRpb25zIGluIFRJUEMsIG1vZGlmeWluZyBjb3JlIHByb3RvY29sIGxvZ2ljIHN1Y2ggYXMgbm9kZSBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBuYW1lIHRhYmxlIHB1Ymxpc2hpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgVElQQyBzdWJzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0aXBjX25hbWVkX25vZGVfdXAmIzM0OywKICAgICYjMzQ7dGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGUmIzM0OywKICAgICYjMzQ7dGlwY19uYW1ldGJsX3B1Ymxpc2gmIzM0OywKICAgICYjMzQ7dGlwY19uYW1ldGJsX3dpdGhkcmF3JiMzNDssCiAgICAmIzM0O3RpcGNfbm9kZV93YWtldXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHdvcmtxdWV1ZSBmb3IgYnVsayBkaXN0cmlidXRpb24gb2YgY2x1c3RlciBzY29wZSBwdWJsaWNhdGlvbnMgaW4gVElQQywgbW9kaWZ5aW5nIGNvcmUgcHJvdG9jb2wgbG9naWMgc3VjaCBhcyBub2RlIHN0YXRlIG1hbmFnZW1lbnQgYW5kIG5hbWUgdGFibGUgcHVibGlzaGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBUSVBDIHN1YnN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE5OjI5OjMzLjcyMTI0MTMyNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MjcwNzQ2Nzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRJUENcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0aXBjX25hbWVkX25vZGVfdXBcIixcbiAgICBcInRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlXCIsXG4gICAgXCJ0aXBjX25hbWV0YmxfcHVibGlzaFwiLFxuICAgIFwidGlwY19uYW1ldGJsX3dpdGhkcmF3XCIsXG4gICAgXCJ0aXBjX25vZGVfd2FrZXVwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHdvcmtxdWV1ZSBmb3IgYnVsayBkaXN0cmlidXRpb24gb2YgY2x1c3RlciBzY29wZSBwdWJsaWNhdGlvbnMgaW4gVElQQywgbW9kaWZ5aW5nIGNvcmUgcHJvdG9jb2wgbG9naWMgc3VjaCBhcyBub2RlIHN0YXRlIG1hbmFnZW1lbnQgYW5kIG5hbWUgdGFibGUgcHVibGlzaGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBUSVBDIHN1YnN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTk6Mjk6MzMuNzIxMjQ2Nzk0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzQ0NjM0NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5ZTFmYWY3MjExNjg3NGIzNjFiY2RkYzY4NDQ4ZGIwNjEyNzljYzMwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDMxIDE5OjI5OjMzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC90aXBjL2NvcmUuYyBiL25ldC90aXBjL2NvcmUuY1xcbmluZGV4IDMxNTk3NWMzYmU4MTguLjFlMWZlNzhjYzRlZTQgMTAwNjQ0XFxuLS0tIGEvbmV0L3RpcGMvY29yZS5jXFxuKysrIGIvbmV0L3RpcGMvY29yZS5jXFxuQEAgLTYxLDYgKzYxLDggQEAgc3RhdGljIGludCBfX25ldF9pbml0IHRpcGNfaW5pdF9uZXQoc3RydWN0IG5ldCAqbmV0KVxcbiBcXHR0bi1cXHUwMDNldHJpYWxfYWRkciA9IDA7XFxuIFxcdHRuLVxcdTAwM2VhZGRyX3RyaWFsX2VuZCA9IDA7XFxuIFxcdHRuLVxcdTAwM2VjYXBhYmlsaXRpZXMgPSBUSVBDX05PREVfQ0FQQUJJTElUSUVTO1xcbitcXHRhdG9taWNfc2V0KFxcdTAwMjZ0bi1cXHUwMDNlbm9kZV93cV9jb3VudCwgMCk7XFxuK1xcdGF0b21pY19zZXQoXFx1MDAyNnRuLVxcdTAwM2VmaW5hbGl6ZWQsIDApO1xcbiBcXHRJTklUX1dPUksoXFx1MDAyNnRuLVxcdTAwM2V3b3JrLCB0aXBjX25ldF9maW5hbGl6ZV93b3JrKTtcXG4gXFx0bWVtc2V0KHRuLVxcdTAwM2Vub2RlX2lkLCAwLCBzaXplb2YodG4tXFx1MDAzZW5vZGVfaWQpKTtcXG4gXFx0bWVtc2V0KHRuLVxcdTAwM2Vub2RlX2lkX3N0cmluZywgMCwgc2l6ZW9mKHRuLVxcdTAwM2Vub2RlX2lkX3N0cmluZykpO1xcbkBAIC0xMTksNiArMTIxLDcgQEAgc3RhdGljIHZvaWQgX19uZXRfZXhpdCB0aXBjX2V4aXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcXG4gI2lmZGVmIENPTkZJR19USVBDX0NSWVBUT1xcbiBcXHR0aXBjX2NyeXB0b19zdG9wKFxcdTAwMjZ0aXBjX25ldChuZXQpLVxcdTAwM2VjcnlwdG9fdHgpO1xcbiAjZW5kaWZcXG4rXFx0d2FpdF92YXJfZXZlbnQoXFx1MDAyNnRuLVxcdTAwM2Vub2RlX3dxX2NvdW50LCAhYXRvbWljX3JlYWQoXFx1MDAyNnRuLVxcdTAwM2Vub2RlX3dxX2NvdW50KSk7XFxuIFxcdHdhaXRfdmFyX2V2ZW50KFxcdTAwMjZ0bi1cXHUwMDNld3FfY291bnQsIGF0b21pY19yZWFkKFxcdTAwMjZ0bi1cXHUwMDNld3FfY291bnQpID09IDApO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvdGlwYy9jb3JlLmggYi9uZXQvdGlwYy9jb3JlLmhcXG5pbmRleCA5Y2U1ZjlmZjZjYzAzLi5iZTMzNWNlODMzODlhIDEwMDY0NFxcbi0tLSBhL25ldC90aXBjL2NvcmUuaFxcbisrKyBiL25ldC90aXBjL2NvcmUuaFxcbkBAIC0xNDUsNiArMTQ1LDEwIEBAIHN0cnVjdCB0aXBjX25ldCB7XFxuIFxcdHN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrO1xcbiBcXHQvKiBUaGUgbnVtYmVycyBvZiB3b3JrIHF1ZXVlcyBpbiBzY2hlZHVsZSAqL1xcbiBcXHRhdG9taWNfdCB3cV9jb3VudDtcXG4rXFx0LyogVGhlIG51bWJlcnMgb2Ygd29ya3Mgb2YgY3JlYXRlZCBub2RlcyBpbiBzY2hlZHVsZSAqL1xcbitcXHRhdG9taWNfdCBub2RlX3dxX2NvdW50O1xcbitcXHQvKiBmbGFnIHRvIHdha2UgdXAgc2NoZWR1bGVkIHdvcmtzIG9mIGNyZWF0ZWQgbm9kZXMgKi9cXG4rXFx0YXRvbWljX3QgZmluYWxpemVkO1xcbiB9O1xcbiBcXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgdGlwY19uZXQgKnRpcGNfbmV0KHN0cnVjdCBuZXQgKm5ldClcXG5kaWZmIC0tZ2l0IGEvbmV0L3RpcGMvbmFtZV9kaXN0ci5jIGIvbmV0L3RpcGMvbmFtZV9kaXN0ci5jXFxuaW5kZXggYmE0ZjQ5MDZlMTNiNy4uYzhlMjg0OTczNTZlZiAxMDA2NDRcXG4tLS0gYS9uZXQvdGlwYy9uYW1lX2Rpc3RyLmNcXG4rKysgYi9uZXQvdGlwYy9uYW1lX2Rpc3RyLmNcXG5AQCAtMTQ3LDggKzE0Nyw4IEBAIHN0cnVjdCBza19idWZmICp0aXBjX25hbWVkX3dpdGhkcmF3KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHB1YmxpY2F0aW9uICpwKVxcbiAgKiBAcGxzOiBsaW5rZWQgbGlzdCBvZiBwdWJsaWNhdGlvbiBpdGVtcyB0byBiZSBwYWNrZWQgaW50byBidWZmZXIgY2hhaW5cXG4gICogQHNlcW5vOiBzZXF1ZW5jZSBudW1iZXIgZm9yIHRoaXMgbWVzc2FnZVxcbiAgKi9cXG4tc3RhdGljIHZvaWQgbmFtZWRfZGlzdHJpYnV0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsXFxuLVxcdFxcdFxcdCAgICAgdTMyIGRub2RlLCBzdHJ1Y3QgbGlzdF9oZWFkICpwbHMsIHUxNiBzZXFubylcXG4rc3RhdGljIGludCBuYW1lZF9kaXN0cmlidXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCxcXG4rXFx0XFx0XFx0ICAgIHUzMiBkbm9kZSwgc3RydWN0IGxpc3RfaGVhZCAqcGxzLCB1MTYgc2Vxbm8pXFxuIHtcXG4gXFx0c3RydWN0IHB1YmxpY2F0aW9uICpwdWJsO1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gTlVMTDtcXG5AQCAtMTY0LDggKzE2NCw5IEBAIHN0YXRpYyB2b2lkIG5hbWVkX2Rpc3RyaWJ1dGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0LFxcbiBcXHRcXHRcXHRza2IgPSBuYW1lZF9wcmVwYXJlX2J1ZihuZXQsIFBVQkxJQ0FUSU9OLCBtc2dfcmVtLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRkbm9kZSk7XFxuIFxcdFxcdFxcdGlmICghc2tiKSB7XFxuK1xcdFxcdFxcdFxcdF9fc2tiX3F1ZXVlX3B1cmdlKGxpc3QpO1xcbiBcXHRcXHRcXHRcXHRwcl93YXJuKFxcXCJCdWxrIHB1YmxpY2F0aW9uIGZhaWx1cmVcXFxcblxcXCIpO1xcbi1cXHRcXHRcXHRcXHRyZXR1cm47XFxuK1xcdFxcdFxcdFxcdHJldHVybiAxO1xcbiBcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdGhkciA9IGJ1Zl9tc2coc2tiKTtcXG4gXFx0XFx0XFx0bXNnX3NldF9iY19hY2tfaW52YWxpZChoZHIsIHRydWUpO1xcbkBAIC0xOTUsMTUgKzE5NiwxNiBAQCBzdGF0aWMgdm9pZCBuYW1lZF9kaXN0cmlidXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCxcXG4gXFx0aGRyID0gYnVmX21zZyhza2JfcGVla190YWlsKGxpc3QpKTtcXG4gXFx0bXNnX3NldF9sYXN0X2J1bGsoaGRyKTtcXG4gXFx0bXNnX3NldF9uYW1lZF9zZXFubyhoZHIsIHNlcW5vKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbiB9XFxuIFxcbiAvKipcXG4tICogdGlwY19uYW1lZF9ub2RlX3VwIC0gdGVsbCBzcGVjaWZpZWQgbm9kZSBhYm91dCBhbGwgcHVibGljYXRpb25zIGJ5IHRoaXMgbm9kZVxcbisgKiB0aXBjX25hbWVkX2Rpc3RyaWJ1dGUgLSBkaXN0cmlidXRlIGFsbCBwdWJsaWNhdGlvbnMgdG8gc3BlY2lmaWVkIG5vZGVcXG4gICogQG5ldDogdGhlIGFzc29jaWF0ZWQgbmV0d29yayBuYW1lc3BhY2VcXG4gICogQGRub2RlOiBkZXN0aW5hdGlvbiBub2RlXFxuLSAqIEBjYXBhYmlsaXRpZXM6IHBlZXIgbm9kZSdzIGNhcGFiaWxpdGllc1xcbiAgKi9cXG4tdm9pZCB0aXBjX25hbWVkX25vZGVfdXAoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUsIHUxNiBjYXBhYmlsaXRpZXMpXFxuK3N0YXRpYyBpbnQgdGlwY19uYW1lZF9kaXN0cmlidXRlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlKVxcbiB7XFxuIFxcdHN0cnVjdCBuYW1lX3RhYmxlICpudCA9IHRpcGNfbmFtZV90YWJsZShuZXQpO1xcbiBcXHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobmV0KTtcXG5AQCAtMjEyLDE1ICsyMTQsODYgQEAgdm9pZCB0aXBjX25hbWVkX25vZGVfdXAoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUsIHUxNiBjYXBhYmlsaXRpZXMpXFxuIFxcbiBcXHRfX3NrYl9xdWV1ZV9oZWFkX2luaXQoXFx1MDAyNmhlYWQpO1xcbiBcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnRuLVxcdTAwM2VuYW1ldGJsX2xvY2spO1xcbi1cXHRpZiAoIShjYXBhYmlsaXRpZXMgXFx1MDAyNiBUSVBDX05BTUVEX0JDQVNUKSlcXG4tXFx0XFx0bnQtXFx1MDAzZXJjX2Rlc3RzKys7XFxuIFxcdHNlcW5vID0gbnQtXFx1MDAzZXNuZF9ueHQ7XFxuIFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ0bi1cXHUwMDNlbmFtZXRibF9sb2NrKTtcXG4gXFxuIFxcdHJlYWRfbG9ja19iaChcXHUwMDI2bnQtXFx1MDAzZWNsdXN0ZXJfc2NvcGVfbG9jayk7XFxuLVxcdG5hbWVkX2Rpc3RyaWJ1dGUobmV0LCBcXHUwMDI2aGVhZCwgZG5vZGUsIFxcdTAwMjZudC1cXHUwMDNlY2x1c3Rlcl9zY29wZSwgc2Vxbm8pO1xcbitcXHRpZiAobmFtZWRfZGlzdHJpYnV0ZShuZXQsIFxcdTAwMjZoZWFkLCBkbm9kZSwgXFx1MDAyNm50LVxcdTAwM2VjbHVzdGVyX3Njb3BlLCBzZXFubykpIHtcXG4rXFx0XFx0cmVhZF91bmxvY2tfYmgoXFx1MDAyNm50LVxcdTAwM2VjbHVzdGVyX3Njb3BlX2xvY2spO1xcbitcXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxuK1xcdH1cXG4gXFx0dGlwY19ub2RlX3htaXQobmV0LCBcXHUwMDI2aGVhZCwgZG5vZGUsIDApO1xcbiBcXHRyZWFkX3VubG9ja19iaChcXHUwMDI2bnQtXFx1MDAzZWNsdXN0ZXJfc2NvcGVfbG9jayk7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rLyoqXFxuKyAqIHRpcGNfbmFtZWRfbm9kZV91cCAtIHRlbGwgc3BlY2lmaWVkIG5vZGUgYWJvdXQgYWxsIHB1YmxpY2F0aW9ucyBieSB0aGlzIG5vZGVcXG4rICogQG5ldDogdGhlIGFzc29jaWF0ZWQgbmV0d29yayBuYW1lc3BhY2VcXG4rICogQGRub2RlOiBkZXN0aW5hdGlvbiBub2RlXFxuKyAqIEBjYXBhYmlsaXRpZXM6IHBlZXIgbm9kZSdzIGNhcGFiaWxpdGllc1xcbisgKi9cXG4raW50IHRpcGNfbmFtZWRfbm9kZV91cChzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSwgdTE2IGNhcGFiaWxpdGllcylcXG4re1xcbitcXHRzdHJ1Y3QgbmFtZV90YWJsZSAqbnQgPSB0aXBjX25hbWVfdGFibGUobmV0KTtcXG4rXFx0c3RydWN0IHRpcGNfbmV0ICp0biA9IHRpcGNfbmV0KG5ldCk7XFxuK1xcbitcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnRuLVxcdTAwM2VuYW1ldGJsX2xvY2spO1xcbitcXHRpZiAoIShjYXBhYmlsaXRpZXMgXFx1MDAyNiBUSVBDX05BTUVEX0JDQVNUKSlcXG4rXFx0XFx0bnQtXFx1MDAzZXJjX2Rlc3RzKys7XFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ0bi1cXHUwMDNlbmFtZXRibF9sb2NrKTtcXG4rXFxuK1xcdHJlYWRfbG9ja19iaChcXHUwMDI2bnQtXFx1MDAzZWNsdXN0ZXJfc2NvcGVfbG9jayk7XFxuK1xcdC8qIDEuIHRpcGNfbmV0X2ZpbmFsaXplX3dvcmsoKSBpcyBub3Qgc2NoZWR1bGVkIGJlY2F1c2Ugb2YgbmFtZXNwYWNlXFxuK1xcdCAqICAgIHRlYXJkb3duLlxcbitcXHQgKiAyLiBPciB0aXBjX25ldF9maW5hbGl6ZSgpIC0tLVxcdTAwM2UgdGlwY19uYW1ldGJsX3B1Ymxpc2goKSBoYXMgZmFpbGVkXFxuK1xcdCAqICAgIHRvIGluc2VydCBub2RlIHNlbGYgYWRkcmVzcyBwdWJsaWNhdGlvbiBpbnRvIG50LVxcdTAwM2VjbHVzdGVyX3Njb3BlXFxuK1xcdCAqICAgIGR1ZSB0byBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlLlxcbitcXHQgKiAzLiBPciB0aXBjX25ldF9maW5hbGl6ZSgpIC0tLVxcdTAwM2UgdGlwY19uYW1ldGJsX3B1Ymxpc2goKSBoYXMgbm90XFxuK1xcdCAqICAgIGV4ZWN1dGVkIHlldC5cXG4rXFx0ICovXFxuK1xcdGlmICh1bmxpa2VseShsaXN0X2VtcHR5KFxcdTAwMjZudC1cXHUwMDNlY2x1c3Rlcl9zY29wZSkpKSB7XFxuK1xcdFxcdHJlYWRfdW5sb2NrX2JoKFxcdTAwMjZudC1cXHUwMDNlY2x1c3Rlcl9zY29wZV9sb2NrKTtcXG4rXFx0XFx0cmV0dXJuIDE7XFxuK1xcdH1cXG4rXFx0cmVhZF91bmxvY2tfYmgoXFx1MDAyNm50LVxcdTAwM2VjbHVzdGVyX3Njb3BlX2xvY2spO1xcbitcXG4rXFx0cmV0dXJuIHRpcGNfbmFtZWRfZGlzdHJpYnV0ZShuZXQsIGRub2RlKTtcXG4rfVxcbitcXG4rLyoqXFxuKyAqIHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlIC0gZGlzdHJpYnV0ZSBhbGwgcHVibGljYXRpb25zIHRvIHNwZWNpZmllZCBub2RlXFxuKyAqIEBuZXQ6IHRoZSBhc3NvY2lhdGVkIG5ldHdvcmsgbmFtZXNwYWNlXFxuKyAqIEBkbm9kZTogZGVzdGluYXRpb24gbm9kZVxcbisgKi9cXG4raW50IHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlKVxcbit7XFxuK1xcdHN0cnVjdCBuYW1lX3RhYmxlICpudCA9IHRpcGNfbmFtZV90YWJsZShuZXQpO1xcbitcXHRib29sIHJlaW5zZXJ0ID0gZmFsc2U7XFxuK1xcbitcXHRyZWFkX2xvY2tfYmgoXFx1MDAyNm50LVxcdTAwM2VjbHVzdGVyX3Njb3BlX2xvY2spO1xcbitcXHRpZiAodW5saWtlbHkobGlzdF9lbXB0eShcXHUwMDI2bnQtXFx1MDAzZWNsdXN0ZXJfc2NvcGUpKSlcXG4rXFx0XFx0cmVpbnNlcnQgPSB0cnVlO1xcbitcXHRyZWFkX3VubG9ja19iaChcXHUwMDI2bnQtXFx1MDAzZWNsdXN0ZXJfc2NvcGVfbG9jayk7XFxuK1xcdC8qIHRpcGNfbmV0X2ZpbmFsaXplKCkgLS0tXFx1MDAzZSB0aXBjX25hbWV0YmxfcHVibGlzaCgpIGhhcyBmYWlsZWQgdG8gaW5zZXJ0XFxuK1xcdCAqIG5vZGUgc2VsZiBhZGRyZXNzIHB1YmxpY2F0aW9uIGludG8gbnQtXFx1MDAzZWNsdXN0ZXJfc2NvcGUgZHVlIHRvIG1lbW9yeVxcbitcXHQgKiBhbGxvY2F0aW9uIGZhaWx1cmUuIFNvLCByZWluc2VydCB0aGlzIHB1YmxpY2F0aW9uLlxcbitcXHQgKi9cXG4rXFx0aWYgKHJlaW5zZXJ0KSB7XFxuK1xcdFxcdHN0cnVjdCB0aXBjX25ldCAqdG4gPSB0aXBjX25ldChuZXQpO1xcbitcXHRcXHRzdHJ1Y3QgdGlwY19zb2NrZXRfYWRkciBzaztcXG4rXFx0XFx0c3RydWN0IHRpcGNfdWFkZHIgdWE7XFxuK1xcbitcXHRcXHRzay5yZWYgPSAwO1xcbitcXHRcXHRzay5ub2RlID0gdG4tXFx1MDAzZW5vZGVfYWRkcjtcXG4rXFx0XFx0dGlwY191YWRkcihcXHUwMDI2dWEsIFRJUENfU0VSVklDRV9SQU5HRSwgVElQQ19DTFVTVEVSX1NDT1BFLFxcbitcXHRcXHRcXHQgICBUSVBDX05PREVfU1RBVEUsIHRuLVxcdTAwM2Vub2RlX2FkZHIsIHRuLVxcdTAwM2Vub2RlX2FkZHIpO1xcbitcXHRcXHRpZiAoIXRpcGNfbmFtZXRibF9wdWJsaXNoKG5ldCwgXFx1MDAyNnVhLCBcXHUwMDI2c2ssIHRuLVxcdTAwM2Vub2RlX2FkZHIpKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiB0aXBjX25hbWVkX2Rpc3RyaWJ1dGUobmV0LCBkbm9kZSk7XFxuIH1cXG4gXFxuIC8qKlxcbmRpZmYgLS1naXQgYS9uZXQvdGlwYy9uYW1lX2Rpc3RyLmggYi9uZXQvdGlwYy9uYW1lX2Rpc3RyLmhcXG5pbmRleCBjNjc3ZjZmMDgyZGZiLi5jYWRmNGU4YzNlNjZjIDEwMDY0NFxcbi0tLSBhL25ldC90aXBjL25hbWVfZGlzdHIuaFxcbisrKyBiL25ldC90aXBjL25hbWVfZGlzdHIuaFxcbkBAIC02OSw3ICs2OSw4IEBAIHN0cnVjdCBkaXN0cl9pdGVtIHtcXG4gXFxuIHN0cnVjdCBza19idWZmICp0aXBjX25hbWVkX3B1Ymxpc2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgcHVibGljYXRpb24gKnB1YmwpO1xcbiBzdHJ1Y3Qgc2tfYnVmZiAqdGlwY19uYW1lZF93aXRoZHJhdyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBwdWJsaWNhdGlvbiAqcHVibCk7XFxuLXZvaWQgdGlwY19uYW1lZF9ub2RlX3VwKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlLCB1MTYgY2FwYWJpbGl0aWVzKTtcXG4raW50IHRpcGNfbmFtZWRfbm9kZV91cChzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSwgdTE2IGNhcGFiaWxpdGllcyk7XFxuK2ludCB0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSk7XFxuIHZvaWQgdGlwY19uYW1lZF9yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpuYW1lZHEsXFxuIFxcdFxcdCAgICB1MTYgKnJjdl9ueHQsIGJvb2wgKm9wZW4pO1xcbiB2b2lkIHRpcGNfbmFtZWRfcmVpbml0KHN0cnVjdCBuZXQgKm5ldCk7XFxuZGlmZiAtLWdpdCBhL25ldC90aXBjL25hbWVfdGFibGUuYyBiL25ldC90aXBjL25hbWVfdGFibGUuY1xcbmluZGV4IDI1M2M3MmQxMzY2ZWIuLjZmZGEzNmFiMTc2NjkgMTAwNjQ0XFxuLS0tIGEvbmV0L3RpcGMvbmFtZV90YWJsZS5jXFxuKysrIGIvbmV0L3RpcGMvbmFtZV90YWJsZS5jXFxuQEAgLTc2MywyMSArNzYzLDQwIEBAIHN0cnVjdCBwdWJsaWNhdGlvbiAqdGlwY19uYW1ldGJsX3B1Ymxpc2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGlwY191YWRkciAqdWEsXFxuIFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgdGlwY19zb2NrZXRfYWRkciAqc2ssIHUzMiBrZXkpXFxuIHtcXG4gXFx0c3RydWN0IG5hbWVfdGFibGUgKm50ID0gdGlwY19uYW1lX3RhYmxlKG5ldCk7XFxuK1xcdHUzMiBtYXhfdXNlcl9wdWIgPSBUSVBDX01BWF9QVUJMIC0gMTtcXG4gXFx0c3RydWN0IHRpcGNfbmV0ICp0biA9IHRpcGNfbmV0KG5ldCk7XFxuIFxcdHN0cnVjdCBwdWJsaWNhdGlvbiAqcCA9IE5VTEw7XFxuIFxcdHN0cnVjdCBza19idWZmICpza2IgPSBOVUxMO1xcbitcXHRib29sIHByb3RvY29sX3R5cGUgPSBmYWxzZTtcXG4gXFx0dTMyIHJjX2Rlc3RzO1xcbiBcXG4rXFx0aWYgKHVhLVxcdTAwM2Vzci50eXBlID09IFRJUENfTk9ERV9TVEFURSB8fCB1YS1cXHUwMDNlc3IudHlwZSA9PSBUSVBDX0xJTktfU1RBVEUgfHxcXG4rXFx0ICAgIHVhLVxcdTAwM2Vzci50eXBlID09IFRJUENfVE9QX1NSVilcXG4rXFx0XFx0cHJvdG9jb2xfdHlwZSA9IHRydWU7XFxuK1xcbiBcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnRuLVxcdTAwM2VuYW1ldGJsX2xvY2spO1xcbitcXHRpZiAocHJvdG9jb2xfdHlwZSlcXG4rXFx0XFx0Z290byBpbnNlcnQ7XFxuIFxcbi1cXHRpZiAobnQtXFx1MDAzZWxvY2FsX3B1YmxfY291bnQgXFx1MDAzZT0gVElQQ19NQVhfUFVCTCkge1xcbi1cXHRcXHRwcl93YXJuKFxcXCJCaW5kIGZhaWxlZCwgbWF4IGxpbWl0ICV1IHJlYWNoZWRcXFxcblxcXCIsIFRJUENfTUFYX1BVQkwpO1xcbitcXHQvKiBSZXNlcnZlIG9uZSBlbnRyeSBmb3Igbm9kZSBzdGF0ZSBzZXJ2aWNlIHR5cGUgYmVjYXVzZSBpdCBoYXMgY2x1c3RlclxcbitcXHQgKiBzY29wZSBhbmQgaXQgaXMgZGlzdHJpYnV0ZWQgaW4gYnVsay4gU28sIHRoZSBtYXhpbXVtIG51bWJlciBvZiB1c2VyJ3NcXG4rXFx0ICogcHVibGljYXRpb25zIGlzIChUSVBDX01BWF9QVUJMIC0gMSkuXFxuK1xcdCAqL1xcbitcXHRpZiAobnQtXFx1MDAzZWxvY2FsX3B1YmxfY291bnQgXFx1MDAzZT0gbWF4X3VzZXJfcHViKSB7XFxuK1xcdFxcdHByX3dhcm4oXFxcIkJpbmQgZmFpbGVkLCBtYXggbGltaXQgJXUgcmVhY2hlZFxcXFxuXFxcIiwgbWF4X3VzZXJfcHViKTtcXG4gXFx0XFx0Z290byBleGl0O1xcbiBcXHR9XFxuIFxcbitpbnNlcnQ6XFxuIFxcdHAgPSB0aXBjX25hbWV0YmxfaW5zZXJ0X3B1YmwobmV0LCB1YSwgc2ssIGtleSk7XFxuIFxcdGlmIChwKSB7XFxuLVxcdFxcdG50LVxcdTAwM2Vsb2NhbF9wdWJsX2NvdW50Kys7XFxuK1xcdFxcdC8qIE5vdCBjb3VudCBub2RlIHN0YXRlLCBsaW5rIHN0YXRlIGFuZCB0b3BvbG9neSBzZXJ2ZXIgdHlwZXNcXG4rXFx0XFx0ICogc28gdGhhdCBtYXhpbXVtIG50LVxcdTAwM2Vsb2NhbF9wdWJsX2NvdW50IGRvZXMgbm90IHByZXZlbnRcXG4rXFx0XFx0ICogcHJvdG9jb2wgc2VydmljZSB0eXBlcyBmcm9tIGJlaW5nIGluc2VydGVkIGludG8gdGhlIG5hbWVcXG4rXFx0XFx0ICogdGFibGUuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAoIXByb3RvY29sX3R5cGUpXFxuK1xcdFxcdFxcdG50LVxcdTAwM2Vsb2NhbF9wdWJsX2NvdW50Kys7XFxuIFxcdFxcdHNrYiA9IHRpcGNfbmFtZWRfcHVibGlzaChuZXQsIHApO1xcbiBcXHR9XFxuIFxcdHJjX2Rlc3RzID0gbnQtXFx1MDAzZXJjX2Rlc3RzO1xcbkBAIC04MTAsNyArODI5LDEwIEBAIHZvaWQgdGlwY19uYW1ldGJsX3dpdGhkcmF3KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfdWFkZHIgKnVhLFxcbiBcXG4gXFx0cCA9IHRpcGNfbmFtZXRibF9yZW1vdmVfcHVibChuZXQsIHVhLCBzaywga2V5KTtcXG4gXFx0aWYgKHApIHtcXG4tXFx0XFx0bnQtXFx1MDAzZWxvY2FsX3B1YmxfY291bnQtLTtcXG4rXFx0XFx0aWYgKHAtXFx1MDAzZXNyLnR5cGUgIT0gVElQQ19OT0RFX1NUQVRFIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICBwLVxcdTAwM2Vzci50eXBlICE9IFRJUENfTElOS19TVEFURSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgcC1cXHUwMDNlc3IudHlwZSAhPSBUSVBDX1RPUF9TUlYpXFxuK1xcdFxcdFxcdG50LVxcdTAwM2Vsb2NhbF9wdWJsX2NvdW50LS07XFxuIFxcdFxcdHNrYiA9IHRpcGNfbmFtZWRfd2l0aGRyYXcobmV0LCBwKTtcXG4gXFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2cC1cXHUwMDNlYmluZGluZ19zb2NrKTtcXG4gXFx0XFx0a2ZyZWVfcmN1KHAsIHJjdSk7XFxuZGlmZiAtLWdpdCBhL25ldC90aXBjL25ldC5jIGIvbmV0L3RpcGMvbmV0LmNcXG5pbmRleCA3ZTY1ZDBiMGM0YThkLi43NWFjNGUzY2QwMWE4IDEwMDY0NFxcbi0tLSBhL25ldC90aXBjL25ldC5jXFxuKysrIGIvbmV0L3RpcGMvbmV0LmNcXG5AQCAtMTM5LDYgKzEzOSwxMSBAQCBzdGF0aWMgdm9pZCB0aXBjX25ldF9maW5hbGl6ZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBhZGRyKVxcbiBcXHR0aXBjX3NrX3JlaW5pdChuZXQpO1xcbiBcXHR0aXBjX21vbl9yZWluaXRfc2VsZihuZXQpO1xcbiBcXHR0aXBjX25hbWV0YmxfcHVibGlzaChuZXQsIFxcdTAwMjZ1YSwgXFx1MDAyNnNrLCBhZGRyKTtcXG4rXFx0YXRvbWljX3NldChcXHUwMDI2dG4tXFx1MDAzZWZpbmFsaXplZCwgMSk7XFxuK1xcdC8qIFdha2UgdXAgbm9kZXMgd2FpdGluZyBmb3IgZGlzdHJpYnV0aW5nIGJ1bGsgb2YgcHVibGljYXRpb25zXFxuK1xcdCAqIGlmIGFwcGxpY2FibGUuXFxuK1xcdCAqL1xcbitcXHR0aXBjX25vZGVfd2FrZXVwKG5ldCk7XFxuIH1cXG4gXFxuIHZvaWQgdGlwY19uZXRfZmluYWxpemVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZGlmZiAtLWdpdCBhL25ldC90aXBjL25vZGUuYyBiL25ldC90aXBjL25vZGUuY1xcbmluZGV4IDhlNGVmMjYzMGFlNGYuLjMzNDgxMmJkYWI3NjUgMTAwNjQ0XFxuLS0tIGEvbmV0L3RpcGMvbm9kZS5jXFxuKysrIGIvbmV0L3RpcGMvbm9kZS5jXFxuQEAgLTExMSw2ICsxMTEsOSBAQCBzdHJ1Y3QgdGlwY19iY2xpbmtfZW50cnkge1xcbiAgKiBAcGVlcl9uZXQ6IHBlZXIncyBuZXQgbmFtZXNwYWNlXFxuICAqIEBwZWVyX2hhc2hfbWl4OiBoYXNoIGZvciB0aGlzIHBlZXIgKEZJWE1FKVxcbiAgKiBAY3J5cHRvX3J4OiBSWCBjcnlwdG8gaGFuZGxlclxcbisgKiBAd29yazogd29yayBpdGVtIGZvciBidWxrIGRpc3RyaWJ1dGlvbiBvZiBjbHVzdGVyIHNjb3BlIHB1YmxpY2F0aW9uc1xcbisgKiBAd29ya19zY2hlZHVsZWQ6IGZsYWcgdG8gaW5kaWNhdGUgdGhlIHdvcmsgaGFzIGJlZW4gc2NoZWR1bGVkXFxuKyAqIEBmaW5hbGl6ZWQ6IGZsYWcgdG8gd2FrZSB1cCBzY2hlZHVsZWQgd29ya1xcbiAgKi9cXG4gc3RydWN0IHRpcGNfbm9kZSB7XFxuIFxcdHUzMiBhZGRyO1xcbkBAIC0xNDUsNiArMTQ4LDkgQEAgc3RydWN0IHRpcGNfbm9kZSB7XFxuICNpZmRlZiBDT05GSUdfVElQQ19DUllQVE9cXG4gXFx0c3RydWN0IHRpcGNfY3J5cHRvICpjcnlwdG9fcng7XFxuICNlbmRpZlxcbitcXHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yaztcXG4rXFx0YXRvbWljX3Qgd29ya19zY2hlZHVsZWQ7XFxuK1xcdGF0b21pY190IGZpbmFsaXplZDtcXG4gfTtcXG4gXFxuIC8qIE5vZGUgRlNNIHN0YXRlcyBhbmQgZXZlbnRzOlxcbkBAIC0zOTMsNiArMzk5LDU5IEBAIHN0YXRpYyB2b2lkIHRpcGNfbm9kZV93cml0ZV91bmxvY2tfZmFzdChzdHJ1Y3QgdGlwY19ub2RlICpuKVxcbiBcXHR3cml0ZV91bmxvY2tfYmgoXFx1MDAyNm4tXFx1MDAzZWxvY2spO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCB0aXBjX25vZGVfZG93bihzdHJ1Y3QgdGlwY19ub2RlICpuKVxcbit7XFxuK1xcdGludCBiZWFyZXJfaWQ7XFxuK1xcbitcXHRmb3IgKGJlYXJlcl9pZCA9IDA7IGJlYXJlcl9pZCBcXHUwMDNjIE1BWF9CRUFSRVJTOyBiZWFyZXJfaWQrKylcXG4rXFx0XFx0dGlwY19ub2RlX2xpbmtfZG93bihuLCBiZWFyZXJfaWQsIGZhbHNlKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgdGlwY19ub2RlX2Rpc3RfYnVsayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuK3tcXG4rXFx0c3RydWN0IHRpcGNfbm9kZSAqbm9kZSA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdGlwY19ub2RlLCB3b3JrKTtcXG4rXFx0c3RydWN0IHRpcGNfbmV0ICp0biA9IHRpcGNfbmV0KG5vZGUtXFx1MDAzZW5ldCk7XFxuK1xcbitcXHR3YWl0X3Zhcl9ldmVudChcXHUwMDI2bm9kZS1cXHUwMDNlZmluYWxpemVkLCBhdG9taWNfcmVhZChcXHUwMDI2bm9kZS1cXHUwMDNlZmluYWxpemVkKSk7XFxuK1xcbitcXHQvKiBub2RlIGlzIGRvd24gKi9cXG4rXFx0aWYgKCFhdG9taWNfcmVhZChcXHUwMDI2bm9kZS1cXHUwMDNld29ya19zY2hlZHVsZWQpKVxcbitcXHRcXHRnb3RvIGV4aXQ7XFxuK1xcbitcXHQvKiBTdG9wIHdha2luZyB1cCB3b3JrIGluIHRpcGNfbm9kZV90aW1lb3V0KCkgKi9cXG4rXFx0YXRvbWljX3NldChcXHUwMDI2bm9kZS1cXHUwMDNld29ya19zY2hlZHVsZWQsIDApO1xcbitcXG4rXFx0aWYgKHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlKG5vZGUtXFx1MDAzZW5ldCwgbm9kZS1cXHUwMDNlYWRkcikgXFx1MDAzYyAwKVxcbitcXHRcXHR0aXBjX25vZGVfZG93bihub2RlKTtcXG4rXFxuK2V4aXQ6XFxuK1xcdGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KFxcdTAwMjZ0bi1cXHUwMDNlbm9kZV93cV9jb3VudCkpXFxuK1xcdFxcdHdha2VfdXBfdmFyKFxcdTAwMjZ0bi1cXHUwMDNlbm9kZV93cV9jb3VudCk7XFxuK1xcbitcXHR0aXBjX25vZGVfcHV0KG5vZGUpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCB0aXBjX25vZGVfY2FuY2VsX3dvcmsoc3RydWN0IHRpcGNfbm9kZSAqbm9kZSlcXG4re1xcbitcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNm5vZGUtXFx1MDAzZXdvcmtfc2NoZWR1bGVkKSkge1xcbitcXHRcXHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobm9kZS1cXHUwMDNlbmV0KTtcXG4rXFxuK1xcdFxcdC8qIFdha2UgdXAgc2NoZWR1bGVkIHdvcmsgaWYgaXQgaXMgd2FpdGluZy4gKi9cXG4rXFx0XFx0aWYgKCFhdG9taWNfcmVhZChcXHUwMDI2bm9kZS1cXHUwMDNlZmluYWxpemVkKSkge1xcbitcXHRcXHRcXHRhdG9taWNfc2V0KFxcdTAwMjZub2RlLVxcdTAwM2V3b3JrX3NjaGVkdWxlZCwgMCk7XFxuK1xcdFxcdFxcdGF0b21pY19zZXQoXFx1MDAyNm5vZGUtXFx1MDAzZWZpbmFsaXplZCwgMSk7XFxuK1xcdFxcdFxcdHdha2VfdXBfdmFyKFxcdTAwMjZub2RlLVxcdTAwM2VmaW5hbGl6ZWQpO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHQvKiBXb3JrIGlzIHBlbmRpbmcgKi9cXG4rXFx0XFx0aWYgKGNhbmNlbF93b3JrKFxcdTAwMjZub2RlLVxcdTAwM2V3b3JrKSkge1xcbitcXHRcXHRcXHRpZiAoYXRvbWljX2RlY19hbmRfdGVzdChcXHUwMDI2dG4tXFx1MDAzZW5vZGVfd3FfY291bnQpKVxcbitcXHRcXHRcXHRcXHR3YWtlX3VwX3ZhcihcXHUwMDI2dG4tXFx1MDAzZW5vZGVfd3FfY291bnQpO1xcbitcXHRcXHRcXHR0aXBjX25vZGVfcHV0KG5vZGUpO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgdGlwY19ub2RlX3dyaXRlX3VubG9jayhzdHJ1Y3QgdGlwY19ub2RlICpuKVxcbiBcXHRfX3JlbGVhc2VzKG4tXFx1MDAzZWxvY2spXFxuIHtcXG5AQCAtNDIxLDExICs0ODAsMzIgQEAgc3RhdGljIHZvaWQgdGlwY19ub2RlX3dyaXRlX3VubG9jayhzdHJ1Y3QgdGlwY19ub2RlICpuKVxcbiBcXG4gXFx0d3JpdGVfdW5sb2NrX2JoKFxcdTAwMjZuLVxcdTAwM2Vsb2NrKTtcXG4gXFxuLVxcdGlmIChmbGFncyBcXHUwMDI2IFRJUENfTk9USUZZX05PREVfRE9XTilcXG4rXFx0aWYgKGZsYWdzIFxcdTAwMjYgVElQQ19OT1RJRllfTk9ERV9ET1dOKSB7XFxuIFxcdFxcdHRpcGNfcHVibF9ub3RpZnkobmV0LCBwdWJsX2xpc3QsIG5vZGUsIG4tXFx1MDAzZWNhcGFiaWxpdGllcyk7XFxuLVxcbi1cXHRpZiAoZmxhZ3MgXFx1MDAyNiBUSVBDX05PVElGWV9OT0RFX1VQKVxcbi1cXHRcXHR0aXBjX25hbWVkX25vZGVfdXAobmV0LCBub2RlLCBuLVxcdTAwM2VjYXBhYmlsaXRpZXMpO1xcbitcXHRcXHR0aXBjX25vZGVfY2FuY2VsX3dvcmsobik7XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChmbGFncyBcXHUwMDI2IFRJUENfTk9USUZZX05PREVfVVApIHtcXG4rXFx0XFx0c3RydWN0IHRpcGNfbmV0ICp0biA9IHRpcGNfbmV0KG5ldCk7XFxuK1xcdFxcdGludCByYyA9IDA7XFxuK1xcbitcXHRcXHRyYyA9IHRpcGNfbmFtZWRfbm9kZV91cChuZXQsIG5vZGUsIG4tXFx1MDAzZWNhcGFiaWxpdGllcyk7XFxuK1xcdFxcdC8qIERlZmVyIGJ1bGsgZGlzdHJpYnV0aW9uIHRvIHdvcmsgcXVldWUgKi9cXG4rXFx0XFx0aWYgKHJjIFxcdTAwM2UgMCkge1xcbitcXHRcXHRcXHRhdG9taWNfc2V0KFxcdTAwMjZuLVxcdTAwM2V3b3JrX3NjaGVkdWxlZCwgMSk7XFxuK1xcdFxcdFxcdGF0b21pY19pbmMoXFx1MDAyNnRuLVxcdTAwM2Vub2RlX3dxX2NvdW50KTtcXG4rXFx0XFx0XFx0dGlwY19ub2RlX2dldChuKTtcXG4rXFx0XFx0XFx0aWYgKCFzY2hlZHVsZV93b3JrKFxcdTAwMjZuLVxcdTAwM2V3b3JrKSkge1xcbitcXHRcXHRcXHRcXHRhdG9taWNfZGVjKFxcdTAwMjZ0bi1cXHUwMDNlbm9kZV93cV9jb3VudCk7XFxuK1xcdFxcdFxcdFxcdHRpcGNfbm9kZV9wdXQobik7XFxuK1xcdFxcdFxcdH1cXG4rXFx0XFx0fSBlbHNlIGlmIChyYyBcXHUwMDNjIDApIHtcXG4rXFx0XFx0XFx0LyogQnJpbmcgdGhlIG5vZGUgZG93biB0byBzdGFydCBvdmVyIGJ1bGsgZGlzdHJpYnV0aW9uXFxuK1xcdFxcdFxcdCAqIHdoZW4gdGhlIGZpcnN0IGxpbmsgaXMgdXAgYWdhaW4uXFxuK1xcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHR0aXBjX25vZGVfZG93bihuKTtcXG4rXFx0XFx0fVxcbitcXHR9XFxuIFxcbiBcXHRpZiAoZmxhZ3MgXFx1MDAyNiBUSVBDX05PVElGWV9MSU5LX1VQKSB7XFxuIFxcdFxcdHRpcGNfbW9uX3BlZXJfdXAobmV0LCBub2RlLCBiZWFyZXJfaWQpO1xcbkBAIC01NjQsNiArNjQ0LDkgQEAgc3RydWN0IHRpcGNfbm9kZSAqdGlwY19ub2RlX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBhZGRyLCB1OCAqcGVlcl9pZCxcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNm4tXFx1MDAzZWxpc3QpO1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2bi1cXHUwMDNlcHVibF9saXN0KTtcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNm4tXFx1MDAzZWNvbm5fc2tzKTtcXG4rXFx0SU5JVF9XT1JLKFxcdTAwMjZuLVxcdTAwM2V3b3JrLCB0aXBjX25vZGVfZGlzdF9idWxrKTtcXG4rXFx0YXRvbWljX3NldChcXHUwMDI2bi1cXHUwMDNld29ya19zY2hlZHVsZWQsIDApO1xcbitcXHRhdG9taWNfc2V0KFxcdTAwMjZuLVxcdTAwM2VmaW5hbGl6ZWQsIDApO1xcbiBcXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZuLVxcdTAwM2ViY19lbnRyeS5uYW1lZHEpO1xcbiBcXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZuLVxcdTAwM2ViY19lbnRyeS5pbnB1dHExKTtcXG4gXFx0X19za2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZuLVxcdTAwM2ViY19lbnRyeS5hcnJ2cSk7XFxuQEAgLTY1Myw2ICs3MzYsMjEgQEAgdm9pZCB0aXBjX25vZGVfc3RvcChzdHJ1Y3QgbmV0ICpuZXQpXFxuIFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ0bi1cXHUwMDNlbm9kZV9saXN0X2xvY2spO1xcbiB9XFxuIFxcbit2b2lkIHRpcGNfbm9kZV93YWtldXAoc3RydWN0IG5ldCAqbmV0KVxcbit7XFxuK1xcdHN0cnVjdCB0aXBjX25ldCAqdG4gPSB0aXBjX25ldChuZXQpO1xcbitcXHRzdHJ1Y3QgdGlwY19ub2RlICpub2RlO1xcbitcXG4rXFx0cmN1X3JlYWRfbG9jaygpO1xcbitcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShub2RlLCBcXHUwMDI2dG4tXFx1MDAzZW5vZGVfbGlzdCwgbGlzdCkge1xcbitcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNm5vZGUtXFx1MDAzZXdvcmtfc2NoZWR1bGVkKSkge1xcbitcXHRcXHRcXHRhdG9taWNfc2V0KFxcdTAwMjZub2RlLVxcdTAwM2VmaW5hbGl6ZWQsIDEpO1xcbitcXHRcXHRcXHR3YWtlX3VwX3ZhcihcXHUwMDI2bm9kZS1cXHUwMDNlZmluYWxpemVkKTtcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcdHJjdV9yZWFkX3VubG9jaygpO1xcbit9XFxuK1xcbiB2b2lkIHRpcGNfbm9kZV9zdWJzY3JpYmUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbGlzdF9oZWFkICpzdWJzY3IsIHUzMiBhZGRyKVxcbiB7XFxuIFxcdHN0cnVjdCB0aXBjX25vZGUgKm47XFxuQEAgLTgwMSw2ICs4OTksNyBAQCBzdGF0aWMgYm9vbCB0aXBjX25vZGVfY2xlYW51cChzdHJ1Y3QgdGlwY19ub2RlICpwZWVyKVxcbiBzdGF0aWMgdm9pZCB0aXBjX25vZGVfdGltZW91dChzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4ge1xcbiBcXHRzdHJ1Y3QgdGlwY19ub2RlICpuID0gdGltZXJfY29udGFpbmVyX29mKG4sIHQsIHRpbWVyKTtcXG4rXFx0c3RydWN0IHRpcGNfbmV0ICp0biA9IHRpcGNfbmV0KG4tXFx1MDAzZW5ldCk7XFxuIFxcdHN0cnVjdCB0aXBjX2xpbmtfZW50cnkgKmxlO1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHhtaXRxO1xcbiBcXHRpbnQgcmVtYWlucyA9IG4tXFx1MDAzZWxpbmtfY250O1xcbkBAIC04MTQsNiArOTEzLDExIEBAIHN0YXRpYyB2b2lkIHRpcGNfbm9kZV90aW1lb3V0KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFxuK1xcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2dG4tXFx1MDAzZWZpbmFsaXplZCkgXFx1MDAyNlxcdTAwMjYgYXRvbWljX3JlYWQoXFx1MDAyNm4tXFx1MDAzZXdvcmtfc2NoZWR1bGVkKSkge1xcbitcXHRcXHRhdG9taWNfc2V0KFxcdTAwMjZuLVxcdTAwM2VmaW5hbGl6ZWQsIDEpO1xcbitcXHRcXHR3YWtlX3VwX3ZhcihcXHUwMDI2bi1cXHUwMDNlZmluYWxpemVkKTtcXG4rXFx0fVxcbitcXG4gI2lmZGVmIENPTkZJR19USVBDX0NSWVBUT1xcbiBcXHQvKiBUYWtlIGFueSBjcnlwdG8ga2V5IHJlbGF0ZWQgYWN0aW9ucyBmaXJzdCAqL1xcbiBcXHR0aXBjX2NyeXB0b190aW1lb3V0KG4tXFx1MDAzZWNyeXB0b19yeCk7XFxuZGlmZiAtLWdpdCBhL25ldC90aXBjL25vZGUuaCBiL25ldC90aXBjL25vZGUuaFxcbmluZGV4IDE1NGE1YmJiMGQyOWQuLmM3YmMzYmMwNTMyODUgMTAwNjQ0XFxuLS0tIGEvbmV0L3RpcGMvbm9kZS5oXFxuKysrIGIvbmV0L3RpcGMvbm9kZS5oXFxuQEAgLTc1LDYgKzc1LDcgQEAgZW51bSB7XFxuICNkZWZpbmUgSU5WQUxJRF9CRUFSRVJfSUQgLTFcXG4gXFxuIHZvaWQgdGlwY19ub2RlX3N0b3Aoc3RydWN0IG5ldCAqbmV0KTtcXG4rdm9pZCB0aXBjX25vZGVfd2FrZXVwKHN0cnVjdCBuZXQgKm5ldCk7XFxuIGJvb2wgdGlwY19ub2RlX2dldF9pZChzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBhZGRyLCB1OCAqaWQpO1xcbiB1MzIgdGlwY19ub2RlX2dldF9hZGRyKHN0cnVjdCB0aXBjX25vZGUgKm5vZGUpO1xcbiBjaGFyICp0aXBjX25vZGVfZ2V0X2lkX3N0cihzdHJ1Y3QgdGlwY19ub2RlICpub2RlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTk6Mjk6MzQuMDk2MzY1MDg4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Mzg4OTU2MTMwODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVElQQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRpcGNfbmFtZWRfbm9kZV91cFwiLFxuICAgIFwidGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGVcIixcbiAgICBcInRpcGNfbmFtZXRibF9wdWJsaXNoXCIsXG4gICAgXCJ0aXBjX25hbWV0Ymxfd2l0aGRyYXdcIixcbiAgICBcInRpcGNfbm9kZV93YWtldXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgd29ya3F1ZXVlIGZvciBidWxrIGRpc3RyaWJ1dGlvbiBvZiBjbHVzdGVyIHNjb3BlIHB1YmxpY2F0aW9ucyBpbiBUSVBDLCBtb2RpZnlpbmcgY29yZSBwcm90b2NvbCBsb2dpYyBzdWNoIGFzIG5vZGUgc3RhdGUgbWFuYWdlbWVudCBhbmQgbmFtZSB0YWJsZSBwdWJsaXNoaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIFRJUEMgc3Vic3lzdGVtLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5ZTFmYWY3MjExNjg3NGIzNjFiY2RkYzY4NDQ4ZGIwNjEyNzljYzMwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMTk6Mjk6MzMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvdGlwYy9jb3JlLmMgYi9uZXQvdGlwYy9jb3JlLmNcbmluZGV4IDMxNTk3NWMzYmU4MTguLjFlMWZlNzhjYzRlZTQgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9jb3JlLmNcbisrKyBiL25ldC90aXBjL2NvcmUuY1xuQEAgLTYxLDYgKzYxLDggQEAgc3RhdGljIGludCBfX25ldF9pbml0IHRpcGNfaW5pdF9uZXQoc3RydWN0IG5ldCAqbmV0KVxuIFx0dG4tXHUwMDNldHJpYWxfYWRkciA9IDA7XG4gXHR0bi1cdTAwM2VhZGRyX3RyaWFsX2VuZCA9IDA7XG4gXHR0bi1cdTAwM2VjYXBhYmlsaXRpZXMgPSBUSVBDX05PREVfQ0FQQUJJTElUSUVTO1xuK1x0YXRvbWljX3NldChcdTAwMjZ0bi1cdTAwM2Vub2RlX3dxX2NvdW50LCAwKTtcbitcdGF0b21pY19zZXQoXHUwMDI2dG4tXHUwMDNlZmluYWxpemVkLCAwKTtcbiBcdElOSVRfV09SSyhcdTAwMjZ0bi1cdTAwM2V3b3JrLCB0aXBjX25ldF9maW5hbGl6ZV93b3JrKTtcbiBcdG1lbXNldCh0bi1cdTAwM2Vub2RlX2lkLCAwLCBzaXplb2YodG4tXHUwMDNlbm9kZV9pZCkpO1xuIFx0bWVtc2V0KHRuLVx1MDAzZW5vZGVfaWRfc3RyaW5nLCAwLCBzaXplb2YodG4tXHUwMDNlbm9kZV9pZF9zdHJpbmcpKTtcbkBAIC0xMTksNiArMTIxLDcgQEAgc3RhdGljIHZvaWQgX19uZXRfZXhpdCB0aXBjX2V4aXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcbiAjaWZkZWYgQ09ORklHX1RJUENfQ1JZUFRPXG4gXHR0aXBjX2NyeXB0b19zdG9wKFx1MDAyNnRpcGNfbmV0KG5ldCktXHUwMDNlY3J5cHRvX3R4KTtcbiAjZW5kaWZcbitcdHdhaXRfdmFyX2V2ZW50KFx1MDAyNnRuLVx1MDAzZW5vZGVfd3FfY291bnQsICFhdG9taWNfcmVhZChcdTAwMjZ0bi1cdTAwM2Vub2RlX3dxX2NvdW50KSk7XG4gXHR3YWl0X3Zhcl9ldmVudChcdTAwMjZ0bi1cdTAwM2V3cV9jb3VudCwgYXRvbWljX3JlYWQoXHUwMDI2dG4tXHUwMDNld3FfY291bnQpID09IDApO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvdGlwYy9jb3JlLmggYi9uZXQvdGlwYy9jb3JlLmhcbmluZGV4IDljZTVmOWZmNmNjMDMuLmJlMzM1Y2U4MzM4OWEgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9jb3JlLmhcbisrKyBiL25ldC90aXBjL2NvcmUuaFxuQEAgLTE0NSw2ICsxNDUsMTAgQEAgc3RydWN0IHRpcGNfbmV0IHtcbiBcdHN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrO1xuIFx0LyogVGhlIG51bWJlcnMgb2Ygd29yayBxdWV1ZXMgaW4gc2NoZWR1bGUgKi9cbiBcdGF0b21pY190IHdxX2NvdW50O1xuK1x0LyogVGhlIG51bWJlcnMgb2Ygd29ya3Mgb2YgY3JlYXRlZCBub2RlcyBpbiBzY2hlZHVsZSAqL1xuK1x0YXRvbWljX3Qgbm9kZV93cV9jb3VudDtcbitcdC8qIGZsYWcgdG8gd2FrZSB1cCBzY2hlZHVsZWQgd29ya3Mgb2YgY3JlYXRlZCBub2RlcyAqL1xuK1x0YXRvbWljX3QgZmluYWxpemVkO1xuIH07XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgdGlwY19uZXQgKnRpcGNfbmV0KHN0cnVjdCBuZXQgKm5ldClcbmRpZmYgLS1naXQgYS9uZXQvdGlwYy9uYW1lX2Rpc3RyLmMgYi9uZXQvdGlwYy9uYW1lX2Rpc3RyLmNcbmluZGV4IGJhNGY0OTA2ZTEzYjcuLmM4ZTI4NDk3MzU2ZWYgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9uYW1lX2Rpc3RyLmNcbisrKyBiL25ldC90aXBjL25hbWVfZGlzdHIuY1xuQEAgLTE0Nyw4ICsxNDcsOCBAQCBzdHJ1Y3Qgc2tfYnVmZiAqdGlwY19uYW1lZF93aXRoZHJhdyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBwdWJsaWNhdGlvbiAqcClcbiAgKiBAcGxzOiBsaW5rZWQgbGlzdCBvZiBwdWJsaWNhdGlvbiBpdGVtcyB0byBiZSBwYWNrZWQgaW50byBidWZmZXIgY2hhaW5cbiAgKiBAc2Vxbm86IHNlcXVlbmNlIG51bWJlciBmb3IgdGhpcyBtZXNzYWdlXG4gICovXG4tc3RhdGljIHZvaWQgbmFtZWRfZGlzdHJpYnV0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsXG4tXHRcdFx0ICAgICB1MzIgZG5vZGUsIHN0cnVjdCBsaXN0X2hlYWQgKnBscywgdTE2IHNlcW5vKVxuK3N0YXRpYyBpbnQgbmFtZWRfZGlzdHJpYnV0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsXG4rXHRcdFx0ICAgIHUzMiBkbm9kZSwgc3RydWN0IGxpc3RfaGVhZCAqcGxzLCB1MTYgc2Vxbm8pXG4ge1xuIFx0c3RydWN0IHB1YmxpY2F0aW9uICpwdWJsO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IE5VTEw7XG5AQCAtMTY0LDggKzE2NCw5IEBAIHN0YXRpYyB2b2lkIG5hbWVkX2Rpc3RyaWJ1dGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0LFxuIFx0XHRcdHNrYiA9IG5hbWVkX3ByZXBhcmVfYnVmKG5ldCwgUFVCTElDQVRJT04sIG1zZ19yZW0sXG4gXHRcdFx0XHRcdFx0ZG5vZGUpO1xuIFx0XHRcdGlmICghc2tiKSB7XG4rXHRcdFx0XHRfX3NrYl9xdWV1ZV9wdXJnZShsaXN0KTtcbiBcdFx0XHRcdHByX3dhcm4oXCJCdWxrIHB1YmxpY2F0aW9uIGZhaWx1cmVcXG5cIik7XG4tXHRcdFx0XHRyZXR1cm47XG4rXHRcdFx0XHRyZXR1cm4gMTtcbiBcdFx0XHR9XG4gXHRcdFx0aGRyID0gYnVmX21zZyhza2IpO1xuIFx0XHRcdG1zZ19zZXRfYmNfYWNrX2ludmFsaWQoaGRyLCB0cnVlKTtcbkBAIC0xOTUsMTUgKzE5NiwxNiBAQCBzdGF0aWMgdm9pZCBuYW1lZF9kaXN0cmlidXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCxcbiBcdGhkciA9IGJ1Zl9tc2coc2tiX3BlZWtfdGFpbChsaXN0KSk7XG4gXHRtc2dfc2V0X2xhc3RfYnVsayhoZHIpO1xuIFx0bXNnX3NldF9uYW1lZF9zZXFubyhoZHIsIHNlcW5vKTtcbitcbitcdHJldHVybiAwO1xuIH1cbiBcbiAvKipcbi0gKiB0aXBjX25hbWVkX25vZGVfdXAgLSB0ZWxsIHNwZWNpZmllZCBub2RlIGFib3V0IGFsbCBwdWJsaWNhdGlvbnMgYnkgdGhpcyBub2RlXG4rICogdGlwY19uYW1lZF9kaXN0cmlidXRlIC0gZGlzdHJpYnV0ZSBhbGwgcHVibGljYXRpb25zIHRvIHNwZWNpZmllZCBub2RlXG4gICogQG5ldDogdGhlIGFzc29jaWF0ZWQgbmV0d29yayBuYW1lc3BhY2VcbiAgKiBAZG5vZGU6IGRlc3RpbmF0aW9uIG5vZGVcbi0gKiBAY2FwYWJpbGl0aWVzOiBwZWVyIG5vZGUncyBjYXBhYmlsaXRpZXNcbiAgKi9cbi12b2lkIHRpcGNfbmFtZWRfbm9kZV91cChzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSwgdTE2IGNhcGFiaWxpdGllcylcbitzdGF0aWMgaW50IHRpcGNfbmFtZWRfZGlzdHJpYnV0ZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSlcbiB7XG4gXHRzdHJ1Y3QgbmFtZV90YWJsZSAqbnQgPSB0aXBjX25hbWVfdGFibGUobmV0KTtcbiBcdHN0cnVjdCB0aXBjX25ldCAqdG4gPSB0aXBjX25ldChuZXQpO1xuQEAgLTIxMiwxNSArMjE0LDg2IEBAIHZvaWQgdGlwY19uYW1lZF9ub2RlX3VwKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGRub2RlLCB1MTYgY2FwYWJpbGl0aWVzKVxuIFxuIFx0X19za2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNmhlYWQpO1xuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnRuLVx1MDAzZW5hbWV0YmxfbG9jayk7XG4tXHRpZiAoIShjYXBhYmlsaXRpZXMgXHUwMDI2IFRJUENfTkFNRURfQkNBU1QpKVxuLVx0XHRudC1cdTAwM2VyY19kZXN0cysrO1xuIFx0c2Vxbm8gPSBudC1cdTAwM2VzbmRfbnh0O1xuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dG4tXHUwMDNlbmFtZXRibF9sb2NrKTtcbiBcbiBcdHJlYWRfbG9ja19iaChcdTAwMjZudC1cdTAwM2VjbHVzdGVyX3Njb3BlX2xvY2spO1xuLVx0bmFtZWRfZGlzdHJpYnV0ZShuZXQsIFx1MDAyNmhlYWQsIGRub2RlLCBcdTAwMjZudC1cdTAwM2VjbHVzdGVyX3Njb3BlLCBzZXFubyk7XG4rXHRpZiAobmFtZWRfZGlzdHJpYnV0ZShuZXQsIFx1MDAyNmhlYWQsIGRub2RlLCBcdTAwMjZudC1cdTAwM2VjbHVzdGVyX3Njb3BlLCBzZXFubykpIHtcbitcdFx0cmVhZF91bmxvY2tfYmgoXHUwMDI2bnQtXHUwMDNlY2x1c3Rlcl9zY29wZV9sb2NrKTtcbitcdFx0cmV0dXJuIC1FTk9CVUZTO1xuK1x0fVxuIFx0dGlwY19ub2RlX3htaXQobmV0LCBcdTAwMjZoZWFkLCBkbm9kZSwgMCk7XG4gXHRyZWFkX3VubG9ja19iaChcdTAwMjZudC1cdTAwM2VjbHVzdGVyX3Njb3BlX2xvY2spO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuKy8qKlxuKyAqIHRpcGNfbmFtZWRfbm9kZV91cCAtIHRlbGwgc3BlY2lmaWVkIG5vZGUgYWJvdXQgYWxsIHB1YmxpY2F0aW9ucyBieSB0aGlzIG5vZGVcbisgKiBAbmV0OiB0aGUgYXNzb2NpYXRlZCBuZXR3b3JrIG5hbWVzcGFjZVxuKyAqIEBkbm9kZTogZGVzdGluYXRpb24gbm9kZVxuKyAqIEBjYXBhYmlsaXRpZXM6IHBlZXIgbm9kZSdzIGNhcGFiaWxpdGllc1xuKyAqL1xuK2ludCB0aXBjX25hbWVkX25vZGVfdXAoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUsIHUxNiBjYXBhYmlsaXRpZXMpXG4re1xuK1x0c3RydWN0IG5hbWVfdGFibGUgKm50ID0gdGlwY19uYW1lX3RhYmxlKG5ldCk7XG4rXHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobmV0KTtcbitcbitcdHNwaW5fbG9ja19iaChcdTAwMjZ0bi1cdTAwM2VuYW1ldGJsX2xvY2spO1xuK1x0aWYgKCEoY2FwYWJpbGl0aWVzIFx1MDAyNiBUSVBDX05BTUVEX0JDQVNUKSlcbitcdFx0bnQtXHUwMDNlcmNfZGVzdHMrKztcbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnRuLVx1MDAzZW5hbWV0YmxfbG9jayk7XG4rXG4rXHRyZWFkX2xvY2tfYmgoXHUwMDI2bnQtXHUwMDNlY2x1c3Rlcl9zY29wZV9sb2NrKTtcbitcdC8qIDEuIHRpcGNfbmV0X2ZpbmFsaXplX3dvcmsoKSBpcyBub3Qgc2NoZWR1bGVkIGJlY2F1c2Ugb2YgbmFtZXNwYWNlXG4rXHQgKiAgICB0ZWFyZG93bi5cbitcdCAqIDIuIE9yIHRpcGNfbmV0X2ZpbmFsaXplKCkgLS0tXHUwMDNlIHRpcGNfbmFtZXRibF9wdWJsaXNoKCkgaGFzIGZhaWxlZFxuK1x0ICogICAgdG8gaW5zZXJ0IG5vZGUgc2VsZiBhZGRyZXNzIHB1YmxpY2F0aW9uIGludG8gbnQtXHUwMDNlY2x1c3Rlcl9zY29wZVxuK1x0ICogICAgZHVlIHRvIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUuXG4rXHQgKiAzLiBPciB0aXBjX25ldF9maW5hbGl6ZSgpIC0tLVx1MDAzZSB0aXBjX25hbWV0YmxfcHVibGlzaCgpIGhhcyBub3RcbitcdCAqICAgIGV4ZWN1dGVkIHlldC5cbitcdCAqL1xuK1x0aWYgKHVubGlrZWx5KGxpc3RfZW1wdHkoXHUwMDI2bnQtXHUwMDNlY2x1c3Rlcl9zY29wZSkpKSB7XG4rXHRcdHJlYWRfdW5sb2NrX2JoKFx1MDAyNm50LVx1MDAzZWNsdXN0ZXJfc2NvcGVfbG9jayk7XG4rXHRcdHJldHVybiAxO1xuK1x0fVxuK1x0cmVhZF91bmxvY2tfYmgoXHUwMDI2bnQtXHUwMDNlY2x1c3Rlcl9zY29wZV9sb2NrKTtcbitcbitcdHJldHVybiB0aXBjX25hbWVkX2Rpc3RyaWJ1dGUobmV0LCBkbm9kZSk7XG4rfVxuK1xuKy8qKlxuKyAqIHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlIC0gZGlzdHJpYnV0ZSBhbGwgcHVibGljYXRpb25zIHRvIHNwZWNpZmllZCBub2RlXG4rICogQG5ldDogdGhlIGFzc29jaWF0ZWQgbmV0d29yayBuYW1lc3BhY2VcbisgKiBAZG5vZGU6IGRlc3RpbmF0aW9uIG5vZGVcbisgKi9cbitpbnQgdGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUpXG4re1xuK1x0c3RydWN0IG5hbWVfdGFibGUgKm50ID0gdGlwY19uYW1lX3RhYmxlKG5ldCk7XG4rXHRib29sIHJlaW5zZXJ0ID0gZmFsc2U7XG4rXG4rXHRyZWFkX2xvY2tfYmgoXHUwMDI2bnQtXHUwMDNlY2x1c3Rlcl9zY29wZV9sb2NrKTtcbitcdGlmICh1bmxpa2VseShsaXN0X2VtcHR5KFx1MDAyNm50LVx1MDAzZWNsdXN0ZXJfc2NvcGUpKSlcbitcdFx0cmVpbnNlcnQgPSB0cnVlO1xuK1x0cmVhZF91bmxvY2tfYmgoXHUwMDI2bnQtXHUwMDNlY2x1c3Rlcl9zY29wZV9sb2NrKTtcbitcdC8qIHRpcGNfbmV0X2ZpbmFsaXplKCkgLS0tXHUwMDNlIHRpcGNfbmFtZXRibF9wdWJsaXNoKCkgaGFzIGZhaWxlZCB0byBpbnNlcnRcbitcdCAqIG5vZGUgc2VsZiBhZGRyZXNzIHB1YmxpY2F0aW9uIGludG8gbnQtXHUwMDNlY2x1c3Rlcl9zY29wZSBkdWUgdG8gbWVtb3J5XG4rXHQgKiBhbGxvY2F0aW9uIGZhaWx1cmUuIFNvLCByZWluc2VydCB0aGlzIHB1YmxpY2F0aW9uLlxuK1x0ICovXG4rXHRpZiAocmVpbnNlcnQpIHtcbitcdFx0c3RydWN0IHRpcGNfbmV0ICp0biA9IHRpcGNfbmV0KG5ldCk7XG4rXHRcdHN0cnVjdCB0aXBjX3NvY2tldF9hZGRyIHNrO1xuK1x0XHRzdHJ1Y3QgdGlwY191YWRkciB1YTtcbitcbitcdFx0c2sucmVmID0gMDtcbitcdFx0c2subm9kZSA9IHRuLVx1MDAzZW5vZGVfYWRkcjtcbitcdFx0dGlwY191YWRkcihcdTAwMjZ1YSwgVElQQ19TRVJWSUNFX1JBTkdFLCBUSVBDX0NMVVNURVJfU0NPUEUsXG4rXHRcdFx0ICAgVElQQ19OT0RFX1NUQVRFLCB0bi1cdTAwM2Vub2RlX2FkZHIsIHRuLVx1MDAzZW5vZGVfYWRkcik7XG4rXHRcdGlmICghdGlwY19uYW1ldGJsX3B1Ymxpc2gobmV0LCBcdTAwMjZ1YSwgXHUwMDI2c2ssIHRuLVx1MDAzZW5vZGVfYWRkcikpXG4rXHRcdFx0cmV0dXJuIC1FTk9CVUZTO1xuK1x0fVxuK1xuK1x0cmV0dXJuIHRpcGNfbmFtZWRfZGlzdHJpYnV0ZShuZXQsIGRub2RlKTtcbiB9XG4gXG4gLyoqXG5kaWZmIC0tZ2l0IGEvbmV0L3RpcGMvbmFtZV9kaXN0ci5oIGIvbmV0L3RpcGMvbmFtZV9kaXN0ci5oXG5pbmRleCBjNjc3ZjZmMDgyZGZiLi5jYWRmNGU4YzNlNjZjIDEwMDY0NFxuLS0tIGEvbmV0L3RpcGMvbmFtZV9kaXN0ci5oXG4rKysgYi9uZXQvdGlwYy9uYW1lX2Rpc3RyLmhcbkBAIC02OSw3ICs2OSw4IEBAIHN0cnVjdCBkaXN0cl9pdGVtIHtcbiBcbiBzdHJ1Y3Qgc2tfYnVmZiAqdGlwY19uYW1lZF9wdWJsaXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHB1YmxpY2F0aW9uICpwdWJsKTtcbiBzdHJ1Y3Qgc2tfYnVmZiAqdGlwY19uYW1lZF93aXRoZHJhdyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBwdWJsaWNhdGlvbiAqcHVibCk7XG4tdm9pZCB0aXBjX25hbWVkX25vZGVfdXAoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUsIHUxNiBjYXBhYmlsaXRpZXMpO1xuK2ludCB0aXBjX25hbWVkX25vZGVfdXAoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUsIHUxNiBjYXBhYmlsaXRpZXMpO1xuK2ludCB0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSk7XG4gdm9pZCB0aXBjX25hbWVkX3JjdihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKm5hbWVkcSxcbiBcdFx0ICAgIHUxNiAqcmN2X254dCwgYm9vbCAqb3Blbik7XG4gdm9pZCB0aXBjX25hbWVkX3JlaW5pdChzdHJ1Y3QgbmV0ICpuZXQpO1xuZGlmZiAtLWdpdCBhL25ldC90aXBjL25hbWVfdGFibGUuYyBiL25ldC90aXBjL25hbWVfdGFibGUuY1xuaW5kZXggMjUzYzcyZDEzNjZlYi4uNmZkYTM2YWIxNzY2OSAxMDA2NDRcbi0tLSBhL25ldC90aXBjL25hbWVfdGFibGUuY1xuKysrIGIvbmV0L3RpcGMvbmFtZV90YWJsZS5jXG5AQCAtNzYzLDIxICs3NjMsNDAgQEAgc3RydWN0IHB1YmxpY2F0aW9uICp0aXBjX25hbWV0YmxfcHVibGlzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX3VhZGRyICp1YSxcbiBcdFx0XHRcdFx0IHN0cnVjdCB0aXBjX3NvY2tldF9hZGRyICpzaywgdTMyIGtleSlcbiB7XG4gXHRzdHJ1Y3QgbmFtZV90YWJsZSAqbnQgPSB0aXBjX25hbWVfdGFibGUobmV0KTtcbitcdHUzMiBtYXhfdXNlcl9wdWIgPSBUSVBDX01BWF9QVUJMIC0gMTtcbiBcdHN0cnVjdCB0aXBjX25ldCAqdG4gPSB0aXBjX25ldChuZXQpO1xuIFx0c3RydWN0IHB1YmxpY2F0aW9uICpwID0gTlVMTDtcbiBcdHN0cnVjdCBza19idWZmICpza2IgPSBOVUxMO1xuK1x0Ym9vbCBwcm90b2NvbF90eXBlID0gZmFsc2U7XG4gXHR1MzIgcmNfZGVzdHM7XG4gXG4rXHRpZiAodWEtXHUwMDNlc3IudHlwZSA9PSBUSVBDX05PREVfU1RBVEUgfHwgdWEtXHUwMDNlc3IudHlwZSA9PSBUSVBDX0xJTktfU1RBVEUgfHxcbitcdCAgICB1YS1cdTAwM2Vzci50eXBlID09IFRJUENfVE9QX1NSVilcbitcdFx0cHJvdG9jb2xfdHlwZSA9IHRydWU7XG4rXG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2dG4tXHUwMDNlbmFtZXRibF9sb2NrKTtcbitcdGlmIChwcm90b2NvbF90eXBlKVxuK1x0XHRnb3RvIGluc2VydDtcbiBcbi1cdGlmIChudC1cdTAwM2Vsb2NhbF9wdWJsX2NvdW50IFx1MDAzZT0gVElQQ19NQVhfUFVCTCkge1xuLVx0XHRwcl93YXJuKFwiQmluZCBmYWlsZWQsIG1heCBsaW1pdCAldSByZWFjaGVkXFxuXCIsIFRJUENfTUFYX1BVQkwpO1xuK1x0LyogUmVzZXJ2ZSBvbmUgZW50cnkgZm9yIG5vZGUgc3RhdGUgc2VydmljZSB0eXBlIGJlY2F1c2UgaXQgaGFzIGNsdXN0ZXJcbitcdCAqIHNjb3BlIGFuZCBpdCBpcyBkaXN0cmlidXRlZCBpbiBidWxrLiBTbywgdGhlIG1heGltdW0gbnVtYmVyIG9mIHVzZXInc1xuK1x0ICogcHVibGljYXRpb25zIGlzIChUSVBDX01BWF9QVUJMIC0gMSkuXG4rXHQgKi9cbitcdGlmIChudC1cdTAwM2Vsb2NhbF9wdWJsX2NvdW50IFx1MDAzZT0gbWF4X3VzZXJfcHViKSB7XG4rXHRcdHByX3dhcm4oXCJCaW5kIGZhaWxlZCwgbWF4IGxpbWl0ICV1IHJlYWNoZWRcXG5cIiwgbWF4X3VzZXJfcHViKTtcbiBcdFx0Z290byBleGl0O1xuIFx0fVxuIFxuK2luc2VydDpcbiBcdHAgPSB0aXBjX25hbWV0YmxfaW5zZXJ0X3B1YmwobmV0LCB1YSwgc2ssIGtleSk7XG4gXHRpZiAocCkge1xuLVx0XHRudC1cdTAwM2Vsb2NhbF9wdWJsX2NvdW50Kys7XG4rXHRcdC8qIE5vdCBjb3VudCBub2RlIHN0YXRlLCBsaW5rIHN0YXRlIGFuZCB0b3BvbG9neSBzZXJ2ZXIgdHlwZXNcbitcdFx0ICogc28gdGhhdCBtYXhpbXVtIG50LVx1MDAzZWxvY2FsX3B1YmxfY291bnQgZG9lcyBub3QgcHJldmVudFxuK1x0XHQgKiBwcm90b2NvbCBzZXJ2aWNlIHR5cGVzIGZyb20gYmVpbmcgaW5zZXJ0ZWQgaW50byB0aGUgbmFtZVxuK1x0XHQgKiB0YWJsZS5cbitcdFx0ICovXG4rXHRcdGlmICghcHJvdG9jb2xfdHlwZSlcbitcdFx0XHRudC1cdTAwM2Vsb2NhbF9wdWJsX2NvdW50Kys7XG4gXHRcdHNrYiA9IHRpcGNfbmFtZWRfcHVibGlzaChuZXQsIHApO1xuIFx0fVxuIFx0cmNfZGVzdHMgPSBudC1cdTAwM2VyY19kZXN0cztcbkBAIC04MTAsNyArODI5LDEwIEBAIHZvaWQgdGlwY19uYW1ldGJsX3dpdGhkcmF3KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfdWFkZHIgKnVhLFxuIFxuIFx0cCA9IHRpcGNfbmFtZXRibF9yZW1vdmVfcHVibChuZXQsIHVhLCBzaywga2V5KTtcbiBcdGlmIChwKSB7XG4tXHRcdG50LVx1MDAzZWxvY2FsX3B1YmxfY291bnQtLTtcbitcdFx0aWYgKHAtXHUwMDNlc3IudHlwZSAhPSBUSVBDX05PREVfU1RBVEUgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICBwLVx1MDAzZXNyLnR5cGUgIT0gVElQQ19MSU5LX1NUQVRFIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgcC1cdTAwM2Vzci50eXBlICE9IFRJUENfVE9QX1NSVilcbitcdFx0XHRudC1cdTAwM2Vsb2NhbF9wdWJsX2NvdW50LS07XG4gXHRcdHNrYiA9IHRpcGNfbmFtZWRfd2l0aGRyYXcobmV0LCBwKTtcbiBcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZwLVx1MDAzZWJpbmRpbmdfc29jayk7XG4gXHRcdGtmcmVlX3JjdShwLCByY3UpO1xuZGlmZiAtLWdpdCBhL25ldC90aXBjL25ldC5jIGIvbmV0L3RpcGMvbmV0LmNcbmluZGV4IDdlNjVkMGIwYzRhOGQuLjc1YWM0ZTNjZDAxYTggMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9uZXQuY1xuKysrIGIvbmV0L3RpcGMvbmV0LmNcbkBAIC0xMzksNiArMTM5LDExIEBAIHN0YXRpYyB2b2lkIHRpcGNfbmV0X2ZpbmFsaXplKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGFkZHIpXG4gXHR0aXBjX3NrX3JlaW5pdChuZXQpO1xuIFx0dGlwY19tb25fcmVpbml0X3NlbGYobmV0KTtcbiBcdHRpcGNfbmFtZXRibF9wdWJsaXNoKG5ldCwgXHUwMDI2dWEsIFx1MDAyNnNrLCBhZGRyKTtcbitcdGF0b21pY19zZXQoXHUwMDI2dG4tXHUwMDNlZmluYWxpemVkLCAxKTtcbitcdC8qIFdha2UgdXAgbm9kZXMgd2FpdGluZyBmb3IgZGlzdHJpYnV0aW5nIGJ1bGsgb2YgcHVibGljYXRpb25zXG4rXHQgKiBpZiBhcHBsaWNhYmxlLlxuK1x0ICovXG4rXHR0aXBjX25vZGVfd2FrZXVwKG5ldCk7XG4gfVxuIFxuIHZvaWQgdGlwY19uZXRfZmluYWxpemVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kaWZmIC0tZ2l0IGEvbmV0L3RpcGMvbm9kZS5jIGIvbmV0L3RpcGMvbm9kZS5jXG5pbmRleCA4ZTRlZjI2MzBhZTRmLi4zMzQ4MTJiZGFiNzY1IDEwMDY0NFxuLS0tIGEvbmV0L3RpcGMvbm9kZS5jXG4rKysgYi9uZXQvdGlwYy9ub2RlLmNcbkBAIC0xMTEsNiArMTExLDkgQEAgc3RydWN0IHRpcGNfYmNsaW5rX2VudHJ5IHtcbiAgKiBAcGVlcl9uZXQ6IHBlZXIncyBuZXQgbmFtZXNwYWNlXG4gICogQHBlZXJfaGFzaF9taXg6IGhhc2ggZm9yIHRoaXMgcGVlciAoRklYTUUpXG4gICogQGNyeXB0b19yeDogUlggY3J5cHRvIGhhbmRsZXJcbisgKiBAd29yazogd29yayBpdGVtIGZvciBidWxrIGRpc3RyaWJ1dGlvbiBvZiBjbHVzdGVyIHNjb3BlIHB1YmxpY2F0aW9uc1xuKyAqIEB3b3JrX3NjaGVkdWxlZDogZmxhZyB0byBpbmRpY2F0ZSB0aGUgd29yayBoYXMgYmVlbiBzY2hlZHVsZWRcbisgKiBAZmluYWxpemVkOiBmbGFnIHRvIHdha2UgdXAgc2NoZWR1bGVkIHdvcmtcbiAgKi9cbiBzdHJ1Y3QgdGlwY19ub2RlIHtcbiBcdHUzMiBhZGRyO1xuQEAgLTE0NSw2ICsxNDgsOSBAQCBzdHJ1Y3QgdGlwY19ub2RlIHtcbiAjaWZkZWYgQ09ORklHX1RJUENfQ1JZUFRPXG4gXHRzdHJ1Y3QgdGlwY19jcnlwdG8gKmNyeXB0b19yeDtcbiAjZW5kaWZcbitcdHN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrO1xuK1x0YXRvbWljX3Qgd29ya19zY2hlZHVsZWQ7XG4rXHRhdG9taWNfdCBmaW5hbGl6ZWQ7XG4gfTtcbiBcbiAvKiBOb2RlIEZTTSBzdGF0ZXMgYW5kIGV2ZW50czpcbkBAIC0zOTMsNiArMzk5LDU5IEBAIHN0YXRpYyB2b2lkIHRpcGNfbm9kZV93cml0ZV91bmxvY2tfZmFzdChzdHJ1Y3QgdGlwY19ub2RlICpuKVxuIFx0d3JpdGVfdW5sb2NrX2JoKFx1MDAyNm4tXHUwMDNlbG9jayk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHRpcGNfbm9kZV9kb3duKHN0cnVjdCB0aXBjX25vZGUgKm4pXG4re1xuK1x0aW50IGJlYXJlcl9pZDtcbitcbitcdGZvciAoYmVhcmVyX2lkID0gMDsgYmVhcmVyX2lkIFx1MDAzYyBNQVhfQkVBUkVSUzsgYmVhcmVyX2lkKyspXG4rXHRcdHRpcGNfbm9kZV9saW5rX2Rvd24obiwgYmVhcmVyX2lkLCBmYWxzZSk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHRpcGNfbm9kZV9kaXN0X2J1bGsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuK3tcbitcdHN0cnVjdCB0aXBjX25vZGUgKm5vZGUgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHRpcGNfbm9kZSwgd29yayk7XG4rXHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobm9kZS1cdTAwM2VuZXQpO1xuK1xuK1x0d2FpdF92YXJfZXZlbnQoXHUwMDI2bm9kZS1cdTAwM2VmaW5hbGl6ZWQsIGF0b21pY19yZWFkKFx1MDAyNm5vZGUtXHUwMDNlZmluYWxpemVkKSk7XG4rXG4rXHQvKiBub2RlIGlzIGRvd24gKi9cbitcdGlmICghYXRvbWljX3JlYWQoXHUwMDI2bm9kZS1cdTAwM2V3b3JrX3NjaGVkdWxlZCkpXG4rXHRcdGdvdG8gZXhpdDtcbitcbitcdC8qIFN0b3Agd2FraW5nIHVwIHdvcmsgaW4gdGlwY19ub2RlX3RpbWVvdXQoKSAqL1xuK1x0YXRvbWljX3NldChcdTAwMjZub2RlLVx1MDAzZXdvcmtfc2NoZWR1bGVkLCAwKTtcbitcbitcdGlmICh0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZShub2RlLVx1MDAzZW5ldCwgbm9kZS1cdTAwM2VhZGRyKSBcdTAwM2MgMClcbitcdFx0dGlwY19ub2RlX2Rvd24obm9kZSk7XG4rXG4rZXhpdDpcbitcdGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KFx1MDAyNnRuLVx1MDAzZW5vZGVfd3FfY291bnQpKVxuK1x0XHR3YWtlX3VwX3ZhcihcdTAwMjZ0bi1cdTAwM2Vub2RlX3dxX2NvdW50KTtcbitcbitcdHRpcGNfbm9kZV9wdXQobm9kZSk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHRpcGNfbm9kZV9jYW5jZWxfd29yayhzdHJ1Y3QgdGlwY19ub2RlICpub2RlKVxuK3tcbitcdGlmIChhdG9taWNfcmVhZChcdTAwMjZub2RlLVx1MDAzZXdvcmtfc2NoZWR1bGVkKSkge1xuK1x0XHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobm9kZS1cdTAwM2VuZXQpO1xuK1xuK1x0XHQvKiBXYWtlIHVwIHNjaGVkdWxlZCB3b3JrIGlmIGl0IGlzIHdhaXRpbmcuICovXG4rXHRcdGlmICghYXRvbWljX3JlYWQoXHUwMDI2bm9kZS1cdTAwM2VmaW5hbGl6ZWQpKSB7XG4rXHRcdFx0YXRvbWljX3NldChcdTAwMjZub2RlLVx1MDAzZXdvcmtfc2NoZWR1bGVkLCAwKTtcbitcdFx0XHRhdG9taWNfc2V0KFx1MDAyNm5vZGUtXHUwMDNlZmluYWxpemVkLCAxKTtcbitcdFx0XHR3YWtlX3VwX3ZhcihcdTAwMjZub2RlLVx1MDAzZWZpbmFsaXplZCk7XG4rXHRcdH1cbitcbitcdFx0LyogV29yayBpcyBwZW5kaW5nICovXG4rXHRcdGlmIChjYW5jZWxfd29yayhcdTAwMjZub2RlLVx1MDAzZXdvcmspKSB7XG4rXHRcdFx0aWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoXHUwMDI2dG4tXHUwMDNlbm9kZV93cV9jb3VudCkpXG4rXHRcdFx0XHR3YWtlX3VwX3ZhcihcdTAwMjZ0bi1cdTAwM2Vub2RlX3dxX2NvdW50KTtcbitcdFx0XHR0aXBjX25vZGVfcHV0KG5vZGUpO1xuK1x0XHR9XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyB2b2lkIHRpcGNfbm9kZV93cml0ZV91bmxvY2soc3RydWN0IHRpcGNfbm9kZSAqbilcbiBcdF9fcmVsZWFzZXMobi1cdTAwM2Vsb2NrKVxuIHtcbkBAIC00MjEsMTEgKzQ4MCwzMiBAQCBzdGF0aWMgdm9pZCB0aXBjX25vZGVfd3JpdGVfdW5sb2NrKHN0cnVjdCB0aXBjX25vZGUgKm4pXG4gXG4gXHR3cml0ZV91bmxvY2tfYmgoXHUwMDI2bi1cdTAwM2Vsb2NrKTtcbiBcbi1cdGlmIChmbGFncyBcdTAwMjYgVElQQ19OT1RJRllfTk9ERV9ET1dOKVxuK1x0aWYgKGZsYWdzIFx1MDAyNiBUSVBDX05PVElGWV9OT0RFX0RPV04pIHtcbiBcdFx0dGlwY19wdWJsX25vdGlmeShuZXQsIHB1YmxfbGlzdCwgbm9kZSwgbi1cdTAwM2VjYXBhYmlsaXRpZXMpO1xuLVxuLVx0aWYgKGZsYWdzIFx1MDAyNiBUSVBDX05PVElGWV9OT0RFX1VQKVxuLVx0XHR0aXBjX25hbWVkX25vZGVfdXAobmV0LCBub2RlLCBuLVx1MDAzZWNhcGFiaWxpdGllcyk7XG4rXHRcdHRpcGNfbm9kZV9jYW5jZWxfd29yayhuKTtcbitcdH1cbitcbitcdGlmIChmbGFncyBcdTAwMjYgVElQQ19OT1RJRllfTk9ERV9VUCkge1xuK1x0XHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobmV0KTtcbitcdFx0aW50IHJjID0gMDtcbitcbitcdFx0cmMgPSB0aXBjX25hbWVkX25vZGVfdXAobmV0LCBub2RlLCBuLVx1MDAzZWNhcGFiaWxpdGllcyk7XG4rXHRcdC8qIERlZmVyIGJ1bGsgZGlzdHJpYnV0aW9uIHRvIHdvcmsgcXVldWUgKi9cbitcdFx0aWYgKHJjIFx1MDAzZSAwKSB7XG4rXHRcdFx0YXRvbWljX3NldChcdTAwMjZuLVx1MDAzZXdvcmtfc2NoZWR1bGVkLCAxKTtcbitcdFx0XHRhdG9taWNfaW5jKFx1MDAyNnRuLVx1MDAzZW5vZGVfd3FfY291bnQpO1xuK1x0XHRcdHRpcGNfbm9kZV9nZXQobik7XG4rXHRcdFx0aWYgKCFzY2hlZHVsZV93b3JrKFx1MDAyNm4tXHUwMDNld29yaykpIHtcbitcdFx0XHRcdGF0b21pY19kZWMoXHUwMDI2dG4tXHUwMDNlbm9kZV93cV9jb3VudCk7XG4rXHRcdFx0XHR0aXBjX25vZGVfcHV0KG4pO1xuK1x0XHRcdH1cbitcdFx0fSBlbHNlIGlmIChyYyBcdTAwM2MgMCkge1xuK1x0XHRcdC8qIEJyaW5nIHRoZSBub2RlIGRvd24gdG8gc3RhcnQgb3ZlciBidWxrIGRpc3RyaWJ1dGlvblxuK1x0XHRcdCAqIHdoZW4gdGhlIGZpcnN0IGxpbmsgaXMgdXAgYWdhaW4uXG4rXHRcdFx0ICovXG4rXHRcdFx0dGlwY19ub2RlX2Rvd24obik7XG4rXHRcdH1cbitcdH1cbiBcbiBcdGlmIChmbGFncyBcdTAwMjYgVElQQ19OT1RJRllfTElOS19VUCkge1xuIFx0XHR0aXBjX21vbl9wZWVyX3VwKG5ldCwgbm9kZSwgYmVhcmVyX2lkKTtcbkBAIC01NjQsNiArNjQ0LDkgQEAgc3RydWN0IHRpcGNfbm9kZSAqdGlwY19ub2RlX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBhZGRyLCB1OCAqcGVlcl9pZCxcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNm4tXHUwMDNlbGlzdCk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZuLVx1MDAzZXB1YmxfbGlzdCk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZuLVx1MDAzZWNvbm5fc2tzKTtcbitcdElOSVRfV09SSyhcdTAwMjZuLVx1MDAzZXdvcmssIHRpcGNfbm9kZV9kaXN0X2J1bGspO1xuK1x0YXRvbWljX3NldChcdTAwMjZuLVx1MDAzZXdvcmtfc2NoZWR1bGVkLCAwKTtcbitcdGF0b21pY19zZXQoXHUwMDI2bi1cdTAwM2VmaW5hbGl6ZWQsIDApO1xuIFx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZuLVx1MDAzZWJjX2VudHJ5Lm5hbWVkcSk7XG4gXHRza2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNm4tXHUwMDNlYmNfZW50cnkuaW5wdXRxMSk7XG4gXHRfX3NrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2bi1cdTAwM2ViY19lbnRyeS5hcnJ2cSk7XG5AQCAtNjUzLDYgKzczNiwyMSBAQCB2b2lkIHRpcGNfbm9kZV9zdG9wKHN0cnVjdCBuZXQgKm5ldClcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnRuLVx1MDAzZW5vZGVfbGlzdF9sb2NrKTtcbiB9XG4gXG4rdm9pZCB0aXBjX25vZGVfd2FrZXVwKHN0cnVjdCBuZXQgKm5ldClcbit7XG4rXHRzdHJ1Y3QgdGlwY19uZXQgKnRuID0gdGlwY19uZXQobmV0KTtcbitcdHN0cnVjdCB0aXBjX25vZGUgKm5vZGU7XG4rXG4rXHRyY3VfcmVhZF9sb2NrKCk7XG4rXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShub2RlLCBcdTAwMjZ0bi1cdTAwM2Vub2RlX2xpc3QsIGxpc3QpIHtcbitcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNm5vZGUtXHUwMDNld29ya19zY2hlZHVsZWQpKSB7XG4rXHRcdFx0YXRvbWljX3NldChcdTAwMjZub2RlLVx1MDAzZWZpbmFsaXplZCwgMSk7XG4rXHRcdFx0d2FrZV91cF92YXIoXHUwMDI2bm9kZS1cdTAwM2VmaW5hbGl6ZWQpO1xuK1x0XHR9XG4rXHR9XG4rXHRyY3VfcmVhZF91bmxvY2soKTtcbit9XG4rXG4gdm9pZCB0aXBjX25vZGVfc3Vic2NyaWJlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGxpc3RfaGVhZCAqc3Vic2NyLCB1MzIgYWRkcilcbiB7XG4gXHRzdHJ1Y3QgdGlwY19ub2RlICpuO1xuQEAgLTgwMSw2ICs4OTksNyBAQCBzdGF0aWMgYm9vbCB0aXBjX25vZGVfY2xlYW51cChzdHJ1Y3QgdGlwY19ub2RlICpwZWVyKVxuIHN0YXRpYyB2b2lkIHRpcGNfbm9kZV90aW1lb3V0KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuIHtcbiBcdHN0cnVjdCB0aXBjX25vZGUgKm4gPSB0aW1lcl9jb250YWluZXJfb2YobiwgdCwgdGltZXIpO1xuK1x0c3RydWN0IHRpcGNfbmV0ICp0biA9IHRpcGNfbmV0KG4tXHUwMDNlbmV0KTtcbiBcdHN0cnVjdCB0aXBjX2xpbmtfZW50cnkgKmxlO1xuIFx0c3RydWN0IHNrX2J1ZmZfaGVhZCB4bWl0cTtcbiBcdGludCByZW1haW5zID0gbi1cdTAwM2VsaW5rX2NudDtcbkBAIC04MTQsNiArOTEzLDExIEBAIHN0YXRpYyB2b2lkIHRpcGNfbm9kZV90aW1lb3V0KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4rXHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2dG4tXHUwMDNlZmluYWxpemVkKSBcdTAwMjZcdTAwMjYgYXRvbWljX3JlYWQoXHUwMDI2bi1cdTAwM2V3b3JrX3NjaGVkdWxlZCkpIHtcbitcdFx0YXRvbWljX3NldChcdTAwMjZuLVx1MDAzZWZpbmFsaXplZCwgMSk7XG4rXHRcdHdha2VfdXBfdmFyKFx1MDAyNm4tXHUwMDNlZmluYWxpemVkKTtcbitcdH1cbitcbiAjaWZkZWYgQ09ORklHX1RJUENfQ1JZUFRPXG4gXHQvKiBUYWtlIGFueSBjcnlwdG8ga2V5IHJlbGF0ZWQgYWN0aW9ucyBmaXJzdCAqL1xuIFx0dGlwY19jcnlwdG9fdGltZW91dChuLVx1MDAzZWNyeXB0b19yeCk7XG5kaWZmIC0tZ2l0IGEvbmV0L3RpcGMvbm9kZS5oIGIvbmV0L3RpcGMvbm9kZS5oXG5pbmRleCAxNTRhNWJiYjBkMjlkLi5jN2JjM2JjMDUzMjg1IDEwMDY0NFxuLS0tIGEvbmV0L3RpcGMvbm9kZS5oXG4rKysgYi9uZXQvdGlwYy9ub2RlLmhcbkBAIC03NSw2ICs3NSw3IEBAIGVudW0ge1xuICNkZWZpbmUgSU5WQUxJRF9CRUFSRVJfSUQgLTFcbiBcbiB2b2lkIHRpcGNfbm9kZV9zdG9wKHN0cnVjdCBuZXQgKm5ldCk7XG4rdm9pZCB0aXBjX25vZGVfd2FrZXVwKHN0cnVjdCBuZXQgKm5ldCk7XG4gYm9vbCB0aXBjX25vZGVfZ2V0X2lkKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGFkZHIsIHU4ICppZCk7XG4gdTMyIHRpcGNfbm9kZV9nZXRfYWRkcihzdHJ1Y3QgdGlwY19ub2RlICpub2RlKTtcbiBjaGFyICp0aXBjX25vZGVfZ2V0X2lkX3N0cihzdHJ1Y3QgdGlwY19ub2RlICpub2RlKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE5OjI5OjM0LjA5NjM2NjYwOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2NjA5OTY2MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVElQQyBQYXRjaCBmb3IgdGhlIExpbnV4IEtlcm5lbCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgcG9raW5nIGFyb3VuZCBpbiB0aGUgVElQQyBzdWJzeXN0ZW0gb2YgdGhlIExpbnV4IGtlcm5lbC4gSXQgdG91Y2hlcyBxdWl0ZSBhIGZldyBmaWxlczogYGNvcmUuY2AsIGBjb3JlLmhgLCBgbmFtZV9kaXN0ci5jYCwgYG5hbWVfZGlzdHIuaGAsIGBuYW1lX3RhYmxlLmNgLCBgbmV0LmNgLCBgbm9kZS5jYCwgYW5kIGBub2RlLmhgLiBTZWVtcyBsaWtlIGEgcHJldHR5IHNpZ25pZmljYW50IGFyZWEgb2YgdGhlIGNvZGUuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIHJpZ2h0IGluIGFuZCB1bmRlcnN0YW5kIHdoYXQncyBhY3R1YWxseSBjaGFuZ2luZy4gUmlnaHQgb2ZmIHRoZSBiYXQsIGl0IGxvb2tzIGxpa2UgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgd29ya3F1ZXVlIHNwZWNpZmljYWxseSBmb3IgZWZmaWNpZW50bHkgZGlzdHJpYnV0aW5nIHB1YmxpY2F0aW9ucyBhY3Jvc3MgdGhlIGNsdXN0ZXIgc2NvcGUsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJdCBhbHNvIGFwcGVhcnMgd2UncmUgYWRkaW5nIHNvbWUgYXRvbWljIHZhcmlhYmxlcywgYG5vZGVfd3FfY291bnRgIGFuZCBgZmluYWxpemVkYCwgdG8gdGhlIGB0aXBjX25ldGAgc3RydWN0dXJlLiBUaGUgY2hhbmdlIHRvIGB0aXBjX25hbWVkX25vZGVfdXBgIHRvIHJldHVybiBhbiBpbnRlZ2VyIGluc3RlYWQgb2Ygdm9pZCBpbW1lZGlhdGVseSByYWlzZXMgbXkgZXllYnJvd3Mg4oCTIHRoYXQncyBvZnRlbiBhIHNpZ25hbCBvZiBhIGJlaGF2aW9yYWwgY2hhbmdlIG9yIGVycm9yIHJlcG9ydGluZyBiZWluZyBhZGRlZC4gV2UgaGF2ZSBhIG5ldyBmdW5jdGlvbiwgYHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlYCwgd2hpY2ggY291bGQgYmUgdGllZCB0byB0aGUgd29ya3F1ZXVlLiBBbHNvLCB0aGUgbW9kaWZpY2F0aW9ucyB0byBgdGlwY19uYW1ldGJsX3B1Ymxpc2hgIHRvIG1hbmFnZSBgcHJvdG9jb2xfdHlwZWAgYW5kIHJlc2VydmUgYW4gZW50cnkgZm9yIHRoZSBub2RlIHN0YXRlIHNlcnZpY2UgdHlwZSBhcmUgbm90YWJsZS4gUGx1cywgYSBuZXcgd29yayBmdW5jdGlvbiwgYHRpcGNfbm9kZV9kaXN0X2J1bGtgLCBpcyBiZWluZyBhZGRlZCwgYWxzbyBpbiBgbm9kZS5jYC4gVGhlIGNoYW5nZXMgdG8gYHRpcGNfbm9kZV93cml0ZV91bmxvY2tgIGluZGljYXRlIHRoYXQgdGhlIHdvcmtxdWV1ZSBpcyB0cmlnZ2VyZWQgaWYgYHRpcGNfbmFtZWRfbm9kZV91cGAgcmVwb3J0cyBhIHBvc2l0aXZlIHZhbHVlLiBBbmQgZmluYWxseSwgd2UgaGF2ZSBhIG5ldyBmdW5jdGlvbiwgYHRpcGNfbm9kZV93YWtldXBgLlxuXG5BbHJpZ2h0LCBwdXR0aW5nIGl0IGFsbCB0b2dldGhlciwgdGhpcyBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIFRJUEMgaW1wbGVtZW50YXRpb24uIEFuZCBnaXZlbiB0aGUgbmF0dXJlIG9mIFRJUEMsIHdoaWNoIGlzIGFjY2Vzc2libGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB0aGlzIGRlZmluaXRlbHkgd2FycmFudHMgc29tZSBzZXJpb3VzIGZ1enppbmcuIFNlY3VyaXR5IGlzIHBhcmFtb3VudCwgYW5kIHRoZXNlIHR5cGVzIG9mIGNoYW5nZXMgYXJlIHByaW1lIHRhcmdldHMgZm9yIHZ1bG5lcmFiaWxpdHkgZGlzY292ZXJ5LlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aG9zZSBDT05GSUcgb3B0aW9ucy4gSSByZW1lbWJlciBUSVBDIGlzIGNvbnRyb2xsZWQgYnkgYENPTkZJR19USVBDYC4gTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgaW4gYG5ldC90aXBjL0tjb25maWdgIHRvIGJlIHN1cmUgSSBoYXZlIHRoZSB3aG9sZSBwaWN0dXJlIGJlZm9yZSBnb2luZyBhbnkgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzk3MywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE5OjI5OjQxLjc1NzM2NTU0NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzI4MDQ0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVElQQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL0tjb25maWctNS1cXG5uZXQvdGlwYy9LY29uZmlnOjY6bWVudWNvbmZpZyBUSVBDXFxubmV0L3RpcGMvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgVElQQyBQcm90b2NvbFxcXCJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctMjMtXFxubmV0L3RpcGMvS2NvbmZpZzoyNDpjb25maWcgVElQQ19NRURJQV9JQlxcbm5ldC90aXBjL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiSW5maW5pQmFuZCBtZWRpYSB0eXBlIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTI5LVxcdCAgSVAtb3Zlci1JbmZpbmlCYW5kIGRldmljZXMuXFxubmV0L3RpcGMvS2NvbmZpZzozMDpjb25maWcgVElQQ19NRURJQV9VRFBcXG5uZXQvdGlwYy9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIklQL1VEUCBtZWRpYSB0eXBlIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTM3LVxcbm5ldC90aXBjL0tjb25maWc6Mzg6Y29uZmlnIFRJUENfQ1JZUFRPXFxubmV0L3RpcGMvS2NvbmZpZy0zOS1cXHRib29sIFxcXCJUSVBDIGVuY3J5cHRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctNTItXFxubmV0L3RpcGMvS2NvbmZpZzo1Mzpjb25maWcgVElQQ19ESUFHXFxubmV0L3RpcGMvS2NvbmZpZy01NC1cXHR0cmlzdGF0ZSBcXFwiVElQQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxOToyOTo0MS44MTA2NTEyNDRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTMwOTA5NjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIHRoZSBUSVBDIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBpdC4gYENPTkZJR19USVBDYCBpcyBjbGVhcmx5IHRoZSBjZW50cmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdlJ3JlIGRlYWxpbmcgd2l0aCBoZXJlLCB0aGF0J3Mgb2J2aW91cy4gTm93IHRoZSBjcnVjaWFsIHN0ZXAgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgaXRzIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMsIG9wdGlvbnMsIG9yIGV2ZW4gb3RoZXIgbW9kdWxlcyBuZWVkIHRvIGJlIGVuYWJsZWQgb3IgYXJlIGFmZmVjdGVkIGlmIGBDT05GSUdfVElQQ2AgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4gVGhpcyBpcyB3aGVyZSB0aGUgZWZmaWNpZW5jeSBvZiBteSB3b3JrZmxvdyBjb21lcyBpbiwgSSBjYW7igJl0IHNwZW5kIHRpbWUgb24gdGhlIGJhc2ljcyDigJMgSSdtIGxvb2tpbmcgZm9yIHRoZSBub24tb2J2aW91cyByZWxhdGlvbnNoaXBzLCBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cywgYW5kIHRoZSBicm9hZGVyIGltcGxpY2F0aW9ucyBmb3IgdGhlIHN5c3RlbS4gSSBuZWVkIHRvIGltbWVkaWF0ZWx5IHVuZGVyc3RhbmQgdGhlIGVudGlyZSBsYW5kc2NhcGUuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCdzIGFjdHVhbGx5IGNvbm5lY3RlZCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTE0MywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE5OjI5OjQ5Ljk0MTU2NTA1M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTI1Njc4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC90aXBjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3RpcGMvS2NvbmZpZz02PW1lbnVjb25maWcgVElQQ1xcbm5ldC90aXBjL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiVGhlIFRJUEMgUHJvdG9jb2xcXFwiXFxubmV0L3RpcGMvS2NvbmZpZzo4OlxcdGRlcGVuZHMgb24gSU5FVFxcbm5ldC90aXBjL0tjb25maWctOS1cXHRoZWxwXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnPTI0PWNvbmZpZyBUSVBDX01FRElBX0lCXFxubmV0L3RpcGMvS2NvbmZpZy0yNS1cXHRib29sIFxcXCJJbmZpbmlCYW5kIG1lZGlhIHR5cGUgc3VwcG9ydFxcXCJcXG5uZXQvdGlwYy9LY29uZmlnOjI2OlxcdGRlcGVuZHMgb24gVElQQyBcXHUwMDI2XFx1MDAyNiBJTkZJTklCQU5EX0lQT0lCXFxubmV0L3RpcGMvS2NvbmZpZy0yNy1cXHRoZWxwXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnPTMwPWNvbmZpZyBUSVBDX01FRElBX1VEUFxcbm5ldC90aXBjL0tjb25maWctMzEtXFx0Ym9vbCBcXFwiSVAvVURQIG1lZGlhIHR5cGUgc3VwcG9ydFxcXCJcXG5uZXQvdGlwYy9LY29uZmlnOjMyOlxcdGRlcGVuZHMgb24gVElQQ1xcbm5ldC90aXBjL0tjb25maWctMzMtXFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnPTM4PWNvbmZpZyBUSVBDX0NSWVBUT1xcbm5ldC90aXBjL0tjb25maWctMzktXFx0Ym9vbCBcXFwiVElQQyBlbmNyeXB0aW9uIHN1cHBvcnRcXFwiXFxubmV0L3RpcGMvS2NvbmZpZzo0MDpcXHRkZXBlbmRzIG9uIFRJUENcXG5uZXQvdGlwYy9LY29uZmlnLTQxLVxcdHNlbGVjdCBDUllQVE9cXG4tLVxcbm5ldC90aXBjL0tjb25maWc9NTM9Y29uZmlnIFRJUENfRElBR1xcbm5ldC90aXBjL0tjb25maWctNTQtXFx0dHJpc3RhdGUgXFxcIlRJUEM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG5uZXQvdGlwYy9LY29uZmlnOjU1OlxcdGRlcGVuZHMgb24gVElQQ1xcbm5ldC90aXBjL0tjb25maWctNTYtXFx0ZGVmYXVsdCB5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE5OjI5OjQ5Ljk5MDgyNjE3MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5NTAwNzQ3NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUSVBDIENvbmZpZ3VyYXRpb24gZm9yIEZvY3VzIFN5bWJvbHMqKlxuXG5Pa2F5LCBzbyBgVElQQ2AgZGVwZW5kcyBvbiBgSU5FVGAsIHRoYXQncyBvdXIgc3RhcnRpbmcgcG9pbnQuIFdlIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbi4gTG9va2luZyBhdCB0aGUgcGF0Y2gsIHRoZSBjb2RlIG1vZGlmaWVzIGEgYnVuY2ggb2YgZnVuY3Rpb25zLiBOb3csIHdoaWNoIG9uZXMgYXJlIGtleT9cblxuVGhlIHBhdGNoIHNlZW1zIHRvIGJlIHRvdWNoaW5nIGB0aXBjX2luaXRfbmV0YCwgYHRpcGNfZXhpdF9uZXRgLCBgbmFtZWRfZGlzdHJpYnV0ZWAsIGB0aXBjX25hbWVkX2Rpc3RyaWJ1dGVgLCBgdGlwY19uYW1lZF9ub2RlX3VwYCwgYHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlYCwgYHRpcGNfbmFtZXRibF9wdWJsaXNoYCwgYHRpcGNfbmFtZXRibF93aXRoZHJhd2AsIGB0aXBjX25ldF9maW5hbGl6ZWAsIGB0aXBjX25vZGVfZG93bmAsIGB0aXBjX25vZGVfZGlzdF9idWxrYCwgYHRpcGNfbm9kZV9jYW5jZWxfd29ya2AsIGB0aXBjX25vZGVfd3JpdGVfdW5sb2NrYCwgYHRpcGNfbm9kZV9jcmVhdGVgLCBgdGlwY19ub2RlX3dha2V1cGAsIGFuZCBgdGlwY19ub2RlX3RpbWVvdXRgLiBUaGF0J3MgYSBsb3QsIGJ1dCB3ZSBjYW4gZGVmaW5pdGVseSBuYXJyb3cgaXQgZG93bi5cblxuTGV0J3MgZm9jdXMgb24gdGhlIGZ1bmN0aW9ucyBJIHN1c3BlY3QgYXJlIG1vc3QgY2VudHJhbCB0byB0aGUgY2hhbmdlczogYHRpcGNfbmFtZWRfbm9kZV91cGAsIGB0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZWAsIGB0aXBjX25hbWV0YmxfcHVibGlzaGAsIGB0aXBjX25hbWV0Ymxfd2l0aGRyYXdgLCBgdGlwY19ub2RlX2Rpc3RfYnVsa2AsIGFuZCBgdGlwY19ub2RlX3dha2V1cGAuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiDigJMgYXJlIHRoZXNlIGZ1bmN0aW9ucyBzdGF0aWMgb3IgZXhwb3J0ZWQ/IExldCdzIGNoZWNrLiBBaGEsIGB0aXBjX25hbWVkX25vZGVfdXBgLCBgdGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGVgLCBgdGlwY19uYW1ldGJsX3B1Ymxpc2hgLCBgdGlwY19uYW1ldGJsX3dpdGhkcmF3YCwgYW5kIGB0aXBjX25vZGVfd2FrZXVwYCBhcmUgZ2xvYmFsLCB3aGljaCBpcyB3aGF0IHdlIG5lZWQgdG8gZm9jdXMgb24uIGB0aXBjX25vZGVfZGlzdF9idWxrYCBpcyAqc3RhdGljKiwgc28gaXQncyBub3QgZ29pbmcgdG8gYmUgYSBnb29kIHN5bWJvbC5cblxuTm93LCBsZXQncyBnbyBjaGVjayB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzOiBgbmV0L3RpcGMvbmFtZV9kaXN0ci5jYCBhbmQgYG5ldC90aXBjL25vZGUuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3NjcsIk91dHB1dFRva2VucyI6NjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTk6Mjk6NTYuOTQwOTAzNjYxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MTY4NTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRpcGNfbmFtZWRfbm9kZV91cHx0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZXx0aXBjX25hbWV0YmxfcHVibGlzaHx0aXBjX25hbWV0Ymxfd2l0aGRyYXd8dGlwY19ub2RlX3dha2V1cFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3RpcGMvbmFtZV9kaXN0ci5jPTIwOD1zdGF0aWMgaW50IHRpcGNfbmFtZWRfZGlzdHJpYnV0ZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSlcXG4tLVxcbm5ldC90aXBjL25hbWVfZGlzdHIuYy0yMzEtLyoqXFxubmV0L3RpcGMvbmFtZV9kaXN0ci5jOjIzMjogKiB0aXBjX25hbWVkX25vZGVfdXAgLSB0ZWxsIHNwZWNpZmllZCBub2RlIGFib3V0IGFsbCBwdWJsaWNhdGlvbnMgYnkgdGhpcyBub2RlXFxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTIzMy0gKiBAbmV0OiB0aGUgYXNzb2NpYXRlZCBuZXR3b3JrIG5hbWVzcGFjZVxcbi0tXFxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTIzNi0gKi9cXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmM6MjM3OmludCB0aXBjX25hbWVkX25vZGVfdXAoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUsIHUxNiBjYXBhYmlsaXRpZXMpXFxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTIzOC17XFxuLS1cXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmMtMjQ5LVxcdCAqICAgIHRlYXJkb3duLlxcbm5ldC90aXBjL25hbWVfZGlzdHIuYzoyNTA6XFx0ICogMi4gT3IgdGlwY19uZXRfZmluYWxpemUoKSAtLS1cXHUwMDNlIHRpcGNfbmFtZXRibF9wdWJsaXNoKCkgaGFzIGZhaWxlZFxcbm5ldC90aXBjL25hbWVfZGlzdHIuYy0yNTEtXFx0ICogICAgdG8gaW5zZXJ0IG5vZGUgc2VsZiBhZGRyZXNzIHB1YmxpY2F0aW9uIGludG8gbnQtXFx1MDAzZWNsdXN0ZXJfc2NvcGVcXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmMtMjUyLVxcdCAqICAgIGR1ZSB0byBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlLlxcbm5ldC90aXBjL25hbWVfZGlzdHIuYzoyNTM6XFx0ICogMy4gT3IgdGlwY19uZXRfZmluYWxpemUoKSAtLS1cXHUwMDNlIHRpcGNfbmFtZXRibF9wdWJsaXNoKCkgaGFzIG5vdFxcbm5ldC90aXBjL25hbWVfZGlzdHIuYy0yNTQtXFx0ICogICAgZXhlY3V0ZWQgeWV0Llxcbi0tXFxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTI2NS0vKipcXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmM6MjY2OiAqIHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlIC0gZGlzdHJpYnV0ZSBhbGwgcHVibGljYXRpb25zIHRvIHNwZWNpZmllZCBub2RlXFxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTI2Ny0gKiBAbmV0OiB0aGUgYXNzb2NpYXRlZCBuZXR3b3JrIG5hbWVzcGFjZVxcbi0tXFxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTI2OS0gKi9cXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmM6MjcwOmludCB0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBkbm9kZSlcXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmMtMjcxLXtcXG4tLVxcbm5ldC90aXBjL25hbWVfZGlzdHIuYy0yNzgtXFx0cmVhZF91bmxvY2tfYmgoXFx1MDAyNm50LVxcdTAwM2VjbHVzdGVyX3Njb3BlX2xvY2spO1xcbm5ldC90aXBjL25hbWVfZGlzdHIuYzoyNzk6XFx0LyogdGlwY19uZXRfZmluYWxpemUoKSAtLS1cXHUwMDNlIHRpcGNfbmFtZXRibF9wdWJsaXNoKCkgaGFzIGZhaWxlZCB0byBpbnNlcnRcXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmMtMjgwLVxcdCAqIG5vZGUgc2VsZiBhZGRyZXNzIHB1YmxpY2F0aW9uIGludG8gbnQtXFx1MDAzZWNsdXN0ZXJfc2NvcGUgZHVlIHRvIG1lbW9yeVxcbi0tXFxubmV0L3RpcGMvbmFtZV9kaXN0ci5jLTI5MS1cXHRcXHRcXHQgICBUSVBDX05PREVfU1RBVEUsIHRuLVxcdTAwM2Vub2RlX2FkZHIsIHRuLVxcdTAwM2Vub2RlX2FkZHIpO1xcbm5ldC90aXBjL25hbWVfZGlzdHIuYzoyOTI6XFx0XFx0aWYgKCF0aXBjX25hbWV0YmxfcHVibGlzaChuZXQsIFxcdTAwMjZ1YSwgXFx1MDAyNnNrLCB0bi1cXHUwMDNlbm9kZV9hZGRyKSlcXG5uZXQvdGlwYy9uYW1lX2Rpc3RyLmMtMjkzLVxcdFxcdFxcdHJldHVybiAtRU5PQlVGUztcXG4tLVxcbm5ldC90aXBjL25hbWVfZGlzdHIuaD03MT1zdHJ1Y3Qgc2tfYnVmZiAqdGlwY19uYW1lZF93aXRoZHJhdyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBwdWJsaWNhdGlvbiAqcHVibCk7XFxubmV0L3RpcGMvbmFtZV9kaXN0ci5oOjcyOmludCB0aXBjX25hbWVkX25vZGVfdXAoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUsIHUxNiBjYXBhYmlsaXRpZXMpO1xcbm5ldC90aXBjL25hbWVfZGlzdHIuaDo3MzppbnQgdGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgZG5vZGUpO1xcbm5ldC90aXBjL25hbWVfZGlzdHIuaC03NC12b2lkIHRpcGNfbmFtZWRfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqbmFtZWRxLFxcbi0tXFxubmV0L3RpcGMvbmFtZV90YWJsZS5jPTczMj12b2lkIHRpcGNfbmFtZXRibF9idWlsZF9ncm91cChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX2dyb3VwICpncnAsXFxuLS1cXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmMtNzU5LVxcbm5ldC90aXBjL25hbWVfdGFibGUuYzo3NjA6LyogdGlwY19uYW1ldGJsX3B1Ymxpc2ggLSBhZGQgc2VydmljZSBiaW5kaW5nIHRvIG5hbWUgdGFibGVcXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmMtNzYxLSAqL1xcbm5ldC90aXBjL25hbWVfdGFibGUuYzo3NjI6c3RydWN0IHB1YmxpY2F0aW9uICp0aXBjX25hbWV0YmxfcHVibGlzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX3VhZGRyICp1YSxcXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmMtNzYzLVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgdGlwY19zb2NrZXRfYWRkciAqc2ssIHUzMiBrZXkpXFxuLS1cXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmMtODEyLS8qKlxcbm5ldC90aXBjL25hbWVfdGFibGUuYzo4MTM6ICogdGlwY19uYW1ldGJsX3dpdGhkcmF3IC0gd2l0aGRyYXcgYSBzZXJ2aWNlIGJpbmRpbmdcXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmMtODE0LSAqIEBuZXQ6IG5ldHdvcmsgbmFtZXNwYWNlXFxuLS1cXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmMtODE4LSAqL1xcbm5ldC90aXBjL25hbWVfdGFibGUuYzo4MTk6dm9pZCB0aXBjX25hbWV0Ymxfd2l0aGRyYXcoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGlwY191YWRkciAqdWEsXFxubmV0L3RpcGMvbmFtZV90YWJsZS5jLTgyMC1cXHRcXHRcXHQgICBzdHJ1Y3QgdGlwY19zb2NrZXRfYWRkciAqc2ssIHUzMiBrZXkpXFxuLS1cXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmg9MTI2PXZvaWQgdGlwY19uYW1ldGJsX2J1aWxkX2dyb3VwKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfZ3JvdXAgKmdycCxcXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmgtMTI3LVxcdFxcdFxcdCAgICAgIHN0cnVjdCB0aXBjX3VhZGRyICp1YSk7XFxubmV0L3RpcGMvbmFtZV90YWJsZS5oOjEyODpzdHJ1Y3QgcHVibGljYXRpb24gKnRpcGNfbmFtZXRibF9wdWJsaXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfdWFkZHIgKnVhLFxcbm5ldC90aXBjL25hbWVfdGFibGUuaC0xMjktXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCB0aXBjX3NvY2tldF9hZGRyICpzaywgdTMyIGtleSk7XFxubmV0L3RpcGMvbmFtZV90YWJsZS5oOjEzMDp2b2lkIHRpcGNfbmFtZXRibF93aXRoZHJhdyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX3VhZGRyICp1YSxcXG5uZXQvdGlwYy9uYW1lX3RhYmxlLmgtMTMxLVxcdFxcdFxcdCAgIHN0cnVjdCB0aXBjX3NvY2tldF9hZGRyICpzaywgdTMyIGtleSk7XFxuLS1cXG5uZXQvdGlwYy9uZXQuYz0xMjY9c3RhdGljIHZvaWQgdGlwY19uZXRfZmluYWxpemUoc3RydWN0IG5ldCAqbmV0LCB1MzIgYWRkcilcXG4tLVxcbm5ldC90aXBjL25ldC5jLTE0MC1cXHR0aXBjX21vbl9yZWluaXRfc2VsZihuZXQpO1xcbm5ldC90aXBjL25ldC5jOjE0MTpcXHR0aXBjX25hbWV0YmxfcHVibGlzaChuZXQsIFxcdTAwMjZ1YSwgXFx1MDAyNnNrLCBhZGRyKTtcXG5uZXQvdGlwYy9uZXQuYy0xNDItXFx0YXRvbWljX3NldChcXHUwMDI2dG4tXFx1MDAzZWZpbmFsaXplZCwgMSk7XFxuLS1cXG5uZXQvdGlwYy9uZXQuYy0xNDUtXFx0ICovXFxubmV0L3RpcGMvbmV0LmM6MTQ2OlxcdHRpcGNfbm9kZV93YWtldXAobmV0KTtcXG5uZXQvdGlwYy9uZXQuYy0xNDctfVxcbi0tXFxubmV0L3RpcGMvbm9kZS5jPTQxMD1zdGF0aWMgdm9pZCB0aXBjX25vZGVfZGlzdF9idWxrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC90aXBjL25vZGUuYy00MjMtXFxubmV0L3RpcGMvbm9kZS5jOjQyNDpcXHRpZiAodGlwY19uYW1lZF9kaXN0X2NsdXN0ZXJfc2NvcGUobm9kZS1cXHUwMDNlbmV0LCBub2RlLVxcdTAwM2VhZGRyKSBcXHUwMDNjIDApXFxubmV0L3RpcGMvbm9kZS5jLTQyNS1cXHRcXHR0aXBjX25vZGVfZG93bihub2RlKTtcXG4tLVxcbm5ldC90aXBjL25vZGUuYz00NTU9c3RhdGljIHZvaWQgdGlwY19ub2RlX3dyaXRlX3VubG9jayhzdHJ1Y3QgdGlwY19ub2RlICpuKVxcbi0tXFxubmV0L3RpcGMvbm9kZS5jLTQ5MS1cXG5uZXQvdGlwYy9ub2RlLmM6NDkyOlxcdFxcdHJjID0gdGlwY19uYW1lZF9ub2RlX3VwKG5ldCwgbm9kZSwgbi1cXHUwMDNlY2FwYWJpbGl0aWVzKTtcXG5uZXQvdGlwYy9ub2RlLmMtNDkzLVxcdFxcdC8qIERlZmVyIGJ1bGsgZGlzdHJpYnV0aW9uIHRvIHdvcmsgcXVldWUgKi9cXG4tLVxcbm5ldC90aXBjL25vZGUuYy01MTEtXFx0XFx0dGlwY19tb25fcGVlcl91cChuZXQsIG5vZGUsIGJlYXJlcl9pZCk7XFxubmV0L3RpcGMvbm9kZS5jOjUxMjpcXHRcXHR0aXBjX25hbWV0YmxfcHVibGlzaChuZXQsIFxcdTAwMjZ1YSwgXFx1MDAyNnNrLCBzay5yZWYpO1xcbm5ldC90aXBjL25vZGUuYy01MTMtXFx0fVxcbi0tXFxubmV0L3RpcGMvbm9kZS5jLTUxNS1cXHRcXHR0aXBjX21vbl9wZWVyX2Rvd24obmV0LCBub2RlLCBiZWFyZXJfaWQpO1xcbm5ldC90aXBjL25vZGUuYzo1MTY6XFx0XFx0dGlwY19uYW1ldGJsX3dpdGhkcmF3KG5ldCwgXFx1MDAyNnVhLCBcXHUwMDI2c2ssIHNrLnJlZik7XFxubmV0L3RpcGMvbm9kZS5jLTUxNy1cXHR9XFxuLS1cXG5uZXQvdGlwYy9ub2RlLmM9NzI4PXZvaWQgdGlwY19ub2RlX3N0b3Aoc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxubmV0L3RpcGMvbm9kZS5jLTczOC1cXG5uZXQvdGlwYy9ub2RlLmM6NzM5OnZvaWQgdGlwY19ub2RlX3dha2V1cChzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L3RpcGMvbm9kZS5jLTc0MC17XFxuLS1cXG5uZXQvdGlwYy9ub2RlLmg9Nzc9dm9pZCB0aXBjX25vZGVfc3RvcChzdHJ1Y3QgbmV0ICpuZXQpO1xcbm5ldC90aXBjL25vZGUuaDo3ODp2b2lkIHRpcGNfbm9kZV93YWtldXAoc3RydWN0IG5ldCAqbmV0KTtcXG5uZXQvdGlwYy9ub2RlLmgtNzktYm9vbCB0aXBjX25vZGVfZ2V0X2lkKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGFkZHIsIHU4ICppZCk7XFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYz0yOTA3PXN0YXRpYyBpbnQgdGlwY19za19wdWJsaXNoKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgc3RydWN0IHRpcGNfdWFkZHIgKnVhKVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjkyMS1cXHRza2FkZHIubm9kZSA9IHRpcGNfb3duX2FkZHIobmV0KTtcXG5uZXQvdGlwYy9zb2NrZXQuYzoyOTIyOlxcdHAgPSB0aXBjX25hbWV0YmxfcHVibGlzaChuZXQsIHVhLCBcXHUwMDI2c2thZGRyLCBrZXkpO1xcbm5ldC90aXBjL3NvY2tldC5jLTI5MjMtXFx0aWYgKHVubGlrZWx5KCFwKSlcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTI5MzI9c3RhdGljIGludCB0aXBjX3NrX3dpdGhkcmF3KHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgc3RydWN0IHRpcGNfdWFkZHIgKnVhKVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjk0Mi1cXHRcXHRcXHRcXHQgICBwLVxcdTAwM2Vzci50eXBlLCBwLVxcdTAwM2Vzci5sb3dlciwgcC1cXHUwMDNlc3IudXBwZXIpO1xcbm5ldC90aXBjL3NvY2tldC5jOjI5NDM6XFx0XFx0XFx0dGlwY19uYW1ldGJsX3dpdGhkcmF3KG5ldCwgXFx1MDAyNl91YSwgXFx1MDAyNnAtXFx1MDAzZXNrLCBwLVxcdTAwM2VrZXkpO1xcbm5ldC90aXBjL3NvY2tldC5jLTI5NDQtXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yOTU0LVxcdFxcdFxcdGJyZWFrO1xcbm5ldC90aXBjL3NvY2tldC5jOjI5NTU6XFx0XFx0dGlwY19uYW1ldGJsX3dpdGhkcmF3KG5ldCwgdWEsIFxcdTAwMjZwLVxcdTAwM2VzaywgcC1cXHUwMDNla2V5KTtcXG5uZXQvdGlwYy9zb2NrZXQuYy0yOTU2LVxcdFxcdHJjID0gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTk6Mjk6NTYuOTg1MDc2NDNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTg0MjM1MzkzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBBc3Nlc3NtZW50OiBUSVBDIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRoZSBhc3NvY2lhdGVkIHN5bWJvbHMuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgd29ydGggcHVyc3Vpbmcgd2l0aCBmdXp6aW5nLiBUaGUga2V5IGZ1bmN0aW9ucyB0byB0YXJnZXQgYXJlOiBgdGlwY19uYW1lZF9ub2RlX3VwYCwgYHRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlYCwgYHRpcGNfbmFtZXRibF9wdWJsaXNoYCwgYHRpcGNfbmFtZXRibF93aXRoZHJhd2AsIGFuZCBgdGlwY19ub2RlX3dha2V1cGAuIFRoZXkncmUgYWxsIGV4cG9ydGVkLCBzbyB0aGF0IG1ha2VzIHRoaW5ncyBzdHJhaWdodGZvcndhcmQgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuXG5cbkkgbmVlZGVkIHRvIGNvbmZpcm0gdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24gYW5kIGluaXRpYWxseSBJIHRob3VnaHQgaXQgd2FzIGp1c3QgYFRJUENgLCBidXQgSSB3YW50ZWQgdG8gbWFrZSBzdXJlIHRoZXJlIHdlcmVuJ3QgYW55IG90aGVyIGRlcGVuZGVuY2llcyB0aGF0IEkgd2FzIG1pc3NpbmcuIEl0IGxvb2tzIGxpa2UgYENPTkZJR19USVBDYCBpcyB0aGUgcHJpbWFyeSBvbmUsIGFuZCB0aGFua2Z1bGx5IGl0IGNhbiBiZSBidWlsdC1pbiwgd2hpY2ggaXMgd2hhdCB3ZSB1c3VhbGx5IHdhbnQgZm9yIHN5emthbGxlci5cblxuSSBkaWQgYSBzZWNvbmQgcGFzcyB0aHJvdWdoIHRoZSBwYXRjaCB0byBzZWUgaWYgSSBoYWQgbWlzc2VkIGFueXRoaW5nLiBUaGVyZSdzIGEgYCNpZmRlZiBDT05GSUdfVElQQ19DUllQVE9gIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBidXQgdGhlIHBhdGNoIGl0c2VsZiBkb2Vzbid0IHNlZW0gdG8gZGVwZW5kIG9uIGl0LiBTbywgeWVhaCwgaXQgbG9va3MgbGlrZSBgVElQQ2AgYWxvbmUgaXMgc3VmZmljaWVudCBmb3IgdGhpcyBvbmUuXG5cbkFscmlnaHQsIHdpdGggdGhhdCBjb25maXJtZWQsIEkgdGhpbmsgd2UncmUgZ29vZCB0byBjYWxsIGBzZXQtcmVzdWx0c2AgYW5kIG1vdmUgZm9yd2FyZCB3aXRoIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMzE4LCJPdXRwdXRUb2tlbnMiOjE0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxOTozMDoxMi44Mjc0MzI2OTRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjQ1NDIwNTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRJUENcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0aXBjX25hbWVkX25vZGVfdXBcIixcbiAgICBcInRpcGNfbmFtZWRfZGlzdF9jbHVzdGVyX3Njb3BlXCIsXG4gICAgXCJ0aXBjX25hbWV0YmxfcHVibGlzaFwiLFxuICAgIFwidGlwY19uYW1ldGJsX3dpdGhkcmF3XCIsXG4gICAgXCJ0aXBjX25vZGVfd2FrZXVwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHdvcmtxdWV1ZSBmb3IgYnVsayBkaXN0cmlidXRpb24gb2YgY2x1c3RlciBzY29wZSBwdWJsaWNhdGlvbnMgaW4gVElQQywgbW9kaWZ5aW5nIGNvcmUgcHJvdG9jb2wgbG9naWMgc3VjaCBhcyBub2RlIHN0YXRlIG1hbmFnZW1lbnQgYW5kIG5hbWUgdGFibGUgcHVibGlzaGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBUSVBDIHN1YnN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUSVBDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGlwY19uYW1lZF9ub2RlX3VwXCIsXG4gICAgXCJ0aXBjX25hbWVkX2Rpc3RfY2x1c3Rlcl9zY29wZVwiLFxuICAgIFwidGlwY19uYW1ldGJsX3B1Ymxpc2hcIixcbiAgICBcInRpcGNfbmFtZXRibF93aXRoZHJhd1wiLFxuICAgIFwidGlwY19ub2RlX3dha2V1cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSB3b3JrcXVldWUgZm9yIGJ1bGsgZGlzdHJpYnV0aW9uIG9mIGNsdXN0ZXIgc2NvcGUgcHVibGljYXRpb25zIGluIFRJUEMsIG1vZGlmeWluZyBjb3JlIHByb3RvY29sIGxvZ2ljIHN1Y2ggYXMgbm9kZSBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBuYW1lIHRhYmxlIHB1Ymxpc2hpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgVElQQyBzdWJzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowpr7cp[1] Phase: Succeeded StartedAt: 2026-07-31 19:30:24 +0000 UTC FinishedAt: 2026-07-31 19:30:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr7cp[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-31 19:30:24 +0000 UTC FinishedAt: 2026-07-31 19:30:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr7cp[2] Phase: Succeeded StartedAt: 2026-07-31 19:30:24 +0000 UTC FinishedAt: 2026-07-31 23:17:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 19:30:24 +0000 UTC FinishedAt: 2026-07-31 23:17:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 19:30:24 +0000 UTC FinishedAt: 2026-07-31 19:30:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 19:30:24 +0000 UTC FinishedAt: 2026-07-31 19:30:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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-workflowpr7cp/series-workflowpr7cp-convert-artifact-2169784541/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 19:30:34 +0000 UTC FinishedAt: 2026-07-31 19:50:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 19:30:34 +0000 UTC FinishedAt: 2026-07-31 19:50:41 +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:*df5a0a28-2f55-4bf6-9d21-fa4d8d83a176,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-workflowpr7cp/series-workflowpr7cp-convert-artifact-2169784541/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": "9a3cbb0f-0b7b-42f1-8e7b-8a4c91b2524e", "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-workflowpr7cp/series-workflowpr7cp-build-action-2379684883/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 19:30:34 +0000 UTC FinishedAt: 2026-07-31 19:50:31 +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:*df5a0a28-2f55-4bf6-9d21-fa4d8d83a176,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-workflowpr7cp/series-workflowpr7cp-convert-artifact-2169784541/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": "9a3cbb0f-0b7b-42f1-8e7b-8a4c91b2524e", "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-workflowpr7cp/series-workflowpr7cp-build-action-2379684883/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 19:50:41 +0000 UTC FinishedAt: 2026-07-31 19:50:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 19:50:41 +0000 UTC FinishedAt: 2026-07-31 19:50:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 19:50:41 +0000 UTC FinishedAt: 2026-07-31 19:50:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 19:50:41 +0000 UTC FinishedAt: 2026-07-31 19:50:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-workflowpr7cp/series-workflowpr7cp-convert-artifact-2464359096/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 19:50:51 +0000 UTC FinishedAt: 2026-07-31 19:53:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 19:50:51 +0000 UTC FinishedAt: 2026-07-31 19:52:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9a3cbb0f-0b7b-42f1-8e7b-8a4c91b2524e,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-workflowpr7cp/series-workflowpr7cp-build-action-2379684883/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-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 19:53:06 +0000 UTC FinishedAt: 2026-07-31 19:53:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 19:53:06 +0000 UTC FinishedAt: 2026-07-31 19:53:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 19:53:06 +0000 UTC FinishedAt: 2026-07-31 20:12:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 19:53:06 +0000 UTC FinishedAt: 2026-07-31 20:12: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:*df5a0a28-2f55-4bf6-9d21-fa4d8d83a176,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-workflowpr7cp/series-workflowpr7cp-convert-artifact-2464359096/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": "48d93854-4314-43c4-b92b-1535fd55ddd4", "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-workflowpr7cp/series-workflowpr7cp-build-action-1089944484/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 19:53:06 +0000 UTC FinishedAt: 2026-07-31 20:12: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:*df5a0a28-2f55-4bf6-9d21-fa4d8d83a176,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-workflowpr7cp/series-workflowpr7cp-convert-artifact-2464359096/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": "48d93854-4314-43c4-b92b-1535fd55ddd4", "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-workflowpr7cp/series-workflowpr7cp-build-action-1089944484/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 20:12:45 +0000 UTC FinishedAt: 2026-07-31 20:12:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 20:12:45 +0000 UTC FinishedAt: 2026-07-31 20:12:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 20:12:45 +0000 UTC FinishedAt: 2026-07-31 20:15:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 20:12:45 +0000 UTC FinishedAt: 2026-07-31 20:14:51 +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:*48d93854-4314-43c4-b92b-1535fd55ddd4,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-workflowpr7cp/series-workflowpr7cp-build-action-1089944484/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-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 20:15:01 +0000 UTC FinishedAt: 2026-07-31 23:17:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 20:15:01 +0000 UTC FinishedAt: 2026-07-31 23:17:54 +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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"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:*9a3cbb0f-0b7b-42f1-8e7b-8a4c91b2524e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*48d93854-4314-43c4-b92b-1535fd55ddd4,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-workflowpr7cp/series-workflowpr7cp-build-action-2379684883/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-workflowpr7cp/series-workflowpr7cp-build-action-1089944484/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 20:15:01 +0000 UTC FinishedAt: 2026-07-31 20:15:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 20:15:01 +0000 UTC FinishedAt: 2026-07-31 20:15:07 +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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"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-workflowpr7cp/series-workflowpr7cp-convert-artifact-1334269969/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 20:15:01 +0000 UTC FinishedAt: 2026-07-31 20:15:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 20:15:01 +0000 UTC FinishedAt: 2026-07-31 20:15:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 20:15:01 +0000 UTC FinishedAt: 2026-07-31 20:15:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 20:15:11 +0000 UTC FinishedAt: 2026-07-31 23:17:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr7cp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"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":["tipc_named_node_up","tipc_named_dist_cluster_scope","tipc_nametbl_publish","tipc_nametbl_withdraw","tipc_node_wakeup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC"],"series_id":"28753c25-e0ae-420b-a38c-7a0f776a947b","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-31 20:15:11 +0000 UTC FinishedAt: 2026-07-31 23:17:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9a3cbb0f-0b7b-42f1-8e7b-8a4c91b2524e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*48d93854-4314-43c4-b92b-1535fd55ddd4,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-workflowpr7cp/series-workflowpr7cp-build-action-2379684883/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-workflowpr7cp/series-workflowpr7cp-build-action-1089944484/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-workflowpr7cp/series-workflowpr7cp-convert-artifact-1334269969/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,}