Name: series-workflow7672g Phase: Succeeded StartedAt: 2026-08-05 18:14:13 +0000 UTC FinishedAt: 2026-08-05 22:14:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7672g[0] Phase: Succeeded StartedAt: 2026-08-05 18:14:13 +0000 UTC FinishedAt: 2026-08-05 18:32:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7672g[0].run-triage Phase: Succeeded StartedAt: 2026-08-05 18:14:13 +0000 UTC FinishedAt: 2026-08-05 18:32:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "20a772f1-dedb-4e04-83a0-fbf0566ec5f6" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_check" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gdXNlIGEgQlRGIGZsYWcgKEtGX1NQSU5MT0NLX1NBRkUpIHRvIGRldGVybWluZSBpZiBhIGtmdW5jIGNhbiBiZSBjYWxsZWQgd2hpbGUgaG9sZGluZyBhIEJQRiBzcGlubG9jaywgcmVwbGFjaW5nIGEgaGFyZGNvZGVkIGxpc3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdmVyaWZpZXImIzM5O3Mgc2FmZXR5IGNoZWNrcyBhbmQgYWxsb3dzIGV4dGVybmFsIG1vZHVsZXMgdG8gbWFyayB0aGVpciBrZnVuY3MgYXMgc3BpbmxvY2stc2FmZS4gSXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxODozMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDBiZDM1MjI4NzlmNmI4ZjkyNmUzMzU2NGNhNzNjYThjY2RhZTYzODZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDE4OjMxOjM4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnRmLmggYi9pbmNsdWRlL2xpbnV4L2J0Zi5oXG5pbmRleCBjMDliNzk5NGRlNGViLi4zZjUyNTVkMDk1YTI3IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9idGYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9idGYuaFxuQEAgLTc5LDYgJiM0Mzs3OSw3IEBAXG4gI2RlZmluZSBLRl9BUkVOQV9BUkcxICAgKDEgXHUwMDNjXHUwMDNjIDE0KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBmaXJzdCBhcmd1bWVudCAqL1xuICNkZWZpbmUgS0ZfQVJFTkFfQVJHMiAgICgxIFx1MDAzY1x1MDAzYyAxNSkgLyoga2Z1bmMgdGFrZXMgYW4gYXJlbmEgcG9pbnRlciBhcyBpdHMgc2Vjb25kIGFyZ3VtZW50ICovXG4gI2RlZmluZSBLRl9JTVBMSUNJVF9BUkdTICgxIFx1MDAzY1x1MDAzYyAxNikgLyoga2Z1bmMgaGFzIGltcGxpY2l0IGFyZ3VtZW50cyBzdXBwbGllZCBieSB0aGUgdmVyaWZpZXIgKi9cbiYjNDM7I2RlZmluZSBLRl9TUElOTE9DS19TQUZFICgxIFx1MDAzY1x1MDAzYyAxNykgLyoga2Z1bmMgaXMgYWxsb3dlZCBpbnNpZGUgYnBmX3NwaW5fbG9jay1lZCByZWdpb24gKi9cbiBcbiAvKlxuICAqIFRhZyBtYXJraW5nIGEga2VybmVsIGZ1bmN0aW9uIGFzIGEga2Z1bmMuIFRoaXMgaXMgbWVhbnQgdG8gbWluaW1pemUgdGhlXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9hcmVuYS5jIGIva2VybmVsL2JwZi9hcmVuYS5jXG5pbmRleCA1NTVlZTI1MzFlZjk4Li43YjY4NDcyMDBiNDMxIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9hcmVuYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL2FyZW5hLmNcbkBAIC0xMTE4LDkgJiM0MzsxMTE4LDkgQEAgX19icGZfa2Z1bmMgaW50IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKHZvaWQgKnBfX21hcCwgdm9pZCAqcHRyX19pZ24sIHUzMiBwYWdlX2NcbiBfX2JwZl9rZnVuY19lbmRfZGVmcygpO1xuIFxuIEJURl9LRlVOQ1NfU1RBUlQoYXJlbmFfa2Z1bmNzKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfYXJlbmFfYWxsb2NfcGFnZXMsIEtGX0FSRU5BX1JFVCB8IEtGX0FSRU5BX0FSRzIpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9mcmVlX3BhZ2VzLCBLRl9BUkVOQV9BUkcyKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcywgS0ZfQVJFTkFfQVJHMilcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9hbGxvY19wYWdlcywgS0ZfQVJFTkFfUkVUIHwgS0ZfQVJFTkFfQVJHMiB8IEtGX1NQSU5MT0NLX1NBRkUpXG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfYXJlbmFfZnJlZV9wYWdlcywgS0ZfQVJFTkFfQVJHMiB8IEtGX1NQSU5MT0NLX1NBRkUpXG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcywgS0ZfQVJFTkFfQVJHMiB8IEtGX1NQSU5MT0NLX1NBRkUpXG4gQlRGX0tGVU5DU19FTkQoYXJlbmFfa2Z1bmNzKVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX2tmdW5jX2lkX3NldCBjb21tb25fa2Z1bmNfc2V0ID0ge1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvaGVscGVycy5jIGIva2VybmVsL2JwZi9oZWxwZXJzLmNcbmluZGV4IDQ3MDlhNWFkMDQ3NDcuLjYzODhiNmIyM2U0OTAgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2hlbHBlcnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9oZWxwZXJzLmNcbkBAIC00ODEyLDMwICYjNDM7NDgxMiwzMiBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX29ial9kcm9wLCBLRl9SRUxFQVNFIHwgS0ZfSU1QTElDSVRfQVJHUylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX29ial9kcm9wX2ltcGwsIEtGX1JFTEVBU0UpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX2Ryb3AsIEtGX1JFTEVBU0UgfCBLRl9JTVBMSUNJVF9BUkdTKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcGVyY3B1X29ial9kcm9wX2ltcGwsIEtGX1JFTEVBU0UpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZWZjb3VudF9hY3F1aXJlLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UgfCBLRl9JTVBMSUNJVF9BUkdTKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfZnJvbnQsIEtGX0lNUExJQ0lUX0FSR1MpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfZnJvbnRfaW1wbClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9iYWNrLCBLRl9JTVBMSUNJVF9BUkdTKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2JhY2tfaW1wbClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfYWRkLCBLRl9JTVBMSUNJVF9BUkdTKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wb3BfZnJvbnQsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcG9wX2JhY2ssIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfZGVsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2Zyb250LCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfYmFjaywgS0ZfUkVUX05VTEwpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2lzX2ZpcnN0KVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9pc19sYXN0KVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9lbXB0eSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZWZjb3VudF9hY3F1aXJlLFxuJiM0MztcdCAgICAgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVIHwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUpXG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLFxuJiM0MztcdCAgICAgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfZnJvbnQsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udF9pbXBsLCBLRl9TUElOTE9DS19TQUZFKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9iYWNrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfYmFja19pbXBsLCBLRl9TUElOTE9DS19TQUZFKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfYWRkLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3BvcF9mcm9udCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3BvcF9iYWNrLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfZGVsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfZnJvbnQsIEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2JhY2ssIEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2lzX2ZpcnN0LCBLRl9TUElOTE9DS19TQUZFKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfaXNfbGFzdCwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2VtcHR5LCBLRl9TUElOTE9DS19TQUZFKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza19hY3F1aXJlLCBLRl9BQ1FVSVJFIHwgS0ZfUkNVIHwgS0ZfUkVUX05VTEwpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3JlbGVhc2UsIEtGX1JFTEVBU0UpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfcmVtb3ZlLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfYWRkLCBLRl9JTVBMSUNJVF9BUkdTKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2FkZF9pbXBsKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2ZpcnN0LCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9yb290LCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9sZWZ0LCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9yaWdodCwgS0ZfUkVUX05VTEwpXG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX3JlbW92ZSwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfYWRkLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfYWRkX2ltcGwsIEtGX1NQSU5MT0NLX1NBRkUpXG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2ZpcnN0LCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpXG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX3Jvb3QsIEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfbGVmdCwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9yaWdodCwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxuIFxuICNpZmRlZiBDT05GSUdfQ0dST1VQU1xuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfY2dyb3VwX2FjcXVpcmUsIEtGX0FDUVVJUkUgfCBLRl9SQ1UgfCBLRl9SRVRfTlVMTClcbkBAIC00ODg1LDkgJiM0Mzs0ODg3LDkgQEAgQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yY3VfcmVhZF9sb2NrKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmN1X3JlYWRfdW5sb2NrKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfZHlucHRyX3NsaWNlLCBLRl9SRVRfTlVMTClcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2R5bnB0cl9zbGljZV9yZHdyLCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfbnVtX25ldywgS0ZfSVRFUl9ORVcpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX251bV9uZXh0LCBLRl9JVEVSX05FWFQgfCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3ksIEtGX0lURVJfREVTVFJPWSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX251bV9uZXcsIEtGX0lURVJfTkVXIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX251bV9uZXh0LCBLRl9JVEVSX05FWFQgfCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpXG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9udW1fZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfdGFza192bWFfbmV3LCBLRl9JVEVSX05FVyB8IEtGX1JDVSlcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfdGFza192bWFfbmV4dCwgS0ZfSVRFUl9ORVhUIHwgS0ZfUkVUX05VTEwpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX3Rhc2tfdm1hX2Rlc3Ryb3ksIEtGX0lURVJfREVTVFJPWSlcbkBAIC00OTYyLDggJiM0Mzs0OTY0LDggQEAgQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2FzZXN0cik7XG4gI2lmIGRlZmluZWQoQ09ORklHX0JQRl9MU00pIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19DR1JPVVBTKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfY2dyb3VwX3JlYWRfeGF0dHIsIEtGX1JDVSlcbiAjZW5kaWZcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV92cHJpbnRrLCBLRl9JTVBMSUNJVF9BUkdTKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrLCBLRl9JTVBMSUNJVF9BUkdTKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV92cHJpbnRrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbCwgS0ZfSU1QTElDSVRfQVJHUylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWUsIEtGX0lNUExJQ0lUX0FSR1MpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9keW5wdHJfZnJvbV9maWxlKVxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvcnFzcGlubG9jay5jIGIva2VybmVsL2JwZi9ycXNwaW5sb2NrLmNcbmluZGV4IGU0ZTMzOGNkYjQzN2MuLmU1MjdjYjQyNWNmNDUgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3Jxc3BpbmxvY2suY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9ycXNwaW5sb2NrLmNcbkBAIC03NDQsMTAgJiM0Mzs3NDQsMTAgQEAgX19icGZfa2Z1bmMgdm9pZCBicGZfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoc3RydWN0IGJwZl9yZXNfc3Bpbl9sb2NrICpsb2NrLFxuIF9fYnBmX2tmdW5jX2VuZF9kZWZzKCk7XG4gXG4gQlRGX0tGVU5DU19TVEFSVChycXNwaW5sb2NrX2tmdW5jX2lkcylcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX2xvY2ssIEtGX1JFVF9OVUxMKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVzX3NwaW5fdW5sb2NrKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVzX3NwaW5fbG9ja19pcnFzYXZlLCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX3VubG9ja19pcnFyZXN0b3JlKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX2xvY2ssIEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZXNfc3Bpbl91bmxvY2ssIEtGX1NQSU5MT0NLX1NBRkUpXG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVzX3NwaW5fbG9ja19pcnFzYXZlLCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpXG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmUsIEtGX1NQSU5MT0NLX1NBRkUpXG4gQlRGX0tGVU5DU19FTkQocnFzcGlubG9ja19rZnVuY19pZHMpXG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBidGZfa2Z1bmNfaWRfc2V0IHJxc3BpbmxvY2tfa2Z1bmNfc2V0ID0ge1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggYjI3NDAwNGZjY2ZkOS4uN2MxZWRjYWUyOTNhOCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTE3OTcsMjAgJiM0MzsxMTc5Nyw2IEBAIHN0YXRpYyBib29sIGlzX2JwZl9yYnRyZWVfYXBpX2tmdW5jKHUzMiBidGZfaWQpXG4gXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX3JpZ2h0XTtcbiB9XG4gXG4tc3RhdGljIGJvb2wgaXNfYnBmX2l0ZXJfbnVtX2FwaV9rZnVuYyh1MzIgYnRmX2lkKVxuLXtcbi1cdHJldHVybiBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9pdGVyX251bV9uZXddIHx8XG4tXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfaXRlcl9udW1fbmV4dF0gfHxcbi1cdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9pdGVyX251bV9kZXN0cm95XTtcbi19XG4tXG4tc3RhdGljIGJvb2wgaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyh1MzIgYnRmX2lkKVxuLXtcbi1cdHJldHVybiBpc19icGZfbGlzdF9hcGlfa2Z1bmMoYnRmX2lkKSB8fFxuLVx0ICAgICAgIGlzX2JwZl9yYnRyZWVfYXBpX2tmdW5jKGJ0Zl9pZCkgfHxcbi1cdCAgICAgICBpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyhidGZfaWQpO1xuLX1cbi1cbiBzdGF0aWMgYm9vbCBpc19icGZfcmVzX3NwaW5fbG9ja19rZnVuYyh1MzIgYnRmX2lkKVxuIHtcbiBcdHJldHVybiBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrXSB8fFxuQEAgLTExODE5LDI0ICYjNDM7MTE4MDUsMTYgQEAgc3RhdGljIGJvb2wgaXNfYnBmX3Jlc19zcGluX2xvY2tfa2Z1bmModTMyIGJ0Zl9pZClcbiBcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZV07XG4gfVxuIFxuLXN0YXRpYyBib29sIGlzX2JwZl9hcmVuYV9rZnVuYyh1MzIgYnRmX2lkKVxuJiM0MztzdGF0aWMgYm9vbCBrZnVuY19zcGluX2FsbG93ZWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgczMyIGZ1bmNfaWQsIHMxNiBvZmZzZXQpXG4ge1xuLVx0cmV0dXJuIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX2FsbG9jX3BhZ2VzXSB8fFxuLVx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX2ZyZWVfcGFnZXNdIHx8XG4tXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfYXJlbmFfcmVzZXJ2ZV9wYWdlc107XG4tfVxuJiM0MztcdHN0cnVjdCBicGZfa2Z1bmNfbWV0YSBrZnVuYztcbiYjNDM7XHRpbnQgZXJyO1xuIFxuLXN0YXRpYyBib29sIGlzX2JwZl9zdHJlYW1fa2Z1bmModTMyIGJ0Zl9pZClcbi17XG4tXHRyZXR1cm4gYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc3RyZWFtX3ZwcmludGtdIHx8XG4tXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc3RyZWFtX3ByaW50X3N0YWNrXTtcbi19XG4mIzQzO1x0ZXJyID0gZmV0Y2hfa2Z1bmNfbWV0YShlbnYsIGZ1bmNfaWQsIG9mZnNldCwgXHUwMDI2a2Z1bmMpO1xuJiM0MztcdGlmIChlcnIgfHwgIWtmdW5jLmZsYWdzKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuIFxuLXN0YXRpYyBib29sIGtmdW5jX3NwaW5fYWxsb3dlZCh1MzIgYnRmX2lkKVxuLXtcbi1cdHJldHVybiBpc19icGZfZ3JhcGhfYXBpX2tmdW5jKGJ0Zl9pZCkgfHwgaXNfYnBmX2l0ZXJfbnVtX2FwaV9rZnVuYyhidGZfaWQpIHx8XG4tXHQgICAgICAgaXNfYnBmX3Jlc19zcGluX2xvY2tfa2Z1bmMoYnRmX2lkKSB8fCBpc19icGZfYXJlbmFfa2Z1bmMoYnRmX2lkKSB8fFxuLVx0ICAgICAgIGlzX2JwZl9zdHJlYW1fa2Z1bmMoYnRmX2lkKTtcbiYjNDM7XHRyZXR1cm4gKmtmdW5jLmZsYWdzIFx1MDAyNiBLRl9TUElOTE9DS19TQUZFO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCBpc19zeW5jX2NhbGxiYWNrX2NhbGxpbmdfa2Z1bmModTMyIGJ0Zl9pZClcbkBAIC0xNzQxNSw3ICYjNDM7MTczOTMsNyBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX2luc24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgYm9vbCAqZG9fcHJpbnRfc3RhdGUpXG4gXHRcdFx0XHQgICAgIGluc24tXHUwMDNlaW1tICE9IEJQRl9GVU5DX3NwaW5fdW5sb2NrIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0ICAgICBpbnNuLVx1MDAzZWltbSAhPSBCUEZfRlVOQ19rcHRyX3hjaGcpIHx8XG4gXHRcdFx0XHQgICAgKGluc24tXHUwMDNlc3JjX3JlZyA9PSBCUEZfUFNFVURPX0tGVU5DX0NBTEwgXHUwMDI2XHUwMDI2XG4tXHRcdFx0XHQgICAgIChpbnNuLVx1MDAzZW9mZiAhPSAwIHx8ICFrZnVuY19zcGluX2FsbG93ZWQoaW5zbi1cdTAwM2VpbW0pKSkpIHtcbiYjNDM7XHRcdFx0XHQgICAgICFrZnVuY19zcGluX2FsbG93ZWQoZW52LCBpbnNuLVx1MDAzZWltbSwgaW5zbi1cdTAwM2VvZmYpKSkge1xuIFx0XHRcdFx0XHR2ZXJib3NlKGVudixcbiBcdFx0XHRcdFx0XHRcJiMzNDtmdW5jdGlvbiBjYWxscyBhcmUgbm90IGFsbG93ZWQgd2hpbGUgaG9sZGluZyBhIGxvY2tcXG5cJiMzNDspO1xuIFx0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19jYWxsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19jYWxsLmNcbmluZGV4IDdhZjU1NjBmMmEwOGMuLjJiMzljYzFiMDlmOWEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19jYWxsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2NhbGwuY1xuQEAgLTcxLDggJiM0Mzs3MSwxMCBAQCBzdGF0aWMgc3RydWN0IGtmdW5jX3Rlc3RfcGFyYW1zIGtmdW5jX3Rlc3RzW10gPSB7XG4gXHRUQ19GQUlMKGtmdW5jX2NhbGxfdGVzdF9nZXRfbWVtX2ZhaWxfbm90X2NvbnN0LCAwLCBcJiMzNDtpcyBub3QgYSBjb25zdFwmIzM0OyksXG4gXHRUQ19GQUlMKGtmdW5jX2NhbGxfdGVzdF9tZW1fYWNxdWlyZV9mYWlsLCAwLCBcJiMzNDthY3F1aXJlIGtlcm5lbCBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gUFRSX1RPX0JURl9JRFwmIzM0OyksXG4gXHRUQ19GQUlMKGtmdW5jX2NhbGxfdGVzdF9wb2ludGVyX2FyZ190eXBlX21pc21hdGNoLCAwLCBcJiMzNDtSMSBleHBlY3RlZCBwb2ludGVyIHRvIGN0eCwgYnV0IGdvdCBzY2FsYXJcJiMzNDspLFxuJiM0MztcdFRDX0ZBSUwoa2Z1bmNfY2FsbF90ZXN0X3NwaW5fbG9ja191bnNhZmUsIDAsIFwmIzM0O2Z1bmN0aW9uIGNhbGxzIGFyZSBub3QgYWxsb3dlZCB3aGlsZSBob2xkaW5nIGEgbG9ja1wmIzM0OyksXG4gXG4gXHQvKiBzdWNjZXNzIGNhc2VzICovXG4mIzQzO1x0VENfVEVTVChrZnVuY19jYWxsX3Rlc3Rfc3Bpbl9sb2NrX3NhZmUsIDApLFxuIFx0VENfVEVTVChrZnVuY19jYWxsX3Rlc3QxLCAxMiksXG4gXHRUQ19URVNUKGtmdW5jX2NhbGxfdGVzdDIsIDMpLFxuIFx0VENfVEVTVChrZnVuY19jYWxsX3Rlc3Q0LCAtMTIzNCksXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfZmFpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfZmFpbC5jXG5pbmRleCA2NGI2YTBiMGFiMWNjLi43ZTkzZjdmYjEzMjk5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfZmFpbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfY2FsbF9mYWlsLmNcbkBAIC00LDYgJiM0Mzs0LDE4IEBAXG4gI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiAjaW5jbHVkZSBcJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcJiMzNDtcbiBcbiYjNDM7c3RhdGljIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGtmdW5jX2NhbGxfbG9jayBTRUMoXCYjMzQ7LmRhdGEuQVwmIzM0Oyk7XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7P3RjXCYjMzQ7KVxuJiM0MztpbnQga2Z1bmNfY2FsbF90ZXN0X3NwaW5fbG9ja191bnNhZmUoc3RydWN0IF9fc2tfYnVmZiAqc2tiKVxuJiM0Mzt7XG4mIzQzO1x0YnBmX3NwaW5fbG9jayhcdTAwMjZrZnVuY19jYWxsX2xvY2spO1xuJiM0MztcdGJwZl9rZnVuY190cmlnZ2VyX2N0eF9jaGVjaygpO1xuJiM0MztcdGJwZl9zcGluX3VubG9jayhcdTAwMjZrZnVuY19jYWxsX2xvY2spO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiBzdHJ1Y3Qgc3lzY2FsbF90ZXN0X2FyZ3Mge1xuIFx0X191OCBkYXRhWzE2XTtcbiBcdHNpemVfdCBzaXplO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19jYWxsX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19jYWxsX3Rlc3QuY1xuaW5kZXggNWVkYzUxNTY0ZjcxMS4uOGU2NTYwYzMxZTc4MSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19jYWxsX3Rlc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfdGVzdC5jXG5AQCAtNSw2ICYjNDM7NSwxOCBAQFxuICNpbmNsdWRlIFwmIzM0O2JwZl9taXNjLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcJiMzNDtcbiBcbiYjNDM7c3RhdGljIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGtmdW5jX2NhbGxfbG9jayBTRUMoXCYjMzQ7LmRhdGEuQVwmIzM0Oyk7XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7dGNcJiMzNDspXG4mIzQzO2ludCBrZnVuY19jYWxsX3Rlc3Rfc3Bpbl9sb2NrX3NhZmUoc3RydWN0IF9fc2tfYnVmZiAqc2tiKVxuJiM0Mzt7XG4mIzQzO1x0YnBmX3NwaW5fbG9jayhcdTAwMjZrZnVuY19jYWxsX2xvY2spO1xuJiM0MztcdGJwZl90ZXN0bW9kX3Rlc3RfbW9kX2tmdW5jKDQyKTtcbiYjNDM7XHRicGZfc3Bpbl91bmxvY2soXHUwMDI2a2Z1bmNfY2FsbF9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gU0VDKFwmIzM0O3RjXCYjMzQ7KVxuIGludCBrZnVuY19jYWxsX3Rlc3Q1KHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcbiB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcbmluZGV4IGViMGY5YjVlMThkODUuLjA1ODU3OTQ2MDZlZDggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXG5AQCAtMTM4NCw3ICYjNDM7MTM4NCw3IEBAIF9fYnBmX2tmdW5jIHZvaWQgYnBmX2tmdW5jX3RyaWdnZXJfY3R4X2NoZWNrKHZvaWQpXG4gfVxuIFxuIEJURl9LRlVOQ1NfU1RBUlQoYnBmX3Rlc3Rtb2RfY2hlY2tfa2Z1bmNfaWRzKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGVzdG1vZF90ZXN0X21vZF9rZnVuYylcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90ZXN0bW9kX3Rlc3RfbW9kX2tmdW5jLCBLRl9TUElOTE9DS19TQUZFKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfa2Z1bmNfY2FsbF90ZXN0MSlcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX2NhbGxfdGVzdDIpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9rZnVuY19jYWxsX3Rlc3QzKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjMxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9jaGVjayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHVzZSBhIEJURiBmbGFnIChLRl9TUElOTE9DS19TQUZFKSB0byBkZXRlcm1pbmUgaWYgYSBrZnVuYyBjYW4gYmUgY2FsbGVkIHdoaWxlIGhvbGRpbmcgYSBCUEYgc3BpbmxvY2ssIHJlcGxhY2luZyBhIGhhcmRjb2RlZCBsaXN0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHZlcmlmaWVyJiMzOTtzIHNhZmV0eSBjaGVja3MgYW5kIGFsbG93cyBleHRlcm5hbCBtb2R1bGVzIHRvIG1hcmsgdGhlaXIga2Z1bmNzIGFzIHNwaW5sb2NrLXNhZmUuIEl0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwYmQzNTIyODc5ZjZiOGY5MjZlMzM1NjRjYTczY2E4Y2NkYWU2Mzg2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgNSAxODozMTozOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnRmLmggYi9pbmNsdWRlL2xpbnV4L2J0Zi5oCmluZGV4IGMwOWI3OTk0ZGU0ZWIuLjNmNTI1NWQwOTVhMjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvYnRmLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9idGYuaApAQCAtNzksNiAmIzQzOzc5LDcgQEAKICNkZWZpbmUgS0ZfQVJFTkFfQVJHMSAgICgxICZsdDsmbHQ7IDE0KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBmaXJzdCBhcmd1bWVudCAqLwogI2RlZmluZSBLRl9BUkVOQV9BUkcyICAgKDEgJmx0OyZsdDsgMTUpIC8qIGtmdW5jIHRha2VzIGFuIGFyZW5hIHBvaW50ZXIgYXMgaXRzIHNlY29uZCBhcmd1bWVudCAqLwogI2RlZmluZSBLRl9JTVBMSUNJVF9BUkdTICgxICZsdDsmbHQ7IDE2KSAvKiBrZnVuYyBoYXMgaW1wbGljaXQgYXJndW1lbnRzIHN1cHBsaWVkIGJ5IHRoZSB2ZXJpZmllciAqLwomIzQzOyNkZWZpbmUgS0ZfU1BJTkxPQ0tfU0FGRSAoMSAmbHQ7Jmx0OyAxNykgLyoga2Z1bmMgaXMgYWxsb3dlZCBpbnNpZGUgYnBmX3NwaW5fbG9jay1lZCByZWdpb24gKi8KIAogLyoKICAqIFRhZyBtYXJraW5nIGEga2VybmVsIGZ1bmN0aW9uIGFzIGEga2Z1bmMuIFRoaXMgaXMgbWVhbnQgdG8gbWluaW1pemUgdGhlCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2FyZW5hLmMgYi9rZXJuZWwvYnBmL2FyZW5hLmMKaW5kZXggNTU1ZWUyNTMxZWY5OC4uN2I2ODQ3MjAwYjQzMSAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi9hcmVuYS5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvYXJlbmEuYwpAQCAtMTExOCw5ICYjNDM7MTExOCw5IEBAIF9fYnBmX2tmdW5jIGludCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyh2b2lkICpwX19tYXAsIHZvaWQgKnB0cl9faWduLCB1MzIgcGFnZV9jCiBfX2JwZl9rZnVuY19lbmRfZGVmcygpOwogCiBCVEZfS0ZVTkNTX1NUQVJUKGFyZW5hX2tmdW5jcykKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfYXJlbmFfYWxsb2NfcGFnZXMsIEtGX0FSRU5BX1JFVCB8IEtGX0FSRU5BX0FSRzIpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2FyZW5hX2ZyZWVfcGFnZXMsIEtGX0FSRU5BX0FSRzIpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMsIEtGX0FSRU5BX0FSRzIpCiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9hbGxvY19wYWdlcywgS0ZfQVJFTkFfUkVUIHwgS0ZfQVJFTkFfQVJHMiB8IEtGX1NQSU5MT0NLX1NBRkUpCiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9mcmVlX3BhZ2VzLCBLRl9BUkVOQV9BUkcyIHwgS0ZfU1BJTkxPQ0tfU0FGRSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMsIEtGX0FSRU5BX0FSRzIgfCBLRl9TUElOTE9DS19TQUZFKQogQlRGX0tGVU5DU19FTkQoYXJlbmFfa2Z1bmNzKQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGJ0Zl9rZnVuY19pZF9zZXQgY29tbW9uX2tmdW5jX3NldCA9IHsKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvaGVscGVycy5jIGIva2VybmVsL2JwZi9oZWxwZXJzLmMKaW5kZXggNDcwOWE1YWQwNDc0Ny4uNjM4OGI2YjIzZTQ5MCAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi9oZWxwZXJzLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9oZWxwZXJzLmMKQEAgLTQ4MTIsMzAgJiM0Mzs0ODEyLDMyIEBAIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfb2JqX2Ryb3AsIEtGX1JFTEVBU0UgfCBLRl9JTVBMSUNJVF9BUkdTKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9vYmpfZHJvcF9pbXBsLCBLRl9SRUxFQVNFKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX2Ryb3AsIEtGX1JFTEVBU0UgfCBLRl9JTVBMSUNJVF9BUkdTKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX2Ryb3BfaW1wbCwgS0ZfUkVMRUFTRSkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZSwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVIHwgS0ZfSU1QTElDSVRfQVJHUykKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udCwgS0ZfSU1QTElDSVRfQVJHUykKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250X2ltcGwpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9iYWNrLCBLRl9JTVBMSUNJVF9BUkdTKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfYmFja19pbXBsKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2FkZCwgS0ZfSU1QTElDSVRfQVJHUykKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wb3BfZnJvbnQsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wb3BfYmFjaywgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2RlbCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2Zyb250LCBLRl9SRVRfTlVMTCkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9iYWNrLCBLRl9SRVRfTlVMTCkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9pc19maXJzdCkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9pc19sYXN0KQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2VtcHR5KQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZSwKJiM0MzsJICAgICBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UgfCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbCwKJiM0MzsJICAgICBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UgfCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250LCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udF9pbXBsLCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2JhY2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2JhY2tfaW1wbCwgS0ZfU1BJTkxPQ0tfU0FGRSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfYWRkLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcG9wX2Zyb250LCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wb3BfYmFjaywgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfZGVsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9mcm9udCwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9iYWNrLCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpCiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2lzX2ZpcnN0LCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9pc19sYXN0LCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9lbXB0eSwgS0ZfU1BJTkxPQ0tfU0FGRSkKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza19hY3F1aXJlLCBLRl9BQ1FVSVJFIHwgS0ZfUkNVIHwgS0ZfUkVUX05VTEwpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rhc2tfcmVsZWFzZSwgS0ZfUkVMRUFTRSkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX3JlbW92ZSwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfYWRkLCBLRl9JTVBMSUNJVF9BUkdTKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfYWRkX2ltcGwpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9maXJzdCwgS0ZfUkVUX05VTEwpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9yb290LCBLRl9SRVRfTlVMTCkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2xlZnQsIEtGX1JFVF9OVUxMKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfcmlnaHQsIEtGX1JFVF9OVUxMKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX3JlbW92ZSwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9hZGQsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2FkZF9pbXBsLCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2ZpcnN0LCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpCiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfcm9vdCwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2xlZnQsIEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9yaWdodCwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKQogCiAjaWZkZWYgQ09ORklHX0NHUk9VUFMKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfY2dyb3VwX2FjcXVpcmUsIEtGX0FDUVVJUkUgfCBLRl9SQ1UgfCBLRl9SRVRfTlVMTCkKQEAgLTQ4ODUsOSAmIzQzOzQ4ODcsOSBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JjdV9yZWFkX2xvY2spCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JjdV9yZWFkX3VubG9jaykKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfZHlucHRyX3NsaWNlLCBLRl9SRVRfTlVMTCkKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfZHlucHRyX3NsaWNlX3Jkd3IsIEtGX1JFVF9OVUxMKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX251bV9uZXcsIEtGX0lURVJfTkVXKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX251bV9uZXh0LCBLRl9JVEVSX05FWFQgfCBLRl9SRVRfTlVMTCkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9udW1fZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9udW1fbmV3LCBLRl9JVEVSX05FVyB8IEtGX1NQSU5MT0NLX1NBRkUpCiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX251bV9uZXh0LCBLRl9JVEVSX05FWFQgfCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpCiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX251bV9kZXN0cm95LCBLRl9JVEVSX0RFU1RST1kgfCBLRl9TUElOTE9DS19TQUZFKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX3Rhc2tfdm1hX25ldywgS0ZfSVRFUl9ORVcgfCBLRl9SQ1UpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfdGFza192bWFfbmV4dCwgS0ZfSVRFUl9ORVhUIHwgS0ZfUkVUX05VTEwpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfdGFza192bWFfZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZKQpAQCAtNDk2Miw4ICYjNDM7NDk2NCw4IEBAIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNhc2VzdHIpOwogI2lmIGRlZmluZWQoQ09ORklHX0JQRl9MU00pICZhbXA7JmFtcDsgZGVmaW5lZChDT05GSUdfQ0dST1VQUykKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfY2dyb3VwX3JlYWRfeGF0dHIsIEtGX1JDVSkKICNlbmRpZgotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fdnByaW50aywgS0ZfSU1QTElDSVRfQVJHUykKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrLCBLRl9JTVBMSUNJVF9BUkdTKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ZwcmludGssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSkKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbCwgS0ZfSU1QTElDSVRfQVJHUykKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSwgS0ZfSU1QTElDSVRfQVJHUykKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfZHlucHRyX2Zyb21fZmlsZSkKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvcnFzcGlubG9jay5jIGIva2VybmVsL2JwZi9ycXNwaW5sb2NrLmMKaW5kZXggZTRlMzM4Y2RiNDM3Yy4uZTUyN2NiNDI1Y2Y0NSAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi9ycXNwaW5sb2NrLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9ycXNwaW5sb2NrLmMKQEAgLTc0NCwxMCAmIzQzOzc0NCwxMCBAQCBfX2JwZl9rZnVuYyB2b2lkIGJwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShzdHJ1Y3QgYnBmX3Jlc19zcGluX2xvY2sgKmxvY2ssCiBfX2JwZl9rZnVuY19lbmRfZGVmcygpOwogCiBCVEZfS0ZVTkNTX1NUQVJUKHJxc3BpbmxvY2tfa2Z1bmNfaWRzKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZXNfc3Bpbl9sb2NrLCBLRl9SRVRfTlVMTCkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVzX3NwaW5fdW5sb2NrKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZXNfc3Bpbl9sb2NrX2lycXNhdmUsIEtGX1JFVF9OVUxMKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX2xvY2ssIEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX3VubG9jaywgS0ZfU1BJTkxPQ0tfU0FGRSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZSwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmUsIEtGX1NQSU5MT0NLX1NBRkUpCiBCVEZfS0ZVTkNTX0VORChycXNwaW5sb2NrX2tmdW5jX2lkcykKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBidGZfa2Z1bmNfaWRfc2V0IHJxc3BpbmxvY2tfa2Z1bmNfc2V0ID0gewpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jCmluZGV4IGIyNzQwMDRmY2NmZDkuLjdjMWVkY2FlMjkzYTggMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTExNzk3LDIwICYjNDM7MTE3OTcsNiBAQCBzdGF0aWMgYm9vbCBpc19icGZfcmJ0cmVlX2FwaV9rZnVuYyh1MzIgYnRmX2lkKQogCSAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfcmlnaHRdOwogfQogCi1zdGF0aWMgYm9vbCBpc19icGZfaXRlcl9udW1fYXBpX2tmdW5jKHUzMiBidGZfaWQpCi17Ci0JcmV0dXJuIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25ld10gfHwKLQkgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfaXRlcl9udW1fbmV4dF0gfHwKLQkgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfaXRlcl9udW1fZGVzdHJveV07Ci19Ci0KLXN0YXRpYyBib29sIGlzX2JwZl9ncmFwaF9hcGlfa2Z1bmModTMyIGJ0Zl9pZCkKLXsKLQlyZXR1cm4gaXNfYnBmX2xpc3RfYXBpX2tmdW5jKGJ0Zl9pZCkgfHwKLQkgICAgICAgaXNfYnBmX3JidHJlZV9hcGlfa2Z1bmMoYnRmX2lkKSB8fAotCSAgICAgICBpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyhidGZfaWQpOwotfQotCiBzdGF0aWMgYm9vbCBpc19icGZfcmVzX3NwaW5fbG9ja19rZnVuYyh1MzIgYnRmX2lkKQogewogCXJldHVybiBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrXSB8fApAQCAtMTE4MTksMjQgJiM0MzsxMTgwNSwxNiBAQCBzdGF0aWMgYm9vbCBpc19icGZfcmVzX3NwaW5fbG9ja19rZnVuYyh1MzIgYnRmX2lkKQogCSAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZV07CiB9CiAKLXN0YXRpYyBib29sIGlzX2JwZl9hcmVuYV9rZnVuYyh1MzIgYnRmX2lkKQomIzQzO3N0YXRpYyBib29sIGtmdW5jX3NwaW5fYWxsb3dlZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzMzIgZnVuY19pZCwgczE2IG9mZnNldCkKIHsKLQlyZXR1cm4gYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfYXJlbmFfYWxsb2NfcGFnZXNdIHx8Ci0JICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX2ZyZWVfcGFnZXNdIHx8Ci0JICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXNdOwotfQomIzQzOwlzdHJ1Y3QgYnBmX2tmdW5jX21ldGEga2Z1bmM7CiYjNDM7CWludCBlcnI7CiAKLXN0YXRpYyBib29sIGlzX2JwZl9zdHJlYW1fa2Z1bmModTMyIGJ0Zl9pZCkKLXsKLQlyZXR1cm4gYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc3RyZWFtX3ZwcmludGtdIHx8Ci0JICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3N0cmVhbV9wcmludF9zdGFja107Ci19CiYjNDM7CWVyciA9IGZldGNoX2tmdW5jX21ldGEoZW52LCBmdW5jX2lkLCBvZmZzZXQsICZhbXA7a2Z1bmMpOwomIzQzOwlpZiAoZXJyIHx8ICFrZnVuYy5mbGFncykKJiM0MzsJCXJldHVybiBmYWxzZTsKIAotc3RhdGljIGJvb2wga2Z1bmNfc3Bpbl9hbGxvd2VkKHUzMiBidGZfaWQpCi17Ci0JcmV0dXJuIGlzX2JwZl9ncmFwaF9hcGlfa2Z1bmMoYnRmX2lkKSB8fCBpc19icGZfaXRlcl9udW1fYXBpX2tmdW5jKGJ0Zl9pZCkgfHwKLQkgICAgICAgaXNfYnBmX3Jlc19zcGluX2xvY2tfa2Z1bmMoYnRmX2lkKSB8fCBpc19icGZfYXJlbmFfa2Z1bmMoYnRmX2lkKSB8fAotCSAgICAgICBpc19icGZfc3RyZWFtX2tmdW5jKGJ0Zl9pZCk7CiYjNDM7CXJldHVybiAqa2Z1bmMuZmxhZ3MgJmFtcDsgS0ZfU1BJTkxPQ0tfU0FGRTsKIH0KIAogc3RhdGljIGJvb2wgaXNfc3luY19jYWxsYmFja19jYWxsaW5nX2tmdW5jKHUzMiBidGZfaWQpCkBAIC0xNzQxNSw3ICYjNDM7MTczOTMsNyBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX2luc24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgYm9vbCAqZG9fcHJpbnRfc3RhdGUpCiAJCQkJICAgICBpbnNuLSZndDtpbW0gIT0gQlBGX0ZVTkNfc3Bpbl91bmxvY2sgJmFtcDsmYW1wOwogCQkJCSAgICAgaW5zbi0mZ3Q7aW1tICE9IEJQRl9GVU5DX2twdHJfeGNoZykgfHwKIAkJCQkgICAgKGluc24tJmd0O3NyY19yZWcgPT0gQlBGX1BTRVVET19LRlVOQ19DQUxMICZhbXA7JmFtcDsKLQkJCQkgICAgIChpbnNuLSZndDtvZmYgIT0gMCB8fCAha2Z1bmNfc3Bpbl9hbGxvd2VkKGluc24tJmd0O2ltbSkpKSkgewomIzQzOwkJCQkgICAgICFrZnVuY19zcGluX2FsbG93ZWQoZW52LCBpbnNuLSZndDtpbW0sIGluc24tJmd0O29mZikpKSB7CiAJCQkJCXZlcmJvc2UoZW52LAogCQkJCQkJJiMzNDtmdW5jdGlvbiBjYWxscyBhcmUgbm90IGFsbG93ZWQgd2hpbGUgaG9sZGluZyBhIGxvY2tcbiYjMzQ7KTsKIAkJCQkJcmV0dXJuIC1FSU5WQUw7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19jYWxsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19jYWxsLmMKaW5kZXggN2FmNTU2MGYyYTA4Yy4uMmIzOWNjMWIwOWY5YSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2Z1bmNfY2FsbC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2NhbGwuYwpAQCAtNzEsOCAmIzQzOzcxLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qga2Z1bmNfdGVzdF9wYXJhbXMga2Z1bmNfdGVzdHNbXSA9IHsKIAlUQ19GQUlMKGtmdW5jX2NhbGxfdGVzdF9nZXRfbWVtX2ZhaWxfbm90X2NvbnN0LCAwLCAmIzM0O2lzIG5vdCBhIGNvbnN0JiMzNDspLAogCVRDX0ZBSUwoa2Z1bmNfY2FsbF90ZXN0X21lbV9hY3F1aXJlX2ZhaWwsIDAsICYjMzQ7YWNxdWlyZSBrZXJuZWwgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIFBUUl9UT19CVEZfSUQmIzM0OyksCiAJVENfRkFJTChrZnVuY19jYWxsX3Rlc3RfcG9pbnRlcl9hcmdfdHlwZV9taXNtYXRjaCwgMCwgJiMzNDtSMSBleHBlY3RlZCBwb2ludGVyIHRvIGN0eCwgYnV0IGdvdCBzY2FsYXImIzM0OyksCiYjNDM7CVRDX0ZBSUwoa2Z1bmNfY2FsbF90ZXN0X3NwaW5fbG9ja191bnNhZmUsIDAsICYjMzQ7ZnVuY3Rpb24gY2FsbHMgYXJlIG5vdCBhbGxvd2VkIHdoaWxlIGhvbGRpbmcgYSBsb2NrJiMzNDspLAogCiAJLyogc3VjY2VzcyBjYXNlcyAqLwomIzQzOwlUQ19URVNUKGtmdW5jX2NhbGxfdGVzdF9zcGluX2xvY2tfc2FmZSwgMCksCiAJVENfVEVTVChrZnVuY19jYWxsX3Rlc3QxLCAxMiksCiAJVENfVEVTVChrZnVuY19jYWxsX3Rlc3QyLCAzKSwKIAlUQ19URVNUKGtmdW5jX2NhbGxfdGVzdDQsIC0xMjM0KSwKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19jYWxsX2ZhaWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19jYWxsX2ZhaWwuYwppbmRleCA2NGI2YTBiMGFiMWNjLi43ZTkzZjdmYjEzMjk5IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfY2FsbF9mYWlsLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfZmFpbC5jCkBAIC00LDYgJiM0Mzs0LDE4IEBACiAjaW5jbHVkZSAmbHQ7YnBmL2JwZl9oZWxwZXJzLmgmZ3Q7CiAjaW5jbHVkZSAmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaCYjMzQ7CiAKJiM0MztzdGF0aWMgc3RydWN0IGJwZl9zcGluX2xvY2sga2Z1bmNfY2FsbF9sb2NrIFNFQygmIzM0Oy5kYXRhLkEmIzM0Oyk7CiYjNDM7CiYjNDM7U0VDKCYjMzQ7P3RjJiMzNDspCiYjNDM7aW50IGtmdW5jX2NhbGxfdGVzdF9zcGluX2xvY2tfdW5zYWZlKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYikKJiM0Mzt7CiYjNDM7CWJwZl9zcGluX2xvY2soJmFtcDtrZnVuY19jYWxsX2xvY2spOwomIzQzOwlicGZfa2Z1bmNfdHJpZ2dlcl9jdHhfY2hlY2soKTsKJiM0MzsJYnBmX3NwaW5fdW5sb2NrKCZhbXA7a2Z1bmNfY2FsbF9sb2NrKTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogc3RydWN0IHN5c2NhbGxfdGVzdF9hcmdzIHsKIAlfX3U4IGRhdGFbMTZdOwogCXNpemVfdCBzaXplOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfdGVzdC5jCmluZGV4IDVlZGM1MTU2NGY3MTEuLjhlNjU2MGMzMWU3ODEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19jYWxsX3Rlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfY2FsbF90ZXN0LmMKQEAgLTUsNiAmIzQzOzUsMTggQEAKICNpbmNsdWRlICYjMzQ7YnBmX21pc2MuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaCYjMzQ7CiAKJiM0MztzdGF0aWMgc3RydWN0IGJwZl9zcGluX2xvY2sga2Z1bmNfY2FsbF9sb2NrIFNFQygmIzM0Oy5kYXRhLkEmIzM0Oyk7CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dGMmIzM0OykKJiM0MztpbnQga2Z1bmNfY2FsbF90ZXN0X3NwaW5fbG9ja19zYWZlKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYikKJiM0Mzt7CiYjNDM7CWJwZl9zcGluX2xvY2soJmFtcDtrZnVuY19jYWxsX2xvY2spOwomIzQzOwlicGZfdGVzdG1vZF90ZXN0X21vZF9rZnVuYyg0Mik7CiYjNDM7CWJwZl9zcGluX3VubG9jaygmYW1wO2tmdW5jX2NhbGxfbG9jayk7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIFNFQygmIzM0O3RjJiMzNDspCiBpbnQga2Z1bmNfY2FsbF90ZXN0NShzdHJ1Y3QgX19za19idWZmICpza2IpCiB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYwppbmRleCBlYjBmOWI1ZTE4ZDg1Li4wNTg1Nzk0NjA2ZWQ4IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMKQEAgLTEzODQsNyAmIzQzOzEzODQsNyBAQCBfX2JwZl9rZnVuYyB2b2lkIGJwZl9rZnVuY190cmlnZ2VyX2N0eF9jaGVjayh2b2lkKQogfQogCiBCVEZfS0ZVTkNTX1NUQVJUKGJwZl90ZXN0bW9kX2NoZWNrX2tmdW5jX2lkcykKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGVzdG1vZF90ZXN0X21vZF9rZnVuYykKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rlc3Rtb2RfdGVzdF9tb2Rfa2Z1bmMsIEtGX1NQSU5MT0NLX1NBRkUpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX2NhbGxfdGVzdDEpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX2NhbGxfdGVzdDIpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX2NhbGxfdGVzdDMpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4MjMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA2ODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgVmVyaWZpZXIgQ2hhbmdlIGZvciBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGBLRl9TUElOTE9DS19TQUZFYCBmbGFnIGZvciBCUEYga2Z1bmNzLCBhIG5ldyBmZWF0dXJlIHRoYXQmIzM5O3MgcHJldHR5IGludGVyZXN0aW5nLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGxpZXMgaW4gdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5IHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAqaXMgdGhpcyB3b3J0aCBmdXp6aW5nPyogQWJzb2x1dGVseSwgYW55IG1vZGlmaWNhdGlvbiB0byB0aGUgdmVyaWZpZXIsIHBhcnRpY3VsYXJseSBvbmUgdGhhdCBhbHRlcnMgdGhlIGFsbG93ZWQgb3BlcmF0aW9ucyB3aXRoaW4gYSBjcml0aWNhbCBzZWN0aW9uIGxpa2UgYSBzcGlubG9jaywgZGVtYW5kcyBzY3J1dGlueS4KClRoZSBmdW5kYW1lbnRhbCBzaGlmdCBpcyBob3cgdGhlIHZlcmlmaWVyIG5vdyBkZXRlcm1pbmVzIHdoZXRoZXIgYSBrZnVuYyBjYW4gYmUgdXNlZCBpbnNpZGUgYSBzcGlubG9jay4gSW5zdGVhZCBvZiB0aGF0IGhhcmRjb2RlZCBsaXN0IG9mIGBpc19icGZfKl9rZnVuY2AgY2hlY2tzLCBpdCBub3cgdXNlcyB0aGlzIGBLRl9TUElOTE9DS19TQUZFYCBmbGFnIHByZXNlbnQgaW4gdGhlIEJURiBkYXRhIGZvciBlYWNoIGtmdW5jLiBUaGF0JiMzOTtzIGEgc2lnbmlmaWNhbnQgcmVmYWN0b3JpbmcgdGhhdCBjb3VsZCBpbnRyb2R1Y2Ugc3VidGxlIGJlaGF2aW9yYWwgY2hhbmdlcywgb3IgZXZlbiBhbGxvdyBwcml2aWxlZ2VkIGNvZGUgdG8gYWNjZXNzIGZlYXR1cmVzIGJ5IG1pc3VzaW5nIHRoaXMgbmV3IGZsYWcuIEl0IGFsc28gbWVhbnMgdGhhdCBleHRlcm5hbCBtb2R1bGVzIG5vdyBoYXZlIHRoZSBhYmlsaXR5IHRvIGV4cGxpY2l0bHkgbWFyayB0aGVpciBrZnVuY3MgYXMgJiMzNDtzcGlubG9jayBzYWZlLCYjMzQ7IHdoaWNoIHdpZGVucyB0aGUgYXR0YWNrIHN1cmZhY2UuIFRoaXMgaXMgYSBwb3RlbnRpYWwgbmV3IGZlYXR1cmUvcmVmYWN0b3JpbmcgdGhhdCBkZXNlcnZlcyBmdXp6aW5nLgoKTXkgcHJpbWFyeSBmb2N1cyBzaGlmdHMgdG8gYGtmdW5jX3NwaW5fYWxsb3dlZGAsIHRoZSBmdW5jdGlvbiBiZWluZyBtb2RpZmllZCwgYW5kIGl0cyBjYWxsIGNoYWluLiBJdCYjMzk7cyBzdGF0aWMsIHdoaWNoIGlzIHR5cGljYWwgZm9yIHRoZSB2ZXJpZmllciwgYnV0IGl0JiMzOTtzIGNhbGxlZCBieSBgZG9fY2hlY2tfaW5zbmAsIHdoaWNoIGlzIGFsc28gc3RhdGljLiBGb2xsb3dpbmcgdGhlIGNhbGwgZ3JhcGgsIGBkb19jaGVja19pbnNuYCBpcyBjYWxsZWQgYnkgYGRvX2NoZWNrYCwgd2hpY2ggaXMgdGhlIGltbWVkaWF0ZSBuZXh0IGZ1bmN0aW9uIHRoYXQgbmVlZHMgY2hlY2tpbmcuIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgZW50cnkgcG9pbnQgZm9yIHRoZSBmdXp6aW5nIGFuYWx5c2lzLiBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgYGZldGNoX2tmdW5jX21ldGFgIGFzIHdlbGwsIHNpbmNlIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGtmdW5jIG1ldGFkYXRhIGluY2x1ZGluZyB0aGUgZmxhZyBpcyByZXRyaWV2ZWQuIFRoZSBCUEYgdmVyaWZpZXIgaXMgYWxyZWFkeSBoZWF2aWx5IGZ1enplZCBieSBzeXprYWxsZXIsIHdoaWNoIGlzIGEgZ29vZCB0aGluZywgYnV0IEkgd2FudCB0byBtYWtlIHN1cmUgdGhpcyBzcGVjaWZpYyBjaGFuZ2UgaXMgY292ZXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxODozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmZXRjaF9rZnVuY19tZXRhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz0yNjM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKmZpbmRfa2Z1bmNfaW1wbF9wcm90byhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yNjYwLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjI2NjE6c3RhdGljIGludCBmZXRjaF9rZnVuY19tZXRhKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjY2Mi1cdFx0XHQgICAgczMyIGZ1bmNfaWQsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTI3Mjc9aW50IGJwZl9hZGRfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCB1MzIgZnVuY19pZCwgdTE2IG9mZnNldClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjc5NC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyNzk1Olx0ZXJyID0gZmV0Y2hfa2Z1bmNfbWV0YShlbnYsIGZ1bmNfaWQsIG9mZnNldCwgXHUwMDI2a2Z1bmMpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTI3OTYtXHRpZiAoZXJyKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTgwOD1zdGF0aWMgYm9vbCBrZnVuY19zcGluX2FsbG93ZWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgczMyIGZ1bmNfaWQsIHMxNiBvZmZzZXQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExODEyLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExODEzOlx0ZXJyID0gZmV0Y2hfa2Z1bmNfbWV0YShlbnYsIGZ1bmNfaWQsIG9mZnNldCwgXHUwMDI2a2Z1bmMpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExODE0LVx0aWYgKGVyciB8fCAha2Z1bmMuZmxhZ3MpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyNjE1PWludCBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGEoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI2MjQtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI2MjU6XHRlcnIgPSBmZXRjaF9rZnVuY19tZXRhKGVudiwgZnVuY19pZCwgb2Zmc2V0LCBcdTAwMjZrZnVuYyk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI2MjYtXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0NjIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEaXZpbmcgaW50byBCUEYgVmVyaWZpY2F0aW9uKioKCk9rYXksIHNvIGBrZnVuY19zcGluX2FsbG93ZWRgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBkb19jaGVja19pbnNuYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlbiYjMzk7dCBzdGF0aWM7IHRob3NlIGFyZSB0aGUgb25lcyB3ZSBuZWVkIHRvIGFuYWx5emUgbW9yZSBjbG9zZWx5LiBUaGF0IHVzdWFsbHkgcG9pbnRzIHRvIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkuIEkga25vdyBgYnBmX2NoZWNrYCBpcyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgdGhlIHZlcmlmaWVyLCBzbyBJJiMzOTtsbCBzdGFydCB3aXRoIHRoYXQuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBleGFtaW5lIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIGFuZCBzZWUgd2hpY2ggZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBvciwgaWYgbm90IGV4cG9ydGVkLCBhcmUgKm5vbi1zdGF0aWMqLCB3aGljaCB3b3VsZCBpbmRpY2F0ZSB0aGVpciBsaWtlbHkgaW1wb3J0YW5jZSBpbiB0aGlzIGNvbnRleHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcmFjdGlvbiBhbmQgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxODozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteaW50IGJwZl9jaGVja1xcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjAwMjA9c3RhdGljIGludCBicGZfcHJvZ192ZXJpZnlfc2lnbmF0dXJlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMTM2LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwMTM3OmludCBicGZfY2hlY2soc3RydWN0IGJwZl9wcm9nICoqcHJvZywgdW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMTM4LVx0ICAgICAgc3RydWN0IGJwZl9sb2dfYXR0ciAqYXR0cl9sb2cpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTg6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTg2MwoJCQkJCQkJb3V0cHV0OiA1OQoJCQkJCQkJdGhvdWdodHM6IDIyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJQRiBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIHNlZW1zIGZvY3VzZWQuIEkgbGlrZSB0aGF0IHRoZXkmIzM5O3JlIHplcm9pbmcgaW4gb24gYGJwZl9jaGVja2A7IHRoYXQgc2VlbXMgbGlrZSB0aGUgcmlnaHQgYXJlYSB0byBzdGFydC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhlIGltcGFjdCBvbiBgZG9fY2hlY2tgIGFzIHdlbGwsIHNpbmNlIHRoYXQgb25lIGlzIHN0YXRpYyBhbmQgbWlnaHQgYmUgZGlyZWN0bHkgcmVsYXRlZC4gSSBzaG91bGQgYWxzbyBtYWtlIHN1cmUgbm8gb3RoZXIgZnVuY3Rpb25zIGFyZSBpbmRpcmVjdGx5IGFmZmVjdGVkLgoKTG9va2luZyBkZWVwZXIsIHRoZSBwYXRjaCBtZW50aW9ucyBtb2RpZmljYXRpb25zIHRvIGZ1bmN0aW9ucyBsaWtlIGBicGZfYXJlbmFfYWxsb2NfcGFnZXNgLCBgYnBmX2FyZW5hX2ZyZWVfcGFnZXNgLCBhbmQgc28gb24sIGJ1dCBpdCBvbmx5IGNoYW5nZXMgdGhlaXIgQlRGIGZsYWdzLCBub3QgdGhlIGNvcmUgbG9naWMuIFRoZSBtZWF0IG9mIHRoZSBjaGFuZ2UgYXBwZWFycyB0byBiZSB3aXRoaW4gYGtmdW5jX3NwaW5fYWxsb3dlZGAsIHdoaWNoIGlzIGFsc28gc3RhdGljLiBUaGlzIHJlaW5mb3JjZXMgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IHRoYXQgaW52ZXN0aWdhdGluZyBgYnBmX2NoZWNrYCBpcyB0aGUgbW9zdCBkaXJlY3QgcGF0aC4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEkga25vdyBCUEYgaXMgZW5hYmxlZCB2aWEgYENPTkZJR19CUEZfU1lTQ0FMTGAsIGJ1dCBJIG5lZWQgdG8gZW5zdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGNydWNpYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGF0IHBsYXkgaGVyZS4gVGhpcyBtZWFucyBJJiMzOTtsbCBiZSBsb29raW5nIGF0IHRoZSByZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgc3BlY2lmaWNhbGx5IG9uZXMgdXNlZCBieSB0aGUgbW9kaWZpZWQgZmlsZXMuCgpUaGUgcGF0Y2ggdG91Y2hlcyBmaWxlcyBpbiBga2VybmVsL2JwZi9hcmVuYS5jYCwgYGtlcm5lbC9icGYvaGVscGVycy5jYCwgYGtlcm5lbC9icGYvcnFzcGlubG9jay5jYCwgYW5kIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBUbyB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcywgSSYjMzk7bGwgZXhhbWluZSB0aGUgYGtlcm5lbC9icGYvTWFrZWZpbGVgLiBUaGlzIHNob3VsZCBsaXN0IHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBjb250cm9sIHRoZSBjb21waWxhdGlvbiBvZiB0aG9zZSBmaWxlcywgcHJvdmlkaW5nIGEgY29tcHJlaGVuc2l2ZSB2aWV3IG9mIGFueSBwcmVyZXF1aXNpdGVzIGZvciB0aGVzZSBjaGFuZ2VzIHRvIHRha2UgZWZmZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FyZW5hXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZT0xOT1pZmVxICgkKENPTkZJR19NTVUpJChDT05GSUdfNjRCSVQpLHl5KVxua2VybmVsL2JwZi9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBhcmVuYS5vIHJhbmdlX3RyZWUub1xua2VybmVsL2JwZi9NYWtlZmlsZS0yMS1lbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Jxc3BpbmxvY2tcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlPTE3PW9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gdHJhbXBvbGluZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJ0Zi5vIG1lbWFsbG9jLm8gcnFzcGlubG9jay5vIHN0cmVhbS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTE5LWlmZXEgKCQoQ09ORklHX01NVSkkKENPTkZJR182NEJJVCkseXkpXG4tLVxua2VybmVsL2JwZi9NYWtlZmlsZT03NT1DRkxBR1NfUkVNT1ZFX3JpbmdidWYubyA9ICQoQ0NfRkxBR1NfRlRSQUNFKVxua2VybmVsL2JwZi9NYWtlZmlsZTo3NjpDRkxBR1NfUkVNT1ZFX3Jxc3BpbmxvY2subyA9ICQoQ0NfRkxBR1NfRlRSQUNFKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxODozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDczMQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipBbmFseXppbmcgdGhlIEJQRiBTeXN0ZW0gQ2FsbCBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIG15IGZvY3VzIGlzIHplcm9pbmcgaW4gb24gdGhpcyBgQ09ORklHX0JQRl9TWVNDQUxMYCBvcHRpb24uIFRoYXQmIzM5O3MgdGhlIHByaW1hcnkgZmxhZyBJIG5lZWQgdG8gdHJhY2suIEhvbGQgb24gYSBzZWNvbmQsIHRob3VnaCwgYmVjYXVzZSBgYXJlbmEub2AgaGFzIGRlcGVuZGVuY2llcyBvbiBib3RoIGBDT05GSUdfTU1VYCBhbmQgYENPTkZJR182NEJJVGAuIFRoYXQgaW1wYWN0cyBob3cgdGhpcyB3aWxsIHVsdGltYXRlbHkgcGxheSBvdXQuIEJ1dCBJIHRoaW5rIHRoZSByZWFsIG1lYXQgb2YgdGhlIG1vZGlmaWNhdGlvbiByZXNpZGVzIGluIGB2ZXJpZmllci5jYCwgYW5kIHRoYXQmIzM5O3MgY29tcGlsZWQgd2l0aCBgQ09ORklHX0JQRl9TWVNDQUxMYCwgcmlnaHQ/IE9rYXksIHNvIHRoYXQmIzM5O3MgdGhlIGtleSBmaWxlLiBJIHNob3VsZCByZWFsbHkgY2hlY2sgdGhlIGBrZXJuZWwvYnBmL01ha2VmaWxlYCB0byBjb25maXJtIHdoZXJlIGB2ZXJpZmllci5vYCBpcyBiZWluZyBidWlsdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBidWlsZCBwcm9jZXNzIGJldHRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTg6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmVyaWZpZXJcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlPTc9Q0ZMQUdTX2NvcmUubyAmIzQzOz0gLVduby1vdmVycmlkZS1pbml0ICQoY2ZsYWdzLW5vZ2NzZS15eSlcbmtlcm5lbC9icGYvTWFrZWZpbGUtOC1cbmtlcm5lbC9icGYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBzeXNjYWxsLm8gdmVyaWZpZXIubyBpbm9kZS5vIGhlbHBlcnMubyB0bnVtLm8gY251bS5vIGxvZy5vIHRva2VuLm8gbGl2ZW5lc3MubyBjb25zdF9mb2xkLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMTAtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX2l0ZXIubyBtYXBfaXRlci5vIHRhc2tfaXRlci5vIHByb2dfaXRlci5vIGxpbmtfaXRlci5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTgwCgkJCQkJCQlvdXRwdXQ6IDEyNgoJCQkJCQkJdGhvdWdodHM6IDE2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gaXQgbG9va3MgbGlrZSBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgb25seSBjb25maWcgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCBoZXJlLiBUaGlzIHBhdGNoIGlzIGNoYW5naW5nIGhvdyB0aGUgQlBGIHZlcmlmaWVyIGhhbmRsZXMgc3BpbmxvY2sgc2FmZXR5IHdpdGgga2Z1bmNzLiBJbnN0ZWFkIG9mIGEgcmlnaWQsIGhhcmRjb2RlZCBsaXN0LCBpdCYjMzk7cyBsZXZlcmFnaW5nIGEgQlRGIGZsYWcsIGBLRl9TUElOTE9DS19TQUZFYCwgd2hpY2ggaXMgYSBtdWNoIG1vcmUgZWxlZ2FudCBhbmQgZmxleGlibGUgYXBwcm9hY2guIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB2ZXJpZmllciYjMzk7cyBzYWZldHkgbG9naWM7IGl0JiMzOTtzIHNpZ25pZmljYW50IGJlY2F1c2UgaXQgbGV0cyBleHRlcm5hbCBtb2R1bGVzIG1hcmsgdGhlaXIga2Z1bmNzIGFzIHNwaW5sb2NrLXNhZmUsIG9wZW5pbmcgdXAgbmV3IHBvc3NpYmlsaXRpZXMgZm9yIEJQRiBwcm9ncmFtIGZ1bmN0aW9uYWxpdHkgYW5kIGludGVncmF0aW9uLgoKVGhlIG1haW4gcG9pbnQgb2YgZm9jdXMgaGVyZSBpcyB0aGUgYGJwZl9jaGVja2Agc3ltYm9sLCBvYnZpb3VzbHksIHNpbmNlIHRoYXQmIzM5O3MgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSB2ZXJpZmllciBpdHNlbGYuIFNvIGBicGZfY2hlY2tgIGlzIHdoZXJlIEkmIzM5O2xsIG5lZWQgdG8gc2V0IHRoZSByZXN1bHRzIGFuZCBsb29rIGZvciBwb3RlbnRpYWwgaXNzdWVzLiBUaGUgb3ZlcmFsbCBjaGFuZ2Ugc2VlbXMgc291bmQsIGJ1dCBnaXZlbiBpdHMgaW1wYWN0IG9uIHNlY3VyaXR5IGFuZCB3aGF0JiMzOTtzIGF0IHN0YWtlLCB0aGlzIGRlZmluaXRlbHkgbmVlZHMgc29tZSBzZXJpb3VzIGZ1enppbmcgdG8gbWFrZSBzdXJlIGl0JiMzOTtzIHJvYnVzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTg6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gdXNlIGEgQlRGIGZsYWcgKEtGX1NQSU5MT0NLX1NBRkUpIHRvIGRldGVybWluZSBpZiBhIGtmdW5jIGNhbiBiZSBjYWxsZWQgd2hpbGUgaG9sZGluZyBhIEJQRiBzcGlubG9jaywgcmVwbGFjaW5nIGEgaGFyZGNvZGVkIGxpc3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdmVyaWZpZXImIzM5O3Mgc2FmZXR5IGNoZWNrcyBhbmQgYWxsb3dzIGV4dGVybmFsIG1vZHVsZXMgdG8gbWFyayB0aGVpciBrZnVuY3MgYXMgc3BpbmxvY2stc2FmZS4gSXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfY2hlY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byB1c2UgYSBCVEYgZmxhZyAoS0ZfU1BJTkxPQ0tfU0FGRSkgdG8gZGV0ZXJtaW5lIGlmIGEga2Z1bmMgY2FuIGJlIGNhbGxlZCB3aGlsZSBob2xkaW5nIGEgQlBGIHNwaW5sb2NrLCByZXBsYWNpbmcgYSBoYXJkY29kZWQgbGlzdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB2ZXJpZmllciYjMzk7cyBzYWZldHkgY2hlY2tzIGFuZCBhbGxvd3MgZXh0ZXJuYWwgbW9kdWxlcyB0byBtYXJrIHRoZWlyIGtmdW5jcyBhcyBzcGlubG9jay1zYWZlLiBJdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTg6MzE6MzkuMjMyNTQzNTU0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE5NDkyOTk3NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHVzZSBhIEJURiBmbGFnIChLRl9TUElOTE9DS19TQUZFKSB0byBkZXRlcm1pbmUgaWYgYSBrZnVuYyBjYW4gYmUgY2FsbGVkIHdoaWxlIGhvbGRpbmcgYSBCUEYgc3BpbmxvY2ssIHJlcGxhY2luZyBhIGhhcmRjb2RlZCBsaXN0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHZlcmlmaWVyJ3Mgc2FmZXR5IGNoZWNrcyBhbmQgYWxsb3dzIGV4dGVybmFsIG1vZHVsZXMgdG8gbWFyayB0aGVpciBrZnVuY3MgYXMgc3BpbmxvY2stc2FmZS4gSXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTg6MzE6MzkuMjMyNTQ5NzA0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTA0Nzg4ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwYmQzNTIyODc5ZjZiOGY5MjZlMzM1NjRjYTczY2E4Y2NkYWU2Mzg2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgQXVnIDUgMTg6MzE6MzggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9idGYuaCBiL2luY2x1ZGUvbGludXgvYnRmLmhcXG5pbmRleCBjMDliNzk5NGRlNGViLi4zZjUyNTVkMDk1YTI3IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvYnRmLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2J0Zi5oXFxuQEAgLTc5LDYgKzc5LDcgQEBcXG4gI2RlZmluZSBLRl9BUkVOQV9BUkcxICAgKDEgXFx1MDAzY1xcdTAwM2MgMTQpIC8qIGtmdW5jIHRha2VzIGFuIGFyZW5hIHBvaW50ZXIgYXMgaXRzIGZpcnN0IGFyZ3VtZW50ICovXFxuICNkZWZpbmUgS0ZfQVJFTkFfQVJHMiAgICgxIFxcdTAwM2NcXHUwMDNjIDE1KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBzZWNvbmQgYXJndW1lbnQgKi9cXG4gI2RlZmluZSBLRl9JTVBMSUNJVF9BUkdTICgxIFxcdTAwM2NcXHUwMDNjIDE2KSAvKiBrZnVuYyBoYXMgaW1wbGljaXQgYXJndW1lbnRzIHN1cHBsaWVkIGJ5IHRoZSB2ZXJpZmllciAqL1xcbisjZGVmaW5lIEtGX1NQSU5MT0NLX1NBRkUgKDEgXFx1MDAzY1xcdTAwM2MgMTcpIC8qIGtmdW5jIGlzIGFsbG93ZWQgaW5zaWRlIGJwZl9zcGluX2xvY2stZWQgcmVnaW9uICovXFxuIFxcbiAvKlxcbiAgKiBUYWcgbWFya2luZyBhIGtlcm5lbCBmdW5jdGlvbiBhcyBhIGtmdW5jLiBUaGlzIGlzIG1lYW50IHRvIG1pbmltaXplIHRoZVxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2FyZW5hLmMgYi9rZXJuZWwvYnBmL2FyZW5hLmNcXG5pbmRleCA1NTVlZTI1MzFlZjk4Li43YjY4NDcyMDBiNDMxIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvYXJlbmEuY1xcbisrKyBiL2tlcm5lbC9icGYvYXJlbmEuY1xcbkBAIC0xMTE4LDkgKzExMTgsOSBAQCBfX2JwZl9rZnVuYyBpbnQgYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXModm9pZCAqcF9fbWFwLCB2b2lkICpwdHJfX2lnbiwgdTMyIHBhZ2VfY1xcbiBfX2JwZl9rZnVuY19lbmRfZGVmcygpO1xcbiBcXG4gQlRGX0tGVU5DU19TVEFSVChhcmVuYV9rZnVuY3MpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfYXJlbmFfYWxsb2NfcGFnZXMsIEtGX0FSRU5BX1JFVCB8IEtGX0FSRU5BX0FSRzIpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfYXJlbmFfZnJlZV9wYWdlcywgS0ZfQVJFTkFfQVJHMilcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzLCBLRl9BUkVOQV9BUkcyKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2FyZW5hX2FsbG9jX3BhZ2VzLCBLRl9BUkVOQV9SRVQgfCBLRl9BUkVOQV9BUkcyIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9mcmVlX3BhZ2VzLCBLRl9BUkVOQV9BUkcyIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzLCBLRl9BUkVOQV9BUkcyIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcXG4gQlRGX0tGVU5DU19FTkQoYXJlbmFfa2Z1bmNzKVxcbiBcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBidGZfa2Z1bmNfaWRfc2V0IGNvbW1vbl9rZnVuY19zZXQgPSB7XFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvaGVscGVycy5jIGIva2VybmVsL2JwZi9oZWxwZXJzLmNcXG5pbmRleCA0NzA5YTVhZDA0NzQ3Li42Mzg4YjZiMjNlNDkwIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvaGVscGVycy5jXFxuKysrIGIva2VybmVsL2JwZi9oZWxwZXJzLmNcXG5AQCAtNDgxMiwzMCArNDgxMiwzMiBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX29ial9kcm9wLCBLRl9SRUxFQVNFIHwgS0ZfSU1QTElDSVRfQVJHUylcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9vYmpfZHJvcF9pbXBsLCBLRl9SRUxFQVNFKVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3BlcmNwdV9vYmpfZHJvcCwgS0ZfUkVMRUFTRSB8IEtGX0lNUExJQ0lUX0FSR1MpXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcGVyY3B1X29ial9kcm9wX2ltcGwsIEtGX1JFTEVBU0UpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZSwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVIHwgS0ZfSU1QTElDSVRfQVJHUylcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGwsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX1JDVSlcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfZnJvbnQsIEtGX0lNUExJQ0lUX0FSR1MpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250X2ltcGwpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2JhY2ssIEtGX0lNUExJQ0lUX0FSR1MpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2JhY2tfaW1wbClcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2FkZCwgS0ZfSU1QTElDSVRfQVJHUylcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3BvcF9mcm9udCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKVxcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcG9wX2JhY2ssIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2RlbCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKVxcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfZnJvbnQsIEtGX1JFVF9OVUxMKVxcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfYmFjaywgS0ZfUkVUX05VTEwpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9pc19maXJzdClcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2lzX2xhc3QpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9lbXB0eSlcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZWZjb3VudF9hY3F1aXJlLFxcbitcXHQgICAgIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX1JDVSB8IEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbCxcXG4rXFx0ICAgICBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UgfCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUpXFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250X2ltcGwsIEtGX1NQSU5MT0NLX1NBRkUpXFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2JhY2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9iYWNrX2ltcGwsIEtGX1NQSU5MT0NLX1NBRkUpXFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9hZGQsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcG9wX2Zyb250LCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcG9wX2JhY2ssIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpXFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9kZWwsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpXFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9mcm9udCwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfYmFjaywgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfaXNfZmlyc3QsIEtGX1NQSU5MT0NLX1NBRkUpXFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9pc19sYXN0LCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfZW1wdHksIEtGX1NQSU5MT0NLX1NBRkUpXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza19hY3F1aXJlLCBLRl9BQ1FVSVJFIHwgS0ZfUkNVIHwgS0ZfUkVUX05VTEwpXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza19yZWxlYXNlLCBLRl9SRUxFQVNFKVxcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9yZW1vdmUsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfYWRkLCBLRl9JTVBMSUNJVF9BUkdTKVxcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9hZGRfaW1wbClcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfZmlyc3QsIEtGX1JFVF9OVUxMKVxcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9yb290LCBLRl9SRVRfTlVMTClcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfbGVmdCwgS0ZfUkVUX05VTEwpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX3JpZ2h0LCBLRl9SRVRfTlVMTClcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfcmVtb3ZlLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9hZGQsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9hZGRfaW1wbCwgS0ZfU1BJTkxPQ0tfU0FGRSlcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfZmlyc3QsIEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfcm9vdCwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9sZWZ0LCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpXFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX3JpZ2h0LCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpXFxuIFxcbiAjaWZkZWYgQ09ORklHX0NHUk9VUFNcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jZ3JvdXBfYWNxdWlyZSwgS0ZfQUNRVUlSRSB8IEtGX1JDVSB8IEtGX1JFVF9OVUxMKVxcbkBAIC00ODg1LDkgKzQ4ODcsOSBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JjdV9yZWFkX2xvY2spXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmN1X3JlYWRfdW5sb2NrKVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2R5bnB0cl9zbGljZSwgS0ZfUkVUX05VTEwpXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfZHlucHRyX3NsaWNlX3Jkd3IsIEtGX1JFVF9OVUxMKVxcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfbnVtX25ldywgS0ZfSVRFUl9ORVcpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9udW1fbmV4dCwgS0ZfSVRFUl9ORVhUIHwgS0ZfUkVUX05VTEwpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9udW1fZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfbnVtX25ldywgS0ZfSVRFUl9ORVcgfCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfbnVtX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX251bV9kZXN0cm95LCBLRl9JVEVSX0RFU1RST1kgfCBLRl9TUElOTE9DS19TQUZFKVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfdGFza192bWFfbmV3LCBLRl9JVEVSX05FVyB8IEtGX1JDVSlcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX3Rhc2tfdm1hX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMKVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfdGFza192bWFfZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZKVxcbkBAIC00OTYyLDggKzQ5NjQsOCBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jYXNlc3RyKTtcXG4gI2lmIGRlZmluZWQoQ09ORklHX0JQRl9MU00pIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0NHUk9VUFMpXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfY2dyb3VwX3JlYWRfeGF0dHIsIEtGX1JDVSlcXG4gI2VuZGlmXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ZwcmludGssIEtGX0lNUExJQ0lUX0FSR1MpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrLCBLRl9JTVBMSUNJVF9BUkdTKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV92cHJpbnRrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwsIEtGX0lNUExJQ0lUX0FSR1MpXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSwgS0ZfSU1QTElDSVRfQVJHUylcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9keW5wdHJfZnJvbV9maWxlKVxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3Jxc3BpbmxvY2suYyBiL2tlcm5lbC9icGYvcnFzcGlubG9jay5jXFxuaW5kZXggZTRlMzM4Y2RiNDM3Yy4uZTUyN2NiNDI1Y2Y0NSAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3Jxc3BpbmxvY2suY1xcbisrKyBiL2tlcm5lbC9icGYvcnFzcGlubG9jay5jXFxuQEAgLTc0NCwxMCArNzQ0LDEwIEBAIF9fYnBmX2tmdW5jIHZvaWQgYnBmX3Jlc19zcGluX3VubG9ja19pcnFyZXN0b3JlKHN0cnVjdCBicGZfcmVzX3NwaW5fbG9jayAqbG9jayxcXG4gX19icGZfa2Z1bmNfZW5kX2RlZnMoKTtcXG4gXFxuIEJURl9LRlVOQ1NfU1RBUlQocnFzcGlubG9ja19rZnVuY19pZHMpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVzX3NwaW5fbG9jaywgS0ZfUkVUX05VTEwpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVzX3NwaW5fdW5sb2NrKVxcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZSwgS0ZfUkVUX05VTEwpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmUpXFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVzX3NwaW5fbG9jaywgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX3VubG9jaywgS0ZfU1BJTkxPQ0tfU0FGRSlcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZXNfc3Bpbl9sb2NrX2lycXNhdmUsIEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSwgS0ZfU1BJTkxPQ0tfU0FGRSlcXG4gQlRGX0tGVU5DU19FTkQocnFzcGlubG9ja19rZnVuY19pZHMpXFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGJ0Zl9rZnVuY19pZF9zZXQgcnFzcGlubG9ja19rZnVuY19zZXQgPSB7XFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbmluZGV4IGIyNzQwMDRmY2NmZDkuLjdjMWVkY2FlMjkzYTggMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXFxuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuQEAgLTExNzk3LDIwICsxMTc5Nyw2IEBAIHN0YXRpYyBib29sIGlzX2JwZl9yYnRyZWVfYXBpX2tmdW5jKHUzMiBidGZfaWQpXFxuIFxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfcmlnaHRdO1xcbiB9XFxuIFxcbi1zdGF0aWMgYm9vbCBpc19icGZfaXRlcl9udW1fYXBpX2tmdW5jKHUzMiBidGZfaWQpXFxuLXtcXG4tXFx0cmV0dXJuIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25ld10gfHxcXG4tXFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25leHRdIHx8XFxuLVxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9pdGVyX251bV9kZXN0cm95XTtcXG4tfVxcbi1cXG4tc3RhdGljIGJvb2wgaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyh1MzIgYnRmX2lkKVxcbi17XFxuLVxcdHJldHVybiBpc19icGZfbGlzdF9hcGlfa2Z1bmMoYnRmX2lkKSB8fFxcbi1cXHQgICAgICAgaXNfYnBmX3JidHJlZV9hcGlfa2Z1bmMoYnRmX2lkKSB8fFxcbi1cXHQgICAgICAgaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMoYnRmX2lkKTtcXG4tfVxcbi1cXG4gc3RhdGljIGJvb2wgaXNfYnBmX3Jlc19zcGluX2xvY2tfa2Z1bmModTMyIGJ0Zl9pZClcXG4ge1xcbiBcXHRyZXR1cm4gYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fbG9ja10gfHxcXG5AQCAtMTE4MTksMjQgKzExODA1LDE2IEBAIHN0YXRpYyBib29sIGlzX2JwZl9yZXNfc3Bpbl9sb2NrX2tmdW5jKHUzMiBidGZfaWQpXFxuIFxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZV07XFxuIH1cXG4gXFxuLXN0YXRpYyBib29sIGlzX2JwZl9hcmVuYV9rZnVuYyh1MzIgYnRmX2lkKVxcbitzdGF0aWMgYm9vbCBrZnVuY19zcGluX2FsbG93ZWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgczMyIGZ1bmNfaWQsIHMxNiBvZmZzZXQpXFxuIHtcXG4tXFx0cmV0dXJuIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX2FsbG9jX3BhZ2VzXSB8fFxcbi1cXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfYXJlbmFfZnJlZV9wYWdlc10gfHxcXG4tXFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXNdO1xcbi19XFxuK1xcdHN0cnVjdCBicGZfa2Z1bmNfbWV0YSBrZnVuYztcXG4rXFx0aW50IGVycjtcXG4gXFxuLXN0YXRpYyBib29sIGlzX2JwZl9zdHJlYW1fa2Z1bmModTMyIGJ0Zl9pZClcXG4te1xcbi1cXHRyZXR1cm4gYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc3RyZWFtX3ZwcmludGtdIHx8XFxuLVxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9zdHJlYW1fcHJpbnRfc3RhY2tdO1xcbi19XFxuK1xcdGVyciA9IGZldGNoX2tmdW5jX21ldGEoZW52LCBmdW5jX2lkLCBvZmZzZXQsIFxcdTAwMjZrZnVuYyk7XFxuK1xcdGlmIChlcnIgfHwgIWtmdW5jLmZsYWdzKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbi1zdGF0aWMgYm9vbCBrZnVuY19zcGluX2FsbG93ZWQodTMyIGJ0Zl9pZClcXG4te1xcbi1cXHRyZXR1cm4gaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyhidGZfaWQpIHx8IGlzX2JwZl9pdGVyX251bV9hcGlfa2Z1bmMoYnRmX2lkKSB8fFxcbi1cXHQgICAgICAgaXNfYnBmX3Jlc19zcGluX2xvY2tfa2Z1bmMoYnRmX2lkKSB8fCBpc19icGZfYXJlbmFfa2Z1bmMoYnRmX2lkKSB8fFxcbi1cXHQgICAgICAgaXNfYnBmX3N0cmVhbV9rZnVuYyhidGZfaWQpO1xcbitcXHRyZXR1cm4gKmtmdW5jLmZsYWdzIFxcdTAwMjYgS0ZfU1BJTkxPQ0tfU0FGRTtcXG4gfVxcbiBcXG4gc3RhdGljIGJvb2wgaXNfc3luY19jYWxsYmFja19jYWxsaW5nX2tmdW5jKHUzMiBidGZfaWQpXFxuQEAgLTE3NDE1LDcgKzE3MzkzLDcgQEAgc3RhdGljIGludCBkb19jaGVja19pbnNuKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGJvb2wgKmRvX3ByaW50X3N0YXRlKVxcbiBcXHRcXHRcXHRcXHQgICAgIGluc24tXFx1MDAzZWltbSAhPSBCUEZfRlVOQ19zcGluX3VubG9jayBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHRcXHQgICAgIGluc24tXFx1MDAzZWltbSAhPSBCUEZfRlVOQ19rcHRyX3hjaGcpIHx8XFxuIFxcdFxcdFxcdFxcdCAgICAoaW5zbi1cXHUwMDNlc3JjX3JlZyA9PSBCUEZfUFNFVURPX0tGVU5DX0NBTEwgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0XFx0XFx0ICAgICAoaW5zbi1cXHUwMDNlb2ZmICE9IDAgfHwgIWtmdW5jX3NwaW5fYWxsb3dlZChpbnNuLVxcdTAwM2VpbW0pKSkpIHtcXG4rXFx0XFx0XFx0XFx0ICAgICAha2Z1bmNfc3Bpbl9hbGxvd2VkKGVudiwgaW5zbi1cXHUwMDNlaW1tLCBpbnNuLVxcdTAwM2VvZmYpKSkge1xcbiBcXHRcXHRcXHRcXHRcXHR2ZXJib3NlKGVudixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFxcImZ1bmN0aW9uIGNhbGxzIGFyZSBub3QgYWxsb3dlZCB3aGlsZSBob2xkaW5nIGEgbG9ja1xcXFxuXFxcIik7XFxuIFxcdFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19jYWxsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19jYWxsLmNcXG5pbmRleCA3YWY1NTYwZjJhMDhjLi4yYjM5Y2MxYjA5ZjlhIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2NhbGwuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2NhbGwuY1xcbkBAIC03MSw4ICs3MSwxMCBAQCBzdGF0aWMgc3RydWN0IGtmdW5jX3Rlc3RfcGFyYW1zIGtmdW5jX3Rlc3RzW10gPSB7XFxuIFxcdFRDX0ZBSUwoa2Z1bmNfY2FsbF90ZXN0X2dldF9tZW1fZmFpbF9ub3RfY29uc3QsIDAsIFxcXCJpcyBub3QgYSBjb25zdFxcXCIpLFxcbiBcXHRUQ19GQUlMKGtmdW5jX2NhbGxfdGVzdF9tZW1fYWNxdWlyZV9mYWlsLCAwLCBcXFwiYWNxdWlyZSBrZXJuZWwgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIFBUUl9UT19CVEZfSURcXFwiKSxcXG4gXFx0VENfRkFJTChrZnVuY19jYWxsX3Rlc3RfcG9pbnRlcl9hcmdfdHlwZV9taXNtYXRjaCwgMCwgXFxcIlIxIGV4cGVjdGVkIHBvaW50ZXIgdG8gY3R4LCBidXQgZ290IHNjYWxhclxcXCIpLFxcbitcXHRUQ19GQUlMKGtmdW5jX2NhbGxfdGVzdF9zcGluX2xvY2tfdW5zYWZlLCAwLCBcXFwiZnVuY3Rpb24gY2FsbHMgYXJlIG5vdCBhbGxvd2VkIHdoaWxlIGhvbGRpbmcgYSBsb2NrXFxcIiksXFxuIFxcbiBcXHQvKiBzdWNjZXNzIGNhc2VzICovXFxuK1xcdFRDX1RFU1Qoa2Z1bmNfY2FsbF90ZXN0X3NwaW5fbG9ja19zYWZlLCAwKSxcXG4gXFx0VENfVEVTVChrZnVuY19jYWxsX3Rlc3QxLCAxMiksXFxuIFxcdFRDX1RFU1Qoa2Z1bmNfY2FsbF90ZXN0MiwgMyksXFxuIFxcdFRDX1RFU1Qoa2Z1bmNfY2FsbF90ZXN0NCwgLTEyMzQpLFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfY2FsbF9mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfY2FsbF9mYWlsLmNcXG5pbmRleCA2NGI2YTBiMGFiMWNjLi43ZTkzZjdmYjEzMjk5IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19jYWxsX2ZhaWwuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19jYWxsX2ZhaWwuY1xcbkBAIC00LDYgKzQsMTggQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfaGVscGVycy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXFxcIlxcbiBcXG4rc3RhdGljIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGtmdW5jX2NhbGxfbG9jayBTRUMoXFxcIi5kYXRhLkFcXFwiKTtcXG4rXFxuK1NFQyhcXFwiP3RjXFxcIilcXG4raW50IGtmdW5jX2NhbGxfdGVzdF9zcGluX2xvY2tfdW5zYWZlKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcXG4re1xcbitcXHRicGZfc3Bpbl9sb2NrKFxcdTAwMjZrZnVuY19jYWxsX2xvY2spO1xcbitcXHRicGZfa2Z1bmNfdHJpZ2dlcl9jdHhfY2hlY2soKTtcXG4rXFx0YnBmX3NwaW5fdW5sb2NrKFxcdTAwMjZrZnVuY19jYWxsX2xvY2spO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuIHN0cnVjdCBzeXNjYWxsX3Rlc3RfYXJncyB7XFxuIFxcdF9fdTggZGF0YVsxNl07XFxuIFxcdHNpemVfdCBzaXplO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfY2FsbF90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfY2FsbF90ZXN0LmNcXG5pbmRleCA1ZWRjNTE1NjRmNzExLi44ZTY1NjBjMzFlNzgxIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19jYWxsX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19jYWxsX3Rlc3QuY1xcbkBAIC01LDYgKzUsMTggQEBcXG4gI2luY2x1ZGUgXFxcImJwZl9taXNjLmhcXFwiXFxuICNpbmNsdWRlIFxcXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcXFwiXFxuIFxcbitzdGF0aWMgc3RydWN0IGJwZl9zcGluX2xvY2sga2Z1bmNfY2FsbF9sb2NrIFNFQyhcXFwiLmRhdGEuQVxcXCIpO1xcbitcXG4rU0VDKFxcXCJ0Y1xcXCIpXFxuK2ludCBrZnVuY19jYWxsX3Rlc3Rfc3Bpbl9sb2NrX3NhZmUoc3RydWN0IF9fc2tfYnVmZiAqc2tiKVxcbit7XFxuK1xcdGJwZl9zcGluX2xvY2soXFx1MDAyNmtmdW5jX2NhbGxfbG9jayk7XFxuK1xcdGJwZl90ZXN0bW9kX3Rlc3RfbW9kX2tmdW5jKDQyKTtcXG4rXFx0YnBmX3NwaW5fdW5sb2NrKFxcdTAwMjZrZnVuY19jYWxsX2xvY2spO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuIFNFQyhcXFwidGNcXFwiKVxcbiBpbnQga2Z1bmNfY2FsbF90ZXN0NShzdHJ1Y3QgX19za19idWZmICpza2IpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcXG5pbmRleCBlYjBmOWI1ZTE4ZDg1Li4wNTg1Nzk0NjA2ZWQ4IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXFxuQEAgLTEzODQsNyArMTM4NCw3IEBAIF9fYnBmX2tmdW5jIHZvaWQgYnBmX2tmdW5jX3RyaWdnZXJfY3R4X2NoZWNrKHZvaWQpXFxuIH1cXG4gXFxuIEJURl9LRlVOQ1NfU1RBUlQoYnBmX3Rlc3Rtb2RfY2hlY2tfa2Z1bmNfaWRzKVxcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rlc3Rtb2RfdGVzdF9tb2Rfa2Z1bmMpXFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfdGVzdG1vZF90ZXN0X21vZF9rZnVuYywgS0ZfU1BJTkxPQ0tfU0FGRSlcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9rZnVuY19jYWxsX3Rlc3QxKVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX2NhbGxfdGVzdDIpXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfa2Z1bmNfY2FsbF90ZXN0MylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTg6MzE6MzkuNjgzODA0MDc3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MzE0OTgwMjk2NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHVzZSBhIEJURiBmbGFnIChLRl9TUElOTE9DS19TQUZFKSB0byBkZXRlcm1pbmUgaWYgYSBrZnVuYyBjYW4gYmUgY2FsbGVkIHdoaWxlIGhvbGRpbmcgYSBCUEYgc3BpbmxvY2ssIHJlcGxhY2luZyBhIGhhcmRjb2RlZCBsaXN0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHZlcmlmaWVyJ3Mgc2FmZXR5IGNoZWNrcyBhbmQgYWxsb3dzIGV4dGVybmFsIG1vZHVsZXMgdG8gbWFyayB0aGVpciBrZnVuY3MgYXMgc3BpbmxvY2stc2FmZS4gSXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGJkMzUyMjg3OWY2YjhmOTI2ZTMzNTY0Y2E3M2NhOGNjZGFlNjM4NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMTg6MzE6MzggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2J0Zi5oIGIvaW5jbHVkZS9saW51eC9idGYuaFxuaW5kZXggYzA5Yjc5OTRkZTRlYi4uM2Y1MjU1ZDA5NWEyNyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYnRmLmhcbisrKyBiL2luY2x1ZGUvbGludXgvYnRmLmhcbkBAIC03OSw2ICs3OSw3IEBAXG4gI2RlZmluZSBLRl9BUkVOQV9BUkcxICAgKDEgXHUwMDNjXHUwMDNjIDE0KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBmaXJzdCBhcmd1bWVudCAqL1xuICNkZWZpbmUgS0ZfQVJFTkFfQVJHMiAgICgxIFx1MDAzY1x1MDAzYyAxNSkgLyoga2Z1bmMgdGFrZXMgYW4gYXJlbmEgcG9pbnRlciBhcyBpdHMgc2Vjb25kIGFyZ3VtZW50ICovXG4gI2RlZmluZSBLRl9JTVBMSUNJVF9BUkdTICgxIFx1MDAzY1x1MDAzYyAxNikgLyoga2Z1bmMgaGFzIGltcGxpY2l0IGFyZ3VtZW50cyBzdXBwbGllZCBieSB0aGUgdmVyaWZpZXIgKi9cbisjZGVmaW5lIEtGX1NQSU5MT0NLX1NBRkUgKDEgXHUwMDNjXHUwMDNjIDE3KSAvKiBrZnVuYyBpcyBhbGxvd2VkIGluc2lkZSBicGZfc3Bpbl9sb2NrLWVkIHJlZ2lvbiAqL1xuIFxuIC8qXG4gICogVGFnIG1hcmtpbmcgYSBrZXJuZWwgZnVuY3Rpb24gYXMgYSBrZnVuYy4gVGhpcyBpcyBtZWFudCB0byBtaW5pbWl6ZSB0aGVcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2FyZW5hLmMgYi9rZXJuZWwvYnBmL2FyZW5hLmNcbmluZGV4IDU1NWVlMjUzMWVmOTguLjdiNjg0NzIwMGI0MzEgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2FyZW5hLmNcbisrKyBiL2tlcm5lbC9icGYvYXJlbmEuY1xuQEAgLTExMTgsOSArMTExOCw5IEBAIF9fYnBmX2tmdW5jIGludCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyh2b2lkICpwX19tYXAsIHZvaWQgKnB0cl9faWduLCB1MzIgcGFnZV9jXG4gX19icGZfa2Z1bmNfZW5kX2RlZnMoKTtcbiBcbiBCVEZfS0ZVTkNTX1NUQVJUKGFyZW5hX2tmdW5jcylcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2FyZW5hX2FsbG9jX3BhZ2VzLCBLRl9BUkVOQV9SRVQgfCBLRl9BUkVOQV9BUkcyKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfYXJlbmFfZnJlZV9wYWdlcywgS0ZfQVJFTkFfQVJHMilcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMsIEtGX0FSRU5BX0FSRzIpXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9hbGxvY19wYWdlcywgS0ZfQVJFTkFfUkVUIHwgS0ZfQVJFTkFfQVJHMiB8IEtGX1NQSU5MT0NLX1NBRkUpXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9mcmVlX3BhZ2VzLCBLRl9BUkVOQV9BUkcyIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMsIEtGX0FSRU5BX0FSRzIgfCBLRl9TUElOTE9DS19TQUZFKVxuIEJURl9LRlVOQ1NfRU5EKGFyZW5hX2tmdW5jcylcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGJ0Zl9rZnVuY19pZF9zZXQgY29tbW9uX2tmdW5jX3NldCA9IHtcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2hlbHBlcnMuYyBiL2tlcm5lbC9icGYvaGVscGVycy5jXG5pbmRleCA0NzA5YTVhZDA0NzQ3Li42Mzg4YjZiMjNlNDkwIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9oZWxwZXJzLmNcbisrKyBiL2tlcm5lbC9icGYvaGVscGVycy5jXG5AQCAtNDgxMiwzMCArNDgxMiwzMiBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX29ial9kcm9wLCBLRl9SRUxFQVNFIHwgS0ZfSU1QTElDSVRfQVJHUylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX29ial9kcm9wX2ltcGwsIEtGX1JFTEVBU0UpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX2Ryb3AsIEtGX1JFTEVBU0UgfCBLRl9JTVBMSUNJVF9BUkdTKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcGVyY3B1X29ial9kcm9wX2ltcGwsIEtGX1JFTEVBU0UpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZWZjb3VudF9hY3F1aXJlLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UgfCBLRl9JTVBMSUNJVF9BUkdTKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfZnJvbnQsIEtGX0lNUExJQ0lUX0FSR1MpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfZnJvbnRfaW1wbClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9iYWNrLCBLRl9JTVBMSUNJVF9BUkdTKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2JhY2tfaW1wbClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfYWRkLCBLRl9JTVBMSUNJVF9BUkdTKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wb3BfZnJvbnQsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcG9wX2JhY2ssIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfZGVsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2Zyb250LCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfYmFjaywgS0ZfUkVUX05VTEwpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2lzX2ZpcnN0KVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9pc19sYXN0KVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9lbXB0eSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JlZmNvdW50X2FjcXVpcmUsXG4rXHQgICAgIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX1JDVSB8IEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLFxuK1x0ICAgICBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UgfCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250LCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udF9pbXBsLCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2JhY2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2JhY2tfaW1wbCwgS0ZfU1BJTkxPQ0tfU0FGRSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfYWRkLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcG9wX2Zyb250LCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wb3BfYmFjaywgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfZGVsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9mcm9udCwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9iYWNrLCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2lzX2ZpcnN0LCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9pc19sYXN0LCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9lbXB0eSwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rhc2tfYWNxdWlyZSwgS0ZfQUNRVUlSRSB8IEtGX1JDVSB8IEtGX1JFVF9OVUxMKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza19yZWxlYXNlLCBLRl9SRUxFQVNFKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX3JlbW92ZSwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2FkZCwgS0ZfSU1QTElDSVRfQVJHUylcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9hZGRfaW1wbClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9maXJzdCwgS0ZfUkVUX05VTEwpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfcm9vdCwgS0ZfUkVUX05VTEwpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfbGVmdCwgS0ZfUkVUX05VTEwpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfcmlnaHQsIEtGX1JFVF9OVUxMKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX3JlbW92ZSwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9hZGQsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2FkZF9pbXBsLCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2ZpcnN0LCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfcm9vdCwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2xlZnQsIEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9yaWdodCwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxuIFxuICNpZmRlZiBDT05GSUdfQ0dST1VQU1xuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfY2dyb3VwX2FjcXVpcmUsIEtGX0FDUVVJUkUgfCBLRl9SQ1UgfCBLRl9SRVRfTlVMTClcbkBAIC00ODg1LDkgKzQ4ODcsOSBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JjdV9yZWFkX2xvY2spXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yY3VfcmVhZF91bmxvY2spXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9keW5wdHJfc2xpY2UsIEtGX1JFVF9OVUxMKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfZHlucHRyX3NsaWNlX3Jkd3IsIEtGX1JFVF9OVUxMKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9udW1fbmV3LCBLRl9JVEVSX05FVylcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfbnVtX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9udW1fZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9udW1fbmV3LCBLRl9JVEVSX05FVyB8IEtGX1NQSU5MT0NLX1NBRkUpXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX251bV9uZXh0LCBLRl9JVEVSX05FWFQgfCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX251bV9kZXN0cm95LCBLRl9JVEVSX0RFU1RST1kgfCBLRl9TUElOTE9DS19TQUZFKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl90YXNrX3ZtYV9uZXcsIEtGX0lURVJfTkVXIHwgS0ZfUkNVKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl90YXNrX3ZtYV9uZXh0LCBLRl9JVEVSX05FWFQgfCBLRl9SRVRfTlVMTClcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfdGFza192bWFfZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZKVxuQEAgLTQ5NjIsOCArNDk2NCw4IEBAIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNhc2VzdHIpO1xuICNpZiBkZWZpbmVkKENPTkZJR19CUEZfTFNNKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfQ0dST1VQUylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2Nncm91cF9yZWFkX3hhdHRyLCBLRl9SQ1UpXG4gI2VuZGlmXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fdnByaW50aywgS0ZfSU1QTElDSVRfQVJHUylcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV9wcmludF9zdGFjaywgS0ZfSU1QTElDSVRfQVJHUylcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV92cHJpbnRrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV9wcmludF9zdGFjaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsLCBLRl9JTVBMSUNJVF9BUkdTKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSwgS0ZfSU1QTElDSVRfQVJHUylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2R5bnB0cl9mcm9tX2ZpbGUpXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9ycXNwaW5sb2NrLmMgYi9rZXJuZWwvYnBmL3Jxc3BpbmxvY2suY1xuaW5kZXggZTRlMzM4Y2RiNDM3Yy4uZTUyN2NiNDI1Y2Y0NSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvcnFzcGlubG9jay5jXG4rKysgYi9rZXJuZWwvYnBmL3Jxc3BpbmxvY2suY1xuQEAgLTc0NCwxMCArNzQ0LDEwIEBAIF9fYnBmX2tmdW5jIHZvaWQgYnBmX3Jlc19zcGluX3VubG9ja19pcnFyZXN0b3JlKHN0cnVjdCBicGZfcmVzX3NwaW5fbG9jayAqbG9jayxcbiBfX2JwZl9rZnVuY19lbmRfZGVmcygpO1xuIFxuIEJURl9LRlVOQ1NfU1RBUlQocnFzcGlubG9ja19rZnVuY19pZHMpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZXNfc3Bpbl9sb2NrLCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX3VubG9jaylcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZSwgS0ZfUkVUX05VTEwpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX2xvY2ssIEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX3VubG9jaywgS0ZfU1BJTkxPQ0tfU0FGRSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZSwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmUsIEtGX1NQSU5MT0NLX1NBRkUpXG4gQlRGX0tGVU5DU19FTkQocnFzcGlubG9ja19rZnVuY19pZHMpXG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBidGZfa2Z1bmNfaWRfc2V0IHJxc3BpbmxvY2tfa2Z1bmNfc2V0ID0ge1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggYjI3NDAwNGZjY2ZkOS4uN2MxZWRjYWUyOTNhOCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTE3OTcsMjAgKzExNzk3LDYgQEAgc3RhdGljIGJvb2wgaXNfYnBmX3JidHJlZV9hcGlfa2Z1bmModTMyIGJ0Zl9pZClcbiBcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfcmlnaHRdO1xuIH1cbiBcbi1zdGF0aWMgYm9vbCBpc19icGZfaXRlcl9udW1fYXBpX2tmdW5jKHUzMiBidGZfaWQpXG4te1xuLVx0cmV0dXJuIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25ld10gfHxcbi1cdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9pdGVyX251bV9uZXh0XSB8fFxuLVx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX2Rlc3Ryb3ldO1xuLX1cbi1cbi1zdGF0aWMgYm9vbCBpc19icGZfZ3JhcGhfYXBpX2tmdW5jKHUzMiBidGZfaWQpXG4te1xuLVx0cmV0dXJuIGlzX2JwZl9saXN0X2FwaV9rZnVuYyhidGZfaWQpIHx8XG4tXHQgICAgICAgaXNfYnBmX3JidHJlZV9hcGlfa2Z1bmMoYnRmX2lkKSB8fFxuLVx0ICAgICAgIGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKGJ0Zl9pZCk7XG4tfVxuLVxuIHN0YXRpYyBib29sIGlzX2JwZl9yZXNfc3Bpbl9sb2NrX2tmdW5jKHUzMiBidGZfaWQpXG4ge1xuIFx0cmV0dXJuIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tdIHx8XG5AQCAtMTE4MTksMjQgKzExODA1LDE2IEBAIHN0YXRpYyBib29sIGlzX2JwZl9yZXNfc3Bpbl9sb2NrX2tmdW5jKHUzMiBidGZfaWQpXG4gXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmVdO1xuIH1cbiBcbi1zdGF0aWMgYm9vbCBpc19icGZfYXJlbmFfa2Z1bmModTMyIGJ0Zl9pZClcbitzdGF0aWMgYm9vbCBrZnVuY19zcGluX2FsbG93ZWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgczMyIGZ1bmNfaWQsIHMxNiBvZmZzZXQpXG4ge1xuLVx0cmV0dXJuIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX2FsbG9jX3BhZ2VzXSB8fFxuLVx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX2ZyZWVfcGFnZXNdIHx8XG4tXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfYXJlbmFfcmVzZXJ2ZV9wYWdlc107XG4tfVxuK1x0c3RydWN0IGJwZl9rZnVuY19tZXRhIGtmdW5jO1xuK1x0aW50IGVycjtcbiBcbi1zdGF0aWMgYm9vbCBpc19icGZfc3RyZWFtX2tmdW5jKHUzMiBidGZfaWQpXG4te1xuLVx0cmV0dXJuIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3N0cmVhbV92cHJpbnRrXSB8fFxuLVx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3N0cmVhbV9wcmludF9zdGFja107XG4tfVxuK1x0ZXJyID0gZmV0Y2hfa2Z1bmNfbWV0YShlbnYsIGZ1bmNfaWQsIG9mZnNldCwgXHUwMDI2a2Z1bmMpO1xuK1x0aWYgKGVyciB8fCAha2Z1bmMuZmxhZ3MpXG4rXHRcdHJldHVybiBmYWxzZTtcbiBcbi1zdGF0aWMgYm9vbCBrZnVuY19zcGluX2FsbG93ZWQodTMyIGJ0Zl9pZClcbi17XG4tXHRyZXR1cm4gaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyhidGZfaWQpIHx8IGlzX2JwZl9pdGVyX251bV9hcGlfa2Z1bmMoYnRmX2lkKSB8fFxuLVx0ICAgICAgIGlzX2JwZl9yZXNfc3Bpbl9sb2NrX2tmdW5jKGJ0Zl9pZCkgfHwgaXNfYnBmX2FyZW5hX2tmdW5jKGJ0Zl9pZCkgfHxcbi1cdCAgICAgICBpc19icGZfc3RyZWFtX2tmdW5jKGJ0Zl9pZCk7XG4rXHRyZXR1cm4gKmtmdW5jLmZsYWdzIFx1MDAyNiBLRl9TUElOTE9DS19TQUZFO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCBpc19zeW5jX2NhbGxiYWNrX2NhbGxpbmdfa2Z1bmModTMyIGJ0Zl9pZClcbkBAIC0xNzQxNSw3ICsxNzM5Myw3IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2tfaW5zbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBib29sICpkb19wcmludF9zdGF0ZSlcbiBcdFx0XHRcdCAgICAgaW5zbi1cdTAwM2VpbW0gIT0gQlBGX0ZVTkNfc3Bpbl91bmxvY2sgXHUwMDI2XHUwMDI2XG4gXHRcdFx0XHQgICAgIGluc24tXHUwMDNlaW1tICE9IEJQRl9GVU5DX2twdHJfeGNoZykgfHxcbiBcdFx0XHRcdCAgICAoaW5zbi1cdTAwM2VzcmNfcmVnID09IEJQRl9QU0VVRE9fS0ZVTkNfQ0FMTCBcdTAwMjZcdTAwMjZcbi1cdFx0XHRcdCAgICAgKGluc24tXHUwMDNlb2ZmICE9IDAgfHwgIWtmdW5jX3NwaW5fYWxsb3dlZChpbnNuLVx1MDAzZWltbSkpKSkge1xuK1x0XHRcdFx0ICAgICAha2Z1bmNfc3Bpbl9hbGxvd2VkKGVudiwgaW5zbi1cdTAwM2VpbW0sIGluc24tXHUwMDNlb2ZmKSkpIHtcbiBcdFx0XHRcdFx0dmVyYm9zZShlbnYsXG4gXHRcdFx0XHRcdFx0XCJmdW5jdGlvbiBjYWxscyBhcmUgbm90IGFsbG93ZWQgd2hpbGUgaG9sZGluZyBhIGxvY2tcXG5cIik7XG4gXHRcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2NhbGwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2NhbGwuY1xuaW5kZXggN2FmNTU2MGYyYTA4Yy4uMmIzOWNjMWIwOWY5YSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2NhbGwuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2Z1bmNfY2FsbC5jXG5AQCAtNzEsOCArNzEsMTAgQEAgc3RhdGljIHN0cnVjdCBrZnVuY190ZXN0X3BhcmFtcyBrZnVuY190ZXN0c1tdID0ge1xuIFx0VENfRkFJTChrZnVuY19jYWxsX3Rlc3RfZ2V0X21lbV9mYWlsX25vdF9jb25zdCwgMCwgXCJpcyBub3QgYSBjb25zdFwiKSxcbiBcdFRDX0ZBSUwoa2Z1bmNfY2FsbF90ZXN0X21lbV9hY3F1aXJlX2ZhaWwsIDAsIFwiYWNxdWlyZSBrZXJuZWwgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIFBUUl9UT19CVEZfSURcIiksXG4gXHRUQ19GQUlMKGtmdW5jX2NhbGxfdGVzdF9wb2ludGVyX2FyZ190eXBlX21pc21hdGNoLCAwLCBcIlIxIGV4cGVjdGVkIHBvaW50ZXIgdG8gY3R4LCBidXQgZ290IHNjYWxhclwiKSxcbitcdFRDX0ZBSUwoa2Z1bmNfY2FsbF90ZXN0X3NwaW5fbG9ja191bnNhZmUsIDAsIFwiZnVuY3Rpb24gY2FsbHMgYXJlIG5vdCBhbGxvd2VkIHdoaWxlIGhvbGRpbmcgYSBsb2NrXCIpLFxuIFxuIFx0Lyogc3VjY2VzcyBjYXNlcyAqL1xuK1x0VENfVEVTVChrZnVuY19jYWxsX3Rlc3Rfc3Bpbl9sb2NrX3NhZmUsIDApLFxuIFx0VENfVEVTVChrZnVuY19jYWxsX3Rlc3QxLCAxMiksXG4gXHRUQ19URVNUKGtmdW5jX2NhbGxfdGVzdDIsIDMpLFxuIFx0VENfVEVTVChrZnVuY19jYWxsX3Rlc3Q0LCAtMTIzNCksXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfZmFpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfZmFpbC5jXG5pbmRleCA2NGI2YTBiMGFiMWNjLi43ZTkzZjdmYjEzMjk5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfZmFpbC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfY2FsbF9mYWlsLmNcbkBAIC00LDYgKzQsMTggQEBcbiAjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuICNpbmNsdWRlIFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXCJcbiBcbitzdGF0aWMgc3RydWN0IGJwZl9zcGluX2xvY2sga2Z1bmNfY2FsbF9sb2NrIFNFQyhcIi5kYXRhLkFcIik7XG4rXG4rU0VDKFwiP3RjXCIpXG4raW50IGtmdW5jX2NhbGxfdGVzdF9zcGluX2xvY2tfdW5zYWZlKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcbit7XG4rXHRicGZfc3Bpbl9sb2NrKFx1MDAyNmtmdW5jX2NhbGxfbG9jayk7XG4rXHRicGZfa2Z1bmNfdHJpZ2dlcl9jdHhfY2hlY2soKTtcbitcdGJwZl9zcGluX3VubG9jayhcdTAwMjZrZnVuY19jYWxsX2xvY2spO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIHN0cnVjdCBzeXNjYWxsX3Rlc3RfYXJncyB7XG4gXHRfX3U4IGRhdGFbMTZdO1xuIFx0c2l6ZV90IHNpemU7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfdGVzdC5jXG5pbmRleCA1ZWRjNTE1NjRmNzExLi44ZTY1NjBjMzFlNzgxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfdGVzdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfY2FsbF90ZXN0LmNcbkBAIC01LDYgKzUsMTggQEBcbiAjaW5jbHVkZSBcImJwZl9taXNjLmhcIlxuICNpbmNsdWRlIFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXCJcbiBcbitzdGF0aWMgc3RydWN0IGJwZl9zcGluX2xvY2sga2Z1bmNfY2FsbF9sb2NrIFNFQyhcIi5kYXRhLkFcIik7XG4rXG4rU0VDKFwidGNcIilcbitpbnQga2Z1bmNfY2FsbF90ZXN0X3NwaW5fbG9ja19zYWZlKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcbit7XG4rXHRicGZfc3Bpbl9sb2NrKFx1MDAyNmtmdW5jX2NhbGxfbG9jayk7XG4rXHRicGZfdGVzdG1vZF90ZXN0X21vZF9rZnVuYyg0Mik7XG4rXHRicGZfc3Bpbl91bmxvY2soXHUwMDI2a2Z1bmNfY2FsbF9sb2NrKTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbiBTRUMoXCJ0Y1wiKVxuIGludCBrZnVuY19jYWxsX3Rlc3Q1KHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcbiB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcbmluZGV4IGViMGY5YjVlMThkODUuLjA1ODU3OTQ2MDZlZDggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXG5AQCAtMTM4NCw3ICsxMzg0LDcgQEAgX19icGZfa2Z1bmMgdm9pZCBicGZfa2Z1bmNfdHJpZ2dlcl9jdHhfY2hlY2sodm9pZClcbiB9XG4gXG4gQlRGX0tGVU5DU19TVEFSVChicGZfdGVzdG1vZF9jaGVja19rZnVuY19pZHMpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90ZXN0bW9kX3Rlc3RfbW9kX2tmdW5jKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfdGVzdG1vZF90ZXN0X21vZF9rZnVuYywgS0ZfU1BJTkxPQ0tfU0FGRSlcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX2NhbGxfdGVzdDEpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9rZnVuY19jYWxsX3Rlc3QyKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfa2Z1bmNfY2FsbF90ZXN0MylcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE4OjMxOjM5LjY4MzgwNTE3N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMTcyMTA1MTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIFZlcmlmaWVyIENoYW5nZSBmb3IgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0cyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGBLRl9TUElOTE9DS19TQUZFYCBmbGFnIGZvciBCUEYga2Z1bmNzLCBhIG5ldyBmZWF0dXJlIHRoYXQncyBwcmV0dHkgaW50ZXJlc3RpbmcuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbGllcyBpbiB0aGUgQlBGIHZlcmlmaWVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICppcyB0aGlzIHdvcnRoIGZ1enppbmc/KiBBYnNvbHV0ZWx5LCBhbnkgbW9kaWZpY2F0aW9uIHRvIHRoZSB2ZXJpZmllciwgcGFydGljdWxhcmx5IG9uZSB0aGF0IGFsdGVycyB0aGUgYWxsb3dlZCBvcGVyYXRpb25zIHdpdGhpbiBhIGNyaXRpY2FsIHNlY3Rpb24gbGlrZSBhIHNwaW5sb2NrLCBkZW1hbmRzIHNjcnV0aW55LlxuXG5UaGUgZnVuZGFtZW50YWwgc2hpZnQgaXMgaG93IHRoZSB2ZXJpZmllciBub3cgZGV0ZXJtaW5lcyB3aGV0aGVyIGEga2Z1bmMgY2FuIGJlIHVzZWQgaW5zaWRlIGEgc3BpbmxvY2suIEluc3RlYWQgb2YgdGhhdCBoYXJkY29kZWQgbGlzdCBvZiBgaXNfYnBmXypfa2Z1bmNgIGNoZWNrcywgaXQgbm93IHVzZXMgdGhpcyBgS0ZfU1BJTkxPQ0tfU0FGRWAgZmxhZyBwcmVzZW50IGluIHRoZSBCVEYgZGF0YSBmb3IgZWFjaCBrZnVuYy4gVGhhdCdzIGEgc2lnbmlmaWNhbnQgcmVmYWN0b3JpbmcgdGhhdCBjb3VsZCBpbnRyb2R1Y2Ugc3VidGxlIGJlaGF2aW9yYWwgY2hhbmdlcywgb3IgZXZlbiBhbGxvdyBwcml2aWxlZ2VkIGNvZGUgdG8gYWNjZXNzIGZlYXR1cmVzIGJ5IG1pc3VzaW5nIHRoaXMgbmV3IGZsYWcuIEl0IGFsc28gbWVhbnMgdGhhdCBleHRlcm5hbCBtb2R1bGVzIG5vdyBoYXZlIHRoZSBhYmlsaXR5IHRvIGV4cGxpY2l0bHkgbWFyayB0aGVpciBrZnVuY3MgYXMgXCJzcGlubG9jayBzYWZlLFwiIHdoaWNoIHdpZGVucyB0aGUgYXR0YWNrIHN1cmZhY2UuIFRoaXMgaXMgYSBwb3RlbnRpYWwgbmV3IGZlYXR1cmUvcmVmYWN0b3JpbmcgdGhhdCBkZXNlcnZlcyBmdXp6aW5nLlxuXG5NeSBwcmltYXJ5IGZvY3VzIHNoaWZ0cyB0byBga2Z1bmNfc3Bpbl9hbGxvd2VkYCwgdGhlIGZ1bmN0aW9uIGJlaW5nIG1vZGlmaWVkLCBhbmQgaXRzIGNhbGwgY2hhaW4uIEl0J3Mgc3RhdGljLCB3aGljaCBpcyB0eXBpY2FsIGZvciB0aGUgdmVyaWZpZXIsIGJ1dCBpdCdzIGNhbGxlZCBieSBgZG9fY2hlY2tfaW5zbmAsIHdoaWNoIGlzIGFsc28gc3RhdGljLiBGb2xsb3dpbmcgdGhlIGNhbGwgZ3JhcGgsIGBkb19jaGVja19pbnNuYCBpcyBjYWxsZWQgYnkgYGRvX2NoZWNrYCwgd2hpY2ggaXMgdGhlIGltbWVkaWF0ZSBuZXh0IGZ1bmN0aW9uIHRoYXQgbmVlZHMgY2hlY2tpbmcuIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgZW50cnkgcG9pbnQgZm9yIHRoZSBmdXp6aW5nIGFuYWx5c2lzLiBJJ2xsIG5lZWQgdG8gc2NydXRpbml6ZSBgZmV0Y2hfa2Z1bmNfbWV0YWAgYXMgd2VsbCwgc2luY2UgdGhhdCdzIHdoZXJlIHRoZSBrZnVuYyBtZXRhZGF0YSBpbmNsdWRpbmcgdGhlIGZsYWcgaXMgcmV0cmlldmVkLiBUaGUgQlBGIHZlcmlmaWVyIGlzIGFscmVhZHkgaGVhdmlseSBmdXp6ZWQgYnkgc3l6a2FsbGVyLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcsIGJ1dCBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoaXMgc3BlY2lmaWMgY2hhbmdlIGlzIGNvdmVyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4MjMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2ODIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxODozMTo0OS44NTU5MTM1OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDY5NTMzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmZXRjaF9rZnVuY19tZXRhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjYzND1zdGF0aWMgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICpmaW5kX2tmdW5jX2ltcGxfcHJvdG8oc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yNjYwLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyNjYxOnN0YXRpYyBpbnQgZmV0Y2hfa2Z1bmNfbWV0YShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yNjYyLVxcdFxcdFxcdCAgICBzMzIgZnVuY19pZCxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0yNzI3PWludCBicGZfYWRkX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgdTMyIGZ1bmNfaWQsIHUxNiBvZmZzZXQpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjc5NC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6Mjc5NTpcXHRlcnIgPSBmZXRjaF9rZnVuY19tZXRhKGVudiwgZnVuY19pZCwgb2Zmc2V0LCBcXHUwMDI2a2Z1bmMpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yNzk2LVxcdGlmIChlcnIpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE4MDg9c3RhdGljIGJvb2wga2Z1bmNfc3Bpbl9hbGxvd2VkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHMzMiBmdW5jX2lkLCBzMTYgb2Zmc2V0KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExODEyLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTgxMzpcXHRlcnIgPSBmZXRjaF9rZnVuY19tZXRhKGVudiwgZnVuY19pZCwgb2Zmc2V0LCBcXHUwMDI2a2Z1bmMpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTgxNC1cXHRpZiAoZXJyIHx8ICFrZnVuYy5mbGFncylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjYxNT1pbnQgYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI2MjQtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNjI1OlxcdGVyciA9IGZldGNoX2tmdW5jX21ldGEoZW52LCBmdW5jX2lkLCBvZmZzZXQsIFxcdTAwMjZrZnVuYyk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNjI2LVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE4OjMxOjQ5LjkzNjYxNjg2MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MDg4OTkyNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGl2aW5nIGludG8gQlBGIFZlcmlmaWNhdGlvbioqXG5cbk9rYXksIHNvIGBrZnVuY19zcGluX2FsbG93ZWRgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBkb19jaGVja19pbnNuYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlbid0IHN0YXRpYzsgdGhvc2UgYXJlIHRoZSBvbmVzIHdlIG5lZWQgdG8gYW5hbHl6ZSBtb3JlIGNsb3NlbHkuIFRoYXQgdXN1YWxseSBwb2ludHMgdG8gdGhlIGNvcmUgZnVuY3Rpb25hbGl0eS4gSSBrbm93IGBicGZfY2hlY2tgIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciB0aGUgdmVyaWZpZXIsIHNvIEknbGwgc3RhcnQgd2l0aCB0aGF0LiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZXhhbWluZSBga2VybmVsL2JwZi92ZXJpZmllci5jYCBhbmQgc2VlIHdoaWNoIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgb3IsIGlmIG5vdCBleHBvcnRlZCwgYXJlICpub24tc3RhdGljKiwgd2hpY2ggd291bGQgaW5kaWNhdGUgdGhlaXIgbGlrZWx5IGltcG9ydGFuY2UgaW4gdGhpcyBjb250ZXh0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24gYW5kIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0NjIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxODozMTo1My42NDU1MTg5OTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwODc4NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXmludCBicGZfY2hlY2tcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTIwMDIwPXN0YXRpYyBpbnQgYnBmX3Byb2dfdmVyaWZ5X3NpZ25hdHVyZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMTM2LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMDEzNzppbnQgYnBmX2NoZWNrKHN0cnVjdCBicGZfcHJvZyAqKnByb2csIHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjAxMzgtXFx0ICAgICAgc3RydWN0IGJwZl9sb2dfYXR0ciAqYXR0cl9sb2cpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE4OjMxOjUzLjY5MTYxMjM0MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1MjMzMzA3MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIHNlZW1zIGZvY3VzZWQuIEkgbGlrZSB0aGF0IHRoZXkncmUgemVyb2luZyBpbiBvbiBgYnBmX2NoZWNrYDsgdGhhdCBzZWVtcyBsaWtlIHRoZSByaWdodCBhcmVhIHRvIHN0YXJ0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgaW1wYWN0IG9uIGBkb19jaGVja2AgYXMgd2VsbCwgc2luY2UgdGhhdCBvbmUgaXMgc3RhdGljIGFuZCBtaWdodCBiZSBkaXJlY3RseSByZWxhdGVkLiBJIHNob3VsZCBhbHNvIG1ha2Ugc3VyZSBubyBvdGhlciBmdW5jdGlvbnMgYXJlIGluZGlyZWN0bHkgYWZmZWN0ZWQuXG5cbkxvb2tpbmcgZGVlcGVyLCB0aGUgcGF0Y2ggbWVudGlvbnMgbW9kaWZpY2F0aW9ucyB0byBmdW5jdGlvbnMgbGlrZSBgYnBmX2FyZW5hX2FsbG9jX3BhZ2VzYCwgYGJwZl9hcmVuYV9mcmVlX3BhZ2VzYCwgYW5kIHNvIG9uLCBidXQgaXQgb25seSBjaGFuZ2VzIHRoZWlyIEJURiBmbGFncywgbm90IHRoZSBjb3JlIGxvZ2ljLiBUaGUgbWVhdCBvZiB0aGUgY2hhbmdlIGFwcGVhcnMgdG8gYmUgd2l0aGluIGBrZnVuY19zcGluX2FsbG93ZWRgLCB3aGljaCBpcyBhbHNvIHN0YXRpYy4gVGhpcyByZWluZm9yY2VzIG15IGluaXRpYWwgYXNzZXNzbWVudCB0aGF0IGludmVzdGlnYXRpbmcgYGJwZl9jaGVja2AgaXMgdGhlIG1vc3QgZGlyZWN0IHBhdGguXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSSBrbm93IEJQRiBpcyBlbmFibGVkIHZpYSBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYnV0IEkgbmVlZCB0byBlbnN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjcnVjaWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdCBwbGF5IGhlcmUuIFRoaXMgbWVhbnMgSSdsbCBiZSBsb29raW5nIGF0IHRoZSByZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgc3BlY2lmaWNhbGx5IG9uZXMgdXNlZCBieSB0aGUgbW9kaWZpZWQgZmlsZXMuXG5cblRoZSBwYXRjaCB0b3VjaGVzIGZpbGVzIGluIGBrZXJuZWwvYnBmL2FyZW5hLmNgLCBga2VybmVsL2JwZi9oZWxwZXJzLmNgLCBga2VybmVsL2JwZi9ycXNwaW5sb2NrLmNgLCBhbmQgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIFRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLCBJJ2xsIGV4YW1pbmUgdGhlIGBrZXJuZWwvYnBmL01ha2VmaWxlYC4gVGhpcyBzaG91bGQgbGlzdCB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgY29udHJvbCB0aGUgY29tcGlsYXRpb24gb2YgdGhvc2UgZmlsZXMsIHByb3ZpZGluZyBhIGNvbXByZWhlbnNpdmUgdmlldyBvZiBhbnkgcHJlcmVxdWlzaXRlcyBmb3IgdGhlc2UgY2hhbmdlcyB0byB0YWtlIGVmZmVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTg2MywiT3V0cHV0VG9rZW5zIjo1OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxODozMjowMC4yMTQ5NDUwOTRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQzNzk1MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXJlbmFcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlPTE5PWlmZXEgKCQoQ09ORklHX01NVSkkKENPTkZJR182NEJJVCkseXkpXFxua2VybmVsL2JwZi9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGFyZW5hLm8gcmFuZ2VfdHJlZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0yMS1lbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxODozMjowMC4yNTkzMzAwODlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ1Mjc0MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnFzcGlubG9ja1xcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGU9MTc9b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IHRyYW1wb2xpbmUub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBidGYubyBtZW1hbGxvYy5vIHJxc3BpbmxvY2subyBzdHJlYW0ub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTktaWZlcSAoJChDT05GSUdfTU1VKSQoQ09ORklHXzY0QklUKSx5eSlcXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU9NzU9Q0ZMQUdTX1JFTU9WRV9yaW5nYnVmLm8gPSAkKENDX0ZMQUdTX0ZUUkFDRSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjc2OkNGTEFHU19SRU1PVkVfcnFzcGlubG9jay5vID0gJChDQ19GTEFHU19GVFJBQ0UpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE4OjMyOjAwLjMwMzg2NTU0NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTEwMTk2NTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQW5hbHl6aW5nIHRoZSBCUEYgU3lzdGVtIENhbGwgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIG15IGZvY3VzIGlzIHplcm9pbmcgaW4gb24gdGhpcyBgQ09ORklHX0JQRl9TWVNDQUxMYCBvcHRpb24uIFRoYXQncyB0aGUgcHJpbWFyeSBmbGFnIEkgbmVlZCB0byB0cmFjay4gSG9sZCBvbiBhIHNlY29uZCwgdGhvdWdoLCBiZWNhdXNlIGBhcmVuYS5vYCBoYXMgZGVwZW5kZW5jaWVzIG9uIGJvdGggYENPTkZJR19NTVVgIGFuZCBgQ09ORklHXzY0QklUYC4gVGhhdCBpbXBhY3RzIGhvdyB0aGlzIHdpbGwgdWx0aW1hdGVseSBwbGF5IG91dC4gQnV0IEkgdGhpbmsgdGhlIHJlYWwgbWVhdCBvZiB0aGUgbW9kaWZpY2F0aW9uIHJlc2lkZXMgaW4gYHZlcmlmaWVyLmNgLCBhbmQgdGhhdCdzIGNvbXBpbGVkIHdpdGggYENPTkZJR19CUEZfU1lTQ0FMTGAsIHJpZ2h0PyBPa2F5LCBzbyB0aGF0J3MgdGhlIGtleSBmaWxlLiBJIHNob3VsZCByZWFsbHkgY2hlY2sgdGhlIGBrZXJuZWwvYnBmL01ha2VmaWxlYCB0byBjb25maXJtIHdoZXJlIGB2ZXJpZmllci5vYCBpcyBiZWluZyBidWlsdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBidWlsZCBwcm9jZXNzIGJldHRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA3MzEsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTg6MzI6MDQuODE0MDY2OTE2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTUzOTYyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2ZXJpZmllclxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGU9Nz1DRkxBR1NfY29yZS5vICs9IC1Xbm8tb3ZlcnJpZGUtaW5pdCAkKGNmbGFncy1ub2djc2UteXkpXFxua2VybmVsL2JwZi9NYWtlZmlsZS04LVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHN5c2NhbGwubyB2ZXJpZmllci5vIGlub2RlLm8gaGVscGVycy5vIHRudW0ubyBjbnVtLm8gbG9nLm8gdG9rZW4ubyBsaXZlbmVzcy5vIGNvbnN0X2ZvbGQub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTAtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfaXRlci5vIG1hcF9pdGVyLm8gdGFza19pdGVyLm8gcHJvZ19pdGVyLm8gbGlua19pdGVyLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTg6MzI6MDQuODU5NjEzNDIxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyNDE2NjYzNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFZlcmlmaWVyIFBhdGNoKipcblxuT2theSwgc28gaXQgbG9va3MgbGlrZSBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgb25seSBjb25maWcgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCBoZXJlLiBUaGlzIHBhdGNoIGlzIGNoYW5naW5nIGhvdyB0aGUgQlBGIHZlcmlmaWVyIGhhbmRsZXMgc3BpbmxvY2sgc2FmZXR5IHdpdGgga2Z1bmNzLiBJbnN0ZWFkIG9mIGEgcmlnaWQsIGhhcmRjb2RlZCBsaXN0LCBpdCdzIGxldmVyYWdpbmcgYSBCVEYgZmxhZywgYEtGX1NQSU5MT0NLX1NBRkVgLCB3aGljaCBpcyBhIG11Y2ggbW9yZSBlbGVnYW50IGFuZCBmbGV4aWJsZSBhcHByb2FjaC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHZlcmlmaWVyJ3Mgc2FmZXR5IGxvZ2ljOyBpdCdzIHNpZ25pZmljYW50IGJlY2F1c2UgaXQgbGV0cyBleHRlcm5hbCBtb2R1bGVzIG1hcmsgdGhlaXIga2Z1bmNzIGFzIHNwaW5sb2NrLXNhZmUsIG9wZW5pbmcgdXAgbmV3IHBvc3NpYmlsaXRpZXMgZm9yIEJQRiBwcm9ncmFtIGZ1bmN0aW9uYWxpdHkgYW5kIGludGVncmF0aW9uLlxuXG5UaGUgbWFpbiBwb2ludCBvZiBmb2N1cyBoZXJlIGlzIHRoZSBgYnBmX2NoZWNrYCBzeW1ib2wsIG9idmlvdXNseSwgc2luY2UgdGhhdCdzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciB0aGUgdmVyaWZpZXIgaXRzZWxmLiBTbyBgYnBmX2NoZWNrYCBpcyB3aGVyZSBJJ2xsIG5lZWQgdG8gc2V0IHRoZSByZXN1bHRzIGFuZCBsb29rIGZvciBwb3RlbnRpYWwgaXNzdWVzLiBUaGUgb3ZlcmFsbCBjaGFuZ2Ugc2VlbXMgc291bmQsIGJ1dCBnaXZlbiBpdHMgaW1wYWN0IG9uIHNlY3VyaXR5IGFuZCB3aGF0J3MgYXQgc3Rha2UsIHRoaXMgZGVmaW5pdGVseSBuZWVkcyBzb21lIHNlcmlvdXMgZnV6emluZyB0byBtYWtlIHN1cmUgaXQncyByb2J1c3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMTgwLCJPdXRwdXRUb2tlbnMiOjEyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxODozMjoxMS4xMDEyODIxMTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDU0ODQyMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHVzZSBhIEJURiBmbGFnIChLRl9TUElOTE9DS19TQUZFKSB0byBkZXRlcm1pbmUgaWYgYSBrZnVuYyBjYW4gYmUgY2FsbGVkIHdoaWxlIGhvbGRpbmcgYSBCUEYgc3BpbmxvY2ssIHJlcGxhY2luZyBhIGhhcmRjb2RlZCBsaXN0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHZlcmlmaWVyJ3Mgc2FmZXR5IGNoZWNrcyBhbmQgYWxsb3dzIGV4dGVybmFsIG1vZHVsZXMgdG8gbWFyayB0aGVpciBrZnVuY3MgYXMgc3BpbmxvY2stc2FmZS4gSXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9jaGVja1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gdXNlIGEgQlRGIGZsYWcgKEtGX1NQSU5MT0NLX1NBRkUpIHRvIGRldGVybWluZSBpZiBhIGtmdW5jIGNhbiBiZSBjYWxsZWQgd2hpbGUgaG9sZGluZyBhIEJQRiBzcGlubG9jaywgcmVwbGFjaW5nIGEgaGFyZGNvZGVkIGxpc3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdmVyaWZpZXIncyBzYWZldHkgY2hlY2tzIGFuZCBhbGxvd3MgZXh0ZXJuYWwgbW9kdWxlcyB0byBtYXJrIHRoZWlyIGtmdW5jcyBhcyBzcGlubG9jay1zYWZlLiBJdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7672g[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-05 18:14:13 +0000 UTC FinishedAt: 2026-08-05 18:32:13 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "20a772f1-dedb-4e04-83a0-fbf0566ec5f6" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_check" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gdXNlIGEgQlRGIGZsYWcgKEtGX1NQSU5MT0NLX1NBRkUpIHRvIGRldGVybWluZSBpZiBhIGtmdW5jIGNhbiBiZSBjYWxsZWQgd2hpbGUgaG9sZGluZyBhIEJQRiBzcGlubG9jaywgcmVwbGFjaW5nIGEgaGFyZGNvZGVkIGxpc3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdmVyaWZpZXImIzM5O3Mgc2FmZXR5IGNoZWNrcyBhbmQgYWxsb3dzIGV4dGVybmFsIG1vZHVsZXMgdG8gbWFyayB0aGVpciBrZnVuY3MgYXMgc3BpbmxvY2stc2FmZS4gSXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxODozMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDBiZDM1MjI4NzlmNmI4ZjkyNmUzMzU2NGNhNzNjYThjY2RhZTYzODZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDE4OjMxOjM4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnRmLmggYi9pbmNsdWRlL2xpbnV4L2J0Zi5oXG5pbmRleCBjMDliNzk5NGRlNGViLi4zZjUyNTVkMDk1YTI3IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9idGYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9idGYuaFxuQEAgLTc5LDYgJiM0Mzs3OSw3IEBAXG4gI2RlZmluZSBLRl9BUkVOQV9BUkcxICAgKDEgXHUwMDNjXHUwMDNjIDE0KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBmaXJzdCBhcmd1bWVudCAqL1xuICNkZWZpbmUgS0ZfQVJFTkFfQVJHMiAgICgxIFx1MDAzY1x1MDAzYyAxNSkgLyoga2Z1bmMgdGFrZXMgYW4gYXJlbmEgcG9pbnRlciBhcyBpdHMgc2Vjb25kIGFyZ3VtZW50ICovXG4gI2RlZmluZSBLRl9JTVBMSUNJVF9BUkdTICgxIFx1MDAzY1x1MDAzYyAxNikgLyoga2Z1bmMgaGFzIGltcGxpY2l0IGFyZ3VtZW50cyBzdXBwbGllZCBieSB0aGUgdmVyaWZpZXIgKi9cbiYjNDM7I2RlZmluZSBLRl9TUElOTE9DS19TQUZFICgxIFx1MDAzY1x1MDAzYyAxNykgLyoga2Z1bmMgaXMgYWxsb3dlZCBpbnNpZGUgYnBmX3NwaW5fbG9jay1lZCByZWdpb24gKi9cbiBcbiAvKlxuICAqIFRhZyBtYXJraW5nIGEga2VybmVsIGZ1bmN0aW9uIGFzIGEga2Z1bmMuIFRoaXMgaXMgbWVhbnQgdG8gbWluaW1pemUgdGhlXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9hcmVuYS5jIGIva2VybmVsL2JwZi9hcmVuYS5jXG5pbmRleCA1NTVlZTI1MzFlZjk4Li43YjY4NDcyMDBiNDMxIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9hcmVuYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL2FyZW5hLmNcbkBAIC0xMTE4LDkgJiM0MzsxMTE4LDkgQEAgX19icGZfa2Z1bmMgaW50IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKHZvaWQgKnBfX21hcCwgdm9pZCAqcHRyX19pZ24sIHUzMiBwYWdlX2NcbiBfX2JwZl9rZnVuY19lbmRfZGVmcygpO1xuIFxuIEJURl9LRlVOQ1NfU1RBUlQoYXJlbmFfa2Z1bmNzKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfYXJlbmFfYWxsb2NfcGFnZXMsIEtGX0FSRU5BX1JFVCB8IEtGX0FSRU5BX0FSRzIpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9mcmVlX3BhZ2VzLCBLRl9BUkVOQV9BUkcyKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcywgS0ZfQVJFTkFfQVJHMilcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9hbGxvY19wYWdlcywgS0ZfQVJFTkFfUkVUIHwgS0ZfQVJFTkFfQVJHMiB8IEtGX1NQSU5MT0NLX1NBRkUpXG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfYXJlbmFfZnJlZV9wYWdlcywgS0ZfQVJFTkFfQVJHMiB8IEtGX1NQSU5MT0NLX1NBRkUpXG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcywgS0ZfQVJFTkFfQVJHMiB8IEtGX1NQSU5MT0NLX1NBRkUpXG4gQlRGX0tGVU5DU19FTkQoYXJlbmFfa2Z1bmNzKVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX2tmdW5jX2lkX3NldCBjb21tb25fa2Z1bmNfc2V0ID0ge1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvaGVscGVycy5jIGIva2VybmVsL2JwZi9oZWxwZXJzLmNcbmluZGV4IDQ3MDlhNWFkMDQ3NDcuLjYzODhiNmIyM2U0OTAgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2hlbHBlcnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9oZWxwZXJzLmNcbkBAIC00ODEyLDMwICYjNDM7NDgxMiwzMiBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX29ial9kcm9wLCBLRl9SRUxFQVNFIHwgS0ZfSU1QTElDSVRfQVJHUylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX29ial9kcm9wX2ltcGwsIEtGX1JFTEVBU0UpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX2Ryb3AsIEtGX1JFTEVBU0UgfCBLRl9JTVBMSUNJVF9BUkdTKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcGVyY3B1X29ial9kcm9wX2ltcGwsIEtGX1JFTEVBU0UpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZWZjb3VudF9hY3F1aXJlLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UgfCBLRl9JTVBMSUNJVF9BUkdTKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfZnJvbnQsIEtGX0lNUExJQ0lUX0FSR1MpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfZnJvbnRfaW1wbClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9iYWNrLCBLRl9JTVBMSUNJVF9BUkdTKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2JhY2tfaW1wbClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfYWRkLCBLRl9JTVBMSUNJVF9BUkdTKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wb3BfZnJvbnQsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcG9wX2JhY2ssIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfZGVsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2Zyb250LCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfYmFjaywgS0ZfUkVUX05VTEwpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2lzX2ZpcnN0KVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9pc19sYXN0KVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9lbXB0eSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZWZjb3VudF9hY3F1aXJlLFxuJiM0MztcdCAgICAgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVIHwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUpXG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLFxuJiM0MztcdCAgICAgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfZnJvbnQsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udF9pbXBsLCBLRl9TUElOTE9DS19TQUZFKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9iYWNrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfYmFja19pbXBsLCBLRl9TUElOTE9DS19TQUZFKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfYWRkLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3BvcF9mcm9udCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3BvcF9iYWNrLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfZGVsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfZnJvbnQsIEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2JhY2ssIEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2lzX2ZpcnN0LCBLRl9TUElOTE9DS19TQUZFKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfaXNfbGFzdCwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2VtcHR5LCBLRl9TUElOTE9DS19TQUZFKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza19hY3F1aXJlLCBLRl9BQ1FVSVJFIHwgS0ZfUkNVIHwgS0ZfUkVUX05VTEwpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3JlbGVhc2UsIEtGX1JFTEVBU0UpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfcmVtb3ZlLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfYWRkLCBLRl9JTVBMSUNJVF9BUkdTKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2FkZF9pbXBsKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2ZpcnN0LCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9yb290LCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9sZWZ0LCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9yaWdodCwgS0ZfUkVUX05VTEwpXG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX3JlbW92ZSwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfYWRkLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfYWRkX2ltcGwsIEtGX1NQSU5MT0NLX1NBRkUpXG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2ZpcnN0LCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpXG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX3Jvb3QsIEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfbGVmdCwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9yaWdodCwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxuIFxuICNpZmRlZiBDT05GSUdfQ0dST1VQU1xuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfY2dyb3VwX2FjcXVpcmUsIEtGX0FDUVVJUkUgfCBLRl9SQ1UgfCBLRl9SRVRfTlVMTClcbkBAIC00ODg1LDkgJiM0Mzs0ODg3LDkgQEAgQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yY3VfcmVhZF9sb2NrKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmN1X3JlYWRfdW5sb2NrKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfZHlucHRyX3NsaWNlLCBLRl9SRVRfTlVMTClcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2R5bnB0cl9zbGljZV9yZHdyLCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfbnVtX25ldywgS0ZfSVRFUl9ORVcpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX251bV9uZXh0LCBLRl9JVEVSX05FWFQgfCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3ksIEtGX0lURVJfREVTVFJPWSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX251bV9uZXcsIEtGX0lURVJfTkVXIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX251bV9uZXh0LCBLRl9JVEVSX05FWFQgfCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpXG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9udW1fZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfdGFza192bWFfbmV3LCBLRl9JVEVSX05FVyB8IEtGX1JDVSlcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfdGFza192bWFfbmV4dCwgS0ZfSVRFUl9ORVhUIHwgS0ZfUkVUX05VTEwpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX3Rhc2tfdm1hX2Rlc3Ryb3ksIEtGX0lURVJfREVTVFJPWSlcbkBAIC00OTYyLDggJiM0Mzs0OTY0LDggQEAgQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2FzZXN0cik7XG4gI2lmIGRlZmluZWQoQ09ORklHX0JQRl9MU00pIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19DR1JPVVBTKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfY2dyb3VwX3JlYWRfeGF0dHIsIEtGX1JDVSlcbiAjZW5kaWZcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV92cHJpbnRrLCBLRl9JTVBMSUNJVF9BUkdTKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrLCBLRl9JTVBMSUNJVF9BUkdTKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV92cHJpbnRrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbCwgS0ZfSU1QTElDSVRfQVJHUylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWUsIEtGX0lNUExJQ0lUX0FSR1MpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9keW5wdHJfZnJvbV9maWxlKVxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvcnFzcGlubG9jay5jIGIva2VybmVsL2JwZi9ycXNwaW5sb2NrLmNcbmluZGV4IGU0ZTMzOGNkYjQzN2MuLmU1MjdjYjQyNWNmNDUgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3Jxc3BpbmxvY2suY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9ycXNwaW5sb2NrLmNcbkBAIC03NDQsMTAgJiM0Mzs3NDQsMTAgQEAgX19icGZfa2Z1bmMgdm9pZCBicGZfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoc3RydWN0IGJwZl9yZXNfc3Bpbl9sb2NrICpsb2NrLFxuIF9fYnBmX2tmdW5jX2VuZF9kZWZzKCk7XG4gXG4gQlRGX0tGVU5DU19TVEFSVChycXNwaW5sb2NrX2tmdW5jX2lkcylcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX2xvY2ssIEtGX1JFVF9OVUxMKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVzX3NwaW5fdW5sb2NrKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVzX3NwaW5fbG9ja19pcnFzYXZlLCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX3VubG9ja19pcnFyZXN0b3JlKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX2xvY2ssIEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZXNfc3Bpbl91bmxvY2ssIEtGX1NQSU5MT0NLX1NBRkUpXG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVzX3NwaW5fbG9ja19pcnFzYXZlLCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpXG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmUsIEtGX1NQSU5MT0NLX1NBRkUpXG4gQlRGX0tGVU5DU19FTkQocnFzcGlubG9ja19rZnVuY19pZHMpXG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBidGZfa2Z1bmNfaWRfc2V0IHJxc3BpbmxvY2tfa2Z1bmNfc2V0ID0ge1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggYjI3NDAwNGZjY2ZkOS4uN2MxZWRjYWUyOTNhOCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTE3OTcsMjAgJiM0MzsxMTc5Nyw2IEBAIHN0YXRpYyBib29sIGlzX2JwZl9yYnRyZWVfYXBpX2tmdW5jKHUzMiBidGZfaWQpXG4gXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX3JpZ2h0XTtcbiB9XG4gXG4tc3RhdGljIGJvb2wgaXNfYnBmX2l0ZXJfbnVtX2FwaV9rZnVuYyh1MzIgYnRmX2lkKVxuLXtcbi1cdHJldHVybiBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9pdGVyX251bV9uZXddIHx8XG4tXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfaXRlcl9udW1fbmV4dF0gfHxcbi1cdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9pdGVyX251bV9kZXN0cm95XTtcbi19XG4tXG4tc3RhdGljIGJvb2wgaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyh1MzIgYnRmX2lkKVxuLXtcbi1cdHJldHVybiBpc19icGZfbGlzdF9hcGlfa2Z1bmMoYnRmX2lkKSB8fFxuLVx0ICAgICAgIGlzX2JwZl9yYnRyZWVfYXBpX2tmdW5jKGJ0Zl9pZCkgfHxcbi1cdCAgICAgICBpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyhidGZfaWQpO1xuLX1cbi1cbiBzdGF0aWMgYm9vbCBpc19icGZfcmVzX3NwaW5fbG9ja19rZnVuYyh1MzIgYnRmX2lkKVxuIHtcbiBcdHJldHVybiBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrXSB8fFxuQEAgLTExODE5LDI0ICYjNDM7MTE4MDUsMTYgQEAgc3RhdGljIGJvb2wgaXNfYnBmX3Jlc19zcGluX2xvY2tfa2Z1bmModTMyIGJ0Zl9pZClcbiBcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZV07XG4gfVxuIFxuLXN0YXRpYyBib29sIGlzX2JwZl9hcmVuYV9rZnVuYyh1MzIgYnRmX2lkKVxuJiM0MztzdGF0aWMgYm9vbCBrZnVuY19zcGluX2FsbG93ZWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgczMyIGZ1bmNfaWQsIHMxNiBvZmZzZXQpXG4ge1xuLVx0cmV0dXJuIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX2FsbG9jX3BhZ2VzXSB8fFxuLVx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX2ZyZWVfcGFnZXNdIHx8XG4tXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfYXJlbmFfcmVzZXJ2ZV9wYWdlc107XG4tfVxuJiM0MztcdHN0cnVjdCBicGZfa2Z1bmNfbWV0YSBrZnVuYztcbiYjNDM7XHRpbnQgZXJyO1xuIFxuLXN0YXRpYyBib29sIGlzX2JwZl9zdHJlYW1fa2Z1bmModTMyIGJ0Zl9pZClcbi17XG4tXHRyZXR1cm4gYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc3RyZWFtX3ZwcmludGtdIHx8XG4tXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc3RyZWFtX3ByaW50X3N0YWNrXTtcbi19XG4mIzQzO1x0ZXJyID0gZmV0Y2hfa2Z1bmNfbWV0YShlbnYsIGZ1bmNfaWQsIG9mZnNldCwgXHUwMDI2a2Z1bmMpO1xuJiM0MztcdGlmIChlcnIgfHwgIWtmdW5jLmZsYWdzKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuIFxuLXN0YXRpYyBib29sIGtmdW5jX3NwaW5fYWxsb3dlZCh1MzIgYnRmX2lkKVxuLXtcbi1cdHJldHVybiBpc19icGZfZ3JhcGhfYXBpX2tmdW5jKGJ0Zl9pZCkgfHwgaXNfYnBmX2l0ZXJfbnVtX2FwaV9rZnVuYyhidGZfaWQpIHx8XG4tXHQgICAgICAgaXNfYnBmX3Jlc19zcGluX2xvY2tfa2Z1bmMoYnRmX2lkKSB8fCBpc19icGZfYXJlbmFfa2Z1bmMoYnRmX2lkKSB8fFxuLVx0ICAgICAgIGlzX2JwZl9zdHJlYW1fa2Z1bmMoYnRmX2lkKTtcbiYjNDM7XHRyZXR1cm4gKmtmdW5jLmZsYWdzIFx1MDAyNiBLRl9TUElOTE9DS19TQUZFO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCBpc19zeW5jX2NhbGxiYWNrX2NhbGxpbmdfa2Z1bmModTMyIGJ0Zl9pZClcbkBAIC0xNzQxNSw3ICYjNDM7MTczOTMsNyBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX2luc24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgYm9vbCAqZG9fcHJpbnRfc3RhdGUpXG4gXHRcdFx0XHQgICAgIGluc24tXHUwMDNlaW1tICE9IEJQRl9GVU5DX3NwaW5fdW5sb2NrIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0ICAgICBpbnNuLVx1MDAzZWltbSAhPSBCUEZfRlVOQ19rcHRyX3hjaGcpIHx8XG4gXHRcdFx0XHQgICAgKGluc24tXHUwMDNlc3JjX3JlZyA9PSBCUEZfUFNFVURPX0tGVU5DX0NBTEwgXHUwMDI2XHUwMDI2XG4tXHRcdFx0XHQgICAgIChpbnNuLVx1MDAzZW9mZiAhPSAwIHx8ICFrZnVuY19zcGluX2FsbG93ZWQoaW5zbi1cdTAwM2VpbW0pKSkpIHtcbiYjNDM7XHRcdFx0XHQgICAgICFrZnVuY19zcGluX2FsbG93ZWQoZW52LCBpbnNuLVx1MDAzZWltbSwgaW5zbi1cdTAwM2VvZmYpKSkge1xuIFx0XHRcdFx0XHR2ZXJib3NlKGVudixcbiBcdFx0XHRcdFx0XHRcJiMzNDtmdW5jdGlvbiBjYWxscyBhcmUgbm90IGFsbG93ZWQgd2hpbGUgaG9sZGluZyBhIGxvY2tcXG5cJiMzNDspO1xuIFx0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19jYWxsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19jYWxsLmNcbmluZGV4IDdhZjU1NjBmMmEwOGMuLjJiMzljYzFiMDlmOWEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19jYWxsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2NhbGwuY1xuQEAgLTcxLDggJiM0Mzs3MSwxMCBAQCBzdGF0aWMgc3RydWN0IGtmdW5jX3Rlc3RfcGFyYW1zIGtmdW5jX3Rlc3RzW10gPSB7XG4gXHRUQ19GQUlMKGtmdW5jX2NhbGxfdGVzdF9nZXRfbWVtX2ZhaWxfbm90X2NvbnN0LCAwLCBcJiMzNDtpcyBub3QgYSBjb25zdFwmIzM0OyksXG4gXHRUQ19GQUlMKGtmdW5jX2NhbGxfdGVzdF9tZW1fYWNxdWlyZV9mYWlsLCAwLCBcJiMzNDthY3F1aXJlIGtlcm5lbCBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gUFRSX1RPX0JURl9JRFwmIzM0OyksXG4gXHRUQ19GQUlMKGtmdW5jX2NhbGxfdGVzdF9wb2ludGVyX2FyZ190eXBlX21pc21hdGNoLCAwLCBcJiMzNDtSMSBleHBlY3RlZCBwb2ludGVyIHRvIGN0eCwgYnV0IGdvdCBzY2FsYXJcJiMzNDspLFxuJiM0MztcdFRDX0ZBSUwoa2Z1bmNfY2FsbF90ZXN0X3NwaW5fbG9ja191bnNhZmUsIDAsIFwmIzM0O2Z1bmN0aW9uIGNhbGxzIGFyZSBub3QgYWxsb3dlZCB3aGlsZSBob2xkaW5nIGEgbG9ja1wmIzM0OyksXG4gXG4gXHQvKiBzdWNjZXNzIGNhc2VzICovXG4mIzQzO1x0VENfVEVTVChrZnVuY19jYWxsX3Rlc3Rfc3Bpbl9sb2NrX3NhZmUsIDApLFxuIFx0VENfVEVTVChrZnVuY19jYWxsX3Rlc3QxLCAxMiksXG4gXHRUQ19URVNUKGtmdW5jX2NhbGxfdGVzdDIsIDMpLFxuIFx0VENfVEVTVChrZnVuY19jYWxsX3Rlc3Q0LCAtMTIzNCksXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfZmFpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfZmFpbC5jXG5pbmRleCA2NGI2YTBiMGFiMWNjLi43ZTkzZjdmYjEzMjk5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfZmFpbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfY2FsbF9mYWlsLmNcbkBAIC00LDYgJiM0Mzs0LDE4IEBAXG4gI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiAjaW5jbHVkZSBcJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcJiMzNDtcbiBcbiYjNDM7c3RhdGljIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGtmdW5jX2NhbGxfbG9jayBTRUMoXCYjMzQ7LmRhdGEuQVwmIzM0Oyk7XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7P3RjXCYjMzQ7KVxuJiM0MztpbnQga2Z1bmNfY2FsbF90ZXN0X3NwaW5fbG9ja191bnNhZmUoc3RydWN0IF9fc2tfYnVmZiAqc2tiKVxuJiM0Mzt7XG4mIzQzO1x0YnBmX3NwaW5fbG9jayhcdTAwMjZrZnVuY19jYWxsX2xvY2spO1xuJiM0MztcdGJwZl9rZnVuY190cmlnZ2VyX2N0eF9jaGVjaygpO1xuJiM0MztcdGJwZl9zcGluX3VubG9jayhcdTAwMjZrZnVuY19jYWxsX2xvY2spO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiBzdHJ1Y3Qgc3lzY2FsbF90ZXN0X2FyZ3Mge1xuIFx0X191OCBkYXRhWzE2XTtcbiBcdHNpemVfdCBzaXplO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19jYWxsX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19jYWxsX3Rlc3QuY1xuaW5kZXggNWVkYzUxNTY0ZjcxMS4uOGU2NTYwYzMxZTc4MSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19jYWxsX3Rlc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfdGVzdC5jXG5AQCAtNSw2ICYjNDM7NSwxOCBAQFxuICNpbmNsdWRlIFwmIzM0O2JwZl9taXNjLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcJiMzNDtcbiBcbiYjNDM7c3RhdGljIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGtmdW5jX2NhbGxfbG9jayBTRUMoXCYjMzQ7LmRhdGEuQVwmIzM0Oyk7XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7dGNcJiMzNDspXG4mIzQzO2ludCBrZnVuY19jYWxsX3Rlc3Rfc3Bpbl9sb2NrX3NhZmUoc3RydWN0IF9fc2tfYnVmZiAqc2tiKVxuJiM0Mzt7XG4mIzQzO1x0YnBmX3NwaW5fbG9jayhcdTAwMjZrZnVuY19jYWxsX2xvY2spO1xuJiM0MztcdGJwZl90ZXN0bW9kX3Rlc3RfbW9kX2tmdW5jKDQyKTtcbiYjNDM7XHRicGZfc3Bpbl91bmxvY2soXHUwMDI2a2Z1bmNfY2FsbF9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gU0VDKFwmIzM0O3RjXCYjMzQ7KVxuIGludCBrZnVuY19jYWxsX3Rlc3Q1KHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcbiB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcbmluZGV4IGViMGY5YjVlMThkODUuLjA1ODU3OTQ2MDZlZDggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXG5AQCAtMTM4NCw3ICYjNDM7MTM4NCw3IEBAIF9fYnBmX2tmdW5jIHZvaWQgYnBmX2tmdW5jX3RyaWdnZXJfY3R4X2NoZWNrKHZvaWQpXG4gfVxuIFxuIEJURl9LRlVOQ1NfU1RBUlQoYnBmX3Rlc3Rtb2RfY2hlY2tfa2Z1bmNfaWRzKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGVzdG1vZF90ZXN0X21vZF9rZnVuYylcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90ZXN0bW9kX3Rlc3RfbW9kX2tmdW5jLCBLRl9TUElOTE9DS19TQUZFKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfa2Z1bmNfY2FsbF90ZXN0MSlcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX2NhbGxfdGVzdDIpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9rZnVuY19jYWxsX3Rlc3QzKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjMxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9jaGVjayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHVzZSBhIEJURiBmbGFnIChLRl9TUElOTE9DS19TQUZFKSB0byBkZXRlcm1pbmUgaWYgYSBrZnVuYyBjYW4gYmUgY2FsbGVkIHdoaWxlIGhvbGRpbmcgYSBCUEYgc3BpbmxvY2ssIHJlcGxhY2luZyBhIGhhcmRjb2RlZCBsaXN0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHZlcmlmaWVyJiMzOTtzIHNhZmV0eSBjaGVja3MgYW5kIGFsbG93cyBleHRlcm5hbCBtb2R1bGVzIHRvIG1hcmsgdGhlaXIga2Z1bmNzIGFzIHNwaW5sb2NrLXNhZmUuIEl0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwYmQzNTIyODc5ZjZiOGY5MjZlMzM1NjRjYTczY2E4Y2NkYWU2Mzg2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgNSAxODozMTozOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnRmLmggYi9pbmNsdWRlL2xpbnV4L2J0Zi5oCmluZGV4IGMwOWI3OTk0ZGU0ZWIuLjNmNTI1NWQwOTVhMjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvYnRmLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9idGYuaApAQCAtNzksNiAmIzQzOzc5LDcgQEAKICNkZWZpbmUgS0ZfQVJFTkFfQVJHMSAgICgxICZsdDsmbHQ7IDE0KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBmaXJzdCBhcmd1bWVudCAqLwogI2RlZmluZSBLRl9BUkVOQV9BUkcyICAgKDEgJmx0OyZsdDsgMTUpIC8qIGtmdW5jIHRha2VzIGFuIGFyZW5hIHBvaW50ZXIgYXMgaXRzIHNlY29uZCBhcmd1bWVudCAqLwogI2RlZmluZSBLRl9JTVBMSUNJVF9BUkdTICgxICZsdDsmbHQ7IDE2KSAvKiBrZnVuYyBoYXMgaW1wbGljaXQgYXJndW1lbnRzIHN1cHBsaWVkIGJ5IHRoZSB2ZXJpZmllciAqLwomIzQzOyNkZWZpbmUgS0ZfU1BJTkxPQ0tfU0FGRSAoMSAmbHQ7Jmx0OyAxNykgLyoga2Z1bmMgaXMgYWxsb3dlZCBpbnNpZGUgYnBmX3NwaW5fbG9jay1lZCByZWdpb24gKi8KIAogLyoKICAqIFRhZyBtYXJraW5nIGEga2VybmVsIGZ1bmN0aW9uIGFzIGEga2Z1bmMuIFRoaXMgaXMgbWVhbnQgdG8gbWluaW1pemUgdGhlCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2FyZW5hLmMgYi9rZXJuZWwvYnBmL2FyZW5hLmMKaW5kZXggNTU1ZWUyNTMxZWY5OC4uN2I2ODQ3MjAwYjQzMSAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi9hcmVuYS5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvYXJlbmEuYwpAQCAtMTExOCw5ICYjNDM7MTExOCw5IEBAIF9fYnBmX2tmdW5jIGludCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyh2b2lkICpwX19tYXAsIHZvaWQgKnB0cl9faWduLCB1MzIgcGFnZV9jCiBfX2JwZl9rZnVuY19lbmRfZGVmcygpOwogCiBCVEZfS0ZVTkNTX1NUQVJUKGFyZW5hX2tmdW5jcykKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfYXJlbmFfYWxsb2NfcGFnZXMsIEtGX0FSRU5BX1JFVCB8IEtGX0FSRU5BX0FSRzIpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2FyZW5hX2ZyZWVfcGFnZXMsIEtGX0FSRU5BX0FSRzIpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMsIEtGX0FSRU5BX0FSRzIpCiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9hbGxvY19wYWdlcywgS0ZfQVJFTkFfUkVUIHwgS0ZfQVJFTkFfQVJHMiB8IEtGX1NQSU5MT0NLX1NBRkUpCiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9mcmVlX3BhZ2VzLCBLRl9BUkVOQV9BUkcyIHwgS0ZfU1BJTkxPQ0tfU0FGRSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMsIEtGX0FSRU5BX0FSRzIgfCBLRl9TUElOTE9DS19TQUZFKQogQlRGX0tGVU5DU19FTkQoYXJlbmFfa2Z1bmNzKQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGJ0Zl9rZnVuY19pZF9zZXQgY29tbW9uX2tmdW5jX3NldCA9IHsKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvaGVscGVycy5jIGIva2VybmVsL2JwZi9oZWxwZXJzLmMKaW5kZXggNDcwOWE1YWQwNDc0Ny4uNjM4OGI2YjIzZTQ5MCAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi9oZWxwZXJzLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9oZWxwZXJzLmMKQEAgLTQ4MTIsMzAgJiM0Mzs0ODEyLDMyIEBAIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfb2JqX2Ryb3AsIEtGX1JFTEVBU0UgfCBLRl9JTVBMSUNJVF9BUkdTKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9vYmpfZHJvcF9pbXBsLCBLRl9SRUxFQVNFKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX2Ryb3AsIEtGX1JFTEVBU0UgfCBLRl9JTVBMSUNJVF9BUkdTKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX2Ryb3BfaW1wbCwgS0ZfUkVMRUFTRSkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZSwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVIHwgS0ZfSU1QTElDSVRfQVJHUykKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udCwgS0ZfSU1QTElDSVRfQVJHUykKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250X2ltcGwpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9iYWNrLCBLRl9JTVBMSUNJVF9BUkdTKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfYmFja19pbXBsKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2FkZCwgS0ZfSU1QTElDSVRfQVJHUykKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wb3BfZnJvbnQsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wb3BfYmFjaywgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2RlbCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2Zyb250LCBLRl9SRVRfTlVMTCkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9iYWNrLCBLRl9SRVRfTlVMTCkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9pc19maXJzdCkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9pc19sYXN0KQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2VtcHR5KQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZSwKJiM0MzsJICAgICBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UgfCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbCwKJiM0MzsJICAgICBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UgfCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250LCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udF9pbXBsLCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2JhY2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2JhY2tfaW1wbCwgS0ZfU1BJTkxPQ0tfU0FGRSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfYWRkLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcG9wX2Zyb250LCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wb3BfYmFjaywgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfZGVsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9mcm9udCwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9iYWNrLCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpCiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2lzX2ZpcnN0LCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9pc19sYXN0LCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9lbXB0eSwgS0ZfU1BJTkxPQ0tfU0FGRSkKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza19hY3F1aXJlLCBLRl9BQ1FVSVJFIHwgS0ZfUkNVIHwgS0ZfUkVUX05VTEwpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rhc2tfcmVsZWFzZSwgS0ZfUkVMRUFTRSkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX3JlbW92ZSwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfYWRkLCBLRl9JTVBMSUNJVF9BUkdTKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfYWRkX2ltcGwpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9maXJzdCwgS0ZfUkVUX05VTEwpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9yb290LCBLRl9SRVRfTlVMTCkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2xlZnQsIEtGX1JFVF9OVUxMKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfcmlnaHQsIEtGX1JFVF9OVUxMKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX3JlbW92ZSwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9hZGQsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2FkZF9pbXBsLCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2ZpcnN0LCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpCiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfcm9vdCwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2xlZnQsIEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9yaWdodCwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKQogCiAjaWZkZWYgQ09ORklHX0NHUk9VUFMKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfY2dyb3VwX2FjcXVpcmUsIEtGX0FDUVVJUkUgfCBLRl9SQ1UgfCBLRl9SRVRfTlVMTCkKQEAgLTQ4ODUsOSAmIzQzOzQ4ODcsOSBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JjdV9yZWFkX2xvY2spCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JjdV9yZWFkX3VubG9jaykKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfZHlucHRyX3NsaWNlLCBLRl9SRVRfTlVMTCkKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfZHlucHRyX3NsaWNlX3Jkd3IsIEtGX1JFVF9OVUxMKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX251bV9uZXcsIEtGX0lURVJfTkVXKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX251bV9uZXh0LCBLRl9JVEVSX05FWFQgfCBLRl9SRVRfTlVMTCkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9udW1fZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9udW1fbmV3LCBLRl9JVEVSX05FVyB8IEtGX1NQSU5MT0NLX1NBRkUpCiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX251bV9uZXh0LCBLRl9JVEVSX05FWFQgfCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpCiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX251bV9kZXN0cm95LCBLRl9JVEVSX0RFU1RST1kgfCBLRl9TUElOTE9DS19TQUZFKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX3Rhc2tfdm1hX25ldywgS0ZfSVRFUl9ORVcgfCBLRl9SQ1UpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfdGFza192bWFfbmV4dCwgS0ZfSVRFUl9ORVhUIHwgS0ZfUkVUX05VTEwpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfdGFza192bWFfZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZKQpAQCAtNDk2Miw4ICYjNDM7NDk2NCw4IEBAIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNhc2VzdHIpOwogI2lmIGRlZmluZWQoQ09ORklHX0JQRl9MU00pICZhbXA7JmFtcDsgZGVmaW5lZChDT05GSUdfQ0dST1VQUykKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfY2dyb3VwX3JlYWRfeGF0dHIsIEtGX1JDVSkKICNlbmRpZgotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fdnByaW50aywgS0ZfSU1QTElDSVRfQVJHUykKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrLCBLRl9JTVBMSUNJVF9BUkdTKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ZwcmludGssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSkKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbCwgS0ZfSU1QTElDSVRfQVJHUykKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSwgS0ZfSU1QTElDSVRfQVJHUykKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfZHlucHRyX2Zyb21fZmlsZSkKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvcnFzcGlubG9jay5jIGIva2VybmVsL2JwZi9ycXNwaW5sb2NrLmMKaW5kZXggZTRlMzM4Y2RiNDM3Yy4uZTUyN2NiNDI1Y2Y0NSAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi9ycXNwaW5sb2NrLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9ycXNwaW5sb2NrLmMKQEAgLTc0NCwxMCAmIzQzOzc0NCwxMCBAQCBfX2JwZl9rZnVuYyB2b2lkIGJwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShzdHJ1Y3QgYnBmX3Jlc19zcGluX2xvY2sgKmxvY2ssCiBfX2JwZl9rZnVuY19lbmRfZGVmcygpOwogCiBCVEZfS0ZVTkNTX1NUQVJUKHJxc3BpbmxvY2tfa2Z1bmNfaWRzKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZXNfc3Bpbl9sb2NrLCBLRl9SRVRfTlVMTCkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVzX3NwaW5fdW5sb2NrKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZXNfc3Bpbl9sb2NrX2lycXNhdmUsIEtGX1JFVF9OVUxMKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX2xvY2ssIEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX3VubG9jaywgS0ZfU1BJTkxPQ0tfU0FGRSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZSwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmUsIEtGX1NQSU5MT0NLX1NBRkUpCiBCVEZfS0ZVTkNTX0VORChycXNwaW5sb2NrX2tmdW5jX2lkcykKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBidGZfa2Z1bmNfaWRfc2V0IHJxc3BpbmxvY2tfa2Z1bmNfc2V0ID0gewpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jCmluZGV4IGIyNzQwMDRmY2NmZDkuLjdjMWVkY2FlMjkzYTggMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTExNzk3LDIwICYjNDM7MTE3OTcsNiBAQCBzdGF0aWMgYm9vbCBpc19icGZfcmJ0cmVlX2FwaV9rZnVuYyh1MzIgYnRmX2lkKQogCSAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfcmlnaHRdOwogfQogCi1zdGF0aWMgYm9vbCBpc19icGZfaXRlcl9udW1fYXBpX2tmdW5jKHUzMiBidGZfaWQpCi17Ci0JcmV0dXJuIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25ld10gfHwKLQkgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfaXRlcl9udW1fbmV4dF0gfHwKLQkgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfaXRlcl9udW1fZGVzdHJveV07Ci19Ci0KLXN0YXRpYyBib29sIGlzX2JwZl9ncmFwaF9hcGlfa2Z1bmModTMyIGJ0Zl9pZCkKLXsKLQlyZXR1cm4gaXNfYnBmX2xpc3RfYXBpX2tmdW5jKGJ0Zl9pZCkgfHwKLQkgICAgICAgaXNfYnBmX3JidHJlZV9hcGlfa2Z1bmMoYnRmX2lkKSB8fAotCSAgICAgICBpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyhidGZfaWQpOwotfQotCiBzdGF0aWMgYm9vbCBpc19icGZfcmVzX3NwaW5fbG9ja19rZnVuYyh1MzIgYnRmX2lkKQogewogCXJldHVybiBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrXSB8fApAQCAtMTE4MTksMjQgJiM0MzsxMTgwNSwxNiBAQCBzdGF0aWMgYm9vbCBpc19icGZfcmVzX3NwaW5fbG9ja19rZnVuYyh1MzIgYnRmX2lkKQogCSAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZV07CiB9CiAKLXN0YXRpYyBib29sIGlzX2JwZl9hcmVuYV9rZnVuYyh1MzIgYnRmX2lkKQomIzQzO3N0YXRpYyBib29sIGtmdW5jX3NwaW5fYWxsb3dlZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzMzIgZnVuY19pZCwgczE2IG9mZnNldCkKIHsKLQlyZXR1cm4gYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfYXJlbmFfYWxsb2NfcGFnZXNdIHx8Ci0JICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX2ZyZWVfcGFnZXNdIHx8Ci0JICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXNdOwotfQomIzQzOwlzdHJ1Y3QgYnBmX2tmdW5jX21ldGEga2Z1bmM7CiYjNDM7CWludCBlcnI7CiAKLXN0YXRpYyBib29sIGlzX2JwZl9zdHJlYW1fa2Z1bmModTMyIGJ0Zl9pZCkKLXsKLQlyZXR1cm4gYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc3RyZWFtX3ZwcmludGtdIHx8Ci0JICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3N0cmVhbV9wcmludF9zdGFja107Ci19CiYjNDM7CWVyciA9IGZldGNoX2tmdW5jX21ldGEoZW52LCBmdW5jX2lkLCBvZmZzZXQsICZhbXA7a2Z1bmMpOwomIzQzOwlpZiAoZXJyIHx8ICFrZnVuYy5mbGFncykKJiM0MzsJCXJldHVybiBmYWxzZTsKIAotc3RhdGljIGJvb2wga2Z1bmNfc3Bpbl9hbGxvd2VkKHUzMiBidGZfaWQpCi17Ci0JcmV0dXJuIGlzX2JwZl9ncmFwaF9hcGlfa2Z1bmMoYnRmX2lkKSB8fCBpc19icGZfaXRlcl9udW1fYXBpX2tmdW5jKGJ0Zl9pZCkgfHwKLQkgICAgICAgaXNfYnBmX3Jlc19zcGluX2xvY2tfa2Z1bmMoYnRmX2lkKSB8fCBpc19icGZfYXJlbmFfa2Z1bmMoYnRmX2lkKSB8fAotCSAgICAgICBpc19icGZfc3RyZWFtX2tmdW5jKGJ0Zl9pZCk7CiYjNDM7CXJldHVybiAqa2Z1bmMuZmxhZ3MgJmFtcDsgS0ZfU1BJTkxPQ0tfU0FGRTsKIH0KIAogc3RhdGljIGJvb2wgaXNfc3luY19jYWxsYmFja19jYWxsaW5nX2tmdW5jKHUzMiBidGZfaWQpCkBAIC0xNzQxNSw3ICYjNDM7MTczOTMsNyBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX2luc24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgYm9vbCAqZG9fcHJpbnRfc3RhdGUpCiAJCQkJICAgICBpbnNuLSZndDtpbW0gIT0gQlBGX0ZVTkNfc3Bpbl91bmxvY2sgJmFtcDsmYW1wOwogCQkJCSAgICAgaW5zbi0mZ3Q7aW1tICE9IEJQRl9GVU5DX2twdHJfeGNoZykgfHwKIAkJCQkgICAgKGluc24tJmd0O3NyY19yZWcgPT0gQlBGX1BTRVVET19LRlVOQ19DQUxMICZhbXA7JmFtcDsKLQkJCQkgICAgIChpbnNuLSZndDtvZmYgIT0gMCB8fCAha2Z1bmNfc3Bpbl9hbGxvd2VkKGluc24tJmd0O2ltbSkpKSkgewomIzQzOwkJCQkgICAgICFrZnVuY19zcGluX2FsbG93ZWQoZW52LCBpbnNuLSZndDtpbW0sIGluc24tJmd0O29mZikpKSB7CiAJCQkJCXZlcmJvc2UoZW52LAogCQkJCQkJJiMzNDtmdW5jdGlvbiBjYWxscyBhcmUgbm90IGFsbG93ZWQgd2hpbGUgaG9sZGluZyBhIGxvY2tcbiYjMzQ7KTsKIAkJCQkJcmV0dXJuIC1FSU5WQUw7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19jYWxsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19jYWxsLmMKaW5kZXggN2FmNTU2MGYyYTA4Yy4uMmIzOWNjMWIwOWY5YSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2Z1bmNfY2FsbC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2NhbGwuYwpAQCAtNzEsOCAmIzQzOzcxLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qga2Z1bmNfdGVzdF9wYXJhbXMga2Z1bmNfdGVzdHNbXSA9IHsKIAlUQ19GQUlMKGtmdW5jX2NhbGxfdGVzdF9nZXRfbWVtX2ZhaWxfbm90X2NvbnN0LCAwLCAmIzM0O2lzIG5vdCBhIGNvbnN0JiMzNDspLAogCVRDX0ZBSUwoa2Z1bmNfY2FsbF90ZXN0X21lbV9hY3F1aXJlX2ZhaWwsIDAsICYjMzQ7YWNxdWlyZSBrZXJuZWwgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIFBUUl9UT19CVEZfSUQmIzM0OyksCiAJVENfRkFJTChrZnVuY19jYWxsX3Rlc3RfcG9pbnRlcl9hcmdfdHlwZV9taXNtYXRjaCwgMCwgJiMzNDtSMSBleHBlY3RlZCBwb2ludGVyIHRvIGN0eCwgYnV0IGdvdCBzY2FsYXImIzM0OyksCiYjNDM7CVRDX0ZBSUwoa2Z1bmNfY2FsbF90ZXN0X3NwaW5fbG9ja191bnNhZmUsIDAsICYjMzQ7ZnVuY3Rpb24gY2FsbHMgYXJlIG5vdCBhbGxvd2VkIHdoaWxlIGhvbGRpbmcgYSBsb2NrJiMzNDspLAogCiAJLyogc3VjY2VzcyBjYXNlcyAqLwomIzQzOwlUQ19URVNUKGtmdW5jX2NhbGxfdGVzdF9zcGluX2xvY2tfc2FmZSwgMCksCiAJVENfVEVTVChrZnVuY19jYWxsX3Rlc3QxLCAxMiksCiAJVENfVEVTVChrZnVuY19jYWxsX3Rlc3QyLCAzKSwKIAlUQ19URVNUKGtmdW5jX2NhbGxfdGVzdDQsIC0xMjM0KSwKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19jYWxsX2ZhaWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19jYWxsX2ZhaWwuYwppbmRleCA2NGI2YTBiMGFiMWNjLi43ZTkzZjdmYjEzMjk5IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfY2FsbF9mYWlsLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfZmFpbC5jCkBAIC00LDYgJiM0Mzs0LDE4IEBACiAjaW5jbHVkZSAmbHQ7YnBmL2JwZl9oZWxwZXJzLmgmZ3Q7CiAjaW5jbHVkZSAmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaCYjMzQ7CiAKJiM0MztzdGF0aWMgc3RydWN0IGJwZl9zcGluX2xvY2sga2Z1bmNfY2FsbF9sb2NrIFNFQygmIzM0Oy5kYXRhLkEmIzM0Oyk7CiYjNDM7CiYjNDM7U0VDKCYjMzQ7P3RjJiMzNDspCiYjNDM7aW50IGtmdW5jX2NhbGxfdGVzdF9zcGluX2xvY2tfdW5zYWZlKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYikKJiM0Mzt7CiYjNDM7CWJwZl9zcGluX2xvY2soJmFtcDtrZnVuY19jYWxsX2xvY2spOwomIzQzOwlicGZfa2Z1bmNfdHJpZ2dlcl9jdHhfY2hlY2soKTsKJiM0MzsJYnBmX3NwaW5fdW5sb2NrKCZhbXA7a2Z1bmNfY2FsbF9sb2NrKTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogc3RydWN0IHN5c2NhbGxfdGVzdF9hcmdzIHsKIAlfX3U4IGRhdGFbMTZdOwogCXNpemVfdCBzaXplOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfdGVzdC5jCmluZGV4IDVlZGM1MTU2NGY3MTEuLjhlNjU2MGMzMWU3ODEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19jYWxsX3Rlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfY2FsbF90ZXN0LmMKQEAgLTUsNiAmIzQzOzUsMTggQEAKICNpbmNsdWRlICYjMzQ7YnBmX21pc2MuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaCYjMzQ7CiAKJiM0MztzdGF0aWMgc3RydWN0IGJwZl9zcGluX2xvY2sga2Z1bmNfY2FsbF9sb2NrIFNFQygmIzM0Oy5kYXRhLkEmIzM0Oyk7CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dGMmIzM0OykKJiM0MztpbnQga2Z1bmNfY2FsbF90ZXN0X3NwaW5fbG9ja19zYWZlKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYikKJiM0Mzt7CiYjNDM7CWJwZl9zcGluX2xvY2soJmFtcDtrZnVuY19jYWxsX2xvY2spOwomIzQzOwlicGZfdGVzdG1vZF90ZXN0X21vZF9rZnVuYyg0Mik7CiYjNDM7CWJwZl9zcGluX3VubG9jaygmYW1wO2tmdW5jX2NhbGxfbG9jayk7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIFNFQygmIzM0O3RjJiMzNDspCiBpbnQga2Z1bmNfY2FsbF90ZXN0NShzdHJ1Y3QgX19za19idWZmICpza2IpCiB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYwppbmRleCBlYjBmOWI1ZTE4ZDg1Li4wNTg1Nzk0NjA2ZWQ4IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMKQEAgLTEzODQsNyAmIzQzOzEzODQsNyBAQCBfX2JwZl9rZnVuYyB2b2lkIGJwZl9rZnVuY190cmlnZ2VyX2N0eF9jaGVjayh2b2lkKQogfQogCiBCVEZfS0ZVTkNTX1NUQVJUKGJwZl90ZXN0bW9kX2NoZWNrX2tmdW5jX2lkcykKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGVzdG1vZF90ZXN0X21vZF9rZnVuYykKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rlc3Rtb2RfdGVzdF9tb2Rfa2Z1bmMsIEtGX1NQSU5MT0NLX1NBRkUpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX2NhbGxfdGVzdDEpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX2NhbGxfdGVzdDIpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX2NhbGxfdGVzdDMpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4MjMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA2ODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgVmVyaWZpZXIgQ2hhbmdlIGZvciBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGBLRl9TUElOTE9DS19TQUZFYCBmbGFnIGZvciBCUEYga2Z1bmNzLCBhIG5ldyBmZWF0dXJlIHRoYXQmIzM5O3MgcHJldHR5IGludGVyZXN0aW5nLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGxpZXMgaW4gdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5IHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAqaXMgdGhpcyB3b3J0aCBmdXp6aW5nPyogQWJzb2x1dGVseSwgYW55IG1vZGlmaWNhdGlvbiB0byB0aGUgdmVyaWZpZXIsIHBhcnRpY3VsYXJseSBvbmUgdGhhdCBhbHRlcnMgdGhlIGFsbG93ZWQgb3BlcmF0aW9ucyB3aXRoaW4gYSBjcml0aWNhbCBzZWN0aW9uIGxpa2UgYSBzcGlubG9jaywgZGVtYW5kcyBzY3J1dGlueS4KClRoZSBmdW5kYW1lbnRhbCBzaGlmdCBpcyBob3cgdGhlIHZlcmlmaWVyIG5vdyBkZXRlcm1pbmVzIHdoZXRoZXIgYSBrZnVuYyBjYW4gYmUgdXNlZCBpbnNpZGUgYSBzcGlubG9jay4gSW5zdGVhZCBvZiB0aGF0IGhhcmRjb2RlZCBsaXN0IG9mIGBpc19icGZfKl9rZnVuY2AgY2hlY2tzLCBpdCBub3cgdXNlcyB0aGlzIGBLRl9TUElOTE9DS19TQUZFYCBmbGFnIHByZXNlbnQgaW4gdGhlIEJURiBkYXRhIGZvciBlYWNoIGtmdW5jLiBUaGF0JiMzOTtzIGEgc2lnbmlmaWNhbnQgcmVmYWN0b3JpbmcgdGhhdCBjb3VsZCBpbnRyb2R1Y2Ugc3VidGxlIGJlaGF2aW9yYWwgY2hhbmdlcywgb3IgZXZlbiBhbGxvdyBwcml2aWxlZ2VkIGNvZGUgdG8gYWNjZXNzIGZlYXR1cmVzIGJ5IG1pc3VzaW5nIHRoaXMgbmV3IGZsYWcuIEl0IGFsc28gbWVhbnMgdGhhdCBleHRlcm5hbCBtb2R1bGVzIG5vdyBoYXZlIHRoZSBhYmlsaXR5IHRvIGV4cGxpY2l0bHkgbWFyayB0aGVpciBrZnVuY3MgYXMgJiMzNDtzcGlubG9jayBzYWZlLCYjMzQ7IHdoaWNoIHdpZGVucyB0aGUgYXR0YWNrIHN1cmZhY2UuIFRoaXMgaXMgYSBwb3RlbnRpYWwgbmV3IGZlYXR1cmUvcmVmYWN0b3JpbmcgdGhhdCBkZXNlcnZlcyBmdXp6aW5nLgoKTXkgcHJpbWFyeSBmb2N1cyBzaGlmdHMgdG8gYGtmdW5jX3NwaW5fYWxsb3dlZGAsIHRoZSBmdW5jdGlvbiBiZWluZyBtb2RpZmllZCwgYW5kIGl0cyBjYWxsIGNoYWluLiBJdCYjMzk7cyBzdGF0aWMsIHdoaWNoIGlzIHR5cGljYWwgZm9yIHRoZSB2ZXJpZmllciwgYnV0IGl0JiMzOTtzIGNhbGxlZCBieSBgZG9fY2hlY2tfaW5zbmAsIHdoaWNoIGlzIGFsc28gc3RhdGljLiBGb2xsb3dpbmcgdGhlIGNhbGwgZ3JhcGgsIGBkb19jaGVja19pbnNuYCBpcyBjYWxsZWQgYnkgYGRvX2NoZWNrYCwgd2hpY2ggaXMgdGhlIGltbWVkaWF0ZSBuZXh0IGZ1bmN0aW9uIHRoYXQgbmVlZHMgY2hlY2tpbmcuIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgZW50cnkgcG9pbnQgZm9yIHRoZSBmdXp6aW5nIGFuYWx5c2lzLiBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgYGZldGNoX2tmdW5jX21ldGFgIGFzIHdlbGwsIHNpbmNlIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGtmdW5jIG1ldGFkYXRhIGluY2x1ZGluZyB0aGUgZmxhZyBpcyByZXRyaWV2ZWQuIFRoZSBCUEYgdmVyaWZpZXIgaXMgYWxyZWFkeSBoZWF2aWx5IGZ1enplZCBieSBzeXprYWxsZXIsIHdoaWNoIGlzIGEgZ29vZCB0aGluZywgYnV0IEkgd2FudCB0byBtYWtlIHN1cmUgdGhpcyBzcGVjaWZpYyBjaGFuZ2UgaXMgY292ZXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxODozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmZXRjaF9rZnVuY19tZXRhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz0yNjM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKmZpbmRfa2Z1bmNfaW1wbF9wcm90byhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yNjYwLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjI2NjE6c3RhdGljIGludCBmZXRjaF9rZnVuY19tZXRhKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjY2Mi1cdFx0XHQgICAgczMyIGZ1bmNfaWQsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTI3Mjc9aW50IGJwZl9hZGRfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCB1MzIgZnVuY19pZCwgdTE2IG9mZnNldClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjc5NC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyNzk1Olx0ZXJyID0gZmV0Y2hfa2Z1bmNfbWV0YShlbnYsIGZ1bmNfaWQsIG9mZnNldCwgXHUwMDI2a2Z1bmMpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTI3OTYtXHRpZiAoZXJyKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTgwOD1zdGF0aWMgYm9vbCBrZnVuY19zcGluX2FsbG93ZWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgczMyIGZ1bmNfaWQsIHMxNiBvZmZzZXQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExODEyLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExODEzOlx0ZXJyID0gZmV0Y2hfa2Z1bmNfbWV0YShlbnYsIGZ1bmNfaWQsIG9mZnNldCwgXHUwMDI2a2Z1bmMpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExODE0LVx0aWYgKGVyciB8fCAha2Z1bmMuZmxhZ3MpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyNjE1PWludCBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGEoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI2MjQtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI2MjU6XHRlcnIgPSBmZXRjaF9rZnVuY19tZXRhKGVudiwgZnVuY19pZCwgb2Zmc2V0LCBcdTAwMjZrZnVuYyk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI2MjYtXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0NjIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEaXZpbmcgaW50byBCUEYgVmVyaWZpY2F0aW9uKioKCk9rYXksIHNvIGBrZnVuY19zcGluX2FsbG93ZWRgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBkb19jaGVja19pbnNuYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlbiYjMzk7dCBzdGF0aWM7IHRob3NlIGFyZSB0aGUgb25lcyB3ZSBuZWVkIHRvIGFuYWx5emUgbW9yZSBjbG9zZWx5LiBUaGF0IHVzdWFsbHkgcG9pbnRzIHRvIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkuIEkga25vdyBgYnBmX2NoZWNrYCBpcyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgdGhlIHZlcmlmaWVyLCBzbyBJJiMzOTtsbCBzdGFydCB3aXRoIHRoYXQuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBleGFtaW5lIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIGFuZCBzZWUgd2hpY2ggZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBvciwgaWYgbm90IGV4cG9ydGVkLCBhcmUgKm5vbi1zdGF0aWMqLCB3aGljaCB3b3VsZCBpbmRpY2F0ZSB0aGVpciBsaWtlbHkgaW1wb3J0YW5jZSBpbiB0aGlzIGNvbnRleHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcmFjdGlvbiBhbmQgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxODozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteaW50IGJwZl9jaGVja1xcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjAwMjA9c3RhdGljIGludCBicGZfcHJvZ192ZXJpZnlfc2lnbmF0dXJlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMTM2LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwMTM3OmludCBicGZfY2hlY2soc3RydWN0IGJwZl9wcm9nICoqcHJvZywgdW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMTM4LVx0ICAgICAgc3RydWN0IGJwZl9sb2dfYXR0ciAqYXR0cl9sb2cpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTg6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTg2MwoJCQkJCQkJb3V0cHV0OiA1OQoJCQkJCQkJdGhvdWdodHM6IDIyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJQRiBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIHNlZW1zIGZvY3VzZWQuIEkgbGlrZSB0aGF0IHRoZXkmIzM5O3JlIHplcm9pbmcgaW4gb24gYGJwZl9jaGVja2A7IHRoYXQgc2VlbXMgbGlrZSB0aGUgcmlnaHQgYXJlYSB0byBzdGFydC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhlIGltcGFjdCBvbiBgZG9fY2hlY2tgIGFzIHdlbGwsIHNpbmNlIHRoYXQgb25lIGlzIHN0YXRpYyBhbmQgbWlnaHQgYmUgZGlyZWN0bHkgcmVsYXRlZC4gSSBzaG91bGQgYWxzbyBtYWtlIHN1cmUgbm8gb3RoZXIgZnVuY3Rpb25zIGFyZSBpbmRpcmVjdGx5IGFmZmVjdGVkLgoKTG9va2luZyBkZWVwZXIsIHRoZSBwYXRjaCBtZW50aW9ucyBtb2RpZmljYXRpb25zIHRvIGZ1bmN0aW9ucyBsaWtlIGBicGZfYXJlbmFfYWxsb2NfcGFnZXNgLCBgYnBmX2FyZW5hX2ZyZWVfcGFnZXNgLCBhbmQgc28gb24sIGJ1dCBpdCBvbmx5IGNoYW5nZXMgdGhlaXIgQlRGIGZsYWdzLCBub3QgdGhlIGNvcmUgbG9naWMuIFRoZSBtZWF0IG9mIHRoZSBjaGFuZ2UgYXBwZWFycyB0byBiZSB3aXRoaW4gYGtmdW5jX3NwaW5fYWxsb3dlZGAsIHdoaWNoIGlzIGFsc28gc3RhdGljLiBUaGlzIHJlaW5mb3JjZXMgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IHRoYXQgaW52ZXN0aWdhdGluZyBgYnBmX2NoZWNrYCBpcyB0aGUgbW9zdCBkaXJlY3QgcGF0aC4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEkga25vdyBCUEYgaXMgZW5hYmxlZCB2aWEgYENPTkZJR19CUEZfU1lTQ0FMTGAsIGJ1dCBJIG5lZWQgdG8gZW5zdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGNydWNpYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGF0IHBsYXkgaGVyZS4gVGhpcyBtZWFucyBJJiMzOTtsbCBiZSBsb29raW5nIGF0IHRoZSByZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgc3BlY2lmaWNhbGx5IG9uZXMgdXNlZCBieSB0aGUgbW9kaWZpZWQgZmlsZXMuCgpUaGUgcGF0Y2ggdG91Y2hlcyBmaWxlcyBpbiBga2VybmVsL2JwZi9hcmVuYS5jYCwgYGtlcm5lbC9icGYvaGVscGVycy5jYCwgYGtlcm5lbC9icGYvcnFzcGlubG9jay5jYCwgYW5kIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBUbyB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcywgSSYjMzk7bGwgZXhhbWluZSB0aGUgYGtlcm5lbC9icGYvTWFrZWZpbGVgLiBUaGlzIHNob3VsZCBsaXN0IHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBjb250cm9sIHRoZSBjb21waWxhdGlvbiBvZiB0aG9zZSBmaWxlcywgcHJvdmlkaW5nIGEgY29tcHJlaGVuc2l2ZSB2aWV3IG9mIGFueSBwcmVyZXF1aXNpdGVzIGZvciB0aGVzZSBjaGFuZ2VzIHRvIHRha2UgZWZmZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FyZW5hXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZT0xOT1pZmVxICgkKENPTkZJR19NTVUpJChDT05GSUdfNjRCSVQpLHl5KVxua2VybmVsL2JwZi9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBhcmVuYS5vIHJhbmdlX3RyZWUub1xua2VybmVsL2JwZi9NYWtlZmlsZS0yMS1lbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Jxc3BpbmxvY2tcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlPTE3PW9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gdHJhbXBvbGluZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJ0Zi5vIG1lbWFsbG9jLm8gcnFzcGlubG9jay5vIHN0cmVhbS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTE5LWlmZXEgKCQoQ09ORklHX01NVSkkKENPTkZJR182NEJJVCkseXkpXG4tLVxua2VybmVsL2JwZi9NYWtlZmlsZT03NT1DRkxBR1NfUkVNT1ZFX3JpbmdidWYubyA9ICQoQ0NfRkxBR1NfRlRSQUNFKVxua2VybmVsL2JwZi9NYWtlZmlsZTo3NjpDRkxBR1NfUkVNT1ZFX3Jxc3BpbmxvY2subyA9ICQoQ0NfRkxBR1NfRlRSQUNFKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxODozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDczMQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipBbmFseXppbmcgdGhlIEJQRiBTeXN0ZW0gQ2FsbCBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIG15IGZvY3VzIGlzIHplcm9pbmcgaW4gb24gdGhpcyBgQ09ORklHX0JQRl9TWVNDQUxMYCBvcHRpb24uIFRoYXQmIzM5O3MgdGhlIHByaW1hcnkgZmxhZyBJIG5lZWQgdG8gdHJhY2suIEhvbGQgb24gYSBzZWNvbmQsIHRob3VnaCwgYmVjYXVzZSBgYXJlbmEub2AgaGFzIGRlcGVuZGVuY2llcyBvbiBib3RoIGBDT05GSUdfTU1VYCBhbmQgYENPTkZJR182NEJJVGAuIFRoYXQgaW1wYWN0cyBob3cgdGhpcyB3aWxsIHVsdGltYXRlbHkgcGxheSBvdXQuIEJ1dCBJIHRoaW5rIHRoZSByZWFsIG1lYXQgb2YgdGhlIG1vZGlmaWNhdGlvbiByZXNpZGVzIGluIGB2ZXJpZmllci5jYCwgYW5kIHRoYXQmIzM5O3MgY29tcGlsZWQgd2l0aCBgQ09ORklHX0JQRl9TWVNDQUxMYCwgcmlnaHQ/IE9rYXksIHNvIHRoYXQmIzM5O3MgdGhlIGtleSBmaWxlLiBJIHNob3VsZCByZWFsbHkgY2hlY2sgdGhlIGBrZXJuZWwvYnBmL01ha2VmaWxlYCB0byBjb25maXJtIHdoZXJlIGB2ZXJpZmllci5vYCBpcyBiZWluZyBidWlsdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBidWlsZCBwcm9jZXNzIGJldHRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTg6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmVyaWZpZXJcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlPTc9Q0ZMQUdTX2NvcmUubyAmIzQzOz0gLVduby1vdmVycmlkZS1pbml0ICQoY2ZsYWdzLW5vZ2NzZS15eSlcbmtlcm5lbC9icGYvTWFrZWZpbGUtOC1cbmtlcm5lbC9icGYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBzeXNjYWxsLm8gdmVyaWZpZXIubyBpbm9kZS5vIGhlbHBlcnMubyB0bnVtLm8gY251bS5vIGxvZy5vIHRva2VuLm8gbGl2ZW5lc3MubyBjb25zdF9mb2xkLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMTAtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX2l0ZXIubyBtYXBfaXRlci5vIHRhc2tfaXRlci5vIHByb2dfaXRlci5vIGxpbmtfaXRlci5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTgwCgkJCQkJCQlvdXRwdXQ6IDEyNgoJCQkJCQkJdGhvdWdodHM6IDE2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gaXQgbG9va3MgbGlrZSBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgb25seSBjb25maWcgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCBoZXJlLiBUaGlzIHBhdGNoIGlzIGNoYW5naW5nIGhvdyB0aGUgQlBGIHZlcmlmaWVyIGhhbmRsZXMgc3BpbmxvY2sgc2FmZXR5IHdpdGgga2Z1bmNzLiBJbnN0ZWFkIG9mIGEgcmlnaWQsIGhhcmRjb2RlZCBsaXN0LCBpdCYjMzk7cyBsZXZlcmFnaW5nIGEgQlRGIGZsYWcsIGBLRl9TUElOTE9DS19TQUZFYCwgd2hpY2ggaXMgYSBtdWNoIG1vcmUgZWxlZ2FudCBhbmQgZmxleGlibGUgYXBwcm9hY2guIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB2ZXJpZmllciYjMzk7cyBzYWZldHkgbG9naWM7IGl0JiMzOTtzIHNpZ25pZmljYW50IGJlY2F1c2UgaXQgbGV0cyBleHRlcm5hbCBtb2R1bGVzIG1hcmsgdGhlaXIga2Z1bmNzIGFzIHNwaW5sb2NrLXNhZmUsIG9wZW5pbmcgdXAgbmV3IHBvc3NpYmlsaXRpZXMgZm9yIEJQRiBwcm9ncmFtIGZ1bmN0aW9uYWxpdHkgYW5kIGludGVncmF0aW9uLgoKVGhlIG1haW4gcG9pbnQgb2YgZm9jdXMgaGVyZSBpcyB0aGUgYGJwZl9jaGVja2Agc3ltYm9sLCBvYnZpb3VzbHksIHNpbmNlIHRoYXQmIzM5O3MgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSB2ZXJpZmllciBpdHNlbGYuIFNvIGBicGZfY2hlY2tgIGlzIHdoZXJlIEkmIzM5O2xsIG5lZWQgdG8gc2V0IHRoZSByZXN1bHRzIGFuZCBsb29rIGZvciBwb3RlbnRpYWwgaXNzdWVzLiBUaGUgb3ZlcmFsbCBjaGFuZ2Ugc2VlbXMgc291bmQsIGJ1dCBnaXZlbiBpdHMgaW1wYWN0IG9uIHNlY3VyaXR5IGFuZCB3aGF0JiMzOTtzIGF0IHN0YWtlLCB0aGlzIGRlZmluaXRlbHkgbmVlZHMgc29tZSBzZXJpb3VzIGZ1enppbmcgdG8gbWFrZSBzdXJlIGl0JiMzOTtzIHJvYnVzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTg6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gdXNlIGEgQlRGIGZsYWcgKEtGX1NQSU5MT0NLX1NBRkUpIHRvIGRldGVybWluZSBpZiBhIGtmdW5jIGNhbiBiZSBjYWxsZWQgd2hpbGUgaG9sZGluZyBhIEJQRiBzcGlubG9jaywgcmVwbGFjaW5nIGEgaGFyZGNvZGVkIGxpc3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdmVyaWZpZXImIzM5O3Mgc2FmZXR5IGNoZWNrcyBhbmQgYWxsb3dzIGV4dGVybmFsIG1vZHVsZXMgdG8gbWFyayB0aGVpciBrZnVuY3MgYXMgc3BpbmxvY2stc2FmZS4gSXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfY2hlY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byB1c2UgYSBCVEYgZmxhZyAoS0ZfU1BJTkxPQ0tfU0FGRSkgdG8gZGV0ZXJtaW5lIGlmIGEga2Z1bmMgY2FuIGJlIGNhbGxlZCB3aGlsZSBob2xkaW5nIGEgQlBGIHNwaW5sb2NrLCByZXBsYWNpbmcgYSBoYXJkY29kZWQgbGlzdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB2ZXJpZmllciYjMzk7cyBzYWZldHkgY2hlY2tzIGFuZCBhbGxvd3MgZXh0ZXJuYWwgbW9kdWxlcyB0byBtYXJrIHRoZWlyIGtmdW5jcyBhcyBzcGlubG9jay1zYWZlLiBJdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTg6MzE6MzkuMjMyNTQzNTU0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE5NDkyOTk3NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHVzZSBhIEJURiBmbGFnIChLRl9TUElOTE9DS19TQUZFKSB0byBkZXRlcm1pbmUgaWYgYSBrZnVuYyBjYW4gYmUgY2FsbGVkIHdoaWxlIGhvbGRpbmcgYSBCUEYgc3BpbmxvY2ssIHJlcGxhY2luZyBhIGhhcmRjb2RlZCBsaXN0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHZlcmlmaWVyJ3Mgc2FmZXR5IGNoZWNrcyBhbmQgYWxsb3dzIGV4dGVybmFsIG1vZHVsZXMgdG8gbWFyayB0aGVpciBrZnVuY3MgYXMgc3BpbmxvY2stc2FmZS4gSXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTg6MzE6MzkuMjMyNTQ5NzA0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTA0Nzg4ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwYmQzNTIyODc5ZjZiOGY5MjZlMzM1NjRjYTczY2E4Y2NkYWU2Mzg2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgQXVnIDUgMTg6MzE6MzggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9idGYuaCBiL2luY2x1ZGUvbGludXgvYnRmLmhcXG5pbmRleCBjMDliNzk5NGRlNGViLi4zZjUyNTVkMDk1YTI3IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvYnRmLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2J0Zi5oXFxuQEAgLTc5LDYgKzc5LDcgQEBcXG4gI2RlZmluZSBLRl9BUkVOQV9BUkcxICAgKDEgXFx1MDAzY1xcdTAwM2MgMTQpIC8qIGtmdW5jIHRha2VzIGFuIGFyZW5hIHBvaW50ZXIgYXMgaXRzIGZpcnN0IGFyZ3VtZW50ICovXFxuICNkZWZpbmUgS0ZfQVJFTkFfQVJHMiAgICgxIFxcdTAwM2NcXHUwMDNjIDE1KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBzZWNvbmQgYXJndW1lbnQgKi9cXG4gI2RlZmluZSBLRl9JTVBMSUNJVF9BUkdTICgxIFxcdTAwM2NcXHUwMDNjIDE2KSAvKiBrZnVuYyBoYXMgaW1wbGljaXQgYXJndW1lbnRzIHN1cHBsaWVkIGJ5IHRoZSB2ZXJpZmllciAqL1xcbisjZGVmaW5lIEtGX1NQSU5MT0NLX1NBRkUgKDEgXFx1MDAzY1xcdTAwM2MgMTcpIC8qIGtmdW5jIGlzIGFsbG93ZWQgaW5zaWRlIGJwZl9zcGluX2xvY2stZWQgcmVnaW9uICovXFxuIFxcbiAvKlxcbiAgKiBUYWcgbWFya2luZyBhIGtlcm5lbCBmdW5jdGlvbiBhcyBhIGtmdW5jLiBUaGlzIGlzIG1lYW50IHRvIG1pbmltaXplIHRoZVxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2FyZW5hLmMgYi9rZXJuZWwvYnBmL2FyZW5hLmNcXG5pbmRleCA1NTVlZTI1MzFlZjk4Li43YjY4NDcyMDBiNDMxIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvYXJlbmEuY1xcbisrKyBiL2tlcm5lbC9icGYvYXJlbmEuY1xcbkBAIC0xMTE4LDkgKzExMTgsOSBAQCBfX2JwZl9rZnVuYyBpbnQgYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXModm9pZCAqcF9fbWFwLCB2b2lkICpwdHJfX2lnbiwgdTMyIHBhZ2VfY1xcbiBfX2JwZl9rZnVuY19lbmRfZGVmcygpO1xcbiBcXG4gQlRGX0tGVU5DU19TVEFSVChhcmVuYV9rZnVuY3MpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfYXJlbmFfYWxsb2NfcGFnZXMsIEtGX0FSRU5BX1JFVCB8IEtGX0FSRU5BX0FSRzIpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfYXJlbmFfZnJlZV9wYWdlcywgS0ZfQVJFTkFfQVJHMilcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzLCBLRl9BUkVOQV9BUkcyKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2FyZW5hX2FsbG9jX3BhZ2VzLCBLRl9BUkVOQV9SRVQgfCBLRl9BUkVOQV9BUkcyIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9mcmVlX3BhZ2VzLCBLRl9BUkVOQV9BUkcyIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzLCBLRl9BUkVOQV9BUkcyIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcXG4gQlRGX0tGVU5DU19FTkQoYXJlbmFfa2Z1bmNzKVxcbiBcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBidGZfa2Z1bmNfaWRfc2V0IGNvbW1vbl9rZnVuY19zZXQgPSB7XFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvaGVscGVycy5jIGIva2VybmVsL2JwZi9oZWxwZXJzLmNcXG5pbmRleCA0NzA5YTVhZDA0NzQ3Li42Mzg4YjZiMjNlNDkwIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvaGVscGVycy5jXFxuKysrIGIva2VybmVsL2JwZi9oZWxwZXJzLmNcXG5AQCAtNDgxMiwzMCArNDgxMiwzMiBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX29ial9kcm9wLCBLRl9SRUxFQVNFIHwgS0ZfSU1QTElDSVRfQVJHUylcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9vYmpfZHJvcF9pbXBsLCBLRl9SRUxFQVNFKVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3BlcmNwdV9vYmpfZHJvcCwgS0ZfUkVMRUFTRSB8IEtGX0lNUExJQ0lUX0FSR1MpXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcGVyY3B1X29ial9kcm9wX2ltcGwsIEtGX1JFTEVBU0UpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZSwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVIHwgS0ZfSU1QTElDSVRfQVJHUylcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGwsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX1JDVSlcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfZnJvbnQsIEtGX0lNUExJQ0lUX0FSR1MpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250X2ltcGwpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2JhY2ssIEtGX0lNUExJQ0lUX0FSR1MpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2JhY2tfaW1wbClcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2FkZCwgS0ZfSU1QTElDSVRfQVJHUylcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3BvcF9mcm9udCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKVxcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcG9wX2JhY2ssIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2RlbCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKVxcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfZnJvbnQsIEtGX1JFVF9OVUxMKVxcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfYmFjaywgS0ZfUkVUX05VTEwpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9pc19maXJzdClcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2lzX2xhc3QpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9lbXB0eSlcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZWZjb3VudF9hY3F1aXJlLFxcbitcXHQgICAgIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX1JDVSB8IEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbCxcXG4rXFx0ICAgICBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UgfCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUpXFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250X2ltcGwsIEtGX1NQSU5MT0NLX1NBRkUpXFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2JhY2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9iYWNrX2ltcGwsIEtGX1NQSU5MT0NLX1NBRkUpXFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9hZGQsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcG9wX2Zyb250LCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcG9wX2JhY2ssIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpXFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9kZWwsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpXFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9mcm9udCwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfYmFjaywgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfaXNfZmlyc3QsIEtGX1NQSU5MT0NLX1NBRkUpXFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9pc19sYXN0LCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfZW1wdHksIEtGX1NQSU5MT0NLX1NBRkUpXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza19hY3F1aXJlLCBLRl9BQ1FVSVJFIHwgS0ZfUkNVIHwgS0ZfUkVUX05VTEwpXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza19yZWxlYXNlLCBLRl9SRUxFQVNFKVxcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9yZW1vdmUsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfYWRkLCBLRl9JTVBMSUNJVF9BUkdTKVxcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9hZGRfaW1wbClcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfZmlyc3QsIEtGX1JFVF9OVUxMKVxcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9yb290LCBLRl9SRVRfTlVMTClcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfbGVmdCwgS0ZfUkVUX05VTEwpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX3JpZ2h0LCBLRl9SRVRfTlVMTClcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfcmVtb3ZlLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9hZGQsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9hZGRfaW1wbCwgS0ZfU1BJTkxPQ0tfU0FGRSlcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfZmlyc3QsIEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfcm9vdCwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9sZWZ0LCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpXFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX3JpZ2h0LCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpXFxuIFxcbiAjaWZkZWYgQ09ORklHX0NHUk9VUFNcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jZ3JvdXBfYWNxdWlyZSwgS0ZfQUNRVUlSRSB8IEtGX1JDVSB8IEtGX1JFVF9OVUxMKVxcbkBAIC00ODg1LDkgKzQ4ODcsOSBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JjdV9yZWFkX2xvY2spXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmN1X3JlYWRfdW5sb2NrKVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2R5bnB0cl9zbGljZSwgS0ZfUkVUX05VTEwpXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfZHlucHRyX3NsaWNlX3Jkd3IsIEtGX1JFVF9OVUxMKVxcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfbnVtX25ldywgS0ZfSVRFUl9ORVcpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9udW1fbmV4dCwgS0ZfSVRFUl9ORVhUIHwgS0ZfUkVUX05VTEwpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9udW1fZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfbnVtX25ldywgS0ZfSVRFUl9ORVcgfCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfbnVtX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX251bV9kZXN0cm95LCBLRl9JVEVSX0RFU1RST1kgfCBLRl9TUElOTE9DS19TQUZFKVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfdGFza192bWFfbmV3LCBLRl9JVEVSX05FVyB8IEtGX1JDVSlcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX3Rhc2tfdm1hX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMKVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfdGFza192bWFfZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZKVxcbkBAIC00OTYyLDggKzQ5NjQsOCBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jYXNlc3RyKTtcXG4gI2lmIGRlZmluZWQoQ09ORklHX0JQRl9MU00pIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0NHUk9VUFMpXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfY2dyb3VwX3JlYWRfeGF0dHIsIEtGX1JDVSlcXG4gI2VuZGlmXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ZwcmludGssIEtGX0lNUExJQ0lUX0FSR1MpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrLCBLRl9JTVBMSUNJVF9BUkdTKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV92cHJpbnRrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwsIEtGX0lNUExJQ0lUX0FSR1MpXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSwgS0ZfSU1QTElDSVRfQVJHUylcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9keW5wdHJfZnJvbV9maWxlKVxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3Jxc3BpbmxvY2suYyBiL2tlcm5lbC9icGYvcnFzcGlubG9jay5jXFxuaW5kZXggZTRlMzM4Y2RiNDM3Yy4uZTUyN2NiNDI1Y2Y0NSAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3Jxc3BpbmxvY2suY1xcbisrKyBiL2tlcm5lbC9icGYvcnFzcGlubG9jay5jXFxuQEAgLTc0NCwxMCArNzQ0LDEwIEBAIF9fYnBmX2tmdW5jIHZvaWQgYnBmX3Jlc19zcGluX3VubG9ja19pcnFyZXN0b3JlKHN0cnVjdCBicGZfcmVzX3NwaW5fbG9jayAqbG9jayxcXG4gX19icGZfa2Z1bmNfZW5kX2RlZnMoKTtcXG4gXFxuIEJURl9LRlVOQ1NfU1RBUlQocnFzcGlubG9ja19rZnVuY19pZHMpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVzX3NwaW5fbG9jaywgS0ZfUkVUX05VTEwpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVzX3NwaW5fdW5sb2NrKVxcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZSwgS0ZfUkVUX05VTEwpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmUpXFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVzX3NwaW5fbG9jaywgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX3VubG9jaywgS0ZfU1BJTkxPQ0tfU0FGRSlcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZXNfc3Bpbl9sb2NrX2lycXNhdmUsIEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSwgS0ZfU1BJTkxPQ0tfU0FGRSlcXG4gQlRGX0tGVU5DU19FTkQocnFzcGlubG9ja19rZnVuY19pZHMpXFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGJ0Zl9rZnVuY19pZF9zZXQgcnFzcGlubG9ja19rZnVuY19zZXQgPSB7XFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbmluZGV4IGIyNzQwMDRmY2NmZDkuLjdjMWVkY2FlMjkzYTggMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXFxuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuQEAgLTExNzk3LDIwICsxMTc5Nyw2IEBAIHN0YXRpYyBib29sIGlzX2JwZl9yYnRyZWVfYXBpX2tmdW5jKHUzMiBidGZfaWQpXFxuIFxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfcmlnaHRdO1xcbiB9XFxuIFxcbi1zdGF0aWMgYm9vbCBpc19icGZfaXRlcl9udW1fYXBpX2tmdW5jKHUzMiBidGZfaWQpXFxuLXtcXG4tXFx0cmV0dXJuIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25ld10gfHxcXG4tXFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25leHRdIHx8XFxuLVxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9pdGVyX251bV9kZXN0cm95XTtcXG4tfVxcbi1cXG4tc3RhdGljIGJvb2wgaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyh1MzIgYnRmX2lkKVxcbi17XFxuLVxcdHJldHVybiBpc19icGZfbGlzdF9hcGlfa2Z1bmMoYnRmX2lkKSB8fFxcbi1cXHQgICAgICAgaXNfYnBmX3JidHJlZV9hcGlfa2Z1bmMoYnRmX2lkKSB8fFxcbi1cXHQgICAgICAgaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmMoYnRmX2lkKTtcXG4tfVxcbi1cXG4gc3RhdGljIGJvb2wgaXNfYnBmX3Jlc19zcGluX2xvY2tfa2Z1bmModTMyIGJ0Zl9pZClcXG4ge1xcbiBcXHRyZXR1cm4gYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fbG9ja10gfHxcXG5AQCAtMTE4MTksMjQgKzExODA1LDE2IEBAIHN0YXRpYyBib29sIGlzX2JwZl9yZXNfc3Bpbl9sb2NrX2tmdW5jKHUzMiBidGZfaWQpXFxuIFxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZV07XFxuIH1cXG4gXFxuLXN0YXRpYyBib29sIGlzX2JwZl9hcmVuYV9rZnVuYyh1MzIgYnRmX2lkKVxcbitzdGF0aWMgYm9vbCBrZnVuY19zcGluX2FsbG93ZWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgczMyIGZ1bmNfaWQsIHMxNiBvZmZzZXQpXFxuIHtcXG4tXFx0cmV0dXJuIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX2FsbG9jX3BhZ2VzXSB8fFxcbi1cXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfYXJlbmFfZnJlZV9wYWdlc10gfHxcXG4tXFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXNdO1xcbi19XFxuK1xcdHN0cnVjdCBicGZfa2Z1bmNfbWV0YSBrZnVuYztcXG4rXFx0aW50IGVycjtcXG4gXFxuLXN0YXRpYyBib29sIGlzX2JwZl9zdHJlYW1fa2Z1bmModTMyIGJ0Zl9pZClcXG4te1xcbi1cXHRyZXR1cm4gYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc3RyZWFtX3ZwcmludGtdIHx8XFxuLVxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9zdHJlYW1fcHJpbnRfc3RhY2tdO1xcbi19XFxuK1xcdGVyciA9IGZldGNoX2tmdW5jX21ldGEoZW52LCBmdW5jX2lkLCBvZmZzZXQsIFxcdTAwMjZrZnVuYyk7XFxuK1xcdGlmIChlcnIgfHwgIWtmdW5jLmZsYWdzKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbi1zdGF0aWMgYm9vbCBrZnVuY19zcGluX2FsbG93ZWQodTMyIGJ0Zl9pZClcXG4te1xcbi1cXHRyZXR1cm4gaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyhidGZfaWQpIHx8IGlzX2JwZl9pdGVyX251bV9hcGlfa2Z1bmMoYnRmX2lkKSB8fFxcbi1cXHQgICAgICAgaXNfYnBmX3Jlc19zcGluX2xvY2tfa2Z1bmMoYnRmX2lkKSB8fCBpc19icGZfYXJlbmFfa2Z1bmMoYnRmX2lkKSB8fFxcbi1cXHQgICAgICAgaXNfYnBmX3N0cmVhbV9rZnVuYyhidGZfaWQpO1xcbitcXHRyZXR1cm4gKmtmdW5jLmZsYWdzIFxcdTAwMjYgS0ZfU1BJTkxPQ0tfU0FGRTtcXG4gfVxcbiBcXG4gc3RhdGljIGJvb2wgaXNfc3luY19jYWxsYmFja19jYWxsaW5nX2tmdW5jKHUzMiBidGZfaWQpXFxuQEAgLTE3NDE1LDcgKzE3MzkzLDcgQEAgc3RhdGljIGludCBkb19jaGVja19pbnNuKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGJvb2wgKmRvX3ByaW50X3N0YXRlKVxcbiBcXHRcXHRcXHRcXHQgICAgIGluc24tXFx1MDAzZWltbSAhPSBCUEZfRlVOQ19zcGluX3VubG9jayBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHRcXHQgICAgIGluc24tXFx1MDAzZWltbSAhPSBCUEZfRlVOQ19rcHRyX3hjaGcpIHx8XFxuIFxcdFxcdFxcdFxcdCAgICAoaW5zbi1cXHUwMDNlc3JjX3JlZyA9PSBCUEZfUFNFVURPX0tGVU5DX0NBTEwgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0XFx0XFx0ICAgICAoaW5zbi1cXHUwMDNlb2ZmICE9IDAgfHwgIWtmdW5jX3NwaW5fYWxsb3dlZChpbnNuLVxcdTAwM2VpbW0pKSkpIHtcXG4rXFx0XFx0XFx0XFx0ICAgICAha2Z1bmNfc3Bpbl9hbGxvd2VkKGVudiwgaW5zbi1cXHUwMDNlaW1tLCBpbnNuLVxcdTAwM2VvZmYpKSkge1xcbiBcXHRcXHRcXHRcXHRcXHR2ZXJib3NlKGVudixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFxcImZ1bmN0aW9uIGNhbGxzIGFyZSBub3QgYWxsb3dlZCB3aGlsZSBob2xkaW5nIGEgbG9ja1xcXFxuXFxcIik7XFxuIFxcdFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19jYWxsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19jYWxsLmNcXG5pbmRleCA3YWY1NTYwZjJhMDhjLi4yYjM5Y2MxYjA5ZjlhIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2NhbGwuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2NhbGwuY1xcbkBAIC03MSw4ICs3MSwxMCBAQCBzdGF0aWMgc3RydWN0IGtmdW5jX3Rlc3RfcGFyYW1zIGtmdW5jX3Rlc3RzW10gPSB7XFxuIFxcdFRDX0ZBSUwoa2Z1bmNfY2FsbF90ZXN0X2dldF9tZW1fZmFpbF9ub3RfY29uc3QsIDAsIFxcXCJpcyBub3QgYSBjb25zdFxcXCIpLFxcbiBcXHRUQ19GQUlMKGtmdW5jX2NhbGxfdGVzdF9tZW1fYWNxdWlyZV9mYWlsLCAwLCBcXFwiYWNxdWlyZSBrZXJuZWwgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIFBUUl9UT19CVEZfSURcXFwiKSxcXG4gXFx0VENfRkFJTChrZnVuY19jYWxsX3Rlc3RfcG9pbnRlcl9hcmdfdHlwZV9taXNtYXRjaCwgMCwgXFxcIlIxIGV4cGVjdGVkIHBvaW50ZXIgdG8gY3R4LCBidXQgZ290IHNjYWxhclxcXCIpLFxcbitcXHRUQ19GQUlMKGtmdW5jX2NhbGxfdGVzdF9zcGluX2xvY2tfdW5zYWZlLCAwLCBcXFwiZnVuY3Rpb24gY2FsbHMgYXJlIG5vdCBhbGxvd2VkIHdoaWxlIGhvbGRpbmcgYSBsb2NrXFxcIiksXFxuIFxcbiBcXHQvKiBzdWNjZXNzIGNhc2VzICovXFxuK1xcdFRDX1RFU1Qoa2Z1bmNfY2FsbF90ZXN0X3NwaW5fbG9ja19zYWZlLCAwKSxcXG4gXFx0VENfVEVTVChrZnVuY19jYWxsX3Rlc3QxLCAxMiksXFxuIFxcdFRDX1RFU1Qoa2Z1bmNfY2FsbF90ZXN0MiwgMyksXFxuIFxcdFRDX1RFU1Qoa2Z1bmNfY2FsbF90ZXN0NCwgLTEyMzQpLFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfY2FsbF9mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfY2FsbF9mYWlsLmNcXG5pbmRleCA2NGI2YTBiMGFiMWNjLi43ZTkzZjdmYjEzMjk5IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19jYWxsX2ZhaWwuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19jYWxsX2ZhaWwuY1xcbkBAIC00LDYgKzQsMTggQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfaGVscGVycy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXFxcIlxcbiBcXG4rc3RhdGljIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGtmdW5jX2NhbGxfbG9jayBTRUMoXFxcIi5kYXRhLkFcXFwiKTtcXG4rXFxuK1NFQyhcXFwiP3RjXFxcIilcXG4raW50IGtmdW5jX2NhbGxfdGVzdF9zcGluX2xvY2tfdW5zYWZlKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcXG4re1xcbitcXHRicGZfc3Bpbl9sb2NrKFxcdTAwMjZrZnVuY19jYWxsX2xvY2spO1xcbitcXHRicGZfa2Z1bmNfdHJpZ2dlcl9jdHhfY2hlY2soKTtcXG4rXFx0YnBmX3NwaW5fdW5sb2NrKFxcdTAwMjZrZnVuY19jYWxsX2xvY2spO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuIHN0cnVjdCBzeXNjYWxsX3Rlc3RfYXJncyB7XFxuIFxcdF9fdTggZGF0YVsxNl07XFxuIFxcdHNpemVfdCBzaXplO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfY2FsbF90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfY2FsbF90ZXN0LmNcXG5pbmRleCA1ZWRjNTE1NjRmNzExLi44ZTY1NjBjMzFlNzgxIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19jYWxsX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19jYWxsX3Rlc3QuY1xcbkBAIC01LDYgKzUsMTggQEBcXG4gI2luY2x1ZGUgXFxcImJwZl9taXNjLmhcXFwiXFxuICNpbmNsdWRlIFxcXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcXFwiXFxuIFxcbitzdGF0aWMgc3RydWN0IGJwZl9zcGluX2xvY2sga2Z1bmNfY2FsbF9sb2NrIFNFQyhcXFwiLmRhdGEuQVxcXCIpO1xcbitcXG4rU0VDKFxcXCJ0Y1xcXCIpXFxuK2ludCBrZnVuY19jYWxsX3Rlc3Rfc3Bpbl9sb2NrX3NhZmUoc3RydWN0IF9fc2tfYnVmZiAqc2tiKVxcbit7XFxuK1xcdGJwZl9zcGluX2xvY2soXFx1MDAyNmtmdW5jX2NhbGxfbG9jayk7XFxuK1xcdGJwZl90ZXN0bW9kX3Rlc3RfbW9kX2tmdW5jKDQyKTtcXG4rXFx0YnBmX3NwaW5fdW5sb2NrKFxcdTAwMjZrZnVuY19jYWxsX2xvY2spO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuIFNFQyhcXFwidGNcXFwiKVxcbiBpbnQga2Z1bmNfY2FsbF90ZXN0NShzdHJ1Y3QgX19za19idWZmICpza2IpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcXG5pbmRleCBlYjBmOWI1ZTE4ZDg1Li4wNTg1Nzk0NjA2ZWQ4IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXFxuQEAgLTEzODQsNyArMTM4NCw3IEBAIF9fYnBmX2tmdW5jIHZvaWQgYnBmX2tmdW5jX3RyaWdnZXJfY3R4X2NoZWNrKHZvaWQpXFxuIH1cXG4gXFxuIEJURl9LRlVOQ1NfU1RBUlQoYnBmX3Rlc3Rtb2RfY2hlY2tfa2Z1bmNfaWRzKVxcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rlc3Rtb2RfdGVzdF9tb2Rfa2Z1bmMpXFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfdGVzdG1vZF90ZXN0X21vZF9rZnVuYywgS0ZfU1BJTkxPQ0tfU0FGRSlcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9rZnVuY19jYWxsX3Rlc3QxKVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX2NhbGxfdGVzdDIpXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfa2Z1bmNfY2FsbF90ZXN0MylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTg6MzE6MzkuNjgzODA0MDc3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MzE0OTgwMjk2NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHVzZSBhIEJURiBmbGFnIChLRl9TUElOTE9DS19TQUZFKSB0byBkZXRlcm1pbmUgaWYgYSBrZnVuYyBjYW4gYmUgY2FsbGVkIHdoaWxlIGhvbGRpbmcgYSBCUEYgc3BpbmxvY2ssIHJlcGxhY2luZyBhIGhhcmRjb2RlZCBsaXN0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHZlcmlmaWVyJ3Mgc2FmZXR5IGNoZWNrcyBhbmQgYWxsb3dzIGV4dGVybmFsIG1vZHVsZXMgdG8gbWFyayB0aGVpciBrZnVuY3MgYXMgc3BpbmxvY2stc2FmZS4gSXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGJkMzUyMjg3OWY2YjhmOTI2ZTMzNTY0Y2E3M2NhOGNjZGFlNjM4NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMTg6MzE6MzggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2J0Zi5oIGIvaW5jbHVkZS9saW51eC9idGYuaFxuaW5kZXggYzA5Yjc5OTRkZTRlYi4uM2Y1MjU1ZDA5NWEyNyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYnRmLmhcbisrKyBiL2luY2x1ZGUvbGludXgvYnRmLmhcbkBAIC03OSw2ICs3OSw3IEBAXG4gI2RlZmluZSBLRl9BUkVOQV9BUkcxICAgKDEgXHUwMDNjXHUwMDNjIDE0KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBmaXJzdCBhcmd1bWVudCAqL1xuICNkZWZpbmUgS0ZfQVJFTkFfQVJHMiAgICgxIFx1MDAzY1x1MDAzYyAxNSkgLyoga2Z1bmMgdGFrZXMgYW4gYXJlbmEgcG9pbnRlciBhcyBpdHMgc2Vjb25kIGFyZ3VtZW50ICovXG4gI2RlZmluZSBLRl9JTVBMSUNJVF9BUkdTICgxIFx1MDAzY1x1MDAzYyAxNikgLyoga2Z1bmMgaGFzIGltcGxpY2l0IGFyZ3VtZW50cyBzdXBwbGllZCBieSB0aGUgdmVyaWZpZXIgKi9cbisjZGVmaW5lIEtGX1NQSU5MT0NLX1NBRkUgKDEgXHUwMDNjXHUwMDNjIDE3KSAvKiBrZnVuYyBpcyBhbGxvd2VkIGluc2lkZSBicGZfc3Bpbl9sb2NrLWVkIHJlZ2lvbiAqL1xuIFxuIC8qXG4gICogVGFnIG1hcmtpbmcgYSBrZXJuZWwgZnVuY3Rpb24gYXMgYSBrZnVuYy4gVGhpcyBpcyBtZWFudCB0byBtaW5pbWl6ZSB0aGVcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2FyZW5hLmMgYi9rZXJuZWwvYnBmL2FyZW5hLmNcbmluZGV4IDU1NWVlMjUzMWVmOTguLjdiNjg0NzIwMGI0MzEgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2FyZW5hLmNcbisrKyBiL2tlcm5lbC9icGYvYXJlbmEuY1xuQEAgLTExMTgsOSArMTExOCw5IEBAIF9fYnBmX2tmdW5jIGludCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyh2b2lkICpwX19tYXAsIHZvaWQgKnB0cl9faWduLCB1MzIgcGFnZV9jXG4gX19icGZfa2Z1bmNfZW5kX2RlZnMoKTtcbiBcbiBCVEZfS0ZVTkNTX1NUQVJUKGFyZW5hX2tmdW5jcylcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2FyZW5hX2FsbG9jX3BhZ2VzLCBLRl9BUkVOQV9SRVQgfCBLRl9BUkVOQV9BUkcyKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfYXJlbmFfZnJlZV9wYWdlcywgS0ZfQVJFTkFfQVJHMilcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMsIEtGX0FSRU5BX0FSRzIpXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9hbGxvY19wYWdlcywgS0ZfQVJFTkFfUkVUIHwgS0ZfQVJFTkFfQVJHMiB8IEtGX1NQSU5MT0NLX1NBRkUpXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9mcmVlX3BhZ2VzLCBLRl9BUkVOQV9BUkcyIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMsIEtGX0FSRU5BX0FSRzIgfCBLRl9TUElOTE9DS19TQUZFKVxuIEJURl9LRlVOQ1NfRU5EKGFyZW5hX2tmdW5jcylcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGJ0Zl9rZnVuY19pZF9zZXQgY29tbW9uX2tmdW5jX3NldCA9IHtcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2hlbHBlcnMuYyBiL2tlcm5lbC9icGYvaGVscGVycy5jXG5pbmRleCA0NzA5YTVhZDA0NzQ3Li42Mzg4YjZiMjNlNDkwIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9oZWxwZXJzLmNcbisrKyBiL2tlcm5lbC9icGYvaGVscGVycy5jXG5AQCAtNDgxMiwzMCArNDgxMiwzMiBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX29ial9kcm9wLCBLRl9SRUxFQVNFIHwgS0ZfSU1QTElDSVRfQVJHUylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX29ial9kcm9wX2ltcGwsIEtGX1JFTEVBU0UpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX2Ryb3AsIEtGX1JFTEVBU0UgfCBLRl9JTVBMSUNJVF9BUkdTKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcGVyY3B1X29ial9kcm9wX2ltcGwsIEtGX1JFTEVBU0UpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZWZjb3VudF9hY3F1aXJlLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UgfCBLRl9JTVBMSUNJVF9BUkdTKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfZnJvbnQsIEtGX0lNUExJQ0lUX0FSR1MpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfZnJvbnRfaW1wbClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9iYWNrLCBLRl9JTVBMSUNJVF9BUkdTKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2JhY2tfaW1wbClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfYWRkLCBLRl9JTVBMSUNJVF9BUkdTKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wb3BfZnJvbnQsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcG9wX2JhY2ssIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfZGVsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2Zyb250LCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfYmFjaywgS0ZfUkVUX05VTEwpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2lzX2ZpcnN0KVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9pc19sYXN0KVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9lbXB0eSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JlZmNvdW50X2FjcXVpcmUsXG4rXHQgICAgIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX1JDVSB8IEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLFxuK1x0ICAgICBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UgfCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250LCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udF9pbXBsLCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2JhY2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2JhY2tfaW1wbCwgS0ZfU1BJTkxPQ0tfU0FGRSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfYWRkLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcG9wX2Zyb250LCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wb3BfYmFjaywgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfZGVsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9mcm9udCwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9iYWNrLCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2lzX2ZpcnN0LCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9pc19sYXN0LCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9lbXB0eSwgS0ZfU1BJTkxPQ0tfU0FGRSlcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rhc2tfYWNxdWlyZSwgS0ZfQUNRVUlSRSB8IEtGX1JDVSB8IEtGX1JFVF9OVUxMKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza19yZWxlYXNlLCBLRl9SRUxFQVNFKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX3JlbW92ZSwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2FkZCwgS0ZfSU1QTElDSVRfQVJHUylcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9hZGRfaW1wbClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9maXJzdCwgS0ZfUkVUX05VTEwpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfcm9vdCwgS0ZfUkVUX05VTEwpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfbGVmdCwgS0ZfUkVUX05VTEwpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfcmlnaHQsIEtGX1JFVF9OVUxMKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX3JlbW92ZSwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9hZGQsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2FkZF9pbXBsLCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2ZpcnN0LCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfcm9vdCwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2xlZnQsIEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9yaWdodCwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxuIFxuICNpZmRlZiBDT05GSUdfQ0dST1VQU1xuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfY2dyb3VwX2FjcXVpcmUsIEtGX0FDUVVJUkUgfCBLRl9SQ1UgfCBLRl9SRVRfTlVMTClcbkBAIC00ODg1LDkgKzQ4ODcsOSBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JjdV9yZWFkX2xvY2spXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yY3VfcmVhZF91bmxvY2spXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9keW5wdHJfc2xpY2UsIEtGX1JFVF9OVUxMKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfZHlucHRyX3NsaWNlX3Jkd3IsIEtGX1JFVF9OVUxMKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9udW1fbmV3LCBLRl9JVEVSX05FVylcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfbnVtX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9udW1fZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9udW1fbmV3LCBLRl9JVEVSX05FVyB8IEtGX1NQSU5MT0NLX1NBRkUpXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX251bV9uZXh0LCBLRl9JVEVSX05FWFQgfCBLRl9SRVRfTlVMTCB8IEtGX1NQSU5MT0NLX1NBRkUpXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX251bV9kZXN0cm95LCBLRl9JVEVSX0RFU1RST1kgfCBLRl9TUElOTE9DS19TQUZFKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl90YXNrX3ZtYV9uZXcsIEtGX0lURVJfTkVXIHwgS0ZfUkNVKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl90YXNrX3ZtYV9uZXh0LCBLRl9JVEVSX05FWFQgfCBLRl9SRVRfTlVMTClcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfdGFza192bWFfZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZKVxuQEAgLTQ5NjIsOCArNDk2NCw4IEBAIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNhc2VzdHIpO1xuICNpZiBkZWZpbmVkKENPTkZJR19CUEZfTFNNKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfQ0dST1VQUylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2Nncm91cF9yZWFkX3hhdHRyLCBLRl9SQ1UpXG4gI2VuZGlmXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fdnByaW50aywgS0ZfSU1QTElDSVRfQVJHUylcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV9wcmludF9zdGFjaywgS0ZfSU1QTElDSVRfQVJHUylcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV92cHJpbnRrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV9wcmludF9zdGFjaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsLCBLRl9JTVBMSUNJVF9BUkdTKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSwgS0ZfSU1QTElDSVRfQVJHUylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2R5bnB0cl9mcm9tX2ZpbGUpXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9ycXNwaW5sb2NrLmMgYi9rZXJuZWwvYnBmL3Jxc3BpbmxvY2suY1xuaW5kZXggZTRlMzM4Y2RiNDM3Yy4uZTUyN2NiNDI1Y2Y0NSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvcnFzcGlubG9jay5jXG4rKysgYi9rZXJuZWwvYnBmL3Jxc3BpbmxvY2suY1xuQEAgLTc0NCwxMCArNzQ0LDEwIEBAIF9fYnBmX2tmdW5jIHZvaWQgYnBmX3Jlc19zcGluX3VubG9ja19pcnFyZXN0b3JlKHN0cnVjdCBicGZfcmVzX3NwaW5fbG9jayAqbG9jayxcbiBfX2JwZl9rZnVuY19lbmRfZGVmcygpO1xuIFxuIEJURl9LRlVOQ1NfU1RBUlQocnFzcGlubG9ja19rZnVuY19pZHMpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZXNfc3Bpbl9sb2NrLCBLRl9SRVRfTlVMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX3VubG9jaylcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZSwgS0ZfUkVUX05VTEwpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX2xvY2ssIEtGX1JFVF9OVUxMIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX3VubG9jaywgS0ZfU1BJTkxPQ0tfU0FGRSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZSwgS0ZfUkVUX05VTEwgfCBLRl9TUElOTE9DS19TQUZFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmUsIEtGX1NQSU5MT0NLX1NBRkUpXG4gQlRGX0tGVU5DU19FTkQocnFzcGlubG9ja19rZnVuY19pZHMpXG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBidGZfa2Z1bmNfaWRfc2V0IHJxc3BpbmxvY2tfa2Z1bmNfc2V0ID0ge1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggYjI3NDAwNGZjY2ZkOS4uN2MxZWRjYWUyOTNhOCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTE3OTcsMjAgKzExNzk3LDYgQEAgc3RhdGljIGJvb2wgaXNfYnBmX3JidHJlZV9hcGlfa2Z1bmModTMyIGJ0Zl9pZClcbiBcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfcmlnaHRdO1xuIH1cbiBcbi1zdGF0aWMgYm9vbCBpc19icGZfaXRlcl9udW1fYXBpX2tmdW5jKHUzMiBidGZfaWQpXG4te1xuLVx0cmV0dXJuIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25ld10gfHxcbi1cdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9pdGVyX251bV9uZXh0XSB8fFxuLVx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX2Rlc3Ryb3ldO1xuLX1cbi1cbi1zdGF0aWMgYm9vbCBpc19icGZfZ3JhcGhfYXBpX2tmdW5jKHUzMiBidGZfaWQpXG4te1xuLVx0cmV0dXJuIGlzX2JwZl9saXN0X2FwaV9rZnVuYyhidGZfaWQpIHx8XG4tXHQgICAgICAgaXNfYnBmX3JidHJlZV9hcGlfa2Z1bmMoYnRmX2lkKSB8fFxuLVx0ICAgICAgIGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKGJ0Zl9pZCk7XG4tfVxuLVxuIHN0YXRpYyBib29sIGlzX2JwZl9yZXNfc3Bpbl9sb2NrX2tmdW5jKHUzMiBidGZfaWQpXG4ge1xuIFx0cmV0dXJuIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tdIHx8XG5AQCAtMTE4MTksMjQgKzExODA1LDE2IEBAIHN0YXRpYyBib29sIGlzX2JwZl9yZXNfc3Bpbl9sb2NrX2tmdW5jKHUzMiBidGZfaWQpXG4gXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmVdO1xuIH1cbiBcbi1zdGF0aWMgYm9vbCBpc19icGZfYXJlbmFfa2Z1bmModTMyIGJ0Zl9pZClcbitzdGF0aWMgYm9vbCBrZnVuY19zcGluX2FsbG93ZWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgczMyIGZ1bmNfaWQsIHMxNiBvZmZzZXQpXG4ge1xuLVx0cmV0dXJuIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX2FsbG9jX3BhZ2VzXSB8fFxuLVx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX2ZyZWVfcGFnZXNdIHx8XG4tXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfYXJlbmFfcmVzZXJ2ZV9wYWdlc107XG4tfVxuK1x0c3RydWN0IGJwZl9rZnVuY19tZXRhIGtmdW5jO1xuK1x0aW50IGVycjtcbiBcbi1zdGF0aWMgYm9vbCBpc19icGZfc3RyZWFtX2tmdW5jKHUzMiBidGZfaWQpXG4te1xuLVx0cmV0dXJuIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3N0cmVhbV92cHJpbnRrXSB8fFxuLVx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3N0cmVhbV9wcmludF9zdGFja107XG4tfVxuK1x0ZXJyID0gZmV0Y2hfa2Z1bmNfbWV0YShlbnYsIGZ1bmNfaWQsIG9mZnNldCwgXHUwMDI2a2Z1bmMpO1xuK1x0aWYgKGVyciB8fCAha2Z1bmMuZmxhZ3MpXG4rXHRcdHJldHVybiBmYWxzZTtcbiBcbi1zdGF0aWMgYm9vbCBrZnVuY19zcGluX2FsbG93ZWQodTMyIGJ0Zl9pZClcbi17XG4tXHRyZXR1cm4gaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyhidGZfaWQpIHx8IGlzX2JwZl9pdGVyX251bV9hcGlfa2Z1bmMoYnRmX2lkKSB8fFxuLVx0ICAgICAgIGlzX2JwZl9yZXNfc3Bpbl9sb2NrX2tmdW5jKGJ0Zl9pZCkgfHwgaXNfYnBmX2FyZW5hX2tmdW5jKGJ0Zl9pZCkgfHxcbi1cdCAgICAgICBpc19icGZfc3RyZWFtX2tmdW5jKGJ0Zl9pZCk7XG4rXHRyZXR1cm4gKmtmdW5jLmZsYWdzIFx1MDAyNiBLRl9TUElOTE9DS19TQUZFO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCBpc19zeW5jX2NhbGxiYWNrX2NhbGxpbmdfa2Z1bmModTMyIGJ0Zl9pZClcbkBAIC0xNzQxNSw3ICsxNzM5Myw3IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2tfaW5zbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBib29sICpkb19wcmludF9zdGF0ZSlcbiBcdFx0XHRcdCAgICAgaW5zbi1cdTAwM2VpbW0gIT0gQlBGX0ZVTkNfc3Bpbl91bmxvY2sgXHUwMDI2XHUwMDI2XG4gXHRcdFx0XHQgICAgIGluc24tXHUwMDNlaW1tICE9IEJQRl9GVU5DX2twdHJfeGNoZykgfHxcbiBcdFx0XHRcdCAgICAoaW5zbi1cdTAwM2VzcmNfcmVnID09IEJQRl9QU0VVRE9fS0ZVTkNfQ0FMTCBcdTAwMjZcdTAwMjZcbi1cdFx0XHRcdCAgICAgKGluc24tXHUwMDNlb2ZmICE9IDAgfHwgIWtmdW5jX3NwaW5fYWxsb3dlZChpbnNuLVx1MDAzZWltbSkpKSkge1xuK1x0XHRcdFx0ICAgICAha2Z1bmNfc3Bpbl9hbGxvd2VkKGVudiwgaW5zbi1cdTAwM2VpbW0sIGluc24tXHUwMDNlb2ZmKSkpIHtcbiBcdFx0XHRcdFx0dmVyYm9zZShlbnYsXG4gXHRcdFx0XHRcdFx0XCJmdW5jdGlvbiBjYWxscyBhcmUgbm90IGFsbG93ZWQgd2hpbGUgaG9sZGluZyBhIGxvY2tcXG5cIik7XG4gXHRcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2NhbGwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2NhbGwuY1xuaW5kZXggN2FmNTU2MGYyYTA4Yy4uMmIzOWNjMWIwOWY5YSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2NhbGwuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2Z1bmNfY2FsbC5jXG5AQCAtNzEsOCArNzEsMTAgQEAgc3RhdGljIHN0cnVjdCBrZnVuY190ZXN0X3BhcmFtcyBrZnVuY190ZXN0c1tdID0ge1xuIFx0VENfRkFJTChrZnVuY19jYWxsX3Rlc3RfZ2V0X21lbV9mYWlsX25vdF9jb25zdCwgMCwgXCJpcyBub3QgYSBjb25zdFwiKSxcbiBcdFRDX0ZBSUwoa2Z1bmNfY2FsbF90ZXN0X21lbV9hY3F1aXJlX2ZhaWwsIDAsIFwiYWNxdWlyZSBrZXJuZWwgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIFBUUl9UT19CVEZfSURcIiksXG4gXHRUQ19GQUlMKGtmdW5jX2NhbGxfdGVzdF9wb2ludGVyX2FyZ190eXBlX21pc21hdGNoLCAwLCBcIlIxIGV4cGVjdGVkIHBvaW50ZXIgdG8gY3R4LCBidXQgZ290IHNjYWxhclwiKSxcbitcdFRDX0ZBSUwoa2Z1bmNfY2FsbF90ZXN0X3NwaW5fbG9ja191bnNhZmUsIDAsIFwiZnVuY3Rpb24gY2FsbHMgYXJlIG5vdCBhbGxvd2VkIHdoaWxlIGhvbGRpbmcgYSBsb2NrXCIpLFxuIFxuIFx0Lyogc3VjY2VzcyBjYXNlcyAqL1xuK1x0VENfVEVTVChrZnVuY19jYWxsX3Rlc3Rfc3Bpbl9sb2NrX3NhZmUsIDApLFxuIFx0VENfVEVTVChrZnVuY19jYWxsX3Rlc3QxLCAxMiksXG4gXHRUQ19URVNUKGtmdW5jX2NhbGxfdGVzdDIsIDMpLFxuIFx0VENfVEVTVChrZnVuY19jYWxsX3Rlc3Q0LCAtMTIzNCksXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfZmFpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfZmFpbC5jXG5pbmRleCA2NGI2YTBiMGFiMWNjLi43ZTkzZjdmYjEzMjk5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfZmFpbC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfY2FsbF9mYWlsLmNcbkBAIC00LDYgKzQsMTggQEBcbiAjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuICNpbmNsdWRlIFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXCJcbiBcbitzdGF0aWMgc3RydWN0IGJwZl9zcGluX2xvY2sga2Z1bmNfY2FsbF9sb2NrIFNFQyhcIi5kYXRhLkFcIik7XG4rXG4rU0VDKFwiP3RjXCIpXG4raW50IGtmdW5jX2NhbGxfdGVzdF9zcGluX2xvY2tfdW5zYWZlKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcbit7XG4rXHRicGZfc3Bpbl9sb2NrKFx1MDAyNmtmdW5jX2NhbGxfbG9jayk7XG4rXHRicGZfa2Z1bmNfdHJpZ2dlcl9jdHhfY2hlY2soKTtcbitcdGJwZl9zcGluX3VubG9jayhcdTAwMjZrZnVuY19jYWxsX2xvY2spO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIHN0cnVjdCBzeXNjYWxsX3Rlc3RfYXJncyB7XG4gXHRfX3U4IGRhdGFbMTZdO1xuIFx0c2l6ZV90IHNpemU7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfdGVzdC5jXG5pbmRleCA1ZWRjNTE1NjRmNzExLi44ZTY1NjBjMzFlNzgxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2NhbGxfdGVzdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfY2FsbF90ZXN0LmNcbkBAIC01LDYgKzUsMTggQEBcbiAjaW5jbHVkZSBcImJwZl9taXNjLmhcIlxuICNpbmNsdWRlIFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXCJcbiBcbitzdGF0aWMgc3RydWN0IGJwZl9zcGluX2xvY2sga2Z1bmNfY2FsbF9sb2NrIFNFQyhcIi5kYXRhLkFcIik7XG4rXG4rU0VDKFwidGNcIilcbitpbnQga2Z1bmNfY2FsbF90ZXN0X3NwaW5fbG9ja19zYWZlKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcbit7XG4rXHRicGZfc3Bpbl9sb2NrKFx1MDAyNmtmdW5jX2NhbGxfbG9jayk7XG4rXHRicGZfdGVzdG1vZF90ZXN0X21vZF9rZnVuYyg0Mik7XG4rXHRicGZfc3Bpbl91bmxvY2soXHUwMDI2a2Z1bmNfY2FsbF9sb2NrKTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbiBTRUMoXCJ0Y1wiKVxuIGludCBrZnVuY19jYWxsX3Rlc3Q1KHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcbiB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcbmluZGV4IGViMGY5YjVlMThkODUuLjA1ODU3OTQ2MDZlZDggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXG5AQCAtMTM4NCw3ICsxMzg0LDcgQEAgX19icGZfa2Z1bmMgdm9pZCBicGZfa2Z1bmNfdHJpZ2dlcl9jdHhfY2hlY2sodm9pZClcbiB9XG4gXG4gQlRGX0tGVU5DU19TVEFSVChicGZfdGVzdG1vZF9jaGVja19rZnVuY19pZHMpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90ZXN0bW9kX3Rlc3RfbW9kX2tmdW5jKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfdGVzdG1vZF90ZXN0X21vZF9rZnVuYywgS0ZfU1BJTkxPQ0tfU0FGRSlcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX2NhbGxfdGVzdDEpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9rZnVuY19jYWxsX3Rlc3QyKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfa2Z1bmNfY2FsbF90ZXN0MylcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE4OjMxOjM5LjY4MzgwNTE3N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMTcyMTA1MTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIFZlcmlmaWVyIENoYW5nZSBmb3IgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0cyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGBLRl9TUElOTE9DS19TQUZFYCBmbGFnIGZvciBCUEYga2Z1bmNzLCBhIG5ldyBmZWF0dXJlIHRoYXQncyBwcmV0dHkgaW50ZXJlc3RpbmcuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbGllcyBpbiB0aGUgQlBGIHZlcmlmaWVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICppcyB0aGlzIHdvcnRoIGZ1enppbmc/KiBBYnNvbHV0ZWx5LCBhbnkgbW9kaWZpY2F0aW9uIHRvIHRoZSB2ZXJpZmllciwgcGFydGljdWxhcmx5IG9uZSB0aGF0IGFsdGVycyB0aGUgYWxsb3dlZCBvcGVyYXRpb25zIHdpdGhpbiBhIGNyaXRpY2FsIHNlY3Rpb24gbGlrZSBhIHNwaW5sb2NrLCBkZW1hbmRzIHNjcnV0aW55LlxuXG5UaGUgZnVuZGFtZW50YWwgc2hpZnQgaXMgaG93IHRoZSB2ZXJpZmllciBub3cgZGV0ZXJtaW5lcyB3aGV0aGVyIGEga2Z1bmMgY2FuIGJlIHVzZWQgaW5zaWRlIGEgc3BpbmxvY2suIEluc3RlYWQgb2YgdGhhdCBoYXJkY29kZWQgbGlzdCBvZiBgaXNfYnBmXypfa2Z1bmNgIGNoZWNrcywgaXQgbm93IHVzZXMgdGhpcyBgS0ZfU1BJTkxPQ0tfU0FGRWAgZmxhZyBwcmVzZW50IGluIHRoZSBCVEYgZGF0YSBmb3IgZWFjaCBrZnVuYy4gVGhhdCdzIGEgc2lnbmlmaWNhbnQgcmVmYWN0b3JpbmcgdGhhdCBjb3VsZCBpbnRyb2R1Y2Ugc3VidGxlIGJlaGF2aW9yYWwgY2hhbmdlcywgb3IgZXZlbiBhbGxvdyBwcml2aWxlZ2VkIGNvZGUgdG8gYWNjZXNzIGZlYXR1cmVzIGJ5IG1pc3VzaW5nIHRoaXMgbmV3IGZsYWcuIEl0IGFsc28gbWVhbnMgdGhhdCBleHRlcm5hbCBtb2R1bGVzIG5vdyBoYXZlIHRoZSBhYmlsaXR5IHRvIGV4cGxpY2l0bHkgbWFyayB0aGVpciBrZnVuY3MgYXMgXCJzcGlubG9jayBzYWZlLFwiIHdoaWNoIHdpZGVucyB0aGUgYXR0YWNrIHN1cmZhY2UuIFRoaXMgaXMgYSBwb3RlbnRpYWwgbmV3IGZlYXR1cmUvcmVmYWN0b3JpbmcgdGhhdCBkZXNlcnZlcyBmdXp6aW5nLlxuXG5NeSBwcmltYXJ5IGZvY3VzIHNoaWZ0cyB0byBga2Z1bmNfc3Bpbl9hbGxvd2VkYCwgdGhlIGZ1bmN0aW9uIGJlaW5nIG1vZGlmaWVkLCBhbmQgaXRzIGNhbGwgY2hhaW4uIEl0J3Mgc3RhdGljLCB3aGljaCBpcyB0eXBpY2FsIGZvciB0aGUgdmVyaWZpZXIsIGJ1dCBpdCdzIGNhbGxlZCBieSBgZG9fY2hlY2tfaW5zbmAsIHdoaWNoIGlzIGFsc28gc3RhdGljLiBGb2xsb3dpbmcgdGhlIGNhbGwgZ3JhcGgsIGBkb19jaGVja19pbnNuYCBpcyBjYWxsZWQgYnkgYGRvX2NoZWNrYCwgd2hpY2ggaXMgdGhlIGltbWVkaWF0ZSBuZXh0IGZ1bmN0aW9uIHRoYXQgbmVlZHMgY2hlY2tpbmcuIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgZW50cnkgcG9pbnQgZm9yIHRoZSBmdXp6aW5nIGFuYWx5c2lzLiBJJ2xsIG5lZWQgdG8gc2NydXRpbml6ZSBgZmV0Y2hfa2Z1bmNfbWV0YWAgYXMgd2VsbCwgc2luY2UgdGhhdCdzIHdoZXJlIHRoZSBrZnVuYyBtZXRhZGF0YSBpbmNsdWRpbmcgdGhlIGZsYWcgaXMgcmV0cmlldmVkLiBUaGUgQlBGIHZlcmlmaWVyIGlzIGFscmVhZHkgaGVhdmlseSBmdXp6ZWQgYnkgc3l6a2FsbGVyLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcsIGJ1dCBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoaXMgc3BlY2lmaWMgY2hhbmdlIGlzIGNvdmVyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4MjMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2ODIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxODozMTo0OS44NTU5MTM1OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDY5NTMzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmZXRjaF9rZnVuY19tZXRhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjYzND1zdGF0aWMgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICpmaW5kX2tmdW5jX2ltcGxfcHJvdG8oc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yNjYwLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyNjYxOnN0YXRpYyBpbnQgZmV0Y2hfa2Z1bmNfbWV0YShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yNjYyLVxcdFxcdFxcdCAgICBzMzIgZnVuY19pZCxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0yNzI3PWludCBicGZfYWRkX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgdTMyIGZ1bmNfaWQsIHUxNiBvZmZzZXQpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjc5NC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6Mjc5NTpcXHRlcnIgPSBmZXRjaF9rZnVuY19tZXRhKGVudiwgZnVuY19pZCwgb2Zmc2V0LCBcXHUwMDI2a2Z1bmMpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yNzk2LVxcdGlmIChlcnIpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE4MDg9c3RhdGljIGJvb2wga2Z1bmNfc3Bpbl9hbGxvd2VkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHMzMiBmdW5jX2lkLCBzMTYgb2Zmc2V0KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExODEyLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTgxMzpcXHRlcnIgPSBmZXRjaF9rZnVuY19tZXRhKGVudiwgZnVuY19pZCwgb2Zmc2V0LCBcXHUwMDI2a2Z1bmMpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTgxNC1cXHRpZiAoZXJyIHx8ICFrZnVuYy5mbGFncylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjYxNT1pbnQgYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI2MjQtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNjI1OlxcdGVyciA9IGZldGNoX2tmdW5jX21ldGEoZW52LCBmdW5jX2lkLCBvZmZzZXQsIFxcdTAwMjZrZnVuYyk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNjI2LVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE4OjMxOjQ5LjkzNjYxNjg2MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MDg4OTkyNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGl2aW5nIGludG8gQlBGIFZlcmlmaWNhdGlvbioqXG5cbk9rYXksIHNvIGBrZnVuY19zcGluX2FsbG93ZWRgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBkb19jaGVja19pbnNuYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlbid0IHN0YXRpYzsgdGhvc2UgYXJlIHRoZSBvbmVzIHdlIG5lZWQgdG8gYW5hbHl6ZSBtb3JlIGNsb3NlbHkuIFRoYXQgdXN1YWxseSBwb2ludHMgdG8gdGhlIGNvcmUgZnVuY3Rpb25hbGl0eS4gSSBrbm93IGBicGZfY2hlY2tgIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciB0aGUgdmVyaWZpZXIsIHNvIEknbGwgc3RhcnQgd2l0aCB0aGF0LiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZXhhbWluZSBga2VybmVsL2JwZi92ZXJpZmllci5jYCBhbmQgc2VlIHdoaWNoIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgb3IsIGlmIG5vdCBleHBvcnRlZCwgYXJlICpub24tc3RhdGljKiwgd2hpY2ggd291bGQgaW5kaWNhdGUgdGhlaXIgbGlrZWx5IGltcG9ydGFuY2UgaW4gdGhpcyBjb250ZXh0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24gYW5kIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0NjIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxODozMTo1My42NDU1MTg5OTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwODc4NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXmludCBicGZfY2hlY2tcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTIwMDIwPXN0YXRpYyBpbnQgYnBmX3Byb2dfdmVyaWZ5X3NpZ25hdHVyZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMTM2LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMDEzNzppbnQgYnBmX2NoZWNrKHN0cnVjdCBicGZfcHJvZyAqKnByb2csIHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjAxMzgtXFx0ICAgICAgc3RydWN0IGJwZl9sb2dfYXR0ciAqYXR0cl9sb2cpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE4OjMxOjUzLjY5MTYxMjM0MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1MjMzMzA3MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIHNlZW1zIGZvY3VzZWQuIEkgbGlrZSB0aGF0IHRoZXkncmUgemVyb2luZyBpbiBvbiBgYnBmX2NoZWNrYDsgdGhhdCBzZWVtcyBsaWtlIHRoZSByaWdodCBhcmVhIHRvIHN0YXJ0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgaW1wYWN0IG9uIGBkb19jaGVja2AgYXMgd2VsbCwgc2luY2UgdGhhdCBvbmUgaXMgc3RhdGljIGFuZCBtaWdodCBiZSBkaXJlY3RseSByZWxhdGVkLiBJIHNob3VsZCBhbHNvIG1ha2Ugc3VyZSBubyBvdGhlciBmdW5jdGlvbnMgYXJlIGluZGlyZWN0bHkgYWZmZWN0ZWQuXG5cbkxvb2tpbmcgZGVlcGVyLCB0aGUgcGF0Y2ggbWVudGlvbnMgbW9kaWZpY2F0aW9ucyB0byBmdW5jdGlvbnMgbGlrZSBgYnBmX2FyZW5hX2FsbG9jX3BhZ2VzYCwgYGJwZl9hcmVuYV9mcmVlX3BhZ2VzYCwgYW5kIHNvIG9uLCBidXQgaXQgb25seSBjaGFuZ2VzIHRoZWlyIEJURiBmbGFncywgbm90IHRoZSBjb3JlIGxvZ2ljLiBUaGUgbWVhdCBvZiB0aGUgY2hhbmdlIGFwcGVhcnMgdG8gYmUgd2l0aGluIGBrZnVuY19zcGluX2FsbG93ZWRgLCB3aGljaCBpcyBhbHNvIHN0YXRpYy4gVGhpcyByZWluZm9yY2VzIG15IGluaXRpYWwgYXNzZXNzbWVudCB0aGF0IGludmVzdGlnYXRpbmcgYGJwZl9jaGVja2AgaXMgdGhlIG1vc3QgZGlyZWN0IHBhdGguXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSSBrbm93IEJQRiBpcyBlbmFibGVkIHZpYSBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYnV0IEkgbmVlZCB0byBlbnN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjcnVjaWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdCBwbGF5IGhlcmUuIFRoaXMgbWVhbnMgSSdsbCBiZSBsb29raW5nIGF0IHRoZSByZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgc3BlY2lmaWNhbGx5IG9uZXMgdXNlZCBieSB0aGUgbW9kaWZpZWQgZmlsZXMuXG5cblRoZSBwYXRjaCB0b3VjaGVzIGZpbGVzIGluIGBrZXJuZWwvYnBmL2FyZW5hLmNgLCBga2VybmVsL2JwZi9oZWxwZXJzLmNgLCBga2VybmVsL2JwZi9ycXNwaW5sb2NrLmNgLCBhbmQgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIFRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLCBJJ2xsIGV4YW1pbmUgdGhlIGBrZXJuZWwvYnBmL01ha2VmaWxlYC4gVGhpcyBzaG91bGQgbGlzdCB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgY29udHJvbCB0aGUgY29tcGlsYXRpb24gb2YgdGhvc2UgZmlsZXMsIHByb3ZpZGluZyBhIGNvbXByZWhlbnNpdmUgdmlldyBvZiBhbnkgcHJlcmVxdWlzaXRlcyBmb3IgdGhlc2UgY2hhbmdlcyB0byB0YWtlIGVmZmVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTg2MywiT3V0cHV0VG9rZW5zIjo1OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxODozMjowMC4yMTQ5NDUwOTRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQzNzk1MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXJlbmFcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlPTE5PWlmZXEgKCQoQ09ORklHX01NVSkkKENPTkZJR182NEJJVCkseXkpXFxua2VybmVsL2JwZi9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGFyZW5hLm8gcmFuZ2VfdHJlZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0yMS1lbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxODozMjowMC4yNTkzMzAwODlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ1Mjc0MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnFzcGlubG9ja1xcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGU9MTc9b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IHRyYW1wb2xpbmUub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBidGYubyBtZW1hbGxvYy5vIHJxc3BpbmxvY2subyBzdHJlYW0ub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTktaWZlcSAoJChDT05GSUdfTU1VKSQoQ09ORklHXzY0QklUKSx5eSlcXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU9NzU9Q0ZMQUdTX1JFTU9WRV9yaW5nYnVmLm8gPSAkKENDX0ZMQUdTX0ZUUkFDRSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjc2OkNGTEFHU19SRU1PVkVfcnFzcGlubG9jay5vID0gJChDQ19GTEFHU19GVFJBQ0UpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE4OjMyOjAwLjMwMzg2NTU0NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTEwMTk2NTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQW5hbHl6aW5nIHRoZSBCUEYgU3lzdGVtIENhbGwgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIG15IGZvY3VzIGlzIHplcm9pbmcgaW4gb24gdGhpcyBgQ09ORklHX0JQRl9TWVNDQUxMYCBvcHRpb24uIFRoYXQncyB0aGUgcHJpbWFyeSBmbGFnIEkgbmVlZCB0byB0cmFjay4gSG9sZCBvbiBhIHNlY29uZCwgdGhvdWdoLCBiZWNhdXNlIGBhcmVuYS5vYCBoYXMgZGVwZW5kZW5jaWVzIG9uIGJvdGggYENPTkZJR19NTVVgIGFuZCBgQ09ORklHXzY0QklUYC4gVGhhdCBpbXBhY3RzIGhvdyB0aGlzIHdpbGwgdWx0aW1hdGVseSBwbGF5IG91dC4gQnV0IEkgdGhpbmsgdGhlIHJlYWwgbWVhdCBvZiB0aGUgbW9kaWZpY2F0aW9uIHJlc2lkZXMgaW4gYHZlcmlmaWVyLmNgLCBhbmQgdGhhdCdzIGNvbXBpbGVkIHdpdGggYENPTkZJR19CUEZfU1lTQ0FMTGAsIHJpZ2h0PyBPa2F5LCBzbyB0aGF0J3MgdGhlIGtleSBmaWxlLiBJIHNob3VsZCByZWFsbHkgY2hlY2sgdGhlIGBrZXJuZWwvYnBmL01ha2VmaWxlYCB0byBjb25maXJtIHdoZXJlIGB2ZXJpZmllci5vYCBpcyBiZWluZyBidWlsdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBidWlsZCBwcm9jZXNzIGJldHRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA3MzEsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTg6MzI6MDQuODE0MDY2OTE2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTUzOTYyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2ZXJpZmllclxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGU9Nz1DRkxBR1NfY29yZS5vICs9IC1Xbm8tb3ZlcnJpZGUtaW5pdCAkKGNmbGFncy1ub2djc2UteXkpXFxua2VybmVsL2JwZi9NYWtlZmlsZS04LVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHN5c2NhbGwubyB2ZXJpZmllci5vIGlub2RlLm8gaGVscGVycy5vIHRudW0ubyBjbnVtLm8gbG9nLm8gdG9rZW4ubyBsaXZlbmVzcy5vIGNvbnN0X2ZvbGQub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTAtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfaXRlci5vIG1hcF9pdGVyLm8gdGFza19pdGVyLm8gcHJvZ19pdGVyLm8gbGlua19pdGVyLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTg6MzI6MDQuODU5NjEzNDIxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyNDE2NjYzNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFZlcmlmaWVyIFBhdGNoKipcblxuT2theSwgc28gaXQgbG9va3MgbGlrZSBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgb25seSBjb25maWcgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCBoZXJlLiBUaGlzIHBhdGNoIGlzIGNoYW5naW5nIGhvdyB0aGUgQlBGIHZlcmlmaWVyIGhhbmRsZXMgc3BpbmxvY2sgc2FmZXR5IHdpdGgga2Z1bmNzLiBJbnN0ZWFkIG9mIGEgcmlnaWQsIGhhcmRjb2RlZCBsaXN0LCBpdCdzIGxldmVyYWdpbmcgYSBCVEYgZmxhZywgYEtGX1NQSU5MT0NLX1NBRkVgLCB3aGljaCBpcyBhIG11Y2ggbW9yZSBlbGVnYW50IGFuZCBmbGV4aWJsZSBhcHByb2FjaC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHZlcmlmaWVyJ3Mgc2FmZXR5IGxvZ2ljOyBpdCdzIHNpZ25pZmljYW50IGJlY2F1c2UgaXQgbGV0cyBleHRlcm5hbCBtb2R1bGVzIG1hcmsgdGhlaXIga2Z1bmNzIGFzIHNwaW5sb2NrLXNhZmUsIG9wZW5pbmcgdXAgbmV3IHBvc3NpYmlsaXRpZXMgZm9yIEJQRiBwcm9ncmFtIGZ1bmN0aW9uYWxpdHkgYW5kIGludGVncmF0aW9uLlxuXG5UaGUgbWFpbiBwb2ludCBvZiBmb2N1cyBoZXJlIGlzIHRoZSBgYnBmX2NoZWNrYCBzeW1ib2wsIG9idmlvdXNseSwgc2luY2UgdGhhdCdzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciB0aGUgdmVyaWZpZXIgaXRzZWxmLiBTbyBgYnBmX2NoZWNrYCBpcyB3aGVyZSBJJ2xsIG5lZWQgdG8gc2V0IHRoZSByZXN1bHRzIGFuZCBsb29rIGZvciBwb3RlbnRpYWwgaXNzdWVzLiBUaGUgb3ZlcmFsbCBjaGFuZ2Ugc2VlbXMgc291bmQsIGJ1dCBnaXZlbiBpdHMgaW1wYWN0IG9uIHNlY3VyaXR5IGFuZCB3aGF0J3MgYXQgc3Rha2UsIHRoaXMgZGVmaW5pdGVseSBuZWVkcyBzb21lIHNlcmlvdXMgZnV6emluZyB0byBtYWtlIHN1cmUgaXQncyByb2J1c3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMTgwLCJPdXRwdXRUb2tlbnMiOjEyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxODozMjoxMS4xMDEyODIxMTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDU0ODQyMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHVzZSBhIEJURiBmbGFnIChLRl9TUElOTE9DS19TQUZFKSB0byBkZXRlcm1pbmUgaWYgYSBrZnVuYyBjYW4gYmUgY2FsbGVkIHdoaWxlIGhvbGRpbmcgYSBCUEYgc3BpbmxvY2ssIHJlcGxhY2luZyBhIGhhcmRjb2RlZCBsaXN0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHZlcmlmaWVyJ3Mgc2FmZXR5IGNoZWNrcyBhbmQgYWxsb3dzIGV4dGVybmFsIG1vZHVsZXMgdG8gbWFyayB0aGVpciBrZnVuY3MgYXMgc3BpbmxvY2stc2FmZS4gSXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9jaGVja1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gdXNlIGEgQlRGIGZsYWcgKEtGX1NQSU5MT0NLX1NBRkUpIHRvIGRldGVybWluZSBpZiBhIGtmdW5jIGNhbiBiZSBjYWxsZWQgd2hpbGUgaG9sZGluZyBhIEJQRiBzcGlubG9jaywgcmVwbGFjaW5nIGEgaGFyZGNvZGVkIGxpc3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdmVyaWZpZXIncyBzYWZldHkgY2hlY2tzIGFuZCBhbGxvd3MgZXh0ZXJuYWwgbW9kdWxlcyB0byBtYXJrIHRoZWlyIGtmdW5jcyBhcyBzcGlubG9jay1zYWZlLiBJdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7672g[1] Phase: Succeeded StartedAt: 2026-08-05 18:32:23 +0000 UTC FinishedAt: 2026-08-05 18:32:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7672g[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-05 18:32:23 +0000 UTC FinishedAt: 2026-08-05 18:32:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7672g[2] Phase: Succeeded StartedAt: 2026-08-05 18:32:23 +0000 UTC FinishedAt: 2026-08-05 22:14:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-05 18:32:23 +0000 UTC FinishedAt: 2026-08-05 22:14:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-05 18:32:23 +0000 UTC FinishedAt: 2026-08-05 18:32:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-05 18:32:23 +0000 UTC FinishedAt: 2026-08-05 18:32:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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-workflow7672g/series-workflow7672g-convert-artifact-3918909309/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-05 18:32:33 +0000 UTC FinishedAt: 2026-08-05 18:49:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-05 18:32:33 +0000 UTC FinishedAt: 2026-08-05 18:49:02 +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:*2d21d520-8eea-42e6-bb57-2b13c8c93db8,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-workflow7672g/series-workflow7672g-convert-artifact-3918909309/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": "d6ffc4b3-e94a-4241-97cc-19b977df39d1", "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-workflow7672g/series-workflow7672g-build-action-345684147/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-05 18:32:33 +0000 UTC FinishedAt: 2026-08-05 18:48:52 +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:*2d21d520-8eea-42e6-bb57-2b13c8c93db8,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-workflow7672g/series-workflow7672g-convert-artifact-3918909309/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": "d6ffc4b3-e94a-4241-97cc-19b977df39d1", "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-workflow7672g/series-workflow7672g-build-action-345684147/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-05 18:49:02 +0000 UTC FinishedAt: 2026-08-05 18:49:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-05 18:49:02 +0000 UTC FinishedAt: 2026-08-05 18:49:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-05 18:49:02 +0000 UTC FinishedAt: 2026-08-05 18:49:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-05 18:49:02 +0000 UTC FinishedAt: 2026-08-05 18:49:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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-workflow7672g/series-workflow7672g-convert-artifact-4135567576/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-05 18:49:12 +0000 UTC FinishedAt: 2026-08-05 18:51:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-05 18:49:12 +0000 UTC FinishedAt: 2026-08-05 18:51:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d6ffc4b3-e94a-4241-97cc-19b977df39d1,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-workflow7672g/series-workflow7672g-build-action-345684147/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-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-05 18:51:24 +0000 UTC FinishedAt: 2026-08-05 18:51:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-05 18:51:24 +0000 UTC FinishedAt: 2026-08-05 18:51:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-05 18:51:24 +0000 UTC FinishedAt: 2026-08-05 19:11:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-05 18:51:24 +0000 UTC FinishedAt: 2026-08-05 19:11:10 +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:*2d21d520-8eea-42e6-bb57-2b13c8c93db8,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-workflow7672g/series-workflow7672g-convert-artifact-4135567576/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": "633359fe-4fa0-4cb1-a974-d45555d56c96", "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-workflow7672g/series-workflow7672g-build-action-1596680772/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-05 18:51:24 +0000 UTC FinishedAt: 2026-08-05 19:11:00 +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:*2d21d520-8eea-42e6-bb57-2b13c8c93db8,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-workflow7672g/series-workflow7672g-convert-artifact-4135567576/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": "633359fe-4fa0-4cb1-a974-d45555d56c96", "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-workflow7672g/series-workflow7672g-build-action-1596680772/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-05 19:11:10 +0000 UTC FinishedAt: 2026-08-05 19:11:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-05 19:11:10 +0000 UTC FinishedAt: 2026-08-05 19:11:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-05 19:11:10 +0000 UTC FinishedAt: 2026-08-05 19:13:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-05 19:11:10 +0000 UTC FinishedAt: 2026-08-05 19:13:11 +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:*633359fe-4fa0-4cb1-a974-d45555d56c96,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-workflow7672g/series-workflow7672g-build-action-1596680772/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-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-05 19:13:20 +0000 UTC FinishedAt: 2026-08-05 22:14:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-05 19:13:20 +0000 UTC FinishedAt: 2026-08-05 22:14:41 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"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:*d6ffc4b3-e94a-4241-97cc-19b977df39d1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*633359fe-4fa0-4cb1-a974-d45555d56c96,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-workflow7672g/series-workflow7672g-build-action-345684147/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-workflow7672g/series-workflow7672g-build-action-1596680772/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-05 19:13:20 +0000 UTC FinishedAt: 2026-08-05 19:13:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-05 19:13:20 +0000 UTC FinishedAt: 2026-08-05 19:13:24 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"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-workflow7672g/series-workflow7672g-convert-artifact-2317804465/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-05 19:13:20 +0000 UTC FinishedAt: 2026-08-05 19:13:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-05 19:13:20 +0000 UTC FinishedAt: 2026-08-05 19:13:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-05 19:13:20 +0000 UTC FinishedAt: 2026-08-05 19:13:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-05 19:13:30 +0000 UTC FinishedAt: 2026-08-05 22:14:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7672g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"457d4ecb47aaf7a2cb46aaadd76e8c812e4f3c9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"20a772f1-dedb-4e04-83a0-fbf0566ec5f6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-05 19:13:30 +0000 UTC FinishedAt: 2026-08-05 22:14:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d6ffc4b3-e94a-4241-97cc-19b977df39d1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*633359fe-4fa0-4cb1-a974-d45555d56c96,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-workflow7672g/series-workflow7672g-build-action-345684147/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-workflow7672g/series-workflow7672g-build-action-1596680772/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-workflow7672g/series-workflow7672g-convert-artifact-2317804465/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,}