Name: series-workflowcmm2f Phase: Succeeded StartedAt: 2026-08-01 14:27:06 +0000 UTC FinishedAt: 2026-08-01 16:37:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcmm2f[0] Phase: Succeeded StartedAt: 2026-08-01 14:27:06 +0000 UTC FinishedAt: 2026-08-01 15:11:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcmm2f[0].run-triage Phase: Succeeded StartedAt: 2026-08-01 14:27:06 +0000 UTC FinishedAt: 2026-08-01 15:11: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": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC" ], "series_id": "f9576b5f-cb14-4e32-996e-b17bd96f07a5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "smc_llc_cli_add_link", "smc_llc_srv_add_link", "smc_llc_add_link_local", "smc_llc_srv_delete_link_local" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAxIDE1OjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtY19sbGNfY2xpX2FkZF9saW5rJiMzNDssCiAgICAmIzM0O3NtY19sbGNfc3J2X2FkZF9saW5rJiMzNDssCiAgICAmIzM0O3NtY19sbGNfYWRkX2xpbmtfbG9jYWwmIzM0OywKICAgICYjMzQ7c21jX2xsY19zcnZfZGVsZXRlX2xpbmtfbG9jYWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgaG93IFNNQyBMTEMgbWVzc2FnZXMgYXJlIGVucXVldWVkIGFuZCBwcm9jZXNzZWQsIHNwZWNpZmljYWxseSBmb3IgU01DX1YyIHdoZXJlIG1lc3NhZ2VzIGNhbiBiZSBsb25nZXIgdGhhbiBgdW5pb24gc21jX2xsY19tc2dgLiBJdCBpbnRyb2R1Y2VzIGBib2R5X2xlbmAgYW5kIGEgZmxleGlibGUgYXJyYXkgYGJvZHlbXWAgaW4gYHN0cnVjdCBzbWNfbGxjX3FlbnRyeWAgdG8gc3RvcmUgdGhlIGV4dHJhIGJ5dGVzIG9mIFYyIG1lc3NhZ2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFNNQyAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykgc3Vic3lzdGVtLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBBRl9TTUMgc29ja2V0cyBhbmQgc29mdHdhcmUgUkRNQS9JU00gZGV2aWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNTowNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDZjMzhmM2MzZDYwNGI5MzM4ZTFmMjdlZDY2MjkzNDQxYjgzNzUyNzFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDE1OjA1OjM4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2xsYy5jIGIvbmV0L3NtYy9zbWNfbGxjLmNcbmluZGV4IDk1NGIyZmYxODE1YzIuLjFiMTUzMTczZGQ1MTYgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19sbGMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfbGxjLmNcbkBAIC0xNTcsNiAmIzQzOzE1Nyw3IEBAIHN0cnVjdCBzbWNfbGxjX21zZ19jb25maXJtX3JrZXkge1x0LyogdHlwZSAweDA2ICovXG4gfTtcbiBcbiAjZGVmaW5lIFNNQ19MTENfREVMX1JLRVlfTUFYXHQ4XG4mIzQzOyNkZWZpbmUgU01DX0xMQ19ERUxfUktFWV9WMl9JTkxJTkVcdDlcbiAjZGVmaW5lIFNNQ19MTENfRkxBR19SS0VZX1JFVFJZXHQweDEwXG4gI2RlZmluZSBTTUNfTExDX0ZMQUdfUktFWV9ORUdcdDB4MjBcbiBcbkBAIC0xNzcsNiAmIzQzOzE3OCwxNSBAQCBzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXlfdjIge1x0LyogdHlwZSAweDI5ICovXG4gXHRfX2JlMzIgcmtleVtdO1xuIH07XG4gXG4mIzQzOy8qIHRoZSBsZWFkaW5nIHJrZXlzIG9mIGEgREVMRVRFX1JLRVlfVjIgZml0IGludG8gdW5pb24gc21jX2xsY19tc2cgKi9cbiYjNDM7c3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyX2lubGluZSB7XHQvKiB0eXBlIDB4MjkgKi9cbiYjNDM7XHRzdHJ1Y3Qgc21jX2xsY19oZHIgaGQ7XG4mIzQzO1x0dTggbnVtX3JrZXlzO1xuJiM0MztcdHU4IG51bV9pbnZhbF9ya2V5cztcbiYjNDM7XHR1OCByZXNlcnZlZFsyXTtcbiYjNDM7XHRfX2JlMzIgcmtleVtTTUNfTExDX0RFTF9SS0VZX1YyX0lOTElORV07XG4mIzQzO307XG4mIzQzO1xuIHVuaW9uIHNtY19sbGNfbXNnIHtcbiBcdHN0cnVjdCBzbWNfbGxjX21zZ19jb25maXJtX2xpbmsgY29uZmlybV9saW5rO1xuIFx0c3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rIGFkZF9saW5rO1xuQEAgLTE4Niw2ICYjNDM7MTk2LDcgQEAgdW5pb24gc21jX2xsY19tc2cge1xuIFxuIFx0c3RydWN0IHNtY19sbGNfbXNnX2NvbmZpcm1fcmtleSBjb25maXJtX3JrZXk7XG4gXHRzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXkgZGVsZXRlX3JrZXk7XG4mIzQzO1x0c3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyX2lubGluZSBkZWxldGVfcmtleV92MjtcbiBcbiBcdHN0cnVjdCBzbWNfbGxjX21zZ190ZXN0X2xpbmsgdGVzdF9saW5rO1xuIFx0c3RydWN0IHtcbkBAIC0xOTQsMTUgJiM0MzsyMDUsMjMgQEAgdW5pb24gc21jX2xsY19tc2cge1xuIFx0fSByYXc7XG4gfTtcbiBcbiYjNDM7c3RhdGljX2Fzc2VydChTTUNfTExDX0RFTF9SS0VZX1YyX0lOTElORSA9PVxuJiM0MztcdCAgICAgIChzaXplb2YodW5pb24gc21jX2xsY19tc2cpIC1cbiYjNDM7XHQgICAgICAgb2Zmc2V0b2Yoc3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyLCBya2V5KSkgL1xuJiM0MztcdCAgICAgIHNpemVvZihfX2JlMzIpKTtcbiYjNDM7XG4gI2RlZmluZSBTTUNfTExDX0ZMQUdfUkVTUFx0XHQweDgwXG4gXG4gc3RydWN0IHNtY19sbGNfcWVudHJ5IHtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbiBcdHN0cnVjdCBzbWNfbGluayAqbGluaztcbiYjNDM7XHR1MTYgYm9keV9sZW47XG4gXHR1bmlvbiBzbWNfbGxjX21zZyBtc2c7XG4mIzQzO1x0dTggYm9keVtdIF9fY291bnRlZF9ieShib2R5X2xlbik7XG4gfTtcbiBcbi1zdGF0aWMgdm9pZCBzbWNfbGxjX2VucXVldWUoc3RydWN0IHNtY19saW5rICpsaW5rLCB1bmlvbiBzbWNfbGxjX21zZyAqbGxjKTtcbiYjNDM7c3RhdGljIHZvaWQgc21jX2xsY19lbnF1ZXVlKHN0cnVjdCBzbWNfbGluayAqbGluaywgdW5pb24gc21jX2xsY19tc2cgKmxsYyxcbiYjNDM7XHRcdFx0ICAgIHUzMiBieXRlX2xlbik7XG4gXG4gc3RydWN0IHNtY19sbGNfcWVudHJ5ICpzbWNfbGxjX2Zsb3dfcWVudHJ5X2NscihzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93KVxuIHtcbkBAIC05OTgsMTUgJiM0MzsxMDE3LDIwIEBAIHN0YXRpYyBpbnQgc21jX2xsY19jbGlfY29uZl9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcbiBzdGF0aWMgdm9pZCBzbWNfbGxjX3NhdmVfYWRkX2xpbmtfcmtleXMoc3RydWN0IHNtY19saW5rICpsaW5rLFxuIFx0XHRcdFx0XHRzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3LFxuLVx0XHRcdFx0XHR1OCAqbGxjX21zZylcbiYjNDM7XHRcdFx0XHRcdHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxuIHtcbiYjNDM7XHRjb25zdCB1MzIgcnRfb2ZmID0gb2Zmc2V0b2Yoc3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rX3YyX2V4dCwgcnQpO1xuIFx0c3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rX3YyX2V4dCAqZXh0O1xuIFx0c3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IgPSBsaW5rLVx1MDAzZWxncjtcbiBcdGludCBtYXgsIGk7XG4gXG4tXHRleHQgPSAoc3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rX3YyX2V4dCAqKShsbGNfbXNnICYjNDM7XG4tXHRcdFx0XHRcdFx0ICAgICBTTUNfV1JfVFhfU0laRSk7XG4mIzQzO1x0LyogdGhlIHJrZXkgY291bnQgaXRzZWxmIGlzIG9ubHkgdGhlcmUgaWYgZW5vdWdoIGJ5dGVzIGFycml2ZWQgKi9cbiYjNDM7XHRpZiAocWVudHJ5LVx1MDAzZWJvZHlfbGVuIFx1MDAzYyBydF9vZmYpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0ZXh0ID0gKHN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua192Ml9leHQgKilxZW50cnktXHUwMDNlYm9keTtcbiBcdG1heCA9IG1pbl90KHU4LCBleHQtXHUwMDNlbnVtX3JrZXlzLCBTTUNfTExDX1JLRVlTX1BFUl9NU0dfVjIpO1xuJiM0MztcdG1heCA9IG1pbl90KHUzMiwgbWF4LCAocWVudHJ5LVx1MDAzZWJvZHlfbGVuIC0gcnRfb2ZmKSAvXG4mIzQzO1x0XHRcdCAgICAgIHNpemVvZihleHQtXHUwMDNlcnRbMF0pKTtcbiBcdGRvd25fd3JpdGUoXHUwMDI2bGdyLVx1MDAzZXJtYnNfbG9jayk7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBtYXg7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdHNtY19ydG9rZW5fc2V0KGxnciwgbGluay1cdTAwM2VsaW5rX2lkeCwgbGlua19uZXctXHUwMDNlbGlua19pZHgsXG5AQCAtMTA5OSw5ICYjNDM7MTEyMyw3IEBAIGludCBzbWNfbGxjX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxuIFx0aWYgKHJjKVxuIFx0XHRnb3RvIG91dF9jbGVhcl9sbms7XG4gXHRpZiAobGdyLVx1MDAzZXNtY192ZXJzaW9uID09IFNNQ19WMikge1xuLVx0XHR1OCAqbGxjX21zZyA9IHNtY19saW5rX3NoYXJlZF92Ml9yeGJ1ZihsaW5rKSA/XG4tXHRcdFx0KHU4ICopbGdyLVx1MDAzZXdyX3J4X2J1Zl92MiA6ICh1OCAqKWxsYztcbi1cdFx0c21jX2xsY19zYXZlX2FkZF9saW5rX3JrZXlzKGxpbmssIGxua19uZXcsIGxsY19tc2cpO1xuJiM0MztcdFx0c21jX2xsY19zYXZlX2FkZF9saW5rX3JrZXlzKGxpbmssIGxua19uZXcsIHFlbnRyeSk7XG4gXHR9IGVsc2Uge1xuIFx0XHRyYyA9IHNtY19sbGNfY2xpX3JrZXlfZXhjaGFuZ2UobGluaywgbG5rX25ldyk7XG4gXHRcdGlmIChyYykge1xuQEAgLTE0ODEsNyAmIzQzOzE1MDMsNyBAQCBpbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxuIFx0fVxuIFx0YWRkX2xsYyA9IFx1MDAyNnFlbnRyeS1cdTAwM2Vtc2cuYWRkX2xpbms7XG4gXHRpZiAoYWRkX2xsYy1cdTAwM2VoZC5mbGFncyBcdTAwMjYgU01DX0xMQ19GTEFHX0FERF9MTktfUkVKKSB7XG4tXHRcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xuJiM0MztcdFx0c21jX2xsY19mbG93X3FlbnRyeV9jbHIoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG4gXHRcdHJjID0gLUVOT0xJTks7XG4gXHRcdGdvdG8gb3V0X2VycjtcbiBcdH1cbkBAIC0xNDkyLDcgJiM0MzsxNTE0LDggQEAgaW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcdFx0bGdyX25ld190ID0gU01DX0xHUl9BU1lNTUVUUklDX1BFRVI7XG4gXHR9XG4gXHRzbWNfbGxjX3NhdmVfYWRkX2xpbmtfaW5mbyhsaW5rX25ldywgYWRkX2xsYyk7XG4tXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbiYjNDM7XHQvKiBhZGRfbGxjIHN0aWxsIHBvaW50cyBpbnRvIHFlbnRyeSwgc28gb25seSBkZXRhY2ggaXQgaGVyZSAqL1xuJiM0MztcdHNtY19sbGNfZmxvd19xZW50cnlfY2xyKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xuIFxuIFx0cmMgPSBzbWNfaWJfcmVhZHlfbGluayhsaW5rX25ldyk7XG4gXHRpZiAocmMpXG5AQCAtMTUwMSw5ICYjNDM7MTUyNCw3IEBAIGludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4gXHRpZiAocmMpXG4gXHRcdGdvdG8gb3V0X2VycjtcbiBcdGlmIChsZ3ItXHUwMDNlc21jX3ZlcnNpb24gPT0gU01DX1YyKSB7XG4tXHRcdHU4ICpsbGNfbXNnID0gc21jX2xpbmtfc2hhcmVkX3YyX3J4YnVmKGxpbmspID9cbi1cdFx0XHQodTggKilsZ3ItXHUwMDNld3JfcnhfYnVmX3YyIDogKHU4ICopYWRkX2xsYztcbi1cdFx0c21jX2xsY19zYXZlX2FkZF9saW5rX3JrZXlzKGxpbmssIGxpbmtfbmV3LCBsbGNfbXNnKTtcbiYjNDM7XHRcdHNtY19sbGNfc2F2ZV9hZGRfbGlua19ya2V5cyhsaW5rLCBsaW5rX25ldywgcWVudHJ5KTtcbiBcdH0gZWxzZSB7XG4gXHRcdHJjID0gc21jX2xsY19zcnZfcmtleV9leGNoYW5nZShsaW5rLCBsaW5rX25ldyk7XG4gXHRcdGlmIChyYylcbkBAIC0xNTEyLDYgJiM0MzsxNTMzLDcgQEAgaW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcdHJjID0gc21jX2xsY19zcnZfY29uZl9saW5rKGxpbmssIGxpbmtfbmV3LCBsZ3JfbmV3X3QpO1xuIFx0aWYgKHJjKVxuIFx0XHRnb3RvIG91dF9lcnI7XG4mIzQzO1x0a2ZyZWUocWVudHJ5KTtcbiBcdGtmcmVlKGluaSk7XG4gXHRyZXR1cm4gMDtcbiBvdXRfZXJyOlxuQEAgLTE1MjAsNiAmIzQzOzE1NDIsNyBAQCBpbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxuIFx0XHRzbWNyX2xpbmtfY2xlYXIobGlua19uZXcsIGZhbHNlKTtcbiBcdH1cbiBvdXQ6XG4mIzQzO1x0a2ZyZWUocWVudHJ5KTtcbiBcdGtmcmVlKGluaSk7XG4gXHRpZiAoc2VuZF9yZXFfYWRkX2xpbmtfcmVzcClcbiBcdFx0c21jX2xsY19zZW5kX3JlcV9hZGRfbGlua19yZXNwb25zZShyZXFfcWVudHJ5KTtcbkBAIC0xNTUyLDcgJiM0MzsxNTc1LDggQEAgdm9pZCBzbWNfbGxjX2FkZF9saW5rX2xvY2FsKHN0cnVjdCBzbWNfbGluayAqbGluaylcbiBcdGFkZF9sbGMuaGQuY29tbW9uLmxsY190eXBlID0gU01DX0xMQ19BRERfTElOSztcbiBcdHNtY19sbGNfaW5pdF9tc2dfaGRyKFx1MDAyNmFkZF9sbGMuaGQsIGxpbmstXHUwMDNlbGdyLCBzaXplb2YoYWRkX2xsYykpO1xuIFx0Lyogbm8gZGV2IGFuZCBwb3J0IG5lZWRlZCAqL1xuLVx0c21jX2xsY19lbnF1ZXVlKGxpbmssICh1bmlvbiBzbWNfbGxjX21zZyAqKVx1MDAyNmFkZF9sbGMpO1xuJiM0MztcdHNtY19sbGNfZW5xdWV1ZShsaW5rLCAodW5pb24gc21jX2xsY19tc2cgKilcdTAwMjZhZGRfbGxjLFxuJiM0MztcdFx0XHRzaXplb2YodW5pb24gc21jX2xsY19tc2cpKTtcbiB9XG4gXG4gLyogd29ya2VyIHRvIHByb2Nlc3MgYW4gYWRkIGxpbmsgbWVzc2FnZSAqL1xuQEAgLTE1ODgsNyAmIzQzOzE2MTIsOCBAQCB2b2lkIHNtY19sbGNfc3J2X2RlbGV0ZV9saW5rX2xvY2FsKHN0cnVjdCBzbWNfbGluayAqbGluaywgdTggZGVsX2xpbmtfaWQpXG4gXHRkZWxfbGxjLmxpbmtfbnVtID0gZGVsX2xpbmtfaWQ7XG4gXHRkZWxfbGxjLnJlYXNvbiA9IGh0b25sKFNNQ19MTENfREVMX0xPU1RfUEFUSCk7XG4gXHRkZWxfbGxjLmhkLmZsYWdzIHw9IFNNQ19MTENfRkxBR19ERUxfTElOS19PUkRFUkxZO1xuLVx0c21jX2xsY19lbnF1ZXVlKGxpbmssICh1bmlvbiBzbWNfbGxjX21zZyAqKVx1MDAyNmRlbF9sbGMpO1xuJiM0MztcdHNtY19sbGNfZW5xdWV1ZShsaW5rLCAodW5pb24gc21jX2xsY19tc2cgKilcdTAwMjZkZWxfbGxjLFxuJiM0MztcdFx0XHRzaXplb2YodW5pb24gc21jX2xsY19tc2cpKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX2NsaV9kZWxldGVfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbkBAIC0xODEwLDE5ICYjNDM7MTgzNSwyOCBAQCBzdGF0aWMgdm9pZCBzbWNfbGxjX3JtdF9kZWxldGVfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbiBcdGxpbmsgPSBxZW50cnktXHUwMDNlbGluaztcbiBcbiBcdGlmIChsZ3ItXHUwMDNlc21jX3ZlcnNpb24gPT0gU01DX1YyKSB7XG4tXHRcdHN0cnVjdCBzbWNfbGxjX21zZ19kZWxldGVfcmtleV92MiAqbGxjdjI7XG4mIzQzO1x0XHRzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXlfdjJfaW5saW5lICpsbGN2MjtcbiBcbi1cdFx0aWYgKHNtY19saW5rX3NoYXJlZF92Ml9yeGJ1ZihsaW5rKSkge1xuLVx0XHRcdG1lbWNweShsZ3ItXHUwMDNld3JfcnhfYnVmX3YyLCBsbGMsIHNpemVvZigqbGxjKSk7XG4tXHRcdFx0bGxjdjIgPSAoc3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyICopbGdyLVx1MDAzZXdyX3J4X2J1Zl92Mjtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHRsbGN2MiA9IChzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXlfdjIgKilsbGM7XG4tXHRcdH1cbiYjNDM7XHRcdC8qIFRoZSBsZWFkaW5nIFNNQ19MTENfREVMX1JLRVlfVjJfSU5MSU5FIHJrZXlzIGFyZSBkZWNsYXJlZCBpblxuJiM0MztcdFx0ICogdGhlIG1lc3NhZ2UgaXRzZWxmLCBhbnkgZnVydGhlciBvbmVzIHdlcmUgcmVjZWl2ZWQgaW50b1xuJiM0MztcdFx0ICogcWVudHJ5LVx1MDAzZWJvZHkuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGxsY3YyID0gXHUwMDI2cWVudHJ5LVx1MDAzZW1zZy5kZWxldGVfcmtleV92MjtcbiBcdFx0bGxjdjItXHUwMDNlbnVtX2ludmFsX3JrZXlzID0gMDtcbiBcbiBcdFx0bWF4ID0gbWluX3QodTgsIGxsY3YyLVx1MDAzZW51bV9ya2V5cywgU01DX0xMQ19SS0VZU19QRVJfTVNHX1YyKTtcbiYjNDM7XHRcdG1heCA9IG1pbl90KHUzMiwgbWF4LCBTTUNfTExDX0RFTF9SS0VZX1YyX0lOTElORSAmIzQzO1xuJiM0MztcdFx0XHRcdCAgICAgIHFlbnRyeS1cdTAwM2Vib2R5X2xlbiAvIHNpemVvZihfX2JlMzIpKTtcbiBcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbWF4OyBpJiM0MzsmIzQzOykge1xuLVx0XHRcdGlmIChzbWNfcnRva2VuX2RlbGV0ZShsaW5rLCBsbGN2Mi1cdTAwM2Vya2V5W2ldKSlcbiYjNDM7XHRcdFx0X19iZTMyIHJrZXk7XG4mIzQzO1xuJiM0MztcdFx0XHRpZiAoaSBcdTAwM2MgU01DX0xMQ19ERUxfUktFWV9WMl9JTkxJTkUpXG4mIzQzO1x0XHRcdFx0cmtleSA9IGxsY3YyLVx1MDAzZXJrZXlbaV07XG4mIzQzO1x0XHRcdGVsc2VcbiYjNDM7XHRcdFx0XHRtZW1jcHkoXHUwMDI2cmtleSwgcWVudHJ5LVx1MDAzZWJvZHkgJiM0MztcbiYjNDM7XHRcdFx0XHRcdCAgICAgIChpIC0gU01DX0xMQ19ERUxfUktFWV9WMl9JTkxJTkUpICpcbiYjNDM7XHRcdFx0XHRcdCAgICAgIHNpemVvZihya2V5KSwgc2l6ZW9mKHJrZXkpKTtcbiYjNDM7XHRcdFx0aWYgKHNtY19ydG9rZW5fZGVsZXRlKGxpbmssIHJrZXkpKVxuIFx0XHRcdFx0bGxjdjItXHUwMDNlbnVtX2ludmFsX3JrZXlzJiM0MzsmIzQzOztcbiBcdFx0fVxuIFx0XHRtZW1zZXQoXHUwMDI2bGxjLVx1MDAzZXJrZXlbMF0sIDAsIHNpemVvZihsbGMtXHUwMDNlcmtleSkpO1xuQEAgLTIwNjMsMTggJiM0MzsyMDk3LDM1IEBAIHN0YXRpYyB2b2lkIHNtY19sbGNfcnhfcmVzcG9uc2Uoc3RydWN0IHNtY19saW5rICpsaW5rLFxuIFx0d2FrZV91cChcdTAwMjZsaW5rLVx1MDAzZWxnci1cdTAwM2VsbGNfbXNnX3dhaXRlcik7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHNtY19sbGNfZW5xdWV1ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHVuaW9uIHNtY19sbGNfbXNnICpsbGMpXG4mIzQzO3N0YXRpYyB2b2lkIHNtY19sbGNfZW5xdWV1ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHVuaW9uIHNtY19sbGNfbXNnICpsbGMsXG4mIzQzO1x0XHRcdCAgICB1MzIgYnl0ZV9sZW4pXG4ge1xuIFx0c3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IgPSBsaW5rLVx1MDAzZWxncjtcbiBcdHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5O1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcbiYjNDM7XHR1MTYgYm9keV9sZW4gPSAwO1xuIFxuLVx0cWVudHJ5ID0ga21hbGxvY19vYmooKnFlbnRyeSwgR0ZQX0FUT01JQyk7XG4mIzQzO1x0LyogVjIgbWVzc2FnZXMgY2FuIGJlIGxvbmdlciB0aGFuIHRoZSBpbmxpbmUgdW5pb24gc21jX2xsY19tc2cuIENhcnJ5XG4mIzQzO1x0ICogdGhlIHJlbWFpbmRlciBpbiB0aGUgcWVudHJ5IGl0c2VsZiwgc28gdGhhdCBpdHMgbGlmZXRpbWUgYW5kIGl0c1xuJiM0MztcdCAqIGxlbmd0aCBtYXRjaCB0aGUgbWVzc2FnZSB0aGUgcGVlciBhY3R1YWxseSBzZW50LlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChsZ3ItXHUwMDNlc21jX3ZlcnNpb24gPT0gU01DX1YyIFx1MDAyNlx1MDAyNiBieXRlX2xlbiBcdTAwM2UgU01DX1dSX1RYX1NJWkUpXG4mIzQzO1x0XHRib2R5X2xlbiA9IG1pbl90KHUzMiwgYnl0ZV9sZW4sIFNNQ19XUl9CVUZfVjJfU0laRSkgLVxuJiM0MztcdFx0XHQgICBTTUNfV1JfVFhfU0laRTtcbiYjNDM7XG4mIzQzO1x0cWVudHJ5ID0ga21hbGxvY19mbGV4KCpxZW50cnksIGJvZHksIGJvZHlfbGVuLCBHRlBfQVRPTUlDKTtcbiBcdGlmICghcWVudHJ5KVxuIFx0XHRyZXR1cm47XG4mIzQzO1x0cWVudHJ5LVx1MDAzZWJvZHlfbGVuID0gYm9keV9sZW47XG4gXHRxZW50cnktXHUwMDNlbGluayA9IGxpbms7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZxZW50cnktXHUwMDNlbGlzdCk7XG4gXHRtZW1jcHkoXHUwMDI2cWVudHJ5LVx1MDAzZW1zZywgbGxjLCBzaXplb2YodW5pb24gc21jX2xsY19tc2cpKTtcbiYjNDM7XHRpZiAoYm9keV9sZW4pIHtcbiYjNDM7XHRcdHU4ICpzcmMgPSBzbWNfbGlua19zaGFyZWRfdjJfcnhidWYobGluaykgP1xuJiM0MztcdFx0XHQodTggKilsZ3ItXHUwMDNld3JfcnhfYnVmX3YyIDogKHU4ICopbGxjO1xuJiM0MztcbiYjNDM7XHRcdG1lbWNweShxZW50cnktXHUwMDNlYm9keSwgc3JjICYjNDM7IFNNQ19XUl9UWF9TSVpFLCBib2R5X2xlbik7XG4mIzQzO1x0fVxuIFxuIFx0LyogcHJvY2VzcyByZXNwb25zZXMgaW1tZWRpYXRlbHkgKi9cbiBcdGlmICgobGxjLVx1MDAzZXJhdy5oZHIuZmxhZ3MgXHUwMDI2IFNNQ19MTENfRkxBR19SRVNQKSBcdTAwMjZcdTAwMjZcbkBAIC0yMTA2LDcgJiM0MzsyMTU3LDcgQEAgc3RhdGljIHZvaWQgc21jX2xsY19yeF9oYW5kbGVyKHN0cnVjdCBpYl93YyAqd2MsIHZvaWQgKmJ1ZilcbiBcdFx0XHRyZXR1cm47IC8qIGludmFsaWQgbWVzc2FnZSAqL1xuIFx0fVxuIFxuLVx0c21jX2xsY19lbnF1ZXVlKGxpbmssIGxsYyk7XG4mIzQzO1x0c21jX2xsY19lbnF1ZXVlKGxpbmssIGxsYywgd2MtXHUwMDNlYnl0ZV9sZW4pO1xuIH1cbiBcbiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogd29ya2VyLCB1dGlscyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTU6MDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtY19sbGNfY2xpX2FkZF9saW5rJiMzNDssCiAgICAmIzM0O3NtY19sbGNfc3J2X2FkZF9saW5rJiMzNDssCiAgICAmIzM0O3NtY19sbGNfYWRkX2xpbmtfbG9jYWwmIzM0OywKICAgICYjMzQ7c21jX2xsY19zcnZfZGVsZXRlX2xpbmtfbG9jYWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgaG93IFNNQyBMTEMgbWVzc2FnZXMgYXJlIGVucXVldWVkIGFuZCBwcm9jZXNzZWQsIHNwZWNpZmljYWxseSBmb3IgU01DX1YyIHdoZXJlIG1lc3NhZ2VzIGNhbiBiZSBsb25nZXIgdGhhbiBgdW5pb24gc21jX2xsY19tc2dgLiBJdCBpbnRyb2R1Y2VzIGBib2R5X2xlbmAgYW5kIGEgZmxleGlibGUgYXJyYXkgYGJvZHlbXWAgaW4gYHN0cnVjdCBzbWNfbGxjX3FlbnRyeWAgdG8gc3RvcmUgdGhlIGV4dHJhIGJ5dGVzIG9mIFYyIG1lc3NhZ2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFNNQyAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykgc3Vic3lzdGVtLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBBRl9TTUMgc29ja2V0cyBhbmQgc29mdHdhcmUgUkRNQS9JU00gZGV2aWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDZjMzhmM2MzZDYwNGI5MzM4ZTFmMjdlZDY2MjkzNDQxYjgzNzUyNzEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxIDE1OjA1OjM4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfbGxjLmMgYi9uZXQvc21jL3NtY19sbGMuYwppbmRleCA5NTRiMmZmMTgxNWMyLi4xYjE1MzE3M2RkNTE2IDEwMDY0NAotLS0gYS9uZXQvc21jL3NtY19sbGMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19sbGMuYwpAQCAtMTU3LDYgJiM0MzsxNTcsNyBAQCBzdHJ1Y3Qgc21jX2xsY19tc2dfY29uZmlybV9ya2V5IHsJLyogdHlwZSAweDA2ICovCiB9OwogCiAjZGVmaW5lIFNNQ19MTENfREVMX1JLRVlfTUFYCTgKJiM0MzsjZGVmaW5lIFNNQ19MTENfREVMX1JLRVlfVjJfSU5MSU5FCTkKICNkZWZpbmUgU01DX0xMQ19GTEFHX1JLRVlfUkVUUlkJMHgxMAogI2RlZmluZSBTTUNfTExDX0ZMQUdfUktFWV9ORUcJMHgyMAogCkBAIC0xNzcsNiAmIzQzOzE3OCwxNSBAQCBzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXlfdjIgewkvKiB0eXBlIDB4MjkgKi8KIAlfX2JlMzIgcmtleVtdOwogfTsKIAomIzQzOy8qIHRoZSBsZWFkaW5nIHJrZXlzIG9mIGEgREVMRVRFX1JLRVlfVjIgZml0IGludG8gdW5pb24gc21jX2xsY19tc2cgKi8KJiM0MztzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXlfdjJfaW5saW5lIHsJLyogdHlwZSAweDI5ICovCiYjNDM7CXN0cnVjdCBzbWNfbGxjX2hkciBoZDsKJiM0MzsJdTggbnVtX3JrZXlzOwomIzQzOwl1OCBudW1faW52YWxfcmtleXM7CiYjNDM7CXU4IHJlc2VydmVkWzJdOwomIzQzOwlfX2JlMzIgcmtleVtTTUNfTExDX0RFTF9SS0VZX1YyX0lOTElORV07CiYjNDM7fTsKJiM0MzsKIHVuaW9uIHNtY19sbGNfbXNnIHsKIAlzdHJ1Y3Qgc21jX2xsY19tc2dfY29uZmlybV9saW5rIGNvbmZpcm1fbGluazsKIAlzdHJ1Y3Qgc21jX2xsY19tc2dfYWRkX2xpbmsgYWRkX2xpbms7CkBAIC0xODYsNiAmIzQzOzE5Niw3IEBAIHVuaW9uIHNtY19sbGNfbXNnIHsKIAogCXN0cnVjdCBzbWNfbGxjX21zZ19jb25maXJtX3JrZXkgY29uZmlybV9ya2V5OwogCXN0cnVjdCBzbWNfbGxjX21zZ19kZWxldGVfcmtleSBkZWxldGVfcmtleTsKJiM0MzsJc3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyX2lubGluZSBkZWxldGVfcmtleV92MjsKIAogCXN0cnVjdCBzbWNfbGxjX21zZ190ZXN0X2xpbmsgdGVzdF9saW5rOwogCXN0cnVjdCB7CkBAIC0xOTQsMTUgJiM0MzsyMDUsMjMgQEAgdW5pb24gc21jX2xsY19tc2cgewogCX0gcmF3OwogfTsKIAomIzQzO3N0YXRpY19hc3NlcnQoU01DX0xMQ19ERUxfUktFWV9WMl9JTkxJTkUgPT0KJiM0MzsJICAgICAgKHNpemVvZih1bmlvbiBzbWNfbGxjX21zZykgLQomIzQzOwkgICAgICAgb2Zmc2V0b2Yoc3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyLCBya2V5KSkgLwomIzQzOwkgICAgICBzaXplb2YoX19iZTMyKSk7CiYjNDM7CiAjZGVmaW5lIFNNQ19MTENfRkxBR19SRVNQCQkweDgwCiAKIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSB7CiAJc3RydWN0IGxpc3RfaGVhZCBsaXN0OwogCXN0cnVjdCBzbWNfbGluayAqbGluazsKJiM0MzsJdTE2IGJvZHlfbGVuOwogCXVuaW9uIHNtY19sbGNfbXNnIG1zZzsKJiM0MzsJdTggYm9keVtdIF9fY291bnRlZF9ieShib2R5X2xlbik7CiB9OwogCi1zdGF0aWMgdm9pZCBzbWNfbGxjX2VucXVldWUoc3RydWN0IHNtY19saW5rICpsaW5rLCB1bmlvbiBzbWNfbGxjX21zZyAqbGxjKTsKJiM0MztzdGF0aWMgdm9pZCBzbWNfbGxjX2VucXVldWUoc3RydWN0IHNtY19saW5rICpsaW5rLCB1bmlvbiBzbWNfbGxjX21zZyAqbGxjLAomIzQzOwkJCSAgICB1MzIgYnl0ZV9sZW4pOwogCiBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnNtY19sbGNfZmxvd19xZW50cnlfY2xyKHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpCiB7CkBAIC05OTgsMTUgJiM0MzsxMDE3LDIwIEBAIHN0YXRpYyBpbnQgc21jX2xsY19jbGlfY29uZl9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywKIAogc3RhdGljIHZvaWQgc21jX2xsY19zYXZlX2FkZF9saW5rX3JrZXlzKHN0cnVjdCBzbWNfbGluayAqbGluaywKIAkJCQkJc3RydWN0IHNtY19saW5rICpsaW5rX25ldywKLQkJCQkJdTggKmxsY19tc2cpCiYjNDM7CQkJCQlzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSkKIHsKJiM0MzsJY29uc3QgdTMyIHJ0X29mZiA9IG9mZnNldG9mKHN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua192Ml9leHQsIHJ0KTsKIAlzdHJ1Y3Qgc21jX2xsY19tc2dfYWRkX2xpbmtfdjJfZXh0ICpleHQ7CiAJc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IgPSBsaW5rLSZndDtsZ3I7CiAJaW50IG1heCwgaTsKIAotCWV4dCA9IChzdHJ1Y3Qgc21jX2xsY19tc2dfYWRkX2xpbmtfdjJfZXh0ICopKGxsY19tc2cgJiM0MzsKLQkJCQkJCSAgICAgU01DX1dSX1RYX1NJWkUpOwomIzQzOwkvKiB0aGUgcmtleSBjb3VudCBpdHNlbGYgaXMgb25seSB0aGVyZSBpZiBlbm91Z2ggYnl0ZXMgYXJyaXZlZCAqLwomIzQzOwlpZiAocWVudHJ5LSZndDtib2R5X2xlbiAmbHQ7IHJ0X29mZikKJiM0MzsJCXJldHVybjsKJiM0MzsJZXh0ID0gKHN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua192Ml9leHQgKilxZW50cnktJmd0O2JvZHk7CiAJbWF4ID0gbWluX3QodTgsIGV4dC0mZ3Q7bnVtX3JrZXlzLCBTTUNfTExDX1JLRVlTX1BFUl9NU0dfVjIpOwomIzQzOwltYXggPSBtaW5fdCh1MzIsIG1heCwgKHFlbnRyeS0mZ3Q7Ym9keV9sZW4gLSBydF9vZmYpIC8KJiM0MzsJCQkgICAgICBzaXplb2YoZXh0LSZndDtydFswXSkpOwogCWRvd25fd3JpdGUoJmFtcDtsZ3ItJmd0O3JtYnNfbG9jayk7CiAJZm9yIChpID0gMDsgaSAmbHQ7IG1heDsgaSYjNDM7JiM0MzspIHsKIAkJc21jX3J0b2tlbl9zZXQobGdyLCBsaW5rLSZndDtsaW5rX2lkeCwgbGlua19uZXctJmd0O2xpbmtfaWR4LApAQCAtMTA5OSw5ICYjNDM7MTEyMyw3IEBAIGludCBzbWNfbGxjX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KQogCWlmIChyYykKIAkJZ290byBvdXRfY2xlYXJfbG5rOwogCWlmIChsZ3ItJmd0O3NtY192ZXJzaW9uID09IFNNQ19WMikgewotCQl1OCAqbGxjX21zZyA9IHNtY19saW5rX3NoYXJlZF92Ml9yeGJ1ZihsaW5rKSA/Ci0JCQkodTggKilsZ3ItJmd0O3dyX3J4X2J1Zl92MiA6ICh1OCAqKWxsYzsKLQkJc21jX2xsY19zYXZlX2FkZF9saW5rX3JrZXlzKGxpbmssIGxua19uZXcsIGxsY19tc2cpOwomIzQzOwkJc21jX2xsY19zYXZlX2FkZF9saW5rX3JrZXlzKGxpbmssIGxua19uZXcsIHFlbnRyeSk7CiAJfSBlbHNlIHsKIAkJcmMgPSBzbWNfbGxjX2NsaV9ya2V5X2V4Y2hhbmdlKGxpbmssIGxua19uZXcpOwogCQlpZiAocmMpIHsKQEAgLTE0ODEsNyAmIzQzOzE1MDMsNyBAQCBpbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLAogCX0KIAlhZGRfbGxjID0gJmFtcDtxZW50cnktJmd0O21zZy5hZGRfbGluazsKIAlpZiAoYWRkX2xsYy0mZ3Q7aGQuZmxhZ3MgJmFtcDsgU01DX0xMQ19GTEFHX0FERF9MTktfUkVKKSB7Ci0JCXNtY19sbGNfZmxvd19xZW50cnlfZGVsKCZhbXA7bGdyLSZndDtsbGNfZmxvd19sY2wpOwomIzQzOwkJc21jX2xsY19mbG93X3FlbnRyeV9jbHIoJmFtcDtsZ3ItJmd0O2xsY19mbG93X2xjbCk7CiAJCXJjID0gLUVOT0xJTks7CiAJCWdvdG8gb3V0X2VycjsKIAl9CkBAIC0xNDkyLDcgJiM0MzsxNTE0LDggQEAgaW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywKIAkJbGdyX25ld190ID0gU01DX0xHUl9BU1lNTUVUUklDX1BFRVI7CiAJfQogCXNtY19sbGNfc2F2ZV9hZGRfbGlua19pbmZvKGxpbmtfbmV3LCBhZGRfbGxjKTsKLQlzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbCgmYW1wO2xnci0mZ3Q7bGxjX2Zsb3dfbGNsKTsKJiM0MzsJLyogYWRkX2xsYyBzdGlsbCBwb2ludHMgaW50byBxZW50cnksIHNvIG9ubHkgZGV0YWNoIGl0IGhlcmUgKi8KJiM0MzsJc21jX2xsY19mbG93X3FlbnRyeV9jbHIoJmFtcDtsZ3ItJmd0O2xsY19mbG93X2xjbCk7CiAKIAlyYyA9IHNtY19pYl9yZWFkeV9saW5rKGxpbmtfbmV3KTsKIAlpZiAocmMpCkBAIC0xNTAxLDkgJiM0MzsxNTI0LDcgQEAgaW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywKIAlpZiAocmMpCiAJCWdvdG8gb3V0X2VycjsKIAlpZiAobGdyLSZndDtzbWNfdmVyc2lvbiA9PSBTTUNfVjIpIHsKLQkJdTggKmxsY19tc2cgPSBzbWNfbGlua19zaGFyZWRfdjJfcnhidWYobGluaykgPwotCQkJKHU4ICopbGdyLSZndDt3cl9yeF9idWZfdjIgOiAodTggKilhZGRfbGxjOwotCQlzbWNfbGxjX3NhdmVfYWRkX2xpbmtfcmtleXMobGluaywgbGlua19uZXcsIGxsY19tc2cpOwomIzQzOwkJc21jX2xsY19zYXZlX2FkZF9saW5rX3JrZXlzKGxpbmssIGxpbmtfbmV3LCBxZW50cnkpOwogCX0gZWxzZSB7CiAJCXJjID0gc21jX2xsY19zcnZfcmtleV9leGNoYW5nZShsaW5rLCBsaW5rX25ldyk7CiAJCWlmIChyYykKQEAgLTE1MTIsNiAmIzQzOzE1MzMsNyBAQCBpbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLAogCXJjID0gc21jX2xsY19zcnZfY29uZl9saW5rKGxpbmssIGxpbmtfbmV3LCBsZ3JfbmV3X3QpOwogCWlmIChyYykKIAkJZ290byBvdXRfZXJyOwomIzQzOwlrZnJlZShxZW50cnkpOwogCWtmcmVlKGluaSk7CiAJcmV0dXJuIDA7CiBvdXRfZXJyOgpAQCAtMTUyMCw2ICYjNDM7MTU0Miw3IEBAIGludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssCiAJCXNtY3JfbGlua19jbGVhcihsaW5rX25ldywgZmFsc2UpOwogCX0KIG91dDoKJiM0MzsJa2ZyZWUocWVudHJ5KTsKIAlrZnJlZShpbmkpOwogCWlmIChzZW5kX3JlcV9hZGRfbGlua19yZXNwKQogCQlzbWNfbGxjX3NlbmRfcmVxX2FkZF9saW5rX3Jlc3BvbnNlKHJlcV9xZW50cnkpOwpAQCAtMTU1Miw3ICYjNDM7MTU3NSw4IEBAIHZvaWQgc21jX2xsY19hZGRfbGlua19sb2NhbChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspCiAJYWRkX2xsYy5oZC5jb21tb24ubGxjX3R5cGUgPSBTTUNfTExDX0FERF9MSU5LOwogCXNtY19sbGNfaW5pdF9tc2dfaGRyKCZhbXA7YWRkX2xsYy5oZCwgbGluay0mZ3Q7bGdyLCBzaXplb2YoYWRkX2xsYykpOwogCS8qIG5vIGRldiBhbmQgcG9ydCBuZWVkZWQgKi8KLQlzbWNfbGxjX2VucXVldWUobGluaywgKHVuaW9uIHNtY19sbGNfbXNnICopJmFtcDthZGRfbGxjKTsKJiM0MzsJc21jX2xsY19lbnF1ZXVlKGxpbmssICh1bmlvbiBzbWNfbGxjX21zZyAqKSZhbXA7YWRkX2xsYywKJiM0MzsJCQlzaXplb2YodW5pb24gc21jX2xsY19tc2cpKTsKIH0KIAogLyogd29ya2VyIHRvIHByb2Nlc3MgYW4gYWRkIGxpbmsgbWVzc2FnZSAqLwpAQCAtMTU4OCw3ICYjNDM7MTYxMiw4IEBAIHZvaWQgc21jX2xsY19zcnZfZGVsZXRlX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rLCB1OCBkZWxfbGlua19pZCkKIAlkZWxfbGxjLmxpbmtfbnVtID0gZGVsX2xpbmtfaWQ7CiAJZGVsX2xsYy5yZWFzb24gPSBodG9ubChTTUNfTExDX0RFTF9MT1NUX1BBVEgpOwogCWRlbF9sbGMuaGQuZmxhZ3MgfD0gU01DX0xMQ19GTEFHX0RFTF9MSU5LX09SREVSTFk7Ci0Jc21jX2xsY19lbnF1ZXVlKGxpbmssICh1bmlvbiBzbWNfbGxjX21zZyAqKSZhbXA7ZGVsX2xsYyk7CiYjNDM7CXNtY19sbGNfZW5xdWV1ZShsaW5rLCAodW5pb24gc21jX2xsY19tc2cgKikmYW1wO2RlbF9sbGMsCiYjNDM7CQkJc2l6ZW9mKHVuaW9uIHNtY19sbGNfbXNnKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19jbGlfZGVsZXRlX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpCkBAIC0xODEwLDE5ICYjNDM7MTgzNSwyOCBAQCBzdGF0aWMgdm9pZCBzbWNfbGxjX3JtdF9kZWxldGVfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncikKIAlsaW5rID0gcWVudHJ5LSZndDtsaW5rOwogCiAJaWYgKGxnci0mZ3Q7c21jX3ZlcnNpb24gPT0gU01DX1YyKSB7Ci0JCXN0cnVjdCBzbWNfbGxjX21zZ19kZWxldGVfcmtleV92MiAqbGxjdjI7CiYjNDM7CQlzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXlfdjJfaW5saW5lICpsbGN2MjsKIAotCQlpZiAoc21jX2xpbmtfc2hhcmVkX3YyX3J4YnVmKGxpbmspKSB7Ci0JCQltZW1jcHkobGdyLSZndDt3cl9yeF9idWZfdjIsIGxsYywgc2l6ZW9mKCpsbGMpKTsKLQkJCWxsY3YyID0gKHN0cnVjdCBzbWNfbGxjX21zZ19kZWxldGVfcmtleV92MiAqKWxnci0mZ3Q7d3JfcnhfYnVmX3YyOwotCQl9IGVsc2UgewotCQkJbGxjdjIgPSAoc3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyICopbGxjOwotCQl9CiYjNDM7CQkvKiBUaGUgbGVhZGluZyBTTUNfTExDX0RFTF9SS0VZX1YyX0lOTElORSBya2V5cyBhcmUgZGVjbGFyZWQgaW4KJiM0MzsJCSAqIHRoZSBtZXNzYWdlIGl0c2VsZiwgYW55IGZ1cnRoZXIgb25lcyB3ZXJlIHJlY2VpdmVkIGludG8KJiM0MzsJCSAqIHFlbnRyeS0mZ3Q7Ym9keS4KJiM0MzsJCSAqLwomIzQzOwkJbGxjdjIgPSAmYW1wO3FlbnRyeS0mZ3Q7bXNnLmRlbGV0ZV9ya2V5X3YyOwogCQlsbGN2Mi0mZ3Q7bnVtX2ludmFsX3JrZXlzID0gMDsKIAogCQltYXggPSBtaW5fdCh1OCwgbGxjdjItJmd0O251bV9ya2V5cywgU01DX0xMQ19SS0VZU19QRVJfTVNHX1YyKTsKJiM0MzsJCW1heCA9IG1pbl90KHUzMiwgbWF4LCBTTUNfTExDX0RFTF9SS0VZX1YyX0lOTElORSAmIzQzOwomIzQzOwkJCQkgICAgICBxZW50cnktJmd0O2JvZHlfbGVuIC8gc2l6ZW9mKF9fYmUzMikpOwogCQlmb3IgKGkgPSAwOyBpICZsdDsgbWF4OyBpJiM0MzsmIzQzOykgewotCQkJaWYgKHNtY19ydG9rZW5fZGVsZXRlKGxpbmssIGxsY3YyLSZndDtya2V5W2ldKSkKJiM0MzsJCQlfX2JlMzIgcmtleTsKJiM0MzsKJiM0MzsJCQlpZiAoaSAmbHQ7IFNNQ19MTENfREVMX1JLRVlfVjJfSU5MSU5FKQomIzQzOwkJCQlya2V5ID0gbGxjdjItJmd0O3JrZXlbaV07CiYjNDM7CQkJZWxzZQomIzQzOwkJCQltZW1jcHkoJmFtcDtya2V5LCBxZW50cnktJmd0O2JvZHkgJiM0MzsKJiM0MzsJCQkJCSAgICAgIChpIC0gU01DX0xMQ19ERUxfUktFWV9WMl9JTkxJTkUpICoKJiM0MzsJCQkJCSAgICAgIHNpemVvZihya2V5KSwgc2l6ZW9mKHJrZXkpKTsKJiM0MzsJCQlpZiAoc21jX3J0b2tlbl9kZWxldGUobGluaywgcmtleSkpCiAJCQkJbGxjdjItJmd0O251bV9pbnZhbF9ya2V5cyYjNDM7JiM0Mzs7CiAJCX0KIAkJbWVtc2V0KCZhbXA7bGxjLSZndDtya2V5WzBdLCAwLCBzaXplb2YobGxjLSZndDtya2V5KSk7CkBAIC0yMDYzLDE4ICYjNDM7MjA5NywzNSBAQCBzdGF0aWMgdm9pZCBzbWNfbGxjX3J4X3Jlc3BvbnNlKHN0cnVjdCBzbWNfbGluayAqbGluaywKIAl3YWtlX3VwKCZhbXA7bGluay0mZ3Q7bGdyLSZndDtsbGNfbXNnX3dhaXRlcik7CiB9CiAKLXN0YXRpYyB2b2lkIHNtY19sbGNfZW5xdWV1ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHVuaW9uIHNtY19sbGNfbXNnICpsbGMpCiYjNDM7c3RhdGljIHZvaWQgc21jX2xsY19lbnF1ZXVlKHN0cnVjdCBzbWNfbGluayAqbGluaywgdW5pb24gc21jX2xsY19tc2cgKmxsYywKJiM0MzsJCQkgICAgdTMyIGJ5dGVfbGVuKQogewogCXN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyID0gbGluay0mZ3Q7bGdyOwogCXN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5OwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiYjNDM7CXUxNiBib2R5X2xlbiA9IDA7CiAKLQlxZW50cnkgPSBrbWFsbG9jX29iaigqcWVudHJ5LCBHRlBfQVRPTUlDKTsKJiM0MzsJLyogVjIgbWVzc2FnZXMgY2FuIGJlIGxvbmdlciB0aGFuIHRoZSBpbmxpbmUgdW5pb24gc21jX2xsY19tc2cuIENhcnJ5CiYjNDM7CSAqIHRoZSByZW1haW5kZXIgaW4gdGhlIHFlbnRyeSBpdHNlbGYsIHNvIHRoYXQgaXRzIGxpZmV0aW1lIGFuZCBpdHMKJiM0MzsJICogbGVuZ3RoIG1hdGNoIHRoZSBtZXNzYWdlIHRoZSBwZWVyIGFjdHVhbGx5IHNlbnQuCiYjNDM7CSAqLwomIzQzOwlpZiAobGdyLSZndDtzbWNfdmVyc2lvbiA9PSBTTUNfVjIgJmFtcDsmYW1wOyBieXRlX2xlbiAmZ3Q7IFNNQ19XUl9UWF9TSVpFKQomIzQzOwkJYm9keV9sZW4gPSBtaW5fdCh1MzIsIGJ5dGVfbGVuLCBTTUNfV1JfQlVGX1YyX1NJWkUpIC0KJiM0MzsJCQkgICBTTUNfV1JfVFhfU0laRTsKJiM0MzsKJiM0MzsJcWVudHJ5ID0ga21hbGxvY19mbGV4KCpxZW50cnksIGJvZHksIGJvZHlfbGVuLCBHRlBfQVRPTUlDKTsKIAlpZiAoIXFlbnRyeSkKIAkJcmV0dXJuOwomIzQzOwlxZW50cnktJmd0O2JvZHlfbGVuID0gYm9keV9sZW47CiAJcWVudHJ5LSZndDtsaW5rID0gbGluazsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO3FlbnRyeS0mZ3Q7bGlzdCk7CiAJbWVtY3B5KCZhbXA7cWVudHJ5LSZndDttc2csIGxsYywgc2l6ZW9mKHVuaW9uIHNtY19sbGNfbXNnKSk7CiYjNDM7CWlmIChib2R5X2xlbikgewomIzQzOwkJdTggKnNyYyA9IHNtY19saW5rX3NoYXJlZF92Ml9yeGJ1ZihsaW5rKSA/CiYjNDM7CQkJKHU4ICopbGdyLSZndDt3cl9yeF9idWZfdjIgOiAodTggKilsbGM7CiYjNDM7CiYjNDM7CQltZW1jcHkocWVudHJ5LSZndDtib2R5LCBzcmMgJiM0MzsgU01DX1dSX1RYX1NJWkUsIGJvZHlfbGVuKTsKJiM0MzsJfQogCiAJLyogcHJvY2VzcyByZXNwb25zZXMgaW1tZWRpYXRlbHkgKi8KIAlpZiAoKGxsYy0mZ3Q7cmF3Lmhkci5mbGFncyAmYW1wOyBTTUNfTExDX0ZMQUdfUkVTUCkgJmFtcDsmYW1wOwpAQCAtMjEwNiw3ICYjNDM7MjE1Nyw3IEBAIHN0YXRpYyB2b2lkIHNtY19sbGNfcnhfaGFuZGxlcihzdHJ1Y3QgaWJfd2MgKndjLCB2b2lkICpidWYpCiAJCQlyZXR1cm47IC8qIGludmFsaWQgbWVzc2FnZSAqLwogCX0KIAotCXNtY19sbGNfZW5xdWV1ZShsaW5rLCBsbGMpOwomIzQzOwlzbWNfbGxjX2VucXVldWUobGluaywgbGxjLCB3Yy0mZ3Q7Ynl0ZV9sZW4pOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogd29ya2VyLCB1dGlscyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE1OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5NDcKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiA1ODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gdGhlIFNNQyBMTEMgU3Vic3lzdGVtKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIG1vZGlmeWluZyBgbmV0L3NtYy9zbWNfbGxjLmNgLiBJdCBzZWVtcyB0byBiZSBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBTTUNfVjIsIGRlYWxpbmcgd2l0aCBMTEMgbWVzc2FnZXMgdGhhdCBleGNlZWQgdGhlIHNpemUgbGltaXRhdGlvbnMgb2YgYHVuaW9uIHNtY19sbGNfbXNnYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgaG93IHRoZXNlIGxvbmdlciBtZXNzYWdlcyBhcmUgaGFuZGxlZCB3aXRoaW4gdGhlIGBzbWNfbGxjX3FlbnRyeWAgc3RydWN0dXJlLiBUaGV5JiMzOTt2ZSBpbnRyb2R1Y2VkIGBib2R5X2xlbmAgYW5kIGEgZmxleGlibGUgYXJyYXkgYGJvZHlbXWAgaW4gYHN0cnVjdCBzbWNfbGxjX3FlbnRyeWAgdG8gYWNjb21tb2RhdGUgdGhlIGV4dHJhIGJ5dGVzLiBUaGlzIG1lYW5zIGBzbWNfbGxjX2VucXVldWVgIG5vdyBhY2NvdW50cyBmb3IgdGhpcyBhbmQgYWxsb2NhdGVzIHRoZSBgcWVudHJ5YCBhY2NvcmRpbmdseSwgdGFraW5nIGBieXRlX2xlbmAgaW50byBhY2NvdW50LiBUaGUgZnVuY3Rpb25zIGBzbWNfbGxjX3NhdmVfYWRkX2xpbmtfcmtleXNgIGFuZCBgc21jX2xsY19ybXRfZGVsZXRlX3JrZXlgIGhhdmUgYmVlbiB1cGRhdGVkIHRvIHJlYWQgdGhlIGRhdGEgZGlyZWN0bHkgZnJvbSBgcWVudHJ5LSZndDtib2R5YCByYXRoZXIgdGhhbiByZWx5aW5nIG9uIGEgc2hhcmVkIGJ1ZmZlci4KCkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIHNpZ25pZmljYW50IGNoYW5nZSB0byBob3cgU01DIExMQyBtZXNzYWdlcywgcGFydGljdWxhcmx5IGluIFYyLCBhcmUgbWFuYWdlZC4gU01DLCBhcyBhIG5ldHdvcmsgcHJvdG9jb2wsIGlzIGludGVyZXN0aW5nIGJlY2F1c2Ugb2YgaXRzIHNoYXJlZCBtZW1vcnkgY2hhcmFjdGVyaXN0aWNzLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSByZWFjaCB0aGlzIG5ldyBjb2RlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGFuZCBob3cgZWFzaWx5IGNhbiB3ZSB0ZXN0IGl0PwoKTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUsIHllcywgd2UgY2FuIHJlYWNoIGl0LiBJIGtub3cgU01DIGNhbiBiZSB0ZXN0ZWQgdXNpbmcgYEFGX1NNQ2Agc29ja2V0cy4gVGhlcmUmIzM5O3MgdGhlIHNvZnR3YXJlIElTTSBkZXZpY2UgYW5kIGxvb3BiYWNrIGRldmljZXMgbGlrZSBgbG9vcGJhY2staXNtYCBhbmQgYHNtY19sb29wYmFja2AuIEFsc28sIHN5emthbGxlciBmdXp6ZXMgU01DIHZpYSBgQUZfU01DYCBzb2NrZXRzLiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCBkb2VzIHN5emthbGxlciB0YXJnZXQgdGhpcyBzcGVjaWZpYyBjb2RlPwoKQSBxdWljayBjaGVjayBjb25maXJtcyB0aGF0IHN5emthbGxlciAqZG9lcyogaGF2ZSBTTUMgZGVzY3JpcHRpb25zLCB3aGljaCBpcyBhIGdvb2Qgc2lnbi4gRGlnZ2luZyBkZWVwZXIsIEkgc2VlIHRoYXQgYHNtY19sbGNfZW5xdWV1ZWAgaXMgY2FsbGVkIGZyb20gYHNtY19sbGNfcnhfaGFuZGxlcmAuIGBzbWNfbGxjX3J4X2hhbmRsZXJgIGlzIHRoZSBJQiB3b3JrIGNvbXBsZXRpb24gaGFuZGxlciBmb3IgTExDIG1lc3NhZ2VzLiBTbywgdGhlc2UgTExDIG1lc3NhZ2VzIGFyZSByZWNlaXZlZCBvdmVyIGFuIElCIHF1ZXVlIHBhaXIuIElmIHdlIGhhdmUgYSBzb2Z0d2FyZSBSRE1BIGRldmljZSBsaWtlIGByeGVgIG9yIGBzaXdgIChTb2Z0aVdBUlApIGNvbmZpZ3VyZWQsIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlLiBBbmQsIGltcG9ydGFudGx5LCBzeXprYWxsZXIgc3VwcG9ydHMgYm90aCBgcnhlYCBhbmQgYHNpd2AuIFNNQyBhbHNvIHN1cHBvcnRzIElTTS4gU28sIHdlJiMzOTtyZSBsb29raW5nIGF0IFNNQyBvdmVyIGByeGVgIG9yIGBzaXdgLCB3aGljaCBzeXprYWxsZXIgYWxzbyBmdXp6emVzLgoKVG8gZnVydGhlciByZWZpbmUgbXkgYW5hbHlzaXMsIEkgc2hvdWxkIGlkZW50aWZ5IGtleSBzeW1ib2xzIHRvIGZvY3VzIG9uOiBgc21jX2xsY19lbnF1ZXVlYCwgYHNtY19sbGNfc2F2ZV9hZGRfbGlua19ya2V5c2AsIGBzbWNfbGxjX3JtdF9kZWxldGVfcmtleWAsIGBzbWNfbGxjX3J4X2hhbmRsZXJgLCBgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBhbmQgYHNtY19sbGNfc3J2X2FkZF9saW5rYC4gSSBuZWVkIHRvIGNoZWNrIGBuZXQvc21jL3NtY19sbGMuY2AgdG8gc2VlIGlmIHRoZXkmIzM5O3JlIHN0YXRpYyBvciBleHBvcnRlZCBhbmQgZGV0ZXJtaW5lIHdoaWNoIG9uZXMgYXJlIHRoZSBtb3N0IHZhbHVhYmxlIHRvIHNjcnV0aW5pemUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTU6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XihzdGF0aWMgKT8oaW50fHZvaWQpIHNtY19sbGNfLipcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL3NtY19sbGMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19sbGMuYz0yMTU9c3RydWN0IHNtY19sbGNfcWVudHJ5IHtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMjItXG5uZXQvc21jL3NtY19sbGMuYzoyMjM6c3RhdGljIHZvaWQgc21jX2xsY19lbnF1ZXVlKHN0cnVjdCBzbWNfbGluayAqbGluaywgdW5pb24gc21jX2xsY19tc2cgKmxsYyxcbm5ldC9zbWMvc21jX2xsYy5jLTIyNC1cdFx0XHQgICAgdTMyIGJ5dGVfbGVuKTtcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0yMjY9c3RydWN0IHNtY19sbGNfcWVudHJ5ICpzbWNfbGxjX2Zsb3dfcWVudHJ5X2NscihzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIzMy1cbm5ldC9zbWMvc21jX2xsYy5jOjIzNDp2b2lkIHNtY19sbGNfZmxvd19xZW50cnlfZGVsKHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpXG5uZXQvc21jL3NtY19sbGMuYy0yMzUte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTI0NT1zdGF0aWMgaW5saW5lIHZvaWQgc21jX2xsY19mbG93X3FlbnRyeV9zZXQoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdyxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yNTAtXG5uZXQvc21jL3NtY19sbGMuYzoyNTE6c3RhdGljIHZvaWQgc21jX2xsY19mbG93X3BhcmFsbGVsKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCB1OCBmbG93X3R5cGUsXG5uZXQvc21jL3NtY19sbGMuYy0yNTItXHRcdFx0XHQgIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTI3Mz1zdGF0aWMgYm9vbCBzbWNfbGxjX2Zsb3dfc3RhcnQoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdyxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0zMDQtLyogc3RhcnQgYSBuZXcgbG9jYWwgbGxjIGZsb3csIHdhaXQgdGlsbCBjdXJyZW50IGZsb3cgZmluaXNoZWQgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjMwNTppbnQgc21jX2xsY19mbG93X2luaXRpYXRlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxubmV0L3NtYy9zbWNfbGxjLmMtMzA2LVx0XHRcdCAgZW51bSBzbWNfbGxjX2Zsb3d0eXBlIHR5cGUpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMzM4LS8qIGZpbmlzaCB0aGUgY3VycmVudCBsbGMgZmxvdyAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MzM5OnZvaWQgc21jX2xsY19mbG93X3N0b3Aoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpXG5uZXQvc21jL3NtY19sbGMuYy0zNDAte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTM5NT1zdHJ1Y3Qgc21jX2xsY190eF9wZW5kIHtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0zOTgtLyogaGFuZGxlciBmb3Igc2VuZC90cmFuc21pc3Npb24gY29tcGxldGlvbiBvZiBhbiBMTEMgbXNnICovXG5uZXQvc21jL3NtY19sbGMuYzozOTk6c3RhdGljIHZvaWQgc21jX2xsY190eF9oYW5kbGVyKHN0cnVjdCBzbWNfd3JfdHhfcGVuZF9wcml2ICpwZW5kLFxubmV0L3NtYy9zbWNfbGxjLmMtNDAwLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtNDE4LSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6NDE5OnN0YXRpYyBpbnQgc21jX2xsY19hZGRfcGVuZGluZ19zZW5kKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTQyMC1cdFx0XHRcdCAgICBzdHJ1Y3Qgc21jX3dyX2J1ZiAqKndyX2J1Zixcbi0tXG5uZXQvc21jL3NtY19sbGMuYy00NDAtXG5uZXQvc21jL3NtY19sbGMuYzo0NDE6c3RhdGljIGludCBzbWNfbGxjX2FkZF9wZW5kaW5nX3NlbmRfdjIoc3RydWN0IHNtY19saW5rICpsaW5rLFxubmV0L3NtYy9zbWNfbGxjLmMtNDQyLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBzbWNfd3JfdjJfYnVmICoqd3JfYnVmLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTQ1Mi1cbm5ldC9zbWMvc21jX2xsYy5jOjQ1MzpzdGF0aWMgdm9pZCBzbWNfbGxjX2luaXRfbXNnX2hkcihzdHJ1Y3Qgc21jX2xsY19oZHIgKmhkcixcbm5ldC9zbWMvc21jX2xsYy5jLTQ1NC1cdFx0XHRcdCBzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc2l6ZV90IGxlbilcbi0tXG5uZXQvc21jL3NtY19sbGMuYy00NjUtLyogaGlnaC1sZXZlbCBBUEkgdG8gc2VuZCBMTEMgY29uZmlybSBsaW5rICovXG5uZXQvc21jL3NtY19sbGMuYzo0NjY6aW50IHNtY19sbGNfc2VuZF9jb25maXJtX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxubmV0L3NtYy9zbWNfbGxjLmMtNDY3LVx0XHRcdCAgICAgIGVudW0gc21jX2xsY19yZXFyZXNwIHJlcXJlc3ApXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtNTA1LS8qIHNlbmQgTExDIGNvbmZpcm0gcmtleSByZXF1ZXN0ICovXG5uZXQvc21jL3NtY19sbGMuYzo1MDY6c3RhdGljIGludCBzbWNfbGxjX3NlbmRfY29uZmlybV9ya2V5KHN0cnVjdCBzbWNfbGluayAqc2VuZF9saW5rLFxubmV0L3NtYy9zbWNfbGxjLmMtNTA3LVx0XHRcdFx0ICAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy01NTQtLyogc2VuZCBMTEMgZGVsZXRlIHJrZXkgcmVxdWVzdCAqL1xubmV0L3NtYy9zbWNfbGxjLmM6NTU1OnN0YXRpYyBpbnQgc21jX2xsY19zZW5kX2RlbGV0ZV9ya2V5KHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTU1Ni1cdFx0XHRcdCAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcbi0tXG5uZXQvc21jL3NtY19sbGMuYz02MTU9c3RhdGljIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnNtY19sbGNfZ2V0X2ZpcnN0X3JtYihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbi0tXG5uZXQvc21jL3NtY19sbGMuYy02MjEtXG5uZXQvc21jL3NtY19sbGMuYzo2MjI6c3RhdGljIGludCBzbWNfbGxjX2ZpbGxfZXh0X3YyKHN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua192Ml9leHQgKmV4dCxcbm5ldC9zbWMvc21jX2xsYy5jLTYyMy1cdFx0XHQgICAgICAgc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTY2MS0vKiBzZW5kIEFERCBMSU5LIHJlcXVlc3Qgb3IgcmVzcG9uc2UgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjY2MjppbnQgc21jX2xsY19zZW5kX2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgdTggbWFjW10sIHU4IGdpZFtdLFxubmV0L3NtYy9zbWNfbGxjLmMtNjYzLVx0XHRcdCAgc3RydWN0IHNtY19saW5rICpsaW5rX25ldyxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy03MjItLyogc2VuZCBERUxFVEUgTElOSyByZXF1ZXN0IG9yIHJlc3BvbnNlICovXG5uZXQvc21jL3NtY19sbGMuYzo3MjM6aW50IHNtY19sbGNfc2VuZF9kZWxldGVfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHU4IGxpbmtfZGVsX2lkLFxubmV0L3NtYy9zbWNfbGxjLmMtNzI0LVx0XHRcdCAgICAgZW51bSBzbWNfbGxjX3JlcXJlc3AgcmVxcmVzcCwgYm9vbCBvcmRlcmx5LFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTc1OC0vKiBzZW5kIExMQyB0ZXN0IGxpbmsgcmVxdWVzdCAqL1xubmV0L3NtYy9zbWNfbGxjLmM6NzU5OnN0YXRpYyBpbnQgc21jX2xsY19zZW5kX3Rlc3RfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHU4IHVzZXJfZGF0YVsxNl0pXG5uZXQvc21jL3NtY19sbGMuYy03NjAte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTc4My0vKiBzY2hlZHVsZSBhbiBsbGMgc2VuZCBvbiBsaW5rLCBtYXkgd2FpdCBmb3IgYnVmZmVycyAqL1xubmV0L3NtYy9zbWNfbGxjLmM6Nzg0OnN0YXRpYyBpbnQgc21jX2xsY19zZW5kX21lc3NhZ2Uoc3RydWN0IHNtY19saW5rICpsaW5rLCB2b2lkICpsbGNidWYpXG5uZXQvc21jL3NtY19sbGMuYy03ODUte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTgwNS0gKi9cbm5ldC9zbWMvc21jX2xsYy5jOjgwNjpzdGF0aWMgaW50IHNtY19sbGNfc2VuZF9tZXNzYWdlX3dhaXQoc3RydWN0IHNtY19saW5rICpsaW5rLCB2b2lkICpsbGNidWYpXG5uZXQvc21jL3NtY19sbGMuYy04MDcte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTgyNS1cbm5ldC9zbWMvc21jX2xsYy5jOjgyNjpzdGF0aWMgaW50IHNtY19sbGNfYWxsb2NfYWx0X2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXG5uZXQvc21jL3NtY19sbGMuYy04MjctXHRcdFx0XHQgIGVudW0gc21jX2xncl90eXBlIGxncl9uZXdfdClcbi0tXG5uZXQvc21jL3NtY19sbGMuYy04NTAtLyogc2VuZCBvbmUgYWRkX2xpbmtfY29udGludWUgbXNnICovXG5uZXQvc21jL3NtY19sbGMuYzo4NTE6c3RhdGljIGludCBzbWNfbGxjX2FkZF9saW5rX2NvbnQoc3RydWN0IHNtY19saW5rICpsaW5rLFxubmV0L3NtYy9zbWNfbGxjLmMtODUyLVx0XHRcdFx0IHN0cnVjdCBzbWNfbGluayAqbGlua19uZXcsIHU4ICpudW1fcmtleXNfdG9kbyxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy05MDUtXG5uZXQvc21jL3NtY19sbGMuYzo5MDY6c3RhdGljIGludCBzbWNfbGxjX2NsaV9ya2V5X2V4Y2hhbmdlKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTkwNy1cdFx0XHRcdCAgICAgc3RydWN0IHNtY19saW5rICpsaW5rX25ldylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy05NDktLyogcHJlcGFyZSBhbmQgc2VuZCBhbiBhZGQgbGluayByZWplY3QgcmVzcG9uc2UgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjk1MDpzdGF0aWMgaW50IHNtY19sbGNfY2xpX2FkZF9saW5rX3JlamVjdChzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbm5ldC9zbWMvc21jX2xsYy5jLTk1MS17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtOTU5LVxubmV0L3NtYy9zbWNfbGxjLmM6OTYwOnN0YXRpYyBpbnQgc21jX2xsY19jbGlfY29uZl9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTk2MS1cdFx0XHRcdCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEwMTctXG5uZXQvc21jL3NtY19sbGMuYzoxMDE4OnN0YXRpYyB2b2lkIHNtY19sbGNfc2F2ZV9hZGRfbGlua19ya2V5cyhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG5uZXQvc21jL3NtY19sbGMuYy0xMDE5LVx0XHRcdFx0XHRzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3LFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEwNDMtXG5uZXQvc21jL3NtY19sbGMuYzoxMDQ0OnN0YXRpYyB2b2lkIHNtY19sbGNfc2F2ZV9hZGRfbGlua19pbmZvKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTEwNDUtXHRcdFx0XHQgICAgICAgc3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rICphZGRfbGxjKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEwNTQtLyogYXMgYW4gU01DIGNsaWVudCwgcHJvY2VzcyBhbiBhZGQgbGluayByZXF1ZXN0ICovXG5uZXQvc21jL3NtY19sbGMuYzoxMDU1OmludCBzbWNfbGxjX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxubmV0L3NtYy9zbWNfbGxjLmMtMTA1Ni17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTE0Ny1cbm5ldC9zbWMvc21jX2xsYy5jOjExNDg6c3RhdGljIHZvaWQgc21jX2xsY19zZW5kX3JlcXVlc3RfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rKVxubmV0L3NtYy9zbWNfbGxjLmMtMTE0OS17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTE4Ni0vKiBhcyBhbiBTTUMgY2xpZW50LCBpbnZpdGUgc2VydmVyIHRvIHN0YXJ0IHRoZSBhZGRfbGluayBwcm9jZXNzaW5nICovXG5uZXQvc21jL3NtY19sbGMuYzoxMTg3OnN0YXRpYyB2b2lkIHNtY19sbGNfY2xpX2FkZF9saW5rX2ludml0ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG5uZXQvc21jL3NtY19sbGMuYy0xMTg4LVx0XHRcdFx0XHRzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xMjMxPXN0YXRpYyBib29sIHNtY19sbGNfaXNfbG9jYWxfYWRkX2xpbmsodW5pb24gc21jX2xsY19tc2cgKmxsYylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xMjM4LVxubmV0L3NtYy9zbWNfbGxjLmM6MTIzOTpzdGF0aWMgdm9pZCBzbWNfbGxjX3Byb2Nlc3NfY2xpX2FkZF9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfbGxjLmMtMTI0MC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTI1Mi1cbm5ldC9zbWMvc21jX2xsYy5jOjEyNTM6c3RhdGljIGludCBzbWNfbGxjX2FjdGl2ZV9saW5rX2NvdW50KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfbGxjLmMtMTI1NC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MTI2Nj1zdGF0aWMgc3RydWN0IHNtY19saW5rICpzbWNfbGxjX2ZpbmRfYXN5bV9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEzMDktXG5uZXQvc21jL3NtY19sbGMuYzoxMzEwOnN0YXRpYyB2b2lkIHNtY19sbGNfZGVsZXRlX2FzeW1fbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbm5ldC9zbWMvc21jX2xsYy5jLTEzMTEte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEzNDMtXG5uZXQvc21jL3NtY19sbGMuYzoxMzQ0OnN0YXRpYyBpbnQgc21jX2xsY19zcnZfcmtleV9leGNoYW5nZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG5uZXQvc21jL3NtY19sbGMuYy0xMzQ1LVx0XHRcdFx0ICAgICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEzODQtXG5uZXQvc21jL3NtY19sbGMuYzoxMzg1OnN0YXRpYyBpbnQgc21jX2xsY19zcnZfY29uZl9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTEzODYtXHRcdFx0XHQgc3RydWN0IHNtY19saW5rICpsaW5rX25ldyxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNDE4LVxubmV0L3NtYy9zbWNfbGxjLmM6MTQxOTpzdGF0aWMgdm9pZCBzbWNfbGxjX3NlbmRfcmVxX2FkZF9saW5rX3Jlc3BvbnNlKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxubmV0L3NtYy9zbWNfbGxjLmMtMTQyMC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTQyNy1cbm5ldC9zbWMvc21jX2xsYy5jOjE0Mjg6aW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTE0MjktXHRcdFx0IHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcmVxX3FlbnRyeSlcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNTUxLVxubmV0L3NtYy9zbWNfbGxjLmM6MTU1MjpzdGF0aWMgdm9pZCBzbWNfbGxjX3Byb2Nlc3Nfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfbGxjLmMtMTU1My17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTU3MC0vKiBlbnF1ZXVlIGEgbG9jYWwgYWRkX2xpbmsgcmVxIHRvIHRyaWdnZXIgYSBuZXcgYWRkX2xpbmsgZmxvdyAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTU3MTp2b2lkIHNtY19sbGNfYWRkX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rKVxubmV0L3NtYy9zbWNfbGxjLmMtMTU3Mi17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTU4Mi0vKiB3b3JrZXIgdG8gcHJvY2VzcyBhbiBhZGQgbGluayBtZXNzYWdlICovXG5uZXQvc21jL3NtY19sbGMuYzoxNTgzOnN0YXRpYyB2b2lkIHNtY19sbGNfYWRkX2xpbmtfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvc21jL3NtY19sbGMuYy0xNTg0LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNjA1LSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTYwNjp2b2lkIHNtY19sbGNfc3J2X2RlbGV0ZV9saW5rX2xvY2FsKHN0cnVjdCBzbWNfbGluayAqbGluaywgdTggZGVsX2xpbmtfaWQpXG5uZXQvc21jL3NtY19sbGMuYy0xNjA3LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNjE4LVxubmV0L3NtYy9zbWNfbGxjLmM6MTYxOTpzdGF0aWMgdm9pZCBzbWNfbGxjX3Byb2Nlc3NfY2xpX2RlbGV0ZV9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfbGxjLmMtMTYyMC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTY3Ni0gKi9cbm5ldC9zbWMvc21jX2xsYy5jOjE2Nzc6dm9pZCBzbWNfbGxjX3NlbmRfbGlua19kZWxldGVfYWxsKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBib29sIG9yZCwgdTMyIHJzbilcbm5ldC9zbWMvc21jX2xsYy5jLTE2Nzgte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE2OTYtXG5uZXQvc21jL3NtY19sbGMuYzoxNjk3OnN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19zcnZfZGVsZXRlX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19sbGMuYy0xNjk4LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNzY0LVxubmV0L3NtYy9zbWNfbGxjLmM6MTc2NTpzdGF0aWMgdm9pZCBzbWNfbGxjX2RlbGV0ZV9saW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L3NtYy9zbWNfbGxjLmMtMTc2Ni17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTc4NC0vKiBwcm9jZXNzIGEgY29uZmlybV9ya2V5IHJlcXVlc3QgZnJvbSBwZWVyLCByZW1vdGUgZmxvdyAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTc4NTpzdGF0aWMgdm9pZCBzbWNfbGxjX3JtdF9jb25mX3JrZXkoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19sbGMuYy0xNzg2LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xODI0LS8qIHByb2Nlc3MgYSBkZWxldGVfcmtleSByZXF1ZXN0IGZyb20gcGVlciwgcmVtb3RlIGZsb3cgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjE4MjU6c3RhdGljIHZvaWQgc21jX2xsY19ybXRfZGVsZXRlX3JrZXkoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19sbGMuYy0xODI2LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xODg2LVxubmV0L3NtYy9zbWNfbGxjLmM6MTg4NzpzdGF0aWMgdm9pZCBzbWNfbGxjX3Byb3RvY29sX3Zpb2xhdGlvbihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgdTggdHlwZSlcbm5ldC9zbWMvc21jX2xsYy5jLTE4ODgte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE4OTYtLyogZmx1c2ggdGhlIGxsYyBldmVudCBxdWV1ZSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTg5NzpzdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X2ZsdXNoKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfbGxjLmMtMTg5OC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTkwOC1cbm5ldC9zbWMvc21jX2xsYy5jOjE5MDk6c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF9oYW5kbGVyKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxubmV0L3NtYy9zbWNfbGxjLmMtMTkxMC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjAyNy0vKiB3b3JrZXIgdG8gcHJvY2VzcyBsbGMgbWVzc2FnZXMgb24gdGhlIGV2ZW50IHF1ZXVlICovXG5uZXQvc21jL3NtY19sbGMuYzoyMDI4OnN0YXRpYyB2b2lkIHNtY19sbGNfZXZlbnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvc21jL3NtY19sbGMuYy0yMDI5LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMDU2LS8qIHByb2Nlc3MgbGxjIHJlc3BvbnNlcyBpbiB0YXNrbGV0IGNvbnRleHQgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjIwNTc6c3RhdGljIHZvaWQgc21jX2xsY19yeF9yZXNwb25zZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG5uZXQvc21jL3NtY19sbGMuYy0yMDU4LVx0XHRcdFx0c3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjA5OS1cbm5ldC9zbWMvc21jX2xsYy5jOjIxMDA6c3RhdGljIHZvaWQgc21jX2xsY19lbnF1ZXVlKHN0cnVjdCBzbWNfbGluayAqbGluaywgdW5pb24gc21jX2xsY19tc2cgKmxsYyxcbm5ldC9zbWMvc21jX2xsYy5jLTIxMDEtXHRcdFx0ICAgIHUzMiBieXRlX2xlbilcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMTQ0LS8qIGNvcHkgcmVjZWl2ZWQgbXNnIGFuZCBhZGQgaXQgdG8gdGhlIGV2ZW50IHF1ZXVlICovXG5uZXQvc21jL3NtY19sbGMuYzoyMTQ1OnN0YXRpYyB2b2lkIHNtY19sbGNfcnhfaGFuZGxlcihzdHJ1Y3QgaWJfd2MgKndjLCB2b2lkICpidWYpXG5uZXQvc21jL3NtY19sbGMuYy0yMTQ2LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMTY0LVxubmV0L3NtYy9zbWNfbGxjLmM6MjE2NTpzdGF0aWMgdm9pZCBzbWNfbGxjX3Rlc3RsaW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L3NtYy9zbWNfbGxjLmMtMjE2Ni17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjE5Ni1cbm5ldC9zbWMvc21jX2xsYy5jOjIxOTc6dm9pZCBzbWNfbGxjX2xncl9pbml0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcbm5ldC9zbWMvc21jX2xsYy5jLTIxOTgte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIyMTUtLyogY2FsbGVkIGFmdGVyIGxnciB3YXMgcmVtb3ZlZCBmcm9tIGxncl9saXN0ICovXG5uZXQvc21jL3NtY19sbGMuYzoyMjE2OnZvaWQgc21jX2xsY19sZ3JfY2xlYXIoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19sbGMuYy0yMjE3LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMjI5LVxubmV0L3NtYy9zbWNfbGxjLmM6MjIzMDppbnQgc21jX2xsY19saW5rX2luaXQoc3RydWN0IHNtY19saW5rICpsaW5rKVxubmV0L3NtYy9zbWNfbGxjLmMtMjIzMS17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjIzNi1cbm5ldC9zbWMvc21jX2xsYy5jOjIyMzc6dm9pZCBzbWNfbGxjX2xpbmtfYWN0aXZlKHN0cnVjdCBzbWNfbGluayAqbGluaylcbm5ldC9zbWMvc21jX2xsYy5jLTIyMzgte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIyNTQtLyogY2FsbGVkIGluIHdvcmtlciBjb250ZXh0ICovXG5uZXQvc21jL3NtY19sbGMuYzoyMjU1OnZvaWQgc21jX2xsY19saW5rX2NsZWFyKHN0cnVjdCBzbWNfbGluayAqbGluaywgYm9vbCBsb2cpXG5uZXQvc21jL3NtY19sbGMuYy0yMjU2LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMjY5LS8qIHJlZ2lzdGVyIGEgbmV3IHJ0b2tlbiBhdCB0aGUgcmVtb3RlIHBlZXIgKGZvciBhbGwgbGlua3MpICovXG5uZXQvc21jL3NtY19sbGMuYzoyMjcwOmludCBzbWNfbGxjX2RvX2NvbmZpcm1fcmtleShzdHJ1Y3Qgc21jX2xpbmsgKnNlbmRfbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTIyNzEtXHRcdFx0ICAgIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnJtYl9kZXNjKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIyOTEtLyogdW5yZWdpc3RlciBhbiBydG9rZW4gYXQgdGhlIHJlbW90ZSBwZWVyICovXG5uZXQvc21jL3NtY19sbGMuYzoyMjkyOmludCBzbWNfbGxjX2RvX2RlbGV0ZV9ya2V5KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxubmV0L3NtYy9zbWNfbGxjLmMtMjI5My1cdFx0XHQgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMzE3LVxubmV0L3NtYy9zbWNfbGxjLmM6MjMxODp2b2lkIHNtY19sbGNfbGlua19zZXRfdWlkKHN0cnVjdCBzbWNfbGluayAqbGluaylcbm5ldC9zbWMvc21jX2xsYy5jLTIzMTkte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIzMjYtLyogc2F2ZSBwZWVycyBsaW5rIHVzZXIgaWQsIHVzZWQgZm9yIGRlYnVnIHB1cnBvc2VzICovXG5uZXQvc21jL3NtY19sbGMuYzoyMzI3OnZvaWQgc21jX2xsY19zYXZlX3BlZXJfdWlkKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxubmV0L3NtYy9zbWNfbGxjLmMtMjMyOC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjMzMy0vKiBldmFsdWF0ZSBjb25maXJtIGxpbmsgcmVxdWVzdCBvciByZXNwb25zZSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MjMzNDppbnQgc21jX2xsY19ldmFsX2NvbmZfbGluayhzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSxcbm5ldC9zbWMvc21jX2xsYy5jLTIzMzUtXHRcdFx0ICAgZW51bSBzbWNfbGxjX3JlcXJlc3AgdHlwZSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzU2OQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDM0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgU01DIExpbmsgTWFuYWdlbWVudCBGdW5jdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlc2UgZnVuY3Rpb24gbW9kaWZpY2F0aW9ucy4gRmlyc3QsIEkmIzM5O3ZlIGdvdCBhIGxpc3Qgb2YgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uczogYHNtY19sbGNfZW5xdWV1ZWAgKHN0YXRpYyksIGBzbWNfbGxjX3NhdmVfYWRkX2xpbmtfcmtleXNgIChzdGF0aWMpLCBhbmQgdGhlbiBgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBgc21jX2xsY19zcnZfYWRkX2xpbmtgLCBgc21jX2xsY19hZGRfbGlua19sb2NhbGAsIGFuZCBgc21jX2xsY19zcnZfZGVsZXRlX2xpbmtfbG9jYWxgIOKAkyB0aG9zZSBsYXN0IGZvdXIsIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgdGhleSYjMzk7cmUgZXhwb3J0ZWQgb3Igbm9uLXN0YXRpYywgc28gSSBjYW4gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZXMuIEFoLCB5ZXMsIGNvbmZpcm1lZCwgdGhleSAqYXJlKiBub24tc3RhdGljIGFuZCBleHBvcnRlZC4KCkdvb2QsIG5vdyBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGFyZSBnb29kIGZvY3VzIHN5bWJvbHMuIEFuZCB0aGVuIEkgaGF2ZSBgc21jX2xsY19ybXRfZGVsZXRlX3JrZXlgIChzdGF0aWMpIHRvIGNvbnNpZGVyLiBXYWl0LCBJIGFsc28gbmVlZCB0byBtYWtlIGEgbm90ZSB0aGF0IGBzbWNfbGxjX3J4X2hhbmRsZXJgIGlzIHN0YXRpYyBhbmQgZ2V0cyBjYWxsZWQgZnJvbSBhbiBJQiB3b3JrIGNvbXBsZXRpb24sIHNvIHRoYXQgbmVlZHMgdG8gYmUgY29uc2lkZXJlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBvdGhlcnMuCgpBbHJpZ2h0LCBgc21jX2xsY19jbGlfYWRkX2xpbmtgIHNlZW1zIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBkZXRhaWxlZCBhbmFseXNpcywgYW5kIHNvIGRvZXMgYHNtY19sbGNfc3J2X2FkZF9saW5rYC4gSSBuZWVkIHRvIGNvbnN1bHQgdGhlIEtjb25maWcgZm9yIFNNQyBjb25maWd1cmF0aW9ucyB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZXNlIG1vZGlmaWNhdGlvbnMsIGJ1dCB0aGlzIGdpdmVzIG1lIGEgc29saWQgZnJhbWV3b3JrIGZvciBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE1OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvc21jL0tjb25maWc6Mjpjb25maWcgU01DXG5uZXQvc21jL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG4tLVxubmV0L3NtYy9LY29uZmlnLTEzLVxubmV0L3NtYy9LY29uZmlnOjE0OmNvbmZpZyBTTUNfRElBR1xubmV0L3NtYy9LY29uZmlnLTE1LVx0dHJpc3RhdGUgXCYjMzQ7U01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQvc21jL0tjb25maWctMjItXG5uZXQvc21jL0tjb25maWc6MjM6Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxubmV0L3NtYy9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTU6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ0NTMKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIFNNQyBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBhbiBgU01DYCBjb25maWd1cmF0aW9uLiBGaXJzdCwgbGV0JiMzOTtzIGp1c3QgY29uZmlybSB0aGF0JiMzOTtzIHRoZSBvbmx5IG9uZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHJpZ2h0IG5vdyDigJMgYXJlIHRoZXJlIGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIGZsb2F0aW5nIGFyb3VuZCB0aGF0IGNvdWxkIGltcGFjdCBpdD8gTmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbXBsZXRlIHBpY3R1cmUuIE9rYXksIGdvb2QuCgpOb3csIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBgU01DYCBjb25maWd1cmF0aW9uLiBNeSB1c3VhbCBnby10byBmb3IgdGhpcyB0eXBlIG9mIGRlcGVuZGVuY3kgYW5hbHlzaXMgaXMgdGhlIGBuZXQvc21jL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBpbnRlcmNvbm5lY3Rpb25zIGFuZCBuZWNlc3NhcnkgcHJlcmVxdWlzaXRlcyBzaG91bGQgYmUgZGVmaW5lZC4gVGltZSB0byBjcmFjayB0aGF0IGZpbGUgb3BlbiBhbmQgc2VlIHdoYXQgbWFrZXMgdGhpcyBgU01DYCBjb25maWd1cmF0aW9uIHRpY2shCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTU6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgU01DXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFNNQy1SIHByb3ZpZGVzIGEgXCYjMzQ7c29ja2V0cyBvdmVyIFJETUFcJiMzNDsgc29sdXRpb24gbWFraW5nIHVzZSBvZlxuICAgNzpcdFx0ICBSRE1BIG92ZXIgQ29udmVyZ2VkIEV0aGVybmV0IChSb0NFKSB0ZWNobm9sb2d5IHRvIHVwZ3JhZGVcbiAgIDg6XHRcdCAgQUZfSU5FVCBUQ1AgY29ubmVjdGlvbnMgdHJhbnNwYXJlbnRseS5cbiAgIDk6XHRcdCAgVGhlIExpbnV4IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTTUMtUiBzb2x1dGlvbiBpcyBkZXNpZ25lZCBhc1xuICAxMDpcdFx0ICBhIHNlcGFyYXRlIHNvY2tldCBmYW1pbHkgU01DLlxuICAxMTpcdFxuICAxMjpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gcnVuIFNNQyBzb2NrZXQgYXBwbGljYXRpb25zXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIFNNQ19ESUFHXG4gIDE1Olx0XHR0cmlzdGF0ZSBcJiMzNDtTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuICAxNjpcdFx0ZGVwZW5kcyBvbiBTTUNcbiAgMTc6XHRcdGhlbHBcbiAgMTg6XHRcdCAgU3VwcG9ydCBmb3IgU01DIHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZSB1c2VkIGJ5IHRvb2xzIHN1Y2ggYXNcbiAgMTk6XHRcdCAgc21jc3MuXG4gIDIwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTU6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjVtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ5NDgKCQkJCQkJCW91dHB1dDogMjAwCgkJCQkJCQl0aG91Z2h0czogNjI5MTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE1OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTTUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNfbGxjX2NsaV9hZGRfbGluayYjMzQ7LAogICAgJiMzNDtzbWNfbGxjX3Nydl9hZGRfbGluayYjMzQ7LAogICAgJiMzNDtzbWNfbGxjX2FkZF9saW5rX2xvY2FsJiMzNDssCiAgICAmIzM0O3NtY19sbGNfc3J2X2RlbGV0ZV9saW5rX2xvY2FsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGhvdyBTTUMgTExDIG1lc3NhZ2VzIGFyZSBlbnF1ZXVlZCBhbmQgcHJvY2Vzc2VkLCBzcGVjaWZpY2FsbHkgZm9yIFNNQ19WMiB3aGVyZSBtZXNzYWdlcyBjYW4gYmUgbG9uZ2VyIHRoYW4gYHVuaW9uIHNtY19sbGNfbXNnYC4gSXQgaW50cm9kdWNlcyBgYm9keV9sZW5gIGFuZCBhIGZsZXhpYmxlIGFycmF5IGBib2R5W11gIGluIGBzdHJ1Y3Qgc21jX2xsY19xZW50cnlgIHRvIHN0b3JlIHRoZSBleHRyYSBieXRlcyBvZiBWMiBtZXNzYWdlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBTTUMgKFNoYXJlZCBNZW1vcnkgQ29tbXVuaWNhdGlvbnMpIHN1YnN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgQUZfU01DIHNvY2tldHMgYW5kIHNvZnR3YXJlIFJETUEvSVNNIGRldmljZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtY19sbGNfY2xpX2FkZF9saW5rJiMzNDssCiAgICAmIzM0O3NtY19sbGNfc3J2X2FkZF9saW5rJiMzNDssCiAgICAmIzM0O3NtY19sbGNfYWRkX2xpbmtfbG9jYWwmIzM0OywKICAgICYjMzQ7c21jX2xsY19zcnZfZGVsZXRlX2xpbmtfbG9jYWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgaG93IFNNQyBMTEMgbWVzc2FnZXMgYXJlIGVucXVldWVkIGFuZCBwcm9jZXNzZWQsIHNwZWNpZmljYWxseSBmb3IgU01DX1YyIHdoZXJlIG1lc3NhZ2VzIGNhbiBiZSBsb25nZXIgdGhhbiBgdW5pb24gc21jX2xsY19tc2dgLiBJdCBpbnRyb2R1Y2VzIGBib2R5X2xlbmAgYW5kIGEgZmxleGlibGUgYXJyYXkgYGJvZHlbXWAgaW4gYHN0cnVjdCBzbWNfbGxjX3FlbnRyeWAgdG8gc3RvcmUgdGhlIGV4dHJhIGJ5dGVzIG9mIFYyIG1lc3NhZ2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFNNQyAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykgc3Vic3lzdGVtLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBBRl9TTUMgc29ja2V0cyBhbmQgc29mdHdhcmUgUkRNQS9JU00gZGV2aWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE1OjA1OjM4LjkzNjcyNzg0MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2NjY5MzYzODAxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfbGxjX2NsaV9hZGRfbGlua1wiLFxuICAgIFwic21jX2xsY19zcnZfYWRkX2xpbmtcIixcbiAgICBcInNtY19sbGNfYWRkX2xpbmtfbG9jYWxcIixcbiAgICBcInNtY19sbGNfc3J2X2RlbGV0ZV9saW5rX2xvY2FsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgaG93IFNNQyBMTEMgbWVzc2FnZXMgYXJlIGVucXVldWVkIGFuZCBwcm9jZXNzZWQsIHNwZWNpZmljYWxseSBmb3IgU01DX1YyIHdoZXJlIG1lc3NhZ2VzIGNhbiBiZSBsb25nZXIgdGhhbiBgdW5pb24gc21jX2xsY19tc2dgLiBJdCBpbnRyb2R1Y2VzIGBib2R5X2xlbmAgYW5kIGEgZmxleGlibGUgYXJyYXkgYGJvZHlbXWAgaW4gYHN0cnVjdCBzbWNfbGxjX3FlbnRyeWAgdG8gc3RvcmUgdGhlIGV4dHJhIGJ5dGVzIG9mIFYyIG1lc3NhZ2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFNNQyAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykgc3Vic3lzdGVtLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBBRl9TTUMgc29ja2V0cyBhbmQgc29mdHdhcmUgUkRNQS9JU00gZGV2aWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTU6MDU6MzguOTM2NzMzOTMxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzMwMTEwNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA2YzM4ZjNjM2Q2MDRiOTMzOGUxZjI3ZWQ2NjI5MzQ0MWI4Mzc1MjcxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDEgMTU6MDU6MzggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfbGxjLmMgYi9uZXQvc21jL3NtY19sbGMuY1xcbmluZGV4IDk1NGIyZmYxODE1YzIuLjFiMTUzMTczZGQ1MTYgMTAwNjQ0XFxuLS0tIGEvbmV0L3NtYy9zbWNfbGxjLmNcXG4rKysgYi9uZXQvc21jL3NtY19sbGMuY1xcbkBAIC0xNTcsNiArMTU3LDcgQEAgc3RydWN0IHNtY19sbGNfbXNnX2NvbmZpcm1fcmtleSB7XFx0LyogdHlwZSAweDA2ICovXFxuIH07XFxuIFxcbiAjZGVmaW5lIFNNQ19MTENfREVMX1JLRVlfTUFYXFx0OFxcbisjZGVmaW5lIFNNQ19MTENfREVMX1JLRVlfVjJfSU5MSU5FXFx0OVxcbiAjZGVmaW5lIFNNQ19MTENfRkxBR19SS0VZX1JFVFJZXFx0MHgxMFxcbiAjZGVmaW5lIFNNQ19MTENfRkxBR19SS0VZX05FR1xcdDB4MjBcXG4gXFxuQEAgLTE3Nyw2ICsxNzgsMTUgQEAgc3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyIHtcXHQvKiB0eXBlIDB4MjkgKi9cXG4gXFx0X19iZTMyIHJrZXlbXTtcXG4gfTtcXG4gXFxuKy8qIHRoZSBsZWFkaW5nIHJrZXlzIG9mIGEgREVMRVRFX1JLRVlfVjIgZml0IGludG8gdW5pb24gc21jX2xsY19tc2cgKi9cXG4rc3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyX2lubGluZSB7XFx0LyogdHlwZSAweDI5ICovXFxuK1xcdHN0cnVjdCBzbWNfbGxjX2hkciBoZDtcXG4rXFx0dTggbnVtX3JrZXlzO1xcbitcXHR1OCBudW1faW52YWxfcmtleXM7XFxuK1xcdHU4IHJlc2VydmVkWzJdO1xcbitcXHRfX2JlMzIgcmtleVtTTUNfTExDX0RFTF9SS0VZX1YyX0lOTElORV07XFxuK307XFxuK1xcbiB1bmlvbiBzbWNfbGxjX21zZyB7XFxuIFxcdHN0cnVjdCBzbWNfbGxjX21zZ19jb25maXJtX2xpbmsgY29uZmlybV9saW5rO1xcbiBcXHRzdHJ1Y3Qgc21jX2xsY19tc2dfYWRkX2xpbmsgYWRkX2xpbms7XFxuQEAgLTE4Niw2ICsxOTYsNyBAQCB1bmlvbiBzbWNfbGxjX21zZyB7XFxuIFxcbiBcXHRzdHJ1Y3Qgc21jX2xsY19tc2dfY29uZmlybV9ya2V5IGNvbmZpcm1fcmtleTtcXG4gXFx0c3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5IGRlbGV0ZV9ya2V5O1xcbitcXHRzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXlfdjJfaW5saW5lIGRlbGV0ZV9ya2V5X3YyO1xcbiBcXG4gXFx0c3RydWN0IHNtY19sbGNfbXNnX3Rlc3RfbGluayB0ZXN0X2xpbms7XFxuIFxcdHN0cnVjdCB7XFxuQEAgLTE5NCwxNSArMjA1LDIzIEBAIHVuaW9uIHNtY19sbGNfbXNnIHtcXG4gXFx0fSByYXc7XFxuIH07XFxuIFxcbitzdGF0aWNfYXNzZXJ0KFNNQ19MTENfREVMX1JLRVlfVjJfSU5MSU5FID09XFxuK1xcdCAgICAgIChzaXplb2YodW5pb24gc21jX2xsY19tc2cpIC1cXG4rXFx0ICAgICAgIG9mZnNldG9mKHN0cnVjdCBzbWNfbGxjX21zZ19kZWxldGVfcmtleV92MiwgcmtleSkpIC9cXG4rXFx0ICAgICAgc2l6ZW9mKF9fYmUzMikpO1xcbitcXG4gI2RlZmluZSBTTUNfTExDX0ZMQUdfUkVTUFxcdFxcdDB4ODBcXG4gXFxuIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSB7XFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcXG4gXFx0c3RydWN0IHNtY19saW5rICpsaW5rO1xcbitcXHR1MTYgYm9keV9sZW47XFxuIFxcdHVuaW9uIHNtY19sbGNfbXNnIG1zZztcXG4rXFx0dTggYm9keVtdIF9fY291bnRlZF9ieShib2R5X2xlbik7XFxuIH07XFxuIFxcbi1zdGF0aWMgdm9pZCBzbWNfbGxjX2VucXVldWUoc3RydWN0IHNtY19saW5rICpsaW5rLCB1bmlvbiBzbWNfbGxjX21zZyAqbGxjKTtcXG4rc3RhdGljIHZvaWQgc21jX2xsY19lbnF1ZXVlKHN0cnVjdCBzbWNfbGluayAqbGluaywgdW5pb24gc21jX2xsY19tc2cgKmxsYyxcXG4rXFx0XFx0XFx0ICAgIHUzMiBieXRlX2xlbik7XFxuIFxcbiBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnNtY19sbGNfZmxvd19xZW50cnlfY2xyKHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpXFxuIHtcXG5AQCAtOTk4LDE1ICsxMDE3LDIwIEBAIHN0YXRpYyBpbnQgc21jX2xsY19jbGlfY29uZl9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4gXFxuIHN0YXRpYyB2b2lkIHNtY19sbGNfc2F2ZV9hZGRfbGlua19ya2V5cyhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuIFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBzbWNfbGluayAqbGlua19uZXcsXFxuLVxcdFxcdFxcdFxcdFxcdHU4ICpsbGNfbXNnKVxcbitcXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcXG4ge1xcbitcXHRjb25zdCB1MzIgcnRfb2ZmID0gb2Zmc2V0b2Yoc3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rX3YyX2V4dCwgcnQpO1xcbiBcXHRzdHJ1Y3Qgc21jX2xsY19tc2dfYWRkX2xpbmtfdjJfZXh0ICpleHQ7XFxuIFxcdHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyID0gbGluay1cXHUwMDNlbGdyO1xcbiBcXHRpbnQgbWF4LCBpO1xcbiBcXG4tXFx0ZXh0ID0gKHN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua192Ml9leHQgKikobGxjX21zZyArXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgU01DX1dSX1RYX1NJWkUpO1xcbitcXHQvKiB0aGUgcmtleSBjb3VudCBpdHNlbGYgaXMgb25seSB0aGVyZSBpZiBlbm91Z2ggYnl0ZXMgYXJyaXZlZCAqL1xcbitcXHRpZiAocWVudHJ5LVxcdTAwM2Vib2R5X2xlbiBcXHUwMDNjIHJ0X29mZilcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHRleHQgPSAoc3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rX3YyX2V4dCAqKXFlbnRyeS1cXHUwMDNlYm9keTtcXG4gXFx0bWF4ID0gbWluX3QodTgsIGV4dC1cXHUwMDNlbnVtX3JrZXlzLCBTTUNfTExDX1JLRVlTX1BFUl9NU0dfVjIpO1xcbitcXHRtYXggPSBtaW5fdCh1MzIsIG1heCwgKHFlbnRyeS1cXHUwMDNlYm9keV9sZW4gLSBydF9vZmYpIC9cXG4rXFx0XFx0XFx0ICAgICAgc2l6ZW9mKGV4dC1cXHUwMDNlcnRbMF0pKTtcXG4gXFx0ZG93bl93cml0ZShcXHUwMDI2bGdyLVxcdTAwM2VybWJzX2xvY2spO1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbWF4OyBpKyspIHtcXG4gXFx0XFx0c21jX3J0b2tlbl9zZXQobGdyLCBsaW5rLVxcdTAwM2VsaW5rX2lkeCwgbGlua19uZXctXFx1MDAzZWxpbmtfaWR4LFxcbkBAIC0xMDk5LDkgKzExMjMsNyBAQCBpbnQgc21jX2xsY19jbGlfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcXG4gXFx0aWYgKHJjKVxcbiBcXHRcXHRnb3RvIG91dF9jbGVhcl9sbms7XFxuIFxcdGlmIChsZ3ItXFx1MDAzZXNtY192ZXJzaW9uID09IFNNQ19WMikge1xcbi1cXHRcXHR1OCAqbGxjX21zZyA9IHNtY19saW5rX3NoYXJlZF92Ml9yeGJ1ZihsaW5rKSA/XFxuLVxcdFxcdFxcdCh1OCAqKWxnci1cXHUwMDNld3JfcnhfYnVmX3YyIDogKHU4ICopbGxjO1xcbi1cXHRcXHRzbWNfbGxjX3NhdmVfYWRkX2xpbmtfcmtleXMobGluaywgbG5rX25ldywgbGxjX21zZyk7XFxuK1xcdFxcdHNtY19sbGNfc2F2ZV9hZGRfbGlua19ya2V5cyhsaW5rLCBsbmtfbmV3LCBxZW50cnkpO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRyYyA9IHNtY19sbGNfY2xpX3JrZXlfZXhjaGFuZ2UobGluaywgbG5rX25ldyk7XFxuIFxcdFxcdGlmIChyYykge1xcbkBAIC0xNDgxLDcgKzE1MDMsNyBAQCBpbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbiBcXHR9XFxuIFxcdGFkZF9sbGMgPSBcXHUwMDI2cWVudHJ5LVxcdTAwM2Vtc2cuYWRkX2xpbms7XFxuIFxcdGlmIChhZGRfbGxjLVxcdTAwM2VoZC5mbGFncyBcXHUwMDI2IFNNQ19MTENfRkxBR19BRERfTE5LX1JFSikge1xcbi1cXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbitcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2NscihcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbiBcXHRcXHRyYyA9IC1FTk9MSU5LO1xcbiBcXHRcXHRnb3RvIG91dF9lcnI7XFxuIFxcdH1cXG5AQCAtMTQ5Miw3ICsxNTE0LDggQEAgaW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4gXFx0XFx0bGdyX25ld190ID0gU01DX0xHUl9BU1lNTUVUUklDX1BFRVI7XFxuIFxcdH1cXG4gXFx0c21jX2xsY19zYXZlX2FkZF9saW5rX2luZm8obGlua19uZXcsIGFkZF9sbGMpO1xcbi1cXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbitcXHQvKiBhZGRfbGxjIHN0aWxsIHBvaW50cyBpbnRvIHFlbnRyeSwgc28gb25seSBkZXRhY2ggaXQgaGVyZSAqL1xcbitcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2NscihcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbiBcXG4gXFx0cmMgPSBzbWNfaWJfcmVhZHlfbGluayhsaW5rX25ldyk7XFxuIFxcdGlmIChyYylcXG5AQCAtMTUwMSw5ICsxNTI0LDcgQEAgaW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4gXFx0aWYgKHJjKVxcbiBcXHRcXHRnb3RvIG91dF9lcnI7XFxuIFxcdGlmIChsZ3ItXFx1MDAzZXNtY192ZXJzaW9uID09IFNNQ19WMikge1xcbi1cXHRcXHR1OCAqbGxjX21zZyA9IHNtY19saW5rX3NoYXJlZF92Ml9yeGJ1ZihsaW5rKSA/XFxuLVxcdFxcdFxcdCh1OCAqKWxnci1cXHUwMDNld3JfcnhfYnVmX3YyIDogKHU4ICopYWRkX2xsYztcXG4tXFx0XFx0c21jX2xsY19zYXZlX2FkZF9saW5rX3JrZXlzKGxpbmssIGxpbmtfbmV3LCBsbGNfbXNnKTtcXG4rXFx0XFx0c21jX2xsY19zYXZlX2FkZF9saW5rX3JrZXlzKGxpbmssIGxpbmtfbmV3LCBxZW50cnkpO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRyYyA9IHNtY19sbGNfc3J2X3JrZXlfZXhjaGFuZ2UobGluaywgbGlua19uZXcpO1xcbiBcXHRcXHRpZiAocmMpXFxuQEAgLTE1MTIsNiArMTUzMyw3IEBAIGludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuIFxcdHJjID0gc21jX2xsY19zcnZfY29uZl9saW5rKGxpbmssIGxpbmtfbmV3LCBsZ3JfbmV3X3QpO1xcbiBcXHRpZiAocmMpXFxuIFxcdFxcdGdvdG8gb3V0X2VycjtcXG4rXFx0a2ZyZWUocWVudHJ5KTtcXG4gXFx0a2ZyZWUoaW5pKTtcXG4gXFx0cmV0dXJuIDA7XFxuIG91dF9lcnI6XFxuQEAgLTE1MjAsNiArMTU0Miw3IEBAIGludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuIFxcdFxcdHNtY3JfbGlua19jbGVhcihsaW5rX25ldywgZmFsc2UpO1xcbiBcXHR9XFxuIG91dDpcXG4rXFx0a2ZyZWUocWVudHJ5KTtcXG4gXFx0a2ZyZWUoaW5pKTtcXG4gXFx0aWYgKHNlbmRfcmVxX2FkZF9saW5rX3Jlc3ApXFxuIFxcdFxcdHNtY19sbGNfc2VuZF9yZXFfYWRkX2xpbmtfcmVzcG9uc2UocmVxX3FlbnRyeSk7XFxuQEAgLTE1NTIsNyArMTU3NSw4IEBAIHZvaWQgc21jX2xsY19hZGRfbGlua19sb2NhbChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXFxuIFxcdGFkZF9sbGMuaGQuY29tbW9uLmxsY190eXBlID0gU01DX0xMQ19BRERfTElOSztcXG4gXFx0c21jX2xsY19pbml0X21zZ19oZHIoXFx1MDAyNmFkZF9sbGMuaGQsIGxpbmstXFx1MDAzZWxnciwgc2l6ZW9mKGFkZF9sbGMpKTtcXG4gXFx0Lyogbm8gZGV2IGFuZCBwb3J0IG5lZWRlZCAqL1xcbi1cXHRzbWNfbGxjX2VucXVldWUobGluaywgKHVuaW9uIHNtY19sbGNfbXNnICopXFx1MDAyNmFkZF9sbGMpO1xcbitcXHRzbWNfbGxjX2VucXVldWUobGluaywgKHVuaW9uIHNtY19sbGNfbXNnICopXFx1MDAyNmFkZF9sbGMsXFxuK1xcdFxcdFxcdHNpemVvZih1bmlvbiBzbWNfbGxjX21zZykpO1xcbiB9XFxuIFxcbiAvKiB3b3JrZXIgdG8gcHJvY2VzcyBhbiBhZGQgbGluayBtZXNzYWdlICovXFxuQEAgLTE1ODgsNyArMTYxMiw4IEBAIHZvaWQgc21jX2xsY19zcnZfZGVsZXRlX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rLCB1OCBkZWxfbGlua19pZClcXG4gXFx0ZGVsX2xsYy5saW5rX251bSA9IGRlbF9saW5rX2lkO1xcbiBcXHRkZWxfbGxjLnJlYXNvbiA9IGh0b25sKFNNQ19MTENfREVMX0xPU1RfUEFUSCk7XFxuIFxcdGRlbF9sbGMuaGQuZmxhZ3MgfD0gU01DX0xMQ19GTEFHX0RFTF9MSU5LX09SREVSTFk7XFxuLVxcdHNtY19sbGNfZW5xdWV1ZShsaW5rLCAodW5pb24gc21jX2xsY19tc2cgKilcXHUwMDI2ZGVsX2xsYyk7XFxuK1xcdHNtY19sbGNfZW5xdWV1ZShsaW5rLCAodW5pb24gc21jX2xsY19tc2cgKilcXHUwMDI2ZGVsX2xsYyxcXG4rXFx0XFx0XFx0c2l6ZW9mKHVuaW9uIHNtY19sbGNfbXNnKSk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19jbGlfZGVsZXRlX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxuQEAgLTE4MTAsMTkgKzE4MzUsMjggQEAgc3RhdGljIHZvaWQgc21jX2xsY19ybXRfZGVsZXRlX3JrZXkoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxuIFxcdGxpbmsgPSBxZW50cnktXFx1MDAzZWxpbms7XFxuIFxcbiBcXHRpZiAobGdyLVxcdTAwM2VzbWNfdmVyc2lvbiA9PSBTTUNfVjIpIHtcXG4tXFx0XFx0c3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyICpsbGN2MjtcXG4rXFx0XFx0c3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyX2lubGluZSAqbGxjdjI7XFxuIFxcbi1cXHRcXHRpZiAoc21jX2xpbmtfc2hhcmVkX3YyX3J4YnVmKGxpbmspKSB7XFxuLVxcdFxcdFxcdG1lbWNweShsZ3ItXFx1MDAzZXdyX3J4X2J1Zl92MiwgbGxjLCBzaXplb2YoKmxsYykpO1xcbi1cXHRcXHRcXHRsbGN2MiA9IChzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXlfdjIgKilsZ3ItXFx1MDAzZXdyX3J4X2J1Zl92MjtcXG4tXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0bGxjdjIgPSAoc3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyICopbGxjO1xcbi1cXHRcXHR9XFxuK1xcdFxcdC8qIFRoZSBsZWFkaW5nIFNNQ19MTENfREVMX1JLRVlfVjJfSU5MSU5FIHJrZXlzIGFyZSBkZWNsYXJlZCBpblxcbitcXHRcXHQgKiB0aGUgbWVzc2FnZSBpdHNlbGYsIGFueSBmdXJ0aGVyIG9uZXMgd2VyZSByZWNlaXZlZCBpbnRvXFxuK1xcdFxcdCAqIHFlbnRyeS1cXHUwMDNlYm9keS5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGxsY3YyID0gXFx1MDAyNnFlbnRyeS1cXHUwMDNlbXNnLmRlbGV0ZV9ya2V5X3YyO1xcbiBcXHRcXHRsbGN2Mi1cXHUwMDNlbnVtX2ludmFsX3JrZXlzID0gMDtcXG4gXFxuIFxcdFxcdG1heCA9IG1pbl90KHU4LCBsbGN2Mi1cXHUwMDNlbnVtX3JrZXlzLCBTTUNfTExDX1JLRVlTX1BFUl9NU0dfVjIpO1xcbitcXHRcXHRtYXggPSBtaW5fdCh1MzIsIG1heCwgU01DX0xMQ19ERUxfUktFWV9WMl9JTkxJTkUgK1xcbitcXHRcXHRcXHRcXHQgICAgICBxZW50cnktXFx1MDAzZWJvZHlfbGVuIC8gc2l6ZW9mKF9fYmUzMikpO1xcbiBcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbWF4OyBpKyspIHtcXG4tXFx0XFx0XFx0aWYgKHNtY19ydG9rZW5fZGVsZXRlKGxpbmssIGxsY3YyLVxcdTAwM2Vya2V5W2ldKSlcXG4rXFx0XFx0XFx0X19iZTMyIHJrZXk7XFxuK1xcbitcXHRcXHRcXHRpZiAoaSBcXHUwMDNjIFNNQ19MTENfREVMX1JLRVlfVjJfSU5MSU5FKVxcbitcXHRcXHRcXHRcXHRya2V5ID0gbGxjdjItXFx1MDAzZXJrZXlbaV07XFxuK1xcdFxcdFxcdGVsc2VcXG4rXFx0XFx0XFx0XFx0bWVtY3B5KFxcdTAwMjZya2V5LCBxZW50cnktXFx1MDAzZWJvZHkgK1xcbitcXHRcXHRcXHRcXHRcXHQgICAgICAoaSAtIFNNQ19MTENfREVMX1JLRVlfVjJfSU5MSU5FKSAqXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIHNpemVvZihya2V5KSwgc2l6ZW9mKHJrZXkpKTtcXG4rXFx0XFx0XFx0aWYgKHNtY19ydG9rZW5fZGVsZXRlKGxpbmssIHJrZXkpKVxcbiBcXHRcXHRcXHRcXHRsbGN2Mi1cXHUwMDNlbnVtX2ludmFsX3JrZXlzKys7XFxuIFxcdFxcdH1cXG4gXFx0XFx0bWVtc2V0KFxcdTAwMjZsbGMtXFx1MDAzZXJrZXlbMF0sIDAsIHNpemVvZihsbGMtXFx1MDAzZXJrZXkpKTtcXG5AQCAtMjA2MywxOCArMjA5NywzNSBAQCBzdGF0aWMgdm9pZCBzbWNfbGxjX3J4X3Jlc3BvbnNlKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4gXFx0d2FrZV91cChcXHUwMDI2bGluay1cXHUwMDNlbGdyLVxcdTAwM2VsbGNfbXNnX3dhaXRlcik7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIHNtY19sbGNfZW5xdWV1ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHVuaW9uIHNtY19sbGNfbXNnICpsbGMpXFxuK3N0YXRpYyB2b2lkIHNtY19sbGNfZW5xdWV1ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHVuaW9uIHNtY19sbGNfbXNnICpsbGMsXFxuK1xcdFxcdFxcdCAgICB1MzIgYnl0ZV9sZW4pXFxuIHtcXG4gXFx0c3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IgPSBsaW5rLVxcdTAwM2VsZ3I7XFxuIFxcdHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5O1xcbiBcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbitcXHR1MTYgYm9keV9sZW4gPSAwO1xcbiBcXG4tXFx0cWVudHJ5ID0ga21hbGxvY19vYmooKnFlbnRyeSwgR0ZQX0FUT01JQyk7XFxuK1xcdC8qIFYyIG1lc3NhZ2VzIGNhbiBiZSBsb25nZXIgdGhhbiB0aGUgaW5saW5lIHVuaW9uIHNtY19sbGNfbXNnLiBDYXJyeVxcbitcXHQgKiB0aGUgcmVtYWluZGVyIGluIHRoZSBxZW50cnkgaXRzZWxmLCBzbyB0aGF0IGl0cyBsaWZldGltZSBhbmQgaXRzXFxuK1xcdCAqIGxlbmd0aCBtYXRjaCB0aGUgbWVzc2FnZSB0aGUgcGVlciBhY3R1YWxseSBzZW50LlxcbitcXHQgKi9cXG4rXFx0aWYgKGxnci1cXHUwMDNlc21jX3ZlcnNpb24gPT0gU01DX1YyIFxcdTAwMjZcXHUwMDI2IGJ5dGVfbGVuIFxcdTAwM2UgU01DX1dSX1RYX1NJWkUpXFxuK1xcdFxcdGJvZHlfbGVuID0gbWluX3QodTMyLCBieXRlX2xlbiwgU01DX1dSX0JVRl9WMl9TSVpFKSAtXFxuK1xcdFxcdFxcdCAgIFNNQ19XUl9UWF9TSVpFO1xcbitcXG4rXFx0cWVudHJ5ID0ga21hbGxvY19mbGV4KCpxZW50cnksIGJvZHksIGJvZHlfbGVuLCBHRlBfQVRPTUlDKTtcXG4gXFx0aWYgKCFxZW50cnkpXFxuIFxcdFxcdHJldHVybjtcXG4rXFx0cWVudHJ5LVxcdTAwM2Vib2R5X2xlbiA9IGJvZHlfbGVuO1xcbiBcXHRxZW50cnktXFx1MDAzZWxpbmsgPSBsaW5rO1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2cWVudHJ5LVxcdTAwM2VsaXN0KTtcXG4gXFx0bWVtY3B5KFxcdTAwMjZxZW50cnktXFx1MDAzZW1zZywgbGxjLCBzaXplb2YodW5pb24gc21jX2xsY19tc2cpKTtcXG4rXFx0aWYgKGJvZHlfbGVuKSB7XFxuK1xcdFxcdHU4ICpzcmMgPSBzbWNfbGlua19zaGFyZWRfdjJfcnhidWYobGluaykgP1xcbitcXHRcXHRcXHQodTggKilsZ3ItXFx1MDAzZXdyX3J4X2J1Zl92MiA6ICh1OCAqKWxsYztcXG4rXFxuK1xcdFxcdG1lbWNweShxZW50cnktXFx1MDAzZWJvZHksIHNyYyArIFNNQ19XUl9UWF9TSVpFLCBib2R5X2xlbik7XFxuK1xcdH1cXG4gXFxuIFxcdC8qIHByb2Nlc3MgcmVzcG9uc2VzIGltbWVkaWF0ZWx5ICovXFxuIFxcdGlmICgobGxjLVxcdTAwM2VyYXcuaGRyLmZsYWdzIFxcdTAwMjYgU01DX0xMQ19GTEFHX1JFU1ApIFxcdTAwMjZcXHUwMDI2XFxuQEAgLTIxMDYsNyArMjE1Nyw3IEBAIHN0YXRpYyB2b2lkIHNtY19sbGNfcnhfaGFuZGxlcihzdHJ1Y3QgaWJfd2MgKndjLCB2b2lkICpidWYpXFxuIFxcdFxcdFxcdHJldHVybjsgLyogaW52YWxpZCBtZXNzYWdlICovXFxuIFxcdH1cXG4gXFxuLVxcdHNtY19sbGNfZW5xdWV1ZShsaW5rLCBsbGMpO1xcbitcXHRzbWNfbGxjX2VucXVldWUobGluaywgbGxjLCB3Yy1cXHUwMDNlYnl0ZV9sZW4pO1xcbiB9XFxuIFxcbiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogd29ya2VyLCB1dGlscyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE1OjA1OjM5LjM3MDM0MzMyNFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM2NjI2MDAwODI3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfbGxjX2NsaV9hZGRfbGlua1wiLFxuICAgIFwic21jX2xsY19zcnZfYWRkX2xpbmtcIixcbiAgICBcInNtY19sbGNfYWRkX2xpbmtfbG9jYWxcIixcbiAgICBcInNtY19sbGNfc3J2X2RlbGV0ZV9saW5rX2xvY2FsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgaG93IFNNQyBMTEMgbWVzc2FnZXMgYXJlIGVucXVldWVkIGFuZCBwcm9jZXNzZWQsIHNwZWNpZmljYWxseSBmb3IgU01DX1YyIHdoZXJlIG1lc3NhZ2VzIGNhbiBiZSBsb25nZXIgdGhhbiBgdW5pb24gc21jX2xsY19tc2dgLiBJdCBpbnRyb2R1Y2VzIGBib2R5X2xlbmAgYW5kIGEgZmxleGlibGUgYXJyYXkgYGJvZHlbXWAgaW4gYHN0cnVjdCBzbWNfbGxjX3FlbnRyeWAgdG8gc3RvcmUgdGhlIGV4dHJhIGJ5dGVzIG9mIFYyIG1lc3NhZ2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFNNQyAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykgc3Vic3lzdGVtLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBBRl9TTUMgc29ja2V0cyBhbmQgc29mdHdhcmUgUkRNQS9JU00gZGV2aWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNmMzOGYzYzNkNjA0YjkzMzhlMWYyN2VkNjYyOTM0NDFiODM3NTI3MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMTU6MDU6MzggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19sbGMuYyBiL25ldC9zbWMvc21jX2xsYy5jXG5pbmRleCA5NTRiMmZmMTgxNWMyLi4xYjE1MzE3M2RkNTE2IDEwMDY0NFxuLS0tIGEvbmV0L3NtYy9zbWNfbGxjLmNcbisrKyBiL25ldC9zbWMvc21jX2xsYy5jXG5AQCAtMTU3LDYgKzE1Nyw3IEBAIHN0cnVjdCBzbWNfbGxjX21zZ19jb25maXJtX3JrZXkge1x0LyogdHlwZSAweDA2ICovXG4gfTtcbiBcbiAjZGVmaW5lIFNNQ19MTENfREVMX1JLRVlfTUFYXHQ4XG4rI2RlZmluZSBTTUNfTExDX0RFTF9SS0VZX1YyX0lOTElORVx0OVxuICNkZWZpbmUgU01DX0xMQ19GTEFHX1JLRVlfUkVUUllcdDB4MTBcbiAjZGVmaW5lIFNNQ19MTENfRkxBR19SS0VZX05FR1x0MHgyMFxuIFxuQEAgLTE3Nyw2ICsxNzgsMTUgQEAgc3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyIHtcdC8qIHR5cGUgMHgyOSAqL1xuIFx0X19iZTMyIHJrZXlbXTtcbiB9O1xuIFxuKy8qIHRoZSBsZWFkaW5nIHJrZXlzIG9mIGEgREVMRVRFX1JLRVlfVjIgZml0IGludG8gdW5pb24gc21jX2xsY19tc2cgKi9cbitzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXlfdjJfaW5saW5lIHtcdC8qIHR5cGUgMHgyOSAqL1xuK1x0c3RydWN0IHNtY19sbGNfaGRyIGhkO1xuK1x0dTggbnVtX3JrZXlzO1xuK1x0dTggbnVtX2ludmFsX3JrZXlzO1xuK1x0dTggcmVzZXJ2ZWRbMl07XG4rXHRfX2JlMzIgcmtleVtTTUNfTExDX0RFTF9SS0VZX1YyX0lOTElORV07XG4rfTtcbitcbiB1bmlvbiBzbWNfbGxjX21zZyB7XG4gXHRzdHJ1Y3Qgc21jX2xsY19tc2dfY29uZmlybV9saW5rIGNvbmZpcm1fbGluaztcbiBcdHN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGluayBhZGRfbGluaztcbkBAIC0xODYsNiArMTk2LDcgQEAgdW5pb24gc21jX2xsY19tc2cge1xuIFxuIFx0c3RydWN0IHNtY19sbGNfbXNnX2NvbmZpcm1fcmtleSBjb25maXJtX3JrZXk7XG4gXHRzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXkgZGVsZXRlX3JrZXk7XG4rXHRzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXlfdjJfaW5saW5lIGRlbGV0ZV9ya2V5X3YyO1xuIFxuIFx0c3RydWN0IHNtY19sbGNfbXNnX3Rlc3RfbGluayB0ZXN0X2xpbms7XG4gXHRzdHJ1Y3Qge1xuQEAgLTE5NCwxNSArMjA1LDIzIEBAIHVuaW9uIHNtY19sbGNfbXNnIHtcbiBcdH0gcmF3O1xuIH07XG4gXG4rc3RhdGljX2Fzc2VydChTTUNfTExDX0RFTF9SS0VZX1YyX0lOTElORSA9PVxuK1x0ICAgICAgKHNpemVvZih1bmlvbiBzbWNfbGxjX21zZykgLVxuK1x0ICAgICAgIG9mZnNldG9mKHN0cnVjdCBzbWNfbGxjX21zZ19kZWxldGVfcmtleV92MiwgcmtleSkpIC9cbitcdCAgICAgIHNpemVvZihfX2JlMzIpKTtcbitcbiAjZGVmaW5lIFNNQ19MTENfRkxBR19SRVNQXHRcdDB4ODBcbiBcbiBzdHJ1Y3Qgc21jX2xsY19xZW50cnkge1xuIFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuIFx0c3RydWN0IHNtY19saW5rICpsaW5rO1xuK1x0dTE2IGJvZHlfbGVuO1xuIFx0dW5pb24gc21jX2xsY19tc2cgbXNnO1xuK1x0dTggYm9keVtdIF9fY291bnRlZF9ieShib2R5X2xlbik7XG4gfTtcbiBcbi1zdGF0aWMgdm9pZCBzbWNfbGxjX2VucXVldWUoc3RydWN0IHNtY19saW5rICpsaW5rLCB1bmlvbiBzbWNfbGxjX21zZyAqbGxjKTtcbitzdGF0aWMgdm9pZCBzbWNfbGxjX2VucXVldWUoc3RydWN0IHNtY19saW5rICpsaW5rLCB1bmlvbiBzbWNfbGxjX21zZyAqbGxjLFxuK1x0XHRcdCAgICB1MzIgYnl0ZV9sZW4pO1xuIFxuIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqc21jX2xsY19mbG93X3FlbnRyeV9jbHIoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdylcbiB7XG5AQCAtOTk4LDE1ICsxMDE3LDIwIEBAIHN0YXRpYyBpbnQgc21jX2xsY19jbGlfY29uZl9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcbiBzdGF0aWMgdm9pZCBzbWNfbGxjX3NhdmVfYWRkX2xpbmtfcmtleXMoc3RydWN0IHNtY19saW5rICpsaW5rLFxuIFx0XHRcdFx0XHRzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3LFxuLVx0XHRcdFx0XHR1OCAqbGxjX21zZylcbitcdFx0XHRcdFx0c3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXG4ge1xuK1x0Y29uc3QgdTMyIHJ0X29mZiA9IG9mZnNldG9mKHN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua192Ml9leHQsIHJ0KTtcbiBcdHN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua192Ml9leHQgKmV4dDtcbiBcdHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyID0gbGluay1cdTAwM2VsZ3I7XG4gXHRpbnQgbWF4LCBpO1xuIFxuLVx0ZXh0ID0gKHN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua192Ml9leHQgKikobGxjX21zZyArXG4tXHRcdFx0XHRcdFx0ICAgICBTTUNfV1JfVFhfU0laRSk7XG4rXHQvKiB0aGUgcmtleSBjb3VudCBpdHNlbGYgaXMgb25seSB0aGVyZSBpZiBlbm91Z2ggYnl0ZXMgYXJyaXZlZCAqL1xuK1x0aWYgKHFlbnRyeS1cdTAwM2Vib2R5X2xlbiBcdTAwM2MgcnRfb2ZmKVxuK1x0XHRyZXR1cm47XG4rXHRleHQgPSAoc3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rX3YyX2V4dCAqKXFlbnRyeS1cdTAwM2Vib2R5O1xuIFx0bWF4ID0gbWluX3QodTgsIGV4dC1cdTAwM2VudW1fcmtleXMsIFNNQ19MTENfUktFWVNfUEVSX01TR19WMik7XG4rXHRtYXggPSBtaW5fdCh1MzIsIG1heCwgKHFlbnRyeS1cdTAwM2Vib2R5X2xlbiAtIHJ0X29mZikgL1xuK1x0XHRcdCAgICAgIHNpemVvZihleHQtXHUwMDNlcnRbMF0pKTtcbiBcdGRvd25fd3JpdGUoXHUwMDI2bGdyLVx1MDAzZXJtYnNfbG9jayk7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBtYXg7IGkrKykge1xuIFx0XHRzbWNfcnRva2VuX3NldChsZ3IsIGxpbmstXHUwMDNlbGlua19pZHgsIGxpbmtfbmV3LVx1MDAzZWxpbmtfaWR4LFxuQEAgLTEwOTksOSArMTEyMyw3IEBAIGludCBzbWNfbGxjX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxuIFx0aWYgKHJjKVxuIFx0XHRnb3RvIG91dF9jbGVhcl9sbms7XG4gXHRpZiAobGdyLVx1MDAzZXNtY192ZXJzaW9uID09IFNNQ19WMikge1xuLVx0XHR1OCAqbGxjX21zZyA9IHNtY19saW5rX3NoYXJlZF92Ml9yeGJ1ZihsaW5rKSA/XG4tXHRcdFx0KHU4ICopbGdyLVx1MDAzZXdyX3J4X2J1Zl92MiA6ICh1OCAqKWxsYztcbi1cdFx0c21jX2xsY19zYXZlX2FkZF9saW5rX3JrZXlzKGxpbmssIGxua19uZXcsIGxsY19tc2cpO1xuK1x0XHRzbWNfbGxjX3NhdmVfYWRkX2xpbmtfcmtleXMobGluaywgbG5rX25ldywgcWVudHJ5KTtcbiBcdH0gZWxzZSB7XG4gXHRcdHJjID0gc21jX2xsY19jbGlfcmtleV9leGNoYW5nZShsaW5rLCBsbmtfbmV3KTtcbiBcdFx0aWYgKHJjKSB7XG5AQCAtMTQ4MSw3ICsxNTAzLDcgQEAgaW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcdH1cbiBcdGFkZF9sbGMgPSBcdTAwMjZxZW50cnktXHUwMDNlbXNnLmFkZF9saW5rO1xuIFx0aWYgKGFkZF9sbGMtXHUwMDNlaGQuZmxhZ3MgXHUwMDI2IFNNQ19MTENfRkxBR19BRERfTE5LX1JFSikge1xuLVx0XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbitcdFx0c21jX2xsY19mbG93X3FlbnRyeV9jbHIoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG4gXHRcdHJjID0gLUVOT0xJTks7XG4gXHRcdGdvdG8gb3V0X2VycjtcbiBcdH1cbkBAIC0xNDkyLDcgKzE1MTQsOCBAQCBpbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxuIFx0XHRsZ3JfbmV3X3QgPSBTTUNfTEdSX0FTWU1NRVRSSUNfUEVFUjtcbiBcdH1cbiBcdHNtY19sbGNfc2F2ZV9hZGRfbGlua19pbmZvKGxpbmtfbmV3LCBhZGRfbGxjKTtcbi1cdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xuK1x0LyogYWRkX2xsYyBzdGlsbCBwb2ludHMgaW50byBxZW50cnksIHNvIG9ubHkgZGV0YWNoIGl0IGhlcmUgKi9cbitcdHNtY19sbGNfZmxvd19xZW50cnlfY2xyKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xuIFxuIFx0cmMgPSBzbWNfaWJfcmVhZHlfbGluayhsaW5rX25ldyk7XG4gXHRpZiAocmMpXG5AQCAtMTUwMSw5ICsxNTI0LDcgQEAgaW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcdGlmIChyYylcbiBcdFx0Z290byBvdXRfZXJyO1xuIFx0aWYgKGxnci1cdTAwM2VzbWNfdmVyc2lvbiA9PSBTTUNfVjIpIHtcbi1cdFx0dTggKmxsY19tc2cgPSBzbWNfbGlua19zaGFyZWRfdjJfcnhidWYobGluaykgP1xuLVx0XHRcdCh1OCAqKWxnci1cdTAwM2V3cl9yeF9idWZfdjIgOiAodTggKilhZGRfbGxjO1xuLVx0XHRzbWNfbGxjX3NhdmVfYWRkX2xpbmtfcmtleXMobGluaywgbGlua19uZXcsIGxsY19tc2cpO1xuK1x0XHRzbWNfbGxjX3NhdmVfYWRkX2xpbmtfcmtleXMobGluaywgbGlua19uZXcsIHFlbnRyeSk7XG4gXHR9IGVsc2Uge1xuIFx0XHRyYyA9IHNtY19sbGNfc3J2X3JrZXlfZXhjaGFuZ2UobGluaywgbGlua19uZXcpO1xuIFx0XHRpZiAocmMpXG5AQCAtMTUxMiw2ICsxNTMzLDcgQEAgaW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcdHJjID0gc21jX2xsY19zcnZfY29uZl9saW5rKGxpbmssIGxpbmtfbmV3LCBsZ3JfbmV3X3QpO1xuIFx0aWYgKHJjKVxuIFx0XHRnb3RvIG91dF9lcnI7XG4rXHRrZnJlZShxZW50cnkpO1xuIFx0a2ZyZWUoaW5pKTtcbiBcdHJldHVybiAwO1xuIG91dF9lcnI6XG5AQCAtMTUyMCw2ICsxNTQyLDcgQEAgaW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcdFx0c21jcl9saW5rX2NsZWFyKGxpbmtfbmV3LCBmYWxzZSk7XG4gXHR9XG4gb3V0OlxuK1x0a2ZyZWUocWVudHJ5KTtcbiBcdGtmcmVlKGluaSk7XG4gXHRpZiAoc2VuZF9yZXFfYWRkX2xpbmtfcmVzcClcbiBcdFx0c21jX2xsY19zZW5kX3JlcV9hZGRfbGlua19yZXNwb25zZShyZXFfcWVudHJ5KTtcbkBAIC0xNTUyLDcgKzE1NzUsOCBAQCB2b2lkIHNtY19sbGNfYWRkX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rKVxuIFx0YWRkX2xsYy5oZC5jb21tb24ubGxjX3R5cGUgPSBTTUNfTExDX0FERF9MSU5LO1xuIFx0c21jX2xsY19pbml0X21zZ19oZHIoXHUwMDI2YWRkX2xsYy5oZCwgbGluay1cdTAwM2VsZ3IsIHNpemVvZihhZGRfbGxjKSk7XG4gXHQvKiBubyBkZXYgYW5kIHBvcnQgbmVlZGVkICovXG4tXHRzbWNfbGxjX2VucXVldWUobGluaywgKHVuaW9uIHNtY19sbGNfbXNnICopXHUwMDI2YWRkX2xsYyk7XG4rXHRzbWNfbGxjX2VucXVldWUobGluaywgKHVuaW9uIHNtY19sbGNfbXNnICopXHUwMDI2YWRkX2xsYyxcbitcdFx0XHRzaXplb2YodW5pb24gc21jX2xsY19tc2cpKTtcbiB9XG4gXG4gLyogd29ya2VyIHRvIHByb2Nlc3MgYW4gYWRkIGxpbmsgbWVzc2FnZSAqL1xuQEAgLTE1ODgsNyArMTYxMiw4IEBAIHZvaWQgc21jX2xsY19zcnZfZGVsZXRlX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rLCB1OCBkZWxfbGlua19pZClcbiBcdGRlbF9sbGMubGlua19udW0gPSBkZWxfbGlua19pZDtcbiBcdGRlbF9sbGMucmVhc29uID0gaHRvbmwoU01DX0xMQ19ERUxfTE9TVF9QQVRIKTtcbiBcdGRlbF9sbGMuaGQuZmxhZ3MgfD0gU01DX0xMQ19GTEFHX0RFTF9MSU5LX09SREVSTFk7XG4tXHRzbWNfbGxjX2VucXVldWUobGluaywgKHVuaW9uIHNtY19sbGNfbXNnICopXHUwMDI2ZGVsX2xsYyk7XG4rXHRzbWNfbGxjX2VucXVldWUobGluaywgKHVuaW9uIHNtY19sbGNfbXNnICopXHUwMDI2ZGVsX2xsYyxcbitcdFx0XHRzaXplb2YodW5pb24gc21jX2xsY19tc2cpKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX2NsaV9kZWxldGVfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbkBAIC0xODEwLDE5ICsxODM1LDI4IEBAIHN0YXRpYyB2b2lkIHNtY19sbGNfcm10X2RlbGV0ZV9ya2V5KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxuIFx0bGluayA9IHFlbnRyeS1cdTAwM2VsaW5rO1xuIFxuIFx0aWYgKGxnci1cdTAwM2VzbWNfdmVyc2lvbiA9PSBTTUNfVjIpIHtcbi1cdFx0c3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyICpsbGN2MjtcbitcdFx0c3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyX2lubGluZSAqbGxjdjI7XG4gXG4tXHRcdGlmIChzbWNfbGlua19zaGFyZWRfdjJfcnhidWYobGluaykpIHtcbi1cdFx0XHRtZW1jcHkobGdyLVx1MDAzZXdyX3J4X2J1Zl92MiwgbGxjLCBzaXplb2YoKmxsYykpO1xuLVx0XHRcdGxsY3YyID0gKHN0cnVjdCBzbWNfbGxjX21zZ19kZWxldGVfcmtleV92MiAqKWxnci1cdTAwM2V3cl9yeF9idWZfdjI7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0bGxjdjIgPSAoc3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyICopbGxjO1xuLVx0XHR9XG4rXHRcdC8qIFRoZSBsZWFkaW5nIFNNQ19MTENfREVMX1JLRVlfVjJfSU5MSU5FIHJrZXlzIGFyZSBkZWNsYXJlZCBpblxuK1x0XHQgKiB0aGUgbWVzc2FnZSBpdHNlbGYsIGFueSBmdXJ0aGVyIG9uZXMgd2VyZSByZWNlaXZlZCBpbnRvXG4rXHRcdCAqIHFlbnRyeS1cdTAwM2Vib2R5LlxuK1x0XHQgKi9cbitcdFx0bGxjdjIgPSBcdTAwMjZxZW50cnktXHUwMDNlbXNnLmRlbGV0ZV9ya2V5X3YyO1xuIFx0XHRsbGN2Mi1cdTAwM2VudW1faW52YWxfcmtleXMgPSAwO1xuIFxuIFx0XHRtYXggPSBtaW5fdCh1OCwgbGxjdjItXHUwMDNlbnVtX3JrZXlzLCBTTUNfTExDX1JLRVlTX1BFUl9NU0dfVjIpO1xuK1x0XHRtYXggPSBtaW5fdCh1MzIsIG1heCwgU01DX0xMQ19ERUxfUktFWV9WMl9JTkxJTkUgK1xuK1x0XHRcdFx0ICAgICAgcWVudHJ5LVx1MDAzZWJvZHlfbGVuIC8gc2l6ZW9mKF9fYmUzMikpO1xuIFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBtYXg7IGkrKykge1xuLVx0XHRcdGlmIChzbWNfcnRva2VuX2RlbGV0ZShsaW5rLCBsbGN2Mi1cdTAwM2Vya2V5W2ldKSlcbitcdFx0XHRfX2JlMzIgcmtleTtcbitcbitcdFx0XHRpZiAoaSBcdTAwM2MgU01DX0xMQ19ERUxfUktFWV9WMl9JTkxJTkUpXG4rXHRcdFx0XHRya2V5ID0gbGxjdjItXHUwMDNlcmtleVtpXTtcbitcdFx0XHRlbHNlXG4rXHRcdFx0XHRtZW1jcHkoXHUwMDI2cmtleSwgcWVudHJ5LVx1MDAzZWJvZHkgK1xuK1x0XHRcdFx0XHQgICAgICAoaSAtIFNNQ19MTENfREVMX1JLRVlfVjJfSU5MSU5FKSAqXG4rXHRcdFx0XHRcdCAgICAgIHNpemVvZihya2V5KSwgc2l6ZW9mKHJrZXkpKTtcbitcdFx0XHRpZiAoc21jX3J0b2tlbl9kZWxldGUobGluaywgcmtleSkpXG4gXHRcdFx0XHRsbGN2Mi1cdTAwM2VudW1faW52YWxfcmtleXMrKztcbiBcdFx0fVxuIFx0XHRtZW1zZXQoXHUwMDI2bGxjLVx1MDAzZXJrZXlbMF0sIDAsIHNpemVvZihsbGMtXHUwMDNlcmtleSkpO1xuQEAgLTIwNjMsMTggKzIwOTcsMzUgQEAgc3RhdGljIHZvaWQgc21jX2xsY19yeF9yZXNwb25zZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4gXHR3YWtlX3VwKFx1MDAyNmxpbmstXHUwMDNlbGdyLVx1MDAzZWxsY19tc2dfd2FpdGVyKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgc21jX2xsY19lbnF1ZXVlKHN0cnVjdCBzbWNfbGluayAqbGluaywgdW5pb24gc21jX2xsY19tc2cgKmxsYylcbitzdGF0aWMgdm9pZCBzbWNfbGxjX2VucXVldWUoc3RydWN0IHNtY19saW5rICpsaW5rLCB1bmlvbiBzbWNfbGxjX21zZyAqbGxjLFxuK1x0XHRcdCAgICB1MzIgYnl0ZV9sZW4pXG4ge1xuIFx0c3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IgPSBsaW5rLVx1MDAzZWxncjtcbiBcdHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5O1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcbitcdHUxNiBib2R5X2xlbiA9IDA7XG4gXG4tXHRxZW50cnkgPSBrbWFsbG9jX29iaigqcWVudHJ5LCBHRlBfQVRPTUlDKTtcbitcdC8qIFYyIG1lc3NhZ2VzIGNhbiBiZSBsb25nZXIgdGhhbiB0aGUgaW5saW5lIHVuaW9uIHNtY19sbGNfbXNnLiBDYXJyeVxuK1x0ICogdGhlIHJlbWFpbmRlciBpbiB0aGUgcWVudHJ5IGl0c2VsZiwgc28gdGhhdCBpdHMgbGlmZXRpbWUgYW5kIGl0c1xuK1x0ICogbGVuZ3RoIG1hdGNoIHRoZSBtZXNzYWdlIHRoZSBwZWVyIGFjdHVhbGx5IHNlbnQuXG4rXHQgKi9cbitcdGlmIChsZ3ItXHUwMDNlc21jX3ZlcnNpb24gPT0gU01DX1YyIFx1MDAyNlx1MDAyNiBieXRlX2xlbiBcdTAwM2UgU01DX1dSX1RYX1NJWkUpXG4rXHRcdGJvZHlfbGVuID0gbWluX3QodTMyLCBieXRlX2xlbiwgU01DX1dSX0JVRl9WMl9TSVpFKSAtXG4rXHRcdFx0ICAgU01DX1dSX1RYX1NJWkU7XG4rXG4rXHRxZW50cnkgPSBrbWFsbG9jX2ZsZXgoKnFlbnRyeSwgYm9keSwgYm9keV9sZW4sIEdGUF9BVE9NSUMpO1xuIFx0aWYgKCFxZW50cnkpXG4gXHRcdHJldHVybjtcbitcdHFlbnRyeS1cdTAwM2Vib2R5X2xlbiA9IGJvZHlfbGVuO1xuIFx0cWVudHJ5LVx1MDAzZWxpbmsgPSBsaW5rO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2cWVudHJ5LVx1MDAzZWxpc3QpO1xuIFx0bWVtY3B5KFx1MDAyNnFlbnRyeS1cdTAwM2Vtc2csIGxsYywgc2l6ZW9mKHVuaW9uIHNtY19sbGNfbXNnKSk7XG4rXHRpZiAoYm9keV9sZW4pIHtcbitcdFx0dTggKnNyYyA9IHNtY19saW5rX3NoYXJlZF92Ml9yeGJ1ZihsaW5rKSA/XG4rXHRcdFx0KHU4ICopbGdyLVx1MDAzZXdyX3J4X2J1Zl92MiA6ICh1OCAqKWxsYztcbitcbitcdFx0bWVtY3B5KHFlbnRyeS1cdTAwM2Vib2R5LCBzcmMgKyBTTUNfV1JfVFhfU0laRSwgYm9keV9sZW4pO1xuK1x0fVxuIFxuIFx0LyogcHJvY2VzcyByZXNwb25zZXMgaW1tZWRpYXRlbHkgKi9cbiBcdGlmICgobGxjLVx1MDAzZXJhdy5oZHIuZmxhZ3MgXHUwMDI2IFNNQ19MTENfRkxBR19SRVNQKSBcdTAwMjZcdTAwMjZcbkBAIC0yMTA2LDcgKzIxNTcsNyBAQCBzdGF0aWMgdm9pZCBzbWNfbGxjX3J4X2hhbmRsZXIoc3RydWN0IGliX3djICp3Yywgdm9pZCAqYnVmKVxuIFx0XHRcdHJldHVybjsgLyogaW52YWxpZCBtZXNzYWdlICovXG4gXHR9XG4gXG4tXHRzbWNfbGxjX2VucXVldWUobGluaywgbGxjKTtcbitcdHNtY19sbGNfZW5xdWV1ZShsaW5rLCBsbGMsIHdjLVx1MDAzZWJ5dGVfbGVuKTtcbiB9XG4gXG4gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqIHdvcmtlciwgdXRpbHMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTU6MDU6MzkuMzcwMzQ0ODc0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTMzMjU2OTk4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCB0byB0aGUgU01DIExMQyBTdWJzeXN0ZW0qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIG1vZGlmeWluZyBgbmV0L3NtYy9zbWNfbGxjLmNgLiBJdCBzZWVtcyB0byBiZSBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBTTUNfVjIsIGRlYWxpbmcgd2l0aCBMTEMgbWVzc2FnZXMgdGhhdCBleGNlZWQgdGhlIHNpemUgbGltaXRhdGlvbnMgb2YgYHVuaW9uIHNtY19sbGNfbXNnYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgaG93IHRoZXNlIGxvbmdlciBtZXNzYWdlcyBhcmUgaGFuZGxlZCB3aXRoaW4gdGhlIGBzbWNfbGxjX3FlbnRyeWAgc3RydWN0dXJlLiBUaGV5J3ZlIGludHJvZHVjZWQgYGJvZHlfbGVuYCBhbmQgYSBmbGV4aWJsZSBhcnJheSBgYm9keVtdYCBpbiBgc3RydWN0IHNtY19sbGNfcWVudHJ5YCB0byBhY2NvbW1vZGF0ZSB0aGUgZXh0cmEgYnl0ZXMuIFRoaXMgbWVhbnMgYHNtY19sbGNfZW5xdWV1ZWAgbm93IGFjY291bnRzIGZvciB0aGlzIGFuZCBhbGxvY2F0ZXMgdGhlIGBxZW50cnlgIGFjY29yZGluZ2x5LCB0YWtpbmcgYGJ5dGVfbGVuYCBpbnRvIGFjY291bnQuIFRoZSBmdW5jdGlvbnMgYHNtY19sbGNfc2F2ZV9hZGRfbGlua19ya2V5c2AgYW5kIGBzbWNfbGxjX3JtdF9kZWxldGVfcmtleWAgaGF2ZSBiZWVuIHVwZGF0ZWQgdG8gcmVhZCB0aGUgZGF0YSBkaXJlY3RseSBmcm9tIGBxZW50cnktXHUwMDNlYm9keWAgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBhIHNoYXJlZCBidWZmZXIuXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIHNpZ25pZmljYW50IGNoYW5nZSB0byBob3cgU01DIExMQyBtZXNzYWdlcywgcGFydGljdWxhcmx5IGluIFYyLCBhcmUgbWFuYWdlZC4gU01DLCBhcyBhIG5ldHdvcmsgcHJvdG9jb2wsIGlzIGludGVyZXN0aW5nIGJlY2F1c2Ugb2YgaXRzIHNoYXJlZCBtZW1vcnkgY2hhcmFjdGVyaXN0aWNzLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSByZWFjaCB0aGlzIG5ldyBjb2RlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGFuZCBob3cgZWFzaWx5IGNhbiB3ZSB0ZXN0IGl0P1xuXG5NeSBpbml0aWFsIHRob3VnaHRzIGFyZSwgeWVzLCB3ZSBjYW4gcmVhY2ggaXQuIEkga25vdyBTTUMgY2FuIGJlIHRlc3RlZCB1c2luZyBgQUZfU01DYCBzb2NrZXRzLiBUaGVyZSdzIHRoZSBzb2Z0d2FyZSBJU00gZGV2aWNlIGFuZCBsb29wYmFjayBkZXZpY2VzIGxpa2UgYGxvb3BiYWNrLWlzbWAgYW5kIGBzbWNfbG9vcGJhY2tgLiBBbHNvLCBzeXprYWxsZXIgZnV6emVzIFNNQyB2aWEgYEFGX1NNQ2Agc29ja2V0cy4gVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgZG9lcyBzeXprYWxsZXIgdGFyZ2V0IHRoaXMgc3BlY2lmaWMgY29kZT9cblxuQSBxdWljayBjaGVjayBjb25maXJtcyB0aGF0IHN5emthbGxlciAqZG9lcyogaGF2ZSBTTUMgZGVzY3JpcHRpb25zLCB3aGljaCBpcyBhIGdvb2Qgc2lnbi4gRGlnZ2luZyBkZWVwZXIsIEkgc2VlIHRoYXQgYHNtY19sbGNfZW5xdWV1ZWAgaXMgY2FsbGVkIGZyb20gYHNtY19sbGNfcnhfaGFuZGxlcmAuIGBzbWNfbGxjX3J4X2hhbmRsZXJgIGlzIHRoZSBJQiB3b3JrIGNvbXBsZXRpb24gaGFuZGxlciBmb3IgTExDIG1lc3NhZ2VzLiBTbywgdGhlc2UgTExDIG1lc3NhZ2VzIGFyZSByZWNlaXZlZCBvdmVyIGFuIElCIHF1ZXVlIHBhaXIuIElmIHdlIGhhdmUgYSBzb2Z0d2FyZSBSRE1BIGRldmljZSBsaWtlIGByeGVgIG9yIGBzaXdgIChTb2Z0aVdBUlApIGNvbmZpZ3VyZWQsIGl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUuIEFuZCwgaW1wb3J0YW50bHksIHN5emthbGxlciBzdXBwb3J0cyBib3RoIGByeGVgIGFuZCBgc2l3YC4gU01DIGFsc28gc3VwcG9ydHMgSVNNLiBTbywgd2UncmUgbG9va2luZyBhdCBTTUMgb3ZlciBgcnhlYCBvciBgc2l3YCwgd2hpY2ggc3l6a2FsbGVyIGFsc28gZnV6enplcy5cblxuVG8gZnVydGhlciByZWZpbmUgbXkgYW5hbHlzaXMsIEkgc2hvdWxkIGlkZW50aWZ5IGtleSBzeW1ib2xzIHRvIGZvY3VzIG9uOiBgc21jX2xsY19lbnF1ZXVlYCwgYHNtY19sbGNfc2F2ZV9hZGRfbGlua19ya2V5c2AsIGBzbWNfbGxjX3JtdF9kZWxldGVfcmtleWAsIGBzbWNfbGxjX3J4X2hhbmRsZXJgLCBgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBhbmQgYHNtY19sbGNfc3J2X2FkZF9saW5rYC4gSSBuZWVkIHRvIGNoZWNrIGBuZXQvc21jL3NtY19sbGMuY2AgdG8gc2VlIGlmIHRoZXkncmUgc3RhdGljIG9yIGV4cG9ydGVkIGFuZCBkZXRlcm1pbmUgd2hpY2ggb25lcyBhcmUgdGhlIG1vc3QgdmFsdWFibGUgdG8gc2NydXRpbml6ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk0NywiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE1OjA1OjQ4LjcwMjkyMTUzNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjE4NDM4MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihzdGF0aWMgKT8oaW50fHZvaWQpIHNtY19sbGNfLipcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL3NtY19sbGMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL3NtY19sbGMuYz0yMTU9c3RydWN0IHNtY19sbGNfcWVudHJ5IHtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyMi1cXG5uZXQvc21jL3NtY19sbGMuYzoyMjM6c3RhdGljIHZvaWQgc21jX2xsY19lbnF1ZXVlKHN0cnVjdCBzbWNfbGluayAqbGluaywgdW5pb24gc21jX2xsY19tc2cgKmxsYyxcXG5uZXQvc21jL3NtY19sbGMuYy0yMjQtXFx0XFx0XFx0ICAgIHUzMiBieXRlX2xlbik7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0yMjY9c3RydWN0IHNtY19sbGNfcWVudHJ5ICpzbWNfbGxjX2Zsb3dfcWVudHJ5X2NscihzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93KVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjMzLVxcbm5ldC9zbWMvc21jX2xsYy5jOjIzNDp2b2lkIHNtY19sbGNfZmxvd19xZW50cnlfZGVsKHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpXFxubmV0L3NtYy9zbWNfbGxjLmMtMjM1LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTI0NT1zdGF0aWMgaW5saW5lIHZvaWQgc21jX2xsY19mbG93X3FlbnRyeV9zZXQoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdyxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTI1MC1cXG5uZXQvc21jL3NtY19sbGMuYzoyNTE6c3RhdGljIHZvaWQgc21jX2xsY19mbG93X3BhcmFsbGVsKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCB1OCBmbG93X3R5cGUsXFxubmV0L3NtYy9zbWNfbGxjLmMtMjUyLVxcdFxcdFxcdFxcdCAgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0yNzM9c3RhdGljIGJvb2wgc21jX2xsY19mbG93X3N0YXJ0KHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3csXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0zMDQtLyogc3RhcnQgYSBuZXcgbG9jYWwgbGxjIGZsb3csIHdhaXQgdGlsbCBjdXJyZW50IGZsb3cgZmluaXNoZWQgKi9cXG5uZXQvc21jL3NtY19sbGMuYzozMDU6aW50IHNtY19sbGNfZmxvd19pbml0aWF0ZShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG5uZXQvc21jL3NtY19sbGMuYy0zMDYtXFx0XFx0XFx0ICBlbnVtIHNtY19sbGNfZmxvd3R5cGUgdHlwZSlcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTMzOC0vKiBmaW5pc2ggdGhlIGN1cnJlbnQgbGxjIGZsb3cgKi9cXG5uZXQvc21jL3NtY19sbGMuYzozMzk6dm9pZCBzbWNfbGxjX2Zsb3dfc3RvcChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdylcXG5uZXQvc21jL3NtY19sbGMuYy0zNDAte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9Mzk1PXN0cnVjdCBzbWNfbGxjX3R4X3BlbmQge1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMzk4LS8qIGhhbmRsZXIgZm9yIHNlbmQvdHJhbnNtaXNzaW9uIGNvbXBsZXRpb24gb2YgYW4gTExDIG1zZyAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjM5OTpzdGF0aWMgdm9pZCBzbWNfbGxjX3R4X2hhbmRsZXIoc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKnBlbmQsXFxubmV0L3NtYy9zbWNfbGxjLmMtNDAwLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy00MTgtICovXFxubmV0L3NtYy9zbWNfbGxjLmM6NDE5OnN0YXRpYyBpbnQgc21jX2xsY19hZGRfcGVuZGluZ19zZW5kKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy00MjAtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBzbWNfd3JfYnVmICoqd3JfYnVmLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtNDQwLVxcbm5ldC9zbWMvc21jX2xsYy5jOjQ0MTpzdGF0aWMgaW50IHNtY19sbGNfYWRkX3BlbmRpbmdfc2VuZF92MihzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9zbWNfbGxjLmMtNDQyLVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc21jX3dyX3YyX2J1ZiAqKndyX2J1ZixcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTQ1Mi1cXG5uZXQvc21jL3NtY19sbGMuYzo0NTM6c3RhdGljIHZvaWQgc21jX2xsY19pbml0X21zZ19oZHIoc3RydWN0IHNtY19sbGNfaGRyICpoZHIsXFxubmV0L3NtYy9zbWNfbGxjLmMtNDU0LVxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc2l6ZV90IGxlbilcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTQ2NS0vKiBoaWdoLWxldmVsIEFQSSB0byBzZW5kIExMQyBjb25maXJtIGxpbmsgKi9cXG5uZXQvc21jL3NtY19sbGMuYzo0NjY6aW50IHNtY19sbGNfc2VuZF9jb25maXJtX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbm5ldC9zbWMvc21jX2xsYy5jLTQ2Ny1cXHRcXHRcXHQgICAgICBlbnVtIHNtY19sbGNfcmVxcmVzcCByZXFyZXNwKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtNTA1LS8qIHNlbmQgTExDIGNvbmZpcm0gcmtleSByZXF1ZXN0ICovXFxubmV0L3NtYy9zbWNfbGxjLmM6NTA2OnN0YXRpYyBpbnQgc21jX2xsY19zZW5kX2NvbmZpcm1fcmtleShzdHJ1Y3Qgc21jX2xpbmsgKnNlbmRfbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy01MDctXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTU1NC0vKiBzZW5kIExMQyBkZWxldGUgcmtleSByZXF1ZXN0ICovXFxubmV0L3NtYy9zbWNfbGxjLmM6NTU1OnN0YXRpYyBpbnQgc21jX2xsY19zZW5kX2RlbGV0ZV9ya2V5KHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy01NTYtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnJtYl9kZXNjKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9NjE1PXN0YXRpYyBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpzbWNfbGxjX2dldF9maXJzdF9ybWIoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy02MjEtXFxubmV0L3NtYy9zbWNfbGxjLmM6NjIyOnN0YXRpYyBpbnQgc21jX2xsY19maWxsX2V4dF92MihzdHJ1Y3Qgc21jX2xsY19tc2dfYWRkX2xpbmtfdjJfZXh0ICpleHQsXFxubmV0L3NtYy9zbWNfbGxjLmMtNjIzLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfbGluayAqbGlua19uZXcpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy02NjEtLyogc2VuZCBBREQgTElOSyByZXF1ZXN0IG9yIHJlc3BvbnNlICovXFxubmV0L3NtYy9zbWNfbGxjLmM6NjYyOmludCBzbWNfbGxjX3NlbmRfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCB1OCBtYWNbXSwgdTggZ2lkW10sXFxubmV0L3NtYy9zbWNfbGxjLmMtNjYzLVxcdFxcdFxcdCAgc3RydWN0IHNtY19saW5rICpsaW5rX25ldyxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTcyMi0vKiBzZW5kIERFTEVURSBMSU5LIHJlcXVlc3Qgb3IgcmVzcG9uc2UgKi9cXG5uZXQvc21jL3NtY19sbGMuYzo3MjM6aW50IHNtY19sbGNfc2VuZF9kZWxldGVfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHU4IGxpbmtfZGVsX2lkLFxcbm5ldC9zbWMvc21jX2xsYy5jLTcyNC1cXHRcXHRcXHQgICAgIGVudW0gc21jX2xsY19yZXFyZXNwIHJlcXJlc3AsIGJvb2wgb3JkZXJseSxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTc1OC0vKiBzZW5kIExMQyB0ZXN0IGxpbmsgcmVxdWVzdCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjc1OTpzdGF0aWMgaW50IHNtY19sbGNfc2VuZF90ZXN0X2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCB1OCB1c2VyX2RhdGFbMTZdKVxcbm5ldC9zbWMvc21jX2xsYy5jLTc2MC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy03ODMtLyogc2NoZWR1bGUgYW4gbGxjIHNlbmQgb24gbGluaywgbWF5IHdhaXQgZm9yIGJ1ZmZlcnMgKi9cXG5uZXQvc21jL3NtY19sbGMuYzo3ODQ6c3RhdGljIGludCBzbWNfbGxjX3NlbmRfbWVzc2FnZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHZvaWQgKmxsY2J1ZilcXG5uZXQvc21jL3NtY19sbGMuYy03ODUte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtODA1LSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjgwNjpzdGF0aWMgaW50IHNtY19sbGNfc2VuZF9tZXNzYWdlX3dhaXQoc3RydWN0IHNtY19saW5rICpsaW5rLCB2b2lkICpsbGNidWYpXFxubmV0L3NtYy9zbWNfbGxjLmMtODA3LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTgyNS1cXG5uZXQvc21jL3NtY19sbGMuYzo4MjY6c3RhdGljIGludCBzbWNfbGxjX2FsbG9jX2FsdF9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxcbm5ldC9zbWMvc21jX2xsYy5jLTgyNy1cXHRcXHRcXHRcXHQgIGVudW0gc21jX2xncl90eXBlIGxncl9uZXdfdClcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTg1MC0vKiBzZW5kIG9uZSBhZGRfbGlua19jb250aW51ZSBtc2cgKi9cXG5uZXQvc21jL3NtY19sbGMuYzo4NTE6c3RhdGljIGludCBzbWNfbGxjX2FkZF9saW5rX2NvbnQoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbm5ldC9zbWMvc21jX2xsYy5jLTg1Mi1cXHRcXHRcXHRcXHQgc3RydWN0IHNtY19saW5rICpsaW5rX25ldywgdTggKm51bV9ya2V5c190b2RvLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtOTA1LVxcbm5ldC9zbWMvc21jX2xsYy5jOjkwNjpzdGF0aWMgaW50IHNtY19sbGNfY2xpX3JrZXlfZXhjaGFuZ2Uoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbm5ldC9zbWMvc21jX2xsYy5jLTkwNy1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBzbWNfbGluayAqbGlua19uZXcpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy05NDktLyogcHJlcGFyZSBhbmQgc2VuZCBhbiBhZGQgbGluayByZWplY3QgcmVzcG9uc2UgKi9cXG5uZXQvc21jL3NtY19sbGMuYzo5NTA6c3RhdGljIGludCBzbWNfbGxjX2NsaV9hZGRfbGlua19yZWplY3Qoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXFxubmV0L3NtYy9zbWNfbGxjLmMtOTUxLXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTk1OS1cXG5uZXQvc21jL3NtY19sbGMuYzo5NjA6c3RhdGljIGludCBzbWNfbGxjX2NsaV9jb25mX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbm5ldC9zbWMvc21jX2xsYy5jLTk2MS1cXHRcXHRcXHRcXHQgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTEwMTctXFxubmV0L3NtYy9zbWNfbGxjLmM6MTAxODpzdGF0aWMgdm9pZCBzbWNfbGxjX3NhdmVfYWRkX2xpbmtfcmtleXMoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbm5ldC9zbWMvc21jX2xsYy5jLTEwMTktXFx0XFx0XFx0XFx0XFx0c3RydWN0IHNtY19saW5rICpsaW5rX25ldyxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTEwNDMtXFxubmV0L3NtYy9zbWNfbGxjLmM6MTA0NDpzdGF0aWMgdm9pZCBzbWNfbGxjX3NhdmVfYWRkX2xpbmtfaW5mbyhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9zbWNfbGxjLmMtMTA0NS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rICphZGRfbGxjKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTA1NC0vKiBhcyBhbiBTTUMgY2xpZW50LCBwcm9jZXNzIGFuIGFkZCBsaW5rIHJlcXVlc3QgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxMDU1OmludCBzbWNfbGxjX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbm5ldC9zbWMvc21jX2xsYy5jLTEwNTYte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTE0Ny1cXG5uZXQvc21jL3NtY19sbGMuYzoxMTQ4OnN0YXRpYyB2b2lkIHNtY19sbGNfc2VuZF9yZXF1ZXN0X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaylcXG5uZXQvc21jL3NtY19sbGMuYy0xMTQ5LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTExODYtLyogYXMgYW4gU01DIGNsaWVudCwgaW52aXRlIHNlcnZlciB0byBzdGFydCB0aGUgYWRkX2xpbmsgcHJvY2Vzc2luZyAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjExODc6c3RhdGljIHZvaWQgc21jX2xsY19jbGlfYWRkX2xpbmtfaW52aXRlKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy0xMTg4LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTIzMT1zdGF0aWMgYm9vbCBzbWNfbGxjX2lzX2xvY2FsX2FkZF9saW5rKHVuaW9uIHNtY19sbGNfbXNnICpsbGMpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMjM4LVxcbm5ldC9zbWMvc21jX2xsYy5jOjEyMzk6c3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG5uZXQvc21jL3NtY19sbGMuYy0xMjQwLXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTEyNTItXFxubmV0L3NtYy9zbWNfbGxjLmM6MTI1MzpzdGF0aWMgaW50IHNtY19sbGNfYWN0aXZlX2xpbmtfY291bnQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxubmV0L3NtYy9zbWNfbGxjLmMtMTI1NC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xMjY2PXN0YXRpYyBzdHJ1Y3Qgc21jX2xpbmsgKnNtY19sbGNfZmluZF9hc3ltX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMzA5LVxcbm5ldC9zbWMvc21jX2xsYy5jOjEzMTA6c3RhdGljIHZvaWQgc21jX2xsY19kZWxldGVfYXN5bV9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbm5ldC9zbWMvc21jX2xsYy5jLTEzMTEte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTM0My1cXG5uZXQvc21jL3NtY19sbGMuYzoxMzQ0OnN0YXRpYyBpbnQgc21jX2xsY19zcnZfcmtleV9leGNoYW5nZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9zbWNfbGxjLmMtMTM0NS1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBzbWNfbGluayAqbGlua19uZXcpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMzg0LVxcbm5ldC9zbWMvc21jX2xsYy5jOjEzODU6c3RhdGljIGludCBzbWNfbGxjX3Nydl9jb25mX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbm5ldC9zbWMvc21jX2xsYy5jLTEzODYtXFx0XFx0XFx0XFx0IHN0cnVjdCBzbWNfbGluayAqbGlua19uZXcsXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNDE4LVxcbm5ldC9zbWMvc21jX2xsYy5jOjE0MTk6c3RhdGljIHZvaWQgc21jX2xsY19zZW5kX3JlcV9hZGRfbGlua19yZXNwb25zZShzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcXG5uZXQvc21jL3NtY19sbGMuYy0xNDIwLXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE0MjctXFxubmV0L3NtYy9zbWNfbGxjLmM6MTQyODppbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbm5ldC9zbWMvc21jX2xsYy5jLTE0MjktXFx0XFx0XFx0IHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcmVxX3FlbnRyeSlcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE1NTEtXFxubmV0L3NtYy9zbWNfbGxjLmM6MTU1MjpzdGF0aWMgdm9pZCBzbWNfbGxjX3Byb2Nlc3Nfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE1NTMte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTU3MC0vKiBlbnF1ZXVlIGEgbG9jYWwgYWRkX2xpbmsgcmVxIHRvIHRyaWdnZXIgYSBuZXcgYWRkX2xpbmsgZmxvdyAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjE1NzE6dm9pZCBzbWNfbGxjX2FkZF9saW5rX2xvY2FsKHN0cnVjdCBzbWNfbGluayAqbGluaylcXG5uZXQvc21jL3NtY19sbGMuYy0xNTcyLXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE1ODItLyogd29ya2VyIHRvIHByb2Nlc3MgYW4gYWRkIGxpbmsgbWVzc2FnZSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjE1ODM6c3RhdGljIHZvaWQgc21jX2xsY19hZGRfbGlua193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvc21jL3NtY19sbGMuYy0xNTg0LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE2MDUtICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTYwNjp2b2lkIHNtY19sbGNfc3J2X2RlbGV0ZV9saW5rX2xvY2FsKHN0cnVjdCBzbWNfbGluayAqbGluaywgdTggZGVsX2xpbmtfaWQpXFxubmV0L3NtYy9zbWNfbGxjLmMtMTYwNy17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNjE4LVxcbm5ldC9zbWMvc21jX2xsYy5jOjE2MTk6c3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX2NsaV9kZWxldGVfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG5uZXQvc21jL3NtY19sbGMuYy0xNjIwLXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE2NzYtICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTY3Nzp2b2lkIHNtY19sbGNfc2VuZF9saW5rX2RlbGV0ZV9hbGwoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGJvb2wgb3JkLCB1MzIgcnNuKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE2Nzgte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTY5Ni1cXG5uZXQvc21jL3NtY19sbGMuYzoxNjk3OnN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19zcnZfZGVsZXRlX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxubmV0L3NtYy9zbWNfbGxjLmMtMTY5OC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNzY0LVxcbm5ldC9zbWMvc21jX2xsYy5jOjE3NjU6c3RhdGljIHZvaWQgc21jX2xsY19kZWxldGVfbGlua193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvc21jL3NtY19sbGMuYy0xNzY2LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE3ODQtLyogcHJvY2VzcyBhIGNvbmZpcm1fcmtleSByZXF1ZXN0IGZyb20gcGVlciwgcmVtb3RlIGZsb3cgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxNzg1OnN0YXRpYyB2b2lkIHNtY19sbGNfcm10X2NvbmZfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG5uZXQvc21jL3NtY19sbGMuYy0xNzg2LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE4MjQtLyogcHJvY2VzcyBhIGRlbGV0ZV9ya2V5IHJlcXVlc3QgZnJvbSBwZWVyLCByZW1vdGUgZmxvdyAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjE4MjU6c3RhdGljIHZvaWQgc21jX2xsY19ybXRfZGVsZXRlX3JrZXkoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxubmV0L3NtYy9zbWNfbGxjLmMtMTgyNi17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xODg2LVxcbm5ldC9zbWMvc21jX2xsYy5jOjE4ODc6c3RhdGljIHZvaWQgc21jX2xsY19wcm90b2NvbF92aW9sYXRpb24oc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIHU4IHR5cGUpXFxubmV0L3NtYy9zbWNfbGxjLmMtMTg4OC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xODk2LS8qIGZsdXNoIHRoZSBsbGMgZXZlbnQgcXVldWUgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxODk3OnN0YXRpYyB2b2lkIHNtY19sbGNfZXZlbnRfZmx1c2goc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxubmV0L3NtYy9zbWNfbGxjLmMtMTg5OC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xOTA4LVxcbm5ldC9zbWMvc21jX2xsYy5jOjE5MDk6c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF9oYW5kbGVyKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbm5ldC9zbWMvc21jX2xsYy5jLTE5MTAte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjAyNy0vKiB3b3JrZXIgdG8gcHJvY2VzcyBsbGMgbWVzc2FnZXMgb24gdGhlIGV2ZW50IHF1ZXVlICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MjAyODpzdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9zbWMvc21jX2xsYy5jLTIwMjkte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjA1Ni0vKiBwcm9jZXNzIGxsYyByZXNwb25zZXMgaW4gdGFza2xldCBjb250ZXh0ICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MjA1NzpzdGF0aWMgdm9pZCBzbWNfbGxjX3J4X3Jlc3BvbnNlKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy0yMDU4LVxcdFxcdFxcdFxcdHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjA5OS1cXG5uZXQvc21jL3NtY19sbGMuYzoyMTAwOnN0YXRpYyB2b2lkIHNtY19sbGNfZW5xdWV1ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHVuaW9uIHNtY19sbGNfbXNnICpsbGMsXFxubmV0L3NtYy9zbWNfbGxjLmMtMjEwMS1cXHRcXHRcXHQgICAgdTMyIGJ5dGVfbGVuKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjE0NC0vKiBjb3B5IHJlY2VpdmVkIG1zZyBhbmQgYWRkIGl0IHRvIHRoZSBldmVudCBxdWV1ZSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIxNDU6c3RhdGljIHZvaWQgc21jX2xsY19yeF9oYW5kbGVyKHN0cnVjdCBpYl93YyAqd2MsIHZvaWQgKmJ1ZilcXG5uZXQvc21jL3NtY19sbGMuYy0yMTQ2LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIxNjQtXFxubmV0L3NtYy9zbWNfbGxjLmM6MjE2NTpzdGF0aWMgdm9pZCBzbWNfbGxjX3Rlc3RsaW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9zbWMvc21jX2xsYy5jLTIxNjYte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjE5Ni1cXG5uZXQvc21jL3NtY19sbGMuYzoyMTk3OnZvaWQgc21jX2xsY19sZ3JfaW5pdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19zb2NrICpzbWMpXFxubmV0L3NtYy9zbWNfbGxjLmMtMjE5OC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMjE1LS8qIGNhbGxlZCBhZnRlciBsZ3Igd2FzIHJlbW92ZWQgZnJvbSBsZ3JfbGlzdCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIyMTY6dm9pZCBzbWNfbGxjX2xncl9jbGVhcihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG5uZXQvc21jL3NtY19sbGMuYy0yMjE3LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyMjktXFxubmV0L3NtYy9zbWNfbGxjLmM6MjIzMDppbnQgc21jX2xsY19saW5rX2luaXQoc3RydWN0IHNtY19saW5rICpsaW5rKVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyMzEte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjIzNi1cXG5uZXQvc21jL3NtY19sbGMuYzoyMjM3OnZvaWQgc21jX2xsY19saW5rX2FjdGl2ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXFxubmV0L3NtYy9zbWNfbGxjLmMtMjIzOC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMjU0LS8qIGNhbGxlZCBpbiB3b3JrZXIgY29udGV4dCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIyNTU6dm9pZCBzbWNfbGxjX2xpbmtfY2xlYXIoc3RydWN0IHNtY19saW5rICpsaW5rLCBib29sIGxvZylcXG5uZXQvc21jL3NtY19sbGMuYy0yMjU2LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyNjktLyogcmVnaXN0ZXIgYSBuZXcgcnRva2VuIGF0IHRoZSByZW1vdGUgcGVlciAoZm9yIGFsbCBsaW5rcykgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoyMjcwOmludCBzbWNfbGxjX2RvX2NvbmZpcm1fcmtleShzdHJ1Y3Qgc21jX2xpbmsgKnNlbmRfbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy0yMjcxLVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyOTEtLyogdW5yZWdpc3RlciBhbiBydG9rZW4gYXQgdGhlIHJlbW90ZSBwZWVyICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MjI5MjppbnQgc21jX2xsY19kb19kZWxldGVfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG5uZXQvc21jL3NtY19sbGMuYy0yMjkzLVxcdFxcdFxcdCAgIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnJtYl9kZXNjKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjMxNy1cXG5uZXQvc21jL3NtY19sbGMuYzoyMzE4OnZvaWQgc21jX2xsY19saW5rX3NldF91aWQoc3RydWN0IHNtY19saW5rICpsaW5rKVxcbm5ldC9zbWMvc21jX2xsYy5jLTIzMTkte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjMyNi0vKiBzYXZlIHBlZXJzIGxpbmsgdXNlciBpZCwgdXNlZCBmb3IgZGVidWcgcHVycG9zZXMgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoyMzI3OnZvaWQgc21jX2xsY19zYXZlX3BlZXJfdWlkKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbm5ldC9zbWMvc21jX2xsYy5jLTIzMjgte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjMzMy0vKiBldmFsdWF0ZSBjb25maXJtIGxpbmsgcmVxdWVzdCBvciByZXNwb25zZSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIzMzQ6aW50IHNtY19sbGNfZXZhbF9jb25mX2xpbmsoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnksXFxubmV0L3NtYy9zbWNfbGxjLmMtMjMzNS1cXHRcXHRcXHQgICBlbnVtIHNtY19sbGNfcmVxcmVzcCB0eXBlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNTowNTo0OC45NjQ3NzE5NDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzY1MDIwMDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBTTUMgTGluayBNYW5hZ2VtZW50IEZ1bmN0aW9ucyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gdGhlc2UgZnVuY3Rpb24gbW9kaWZpY2F0aW9ucy4gRmlyc3QsIEkndmUgZ290IGEgbGlzdCBvZiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zOiBgc21jX2xsY19lbnF1ZXVlYCAoc3RhdGljKSwgYHNtY19sbGNfc2F2ZV9hZGRfbGlua19ya2V5c2AgKHN0YXRpYyksIGFuZCB0aGVuIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGBzbWNfbGxjX3Nydl9hZGRfbGlua2AsIGBzbWNfbGxjX2FkZF9saW5rX2xvY2FsYCwgYW5kIGBzbWNfbGxjX3Nydl9kZWxldGVfbGlua19sb2NhbGAg4oCTIHRob3NlIGxhc3QgZm91ciwgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciB0aGV5J3JlIGV4cG9ydGVkIG9yIG5vbi1zdGF0aWMsIHNvIEkgY2FuIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2VzLiBBaCwgeWVzLCBjb25maXJtZWQsIHRoZXkgKmFyZSogbm9uLXN0YXRpYyBhbmQgZXhwb3J0ZWQuXG5cbkdvb2QsIG5vdyBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGFyZSBnb29kIGZvY3VzIHN5bWJvbHMuIEFuZCB0aGVuIEkgaGF2ZSBgc21jX2xsY19ybXRfZGVsZXRlX3JrZXlgIChzdGF0aWMpIHRvIGNvbnNpZGVyLiBXYWl0LCBJIGFsc28gbmVlZCB0byBtYWtlIGEgbm90ZSB0aGF0IGBzbWNfbGxjX3J4X2hhbmRsZXJgIGlzIHN0YXRpYyBhbmQgZ2V0cyBjYWxsZWQgZnJvbSBhbiBJQiB3b3JrIGNvbXBsZXRpb24sIHNvIHRoYXQgbmVlZHMgdG8gYmUgY29uc2lkZXJlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBvdGhlcnMuXG5cbkFscmlnaHQsIGBzbWNfbGxjX2NsaV9hZGRfbGlua2Agc2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGRldGFpbGVkIGFuYWx5c2lzLCBhbmQgc28gZG9lcyBgc21jX2xsY19zcnZfYWRkX2xpbmtgLiBJIG5lZWQgdG8gY29uc3VsdCB0aGUgS2NvbmZpZyBmb3IgU01DIGNvbmZpZ3VyYXRpb25zIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlc2UgbW9kaWZpY2F0aW9ucywgYnV0IHRoaXMgZ2l2ZXMgbWUgYSBzb2xpZCBmcmFtZXdvcmsgZm9yIGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNTY5LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE1OjA1OjU0LjMyOTc5NDUzMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzU1NzAzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU01DXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvc21jL0tjb25maWc6Mjpjb25maWcgU01DXFxubmV0L3NtYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XFxcIlxcbi0tXFxubmV0L3NtYy9LY29uZmlnLTEzLVxcbm5ldC9zbWMvS2NvbmZpZzoxNDpjb25maWcgU01DX0RJQUdcXG5uZXQvc21jL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIlNNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L3NtYy9LY29uZmlnLTIyLVxcbm5ldC9zbWMvS2NvbmZpZzoyMzpjb25maWcgU01DX0hTX0NUUkxfQlBGXFxubmV0L3NtYy9LY29uZmlnLTI0LVxcdGJvb2wgXFxcIkdlbmVyaWMgZUJQRiBob29rIGZvciBTTUMgaGFuZHNoYWtlIGZsb3dcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE1OjA1OjU0LjM3NzM2MTY4OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMjU0NzQ5OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgU01DIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBhbiBgU01DYCBjb25maWd1cmF0aW9uLiBGaXJzdCwgbGV0J3MganVzdCBjb25maXJtIHRoYXQncyB0aGUgb25seSBvbmUgd2UncmUgZGVhbGluZyB3aXRoIHJpZ2h0IG5vdyDigJMgYXJlIHRoZXJlIGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIGZsb2F0aW5nIGFyb3VuZCB0aGF0IGNvdWxkIGltcGFjdCBpdD8gTmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbXBsZXRlIHBpY3R1cmUuIE9rYXksIGdvb2QuXG5cbk5vdywgbGV0J3MgZGl2ZSBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgYFNNQ2AgY29uZmlndXJhdGlvbi4gTXkgdXN1YWwgZ28tdG8gZm9yIHRoaXMgdHlwZSBvZiBkZXBlbmRlbmN5IGFuYWx5c2lzIGlzIHRoZSBgbmV0L3NtYy9LY29uZmlnYCBmaWxlLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBpbnRlcmNvbm5lY3Rpb25zIGFuZCBuZWNlc3NhcnkgcHJlcmVxdWlzaXRlcyBzaG91bGQgYmUgZGVmaW5lZC4gVGltZSB0byBjcmFjayB0aGF0IGZpbGUgb3BlbiBhbmQgc2VlIHdoYXQgbWFrZXMgdGhpcyBgU01DYCBjb25maWd1cmF0aW9uIHRpY2shXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NDUzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTU6MDU6NTkuNTAyODM4OTQ1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwMzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zbWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNNQ1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlNNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IElORklOSUJBTkQgXFx1MDAyNlxcdTAwMjYgRElCU1xcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBTTUMtUiBwcm92aWRlcyBhIFxcXCJzb2NrZXRzIG92ZXIgUkRNQVxcXCIgc29sdXRpb24gbWFraW5nIHVzZSBvZlxcbiAgIDc6XFx0XFx0ICBSRE1BIG92ZXIgQ29udmVyZ2VkIEV0aGVybmV0IChSb0NFKSB0ZWNobm9sb2d5IHRvIHVwZ3JhZGVcXG4gICA4OlxcdFxcdCAgQUZfSU5FVCBUQ1AgY29ubmVjdGlvbnMgdHJhbnNwYXJlbnRseS5cXG4gICA5OlxcdFxcdCAgVGhlIExpbnV4IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTTUMtUiBzb2x1dGlvbiBpcyBkZXNpZ25lZCBhc1xcbiAgMTA6XFx0XFx0ICBhIHNlcGFyYXRlIHNvY2tldCBmYW1pbHkgU01DLlxcbiAgMTE6XFx0XFxuICAxMjpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBydW4gU01DIHNvY2tldCBhcHBsaWNhdGlvbnNcXG4gIDEzOlxcdFxcbiAgMTQ6XFx0Y29uZmlnIFNNQ19ESUFHXFxuICAxNTpcXHRcXHR0cmlzdGF0ZSBcXFwiU01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuICAxNjpcXHRcXHRkZXBlbmRzIG9uIFNNQ1xcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBTdXBwb3J0IGZvciBTTUMgc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlIHVzZWQgYnkgdG9vbHMgc3VjaCBhc1xcbiAgMTk6XFx0XFx0ICBzbWNzcy5cXG4gIDIwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNTowNTo1OS41MDI5NDA3MjVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDYwNDI4NDI3NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjoxNDk0OCwiT3V0cHV0VG9rZW5zIjoyMDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MjkxMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE1OjExOjQ1LjU0NTc4Nzk5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ1NTkwNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNNQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNtY19sbGNfY2xpX2FkZF9saW5rXCIsXG4gICAgXCJzbWNfbGxjX3Nydl9hZGRfbGlua1wiLFxuICAgIFwic21jX2xsY19hZGRfbGlua19sb2NhbFwiLFxuICAgIFwic21jX2xsY19zcnZfZGVsZXRlX2xpbmtfbG9jYWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBob3cgU01DIExMQyBtZXNzYWdlcyBhcmUgZW5xdWV1ZWQgYW5kIHByb2Nlc3NlZCwgc3BlY2lmaWNhbGx5IGZvciBTTUNfVjIgd2hlcmUgbWVzc2FnZXMgY2FuIGJlIGxvbmdlciB0aGFuIGB1bmlvbiBzbWNfbGxjX21zZ2AuIEl0IGludHJvZHVjZXMgYGJvZHlfbGVuYCBhbmQgYSBmbGV4aWJsZSBhcnJheSBgYm9keVtdYCBpbiBgc3RydWN0IHNtY19sbGNfcWVudHJ5YCB0byBzdG9yZSB0aGUgZXh0cmEgYnl0ZXMgb2YgVjIgbWVzc2FnZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgU01DIChTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zKSBzdWJzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIEFGX1NNQyBzb2NrZXRzIGFuZCBzb2Z0d2FyZSBSRE1BL0lTTSBkZXZpY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNNQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNtY19sbGNfY2xpX2FkZF9saW5rXCIsXG4gICAgXCJzbWNfbGxjX3Nydl9hZGRfbGlua1wiLFxuICAgIFwic21jX2xsY19hZGRfbGlua19sb2NhbFwiLFxuICAgIFwic21jX2xsY19zcnZfZGVsZXRlX2xpbmtfbG9jYWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBob3cgU01DIExMQyBtZXNzYWdlcyBhcmUgZW5xdWV1ZWQgYW5kIHByb2Nlc3NlZCwgc3BlY2lmaWNhbGx5IGZvciBTTUNfVjIgd2hlcmUgbWVzc2FnZXMgY2FuIGJlIGxvbmdlciB0aGFuIGB1bmlvbiBzbWNfbGxjX21zZ2AuIEl0IGludHJvZHVjZXMgYGJvZHlfbGVuYCBhbmQgYSBmbGV4aWJsZSBhcnJheSBgYm9keVtdYCBpbiBgc3RydWN0IHNtY19sbGNfcWVudHJ5YCB0byBzdG9yZSB0aGUgZXh0cmEgYnl0ZXMgb2YgVjIgbWVzc2FnZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgU01DIChTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zKSBzdWJzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIEFGX1NNQyBzb2NrZXRzIGFuZCBzb2Z0d2FyZSBSRE1BL0lTTSBkZXZpY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowcmm2f[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-01 14:27:06 +0000 UTC FinishedAt: 2026-08-01 15:11:47 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC" ], "series_id": "f9576b5f-cb14-4e32-996e-b17bd96f07a5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "smc_llc_cli_add_link", "smc_llc_srv_add_link", "smc_llc_add_link_local", "smc_llc_srv_delete_link_local" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAxIDE1OjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtY19sbGNfY2xpX2FkZF9saW5rJiMzNDssCiAgICAmIzM0O3NtY19sbGNfc3J2X2FkZF9saW5rJiMzNDssCiAgICAmIzM0O3NtY19sbGNfYWRkX2xpbmtfbG9jYWwmIzM0OywKICAgICYjMzQ7c21jX2xsY19zcnZfZGVsZXRlX2xpbmtfbG9jYWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgaG93IFNNQyBMTEMgbWVzc2FnZXMgYXJlIGVucXVldWVkIGFuZCBwcm9jZXNzZWQsIHNwZWNpZmljYWxseSBmb3IgU01DX1YyIHdoZXJlIG1lc3NhZ2VzIGNhbiBiZSBsb25nZXIgdGhhbiBgdW5pb24gc21jX2xsY19tc2dgLiBJdCBpbnRyb2R1Y2VzIGBib2R5X2xlbmAgYW5kIGEgZmxleGlibGUgYXJyYXkgYGJvZHlbXWAgaW4gYHN0cnVjdCBzbWNfbGxjX3FlbnRyeWAgdG8gc3RvcmUgdGhlIGV4dHJhIGJ5dGVzIG9mIFYyIG1lc3NhZ2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFNNQyAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykgc3Vic3lzdGVtLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBBRl9TTUMgc29ja2V0cyBhbmQgc29mdHdhcmUgUkRNQS9JU00gZGV2aWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNTowNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDZjMzhmM2MzZDYwNGI5MzM4ZTFmMjdlZDY2MjkzNDQxYjgzNzUyNzFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDE1OjA1OjM4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2xsYy5jIGIvbmV0L3NtYy9zbWNfbGxjLmNcbmluZGV4IDk1NGIyZmYxODE1YzIuLjFiMTUzMTczZGQ1MTYgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19sbGMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfbGxjLmNcbkBAIC0xNTcsNiAmIzQzOzE1Nyw3IEBAIHN0cnVjdCBzbWNfbGxjX21zZ19jb25maXJtX3JrZXkge1x0LyogdHlwZSAweDA2ICovXG4gfTtcbiBcbiAjZGVmaW5lIFNNQ19MTENfREVMX1JLRVlfTUFYXHQ4XG4mIzQzOyNkZWZpbmUgU01DX0xMQ19ERUxfUktFWV9WMl9JTkxJTkVcdDlcbiAjZGVmaW5lIFNNQ19MTENfRkxBR19SS0VZX1JFVFJZXHQweDEwXG4gI2RlZmluZSBTTUNfTExDX0ZMQUdfUktFWV9ORUdcdDB4MjBcbiBcbkBAIC0xNzcsNiAmIzQzOzE3OCwxNSBAQCBzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXlfdjIge1x0LyogdHlwZSAweDI5ICovXG4gXHRfX2JlMzIgcmtleVtdO1xuIH07XG4gXG4mIzQzOy8qIHRoZSBsZWFkaW5nIHJrZXlzIG9mIGEgREVMRVRFX1JLRVlfVjIgZml0IGludG8gdW5pb24gc21jX2xsY19tc2cgKi9cbiYjNDM7c3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyX2lubGluZSB7XHQvKiB0eXBlIDB4MjkgKi9cbiYjNDM7XHRzdHJ1Y3Qgc21jX2xsY19oZHIgaGQ7XG4mIzQzO1x0dTggbnVtX3JrZXlzO1xuJiM0MztcdHU4IG51bV9pbnZhbF9ya2V5cztcbiYjNDM7XHR1OCByZXNlcnZlZFsyXTtcbiYjNDM7XHRfX2JlMzIgcmtleVtTTUNfTExDX0RFTF9SS0VZX1YyX0lOTElORV07XG4mIzQzO307XG4mIzQzO1xuIHVuaW9uIHNtY19sbGNfbXNnIHtcbiBcdHN0cnVjdCBzbWNfbGxjX21zZ19jb25maXJtX2xpbmsgY29uZmlybV9saW5rO1xuIFx0c3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rIGFkZF9saW5rO1xuQEAgLTE4Niw2ICYjNDM7MTk2LDcgQEAgdW5pb24gc21jX2xsY19tc2cge1xuIFxuIFx0c3RydWN0IHNtY19sbGNfbXNnX2NvbmZpcm1fcmtleSBjb25maXJtX3JrZXk7XG4gXHRzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXkgZGVsZXRlX3JrZXk7XG4mIzQzO1x0c3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyX2lubGluZSBkZWxldGVfcmtleV92MjtcbiBcbiBcdHN0cnVjdCBzbWNfbGxjX21zZ190ZXN0X2xpbmsgdGVzdF9saW5rO1xuIFx0c3RydWN0IHtcbkBAIC0xOTQsMTUgJiM0MzsyMDUsMjMgQEAgdW5pb24gc21jX2xsY19tc2cge1xuIFx0fSByYXc7XG4gfTtcbiBcbiYjNDM7c3RhdGljX2Fzc2VydChTTUNfTExDX0RFTF9SS0VZX1YyX0lOTElORSA9PVxuJiM0MztcdCAgICAgIChzaXplb2YodW5pb24gc21jX2xsY19tc2cpIC1cbiYjNDM7XHQgICAgICAgb2Zmc2V0b2Yoc3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyLCBya2V5KSkgL1xuJiM0MztcdCAgICAgIHNpemVvZihfX2JlMzIpKTtcbiYjNDM7XG4gI2RlZmluZSBTTUNfTExDX0ZMQUdfUkVTUFx0XHQweDgwXG4gXG4gc3RydWN0IHNtY19sbGNfcWVudHJ5IHtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbiBcdHN0cnVjdCBzbWNfbGluayAqbGluaztcbiYjNDM7XHR1MTYgYm9keV9sZW47XG4gXHR1bmlvbiBzbWNfbGxjX21zZyBtc2c7XG4mIzQzO1x0dTggYm9keVtdIF9fY291bnRlZF9ieShib2R5X2xlbik7XG4gfTtcbiBcbi1zdGF0aWMgdm9pZCBzbWNfbGxjX2VucXVldWUoc3RydWN0IHNtY19saW5rICpsaW5rLCB1bmlvbiBzbWNfbGxjX21zZyAqbGxjKTtcbiYjNDM7c3RhdGljIHZvaWQgc21jX2xsY19lbnF1ZXVlKHN0cnVjdCBzbWNfbGluayAqbGluaywgdW5pb24gc21jX2xsY19tc2cgKmxsYyxcbiYjNDM7XHRcdFx0ICAgIHUzMiBieXRlX2xlbik7XG4gXG4gc3RydWN0IHNtY19sbGNfcWVudHJ5ICpzbWNfbGxjX2Zsb3dfcWVudHJ5X2NscihzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93KVxuIHtcbkBAIC05OTgsMTUgJiM0MzsxMDE3LDIwIEBAIHN0YXRpYyBpbnQgc21jX2xsY19jbGlfY29uZl9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcbiBzdGF0aWMgdm9pZCBzbWNfbGxjX3NhdmVfYWRkX2xpbmtfcmtleXMoc3RydWN0IHNtY19saW5rICpsaW5rLFxuIFx0XHRcdFx0XHRzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3LFxuLVx0XHRcdFx0XHR1OCAqbGxjX21zZylcbiYjNDM7XHRcdFx0XHRcdHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxuIHtcbiYjNDM7XHRjb25zdCB1MzIgcnRfb2ZmID0gb2Zmc2V0b2Yoc3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rX3YyX2V4dCwgcnQpO1xuIFx0c3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rX3YyX2V4dCAqZXh0O1xuIFx0c3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IgPSBsaW5rLVx1MDAzZWxncjtcbiBcdGludCBtYXgsIGk7XG4gXG4tXHRleHQgPSAoc3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rX3YyX2V4dCAqKShsbGNfbXNnICYjNDM7XG4tXHRcdFx0XHRcdFx0ICAgICBTTUNfV1JfVFhfU0laRSk7XG4mIzQzO1x0LyogdGhlIHJrZXkgY291bnQgaXRzZWxmIGlzIG9ubHkgdGhlcmUgaWYgZW5vdWdoIGJ5dGVzIGFycml2ZWQgKi9cbiYjNDM7XHRpZiAocWVudHJ5LVx1MDAzZWJvZHlfbGVuIFx1MDAzYyBydF9vZmYpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0ZXh0ID0gKHN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua192Ml9leHQgKilxZW50cnktXHUwMDNlYm9keTtcbiBcdG1heCA9IG1pbl90KHU4LCBleHQtXHUwMDNlbnVtX3JrZXlzLCBTTUNfTExDX1JLRVlTX1BFUl9NU0dfVjIpO1xuJiM0MztcdG1heCA9IG1pbl90KHUzMiwgbWF4LCAocWVudHJ5LVx1MDAzZWJvZHlfbGVuIC0gcnRfb2ZmKSAvXG4mIzQzO1x0XHRcdCAgICAgIHNpemVvZihleHQtXHUwMDNlcnRbMF0pKTtcbiBcdGRvd25fd3JpdGUoXHUwMDI2bGdyLVx1MDAzZXJtYnNfbG9jayk7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBtYXg7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdHNtY19ydG9rZW5fc2V0KGxnciwgbGluay1cdTAwM2VsaW5rX2lkeCwgbGlua19uZXctXHUwMDNlbGlua19pZHgsXG5AQCAtMTA5OSw5ICYjNDM7MTEyMyw3IEBAIGludCBzbWNfbGxjX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxuIFx0aWYgKHJjKVxuIFx0XHRnb3RvIG91dF9jbGVhcl9sbms7XG4gXHRpZiAobGdyLVx1MDAzZXNtY192ZXJzaW9uID09IFNNQ19WMikge1xuLVx0XHR1OCAqbGxjX21zZyA9IHNtY19saW5rX3NoYXJlZF92Ml9yeGJ1ZihsaW5rKSA/XG4tXHRcdFx0KHU4ICopbGdyLVx1MDAzZXdyX3J4X2J1Zl92MiA6ICh1OCAqKWxsYztcbi1cdFx0c21jX2xsY19zYXZlX2FkZF9saW5rX3JrZXlzKGxpbmssIGxua19uZXcsIGxsY19tc2cpO1xuJiM0MztcdFx0c21jX2xsY19zYXZlX2FkZF9saW5rX3JrZXlzKGxpbmssIGxua19uZXcsIHFlbnRyeSk7XG4gXHR9IGVsc2Uge1xuIFx0XHRyYyA9IHNtY19sbGNfY2xpX3JrZXlfZXhjaGFuZ2UobGluaywgbG5rX25ldyk7XG4gXHRcdGlmIChyYykge1xuQEAgLTE0ODEsNyAmIzQzOzE1MDMsNyBAQCBpbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxuIFx0fVxuIFx0YWRkX2xsYyA9IFx1MDAyNnFlbnRyeS1cdTAwM2Vtc2cuYWRkX2xpbms7XG4gXHRpZiAoYWRkX2xsYy1cdTAwM2VoZC5mbGFncyBcdTAwMjYgU01DX0xMQ19GTEFHX0FERF9MTktfUkVKKSB7XG4tXHRcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xuJiM0MztcdFx0c21jX2xsY19mbG93X3FlbnRyeV9jbHIoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG4gXHRcdHJjID0gLUVOT0xJTks7XG4gXHRcdGdvdG8gb3V0X2VycjtcbiBcdH1cbkBAIC0xNDkyLDcgJiM0MzsxNTE0LDggQEAgaW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcdFx0bGdyX25ld190ID0gU01DX0xHUl9BU1lNTUVUUklDX1BFRVI7XG4gXHR9XG4gXHRzbWNfbGxjX3NhdmVfYWRkX2xpbmtfaW5mbyhsaW5rX25ldywgYWRkX2xsYyk7XG4tXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbiYjNDM7XHQvKiBhZGRfbGxjIHN0aWxsIHBvaW50cyBpbnRvIHFlbnRyeSwgc28gb25seSBkZXRhY2ggaXQgaGVyZSAqL1xuJiM0MztcdHNtY19sbGNfZmxvd19xZW50cnlfY2xyKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xuIFxuIFx0cmMgPSBzbWNfaWJfcmVhZHlfbGluayhsaW5rX25ldyk7XG4gXHRpZiAocmMpXG5AQCAtMTUwMSw5ICYjNDM7MTUyNCw3IEBAIGludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4gXHRpZiAocmMpXG4gXHRcdGdvdG8gb3V0X2VycjtcbiBcdGlmIChsZ3ItXHUwMDNlc21jX3ZlcnNpb24gPT0gU01DX1YyKSB7XG4tXHRcdHU4ICpsbGNfbXNnID0gc21jX2xpbmtfc2hhcmVkX3YyX3J4YnVmKGxpbmspID9cbi1cdFx0XHQodTggKilsZ3ItXHUwMDNld3JfcnhfYnVmX3YyIDogKHU4ICopYWRkX2xsYztcbi1cdFx0c21jX2xsY19zYXZlX2FkZF9saW5rX3JrZXlzKGxpbmssIGxpbmtfbmV3LCBsbGNfbXNnKTtcbiYjNDM7XHRcdHNtY19sbGNfc2F2ZV9hZGRfbGlua19ya2V5cyhsaW5rLCBsaW5rX25ldywgcWVudHJ5KTtcbiBcdH0gZWxzZSB7XG4gXHRcdHJjID0gc21jX2xsY19zcnZfcmtleV9leGNoYW5nZShsaW5rLCBsaW5rX25ldyk7XG4gXHRcdGlmIChyYylcbkBAIC0xNTEyLDYgJiM0MzsxNTMzLDcgQEAgaW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcdHJjID0gc21jX2xsY19zcnZfY29uZl9saW5rKGxpbmssIGxpbmtfbmV3LCBsZ3JfbmV3X3QpO1xuIFx0aWYgKHJjKVxuIFx0XHRnb3RvIG91dF9lcnI7XG4mIzQzO1x0a2ZyZWUocWVudHJ5KTtcbiBcdGtmcmVlKGluaSk7XG4gXHRyZXR1cm4gMDtcbiBvdXRfZXJyOlxuQEAgLTE1MjAsNiAmIzQzOzE1NDIsNyBAQCBpbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxuIFx0XHRzbWNyX2xpbmtfY2xlYXIobGlua19uZXcsIGZhbHNlKTtcbiBcdH1cbiBvdXQ6XG4mIzQzO1x0a2ZyZWUocWVudHJ5KTtcbiBcdGtmcmVlKGluaSk7XG4gXHRpZiAoc2VuZF9yZXFfYWRkX2xpbmtfcmVzcClcbiBcdFx0c21jX2xsY19zZW5kX3JlcV9hZGRfbGlua19yZXNwb25zZShyZXFfcWVudHJ5KTtcbkBAIC0xNTUyLDcgJiM0MzsxNTc1LDggQEAgdm9pZCBzbWNfbGxjX2FkZF9saW5rX2xvY2FsKHN0cnVjdCBzbWNfbGluayAqbGluaylcbiBcdGFkZF9sbGMuaGQuY29tbW9uLmxsY190eXBlID0gU01DX0xMQ19BRERfTElOSztcbiBcdHNtY19sbGNfaW5pdF9tc2dfaGRyKFx1MDAyNmFkZF9sbGMuaGQsIGxpbmstXHUwMDNlbGdyLCBzaXplb2YoYWRkX2xsYykpO1xuIFx0Lyogbm8gZGV2IGFuZCBwb3J0IG5lZWRlZCAqL1xuLVx0c21jX2xsY19lbnF1ZXVlKGxpbmssICh1bmlvbiBzbWNfbGxjX21zZyAqKVx1MDAyNmFkZF9sbGMpO1xuJiM0MztcdHNtY19sbGNfZW5xdWV1ZShsaW5rLCAodW5pb24gc21jX2xsY19tc2cgKilcdTAwMjZhZGRfbGxjLFxuJiM0MztcdFx0XHRzaXplb2YodW5pb24gc21jX2xsY19tc2cpKTtcbiB9XG4gXG4gLyogd29ya2VyIHRvIHByb2Nlc3MgYW4gYWRkIGxpbmsgbWVzc2FnZSAqL1xuQEAgLTE1ODgsNyAmIzQzOzE2MTIsOCBAQCB2b2lkIHNtY19sbGNfc3J2X2RlbGV0ZV9saW5rX2xvY2FsKHN0cnVjdCBzbWNfbGluayAqbGluaywgdTggZGVsX2xpbmtfaWQpXG4gXHRkZWxfbGxjLmxpbmtfbnVtID0gZGVsX2xpbmtfaWQ7XG4gXHRkZWxfbGxjLnJlYXNvbiA9IGh0b25sKFNNQ19MTENfREVMX0xPU1RfUEFUSCk7XG4gXHRkZWxfbGxjLmhkLmZsYWdzIHw9IFNNQ19MTENfRkxBR19ERUxfTElOS19PUkRFUkxZO1xuLVx0c21jX2xsY19lbnF1ZXVlKGxpbmssICh1bmlvbiBzbWNfbGxjX21zZyAqKVx1MDAyNmRlbF9sbGMpO1xuJiM0MztcdHNtY19sbGNfZW5xdWV1ZShsaW5rLCAodW5pb24gc21jX2xsY19tc2cgKilcdTAwMjZkZWxfbGxjLFxuJiM0MztcdFx0XHRzaXplb2YodW5pb24gc21jX2xsY19tc2cpKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX2NsaV9kZWxldGVfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbkBAIC0xODEwLDE5ICYjNDM7MTgzNSwyOCBAQCBzdGF0aWMgdm9pZCBzbWNfbGxjX3JtdF9kZWxldGVfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbiBcdGxpbmsgPSBxZW50cnktXHUwMDNlbGluaztcbiBcbiBcdGlmIChsZ3ItXHUwMDNlc21jX3ZlcnNpb24gPT0gU01DX1YyKSB7XG4tXHRcdHN0cnVjdCBzbWNfbGxjX21zZ19kZWxldGVfcmtleV92MiAqbGxjdjI7XG4mIzQzO1x0XHRzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXlfdjJfaW5saW5lICpsbGN2MjtcbiBcbi1cdFx0aWYgKHNtY19saW5rX3NoYXJlZF92Ml9yeGJ1ZihsaW5rKSkge1xuLVx0XHRcdG1lbWNweShsZ3ItXHUwMDNld3JfcnhfYnVmX3YyLCBsbGMsIHNpemVvZigqbGxjKSk7XG4tXHRcdFx0bGxjdjIgPSAoc3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyICopbGdyLVx1MDAzZXdyX3J4X2J1Zl92Mjtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHRsbGN2MiA9IChzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXlfdjIgKilsbGM7XG4tXHRcdH1cbiYjNDM7XHRcdC8qIFRoZSBsZWFkaW5nIFNNQ19MTENfREVMX1JLRVlfVjJfSU5MSU5FIHJrZXlzIGFyZSBkZWNsYXJlZCBpblxuJiM0MztcdFx0ICogdGhlIG1lc3NhZ2UgaXRzZWxmLCBhbnkgZnVydGhlciBvbmVzIHdlcmUgcmVjZWl2ZWQgaW50b1xuJiM0MztcdFx0ICogcWVudHJ5LVx1MDAzZWJvZHkuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGxsY3YyID0gXHUwMDI2cWVudHJ5LVx1MDAzZW1zZy5kZWxldGVfcmtleV92MjtcbiBcdFx0bGxjdjItXHUwMDNlbnVtX2ludmFsX3JrZXlzID0gMDtcbiBcbiBcdFx0bWF4ID0gbWluX3QodTgsIGxsY3YyLVx1MDAzZW51bV9ya2V5cywgU01DX0xMQ19SS0VZU19QRVJfTVNHX1YyKTtcbiYjNDM7XHRcdG1heCA9IG1pbl90KHUzMiwgbWF4LCBTTUNfTExDX0RFTF9SS0VZX1YyX0lOTElORSAmIzQzO1xuJiM0MztcdFx0XHRcdCAgICAgIHFlbnRyeS1cdTAwM2Vib2R5X2xlbiAvIHNpemVvZihfX2JlMzIpKTtcbiBcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbWF4OyBpJiM0MzsmIzQzOykge1xuLVx0XHRcdGlmIChzbWNfcnRva2VuX2RlbGV0ZShsaW5rLCBsbGN2Mi1cdTAwM2Vya2V5W2ldKSlcbiYjNDM7XHRcdFx0X19iZTMyIHJrZXk7XG4mIzQzO1xuJiM0MztcdFx0XHRpZiAoaSBcdTAwM2MgU01DX0xMQ19ERUxfUktFWV9WMl9JTkxJTkUpXG4mIzQzO1x0XHRcdFx0cmtleSA9IGxsY3YyLVx1MDAzZXJrZXlbaV07XG4mIzQzO1x0XHRcdGVsc2VcbiYjNDM7XHRcdFx0XHRtZW1jcHkoXHUwMDI2cmtleSwgcWVudHJ5LVx1MDAzZWJvZHkgJiM0MztcbiYjNDM7XHRcdFx0XHRcdCAgICAgIChpIC0gU01DX0xMQ19ERUxfUktFWV9WMl9JTkxJTkUpICpcbiYjNDM7XHRcdFx0XHRcdCAgICAgIHNpemVvZihya2V5KSwgc2l6ZW9mKHJrZXkpKTtcbiYjNDM7XHRcdFx0aWYgKHNtY19ydG9rZW5fZGVsZXRlKGxpbmssIHJrZXkpKVxuIFx0XHRcdFx0bGxjdjItXHUwMDNlbnVtX2ludmFsX3JrZXlzJiM0MzsmIzQzOztcbiBcdFx0fVxuIFx0XHRtZW1zZXQoXHUwMDI2bGxjLVx1MDAzZXJrZXlbMF0sIDAsIHNpemVvZihsbGMtXHUwMDNlcmtleSkpO1xuQEAgLTIwNjMsMTggJiM0MzsyMDk3LDM1IEBAIHN0YXRpYyB2b2lkIHNtY19sbGNfcnhfcmVzcG9uc2Uoc3RydWN0IHNtY19saW5rICpsaW5rLFxuIFx0d2FrZV91cChcdTAwMjZsaW5rLVx1MDAzZWxnci1cdTAwM2VsbGNfbXNnX3dhaXRlcik7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHNtY19sbGNfZW5xdWV1ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHVuaW9uIHNtY19sbGNfbXNnICpsbGMpXG4mIzQzO3N0YXRpYyB2b2lkIHNtY19sbGNfZW5xdWV1ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHVuaW9uIHNtY19sbGNfbXNnICpsbGMsXG4mIzQzO1x0XHRcdCAgICB1MzIgYnl0ZV9sZW4pXG4ge1xuIFx0c3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IgPSBsaW5rLVx1MDAzZWxncjtcbiBcdHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5O1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcbiYjNDM7XHR1MTYgYm9keV9sZW4gPSAwO1xuIFxuLVx0cWVudHJ5ID0ga21hbGxvY19vYmooKnFlbnRyeSwgR0ZQX0FUT01JQyk7XG4mIzQzO1x0LyogVjIgbWVzc2FnZXMgY2FuIGJlIGxvbmdlciB0aGFuIHRoZSBpbmxpbmUgdW5pb24gc21jX2xsY19tc2cuIENhcnJ5XG4mIzQzO1x0ICogdGhlIHJlbWFpbmRlciBpbiB0aGUgcWVudHJ5IGl0c2VsZiwgc28gdGhhdCBpdHMgbGlmZXRpbWUgYW5kIGl0c1xuJiM0MztcdCAqIGxlbmd0aCBtYXRjaCB0aGUgbWVzc2FnZSB0aGUgcGVlciBhY3R1YWxseSBzZW50LlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChsZ3ItXHUwMDNlc21jX3ZlcnNpb24gPT0gU01DX1YyIFx1MDAyNlx1MDAyNiBieXRlX2xlbiBcdTAwM2UgU01DX1dSX1RYX1NJWkUpXG4mIzQzO1x0XHRib2R5X2xlbiA9IG1pbl90KHUzMiwgYnl0ZV9sZW4sIFNNQ19XUl9CVUZfVjJfU0laRSkgLVxuJiM0MztcdFx0XHQgICBTTUNfV1JfVFhfU0laRTtcbiYjNDM7XG4mIzQzO1x0cWVudHJ5ID0ga21hbGxvY19mbGV4KCpxZW50cnksIGJvZHksIGJvZHlfbGVuLCBHRlBfQVRPTUlDKTtcbiBcdGlmICghcWVudHJ5KVxuIFx0XHRyZXR1cm47XG4mIzQzO1x0cWVudHJ5LVx1MDAzZWJvZHlfbGVuID0gYm9keV9sZW47XG4gXHRxZW50cnktXHUwMDNlbGluayA9IGxpbms7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZxZW50cnktXHUwMDNlbGlzdCk7XG4gXHRtZW1jcHkoXHUwMDI2cWVudHJ5LVx1MDAzZW1zZywgbGxjLCBzaXplb2YodW5pb24gc21jX2xsY19tc2cpKTtcbiYjNDM7XHRpZiAoYm9keV9sZW4pIHtcbiYjNDM7XHRcdHU4ICpzcmMgPSBzbWNfbGlua19zaGFyZWRfdjJfcnhidWYobGluaykgP1xuJiM0MztcdFx0XHQodTggKilsZ3ItXHUwMDNld3JfcnhfYnVmX3YyIDogKHU4ICopbGxjO1xuJiM0MztcbiYjNDM7XHRcdG1lbWNweShxZW50cnktXHUwMDNlYm9keSwgc3JjICYjNDM7IFNNQ19XUl9UWF9TSVpFLCBib2R5X2xlbik7XG4mIzQzO1x0fVxuIFxuIFx0LyogcHJvY2VzcyByZXNwb25zZXMgaW1tZWRpYXRlbHkgKi9cbiBcdGlmICgobGxjLVx1MDAzZXJhdy5oZHIuZmxhZ3MgXHUwMDI2IFNNQ19MTENfRkxBR19SRVNQKSBcdTAwMjZcdTAwMjZcbkBAIC0yMTA2LDcgJiM0MzsyMTU3LDcgQEAgc3RhdGljIHZvaWQgc21jX2xsY19yeF9oYW5kbGVyKHN0cnVjdCBpYl93YyAqd2MsIHZvaWQgKmJ1ZilcbiBcdFx0XHRyZXR1cm47IC8qIGludmFsaWQgbWVzc2FnZSAqL1xuIFx0fVxuIFxuLVx0c21jX2xsY19lbnF1ZXVlKGxpbmssIGxsYyk7XG4mIzQzO1x0c21jX2xsY19lbnF1ZXVlKGxpbmssIGxsYywgd2MtXHUwMDNlYnl0ZV9sZW4pO1xuIH1cbiBcbiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogd29ya2VyLCB1dGlscyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTU6MDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtY19sbGNfY2xpX2FkZF9saW5rJiMzNDssCiAgICAmIzM0O3NtY19sbGNfc3J2X2FkZF9saW5rJiMzNDssCiAgICAmIzM0O3NtY19sbGNfYWRkX2xpbmtfbG9jYWwmIzM0OywKICAgICYjMzQ7c21jX2xsY19zcnZfZGVsZXRlX2xpbmtfbG9jYWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgaG93IFNNQyBMTEMgbWVzc2FnZXMgYXJlIGVucXVldWVkIGFuZCBwcm9jZXNzZWQsIHNwZWNpZmljYWxseSBmb3IgU01DX1YyIHdoZXJlIG1lc3NhZ2VzIGNhbiBiZSBsb25nZXIgdGhhbiBgdW5pb24gc21jX2xsY19tc2dgLiBJdCBpbnRyb2R1Y2VzIGBib2R5X2xlbmAgYW5kIGEgZmxleGlibGUgYXJyYXkgYGJvZHlbXWAgaW4gYHN0cnVjdCBzbWNfbGxjX3FlbnRyeWAgdG8gc3RvcmUgdGhlIGV4dHJhIGJ5dGVzIG9mIFYyIG1lc3NhZ2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFNNQyAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykgc3Vic3lzdGVtLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBBRl9TTUMgc29ja2V0cyBhbmQgc29mdHdhcmUgUkRNQS9JU00gZGV2aWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDZjMzhmM2MzZDYwNGI5MzM4ZTFmMjdlZDY2MjkzNDQxYjgzNzUyNzEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxIDE1OjA1OjM4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfbGxjLmMgYi9uZXQvc21jL3NtY19sbGMuYwppbmRleCA5NTRiMmZmMTgxNWMyLi4xYjE1MzE3M2RkNTE2IDEwMDY0NAotLS0gYS9uZXQvc21jL3NtY19sbGMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19sbGMuYwpAQCAtMTU3LDYgJiM0MzsxNTcsNyBAQCBzdHJ1Y3Qgc21jX2xsY19tc2dfY29uZmlybV9ya2V5IHsJLyogdHlwZSAweDA2ICovCiB9OwogCiAjZGVmaW5lIFNNQ19MTENfREVMX1JLRVlfTUFYCTgKJiM0MzsjZGVmaW5lIFNNQ19MTENfREVMX1JLRVlfVjJfSU5MSU5FCTkKICNkZWZpbmUgU01DX0xMQ19GTEFHX1JLRVlfUkVUUlkJMHgxMAogI2RlZmluZSBTTUNfTExDX0ZMQUdfUktFWV9ORUcJMHgyMAogCkBAIC0xNzcsNiAmIzQzOzE3OCwxNSBAQCBzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXlfdjIgewkvKiB0eXBlIDB4MjkgKi8KIAlfX2JlMzIgcmtleVtdOwogfTsKIAomIzQzOy8qIHRoZSBsZWFkaW5nIHJrZXlzIG9mIGEgREVMRVRFX1JLRVlfVjIgZml0IGludG8gdW5pb24gc21jX2xsY19tc2cgKi8KJiM0MztzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXlfdjJfaW5saW5lIHsJLyogdHlwZSAweDI5ICovCiYjNDM7CXN0cnVjdCBzbWNfbGxjX2hkciBoZDsKJiM0MzsJdTggbnVtX3JrZXlzOwomIzQzOwl1OCBudW1faW52YWxfcmtleXM7CiYjNDM7CXU4IHJlc2VydmVkWzJdOwomIzQzOwlfX2JlMzIgcmtleVtTTUNfTExDX0RFTF9SS0VZX1YyX0lOTElORV07CiYjNDM7fTsKJiM0MzsKIHVuaW9uIHNtY19sbGNfbXNnIHsKIAlzdHJ1Y3Qgc21jX2xsY19tc2dfY29uZmlybV9saW5rIGNvbmZpcm1fbGluazsKIAlzdHJ1Y3Qgc21jX2xsY19tc2dfYWRkX2xpbmsgYWRkX2xpbms7CkBAIC0xODYsNiAmIzQzOzE5Niw3IEBAIHVuaW9uIHNtY19sbGNfbXNnIHsKIAogCXN0cnVjdCBzbWNfbGxjX21zZ19jb25maXJtX3JrZXkgY29uZmlybV9ya2V5OwogCXN0cnVjdCBzbWNfbGxjX21zZ19kZWxldGVfcmtleSBkZWxldGVfcmtleTsKJiM0MzsJc3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyX2lubGluZSBkZWxldGVfcmtleV92MjsKIAogCXN0cnVjdCBzbWNfbGxjX21zZ190ZXN0X2xpbmsgdGVzdF9saW5rOwogCXN0cnVjdCB7CkBAIC0xOTQsMTUgJiM0MzsyMDUsMjMgQEAgdW5pb24gc21jX2xsY19tc2cgewogCX0gcmF3OwogfTsKIAomIzQzO3N0YXRpY19hc3NlcnQoU01DX0xMQ19ERUxfUktFWV9WMl9JTkxJTkUgPT0KJiM0MzsJICAgICAgKHNpemVvZih1bmlvbiBzbWNfbGxjX21zZykgLQomIzQzOwkgICAgICAgb2Zmc2V0b2Yoc3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyLCBya2V5KSkgLwomIzQzOwkgICAgICBzaXplb2YoX19iZTMyKSk7CiYjNDM7CiAjZGVmaW5lIFNNQ19MTENfRkxBR19SRVNQCQkweDgwCiAKIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSB7CiAJc3RydWN0IGxpc3RfaGVhZCBsaXN0OwogCXN0cnVjdCBzbWNfbGluayAqbGluazsKJiM0MzsJdTE2IGJvZHlfbGVuOwogCXVuaW9uIHNtY19sbGNfbXNnIG1zZzsKJiM0MzsJdTggYm9keVtdIF9fY291bnRlZF9ieShib2R5X2xlbik7CiB9OwogCi1zdGF0aWMgdm9pZCBzbWNfbGxjX2VucXVldWUoc3RydWN0IHNtY19saW5rICpsaW5rLCB1bmlvbiBzbWNfbGxjX21zZyAqbGxjKTsKJiM0MztzdGF0aWMgdm9pZCBzbWNfbGxjX2VucXVldWUoc3RydWN0IHNtY19saW5rICpsaW5rLCB1bmlvbiBzbWNfbGxjX21zZyAqbGxjLAomIzQzOwkJCSAgICB1MzIgYnl0ZV9sZW4pOwogCiBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnNtY19sbGNfZmxvd19xZW50cnlfY2xyKHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpCiB7CkBAIC05OTgsMTUgJiM0MzsxMDE3LDIwIEBAIHN0YXRpYyBpbnQgc21jX2xsY19jbGlfY29uZl9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywKIAogc3RhdGljIHZvaWQgc21jX2xsY19zYXZlX2FkZF9saW5rX3JrZXlzKHN0cnVjdCBzbWNfbGluayAqbGluaywKIAkJCQkJc3RydWN0IHNtY19saW5rICpsaW5rX25ldywKLQkJCQkJdTggKmxsY19tc2cpCiYjNDM7CQkJCQlzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSkKIHsKJiM0MzsJY29uc3QgdTMyIHJ0X29mZiA9IG9mZnNldG9mKHN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua192Ml9leHQsIHJ0KTsKIAlzdHJ1Y3Qgc21jX2xsY19tc2dfYWRkX2xpbmtfdjJfZXh0ICpleHQ7CiAJc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IgPSBsaW5rLSZndDtsZ3I7CiAJaW50IG1heCwgaTsKIAotCWV4dCA9IChzdHJ1Y3Qgc21jX2xsY19tc2dfYWRkX2xpbmtfdjJfZXh0ICopKGxsY19tc2cgJiM0MzsKLQkJCQkJCSAgICAgU01DX1dSX1RYX1NJWkUpOwomIzQzOwkvKiB0aGUgcmtleSBjb3VudCBpdHNlbGYgaXMgb25seSB0aGVyZSBpZiBlbm91Z2ggYnl0ZXMgYXJyaXZlZCAqLwomIzQzOwlpZiAocWVudHJ5LSZndDtib2R5X2xlbiAmbHQ7IHJ0X29mZikKJiM0MzsJCXJldHVybjsKJiM0MzsJZXh0ID0gKHN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua192Ml9leHQgKilxZW50cnktJmd0O2JvZHk7CiAJbWF4ID0gbWluX3QodTgsIGV4dC0mZ3Q7bnVtX3JrZXlzLCBTTUNfTExDX1JLRVlTX1BFUl9NU0dfVjIpOwomIzQzOwltYXggPSBtaW5fdCh1MzIsIG1heCwgKHFlbnRyeS0mZ3Q7Ym9keV9sZW4gLSBydF9vZmYpIC8KJiM0MzsJCQkgICAgICBzaXplb2YoZXh0LSZndDtydFswXSkpOwogCWRvd25fd3JpdGUoJmFtcDtsZ3ItJmd0O3JtYnNfbG9jayk7CiAJZm9yIChpID0gMDsgaSAmbHQ7IG1heDsgaSYjNDM7JiM0MzspIHsKIAkJc21jX3J0b2tlbl9zZXQobGdyLCBsaW5rLSZndDtsaW5rX2lkeCwgbGlua19uZXctJmd0O2xpbmtfaWR4LApAQCAtMTA5OSw5ICYjNDM7MTEyMyw3IEBAIGludCBzbWNfbGxjX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KQogCWlmIChyYykKIAkJZ290byBvdXRfY2xlYXJfbG5rOwogCWlmIChsZ3ItJmd0O3NtY192ZXJzaW9uID09IFNNQ19WMikgewotCQl1OCAqbGxjX21zZyA9IHNtY19saW5rX3NoYXJlZF92Ml9yeGJ1ZihsaW5rKSA/Ci0JCQkodTggKilsZ3ItJmd0O3dyX3J4X2J1Zl92MiA6ICh1OCAqKWxsYzsKLQkJc21jX2xsY19zYXZlX2FkZF9saW5rX3JrZXlzKGxpbmssIGxua19uZXcsIGxsY19tc2cpOwomIzQzOwkJc21jX2xsY19zYXZlX2FkZF9saW5rX3JrZXlzKGxpbmssIGxua19uZXcsIHFlbnRyeSk7CiAJfSBlbHNlIHsKIAkJcmMgPSBzbWNfbGxjX2NsaV9ya2V5X2V4Y2hhbmdlKGxpbmssIGxua19uZXcpOwogCQlpZiAocmMpIHsKQEAgLTE0ODEsNyAmIzQzOzE1MDMsNyBAQCBpbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLAogCX0KIAlhZGRfbGxjID0gJmFtcDtxZW50cnktJmd0O21zZy5hZGRfbGluazsKIAlpZiAoYWRkX2xsYy0mZ3Q7aGQuZmxhZ3MgJmFtcDsgU01DX0xMQ19GTEFHX0FERF9MTktfUkVKKSB7Ci0JCXNtY19sbGNfZmxvd19xZW50cnlfZGVsKCZhbXA7bGdyLSZndDtsbGNfZmxvd19sY2wpOwomIzQzOwkJc21jX2xsY19mbG93X3FlbnRyeV9jbHIoJmFtcDtsZ3ItJmd0O2xsY19mbG93X2xjbCk7CiAJCXJjID0gLUVOT0xJTks7CiAJCWdvdG8gb3V0X2VycjsKIAl9CkBAIC0xNDkyLDcgJiM0MzsxNTE0LDggQEAgaW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywKIAkJbGdyX25ld190ID0gU01DX0xHUl9BU1lNTUVUUklDX1BFRVI7CiAJfQogCXNtY19sbGNfc2F2ZV9hZGRfbGlua19pbmZvKGxpbmtfbmV3LCBhZGRfbGxjKTsKLQlzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbCgmYW1wO2xnci0mZ3Q7bGxjX2Zsb3dfbGNsKTsKJiM0MzsJLyogYWRkX2xsYyBzdGlsbCBwb2ludHMgaW50byBxZW50cnksIHNvIG9ubHkgZGV0YWNoIGl0IGhlcmUgKi8KJiM0MzsJc21jX2xsY19mbG93X3FlbnRyeV9jbHIoJmFtcDtsZ3ItJmd0O2xsY19mbG93X2xjbCk7CiAKIAlyYyA9IHNtY19pYl9yZWFkeV9saW5rKGxpbmtfbmV3KTsKIAlpZiAocmMpCkBAIC0xNTAxLDkgJiM0MzsxNTI0LDcgQEAgaW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywKIAlpZiAocmMpCiAJCWdvdG8gb3V0X2VycjsKIAlpZiAobGdyLSZndDtzbWNfdmVyc2lvbiA9PSBTTUNfVjIpIHsKLQkJdTggKmxsY19tc2cgPSBzbWNfbGlua19zaGFyZWRfdjJfcnhidWYobGluaykgPwotCQkJKHU4ICopbGdyLSZndDt3cl9yeF9idWZfdjIgOiAodTggKilhZGRfbGxjOwotCQlzbWNfbGxjX3NhdmVfYWRkX2xpbmtfcmtleXMobGluaywgbGlua19uZXcsIGxsY19tc2cpOwomIzQzOwkJc21jX2xsY19zYXZlX2FkZF9saW5rX3JrZXlzKGxpbmssIGxpbmtfbmV3LCBxZW50cnkpOwogCX0gZWxzZSB7CiAJCXJjID0gc21jX2xsY19zcnZfcmtleV9leGNoYW5nZShsaW5rLCBsaW5rX25ldyk7CiAJCWlmIChyYykKQEAgLTE1MTIsNiAmIzQzOzE1MzMsNyBAQCBpbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLAogCXJjID0gc21jX2xsY19zcnZfY29uZl9saW5rKGxpbmssIGxpbmtfbmV3LCBsZ3JfbmV3X3QpOwogCWlmIChyYykKIAkJZ290byBvdXRfZXJyOwomIzQzOwlrZnJlZShxZW50cnkpOwogCWtmcmVlKGluaSk7CiAJcmV0dXJuIDA7CiBvdXRfZXJyOgpAQCAtMTUyMCw2ICYjNDM7MTU0Miw3IEBAIGludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssCiAJCXNtY3JfbGlua19jbGVhcihsaW5rX25ldywgZmFsc2UpOwogCX0KIG91dDoKJiM0MzsJa2ZyZWUocWVudHJ5KTsKIAlrZnJlZShpbmkpOwogCWlmIChzZW5kX3JlcV9hZGRfbGlua19yZXNwKQogCQlzbWNfbGxjX3NlbmRfcmVxX2FkZF9saW5rX3Jlc3BvbnNlKHJlcV9xZW50cnkpOwpAQCAtMTU1Miw3ICYjNDM7MTU3NSw4IEBAIHZvaWQgc21jX2xsY19hZGRfbGlua19sb2NhbChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspCiAJYWRkX2xsYy5oZC5jb21tb24ubGxjX3R5cGUgPSBTTUNfTExDX0FERF9MSU5LOwogCXNtY19sbGNfaW5pdF9tc2dfaGRyKCZhbXA7YWRkX2xsYy5oZCwgbGluay0mZ3Q7bGdyLCBzaXplb2YoYWRkX2xsYykpOwogCS8qIG5vIGRldiBhbmQgcG9ydCBuZWVkZWQgKi8KLQlzbWNfbGxjX2VucXVldWUobGluaywgKHVuaW9uIHNtY19sbGNfbXNnICopJmFtcDthZGRfbGxjKTsKJiM0MzsJc21jX2xsY19lbnF1ZXVlKGxpbmssICh1bmlvbiBzbWNfbGxjX21zZyAqKSZhbXA7YWRkX2xsYywKJiM0MzsJCQlzaXplb2YodW5pb24gc21jX2xsY19tc2cpKTsKIH0KIAogLyogd29ya2VyIHRvIHByb2Nlc3MgYW4gYWRkIGxpbmsgbWVzc2FnZSAqLwpAQCAtMTU4OCw3ICYjNDM7MTYxMiw4IEBAIHZvaWQgc21jX2xsY19zcnZfZGVsZXRlX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rLCB1OCBkZWxfbGlua19pZCkKIAlkZWxfbGxjLmxpbmtfbnVtID0gZGVsX2xpbmtfaWQ7CiAJZGVsX2xsYy5yZWFzb24gPSBodG9ubChTTUNfTExDX0RFTF9MT1NUX1BBVEgpOwogCWRlbF9sbGMuaGQuZmxhZ3MgfD0gU01DX0xMQ19GTEFHX0RFTF9MSU5LX09SREVSTFk7Ci0Jc21jX2xsY19lbnF1ZXVlKGxpbmssICh1bmlvbiBzbWNfbGxjX21zZyAqKSZhbXA7ZGVsX2xsYyk7CiYjNDM7CXNtY19sbGNfZW5xdWV1ZShsaW5rLCAodW5pb24gc21jX2xsY19tc2cgKikmYW1wO2RlbF9sbGMsCiYjNDM7CQkJc2l6ZW9mKHVuaW9uIHNtY19sbGNfbXNnKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19jbGlfZGVsZXRlX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpCkBAIC0xODEwLDE5ICYjNDM7MTgzNSwyOCBAQCBzdGF0aWMgdm9pZCBzbWNfbGxjX3JtdF9kZWxldGVfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncikKIAlsaW5rID0gcWVudHJ5LSZndDtsaW5rOwogCiAJaWYgKGxnci0mZ3Q7c21jX3ZlcnNpb24gPT0gU01DX1YyKSB7Ci0JCXN0cnVjdCBzbWNfbGxjX21zZ19kZWxldGVfcmtleV92MiAqbGxjdjI7CiYjNDM7CQlzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXlfdjJfaW5saW5lICpsbGN2MjsKIAotCQlpZiAoc21jX2xpbmtfc2hhcmVkX3YyX3J4YnVmKGxpbmspKSB7Ci0JCQltZW1jcHkobGdyLSZndDt3cl9yeF9idWZfdjIsIGxsYywgc2l6ZW9mKCpsbGMpKTsKLQkJCWxsY3YyID0gKHN0cnVjdCBzbWNfbGxjX21zZ19kZWxldGVfcmtleV92MiAqKWxnci0mZ3Q7d3JfcnhfYnVmX3YyOwotCQl9IGVsc2UgewotCQkJbGxjdjIgPSAoc3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyICopbGxjOwotCQl9CiYjNDM7CQkvKiBUaGUgbGVhZGluZyBTTUNfTExDX0RFTF9SS0VZX1YyX0lOTElORSBya2V5cyBhcmUgZGVjbGFyZWQgaW4KJiM0MzsJCSAqIHRoZSBtZXNzYWdlIGl0c2VsZiwgYW55IGZ1cnRoZXIgb25lcyB3ZXJlIHJlY2VpdmVkIGludG8KJiM0MzsJCSAqIHFlbnRyeS0mZ3Q7Ym9keS4KJiM0MzsJCSAqLwomIzQzOwkJbGxjdjIgPSAmYW1wO3FlbnRyeS0mZ3Q7bXNnLmRlbGV0ZV9ya2V5X3YyOwogCQlsbGN2Mi0mZ3Q7bnVtX2ludmFsX3JrZXlzID0gMDsKIAogCQltYXggPSBtaW5fdCh1OCwgbGxjdjItJmd0O251bV9ya2V5cywgU01DX0xMQ19SS0VZU19QRVJfTVNHX1YyKTsKJiM0MzsJCW1heCA9IG1pbl90KHUzMiwgbWF4LCBTTUNfTExDX0RFTF9SS0VZX1YyX0lOTElORSAmIzQzOwomIzQzOwkJCQkgICAgICBxZW50cnktJmd0O2JvZHlfbGVuIC8gc2l6ZW9mKF9fYmUzMikpOwogCQlmb3IgKGkgPSAwOyBpICZsdDsgbWF4OyBpJiM0MzsmIzQzOykgewotCQkJaWYgKHNtY19ydG9rZW5fZGVsZXRlKGxpbmssIGxsY3YyLSZndDtya2V5W2ldKSkKJiM0MzsJCQlfX2JlMzIgcmtleTsKJiM0MzsKJiM0MzsJCQlpZiAoaSAmbHQ7IFNNQ19MTENfREVMX1JLRVlfVjJfSU5MSU5FKQomIzQzOwkJCQlya2V5ID0gbGxjdjItJmd0O3JrZXlbaV07CiYjNDM7CQkJZWxzZQomIzQzOwkJCQltZW1jcHkoJmFtcDtya2V5LCBxZW50cnktJmd0O2JvZHkgJiM0MzsKJiM0MzsJCQkJCSAgICAgIChpIC0gU01DX0xMQ19ERUxfUktFWV9WMl9JTkxJTkUpICoKJiM0MzsJCQkJCSAgICAgIHNpemVvZihya2V5KSwgc2l6ZW9mKHJrZXkpKTsKJiM0MzsJCQlpZiAoc21jX3J0b2tlbl9kZWxldGUobGluaywgcmtleSkpCiAJCQkJbGxjdjItJmd0O251bV9pbnZhbF9ya2V5cyYjNDM7JiM0Mzs7CiAJCX0KIAkJbWVtc2V0KCZhbXA7bGxjLSZndDtya2V5WzBdLCAwLCBzaXplb2YobGxjLSZndDtya2V5KSk7CkBAIC0yMDYzLDE4ICYjNDM7MjA5NywzNSBAQCBzdGF0aWMgdm9pZCBzbWNfbGxjX3J4X3Jlc3BvbnNlKHN0cnVjdCBzbWNfbGluayAqbGluaywKIAl3YWtlX3VwKCZhbXA7bGluay0mZ3Q7bGdyLSZndDtsbGNfbXNnX3dhaXRlcik7CiB9CiAKLXN0YXRpYyB2b2lkIHNtY19sbGNfZW5xdWV1ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHVuaW9uIHNtY19sbGNfbXNnICpsbGMpCiYjNDM7c3RhdGljIHZvaWQgc21jX2xsY19lbnF1ZXVlKHN0cnVjdCBzbWNfbGluayAqbGluaywgdW5pb24gc21jX2xsY19tc2cgKmxsYywKJiM0MzsJCQkgICAgdTMyIGJ5dGVfbGVuKQogewogCXN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyID0gbGluay0mZ3Q7bGdyOwogCXN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5OwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiYjNDM7CXUxNiBib2R5X2xlbiA9IDA7CiAKLQlxZW50cnkgPSBrbWFsbG9jX29iaigqcWVudHJ5LCBHRlBfQVRPTUlDKTsKJiM0MzsJLyogVjIgbWVzc2FnZXMgY2FuIGJlIGxvbmdlciB0aGFuIHRoZSBpbmxpbmUgdW5pb24gc21jX2xsY19tc2cuIENhcnJ5CiYjNDM7CSAqIHRoZSByZW1haW5kZXIgaW4gdGhlIHFlbnRyeSBpdHNlbGYsIHNvIHRoYXQgaXRzIGxpZmV0aW1lIGFuZCBpdHMKJiM0MzsJICogbGVuZ3RoIG1hdGNoIHRoZSBtZXNzYWdlIHRoZSBwZWVyIGFjdHVhbGx5IHNlbnQuCiYjNDM7CSAqLwomIzQzOwlpZiAobGdyLSZndDtzbWNfdmVyc2lvbiA9PSBTTUNfVjIgJmFtcDsmYW1wOyBieXRlX2xlbiAmZ3Q7IFNNQ19XUl9UWF9TSVpFKQomIzQzOwkJYm9keV9sZW4gPSBtaW5fdCh1MzIsIGJ5dGVfbGVuLCBTTUNfV1JfQlVGX1YyX1NJWkUpIC0KJiM0MzsJCQkgICBTTUNfV1JfVFhfU0laRTsKJiM0MzsKJiM0MzsJcWVudHJ5ID0ga21hbGxvY19mbGV4KCpxZW50cnksIGJvZHksIGJvZHlfbGVuLCBHRlBfQVRPTUlDKTsKIAlpZiAoIXFlbnRyeSkKIAkJcmV0dXJuOwomIzQzOwlxZW50cnktJmd0O2JvZHlfbGVuID0gYm9keV9sZW47CiAJcWVudHJ5LSZndDtsaW5rID0gbGluazsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO3FlbnRyeS0mZ3Q7bGlzdCk7CiAJbWVtY3B5KCZhbXA7cWVudHJ5LSZndDttc2csIGxsYywgc2l6ZW9mKHVuaW9uIHNtY19sbGNfbXNnKSk7CiYjNDM7CWlmIChib2R5X2xlbikgewomIzQzOwkJdTggKnNyYyA9IHNtY19saW5rX3NoYXJlZF92Ml9yeGJ1ZihsaW5rKSA/CiYjNDM7CQkJKHU4ICopbGdyLSZndDt3cl9yeF9idWZfdjIgOiAodTggKilsbGM7CiYjNDM7CiYjNDM7CQltZW1jcHkocWVudHJ5LSZndDtib2R5LCBzcmMgJiM0MzsgU01DX1dSX1RYX1NJWkUsIGJvZHlfbGVuKTsKJiM0MzsJfQogCiAJLyogcHJvY2VzcyByZXNwb25zZXMgaW1tZWRpYXRlbHkgKi8KIAlpZiAoKGxsYy0mZ3Q7cmF3Lmhkci5mbGFncyAmYW1wOyBTTUNfTExDX0ZMQUdfUkVTUCkgJmFtcDsmYW1wOwpAQCAtMjEwNiw3ICYjNDM7MjE1Nyw3IEBAIHN0YXRpYyB2b2lkIHNtY19sbGNfcnhfaGFuZGxlcihzdHJ1Y3QgaWJfd2MgKndjLCB2b2lkICpidWYpCiAJCQlyZXR1cm47IC8qIGludmFsaWQgbWVzc2FnZSAqLwogCX0KIAotCXNtY19sbGNfZW5xdWV1ZShsaW5rLCBsbGMpOwomIzQzOwlzbWNfbGxjX2VucXVldWUobGluaywgbGxjLCB3Yy0mZ3Q7Ynl0ZV9sZW4pOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogd29ya2VyLCB1dGlscyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE1OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5NDcKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiA1ODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gdGhlIFNNQyBMTEMgU3Vic3lzdGVtKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIG1vZGlmeWluZyBgbmV0L3NtYy9zbWNfbGxjLmNgLiBJdCBzZWVtcyB0byBiZSBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBTTUNfVjIsIGRlYWxpbmcgd2l0aCBMTEMgbWVzc2FnZXMgdGhhdCBleGNlZWQgdGhlIHNpemUgbGltaXRhdGlvbnMgb2YgYHVuaW9uIHNtY19sbGNfbXNnYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgaG93IHRoZXNlIGxvbmdlciBtZXNzYWdlcyBhcmUgaGFuZGxlZCB3aXRoaW4gdGhlIGBzbWNfbGxjX3FlbnRyeWAgc3RydWN0dXJlLiBUaGV5JiMzOTt2ZSBpbnRyb2R1Y2VkIGBib2R5X2xlbmAgYW5kIGEgZmxleGlibGUgYXJyYXkgYGJvZHlbXWAgaW4gYHN0cnVjdCBzbWNfbGxjX3FlbnRyeWAgdG8gYWNjb21tb2RhdGUgdGhlIGV4dHJhIGJ5dGVzLiBUaGlzIG1lYW5zIGBzbWNfbGxjX2VucXVldWVgIG5vdyBhY2NvdW50cyBmb3IgdGhpcyBhbmQgYWxsb2NhdGVzIHRoZSBgcWVudHJ5YCBhY2NvcmRpbmdseSwgdGFraW5nIGBieXRlX2xlbmAgaW50byBhY2NvdW50LiBUaGUgZnVuY3Rpb25zIGBzbWNfbGxjX3NhdmVfYWRkX2xpbmtfcmtleXNgIGFuZCBgc21jX2xsY19ybXRfZGVsZXRlX3JrZXlgIGhhdmUgYmVlbiB1cGRhdGVkIHRvIHJlYWQgdGhlIGRhdGEgZGlyZWN0bHkgZnJvbSBgcWVudHJ5LSZndDtib2R5YCByYXRoZXIgdGhhbiByZWx5aW5nIG9uIGEgc2hhcmVkIGJ1ZmZlci4KCkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIHNpZ25pZmljYW50IGNoYW5nZSB0byBob3cgU01DIExMQyBtZXNzYWdlcywgcGFydGljdWxhcmx5IGluIFYyLCBhcmUgbWFuYWdlZC4gU01DLCBhcyBhIG5ldHdvcmsgcHJvdG9jb2wsIGlzIGludGVyZXN0aW5nIGJlY2F1c2Ugb2YgaXRzIHNoYXJlZCBtZW1vcnkgY2hhcmFjdGVyaXN0aWNzLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSByZWFjaCB0aGlzIG5ldyBjb2RlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGFuZCBob3cgZWFzaWx5IGNhbiB3ZSB0ZXN0IGl0PwoKTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUsIHllcywgd2UgY2FuIHJlYWNoIGl0LiBJIGtub3cgU01DIGNhbiBiZSB0ZXN0ZWQgdXNpbmcgYEFGX1NNQ2Agc29ja2V0cy4gVGhlcmUmIzM5O3MgdGhlIHNvZnR3YXJlIElTTSBkZXZpY2UgYW5kIGxvb3BiYWNrIGRldmljZXMgbGlrZSBgbG9vcGJhY2staXNtYCBhbmQgYHNtY19sb29wYmFja2AuIEFsc28sIHN5emthbGxlciBmdXp6ZXMgU01DIHZpYSBgQUZfU01DYCBzb2NrZXRzLiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCBkb2VzIHN5emthbGxlciB0YXJnZXQgdGhpcyBzcGVjaWZpYyBjb2RlPwoKQSBxdWljayBjaGVjayBjb25maXJtcyB0aGF0IHN5emthbGxlciAqZG9lcyogaGF2ZSBTTUMgZGVzY3JpcHRpb25zLCB3aGljaCBpcyBhIGdvb2Qgc2lnbi4gRGlnZ2luZyBkZWVwZXIsIEkgc2VlIHRoYXQgYHNtY19sbGNfZW5xdWV1ZWAgaXMgY2FsbGVkIGZyb20gYHNtY19sbGNfcnhfaGFuZGxlcmAuIGBzbWNfbGxjX3J4X2hhbmRsZXJgIGlzIHRoZSBJQiB3b3JrIGNvbXBsZXRpb24gaGFuZGxlciBmb3IgTExDIG1lc3NhZ2VzLiBTbywgdGhlc2UgTExDIG1lc3NhZ2VzIGFyZSByZWNlaXZlZCBvdmVyIGFuIElCIHF1ZXVlIHBhaXIuIElmIHdlIGhhdmUgYSBzb2Z0d2FyZSBSRE1BIGRldmljZSBsaWtlIGByeGVgIG9yIGBzaXdgIChTb2Z0aVdBUlApIGNvbmZpZ3VyZWQsIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlLiBBbmQsIGltcG9ydGFudGx5LCBzeXprYWxsZXIgc3VwcG9ydHMgYm90aCBgcnhlYCBhbmQgYHNpd2AuIFNNQyBhbHNvIHN1cHBvcnRzIElTTS4gU28sIHdlJiMzOTtyZSBsb29raW5nIGF0IFNNQyBvdmVyIGByeGVgIG9yIGBzaXdgLCB3aGljaCBzeXprYWxsZXIgYWxzbyBmdXp6emVzLgoKVG8gZnVydGhlciByZWZpbmUgbXkgYW5hbHlzaXMsIEkgc2hvdWxkIGlkZW50aWZ5IGtleSBzeW1ib2xzIHRvIGZvY3VzIG9uOiBgc21jX2xsY19lbnF1ZXVlYCwgYHNtY19sbGNfc2F2ZV9hZGRfbGlua19ya2V5c2AsIGBzbWNfbGxjX3JtdF9kZWxldGVfcmtleWAsIGBzbWNfbGxjX3J4X2hhbmRsZXJgLCBgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBhbmQgYHNtY19sbGNfc3J2X2FkZF9saW5rYC4gSSBuZWVkIHRvIGNoZWNrIGBuZXQvc21jL3NtY19sbGMuY2AgdG8gc2VlIGlmIHRoZXkmIzM5O3JlIHN0YXRpYyBvciBleHBvcnRlZCBhbmQgZGV0ZXJtaW5lIHdoaWNoIG9uZXMgYXJlIHRoZSBtb3N0IHZhbHVhYmxlIHRvIHNjcnV0aW5pemUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTU6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XihzdGF0aWMgKT8oaW50fHZvaWQpIHNtY19sbGNfLipcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL3NtY19sbGMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19sbGMuYz0yMTU9c3RydWN0IHNtY19sbGNfcWVudHJ5IHtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMjItXG5uZXQvc21jL3NtY19sbGMuYzoyMjM6c3RhdGljIHZvaWQgc21jX2xsY19lbnF1ZXVlKHN0cnVjdCBzbWNfbGluayAqbGluaywgdW5pb24gc21jX2xsY19tc2cgKmxsYyxcbm5ldC9zbWMvc21jX2xsYy5jLTIyNC1cdFx0XHQgICAgdTMyIGJ5dGVfbGVuKTtcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0yMjY9c3RydWN0IHNtY19sbGNfcWVudHJ5ICpzbWNfbGxjX2Zsb3dfcWVudHJ5X2NscihzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIzMy1cbm5ldC9zbWMvc21jX2xsYy5jOjIzNDp2b2lkIHNtY19sbGNfZmxvd19xZW50cnlfZGVsKHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpXG5uZXQvc21jL3NtY19sbGMuYy0yMzUte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTI0NT1zdGF0aWMgaW5saW5lIHZvaWQgc21jX2xsY19mbG93X3FlbnRyeV9zZXQoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdyxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yNTAtXG5uZXQvc21jL3NtY19sbGMuYzoyNTE6c3RhdGljIHZvaWQgc21jX2xsY19mbG93X3BhcmFsbGVsKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCB1OCBmbG93X3R5cGUsXG5uZXQvc21jL3NtY19sbGMuYy0yNTItXHRcdFx0XHQgIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTI3Mz1zdGF0aWMgYm9vbCBzbWNfbGxjX2Zsb3dfc3RhcnQoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdyxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0zMDQtLyogc3RhcnQgYSBuZXcgbG9jYWwgbGxjIGZsb3csIHdhaXQgdGlsbCBjdXJyZW50IGZsb3cgZmluaXNoZWQgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjMwNTppbnQgc21jX2xsY19mbG93X2luaXRpYXRlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxubmV0L3NtYy9zbWNfbGxjLmMtMzA2LVx0XHRcdCAgZW51bSBzbWNfbGxjX2Zsb3d0eXBlIHR5cGUpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMzM4LS8qIGZpbmlzaCB0aGUgY3VycmVudCBsbGMgZmxvdyAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MzM5OnZvaWQgc21jX2xsY19mbG93X3N0b3Aoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpXG5uZXQvc21jL3NtY19sbGMuYy0zNDAte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTM5NT1zdHJ1Y3Qgc21jX2xsY190eF9wZW5kIHtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0zOTgtLyogaGFuZGxlciBmb3Igc2VuZC90cmFuc21pc3Npb24gY29tcGxldGlvbiBvZiBhbiBMTEMgbXNnICovXG5uZXQvc21jL3NtY19sbGMuYzozOTk6c3RhdGljIHZvaWQgc21jX2xsY190eF9oYW5kbGVyKHN0cnVjdCBzbWNfd3JfdHhfcGVuZF9wcml2ICpwZW5kLFxubmV0L3NtYy9zbWNfbGxjLmMtNDAwLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtNDE4LSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6NDE5OnN0YXRpYyBpbnQgc21jX2xsY19hZGRfcGVuZGluZ19zZW5kKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTQyMC1cdFx0XHRcdCAgICBzdHJ1Y3Qgc21jX3dyX2J1ZiAqKndyX2J1Zixcbi0tXG5uZXQvc21jL3NtY19sbGMuYy00NDAtXG5uZXQvc21jL3NtY19sbGMuYzo0NDE6c3RhdGljIGludCBzbWNfbGxjX2FkZF9wZW5kaW5nX3NlbmRfdjIoc3RydWN0IHNtY19saW5rICpsaW5rLFxubmV0L3NtYy9zbWNfbGxjLmMtNDQyLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBzbWNfd3JfdjJfYnVmICoqd3JfYnVmLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTQ1Mi1cbm5ldC9zbWMvc21jX2xsYy5jOjQ1MzpzdGF0aWMgdm9pZCBzbWNfbGxjX2luaXRfbXNnX2hkcihzdHJ1Y3Qgc21jX2xsY19oZHIgKmhkcixcbm5ldC9zbWMvc21jX2xsYy5jLTQ1NC1cdFx0XHRcdCBzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc2l6ZV90IGxlbilcbi0tXG5uZXQvc21jL3NtY19sbGMuYy00NjUtLyogaGlnaC1sZXZlbCBBUEkgdG8gc2VuZCBMTEMgY29uZmlybSBsaW5rICovXG5uZXQvc21jL3NtY19sbGMuYzo0NjY6aW50IHNtY19sbGNfc2VuZF9jb25maXJtX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxubmV0L3NtYy9zbWNfbGxjLmMtNDY3LVx0XHRcdCAgICAgIGVudW0gc21jX2xsY19yZXFyZXNwIHJlcXJlc3ApXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtNTA1LS8qIHNlbmQgTExDIGNvbmZpcm0gcmtleSByZXF1ZXN0ICovXG5uZXQvc21jL3NtY19sbGMuYzo1MDY6c3RhdGljIGludCBzbWNfbGxjX3NlbmRfY29uZmlybV9ya2V5KHN0cnVjdCBzbWNfbGluayAqc2VuZF9saW5rLFxubmV0L3NtYy9zbWNfbGxjLmMtNTA3LVx0XHRcdFx0ICAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy01NTQtLyogc2VuZCBMTEMgZGVsZXRlIHJrZXkgcmVxdWVzdCAqL1xubmV0L3NtYy9zbWNfbGxjLmM6NTU1OnN0YXRpYyBpbnQgc21jX2xsY19zZW5kX2RlbGV0ZV9ya2V5KHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTU1Ni1cdFx0XHRcdCAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcbi0tXG5uZXQvc21jL3NtY19sbGMuYz02MTU9c3RhdGljIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnNtY19sbGNfZ2V0X2ZpcnN0X3JtYihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbi0tXG5uZXQvc21jL3NtY19sbGMuYy02MjEtXG5uZXQvc21jL3NtY19sbGMuYzo2MjI6c3RhdGljIGludCBzbWNfbGxjX2ZpbGxfZXh0X3YyKHN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua192Ml9leHQgKmV4dCxcbm5ldC9zbWMvc21jX2xsYy5jLTYyMy1cdFx0XHQgICAgICAgc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTY2MS0vKiBzZW5kIEFERCBMSU5LIHJlcXVlc3Qgb3IgcmVzcG9uc2UgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjY2MjppbnQgc21jX2xsY19zZW5kX2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgdTggbWFjW10sIHU4IGdpZFtdLFxubmV0L3NtYy9zbWNfbGxjLmMtNjYzLVx0XHRcdCAgc3RydWN0IHNtY19saW5rICpsaW5rX25ldyxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy03MjItLyogc2VuZCBERUxFVEUgTElOSyByZXF1ZXN0IG9yIHJlc3BvbnNlICovXG5uZXQvc21jL3NtY19sbGMuYzo3MjM6aW50IHNtY19sbGNfc2VuZF9kZWxldGVfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHU4IGxpbmtfZGVsX2lkLFxubmV0L3NtYy9zbWNfbGxjLmMtNzI0LVx0XHRcdCAgICAgZW51bSBzbWNfbGxjX3JlcXJlc3AgcmVxcmVzcCwgYm9vbCBvcmRlcmx5LFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTc1OC0vKiBzZW5kIExMQyB0ZXN0IGxpbmsgcmVxdWVzdCAqL1xubmV0L3NtYy9zbWNfbGxjLmM6NzU5OnN0YXRpYyBpbnQgc21jX2xsY19zZW5kX3Rlc3RfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHU4IHVzZXJfZGF0YVsxNl0pXG5uZXQvc21jL3NtY19sbGMuYy03NjAte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTc4My0vKiBzY2hlZHVsZSBhbiBsbGMgc2VuZCBvbiBsaW5rLCBtYXkgd2FpdCBmb3IgYnVmZmVycyAqL1xubmV0L3NtYy9zbWNfbGxjLmM6Nzg0OnN0YXRpYyBpbnQgc21jX2xsY19zZW5kX21lc3NhZ2Uoc3RydWN0IHNtY19saW5rICpsaW5rLCB2b2lkICpsbGNidWYpXG5uZXQvc21jL3NtY19sbGMuYy03ODUte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTgwNS0gKi9cbm5ldC9zbWMvc21jX2xsYy5jOjgwNjpzdGF0aWMgaW50IHNtY19sbGNfc2VuZF9tZXNzYWdlX3dhaXQoc3RydWN0IHNtY19saW5rICpsaW5rLCB2b2lkICpsbGNidWYpXG5uZXQvc21jL3NtY19sbGMuYy04MDcte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTgyNS1cbm5ldC9zbWMvc21jX2xsYy5jOjgyNjpzdGF0aWMgaW50IHNtY19sbGNfYWxsb2NfYWx0X2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXG5uZXQvc21jL3NtY19sbGMuYy04MjctXHRcdFx0XHQgIGVudW0gc21jX2xncl90eXBlIGxncl9uZXdfdClcbi0tXG5uZXQvc21jL3NtY19sbGMuYy04NTAtLyogc2VuZCBvbmUgYWRkX2xpbmtfY29udGludWUgbXNnICovXG5uZXQvc21jL3NtY19sbGMuYzo4NTE6c3RhdGljIGludCBzbWNfbGxjX2FkZF9saW5rX2NvbnQoc3RydWN0IHNtY19saW5rICpsaW5rLFxubmV0L3NtYy9zbWNfbGxjLmMtODUyLVx0XHRcdFx0IHN0cnVjdCBzbWNfbGluayAqbGlua19uZXcsIHU4ICpudW1fcmtleXNfdG9kbyxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy05MDUtXG5uZXQvc21jL3NtY19sbGMuYzo5MDY6c3RhdGljIGludCBzbWNfbGxjX2NsaV9ya2V5X2V4Y2hhbmdlKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTkwNy1cdFx0XHRcdCAgICAgc3RydWN0IHNtY19saW5rICpsaW5rX25ldylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy05NDktLyogcHJlcGFyZSBhbmQgc2VuZCBhbiBhZGQgbGluayByZWplY3QgcmVzcG9uc2UgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjk1MDpzdGF0aWMgaW50IHNtY19sbGNfY2xpX2FkZF9saW5rX3JlamVjdChzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbm5ldC9zbWMvc21jX2xsYy5jLTk1MS17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtOTU5LVxubmV0L3NtYy9zbWNfbGxjLmM6OTYwOnN0YXRpYyBpbnQgc21jX2xsY19jbGlfY29uZl9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTk2MS1cdFx0XHRcdCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEwMTctXG5uZXQvc21jL3NtY19sbGMuYzoxMDE4OnN0YXRpYyB2b2lkIHNtY19sbGNfc2F2ZV9hZGRfbGlua19ya2V5cyhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG5uZXQvc21jL3NtY19sbGMuYy0xMDE5LVx0XHRcdFx0XHRzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3LFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEwNDMtXG5uZXQvc21jL3NtY19sbGMuYzoxMDQ0OnN0YXRpYyB2b2lkIHNtY19sbGNfc2F2ZV9hZGRfbGlua19pbmZvKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTEwNDUtXHRcdFx0XHQgICAgICAgc3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rICphZGRfbGxjKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEwNTQtLyogYXMgYW4gU01DIGNsaWVudCwgcHJvY2VzcyBhbiBhZGQgbGluayByZXF1ZXN0ICovXG5uZXQvc21jL3NtY19sbGMuYzoxMDU1OmludCBzbWNfbGxjX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxubmV0L3NtYy9zbWNfbGxjLmMtMTA1Ni17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTE0Ny1cbm5ldC9zbWMvc21jX2xsYy5jOjExNDg6c3RhdGljIHZvaWQgc21jX2xsY19zZW5kX3JlcXVlc3RfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rKVxubmV0L3NtYy9zbWNfbGxjLmMtMTE0OS17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTE4Ni0vKiBhcyBhbiBTTUMgY2xpZW50LCBpbnZpdGUgc2VydmVyIHRvIHN0YXJ0IHRoZSBhZGRfbGluayBwcm9jZXNzaW5nICovXG5uZXQvc21jL3NtY19sbGMuYzoxMTg3OnN0YXRpYyB2b2lkIHNtY19sbGNfY2xpX2FkZF9saW5rX2ludml0ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG5uZXQvc21jL3NtY19sbGMuYy0xMTg4LVx0XHRcdFx0XHRzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xMjMxPXN0YXRpYyBib29sIHNtY19sbGNfaXNfbG9jYWxfYWRkX2xpbmsodW5pb24gc21jX2xsY19tc2cgKmxsYylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xMjM4LVxubmV0L3NtYy9zbWNfbGxjLmM6MTIzOTpzdGF0aWMgdm9pZCBzbWNfbGxjX3Byb2Nlc3NfY2xpX2FkZF9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfbGxjLmMtMTI0MC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTI1Mi1cbm5ldC9zbWMvc21jX2xsYy5jOjEyNTM6c3RhdGljIGludCBzbWNfbGxjX2FjdGl2ZV9saW5rX2NvdW50KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfbGxjLmMtMTI1NC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MTI2Nj1zdGF0aWMgc3RydWN0IHNtY19saW5rICpzbWNfbGxjX2ZpbmRfYXN5bV9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEzMDktXG5uZXQvc21jL3NtY19sbGMuYzoxMzEwOnN0YXRpYyB2b2lkIHNtY19sbGNfZGVsZXRlX2FzeW1fbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbm5ldC9zbWMvc21jX2xsYy5jLTEzMTEte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEzNDMtXG5uZXQvc21jL3NtY19sbGMuYzoxMzQ0OnN0YXRpYyBpbnQgc21jX2xsY19zcnZfcmtleV9leGNoYW5nZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG5uZXQvc21jL3NtY19sbGMuYy0xMzQ1LVx0XHRcdFx0ICAgICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEzODQtXG5uZXQvc21jL3NtY19sbGMuYzoxMzg1OnN0YXRpYyBpbnQgc21jX2xsY19zcnZfY29uZl9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTEzODYtXHRcdFx0XHQgc3RydWN0IHNtY19saW5rICpsaW5rX25ldyxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNDE4LVxubmV0L3NtYy9zbWNfbGxjLmM6MTQxOTpzdGF0aWMgdm9pZCBzbWNfbGxjX3NlbmRfcmVxX2FkZF9saW5rX3Jlc3BvbnNlKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxubmV0L3NtYy9zbWNfbGxjLmMtMTQyMC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTQyNy1cbm5ldC9zbWMvc21jX2xsYy5jOjE0Mjg6aW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTE0MjktXHRcdFx0IHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcmVxX3FlbnRyeSlcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNTUxLVxubmV0L3NtYy9zbWNfbGxjLmM6MTU1MjpzdGF0aWMgdm9pZCBzbWNfbGxjX3Byb2Nlc3Nfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfbGxjLmMtMTU1My17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTU3MC0vKiBlbnF1ZXVlIGEgbG9jYWwgYWRkX2xpbmsgcmVxIHRvIHRyaWdnZXIgYSBuZXcgYWRkX2xpbmsgZmxvdyAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTU3MTp2b2lkIHNtY19sbGNfYWRkX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rKVxubmV0L3NtYy9zbWNfbGxjLmMtMTU3Mi17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTU4Mi0vKiB3b3JrZXIgdG8gcHJvY2VzcyBhbiBhZGQgbGluayBtZXNzYWdlICovXG5uZXQvc21jL3NtY19sbGMuYzoxNTgzOnN0YXRpYyB2b2lkIHNtY19sbGNfYWRkX2xpbmtfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvc21jL3NtY19sbGMuYy0xNTg0LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNjA1LSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTYwNjp2b2lkIHNtY19sbGNfc3J2X2RlbGV0ZV9saW5rX2xvY2FsKHN0cnVjdCBzbWNfbGluayAqbGluaywgdTggZGVsX2xpbmtfaWQpXG5uZXQvc21jL3NtY19sbGMuYy0xNjA3LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNjE4LVxubmV0L3NtYy9zbWNfbGxjLmM6MTYxOTpzdGF0aWMgdm9pZCBzbWNfbGxjX3Byb2Nlc3NfY2xpX2RlbGV0ZV9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfbGxjLmMtMTYyMC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTY3Ni0gKi9cbm5ldC9zbWMvc21jX2xsYy5jOjE2Nzc6dm9pZCBzbWNfbGxjX3NlbmRfbGlua19kZWxldGVfYWxsKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBib29sIG9yZCwgdTMyIHJzbilcbm5ldC9zbWMvc21jX2xsYy5jLTE2Nzgte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE2OTYtXG5uZXQvc21jL3NtY19sbGMuYzoxNjk3OnN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19zcnZfZGVsZXRlX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19sbGMuYy0xNjk4LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNzY0LVxubmV0L3NtYy9zbWNfbGxjLmM6MTc2NTpzdGF0aWMgdm9pZCBzbWNfbGxjX2RlbGV0ZV9saW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L3NtYy9zbWNfbGxjLmMtMTc2Ni17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTc4NC0vKiBwcm9jZXNzIGEgY29uZmlybV9ya2V5IHJlcXVlc3QgZnJvbSBwZWVyLCByZW1vdGUgZmxvdyAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTc4NTpzdGF0aWMgdm9pZCBzbWNfbGxjX3JtdF9jb25mX3JrZXkoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19sbGMuYy0xNzg2LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xODI0LS8qIHByb2Nlc3MgYSBkZWxldGVfcmtleSByZXF1ZXN0IGZyb20gcGVlciwgcmVtb3RlIGZsb3cgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjE4MjU6c3RhdGljIHZvaWQgc21jX2xsY19ybXRfZGVsZXRlX3JrZXkoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19sbGMuYy0xODI2LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xODg2LVxubmV0L3NtYy9zbWNfbGxjLmM6MTg4NzpzdGF0aWMgdm9pZCBzbWNfbGxjX3Byb3RvY29sX3Zpb2xhdGlvbihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgdTggdHlwZSlcbm5ldC9zbWMvc21jX2xsYy5jLTE4ODgte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE4OTYtLyogZmx1c2ggdGhlIGxsYyBldmVudCBxdWV1ZSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTg5NzpzdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X2ZsdXNoKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfbGxjLmMtMTg5OC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTkwOC1cbm5ldC9zbWMvc21jX2xsYy5jOjE5MDk6c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF9oYW5kbGVyKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxubmV0L3NtYy9zbWNfbGxjLmMtMTkxMC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjAyNy0vKiB3b3JrZXIgdG8gcHJvY2VzcyBsbGMgbWVzc2FnZXMgb24gdGhlIGV2ZW50IHF1ZXVlICovXG5uZXQvc21jL3NtY19sbGMuYzoyMDI4OnN0YXRpYyB2b2lkIHNtY19sbGNfZXZlbnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvc21jL3NtY19sbGMuYy0yMDI5LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMDU2LS8qIHByb2Nlc3MgbGxjIHJlc3BvbnNlcyBpbiB0YXNrbGV0IGNvbnRleHQgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjIwNTc6c3RhdGljIHZvaWQgc21jX2xsY19yeF9yZXNwb25zZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG5uZXQvc21jL3NtY19sbGMuYy0yMDU4LVx0XHRcdFx0c3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjA5OS1cbm5ldC9zbWMvc21jX2xsYy5jOjIxMDA6c3RhdGljIHZvaWQgc21jX2xsY19lbnF1ZXVlKHN0cnVjdCBzbWNfbGluayAqbGluaywgdW5pb24gc21jX2xsY19tc2cgKmxsYyxcbm5ldC9zbWMvc21jX2xsYy5jLTIxMDEtXHRcdFx0ICAgIHUzMiBieXRlX2xlbilcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMTQ0LS8qIGNvcHkgcmVjZWl2ZWQgbXNnIGFuZCBhZGQgaXQgdG8gdGhlIGV2ZW50IHF1ZXVlICovXG5uZXQvc21jL3NtY19sbGMuYzoyMTQ1OnN0YXRpYyB2b2lkIHNtY19sbGNfcnhfaGFuZGxlcihzdHJ1Y3QgaWJfd2MgKndjLCB2b2lkICpidWYpXG5uZXQvc21jL3NtY19sbGMuYy0yMTQ2LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMTY0LVxubmV0L3NtYy9zbWNfbGxjLmM6MjE2NTpzdGF0aWMgdm9pZCBzbWNfbGxjX3Rlc3RsaW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L3NtYy9zbWNfbGxjLmMtMjE2Ni17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjE5Ni1cbm5ldC9zbWMvc21jX2xsYy5jOjIxOTc6dm9pZCBzbWNfbGxjX2xncl9pbml0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcbm5ldC9zbWMvc21jX2xsYy5jLTIxOTgte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIyMTUtLyogY2FsbGVkIGFmdGVyIGxnciB3YXMgcmVtb3ZlZCBmcm9tIGxncl9saXN0ICovXG5uZXQvc21jL3NtY19sbGMuYzoyMjE2OnZvaWQgc21jX2xsY19sZ3JfY2xlYXIoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19sbGMuYy0yMjE3LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMjI5LVxubmV0L3NtYy9zbWNfbGxjLmM6MjIzMDppbnQgc21jX2xsY19saW5rX2luaXQoc3RydWN0IHNtY19saW5rICpsaW5rKVxubmV0L3NtYy9zbWNfbGxjLmMtMjIzMS17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjIzNi1cbm5ldC9zbWMvc21jX2xsYy5jOjIyMzc6dm9pZCBzbWNfbGxjX2xpbmtfYWN0aXZlKHN0cnVjdCBzbWNfbGluayAqbGluaylcbm5ldC9zbWMvc21jX2xsYy5jLTIyMzgte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIyNTQtLyogY2FsbGVkIGluIHdvcmtlciBjb250ZXh0ICovXG5uZXQvc21jL3NtY19sbGMuYzoyMjU1OnZvaWQgc21jX2xsY19saW5rX2NsZWFyKHN0cnVjdCBzbWNfbGluayAqbGluaywgYm9vbCBsb2cpXG5uZXQvc21jL3NtY19sbGMuYy0yMjU2LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMjY5LS8qIHJlZ2lzdGVyIGEgbmV3IHJ0b2tlbiBhdCB0aGUgcmVtb3RlIHBlZXIgKGZvciBhbGwgbGlua3MpICovXG5uZXQvc21jL3NtY19sbGMuYzoyMjcwOmludCBzbWNfbGxjX2RvX2NvbmZpcm1fcmtleShzdHJ1Y3Qgc21jX2xpbmsgKnNlbmRfbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTIyNzEtXHRcdFx0ICAgIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnJtYl9kZXNjKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIyOTEtLyogdW5yZWdpc3RlciBhbiBydG9rZW4gYXQgdGhlIHJlbW90ZSBwZWVyICovXG5uZXQvc21jL3NtY19sbGMuYzoyMjkyOmludCBzbWNfbGxjX2RvX2RlbGV0ZV9ya2V5KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxubmV0L3NtYy9zbWNfbGxjLmMtMjI5My1cdFx0XHQgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMzE3LVxubmV0L3NtYy9zbWNfbGxjLmM6MjMxODp2b2lkIHNtY19sbGNfbGlua19zZXRfdWlkKHN0cnVjdCBzbWNfbGluayAqbGluaylcbm5ldC9zbWMvc21jX2xsYy5jLTIzMTkte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIzMjYtLyogc2F2ZSBwZWVycyBsaW5rIHVzZXIgaWQsIHVzZWQgZm9yIGRlYnVnIHB1cnBvc2VzICovXG5uZXQvc21jL3NtY19sbGMuYzoyMzI3OnZvaWQgc21jX2xsY19zYXZlX3BlZXJfdWlkKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxubmV0L3NtYy9zbWNfbGxjLmMtMjMyOC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjMzMy0vKiBldmFsdWF0ZSBjb25maXJtIGxpbmsgcmVxdWVzdCBvciByZXNwb25zZSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MjMzNDppbnQgc21jX2xsY19ldmFsX2NvbmZfbGluayhzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSxcbm5ldC9zbWMvc21jX2xsYy5jLTIzMzUtXHRcdFx0ICAgZW51bSBzbWNfbGxjX3JlcXJlc3AgdHlwZSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzU2OQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDM0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgU01DIExpbmsgTWFuYWdlbWVudCBGdW5jdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlc2UgZnVuY3Rpb24gbW9kaWZpY2F0aW9ucy4gRmlyc3QsIEkmIzM5O3ZlIGdvdCBhIGxpc3Qgb2YgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uczogYHNtY19sbGNfZW5xdWV1ZWAgKHN0YXRpYyksIGBzbWNfbGxjX3NhdmVfYWRkX2xpbmtfcmtleXNgIChzdGF0aWMpLCBhbmQgdGhlbiBgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBgc21jX2xsY19zcnZfYWRkX2xpbmtgLCBgc21jX2xsY19hZGRfbGlua19sb2NhbGAsIGFuZCBgc21jX2xsY19zcnZfZGVsZXRlX2xpbmtfbG9jYWxgIOKAkyB0aG9zZSBsYXN0IGZvdXIsIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgdGhleSYjMzk7cmUgZXhwb3J0ZWQgb3Igbm9uLXN0YXRpYywgc28gSSBjYW4gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZXMuIEFoLCB5ZXMsIGNvbmZpcm1lZCwgdGhleSAqYXJlKiBub24tc3RhdGljIGFuZCBleHBvcnRlZC4KCkdvb2QsIG5vdyBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGFyZSBnb29kIGZvY3VzIHN5bWJvbHMuIEFuZCB0aGVuIEkgaGF2ZSBgc21jX2xsY19ybXRfZGVsZXRlX3JrZXlgIChzdGF0aWMpIHRvIGNvbnNpZGVyLiBXYWl0LCBJIGFsc28gbmVlZCB0byBtYWtlIGEgbm90ZSB0aGF0IGBzbWNfbGxjX3J4X2hhbmRsZXJgIGlzIHN0YXRpYyBhbmQgZ2V0cyBjYWxsZWQgZnJvbSBhbiBJQiB3b3JrIGNvbXBsZXRpb24sIHNvIHRoYXQgbmVlZHMgdG8gYmUgY29uc2lkZXJlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBvdGhlcnMuCgpBbHJpZ2h0LCBgc21jX2xsY19jbGlfYWRkX2xpbmtgIHNlZW1zIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBkZXRhaWxlZCBhbmFseXNpcywgYW5kIHNvIGRvZXMgYHNtY19sbGNfc3J2X2FkZF9saW5rYC4gSSBuZWVkIHRvIGNvbnN1bHQgdGhlIEtjb25maWcgZm9yIFNNQyBjb25maWd1cmF0aW9ucyB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZXNlIG1vZGlmaWNhdGlvbnMsIGJ1dCB0aGlzIGdpdmVzIG1lIGEgc29saWQgZnJhbWV3b3JrIGZvciBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE1OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvc21jL0tjb25maWc6Mjpjb25maWcgU01DXG5uZXQvc21jL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG4tLVxubmV0L3NtYy9LY29uZmlnLTEzLVxubmV0L3NtYy9LY29uZmlnOjE0OmNvbmZpZyBTTUNfRElBR1xubmV0L3NtYy9LY29uZmlnLTE1LVx0dHJpc3RhdGUgXCYjMzQ7U01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQvc21jL0tjb25maWctMjItXG5uZXQvc21jL0tjb25maWc6MjM6Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxubmV0L3NtYy9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTU6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ0NTMKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIFNNQyBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBhbiBgU01DYCBjb25maWd1cmF0aW9uLiBGaXJzdCwgbGV0JiMzOTtzIGp1c3QgY29uZmlybSB0aGF0JiMzOTtzIHRoZSBvbmx5IG9uZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHJpZ2h0IG5vdyDigJMgYXJlIHRoZXJlIGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIGZsb2F0aW5nIGFyb3VuZCB0aGF0IGNvdWxkIGltcGFjdCBpdD8gTmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbXBsZXRlIHBpY3R1cmUuIE9rYXksIGdvb2QuCgpOb3csIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBgU01DYCBjb25maWd1cmF0aW9uLiBNeSB1c3VhbCBnby10byBmb3IgdGhpcyB0eXBlIG9mIGRlcGVuZGVuY3kgYW5hbHlzaXMgaXMgdGhlIGBuZXQvc21jL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBpbnRlcmNvbm5lY3Rpb25zIGFuZCBuZWNlc3NhcnkgcHJlcmVxdWlzaXRlcyBzaG91bGQgYmUgZGVmaW5lZC4gVGltZSB0byBjcmFjayB0aGF0IGZpbGUgb3BlbiBhbmQgc2VlIHdoYXQgbWFrZXMgdGhpcyBgU01DYCBjb25maWd1cmF0aW9uIHRpY2shCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTU6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgU01DXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFNNQy1SIHByb3ZpZGVzIGEgXCYjMzQ7c29ja2V0cyBvdmVyIFJETUFcJiMzNDsgc29sdXRpb24gbWFraW5nIHVzZSBvZlxuICAgNzpcdFx0ICBSRE1BIG92ZXIgQ29udmVyZ2VkIEV0aGVybmV0IChSb0NFKSB0ZWNobm9sb2d5IHRvIHVwZ3JhZGVcbiAgIDg6XHRcdCAgQUZfSU5FVCBUQ1AgY29ubmVjdGlvbnMgdHJhbnNwYXJlbnRseS5cbiAgIDk6XHRcdCAgVGhlIExpbnV4IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTTUMtUiBzb2x1dGlvbiBpcyBkZXNpZ25lZCBhc1xuICAxMDpcdFx0ICBhIHNlcGFyYXRlIHNvY2tldCBmYW1pbHkgU01DLlxuICAxMTpcdFxuICAxMjpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gcnVuIFNNQyBzb2NrZXQgYXBwbGljYXRpb25zXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIFNNQ19ESUFHXG4gIDE1Olx0XHR0cmlzdGF0ZSBcJiMzNDtTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuICAxNjpcdFx0ZGVwZW5kcyBvbiBTTUNcbiAgMTc6XHRcdGhlbHBcbiAgMTg6XHRcdCAgU3VwcG9ydCBmb3IgU01DIHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZSB1c2VkIGJ5IHRvb2xzIHN1Y2ggYXNcbiAgMTk6XHRcdCAgc21jc3MuXG4gIDIwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTU6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjVtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ5NDgKCQkJCQkJCW91dHB1dDogMjAwCgkJCQkJCQl0aG91Z2h0czogNjI5MTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE1OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTTUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNfbGxjX2NsaV9hZGRfbGluayYjMzQ7LAogICAgJiMzNDtzbWNfbGxjX3Nydl9hZGRfbGluayYjMzQ7LAogICAgJiMzNDtzbWNfbGxjX2FkZF9saW5rX2xvY2FsJiMzNDssCiAgICAmIzM0O3NtY19sbGNfc3J2X2RlbGV0ZV9saW5rX2xvY2FsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGhvdyBTTUMgTExDIG1lc3NhZ2VzIGFyZSBlbnF1ZXVlZCBhbmQgcHJvY2Vzc2VkLCBzcGVjaWZpY2FsbHkgZm9yIFNNQ19WMiB3aGVyZSBtZXNzYWdlcyBjYW4gYmUgbG9uZ2VyIHRoYW4gYHVuaW9uIHNtY19sbGNfbXNnYC4gSXQgaW50cm9kdWNlcyBgYm9keV9sZW5gIGFuZCBhIGZsZXhpYmxlIGFycmF5IGBib2R5W11gIGluIGBzdHJ1Y3Qgc21jX2xsY19xZW50cnlgIHRvIHN0b3JlIHRoZSBleHRyYSBieXRlcyBvZiBWMiBtZXNzYWdlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBTTUMgKFNoYXJlZCBNZW1vcnkgQ29tbXVuaWNhdGlvbnMpIHN1YnN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgQUZfU01DIHNvY2tldHMgYW5kIHNvZnR3YXJlIFJETUEvSVNNIGRldmljZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtY19sbGNfY2xpX2FkZF9saW5rJiMzNDssCiAgICAmIzM0O3NtY19sbGNfc3J2X2FkZF9saW5rJiMzNDssCiAgICAmIzM0O3NtY19sbGNfYWRkX2xpbmtfbG9jYWwmIzM0OywKICAgICYjMzQ7c21jX2xsY19zcnZfZGVsZXRlX2xpbmtfbG9jYWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgaG93IFNNQyBMTEMgbWVzc2FnZXMgYXJlIGVucXVldWVkIGFuZCBwcm9jZXNzZWQsIHNwZWNpZmljYWxseSBmb3IgU01DX1YyIHdoZXJlIG1lc3NhZ2VzIGNhbiBiZSBsb25nZXIgdGhhbiBgdW5pb24gc21jX2xsY19tc2dgLiBJdCBpbnRyb2R1Y2VzIGBib2R5X2xlbmAgYW5kIGEgZmxleGlibGUgYXJyYXkgYGJvZHlbXWAgaW4gYHN0cnVjdCBzbWNfbGxjX3FlbnRyeWAgdG8gc3RvcmUgdGhlIGV4dHJhIGJ5dGVzIG9mIFYyIG1lc3NhZ2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFNNQyAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykgc3Vic3lzdGVtLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBBRl9TTUMgc29ja2V0cyBhbmQgc29mdHdhcmUgUkRNQS9JU00gZGV2aWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE1OjA1OjM4LjkzNjcyNzg0MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2NjY5MzYzODAxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfbGxjX2NsaV9hZGRfbGlua1wiLFxuICAgIFwic21jX2xsY19zcnZfYWRkX2xpbmtcIixcbiAgICBcInNtY19sbGNfYWRkX2xpbmtfbG9jYWxcIixcbiAgICBcInNtY19sbGNfc3J2X2RlbGV0ZV9saW5rX2xvY2FsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgaG93IFNNQyBMTEMgbWVzc2FnZXMgYXJlIGVucXVldWVkIGFuZCBwcm9jZXNzZWQsIHNwZWNpZmljYWxseSBmb3IgU01DX1YyIHdoZXJlIG1lc3NhZ2VzIGNhbiBiZSBsb25nZXIgdGhhbiBgdW5pb24gc21jX2xsY19tc2dgLiBJdCBpbnRyb2R1Y2VzIGBib2R5X2xlbmAgYW5kIGEgZmxleGlibGUgYXJyYXkgYGJvZHlbXWAgaW4gYHN0cnVjdCBzbWNfbGxjX3FlbnRyeWAgdG8gc3RvcmUgdGhlIGV4dHJhIGJ5dGVzIG9mIFYyIG1lc3NhZ2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFNNQyAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykgc3Vic3lzdGVtLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBBRl9TTUMgc29ja2V0cyBhbmQgc29mdHdhcmUgUkRNQS9JU00gZGV2aWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTU6MDU6MzguOTM2NzMzOTMxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzMwMTEwNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA2YzM4ZjNjM2Q2MDRiOTMzOGUxZjI3ZWQ2NjI5MzQ0MWI4Mzc1MjcxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDEgMTU6MDU6MzggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfbGxjLmMgYi9uZXQvc21jL3NtY19sbGMuY1xcbmluZGV4IDk1NGIyZmYxODE1YzIuLjFiMTUzMTczZGQ1MTYgMTAwNjQ0XFxuLS0tIGEvbmV0L3NtYy9zbWNfbGxjLmNcXG4rKysgYi9uZXQvc21jL3NtY19sbGMuY1xcbkBAIC0xNTcsNiArMTU3LDcgQEAgc3RydWN0IHNtY19sbGNfbXNnX2NvbmZpcm1fcmtleSB7XFx0LyogdHlwZSAweDA2ICovXFxuIH07XFxuIFxcbiAjZGVmaW5lIFNNQ19MTENfREVMX1JLRVlfTUFYXFx0OFxcbisjZGVmaW5lIFNNQ19MTENfREVMX1JLRVlfVjJfSU5MSU5FXFx0OVxcbiAjZGVmaW5lIFNNQ19MTENfRkxBR19SS0VZX1JFVFJZXFx0MHgxMFxcbiAjZGVmaW5lIFNNQ19MTENfRkxBR19SS0VZX05FR1xcdDB4MjBcXG4gXFxuQEAgLTE3Nyw2ICsxNzgsMTUgQEAgc3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyIHtcXHQvKiB0eXBlIDB4MjkgKi9cXG4gXFx0X19iZTMyIHJrZXlbXTtcXG4gfTtcXG4gXFxuKy8qIHRoZSBsZWFkaW5nIHJrZXlzIG9mIGEgREVMRVRFX1JLRVlfVjIgZml0IGludG8gdW5pb24gc21jX2xsY19tc2cgKi9cXG4rc3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyX2lubGluZSB7XFx0LyogdHlwZSAweDI5ICovXFxuK1xcdHN0cnVjdCBzbWNfbGxjX2hkciBoZDtcXG4rXFx0dTggbnVtX3JrZXlzO1xcbitcXHR1OCBudW1faW52YWxfcmtleXM7XFxuK1xcdHU4IHJlc2VydmVkWzJdO1xcbitcXHRfX2JlMzIgcmtleVtTTUNfTExDX0RFTF9SS0VZX1YyX0lOTElORV07XFxuK307XFxuK1xcbiB1bmlvbiBzbWNfbGxjX21zZyB7XFxuIFxcdHN0cnVjdCBzbWNfbGxjX21zZ19jb25maXJtX2xpbmsgY29uZmlybV9saW5rO1xcbiBcXHRzdHJ1Y3Qgc21jX2xsY19tc2dfYWRkX2xpbmsgYWRkX2xpbms7XFxuQEAgLTE4Niw2ICsxOTYsNyBAQCB1bmlvbiBzbWNfbGxjX21zZyB7XFxuIFxcbiBcXHRzdHJ1Y3Qgc21jX2xsY19tc2dfY29uZmlybV9ya2V5IGNvbmZpcm1fcmtleTtcXG4gXFx0c3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5IGRlbGV0ZV9ya2V5O1xcbitcXHRzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXlfdjJfaW5saW5lIGRlbGV0ZV9ya2V5X3YyO1xcbiBcXG4gXFx0c3RydWN0IHNtY19sbGNfbXNnX3Rlc3RfbGluayB0ZXN0X2xpbms7XFxuIFxcdHN0cnVjdCB7XFxuQEAgLTE5NCwxNSArMjA1LDIzIEBAIHVuaW9uIHNtY19sbGNfbXNnIHtcXG4gXFx0fSByYXc7XFxuIH07XFxuIFxcbitzdGF0aWNfYXNzZXJ0KFNNQ19MTENfREVMX1JLRVlfVjJfSU5MSU5FID09XFxuK1xcdCAgICAgIChzaXplb2YodW5pb24gc21jX2xsY19tc2cpIC1cXG4rXFx0ICAgICAgIG9mZnNldG9mKHN0cnVjdCBzbWNfbGxjX21zZ19kZWxldGVfcmtleV92MiwgcmtleSkpIC9cXG4rXFx0ICAgICAgc2l6ZW9mKF9fYmUzMikpO1xcbitcXG4gI2RlZmluZSBTTUNfTExDX0ZMQUdfUkVTUFxcdFxcdDB4ODBcXG4gXFxuIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSB7XFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcXG4gXFx0c3RydWN0IHNtY19saW5rICpsaW5rO1xcbitcXHR1MTYgYm9keV9sZW47XFxuIFxcdHVuaW9uIHNtY19sbGNfbXNnIG1zZztcXG4rXFx0dTggYm9keVtdIF9fY291bnRlZF9ieShib2R5X2xlbik7XFxuIH07XFxuIFxcbi1zdGF0aWMgdm9pZCBzbWNfbGxjX2VucXVldWUoc3RydWN0IHNtY19saW5rICpsaW5rLCB1bmlvbiBzbWNfbGxjX21zZyAqbGxjKTtcXG4rc3RhdGljIHZvaWQgc21jX2xsY19lbnF1ZXVlKHN0cnVjdCBzbWNfbGluayAqbGluaywgdW5pb24gc21jX2xsY19tc2cgKmxsYyxcXG4rXFx0XFx0XFx0ICAgIHUzMiBieXRlX2xlbik7XFxuIFxcbiBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnNtY19sbGNfZmxvd19xZW50cnlfY2xyKHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpXFxuIHtcXG5AQCAtOTk4LDE1ICsxMDE3LDIwIEBAIHN0YXRpYyBpbnQgc21jX2xsY19jbGlfY29uZl9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4gXFxuIHN0YXRpYyB2b2lkIHNtY19sbGNfc2F2ZV9hZGRfbGlua19ya2V5cyhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuIFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBzbWNfbGluayAqbGlua19uZXcsXFxuLVxcdFxcdFxcdFxcdFxcdHU4ICpsbGNfbXNnKVxcbitcXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcXG4ge1xcbitcXHRjb25zdCB1MzIgcnRfb2ZmID0gb2Zmc2V0b2Yoc3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rX3YyX2V4dCwgcnQpO1xcbiBcXHRzdHJ1Y3Qgc21jX2xsY19tc2dfYWRkX2xpbmtfdjJfZXh0ICpleHQ7XFxuIFxcdHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyID0gbGluay1cXHUwMDNlbGdyO1xcbiBcXHRpbnQgbWF4LCBpO1xcbiBcXG4tXFx0ZXh0ID0gKHN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua192Ml9leHQgKikobGxjX21zZyArXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgU01DX1dSX1RYX1NJWkUpO1xcbitcXHQvKiB0aGUgcmtleSBjb3VudCBpdHNlbGYgaXMgb25seSB0aGVyZSBpZiBlbm91Z2ggYnl0ZXMgYXJyaXZlZCAqL1xcbitcXHRpZiAocWVudHJ5LVxcdTAwM2Vib2R5X2xlbiBcXHUwMDNjIHJ0X29mZilcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHRleHQgPSAoc3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rX3YyX2V4dCAqKXFlbnRyeS1cXHUwMDNlYm9keTtcXG4gXFx0bWF4ID0gbWluX3QodTgsIGV4dC1cXHUwMDNlbnVtX3JrZXlzLCBTTUNfTExDX1JLRVlTX1BFUl9NU0dfVjIpO1xcbitcXHRtYXggPSBtaW5fdCh1MzIsIG1heCwgKHFlbnRyeS1cXHUwMDNlYm9keV9sZW4gLSBydF9vZmYpIC9cXG4rXFx0XFx0XFx0ICAgICAgc2l6ZW9mKGV4dC1cXHUwMDNlcnRbMF0pKTtcXG4gXFx0ZG93bl93cml0ZShcXHUwMDI2bGdyLVxcdTAwM2VybWJzX2xvY2spO1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbWF4OyBpKyspIHtcXG4gXFx0XFx0c21jX3J0b2tlbl9zZXQobGdyLCBsaW5rLVxcdTAwM2VsaW5rX2lkeCwgbGlua19uZXctXFx1MDAzZWxpbmtfaWR4LFxcbkBAIC0xMDk5LDkgKzExMjMsNyBAQCBpbnQgc21jX2xsY19jbGlfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcXG4gXFx0aWYgKHJjKVxcbiBcXHRcXHRnb3RvIG91dF9jbGVhcl9sbms7XFxuIFxcdGlmIChsZ3ItXFx1MDAzZXNtY192ZXJzaW9uID09IFNNQ19WMikge1xcbi1cXHRcXHR1OCAqbGxjX21zZyA9IHNtY19saW5rX3NoYXJlZF92Ml9yeGJ1ZihsaW5rKSA/XFxuLVxcdFxcdFxcdCh1OCAqKWxnci1cXHUwMDNld3JfcnhfYnVmX3YyIDogKHU4ICopbGxjO1xcbi1cXHRcXHRzbWNfbGxjX3NhdmVfYWRkX2xpbmtfcmtleXMobGluaywgbG5rX25ldywgbGxjX21zZyk7XFxuK1xcdFxcdHNtY19sbGNfc2F2ZV9hZGRfbGlua19ya2V5cyhsaW5rLCBsbmtfbmV3LCBxZW50cnkpO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRyYyA9IHNtY19sbGNfY2xpX3JrZXlfZXhjaGFuZ2UobGluaywgbG5rX25ldyk7XFxuIFxcdFxcdGlmIChyYykge1xcbkBAIC0xNDgxLDcgKzE1MDMsNyBAQCBpbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbiBcXHR9XFxuIFxcdGFkZF9sbGMgPSBcXHUwMDI2cWVudHJ5LVxcdTAwM2Vtc2cuYWRkX2xpbms7XFxuIFxcdGlmIChhZGRfbGxjLVxcdTAwM2VoZC5mbGFncyBcXHUwMDI2IFNNQ19MTENfRkxBR19BRERfTE5LX1JFSikge1xcbi1cXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbitcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2NscihcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbiBcXHRcXHRyYyA9IC1FTk9MSU5LO1xcbiBcXHRcXHRnb3RvIG91dF9lcnI7XFxuIFxcdH1cXG5AQCAtMTQ5Miw3ICsxNTE0LDggQEAgaW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4gXFx0XFx0bGdyX25ld190ID0gU01DX0xHUl9BU1lNTUVUUklDX1BFRVI7XFxuIFxcdH1cXG4gXFx0c21jX2xsY19zYXZlX2FkZF9saW5rX2luZm8obGlua19uZXcsIGFkZF9sbGMpO1xcbi1cXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbitcXHQvKiBhZGRfbGxjIHN0aWxsIHBvaW50cyBpbnRvIHFlbnRyeSwgc28gb25seSBkZXRhY2ggaXQgaGVyZSAqL1xcbitcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2NscihcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbiBcXG4gXFx0cmMgPSBzbWNfaWJfcmVhZHlfbGluayhsaW5rX25ldyk7XFxuIFxcdGlmIChyYylcXG5AQCAtMTUwMSw5ICsxNTI0LDcgQEAgaW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4gXFx0aWYgKHJjKVxcbiBcXHRcXHRnb3RvIG91dF9lcnI7XFxuIFxcdGlmIChsZ3ItXFx1MDAzZXNtY192ZXJzaW9uID09IFNNQ19WMikge1xcbi1cXHRcXHR1OCAqbGxjX21zZyA9IHNtY19saW5rX3NoYXJlZF92Ml9yeGJ1ZihsaW5rKSA/XFxuLVxcdFxcdFxcdCh1OCAqKWxnci1cXHUwMDNld3JfcnhfYnVmX3YyIDogKHU4ICopYWRkX2xsYztcXG4tXFx0XFx0c21jX2xsY19zYXZlX2FkZF9saW5rX3JrZXlzKGxpbmssIGxpbmtfbmV3LCBsbGNfbXNnKTtcXG4rXFx0XFx0c21jX2xsY19zYXZlX2FkZF9saW5rX3JrZXlzKGxpbmssIGxpbmtfbmV3LCBxZW50cnkpO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRyYyA9IHNtY19sbGNfc3J2X3JrZXlfZXhjaGFuZ2UobGluaywgbGlua19uZXcpO1xcbiBcXHRcXHRpZiAocmMpXFxuQEAgLTE1MTIsNiArMTUzMyw3IEBAIGludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuIFxcdHJjID0gc21jX2xsY19zcnZfY29uZl9saW5rKGxpbmssIGxpbmtfbmV3LCBsZ3JfbmV3X3QpO1xcbiBcXHRpZiAocmMpXFxuIFxcdFxcdGdvdG8gb3V0X2VycjtcXG4rXFx0a2ZyZWUocWVudHJ5KTtcXG4gXFx0a2ZyZWUoaW5pKTtcXG4gXFx0cmV0dXJuIDA7XFxuIG91dF9lcnI6XFxuQEAgLTE1MjAsNiArMTU0Miw3IEBAIGludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuIFxcdFxcdHNtY3JfbGlua19jbGVhcihsaW5rX25ldywgZmFsc2UpO1xcbiBcXHR9XFxuIG91dDpcXG4rXFx0a2ZyZWUocWVudHJ5KTtcXG4gXFx0a2ZyZWUoaW5pKTtcXG4gXFx0aWYgKHNlbmRfcmVxX2FkZF9saW5rX3Jlc3ApXFxuIFxcdFxcdHNtY19sbGNfc2VuZF9yZXFfYWRkX2xpbmtfcmVzcG9uc2UocmVxX3FlbnRyeSk7XFxuQEAgLTE1NTIsNyArMTU3NSw4IEBAIHZvaWQgc21jX2xsY19hZGRfbGlua19sb2NhbChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXFxuIFxcdGFkZF9sbGMuaGQuY29tbW9uLmxsY190eXBlID0gU01DX0xMQ19BRERfTElOSztcXG4gXFx0c21jX2xsY19pbml0X21zZ19oZHIoXFx1MDAyNmFkZF9sbGMuaGQsIGxpbmstXFx1MDAzZWxnciwgc2l6ZW9mKGFkZF9sbGMpKTtcXG4gXFx0Lyogbm8gZGV2IGFuZCBwb3J0IG5lZWRlZCAqL1xcbi1cXHRzbWNfbGxjX2VucXVldWUobGluaywgKHVuaW9uIHNtY19sbGNfbXNnICopXFx1MDAyNmFkZF9sbGMpO1xcbitcXHRzbWNfbGxjX2VucXVldWUobGluaywgKHVuaW9uIHNtY19sbGNfbXNnICopXFx1MDAyNmFkZF9sbGMsXFxuK1xcdFxcdFxcdHNpemVvZih1bmlvbiBzbWNfbGxjX21zZykpO1xcbiB9XFxuIFxcbiAvKiB3b3JrZXIgdG8gcHJvY2VzcyBhbiBhZGQgbGluayBtZXNzYWdlICovXFxuQEAgLTE1ODgsNyArMTYxMiw4IEBAIHZvaWQgc21jX2xsY19zcnZfZGVsZXRlX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rLCB1OCBkZWxfbGlua19pZClcXG4gXFx0ZGVsX2xsYy5saW5rX251bSA9IGRlbF9saW5rX2lkO1xcbiBcXHRkZWxfbGxjLnJlYXNvbiA9IGh0b25sKFNNQ19MTENfREVMX0xPU1RfUEFUSCk7XFxuIFxcdGRlbF9sbGMuaGQuZmxhZ3MgfD0gU01DX0xMQ19GTEFHX0RFTF9MSU5LX09SREVSTFk7XFxuLVxcdHNtY19sbGNfZW5xdWV1ZShsaW5rLCAodW5pb24gc21jX2xsY19tc2cgKilcXHUwMDI2ZGVsX2xsYyk7XFxuK1xcdHNtY19sbGNfZW5xdWV1ZShsaW5rLCAodW5pb24gc21jX2xsY19tc2cgKilcXHUwMDI2ZGVsX2xsYyxcXG4rXFx0XFx0XFx0c2l6ZW9mKHVuaW9uIHNtY19sbGNfbXNnKSk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19jbGlfZGVsZXRlX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxuQEAgLTE4MTAsMTkgKzE4MzUsMjggQEAgc3RhdGljIHZvaWQgc21jX2xsY19ybXRfZGVsZXRlX3JrZXkoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxuIFxcdGxpbmsgPSBxZW50cnktXFx1MDAzZWxpbms7XFxuIFxcbiBcXHRpZiAobGdyLVxcdTAwM2VzbWNfdmVyc2lvbiA9PSBTTUNfVjIpIHtcXG4tXFx0XFx0c3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyICpsbGN2MjtcXG4rXFx0XFx0c3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyX2lubGluZSAqbGxjdjI7XFxuIFxcbi1cXHRcXHRpZiAoc21jX2xpbmtfc2hhcmVkX3YyX3J4YnVmKGxpbmspKSB7XFxuLVxcdFxcdFxcdG1lbWNweShsZ3ItXFx1MDAzZXdyX3J4X2J1Zl92MiwgbGxjLCBzaXplb2YoKmxsYykpO1xcbi1cXHRcXHRcXHRsbGN2MiA9IChzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXlfdjIgKilsZ3ItXFx1MDAzZXdyX3J4X2J1Zl92MjtcXG4tXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0bGxjdjIgPSAoc3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyICopbGxjO1xcbi1cXHRcXHR9XFxuK1xcdFxcdC8qIFRoZSBsZWFkaW5nIFNNQ19MTENfREVMX1JLRVlfVjJfSU5MSU5FIHJrZXlzIGFyZSBkZWNsYXJlZCBpblxcbitcXHRcXHQgKiB0aGUgbWVzc2FnZSBpdHNlbGYsIGFueSBmdXJ0aGVyIG9uZXMgd2VyZSByZWNlaXZlZCBpbnRvXFxuK1xcdFxcdCAqIHFlbnRyeS1cXHUwMDNlYm9keS5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGxsY3YyID0gXFx1MDAyNnFlbnRyeS1cXHUwMDNlbXNnLmRlbGV0ZV9ya2V5X3YyO1xcbiBcXHRcXHRsbGN2Mi1cXHUwMDNlbnVtX2ludmFsX3JrZXlzID0gMDtcXG4gXFxuIFxcdFxcdG1heCA9IG1pbl90KHU4LCBsbGN2Mi1cXHUwMDNlbnVtX3JrZXlzLCBTTUNfTExDX1JLRVlTX1BFUl9NU0dfVjIpO1xcbitcXHRcXHRtYXggPSBtaW5fdCh1MzIsIG1heCwgU01DX0xMQ19ERUxfUktFWV9WMl9JTkxJTkUgK1xcbitcXHRcXHRcXHRcXHQgICAgICBxZW50cnktXFx1MDAzZWJvZHlfbGVuIC8gc2l6ZW9mKF9fYmUzMikpO1xcbiBcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbWF4OyBpKyspIHtcXG4tXFx0XFx0XFx0aWYgKHNtY19ydG9rZW5fZGVsZXRlKGxpbmssIGxsY3YyLVxcdTAwM2Vya2V5W2ldKSlcXG4rXFx0XFx0XFx0X19iZTMyIHJrZXk7XFxuK1xcbitcXHRcXHRcXHRpZiAoaSBcXHUwMDNjIFNNQ19MTENfREVMX1JLRVlfVjJfSU5MSU5FKVxcbitcXHRcXHRcXHRcXHRya2V5ID0gbGxjdjItXFx1MDAzZXJrZXlbaV07XFxuK1xcdFxcdFxcdGVsc2VcXG4rXFx0XFx0XFx0XFx0bWVtY3B5KFxcdTAwMjZya2V5LCBxZW50cnktXFx1MDAzZWJvZHkgK1xcbitcXHRcXHRcXHRcXHRcXHQgICAgICAoaSAtIFNNQ19MTENfREVMX1JLRVlfVjJfSU5MSU5FKSAqXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIHNpemVvZihya2V5KSwgc2l6ZW9mKHJrZXkpKTtcXG4rXFx0XFx0XFx0aWYgKHNtY19ydG9rZW5fZGVsZXRlKGxpbmssIHJrZXkpKVxcbiBcXHRcXHRcXHRcXHRsbGN2Mi1cXHUwMDNlbnVtX2ludmFsX3JrZXlzKys7XFxuIFxcdFxcdH1cXG4gXFx0XFx0bWVtc2V0KFxcdTAwMjZsbGMtXFx1MDAzZXJrZXlbMF0sIDAsIHNpemVvZihsbGMtXFx1MDAzZXJrZXkpKTtcXG5AQCAtMjA2MywxOCArMjA5NywzNSBAQCBzdGF0aWMgdm9pZCBzbWNfbGxjX3J4X3Jlc3BvbnNlKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4gXFx0d2FrZV91cChcXHUwMDI2bGluay1cXHUwMDNlbGdyLVxcdTAwM2VsbGNfbXNnX3dhaXRlcik7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIHNtY19sbGNfZW5xdWV1ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHVuaW9uIHNtY19sbGNfbXNnICpsbGMpXFxuK3N0YXRpYyB2b2lkIHNtY19sbGNfZW5xdWV1ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHVuaW9uIHNtY19sbGNfbXNnICpsbGMsXFxuK1xcdFxcdFxcdCAgICB1MzIgYnl0ZV9sZW4pXFxuIHtcXG4gXFx0c3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IgPSBsaW5rLVxcdTAwM2VsZ3I7XFxuIFxcdHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5O1xcbiBcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbitcXHR1MTYgYm9keV9sZW4gPSAwO1xcbiBcXG4tXFx0cWVudHJ5ID0ga21hbGxvY19vYmooKnFlbnRyeSwgR0ZQX0FUT01JQyk7XFxuK1xcdC8qIFYyIG1lc3NhZ2VzIGNhbiBiZSBsb25nZXIgdGhhbiB0aGUgaW5saW5lIHVuaW9uIHNtY19sbGNfbXNnLiBDYXJyeVxcbitcXHQgKiB0aGUgcmVtYWluZGVyIGluIHRoZSBxZW50cnkgaXRzZWxmLCBzbyB0aGF0IGl0cyBsaWZldGltZSBhbmQgaXRzXFxuK1xcdCAqIGxlbmd0aCBtYXRjaCB0aGUgbWVzc2FnZSB0aGUgcGVlciBhY3R1YWxseSBzZW50LlxcbitcXHQgKi9cXG4rXFx0aWYgKGxnci1cXHUwMDNlc21jX3ZlcnNpb24gPT0gU01DX1YyIFxcdTAwMjZcXHUwMDI2IGJ5dGVfbGVuIFxcdTAwM2UgU01DX1dSX1RYX1NJWkUpXFxuK1xcdFxcdGJvZHlfbGVuID0gbWluX3QodTMyLCBieXRlX2xlbiwgU01DX1dSX0JVRl9WMl9TSVpFKSAtXFxuK1xcdFxcdFxcdCAgIFNNQ19XUl9UWF9TSVpFO1xcbitcXG4rXFx0cWVudHJ5ID0ga21hbGxvY19mbGV4KCpxZW50cnksIGJvZHksIGJvZHlfbGVuLCBHRlBfQVRPTUlDKTtcXG4gXFx0aWYgKCFxZW50cnkpXFxuIFxcdFxcdHJldHVybjtcXG4rXFx0cWVudHJ5LVxcdTAwM2Vib2R5X2xlbiA9IGJvZHlfbGVuO1xcbiBcXHRxZW50cnktXFx1MDAzZWxpbmsgPSBsaW5rO1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2cWVudHJ5LVxcdTAwM2VsaXN0KTtcXG4gXFx0bWVtY3B5KFxcdTAwMjZxZW50cnktXFx1MDAzZW1zZywgbGxjLCBzaXplb2YodW5pb24gc21jX2xsY19tc2cpKTtcXG4rXFx0aWYgKGJvZHlfbGVuKSB7XFxuK1xcdFxcdHU4ICpzcmMgPSBzbWNfbGlua19zaGFyZWRfdjJfcnhidWYobGluaykgP1xcbitcXHRcXHRcXHQodTggKilsZ3ItXFx1MDAzZXdyX3J4X2J1Zl92MiA6ICh1OCAqKWxsYztcXG4rXFxuK1xcdFxcdG1lbWNweShxZW50cnktXFx1MDAzZWJvZHksIHNyYyArIFNNQ19XUl9UWF9TSVpFLCBib2R5X2xlbik7XFxuK1xcdH1cXG4gXFxuIFxcdC8qIHByb2Nlc3MgcmVzcG9uc2VzIGltbWVkaWF0ZWx5ICovXFxuIFxcdGlmICgobGxjLVxcdTAwM2VyYXcuaGRyLmZsYWdzIFxcdTAwMjYgU01DX0xMQ19GTEFHX1JFU1ApIFxcdTAwMjZcXHUwMDI2XFxuQEAgLTIxMDYsNyArMjE1Nyw3IEBAIHN0YXRpYyB2b2lkIHNtY19sbGNfcnhfaGFuZGxlcihzdHJ1Y3QgaWJfd2MgKndjLCB2b2lkICpidWYpXFxuIFxcdFxcdFxcdHJldHVybjsgLyogaW52YWxpZCBtZXNzYWdlICovXFxuIFxcdH1cXG4gXFxuLVxcdHNtY19sbGNfZW5xdWV1ZShsaW5rLCBsbGMpO1xcbitcXHRzbWNfbGxjX2VucXVldWUobGluaywgbGxjLCB3Yy1cXHUwMDNlYnl0ZV9sZW4pO1xcbiB9XFxuIFxcbiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogd29ya2VyLCB1dGlscyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE1OjA1OjM5LjM3MDM0MzMyNFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM2NjI2MDAwODI3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfbGxjX2NsaV9hZGRfbGlua1wiLFxuICAgIFwic21jX2xsY19zcnZfYWRkX2xpbmtcIixcbiAgICBcInNtY19sbGNfYWRkX2xpbmtfbG9jYWxcIixcbiAgICBcInNtY19sbGNfc3J2X2RlbGV0ZV9saW5rX2xvY2FsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgaG93IFNNQyBMTEMgbWVzc2FnZXMgYXJlIGVucXVldWVkIGFuZCBwcm9jZXNzZWQsIHNwZWNpZmljYWxseSBmb3IgU01DX1YyIHdoZXJlIG1lc3NhZ2VzIGNhbiBiZSBsb25nZXIgdGhhbiBgdW5pb24gc21jX2xsY19tc2dgLiBJdCBpbnRyb2R1Y2VzIGBib2R5X2xlbmAgYW5kIGEgZmxleGlibGUgYXJyYXkgYGJvZHlbXWAgaW4gYHN0cnVjdCBzbWNfbGxjX3FlbnRyeWAgdG8gc3RvcmUgdGhlIGV4dHJhIGJ5dGVzIG9mIFYyIG1lc3NhZ2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFNNQyAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykgc3Vic3lzdGVtLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBBRl9TTUMgc29ja2V0cyBhbmQgc29mdHdhcmUgUkRNQS9JU00gZGV2aWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNmMzOGYzYzNkNjA0YjkzMzhlMWYyN2VkNjYyOTM0NDFiODM3NTI3MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMTU6MDU6MzggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19sbGMuYyBiL25ldC9zbWMvc21jX2xsYy5jXG5pbmRleCA5NTRiMmZmMTgxNWMyLi4xYjE1MzE3M2RkNTE2IDEwMDY0NFxuLS0tIGEvbmV0L3NtYy9zbWNfbGxjLmNcbisrKyBiL25ldC9zbWMvc21jX2xsYy5jXG5AQCAtMTU3LDYgKzE1Nyw3IEBAIHN0cnVjdCBzbWNfbGxjX21zZ19jb25maXJtX3JrZXkge1x0LyogdHlwZSAweDA2ICovXG4gfTtcbiBcbiAjZGVmaW5lIFNNQ19MTENfREVMX1JLRVlfTUFYXHQ4XG4rI2RlZmluZSBTTUNfTExDX0RFTF9SS0VZX1YyX0lOTElORVx0OVxuICNkZWZpbmUgU01DX0xMQ19GTEFHX1JLRVlfUkVUUllcdDB4MTBcbiAjZGVmaW5lIFNNQ19MTENfRkxBR19SS0VZX05FR1x0MHgyMFxuIFxuQEAgLTE3Nyw2ICsxNzgsMTUgQEAgc3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyIHtcdC8qIHR5cGUgMHgyOSAqL1xuIFx0X19iZTMyIHJrZXlbXTtcbiB9O1xuIFxuKy8qIHRoZSBsZWFkaW5nIHJrZXlzIG9mIGEgREVMRVRFX1JLRVlfVjIgZml0IGludG8gdW5pb24gc21jX2xsY19tc2cgKi9cbitzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXlfdjJfaW5saW5lIHtcdC8qIHR5cGUgMHgyOSAqL1xuK1x0c3RydWN0IHNtY19sbGNfaGRyIGhkO1xuK1x0dTggbnVtX3JrZXlzO1xuK1x0dTggbnVtX2ludmFsX3JrZXlzO1xuK1x0dTggcmVzZXJ2ZWRbMl07XG4rXHRfX2JlMzIgcmtleVtTTUNfTExDX0RFTF9SS0VZX1YyX0lOTElORV07XG4rfTtcbitcbiB1bmlvbiBzbWNfbGxjX21zZyB7XG4gXHRzdHJ1Y3Qgc21jX2xsY19tc2dfY29uZmlybV9saW5rIGNvbmZpcm1fbGluaztcbiBcdHN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGluayBhZGRfbGluaztcbkBAIC0xODYsNiArMTk2LDcgQEAgdW5pb24gc21jX2xsY19tc2cge1xuIFxuIFx0c3RydWN0IHNtY19sbGNfbXNnX2NvbmZpcm1fcmtleSBjb25maXJtX3JrZXk7XG4gXHRzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXkgZGVsZXRlX3JrZXk7XG4rXHRzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXlfdjJfaW5saW5lIGRlbGV0ZV9ya2V5X3YyO1xuIFxuIFx0c3RydWN0IHNtY19sbGNfbXNnX3Rlc3RfbGluayB0ZXN0X2xpbms7XG4gXHRzdHJ1Y3Qge1xuQEAgLTE5NCwxNSArMjA1LDIzIEBAIHVuaW9uIHNtY19sbGNfbXNnIHtcbiBcdH0gcmF3O1xuIH07XG4gXG4rc3RhdGljX2Fzc2VydChTTUNfTExDX0RFTF9SS0VZX1YyX0lOTElORSA9PVxuK1x0ICAgICAgKHNpemVvZih1bmlvbiBzbWNfbGxjX21zZykgLVxuK1x0ICAgICAgIG9mZnNldG9mKHN0cnVjdCBzbWNfbGxjX21zZ19kZWxldGVfcmtleV92MiwgcmtleSkpIC9cbitcdCAgICAgIHNpemVvZihfX2JlMzIpKTtcbitcbiAjZGVmaW5lIFNNQ19MTENfRkxBR19SRVNQXHRcdDB4ODBcbiBcbiBzdHJ1Y3Qgc21jX2xsY19xZW50cnkge1xuIFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuIFx0c3RydWN0IHNtY19saW5rICpsaW5rO1xuK1x0dTE2IGJvZHlfbGVuO1xuIFx0dW5pb24gc21jX2xsY19tc2cgbXNnO1xuK1x0dTggYm9keVtdIF9fY291bnRlZF9ieShib2R5X2xlbik7XG4gfTtcbiBcbi1zdGF0aWMgdm9pZCBzbWNfbGxjX2VucXVldWUoc3RydWN0IHNtY19saW5rICpsaW5rLCB1bmlvbiBzbWNfbGxjX21zZyAqbGxjKTtcbitzdGF0aWMgdm9pZCBzbWNfbGxjX2VucXVldWUoc3RydWN0IHNtY19saW5rICpsaW5rLCB1bmlvbiBzbWNfbGxjX21zZyAqbGxjLFxuK1x0XHRcdCAgICB1MzIgYnl0ZV9sZW4pO1xuIFxuIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqc21jX2xsY19mbG93X3FlbnRyeV9jbHIoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdylcbiB7XG5AQCAtOTk4LDE1ICsxMDE3LDIwIEBAIHN0YXRpYyBpbnQgc21jX2xsY19jbGlfY29uZl9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcbiBzdGF0aWMgdm9pZCBzbWNfbGxjX3NhdmVfYWRkX2xpbmtfcmtleXMoc3RydWN0IHNtY19saW5rICpsaW5rLFxuIFx0XHRcdFx0XHRzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3LFxuLVx0XHRcdFx0XHR1OCAqbGxjX21zZylcbitcdFx0XHRcdFx0c3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXG4ge1xuK1x0Y29uc3QgdTMyIHJ0X29mZiA9IG9mZnNldG9mKHN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua192Ml9leHQsIHJ0KTtcbiBcdHN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua192Ml9leHQgKmV4dDtcbiBcdHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyID0gbGluay1cdTAwM2VsZ3I7XG4gXHRpbnQgbWF4LCBpO1xuIFxuLVx0ZXh0ID0gKHN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua192Ml9leHQgKikobGxjX21zZyArXG4tXHRcdFx0XHRcdFx0ICAgICBTTUNfV1JfVFhfU0laRSk7XG4rXHQvKiB0aGUgcmtleSBjb3VudCBpdHNlbGYgaXMgb25seSB0aGVyZSBpZiBlbm91Z2ggYnl0ZXMgYXJyaXZlZCAqL1xuK1x0aWYgKHFlbnRyeS1cdTAwM2Vib2R5X2xlbiBcdTAwM2MgcnRfb2ZmKVxuK1x0XHRyZXR1cm47XG4rXHRleHQgPSAoc3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rX3YyX2V4dCAqKXFlbnRyeS1cdTAwM2Vib2R5O1xuIFx0bWF4ID0gbWluX3QodTgsIGV4dC1cdTAwM2VudW1fcmtleXMsIFNNQ19MTENfUktFWVNfUEVSX01TR19WMik7XG4rXHRtYXggPSBtaW5fdCh1MzIsIG1heCwgKHFlbnRyeS1cdTAwM2Vib2R5X2xlbiAtIHJ0X29mZikgL1xuK1x0XHRcdCAgICAgIHNpemVvZihleHQtXHUwMDNlcnRbMF0pKTtcbiBcdGRvd25fd3JpdGUoXHUwMDI2bGdyLVx1MDAzZXJtYnNfbG9jayk7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBtYXg7IGkrKykge1xuIFx0XHRzbWNfcnRva2VuX3NldChsZ3IsIGxpbmstXHUwMDNlbGlua19pZHgsIGxpbmtfbmV3LVx1MDAzZWxpbmtfaWR4LFxuQEAgLTEwOTksOSArMTEyMyw3IEBAIGludCBzbWNfbGxjX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxuIFx0aWYgKHJjKVxuIFx0XHRnb3RvIG91dF9jbGVhcl9sbms7XG4gXHRpZiAobGdyLVx1MDAzZXNtY192ZXJzaW9uID09IFNNQ19WMikge1xuLVx0XHR1OCAqbGxjX21zZyA9IHNtY19saW5rX3NoYXJlZF92Ml9yeGJ1ZihsaW5rKSA/XG4tXHRcdFx0KHU4ICopbGdyLVx1MDAzZXdyX3J4X2J1Zl92MiA6ICh1OCAqKWxsYztcbi1cdFx0c21jX2xsY19zYXZlX2FkZF9saW5rX3JrZXlzKGxpbmssIGxua19uZXcsIGxsY19tc2cpO1xuK1x0XHRzbWNfbGxjX3NhdmVfYWRkX2xpbmtfcmtleXMobGluaywgbG5rX25ldywgcWVudHJ5KTtcbiBcdH0gZWxzZSB7XG4gXHRcdHJjID0gc21jX2xsY19jbGlfcmtleV9leGNoYW5nZShsaW5rLCBsbmtfbmV3KTtcbiBcdFx0aWYgKHJjKSB7XG5AQCAtMTQ4MSw3ICsxNTAzLDcgQEAgaW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcdH1cbiBcdGFkZF9sbGMgPSBcdTAwMjZxZW50cnktXHUwMDNlbXNnLmFkZF9saW5rO1xuIFx0aWYgKGFkZF9sbGMtXHUwMDNlaGQuZmxhZ3MgXHUwMDI2IFNNQ19MTENfRkxBR19BRERfTE5LX1JFSikge1xuLVx0XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbitcdFx0c21jX2xsY19mbG93X3FlbnRyeV9jbHIoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG4gXHRcdHJjID0gLUVOT0xJTks7XG4gXHRcdGdvdG8gb3V0X2VycjtcbiBcdH1cbkBAIC0xNDkyLDcgKzE1MTQsOCBAQCBpbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxuIFx0XHRsZ3JfbmV3X3QgPSBTTUNfTEdSX0FTWU1NRVRSSUNfUEVFUjtcbiBcdH1cbiBcdHNtY19sbGNfc2F2ZV9hZGRfbGlua19pbmZvKGxpbmtfbmV3LCBhZGRfbGxjKTtcbi1cdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xuK1x0LyogYWRkX2xsYyBzdGlsbCBwb2ludHMgaW50byBxZW50cnksIHNvIG9ubHkgZGV0YWNoIGl0IGhlcmUgKi9cbitcdHNtY19sbGNfZmxvd19xZW50cnlfY2xyKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xuIFxuIFx0cmMgPSBzbWNfaWJfcmVhZHlfbGluayhsaW5rX25ldyk7XG4gXHRpZiAocmMpXG5AQCAtMTUwMSw5ICsxNTI0LDcgQEAgaW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcdGlmIChyYylcbiBcdFx0Z290byBvdXRfZXJyO1xuIFx0aWYgKGxnci1cdTAwM2VzbWNfdmVyc2lvbiA9PSBTTUNfVjIpIHtcbi1cdFx0dTggKmxsY19tc2cgPSBzbWNfbGlua19zaGFyZWRfdjJfcnhidWYobGluaykgP1xuLVx0XHRcdCh1OCAqKWxnci1cdTAwM2V3cl9yeF9idWZfdjIgOiAodTggKilhZGRfbGxjO1xuLVx0XHRzbWNfbGxjX3NhdmVfYWRkX2xpbmtfcmtleXMobGluaywgbGlua19uZXcsIGxsY19tc2cpO1xuK1x0XHRzbWNfbGxjX3NhdmVfYWRkX2xpbmtfcmtleXMobGluaywgbGlua19uZXcsIHFlbnRyeSk7XG4gXHR9IGVsc2Uge1xuIFx0XHRyYyA9IHNtY19sbGNfc3J2X3JrZXlfZXhjaGFuZ2UobGluaywgbGlua19uZXcpO1xuIFx0XHRpZiAocmMpXG5AQCAtMTUxMiw2ICsxNTMzLDcgQEAgaW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcdHJjID0gc21jX2xsY19zcnZfY29uZl9saW5rKGxpbmssIGxpbmtfbmV3LCBsZ3JfbmV3X3QpO1xuIFx0aWYgKHJjKVxuIFx0XHRnb3RvIG91dF9lcnI7XG4rXHRrZnJlZShxZW50cnkpO1xuIFx0a2ZyZWUoaW5pKTtcbiBcdHJldHVybiAwO1xuIG91dF9lcnI6XG5AQCAtMTUyMCw2ICsxNTQyLDcgQEAgaW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcdFx0c21jcl9saW5rX2NsZWFyKGxpbmtfbmV3LCBmYWxzZSk7XG4gXHR9XG4gb3V0OlxuK1x0a2ZyZWUocWVudHJ5KTtcbiBcdGtmcmVlKGluaSk7XG4gXHRpZiAoc2VuZF9yZXFfYWRkX2xpbmtfcmVzcClcbiBcdFx0c21jX2xsY19zZW5kX3JlcV9hZGRfbGlua19yZXNwb25zZShyZXFfcWVudHJ5KTtcbkBAIC0xNTUyLDcgKzE1NzUsOCBAQCB2b2lkIHNtY19sbGNfYWRkX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rKVxuIFx0YWRkX2xsYy5oZC5jb21tb24ubGxjX3R5cGUgPSBTTUNfTExDX0FERF9MSU5LO1xuIFx0c21jX2xsY19pbml0X21zZ19oZHIoXHUwMDI2YWRkX2xsYy5oZCwgbGluay1cdTAwM2VsZ3IsIHNpemVvZihhZGRfbGxjKSk7XG4gXHQvKiBubyBkZXYgYW5kIHBvcnQgbmVlZGVkICovXG4tXHRzbWNfbGxjX2VucXVldWUobGluaywgKHVuaW9uIHNtY19sbGNfbXNnICopXHUwMDI2YWRkX2xsYyk7XG4rXHRzbWNfbGxjX2VucXVldWUobGluaywgKHVuaW9uIHNtY19sbGNfbXNnICopXHUwMDI2YWRkX2xsYyxcbitcdFx0XHRzaXplb2YodW5pb24gc21jX2xsY19tc2cpKTtcbiB9XG4gXG4gLyogd29ya2VyIHRvIHByb2Nlc3MgYW4gYWRkIGxpbmsgbWVzc2FnZSAqL1xuQEAgLTE1ODgsNyArMTYxMiw4IEBAIHZvaWQgc21jX2xsY19zcnZfZGVsZXRlX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rLCB1OCBkZWxfbGlua19pZClcbiBcdGRlbF9sbGMubGlua19udW0gPSBkZWxfbGlua19pZDtcbiBcdGRlbF9sbGMucmVhc29uID0gaHRvbmwoU01DX0xMQ19ERUxfTE9TVF9QQVRIKTtcbiBcdGRlbF9sbGMuaGQuZmxhZ3MgfD0gU01DX0xMQ19GTEFHX0RFTF9MSU5LX09SREVSTFk7XG4tXHRzbWNfbGxjX2VucXVldWUobGluaywgKHVuaW9uIHNtY19sbGNfbXNnICopXHUwMDI2ZGVsX2xsYyk7XG4rXHRzbWNfbGxjX2VucXVldWUobGluaywgKHVuaW9uIHNtY19sbGNfbXNnICopXHUwMDI2ZGVsX2xsYyxcbitcdFx0XHRzaXplb2YodW5pb24gc21jX2xsY19tc2cpKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX2NsaV9kZWxldGVfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbkBAIC0xODEwLDE5ICsxODM1LDI4IEBAIHN0YXRpYyB2b2lkIHNtY19sbGNfcm10X2RlbGV0ZV9ya2V5KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxuIFx0bGluayA9IHFlbnRyeS1cdTAwM2VsaW5rO1xuIFxuIFx0aWYgKGxnci1cdTAwM2VzbWNfdmVyc2lvbiA9PSBTTUNfVjIpIHtcbi1cdFx0c3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyICpsbGN2MjtcbitcdFx0c3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyX2lubGluZSAqbGxjdjI7XG4gXG4tXHRcdGlmIChzbWNfbGlua19zaGFyZWRfdjJfcnhidWYobGluaykpIHtcbi1cdFx0XHRtZW1jcHkobGdyLVx1MDAzZXdyX3J4X2J1Zl92MiwgbGxjLCBzaXplb2YoKmxsYykpO1xuLVx0XHRcdGxsY3YyID0gKHN0cnVjdCBzbWNfbGxjX21zZ19kZWxldGVfcmtleV92MiAqKWxnci1cdTAwM2V3cl9yeF9idWZfdjI7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0bGxjdjIgPSAoc3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5X3YyICopbGxjO1xuLVx0XHR9XG4rXHRcdC8qIFRoZSBsZWFkaW5nIFNNQ19MTENfREVMX1JLRVlfVjJfSU5MSU5FIHJrZXlzIGFyZSBkZWNsYXJlZCBpblxuK1x0XHQgKiB0aGUgbWVzc2FnZSBpdHNlbGYsIGFueSBmdXJ0aGVyIG9uZXMgd2VyZSByZWNlaXZlZCBpbnRvXG4rXHRcdCAqIHFlbnRyeS1cdTAwM2Vib2R5LlxuK1x0XHQgKi9cbitcdFx0bGxjdjIgPSBcdTAwMjZxZW50cnktXHUwMDNlbXNnLmRlbGV0ZV9ya2V5X3YyO1xuIFx0XHRsbGN2Mi1cdTAwM2VudW1faW52YWxfcmtleXMgPSAwO1xuIFxuIFx0XHRtYXggPSBtaW5fdCh1OCwgbGxjdjItXHUwMDNlbnVtX3JrZXlzLCBTTUNfTExDX1JLRVlTX1BFUl9NU0dfVjIpO1xuK1x0XHRtYXggPSBtaW5fdCh1MzIsIG1heCwgU01DX0xMQ19ERUxfUktFWV9WMl9JTkxJTkUgK1xuK1x0XHRcdFx0ICAgICAgcWVudHJ5LVx1MDAzZWJvZHlfbGVuIC8gc2l6ZW9mKF9fYmUzMikpO1xuIFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBtYXg7IGkrKykge1xuLVx0XHRcdGlmIChzbWNfcnRva2VuX2RlbGV0ZShsaW5rLCBsbGN2Mi1cdTAwM2Vya2V5W2ldKSlcbitcdFx0XHRfX2JlMzIgcmtleTtcbitcbitcdFx0XHRpZiAoaSBcdTAwM2MgU01DX0xMQ19ERUxfUktFWV9WMl9JTkxJTkUpXG4rXHRcdFx0XHRya2V5ID0gbGxjdjItXHUwMDNlcmtleVtpXTtcbitcdFx0XHRlbHNlXG4rXHRcdFx0XHRtZW1jcHkoXHUwMDI2cmtleSwgcWVudHJ5LVx1MDAzZWJvZHkgK1xuK1x0XHRcdFx0XHQgICAgICAoaSAtIFNNQ19MTENfREVMX1JLRVlfVjJfSU5MSU5FKSAqXG4rXHRcdFx0XHRcdCAgICAgIHNpemVvZihya2V5KSwgc2l6ZW9mKHJrZXkpKTtcbitcdFx0XHRpZiAoc21jX3J0b2tlbl9kZWxldGUobGluaywgcmtleSkpXG4gXHRcdFx0XHRsbGN2Mi1cdTAwM2VudW1faW52YWxfcmtleXMrKztcbiBcdFx0fVxuIFx0XHRtZW1zZXQoXHUwMDI2bGxjLVx1MDAzZXJrZXlbMF0sIDAsIHNpemVvZihsbGMtXHUwMDNlcmtleSkpO1xuQEAgLTIwNjMsMTggKzIwOTcsMzUgQEAgc3RhdGljIHZvaWQgc21jX2xsY19yeF9yZXNwb25zZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4gXHR3YWtlX3VwKFx1MDAyNmxpbmstXHUwMDNlbGdyLVx1MDAzZWxsY19tc2dfd2FpdGVyKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgc21jX2xsY19lbnF1ZXVlKHN0cnVjdCBzbWNfbGluayAqbGluaywgdW5pb24gc21jX2xsY19tc2cgKmxsYylcbitzdGF0aWMgdm9pZCBzbWNfbGxjX2VucXVldWUoc3RydWN0IHNtY19saW5rICpsaW5rLCB1bmlvbiBzbWNfbGxjX21zZyAqbGxjLFxuK1x0XHRcdCAgICB1MzIgYnl0ZV9sZW4pXG4ge1xuIFx0c3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IgPSBsaW5rLVx1MDAzZWxncjtcbiBcdHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5O1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcbitcdHUxNiBib2R5X2xlbiA9IDA7XG4gXG4tXHRxZW50cnkgPSBrbWFsbG9jX29iaigqcWVudHJ5LCBHRlBfQVRPTUlDKTtcbitcdC8qIFYyIG1lc3NhZ2VzIGNhbiBiZSBsb25nZXIgdGhhbiB0aGUgaW5saW5lIHVuaW9uIHNtY19sbGNfbXNnLiBDYXJyeVxuK1x0ICogdGhlIHJlbWFpbmRlciBpbiB0aGUgcWVudHJ5IGl0c2VsZiwgc28gdGhhdCBpdHMgbGlmZXRpbWUgYW5kIGl0c1xuK1x0ICogbGVuZ3RoIG1hdGNoIHRoZSBtZXNzYWdlIHRoZSBwZWVyIGFjdHVhbGx5IHNlbnQuXG4rXHQgKi9cbitcdGlmIChsZ3ItXHUwMDNlc21jX3ZlcnNpb24gPT0gU01DX1YyIFx1MDAyNlx1MDAyNiBieXRlX2xlbiBcdTAwM2UgU01DX1dSX1RYX1NJWkUpXG4rXHRcdGJvZHlfbGVuID0gbWluX3QodTMyLCBieXRlX2xlbiwgU01DX1dSX0JVRl9WMl9TSVpFKSAtXG4rXHRcdFx0ICAgU01DX1dSX1RYX1NJWkU7XG4rXG4rXHRxZW50cnkgPSBrbWFsbG9jX2ZsZXgoKnFlbnRyeSwgYm9keSwgYm9keV9sZW4sIEdGUF9BVE9NSUMpO1xuIFx0aWYgKCFxZW50cnkpXG4gXHRcdHJldHVybjtcbitcdHFlbnRyeS1cdTAwM2Vib2R5X2xlbiA9IGJvZHlfbGVuO1xuIFx0cWVudHJ5LVx1MDAzZWxpbmsgPSBsaW5rO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2cWVudHJ5LVx1MDAzZWxpc3QpO1xuIFx0bWVtY3B5KFx1MDAyNnFlbnRyeS1cdTAwM2Vtc2csIGxsYywgc2l6ZW9mKHVuaW9uIHNtY19sbGNfbXNnKSk7XG4rXHRpZiAoYm9keV9sZW4pIHtcbitcdFx0dTggKnNyYyA9IHNtY19saW5rX3NoYXJlZF92Ml9yeGJ1ZihsaW5rKSA/XG4rXHRcdFx0KHU4ICopbGdyLVx1MDAzZXdyX3J4X2J1Zl92MiA6ICh1OCAqKWxsYztcbitcbitcdFx0bWVtY3B5KHFlbnRyeS1cdTAwM2Vib2R5LCBzcmMgKyBTTUNfV1JfVFhfU0laRSwgYm9keV9sZW4pO1xuK1x0fVxuIFxuIFx0LyogcHJvY2VzcyByZXNwb25zZXMgaW1tZWRpYXRlbHkgKi9cbiBcdGlmICgobGxjLVx1MDAzZXJhdy5oZHIuZmxhZ3MgXHUwMDI2IFNNQ19MTENfRkxBR19SRVNQKSBcdTAwMjZcdTAwMjZcbkBAIC0yMTA2LDcgKzIxNTcsNyBAQCBzdGF0aWMgdm9pZCBzbWNfbGxjX3J4X2hhbmRsZXIoc3RydWN0IGliX3djICp3Yywgdm9pZCAqYnVmKVxuIFx0XHRcdHJldHVybjsgLyogaW52YWxpZCBtZXNzYWdlICovXG4gXHR9XG4gXG4tXHRzbWNfbGxjX2VucXVldWUobGluaywgbGxjKTtcbitcdHNtY19sbGNfZW5xdWV1ZShsaW5rLCBsbGMsIHdjLVx1MDAzZWJ5dGVfbGVuKTtcbiB9XG4gXG4gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqIHdvcmtlciwgdXRpbHMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTU6MDU6MzkuMzcwMzQ0ODc0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTMzMjU2OTk4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCB0byB0aGUgU01DIExMQyBTdWJzeXN0ZW0qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIG1vZGlmeWluZyBgbmV0L3NtYy9zbWNfbGxjLmNgLiBJdCBzZWVtcyB0byBiZSBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBTTUNfVjIsIGRlYWxpbmcgd2l0aCBMTEMgbWVzc2FnZXMgdGhhdCBleGNlZWQgdGhlIHNpemUgbGltaXRhdGlvbnMgb2YgYHVuaW9uIHNtY19sbGNfbXNnYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgaG93IHRoZXNlIGxvbmdlciBtZXNzYWdlcyBhcmUgaGFuZGxlZCB3aXRoaW4gdGhlIGBzbWNfbGxjX3FlbnRyeWAgc3RydWN0dXJlLiBUaGV5J3ZlIGludHJvZHVjZWQgYGJvZHlfbGVuYCBhbmQgYSBmbGV4aWJsZSBhcnJheSBgYm9keVtdYCBpbiBgc3RydWN0IHNtY19sbGNfcWVudHJ5YCB0byBhY2NvbW1vZGF0ZSB0aGUgZXh0cmEgYnl0ZXMuIFRoaXMgbWVhbnMgYHNtY19sbGNfZW5xdWV1ZWAgbm93IGFjY291bnRzIGZvciB0aGlzIGFuZCBhbGxvY2F0ZXMgdGhlIGBxZW50cnlgIGFjY29yZGluZ2x5LCB0YWtpbmcgYGJ5dGVfbGVuYCBpbnRvIGFjY291bnQuIFRoZSBmdW5jdGlvbnMgYHNtY19sbGNfc2F2ZV9hZGRfbGlua19ya2V5c2AgYW5kIGBzbWNfbGxjX3JtdF9kZWxldGVfcmtleWAgaGF2ZSBiZWVuIHVwZGF0ZWQgdG8gcmVhZCB0aGUgZGF0YSBkaXJlY3RseSBmcm9tIGBxZW50cnktXHUwMDNlYm9keWAgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBhIHNoYXJlZCBidWZmZXIuXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIHNpZ25pZmljYW50IGNoYW5nZSB0byBob3cgU01DIExMQyBtZXNzYWdlcywgcGFydGljdWxhcmx5IGluIFYyLCBhcmUgbWFuYWdlZC4gU01DLCBhcyBhIG5ldHdvcmsgcHJvdG9jb2wsIGlzIGludGVyZXN0aW5nIGJlY2F1c2Ugb2YgaXRzIHNoYXJlZCBtZW1vcnkgY2hhcmFjdGVyaXN0aWNzLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSByZWFjaCB0aGlzIG5ldyBjb2RlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGFuZCBob3cgZWFzaWx5IGNhbiB3ZSB0ZXN0IGl0P1xuXG5NeSBpbml0aWFsIHRob3VnaHRzIGFyZSwgeWVzLCB3ZSBjYW4gcmVhY2ggaXQuIEkga25vdyBTTUMgY2FuIGJlIHRlc3RlZCB1c2luZyBgQUZfU01DYCBzb2NrZXRzLiBUaGVyZSdzIHRoZSBzb2Z0d2FyZSBJU00gZGV2aWNlIGFuZCBsb29wYmFjayBkZXZpY2VzIGxpa2UgYGxvb3BiYWNrLWlzbWAgYW5kIGBzbWNfbG9vcGJhY2tgLiBBbHNvLCBzeXprYWxsZXIgZnV6emVzIFNNQyB2aWEgYEFGX1NNQ2Agc29ja2V0cy4gVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgZG9lcyBzeXprYWxsZXIgdGFyZ2V0IHRoaXMgc3BlY2lmaWMgY29kZT9cblxuQSBxdWljayBjaGVjayBjb25maXJtcyB0aGF0IHN5emthbGxlciAqZG9lcyogaGF2ZSBTTUMgZGVzY3JpcHRpb25zLCB3aGljaCBpcyBhIGdvb2Qgc2lnbi4gRGlnZ2luZyBkZWVwZXIsIEkgc2VlIHRoYXQgYHNtY19sbGNfZW5xdWV1ZWAgaXMgY2FsbGVkIGZyb20gYHNtY19sbGNfcnhfaGFuZGxlcmAuIGBzbWNfbGxjX3J4X2hhbmRsZXJgIGlzIHRoZSBJQiB3b3JrIGNvbXBsZXRpb24gaGFuZGxlciBmb3IgTExDIG1lc3NhZ2VzLiBTbywgdGhlc2UgTExDIG1lc3NhZ2VzIGFyZSByZWNlaXZlZCBvdmVyIGFuIElCIHF1ZXVlIHBhaXIuIElmIHdlIGhhdmUgYSBzb2Z0d2FyZSBSRE1BIGRldmljZSBsaWtlIGByeGVgIG9yIGBzaXdgIChTb2Z0aVdBUlApIGNvbmZpZ3VyZWQsIGl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUuIEFuZCwgaW1wb3J0YW50bHksIHN5emthbGxlciBzdXBwb3J0cyBib3RoIGByeGVgIGFuZCBgc2l3YC4gU01DIGFsc28gc3VwcG9ydHMgSVNNLiBTbywgd2UncmUgbG9va2luZyBhdCBTTUMgb3ZlciBgcnhlYCBvciBgc2l3YCwgd2hpY2ggc3l6a2FsbGVyIGFsc28gZnV6enplcy5cblxuVG8gZnVydGhlciByZWZpbmUgbXkgYW5hbHlzaXMsIEkgc2hvdWxkIGlkZW50aWZ5IGtleSBzeW1ib2xzIHRvIGZvY3VzIG9uOiBgc21jX2xsY19lbnF1ZXVlYCwgYHNtY19sbGNfc2F2ZV9hZGRfbGlua19ya2V5c2AsIGBzbWNfbGxjX3JtdF9kZWxldGVfcmtleWAsIGBzbWNfbGxjX3J4X2hhbmRsZXJgLCBgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBhbmQgYHNtY19sbGNfc3J2X2FkZF9saW5rYC4gSSBuZWVkIHRvIGNoZWNrIGBuZXQvc21jL3NtY19sbGMuY2AgdG8gc2VlIGlmIHRoZXkncmUgc3RhdGljIG9yIGV4cG9ydGVkIGFuZCBkZXRlcm1pbmUgd2hpY2ggb25lcyBhcmUgdGhlIG1vc3QgdmFsdWFibGUgdG8gc2NydXRpbml6ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk0NywiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE1OjA1OjQ4LjcwMjkyMTUzNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjE4NDM4MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihzdGF0aWMgKT8oaW50fHZvaWQpIHNtY19sbGNfLipcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL3NtY19sbGMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL3NtY19sbGMuYz0yMTU9c3RydWN0IHNtY19sbGNfcWVudHJ5IHtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyMi1cXG5uZXQvc21jL3NtY19sbGMuYzoyMjM6c3RhdGljIHZvaWQgc21jX2xsY19lbnF1ZXVlKHN0cnVjdCBzbWNfbGluayAqbGluaywgdW5pb24gc21jX2xsY19tc2cgKmxsYyxcXG5uZXQvc21jL3NtY19sbGMuYy0yMjQtXFx0XFx0XFx0ICAgIHUzMiBieXRlX2xlbik7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0yMjY9c3RydWN0IHNtY19sbGNfcWVudHJ5ICpzbWNfbGxjX2Zsb3dfcWVudHJ5X2NscihzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93KVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjMzLVxcbm5ldC9zbWMvc21jX2xsYy5jOjIzNDp2b2lkIHNtY19sbGNfZmxvd19xZW50cnlfZGVsKHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpXFxubmV0L3NtYy9zbWNfbGxjLmMtMjM1LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTI0NT1zdGF0aWMgaW5saW5lIHZvaWQgc21jX2xsY19mbG93X3FlbnRyeV9zZXQoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdyxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTI1MC1cXG5uZXQvc21jL3NtY19sbGMuYzoyNTE6c3RhdGljIHZvaWQgc21jX2xsY19mbG93X3BhcmFsbGVsKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCB1OCBmbG93X3R5cGUsXFxubmV0L3NtYy9zbWNfbGxjLmMtMjUyLVxcdFxcdFxcdFxcdCAgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0yNzM9c3RhdGljIGJvb2wgc21jX2xsY19mbG93X3N0YXJ0KHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3csXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0zMDQtLyogc3RhcnQgYSBuZXcgbG9jYWwgbGxjIGZsb3csIHdhaXQgdGlsbCBjdXJyZW50IGZsb3cgZmluaXNoZWQgKi9cXG5uZXQvc21jL3NtY19sbGMuYzozMDU6aW50IHNtY19sbGNfZmxvd19pbml0aWF0ZShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG5uZXQvc21jL3NtY19sbGMuYy0zMDYtXFx0XFx0XFx0ICBlbnVtIHNtY19sbGNfZmxvd3R5cGUgdHlwZSlcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTMzOC0vKiBmaW5pc2ggdGhlIGN1cnJlbnQgbGxjIGZsb3cgKi9cXG5uZXQvc21jL3NtY19sbGMuYzozMzk6dm9pZCBzbWNfbGxjX2Zsb3dfc3RvcChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdylcXG5uZXQvc21jL3NtY19sbGMuYy0zNDAte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9Mzk1PXN0cnVjdCBzbWNfbGxjX3R4X3BlbmQge1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMzk4LS8qIGhhbmRsZXIgZm9yIHNlbmQvdHJhbnNtaXNzaW9uIGNvbXBsZXRpb24gb2YgYW4gTExDIG1zZyAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjM5OTpzdGF0aWMgdm9pZCBzbWNfbGxjX3R4X2hhbmRsZXIoc3RydWN0IHNtY193cl90eF9wZW5kX3ByaXYgKnBlbmQsXFxubmV0L3NtYy9zbWNfbGxjLmMtNDAwLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy00MTgtICovXFxubmV0L3NtYy9zbWNfbGxjLmM6NDE5OnN0YXRpYyBpbnQgc21jX2xsY19hZGRfcGVuZGluZ19zZW5kKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy00MjAtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBzbWNfd3JfYnVmICoqd3JfYnVmLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtNDQwLVxcbm5ldC9zbWMvc21jX2xsYy5jOjQ0MTpzdGF0aWMgaW50IHNtY19sbGNfYWRkX3BlbmRpbmdfc2VuZF92MihzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9zbWNfbGxjLmMtNDQyLVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc21jX3dyX3YyX2J1ZiAqKndyX2J1ZixcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTQ1Mi1cXG5uZXQvc21jL3NtY19sbGMuYzo0NTM6c3RhdGljIHZvaWQgc21jX2xsY19pbml0X21zZ19oZHIoc3RydWN0IHNtY19sbGNfaGRyICpoZHIsXFxubmV0L3NtYy9zbWNfbGxjLmMtNDU0LVxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc2l6ZV90IGxlbilcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTQ2NS0vKiBoaWdoLWxldmVsIEFQSSB0byBzZW5kIExMQyBjb25maXJtIGxpbmsgKi9cXG5uZXQvc21jL3NtY19sbGMuYzo0NjY6aW50IHNtY19sbGNfc2VuZF9jb25maXJtX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbm5ldC9zbWMvc21jX2xsYy5jLTQ2Ny1cXHRcXHRcXHQgICAgICBlbnVtIHNtY19sbGNfcmVxcmVzcCByZXFyZXNwKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtNTA1LS8qIHNlbmQgTExDIGNvbmZpcm0gcmtleSByZXF1ZXN0ICovXFxubmV0L3NtYy9zbWNfbGxjLmM6NTA2OnN0YXRpYyBpbnQgc21jX2xsY19zZW5kX2NvbmZpcm1fcmtleShzdHJ1Y3Qgc21jX2xpbmsgKnNlbmRfbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy01MDctXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTU1NC0vKiBzZW5kIExMQyBkZWxldGUgcmtleSByZXF1ZXN0ICovXFxubmV0L3NtYy9zbWNfbGxjLmM6NTU1OnN0YXRpYyBpbnQgc21jX2xsY19zZW5kX2RlbGV0ZV9ya2V5KHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy01NTYtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnJtYl9kZXNjKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9NjE1PXN0YXRpYyBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpzbWNfbGxjX2dldF9maXJzdF9ybWIoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy02MjEtXFxubmV0L3NtYy9zbWNfbGxjLmM6NjIyOnN0YXRpYyBpbnQgc21jX2xsY19maWxsX2V4dF92MihzdHJ1Y3Qgc21jX2xsY19tc2dfYWRkX2xpbmtfdjJfZXh0ICpleHQsXFxubmV0L3NtYy9zbWNfbGxjLmMtNjIzLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfbGluayAqbGlua19uZXcpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy02NjEtLyogc2VuZCBBREQgTElOSyByZXF1ZXN0IG9yIHJlc3BvbnNlICovXFxubmV0L3NtYy9zbWNfbGxjLmM6NjYyOmludCBzbWNfbGxjX3NlbmRfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCB1OCBtYWNbXSwgdTggZ2lkW10sXFxubmV0L3NtYy9zbWNfbGxjLmMtNjYzLVxcdFxcdFxcdCAgc3RydWN0IHNtY19saW5rICpsaW5rX25ldyxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTcyMi0vKiBzZW5kIERFTEVURSBMSU5LIHJlcXVlc3Qgb3IgcmVzcG9uc2UgKi9cXG5uZXQvc21jL3NtY19sbGMuYzo3MjM6aW50IHNtY19sbGNfc2VuZF9kZWxldGVfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHU4IGxpbmtfZGVsX2lkLFxcbm5ldC9zbWMvc21jX2xsYy5jLTcyNC1cXHRcXHRcXHQgICAgIGVudW0gc21jX2xsY19yZXFyZXNwIHJlcXJlc3AsIGJvb2wgb3JkZXJseSxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTc1OC0vKiBzZW5kIExMQyB0ZXN0IGxpbmsgcmVxdWVzdCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjc1OTpzdGF0aWMgaW50IHNtY19sbGNfc2VuZF90ZXN0X2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCB1OCB1c2VyX2RhdGFbMTZdKVxcbm5ldC9zbWMvc21jX2xsYy5jLTc2MC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy03ODMtLyogc2NoZWR1bGUgYW4gbGxjIHNlbmQgb24gbGluaywgbWF5IHdhaXQgZm9yIGJ1ZmZlcnMgKi9cXG5uZXQvc21jL3NtY19sbGMuYzo3ODQ6c3RhdGljIGludCBzbWNfbGxjX3NlbmRfbWVzc2FnZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHZvaWQgKmxsY2J1ZilcXG5uZXQvc21jL3NtY19sbGMuYy03ODUte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtODA1LSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjgwNjpzdGF0aWMgaW50IHNtY19sbGNfc2VuZF9tZXNzYWdlX3dhaXQoc3RydWN0IHNtY19saW5rICpsaW5rLCB2b2lkICpsbGNidWYpXFxubmV0L3NtYy9zbWNfbGxjLmMtODA3LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTgyNS1cXG5uZXQvc21jL3NtY19sbGMuYzo4MjY6c3RhdGljIGludCBzbWNfbGxjX2FsbG9jX2FsdF9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxcbm5ldC9zbWMvc21jX2xsYy5jLTgyNy1cXHRcXHRcXHRcXHQgIGVudW0gc21jX2xncl90eXBlIGxncl9uZXdfdClcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTg1MC0vKiBzZW5kIG9uZSBhZGRfbGlua19jb250aW51ZSBtc2cgKi9cXG5uZXQvc21jL3NtY19sbGMuYzo4NTE6c3RhdGljIGludCBzbWNfbGxjX2FkZF9saW5rX2NvbnQoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbm5ldC9zbWMvc21jX2xsYy5jLTg1Mi1cXHRcXHRcXHRcXHQgc3RydWN0IHNtY19saW5rICpsaW5rX25ldywgdTggKm51bV9ya2V5c190b2RvLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtOTA1LVxcbm5ldC9zbWMvc21jX2xsYy5jOjkwNjpzdGF0aWMgaW50IHNtY19sbGNfY2xpX3JrZXlfZXhjaGFuZ2Uoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbm5ldC9zbWMvc21jX2xsYy5jLTkwNy1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBzbWNfbGluayAqbGlua19uZXcpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy05NDktLyogcHJlcGFyZSBhbmQgc2VuZCBhbiBhZGQgbGluayByZWplY3QgcmVzcG9uc2UgKi9cXG5uZXQvc21jL3NtY19sbGMuYzo5NTA6c3RhdGljIGludCBzbWNfbGxjX2NsaV9hZGRfbGlua19yZWplY3Qoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXFxubmV0L3NtYy9zbWNfbGxjLmMtOTUxLXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTk1OS1cXG5uZXQvc21jL3NtY19sbGMuYzo5NjA6c3RhdGljIGludCBzbWNfbGxjX2NsaV9jb25mX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbm5ldC9zbWMvc21jX2xsYy5jLTk2MS1cXHRcXHRcXHRcXHQgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTEwMTctXFxubmV0L3NtYy9zbWNfbGxjLmM6MTAxODpzdGF0aWMgdm9pZCBzbWNfbGxjX3NhdmVfYWRkX2xpbmtfcmtleXMoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbm5ldC9zbWMvc21jX2xsYy5jLTEwMTktXFx0XFx0XFx0XFx0XFx0c3RydWN0IHNtY19saW5rICpsaW5rX25ldyxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTEwNDMtXFxubmV0L3NtYy9zbWNfbGxjLmM6MTA0NDpzdGF0aWMgdm9pZCBzbWNfbGxjX3NhdmVfYWRkX2xpbmtfaW5mbyhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9zbWNfbGxjLmMtMTA0NS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rICphZGRfbGxjKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTA1NC0vKiBhcyBhbiBTTUMgY2xpZW50LCBwcm9jZXNzIGFuIGFkZCBsaW5rIHJlcXVlc3QgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxMDU1OmludCBzbWNfbGxjX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbm5ldC9zbWMvc21jX2xsYy5jLTEwNTYte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTE0Ny1cXG5uZXQvc21jL3NtY19sbGMuYzoxMTQ4OnN0YXRpYyB2b2lkIHNtY19sbGNfc2VuZF9yZXF1ZXN0X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaylcXG5uZXQvc21jL3NtY19sbGMuYy0xMTQ5LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTExODYtLyogYXMgYW4gU01DIGNsaWVudCwgaW52aXRlIHNlcnZlciB0byBzdGFydCB0aGUgYWRkX2xpbmsgcHJvY2Vzc2luZyAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjExODc6c3RhdGljIHZvaWQgc21jX2xsY19jbGlfYWRkX2xpbmtfaW52aXRlKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy0xMTg4LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTIzMT1zdGF0aWMgYm9vbCBzbWNfbGxjX2lzX2xvY2FsX2FkZF9saW5rKHVuaW9uIHNtY19sbGNfbXNnICpsbGMpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMjM4LVxcbm5ldC9zbWMvc21jX2xsYy5jOjEyMzk6c3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG5uZXQvc21jL3NtY19sbGMuYy0xMjQwLXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTEyNTItXFxubmV0L3NtYy9zbWNfbGxjLmM6MTI1MzpzdGF0aWMgaW50IHNtY19sbGNfYWN0aXZlX2xpbmtfY291bnQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxubmV0L3NtYy9zbWNfbGxjLmMtMTI1NC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xMjY2PXN0YXRpYyBzdHJ1Y3Qgc21jX2xpbmsgKnNtY19sbGNfZmluZF9hc3ltX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMzA5LVxcbm5ldC9zbWMvc21jX2xsYy5jOjEzMTA6c3RhdGljIHZvaWQgc21jX2xsY19kZWxldGVfYXN5bV9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbm5ldC9zbWMvc21jX2xsYy5jLTEzMTEte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTM0My1cXG5uZXQvc21jL3NtY19sbGMuYzoxMzQ0OnN0YXRpYyBpbnQgc21jX2xsY19zcnZfcmtleV9leGNoYW5nZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9zbWNfbGxjLmMtMTM0NS1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBzbWNfbGluayAqbGlua19uZXcpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMzg0LVxcbm5ldC9zbWMvc21jX2xsYy5jOjEzODU6c3RhdGljIGludCBzbWNfbGxjX3Nydl9jb25mX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbm5ldC9zbWMvc21jX2xsYy5jLTEzODYtXFx0XFx0XFx0XFx0IHN0cnVjdCBzbWNfbGluayAqbGlua19uZXcsXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNDE4LVxcbm5ldC9zbWMvc21jX2xsYy5jOjE0MTk6c3RhdGljIHZvaWQgc21jX2xsY19zZW5kX3JlcV9hZGRfbGlua19yZXNwb25zZShzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcXG5uZXQvc21jL3NtY19sbGMuYy0xNDIwLXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE0MjctXFxubmV0L3NtYy9zbWNfbGxjLmM6MTQyODppbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbm5ldC9zbWMvc21jX2xsYy5jLTE0MjktXFx0XFx0XFx0IHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcmVxX3FlbnRyeSlcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE1NTEtXFxubmV0L3NtYy9zbWNfbGxjLmM6MTU1MjpzdGF0aWMgdm9pZCBzbWNfbGxjX3Byb2Nlc3Nfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE1NTMte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTU3MC0vKiBlbnF1ZXVlIGEgbG9jYWwgYWRkX2xpbmsgcmVxIHRvIHRyaWdnZXIgYSBuZXcgYWRkX2xpbmsgZmxvdyAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjE1NzE6dm9pZCBzbWNfbGxjX2FkZF9saW5rX2xvY2FsKHN0cnVjdCBzbWNfbGluayAqbGluaylcXG5uZXQvc21jL3NtY19sbGMuYy0xNTcyLXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE1ODItLyogd29ya2VyIHRvIHByb2Nlc3MgYW4gYWRkIGxpbmsgbWVzc2FnZSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjE1ODM6c3RhdGljIHZvaWQgc21jX2xsY19hZGRfbGlua193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvc21jL3NtY19sbGMuYy0xNTg0LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE2MDUtICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTYwNjp2b2lkIHNtY19sbGNfc3J2X2RlbGV0ZV9saW5rX2xvY2FsKHN0cnVjdCBzbWNfbGluayAqbGluaywgdTggZGVsX2xpbmtfaWQpXFxubmV0L3NtYy9zbWNfbGxjLmMtMTYwNy17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNjE4LVxcbm5ldC9zbWMvc21jX2xsYy5jOjE2MTk6c3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX2NsaV9kZWxldGVfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG5uZXQvc21jL3NtY19sbGMuYy0xNjIwLXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE2NzYtICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTY3Nzp2b2lkIHNtY19sbGNfc2VuZF9saW5rX2RlbGV0ZV9hbGwoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGJvb2wgb3JkLCB1MzIgcnNuKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE2Nzgte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTY5Ni1cXG5uZXQvc21jL3NtY19sbGMuYzoxNjk3OnN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19zcnZfZGVsZXRlX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxubmV0L3NtYy9zbWNfbGxjLmMtMTY5OC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNzY0LVxcbm5ldC9zbWMvc21jX2xsYy5jOjE3NjU6c3RhdGljIHZvaWQgc21jX2xsY19kZWxldGVfbGlua193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvc21jL3NtY19sbGMuYy0xNzY2LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE3ODQtLyogcHJvY2VzcyBhIGNvbmZpcm1fcmtleSByZXF1ZXN0IGZyb20gcGVlciwgcmVtb3RlIGZsb3cgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxNzg1OnN0YXRpYyB2b2lkIHNtY19sbGNfcm10X2NvbmZfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG5uZXQvc21jL3NtY19sbGMuYy0xNzg2LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE4MjQtLyogcHJvY2VzcyBhIGRlbGV0ZV9ya2V5IHJlcXVlc3QgZnJvbSBwZWVyLCByZW1vdGUgZmxvdyAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjE4MjU6c3RhdGljIHZvaWQgc21jX2xsY19ybXRfZGVsZXRlX3JrZXkoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxubmV0L3NtYy9zbWNfbGxjLmMtMTgyNi17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xODg2LVxcbm5ldC9zbWMvc21jX2xsYy5jOjE4ODc6c3RhdGljIHZvaWQgc21jX2xsY19wcm90b2NvbF92aW9sYXRpb24oc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIHU4IHR5cGUpXFxubmV0L3NtYy9zbWNfbGxjLmMtMTg4OC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xODk2LS8qIGZsdXNoIHRoZSBsbGMgZXZlbnQgcXVldWUgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxODk3OnN0YXRpYyB2b2lkIHNtY19sbGNfZXZlbnRfZmx1c2goc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxubmV0L3NtYy9zbWNfbGxjLmMtMTg5OC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xOTA4LVxcbm5ldC9zbWMvc21jX2xsYy5jOjE5MDk6c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF9oYW5kbGVyKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbm5ldC9zbWMvc21jX2xsYy5jLTE5MTAte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjAyNy0vKiB3b3JrZXIgdG8gcHJvY2VzcyBsbGMgbWVzc2FnZXMgb24gdGhlIGV2ZW50IHF1ZXVlICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MjAyODpzdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9zbWMvc21jX2xsYy5jLTIwMjkte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjA1Ni0vKiBwcm9jZXNzIGxsYyByZXNwb25zZXMgaW4gdGFza2xldCBjb250ZXh0ICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MjA1NzpzdGF0aWMgdm9pZCBzbWNfbGxjX3J4X3Jlc3BvbnNlKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy0yMDU4LVxcdFxcdFxcdFxcdHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjA5OS1cXG5uZXQvc21jL3NtY19sbGMuYzoyMTAwOnN0YXRpYyB2b2lkIHNtY19sbGNfZW5xdWV1ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHVuaW9uIHNtY19sbGNfbXNnICpsbGMsXFxubmV0L3NtYy9zbWNfbGxjLmMtMjEwMS1cXHRcXHRcXHQgICAgdTMyIGJ5dGVfbGVuKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjE0NC0vKiBjb3B5IHJlY2VpdmVkIG1zZyBhbmQgYWRkIGl0IHRvIHRoZSBldmVudCBxdWV1ZSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIxNDU6c3RhdGljIHZvaWQgc21jX2xsY19yeF9oYW5kbGVyKHN0cnVjdCBpYl93YyAqd2MsIHZvaWQgKmJ1ZilcXG5uZXQvc21jL3NtY19sbGMuYy0yMTQ2LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIxNjQtXFxubmV0L3NtYy9zbWNfbGxjLmM6MjE2NTpzdGF0aWMgdm9pZCBzbWNfbGxjX3Rlc3RsaW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9zbWMvc21jX2xsYy5jLTIxNjYte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjE5Ni1cXG5uZXQvc21jL3NtY19sbGMuYzoyMTk3OnZvaWQgc21jX2xsY19sZ3JfaW5pdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19zb2NrICpzbWMpXFxubmV0L3NtYy9zbWNfbGxjLmMtMjE5OC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMjE1LS8qIGNhbGxlZCBhZnRlciBsZ3Igd2FzIHJlbW92ZWQgZnJvbSBsZ3JfbGlzdCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIyMTY6dm9pZCBzbWNfbGxjX2xncl9jbGVhcihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG5uZXQvc21jL3NtY19sbGMuYy0yMjE3LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyMjktXFxubmV0L3NtYy9zbWNfbGxjLmM6MjIzMDppbnQgc21jX2xsY19saW5rX2luaXQoc3RydWN0IHNtY19saW5rICpsaW5rKVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyMzEte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjIzNi1cXG5uZXQvc21jL3NtY19sbGMuYzoyMjM3OnZvaWQgc21jX2xsY19saW5rX2FjdGl2ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXFxubmV0L3NtYy9zbWNfbGxjLmMtMjIzOC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMjU0LS8qIGNhbGxlZCBpbiB3b3JrZXIgY29udGV4dCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIyNTU6dm9pZCBzbWNfbGxjX2xpbmtfY2xlYXIoc3RydWN0IHNtY19saW5rICpsaW5rLCBib29sIGxvZylcXG5uZXQvc21jL3NtY19sbGMuYy0yMjU2LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyNjktLyogcmVnaXN0ZXIgYSBuZXcgcnRva2VuIGF0IHRoZSByZW1vdGUgcGVlciAoZm9yIGFsbCBsaW5rcykgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoyMjcwOmludCBzbWNfbGxjX2RvX2NvbmZpcm1fcmtleShzdHJ1Y3Qgc21jX2xpbmsgKnNlbmRfbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy0yMjcxLVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyOTEtLyogdW5yZWdpc3RlciBhbiBydG9rZW4gYXQgdGhlIHJlbW90ZSBwZWVyICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MjI5MjppbnQgc21jX2xsY19kb19kZWxldGVfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG5uZXQvc21jL3NtY19sbGMuYy0yMjkzLVxcdFxcdFxcdCAgIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnJtYl9kZXNjKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjMxNy1cXG5uZXQvc21jL3NtY19sbGMuYzoyMzE4OnZvaWQgc21jX2xsY19saW5rX3NldF91aWQoc3RydWN0IHNtY19saW5rICpsaW5rKVxcbm5ldC9zbWMvc21jX2xsYy5jLTIzMTkte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjMyNi0vKiBzYXZlIHBlZXJzIGxpbmsgdXNlciBpZCwgdXNlZCBmb3IgZGVidWcgcHVycG9zZXMgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoyMzI3OnZvaWQgc21jX2xsY19zYXZlX3BlZXJfdWlkKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbm5ldC9zbWMvc21jX2xsYy5jLTIzMjgte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjMzMy0vKiBldmFsdWF0ZSBjb25maXJtIGxpbmsgcmVxdWVzdCBvciByZXNwb25zZSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIzMzQ6aW50IHNtY19sbGNfZXZhbF9jb25mX2xpbmsoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnksXFxubmV0L3NtYy9zbWNfbGxjLmMtMjMzNS1cXHRcXHRcXHQgICBlbnVtIHNtY19sbGNfcmVxcmVzcCB0eXBlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNTowNTo0OC45NjQ3NzE5NDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzY1MDIwMDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBTTUMgTGluayBNYW5hZ2VtZW50IEZ1bmN0aW9ucyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gdGhlc2UgZnVuY3Rpb24gbW9kaWZpY2F0aW9ucy4gRmlyc3QsIEkndmUgZ290IGEgbGlzdCBvZiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zOiBgc21jX2xsY19lbnF1ZXVlYCAoc3RhdGljKSwgYHNtY19sbGNfc2F2ZV9hZGRfbGlua19ya2V5c2AgKHN0YXRpYyksIGFuZCB0aGVuIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGBzbWNfbGxjX3Nydl9hZGRfbGlua2AsIGBzbWNfbGxjX2FkZF9saW5rX2xvY2FsYCwgYW5kIGBzbWNfbGxjX3Nydl9kZWxldGVfbGlua19sb2NhbGAg4oCTIHRob3NlIGxhc3QgZm91ciwgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciB0aGV5J3JlIGV4cG9ydGVkIG9yIG5vbi1zdGF0aWMsIHNvIEkgY2FuIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2VzLiBBaCwgeWVzLCBjb25maXJtZWQsIHRoZXkgKmFyZSogbm9uLXN0YXRpYyBhbmQgZXhwb3J0ZWQuXG5cbkdvb2QsIG5vdyBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGFyZSBnb29kIGZvY3VzIHN5bWJvbHMuIEFuZCB0aGVuIEkgaGF2ZSBgc21jX2xsY19ybXRfZGVsZXRlX3JrZXlgIChzdGF0aWMpIHRvIGNvbnNpZGVyLiBXYWl0LCBJIGFsc28gbmVlZCB0byBtYWtlIGEgbm90ZSB0aGF0IGBzbWNfbGxjX3J4X2hhbmRsZXJgIGlzIHN0YXRpYyBhbmQgZ2V0cyBjYWxsZWQgZnJvbSBhbiBJQiB3b3JrIGNvbXBsZXRpb24sIHNvIHRoYXQgbmVlZHMgdG8gYmUgY29uc2lkZXJlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBvdGhlcnMuXG5cbkFscmlnaHQsIGBzbWNfbGxjX2NsaV9hZGRfbGlua2Agc2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGRldGFpbGVkIGFuYWx5c2lzLCBhbmQgc28gZG9lcyBgc21jX2xsY19zcnZfYWRkX2xpbmtgLiBJIG5lZWQgdG8gY29uc3VsdCB0aGUgS2NvbmZpZyBmb3IgU01DIGNvbmZpZ3VyYXRpb25zIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlc2UgbW9kaWZpY2F0aW9ucywgYnV0IHRoaXMgZ2l2ZXMgbWUgYSBzb2xpZCBmcmFtZXdvcmsgZm9yIGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNTY5LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE1OjA1OjU0LjMyOTc5NDUzMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzU1NzAzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU01DXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvc21jL0tjb25maWc6Mjpjb25maWcgU01DXFxubmV0L3NtYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XFxcIlxcbi0tXFxubmV0L3NtYy9LY29uZmlnLTEzLVxcbm5ldC9zbWMvS2NvbmZpZzoxNDpjb25maWcgU01DX0RJQUdcXG5uZXQvc21jL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIlNNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L3NtYy9LY29uZmlnLTIyLVxcbm5ldC9zbWMvS2NvbmZpZzoyMzpjb25maWcgU01DX0hTX0NUUkxfQlBGXFxubmV0L3NtYy9LY29uZmlnLTI0LVxcdGJvb2wgXFxcIkdlbmVyaWMgZUJQRiBob29rIGZvciBTTUMgaGFuZHNoYWtlIGZsb3dcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE1OjA1OjU0LjM3NzM2MTY4OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMjU0NzQ5OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgU01DIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBhbiBgU01DYCBjb25maWd1cmF0aW9uLiBGaXJzdCwgbGV0J3MganVzdCBjb25maXJtIHRoYXQncyB0aGUgb25seSBvbmUgd2UncmUgZGVhbGluZyB3aXRoIHJpZ2h0IG5vdyDigJMgYXJlIHRoZXJlIGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIGZsb2F0aW5nIGFyb3VuZCB0aGF0IGNvdWxkIGltcGFjdCBpdD8gTmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbXBsZXRlIHBpY3R1cmUuIE9rYXksIGdvb2QuXG5cbk5vdywgbGV0J3MgZGl2ZSBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgYFNNQ2AgY29uZmlndXJhdGlvbi4gTXkgdXN1YWwgZ28tdG8gZm9yIHRoaXMgdHlwZSBvZiBkZXBlbmRlbmN5IGFuYWx5c2lzIGlzIHRoZSBgbmV0L3NtYy9LY29uZmlnYCBmaWxlLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBpbnRlcmNvbm5lY3Rpb25zIGFuZCBuZWNlc3NhcnkgcHJlcmVxdWlzaXRlcyBzaG91bGQgYmUgZGVmaW5lZC4gVGltZSB0byBjcmFjayB0aGF0IGZpbGUgb3BlbiBhbmQgc2VlIHdoYXQgbWFrZXMgdGhpcyBgU01DYCBjb25maWd1cmF0aW9uIHRpY2shXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NDUzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTU6MDU6NTkuNTAyODM4OTQ1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwMzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zbWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNNQ1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlNNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IElORklOSUJBTkQgXFx1MDAyNlxcdTAwMjYgRElCU1xcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBTTUMtUiBwcm92aWRlcyBhIFxcXCJzb2NrZXRzIG92ZXIgUkRNQVxcXCIgc29sdXRpb24gbWFraW5nIHVzZSBvZlxcbiAgIDc6XFx0XFx0ICBSRE1BIG92ZXIgQ29udmVyZ2VkIEV0aGVybmV0IChSb0NFKSB0ZWNobm9sb2d5IHRvIHVwZ3JhZGVcXG4gICA4OlxcdFxcdCAgQUZfSU5FVCBUQ1AgY29ubmVjdGlvbnMgdHJhbnNwYXJlbnRseS5cXG4gICA5OlxcdFxcdCAgVGhlIExpbnV4IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTTUMtUiBzb2x1dGlvbiBpcyBkZXNpZ25lZCBhc1xcbiAgMTA6XFx0XFx0ICBhIHNlcGFyYXRlIHNvY2tldCBmYW1pbHkgU01DLlxcbiAgMTE6XFx0XFxuICAxMjpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBydW4gU01DIHNvY2tldCBhcHBsaWNhdGlvbnNcXG4gIDEzOlxcdFxcbiAgMTQ6XFx0Y29uZmlnIFNNQ19ESUFHXFxuICAxNTpcXHRcXHR0cmlzdGF0ZSBcXFwiU01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuICAxNjpcXHRcXHRkZXBlbmRzIG9uIFNNQ1xcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBTdXBwb3J0IGZvciBTTUMgc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlIHVzZWQgYnkgdG9vbHMgc3VjaCBhc1xcbiAgMTk6XFx0XFx0ICBzbWNzcy5cXG4gIDIwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNTowNTo1OS41MDI5NDA3MjVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDYwNDI4NDI3NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjoxNDk0OCwiT3V0cHV0VG9rZW5zIjoyMDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MjkxMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE1OjExOjQ1LjU0NTc4Nzk5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ1NTkwNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNNQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNtY19sbGNfY2xpX2FkZF9saW5rXCIsXG4gICAgXCJzbWNfbGxjX3Nydl9hZGRfbGlua1wiLFxuICAgIFwic21jX2xsY19hZGRfbGlua19sb2NhbFwiLFxuICAgIFwic21jX2xsY19zcnZfZGVsZXRlX2xpbmtfbG9jYWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBob3cgU01DIExMQyBtZXNzYWdlcyBhcmUgZW5xdWV1ZWQgYW5kIHByb2Nlc3NlZCwgc3BlY2lmaWNhbGx5IGZvciBTTUNfVjIgd2hlcmUgbWVzc2FnZXMgY2FuIGJlIGxvbmdlciB0aGFuIGB1bmlvbiBzbWNfbGxjX21zZ2AuIEl0IGludHJvZHVjZXMgYGJvZHlfbGVuYCBhbmQgYSBmbGV4aWJsZSBhcnJheSBgYm9keVtdYCBpbiBgc3RydWN0IHNtY19sbGNfcWVudHJ5YCB0byBzdG9yZSB0aGUgZXh0cmEgYnl0ZXMgb2YgVjIgbWVzc2FnZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgU01DIChTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zKSBzdWJzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIEFGX1NNQyBzb2NrZXRzIGFuZCBzb2Z0d2FyZSBSRE1BL0lTTSBkZXZpY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNNQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNtY19sbGNfY2xpX2FkZF9saW5rXCIsXG4gICAgXCJzbWNfbGxjX3Nydl9hZGRfbGlua1wiLFxuICAgIFwic21jX2xsY19hZGRfbGlua19sb2NhbFwiLFxuICAgIFwic21jX2xsY19zcnZfZGVsZXRlX2xpbmtfbG9jYWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBob3cgU01DIExMQyBtZXNzYWdlcyBhcmUgZW5xdWV1ZWQgYW5kIHByb2Nlc3NlZCwgc3BlY2lmaWNhbGx5IGZvciBTTUNfVjIgd2hlcmUgbWVzc2FnZXMgY2FuIGJlIGxvbmdlciB0aGFuIGB1bmlvbiBzbWNfbGxjX21zZ2AuIEl0IGludHJvZHVjZXMgYGJvZHlfbGVuYCBhbmQgYSBmbGV4aWJsZSBhcnJheSBgYm9keVtdYCBpbiBgc3RydWN0IHNtY19sbGNfcWVudHJ5YCB0byBzdG9yZSB0aGUgZXh0cmEgYnl0ZXMgb2YgVjIgbWVzc2FnZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgU01DIChTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zKSBzdWJzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIEFGX1NNQyBzb2NrZXRzIGFuZCBzb2Z0d2FyZSBSRE1BL0lTTSBkZXZpY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowcmm2f[1] Phase: Succeeded StartedAt: 2026-08-01 15:11:57 +0000 UTC FinishedAt: 2026-08-01 15:11:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcmm2f[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-01 15:11:57 +0000 UTC FinishedAt: 2026-08-01 15:11:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcmm2f[2] Phase: Succeeded StartedAt: 2026-08-01 15:11:57 +0000 UTC FinishedAt: 2026-08-01 16:37:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:11:57 +0000 UTC FinishedAt: 2026-08-01 16:37:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:11:57 +0000 UTC FinishedAt: 2026-08-01 15:12:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:11:57 +0000 UTC FinishedAt: 2026-08-01 15:12:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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-workflowcmm2f/series-workflowcmm2f-convert-artifact-2765704384/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:12:07 +0000 UTC FinishedAt: 2026-08-01 15:28:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:12:07 +0000 UTC FinishedAt: 2026-08-01 15:28:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*03b1fe4f-829a-4a70-8914-75e603af9f9a,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-workflowcmm2f/series-workflowcmm2f-convert-artifact-2765704384/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": "4b75fce7-a164-45ac-90eb-b2b5e9909f30", "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-workflowcmm2f/series-workflowcmm2f-build-action-1229730950/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:12:07 +0000 UTC FinishedAt: 2026-08-01 15:28:32 +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:*03b1fe4f-829a-4a70-8914-75e603af9f9a,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-workflowcmm2f/series-workflowcmm2f-convert-artifact-2765704384/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": "4b75fce7-a164-45ac-90eb-b2b5e9909f30", "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-workflowcmm2f/series-workflowcmm2f-build-action-1229730950/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:28:41 +0000 UTC FinishedAt: 2026-08-01 15:28:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:28:41 +0000 UTC FinishedAt: 2026-08-01 15:28:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:28:41 +0000 UTC FinishedAt: 2026-08-01 15:28:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:28:41 +0000 UTC FinishedAt: 2026-08-01 15:28:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-workflowcmm2f/series-workflowcmm2f-convert-artifact-3755286887/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:28:52 +0000 UTC FinishedAt: 2026-08-01 15:30:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:28:52 +0000 UTC FinishedAt: 2026-08-01 15:30:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4b75fce7-a164-45ac-90eb-b2b5e9909f30,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-workflowcmm2f/series-workflowcmm2f-build-action-1229730950/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-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:30:43 +0000 UTC FinishedAt: 2026-08-01 15:30:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:30:43 +0000 UTC FinishedAt: 2026-08-01 15:30:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:30:43 +0000 UTC FinishedAt: 2026-08-01 15:47:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:30:43 +0000 UTC FinishedAt: 2026-08-01 15:47: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:*03b1fe4f-829a-4a70-8914-75e603af9f9a,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-workflowcmm2f/series-workflowcmm2f-convert-artifact-3755286887/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": "ae04c116-6b7c-4b2f-8b73-a89894ec3043", "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-workflowcmm2f/series-workflowcmm2f-build-action-3332495595/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:30:43 +0000 UTC FinishedAt: 2026-08-01 15:47:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*03b1fe4f-829a-4a70-8914-75e603af9f9a,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-workflowcmm2f/series-workflowcmm2f-convert-artifact-3755286887/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": "ae04c116-6b7c-4b2f-8b73-a89894ec3043", "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-workflowcmm2f/series-workflowcmm2f-build-action-3332495595/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:47:20 +0000 UTC FinishedAt: 2026-08-01 15:47:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:47:20 +0000 UTC FinishedAt: 2026-08-01 15:47:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:47:20 +0000 UTC FinishedAt: 2026-08-01 15:49:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:47:20 +0000 UTC FinishedAt: 2026-08-01 15:49:10 +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:*ae04c116-6b7c-4b2f-8b73-a89894ec3043,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-workflowcmm2f/series-workflowcmm2f-build-action-3332495595/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-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:49:19 +0000 UTC FinishedAt: 2026-08-01 16:37:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:49:19 +0000 UTC FinishedAt: 2026-08-01 16:37:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"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:*4b75fce7-a164-45ac-90eb-b2b5e9909f30,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ae04c116-6b7c-4b2f-8b73-a89894ec3043,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-workflowcmm2f/series-workflowcmm2f-build-action-1229730950/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-workflowcmm2f/series-workflowcmm2f-build-action-3332495595/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:49:19 +0000 UTC FinishedAt: 2026-08-01 15:49:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:49:19 +0000 UTC FinishedAt: 2026-08-01 15:49:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"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-workflowcmm2f/series-workflowcmm2f-convert-artifact-318085568/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:49:19 +0000 UTC FinishedAt: 2026-08-01 15:49:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:49:19 +0000 UTC FinishedAt: 2026-08-01 15:49:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:49:19 +0000 UTC FinishedAt: 2026-08-01 15:49:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:49:29 +0000 UTC FinishedAt: 2026-08-01 16:37:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcmm2f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"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":["smc_llc_cli_add_link","smc_llc_srv_add_link","smc_llc_add_link_local","smc_llc_srv_delete_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC"],"series_id":"f9576b5f-cb14-4e32-996e-b17bd96f07a5","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-08-01 15:49:29 +0000 UTC FinishedAt: 2026-08-01 16:37:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4b75fce7-a164-45ac-90eb-b2b5e9909f30,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ae04c116-6b7c-4b2f-8b73-a89894ec3043,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-workflowcmm2f/series-workflowcmm2f-build-action-1229730950/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-workflowcmm2f/series-workflowcmm2f-build-action-3332495595/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-workflowcmm2f/series-workflowcmm2f-convert-artifact-318085568/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,}