Name: series-workflowhdl8s Phase: Succeeded StartedAt: 2026-06-26 16:20:47 +0000 UTC FinishedAt: 2026-06-26 20:49:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdl8s[0] Phase: Succeeded StartedAt: 2026-06-26 16:20:47 +0000 UTC FinishedAt: 2026-06-26 16:34:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdl8s[0].run-triage Phase: Succeeded StartedAt: 2026-06-26 16:20:47 +0000 UTC FinishedAt: 2026-06-26 16:34:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "189ce3c81f8188fb737d59a8a8784f074e830238", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HUGETLBFS", "MIGRATION" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "189ce3c81f8188fb737d59a8a8784f074e830238", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HUGETLBFS", "MIGRATION" ], "series_id": "ec26fa8e-e9d8-479c-869d-3333b67562ca" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "remove_migration_pte", "prot_none_hugetlb_entry", "check_pte", "try_to_unmap_one", "try_to_migrate_one" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE2OjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hVR0VUTEJGUyYjMzQ7LAogICAgJiMzNDtNSUdSQVRJT04mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZW1vdmVfbWlncmF0aW9uX3B0ZSYjMzQ7LAogICAgJiMzNDtwcm90X25vbmVfaHVnZXRsYl9lbnRyeSYjMzQ7LAogICAgJiMzNDtjaGVja19wdGUmIzM0OywKICAgICYjMzQ7dHJ5X3RvX3VubWFwX29uZSYjMzQ7LAogICAgJiMzNDt0cnlfdG9fbWlncmF0ZV9vbmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgaG93IFBURXMgYXJlIHJlYWQgZm9yIEh1Z2VUTEIgcGFnZXMgZHVyaW5nIHBhZ2UgbWlncmF0aW9uLCB1bm1hcHBpbmcsIGFuZCBtZW1vcnkgcHJvdGVjdGlvbiBjaGFuZ2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBzdGFuZGFyZCBzeXNjYWxscyAoZS5nLiwgbXByb3RlY3QsIG1hZHZpc2UsIG1iaW5kKSBvbiBIdWdlVExCIG1hcHBpbmdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE2OjMzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTI5YzdiNTU1YmZmNzE2YzU1OGZhMDRkMGE3ZTIwMGQzZmJlNmRhY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVuIDI2IDE2OjMzOjQ1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaHVnZXRsYi5oIGIvaW5jbHVkZS9saW51eC9odWdldGxiLmhcbmluZGV4IDJhYmFmOTkzMjFlOTBkLi5mZGI3YmRmNzY0NWM1OSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvaHVnZXRsYi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaFxuQEAgLTEyNjEsNiAmIzQzOzEyNjEsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaHVnZXRsYl9jb3VudF9zdWIobG9uZyBsLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbiB7XG4gfVxuIFxuJiM0MztwdGVfdCBodWdlX3B0ZXBfZ2V0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4mIzQzO1x0XHQgICAgcHRlX3QgKnB0ZXApO1xuJiM0MztcbiBzdGF0aWMgaW5saW5lIHB0ZV90IGh1Z2VfcHRlcF9jbGVhcl9mbHVzaChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbiBcdFx0XHRcdFx0ICB1bnNpZ25lZCBsb25nIGFkZHIsIHB0ZV90ICpwdGVwKVxuIHtcbmRpZmYgLS1naXQgYS9tbS9taWdyYXRlLmMgYi9tbS9taWdyYXRlLmNcbmluZGV4IGQ5YjIzOTA5ZDcxNmM2Li5jNjVmMGY0M2RmN2ViYiAxMDA2NDRcbi0tLSBhL21tL21pZ3JhdGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWlncmF0ZS5jXG5AQCAtMzcxLDcgJiM0MzszNzEsMTEgQEAgc3RhdGljIGJvb2wgcmVtb3ZlX21pZ3JhdGlvbl9wdGUoc3RydWN0IGZvbGlvICpmb2xpbyxcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuICNlbmRpZlxuLVx0XHRvbGRfcHRlID0gcHRlcF9nZXQocHZtdy5wdGUpO1xuJiM0MztcdFx0aWYgKGZvbGlvX3Rlc3RfaHVnZXRsYihmb2xpbykpXG4mIzQzO1x0XHRcdG9sZF9wdGUgPSBodWdlX3B0ZXBfZ2V0KHZtYS1cdTAwM2V2bV9tbSwgcHZtdy5hZGRyZXNzLFxuJiM0MztcdFx0XHRcdFx0XHRwdm13LnB0ZSk7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdG9sZF9wdGUgPSBwdGVwX2dldChwdm13LnB0ZSk7XG4gXHRcdGlmIChybWFwX3dhbGtfYXJnLVx1MDAzZW1hcF91bnVzZWRfdG9femVyb3BhZ2UgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICB0cnlfdG9fbWFwX3VudXNlZF90b196ZXJvcGFnZShcdTAwMjZwdm13LCBmb2xpbywgb2xkX3B0ZSwgaWR4KSlcbiBcdFx0XHRjb250aW51ZTtcbmRpZmYgLS1naXQgYS9tbS9tcHJvdGVjdC5jIGIvbW0vbXByb3RlY3QuY1xuaW5kZXggOWNiZjkzMmIwMjhjZjkuLjIzNzc5NjMyZDE4YmYyIDEwMDY0NFxuLS0tIGEvbW0vbXByb3RlY3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbXByb3RlY3QuY1xuQEAgLTY5OSwxNCAmIzQzOzY5OSwyMCBAQCBzdGF0aWMgaW50IHByb3Rfbm9uZV9wdGVfZW50cnkocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuIFx0XHQwIDogLUVBQ0NFUztcbiB9XG4gXG4mIzQzOyNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG4gc3RhdGljIGludCBwcm90X25vbmVfaHVnZXRsYl9lbnRyeShwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGhtYXNrLFxuIFx0XHRcdFx0ICAgdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIG5leHQsXG4gXHRcdFx0XHQgICBzdHJ1Y3QgbW1fd2FsayAqd2FsaylcbiB7XG4tXHRyZXR1cm4gcGZuX21vZGlmeV9hbGxvd2VkKHB0ZV9wZm4ocHRlcF9nZXQocHRlKSksXG4mIzQzO1x0cHRlX3QgZW50cnkgPSBodWdlX3B0ZXBfZ2V0KHdhbGstXHUwMDNlbW0sIGFkZHIsIHB0ZSk7XG4mIzQzO1xuJiM0MztcdHJldHVybiBwZm5fbW9kaWZ5X2FsbG93ZWQocHRlX3BmbihlbnRyeSksXG4gXHRcdFx0XHQgICoocGdwcm90X3QgKikod2Fsay1cdTAwM2Vwcml2YXRlKSkgP1xuIFx0XHQwIDogLUVBQ0NFUztcbiB9XG4mIzQzOyNlbHNlXG4mIzQzOyNkZWZpbmUgcHJvdF9ub25lX2h1Z2V0bGJfZW50cnlcdE5VTExcbiYjNDM7I2VuZGlmXG4gXG4gc3RhdGljIGludCBwcm90X25vbmVfdGVzdCh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgbmV4dCxcbiBcdFx0XHQgIHN0cnVjdCBtbV93YWxrICp3YWxrKVxuZGlmZiAtLWdpdCBhL21tL3BhZ2Vfdm1hX21hcHBlZC5jIGIvbW0vcGFnZV92bWFfbWFwcGVkLmNcbmluZGV4IDJjY2JhYmZiMmNjMTdhLi4xOGUxZDM0MWY0NjNjOSAxMDA2NDRcbi0tLSBhL21tL3BhZ2Vfdm1hX21hcHBlZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9wYWdlX3ZtYV9tYXBwZWQuY1xuQEAgLTEwNyw3ICYjNDM7MTA3LDEzIEBAIHN0YXRpYyBib29sIG1hcF9wdGUoc3RydWN0IHBhZ2Vfdm1hX21hcHBlZF93YWxrICpwdm13LCBwbWRfdCAqcG1kdmFscCxcbiBzdGF0aWMgYm9vbCBjaGVja19wdGUoc3RydWN0IHBhZ2Vfdm1hX21hcHBlZF93YWxrICpwdm13LCB1bnNpZ25lZCBsb25nIHB0ZV9ucilcbiB7XG4gXHR1bnNpZ25lZCBsb25nIHBmbjtcbi1cdHB0ZV90IHB0ZW50ID0gcHRlcF9nZXQocHZtdy1cdTAwM2VwdGUpO1xuJiM0MztcdHB0ZV90IHB0ZW50O1xuJiM0MztcbiYjNDM7XHRpZiAoaXNfdm1faHVnZXRsYl9wYWdlKHB2bXctXHUwMDNldm1hKSlcbiYjNDM7XHRcdHB0ZW50ID0gaHVnZV9wdGVwX2dldChwdm13LVx1MDAzZXZtYS1cdTAwM2V2bV9tbSwgcHZtdy1cdTAwM2VhZGRyZXNzLFxuJiM0MztcdFx0XHRcdCAgICAgIHB2bXctXHUwMDNlcHRlKTtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRwdGVudCA9IHB0ZXBfZ2V0KHB2bXctXHUwMDNlcHRlKTtcbiBcbiBcdGlmIChwdm13LVx1MDAzZWZsYWdzIFx1MDAyNiBQVk1XX01JR1JBVElPTikge1xuIFx0XHRjb25zdCBzb2Z0bGVhZl90IGVudHJ5ID0gc29mdGxlYWZfZnJvbV9wdGUocHRlbnQpO1xuZGlmZiAtLWdpdCBhL21tL3JtYXAuYyBiL21tL3JtYXAuY1xuaW5kZXggMWM3N2Q1ZGMwNmU5ZmEuLmFiYzNhNDRiYWFhM2RmIDEwMDY0NFxuLS0tIGEvbW0vcm1hcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9ybWFwLmNcbkBAIC0yMDk1LDExICYjNDM7MjA5NSwxNiBAQCBzdGF0aWMgYm9vbCB0cnlfdG9fdW5tYXBfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuIFx0XHQvKiBVbmV4cGVjdGVkIFBNRC1tYXBwZWQgVEhQPyAqL1xuIFx0XHRWTV9CVUdfT05fRk9MSU8oIXB2bXcucHRlLCBmb2xpbyk7XG4gXG4tXHRcdC8qXG4tXHRcdCAqIEhhbmRsZSBQRk4gc3dhcCBQVEVzLCBzdWNoIGFzIGRldmljZS1leGNsdXNpdmUgb25lcywgdGhhdFxuLVx0XHQgKiBhY3R1YWxseSBtYXAgcGFnZXMuXG4tXHRcdCAqL1xuLVx0XHRwdGV2YWwgPSBwdGVwX2dldChwdm13LnB0ZSk7XG4mIzQzO1x0XHRhZGRyZXNzID0gcHZtdy5hZGRyZXNzO1xuJiM0MztcdFx0aWYgKGZvbGlvX3Rlc3RfaHVnZXRsYihmb2xpbykpIHtcbiYjNDM7XHRcdFx0cHRldmFsID0gaHVnZV9wdGVwX2dldChtbSwgYWRkcmVzcywgcHZtdy5wdGUpO1xuJiM0MztcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0LypcbiYjNDM7XHRcdFx0ICogSGFuZGxlIFBGTiBzd2FwIFBURXMsIHN1Y2ggYXMgZGV2aWNlLWV4Y2x1c2l2ZSBvbmVzLFxuJiM0MztcdFx0XHQgKiB0aGF0IGFjdHVhbGx5IG1hcCBwYWdlcy5cbiYjNDM7XHRcdFx0ICovXG4mIzQzO1x0XHRcdHB0ZXZhbCA9IHB0ZXBfZ2V0KHB2bXcucHRlKTtcbiYjNDM7XHRcdH1cbiBcdFx0aWYgKGxpa2VseShwdGVfcHJlc2VudChwdGV2YWwpKSkge1xuIFx0XHRcdHBmbiA9IHB0ZV9wZm4ocHRldmFsKTtcbiBcdFx0fSBlbHNlIHtcbkBAIC0yMTEwLDcgJiM0MzsyMTE1LDYgQEAgc3RhdGljIGJvb2wgdHJ5X3RvX3VubWFwX29uZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbiBcdFx0fVxuIFxuIFx0XHRzdWJwYWdlID0gZm9saW9fcGFnZShmb2xpbywgcGZuIC0gZm9saW9fcGZuKGZvbGlvKSk7XG4tXHRcdGFkZHJlc3MgPSBwdm13LmFkZHJlc3M7XG4gXHRcdGFub25fZXhjbHVzaXZlID0gZm9saW9fdGVzdF9hbm9uKGZvbGlvKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHRcdCBQYWdlQW5vbkV4Y2x1c2l2ZShzdWJwYWdlKTtcbiBcbkBAIC0yNTAxLDExICYjNDM7MjUwNSwxNiBAQCBzdGF0aWMgYm9vbCB0cnlfdG9fbWlncmF0ZV9vbmUoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4gXHRcdC8qIFVuZXhwZWN0ZWQgUE1ELW1hcHBlZCBUSFA/ICovXG4gXHRcdFZNX0JVR19PTl9GT0xJTyghcHZtdy5wdGUsIGZvbGlvKTtcbiBcbi1cdFx0Lypcbi1cdFx0ICogSGFuZGxlIFBGTiBzd2FwIFBURXMsIHN1Y2ggYXMgZGV2aWNlLWV4Y2x1c2l2ZSBvbmVzLCB0aGF0XG4tXHRcdCAqIGFjdHVhbGx5IG1hcCBwYWdlcy5cbi1cdFx0ICovXG4tXHRcdHB0ZXZhbCA9IHB0ZXBfZ2V0KHB2bXcucHRlKTtcbiYjNDM7XHRcdGFkZHJlc3MgPSBwdm13LmFkZHJlc3M7XG4mIzQzO1x0XHRpZiAoZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKSkge1xuJiM0MztcdFx0XHRwdGV2YWwgPSBodWdlX3B0ZXBfZ2V0KG1tLCBhZGRyZXNzLCBwdm13LnB0ZSk7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHQvKlxuJiM0MztcdFx0XHQgKiBIYW5kbGUgUEZOIHN3YXAgUFRFcywgc3VjaCBhcyBkZXZpY2UtZXhjbHVzaXZlIG9uZXMsXG4mIzQzO1x0XHRcdCAqIHRoYXQgYWN0dWFsbHkgbWFwIHBhZ2VzLlxuJiM0MztcdFx0XHQgKi9cbiYjNDM7XHRcdFx0cHRldmFsID0gcHRlcF9nZXQocHZtdy5wdGUpO1xuJiM0MztcdFx0fVxuIFx0XHRpZiAobGlrZWx5KHB0ZV9wcmVzZW50KHB0ZXZhbCkpKSB7XG4gXHRcdFx0cGZuID0gcHRlX3BmbihwdGV2YWwpO1xuIFx0XHR9IGVsc2Uge1xuQEAgLTI1MTYsNyAmIzQzOzI1MjUsNiBAQCBzdGF0aWMgYm9vbCB0cnlfdG9fbWlncmF0ZV9vbmUoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4gXHRcdH1cbiBcbiBcdFx0c3VicGFnZSA9IGZvbGlvX3BhZ2UoZm9saW8sIHBmbiAtIGZvbGlvX3Bmbihmb2xpbykpO1xuLVx0XHRhZGRyZXNzID0gcHZtdy5hZGRyZXNzO1xuIFx0XHRhbm9uX2V4Y2x1c2l2ZSA9IGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgXHUwMDI2XHUwMDI2XG4gXHRcdFx0XHQgUGFnZUFub25FeGNsdXNpdmUoc3VicGFnZSk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTY6MzM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SFVHRVRMQkZTJiMzNDssCiAgICAmIzM0O01JR1JBVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JlbW92ZV9taWdyYXRpb25fcHRlJiMzNDssCiAgICAmIzM0O3Byb3Rfbm9uZV9odWdldGxiX2VudHJ5JiMzNDssCiAgICAmIzM0O2NoZWNrX3B0ZSYjMzQ7LAogICAgJiMzNDt0cnlfdG9fdW5tYXBfb25lJiMzNDssCiAgICAmIzM0O3RyeV90b19taWdyYXRlX29uZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBob3cgUFRFcyBhcmUgcmVhZCBmb3IgSHVnZVRMQiBwYWdlcyBkdXJpbmcgcGFnZSBtaWdyYXRpb24sIHVubWFwcGluZywgYW5kIG1lbW9yeSBwcm90ZWN0aW9uIGNoYW5nZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHN0YW5kYXJkIHN5c2NhbGxzIChlLmcuLCBtcHJvdGVjdCwgbWFkdmlzZSwgbWJpbmQpIG9uIEh1Z2VUTEIgbWFwcGluZ3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDEyOWM3YjU1NWJmZjcxNmM1NThmYTA0ZDBhN2UyMDBkM2ZiZTZkYWMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1biAyNiAxNjozMzo0NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaHVnZXRsYi5oIGIvaW5jbHVkZS9saW51eC9odWdldGxiLmgKaW5kZXggMmFiYWY5OTMyMWU5MGQuLmZkYjdiZGY3NjQ1YzU5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaApAQCAtMTI2MSw2ICYjNDM7MTI2MSw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBodWdldGxiX2NvdW50X3N1Yihsb25nIGwsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQogewogfQogCiYjNDM7cHRlX3QgaHVnZV9wdGVwX2dldChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLAomIzQzOwkJICAgIHB0ZV90ICpwdGVwKTsKJiM0MzsKIHN0YXRpYyBpbmxpbmUgcHRlX3QgaHVnZV9wdGVwX2NsZWFyX2ZsdXNoKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCQkJCQkgIHVuc2lnbmVkIGxvbmcgYWRkciwgcHRlX3QgKnB0ZXApCiB7CmRpZmYgLS1naXQgYS9tbS9taWdyYXRlLmMgYi9tbS9taWdyYXRlLmMKaW5kZXggZDliMjM5MDlkNzE2YzYuLmM2NWYwZjQzZGY3ZWJiIDEwMDY0NAotLS0gYS9tbS9taWdyYXRlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWlncmF0ZS5jCkBAIC0zNzEsNyAmIzQzOzM3MSwxMSBAQCBzdGF0aWMgYm9vbCByZW1vdmVfbWlncmF0aW9uX3B0ZShzdHJ1Y3QgZm9saW8gKmZvbGlvLAogCQkJY29udGludWU7CiAJCX0KICNlbmRpZgotCQlvbGRfcHRlID0gcHRlcF9nZXQocHZtdy5wdGUpOwomIzQzOwkJaWYgKGZvbGlvX3Rlc3RfaHVnZXRsYihmb2xpbykpCiYjNDM7CQkJb2xkX3B0ZSA9IGh1Z2VfcHRlcF9nZXQodm1hLSZndDt2bV9tbSwgcHZtdy5hZGRyZXNzLAomIzQzOwkJCQkJCXB2bXcucHRlKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQlvbGRfcHRlID0gcHRlcF9nZXQocHZtdy5wdGUpOwogCQlpZiAocm1hcF93YWxrX2FyZy0mZ3Q7bWFwX3VudXNlZF90b196ZXJvcGFnZSAmYW1wOyZhbXA7CiAJCSAgICB0cnlfdG9fbWFwX3VudXNlZF90b196ZXJvcGFnZSgmYW1wO3B2bXcsIGZvbGlvLCBvbGRfcHRlLCBpZHgpKQogCQkJY29udGludWU7CmRpZmYgLS1naXQgYS9tbS9tcHJvdGVjdC5jIGIvbW0vbXByb3RlY3QuYwppbmRleCA5Y2JmOTMyYjAyOGNmOS4uMjM3Nzk2MzJkMThiZjIgMTAwNjQ0Ci0tLSBhL21tL21wcm90ZWN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbXByb3RlY3QuYwpAQCAtNjk5LDE0ICYjNDM7Njk5LDIwIEBAIHN0YXRpYyBpbnQgcHJvdF9ub25lX3B0ZV9lbnRyeShwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAJCTAgOiAtRUFDQ0VTOwogfQogCiYjNDM7I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0UKIHN0YXRpYyBpbnQgcHJvdF9ub25lX2h1Z2V0bGJfZW50cnkocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBobWFzaywKIAkJCQkgICB1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgbmV4dCwKIAkJCQkgICBzdHJ1Y3QgbW1fd2FsayAqd2FsaykKIHsKLQlyZXR1cm4gcGZuX21vZGlmeV9hbGxvd2VkKHB0ZV9wZm4ocHRlcF9nZXQocHRlKSksCiYjNDM7CXB0ZV90IGVudHJ5ID0gaHVnZV9wdGVwX2dldCh3YWxrLSZndDttbSwgYWRkciwgcHRlKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHBmbl9tb2RpZnlfYWxsb3dlZChwdGVfcGZuKGVudHJ5KSwKIAkJCQkgICoocGdwcm90X3QgKikod2Fsay0mZ3Q7cHJpdmF0ZSkpID8KIAkJMCA6IC1FQUNDRVM7CiB9CiYjNDM7I2Vsc2UKJiM0MzsjZGVmaW5lIHByb3Rfbm9uZV9odWdldGxiX2VudHJ5CU5VTEwKJiM0MzsjZW5kaWYKIAogc3RhdGljIGludCBwcm90X25vbmVfdGVzdCh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgbmV4dCwKIAkJCSAgc3RydWN0IG1tX3dhbGsgKndhbGspCmRpZmYgLS1naXQgYS9tbS9wYWdlX3ZtYV9tYXBwZWQuYyBiL21tL3BhZ2Vfdm1hX21hcHBlZC5jCmluZGV4IDJjY2JhYmZiMmNjMTdhLi4xOGUxZDM0MWY0NjNjOSAxMDA2NDQKLS0tIGEvbW0vcGFnZV92bWFfbWFwcGVkLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vcGFnZV92bWFfbWFwcGVkLmMKQEAgLTEwNyw3ICYjNDM7MTA3LDEzIEBAIHN0YXRpYyBib29sIG1hcF9wdGUoc3RydWN0IHBhZ2Vfdm1hX21hcHBlZF93YWxrICpwdm13LCBwbWRfdCAqcG1kdmFscCwKIHN0YXRpYyBib29sIGNoZWNrX3B0ZShzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcsIHVuc2lnbmVkIGxvbmcgcHRlX25yKQogewogCXVuc2lnbmVkIGxvbmcgcGZuOwotCXB0ZV90IHB0ZW50ID0gcHRlcF9nZXQocHZtdy0mZ3Q7cHRlKTsKJiM0MzsJcHRlX3QgcHRlbnQ7CiYjNDM7CiYjNDM7CWlmIChpc192bV9odWdldGxiX3BhZ2UocHZtdy0mZ3Q7dm1hKSkKJiM0MzsJCXB0ZW50ID0gaHVnZV9wdGVwX2dldChwdm13LSZndDt2bWEtJmd0O3ZtX21tLCBwdm13LSZndDthZGRyZXNzLAomIzQzOwkJCQkgICAgICBwdm13LSZndDtwdGUpOwomIzQzOwllbHNlCiYjNDM7CQlwdGVudCA9IHB0ZXBfZ2V0KHB2bXctJmd0O3B0ZSk7CiAKIAlpZiAocHZtdy0mZ3Q7ZmxhZ3MgJmFtcDsgUFZNV19NSUdSQVRJT04pIHsKIAkJY29uc3Qgc29mdGxlYWZfdCBlbnRyeSA9IHNvZnRsZWFmX2Zyb21fcHRlKHB0ZW50KTsKZGlmZiAtLWdpdCBhL21tL3JtYXAuYyBiL21tL3JtYXAuYwppbmRleCAxYzc3ZDVkYzA2ZTlmYS4uYWJjM2E0NGJhYWEzZGYgMTAwNjQ0Ci0tLSBhL21tL3JtYXAuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9ybWFwLmMKQEAgLTIwOTUsMTEgJiM0MzsyMDk1LDE2IEBAIHN0YXRpYyBib29sIHRyeV90b191bm1hcF9vbmUoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJCS8qIFVuZXhwZWN0ZWQgUE1ELW1hcHBlZCBUSFA/ICovCiAJCVZNX0JVR19PTl9GT0xJTyghcHZtdy5wdGUsIGZvbGlvKTsKIAotCQkvKgotCQkgKiBIYW5kbGUgUEZOIHN3YXAgUFRFcywgc3VjaCBhcyBkZXZpY2UtZXhjbHVzaXZlIG9uZXMsIHRoYXQKLQkJICogYWN0dWFsbHkgbWFwIHBhZ2VzLgotCQkgKi8KLQkJcHRldmFsID0gcHRlcF9nZXQocHZtdy5wdGUpOwomIzQzOwkJYWRkcmVzcyA9IHB2bXcuYWRkcmVzczsKJiM0MzsJCWlmIChmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pKSB7CiYjNDM7CQkJcHRldmFsID0gaHVnZV9wdGVwX2dldChtbSwgYWRkcmVzcywgcHZtdy5wdGUpOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQkvKgomIzQzOwkJCSAqIEhhbmRsZSBQRk4gc3dhcCBQVEVzLCBzdWNoIGFzIGRldmljZS1leGNsdXNpdmUgb25lcywKJiM0MzsJCQkgKiB0aGF0IGFjdHVhbGx5IG1hcCBwYWdlcy4KJiM0MzsJCQkgKi8KJiM0MzsJCQlwdGV2YWwgPSBwdGVwX2dldChwdm13LnB0ZSk7CiYjNDM7CQl9CiAJCWlmIChsaWtlbHkocHRlX3ByZXNlbnQocHRldmFsKSkpIHsKIAkJCXBmbiA9IHB0ZV9wZm4ocHRldmFsKTsKIAkJfSBlbHNlIHsKQEAgLTIxMTAsNyAmIzQzOzIxMTUsNiBAQCBzdGF0aWMgYm9vbCB0cnlfdG9fdW5tYXBfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCQl9CiAKIAkJc3VicGFnZSA9IGZvbGlvX3BhZ2UoZm9saW8sIHBmbiAtIGZvbGlvX3Bmbihmb2xpbykpOwotCQlhZGRyZXNzID0gcHZtdy5hZGRyZXNzOwogCQlhbm9uX2V4Y2x1c2l2ZSA9IGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgJmFtcDsmYW1wOwogCQkJCSBQYWdlQW5vbkV4Y2x1c2l2ZShzdWJwYWdlKTsKIApAQCAtMjUwMSwxMSAmIzQzOzI1MDUsMTYgQEAgc3RhdGljIGJvb2wgdHJ5X3RvX21pZ3JhdGVfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCQkvKiBVbmV4cGVjdGVkIFBNRC1tYXBwZWQgVEhQPyAqLwogCQlWTV9CVUdfT05fRk9MSU8oIXB2bXcucHRlLCBmb2xpbyk7CiAKLQkJLyoKLQkJICogSGFuZGxlIFBGTiBzd2FwIFBURXMsIHN1Y2ggYXMgZGV2aWNlLWV4Y2x1c2l2ZSBvbmVzLCB0aGF0Ci0JCSAqIGFjdHVhbGx5IG1hcCBwYWdlcy4KLQkJICovCi0JCXB0ZXZhbCA9IHB0ZXBfZ2V0KHB2bXcucHRlKTsKJiM0MzsJCWFkZHJlc3MgPSBwdm13LmFkZHJlc3M7CiYjNDM7CQlpZiAoZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKSkgewomIzQzOwkJCXB0ZXZhbCA9IGh1Z2VfcHRlcF9nZXQobW0sIGFkZHJlc3MsIHB2bXcucHRlKTsKJiM0MzsJCX0gZWxzZSB7CiYjNDM7CQkJLyoKJiM0MzsJCQkgKiBIYW5kbGUgUEZOIHN3YXAgUFRFcywgc3VjaCBhcyBkZXZpY2UtZXhjbHVzaXZlIG9uZXMsCiYjNDM7CQkJICogdGhhdCBhY3R1YWxseSBtYXAgcGFnZXMuCiYjNDM7CQkJICovCiYjNDM7CQkJcHRldmFsID0gcHRlcF9nZXQocHZtdy5wdGUpOwomIzQzOwkJfQogCQlpZiAobGlrZWx5KHB0ZV9wcmVzZW50KHB0ZXZhbCkpKSB7CiAJCQlwZm4gPSBwdGVfcGZuKHB0ZXZhbCk7CiAJCX0gZWxzZSB7CkBAIC0yNTE2LDcgJiM0MzsyNTI1LDYgQEAgc3RhdGljIGJvb2wgdHJ5X3RvX21pZ3JhdGVfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCQl9CiAKIAkJc3VicGFnZSA9IGZvbGlvX3BhZ2UoZm9saW8sIHBmbiAtIGZvbGlvX3Bmbihmb2xpbykpOwotCQlhZGRyZXNzID0gcHZtdy5hZGRyZXNzOwogCQlhbm9uX2V4Y2x1c2l2ZSA9IGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgJmFtcDsmYW1wOwogCQkJCSBQYWdlQW5vbkV4Y2x1c2l2ZShzdWJwYWdlKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNjozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjA2CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMzY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEh1Z2V0bGIgUFRFIFJlYWQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IGl0JiMzOTtzIGEgcHJldHR5IHRhcmdldGVkIGJ1dCBwb3RlbnRpYWxseSBpbXBhY3RmdWwgY2hhbmdlIHdpdGhpbiB0aGUgTU0gY29yZS4gVGhleSYjMzk7cmUgc3dhcHBpbmcgb3V0IHRoZSBzdGFuZGFyZCBgcHRlcF9nZXQoKWAgZm9yIGBodWdlX3B0ZXBfZ2V0KClgIHdoZW4gZGVhbGluZyB3aXRoIEh1Z2VUTEIgcGFnZXMuIFRoZSBsb2NhdGlvbnMgdGhleSYjMzk7dmUgdG91Y2hlZCDigJMgYG1tL21pZ3JhdGUuY2AsIGBtbS9tcHJvdGVjdC5jYCwgYG1tL3BhZ2Vfdm1hX21hcHBlZC5jYCwgYW5kIGBtbS9ybWFwLmNgIOKAkyBhcmUgYWxsIGtleSBhcmVhcyBpbiBtZW1vcnkgbWFuYWdlbWVudCwgZXNwZWNpYWxseSBjb25jZXJuaW5nIFBURSBoYW5kbGluZyBhbmQgcGFnZSBtaWdyYXRpb24sIHByb3RlY3Rpb24sIGFuZCByZXZlcnNlIG1hcHBpbmdzLiBSZXBsYWNpbmcgdGhlIG9yaWdpbmFsIGBwdGVwX2dldGAgZnVuY3Rpb24gd2l0aCBgaHVnZV9wdGVwX2dldGAgaXMgYSBwcmV0dHkgY2xlYXIgaW5kaWNhdGlvbiB0aGF0IGl0JiMzOTtzIGdvaW5nIHRvIGFmZmVjdCBob3cgdGhlc2UgcGFydGljdWxhciBtZW1vcnkgcGFnZXMgYXJlIHByb2Nlc3NlZC4KClRoaXMgaXMgY29yZSBNTSBjb2RlLCBhbmQgZGlyZWN0bHkgcmVsYXRlZCB0byBIdWdlVExCIHBhZ2VzLCBzbyB0aGlzIGRlZmluaXRlbHkgd2FycmFudHMgYSBmdXp6aW5nIGNhbXBhaWduIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gc3VidGxlIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3JzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGVuYWJsZSB0aGlzIGNvZGUgcGF0aC4KClJpZ2h0IG9mZiB0aGUgYmF0LCB0aGUgYCNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFYCBndWFyZCBpbiBgbW0vbXByb3RlY3QuY2Agc2NyZWFtcyB0aGF0IGBIVUdFVExCX1BBR0VgIGlzIHRoZSBlc3NlbnRpYWwgY29uZmlnLiBJJiMzOTttIGFsc28gc2VlaW5nIHJlZmVyZW5jZXMgdG8gYGZvbGlvX3Rlc3RfaHVnZXRsYmAgYW5kIGBpc192bV9odWdldGxiX3BhZ2VgLCB3aGljaCBmdXJ0aGVyIHJlaW5mb3JjZXMgdGhhdCBgSFVHRVRMQl9QQUdFYCBpcyBub24tbmVnb3RpYWJsZS4KCk5vdywgbGV0JiMzOTtzIHNlZSB3aGF0IGVsc2UgbWlnaHQgYmUgbmVjZXNzYXJ5LiBgbW0vbWlncmF0ZS5jYCBkZXBlbmRzIG9uIGBDT05GSUdfTUlHUkFUSU9OYCwgd2hpY2ggbWVhbnMgaWYgdGhlIG1pZ3JhdGlvbiBjb21wb25lbnQgaXMgZW5hYmxlZCwgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHRyaWdnZXIgdGhlIHBhdGguIFRoZSBvdGhlciBmaWxlcyBzZWVtIHRvIGJlIGNvbXBpbGVkIHJlZ2FyZGxlc3Mgb2Ygb3RoZXIgb3B0aW9ucy4gSSBuZWVkIHRvIHZlcmlmeSBgQ09ORklHX01JR1JBVElPTmAgYW5kLCBvZiBjb3Vyc2UsIGNvbmZpcm0gdGhhdCBgSFVHRVRMQl9QQUdFYCBpcyBhY3RpdmUuIEkgd2lsbCBjaGVjayBgbW0vTWFrZWZpbGVgIHVzaW5nIGBncmVwcGVyYCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCB0aGVzZSBhcmUgdGhlIG9ubHkgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTY6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWlncmF0ZS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGU9OTc9b2JqLSQoQ09ORklHX01FTVRFU1QpXHRcdCYjNDM7PSBtZW10ZXN0Lm9cbm1tL01ha2VmaWxlOjk4Om9iai0kKENPTkZJR19NSUdSQVRJT04pICYjNDM7PSBtaWdyYXRlLm9cbm1tL01ha2VmaWxlLTk5LW9iai0kKENPTkZJR19OVU1BKSAmIzQzOz0gbWVtb3J5LXRpZXJzLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNjozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDk4CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHN1bW1hcnk6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyAtIE1pZ3JhdGUgYW5kIEh1Z2VUTEIgUGFnZXMqKgoKUmlnaHQsIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gYG1tL21pZ3JhdGUuY2AgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIFRoZSBjcnVjaWFsIHBvaW50IGhlcmUgaXMgdGhhdCBgQ09ORklHX01JR1JBVElPTmAgaXMgZGVmaW5pdGVseSByZXF1aXJlZCBmb3IgdGhlIG1pZ3JhdGlvbiBmdW5jdGlvbmFsaXR5IGluIHRoYXQgZmlsZS4gVGhhdCYjMzk7cyBhIGdpdmVuLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBpbmZsdWVuY2UgdGhpcyBtb2R1bGUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyByZWxhdGVkIHRvIHRoZSBgSFVHRVRMQl9QQUdFYCBjb25maWd1cmF0aW9uIG9wdGlvbiBhbmQgaG93IHRoYXQgZWZmZWN0cyB0aGlzIGFzcGVjdC4gSSB3aWxsIHN0YXJ0IGJ5IGxvb2tpbmcgaW50byB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE2OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2h1Z2V0bGIubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlPTgwPW9iai0kKENPTkZJR19IQVNfRE1BKVx0JiM0Mzs9IGRtYXBvb2wub1xubW0vTWFrZWZpbGU6ODE6b2JqLSQoQ09ORklHX0hVR0VUTEJGUylcdCYjNDM7PSBodWdldGxiLm8gaHVnZXRsYl9zeXNmcy5vIGh1Z2V0bGJfc3lzY3RsLm9cbm1tL01ha2VmaWxlLTgyLWlmZGVmIENPTkZJR19DTUFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNjozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzgxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYW5kIHRoaW5raW5nLCAmIzM0O0FoYSEgYENPTkZJR19IVUdFVExCRlNgLi4uIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBwb2ludGluZyB0b3dhcmRzIHRoZSBgaHVnZXRsYi5vYCBvYmplY3QuJiMzNDsgTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwLCBzbyBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcy4gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGVsdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBsb29rIGF0IGBDT05GSUdfSFVHRVRMQl9QQUdFYCB3aXRoaW4gZWl0aGVyIGBtbS9LY29uZmlnYCBvciBgZnMvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgZmluZCB0aGUgZmluZXIgZGV0YWlscyBhbmQgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIGxhcmdlciBtZW1vcnkgbWFuYWdlbWVudCBvciBmaWxlc3lzdGVtIGNvbmZpZ3VyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE2OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBIVUdFVExCX1BBR0UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zaC9tbS9LY29uZmlnPTE1OD1jaG9pY2Vcbi0tXG5hcmNoL3NoL21tL0tjb25maWctMTYzLVxuYXJjaC9zaC9tbS9LY29uZmlnOjE2NDpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfNjRLXG5hcmNoL3NoL21tL0tjb25maWctMTY1LVx0Ym9vbCBcJiMzNDs2NGtCXCYjMzQ7XG4tLVxuYXJjaC9zaC9tbS9LY29uZmlnLTE2Ny1cbmFyY2gvc2gvbW0vS2NvbmZpZzoxNjg6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzI1NktcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNjktXHRib29sIFwmIzM0OzI1NmtCXCYjMzQ7XG4tLVxuYXJjaC9zaC9tbS9LY29uZmlnLTE3MS1cbmFyY2gvc2gvbW0vS2NvbmZpZzoxNzI6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzFNQlxuYXJjaC9zaC9tbS9LY29uZmlnLTE3My1cdGJvb2wgXCYjMzQ7MU1CXCYjMzQ7XG5hcmNoL3NoL21tL0tjb25maWctMTc0LVxuYXJjaC9zaC9tbS9LY29uZmlnOjE3NTpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfNE1CXG5hcmNoL3NoL21tL0tjb25maWctMTc2LVx0Ym9vbCBcJiMzNDs0TUJcJiMzNDtcbi0tXG5hcmNoL3NoL21tL0tjb25maWctMTc4LVxuYXJjaC9zaC9tbS9LY29uZmlnOjE3OTpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfNjRNQlxuYXJjaC9zaC9tbS9LY29uZmlnLTE4MC1cdGJvb2wgXCYjMzQ7NjRNQlwmIzM0O1xuLS1cbmZzL0tjb25maWc9MjYyPWlmIEhVR0VUTEJGU1xuZnMvS2NvbmZpZzoyNjM6Y29uZmlnIEhVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQX0RFRkFVTFRfT05cbmZzL0tjb25maWctMjY0LVx0Ym9vbCBcJiMzNDtIdWdlVExCIFZtZW1tYXAgT3B0aW1pemF0aW9uIChIVk8pIGRlZmF1bHRzIHRvIG9uXCYjMzQ7XG4tLVxuZnMvS2NvbmZpZz0yNzE9ZW5kaWYgIyBIVUdFVExCRlNcbmZzL0tjb25maWctMjcyLVxuZnMvS2NvbmZpZzoyNzM6Y29uZmlnIEhVR0VUTEJfUEFHRVxuZnMvS2NvbmZpZy0yNzQtXHRkZWZfYm9vbCBIVUdFVExCRlNcbi0tXG5mcy9LY29uZmlnLTI3Ni1cbmZzL0tjb25maWc6Mjc3OmNvbmZpZyBIVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUFxuZnMvS2NvbmZpZy0yNzgtXHRkZWZfYm9vbCBIVUdFVExCX1BBR0Vcbi0tXG5tbS9LY29uZmlnPTY1Mz1jb25maWcgQVJDSF9FTkFCTEVfVEhQX01JR1JBVElPTlxuLS1cbm1tL0tjb25maWctNjU1LVxubW0vS2NvbmZpZzo2NTY6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFX1ZBUklBQkxFXG5tbS9LY29uZmlnLTY1Ny1cdGRlZl9ib29sIG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNjozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTczCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uOiBIdWdlVExCIGFuZCBNaWdyYXRpb24gQ29kZSoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBIVUdFVExCX1BBR0VgIGlzIGxpbmtlZCB0byBgZGVmX2Jvb2wgSFVHRVRMQkZTYC4gVGhhdCYjMzk7cyB0aGUgY29uZmlnIEkgbmVlZCB0byBlbmFibGUgZm9yIHRoaXMgZnV6emluZyB0YXJnZXQgLSBgSFVHRVRMQkZTYC4KCk5vdywgbGV0JiMzOTtzIHBpbnBvaW50IHRoZSByZWxldmFudCBmdW5jdGlvbnMuIEJhc2VkIG9uIHRoZSBtb2RpZmljYXRpb25zLCB0aGUga2V5IGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBhcmU6IGByZW1vdmVfbWlncmF0aW9uX3B0ZWAsIGBwcm90X25vbmVfaHVnZXRsYl9lbnRyeWAsIGBjaGVja19wdGVgLCBgdHJ5X3RvX3VubWFwX29uZWAsIGFuZCBgdHJ5X3RvX21pZ3JhdGVfb25lYC4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHdoZXJlIHRoZXNlIHJlc2lkZS4gTG9va3MgbGlrZSBgcHJvdF9ub25lX2h1Z2V0bGJfZW50cnlgIGlzIHN0YXRpYyB3aXRoaW4gYG1tL21wcm90ZWN0LmNgLiBgcmVtb3ZlX21pZ3JhdGlvbl9wdGVgIGlzIHN0YXRpYyBpbiBgbW0vbWlncmF0ZS5jYC4gVGhlbiwgYGNoZWNrX3B0ZWAgbGl2ZXMgaW4gYG1tL3BhZ2Vfdm1hX21hcHBlZC5jYCwgYW5kIGZpbmFsbHksIGJvdGggYHRyeV90b191bm1hcF9vbmVgIGFuZCBgdHJ5X3RvX21pZ3JhdGVfb25lYCBhcmUgc3RhdGljIGluIGBtbS9ybWFwLmNgLgoKT2theSwgbm93IGZvciByZWFjaGFiaWxpdHkuIGByZW1vdmVfbWlncmF0aW9uX3B0ZWAgaXMgaW52b2tlZCBieSBgcmVtb3ZlX21pZ3JhdGlvbl9wdGVzYC4gYHByb3Rfbm9uZV9odWdldGxiX2VudHJ5YCBpcyB1c2VkIGFzIGEgY2FsbGJhY2sgZm9yIGBtbV93YWxrYCwgd2hpY2ggaXMgdXNlZCBpbiBgbW0vbXByb3RlY3QuY2AuIGBjaGVja19wdGVgIGlzIHJlYWNoZWQgdGhyb3VnaCBgcGFnZV92bWFfbWFwcGVkX3dhbGtgLiBgdHJ5X3RvX3VubWFwX29uZWAgaXMgY2FsbGVkIGZyb20gYHRyeV90b191bm1hcGAsIGFuZCBgdHJ5X3RvX21pZ3JhdGVfb25lYCBpcyBjYWxsZWQgZnJvbSBgdHJ5X3RvX21pZ3JhdGVgLgoKUGVyZmVjdC4gVGhlc2UgYXJlIGFsbCBjb3JlIE1NIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHBhZ2UgbWlncmF0aW9uLCB1bm1hcHBpbmcsIGFuZCBtZW1vcnkgcHJvdGVjdGlvbiBmb3IgTlVNQSBiYWxhbmNpbmcuIFRoZXkmIzM5O3JlIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCByZXByZXNlbnQgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KCkxldCYjMzk7cyBzdW1tYXJpemUgdGhlIGtleSBjb25maWd1cmF0aW9ucyBhbmQgc3ltYm9scyBmb3IgZWFzeSByZWZlcmVuY2U6CgoqICAgQ29uZmlnczogYEhVR0VUTEJGU2AgYW5kIGBNSUdSQVRJT05gLgoqICAgRm9jdXMgU3ltYm9sczogYHJlbW92ZV9taWdyYXRpb25fcHRlYCwgYHByb3Rfbm9uZV9odWdldGxiX2VudHJ5YCwgYGNoZWNrX3B0ZWAsIGB0cnlfdG9fdW5tYXBfb25lYCwgYW5kIGB0cnlfdG9fbWlncmF0ZV9vbmVgLgoKRmluYWxseSwgdG8gYmUgdGhvcm91Z2g6IGBwcm90X25vbmVfaHVnZXRsYl9lbnRyeWAgaXMgaW4gYG1tL21wcm90ZWN0LmNgLCBsZXQgbWUgbWFrZSBhIG5vdGUgdG8gY2hlY2sgaWYgaXQgaGFzIGEgZGVwZW5kZW5jeSBvbiBgTlVNQV9CQUxBTkNJTkdgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNjozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcm90X25vbmVfaHVnZXRsYl9lbnRyeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL21wcm90ZWN0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vbXByb3RlY3QuYz02OTQ9c3RhdGljIGludCBwcm90X25vbmVfcHRlX2VudHJ5KHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5tbS9tcHJvdGVjdC5jLTcwMi0jaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxubW0vbXByb3RlY3QuYzo3MDM6c3RhdGljIGludCBwcm90X25vbmVfaHVnZXRsYl9lbnRyeShwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGhtYXNrLFxubW0vbXByb3RlY3QuYy03MDQtXHRcdFx0XHQgICB1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgbmV4dCxcbi0tXG5tbS9tcHJvdGVjdC5jLTcxMy0jZWxzZVxubW0vbXByb3RlY3QuYzo3MTQ6I2RlZmluZSBwcm90X25vbmVfaHVnZXRsYl9lbnRyeVx0TlVMTFxubW0vbXByb3RlY3QuYy03MTUtI2VuZGlmXG4tLVxubW0vbXByb3RlY3QuYz03MjM9c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBwcm90X25vbmVfd2Fsa19vcHMgPSB7XG5tbS9tcHJvdGVjdC5jLTcyNC1cdC5wdGVfZW50cnlcdFx0PSBwcm90X25vbmVfcHRlX2VudHJ5LFxubW0vbXByb3RlY3QuYzo3MjU6XHQuaHVnZXRsYl9lbnRyeVx0XHQ9IHByb3Rfbm9uZV9odWdldGxiX2VudHJ5LFxubW0vbXByb3RlY3QuYy03MjYtXHQudGVzdF93YWxrXHRcdD0gcHJvdF9ub25lX3Rlc3QsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE2OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5MTcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhcyBpZiBJJiMzOTttIHRoaW5raW5nIHRoZXNlIHRoaW5ncyBteXNlbGY6CgoqKlRyYWNpbmcgdGhlIFVzYWdlIG9mIGBwcm90X25vbmVfd2Fsa19vcHNgKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGBwcm90X25vbmVfd2Fsa19vcHNgIGNvbnN0cnVjdC4gRmlyc3QgdGhpbmdzIGZpcnN0OiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IHdpdGggdGhlIG9idmlvdXMgYW5kIGh1bnQgZG93biBhbGwgdGhlIHBsYWNlcyB3aGVyZSB0aGlzIGlzIGFjdHVhbGx5ICp1c2VkKi4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHRoZSBjYWxsIHNpdGVzIHRvIHBpZWNlIHRvZ2V0aGVyIHRoZSBjb250cm9sIGZsb3cgYW5kIGRhdGEgZGVwZW5kZW5jaWVzLiBBIHNpbXBsZSBncmVwIHNob3VsZCBnZXQgbWUgdGhlIGltbWVkaWF0ZSByZWZlcmVuY2VzLiBUaGVuLCBJIGNhbiBzdGFydCBhbmFseXppbmcgaG93IGl0IGlzIHVzZWQgdGhlcmUgaW4gY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTY6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHJvdF9ub25lX3dhbGtfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vbXByb3RlY3QuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9tcHJvdGVjdC5jPTcxNz1zdGF0aWMgaW50IHByb3Rfbm9uZV90ZXN0KHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBuZXh0LFxuLS1cbm1tL21wcm90ZWN0LmMtNzIyLVxubW0vbXByb3RlY3QuYzo3MjM6c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBwcm90X25vbmVfd2Fsa19vcHMgPSB7XG5tbS9tcHJvdGVjdC5jLTcyNC1cdC5wdGVfZW50cnlcdFx0PSBwcm90X25vbmVfcHRlX2VudHJ5LFxuLS1cbm1tL21wcm90ZWN0LmM9NzMxPW1wcm90ZWN0X2ZpeHVwKHN0cnVjdCB2bWFfaXRlcmF0b3IgKnZtaSwgc3RydWN0IG1tdV9nYXRoZXIgKnRsYixcbi0tXG5tbS9tcHJvdGVjdC5jLTc2Mi1cdFx0ZXJyb3IgPSB3YWxrX3BhZ2VfcmFuZ2UoY3VycmVudC1cdTAwM2VtbSwgc3RhcnQsIGVuZCxcbm1tL21wcm90ZWN0LmM6NzYzOlx0XHRcdFx0XHUwMDI2cHJvdF9ub25lX3dhbGtfb3BzLCBcdTAwMjZuZXdfcGdwcm90KTtcbm1tL21wcm90ZWN0LmMtNzY0LVx0XHRpZiAoZXJyb3IpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE2OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczMzIKCQkJCQkJCW91dHB1dDogMTUyCgkJCQkJCQl0aG91Z2h0czogMzkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKgoKT2theSwgc28gSSYjMzk7dmUgdHJhY2VkIHRoZSBjb2RlIHBhdGggYW5kIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTt2ZSBmb3VuZC4gYHByb3Rfbm9uZV93YWxrX29wc2AgaXMgdXNlZCBpbiBgbXByb3RlY3RfZml4dXBgIHdoZW4gd2UmIzM5O3JlIG1vZGlmeWluZyBtZW1vcnkgcHJvdGVjdGlvbnMuIEFoLCBhbmQgYG1wcm90ZWN0X2ZpeHVwYCBpdHNlbGYgaXMgY2FsbGVkIGZyb20gYGRvX21wcm90ZWN0X3BrZXlgLiBUaGF0IG1lYW5zIGBwcm90X25vbmVfaHVnZXRsYl9lbnRyeWAgaXMgZGVmaW5pdGVseSByZWFjaGFibGUgdGhyb3VnaCBhIHNpbXBsZSBgbXByb3RlY3RgIGNhbGwgb24gYSBIdWdlVExCIG1hcHBpbmcgLSB0aGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4KCk5vdywgd2hhdCBhYm91dCB0aGUgb3RoZXIgZnVuY3Rpb25zIHRoYXQgbWlnaHQgYmUgaW52b2x2ZWQgaGVyZT8gYHRyeV90b191bm1hcF9vbmVgIGFuZCBgdHJ5X3RvX21pZ3JhdGVfb25lYCDigJMgdGhleSYjMzk7cmUgYWx3YXlzIGNvbXBpbGVkLCBzbyB3ZSBzaG91bGQgY29uc2lkZXIgdGhvc2UgdG9vLiBBbmQsIG9mIGNvdXJzZSwgYGNoZWNrX3B0ZWAgaXMgYWx3YXlzIHRoZXJlIHRvby4gYHJlbW92ZV9taWdyYXRpb25fcHRlYCBpcyBvbmx5IHRoZXJlIGlmIGBDT05GSUdfTUlHUkFUSU9OYCBpcyBlbmFibGVkLCBzbyB0aGF0JiMzOTtzIGNvbmRpdGlvbmFsLgoKU28sIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgaGVyZSBzZWVtIHRvIGJlIGBIVUdFVExCRlNgIGFuZCBgTUlHUkFUSU9OYC4gTGV0JiMzOTtzIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYEhVR0VUTEJGU2AgZG9lc24mIzM5O3QgZGVwZW5kIG9uIGFueXRoaW5nIGVsc2UgdGhhdCYjMzk7cyB1bnVzdWFsLiBOb3BlLCBpdCYjMzk7cyBwcmV0dHkgc3RhbmRhcmQuIEdvb2QuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgbG9vayBhdCBgQ09ORklHX01JR1JBVElPTmAuIFJpZ2h0LCBpdCYjMzk7cyBzZWxlY3RlZCBieSBgTlVNQV9CQUxBTkNJTkdgLCBgTUVNT1JZX0hPVFJFTU9WRWAsIGBDTUFgLCBhbmQgYENPTVBBQ1RJT05gLiBBbHNvIHN0YW5kYXJkLgoKT2theSwgbGV0JiMzOTtzIHN1bW1hcml6ZSBhbmQgZm9ybWFsaXplIHRoaXM6CgpJdCBsb29rcyBsaWtlIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBjaGFuZ2VzIHJlbGF0ZWQgdG8gUFRFIHJlYWRpbmcgZm9yIEh1Z2VUTEIgcGFnZXMgZHVyaW5nIHRoaW5ncyBsaWtlIHBhZ2UgbWlncmF0aW9uLCB1bm1hcHBpbmcsIGFuZCBtZW1vcnkgcHJvdGVjdGlvbiBtb2RpZmljYXRpb25zLiBUaGVzZSBhcmUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbnMgYW5kIGNhbiBiZSByZWFjaGVkIHRocm91Z2ggcHJldHR5IHN0YW5kYXJkIHN5c2NhbGxzIGxpa2UgYG1wcm90ZWN0YCwgYG1hZHZpc2VgLCBhbmQgYG1iaW5kYCwgZXNwZWNpYWxseSBvbiBIdWdlVExCIG1hcHBpbmdzLiBTbyB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4KCk15IGxpc3Qgb2YgdGFyZ2V0IHN5bWJvbHM6CgoqICAgYHJlbW92ZV9taWdyYXRpb25fcHRlYAoqICAgYHByb3Rfbm9uZV9odWdldGxiX2VudHJ5YAoqICAgYGNoZWNrX3B0ZWAKKiAgIGB0cnlfdG9fdW5tYXBfb25lYAoqICAgYHRyeV90b19taWdyYXRlX29uZWAKCkFuZCB0aGUgcmVxdWlyZWQgZW5hYmxlZCBjb25maWdzOgoKKiAgIGBIVUdFVExCRlNgCiogICBgTUlHUkFUSU9OYAoKVGltZSB0byBzZXQgdGhlc2UgcmVzdWx0cyBhbmQgbW92ZSBvbiB0byB0aGUgbmV4dCBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE2OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtIVUdFVExCRlMmIzM0OywKICAgICYjMzQ7TUlHUkFUSU9OJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cmVtb3ZlX21pZ3JhdGlvbl9wdGUmIzM0OywKICAgICYjMzQ7cHJvdF9ub25lX2h1Z2V0bGJfZW50cnkmIzM0OywKICAgICYjMzQ7Y2hlY2tfcHRlJiMzNDssCiAgICAmIzM0O3RyeV90b191bm1hcF9vbmUmIzM0OywKICAgICYjMzQ7dHJ5X3RvX21pZ3JhdGVfb25lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGhvdyBQVEVzIGFyZSByZWFkIGZvciBIdWdlVExCIHBhZ2VzIGR1cmluZyBwYWdlIG1pZ3JhdGlvbiwgdW5tYXBwaW5nLCBhbmQgbWVtb3J5IHByb3RlY3Rpb24gY2hhbmdlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgc3RhbmRhcmQgc3lzY2FsbHMgKGUuZy4sIG1wcm90ZWN0LCBtYWR2aXNlLCBtYmluZCkgb24gSHVnZVRMQiBtYXBwaW5ncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SFVHRVRMQkZTJiMzNDssCiAgICAmIzM0O01JR1JBVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JlbW92ZV9taWdyYXRpb25fcHRlJiMzNDssCiAgICAmIzM0O3Byb3Rfbm9uZV9odWdldGxiX2VudHJ5JiMzNDssCiAgICAmIzM0O2NoZWNrX3B0ZSYjMzQ7LAogICAgJiMzNDt0cnlfdG9fdW5tYXBfb25lJiMzNDssCiAgICAmIzM0O3RyeV90b19taWdyYXRlX29uZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBob3cgUFRFcyBhcmUgcmVhZCBmb3IgSHVnZVRMQiBwYWdlcyBkdXJpbmcgcGFnZSBtaWdyYXRpb24sIHVubWFwcGluZywgYW5kIG1lbW9yeSBwcm90ZWN0aW9uIGNoYW5nZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHN0YW5kYXJkIHN5c2NhbGxzIChlLmcuLCBtcHJvdGVjdCwgbWFkdmlzZSwgbWJpbmQpIG9uIEh1Z2VUTEIgbWFwcGluZ3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNjozMzo0Ni44MzM0NDY4NzZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjMwNDg4MzAxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIVUdFVExCRlNcIixcbiAgICBcIk1JR1JBVElPTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJlbW92ZV9taWdyYXRpb25fcHRlXCIsXG4gICAgXCJwcm90X25vbmVfaHVnZXRsYl9lbnRyeVwiLFxuICAgIFwiY2hlY2tfcHRlXCIsXG4gICAgXCJ0cnlfdG9fdW5tYXBfb25lXCIsXG4gICAgXCJ0cnlfdG9fbWlncmF0ZV9vbmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBob3cgUFRFcyBhcmUgcmVhZCBmb3IgSHVnZVRMQiBwYWdlcyBkdXJpbmcgcGFnZSBtaWdyYXRpb24sIHVubWFwcGluZywgYW5kIG1lbW9yeSBwcm90ZWN0aW9uIGNoYW5nZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHN0YW5kYXJkIHN5c2NhbGxzIChlLmcuLCBtcHJvdGVjdCwgbWFkdmlzZSwgbWJpbmQpIG9uIEh1Z2VUTEIgbWFwcGluZ3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE2OjMzOjQ2LjgzMzQ1MTc3NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIxODA2OTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTI5YzdiNTU1YmZmNzE2YzU1OGZhMDRkMGE3ZTIwMGQzZmJlNmRhY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1biAyNiAxNjozMzo0NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaCBiL2luY2x1ZGUvbGludXgvaHVnZXRsYi5oXFxuaW5kZXggMmFiYWY5OTMyMWU5MGQuLmZkYjdiZGY3NjQ1YzU5IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvaHVnZXRsYi5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9odWdldGxiLmhcXG5AQCAtMTI2MSw2ICsxMjYxLDkgQEAgc3RhdGljIGlubGluZSB2b2lkIGh1Z2V0bGJfY291bnRfc3ViKGxvbmcgbCwgc3RydWN0IG1tX3N0cnVjdCAqbW0pXFxuIHtcXG4gfVxcbiBcXG4rcHRlX3QgaHVnZV9wdGVwX2dldChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbitcXHRcXHQgICAgcHRlX3QgKnB0ZXApO1xcbitcXG4gc3RhdGljIGlubGluZSBwdGVfdCBodWdlX3B0ZXBfY2xlYXJfZmx1c2goc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuIFxcdFxcdFxcdFxcdFxcdCAgdW5zaWduZWQgbG9uZyBhZGRyLCBwdGVfdCAqcHRlcClcXG4ge1xcbmRpZmYgLS1naXQgYS9tbS9taWdyYXRlLmMgYi9tbS9taWdyYXRlLmNcXG5pbmRleCBkOWIyMzkwOWQ3MTZjNi4uYzY1ZjBmNDNkZjdlYmIgMTAwNjQ0XFxuLS0tIGEvbW0vbWlncmF0ZS5jXFxuKysrIGIvbW0vbWlncmF0ZS5jXFxuQEAgLTM3MSw3ICszNzEsMTEgQEAgc3RhdGljIGJvb2wgcmVtb3ZlX21pZ3JhdGlvbl9wdGUoc3RydWN0IGZvbGlvICpmb2xpbyxcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdH1cXG4gI2VuZGlmXFxuLVxcdFxcdG9sZF9wdGUgPSBwdGVwX2dldChwdm13LnB0ZSk7XFxuK1xcdFxcdGlmIChmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pKVxcbitcXHRcXHRcXHRvbGRfcHRlID0gaHVnZV9wdGVwX2dldCh2bWEtXFx1MDAzZXZtX21tLCBwdm13LmFkZHJlc3MsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdHB2bXcucHRlKTtcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRvbGRfcHRlID0gcHRlcF9nZXQocHZtdy5wdGUpO1xcbiBcXHRcXHRpZiAocm1hcF93YWxrX2FyZy1cXHUwMDNlbWFwX3VudXNlZF90b196ZXJvcGFnZSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgdHJ5X3RvX21hcF91bnVzZWRfdG9femVyb3BhZ2UoXFx1MDAyNnB2bXcsIGZvbGlvLCBvbGRfcHRlLCBpZHgpKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG5kaWZmIC0tZ2l0IGEvbW0vbXByb3RlY3QuYyBiL21tL21wcm90ZWN0LmNcXG5pbmRleCA5Y2JmOTMyYjAyOGNmOS4uMjM3Nzk2MzJkMThiZjIgMTAwNjQ0XFxuLS0tIGEvbW0vbXByb3RlY3QuY1xcbisrKyBiL21tL21wcm90ZWN0LmNcXG5AQCAtNjk5LDE0ICs2OTksMjAgQEAgc3RhdGljIGludCBwcm90X25vbmVfcHRlX2VudHJ5KHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4gXFx0XFx0MCA6IC1FQUNDRVM7XFxuIH1cXG4gXFxuKyNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuIHN0YXRpYyBpbnQgcHJvdF9ub25lX2h1Z2V0bGJfZW50cnkocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBobWFzayxcXG4gXFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIG5leHQsXFxuIFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBtbV93YWxrICp3YWxrKVxcbiB7XFxuLVxcdHJldHVybiBwZm5fbW9kaWZ5X2FsbG93ZWQocHRlX3BmbihwdGVwX2dldChwdGUpKSxcXG4rXFx0cHRlX3QgZW50cnkgPSBodWdlX3B0ZXBfZ2V0KHdhbGstXFx1MDAzZW1tLCBhZGRyLCBwdGUpO1xcbitcXG4rXFx0cmV0dXJuIHBmbl9tb2RpZnlfYWxsb3dlZChwdGVfcGZuKGVudHJ5KSxcXG4gXFx0XFx0XFx0XFx0ICAqKHBncHJvdF90ICopKHdhbGstXFx1MDAzZXByaXZhdGUpKSA/XFxuIFxcdFxcdDAgOiAtRUFDQ0VTO1xcbiB9XFxuKyNlbHNlXFxuKyNkZWZpbmUgcHJvdF9ub25lX2h1Z2V0bGJfZW50cnlcXHROVUxMXFxuKyNlbmRpZlxcbiBcXG4gc3RhdGljIGludCBwcm90X25vbmVfdGVzdCh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgbmV4dCxcXG4gXFx0XFx0XFx0ICBzdHJ1Y3QgbW1fd2FsayAqd2FsaylcXG5kaWZmIC0tZ2l0IGEvbW0vcGFnZV92bWFfbWFwcGVkLmMgYi9tbS9wYWdlX3ZtYV9tYXBwZWQuY1xcbmluZGV4IDJjY2JhYmZiMmNjMTdhLi4xOGUxZDM0MWY0NjNjOSAxMDA2NDRcXG4tLS0gYS9tbS9wYWdlX3ZtYV9tYXBwZWQuY1xcbisrKyBiL21tL3BhZ2Vfdm1hX21hcHBlZC5jXFxuQEAgLTEwNyw3ICsxMDcsMTMgQEAgc3RhdGljIGJvb2wgbWFwX3B0ZShzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcsIHBtZF90ICpwbWR2YWxwLFxcbiBzdGF0aWMgYm9vbCBjaGVja19wdGUoc3RydWN0IHBhZ2Vfdm1hX21hcHBlZF93YWxrICpwdm13LCB1bnNpZ25lZCBsb25nIHB0ZV9ucilcXG4ge1xcbiBcXHR1bnNpZ25lZCBsb25nIHBmbjtcXG4tXFx0cHRlX3QgcHRlbnQgPSBwdGVwX2dldChwdm13LVxcdTAwM2VwdGUpO1xcbitcXHRwdGVfdCBwdGVudDtcXG4rXFxuK1xcdGlmIChpc192bV9odWdldGxiX3BhZ2UocHZtdy1cXHUwMDNldm1hKSlcXG4rXFx0XFx0cHRlbnQgPSBodWdlX3B0ZXBfZ2V0KHB2bXctXFx1MDAzZXZtYS1cXHUwMDNldm1fbW0sIHB2bXctXFx1MDAzZWFkZHJlc3MsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHB2bXctXFx1MDAzZXB0ZSk7XFxuK1xcdGVsc2VcXG4rXFx0XFx0cHRlbnQgPSBwdGVwX2dldChwdm13LVxcdTAwM2VwdGUpO1xcbiBcXG4gXFx0aWYgKHB2bXctXFx1MDAzZWZsYWdzIFxcdTAwMjYgUFZNV19NSUdSQVRJT04pIHtcXG4gXFx0XFx0Y29uc3Qgc29mdGxlYWZfdCBlbnRyeSA9IHNvZnRsZWFmX2Zyb21fcHRlKHB0ZW50KTtcXG5kaWZmIC0tZ2l0IGEvbW0vcm1hcC5jIGIvbW0vcm1hcC5jXFxuaW5kZXggMWM3N2Q1ZGMwNmU5ZmEuLmFiYzNhNDRiYWFhM2RmIDEwMDY0NFxcbi0tLSBhL21tL3JtYXAuY1xcbisrKyBiL21tL3JtYXAuY1xcbkBAIC0yMDk1LDExICsyMDk1LDE2IEBAIHN0YXRpYyBib29sIHRyeV90b191bm1hcF9vbmUoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuIFxcdFxcdC8qIFVuZXhwZWN0ZWQgUE1ELW1hcHBlZCBUSFA/ICovXFxuIFxcdFxcdFZNX0JVR19PTl9GT0xJTyghcHZtdy5wdGUsIGZvbGlvKTtcXG4gXFxuLVxcdFxcdC8qXFxuLVxcdFxcdCAqIEhhbmRsZSBQRk4gc3dhcCBQVEVzLCBzdWNoIGFzIGRldmljZS1leGNsdXNpdmUgb25lcywgdGhhdFxcbi1cXHRcXHQgKiBhY3R1YWxseSBtYXAgcGFnZXMuXFxuLVxcdFxcdCAqL1xcbi1cXHRcXHRwdGV2YWwgPSBwdGVwX2dldChwdm13LnB0ZSk7XFxuK1xcdFxcdGFkZHJlc3MgPSBwdm13LmFkZHJlc3M7XFxuK1xcdFxcdGlmIChmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pKSB7XFxuK1xcdFxcdFxcdHB0ZXZhbCA9IGh1Z2VfcHRlcF9nZXQobW0sIGFkZHJlc3MsIHB2bXcucHRlKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0LypcXG4rXFx0XFx0XFx0ICogSGFuZGxlIFBGTiBzd2FwIFBURXMsIHN1Y2ggYXMgZGV2aWNlLWV4Y2x1c2l2ZSBvbmVzLFxcbitcXHRcXHRcXHQgKiB0aGF0IGFjdHVhbGx5IG1hcCBwYWdlcy5cXG4rXFx0XFx0XFx0ICovXFxuK1xcdFxcdFxcdHB0ZXZhbCA9IHB0ZXBfZ2V0KHB2bXcucHRlKTtcXG4rXFx0XFx0fVxcbiBcXHRcXHRpZiAobGlrZWx5KHB0ZV9wcmVzZW50KHB0ZXZhbCkpKSB7XFxuIFxcdFxcdFxcdHBmbiA9IHB0ZV9wZm4ocHRldmFsKTtcXG4gXFx0XFx0fSBlbHNlIHtcXG5AQCAtMjExMCw3ICsyMTE1LDYgQEAgc3RhdGljIGJvb2wgdHJ5X3RvX3VubWFwX29uZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0c3VicGFnZSA9IGZvbGlvX3BhZ2UoZm9saW8sIHBmbiAtIGZvbGlvX3Bmbihmb2xpbykpO1xcbi1cXHRcXHRhZGRyZXNzID0gcHZtdy5hZGRyZXNzO1xcbiBcXHRcXHRhbm9uX2V4Y2x1c2l2ZSA9IGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0XFx0IFBhZ2VBbm9uRXhjbHVzaXZlKHN1YnBhZ2UpO1xcbiBcXG5AQCAtMjUwMSwxMSArMjUwNSwxNiBAQCBzdGF0aWMgYm9vbCB0cnlfdG9fbWlncmF0ZV9vbmUoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuIFxcdFxcdC8qIFVuZXhwZWN0ZWQgUE1ELW1hcHBlZCBUSFA/ICovXFxuIFxcdFxcdFZNX0JVR19PTl9GT0xJTyghcHZtdy5wdGUsIGZvbGlvKTtcXG4gXFxuLVxcdFxcdC8qXFxuLVxcdFxcdCAqIEhhbmRsZSBQRk4gc3dhcCBQVEVzLCBzdWNoIGFzIGRldmljZS1leGNsdXNpdmUgb25lcywgdGhhdFxcbi1cXHRcXHQgKiBhY3R1YWxseSBtYXAgcGFnZXMuXFxuLVxcdFxcdCAqL1xcbi1cXHRcXHRwdGV2YWwgPSBwdGVwX2dldChwdm13LnB0ZSk7XFxuK1xcdFxcdGFkZHJlc3MgPSBwdm13LmFkZHJlc3M7XFxuK1xcdFxcdGlmIChmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pKSB7XFxuK1xcdFxcdFxcdHB0ZXZhbCA9IGh1Z2VfcHRlcF9nZXQobW0sIGFkZHJlc3MsIHB2bXcucHRlKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0LypcXG4rXFx0XFx0XFx0ICogSGFuZGxlIFBGTiBzd2FwIFBURXMsIHN1Y2ggYXMgZGV2aWNlLWV4Y2x1c2l2ZSBvbmVzLFxcbitcXHRcXHRcXHQgKiB0aGF0IGFjdHVhbGx5IG1hcCBwYWdlcy5cXG4rXFx0XFx0XFx0ICovXFxuK1xcdFxcdFxcdHB0ZXZhbCA9IHB0ZXBfZ2V0KHB2bXcucHRlKTtcXG4rXFx0XFx0fVxcbiBcXHRcXHRpZiAobGlrZWx5KHB0ZV9wcmVzZW50KHB0ZXZhbCkpKSB7XFxuIFxcdFxcdFxcdHBmbiA9IHB0ZV9wZm4ocHRldmFsKTtcXG4gXFx0XFx0fSBlbHNlIHtcXG5AQCAtMjUxNiw3ICsyNTI1LDYgQEAgc3RhdGljIGJvb2wgdHJ5X3RvX21pZ3JhdGVfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRzdWJwYWdlID0gZm9saW9fcGFnZShmb2xpbywgcGZuIC0gZm9saW9fcGZuKGZvbGlvKSk7XFxuLVxcdFxcdGFkZHJlc3MgPSBwdm13LmFkZHJlc3M7XFxuIFxcdFxcdGFub25fZXhjbHVzaXZlID0gZm9saW9fdGVzdF9hbm9uKGZvbGlvKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHRcXHQgUGFnZUFub25FeGNsdXNpdmUoc3VicGFnZSk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNjozMzo0Ny40NTYwMjEyOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU2ODIyOTk2NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSFVHRVRMQkZTXCIsXG4gICAgXCJNSUdSQVRJT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyZW1vdmVfbWlncmF0aW9uX3B0ZVwiLFxuICAgIFwicHJvdF9ub25lX2h1Z2V0bGJfZW50cnlcIixcbiAgICBcImNoZWNrX3B0ZVwiLFxuICAgIFwidHJ5X3RvX3VubWFwX29uZVwiLFxuICAgIFwidHJ5X3RvX21pZ3JhdGVfb25lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgaG93IFBURXMgYXJlIHJlYWQgZm9yIEh1Z2VUTEIgcGFnZXMgZHVyaW5nIHBhZ2UgbWlncmF0aW9uLCB1bm1hcHBpbmcsIGFuZCBtZW1vcnkgcHJvdGVjdGlvbiBjaGFuZ2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBzdGFuZGFyZCBzeXNjYWxscyAoZS5nLiwgbXByb3RlY3QsIG1hZHZpc2UsIG1iaW5kKSBvbiBIdWdlVExCIG1hcHBpbmdzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDEyOWM3YjU1NWJmZjcxNmM1NThmYTA0ZDBhN2UyMDBkM2ZiZTZkYWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAyNiAxNjozMzo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaHVnZXRsYi5oIGIvaW5jbHVkZS9saW51eC9odWdldGxiLmhcbmluZGV4IDJhYmFmOTkzMjFlOTBkLi5mZGI3YmRmNzY0NWM1OSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvaHVnZXRsYi5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaFxuQEAgLTEyNjEsNiArMTI2MSw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBodWdldGxiX2NvdW50X3N1Yihsb25nIGwsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxuIHtcbiB9XG4gXG4rcHRlX3QgaHVnZV9wdGVwX2dldChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuK1x0XHQgICAgcHRlX3QgKnB0ZXApO1xuK1xuIHN0YXRpYyBpbmxpbmUgcHRlX3QgaHVnZV9wdGVwX2NsZWFyX2ZsdXNoKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuIFx0XHRcdFx0XHQgIHVuc2lnbmVkIGxvbmcgYWRkciwgcHRlX3QgKnB0ZXApXG4ge1xuZGlmZiAtLWdpdCBhL21tL21pZ3JhdGUuYyBiL21tL21pZ3JhdGUuY1xuaW5kZXggZDliMjM5MDlkNzE2YzYuLmM2NWYwZjQzZGY3ZWJiIDEwMDY0NFxuLS0tIGEvbW0vbWlncmF0ZS5jXG4rKysgYi9tbS9taWdyYXRlLmNcbkBAIC0zNzEsNyArMzcxLDExIEBAIHN0YXRpYyBib29sIHJlbW92ZV9taWdyYXRpb25fcHRlKHN0cnVjdCBmb2xpbyAqZm9saW8sXG4gXHRcdFx0Y29udGludWU7XG4gXHRcdH1cbiAjZW5kaWZcbi1cdFx0b2xkX3B0ZSA9IHB0ZXBfZ2V0KHB2bXcucHRlKTtcbitcdFx0aWYgKGZvbGlvX3Rlc3RfaHVnZXRsYihmb2xpbykpXG4rXHRcdFx0b2xkX3B0ZSA9IGh1Z2VfcHRlcF9nZXQodm1hLVx1MDAzZXZtX21tLCBwdm13LmFkZHJlc3MsXG4rXHRcdFx0XHRcdFx0cHZtdy5wdGUpO1xuK1x0XHRlbHNlXG4rXHRcdFx0b2xkX3B0ZSA9IHB0ZXBfZ2V0KHB2bXcucHRlKTtcbiBcdFx0aWYgKHJtYXBfd2Fsa19hcmctXHUwMDNlbWFwX3VudXNlZF90b196ZXJvcGFnZSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIHRyeV90b19tYXBfdW51c2VkX3RvX3plcm9wYWdlKFx1MDAyNnB2bXcsIGZvbGlvLCBvbGRfcHRlLCBpZHgpKVxuIFx0XHRcdGNvbnRpbnVlO1xuZGlmZiAtLWdpdCBhL21tL21wcm90ZWN0LmMgYi9tbS9tcHJvdGVjdC5jXG5pbmRleCA5Y2JmOTMyYjAyOGNmOS4uMjM3Nzk2MzJkMThiZjIgMTAwNjQ0XG4tLS0gYS9tbS9tcHJvdGVjdC5jXG4rKysgYi9tbS9tcHJvdGVjdC5jXG5AQCAtNjk5LDE0ICs2OTksMjAgQEAgc3RhdGljIGludCBwcm90X25vbmVfcHRlX2VudHJ5KHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgYWRkcixcbiBcdFx0MCA6IC1FQUNDRVM7XG4gfVxuIFxuKyNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG4gc3RhdGljIGludCBwcm90X25vbmVfaHVnZXRsYl9lbnRyeShwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGhtYXNrLFxuIFx0XHRcdFx0ICAgdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIG5leHQsXG4gXHRcdFx0XHQgICBzdHJ1Y3QgbW1fd2FsayAqd2FsaylcbiB7XG4tXHRyZXR1cm4gcGZuX21vZGlmeV9hbGxvd2VkKHB0ZV9wZm4ocHRlcF9nZXQocHRlKSksXG4rXHRwdGVfdCBlbnRyeSA9IGh1Z2VfcHRlcF9nZXQod2Fsay1cdTAwM2VtbSwgYWRkciwgcHRlKTtcbitcbitcdHJldHVybiBwZm5fbW9kaWZ5X2FsbG93ZWQocHRlX3BmbihlbnRyeSksXG4gXHRcdFx0XHQgICoocGdwcm90X3QgKikod2Fsay1cdTAwM2Vwcml2YXRlKSkgP1xuIFx0XHQwIDogLUVBQ0NFUztcbiB9XG4rI2Vsc2VcbisjZGVmaW5lIHByb3Rfbm9uZV9odWdldGxiX2VudHJ5XHROVUxMXG4rI2VuZGlmXG4gXG4gc3RhdGljIGludCBwcm90X25vbmVfdGVzdCh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgbmV4dCxcbiBcdFx0XHQgIHN0cnVjdCBtbV93YWxrICp3YWxrKVxuZGlmZiAtLWdpdCBhL21tL3BhZ2Vfdm1hX21hcHBlZC5jIGIvbW0vcGFnZV92bWFfbWFwcGVkLmNcbmluZGV4IDJjY2JhYmZiMmNjMTdhLi4xOGUxZDM0MWY0NjNjOSAxMDA2NDRcbi0tLSBhL21tL3BhZ2Vfdm1hX21hcHBlZC5jXG4rKysgYi9tbS9wYWdlX3ZtYV9tYXBwZWQuY1xuQEAgLTEwNyw3ICsxMDcsMTMgQEAgc3RhdGljIGJvb2wgbWFwX3B0ZShzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcsIHBtZF90ICpwbWR2YWxwLFxuIHN0YXRpYyBib29sIGNoZWNrX3B0ZShzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcsIHVuc2lnbmVkIGxvbmcgcHRlX25yKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgcGZuO1xuLVx0cHRlX3QgcHRlbnQgPSBwdGVwX2dldChwdm13LVx1MDAzZXB0ZSk7XG4rXHRwdGVfdCBwdGVudDtcbitcbitcdGlmIChpc192bV9odWdldGxiX3BhZ2UocHZtdy1cdTAwM2V2bWEpKVxuK1x0XHRwdGVudCA9IGh1Z2VfcHRlcF9nZXQocHZtdy1cdTAwM2V2bWEtXHUwMDNldm1fbW0sIHB2bXctXHUwMDNlYWRkcmVzcyxcbitcdFx0XHRcdCAgICAgIHB2bXctXHUwMDNlcHRlKTtcbitcdGVsc2VcbitcdFx0cHRlbnQgPSBwdGVwX2dldChwdm13LVx1MDAzZXB0ZSk7XG4gXG4gXHRpZiAocHZtdy1cdTAwM2VmbGFncyBcdTAwMjYgUFZNV19NSUdSQVRJT04pIHtcbiBcdFx0Y29uc3Qgc29mdGxlYWZfdCBlbnRyeSA9IHNvZnRsZWFmX2Zyb21fcHRlKHB0ZW50KTtcbmRpZmYgLS1naXQgYS9tbS9ybWFwLmMgYi9tbS9ybWFwLmNcbmluZGV4IDFjNzdkNWRjMDZlOWZhLi5hYmMzYTQ0YmFhYTNkZiAxMDA2NDRcbi0tLSBhL21tL3JtYXAuY1xuKysrIGIvbW0vcm1hcC5jXG5AQCAtMjA5NSwxMSArMjA5NSwxNiBAQCBzdGF0aWMgYm9vbCB0cnlfdG9fdW5tYXBfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuIFx0XHQvKiBVbmV4cGVjdGVkIFBNRC1tYXBwZWQgVEhQPyAqL1xuIFx0XHRWTV9CVUdfT05fRk9MSU8oIXB2bXcucHRlLCBmb2xpbyk7XG4gXG4tXHRcdC8qXG4tXHRcdCAqIEhhbmRsZSBQRk4gc3dhcCBQVEVzLCBzdWNoIGFzIGRldmljZS1leGNsdXNpdmUgb25lcywgdGhhdFxuLVx0XHQgKiBhY3R1YWxseSBtYXAgcGFnZXMuXG4tXHRcdCAqL1xuLVx0XHRwdGV2YWwgPSBwdGVwX2dldChwdm13LnB0ZSk7XG4rXHRcdGFkZHJlc3MgPSBwdm13LmFkZHJlc3M7XG4rXHRcdGlmIChmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pKSB7XG4rXHRcdFx0cHRldmFsID0gaHVnZV9wdGVwX2dldChtbSwgYWRkcmVzcywgcHZtdy5wdGUpO1xuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdC8qXG4rXHRcdFx0ICogSGFuZGxlIFBGTiBzd2FwIFBURXMsIHN1Y2ggYXMgZGV2aWNlLWV4Y2x1c2l2ZSBvbmVzLFxuK1x0XHRcdCAqIHRoYXQgYWN0dWFsbHkgbWFwIHBhZ2VzLlxuK1x0XHRcdCAqL1xuK1x0XHRcdHB0ZXZhbCA9IHB0ZXBfZ2V0KHB2bXcucHRlKTtcbitcdFx0fVxuIFx0XHRpZiAobGlrZWx5KHB0ZV9wcmVzZW50KHB0ZXZhbCkpKSB7XG4gXHRcdFx0cGZuID0gcHRlX3BmbihwdGV2YWwpO1xuIFx0XHR9IGVsc2Uge1xuQEAgLTIxMTAsNyArMjExNSw2IEBAIHN0YXRpYyBib29sIHRyeV90b191bm1hcF9vbmUoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4gXHRcdH1cbiBcbiBcdFx0c3VicGFnZSA9IGZvbGlvX3BhZ2UoZm9saW8sIHBmbiAtIGZvbGlvX3Bmbihmb2xpbykpO1xuLVx0XHRhZGRyZXNzID0gcHZtdy5hZGRyZXNzO1xuIFx0XHRhbm9uX2V4Y2x1c2l2ZSA9IGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgXHUwMDI2XHUwMDI2XG4gXHRcdFx0XHQgUGFnZUFub25FeGNsdXNpdmUoc3VicGFnZSk7XG4gXG5AQCAtMjUwMSwxMSArMjUwNSwxNiBAQCBzdGF0aWMgYm9vbCB0cnlfdG9fbWlncmF0ZV9vbmUoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4gXHRcdC8qIFVuZXhwZWN0ZWQgUE1ELW1hcHBlZCBUSFA/ICovXG4gXHRcdFZNX0JVR19PTl9GT0xJTyghcHZtdy5wdGUsIGZvbGlvKTtcbiBcbi1cdFx0Lypcbi1cdFx0ICogSGFuZGxlIFBGTiBzd2FwIFBURXMsIHN1Y2ggYXMgZGV2aWNlLWV4Y2x1c2l2ZSBvbmVzLCB0aGF0XG4tXHRcdCAqIGFjdHVhbGx5IG1hcCBwYWdlcy5cbi1cdFx0ICovXG4tXHRcdHB0ZXZhbCA9IHB0ZXBfZ2V0KHB2bXcucHRlKTtcbitcdFx0YWRkcmVzcyA9IHB2bXcuYWRkcmVzcztcbitcdFx0aWYgKGZvbGlvX3Rlc3RfaHVnZXRsYihmb2xpbykpIHtcbitcdFx0XHRwdGV2YWwgPSBodWdlX3B0ZXBfZ2V0KG1tLCBhZGRyZXNzLCBwdm13LnB0ZSk7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0LypcbitcdFx0XHQgKiBIYW5kbGUgUEZOIHN3YXAgUFRFcywgc3VjaCBhcyBkZXZpY2UtZXhjbHVzaXZlIG9uZXMsXG4rXHRcdFx0ICogdGhhdCBhY3R1YWxseSBtYXAgcGFnZXMuXG4rXHRcdFx0ICovXG4rXHRcdFx0cHRldmFsID0gcHRlcF9nZXQocHZtdy5wdGUpO1xuK1x0XHR9XG4gXHRcdGlmIChsaWtlbHkocHRlX3ByZXNlbnQocHRldmFsKSkpIHtcbiBcdFx0XHRwZm4gPSBwdGVfcGZuKHB0ZXZhbCk7XG4gXHRcdH0gZWxzZSB7XG5AQCAtMjUxNiw3ICsyNTI1LDYgQEAgc3RhdGljIGJvb2wgdHJ5X3RvX21pZ3JhdGVfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuIFx0XHR9XG4gXG4gXHRcdHN1YnBhZ2UgPSBmb2xpb19wYWdlKGZvbGlvLCBwZm4gLSBmb2xpb19wZm4oZm9saW8pKTtcbi1cdFx0YWRkcmVzcyA9IHB2bXcuYWRkcmVzcztcbiBcdFx0YW5vbl9leGNsdXNpdmUgPSBmb2xpb190ZXN0X2Fub24oZm9saW8pIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0IFBhZ2VBbm9uRXhjbHVzaXZlKHN1YnBhZ2UpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTY6MzM6NDcuNDU2MDIyNDhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTIwMTM1NTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEh1Z2V0bGIgUFRFIFJlYWQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBpdCdzIGEgcHJldHR5IHRhcmdldGVkIGJ1dCBwb3RlbnRpYWxseSBpbXBhY3RmdWwgY2hhbmdlIHdpdGhpbiB0aGUgTU0gY29yZS4gVGhleSdyZSBzd2FwcGluZyBvdXQgdGhlIHN0YW5kYXJkIGBwdGVwX2dldCgpYCBmb3IgYGh1Z2VfcHRlcF9nZXQoKWAgd2hlbiBkZWFsaW5nIHdpdGggSHVnZVRMQiBwYWdlcy4gVGhlIGxvY2F0aW9ucyB0aGV5J3ZlIHRvdWNoZWQg4oCTIGBtbS9taWdyYXRlLmNgLCBgbW0vbXByb3RlY3QuY2AsIGBtbS9wYWdlX3ZtYV9tYXBwZWQuY2AsIGFuZCBgbW0vcm1hcC5jYCDigJMgYXJlIGFsbCBrZXkgYXJlYXMgaW4gbWVtb3J5IG1hbmFnZW1lbnQsIGVzcGVjaWFsbHkgY29uY2VybmluZyBQVEUgaGFuZGxpbmcgYW5kIHBhZ2UgbWlncmF0aW9uLCBwcm90ZWN0aW9uLCBhbmQgcmV2ZXJzZSBtYXBwaW5ncy4gUmVwbGFjaW5nIHRoZSBvcmlnaW5hbCBgcHRlcF9nZXRgIGZ1bmN0aW9uIHdpdGggYGh1Z2VfcHRlcF9nZXRgIGlzIGEgcHJldHR5IGNsZWFyIGluZGljYXRpb24gdGhhdCBpdCdzIGdvaW5nIHRvIGFmZmVjdCBob3cgdGhlc2UgcGFydGljdWxhciBtZW1vcnkgcGFnZXMgYXJlIHByb2Nlc3NlZC5cblxuVGhpcyBpcyBjb3JlIE1NIGNvZGUsIGFuZCBkaXJlY3RseSByZWxhdGVkIHRvIEh1Z2VUTEIgcGFnZXMsIHNvIHRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBhIGZ1enppbmcgY2FtcGFpZ24gdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBzdWJ0bGUgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvcnMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByaWdodCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gZW5hYmxlIHRoaXMgY29kZSBwYXRoLlxuXG5SaWdodCBvZmYgdGhlIGJhdCwgdGhlIGAjaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRWAgZ3VhcmQgaW4gYG1tL21wcm90ZWN0LmNgIHNjcmVhbXMgdGhhdCBgSFVHRVRMQl9QQUdFYCBpcyB0aGUgZXNzZW50aWFsIGNvbmZpZy4gSSdtIGFsc28gc2VlaW5nIHJlZmVyZW5jZXMgdG8gYGZvbGlvX3Rlc3RfaHVnZXRsYmAgYW5kIGBpc192bV9odWdldGxiX3BhZ2VgLCB3aGljaCBmdXJ0aGVyIHJlaW5mb3JjZXMgdGhhdCBgSFVHRVRMQl9QQUdFYCBpcyBub24tbmVnb3RpYWJsZS5cblxuTm93LCBsZXQncyBzZWUgd2hhdCBlbHNlIG1pZ2h0IGJlIG5lY2Vzc2FyeS4gYG1tL21pZ3JhdGUuY2AgZGVwZW5kcyBvbiBgQ09ORklHX01JR1JBVElPTmAsIHdoaWNoIG1lYW5zIGlmIHRoZSBtaWdyYXRpb24gY29tcG9uZW50IGlzIGVuYWJsZWQsIGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byB0cmlnZ2VyIHRoZSBwYXRoLiBUaGUgb3RoZXIgZmlsZXMgc2VlbSB0byBiZSBjb21waWxlZCByZWdhcmRsZXNzIG9mIG90aGVyIG9wdGlvbnMuIEkgbmVlZCB0byB2ZXJpZnkgYENPTkZJR19NSUdSQVRJT05gIGFuZCwgb2YgY291cnNlLCBjb25maXJtIHRoYXQgYEhVR0VUTEJfUEFHRWAgaXMgYWN0aXZlLiBJIHdpbGwgY2hlY2sgYG1tL01ha2VmaWxlYCB1c2luZyBgZ3JlcHBlcmAgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgdGhlc2UgYXJlIHRoZSBvbmx5IHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjA2LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzY0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTY6MzM6NTMuOTc2MTYwNzg3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4NzIwMDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1pZ3JhdGUub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9NYWtlZmlsZT05Nz1vYmotJChDT05GSUdfTUVNVEVTVClcXHRcXHQrPSBtZW10ZXN0Lm9cXG5tbS9NYWtlZmlsZTo5ODpvYmotJChDT05GSUdfTUlHUkFUSU9OKSArPSBtaWdyYXRlLm9cXG5tbS9NYWtlZmlsZS05OS1vYmotJChDT05GSUdfTlVNQSkgKz0gbWVtb3J5LXRpZXJzLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTY6MzM6NTQuMDc0ODg3OTM1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY2OTE2NDYzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBzdW1tYXJ5OlxuXG4qKktlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyAtIE1pZ3JhdGUgYW5kIEh1Z2VUTEIgUGFnZXMqKlxuXG5SaWdodCwgc28gSSdtIGZvY3VzaW5nIG9uIGBtbS9taWdyYXRlLmNgIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBUaGUgY3J1Y2lhbCBwb2ludCBoZXJlIGlzIHRoYXQgYENPTkZJR19NSUdSQVRJT05gIGlzIGRlZmluaXRlbHkgcmVxdWlyZWQgZm9yIHRoZSBtaWdyYXRpb24gZnVuY3Rpb25hbGl0eSBpbiB0aGF0IGZpbGUuIFRoYXQncyBhIGdpdmVuLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBpbmZsdWVuY2UgdGhpcyBtb2R1bGUuIExldCdzIHNlZSB3aGF0J3MgcmVsYXRlZCB0byB0aGUgYEhVR0VUTEJfUEFHRWAgY29uZmlndXJhdGlvbiBvcHRpb24gYW5kIGhvdyB0aGF0IGVmZmVjdHMgdGhpcyBhc3BlY3QuIEkgd2lsbCBzdGFydCBieSBsb29raW5nIGludG8gdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ5OCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE2OjMzOjU4Ljc0NDA2Mjg1OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDcwMzM0MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaHVnZXRsYi5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL01ha2VmaWxlPTgwPW9iai0kKENPTkZJR19IQVNfRE1BKVxcdCs9IGRtYXBvb2wub1xcbm1tL01ha2VmaWxlOjgxOm9iai0kKENPTkZJR19IVUdFVExCRlMpXFx0Kz0gaHVnZXRsYi5vIGh1Z2V0bGJfc3lzZnMubyBodWdldGxiX3N5c2N0bC5vXFxubW0vTWFrZWZpbGUtODItaWZkZWYgQ09ORklHX0NNQVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNjozMzo1OC44NTExMjQzMTVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQ1NzEzNTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi4gSSdtIGxvb2tpbmcgYXQgdGhpcyBhbmQgdGhpbmtpbmcsIFwiQWhhISBgQ09ORklHX0hVR0VUTEJGU2AuLi4gdGhhdCdzIGRlZmluaXRlbHkgcG9pbnRpbmcgdG93YXJkcyB0aGUgYGh1Z2V0bGIub2Agb2JqZWN0LlwiIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCwgc28gSSBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuIE15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRlbHZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSBzaG91bGQgbG9vayBhdCBgQ09ORklHX0hVR0VUTEJfUEFHRWAgd2l0aGluIGVpdGhlciBgbW0vS2NvbmZpZ2Agb3IgYGZzL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgSSdsbCBmaW5kIHRoZSBmaW5lciBkZXRhaWxzIGFuZCB0aGUgY29ubmVjdGlvbiB0byB0aGUgbGFyZ2VyIG1lbW9yeSBtYW5hZ2VtZW50IG9yIGZpbGVzeXN0ZW0gY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3ODEsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNjozNDowMS43OTY4NDA4OTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUwMDExOTQ0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSFVHRVRMQl9QQUdFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvc2gvbW0vS2NvbmZpZz0xNTg9Y2hvaWNlXFxuLS1cXG5hcmNoL3NoL21tL0tjb25maWctMTYzLVxcbmFyY2gvc2gvbW0vS2NvbmZpZzoxNjQ6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzY0S1xcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNjUtXFx0Ym9vbCBcXFwiNjRrQlxcXCJcXG4tLVxcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNjctXFxuYXJjaC9zaC9tbS9LY29uZmlnOjE2ODpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfMjU2S1xcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNjktXFx0Ym9vbCBcXFwiMjU2a0JcXFwiXFxuLS1cXG5hcmNoL3NoL21tL0tjb25maWctMTcxLVxcbmFyY2gvc2gvbW0vS2NvbmZpZzoxNzI6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzFNQlxcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzMtXFx0Ym9vbCBcXFwiMU1CXFxcIlxcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzQtXFxuYXJjaC9zaC9tbS9LY29uZmlnOjE3NTpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfNE1CXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE3Ni1cXHRib29sIFxcXCI0TUJcXFwiXFxuLS1cXG5hcmNoL3NoL21tL0tjb25maWctMTc4LVxcbmFyY2gvc2gvbW0vS2NvbmZpZzoxNzk6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzY0TUJcXG5hcmNoL3NoL21tL0tjb25maWctMTgwLVxcdGJvb2wgXFxcIjY0TUJcXFwiXFxuLS1cXG5mcy9LY29uZmlnPTI2Mj1pZiBIVUdFVExCRlNcXG5mcy9LY29uZmlnOjI2Mzpjb25maWcgSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBfREVGQVVMVF9PTlxcbmZzL0tjb25maWctMjY0LVxcdGJvb2wgXFxcIkh1Z2VUTEIgVm1lbW1hcCBPcHRpbWl6YXRpb24gKEhWTykgZGVmYXVsdHMgdG8gb25cXFwiXFxuLS1cXG5mcy9LY29uZmlnPTI3MT1lbmRpZiAjIEhVR0VUTEJGU1xcbmZzL0tjb25maWctMjcyLVxcbmZzL0tjb25maWc6MjczOmNvbmZpZyBIVUdFVExCX1BBR0VcXG5mcy9LY29uZmlnLTI3NC1cXHRkZWZfYm9vbCBIVUdFVExCRlNcXG4tLVxcbmZzL0tjb25maWctMjc2LVxcbmZzL0tjb25maWc6Mjc3OmNvbmZpZyBIVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUFxcbmZzL0tjb25maWctMjc4LVxcdGRlZl9ib29sIEhVR0VUTEJfUEFHRVxcbi0tXFxubW0vS2NvbmZpZz02NTM9Y29uZmlnIEFSQ0hfRU5BQkxFX1RIUF9NSUdSQVRJT05cXG4tLVxcbm1tL0tjb25maWctNjU1LVxcbm1tL0tjb25maWc6NjU2OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV9WQVJJQUJMRVxcbm1tL0tjb25maWctNjU3LVxcdGRlZl9ib29sIG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTY6MzQ6MDQuMjk2OTcxNTA4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA3NDkwNDk4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogSHVnZVRMQiBhbmQgTWlncmF0aW9uIENvZGUqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGBIVUdFVExCX1BBR0VgIGlzIGxpbmtlZCB0byBgZGVmX2Jvb2wgSFVHRVRMQkZTYC4gVGhhdCdzIHRoZSBjb25maWcgSSBuZWVkIHRvIGVuYWJsZSBmb3IgdGhpcyBmdXp6aW5nIHRhcmdldCAtIGBIVUdFVExCRlNgLlxuXG5Ob3csIGxldCdzIHBpbnBvaW50IHRoZSByZWxldmFudCBmdW5jdGlvbnMuIEJhc2VkIG9uIHRoZSBtb2RpZmljYXRpb25zLCB0aGUga2V5IGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBhcmU6IGByZW1vdmVfbWlncmF0aW9uX3B0ZWAsIGBwcm90X25vbmVfaHVnZXRsYl9lbnRyeWAsIGBjaGVja19wdGVgLCBgdHJ5X3RvX3VubWFwX29uZWAsIGFuZCBgdHJ5X3RvX21pZ3JhdGVfb25lYC5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB3aGVyZSB0aGVzZSByZXNpZGUuIExvb2tzIGxpa2UgYHByb3Rfbm9uZV9odWdldGxiX2VudHJ5YCBpcyBzdGF0aWMgd2l0aGluIGBtbS9tcHJvdGVjdC5jYC4gYHJlbW92ZV9taWdyYXRpb25fcHRlYCBpcyBzdGF0aWMgaW4gYG1tL21pZ3JhdGUuY2AuIFRoZW4sIGBjaGVja19wdGVgIGxpdmVzIGluIGBtbS9wYWdlX3ZtYV9tYXBwZWQuY2AsIGFuZCBmaW5hbGx5LCBib3RoIGB0cnlfdG9fdW5tYXBfb25lYCBhbmQgYHRyeV90b19taWdyYXRlX29uZWAgYXJlIHN0YXRpYyBpbiBgbW0vcm1hcC5jYC5cblxuT2theSwgbm93IGZvciByZWFjaGFiaWxpdHkuIGByZW1vdmVfbWlncmF0aW9uX3B0ZWAgaXMgaW52b2tlZCBieSBgcmVtb3ZlX21pZ3JhdGlvbl9wdGVzYC4gYHByb3Rfbm9uZV9odWdldGxiX2VudHJ5YCBpcyB1c2VkIGFzIGEgY2FsbGJhY2sgZm9yIGBtbV93YWxrYCwgd2hpY2ggaXMgdXNlZCBpbiBgbW0vbXByb3RlY3QuY2AuIGBjaGVja19wdGVgIGlzIHJlYWNoZWQgdGhyb3VnaCBgcGFnZV92bWFfbWFwcGVkX3dhbGtgLiBgdHJ5X3RvX3VubWFwX29uZWAgaXMgY2FsbGVkIGZyb20gYHRyeV90b191bm1hcGAsIGFuZCBgdHJ5X3RvX21pZ3JhdGVfb25lYCBpcyBjYWxsZWQgZnJvbSBgdHJ5X3RvX21pZ3JhdGVgLlxuXG5QZXJmZWN0LiBUaGVzZSBhcmUgYWxsIGNvcmUgTU0gZnVuY3Rpb25zIHJlbGF0ZWQgdG8gcGFnZSBtaWdyYXRpb24sIHVubWFwcGluZywgYW5kIG1lbW9yeSBwcm90ZWN0aW9uIGZvciBOVU1BIGJhbGFuY2luZy4gVGhleSdyZSBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgcmVwcmVzZW50IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuXG5cbkxldCdzIHN1bW1hcml6ZSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGFuZCBzeW1ib2xzIGZvciBlYXN5IHJlZmVyZW5jZTpcblxuKiAgIENvbmZpZ3M6IGBIVUdFVExCRlNgIGFuZCBgTUlHUkFUSU9OYC5cbiogICBGb2N1cyBTeW1ib2xzOiBgcmVtb3ZlX21pZ3JhdGlvbl9wdGVgLCBgcHJvdF9ub25lX2h1Z2V0bGJfZW50cnlgLCBgY2hlY2tfcHRlYCwgYHRyeV90b191bm1hcF9vbmVgLCBhbmQgYHRyeV90b19taWdyYXRlX29uZWAuXG5cbkZpbmFsbHksIHRvIGJlIHRob3JvdWdoOiBgcHJvdF9ub25lX2h1Z2V0bGJfZW50cnlgIGlzIGluIGBtbS9tcHJvdGVjdC5jYCwgbGV0IG1lIG1ha2UgYSBub3RlIHRvIGNoZWNrIGlmIGl0IGhhcyBhIGRlcGVuZGVuY3kgb24gYE5VTUFfQkFMQU5DSU5HYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU3MywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNjozNDoxMS4zNzE4ODQwNDFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyMzc1MjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInByb3Rfbm9uZV9odWdldGxiX2VudHJ5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL21wcm90ZWN0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbXByb3RlY3QuYz02OTQ9c3RhdGljIGludCBwcm90X25vbmVfcHRlX2VudHJ5KHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbm1tL21wcm90ZWN0LmMtNzAyLSNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxubW0vbXByb3RlY3QuYzo3MDM6c3RhdGljIGludCBwcm90X25vbmVfaHVnZXRsYl9lbnRyeShwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGhtYXNrLFxcbm1tL21wcm90ZWN0LmMtNzA0LVxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBuZXh0LFxcbi0tXFxubW0vbXByb3RlY3QuYy03MTMtI2Vsc2VcXG5tbS9tcHJvdGVjdC5jOjcxNDojZGVmaW5lIHByb3Rfbm9uZV9odWdldGxiX2VudHJ5XFx0TlVMTFxcbm1tL21wcm90ZWN0LmMtNzE1LSNlbmRpZlxcbi0tXFxubW0vbXByb3RlY3QuYz03MjM9c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBwcm90X25vbmVfd2Fsa19vcHMgPSB7XFxubW0vbXByb3RlY3QuYy03MjQtXFx0LnB0ZV9lbnRyeVxcdFxcdD0gcHJvdF9ub25lX3B0ZV9lbnRyeSxcXG5tbS9tcHJvdGVjdC5jOjcyNTpcXHQuaHVnZXRsYl9lbnRyeVxcdFxcdD0gcHJvdF9ub25lX2h1Z2V0bGJfZW50cnksXFxubW0vbXByb3RlY3QuYy03MjYtXFx0LnRlc3Rfd2Fsa1xcdFxcdD0gcHJvdF9ub25lX3Rlc3QsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE2OjM0OjExLjQ2NDI2OTM3OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDgxMjkzODUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgSSdtIHRoaW5raW5nIHRoZXNlIHRoaW5ncyBteXNlbGY6XG5cbioqVHJhY2luZyB0aGUgVXNhZ2Ugb2YgYHByb3Rfbm9uZV93YWxrX29wc2AqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBgcHJvdF9ub25lX3dhbGtfb3BzYCBjb25zdHJ1Y3QuIEZpcnN0IHRoaW5ncyBmaXJzdDogSSdtIGdvaW5nIHRvIHN0YXJ0IHdpdGggdGhlIG9idmlvdXMgYW5kIGh1bnQgZG93biBhbGwgdGhlIHBsYWNlcyB3aGVyZSB0aGlzIGlzIGFjdHVhbGx5ICp1c2VkKi4gSSdsbCBuZWVkIHRvIGtub3cgdGhlIGNhbGwgc2l0ZXMgdG8gcGllY2UgdG9nZXRoZXIgdGhlIGNvbnRyb2wgZmxvdyBhbmQgZGF0YSBkZXBlbmRlbmNpZXMuIEEgc2ltcGxlIGdyZXAgc2hvdWxkIGdldCBtZSB0aGUgaW1tZWRpYXRlIHJlZmVyZW5jZXMuIFRoZW4sIEkgY2FuIHN0YXJ0IGFuYWx5emluZyBob3cgaXQgaXMgdXNlZCB0aGVyZSBpbiBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTE3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTY6MzQ6MTQuOTQ1NTY2MjExWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTkzMDY2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcm90X25vbmVfd2Fsa19vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vbXByb3RlY3QuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9tcHJvdGVjdC5jPTcxNz1zdGF0aWMgaW50IHByb3Rfbm9uZV90ZXN0KHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBuZXh0LFxcbi0tXFxubW0vbXByb3RlY3QuYy03MjItXFxubW0vbXByb3RlY3QuYzo3MjM6c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBwcm90X25vbmVfd2Fsa19vcHMgPSB7XFxubW0vbXByb3RlY3QuYy03MjQtXFx0LnB0ZV9lbnRyeVxcdFxcdD0gcHJvdF9ub25lX3B0ZV9lbnRyeSxcXG4tLVxcbm1tL21wcm90ZWN0LmM9NzMxPW1wcm90ZWN0X2ZpeHVwKHN0cnVjdCB2bWFfaXRlcmF0b3IgKnZtaSwgc3RydWN0IG1tdV9nYXRoZXIgKnRsYixcXG4tLVxcbm1tL21wcm90ZWN0LmMtNzYyLVxcdFxcdGVycm9yID0gd2Fsa19wYWdlX3JhbmdlKGN1cnJlbnQtXFx1MDAzZW1tLCBzdGFydCwgZW5kLFxcbm1tL21wcm90ZWN0LmM6NzYzOlxcdFxcdFxcdFxcdFxcdTAwMjZwcm90X25vbmVfd2Fsa19vcHMsIFxcdTAwMjZuZXdfcGdwcm90KTtcXG5tbS9tcHJvdGVjdC5jLTc2NC1cXHRcXHRpZiAoZXJyb3IpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE2OjM0OjE1LjA0NTUwMjI2OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTA3Njg2NzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHRyYWNlZCB0aGUgY29kZSBwYXRoIGFuZCBoZXJlJ3Mgd2hhdCBJJ3ZlIGZvdW5kLiBgcHJvdF9ub25lX3dhbGtfb3BzYCBpcyB1c2VkIGluIGBtcHJvdGVjdF9maXh1cGAgd2hlbiB3ZSdyZSBtb2RpZnlpbmcgbWVtb3J5IHByb3RlY3Rpb25zLiBBaCwgYW5kIGBtcHJvdGVjdF9maXh1cGAgaXRzZWxmIGlzIGNhbGxlZCBmcm9tIGBkb19tcHJvdGVjdF9wa2V5YC4gVGhhdCBtZWFucyBgcHJvdF9ub25lX2h1Z2V0bGJfZW50cnlgIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHRocm91Z2ggYSBzaW1wbGUgYG1wcm90ZWN0YCBjYWxsIG9uIGEgSHVnZVRMQiBtYXBwaW5nIC0gdGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuTm93LCB3aGF0IGFib3V0IHRoZSBvdGhlciBmdW5jdGlvbnMgdGhhdCBtaWdodCBiZSBpbnZvbHZlZCBoZXJlPyBgdHJ5X3RvX3VubWFwX29uZWAgYW5kIGB0cnlfdG9fbWlncmF0ZV9vbmVgIOKAkyB0aGV5J3JlIGFsd2F5cyBjb21waWxlZCwgc28gd2Ugc2hvdWxkIGNvbnNpZGVyIHRob3NlIHRvby4gQW5kLCBvZiBjb3Vyc2UsIGBjaGVja19wdGVgIGlzIGFsd2F5cyB0aGVyZSB0b28uIGByZW1vdmVfbWlncmF0aW9uX3B0ZWAgaXMgb25seSB0aGVyZSBpZiBgQ09ORklHX01JR1JBVElPTmAgaXMgZW5hYmxlZCwgc28gdGhhdCdzIGNvbmRpdGlvbmFsLlxuXG5TbywgdGhlIGtleSBjb25maWd1cmF0aW9ucyBoZXJlIHNlZW0gdG8gYmUgYEhVR0VUTEJGU2AgYW5kIGBNSUdSQVRJT05gLiBMZXQncyBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGBIVUdFVExCRlNgIGRvZXNuJ3QgZGVwZW5kIG9uIGFueXRoaW5nIGVsc2UgdGhhdCdzIHVudXN1YWwuIE5vcGUsIGl0J3MgcHJldHR5IHN0YW5kYXJkLiBHb29kLlxuXG5BbHJpZ2h0LCBsZXQncyBsb29rIGF0IGBDT05GSUdfTUlHUkFUSU9OYC4gUmlnaHQsIGl0J3Mgc2VsZWN0ZWQgYnkgYE5VTUFfQkFMQU5DSU5HYCwgYE1FTU9SWV9IT1RSRU1PVkVgLCBgQ01BYCwgYW5kIGBDT01QQUNUSU9OYC4gQWxzbyBzdGFuZGFyZC5cblxuT2theSwgbGV0J3Mgc3VtbWFyaXplIGFuZCBmb3JtYWxpemUgdGhpczpcblxuSXQgbG9va3MgbGlrZSB0aGlzIHBhdGNoIGludHJvZHVjZXMgY2hhbmdlcyByZWxhdGVkIHRvIFBURSByZWFkaW5nIGZvciBIdWdlVExCIHBhZ2VzIGR1cmluZyB0aGluZ3MgbGlrZSBwYWdlIG1pZ3JhdGlvbiwgdW5tYXBwaW5nLCBhbmQgbWVtb3J5IHByb3RlY3Rpb24gbW9kaWZpY2F0aW9ucy4gVGhlc2UgYXJlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25zIGFuZCBjYW4gYmUgcmVhY2hlZCB0aHJvdWdoIHByZXR0eSBzdGFuZGFyZCBzeXNjYWxscyBsaWtlIGBtcHJvdGVjdGAsIGBtYWR2aXNlYCwgYW5kIGBtYmluZGAsIGVzcGVjaWFsbHkgb24gSHVnZVRMQiBtYXBwaW5ncy4gU28gdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuXG5cbk15IGxpc3Qgb2YgdGFyZ2V0IHN5bWJvbHM6XG5cbiogICBgcmVtb3ZlX21pZ3JhdGlvbl9wdGVgXG4qICAgYHByb3Rfbm9uZV9odWdldGxiX2VudHJ5YFxuKiAgIGBjaGVja19wdGVgXG4qICAgYHRyeV90b191bm1hcF9vbmVgXG4qICAgYHRyeV90b19taWdyYXRlX29uZWBcblxuQW5kIHRoZSByZXF1aXJlZCBlbmFibGVkIGNvbmZpZ3M6XG5cbiogICBgSFVHRVRMQkZTYFxuKiAgIGBNSUdSQVRJT05gXG5cblRpbWUgdG8gc2V0IHRoZXNlIHJlc3VsdHMgYW5kIG1vdmUgb24gdG8gdGhlIG5leHQgb25lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzMyLCJPdXRwdXRUb2tlbnMiOjE1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNjozNDoyMi45NTMxOTIwMloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NTEyMzEyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSFVHRVRMQkZTXCIsXG4gICAgXCJNSUdSQVRJT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyZW1vdmVfbWlncmF0aW9uX3B0ZVwiLFxuICAgIFwicHJvdF9ub25lX2h1Z2V0bGJfZW50cnlcIixcbiAgICBcImNoZWNrX3B0ZVwiLFxuICAgIFwidHJ5X3RvX3VubWFwX29uZVwiLFxuICAgIFwidHJ5X3RvX21pZ3JhdGVfb25lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgaG93IFBURXMgYXJlIHJlYWQgZm9yIEh1Z2VUTEIgcGFnZXMgZHVyaW5nIHBhZ2UgbWlncmF0aW9uLCB1bm1hcHBpbmcsIGFuZCBtZW1vcnkgcHJvdGVjdGlvbiBjaGFuZ2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBzdGFuZGFyZCBzeXNjYWxscyAoZS5nLiwgbXByb3RlY3QsIG1hZHZpc2UsIG1iaW5kKSBvbiBIdWdlVExCIG1hcHBpbmdzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhVR0VUTEJGU1wiLFxuICAgIFwiTUlHUkFUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmVtb3ZlX21pZ3JhdGlvbl9wdGVcIixcbiAgICBcInByb3Rfbm9uZV9odWdldGxiX2VudHJ5XCIsXG4gICAgXCJjaGVja19wdGVcIixcbiAgICBcInRyeV90b191bm1hcF9vbmVcIixcbiAgICBcInRyeV90b19taWdyYXRlX29uZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGhvdyBQVEVzIGFyZSByZWFkIGZvciBIdWdlVExCIHBhZ2VzIGR1cmluZyBwYWdlIG1pZ3JhdGlvbiwgdW5tYXBwaW5nLCBhbmQgbWVtb3J5IHByb3RlY3Rpb24gY2hhbmdlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgc3RhbmRhcmQgc3lzY2FsbHMgKGUuZy4sIG1wcm90ZWN0LCBtYWR2aXNlLCBtYmluZCkgb24gSHVnZVRMQiBtYXBwaW5ncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhdl8s[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-26 16:20:47 +0000 UTC FinishedAt: 2026-06-26 16:34:24 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "189ce3c81f8188fb737d59a8a8784f074e830238", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HUGETLBFS", "MIGRATION" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "189ce3c81f8188fb737d59a8a8784f074e830238", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HUGETLBFS", "MIGRATION" ], "series_id": "ec26fa8e-e9d8-479c-869d-3333b67562ca" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "remove_migration_pte", "prot_none_hugetlb_entry", "check_pte", "try_to_unmap_one", "try_to_migrate_one" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE2OjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hVR0VUTEJGUyYjMzQ7LAogICAgJiMzNDtNSUdSQVRJT04mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZW1vdmVfbWlncmF0aW9uX3B0ZSYjMzQ7LAogICAgJiMzNDtwcm90X25vbmVfaHVnZXRsYl9lbnRyeSYjMzQ7LAogICAgJiMzNDtjaGVja19wdGUmIzM0OywKICAgICYjMzQ7dHJ5X3RvX3VubWFwX29uZSYjMzQ7LAogICAgJiMzNDt0cnlfdG9fbWlncmF0ZV9vbmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgaG93IFBURXMgYXJlIHJlYWQgZm9yIEh1Z2VUTEIgcGFnZXMgZHVyaW5nIHBhZ2UgbWlncmF0aW9uLCB1bm1hcHBpbmcsIGFuZCBtZW1vcnkgcHJvdGVjdGlvbiBjaGFuZ2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBzdGFuZGFyZCBzeXNjYWxscyAoZS5nLiwgbXByb3RlY3QsIG1hZHZpc2UsIG1iaW5kKSBvbiBIdWdlVExCIG1hcHBpbmdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE2OjMzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTI5YzdiNTU1YmZmNzE2YzU1OGZhMDRkMGE3ZTIwMGQzZmJlNmRhY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVuIDI2IDE2OjMzOjQ1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaHVnZXRsYi5oIGIvaW5jbHVkZS9saW51eC9odWdldGxiLmhcbmluZGV4IDJhYmFmOTkzMjFlOTBkLi5mZGI3YmRmNzY0NWM1OSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvaHVnZXRsYi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaFxuQEAgLTEyNjEsNiAmIzQzOzEyNjEsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaHVnZXRsYl9jb3VudF9zdWIobG9uZyBsLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbiB7XG4gfVxuIFxuJiM0MztwdGVfdCBodWdlX3B0ZXBfZ2V0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4mIzQzO1x0XHQgICAgcHRlX3QgKnB0ZXApO1xuJiM0MztcbiBzdGF0aWMgaW5saW5lIHB0ZV90IGh1Z2VfcHRlcF9jbGVhcl9mbHVzaChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbiBcdFx0XHRcdFx0ICB1bnNpZ25lZCBsb25nIGFkZHIsIHB0ZV90ICpwdGVwKVxuIHtcbmRpZmYgLS1naXQgYS9tbS9taWdyYXRlLmMgYi9tbS9taWdyYXRlLmNcbmluZGV4IGQ5YjIzOTA5ZDcxNmM2Li5jNjVmMGY0M2RmN2ViYiAxMDA2NDRcbi0tLSBhL21tL21pZ3JhdGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWlncmF0ZS5jXG5AQCAtMzcxLDcgJiM0MzszNzEsMTEgQEAgc3RhdGljIGJvb2wgcmVtb3ZlX21pZ3JhdGlvbl9wdGUoc3RydWN0IGZvbGlvICpmb2xpbyxcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuICNlbmRpZlxuLVx0XHRvbGRfcHRlID0gcHRlcF9nZXQocHZtdy5wdGUpO1xuJiM0MztcdFx0aWYgKGZvbGlvX3Rlc3RfaHVnZXRsYihmb2xpbykpXG4mIzQzO1x0XHRcdG9sZF9wdGUgPSBodWdlX3B0ZXBfZ2V0KHZtYS1cdTAwM2V2bV9tbSwgcHZtdy5hZGRyZXNzLFxuJiM0MztcdFx0XHRcdFx0XHRwdm13LnB0ZSk7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdG9sZF9wdGUgPSBwdGVwX2dldChwdm13LnB0ZSk7XG4gXHRcdGlmIChybWFwX3dhbGtfYXJnLVx1MDAzZW1hcF91bnVzZWRfdG9femVyb3BhZ2UgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICB0cnlfdG9fbWFwX3VudXNlZF90b196ZXJvcGFnZShcdTAwMjZwdm13LCBmb2xpbywgb2xkX3B0ZSwgaWR4KSlcbiBcdFx0XHRjb250aW51ZTtcbmRpZmYgLS1naXQgYS9tbS9tcHJvdGVjdC5jIGIvbW0vbXByb3RlY3QuY1xuaW5kZXggOWNiZjkzMmIwMjhjZjkuLjIzNzc5NjMyZDE4YmYyIDEwMDY0NFxuLS0tIGEvbW0vbXByb3RlY3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbXByb3RlY3QuY1xuQEAgLTY5OSwxNCAmIzQzOzY5OSwyMCBAQCBzdGF0aWMgaW50IHByb3Rfbm9uZV9wdGVfZW50cnkocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuIFx0XHQwIDogLUVBQ0NFUztcbiB9XG4gXG4mIzQzOyNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG4gc3RhdGljIGludCBwcm90X25vbmVfaHVnZXRsYl9lbnRyeShwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGhtYXNrLFxuIFx0XHRcdFx0ICAgdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIG5leHQsXG4gXHRcdFx0XHQgICBzdHJ1Y3QgbW1fd2FsayAqd2FsaylcbiB7XG4tXHRyZXR1cm4gcGZuX21vZGlmeV9hbGxvd2VkKHB0ZV9wZm4ocHRlcF9nZXQocHRlKSksXG4mIzQzO1x0cHRlX3QgZW50cnkgPSBodWdlX3B0ZXBfZ2V0KHdhbGstXHUwMDNlbW0sIGFkZHIsIHB0ZSk7XG4mIzQzO1xuJiM0MztcdHJldHVybiBwZm5fbW9kaWZ5X2FsbG93ZWQocHRlX3BmbihlbnRyeSksXG4gXHRcdFx0XHQgICoocGdwcm90X3QgKikod2Fsay1cdTAwM2Vwcml2YXRlKSkgP1xuIFx0XHQwIDogLUVBQ0NFUztcbiB9XG4mIzQzOyNlbHNlXG4mIzQzOyNkZWZpbmUgcHJvdF9ub25lX2h1Z2V0bGJfZW50cnlcdE5VTExcbiYjNDM7I2VuZGlmXG4gXG4gc3RhdGljIGludCBwcm90X25vbmVfdGVzdCh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgbmV4dCxcbiBcdFx0XHQgIHN0cnVjdCBtbV93YWxrICp3YWxrKVxuZGlmZiAtLWdpdCBhL21tL3BhZ2Vfdm1hX21hcHBlZC5jIGIvbW0vcGFnZV92bWFfbWFwcGVkLmNcbmluZGV4IDJjY2JhYmZiMmNjMTdhLi4xOGUxZDM0MWY0NjNjOSAxMDA2NDRcbi0tLSBhL21tL3BhZ2Vfdm1hX21hcHBlZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9wYWdlX3ZtYV9tYXBwZWQuY1xuQEAgLTEwNyw3ICYjNDM7MTA3LDEzIEBAIHN0YXRpYyBib29sIG1hcF9wdGUoc3RydWN0IHBhZ2Vfdm1hX21hcHBlZF93YWxrICpwdm13LCBwbWRfdCAqcG1kdmFscCxcbiBzdGF0aWMgYm9vbCBjaGVja19wdGUoc3RydWN0IHBhZ2Vfdm1hX21hcHBlZF93YWxrICpwdm13LCB1bnNpZ25lZCBsb25nIHB0ZV9ucilcbiB7XG4gXHR1bnNpZ25lZCBsb25nIHBmbjtcbi1cdHB0ZV90IHB0ZW50ID0gcHRlcF9nZXQocHZtdy1cdTAwM2VwdGUpO1xuJiM0MztcdHB0ZV90IHB0ZW50O1xuJiM0MztcbiYjNDM7XHRpZiAoaXNfdm1faHVnZXRsYl9wYWdlKHB2bXctXHUwMDNldm1hKSlcbiYjNDM7XHRcdHB0ZW50ID0gaHVnZV9wdGVwX2dldChwdm13LVx1MDAzZXZtYS1cdTAwM2V2bV9tbSwgcHZtdy1cdTAwM2VhZGRyZXNzLFxuJiM0MztcdFx0XHRcdCAgICAgIHB2bXctXHUwMDNlcHRlKTtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRwdGVudCA9IHB0ZXBfZ2V0KHB2bXctXHUwMDNlcHRlKTtcbiBcbiBcdGlmIChwdm13LVx1MDAzZWZsYWdzIFx1MDAyNiBQVk1XX01JR1JBVElPTikge1xuIFx0XHRjb25zdCBzb2Z0bGVhZl90IGVudHJ5ID0gc29mdGxlYWZfZnJvbV9wdGUocHRlbnQpO1xuZGlmZiAtLWdpdCBhL21tL3JtYXAuYyBiL21tL3JtYXAuY1xuaW5kZXggMWM3N2Q1ZGMwNmU5ZmEuLmFiYzNhNDRiYWFhM2RmIDEwMDY0NFxuLS0tIGEvbW0vcm1hcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9ybWFwLmNcbkBAIC0yMDk1LDExICYjNDM7MjA5NSwxNiBAQCBzdGF0aWMgYm9vbCB0cnlfdG9fdW5tYXBfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuIFx0XHQvKiBVbmV4cGVjdGVkIFBNRC1tYXBwZWQgVEhQPyAqL1xuIFx0XHRWTV9CVUdfT05fRk9MSU8oIXB2bXcucHRlLCBmb2xpbyk7XG4gXG4tXHRcdC8qXG4tXHRcdCAqIEhhbmRsZSBQRk4gc3dhcCBQVEVzLCBzdWNoIGFzIGRldmljZS1leGNsdXNpdmUgb25lcywgdGhhdFxuLVx0XHQgKiBhY3R1YWxseSBtYXAgcGFnZXMuXG4tXHRcdCAqL1xuLVx0XHRwdGV2YWwgPSBwdGVwX2dldChwdm13LnB0ZSk7XG4mIzQzO1x0XHRhZGRyZXNzID0gcHZtdy5hZGRyZXNzO1xuJiM0MztcdFx0aWYgKGZvbGlvX3Rlc3RfaHVnZXRsYihmb2xpbykpIHtcbiYjNDM7XHRcdFx0cHRldmFsID0gaHVnZV9wdGVwX2dldChtbSwgYWRkcmVzcywgcHZtdy5wdGUpO1xuJiM0MztcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0LypcbiYjNDM7XHRcdFx0ICogSGFuZGxlIFBGTiBzd2FwIFBURXMsIHN1Y2ggYXMgZGV2aWNlLWV4Y2x1c2l2ZSBvbmVzLFxuJiM0MztcdFx0XHQgKiB0aGF0IGFjdHVhbGx5IG1hcCBwYWdlcy5cbiYjNDM7XHRcdFx0ICovXG4mIzQzO1x0XHRcdHB0ZXZhbCA9IHB0ZXBfZ2V0KHB2bXcucHRlKTtcbiYjNDM7XHRcdH1cbiBcdFx0aWYgKGxpa2VseShwdGVfcHJlc2VudChwdGV2YWwpKSkge1xuIFx0XHRcdHBmbiA9IHB0ZV9wZm4ocHRldmFsKTtcbiBcdFx0fSBlbHNlIHtcbkBAIC0yMTEwLDcgJiM0MzsyMTE1LDYgQEAgc3RhdGljIGJvb2wgdHJ5X3RvX3VubWFwX29uZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbiBcdFx0fVxuIFxuIFx0XHRzdWJwYWdlID0gZm9saW9fcGFnZShmb2xpbywgcGZuIC0gZm9saW9fcGZuKGZvbGlvKSk7XG4tXHRcdGFkZHJlc3MgPSBwdm13LmFkZHJlc3M7XG4gXHRcdGFub25fZXhjbHVzaXZlID0gZm9saW9fdGVzdF9hbm9uKGZvbGlvKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHRcdCBQYWdlQW5vbkV4Y2x1c2l2ZShzdWJwYWdlKTtcbiBcbkBAIC0yNTAxLDExICYjNDM7MjUwNSwxNiBAQCBzdGF0aWMgYm9vbCB0cnlfdG9fbWlncmF0ZV9vbmUoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4gXHRcdC8qIFVuZXhwZWN0ZWQgUE1ELW1hcHBlZCBUSFA/ICovXG4gXHRcdFZNX0JVR19PTl9GT0xJTyghcHZtdy5wdGUsIGZvbGlvKTtcbiBcbi1cdFx0Lypcbi1cdFx0ICogSGFuZGxlIFBGTiBzd2FwIFBURXMsIHN1Y2ggYXMgZGV2aWNlLWV4Y2x1c2l2ZSBvbmVzLCB0aGF0XG4tXHRcdCAqIGFjdHVhbGx5IG1hcCBwYWdlcy5cbi1cdFx0ICovXG4tXHRcdHB0ZXZhbCA9IHB0ZXBfZ2V0KHB2bXcucHRlKTtcbiYjNDM7XHRcdGFkZHJlc3MgPSBwdm13LmFkZHJlc3M7XG4mIzQzO1x0XHRpZiAoZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKSkge1xuJiM0MztcdFx0XHRwdGV2YWwgPSBodWdlX3B0ZXBfZ2V0KG1tLCBhZGRyZXNzLCBwdm13LnB0ZSk7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHQvKlxuJiM0MztcdFx0XHQgKiBIYW5kbGUgUEZOIHN3YXAgUFRFcywgc3VjaCBhcyBkZXZpY2UtZXhjbHVzaXZlIG9uZXMsXG4mIzQzO1x0XHRcdCAqIHRoYXQgYWN0dWFsbHkgbWFwIHBhZ2VzLlxuJiM0MztcdFx0XHQgKi9cbiYjNDM7XHRcdFx0cHRldmFsID0gcHRlcF9nZXQocHZtdy5wdGUpO1xuJiM0MztcdFx0fVxuIFx0XHRpZiAobGlrZWx5KHB0ZV9wcmVzZW50KHB0ZXZhbCkpKSB7XG4gXHRcdFx0cGZuID0gcHRlX3BmbihwdGV2YWwpO1xuIFx0XHR9IGVsc2Uge1xuQEAgLTI1MTYsNyAmIzQzOzI1MjUsNiBAQCBzdGF0aWMgYm9vbCB0cnlfdG9fbWlncmF0ZV9vbmUoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4gXHRcdH1cbiBcbiBcdFx0c3VicGFnZSA9IGZvbGlvX3BhZ2UoZm9saW8sIHBmbiAtIGZvbGlvX3Bmbihmb2xpbykpO1xuLVx0XHRhZGRyZXNzID0gcHZtdy5hZGRyZXNzO1xuIFx0XHRhbm9uX2V4Y2x1c2l2ZSA9IGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgXHUwMDI2XHUwMDI2XG4gXHRcdFx0XHQgUGFnZUFub25FeGNsdXNpdmUoc3VicGFnZSk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTY6MzM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SFVHRVRMQkZTJiMzNDssCiAgICAmIzM0O01JR1JBVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JlbW92ZV9taWdyYXRpb25fcHRlJiMzNDssCiAgICAmIzM0O3Byb3Rfbm9uZV9odWdldGxiX2VudHJ5JiMzNDssCiAgICAmIzM0O2NoZWNrX3B0ZSYjMzQ7LAogICAgJiMzNDt0cnlfdG9fdW5tYXBfb25lJiMzNDssCiAgICAmIzM0O3RyeV90b19taWdyYXRlX29uZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBob3cgUFRFcyBhcmUgcmVhZCBmb3IgSHVnZVRMQiBwYWdlcyBkdXJpbmcgcGFnZSBtaWdyYXRpb24sIHVubWFwcGluZywgYW5kIG1lbW9yeSBwcm90ZWN0aW9uIGNoYW5nZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHN0YW5kYXJkIHN5c2NhbGxzIChlLmcuLCBtcHJvdGVjdCwgbWFkdmlzZSwgbWJpbmQpIG9uIEh1Z2VUTEIgbWFwcGluZ3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDEyOWM3YjU1NWJmZjcxNmM1NThmYTA0ZDBhN2UyMDBkM2ZiZTZkYWMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1biAyNiAxNjozMzo0NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaHVnZXRsYi5oIGIvaW5jbHVkZS9saW51eC9odWdldGxiLmgKaW5kZXggMmFiYWY5OTMyMWU5MGQuLmZkYjdiZGY3NjQ1YzU5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaApAQCAtMTI2MSw2ICYjNDM7MTI2MSw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBodWdldGxiX2NvdW50X3N1Yihsb25nIGwsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQogewogfQogCiYjNDM7cHRlX3QgaHVnZV9wdGVwX2dldChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLAomIzQzOwkJICAgIHB0ZV90ICpwdGVwKTsKJiM0MzsKIHN0YXRpYyBpbmxpbmUgcHRlX3QgaHVnZV9wdGVwX2NsZWFyX2ZsdXNoKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCQkJCQkgIHVuc2lnbmVkIGxvbmcgYWRkciwgcHRlX3QgKnB0ZXApCiB7CmRpZmYgLS1naXQgYS9tbS9taWdyYXRlLmMgYi9tbS9taWdyYXRlLmMKaW5kZXggZDliMjM5MDlkNzE2YzYuLmM2NWYwZjQzZGY3ZWJiIDEwMDY0NAotLS0gYS9tbS9taWdyYXRlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWlncmF0ZS5jCkBAIC0zNzEsNyAmIzQzOzM3MSwxMSBAQCBzdGF0aWMgYm9vbCByZW1vdmVfbWlncmF0aW9uX3B0ZShzdHJ1Y3QgZm9saW8gKmZvbGlvLAogCQkJY29udGludWU7CiAJCX0KICNlbmRpZgotCQlvbGRfcHRlID0gcHRlcF9nZXQocHZtdy5wdGUpOwomIzQzOwkJaWYgKGZvbGlvX3Rlc3RfaHVnZXRsYihmb2xpbykpCiYjNDM7CQkJb2xkX3B0ZSA9IGh1Z2VfcHRlcF9nZXQodm1hLSZndDt2bV9tbSwgcHZtdy5hZGRyZXNzLAomIzQzOwkJCQkJCXB2bXcucHRlKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQlvbGRfcHRlID0gcHRlcF9nZXQocHZtdy5wdGUpOwogCQlpZiAocm1hcF93YWxrX2FyZy0mZ3Q7bWFwX3VudXNlZF90b196ZXJvcGFnZSAmYW1wOyZhbXA7CiAJCSAgICB0cnlfdG9fbWFwX3VudXNlZF90b196ZXJvcGFnZSgmYW1wO3B2bXcsIGZvbGlvLCBvbGRfcHRlLCBpZHgpKQogCQkJY29udGludWU7CmRpZmYgLS1naXQgYS9tbS9tcHJvdGVjdC5jIGIvbW0vbXByb3RlY3QuYwppbmRleCA5Y2JmOTMyYjAyOGNmOS4uMjM3Nzk2MzJkMThiZjIgMTAwNjQ0Ci0tLSBhL21tL21wcm90ZWN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbXByb3RlY3QuYwpAQCAtNjk5LDE0ICYjNDM7Njk5LDIwIEBAIHN0YXRpYyBpbnQgcHJvdF9ub25lX3B0ZV9lbnRyeShwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAJCTAgOiAtRUFDQ0VTOwogfQogCiYjNDM7I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0UKIHN0YXRpYyBpbnQgcHJvdF9ub25lX2h1Z2V0bGJfZW50cnkocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBobWFzaywKIAkJCQkgICB1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgbmV4dCwKIAkJCQkgICBzdHJ1Y3QgbW1fd2FsayAqd2FsaykKIHsKLQlyZXR1cm4gcGZuX21vZGlmeV9hbGxvd2VkKHB0ZV9wZm4ocHRlcF9nZXQocHRlKSksCiYjNDM7CXB0ZV90IGVudHJ5ID0gaHVnZV9wdGVwX2dldCh3YWxrLSZndDttbSwgYWRkciwgcHRlKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHBmbl9tb2RpZnlfYWxsb3dlZChwdGVfcGZuKGVudHJ5KSwKIAkJCQkgICoocGdwcm90X3QgKikod2Fsay0mZ3Q7cHJpdmF0ZSkpID8KIAkJMCA6IC1FQUNDRVM7CiB9CiYjNDM7I2Vsc2UKJiM0MzsjZGVmaW5lIHByb3Rfbm9uZV9odWdldGxiX2VudHJ5CU5VTEwKJiM0MzsjZW5kaWYKIAogc3RhdGljIGludCBwcm90X25vbmVfdGVzdCh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgbmV4dCwKIAkJCSAgc3RydWN0IG1tX3dhbGsgKndhbGspCmRpZmYgLS1naXQgYS9tbS9wYWdlX3ZtYV9tYXBwZWQuYyBiL21tL3BhZ2Vfdm1hX21hcHBlZC5jCmluZGV4IDJjY2JhYmZiMmNjMTdhLi4xOGUxZDM0MWY0NjNjOSAxMDA2NDQKLS0tIGEvbW0vcGFnZV92bWFfbWFwcGVkLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vcGFnZV92bWFfbWFwcGVkLmMKQEAgLTEwNyw3ICYjNDM7MTA3LDEzIEBAIHN0YXRpYyBib29sIG1hcF9wdGUoc3RydWN0IHBhZ2Vfdm1hX21hcHBlZF93YWxrICpwdm13LCBwbWRfdCAqcG1kdmFscCwKIHN0YXRpYyBib29sIGNoZWNrX3B0ZShzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcsIHVuc2lnbmVkIGxvbmcgcHRlX25yKQogewogCXVuc2lnbmVkIGxvbmcgcGZuOwotCXB0ZV90IHB0ZW50ID0gcHRlcF9nZXQocHZtdy0mZ3Q7cHRlKTsKJiM0MzsJcHRlX3QgcHRlbnQ7CiYjNDM7CiYjNDM7CWlmIChpc192bV9odWdldGxiX3BhZ2UocHZtdy0mZ3Q7dm1hKSkKJiM0MzsJCXB0ZW50ID0gaHVnZV9wdGVwX2dldChwdm13LSZndDt2bWEtJmd0O3ZtX21tLCBwdm13LSZndDthZGRyZXNzLAomIzQzOwkJCQkgICAgICBwdm13LSZndDtwdGUpOwomIzQzOwllbHNlCiYjNDM7CQlwdGVudCA9IHB0ZXBfZ2V0KHB2bXctJmd0O3B0ZSk7CiAKIAlpZiAocHZtdy0mZ3Q7ZmxhZ3MgJmFtcDsgUFZNV19NSUdSQVRJT04pIHsKIAkJY29uc3Qgc29mdGxlYWZfdCBlbnRyeSA9IHNvZnRsZWFmX2Zyb21fcHRlKHB0ZW50KTsKZGlmZiAtLWdpdCBhL21tL3JtYXAuYyBiL21tL3JtYXAuYwppbmRleCAxYzc3ZDVkYzA2ZTlmYS4uYWJjM2E0NGJhYWEzZGYgMTAwNjQ0Ci0tLSBhL21tL3JtYXAuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9ybWFwLmMKQEAgLTIwOTUsMTEgJiM0MzsyMDk1LDE2IEBAIHN0YXRpYyBib29sIHRyeV90b191bm1hcF9vbmUoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJCS8qIFVuZXhwZWN0ZWQgUE1ELW1hcHBlZCBUSFA/ICovCiAJCVZNX0JVR19PTl9GT0xJTyghcHZtdy5wdGUsIGZvbGlvKTsKIAotCQkvKgotCQkgKiBIYW5kbGUgUEZOIHN3YXAgUFRFcywgc3VjaCBhcyBkZXZpY2UtZXhjbHVzaXZlIG9uZXMsIHRoYXQKLQkJICogYWN0dWFsbHkgbWFwIHBhZ2VzLgotCQkgKi8KLQkJcHRldmFsID0gcHRlcF9nZXQocHZtdy5wdGUpOwomIzQzOwkJYWRkcmVzcyA9IHB2bXcuYWRkcmVzczsKJiM0MzsJCWlmIChmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pKSB7CiYjNDM7CQkJcHRldmFsID0gaHVnZV9wdGVwX2dldChtbSwgYWRkcmVzcywgcHZtdy5wdGUpOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQkvKgomIzQzOwkJCSAqIEhhbmRsZSBQRk4gc3dhcCBQVEVzLCBzdWNoIGFzIGRldmljZS1leGNsdXNpdmUgb25lcywKJiM0MzsJCQkgKiB0aGF0IGFjdHVhbGx5IG1hcCBwYWdlcy4KJiM0MzsJCQkgKi8KJiM0MzsJCQlwdGV2YWwgPSBwdGVwX2dldChwdm13LnB0ZSk7CiYjNDM7CQl9CiAJCWlmIChsaWtlbHkocHRlX3ByZXNlbnQocHRldmFsKSkpIHsKIAkJCXBmbiA9IHB0ZV9wZm4ocHRldmFsKTsKIAkJfSBlbHNlIHsKQEAgLTIxMTAsNyAmIzQzOzIxMTUsNiBAQCBzdGF0aWMgYm9vbCB0cnlfdG9fdW5tYXBfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCQl9CiAKIAkJc3VicGFnZSA9IGZvbGlvX3BhZ2UoZm9saW8sIHBmbiAtIGZvbGlvX3Bmbihmb2xpbykpOwotCQlhZGRyZXNzID0gcHZtdy5hZGRyZXNzOwogCQlhbm9uX2V4Y2x1c2l2ZSA9IGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgJmFtcDsmYW1wOwogCQkJCSBQYWdlQW5vbkV4Y2x1c2l2ZShzdWJwYWdlKTsKIApAQCAtMjUwMSwxMSAmIzQzOzI1MDUsMTYgQEAgc3RhdGljIGJvb2wgdHJ5X3RvX21pZ3JhdGVfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCQkvKiBVbmV4cGVjdGVkIFBNRC1tYXBwZWQgVEhQPyAqLwogCQlWTV9CVUdfT05fRk9MSU8oIXB2bXcucHRlLCBmb2xpbyk7CiAKLQkJLyoKLQkJICogSGFuZGxlIFBGTiBzd2FwIFBURXMsIHN1Y2ggYXMgZGV2aWNlLWV4Y2x1c2l2ZSBvbmVzLCB0aGF0Ci0JCSAqIGFjdHVhbGx5IG1hcCBwYWdlcy4KLQkJICovCi0JCXB0ZXZhbCA9IHB0ZXBfZ2V0KHB2bXcucHRlKTsKJiM0MzsJCWFkZHJlc3MgPSBwdm13LmFkZHJlc3M7CiYjNDM7CQlpZiAoZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKSkgewomIzQzOwkJCXB0ZXZhbCA9IGh1Z2VfcHRlcF9nZXQobW0sIGFkZHJlc3MsIHB2bXcucHRlKTsKJiM0MzsJCX0gZWxzZSB7CiYjNDM7CQkJLyoKJiM0MzsJCQkgKiBIYW5kbGUgUEZOIHN3YXAgUFRFcywgc3VjaCBhcyBkZXZpY2UtZXhjbHVzaXZlIG9uZXMsCiYjNDM7CQkJICogdGhhdCBhY3R1YWxseSBtYXAgcGFnZXMuCiYjNDM7CQkJICovCiYjNDM7CQkJcHRldmFsID0gcHRlcF9nZXQocHZtdy5wdGUpOwomIzQzOwkJfQogCQlpZiAobGlrZWx5KHB0ZV9wcmVzZW50KHB0ZXZhbCkpKSB7CiAJCQlwZm4gPSBwdGVfcGZuKHB0ZXZhbCk7CiAJCX0gZWxzZSB7CkBAIC0yNTE2LDcgJiM0MzsyNTI1LDYgQEAgc3RhdGljIGJvb2wgdHJ5X3RvX21pZ3JhdGVfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCQl9CiAKIAkJc3VicGFnZSA9IGZvbGlvX3BhZ2UoZm9saW8sIHBmbiAtIGZvbGlvX3Bmbihmb2xpbykpOwotCQlhZGRyZXNzID0gcHZtdy5hZGRyZXNzOwogCQlhbm9uX2V4Y2x1c2l2ZSA9IGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgJmFtcDsmYW1wOwogCQkJCSBQYWdlQW5vbkV4Y2x1c2l2ZShzdWJwYWdlKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNjozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjA2CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMzY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEh1Z2V0bGIgUFRFIFJlYWQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IGl0JiMzOTtzIGEgcHJldHR5IHRhcmdldGVkIGJ1dCBwb3RlbnRpYWxseSBpbXBhY3RmdWwgY2hhbmdlIHdpdGhpbiB0aGUgTU0gY29yZS4gVGhleSYjMzk7cmUgc3dhcHBpbmcgb3V0IHRoZSBzdGFuZGFyZCBgcHRlcF9nZXQoKWAgZm9yIGBodWdlX3B0ZXBfZ2V0KClgIHdoZW4gZGVhbGluZyB3aXRoIEh1Z2VUTEIgcGFnZXMuIFRoZSBsb2NhdGlvbnMgdGhleSYjMzk7dmUgdG91Y2hlZCDigJMgYG1tL21pZ3JhdGUuY2AsIGBtbS9tcHJvdGVjdC5jYCwgYG1tL3BhZ2Vfdm1hX21hcHBlZC5jYCwgYW5kIGBtbS9ybWFwLmNgIOKAkyBhcmUgYWxsIGtleSBhcmVhcyBpbiBtZW1vcnkgbWFuYWdlbWVudCwgZXNwZWNpYWxseSBjb25jZXJuaW5nIFBURSBoYW5kbGluZyBhbmQgcGFnZSBtaWdyYXRpb24sIHByb3RlY3Rpb24sIGFuZCByZXZlcnNlIG1hcHBpbmdzLiBSZXBsYWNpbmcgdGhlIG9yaWdpbmFsIGBwdGVwX2dldGAgZnVuY3Rpb24gd2l0aCBgaHVnZV9wdGVwX2dldGAgaXMgYSBwcmV0dHkgY2xlYXIgaW5kaWNhdGlvbiB0aGF0IGl0JiMzOTtzIGdvaW5nIHRvIGFmZmVjdCBob3cgdGhlc2UgcGFydGljdWxhciBtZW1vcnkgcGFnZXMgYXJlIHByb2Nlc3NlZC4KClRoaXMgaXMgY29yZSBNTSBjb2RlLCBhbmQgZGlyZWN0bHkgcmVsYXRlZCB0byBIdWdlVExCIHBhZ2VzLCBzbyB0aGlzIGRlZmluaXRlbHkgd2FycmFudHMgYSBmdXp6aW5nIGNhbXBhaWduIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gc3VidGxlIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3JzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGVuYWJsZSB0aGlzIGNvZGUgcGF0aC4KClJpZ2h0IG9mZiB0aGUgYmF0LCB0aGUgYCNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFYCBndWFyZCBpbiBgbW0vbXByb3RlY3QuY2Agc2NyZWFtcyB0aGF0IGBIVUdFVExCX1BBR0VgIGlzIHRoZSBlc3NlbnRpYWwgY29uZmlnLiBJJiMzOTttIGFsc28gc2VlaW5nIHJlZmVyZW5jZXMgdG8gYGZvbGlvX3Rlc3RfaHVnZXRsYmAgYW5kIGBpc192bV9odWdldGxiX3BhZ2VgLCB3aGljaCBmdXJ0aGVyIHJlaW5mb3JjZXMgdGhhdCBgSFVHRVRMQl9QQUdFYCBpcyBub24tbmVnb3RpYWJsZS4KCk5vdywgbGV0JiMzOTtzIHNlZSB3aGF0IGVsc2UgbWlnaHQgYmUgbmVjZXNzYXJ5LiBgbW0vbWlncmF0ZS5jYCBkZXBlbmRzIG9uIGBDT05GSUdfTUlHUkFUSU9OYCwgd2hpY2ggbWVhbnMgaWYgdGhlIG1pZ3JhdGlvbiBjb21wb25lbnQgaXMgZW5hYmxlZCwgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHRyaWdnZXIgdGhlIHBhdGguIFRoZSBvdGhlciBmaWxlcyBzZWVtIHRvIGJlIGNvbXBpbGVkIHJlZ2FyZGxlc3Mgb2Ygb3RoZXIgb3B0aW9ucy4gSSBuZWVkIHRvIHZlcmlmeSBgQ09ORklHX01JR1JBVElPTmAgYW5kLCBvZiBjb3Vyc2UsIGNvbmZpcm0gdGhhdCBgSFVHRVRMQl9QQUdFYCBpcyBhY3RpdmUuIEkgd2lsbCBjaGVjayBgbW0vTWFrZWZpbGVgIHVzaW5nIGBncmVwcGVyYCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCB0aGVzZSBhcmUgdGhlIG9ubHkgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTY6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWlncmF0ZS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGU9OTc9b2JqLSQoQ09ORklHX01FTVRFU1QpXHRcdCYjNDM7PSBtZW10ZXN0Lm9cbm1tL01ha2VmaWxlOjk4Om9iai0kKENPTkZJR19NSUdSQVRJT04pICYjNDM7PSBtaWdyYXRlLm9cbm1tL01ha2VmaWxlLTk5LW9iai0kKENPTkZJR19OVU1BKSAmIzQzOz0gbWVtb3J5LXRpZXJzLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNjozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDk4CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHN1bW1hcnk6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyAtIE1pZ3JhdGUgYW5kIEh1Z2VUTEIgUGFnZXMqKgoKUmlnaHQsIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gYG1tL21pZ3JhdGUuY2AgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIFRoZSBjcnVjaWFsIHBvaW50IGhlcmUgaXMgdGhhdCBgQ09ORklHX01JR1JBVElPTmAgaXMgZGVmaW5pdGVseSByZXF1aXJlZCBmb3IgdGhlIG1pZ3JhdGlvbiBmdW5jdGlvbmFsaXR5IGluIHRoYXQgZmlsZS4gVGhhdCYjMzk7cyBhIGdpdmVuLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBpbmZsdWVuY2UgdGhpcyBtb2R1bGUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyByZWxhdGVkIHRvIHRoZSBgSFVHRVRMQl9QQUdFYCBjb25maWd1cmF0aW9uIG9wdGlvbiBhbmQgaG93IHRoYXQgZWZmZWN0cyB0aGlzIGFzcGVjdC4gSSB3aWxsIHN0YXJ0IGJ5IGxvb2tpbmcgaW50byB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE2OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2h1Z2V0bGIubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlPTgwPW9iai0kKENPTkZJR19IQVNfRE1BKVx0JiM0Mzs9IGRtYXBvb2wub1xubW0vTWFrZWZpbGU6ODE6b2JqLSQoQ09ORklHX0hVR0VUTEJGUylcdCYjNDM7PSBodWdldGxiLm8gaHVnZXRsYl9zeXNmcy5vIGh1Z2V0bGJfc3lzY3RsLm9cbm1tL01ha2VmaWxlLTgyLWlmZGVmIENPTkZJR19DTUFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNjozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzgxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYW5kIHRoaW5raW5nLCAmIzM0O0FoYSEgYENPTkZJR19IVUdFVExCRlNgLi4uIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBwb2ludGluZyB0b3dhcmRzIHRoZSBgaHVnZXRsYi5vYCBvYmplY3QuJiMzNDsgTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwLCBzbyBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcy4gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGVsdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBsb29rIGF0IGBDT05GSUdfSFVHRVRMQl9QQUdFYCB3aXRoaW4gZWl0aGVyIGBtbS9LY29uZmlnYCBvciBgZnMvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgZmluZCB0aGUgZmluZXIgZGV0YWlscyBhbmQgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIGxhcmdlciBtZW1vcnkgbWFuYWdlbWVudCBvciBmaWxlc3lzdGVtIGNvbmZpZ3VyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE2OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBIVUdFVExCX1BBR0UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zaC9tbS9LY29uZmlnPTE1OD1jaG9pY2Vcbi0tXG5hcmNoL3NoL21tL0tjb25maWctMTYzLVxuYXJjaC9zaC9tbS9LY29uZmlnOjE2NDpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfNjRLXG5hcmNoL3NoL21tL0tjb25maWctMTY1LVx0Ym9vbCBcJiMzNDs2NGtCXCYjMzQ7XG4tLVxuYXJjaC9zaC9tbS9LY29uZmlnLTE2Ny1cbmFyY2gvc2gvbW0vS2NvbmZpZzoxNjg6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzI1NktcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNjktXHRib29sIFwmIzM0OzI1NmtCXCYjMzQ7XG4tLVxuYXJjaC9zaC9tbS9LY29uZmlnLTE3MS1cbmFyY2gvc2gvbW0vS2NvbmZpZzoxNzI6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzFNQlxuYXJjaC9zaC9tbS9LY29uZmlnLTE3My1cdGJvb2wgXCYjMzQ7MU1CXCYjMzQ7XG5hcmNoL3NoL21tL0tjb25maWctMTc0LVxuYXJjaC9zaC9tbS9LY29uZmlnOjE3NTpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfNE1CXG5hcmNoL3NoL21tL0tjb25maWctMTc2LVx0Ym9vbCBcJiMzNDs0TUJcJiMzNDtcbi0tXG5hcmNoL3NoL21tL0tjb25maWctMTc4LVxuYXJjaC9zaC9tbS9LY29uZmlnOjE3OTpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfNjRNQlxuYXJjaC9zaC9tbS9LY29uZmlnLTE4MC1cdGJvb2wgXCYjMzQ7NjRNQlwmIzM0O1xuLS1cbmZzL0tjb25maWc9MjYyPWlmIEhVR0VUTEJGU1xuZnMvS2NvbmZpZzoyNjM6Y29uZmlnIEhVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQX0RFRkFVTFRfT05cbmZzL0tjb25maWctMjY0LVx0Ym9vbCBcJiMzNDtIdWdlVExCIFZtZW1tYXAgT3B0aW1pemF0aW9uIChIVk8pIGRlZmF1bHRzIHRvIG9uXCYjMzQ7XG4tLVxuZnMvS2NvbmZpZz0yNzE9ZW5kaWYgIyBIVUdFVExCRlNcbmZzL0tjb25maWctMjcyLVxuZnMvS2NvbmZpZzoyNzM6Y29uZmlnIEhVR0VUTEJfUEFHRVxuZnMvS2NvbmZpZy0yNzQtXHRkZWZfYm9vbCBIVUdFVExCRlNcbi0tXG5mcy9LY29uZmlnLTI3Ni1cbmZzL0tjb25maWc6Mjc3OmNvbmZpZyBIVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUFxuZnMvS2NvbmZpZy0yNzgtXHRkZWZfYm9vbCBIVUdFVExCX1BBR0Vcbi0tXG5tbS9LY29uZmlnPTY1Mz1jb25maWcgQVJDSF9FTkFCTEVfVEhQX01JR1JBVElPTlxuLS1cbm1tL0tjb25maWctNjU1LVxubW0vS2NvbmZpZzo2NTY6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFX1ZBUklBQkxFXG5tbS9LY29uZmlnLTY1Ny1cdGRlZl9ib29sIG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNjozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTczCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uOiBIdWdlVExCIGFuZCBNaWdyYXRpb24gQ29kZSoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBIVUdFVExCX1BBR0VgIGlzIGxpbmtlZCB0byBgZGVmX2Jvb2wgSFVHRVRMQkZTYC4gVGhhdCYjMzk7cyB0aGUgY29uZmlnIEkgbmVlZCB0byBlbmFibGUgZm9yIHRoaXMgZnV6emluZyB0YXJnZXQgLSBgSFVHRVRMQkZTYC4KCk5vdywgbGV0JiMzOTtzIHBpbnBvaW50IHRoZSByZWxldmFudCBmdW5jdGlvbnMuIEJhc2VkIG9uIHRoZSBtb2RpZmljYXRpb25zLCB0aGUga2V5IGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBhcmU6IGByZW1vdmVfbWlncmF0aW9uX3B0ZWAsIGBwcm90X25vbmVfaHVnZXRsYl9lbnRyeWAsIGBjaGVja19wdGVgLCBgdHJ5X3RvX3VubWFwX29uZWAsIGFuZCBgdHJ5X3RvX21pZ3JhdGVfb25lYC4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHdoZXJlIHRoZXNlIHJlc2lkZS4gTG9va3MgbGlrZSBgcHJvdF9ub25lX2h1Z2V0bGJfZW50cnlgIGlzIHN0YXRpYyB3aXRoaW4gYG1tL21wcm90ZWN0LmNgLiBgcmVtb3ZlX21pZ3JhdGlvbl9wdGVgIGlzIHN0YXRpYyBpbiBgbW0vbWlncmF0ZS5jYC4gVGhlbiwgYGNoZWNrX3B0ZWAgbGl2ZXMgaW4gYG1tL3BhZ2Vfdm1hX21hcHBlZC5jYCwgYW5kIGZpbmFsbHksIGJvdGggYHRyeV90b191bm1hcF9vbmVgIGFuZCBgdHJ5X3RvX21pZ3JhdGVfb25lYCBhcmUgc3RhdGljIGluIGBtbS9ybWFwLmNgLgoKT2theSwgbm93IGZvciByZWFjaGFiaWxpdHkuIGByZW1vdmVfbWlncmF0aW9uX3B0ZWAgaXMgaW52b2tlZCBieSBgcmVtb3ZlX21pZ3JhdGlvbl9wdGVzYC4gYHByb3Rfbm9uZV9odWdldGxiX2VudHJ5YCBpcyB1c2VkIGFzIGEgY2FsbGJhY2sgZm9yIGBtbV93YWxrYCwgd2hpY2ggaXMgdXNlZCBpbiBgbW0vbXByb3RlY3QuY2AuIGBjaGVja19wdGVgIGlzIHJlYWNoZWQgdGhyb3VnaCBgcGFnZV92bWFfbWFwcGVkX3dhbGtgLiBgdHJ5X3RvX3VubWFwX29uZWAgaXMgY2FsbGVkIGZyb20gYHRyeV90b191bm1hcGAsIGFuZCBgdHJ5X3RvX21pZ3JhdGVfb25lYCBpcyBjYWxsZWQgZnJvbSBgdHJ5X3RvX21pZ3JhdGVgLgoKUGVyZmVjdC4gVGhlc2UgYXJlIGFsbCBjb3JlIE1NIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHBhZ2UgbWlncmF0aW9uLCB1bm1hcHBpbmcsIGFuZCBtZW1vcnkgcHJvdGVjdGlvbiBmb3IgTlVNQSBiYWxhbmNpbmcuIFRoZXkmIzM5O3JlIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCByZXByZXNlbnQgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KCkxldCYjMzk7cyBzdW1tYXJpemUgdGhlIGtleSBjb25maWd1cmF0aW9ucyBhbmQgc3ltYm9scyBmb3IgZWFzeSByZWZlcmVuY2U6CgoqICAgQ29uZmlnczogYEhVR0VUTEJGU2AgYW5kIGBNSUdSQVRJT05gLgoqICAgRm9jdXMgU3ltYm9sczogYHJlbW92ZV9taWdyYXRpb25fcHRlYCwgYHByb3Rfbm9uZV9odWdldGxiX2VudHJ5YCwgYGNoZWNrX3B0ZWAsIGB0cnlfdG9fdW5tYXBfb25lYCwgYW5kIGB0cnlfdG9fbWlncmF0ZV9vbmVgLgoKRmluYWxseSwgdG8gYmUgdGhvcm91Z2g6IGBwcm90X25vbmVfaHVnZXRsYl9lbnRyeWAgaXMgaW4gYG1tL21wcm90ZWN0LmNgLCBsZXQgbWUgbWFrZSBhIG5vdGUgdG8gY2hlY2sgaWYgaXQgaGFzIGEgZGVwZW5kZW5jeSBvbiBgTlVNQV9CQUxBTkNJTkdgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNjozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcm90X25vbmVfaHVnZXRsYl9lbnRyeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL21wcm90ZWN0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vbXByb3RlY3QuYz02OTQ9c3RhdGljIGludCBwcm90X25vbmVfcHRlX2VudHJ5KHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5tbS9tcHJvdGVjdC5jLTcwMi0jaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxubW0vbXByb3RlY3QuYzo3MDM6c3RhdGljIGludCBwcm90X25vbmVfaHVnZXRsYl9lbnRyeShwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGhtYXNrLFxubW0vbXByb3RlY3QuYy03MDQtXHRcdFx0XHQgICB1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgbmV4dCxcbi0tXG5tbS9tcHJvdGVjdC5jLTcxMy0jZWxzZVxubW0vbXByb3RlY3QuYzo3MTQ6I2RlZmluZSBwcm90X25vbmVfaHVnZXRsYl9lbnRyeVx0TlVMTFxubW0vbXByb3RlY3QuYy03MTUtI2VuZGlmXG4tLVxubW0vbXByb3RlY3QuYz03MjM9c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBwcm90X25vbmVfd2Fsa19vcHMgPSB7XG5tbS9tcHJvdGVjdC5jLTcyNC1cdC5wdGVfZW50cnlcdFx0PSBwcm90X25vbmVfcHRlX2VudHJ5LFxubW0vbXByb3RlY3QuYzo3MjU6XHQuaHVnZXRsYl9lbnRyeVx0XHQ9IHByb3Rfbm9uZV9odWdldGxiX2VudHJ5LFxubW0vbXByb3RlY3QuYy03MjYtXHQudGVzdF93YWxrXHRcdD0gcHJvdF9ub25lX3Rlc3QsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE2OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5MTcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhcyBpZiBJJiMzOTttIHRoaW5raW5nIHRoZXNlIHRoaW5ncyBteXNlbGY6CgoqKlRyYWNpbmcgdGhlIFVzYWdlIG9mIGBwcm90X25vbmVfd2Fsa19vcHNgKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGBwcm90X25vbmVfd2Fsa19vcHNgIGNvbnN0cnVjdC4gRmlyc3QgdGhpbmdzIGZpcnN0OiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IHdpdGggdGhlIG9idmlvdXMgYW5kIGh1bnQgZG93biBhbGwgdGhlIHBsYWNlcyB3aGVyZSB0aGlzIGlzIGFjdHVhbGx5ICp1c2VkKi4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHRoZSBjYWxsIHNpdGVzIHRvIHBpZWNlIHRvZ2V0aGVyIHRoZSBjb250cm9sIGZsb3cgYW5kIGRhdGEgZGVwZW5kZW5jaWVzLiBBIHNpbXBsZSBncmVwIHNob3VsZCBnZXQgbWUgdGhlIGltbWVkaWF0ZSByZWZlcmVuY2VzLiBUaGVuLCBJIGNhbiBzdGFydCBhbmFseXppbmcgaG93IGl0IGlzIHVzZWQgdGhlcmUgaW4gY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTY6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHJvdF9ub25lX3dhbGtfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vbXByb3RlY3QuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9tcHJvdGVjdC5jPTcxNz1zdGF0aWMgaW50IHByb3Rfbm9uZV90ZXN0KHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBuZXh0LFxuLS1cbm1tL21wcm90ZWN0LmMtNzIyLVxubW0vbXByb3RlY3QuYzo3MjM6c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBwcm90X25vbmVfd2Fsa19vcHMgPSB7XG5tbS9tcHJvdGVjdC5jLTcyNC1cdC5wdGVfZW50cnlcdFx0PSBwcm90X25vbmVfcHRlX2VudHJ5LFxuLS1cbm1tL21wcm90ZWN0LmM9NzMxPW1wcm90ZWN0X2ZpeHVwKHN0cnVjdCB2bWFfaXRlcmF0b3IgKnZtaSwgc3RydWN0IG1tdV9nYXRoZXIgKnRsYixcbi0tXG5tbS9tcHJvdGVjdC5jLTc2Mi1cdFx0ZXJyb3IgPSB3YWxrX3BhZ2VfcmFuZ2UoY3VycmVudC1cdTAwM2VtbSwgc3RhcnQsIGVuZCxcbm1tL21wcm90ZWN0LmM6NzYzOlx0XHRcdFx0XHUwMDI2cHJvdF9ub25lX3dhbGtfb3BzLCBcdTAwMjZuZXdfcGdwcm90KTtcbm1tL21wcm90ZWN0LmMtNzY0LVx0XHRpZiAoZXJyb3IpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE2OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczMzIKCQkJCQkJCW91dHB1dDogMTUyCgkJCQkJCQl0aG91Z2h0czogMzkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKgoKT2theSwgc28gSSYjMzk7dmUgdHJhY2VkIHRoZSBjb2RlIHBhdGggYW5kIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTt2ZSBmb3VuZC4gYHByb3Rfbm9uZV93YWxrX29wc2AgaXMgdXNlZCBpbiBgbXByb3RlY3RfZml4dXBgIHdoZW4gd2UmIzM5O3JlIG1vZGlmeWluZyBtZW1vcnkgcHJvdGVjdGlvbnMuIEFoLCBhbmQgYG1wcm90ZWN0X2ZpeHVwYCBpdHNlbGYgaXMgY2FsbGVkIGZyb20gYGRvX21wcm90ZWN0X3BrZXlgLiBUaGF0IG1lYW5zIGBwcm90X25vbmVfaHVnZXRsYl9lbnRyeWAgaXMgZGVmaW5pdGVseSByZWFjaGFibGUgdGhyb3VnaCBhIHNpbXBsZSBgbXByb3RlY3RgIGNhbGwgb24gYSBIdWdlVExCIG1hcHBpbmcgLSB0aGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4KCk5vdywgd2hhdCBhYm91dCB0aGUgb3RoZXIgZnVuY3Rpb25zIHRoYXQgbWlnaHQgYmUgaW52b2x2ZWQgaGVyZT8gYHRyeV90b191bm1hcF9vbmVgIGFuZCBgdHJ5X3RvX21pZ3JhdGVfb25lYCDigJMgdGhleSYjMzk7cmUgYWx3YXlzIGNvbXBpbGVkLCBzbyB3ZSBzaG91bGQgY29uc2lkZXIgdGhvc2UgdG9vLiBBbmQsIG9mIGNvdXJzZSwgYGNoZWNrX3B0ZWAgaXMgYWx3YXlzIHRoZXJlIHRvby4gYHJlbW92ZV9taWdyYXRpb25fcHRlYCBpcyBvbmx5IHRoZXJlIGlmIGBDT05GSUdfTUlHUkFUSU9OYCBpcyBlbmFibGVkLCBzbyB0aGF0JiMzOTtzIGNvbmRpdGlvbmFsLgoKU28sIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgaGVyZSBzZWVtIHRvIGJlIGBIVUdFVExCRlNgIGFuZCBgTUlHUkFUSU9OYC4gTGV0JiMzOTtzIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYEhVR0VUTEJGU2AgZG9lc24mIzM5O3QgZGVwZW5kIG9uIGFueXRoaW5nIGVsc2UgdGhhdCYjMzk7cyB1bnVzdWFsLiBOb3BlLCBpdCYjMzk7cyBwcmV0dHkgc3RhbmRhcmQuIEdvb2QuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgbG9vayBhdCBgQ09ORklHX01JR1JBVElPTmAuIFJpZ2h0LCBpdCYjMzk7cyBzZWxlY3RlZCBieSBgTlVNQV9CQUxBTkNJTkdgLCBgTUVNT1JZX0hPVFJFTU9WRWAsIGBDTUFgLCBhbmQgYENPTVBBQ1RJT05gLiBBbHNvIHN0YW5kYXJkLgoKT2theSwgbGV0JiMzOTtzIHN1bW1hcml6ZSBhbmQgZm9ybWFsaXplIHRoaXM6CgpJdCBsb29rcyBsaWtlIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBjaGFuZ2VzIHJlbGF0ZWQgdG8gUFRFIHJlYWRpbmcgZm9yIEh1Z2VUTEIgcGFnZXMgZHVyaW5nIHRoaW5ncyBsaWtlIHBhZ2UgbWlncmF0aW9uLCB1bm1hcHBpbmcsIGFuZCBtZW1vcnkgcHJvdGVjdGlvbiBtb2RpZmljYXRpb25zLiBUaGVzZSBhcmUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbnMgYW5kIGNhbiBiZSByZWFjaGVkIHRocm91Z2ggcHJldHR5IHN0YW5kYXJkIHN5c2NhbGxzIGxpa2UgYG1wcm90ZWN0YCwgYG1hZHZpc2VgLCBhbmQgYG1iaW5kYCwgZXNwZWNpYWxseSBvbiBIdWdlVExCIG1hcHBpbmdzLiBTbyB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4KCk15IGxpc3Qgb2YgdGFyZ2V0IHN5bWJvbHM6CgoqICAgYHJlbW92ZV9taWdyYXRpb25fcHRlYAoqICAgYHByb3Rfbm9uZV9odWdldGxiX2VudHJ5YAoqICAgYGNoZWNrX3B0ZWAKKiAgIGB0cnlfdG9fdW5tYXBfb25lYAoqICAgYHRyeV90b19taWdyYXRlX29uZWAKCkFuZCB0aGUgcmVxdWlyZWQgZW5hYmxlZCBjb25maWdzOgoKKiAgIGBIVUdFVExCRlNgCiogICBgTUlHUkFUSU9OYAoKVGltZSB0byBzZXQgdGhlc2UgcmVzdWx0cyBhbmQgbW92ZSBvbiB0byB0aGUgbmV4dCBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE2OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtIVUdFVExCRlMmIzM0OywKICAgICYjMzQ7TUlHUkFUSU9OJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cmVtb3ZlX21pZ3JhdGlvbl9wdGUmIzM0OywKICAgICYjMzQ7cHJvdF9ub25lX2h1Z2V0bGJfZW50cnkmIzM0OywKICAgICYjMzQ7Y2hlY2tfcHRlJiMzNDssCiAgICAmIzM0O3RyeV90b191bm1hcF9vbmUmIzM0OywKICAgICYjMzQ7dHJ5X3RvX21pZ3JhdGVfb25lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGhvdyBQVEVzIGFyZSByZWFkIGZvciBIdWdlVExCIHBhZ2VzIGR1cmluZyBwYWdlIG1pZ3JhdGlvbiwgdW5tYXBwaW5nLCBhbmQgbWVtb3J5IHByb3RlY3Rpb24gY2hhbmdlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgc3RhbmRhcmQgc3lzY2FsbHMgKGUuZy4sIG1wcm90ZWN0LCBtYWR2aXNlLCBtYmluZCkgb24gSHVnZVRMQiBtYXBwaW5ncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SFVHRVRMQkZTJiMzNDssCiAgICAmIzM0O01JR1JBVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JlbW92ZV9taWdyYXRpb25fcHRlJiMzNDssCiAgICAmIzM0O3Byb3Rfbm9uZV9odWdldGxiX2VudHJ5JiMzNDssCiAgICAmIzM0O2NoZWNrX3B0ZSYjMzQ7LAogICAgJiMzNDt0cnlfdG9fdW5tYXBfb25lJiMzNDssCiAgICAmIzM0O3RyeV90b19taWdyYXRlX29uZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBob3cgUFRFcyBhcmUgcmVhZCBmb3IgSHVnZVRMQiBwYWdlcyBkdXJpbmcgcGFnZSBtaWdyYXRpb24sIHVubWFwcGluZywgYW5kIG1lbW9yeSBwcm90ZWN0aW9uIGNoYW5nZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHN0YW5kYXJkIHN5c2NhbGxzIChlLmcuLCBtcHJvdGVjdCwgbWFkdmlzZSwgbWJpbmQpIG9uIEh1Z2VUTEIgbWFwcGluZ3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNjozMzo0Ni44MzM0NDY4NzZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjMwNDg4MzAxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIVUdFVExCRlNcIixcbiAgICBcIk1JR1JBVElPTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJlbW92ZV9taWdyYXRpb25fcHRlXCIsXG4gICAgXCJwcm90X25vbmVfaHVnZXRsYl9lbnRyeVwiLFxuICAgIFwiY2hlY2tfcHRlXCIsXG4gICAgXCJ0cnlfdG9fdW5tYXBfb25lXCIsXG4gICAgXCJ0cnlfdG9fbWlncmF0ZV9vbmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBob3cgUFRFcyBhcmUgcmVhZCBmb3IgSHVnZVRMQiBwYWdlcyBkdXJpbmcgcGFnZSBtaWdyYXRpb24sIHVubWFwcGluZywgYW5kIG1lbW9yeSBwcm90ZWN0aW9uIGNoYW5nZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHN0YW5kYXJkIHN5c2NhbGxzIChlLmcuLCBtcHJvdGVjdCwgbWFkdmlzZSwgbWJpbmQpIG9uIEh1Z2VUTEIgbWFwcGluZ3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE2OjMzOjQ2LjgzMzQ1MTc3NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIxODA2OTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTI5YzdiNTU1YmZmNzE2YzU1OGZhMDRkMGE3ZTIwMGQzZmJlNmRhY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1biAyNiAxNjozMzo0NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaCBiL2luY2x1ZGUvbGludXgvaHVnZXRsYi5oXFxuaW5kZXggMmFiYWY5OTMyMWU5MGQuLmZkYjdiZGY3NjQ1YzU5IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvaHVnZXRsYi5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9odWdldGxiLmhcXG5AQCAtMTI2MSw2ICsxMjYxLDkgQEAgc3RhdGljIGlubGluZSB2b2lkIGh1Z2V0bGJfY291bnRfc3ViKGxvbmcgbCwgc3RydWN0IG1tX3N0cnVjdCAqbW0pXFxuIHtcXG4gfVxcbiBcXG4rcHRlX3QgaHVnZV9wdGVwX2dldChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbitcXHRcXHQgICAgcHRlX3QgKnB0ZXApO1xcbitcXG4gc3RhdGljIGlubGluZSBwdGVfdCBodWdlX3B0ZXBfY2xlYXJfZmx1c2goc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuIFxcdFxcdFxcdFxcdFxcdCAgdW5zaWduZWQgbG9uZyBhZGRyLCBwdGVfdCAqcHRlcClcXG4ge1xcbmRpZmYgLS1naXQgYS9tbS9taWdyYXRlLmMgYi9tbS9taWdyYXRlLmNcXG5pbmRleCBkOWIyMzkwOWQ3MTZjNi4uYzY1ZjBmNDNkZjdlYmIgMTAwNjQ0XFxuLS0tIGEvbW0vbWlncmF0ZS5jXFxuKysrIGIvbW0vbWlncmF0ZS5jXFxuQEAgLTM3MSw3ICszNzEsMTEgQEAgc3RhdGljIGJvb2wgcmVtb3ZlX21pZ3JhdGlvbl9wdGUoc3RydWN0IGZvbGlvICpmb2xpbyxcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdH1cXG4gI2VuZGlmXFxuLVxcdFxcdG9sZF9wdGUgPSBwdGVwX2dldChwdm13LnB0ZSk7XFxuK1xcdFxcdGlmIChmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pKVxcbitcXHRcXHRcXHRvbGRfcHRlID0gaHVnZV9wdGVwX2dldCh2bWEtXFx1MDAzZXZtX21tLCBwdm13LmFkZHJlc3MsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdHB2bXcucHRlKTtcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRvbGRfcHRlID0gcHRlcF9nZXQocHZtdy5wdGUpO1xcbiBcXHRcXHRpZiAocm1hcF93YWxrX2FyZy1cXHUwMDNlbWFwX3VudXNlZF90b196ZXJvcGFnZSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgdHJ5X3RvX21hcF91bnVzZWRfdG9femVyb3BhZ2UoXFx1MDAyNnB2bXcsIGZvbGlvLCBvbGRfcHRlLCBpZHgpKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG5kaWZmIC0tZ2l0IGEvbW0vbXByb3RlY3QuYyBiL21tL21wcm90ZWN0LmNcXG5pbmRleCA5Y2JmOTMyYjAyOGNmOS4uMjM3Nzk2MzJkMThiZjIgMTAwNjQ0XFxuLS0tIGEvbW0vbXByb3RlY3QuY1xcbisrKyBiL21tL21wcm90ZWN0LmNcXG5AQCAtNjk5LDE0ICs2OTksMjAgQEAgc3RhdGljIGludCBwcm90X25vbmVfcHRlX2VudHJ5KHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4gXFx0XFx0MCA6IC1FQUNDRVM7XFxuIH1cXG4gXFxuKyNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuIHN0YXRpYyBpbnQgcHJvdF9ub25lX2h1Z2V0bGJfZW50cnkocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBobWFzayxcXG4gXFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIG5leHQsXFxuIFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBtbV93YWxrICp3YWxrKVxcbiB7XFxuLVxcdHJldHVybiBwZm5fbW9kaWZ5X2FsbG93ZWQocHRlX3BmbihwdGVwX2dldChwdGUpKSxcXG4rXFx0cHRlX3QgZW50cnkgPSBodWdlX3B0ZXBfZ2V0KHdhbGstXFx1MDAzZW1tLCBhZGRyLCBwdGUpO1xcbitcXG4rXFx0cmV0dXJuIHBmbl9tb2RpZnlfYWxsb3dlZChwdGVfcGZuKGVudHJ5KSxcXG4gXFx0XFx0XFx0XFx0ICAqKHBncHJvdF90ICopKHdhbGstXFx1MDAzZXByaXZhdGUpKSA/XFxuIFxcdFxcdDAgOiAtRUFDQ0VTO1xcbiB9XFxuKyNlbHNlXFxuKyNkZWZpbmUgcHJvdF9ub25lX2h1Z2V0bGJfZW50cnlcXHROVUxMXFxuKyNlbmRpZlxcbiBcXG4gc3RhdGljIGludCBwcm90X25vbmVfdGVzdCh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgbmV4dCxcXG4gXFx0XFx0XFx0ICBzdHJ1Y3QgbW1fd2FsayAqd2FsaylcXG5kaWZmIC0tZ2l0IGEvbW0vcGFnZV92bWFfbWFwcGVkLmMgYi9tbS9wYWdlX3ZtYV9tYXBwZWQuY1xcbmluZGV4IDJjY2JhYmZiMmNjMTdhLi4xOGUxZDM0MWY0NjNjOSAxMDA2NDRcXG4tLS0gYS9tbS9wYWdlX3ZtYV9tYXBwZWQuY1xcbisrKyBiL21tL3BhZ2Vfdm1hX21hcHBlZC5jXFxuQEAgLTEwNyw3ICsxMDcsMTMgQEAgc3RhdGljIGJvb2wgbWFwX3B0ZShzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcsIHBtZF90ICpwbWR2YWxwLFxcbiBzdGF0aWMgYm9vbCBjaGVja19wdGUoc3RydWN0IHBhZ2Vfdm1hX21hcHBlZF93YWxrICpwdm13LCB1bnNpZ25lZCBsb25nIHB0ZV9ucilcXG4ge1xcbiBcXHR1bnNpZ25lZCBsb25nIHBmbjtcXG4tXFx0cHRlX3QgcHRlbnQgPSBwdGVwX2dldChwdm13LVxcdTAwM2VwdGUpO1xcbitcXHRwdGVfdCBwdGVudDtcXG4rXFxuK1xcdGlmIChpc192bV9odWdldGxiX3BhZ2UocHZtdy1cXHUwMDNldm1hKSlcXG4rXFx0XFx0cHRlbnQgPSBodWdlX3B0ZXBfZ2V0KHB2bXctXFx1MDAzZXZtYS1cXHUwMDNldm1fbW0sIHB2bXctXFx1MDAzZWFkZHJlc3MsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHB2bXctXFx1MDAzZXB0ZSk7XFxuK1xcdGVsc2VcXG4rXFx0XFx0cHRlbnQgPSBwdGVwX2dldChwdm13LVxcdTAwM2VwdGUpO1xcbiBcXG4gXFx0aWYgKHB2bXctXFx1MDAzZWZsYWdzIFxcdTAwMjYgUFZNV19NSUdSQVRJT04pIHtcXG4gXFx0XFx0Y29uc3Qgc29mdGxlYWZfdCBlbnRyeSA9IHNvZnRsZWFmX2Zyb21fcHRlKHB0ZW50KTtcXG5kaWZmIC0tZ2l0IGEvbW0vcm1hcC5jIGIvbW0vcm1hcC5jXFxuaW5kZXggMWM3N2Q1ZGMwNmU5ZmEuLmFiYzNhNDRiYWFhM2RmIDEwMDY0NFxcbi0tLSBhL21tL3JtYXAuY1xcbisrKyBiL21tL3JtYXAuY1xcbkBAIC0yMDk1LDExICsyMDk1LDE2IEBAIHN0YXRpYyBib29sIHRyeV90b191bm1hcF9vbmUoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuIFxcdFxcdC8qIFVuZXhwZWN0ZWQgUE1ELW1hcHBlZCBUSFA/ICovXFxuIFxcdFxcdFZNX0JVR19PTl9GT0xJTyghcHZtdy5wdGUsIGZvbGlvKTtcXG4gXFxuLVxcdFxcdC8qXFxuLVxcdFxcdCAqIEhhbmRsZSBQRk4gc3dhcCBQVEVzLCBzdWNoIGFzIGRldmljZS1leGNsdXNpdmUgb25lcywgdGhhdFxcbi1cXHRcXHQgKiBhY3R1YWxseSBtYXAgcGFnZXMuXFxuLVxcdFxcdCAqL1xcbi1cXHRcXHRwdGV2YWwgPSBwdGVwX2dldChwdm13LnB0ZSk7XFxuK1xcdFxcdGFkZHJlc3MgPSBwdm13LmFkZHJlc3M7XFxuK1xcdFxcdGlmIChmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pKSB7XFxuK1xcdFxcdFxcdHB0ZXZhbCA9IGh1Z2VfcHRlcF9nZXQobW0sIGFkZHJlc3MsIHB2bXcucHRlKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0LypcXG4rXFx0XFx0XFx0ICogSGFuZGxlIFBGTiBzd2FwIFBURXMsIHN1Y2ggYXMgZGV2aWNlLWV4Y2x1c2l2ZSBvbmVzLFxcbitcXHRcXHRcXHQgKiB0aGF0IGFjdHVhbGx5IG1hcCBwYWdlcy5cXG4rXFx0XFx0XFx0ICovXFxuK1xcdFxcdFxcdHB0ZXZhbCA9IHB0ZXBfZ2V0KHB2bXcucHRlKTtcXG4rXFx0XFx0fVxcbiBcXHRcXHRpZiAobGlrZWx5KHB0ZV9wcmVzZW50KHB0ZXZhbCkpKSB7XFxuIFxcdFxcdFxcdHBmbiA9IHB0ZV9wZm4ocHRldmFsKTtcXG4gXFx0XFx0fSBlbHNlIHtcXG5AQCAtMjExMCw3ICsyMTE1LDYgQEAgc3RhdGljIGJvb2wgdHJ5X3RvX3VubWFwX29uZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0c3VicGFnZSA9IGZvbGlvX3BhZ2UoZm9saW8sIHBmbiAtIGZvbGlvX3Bmbihmb2xpbykpO1xcbi1cXHRcXHRhZGRyZXNzID0gcHZtdy5hZGRyZXNzO1xcbiBcXHRcXHRhbm9uX2V4Y2x1c2l2ZSA9IGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0XFx0IFBhZ2VBbm9uRXhjbHVzaXZlKHN1YnBhZ2UpO1xcbiBcXG5AQCAtMjUwMSwxMSArMjUwNSwxNiBAQCBzdGF0aWMgYm9vbCB0cnlfdG9fbWlncmF0ZV9vbmUoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuIFxcdFxcdC8qIFVuZXhwZWN0ZWQgUE1ELW1hcHBlZCBUSFA/ICovXFxuIFxcdFxcdFZNX0JVR19PTl9GT0xJTyghcHZtdy5wdGUsIGZvbGlvKTtcXG4gXFxuLVxcdFxcdC8qXFxuLVxcdFxcdCAqIEhhbmRsZSBQRk4gc3dhcCBQVEVzLCBzdWNoIGFzIGRldmljZS1leGNsdXNpdmUgb25lcywgdGhhdFxcbi1cXHRcXHQgKiBhY3R1YWxseSBtYXAgcGFnZXMuXFxuLVxcdFxcdCAqL1xcbi1cXHRcXHRwdGV2YWwgPSBwdGVwX2dldChwdm13LnB0ZSk7XFxuK1xcdFxcdGFkZHJlc3MgPSBwdm13LmFkZHJlc3M7XFxuK1xcdFxcdGlmIChmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pKSB7XFxuK1xcdFxcdFxcdHB0ZXZhbCA9IGh1Z2VfcHRlcF9nZXQobW0sIGFkZHJlc3MsIHB2bXcucHRlKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0LypcXG4rXFx0XFx0XFx0ICogSGFuZGxlIFBGTiBzd2FwIFBURXMsIHN1Y2ggYXMgZGV2aWNlLWV4Y2x1c2l2ZSBvbmVzLFxcbitcXHRcXHRcXHQgKiB0aGF0IGFjdHVhbGx5IG1hcCBwYWdlcy5cXG4rXFx0XFx0XFx0ICovXFxuK1xcdFxcdFxcdHB0ZXZhbCA9IHB0ZXBfZ2V0KHB2bXcucHRlKTtcXG4rXFx0XFx0fVxcbiBcXHRcXHRpZiAobGlrZWx5KHB0ZV9wcmVzZW50KHB0ZXZhbCkpKSB7XFxuIFxcdFxcdFxcdHBmbiA9IHB0ZV9wZm4ocHRldmFsKTtcXG4gXFx0XFx0fSBlbHNlIHtcXG5AQCAtMjUxNiw3ICsyNTI1LDYgQEAgc3RhdGljIGJvb2wgdHJ5X3RvX21pZ3JhdGVfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRzdWJwYWdlID0gZm9saW9fcGFnZShmb2xpbywgcGZuIC0gZm9saW9fcGZuKGZvbGlvKSk7XFxuLVxcdFxcdGFkZHJlc3MgPSBwdm13LmFkZHJlc3M7XFxuIFxcdFxcdGFub25fZXhjbHVzaXZlID0gZm9saW9fdGVzdF9hbm9uKGZvbGlvKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHRcXHQgUGFnZUFub25FeGNsdXNpdmUoc3VicGFnZSk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNjozMzo0Ny40NTYwMjEyOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU2ODIyOTk2NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSFVHRVRMQkZTXCIsXG4gICAgXCJNSUdSQVRJT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyZW1vdmVfbWlncmF0aW9uX3B0ZVwiLFxuICAgIFwicHJvdF9ub25lX2h1Z2V0bGJfZW50cnlcIixcbiAgICBcImNoZWNrX3B0ZVwiLFxuICAgIFwidHJ5X3RvX3VubWFwX29uZVwiLFxuICAgIFwidHJ5X3RvX21pZ3JhdGVfb25lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgaG93IFBURXMgYXJlIHJlYWQgZm9yIEh1Z2VUTEIgcGFnZXMgZHVyaW5nIHBhZ2UgbWlncmF0aW9uLCB1bm1hcHBpbmcsIGFuZCBtZW1vcnkgcHJvdGVjdGlvbiBjaGFuZ2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBzdGFuZGFyZCBzeXNjYWxscyAoZS5nLiwgbXByb3RlY3QsIG1hZHZpc2UsIG1iaW5kKSBvbiBIdWdlVExCIG1hcHBpbmdzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDEyOWM3YjU1NWJmZjcxNmM1NThmYTA0ZDBhN2UyMDBkM2ZiZTZkYWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAyNiAxNjozMzo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaHVnZXRsYi5oIGIvaW5jbHVkZS9saW51eC9odWdldGxiLmhcbmluZGV4IDJhYmFmOTkzMjFlOTBkLi5mZGI3YmRmNzY0NWM1OSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvaHVnZXRsYi5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaFxuQEAgLTEyNjEsNiArMTI2MSw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBodWdldGxiX2NvdW50X3N1Yihsb25nIGwsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxuIHtcbiB9XG4gXG4rcHRlX3QgaHVnZV9wdGVwX2dldChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuK1x0XHQgICAgcHRlX3QgKnB0ZXApO1xuK1xuIHN0YXRpYyBpbmxpbmUgcHRlX3QgaHVnZV9wdGVwX2NsZWFyX2ZsdXNoKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuIFx0XHRcdFx0XHQgIHVuc2lnbmVkIGxvbmcgYWRkciwgcHRlX3QgKnB0ZXApXG4ge1xuZGlmZiAtLWdpdCBhL21tL21pZ3JhdGUuYyBiL21tL21pZ3JhdGUuY1xuaW5kZXggZDliMjM5MDlkNzE2YzYuLmM2NWYwZjQzZGY3ZWJiIDEwMDY0NFxuLS0tIGEvbW0vbWlncmF0ZS5jXG4rKysgYi9tbS9taWdyYXRlLmNcbkBAIC0zNzEsNyArMzcxLDExIEBAIHN0YXRpYyBib29sIHJlbW92ZV9taWdyYXRpb25fcHRlKHN0cnVjdCBmb2xpbyAqZm9saW8sXG4gXHRcdFx0Y29udGludWU7XG4gXHRcdH1cbiAjZW5kaWZcbi1cdFx0b2xkX3B0ZSA9IHB0ZXBfZ2V0KHB2bXcucHRlKTtcbitcdFx0aWYgKGZvbGlvX3Rlc3RfaHVnZXRsYihmb2xpbykpXG4rXHRcdFx0b2xkX3B0ZSA9IGh1Z2VfcHRlcF9nZXQodm1hLVx1MDAzZXZtX21tLCBwdm13LmFkZHJlc3MsXG4rXHRcdFx0XHRcdFx0cHZtdy5wdGUpO1xuK1x0XHRlbHNlXG4rXHRcdFx0b2xkX3B0ZSA9IHB0ZXBfZ2V0KHB2bXcucHRlKTtcbiBcdFx0aWYgKHJtYXBfd2Fsa19hcmctXHUwMDNlbWFwX3VudXNlZF90b196ZXJvcGFnZSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIHRyeV90b19tYXBfdW51c2VkX3RvX3plcm9wYWdlKFx1MDAyNnB2bXcsIGZvbGlvLCBvbGRfcHRlLCBpZHgpKVxuIFx0XHRcdGNvbnRpbnVlO1xuZGlmZiAtLWdpdCBhL21tL21wcm90ZWN0LmMgYi9tbS9tcHJvdGVjdC5jXG5pbmRleCA5Y2JmOTMyYjAyOGNmOS4uMjM3Nzk2MzJkMThiZjIgMTAwNjQ0XG4tLS0gYS9tbS9tcHJvdGVjdC5jXG4rKysgYi9tbS9tcHJvdGVjdC5jXG5AQCAtNjk5LDE0ICs2OTksMjAgQEAgc3RhdGljIGludCBwcm90X25vbmVfcHRlX2VudHJ5KHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgYWRkcixcbiBcdFx0MCA6IC1FQUNDRVM7XG4gfVxuIFxuKyNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG4gc3RhdGljIGludCBwcm90X25vbmVfaHVnZXRsYl9lbnRyeShwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGhtYXNrLFxuIFx0XHRcdFx0ICAgdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIG5leHQsXG4gXHRcdFx0XHQgICBzdHJ1Y3QgbW1fd2FsayAqd2FsaylcbiB7XG4tXHRyZXR1cm4gcGZuX21vZGlmeV9hbGxvd2VkKHB0ZV9wZm4ocHRlcF9nZXQocHRlKSksXG4rXHRwdGVfdCBlbnRyeSA9IGh1Z2VfcHRlcF9nZXQod2Fsay1cdTAwM2VtbSwgYWRkciwgcHRlKTtcbitcbitcdHJldHVybiBwZm5fbW9kaWZ5X2FsbG93ZWQocHRlX3BmbihlbnRyeSksXG4gXHRcdFx0XHQgICoocGdwcm90X3QgKikod2Fsay1cdTAwM2Vwcml2YXRlKSkgP1xuIFx0XHQwIDogLUVBQ0NFUztcbiB9XG4rI2Vsc2VcbisjZGVmaW5lIHByb3Rfbm9uZV9odWdldGxiX2VudHJ5XHROVUxMXG4rI2VuZGlmXG4gXG4gc3RhdGljIGludCBwcm90X25vbmVfdGVzdCh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgbmV4dCxcbiBcdFx0XHQgIHN0cnVjdCBtbV93YWxrICp3YWxrKVxuZGlmZiAtLWdpdCBhL21tL3BhZ2Vfdm1hX21hcHBlZC5jIGIvbW0vcGFnZV92bWFfbWFwcGVkLmNcbmluZGV4IDJjY2JhYmZiMmNjMTdhLi4xOGUxZDM0MWY0NjNjOSAxMDA2NDRcbi0tLSBhL21tL3BhZ2Vfdm1hX21hcHBlZC5jXG4rKysgYi9tbS9wYWdlX3ZtYV9tYXBwZWQuY1xuQEAgLTEwNyw3ICsxMDcsMTMgQEAgc3RhdGljIGJvb2wgbWFwX3B0ZShzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcsIHBtZF90ICpwbWR2YWxwLFxuIHN0YXRpYyBib29sIGNoZWNrX3B0ZShzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcsIHVuc2lnbmVkIGxvbmcgcHRlX25yKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgcGZuO1xuLVx0cHRlX3QgcHRlbnQgPSBwdGVwX2dldChwdm13LVx1MDAzZXB0ZSk7XG4rXHRwdGVfdCBwdGVudDtcbitcbitcdGlmIChpc192bV9odWdldGxiX3BhZ2UocHZtdy1cdTAwM2V2bWEpKVxuK1x0XHRwdGVudCA9IGh1Z2VfcHRlcF9nZXQocHZtdy1cdTAwM2V2bWEtXHUwMDNldm1fbW0sIHB2bXctXHUwMDNlYWRkcmVzcyxcbitcdFx0XHRcdCAgICAgIHB2bXctXHUwMDNlcHRlKTtcbitcdGVsc2VcbitcdFx0cHRlbnQgPSBwdGVwX2dldChwdm13LVx1MDAzZXB0ZSk7XG4gXG4gXHRpZiAocHZtdy1cdTAwM2VmbGFncyBcdTAwMjYgUFZNV19NSUdSQVRJT04pIHtcbiBcdFx0Y29uc3Qgc29mdGxlYWZfdCBlbnRyeSA9IHNvZnRsZWFmX2Zyb21fcHRlKHB0ZW50KTtcbmRpZmYgLS1naXQgYS9tbS9ybWFwLmMgYi9tbS9ybWFwLmNcbmluZGV4IDFjNzdkNWRjMDZlOWZhLi5hYmMzYTQ0YmFhYTNkZiAxMDA2NDRcbi0tLSBhL21tL3JtYXAuY1xuKysrIGIvbW0vcm1hcC5jXG5AQCAtMjA5NSwxMSArMjA5NSwxNiBAQCBzdGF0aWMgYm9vbCB0cnlfdG9fdW5tYXBfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuIFx0XHQvKiBVbmV4cGVjdGVkIFBNRC1tYXBwZWQgVEhQPyAqL1xuIFx0XHRWTV9CVUdfT05fRk9MSU8oIXB2bXcucHRlLCBmb2xpbyk7XG4gXG4tXHRcdC8qXG4tXHRcdCAqIEhhbmRsZSBQRk4gc3dhcCBQVEVzLCBzdWNoIGFzIGRldmljZS1leGNsdXNpdmUgb25lcywgdGhhdFxuLVx0XHQgKiBhY3R1YWxseSBtYXAgcGFnZXMuXG4tXHRcdCAqL1xuLVx0XHRwdGV2YWwgPSBwdGVwX2dldChwdm13LnB0ZSk7XG4rXHRcdGFkZHJlc3MgPSBwdm13LmFkZHJlc3M7XG4rXHRcdGlmIChmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pKSB7XG4rXHRcdFx0cHRldmFsID0gaHVnZV9wdGVwX2dldChtbSwgYWRkcmVzcywgcHZtdy5wdGUpO1xuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdC8qXG4rXHRcdFx0ICogSGFuZGxlIFBGTiBzd2FwIFBURXMsIHN1Y2ggYXMgZGV2aWNlLWV4Y2x1c2l2ZSBvbmVzLFxuK1x0XHRcdCAqIHRoYXQgYWN0dWFsbHkgbWFwIHBhZ2VzLlxuK1x0XHRcdCAqL1xuK1x0XHRcdHB0ZXZhbCA9IHB0ZXBfZ2V0KHB2bXcucHRlKTtcbitcdFx0fVxuIFx0XHRpZiAobGlrZWx5KHB0ZV9wcmVzZW50KHB0ZXZhbCkpKSB7XG4gXHRcdFx0cGZuID0gcHRlX3BmbihwdGV2YWwpO1xuIFx0XHR9IGVsc2Uge1xuQEAgLTIxMTAsNyArMjExNSw2IEBAIHN0YXRpYyBib29sIHRyeV90b191bm1hcF9vbmUoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4gXHRcdH1cbiBcbiBcdFx0c3VicGFnZSA9IGZvbGlvX3BhZ2UoZm9saW8sIHBmbiAtIGZvbGlvX3Bmbihmb2xpbykpO1xuLVx0XHRhZGRyZXNzID0gcHZtdy5hZGRyZXNzO1xuIFx0XHRhbm9uX2V4Y2x1c2l2ZSA9IGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgXHUwMDI2XHUwMDI2XG4gXHRcdFx0XHQgUGFnZUFub25FeGNsdXNpdmUoc3VicGFnZSk7XG4gXG5AQCAtMjUwMSwxMSArMjUwNSwxNiBAQCBzdGF0aWMgYm9vbCB0cnlfdG9fbWlncmF0ZV9vbmUoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4gXHRcdC8qIFVuZXhwZWN0ZWQgUE1ELW1hcHBlZCBUSFA/ICovXG4gXHRcdFZNX0JVR19PTl9GT0xJTyghcHZtdy5wdGUsIGZvbGlvKTtcbiBcbi1cdFx0Lypcbi1cdFx0ICogSGFuZGxlIFBGTiBzd2FwIFBURXMsIHN1Y2ggYXMgZGV2aWNlLWV4Y2x1c2l2ZSBvbmVzLCB0aGF0XG4tXHRcdCAqIGFjdHVhbGx5IG1hcCBwYWdlcy5cbi1cdFx0ICovXG4tXHRcdHB0ZXZhbCA9IHB0ZXBfZ2V0KHB2bXcucHRlKTtcbitcdFx0YWRkcmVzcyA9IHB2bXcuYWRkcmVzcztcbitcdFx0aWYgKGZvbGlvX3Rlc3RfaHVnZXRsYihmb2xpbykpIHtcbitcdFx0XHRwdGV2YWwgPSBodWdlX3B0ZXBfZ2V0KG1tLCBhZGRyZXNzLCBwdm13LnB0ZSk7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0LypcbitcdFx0XHQgKiBIYW5kbGUgUEZOIHN3YXAgUFRFcywgc3VjaCBhcyBkZXZpY2UtZXhjbHVzaXZlIG9uZXMsXG4rXHRcdFx0ICogdGhhdCBhY3R1YWxseSBtYXAgcGFnZXMuXG4rXHRcdFx0ICovXG4rXHRcdFx0cHRldmFsID0gcHRlcF9nZXQocHZtdy5wdGUpO1xuK1x0XHR9XG4gXHRcdGlmIChsaWtlbHkocHRlX3ByZXNlbnQocHRldmFsKSkpIHtcbiBcdFx0XHRwZm4gPSBwdGVfcGZuKHB0ZXZhbCk7XG4gXHRcdH0gZWxzZSB7XG5AQCAtMjUxNiw3ICsyNTI1LDYgQEAgc3RhdGljIGJvb2wgdHJ5X3RvX21pZ3JhdGVfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuIFx0XHR9XG4gXG4gXHRcdHN1YnBhZ2UgPSBmb2xpb19wYWdlKGZvbGlvLCBwZm4gLSBmb2xpb19wZm4oZm9saW8pKTtcbi1cdFx0YWRkcmVzcyA9IHB2bXcuYWRkcmVzcztcbiBcdFx0YW5vbl9leGNsdXNpdmUgPSBmb2xpb190ZXN0X2Fub24oZm9saW8pIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0IFBhZ2VBbm9uRXhjbHVzaXZlKHN1YnBhZ2UpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTY6MzM6NDcuNDU2MDIyNDhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTIwMTM1NTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEh1Z2V0bGIgUFRFIFJlYWQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBpdCdzIGEgcHJldHR5IHRhcmdldGVkIGJ1dCBwb3RlbnRpYWxseSBpbXBhY3RmdWwgY2hhbmdlIHdpdGhpbiB0aGUgTU0gY29yZS4gVGhleSdyZSBzd2FwcGluZyBvdXQgdGhlIHN0YW5kYXJkIGBwdGVwX2dldCgpYCBmb3IgYGh1Z2VfcHRlcF9nZXQoKWAgd2hlbiBkZWFsaW5nIHdpdGggSHVnZVRMQiBwYWdlcy4gVGhlIGxvY2F0aW9ucyB0aGV5J3ZlIHRvdWNoZWQg4oCTIGBtbS9taWdyYXRlLmNgLCBgbW0vbXByb3RlY3QuY2AsIGBtbS9wYWdlX3ZtYV9tYXBwZWQuY2AsIGFuZCBgbW0vcm1hcC5jYCDigJMgYXJlIGFsbCBrZXkgYXJlYXMgaW4gbWVtb3J5IG1hbmFnZW1lbnQsIGVzcGVjaWFsbHkgY29uY2VybmluZyBQVEUgaGFuZGxpbmcgYW5kIHBhZ2UgbWlncmF0aW9uLCBwcm90ZWN0aW9uLCBhbmQgcmV2ZXJzZSBtYXBwaW5ncy4gUmVwbGFjaW5nIHRoZSBvcmlnaW5hbCBgcHRlcF9nZXRgIGZ1bmN0aW9uIHdpdGggYGh1Z2VfcHRlcF9nZXRgIGlzIGEgcHJldHR5IGNsZWFyIGluZGljYXRpb24gdGhhdCBpdCdzIGdvaW5nIHRvIGFmZmVjdCBob3cgdGhlc2UgcGFydGljdWxhciBtZW1vcnkgcGFnZXMgYXJlIHByb2Nlc3NlZC5cblxuVGhpcyBpcyBjb3JlIE1NIGNvZGUsIGFuZCBkaXJlY3RseSByZWxhdGVkIHRvIEh1Z2VUTEIgcGFnZXMsIHNvIHRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBhIGZ1enppbmcgY2FtcGFpZ24gdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBzdWJ0bGUgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvcnMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByaWdodCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gZW5hYmxlIHRoaXMgY29kZSBwYXRoLlxuXG5SaWdodCBvZmYgdGhlIGJhdCwgdGhlIGAjaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRWAgZ3VhcmQgaW4gYG1tL21wcm90ZWN0LmNgIHNjcmVhbXMgdGhhdCBgSFVHRVRMQl9QQUdFYCBpcyB0aGUgZXNzZW50aWFsIGNvbmZpZy4gSSdtIGFsc28gc2VlaW5nIHJlZmVyZW5jZXMgdG8gYGZvbGlvX3Rlc3RfaHVnZXRsYmAgYW5kIGBpc192bV9odWdldGxiX3BhZ2VgLCB3aGljaCBmdXJ0aGVyIHJlaW5mb3JjZXMgdGhhdCBgSFVHRVRMQl9QQUdFYCBpcyBub24tbmVnb3RpYWJsZS5cblxuTm93LCBsZXQncyBzZWUgd2hhdCBlbHNlIG1pZ2h0IGJlIG5lY2Vzc2FyeS4gYG1tL21pZ3JhdGUuY2AgZGVwZW5kcyBvbiBgQ09ORklHX01JR1JBVElPTmAsIHdoaWNoIG1lYW5zIGlmIHRoZSBtaWdyYXRpb24gY29tcG9uZW50IGlzIGVuYWJsZWQsIGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byB0cmlnZ2VyIHRoZSBwYXRoLiBUaGUgb3RoZXIgZmlsZXMgc2VlbSB0byBiZSBjb21waWxlZCByZWdhcmRsZXNzIG9mIG90aGVyIG9wdGlvbnMuIEkgbmVlZCB0byB2ZXJpZnkgYENPTkZJR19NSUdSQVRJT05gIGFuZCwgb2YgY291cnNlLCBjb25maXJtIHRoYXQgYEhVR0VUTEJfUEFHRWAgaXMgYWN0aXZlLiBJIHdpbGwgY2hlY2sgYG1tL01ha2VmaWxlYCB1c2luZyBgZ3JlcHBlcmAgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgdGhlc2UgYXJlIHRoZSBvbmx5IHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjA2LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzY0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTY6MzM6NTMuOTc2MTYwNzg3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4NzIwMDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1pZ3JhdGUub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9NYWtlZmlsZT05Nz1vYmotJChDT05GSUdfTUVNVEVTVClcXHRcXHQrPSBtZW10ZXN0Lm9cXG5tbS9NYWtlZmlsZTo5ODpvYmotJChDT05GSUdfTUlHUkFUSU9OKSArPSBtaWdyYXRlLm9cXG5tbS9NYWtlZmlsZS05OS1vYmotJChDT05GSUdfTlVNQSkgKz0gbWVtb3J5LXRpZXJzLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTY6MzM6NTQuMDc0ODg3OTM1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY2OTE2NDYzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBzdW1tYXJ5OlxuXG4qKktlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyAtIE1pZ3JhdGUgYW5kIEh1Z2VUTEIgUGFnZXMqKlxuXG5SaWdodCwgc28gSSdtIGZvY3VzaW5nIG9uIGBtbS9taWdyYXRlLmNgIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBUaGUgY3J1Y2lhbCBwb2ludCBoZXJlIGlzIHRoYXQgYENPTkZJR19NSUdSQVRJT05gIGlzIGRlZmluaXRlbHkgcmVxdWlyZWQgZm9yIHRoZSBtaWdyYXRpb24gZnVuY3Rpb25hbGl0eSBpbiB0aGF0IGZpbGUuIFRoYXQncyBhIGdpdmVuLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBpbmZsdWVuY2UgdGhpcyBtb2R1bGUuIExldCdzIHNlZSB3aGF0J3MgcmVsYXRlZCB0byB0aGUgYEhVR0VUTEJfUEFHRWAgY29uZmlndXJhdGlvbiBvcHRpb24gYW5kIGhvdyB0aGF0IGVmZmVjdHMgdGhpcyBhc3BlY3QuIEkgd2lsbCBzdGFydCBieSBsb29raW5nIGludG8gdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ5OCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE2OjMzOjU4Ljc0NDA2Mjg1OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDcwMzM0MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaHVnZXRsYi5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL01ha2VmaWxlPTgwPW9iai0kKENPTkZJR19IQVNfRE1BKVxcdCs9IGRtYXBvb2wub1xcbm1tL01ha2VmaWxlOjgxOm9iai0kKENPTkZJR19IVUdFVExCRlMpXFx0Kz0gaHVnZXRsYi5vIGh1Z2V0bGJfc3lzZnMubyBodWdldGxiX3N5c2N0bC5vXFxubW0vTWFrZWZpbGUtODItaWZkZWYgQ09ORklHX0NNQVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNjozMzo1OC44NTExMjQzMTVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQ1NzEzNTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi4gSSdtIGxvb2tpbmcgYXQgdGhpcyBhbmQgdGhpbmtpbmcsIFwiQWhhISBgQ09ORklHX0hVR0VUTEJGU2AuLi4gdGhhdCdzIGRlZmluaXRlbHkgcG9pbnRpbmcgdG93YXJkcyB0aGUgYGh1Z2V0bGIub2Agb2JqZWN0LlwiIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCwgc28gSSBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuIE15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRlbHZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSBzaG91bGQgbG9vayBhdCBgQ09ORklHX0hVR0VUTEJfUEFHRWAgd2l0aGluIGVpdGhlciBgbW0vS2NvbmZpZ2Agb3IgYGZzL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgSSdsbCBmaW5kIHRoZSBmaW5lciBkZXRhaWxzIGFuZCB0aGUgY29ubmVjdGlvbiB0byB0aGUgbGFyZ2VyIG1lbW9yeSBtYW5hZ2VtZW50IG9yIGZpbGVzeXN0ZW0gY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3ODEsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNjozNDowMS43OTY4NDA4OTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUwMDExOTQ0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSFVHRVRMQl9QQUdFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvc2gvbW0vS2NvbmZpZz0xNTg9Y2hvaWNlXFxuLS1cXG5hcmNoL3NoL21tL0tjb25maWctMTYzLVxcbmFyY2gvc2gvbW0vS2NvbmZpZzoxNjQ6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzY0S1xcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNjUtXFx0Ym9vbCBcXFwiNjRrQlxcXCJcXG4tLVxcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNjctXFxuYXJjaC9zaC9tbS9LY29uZmlnOjE2ODpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfMjU2S1xcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNjktXFx0Ym9vbCBcXFwiMjU2a0JcXFwiXFxuLS1cXG5hcmNoL3NoL21tL0tjb25maWctMTcxLVxcbmFyY2gvc2gvbW0vS2NvbmZpZzoxNzI6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzFNQlxcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzMtXFx0Ym9vbCBcXFwiMU1CXFxcIlxcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzQtXFxuYXJjaC9zaC9tbS9LY29uZmlnOjE3NTpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfNE1CXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE3Ni1cXHRib29sIFxcXCI0TUJcXFwiXFxuLS1cXG5hcmNoL3NoL21tL0tjb25maWctMTc4LVxcbmFyY2gvc2gvbW0vS2NvbmZpZzoxNzk6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzY0TUJcXG5hcmNoL3NoL21tL0tjb25maWctMTgwLVxcdGJvb2wgXFxcIjY0TUJcXFwiXFxuLS1cXG5mcy9LY29uZmlnPTI2Mj1pZiBIVUdFVExCRlNcXG5mcy9LY29uZmlnOjI2Mzpjb25maWcgSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBfREVGQVVMVF9PTlxcbmZzL0tjb25maWctMjY0LVxcdGJvb2wgXFxcIkh1Z2VUTEIgVm1lbW1hcCBPcHRpbWl6YXRpb24gKEhWTykgZGVmYXVsdHMgdG8gb25cXFwiXFxuLS1cXG5mcy9LY29uZmlnPTI3MT1lbmRpZiAjIEhVR0VUTEJGU1xcbmZzL0tjb25maWctMjcyLVxcbmZzL0tjb25maWc6MjczOmNvbmZpZyBIVUdFVExCX1BBR0VcXG5mcy9LY29uZmlnLTI3NC1cXHRkZWZfYm9vbCBIVUdFVExCRlNcXG4tLVxcbmZzL0tjb25maWctMjc2LVxcbmZzL0tjb25maWc6Mjc3OmNvbmZpZyBIVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUFxcbmZzL0tjb25maWctMjc4LVxcdGRlZl9ib29sIEhVR0VUTEJfUEFHRVxcbi0tXFxubW0vS2NvbmZpZz02NTM9Y29uZmlnIEFSQ0hfRU5BQkxFX1RIUF9NSUdSQVRJT05cXG4tLVxcbm1tL0tjb25maWctNjU1LVxcbm1tL0tjb25maWc6NjU2OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV9WQVJJQUJMRVxcbm1tL0tjb25maWctNjU3LVxcdGRlZl9ib29sIG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTY6MzQ6MDQuMjk2OTcxNTA4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA3NDkwNDk4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogSHVnZVRMQiBhbmQgTWlncmF0aW9uIENvZGUqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGBIVUdFVExCX1BBR0VgIGlzIGxpbmtlZCB0byBgZGVmX2Jvb2wgSFVHRVRMQkZTYC4gVGhhdCdzIHRoZSBjb25maWcgSSBuZWVkIHRvIGVuYWJsZSBmb3IgdGhpcyBmdXp6aW5nIHRhcmdldCAtIGBIVUdFVExCRlNgLlxuXG5Ob3csIGxldCdzIHBpbnBvaW50IHRoZSByZWxldmFudCBmdW5jdGlvbnMuIEJhc2VkIG9uIHRoZSBtb2RpZmljYXRpb25zLCB0aGUga2V5IGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBhcmU6IGByZW1vdmVfbWlncmF0aW9uX3B0ZWAsIGBwcm90X25vbmVfaHVnZXRsYl9lbnRyeWAsIGBjaGVja19wdGVgLCBgdHJ5X3RvX3VubWFwX29uZWAsIGFuZCBgdHJ5X3RvX21pZ3JhdGVfb25lYC5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB3aGVyZSB0aGVzZSByZXNpZGUuIExvb2tzIGxpa2UgYHByb3Rfbm9uZV9odWdldGxiX2VudHJ5YCBpcyBzdGF0aWMgd2l0aGluIGBtbS9tcHJvdGVjdC5jYC4gYHJlbW92ZV9taWdyYXRpb25fcHRlYCBpcyBzdGF0aWMgaW4gYG1tL21pZ3JhdGUuY2AuIFRoZW4sIGBjaGVja19wdGVgIGxpdmVzIGluIGBtbS9wYWdlX3ZtYV9tYXBwZWQuY2AsIGFuZCBmaW5hbGx5LCBib3RoIGB0cnlfdG9fdW5tYXBfb25lYCBhbmQgYHRyeV90b19taWdyYXRlX29uZWAgYXJlIHN0YXRpYyBpbiBgbW0vcm1hcC5jYC5cblxuT2theSwgbm93IGZvciByZWFjaGFiaWxpdHkuIGByZW1vdmVfbWlncmF0aW9uX3B0ZWAgaXMgaW52b2tlZCBieSBgcmVtb3ZlX21pZ3JhdGlvbl9wdGVzYC4gYHByb3Rfbm9uZV9odWdldGxiX2VudHJ5YCBpcyB1c2VkIGFzIGEgY2FsbGJhY2sgZm9yIGBtbV93YWxrYCwgd2hpY2ggaXMgdXNlZCBpbiBgbW0vbXByb3RlY3QuY2AuIGBjaGVja19wdGVgIGlzIHJlYWNoZWQgdGhyb3VnaCBgcGFnZV92bWFfbWFwcGVkX3dhbGtgLiBgdHJ5X3RvX3VubWFwX29uZWAgaXMgY2FsbGVkIGZyb20gYHRyeV90b191bm1hcGAsIGFuZCBgdHJ5X3RvX21pZ3JhdGVfb25lYCBpcyBjYWxsZWQgZnJvbSBgdHJ5X3RvX21pZ3JhdGVgLlxuXG5QZXJmZWN0LiBUaGVzZSBhcmUgYWxsIGNvcmUgTU0gZnVuY3Rpb25zIHJlbGF0ZWQgdG8gcGFnZSBtaWdyYXRpb24sIHVubWFwcGluZywgYW5kIG1lbW9yeSBwcm90ZWN0aW9uIGZvciBOVU1BIGJhbGFuY2luZy4gVGhleSdyZSBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgcmVwcmVzZW50IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuXG5cbkxldCdzIHN1bW1hcml6ZSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGFuZCBzeW1ib2xzIGZvciBlYXN5IHJlZmVyZW5jZTpcblxuKiAgIENvbmZpZ3M6IGBIVUdFVExCRlNgIGFuZCBgTUlHUkFUSU9OYC5cbiogICBGb2N1cyBTeW1ib2xzOiBgcmVtb3ZlX21pZ3JhdGlvbl9wdGVgLCBgcHJvdF9ub25lX2h1Z2V0bGJfZW50cnlgLCBgY2hlY2tfcHRlYCwgYHRyeV90b191bm1hcF9vbmVgLCBhbmQgYHRyeV90b19taWdyYXRlX29uZWAuXG5cbkZpbmFsbHksIHRvIGJlIHRob3JvdWdoOiBgcHJvdF9ub25lX2h1Z2V0bGJfZW50cnlgIGlzIGluIGBtbS9tcHJvdGVjdC5jYCwgbGV0IG1lIG1ha2UgYSBub3RlIHRvIGNoZWNrIGlmIGl0IGhhcyBhIGRlcGVuZGVuY3kgb24gYE5VTUFfQkFMQU5DSU5HYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU3MywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNjozNDoxMS4zNzE4ODQwNDFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyMzc1MjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInByb3Rfbm9uZV9odWdldGxiX2VudHJ5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL21wcm90ZWN0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbXByb3RlY3QuYz02OTQ9c3RhdGljIGludCBwcm90X25vbmVfcHRlX2VudHJ5KHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbm1tL21wcm90ZWN0LmMtNzAyLSNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxubW0vbXByb3RlY3QuYzo3MDM6c3RhdGljIGludCBwcm90X25vbmVfaHVnZXRsYl9lbnRyeShwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGhtYXNrLFxcbm1tL21wcm90ZWN0LmMtNzA0LVxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBuZXh0LFxcbi0tXFxubW0vbXByb3RlY3QuYy03MTMtI2Vsc2VcXG5tbS9tcHJvdGVjdC5jOjcxNDojZGVmaW5lIHByb3Rfbm9uZV9odWdldGxiX2VudHJ5XFx0TlVMTFxcbm1tL21wcm90ZWN0LmMtNzE1LSNlbmRpZlxcbi0tXFxubW0vbXByb3RlY3QuYz03MjM9c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBwcm90X25vbmVfd2Fsa19vcHMgPSB7XFxubW0vbXByb3RlY3QuYy03MjQtXFx0LnB0ZV9lbnRyeVxcdFxcdD0gcHJvdF9ub25lX3B0ZV9lbnRyeSxcXG5tbS9tcHJvdGVjdC5jOjcyNTpcXHQuaHVnZXRsYl9lbnRyeVxcdFxcdD0gcHJvdF9ub25lX2h1Z2V0bGJfZW50cnksXFxubW0vbXByb3RlY3QuYy03MjYtXFx0LnRlc3Rfd2Fsa1xcdFxcdD0gcHJvdF9ub25lX3Rlc3QsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE2OjM0OjExLjQ2NDI2OTM3OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDgxMjkzODUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgSSdtIHRoaW5raW5nIHRoZXNlIHRoaW5ncyBteXNlbGY6XG5cbioqVHJhY2luZyB0aGUgVXNhZ2Ugb2YgYHByb3Rfbm9uZV93YWxrX29wc2AqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBgcHJvdF9ub25lX3dhbGtfb3BzYCBjb25zdHJ1Y3QuIEZpcnN0IHRoaW5ncyBmaXJzdDogSSdtIGdvaW5nIHRvIHN0YXJ0IHdpdGggdGhlIG9idmlvdXMgYW5kIGh1bnQgZG93biBhbGwgdGhlIHBsYWNlcyB3aGVyZSB0aGlzIGlzIGFjdHVhbGx5ICp1c2VkKi4gSSdsbCBuZWVkIHRvIGtub3cgdGhlIGNhbGwgc2l0ZXMgdG8gcGllY2UgdG9nZXRoZXIgdGhlIGNvbnRyb2wgZmxvdyBhbmQgZGF0YSBkZXBlbmRlbmNpZXMuIEEgc2ltcGxlIGdyZXAgc2hvdWxkIGdldCBtZSB0aGUgaW1tZWRpYXRlIHJlZmVyZW5jZXMuIFRoZW4sIEkgY2FuIHN0YXJ0IGFuYWx5emluZyBob3cgaXQgaXMgdXNlZCB0aGVyZSBpbiBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTE3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTY6MzQ6MTQuOTQ1NTY2MjExWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTkzMDY2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcm90X25vbmVfd2Fsa19vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vbXByb3RlY3QuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9tcHJvdGVjdC5jPTcxNz1zdGF0aWMgaW50IHByb3Rfbm9uZV90ZXN0KHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBuZXh0LFxcbi0tXFxubW0vbXByb3RlY3QuYy03MjItXFxubW0vbXByb3RlY3QuYzo3MjM6c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBwcm90X25vbmVfd2Fsa19vcHMgPSB7XFxubW0vbXByb3RlY3QuYy03MjQtXFx0LnB0ZV9lbnRyeVxcdFxcdD0gcHJvdF9ub25lX3B0ZV9lbnRyeSxcXG4tLVxcbm1tL21wcm90ZWN0LmM9NzMxPW1wcm90ZWN0X2ZpeHVwKHN0cnVjdCB2bWFfaXRlcmF0b3IgKnZtaSwgc3RydWN0IG1tdV9nYXRoZXIgKnRsYixcXG4tLVxcbm1tL21wcm90ZWN0LmMtNzYyLVxcdFxcdGVycm9yID0gd2Fsa19wYWdlX3JhbmdlKGN1cnJlbnQtXFx1MDAzZW1tLCBzdGFydCwgZW5kLFxcbm1tL21wcm90ZWN0LmM6NzYzOlxcdFxcdFxcdFxcdFxcdTAwMjZwcm90X25vbmVfd2Fsa19vcHMsIFxcdTAwMjZuZXdfcGdwcm90KTtcXG5tbS9tcHJvdGVjdC5jLTc2NC1cXHRcXHRpZiAoZXJyb3IpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE2OjM0OjE1LjA0NTUwMjI2OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTA3Njg2NzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHRyYWNlZCB0aGUgY29kZSBwYXRoIGFuZCBoZXJlJ3Mgd2hhdCBJJ3ZlIGZvdW5kLiBgcHJvdF9ub25lX3dhbGtfb3BzYCBpcyB1c2VkIGluIGBtcHJvdGVjdF9maXh1cGAgd2hlbiB3ZSdyZSBtb2RpZnlpbmcgbWVtb3J5IHByb3RlY3Rpb25zLiBBaCwgYW5kIGBtcHJvdGVjdF9maXh1cGAgaXRzZWxmIGlzIGNhbGxlZCBmcm9tIGBkb19tcHJvdGVjdF9wa2V5YC4gVGhhdCBtZWFucyBgcHJvdF9ub25lX2h1Z2V0bGJfZW50cnlgIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHRocm91Z2ggYSBzaW1wbGUgYG1wcm90ZWN0YCBjYWxsIG9uIGEgSHVnZVRMQiBtYXBwaW5nIC0gdGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuTm93LCB3aGF0IGFib3V0IHRoZSBvdGhlciBmdW5jdGlvbnMgdGhhdCBtaWdodCBiZSBpbnZvbHZlZCBoZXJlPyBgdHJ5X3RvX3VubWFwX29uZWAgYW5kIGB0cnlfdG9fbWlncmF0ZV9vbmVgIOKAkyB0aGV5J3JlIGFsd2F5cyBjb21waWxlZCwgc28gd2Ugc2hvdWxkIGNvbnNpZGVyIHRob3NlIHRvby4gQW5kLCBvZiBjb3Vyc2UsIGBjaGVja19wdGVgIGlzIGFsd2F5cyB0aGVyZSB0b28uIGByZW1vdmVfbWlncmF0aW9uX3B0ZWAgaXMgb25seSB0aGVyZSBpZiBgQ09ORklHX01JR1JBVElPTmAgaXMgZW5hYmxlZCwgc28gdGhhdCdzIGNvbmRpdGlvbmFsLlxuXG5TbywgdGhlIGtleSBjb25maWd1cmF0aW9ucyBoZXJlIHNlZW0gdG8gYmUgYEhVR0VUTEJGU2AgYW5kIGBNSUdSQVRJT05gLiBMZXQncyBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGBIVUdFVExCRlNgIGRvZXNuJ3QgZGVwZW5kIG9uIGFueXRoaW5nIGVsc2UgdGhhdCdzIHVudXN1YWwuIE5vcGUsIGl0J3MgcHJldHR5IHN0YW5kYXJkLiBHb29kLlxuXG5BbHJpZ2h0LCBsZXQncyBsb29rIGF0IGBDT05GSUdfTUlHUkFUSU9OYC4gUmlnaHQsIGl0J3Mgc2VsZWN0ZWQgYnkgYE5VTUFfQkFMQU5DSU5HYCwgYE1FTU9SWV9IT1RSRU1PVkVgLCBgQ01BYCwgYW5kIGBDT01QQUNUSU9OYC4gQWxzbyBzdGFuZGFyZC5cblxuT2theSwgbGV0J3Mgc3VtbWFyaXplIGFuZCBmb3JtYWxpemUgdGhpczpcblxuSXQgbG9va3MgbGlrZSB0aGlzIHBhdGNoIGludHJvZHVjZXMgY2hhbmdlcyByZWxhdGVkIHRvIFBURSByZWFkaW5nIGZvciBIdWdlVExCIHBhZ2VzIGR1cmluZyB0aGluZ3MgbGlrZSBwYWdlIG1pZ3JhdGlvbiwgdW5tYXBwaW5nLCBhbmQgbWVtb3J5IHByb3RlY3Rpb24gbW9kaWZpY2F0aW9ucy4gVGhlc2UgYXJlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25zIGFuZCBjYW4gYmUgcmVhY2hlZCB0aHJvdWdoIHByZXR0eSBzdGFuZGFyZCBzeXNjYWxscyBsaWtlIGBtcHJvdGVjdGAsIGBtYWR2aXNlYCwgYW5kIGBtYmluZGAsIGVzcGVjaWFsbHkgb24gSHVnZVRMQiBtYXBwaW5ncy4gU28gdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuXG5cbk15IGxpc3Qgb2YgdGFyZ2V0IHN5bWJvbHM6XG5cbiogICBgcmVtb3ZlX21pZ3JhdGlvbl9wdGVgXG4qICAgYHByb3Rfbm9uZV9odWdldGxiX2VudHJ5YFxuKiAgIGBjaGVja19wdGVgXG4qICAgYHRyeV90b191bm1hcF9vbmVgXG4qICAgYHRyeV90b19taWdyYXRlX29uZWBcblxuQW5kIHRoZSByZXF1aXJlZCBlbmFibGVkIGNvbmZpZ3M6XG5cbiogICBgSFVHRVRMQkZTYFxuKiAgIGBNSUdSQVRJT05gXG5cblRpbWUgdG8gc2V0IHRoZXNlIHJlc3VsdHMgYW5kIG1vdmUgb24gdG8gdGhlIG5leHQgb25lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzMyLCJPdXRwdXRUb2tlbnMiOjE1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNjozNDoyMi45NTMxOTIwMloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NTEyMzEyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSFVHRVRMQkZTXCIsXG4gICAgXCJNSUdSQVRJT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyZW1vdmVfbWlncmF0aW9uX3B0ZVwiLFxuICAgIFwicHJvdF9ub25lX2h1Z2V0bGJfZW50cnlcIixcbiAgICBcImNoZWNrX3B0ZVwiLFxuICAgIFwidHJ5X3RvX3VubWFwX29uZVwiLFxuICAgIFwidHJ5X3RvX21pZ3JhdGVfb25lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgaG93IFBURXMgYXJlIHJlYWQgZm9yIEh1Z2VUTEIgcGFnZXMgZHVyaW5nIHBhZ2UgbWlncmF0aW9uLCB1bm1hcHBpbmcsIGFuZCBtZW1vcnkgcHJvdGVjdGlvbiBjaGFuZ2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBzdGFuZGFyZCBzeXNjYWxscyAoZS5nLiwgbXByb3RlY3QsIG1hZHZpc2UsIG1iaW5kKSBvbiBIdWdlVExCIG1hcHBpbmdzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhVR0VUTEJGU1wiLFxuICAgIFwiTUlHUkFUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmVtb3ZlX21pZ3JhdGlvbl9wdGVcIixcbiAgICBcInByb3Rfbm9uZV9odWdldGxiX2VudHJ5XCIsXG4gICAgXCJjaGVja19wdGVcIixcbiAgICBcInRyeV90b191bm1hcF9vbmVcIixcbiAgICBcInRyeV90b19taWdyYXRlX29uZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGhvdyBQVEVzIGFyZSByZWFkIGZvciBIdWdlVExCIHBhZ2VzIGR1cmluZyBwYWdlIG1pZ3JhdGlvbiwgdW5tYXBwaW5nLCBhbmQgbWVtb3J5IHByb3RlY3Rpb24gY2hhbmdlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgc3RhbmRhcmQgc3lzY2FsbHMgKGUuZy4sIG1wcm90ZWN0LCBtYWR2aXNlLCBtYmluZCkgb24gSHVnZVRMQiBtYXBwaW5ncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhdl8s[1] Phase: Succeeded StartedAt: 2026-06-26 16:34:34 +0000 UTC FinishedAt: 2026-06-26 16:34:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdl8s[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-26 16:34:34 +0000 UTC FinishedAt: 2026-06-26 16:34:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdl8s[2] Phase: Succeeded StartedAt: 2026-06-26 16:34:34 +0000 UTC FinishedAt: 2026-06-26 20:49:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-26 16:34:34 +0000 UTC FinishedAt: 2026-06-26 20:49:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-26 16:34:34 +0000 UTC FinishedAt: 2026-06-26 16:34:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-26 16:34:34 +0000 UTC FinishedAt: 2026-06-26 16:34:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowhdl8s/series-workflowhdl8s-convert-artifact-4004864266/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-26 16:34:56 +0000 UTC FinishedAt: 2026-06-26 17:06:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-26 16:34:56 +0000 UTC FinishedAt: 2026-06-26 17:06:16 +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:*208aa310-42c0-4974-a518-acaa64ff36c1,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-workflowhdl8s/series-workflowhdl8s-convert-artifact-4004864266/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": "a2179f19-f63e-44b0-935d-44174fbf56a7", "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-workflowhdl8s/series-workflowhdl8s-build-action-411438072/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-26 16:34:56 +0000 UTC FinishedAt: 2026-06-26 17:05:56 +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:*208aa310-42c0-4974-a518-acaa64ff36c1,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-workflowhdl8s/series-workflowhdl8s-convert-artifact-4004864266/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": "a2179f19-f63e-44b0-935d-44174fbf56a7", "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-workflowhdl8s/series-workflowhdl8s-build-action-411438072/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-26 17:06:16 +0000 UTC FinishedAt: 2026-06-26 17:06:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-26 17:06:16 +0000 UTC FinishedAt: 2026-06-26 17:06:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-26 17:06:16 +0000 UTC FinishedAt: 2026-06-26 17:07:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-26 17:06:16 +0000 UTC FinishedAt: 2026-06-26 17:06:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowhdl8s/series-workflowhdl8s-convert-artifact-1045021093/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-26 17:07:21 +0000 UTC FinishedAt: 2026-06-26 17:09:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-26 17:07:21 +0000 UTC FinishedAt: 2026-06-26 17:09:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a2179f19-f63e-44b0-935d-44174fbf56a7,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-workflowhdl8s/series-workflowhdl8s-build-action-411438072/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-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-26 17:09:19 +0000 UTC FinishedAt: 2026-06-26 17:09:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-26 17:09:19 +0000 UTC FinishedAt: 2026-06-26 17:09:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-26 17:09:19 +0000 UTC FinishedAt: 2026-06-26 17:42:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-26 17:09:19 +0000 UTC FinishedAt: 2026-06-26 17:42:01 +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:*208aa310-42c0-4974-a518-acaa64ff36c1,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-workflowhdl8s/series-workflowhdl8s-convert-artifact-1045021093/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": "ff794796-6881-4fd7-9a5d-c5630e40dfa1", "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-workflowhdl8s/series-workflowhdl8s-build-action-3582130673/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-26 17:09:19 +0000 UTC FinishedAt: 2026-06-26 17:40:56 +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:*208aa310-42c0-4974-a518-acaa64ff36c1,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-workflowhdl8s/series-workflowhdl8s-convert-artifact-1045021093/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": "ff794796-6881-4fd7-9a5d-c5630e40dfa1", "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-workflowhdl8s/series-workflowhdl8s-build-action-3582130673/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-26 17:42:01 +0000 UTC FinishedAt: 2026-06-26 17:42:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-26 17:42:01 +0000 UTC FinishedAt: 2026-06-26 17:42:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-26 17:42:01 +0000 UTC FinishedAt: 2026-06-26 17:44:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-26 17:42:01 +0000 UTC FinishedAt: 2026-06-26 17:43:52 +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:*ff794796-6881-4fd7-9a5d-c5630e40dfa1,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-workflowhdl8s/series-workflowhdl8s-build-action-3582130673/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-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-26 17:44:02 +0000 UTC FinishedAt: 2026-06-26 20:49:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-26 17:44:02 +0000 UTC FinishedAt: 2026-06-26 20:49:33 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},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:*a2179f19-f63e-44b0-935d-44174fbf56a7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ff794796-6881-4fd7-9a5d-c5630e40dfa1,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-workflowhdl8s/series-workflowhdl8s-build-action-411438072/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-workflowhdl8s/series-workflowhdl8s-build-action-3582130673/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-26 17:44:02 +0000 UTC FinishedAt: 2026-06-26 17:46:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-26 17:44:02 +0000 UTC FinishedAt: 2026-06-26 17:46:00 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},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-workflowhdl8s/series-workflowhdl8s-convert-artifact-3337937706/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-26 17:44:02 +0000 UTC FinishedAt: 2026-06-26 17:44:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-26 17:44:02 +0000 UTC FinishedAt: 2026-06-26 17:44:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-26 17:44:02 +0000 UTC FinishedAt: 2026-06-26 17:44:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-26 17:46:06 +0000 UTC FinishedAt: 2026-06-26 20:49:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhdl8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["remove_migration_pte","prot_none_hugetlb_entry","check_pte","try_to_unmap_one","try_to_migrate_one"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"189ce3c81f8188fb737d59a8a8784f074e830238","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","MIGRATION"],"series_id":"ec26fa8e-e9d8-479c-869d-3333b67562ca","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-26 17:46:06 +0000 UTC FinishedAt: 2026-06-26 20:49:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a2179f19-f63e-44b0-935d-44174fbf56a7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ff794796-6881-4fd7-9a5d-c5630e40dfa1,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-workflowhdl8s/series-workflowhdl8s-build-action-411438072/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-workflowhdl8s/series-workflowhdl8s-build-action-3582130673/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-workflowhdl8s/series-workflowhdl8s-convert-artifact-3337937706/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,}