Name: series-workflowqm9g6 Phase: Succeeded StartedAt: 2026-07-01 23:34:26 +0000 UTC FinishedAt: 2026-07-02 04:10:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm9g6[0] Phase: Succeeded StartedAt: 2026-07-01 23:34:26 +0000 UTC FinishedAt: 2026-07-01 23:51:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm9g6[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 23:34:26 +0000 UTC FinishedAt: 2026-07-01 23:51:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "a225f8c20712713406ae47024b8df42deacddd4a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_CLS_ACT", "NET_ACT_PEDIT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "a225f8c20712713406ae47024b8df42deacddd4a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_CLS_ACT", "NET_ACT_PEDIT" ], "series_id": "3aadacf7-3cda-44e8-a32e-27af4fa3619a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tcf_offload_act_num_actions_single", "tcf_pedit_offload_act_setup", "tcf_exts_num_actions", "tc_setup_action" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAxIDIzOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDssCiAgICAmIzM0O05FVF9BQ1RfUEVESVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlJiMzNDssCiAgICAmIzM0O3RjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cCYjMzQ7LAogICAgJiMzNDt0Y2ZfZXh0c19udW1fYWN0aW9ucyYjMzQ7LAogICAgJiMzNDt0Y19zZXR1cF9hY3Rpb24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBhbmQgYnVmZmVyIG92ZXJmbG93IGluIHRoZSBUQyBwZWRpdCBhY3Rpb24gb2ZmbG9hZGluZyBjb2RlLiBJdCBtb2RpZmllcyBgdGNfc2V0dXBfYWN0aW9uYCwgYHRjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cGAsIGB0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlYCwgYW5kIGB0Y2ZfZXh0c19udW1fYWN0aW9uc2AgdG8gdXNlIGEgbG9ja2VkIHZlcnNpb24gb2YgYHRjZl9wZWRpdF9ua2V5c2AgYW5kIGFkZHMgYm91bmRzIGNoZWNraW5nIGZvciBmbG93IGFjdGlvbiBlbnRyaWVzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBjb2RlIGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgc28gaXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMzo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDRjOTZkYWVjOGExZjIyYWRjZjZmMTVhYWU1ZmRkOTZjZWYzOWEwYzBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDIzOjQ3OjMyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RjX2FjdC90Y19wZWRpdC5oIGIvaW5jbHVkZS9uZXQvdGNfYWN0L3RjX3BlZGl0LmhcbmluZGV4IGNiN2I4MmYyY2JjN2ZkLi45Nzc1NGVhMGE4Mjc5ZCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3RjX2FjdC90Y19wZWRpdC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC90Y19hY3QvdGNfcGVkaXQuaFxuQEAgLTM3LDE3ICYjNDM7MzcsMTUgQEAgc3RhdGljIGlubGluZSBib29sIGlzX3RjZl9wZWRpdChjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphKVxuIFx0cmV0dXJuIGZhbHNlO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIGludCB0Y2ZfcGVkaXRfbmtleXMoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSlcbiYjNDM7LyogTXVzdCBiZSBjYWxsZWQgd2l0aCBhY3QtXHUwMDNldGNmYV9sb2NrIGhlbGQgdG8gZW5zdXJlIGNvbnNpc3RlbmN5IG9mIHBhcmFsbGVsXG4mIzQzOyAqIHJlYWRzIG9mIHRoZSBzYW1lIGFjdGlvbiYjMzk7cyBwZWRpdCBrZXlzIChlLmcuIGZsb3dfb2ZmbG9hZCBjb3VudCB2cyBmaWxsKS5cbiYjNDM7ICogTm90ZSwgdGhpcyBpcyBvbmx5IHVzZWQgZm9yIHBlZGl0IG9mZmxvYWQuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW5saW5lIGludCB0Y2ZfcGVkaXRfbmtleXNfbG9ja2VkKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEpXG4ge1xuLVx0c3RydWN0IHRjZl9wZWRpdF9wYXJtcyAqcGFybXM7XG4tXHRpbnQgbmtleXM7XG4tXG4tXHRyY3VfcmVhZF9sb2NrKCk7XG4tXHRwYXJtcyA9IHRvX3BlZGl0X3Bhcm1zKGEpO1xuLVx0bmtleXMgPSBwYXJtcy1cdTAwM2V0Y2ZwX25rZXlzO1xuLVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tXG4tXHRyZXR1cm4gbmtleXM7XG4mIzQzO1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZhLVx1MDAzZXRjZmFfbG9jayk7XG4mIzQzO1x0cmV0dXJuIHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQodG9fcGVkaXQoYSktXHUwMDNlcGFybXMsXG4mIzQzO1x0XHRcdFx0XHQgbG9ja2RlcF9pc19oZWxkKFx1MDAyNmEtXHUwMDNldGNmYV9sb2NrKSktXHUwMDNldGNmcF9ua2V5cztcbiB9XG4gXG4gc3RhdGljIGlubGluZSB1MzIgdGNmX3BlZGl0X2h0eXBlKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEsIGludCBpbmRleClcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2FwaS5jIGIvbmV0L3NjaGVkL2FjdF9hcGkuY1xuaW5kZXggYjY4YmUxNDNhMDY3ZjkuLmYxNDE2MzRkZjIxNDg5IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL2FjdF9hcGkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL2FjdF9hcGkuY1xuQEAgLTE0OCwxMCAmIzQzOzE0OCwxNSBAQCBzdGF0aWMgdm9pZCBvZmZsb2FkX2FjdGlvbl9od19jb3VudF9kZWMoc3RydWN0IHRjX2FjdGlvbiAqYWN0LFxuIFxuIHN0YXRpYyB1bnNpZ25lZCBpbnQgdGNmX29mZmxvYWRfYWN0X251bV9hY3Rpb25zX3NpbmdsZShzdHJ1Y3QgdGNfYWN0aW9uICphY3QpXG4ge1xuLVx0aWYgKGlzX3RjZl9wZWRpdChhY3QpKVxuLVx0XHRyZXR1cm4gdGNmX3BlZGl0X25rZXlzKGFjdCk7XG4tXHRlbHNlXG4tXHRcdHJldHVybiAxO1xuJiM0MztcdHVuc2lnbmVkIGludCBjb3VudDtcbiYjNDM7XG4mIzQzO1x0aWYgKGlzX3RjZl9wZWRpdChhY3QpKSB7XG4mIzQzO1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2YWN0LVx1MDAzZXRjZmFfbG9jayk7XG4mIzQzO1x0XHRjb3VudCA9IHRjZl9wZWRpdF9ua2V5c19sb2NrZWQoYWN0KTtcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFjdC1cdTAwM2V0Y2ZhX2xvY2spO1xuJiM0MztcdFx0cmV0dXJuIGNvdW50O1xuJiM0MztcdH1cbiYjNDM7XHRyZXR1cm4gMTtcbiB9XG4gXG4gc3RhdGljIGJvb2wgdGNfYWN0X3NraXBfaHcodTMyIGZsYWdzKVxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfcGVkaXQuYyBiL25ldC9zY2hlZC9hY3RfcGVkaXQuY1xuaW5kZXggMGQ2NTJkZWE0YTY5MWYuLmQ0ZDQ3YTk5MjFmNDU3IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL2FjdF9wZWRpdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvYWN0X3BlZGl0LmNcbkBAIC01NjcsOSAmIzQzOzU2NywxOCBAQCBzdGF0aWMgaW50IHRjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cChzdHJ1Y3QgdGNfYWN0aW9uICphY3QsIHZvaWQgKmVudHJ5X2RhdGEsXG4ge1xuIFx0aWYgKGJpbmQpIHtcbiBcdFx0c3RydWN0IGZsb3dfYWN0aW9uX2VudHJ5ICplbnRyeSA9IGVudHJ5X2RhdGE7XG4mIzQzO1x0XHRpbnQgbmtleXMgPSB0Y2ZfcGVkaXRfbmtleXNfbG9ja2VkKGFjdCk7XG4gXHRcdGludCBrO1xuIFxuLVx0XHRmb3IgKGsgPSAwOyBrIFx1MDAzYyB0Y2ZfcGVkaXRfbmtleXMoYWN0KTsgayYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdC8qIElmIHRoZSByZXF1aXJlZCBrZXlzIGV4Y2VlZCB0aGUgcmVtYWluaW5nIGNhcGFjaXR5IHJldHVyblxuJiM0MztcdFx0ICogLUVOT1NQQyB0byBhYm9ydCB0aGUgb2ZmbG9hZCBhbmQgZmFsbGJhY2sgdG8gc29mdHdhcmUuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGlmIChua2V5cyBcdTAwM2UgKmluZGV4X2luYykge1xuJiM0MztcdFx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDtOb3QgZW5vdWdoIHNwYWNlIHRvIG9mZmxvYWQgYWxsIHBlZGl0IGtleXNcJiMzNDspO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVOT1NQQztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRmb3IgKGsgPSAwOyBrIFx1MDAzYyBua2V5czsgayYjNDM7JiM0MzspIHtcbiBcdFx0XHRzd2l0Y2ggKHRjZl9wZWRpdF9jbWQoYWN0LCBrKSkge1xuIFx0XHRcdGNhc2UgVENBX1BFRElUX0tFWV9FWF9DTURfU0VUOlxuIFx0XHRcdFx0ZW50cnktXHUwMDNlaWQgPSBGTE9XX0FDVElPTl9NQU5HTEU7XG5AQCAtNjA2LDcgJiM0Mzs2MTUsNyBAQCBzdGF0aWMgaW50IHRjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cChzdHJ1Y3QgdGNfYWN0aW9uICphY3QsIHZvaWQgKmVudHJ5X2RhdGEsXG4gXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFx0XHR9XG4gXG4tXHRcdGZvciAoayA9IDE7IGsgXHUwMDNjIHRjZl9wZWRpdF9ua2V5cyhhY3QpOyBrJiM0MzsmIzQzOykge1xuJiM0MztcdFx0Zm9yIChrID0gMTsgayBcdTAwM2MgdGNmX3BlZGl0X25rZXlzX2xvY2tlZChhY3QpOyBrJiM0MzsmIzQzOykge1xuIFx0XHRcdGlmIChjbWQgIT0gdGNmX3BlZGl0X2NtZChhY3QsIGspKSB7XG4gXHRcdFx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDtVbnN1cHBvcnRlZCBwZWRpdCBjb21tYW5kIG9mZmxvYWRcJiMzNDspO1xuIFx0XHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfYXBpLmMgYi9uZXQvc2NoZWQvY2xzX2FwaS5jXG5pbmRleCAzZTY3NjAwYTRhMWExMC4uZmZlZWE2ZGI4MzM3NDcgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvY2xzX2FwaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvY2xzX2FwaS5jXG5AQCAtMzg4NiwxMiAmIzQzOzM4ODYsMjEgQEAgaW50IHRjX3NldHVwX2FjdGlvbihzdHJ1Y3QgZmxvd19hY3Rpb24gKmZsb3dfYWN0aW9uLFxuIFxuIFx0XHRlbnRyeSA9IFx1MDAyNmZsb3dfYWN0aW9uLVx1MDAzZWVudHJpZXNbal07XG4gXHRcdHNwaW5fbG9ja19iaChcdTAwMjZhY3QtXHUwMDNldGNmYV9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBBYm9ydCB0aGUgb2ZmbG9hZCBpZiB3ZSBoYXZlIGV4aGF1c3RlZCB0aGUgYWxsb2NhdGVkIGNhcGFjaXR5ICovXG4mIzQzO1x0XHRpZiAoaiBcdTAwM2U9IGZsb3dfYWN0aW9uLVx1MDAzZW51bV9lbnRyaWVzKSB7XG4mIzQzO1x0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O0Zsb3cgYWN0aW9uIGJ1ZmZlciBvdmVyZmxvd1wmIzM0Oyk7XG4mIzQzO1x0XHRcdGVyciA9IC1FTk9TUEM7XG4mIzQzO1x0XHRcdGdvdG8gZXJyX291dF9sb2NrZWQ7XG4mIzQzO1x0XHR9XG4mIzQzO1xuIFx0XHRlcnIgPSB0Y2ZfYWN0X2dldF91c2VyX2Nvb2tpZShlbnRyeSwgYWN0KTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRnb3RvIGVycl9vdXRfbG9ja2VkO1xuIFxuLVx0XHRpbmRleCA9IDA7XG4tXHRcdGVyciA9IHRjX3NldHVwX29mZmxvYWRfYWN0KGFjdCwgZW50cnksIFx1MDAyNmluZGV4LCBleHRhY2spO1xuJiM0MztcdFx0aW5kZXggPSBmbG93X2FjdGlvbi1cdTAwM2VudW1fZW50cmllcyAtIGo7XG4mIzQzO1x0XHRlcnIgPSB0Y19zZXR1cF9vZmZsb2FkX2FjdChhY3QsIGVudHJ5LCBcdTAwMjZpbmRleCxcbiYjNDM7XHRcdFx0XHRcdCAgIGV4dGFjayk7XG4gXHRcdGlmIChlcnIpXG4gXHRcdFx0Z290byBlcnJfb3V0X2xvY2tlZDtcbiBcbkBAIC0zOTQ1LDEwICYjNDM7Mzk1NCwxMyBAQCB1bnNpZ25lZCBpbnQgdGNmX2V4dHNfbnVtX2FjdGlvbnMoc3RydWN0IHRjZl9leHRzICpleHRzKVxuIFx0aW50IGk7XG4gXG4gXHR0Y2ZfZXh0c19mb3JfZWFjaF9hY3Rpb24oaSwgYWN0LCBleHRzKSB7XG4tXHRcdGlmIChpc190Y2ZfcGVkaXQoYWN0KSlcbi1cdFx0XHRudW1fYWN0cyAmIzQzOz0gdGNmX3BlZGl0X25rZXlzKGFjdCk7XG4tXHRcdGVsc2VcbiYjNDM7XHRcdGlmIChpc190Y2ZfcGVkaXQoYWN0KSkge1xuJiM0MztcdFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2YWN0LVx1MDAzZXRjZmFfbG9jayk7XG4mIzQzO1x0XHRcdG51bV9hY3RzICYjNDM7PSB0Y2ZfcGVkaXRfbmtleXNfbG9ja2VkKGFjdCk7XG4mIzQzO1x0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFjdC1cdTAwM2V0Y2ZhX2xvY2spO1xuJiM0MztcdFx0fSBlbHNlIHtcbiBcdFx0XHRudW1fYWN0cyYjNDM7JiM0Mzs7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXHRyZXR1cm4gbnVtX2FjdHM7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIzOjQ3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDssCiAgICAmIzM0O05FVF9BQ1RfUEVESVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlJiMzNDssCiAgICAmIzM0O3RjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cCYjMzQ7LAogICAgJiMzNDt0Y2ZfZXh0c19udW1fYWN0aW9ucyYjMzQ7LAogICAgJiMzNDt0Y19zZXR1cF9hY3Rpb24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBhbmQgYnVmZmVyIG92ZXJmbG93IGluIHRoZSBUQyBwZWRpdCBhY3Rpb24gb2ZmbG9hZGluZyBjb2RlLiBJdCBtb2RpZmllcyBgdGNfc2V0dXBfYWN0aW9uYCwgYHRjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cGAsIGB0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlYCwgYW5kIGB0Y2ZfZXh0c19udW1fYWN0aW9uc2AgdG8gdXNlIGEgbG9ja2VkIHZlcnNpb24gb2YgYHRjZl9wZWRpdF9ua2V5c2AgYW5kIGFkZHMgYm91bmRzIGNoZWNraW5nIGZvciBmbG93IGFjdGlvbiBlbnRyaWVzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBjb2RlIGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgc28gaXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNGM5NmRhZWM4YTFmMjJhZGNmNmYxNWFhZTVmZGQ5NmNlZjM5YTBjMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDEgMjM6NDc6MzIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC90Y19hY3QvdGNfcGVkaXQuaCBiL2luY2x1ZGUvbmV0L3RjX2FjdC90Y19wZWRpdC5oCmluZGV4IGNiN2I4MmYyY2JjN2ZkLi45Nzc1NGVhMGE4Mjc5ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvdGNfYWN0L3RjX3BlZGl0LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvdGNfYWN0L3RjX3BlZGl0LmgKQEAgLTM3LDE3ICYjNDM7MzcsMTUgQEAgc3RhdGljIGlubGluZSBib29sIGlzX3RjZl9wZWRpdChjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphKQogCXJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgdGNmX3BlZGl0X25rZXlzKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEpCiYjNDM7LyogTXVzdCBiZSBjYWxsZWQgd2l0aCBhY3QtJmd0O3RjZmFfbG9jayBoZWxkIHRvIGVuc3VyZSBjb25zaXN0ZW5jeSBvZiBwYXJhbGxlbAomIzQzOyAqIHJlYWRzIG9mIHRoZSBzYW1lIGFjdGlvbiYjMzk7cyBwZWRpdCBrZXlzIChlLmcuIGZsb3dfb2ZmbG9hZCBjb3VudCB2cyBmaWxsKS4KJiM0MzsgKiBOb3RlLCB0aGlzIGlzIG9ubHkgdXNlZCBmb3IgcGVkaXQgb2ZmbG9hZC4KJiM0MzsgKi8KJiM0MztzdGF0aWMgaW5saW5lIGludCB0Y2ZfcGVkaXRfbmtleXNfbG9ja2VkKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEpCiB7Ci0Jc3RydWN0IHRjZl9wZWRpdF9wYXJtcyAqcGFybXM7Ci0JaW50IG5rZXlzOwotCi0JcmN1X3JlYWRfbG9jaygpOwotCXBhcm1zID0gdG9fcGVkaXRfcGFybXMoYSk7Ci0JbmtleXMgPSBwYXJtcy0mZ3Q7dGNmcF9ua2V5czsKLQlyY3VfcmVhZF91bmxvY2soKTsKLQotCXJldHVybiBua2V5czsKJiM0MzsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmYW1wO2EtJmd0O3RjZmFfbG9jayk7CiYjNDM7CXJldHVybiByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHRvX3BlZGl0KGEpLSZndDtwYXJtcywKJiM0MzsJCQkJCSBsb2NrZGVwX2lzX2hlbGQoJmFtcDthLSZndDt0Y2ZhX2xvY2spKS0mZ3Q7dGNmcF9ua2V5czsKIH0KIAogc3RhdGljIGlubGluZSB1MzIgdGNmX3BlZGl0X2h0eXBlKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEsIGludCBpbmRleCkKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfYXBpLmMgYi9uZXQvc2NoZWQvYWN0X2FwaS5jCmluZGV4IGI2OGJlMTQzYTA2N2Y5Li5mMTQxNjM0ZGYyMTQ4OSAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL2FjdF9hcGkuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvYWN0X2FwaS5jCkBAIC0xNDgsMTAgJiM0MzsxNDgsMTUgQEAgc3RhdGljIHZvaWQgb2ZmbG9hZF9hY3Rpb25faHdfY291bnRfZGVjKHN0cnVjdCB0Y19hY3Rpb24gKmFjdCwKIAogc3RhdGljIHVuc2lnbmVkIGludCB0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlKHN0cnVjdCB0Y19hY3Rpb24gKmFjdCkKIHsKLQlpZiAoaXNfdGNmX3BlZGl0KGFjdCkpCi0JCXJldHVybiB0Y2ZfcGVkaXRfbmtleXMoYWN0KTsKLQllbHNlCi0JCXJldHVybiAxOwomIzQzOwl1bnNpZ25lZCBpbnQgY291bnQ7CiYjNDM7CiYjNDM7CWlmIChpc190Y2ZfcGVkaXQoYWN0KSkgewomIzQzOwkJc3Bpbl9sb2NrX2JoKCZhbXA7YWN0LSZndDt0Y2ZhX2xvY2spOwomIzQzOwkJY291bnQgPSB0Y2ZfcGVkaXRfbmtleXNfbG9ja2VkKGFjdCk7CiYjNDM7CQlzcGluX3VubG9ja19iaCgmYW1wO2FjdC0mZ3Q7dGNmYV9sb2NrKTsKJiM0MzsJCXJldHVybiBjb3VudDsKJiM0MzsJfQomIzQzOwlyZXR1cm4gMTsKIH0KIAogc3RhdGljIGJvb2wgdGNfYWN0X3NraXBfaHcodTMyIGZsYWdzKQpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9wZWRpdC5jIGIvbmV0L3NjaGVkL2FjdF9wZWRpdC5jCmluZGV4IDBkNjUyZGVhNGE2OTFmLi5kNGQ0N2E5OTIxZjQ1NyAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL2FjdF9wZWRpdC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9hY3RfcGVkaXQuYwpAQCAtNTY3LDkgJiM0Mzs1NjcsMTggQEAgc3RhdGljIGludCB0Y2ZfcGVkaXRfb2ZmbG9hZF9hY3Rfc2V0dXAoc3RydWN0IHRjX2FjdGlvbiAqYWN0LCB2b2lkICplbnRyeV9kYXRhLAogewogCWlmIChiaW5kKSB7CiAJCXN0cnVjdCBmbG93X2FjdGlvbl9lbnRyeSAqZW50cnkgPSBlbnRyeV9kYXRhOwomIzQzOwkJaW50IG5rZXlzID0gdGNmX3BlZGl0X25rZXlzX2xvY2tlZChhY3QpOwogCQlpbnQgazsKIAotCQlmb3IgKGsgPSAwOyBrICZsdDsgdGNmX3BlZGl0X25rZXlzKGFjdCk7IGsmIzQzOyYjNDM7KSB7CiYjNDM7CQkvKiBJZiB0aGUgcmVxdWlyZWQga2V5cyBleGNlZWQgdGhlIHJlbWFpbmluZyBjYXBhY2l0eSByZXR1cm4KJiM0MzsJCSAqIC1FTk9TUEMgdG8gYWJvcnQgdGhlIG9mZmxvYWQgYW5kIGZhbGxiYWNrIHRvIHNvZnR3YXJlLgomIzQzOwkJICovCiYjNDM7CQlpZiAobmtleXMgJmd0OyAqaW5kZXhfaW5jKSB7CiYjNDM7CQkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtOb3QgZW5vdWdoIHNwYWNlIHRvIG9mZmxvYWQgYWxsIHBlZGl0IGtleXMmIzM0Oyk7CiYjNDM7CQkJcmV0dXJuIC1FTk9TUEM7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlmb3IgKGsgPSAwOyBrICZsdDsgbmtleXM7IGsmIzQzOyYjNDM7KSB7CiAJCQlzd2l0Y2ggKHRjZl9wZWRpdF9jbWQoYWN0LCBrKSkgewogCQkJY2FzZSBUQ0FfUEVESVRfS0VZX0VYX0NNRF9TRVQ6CiAJCQkJZW50cnktJmd0O2lkID0gRkxPV19BQ1RJT05fTUFOR0xFOwpAQCAtNjA2LDcgJiM0Mzs2MTUsNyBAQCBzdGF0aWMgaW50IHRjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cChzdHJ1Y3QgdGNfYWN0aW9uICphY3QsIHZvaWQgKmVudHJ5X2RhdGEsCiAJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJCX0KIAotCQlmb3IgKGsgPSAxOyBrICZsdDsgdGNmX3BlZGl0X25rZXlzKGFjdCk7IGsmIzQzOyYjNDM7KSB7CiYjNDM7CQlmb3IgKGsgPSAxOyBrICZsdDsgdGNmX3BlZGl0X25rZXlzX2xvY2tlZChhY3QpOyBrJiM0MzsmIzQzOykgewogCQkJaWYgKGNtZCAhPSB0Y2ZfcGVkaXRfY21kKGFjdCwgaykpIHsKIAkJCQlOTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCAmIzM0O1Vuc3VwcG9ydGVkIHBlZGl0IGNvbW1hbmQgb2ZmbG9hZCYjMzQ7KTsKIAkJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvY2xzX2FwaS5jIGIvbmV0L3NjaGVkL2Nsc19hcGkuYwppbmRleCAzZTY3NjAwYTRhMWExMC4uZmZlZWE2ZGI4MzM3NDcgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9jbHNfYXBpLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL2Nsc19hcGkuYwpAQCAtMzg4NiwxMiAmIzQzOzM4ODYsMjEgQEAgaW50IHRjX3NldHVwX2FjdGlvbihzdHJ1Y3QgZmxvd19hY3Rpb24gKmZsb3dfYWN0aW9uLAogCiAJCWVudHJ5ID0gJmFtcDtmbG93X2FjdGlvbi0mZ3Q7ZW50cmllc1tqXTsKIAkJc3Bpbl9sb2NrX2JoKCZhbXA7YWN0LSZndDt0Y2ZhX2xvY2spOwomIzQzOwomIzQzOwkJLyogQWJvcnQgdGhlIG9mZmxvYWQgaWYgd2UgaGF2ZSBleGhhdXN0ZWQgdGhlIGFsbG9jYXRlZCBjYXBhY2l0eSAqLwomIzQzOwkJaWYgKGogJmd0Oz0gZmxvd19hY3Rpb24tJmd0O251bV9lbnRyaWVzKSB7CiYjNDM7CQkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtGbG93IGFjdGlvbiBidWZmZXIgb3ZlcmZsb3cmIzM0Oyk7CiYjNDM7CQkJZXJyID0gLUVOT1NQQzsKJiM0MzsJCQlnb3RvIGVycl9vdXRfbG9ja2VkOwomIzQzOwkJfQomIzQzOwogCQllcnIgPSB0Y2ZfYWN0X2dldF91c2VyX2Nvb2tpZShlbnRyeSwgYWN0KTsKIAkJaWYgKGVycikKIAkJCWdvdG8gZXJyX291dF9sb2NrZWQ7CiAKLQkJaW5kZXggPSAwOwotCQllcnIgPSB0Y19zZXR1cF9vZmZsb2FkX2FjdChhY3QsIGVudHJ5LCAmYW1wO2luZGV4LCBleHRhY2spOwomIzQzOwkJaW5kZXggPSBmbG93X2FjdGlvbi0mZ3Q7bnVtX2VudHJpZXMgLSBqOwomIzQzOwkJZXJyID0gdGNfc2V0dXBfb2ZmbG9hZF9hY3QoYWN0LCBlbnRyeSwgJmFtcDtpbmRleCwKJiM0MzsJCQkJCSAgIGV4dGFjayk7CiAJCWlmIChlcnIpCiAJCQlnb3RvIGVycl9vdXRfbG9ja2VkOwogCkBAIC0zOTQ1LDEwICYjNDM7Mzk1NCwxMyBAQCB1bnNpZ25lZCBpbnQgdGNmX2V4dHNfbnVtX2FjdGlvbnMoc3RydWN0IHRjZl9leHRzICpleHRzKQogCWludCBpOwogCiAJdGNmX2V4dHNfZm9yX2VhY2hfYWN0aW9uKGksIGFjdCwgZXh0cykgewotCQlpZiAoaXNfdGNmX3BlZGl0KGFjdCkpCi0JCQludW1fYWN0cyAmIzQzOz0gdGNmX3BlZGl0X25rZXlzKGFjdCk7Ci0JCWVsc2UKJiM0MzsJCWlmIChpc190Y2ZfcGVkaXQoYWN0KSkgewomIzQzOwkJCXNwaW5fbG9ja19iaCgmYW1wO2FjdC0mZ3Q7dGNmYV9sb2NrKTsKJiM0MzsJCQludW1fYWN0cyAmIzQzOz0gdGNmX3BlZGl0X25rZXlzX2xvY2tlZChhY3QpOwomIzQzOwkJCXNwaW5fdW5sb2NrX2JoKCZhbXA7YWN0LSZndDt0Y2ZhX2xvY2spOwomIzQzOwkJfSBlbHNlIHsKIAkJCW51bV9hY3RzJiM0MzsmIzQzOzsKJiM0MzsJCX0KIAl9CiAJcmV0dXJuIG51bV9hY3RzOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDg2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFRDIFBlZGl0IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBzb21lIGtleSBmaWxlcyBpbiB0aGUgbmV0d29ya2luZyBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIHRyYWZmaWMgY29udHJvbCAoVEMpIHBlZGl0IGFjdGlvbi4gSXQmIzM5O3MgbW9kaWZ5aW5nIGBpbmNsdWRlL25ldC90Y19hY3QvdGNfcGVkaXQuaGAsIGBuZXQvc2NoZWQvYWN0X2FwaS5jYCwgYG5ldC9zY2hlZC9hY3RfcGVkaXQuY2AsIGFuZCBgbmV0L3NjaGVkL2Nsc19hcGkuY2AuIFRoZSBjb3JlIGNoYW5nZSBzZWVtcyB0byBiZSBsb2NraW5nIGRvd24gdGhlIGB0Y2ZfcGVkaXRfbmtleXNgIGZ1bmN0aW9uLCByZXBsYWNpbmcgaXQgd2l0aCBhIGxvY2tlZCB2ZXJzaW9uLCBgdGNmX3BlZGl0X25rZXlzX2xvY2tlZGAsIHdoaWNoIGlzIGEgZ29vZCBtb3ZlIHRvIGVuc3VyZSBkYXRhIGludGVncml0eSBkdXJpbmcgYWNjZXNzLiBGdXJ0aGVybW9yZSwgdGhlcmUgYXJlIGNoZWNrcyBiZWluZyBpbnRyb2R1Y2VkIGZvciBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93cyBpbiBgdGNfc2V0dXBfYWN0aW9uYCBhbmQgYHRjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cGAsIHdoaWNoIGlzIGV4Y2VsbGVudC4gSSBhbHdheXMgYXBwcmVjaWF0ZSBwcm9hY3RpdmUgdnVsbmVyYWJpbGl0eSBtaXRpZ2F0aW9uIGxpa2UgdGhpcy4KCkdpdmVuIHRoYXQgdGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgd2l0aGluIHRoZSBUQyBzdWJzeXN0ZW0gcmVsYXRlZCB0byB0aGUgcGVkaXQgYWN0aW9uIGFuZCBvZmZsb2FkaW5nLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuCgpTaW5jZSB0aGUgZmlsZXMgYXJlIGluIGBuZXQvc2NoZWQvYCwgSSYjMzk7bGwgY2hlY2sgdGhlIGFzc29jaWF0ZWQgS2NvbmZpZyBmaWxlcy4gYGFjdF9hcGkuY2AgaXMgZW5hYmxlZCBieSBgQ09ORklHX05FVF9DTFNfQUNUYCwgYGFjdF9wZWRpdC5jYCBuZWVkcyBgQ09ORklHX05FVF9BQ1RfUEVESVRgLCBhbmQgYGNsc19hcGkuY2AgZGVwZW5kcyBvbiBgQ09ORklHX05FVF9DTFNgLiBJJiMzOTtsbCB1c2UgYGdyZXBwZXJgIHRvIGNvbmZpcm0gdGhpcyBxdWlja2x5IGFuZCBpZGVudGlmeSB3aGljaCBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gc2V0IHRvIGdldCB0aGlzIGZ1bmN0aW9uYWxpdHkgZW5hYmxlZC4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGhhdmUgYWxsIHRoZSByZWxldmFudCBkZXBlbmRlbmNpZXMgc2V0IHRvIGVuc3VyZSBJIGhhdmUgYSBjb21wbGV0ZSBhbmQgdGVzdGFibGUgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkVUX0FDVF9QRURJVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9NzY0PWNvbmZpZyBORVRfQUNUX05BVFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTc3My1cbm5ldC9zY2hlZC9LY29uZmlnOjc3NDpjb25maWcgTkVUX0FDVF9QRURJVFxubmV0L3NjaGVkL0tjb25maWctNzc1LVx0dHJpc3RhdGUgXCYjMzQ7UGFja2V0IEVkaXRpbmdcJiMzNDtcbi0tXG5uZXQvc2NoZWQvTWFrZWZpbGU9MTY9b2JqLSQoQ09ORklHX05FVF9BQ1RfTkFUKVx0JiM0Mzs9IGFjdF9uYXQub1xubmV0L3NjaGVkL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19ORVRfQUNUX1BFRElUKVx0JiM0Mzs9IGFjdF9wZWRpdC5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtMTgtb2JqLSQoQ09ORklHX05FVF9BQ1RfU0lNUClcdCYjNDM7PSBhY3Rfc2ltcGxlLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzI0CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBUcmFmZmljIENvbnRyb2wgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBjb25maWd1cmF0aW9uIGhlcmUgZm9yIHRyYWZmaWMgY29udHJvbC4gSSBzZWUgdGhhdCBgTkVUX0FDVF9QRURJVGAgaXMgdGhlIGtleSBmb3IgdGhlIFBFRElUIGFjdGlvbiwgdGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgYWxzbyBuZWVkIHRvIGVuc3VyZSBgTkVUX0NMU19BQ1RgIGlzIGVuYWJsZWQgYmVjYXVzZSBpdCYjMzk7cyByZXF1aXJlZCBmb3IgYWN0aW9ucyBpbiBnZW5lcmFsLgoKTm93LCBsZXQmIzM5O3MgdHJhY2UgdGhyb3VnaCB0aGUgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGVsZW1lbnRzIGludGVyYWN0LiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSB1c2FnZSBvZiBgdGNmX3BlZGl0X25rZXlzX2xvY2tlZGAgYW5kIGB0Y19zZXR1cF9hY3Rpb25gLCBhbmQgYSBmZXcgb3RoZXIgdGhpbmdzLgoKYHRjX3NldHVwX2FjdGlvbmAsIHRoYXQmIzM5O3MgaW4gYG5ldC9zY2hlZC9jbHNfYXBpLmNgLiBHb29kLCB0aGF0IG1ha2VzIHNlbnNlLiBUaGVuIGB0Y2ZfcGVkaXRfb2ZmbG9hZF9hY3Rfc2V0dXBgIGlzIGluIGBuZXQvc2NoZWQvYWN0X3BlZGl0LmNgLiBJJiMzOTtsbCB3YW50IHRvIHJldmlldyB0aGF0IG9uZSBjYXJlZnVsbHkuIEkgc2VlIGB0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlYCBpbiBgbmV0L3NjaGVkL2FjdF9hcGkuY2AsIGFuZCBgdGNmX2V4dHNfbnVtX2FjdGlvbnNgIGlzIGJhY2sgaW4gYG5ldC9zY2hlZC9jbHNfYXBpLmNgLgoKVG8gbWFrZSBzdXJlIEkmIzM5O20gc2hhcnAsIEkmIzM5O2xsIG5lZWQgdG8gZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYHRjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cGAsIGB0Y19zZXR1cF9hY3Rpb25gLCBgdGNmX29mZmxvYWRfYWN0X251bV9hY3Rpb25zX3NpbmdsZWAsIGFuZCBgdGNmX2V4dHNfbnVtX2FjdGlvbnNgLiBUaGV5JiMzOTtyZSB0aGUgY29yZSBvZiBob3cgdGhlIGFjdGlvbiBpcyBzZXR1cCBhbmQgcHJvY2Vzc2VkLgoKRmluYWxseSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZy4gSSYjMzk7bGwgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIExvb2tzIGxpa2UgYE5FVF9DTFNfQUNUYCBpcyByZXF1aXJlZCBieSBgYWN0X2FwaS5jYCBhcyB3ZWxsLiBUaGF0IGNvbmZpcm1zIG15IGluaXRpYWwgYXNzZXNzbWVudC4gTm93IEkmIzM5O2xsIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfQ0xTX0FDVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9MzQ3PWNvbmZpZyBORVRfU0NIX0lOR1JFU1Ncbm5ldC9zY2hlZC9LY29uZmlnLTM0OC1cdHRyaXN0YXRlIFwmIzM0O0luZ3Jlc3MvY2xhc3NpZmllci1hY3Rpb24gUWRpc2NcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjM0OTpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTM1MC1cdHNlbGVjdCBORVRfWEdSRVNTXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NjkwPWNvbmZpZyBORVRfRU1BVENIX0lQVFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTcwMS1cbm5ldC9zY2hlZC9LY29uZmlnOjcwMjpjb25maWcgTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTcwMy1cdGJvb2wgXCYjMzQ7QWN0aW9uc1wmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTcxNT1jb25maWcgTkVUX0FDVF9QT0xJQ0Vcbm5ldC9zY2hlZC9LY29uZmlnLTcxNi1cdHRyaXN0YXRlIFwmIzM0O1RyYWZmaWMgUG9saWNpbmdcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjcxNzpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTcxOC1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03MjY9Y29uZmlnIE5FVF9BQ1RfR0FDVFxubmV0L3NjaGVkL0tjb25maWctNzI3LVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBhY3Rpb25zXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3Mjg6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03MjktXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NzQyPWNvbmZpZyBORVRfQUNUX01JUlJFRFxubmV0L3NjaGVkL0tjb25maWctNzQzLVx0dHJpc3RhdGUgXCYjMzQ7UmVkaXJlY3RpbmcgYW5kIE1pcnJvcmluZ1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NzQ0Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzQ1LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTc1Mj1jb25maWcgTkVUX0FDVF9TQU1QTEVcbm5ldC9zY2hlZC9LY29uZmlnLTc1My1cdHRyaXN0YXRlIFwmIzM0O1RyYWZmaWMgU2FtcGxpbmdcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjc1NDpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTc1NS1cdHNlbGVjdCBQU0FNUExFXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NzY0PWNvbmZpZyBORVRfQUNUX05BVFxubmV0L3NjaGVkL0tjb25maWctNzY1LVx0dHJpc3RhdGUgXCYjMzQ7U3RhdGVsZXNzIE5BVFwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NzY2Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzY3LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTc3ND1jb25maWcgTkVUX0FDVF9QRURJVFxubmV0L3NjaGVkL0tjb25maWctNzc1LVx0dHJpc3RhdGUgXCYjMzQ7UGFja2V0IEVkaXRpbmdcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjc3NjpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTc3Ny1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03ODM9Y29uZmlnIE5FVF9BQ1RfU0lNUFxubmV0L3NjaGVkL0tjb25maWctNzg0LVx0dHJpc3RhdGUgXCYjMzQ7U2ltcGxlIEV4YW1wbGUgKERlYnVnKVwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6Nzg1Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzg2LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTc5Nz1jb25maWcgTkVUX0FDVF9TS0JFRElUXG5uZXQvc2NoZWQvS2NvbmZpZy03OTgtXHR0cmlzdGF0ZSBcJiMzNDtTS0IgRWRpdGluZ1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6Nzk5Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctODAwLVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTgwOD1jb25maWcgTkVUX0FDVF9DU1VNXG5uZXQvc2NoZWQvS2NvbmZpZy04MDktXHR0cmlzdGF0ZSBcJiMzNDtDaGVja3N1bSBVcGRhdGluZ1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODEwOlx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcdTAwMjZcdTAwMjYgSU5FVFxubmV0L3NjaGVkL0tjb25maWctODExLVx0c2VsZWN0IE5FVF9DUkMzMkNcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04MTk9Y29uZmlnIE5FVF9BQ1RfTVBMU1xubmV0L3NjaGVkL0tjb25maWctODIwLVx0dHJpc3RhdGUgXCYjMzQ7TVBMUyBtYW5pcHVsYXRpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjgyMTpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTgyMi1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04MzA9Y29uZmlnIE5FVF9BQ1RfVkxBTlxubmV0L3NjaGVkL0tjb25maWctODMxLVx0dHJpc3RhdGUgXCYjMzQ7VmxhbiBtYW5pcHVsYXRpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjgzMjpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTgzMy1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04NDE9Y29uZmlnIE5FVF9BQ1RfQlBGXG5uZXQvc2NoZWQvS2NvbmZpZy04NDItXHR0cmlzdGF0ZSBcJiMzNDtCUEYgYmFzZWQgYWN0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4NDM6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy04NDQtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9ODUzPWNvbmZpZyBORVRfQUNUX0NPTk5NQVJLXG5uZXQvc2NoZWQvS2NvbmZpZy04NTQtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgQ29ubmVjdGlvbiBNYXJrIFJldHJpZXZlclwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODU1Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcdTAwMjZcdTAwMjYgTkVURklMVEVSXG5uZXQvc2NoZWQvS2NvbmZpZy04NTYtXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgTkZfQ09OTlRSQUNLX01BUktcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04NjU9Y29uZmlnIE5FVF9BQ1RfQ1RJTkZPXG5uZXQvc2NoZWQvS2NvbmZpZy04NjYtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgQ29ubmVjdGlvbiBNYXJrIEFjdGlvbnNcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjg2NzpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1QgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUlxubmV0L3NjaGVkL0tjb25maWctODY4LVx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2IE5GX0NPTk5UUkFDS19NQVJLXG4tLVxubmV0L3NjaGVkL0tjb25maWc9ODgyPWNvbmZpZyBORVRfQUNUX1NLQk1PRFxubmV0L3NjaGVkL0tjb25maWctODgzLVx0dHJpc3RhdGUgXCYjMzQ7c2tiIGRhdGEgbW9kaWZpY2F0aW9uIGFjdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODg0Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctODg1LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTg5Mz1jb25maWcgTkVUX0FDVF9JRkVcbm5ldC9zY2hlZC9LY29uZmlnLTg5NC1cdHRyaXN0YXRlIFwmIzM0O0ludGVyLUZFIGFjdGlvbiBiYXNlZCBvbiBJRVRGIEZvckNFUyBJbnRlckZFIExGQlwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODk1Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctODk2LVx0c2VsZWN0IE5FVF9JRkVcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz05MDY9Y29uZmlnIE5FVF9BQ1RfVFVOTkVMX0tFWVxubmV0L3NjaGVkL0tjb25maWctOTA3LVx0dHJpc3RhdGUgXCYjMzQ7SVAgdHVubmVsIG1ldGFkYXRhIG1hbmlwdWxhdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6OTA4Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctOTA5LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTkxNz1jb25maWcgTkVUX0FDVF9DVFxubmV0L3NjaGVkL0tjb25maWctOTE4LVx0dHJpc3RhdGUgXCYjMzQ7Y29ubmVjdGlvbiB0cmFja2luZyB0YyBhY3Rpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjkxOTpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1QgXHUwMDI2XHUwMDI2IE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgKCFORl9OQVQgfHwgTkZfTkFUKSBcdTAwMjZcdTAwMjYgTkZfRkxPV19UQUJMRVxubmV0L3NjaGVkL0tjb25maWctOTIwLVx0c2VsZWN0IE5GX0NPTk5UUkFDS19PVlNcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz05MzA9Y29uZmlnIE5FVF9BQ1RfR0FURVxubmV0L3NjaGVkL0tjb25maWctOTMxLVx0dHJpc3RhdGUgXCYjMzQ7RnJhbWUgZ2F0ZSBlbnRyeSBsaXN0IGNvbnRyb2wgdGMgYWN0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo5MzI6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy05MzMtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9OTU0PWNvbmZpZyBORVRfVENfU0tCX0VYVFxubmV0L3NjaGVkL0tjb25maWctOTU1LVx0Ym9vbCBcJiMzNDtUQyByZWNpcmN1bGF0aW9uIHN1cHBvcnRcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjk1NjpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTk1Ny1cdHNlbGVjdCBTS0JfRVhURU5TSU9OU1xuLS1cbm5ldC9zY2hlZC9NYWtlZmlsZT0xMD1vYmotJChDT05GSUdfTkVUX0NMUylcdFx0JiM0Mzs9IGNsc19hcGkub1xubmV0L3NjaGVkL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19ORVRfQ0xTX0FDVClcdCYjNDM7PSBhY3RfYXBpLm9cbm5ldC9zY2hlZC9NYWtlZmlsZS0xMi1vYmotJChDT05GSUdfTkVUX0FDVF9QT0xJQ0UpXHQmIzQzOz0gYWN0X3BvbGljZS5vXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz0xNDQ9c3RhdGljIHU2NCB0Y2ZfZXh0c19taXNzX2Nvb2tpZV9nZXQodTMyIG1pc3NfY29va2llX2Jhc2UsIGludCBhY3RfaW5kZXgpXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTQtXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE1NTojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1Ni1ERUZJTkVfU1RBVElDX0tFWV9GQUxTRSh0Y19za2JfZXh0X3RjKTtcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTQxND1zdGF0aWMgdm9pZCB0Y2ZfcHJvdG9fY291bnRfdXNlc3coc3RydWN0IHRjZl9wcm90byAqdHAsIGJvb2wgYWRkKVxubmV0L3NjaGVkL2Nsc19hcGkuYy00MTUte1xubmV0L3NjaGVkL2Nsc19hcGkuYzo0MTY6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL2Nsc19hcGkuYy00MTctXHRzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jayA9IHRwLVx1MDAzZWNoYWluLVx1MDAzZWJsb2NrO1xuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9MTcxMj1zdGF0aWMgaW5saW5lIGludCBfX3RjZl9jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTcyMC17XG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE3MjE6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNzIyLVx0Y29uc3QgaW50IG1heF9yZWNsYXNzaWZ5X2xvb3AgPSAxNjtcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE3NjUtXHRcdH1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTc2NjojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE3NjctXHRcdGlmICh1bmxpa2VseShlcnIgPT0gVENfQUNUX1JFQ0xBU1NJRlkgXHUwMDI2XHUwMDI2ICFjb21wYXRfbW9kZSkpIHtcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE3ODctXHRyZXR1cm4gVENfQUNUX1VOU1BFQzsgLyogc2lnbmFsOiBjb250aW51ZSBsb29rdXAgKi9cbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTc4ODojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE3ODktcmVzZXQ6XG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz0zMzM4PWludCB0Y2ZfZXh0c19pbml0X2V4KHN0cnVjdCB0Y2ZfZXh0cyAqZXh0cywgc3RydWN0IG5ldCAqbmV0LCBpbnQgYWN0aW9uLFxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzM0My1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6MzM0NDojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTMzNDUtXHRleHRzLVx1MDAzZXR5cGUgPSAwO1xuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzM3MC1cdHRjZl9leHRzX2Rlc3Ryb3koZXh0cyk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jOjMzNzE6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zMzcyLVx0ZXh0cy1cdTAwM2VhY3Rpb25zID0gTlVMTDtcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTMzNzg9dm9pZCB0Y2ZfZXh0c19kZXN0cm95KHN0cnVjdCB0Y2ZfZXh0cyAqZXh0cylcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTMzODEtXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjMzODI6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zMzgzLVx0aWYgKGV4dHMtXHUwMDNlYWN0aW9ucykge1xuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9MzM5Mj1pbnQgdGNmX2V4dHNfdmFsaWRhdGVfZXgoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgc3RydWN0IG5sYXR0ciAqKnRiLFxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzM5NS17XG5uZXQvc2NoZWQvY2xzX2FwaS5jOjMzOTY6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zMzk3LVx0e1xuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzQzNi1cdCAgICAoZXh0cy1cdTAwM2Vwb2xpY2UgXHUwMDI2XHUwMDI2IHRiW2V4dHMtXHUwMDNlcG9saWNlXSkpIHtcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MzQzNzpcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtDbGFzc2lmaWVyIGFjdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgcGVyIGNvbXBpbGUgb3B0aW9ucyAoQ09ORklHX05FVF9DTFNfQUNUKVwmIzM0Oyk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTM0MzgtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTM0NTU9dm9pZCB0Y2ZfZXh0c19jaGFuZ2Uoc3RydWN0IHRjZl9leHRzICpkc3QsIHN0cnVjdCB0Y2ZfZXh0cyAqc3JjKVxubmV0L3NjaGVkL2Nsc19hcGkuYy0zNDU2LXtcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MzQ1NzojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTM0NTgtXHRzdHJ1Y3QgdGNmX2V4dHMgb2xkID0gKmRzdDtcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTM0NjQ9RVhQT1JUX1NZTUJPTCh0Y2ZfZXh0c19jaGFuZ2UpO1xubmV0L3NjaGVkL2Nsc19hcGkuYy0zNDY1LVxubmV0L3NjaGVkL2Nsc19hcGkuYzozNDY2OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzQ2Ny1zdGF0aWMgc3RydWN0IHRjX2FjdGlvbiAqdGNmX2V4dHNfZmlyc3RfYWN0KHN0cnVjdCB0Y2ZfZXh0cyAqZXh0cylcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTM0NzY9aW50IHRjZl9leHRzX2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRjZl9leHRzICpleHRzKVxubmV0L3NjaGVkL2Nsc19hcGkuYy0zNDc3LXtcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MzQ3ODojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTM0NzktXHRzdHJ1Y3QgbmxhdHRyICpuZXN0O1xuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9MzUxNz1pbnQgdGNmX2V4dHNfdGVyc2VfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNmX2V4dHMgKmV4dHMpXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTM1MTgte1xubmV0L3NjaGVkL2Nsc19hcGkuYzozNTE5OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzUyMC1cdHN0cnVjdCBubGF0dHIgKm5lc3Q7XG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz0zNTQzPWludCB0Y2ZfZXh0c19kdW1wX3N0YXRzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB0Y2ZfZXh0cyAqZXh0cylcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzU0NC17XG5uZXQvc2NoZWQvY2xzX2FwaS5jOjM1NDU6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zNTQ2LVx0c3RydWN0IHRjX2FjdGlvbiAqYSA9IHRjZl9leHRzX2ZpcnN0X2FjdChleHRzKTtcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTM4NTA9c3RhdGljIGludCB0Y19zZXR1cF9vZmZsb2FkX2FjdChzdHJ1Y3QgdGNfYWN0aW9uICphY3QsXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy0zODU0LXtcbm5ldC9zY2hlZC9jbHNfYXBpLmM6Mzg1NTojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTM4NTYtXHRpZiAoYWN0LVx1MDAzZW9wcy1cdTAwM2VvZmZsb2FkX2FjdF9zZXR1cCkge1xuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9MzkzMD1pbnQgdGNfc2V0dXBfb2ZmbG9hZF9hY3Rpb24oc3RydWN0IGZsb3dfYWN0aW9uICpmbG93X2FjdGlvbixcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTM5MzMte1xubmV0L3NjaGVkL2Nsc19hcGkuYzozOTM0OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzkzNS1cdHUzMiBtaXNzX2Nvb2tpZV9iYXNlO1xuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9Mzk2Nz1FWFBPUlRfU1lNQk9MKHRjZl9leHRzX251bV9hY3Rpb25zKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzk2OC1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6Mzk2OTojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTM5NzAtc3RhdGljIGludCB0Y2ZfcWV2ZW50X3BhcnNlX2Jsb2NrX2luZGV4KHN0cnVjdCBubGF0dHIgKmJsb2NrX2luZGV4X2F0dHIsXG4tLVxubmV0L3NjaGVkL2Nsc191MzIuYz0xNDc0PXN0YXRpYyBpbnQgX19pbml0IGluaXRfdTMyKHZvaWQpXG4tLVxubmV0L3NjaGVkL2Nsc191MzIuYy0xNDgyLVx0cHJfaW5mbyhcJiMzNDsgICAgaW5wdXQgZGV2aWNlIGNoZWNrIG9uXFxuXCYjMzQ7KTtcbm5ldC9zY2hlZC9jbHNfdTMyLmM6MTQ4MzojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTE0ODQtXHRwcl9pbmZvKFwmIzM0OyAgICBBY3Rpb25zIGNvbmZpZ3VyZWRcXG5cJiMzNDspO1xuLS1cbm5ldC9zY2hlZC9zY2hfY2FrZS5jPTE3MTk9c3RhdGljIHUzMiBjYWtlX2NsYXNzaWZ5KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgY2FrZV90aW5fZGF0YSAqKnQsXG4tLVxubmV0L3NjaGVkL3NjaF9jYWtlLmMtMTczNS1cdGlmIChyZXN1bHQgXHUwMDNlPSAwKSB7XG5uZXQvc2NoZWQvc2NoX2Nha2UuYzoxNzM2OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9zY2hfY2FrZS5jLTE3MzctXHRcdHN3aXRjaCAocmVzdWx0KSB7XG4tLVxubmV0L3NjaGVkL3NjaF9kcnIuYz0yOTg9c3RhdGljIHN0cnVjdCBkcnJfY2xhc3MgKmRycl9jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbi0tXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTMxNi1cdGlmIChyZXN1bHQgXHUwMDNlPSAwKSB7XG5uZXQvc2NoZWQvc2NoX2Ryci5jOjMxNzojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTMxOC1cdFx0c3dpdGNoIChyZXN1bHQpIHtcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz0zNDE9c3RhdGljIGludCBkdWFscGkyX3NrYl9jbGFzc2lmeShzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLFxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTM2OC1cdGlmIChyZXN1bHQgXHUwMDNlPSAwKSB7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzozNjk6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMzcwLVx0XHRzd2l0Y2ggKHJlc3VsdCkge1xuLS1cbm5ldC9zY2hlZC9zY2hfZXRzLmM9MzgyPXN0YXRpYyBzdHJ1Y3QgZXRzX2NsYXNzICpldHNfY2xhc3NpZnkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4tLVxubmV0L3NjaGVkL3NjaF9ldHMuYy0zOTQtXHRcdGVyciA9IHRjZl9jbGFzc2lmeShza2IsIE5VTEwsIGZsLCBcdTAwMjZyZXMsIGZhbHNlKTtcbm5ldC9zY2hlZC9zY2hfZXRzLmM6Mzk1OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9zY2hfZXRzLmMtMzk2LVx0XHRzd2l0Y2ggKGVycikge1xuLS1cbm5ldC9zY2hlZC9zY2hfZnFfY29kZWwuYz03Nj1zdGF0aWMgdW5zaWduZWQgaW50IGZxX2NvZGVsX2NsYXNzaWZ5KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxuLS1cbm5ldC9zY2hlZC9zY2hfZnFfY29kZWwuYy05NS1cdGlmIChyZXN1bHQgXHUwMDNlPSAwKSB7XG5uZXQvc2NoZWQvc2NoX2ZxX2NvZGVsLmM6OTY6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL3NjaF9mcV9jb2RlbC5jLTk3LVx0XHRzd2l0Y2ggKHJlc3VsdCkge1xuLS1cbm5ldC9zY2hlZC9zY2hfZnFfcGllLmM9ODE9c3RhdGljIHVuc2lnbmVkIGludCBmcV9waWVfY2xhc3NpZnkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4tLVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy0xMDAtXHRpZiAocmVzdWx0IFx1MDAzZT0gMCkge1xubmV0L3NjaGVkL3NjaF9mcV9waWUuYzoxMDE6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy0xMDItXHRcdHN3aXRjaCAocmVzdWx0KSB7XG4tLVxubmV0L3NjaGVkL3NjaF9oZnNjLmM9MTEzMD1oZnNjX2NsYXNzaWZ5KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLCBpbnQgKnFlcnIpXG4tLVxubmV0L3NjaGVkL3NjaF9oZnNjLmMtMTE0Ni1cdHdoaWxlICh0Y2YgXHUwMDI2XHUwMDI2IChyZXN1bHQgPSB0Y2ZfY2xhc3NpZnkoc2tiLCBOVUxMLCB0Y2YsIFx1MDAyNnJlcywgZmFsc2UpKSBcdTAwM2U9IDApIHtcbm5ldC9zY2hlZC9zY2hfaGZzYy5jOjExNDc6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL3NjaF9oZnNjLmMtMTE0OC1cdFx0c3dpdGNoIChyZXN1bHQpIHtcbi0tXG5uZXQvc2NoZWQvc2NoX2h0Yi5jPTIyMD1zdGF0aWMgc3RydWN0IGh0Yl9jbGFzcyAqaHRiX2NsYXNzaWZ5KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxuLS1cbm5ldC9zY2hlZC9zY2hfaHRiLmMtMjQ2LVx0d2hpbGUgKHRjZiBcdTAwMjZcdTAwMjYgKHJlc3VsdCA9IHRjZl9jbGFzc2lmeShza2IsIE5VTEwsIHRjZiwgXHUwMDI2cmVzLCBmYWxzZSkpIFx1MDAzZT0gMCkge1xubmV0L3NjaGVkL3NjaF9odGIuYzoyNDc6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL3NjaF9odGIuYy0yNDgtXHRcdHN3aXRjaCAocmVzdWx0KSB7XG4tLVxubmV0L3NjaGVkL3NjaF9odGIuYz02MjA9c3RhdGljIGludCBodGJfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbi0tXG5uZXQvc2NoZWQvc2NoX2h0Yi5jLTYzNS1cdFx0fVxubmV0L3NjaGVkL3NjaF9odGIuYzo2MzY6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL3NjaF9odGIuYy02MzctXHR9IGVsc2UgaWYgKCFjbCkge1xuLS1cbm5ldC9zY2hlZC9zY2hfbXVsdGlxLmM9MzA9bXVsdGlxX2NsYXNzaWZ5KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLCBpbnQgKnFlcnIpXG4tLVxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYy0zOS1cdGVyciA9IHRjZl9jbGFzc2lmeShza2IsIE5VTEwsIGZsLCBcdTAwMjZyZXMsIGZhbHNlKTtcbm5ldC9zY2hlZC9zY2hfbXVsdGlxLmM6NDA6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYy00MS1cdHN3aXRjaCAoZXJyKSB7XG4tLVxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYz02MD1tdWx0aXFfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbi0tXG5uZXQvc2NoZWQvc2NoX211bHRpcS5jLTY2LVx0cWRpc2MgPSBtdWx0aXFfY2xhc3NpZnkoc2tiLCBzY2gsIFx1MDAyNnJldCk7XG5uZXQvc2NoZWQvc2NoX211bHRpcS5jOjY3OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9zY2hfbXVsdGlxLmMtNjgtXHRpZiAocWRpc2MgPT0gTlVMTCkge1xuLS1cbm5ldC9zY2hlZC9zY2hfcHJpby5jPTMxPXByaW9fY2xhc3NpZnkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsIGludCAqcWVycilcbi0tXG5uZXQvc2NoZWQvc2NoX3ByaW8uYy00Mi1cdFx0ZXJyID0gdGNmX2NsYXNzaWZ5KHNrYiwgTlVMTCwgZmwsIFx1MDAyNnJlcywgZmFsc2UpO1xubmV0L3NjaGVkL3NjaF9wcmlvLmM6NDM6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL3NjaF9wcmlvLmMtNDQtXHRcdHN3aXRjaCAoZXJyKSB7XG4tLVxubmV0L3NjaGVkL3NjaF9wcmlvLmM9Njk9cHJpb19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpXG4tLVxubmV0L3NjaGVkL3NjaF9wcmlvLmMtNzUtXHRxZGlzYyA9IHByaW9fY2xhc3NpZnkoc2tiLCBzY2gsIFx1MDAyNnJldCk7XG5uZXQvc2NoZWQvc2NoX3ByaW8uYzo3NjojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXG5uZXQvc2NoZWQvc2NoX3ByaW8uYy03Ny1cdGlmIChxZGlzYyA9PSBOVUxMKSB7XG4tLVxubmV0L3NjaGVkL3NjaF9xZnEuYz02OTQ9c3RhdGljIHN0cnVjdCBxZnFfY2xhc3MgKnFmcV9jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbi0tXG5uZXQvc2NoZWQvc2NoX3FmcS5jLTcxMy1cdGlmIChyZXN1bHQgXHUwMDNlPSAwKSB7XG5uZXQvc2NoZWQvc2NoX3FmcS5jOjcxNDojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXG5uZXQvc2NoZWQvc2NoX3FmcS5jLTcxNS1cdFx0c3dpdGNoIChyZXN1bHQpIHtcbi0tXG5uZXQvc2NoZWQvc2NoX3NmYi5jPTI1Nz1zdGF0aWMgYm9vbCBzZmJfY2xhc3NpZnkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRjZl9wcm90byAqZmwsXG4tLVxubmV0L3NjaGVkL3NjaF9zZmIuYy0yNjQtXHRpZiAocmVzdWx0IFx1MDAzZT0gMCkge1xubmV0L3NjaGVkL3NjaF9zZmIuYzoyNjU6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL3NjaF9zZmIuYy0yNjYtXHRcdHN3aXRjaCAocmVzdWx0KSB7XG4tLVxubmV0L3NjaGVkL3NjaF9zZnEuYz0xNTY9c3RhdGljIHVuc2lnbmVkIGludCBzZnFfY2xhc3NpZnkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4tLVxubmV0L3NjaGVkL3NjaF9zZnEuYy0xNzUtXHRpZiAocmVzdWx0IFx1MDAzZT0gMCkge1xubmV0L3NjaGVkL3NjaF9zZnEuYzoxNzY6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL3NjaF9zZnEuYy0xNzctXHRcdHN3aXRjaCAocmVzdWx0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA4MDYKCQkJCQkJCW91dHB1dDogMjEwCgkJCQkJCQl0aG91Z2h0czogNzIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGVkaXQgQWN0aW9uIE9mZmxvYWQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggcmVsYXRlZCB0byB0aGUgVEMgcGVkaXQgYWN0aW9uIG9mZmxvYWRpbmcuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGludm9sdmUgc29tZSByYWNlIGNvbmRpdGlvbiBhbmQgYnVmZmVyIG92ZXJmbG93IGZpeGVzLiBMZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgbG9naWMuCgpGaXJzdCwgdGhlIGNvbmZpZ3MgYXJlIGtleTogYE5FVF9DTFNfQUNUYCBhbmQgYE5FVF9BQ1RfUEVESVRgLiBSaWdodCwgdGhlc2UgYXJlIHRoZSBvbmVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoYXQgc3RyYWlnaHQuIGBORVRfQ0xTYCBpcyBhbHNvIGludm9sdmVkLCBzcGVjaWZpY2FsbHkgZm9yIGBjbHNfYXBpLmNgLiBOb3csIGBORVRfQ0xTYCBpcyByZWFsbHkganVzdCB0aGUgYmFzZSBmb3IgY2xhc3NpZmllcnMsIEkgZG9uJiMzOTt0IG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoYXQgb25lIHJpZ2h0IG5vdy4gQW5kLCBmb3IgZ29vZCBtZWFzdXJlLCBpdCYjMzk7cyB3b3J0aCBub3RpbmcgdGhhdCBgTkVUX1NDSF9JTkdSRVNTYCBtaWdodCBiZSBoZWxwZnVsIGZvciB0ZXN0aW5nIFRDIGFjdGlvbnMsIGJ1dCBpdCYjMzk7cyBub3QgZGlyZWN0bHkgcGFydCBvZiB0aGUgY29yZSBwYXRjaC4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIHN5bWJvbHMgYWZmZWN0ZWQuIFRoZSBjcnVjaWFsIHBhcnQgaXMgdGhpcyBgdGNmX3BlZGl0X25rZXlzX2xvY2tlZGAgd2hpY2ggaXMgdXNlZCBieSBzb21lIGtleSBmdW5jdGlvbnMuIFNwZWNpZmljYWxseSwgSSYjMzk7dmUgZ290IHRvIGNoZWNrIGB0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlYCBpbiBgbmV0L3NjaGVkL2FjdF9hcGkuY2AsIGB0Y2ZfcGVkaXRfb2ZmbG9hZF9hY3Rfc2V0dXBgIGluIGBuZXQvc2NoZWQvYWN0X3BlZGl0LmNgLCBhbmQgYHRjZl9leHRzX251bV9hY3Rpb25zYCBpbiBgbmV0L3NjaGVkL2Nsc19hcGkuY2AuIEFsc28gaW1wb3J0YW50IGlzIGB0Y19zZXR1cF9hY3Rpb25gIGluIGBuZXQvc2NoZWQvY2xzX2FwaS5jYCwgd2hpY2ggY2FsbHMgdGhlIG9mZmxvYWQgc2V0dXAuIEkgc2VlIHRoYXQgaXQgY2hlY2tzIGBqICZndDs9IGZsb3dfYWN0aW9uLSZndDtudW1fZW50cmllc2AgYW5kIHJldHVybnMgYC1FTk9TUENgIHdoZW4gdGhlcmUmIzM5O3MgYW4gaXNzdWUgd2l0aCB0aGUgbnVtYmVyIG9mIGVudHJpZXMuCgpTbyBJIHRoaW5rIHRoZSBmb2N1cyBzaG91bGQgYmUgb24gdGhlc2U6IGB0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlYCwgYHRjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cGAsIGB0Y2ZfZXh0c19udW1fYWN0aW9uc2AsIGFuZCBgdGNfc2V0dXBfYWN0aW9uYC4gQWgsIGB0Y2ZfcGVkaXRfbmtleXNfbG9ja2VkYCBpcyBpbmxpbmUsIHNvIGl0IHdvbiYjMzk7dCBiZSBpbiB0aGUgc3ltYm9sIHRhYmxlLiBJdCYjMzk7cyBiYXNpY2FsbHkgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCBJJiMzOTttIGFscmVhZHkgYXdhcmUgb2YgdGhhdCwgdGhvdWdoLgoKSSYjMzk7bSB2ZXJpZnlpbmcgdGhhdCB0aGVzZSBhcmUgdGhlIG9ubHkgZnVuY3Rpb25zIG1vZGlmaWVkLCBhbmQgaXQgc2VlbXMgdGhhdCBpcyB0aGUgY2FzZS4KCkluIHRlcm1zIG9mIGNvbmZpZ3MsIEkgaGF2ZSBjb25maXJtZWQgYE5FVF9DTFNfQUNUYCBhbmQgYE5FVF9BQ1RfUEVESVRgIGFyZSBzdWZmaWNpZW50LgoKTXkgcmVhc29uaW5nPyBUaGlzIHBhdGNoIGlzIGZpeGluZyBhIHJlYWwgaXNzdWXigJRhIHJhY2UgY29uZGl0aW9uIGFuZCBhIGJ1ZmZlciBvdmVyZmxvdy4gSXQmIzM5O3MgdG91Y2hpbmcgcmVhY2hhYmxlIGNvZGUgd2l0aGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgc28gaXQmIzM5O3MgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIEkmIzM5O20gZ29pbmcgdG8gYmUga2VlcGluZyB0aGVzZSBzeW1ib2xzIGluIG1pbmQsIGFuZCBJJiMzOTtsbCB1c2UgYHNldC1yZXN1bHRzYCBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDssCiAgICAmIzM0O05FVF9BQ1RfUEVESVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlJiMzNDssCiAgICAmIzM0O3RjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cCYjMzQ7LAogICAgJiMzNDt0Y2ZfZXh0c19udW1fYWN0aW9ucyYjMzQ7LAogICAgJiMzNDt0Y19zZXR1cF9hY3Rpb24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBhbmQgYnVmZmVyIG92ZXJmbG93IGluIHRoZSBUQyBwZWRpdCBhY3Rpb24gb2ZmbG9hZGluZyBjb2RlLiBJdCBtb2RpZmllcyBgdGNfc2V0dXBfYWN0aW9uYCwgYHRjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cGAsIGB0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlYCwgYW5kIGB0Y2ZfZXh0c19udW1fYWN0aW9uc2AgdG8gdXNlIGEgbG9ja2VkIHZlcnNpb24gb2YgYHRjZl9wZWRpdF9ua2V5c2AgYW5kIGFkZHMgYm91bmRzIGNoZWNraW5nIGZvciBmbG93IGFjdGlvbiBlbnRyaWVzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBjb2RlIGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgc28gaXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0NMU19BQ1QmIzM0OywKICAgICYjMzQ7TkVUX0FDVF9QRURJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjZl9vZmZsb2FkX2FjdF9udW1fYWN0aW9uc19zaW5nbGUmIzM0OywKICAgICYjMzQ7dGNmX3BlZGl0X29mZmxvYWRfYWN0X3NldHVwJiMzNDssCiAgICAmIzM0O3RjZl9leHRzX251bV9hY3Rpb25zJiMzNDssCiAgICAmIzM0O3RjX3NldHVwX2FjdGlvbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGFuZCBidWZmZXIgb3ZlcmZsb3cgaW4gdGhlIFRDIHBlZGl0IGFjdGlvbiBvZmZsb2FkaW5nIGNvZGUuIEl0IG1vZGlmaWVzIGB0Y19zZXR1cF9hY3Rpb25gLCBgdGNmX3BlZGl0X29mZmxvYWRfYWN0X3NldHVwYCwgYHRjZl9vZmZsb2FkX2FjdF9udW1fYWN0aW9uc19zaW5nbGVgLCBhbmQgYHRjZl9leHRzX251bV9hY3Rpb25zYCB0byB1c2UgYSBsb2NrZWQgdmVyc2lvbiBvZiBgdGNmX3BlZGl0X25rZXlzYCBhbmQgYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIGZsb3cgYWN0aW9uIGVudHJpZXMuIFRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGNvZGUgaW4gdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDFUMjM6NDc6MzMuODQ1OTU2MDAxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjExMjc0MzMyNTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0NMU19BQ1RcIixcbiAgICBcIk5FVF9BQ1RfUEVESVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlXCIsXG4gICAgXCJ0Y2ZfcGVkaXRfb2ZmbG9hZF9hY3Rfc2V0dXBcIixcbiAgICBcInRjZl9leHRzX251bV9hY3Rpb25zXCIsXG4gICAgXCJ0Y19zZXR1cF9hY3Rpb25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGFuZCBidWZmZXIgb3ZlcmZsb3cgaW4gdGhlIFRDIHBlZGl0IGFjdGlvbiBvZmZsb2FkaW5nIGNvZGUuIEl0IG1vZGlmaWVzIGB0Y19zZXR1cF9hY3Rpb25gLCBgdGNmX3BlZGl0X29mZmxvYWRfYWN0X3NldHVwYCwgYHRjZl9vZmZsb2FkX2FjdF9udW1fYWN0aW9uc19zaW5nbGVgLCBhbmQgYHRjZl9leHRzX251bV9hY3Rpb25zYCB0byB1c2UgYSBsb2NrZWQgdmVyc2lvbiBvZiBgdGNmX3BlZGl0X25rZXlzYCBhbmQgYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIGZsb3cgYWN0aW9uIGVudHJpZXMuIFRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGNvZGUgaW4gdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMzo0NzozMy44NDU5NjA1MjFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MzU5MDM0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDRjOTZkYWVjOGExZjIyYWRjZjZmMTVhYWU1ZmRkOTZjZWYzOWEwYzBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMSAyMzo0NzozMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC90Y19hY3QvdGNfcGVkaXQuaCBiL2luY2x1ZGUvbmV0L3RjX2FjdC90Y19wZWRpdC5oXFxuaW5kZXggY2I3YjgyZjJjYmM3ZmQuLjk3NzU0ZWEwYTgyNzlkIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L3RjX2FjdC90Y19wZWRpdC5oXFxuKysrIGIvaW5jbHVkZS9uZXQvdGNfYWN0L3RjX3BlZGl0LmhcXG5AQCAtMzcsMTcgKzM3LDE1IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc190Y2ZfcGVkaXQoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSlcXG4gXFx0cmV0dXJuIGZhbHNlO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW5saW5lIGludCB0Y2ZfcGVkaXRfbmtleXMoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSlcXG4rLyogTXVzdCBiZSBjYWxsZWQgd2l0aCBhY3QtXFx1MDAzZXRjZmFfbG9jayBoZWxkIHRvIGVuc3VyZSBjb25zaXN0ZW5jeSBvZiBwYXJhbGxlbFxcbisgKiByZWFkcyBvZiB0aGUgc2FtZSBhY3Rpb24ncyBwZWRpdCBrZXlzIChlLmcuIGZsb3dfb2ZmbG9hZCBjb3VudCB2cyBmaWxsKS5cXG4rICogTm90ZSwgdGhpcyBpcyBvbmx5IHVzZWQgZm9yIHBlZGl0IG9mZmxvYWQuXFxuKyAqL1xcbitzdGF0aWMgaW5saW5lIGludCB0Y2ZfcGVkaXRfbmtleXNfbG9ja2VkKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEpXFxuIHtcXG4tXFx0c3RydWN0IHRjZl9wZWRpdF9wYXJtcyAqcGFybXM7XFxuLVxcdGludCBua2V5cztcXG4tXFxuLVxcdHJjdV9yZWFkX2xvY2soKTtcXG4tXFx0cGFybXMgPSB0b19wZWRpdF9wYXJtcyhhKTtcXG4tXFx0bmtleXMgPSBwYXJtcy1cXHUwMDNldGNmcF9ua2V5cztcXG4tXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuLVxcbi1cXHRyZXR1cm4gbmtleXM7XFxuK1xcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNmEtXFx1MDAzZXRjZmFfbG9jayk7XFxuK1xcdHJldHVybiByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHRvX3BlZGl0KGEpLVxcdTAwM2VwYXJtcyxcXG4rXFx0XFx0XFx0XFx0XFx0IGxvY2tkZXBfaXNfaGVsZChcXHUwMDI2YS1cXHUwMDNldGNmYV9sb2NrKSktXFx1MDAzZXRjZnBfbmtleXM7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbmxpbmUgdTMyIHRjZl9wZWRpdF9odHlwZShjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphLCBpbnQgaW5kZXgpXFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfYXBpLmMgYi9uZXQvc2NoZWQvYWN0X2FwaS5jXFxuaW5kZXggYjY4YmUxNDNhMDY3ZjkuLmYxNDE2MzRkZjIxNDg5IDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9hY3RfYXBpLmNcXG4rKysgYi9uZXQvc2NoZWQvYWN0X2FwaS5jXFxuQEAgLTE0OCwxMCArMTQ4LDE1IEBAIHN0YXRpYyB2b2lkIG9mZmxvYWRfYWN0aW9uX2h3X2NvdW50X2RlYyhzdHJ1Y3QgdGNfYWN0aW9uICphY3QsXFxuIFxcbiBzdGF0aWMgdW5zaWduZWQgaW50IHRjZl9vZmZsb2FkX2FjdF9udW1fYWN0aW9uc19zaW5nbGUoc3RydWN0IHRjX2FjdGlvbiAqYWN0KVxcbiB7XFxuLVxcdGlmIChpc190Y2ZfcGVkaXQoYWN0KSlcXG4tXFx0XFx0cmV0dXJuIHRjZl9wZWRpdF9ua2V5cyhhY3QpO1xcbi1cXHRlbHNlXFxuLVxcdFxcdHJldHVybiAxO1xcbitcXHR1bnNpZ25lZCBpbnQgY291bnQ7XFxuK1xcbitcXHRpZiAoaXNfdGNmX3BlZGl0KGFjdCkpIHtcXG4rXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZhY3QtXFx1MDAzZXRjZmFfbG9jayk7XFxuK1xcdFxcdGNvdW50ID0gdGNmX3BlZGl0X25rZXlzX2xvY2tlZChhY3QpO1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2YWN0LVxcdTAwM2V0Y2ZhX2xvY2spO1xcbitcXHRcXHRyZXR1cm4gY291bnQ7XFxuK1xcdH1cXG4rXFx0cmV0dXJuIDE7XFxuIH1cXG4gXFxuIHN0YXRpYyBib29sIHRjX2FjdF9za2lwX2h3KHUzMiBmbGFncylcXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9wZWRpdC5jIGIvbmV0L3NjaGVkL2FjdF9wZWRpdC5jXFxuaW5kZXggMGQ2NTJkZWE0YTY5MWYuLmQ0ZDQ3YTk5MjFmNDU3IDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9hY3RfcGVkaXQuY1xcbisrKyBiL25ldC9zY2hlZC9hY3RfcGVkaXQuY1xcbkBAIC01NjcsOSArNTY3LDE4IEBAIHN0YXRpYyBpbnQgdGNmX3BlZGl0X29mZmxvYWRfYWN0X3NldHVwKHN0cnVjdCB0Y19hY3Rpb24gKmFjdCwgdm9pZCAqZW50cnlfZGF0YSxcXG4ge1xcbiBcXHRpZiAoYmluZCkge1xcbiBcXHRcXHRzdHJ1Y3QgZmxvd19hY3Rpb25fZW50cnkgKmVudHJ5ID0gZW50cnlfZGF0YTtcXG4rXFx0XFx0aW50IG5rZXlzID0gdGNmX3BlZGl0X25rZXlzX2xvY2tlZChhY3QpO1xcbiBcXHRcXHRpbnQgaztcXG4gXFxuLVxcdFxcdGZvciAoayA9IDA7IGsgXFx1MDAzYyB0Y2ZfcGVkaXRfbmtleXMoYWN0KTsgaysrKSB7XFxuK1xcdFxcdC8qIElmIHRoZSByZXF1aXJlZCBrZXlzIGV4Y2VlZCB0aGUgcmVtYWluaW5nIGNhcGFjaXR5IHJldHVyblxcbitcXHRcXHQgKiAtRU5PU1BDIHRvIGFib3J0IHRoZSBvZmZsb2FkIGFuZCBmYWxsYmFjayB0byBzb2Z0d2FyZS5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmIChua2V5cyBcXHUwMDNlICppbmRleF9pbmMpIHtcXG4rXFx0XFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXFxcIk5vdCBlbm91Z2ggc3BhY2UgdG8gb2ZmbG9hZCBhbGwgcGVkaXQga2V5c1xcXCIpO1xcbitcXHRcXHRcXHRyZXR1cm4gLUVOT1NQQztcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0Zm9yIChrID0gMDsgayBcXHUwMDNjIG5rZXlzOyBrKyspIHtcXG4gXFx0XFx0XFx0c3dpdGNoICh0Y2ZfcGVkaXRfY21kKGFjdCwgaykpIHtcXG4gXFx0XFx0XFx0Y2FzZSBUQ0FfUEVESVRfS0VZX0VYX0NNRF9TRVQ6XFxuIFxcdFxcdFxcdFxcdGVudHJ5LVxcdTAwM2VpZCA9IEZMT1dfQUNUSU9OX01BTkdMRTtcXG5AQCAtNjA2LDcgKzYxNSw3IEBAIHN0YXRpYyBpbnQgdGNmX3BlZGl0X29mZmxvYWRfYWN0X3NldHVwKHN0cnVjdCB0Y19hY3Rpb24gKmFjdCwgdm9pZCAqZW50cnlfZGF0YSxcXG4gXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXHRcXHR9XFxuIFxcbi1cXHRcXHRmb3IgKGsgPSAxOyBrIFxcdTAwM2MgdGNmX3BlZGl0X25rZXlzKGFjdCk7IGsrKykge1xcbitcXHRcXHRmb3IgKGsgPSAxOyBrIFxcdTAwM2MgdGNmX3BlZGl0X25rZXlzX2xvY2tlZChhY3QpOyBrKyspIHtcXG4gXFx0XFx0XFx0aWYgKGNtZCAhPSB0Y2ZfcGVkaXRfY21kKGFjdCwgaykpIHtcXG4gXFx0XFx0XFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXFxcIlVuc3VwcG9ydGVkIHBlZGl0IGNvbW1hbmQgb2ZmbG9hZFxcXCIpO1xcbiBcXHRcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfYXBpLmMgYi9uZXQvc2NoZWQvY2xzX2FwaS5jXFxuaW5kZXggM2U2NzYwMGE0YTFhMTAuLmZmZWVhNmRiODMzNzQ3IDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9jbHNfYXBpLmNcXG4rKysgYi9uZXQvc2NoZWQvY2xzX2FwaS5jXFxuQEAgLTM4ODYsMTIgKzM4ODYsMjEgQEAgaW50IHRjX3NldHVwX2FjdGlvbihzdHJ1Y3QgZmxvd19hY3Rpb24gKmZsb3dfYWN0aW9uLFxcbiBcXG4gXFx0XFx0ZW50cnkgPSBcXHUwMDI2Zmxvd19hY3Rpb24tXFx1MDAzZWVudHJpZXNbal07XFxuIFxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2YWN0LVxcdTAwM2V0Y2ZhX2xvY2spO1xcbitcXG4rXFx0XFx0LyogQWJvcnQgdGhlIG9mZmxvYWQgaWYgd2UgaGF2ZSBleGhhdXN0ZWQgdGhlIGFsbG9jYXRlZCBjYXBhY2l0eSAqL1xcbitcXHRcXHRpZiAoaiBcXHUwMDNlPSBmbG93X2FjdGlvbi1cXHUwMDNlbnVtX2VudHJpZXMpIHtcXG4rXFx0XFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXFxcIkZsb3cgYWN0aW9uIGJ1ZmZlciBvdmVyZmxvd1xcXCIpO1xcbitcXHRcXHRcXHRlcnIgPSAtRU5PU1BDO1xcbitcXHRcXHRcXHRnb3RvIGVycl9vdXRfbG9ja2VkO1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHRlcnIgPSB0Y2ZfYWN0X2dldF91c2VyX2Nvb2tpZShlbnRyeSwgYWN0KTtcXG4gXFx0XFx0aWYgKGVycilcXG4gXFx0XFx0XFx0Z290byBlcnJfb3V0X2xvY2tlZDtcXG4gXFxuLVxcdFxcdGluZGV4ID0gMDtcXG4tXFx0XFx0ZXJyID0gdGNfc2V0dXBfb2ZmbG9hZF9hY3QoYWN0LCBlbnRyeSwgXFx1MDAyNmluZGV4LCBleHRhY2spO1xcbitcXHRcXHRpbmRleCA9IGZsb3dfYWN0aW9uLVxcdTAwM2VudW1fZW50cmllcyAtIGo7XFxuK1xcdFxcdGVyciA9IHRjX3NldHVwX29mZmxvYWRfYWN0KGFjdCwgZW50cnksIFxcdTAwMjZpbmRleCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgZXh0YWNrKTtcXG4gXFx0XFx0aWYgKGVycilcXG4gXFx0XFx0XFx0Z290byBlcnJfb3V0X2xvY2tlZDtcXG4gXFxuQEAgLTM5NDUsMTAgKzM5NTQsMTMgQEAgdW5zaWduZWQgaW50IHRjZl9leHRzX251bV9hY3Rpb25zKHN0cnVjdCB0Y2ZfZXh0cyAqZXh0cylcXG4gXFx0aW50IGk7XFxuIFxcbiBcXHR0Y2ZfZXh0c19mb3JfZWFjaF9hY3Rpb24oaSwgYWN0LCBleHRzKSB7XFxuLVxcdFxcdGlmIChpc190Y2ZfcGVkaXQoYWN0KSlcXG4tXFx0XFx0XFx0bnVtX2FjdHMgKz0gdGNmX3BlZGl0X25rZXlzKGFjdCk7XFxuLVxcdFxcdGVsc2VcXG4rXFx0XFx0aWYgKGlzX3RjZl9wZWRpdChhY3QpKSB7XFxuK1xcdFxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2YWN0LVxcdTAwM2V0Y2ZhX2xvY2spO1xcbitcXHRcXHRcXHRudW1fYWN0cyArPSB0Y2ZfcGVkaXRfbmtleXNfbG9ja2VkKGFjdCk7XFxuK1xcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZhY3QtXFx1MDAzZXRjZmFfbG9jayk7XFxuK1xcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdG51bV9hY3RzKys7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXHRyZXR1cm4gbnVtX2FjdHM7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjM6NDc6MzQuNDIwMjc5ODYzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDU1MzEwMDcxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfQ0xTX0FDVFwiLFxuICAgIFwiTkVUX0FDVF9QRURJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjZl9vZmZsb2FkX2FjdF9udW1fYWN0aW9uc19zaW5nbGVcIixcbiAgICBcInRjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cFwiLFxuICAgIFwidGNmX2V4dHNfbnVtX2FjdGlvbnNcIixcbiAgICBcInRjX3NldHVwX2FjdGlvblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gYW5kIGJ1ZmZlciBvdmVyZmxvdyBpbiB0aGUgVEMgcGVkaXQgYWN0aW9uIG9mZmxvYWRpbmcgY29kZS4gSXQgbW9kaWZpZXMgYHRjX3NldHVwX2FjdGlvbmAsIGB0Y2ZfcGVkaXRfb2ZmbG9hZF9hY3Rfc2V0dXBgLCBgdGNmX29mZmxvYWRfYWN0X251bV9hY3Rpb25zX3NpbmdsZWAsIGFuZCBgdGNmX2V4dHNfbnVtX2FjdGlvbnNgIHRvIHVzZSBhIGxvY2tlZCB2ZXJzaW9uIG9mIGB0Y2ZfcGVkaXRfbmtleXNgIGFuZCBhZGRzIGJvdW5kcyBjaGVja2luZyBmb3IgZmxvdyBhY3Rpb24gZW50cmllcy4gVGhpcyBpcyBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgY29kZSBpbiB0aGUgbmV0d29ya2luZyBzdWJzeXN0ZW0sIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNGM5NmRhZWM4YTFmMjJhZGNmNmYxNWFhZTVmZGQ5NmNlZjM5YTBjMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMjM6NDc6MzIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC90Y19hY3QvdGNfcGVkaXQuaCBiL2luY2x1ZGUvbmV0L3RjX2FjdC90Y19wZWRpdC5oXG5pbmRleCBjYjdiODJmMmNiYzdmZC4uOTc3NTRlYTBhODI3OWQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC90Y19hY3QvdGNfcGVkaXQuaFxuKysrIGIvaW5jbHVkZS9uZXQvdGNfYWN0L3RjX3BlZGl0LmhcbkBAIC0zNywxNyArMzcsMTUgQEAgc3RhdGljIGlubGluZSBib29sIGlzX3RjZl9wZWRpdChjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphKVxuIFx0cmV0dXJuIGZhbHNlO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIGludCB0Y2ZfcGVkaXRfbmtleXMoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSlcbisvKiBNdXN0IGJlIGNhbGxlZCB3aXRoIGFjdC1cdTAwM2V0Y2ZhX2xvY2sgaGVsZCB0byBlbnN1cmUgY29uc2lzdGVuY3kgb2YgcGFyYWxsZWxcbisgKiByZWFkcyBvZiB0aGUgc2FtZSBhY3Rpb24ncyBwZWRpdCBrZXlzIChlLmcuIGZsb3dfb2ZmbG9hZCBjb3VudCB2cyBmaWxsKS5cbisgKiBOb3RlLCB0aGlzIGlzIG9ubHkgdXNlZCBmb3IgcGVkaXQgb2ZmbG9hZC5cbisgKi9cbitzdGF0aWMgaW5saW5lIGludCB0Y2ZfcGVkaXRfbmtleXNfbG9ja2VkKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEpXG4ge1xuLVx0c3RydWN0IHRjZl9wZWRpdF9wYXJtcyAqcGFybXM7XG4tXHRpbnQgbmtleXM7XG4tXG4tXHRyY3VfcmVhZF9sb2NrKCk7XG4tXHRwYXJtcyA9IHRvX3BlZGl0X3Bhcm1zKGEpO1xuLVx0bmtleXMgPSBwYXJtcy1cdTAwM2V0Y2ZwX25rZXlzO1xuLVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tXG4tXHRyZXR1cm4gbmtleXM7XG4rXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmEtXHUwMDNldGNmYV9sb2NrKTtcbitcdHJldHVybiByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHRvX3BlZGl0KGEpLVx1MDAzZXBhcm1zLFxuK1x0XHRcdFx0XHQgbG9ja2RlcF9pc19oZWxkKFx1MDAyNmEtXHUwMDNldGNmYV9sb2NrKSktXHUwMDNldGNmcF9ua2V5cztcbiB9XG4gXG4gc3RhdGljIGlubGluZSB1MzIgdGNmX3BlZGl0X2h0eXBlKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEsIGludCBpbmRleClcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2FwaS5jIGIvbmV0L3NjaGVkL2FjdF9hcGkuY1xuaW5kZXggYjY4YmUxNDNhMDY3ZjkuLmYxNDE2MzRkZjIxNDg5IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL2FjdF9hcGkuY1xuKysrIGIvbmV0L3NjaGVkL2FjdF9hcGkuY1xuQEAgLTE0OCwxMCArMTQ4LDE1IEBAIHN0YXRpYyB2b2lkIG9mZmxvYWRfYWN0aW9uX2h3X2NvdW50X2RlYyhzdHJ1Y3QgdGNfYWN0aW9uICphY3QsXG4gXG4gc3RhdGljIHVuc2lnbmVkIGludCB0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlKHN0cnVjdCB0Y19hY3Rpb24gKmFjdClcbiB7XG4tXHRpZiAoaXNfdGNmX3BlZGl0KGFjdCkpXG4tXHRcdHJldHVybiB0Y2ZfcGVkaXRfbmtleXMoYWN0KTtcbi1cdGVsc2Vcbi1cdFx0cmV0dXJuIDE7XG4rXHR1bnNpZ25lZCBpbnQgY291bnQ7XG4rXG4rXHRpZiAoaXNfdGNmX3BlZGl0KGFjdCkpIHtcbitcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFjdC1cdTAwM2V0Y2ZhX2xvY2spO1xuK1x0XHRjb3VudCA9IHRjZl9wZWRpdF9ua2V5c19sb2NrZWQoYWN0KTtcbitcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YWN0LVx1MDAzZXRjZmFfbG9jayk7XG4rXHRcdHJldHVybiBjb3VudDtcbitcdH1cbitcdHJldHVybiAxO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCB0Y19hY3Rfc2tpcF9odyh1MzIgZmxhZ3MpXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9wZWRpdC5jIGIvbmV0L3NjaGVkL2FjdF9wZWRpdC5jXG5pbmRleCAwZDY1MmRlYTRhNjkxZi4uZDRkNDdhOTkyMWY0NTcgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvYWN0X3BlZGl0LmNcbisrKyBiL25ldC9zY2hlZC9hY3RfcGVkaXQuY1xuQEAgLTU2Nyw5ICs1NjcsMTggQEAgc3RhdGljIGludCB0Y2ZfcGVkaXRfb2ZmbG9hZF9hY3Rfc2V0dXAoc3RydWN0IHRjX2FjdGlvbiAqYWN0LCB2b2lkICplbnRyeV9kYXRhLFxuIHtcbiBcdGlmIChiaW5kKSB7XG4gXHRcdHN0cnVjdCBmbG93X2FjdGlvbl9lbnRyeSAqZW50cnkgPSBlbnRyeV9kYXRhO1xuK1x0XHRpbnQgbmtleXMgPSB0Y2ZfcGVkaXRfbmtleXNfbG9ja2VkKGFjdCk7XG4gXHRcdGludCBrO1xuIFxuLVx0XHRmb3IgKGsgPSAwOyBrIFx1MDAzYyB0Y2ZfcGVkaXRfbmtleXMoYWN0KTsgaysrKSB7XG4rXHRcdC8qIElmIHRoZSByZXF1aXJlZCBrZXlzIGV4Y2VlZCB0aGUgcmVtYWluaW5nIGNhcGFjaXR5IHJldHVyblxuK1x0XHQgKiAtRU5PU1BDIHRvIGFib3J0IHRoZSBvZmZsb2FkIGFuZCBmYWxsYmFjayB0byBzb2Z0d2FyZS5cbitcdFx0ICovXG4rXHRcdGlmIChua2V5cyBcdTAwM2UgKmluZGV4X2luYykge1xuK1x0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwiTm90IGVub3VnaCBzcGFjZSB0byBvZmZsb2FkIGFsbCBwZWRpdCBrZXlzXCIpO1xuK1x0XHRcdHJldHVybiAtRU5PU1BDO1xuK1x0XHR9XG4rXG4rXHRcdGZvciAoayA9IDA7IGsgXHUwMDNjIG5rZXlzOyBrKyspIHtcbiBcdFx0XHRzd2l0Y2ggKHRjZl9wZWRpdF9jbWQoYWN0LCBrKSkge1xuIFx0XHRcdGNhc2UgVENBX1BFRElUX0tFWV9FWF9DTURfU0VUOlxuIFx0XHRcdFx0ZW50cnktXHUwMDNlaWQgPSBGTE9XX0FDVElPTl9NQU5HTEU7XG5AQCAtNjA2LDcgKzYxNSw3IEBAIHN0YXRpYyBpbnQgdGNmX3BlZGl0X29mZmxvYWRfYWN0X3NldHVwKHN0cnVjdCB0Y19hY3Rpb24gKmFjdCwgdm9pZCAqZW50cnlfZGF0YSxcbiBcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHRcdH1cbiBcbi1cdFx0Zm9yIChrID0gMTsgayBcdTAwM2MgdGNmX3BlZGl0X25rZXlzKGFjdCk7IGsrKykge1xuK1x0XHRmb3IgKGsgPSAxOyBrIFx1MDAzYyB0Y2ZfcGVkaXRfbmtleXNfbG9ja2VkKGFjdCk7IGsrKykge1xuIFx0XHRcdGlmIChjbWQgIT0gdGNmX3BlZGl0X2NtZChhY3QsIGspKSB7XG4gXHRcdFx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcIlVuc3VwcG9ydGVkIHBlZGl0IGNvbW1hbmQgb2ZmbG9hZFwiKTtcbiBcdFx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvY2xzX2FwaS5jIGIvbmV0L3NjaGVkL2Nsc19hcGkuY1xuaW5kZXggM2U2NzYwMGE0YTFhMTAuLmZmZWVhNmRiODMzNzQ3IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL2Nsc19hcGkuY1xuKysrIGIvbmV0L3NjaGVkL2Nsc19hcGkuY1xuQEAgLTM4ODYsMTIgKzM4ODYsMjEgQEAgaW50IHRjX3NldHVwX2FjdGlvbihzdHJ1Y3QgZmxvd19hY3Rpb24gKmZsb3dfYWN0aW9uLFxuIFxuIFx0XHRlbnRyeSA9IFx1MDAyNmZsb3dfYWN0aW9uLVx1MDAzZWVudHJpZXNbal07XG4gXHRcdHNwaW5fbG9ja19iaChcdTAwMjZhY3QtXHUwMDNldGNmYV9sb2NrKTtcbitcbitcdFx0LyogQWJvcnQgdGhlIG9mZmxvYWQgaWYgd2UgaGF2ZSBleGhhdXN0ZWQgdGhlIGFsbG9jYXRlZCBjYXBhY2l0eSAqL1xuK1x0XHRpZiAoaiBcdTAwM2U9IGZsb3dfYWN0aW9uLVx1MDAzZW51bV9lbnRyaWVzKSB7XG4rXHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJGbG93IGFjdGlvbiBidWZmZXIgb3ZlcmZsb3dcIik7XG4rXHRcdFx0ZXJyID0gLUVOT1NQQztcbitcdFx0XHRnb3RvIGVycl9vdXRfbG9ja2VkO1xuK1x0XHR9XG4rXG4gXHRcdGVyciA9IHRjZl9hY3RfZ2V0X3VzZXJfY29va2llKGVudHJ5LCBhY3QpO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdGdvdG8gZXJyX291dF9sb2NrZWQ7XG4gXG4tXHRcdGluZGV4ID0gMDtcbi1cdFx0ZXJyID0gdGNfc2V0dXBfb2ZmbG9hZF9hY3QoYWN0LCBlbnRyeSwgXHUwMDI2aW5kZXgsIGV4dGFjayk7XG4rXHRcdGluZGV4ID0gZmxvd19hY3Rpb24tXHUwMDNlbnVtX2VudHJpZXMgLSBqO1xuK1x0XHRlcnIgPSB0Y19zZXR1cF9vZmZsb2FkX2FjdChhY3QsIGVudHJ5LCBcdTAwMjZpbmRleCxcbitcdFx0XHRcdFx0ICAgZXh0YWNrKTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRnb3RvIGVycl9vdXRfbG9ja2VkO1xuIFxuQEAgLTM5NDUsMTAgKzM5NTQsMTMgQEAgdW5zaWduZWQgaW50IHRjZl9leHRzX251bV9hY3Rpb25zKHN0cnVjdCB0Y2ZfZXh0cyAqZXh0cylcbiBcdGludCBpO1xuIFxuIFx0dGNmX2V4dHNfZm9yX2VhY2hfYWN0aW9uKGksIGFjdCwgZXh0cykge1xuLVx0XHRpZiAoaXNfdGNmX3BlZGl0KGFjdCkpXG4tXHRcdFx0bnVtX2FjdHMgKz0gdGNmX3BlZGl0X25rZXlzKGFjdCk7XG4tXHRcdGVsc2VcbitcdFx0aWYgKGlzX3RjZl9wZWRpdChhY3QpKSB7XG4rXHRcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFjdC1cdTAwM2V0Y2ZhX2xvY2spO1xuK1x0XHRcdG51bV9hY3RzICs9IHRjZl9wZWRpdF9ua2V5c19sb2NrZWQoYWN0KTtcbitcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZhY3QtXHUwMDNldGNmYV9sb2NrKTtcbitcdFx0fSBlbHNlIHtcbiBcdFx0XHRudW1fYWN0cysrO1xuK1x0XHR9XG4gXHR9XG4gXHRyZXR1cm4gbnVtX2FjdHM7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjM6NDc6MzQuNDIwMjgxMzUzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM3MjI3ODk1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBUQyBQZWRpdCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIHNvbWUga2V5IGZpbGVzIGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgdHJhZmZpYyBjb250cm9sIChUQykgcGVkaXQgYWN0aW9uLiBJdCdzIG1vZGlmeWluZyBgaW5jbHVkZS9uZXQvdGNfYWN0L3RjX3BlZGl0LmhgLCBgbmV0L3NjaGVkL2FjdF9hcGkuY2AsIGBuZXQvc2NoZWQvYWN0X3BlZGl0LmNgLCBhbmQgYG5ldC9zY2hlZC9jbHNfYXBpLmNgLiBUaGUgY29yZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgbG9ja2luZyBkb3duIHRoZSBgdGNmX3BlZGl0X25rZXlzYCBmdW5jdGlvbiwgcmVwbGFjaW5nIGl0IHdpdGggYSBsb2NrZWQgdmVyc2lvbiwgYHRjZl9wZWRpdF9ua2V5c19sb2NrZWRgLCB3aGljaCBpcyBhIGdvb2QgbW92ZSB0byBlbnN1cmUgZGF0YSBpbnRlZ3JpdHkgZHVyaW5nIGFjY2Vzcy4gRnVydGhlcm1vcmUsIHRoZXJlIGFyZSBjaGVja3MgYmVpbmcgaW50cm9kdWNlZCBmb3IgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvd3MgaW4gYHRjX3NldHVwX2FjdGlvbmAgYW5kIGB0Y2ZfcGVkaXRfb2ZmbG9hZF9hY3Rfc2V0dXBgLCB3aGljaCBpcyBleGNlbGxlbnQuIEkgYWx3YXlzIGFwcHJlY2lhdGUgcHJvYWN0aXZlIHZ1bG5lcmFiaWxpdHkgbWl0aWdhdGlvbiBsaWtlIHRoaXMuXG5cbkdpdmVuIHRoYXQgdGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgd2l0aGluIHRoZSBUQyBzdWJzeXN0ZW0gcmVsYXRlZCB0byB0aGUgcGVkaXQgYWN0aW9uIGFuZCBvZmZsb2FkaW5nLCBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cblxuU2luY2UgdGhlIGZpbGVzIGFyZSBpbiBgbmV0L3NjaGVkL2AsIEknbGwgY2hlY2sgdGhlIGFzc29jaWF0ZWQgS2NvbmZpZyBmaWxlcy4gYGFjdF9hcGkuY2AgaXMgZW5hYmxlZCBieSBgQ09ORklHX05FVF9DTFNfQUNUYCwgYGFjdF9wZWRpdC5jYCBuZWVkcyBgQ09ORklHX05FVF9BQ1RfUEVESVRgLCBhbmQgYGNsc19hcGkuY2AgZGVwZW5kcyBvbiBgQ09ORklHX05FVF9DTFNgLiBJJ2xsIHVzZSBgZ3JlcHBlcmAgdG8gY29uZmlybSB0aGlzIHF1aWNrbHkgYW5kIGlkZW50aWZ5IHdoaWNoIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBzZXQgdG8gZ2V0IHRoaXMgZnVuY3Rpb25hbGl0eSBlbmFibGVkLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhbGwgdGhlIHJlbGV2YW50IGRlcGVuZGVuY2llcyBzZXQgdG8gZW5zdXJlIEkgaGF2ZSBhIGNvbXBsZXRlIGFuZCB0ZXN0YWJsZSBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ4NiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIzOjQ3OjM5Ljc5MjU2MjEwMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDE0MTU0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRfQUNUX1BFRElUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9NzY0PWNvbmZpZyBORVRfQUNUX05BVFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNzczLVxcbm5ldC9zY2hlZC9LY29uZmlnOjc3NDpjb25maWcgTkVUX0FDVF9QRURJVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc3NS1cXHR0cmlzdGF0ZSBcXFwiUGFja2V0IEVkaXRpbmdcXFwiXFxuLS1cXG5uZXQvc2NoZWQvTWFrZWZpbGU9MTY9b2JqLSQoQ09ORklHX05FVF9BQ1RfTkFUKVxcdCs9IGFjdF9uYXQub1xcbm5ldC9zY2hlZC9NYWtlZmlsZToxNzpvYmotJChDT05GSUdfTkVUX0FDVF9QRURJVClcXHQrPSBhY3RfcGVkaXQub1xcbm5ldC9zY2hlZC9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfTkVUX0FDVF9TSU1QKVxcdCs9IGFjdF9zaW1wbGUub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMzo0NzozOS44NTY3MDkzMjhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODE0MjU3NTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRpdmluZyBpbnRvIHRoZSBUcmFmZmljIENvbnRyb2wgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiB0aGUgY29uZmlndXJhdGlvbiBoZXJlIGZvciB0cmFmZmljIGNvbnRyb2wuIEkgc2VlIHRoYXQgYE5FVF9BQ1RfUEVESVRgIGlzIHRoZSBrZXkgZm9yIHRoZSBQRURJVCBhY3Rpb24sIHRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgYWxzbyBuZWVkIHRvIGVuc3VyZSBgTkVUX0NMU19BQ1RgIGlzIGVuYWJsZWQgYmVjYXVzZSBpdCdzIHJlcXVpcmVkIGZvciBhY3Rpb25zIGluIGdlbmVyYWwuXG5cbk5vdywgbGV0J3MgdHJhY2UgdGhyb3VnaCB0aGUgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGVsZW1lbnRzIGludGVyYWN0LiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHVzYWdlIG9mIGB0Y2ZfcGVkaXRfbmtleXNfbG9ja2VkYCBhbmQgYHRjX3NldHVwX2FjdGlvbmAsIGFuZCBhIGZldyBvdGhlciB0aGluZ3MuXG5cbmB0Y19zZXR1cF9hY3Rpb25gLCB0aGF0J3MgaW4gYG5ldC9zY2hlZC9jbHNfYXBpLmNgLiBHb29kLCB0aGF0IG1ha2VzIHNlbnNlLiBUaGVuIGB0Y2ZfcGVkaXRfb2ZmbG9hZF9hY3Rfc2V0dXBgIGlzIGluIGBuZXQvc2NoZWQvYWN0X3BlZGl0LmNgLiBJJ2xsIHdhbnQgdG8gcmV2aWV3IHRoYXQgb25lIGNhcmVmdWxseS4gSSBzZWUgYHRjZl9vZmZsb2FkX2FjdF9udW1fYWN0aW9uc19zaW5nbGVgIGluIGBuZXQvc2NoZWQvYWN0X2FwaS5jYCwgYW5kIGB0Y2ZfZXh0c19udW1fYWN0aW9uc2AgaXMgYmFjayBpbiBgbmV0L3NjaGVkL2Nsc19hcGkuY2AuXG5cblRvIG1ha2Ugc3VyZSBJJ20gc2hhcnAsIEknbGwgbmVlZCB0byBmb2N1cyBvbiB0aGVzZSBzeW1ib2xzOiBgdGNmX3BlZGl0X29mZmxvYWRfYWN0X3NldHVwYCwgYHRjX3NldHVwX2FjdGlvbmAsIGB0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlYCwgYW5kIGB0Y2ZfZXh0c19udW1fYWN0aW9uc2AuIFRoZXkncmUgdGhlIGNvcmUgb2YgaG93IHRoZSBhY3Rpb24gaXMgc2V0dXAgYW5kIHByb2Nlc3NlZC5cblxuRmluYWxseSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLiBJJ2xsIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBMb29rcyBsaWtlIGBORVRfQ0xTX0FDVGAgaXMgcmVxdWlyZWQgYnkgYGFjdF9hcGkuY2AgYXMgd2VsbC4gVGhhdCBjb25maXJtcyBteSBpbml0aWFsIGFzc2Vzc21lbnQuIE5vdyBJJ2xsIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDMyNCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMzo0Nzo0NC42NzA5NjkzMjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzM1MzI3NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkVUX0NMU19BQ1RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz0zNDc9Y29uZmlnIE5FVF9TQ0hfSU5HUkVTU1xcbm5ldC9zY2hlZC9LY29uZmlnLTM0OC1cXHR0cmlzdGF0ZSBcXFwiSW5ncmVzcy9jbGFzc2lmaWVyLWFjdGlvbiBRZGlzY1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzozNDk6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTM1MC1cXHRzZWxlY3QgTkVUX1hHUkVTU1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NjkwPWNvbmZpZyBORVRfRU1BVENIX0lQVFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNzAxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjcwMjpjb25maWcgTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MDMtXFx0Ym9vbCBcXFwiQWN0aW9uc1xcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTcxNT1jb25maWcgTkVUX0FDVF9QT0xJQ0VcXG5uZXQvc2NoZWQvS2NvbmZpZy03MTYtXFx0dHJpc3RhdGUgXFxcIlRyYWZmaWMgUG9saWNpbmdcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NzE3OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MTgtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NzI2PWNvbmZpZyBORVRfQUNUX0dBQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MjctXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgYWN0aW9uc1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3Mjg6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTcyOS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03NDI9Y29uZmlnIE5FVF9BQ1RfTUlSUkVEXFxubmV0L3NjaGVkL0tjb25maWctNzQzLVxcdHRyaXN0YXRlIFxcXCJSZWRpcmVjdGluZyBhbmQgTWlycm9yaW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjc0NDpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzQ1LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTc1Mj1jb25maWcgTkVUX0FDVF9TQU1QTEVcXG5uZXQvc2NoZWQvS2NvbmZpZy03NTMtXFx0dHJpc3RhdGUgXFxcIlRyYWZmaWMgU2FtcGxpbmdcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NzU0OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03NTUtXFx0c2VsZWN0IFBTQU1QTEVcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTc2ND1jb25maWcgTkVUX0FDVF9OQVRcXG5uZXQvc2NoZWQvS2NvbmZpZy03NjUtXFx0dHJpc3RhdGUgXFxcIlN0YXRlbGVzcyBOQVRcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NzY2OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03NjctXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9Nzc0PWNvbmZpZyBORVRfQUNUX1BFRElUXFxubmV0L3NjaGVkL0tjb25maWctNzc1LVxcdHRyaXN0YXRlIFxcXCJQYWNrZXQgRWRpdGluZ1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3NzY6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc3Ny1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03ODM9Y29uZmlnIE5FVF9BQ1RfU0lNUFxcbm5ldC9zY2hlZC9LY29uZmlnLTc4NC1cXHR0cmlzdGF0ZSBcXFwiU2ltcGxlIEV4YW1wbGUgKERlYnVnKVxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3ODU6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc4Ni1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03OTc9Y29uZmlnIE5FVF9BQ1RfU0tCRURJVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc5OC1cXHR0cmlzdGF0ZSBcXFwiU0tCIEVkaXRpbmdcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6Nzk5OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04MDAtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODA4PWNvbmZpZyBORVRfQUNUX0NTVU1cXG5uZXQvc2NoZWQvS2NvbmZpZy04MDktXFx0dHJpc3RhdGUgXFxcIkNoZWNrc3VtIFVwZGF0aW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjgxMDpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFxcdTAwMjZcXHUwMDI2IElORVRcXG5uZXQvc2NoZWQvS2NvbmZpZy04MTEtXFx0c2VsZWN0IE5FVF9DUkMzMkNcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTgxOT1jb25maWcgTkVUX0FDVF9NUExTXFxubmV0L3NjaGVkL0tjb25maWctODIwLVxcdHRyaXN0YXRlIFxcXCJNUExTIG1hbmlwdWxhdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4MjE6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTgyMi1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04MzA9Y29uZmlnIE5FVF9BQ1RfVkxBTlxcbm5ldC9zY2hlZC9LY29uZmlnLTgzMS1cXHR0cmlzdGF0ZSBcXFwiVmxhbiBtYW5pcHVsYXRpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6ODMyOlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04MzMtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODQxPWNvbmZpZyBORVRfQUNUX0JQRlxcbm5ldC9zY2hlZC9LY29uZmlnLTg0Mi1cXHR0cmlzdGF0ZSBcXFwiQlBGIGJhc2VkIGFjdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4NDM6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTg0NC1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04NTM9Y29uZmlnIE5FVF9BQ1RfQ09OTk1BUktcXG5uZXQvc2NoZWQvS2NvbmZpZy04NTQtXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBDb25uZWN0aW9uIE1hcmsgUmV0cmlldmVyXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjg1NTpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFxcdTAwMjZcXHUwMDI2IE5FVEZJTFRFUlxcbm5ldC9zY2hlZC9LY29uZmlnLTg1Ni1cXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfTUFSS1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODY1PWNvbmZpZyBORVRfQUNUX0NUSU5GT1xcbm5ldC9zY2hlZC9LY29uZmlnLTg2Ni1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIENvbm5lY3Rpb24gTWFyayBBY3Rpb25zXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjg2NzpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFxcdTAwMjZcXHUwMDI2IE5FVEZJTFRFUlxcbm5ldC9zY2hlZC9LY29uZmlnLTg2OC1cXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfTUFSS1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODgyPWNvbmZpZyBORVRfQUNUX1NLQk1PRFxcbm5ldC9zY2hlZC9LY29uZmlnLTg4My1cXHR0cmlzdGF0ZSBcXFwic2tiIGRhdGEgbW9kaWZpY2F0aW9uIGFjdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4ODQ6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTg4NS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04OTM9Y29uZmlnIE5FVF9BQ1RfSUZFXFxubmV0L3NjaGVkL0tjb25maWctODk0LVxcdHRyaXN0YXRlIFxcXCJJbnRlci1GRSBhY3Rpb24gYmFzZWQgb24gSUVURiBGb3JDRVMgSW50ZXJGRSBMRkJcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6ODk1OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04OTYtXFx0c2VsZWN0IE5FVF9JRkVcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTkwNj1jb25maWcgTkVUX0FDVF9UVU5ORUxfS0VZXFxubmV0L3NjaGVkL0tjb25maWctOTA3LVxcdHRyaXN0YXRlIFxcXCJJUCB0dW5uZWwgbWV0YWRhdGEgbWFuaXB1bGF0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjkwODpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctOTA5LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTkxNz1jb25maWcgTkVUX0FDVF9DVFxcbm5ldC9zY2hlZC9LY29uZmlnLTkxOC1cXHR0cmlzdGF0ZSBcXFwiY29ubmVjdGlvbiB0cmFja2luZyB0YyBhY3Rpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6OTE5OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1QgXFx1MDAyNlxcdTAwMjYgTkZfQ09OTlRSQUNLIFxcdTAwMjZcXHUwMDI2ICghTkZfTkFUIHx8IE5GX05BVCkgXFx1MDAyNlxcdTAwMjYgTkZfRkxPV19UQUJMRVxcbm5ldC9zY2hlZC9LY29uZmlnLTkyMC1cXHRzZWxlY3QgTkZfQ09OTlRSQUNLX09WU1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9OTMwPWNvbmZpZyBORVRfQUNUX0dBVEVcXG5uZXQvc2NoZWQvS2NvbmZpZy05MzEtXFx0dHJpc3RhdGUgXFxcIkZyYW1lIGdhdGUgZW50cnkgbGlzdCBjb250cm9sIHRjIGFjdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo5MzI6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTkzMy1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz05NTQ9Y29uZmlnIE5FVF9UQ19TS0JfRVhUXFxubmV0L3NjaGVkL0tjb25maWctOTU1LVxcdGJvb2wgXFxcIlRDIHJlY2lyY3VsYXRpb24gc3VwcG9ydFxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo5NTY6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTk1Ny1cXHRzZWxlY3QgU0tCX0VYVEVOU0lPTlNcXG4tLVxcbm5ldC9zY2hlZC9NYWtlZmlsZT0xMD1vYmotJChDT05GSUdfTkVUX0NMUylcXHRcXHQrPSBjbHNfYXBpLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX05FVF9DTFNfQUNUKVxcdCs9IGFjdF9hcGkub1xcbm5ldC9zY2hlZC9NYWtlZmlsZS0xMi1vYmotJChDT05GSUdfTkVUX0FDVF9QT0xJQ0UpXFx0Kz0gYWN0X3BvbGljZS5vXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTE0ND1zdGF0aWMgdTY0IHRjZl9leHRzX21pc3NfY29va2llX2dldCh1MzIgbWlzc19jb29raWVfYmFzZSwgaW50IGFjdF9pbmRleClcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU0LVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTU1OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1Ni1ERUZJTkVfU1RBVElDX0tFWV9GQUxTRSh0Y19za2JfZXh0X3RjKTtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9NDE0PXN0YXRpYyB2b2lkIHRjZl9wcm90b19jb3VudF91c2VzdyhzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgYm9vbCBhZGQpXFxubmV0L3NjaGVkL2Nsc19hcGkuYy00MTUte1xcbm5ldC9zY2hlZC9jbHNfYXBpLmM6NDE2OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTQxNy1cXHRzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jayA9IHRwLVxcdTAwM2VjaGFpbi1cXHUwMDNlYmxvY2s7XFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTE3MTI9c3RhdGljIGlubGluZSBpbnQgX190Y2ZfY2xhc3NpZnkoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTcyMC17XFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNzIxOiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE3MjItXFx0Y29uc3QgaW50IG1heF9yZWNsYXNzaWZ5X2xvb3AgPSAxNjtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTc2NS1cXHRcXHR9XFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNzY2OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE3NjctXFx0XFx0aWYgKHVubGlrZWx5KGVyciA9PSBUQ19BQ1RfUkVDTEFTU0lGWSBcXHUwMDI2XFx1MDAyNiAhY29tcGF0X21vZGUpKSB7XFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE3ODctXFx0cmV0dXJuIFRDX0FDVF9VTlNQRUM7IC8qIHNpZ25hbDogY29udGludWUgbG9va3VwICovXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNzg4OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE3ODktcmVzZXQ6XFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTMzMzg9aW50IHRjZl9leHRzX2luaXRfZXgoc3RydWN0IHRjZl9leHRzICpleHRzLCBzdHJ1Y3QgbmV0ICpuZXQsIGludCBhY3Rpb24sXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTMzNDMtXFxubmV0L3NjaGVkL2Nsc19hcGkuYzozMzQ0OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTMzNDUtXFx0ZXh0cy1cXHUwMDNldHlwZSA9IDA7XFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTMzNzAtXFx0dGNmX2V4dHNfZGVzdHJveShleHRzKTtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjMzNzE6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzM3Mi1cXHRleHRzLVxcdTAwM2VhY3Rpb25zID0gTlVMTDtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9MzM3OD12b2lkIHRjZl9leHRzX2Rlc3Ryb3koc3RydWN0IHRjZl9leHRzICpleHRzKVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zMzgxLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MzM4MjojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zMzgzLVxcdGlmIChleHRzLVxcdTAwM2VhY3Rpb25zKSB7XFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTMzOTI9aW50IHRjZl9leHRzX3ZhbGlkYXRlX2V4KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRjZl9wcm90byAqdHAsIHN0cnVjdCBubGF0dHIgKip0YixcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzM5NS17XFxubmV0L3NjaGVkL2Nsc19hcGkuYzozMzk2OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTMzOTctXFx0e1xcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zNDM2LVxcdCAgICAoZXh0cy1cXHUwMDNlcG9saWNlIFxcdTAwMjZcXHUwMDI2IHRiW2V4dHMtXFx1MDAzZXBvbGljZV0pKSB7XFxubmV0L3NjaGVkL2Nsc19hcGkuYzozNDM3OlxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXFxcIkNsYXNzaWZpZXIgYWN0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBwZXIgY29tcGlsZSBvcHRpb25zIChDT05GSUdfTkVUX0NMU19BQ1QpXFxcIik7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zNDM4LVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9MzQ1NT12b2lkIHRjZl9leHRzX2NoYW5nZShzdHJ1Y3QgdGNmX2V4dHMgKmRzdCwgc3RydWN0IHRjZl9leHRzICpzcmMpXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zNDU2LXtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjM0NTc6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzQ1OC1cXHRzdHJ1Y3QgdGNmX2V4dHMgb2xkID0gKmRzdDtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9MzQ2ND1FWFBPUlRfU1lNQk9MKHRjZl9leHRzX2NoYW5nZSk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zNDY1LVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MzQ2NjojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zNDY3LXN0YXRpYyBzdHJ1Y3QgdGNfYWN0aW9uICp0Y2ZfZXh0c19maXJzdF9hY3Qoc3RydWN0IHRjZl9leHRzICpleHRzKVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz0zNDc2PWludCB0Y2ZfZXh0c19kdW1wKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB0Y2ZfZXh0cyAqZXh0cylcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTM0Nzcte1xcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MzQ3ODojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zNDc5LVxcdHN0cnVjdCBubGF0dHIgKm5lc3Q7XFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTM1MTc9aW50IHRjZl9leHRzX3RlcnNlX2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRjZl9leHRzICpleHRzKVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzUxOC17XFxubmV0L3NjaGVkL2Nsc19hcGkuYzozNTE5OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTM1MjAtXFx0c3RydWN0IG5sYXR0ciAqbmVzdDtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9MzU0Mz1pbnQgdGNmX2V4dHNfZHVtcF9zdGF0cyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNmX2V4dHMgKmV4dHMpXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zNTQ0LXtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjM1NDU6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzU0Ni1cXHRzdHJ1Y3QgdGNfYWN0aW9uICphID0gdGNmX2V4dHNfZmlyc3RfYWN0KGV4dHMpO1xcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz0zODUwPXN0YXRpYyBpbnQgdGNfc2V0dXBfb2ZmbG9hZF9hY3Qoc3RydWN0IHRjX2FjdGlvbiAqYWN0LFxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zODU0LXtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjM4NTU6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzg1Ni1cXHRpZiAoYWN0LVxcdTAwM2VvcHMtXFx1MDAzZW9mZmxvYWRfYWN0X3NldHVwKSB7XFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTM5MzA9aW50IHRjX3NldHVwX29mZmxvYWRfYWN0aW9uKHN0cnVjdCBmbG93X2FjdGlvbiAqZmxvd19hY3Rpb24sXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTM5MzMte1xcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MzkzNDojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zOTM1LVxcdHUzMiBtaXNzX2Nvb2tpZV9iYXNlO1xcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz0zOTY3PUVYUE9SVF9TWU1CT0wodGNmX2V4dHNfbnVtX2FjdGlvbnMpO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzk2OC1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjM5Njk6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzk3MC1zdGF0aWMgaW50IHRjZl9xZXZlbnRfcGFyc2VfYmxvY2tfaW5kZXgoc3RydWN0IG5sYXR0ciAqYmxvY2tfaW5kZXhfYXR0cixcXG4tLVxcbm5ldC9zY2hlZC9jbHNfdTMyLmM9MTQ3ND1zdGF0aWMgaW50IF9faW5pdCBpbml0X3UzMih2b2lkKVxcbi0tXFxubmV0L3NjaGVkL2Nsc191MzIuYy0xNDgyLVxcdHByX2luZm8oXFxcIiAgICBpbnB1dCBkZXZpY2UgY2hlY2sgb25cXFxcblxcXCIpO1xcbm5ldC9zY2hlZC9jbHNfdTMyLmM6MTQ4MzojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXFxubmV0L3NjaGVkL2Nsc191MzIuYy0xNDg0LVxcdHByX2luZm8oXFxcIiAgICBBY3Rpb25zIGNvbmZpZ3VyZWRcXFxcblxcXCIpO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9jYWtlLmM9MTcxOT1zdGF0aWMgdTMyIGNha2VfY2xhc3NpZnkoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBjYWtlX3Rpbl9kYXRhICoqdCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfY2FrZS5jLTE3MzUtXFx0aWYgKHJlc3VsdCBcXHUwMDNlPSAwKSB7XFxubmV0L3NjaGVkL3NjaF9jYWtlLmM6MTczNjojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXFxubmV0L3NjaGVkL3NjaF9jYWtlLmMtMTczNy1cXHRcXHRzd2l0Y2ggKHJlc3VsdCkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kcnIuYz0yOTg9c3RhdGljIHN0cnVjdCBkcnJfY2xhc3MgKmRycl9jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHJyLmMtMzE2LVxcdGlmIChyZXN1bHQgXFx1MDAzZT0gMCkge1xcbm5ldC9zY2hlZC9zY2hfZHJyLmM6MzE3OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTMxOC1cXHRcXHRzd2l0Y2ggKHJlc3VsdCkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9MzQxPXN0YXRpYyBpbnQgZHVhbHBpMl9za2JfY2xhc3NpZnkoc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTM2OC1cXHRpZiAocmVzdWx0IFxcdTAwM2U9IDApIHtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzozNjk6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTM3MC1cXHRcXHRzd2l0Y2ggKHJlc3VsdCkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9ldHMuYz0zODI9c3RhdGljIHN0cnVjdCBldHNfY2xhc3MgKmV0c19jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZXRzLmMtMzk0LVxcdFxcdGVyciA9IHRjZl9jbGFzc2lmeShza2IsIE5VTEwsIGZsLCBcXHUwMDI2cmVzLCBmYWxzZSk7XFxubmV0L3NjaGVkL3NjaF9ldHMuYzozOTU6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9zY2hfZXRzLmMtMzk2LVxcdFxcdHN3aXRjaCAoZXJyKSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZxX2NvZGVsLmM9NzY9c3RhdGljIHVuc2lnbmVkIGludCBmcV9jb2RlbF9jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnFfY29kZWwuYy05NS1cXHRpZiAocmVzdWx0IFxcdTAwM2U9IDApIHtcXG5uZXQvc2NoZWQvc2NoX2ZxX2NvZGVsLmM6OTY6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9zY2hfZnFfY29kZWwuYy05Ny1cXHRcXHRzd2l0Y2ggKHJlc3VsdCkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYz04MT1zdGF0aWMgdW5zaWduZWQgaW50IGZxX3BpZV9jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtMTAwLVxcdGlmIChyZXN1bHQgXFx1MDAzZT0gMCkge1xcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmM6MTAxOiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTEwMi1cXHRcXHRzd2l0Y2ggKHJlc3VsdCkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9oZnNjLmM9MTEzMD1oZnNjX2NsYXNzaWZ5KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLCBpbnQgKnFlcnIpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2hmc2MuYy0xMTQ2LVxcdHdoaWxlICh0Y2YgXFx1MDAyNlxcdTAwMjYgKHJlc3VsdCA9IHRjZl9jbGFzc2lmeShza2IsIE5VTEwsIHRjZiwgXFx1MDAyNnJlcywgZmFsc2UpKSBcXHUwMDNlPSAwKSB7XFxubmV0L3NjaGVkL3NjaF9oZnNjLmM6MTE0NzojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXFxubmV0L3NjaGVkL3NjaF9oZnNjLmMtMTE0OC1cXHRcXHRzd2l0Y2ggKHJlc3VsdCkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9odGIuYz0yMjA9c3RhdGljIHN0cnVjdCBodGJfY2xhc3MgKmh0Yl9jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfaHRiLmMtMjQ2LVxcdHdoaWxlICh0Y2YgXFx1MDAyNlxcdTAwMjYgKHJlc3VsdCA9IHRjZl9jbGFzc2lmeShza2IsIE5VTEwsIHRjZiwgXFx1MDAyNnJlcywgZmFsc2UpKSBcXHUwMDNlPSAwKSB7XFxubmV0L3NjaGVkL3NjaF9odGIuYzoyNDc6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9zY2hfaHRiLmMtMjQ4LVxcdFxcdHN3aXRjaCAocmVzdWx0KSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2h0Yi5jPTYyMD1zdGF0aWMgaW50IGh0Yl9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9odGIuYy02MzUtXFx0XFx0fVxcbm5ldC9zY2hlZC9zY2hfaHRiLmM6NjM2OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvc2NoX2h0Yi5jLTYzNy1cXHR9IGVsc2UgaWYgKCFjbCkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYz0zMD1tdWx0aXFfY2xhc3NpZnkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsIGludCAqcWVycilcXG4tLVxcbm5ldC9zY2hlZC9zY2hfbXVsdGlxLmMtMzktXFx0ZXJyID0gdGNmX2NsYXNzaWZ5KHNrYiwgTlVMTCwgZmwsIFxcdTAwMjZyZXMsIGZhbHNlKTtcXG5uZXQvc2NoZWQvc2NoX211bHRpcS5jOjQwOiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvc2NoX211bHRpcS5jLTQxLVxcdHN3aXRjaCAoZXJyKSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX211bHRpcS5jPTYwPW11bHRpcV9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYy02Ni1cXHRxZGlzYyA9IG11bHRpcV9jbGFzc2lmeShza2IsIHNjaCwgXFx1MDAyNnJldCk7XFxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYzo2NzojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXFxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYy02OC1cXHRpZiAocWRpc2MgPT0gTlVMTCkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9wcmlvLmM9MzE9cHJpb19jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCwgaW50ICpxZXJyKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9wcmlvLmMtNDItXFx0XFx0ZXJyID0gdGNmX2NsYXNzaWZ5KHNrYiwgTlVMTCwgZmwsIFxcdTAwMjZyZXMsIGZhbHNlKTtcXG5uZXQvc2NoZWQvc2NoX3ByaW8uYzo0MzojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXFxubmV0L3NjaGVkL3NjaF9wcmlvLmMtNDQtXFx0XFx0c3dpdGNoIChlcnIpIHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcHJpby5jPTY5PXByaW9fZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9wcmlvLmMtNzUtXFx0cWRpc2MgPSBwcmlvX2NsYXNzaWZ5KHNrYiwgc2NoLCBcXHUwMDI2cmV0KTtcXG5uZXQvc2NoZWQvc2NoX3ByaW8uYzo3NjojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXFxubmV0L3NjaGVkL3NjaF9wcmlvLmMtNzctXFx0aWYgKHFkaXNjID09IE5VTEwpIHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcWZxLmM9Njk0PXN0YXRpYyBzdHJ1Y3QgcWZxX2NsYXNzICpxZnFfY2xhc3NpZnkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3FmcS5jLTcxMy1cXHRpZiAocmVzdWx0IFxcdTAwM2U9IDApIHtcXG5uZXQvc2NoZWQvc2NoX3FmcS5jOjcxNDojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXFxubmV0L3NjaGVkL3NjaF9xZnEuYy03MTUtXFx0XFx0c3dpdGNoIChyZXN1bHQpIHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfc2ZiLmM9MjU3PXN0YXRpYyBib29sIHNmYl9jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNmX3Byb3RvICpmbCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfc2ZiLmMtMjY0LVxcdGlmIChyZXN1bHQgXFx1MDAzZT0gMCkge1xcbm5ldC9zY2hlZC9zY2hfc2ZiLmM6MjY1OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvc2NoX3NmYi5jLTI2Ni1cXHRcXHRzd2l0Y2ggKHJlc3VsdCkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9zZnEuYz0xNTY9c3RhdGljIHVuc2lnbmVkIGludCBzZnFfY2xhc3NpZnkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTE3NS1cXHRpZiAocmVzdWx0IFxcdTAwM2U9IDApIHtcXG5uZXQvc2NoZWQvc2NoX3NmcS5jOjE3NjojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXFxubmV0L3NjaGVkL3NjaF9zZnEuYy0xNzctXFx0XFx0c3dpdGNoIChyZXN1bHQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjM6NDc6NDQuNzQ0NTA3NzI2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTgyNDMxODI0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBlZGl0IEFjdGlvbiBPZmZsb2FkIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCByZWxhdGVkIHRvIHRoZSBUQyBwZWRpdCBhY3Rpb24gb2ZmbG9hZGluZy4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gaW52b2x2ZSBzb21lIHJhY2UgY29uZGl0aW9uIGFuZCBidWZmZXIgb3ZlcmZsb3cgZml4ZXMuIExldCdzIGJyZWFrIGRvd24gdGhlIGxvZ2ljLlxuXG5GaXJzdCwgdGhlIGNvbmZpZ3MgYXJlIGtleTogYE5FVF9DTFNfQUNUYCBhbmQgYE5FVF9BQ1RfUEVESVRgLiBSaWdodCwgdGhlc2UgYXJlIHRoZSBvbmVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoYXQgc3RyYWlnaHQuIGBORVRfQ0xTYCBpcyBhbHNvIGludm9sdmVkLCBzcGVjaWZpY2FsbHkgZm9yIGBjbHNfYXBpLmNgLiBOb3csIGBORVRfQ0xTYCBpcyByZWFsbHkganVzdCB0aGUgYmFzZSBmb3IgY2xhc3NpZmllcnMsIEkgZG9uJ3QgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhhdCBvbmUgcmlnaHQgbm93LiBBbmQsIGZvciBnb29kIG1lYXN1cmUsIGl0J3Mgd29ydGggbm90aW5nIHRoYXQgYE5FVF9TQ0hfSU5HUkVTU2AgbWlnaHQgYmUgaGVscGZ1bCBmb3IgdGVzdGluZyBUQyBhY3Rpb25zLCBidXQgaXQncyBub3QgZGlyZWN0bHkgcGFydCBvZiB0aGUgY29yZSBwYXRjaC5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBzeW1ib2xzIGFmZmVjdGVkLiBUaGUgY3J1Y2lhbCBwYXJ0IGlzIHRoaXMgYHRjZl9wZWRpdF9ua2V5c19sb2NrZWRgIHdoaWNoIGlzIHVzZWQgYnkgc29tZSBrZXkgZnVuY3Rpb25zLiBTcGVjaWZpY2FsbHksIEkndmUgZ290IHRvIGNoZWNrIGB0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlYCBpbiBgbmV0L3NjaGVkL2FjdF9hcGkuY2AsIGB0Y2ZfcGVkaXRfb2ZmbG9hZF9hY3Rfc2V0dXBgIGluIGBuZXQvc2NoZWQvYWN0X3BlZGl0LmNgLCBhbmQgYHRjZl9leHRzX251bV9hY3Rpb25zYCBpbiBgbmV0L3NjaGVkL2Nsc19hcGkuY2AuIEFsc28gaW1wb3J0YW50IGlzIGB0Y19zZXR1cF9hY3Rpb25gIGluIGBuZXQvc2NoZWQvY2xzX2FwaS5jYCwgd2hpY2ggY2FsbHMgdGhlIG9mZmxvYWQgc2V0dXAuIEkgc2VlIHRoYXQgaXQgY2hlY2tzIGBqIFx1MDAzZT0gZmxvd19hY3Rpb24tXHUwMDNlbnVtX2VudHJpZXNgIGFuZCByZXR1cm5zIGAtRU5PU1BDYCB3aGVuIHRoZXJlJ3MgYW4gaXNzdWUgd2l0aCB0aGUgbnVtYmVyIG9mIGVudHJpZXMuXG5cblNvIEkgdGhpbmsgdGhlIGZvY3VzIHNob3VsZCBiZSBvbiB0aGVzZTogYHRjZl9vZmZsb2FkX2FjdF9udW1fYWN0aW9uc19zaW5nbGVgLCBgdGNmX3BlZGl0X29mZmxvYWRfYWN0X3NldHVwYCwgYHRjZl9leHRzX251bV9hY3Rpb25zYCwgYW5kIGB0Y19zZXR1cF9hY3Rpb25gLiBBaCwgYHRjZl9wZWRpdF9ua2V5c19sb2NrZWRgIGlzIGlubGluZSwgc28gaXQgd29uJ3QgYmUgaW4gdGhlIHN5bWJvbCB0YWJsZS4gSXQncyBiYXNpY2FsbHkgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCBJJ20gYWxyZWFkeSBhd2FyZSBvZiB0aGF0LCB0aG91Z2guXG5cbkknbSB2ZXJpZnlpbmcgdGhhdCB0aGVzZSBhcmUgdGhlIG9ubHkgZnVuY3Rpb25zIG1vZGlmaWVkLCBhbmQgaXQgc2VlbXMgdGhhdCBpcyB0aGUgY2FzZS5cblxuSW4gdGVybXMgb2YgY29uZmlncywgSSBoYXZlIGNvbmZpcm1lZCBgTkVUX0NMU19BQ1RgIGFuZCBgTkVUX0FDVF9QRURJVGAgYXJlIHN1ZmZpY2llbnQuXG5cbk15IHJlYXNvbmluZz8gVGhpcyBwYXRjaCBpcyBmaXhpbmcgYSByZWFsIGlzc3Vl4oCUYSByYWNlIGNvbmRpdGlvbiBhbmQgYSBidWZmZXIgb3ZlcmZsb3cuIEl0J3MgdG91Y2hpbmcgcmVhY2hhYmxlIGNvZGUgd2l0aGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgc28gaXQncyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gSSdtIGdvaW5nIHRvIGJlIGtlZXBpbmcgdGhlc2Ugc3ltYm9scyBpbiBtaW5kLCBhbmQgSSdsbCB1c2UgYHNldC1yZXN1bHRzYCBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwODA2LCJPdXRwdXRUb2tlbnMiOjIxMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMzo0Nzo1NC41Njg4Mjc3ODJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwNDU0ODM5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0NMU19BQ1RcIixcbiAgICBcIk5FVF9BQ1RfUEVESVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlXCIsXG4gICAgXCJ0Y2ZfcGVkaXRfb2ZmbG9hZF9hY3Rfc2V0dXBcIixcbiAgICBcInRjZl9leHRzX251bV9hY3Rpb25zXCIsXG4gICAgXCJ0Y19zZXR1cF9hY3Rpb25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGFuZCBidWZmZXIgb3ZlcmZsb3cgaW4gdGhlIFRDIHBlZGl0IGFjdGlvbiBvZmZsb2FkaW5nIGNvZGUuIEl0IG1vZGlmaWVzIGB0Y19zZXR1cF9hY3Rpb25gLCBgdGNmX3BlZGl0X29mZmxvYWRfYWN0X3NldHVwYCwgYHRjZl9vZmZsb2FkX2FjdF9udW1fYWN0aW9uc19zaW5nbGVgLCBhbmQgYHRjZl9leHRzX251bV9hY3Rpb25zYCB0byB1c2UgYSBsb2NrZWQgdmVyc2lvbiBvZiBgdGNmX3BlZGl0X25rZXlzYCBhbmQgYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIGZsb3cgYWN0aW9uIGVudHJpZXMuIFRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGNvZGUgaW4gdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9DTFNfQUNUXCIsXG4gICAgXCJORVRfQUNUX1BFRElUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNmX29mZmxvYWRfYWN0X251bV9hY3Rpb25zX3NpbmdsZVwiLFxuICAgIFwidGNmX3BlZGl0X29mZmxvYWRfYWN0X3NldHVwXCIsXG4gICAgXCJ0Y2ZfZXh0c19udW1fYWN0aW9uc1wiLFxuICAgIFwidGNfc2V0dXBfYWN0aW9uXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBhbmQgYnVmZmVyIG92ZXJmbG93IGluIHRoZSBUQyBwZWRpdCBhY3Rpb24gb2ZmbG9hZGluZyBjb2RlLiBJdCBtb2RpZmllcyBgdGNfc2V0dXBfYWN0aW9uYCwgYHRjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cGAsIGB0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlYCwgYW5kIGB0Y2ZfZXh0c19udW1fYWN0aW9uc2AgdG8gdXNlIGEgbG9ja2VkIHZlcnNpb24gb2YgYHRjZl9wZWRpdF9ua2V5c2AgYW5kIGFkZHMgYm91bmRzIGNoZWNraW5nIGZvciBmbG93IGFjdGlvbiBlbnRyaWVzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBjb2RlIGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgc28gaXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowqm9g6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 23:34:26 +0000 UTC FinishedAt: 2026-07-01 23:47:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "a225f8c20712713406ae47024b8df42deacddd4a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_CLS_ACT", "NET_ACT_PEDIT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "a225f8c20712713406ae47024b8df42deacddd4a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_CLS_ACT", "NET_ACT_PEDIT" ], "series_id": "3aadacf7-3cda-44e8-a32e-27af4fa3619a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tcf_offload_act_num_actions_single", "tcf_pedit_offload_act_setup", "tcf_exts_num_actions", "tc_setup_action" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAxIDIzOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDssCiAgICAmIzM0O05FVF9BQ1RfUEVESVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlJiMzNDssCiAgICAmIzM0O3RjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cCYjMzQ7LAogICAgJiMzNDt0Y2ZfZXh0c19udW1fYWN0aW9ucyYjMzQ7LAogICAgJiMzNDt0Y19zZXR1cF9hY3Rpb24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBhbmQgYnVmZmVyIG92ZXJmbG93IGluIHRoZSBUQyBwZWRpdCBhY3Rpb24gb2ZmbG9hZGluZyBjb2RlLiBJdCBtb2RpZmllcyBgdGNfc2V0dXBfYWN0aW9uYCwgYHRjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cGAsIGB0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlYCwgYW5kIGB0Y2ZfZXh0c19udW1fYWN0aW9uc2AgdG8gdXNlIGEgbG9ja2VkIHZlcnNpb24gb2YgYHRjZl9wZWRpdF9ua2V5c2AgYW5kIGFkZHMgYm91bmRzIGNoZWNraW5nIGZvciBmbG93IGFjdGlvbiBlbnRyaWVzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBjb2RlIGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgc28gaXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMzo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDRjOTZkYWVjOGExZjIyYWRjZjZmMTVhYWU1ZmRkOTZjZWYzOWEwYzBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDIzOjQ3OjMyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RjX2FjdC90Y19wZWRpdC5oIGIvaW5jbHVkZS9uZXQvdGNfYWN0L3RjX3BlZGl0LmhcbmluZGV4IGNiN2I4MmYyY2JjN2ZkLi45Nzc1NGVhMGE4Mjc5ZCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3RjX2FjdC90Y19wZWRpdC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC90Y19hY3QvdGNfcGVkaXQuaFxuQEAgLTM3LDE3ICYjNDM7MzcsMTUgQEAgc3RhdGljIGlubGluZSBib29sIGlzX3RjZl9wZWRpdChjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphKVxuIFx0cmV0dXJuIGZhbHNlO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIGludCB0Y2ZfcGVkaXRfbmtleXMoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSlcbiYjNDM7LyogTXVzdCBiZSBjYWxsZWQgd2l0aCBhY3QtXHUwMDNldGNmYV9sb2NrIGhlbGQgdG8gZW5zdXJlIGNvbnNpc3RlbmN5IG9mIHBhcmFsbGVsXG4mIzQzOyAqIHJlYWRzIG9mIHRoZSBzYW1lIGFjdGlvbiYjMzk7cyBwZWRpdCBrZXlzIChlLmcuIGZsb3dfb2ZmbG9hZCBjb3VudCB2cyBmaWxsKS5cbiYjNDM7ICogTm90ZSwgdGhpcyBpcyBvbmx5IHVzZWQgZm9yIHBlZGl0IG9mZmxvYWQuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW5saW5lIGludCB0Y2ZfcGVkaXRfbmtleXNfbG9ja2VkKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEpXG4ge1xuLVx0c3RydWN0IHRjZl9wZWRpdF9wYXJtcyAqcGFybXM7XG4tXHRpbnQgbmtleXM7XG4tXG4tXHRyY3VfcmVhZF9sb2NrKCk7XG4tXHRwYXJtcyA9IHRvX3BlZGl0X3Bhcm1zKGEpO1xuLVx0bmtleXMgPSBwYXJtcy1cdTAwM2V0Y2ZwX25rZXlzO1xuLVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tXG4tXHRyZXR1cm4gbmtleXM7XG4mIzQzO1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZhLVx1MDAzZXRjZmFfbG9jayk7XG4mIzQzO1x0cmV0dXJuIHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQodG9fcGVkaXQoYSktXHUwMDNlcGFybXMsXG4mIzQzO1x0XHRcdFx0XHQgbG9ja2RlcF9pc19oZWxkKFx1MDAyNmEtXHUwMDNldGNmYV9sb2NrKSktXHUwMDNldGNmcF9ua2V5cztcbiB9XG4gXG4gc3RhdGljIGlubGluZSB1MzIgdGNmX3BlZGl0X2h0eXBlKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEsIGludCBpbmRleClcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2FwaS5jIGIvbmV0L3NjaGVkL2FjdF9hcGkuY1xuaW5kZXggYjY4YmUxNDNhMDY3ZjkuLmYxNDE2MzRkZjIxNDg5IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL2FjdF9hcGkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL2FjdF9hcGkuY1xuQEAgLTE0OCwxMCAmIzQzOzE0OCwxNSBAQCBzdGF0aWMgdm9pZCBvZmZsb2FkX2FjdGlvbl9od19jb3VudF9kZWMoc3RydWN0IHRjX2FjdGlvbiAqYWN0LFxuIFxuIHN0YXRpYyB1bnNpZ25lZCBpbnQgdGNmX29mZmxvYWRfYWN0X251bV9hY3Rpb25zX3NpbmdsZShzdHJ1Y3QgdGNfYWN0aW9uICphY3QpXG4ge1xuLVx0aWYgKGlzX3RjZl9wZWRpdChhY3QpKVxuLVx0XHRyZXR1cm4gdGNmX3BlZGl0X25rZXlzKGFjdCk7XG4tXHRlbHNlXG4tXHRcdHJldHVybiAxO1xuJiM0MztcdHVuc2lnbmVkIGludCBjb3VudDtcbiYjNDM7XG4mIzQzO1x0aWYgKGlzX3RjZl9wZWRpdChhY3QpKSB7XG4mIzQzO1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2YWN0LVx1MDAzZXRjZmFfbG9jayk7XG4mIzQzO1x0XHRjb3VudCA9IHRjZl9wZWRpdF9ua2V5c19sb2NrZWQoYWN0KTtcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFjdC1cdTAwM2V0Y2ZhX2xvY2spO1xuJiM0MztcdFx0cmV0dXJuIGNvdW50O1xuJiM0MztcdH1cbiYjNDM7XHRyZXR1cm4gMTtcbiB9XG4gXG4gc3RhdGljIGJvb2wgdGNfYWN0X3NraXBfaHcodTMyIGZsYWdzKVxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfcGVkaXQuYyBiL25ldC9zY2hlZC9hY3RfcGVkaXQuY1xuaW5kZXggMGQ2NTJkZWE0YTY5MWYuLmQ0ZDQ3YTk5MjFmNDU3IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL2FjdF9wZWRpdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvYWN0X3BlZGl0LmNcbkBAIC01NjcsOSAmIzQzOzU2NywxOCBAQCBzdGF0aWMgaW50IHRjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cChzdHJ1Y3QgdGNfYWN0aW9uICphY3QsIHZvaWQgKmVudHJ5X2RhdGEsXG4ge1xuIFx0aWYgKGJpbmQpIHtcbiBcdFx0c3RydWN0IGZsb3dfYWN0aW9uX2VudHJ5ICplbnRyeSA9IGVudHJ5X2RhdGE7XG4mIzQzO1x0XHRpbnQgbmtleXMgPSB0Y2ZfcGVkaXRfbmtleXNfbG9ja2VkKGFjdCk7XG4gXHRcdGludCBrO1xuIFxuLVx0XHRmb3IgKGsgPSAwOyBrIFx1MDAzYyB0Y2ZfcGVkaXRfbmtleXMoYWN0KTsgayYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdC8qIElmIHRoZSByZXF1aXJlZCBrZXlzIGV4Y2VlZCB0aGUgcmVtYWluaW5nIGNhcGFjaXR5IHJldHVyblxuJiM0MztcdFx0ICogLUVOT1NQQyB0byBhYm9ydCB0aGUgb2ZmbG9hZCBhbmQgZmFsbGJhY2sgdG8gc29mdHdhcmUuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGlmIChua2V5cyBcdTAwM2UgKmluZGV4X2luYykge1xuJiM0MztcdFx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDtOb3QgZW5vdWdoIHNwYWNlIHRvIG9mZmxvYWQgYWxsIHBlZGl0IGtleXNcJiMzNDspO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVOT1NQQztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRmb3IgKGsgPSAwOyBrIFx1MDAzYyBua2V5czsgayYjNDM7JiM0MzspIHtcbiBcdFx0XHRzd2l0Y2ggKHRjZl9wZWRpdF9jbWQoYWN0LCBrKSkge1xuIFx0XHRcdGNhc2UgVENBX1BFRElUX0tFWV9FWF9DTURfU0VUOlxuIFx0XHRcdFx0ZW50cnktXHUwMDNlaWQgPSBGTE9XX0FDVElPTl9NQU5HTEU7XG5AQCAtNjA2LDcgJiM0Mzs2MTUsNyBAQCBzdGF0aWMgaW50IHRjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cChzdHJ1Y3QgdGNfYWN0aW9uICphY3QsIHZvaWQgKmVudHJ5X2RhdGEsXG4gXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFx0XHR9XG4gXG4tXHRcdGZvciAoayA9IDE7IGsgXHUwMDNjIHRjZl9wZWRpdF9ua2V5cyhhY3QpOyBrJiM0MzsmIzQzOykge1xuJiM0MztcdFx0Zm9yIChrID0gMTsgayBcdTAwM2MgdGNmX3BlZGl0X25rZXlzX2xvY2tlZChhY3QpOyBrJiM0MzsmIzQzOykge1xuIFx0XHRcdGlmIChjbWQgIT0gdGNmX3BlZGl0X2NtZChhY3QsIGspKSB7XG4gXHRcdFx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDtVbnN1cHBvcnRlZCBwZWRpdCBjb21tYW5kIG9mZmxvYWRcJiMzNDspO1xuIFx0XHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfYXBpLmMgYi9uZXQvc2NoZWQvY2xzX2FwaS5jXG5pbmRleCAzZTY3NjAwYTRhMWExMC4uZmZlZWE2ZGI4MzM3NDcgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvY2xzX2FwaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvY2xzX2FwaS5jXG5AQCAtMzg4NiwxMiAmIzQzOzM4ODYsMjEgQEAgaW50IHRjX3NldHVwX2FjdGlvbihzdHJ1Y3QgZmxvd19hY3Rpb24gKmZsb3dfYWN0aW9uLFxuIFxuIFx0XHRlbnRyeSA9IFx1MDAyNmZsb3dfYWN0aW9uLVx1MDAzZWVudHJpZXNbal07XG4gXHRcdHNwaW5fbG9ja19iaChcdTAwMjZhY3QtXHUwMDNldGNmYV9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBBYm9ydCB0aGUgb2ZmbG9hZCBpZiB3ZSBoYXZlIGV4aGF1c3RlZCB0aGUgYWxsb2NhdGVkIGNhcGFjaXR5ICovXG4mIzQzO1x0XHRpZiAoaiBcdTAwM2U9IGZsb3dfYWN0aW9uLVx1MDAzZW51bV9lbnRyaWVzKSB7XG4mIzQzO1x0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O0Zsb3cgYWN0aW9uIGJ1ZmZlciBvdmVyZmxvd1wmIzM0Oyk7XG4mIzQzO1x0XHRcdGVyciA9IC1FTk9TUEM7XG4mIzQzO1x0XHRcdGdvdG8gZXJyX291dF9sb2NrZWQ7XG4mIzQzO1x0XHR9XG4mIzQzO1xuIFx0XHRlcnIgPSB0Y2ZfYWN0X2dldF91c2VyX2Nvb2tpZShlbnRyeSwgYWN0KTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRnb3RvIGVycl9vdXRfbG9ja2VkO1xuIFxuLVx0XHRpbmRleCA9IDA7XG4tXHRcdGVyciA9IHRjX3NldHVwX29mZmxvYWRfYWN0KGFjdCwgZW50cnksIFx1MDAyNmluZGV4LCBleHRhY2spO1xuJiM0MztcdFx0aW5kZXggPSBmbG93X2FjdGlvbi1cdTAwM2VudW1fZW50cmllcyAtIGo7XG4mIzQzO1x0XHRlcnIgPSB0Y19zZXR1cF9vZmZsb2FkX2FjdChhY3QsIGVudHJ5LCBcdTAwMjZpbmRleCxcbiYjNDM7XHRcdFx0XHRcdCAgIGV4dGFjayk7XG4gXHRcdGlmIChlcnIpXG4gXHRcdFx0Z290byBlcnJfb3V0X2xvY2tlZDtcbiBcbkBAIC0zOTQ1LDEwICYjNDM7Mzk1NCwxMyBAQCB1bnNpZ25lZCBpbnQgdGNmX2V4dHNfbnVtX2FjdGlvbnMoc3RydWN0IHRjZl9leHRzICpleHRzKVxuIFx0aW50IGk7XG4gXG4gXHR0Y2ZfZXh0c19mb3JfZWFjaF9hY3Rpb24oaSwgYWN0LCBleHRzKSB7XG4tXHRcdGlmIChpc190Y2ZfcGVkaXQoYWN0KSlcbi1cdFx0XHRudW1fYWN0cyAmIzQzOz0gdGNmX3BlZGl0X25rZXlzKGFjdCk7XG4tXHRcdGVsc2VcbiYjNDM7XHRcdGlmIChpc190Y2ZfcGVkaXQoYWN0KSkge1xuJiM0MztcdFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2YWN0LVx1MDAzZXRjZmFfbG9jayk7XG4mIzQzO1x0XHRcdG51bV9hY3RzICYjNDM7PSB0Y2ZfcGVkaXRfbmtleXNfbG9ja2VkKGFjdCk7XG4mIzQzO1x0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFjdC1cdTAwM2V0Y2ZhX2xvY2spO1xuJiM0MztcdFx0fSBlbHNlIHtcbiBcdFx0XHRudW1fYWN0cyYjNDM7JiM0Mzs7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXHRyZXR1cm4gbnVtX2FjdHM7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIzOjQ3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDssCiAgICAmIzM0O05FVF9BQ1RfUEVESVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlJiMzNDssCiAgICAmIzM0O3RjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cCYjMzQ7LAogICAgJiMzNDt0Y2ZfZXh0c19udW1fYWN0aW9ucyYjMzQ7LAogICAgJiMzNDt0Y19zZXR1cF9hY3Rpb24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBhbmQgYnVmZmVyIG92ZXJmbG93IGluIHRoZSBUQyBwZWRpdCBhY3Rpb24gb2ZmbG9hZGluZyBjb2RlLiBJdCBtb2RpZmllcyBgdGNfc2V0dXBfYWN0aW9uYCwgYHRjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cGAsIGB0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlYCwgYW5kIGB0Y2ZfZXh0c19udW1fYWN0aW9uc2AgdG8gdXNlIGEgbG9ja2VkIHZlcnNpb24gb2YgYHRjZl9wZWRpdF9ua2V5c2AgYW5kIGFkZHMgYm91bmRzIGNoZWNraW5nIGZvciBmbG93IGFjdGlvbiBlbnRyaWVzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBjb2RlIGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgc28gaXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNGM5NmRhZWM4YTFmMjJhZGNmNmYxNWFhZTVmZGQ5NmNlZjM5YTBjMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDEgMjM6NDc6MzIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC90Y19hY3QvdGNfcGVkaXQuaCBiL2luY2x1ZGUvbmV0L3RjX2FjdC90Y19wZWRpdC5oCmluZGV4IGNiN2I4MmYyY2JjN2ZkLi45Nzc1NGVhMGE4Mjc5ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvdGNfYWN0L3RjX3BlZGl0LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvdGNfYWN0L3RjX3BlZGl0LmgKQEAgLTM3LDE3ICYjNDM7MzcsMTUgQEAgc3RhdGljIGlubGluZSBib29sIGlzX3RjZl9wZWRpdChjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphKQogCXJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgdGNmX3BlZGl0X25rZXlzKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEpCiYjNDM7LyogTXVzdCBiZSBjYWxsZWQgd2l0aCBhY3QtJmd0O3RjZmFfbG9jayBoZWxkIHRvIGVuc3VyZSBjb25zaXN0ZW5jeSBvZiBwYXJhbGxlbAomIzQzOyAqIHJlYWRzIG9mIHRoZSBzYW1lIGFjdGlvbiYjMzk7cyBwZWRpdCBrZXlzIChlLmcuIGZsb3dfb2ZmbG9hZCBjb3VudCB2cyBmaWxsKS4KJiM0MzsgKiBOb3RlLCB0aGlzIGlzIG9ubHkgdXNlZCBmb3IgcGVkaXQgb2ZmbG9hZC4KJiM0MzsgKi8KJiM0MztzdGF0aWMgaW5saW5lIGludCB0Y2ZfcGVkaXRfbmtleXNfbG9ja2VkKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEpCiB7Ci0Jc3RydWN0IHRjZl9wZWRpdF9wYXJtcyAqcGFybXM7Ci0JaW50IG5rZXlzOwotCi0JcmN1X3JlYWRfbG9jaygpOwotCXBhcm1zID0gdG9fcGVkaXRfcGFybXMoYSk7Ci0JbmtleXMgPSBwYXJtcy0mZ3Q7dGNmcF9ua2V5czsKLQlyY3VfcmVhZF91bmxvY2soKTsKLQotCXJldHVybiBua2V5czsKJiM0MzsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmYW1wO2EtJmd0O3RjZmFfbG9jayk7CiYjNDM7CXJldHVybiByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHRvX3BlZGl0KGEpLSZndDtwYXJtcywKJiM0MzsJCQkJCSBsb2NrZGVwX2lzX2hlbGQoJmFtcDthLSZndDt0Y2ZhX2xvY2spKS0mZ3Q7dGNmcF9ua2V5czsKIH0KIAogc3RhdGljIGlubGluZSB1MzIgdGNmX3BlZGl0X2h0eXBlKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEsIGludCBpbmRleCkKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfYXBpLmMgYi9uZXQvc2NoZWQvYWN0X2FwaS5jCmluZGV4IGI2OGJlMTQzYTA2N2Y5Li5mMTQxNjM0ZGYyMTQ4OSAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL2FjdF9hcGkuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvYWN0X2FwaS5jCkBAIC0xNDgsMTAgJiM0MzsxNDgsMTUgQEAgc3RhdGljIHZvaWQgb2ZmbG9hZF9hY3Rpb25faHdfY291bnRfZGVjKHN0cnVjdCB0Y19hY3Rpb24gKmFjdCwKIAogc3RhdGljIHVuc2lnbmVkIGludCB0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlKHN0cnVjdCB0Y19hY3Rpb24gKmFjdCkKIHsKLQlpZiAoaXNfdGNmX3BlZGl0KGFjdCkpCi0JCXJldHVybiB0Y2ZfcGVkaXRfbmtleXMoYWN0KTsKLQllbHNlCi0JCXJldHVybiAxOwomIzQzOwl1bnNpZ25lZCBpbnQgY291bnQ7CiYjNDM7CiYjNDM7CWlmIChpc190Y2ZfcGVkaXQoYWN0KSkgewomIzQzOwkJc3Bpbl9sb2NrX2JoKCZhbXA7YWN0LSZndDt0Y2ZhX2xvY2spOwomIzQzOwkJY291bnQgPSB0Y2ZfcGVkaXRfbmtleXNfbG9ja2VkKGFjdCk7CiYjNDM7CQlzcGluX3VubG9ja19iaCgmYW1wO2FjdC0mZ3Q7dGNmYV9sb2NrKTsKJiM0MzsJCXJldHVybiBjb3VudDsKJiM0MzsJfQomIzQzOwlyZXR1cm4gMTsKIH0KIAogc3RhdGljIGJvb2wgdGNfYWN0X3NraXBfaHcodTMyIGZsYWdzKQpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9wZWRpdC5jIGIvbmV0L3NjaGVkL2FjdF9wZWRpdC5jCmluZGV4IDBkNjUyZGVhNGE2OTFmLi5kNGQ0N2E5OTIxZjQ1NyAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL2FjdF9wZWRpdC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9hY3RfcGVkaXQuYwpAQCAtNTY3LDkgJiM0Mzs1NjcsMTggQEAgc3RhdGljIGludCB0Y2ZfcGVkaXRfb2ZmbG9hZF9hY3Rfc2V0dXAoc3RydWN0IHRjX2FjdGlvbiAqYWN0LCB2b2lkICplbnRyeV9kYXRhLAogewogCWlmIChiaW5kKSB7CiAJCXN0cnVjdCBmbG93X2FjdGlvbl9lbnRyeSAqZW50cnkgPSBlbnRyeV9kYXRhOwomIzQzOwkJaW50IG5rZXlzID0gdGNmX3BlZGl0X25rZXlzX2xvY2tlZChhY3QpOwogCQlpbnQgazsKIAotCQlmb3IgKGsgPSAwOyBrICZsdDsgdGNmX3BlZGl0X25rZXlzKGFjdCk7IGsmIzQzOyYjNDM7KSB7CiYjNDM7CQkvKiBJZiB0aGUgcmVxdWlyZWQga2V5cyBleGNlZWQgdGhlIHJlbWFpbmluZyBjYXBhY2l0eSByZXR1cm4KJiM0MzsJCSAqIC1FTk9TUEMgdG8gYWJvcnQgdGhlIG9mZmxvYWQgYW5kIGZhbGxiYWNrIHRvIHNvZnR3YXJlLgomIzQzOwkJICovCiYjNDM7CQlpZiAobmtleXMgJmd0OyAqaW5kZXhfaW5jKSB7CiYjNDM7CQkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtOb3QgZW5vdWdoIHNwYWNlIHRvIG9mZmxvYWQgYWxsIHBlZGl0IGtleXMmIzM0Oyk7CiYjNDM7CQkJcmV0dXJuIC1FTk9TUEM7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlmb3IgKGsgPSAwOyBrICZsdDsgbmtleXM7IGsmIzQzOyYjNDM7KSB7CiAJCQlzd2l0Y2ggKHRjZl9wZWRpdF9jbWQoYWN0LCBrKSkgewogCQkJY2FzZSBUQ0FfUEVESVRfS0VZX0VYX0NNRF9TRVQ6CiAJCQkJZW50cnktJmd0O2lkID0gRkxPV19BQ1RJT05fTUFOR0xFOwpAQCAtNjA2LDcgJiM0Mzs2MTUsNyBAQCBzdGF0aWMgaW50IHRjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cChzdHJ1Y3QgdGNfYWN0aW9uICphY3QsIHZvaWQgKmVudHJ5X2RhdGEsCiAJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJCX0KIAotCQlmb3IgKGsgPSAxOyBrICZsdDsgdGNmX3BlZGl0X25rZXlzKGFjdCk7IGsmIzQzOyYjNDM7KSB7CiYjNDM7CQlmb3IgKGsgPSAxOyBrICZsdDsgdGNmX3BlZGl0X25rZXlzX2xvY2tlZChhY3QpOyBrJiM0MzsmIzQzOykgewogCQkJaWYgKGNtZCAhPSB0Y2ZfcGVkaXRfY21kKGFjdCwgaykpIHsKIAkJCQlOTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCAmIzM0O1Vuc3VwcG9ydGVkIHBlZGl0IGNvbW1hbmQgb2ZmbG9hZCYjMzQ7KTsKIAkJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvY2xzX2FwaS5jIGIvbmV0L3NjaGVkL2Nsc19hcGkuYwppbmRleCAzZTY3NjAwYTRhMWExMC4uZmZlZWE2ZGI4MzM3NDcgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9jbHNfYXBpLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL2Nsc19hcGkuYwpAQCAtMzg4NiwxMiAmIzQzOzM4ODYsMjEgQEAgaW50IHRjX3NldHVwX2FjdGlvbihzdHJ1Y3QgZmxvd19hY3Rpb24gKmZsb3dfYWN0aW9uLAogCiAJCWVudHJ5ID0gJmFtcDtmbG93X2FjdGlvbi0mZ3Q7ZW50cmllc1tqXTsKIAkJc3Bpbl9sb2NrX2JoKCZhbXA7YWN0LSZndDt0Y2ZhX2xvY2spOwomIzQzOwomIzQzOwkJLyogQWJvcnQgdGhlIG9mZmxvYWQgaWYgd2UgaGF2ZSBleGhhdXN0ZWQgdGhlIGFsbG9jYXRlZCBjYXBhY2l0eSAqLwomIzQzOwkJaWYgKGogJmd0Oz0gZmxvd19hY3Rpb24tJmd0O251bV9lbnRyaWVzKSB7CiYjNDM7CQkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtGbG93IGFjdGlvbiBidWZmZXIgb3ZlcmZsb3cmIzM0Oyk7CiYjNDM7CQkJZXJyID0gLUVOT1NQQzsKJiM0MzsJCQlnb3RvIGVycl9vdXRfbG9ja2VkOwomIzQzOwkJfQomIzQzOwogCQllcnIgPSB0Y2ZfYWN0X2dldF91c2VyX2Nvb2tpZShlbnRyeSwgYWN0KTsKIAkJaWYgKGVycikKIAkJCWdvdG8gZXJyX291dF9sb2NrZWQ7CiAKLQkJaW5kZXggPSAwOwotCQllcnIgPSB0Y19zZXR1cF9vZmZsb2FkX2FjdChhY3QsIGVudHJ5LCAmYW1wO2luZGV4LCBleHRhY2spOwomIzQzOwkJaW5kZXggPSBmbG93X2FjdGlvbi0mZ3Q7bnVtX2VudHJpZXMgLSBqOwomIzQzOwkJZXJyID0gdGNfc2V0dXBfb2ZmbG9hZF9hY3QoYWN0LCBlbnRyeSwgJmFtcDtpbmRleCwKJiM0MzsJCQkJCSAgIGV4dGFjayk7CiAJCWlmIChlcnIpCiAJCQlnb3RvIGVycl9vdXRfbG9ja2VkOwogCkBAIC0zOTQ1LDEwICYjNDM7Mzk1NCwxMyBAQCB1bnNpZ25lZCBpbnQgdGNmX2V4dHNfbnVtX2FjdGlvbnMoc3RydWN0IHRjZl9leHRzICpleHRzKQogCWludCBpOwogCiAJdGNmX2V4dHNfZm9yX2VhY2hfYWN0aW9uKGksIGFjdCwgZXh0cykgewotCQlpZiAoaXNfdGNmX3BlZGl0KGFjdCkpCi0JCQludW1fYWN0cyAmIzQzOz0gdGNmX3BlZGl0X25rZXlzKGFjdCk7Ci0JCWVsc2UKJiM0MzsJCWlmIChpc190Y2ZfcGVkaXQoYWN0KSkgewomIzQzOwkJCXNwaW5fbG9ja19iaCgmYW1wO2FjdC0mZ3Q7dGNmYV9sb2NrKTsKJiM0MzsJCQludW1fYWN0cyAmIzQzOz0gdGNmX3BlZGl0X25rZXlzX2xvY2tlZChhY3QpOwomIzQzOwkJCXNwaW5fdW5sb2NrX2JoKCZhbXA7YWN0LSZndDt0Y2ZhX2xvY2spOwomIzQzOwkJfSBlbHNlIHsKIAkJCW51bV9hY3RzJiM0MzsmIzQzOzsKJiM0MzsJCX0KIAl9CiAJcmV0dXJuIG51bV9hY3RzOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDg2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFRDIFBlZGl0IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBzb21lIGtleSBmaWxlcyBpbiB0aGUgbmV0d29ya2luZyBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIHRyYWZmaWMgY29udHJvbCAoVEMpIHBlZGl0IGFjdGlvbi4gSXQmIzM5O3MgbW9kaWZ5aW5nIGBpbmNsdWRlL25ldC90Y19hY3QvdGNfcGVkaXQuaGAsIGBuZXQvc2NoZWQvYWN0X2FwaS5jYCwgYG5ldC9zY2hlZC9hY3RfcGVkaXQuY2AsIGFuZCBgbmV0L3NjaGVkL2Nsc19hcGkuY2AuIFRoZSBjb3JlIGNoYW5nZSBzZWVtcyB0byBiZSBsb2NraW5nIGRvd24gdGhlIGB0Y2ZfcGVkaXRfbmtleXNgIGZ1bmN0aW9uLCByZXBsYWNpbmcgaXQgd2l0aCBhIGxvY2tlZCB2ZXJzaW9uLCBgdGNmX3BlZGl0X25rZXlzX2xvY2tlZGAsIHdoaWNoIGlzIGEgZ29vZCBtb3ZlIHRvIGVuc3VyZSBkYXRhIGludGVncml0eSBkdXJpbmcgYWNjZXNzLiBGdXJ0aGVybW9yZSwgdGhlcmUgYXJlIGNoZWNrcyBiZWluZyBpbnRyb2R1Y2VkIGZvciBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93cyBpbiBgdGNfc2V0dXBfYWN0aW9uYCBhbmQgYHRjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cGAsIHdoaWNoIGlzIGV4Y2VsbGVudC4gSSBhbHdheXMgYXBwcmVjaWF0ZSBwcm9hY3RpdmUgdnVsbmVyYWJpbGl0eSBtaXRpZ2F0aW9uIGxpa2UgdGhpcy4KCkdpdmVuIHRoYXQgdGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgd2l0aGluIHRoZSBUQyBzdWJzeXN0ZW0gcmVsYXRlZCB0byB0aGUgcGVkaXQgYWN0aW9uIGFuZCBvZmZsb2FkaW5nLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuCgpTaW5jZSB0aGUgZmlsZXMgYXJlIGluIGBuZXQvc2NoZWQvYCwgSSYjMzk7bGwgY2hlY2sgdGhlIGFzc29jaWF0ZWQgS2NvbmZpZyBmaWxlcy4gYGFjdF9hcGkuY2AgaXMgZW5hYmxlZCBieSBgQ09ORklHX05FVF9DTFNfQUNUYCwgYGFjdF9wZWRpdC5jYCBuZWVkcyBgQ09ORklHX05FVF9BQ1RfUEVESVRgLCBhbmQgYGNsc19hcGkuY2AgZGVwZW5kcyBvbiBgQ09ORklHX05FVF9DTFNgLiBJJiMzOTtsbCB1c2UgYGdyZXBwZXJgIHRvIGNvbmZpcm0gdGhpcyBxdWlja2x5IGFuZCBpZGVudGlmeSB3aGljaCBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gc2V0IHRvIGdldCB0aGlzIGZ1bmN0aW9uYWxpdHkgZW5hYmxlZC4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGhhdmUgYWxsIHRoZSByZWxldmFudCBkZXBlbmRlbmNpZXMgc2V0IHRvIGVuc3VyZSBJIGhhdmUgYSBjb21wbGV0ZSBhbmQgdGVzdGFibGUgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkVUX0FDVF9QRURJVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9NzY0PWNvbmZpZyBORVRfQUNUX05BVFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTc3My1cbm5ldC9zY2hlZC9LY29uZmlnOjc3NDpjb25maWcgTkVUX0FDVF9QRURJVFxubmV0L3NjaGVkL0tjb25maWctNzc1LVx0dHJpc3RhdGUgXCYjMzQ7UGFja2V0IEVkaXRpbmdcJiMzNDtcbi0tXG5uZXQvc2NoZWQvTWFrZWZpbGU9MTY9b2JqLSQoQ09ORklHX05FVF9BQ1RfTkFUKVx0JiM0Mzs9IGFjdF9uYXQub1xubmV0L3NjaGVkL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19ORVRfQUNUX1BFRElUKVx0JiM0Mzs9IGFjdF9wZWRpdC5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtMTgtb2JqLSQoQ09ORklHX05FVF9BQ1RfU0lNUClcdCYjNDM7PSBhY3Rfc2ltcGxlLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzI0CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBUcmFmZmljIENvbnRyb2wgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBjb25maWd1cmF0aW9uIGhlcmUgZm9yIHRyYWZmaWMgY29udHJvbC4gSSBzZWUgdGhhdCBgTkVUX0FDVF9QRURJVGAgaXMgdGhlIGtleSBmb3IgdGhlIFBFRElUIGFjdGlvbiwgdGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgYWxzbyBuZWVkIHRvIGVuc3VyZSBgTkVUX0NMU19BQ1RgIGlzIGVuYWJsZWQgYmVjYXVzZSBpdCYjMzk7cyByZXF1aXJlZCBmb3IgYWN0aW9ucyBpbiBnZW5lcmFsLgoKTm93LCBsZXQmIzM5O3MgdHJhY2UgdGhyb3VnaCB0aGUgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGVsZW1lbnRzIGludGVyYWN0LiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSB1c2FnZSBvZiBgdGNmX3BlZGl0X25rZXlzX2xvY2tlZGAgYW5kIGB0Y19zZXR1cF9hY3Rpb25gLCBhbmQgYSBmZXcgb3RoZXIgdGhpbmdzLgoKYHRjX3NldHVwX2FjdGlvbmAsIHRoYXQmIzM5O3MgaW4gYG5ldC9zY2hlZC9jbHNfYXBpLmNgLiBHb29kLCB0aGF0IG1ha2VzIHNlbnNlLiBUaGVuIGB0Y2ZfcGVkaXRfb2ZmbG9hZF9hY3Rfc2V0dXBgIGlzIGluIGBuZXQvc2NoZWQvYWN0X3BlZGl0LmNgLiBJJiMzOTtsbCB3YW50IHRvIHJldmlldyB0aGF0IG9uZSBjYXJlZnVsbHkuIEkgc2VlIGB0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlYCBpbiBgbmV0L3NjaGVkL2FjdF9hcGkuY2AsIGFuZCBgdGNmX2V4dHNfbnVtX2FjdGlvbnNgIGlzIGJhY2sgaW4gYG5ldC9zY2hlZC9jbHNfYXBpLmNgLgoKVG8gbWFrZSBzdXJlIEkmIzM5O20gc2hhcnAsIEkmIzM5O2xsIG5lZWQgdG8gZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYHRjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cGAsIGB0Y19zZXR1cF9hY3Rpb25gLCBgdGNmX29mZmxvYWRfYWN0X251bV9hY3Rpb25zX3NpbmdsZWAsIGFuZCBgdGNmX2V4dHNfbnVtX2FjdGlvbnNgLiBUaGV5JiMzOTtyZSB0aGUgY29yZSBvZiBob3cgdGhlIGFjdGlvbiBpcyBzZXR1cCBhbmQgcHJvY2Vzc2VkLgoKRmluYWxseSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZy4gSSYjMzk7bGwgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIExvb2tzIGxpa2UgYE5FVF9DTFNfQUNUYCBpcyByZXF1aXJlZCBieSBgYWN0X2FwaS5jYCBhcyB3ZWxsLiBUaGF0IGNvbmZpcm1zIG15IGluaXRpYWwgYXNzZXNzbWVudC4gTm93IEkmIzM5O2xsIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfQ0xTX0FDVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9MzQ3PWNvbmZpZyBORVRfU0NIX0lOR1JFU1Ncbm5ldC9zY2hlZC9LY29uZmlnLTM0OC1cdHRyaXN0YXRlIFwmIzM0O0luZ3Jlc3MvY2xhc3NpZmllci1hY3Rpb24gUWRpc2NcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjM0OTpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTM1MC1cdHNlbGVjdCBORVRfWEdSRVNTXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NjkwPWNvbmZpZyBORVRfRU1BVENIX0lQVFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTcwMS1cbm5ldC9zY2hlZC9LY29uZmlnOjcwMjpjb25maWcgTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTcwMy1cdGJvb2wgXCYjMzQ7QWN0aW9uc1wmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTcxNT1jb25maWcgTkVUX0FDVF9QT0xJQ0Vcbm5ldC9zY2hlZC9LY29uZmlnLTcxNi1cdHRyaXN0YXRlIFwmIzM0O1RyYWZmaWMgUG9saWNpbmdcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjcxNzpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTcxOC1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03MjY9Y29uZmlnIE5FVF9BQ1RfR0FDVFxubmV0L3NjaGVkL0tjb25maWctNzI3LVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBhY3Rpb25zXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3Mjg6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03MjktXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NzQyPWNvbmZpZyBORVRfQUNUX01JUlJFRFxubmV0L3NjaGVkL0tjb25maWctNzQzLVx0dHJpc3RhdGUgXCYjMzQ7UmVkaXJlY3RpbmcgYW5kIE1pcnJvcmluZ1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NzQ0Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzQ1LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTc1Mj1jb25maWcgTkVUX0FDVF9TQU1QTEVcbm5ldC9zY2hlZC9LY29uZmlnLTc1My1cdHRyaXN0YXRlIFwmIzM0O1RyYWZmaWMgU2FtcGxpbmdcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjc1NDpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTc1NS1cdHNlbGVjdCBQU0FNUExFXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NzY0PWNvbmZpZyBORVRfQUNUX05BVFxubmV0L3NjaGVkL0tjb25maWctNzY1LVx0dHJpc3RhdGUgXCYjMzQ7U3RhdGVsZXNzIE5BVFwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NzY2Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzY3LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTc3ND1jb25maWcgTkVUX0FDVF9QRURJVFxubmV0L3NjaGVkL0tjb25maWctNzc1LVx0dHJpc3RhdGUgXCYjMzQ7UGFja2V0IEVkaXRpbmdcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjc3NjpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTc3Ny1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03ODM9Y29uZmlnIE5FVF9BQ1RfU0lNUFxubmV0L3NjaGVkL0tjb25maWctNzg0LVx0dHJpc3RhdGUgXCYjMzQ7U2ltcGxlIEV4YW1wbGUgKERlYnVnKVwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6Nzg1Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzg2LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTc5Nz1jb25maWcgTkVUX0FDVF9TS0JFRElUXG5uZXQvc2NoZWQvS2NvbmZpZy03OTgtXHR0cmlzdGF0ZSBcJiMzNDtTS0IgRWRpdGluZ1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6Nzk5Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctODAwLVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTgwOD1jb25maWcgTkVUX0FDVF9DU1VNXG5uZXQvc2NoZWQvS2NvbmZpZy04MDktXHR0cmlzdGF0ZSBcJiMzNDtDaGVja3N1bSBVcGRhdGluZ1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODEwOlx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcdTAwMjZcdTAwMjYgSU5FVFxubmV0L3NjaGVkL0tjb25maWctODExLVx0c2VsZWN0IE5FVF9DUkMzMkNcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04MTk9Y29uZmlnIE5FVF9BQ1RfTVBMU1xubmV0L3NjaGVkL0tjb25maWctODIwLVx0dHJpc3RhdGUgXCYjMzQ7TVBMUyBtYW5pcHVsYXRpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjgyMTpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTgyMi1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04MzA9Y29uZmlnIE5FVF9BQ1RfVkxBTlxubmV0L3NjaGVkL0tjb25maWctODMxLVx0dHJpc3RhdGUgXCYjMzQ7VmxhbiBtYW5pcHVsYXRpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjgzMjpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTgzMy1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04NDE9Y29uZmlnIE5FVF9BQ1RfQlBGXG5uZXQvc2NoZWQvS2NvbmZpZy04NDItXHR0cmlzdGF0ZSBcJiMzNDtCUEYgYmFzZWQgYWN0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4NDM6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy04NDQtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9ODUzPWNvbmZpZyBORVRfQUNUX0NPTk5NQVJLXG5uZXQvc2NoZWQvS2NvbmZpZy04NTQtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgQ29ubmVjdGlvbiBNYXJrIFJldHJpZXZlclwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODU1Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcdTAwMjZcdTAwMjYgTkVURklMVEVSXG5uZXQvc2NoZWQvS2NvbmZpZy04NTYtXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgTkZfQ09OTlRSQUNLX01BUktcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04NjU9Y29uZmlnIE5FVF9BQ1RfQ1RJTkZPXG5uZXQvc2NoZWQvS2NvbmZpZy04NjYtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgQ29ubmVjdGlvbiBNYXJrIEFjdGlvbnNcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjg2NzpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1QgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUlxubmV0L3NjaGVkL0tjb25maWctODY4LVx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2IE5GX0NPTk5UUkFDS19NQVJLXG4tLVxubmV0L3NjaGVkL0tjb25maWc9ODgyPWNvbmZpZyBORVRfQUNUX1NLQk1PRFxubmV0L3NjaGVkL0tjb25maWctODgzLVx0dHJpc3RhdGUgXCYjMzQ7c2tiIGRhdGEgbW9kaWZpY2F0aW9uIGFjdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODg0Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctODg1LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTg5Mz1jb25maWcgTkVUX0FDVF9JRkVcbm5ldC9zY2hlZC9LY29uZmlnLTg5NC1cdHRyaXN0YXRlIFwmIzM0O0ludGVyLUZFIGFjdGlvbiBiYXNlZCBvbiBJRVRGIEZvckNFUyBJbnRlckZFIExGQlwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODk1Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctODk2LVx0c2VsZWN0IE5FVF9JRkVcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz05MDY9Y29uZmlnIE5FVF9BQ1RfVFVOTkVMX0tFWVxubmV0L3NjaGVkL0tjb25maWctOTA3LVx0dHJpc3RhdGUgXCYjMzQ7SVAgdHVubmVsIG1ldGFkYXRhIG1hbmlwdWxhdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6OTA4Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctOTA5LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTkxNz1jb25maWcgTkVUX0FDVF9DVFxubmV0L3NjaGVkL0tjb25maWctOTE4LVx0dHJpc3RhdGUgXCYjMzQ7Y29ubmVjdGlvbiB0cmFja2luZyB0YyBhY3Rpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjkxOTpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1QgXHUwMDI2XHUwMDI2IE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgKCFORl9OQVQgfHwgTkZfTkFUKSBcdTAwMjZcdTAwMjYgTkZfRkxPV19UQUJMRVxubmV0L3NjaGVkL0tjb25maWctOTIwLVx0c2VsZWN0IE5GX0NPTk5UUkFDS19PVlNcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz05MzA9Y29uZmlnIE5FVF9BQ1RfR0FURVxubmV0L3NjaGVkL0tjb25maWctOTMxLVx0dHJpc3RhdGUgXCYjMzQ7RnJhbWUgZ2F0ZSBlbnRyeSBsaXN0IGNvbnRyb2wgdGMgYWN0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo5MzI6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy05MzMtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9OTU0PWNvbmZpZyBORVRfVENfU0tCX0VYVFxubmV0L3NjaGVkL0tjb25maWctOTU1LVx0Ym9vbCBcJiMzNDtUQyByZWNpcmN1bGF0aW9uIHN1cHBvcnRcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjk1NjpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTk1Ny1cdHNlbGVjdCBTS0JfRVhURU5TSU9OU1xuLS1cbm5ldC9zY2hlZC9NYWtlZmlsZT0xMD1vYmotJChDT05GSUdfTkVUX0NMUylcdFx0JiM0Mzs9IGNsc19hcGkub1xubmV0L3NjaGVkL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19ORVRfQ0xTX0FDVClcdCYjNDM7PSBhY3RfYXBpLm9cbm5ldC9zY2hlZC9NYWtlZmlsZS0xMi1vYmotJChDT05GSUdfTkVUX0FDVF9QT0xJQ0UpXHQmIzQzOz0gYWN0X3BvbGljZS5vXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz0xNDQ9c3RhdGljIHU2NCB0Y2ZfZXh0c19taXNzX2Nvb2tpZV9nZXQodTMyIG1pc3NfY29va2llX2Jhc2UsIGludCBhY3RfaW5kZXgpXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTQtXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE1NTojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1Ni1ERUZJTkVfU1RBVElDX0tFWV9GQUxTRSh0Y19za2JfZXh0X3RjKTtcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTQxND1zdGF0aWMgdm9pZCB0Y2ZfcHJvdG9fY291bnRfdXNlc3coc3RydWN0IHRjZl9wcm90byAqdHAsIGJvb2wgYWRkKVxubmV0L3NjaGVkL2Nsc19hcGkuYy00MTUte1xubmV0L3NjaGVkL2Nsc19hcGkuYzo0MTY6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL2Nsc19hcGkuYy00MTctXHRzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jayA9IHRwLVx1MDAzZWNoYWluLVx1MDAzZWJsb2NrO1xuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9MTcxMj1zdGF0aWMgaW5saW5lIGludCBfX3RjZl9jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTcyMC17XG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE3MjE6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNzIyLVx0Y29uc3QgaW50IG1heF9yZWNsYXNzaWZ5X2xvb3AgPSAxNjtcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE3NjUtXHRcdH1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTc2NjojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE3NjctXHRcdGlmICh1bmxpa2VseShlcnIgPT0gVENfQUNUX1JFQ0xBU1NJRlkgXHUwMDI2XHUwMDI2ICFjb21wYXRfbW9kZSkpIHtcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE3ODctXHRyZXR1cm4gVENfQUNUX1VOU1BFQzsgLyogc2lnbmFsOiBjb250aW51ZSBsb29rdXAgKi9cbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTc4ODojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE3ODktcmVzZXQ6XG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz0zMzM4PWludCB0Y2ZfZXh0c19pbml0X2V4KHN0cnVjdCB0Y2ZfZXh0cyAqZXh0cywgc3RydWN0IG5ldCAqbmV0LCBpbnQgYWN0aW9uLFxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzM0My1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6MzM0NDojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTMzNDUtXHRleHRzLVx1MDAzZXR5cGUgPSAwO1xuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzM3MC1cdHRjZl9leHRzX2Rlc3Ryb3koZXh0cyk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jOjMzNzE6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zMzcyLVx0ZXh0cy1cdTAwM2VhY3Rpb25zID0gTlVMTDtcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTMzNzg9dm9pZCB0Y2ZfZXh0c19kZXN0cm95KHN0cnVjdCB0Y2ZfZXh0cyAqZXh0cylcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTMzODEtXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjMzODI6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zMzgzLVx0aWYgKGV4dHMtXHUwMDNlYWN0aW9ucykge1xuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9MzM5Mj1pbnQgdGNmX2V4dHNfdmFsaWRhdGVfZXgoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgc3RydWN0IG5sYXR0ciAqKnRiLFxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzM5NS17XG5uZXQvc2NoZWQvY2xzX2FwaS5jOjMzOTY6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zMzk3LVx0e1xuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzQzNi1cdCAgICAoZXh0cy1cdTAwM2Vwb2xpY2UgXHUwMDI2XHUwMDI2IHRiW2V4dHMtXHUwMDNlcG9saWNlXSkpIHtcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MzQzNzpcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtDbGFzc2lmaWVyIGFjdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgcGVyIGNvbXBpbGUgb3B0aW9ucyAoQ09ORklHX05FVF9DTFNfQUNUKVwmIzM0Oyk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTM0MzgtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTM0NTU9dm9pZCB0Y2ZfZXh0c19jaGFuZ2Uoc3RydWN0IHRjZl9leHRzICpkc3QsIHN0cnVjdCB0Y2ZfZXh0cyAqc3JjKVxubmV0L3NjaGVkL2Nsc19hcGkuYy0zNDU2LXtcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MzQ1NzojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTM0NTgtXHRzdHJ1Y3QgdGNmX2V4dHMgb2xkID0gKmRzdDtcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTM0NjQ9RVhQT1JUX1NZTUJPTCh0Y2ZfZXh0c19jaGFuZ2UpO1xubmV0L3NjaGVkL2Nsc19hcGkuYy0zNDY1LVxubmV0L3NjaGVkL2Nsc19hcGkuYzozNDY2OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzQ2Ny1zdGF0aWMgc3RydWN0IHRjX2FjdGlvbiAqdGNmX2V4dHNfZmlyc3RfYWN0KHN0cnVjdCB0Y2ZfZXh0cyAqZXh0cylcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTM0NzY9aW50IHRjZl9leHRzX2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRjZl9leHRzICpleHRzKVxubmV0L3NjaGVkL2Nsc19hcGkuYy0zNDc3LXtcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MzQ3ODojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTM0NzktXHRzdHJ1Y3QgbmxhdHRyICpuZXN0O1xuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9MzUxNz1pbnQgdGNmX2V4dHNfdGVyc2VfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNmX2V4dHMgKmV4dHMpXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTM1MTgte1xubmV0L3NjaGVkL2Nsc19hcGkuYzozNTE5OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzUyMC1cdHN0cnVjdCBubGF0dHIgKm5lc3Q7XG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz0zNTQzPWludCB0Y2ZfZXh0c19kdW1wX3N0YXRzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB0Y2ZfZXh0cyAqZXh0cylcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzU0NC17XG5uZXQvc2NoZWQvY2xzX2FwaS5jOjM1NDU6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zNTQ2LVx0c3RydWN0IHRjX2FjdGlvbiAqYSA9IHRjZl9leHRzX2ZpcnN0X2FjdChleHRzKTtcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTM4NTA9c3RhdGljIGludCB0Y19zZXR1cF9vZmZsb2FkX2FjdChzdHJ1Y3QgdGNfYWN0aW9uICphY3QsXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy0zODU0LXtcbm5ldC9zY2hlZC9jbHNfYXBpLmM6Mzg1NTojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTM4NTYtXHRpZiAoYWN0LVx1MDAzZW9wcy1cdTAwM2VvZmZsb2FkX2FjdF9zZXR1cCkge1xuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9MzkzMD1pbnQgdGNfc2V0dXBfb2ZmbG9hZF9hY3Rpb24oc3RydWN0IGZsb3dfYWN0aW9uICpmbG93X2FjdGlvbixcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTM5MzMte1xubmV0L3NjaGVkL2Nsc19hcGkuYzozOTM0OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzkzNS1cdHUzMiBtaXNzX2Nvb2tpZV9iYXNlO1xuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9Mzk2Nz1FWFBPUlRfU1lNQk9MKHRjZl9leHRzX251bV9hY3Rpb25zKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzk2OC1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6Mzk2OTojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTM5NzAtc3RhdGljIGludCB0Y2ZfcWV2ZW50X3BhcnNlX2Jsb2NrX2luZGV4KHN0cnVjdCBubGF0dHIgKmJsb2NrX2luZGV4X2F0dHIsXG4tLVxubmV0L3NjaGVkL2Nsc191MzIuYz0xNDc0PXN0YXRpYyBpbnQgX19pbml0IGluaXRfdTMyKHZvaWQpXG4tLVxubmV0L3NjaGVkL2Nsc191MzIuYy0xNDgyLVx0cHJfaW5mbyhcJiMzNDsgICAgaW5wdXQgZGV2aWNlIGNoZWNrIG9uXFxuXCYjMzQ7KTtcbm5ldC9zY2hlZC9jbHNfdTMyLmM6MTQ4MzojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTE0ODQtXHRwcl9pbmZvKFwmIzM0OyAgICBBY3Rpb25zIGNvbmZpZ3VyZWRcXG5cJiMzNDspO1xuLS1cbm5ldC9zY2hlZC9zY2hfY2FrZS5jPTE3MTk9c3RhdGljIHUzMiBjYWtlX2NsYXNzaWZ5KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgY2FrZV90aW5fZGF0YSAqKnQsXG4tLVxubmV0L3NjaGVkL3NjaF9jYWtlLmMtMTczNS1cdGlmIChyZXN1bHQgXHUwMDNlPSAwKSB7XG5uZXQvc2NoZWQvc2NoX2Nha2UuYzoxNzM2OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9zY2hfY2FrZS5jLTE3MzctXHRcdHN3aXRjaCAocmVzdWx0KSB7XG4tLVxubmV0L3NjaGVkL3NjaF9kcnIuYz0yOTg9c3RhdGljIHN0cnVjdCBkcnJfY2xhc3MgKmRycl9jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbi0tXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTMxNi1cdGlmIChyZXN1bHQgXHUwMDNlPSAwKSB7XG5uZXQvc2NoZWQvc2NoX2Ryci5jOjMxNzojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTMxOC1cdFx0c3dpdGNoIChyZXN1bHQpIHtcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz0zNDE9c3RhdGljIGludCBkdWFscGkyX3NrYl9jbGFzc2lmeShzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLFxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTM2OC1cdGlmIChyZXN1bHQgXHUwMDNlPSAwKSB7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzozNjk6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMzcwLVx0XHRzd2l0Y2ggKHJlc3VsdCkge1xuLS1cbm5ldC9zY2hlZC9zY2hfZXRzLmM9MzgyPXN0YXRpYyBzdHJ1Y3QgZXRzX2NsYXNzICpldHNfY2xhc3NpZnkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4tLVxubmV0L3NjaGVkL3NjaF9ldHMuYy0zOTQtXHRcdGVyciA9IHRjZl9jbGFzc2lmeShza2IsIE5VTEwsIGZsLCBcdTAwMjZyZXMsIGZhbHNlKTtcbm5ldC9zY2hlZC9zY2hfZXRzLmM6Mzk1OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9zY2hfZXRzLmMtMzk2LVx0XHRzd2l0Y2ggKGVycikge1xuLS1cbm5ldC9zY2hlZC9zY2hfZnFfY29kZWwuYz03Nj1zdGF0aWMgdW5zaWduZWQgaW50IGZxX2NvZGVsX2NsYXNzaWZ5KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxuLS1cbm5ldC9zY2hlZC9zY2hfZnFfY29kZWwuYy05NS1cdGlmIChyZXN1bHQgXHUwMDNlPSAwKSB7XG5uZXQvc2NoZWQvc2NoX2ZxX2NvZGVsLmM6OTY6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL3NjaF9mcV9jb2RlbC5jLTk3LVx0XHRzd2l0Y2ggKHJlc3VsdCkge1xuLS1cbm5ldC9zY2hlZC9zY2hfZnFfcGllLmM9ODE9c3RhdGljIHVuc2lnbmVkIGludCBmcV9waWVfY2xhc3NpZnkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4tLVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy0xMDAtXHRpZiAocmVzdWx0IFx1MDAzZT0gMCkge1xubmV0L3NjaGVkL3NjaF9mcV9waWUuYzoxMDE6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy0xMDItXHRcdHN3aXRjaCAocmVzdWx0KSB7XG4tLVxubmV0L3NjaGVkL3NjaF9oZnNjLmM9MTEzMD1oZnNjX2NsYXNzaWZ5KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLCBpbnQgKnFlcnIpXG4tLVxubmV0L3NjaGVkL3NjaF9oZnNjLmMtMTE0Ni1cdHdoaWxlICh0Y2YgXHUwMDI2XHUwMDI2IChyZXN1bHQgPSB0Y2ZfY2xhc3NpZnkoc2tiLCBOVUxMLCB0Y2YsIFx1MDAyNnJlcywgZmFsc2UpKSBcdTAwM2U9IDApIHtcbm5ldC9zY2hlZC9zY2hfaGZzYy5jOjExNDc6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL3NjaF9oZnNjLmMtMTE0OC1cdFx0c3dpdGNoIChyZXN1bHQpIHtcbi0tXG5uZXQvc2NoZWQvc2NoX2h0Yi5jPTIyMD1zdGF0aWMgc3RydWN0IGh0Yl9jbGFzcyAqaHRiX2NsYXNzaWZ5KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxuLS1cbm5ldC9zY2hlZC9zY2hfaHRiLmMtMjQ2LVx0d2hpbGUgKHRjZiBcdTAwMjZcdTAwMjYgKHJlc3VsdCA9IHRjZl9jbGFzc2lmeShza2IsIE5VTEwsIHRjZiwgXHUwMDI2cmVzLCBmYWxzZSkpIFx1MDAzZT0gMCkge1xubmV0L3NjaGVkL3NjaF9odGIuYzoyNDc6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL3NjaF9odGIuYy0yNDgtXHRcdHN3aXRjaCAocmVzdWx0KSB7XG4tLVxubmV0L3NjaGVkL3NjaF9odGIuYz02MjA9c3RhdGljIGludCBodGJfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbi0tXG5uZXQvc2NoZWQvc2NoX2h0Yi5jLTYzNS1cdFx0fVxubmV0L3NjaGVkL3NjaF9odGIuYzo2MzY6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL3NjaF9odGIuYy02MzctXHR9IGVsc2UgaWYgKCFjbCkge1xuLS1cbm5ldC9zY2hlZC9zY2hfbXVsdGlxLmM9MzA9bXVsdGlxX2NsYXNzaWZ5KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLCBpbnQgKnFlcnIpXG4tLVxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYy0zOS1cdGVyciA9IHRjZl9jbGFzc2lmeShza2IsIE5VTEwsIGZsLCBcdTAwMjZyZXMsIGZhbHNlKTtcbm5ldC9zY2hlZC9zY2hfbXVsdGlxLmM6NDA6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYy00MS1cdHN3aXRjaCAoZXJyKSB7XG4tLVxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYz02MD1tdWx0aXFfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbi0tXG5uZXQvc2NoZWQvc2NoX211bHRpcS5jLTY2LVx0cWRpc2MgPSBtdWx0aXFfY2xhc3NpZnkoc2tiLCBzY2gsIFx1MDAyNnJldCk7XG5uZXQvc2NoZWQvc2NoX211bHRpcS5jOjY3OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9zY2hfbXVsdGlxLmMtNjgtXHRpZiAocWRpc2MgPT0gTlVMTCkge1xuLS1cbm5ldC9zY2hlZC9zY2hfcHJpby5jPTMxPXByaW9fY2xhc3NpZnkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsIGludCAqcWVycilcbi0tXG5uZXQvc2NoZWQvc2NoX3ByaW8uYy00Mi1cdFx0ZXJyID0gdGNmX2NsYXNzaWZ5KHNrYiwgTlVMTCwgZmwsIFx1MDAyNnJlcywgZmFsc2UpO1xubmV0L3NjaGVkL3NjaF9wcmlvLmM6NDM6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL3NjaF9wcmlvLmMtNDQtXHRcdHN3aXRjaCAoZXJyKSB7XG4tLVxubmV0L3NjaGVkL3NjaF9wcmlvLmM9Njk9cHJpb19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpXG4tLVxubmV0L3NjaGVkL3NjaF9wcmlvLmMtNzUtXHRxZGlzYyA9IHByaW9fY2xhc3NpZnkoc2tiLCBzY2gsIFx1MDAyNnJldCk7XG5uZXQvc2NoZWQvc2NoX3ByaW8uYzo3NjojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXG5uZXQvc2NoZWQvc2NoX3ByaW8uYy03Ny1cdGlmIChxZGlzYyA9PSBOVUxMKSB7XG4tLVxubmV0L3NjaGVkL3NjaF9xZnEuYz02OTQ9c3RhdGljIHN0cnVjdCBxZnFfY2xhc3MgKnFmcV9jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbi0tXG5uZXQvc2NoZWQvc2NoX3FmcS5jLTcxMy1cdGlmIChyZXN1bHQgXHUwMDNlPSAwKSB7XG5uZXQvc2NoZWQvc2NoX3FmcS5jOjcxNDojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXG5uZXQvc2NoZWQvc2NoX3FmcS5jLTcxNS1cdFx0c3dpdGNoIChyZXN1bHQpIHtcbi0tXG5uZXQvc2NoZWQvc2NoX3NmYi5jPTI1Nz1zdGF0aWMgYm9vbCBzZmJfY2xhc3NpZnkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRjZl9wcm90byAqZmwsXG4tLVxubmV0L3NjaGVkL3NjaF9zZmIuYy0yNjQtXHRpZiAocmVzdWx0IFx1MDAzZT0gMCkge1xubmV0L3NjaGVkL3NjaF9zZmIuYzoyNjU6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL3NjaF9zZmIuYy0yNjYtXHRcdHN3aXRjaCAocmVzdWx0KSB7XG4tLVxubmV0L3NjaGVkL3NjaF9zZnEuYz0xNTY9c3RhdGljIHVuc2lnbmVkIGludCBzZnFfY2xhc3NpZnkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4tLVxubmV0L3NjaGVkL3NjaF9zZnEuYy0xNzUtXHRpZiAocmVzdWx0IFx1MDAzZT0gMCkge1xubmV0L3NjaGVkL3NjaF9zZnEuYzoxNzY6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxubmV0L3NjaGVkL3NjaF9zZnEuYy0xNzctXHRcdHN3aXRjaCAocmVzdWx0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA4MDYKCQkJCQkJCW91dHB1dDogMjEwCgkJCQkJCQl0aG91Z2h0czogNzIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGVkaXQgQWN0aW9uIE9mZmxvYWQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggcmVsYXRlZCB0byB0aGUgVEMgcGVkaXQgYWN0aW9uIG9mZmxvYWRpbmcuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGludm9sdmUgc29tZSByYWNlIGNvbmRpdGlvbiBhbmQgYnVmZmVyIG92ZXJmbG93IGZpeGVzLiBMZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgbG9naWMuCgpGaXJzdCwgdGhlIGNvbmZpZ3MgYXJlIGtleTogYE5FVF9DTFNfQUNUYCBhbmQgYE5FVF9BQ1RfUEVESVRgLiBSaWdodCwgdGhlc2UgYXJlIHRoZSBvbmVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoYXQgc3RyYWlnaHQuIGBORVRfQ0xTYCBpcyBhbHNvIGludm9sdmVkLCBzcGVjaWZpY2FsbHkgZm9yIGBjbHNfYXBpLmNgLiBOb3csIGBORVRfQ0xTYCBpcyByZWFsbHkganVzdCB0aGUgYmFzZSBmb3IgY2xhc3NpZmllcnMsIEkgZG9uJiMzOTt0IG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoYXQgb25lIHJpZ2h0IG5vdy4gQW5kLCBmb3IgZ29vZCBtZWFzdXJlLCBpdCYjMzk7cyB3b3J0aCBub3RpbmcgdGhhdCBgTkVUX1NDSF9JTkdSRVNTYCBtaWdodCBiZSBoZWxwZnVsIGZvciB0ZXN0aW5nIFRDIGFjdGlvbnMsIGJ1dCBpdCYjMzk7cyBub3QgZGlyZWN0bHkgcGFydCBvZiB0aGUgY29yZSBwYXRjaC4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIHN5bWJvbHMgYWZmZWN0ZWQuIFRoZSBjcnVjaWFsIHBhcnQgaXMgdGhpcyBgdGNmX3BlZGl0X25rZXlzX2xvY2tlZGAgd2hpY2ggaXMgdXNlZCBieSBzb21lIGtleSBmdW5jdGlvbnMuIFNwZWNpZmljYWxseSwgSSYjMzk7dmUgZ290IHRvIGNoZWNrIGB0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlYCBpbiBgbmV0L3NjaGVkL2FjdF9hcGkuY2AsIGB0Y2ZfcGVkaXRfb2ZmbG9hZF9hY3Rfc2V0dXBgIGluIGBuZXQvc2NoZWQvYWN0X3BlZGl0LmNgLCBhbmQgYHRjZl9leHRzX251bV9hY3Rpb25zYCBpbiBgbmV0L3NjaGVkL2Nsc19hcGkuY2AuIEFsc28gaW1wb3J0YW50IGlzIGB0Y19zZXR1cF9hY3Rpb25gIGluIGBuZXQvc2NoZWQvY2xzX2FwaS5jYCwgd2hpY2ggY2FsbHMgdGhlIG9mZmxvYWQgc2V0dXAuIEkgc2VlIHRoYXQgaXQgY2hlY2tzIGBqICZndDs9IGZsb3dfYWN0aW9uLSZndDtudW1fZW50cmllc2AgYW5kIHJldHVybnMgYC1FTk9TUENgIHdoZW4gdGhlcmUmIzM5O3MgYW4gaXNzdWUgd2l0aCB0aGUgbnVtYmVyIG9mIGVudHJpZXMuCgpTbyBJIHRoaW5rIHRoZSBmb2N1cyBzaG91bGQgYmUgb24gdGhlc2U6IGB0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlYCwgYHRjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cGAsIGB0Y2ZfZXh0c19udW1fYWN0aW9uc2AsIGFuZCBgdGNfc2V0dXBfYWN0aW9uYC4gQWgsIGB0Y2ZfcGVkaXRfbmtleXNfbG9ja2VkYCBpcyBpbmxpbmUsIHNvIGl0IHdvbiYjMzk7dCBiZSBpbiB0aGUgc3ltYm9sIHRhYmxlLiBJdCYjMzk7cyBiYXNpY2FsbHkgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCBJJiMzOTttIGFscmVhZHkgYXdhcmUgb2YgdGhhdCwgdGhvdWdoLgoKSSYjMzk7bSB2ZXJpZnlpbmcgdGhhdCB0aGVzZSBhcmUgdGhlIG9ubHkgZnVuY3Rpb25zIG1vZGlmaWVkLCBhbmQgaXQgc2VlbXMgdGhhdCBpcyB0aGUgY2FzZS4KCkluIHRlcm1zIG9mIGNvbmZpZ3MsIEkgaGF2ZSBjb25maXJtZWQgYE5FVF9DTFNfQUNUYCBhbmQgYE5FVF9BQ1RfUEVESVRgIGFyZSBzdWZmaWNpZW50LgoKTXkgcmVhc29uaW5nPyBUaGlzIHBhdGNoIGlzIGZpeGluZyBhIHJlYWwgaXNzdWXigJRhIHJhY2UgY29uZGl0aW9uIGFuZCBhIGJ1ZmZlciBvdmVyZmxvdy4gSXQmIzM5O3MgdG91Y2hpbmcgcmVhY2hhYmxlIGNvZGUgd2l0aGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgc28gaXQmIzM5O3MgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIEkmIzM5O20gZ29pbmcgdG8gYmUga2VlcGluZyB0aGVzZSBzeW1ib2xzIGluIG1pbmQsIGFuZCBJJiMzOTtsbCB1c2UgYHNldC1yZXN1bHRzYCBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDssCiAgICAmIzM0O05FVF9BQ1RfUEVESVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlJiMzNDssCiAgICAmIzM0O3RjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cCYjMzQ7LAogICAgJiMzNDt0Y2ZfZXh0c19udW1fYWN0aW9ucyYjMzQ7LAogICAgJiMzNDt0Y19zZXR1cF9hY3Rpb24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBhbmQgYnVmZmVyIG92ZXJmbG93IGluIHRoZSBUQyBwZWRpdCBhY3Rpb24gb2ZmbG9hZGluZyBjb2RlLiBJdCBtb2RpZmllcyBgdGNfc2V0dXBfYWN0aW9uYCwgYHRjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cGAsIGB0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlYCwgYW5kIGB0Y2ZfZXh0c19udW1fYWN0aW9uc2AgdG8gdXNlIGEgbG9ja2VkIHZlcnNpb24gb2YgYHRjZl9wZWRpdF9ua2V5c2AgYW5kIGFkZHMgYm91bmRzIGNoZWNraW5nIGZvciBmbG93IGFjdGlvbiBlbnRyaWVzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBjb2RlIGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgc28gaXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0NMU19BQ1QmIzM0OywKICAgICYjMzQ7TkVUX0FDVF9QRURJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjZl9vZmZsb2FkX2FjdF9udW1fYWN0aW9uc19zaW5nbGUmIzM0OywKICAgICYjMzQ7dGNmX3BlZGl0X29mZmxvYWRfYWN0X3NldHVwJiMzNDssCiAgICAmIzM0O3RjZl9leHRzX251bV9hY3Rpb25zJiMzNDssCiAgICAmIzM0O3RjX3NldHVwX2FjdGlvbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGFuZCBidWZmZXIgb3ZlcmZsb3cgaW4gdGhlIFRDIHBlZGl0IGFjdGlvbiBvZmZsb2FkaW5nIGNvZGUuIEl0IG1vZGlmaWVzIGB0Y19zZXR1cF9hY3Rpb25gLCBgdGNmX3BlZGl0X29mZmxvYWRfYWN0X3NldHVwYCwgYHRjZl9vZmZsb2FkX2FjdF9udW1fYWN0aW9uc19zaW5nbGVgLCBhbmQgYHRjZl9leHRzX251bV9hY3Rpb25zYCB0byB1c2UgYSBsb2NrZWQgdmVyc2lvbiBvZiBgdGNmX3BlZGl0X25rZXlzYCBhbmQgYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIGZsb3cgYWN0aW9uIGVudHJpZXMuIFRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGNvZGUgaW4gdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDFUMjM6NDc6MzMuODQ1OTU2MDAxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjExMjc0MzMyNTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0NMU19BQ1RcIixcbiAgICBcIk5FVF9BQ1RfUEVESVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlXCIsXG4gICAgXCJ0Y2ZfcGVkaXRfb2ZmbG9hZF9hY3Rfc2V0dXBcIixcbiAgICBcInRjZl9leHRzX251bV9hY3Rpb25zXCIsXG4gICAgXCJ0Y19zZXR1cF9hY3Rpb25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGFuZCBidWZmZXIgb3ZlcmZsb3cgaW4gdGhlIFRDIHBlZGl0IGFjdGlvbiBvZmZsb2FkaW5nIGNvZGUuIEl0IG1vZGlmaWVzIGB0Y19zZXR1cF9hY3Rpb25gLCBgdGNmX3BlZGl0X29mZmxvYWRfYWN0X3NldHVwYCwgYHRjZl9vZmZsb2FkX2FjdF9udW1fYWN0aW9uc19zaW5nbGVgLCBhbmQgYHRjZl9leHRzX251bV9hY3Rpb25zYCB0byB1c2UgYSBsb2NrZWQgdmVyc2lvbiBvZiBgdGNmX3BlZGl0X25rZXlzYCBhbmQgYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIGZsb3cgYWN0aW9uIGVudHJpZXMuIFRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGNvZGUgaW4gdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMzo0NzozMy44NDU5NjA1MjFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MzU5MDM0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDRjOTZkYWVjOGExZjIyYWRjZjZmMTVhYWU1ZmRkOTZjZWYzOWEwYzBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMSAyMzo0NzozMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC90Y19hY3QvdGNfcGVkaXQuaCBiL2luY2x1ZGUvbmV0L3RjX2FjdC90Y19wZWRpdC5oXFxuaW5kZXggY2I3YjgyZjJjYmM3ZmQuLjk3NzU0ZWEwYTgyNzlkIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L3RjX2FjdC90Y19wZWRpdC5oXFxuKysrIGIvaW5jbHVkZS9uZXQvdGNfYWN0L3RjX3BlZGl0LmhcXG5AQCAtMzcsMTcgKzM3LDE1IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc190Y2ZfcGVkaXQoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSlcXG4gXFx0cmV0dXJuIGZhbHNlO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW5saW5lIGludCB0Y2ZfcGVkaXRfbmtleXMoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSlcXG4rLyogTXVzdCBiZSBjYWxsZWQgd2l0aCBhY3QtXFx1MDAzZXRjZmFfbG9jayBoZWxkIHRvIGVuc3VyZSBjb25zaXN0ZW5jeSBvZiBwYXJhbGxlbFxcbisgKiByZWFkcyBvZiB0aGUgc2FtZSBhY3Rpb24ncyBwZWRpdCBrZXlzIChlLmcuIGZsb3dfb2ZmbG9hZCBjb3VudCB2cyBmaWxsKS5cXG4rICogTm90ZSwgdGhpcyBpcyBvbmx5IHVzZWQgZm9yIHBlZGl0IG9mZmxvYWQuXFxuKyAqL1xcbitzdGF0aWMgaW5saW5lIGludCB0Y2ZfcGVkaXRfbmtleXNfbG9ja2VkKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEpXFxuIHtcXG4tXFx0c3RydWN0IHRjZl9wZWRpdF9wYXJtcyAqcGFybXM7XFxuLVxcdGludCBua2V5cztcXG4tXFxuLVxcdHJjdV9yZWFkX2xvY2soKTtcXG4tXFx0cGFybXMgPSB0b19wZWRpdF9wYXJtcyhhKTtcXG4tXFx0bmtleXMgPSBwYXJtcy1cXHUwMDNldGNmcF9ua2V5cztcXG4tXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuLVxcbi1cXHRyZXR1cm4gbmtleXM7XFxuK1xcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNmEtXFx1MDAzZXRjZmFfbG9jayk7XFxuK1xcdHJldHVybiByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHRvX3BlZGl0KGEpLVxcdTAwM2VwYXJtcyxcXG4rXFx0XFx0XFx0XFx0XFx0IGxvY2tkZXBfaXNfaGVsZChcXHUwMDI2YS1cXHUwMDNldGNmYV9sb2NrKSktXFx1MDAzZXRjZnBfbmtleXM7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbmxpbmUgdTMyIHRjZl9wZWRpdF9odHlwZShjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphLCBpbnQgaW5kZXgpXFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfYXBpLmMgYi9uZXQvc2NoZWQvYWN0X2FwaS5jXFxuaW5kZXggYjY4YmUxNDNhMDY3ZjkuLmYxNDE2MzRkZjIxNDg5IDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9hY3RfYXBpLmNcXG4rKysgYi9uZXQvc2NoZWQvYWN0X2FwaS5jXFxuQEAgLTE0OCwxMCArMTQ4LDE1IEBAIHN0YXRpYyB2b2lkIG9mZmxvYWRfYWN0aW9uX2h3X2NvdW50X2RlYyhzdHJ1Y3QgdGNfYWN0aW9uICphY3QsXFxuIFxcbiBzdGF0aWMgdW5zaWduZWQgaW50IHRjZl9vZmZsb2FkX2FjdF9udW1fYWN0aW9uc19zaW5nbGUoc3RydWN0IHRjX2FjdGlvbiAqYWN0KVxcbiB7XFxuLVxcdGlmIChpc190Y2ZfcGVkaXQoYWN0KSlcXG4tXFx0XFx0cmV0dXJuIHRjZl9wZWRpdF9ua2V5cyhhY3QpO1xcbi1cXHRlbHNlXFxuLVxcdFxcdHJldHVybiAxO1xcbitcXHR1bnNpZ25lZCBpbnQgY291bnQ7XFxuK1xcbitcXHRpZiAoaXNfdGNmX3BlZGl0KGFjdCkpIHtcXG4rXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZhY3QtXFx1MDAzZXRjZmFfbG9jayk7XFxuK1xcdFxcdGNvdW50ID0gdGNmX3BlZGl0X25rZXlzX2xvY2tlZChhY3QpO1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2YWN0LVxcdTAwM2V0Y2ZhX2xvY2spO1xcbitcXHRcXHRyZXR1cm4gY291bnQ7XFxuK1xcdH1cXG4rXFx0cmV0dXJuIDE7XFxuIH1cXG4gXFxuIHN0YXRpYyBib29sIHRjX2FjdF9za2lwX2h3KHUzMiBmbGFncylcXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9wZWRpdC5jIGIvbmV0L3NjaGVkL2FjdF9wZWRpdC5jXFxuaW5kZXggMGQ2NTJkZWE0YTY5MWYuLmQ0ZDQ3YTk5MjFmNDU3IDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9hY3RfcGVkaXQuY1xcbisrKyBiL25ldC9zY2hlZC9hY3RfcGVkaXQuY1xcbkBAIC01NjcsOSArNTY3LDE4IEBAIHN0YXRpYyBpbnQgdGNmX3BlZGl0X29mZmxvYWRfYWN0X3NldHVwKHN0cnVjdCB0Y19hY3Rpb24gKmFjdCwgdm9pZCAqZW50cnlfZGF0YSxcXG4ge1xcbiBcXHRpZiAoYmluZCkge1xcbiBcXHRcXHRzdHJ1Y3QgZmxvd19hY3Rpb25fZW50cnkgKmVudHJ5ID0gZW50cnlfZGF0YTtcXG4rXFx0XFx0aW50IG5rZXlzID0gdGNmX3BlZGl0X25rZXlzX2xvY2tlZChhY3QpO1xcbiBcXHRcXHRpbnQgaztcXG4gXFxuLVxcdFxcdGZvciAoayA9IDA7IGsgXFx1MDAzYyB0Y2ZfcGVkaXRfbmtleXMoYWN0KTsgaysrKSB7XFxuK1xcdFxcdC8qIElmIHRoZSByZXF1aXJlZCBrZXlzIGV4Y2VlZCB0aGUgcmVtYWluaW5nIGNhcGFjaXR5IHJldHVyblxcbitcXHRcXHQgKiAtRU5PU1BDIHRvIGFib3J0IHRoZSBvZmZsb2FkIGFuZCBmYWxsYmFjayB0byBzb2Z0d2FyZS5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmIChua2V5cyBcXHUwMDNlICppbmRleF9pbmMpIHtcXG4rXFx0XFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXFxcIk5vdCBlbm91Z2ggc3BhY2UgdG8gb2ZmbG9hZCBhbGwgcGVkaXQga2V5c1xcXCIpO1xcbitcXHRcXHRcXHRyZXR1cm4gLUVOT1NQQztcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0Zm9yIChrID0gMDsgayBcXHUwMDNjIG5rZXlzOyBrKyspIHtcXG4gXFx0XFx0XFx0c3dpdGNoICh0Y2ZfcGVkaXRfY21kKGFjdCwgaykpIHtcXG4gXFx0XFx0XFx0Y2FzZSBUQ0FfUEVESVRfS0VZX0VYX0NNRF9TRVQ6XFxuIFxcdFxcdFxcdFxcdGVudHJ5LVxcdTAwM2VpZCA9IEZMT1dfQUNUSU9OX01BTkdMRTtcXG5AQCAtNjA2LDcgKzYxNSw3IEBAIHN0YXRpYyBpbnQgdGNmX3BlZGl0X29mZmxvYWRfYWN0X3NldHVwKHN0cnVjdCB0Y19hY3Rpb24gKmFjdCwgdm9pZCAqZW50cnlfZGF0YSxcXG4gXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXHRcXHR9XFxuIFxcbi1cXHRcXHRmb3IgKGsgPSAxOyBrIFxcdTAwM2MgdGNmX3BlZGl0X25rZXlzKGFjdCk7IGsrKykge1xcbitcXHRcXHRmb3IgKGsgPSAxOyBrIFxcdTAwM2MgdGNmX3BlZGl0X25rZXlzX2xvY2tlZChhY3QpOyBrKyspIHtcXG4gXFx0XFx0XFx0aWYgKGNtZCAhPSB0Y2ZfcGVkaXRfY21kKGFjdCwgaykpIHtcXG4gXFx0XFx0XFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXFxcIlVuc3VwcG9ydGVkIHBlZGl0IGNvbW1hbmQgb2ZmbG9hZFxcXCIpO1xcbiBcXHRcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfYXBpLmMgYi9uZXQvc2NoZWQvY2xzX2FwaS5jXFxuaW5kZXggM2U2NzYwMGE0YTFhMTAuLmZmZWVhNmRiODMzNzQ3IDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9jbHNfYXBpLmNcXG4rKysgYi9uZXQvc2NoZWQvY2xzX2FwaS5jXFxuQEAgLTM4ODYsMTIgKzM4ODYsMjEgQEAgaW50IHRjX3NldHVwX2FjdGlvbihzdHJ1Y3QgZmxvd19hY3Rpb24gKmZsb3dfYWN0aW9uLFxcbiBcXG4gXFx0XFx0ZW50cnkgPSBcXHUwMDI2Zmxvd19hY3Rpb24tXFx1MDAzZWVudHJpZXNbal07XFxuIFxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2YWN0LVxcdTAwM2V0Y2ZhX2xvY2spO1xcbitcXG4rXFx0XFx0LyogQWJvcnQgdGhlIG9mZmxvYWQgaWYgd2UgaGF2ZSBleGhhdXN0ZWQgdGhlIGFsbG9jYXRlZCBjYXBhY2l0eSAqL1xcbitcXHRcXHRpZiAoaiBcXHUwMDNlPSBmbG93X2FjdGlvbi1cXHUwMDNlbnVtX2VudHJpZXMpIHtcXG4rXFx0XFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXFxcIkZsb3cgYWN0aW9uIGJ1ZmZlciBvdmVyZmxvd1xcXCIpO1xcbitcXHRcXHRcXHRlcnIgPSAtRU5PU1BDO1xcbitcXHRcXHRcXHRnb3RvIGVycl9vdXRfbG9ja2VkO1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHRlcnIgPSB0Y2ZfYWN0X2dldF91c2VyX2Nvb2tpZShlbnRyeSwgYWN0KTtcXG4gXFx0XFx0aWYgKGVycilcXG4gXFx0XFx0XFx0Z290byBlcnJfb3V0X2xvY2tlZDtcXG4gXFxuLVxcdFxcdGluZGV4ID0gMDtcXG4tXFx0XFx0ZXJyID0gdGNfc2V0dXBfb2ZmbG9hZF9hY3QoYWN0LCBlbnRyeSwgXFx1MDAyNmluZGV4LCBleHRhY2spO1xcbitcXHRcXHRpbmRleCA9IGZsb3dfYWN0aW9uLVxcdTAwM2VudW1fZW50cmllcyAtIGo7XFxuK1xcdFxcdGVyciA9IHRjX3NldHVwX29mZmxvYWRfYWN0KGFjdCwgZW50cnksIFxcdTAwMjZpbmRleCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgZXh0YWNrKTtcXG4gXFx0XFx0aWYgKGVycilcXG4gXFx0XFx0XFx0Z290byBlcnJfb3V0X2xvY2tlZDtcXG4gXFxuQEAgLTM5NDUsMTAgKzM5NTQsMTMgQEAgdW5zaWduZWQgaW50IHRjZl9leHRzX251bV9hY3Rpb25zKHN0cnVjdCB0Y2ZfZXh0cyAqZXh0cylcXG4gXFx0aW50IGk7XFxuIFxcbiBcXHR0Y2ZfZXh0c19mb3JfZWFjaF9hY3Rpb24oaSwgYWN0LCBleHRzKSB7XFxuLVxcdFxcdGlmIChpc190Y2ZfcGVkaXQoYWN0KSlcXG4tXFx0XFx0XFx0bnVtX2FjdHMgKz0gdGNmX3BlZGl0X25rZXlzKGFjdCk7XFxuLVxcdFxcdGVsc2VcXG4rXFx0XFx0aWYgKGlzX3RjZl9wZWRpdChhY3QpKSB7XFxuK1xcdFxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2YWN0LVxcdTAwM2V0Y2ZhX2xvY2spO1xcbitcXHRcXHRcXHRudW1fYWN0cyArPSB0Y2ZfcGVkaXRfbmtleXNfbG9ja2VkKGFjdCk7XFxuK1xcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZhY3QtXFx1MDAzZXRjZmFfbG9jayk7XFxuK1xcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdG51bV9hY3RzKys7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXHRyZXR1cm4gbnVtX2FjdHM7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjM6NDc6MzQuNDIwMjc5ODYzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDU1MzEwMDcxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfQ0xTX0FDVFwiLFxuICAgIFwiTkVUX0FDVF9QRURJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjZl9vZmZsb2FkX2FjdF9udW1fYWN0aW9uc19zaW5nbGVcIixcbiAgICBcInRjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cFwiLFxuICAgIFwidGNmX2V4dHNfbnVtX2FjdGlvbnNcIixcbiAgICBcInRjX3NldHVwX2FjdGlvblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gYW5kIGJ1ZmZlciBvdmVyZmxvdyBpbiB0aGUgVEMgcGVkaXQgYWN0aW9uIG9mZmxvYWRpbmcgY29kZS4gSXQgbW9kaWZpZXMgYHRjX3NldHVwX2FjdGlvbmAsIGB0Y2ZfcGVkaXRfb2ZmbG9hZF9hY3Rfc2V0dXBgLCBgdGNmX29mZmxvYWRfYWN0X251bV9hY3Rpb25zX3NpbmdsZWAsIGFuZCBgdGNmX2V4dHNfbnVtX2FjdGlvbnNgIHRvIHVzZSBhIGxvY2tlZCB2ZXJzaW9uIG9mIGB0Y2ZfcGVkaXRfbmtleXNgIGFuZCBhZGRzIGJvdW5kcyBjaGVja2luZyBmb3IgZmxvdyBhY3Rpb24gZW50cmllcy4gVGhpcyBpcyBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgY29kZSBpbiB0aGUgbmV0d29ya2luZyBzdWJzeXN0ZW0sIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNGM5NmRhZWM4YTFmMjJhZGNmNmYxNWFhZTVmZGQ5NmNlZjM5YTBjMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMjM6NDc6MzIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC90Y19hY3QvdGNfcGVkaXQuaCBiL2luY2x1ZGUvbmV0L3RjX2FjdC90Y19wZWRpdC5oXG5pbmRleCBjYjdiODJmMmNiYzdmZC4uOTc3NTRlYTBhODI3OWQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC90Y19hY3QvdGNfcGVkaXQuaFxuKysrIGIvaW5jbHVkZS9uZXQvdGNfYWN0L3RjX3BlZGl0LmhcbkBAIC0zNywxNyArMzcsMTUgQEAgc3RhdGljIGlubGluZSBib29sIGlzX3RjZl9wZWRpdChjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphKVxuIFx0cmV0dXJuIGZhbHNlO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIGludCB0Y2ZfcGVkaXRfbmtleXMoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSlcbisvKiBNdXN0IGJlIGNhbGxlZCB3aXRoIGFjdC1cdTAwM2V0Y2ZhX2xvY2sgaGVsZCB0byBlbnN1cmUgY29uc2lzdGVuY3kgb2YgcGFyYWxsZWxcbisgKiByZWFkcyBvZiB0aGUgc2FtZSBhY3Rpb24ncyBwZWRpdCBrZXlzIChlLmcuIGZsb3dfb2ZmbG9hZCBjb3VudCB2cyBmaWxsKS5cbisgKiBOb3RlLCB0aGlzIGlzIG9ubHkgdXNlZCBmb3IgcGVkaXQgb2ZmbG9hZC5cbisgKi9cbitzdGF0aWMgaW5saW5lIGludCB0Y2ZfcGVkaXRfbmtleXNfbG9ja2VkKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEpXG4ge1xuLVx0c3RydWN0IHRjZl9wZWRpdF9wYXJtcyAqcGFybXM7XG4tXHRpbnQgbmtleXM7XG4tXG4tXHRyY3VfcmVhZF9sb2NrKCk7XG4tXHRwYXJtcyA9IHRvX3BlZGl0X3Bhcm1zKGEpO1xuLVx0bmtleXMgPSBwYXJtcy1cdTAwM2V0Y2ZwX25rZXlzO1xuLVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tXG4tXHRyZXR1cm4gbmtleXM7XG4rXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmEtXHUwMDNldGNmYV9sb2NrKTtcbitcdHJldHVybiByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHRvX3BlZGl0KGEpLVx1MDAzZXBhcm1zLFxuK1x0XHRcdFx0XHQgbG9ja2RlcF9pc19oZWxkKFx1MDAyNmEtXHUwMDNldGNmYV9sb2NrKSktXHUwMDNldGNmcF9ua2V5cztcbiB9XG4gXG4gc3RhdGljIGlubGluZSB1MzIgdGNmX3BlZGl0X2h0eXBlKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEsIGludCBpbmRleClcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2FwaS5jIGIvbmV0L3NjaGVkL2FjdF9hcGkuY1xuaW5kZXggYjY4YmUxNDNhMDY3ZjkuLmYxNDE2MzRkZjIxNDg5IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL2FjdF9hcGkuY1xuKysrIGIvbmV0L3NjaGVkL2FjdF9hcGkuY1xuQEAgLTE0OCwxMCArMTQ4LDE1IEBAIHN0YXRpYyB2b2lkIG9mZmxvYWRfYWN0aW9uX2h3X2NvdW50X2RlYyhzdHJ1Y3QgdGNfYWN0aW9uICphY3QsXG4gXG4gc3RhdGljIHVuc2lnbmVkIGludCB0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlKHN0cnVjdCB0Y19hY3Rpb24gKmFjdClcbiB7XG4tXHRpZiAoaXNfdGNmX3BlZGl0KGFjdCkpXG4tXHRcdHJldHVybiB0Y2ZfcGVkaXRfbmtleXMoYWN0KTtcbi1cdGVsc2Vcbi1cdFx0cmV0dXJuIDE7XG4rXHR1bnNpZ25lZCBpbnQgY291bnQ7XG4rXG4rXHRpZiAoaXNfdGNmX3BlZGl0KGFjdCkpIHtcbitcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFjdC1cdTAwM2V0Y2ZhX2xvY2spO1xuK1x0XHRjb3VudCA9IHRjZl9wZWRpdF9ua2V5c19sb2NrZWQoYWN0KTtcbitcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YWN0LVx1MDAzZXRjZmFfbG9jayk7XG4rXHRcdHJldHVybiBjb3VudDtcbitcdH1cbitcdHJldHVybiAxO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCB0Y19hY3Rfc2tpcF9odyh1MzIgZmxhZ3MpXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9wZWRpdC5jIGIvbmV0L3NjaGVkL2FjdF9wZWRpdC5jXG5pbmRleCAwZDY1MmRlYTRhNjkxZi4uZDRkNDdhOTkyMWY0NTcgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvYWN0X3BlZGl0LmNcbisrKyBiL25ldC9zY2hlZC9hY3RfcGVkaXQuY1xuQEAgLTU2Nyw5ICs1NjcsMTggQEAgc3RhdGljIGludCB0Y2ZfcGVkaXRfb2ZmbG9hZF9hY3Rfc2V0dXAoc3RydWN0IHRjX2FjdGlvbiAqYWN0LCB2b2lkICplbnRyeV9kYXRhLFxuIHtcbiBcdGlmIChiaW5kKSB7XG4gXHRcdHN0cnVjdCBmbG93X2FjdGlvbl9lbnRyeSAqZW50cnkgPSBlbnRyeV9kYXRhO1xuK1x0XHRpbnQgbmtleXMgPSB0Y2ZfcGVkaXRfbmtleXNfbG9ja2VkKGFjdCk7XG4gXHRcdGludCBrO1xuIFxuLVx0XHRmb3IgKGsgPSAwOyBrIFx1MDAzYyB0Y2ZfcGVkaXRfbmtleXMoYWN0KTsgaysrKSB7XG4rXHRcdC8qIElmIHRoZSByZXF1aXJlZCBrZXlzIGV4Y2VlZCB0aGUgcmVtYWluaW5nIGNhcGFjaXR5IHJldHVyblxuK1x0XHQgKiAtRU5PU1BDIHRvIGFib3J0IHRoZSBvZmZsb2FkIGFuZCBmYWxsYmFjayB0byBzb2Z0d2FyZS5cbitcdFx0ICovXG4rXHRcdGlmIChua2V5cyBcdTAwM2UgKmluZGV4X2luYykge1xuK1x0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwiTm90IGVub3VnaCBzcGFjZSB0byBvZmZsb2FkIGFsbCBwZWRpdCBrZXlzXCIpO1xuK1x0XHRcdHJldHVybiAtRU5PU1BDO1xuK1x0XHR9XG4rXG4rXHRcdGZvciAoayA9IDA7IGsgXHUwMDNjIG5rZXlzOyBrKyspIHtcbiBcdFx0XHRzd2l0Y2ggKHRjZl9wZWRpdF9jbWQoYWN0LCBrKSkge1xuIFx0XHRcdGNhc2UgVENBX1BFRElUX0tFWV9FWF9DTURfU0VUOlxuIFx0XHRcdFx0ZW50cnktXHUwMDNlaWQgPSBGTE9XX0FDVElPTl9NQU5HTEU7XG5AQCAtNjA2LDcgKzYxNSw3IEBAIHN0YXRpYyBpbnQgdGNmX3BlZGl0X29mZmxvYWRfYWN0X3NldHVwKHN0cnVjdCB0Y19hY3Rpb24gKmFjdCwgdm9pZCAqZW50cnlfZGF0YSxcbiBcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHRcdH1cbiBcbi1cdFx0Zm9yIChrID0gMTsgayBcdTAwM2MgdGNmX3BlZGl0X25rZXlzKGFjdCk7IGsrKykge1xuK1x0XHRmb3IgKGsgPSAxOyBrIFx1MDAzYyB0Y2ZfcGVkaXRfbmtleXNfbG9ja2VkKGFjdCk7IGsrKykge1xuIFx0XHRcdGlmIChjbWQgIT0gdGNmX3BlZGl0X2NtZChhY3QsIGspKSB7XG4gXHRcdFx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcIlVuc3VwcG9ydGVkIHBlZGl0IGNvbW1hbmQgb2ZmbG9hZFwiKTtcbiBcdFx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvY2xzX2FwaS5jIGIvbmV0L3NjaGVkL2Nsc19hcGkuY1xuaW5kZXggM2U2NzYwMGE0YTFhMTAuLmZmZWVhNmRiODMzNzQ3IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL2Nsc19hcGkuY1xuKysrIGIvbmV0L3NjaGVkL2Nsc19hcGkuY1xuQEAgLTM4ODYsMTIgKzM4ODYsMjEgQEAgaW50IHRjX3NldHVwX2FjdGlvbihzdHJ1Y3QgZmxvd19hY3Rpb24gKmZsb3dfYWN0aW9uLFxuIFxuIFx0XHRlbnRyeSA9IFx1MDAyNmZsb3dfYWN0aW9uLVx1MDAzZWVudHJpZXNbal07XG4gXHRcdHNwaW5fbG9ja19iaChcdTAwMjZhY3QtXHUwMDNldGNmYV9sb2NrKTtcbitcbitcdFx0LyogQWJvcnQgdGhlIG9mZmxvYWQgaWYgd2UgaGF2ZSBleGhhdXN0ZWQgdGhlIGFsbG9jYXRlZCBjYXBhY2l0eSAqL1xuK1x0XHRpZiAoaiBcdTAwM2U9IGZsb3dfYWN0aW9uLVx1MDAzZW51bV9lbnRyaWVzKSB7XG4rXHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJGbG93IGFjdGlvbiBidWZmZXIgb3ZlcmZsb3dcIik7XG4rXHRcdFx0ZXJyID0gLUVOT1NQQztcbitcdFx0XHRnb3RvIGVycl9vdXRfbG9ja2VkO1xuK1x0XHR9XG4rXG4gXHRcdGVyciA9IHRjZl9hY3RfZ2V0X3VzZXJfY29va2llKGVudHJ5LCBhY3QpO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdGdvdG8gZXJyX291dF9sb2NrZWQ7XG4gXG4tXHRcdGluZGV4ID0gMDtcbi1cdFx0ZXJyID0gdGNfc2V0dXBfb2ZmbG9hZF9hY3QoYWN0LCBlbnRyeSwgXHUwMDI2aW5kZXgsIGV4dGFjayk7XG4rXHRcdGluZGV4ID0gZmxvd19hY3Rpb24tXHUwMDNlbnVtX2VudHJpZXMgLSBqO1xuK1x0XHRlcnIgPSB0Y19zZXR1cF9vZmZsb2FkX2FjdChhY3QsIGVudHJ5LCBcdTAwMjZpbmRleCxcbitcdFx0XHRcdFx0ICAgZXh0YWNrKTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRnb3RvIGVycl9vdXRfbG9ja2VkO1xuIFxuQEAgLTM5NDUsMTAgKzM5NTQsMTMgQEAgdW5zaWduZWQgaW50IHRjZl9leHRzX251bV9hY3Rpb25zKHN0cnVjdCB0Y2ZfZXh0cyAqZXh0cylcbiBcdGludCBpO1xuIFxuIFx0dGNmX2V4dHNfZm9yX2VhY2hfYWN0aW9uKGksIGFjdCwgZXh0cykge1xuLVx0XHRpZiAoaXNfdGNmX3BlZGl0KGFjdCkpXG4tXHRcdFx0bnVtX2FjdHMgKz0gdGNmX3BlZGl0X25rZXlzKGFjdCk7XG4tXHRcdGVsc2VcbitcdFx0aWYgKGlzX3RjZl9wZWRpdChhY3QpKSB7XG4rXHRcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFjdC1cdTAwM2V0Y2ZhX2xvY2spO1xuK1x0XHRcdG51bV9hY3RzICs9IHRjZl9wZWRpdF9ua2V5c19sb2NrZWQoYWN0KTtcbitcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZhY3QtXHUwMDNldGNmYV9sb2NrKTtcbitcdFx0fSBlbHNlIHtcbiBcdFx0XHRudW1fYWN0cysrO1xuK1x0XHR9XG4gXHR9XG4gXHRyZXR1cm4gbnVtX2FjdHM7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjM6NDc6MzQuNDIwMjgxMzUzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM3MjI3ODk1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBUQyBQZWRpdCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIHNvbWUga2V5IGZpbGVzIGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgdHJhZmZpYyBjb250cm9sIChUQykgcGVkaXQgYWN0aW9uLiBJdCdzIG1vZGlmeWluZyBgaW5jbHVkZS9uZXQvdGNfYWN0L3RjX3BlZGl0LmhgLCBgbmV0L3NjaGVkL2FjdF9hcGkuY2AsIGBuZXQvc2NoZWQvYWN0X3BlZGl0LmNgLCBhbmQgYG5ldC9zY2hlZC9jbHNfYXBpLmNgLiBUaGUgY29yZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgbG9ja2luZyBkb3duIHRoZSBgdGNmX3BlZGl0X25rZXlzYCBmdW5jdGlvbiwgcmVwbGFjaW5nIGl0IHdpdGggYSBsb2NrZWQgdmVyc2lvbiwgYHRjZl9wZWRpdF9ua2V5c19sb2NrZWRgLCB3aGljaCBpcyBhIGdvb2QgbW92ZSB0byBlbnN1cmUgZGF0YSBpbnRlZ3JpdHkgZHVyaW5nIGFjY2Vzcy4gRnVydGhlcm1vcmUsIHRoZXJlIGFyZSBjaGVja3MgYmVpbmcgaW50cm9kdWNlZCBmb3IgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvd3MgaW4gYHRjX3NldHVwX2FjdGlvbmAgYW5kIGB0Y2ZfcGVkaXRfb2ZmbG9hZF9hY3Rfc2V0dXBgLCB3aGljaCBpcyBleGNlbGxlbnQuIEkgYWx3YXlzIGFwcHJlY2lhdGUgcHJvYWN0aXZlIHZ1bG5lcmFiaWxpdHkgbWl0aWdhdGlvbiBsaWtlIHRoaXMuXG5cbkdpdmVuIHRoYXQgdGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgd2l0aGluIHRoZSBUQyBzdWJzeXN0ZW0gcmVsYXRlZCB0byB0aGUgcGVkaXQgYWN0aW9uIGFuZCBvZmZsb2FkaW5nLCBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cblxuU2luY2UgdGhlIGZpbGVzIGFyZSBpbiBgbmV0L3NjaGVkL2AsIEknbGwgY2hlY2sgdGhlIGFzc29jaWF0ZWQgS2NvbmZpZyBmaWxlcy4gYGFjdF9hcGkuY2AgaXMgZW5hYmxlZCBieSBgQ09ORklHX05FVF9DTFNfQUNUYCwgYGFjdF9wZWRpdC5jYCBuZWVkcyBgQ09ORklHX05FVF9BQ1RfUEVESVRgLCBhbmQgYGNsc19hcGkuY2AgZGVwZW5kcyBvbiBgQ09ORklHX05FVF9DTFNgLiBJJ2xsIHVzZSBgZ3JlcHBlcmAgdG8gY29uZmlybSB0aGlzIHF1aWNrbHkgYW5kIGlkZW50aWZ5IHdoaWNoIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBzZXQgdG8gZ2V0IHRoaXMgZnVuY3Rpb25hbGl0eSBlbmFibGVkLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhbGwgdGhlIHJlbGV2YW50IGRlcGVuZGVuY2llcyBzZXQgdG8gZW5zdXJlIEkgaGF2ZSBhIGNvbXBsZXRlIGFuZCB0ZXN0YWJsZSBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ4NiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIzOjQ3OjM5Ljc5MjU2MjEwMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDE0MTU0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRfQUNUX1BFRElUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9NzY0PWNvbmZpZyBORVRfQUNUX05BVFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNzczLVxcbm5ldC9zY2hlZC9LY29uZmlnOjc3NDpjb25maWcgTkVUX0FDVF9QRURJVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc3NS1cXHR0cmlzdGF0ZSBcXFwiUGFja2V0IEVkaXRpbmdcXFwiXFxuLS1cXG5uZXQvc2NoZWQvTWFrZWZpbGU9MTY9b2JqLSQoQ09ORklHX05FVF9BQ1RfTkFUKVxcdCs9IGFjdF9uYXQub1xcbm5ldC9zY2hlZC9NYWtlZmlsZToxNzpvYmotJChDT05GSUdfTkVUX0FDVF9QRURJVClcXHQrPSBhY3RfcGVkaXQub1xcbm5ldC9zY2hlZC9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfTkVUX0FDVF9TSU1QKVxcdCs9IGFjdF9zaW1wbGUub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMzo0NzozOS44NTY3MDkzMjhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODE0MjU3NTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRpdmluZyBpbnRvIHRoZSBUcmFmZmljIENvbnRyb2wgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiB0aGUgY29uZmlndXJhdGlvbiBoZXJlIGZvciB0cmFmZmljIGNvbnRyb2wuIEkgc2VlIHRoYXQgYE5FVF9BQ1RfUEVESVRgIGlzIHRoZSBrZXkgZm9yIHRoZSBQRURJVCBhY3Rpb24sIHRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgYWxzbyBuZWVkIHRvIGVuc3VyZSBgTkVUX0NMU19BQ1RgIGlzIGVuYWJsZWQgYmVjYXVzZSBpdCdzIHJlcXVpcmVkIGZvciBhY3Rpb25zIGluIGdlbmVyYWwuXG5cbk5vdywgbGV0J3MgdHJhY2UgdGhyb3VnaCB0aGUgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGVsZW1lbnRzIGludGVyYWN0LiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHVzYWdlIG9mIGB0Y2ZfcGVkaXRfbmtleXNfbG9ja2VkYCBhbmQgYHRjX3NldHVwX2FjdGlvbmAsIGFuZCBhIGZldyBvdGhlciB0aGluZ3MuXG5cbmB0Y19zZXR1cF9hY3Rpb25gLCB0aGF0J3MgaW4gYG5ldC9zY2hlZC9jbHNfYXBpLmNgLiBHb29kLCB0aGF0IG1ha2VzIHNlbnNlLiBUaGVuIGB0Y2ZfcGVkaXRfb2ZmbG9hZF9hY3Rfc2V0dXBgIGlzIGluIGBuZXQvc2NoZWQvYWN0X3BlZGl0LmNgLiBJJ2xsIHdhbnQgdG8gcmV2aWV3IHRoYXQgb25lIGNhcmVmdWxseS4gSSBzZWUgYHRjZl9vZmZsb2FkX2FjdF9udW1fYWN0aW9uc19zaW5nbGVgIGluIGBuZXQvc2NoZWQvYWN0X2FwaS5jYCwgYW5kIGB0Y2ZfZXh0c19udW1fYWN0aW9uc2AgaXMgYmFjayBpbiBgbmV0L3NjaGVkL2Nsc19hcGkuY2AuXG5cblRvIG1ha2Ugc3VyZSBJJ20gc2hhcnAsIEknbGwgbmVlZCB0byBmb2N1cyBvbiB0aGVzZSBzeW1ib2xzOiBgdGNmX3BlZGl0X29mZmxvYWRfYWN0X3NldHVwYCwgYHRjX3NldHVwX2FjdGlvbmAsIGB0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlYCwgYW5kIGB0Y2ZfZXh0c19udW1fYWN0aW9uc2AuIFRoZXkncmUgdGhlIGNvcmUgb2YgaG93IHRoZSBhY3Rpb24gaXMgc2V0dXAgYW5kIHByb2Nlc3NlZC5cblxuRmluYWxseSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLiBJJ2xsIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBMb29rcyBsaWtlIGBORVRfQ0xTX0FDVGAgaXMgcmVxdWlyZWQgYnkgYGFjdF9hcGkuY2AgYXMgd2VsbC4gVGhhdCBjb25maXJtcyBteSBpbml0aWFsIGFzc2Vzc21lbnQuIE5vdyBJJ2xsIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDMyNCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMzo0Nzo0NC42NzA5NjkzMjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzM1MzI3NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkVUX0NMU19BQ1RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz0zNDc9Y29uZmlnIE5FVF9TQ0hfSU5HUkVTU1xcbm5ldC9zY2hlZC9LY29uZmlnLTM0OC1cXHR0cmlzdGF0ZSBcXFwiSW5ncmVzcy9jbGFzc2lmaWVyLWFjdGlvbiBRZGlzY1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzozNDk6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTM1MC1cXHRzZWxlY3QgTkVUX1hHUkVTU1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NjkwPWNvbmZpZyBORVRfRU1BVENIX0lQVFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNzAxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjcwMjpjb25maWcgTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MDMtXFx0Ym9vbCBcXFwiQWN0aW9uc1xcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTcxNT1jb25maWcgTkVUX0FDVF9QT0xJQ0VcXG5uZXQvc2NoZWQvS2NvbmZpZy03MTYtXFx0dHJpc3RhdGUgXFxcIlRyYWZmaWMgUG9saWNpbmdcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NzE3OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MTgtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NzI2PWNvbmZpZyBORVRfQUNUX0dBQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MjctXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgYWN0aW9uc1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3Mjg6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTcyOS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03NDI9Y29uZmlnIE5FVF9BQ1RfTUlSUkVEXFxubmV0L3NjaGVkL0tjb25maWctNzQzLVxcdHRyaXN0YXRlIFxcXCJSZWRpcmVjdGluZyBhbmQgTWlycm9yaW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjc0NDpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzQ1LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTc1Mj1jb25maWcgTkVUX0FDVF9TQU1QTEVcXG5uZXQvc2NoZWQvS2NvbmZpZy03NTMtXFx0dHJpc3RhdGUgXFxcIlRyYWZmaWMgU2FtcGxpbmdcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NzU0OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03NTUtXFx0c2VsZWN0IFBTQU1QTEVcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTc2ND1jb25maWcgTkVUX0FDVF9OQVRcXG5uZXQvc2NoZWQvS2NvbmZpZy03NjUtXFx0dHJpc3RhdGUgXFxcIlN0YXRlbGVzcyBOQVRcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NzY2OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03NjctXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9Nzc0PWNvbmZpZyBORVRfQUNUX1BFRElUXFxubmV0L3NjaGVkL0tjb25maWctNzc1LVxcdHRyaXN0YXRlIFxcXCJQYWNrZXQgRWRpdGluZ1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3NzY6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc3Ny1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03ODM9Y29uZmlnIE5FVF9BQ1RfU0lNUFxcbm5ldC9zY2hlZC9LY29uZmlnLTc4NC1cXHR0cmlzdGF0ZSBcXFwiU2ltcGxlIEV4YW1wbGUgKERlYnVnKVxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3ODU6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc4Ni1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03OTc9Y29uZmlnIE5FVF9BQ1RfU0tCRURJVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc5OC1cXHR0cmlzdGF0ZSBcXFwiU0tCIEVkaXRpbmdcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6Nzk5OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04MDAtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODA4PWNvbmZpZyBORVRfQUNUX0NTVU1cXG5uZXQvc2NoZWQvS2NvbmZpZy04MDktXFx0dHJpc3RhdGUgXFxcIkNoZWNrc3VtIFVwZGF0aW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjgxMDpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFxcdTAwMjZcXHUwMDI2IElORVRcXG5uZXQvc2NoZWQvS2NvbmZpZy04MTEtXFx0c2VsZWN0IE5FVF9DUkMzMkNcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTgxOT1jb25maWcgTkVUX0FDVF9NUExTXFxubmV0L3NjaGVkL0tjb25maWctODIwLVxcdHRyaXN0YXRlIFxcXCJNUExTIG1hbmlwdWxhdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4MjE6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTgyMi1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04MzA9Y29uZmlnIE5FVF9BQ1RfVkxBTlxcbm5ldC9zY2hlZC9LY29uZmlnLTgzMS1cXHR0cmlzdGF0ZSBcXFwiVmxhbiBtYW5pcHVsYXRpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6ODMyOlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04MzMtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODQxPWNvbmZpZyBORVRfQUNUX0JQRlxcbm5ldC9zY2hlZC9LY29uZmlnLTg0Mi1cXHR0cmlzdGF0ZSBcXFwiQlBGIGJhc2VkIGFjdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4NDM6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTg0NC1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04NTM9Y29uZmlnIE5FVF9BQ1RfQ09OTk1BUktcXG5uZXQvc2NoZWQvS2NvbmZpZy04NTQtXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBDb25uZWN0aW9uIE1hcmsgUmV0cmlldmVyXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjg1NTpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFxcdTAwMjZcXHUwMDI2IE5FVEZJTFRFUlxcbm5ldC9zY2hlZC9LY29uZmlnLTg1Ni1cXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfTUFSS1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODY1PWNvbmZpZyBORVRfQUNUX0NUSU5GT1xcbm5ldC9zY2hlZC9LY29uZmlnLTg2Ni1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIENvbm5lY3Rpb24gTWFyayBBY3Rpb25zXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjg2NzpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFxcdTAwMjZcXHUwMDI2IE5FVEZJTFRFUlxcbm5ldC9zY2hlZC9LY29uZmlnLTg2OC1cXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfTUFSS1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODgyPWNvbmZpZyBORVRfQUNUX1NLQk1PRFxcbm5ldC9zY2hlZC9LY29uZmlnLTg4My1cXHR0cmlzdGF0ZSBcXFwic2tiIGRhdGEgbW9kaWZpY2F0aW9uIGFjdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4ODQ6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTg4NS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04OTM9Y29uZmlnIE5FVF9BQ1RfSUZFXFxubmV0L3NjaGVkL0tjb25maWctODk0LVxcdHRyaXN0YXRlIFxcXCJJbnRlci1GRSBhY3Rpb24gYmFzZWQgb24gSUVURiBGb3JDRVMgSW50ZXJGRSBMRkJcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6ODk1OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04OTYtXFx0c2VsZWN0IE5FVF9JRkVcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTkwNj1jb25maWcgTkVUX0FDVF9UVU5ORUxfS0VZXFxubmV0L3NjaGVkL0tjb25maWctOTA3LVxcdHRyaXN0YXRlIFxcXCJJUCB0dW5uZWwgbWV0YWRhdGEgbWFuaXB1bGF0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjkwODpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctOTA5LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTkxNz1jb25maWcgTkVUX0FDVF9DVFxcbm5ldC9zY2hlZC9LY29uZmlnLTkxOC1cXHR0cmlzdGF0ZSBcXFwiY29ubmVjdGlvbiB0cmFja2luZyB0YyBhY3Rpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6OTE5OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1QgXFx1MDAyNlxcdTAwMjYgTkZfQ09OTlRSQUNLIFxcdTAwMjZcXHUwMDI2ICghTkZfTkFUIHx8IE5GX05BVCkgXFx1MDAyNlxcdTAwMjYgTkZfRkxPV19UQUJMRVxcbm5ldC9zY2hlZC9LY29uZmlnLTkyMC1cXHRzZWxlY3QgTkZfQ09OTlRSQUNLX09WU1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9OTMwPWNvbmZpZyBORVRfQUNUX0dBVEVcXG5uZXQvc2NoZWQvS2NvbmZpZy05MzEtXFx0dHJpc3RhdGUgXFxcIkZyYW1lIGdhdGUgZW50cnkgbGlzdCBjb250cm9sIHRjIGFjdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo5MzI6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTkzMy1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz05NTQ9Y29uZmlnIE5FVF9UQ19TS0JfRVhUXFxubmV0L3NjaGVkL0tjb25maWctOTU1LVxcdGJvb2wgXFxcIlRDIHJlY2lyY3VsYXRpb24gc3VwcG9ydFxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo5NTY6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTk1Ny1cXHRzZWxlY3QgU0tCX0VYVEVOU0lPTlNcXG4tLVxcbm5ldC9zY2hlZC9NYWtlZmlsZT0xMD1vYmotJChDT05GSUdfTkVUX0NMUylcXHRcXHQrPSBjbHNfYXBpLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX05FVF9DTFNfQUNUKVxcdCs9IGFjdF9hcGkub1xcbm5ldC9zY2hlZC9NYWtlZmlsZS0xMi1vYmotJChDT05GSUdfTkVUX0FDVF9QT0xJQ0UpXFx0Kz0gYWN0X3BvbGljZS5vXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTE0ND1zdGF0aWMgdTY0IHRjZl9leHRzX21pc3NfY29va2llX2dldCh1MzIgbWlzc19jb29raWVfYmFzZSwgaW50IGFjdF9pbmRleClcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU0LVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTU1OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1Ni1ERUZJTkVfU1RBVElDX0tFWV9GQUxTRSh0Y19za2JfZXh0X3RjKTtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9NDE0PXN0YXRpYyB2b2lkIHRjZl9wcm90b19jb3VudF91c2VzdyhzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgYm9vbCBhZGQpXFxubmV0L3NjaGVkL2Nsc19hcGkuYy00MTUte1xcbm5ldC9zY2hlZC9jbHNfYXBpLmM6NDE2OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTQxNy1cXHRzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jayA9IHRwLVxcdTAwM2VjaGFpbi1cXHUwMDNlYmxvY2s7XFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTE3MTI9c3RhdGljIGlubGluZSBpbnQgX190Y2ZfY2xhc3NpZnkoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTcyMC17XFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNzIxOiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE3MjItXFx0Y29uc3QgaW50IG1heF9yZWNsYXNzaWZ5X2xvb3AgPSAxNjtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTc2NS1cXHRcXHR9XFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNzY2OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE3NjctXFx0XFx0aWYgKHVubGlrZWx5KGVyciA9PSBUQ19BQ1RfUkVDTEFTU0lGWSBcXHUwMDI2XFx1MDAyNiAhY29tcGF0X21vZGUpKSB7XFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE3ODctXFx0cmV0dXJuIFRDX0FDVF9VTlNQRUM7IC8qIHNpZ25hbDogY29udGludWUgbG9va3VwICovXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNzg4OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE3ODktcmVzZXQ6XFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTMzMzg9aW50IHRjZl9leHRzX2luaXRfZXgoc3RydWN0IHRjZl9leHRzICpleHRzLCBzdHJ1Y3QgbmV0ICpuZXQsIGludCBhY3Rpb24sXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTMzNDMtXFxubmV0L3NjaGVkL2Nsc19hcGkuYzozMzQ0OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTMzNDUtXFx0ZXh0cy1cXHUwMDNldHlwZSA9IDA7XFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTMzNzAtXFx0dGNmX2V4dHNfZGVzdHJveShleHRzKTtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjMzNzE6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzM3Mi1cXHRleHRzLVxcdTAwM2VhY3Rpb25zID0gTlVMTDtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9MzM3OD12b2lkIHRjZl9leHRzX2Rlc3Ryb3koc3RydWN0IHRjZl9leHRzICpleHRzKVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zMzgxLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MzM4MjojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zMzgzLVxcdGlmIChleHRzLVxcdTAwM2VhY3Rpb25zKSB7XFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTMzOTI9aW50IHRjZl9leHRzX3ZhbGlkYXRlX2V4KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRjZl9wcm90byAqdHAsIHN0cnVjdCBubGF0dHIgKip0YixcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzM5NS17XFxubmV0L3NjaGVkL2Nsc19hcGkuYzozMzk2OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTMzOTctXFx0e1xcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zNDM2LVxcdCAgICAoZXh0cy1cXHUwMDNlcG9saWNlIFxcdTAwMjZcXHUwMDI2IHRiW2V4dHMtXFx1MDAzZXBvbGljZV0pKSB7XFxubmV0L3NjaGVkL2Nsc19hcGkuYzozNDM3OlxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXFxcIkNsYXNzaWZpZXIgYWN0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBwZXIgY29tcGlsZSBvcHRpb25zIChDT05GSUdfTkVUX0NMU19BQ1QpXFxcIik7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zNDM4LVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9MzQ1NT12b2lkIHRjZl9leHRzX2NoYW5nZShzdHJ1Y3QgdGNmX2V4dHMgKmRzdCwgc3RydWN0IHRjZl9leHRzICpzcmMpXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zNDU2LXtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjM0NTc6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzQ1OC1cXHRzdHJ1Y3QgdGNmX2V4dHMgb2xkID0gKmRzdDtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9MzQ2ND1FWFBPUlRfU1lNQk9MKHRjZl9leHRzX2NoYW5nZSk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zNDY1LVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MzQ2NjojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zNDY3LXN0YXRpYyBzdHJ1Y3QgdGNfYWN0aW9uICp0Y2ZfZXh0c19maXJzdF9hY3Qoc3RydWN0IHRjZl9leHRzICpleHRzKVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz0zNDc2PWludCB0Y2ZfZXh0c19kdW1wKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB0Y2ZfZXh0cyAqZXh0cylcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTM0Nzcte1xcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MzQ3ODojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zNDc5LVxcdHN0cnVjdCBubGF0dHIgKm5lc3Q7XFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTM1MTc9aW50IHRjZl9leHRzX3RlcnNlX2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRjZl9leHRzICpleHRzKVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzUxOC17XFxubmV0L3NjaGVkL2Nsc19hcGkuYzozNTE5OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTM1MjAtXFx0c3RydWN0IG5sYXR0ciAqbmVzdDtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9MzU0Mz1pbnQgdGNmX2V4dHNfZHVtcF9zdGF0cyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNmX2V4dHMgKmV4dHMpXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zNTQ0LXtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjM1NDU6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzU0Ni1cXHRzdHJ1Y3QgdGNfYWN0aW9uICphID0gdGNmX2V4dHNfZmlyc3RfYWN0KGV4dHMpO1xcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz0zODUwPXN0YXRpYyBpbnQgdGNfc2V0dXBfb2ZmbG9hZF9hY3Qoc3RydWN0IHRjX2FjdGlvbiAqYWN0LFxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zODU0LXtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjM4NTU6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzg1Ni1cXHRpZiAoYWN0LVxcdTAwM2VvcHMtXFx1MDAzZW9mZmxvYWRfYWN0X3NldHVwKSB7XFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTM5MzA9aW50IHRjX3NldHVwX29mZmxvYWRfYWN0aW9uKHN0cnVjdCBmbG93X2FjdGlvbiAqZmxvd19hY3Rpb24sXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTM5MzMte1xcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MzkzNDojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0zOTM1LVxcdHUzMiBtaXNzX2Nvb2tpZV9iYXNlO1xcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz0zOTY3PUVYUE9SVF9TWU1CT0wodGNmX2V4dHNfbnVtX2FjdGlvbnMpO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzk2OC1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjM5Njk6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMzk3MC1zdGF0aWMgaW50IHRjZl9xZXZlbnRfcGFyc2VfYmxvY2tfaW5kZXgoc3RydWN0IG5sYXR0ciAqYmxvY2tfaW5kZXhfYXR0cixcXG4tLVxcbm5ldC9zY2hlZC9jbHNfdTMyLmM9MTQ3ND1zdGF0aWMgaW50IF9faW5pdCBpbml0X3UzMih2b2lkKVxcbi0tXFxubmV0L3NjaGVkL2Nsc191MzIuYy0xNDgyLVxcdHByX2luZm8oXFxcIiAgICBpbnB1dCBkZXZpY2UgY2hlY2sgb25cXFxcblxcXCIpO1xcbm5ldC9zY2hlZC9jbHNfdTMyLmM6MTQ4MzojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXFxubmV0L3NjaGVkL2Nsc191MzIuYy0xNDg0LVxcdHByX2luZm8oXFxcIiAgICBBY3Rpb25zIGNvbmZpZ3VyZWRcXFxcblxcXCIpO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9jYWtlLmM9MTcxOT1zdGF0aWMgdTMyIGNha2VfY2xhc3NpZnkoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBjYWtlX3Rpbl9kYXRhICoqdCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfY2FrZS5jLTE3MzUtXFx0aWYgKHJlc3VsdCBcXHUwMDNlPSAwKSB7XFxubmV0L3NjaGVkL3NjaF9jYWtlLmM6MTczNjojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXFxubmV0L3NjaGVkL3NjaF9jYWtlLmMtMTczNy1cXHRcXHRzd2l0Y2ggKHJlc3VsdCkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kcnIuYz0yOTg9c3RhdGljIHN0cnVjdCBkcnJfY2xhc3MgKmRycl9jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHJyLmMtMzE2LVxcdGlmIChyZXN1bHQgXFx1MDAzZT0gMCkge1xcbm5ldC9zY2hlZC9zY2hfZHJyLmM6MzE3OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTMxOC1cXHRcXHRzd2l0Y2ggKHJlc3VsdCkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9MzQxPXN0YXRpYyBpbnQgZHVhbHBpMl9za2JfY2xhc3NpZnkoc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTM2OC1cXHRpZiAocmVzdWx0IFxcdTAwM2U9IDApIHtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzozNjk6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTM3MC1cXHRcXHRzd2l0Y2ggKHJlc3VsdCkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9ldHMuYz0zODI9c3RhdGljIHN0cnVjdCBldHNfY2xhc3MgKmV0c19jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZXRzLmMtMzk0LVxcdFxcdGVyciA9IHRjZl9jbGFzc2lmeShza2IsIE5VTEwsIGZsLCBcXHUwMDI2cmVzLCBmYWxzZSk7XFxubmV0L3NjaGVkL3NjaF9ldHMuYzozOTU6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9zY2hfZXRzLmMtMzk2LVxcdFxcdHN3aXRjaCAoZXJyKSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZxX2NvZGVsLmM9NzY9c3RhdGljIHVuc2lnbmVkIGludCBmcV9jb2RlbF9jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnFfY29kZWwuYy05NS1cXHRpZiAocmVzdWx0IFxcdTAwM2U9IDApIHtcXG5uZXQvc2NoZWQvc2NoX2ZxX2NvZGVsLmM6OTY6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9zY2hfZnFfY29kZWwuYy05Ny1cXHRcXHRzd2l0Y2ggKHJlc3VsdCkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYz04MT1zdGF0aWMgdW5zaWduZWQgaW50IGZxX3BpZV9jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtMTAwLVxcdGlmIChyZXN1bHQgXFx1MDAzZT0gMCkge1xcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmM6MTAxOiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTEwMi1cXHRcXHRzd2l0Y2ggKHJlc3VsdCkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9oZnNjLmM9MTEzMD1oZnNjX2NsYXNzaWZ5KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLCBpbnQgKnFlcnIpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2hmc2MuYy0xMTQ2LVxcdHdoaWxlICh0Y2YgXFx1MDAyNlxcdTAwMjYgKHJlc3VsdCA9IHRjZl9jbGFzc2lmeShza2IsIE5VTEwsIHRjZiwgXFx1MDAyNnJlcywgZmFsc2UpKSBcXHUwMDNlPSAwKSB7XFxubmV0L3NjaGVkL3NjaF9oZnNjLmM6MTE0NzojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXFxubmV0L3NjaGVkL3NjaF9oZnNjLmMtMTE0OC1cXHRcXHRzd2l0Y2ggKHJlc3VsdCkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9odGIuYz0yMjA9c3RhdGljIHN0cnVjdCBodGJfY2xhc3MgKmh0Yl9jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfaHRiLmMtMjQ2LVxcdHdoaWxlICh0Y2YgXFx1MDAyNlxcdTAwMjYgKHJlc3VsdCA9IHRjZl9jbGFzc2lmeShza2IsIE5VTEwsIHRjZiwgXFx1MDAyNnJlcywgZmFsc2UpKSBcXHUwMDNlPSAwKSB7XFxubmV0L3NjaGVkL3NjaF9odGIuYzoyNDc6I2lmZGVmIENPTkZJR19ORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9zY2hfaHRiLmMtMjQ4LVxcdFxcdHN3aXRjaCAocmVzdWx0KSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2h0Yi5jPTYyMD1zdGF0aWMgaW50IGh0Yl9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9odGIuYy02MzUtXFx0XFx0fVxcbm5ldC9zY2hlZC9zY2hfaHRiLmM6NjM2OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvc2NoX2h0Yi5jLTYzNy1cXHR9IGVsc2UgaWYgKCFjbCkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYz0zMD1tdWx0aXFfY2xhc3NpZnkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsIGludCAqcWVycilcXG4tLVxcbm5ldC9zY2hlZC9zY2hfbXVsdGlxLmMtMzktXFx0ZXJyID0gdGNmX2NsYXNzaWZ5KHNrYiwgTlVMTCwgZmwsIFxcdTAwMjZyZXMsIGZhbHNlKTtcXG5uZXQvc2NoZWQvc2NoX211bHRpcS5jOjQwOiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvc2NoX211bHRpcS5jLTQxLVxcdHN3aXRjaCAoZXJyKSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX211bHRpcS5jPTYwPW11bHRpcV9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYy02Ni1cXHRxZGlzYyA9IG11bHRpcV9jbGFzc2lmeShza2IsIHNjaCwgXFx1MDAyNnJldCk7XFxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYzo2NzojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXFxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYy02OC1cXHRpZiAocWRpc2MgPT0gTlVMTCkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9wcmlvLmM9MzE9cHJpb19jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCwgaW50ICpxZXJyKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9wcmlvLmMtNDItXFx0XFx0ZXJyID0gdGNmX2NsYXNzaWZ5KHNrYiwgTlVMTCwgZmwsIFxcdTAwMjZyZXMsIGZhbHNlKTtcXG5uZXQvc2NoZWQvc2NoX3ByaW8uYzo0MzojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXFxubmV0L3NjaGVkL3NjaF9wcmlvLmMtNDQtXFx0XFx0c3dpdGNoIChlcnIpIHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcHJpby5jPTY5PXByaW9fZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9wcmlvLmMtNzUtXFx0cWRpc2MgPSBwcmlvX2NsYXNzaWZ5KHNrYiwgc2NoLCBcXHUwMDI2cmV0KTtcXG5uZXQvc2NoZWQvc2NoX3ByaW8uYzo3NjojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXFxubmV0L3NjaGVkL3NjaF9wcmlvLmMtNzctXFx0aWYgKHFkaXNjID09IE5VTEwpIHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcWZxLmM9Njk0PXN0YXRpYyBzdHJ1Y3QgcWZxX2NsYXNzICpxZnFfY2xhc3NpZnkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3FmcS5jLTcxMy1cXHRpZiAocmVzdWx0IFxcdTAwM2U9IDApIHtcXG5uZXQvc2NoZWQvc2NoX3FmcS5jOjcxNDojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXFxubmV0L3NjaGVkL3NjaF9xZnEuYy03MTUtXFx0XFx0c3dpdGNoIChyZXN1bHQpIHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfc2ZiLmM9MjU3PXN0YXRpYyBib29sIHNmYl9jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNmX3Byb3RvICpmbCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfc2ZiLmMtMjY0LVxcdGlmIChyZXN1bHQgXFx1MDAzZT0gMCkge1xcbm5ldC9zY2hlZC9zY2hfc2ZiLmM6MjY1OiNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvc2NoX3NmYi5jLTI2Ni1cXHRcXHRzd2l0Y2ggKHJlc3VsdCkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9zZnEuYz0xNTY9c3RhdGljIHVuc2lnbmVkIGludCBzZnFfY2xhc3NpZnkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTE3NS1cXHRpZiAocmVzdWx0IFxcdTAwM2U9IDApIHtcXG5uZXQvc2NoZWQvc2NoX3NmcS5jOjE3NjojaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUXFxubmV0L3NjaGVkL3NjaF9zZnEuYy0xNzctXFx0XFx0c3dpdGNoIChyZXN1bHQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjM6NDc6NDQuNzQ0NTA3NzI2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTgyNDMxODI0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBlZGl0IEFjdGlvbiBPZmZsb2FkIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCByZWxhdGVkIHRvIHRoZSBUQyBwZWRpdCBhY3Rpb24gb2ZmbG9hZGluZy4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gaW52b2x2ZSBzb21lIHJhY2UgY29uZGl0aW9uIGFuZCBidWZmZXIgb3ZlcmZsb3cgZml4ZXMuIExldCdzIGJyZWFrIGRvd24gdGhlIGxvZ2ljLlxuXG5GaXJzdCwgdGhlIGNvbmZpZ3MgYXJlIGtleTogYE5FVF9DTFNfQUNUYCBhbmQgYE5FVF9BQ1RfUEVESVRgLiBSaWdodCwgdGhlc2UgYXJlIHRoZSBvbmVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoYXQgc3RyYWlnaHQuIGBORVRfQ0xTYCBpcyBhbHNvIGludm9sdmVkLCBzcGVjaWZpY2FsbHkgZm9yIGBjbHNfYXBpLmNgLiBOb3csIGBORVRfQ0xTYCBpcyByZWFsbHkganVzdCB0aGUgYmFzZSBmb3IgY2xhc3NpZmllcnMsIEkgZG9uJ3QgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhhdCBvbmUgcmlnaHQgbm93LiBBbmQsIGZvciBnb29kIG1lYXN1cmUsIGl0J3Mgd29ydGggbm90aW5nIHRoYXQgYE5FVF9TQ0hfSU5HUkVTU2AgbWlnaHQgYmUgaGVscGZ1bCBmb3IgdGVzdGluZyBUQyBhY3Rpb25zLCBidXQgaXQncyBub3QgZGlyZWN0bHkgcGFydCBvZiB0aGUgY29yZSBwYXRjaC5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBzeW1ib2xzIGFmZmVjdGVkLiBUaGUgY3J1Y2lhbCBwYXJ0IGlzIHRoaXMgYHRjZl9wZWRpdF9ua2V5c19sb2NrZWRgIHdoaWNoIGlzIHVzZWQgYnkgc29tZSBrZXkgZnVuY3Rpb25zLiBTcGVjaWZpY2FsbHksIEkndmUgZ290IHRvIGNoZWNrIGB0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlYCBpbiBgbmV0L3NjaGVkL2FjdF9hcGkuY2AsIGB0Y2ZfcGVkaXRfb2ZmbG9hZF9hY3Rfc2V0dXBgIGluIGBuZXQvc2NoZWQvYWN0X3BlZGl0LmNgLCBhbmQgYHRjZl9leHRzX251bV9hY3Rpb25zYCBpbiBgbmV0L3NjaGVkL2Nsc19hcGkuY2AuIEFsc28gaW1wb3J0YW50IGlzIGB0Y19zZXR1cF9hY3Rpb25gIGluIGBuZXQvc2NoZWQvY2xzX2FwaS5jYCwgd2hpY2ggY2FsbHMgdGhlIG9mZmxvYWQgc2V0dXAuIEkgc2VlIHRoYXQgaXQgY2hlY2tzIGBqIFx1MDAzZT0gZmxvd19hY3Rpb24tXHUwMDNlbnVtX2VudHJpZXNgIGFuZCByZXR1cm5zIGAtRU5PU1BDYCB3aGVuIHRoZXJlJ3MgYW4gaXNzdWUgd2l0aCB0aGUgbnVtYmVyIG9mIGVudHJpZXMuXG5cblNvIEkgdGhpbmsgdGhlIGZvY3VzIHNob3VsZCBiZSBvbiB0aGVzZTogYHRjZl9vZmZsb2FkX2FjdF9udW1fYWN0aW9uc19zaW5nbGVgLCBgdGNmX3BlZGl0X29mZmxvYWRfYWN0X3NldHVwYCwgYHRjZl9leHRzX251bV9hY3Rpb25zYCwgYW5kIGB0Y19zZXR1cF9hY3Rpb25gLiBBaCwgYHRjZl9wZWRpdF9ua2V5c19sb2NrZWRgIGlzIGlubGluZSwgc28gaXQgd29uJ3QgYmUgaW4gdGhlIHN5bWJvbCB0YWJsZS4gSXQncyBiYXNpY2FsbHkgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCBJJ20gYWxyZWFkeSBhd2FyZSBvZiB0aGF0LCB0aG91Z2guXG5cbkknbSB2ZXJpZnlpbmcgdGhhdCB0aGVzZSBhcmUgdGhlIG9ubHkgZnVuY3Rpb25zIG1vZGlmaWVkLCBhbmQgaXQgc2VlbXMgdGhhdCBpcyB0aGUgY2FzZS5cblxuSW4gdGVybXMgb2YgY29uZmlncywgSSBoYXZlIGNvbmZpcm1lZCBgTkVUX0NMU19BQ1RgIGFuZCBgTkVUX0FDVF9QRURJVGAgYXJlIHN1ZmZpY2llbnQuXG5cbk15IHJlYXNvbmluZz8gVGhpcyBwYXRjaCBpcyBmaXhpbmcgYSByZWFsIGlzc3Vl4oCUYSByYWNlIGNvbmRpdGlvbiBhbmQgYSBidWZmZXIgb3ZlcmZsb3cuIEl0J3MgdG91Y2hpbmcgcmVhY2hhYmxlIGNvZGUgd2l0aGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgc28gaXQncyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gSSdtIGdvaW5nIHRvIGJlIGtlZXBpbmcgdGhlc2Ugc3ltYm9scyBpbiBtaW5kLCBhbmQgSSdsbCB1c2UgYHNldC1yZXN1bHRzYCBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwODA2LCJPdXRwdXRUb2tlbnMiOjIxMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMzo0Nzo1NC41Njg4Mjc3ODJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwNDU0ODM5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0NMU19BQ1RcIixcbiAgICBcIk5FVF9BQ1RfUEVESVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlXCIsXG4gICAgXCJ0Y2ZfcGVkaXRfb2ZmbG9hZF9hY3Rfc2V0dXBcIixcbiAgICBcInRjZl9leHRzX251bV9hY3Rpb25zXCIsXG4gICAgXCJ0Y19zZXR1cF9hY3Rpb25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGFuZCBidWZmZXIgb3ZlcmZsb3cgaW4gdGhlIFRDIHBlZGl0IGFjdGlvbiBvZmZsb2FkaW5nIGNvZGUuIEl0IG1vZGlmaWVzIGB0Y19zZXR1cF9hY3Rpb25gLCBgdGNmX3BlZGl0X29mZmxvYWRfYWN0X3NldHVwYCwgYHRjZl9vZmZsb2FkX2FjdF9udW1fYWN0aW9uc19zaW5nbGVgLCBhbmQgYHRjZl9leHRzX251bV9hY3Rpb25zYCB0byB1c2UgYSBsb2NrZWQgdmVyc2lvbiBvZiBgdGNmX3BlZGl0X25rZXlzYCBhbmQgYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIGZsb3cgYWN0aW9uIGVudHJpZXMuIFRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGNvZGUgaW4gdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9DTFNfQUNUXCIsXG4gICAgXCJORVRfQUNUX1BFRElUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNmX29mZmxvYWRfYWN0X251bV9hY3Rpb25zX3NpbmdsZVwiLFxuICAgIFwidGNmX3BlZGl0X29mZmxvYWRfYWN0X3NldHVwXCIsXG4gICAgXCJ0Y2ZfZXh0c19udW1fYWN0aW9uc1wiLFxuICAgIFwidGNfc2V0dXBfYWN0aW9uXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBhbmQgYnVmZmVyIG92ZXJmbG93IGluIHRoZSBUQyBwZWRpdCBhY3Rpb24gb2ZmbG9hZGluZyBjb2RlLiBJdCBtb2RpZmllcyBgdGNfc2V0dXBfYWN0aW9uYCwgYHRjZl9wZWRpdF9vZmZsb2FkX2FjdF9zZXR1cGAsIGB0Y2Zfb2ZmbG9hZF9hY3RfbnVtX2FjdGlvbnNfc2luZ2xlYCwgYW5kIGB0Y2ZfZXh0c19udW1fYWN0aW9uc2AgdG8gdXNlIGEgbG9ja2VkIHZlcnNpb24gb2YgYHRjZl9wZWRpdF9ua2V5c2AgYW5kIGFkZHMgYm91bmRzIGNoZWNraW5nIGZvciBmbG93IGFjdGlvbiBlbnRyaWVzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBjb2RlIGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgc28gaXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowqm9g6[1] Phase: Succeeded StartedAt: 2026-07-01 23:51:34 +0000 UTC FinishedAt: 2026-07-01 23:51:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm9g6[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-01 23:51:34 +0000 UTC FinishedAt: 2026-07-01 23:51:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm9g6[2] Phase: Succeeded StartedAt: 2026-07-01 23:51:34 +0000 UTC FinishedAt: 2026-07-02 04:10:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-01 23:51:34 +0000 UTC FinishedAt: 2026-07-02 04:10:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-01 23:51:34 +0000 UTC FinishedAt: 2026-07-01 23:52:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-01 23:51:34 +0000 UTC FinishedAt: 2026-07-01 23:52:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowqm9g6/series-workflowqm9g6-convert-artifact-3646622257/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-01 23:52:50 +0000 UTC FinishedAt: 2026-07-02 00:31:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-01 23:52:50 +0000 UTC FinishedAt: 2026-07-02 00:31:24 +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:*88fb684c-c36a-4df8-9dc0-3885710a2828,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-workflowqm9g6/series-workflowqm9g6-convert-artifact-3646622257/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": "84f32604-daa7-46a6-b6b2-cf0dd2885f4f", "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-workflowqm9g6/series-workflowqm9g6-build-action-3914311775/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-01 23:52:50 +0000 UTC FinishedAt: 2026-07-02 00:30:48 +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:*88fb684c-c36a-4df8-9dc0-3885710a2828,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-workflowqm9g6/series-workflowqm9g6-convert-artifact-3646622257/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": "84f32604-daa7-46a6-b6b2-cf0dd2885f4f", "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-workflowqm9g6/series-workflowqm9g6-build-action-3914311775/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-02 00:31:24 +0000 UTC FinishedAt: 2026-07-02 00:31:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-02 00:31:24 +0000 UTC FinishedAt: 2026-07-02 00:31:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-02 00:31:24 +0000 UTC FinishedAt: 2026-07-02 00:33:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-02 00:31:24 +0000 UTC FinishedAt: 2026-07-02 00:32:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowqm9g6/series-workflowqm9g6-convert-artifact-4189411716/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-02 00:33:01 +0000 UTC FinishedAt: 2026-07-02 00:35:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-02 00:33:01 +0000 UTC FinishedAt: 2026-07-02 00:35:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*84f32604-daa7-46a6-b6b2-cf0dd2885f4f,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-workflowqm9g6/series-workflowqm9g6-build-action-3914311775/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-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-02 00:35:36 +0000 UTC FinishedAt: 2026-07-02 00:35:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-02 00:35:36 +0000 UTC FinishedAt: 2026-07-02 00:35:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-02 00:35:36 +0000 UTC FinishedAt: 2026-07-02 01:05:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-02 00:35:36 +0000 UTC FinishedAt: 2026-07-02 01:05:30 +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:*88fb684c-c36a-4df8-9dc0-3885710a2828,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-workflowqm9g6/series-workflowqm9g6-convert-artifact-4189411716/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": "ce68e8ff-b688-458a-9433-1b763c4a67a7", "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-workflowqm9g6/series-workflowqm9g6-build-action-3674952592/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-02 00:35:36 +0000 UTC FinishedAt: 2026-07-02 01:05:20 +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:*88fb684c-c36a-4df8-9dc0-3885710a2828,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-workflowqm9g6/series-workflowqm9g6-convert-artifact-4189411716/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": "ce68e8ff-b688-458a-9433-1b763c4a67a7", "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-workflowqm9g6/series-workflowqm9g6-build-action-3674952592/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-02 01:05:30 +0000 UTC FinishedAt: 2026-07-02 01:05:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-02 01:05:30 +0000 UTC FinishedAt: 2026-07-02 01:05:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-02 01:05:30 +0000 UTC FinishedAt: 2026-07-02 01:07:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-02 01:05:30 +0000 UTC FinishedAt: 2026-07-02 01:07:40 +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:*ce68e8ff-b688-458a-9433-1b763c4a67a7,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-workflowqm9g6/series-workflowqm9g6-build-action-3674952592/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-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-02 01:07:50 +0000 UTC FinishedAt: 2026-07-02 04:10:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-02 01:07:50 +0000 UTC FinishedAt: 2026-07-02 04:10:37 +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":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"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:*84f32604-daa7-46a6-b6b2-cf0dd2885f4f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ce68e8ff-b688-458a-9433-1b763c4a67a7,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-workflowqm9g6/series-workflowqm9g6-build-action-3914311775/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-workflowqm9g6/series-workflowqm9g6-build-action-3674952592/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-02 01:07:50 +0000 UTC FinishedAt: 2026-07-02 01:08:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-02 01:07:50 +0000 UTC FinishedAt: 2026-07-02 01:07:57 +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":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"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-workflowqm9g6/series-workflowqm9g6-convert-artifact-312440461/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-02 01:07:50 +0000 UTC FinishedAt: 2026-07-02 01:07:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-02 01:07:50 +0000 UTC FinishedAt: 2026-07-02 01:07:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-02 01:07:50 +0000 UTC FinishedAt: 2026-07-02 01:07:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-02 01:08:00 +0000 UTC FinishedAt: 2026-07-02 04:10:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm9g6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_offload_act_num_actions_single","tcf_pedit_offload_act_setup","tcf_exts_num_actions","tc_setup_action"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_ACT","NET_ACT_PEDIT"],"series_id":"3aadacf7-3cda-44e8-a32e-27af4fa3619a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-02 01:08:00 +0000 UTC FinishedAt: 2026-07-02 04:10:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*84f32604-daa7-46a6-b6b2-cf0dd2885f4f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ce68e8ff-b688-458a-9433-1b763c4a67a7,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-workflowqm9g6/series-workflowqm9g6-build-action-3914311775/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-workflowqm9g6/series-workflowqm9g6-build-action-3674952592/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-workflowqm9g6/series-workflowqm9g6-convert-artifact-312440461/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,}