Name: series-workflowvqpqd Phase: Succeeded StartedAt: 2026-07-06 06:00:37 +0000 UTC FinishedAt: 2026-07-06 10:26:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvqpqd[0] Phase: Succeeded StartedAt: 2026-07-06 06:00:37 +0000 UTC FinishedAt: 2026-07-06 06:22:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvqpqd[0].run-triage Phase: Succeeded StartedAt: 2026-07-06 06:00:37 +0000 UTC FinishedAt: 2026-07-06 06:22:30 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "7ddbf1cde4a03e36e17d06fbc711870eb0b256d7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ETHTOOL_NETLINK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "7ddbf1cde4a03e36e17d06fbc711870eb0b256d7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ETHTOOL_NETLINK" ], "series_id": "31de78ce-e39d-4367-a224-95a69342ac2d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ethnl_rss_set", "ethnl_rss_create_doit" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VUSFRPT0xfTkVUTElOSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V0aG5sX3Jzc19zZXQmIzM0OywKICAgICYjMzQ7ZXRobmxfcnNzX2NyZWF0ZV9kb2l0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBldGh0b29sIG5ldGxpbmsgaW50ZXJmYWNlIHdoZXJlIGEgMzItYml0IGF0dHJpYnV0ZSB3YXMgaW5jb3JyZWN0bHkgcGFyc2VkIGFzIGFuIDgtYml0IGF0dHJpYnV0ZSwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIGluY29ycmVjdCBkYXRhLiBUaGlzIGFmZmVjdHMgdGhlIFJTUyBjb25maWd1cmF0aW9uIGNvbW1hbmRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYzM2YTdiNmVmYjZjZjM2MGFmMWY0ZjdhYTdlYjIxZDk2ZTIzZWM4MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDYgMDY6MTk6MDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2V0aHRvb2wvbmV0bGluay5oIGIvbmV0L2V0aHRvb2wvbmV0bGluay5oXG5pbmRleCBmZDIxOThlNDVkMmJiYS4uNzMzZmIzYzNhNjNhNWQgMTAwNjQ0XG4tLS0gYS9uZXQvZXRodG9vbC9uZXRsaW5rLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9ldGh0b29sL25ldGxpbmsuaFxuQEAgLTExNSw2ICYjNDM7MTE1LDM0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBldGhubF91cGRhdGVfdTgodTggKmRzdCwgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcbiBcdCptb2QgPSB0cnVlO1xuIH1cbiBcbiYjNDM7LyoqXG4mIzQzOyAqIGV0aG5sX3VwZGF0ZV91OF91MzIoKSAtIHVwZGF0ZSB1OCB2YWx1ZSBmcm9tIGFuIE5MQV9VMzIgYXR0cmlidXRlXG4mIzQzOyAqIEBkc3Q6ICB2YWx1ZSB0byB1cGRhdGVcbiYjNDM7ICogQGF0dHI6IG5ldGxpbmsgYXR0cmlidXRlIHdpdGggbmV3IHZhbHVlIG9yIG51bGxcbiYjNDM7ICogQG1vZDogIHBvaW50ZXIgdG8gYm9vbCBmb3IgbW9kaWZpY2F0aW9uIHRyYWNraW5nXG4mIzQzOyAqXG4mIzQzOyAqIFNvbWUgYXR0cmlidXRlcyBhcmUgTkxBX1UzMiBvbiB0aGUgd2lyZSBidXQgYXJlIHN0b3JlZCBpbiBhIHU4LiBSZWFkIHRoZVxuJiM0MzsgKiBmdWxsIDMyLWJpdCB2YWx1ZSBmcm9tIE5MQV9VMzIgbmV0bGluayBhdHRyaWJ1dGUgQGF0dHIgYW5kIG5hcnJvdyBpdCBpbnRvXG4mIzQzOyAqIHRoZSB1OCBwb2ludGVkIHRvIGJ5IEBkc3Q7IGRvIG5vdGhpbmcgaWYgQGF0dHIgaXMgbnVsbC5cbiYjNDM7ICogQm9vbCBwb2ludGVkIHRvIGJ5IEBtb2QgaXMgc2V0IHRvIHRydWUgaWYgdGhpcyBmdW5jdGlvbiBjaGFuZ2VkIHRoZSB2YWx1ZVxuJiM0MzsgKiBvZiAqZHN0LCBvdGhlcndpc2UgaXQgaXMgbGVmdCBhcyBpcy5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBldGhubF91cGRhdGVfdThfdTMyKHU4ICpkc3QsIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXG4mIzQzO1x0XHRcdFx0ICAgICAgIGJvb2wgKm1vZClcbiYjNDM7e1xuJiM0MztcdHUzMiB2YWw7XG4mIzQzO1xuJiM0MztcdGlmICghYXR0cilcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR2YWwgPSBubGFfZ2V0X3UzMihhdHRyKTtcbiYjNDM7XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHZhbCBcdTAwM2UgVThfTUFYKTtcbiYjNDM7XHRpZiAoKmRzdCA9PSB2YWwpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdCpkc3QgPSB2YWw7XG4mIzQzO1x0Km1vZCA9IHRydWU7XG4mIzQzO31cbiYjNDM7XG4gLyoqXG4gICogZXRobmxfdXBkYXRlX2Jvb2wzMigpIC0gdXBkYXRlIHUzMiB1c2VkIGFzIGJvb2wgZnJvbSBOTEFfVTggYXR0cmlidXRlXG4gICogQGRzdDogIHZhbHVlIHRvIHVwZGF0ZVxuZGlmZiAtLWdpdCBhL25ldC9ldGh0b29sL3Jzcy5jIGIvbmV0L2V0aHRvb2wvcnNzLmNcbmluZGV4IDUzNzkyZjUzZjkyMjlmLi5jYTZlZDE1MmMyYmUzMyAxMDA2NDRcbi0tLSBhL25ldC9ldGh0b29sL3Jzcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvZXRodG9vbC9yc3MuY1xuQEAgLTU3NCw3ICYjNDM7NTc0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGV0aG5sX3Jzc19mbG93c19wb2xpY3lbXSA9IHtcbiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBldGhubF9yc3Nfc2V0X3BvbGljeVtFVEhUT09MX0FfUlNTX0ZMT1dfSEFTSCAmIzQzOyAxXSA9IHtcbiBcdFtFVEhUT09MX0FfUlNTX0hFQURFUl0gPSBOTEFfUE9MSUNZX05FU1RFRChldGhubF9oZWFkZXJfcG9saWN5KSxcbiBcdFtFVEhUT09MX0FfUlNTX0NPTlRFWFRdID0geyAudHlwZSA9IE5MQV9VMzIsIH0sXG4tXHRbRVRIVE9PTF9BX1JTU19IRlVOQ10gPSBOTEFfUE9MSUNZX01JTihOTEFfVTMyLCAxKSxcbiYjNDM7XHRbRVRIVE9PTF9BX1JTU19IRlVOQ10gPSBOTEFfUE9MSUNZX1JBTkdFKE5MQV9VMzIsIDEsIFU4X01BWCksXG4gXHRbRVRIVE9PTF9BX1JTU19JTkRJUl0gPSB7IC50eXBlID0gTkxBX0JJTkFSWSwgfSxcbiBcdFtFVEhUT09MX0FfUlNTX0hLRVldID0gTkxBX1BPTElDWV9NSU4oTkxBX0JJTkFSWSwgMSksXG4gXHRbRVRIVE9PTF9BX1JTU19JTlBVVF9YRlJNXSA9XG5AQCAtODU1LDcgJiM0Mzs4NTUsNyBAQCBldGhubF9yc3Nfc2V0KHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2luZm8sIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXHRpbmRpcl9tb2QgPSAhIXRiW0VUSFRPT0xfQV9SU1NfSU5ESVJdO1xuIFxuIFx0cnhmaC5oZnVuYyA9IGRhdGEuaGZ1bmM7XG4tXHRldGhubF91cGRhdGVfdTgoXHUwMDI2cnhmaC5oZnVuYywgdGJbRVRIVE9PTF9BX1JTU19IRlVOQ10sIFx1MDAyNm1vZCk7XG4mIzQzO1x0ZXRobmxfdXBkYXRlX3U4X3UzMihcdTAwMjZyeGZoLmhmdW5jLCB0YltFVEhUT09MX0FfUlNTX0hGVU5DXSwgXHUwMDI2bW9kKTtcbiBcdGlmIChyeGZoLmhmdW5jID09IGRhdGEuaGZ1bmMpXG4gXHRcdHJ4ZmguaGZ1bmMgPSBFVEhfUlNTX0hBU0hfTk9fQ0hBTkdFO1xuIFxuQEAgLTg2NCw3ICYjNDM7ODY0LDggQEAgZXRobmxfcnNzX3NldChzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9pbmZvLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0XHRnb3RvIGV4aXRfZnJlZV9pbmRpcjtcbiBcbiBcdHJ4ZmguaW5wdXRfeGZybSA9IGRhdGEuaW5wdXRfeGZybTtcbi1cdGV0aG5sX3VwZGF0ZV91OChcdTAwMjZyeGZoLmlucHV0X3hmcm0sIHRiW0VUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTV0sIFx1MDAyNm1vZCk7XG4mIzQzO1x0ZXRobmxfdXBkYXRlX3U4X3UzMihcdTAwMjZyeGZoLmlucHV0X3hmcm0sIHRiW0VUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTV0sXG4mIzQzO1x0XHRcdCAgICBcdTAwMjZtb2QpO1xuIFx0eGZybV9zeW0gPSByeGZoLmlucHV0X3hmcm0gfHwgZGF0YS5pbnB1dF94ZnJtO1xuIFx0aWYgKHJ4ZmguaW5wdXRfeGZybSA9PSBkYXRhLmlucHV0X3hmcm0pXG4gXHRcdHJ4ZmguaW5wdXRfeGZybSA9IFJYSF9YRlJNX05PX0NIQU5HRTtcbkBAIC05MzgsNyAmIzQzOzkzOSw3IEBAIGNvbnN0IHN0cnVjdCBldGhubF9yZXF1ZXN0X29wcyBldGhubF9yc3NfcmVxdWVzdF9vcHMgPSB7XG4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZXRobmxfcnNzX2NyZWF0ZV9wb2xpY3lbRVRIVE9PTF9BX1JTU19JTlBVVF9YRlJNICYjNDM7IDFdID0ge1xuIFx0W0VUSFRPT0xfQV9SU1NfSEVBREVSXVx0PSBOTEFfUE9MSUNZX05FU1RFRChldGhubF9oZWFkZXJfcG9saWN5KSxcbiBcdFtFVEhUT09MX0FfUlNTX0NPTlRFWFRdXHQ9IE5MQV9QT0xJQ1lfTUlOKE5MQV9VMzIsIDEpLFxuLVx0W0VUSFRPT0xfQV9SU1NfSEZVTkNdXHQ9IE5MQV9QT0xJQ1lfTUlOKE5MQV9VMzIsIDEpLFxuJiM0MztcdFtFVEhUT09MX0FfUlNTX0hGVU5DXVx0PSBOTEFfUE9MSUNZX1JBTkdFKE5MQV9VMzIsIDEsIFU4X01BWCksXG4gXHRbRVRIVE9PTF9BX1JTU19JTkRJUl1cdD0gTkxBX1BPTElDWV9NSU4oTkxBX0JJTkFSWSwgMSksXG4gXHRbRVRIVE9PTF9BX1JTU19IS0VZXVx0PSBOTEFfUE9MSUNZX01JTihOTEFfQklOQVJZLCAxKSxcbiBcdFtFVEhUT09MX0FfUlNTX0lOUFVUX1hGUk1dID1cbkBAIC0xMDU0LDE0ICYjNDM7MTA1NSwxNSBAQCBpbnQgZXRobmxfcnNzX2NyZWF0ZV9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXHRcdGdvdG8gZXhpdF9jbGVhbl9kYXRhO1xuIFx0aW5kaXJfdXNlcl9zaXplID0gcmV0O1xuIFxuLVx0ZXRobmxfdXBkYXRlX3U4KFx1MDAyNnJ4ZmguaGZ1bmMsIHRiW0VUSFRPT0xfQV9SU1NfSEZVTkNdLCBcdTAwMjZtb2QpO1xuJiM0MztcdGV0aG5sX3VwZGF0ZV91OF91MzIoXHUwMDI2cnhmaC5oZnVuYywgdGJbRVRIVE9PTF9BX1JTU19IRlVOQ10sIFx1MDAyNm1vZCk7XG4gXG4gXHRyZXQgPSByc3Nfc2V0X3ByZXBfaGtleShkZXYsIGluZm8sIFx1MDAyNmRhdGEsIFx1MDAyNnJ4ZmgsIFx1MDAyNm1vZCk7XG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIGV4aXRfZnJlZV9pbmRpcjtcbiBcbiBcdHJ4ZmguaW5wdXRfeGZybSA9IFJYSF9YRlJNX05PX0NIQU5HRTtcbi1cdGV0aG5sX3VwZGF0ZV91OChcdTAwMjZyeGZoLmlucHV0X3hmcm0sIHRiW0VUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTV0sIFx1MDAyNm1vZCk7XG4mIzQzO1x0ZXRobmxfdXBkYXRlX3U4X3UzMihcdTAwMjZyeGZoLmlucHV0X3hmcm0sIHRiW0VUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTV0sXG4mIzQzO1x0XHRcdCAgICBcdTAwMjZtb2QpO1xuIFxuIFx0Y3R4ID0gZXRodG9vbF9yeGZoX2N0eF9hbGxvYyhvcHMsIGRhdGEuaW5kaXJfc2l6ZSwgZGF0YS5oa2V5X3NpemUpO1xuIFx0aWYgKCFjdHgpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjoxOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFVEhUT09MX05FVExJTksmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtldGhubF9yc3Nfc2V0JiMzNDssCiAgICAmIzM0O2V0aG5sX3Jzc19jcmVhdGVfZG9pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgZXRodG9vbCBuZXRsaW5rIGludGVyZmFjZSB3aGVyZSBhIDMyLWJpdCBhdHRyaWJ1dGUgd2FzIGluY29ycmVjdGx5IHBhcnNlZCBhcyBhbiA4LWJpdCBhdHRyaWJ1dGUsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBvciBpbmNvcnJlY3QgZGF0YS4gVGhpcyBhZmZlY3RzIHRoZSBSU1MgY29uZmlndXJhdGlvbiBjb21tYW5kcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYzM2YTdiNmVmYjZjZjM2MGFmMWY0ZjdhYTdlYjIxZDk2ZTIzZWM4MQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDYgMDY6MTk6MDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvZXRodG9vbC9uZXRsaW5rLmggYi9uZXQvZXRodG9vbC9uZXRsaW5rLmgKaW5kZXggZmQyMTk4ZTQ1ZDJiYmEuLjczM2ZiM2MzYTYzYTVkIDEwMDY0NAotLS0gYS9uZXQvZXRodG9vbC9uZXRsaW5rLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2V0aHRvb2wvbmV0bGluay5oCkBAIC0xMTUsNiAmIzQzOzExNSwzNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXRobmxfdXBkYXRlX3U4KHU4ICpkc3QsIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsCiAJKm1vZCA9IHRydWU7CiB9CiAKJiM0MzsvKioKJiM0MzsgKiBldGhubF91cGRhdGVfdThfdTMyKCkgLSB1cGRhdGUgdTggdmFsdWUgZnJvbSBhbiBOTEFfVTMyIGF0dHJpYnV0ZQomIzQzOyAqIEBkc3Q6ICB2YWx1ZSB0byB1cGRhdGUKJiM0MzsgKiBAYXR0cjogbmV0bGluayBhdHRyaWJ1dGUgd2l0aCBuZXcgdmFsdWUgb3IgbnVsbAomIzQzOyAqIEBtb2Q6ICBwb2ludGVyIHRvIGJvb2wgZm9yIG1vZGlmaWNhdGlvbiB0cmFja2luZwomIzQzOyAqCiYjNDM7ICogU29tZSBhdHRyaWJ1dGVzIGFyZSBOTEFfVTMyIG9uIHRoZSB3aXJlIGJ1dCBhcmUgc3RvcmVkIGluIGEgdTguIFJlYWQgdGhlCiYjNDM7ICogZnVsbCAzMi1iaXQgdmFsdWUgZnJvbSBOTEFfVTMyIG5ldGxpbmsgYXR0cmlidXRlIEBhdHRyIGFuZCBuYXJyb3cgaXQgaW50bwomIzQzOyAqIHRoZSB1OCBwb2ludGVkIHRvIGJ5IEBkc3Q7IGRvIG5vdGhpbmcgaWYgQGF0dHIgaXMgbnVsbC4KJiM0MzsgKiBCb29sIHBvaW50ZWQgdG8gYnkgQG1vZCBpcyBzZXQgdG8gdHJ1ZSBpZiB0aGlzIGZ1bmN0aW9uIGNoYW5nZWQgdGhlIHZhbHVlCiYjNDM7ICogb2YgKmRzdCwgb3RoZXJ3aXNlIGl0IGlzIGxlZnQgYXMgaXMuCiYjNDM7ICovCiYjNDM7c3RhdGljIGlubGluZSB2b2lkIGV0aG5sX3VwZGF0ZV91OF91MzIodTggKmRzdCwgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwKJiM0MzsJCQkJICAgICAgIGJvb2wgKm1vZCkKJiM0Mzt7CiYjNDM7CXUzMiB2YWw7CiYjNDM7CiYjNDM7CWlmICghYXR0cikKJiM0MzsJCXJldHVybjsKJiM0MzsJdmFsID0gbmxhX2dldF91MzIoYXR0cik7CiYjNDM7CURFQlVHX05FVF9XQVJOX09OX09OQ0UodmFsICZndDsgVThfTUFYKTsKJiM0MzsJaWYgKCpkc3QgPT0gdmFsKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwkqZHN0ID0gdmFsOwomIzQzOwkqbW9kID0gdHJ1ZTsKJiM0Mzt9CiYjNDM7CiAvKioKICAqIGV0aG5sX3VwZGF0ZV9ib29sMzIoKSAtIHVwZGF0ZSB1MzIgdXNlZCBhcyBib29sIGZyb20gTkxBX1U4IGF0dHJpYnV0ZQogICogQGRzdDogIHZhbHVlIHRvIHVwZGF0ZQpkaWZmIC0tZ2l0IGEvbmV0L2V0aHRvb2wvcnNzLmMgYi9uZXQvZXRodG9vbC9yc3MuYwppbmRleCA1Mzc5MmY1M2Y5MjI5Zi4uY2E2ZWQxNTJjMmJlMzMgMTAwNjQ0Ci0tLSBhL25ldC9ldGh0b29sL3Jzcy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9ldGh0b29sL3Jzcy5jCkBAIC01NzQsNyAmIzQzOzU3NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBldGhubF9yc3NfZmxvd3NfcG9saWN5W10gPSB7CiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBldGhubF9yc3Nfc2V0X3BvbGljeVtFVEhUT09MX0FfUlNTX0ZMT1dfSEFTSCAmIzQzOyAxXSA9IHsKIAlbRVRIVE9PTF9BX1JTU19IRUFERVJdID0gTkxBX1BPTElDWV9ORVNURUQoZXRobmxfaGVhZGVyX3BvbGljeSksCiAJW0VUSFRPT0xfQV9SU1NfQ09OVEVYVF0gPSB7IC50eXBlID0gTkxBX1UzMiwgfSwKLQlbRVRIVE9PTF9BX1JTU19IRlVOQ10gPSBOTEFfUE9MSUNZX01JTihOTEFfVTMyLCAxKSwKJiM0MzsJW0VUSFRPT0xfQV9SU1NfSEZVTkNdID0gTkxBX1BPTElDWV9SQU5HRShOTEFfVTMyLCAxLCBVOF9NQVgpLAogCVtFVEhUT09MX0FfUlNTX0lORElSXSA9IHsgLnR5cGUgPSBOTEFfQklOQVJZLCB9LAogCVtFVEhUT09MX0FfUlNTX0hLRVldID0gTkxBX1BPTElDWV9NSU4oTkxBX0JJTkFSWSwgMSksCiAJW0VUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTV0gPQpAQCAtODU1LDcgJiM0Mzs4NTUsNyBAQCBldGhubF9yc3Nfc2V0KHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2luZm8sIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pCiAJaW5kaXJfbW9kID0gISF0YltFVEhUT09MX0FfUlNTX0lORElSXTsKIAogCXJ4ZmguaGZ1bmMgPSBkYXRhLmhmdW5jOwotCWV0aG5sX3VwZGF0ZV91OCgmYW1wO3J4ZmguaGZ1bmMsIHRiW0VUSFRPT0xfQV9SU1NfSEZVTkNdLCAmYW1wO21vZCk7CiYjNDM7CWV0aG5sX3VwZGF0ZV91OF91MzIoJmFtcDtyeGZoLmhmdW5jLCB0YltFVEhUT09MX0FfUlNTX0hGVU5DXSwgJmFtcDttb2QpOwogCWlmIChyeGZoLmhmdW5jID09IGRhdGEuaGZ1bmMpCiAJCXJ4ZmguaGZ1bmMgPSBFVEhfUlNTX0hBU0hfTk9fQ0hBTkdFOwogCkBAIC04NjQsNyAmIzQzOzg2NCw4IEBAIGV0aG5sX3Jzc19zZXQoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfaW5mbywgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKIAkJZ290byBleGl0X2ZyZWVfaW5kaXI7CiAKIAlyeGZoLmlucHV0X3hmcm0gPSBkYXRhLmlucHV0X3hmcm07Ci0JZXRobmxfdXBkYXRlX3U4KCZhbXA7cnhmaC5pbnB1dF94ZnJtLCB0YltFVEhUT09MX0FfUlNTX0lOUFVUX1hGUk1dLCAmYW1wO21vZCk7CiYjNDM7CWV0aG5sX3VwZGF0ZV91OF91MzIoJmFtcDtyeGZoLmlucHV0X3hmcm0sIHRiW0VUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTV0sCiYjNDM7CQkJICAgICZhbXA7bW9kKTsKIAl4ZnJtX3N5bSA9IHJ4ZmguaW5wdXRfeGZybSB8fCBkYXRhLmlucHV0X3hmcm07CiAJaWYgKHJ4ZmguaW5wdXRfeGZybSA9PSBkYXRhLmlucHV0X3hmcm0pCiAJCXJ4ZmguaW5wdXRfeGZybSA9IFJYSF9YRlJNX05PX0NIQU5HRTsKQEAgLTkzOCw3ICYjNDM7OTM5LDcgQEAgY29uc3Qgc3RydWN0IGV0aG5sX3JlcXVlc3Rfb3BzIGV0aG5sX3Jzc19yZXF1ZXN0X29wcyA9IHsKIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGV0aG5sX3Jzc19jcmVhdGVfcG9saWN5W0VUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTSAmIzQzOyAxXSA9IHsKIAlbRVRIVE9PTF9BX1JTU19IRUFERVJdCT0gTkxBX1BPTElDWV9ORVNURUQoZXRobmxfaGVhZGVyX3BvbGljeSksCiAJW0VUSFRPT0xfQV9SU1NfQ09OVEVYVF0JPSBOTEFfUE9MSUNZX01JTihOTEFfVTMyLCAxKSwKLQlbRVRIVE9PTF9BX1JTU19IRlVOQ10JPSBOTEFfUE9MSUNZX01JTihOTEFfVTMyLCAxKSwKJiM0MzsJW0VUSFRPT0xfQV9SU1NfSEZVTkNdCT0gTkxBX1BPTElDWV9SQU5HRShOTEFfVTMyLCAxLCBVOF9NQVgpLAogCVtFVEhUT09MX0FfUlNTX0lORElSXQk9IE5MQV9QT0xJQ1lfTUlOKE5MQV9CSU5BUlksIDEpLAogCVtFVEhUT09MX0FfUlNTX0hLRVldCT0gTkxBX1BPTElDWV9NSU4oTkxBX0JJTkFSWSwgMSksCiAJW0VUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTV0gPQpAQCAtMTA1NCwxNCAmIzQzOzEwNTUsMTUgQEAgaW50IGV0aG5sX3Jzc19jcmVhdGVfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQogCQlnb3RvIGV4aXRfY2xlYW5fZGF0YTsKIAlpbmRpcl91c2VyX3NpemUgPSByZXQ7CiAKLQlldGhubF91cGRhdGVfdTgoJmFtcDtyeGZoLmhmdW5jLCB0YltFVEhUT09MX0FfUlNTX0hGVU5DXSwgJmFtcDttb2QpOwomIzQzOwlldGhubF91cGRhdGVfdThfdTMyKCZhbXA7cnhmaC5oZnVuYywgdGJbRVRIVE9PTF9BX1JTU19IRlVOQ10sICZhbXA7bW9kKTsKIAogCXJldCA9IHJzc19zZXRfcHJlcF9oa2V5KGRldiwgaW5mbywgJmFtcDtkYXRhLCAmYW1wO3J4ZmgsICZhbXA7bW9kKTsKIAlpZiAocmV0KQogCQlnb3RvIGV4aXRfZnJlZV9pbmRpcjsKIAogCXJ4ZmguaW5wdXRfeGZybSA9IFJYSF9YRlJNX05PX0NIQU5HRTsKLQlldGhubF91cGRhdGVfdTgoJmFtcDtyeGZoLmlucHV0X3hmcm0sIHRiW0VUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTV0sICZhbXA7bW9kKTsKJiM0MzsJZXRobmxfdXBkYXRlX3U4X3UzMigmYW1wO3J4ZmguaW5wdXRfeGZybSwgdGJbRVRIVE9PTF9BX1JTU19JTlBVVF9YRlJNXSwKJiM0MzsJCQkgICAgJmFtcDttb2QpOwogCiAJY3R4ID0gZXRodG9vbF9yeGZoX2N0eF9hbGxvYyhvcHMsIGRhdGEuaW5kaXJfc2l6ZSwgZGF0YS5oa2V5X3NpemUpOwogCWlmICghY3R4KSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MjAKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA0MjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSU1MgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIHRvdWNoaW5nIGBuZXQvZXRodG9vbC9yc3MuY2AgYW5kIGBuZXQvZXRodG9vbC9uZXRsaW5rLmhgLiBSaWdodCBvZmYgdGhlIGJhdCwgaXQmIzM5O3MgaW50cm9kdWNpbmcgdGhpcyBuZXcgZnVuY3Rpb24sIGBldGhubF91cGRhdGVfdThfdTMyYC4gVGhlIG5hbWUgaXMgcHJldHR5IHNlbGYtZXhwbGFuYXRvcnkg4oCTIGl0JiMzOTtzIHJlYWRpbmcgYSAzMi1iaXQgbmV0bGluayBhdHRyaWJ1dGUsIGBOTEFfVTMyYCwgYW5kIHNvbWVob3cgc3RvcmluZyB0aGF0IGRhdGEgaW50byBhbiA4LWJpdCwgYHU4YCB2YXJpYWJsZS4gVGhhdCYjMzk7cyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZywgYW5kIEkmIzM5O20gZ3Vlc3NpbmcgdGhpcyBoYXMgdG8gZG8gd2l0aCBzb21lIGtpbmQgb2YgdHlwZSBjb252ZXJzaW9uIG9yIGNvbnN0cmFpbnQuCgpUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgcmVwbGFjaW5nIHRoZSBvbGRlciBgZXRobmxfdXBkYXRlX3U4YCB3aXRoIHRoaXMgbmV3IG9uZSBpbiBgZXRobmxfcnNzX3NldGAgYW5kIGBldGhubF9yc3NfY3JlYXRlX2RvaXRgIOKAkyBzcGVjaWZpY2FsbHkgZm9yIGBFVEhUT09MX0FfUlNTX0hGVU5DYCBhbmQgYEVUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTWAuIFRoYXQgc2lnbmFscyBhIGRpcmVjdCBmdW5jdGlvbmFsIGNoYW5nZS4gQWxzbywgdGhlIHBvbGljeSBkZWZpbml0aW9ucywgYGV0aG5sX3Jzc19zZXRfcG9saWN5YCBhbmQgYGV0aG5sX3Jzc19jcmVhdGVfcG9saWN5YCwgYXJlIGJlaW5nIHVwZGF0ZWQgdG9vLiBJdCYjMzk7cyBzaGlmdGluZyB0aGUgcG9saWN5IGZvciBgRVRIVE9PTF9BX1JTU19IRlVOQ2AgZnJvbSBhIGBOTEFfUE9MSUNZX01JTihOTEFfVTMyLCAxKWAgdG8gYE5MQV9QT0xJQ1lfUkFOR0UoTkxBX1UzMiwgMSwgVThfTUFYKWAuIFRoZSBwb2xpY3kgc2hpZnQgc3Ryb25nbHkgaW5kaWNhdGVzIGEgZGF0YSB0eXBlIGlzc3VlIHdhcyBwcmVzZW50IGJlZm9yZS4KCkFoLCBva2F5LCBJIHNlZSBpdCBub3cuIFRoaXMgaXMgYSBmaXgsIGEgYnVnZml4IHNwZWNpZmljYWxseSEgVGhlIG9yaWdpbmFsIGNvZGUgd2FzIHVzaW5nIGBldGhubF91cGRhdGVfdThgIG9uIGFuIGF0dHJpYnV0ZSB0aGF0ICpzaG91bGQqIGhhdmUgYmVlbiBgTkxBX1UzMmAgZnJvbSB0aGUgd2lyZSwgYWNjb3JkaW5nIHRvIHRoZSBgTkxBX1BPTElDWV9NSU4oTkxBX1UzMiwgMSlgIHBvbGljeSBmb3IgYEVUSFRPT0xfQV9SU1NfSEZVTkNgLiBVc2luZyBgZXRobmxfdXBkYXRlX3U4YCBpbiB0aGF0IHNjZW5hcmlvIGlzIGluaGVyZW50bHkgd3Jvbmc7IGl0IGV4cGVjdHMgYW4gYE5MQV9VOGAsIGFuZCBpZiB3ZSBmZWVkIGl0IGEgMzItYml0IHZhbHVlLCBpdCB3b3VsZCBlaXRoZXIgcmVhZCBnYXJiYWdlIG9yIHBvdGVudGlhbGx5IGNhdXNlIGFuIG91dC1vZi1ib3VuZHMgcmVhZC4gVGhpcyBjaGFuZ2UgcmVjdGlmaWVzIHRoYXQuCgpOb3csIGJlZm9yZSBJIHNpZ24gb2ZmIG9uIHRoaXMsIEkgbmVlZCB0byB2ZXJpZnkgYSBjb3VwbGUgb2YgdGhpbmdzLCBhcyB0aGlzIHRvdWNoZXMgY29yZSBuZXR3b3JraW5nLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGluIG9yZGVyLiBFVEhUT09MIG5ldGxpbmsgaXMgdHlwaWNhbGx5IHBhcnQgb2YgdGhlIGNvcmUgbmV0d29yayBzdGFjay4gU28sIGl0JiMzOTtzIGVpdGhlciBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgY29udHJvbGxlZCBieSBgQ09ORklHX0VUSFRPT0xfTkVUTElOS2AuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBgbmV0L2V0aHRvb2wvS2NvbmZpZ2Agb3IgbWF5YmUgYG5ldC9LY29uZmlnYCB0byBjb25maXJtIHRoZXJlIGFyZW4mIzM5O3QgYW55IHdlaXJkIGNvbmZpZyBkZXBlbmRlbmNpZXMgdGhhdCBjb3VsZCBiZSBpbXBhY3RlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfRVRIVE9PTF9ORVRMSU5LJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvb3BlbnJpc2MvY29uZmlncy9vcjFrbGl0ZXhfZGVmY29uZmlnPTIyPUNPTkZJR19JTkVUX1JBV19ESUFHPXlcbmFyY2gvb3BlbnJpc2MvY29uZmlncy9vcjFrbGl0ZXhfZGVmY29uZmlnLTIzLSMgQ09ORklHX1dJUkVMRVNTIGlzIG5vdCBzZXRcbmFyY2gvb3BlbnJpc2MvY29uZmlncy9vcjFrbGl0ZXhfZGVmY29uZmlnOjI0OiMgQ09ORklHX0VUSFRPT0xfTkVUTElOSyBpcyBub3Qgc2V0XG5hcmNoL29wZW5yaXNjL2NvbmZpZ3Mvb3Ixa2xpdGV4X2RlZmNvbmZpZy0yNS1DT05GSUdfREVWVE1QRlM9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL3pmY3BkdW1wX2RlZmNvbmZpZz0yOT1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL3MzOTAvY29uZmlncy96ZmNwZHVtcF9kZWZjb25maWctMzEtIyBDT05GSUdfUENQVV9ERVZfUkVGQ05UIGlzIG5vdCBzZXRcbmFyY2gvczM5MC9jb25maWdzL3pmY3BkdW1wX2RlZmNvbmZpZzozMjojIENPTkZJR19FVEhUT09MX05FVExJTksgaXMgbm90IHNldFxuYXJjaC9zMzkwL2NvbmZpZ3MvemZjcGR1bXBfZGVmY29uZmlnLTMzLUNPTkZJR19ERVZUTVBGUz15XG4tLVxuaW5jbHVkZS9saW51eC9ldGh0b29sX25ldGxpbmsuaD0yMD1zdHJ1Y3QgcGh5X2RldmljZTtcbmluY2x1ZGUvbGludXgvZXRodG9vbF9uZXRsaW5rLmgtMjEtXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2xfbmV0bGluay5oOjIyOiNpZiBJU19FTkFCTEVEKENPTkZJR19FVEhUT09MX05FVExJTkspXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2xfbmV0bGluay5oLTIzLWludCBldGhubF9jYWJsZV90ZXN0X2FsbG9jKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGNtZCk7XG4tLVxuaW5jbHVkZS9saW51eC9ldGh0b29sX25ldGxpbmsuaD0xMjU9c3RhdGljIGlubGluZSB2b2lkIGV0aG5sX3BzZV9zZW5kX250ZihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmluY2x1ZGUvbGludXgvZXRodG9vbF9uZXRsaW5rLmgtMTI5LVxuaW5jbHVkZS9saW51eC9ldGh0b29sX25ldGxpbmsuaDoxMzA6I2VuZGlmIC8qIElTX0VOQUJMRUQoQ09ORklHX0VUSFRPT0xfTkVUTElOSykgKi9cbmluY2x1ZGUvbGludXgvZXRodG9vbF9uZXRsaW5rLmgtMTMxLVxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9NTI4MT12b2lkIG5ldGRldl9ib25kaW5nX2luZm9fY2hhbmdlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01MjgzLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo1Mjg0OiNpZiBJU19FTkFCTEVEKENPTkZJR19FVEhUT09MX05FVExJTkspXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTUyODUtdm9pZCBldGh0b29sX25vdGlmeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgY21kKTtcbi0tXG5uZXQvZXRodG9vbC9NYWtlZmlsZT0zPW9iai15XHRcdFx0XHQmIzQzOz0gaW9jdGwubyBjb21tb24ub1xubmV0L2V0aHRvb2wvTWFrZWZpbGUtNC1cbm5ldC9ldGh0b29sL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX0VUSFRPT0xfTkVUTElOSylcdCYjNDM7PSBldGh0b29sX25sLm9cbm5ldC9ldGh0b29sL01ha2VmaWxlLTYtXG4tLVxubmV0L2V0aHRvb2wvY29tbW9uLmg9ODE9Ym9vbCBfX2V0aHRvb2xfZGV2X21tX3N1cHBvcnRlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcbm5ldC9ldGh0b29sL2NvbW1vbi5oLTgyLVxubmV0L2V0aHRvb2wvY29tbW9uLmg6ODM6I2lmIElTX0VOQUJMRUQoQ09ORklHX0VUSFRPT0xfTkVUTElOSylcbm5ldC9ldGh0b29sL2NvbW1vbi5oLTg0LXZvaWQgZXRodG9vbF9yc3Nfbm90aWZ5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiB0eXBlLCB1MzIgcnNzX2NvbnRleHQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzNDgKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgQ09ORklHX0VUSFRPT0xfTkVUTElOS2AgQ29uZmlndXJhdGlvbiBPcHRpb24qKgoKQWxyaWdodCwgc28gdGhlIHRhc2sgYXQgaGFuZCByZXZvbHZlcyBhcm91bmQgYENPTkZJR19FVEhUT09MX05FVExJTktgLiBSaWdodCwgdGhhdCYjMzk7cyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gSSBuZWVkIHRvIHZlcmlmeS4gTXkgZmlyc3QgbW92ZSBpcyBhbHdheXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZS4gVGhlIGBuZXQvS2NvbmZpZ2AgZmlsZSBpcyB0aGUgZGVmaW5pdGl2ZSBhdXRob3JpdHkgb24gdGhlc2Ugc2V0dGluZ3MuIEkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gaXRzIGV4aXN0ZW5jZSBhbmQsIG1vcmUgaW1wb3J0YW50bHksIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcyBhbmQgaW1wbGljYXRpb25zIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLiBHb3R0YSBtYWtlIHN1cmUgdGhpcyB0aGluZyYjMzk7cyBldmVuIGRlZmluZWQsIG9yIGlmIHRoZXJlJiMzOTtzIHNvbWUgY29uZGl0aW9uYWwgbG9naWMgSSBuZWVkIHRvIGNvbnNpZGVyLiBMZXQmIzM5O3Mgc2VlIHdoYXQgYG5ldC9LY29uZmlnYCBoYXMgdG8gc2F5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBFVEhUT09MX05FVExJTksmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9NTA4PWNvbmZpZyBGQUlMT1ZFUlxuLS1cbm5ldC9LY29uZmlnLTUyMC1cbm5ldC9LY29uZmlnOjUyMTpjb25maWcgRVRIVE9PTF9ORVRMSU5LXG5uZXQvS2NvbmZpZy01MjItXHRib29sIFwmIzM0O05ldGxpbmsgaW50ZXJmYWNlIGZvciBldGh0b29sXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDY6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTYzNAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDExOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBFVEhUT09MX05FVExJTksgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBgRVRIVE9PTF9ORVRMSU5LYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gaGVyZS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCB3aGljaCBmdW5jdGlvbnMgYXJlIHRoZSBtb3N0IHByb21pc2luZyBjYW5kaWRhdGVzIGZvciBmdXp6aW5nPyBCYXNlZCBvbiB0aGUgY2hhbmdlcywgaXQgbG9va3MgbGlrZSBgZXRobmxfcnNzX3NldGAgYW5kIGBldGhubF9yc3NfY3JlYXRlX2RvaXRgIGFyZSB0aGUgcHJpbWFyeSB0YXJnZXRzLiBCdXQgaXQmIzM5O3Mgd29ydGggYSBxdWljayBhdWRpdCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGJlIGludGVyZXN0aW5nLiBBaCwgcmlnaHQsIHRoZXJlJiMzOTtzIGBldGhubF91cGRhdGVfdThfdTMyYCwgd2hpY2ggaXMgYSBzdGF0aWMgaW5saW5lIGZ1bmN0aW9uIGRlZmluZWQgaW4gYG5ldC9ldGh0b29sL25ldGxpbmsuaGAuIEFuZCwgYXMgc3VzcGVjdGVkLCB0aGF0JiMzOTtzIGNhbGxlZCBkaXJlY3RseSBieSB0aGUgdHdvIGZ1bmN0aW9ucyBJIGFscmVhZHkgaWRlbnRpZmllZDogYGV0aG5sX3Jzc19zZXRgIGFuZCBgZXRobmxfcnNzX2NyZWF0ZV9kb2l0YC4gU28sIGZ1enppbmcgYGV0aG5sX3Jzc19zZXRgIGFuZCBgZXRobmxfcnNzX2NyZWF0ZV9kb2l0YCwgZWZmZWN0aXZlbHkgY292ZXJzIHRoZSBzdGF0aWMgaW5saW5lIGFzIHdlbGwuIEdvb2QuIFRoYXQmIzM5O3MgYSBmb2N1c2VkIHN0YXJ0aW5nIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V0aG5sX3Jzc19zZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2V0aHRvb2wvbmV0bGluay5jPTExMzU9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX29wcyBldGh0b29sX2dlbmxfb3BzW10gPSB7XG4tLVxubmV0L2V0aHRvb2wvbmV0bGluay5jLTE1MjItXHRcdC5kb2l0XHQ9IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQsXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6MTUyMzpcdFx0LnBvbGljeSA9IGV0aG5sX3Jzc19zZXRfcG9saWN5LFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjE1MjQ6XHRcdC5tYXhhdHRyID0gQVJSQVlfU0laRShldGhubF9yc3Nfc2V0X3BvbGljeSkgLSAxLFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTE1MjUtXHR9LFxuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuaD01MTc9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGV0aG5sX3Jzc19nZXRfcG9saWN5W0VUSFRPT0xfQV9SU1NfU1RBUlRfQ09OVEVYVCAmIzQzOyAxXTtcbm5ldC9ldGh0b29sL25ldGxpbmsuaDo1MTg6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGV0aG5sX3Jzc19zZXRfcG9saWN5W0VUSFRPT0xfQV9SU1NfRkxPV19IQVNIICYjNDM7IDFdO1xubmV0L2V0aHRvb2wvbmV0bGluay5oLTUxOS1leHRlcm4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZXRobmxfcnNzX2NyZWF0ZV9wb2xpY3lbRVRIVE9PTF9BX1JTU19JTlBVVF9YRlJNICYjNDM7IDFdO1xuLS1cbm5ldC9ldGh0b29sL3Jzcy5jPTU0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZXRobmxfcnNzX2Zsb3dzX3BvbGljeVtdID0ge1xuLS1cbm5ldC9ldGh0b29sL3Jzcy5jLTU3My1cbm5ldC9ldGh0b29sL3Jzcy5jOjU3NDpjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBldGhubF9yc3Nfc2V0X3BvbGljeVtFVEhUT09MX0FfUlNTX0ZMT1dfSEFTSCAmIzQzOyAxXSA9IHtcbm5ldC9ldGh0b29sL3Jzcy5jLTU3NS1cdFtFVEhUT09MX0FfUlNTX0hFQURFUl0gPSBOTEFfUE9MSUNZX05FU1RFRChldGhubF9oZWFkZXJfcG9saWN5KSxcbi0tXG5uZXQvZXRodG9vbC9yc3MuYz01ODU9c3RhdGljIGludFxubmV0L2V0aHRvb2wvcnNzLmM6NTg2OmV0aG5sX3Jzc19zZXRfdmFsaWRhdGUoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfaW5mbywgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbm5ldC9ldGh0b29sL3Jzcy5jLTU4Ny17XG4tLVxubmV0L2V0aHRvb2wvcnNzLmM9ODI3PXN0YXRpYyBpbnRcbm5ldC9ldGh0b29sL3Jzcy5jOjgyODpldGhubF9yc3Nfc2V0KHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2luZm8sIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvZXRodG9vbC9yc3MuYy04Mjkte1xuLS1cbm5ldC9ldGh0b29sL3Jzcy5jPTkxOT1jb25zdCBzdHJ1Y3QgZXRobmxfcmVxdWVzdF9vcHMgZXRobmxfcnNzX3JlcXVlc3Rfb3BzID0ge1xuLS1cbm5ldC9ldGh0b29sL3Jzcy5jLTkzMS1cbm5ldC9ldGh0b29sL3Jzcy5jOjkzMjpcdC5zZXRfdmFsaWRhdGVcdFx0PSBldGhubF9yc3Nfc2V0X3ZhbGlkYXRlLFxubmV0L2V0aHRvb2wvcnNzLmM6OTMzOlx0LnNldFx0XHRcdD0gZXRobmxfcnNzX3NldCxcbm5ldC9ldGh0b29sL3Jzcy5jLTkzNC1cdC5zZXRfbnRmX2NtZFx0XHQ9IEVUSFRPT0xfTVNHX1JTU19OVEYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDY6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc1MgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgZnVuY3Rpb25zLgoKKipEZWNvbnN0cnVjdGluZyB0aGUgUlNTIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgbXkgZm9jdXMgaGVyZSBpcyBvbiB1bmRlcnN0YW5kaW5nIGhvdyBSU1MgaXMgYmVpbmcgc2V0IHVwIHdpdGhpbiB0aGlzIHN5c3RlbS4gSSBzZWUgYGV0aG5sX3Jzc19zZXRgIGFuZCBgZXRobmxfcnNzX2NyZWF0ZV9kb2l0YCDigJMgdGhvc2UgYXJlIHRoZSBrZXkgcGxheWVycywgcmlnaHQ/IE15IGluc3RpbmN0IGlzIHRvIGRpdmUgZGlyZWN0bHkgaW50byBgZXRobmxfcnNzX2NyZWF0ZV9kb2l0YC4gSXQgc291bmRzIGxpa2UgdGhlICYjMzQ7ZG9lciYjMzQ7IG9mIHRoZSBjcmVhdGlvbiBwcm9jZXNzLCBzbyBpdCB3aWxsIGxpa2VseSBob2xkIHRoZSBjb3JlIGxvZ2ljIEkmIzM5O20gaW50ZXJlc3RlZCBpbi4gTGV0JiMzOTtzIHNlZSB3aGF0IGluZm9ybWF0aW9uIEkgY2FuIGdsZWFuIGZyb20gdGhlcmUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgcHVsbGluZyB0aGF0IGFwYXJ0IGluIG15IG1pbmQuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDY6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXRobmxfcnNzX2NyZWF0ZV9kb2l0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9ldGh0b29sL25ldGxpbmsuYz0xMTM1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9vcHMgZXRodG9vbF9nZW5sX29wc1tdID0ge1xuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNTI4LVx0XHQuZmxhZ3NcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxNTI5Olx0XHQuZG9pdFx0PSBldGhubF9yc3NfY3JlYXRlX2RvaXQsXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTUzMC1cdFx0LnBvbGljeVx0PSBldGhubF9yc3NfY3JlYXRlX3BvbGljeSxcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmg9NTQzPWludCBldGhubF90c2luZm9fZG9uZShzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpO1xubmV0L2V0aHRvb2wvbmV0bGluay5oOjU0NDppbnQgZXRobmxfcnNzX2NyZWF0ZV9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xubmV0L2V0aHRvb2wvbmV0bGluay5oLTU0NS1pbnQgZXRobmxfcnNzX2RlbGV0ZV9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xuLS1cbm5ldC9ldGh0b29sL3Jzcy5jPTk4Nj1ldGhubF9yc3NfY3JlYXRlX3NlbmRfbnRmKGNvbnN0IHN0cnVjdCBza19idWZmICpyc3AsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2V0aHRvb2wvcnNzLmMtMTAwNi1cbm5ldC9ldGh0b29sL3Jzcy5jOjEwMDc6aW50IGV0aG5sX3Jzc19jcmVhdGVfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L2V0aHRvb2wvcnNzLmMtMTAwOC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczNDUKCQkJCQkJCW91dHB1dDogMTExCgkJCQkJCQl0aG91Z2h0czogMjY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEVUSFRPT0wgTmV0bGluayBCdWcqKgoKT2theSwgc28gSSYjMzk7dmUgcGlucG9pbnRlZCB0aGUgYnVnOiBpdCYjMzk7cyB3aXRoaW4gdGhlIG5ldGxpbmsgcGFyc2luZywgc3BlY2lmaWNhbGx5IGhvdyBgRVRIVE9PTF9BX1JTU19IRlVOQ2AgYW5kIGBFVEhUT09MX0FfUlNTX0lOUFVUX1hGUk1gIGFyZSBoYW5kbGVkLiBUaGUgcGF0Y2ggdXNlcyBgZXRobmxfdXBkYXRlX3U4X3UzMmAgdG8gY29ycmVjdCB0aGlzLiBUaGlzIGZ1bmN0aW9uIHJlYWRzIGEgMzItYml0IHZhbHVlIGFuZCB0aGVuIHN0b3JlcyBpdCBpbnRvIGFuIDgtYml0LCB3aGljaCBpcyB0aGUgcm9vdCBjYXVzZSBvZiB0aGlzIGVycm9yLiBTb3VuZHMgbGlrZSBhIGNsYXNzaWMgY2FzZSBvZiB0eXBlIGNvbmZ1c2lvbiBsZWFkaW5nIHRvIHBvdGVudGlhbCBtZW1vcnkgaXNzdWVzLgoKR2l2ZW4gdGhlIGZpeCwgdGhpcyBpcyAqYWJzb2x1dGVseSogd29ydGggZnV6emluZy4gSSBuZWVkIHRvIGZvY3VzIG15IGVmZm9ydHMgb24gYGV0aG5sX3Jzc19zZXRgIGFuZCBgZXRobmxfcnNzX2NyZWF0ZV9kb2l0YC4gVGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgSSB3YW50IHRvIHRhcmdldCB3aXRoIG15IGZ1enppbmcgY2FtcGFpZ24uCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIGNvbmZpcm0gdGhlIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb24uIEFoLCB5ZXMsIGBFVEhUT09MX05FVExJTktgIGlzIHRoZSByZWxldmFudCBjb25maWcuIE5vdGhpbmcgZWxzZSBpcyBuZWVkZWQuCgpFc3NlbnRpYWxseSwgdGhlIHBhdGNoIGlzIGZpeGluZyBhIHZ1bG5lcmFiaWxpdHkgaW4gdGhlIEVUSFRPT0wgbmV0bGluayBpbnRlcmZhY2UuIEl0IGFwcGVhcnMgdGhhdCBpdCB3YXMgaW5jb3JyZWN0bHkgcGFyc2luZyBhIDMyLWJpdCBhdHRyaWJ1dGUgYXMgYW4gOC1iaXQgYXR0cmlidXRlLCBhbmQgdGhhdCB0aGlzIGNvdWxkIGhhdmUgcmVzdWx0ZWQgaW4gb3V0LW9mLWJvdW5kcyByZWFkcyBvciBpbmNvcnJlY3QgZGF0YSwgZXNwZWNpYWxseSBpbiB0aGUgUlNTIGNvbmZpZ3VyYXRpb24gY29tbWFuZHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFVEhUT09MX05FVExJTksmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtldGhubF9yc3Nfc2V0JiMzNDssCiAgICAmIzM0O2V0aG5sX3Jzc19jcmVhdGVfZG9pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgZXRodG9vbCBuZXRsaW5rIGludGVyZmFjZSB3aGVyZSBhIDMyLWJpdCBhdHRyaWJ1dGUgd2FzIGluY29ycmVjdGx5IHBhcnNlZCBhcyBhbiA4LWJpdCBhdHRyaWJ1dGUsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBvciBpbmNvcnJlY3QgZGF0YS4gVGhpcyBhZmZlY3RzIHRoZSBSU1MgY29uZmlndXJhdGlvbiBjb21tYW5kcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVRIVE9PTF9ORVRMSU5LJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXRobmxfcnNzX3NldCYjMzQ7LAogICAgJiMzNDtldGhubF9yc3NfY3JlYXRlX2RvaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGV0aHRvb2wgbmV0bGluayBpbnRlcmZhY2Ugd2hlcmUgYSAzMi1iaXQgYXR0cmlidXRlIHdhcyBpbmNvcnJlY3RseSBwYXJzZWQgYXMgYW4gOC1iaXQgYXR0cmlidXRlLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgaW5jb3JyZWN0IGRhdGEuIFRoaXMgYWZmZWN0cyB0aGUgUlNTIGNvbmZpZ3VyYXRpb24gY29tbWFuZHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjoxOTowNC42ODkwMzM2NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MTAwNTU0MzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVUSFRPT0xfTkVUTElOS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV0aG5sX3Jzc19zZXRcIixcbiAgICBcImV0aG5sX3Jzc19jcmVhdGVfZG9pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBldGh0b29sIG5ldGxpbmsgaW50ZXJmYWNlIHdoZXJlIGEgMzItYml0IGF0dHJpYnV0ZSB3YXMgaW5jb3JyZWN0bHkgcGFyc2VkIGFzIGFuIDgtYml0IGF0dHJpYnV0ZSwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIGluY29ycmVjdCBkYXRhLiBUaGlzIGFmZmVjdHMgdGhlIFJTUyBjb25maWd1cmF0aW9uIGNvbW1hbmRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjoxOTowNC42ODkwNDEyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzgzMjEyMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjMzZhN2I2ZWZiNmNmMzYwYWYxZjRmN2FhN2ViMjFkOTZlMjNlYzgxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDYgMDY6MTk6MDMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2V0aHRvb2wvbmV0bGluay5oIGIvbmV0L2V0aHRvb2wvbmV0bGluay5oXFxuaW5kZXggZmQyMTk4ZTQ1ZDJiYmEuLjczM2ZiM2MzYTYzYTVkIDEwMDY0NFxcbi0tLSBhL25ldC9ldGh0b29sL25ldGxpbmsuaFxcbisrKyBiL25ldC9ldGh0b29sL25ldGxpbmsuaFxcbkBAIC0xMTUsNiArMTE1LDM0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBldGhubF91cGRhdGVfdTgodTggKmRzdCwgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcXG4gXFx0Km1vZCA9IHRydWU7XFxuIH1cXG4gXFxuKy8qKlxcbisgKiBldGhubF91cGRhdGVfdThfdTMyKCkgLSB1cGRhdGUgdTggdmFsdWUgZnJvbSBhbiBOTEFfVTMyIGF0dHJpYnV0ZVxcbisgKiBAZHN0OiAgdmFsdWUgdG8gdXBkYXRlXFxuKyAqIEBhdHRyOiBuZXRsaW5rIGF0dHJpYnV0ZSB3aXRoIG5ldyB2YWx1ZSBvciBudWxsXFxuKyAqIEBtb2Q6ICBwb2ludGVyIHRvIGJvb2wgZm9yIG1vZGlmaWNhdGlvbiB0cmFja2luZ1xcbisgKlxcbisgKiBTb21lIGF0dHJpYnV0ZXMgYXJlIE5MQV9VMzIgb24gdGhlIHdpcmUgYnV0IGFyZSBzdG9yZWQgaW4gYSB1OC4gUmVhZCB0aGVcXG4rICogZnVsbCAzMi1iaXQgdmFsdWUgZnJvbSBOTEFfVTMyIG5ldGxpbmsgYXR0cmlidXRlIEBhdHRyIGFuZCBuYXJyb3cgaXQgaW50b1xcbisgKiB0aGUgdTggcG9pbnRlZCB0byBieSBAZHN0OyBkbyBub3RoaW5nIGlmIEBhdHRyIGlzIG51bGwuXFxuKyAqIEJvb2wgcG9pbnRlZCB0byBieSBAbW9kIGlzIHNldCB0byB0cnVlIGlmIHRoaXMgZnVuY3Rpb24gY2hhbmdlZCB0aGUgdmFsdWVcXG4rICogb2YgKmRzdCwgb3RoZXJ3aXNlIGl0IGlzIGxlZnQgYXMgaXMuXFxuKyAqL1xcbitzdGF0aWMgaW5saW5lIHZvaWQgZXRobmxfdXBkYXRlX3U4X3UzMih1OCAqZHN0LCBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxcbitcXHRcXHRcXHRcXHQgICAgICAgYm9vbCAqbW9kKVxcbit7XFxuK1xcdHUzMiB2YWw7XFxuK1xcbitcXHRpZiAoIWF0dHIpXFxuK1xcdFxcdHJldHVybjtcXG4rXFx0dmFsID0gbmxhX2dldF91MzIoYXR0cik7XFxuK1xcdERFQlVHX05FVF9XQVJOX09OX09OQ0UodmFsIFxcdTAwM2UgVThfTUFYKTtcXG4rXFx0aWYgKCpkc3QgPT0gdmFsKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHQqZHN0ID0gdmFsO1xcbitcXHQqbW9kID0gdHJ1ZTtcXG4rfVxcbitcXG4gLyoqXFxuICAqIGV0aG5sX3VwZGF0ZV9ib29sMzIoKSAtIHVwZGF0ZSB1MzIgdXNlZCBhcyBib29sIGZyb20gTkxBX1U4IGF0dHJpYnV0ZVxcbiAgKiBAZHN0OiAgdmFsdWUgdG8gdXBkYXRlXFxuZGlmZiAtLWdpdCBhL25ldC9ldGh0b29sL3Jzcy5jIGIvbmV0L2V0aHRvb2wvcnNzLmNcXG5pbmRleCA1Mzc5MmY1M2Y5MjI5Zi4uY2E2ZWQxNTJjMmJlMzMgMTAwNjQ0XFxuLS0tIGEvbmV0L2V0aHRvb2wvcnNzLmNcXG4rKysgYi9uZXQvZXRodG9vbC9yc3MuY1xcbkBAIC01NzQsNyArNTc0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGV0aG5sX3Jzc19mbG93c19wb2xpY3lbXSA9IHtcXG4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZXRobmxfcnNzX3NldF9wb2xpY3lbRVRIVE9PTF9BX1JTU19GTE9XX0hBU0ggKyAxXSA9IHtcXG4gXFx0W0VUSFRPT0xfQV9SU1NfSEVBREVSXSA9IE5MQV9QT0xJQ1lfTkVTVEVEKGV0aG5sX2hlYWRlcl9wb2xpY3kpLFxcbiBcXHRbRVRIVE9PTF9BX1JTU19DT05URVhUXSA9IHsgLnR5cGUgPSBOTEFfVTMyLCB9LFxcbi1cXHRbRVRIVE9PTF9BX1JTU19IRlVOQ10gPSBOTEFfUE9MSUNZX01JTihOTEFfVTMyLCAxKSxcXG4rXFx0W0VUSFRPT0xfQV9SU1NfSEZVTkNdID0gTkxBX1BPTElDWV9SQU5HRShOTEFfVTMyLCAxLCBVOF9NQVgpLFxcbiBcXHRbRVRIVE9PTF9BX1JTU19JTkRJUl0gPSB7IC50eXBlID0gTkxBX0JJTkFSWSwgfSxcXG4gXFx0W0VUSFRPT0xfQV9SU1NfSEtFWV0gPSBOTEFfUE9MSUNZX01JTihOTEFfQklOQVJZLCAxKSxcXG4gXFx0W0VUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTV0gPVxcbkBAIC04NTUsNyArODU1LDcgQEAgZXRobmxfcnNzX3NldChzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9pbmZvLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbiBcXHRpbmRpcl9tb2QgPSAhIXRiW0VUSFRPT0xfQV9SU1NfSU5ESVJdO1xcbiBcXG4gXFx0cnhmaC5oZnVuYyA9IGRhdGEuaGZ1bmM7XFxuLVxcdGV0aG5sX3VwZGF0ZV91OChcXHUwMDI2cnhmaC5oZnVuYywgdGJbRVRIVE9PTF9BX1JTU19IRlVOQ10sIFxcdTAwMjZtb2QpO1xcbitcXHRldGhubF91cGRhdGVfdThfdTMyKFxcdTAwMjZyeGZoLmhmdW5jLCB0YltFVEhUT09MX0FfUlNTX0hGVU5DXSwgXFx1MDAyNm1vZCk7XFxuIFxcdGlmIChyeGZoLmhmdW5jID09IGRhdGEuaGZ1bmMpXFxuIFxcdFxcdHJ4ZmguaGZ1bmMgPSBFVEhfUlNTX0hBU0hfTk9fQ0hBTkdFO1xcbiBcXG5AQCAtODY0LDcgKzg2NCw4IEBAIGV0aG5sX3Jzc19zZXQoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfaW5mbywgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4gXFx0XFx0Z290byBleGl0X2ZyZWVfaW5kaXI7XFxuIFxcbiBcXHRyeGZoLmlucHV0X3hmcm0gPSBkYXRhLmlucHV0X3hmcm07XFxuLVxcdGV0aG5sX3VwZGF0ZV91OChcXHUwMDI2cnhmaC5pbnB1dF94ZnJtLCB0YltFVEhUT09MX0FfUlNTX0lOUFVUX1hGUk1dLCBcXHUwMDI2bW9kKTtcXG4rXFx0ZXRobmxfdXBkYXRlX3U4X3UzMihcXHUwMDI2cnhmaC5pbnB1dF94ZnJtLCB0YltFVEhUT09MX0FfUlNTX0lOUFVUX1hGUk1dLFxcbitcXHRcXHRcXHQgICAgXFx1MDAyNm1vZCk7XFxuIFxcdHhmcm1fc3ltID0gcnhmaC5pbnB1dF94ZnJtIHx8IGRhdGEuaW5wdXRfeGZybTtcXG4gXFx0aWYgKHJ4ZmguaW5wdXRfeGZybSA9PSBkYXRhLmlucHV0X3hmcm0pXFxuIFxcdFxcdHJ4ZmguaW5wdXRfeGZybSA9IFJYSF9YRlJNX05PX0NIQU5HRTtcXG5AQCAtOTM4LDcgKzkzOSw3IEBAIGNvbnN0IHN0cnVjdCBldGhubF9yZXF1ZXN0X29wcyBldGhubF9yc3NfcmVxdWVzdF9vcHMgPSB7XFxuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGV0aG5sX3Jzc19jcmVhdGVfcG9saWN5W0VUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTSArIDFdID0ge1xcbiBcXHRbRVRIVE9PTF9BX1JTU19IRUFERVJdXFx0PSBOTEFfUE9MSUNZX05FU1RFRChldGhubF9oZWFkZXJfcG9saWN5KSxcXG4gXFx0W0VUSFRPT0xfQV9SU1NfQ09OVEVYVF1cXHQ9IE5MQV9QT0xJQ1lfTUlOKE5MQV9VMzIsIDEpLFxcbi1cXHRbRVRIVE9PTF9BX1JTU19IRlVOQ11cXHQ9IE5MQV9QT0xJQ1lfTUlOKE5MQV9VMzIsIDEpLFxcbitcXHRbRVRIVE9PTF9BX1JTU19IRlVOQ11cXHQ9IE5MQV9QT0xJQ1lfUkFOR0UoTkxBX1UzMiwgMSwgVThfTUFYKSxcXG4gXFx0W0VUSFRPT0xfQV9SU1NfSU5ESVJdXFx0PSBOTEFfUE9MSUNZX01JTihOTEFfQklOQVJZLCAxKSxcXG4gXFx0W0VUSFRPT0xfQV9SU1NfSEtFWV1cXHQ9IE5MQV9QT0xJQ1lfTUlOKE5MQV9CSU5BUlksIDEpLFxcbiBcXHRbRVRIVE9PTF9BX1JTU19JTlBVVF9YRlJNXSA9XFxuQEAgLTEwNTQsMTQgKzEwNTUsMTUgQEAgaW50IGV0aG5sX3Jzc19jcmVhdGVfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbiBcXHRcXHRnb3RvIGV4aXRfY2xlYW5fZGF0YTtcXG4gXFx0aW5kaXJfdXNlcl9zaXplID0gcmV0O1xcbiBcXG4tXFx0ZXRobmxfdXBkYXRlX3U4KFxcdTAwMjZyeGZoLmhmdW5jLCB0YltFVEhUT09MX0FfUlNTX0hGVU5DXSwgXFx1MDAyNm1vZCk7XFxuK1xcdGV0aG5sX3VwZGF0ZV91OF91MzIoXFx1MDAyNnJ4ZmguaGZ1bmMsIHRiW0VUSFRPT0xfQV9SU1NfSEZVTkNdLCBcXHUwMDI2bW9kKTtcXG4gXFxuIFxcdHJldCA9IHJzc19zZXRfcHJlcF9oa2V5KGRldiwgaW5mbywgXFx1MDAyNmRhdGEsIFxcdTAwMjZyeGZoLCBcXHUwMDI2bW9kKTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0Z290byBleGl0X2ZyZWVfaW5kaXI7XFxuIFxcbiBcXHRyeGZoLmlucHV0X3hmcm0gPSBSWEhfWEZSTV9OT19DSEFOR0U7XFxuLVxcdGV0aG5sX3VwZGF0ZV91OChcXHUwMDI2cnhmaC5pbnB1dF94ZnJtLCB0YltFVEhUT09MX0FfUlNTX0lOUFVUX1hGUk1dLCBcXHUwMDI2bW9kKTtcXG4rXFx0ZXRobmxfdXBkYXRlX3U4X3UzMihcXHUwMDI2cnhmaC5pbnB1dF94ZnJtLCB0YltFVEhUT09MX0FfUlNTX0lOUFVUX1hGUk1dLFxcbitcXHRcXHRcXHQgICAgXFx1MDAyNm1vZCk7XFxuIFxcbiBcXHRjdHggPSBldGh0b29sX3J4ZmhfY3R4X2FsbG9jKG9wcywgZGF0YS5pbmRpcl9zaXplLCBkYXRhLmhrZXlfc2l6ZSk7XFxuIFxcdGlmICghY3R4KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjE5OjA1LjQ2ODI3OTAxNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzMjEyOTg4NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVRIVE9PTF9ORVRMSU5LXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXRobmxfcnNzX3NldFwiLFxuICAgIFwiZXRobmxfcnNzX2NyZWF0ZV9kb2l0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGV0aHRvb2wgbmV0bGluayBpbnRlcmZhY2Ugd2hlcmUgYSAzMi1iaXQgYXR0cmlidXRlIHdhcyBpbmNvcnJlY3RseSBwYXJzZWQgYXMgYW4gOC1iaXQgYXR0cmlidXRlLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgaW5jb3JyZWN0IGRhdGEuIFRoaXMgYWZmZWN0cyB0aGUgUlNTIGNvbmZpZ3VyYXRpb24gY29tbWFuZHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzM2YTdiNmVmYjZjZjM2MGFmMWY0ZjdhYTdlYjIxZDk2ZTIzZWM4MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDYgMDY6MTk6MDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvZXRodG9vbC9uZXRsaW5rLmggYi9uZXQvZXRodG9vbC9uZXRsaW5rLmhcbmluZGV4IGZkMjE5OGU0NWQyYmJhLi43MzNmYjNjM2E2M2E1ZCAxMDA2NDRcbi0tLSBhL25ldC9ldGh0b29sL25ldGxpbmsuaFxuKysrIGIvbmV0L2V0aHRvb2wvbmV0bGluay5oXG5AQCAtMTE1LDYgKzExNSwzNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXRobmxfdXBkYXRlX3U4KHU4ICpkc3QsIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXG4gXHQqbW9kID0gdHJ1ZTtcbiB9XG4gXG4rLyoqXG4rICogZXRobmxfdXBkYXRlX3U4X3UzMigpIC0gdXBkYXRlIHU4IHZhbHVlIGZyb20gYW4gTkxBX1UzMiBhdHRyaWJ1dGVcbisgKiBAZHN0OiAgdmFsdWUgdG8gdXBkYXRlXG4rICogQGF0dHI6IG5ldGxpbmsgYXR0cmlidXRlIHdpdGggbmV3IHZhbHVlIG9yIG51bGxcbisgKiBAbW9kOiAgcG9pbnRlciB0byBib29sIGZvciBtb2RpZmljYXRpb24gdHJhY2tpbmdcbisgKlxuKyAqIFNvbWUgYXR0cmlidXRlcyBhcmUgTkxBX1UzMiBvbiB0aGUgd2lyZSBidXQgYXJlIHN0b3JlZCBpbiBhIHU4LiBSZWFkIHRoZVxuKyAqIGZ1bGwgMzItYml0IHZhbHVlIGZyb20gTkxBX1UzMiBuZXRsaW5rIGF0dHJpYnV0ZSBAYXR0ciBhbmQgbmFycm93IGl0IGludG9cbisgKiB0aGUgdTggcG9pbnRlZCB0byBieSBAZHN0OyBkbyBub3RoaW5nIGlmIEBhdHRyIGlzIG51bGwuXG4rICogQm9vbCBwb2ludGVkIHRvIGJ5IEBtb2QgaXMgc2V0IHRvIHRydWUgaWYgdGhpcyBmdW5jdGlvbiBjaGFuZ2VkIHRoZSB2YWx1ZVxuKyAqIG9mICpkc3QsIG90aGVyd2lzZSBpdCBpcyBsZWZ0IGFzIGlzLlxuKyAqL1xuK3N0YXRpYyBpbmxpbmUgdm9pZCBldGhubF91cGRhdGVfdThfdTMyKHU4ICpkc3QsIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXG4rXHRcdFx0XHQgICAgICAgYm9vbCAqbW9kKVxuK3tcbitcdHUzMiB2YWw7XG4rXG4rXHRpZiAoIWF0dHIpXG4rXHRcdHJldHVybjtcbitcdHZhbCA9IG5sYV9nZXRfdTMyKGF0dHIpO1xuK1x0REVCVUdfTkVUX1dBUk5fT05fT05DRSh2YWwgXHUwMDNlIFU4X01BWCk7XG4rXHRpZiAoKmRzdCA9PSB2YWwpXG4rXHRcdHJldHVybjtcbitcbitcdCpkc3QgPSB2YWw7XG4rXHQqbW9kID0gdHJ1ZTtcbit9XG4rXG4gLyoqXG4gICogZXRobmxfdXBkYXRlX2Jvb2wzMigpIC0gdXBkYXRlIHUzMiB1c2VkIGFzIGJvb2wgZnJvbSBOTEFfVTggYXR0cmlidXRlXG4gICogQGRzdDogIHZhbHVlIHRvIHVwZGF0ZVxuZGlmZiAtLWdpdCBhL25ldC9ldGh0b29sL3Jzcy5jIGIvbmV0L2V0aHRvb2wvcnNzLmNcbmluZGV4IDUzNzkyZjUzZjkyMjlmLi5jYTZlZDE1MmMyYmUzMyAxMDA2NDRcbi0tLSBhL25ldC9ldGh0b29sL3Jzcy5jXG4rKysgYi9uZXQvZXRodG9vbC9yc3MuY1xuQEAgLTU3NCw3ICs1NzQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZXRobmxfcnNzX2Zsb3dzX3BvbGljeVtdID0ge1xuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGV0aG5sX3Jzc19zZXRfcG9saWN5W0VUSFRPT0xfQV9SU1NfRkxPV19IQVNIICsgMV0gPSB7XG4gXHRbRVRIVE9PTF9BX1JTU19IRUFERVJdID0gTkxBX1BPTElDWV9ORVNURUQoZXRobmxfaGVhZGVyX3BvbGljeSksXG4gXHRbRVRIVE9PTF9BX1JTU19DT05URVhUXSA9IHsgLnR5cGUgPSBOTEFfVTMyLCB9LFxuLVx0W0VUSFRPT0xfQV9SU1NfSEZVTkNdID0gTkxBX1BPTElDWV9NSU4oTkxBX1UzMiwgMSksXG4rXHRbRVRIVE9PTF9BX1JTU19IRlVOQ10gPSBOTEFfUE9MSUNZX1JBTkdFKE5MQV9VMzIsIDEsIFU4X01BWCksXG4gXHRbRVRIVE9PTF9BX1JTU19JTkRJUl0gPSB7IC50eXBlID0gTkxBX0JJTkFSWSwgfSxcbiBcdFtFVEhUT09MX0FfUlNTX0hLRVldID0gTkxBX1BPTElDWV9NSU4oTkxBX0JJTkFSWSwgMSksXG4gXHRbRVRIVE9PTF9BX1JTU19JTlBVVF9YRlJNXSA9XG5AQCAtODU1LDcgKzg1NSw3IEBAIGV0aG5sX3Jzc19zZXQoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfaW5mbywgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiBcdGluZGlyX21vZCA9ICEhdGJbRVRIVE9PTF9BX1JTU19JTkRJUl07XG4gXG4gXHRyeGZoLmhmdW5jID0gZGF0YS5oZnVuYztcbi1cdGV0aG5sX3VwZGF0ZV91OChcdTAwMjZyeGZoLmhmdW5jLCB0YltFVEhUT09MX0FfUlNTX0hGVU5DXSwgXHUwMDI2bW9kKTtcbitcdGV0aG5sX3VwZGF0ZV91OF91MzIoXHUwMDI2cnhmaC5oZnVuYywgdGJbRVRIVE9PTF9BX1JTU19IRlVOQ10sIFx1MDAyNm1vZCk7XG4gXHRpZiAocnhmaC5oZnVuYyA9PSBkYXRhLmhmdW5jKVxuIFx0XHRyeGZoLmhmdW5jID0gRVRIX1JTU19IQVNIX05PX0NIQU5HRTtcbiBcbkBAIC04NjQsNyArODY0LDggQEAgZXRobmxfcnNzX3NldChzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9pbmZvLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0XHRnb3RvIGV4aXRfZnJlZV9pbmRpcjtcbiBcbiBcdHJ4ZmguaW5wdXRfeGZybSA9IGRhdGEuaW5wdXRfeGZybTtcbi1cdGV0aG5sX3VwZGF0ZV91OChcdTAwMjZyeGZoLmlucHV0X3hmcm0sIHRiW0VUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTV0sIFx1MDAyNm1vZCk7XG4rXHRldGhubF91cGRhdGVfdThfdTMyKFx1MDAyNnJ4ZmguaW5wdXRfeGZybSwgdGJbRVRIVE9PTF9BX1JTU19JTlBVVF9YRlJNXSxcbitcdFx0XHQgICAgXHUwMDI2bW9kKTtcbiBcdHhmcm1fc3ltID0gcnhmaC5pbnB1dF94ZnJtIHx8IGRhdGEuaW5wdXRfeGZybTtcbiBcdGlmIChyeGZoLmlucHV0X3hmcm0gPT0gZGF0YS5pbnB1dF94ZnJtKVxuIFx0XHRyeGZoLmlucHV0X3hmcm0gPSBSWEhfWEZSTV9OT19DSEFOR0U7XG5AQCAtOTM4LDcgKzkzOSw3IEBAIGNvbnN0IHN0cnVjdCBldGhubF9yZXF1ZXN0X29wcyBldGhubF9yc3NfcmVxdWVzdF9vcHMgPSB7XG4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZXRobmxfcnNzX2NyZWF0ZV9wb2xpY3lbRVRIVE9PTF9BX1JTU19JTlBVVF9YRlJNICsgMV0gPSB7XG4gXHRbRVRIVE9PTF9BX1JTU19IRUFERVJdXHQ9IE5MQV9QT0xJQ1lfTkVTVEVEKGV0aG5sX2hlYWRlcl9wb2xpY3kpLFxuIFx0W0VUSFRPT0xfQV9SU1NfQ09OVEVYVF1cdD0gTkxBX1BPTElDWV9NSU4oTkxBX1UzMiwgMSksXG4tXHRbRVRIVE9PTF9BX1JTU19IRlVOQ11cdD0gTkxBX1BPTElDWV9NSU4oTkxBX1UzMiwgMSksXG4rXHRbRVRIVE9PTF9BX1JTU19IRlVOQ11cdD0gTkxBX1BPTElDWV9SQU5HRShOTEFfVTMyLCAxLCBVOF9NQVgpLFxuIFx0W0VUSFRPT0xfQV9SU1NfSU5ESVJdXHQ9IE5MQV9QT0xJQ1lfTUlOKE5MQV9CSU5BUlksIDEpLFxuIFx0W0VUSFRPT0xfQV9SU1NfSEtFWV1cdD0gTkxBX1BPTElDWV9NSU4oTkxBX0JJTkFSWSwgMSksXG4gXHRbRVRIVE9PTF9BX1JTU19JTlBVVF9YRlJNXSA9XG5AQCAtMTA1NCwxNCArMTA1NSwxNSBAQCBpbnQgZXRobmxfcnNzX2NyZWF0ZV9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXHRcdGdvdG8gZXhpdF9jbGVhbl9kYXRhO1xuIFx0aW5kaXJfdXNlcl9zaXplID0gcmV0O1xuIFxuLVx0ZXRobmxfdXBkYXRlX3U4KFx1MDAyNnJ4ZmguaGZ1bmMsIHRiW0VUSFRPT0xfQV9SU1NfSEZVTkNdLCBcdTAwMjZtb2QpO1xuK1x0ZXRobmxfdXBkYXRlX3U4X3UzMihcdTAwMjZyeGZoLmhmdW5jLCB0YltFVEhUT09MX0FfUlNTX0hGVU5DXSwgXHUwMDI2bW9kKTtcbiBcbiBcdHJldCA9IHJzc19zZXRfcHJlcF9oa2V5KGRldiwgaW5mbywgXHUwMDI2ZGF0YSwgXHUwMDI2cnhmaCwgXHUwMDI2bW9kKTtcbiBcdGlmIChyZXQpXG4gXHRcdGdvdG8gZXhpdF9mcmVlX2luZGlyO1xuIFxuIFx0cnhmaC5pbnB1dF94ZnJtID0gUlhIX1hGUk1fTk9fQ0hBTkdFO1xuLVx0ZXRobmxfdXBkYXRlX3U4KFx1MDAyNnJ4ZmguaW5wdXRfeGZybSwgdGJbRVRIVE9PTF9BX1JTU19JTlBVVF9YRlJNXSwgXHUwMDI2bW9kKTtcbitcdGV0aG5sX3VwZGF0ZV91OF91MzIoXHUwMDI2cnhmaC5pbnB1dF94ZnJtLCB0YltFVEhUT09MX0FfUlNTX0lOUFVUX1hGUk1dLFxuK1x0XHRcdCAgICBcdTAwMjZtb2QpO1xuIFxuIFx0Y3R4ID0gZXRodG9vbF9yeGZoX2N0eF9hbGxvYyhvcHMsIGRhdGEuaW5kaXJfc2l6ZSwgZGF0YS5oa2V5X3NpemUpO1xuIFx0aWYgKCFjdHgpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjE5OjA1LjQ2ODI4MDkxNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MjEyNjQzODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSU1MgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIHRvdWNoaW5nIGBuZXQvZXRodG9vbC9yc3MuY2AgYW5kIGBuZXQvZXRodG9vbC9uZXRsaW5rLmhgLiBSaWdodCBvZmYgdGhlIGJhdCwgaXQncyBpbnRyb2R1Y2luZyB0aGlzIG5ldyBmdW5jdGlvbiwgYGV0aG5sX3VwZGF0ZV91OF91MzJgLiBUaGUgbmFtZSBpcyBwcmV0dHkgc2VsZi1leHBsYW5hdG9yeSDigJMgaXQncyByZWFkaW5nIGEgMzItYml0IG5ldGxpbmsgYXR0cmlidXRlLCBgTkxBX1UzMmAsIGFuZCBzb21laG93IHN0b3JpbmcgdGhhdCBkYXRhIGludG8gYW4gOC1iaXQsIGB1OGAgdmFyaWFibGUuIFRoYXQncyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZywgYW5kIEknbSBndWVzc2luZyB0aGlzIGhhcyB0byBkbyB3aXRoIHNvbWUga2luZCBvZiB0eXBlIGNvbnZlcnNpb24gb3IgY29uc3RyYWludC5cblxuVGhlIHBhdGNoIHNlZW1zIHRvIGJlIHJlcGxhY2luZyB0aGUgb2xkZXIgYGV0aG5sX3VwZGF0ZV91OGAgd2l0aCB0aGlzIG5ldyBvbmUgaW4gYGV0aG5sX3Jzc19zZXRgIGFuZCBgZXRobmxfcnNzX2NyZWF0ZV9kb2l0YCDigJMgc3BlY2lmaWNhbGx5IGZvciBgRVRIVE9PTF9BX1JTU19IRlVOQ2AgYW5kIGBFVEhUT09MX0FfUlNTX0lOUFVUX1hGUk1gLiBUaGF0IHNpZ25hbHMgYSBkaXJlY3QgZnVuY3Rpb25hbCBjaGFuZ2UuIEFsc28sIHRoZSBwb2xpY3kgZGVmaW5pdGlvbnMsIGBldGhubF9yc3Nfc2V0X3BvbGljeWAgYW5kIGBldGhubF9yc3NfY3JlYXRlX3BvbGljeWAsIGFyZSBiZWluZyB1cGRhdGVkIHRvby4gSXQncyBzaGlmdGluZyB0aGUgcG9saWN5IGZvciBgRVRIVE9PTF9BX1JTU19IRlVOQ2AgZnJvbSBhIGBOTEFfUE9MSUNZX01JTihOTEFfVTMyLCAxKWAgdG8gYE5MQV9QT0xJQ1lfUkFOR0UoTkxBX1UzMiwgMSwgVThfTUFYKWAuIFRoZSBwb2xpY3kgc2hpZnQgc3Ryb25nbHkgaW5kaWNhdGVzIGEgZGF0YSB0eXBlIGlzc3VlIHdhcyBwcmVzZW50IGJlZm9yZS5cblxuQWgsIG9rYXksIEkgc2VlIGl0IG5vdy4gVGhpcyBpcyBhIGZpeCwgYSBidWdmaXggc3BlY2lmaWNhbGx5ISBUaGUgb3JpZ2luYWwgY29kZSB3YXMgdXNpbmcgYGV0aG5sX3VwZGF0ZV91OGAgb24gYW4gYXR0cmlidXRlIHRoYXQgKnNob3VsZCogaGF2ZSBiZWVuIGBOTEFfVTMyYCBmcm9tIHRoZSB3aXJlLCBhY2NvcmRpbmcgdG8gdGhlIGBOTEFfUE9MSUNZX01JTihOTEFfVTMyLCAxKWAgcG9saWN5IGZvciBgRVRIVE9PTF9BX1JTU19IRlVOQ2AuIFVzaW5nIGBldGhubF91cGRhdGVfdThgIGluIHRoYXQgc2NlbmFyaW8gaXMgaW5oZXJlbnRseSB3cm9uZzsgaXQgZXhwZWN0cyBhbiBgTkxBX1U4YCwgYW5kIGlmIHdlIGZlZWQgaXQgYSAzMi1iaXQgdmFsdWUsIGl0IHdvdWxkIGVpdGhlciByZWFkIGdhcmJhZ2Ugb3IgcG90ZW50aWFsbHkgY2F1c2UgYW4gb3V0LW9mLWJvdW5kcyByZWFkLiBUaGlzIGNoYW5nZSByZWN0aWZpZXMgdGhhdC5cblxuTm93LCBiZWZvcmUgSSBzaWduIG9mZiBvbiB0aGlzLCBJIG5lZWQgdG8gdmVyaWZ5IGEgY291cGxlIG9mIHRoaW5ncywgYXMgdGhpcyB0b3VjaGVzIGNvcmUgbmV0d29ya2luZy4gTGV0J3MgbWFrZSBzdXJlIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGluIG9yZGVyLiBFVEhUT09MIG5ldGxpbmsgaXMgdHlwaWNhbGx5IHBhcnQgb2YgdGhlIGNvcmUgbmV0d29yayBzdGFjay4gU28sIGl0J3MgZWl0aGVyIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBjb250cm9sbGVkIGJ5IGBDT05GSUdfRVRIVE9PTF9ORVRMSU5LYC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIGBuZXQvZXRodG9vbC9LY29uZmlnYCBvciBtYXliZSBgbmV0L0tjb25maWdgIHRvIGNvbmZpcm0gdGhlcmUgYXJlbid0IGFueSB3ZWlyZCBjb25maWcgZGVwZW5kZW5jaWVzIHRoYXQgY291bGQgYmUgaW1wYWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MjAsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjoxOToxMi4yODk1NDcyODdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU1Mjc5ODkxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfRVRIVE9PTF9ORVRMSU5LXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvb3BlbnJpc2MvY29uZmlncy9vcjFrbGl0ZXhfZGVmY29uZmlnPTIyPUNPTkZJR19JTkVUX1JBV19ESUFHPXlcXG5hcmNoL29wZW5yaXNjL2NvbmZpZ3Mvb3Ixa2xpdGV4X2RlZmNvbmZpZy0yMy0jIENPTkZJR19XSVJFTEVTUyBpcyBub3Qgc2V0XFxuYXJjaC9vcGVucmlzYy9jb25maWdzL29yMWtsaXRleF9kZWZjb25maWc6MjQ6IyBDT05GSUdfRVRIVE9PTF9ORVRMSU5LIGlzIG5vdCBzZXRcXG5hcmNoL29wZW5yaXNjL2NvbmZpZ3Mvb3Ixa2xpdGV4X2RlZmNvbmZpZy0yNS1DT05GSUdfREVWVE1QRlM9eVxcbi0tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvemZjcGR1bXBfZGVmY29uZmlnPTI5PUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvemZjcGR1bXBfZGVmY29uZmlnLTMxLSMgQ09ORklHX1BDUFVfREVWX1JFRkNOVCBpcyBub3Qgc2V0XFxuYXJjaC9zMzkwL2NvbmZpZ3MvemZjcGR1bXBfZGVmY29uZmlnOjMyOiMgQ09ORklHX0VUSFRPT0xfTkVUTElOSyBpcyBub3Qgc2V0XFxuYXJjaC9zMzkwL2NvbmZpZ3MvemZjcGR1bXBfZGVmY29uZmlnLTMzLUNPTkZJR19ERVZUTVBGUz15XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2xfbmV0bGluay5oPTIwPXN0cnVjdCBwaHlfZGV2aWNlO1xcbmluY2x1ZGUvbGludXgvZXRodG9vbF9uZXRsaW5rLmgtMjEtXFxuaW5jbHVkZS9saW51eC9ldGh0b29sX25ldGxpbmsuaDoyMjojaWYgSVNfRU5BQkxFRChDT05GSUdfRVRIVE9PTF9ORVRMSU5LKVxcbmluY2x1ZGUvbGludXgvZXRodG9vbF9uZXRsaW5rLmgtMjMtaW50IGV0aG5sX2NhYmxlX3Rlc3RfYWxsb2Moc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggY21kKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvZXRodG9vbF9uZXRsaW5rLmg9MTI1PXN0YXRpYyBpbmxpbmUgdm9pZCBldGhubF9wc2Vfc2VuZF9udGYoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmluY2x1ZGUvbGludXgvZXRodG9vbF9uZXRsaW5rLmgtMTI5LVxcbmluY2x1ZGUvbGludXgvZXRodG9vbF9uZXRsaW5rLmg6MTMwOiNlbmRpZiAvKiBJU19FTkFCTEVEKENPTkZJR19FVEhUT09MX05FVExJTkspICovXFxuaW5jbHVkZS9saW51eC9ldGh0b29sX25ldGxpbmsuaC0xMzEtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTUyODE9dm9pZCBuZXRkZXZfYm9uZGluZ19pbmZvX2NoYW5nZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01MjgzLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6NTI4NDojaWYgSVNfRU5BQkxFRChDT05GSUdfRVRIVE9PTF9ORVRMSU5LKVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTI4NS12b2lkIGV0aHRvb2xfbm90aWZ5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBjbWQpO1xcbi0tXFxubmV0L2V0aHRvb2wvTWFrZWZpbGU9Mz1vYmoteVxcdFxcdFxcdFxcdCs9IGlvY3RsLm8gY29tbW9uLm9cXG5uZXQvZXRodG9vbC9NYWtlZmlsZS00LVxcbm5ldC9ldGh0b29sL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX0VUSFRPT0xfTkVUTElOSylcXHQrPSBldGh0b29sX25sLm9cXG5uZXQvZXRodG9vbC9NYWtlZmlsZS02LVxcbi0tXFxubmV0L2V0aHRvb2wvY29tbW9uLmg9ODE9Ym9vbCBfX2V0aHRvb2xfZGV2X21tX3N1cHBvcnRlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG5uZXQvZXRodG9vbC9jb21tb24uaC04Mi1cXG5uZXQvZXRodG9vbC9jb21tb24uaDo4MzojaWYgSVNfRU5BQkxFRChDT05GSUdfRVRIVE9PTF9ORVRMSU5LKVxcbm5ldC9ldGh0b29sL2NvbW1vbi5oLTg0LXZvaWQgZXRodG9vbF9yc3Nfbm90aWZ5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiB0eXBlLCB1MzIgcnNzX2NvbnRleHQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjoxOToxNC44NDIzNTI5ODhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzUzNzEyNzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgQ09ORklHX0VUSFRPT0xfTkVUTElOS2AgQ29uZmlndXJhdGlvbiBPcHRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIHJldm9sdmVzIGFyb3VuZCBgQ09ORklHX0VUSFRPT0xfTkVUTElOS2AuIFJpZ2h0LCB0aGF0J3MgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIEkgbmVlZCB0byB2ZXJpZnkuIE15IGZpcnN0IG1vdmUgaXMgYWx3YXlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UuIFRoZSBgbmV0L0tjb25maWdgIGZpbGUgaXMgdGhlIGRlZmluaXRpdmUgYXV0aG9yaXR5IG9uIHRoZXNlIHNldHRpbmdzLiBJIG5lZWQgdG8gcXVpY2tseSBjb25maXJtIGl0cyBleGlzdGVuY2UgYW5kLCBtb3JlIGltcG9ydGFudGx5LCB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMgYW5kIGltcGxpY2F0aW9ucyBiZWZvcmUgSSBnbyBhbnkgZnVydGhlci4gR290dGEgbWFrZSBzdXJlIHRoaXMgdGhpbmcncyBldmVuIGRlZmluZWQsIG9yIGlmIHRoZXJlJ3Mgc29tZSBjb25kaXRpb25hbCBsb2dpYyBJIG5lZWQgdG8gY29uc2lkZXIuIExldCdzIHNlZSB3aGF0IGBuZXQvS2NvbmZpZ2AgaGFzIHRvIHNheS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM0OCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjE5OjE4LjU5NjA2ODMzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NzIyNTgxNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEVUSFRPT0xfTkVUTElOS1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvS2NvbmZpZz01MDg9Y29uZmlnIEZBSUxPVkVSXFxuLS1cXG5uZXQvS2NvbmZpZy01MjAtXFxubmV0L0tjb25maWc6NTIxOmNvbmZpZyBFVEhUT09MX05FVExJTktcXG5uZXQvS2NvbmZpZy01MjItXFx0Ym9vbCBcXFwiTmV0bGluayBpbnRlcmZhY2UgZm9yIGV0aHRvb2xcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjE5OjIxLjA2ODMzMjM3OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NTc0Mjg3ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgRVRIVE9PTF9ORVRMSU5LIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBgRVRIVE9PTF9ORVRMSU5LYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gaGVyZS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCB3aGljaCBmdW5jdGlvbnMgYXJlIHRoZSBtb3N0IHByb21pc2luZyBjYW5kaWRhdGVzIGZvciBmdXp6aW5nPyBCYXNlZCBvbiB0aGUgY2hhbmdlcywgaXQgbG9va3MgbGlrZSBgZXRobmxfcnNzX3NldGAgYW5kIGBldGhubF9yc3NfY3JlYXRlX2RvaXRgIGFyZSB0aGUgcHJpbWFyeSB0YXJnZXRzLiBCdXQgaXQncyB3b3J0aCBhIHF1aWNrIGF1ZGl0IHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIHRoYXQgbWlnaHQgYmUgaW50ZXJlc3RpbmcuIEFoLCByaWdodCwgdGhlcmUncyBgZXRobmxfdXBkYXRlX3U4X3UzMmAsIHdoaWNoIGlzIGEgc3RhdGljIGlubGluZSBmdW5jdGlvbiBkZWZpbmVkIGluIGBuZXQvZXRodG9vbC9uZXRsaW5rLmhgLiBBbmQsIGFzIHN1c3BlY3RlZCwgdGhhdCdzIGNhbGxlZCBkaXJlY3RseSBieSB0aGUgdHdvIGZ1bmN0aW9ucyBJIGFscmVhZHkgaWRlbnRpZmllZDogYGV0aG5sX3Jzc19zZXRgIGFuZCBgZXRobmxfcnNzX2NyZWF0ZV9kb2l0YC4gU28sIGZ1enppbmcgYGV0aG5sX3Jzc19zZXRgIGFuZCBgZXRobmxfcnNzX2NyZWF0ZV9kb2l0YCwgZWZmZWN0aXZlbHkgY292ZXJzIHRoZSBzdGF0aWMgaW5saW5lIGFzIHdlbGwuIEdvb2QuIFRoYXQncyBhIGZvY3VzZWQgc3RhcnRpbmcgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2MzQsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6MTk6MjQuOTI1NzY0MjYxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNTgwOTk5NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXRobmxfcnNzX3NldFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvZXRodG9vbC9uZXRsaW5rLmM9MTEzNT1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfb3BzIGV0aHRvb2xfZ2VubF9vcHNbXSA9IHtcXG4tLVxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNTIyLVxcdFxcdC5kb2l0XFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxNTIzOlxcdFxcdC5wb2xpY3kgPSBldGhubF9yc3Nfc2V0X3BvbGljeSxcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6MTUyNDpcXHRcXHQubWF4YXR0ciA9IEFSUkFZX1NJWkUoZXRobmxfcnNzX3NldF9wb2xpY3kpIC0gMSxcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTUyNS1cXHR9LFxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5oPTUxNz1leHRlcm4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZXRobmxfcnNzX2dldF9wb2xpY3lbRVRIVE9PTF9BX1JTU19TVEFSVF9DT05URVhUICsgMV07XFxubmV0L2V0aHRvb2wvbmV0bGluay5oOjUxODpleHRlcm4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZXRobmxfcnNzX3NldF9wb2xpY3lbRVRIVE9PTF9BX1JTU19GTE9XX0hBU0ggKyAxXTtcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmgtNTE5LWV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBldGhubF9yc3NfY3JlYXRlX3BvbGljeVtFVEhUT09MX0FfUlNTX0lOUFVUX1hGUk0gKyAxXTtcXG4tLVxcbm5ldC9ldGh0b29sL3Jzcy5jPTU0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZXRobmxfcnNzX2Zsb3dzX3BvbGljeVtdID0ge1xcbi0tXFxubmV0L2V0aHRvb2wvcnNzLmMtNTczLVxcbm5ldC9ldGh0b29sL3Jzcy5jOjU3NDpjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBldGhubF9yc3Nfc2V0X3BvbGljeVtFVEhUT09MX0FfUlNTX0ZMT1dfSEFTSCArIDFdID0ge1xcbm5ldC9ldGh0b29sL3Jzcy5jLTU3NS1cXHRbRVRIVE9PTF9BX1JTU19IRUFERVJdID0gTkxBX1BPTElDWV9ORVNURUQoZXRobmxfaGVhZGVyX3BvbGljeSksXFxuLS1cXG5uZXQvZXRodG9vbC9yc3MuYz01ODU9c3RhdGljIGludFxcbm5ldC9ldGh0b29sL3Jzcy5jOjU4NjpldGhubF9yc3Nfc2V0X3ZhbGlkYXRlKHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2luZm8sIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxubmV0L2V0aHRvb2wvcnNzLmMtNTg3LXtcXG4tLVxcbm5ldC9ldGh0b29sL3Jzcy5jPTgyNz1zdGF0aWMgaW50XFxubmV0L2V0aHRvb2wvcnNzLmM6ODI4OmV0aG5sX3Jzc19zZXQoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfaW5mbywgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvZXRodG9vbC9yc3MuYy04Mjkte1xcbi0tXFxubmV0L2V0aHRvb2wvcnNzLmM9OTE5PWNvbnN0IHN0cnVjdCBldGhubF9yZXF1ZXN0X29wcyBldGhubF9yc3NfcmVxdWVzdF9vcHMgPSB7XFxuLS1cXG5uZXQvZXRodG9vbC9yc3MuYy05MzEtXFxubmV0L2V0aHRvb2wvcnNzLmM6OTMyOlxcdC5zZXRfdmFsaWRhdGVcXHRcXHQ9IGV0aG5sX3Jzc19zZXRfdmFsaWRhdGUsXFxubmV0L2V0aHRvb2wvcnNzLmM6OTMzOlxcdC5zZXRcXHRcXHRcXHQ9IGV0aG5sX3Jzc19zZXQsXFxubmV0L2V0aHRvb2wvcnNzLmMtOTM0LVxcdC5zZXRfbnRmX2NtZFxcdFxcdD0gRVRIVE9PTF9NU0dfUlNTX05URixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6MTk6MjcuMjgzODY5NTc4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4MDEyNjEwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgZnVuY3Rpb25zLlxuXG4qKkRlY29uc3RydWN0aW5nIHRoZSBSU1MgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIG15IGZvY3VzIGhlcmUgaXMgb24gdW5kZXJzdGFuZGluZyBob3cgUlNTIGlzIGJlaW5nIHNldCB1cCB3aXRoaW4gdGhpcyBzeXN0ZW0uIEkgc2VlIGBldGhubF9yc3Nfc2V0YCBhbmQgYGV0aG5sX3Jzc19jcmVhdGVfZG9pdGAg4oCTIHRob3NlIGFyZSB0aGUga2V5IHBsYXllcnMsIHJpZ2h0PyBNeSBpbnN0aW5jdCBpcyB0byBkaXZlIGRpcmVjdGx5IGludG8gYGV0aG5sX3Jzc19jcmVhdGVfZG9pdGAuIEl0IHNvdW5kcyBsaWtlIHRoZSBcImRvZXJcIiBvZiB0aGUgY3JlYXRpb24gcHJvY2Vzcywgc28gaXQgd2lsbCBsaWtlbHkgaG9sZCB0aGUgY29yZSBsb2dpYyBJJ20gaW50ZXJlc3RlZCBpbi4gTGV0J3Mgc2VlIHdoYXQgaW5mb3JtYXRpb24gSSBjYW4gZ2xlYW4gZnJvbSB0aGVyZS4gSSdtIGdvaW5nIHRvIHN0YXJ0IHB1bGxpbmcgdGhhdCBhcGFydCBpbiBteSBtaW5kLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NTIsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjoxOTozMC40NjM5OTgyNTdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MDEwNjQ4NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXRobmxfcnNzX2NyZWF0ZV9kb2l0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9ldGh0b29sL25ldGxpbmsuYz0xMTM1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9vcHMgZXRodG9vbF9nZW5sX29wc1tdID0ge1xcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTE1MjgtXFx0XFx0LmZsYWdzXFx0PSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxNTI5OlxcdFxcdC5kb2l0XFx0PSBldGhubF9yc3NfY3JlYXRlX2RvaXQsXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTE1MzAtXFx0XFx0LnBvbGljeVxcdD0gZXRobmxfcnNzX2NyZWF0ZV9wb2xpY3ksXFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmg9NTQzPWludCBldGhubF90c2luZm9fZG9uZShzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpO1xcbm5ldC9ldGh0b29sL25ldGxpbmsuaDo1NDQ6aW50IGV0aG5sX3Jzc19jcmVhdGVfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKTtcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmgtNTQ1LWludCBldGhubF9yc3NfZGVsZXRlX2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XFxuLS1cXG5uZXQvZXRodG9vbC9yc3MuYz05ODY9ZXRobmxfcnNzX2NyZWF0ZV9zZW5kX250Zihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqcnNwLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L2V0aHRvb2wvcnNzLmMtMTAwNi1cXG5uZXQvZXRodG9vbC9yc3MuYzoxMDA3OmludCBldGhubF9yc3NfY3JlYXRlX2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvZXRodG9vbC9yc3MuYy0xMDA4LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6MTk6MzMuMDY1MDY4NDA0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1OTc0NDQwODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRVRIVE9PTCBOZXRsaW5rIEJ1ZyoqXG5cbk9rYXksIHNvIEkndmUgcGlucG9pbnRlZCB0aGUgYnVnOiBpdCdzIHdpdGhpbiB0aGUgbmV0bGluayBwYXJzaW5nLCBzcGVjaWZpY2FsbHkgaG93IGBFVEhUT09MX0FfUlNTX0hGVU5DYCBhbmQgYEVUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTWAgYXJlIGhhbmRsZWQuIFRoZSBwYXRjaCB1c2VzIGBldGhubF91cGRhdGVfdThfdTMyYCB0byBjb3JyZWN0IHRoaXMuIFRoaXMgZnVuY3Rpb24gcmVhZHMgYSAzMi1iaXQgdmFsdWUgYW5kIHRoZW4gc3RvcmVzIGl0IGludG8gYW4gOC1iaXQsIHdoaWNoIGlzIHRoZSByb290IGNhdXNlIG9mIHRoaXMgZXJyb3IuIFNvdW5kcyBsaWtlIGEgY2xhc3NpYyBjYXNlIG9mIHR5cGUgY29uZnVzaW9uIGxlYWRpbmcgdG8gcG90ZW50aWFsIG1lbW9yeSBpc3N1ZXMuXG5cbkdpdmVuIHRoZSBmaXgsIHRoaXMgaXMgKmFic29sdXRlbHkqIHdvcnRoIGZ1enppbmcuIEkgbmVlZCB0byBmb2N1cyBteSBlZmZvcnRzIG9uIGBldGhubF9yc3Nfc2V0YCBhbmQgYGV0aG5sX3Jzc19jcmVhdGVfZG9pdGAuIFRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIEkgd2FudCB0byB0YXJnZXQgd2l0aCBteSBmdXp6aW5nIGNhbXBhaWduLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIGNvbmZpcm0gdGhlIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb24uIEFoLCB5ZXMsIGBFVEhUT09MX05FVExJTktgIGlzIHRoZSByZWxldmFudCBjb25maWcuIE5vdGhpbmcgZWxzZSBpcyBuZWVkZWQuXG5cbkVzc2VudGlhbGx5LCB0aGUgcGF0Y2ggaXMgZml4aW5nIGEgdnVsbmVyYWJpbGl0eSBpbiB0aGUgRVRIVE9PTCBuZXRsaW5rIGludGVyZmFjZS4gSXQgYXBwZWFycyB0aGF0IGl0IHdhcyBpbmNvcnJlY3RseSBwYXJzaW5nIGEgMzItYml0IGF0dHJpYnV0ZSBhcyBhbiA4LWJpdCBhdHRyaWJ1dGUsIGFuZCB0aGF0IHRoaXMgY291bGQgaGF2ZSByZXN1bHRlZCBpbiBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIGluY29ycmVjdCBkYXRhLCBlc3BlY2lhbGx5IGluIHRoZSBSU1MgY29uZmlndXJhdGlvbiBjb21tYW5kcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM0NSwiT3V0cHV0VG9rZW5zIjoxMTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6MTk6MzguNjYyNTE1Njk2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI3MDU3MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFVEhUT09MX05FVExJTktcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJldGhubF9yc3Nfc2V0XCIsXG4gICAgXCJldGhubF9yc3NfY3JlYXRlX2RvaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgZXRodG9vbCBuZXRsaW5rIGludGVyZmFjZSB3aGVyZSBhIDMyLWJpdCBhdHRyaWJ1dGUgd2FzIGluY29ycmVjdGx5IHBhcnNlZCBhcyBhbiA4LWJpdCBhdHRyaWJ1dGUsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBvciBpbmNvcnJlY3QgZGF0YS4gVGhpcyBhZmZlY3RzIHRoZSBSU1MgY29uZmlndXJhdGlvbiBjb21tYW5kcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFVEhUT09MX05FVExJTktcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJldGhubF9yc3Nfc2V0XCIsXG4gICAgXCJldGhubF9yc3NfY3JlYXRlX2RvaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgZXRodG9vbCBuZXRsaW5rIGludGVyZmFjZSB3aGVyZSBhIDMyLWJpdCBhdHRyaWJ1dGUgd2FzIGluY29ycmVjdGx5IHBhcnNlZCBhcyBhbiA4LWJpdCBhdHRyaWJ1dGUsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBvciBpbmNvcnJlY3QgZGF0YS4gVGhpcyBhZmZlY3RzIHRoZSBSU1MgY29uZmlndXJhdGlvbiBjb21tYW5kcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowvqpqd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-06 06:00:37 +0000 UTC FinishedAt: 2026-07-06 06:19:39 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "7ddbf1cde4a03e36e17d06fbc711870eb0b256d7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ETHTOOL_NETLINK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "7ddbf1cde4a03e36e17d06fbc711870eb0b256d7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ETHTOOL_NETLINK" ], "series_id": "31de78ce-e39d-4367-a224-95a69342ac2d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ethnl_rss_set", "ethnl_rss_create_doit" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VUSFRPT0xfTkVUTElOSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V0aG5sX3Jzc19zZXQmIzM0OywKICAgICYjMzQ7ZXRobmxfcnNzX2NyZWF0ZV9kb2l0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBldGh0b29sIG5ldGxpbmsgaW50ZXJmYWNlIHdoZXJlIGEgMzItYml0IGF0dHJpYnV0ZSB3YXMgaW5jb3JyZWN0bHkgcGFyc2VkIGFzIGFuIDgtYml0IGF0dHJpYnV0ZSwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIGluY29ycmVjdCBkYXRhLiBUaGlzIGFmZmVjdHMgdGhlIFJTUyBjb25maWd1cmF0aW9uIGNvbW1hbmRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYzM2YTdiNmVmYjZjZjM2MGFmMWY0ZjdhYTdlYjIxZDk2ZTIzZWM4MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDYgMDY6MTk6MDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2V0aHRvb2wvbmV0bGluay5oIGIvbmV0L2V0aHRvb2wvbmV0bGluay5oXG5pbmRleCBmZDIxOThlNDVkMmJiYS4uNzMzZmIzYzNhNjNhNWQgMTAwNjQ0XG4tLS0gYS9uZXQvZXRodG9vbC9uZXRsaW5rLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9ldGh0b29sL25ldGxpbmsuaFxuQEAgLTExNSw2ICYjNDM7MTE1LDM0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBldGhubF91cGRhdGVfdTgodTggKmRzdCwgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcbiBcdCptb2QgPSB0cnVlO1xuIH1cbiBcbiYjNDM7LyoqXG4mIzQzOyAqIGV0aG5sX3VwZGF0ZV91OF91MzIoKSAtIHVwZGF0ZSB1OCB2YWx1ZSBmcm9tIGFuIE5MQV9VMzIgYXR0cmlidXRlXG4mIzQzOyAqIEBkc3Q6ICB2YWx1ZSB0byB1cGRhdGVcbiYjNDM7ICogQGF0dHI6IG5ldGxpbmsgYXR0cmlidXRlIHdpdGggbmV3IHZhbHVlIG9yIG51bGxcbiYjNDM7ICogQG1vZDogIHBvaW50ZXIgdG8gYm9vbCBmb3IgbW9kaWZpY2F0aW9uIHRyYWNraW5nXG4mIzQzOyAqXG4mIzQzOyAqIFNvbWUgYXR0cmlidXRlcyBhcmUgTkxBX1UzMiBvbiB0aGUgd2lyZSBidXQgYXJlIHN0b3JlZCBpbiBhIHU4LiBSZWFkIHRoZVxuJiM0MzsgKiBmdWxsIDMyLWJpdCB2YWx1ZSBmcm9tIE5MQV9VMzIgbmV0bGluayBhdHRyaWJ1dGUgQGF0dHIgYW5kIG5hcnJvdyBpdCBpbnRvXG4mIzQzOyAqIHRoZSB1OCBwb2ludGVkIHRvIGJ5IEBkc3Q7IGRvIG5vdGhpbmcgaWYgQGF0dHIgaXMgbnVsbC5cbiYjNDM7ICogQm9vbCBwb2ludGVkIHRvIGJ5IEBtb2QgaXMgc2V0IHRvIHRydWUgaWYgdGhpcyBmdW5jdGlvbiBjaGFuZ2VkIHRoZSB2YWx1ZVxuJiM0MzsgKiBvZiAqZHN0LCBvdGhlcndpc2UgaXQgaXMgbGVmdCBhcyBpcy5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBldGhubF91cGRhdGVfdThfdTMyKHU4ICpkc3QsIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXG4mIzQzO1x0XHRcdFx0ICAgICAgIGJvb2wgKm1vZClcbiYjNDM7e1xuJiM0MztcdHUzMiB2YWw7XG4mIzQzO1xuJiM0MztcdGlmICghYXR0cilcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR2YWwgPSBubGFfZ2V0X3UzMihhdHRyKTtcbiYjNDM7XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHZhbCBcdTAwM2UgVThfTUFYKTtcbiYjNDM7XHRpZiAoKmRzdCA9PSB2YWwpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdCpkc3QgPSB2YWw7XG4mIzQzO1x0Km1vZCA9IHRydWU7XG4mIzQzO31cbiYjNDM7XG4gLyoqXG4gICogZXRobmxfdXBkYXRlX2Jvb2wzMigpIC0gdXBkYXRlIHUzMiB1c2VkIGFzIGJvb2wgZnJvbSBOTEFfVTggYXR0cmlidXRlXG4gICogQGRzdDogIHZhbHVlIHRvIHVwZGF0ZVxuZGlmZiAtLWdpdCBhL25ldC9ldGh0b29sL3Jzcy5jIGIvbmV0L2V0aHRvb2wvcnNzLmNcbmluZGV4IDUzNzkyZjUzZjkyMjlmLi5jYTZlZDE1MmMyYmUzMyAxMDA2NDRcbi0tLSBhL25ldC9ldGh0b29sL3Jzcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvZXRodG9vbC9yc3MuY1xuQEAgLTU3NCw3ICYjNDM7NTc0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGV0aG5sX3Jzc19mbG93c19wb2xpY3lbXSA9IHtcbiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBldGhubF9yc3Nfc2V0X3BvbGljeVtFVEhUT09MX0FfUlNTX0ZMT1dfSEFTSCAmIzQzOyAxXSA9IHtcbiBcdFtFVEhUT09MX0FfUlNTX0hFQURFUl0gPSBOTEFfUE9MSUNZX05FU1RFRChldGhubF9oZWFkZXJfcG9saWN5KSxcbiBcdFtFVEhUT09MX0FfUlNTX0NPTlRFWFRdID0geyAudHlwZSA9IE5MQV9VMzIsIH0sXG4tXHRbRVRIVE9PTF9BX1JTU19IRlVOQ10gPSBOTEFfUE9MSUNZX01JTihOTEFfVTMyLCAxKSxcbiYjNDM7XHRbRVRIVE9PTF9BX1JTU19IRlVOQ10gPSBOTEFfUE9MSUNZX1JBTkdFKE5MQV9VMzIsIDEsIFU4X01BWCksXG4gXHRbRVRIVE9PTF9BX1JTU19JTkRJUl0gPSB7IC50eXBlID0gTkxBX0JJTkFSWSwgfSxcbiBcdFtFVEhUT09MX0FfUlNTX0hLRVldID0gTkxBX1BPTElDWV9NSU4oTkxBX0JJTkFSWSwgMSksXG4gXHRbRVRIVE9PTF9BX1JTU19JTlBVVF9YRlJNXSA9XG5AQCAtODU1LDcgJiM0Mzs4NTUsNyBAQCBldGhubF9yc3Nfc2V0KHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2luZm8sIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXHRpbmRpcl9tb2QgPSAhIXRiW0VUSFRPT0xfQV9SU1NfSU5ESVJdO1xuIFxuIFx0cnhmaC5oZnVuYyA9IGRhdGEuaGZ1bmM7XG4tXHRldGhubF91cGRhdGVfdTgoXHUwMDI2cnhmaC5oZnVuYywgdGJbRVRIVE9PTF9BX1JTU19IRlVOQ10sIFx1MDAyNm1vZCk7XG4mIzQzO1x0ZXRobmxfdXBkYXRlX3U4X3UzMihcdTAwMjZyeGZoLmhmdW5jLCB0YltFVEhUT09MX0FfUlNTX0hGVU5DXSwgXHUwMDI2bW9kKTtcbiBcdGlmIChyeGZoLmhmdW5jID09IGRhdGEuaGZ1bmMpXG4gXHRcdHJ4ZmguaGZ1bmMgPSBFVEhfUlNTX0hBU0hfTk9fQ0hBTkdFO1xuIFxuQEAgLTg2NCw3ICYjNDM7ODY0LDggQEAgZXRobmxfcnNzX3NldChzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9pbmZvLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0XHRnb3RvIGV4aXRfZnJlZV9pbmRpcjtcbiBcbiBcdHJ4ZmguaW5wdXRfeGZybSA9IGRhdGEuaW5wdXRfeGZybTtcbi1cdGV0aG5sX3VwZGF0ZV91OChcdTAwMjZyeGZoLmlucHV0X3hmcm0sIHRiW0VUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTV0sIFx1MDAyNm1vZCk7XG4mIzQzO1x0ZXRobmxfdXBkYXRlX3U4X3UzMihcdTAwMjZyeGZoLmlucHV0X3hmcm0sIHRiW0VUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTV0sXG4mIzQzO1x0XHRcdCAgICBcdTAwMjZtb2QpO1xuIFx0eGZybV9zeW0gPSByeGZoLmlucHV0X3hmcm0gfHwgZGF0YS5pbnB1dF94ZnJtO1xuIFx0aWYgKHJ4ZmguaW5wdXRfeGZybSA9PSBkYXRhLmlucHV0X3hmcm0pXG4gXHRcdHJ4ZmguaW5wdXRfeGZybSA9IFJYSF9YRlJNX05PX0NIQU5HRTtcbkBAIC05MzgsNyAmIzQzOzkzOSw3IEBAIGNvbnN0IHN0cnVjdCBldGhubF9yZXF1ZXN0X29wcyBldGhubF9yc3NfcmVxdWVzdF9vcHMgPSB7XG4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZXRobmxfcnNzX2NyZWF0ZV9wb2xpY3lbRVRIVE9PTF9BX1JTU19JTlBVVF9YRlJNICYjNDM7IDFdID0ge1xuIFx0W0VUSFRPT0xfQV9SU1NfSEVBREVSXVx0PSBOTEFfUE9MSUNZX05FU1RFRChldGhubF9oZWFkZXJfcG9saWN5KSxcbiBcdFtFVEhUT09MX0FfUlNTX0NPTlRFWFRdXHQ9IE5MQV9QT0xJQ1lfTUlOKE5MQV9VMzIsIDEpLFxuLVx0W0VUSFRPT0xfQV9SU1NfSEZVTkNdXHQ9IE5MQV9QT0xJQ1lfTUlOKE5MQV9VMzIsIDEpLFxuJiM0MztcdFtFVEhUT09MX0FfUlNTX0hGVU5DXVx0PSBOTEFfUE9MSUNZX1JBTkdFKE5MQV9VMzIsIDEsIFU4X01BWCksXG4gXHRbRVRIVE9PTF9BX1JTU19JTkRJUl1cdD0gTkxBX1BPTElDWV9NSU4oTkxBX0JJTkFSWSwgMSksXG4gXHRbRVRIVE9PTF9BX1JTU19IS0VZXVx0PSBOTEFfUE9MSUNZX01JTihOTEFfQklOQVJZLCAxKSxcbiBcdFtFVEhUT09MX0FfUlNTX0lOUFVUX1hGUk1dID1cbkBAIC0xMDU0LDE0ICYjNDM7MTA1NSwxNSBAQCBpbnQgZXRobmxfcnNzX2NyZWF0ZV9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXHRcdGdvdG8gZXhpdF9jbGVhbl9kYXRhO1xuIFx0aW5kaXJfdXNlcl9zaXplID0gcmV0O1xuIFxuLVx0ZXRobmxfdXBkYXRlX3U4KFx1MDAyNnJ4ZmguaGZ1bmMsIHRiW0VUSFRPT0xfQV9SU1NfSEZVTkNdLCBcdTAwMjZtb2QpO1xuJiM0MztcdGV0aG5sX3VwZGF0ZV91OF91MzIoXHUwMDI2cnhmaC5oZnVuYywgdGJbRVRIVE9PTF9BX1JTU19IRlVOQ10sIFx1MDAyNm1vZCk7XG4gXG4gXHRyZXQgPSByc3Nfc2V0X3ByZXBfaGtleShkZXYsIGluZm8sIFx1MDAyNmRhdGEsIFx1MDAyNnJ4ZmgsIFx1MDAyNm1vZCk7XG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIGV4aXRfZnJlZV9pbmRpcjtcbiBcbiBcdHJ4ZmguaW5wdXRfeGZybSA9IFJYSF9YRlJNX05PX0NIQU5HRTtcbi1cdGV0aG5sX3VwZGF0ZV91OChcdTAwMjZyeGZoLmlucHV0X3hmcm0sIHRiW0VUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTV0sIFx1MDAyNm1vZCk7XG4mIzQzO1x0ZXRobmxfdXBkYXRlX3U4X3UzMihcdTAwMjZyeGZoLmlucHV0X3hmcm0sIHRiW0VUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTV0sXG4mIzQzO1x0XHRcdCAgICBcdTAwMjZtb2QpO1xuIFxuIFx0Y3R4ID0gZXRodG9vbF9yeGZoX2N0eF9hbGxvYyhvcHMsIGRhdGEuaW5kaXJfc2l6ZSwgZGF0YS5oa2V5X3NpemUpO1xuIFx0aWYgKCFjdHgpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjoxOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFVEhUT09MX05FVExJTksmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtldGhubF9yc3Nfc2V0JiMzNDssCiAgICAmIzM0O2V0aG5sX3Jzc19jcmVhdGVfZG9pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgZXRodG9vbCBuZXRsaW5rIGludGVyZmFjZSB3aGVyZSBhIDMyLWJpdCBhdHRyaWJ1dGUgd2FzIGluY29ycmVjdGx5IHBhcnNlZCBhcyBhbiA4LWJpdCBhdHRyaWJ1dGUsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBvciBpbmNvcnJlY3QgZGF0YS4gVGhpcyBhZmZlY3RzIHRoZSBSU1MgY29uZmlndXJhdGlvbiBjb21tYW5kcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYzM2YTdiNmVmYjZjZjM2MGFmMWY0ZjdhYTdlYjIxZDk2ZTIzZWM4MQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDYgMDY6MTk6MDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvZXRodG9vbC9uZXRsaW5rLmggYi9uZXQvZXRodG9vbC9uZXRsaW5rLmgKaW5kZXggZmQyMTk4ZTQ1ZDJiYmEuLjczM2ZiM2MzYTYzYTVkIDEwMDY0NAotLS0gYS9uZXQvZXRodG9vbC9uZXRsaW5rLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2V0aHRvb2wvbmV0bGluay5oCkBAIC0xMTUsNiAmIzQzOzExNSwzNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXRobmxfdXBkYXRlX3U4KHU4ICpkc3QsIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsCiAJKm1vZCA9IHRydWU7CiB9CiAKJiM0MzsvKioKJiM0MzsgKiBldGhubF91cGRhdGVfdThfdTMyKCkgLSB1cGRhdGUgdTggdmFsdWUgZnJvbSBhbiBOTEFfVTMyIGF0dHJpYnV0ZQomIzQzOyAqIEBkc3Q6ICB2YWx1ZSB0byB1cGRhdGUKJiM0MzsgKiBAYXR0cjogbmV0bGluayBhdHRyaWJ1dGUgd2l0aCBuZXcgdmFsdWUgb3IgbnVsbAomIzQzOyAqIEBtb2Q6ICBwb2ludGVyIHRvIGJvb2wgZm9yIG1vZGlmaWNhdGlvbiB0cmFja2luZwomIzQzOyAqCiYjNDM7ICogU29tZSBhdHRyaWJ1dGVzIGFyZSBOTEFfVTMyIG9uIHRoZSB3aXJlIGJ1dCBhcmUgc3RvcmVkIGluIGEgdTguIFJlYWQgdGhlCiYjNDM7ICogZnVsbCAzMi1iaXQgdmFsdWUgZnJvbSBOTEFfVTMyIG5ldGxpbmsgYXR0cmlidXRlIEBhdHRyIGFuZCBuYXJyb3cgaXQgaW50bwomIzQzOyAqIHRoZSB1OCBwb2ludGVkIHRvIGJ5IEBkc3Q7IGRvIG5vdGhpbmcgaWYgQGF0dHIgaXMgbnVsbC4KJiM0MzsgKiBCb29sIHBvaW50ZWQgdG8gYnkgQG1vZCBpcyBzZXQgdG8gdHJ1ZSBpZiB0aGlzIGZ1bmN0aW9uIGNoYW5nZWQgdGhlIHZhbHVlCiYjNDM7ICogb2YgKmRzdCwgb3RoZXJ3aXNlIGl0IGlzIGxlZnQgYXMgaXMuCiYjNDM7ICovCiYjNDM7c3RhdGljIGlubGluZSB2b2lkIGV0aG5sX3VwZGF0ZV91OF91MzIodTggKmRzdCwgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwKJiM0MzsJCQkJICAgICAgIGJvb2wgKm1vZCkKJiM0Mzt7CiYjNDM7CXUzMiB2YWw7CiYjNDM7CiYjNDM7CWlmICghYXR0cikKJiM0MzsJCXJldHVybjsKJiM0MzsJdmFsID0gbmxhX2dldF91MzIoYXR0cik7CiYjNDM7CURFQlVHX05FVF9XQVJOX09OX09OQ0UodmFsICZndDsgVThfTUFYKTsKJiM0MzsJaWYgKCpkc3QgPT0gdmFsKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwkqZHN0ID0gdmFsOwomIzQzOwkqbW9kID0gdHJ1ZTsKJiM0Mzt9CiYjNDM7CiAvKioKICAqIGV0aG5sX3VwZGF0ZV9ib29sMzIoKSAtIHVwZGF0ZSB1MzIgdXNlZCBhcyBib29sIGZyb20gTkxBX1U4IGF0dHJpYnV0ZQogICogQGRzdDogIHZhbHVlIHRvIHVwZGF0ZQpkaWZmIC0tZ2l0IGEvbmV0L2V0aHRvb2wvcnNzLmMgYi9uZXQvZXRodG9vbC9yc3MuYwppbmRleCA1Mzc5MmY1M2Y5MjI5Zi4uY2E2ZWQxNTJjMmJlMzMgMTAwNjQ0Ci0tLSBhL25ldC9ldGh0b29sL3Jzcy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9ldGh0b29sL3Jzcy5jCkBAIC01NzQsNyAmIzQzOzU3NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBldGhubF9yc3NfZmxvd3NfcG9saWN5W10gPSB7CiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBldGhubF9yc3Nfc2V0X3BvbGljeVtFVEhUT09MX0FfUlNTX0ZMT1dfSEFTSCAmIzQzOyAxXSA9IHsKIAlbRVRIVE9PTF9BX1JTU19IRUFERVJdID0gTkxBX1BPTElDWV9ORVNURUQoZXRobmxfaGVhZGVyX3BvbGljeSksCiAJW0VUSFRPT0xfQV9SU1NfQ09OVEVYVF0gPSB7IC50eXBlID0gTkxBX1UzMiwgfSwKLQlbRVRIVE9PTF9BX1JTU19IRlVOQ10gPSBOTEFfUE9MSUNZX01JTihOTEFfVTMyLCAxKSwKJiM0MzsJW0VUSFRPT0xfQV9SU1NfSEZVTkNdID0gTkxBX1BPTElDWV9SQU5HRShOTEFfVTMyLCAxLCBVOF9NQVgpLAogCVtFVEhUT09MX0FfUlNTX0lORElSXSA9IHsgLnR5cGUgPSBOTEFfQklOQVJZLCB9LAogCVtFVEhUT09MX0FfUlNTX0hLRVldID0gTkxBX1BPTElDWV9NSU4oTkxBX0JJTkFSWSwgMSksCiAJW0VUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTV0gPQpAQCAtODU1LDcgJiM0Mzs4NTUsNyBAQCBldGhubF9yc3Nfc2V0KHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2luZm8sIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pCiAJaW5kaXJfbW9kID0gISF0YltFVEhUT09MX0FfUlNTX0lORElSXTsKIAogCXJ4ZmguaGZ1bmMgPSBkYXRhLmhmdW5jOwotCWV0aG5sX3VwZGF0ZV91OCgmYW1wO3J4ZmguaGZ1bmMsIHRiW0VUSFRPT0xfQV9SU1NfSEZVTkNdLCAmYW1wO21vZCk7CiYjNDM7CWV0aG5sX3VwZGF0ZV91OF91MzIoJmFtcDtyeGZoLmhmdW5jLCB0YltFVEhUT09MX0FfUlNTX0hGVU5DXSwgJmFtcDttb2QpOwogCWlmIChyeGZoLmhmdW5jID09IGRhdGEuaGZ1bmMpCiAJCXJ4ZmguaGZ1bmMgPSBFVEhfUlNTX0hBU0hfTk9fQ0hBTkdFOwogCkBAIC04NjQsNyAmIzQzOzg2NCw4IEBAIGV0aG5sX3Jzc19zZXQoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfaW5mbywgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKIAkJZ290byBleGl0X2ZyZWVfaW5kaXI7CiAKIAlyeGZoLmlucHV0X3hmcm0gPSBkYXRhLmlucHV0X3hmcm07Ci0JZXRobmxfdXBkYXRlX3U4KCZhbXA7cnhmaC5pbnB1dF94ZnJtLCB0YltFVEhUT09MX0FfUlNTX0lOUFVUX1hGUk1dLCAmYW1wO21vZCk7CiYjNDM7CWV0aG5sX3VwZGF0ZV91OF91MzIoJmFtcDtyeGZoLmlucHV0X3hmcm0sIHRiW0VUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTV0sCiYjNDM7CQkJICAgICZhbXA7bW9kKTsKIAl4ZnJtX3N5bSA9IHJ4ZmguaW5wdXRfeGZybSB8fCBkYXRhLmlucHV0X3hmcm07CiAJaWYgKHJ4ZmguaW5wdXRfeGZybSA9PSBkYXRhLmlucHV0X3hmcm0pCiAJCXJ4ZmguaW5wdXRfeGZybSA9IFJYSF9YRlJNX05PX0NIQU5HRTsKQEAgLTkzOCw3ICYjNDM7OTM5LDcgQEAgY29uc3Qgc3RydWN0IGV0aG5sX3JlcXVlc3Rfb3BzIGV0aG5sX3Jzc19yZXF1ZXN0X29wcyA9IHsKIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGV0aG5sX3Jzc19jcmVhdGVfcG9saWN5W0VUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTSAmIzQzOyAxXSA9IHsKIAlbRVRIVE9PTF9BX1JTU19IRUFERVJdCT0gTkxBX1BPTElDWV9ORVNURUQoZXRobmxfaGVhZGVyX3BvbGljeSksCiAJW0VUSFRPT0xfQV9SU1NfQ09OVEVYVF0JPSBOTEFfUE9MSUNZX01JTihOTEFfVTMyLCAxKSwKLQlbRVRIVE9PTF9BX1JTU19IRlVOQ10JPSBOTEFfUE9MSUNZX01JTihOTEFfVTMyLCAxKSwKJiM0MzsJW0VUSFRPT0xfQV9SU1NfSEZVTkNdCT0gTkxBX1BPTElDWV9SQU5HRShOTEFfVTMyLCAxLCBVOF9NQVgpLAogCVtFVEhUT09MX0FfUlNTX0lORElSXQk9IE5MQV9QT0xJQ1lfTUlOKE5MQV9CSU5BUlksIDEpLAogCVtFVEhUT09MX0FfUlNTX0hLRVldCT0gTkxBX1BPTElDWV9NSU4oTkxBX0JJTkFSWSwgMSksCiAJW0VUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTV0gPQpAQCAtMTA1NCwxNCAmIzQzOzEwNTUsMTUgQEAgaW50IGV0aG5sX3Jzc19jcmVhdGVfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQogCQlnb3RvIGV4aXRfY2xlYW5fZGF0YTsKIAlpbmRpcl91c2VyX3NpemUgPSByZXQ7CiAKLQlldGhubF91cGRhdGVfdTgoJmFtcDtyeGZoLmhmdW5jLCB0YltFVEhUT09MX0FfUlNTX0hGVU5DXSwgJmFtcDttb2QpOwomIzQzOwlldGhubF91cGRhdGVfdThfdTMyKCZhbXA7cnhmaC5oZnVuYywgdGJbRVRIVE9PTF9BX1JTU19IRlVOQ10sICZhbXA7bW9kKTsKIAogCXJldCA9IHJzc19zZXRfcHJlcF9oa2V5KGRldiwgaW5mbywgJmFtcDtkYXRhLCAmYW1wO3J4ZmgsICZhbXA7bW9kKTsKIAlpZiAocmV0KQogCQlnb3RvIGV4aXRfZnJlZV9pbmRpcjsKIAogCXJ4ZmguaW5wdXRfeGZybSA9IFJYSF9YRlJNX05PX0NIQU5HRTsKLQlldGhubF91cGRhdGVfdTgoJmFtcDtyeGZoLmlucHV0X3hmcm0sIHRiW0VUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTV0sICZhbXA7bW9kKTsKJiM0MzsJZXRobmxfdXBkYXRlX3U4X3UzMigmYW1wO3J4ZmguaW5wdXRfeGZybSwgdGJbRVRIVE9PTF9BX1JTU19JTlBVVF9YRlJNXSwKJiM0MzsJCQkgICAgJmFtcDttb2QpOwogCiAJY3R4ID0gZXRodG9vbF9yeGZoX2N0eF9hbGxvYyhvcHMsIGRhdGEuaW5kaXJfc2l6ZSwgZGF0YS5oa2V5X3NpemUpOwogCWlmICghY3R4KSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MjAKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA0MjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSU1MgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIHRvdWNoaW5nIGBuZXQvZXRodG9vbC9yc3MuY2AgYW5kIGBuZXQvZXRodG9vbC9uZXRsaW5rLmhgLiBSaWdodCBvZmYgdGhlIGJhdCwgaXQmIzM5O3MgaW50cm9kdWNpbmcgdGhpcyBuZXcgZnVuY3Rpb24sIGBldGhubF91cGRhdGVfdThfdTMyYC4gVGhlIG5hbWUgaXMgcHJldHR5IHNlbGYtZXhwbGFuYXRvcnkg4oCTIGl0JiMzOTtzIHJlYWRpbmcgYSAzMi1iaXQgbmV0bGluayBhdHRyaWJ1dGUsIGBOTEFfVTMyYCwgYW5kIHNvbWVob3cgc3RvcmluZyB0aGF0IGRhdGEgaW50byBhbiA4LWJpdCwgYHU4YCB2YXJpYWJsZS4gVGhhdCYjMzk7cyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZywgYW5kIEkmIzM5O20gZ3Vlc3NpbmcgdGhpcyBoYXMgdG8gZG8gd2l0aCBzb21lIGtpbmQgb2YgdHlwZSBjb252ZXJzaW9uIG9yIGNvbnN0cmFpbnQuCgpUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgcmVwbGFjaW5nIHRoZSBvbGRlciBgZXRobmxfdXBkYXRlX3U4YCB3aXRoIHRoaXMgbmV3IG9uZSBpbiBgZXRobmxfcnNzX3NldGAgYW5kIGBldGhubF9yc3NfY3JlYXRlX2RvaXRgIOKAkyBzcGVjaWZpY2FsbHkgZm9yIGBFVEhUT09MX0FfUlNTX0hGVU5DYCBhbmQgYEVUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTWAuIFRoYXQgc2lnbmFscyBhIGRpcmVjdCBmdW5jdGlvbmFsIGNoYW5nZS4gQWxzbywgdGhlIHBvbGljeSBkZWZpbml0aW9ucywgYGV0aG5sX3Jzc19zZXRfcG9saWN5YCBhbmQgYGV0aG5sX3Jzc19jcmVhdGVfcG9saWN5YCwgYXJlIGJlaW5nIHVwZGF0ZWQgdG9vLiBJdCYjMzk7cyBzaGlmdGluZyB0aGUgcG9saWN5IGZvciBgRVRIVE9PTF9BX1JTU19IRlVOQ2AgZnJvbSBhIGBOTEFfUE9MSUNZX01JTihOTEFfVTMyLCAxKWAgdG8gYE5MQV9QT0xJQ1lfUkFOR0UoTkxBX1UzMiwgMSwgVThfTUFYKWAuIFRoZSBwb2xpY3kgc2hpZnQgc3Ryb25nbHkgaW5kaWNhdGVzIGEgZGF0YSB0eXBlIGlzc3VlIHdhcyBwcmVzZW50IGJlZm9yZS4KCkFoLCBva2F5LCBJIHNlZSBpdCBub3cuIFRoaXMgaXMgYSBmaXgsIGEgYnVnZml4IHNwZWNpZmljYWxseSEgVGhlIG9yaWdpbmFsIGNvZGUgd2FzIHVzaW5nIGBldGhubF91cGRhdGVfdThgIG9uIGFuIGF0dHJpYnV0ZSB0aGF0ICpzaG91bGQqIGhhdmUgYmVlbiBgTkxBX1UzMmAgZnJvbSB0aGUgd2lyZSwgYWNjb3JkaW5nIHRvIHRoZSBgTkxBX1BPTElDWV9NSU4oTkxBX1UzMiwgMSlgIHBvbGljeSBmb3IgYEVUSFRPT0xfQV9SU1NfSEZVTkNgLiBVc2luZyBgZXRobmxfdXBkYXRlX3U4YCBpbiB0aGF0IHNjZW5hcmlvIGlzIGluaGVyZW50bHkgd3Jvbmc7IGl0IGV4cGVjdHMgYW4gYE5MQV9VOGAsIGFuZCBpZiB3ZSBmZWVkIGl0IGEgMzItYml0IHZhbHVlLCBpdCB3b3VsZCBlaXRoZXIgcmVhZCBnYXJiYWdlIG9yIHBvdGVudGlhbGx5IGNhdXNlIGFuIG91dC1vZi1ib3VuZHMgcmVhZC4gVGhpcyBjaGFuZ2UgcmVjdGlmaWVzIHRoYXQuCgpOb3csIGJlZm9yZSBJIHNpZ24gb2ZmIG9uIHRoaXMsIEkgbmVlZCB0byB2ZXJpZnkgYSBjb3VwbGUgb2YgdGhpbmdzLCBhcyB0aGlzIHRvdWNoZXMgY29yZSBuZXR3b3JraW5nLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGluIG9yZGVyLiBFVEhUT09MIG5ldGxpbmsgaXMgdHlwaWNhbGx5IHBhcnQgb2YgdGhlIGNvcmUgbmV0d29yayBzdGFjay4gU28sIGl0JiMzOTtzIGVpdGhlciBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgY29udHJvbGxlZCBieSBgQ09ORklHX0VUSFRPT0xfTkVUTElOS2AuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBgbmV0L2V0aHRvb2wvS2NvbmZpZ2Agb3IgbWF5YmUgYG5ldC9LY29uZmlnYCB0byBjb25maXJtIHRoZXJlIGFyZW4mIzM5O3QgYW55IHdlaXJkIGNvbmZpZyBkZXBlbmRlbmNpZXMgdGhhdCBjb3VsZCBiZSBpbXBhY3RlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfRVRIVE9PTF9ORVRMSU5LJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvb3BlbnJpc2MvY29uZmlncy9vcjFrbGl0ZXhfZGVmY29uZmlnPTIyPUNPTkZJR19JTkVUX1JBV19ESUFHPXlcbmFyY2gvb3BlbnJpc2MvY29uZmlncy9vcjFrbGl0ZXhfZGVmY29uZmlnLTIzLSMgQ09ORklHX1dJUkVMRVNTIGlzIG5vdCBzZXRcbmFyY2gvb3BlbnJpc2MvY29uZmlncy9vcjFrbGl0ZXhfZGVmY29uZmlnOjI0OiMgQ09ORklHX0VUSFRPT0xfTkVUTElOSyBpcyBub3Qgc2V0XG5hcmNoL29wZW5yaXNjL2NvbmZpZ3Mvb3Ixa2xpdGV4X2RlZmNvbmZpZy0yNS1DT05GSUdfREVWVE1QRlM9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL3pmY3BkdW1wX2RlZmNvbmZpZz0yOT1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL3MzOTAvY29uZmlncy96ZmNwZHVtcF9kZWZjb25maWctMzEtIyBDT05GSUdfUENQVV9ERVZfUkVGQ05UIGlzIG5vdCBzZXRcbmFyY2gvczM5MC9jb25maWdzL3pmY3BkdW1wX2RlZmNvbmZpZzozMjojIENPTkZJR19FVEhUT09MX05FVExJTksgaXMgbm90IHNldFxuYXJjaC9zMzkwL2NvbmZpZ3MvemZjcGR1bXBfZGVmY29uZmlnLTMzLUNPTkZJR19ERVZUTVBGUz15XG4tLVxuaW5jbHVkZS9saW51eC9ldGh0b29sX25ldGxpbmsuaD0yMD1zdHJ1Y3QgcGh5X2RldmljZTtcbmluY2x1ZGUvbGludXgvZXRodG9vbF9uZXRsaW5rLmgtMjEtXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2xfbmV0bGluay5oOjIyOiNpZiBJU19FTkFCTEVEKENPTkZJR19FVEhUT09MX05FVExJTkspXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2xfbmV0bGluay5oLTIzLWludCBldGhubF9jYWJsZV90ZXN0X2FsbG9jKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGNtZCk7XG4tLVxuaW5jbHVkZS9saW51eC9ldGh0b29sX25ldGxpbmsuaD0xMjU9c3RhdGljIGlubGluZSB2b2lkIGV0aG5sX3BzZV9zZW5kX250ZihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmluY2x1ZGUvbGludXgvZXRodG9vbF9uZXRsaW5rLmgtMTI5LVxuaW5jbHVkZS9saW51eC9ldGh0b29sX25ldGxpbmsuaDoxMzA6I2VuZGlmIC8qIElTX0VOQUJMRUQoQ09ORklHX0VUSFRPT0xfTkVUTElOSykgKi9cbmluY2x1ZGUvbGludXgvZXRodG9vbF9uZXRsaW5rLmgtMTMxLVxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9NTI4MT12b2lkIG5ldGRldl9ib25kaW5nX2luZm9fY2hhbmdlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01MjgzLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo1Mjg0OiNpZiBJU19FTkFCTEVEKENPTkZJR19FVEhUT09MX05FVExJTkspXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTUyODUtdm9pZCBldGh0b29sX25vdGlmeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgY21kKTtcbi0tXG5uZXQvZXRodG9vbC9NYWtlZmlsZT0zPW9iai15XHRcdFx0XHQmIzQzOz0gaW9jdGwubyBjb21tb24ub1xubmV0L2V0aHRvb2wvTWFrZWZpbGUtNC1cbm5ldC9ldGh0b29sL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX0VUSFRPT0xfTkVUTElOSylcdCYjNDM7PSBldGh0b29sX25sLm9cbm5ldC9ldGh0b29sL01ha2VmaWxlLTYtXG4tLVxubmV0L2V0aHRvb2wvY29tbW9uLmg9ODE9Ym9vbCBfX2V0aHRvb2xfZGV2X21tX3N1cHBvcnRlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcbm5ldC9ldGh0b29sL2NvbW1vbi5oLTgyLVxubmV0L2V0aHRvb2wvY29tbW9uLmg6ODM6I2lmIElTX0VOQUJMRUQoQ09ORklHX0VUSFRPT0xfTkVUTElOSylcbm5ldC9ldGh0b29sL2NvbW1vbi5oLTg0LXZvaWQgZXRodG9vbF9yc3Nfbm90aWZ5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiB0eXBlLCB1MzIgcnNzX2NvbnRleHQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzNDgKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgQ09ORklHX0VUSFRPT0xfTkVUTElOS2AgQ29uZmlndXJhdGlvbiBPcHRpb24qKgoKQWxyaWdodCwgc28gdGhlIHRhc2sgYXQgaGFuZCByZXZvbHZlcyBhcm91bmQgYENPTkZJR19FVEhUT09MX05FVExJTktgLiBSaWdodCwgdGhhdCYjMzk7cyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gSSBuZWVkIHRvIHZlcmlmeS4gTXkgZmlyc3QgbW92ZSBpcyBhbHdheXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZS4gVGhlIGBuZXQvS2NvbmZpZ2AgZmlsZSBpcyB0aGUgZGVmaW5pdGl2ZSBhdXRob3JpdHkgb24gdGhlc2Ugc2V0dGluZ3MuIEkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gaXRzIGV4aXN0ZW5jZSBhbmQsIG1vcmUgaW1wb3J0YW50bHksIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcyBhbmQgaW1wbGljYXRpb25zIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLiBHb3R0YSBtYWtlIHN1cmUgdGhpcyB0aGluZyYjMzk7cyBldmVuIGRlZmluZWQsIG9yIGlmIHRoZXJlJiMzOTtzIHNvbWUgY29uZGl0aW9uYWwgbG9naWMgSSBuZWVkIHRvIGNvbnNpZGVyLiBMZXQmIzM5O3Mgc2VlIHdoYXQgYG5ldC9LY29uZmlnYCBoYXMgdG8gc2F5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBFVEhUT09MX05FVExJTksmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9NTA4PWNvbmZpZyBGQUlMT1ZFUlxuLS1cbm5ldC9LY29uZmlnLTUyMC1cbm5ldC9LY29uZmlnOjUyMTpjb25maWcgRVRIVE9PTF9ORVRMSU5LXG5uZXQvS2NvbmZpZy01MjItXHRib29sIFwmIzM0O05ldGxpbmsgaW50ZXJmYWNlIGZvciBldGh0b29sXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDY6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTYzNAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDExOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBFVEhUT09MX05FVExJTksgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBgRVRIVE9PTF9ORVRMSU5LYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gaGVyZS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCB3aGljaCBmdW5jdGlvbnMgYXJlIHRoZSBtb3N0IHByb21pc2luZyBjYW5kaWRhdGVzIGZvciBmdXp6aW5nPyBCYXNlZCBvbiB0aGUgY2hhbmdlcywgaXQgbG9va3MgbGlrZSBgZXRobmxfcnNzX3NldGAgYW5kIGBldGhubF9yc3NfY3JlYXRlX2RvaXRgIGFyZSB0aGUgcHJpbWFyeSB0YXJnZXRzLiBCdXQgaXQmIzM5O3Mgd29ydGggYSBxdWljayBhdWRpdCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGJlIGludGVyZXN0aW5nLiBBaCwgcmlnaHQsIHRoZXJlJiMzOTtzIGBldGhubF91cGRhdGVfdThfdTMyYCwgd2hpY2ggaXMgYSBzdGF0aWMgaW5saW5lIGZ1bmN0aW9uIGRlZmluZWQgaW4gYG5ldC9ldGh0b29sL25ldGxpbmsuaGAuIEFuZCwgYXMgc3VzcGVjdGVkLCB0aGF0JiMzOTtzIGNhbGxlZCBkaXJlY3RseSBieSB0aGUgdHdvIGZ1bmN0aW9ucyBJIGFscmVhZHkgaWRlbnRpZmllZDogYGV0aG5sX3Jzc19zZXRgIGFuZCBgZXRobmxfcnNzX2NyZWF0ZV9kb2l0YC4gU28sIGZ1enppbmcgYGV0aG5sX3Jzc19zZXRgIGFuZCBgZXRobmxfcnNzX2NyZWF0ZV9kb2l0YCwgZWZmZWN0aXZlbHkgY292ZXJzIHRoZSBzdGF0aWMgaW5saW5lIGFzIHdlbGwuIEdvb2QuIFRoYXQmIzM5O3MgYSBmb2N1c2VkIHN0YXJ0aW5nIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V0aG5sX3Jzc19zZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2V0aHRvb2wvbmV0bGluay5jPTExMzU9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX29wcyBldGh0b29sX2dlbmxfb3BzW10gPSB7XG4tLVxubmV0L2V0aHRvb2wvbmV0bGluay5jLTE1MjItXHRcdC5kb2l0XHQ9IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQsXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6MTUyMzpcdFx0LnBvbGljeSA9IGV0aG5sX3Jzc19zZXRfcG9saWN5LFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjE1MjQ6XHRcdC5tYXhhdHRyID0gQVJSQVlfU0laRShldGhubF9yc3Nfc2V0X3BvbGljeSkgLSAxLFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTE1MjUtXHR9LFxuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuaD01MTc9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGV0aG5sX3Jzc19nZXRfcG9saWN5W0VUSFRPT0xfQV9SU1NfU1RBUlRfQ09OVEVYVCAmIzQzOyAxXTtcbm5ldC9ldGh0b29sL25ldGxpbmsuaDo1MTg6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGV0aG5sX3Jzc19zZXRfcG9saWN5W0VUSFRPT0xfQV9SU1NfRkxPV19IQVNIICYjNDM7IDFdO1xubmV0L2V0aHRvb2wvbmV0bGluay5oLTUxOS1leHRlcm4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZXRobmxfcnNzX2NyZWF0ZV9wb2xpY3lbRVRIVE9PTF9BX1JTU19JTlBVVF9YRlJNICYjNDM7IDFdO1xuLS1cbm5ldC9ldGh0b29sL3Jzcy5jPTU0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZXRobmxfcnNzX2Zsb3dzX3BvbGljeVtdID0ge1xuLS1cbm5ldC9ldGh0b29sL3Jzcy5jLTU3My1cbm5ldC9ldGh0b29sL3Jzcy5jOjU3NDpjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBldGhubF9yc3Nfc2V0X3BvbGljeVtFVEhUT09MX0FfUlNTX0ZMT1dfSEFTSCAmIzQzOyAxXSA9IHtcbm5ldC9ldGh0b29sL3Jzcy5jLTU3NS1cdFtFVEhUT09MX0FfUlNTX0hFQURFUl0gPSBOTEFfUE9MSUNZX05FU1RFRChldGhubF9oZWFkZXJfcG9saWN5KSxcbi0tXG5uZXQvZXRodG9vbC9yc3MuYz01ODU9c3RhdGljIGludFxubmV0L2V0aHRvb2wvcnNzLmM6NTg2OmV0aG5sX3Jzc19zZXRfdmFsaWRhdGUoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfaW5mbywgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbm5ldC9ldGh0b29sL3Jzcy5jLTU4Ny17XG4tLVxubmV0L2V0aHRvb2wvcnNzLmM9ODI3PXN0YXRpYyBpbnRcbm5ldC9ldGh0b29sL3Jzcy5jOjgyODpldGhubF9yc3Nfc2V0KHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2luZm8sIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvZXRodG9vbC9yc3MuYy04Mjkte1xuLS1cbm5ldC9ldGh0b29sL3Jzcy5jPTkxOT1jb25zdCBzdHJ1Y3QgZXRobmxfcmVxdWVzdF9vcHMgZXRobmxfcnNzX3JlcXVlc3Rfb3BzID0ge1xuLS1cbm5ldC9ldGh0b29sL3Jzcy5jLTkzMS1cbm5ldC9ldGh0b29sL3Jzcy5jOjkzMjpcdC5zZXRfdmFsaWRhdGVcdFx0PSBldGhubF9yc3Nfc2V0X3ZhbGlkYXRlLFxubmV0L2V0aHRvb2wvcnNzLmM6OTMzOlx0LnNldFx0XHRcdD0gZXRobmxfcnNzX3NldCxcbm5ldC9ldGh0b29sL3Jzcy5jLTkzNC1cdC5zZXRfbnRmX2NtZFx0XHQ9IEVUSFRPT0xfTVNHX1JTU19OVEYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDY6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc1MgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgZnVuY3Rpb25zLgoKKipEZWNvbnN0cnVjdGluZyB0aGUgUlNTIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgbXkgZm9jdXMgaGVyZSBpcyBvbiB1bmRlcnN0YW5kaW5nIGhvdyBSU1MgaXMgYmVpbmcgc2V0IHVwIHdpdGhpbiB0aGlzIHN5c3RlbS4gSSBzZWUgYGV0aG5sX3Jzc19zZXRgIGFuZCBgZXRobmxfcnNzX2NyZWF0ZV9kb2l0YCDigJMgdGhvc2UgYXJlIHRoZSBrZXkgcGxheWVycywgcmlnaHQ/IE15IGluc3RpbmN0IGlzIHRvIGRpdmUgZGlyZWN0bHkgaW50byBgZXRobmxfcnNzX2NyZWF0ZV9kb2l0YC4gSXQgc291bmRzIGxpa2UgdGhlICYjMzQ7ZG9lciYjMzQ7IG9mIHRoZSBjcmVhdGlvbiBwcm9jZXNzLCBzbyBpdCB3aWxsIGxpa2VseSBob2xkIHRoZSBjb3JlIGxvZ2ljIEkmIzM5O20gaW50ZXJlc3RlZCBpbi4gTGV0JiMzOTtzIHNlZSB3aGF0IGluZm9ybWF0aW9uIEkgY2FuIGdsZWFuIGZyb20gdGhlcmUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgcHVsbGluZyB0aGF0IGFwYXJ0IGluIG15IG1pbmQuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDY6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXRobmxfcnNzX2NyZWF0ZV9kb2l0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9ldGh0b29sL25ldGxpbmsuYz0xMTM1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9vcHMgZXRodG9vbF9nZW5sX29wc1tdID0ge1xuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNTI4LVx0XHQuZmxhZ3NcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxNTI5Olx0XHQuZG9pdFx0PSBldGhubF9yc3NfY3JlYXRlX2RvaXQsXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTUzMC1cdFx0LnBvbGljeVx0PSBldGhubF9yc3NfY3JlYXRlX3BvbGljeSxcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmg9NTQzPWludCBldGhubF90c2luZm9fZG9uZShzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpO1xubmV0L2V0aHRvb2wvbmV0bGluay5oOjU0NDppbnQgZXRobmxfcnNzX2NyZWF0ZV9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xubmV0L2V0aHRvb2wvbmV0bGluay5oLTU0NS1pbnQgZXRobmxfcnNzX2RlbGV0ZV9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xuLS1cbm5ldC9ldGh0b29sL3Jzcy5jPTk4Nj1ldGhubF9yc3NfY3JlYXRlX3NlbmRfbnRmKGNvbnN0IHN0cnVjdCBza19idWZmICpyc3AsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2V0aHRvb2wvcnNzLmMtMTAwNi1cbm5ldC9ldGh0b29sL3Jzcy5jOjEwMDc6aW50IGV0aG5sX3Jzc19jcmVhdGVfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L2V0aHRvb2wvcnNzLmMtMTAwOC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczNDUKCQkJCQkJCW91dHB1dDogMTExCgkJCQkJCQl0aG91Z2h0czogMjY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEVUSFRPT0wgTmV0bGluayBCdWcqKgoKT2theSwgc28gSSYjMzk7dmUgcGlucG9pbnRlZCB0aGUgYnVnOiBpdCYjMzk7cyB3aXRoaW4gdGhlIG5ldGxpbmsgcGFyc2luZywgc3BlY2lmaWNhbGx5IGhvdyBgRVRIVE9PTF9BX1JTU19IRlVOQ2AgYW5kIGBFVEhUT09MX0FfUlNTX0lOUFVUX1hGUk1gIGFyZSBoYW5kbGVkLiBUaGUgcGF0Y2ggdXNlcyBgZXRobmxfdXBkYXRlX3U4X3UzMmAgdG8gY29ycmVjdCB0aGlzLiBUaGlzIGZ1bmN0aW9uIHJlYWRzIGEgMzItYml0IHZhbHVlIGFuZCB0aGVuIHN0b3JlcyBpdCBpbnRvIGFuIDgtYml0LCB3aGljaCBpcyB0aGUgcm9vdCBjYXVzZSBvZiB0aGlzIGVycm9yLiBTb3VuZHMgbGlrZSBhIGNsYXNzaWMgY2FzZSBvZiB0eXBlIGNvbmZ1c2lvbiBsZWFkaW5nIHRvIHBvdGVudGlhbCBtZW1vcnkgaXNzdWVzLgoKR2l2ZW4gdGhlIGZpeCwgdGhpcyBpcyAqYWJzb2x1dGVseSogd29ydGggZnV6emluZy4gSSBuZWVkIHRvIGZvY3VzIG15IGVmZm9ydHMgb24gYGV0aG5sX3Jzc19zZXRgIGFuZCBgZXRobmxfcnNzX2NyZWF0ZV9kb2l0YC4gVGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgSSB3YW50IHRvIHRhcmdldCB3aXRoIG15IGZ1enppbmcgY2FtcGFpZ24uCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIGNvbmZpcm0gdGhlIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb24uIEFoLCB5ZXMsIGBFVEhUT09MX05FVExJTktgIGlzIHRoZSByZWxldmFudCBjb25maWcuIE5vdGhpbmcgZWxzZSBpcyBuZWVkZWQuCgpFc3NlbnRpYWxseSwgdGhlIHBhdGNoIGlzIGZpeGluZyBhIHZ1bG5lcmFiaWxpdHkgaW4gdGhlIEVUSFRPT0wgbmV0bGluayBpbnRlcmZhY2UuIEl0IGFwcGVhcnMgdGhhdCBpdCB3YXMgaW5jb3JyZWN0bHkgcGFyc2luZyBhIDMyLWJpdCBhdHRyaWJ1dGUgYXMgYW4gOC1iaXQgYXR0cmlidXRlLCBhbmQgdGhhdCB0aGlzIGNvdWxkIGhhdmUgcmVzdWx0ZWQgaW4gb3V0LW9mLWJvdW5kcyByZWFkcyBvciBpbmNvcnJlY3QgZGF0YSwgZXNwZWNpYWxseSBpbiB0aGUgUlNTIGNvbmZpZ3VyYXRpb24gY29tbWFuZHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFVEhUT09MX05FVExJTksmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtldGhubF9yc3Nfc2V0JiMzNDssCiAgICAmIzM0O2V0aG5sX3Jzc19jcmVhdGVfZG9pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgZXRodG9vbCBuZXRsaW5rIGludGVyZmFjZSB3aGVyZSBhIDMyLWJpdCBhdHRyaWJ1dGUgd2FzIGluY29ycmVjdGx5IHBhcnNlZCBhcyBhbiA4LWJpdCBhdHRyaWJ1dGUsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBvciBpbmNvcnJlY3QgZGF0YS4gVGhpcyBhZmZlY3RzIHRoZSBSU1MgY29uZmlndXJhdGlvbiBjb21tYW5kcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVRIVE9PTF9ORVRMSU5LJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXRobmxfcnNzX3NldCYjMzQ7LAogICAgJiMzNDtldGhubF9yc3NfY3JlYXRlX2RvaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGV0aHRvb2wgbmV0bGluayBpbnRlcmZhY2Ugd2hlcmUgYSAzMi1iaXQgYXR0cmlidXRlIHdhcyBpbmNvcnJlY3RseSBwYXJzZWQgYXMgYW4gOC1iaXQgYXR0cmlidXRlLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgaW5jb3JyZWN0IGRhdGEuIFRoaXMgYWZmZWN0cyB0aGUgUlNTIGNvbmZpZ3VyYXRpb24gY29tbWFuZHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjoxOTowNC42ODkwMzM2NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MTAwNTU0MzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVUSFRPT0xfTkVUTElOS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV0aG5sX3Jzc19zZXRcIixcbiAgICBcImV0aG5sX3Jzc19jcmVhdGVfZG9pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBldGh0b29sIG5ldGxpbmsgaW50ZXJmYWNlIHdoZXJlIGEgMzItYml0IGF0dHJpYnV0ZSB3YXMgaW5jb3JyZWN0bHkgcGFyc2VkIGFzIGFuIDgtYml0IGF0dHJpYnV0ZSwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIGluY29ycmVjdCBkYXRhLiBUaGlzIGFmZmVjdHMgdGhlIFJTUyBjb25maWd1cmF0aW9uIGNvbW1hbmRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjoxOTowNC42ODkwNDEyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzgzMjEyMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjMzZhN2I2ZWZiNmNmMzYwYWYxZjRmN2FhN2ViMjFkOTZlMjNlYzgxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDYgMDY6MTk6MDMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2V0aHRvb2wvbmV0bGluay5oIGIvbmV0L2V0aHRvb2wvbmV0bGluay5oXFxuaW5kZXggZmQyMTk4ZTQ1ZDJiYmEuLjczM2ZiM2MzYTYzYTVkIDEwMDY0NFxcbi0tLSBhL25ldC9ldGh0b29sL25ldGxpbmsuaFxcbisrKyBiL25ldC9ldGh0b29sL25ldGxpbmsuaFxcbkBAIC0xMTUsNiArMTE1LDM0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBldGhubF91cGRhdGVfdTgodTggKmRzdCwgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcXG4gXFx0Km1vZCA9IHRydWU7XFxuIH1cXG4gXFxuKy8qKlxcbisgKiBldGhubF91cGRhdGVfdThfdTMyKCkgLSB1cGRhdGUgdTggdmFsdWUgZnJvbSBhbiBOTEFfVTMyIGF0dHJpYnV0ZVxcbisgKiBAZHN0OiAgdmFsdWUgdG8gdXBkYXRlXFxuKyAqIEBhdHRyOiBuZXRsaW5rIGF0dHJpYnV0ZSB3aXRoIG5ldyB2YWx1ZSBvciBudWxsXFxuKyAqIEBtb2Q6ICBwb2ludGVyIHRvIGJvb2wgZm9yIG1vZGlmaWNhdGlvbiB0cmFja2luZ1xcbisgKlxcbisgKiBTb21lIGF0dHJpYnV0ZXMgYXJlIE5MQV9VMzIgb24gdGhlIHdpcmUgYnV0IGFyZSBzdG9yZWQgaW4gYSB1OC4gUmVhZCB0aGVcXG4rICogZnVsbCAzMi1iaXQgdmFsdWUgZnJvbSBOTEFfVTMyIG5ldGxpbmsgYXR0cmlidXRlIEBhdHRyIGFuZCBuYXJyb3cgaXQgaW50b1xcbisgKiB0aGUgdTggcG9pbnRlZCB0byBieSBAZHN0OyBkbyBub3RoaW5nIGlmIEBhdHRyIGlzIG51bGwuXFxuKyAqIEJvb2wgcG9pbnRlZCB0byBieSBAbW9kIGlzIHNldCB0byB0cnVlIGlmIHRoaXMgZnVuY3Rpb24gY2hhbmdlZCB0aGUgdmFsdWVcXG4rICogb2YgKmRzdCwgb3RoZXJ3aXNlIGl0IGlzIGxlZnQgYXMgaXMuXFxuKyAqL1xcbitzdGF0aWMgaW5saW5lIHZvaWQgZXRobmxfdXBkYXRlX3U4X3UzMih1OCAqZHN0LCBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxcbitcXHRcXHRcXHRcXHQgICAgICAgYm9vbCAqbW9kKVxcbit7XFxuK1xcdHUzMiB2YWw7XFxuK1xcbitcXHRpZiAoIWF0dHIpXFxuK1xcdFxcdHJldHVybjtcXG4rXFx0dmFsID0gbmxhX2dldF91MzIoYXR0cik7XFxuK1xcdERFQlVHX05FVF9XQVJOX09OX09OQ0UodmFsIFxcdTAwM2UgVThfTUFYKTtcXG4rXFx0aWYgKCpkc3QgPT0gdmFsKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHQqZHN0ID0gdmFsO1xcbitcXHQqbW9kID0gdHJ1ZTtcXG4rfVxcbitcXG4gLyoqXFxuICAqIGV0aG5sX3VwZGF0ZV9ib29sMzIoKSAtIHVwZGF0ZSB1MzIgdXNlZCBhcyBib29sIGZyb20gTkxBX1U4IGF0dHJpYnV0ZVxcbiAgKiBAZHN0OiAgdmFsdWUgdG8gdXBkYXRlXFxuZGlmZiAtLWdpdCBhL25ldC9ldGh0b29sL3Jzcy5jIGIvbmV0L2V0aHRvb2wvcnNzLmNcXG5pbmRleCA1Mzc5MmY1M2Y5MjI5Zi4uY2E2ZWQxNTJjMmJlMzMgMTAwNjQ0XFxuLS0tIGEvbmV0L2V0aHRvb2wvcnNzLmNcXG4rKysgYi9uZXQvZXRodG9vbC9yc3MuY1xcbkBAIC01NzQsNyArNTc0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGV0aG5sX3Jzc19mbG93c19wb2xpY3lbXSA9IHtcXG4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZXRobmxfcnNzX3NldF9wb2xpY3lbRVRIVE9PTF9BX1JTU19GTE9XX0hBU0ggKyAxXSA9IHtcXG4gXFx0W0VUSFRPT0xfQV9SU1NfSEVBREVSXSA9IE5MQV9QT0xJQ1lfTkVTVEVEKGV0aG5sX2hlYWRlcl9wb2xpY3kpLFxcbiBcXHRbRVRIVE9PTF9BX1JTU19DT05URVhUXSA9IHsgLnR5cGUgPSBOTEFfVTMyLCB9LFxcbi1cXHRbRVRIVE9PTF9BX1JTU19IRlVOQ10gPSBOTEFfUE9MSUNZX01JTihOTEFfVTMyLCAxKSxcXG4rXFx0W0VUSFRPT0xfQV9SU1NfSEZVTkNdID0gTkxBX1BPTElDWV9SQU5HRShOTEFfVTMyLCAxLCBVOF9NQVgpLFxcbiBcXHRbRVRIVE9PTF9BX1JTU19JTkRJUl0gPSB7IC50eXBlID0gTkxBX0JJTkFSWSwgfSxcXG4gXFx0W0VUSFRPT0xfQV9SU1NfSEtFWV0gPSBOTEFfUE9MSUNZX01JTihOTEFfQklOQVJZLCAxKSxcXG4gXFx0W0VUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTV0gPVxcbkBAIC04NTUsNyArODU1LDcgQEAgZXRobmxfcnNzX3NldChzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9pbmZvLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbiBcXHRpbmRpcl9tb2QgPSAhIXRiW0VUSFRPT0xfQV9SU1NfSU5ESVJdO1xcbiBcXG4gXFx0cnhmaC5oZnVuYyA9IGRhdGEuaGZ1bmM7XFxuLVxcdGV0aG5sX3VwZGF0ZV91OChcXHUwMDI2cnhmaC5oZnVuYywgdGJbRVRIVE9PTF9BX1JTU19IRlVOQ10sIFxcdTAwMjZtb2QpO1xcbitcXHRldGhubF91cGRhdGVfdThfdTMyKFxcdTAwMjZyeGZoLmhmdW5jLCB0YltFVEhUT09MX0FfUlNTX0hGVU5DXSwgXFx1MDAyNm1vZCk7XFxuIFxcdGlmIChyeGZoLmhmdW5jID09IGRhdGEuaGZ1bmMpXFxuIFxcdFxcdHJ4ZmguaGZ1bmMgPSBFVEhfUlNTX0hBU0hfTk9fQ0hBTkdFO1xcbiBcXG5AQCAtODY0LDcgKzg2NCw4IEBAIGV0aG5sX3Jzc19zZXQoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfaW5mbywgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4gXFx0XFx0Z290byBleGl0X2ZyZWVfaW5kaXI7XFxuIFxcbiBcXHRyeGZoLmlucHV0X3hmcm0gPSBkYXRhLmlucHV0X3hmcm07XFxuLVxcdGV0aG5sX3VwZGF0ZV91OChcXHUwMDI2cnhmaC5pbnB1dF94ZnJtLCB0YltFVEhUT09MX0FfUlNTX0lOUFVUX1hGUk1dLCBcXHUwMDI2bW9kKTtcXG4rXFx0ZXRobmxfdXBkYXRlX3U4X3UzMihcXHUwMDI2cnhmaC5pbnB1dF94ZnJtLCB0YltFVEhUT09MX0FfUlNTX0lOUFVUX1hGUk1dLFxcbitcXHRcXHRcXHQgICAgXFx1MDAyNm1vZCk7XFxuIFxcdHhmcm1fc3ltID0gcnhmaC5pbnB1dF94ZnJtIHx8IGRhdGEuaW5wdXRfeGZybTtcXG4gXFx0aWYgKHJ4ZmguaW5wdXRfeGZybSA9PSBkYXRhLmlucHV0X3hmcm0pXFxuIFxcdFxcdHJ4ZmguaW5wdXRfeGZybSA9IFJYSF9YRlJNX05PX0NIQU5HRTtcXG5AQCAtOTM4LDcgKzkzOSw3IEBAIGNvbnN0IHN0cnVjdCBldGhubF9yZXF1ZXN0X29wcyBldGhubF9yc3NfcmVxdWVzdF9vcHMgPSB7XFxuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGV0aG5sX3Jzc19jcmVhdGVfcG9saWN5W0VUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTSArIDFdID0ge1xcbiBcXHRbRVRIVE9PTF9BX1JTU19IRUFERVJdXFx0PSBOTEFfUE9MSUNZX05FU1RFRChldGhubF9oZWFkZXJfcG9saWN5KSxcXG4gXFx0W0VUSFRPT0xfQV9SU1NfQ09OVEVYVF1cXHQ9IE5MQV9QT0xJQ1lfTUlOKE5MQV9VMzIsIDEpLFxcbi1cXHRbRVRIVE9PTF9BX1JTU19IRlVOQ11cXHQ9IE5MQV9QT0xJQ1lfTUlOKE5MQV9VMzIsIDEpLFxcbitcXHRbRVRIVE9PTF9BX1JTU19IRlVOQ11cXHQ9IE5MQV9QT0xJQ1lfUkFOR0UoTkxBX1UzMiwgMSwgVThfTUFYKSxcXG4gXFx0W0VUSFRPT0xfQV9SU1NfSU5ESVJdXFx0PSBOTEFfUE9MSUNZX01JTihOTEFfQklOQVJZLCAxKSxcXG4gXFx0W0VUSFRPT0xfQV9SU1NfSEtFWV1cXHQ9IE5MQV9QT0xJQ1lfTUlOKE5MQV9CSU5BUlksIDEpLFxcbiBcXHRbRVRIVE9PTF9BX1JTU19JTlBVVF9YRlJNXSA9XFxuQEAgLTEwNTQsMTQgKzEwNTUsMTUgQEAgaW50IGV0aG5sX3Jzc19jcmVhdGVfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbiBcXHRcXHRnb3RvIGV4aXRfY2xlYW5fZGF0YTtcXG4gXFx0aW5kaXJfdXNlcl9zaXplID0gcmV0O1xcbiBcXG4tXFx0ZXRobmxfdXBkYXRlX3U4KFxcdTAwMjZyeGZoLmhmdW5jLCB0YltFVEhUT09MX0FfUlNTX0hGVU5DXSwgXFx1MDAyNm1vZCk7XFxuK1xcdGV0aG5sX3VwZGF0ZV91OF91MzIoXFx1MDAyNnJ4ZmguaGZ1bmMsIHRiW0VUSFRPT0xfQV9SU1NfSEZVTkNdLCBcXHUwMDI2bW9kKTtcXG4gXFxuIFxcdHJldCA9IHJzc19zZXRfcHJlcF9oa2V5KGRldiwgaW5mbywgXFx1MDAyNmRhdGEsIFxcdTAwMjZyeGZoLCBcXHUwMDI2bW9kKTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0Z290byBleGl0X2ZyZWVfaW5kaXI7XFxuIFxcbiBcXHRyeGZoLmlucHV0X3hmcm0gPSBSWEhfWEZSTV9OT19DSEFOR0U7XFxuLVxcdGV0aG5sX3VwZGF0ZV91OChcXHUwMDI2cnhmaC5pbnB1dF94ZnJtLCB0YltFVEhUT09MX0FfUlNTX0lOUFVUX1hGUk1dLCBcXHUwMDI2bW9kKTtcXG4rXFx0ZXRobmxfdXBkYXRlX3U4X3UzMihcXHUwMDI2cnhmaC5pbnB1dF94ZnJtLCB0YltFVEhUT09MX0FfUlNTX0lOUFVUX1hGUk1dLFxcbitcXHRcXHRcXHQgICAgXFx1MDAyNm1vZCk7XFxuIFxcbiBcXHRjdHggPSBldGh0b29sX3J4ZmhfY3R4X2FsbG9jKG9wcywgZGF0YS5pbmRpcl9zaXplLCBkYXRhLmhrZXlfc2l6ZSk7XFxuIFxcdGlmICghY3R4KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjE5OjA1LjQ2ODI3OTAxNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzMjEyOTg4NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVRIVE9PTF9ORVRMSU5LXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXRobmxfcnNzX3NldFwiLFxuICAgIFwiZXRobmxfcnNzX2NyZWF0ZV9kb2l0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGV0aHRvb2wgbmV0bGluayBpbnRlcmZhY2Ugd2hlcmUgYSAzMi1iaXQgYXR0cmlidXRlIHdhcyBpbmNvcnJlY3RseSBwYXJzZWQgYXMgYW4gOC1iaXQgYXR0cmlidXRlLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgaW5jb3JyZWN0IGRhdGEuIFRoaXMgYWZmZWN0cyB0aGUgUlNTIGNvbmZpZ3VyYXRpb24gY29tbWFuZHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzM2YTdiNmVmYjZjZjM2MGFmMWY0ZjdhYTdlYjIxZDk2ZTIzZWM4MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDYgMDY6MTk6MDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvZXRodG9vbC9uZXRsaW5rLmggYi9uZXQvZXRodG9vbC9uZXRsaW5rLmhcbmluZGV4IGZkMjE5OGU0NWQyYmJhLi43MzNmYjNjM2E2M2E1ZCAxMDA2NDRcbi0tLSBhL25ldC9ldGh0b29sL25ldGxpbmsuaFxuKysrIGIvbmV0L2V0aHRvb2wvbmV0bGluay5oXG5AQCAtMTE1LDYgKzExNSwzNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXRobmxfdXBkYXRlX3U4KHU4ICpkc3QsIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXG4gXHQqbW9kID0gdHJ1ZTtcbiB9XG4gXG4rLyoqXG4rICogZXRobmxfdXBkYXRlX3U4X3UzMigpIC0gdXBkYXRlIHU4IHZhbHVlIGZyb20gYW4gTkxBX1UzMiBhdHRyaWJ1dGVcbisgKiBAZHN0OiAgdmFsdWUgdG8gdXBkYXRlXG4rICogQGF0dHI6IG5ldGxpbmsgYXR0cmlidXRlIHdpdGggbmV3IHZhbHVlIG9yIG51bGxcbisgKiBAbW9kOiAgcG9pbnRlciB0byBib29sIGZvciBtb2RpZmljYXRpb24gdHJhY2tpbmdcbisgKlxuKyAqIFNvbWUgYXR0cmlidXRlcyBhcmUgTkxBX1UzMiBvbiB0aGUgd2lyZSBidXQgYXJlIHN0b3JlZCBpbiBhIHU4LiBSZWFkIHRoZVxuKyAqIGZ1bGwgMzItYml0IHZhbHVlIGZyb20gTkxBX1UzMiBuZXRsaW5rIGF0dHJpYnV0ZSBAYXR0ciBhbmQgbmFycm93IGl0IGludG9cbisgKiB0aGUgdTggcG9pbnRlZCB0byBieSBAZHN0OyBkbyBub3RoaW5nIGlmIEBhdHRyIGlzIG51bGwuXG4rICogQm9vbCBwb2ludGVkIHRvIGJ5IEBtb2QgaXMgc2V0IHRvIHRydWUgaWYgdGhpcyBmdW5jdGlvbiBjaGFuZ2VkIHRoZSB2YWx1ZVxuKyAqIG9mICpkc3QsIG90aGVyd2lzZSBpdCBpcyBsZWZ0IGFzIGlzLlxuKyAqL1xuK3N0YXRpYyBpbmxpbmUgdm9pZCBldGhubF91cGRhdGVfdThfdTMyKHU4ICpkc3QsIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXG4rXHRcdFx0XHQgICAgICAgYm9vbCAqbW9kKVxuK3tcbitcdHUzMiB2YWw7XG4rXG4rXHRpZiAoIWF0dHIpXG4rXHRcdHJldHVybjtcbitcdHZhbCA9IG5sYV9nZXRfdTMyKGF0dHIpO1xuK1x0REVCVUdfTkVUX1dBUk5fT05fT05DRSh2YWwgXHUwMDNlIFU4X01BWCk7XG4rXHRpZiAoKmRzdCA9PSB2YWwpXG4rXHRcdHJldHVybjtcbitcbitcdCpkc3QgPSB2YWw7XG4rXHQqbW9kID0gdHJ1ZTtcbit9XG4rXG4gLyoqXG4gICogZXRobmxfdXBkYXRlX2Jvb2wzMigpIC0gdXBkYXRlIHUzMiB1c2VkIGFzIGJvb2wgZnJvbSBOTEFfVTggYXR0cmlidXRlXG4gICogQGRzdDogIHZhbHVlIHRvIHVwZGF0ZVxuZGlmZiAtLWdpdCBhL25ldC9ldGh0b29sL3Jzcy5jIGIvbmV0L2V0aHRvb2wvcnNzLmNcbmluZGV4IDUzNzkyZjUzZjkyMjlmLi5jYTZlZDE1MmMyYmUzMyAxMDA2NDRcbi0tLSBhL25ldC9ldGh0b29sL3Jzcy5jXG4rKysgYi9uZXQvZXRodG9vbC9yc3MuY1xuQEAgLTU3NCw3ICs1NzQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZXRobmxfcnNzX2Zsb3dzX3BvbGljeVtdID0ge1xuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGV0aG5sX3Jzc19zZXRfcG9saWN5W0VUSFRPT0xfQV9SU1NfRkxPV19IQVNIICsgMV0gPSB7XG4gXHRbRVRIVE9PTF9BX1JTU19IRUFERVJdID0gTkxBX1BPTElDWV9ORVNURUQoZXRobmxfaGVhZGVyX3BvbGljeSksXG4gXHRbRVRIVE9PTF9BX1JTU19DT05URVhUXSA9IHsgLnR5cGUgPSBOTEFfVTMyLCB9LFxuLVx0W0VUSFRPT0xfQV9SU1NfSEZVTkNdID0gTkxBX1BPTElDWV9NSU4oTkxBX1UzMiwgMSksXG4rXHRbRVRIVE9PTF9BX1JTU19IRlVOQ10gPSBOTEFfUE9MSUNZX1JBTkdFKE5MQV9VMzIsIDEsIFU4X01BWCksXG4gXHRbRVRIVE9PTF9BX1JTU19JTkRJUl0gPSB7IC50eXBlID0gTkxBX0JJTkFSWSwgfSxcbiBcdFtFVEhUT09MX0FfUlNTX0hLRVldID0gTkxBX1BPTElDWV9NSU4oTkxBX0JJTkFSWSwgMSksXG4gXHRbRVRIVE9PTF9BX1JTU19JTlBVVF9YRlJNXSA9XG5AQCAtODU1LDcgKzg1NSw3IEBAIGV0aG5sX3Jzc19zZXQoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfaW5mbywgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiBcdGluZGlyX21vZCA9ICEhdGJbRVRIVE9PTF9BX1JTU19JTkRJUl07XG4gXG4gXHRyeGZoLmhmdW5jID0gZGF0YS5oZnVuYztcbi1cdGV0aG5sX3VwZGF0ZV91OChcdTAwMjZyeGZoLmhmdW5jLCB0YltFVEhUT09MX0FfUlNTX0hGVU5DXSwgXHUwMDI2bW9kKTtcbitcdGV0aG5sX3VwZGF0ZV91OF91MzIoXHUwMDI2cnhmaC5oZnVuYywgdGJbRVRIVE9PTF9BX1JTU19IRlVOQ10sIFx1MDAyNm1vZCk7XG4gXHRpZiAocnhmaC5oZnVuYyA9PSBkYXRhLmhmdW5jKVxuIFx0XHRyeGZoLmhmdW5jID0gRVRIX1JTU19IQVNIX05PX0NIQU5HRTtcbiBcbkBAIC04NjQsNyArODY0LDggQEAgZXRobmxfcnNzX3NldChzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9pbmZvLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0XHRnb3RvIGV4aXRfZnJlZV9pbmRpcjtcbiBcbiBcdHJ4ZmguaW5wdXRfeGZybSA9IGRhdGEuaW5wdXRfeGZybTtcbi1cdGV0aG5sX3VwZGF0ZV91OChcdTAwMjZyeGZoLmlucHV0X3hmcm0sIHRiW0VUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTV0sIFx1MDAyNm1vZCk7XG4rXHRldGhubF91cGRhdGVfdThfdTMyKFx1MDAyNnJ4ZmguaW5wdXRfeGZybSwgdGJbRVRIVE9PTF9BX1JTU19JTlBVVF9YRlJNXSxcbitcdFx0XHQgICAgXHUwMDI2bW9kKTtcbiBcdHhmcm1fc3ltID0gcnhmaC5pbnB1dF94ZnJtIHx8IGRhdGEuaW5wdXRfeGZybTtcbiBcdGlmIChyeGZoLmlucHV0X3hmcm0gPT0gZGF0YS5pbnB1dF94ZnJtKVxuIFx0XHRyeGZoLmlucHV0X3hmcm0gPSBSWEhfWEZSTV9OT19DSEFOR0U7XG5AQCAtOTM4LDcgKzkzOSw3IEBAIGNvbnN0IHN0cnVjdCBldGhubF9yZXF1ZXN0X29wcyBldGhubF9yc3NfcmVxdWVzdF9vcHMgPSB7XG4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZXRobmxfcnNzX2NyZWF0ZV9wb2xpY3lbRVRIVE9PTF9BX1JTU19JTlBVVF9YRlJNICsgMV0gPSB7XG4gXHRbRVRIVE9PTF9BX1JTU19IRUFERVJdXHQ9IE5MQV9QT0xJQ1lfTkVTVEVEKGV0aG5sX2hlYWRlcl9wb2xpY3kpLFxuIFx0W0VUSFRPT0xfQV9SU1NfQ09OVEVYVF1cdD0gTkxBX1BPTElDWV9NSU4oTkxBX1UzMiwgMSksXG4tXHRbRVRIVE9PTF9BX1JTU19IRlVOQ11cdD0gTkxBX1BPTElDWV9NSU4oTkxBX1UzMiwgMSksXG4rXHRbRVRIVE9PTF9BX1JTU19IRlVOQ11cdD0gTkxBX1BPTElDWV9SQU5HRShOTEFfVTMyLCAxLCBVOF9NQVgpLFxuIFx0W0VUSFRPT0xfQV9SU1NfSU5ESVJdXHQ9IE5MQV9QT0xJQ1lfTUlOKE5MQV9CSU5BUlksIDEpLFxuIFx0W0VUSFRPT0xfQV9SU1NfSEtFWV1cdD0gTkxBX1BPTElDWV9NSU4oTkxBX0JJTkFSWSwgMSksXG4gXHRbRVRIVE9PTF9BX1JTU19JTlBVVF9YRlJNXSA9XG5AQCAtMTA1NCwxNCArMTA1NSwxNSBAQCBpbnQgZXRobmxfcnNzX2NyZWF0ZV9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXHRcdGdvdG8gZXhpdF9jbGVhbl9kYXRhO1xuIFx0aW5kaXJfdXNlcl9zaXplID0gcmV0O1xuIFxuLVx0ZXRobmxfdXBkYXRlX3U4KFx1MDAyNnJ4ZmguaGZ1bmMsIHRiW0VUSFRPT0xfQV9SU1NfSEZVTkNdLCBcdTAwMjZtb2QpO1xuK1x0ZXRobmxfdXBkYXRlX3U4X3UzMihcdTAwMjZyeGZoLmhmdW5jLCB0YltFVEhUT09MX0FfUlNTX0hGVU5DXSwgXHUwMDI2bW9kKTtcbiBcbiBcdHJldCA9IHJzc19zZXRfcHJlcF9oa2V5KGRldiwgaW5mbywgXHUwMDI2ZGF0YSwgXHUwMDI2cnhmaCwgXHUwMDI2bW9kKTtcbiBcdGlmIChyZXQpXG4gXHRcdGdvdG8gZXhpdF9mcmVlX2luZGlyO1xuIFxuIFx0cnhmaC5pbnB1dF94ZnJtID0gUlhIX1hGUk1fTk9fQ0hBTkdFO1xuLVx0ZXRobmxfdXBkYXRlX3U4KFx1MDAyNnJ4ZmguaW5wdXRfeGZybSwgdGJbRVRIVE9PTF9BX1JTU19JTlBVVF9YRlJNXSwgXHUwMDI2bW9kKTtcbitcdGV0aG5sX3VwZGF0ZV91OF91MzIoXHUwMDI2cnhmaC5pbnB1dF94ZnJtLCB0YltFVEhUT09MX0FfUlNTX0lOUFVUX1hGUk1dLFxuK1x0XHRcdCAgICBcdTAwMjZtb2QpO1xuIFxuIFx0Y3R4ID0gZXRodG9vbF9yeGZoX2N0eF9hbGxvYyhvcHMsIGRhdGEuaW5kaXJfc2l6ZSwgZGF0YS5oa2V5X3NpemUpO1xuIFx0aWYgKCFjdHgpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjE5OjA1LjQ2ODI4MDkxNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MjEyNjQzODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSU1MgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIHRvdWNoaW5nIGBuZXQvZXRodG9vbC9yc3MuY2AgYW5kIGBuZXQvZXRodG9vbC9uZXRsaW5rLmhgLiBSaWdodCBvZmYgdGhlIGJhdCwgaXQncyBpbnRyb2R1Y2luZyB0aGlzIG5ldyBmdW5jdGlvbiwgYGV0aG5sX3VwZGF0ZV91OF91MzJgLiBUaGUgbmFtZSBpcyBwcmV0dHkgc2VsZi1leHBsYW5hdG9yeSDigJMgaXQncyByZWFkaW5nIGEgMzItYml0IG5ldGxpbmsgYXR0cmlidXRlLCBgTkxBX1UzMmAsIGFuZCBzb21laG93IHN0b3JpbmcgdGhhdCBkYXRhIGludG8gYW4gOC1iaXQsIGB1OGAgdmFyaWFibGUuIFRoYXQncyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZywgYW5kIEknbSBndWVzc2luZyB0aGlzIGhhcyB0byBkbyB3aXRoIHNvbWUga2luZCBvZiB0eXBlIGNvbnZlcnNpb24gb3IgY29uc3RyYWludC5cblxuVGhlIHBhdGNoIHNlZW1zIHRvIGJlIHJlcGxhY2luZyB0aGUgb2xkZXIgYGV0aG5sX3VwZGF0ZV91OGAgd2l0aCB0aGlzIG5ldyBvbmUgaW4gYGV0aG5sX3Jzc19zZXRgIGFuZCBgZXRobmxfcnNzX2NyZWF0ZV9kb2l0YCDigJMgc3BlY2lmaWNhbGx5IGZvciBgRVRIVE9PTF9BX1JTU19IRlVOQ2AgYW5kIGBFVEhUT09MX0FfUlNTX0lOUFVUX1hGUk1gLiBUaGF0IHNpZ25hbHMgYSBkaXJlY3QgZnVuY3Rpb25hbCBjaGFuZ2UuIEFsc28sIHRoZSBwb2xpY3kgZGVmaW5pdGlvbnMsIGBldGhubF9yc3Nfc2V0X3BvbGljeWAgYW5kIGBldGhubF9yc3NfY3JlYXRlX3BvbGljeWAsIGFyZSBiZWluZyB1cGRhdGVkIHRvby4gSXQncyBzaGlmdGluZyB0aGUgcG9saWN5IGZvciBgRVRIVE9PTF9BX1JTU19IRlVOQ2AgZnJvbSBhIGBOTEFfUE9MSUNZX01JTihOTEFfVTMyLCAxKWAgdG8gYE5MQV9QT0xJQ1lfUkFOR0UoTkxBX1UzMiwgMSwgVThfTUFYKWAuIFRoZSBwb2xpY3kgc2hpZnQgc3Ryb25nbHkgaW5kaWNhdGVzIGEgZGF0YSB0eXBlIGlzc3VlIHdhcyBwcmVzZW50IGJlZm9yZS5cblxuQWgsIG9rYXksIEkgc2VlIGl0IG5vdy4gVGhpcyBpcyBhIGZpeCwgYSBidWdmaXggc3BlY2lmaWNhbGx5ISBUaGUgb3JpZ2luYWwgY29kZSB3YXMgdXNpbmcgYGV0aG5sX3VwZGF0ZV91OGAgb24gYW4gYXR0cmlidXRlIHRoYXQgKnNob3VsZCogaGF2ZSBiZWVuIGBOTEFfVTMyYCBmcm9tIHRoZSB3aXJlLCBhY2NvcmRpbmcgdG8gdGhlIGBOTEFfUE9MSUNZX01JTihOTEFfVTMyLCAxKWAgcG9saWN5IGZvciBgRVRIVE9PTF9BX1JTU19IRlVOQ2AuIFVzaW5nIGBldGhubF91cGRhdGVfdThgIGluIHRoYXQgc2NlbmFyaW8gaXMgaW5oZXJlbnRseSB3cm9uZzsgaXQgZXhwZWN0cyBhbiBgTkxBX1U4YCwgYW5kIGlmIHdlIGZlZWQgaXQgYSAzMi1iaXQgdmFsdWUsIGl0IHdvdWxkIGVpdGhlciByZWFkIGdhcmJhZ2Ugb3IgcG90ZW50aWFsbHkgY2F1c2UgYW4gb3V0LW9mLWJvdW5kcyByZWFkLiBUaGlzIGNoYW5nZSByZWN0aWZpZXMgdGhhdC5cblxuTm93LCBiZWZvcmUgSSBzaWduIG9mZiBvbiB0aGlzLCBJIG5lZWQgdG8gdmVyaWZ5IGEgY291cGxlIG9mIHRoaW5ncywgYXMgdGhpcyB0b3VjaGVzIGNvcmUgbmV0d29ya2luZy4gTGV0J3MgbWFrZSBzdXJlIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGluIG9yZGVyLiBFVEhUT09MIG5ldGxpbmsgaXMgdHlwaWNhbGx5IHBhcnQgb2YgdGhlIGNvcmUgbmV0d29yayBzdGFjay4gU28sIGl0J3MgZWl0aGVyIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBjb250cm9sbGVkIGJ5IGBDT05GSUdfRVRIVE9PTF9ORVRMSU5LYC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIGBuZXQvZXRodG9vbC9LY29uZmlnYCBvciBtYXliZSBgbmV0L0tjb25maWdgIHRvIGNvbmZpcm0gdGhlcmUgYXJlbid0IGFueSB3ZWlyZCBjb25maWcgZGVwZW5kZW5jaWVzIHRoYXQgY291bGQgYmUgaW1wYWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MjAsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjoxOToxMi4yODk1NDcyODdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU1Mjc5ODkxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfRVRIVE9PTF9ORVRMSU5LXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvb3BlbnJpc2MvY29uZmlncy9vcjFrbGl0ZXhfZGVmY29uZmlnPTIyPUNPTkZJR19JTkVUX1JBV19ESUFHPXlcXG5hcmNoL29wZW5yaXNjL2NvbmZpZ3Mvb3Ixa2xpdGV4X2RlZmNvbmZpZy0yMy0jIENPTkZJR19XSVJFTEVTUyBpcyBub3Qgc2V0XFxuYXJjaC9vcGVucmlzYy9jb25maWdzL29yMWtsaXRleF9kZWZjb25maWc6MjQ6IyBDT05GSUdfRVRIVE9PTF9ORVRMSU5LIGlzIG5vdCBzZXRcXG5hcmNoL29wZW5yaXNjL2NvbmZpZ3Mvb3Ixa2xpdGV4X2RlZmNvbmZpZy0yNS1DT05GSUdfREVWVE1QRlM9eVxcbi0tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvemZjcGR1bXBfZGVmY29uZmlnPTI5PUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvemZjcGR1bXBfZGVmY29uZmlnLTMxLSMgQ09ORklHX1BDUFVfREVWX1JFRkNOVCBpcyBub3Qgc2V0XFxuYXJjaC9zMzkwL2NvbmZpZ3MvemZjcGR1bXBfZGVmY29uZmlnOjMyOiMgQ09ORklHX0VUSFRPT0xfTkVUTElOSyBpcyBub3Qgc2V0XFxuYXJjaC9zMzkwL2NvbmZpZ3MvemZjcGR1bXBfZGVmY29uZmlnLTMzLUNPTkZJR19ERVZUTVBGUz15XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2xfbmV0bGluay5oPTIwPXN0cnVjdCBwaHlfZGV2aWNlO1xcbmluY2x1ZGUvbGludXgvZXRodG9vbF9uZXRsaW5rLmgtMjEtXFxuaW5jbHVkZS9saW51eC9ldGh0b29sX25ldGxpbmsuaDoyMjojaWYgSVNfRU5BQkxFRChDT05GSUdfRVRIVE9PTF9ORVRMSU5LKVxcbmluY2x1ZGUvbGludXgvZXRodG9vbF9uZXRsaW5rLmgtMjMtaW50IGV0aG5sX2NhYmxlX3Rlc3RfYWxsb2Moc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggY21kKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvZXRodG9vbF9uZXRsaW5rLmg9MTI1PXN0YXRpYyBpbmxpbmUgdm9pZCBldGhubF9wc2Vfc2VuZF9udGYoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmluY2x1ZGUvbGludXgvZXRodG9vbF9uZXRsaW5rLmgtMTI5LVxcbmluY2x1ZGUvbGludXgvZXRodG9vbF9uZXRsaW5rLmg6MTMwOiNlbmRpZiAvKiBJU19FTkFCTEVEKENPTkZJR19FVEhUT09MX05FVExJTkspICovXFxuaW5jbHVkZS9saW51eC9ldGh0b29sX25ldGxpbmsuaC0xMzEtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTUyODE9dm9pZCBuZXRkZXZfYm9uZGluZ19pbmZvX2NoYW5nZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01MjgzLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6NTI4NDojaWYgSVNfRU5BQkxFRChDT05GSUdfRVRIVE9PTF9ORVRMSU5LKVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTI4NS12b2lkIGV0aHRvb2xfbm90aWZ5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBjbWQpO1xcbi0tXFxubmV0L2V0aHRvb2wvTWFrZWZpbGU9Mz1vYmoteVxcdFxcdFxcdFxcdCs9IGlvY3RsLm8gY29tbW9uLm9cXG5uZXQvZXRodG9vbC9NYWtlZmlsZS00LVxcbm5ldC9ldGh0b29sL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX0VUSFRPT0xfTkVUTElOSylcXHQrPSBldGh0b29sX25sLm9cXG5uZXQvZXRodG9vbC9NYWtlZmlsZS02LVxcbi0tXFxubmV0L2V0aHRvb2wvY29tbW9uLmg9ODE9Ym9vbCBfX2V0aHRvb2xfZGV2X21tX3N1cHBvcnRlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG5uZXQvZXRodG9vbC9jb21tb24uaC04Mi1cXG5uZXQvZXRodG9vbC9jb21tb24uaDo4MzojaWYgSVNfRU5BQkxFRChDT05GSUdfRVRIVE9PTF9ORVRMSU5LKVxcbm5ldC9ldGh0b29sL2NvbW1vbi5oLTg0LXZvaWQgZXRodG9vbF9yc3Nfbm90aWZ5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiB0eXBlLCB1MzIgcnNzX2NvbnRleHQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjoxOToxNC44NDIzNTI5ODhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzUzNzEyNzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgQ09ORklHX0VUSFRPT0xfTkVUTElOS2AgQ29uZmlndXJhdGlvbiBPcHRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIHJldm9sdmVzIGFyb3VuZCBgQ09ORklHX0VUSFRPT0xfTkVUTElOS2AuIFJpZ2h0LCB0aGF0J3MgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIEkgbmVlZCB0byB2ZXJpZnkuIE15IGZpcnN0IG1vdmUgaXMgYWx3YXlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UuIFRoZSBgbmV0L0tjb25maWdgIGZpbGUgaXMgdGhlIGRlZmluaXRpdmUgYXV0aG9yaXR5IG9uIHRoZXNlIHNldHRpbmdzLiBJIG5lZWQgdG8gcXVpY2tseSBjb25maXJtIGl0cyBleGlzdGVuY2UgYW5kLCBtb3JlIGltcG9ydGFudGx5LCB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMgYW5kIGltcGxpY2F0aW9ucyBiZWZvcmUgSSBnbyBhbnkgZnVydGhlci4gR290dGEgbWFrZSBzdXJlIHRoaXMgdGhpbmcncyBldmVuIGRlZmluZWQsIG9yIGlmIHRoZXJlJ3Mgc29tZSBjb25kaXRpb25hbCBsb2dpYyBJIG5lZWQgdG8gY29uc2lkZXIuIExldCdzIHNlZSB3aGF0IGBuZXQvS2NvbmZpZ2AgaGFzIHRvIHNheS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM0OCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjE5OjE4LjU5NjA2ODMzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NzIyNTgxNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEVUSFRPT0xfTkVUTElOS1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvS2NvbmZpZz01MDg9Y29uZmlnIEZBSUxPVkVSXFxuLS1cXG5uZXQvS2NvbmZpZy01MjAtXFxubmV0L0tjb25maWc6NTIxOmNvbmZpZyBFVEhUT09MX05FVExJTktcXG5uZXQvS2NvbmZpZy01MjItXFx0Ym9vbCBcXFwiTmV0bGluayBpbnRlcmZhY2UgZm9yIGV0aHRvb2xcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjE5OjIxLjA2ODMzMjM3OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NTc0Mjg3ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgRVRIVE9PTF9ORVRMSU5LIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBgRVRIVE9PTF9ORVRMSU5LYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gaGVyZS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCB3aGljaCBmdW5jdGlvbnMgYXJlIHRoZSBtb3N0IHByb21pc2luZyBjYW5kaWRhdGVzIGZvciBmdXp6aW5nPyBCYXNlZCBvbiB0aGUgY2hhbmdlcywgaXQgbG9va3MgbGlrZSBgZXRobmxfcnNzX3NldGAgYW5kIGBldGhubF9yc3NfY3JlYXRlX2RvaXRgIGFyZSB0aGUgcHJpbWFyeSB0YXJnZXRzLiBCdXQgaXQncyB3b3J0aCBhIHF1aWNrIGF1ZGl0IHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIHRoYXQgbWlnaHQgYmUgaW50ZXJlc3RpbmcuIEFoLCByaWdodCwgdGhlcmUncyBgZXRobmxfdXBkYXRlX3U4X3UzMmAsIHdoaWNoIGlzIGEgc3RhdGljIGlubGluZSBmdW5jdGlvbiBkZWZpbmVkIGluIGBuZXQvZXRodG9vbC9uZXRsaW5rLmhgLiBBbmQsIGFzIHN1c3BlY3RlZCwgdGhhdCdzIGNhbGxlZCBkaXJlY3RseSBieSB0aGUgdHdvIGZ1bmN0aW9ucyBJIGFscmVhZHkgaWRlbnRpZmllZDogYGV0aG5sX3Jzc19zZXRgIGFuZCBgZXRobmxfcnNzX2NyZWF0ZV9kb2l0YC4gU28sIGZ1enppbmcgYGV0aG5sX3Jzc19zZXRgIGFuZCBgZXRobmxfcnNzX2NyZWF0ZV9kb2l0YCwgZWZmZWN0aXZlbHkgY292ZXJzIHRoZSBzdGF0aWMgaW5saW5lIGFzIHdlbGwuIEdvb2QuIFRoYXQncyBhIGZvY3VzZWQgc3RhcnRpbmcgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2MzQsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6MTk6MjQuOTI1NzY0MjYxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNTgwOTk5NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXRobmxfcnNzX3NldFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvZXRodG9vbC9uZXRsaW5rLmM9MTEzNT1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfb3BzIGV0aHRvb2xfZ2VubF9vcHNbXSA9IHtcXG4tLVxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNTIyLVxcdFxcdC5kb2l0XFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxNTIzOlxcdFxcdC5wb2xpY3kgPSBldGhubF9yc3Nfc2V0X3BvbGljeSxcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6MTUyNDpcXHRcXHQubWF4YXR0ciA9IEFSUkFZX1NJWkUoZXRobmxfcnNzX3NldF9wb2xpY3kpIC0gMSxcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTUyNS1cXHR9LFxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5oPTUxNz1leHRlcm4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZXRobmxfcnNzX2dldF9wb2xpY3lbRVRIVE9PTF9BX1JTU19TVEFSVF9DT05URVhUICsgMV07XFxubmV0L2V0aHRvb2wvbmV0bGluay5oOjUxODpleHRlcm4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZXRobmxfcnNzX3NldF9wb2xpY3lbRVRIVE9PTF9BX1JTU19GTE9XX0hBU0ggKyAxXTtcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmgtNTE5LWV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBldGhubF9yc3NfY3JlYXRlX3BvbGljeVtFVEhUT09MX0FfUlNTX0lOUFVUX1hGUk0gKyAxXTtcXG4tLVxcbm5ldC9ldGh0b29sL3Jzcy5jPTU0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZXRobmxfcnNzX2Zsb3dzX3BvbGljeVtdID0ge1xcbi0tXFxubmV0L2V0aHRvb2wvcnNzLmMtNTczLVxcbm5ldC9ldGh0b29sL3Jzcy5jOjU3NDpjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBldGhubF9yc3Nfc2V0X3BvbGljeVtFVEhUT09MX0FfUlNTX0ZMT1dfSEFTSCArIDFdID0ge1xcbm5ldC9ldGh0b29sL3Jzcy5jLTU3NS1cXHRbRVRIVE9PTF9BX1JTU19IRUFERVJdID0gTkxBX1BPTElDWV9ORVNURUQoZXRobmxfaGVhZGVyX3BvbGljeSksXFxuLS1cXG5uZXQvZXRodG9vbC9yc3MuYz01ODU9c3RhdGljIGludFxcbm5ldC9ldGh0b29sL3Jzcy5jOjU4NjpldGhubF9yc3Nfc2V0X3ZhbGlkYXRlKHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2luZm8sIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxubmV0L2V0aHRvb2wvcnNzLmMtNTg3LXtcXG4tLVxcbm5ldC9ldGh0b29sL3Jzcy5jPTgyNz1zdGF0aWMgaW50XFxubmV0L2V0aHRvb2wvcnNzLmM6ODI4OmV0aG5sX3Jzc19zZXQoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfaW5mbywgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvZXRodG9vbC9yc3MuYy04Mjkte1xcbi0tXFxubmV0L2V0aHRvb2wvcnNzLmM9OTE5PWNvbnN0IHN0cnVjdCBldGhubF9yZXF1ZXN0X29wcyBldGhubF9yc3NfcmVxdWVzdF9vcHMgPSB7XFxuLS1cXG5uZXQvZXRodG9vbC9yc3MuYy05MzEtXFxubmV0L2V0aHRvb2wvcnNzLmM6OTMyOlxcdC5zZXRfdmFsaWRhdGVcXHRcXHQ9IGV0aG5sX3Jzc19zZXRfdmFsaWRhdGUsXFxubmV0L2V0aHRvb2wvcnNzLmM6OTMzOlxcdC5zZXRcXHRcXHRcXHQ9IGV0aG5sX3Jzc19zZXQsXFxubmV0L2V0aHRvb2wvcnNzLmMtOTM0LVxcdC5zZXRfbnRmX2NtZFxcdFxcdD0gRVRIVE9PTF9NU0dfUlNTX05URixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6MTk6MjcuMjgzODY5NTc4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4MDEyNjEwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgZnVuY3Rpb25zLlxuXG4qKkRlY29uc3RydWN0aW5nIHRoZSBSU1MgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIG15IGZvY3VzIGhlcmUgaXMgb24gdW5kZXJzdGFuZGluZyBob3cgUlNTIGlzIGJlaW5nIHNldCB1cCB3aXRoaW4gdGhpcyBzeXN0ZW0uIEkgc2VlIGBldGhubF9yc3Nfc2V0YCBhbmQgYGV0aG5sX3Jzc19jcmVhdGVfZG9pdGAg4oCTIHRob3NlIGFyZSB0aGUga2V5IHBsYXllcnMsIHJpZ2h0PyBNeSBpbnN0aW5jdCBpcyB0byBkaXZlIGRpcmVjdGx5IGludG8gYGV0aG5sX3Jzc19jcmVhdGVfZG9pdGAuIEl0IHNvdW5kcyBsaWtlIHRoZSBcImRvZXJcIiBvZiB0aGUgY3JlYXRpb24gcHJvY2Vzcywgc28gaXQgd2lsbCBsaWtlbHkgaG9sZCB0aGUgY29yZSBsb2dpYyBJJ20gaW50ZXJlc3RlZCBpbi4gTGV0J3Mgc2VlIHdoYXQgaW5mb3JtYXRpb24gSSBjYW4gZ2xlYW4gZnJvbSB0aGVyZS4gSSdtIGdvaW5nIHRvIHN0YXJ0IHB1bGxpbmcgdGhhdCBhcGFydCBpbiBteSBtaW5kLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NTIsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjoxOTozMC40NjM5OTgyNTdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MDEwNjQ4NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXRobmxfcnNzX2NyZWF0ZV9kb2l0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9ldGh0b29sL25ldGxpbmsuYz0xMTM1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9vcHMgZXRodG9vbF9nZW5sX29wc1tdID0ge1xcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTE1MjgtXFx0XFx0LmZsYWdzXFx0PSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxNTI5OlxcdFxcdC5kb2l0XFx0PSBldGhubF9yc3NfY3JlYXRlX2RvaXQsXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTE1MzAtXFx0XFx0LnBvbGljeVxcdD0gZXRobmxfcnNzX2NyZWF0ZV9wb2xpY3ksXFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmg9NTQzPWludCBldGhubF90c2luZm9fZG9uZShzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpO1xcbm5ldC9ldGh0b29sL25ldGxpbmsuaDo1NDQ6aW50IGV0aG5sX3Jzc19jcmVhdGVfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKTtcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmgtNTQ1LWludCBldGhubF9yc3NfZGVsZXRlX2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XFxuLS1cXG5uZXQvZXRodG9vbC9yc3MuYz05ODY9ZXRobmxfcnNzX2NyZWF0ZV9zZW5kX250Zihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqcnNwLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L2V0aHRvb2wvcnNzLmMtMTAwNi1cXG5uZXQvZXRodG9vbC9yc3MuYzoxMDA3OmludCBldGhubF9yc3NfY3JlYXRlX2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvZXRodG9vbC9yc3MuYy0xMDA4LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6MTk6MzMuMDY1MDY4NDA0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1OTc0NDQwODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRVRIVE9PTCBOZXRsaW5rIEJ1ZyoqXG5cbk9rYXksIHNvIEkndmUgcGlucG9pbnRlZCB0aGUgYnVnOiBpdCdzIHdpdGhpbiB0aGUgbmV0bGluayBwYXJzaW5nLCBzcGVjaWZpY2FsbHkgaG93IGBFVEhUT09MX0FfUlNTX0hGVU5DYCBhbmQgYEVUSFRPT0xfQV9SU1NfSU5QVVRfWEZSTWAgYXJlIGhhbmRsZWQuIFRoZSBwYXRjaCB1c2VzIGBldGhubF91cGRhdGVfdThfdTMyYCB0byBjb3JyZWN0IHRoaXMuIFRoaXMgZnVuY3Rpb24gcmVhZHMgYSAzMi1iaXQgdmFsdWUgYW5kIHRoZW4gc3RvcmVzIGl0IGludG8gYW4gOC1iaXQsIHdoaWNoIGlzIHRoZSByb290IGNhdXNlIG9mIHRoaXMgZXJyb3IuIFNvdW5kcyBsaWtlIGEgY2xhc3NpYyBjYXNlIG9mIHR5cGUgY29uZnVzaW9uIGxlYWRpbmcgdG8gcG90ZW50aWFsIG1lbW9yeSBpc3N1ZXMuXG5cbkdpdmVuIHRoZSBmaXgsIHRoaXMgaXMgKmFic29sdXRlbHkqIHdvcnRoIGZ1enppbmcuIEkgbmVlZCB0byBmb2N1cyBteSBlZmZvcnRzIG9uIGBldGhubF9yc3Nfc2V0YCBhbmQgYGV0aG5sX3Jzc19jcmVhdGVfZG9pdGAuIFRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIEkgd2FudCB0byB0YXJnZXQgd2l0aCBteSBmdXp6aW5nIGNhbXBhaWduLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIGNvbmZpcm0gdGhlIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb24uIEFoLCB5ZXMsIGBFVEhUT09MX05FVExJTktgIGlzIHRoZSByZWxldmFudCBjb25maWcuIE5vdGhpbmcgZWxzZSBpcyBuZWVkZWQuXG5cbkVzc2VudGlhbGx5LCB0aGUgcGF0Y2ggaXMgZml4aW5nIGEgdnVsbmVyYWJpbGl0eSBpbiB0aGUgRVRIVE9PTCBuZXRsaW5rIGludGVyZmFjZS4gSXQgYXBwZWFycyB0aGF0IGl0IHdhcyBpbmNvcnJlY3RseSBwYXJzaW5nIGEgMzItYml0IGF0dHJpYnV0ZSBhcyBhbiA4LWJpdCBhdHRyaWJ1dGUsIGFuZCB0aGF0IHRoaXMgY291bGQgaGF2ZSByZXN1bHRlZCBpbiBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIGluY29ycmVjdCBkYXRhLCBlc3BlY2lhbGx5IGluIHRoZSBSU1MgY29uZmlndXJhdGlvbiBjb21tYW5kcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM0NSwiT3V0cHV0VG9rZW5zIjoxMTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6MTk6MzguNjYyNTE1Njk2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI3MDU3MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFVEhUT09MX05FVExJTktcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJldGhubF9yc3Nfc2V0XCIsXG4gICAgXCJldGhubF9yc3NfY3JlYXRlX2RvaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgZXRodG9vbCBuZXRsaW5rIGludGVyZmFjZSB3aGVyZSBhIDMyLWJpdCBhdHRyaWJ1dGUgd2FzIGluY29ycmVjdGx5IHBhcnNlZCBhcyBhbiA4LWJpdCBhdHRyaWJ1dGUsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBvciBpbmNvcnJlY3QgZGF0YS4gVGhpcyBhZmZlY3RzIHRoZSBSU1MgY29uZmlndXJhdGlvbiBjb21tYW5kcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFVEhUT09MX05FVExJTktcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJldGhubF9yc3Nfc2V0XCIsXG4gICAgXCJldGhubF9yc3NfY3JlYXRlX2RvaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgZXRodG9vbCBuZXRsaW5rIGludGVyZmFjZSB3aGVyZSBhIDMyLWJpdCBhdHRyaWJ1dGUgd2FzIGluY29ycmVjdGx5IHBhcnNlZCBhcyBhbiA4LWJpdCBhdHRyaWJ1dGUsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBvciBpbmNvcnJlY3QgZGF0YS4gVGhpcyBhZmZlY3RzIHRoZSBSU1MgY29uZmlndXJhdGlvbiBjb21tYW5kcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowvqpqd[1] Phase: Succeeded StartedAt: 2026-07-06 06:22:30 +0000 UTC FinishedAt: 2026-07-06 06:22:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvqpqd[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-06 06:22:30 +0000 UTC FinishedAt: 2026-07-06 06:22:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvqpqd[2] Phase: Succeeded StartedAt: 2026-07-06 06:22:30 +0000 UTC FinishedAt: 2026-07-06 10:26:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-06 06:22:30 +0000 UTC FinishedAt: 2026-07-06 10:26:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-06 06:22:30 +0000 UTC FinishedAt: 2026-07-06 06:22:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-06 06:22:30 +0000 UTC FinishedAt: 2026-07-06 06:22:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvqpqd/series-workflowvqpqd-convert-artifact-627080201/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-06 06:22:50 +0000 UTC FinishedAt: 2026-07-06 06:47:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-06 06:22:50 +0000 UTC FinishedAt: 2026-07-06 06:47:04 +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:*b3c09805-49f3-4b57-ae85-5f2870177293,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-workflowvqpqd/series-workflowvqpqd-convert-artifact-627080201/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": "50d93a33-b12f-4aa3-a476-f2401f1fcac9", "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-workflowvqpqd/series-workflowvqpqd-build-action-704197863/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-06 06:22:50 +0000 UTC FinishedAt: 2026-07-06 06:46:42 +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:*b3c09805-49f3-4b57-ae85-5f2870177293,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-workflowvqpqd/series-workflowvqpqd-convert-artifact-627080201/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": "50d93a33-b12f-4aa3-a476-f2401f1fcac9", "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-workflowvqpqd/series-workflowvqpqd-build-action-704197863/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-06 06:47:04 +0000 UTC FinishedAt: 2026-07-06 06:47:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-06 06:47:04 +0000 UTC FinishedAt: 2026-07-06 06:47:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-06 06:47:04 +0000 UTC FinishedAt: 2026-07-06 06:47:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-06 06:47:04 +0000 UTC FinishedAt: 2026-07-06 06:47:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvqpqd/series-workflowvqpqd-convert-artifact-1411486748/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-06 06:47:36 +0000 UTC FinishedAt: 2026-07-06 06:49:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-06 06:47:36 +0000 UTC FinishedAt: 2026-07-06 06:49:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*50d93a33-b12f-4aa3-a476-f2401f1fcac9,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-workflowvqpqd/series-workflowvqpqd-build-action-704197863/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-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-06 06:49:33 +0000 UTC FinishedAt: 2026-07-06 06:49:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-06 06:49:33 +0000 UTC FinishedAt: 2026-07-06 06:49:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-06 06:49:33 +0000 UTC FinishedAt: 2026-07-06 07:21:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-06 06:49:33 +0000 UTC FinishedAt: 2026-07-06 07:21:25 +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:*b3c09805-49f3-4b57-ae85-5f2870177293,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-workflowvqpqd/series-workflowvqpqd-convert-artifact-1411486748/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": "d6cc1d18-c173-4540-88ce-02a269d0bda8", "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-workflowvqpqd/series-workflowvqpqd-build-action-3289855864/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-06 06:49:33 +0000 UTC FinishedAt: 2026-07-06 07:21:15 +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:*b3c09805-49f3-4b57-ae85-5f2870177293,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-workflowvqpqd/series-workflowvqpqd-convert-artifact-1411486748/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": "d6cc1d18-c173-4540-88ce-02a269d0bda8", "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-workflowvqpqd/series-workflowvqpqd-build-action-3289855864/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-06 07:21:25 +0000 UTC FinishedAt: 2026-07-06 07:21:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-06 07:21:25 +0000 UTC FinishedAt: 2026-07-06 07:21:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-06 07:21:25 +0000 UTC FinishedAt: 2026-07-06 07:23:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-06 07:21:25 +0000 UTC FinishedAt: 2026-07-06 07:23:15 +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:*d6cc1d18-c173-4540-88ce-02a269d0bda8,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-workflowvqpqd/series-workflowvqpqd-build-action-3289855864/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-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-06 07:23:24 +0000 UTC FinishedAt: 2026-07-06 10:26:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-06 07:23:24 +0000 UTC FinishedAt: 2026-07-06 10:26:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*50d93a33-b12f-4aa3-a476-f2401f1fcac9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d6cc1d18-c173-4540-88ce-02a269d0bda8,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-workflowvqpqd/series-workflowvqpqd-build-action-704197863/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-workflowvqpqd/series-workflowvqpqd-build-action-3289855864/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-06 07:23:24 +0000 UTC FinishedAt: 2026-07-06 07:23:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-06 07:23:24 +0000 UTC FinishedAt: 2026-07-06 07:23:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvqpqd/series-workflowvqpqd-convert-artifact-172334821/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-06 07:23:24 +0000 UTC FinishedAt: 2026-07-06 07:23:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-06 07:23:24 +0000 UTC FinishedAt: 2026-07-06 07:23:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-06 07:23:24 +0000 UTC FinishedAt: 2026-07-06 07:23:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-06 07:23:59 +0000 UTC FinishedAt: 2026-07-06 10:26:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvqpqd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_rss_set","ethnl_rss_create_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7ddbf1cde4a03e36e17d06fbc711870eb0b256d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK"],"series_id":"31de78ce-e39d-4367-a224-95a69342ac2d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-06 07:23:59 +0000 UTC FinishedAt: 2026-07-06 10:25:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*50d93a33-b12f-4aa3-a476-f2401f1fcac9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d6cc1d18-c173-4540-88ce-02a269d0bda8,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-workflowvqpqd/series-workflowvqpqd-build-action-704197863/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-workflowvqpqd/series-workflowvqpqd-build-action-3289855864/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-workflowvqpqd/series-workflowvqpqd-convert-artifact-172334821/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,}