Name: series-workflowccl7q Phase: Succeeded StartedAt: 2026-08-06 06:52:06 +0000 UTC FinishedAt: 2026-08-06 09:01:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccl7q[0] Phase: Succeeded StartedAt: 2026-08-06 06:52:06 +0000 UTC FinishedAt: 2026-08-06 07:20:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccl7q[0].run-triage Phase: Succeeded StartedAt: 2026-08-06 06:52:06 +0000 UTC FinishedAt: 2026-08-06 07:20:04 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "cb59bfd419d0c560b9f7273522f9a4799062aad5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "INFINIBAND" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "cb59bfd419d0c560b9f7273522f9a4799062aad5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "INFINIBAND" ], "series_id": "7aadce37-bbe6-4239-a55a-bde4d4201a04" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "smc_wr_tx_get_free_slot", "smc_wr_tx_put_slot" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c21jX3dyX3R4X2dldF9mcmVlX3Nsb3QmIzM0OywKICAgICYjMzQ7c21jX3dyX3R4X3B1dF9zbG90JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB3YWl0IGxvZ2ljIGluIGBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdGAgYW5kIGZpeGVzIGEgbWVtc2V0IHNpemUgYnVnIGluIGBzbWNfd3JfdHhfcHV0X3Nsb3RgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBTTUMgKFNoYXJlZCBNZW1vcnkgQ29tbXVuaWNhdGlvbnMpIHByb3RvY29sIHN1YnN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBBRl9TTUMgc29ja2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzoxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGMxN2ZmY2FhY2RkYmRmYTU5NWE0Yjg5YmQ1MzE0NmU2MGU4Y2RhMmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyA2IDA3OjE5OjE2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX3dyLmMgYi9uZXQvc21jL3NtY193ci5jXG5pbmRleCA1OWM5MmI0Njk0NWM1Li4yY2RkNDA2M2MxM2Q2IDEwMDY0NFxuLS0tIGEvbmV0L3NtYy9zbWNfd3IuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfd3IuY1xuQEAgLTE5OCwxMSAmIzQzOzE5OCwxMyBAQCBpbnQgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3Qoc3RydWN0IHNtY19saW5rICpsaW5rLFxuIFx0XHRcdCAgICBzdHJ1Y3Qgc21jX3JkbWFfd3IgKip3cl9yZG1hX2J1ZixcbiBcdFx0XHQgICAgc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKip3cl9wZW5kX3ByaXYpXG4ge1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgdGltZW91dCA9IFNNQ19XUl9UWF9XQUlUX0ZSRUVfU0xPVF9USU1FO1xuIFx0c3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IgPSBzbWNfZ2V0X2xncihsaW5rKTtcbiBcdHN0cnVjdCBzbWNfd3JfdHhfcGVuZCAqd3JfcGVuZDtcbiBcdHUzMiBpZHggPSBsaW5rLVx1MDAzZXdyX3R4X2NudDtcbiBcdHN0cnVjdCBpYl9zZW5kX3dyICp3cl9pYjtcbiBcdHU2NCB3cl9pZDtcbiYjNDM7XHRERUZJTkVfV0FJVCh3YWl0KTtcbiBcdGludCByYztcbiBcbiBcdCp3cl9idWYgPSBOVUxMO1xuQEAgLTIxMiwxNyAmIzQzOzIxNCwzMSBAQCBpbnQgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3Qoc3RydWN0IHNtY19saW5rICpsaW5rLFxuIFx0XHRpZiAocmMpXG4gXHRcdFx0cmV0dXJuIHJjO1xuIFx0fSBlbHNlIHtcbi1cdFx0cmMgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdGltZW91dChcbi1cdFx0XHRsaW5rLVx1MDAzZXdyX3R4X3dhaXQsXG4tXHRcdFx0IXNtY19saW5rX3NlbmRhYmxlKGxpbmspIHx8XG4tXHRcdFx0bGdyLVx1MDAzZXRlcm1pbmF0aW5nIHx8XG4tXHRcdFx0KHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KGxpbmssIFx1MDAyNmlkeCkgIT0gLUVCVVNZKSxcbi1cdFx0XHRTTUNfV1JfVFhfV0FJVF9GUkVFX1NMT1RfVElNRSk7XG4tXHRcdGlmICghcmMpIHtcbi1cdFx0XHQvKiB0aW1lb3V0IC0gdGVybWluYXRlIGxpbmsgKi9cbi1cdFx0XHRzbWNyX2xpbmtfZG93bl9jb25kX3NjaGVkKGxpbmspO1xuLVx0XHRcdHJldHVybiAtRVBJUEU7XG4mIzQzO1x0XHRyYyA9IDA7XG4mIzQzO1x0XHRmb3IgKDs7KSB7XG4mIzQzO1x0XHRcdHByZXBhcmVfdG9fd2FpdF9leGNsdXNpdmUoXHUwMDI2bGluay1cdTAwM2V3cl90eF93YWl0LCBcdTAwMjZ3YWl0LFxuJiM0MztcdFx0XHRcdFx0XHQgIFRBU0tfSU5URVJSVVBUSUJMRSk7XG4mIzQzO1x0XHRcdGlmICghc21jX2xpbmtfc2VuZGFibGUobGluaykgfHwgbGdyLVx1MDAzZXRlcm1pbmF0aW5nIHx8XG4mIzQzO1x0XHRcdCAgICBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdF9pbmRleChsaW5rLCBcdTAwMjZpZHgpICE9IC1FQlVTWSlcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0dGltZW91dCA9IHNjaGVkdWxlX3RpbWVvdXQodGltZW91dCk7XG4mIzQzO1x0XHRcdC8qIHJlLWNoZWNrICovXG4mIzQzO1x0XHRcdGlmICghc21jX2xpbmtfc2VuZGFibGUobGluaykgfHwgbGdyLVx1MDAzZXRlcm1pbmF0aW5nIHx8XG4mIzQzO1x0XHRcdCAgICBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdF9pbmRleChsaW5rLCBcdTAwMjZpZHgpICE9IC1FQlVTWSlcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0aWYgKCF0aW1lb3V0KSB7XG4mIzQzO1x0XHRcdFx0LyogdGltZW91dCAtIHRlcm1pbmF0ZSBsaW5rICovXG4mIzQzO1x0XHRcdFx0c21jcl9saW5rX2Rvd25fY29uZF9zY2hlZChsaW5rKTtcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0fVxuJiM0MztcdFx0XHRpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpIHtcbiYjNDM7XHRcdFx0XHRyYyA9IC1FUkVTVEFSVFNZUztcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0fVxuIFx0XHR9XG4mIzQzO1x0XHRmaW5pc2hfd2FpdChcdTAwMjZsaW5rLVx1MDAzZXdyX3R4X3dhaXQsIFx1MDAyNndhaXQpO1xuJiM0MztcdFx0aWYgKHJjKVxuJiM0MztcdFx0XHRyZXR1cm4gcmM7XG4gXHRcdGlmIChpZHggPT0gbGluay1cdTAwM2V3cl90eF9jbnQpXG4gXHRcdFx0cmV0dXJuIC1FUElQRTtcbiBcdH1cbkBAIC0yODgsMTAgJiM0MzszMDQsMTAgQEAgaW50IHNtY193cl90eF9wdXRfc2xvdChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4gXHR9IGVsc2UgaWYgKGxpbmstXHUwMDNlbGdyLVx1MDAzZXNtY192ZXJzaW9uID09IFNNQ19WMiBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgcGVuZC1cdTAwM2VpZHggPT0gbGluay1cdTAwM2V3cl90eF9jbnQpIHtcbiBcdFx0LyogTGFyZ2UgdjIgYnVmZmVyICovXG4tXHRcdG1lbXNldChcdTAwMjZsaW5rLVx1MDAzZXdyX3R4X3YyX3BlbmQsIDAsXG4tXHRcdCAgICAgICBzaXplb2YobGluay1cdTAwM2V3cl90eF92Ml9wZW5kKSk7XG4tXHRcdG1lbXNldChcdTAwMjZsaW5rLVx1MDAzZWxnci1cdTAwM2V3cl90eF9idWZfdjIsIDAsXG4tXHRcdCAgICAgICBzaXplb2YobGluay1cdTAwM2VsZ3ItXHUwMDNld3JfdHhfYnVmX3YyKSk7XG4mIzQzO1x0XHRtZW1zZXQobGluay1cdTAwM2V3cl90eF92Ml9wZW5kLCAwLFxuJiM0MztcdFx0ICAgICAgIHNpemVvZigqbGluay1cdTAwM2V3cl90eF92Ml9wZW5kKSk7XG4mIzQzO1x0XHRtZW1zZXQobGluay1cdTAwM2VsZ3ItXHUwMDNld3JfdHhfYnVmX3YyLCAwLFxuJiM0MztcdFx0ICAgICAgIHNpemVvZigqbGluay1cdTAwM2VsZ3ItXHUwMDNld3JfdHhfYnVmX3YyKSk7XG4gXHRcdHJldHVybiAxO1xuIFx0fVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjE5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTTUMmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtY193cl90eF9nZXRfZnJlZV9zbG90JiMzNDssCiAgICAmIzM0O3NtY193cl90eF9wdXRfc2xvdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgd2FpdCBsb2dpYyBpbiBgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RgIGFuZCBmaXhlcyBhIG1lbXNldCBzaXplIGJ1ZyBpbiBgc21jX3dyX3R4X3B1dF9zbG90YC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgU01DIChTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zKSBwcm90b2NvbCBzdWJzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgQUZfU01DIHNvY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjMTdmZmNhYWNkZGJkZmE1OTVhNGI4OWJkNTMxNDZlNjBlOGNkYTJjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgNiAwNzoxOToxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX3dyLmMgYi9uZXQvc21jL3NtY193ci5jCmluZGV4IDU5YzkyYjQ2OTQ1YzUuLjJjZGQ0MDYzYzEzZDYgMTAwNjQ0Ci0tLSBhL25ldC9zbWMvc21jX3dyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfd3IuYwpAQCAtMTk4LDExICYjNDM7MTk4LDEzIEBAIGludCBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssCiAJCQkgICAgc3RydWN0IHNtY19yZG1hX3dyICoqd3JfcmRtYV9idWYsCiAJCQkgICAgc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKip3cl9wZW5kX3ByaXYpCiB7CiYjNDM7CXVuc2lnbmVkIGxvbmcgdGltZW91dCA9IFNNQ19XUl9UWF9XQUlUX0ZSRUVfU0xPVF9USU1FOwogCXN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyID0gc21jX2dldF9sZ3IobGluayk7CiAJc3RydWN0IHNtY193cl90eF9wZW5kICp3cl9wZW5kOwogCXUzMiBpZHggPSBsaW5rLSZndDt3cl90eF9jbnQ7CiAJc3RydWN0IGliX3NlbmRfd3IgKndyX2liOwogCXU2NCB3cl9pZDsKJiM0MzsJREVGSU5FX1dBSVQod2FpdCk7CiAJaW50IHJjOwogCiAJKndyX2J1ZiA9IE5VTEw7CkBAIC0yMTIsMTcgJiM0MzsyMTQsMzEgQEAgaW50IHNtY193cl90eF9nZXRfZnJlZV9zbG90KHN0cnVjdCBzbWNfbGluayAqbGluaywKIAkJaWYgKHJjKQogCQkJcmV0dXJuIHJjOwogCX0gZWxzZSB7Ci0JCXJjID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoCi0JCQlsaW5rLSZndDt3cl90eF93YWl0LAotCQkJIXNtY19saW5rX3NlbmRhYmxlKGxpbmspIHx8Ci0JCQlsZ3ItJmd0O3Rlcm1pbmF0aW5nIHx8Ci0JCQkoc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RfaW5kZXgobGluaywgJmFtcDtpZHgpICE9IC1FQlVTWSksCi0JCQlTTUNfV1JfVFhfV0FJVF9GUkVFX1NMT1RfVElNRSk7Ci0JCWlmICghcmMpIHsKLQkJCS8qIHRpbWVvdXQgLSB0ZXJtaW5hdGUgbGluayAqLwotCQkJc21jcl9saW5rX2Rvd25fY29uZF9zY2hlZChsaW5rKTsKLQkJCXJldHVybiAtRVBJUEU7CiYjNDM7CQlyYyA9IDA7CiYjNDM7CQlmb3IgKDs7KSB7CiYjNDM7CQkJcHJlcGFyZV90b193YWl0X2V4Y2x1c2l2ZSgmYW1wO2xpbmstJmd0O3dyX3R4X3dhaXQsICZhbXA7d2FpdCwKJiM0MzsJCQkJCQkgIFRBU0tfSU5URVJSVVBUSUJMRSk7CiYjNDM7CQkJaWYgKCFzbWNfbGlua19zZW5kYWJsZShsaW5rKSB8fCBsZ3ItJmd0O3Rlcm1pbmF0aW5nIHx8CiYjNDM7CQkJICAgIHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KGxpbmssICZhbXA7aWR4KSAhPSAtRUJVU1kpCiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCXRpbWVvdXQgPSBzY2hlZHVsZV90aW1lb3V0KHRpbWVvdXQpOwomIzQzOwkJCS8qIHJlLWNoZWNrICovCiYjNDM7CQkJaWYgKCFzbWNfbGlua19zZW5kYWJsZShsaW5rKSB8fCBsZ3ItJmd0O3Rlcm1pbmF0aW5nIHx8CiYjNDM7CQkJICAgIHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KGxpbmssICZhbXA7aWR4KSAhPSAtRUJVU1kpCiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCWlmICghdGltZW91dCkgewomIzQzOwkJCQkvKiB0aW1lb3V0IC0gdGVybWluYXRlIGxpbmsgKi8KJiM0MzsJCQkJc21jcl9saW5rX2Rvd25fY29uZF9zY2hlZChsaW5rKTsKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQkJfQomIzQzOwkJCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkgewomIzQzOwkJCQlyYyA9IC1FUkVTVEFSVFNZUzsKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQkJfQogCQl9CiYjNDM7CQlmaW5pc2hfd2FpdCgmYW1wO2xpbmstJmd0O3dyX3R4X3dhaXQsICZhbXA7d2FpdCk7CiYjNDM7CQlpZiAocmMpCiYjNDM7CQkJcmV0dXJuIHJjOwogCQlpZiAoaWR4ID09IGxpbmstJmd0O3dyX3R4X2NudCkKIAkJCXJldHVybiAtRVBJUEU7CiAJfQpAQCAtMjg4LDEwICYjNDM7MzA0LDEwIEBAIGludCBzbWNfd3JfdHhfcHV0X3Nsb3Qoc3RydWN0IHNtY19saW5rICpsaW5rLAogCX0gZWxzZSBpZiAobGluay0mZ3Q7bGdyLSZndDtzbWNfdmVyc2lvbiA9PSBTTUNfVjIgJmFtcDsmYW1wOwogCQkgICBwZW5kLSZndDtpZHggPT0gbGluay0mZ3Q7d3JfdHhfY250KSB7CiAJCS8qIExhcmdlIHYyIGJ1ZmZlciAqLwotCQltZW1zZXQoJmFtcDtsaW5rLSZndDt3cl90eF92Ml9wZW5kLCAwLAotCQkgICAgICAgc2l6ZW9mKGxpbmstJmd0O3dyX3R4X3YyX3BlbmQpKTsKLQkJbWVtc2V0KCZhbXA7bGluay0mZ3Q7bGdyLSZndDt3cl90eF9idWZfdjIsIDAsCi0JCSAgICAgICBzaXplb2YobGluay0mZ3Q7bGdyLSZndDt3cl90eF9idWZfdjIpKTsKJiM0MzsJCW1lbXNldChsaW5rLSZndDt3cl90eF92Ml9wZW5kLCAwLAomIzQzOwkJICAgICAgIHNpemVvZigqbGluay0mZ3Q7d3JfdHhfdjJfcGVuZCkpOwomIzQzOwkJbWVtc2V0KGxpbmstJmd0O2xnci0mZ3Q7d3JfdHhfYnVmX3YyLCAwLAomIzQzOwkJICAgICAgIHNpemVvZigqbGluay0mZ3Q7bGdyLSZndDt3cl90eF9idWZfdjIpKTsKIAkJcmV0dXJuIDE7CiAJfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MTgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTTUMgV3JpdGUgUGF0aCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCBoZXJlIGFmZmVjdGluZyBgbmV0L3NtYy9zbWNfd3IuY2AuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSBhIGNoYW5nZSBpbiBgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RgLiBUaGV5JiMzOTt2ZSBzd2FwcGVkIG91dCBgd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXRgIGZvciBgcHJlcGFyZV90b193YWl0X2V4Y2x1c2l2ZWAgYW5kIGBzY2hlZHVsZV90aW1lb3V0YC4gSG1tLCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBJIHdvbmRlciB3aGF0IHRoZSByYXRpb25hbGUgaXMgYmVoaW5kIHRoYXQuIEl0IGNvdWxkIGJlIGZvciBhIGZldyByZWFzb25zOyBwZXJoYXBzIHRoZXkgYXJlIGxvb2tpbmcgZm9yIG1vcmUgZ3JhbnVsYXIgY29udHJvbCBvdmVyIHRoZSB3YWl0aW5nIG1lY2hhbmlzbSwgb3IgbWF5YmUgdGhlcmUgYXJlIHN1YnRsZSBkaWZmZXJlbmNlcyBpbiB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIHRoYXQgdGhleSBuZWVkLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBkZWVwZXIgdG8gdW5kZXJzdGFuZCB0aGUgcGVyZm9ybWFuY2Ugb3IgY29ycmVjdG5lc3MgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLgoKVGhlbiwgdGhlcmUmIzM5O3MgYSBmaXggZm9yIGBzbWNfd3JfdHhfcHV0X3Nsb3RgLiBUaGV5IGFyZSBmaXhpbmcgYSBgbWVtc2V0YCBpc3N1ZS4gVGhhdCYjMzk7cyBnb29kOyBhbHdheXMgaW1wb3J0YW50IHRvIGNhdGNoIHRob3NlIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MgZWFybHkuIEJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiBJJiMzOTtkIGd1ZXNzIHRoYXQgdGhleSBwYXNzZWQgdGhlIHdyb25nIGFkZHJlc3MgdG8gYG1lbXNldGAsIG9yIGhhZCBhbiBpc3N1ZSB3aXRoIHRoZSBzaXplIG9mIGRhdGEgY29waWVkIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQuIFRoZXNlIGlzc3VlcyBjYW4gYmUgbmFzdHkgdG8gZGVidWcsIHNvIEkmIzM5O20gZ2xhZCB0aGlzIHdhcyBzcG90dGVkLgoKQmVmb3JlIEkgZ28gZnVydGhlciwgSSB3YW50IHRvIGNvbmZpcm0gdGhhdCBTTUMgaXMgYWN0dWFsbHkgZW5hYmxlZC4gQSBxdWljayBsb29rIGF0IGBuZXQvc21jL0tjb25maWdgIHRlbGxzIG1lIHRoYXQgYENPTkZJR19TTUNgIGlzIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9uLCBzbyB0aGF0IGlzIHRoZSBvcHRpb24gSSBuZWVkIHRvIHNlYXJjaCBmb3IuCgpOb3csIGxldCYjMzk7cyBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoZXJlIGVsc2UgdGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIHdpdGhpbiB0aGUga2VybmVsLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIGNvbnRleHQgYW5kIGhvdyB0aGVzZSBjaGFuZ2VzIHJpcHBsZSB0aHJvdWdoIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGdyYXBocyBhbmQgZGVwZW5kZW5jaWVzIHRvIGZ1bGx5IGdyYXNwIHRoZSBzaWduaWZpY2FuY2Ugb2YgdGhlc2UgbW9kaWZpY2F0aW9ucy4gSXTigJlzIGFsd2F5cyBnb29kIHRvIHNlZSB3aGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGRvZXMgdG8ga25vdyB3aGVyZSB0byBleHBlY3QgYW55IGNoYW5nZXMgaW4gYmVoYXZpb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX3dyX3R4X2dldF9mcmVlX3Nsb3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19jZGMuYz03Mz1pbnQgc21jX2NkY19nZXRfZnJlZV9zbG90KHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubixcbi0tXG5uZXQvc21jL3NtY19jZGMuYy04MC1cbm5ldC9zbWMvc21jX2NkYy5jOjgxOlx0cmMgPSBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdChsaW5rLCBzbWNfY2RjX3R4X2hhbmRsZXIsIHdyX2J1Zixcbm5ldC9zbWMvc21jX2NkYy5jLTgyLVx0XHRcdFx0ICAgICB3cl9yZG1hX2J1Zixcbi0tXG5uZXQvc21jL3NtY19sbGMuYz00MDA9c3RhdGljIGludCBzbWNfbGxjX2FkZF9wZW5kaW5nX3NlbmQoc3RydWN0IHNtY19saW5rICpsaW5rLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTQwNS1cbm5ldC9zbWMvc21jX2xsYy5jOjQwNjpcdHJjID0gc21jX3dyX3R4X2dldF9mcmVlX3Nsb3QobGluaywgc21jX2xsY190eF9oYW5kbGVyLCB3cl9idWYsIE5VTEwsXG5uZXQvc21jL3NtY19sbGMuYy00MDctXHRcdFx0XHQgICAgIHBlbmQpO1xuLS1cbm5ldC9zbWMvc21jX3dyLmM9MTYyPXZvaWQgc21jX3dyX3R4X2NxX2hhbmRsZXIoc3RydWN0IGliX2NxICppYl9jcSwgdm9pZCAqY3FfY29udGV4dClcbi0tXG5uZXQvc21jL3NtY193ci5jLTE3MC1cbm5ldC9zbWMvc21jX3dyLmM6MTcxOnN0YXRpYyBpbmxpbmUgaW50IHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KHN0cnVjdCBzbWNfbGluayAqbGluaywgdTMyICppZHgpXG5uZXQvc21jL3NtY193ci5jLTE3Mi17XG4tLVxubmV0L3NtYy9zbWNfd3IuYy0xODQtLyoqXG5uZXQvc21jL3NtY193ci5jOjE4NTogKiBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdCgpIC0gcmV0dXJucyBidWZmZXIgZm9yIG1lc3NhZ2UgYXNzZW1ibHksXG5uZXQvc21jL3NtY193ci5jLTE4Ni0gKlx0XHRcdGFuZCBzZXRzIGluZm8gZm9yIHBlbmRpbmcgdHJhbnNtaXQgdHJhY2tpbmdcbi0tXG5uZXQvc21jL3NtY193ci5jLTE5NC0gKi9cbm5ldC9zbWMvc21jX3dyLmM6MTk1OmludCBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG5uZXQvc21jL3NtY193ci5jLTE5Ni1cdFx0XHQgICAgc21jX3dyX3R4X2hhbmRsZXIgaGFuZGxlcixcbi0tXG5uZXQvc21jL3NtY193ci5jLTIxMi1cdGlmIChpbl9zb2Z0aXJxKCkgfHwgbGdyLVx1MDAzZXRlcm1pbmF0aW5nKSB7XG5uZXQvc21jL3NtY193ci5jOjIxMzpcdFx0cmMgPSBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdF9pbmRleChsaW5rLCBcdTAwMjZpZHgpO1xubmV0L3NtYy9zbWNfd3IuYy0yMTQtXHRcdGlmIChyYylcbi0tXG5uZXQvc21jL3NtY193ci5jLTIyMS1cdFx0XHRpZiAoIXNtY19saW5rX3NlbmRhYmxlKGxpbmspIHx8IGxnci1cdTAwM2V0ZXJtaW5hdGluZyB8fFxubmV0L3NtYy9zbWNfd3IuYzoyMjI6XHRcdFx0ICAgIHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KGxpbmssIFx1MDAyNmlkeCkgIT0gLUVCVVNZKVxubmV0L3NtYy9zbWNfd3IuYy0yMjMtXHRcdFx0XHRicmVhaztcbi0tXG5uZXQvc21jL3NtY193ci5jLTIyNi1cdFx0XHRpZiAoIXNtY19saW5rX3NlbmRhYmxlKGxpbmspIHx8IGxnci1cdTAwM2V0ZXJtaW5hdGluZyB8fFxubmV0L3NtYy9zbWNfd3IuYzoyMjc6XHRcdFx0ICAgIHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KGxpbmssIFx1MDAyNmlkeCkgIT0gLUVCVVNZKVxubmV0L3NtYy9zbWNfd3IuYy0yMjgtXHRcdFx0XHRicmVhaztcbi0tXG5uZXQvc21jL3NtY193ci5oPTExMT12b2lkIHNtY193cl9hZGRfZGV2KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldik7XG5uZXQvc21jL3NtY193ci5oLTExMi1cbm5ldC9zbWMvc21jX3dyLmg6MTEzOmludCBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHNtY193cl90eF9oYW5kbGVyIGhhbmRsZXIsXG5uZXQvc21jL3NtY193ci5oLTExNC1cdFx0XHQgICAgc3RydWN0IHNtY193cl9idWYgKip3cl9idWYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUzNAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipBbmFseXppbmcgdGhlIFNNQyBXcml0ZSBUWCBTbG90IE1hbmFnZW1lbnQqKgoKQWxyaWdodCwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gbWFuYWdpbmcgd3JpdGUgdHJhbnNtaXQgc2xvdHMgd2l0aGluIHRoZSBTTUMgZnJhbWV3b3JrOiBgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RgIGFuZCBgc21jX3dyX3R4X3B1dF9zbG90YC4gU2VlbXMgbGlrZSBhIGNvcmUgYXJlYSwgbGlrZWx5IGltcGFjdGluZyBwZXJmb3JtYW5jZSBhbmQgZmxvdyBjb250cm9sLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB1bmRlcnN0YW5kaW5nICpob3cqIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgdXNlZCBhbmQgKndoeSogdGhlIGNoYW5nZSBpcyBuZWNlc3NhcnkuCgpJIHNlZSB0aGF0IGBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdGAgaXMgY2FsbGVkIGZyb20gYHNtY19jZGNfZ2V0X2ZyZWVfc2xvdGAgYW5kIGBzbWNfbGxjX2FkZF9wZW5kaW5nX3NlbmRgLiBUaGF0JiMzOTtzIGEgc29saWQgc3RhcnQg4oCTIHRoZXNlIG5hbWVzIHRlbGwgbWUgdGhhdCB0aGVzZSBmdW5jdGlvbnMgcmVsYXRlIHRvIHRoZSBDREMgKENvbm5lY3Rpb24gRGVtdWx0aXBsZXhpbmcgQ29udHJvbCkgbGF5ZXIgYW5kIHRoZSBMTEMgKExpbmsgTGF5ZXIgQ29udHJvbCkgcG9zc2libHkgZm9yIHNlbmQgcmVxdWVzdHMuIEkmIzM5O2xsIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHByZWNpc2UgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aG9zZSBjb21wb25lbnRzLCBvZiBjb3Vyc2UuIEZvciBub3csIHRoaXMgcG9pbnRzIHRvIGdldHRpbmcgYSBmcmVlIHNsb3QgZm9yIG91dGdvaW5nIGRhdGEsIGVpdGhlciBhdCB0aGUgQ0RDIG9yIHRoZSBMTEMuCgpOb3csIGxldCYjMzk7cyBzaGlmdCBmb2N1cyB0byBgc21jX3dyX3R4X3B1dF9zbG90YC4gQmVmb3JlIEkgY2FuIGFuYWx5emUgdGhlIGltcGxpY2F0aW9ucywgSSBuZWVkIHRvIGtub3cgdGhlIGNvbnRleHQgb2YgdGhhdCBmdW5jdGlvbiB0byBkZXRlcm1pbmUgaXRzIHBvc3NpYmxlIGVmZmVjdHMuIFRpbWUgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb2RlIHRvIGdldCB0aGF0IGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX3dyX3R4X3B1dF9zbG90JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfY2RjLmM9NzM9aW50IHNtY19jZGNfZ2V0X2ZyZWVfc2xvdChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtODYtXHRcdGlmICghcmMpXG5uZXQvc21jL3NtY19jZGMuYzo4NzpcdFx0XHRzbWNfd3JfdHhfcHV0X3Nsb3QobGluayxcbm5ldC9zbWMvc21jX2NkYy5jLTg4LVx0XHRcdFx0XHQgICAoc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKikoKnBlbmQpKTtcbi0tXG5uZXQvc21jL3NtY19jZGMuYz0xNzQ9c3RhdGljIGludCBzbWNyX2NkY19nZXRfc2xvdF9hbmRfbXNnX3NlbmQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTE5My1cdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Y29ubi1cdTAwM2VzZW5kX2xvY2spO1xubmV0L3NtYy9zbWNfY2RjLmM6MTk0Olx0XHRzbWNfd3JfdHhfcHV0X3Nsb3QobGluayxcbm5ldC9zbWMvc21jX2NkYy5jLTE5NS1cdFx0XHRcdCAgIChzdHJ1Y3Qgc21jX3dyX3R4X3BlbmRfcHJpdiAqKXBlbmQpO1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYz0xMDMzPXN0YXRpYyBpbnQgc21jX3N3aXRjaF9jdXJzb3Ioc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX3R4X3BlbmQgKnBlbmQsXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTEwNzYtXHR9IGVsc2Uge1xubmV0L3NtYy9zbWNfY29yZS5jOjEwNzc6XHRcdHNtY193cl90eF9wdXRfc2xvdChjb25uLVx1MDAzZWxuayxcbm5ldC9zbWMvc21jX2NvcmUuYy0xMDc4LVx0XHRcdFx0ICAgKHN0cnVjdCBzbWNfd3JfdHhfcGVuZF9wcml2ICopcGVuZCk7XG4tLVxubmV0L3NtYy9zbWNfdHguYz01NTA9c3RhdGljIGludCBzbWNyX3R4X3NuZGJ1Zl9ub25lbXB0eShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXG4tLVxubmV0L3NtYy9zbWNfdHguYy01ODEtXHRcdC8qIGxpbmsgb2YgY29ubmVjdGlvbiBjaGFuZ2VkLCB0eF93b3JrIHdpbGwgcmVzdGFydCAqL1xubmV0L3NtYy9zbWNfdHguYzo1ODI6XHRcdHNtY193cl90eF9wdXRfc2xvdChsaW5rLFxubmV0L3NtYy9zbWNfdHguYy01ODMtXHRcdFx0XHQgICAoc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKilwZW5kKTtcbi0tXG5uZXQvc21jL3NtY190eC5jLTU4OS1cdFx0aWYgKHJjKSB7XG5uZXQvc21jL3NtY190eC5jOjU5MDpcdFx0XHRzbWNfd3JfdHhfcHV0X3Nsb3QobGluayxcbm5ldC9zbWMvc21jX3R4LmMtNTkxLVx0XHRcdFx0XHQgICAoc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKilwZW5kKTtcbi0tXG5uZXQvc21jL3NtY193ci5jPTI2MD1pbnQgc21jX3dyX3R4X2dldF92Ml9zbG90KHN0cnVjdCBzbWNfbGluayAqbGluayxcbi0tXG5uZXQvc21jL3NtY193ci5jLTI4Ni1cbm5ldC9zbWMvc21jX3dyLmM6Mjg3OmludCBzbWNfd3JfdHhfcHV0X3Nsb3Qoc3RydWN0IHNtY19saW5rICpsaW5rLFxubmV0L3NtYy9zbWNfd3IuYy0yODgtXHRcdCAgICAgICBzdHJ1Y3Qgc21jX3dyX3R4X3BlbmRfcHJpdiAqd3JfcGVuZF9wcml2KVxuLS1cbm5ldC9zbWMvc21jX3dyLmM9MzIwPWludCBzbWNfd3JfdHhfc2VuZChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfd3JfdHhfcGVuZF9wcml2ICpwcml2KVxuLS1cbm5ldC9zbWMvc21jX3dyLmMtMzI5LVx0aWYgKHJjKSB7XG5uZXQvc21jL3NtY193ci5jOjMzMDpcdFx0c21jX3dyX3R4X3B1dF9zbG90KGxpbmssIHByaXYpO1xubmV0L3NtYy9zbWNfd3IuYy0zMzEtXHRcdHNtY3JfbGlua19kb3duX2NvbmRfc2NoZWQobGluayk7XG4tLVxubmV0L3NtYy9zbWNfd3IuYz0zMzY9aW50IHNtY193cl90eF92Ml9zZW5kKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKnByaXYsXG4tLVxubmV0L3NtYy9zbWNfd3IuYy0zNDUtXHRpZiAocmMpIHtcbm5ldC9zbWMvc21jX3dyLmM6MzQ2Olx0XHRzbWNfd3JfdHhfcHV0X3Nsb3QobGluaywgcHJpdik7XG5uZXQvc21jL3NtY193ci5jLTM0Ny1cdFx0c21jcl9saW5rX2Rvd25fY29uZF9zY2hlZChsaW5rKTtcbi0tXG5uZXQvc21jL3NtY193ci5oPTExNz1pbnQgc21jX3dyX3R4X2dldF92Ml9zbG90KHN0cnVjdCBzbWNfbGluayAqbGluayxcbi0tXG5uZXQvc21jL3NtY193ci5oLTEyMC1cdFx0XHQgIHN0cnVjdCBzbWNfd3JfdHhfcGVuZF9wcml2ICoqd3JfcGVuZF9wcml2KTtcbm5ldC9zbWMvc21jX3dyLmg6MTIxOmludCBzbWNfd3JfdHhfcHV0X3Nsb3Qoc3RydWN0IHNtY19saW5rICpsaW5rLFxubmV0L3NtYy9zbWNfd3IuaC0xMjItXHRcdCAgICAgICBzdHJ1Y3Qgc21jX3dyX3R4X3BlbmRfcHJpdiAqd3JfcGVuZF9wcml2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTY2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTTUMgUHJvdG9jb2wgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdHdlYWtpbmcgYHNtY193cl90eF9nZXRfZnJlZV9zbG90YC4gVGhlIGtleSBoZXJlIGlzIHRoZSBzaGlmdCB0byBgcHJlcGFyZV90b193YWl0X2V4Y2x1c2l2ZWAgYW5kIGBzY2hlZHVsZV90aW1lb3V0YC4gUmlnaHQgYXdheSwgSSByZWNvZ25pemUgdGhpcyBhcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIHRoZSBTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zIChTTUMpIHByb3RvY29sIGltcGxlbWVudGF0aW9uLiBDbGVhcmx5LCB0aGV5JiMzOTtyZSBhaW1pbmcgdG8gaW1wcm92ZSBob3cgdGhlIHN5c3RlbSBoYW5kbGVzIHdhaXRpbmcgZm9yIGZyZWUgc2xvdHMgaW4gdGhlIHNoYXJlZCBtZW1vcnkuIFRoaXMgaXMgc2lnbmlmaWNhbnQ7IGFueSBjaGFuZ2UgdG8gdGhlIHdhaXQgbWVjaGFuaXNtIGNhbiBpbXBhY3QgcGVyZm9ybWFuY2UgYW5kIHJlc3BvbnNpdmVuZXNzLCBlc3BlY2lhbGx5IGluIGhpZ2gtdGhyb3VnaHB1dCBlbnZpcm9ubWVudHMgbGV2ZXJhZ2luZyBBRl9TTUMgc29ja2V0cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4KCkdpdmVuIFNNQyYjMzk7cyByb2xlLCBJIHNob3VsZCBjaGVjayB0aGUgYENPTkZJR19TTUNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBOb3csIGxldCBtZSBxdWlja2x5IG5hdmlnYXRlIHRvIGBuZXQvc21jL0tjb25maWdgIHRvIHBpbnBvaW50IGFueSBkZXBlbmRlbmNpZXMgb3Igb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhvc2Ugd2lsbCBiZSBjcnVjaWFsIGZvciBhc3Nlc3NpbmcgdGhlIGJyb2FkZXIgaW1wYWN0IG9mIHRoaXMgcGF0Y2ggYW5kIGNvbmZpcm1pbmcgd2hldGhlciB0aGVyZSBhcmUgYW55IHBvdGVudGlhbCBjb25mbGljdHMgb3Igc2lkZSBlZmZlY3RzIHdpdGhpbiB0aGUgbmV0d29ya2luZyBzdGFjay4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoaXMgY2hhbmdlIGludGVyYWN0cyB3aXRoIG90aGVyIFNNQy1yZWxhdGVkIGZlYXR1cmVzIGFuZCBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBTTUNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IElORklOSUJBTkQgXHUwMDI2XHUwMDI2IERJQlNcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgU01DLVIgcHJvdmlkZXMgYSBcJiMzNDtzb2NrZXRzIG92ZXIgUkRNQVwmIzM0OyBzb2x1dGlvbiBtYWtpbmcgdXNlIG9mXG4gICA3Olx0XHQgIFJETUEgb3ZlciBDb252ZXJnZWQgRXRoZXJuZXQgKFJvQ0UpIHRlY2hub2xvZ3kgdG8gdXBncmFkZVxuICAgODpcdFx0ICBBRl9JTkVUIFRDUCBjb25uZWN0aW9ucyB0cmFuc3BhcmVudGx5LlxuICAgOTpcdFx0ICBUaGUgTGludXggaW1wbGVtZW50YXRpb24gb2YgdGhlIFNNQy1SIHNvbHV0aW9uIGlzIGRlc2lnbmVkIGFzXG4gIDEwOlx0XHQgIGEgc2VwYXJhdGUgc29ja2V0IGZhbWlseSBTTUMuXG4gIDExOlx0XG4gIDEyOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBydW4gU01DIHNvY2tldCBhcHBsaWNhdGlvbnNcbiAgMTM6XHRcbiAgMTQ6XHRjb25maWcgU01DX0RJQUdcbiAgMTU6XHRcdHRyaXN0YXRlIFwmIzM0O1NNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4gIDE2Olx0XHRkZXBlbmRzIG9uIFNNQ1xuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBTdXBwb3J0IGZvciBTTUMgc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlIHVzZWQgYnkgdG9vbHMgc3VjaCBhc1xuICAxOTpcdFx0ICBzbWNzcy5cbiAgMjA6XHRcbiAgMjE6XHRcdCAgaWYgdW5zdXJlLCBzYXkgWS5cbiAgMjI6XHRcbiAgMjM6XHRjb25maWcgU01DX0hTX0NUUkxfQlBGXG4gIDI0Olx0XHRib29sIFwmIzM0O0dlbmVyaWMgZUJQRiBob29rIGZvciBTTUMgaGFuZHNoYWtlIGZsb3dcJiMzNDtcbiAgMjU6XHRcdGRlcGVuZHMgb24gU01DIFx1MDAyNlx1MDAyNiBCUEZfSklUIFx1MDAyNlx1MDAyNiBCUEZfU1lTQ0FMTFxuICAyNjpcdFx0ZGVmYXVsdCB5XG4gIDI3Olx0XHRoZWxwXG4gIDI4Olx0XHQgIFNNQ19IU19DVFJMX0JQRiBlbmFibGVzIHN1cHBvcnQgdG8gcmVnaXN0ZXIgZ2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQ1xuICAyOTpcdFx0ICBoYW5kc2hha2UgZmxvdywgd2hpY2ggb2ZmZXIgbXVjaCBncmVhdGVyIGZsZXhpYmlsaXR5IGluIG1vZGlmeWluZyB0aGUgYmVoYXZpb3JcbiAgMzA6XHRcdCAgb2YgdGhlIFNNQyBwcm90b2NvbCBzdGFjayBjb21wYXJlZCB0byBhIGNvbXBsZXRlIGtlcm5lbC1iYXNlZCBhcHByb2FjaC4gU2VsZWN0XG4gIDMxOlx0XHQgIHRoaXMgb3B0aW9uIGlmIHlvdSB3YW50IGZpbHRyaW5nIHRoZSBoYW5kc2hha2UgcHJvY2VzcyB2aWEgZUJQRiBwcm9ncmFtcy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTY5CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNTI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU01DLVcgQ29uZmlndXJhdGlvbiBhbmQgRnVuY3Rpb25hbCBDaGFuZ2VzKioKCk9rYXksIHNvIGluaXRpYWxseSBJIHdhcyB0aHJvd24gb2ZmIGJ5IHdoYXQgSSAqdGhvdWdodCogSSBzYXcgcmVnYXJkaW5nIGRlcGVuZGVuY2llcy4gSSBrZXB0IHNlY29uZC1ndWVzc2luZyBteXNlbGYgd2l0aCB0aGF0ICYjMzQ7RElCUyYjMzQ7IHRoaW5nLCB0aGlua2luZyBJIHNhdyBpdCBpbiB0aGUgZGVwZW5kZW5jaWVzLiBCdXQgYWZ0ZXIgcmUtcmVhZGluZyB0aGUgc291cmNlIGZpbGUgYW5kIGRvdWJsZS1jaGVja2luZyB0aGUgb3V0cHV0LCB0aGUgY29ycmVjdCBkZXBlbmRlbmN5IGlzIGNsZWFybHkganVzdCBgSU5FVCAmYW1wOyZhbXA7IElORklOSUJBTkRgLiBJIGNsZWFybHkgbWlzcmVhZCB0aGF0IGxpbmUg4oCTIGl0JiMzOTtzIGRlZmluaXRlbHkgYElORVQgJmFtcDsmYW1wOyBJTkZJTklCQU5EYCwgbm90IGBJTkVUICZhbXA7JmFtcDsgSU5GSU5JQkFORCAmYW1wOyZhbXA7IERJQlNgLiBUaGF0IHdhcyBhIGJyaWVmIG1vbWVudCBvZiBjb25mdXNpb24gdGhlcmUuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBgSU5GSU5JQkFORGAgY29uZmlndXJhdGlvbi4gSSByZW1lbWJlciB0aGF0JiMzOTtzIGluIGBkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZ2AsIHNvIEkmIzM5O2xsIGNoZWNrIHRoYXQgdG8gY29uZmlybS4gUmlnaHQsIHNvIHdlIG5lZWQgYENPTkZJR19TTUNgIGFuZCBgQ09ORklHX0lORklOSUJBTkRgLgoKTW92aW5nIG9uLCB0aGUgcGF0Y2ggaXMgZm9jdXNlZCBvbiBtb2RpZnlpbmcgYHNtY193cl90eF9nZXRfZnJlZV9zbG90YCBhbmQgYHNtY193cl90eF9wdXRfc2xvdGAuIFRoZXNlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucywgdGhlIGZ1bmN0aW9uYWwgY2hhbmdlcy4gT2theSwgbGV0JiMzOTtzIHNlZSB3aGVyZSB0aGV5IGFyZSB1c2VkLiBgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RgIGlzIGNhbGxlZCBmcm9tIGBzbWNfY2RjX2dldF9mcmVlX3Nsb3RgIGFuZCBgc21jX2xsY19hZGRfcGVuZGluZ19zZW5kYC4gQW5kLCBgc21jX3dyX3R4X3B1dF9zbG90YCBpcyBjYWxsZWQgYnkgYSBtdWNoIGxhcmdlciBzZXQgb2YgZnVuY3Rpb25zOiBgc21jX2NkY19nZXRfZnJlZV9zbG90YCwgYHNtY3JfY2RjX2dldF9zbG90X2FuZF9tc2dfc2VuZGAsIGBzbWNfc3dpdGNoX2N1cnNvcmAsIGBzbWNyX3R4X3NuZGJ1Zl9ub25lbXB0eWAsIGBzbWNfd3JfdHhfc2VuZGAsIGFuZCBgc21jX3dyX3R4X3YyX3NlbmRgLgoKR2l2ZW4gdGhlaXIgaW1wb3J0YW5jZSBhbmQgdGhhdCB0aGVzZSBhcmUgZXhwb3J0ZWQgZnVuY3Rpb25zLCBJIGNhbiB1c2UgdGhlbSBhcyBGb2N1c1N5bWJvbHMuIFdhaXQsIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IGBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdGAgaXMgYWN0dWFsbHkgZXhwb3J0ZWQuIEkmIzM5O2xsIGNvbmZpcm0gdGhhdCBpbiBgbmV0L3NtYy9zbWNfd3IuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qc21jX3dyX3R4X2dldF9mcmVlX3Nsb3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5OTMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFNNQyBTdWJzeXN0ZW0gTWVtb3J5IE1hbmFnZW1lbnQqKgoKT2theSwgc28gdGhlc2UgdmFyaWFibGVzIGFyZW4mIzM5O3QgZGVmaW5lZCBhcyBgc3RhdGljYCwgYnV0IHRoZXkmIzM5O3JlIHN0aWxsIHVzZWQgaW50ZXJuYWxseSB3aXRoaW4gdGhlIFNNQyBzdWJzeXN0ZW0sIG5vdCBleHBvcnRlZCB0byBtb2R1bGVzLiBUaGF0JiMzOTtzIGEga2V5IHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhleSYjMzk7cmUgYmVpbmcgbWFuYWdlZC4gTGV0IG1lIGNvbmZpcm0gdGhhdCB0aGV5ICphcmVuJiMzOTt0KiBkZWNsYXJlZCBhcyBgc3RhdGljYC4gUmlnaHQsIEkgY2FuIHNlZSB0aGF0IGluIHRoZSBjb2RlLgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCBwb3RlbnRpYWxseSBiZXR0ZXIgZW50cnkgcG9pbnRzIHRvIHVuZGVyc3RhbmQgdGhlIHVzYWdlIHBhdHRlcm4uIE1heWJlIGBzbWNfY2RjX2dldF9mcmVlX3Nsb3RgIG9yIGBzbWNfbGxjX2FkZF9wZW5kaW5nX3NlbmRgPyBOb3BlLCBpdCBsb29rcyBsaWtlIGBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdGAgaXMgYWN0dWFsbHkgYSBnb29kIHBsYWNlIHRvIGNlbnRlciB0aGlzIGludmVzdGlnYXRpb24uIFNhbWUgZ29lcyBmb3IgYHNtY193cl90eF9wdXRfc2xvdGAuCgpBbHJpZ2h0LCBJIHNob3VsZCB2ZXJpZnkgdGhhdCB0aGUgYFNNQ2AgZmFtaWx5IGlzIHJlYWNoYWJsZS4gWWVzLCBpdCYjMzk7cyBhIHNvY2tldCBmYW1pbHksIHRoYXQgbWFrZXMgc2Vuc2UuIExldCBtZSB0YWtlIG5vdGUgb2YgdGhlIGNvbmZpZyBvcHRpb25zIHJlbGF0ZWQgdG8gU01DIGFuZCBJbmZpbmliYW5kLgoKTm93LCBJJiMzOTttIGdvaW5nIHRvIGRvdWJsZS1jaGVjayB0aGUgY2FsbGVycyBvZiBgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RgIHRvIGdldCBhIG1vcmUgY29tcHJlaGVuc2l2ZSB2aWV3IG9mIGhvdyBpdCYjMzk7cyBiZWluZyB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2NkYy5jPTczPWludCBzbWNfY2RjX2dldF9mcmVlX3Nsb3Qoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLFxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTgwLVxubmV0L3NtYy9zbWNfY2RjLmM6ODE6XHRyYyA9IHNtY193cl90eF9nZXRfZnJlZV9zbG90KGxpbmssIHNtY19jZGNfdHhfaGFuZGxlciwgd3JfYnVmLFxubmV0L3NtYy9zbWNfY2RjLmMtODItXHRcdFx0XHQgICAgIHdyX3JkbWFfYnVmLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTQwMD1zdGF0aWMgaW50IHNtY19sbGNfYWRkX3BlbmRpbmdfc2VuZChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtNDA1LVxubmV0L3NtYy9zbWNfbGxjLmM6NDA2Olx0cmMgPSBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdChsaW5rLCBzbWNfbGxjX3R4X2hhbmRsZXIsIHdyX2J1ZiwgTlVMTCxcbm5ldC9zbWMvc21jX2xsYy5jLTQwNy1cdFx0XHRcdCAgICAgcGVuZCk7XG4tLVxubmV0L3NtYy9zbWNfd3IuYz0xNjI9dm9pZCBzbWNfd3JfdHhfY3FfaGFuZGxlcihzdHJ1Y3QgaWJfY3EgKmliX2NxLCB2b2lkICpjcV9jb250ZXh0KVxuLS1cbm5ldC9zbWMvc21jX3dyLmMtMTcwLVxubmV0L3NtYy9zbWNfd3IuYzoxNzE6c3RhdGljIGlubGluZSBpbnQgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RfaW5kZXgoc3RydWN0IHNtY19saW5rICpsaW5rLCB1MzIgKmlkeClcbm5ldC9zbWMvc21jX3dyLmMtMTcyLXtcbi0tXG5uZXQvc21jL3NtY193ci5jLTE4NC0vKipcbm5ldC9zbWMvc21jX3dyLmM6MTg1OiAqIHNtY193cl90eF9nZXRfZnJlZV9zbG90KCkgLSByZXR1cm5zIGJ1ZmZlciBmb3IgbWVzc2FnZSBhc3NlbWJseSxcbm5ldC9zbWMvc21jX3dyLmMtMTg2LSAqXHRcdFx0YW5kIHNldHMgaW5mbyBmb3IgcGVuZGluZyB0cmFuc21pdCB0cmFja2luZ1xuLS1cbm5ldC9zbWMvc21jX3dyLmMtMTk0LSAqL1xubmV0L3NtYy9zbWNfd3IuYzoxOTU6aW50IHNtY193cl90eF9nZXRfZnJlZV9zbG90KHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX3dyLmMtMTk2LVx0XHRcdCAgICBzbWNfd3JfdHhfaGFuZGxlciBoYW5kbGVyLFxuLS1cbm5ldC9zbWMvc21jX3dyLmMtMjEyLVx0aWYgKGluX3NvZnRpcnEoKSB8fCBsZ3ItXHUwMDNldGVybWluYXRpbmcpIHtcbm5ldC9zbWMvc21jX3dyLmM6MjEzOlx0XHRyYyA9IHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KGxpbmssIFx1MDAyNmlkeCk7XG5uZXQvc21jL3NtY193ci5jLTIxNC1cdFx0aWYgKHJjKVxuLS1cbm5ldC9zbWMvc21jX3dyLmMtMjIxLVx0XHRcdGlmICghc21jX2xpbmtfc2VuZGFibGUobGluaykgfHwgbGdyLVx1MDAzZXRlcm1pbmF0aW5nIHx8XG5uZXQvc21jL3NtY193ci5jOjIyMjpcdFx0XHQgICAgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RfaW5kZXgobGluaywgXHUwMDI2aWR4KSAhPSAtRUJVU1kpXG5uZXQvc21jL3NtY193ci5jLTIyMy1cdFx0XHRcdGJyZWFrO1xuLS1cbm5ldC9zbWMvc21jX3dyLmMtMjI2LVx0XHRcdGlmICghc21jX2xpbmtfc2VuZGFibGUobGluaykgfHwgbGdyLVx1MDAzZXRlcm1pbmF0aW5nIHx8XG5uZXQvc21jL3NtY193ci5jOjIyNzpcdFx0XHQgICAgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RfaW5kZXgobGluaywgXHUwMDI2aWR4KSAhPSAtRUJVU1kpXG5uZXQvc21jL3NtY193ci5jLTIyOC1cdFx0XHRcdGJyZWFrO1xuLS1cbm5ldC9zbWMvc21jX3dyLmg9MTExPXZvaWQgc21jX3dyX2FkZF9kZXYoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KTtcbm5ldC9zbWMvc21jX3dyLmgtMTEyLVxubmV0L3NtYy9zbWNfd3IuaDoxMTM6aW50IHNtY193cl90eF9nZXRfZnJlZV9zbG90KHN0cnVjdCBzbWNfbGluayAqbGluaywgc21jX3dyX3R4X2hhbmRsZXIgaGFuZGxlcixcbm5ldC9zbWMvc21jX3dyLmgtMTE0LVx0XHRcdCAgICBzdHJ1Y3Qgc21jX3dyX2J1ZiAqKndyX2J1ZixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTUzOAoJCQkJCQkJb3V0cHV0OiAxMzMKCQkJCQkJCXRob3VnaHRzOiAyMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUmVjZW50IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUuIEl0IGxvb2tzIGxpa2UgaXQgYWRkcmVzc2VzIGEgY291cGxlIG9mIGJ1Z3Mgd2l0aGluIHRoZSBTTUMgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGZ1bmN0aW9ucyBgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RgIGFuZCBgc21jX3dyX3R4X3B1dF9zbG90YC4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIGBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdGAgaXMgYmVpbmcgdXBkYXRlZCB0byB1c2UgYSBtYW51YWwgd2FpdCBsb29wIHdpdGggYHByZXBhcmVfdG9fd2FpdF9leGNsdXNpdmVgIGFuZCBgc2NoZWR1bGVfdGltZW91dGAsIHJlcGxhY2luZyBgd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXRgLiBUaGUgb3RoZXIgZnVuY3Rpb24sIGBzbWNfd3JfdHhfcHV0X3Nsb3RgLCBoYXMgYSBmaXggcmVsYXRlZCB0byB0aGUgc2l6ZSBhcmd1bWVudCBvZiBgbWVtc2V0YC4gVGhlc2UgYXJlIGNvcmUgZnVuY3Rpb25hbCBhZGp1c3RtZW50cywgbm90aGluZyB0cml2aWFsIGhlcmUuCgpUaGlzIHdhcnJhbnRzIHNvbWUgc2VyaW91cyBhdHRlbnRpb24uIFNpbmNlIGl0JiMzOTtzIGNoYW5naW5nIGNvcmUgZnVuY3Rpb25hbGl0eSwgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgaXMgc2V0IHRvIFRydWUuIEFuZCwgSSBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgY2hhbmdlcyB0byBgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RgIGFuZCBgc21jX3dyX3R4X3B1dF9zbG90YC4KCk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29uZmlndXJhdGlvbnMgYXJlIGFmZmVjdGVkLiBUaGUgcGF0Y2ggc3BlY2lmaWVzIGBFbmFibGVDb25maWdzOiBTTUMsIElORklOSUJBTkRgLiBCdXQgSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueXRoaW5nLiBMZXQmIzM5O3Mgc2VlIGlmIGBJTkZJTklCQU5EYCBpcyBhY3R1YWxseSBuZWVkZWQgdG8gY29tcGlsZSBTTUM/IFllcCwgYGRlcGVuZHMgb24gSU5FVCAmYW1wOyZhbXA7IElORklOSUJBTkRgLiBTaW5jZSBgSU5FVGAgaXMgc3RhbmRhcmQsIGBTTUNgIGFuZCBgSU5GSU5JQkFORGAgYXJlIHRoZSBuZWNlc3NhcnkgY29uZmlncy4KClJpZ2h0LCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IGBTTUNgIGFuZCBgSU5GSU5JQkFORGAgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgaGVyZS4gSSYjMzk7bGwgbmVlZCB0byBydW4gdGVzdHMgd2l0aCB0aGVzZSBlbmFibGVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGltcGFjdC4gSSBhbSByZWFkeSB0byBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U01DJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdCYjMzQ7LAogICAgJiMzNDtzbWNfd3JfdHhfcHV0X3Nsb3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdhaXQgbG9naWMgaW4gYHNtY193cl90eF9nZXRfZnJlZV9zbG90YCBhbmQgZml4ZXMgYSBtZW1zZXQgc2l6ZSBidWcgaW4gYHNtY193cl90eF9wdXRfc2xvdGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIFNNQyAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykgcHJvdG9jb2wgc3Vic3lzdGVtLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIEFGX1NNQyBzb2NrZXRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTTUMmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtY193cl90eF9nZXRfZnJlZV9zbG90JiMzNDssCiAgICAmIzM0O3NtY193cl90eF9wdXRfc2xvdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgd2FpdCBsb2dpYyBpbiBgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RgIGFuZCBmaXhlcyBhIG1lbXNldCBzaXplIGJ1ZyBpbiBgc21jX3dyX3R4X3B1dF9zbG90YC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgU01DIChTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zKSBwcm90b2NvbCBzdWJzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgQUZfU01DIHNvY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzoxOToxNi45NzM0OTMzMjdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTgzNDEwNzI4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIklORklOSUJBTkRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdFwiLFxuICAgIFwic21jX3dyX3R4X3B1dF9zbG90XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdhaXQgbG9naWMgaW4gYHNtY193cl90eF9nZXRfZnJlZV9zbG90YCBhbmQgZml4ZXMgYSBtZW1zZXQgc2l6ZSBidWcgaW4gYHNtY193cl90eF9wdXRfc2xvdGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIFNNQyAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykgcHJvdG9jb2wgc3Vic3lzdGVtLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIEFGX1NNQyBzb2NrZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzoxOToxNi45NzM0OTk2NzhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDMyMTQyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGMxN2ZmY2FhY2RkYmRmYTU5NWE0Yjg5YmQ1MzE0NmU2MGU4Y2RhMmNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgNiAwNzoxOToxNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY193ci5jIGIvbmV0L3NtYy9zbWNfd3IuY1xcbmluZGV4IDU5YzkyYjQ2OTQ1YzUuLjJjZGQ0MDYzYzEzZDYgMTAwNjQ0XFxuLS0tIGEvbmV0L3NtYy9zbWNfd3IuY1xcbisrKyBiL25ldC9zbWMvc21jX3dyLmNcXG5AQCAtMTk4LDExICsxOTgsMTMgQEAgaW50IHNtY193cl90eF9nZXRfZnJlZV9zbG90KHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4gXFx0XFx0XFx0ICAgIHN0cnVjdCBzbWNfcmRtYV93ciAqKndyX3JkbWFfYnVmLFxcbiBcXHRcXHRcXHQgICAgc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKip3cl9wZW5kX3ByaXYpXFxuIHtcXG4rXFx0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gU01DX1dSX1RYX1dBSVRfRlJFRV9TTE9UX1RJTUU7XFxuIFxcdHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyID0gc21jX2dldF9sZ3IobGluayk7XFxuIFxcdHN0cnVjdCBzbWNfd3JfdHhfcGVuZCAqd3JfcGVuZDtcXG4gXFx0dTMyIGlkeCA9IGxpbmstXFx1MDAzZXdyX3R4X2NudDtcXG4gXFx0c3RydWN0IGliX3NlbmRfd3IgKndyX2liO1xcbiBcXHR1NjQgd3JfaWQ7XFxuK1xcdERFRklORV9XQUlUKHdhaXQpO1xcbiBcXHRpbnQgcmM7XFxuIFxcbiBcXHQqd3JfYnVmID0gTlVMTDtcXG5AQCAtMjEyLDE3ICsyMTQsMzEgQEAgaW50IHNtY193cl90eF9nZXRfZnJlZV9zbG90KHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4gXFx0XFx0aWYgKHJjKVxcbiBcXHRcXHRcXHRyZXR1cm4gcmM7XFxuIFxcdH0gZWxzZSB7XFxuLVxcdFxcdHJjID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoXFxuLVxcdFxcdFxcdGxpbmstXFx1MDAzZXdyX3R4X3dhaXQsXFxuLVxcdFxcdFxcdCFzbWNfbGlua19zZW5kYWJsZShsaW5rKSB8fFxcbi1cXHRcXHRcXHRsZ3ItXFx1MDAzZXRlcm1pbmF0aW5nIHx8XFxuLVxcdFxcdFxcdChzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdF9pbmRleChsaW5rLCBcXHUwMDI2aWR4KSAhPSAtRUJVU1kpLFxcbi1cXHRcXHRcXHRTTUNfV1JfVFhfV0FJVF9GUkVFX1NMT1RfVElNRSk7XFxuLVxcdFxcdGlmICghcmMpIHtcXG4tXFx0XFx0XFx0LyogdGltZW91dCAtIHRlcm1pbmF0ZSBsaW5rICovXFxuLVxcdFxcdFxcdHNtY3JfbGlua19kb3duX2NvbmRfc2NoZWQobGluayk7XFxuLVxcdFxcdFxcdHJldHVybiAtRVBJUEU7XFxuK1xcdFxcdHJjID0gMDtcXG4rXFx0XFx0Zm9yICg7Oykge1xcbitcXHRcXHRcXHRwcmVwYXJlX3RvX3dhaXRfZXhjbHVzaXZlKFxcdTAwMjZsaW5rLVxcdTAwM2V3cl90eF93YWl0LCBcXHUwMDI2d2FpdCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICBUQVNLX0lOVEVSUlVQVElCTEUpO1xcbitcXHRcXHRcXHRpZiAoIXNtY19saW5rX3NlbmRhYmxlKGxpbmspIHx8IGxnci1cXHUwMDNldGVybWluYXRpbmcgfHxcXG4rXFx0XFx0XFx0ICAgIHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KGxpbmssIFxcdTAwMjZpZHgpICE9IC1FQlVTWSlcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdHRpbWVvdXQgPSBzY2hlZHVsZV90aW1lb3V0KHRpbWVvdXQpO1xcbitcXHRcXHRcXHQvKiByZS1jaGVjayAqL1xcbitcXHRcXHRcXHRpZiAoIXNtY19saW5rX3NlbmRhYmxlKGxpbmspIHx8IGxnci1cXHUwMDNldGVybWluYXRpbmcgfHxcXG4rXFx0XFx0XFx0ICAgIHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KGxpbmssIFxcdTAwMjZpZHgpICE9IC1FQlVTWSlcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdGlmICghdGltZW91dCkge1xcbitcXHRcXHRcXHRcXHQvKiB0aW1lb3V0IC0gdGVybWluYXRlIGxpbmsgKi9cXG4rXFx0XFx0XFx0XFx0c21jcl9saW5rX2Rvd25fY29uZF9zY2hlZChsaW5rKTtcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdH1cXG4rXFx0XFx0XFx0aWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSB7XFxuK1xcdFxcdFxcdFxcdHJjID0gLUVSRVNUQVJUU1lTO1xcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuK1xcdFxcdGZpbmlzaF93YWl0KFxcdTAwMjZsaW5rLVxcdTAwM2V3cl90eF93YWl0LCBcXHUwMDI2d2FpdCk7XFxuK1xcdFxcdGlmIChyYylcXG4rXFx0XFx0XFx0cmV0dXJuIHJjO1xcbiBcXHRcXHRpZiAoaWR4ID09IGxpbmstXFx1MDAzZXdyX3R4X2NudClcXG4gXFx0XFx0XFx0cmV0dXJuIC1FUElQRTtcXG4gXFx0fVxcbkBAIC0yODgsMTAgKzMwNCwxMCBAQCBpbnQgc21jX3dyX3R4X3B1dF9zbG90KHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4gXFx0fSBlbHNlIGlmIChsaW5rLVxcdTAwM2VsZ3ItXFx1MDAzZXNtY192ZXJzaW9uID09IFNNQ19WMiBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICBwZW5kLVxcdTAwM2VpZHggPT0gbGluay1cXHUwMDNld3JfdHhfY250KSB7XFxuIFxcdFxcdC8qIExhcmdlIHYyIGJ1ZmZlciAqL1xcbi1cXHRcXHRtZW1zZXQoXFx1MDAyNmxpbmstXFx1MDAzZXdyX3R4X3YyX3BlbmQsIDAsXFxuLVxcdFxcdCAgICAgICBzaXplb2YobGluay1cXHUwMDNld3JfdHhfdjJfcGVuZCkpO1xcbi1cXHRcXHRtZW1zZXQoXFx1MDAyNmxpbmstXFx1MDAzZWxnci1cXHUwMDNld3JfdHhfYnVmX3YyLCAwLFxcbi1cXHRcXHQgICAgICAgc2l6ZW9mKGxpbmstXFx1MDAzZWxnci1cXHUwMDNld3JfdHhfYnVmX3YyKSk7XFxuK1xcdFxcdG1lbXNldChsaW5rLVxcdTAwM2V3cl90eF92Ml9wZW5kLCAwLFxcbitcXHRcXHQgICAgICAgc2l6ZW9mKCpsaW5rLVxcdTAwM2V3cl90eF92Ml9wZW5kKSk7XFxuK1xcdFxcdG1lbXNldChsaW5rLVxcdTAwM2VsZ3ItXFx1MDAzZXdyX3R4X2J1Zl92MiwgMCxcXG4rXFx0XFx0ICAgICAgIHNpemVvZigqbGluay1cXHUwMDNlbGdyLVxcdTAwM2V3cl90eF9idWZfdjIpKTtcXG4gXFx0XFx0cmV0dXJuIDE7XFxuIFxcdH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjE5OjE3LjQxNDYwNTI3NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM1MzkyOTg0NTc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNNQ1wiLFxuICAgIFwiSU5GSU5JQkFORFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNtY193cl90eF9nZXRfZnJlZV9zbG90XCIsXG4gICAgXCJzbWNfd3JfdHhfcHV0X3Nsb3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgd2FpdCBsb2dpYyBpbiBgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RgIGFuZCBmaXhlcyBhIG1lbXNldCBzaXplIGJ1ZyBpbiBgc21jX3dyX3R4X3B1dF9zbG90YC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgU01DIChTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zKSBwcm90b2NvbCBzdWJzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgQUZfU01DIHNvY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGMxN2ZmY2FhY2RkYmRmYTU5NWE0Yjg5YmQ1MzE0NmU2MGU4Y2RhMmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyA2IDA3OjE5OjE2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfd3IuYyBiL25ldC9zbWMvc21jX3dyLmNcbmluZGV4IDU5YzkyYjQ2OTQ1YzUuLjJjZGQ0MDYzYzEzZDYgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY193ci5jXG4rKysgYi9uZXQvc21jL3NtY193ci5jXG5AQCAtMTk4LDExICsxOTgsMTMgQEAgaW50IHNtY193cl90eF9nZXRfZnJlZV9zbG90KHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcdFx0XHQgICAgc3RydWN0IHNtY19yZG1hX3dyICoqd3JfcmRtYV9idWYsXG4gXHRcdFx0ICAgIHN0cnVjdCBzbWNfd3JfdHhfcGVuZF9wcml2ICoqd3JfcGVuZF9wcml2KVxuIHtcbitcdHVuc2lnbmVkIGxvbmcgdGltZW91dCA9IFNNQ19XUl9UWF9XQUlUX0ZSRUVfU0xPVF9USU1FO1xuIFx0c3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IgPSBzbWNfZ2V0X2xncihsaW5rKTtcbiBcdHN0cnVjdCBzbWNfd3JfdHhfcGVuZCAqd3JfcGVuZDtcbiBcdHUzMiBpZHggPSBsaW5rLVx1MDAzZXdyX3R4X2NudDtcbiBcdHN0cnVjdCBpYl9zZW5kX3dyICp3cl9pYjtcbiBcdHU2NCB3cl9pZDtcbitcdERFRklORV9XQUlUKHdhaXQpO1xuIFx0aW50IHJjO1xuIFxuIFx0KndyX2J1ZiA9IE5VTEw7XG5AQCAtMjEyLDE3ICsyMTQsMzEgQEAgaW50IHNtY193cl90eF9nZXRfZnJlZV9zbG90KHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcdFx0aWYgKHJjKVxuIFx0XHRcdHJldHVybiByYztcbiBcdH0gZWxzZSB7XG4tXHRcdHJjID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoXG4tXHRcdFx0bGluay1cdTAwM2V3cl90eF93YWl0LFxuLVx0XHRcdCFzbWNfbGlua19zZW5kYWJsZShsaW5rKSB8fFxuLVx0XHRcdGxnci1cdTAwM2V0ZXJtaW5hdGluZyB8fFxuLVx0XHRcdChzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdF9pbmRleChsaW5rLCBcdTAwMjZpZHgpICE9IC1FQlVTWSksXG4tXHRcdFx0U01DX1dSX1RYX1dBSVRfRlJFRV9TTE9UX1RJTUUpO1xuLVx0XHRpZiAoIXJjKSB7XG4tXHRcdFx0LyogdGltZW91dCAtIHRlcm1pbmF0ZSBsaW5rICovXG4tXHRcdFx0c21jcl9saW5rX2Rvd25fY29uZF9zY2hlZChsaW5rKTtcbi1cdFx0XHRyZXR1cm4gLUVQSVBFO1xuK1x0XHRyYyA9IDA7XG4rXHRcdGZvciAoOzspIHtcbitcdFx0XHRwcmVwYXJlX3RvX3dhaXRfZXhjbHVzaXZlKFx1MDAyNmxpbmstXHUwMDNld3JfdHhfd2FpdCwgXHUwMDI2d2FpdCxcbitcdFx0XHRcdFx0XHQgIFRBU0tfSU5URVJSVVBUSUJMRSk7XG4rXHRcdFx0aWYgKCFzbWNfbGlua19zZW5kYWJsZShsaW5rKSB8fCBsZ3ItXHUwMDNldGVybWluYXRpbmcgfHxcbitcdFx0XHQgICAgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RfaW5kZXgobGluaywgXHUwMDI2aWR4KSAhPSAtRUJVU1kpXG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHR0aW1lb3V0ID0gc2NoZWR1bGVfdGltZW91dCh0aW1lb3V0KTtcbitcdFx0XHQvKiByZS1jaGVjayAqL1xuK1x0XHRcdGlmICghc21jX2xpbmtfc2VuZGFibGUobGluaykgfHwgbGdyLVx1MDAzZXRlcm1pbmF0aW5nIHx8XG4rXHRcdFx0ICAgIHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KGxpbmssIFx1MDAyNmlkeCkgIT0gLUVCVVNZKVxuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdFx0aWYgKCF0aW1lb3V0KSB7XG4rXHRcdFx0XHQvKiB0aW1lb3V0IC0gdGVybWluYXRlIGxpbmsgKi9cbitcdFx0XHRcdHNtY3JfbGlua19kb3duX2NvbmRfc2NoZWQobGluayk7XG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHR9XG4rXHRcdFx0aWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSB7XG4rXHRcdFx0XHRyYyA9IC1FUkVTVEFSVFNZUztcbitcdFx0XHRcdGJyZWFrO1xuK1x0XHRcdH1cbiBcdFx0fVxuK1x0XHRmaW5pc2hfd2FpdChcdTAwMjZsaW5rLVx1MDAzZXdyX3R4X3dhaXQsIFx1MDAyNndhaXQpO1xuK1x0XHRpZiAocmMpXG4rXHRcdFx0cmV0dXJuIHJjO1xuIFx0XHRpZiAoaWR4ID09IGxpbmstXHUwMDNld3JfdHhfY250KVxuIFx0XHRcdHJldHVybiAtRVBJUEU7XG4gXHR9XG5AQCAtMjg4LDEwICszMDQsMTAgQEAgaW50IHNtY193cl90eF9wdXRfc2xvdChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4gXHR9IGVsc2UgaWYgKGxpbmstXHUwMDNlbGdyLVx1MDAzZXNtY192ZXJzaW9uID09IFNNQ19WMiBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgcGVuZC1cdTAwM2VpZHggPT0gbGluay1cdTAwM2V3cl90eF9jbnQpIHtcbiBcdFx0LyogTGFyZ2UgdjIgYnVmZmVyICovXG4tXHRcdG1lbXNldChcdTAwMjZsaW5rLVx1MDAzZXdyX3R4X3YyX3BlbmQsIDAsXG4tXHRcdCAgICAgICBzaXplb2YobGluay1cdTAwM2V3cl90eF92Ml9wZW5kKSk7XG4tXHRcdG1lbXNldChcdTAwMjZsaW5rLVx1MDAzZWxnci1cdTAwM2V3cl90eF9idWZfdjIsIDAsXG4tXHRcdCAgICAgICBzaXplb2YobGluay1cdTAwM2VsZ3ItXHUwMDNld3JfdHhfYnVmX3YyKSk7XG4rXHRcdG1lbXNldChsaW5rLVx1MDAzZXdyX3R4X3YyX3BlbmQsIDAsXG4rXHRcdCAgICAgICBzaXplb2YoKmxpbmstXHUwMDNld3JfdHhfdjJfcGVuZCkpO1xuK1x0XHRtZW1zZXQobGluay1cdTAwM2VsZ3ItXHUwMDNld3JfdHhfYnVmX3YyLCAwLFxuK1x0XHQgICAgICAgc2l6ZW9mKCpsaW5rLVx1MDAzZWxnci1cdTAwM2V3cl90eF9idWZfdjIpKTtcbiBcdFx0cmV0dXJuIDE7XG4gXHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzoxOToxNy40MTQ2MDY3MDVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDk3MzU0OTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU01DIFdyaXRlIFBhdGggUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgYWZmZWN0aW5nIGBuZXQvc21jL3NtY193ci5jYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIGEgY2hhbmdlIGluIGBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdGAuIFRoZXkndmUgc3dhcHBlZCBvdXQgYHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZV90aW1lb3V0YCBmb3IgYHByZXBhcmVfdG9fd2FpdF9leGNsdXNpdmVgIGFuZCBgc2NoZWR1bGVfdGltZW91dGAuIEhtbSwgdGhhdCdzIGludGVyZXN0aW5nLiBJIHdvbmRlciB3aGF0IHRoZSByYXRpb25hbGUgaXMgYmVoaW5kIHRoYXQuIEl0IGNvdWxkIGJlIGZvciBhIGZldyByZWFzb25zOyBwZXJoYXBzIHRoZXkgYXJlIGxvb2tpbmcgZm9yIG1vcmUgZ3JhbnVsYXIgY29udHJvbCBvdmVyIHRoZSB3YWl0aW5nIG1lY2hhbmlzbSwgb3IgbWF5YmUgdGhlcmUgYXJlIHN1YnRsZSBkaWZmZXJlbmNlcyBpbiB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIHRoYXQgdGhleSBuZWVkLiBJJ2xsIG5lZWQgdG8gZGlnIGRlZXBlciB0byB1bmRlcnN0YW5kIHRoZSBwZXJmb3JtYW5jZSBvciBjb3JyZWN0bmVzcyBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuXG5cblRoZW4sIHRoZXJlJ3MgYSBmaXggZm9yIGBzbWNfd3JfdHhfcHV0X3Nsb3RgLiBUaGV5IGFyZSBmaXhpbmcgYSBgbWVtc2V0YCBpc3N1ZS4gVGhhdCdzIGdvb2Q7IGFsd2F5cyBpbXBvcnRhbnQgdG8gY2F0Y2ggdGhvc2UgbWVtb3J5IGNvcnJ1cHRpb24gYnVncyBlYXJseS4gQmFzZWQgb24gdGhlIGRlc2NyaXB0aW9uIEknZCBndWVzcyB0aGF0IHRoZXkgcGFzc2VkIHRoZSB3cm9uZyBhZGRyZXNzIHRvIGBtZW1zZXRgLCBvciBoYWQgYW4gaXNzdWUgd2l0aCB0aGUgc2l6ZSBvZiBkYXRhIGNvcGllZCBvciBzb21ldGhpbmcgbGlrZSB0aGF0LiBUaGVzZSBpc3N1ZXMgY2FuIGJlIG5hc3R5IHRvIGRlYnVnLCBzbyBJJ20gZ2xhZCB0aGlzIHdhcyBzcG90dGVkLlxuXG5CZWZvcmUgSSBnbyBmdXJ0aGVyLCBJIHdhbnQgdG8gY29uZmlybSB0aGF0IFNNQyBpcyBhY3R1YWxseSBlbmFibGVkLiBBIHF1aWNrIGxvb2sgYXQgYG5ldC9zbWMvS2NvbmZpZ2AgdGVsbHMgbWUgdGhhdCBgQ09ORklHX1NNQ2AgaXMgdGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb24sIHNvIHRoYXQgaXMgdGhlIG9wdGlvbiBJIG5lZWQgdG8gc2VhcmNoIGZvci5cblxuTm93LCBsZXQncyBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoZXJlIGVsc2UgdGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIHdpdGhpbiB0aGUga2VybmVsLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIGNvbnRleHQgYW5kIGhvdyB0aGVzZSBjaGFuZ2VzIHJpcHBsZSB0aHJvdWdoIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGdyYXBocyBhbmQgZGVwZW5kZW5jaWVzIHRvIGZ1bGx5IGdyYXNwIHRoZSBzaWduaWZpY2FuY2Ugb2YgdGhlc2UgbW9kaWZpY2F0aW9ucy4gSXTigJlzIGFsd2F5cyBnb29kIHRvIHNlZSB3aGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGRvZXMgdG8ga25vdyB3aGVyZSB0byBleHBlY3QgYW55IGNoYW5nZXMgaW4gYmVoYXZpb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzoxOToyMi45MTE5NjM2NTVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc4MTQ2MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jX3dyX3R4X2dldF9mcmVlX3Nsb3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfY2RjLmM9NzM9aW50IHNtY19jZGNfZ2V0X2ZyZWVfc2xvdChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy04MC1cXG5uZXQvc21jL3NtY19jZGMuYzo4MTpcXHRyYyA9IHNtY193cl90eF9nZXRfZnJlZV9zbG90KGxpbmssIHNtY19jZGNfdHhfaGFuZGxlciwgd3JfYnVmLFxcbm5ldC9zbWMvc21jX2NkYy5jLTgyLVxcdFxcdFxcdFxcdCAgICAgd3JfcmRtYV9idWYsXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz00MDA9c3RhdGljIGludCBzbWNfbGxjX2FkZF9wZW5kaW5nX3NlbmQoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtNDA1LVxcbm5ldC9zbWMvc21jX2xsYy5jOjQwNjpcXHRyYyA9IHNtY193cl90eF9nZXRfZnJlZV9zbG90KGxpbmssIHNtY19sbGNfdHhfaGFuZGxlciwgd3JfYnVmLCBOVUxMLFxcbm5ldC9zbWMvc21jX2xsYy5jLTQwNy1cXHRcXHRcXHRcXHQgICAgIHBlbmQpO1xcbi0tXFxubmV0L3NtYy9zbWNfd3IuYz0xNjI9dm9pZCBzbWNfd3JfdHhfY3FfaGFuZGxlcihzdHJ1Y3QgaWJfY3EgKmliX2NxLCB2b2lkICpjcV9jb250ZXh0KVxcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy0xNzAtXFxubmV0L3NtYy9zbWNfd3IuYzoxNzE6c3RhdGljIGlubGluZSBpbnQgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RfaW5kZXgoc3RydWN0IHNtY19saW5rICpsaW5rLCB1MzIgKmlkeClcXG5uZXQvc21jL3NtY193ci5jLTE3Mi17XFxuLS1cXG5uZXQvc21jL3NtY193ci5jLTE4NC0vKipcXG5uZXQvc21jL3NtY193ci5jOjE4NTogKiBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdCgpIC0gcmV0dXJucyBidWZmZXIgZm9yIG1lc3NhZ2UgYXNzZW1ibHksXFxubmV0L3NtYy9zbWNfd3IuYy0xODYtICpcXHRcXHRcXHRhbmQgc2V0cyBpbmZvIGZvciBwZW5kaW5nIHRyYW5zbWl0IHRyYWNraW5nXFxuLS1cXG5uZXQvc21jL3NtY193ci5jLTE5NC0gKi9cXG5uZXQvc21jL3NtY193ci5jOjE5NTppbnQgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3Qoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbm5ldC9zbWMvc21jX3dyLmMtMTk2LVxcdFxcdFxcdCAgICBzbWNfd3JfdHhfaGFuZGxlciBoYW5kbGVyLFxcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy0yMTItXFx0aWYgKGluX3NvZnRpcnEoKSB8fCBsZ3ItXFx1MDAzZXRlcm1pbmF0aW5nKSB7XFxubmV0L3NtYy9zbWNfd3IuYzoyMTM6XFx0XFx0cmMgPSBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdF9pbmRleChsaW5rLCBcXHUwMDI2aWR4KTtcXG5uZXQvc21jL3NtY193ci5jLTIxNC1cXHRcXHRpZiAocmMpXFxuLS1cXG5uZXQvc21jL3NtY193ci5jLTIyMS1cXHRcXHRcXHRpZiAoIXNtY19saW5rX3NlbmRhYmxlKGxpbmspIHx8IGxnci1cXHUwMDNldGVybWluYXRpbmcgfHxcXG5uZXQvc21jL3NtY193ci5jOjIyMjpcXHRcXHRcXHQgICAgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RfaW5kZXgobGluaywgXFx1MDAyNmlkeCkgIT0gLUVCVVNZKVxcbm5ldC9zbWMvc21jX3dyLmMtMjIzLVxcdFxcdFxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy0yMjYtXFx0XFx0XFx0aWYgKCFzbWNfbGlua19zZW5kYWJsZShsaW5rKSB8fCBsZ3ItXFx1MDAzZXRlcm1pbmF0aW5nIHx8XFxubmV0L3NtYy9zbWNfd3IuYzoyMjc6XFx0XFx0XFx0ICAgIHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KGxpbmssIFxcdTAwMjZpZHgpICE9IC1FQlVTWSlcXG5uZXQvc21jL3NtY193ci5jLTIyOC1cXHRcXHRcXHRcXHRicmVhaztcXG4tLVxcbm5ldC9zbWMvc21jX3dyLmg9MTExPXZvaWQgc21jX3dyX2FkZF9kZXYoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KTtcXG5uZXQvc21jL3NtY193ci5oLTExMi1cXG5uZXQvc21jL3NtY193ci5oOjExMzppbnQgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3Qoc3RydWN0IHNtY19saW5rICpsaW5rLCBzbWNfd3JfdHhfaGFuZGxlciBoYW5kbGVyLFxcbm5ldC9zbWMvc21jX3dyLmgtMTE0LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc21jX3dyX2J1ZiAqKndyX2J1ZixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6MTk6MjIuOTU5NzgyNjI0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIwMDE0ODcxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkFuYWx5emluZyB0aGUgU01DIFdyaXRlIFRYIFNsb3QgTWFuYWdlbWVudCoqXG5cbkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIGZ1bmN0aW9ucyByZWxhdGVkIHRvIG1hbmFnaW5nIHdyaXRlIHRyYW5zbWl0IHNsb3RzIHdpdGhpbiB0aGUgU01DIGZyYW1ld29yazogYHNtY193cl90eF9nZXRfZnJlZV9zbG90YCBhbmQgYHNtY193cl90eF9wdXRfc2xvdGAuIFNlZW1zIGxpa2UgYSBjb3JlIGFyZWEsIGxpa2VseSBpbXBhY3RpbmcgcGVyZm9ybWFuY2UgYW5kIGZsb3cgY29udHJvbC4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgdW5kZXJzdGFuZGluZyAqaG93KiB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIHVzZWQgYW5kICp3aHkqIHRoZSBjaGFuZ2UgaXMgbmVjZXNzYXJ5LlxuXG5JIHNlZSB0aGF0IGBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdGAgaXMgY2FsbGVkIGZyb20gYHNtY19jZGNfZ2V0X2ZyZWVfc2xvdGAgYW5kIGBzbWNfbGxjX2FkZF9wZW5kaW5nX3NlbmRgLiBUaGF0J3MgYSBzb2xpZCBzdGFydCDigJMgdGhlc2UgbmFtZXMgdGVsbCBtZSB0aGF0IHRoZXNlIGZ1bmN0aW9ucyByZWxhdGUgdG8gdGhlIENEQyAoQ29ubmVjdGlvbiBEZW11bHRpcGxleGluZyBDb250cm9sKSBsYXllciBhbmQgdGhlIExMQyAoTGluayBMYXllciBDb250cm9sKSBwb3NzaWJseSBmb3Igc2VuZCByZXF1ZXN0cy4gSSdsbCBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBwcmVjaXNlIGludGVyYWN0aW9uIGJldHdlZW4gdGhvc2UgY29tcG9uZW50cywgb2YgY291cnNlLiBGb3Igbm93LCB0aGlzIHBvaW50cyB0byBnZXR0aW5nIGEgZnJlZSBzbG90IGZvciBvdXRnb2luZyBkYXRhLCBlaXRoZXIgYXQgdGhlIENEQyBvciB0aGUgTExDLlxuXG5Ob3csIGxldCdzIHNoaWZ0IGZvY3VzIHRvIGBzbWNfd3JfdHhfcHV0X3Nsb3RgLiBCZWZvcmUgSSBjYW4gYW5hbHl6ZSB0aGUgaW1wbGljYXRpb25zLCBJIG5lZWQgdG8ga25vdyB0aGUgY29udGV4dCBvZiB0aGF0IGZ1bmN0aW9uIHRvIGRldGVybWluZSBpdHMgcG9zc2libGUgZWZmZWN0cy4gVGltZSB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgdG8gZ2V0IHRoYXQgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUzNCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjE5OjI3LjE1OTkzNDQzMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzE4NjAzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWNfd3JfdHhfcHV0X3Nsb3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfY2RjLmM9NzM9aW50IHNtY19jZGNfZ2V0X2ZyZWVfc2xvdChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy04Ni1cXHRcXHRpZiAoIXJjKVxcbm5ldC9zbWMvc21jX2NkYy5jOjg3OlxcdFxcdFxcdHNtY193cl90eF9wdXRfc2xvdChsaW5rLFxcbm5ldC9zbWMvc21jX2NkYy5jLTg4LVxcdFxcdFxcdFxcdFxcdCAgIChzdHJ1Y3Qgc21jX3dyX3R4X3BlbmRfcHJpdiAqKSgqcGVuZCkpO1xcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmM9MTc0PXN0YXRpYyBpbnQgc21jcl9jZGNfZ2V0X3Nsb3RfYW5kX21zZ19zZW5kKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTE5My1cXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2Y29ubi1cXHUwMDNlc2VuZF9sb2NrKTtcXG5uZXQvc21jL3NtY19jZGMuYzoxOTQ6XFx0XFx0c21jX3dyX3R4X3B1dF9zbG90KGxpbmssXFxubmV0L3NtYy9zbWNfY2RjLmMtMTk1LVxcdFxcdFxcdFxcdCAgIChzdHJ1Y3Qgc21jX3dyX3R4X3BlbmRfcHJpdiAqKXBlbmQpO1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jPTEwMzM9c3RhdGljIGludCBzbWNfc3dpdGNoX2N1cnNvcihzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfdHhfcGVuZCAqcGVuZCxcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xMDc2LVxcdH0gZWxzZSB7XFxubmV0L3NtYy9zbWNfY29yZS5jOjEwNzc6XFx0XFx0c21jX3dyX3R4X3B1dF9zbG90KGNvbm4tXFx1MDAzZWxuayxcXG5uZXQvc21jL3NtY19jb3JlLmMtMTA3OC1cXHRcXHRcXHRcXHQgICAoc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKilwZW5kKTtcXG4tLVxcbm5ldC9zbWMvc21jX3R4LmM9NTUwPXN0YXRpYyBpbnQgc21jcl90eF9zbmRidWZfbm9uZW1wdHkoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxcbi0tXFxubmV0L3NtYy9zbWNfdHguYy01ODEtXFx0XFx0LyogbGluayBvZiBjb25uZWN0aW9uIGNoYW5nZWQsIHR4X3dvcmsgd2lsbCByZXN0YXJ0ICovXFxubmV0L3NtYy9zbWNfdHguYzo1ODI6XFx0XFx0c21jX3dyX3R4X3B1dF9zbG90KGxpbmssXFxubmV0L3NtYy9zbWNfdHguYy01ODMtXFx0XFx0XFx0XFx0ICAgKHN0cnVjdCBzbWNfd3JfdHhfcGVuZF9wcml2ICopcGVuZCk7XFxuLS1cXG5uZXQvc21jL3NtY190eC5jLTU4OS1cXHRcXHRpZiAocmMpIHtcXG5uZXQvc21jL3NtY190eC5jOjU5MDpcXHRcXHRcXHRzbWNfd3JfdHhfcHV0X3Nsb3QobGluayxcXG5uZXQvc21jL3NtY190eC5jLTU5MS1cXHRcXHRcXHRcXHRcXHQgICAoc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKilwZW5kKTtcXG4tLVxcbm5ldC9zbWMvc21jX3dyLmM9MjYwPWludCBzbWNfd3JfdHhfZ2V0X3YyX3Nsb3Qoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy0yODYtXFxubmV0L3NtYy9zbWNfd3IuYzoyODc6aW50IHNtY193cl90eF9wdXRfc2xvdChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9zbWNfd3IuYy0yODgtXFx0XFx0ICAgICAgIHN0cnVjdCBzbWNfd3JfdHhfcGVuZF9wcml2ICp3cl9wZW5kX3ByaXYpXFxuLS1cXG5uZXQvc21jL3NtY193ci5jPTMyMD1pbnQgc21jX3dyX3R4X3NlbmQoc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX3dyX3R4X3BlbmRfcHJpdiAqcHJpdilcXG4tLVxcbm5ldC9zbWMvc21jX3dyLmMtMzI5LVxcdGlmIChyYykge1xcbm5ldC9zbWMvc21jX3dyLmM6MzMwOlxcdFxcdHNtY193cl90eF9wdXRfc2xvdChsaW5rLCBwcml2KTtcXG5uZXQvc21jL3NtY193ci5jLTMzMS1cXHRcXHRzbWNyX2xpbmtfZG93bl9jb25kX3NjaGVkKGxpbmspO1xcbi0tXFxubmV0L3NtYy9zbWNfd3IuYz0zMzY9aW50IHNtY193cl90eF92Ml9zZW5kKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKnByaXYsXFxuLS1cXG5uZXQvc21jL3NtY193ci5jLTM0NS1cXHRpZiAocmMpIHtcXG5uZXQvc21jL3NtY193ci5jOjM0NjpcXHRcXHRzbWNfd3JfdHhfcHV0X3Nsb3QobGluaywgcHJpdik7XFxubmV0L3NtYy9zbWNfd3IuYy0zNDctXFx0XFx0c21jcl9saW5rX2Rvd25fY29uZF9zY2hlZChsaW5rKTtcXG4tLVxcbm5ldC9zbWMvc21jX3dyLmg9MTE3PWludCBzbWNfd3JfdHhfZ2V0X3YyX3Nsb3Qoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbi0tXFxubmV0L3NtYy9zbWNfd3IuaC0xMjAtXFx0XFx0XFx0ICBzdHJ1Y3Qgc21jX3dyX3R4X3BlbmRfcHJpdiAqKndyX3BlbmRfcHJpdik7XFxubmV0L3NtYy9zbWNfd3IuaDoxMjE6aW50IHNtY193cl90eF9wdXRfc2xvdChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9zbWNfd3IuaC0xMjItXFx0XFx0ICAgICAgIHN0cnVjdCBzbWNfd3JfdHhfcGVuZF9wcml2ICp3cl9wZW5kX3ByaXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzoxOToyNy4yMDcxMjYyNzFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDkzMDExODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU01DIFByb3RvY29sIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdHdlYWtpbmcgYHNtY193cl90eF9nZXRfZnJlZV9zbG90YC4gVGhlIGtleSBoZXJlIGlzIHRoZSBzaGlmdCB0byBgcHJlcGFyZV90b193YWl0X2V4Y2x1c2l2ZWAgYW5kIGBzY2hlZHVsZV90aW1lb3V0YC4gUmlnaHQgYXdheSwgSSByZWNvZ25pemUgdGhpcyBhcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIHRoZSBTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zIChTTUMpIHByb3RvY29sIGltcGxlbWVudGF0aW9uLiBDbGVhcmx5LCB0aGV5J3JlIGFpbWluZyB0byBpbXByb3ZlIGhvdyB0aGUgc3lzdGVtIGhhbmRsZXMgd2FpdGluZyBmb3IgZnJlZSBzbG90cyBpbiB0aGUgc2hhcmVkIG1lbW9yeS4gVGhpcyBpcyBzaWduaWZpY2FudDsgYW55IGNoYW5nZSB0byB0aGUgd2FpdCBtZWNoYW5pc20gY2FuIGltcGFjdCBwZXJmb3JtYW5jZSBhbmQgcmVzcG9uc2l2ZW5lc3MsIGVzcGVjaWFsbHkgaW4gaGlnaC10aHJvdWdocHV0IGVudmlyb25tZW50cyBsZXZlcmFnaW5nIEFGX1NNQyBzb2NrZXRzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zLlxuXG5HaXZlbiBTTUMncyByb2xlLCBJIHNob3VsZCBjaGVjayB0aGUgYENPTkZJR19TTUNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBOb3csIGxldCBtZSBxdWlja2x5IG5hdmlnYXRlIHRvIGBuZXQvc21jL0tjb25maWdgIHRvIHBpbnBvaW50IGFueSBkZXBlbmRlbmNpZXMgb3Igb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhvc2Ugd2lsbCBiZSBjcnVjaWFsIGZvciBhc3Nlc3NpbmcgdGhlIGJyb2FkZXIgaW1wYWN0IG9mIHRoaXMgcGF0Y2ggYW5kIGNvbmZpcm1pbmcgd2hldGhlciB0aGVyZSBhcmUgYW55IHBvdGVudGlhbCBjb25mbGljdHMgb3Igc2lkZSBlZmZlY3RzIHdpdGhpbiB0aGUgbmV0d29ya2luZyBzdGFjay4gSSdsbCBuZWVkIHRvIHNlZSBob3cgdGhpcyBjaGFuZ2UgaW50ZXJhY3RzIHdpdGggb3RoZXIgU01DLXJlbGF0ZWQgZmVhdHVyZXMgYW5kIG9wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNjYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzoxOTozMS43MDAxNDA5NTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc21jL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgU01DXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiU01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIElORVQgXFx1MDAyNlxcdTAwMjYgSU5GSU5JQkFORCBcXHUwMDI2XFx1MDAyNiBESUJTXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIFNNQy1SIHByb3ZpZGVzIGEgXFxcInNvY2tldHMgb3ZlciBSRE1BXFxcIiBzb2x1dGlvbiBtYWtpbmcgdXNlIG9mXFxuICAgNzpcXHRcXHQgIFJETUEgb3ZlciBDb252ZXJnZWQgRXRoZXJuZXQgKFJvQ0UpIHRlY2hub2xvZ3kgdG8gdXBncmFkZVxcbiAgIDg6XFx0XFx0ICBBRl9JTkVUIFRDUCBjb25uZWN0aW9ucyB0cmFuc3BhcmVudGx5LlxcbiAgIDk6XFx0XFx0ICBUaGUgTGludXggaW1wbGVtZW50YXRpb24gb2YgdGhlIFNNQy1SIHNvbHV0aW9uIGlzIGRlc2lnbmVkIGFzXFxuICAxMDpcXHRcXHQgIGEgc2VwYXJhdGUgc29ja2V0IGZhbWlseSBTTUMuXFxuICAxMTpcXHRcXG4gIDEyOlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIGlmIHlvdSB3YW50IHRvIHJ1biBTTUMgc29ja2V0IGFwcGxpY2F0aW9uc1xcbiAgMTM6XFx0XFxuICAxNDpcXHRjb25maWcgU01DX0RJQUdcXG4gIDE1OlxcdFxcdHRyaXN0YXRlIFxcXCJTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG4gIDE2OlxcdFxcdGRlcGVuZHMgb24gU01DXFxuICAxNzpcXHRcXHRoZWxwXFxuICAxODpcXHRcXHQgIFN1cHBvcnQgZm9yIFNNQyBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2UgdXNlZCBieSB0b29scyBzdWNoIGFzXFxuICAxOTpcXHRcXHQgIHNtY3NzLlxcbiAgMjA6XFx0XFxuICAyMTpcXHRcXHQgIGlmIHVuc3VyZSwgc2F5IFkuXFxuICAyMjpcXHRcXG4gIDIzOlxcdGNvbmZpZyBTTUNfSFNfQ1RSTF9CUEZcXG4gIDI0OlxcdFxcdGJvb2wgXFxcIkdlbmVyaWMgZUJQRiBob29rIGZvciBTTUMgaGFuZHNoYWtlIGZsb3dcXFwiXFxuICAyNTpcXHRcXHRkZXBlbmRzIG9uIFNNQyBcXHUwMDI2XFx1MDAyNiBCUEZfSklUIFxcdTAwMjZcXHUwMDI2IEJQRl9TWVNDQUxMXFxuICAyNjpcXHRcXHRkZWZhdWx0IHlcXG4gIDI3OlxcdFxcdGhlbHBcXG4gIDI4OlxcdFxcdCAgU01DX0hTX0NUUkxfQlBGIGVuYWJsZXMgc3VwcG9ydCB0byByZWdpc3RlciBnZW5lcmljIGVCUEYgaG9vayBmb3IgU01DXFxuICAyOTpcXHRcXHQgIGhhbmRzaGFrZSBmbG93LCB3aGljaCBvZmZlciBtdWNoIGdyZWF0ZXIgZmxleGliaWxpdHkgaW4gbW9kaWZ5aW5nIHRoZSBiZWhhdmlvclxcbiAgMzA6XFx0XFx0ICBvZiB0aGUgU01DIHByb3RvY29sIHN0YWNrIGNvbXBhcmVkIHRvIGEgY29tcGxldGUga2VybmVsLWJhc2VkIGFwcHJvYWNoLiBTZWxlY3RcXG4gIDMxOlxcdFxcdCAgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgZmlsdHJpbmcgdGhlIGhhbmRzaGFrZSBwcm9jZXNzIHZpYSBlQlBGIHByb2dyYW1zLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzoxOTozMS43MDAyMTIyOTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MTk4ODAwNDIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU01DLVcgQ29uZmlndXJhdGlvbiBhbmQgRnVuY3Rpb25hbCBDaGFuZ2VzKipcblxuT2theSwgc28gaW5pdGlhbGx5IEkgd2FzIHRocm93biBvZmYgYnkgd2hhdCBJICp0aG91Z2h0KiBJIHNhdyByZWdhcmRpbmcgZGVwZW5kZW5jaWVzLiBJIGtlcHQgc2Vjb25kLWd1ZXNzaW5nIG15c2VsZiB3aXRoIHRoYXQgXCJESUJTXCIgdGhpbmcsIHRoaW5raW5nIEkgc2F3IGl0IGluIHRoZSBkZXBlbmRlbmNpZXMuIEJ1dCBhZnRlciByZS1yZWFkaW5nIHRoZSBzb3VyY2UgZmlsZSBhbmQgZG91YmxlLWNoZWNraW5nIHRoZSBvdXRwdXQsIHRoZSBjb3JyZWN0IGRlcGVuZGVuY3kgaXMgY2xlYXJseSBqdXN0IGBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EYC4gSSBjbGVhcmx5IG1pc3JlYWQgdGhhdCBsaW5lIOKAkyBpdCdzIGRlZmluaXRlbHkgYElORVQgXHUwMDI2XHUwMDI2IElORklOSUJBTkRgLCBub3QgYElORVQgXHUwMDI2XHUwMDI2IElORklOSUJBTkQgXHUwMDI2XHUwMDI2IERJQlNgLiBUaGF0IHdhcyBhIGJyaWVmIG1vbWVudCBvZiBjb25mdXNpb24gdGhlcmUuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgYElORklOSUJBTkRgIGNvbmZpZ3VyYXRpb24uIEkgcmVtZW1iZXIgdGhhdCdzIGluIGBkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZ2AsIHNvIEknbGwgY2hlY2sgdGhhdCB0byBjb25maXJtLiBSaWdodCwgc28gd2UgbmVlZCBgQ09ORklHX1NNQ2AgYW5kIGBDT05GSUdfSU5GSU5JQkFORGAuXG5cbk1vdmluZyBvbiwgdGhlIHBhdGNoIGlzIGZvY3VzZWQgb24gbW9kaWZ5aW5nIGBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdGAgYW5kIGBzbWNfd3JfdHhfcHV0X3Nsb3RgLiBUaGVzZSBhcmUgdGhlIGtleSBmdW5jdGlvbnMsIHRoZSBmdW5jdGlvbmFsIGNoYW5nZXMuIE9rYXksIGxldCdzIHNlZSB3aGVyZSB0aGV5IGFyZSB1c2VkLiBgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RgIGlzIGNhbGxlZCBmcm9tIGBzbWNfY2RjX2dldF9mcmVlX3Nsb3RgIGFuZCBgc21jX2xsY19hZGRfcGVuZGluZ19zZW5kYC4gQW5kLCBgc21jX3dyX3R4X3B1dF9zbG90YCBpcyBjYWxsZWQgYnkgYSBtdWNoIGxhcmdlciBzZXQgb2YgZnVuY3Rpb25zOiBgc21jX2NkY19nZXRfZnJlZV9zbG90YCwgYHNtY3JfY2RjX2dldF9zbG90X2FuZF9tc2dfc2VuZGAsIGBzbWNfc3dpdGNoX2N1cnNvcmAsIGBzbWNyX3R4X3NuZGJ1Zl9ub25lbXB0eWAsIGBzbWNfd3JfdHhfc2VuZGAsIGFuZCBgc21jX3dyX3R4X3YyX3NlbmRgLlxuXG5HaXZlbiB0aGVpciBpbXBvcnRhbmNlIGFuZCB0aGF0IHRoZXNlIGFyZSBleHBvcnRlZCBmdW5jdGlvbnMsIEkgY2FuIHVzZSB0aGVtIGFzIEZvY3VzU3ltYm9scy4gV2FpdCwgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQgYHNtY193cl90eF9nZXRfZnJlZV9zbG90YCBpcyBhY3R1YWxseSBleHBvcnRlZC4gSSdsbCBjb25maXJtIHRoYXQgaW4gYG5ldC9zbWMvc21jX3dyLmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTY5LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6MTk6NDAuODk5MDE1MzE0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzc4MDM5MTQsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKnNtY193cl90eF9nZXRfZnJlZV9zbG90XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzoxOTo0MS4xMzY4MzE1NjhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg0ODU0ODU4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgU01DIFN1YnN5c3RlbSBNZW1vcnkgTWFuYWdlbWVudCoqXG5cbk9rYXksIHNvIHRoZXNlIHZhcmlhYmxlcyBhcmVuJ3QgZGVmaW5lZCBhcyBgc3RhdGljYCwgYnV0IHRoZXkncmUgc3RpbGwgdXNlZCBpbnRlcm5hbGx5IHdpdGhpbiB0aGUgU01DIHN1YnN5c3RlbSwgbm90IGV4cG9ydGVkIHRvIG1vZHVsZXMuIFRoYXQncyBhIGtleSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZXkncmUgYmVpbmcgbWFuYWdlZC4gTGV0IG1lIGNvbmZpcm0gdGhhdCB0aGV5ICphcmVuJ3QqIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBSaWdodCwgSSBjYW4gc2VlIHRoYXQgaW4gdGhlIGNvZGUuXG5cbk5vdywgbGV0J3MgbG9vayBhdCBwb3RlbnRpYWxseSBiZXR0ZXIgZW50cnkgcG9pbnRzIHRvIHVuZGVyc3RhbmQgdGhlIHVzYWdlIHBhdHRlcm4uIE1heWJlIGBzbWNfY2RjX2dldF9mcmVlX3Nsb3RgIG9yIGBzbWNfbGxjX2FkZF9wZW5kaW5nX3NlbmRgPyBOb3BlLCBpdCBsb29rcyBsaWtlIGBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdGAgaXMgYWN0dWFsbHkgYSBnb29kIHBsYWNlIHRvIGNlbnRlciB0aGlzIGludmVzdGlnYXRpb24uIFNhbWUgZ29lcyBmb3IgYHNtY193cl90eF9wdXRfc2xvdGAuXG5cbkFscmlnaHQsIEkgc2hvdWxkIHZlcmlmeSB0aGF0IHRoZSBgU01DYCBmYW1pbHkgaXMgcmVhY2hhYmxlLiBZZXMsIGl0J3MgYSBzb2NrZXQgZmFtaWx5LCB0aGF0IG1ha2VzIHNlbnNlLiBMZXQgbWUgdGFrZSBub3RlIG9mIHRoZSBjb25maWcgb3B0aW9ucyByZWxhdGVkIHRvIFNNQyBhbmQgSW5maW5pYmFuZC5cblxuTm93LCBJJ20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRoZSBjYWxsZXJzIG9mIGBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdGAgdG8gZ2V0IGEgbW9yZSBjb21wcmVoZW5zaXZlIHZpZXcgb2YgaG93IGl0J3MgYmVpbmcgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzk5MywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzoxOTo0NS45ODUzODIxOTdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNDc0NjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNtY193cl90eF9nZXRfZnJlZV9zbG90XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2NkYy5jPTczPWludCBzbWNfY2RjX2dldF9mcmVlX3Nsb3Qoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLFxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtODAtXFxubmV0L3NtYy9zbWNfY2RjLmM6ODE6XFx0cmMgPSBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdChsaW5rLCBzbWNfY2RjX3R4X2hhbmRsZXIsIHdyX2J1ZixcXG5uZXQvc21jL3NtY19jZGMuYy04Mi1cXHRcXHRcXHRcXHQgICAgIHdyX3JkbWFfYnVmLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9NDAwPXN0YXRpYyBpbnQgc21jX2xsY19hZGRfcGVuZGluZ19zZW5kKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTQwNS1cXG5uZXQvc21jL3NtY19sbGMuYzo0MDY6XFx0cmMgPSBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdChsaW5rLCBzbWNfbGxjX3R4X2hhbmRsZXIsIHdyX2J1ZiwgTlVMTCxcXG5uZXQvc21jL3NtY19sbGMuYy00MDctXFx0XFx0XFx0XFx0ICAgICBwZW5kKTtcXG4tLVxcbm5ldC9zbWMvc21jX3dyLmM9MTYyPXZvaWQgc21jX3dyX3R4X2NxX2hhbmRsZXIoc3RydWN0IGliX2NxICppYl9jcSwgdm9pZCAqY3FfY29udGV4dClcXG4tLVxcbm5ldC9zbWMvc21jX3dyLmMtMTcwLVxcbm5ldC9zbWMvc21jX3dyLmM6MTcxOnN0YXRpYyBpbmxpbmUgaW50IHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KHN0cnVjdCBzbWNfbGluayAqbGluaywgdTMyICppZHgpXFxubmV0L3NtYy9zbWNfd3IuYy0xNzIte1xcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy0xODQtLyoqXFxubmV0L3NtYy9zbWNfd3IuYzoxODU6ICogc21jX3dyX3R4X2dldF9mcmVlX3Nsb3QoKSAtIHJldHVybnMgYnVmZmVyIGZvciBtZXNzYWdlIGFzc2VtYmx5LFxcbm5ldC9zbWMvc21jX3dyLmMtMTg2LSAqXFx0XFx0XFx0YW5kIHNldHMgaW5mbyBmb3IgcGVuZGluZyB0cmFuc21pdCB0cmFja2luZ1xcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy0xOTQtICovXFxubmV0L3NtYy9zbWNfd3IuYzoxOTU6aW50IHNtY193cl90eF9nZXRfZnJlZV9zbG90KHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY193ci5jLTE5Ni1cXHRcXHRcXHQgICAgc21jX3dyX3R4X2hhbmRsZXIgaGFuZGxlcixcXG4tLVxcbm5ldC9zbWMvc21jX3dyLmMtMjEyLVxcdGlmIChpbl9zb2Z0aXJxKCkgfHwgbGdyLVxcdTAwM2V0ZXJtaW5hdGluZykge1xcbm5ldC9zbWMvc21jX3dyLmM6MjEzOlxcdFxcdHJjID0gc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RfaW5kZXgobGluaywgXFx1MDAyNmlkeCk7XFxubmV0L3NtYy9zbWNfd3IuYy0yMTQtXFx0XFx0aWYgKHJjKVxcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy0yMjEtXFx0XFx0XFx0aWYgKCFzbWNfbGlua19zZW5kYWJsZShsaW5rKSB8fCBsZ3ItXFx1MDAzZXRlcm1pbmF0aW5nIHx8XFxubmV0L3NtYy9zbWNfd3IuYzoyMjI6XFx0XFx0XFx0ICAgIHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KGxpbmssIFxcdTAwMjZpZHgpICE9IC1FQlVTWSlcXG5uZXQvc21jL3NtY193ci5jLTIyMy1cXHRcXHRcXHRcXHRicmVhaztcXG4tLVxcbm5ldC9zbWMvc21jX3dyLmMtMjI2LVxcdFxcdFxcdGlmICghc21jX2xpbmtfc2VuZGFibGUobGluaykgfHwgbGdyLVxcdTAwM2V0ZXJtaW5hdGluZyB8fFxcbm5ldC9zbWMvc21jX3dyLmM6MjI3OlxcdFxcdFxcdCAgICBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdF9pbmRleChsaW5rLCBcXHUwMDI2aWR4KSAhPSAtRUJVU1kpXFxubmV0L3NtYy9zbWNfd3IuYy0yMjgtXFx0XFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvc21jL3NtY193ci5oPTExMT12b2lkIHNtY193cl9hZGRfZGV2KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldik7XFxubmV0L3NtYy9zbWNfd3IuaC0xMTItXFxubmV0L3NtYy9zbWNfd3IuaDoxMTM6aW50IHNtY193cl90eF9nZXRfZnJlZV9zbG90KHN0cnVjdCBzbWNfbGluayAqbGluaywgc21jX3dyX3R4X2hhbmRsZXIgaGFuZGxlcixcXG5uZXQvc21jL3NtY193ci5oLTExNC1cXHRcXHRcXHQgICAgc3RydWN0IHNtY193cl9idWYgKip3cl9idWYsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjE5OjQ2LjAzODg2MTM4NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Njg4NjkwNTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJlY2VudCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZS4gSXQgbG9va3MgbGlrZSBpdCBhZGRyZXNzZXMgYSBjb3VwbGUgb2YgYnVncyB3aXRoaW4gdGhlIFNNQyBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBpbiB0aGUgZnVuY3Rpb25zIGBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdGAgYW5kIGBzbWNfd3JfdHhfcHV0X3Nsb3RgLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgYHNtY193cl90eF9nZXRfZnJlZV9zbG90YCBpcyBiZWluZyB1cGRhdGVkIHRvIHVzZSBhIG1hbnVhbCB3YWl0IGxvb3Agd2l0aCBgcHJlcGFyZV90b193YWl0X2V4Y2x1c2l2ZWAgYW5kIGBzY2hlZHVsZV90aW1lb3V0YCwgcmVwbGFjaW5nIGB3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdGltZW91dGAuIFRoZSBvdGhlciBmdW5jdGlvbiwgYHNtY193cl90eF9wdXRfc2xvdGAsIGhhcyBhIGZpeCByZWxhdGVkIHRvIHRoZSBzaXplIGFyZ3VtZW50IG9mIGBtZW1zZXRgLiBUaGVzZSBhcmUgY29yZSBmdW5jdGlvbmFsIGFkanVzdG1lbnRzLCBub3RoaW5nIHRyaXZpYWwgaGVyZS5cblxuVGhpcyB3YXJyYW50cyBzb21lIHNlcmlvdXMgYXR0ZW50aW9uLiBTaW5jZSBpdCdzIGNoYW5naW5nIGNvcmUgZnVuY3Rpb25hbGl0eSwgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgaXMgc2V0IHRvIFRydWUuIEFuZCwgSSBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgY2hhbmdlcyB0byBgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RgIGFuZCBgc21jX3dyX3R4X3B1dF9zbG90YC5cblxuTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9ucyBhcmUgYWZmZWN0ZWQuIFRoZSBwYXRjaCBzcGVjaWZpZXMgYEVuYWJsZUNvbmZpZ3M6IFNNQywgSU5GSU5JQkFORGAuIEJ1dCBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBhbnl0aGluZy4gTGV0J3Mgc2VlIGlmIGBJTkZJTklCQU5EYCBpcyBhY3R1YWxseSBuZWVkZWQgdG8gY29tcGlsZSBTTUM/IFllcCwgYGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORGAuIFNpbmNlIGBJTkVUYCBpcyBzdGFuZGFyZCwgYFNNQ2AgYW5kIGBJTkZJTklCQU5EYCBhcmUgdGhlIG5lY2Vzc2FyeSBjb25maWdzLlxuXG5SaWdodCwgSSdtIGNvbmZpZGVudCB0aGF0IGBTTUNgIGFuZCBgSU5GSU5JQkFORGAgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgaGVyZS4gSSdsbCBuZWVkIHRvIHJ1biB0ZXN0cyB3aXRoIHRoZXNlIGVuYWJsZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0LiBJIGFtIHJlYWR5IHRvIGNhbGwgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1MzgsIk91dHB1dFRva2VucyI6MTMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjE5OjUyLjcyNzU1NDA2MloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwMDMyNjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIklORklOSUJBTkRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdFwiLFxuICAgIFwic21jX3dyX3R4X3B1dF9zbG90XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdhaXQgbG9naWMgaW4gYHNtY193cl90eF9nZXRfZnJlZV9zbG90YCBhbmQgZml4ZXMgYSBtZW1zZXQgc2l6ZSBidWcgaW4gYHNtY193cl90eF9wdXRfc2xvdGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIFNNQyAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykgcHJvdG9jb2wgc3Vic3lzdGVtLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIEFGX1NNQyBzb2NrZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNNQ1wiLFxuICAgIFwiSU5GSU5JQkFORFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNtY193cl90eF9nZXRfZnJlZV9zbG90XCIsXG4gICAgXCJzbWNfd3JfdHhfcHV0X3Nsb3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgd2FpdCBsb2dpYyBpbiBgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RgIGFuZCBmaXhlcyBhIG1lbXNldCBzaXplIGJ1ZyBpbiBgc21jX3dyX3R4X3B1dF9zbG90YC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgU01DIChTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zKSBwcm90b2NvbCBzdWJzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgQUZfU01DIHNvY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowccl7q[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-06 06:52:06 +0000 UTC FinishedAt: 2026-08-06 07:19:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "cb59bfd419d0c560b9f7273522f9a4799062aad5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "INFINIBAND" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "cb59bfd419d0c560b9f7273522f9a4799062aad5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "INFINIBAND" ], "series_id": "7aadce37-bbe6-4239-a55a-bde4d4201a04" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "smc_wr_tx_get_free_slot", "smc_wr_tx_put_slot" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c21jX3dyX3R4X2dldF9mcmVlX3Nsb3QmIzM0OywKICAgICYjMzQ7c21jX3dyX3R4X3B1dF9zbG90JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB3YWl0IGxvZ2ljIGluIGBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdGAgYW5kIGZpeGVzIGEgbWVtc2V0IHNpemUgYnVnIGluIGBzbWNfd3JfdHhfcHV0X3Nsb3RgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBTTUMgKFNoYXJlZCBNZW1vcnkgQ29tbXVuaWNhdGlvbnMpIHByb3RvY29sIHN1YnN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBBRl9TTUMgc29ja2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzoxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGMxN2ZmY2FhY2RkYmRmYTU5NWE0Yjg5YmQ1MzE0NmU2MGU4Y2RhMmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyA2IDA3OjE5OjE2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX3dyLmMgYi9uZXQvc21jL3NtY193ci5jXG5pbmRleCA1OWM5MmI0Njk0NWM1Li4yY2RkNDA2M2MxM2Q2IDEwMDY0NFxuLS0tIGEvbmV0L3NtYy9zbWNfd3IuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfd3IuY1xuQEAgLTE5OCwxMSAmIzQzOzE5OCwxMyBAQCBpbnQgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3Qoc3RydWN0IHNtY19saW5rICpsaW5rLFxuIFx0XHRcdCAgICBzdHJ1Y3Qgc21jX3JkbWFfd3IgKip3cl9yZG1hX2J1ZixcbiBcdFx0XHQgICAgc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKip3cl9wZW5kX3ByaXYpXG4ge1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgdGltZW91dCA9IFNNQ19XUl9UWF9XQUlUX0ZSRUVfU0xPVF9USU1FO1xuIFx0c3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IgPSBzbWNfZ2V0X2xncihsaW5rKTtcbiBcdHN0cnVjdCBzbWNfd3JfdHhfcGVuZCAqd3JfcGVuZDtcbiBcdHUzMiBpZHggPSBsaW5rLVx1MDAzZXdyX3R4X2NudDtcbiBcdHN0cnVjdCBpYl9zZW5kX3dyICp3cl9pYjtcbiBcdHU2NCB3cl9pZDtcbiYjNDM7XHRERUZJTkVfV0FJVCh3YWl0KTtcbiBcdGludCByYztcbiBcbiBcdCp3cl9idWYgPSBOVUxMO1xuQEAgLTIxMiwxNyAmIzQzOzIxNCwzMSBAQCBpbnQgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3Qoc3RydWN0IHNtY19saW5rICpsaW5rLFxuIFx0XHRpZiAocmMpXG4gXHRcdFx0cmV0dXJuIHJjO1xuIFx0fSBlbHNlIHtcbi1cdFx0cmMgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdGltZW91dChcbi1cdFx0XHRsaW5rLVx1MDAzZXdyX3R4X3dhaXQsXG4tXHRcdFx0IXNtY19saW5rX3NlbmRhYmxlKGxpbmspIHx8XG4tXHRcdFx0bGdyLVx1MDAzZXRlcm1pbmF0aW5nIHx8XG4tXHRcdFx0KHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KGxpbmssIFx1MDAyNmlkeCkgIT0gLUVCVVNZKSxcbi1cdFx0XHRTTUNfV1JfVFhfV0FJVF9GUkVFX1NMT1RfVElNRSk7XG4tXHRcdGlmICghcmMpIHtcbi1cdFx0XHQvKiB0aW1lb3V0IC0gdGVybWluYXRlIGxpbmsgKi9cbi1cdFx0XHRzbWNyX2xpbmtfZG93bl9jb25kX3NjaGVkKGxpbmspO1xuLVx0XHRcdHJldHVybiAtRVBJUEU7XG4mIzQzO1x0XHRyYyA9IDA7XG4mIzQzO1x0XHRmb3IgKDs7KSB7XG4mIzQzO1x0XHRcdHByZXBhcmVfdG9fd2FpdF9leGNsdXNpdmUoXHUwMDI2bGluay1cdTAwM2V3cl90eF93YWl0LCBcdTAwMjZ3YWl0LFxuJiM0MztcdFx0XHRcdFx0XHQgIFRBU0tfSU5URVJSVVBUSUJMRSk7XG4mIzQzO1x0XHRcdGlmICghc21jX2xpbmtfc2VuZGFibGUobGluaykgfHwgbGdyLVx1MDAzZXRlcm1pbmF0aW5nIHx8XG4mIzQzO1x0XHRcdCAgICBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdF9pbmRleChsaW5rLCBcdTAwMjZpZHgpICE9IC1FQlVTWSlcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0dGltZW91dCA9IHNjaGVkdWxlX3RpbWVvdXQodGltZW91dCk7XG4mIzQzO1x0XHRcdC8qIHJlLWNoZWNrICovXG4mIzQzO1x0XHRcdGlmICghc21jX2xpbmtfc2VuZGFibGUobGluaykgfHwgbGdyLVx1MDAzZXRlcm1pbmF0aW5nIHx8XG4mIzQzO1x0XHRcdCAgICBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdF9pbmRleChsaW5rLCBcdTAwMjZpZHgpICE9IC1FQlVTWSlcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0aWYgKCF0aW1lb3V0KSB7XG4mIzQzO1x0XHRcdFx0LyogdGltZW91dCAtIHRlcm1pbmF0ZSBsaW5rICovXG4mIzQzO1x0XHRcdFx0c21jcl9saW5rX2Rvd25fY29uZF9zY2hlZChsaW5rKTtcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0fVxuJiM0MztcdFx0XHRpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpIHtcbiYjNDM7XHRcdFx0XHRyYyA9IC1FUkVTVEFSVFNZUztcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0fVxuIFx0XHR9XG4mIzQzO1x0XHRmaW5pc2hfd2FpdChcdTAwMjZsaW5rLVx1MDAzZXdyX3R4X3dhaXQsIFx1MDAyNndhaXQpO1xuJiM0MztcdFx0aWYgKHJjKVxuJiM0MztcdFx0XHRyZXR1cm4gcmM7XG4gXHRcdGlmIChpZHggPT0gbGluay1cdTAwM2V3cl90eF9jbnQpXG4gXHRcdFx0cmV0dXJuIC1FUElQRTtcbiBcdH1cbkBAIC0yODgsMTAgJiM0MzszMDQsMTAgQEAgaW50IHNtY193cl90eF9wdXRfc2xvdChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4gXHR9IGVsc2UgaWYgKGxpbmstXHUwMDNlbGdyLVx1MDAzZXNtY192ZXJzaW9uID09IFNNQ19WMiBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgcGVuZC1cdTAwM2VpZHggPT0gbGluay1cdTAwM2V3cl90eF9jbnQpIHtcbiBcdFx0LyogTGFyZ2UgdjIgYnVmZmVyICovXG4tXHRcdG1lbXNldChcdTAwMjZsaW5rLVx1MDAzZXdyX3R4X3YyX3BlbmQsIDAsXG4tXHRcdCAgICAgICBzaXplb2YobGluay1cdTAwM2V3cl90eF92Ml9wZW5kKSk7XG4tXHRcdG1lbXNldChcdTAwMjZsaW5rLVx1MDAzZWxnci1cdTAwM2V3cl90eF9idWZfdjIsIDAsXG4tXHRcdCAgICAgICBzaXplb2YobGluay1cdTAwM2VsZ3ItXHUwMDNld3JfdHhfYnVmX3YyKSk7XG4mIzQzO1x0XHRtZW1zZXQobGluay1cdTAwM2V3cl90eF92Ml9wZW5kLCAwLFxuJiM0MztcdFx0ICAgICAgIHNpemVvZigqbGluay1cdTAwM2V3cl90eF92Ml9wZW5kKSk7XG4mIzQzO1x0XHRtZW1zZXQobGluay1cdTAwM2VsZ3ItXHUwMDNld3JfdHhfYnVmX3YyLCAwLFxuJiM0MztcdFx0ICAgICAgIHNpemVvZigqbGluay1cdTAwM2VsZ3ItXHUwMDNld3JfdHhfYnVmX3YyKSk7XG4gXHRcdHJldHVybiAxO1xuIFx0fVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjE5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTTUMmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtY193cl90eF9nZXRfZnJlZV9zbG90JiMzNDssCiAgICAmIzM0O3NtY193cl90eF9wdXRfc2xvdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgd2FpdCBsb2dpYyBpbiBgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RgIGFuZCBmaXhlcyBhIG1lbXNldCBzaXplIGJ1ZyBpbiBgc21jX3dyX3R4X3B1dF9zbG90YC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgU01DIChTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zKSBwcm90b2NvbCBzdWJzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgQUZfU01DIHNvY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjMTdmZmNhYWNkZGJkZmE1OTVhNGI4OWJkNTMxNDZlNjBlOGNkYTJjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgNiAwNzoxOToxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX3dyLmMgYi9uZXQvc21jL3NtY193ci5jCmluZGV4IDU5YzkyYjQ2OTQ1YzUuLjJjZGQ0MDYzYzEzZDYgMTAwNjQ0Ci0tLSBhL25ldC9zbWMvc21jX3dyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfd3IuYwpAQCAtMTk4LDExICYjNDM7MTk4LDEzIEBAIGludCBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssCiAJCQkgICAgc3RydWN0IHNtY19yZG1hX3dyICoqd3JfcmRtYV9idWYsCiAJCQkgICAgc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKip3cl9wZW5kX3ByaXYpCiB7CiYjNDM7CXVuc2lnbmVkIGxvbmcgdGltZW91dCA9IFNNQ19XUl9UWF9XQUlUX0ZSRUVfU0xPVF9USU1FOwogCXN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyID0gc21jX2dldF9sZ3IobGluayk7CiAJc3RydWN0IHNtY193cl90eF9wZW5kICp3cl9wZW5kOwogCXUzMiBpZHggPSBsaW5rLSZndDt3cl90eF9jbnQ7CiAJc3RydWN0IGliX3NlbmRfd3IgKndyX2liOwogCXU2NCB3cl9pZDsKJiM0MzsJREVGSU5FX1dBSVQod2FpdCk7CiAJaW50IHJjOwogCiAJKndyX2J1ZiA9IE5VTEw7CkBAIC0yMTIsMTcgJiM0MzsyMTQsMzEgQEAgaW50IHNtY193cl90eF9nZXRfZnJlZV9zbG90KHN0cnVjdCBzbWNfbGluayAqbGluaywKIAkJaWYgKHJjKQogCQkJcmV0dXJuIHJjOwogCX0gZWxzZSB7Ci0JCXJjID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoCi0JCQlsaW5rLSZndDt3cl90eF93YWl0LAotCQkJIXNtY19saW5rX3NlbmRhYmxlKGxpbmspIHx8Ci0JCQlsZ3ItJmd0O3Rlcm1pbmF0aW5nIHx8Ci0JCQkoc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RfaW5kZXgobGluaywgJmFtcDtpZHgpICE9IC1FQlVTWSksCi0JCQlTTUNfV1JfVFhfV0FJVF9GUkVFX1NMT1RfVElNRSk7Ci0JCWlmICghcmMpIHsKLQkJCS8qIHRpbWVvdXQgLSB0ZXJtaW5hdGUgbGluayAqLwotCQkJc21jcl9saW5rX2Rvd25fY29uZF9zY2hlZChsaW5rKTsKLQkJCXJldHVybiAtRVBJUEU7CiYjNDM7CQlyYyA9IDA7CiYjNDM7CQlmb3IgKDs7KSB7CiYjNDM7CQkJcHJlcGFyZV90b193YWl0X2V4Y2x1c2l2ZSgmYW1wO2xpbmstJmd0O3dyX3R4X3dhaXQsICZhbXA7d2FpdCwKJiM0MzsJCQkJCQkgIFRBU0tfSU5URVJSVVBUSUJMRSk7CiYjNDM7CQkJaWYgKCFzbWNfbGlua19zZW5kYWJsZShsaW5rKSB8fCBsZ3ItJmd0O3Rlcm1pbmF0aW5nIHx8CiYjNDM7CQkJICAgIHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KGxpbmssICZhbXA7aWR4KSAhPSAtRUJVU1kpCiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCXRpbWVvdXQgPSBzY2hlZHVsZV90aW1lb3V0KHRpbWVvdXQpOwomIzQzOwkJCS8qIHJlLWNoZWNrICovCiYjNDM7CQkJaWYgKCFzbWNfbGlua19zZW5kYWJsZShsaW5rKSB8fCBsZ3ItJmd0O3Rlcm1pbmF0aW5nIHx8CiYjNDM7CQkJICAgIHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KGxpbmssICZhbXA7aWR4KSAhPSAtRUJVU1kpCiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCWlmICghdGltZW91dCkgewomIzQzOwkJCQkvKiB0aW1lb3V0IC0gdGVybWluYXRlIGxpbmsgKi8KJiM0MzsJCQkJc21jcl9saW5rX2Rvd25fY29uZF9zY2hlZChsaW5rKTsKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQkJfQomIzQzOwkJCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkgewomIzQzOwkJCQlyYyA9IC1FUkVTVEFSVFNZUzsKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQkJfQogCQl9CiYjNDM7CQlmaW5pc2hfd2FpdCgmYW1wO2xpbmstJmd0O3dyX3R4X3dhaXQsICZhbXA7d2FpdCk7CiYjNDM7CQlpZiAocmMpCiYjNDM7CQkJcmV0dXJuIHJjOwogCQlpZiAoaWR4ID09IGxpbmstJmd0O3dyX3R4X2NudCkKIAkJCXJldHVybiAtRVBJUEU7CiAJfQpAQCAtMjg4LDEwICYjNDM7MzA0LDEwIEBAIGludCBzbWNfd3JfdHhfcHV0X3Nsb3Qoc3RydWN0IHNtY19saW5rICpsaW5rLAogCX0gZWxzZSBpZiAobGluay0mZ3Q7bGdyLSZndDtzbWNfdmVyc2lvbiA9PSBTTUNfVjIgJmFtcDsmYW1wOwogCQkgICBwZW5kLSZndDtpZHggPT0gbGluay0mZ3Q7d3JfdHhfY250KSB7CiAJCS8qIExhcmdlIHYyIGJ1ZmZlciAqLwotCQltZW1zZXQoJmFtcDtsaW5rLSZndDt3cl90eF92Ml9wZW5kLCAwLAotCQkgICAgICAgc2l6ZW9mKGxpbmstJmd0O3dyX3R4X3YyX3BlbmQpKTsKLQkJbWVtc2V0KCZhbXA7bGluay0mZ3Q7bGdyLSZndDt3cl90eF9idWZfdjIsIDAsCi0JCSAgICAgICBzaXplb2YobGluay0mZ3Q7bGdyLSZndDt3cl90eF9idWZfdjIpKTsKJiM0MzsJCW1lbXNldChsaW5rLSZndDt3cl90eF92Ml9wZW5kLCAwLAomIzQzOwkJICAgICAgIHNpemVvZigqbGluay0mZ3Q7d3JfdHhfdjJfcGVuZCkpOwomIzQzOwkJbWVtc2V0KGxpbmstJmd0O2xnci0mZ3Q7d3JfdHhfYnVmX3YyLCAwLAomIzQzOwkJICAgICAgIHNpemVvZigqbGluay0mZ3Q7bGdyLSZndDt3cl90eF9idWZfdjIpKTsKIAkJcmV0dXJuIDE7CiAJfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MTgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTTUMgV3JpdGUgUGF0aCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCBoZXJlIGFmZmVjdGluZyBgbmV0L3NtYy9zbWNfd3IuY2AuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSBhIGNoYW5nZSBpbiBgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RgLiBUaGV5JiMzOTt2ZSBzd2FwcGVkIG91dCBgd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXRgIGZvciBgcHJlcGFyZV90b193YWl0X2V4Y2x1c2l2ZWAgYW5kIGBzY2hlZHVsZV90aW1lb3V0YC4gSG1tLCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBJIHdvbmRlciB3aGF0IHRoZSByYXRpb25hbGUgaXMgYmVoaW5kIHRoYXQuIEl0IGNvdWxkIGJlIGZvciBhIGZldyByZWFzb25zOyBwZXJoYXBzIHRoZXkgYXJlIGxvb2tpbmcgZm9yIG1vcmUgZ3JhbnVsYXIgY29udHJvbCBvdmVyIHRoZSB3YWl0aW5nIG1lY2hhbmlzbSwgb3IgbWF5YmUgdGhlcmUgYXJlIHN1YnRsZSBkaWZmZXJlbmNlcyBpbiB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIHRoYXQgdGhleSBuZWVkLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBkZWVwZXIgdG8gdW5kZXJzdGFuZCB0aGUgcGVyZm9ybWFuY2Ugb3IgY29ycmVjdG5lc3MgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLgoKVGhlbiwgdGhlcmUmIzM5O3MgYSBmaXggZm9yIGBzbWNfd3JfdHhfcHV0X3Nsb3RgLiBUaGV5IGFyZSBmaXhpbmcgYSBgbWVtc2V0YCBpc3N1ZS4gVGhhdCYjMzk7cyBnb29kOyBhbHdheXMgaW1wb3J0YW50IHRvIGNhdGNoIHRob3NlIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MgZWFybHkuIEJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiBJJiMzOTtkIGd1ZXNzIHRoYXQgdGhleSBwYXNzZWQgdGhlIHdyb25nIGFkZHJlc3MgdG8gYG1lbXNldGAsIG9yIGhhZCBhbiBpc3N1ZSB3aXRoIHRoZSBzaXplIG9mIGRhdGEgY29waWVkIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQuIFRoZXNlIGlzc3VlcyBjYW4gYmUgbmFzdHkgdG8gZGVidWcsIHNvIEkmIzM5O20gZ2xhZCB0aGlzIHdhcyBzcG90dGVkLgoKQmVmb3JlIEkgZ28gZnVydGhlciwgSSB3YW50IHRvIGNvbmZpcm0gdGhhdCBTTUMgaXMgYWN0dWFsbHkgZW5hYmxlZC4gQSBxdWljayBsb29rIGF0IGBuZXQvc21jL0tjb25maWdgIHRlbGxzIG1lIHRoYXQgYENPTkZJR19TTUNgIGlzIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9uLCBzbyB0aGF0IGlzIHRoZSBvcHRpb24gSSBuZWVkIHRvIHNlYXJjaCBmb3IuCgpOb3csIGxldCYjMzk7cyBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoZXJlIGVsc2UgdGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIHdpdGhpbiB0aGUga2VybmVsLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIGNvbnRleHQgYW5kIGhvdyB0aGVzZSBjaGFuZ2VzIHJpcHBsZSB0aHJvdWdoIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGdyYXBocyBhbmQgZGVwZW5kZW5jaWVzIHRvIGZ1bGx5IGdyYXNwIHRoZSBzaWduaWZpY2FuY2Ugb2YgdGhlc2UgbW9kaWZpY2F0aW9ucy4gSXTigJlzIGFsd2F5cyBnb29kIHRvIHNlZSB3aGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGRvZXMgdG8ga25vdyB3aGVyZSB0byBleHBlY3QgYW55IGNoYW5nZXMgaW4gYmVoYXZpb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX3dyX3R4X2dldF9mcmVlX3Nsb3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19jZGMuYz03Mz1pbnQgc21jX2NkY19nZXRfZnJlZV9zbG90KHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubixcbi0tXG5uZXQvc21jL3NtY19jZGMuYy04MC1cbm5ldC9zbWMvc21jX2NkYy5jOjgxOlx0cmMgPSBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdChsaW5rLCBzbWNfY2RjX3R4X2hhbmRsZXIsIHdyX2J1Zixcbm5ldC9zbWMvc21jX2NkYy5jLTgyLVx0XHRcdFx0ICAgICB3cl9yZG1hX2J1Zixcbi0tXG5uZXQvc21jL3NtY19sbGMuYz00MDA9c3RhdGljIGludCBzbWNfbGxjX2FkZF9wZW5kaW5nX3NlbmQoc3RydWN0IHNtY19saW5rICpsaW5rLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTQwNS1cbm5ldC9zbWMvc21jX2xsYy5jOjQwNjpcdHJjID0gc21jX3dyX3R4X2dldF9mcmVlX3Nsb3QobGluaywgc21jX2xsY190eF9oYW5kbGVyLCB3cl9idWYsIE5VTEwsXG5uZXQvc21jL3NtY19sbGMuYy00MDctXHRcdFx0XHQgICAgIHBlbmQpO1xuLS1cbm5ldC9zbWMvc21jX3dyLmM9MTYyPXZvaWQgc21jX3dyX3R4X2NxX2hhbmRsZXIoc3RydWN0IGliX2NxICppYl9jcSwgdm9pZCAqY3FfY29udGV4dClcbi0tXG5uZXQvc21jL3NtY193ci5jLTE3MC1cbm5ldC9zbWMvc21jX3dyLmM6MTcxOnN0YXRpYyBpbmxpbmUgaW50IHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KHN0cnVjdCBzbWNfbGluayAqbGluaywgdTMyICppZHgpXG5uZXQvc21jL3NtY193ci5jLTE3Mi17XG4tLVxubmV0L3NtYy9zbWNfd3IuYy0xODQtLyoqXG5uZXQvc21jL3NtY193ci5jOjE4NTogKiBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdCgpIC0gcmV0dXJucyBidWZmZXIgZm9yIG1lc3NhZ2UgYXNzZW1ibHksXG5uZXQvc21jL3NtY193ci5jLTE4Ni0gKlx0XHRcdGFuZCBzZXRzIGluZm8gZm9yIHBlbmRpbmcgdHJhbnNtaXQgdHJhY2tpbmdcbi0tXG5uZXQvc21jL3NtY193ci5jLTE5NC0gKi9cbm5ldC9zbWMvc21jX3dyLmM6MTk1OmludCBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG5uZXQvc21jL3NtY193ci5jLTE5Ni1cdFx0XHQgICAgc21jX3dyX3R4X2hhbmRsZXIgaGFuZGxlcixcbi0tXG5uZXQvc21jL3NtY193ci5jLTIxMi1cdGlmIChpbl9zb2Z0aXJxKCkgfHwgbGdyLVx1MDAzZXRlcm1pbmF0aW5nKSB7XG5uZXQvc21jL3NtY193ci5jOjIxMzpcdFx0cmMgPSBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdF9pbmRleChsaW5rLCBcdTAwMjZpZHgpO1xubmV0L3NtYy9zbWNfd3IuYy0yMTQtXHRcdGlmIChyYylcbi0tXG5uZXQvc21jL3NtY193ci5jLTIyMS1cdFx0XHRpZiAoIXNtY19saW5rX3NlbmRhYmxlKGxpbmspIHx8IGxnci1cdTAwM2V0ZXJtaW5hdGluZyB8fFxubmV0L3NtYy9zbWNfd3IuYzoyMjI6XHRcdFx0ICAgIHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KGxpbmssIFx1MDAyNmlkeCkgIT0gLUVCVVNZKVxubmV0L3NtYy9zbWNfd3IuYy0yMjMtXHRcdFx0XHRicmVhaztcbi0tXG5uZXQvc21jL3NtY193ci5jLTIyNi1cdFx0XHRpZiAoIXNtY19saW5rX3NlbmRhYmxlKGxpbmspIHx8IGxnci1cdTAwM2V0ZXJtaW5hdGluZyB8fFxubmV0L3NtYy9zbWNfd3IuYzoyMjc6XHRcdFx0ICAgIHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KGxpbmssIFx1MDAyNmlkeCkgIT0gLUVCVVNZKVxubmV0L3NtYy9zbWNfd3IuYy0yMjgtXHRcdFx0XHRicmVhaztcbi0tXG5uZXQvc21jL3NtY193ci5oPTExMT12b2lkIHNtY193cl9hZGRfZGV2KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldik7XG5uZXQvc21jL3NtY193ci5oLTExMi1cbm5ldC9zbWMvc21jX3dyLmg6MTEzOmludCBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHNtY193cl90eF9oYW5kbGVyIGhhbmRsZXIsXG5uZXQvc21jL3NtY193ci5oLTExNC1cdFx0XHQgICAgc3RydWN0IHNtY193cl9idWYgKip3cl9idWYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUzNAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipBbmFseXppbmcgdGhlIFNNQyBXcml0ZSBUWCBTbG90IE1hbmFnZW1lbnQqKgoKQWxyaWdodCwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gbWFuYWdpbmcgd3JpdGUgdHJhbnNtaXQgc2xvdHMgd2l0aGluIHRoZSBTTUMgZnJhbWV3b3JrOiBgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RgIGFuZCBgc21jX3dyX3R4X3B1dF9zbG90YC4gU2VlbXMgbGlrZSBhIGNvcmUgYXJlYSwgbGlrZWx5IGltcGFjdGluZyBwZXJmb3JtYW5jZSBhbmQgZmxvdyBjb250cm9sLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB1bmRlcnN0YW5kaW5nICpob3cqIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgdXNlZCBhbmQgKndoeSogdGhlIGNoYW5nZSBpcyBuZWNlc3NhcnkuCgpJIHNlZSB0aGF0IGBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdGAgaXMgY2FsbGVkIGZyb20gYHNtY19jZGNfZ2V0X2ZyZWVfc2xvdGAgYW5kIGBzbWNfbGxjX2FkZF9wZW5kaW5nX3NlbmRgLiBUaGF0JiMzOTtzIGEgc29saWQgc3RhcnQg4oCTIHRoZXNlIG5hbWVzIHRlbGwgbWUgdGhhdCB0aGVzZSBmdW5jdGlvbnMgcmVsYXRlIHRvIHRoZSBDREMgKENvbm5lY3Rpb24gRGVtdWx0aXBsZXhpbmcgQ29udHJvbCkgbGF5ZXIgYW5kIHRoZSBMTEMgKExpbmsgTGF5ZXIgQ29udHJvbCkgcG9zc2libHkgZm9yIHNlbmQgcmVxdWVzdHMuIEkmIzM5O2xsIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHByZWNpc2UgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aG9zZSBjb21wb25lbnRzLCBvZiBjb3Vyc2UuIEZvciBub3csIHRoaXMgcG9pbnRzIHRvIGdldHRpbmcgYSBmcmVlIHNsb3QgZm9yIG91dGdvaW5nIGRhdGEsIGVpdGhlciBhdCB0aGUgQ0RDIG9yIHRoZSBMTEMuCgpOb3csIGxldCYjMzk7cyBzaGlmdCBmb2N1cyB0byBgc21jX3dyX3R4X3B1dF9zbG90YC4gQmVmb3JlIEkgY2FuIGFuYWx5emUgdGhlIGltcGxpY2F0aW9ucywgSSBuZWVkIHRvIGtub3cgdGhlIGNvbnRleHQgb2YgdGhhdCBmdW5jdGlvbiB0byBkZXRlcm1pbmUgaXRzIHBvc3NpYmxlIGVmZmVjdHMuIFRpbWUgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb2RlIHRvIGdldCB0aGF0IGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX3dyX3R4X3B1dF9zbG90JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfY2RjLmM9NzM9aW50IHNtY19jZGNfZ2V0X2ZyZWVfc2xvdChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sXG4tLVxubmV0L3NtYy9zbWNfY2RjLmMtODYtXHRcdGlmICghcmMpXG5uZXQvc21jL3NtY19jZGMuYzo4NzpcdFx0XHRzbWNfd3JfdHhfcHV0X3Nsb3QobGluayxcbm5ldC9zbWMvc21jX2NkYy5jLTg4LVx0XHRcdFx0XHQgICAoc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKikoKnBlbmQpKTtcbi0tXG5uZXQvc21jL3NtY19jZGMuYz0xNzQ9c3RhdGljIGludCBzbWNyX2NkY19nZXRfc2xvdF9hbmRfbXNnX3NlbmQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTE5My1cdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Y29ubi1cdTAwM2VzZW5kX2xvY2spO1xubmV0L3NtYy9zbWNfY2RjLmM6MTk0Olx0XHRzbWNfd3JfdHhfcHV0X3Nsb3QobGluayxcbm5ldC9zbWMvc21jX2NkYy5jLTE5NS1cdFx0XHRcdCAgIChzdHJ1Y3Qgc21jX3dyX3R4X3BlbmRfcHJpdiAqKXBlbmQpO1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYz0xMDMzPXN0YXRpYyBpbnQgc21jX3N3aXRjaF9jdXJzb3Ioc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX3R4X3BlbmQgKnBlbmQsXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTEwNzYtXHR9IGVsc2Uge1xubmV0L3NtYy9zbWNfY29yZS5jOjEwNzc6XHRcdHNtY193cl90eF9wdXRfc2xvdChjb25uLVx1MDAzZWxuayxcbm5ldC9zbWMvc21jX2NvcmUuYy0xMDc4LVx0XHRcdFx0ICAgKHN0cnVjdCBzbWNfd3JfdHhfcGVuZF9wcml2ICopcGVuZCk7XG4tLVxubmV0L3NtYy9zbWNfdHguYz01NTA9c3RhdGljIGludCBzbWNyX3R4X3NuZGJ1Zl9ub25lbXB0eShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXG4tLVxubmV0L3NtYy9zbWNfdHguYy01ODEtXHRcdC8qIGxpbmsgb2YgY29ubmVjdGlvbiBjaGFuZ2VkLCB0eF93b3JrIHdpbGwgcmVzdGFydCAqL1xubmV0L3NtYy9zbWNfdHguYzo1ODI6XHRcdHNtY193cl90eF9wdXRfc2xvdChsaW5rLFxubmV0L3NtYy9zbWNfdHguYy01ODMtXHRcdFx0XHQgICAoc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKilwZW5kKTtcbi0tXG5uZXQvc21jL3NtY190eC5jLTU4OS1cdFx0aWYgKHJjKSB7XG5uZXQvc21jL3NtY190eC5jOjU5MDpcdFx0XHRzbWNfd3JfdHhfcHV0X3Nsb3QobGluayxcbm5ldC9zbWMvc21jX3R4LmMtNTkxLVx0XHRcdFx0XHQgICAoc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKilwZW5kKTtcbi0tXG5uZXQvc21jL3NtY193ci5jPTI2MD1pbnQgc21jX3dyX3R4X2dldF92Ml9zbG90KHN0cnVjdCBzbWNfbGluayAqbGluayxcbi0tXG5uZXQvc21jL3NtY193ci5jLTI4Ni1cbm5ldC9zbWMvc21jX3dyLmM6Mjg3OmludCBzbWNfd3JfdHhfcHV0X3Nsb3Qoc3RydWN0IHNtY19saW5rICpsaW5rLFxubmV0L3NtYy9zbWNfd3IuYy0yODgtXHRcdCAgICAgICBzdHJ1Y3Qgc21jX3dyX3R4X3BlbmRfcHJpdiAqd3JfcGVuZF9wcml2KVxuLS1cbm5ldC9zbWMvc21jX3dyLmM9MzIwPWludCBzbWNfd3JfdHhfc2VuZChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfd3JfdHhfcGVuZF9wcml2ICpwcml2KVxuLS1cbm5ldC9zbWMvc21jX3dyLmMtMzI5LVx0aWYgKHJjKSB7XG5uZXQvc21jL3NtY193ci5jOjMzMDpcdFx0c21jX3dyX3R4X3B1dF9zbG90KGxpbmssIHByaXYpO1xubmV0L3NtYy9zbWNfd3IuYy0zMzEtXHRcdHNtY3JfbGlua19kb3duX2NvbmRfc2NoZWQobGluayk7XG4tLVxubmV0L3NtYy9zbWNfd3IuYz0zMzY9aW50IHNtY193cl90eF92Ml9zZW5kKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKnByaXYsXG4tLVxubmV0L3NtYy9zbWNfd3IuYy0zNDUtXHRpZiAocmMpIHtcbm5ldC9zbWMvc21jX3dyLmM6MzQ2Olx0XHRzbWNfd3JfdHhfcHV0X3Nsb3QobGluaywgcHJpdik7XG5uZXQvc21jL3NtY193ci5jLTM0Ny1cdFx0c21jcl9saW5rX2Rvd25fY29uZF9zY2hlZChsaW5rKTtcbi0tXG5uZXQvc21jL3NtY193ci5oPTExNz1pbnQgc21jX3dyX3R4X2dldF92Ml9zbG90KHN0cnVjdCBzbWNfbGluayAqbGluayxcbi0tXG5uZXQvc21jL3NtY193ci5oLTEyMC1cdFx0XHQgIHN0cnVjdCBzbWNfd3JfdHhfcGVuZF9wcml2ICoqd3JfcGVuZF9wcml2KTtcbm5ldC9zbWMvc21jX3dyLmg6MTIxOmludCBzbWNfd3JfdHhfcHV0X3Nsb3Qoc3RydWN0IHNtY19saW5rICpsaW5rLFxubmV0L3NtYy9zbWNfd3IuaC0xMjItXHRcdCAgICAgICBzdHJ1Y3Qgc21jX3dyX3R4X3BlbmRfcHJpdiAqd3JfcGVuZF9wcml2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTY2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTTUMgUHJvdG9jb2wgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdHdlYWtpbmcgYHNtY193cl90eF9nZXRfZnJlZV9zbG90YC4gVGhlIGtleSBoZXJlIGlzIHRoZSBzaGlmdCB0byBgcHJlcGFyZV90b193YWl0X2V4Y2x1c2l2ZWAgYW5kIGBzY2hlZHVsZV90aW1lb3V0YC4gUmlnaHQgYXdheSwgSSByZWNvZ25pemUgdGhpcyBhcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIHRoZSBTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zIChTTUMpIHByb3RvY29sIGltcGxlbWVudGF0aW9uLiBDbGVhcmx5LCB0aGV5JiMzOTtyZSBhaW1pbmcgdG8gaW1wcm92ZSBob3cgdGhlIHN5c3RlbSBoYW5kbGVzIHdhaXRpbmcgZm9yIGZyZWUgc2xvdHMgaW4gdGhlIHNoYXJlZCBtZW1vcnkuIFRoaXMgaXMgc2lnbmlmaWNhbnQ7IGFueSBjaGFuZ2UgdG8gdGhlIHdhaXQgbWVjaGFuaXNtIGNhbiBpbXBhY3QgcGVyZm9ybWFuY2UgYW5kIHJlc3BvbnNpdmVuZXNzLCBlc3BlY2lhbGx5IGluIGhpZ2gtdGhyb3VnaHB1dCBlbnZpcm9ubWVudHMgbGV2ZXJhZ2luZyBBRl9TTUMgc29ja2V0cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4KCkdpdmVuIFNNQyYjMzk7cyByb2xlLCBJIHNob3VsZCBjaGVjayB0aGUgYENPTkZJR19TTUNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBOb3csIGxldCBtZSBxdWlja2x5IG5hdmlnYXRlIHRvIGBuZXQvc21jL0tjb25maWdgIHRvIHBpbnBvaW50IGFueSBkZXBlbmRlbmNpZXMgb3Igb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhvc2Ugd2lsbCBiZSBjcnVjaWFsIGZvciBhc3Nlc3NpbmcgdGhlIGJyb2FkZXIgaW1wYWN0IG9mIHRoaXMgcGF0Y2ggYW5kIGNvbmZpcm1pbmcgd2hldGhlciB0aGVyZSBhcmUgYW55IHBvdGVudGlhbCBjb25mbGljdHMgb3Igc2lkZSBlZmZlY3RzIHdpdGhpbiB0aGUgbmV0d29ya2luZyBzdGFjay4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoaXMgY2hhbmdlIGludGVyYWN0cyB3aXRoIG90aGVyIFNNQy1yZWxhdGVkIGZlYXR1cmVzIGFuZCBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBTTUNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IElORklOSUJBTkQgXHUwMDI2XHUwMDI2IERJQlNcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgU01DLVIgcHJvdmlkZXMgYSBcJiMzNDtzb2NrZXRzIG92ZXIgUkRNQVwmIzM0OyBzb2x1dGlvbiBtYWtpbmcgdXNlIG9mXG4gICA3Olx0XHQgIFJETUEgb3ZlciBDb252ZXJnZWQgRXRoZXJuZXQgKFJvQ0UpIHRlY2hub2xvZ3kgdG8gdXBncmFkZVxuICAgODpcdFx0ICBBRl9JTkVUIFRDUCBjb25uZWN0aW9ucyB0cmFuc3BhcmVudGx5LlxuICAgOTpcdFx0ICBUaGUgTGludXggaW1wbGVtZW50YXRpb24gb2YgdGhlIFNNQy1SIHNvbHV0aW9uIGlzIGRlc2lnbmVkIGFzXG4gIDEwOlx0XHQgIGEgc2VwYXJhdGUgc29ja2V0IGZhbWlseSBTTUMuXG4gIDExOlx0XG4gIDEyOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBydW4gU01DIHNvY2tldCBhcHBsaWNhdGlvbnNcbiAgMTM6XHRcbiAgMTQ6XHRjb25maWcgU01DX0RJQUdcbiAgMTU6XHRcdHRyaXN0YXRlIFwmIzM0O1NNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4gIDE2Olx0XHRkZXBlbmRzIG9uIFNNQ1xuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBTdXBwb3J0IGZvciBTTUMgc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlIHVzZWQgYnkgdG9vbHMgc3VjaCBhc1xuICAxOTpcdFx0ICBzbWNzcy5cbiAgMjA6XHRcbiAgMjE6XHRcdCAgaWYgdW5zdXJlLCBzYXkgWS5cbiAgMjI6XHRcbiAgMjM6XHRjb25maWcgU01DX0hTX0NUUkxfQlBGXG4gIDI0Olx0XHRib29sIFwmIzM0O0dlbmVyaWMgZUJQRiBob29rIGZvciBTTUMgaGFuZHNoYWtlIGZsb3dcJiMzNDtcbiAgMjU6XHRcdGRlcGVuZHMgb24gU01DIFx1MDAyNlx1MDAyNiBCUEZfSklUIFx1MDAyNlx1MDAyNiBCUEZfU1lTQ0FMTFxuICAyNjpcdFx0ZGVmYXVsdCB5XG4gIDI3Olx0XHRoZWxwXG4gIDI4Olx0XHQgIFNNQ19IU19DVFJMX0JQRiBlbmFibGVzIHN1cHBvcnQgdG8gcmVnaXN0ZXIgZ2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQ1xuICAyOTpcdFx0ICBoYW5kc2hha2UgZmxvdywgd2hpY2ggb2ZmZXIgbXVjaCBncmVhdGVyIGZsZXhpYmlsaXR5IGluIG1vZGlmeWluZyB0aGUgYmVoYXZpb3JcbiAgMzA6XHRcdCAgb2YgdGhlIFNNQyBwcm90b2NvbCBzdGFjayBjb21wYXJlZCB0byBhIGNvbXBsZXRlIGtlcm5lbC1iYXNlZCBhcHByb2FjaC4gU2VsZWN0XG4gIDMxOlx0XHQgIHRoaXMgb3B0aW9uIGlmIHlvdSB3YW50IGZpbHRyaW5nIHRoZSBoYW5kc2hha2UgcHJvY2VzcyB2aWEgZUJQRiBwcm9ncmFtcy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTY5CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNTI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU01DLVcgQ29uZmlndXJhdGlvbiBhbmQgRnVuY3Rpb25hbCBDaGFuZ2VzKioKCk9rYXksIHNvIGluaXRpYWxseSBJIHdhcyB0aHJvd24gb2ZmIGJ5IHdoYXQgSSAqdGhvdWdodCogSSBzYXcgcmVnYXJkaW5nIGRlcGVuZGVuY2llcy4gSSBrZXB0IHNlY29uZC1ndWVzc2luZyBteXNlbGYgd2l0aCB0aGF0ICYjMzQ7RElCUyYjMzQ7IHRoaW5nLCB0aGlua2luZyBJIHNhdyBpdCBpbiB0aGUgZGVwZW5kZW5jaWVzLiBCdXQgYWZ0ZXIgcmUtcmVhZGluZyB0aGUgc291cmNlIGZpbGUgYW5kIGRvdWJsZS1jaGVja2luZyB0aGUgb3V0cHV0LCB0aGUgY29ycmVjdCBkZXBlbmRlbmN5IGlzIGNsZWFybHkganVzdCBgSU5FVCAmYW1wOyZhbXA7IElORklOSUJBTkRgLiBJIGNsZWFybHkgbWlzcmVhZCB0aGF0IGxpbmUg4oCTIGl0JiMzOTtzIGRlZmluaXRlbHkgYElORVQgJmFtcDsmYW1wOyBJTkZJTklCQU5EYCwgbm90IGBJTkVUICZhbXA7JmFtcDsgSU5GSU5JQkFORCAmYW1wOyZhbXA7IERJQlNgLiBUaGF0IHdhcyBhIGJyaWVmIG1vbWVudCBvZiBjb25mdXNpb24gdGhlcmUuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBgSU5GSU5JQkFORGAgY29uZmlndXJhdGlvbi4gSSByZW1lbWJlciB0aGF0JiMzOTtzIGluIGBkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZ2AsIHNvIEkmIzM5O2xsIGNoZWNrIHRoYXQgdG8gY29uZmlybS4gUmlnaHQsIHNvIHdlIG5lZWQgYENPTkZJR19TTUNgIGFuZCBgQ09ORklHX0lORklOSUJBTkRgLgoKTW92aW5nIG9uLCB0aGUgcGF0Y2ggaXMgZm9jdXNlZCBvbiBtb2RpZnlpbmcgYHNtY193cl90eF9nZXRfZnJlZV9zbG90YCBhbmQgYHNtY193cl90eF9wdXRfc2xvdGAuIFRoZXNlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucywgdGhlIGZ1bmN0aW9uYWwgY2hhbmdlcy4gT2theSwgbGV0JiMzOTtzIHNlZSB3aGVyZSB0aGV5IGFyZSB1c2VkLiBgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RgIGlzIGNhbGxlZCBmcm9tIGBzbWNfY2RjX2dldF9mcmVlX3Nsb3RgIGFuZCBgc21jX2xsY19hZGRfcGVuZGluZ19zZW5kYC4gQW5kLCBgc21jX3dyX3R4X3B1dF9zbG90YCBpcyBjYWxsZWQgYnkgYSBtdWNoIGxhcmdlciBzZXQgb2YgZnVuY3Rpb25zOiBgc21jX2NkY19nZXRfZnJlZV9zbG90YCwgYHNtY3JfY2RjX2dldF9zbG90X2FuZF9tc2dfc2VuZGAsIGBzbWNfc3dpdGNoX2N1cnNvcmAsIGBzbWNyX3R4X3NuZGJ1Zl9ub25lbXB0eWAsIGBzbWNfd3JfdHhfc2VuZGAsIGFuZCBgc21jX3dyX3R4X3YyX3NlbmRgLgoKR2l2ZW4gdGhlaXIgaW1wb3J0YW5jZSBhbmQgdGhhdCB0aGVzZSBhcmUgZXhwb3J0ZWQgZnVuY3Rpb25zLCBJIGNhbiB1c2UgdGhlbSBhcyBGb2N1c1N5bWJvbHMuIFdhaXQsIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IGBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdGAgaXMgYWN0dWFsbHkgZXhwb3J0ZWQuIEkmIzM5O2xsIGNvbmZpcm0gdGhhdCBpbiBgbmV0L3NtYy9zbWNfd3IuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qc21jX3dyX3R4X2dldF9mcmVlX3Nsb3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5OTMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFNNQyBTdWJzeXN0ZW0gTWVtb3J5IE1hbmFnZW1lbnQqKgoKT2theSwgc28gdGhlc2UgdmFyaWFibGVzIGFyZW4mIzM5O3QgZGVmaW5lZCBhcyBgc3RhdGljYCwgYnV0IHRoZXkmIzM5O3JlIHN0aWxsIHVzZWQgaW50ZXJuYWxseSB3aXRoaW4gdGhlIFNNQyBzdWJzeXN0ZW0sIG5vdCBleHBvcnRlZCB0byBtb2R1bGVzLiBUaGF0JiMzOTtzIGEga2V5IHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhleSYjMzk7cmUgYmVpbmcgbWFuYWdlZC4gTGV0IG1lIGNvbmZpcm0gdGhhdCB0aGV5ICphcmVuJiMzOTt0KiBkZWNsYXJlZCBhcyBgc3RhdGljYC4gUmlnaHQsIEkgY2FuIHNlZSB0aGF0IGluIHRoZSBjb2RlLgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCBwb3RlbnRpYWxseSBiZXR0ZXIgZW50cnkgcG9pbnRzIHRvIHVuZGVyc3RhbmQgdGhlIHVzYWdlIHBhdHRlcm4uIE1heWJlIGBzbWNfY2RjX2dldF9mcmVlX3Nsb3RgIG9yIGBzbWNfbGxjX2FkZF9wZW5kaW5nX3NlbmRgPyBOb3BlLCBpdCBsb29rcyBsaWtlIGBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdGAgaXMgYWN0dWFsbHkgYSBnb29kIHBsYWNlIHRvIGNlbnRlciB0aGlzIGludmVzdGlnYXRpb24uIFNhbWUgZ29lcyBmb3IgYHNtY193cl90eF9wdXRfc2xvdGAuCgpBbHJpZ2h0LCBJIHNob3VsZCB2ZXJpZnkgdGhhdCB0aGUgYFNNQ2AgZmFtaWx5IGlzIHJlYWNoYWJsZS4gWWVzLCBpdCYjMzk7cyBhIHNvY2tldCBmYW1pbHksIHRoYXQgbWFrZXMgc2Vuc2UuIExldCBtZSB0YWtlIG5vdGUgb2YgdGhlIGNvbmZpZyBvcHRpb25zIHJlbGF0ZWQgdG8gU01DIGFuZCBJbmZpbmliYW5kLgoKTm93LCBJJiMzOTttIGdvaW5nIHRvIGRvdWJsZS1jaGVjayB0aGUgY2FsbGVycyBvZiBgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RgIHRvIGdldCBhIG1vcmUgY29tcHJlaGVuc2l2ZSB2aWV3IG9mIGhvdyBpdCYjMzk7cyBiZWluZyB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2NkYy5jPTczPWludCBzbWNfY2RjX2dldF9mcmVlX3Nsb3Qoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLFxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTgwLVxubmV0L3NtYy9zbWNfY2RjLmM6ODE6XHRyYyA9IHNtY193cl90eF9nZXRfZnJlZV9zbG90KGxpbmssIHNtY19jZGNfdHhfaGFuZGxlciwgd3JfYnVmLFxubmV0L3NtYy9zbWNfY2RjLmMtODItXHRcdFx0XHQgICAgIHdyX3JkbWFfYnVmLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTQwMD1zdGF0aWMgaW50IHNtY19sbGNfYWRkX3BlbmRpbmdfc2VuZChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtNDA1LVxubmV0L3NtYy9zbWNfbGxjLmM6NDA2Olx0cmMgPSBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdChsaW5rLCBzbWNfbGxjX3R4X2hhbmRsZXIsIHdyX2J1ZiwgTlVMTCxcbm5ldC9zbWMvc21jX2xsYy5jLTQwNy1cdFx0XHRcdCAgICAgcGVuZCk7XG4tLVxubmV0L3NtYy9zbWNfd3IuYz0xNjI9dm9pZCBzbWNfd3JfdHhfY3FfaGFuZGxlcihzdHJ1Y3QgaWJfY3EgKmliX2NxLCB2b2lkICpjcV9jb250ZXh0KVxuLS1cbm5ldC9zbWMvc21jX3dyLmMtMTcwLVxubmV0L3NtYy9zbWNfd3IuYzoxNzE6c3RhdGljIGlubGluZSBpbnQgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RfaW5kZXgoc3RydWN0IHNtY19saW5rICpsaW5rLCB1MzIgKmlkeClcbm5ldC9zbWMvc21jX3dyLmMtMTcyLXtcbi0tXG5uZXQvc21jL3NtY193ci5jLTE4NC0vKipcbm5ldC9zbWMvc21jX3dyLmM6MTg1OiAqIHNtY193cl90eF9nZXRfZnJlZV9zbG90KCkgLSByZXR1cm5zIGJ1ZmZlciBmb3IgbWVzc2FnZSBhc3NlbWJseSxcbm5ldC9zbWMvc21jX3dyLmMtMTg2LSAqXHRcdFx0YW5kIHNldHMgaW5mbyBmb3IgcGVuZGluZyB0cmFuc21pdCB0cmFja2luZ1xuLS1cbm5ldC9zbWMvc21jX3dyLmMtMTk0LSAqL1xubmV0L3NtYy9zbWNfd3IuYzoxOTU6aW50IHNtY193cl90eF9nZXRfZnJlZV9zbG90KHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX3dyLmMtMTk2LVx0XHRcdCAgICBzbWNfd3JfdHhfaGFuZGxlciBoYW5kbGVyLFxuLS1cbm5ldC9zbWMvc21jX3dyLmMtMjEyLVx0aWYgKGluX3NvZnRpcnEoKSB8fCBsZ3ItXHUwMDNldGVybWluYXRpbmcpIHtcbm5ldC9zbWMvc21jX3dyLmM6MjEzOlx0XHRyYyA9IHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KGxpbmssIFx1MDAyNmlkeCk7XG5uZXQvc21jL3NtY193ci5jLTIxNC1cdFx0aWYgKHJjKVxuLS1cbm5ldC9zbWMvc21jX3dyLmMtMjIxLVx0XHRcdGlmICghc21jX2xpbmtfc2VuZGFibGUobGluaykgfHwgbGdyLVx1MDAzZXRlcm1pbmF0aW5nIHx8XG5uZXQvc21jL3NtY193ci5jOjIyMjpcdFx0XHQgICAgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RfaW5kZXgobGluaywgXHUwMDI2aWR4KSAhPSAtRUJVU1kpXG5uZXQvc21jL3NtY193ci5jLTIyMy1cdFx0XHRcdGJyZWFrO1xuLS1cbm5ldC9zbWMvc21jX3dyLmMtMjI2LVx0XHRcdGlmICghc21jX2xpbmtfc2VuZGFibGUobGluaykgfHwgbGdyLVx1MDAzZXRlcm1pbmF0aW5nIHx8XG5uZXQvc21jL3NtY193ci5jOjIyNzpcdFx0XHQgICAgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RfaW5kZXgobGluaywgXHUwMDI2aWR4KSAhPSAtRUJVU1kpXG5uZXQvc21jL3NtY193ci5jLTIyOC1cdFx0XHRcdGJyZWFrO1xuLS1cbm5ldC9zbWMvc21jX3dyLmg9MTExPXZvaWQgc21jX3dyX2FkZF9kZXYoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KTtcbm5ldC9zbWMvc21jX3dyLmgtMTEyLVxubmV0L3NtYy9zbWNfd3IuaDoxMTM6aW50IHNtY193cl90eF9nZXRfZnJlZV9zbG90KHN0cnVjdCBzbWNfbGluayAqbGluaywgc21jX3dyX3R4X2hhbmRsZXIgaGFuZGxlcixcbm5ldC9zbWMvc21jX3dyLmgtMTE0LVx0XHRcdCAgICBzdHJ1Y3Qgc21jX3dyX2J1ZiAqKndyX2J1ZixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTUzOAoJCQkJCQkJb3V0cHV0OiAxMzMKCQkJCQkJCXRob3VnaHRzOiAyMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUmVjZW50IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUuIEl0IGxvb2tzIGxpa2UgaXQgYWRkcmVzc2VzIGEgY291cGxlIG9mIGJ1Z3Mgd2l0aGluIHRoZSBTTUMgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGZ1bmN0aW9ucyBgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RgIGFuZCBgc21jX3dyX3R4X3B1dF9zbG90YC4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIGBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdGAgaXMgYmVpbmcgdXBkYXRlZCB0byB1c2UgYSBtYW51YWwgd2FpdCBsb29wIHdpdGggYHByZXBhcmVfdG9fd2FpdF9leGNsdXNpdmVgIGFuZCBgc2NoZWR1bGVfdGltZW91dGAsIHJlcGxhY2luZyBgd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXRgLiBUaGUgb3RoZXIgZnVuY3Rpb24sIGBzbWNfd3JfdHhfcHV0X3Nsb3RgLCBoYXMgYSBmaXggcmVsYXRlZCB0byB0aGUgc2l6ZSBhcmd1bWVudCBvZiBgbWVtc2V0YC4gVGhlc2UgYXJlIGNvcmUgZnVuY3Rpb25hbCBhZGp1c3RtZW50cywgbm90aGluZyB0cml2aWFsIGhlcmUuCgpUaGlzIHdhcnJhbnRzIHNvbWUgc2VyaW91cyBhdHRlbnRpb24uIFNpbmNlIGl0JiMzOTtzIGNoYW5naW5nIGNvcmUgZnVuY3Rpb25hbGl0eSwgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgaXMgc2V0IHRvIFRydWUuIEFuZCwgSSBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgY2hhbmdlcyB0byBgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RgIGFuZCBgc21jX3dyX3R4X3B1dF9zbG90YC4KCk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29uZmlndXJhdGlvbnMgYXJlIGFmZmVjdGVkLiBUaGUgcGF0Y2ggc3BlY2lmaWVzIGBFbmFibGVDb25maWdzOiBTTUMsIElORklOSUJBTkRgLiBCdXQgSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueXRoaW5nLiBMZXQmIzM5O3Mgc2VlIGlmIGBJTkZJTklCQU5EYCBpcyBhY3R1YWxseSBuZWVkZWQgdG8gY29tcGlsZSBTTUM/IFllcCwgYGRlcGVuZHMgb24gSU5FVCAmYW1wOyZhbXA7IElORklOSUJBTkRgLiBTaW5jZSBgSU5FVGAgaXMgc3RhbmRhcmQsIGBTTUNgIGFuZCBgSU5GSU5JQkFORGAgYXJlIHRoZSBuZWNlc3NhcnkgY29uZmlncy4KClJpZ2h0LCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IGBTTUNgIGFuZCBgSU5GSU5JQkFORGAgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgaGVyZS4gSSYjMzk7bGwgbmVlZCB0byBydW4gdGVzdHMgd2l0aCB0aGVzZSBlbmFibGVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGltcGFjdC4gSSBhbSByZWFkeSB0byBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U01DJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdCYjMzQ7LAogICAgJiMzNDtzbWNfd3JfdHhfcHV0X3Nsb3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdhaXQgbG9naWMgaW4gYHNtY193cl90eF9nZXRfZnJlZV9zbG90YCBhbmQgZml4ZXMgYSBtZW1zZXQgc2l6ZSBidWcgaW4gYHNtY193cl90eF9wdXRfc2xvdGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIFNNQyAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykgcHJvdG9jb2wgc3Vic3lzdGVtLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIEFGX1NNQyBzb2NrZXRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTTUMmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtY193cl90eF9nZXRfZnJlZV9zbG90JiMzNDssCiAgICAmIzM0O3NtY193cl90eF9wdXRfc2xvdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgd2FpdCBsb2dpYyBpbiBgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RgIGFuZCBmaXhlcyBhIG1lbXNldCBzaXplIGJ1ZyBpbiBgc21jX3dyX3R4X3B1dF9zbG90YC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgU01DIChTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zKSBwcm90b2NvbCBzdWJzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgQUZfU01DIHNvY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzoxOToxNi45NzM0OTMzMjdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTgzNDEwNzI4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIklORklOSUJBTkRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdFwiLFxuICAgIFwic21jX3dyX3R4X3B1dF9zbG90XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdhaXQgbG9naWMgaW4gYHNtY193cl90eF9nZXRfZnJlZV9zbG90YCBhbmQgZml4ZXMgYSBtZW1zZXQgc2l6ZSBidWcgaW4gYHNtY193cl90eF9wdXRfc2xvdGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIFNNQyAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykgcHJvdG9jb2wgc3Vic3lzdGVtLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIEFGX1NNQyBzb2NrZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzoxOToxNi45NzM0OTk2NzhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDMyMTQyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGMxN2ZmY2FhY2RkYmRmYTU5NWE0Yjg5YmQ1MzE0NmU2MGU4Y2RhMmNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgNiAwNzoxOToxNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY193ci5jIGIvbmV0L3NtYy9zbWNfd3IuY1xcbmluZGV4IDU5YzkyYjQ2OTQ1YzUuLjJjZGQ0MDYzYzEzZDYgMTAwNjQ0XFxuLS0tIGEvbmV0L3NtYy9zbWNfd3IuY1xcbisrKyBiL25ldC9zbWMvc21jX3dyLmNcXG5AQCAtMTk4LDExICsxOTgsMTMgQEAgaW50IHNtY193cl90eF9nZXRfZnJlZV9zbG90KHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4gXFx0XFx0XFx0ICAgIHN0cnVjdCBzbWNfcmRtYV93ciAqKndyX3JkbWFfYnVmLFxcbiBcXHRcXHRcXHQgICAgc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKip3cl9wZW5kX3ByaXYpXFxuIHtcXG4rXFx0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gU01DX1dSX1RYX1dBSVRfRlJFRV9TTE9UX1RJTUU7XFxuIFxcdHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyID0gc21jX2dldF9sZ3IobGluayk7XFxuIFxcdHN0cnVjdCBzbWNfd3JfdHhfcGVuZCAqd3JfcGVuZDtcXG4gXFx0dTMyIGlkeCA9IGxpbmstXFx1MDAzZXdyX3R4X2NudDtcXG4gXFx0c3RydWN0IGliX3NlbmRfd3IgKndyX2liO1xcbiBcXHR1NjQgd3JfaWQ7XFxuK1xcdERFRklORV9XQUlUKHdhaXQpO1xcbiBcXHRpbnQgcmM7XFxuIFxcbiBcXHQqd3JfYnVmID0gTlVMTDtcXG5AQCAtMjEyLDE3ICsyMTQsMzEgQEAgaW50IHNtY193cl90eF9nZXRfZnJlZV9zbG90KHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4gXFx0XFx0aWYgKHJjKVxcbiBcXHRcXHRcXHRyZXR1cm4gcmM7XFxuIFxcdH0gZWxzZSB7XFxuLVxcdFxcdHJjID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoXFxuLVxcdFxcdFxcdGxpbmstXFx1MDAzZXdyX3R4X3dhaXQsXFxuLVxcdFxcdFxcdCFzbWNfbGlua19zZW5kYWJsZShsaW5rKSB8fFxcbi1cXHRcXHRcXHRsZ3ItXFx1MDAzZXRlcm1pbmF0aW5nIHx8XFxuLVxcdFxcdFxcdChzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdF9pbmRleChsaW5rLCBcXHUwMDI2aWR4KSAhPSAtRUJVU1kpLFxcbi1cXHRcXHRcXHRTTUNfV1JfVFhfV0FJVF9GUkVFX1NMT1RfVElNRSk7XFxuLVxcdFxcdGlmICghcmMpIHtcXG4tXFx0XFx0XFx0LyogdGltZW91dCAtIHRlcm1pbmF0ZSBsaW5rICovXFxuLVxcdFxcdFxcdHNtY3JfbGlua19kb3duX2NvbmRfc2NoZWQobGluayk7XFxuLVxcdFxcdFxcdHJldHVybiAtRVBJUEU7XFxuK1xcdFxcdHJjID0gMDtcXG4rXFx0XFx0Zm9yICg7Oykge1xcbitcXHRcXHRcXHRwcmVwYXJlX3RvX3dhaXRfZXhjbHVzaXZlKFxcdTAwMjZsaW5rLVxcdTAwM2V3cl90eF93YWl0LCBcXHUwMDI2d2FpdCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICBUQVNLX0lOVEVSUlVQVElCTEUpO1xcbitcXHRcXHRcXHRpZiAoIXNtY19saW5rX3NlbmRhYmxlKGxpbmspIHx8IGxnci1cXHUwMDNldGVybWluYXRpbmcgfHxcXG4rXFx0XFx0XFx0ICAgIHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KGxpbmssIFxcdTAwMjZpZHgpICE9IC1FQlVTWSlcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdHRpbWVvdXQgPSBzY2hlZHVsZV90aW1lb3V0KHRpbWVvdXQpO1xcbitcXHRcXHRcXHQvKiByZS1jaGVjayAqL1xcbitcXHRcXHRcXHRpZiAoIXNtY19saW5rX3NlbmRhYmxlKGxpbmspIHx8IGxnci1cXHUwMDNldGVybWluYXRpbmcgfHxcXG4rXFx0XFx0XFx0ICAgIHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KGxpbmssIFxcdTAwMjZpZHgpICE9IC1FQlVTWSlcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdGlmICghdGltZW91dCkge1xcbitcXHRcXHRcXHRcXHQvKiB0aW1lb3V0IC0gdGVybWluYXRlIGxpbmsgKi9cXG4rXFx0XFx0XFx0XFx0c21jcl9saW5rX2Rvd25fY29uZF9zY2hlZChsaW5rKTtcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdH1cXG4rXFx0XFx0XFx0aWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSB7XFxuK1xcdFxcdFxcdFxcdHJjID0gLUVSRVNUQVJUU1lTO1xcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuK1xcdFxcdGZpbmlzaF93YWl0KFxcdTAwMjZsaW5rLVxcdTAwM2V3cl90eF93YWl0LCBcXHUwMDI2d2FpdCk7XFxuK1xcdFxcdGlmIChyYylcXG4rXFx0XFx0XFx0cmV0dXJuIHJjO1xcbiBcXHRcXHRpZiAoaWR4ID09IGxpbmstXFx1MDAzZXdyX3R4X2NudClcXG4gXFx0XFx0XFx0cmV0dXJuIC1FUElQRTtcXG4gXFx0fVxcbkBAIC0yODgsMTAgKzMwNCwxMCBAQCBpbnQgc21jX3dyX3R4X3B1dF9zbG90KHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4gXFx0fSBlbHNlIGlmIChsaW5rLVxcdTAwM2VsZ3ItXFx1MDAzZXNtY192ZXJzaW9uID09IFNNQ19WMiBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICBwZW5kLVxcdTAwM2VpZHggPT0gbGluay1cXHUwMDNld3JfdHhfY250KSB7XFxuIFxcdFxcdC8qIExhcmdlIHYyIGJ1ZmZlciAqL1xcbi1cXHRcXHRtZW1zZXQoXFx1MDAyNmxpbmstXFx1MDAzZXdyX3R4X3YyX3BlbmQsIDAsXFxuLVxcdFxcdCAgICAgICBzaXplb2YobGluay1cXHUwMDNld3JfdHhfdjJfcGVuZCkpO1xcbi1cXHRcXHRtZW1zZXQoXFx1MDAyNmxpbmstXFx1MDAzZWxnci1cXHUwMDNld3JfdHhfYnVmX3YyLCAwLFxcbi1cXHRcXHQgICAgICAgc2l6ZW9mKGxpbmstXFx1MDAzZWxnci1cXHUwMDNld3JfdHhfYnVmX3YyKSk7XFxuK1xcdFxcdG1lbXNldChsaW5rLVxcdTAwM2V3cl90eF92Ml9wZW5kLCAwLFxcbitcXHRcXHQgICAgICAgc2l6ZW9mKCpsaW5rLVxcdTAwM2V3cl90eF92Ml9wZW5kKSk7XFxuK1xcdFxcdG1lbXNldChsaW5rLVxcdTAwM2VsZ3ItXFx1MDAzZXdyX3R4X2J1Zl92MiwgMCxcXG4rXFx0XFx0ICAgICAgIHNpemVvZigqbGluay1cXHUwMDNlbGdyLVxcdTAwM2V3cl90eF9idWZfdjIpKTtcXG4gXFx0XFx0cmV0dXJuIDE7XFxuIFxcdH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjE5OjE3LjQxNDYwNTI3NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM1MzkyOTg0NTc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNNQ1wiLFxuICAgIFwiSU5GSU5JQkFORFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNtY193cl90eF9nZXRfZnJlZV9zbG90XCIsXG4gICAgXCJzbWNfd3JfdHhfcHV0X3Nsb3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgd2FpdCBsb2dpYyBpbiBgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RgIGFuZCBmaXhlcyBhIG1lbXNldCBzaXplIGJ1ZyBpbiBgc21jX3dyX3R4X3B1dF9zbG90YC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgU01DIChTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zKSBwcm90b2NvbCBzdWJzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgQUZfU01DIHNvY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGMxN2ZmY2FhY2RkYmRmYTU5NWE0Yjg5YmQ1MzE0NmU2MGU4Y2RhMmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyA2IDA3OjE5OjE2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfd3IuYyBiL25ldC9zbWMvc21jX3dyLmNcbmluZGV4IDU5YzkyYjQ2OTQ1YzUuLjJjZGQ0MDYzYzEzZDYgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY193ci5jXG4rKysgYi9uZXQvc21jL3NtY193ci5jXG5AQCAtMTk4LDExICsxOTgsMTMgQEAgaW50IHNtY193cl90eF9nZXRfZnJlZV9zbG90KHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcdFx0XHQgICAgc3RydWN0IHNtY19yZG1hX3dyICoqd3JfcmRtYV9idWYsXG4gXHRcdFx0ICAgIHN0cnVjdCBzbWNfd3JfdHhfcGVuZF9wcml2ICoqd3JfcGVuZF9wcml2KVxuIHtcbitcdHVuc2lnbmVkIGxvbmcgdGltZW91dCA9IFNNQ19XUl9UWF9XQUlUX0ZSRUVfU0xPVF9USU1FO1xuIFx0c3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IgPSBzbWNfZ2V0X2xncihsaW5rKTtcbiBcdHN0cnVjdCBzbWNfd3JfdHhfcGVuZCAqd3JfcGVuZDtcbiBcdHUzMiBpZHggPSBsaW5rLVx1MDAzZXdyX3R4X2NudDtcbiBcdHN0cnVjdCBpYl9zZW5kX3dyICp3cl9pYjtcbiBcdHU2NCB3cl9pZDtcbitcdERFRklORV9XQUlUKHdhaXQpO1xuIFx0aW50IHJjO1xuIFxuIFx0KndyX2J1ZiA9IE5VTEw7XG5AQCAtMjEyLDE3ICsyMTQsMzEgQEAgaW50IHNtY193cl90eF9nZXRfZnJlZV9zbG90KHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcdFx0aWYgKHJjKVxuIFx0XHRcdHJldHVybiByYztcbiBcdH0gZWxzZSB7XG4tXHRcdHJjID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoXG4tXHRcdFx0bGluay1cdTAwM2V3cl90eF93YWl0LFxuLVx0XHRcdCFzbWNfbGlua19zZW5kYWJsZShsaW5rKSB8fFxuLVx0XHRcdGxnci1cdTAwM2V0ZXJtaW5hdGluZyB8fFxuLVx0XHRcdChzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdF9pbmRleChsaW5rLCBcdTAwMjZpZHgpICE9IC1FQlVTWSksXG4tXHRcdFx0U01DX1dSX1RYX1dBSVRfRlJFRV9TTE9UX1RJTUUpO1xuLVx0XHRpZiAoIXJjKSB7XG4tXHRcdFx0LyogdGltZW91dCAtIHRlcm1pbmF0ZSBsaW5rICovXG4tXHRcdFx0c21jcl9saW5rX2Rvd25fY29uZF9zY2hlZChsaW5rKTtcbi1cdFx0XHRyZXR1cm4gLUVQSVBFO1xuK1x0XHRyYyA9IDA7XG4rXHRcdGZvciAoOzspIHtcbitcdFx0XHRwcmVwYXJlX3RvX3dhaXRfZXhjbHVzaXZlKFx1MDAyNmxpbmstXHUwMDNld3JfdHhfd2FpdCwgXHUwMDI2d2FpdCxcbitcdFx0XHRcdFx0XHQgIFRBU0tfSU5URVJSVVBUSUJMRSk7XG4rXHRcdFx0aWYgKCFzbWNfbGlua19zZW5kYWJsZShsaW5rKSB8fCBsZ3ItXHUwMDNldGVybWluYXRpbmcgfHxcbitcdFx0XHQgICAgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RfaW5kZXgobGluaywgXHUwMDI2aWR4KSAhPSAtRUJVU1kpXG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHR0aW1lb3V0ID0gc2NoZWR1bGVfdGltZW91dCh0aW1lb3V0KTtcbitcdFx0XHQvKiByZS1jaGVjayAqL1xuK1x0XHRcdGlmICghc21jX2xpbmtfc2VuZGFibGUobGluaykgfHwgbGdyLVx1MDAzZXRlcm1pbmF0aW5nIHx8XG4rXHRcdFx0ICAgIHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KGxpbmssIFx1MDAyNmlkeCkgIT0gLUVCVVNZKVxuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdFx0aWYgKCF0aW1lb3V0KSB7XG4rXHRcdFx0XHQvKiB0aW1lb3V0IC0gdGVybWluYXRlIGxpbmsgKi9cbitcdFx0XHRcdHNtY3JfbGlua19kb3duX2NvbmRfc2NoZWQobGluayk7XG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHR9XG4rXHRcdFx0aWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSB7XG4rXHRcdFx0XHRyYyA9IC1FUkVTVEFSVFNZUztcbitcdFx0XHRcdGJyZWFrO1xuK1x0XHRcdH1cbiBcdFx0fVxuK1x0XHRmaW5pc2hfd2FpdChcdTAwMjZsaW5rLVx1MDAzZXdyX3R4X3dhaXQsIFx1MDAyNndhaXQpO1xuK1x0XHRpZiAocmMpXG4rXHRcdFx0cmV0dXJuIHJjO1xuIFx0XHRpZiAoaWR4ID09IGxpbmstXHUwMDNld3JfdHhfY250KVxuIFx0XHRcdHJldHVybiAtRVBJUEU7XG4gXHR9XG5AQCAtMjg4LDEwICszMDQsMTAgQEAgaW50IHNtY193cl90eF9wdXRfc2xvdChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4gXHR9IGVsc2UgaWYgKGxpbmstXHUwMDNlbGdyLVx1MDAzZXNtY192ZXJzaW9uID09IFNNQ19WMiBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgcGVuZC1cdTAwM2VpZHggPT0gbGluay1cdTAwM2V3cl90eF9jbnQpIHtcbiBcdFx0LyogTGFyZ2UgdjIgYnVmZmVyICovXG4tXHRcdG1lbXNldChcdTAwMjZsaW5rLVx1MDAzZXdyX3R4X3YyX3BlbmQsIDAsXG4tXHRcdCAgICAgICBzaXplb2YobGluay1cdTAwM2V3cl90eF92Ml9wZW5kKSk7XG4tXHRcdG1lbXNldChcdTAwMjZsaW5rLVx1MDAzZWxnci1cdTAwM2V3cl90eF9idWZfdjIsIDAsXG4tXHRcdCAgICAgICBzaXplb2YobGluay1cdTAwM2VsZ3ItXHUwMDNld3JfdHhfYnVmX3YyKSk7XG4rXHRcdG1lbXNldChsaW5rLVx1MDAzZXdyX3R4X3YyX3BlbmQsIDAsXG4rXHRcdCAgICAgICBzaXplb2YoKmxpbmstXHUwMDNld3JfdHhfdjJfcGVuZCkpO1xuK1x0XHRtZW1zZXQobGluay1cdTAwM2VsZ3ItXHUwMDNld3JfdHhfYnVmX3YyLCAwLFxuK1x0XHQgICAgICAgc2l6ZW9mKCpsaW5rLVx1MDAzZWxnci1cdTAwM2V3cl90eF9idWZfdjIpKTtcbiBcdFx0cmV0dXJuIDE7XG4gXHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzoxOToxNy40MTQ2MDY3MDVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDk3MzU0OTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU01DIFdyaXRlIFBhdGggUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgYWZmZWN0aW5nIGBuZXQvc21jL3NtY193ci5jYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIGEgY2hhbmdlIGluIGBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdGAuIFRoZXkndmUgc3dhcHBlZCBvdXQgYHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZV90aW1lb3V0YCBmb3IgYHByZXBhcmVfdG9fd2FpdF9leGNsdXNpdmVgIGFuZCBgc2NoZWR1bGVfdGltZW91dGAuIEhtbSwgdGhhdCdzIGludGVyZXN0aW5nLiBJIHdvbmRlciB3aGF0IHRoZSByYXRpb25hbGUgaXMgYmVoaW5kIHRoYXQuIEl0IGNvdWxkIGJlIGZvciBhIGZldyByZWFzb25zOyBwZXJoYXBzIHRoZXkgYXJlIGxvb2tpbmcgZm9yIG1vcmUgZ3JhbnVsYXIgY29udHJvbCBvdmVyIHRoZSB3YWl0aW5nIG1lY2hhbmlzbSwgb3IgbWF5YmUgdGhlcmUgYXJlIHN1YnRsZSBkaWZmZXJlbmNlcyBpbiB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIHRoYXQgdGhleSBuZWVkLiBJJ2xsIG5lZWQgdG8gZGlnIGRlZXBlciB0byB1bmRlcnN0YW5kIHRoZSBwZXJmb3JtYW5jZSBvciBjb3JyZWN0bmVzcyBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuXG5cblRoZW4sIHRoZXJlJ3MgYSBmaXggZm9yIGBzbWNfd3JfdHhfcHV0X3Nsb3RgLiBUaGV5IGFyZSBmaXhpbmcgYSBgbWVtc2V0YCBpc3N1ZS4gVGhhdCdzIGdvb2Q7IGFsd2F5cyBpbXBvcnRhbnQgdG8gY2F0Y2ggdGhvc2UgbWVtb3J5IGNvcnJ1cHRpb24gYnVncyBlYXJseS4gQmFzZWQgb24gdGhlIGRlc2NyaXB0aW9uIEknZCBndWVzcyB0aGF0IHRoZXkgcGFzc2VkIHRoZSB3cm9uZyBhZGRyZXNzIHRvIGBtZW1zZXRgLCBvciBoYWQgYW4gaXNzdWUgd2l0aCB0aGUgc2l6ZSBvZiBkYXRhIGNvcGllZCBvciBzb21ldGhpbmcgbGlrZSB0aGF0LiBUaGVzZSBpc3N1ZXMgY2FuIGJlIG5hc3R5IHRvIGRlYnVnLCBzbyBJJ20gZ2xhZCB0aGlzIHdhcyBzcG90dGVkLlxuXG5CZWZvcmUgSSBnbyBmdXJ0aGVyLCBJIHdhbnQgdG8gY29uZmlybSB0aGF0IFNNQyBpcyBhY3R1YWxseSBlbmFibGVkLiBBIHF1aWNrIGxvb2sgYXQgYG5ldC9zbWMvS2NvbmZpZ2AgdGVsbHMgbWUgdGhhdCBgQ09ORklHX1NNQ2AgaXMgdGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb24sIHNvIHRoYXQgaXMgdGhlIG9wdGlvbiBJIG5lZWQgdG8gc2VhcmNoIGZvci5cblxuTm93LCBsZXQncyBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoZXJlIGVsc2UgdGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIHdpdGhpbiB0aGUga2VybmVsLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIGNvbnRleHQgYW5kIGhvdyB0aGVzZSBjaGFuZ2VzIHJpcHBsZSB0aHJvdWdoIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGdyYXBocyBhbmQgZGVwZW5kZW5jaWVzIHRvIGZ1bGx5IGdyYXNwIHRoZSBzaWduaWZpY2FuY2Ugb2YgdGhlc2UgbW9kaWZpY2F0aW9ucy4gSXTigJlzIGFsd2F5cyBnb29kIHRvIHNlZSB3aGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGRvZXMgdG8ga25vdyB3aGVyZSB0byBleHBlY3QgYW55IGNoYW5nZXMgaW4gYmVoYXZpb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzoxOToyMi45MTE5NjM2NTVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc4MTQ2MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jX3dyX3R4X2dldF9mcmVlX3Nsb3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfY2RjLmM9NzM9aW50IHNtY19jZGNfZ2V0X2ZyZWVfc2xvdChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy04MC1cXG5uZXQvc21jL3NtY19jZGMuYzo4MTpcXHRyYyA9IHNtY193cl90eF9nZXRfZnJlZV9zbG90KGxpbmssIHNtY19jZGNfdHhfaGFuZGxlciwgd3JfYnVmLFxcbm5ldC9zbWMvc21jX2NkYy5jLTgyLVxcdFxcdFxcdFxcdCAgICAgd3JfcmRtYV9idWYsXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz00MDA9c3RhdGljIGludCBzbWNfbGxjX2FkZF9wZW5kaW5nX3NlbmQoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtNDA1LVxcbm5ldC9zbWMvc21jX2xsYy5jOjQwNjpcXHRyYyA9IHNtY193cl90eF9nZXRfZnJlZV9zbG90KGxpbmssIHNtY19sbGNfdHhfaGFuZGxlciwgd3JfYnVmLCBOVUxMLFxcbm5ldC9zbWMvc21jX2xsYy5jLTQwNy1cXHRcXHRcXHRcXHQgICAgIHBlbmQpO1xcbi0tXFxubmV0L3NtYy9zbWNfd3IuYz0xNjI9dm9pZCBzbWNfd3JfdHhfY3FfaGFuZGxlcihzdHJ1Y3QgaWJfY3EgKmliX2NxLCB2b2lkICpjcV9jb250ZXh0KVxcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy0xNzAtXFxubmV0L3NtYy9zbWNfd3IuYzoxNzE6c3RhdGljIGlubGluZSBpbnQgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RfaW5kZXgoc3RydWN0IHNtY19saW5rICpsaW5rLCB1MzIgKmlkeClcXG5uZXQvc21jL3NtY193ci5jLTE3Mi17XFxuLS1cXG5uZXQvc21jL3NtY193ci5jLTE4NC0vKipcXG5uZXQvc21jL3NtY193ci5jOjE4NTogKiBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdCgpIC0gcmV0dXJucyBidWZmZXIgZm9yIG1lc3NhZ2UgYXNzZW1ibHksXFxubmV0L3NtYy9zbWNfd3IuYy0xODYtICpcXHRcXHRcXHRhbmQgc2V0cyBpbmZvIGZvciBwZW5kaW5nIHRyYW5zbWl0IHRyYWNraW5nXFxuLS1cXG5uZXQvc21jL3NtY193ci5jLTE5NC0gKi9cXG5uZXQvc21jL3NtY193ci5jOjE5NTppbnQgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3Qoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbm5ldC9zbWMvc21jX3dyLmMtMTk2LVxcdFxcdFxcdCAgICBzbWNfd3JfdHhfaGFuZGxlciBoYW5kbGVyLFxcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy0yMTItXFx0aWYgKGluX3NvZnRpcnEoKSB8fCBsZ3ItXFx1MDAzZXRlcm1pbmF0aW5nKSB7XFxubmV0L3NtYy9zbWNfd3IuYzoyMTM6XFx0XFx0cmMgPSBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdF9pbmRleChsaW5rLCBcXHUwMDI2aWR4KTtcXG5uZXQvc21jL3NtY193ci5jLTIxNC1cXHRcXHRpZiAocmMpXFxuLS1cXG5uZXQvc21jL3NtY193ci5jLTIyMS1cXHRcXHRcXHRpZiAoIXNtY19saW5rX3NlbmRhYmxlKGxpbmspIHx8IGxnci1cXHUwMDNldGVybWluYXRpbmcgfHxcXG5uZXQvc21jL3NtY193ci5jOjIyMjpcXHRcXHRcXHQgICAgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RfaW5kZXgobGluaywgXFx1MDAyNmlkeCkgIT0gLUVCVVNZKVxcbm5ldC9zbWMvc21jX3dyLmMtMjIzLVxcdFxcdFxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy0yMjYtXFx0XFx0XFx0aWYgKCFzbWNfbGlua19zZW5kYWJsZShsaW5rKSB8fCBsZ3ItXFx1MDAzZXRlcm1pbmF0aW5nIHx8XFxubmV0L3NtYy9zbWNfd3IuYzoyMjc6XFx0XFx0XFx0ICAgIHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KGxpbmssIFxcdTAwMjZpZHgpICE9IC1FQlVTWSlcXG5uZXQvc21jL3NtY193ci5jLTIyOC1cXHRcXHRcXHRcXHRicmVhaztcXG4tLVxcbm5ldC9zbWMvc21jX3dyLmg9MTExPXZvaWQgc21jX3dyX2FkZF9kZXYoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KTtcXG5uZXQvc21jL3NtY193ci5oLTExMi1cXG5uZXQvc21jL3NtY193ci5oOjExMzppbnQgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3Qoc3RydWN0IHNtY19saW5rICpsaW5rLCBzbWNfd3JfdHhfaGFuZGxlciBoYW5kbGVyLFxcbm5ldC9zbWMvc21jX3dyLmgtMTE0LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc21jX3dyX2J1ZiAqKndyX2J1ZixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6MTk6MjIuOTU5NzgyNjI0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIwMDE0ODcxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkFuYWx5emluZyB0aGUgU01DIFdyaXRlIFRYIFNsb3QgTWFuYWdlbWVudCoqXG5cbkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIGZ1bmN0aW9ucyByZWxhdGVkIHRvIG1hbmFnaW5nIHdyaXRlIHRyYW5zbWl0IHNsb3RzIHdpdGhpbiB0aGUgU01DIGZyYW1ld29yazogYHNtY193cl90eF9nZXRfZnJlZV9zbG90YCBhbmQgYHNtY193cl90eF9wdXRfc2xvdGAuIFNlZW1zIGxpa2UgYSBjb3JlIGFyZWEsIGxpa2VseSBpbXBhY3RpbmcgcGVyZm9ybWFuY2UgYW5kIGZsb3cgY29udHJvbC4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgdW5kZXJzdGFuZGluZyAqaG93KiB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIHVzZWQgYW5kICp3aHkqIHRoZSBjaGFuZ2UgaXMgbmVjZXNzYXJ5LlxuXG5JIHNlZSB0aGF0IGBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdGAgaXMgY2FsbGVkIGZyb20gYHNtY19jZGNfZ2V0X2ZyZWVfc2xvdGAgYW5kIGBzbWNfbGxjX2FkZF9wZW5kaW5nX3NlbmRgLiBUaGF0J3MgYSBzb2xpZCBzdGFydCDigJMgdGhlc2UgbmFtZXMgdGVsbCBtZSB0aGF0IHRoZXNlIGZ1bmN0aW9ucyByZWxhdGUgdG8gdGhlIENEQyAoQ29ubmVjdGlvbiBEZW11bHRpcGxleGluZyBDb250cm9sKSBsYXllciBhbmQgdGhlIExMQyAoTGluayBMYXllciBDb250cm9sKSBwb3NzaWJseSBmb3Igc2VuZCByZXF1ZXN0cy4gSSdsbCBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBwcmVjaXNlIGludGVyYWN0aW9uIGJldHdlZW4gdGhvc2UgY29tcG9uZW50cywgb2YgY291cnNlLiBGb3Igbm93LCB0aGlzIHBvaW50cyB0byBnZXR0aW5nIGEgZnJlZSBzbG90IGZvciBvdXRnb2luZyBkYXRhLCBlaXRoZXIgYXQgdGhlIENEQyBvciB0aGUgTExDLlxuXG5Ob3csIGxldCdzIHNoaWZ0IGZvY3VzIHRvIGBzbWNfd3JfdHhfcHV0X3Nsb3RgLiBCZWZvcmUgSSBjYW4gYW5hbHl6ZSB0aGUgaW1wbGljYXRpb25zLCBJIG5lZWQgdG8ga25vdyB0aGUgY29udGV4dCBvZiB0aGF0IGZ1bmN0aW9uIHRvIGRldGVybWluZSBpdHMgcG9zc2libGUgZWZmZWN0cy4gVGltZSB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgdG8gZ2V0IHRoYXQgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUzNCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjE5OjI3LjE1OTkzNDQzMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzE4NjAzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWNfd3JfdHhfcHV0X3Nsb3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfY2RjLmM9NzM9aW50IHNtY19jZGNfZ2V0X2ZyZWVfc2xvdChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sXFxuLS1cXG5uZXQvc21jL3NtY19jZGMuYy04Ni1cXHRcXHRpZiAoIXJjKVxcbm5ldC9zbWMvc21jX2NkYy5jOjg3OlxcdFxcdFxcdHNtY193cl90eF9wdXRfc2xvdChsaW5rLFxcbm5ldC9zbWMvc21jX2NkYy5jLTg4LVxcdFxcdFxcdFxcdFxcdCAgIChzdHJ1Y3Qgc21jX3dyX3R4X3BlbmRfcHJpdiAqKSgqcGVuZCkpO1xcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmM9MTc0PXN0YXRpYyBpbnQgc21jcl9jZGNfZ2V0X3Nsb3RfYW5kX21zZ19zZW5kKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcXG4tLVxcbm5ldC9zbWMvc21jX2NkYy5jLTE5My1cXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2Y29ubi1cXHUwMDNlc2VuZF9sb2NrKTtcXG5uZXQvc21jL3NtY19jZGMuYzoxOTQ6XFx0XFx0c21jX3dyX3R4X3B1dF9zbG90KGxpbmssXFxubmV0L3NtYy9zbWNfY2RjLmMtMTk1LVxcdFxcdFxcdFxcdCAgIChzdHJ1Y3Qgc21jX3dyX3R4X3BlbmRfcHJpdiAqKXBlbmQpO1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jPTEwMzM9c3RhdGljIGludCBzbWNfc3dpdGNoX2N1cnNvcihzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfdHhfcGVuZCAqcGVuZCxcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xMDc2LVxcdH0gZWxzZSB7XFxubmV0L3NtYy9zbWNfY29yZS5jOjEwNzc6XFx0XFx0c21jX3dyX3R4X3B1dF9zbG90KGNvbm4tXFx1MDAzZWxuayxcXG5uZXQvc21jL3NtY19jb3JlLmMtMTA3OC1cXHRcXHRcXHRcXHQgICAoc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKilwZW5kKTtcXG4tLVxcbm5ldC9zbWMvc21jX3R4LmM9NTUwPXN0YXRpYyBpbnQgc21jcl90eF9zbmRidWZfbm9uZW1wdHkoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxcbi0tXFxubmV0L3NtYy9zbWNfdHguYy01ODEtXFx0XFx0LyogbGluayBvZiBjb25uZWN0aW9uIGNoYW5nZWQsIHR4X3dvcmsgd2lsbCByZXN0YXJ0ICovXFxubmV0L3NtYy9zbWNfdHguYzo1ODI6XFx0XFx0c21jX3dyX3R4X3B1dF9zbG90KGxpbmssXFxubmV0L3NtYy9zbWNfdHguYy01ODMtXFx0XFx0XFx0XFx0ICAgKHN0cnVjdCBzbWNfd3JfdHhfcGVuZF9wcml2ICopcGVuZCk7XFxuLS1cXG5uZXQvc21jL3NtY190eC5jLTU4OS1cXHRcXHRpZiAocmMpIHtcXG5uZXQvc21jL3NtY190eC5jOjU5MDpcXHRcXHRcXHRzbWNfd3JfdHhfcHV0X3Nsb3QobGluayxcXG5uZXQvc21jL3NtY190eC5jLTU5MS1cXHRcXHRcXHRcXHRcXHQgICAoc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKilwZW5kKTtcXG4tLVxcbm5ldC9zbWMvc21jX3dyLmM9MjYwPWludCBzbWNfd3JfdHhfZ2V0X3YyX3Nsb3Qoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy0yODYtXFxubmV0L3NtYy9zbWNfd3IuYzoyODc6aW50IHNtY193cl90eF9wdXRfc2xvdChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9zbWNfd3IuYy0yODgtXFx0XFx0ICAgICAgIHN0cnVjdCBzbWNfd3JfdHhfcGVuZF9wcml2ICp3cl9wZW5kX3ByaXYpXFxuLS1cXG5uZXQvc21jL3NtY193ci5jPTMyMD1pbnQgc21jX3dyX3R4X3NlbmQoc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX3dyX3R4X3BlbmRfcHJpdiAqcHJpdilcXG4tLVxcbm5ldC9zbWMvc21jX3dyLmMtMzI5LVxcdGlmIChyYykge1xcbm5ldC9zbWMvc21jX3dyLmM6MzMwOlxcdFxcdHNtY193cl90eF9wdXRfc2xvdChsaW5rLCBwcml2KTtcXG5uZXQvc21jL3NtY193ci5jLTMzMS1cXHRcXHRzbWNyX2xpbmtfZG93bl9jb25kX3NjaGVkKGxpbmspO1xcbi0tXFxubmV0L3NtYy9zbWNfd3IuYz0zMzY9aW50IHNtY193cl90eF92Ml9zZW5kKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKnByaXYsXFxuLS1cXG5uZXQvc21jL3NtY193ci5jLTM0NS1cXHRpZiAocmMpIHtcXG5uZXQvc21jL3NtY193ci5jOjM0NjpcXHRcXHRzbWNfd3JfdHhfcHV0X3Nsb3QobGluaywgcHJpdik7XFxubmV0L3NtYy9zbWNfd3IuYy0zNDctXFx0XFx0c21jcl9saW5rX2Rvd25fY29uZF9zY2hlZChsaW5rKTtcXG4tLVxcbm5ldC9zbWMvc21jX3dyLmg9MTE3PWludCBzbWNfd3JfdHhfZ2V0X3YyX3Nsb3Qoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbi0tXFxubmV0L3NtYy9zbWNfd3IuaC0xMjAtXFx0XFx0XFx0ICBzdHJ1Y3Qgc21jX3dyX3R4X3BlbmRfcHJpdiAqKndyX3BlbmRfcHJpdik7XFxubmV0L3NtYy9zbWNfd3IuaDoxMjE6aW50IHNtY193cl90eF9wdXRfc2xvdChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9zbWNfd3IuaC0xMjItXFx0XFx0ICAgICAgIHN0cnVjdCBzbWNfd3JfdHhfcGVuZF9wcml2ICp3cl9wZW5kX3ByaXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzoxOToyNy4yMDcxMjYyNzFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDkzMDExODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU01DIFByb3RvY29sIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdHdlYWtpbmcgYHNtY193cl90eF9nZXRfZnJlZV9zbG90YC4gVGhlIGtleSBoZXJlIGlzIHRoZSBzaGlmdCB0byBgcHJlcGFyZV90b193YWl0X2V4Y2x1c2l2ZWAgYW5kIGBzY2hlZHVsZV90aW1lb3V0YC4gUmlnaHQgYXdheSwgSSByZWNvZ25pemUgdGhpcyBhcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIHRoZSBTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zIChTTUMpIHByb3RvY29sIGltcGxlbWVudGF0aW9uLiBDbGVhcmx5LCB0aGV5J3JlIGFpbWluZyB0byBpbXByb3ZlIGhvdyB0aGUgc3lzdGVtIGhhbmRsZXMgd2FpdGluZyBmb3IgZnJlZSBzbG90cyBpbiB0aGUgc2hhcmVkIG1lbW9yeS4gVGhpcyBpcyBzaWduaWZpY2FudDsgYW55IGNoYW5nZSB0byB0aGUgd2FpdCBtZWNoYW5pc20gY2FuIGltcGFjdCBwZXJmb3JtYW5jZSBhbmQgcmVzcG9uc2l2ZW5lc3MsIGVzcGVjaWFsbHkgaW4gaGlnaC10aHJvdWdocHV0IGVudmlyb25tZW50cyBsZXZlcmFnaW5nIEFGX1NNQyBzb2NrZXRzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zLlxuXG5HaXZlbiBTTUMncyByb2xlLCBJIHNob3VsZCBjaGVjayB0aGUgYENPTkZJR19TTUNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBOb3csIGxldCBtZSBxdWlja2x5IG5hdmlnYXRlIHRvIGBuZXQvc21jL0tjb25maWdgIHRvIHBpbnBvaW50IGFueSBkZXBlbmRlbmNpZXMgb3Igb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhvc2Ugd2lsbCBiZSBjcnVjaWFsIGZvciBhc3Nlc3NpbmcgdGhlIGJyb2FkZXIgaW1wYWN0IG9mIHRoaXMgcGF0Y2ggYW5kIGNvbmZpcm1pbmcgd2hldGhlciB0aGVyZSBhcmUgYW55IHBvdGVudGlhbCBjb25mbGljdHMgb3Igc2lkZSBlZmZlY3RzIHdpdGhpbiB0aGUgbmV0d29ya2luZyBzdGFjay4gSSdsbCBuZWVkIHRvIHNlZSBob3cgdGhpcyBjaGFuZ2UgaW50ZXJhY3RzIHdpdGggb3RoZXIgU01DLXJlbGF0ZWQgZmVhdHVyZXMgYW5kIG9wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNjYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzoxOTozMS43MDAxNDA5NTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc21jL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgU01DXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiU01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIElORVQgXFx1MDAyNlxcdTAwMjYgSU5GSU5JQkFORCBcXHUwMDI2XFx1MDAyNiBESUJTXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIFNNQy1SIHByb3ZpZGVzIGEgXFxcInNvY2tldHMgb3ZlciBSRE1BXFxcIiBzb2x1dGlvbiBtYWtpbmcgdXNlIG9mXFxuICAgNzpcXHRcXHQgIFJETUEgb3ZlciBDb252ZXJnZWQgRXRoZXJuZXQgKFJvQ0UpIHRlY2hub2xvZ3kgdG8gdXBncmFkZVxcbiAgIDg6XFx0XFx0ICBBRl9JTkVUIFRDUCBjb25uZWN0aW9ucyB0cmFuc3BhcmVudGx5LlxcbiAgIDk6XFx0XFx0ICBUaGUgTGludXggaW1wbGVtZW50YXRpb24gb2YgdGhlIFNNQy1SIHNvbHV0aW9uIGlzIGRlc2lnbmVkIGFzXFxuICAxMDpcXHRcXHQgIGEgc2VwYXJhdGUgc29ja2V0IGZhbWlseSBTTUMuXFxuICAxMTpcXHRcXG4gIDEyOlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIGlmIHlvdSB3YW50IHRvIHJ1biBTTUMgc29ja2V0IGFwcGxpY2F0aW9uc1xcbiAgMTM6XFx0XFxuICAxNDpcXHRjb25maWcgU01DX0RJQUdcXG4gIDE1OlxcdFxcdHRyaXN0YXRlIFxcXCJTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG4gIDE2OlxcdFxcdGRlcGVuZHMgb24gU01DXFxuICAxNzpcXHRcXHRoZWxwXFxuICAxODpcXHRcXHQgIFN1cHBvcnQgZm9yIFNNQyBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2UgdXNlZCBieSB0b29scyBzdWNoIGFzXFxuICAxOTpcXHRcXHQgIHNtY3NzLlxcbiAgMjA6XFx0XFxuICAyMTpcXHRcXHQgIGlmIHVuc3VyZSwgc2F5IFkuXFxuICAyMjpcXHRcXG4gIDIzOlxcdGNvbmZpZyBTTUNfSFNfQ1RSTF9CUEZcXG4gIDI0OlxcdFxcdGJvb2wgXFxcIkdlbmVyaWMgZUJQRiBob29rIGZvciBTTUMgaGFuZHNoYWtlIGZsb3dcXFwiXFxuICAyNTpcXHRcXHRkZXBlbmRzIG9uIFNNQyBcXHUwMDI2XFx1MDAyNiBCUEZfSklUIFxcdTAwMjZcXHUwMDI2IEJQRl9TWVNDQUxMXFxuICAyNjpcXHRcXHRkZWZhdWx0IHlcXG4gIDI3OlxcdFxcdGhlbHBcXG4gIDI4OlxcdFxcdCAgU01DX0hTX0NUUkxfQlBGIGVuYWJsZXMgc3VwcG9ydCB0byByZWdpc3RlciBnZW5lcmljIGVCUEYgaG9vayBmb3IgU01DXFxuICAyOTpcXHRcXHQgIGhhbmRzaGFrZSBmbG93LCB3aGljaCBvZmZlciBtdWNoIGdyZWF0ZXIgZmxleGliaWxpdHkgaW4gbW9kaWZ5aW5nIHRoZSBiZWhhdmlvclxcbiAgMzA6XFx0XFx0ICBvZiB0aGUgU01DIHByb3RvY29sIHN0YWNrIGNvbXBhcmVkIHRvIGEgY29tcGxldGUga2VybmVsLWJhc2VkIGFwcHJvYWNoLiBTZWxlY3RcXG4gIDMxOlxcdFxcdCAgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgZmlsdHJpbmcgdGhlIGhhbmRzaGFrZSBwcm9jZXNzIHZpYSBlQlBGIHByb2dyYW1zLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzoxOTozMS43MDAyMTIyOTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MTk4ODAwNDIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU01DLVcgQ29uZmlndXJhdGlvbiBhbmQgRnVuY3Rpb25hbCBDaGFuZ2VzKipcblxuT2theSwgc28gaW5pdGlhbGx5IEkgd2FzIHRocm93biBvZmYgYnkgd2hhdCBJICp0aG91Z2h0KiBJIHNhdyByZWdhcmRpbmcgZGVwZW5kZW5jaWVzLiBJIGtlcHQgc2Vjb25kLWd1ZXNzaW5nIG15c2VsZiB3aXRoIHRoYXQgXCJESUJTXCIgdGhpbmcsIHRoaW5raW5nIEkgc2F3IGl0IGluIHRoZSBkZXBlbmRlbmNpZXMuIEJ1dCBhZnRlciByZS1yZWFkaW5nIHRoZSBzb3VyY2UgZmlsZSBhbmQgZG91YmxlLWNoZWNraW5nIHRoZSBvdXRwdXQsIHRoZSBjb3JyZWN0IGRlcGVuZGVuY3kgaXMgY2xlYXJseSBqdXN0IGBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EYC4gSSBjbGVhcmx5IG1pc3JlYWQgdGhhdCBsaW5lIOKAkyBpdCdzIGRlZmluaXRlbHkgYElORVQgXHUwMDI2XHUwMDI2IElORklOSUJBTkRgLCBub3QgYElORVQgXHUwMDI2XHUwMDI2IElORklOSUJBTkQgXHUwMDI2XHUwMDI2IERJQlNgLiBUaGF0IHdhcyBhIGJyaWVmIG1vbWVudCBvZiBjb25mdXNpb24gdGhlcmUuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgYElORklOSUJBTkRgIGNvbmZpZ3VyYXRpb24uIEkgcmVtZW1iZXIgdGhhdCdzIGluIGBkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZ2AsIHNvIEknbGwgY2hlY2sgdGhhdCB0byBjb25maXJtLiBSaWdodCwgc28gd2UgbmVlZCBgQ09ORklHX1NNQ2AgYW5kIGBDT05GSUdfSU5GSU5JQkFORGAuXG5cbk1vdmluZyBvbiwgdGhlIHBhdGNoIGlzIGZvY3VzZWQgb24gbW9kaWZ5aW5nIGBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdGAgYW5kIGBzbWNfd3JfdHhfcHV0X3Nsb3RgLiBUaGVzZSBhcmUgdGhlIGtleSBmdW5jdGlvbnMsIHRoZSBmdW5jdGlvbmFsIGNoYW5nZXMuIE9rYXksIGxldCdzIHNlZSB3aGVyZSB0aGV5IGFyZSB1c2VkLiBgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RgIGlzIGNhbGxlZCBmcm9tIGBzbWNfY2RjX2dldF9mcmVlX3Nsb3RgIGFuZCBgc21jX2xsY19hZGRfcGVuZGluZ19zZW5kYC4gQW5kLCBgc21jX3dyX3R4X3B1dF9zbG90YCBpcyBjYWxsZWQgYnkgYSBtdWNoIGxhcmdlciBzZXQgb2YgZnVuY3Rpb25zOiBgc21jX2NkY19nZXRfZnJlZV9zbG90YCwgYHNtY3JfY2RjX2dldF9zbG90X2FuZF9tc2dfc2VuZGAsIGBzbWNfc3dpdGNoX2N1cnNvcmAsIGBzbWNyX3R4X3NuZGJ1Zl9ub25lbXB0eWAsIGBzbWNfd3JfdHhfc2VuZGAsIGFuZCBgc21jX3dyX3R4X3YyX3NlbmRgLlxuXG5HaXZlbiB0aGVpciBpbXBvcnRhbmNlIGFuZCB0aGF0IHRoZXNlIGFyZSBleHBvcnRlZCBmdW5jdGlvbnMsIEkgY2FuIHVzZSB0aGVtIGFzIEZvY3VzU3ltYm9scy4gV2FpdCwgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQgYHNtY193cl90eF9nZXRfZnJlZV9zbG90YCBpcyBhY3R1YWxseSBleHBvcnRlZC4gSSdsbCBjb25maXJtIHRoYXQgaW4gYG5ldC9zbWMvc21jX3dyLmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTY5LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6MTk6NDAuODk5MDE1MzE0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzc4MDM5MTQsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKnNtY193cl90eF9nZXRfZnJlZV9zbG90XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzoxOTo0MS4xMzY4MzE1NjhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg0ODU0ODU4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgU01DIFN1YnN5c3RlbSBNZW1vcnkgTWFuYWdlbWVudCoqXG5cbk9rYXksIHNvIHRoZXNlIHZhcmlhYmxlcyBhcmVuJ3QgZGVmaW5lZCBhcyBgc3RhdGljYCwgYnV0IHRoZXkncmUgc3RpbGwgdXNlZCBpbnRlcm5hbGx5IHdpdGhpbiB0aGUgU01DIHN1YnN5c3RlbSwgbm90IGV4cG9ydGVkIHRvIG1vZHVsZXMuIFRoYXQncyBhIGtleSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZXkncmUgYmVpbmcgbWFuYWdlZC4gTGV0IG1lIGNvbmZpcm0gdGhhdCB0aGV5ICphcmVuJ3QqIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBSaWdodCwgSSBjYW4gc2VlIHRoYXQgaW4gdGhlIGNvZGUuXG5cbk5vdywgbGV0J3MgbG9vayBhdCBwb3RlbnRpYWxseSBiZXR0ZXIgZW50cnkgcG9pbnRzIHRvIHVuZGVyc3RhbmQgdGhlIHVzYWdlIHBhdHRlcm4uIE1heWJlIGBzbWNfY2RjX2dldF9mcmVlX3Nsb3RgIG9yIGBzbWNfbGxjX2FkZF9wZW5kaW5nX3NlbmRgPyBOb3BlLCBpdCBsb29rcyBsaWtlIGBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdGAgaXMgYWN0dWFsbHkgYSBnb29kIHBsYWNlIHRvIGNlbnRlciB0aGlzIGludmVzdGlnYXRpb24uIFNhbWUgZ29lcyBmb3IgYHNtY193cl90eF9wdXRfc2xvdGAuXG5cbkFscmlnaHQsIEkgc2hvdWxkIHZlcmlmeSB0aGF0IHRoZSBgU01DYCBmYW1pbHkgaXMgcmVhY2hhYmxlLiBZZXMsIGl0J3MgYSBzb2NrZXQgZmFtaWx5LCB0aGF0IG1ha2VzIHNlbnNlLiBMZXQgbWUgdGFrZSBub3RlIG9mIHRoZSBjb25maWcgb3B0aW9ucyByZWxhdGVkIHRvIFNNQyBhbmQgSW5maW5pYmFuZC5cblxuTm93LCBJJ20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRoZSBjYWxsZXJzIG9mIGBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdGAgdG8gZ2V0IGEgbW9yZSBjb21wcmVoZW5zaXZlIHZpZXcgb2YgaG93IGl0J3MgYmVpbmcgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzk5MywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzoxOTo0NS45ODUzODIxOTdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNDc0NjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNtY193cl90eF9nZXRfZnJlZV9zbG90XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2NkYy5jPTczPWludCBzbWNfY2RjX2dldF9mcmVlX3Nsb3Qoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLFxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtODAtXFxubmV0L3NtYy9zbWNfY2RjLmM6ODE6XFx0cmMgPSBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdChsaW5rLCBzbWNfY2RjX3R4X2hhbmRsZXIsIHdyX2J1ZixcXG5uZXQvc21jL3NtY19jZGMuYy04Mi1cXHRcXHRcXHRcXHQgICAgIHdyX3JkbWFfYnVmLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9NDAwPXN0YXRpYyBpbnQgc21jX2xsY19hZGRfcGVuZGluZ19zZW5kKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTQwNS1cXG5uZXQvc21jL3NtY19sbGMuYzo0MDY6XFx0cmMgPSBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdChsaW5rLCBzbWNfbGxjX3R4X2hhbmRsZXIsIHdyX2J1ZiwgTlVMTCxcXG5uZXQvc21jL3NtY19sbGMuYy00MDctXFx0XFx0XFx0XFx0ICAgICBwZW5kKTtcXG4tLVxcbm5ldC9zbWMvc21jX3dyLmM9MTYyPXZvaWQgc21jX3dyX3R4X2NxX2hhbmRsZXIoc3RydWN0IGliX2NxICppYl9jcSwgdm9pZCAqY3FfY29udGV4dClcXG4tLVxcbm5ldC9zbWMvc21jX3dyLmMtMTcwLVxcbm5ldC9zbWMvc21jX3dyLmM6MTcxOnN0YXRpYyBpbmxpbmUgaW50IHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KHN0cnVjdCBzbWNfbGluayAqbGluaywgdTMyICppZHgpXFxubmV0L3NtYy9zbWNfd3IuYy0xNzIte1xcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy0xODQtLyoqXFxubmV0L3NtYy9zbWNfd3IuYzoxODU6ICogc21jX3dyX3R4X2dldF9mcmVlX3Nsb3QoKSAtIHJldHVybnMgYnVmZmVyIGZvciBtZXNzYWdlIGFzc2VtYmx5LFxcbm5ldC9zbWMvc21jX3dyLmMtMTg2LSAqXFx0XFx0XFx0YW5kIHNldHMgaW5mbyBmb3IgcGVuZGluZyB0cmFuc21pdCB0cmFja2luZ1xcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy0xOTQtICovXFxubmV0L3NtYy9zbWNfd3IuYzoxOTU6aW50IHNtY193cl90eF9nZXRfZnJlZV9zbG90KHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY193ci5jLTE5Ni1cXHRcXHRcXHQgICAgc21jX3dyX3R4X2hhbmRsZXIgaGFuZGxlcixcXG4tLVxcbm5ldC9zbWMvc21jX3dyLmMtMjEyLVxcdGlmIChpbl9zb2Z0aXJxKCkgfHwgbGdyLVxcdTAwM2V0ZXJtaW5hdGluZykge1xcbm5ldC9zbWMvc21jX3dyLmM6MjEzOlxcdFxcdHJjID0gc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RfaW5kZXgobGluaywgXFx1MDAyNmlkeCk7XFxubmV0L3NtYy9zbWNfd3IuYy0yMTQtXFx0XFx0aWYgKHJjKVxcbi0tXFxubmV0L3NtYy9zbWNfd3IuYy0yMjEtXFx0XFx0XFx0aWYgKCFzbWNfbGlua19zZW5kYWJsZShsaW5rKSB8fCBsZ3ItXFx1MDAzZXRlcm1pbmF0aW5nIHx8XFxubmV0L3NtYy9zbWNfd3IuYzoyMjI6XFx0XFx0XFx0ICAgIHNtY193cl90eF9nZXRfZnJlZV9zbG90X2luZGV4KGxpbmssIFxcdTAwMjZpZHgpICE9IC1FQlVTWSlcXG5uZXQvc21jL3NtY193ci5jLTIyMy1cXHRcXHRcXHRcXHRicmVhaztcXG4tLVxcbm5ldC9zbWMvc21jX3dyLmMtMjI2LVxcdFxcdFxcdGlmICghc21jX2xpbmtfc2VuZGFibGUobGluaykgfHwgbGdyLVxcdTAwM2V0ZXJtaW5hdGluZyB8fFxcbm5ldC9zbWMvc21jX3dyLmM6MjI3OlxcdFxcdFxcdCAgICBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdF9pbmRleChsaW5rLCBcXHUwMDI2aWR4KSAhPSAtRUJVU1kpXFxubmV0L3NtYy9zbWNfd3IuYy0yMjgtXFx0XFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvc21jL3NtY193ci5oPTExMT12b2lkIHNtY193cl9hZGRfZGV2KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldik7XFxubmV0L3NtYy9zbWNfd3IuaC0xMTItXFxubmV0L3NtYy9zbWNfd3IuaDoxMTM6aW50IHNtY193cl90eF9nZXRfZnJlZV9zbG90KHN0cnVjdCBzbWNfbGluayAqbGluaywgc21jX3dyX3R4X2hhbmRsZXIgaGFuZGxlcixcXG5uZXQvc21jL3NtY193ci5oLTExNC1cXHRcXHRcXHQgICAgc3RydWN0IHNtY193cl9idWYgKip3cl9idWYsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjE5OjQ2LjAzODg2MTM4NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Njg4NjkwNTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJlY2VudCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZS4gSXQgbG9va3MgbGlrZSBpdCBhZGRyZXNzZXMgYSBjb3VwbGUgb2YgYnVncyB3aXRoaW4gdGhlIFNNQyBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBpbiB0aGUgZnVuY3Rpb25zIGBzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdGAgYW5kIGBzbWNfd3JfdHhfcHV0X3Nsb3RgLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgYHNtY193cl90eF9nZXRfZnJlZV9zbG90YCBpcyBiZWluZyB1cGRhdGVkIHRvIHVzZSBhIG1hbnVhbCB3YWl0IGxvb3Agd2l0aCBgcHJlcGFyZV90b193YWl0X2V4Y2x1c2l2ZWAgYW5kIGBzY2hlZHVsZV90aW1lb3V0YCwgcmVwbGFjaW5nIGB3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdGltZW91dGAuIFRoZSBvdGhlciBmdW5jdGlvbiwgYHNtY193cl90eF9wdXRfc2xvdGAsIGhhcyBhIGZpeCByZWxhdGVkIHRvIHRoZSBzaXplIGFyZ3VtZW50IG9mIGBtZW1zZXRgLiBUaGVzZSBhcmUgY29yZSBmdW5jdGlvbmFsIGFkanVzdG1lbnRzLCBub3RoaW5nIHRyaXZpYWwgaGVyZS5cblxuVGhpcyB3YXJyYW50cyBzb21lIHNlcmlvdXMgYXR0ZW50aW9uLiBTaW5jZSBpdCdzIGNoYW5naW5nIGNvcmUgZnVuY3Rpb25hbGl0eSwgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgaXMgc2V0IHRvIFRydWUuIEFuZCwgSSBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgY2hhbmdlcyB0byBgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RgIGFuZCBgc21jX3dyX3R4X3B1dF9zbG90YC5cblxuTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9ucyBhcmUgYWZmZWN0ZWQuIFRoZSBwYXRjaCBzcGVjaWZpZXMgYEVuYWJsZUNvbmZpZ3M6IFNNQywgSU5GSU5JQkFORGAuIEJ1dCBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBhbnl0aGluZy4gTGV0J3Mgc2VlIGlmIGBJTkZJTklCQU5EYCBpcyBhY3R1YWxseSBuZWVkZWQgdG8gY29tcGlsZSBTTUM/IFllcCwgYGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORGAuIFNpbmNlIGBJTkVUYCBpcyBzdGFuZGFyZCwgYFNNQ2AgYW5kIGBJTkZJTklCQU5EYCBhcmUgdGhlIG5lY2Vzc2FyeSBjb25maWdzLlxuXG5SaWdodCwgSSdtIGNvbmZpZGVudCB0aGF0IGBTTUNgIGFuZCBgSU5GSU5JQkFORGAgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgaGVyZS4gSSdsbCBuZWVkIHRvIHJ1biB0ZXN0cyB3aXRoIHRoZXNlIGVuYWJsZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0LiBJIGFtIHJlYWR5IHRvIGNhbGwgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1MzgsIk91dHB1dFRva2VucyI6MTMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjE5OjUyLjcyNzU1NDA2MloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwMDMyNjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIklORklOSUJBTkRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfd3JfdHhfZ2V0X2ZyZWVfc2xvdFwiLFxuICAgIFwic21jX3dyX3R4X3B1dF9zbG90XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdhaXQgbG9naWMgaW4gYHNtY193cl90eF9nZXRfZnJlZV9zbG90YCBhbmQgZml4ZXMgYSBtZW1zZXQgc2l6ZSBidWcgaW4gYHNtY193cl90eF9wdXRfc2xvdGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIFNNQyAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykgcHJvdG9jb2wgc3Vic3lzdGVtLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIEFGX1NNQyBzb2NrZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNNQ1wiLFxuICAgIFwiSU5GSU5JQkFORFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNtY193cl90eF9nZXRfZnJlZV9zbG90XCIsXG4gICAgXCJzbWNfd3JfdHhfcHV0X3Nsb3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgd2FpdCBsb2dpYyBpbiBgc21jX3dyX3R4X2dldF9mcmVlX3Nsb3RgIGFuZCBmaXhlcyBhIG1lbXNldCBzaXplIGJ1ZyBpbiBgc21jX3dyX3R4X3B1dF9zbG90YC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgU01DIChTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zKSBwcm90b2NvbCBzdWJzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgQUZfU01DIHNvY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowccl7q[1] Phase: Succeeded StartedAt: 2026-08-06 07:20:04 +0000 UTC FinishedAt: 2026-08-06 07:20:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccl7q[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-06 07:20:04 +0000 UTC FinishedAt: 2026-08-06 07:20:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccl7q[2] Phase: Succeeded StartedAt: 2026-08-06 07:20:04 +0000 UTC FinishedAt: 2026-08-06 09:01:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-06 07:20:04 +0000 UTC FinishedAt: 2026-08-06 09:01:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-06 07:20:04 +0000 UTC FinishedAt: 2026-08-06 07:20:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-06 07:20:04 +0000 UTC FinishedAt: 2026-08-06 07:20:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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-workflowccl7q/series-workflowccl7q-convert-artifact-915044126/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-06 07:20:15 +0000 UTC FinishedAt: 2026-08-06 07:37:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-06 07:20:15 +0000 UTC FinishedAt: 2026-08-06 07:37:44 +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:*482352bc-b655-4909-bb4c-3b6ebeeba8f8,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-workflowccl7q/series-workflowccl7q-convert-artifact-915044126/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": "a4929089-45fe-4e7d-8501-5c2806a374cc", "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-workflowccl7q/series-workflowccl7q-build-action-1423457284/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-06 07:20:15 +0000 UTC FinishedAt: 2026-08-06 07:37:34 +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:*482352bc-b655-4909-bb4c-3b6ebeeba8f8,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-workflowccl7q/series-workflowccl7q-convert-artifact-915044126/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": "a4929089-45fe-4e7d-8501-5c2806a374cc", "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-workflowccl7q/series-workflowccl7q-build-action-1423457284/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-06 07:37:44 +0000 UTC FinishedAt: 2026-08-06 07:37:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-06 07:37:44 +0000 UTC FinishedAt: 2026-08-06 07:37:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-06 07:37:44 +0000 UTC FinishedAt: 2026-08-06 07:37:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-06 07:37:44 +0000 UTC FinishedAt: 2026-08-06 07:37:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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-workflowccl7q/series-workflowccl7q-convert-artifact-3333661649/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-06 07:37:54 +0000 UTC FinishedAt: 2026-08-06 07:39:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-06 07:37:54 +0000 UTC FinishedAt: 2026-08-06 07:39:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a4929089-45fe-4e7d-8501-5c2806a374cc,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-workflowccl7q/series-workflowccl7q-build-action-1423457284/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-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-06 07:39:54 +0000 UTC FinishedAt: 2026-08-06 07:39:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-06 07:39:54 +0000 UTC FinishedAt: 2026-08-06 07:39:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-06 07:39:54 +0000 UTC FinishedAt: 2026-08-06 07:57:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-06 07:39:54 +0000 UTC FinishedAt: 2026-08-06 07:57:36 +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:*482352bc-b655-4909-bb4c-3b6ebeeba8f8,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-workflowccl7q/series-workflowccl7q-convert-artifact-3333661649/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": "7eb45afa-b907-4219-8fa0-425b5a1c44cb", "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-workflowccl7q/series-workflowccl7q-build-action-3686631837/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-06 07:39:54 +0000 UTC FinishedAt: 2026-08-06 07:57:26 +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:*482352bc-b655-4909-bb4c-3b6ebeeba8f8,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-workflowccl7q/series-workflowccl7q-convert-artifact-3333661649/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": "7eb45afa-b907-4219-8fa0-425b5a1c44cb", "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-workflowccl7q/series-workflowccl7q-build-action-3686631837/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-06 07:57:36 +0000 UTC FinishedAt: 2026-08-06 07:57:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-06 07:57:36 +0000 UTC FinishedAt: 2026-08-06 07:57:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-06 07:57:36 +0000 UTC FinishedAt: 2026-08-06 07:59:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-06 07:57:36 +0000 UTC FinishedAt: 2026-08-06 07:59:19 +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:*7eb45afa-b907-4219-8fa0-425b5a1c44cb,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-workflowccl7q/series-workflowccl7q-build-action-3686631837/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-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-06 07:59:29 +0000 UTC FinishedAt: 2026-08-06 09:01:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-06 07:59:29 +0000 UTC FinishedAt: 2026-08-06 09:01:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"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:*a4929089-45fe-4e7d-8501-5c2806a374cc,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7eb45afa-b907-4219-8fa0-425b5a1c44cb,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-workflowccl7q/series-workflowccl7q-build-action-1423457284/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-workflowccl7q/series-workflowccl7q-build-action-3686631837/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-06 07:59:29 +0000 UTC FinishedAt: 2026-08-06 07:59:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-06 07:59:29 +0000 UTC FinishedAt: 2026-08-06 07:59:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"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-workflowccl7q/series-workflowccl7q-convert-artifact-3637445382/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-06 07:59:29 +0000 UTC FinishedAt: 2026-08-06 07:59:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-06 07:59:29 +0000 UTC FinishedAt: 2026-08-06 07:59:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-06 07:59:29 +0000 UTC FinishedAt: 2026-08-06 07:59:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-06 07:59:39 +0000 UTC FinishedAt: 2026-08-06 09:01:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccl7q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_wr_tx_get_free_slot","smc_wr_tx_put_slot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND"],"series_id":"7aadce37-bbe6-4239-a55a-bde4d4201a04","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-06 07:59:39 +0000 UTC FinishedAt: 2026-08-06 09:01:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a4929089-45fe-4e7d-8501-5c2806a374cc,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7eb45afa-b907-4219-8fa0-425b5a1c44cb,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-workflowccl7q/series-workflowccl7q-build-action-1423457284/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-workflowccl7q/series-workflowccl7q-build-action-3686631837/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-workflowccl7q/series-workflowccl7q-convert-artifact-3637445382/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,}