Name: series-workflowmq288 Phase: Succeeded StartedAt: 2026-07-19 13:47:58 +0000 UTC FinishedAt: 2026-07-19 16:41:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmq288[0] Phase: Succeeded StartedAt: 2026-07-19 13:47:58 +0000 UTC FinishedAt: 2026-07-19 14:21:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmq288[0].run-triage Phase: Succeeded StartedAt: 2026-07-19 13:47:58 +0000 UTC FinishedAt: 2026-07-19 14:21:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "c6859eed755df351a3978b33cb92365f9b3e8f06", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_UBLK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "c6859eed755df351a3978b33cb92365f9b3e8f06", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_UBLK" ], "series_id": "2f17c956-424f-4a32-9ac2-19d2279e269b" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ublk_wait_dev_ready_and_lock", "ublk_ctrl_start_dev", "ublk_ctrl_end_recovery", "ublk_mark_io_ready" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE0OjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfVUJMSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2smIzM0OywKICAgICYjMzQ7dWJsa19jdHJsX3N0YXJ0X2RldiYjMzQ7LAogICAgJiMzNDt1YmxrX2N0cmxfZW5kX3JlY292ZXJ5JiMzNDssCiAgICAmIzM0O3VibGtfbWFya19pb19yZWFkeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3luY2hyb25pemF0aW9uIGxvZ2ljIGluIHRoZSB1YmxrIGRyaXZlciYjMzk7cyBjb250cm9sIHBhdGgsIHJlcGxhY2luZyBhIGNvbXBsZXRpb24gd2l0aCBhIGN1c3RvbSB3YWl0IGxvb3AgKGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYCkgdG8gZml4IGEgcmFjZSBjb25kaXRpb24gd2hlcmUgdGhlIGRldmljZSBjb3VsZCBiZWNvbWUgdW5yZWFkeSBiZXR3ZWVuIHdha2V1cCBhbmQgbXV0ZXggYWNxdWlzaXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBkZXZpY2Ugc3RhdGUgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTQ6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhMGRlNWYyN2M2MDg2ODcwMTIyYTBlNWIzYzViYTg4NGIxNjRkNGY3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTkgMTQ6MjE6MjQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay91YmxrX2Rydi5jIGIvZHJpdmVycy9ibG9jay91YmxrX2Rydi5jXG5pbmRleCBjMmMxMWYyYTAxZTcwMS4uNGNhNmVjNzM4YzkzMDIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svdWJsa19kcnYuY1xuQEAgLTE5LDYgJiM0MzsxOSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJybm8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21ham9yLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC93YWl0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdF9iaXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Jsa2Rldi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW5pdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3dhcC5oXHUwMDNlXG5AQCAtMjYsNyAmIzQzOzI3LDYgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jb21wYXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L211dGV4LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC93cml0ZWJhY2suaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBsZXRpb24uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2hpZ2htZW0uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3N5c2ZzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9taXNjZGV2aWNlLmhcdTAwM2VcbkBAIC0zMjcsNyAmIzQzOzMyNyw2IEBAIHN0cnVjdCB1YmxrX2RldmljZSB7XG4gXG4gXHRzdHJ1Y3QgdWJsa19wYXJhbXNcdHBhcmFtcztcbiBcbi1cdHN0cnVjdCBjb21wbGV0aW9uXHRjb21wbGV0aW9uO1xuIFx0dTMyXHRcdFx0bnJfcXVldWVfcmVhZHk7XG4gXHRib29sIFx0XHRcdHVucHJpdmlsZWdlZF9kYWVtb25zO1xuIFx0c3RydWN0IG11dGV4IGNhbmNlbF9tdXRleDtcbkBAIC0zMDU0LDEyICYjNDM7MzA1MywxMiBAQCBzdGF0aWMgdm9pZCB1YmxrX21hcmtfaW9fcmVhZHkoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgdTE2IHFfaWQsXG4gXHRpZiAodWJsa19kZXZfcmVhZHkodWIpKSB7XG4gXHRcdC8qXG4gXHRcdCAqIEFsbCBxdWV1ZXMgcmVhZHkgLSBjbGVhciBkZXZpY2UtbGV2ZWwgY2FuY2VsaW5nIGZsYWdcbi1cdFx0ICogYW5kIGNvbXBsZXRlIHRoZSByZWNvdmVyeS9pbml0aWFsaXphdGlvbi5cbiYjNDM7XHRcdCAqIGFuZCB3YWtlIHVibGtfZGV2X3JlYWR5KCkgd2FpdGVycy5cbiBcdFx0ICovXG4gXHRcdG11dGV4X2xvY2soXHUwMDI2dWItXHUwMDNlY2FuY2VsX211dGV4KTtcbiBcdFx0dWItXHUwMDNlY2FuY2VsaW5nID0gZmFsc2U7XG4gXHRcdG11dGV4X3VubG9jayhcdTAwMjZ1Yi1cdTAwM2VjYW5jZWxfbXV0ZXgpO1xuLVx0XHRjb21wbGV0ZV9hbGwoXHUwMDI2dWItXHUwMDNlY29tcGxldGlvbik7XG4mIzQzO1x0XHR3YWtlX3VwX3ZhcihcdTAwMjZ1Yi1cdTAwM2Vucl9xdWV1ZV9yZWFkeSk7XG4gXHR9XG4gfVxuIFxuQEAgLTQyNzMsNyAmIzQzOzQyNzIsNiBAQCBzdGF0aWMgaW50IHVibGtfaW5pdF9xdWV1ZXMoc3RydWN0IHVibGtfZGV2aWNlICp1YilcbiBcdFx0XHRnb3RvIGZhaWw7XG4gXHR9XG4gXG4tXHRpbml0X2NvbXBsZXRpb24oXHUwMDI2dWItXHUwMDNlY29tcGxldGlvbik7XG4gXHRyZXR1cm4gMDtcbiBcbiAgZmFpbDpcbkBAIC00NDE3LDYgJiM0Mzs0NDE1LDI2IEBAIHN0YXRpYyBib29sIHVibGtfdmFsaWRhdGVfdXNlcl9waWQoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgcGlkX3QgdWJsa3Nydl9waWQpXG4gXHRyZXR1cm4gdWItXHUwMDNldWJsa3Nydl90Z2lkID09IHVibGtzcnZfcGlkO1xuIH1cbiBcbiYjNDM7LypcbiYjNDM7ICogV2FpdCB1bnRpbCBhbGwgcXVldWVzIGhhdmUgZmV0Y2hlZCB0aGVpciBJL08gY29tbWFuZHMsIGFuZCByZXR1cm4gd2l0aFxuJiM0MzsgKiB1Yi1cdTAwM2VtdXRleCBoZWxkIGFuZCByZWFkaW5lc3MgZ3VhcmFudGVlZDogdGhlbiBldmVyeSBxdWV1ZSYjMzk7cyAtXHUwMDNlY2FuY2VsaW5nXG4mIzQzOyAqIGlzIGNsZWFyZWQuIFJlYWR5IG1heSByZWdyZXNzIGJldHdlZW4gd2FrZXVwIGFuZCBtdXRleF9sb2NrKCkgKEZfQkFUQ0hcbiYjNDM7ICogVU5QUkVQLCBkYWVtb24gZGVhdGgpLCBzbyByZS1jaGVjayBpdCB1bmRlciB0aGUgbXV0ZXggYW5kIHdhaXQgYWdhaW4uXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW50IHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2soc3RydWN0IHVibGtfZGV2aWNlICp1YilcbiYjNDM7e1xuJiM0MztcdHdoaWxlICh0cnVlKSB7XG4mIzQzO1x0XHRpZiAod2FpdF92YXJfZXZlbnRfaW50ZXJydXB0aWJsZShcdTAwMjZ1Yi1cdTAwM2Vucl9xdWV1ZV9yZWFkeSxcbiYjNDM7XHRcdFx0XHRcdFx0IHVibGtfZGV2X3JlYWR5KHViKSkpXG4mIzQzO1x0XHRcdHJldHVybiAtRUlOVFI7XG4mIzQzO1xuJiM0MztcdFx0bXV0ZXhfbG9jayhcdTAwMjZ1Yi1cdTAwM2VtdXRleCk7XG4mIzQzO1x0XHRpZiAodWJsa19kZXZfcmVhZHkodWIpKVxuJiM0MztcdFx0XHRyZXR1cm4gMDtcbiYjNDM7XHRcdG11dGV4X3VubG9jayhcdTAwMjZ1Yi1cdTAwM2VtdXRleCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgdWJsa19jdHJsX3N0YXJ0X2RldihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuIFx0XHRjb25zdCBzdHJ1Y3QgdWJsa3Nydl9jdHJsX2NtZCAqaGVhZGVyKVxuIHtcbkBAIC00NDk5LDE1ICYjNDM7NDUxNywxMCBAQCBzdGF0aWMgaW50IHVibGtfY3RybF9zdGFydF9kZXYoc3RydWN0IHVibGtfZGV2aWNlICp1YixcbiBcdFx0fTtcbiBcdH1cbiBcbi1cdGlmICh3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVwdGlibGUoXHUwMDI2dWItXHUwMDNlY29tcGxldGlvbikgIT0gMClcbiYjNDM7XHRpZiAodWJsa193YWl0X2Rldl9yZWFkeV9hbmRfbG9jayh1YikpXG4gXHRcdHJldHVybiAtRUlOVFI7XG4gXG4tXHRpZiAoIXVibGtfdmFsaWRhdGVfdXNlcl9waWQodWIsIHVibGtzcnZfcGlkKSlcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNnViLVx1MDAzZW11dGV4KTtcbi1cdC8qIGRldmljZSBtYXkgYmVjb21lIG5vdCByZWFkeSBpbiBjYXNlIG9mIEZfQkFUQ0ggKi9cbi1cdGlmICghdWJsa19kZXZfcmVhZHkodWIpKSB7XG4mIzQzO1x0aWYgKCF1YmxrX3ZhbGlkYXRlX3VzZXJfcGlkKHViLCB1Ymxrc3J2X3BpZCkpIHtcbiBcdFx0cmV0ID0gLUVJTlZBTDtcbiBcdFx0Z290byBvdXRfdW5sb2NrO1xuIFx0fVxuQEAgLTUwNzEsNyAmIzQzOzUwODQsNiBAQCBzdGF0aWMgaW50IHVibGtfY3RybF9zdGFydF9yZWNvdmVyeShzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxuIFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXHR9XG4gXHRwcl9kZXZlbChcJiMzNDslczogc3RhcnQgcmVjb3ZlcnkgZm9yIGRldiBpZCAlZFxcblwmIzM0OywgX19mdW5jX18sIHViLVx1MDAzZXViX251bWJlcik7XG4tXHRpbml0X2NvbXBsZXRpb24oXHUwMDI2dWItXHUwMDNlY29tcGxldGlvbik7XG4gXHRyZXQgPSAwO1xuICBvdXRfdW5sb2NrOlxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnViLVx1MDAzZW11dGV4KTtcbkBAIC01MDg3LDE2ICYjNDM7NTA5OSwxNyBAQCBzdGF0aWMgaW50IHVibGtfY3RybF9lbmRfcmVjb3Zlcnkoc3RydWN0IHVibGtfZGV2aWNlICp1YixcbiBcdHByX2RldmVsKFwmIzM0OyVzOiBXYWl0aW5nIGZvciBhbGwgRkVUQ0hfUkVRcywgZGV2IGlkICVkLi4uXFxuXCYjMzQ7LCBfX2Z1bmNfXyxcbiBcdFx0IGhlYWRlci1cdTAwM2VkZXZfaWQpO1xuIFxuLVx0aWYgKHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZShcdTAwMjZ1Yi1cdTAwM2Vjb21wbGV0aW9uKSlcbiYjNDM7XHRpZiAodWJsa193YWl0X2Rldl9yZWFkeV9hbmRfbG9jayh1YikpXG4gXHRcdHJldHVybiAtRUlOVFI7XG4gXG4gXHRwcl9kZXZlbChcJiMzNDslczogQWxsIEZFVENIX1JFUXMgcmVjZWl2ZWQsIGRldiBpZCAlZFxcblwmIzM0OywgX19mdW5jX18sXG4gXHRcdCBoZWFkZXItXHUwMDNlZGV2X2lkKTtcbiBcbi1cdGlmICghdWJsa192YWxpZGF0ZV91c2VyX3BpZCh1YiwgdWJsa3Nydl9waWQpKVxuLVx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRpZiAoIXVibGtfdmFsaWRhdGVfdXNlcl9waWQodWIsIHVibGtzcnZfcGlkKSkge1xuJiM0MztcdFx0cmV0ID0gLUVJTlZBTDtcbiYjNDM7XHRcdGdvdG8gb3V0X3VubG9jaztcbiYjNDM7XHR9XG4gXG4tXHRtdXRleF9sb2NrKFx1MDAyNnViLVx1MDAzZW11dGV4KTtcbiBcdGlmICh1YmxrX25vc3J2X3Nob3VsZF9zdG9wX2Rldih1YikpXG4gXHRcdGdvdG8gb3V0X3VubG9jaztcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNDoyMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfREVWX1VCTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrJiMzNDssCiAgICAmIzM0O3VibGtfY3RybF9zdGFydF9kZXYmIzM0OywKICAgICYjMzQ7dWJsa19jdHJsX2VuZF9yZWNvdmVyeSYjMzQ7LAogICAgJiMzNDt1YmxrX21hcmtfaW9fcmVhZHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHN5bmNocm9uaXphdGlvbiBsb2dpYyBpbiB0aGUgdWJsayBkcml2ZXImIzM5O3MgY29udHJvbCBwYXRoLCByZXBsYWNpbmcgYSBjb21wbGV0aW9uIHdpdGggYSBjdXN0b20gd2FpdCBsb29wIChgdWJsa193YWl0X2Rldl9yZWFkeV9hbmRfbG9ja2ApIHRvIGZpeCBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIHRoZSBkZXZpY2UgY291bGQgYmVjb21lIHVucmVhZHkgYmV0d2VlbiB3YWtldXAgYW5kIG11dGV4IGFjcXVpc2l0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gZGV2aWNlIHN0YXRlIG1hbmFnZW1lbnQgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhMGRlNWYyN2M2MDg2ODcwMTIyYTBlNWIzYzViYTg4NGIxNjRkNGY3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMTkgMTQ6MjE6MjQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMgYi9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMKaW5kZXggYzJjMTFmMmEwMWU3MDEuLjRjYTZlYzczOGM5MzAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay91YmxrX2Rydi5jCkBAIC0xOSw2ICYjNDM7MTksNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2Vycm5vLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbWFqb3IuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC93YWl0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3dhaXRfYml0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvYmxrZGV2LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaW5pdC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3N3YXAuaCZndDsKQEAgLTI2LDcgJiM0MzsyNyw2IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvY29tcGF0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbXV0ZXguaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC93cml0ZWJhY2suaCZndDsKLSNpbmNsdWRlICZsdDtsaW51eC9jb21wbGV0aW9uLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaGlnaG1lbS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3N5c2ZzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbWlzY2RldmljZS5oJmd0OwpAQCAtMzI3LDcgJiM0MzszMjcsNiBAQCBzdHJ1Y3QgdWJsa19kZXZpY2UgewogCiAJc3RydWN0IHVibGtfcGFyYW1zCXBhcmFtczsKIAotCXN0cnVjdCBjb21wbGV0aW9uCWNvbXBsZXRpb247CiAJdTMyCQkJbnJfcXVldWVfcmVhZHk7CiAJYm9vbCAJCQl1bnByaXZpbGVnZWRfZGFlbW9uczsKIAlzdHJ1Y3QgbXV0ZXggY2FuY2VsX211dGV4OwpAQCAtMzA1NCwxMiAmIzQzOzMwNTMsMTIgQEAgc3RhdGljIHZvaWQgdWJsa19tYXJrX2lvX3JlYWR5KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsIHUxNiBxX2lkLAogCWlmICh1YmxrX2Rldl9yZWFkeSh1YikpIHsKIAkJLyoKIAkJICogQWxsIHF1ZXVlcyByZWFkeSAtIGNsZWFyIGRldmljZS1sZXZlbCBjYW5jZWxpbmcgZmxhZwotCQkgKiBhbmQgY29tcGxldGUgdGhlIHJlY292ZXJ5L2luaXRpYWxpemF0aW9uLgomIzQzOwkJICogYW5kIHdha2UgdWJsa19kZXZfcmVhZHkoKSB3YWl0ZXJzLgogCQkgKi8KIAkJbXV0ZXhfbG9jaygmYW1wO3ViLSZndDtjYW5jZWxfbXV0ZXgpOwogCQl1Yi0mZ3Q7Y2FuY2VsaW5nID0gZmFsc2U7CiAJCW11dGV4X3VubG9jaygmYW1wO3ViLSZndDtjYW5jZWxfbXV0ZXgpOwotCQljb21wbGV0ZV9hbGwoJmFtcDt1Yi0mZ3Q7Y29tcGxldGlvbik7CiYjNDM7CQl3YWtlX3VwX3ZhcigmYW1wO3ViLSZndDtucl9xdWV1ZV9yZWFkeSk7CiAJfQogfQogCkBAIC00MjczLDcgJiM0Mzs0MjcyLDYgQEAgc3RhdGljIGludCB1YmxrX2luaXRfcXVldWVzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIpCiAJCQlnb3RvIGZhaWw7CiAJfQogCi0JaW5pdF9jb21wbGV0aW9uKCZhbXA7dWItJmd0O2NvbXBsZXRpb24pOwogCXJldHVybiAwOwogCiAgZmFpbDoKQEAgLTQ0MTcsNiAmIzQzOzQ0MTUsMjYgQEAgc3RhdGljIGJvb2wgdWJsa192YWxpZGF0ZV91c2VyX3BpZChzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLCBwaWRfdCB1Ymxrc3J2X3BpZCkKIAlyZXR1cm4gdWItJmd0O3VibGtzcnZfdGdpZCA9PSB1Ymxrc3J2X3BpZDsKIH0KIAomIzQzOy8qCiYjNDM7ICogV2FpdCB1bnRpbCBhbGwgcXVldWVzIGhhdmUgZmV0Y2hlZCB0aGVpciBJL08gY29tbWFuZHMsIGFuZCByZXR1cm4gd2l0aAomIzQzOyAqIHViLSZndDttdXRleCBoZWxkIGFuZCByZWFkaW5lc3MgZ3VhcmFudGVlZDogdGhlbiBldmVyeSBxdWV1ZSYjMzk7cyAtJmd0O2NhbmNlbGluZwomIzQzOyAqIGlzIGNsZWFyZWQuIFJlYWR5IG1heSByZWdyZXNzIGJldHdlZW4gd2FrZXVwIGFuZCBtdXRleF9sb2NrKCkgKEZfQkFUQ0gKJiM0MzsgKiBVTlBSRVAsIGRhZW1vbiBkZWF0aCksIHNvIHJlLWNoZWNrIGl0IHVuZGVyIHRoZSBtdXRleCBhbmQgd2FpdCBhZ2Fpbi4KJiM0MzsgKi8KJiM0MztzdGF0aWMgaW50IHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2soc3RydWN0IHVibGtfZGV2aWNlICp1YikKJiM0Mzt7CiYjNDM7CXdoaWxlICh0cnVlKSB7CiYjNDM7CQlpZiAod2FpdF92YXJfZXZlbnRfaW50ZXJydXB0aWJsZSgmYW1wO3ViLSZndDtucl9xdWV1ZV9yZWFkeSwKJiM0MzsJCQkJCQkgdWJsa19kZXZfcmVhZHkodWIpKSkKJiM0MzsJCQlyZXR1cm4gLUVJTlRSOwomIzQzOwomIzQzOwkJbXV0ZXhfbG9jaygmYW1wO3ViLSZndDttdXRleCk7CiYjNDM7CQlpZiAodWJsa19kZXZfcmVhZHkodWIpKQomIzQzOwkJCXJldHVybiAwOwomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7dWItJmd0O211dGV4KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgdWJsa19jdHJsX3N0YXJ0X2RldihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLAogCQljb25zdCBzdHJ1Y3QgdWJsa3Nydl9jdHJsX2NtZCAqaGVhZGVyKQogewpAQCAtNDQ5OSwxNSAmIzQzOzQ1MTcsMTAgQEAgc3RhdGljIGludCB1YmxrX2N0cmxfc3RhcnRfZGV2KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsCiAJCX07CiAJfQogCi0JaWYgKHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZSgmYW1wO3ViLSZndDtjb21wbGV0aW9uKSAhPSAwKQomIzQzOwlpZiAodWJsa193YWl0X2Rldl9yZWFkeV9hbmRfbG9jayh1YikpCiAJCXJldHVybiAtRUlOVFI7CiAKLQlpZiAoIXVibGtfdmFsaWRhdGVfdXNlcl9waWQodWIsIHVibGtzcnZfcGlkKSkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQltdXRleF9sb2NrKCZhbXA7dWItJmd0O211dGV4KTsKLQkvKiBkZXZpY2UgbWF5IGJlY29tZSBub3QgcmVhZHkgaW4gY2FzZSBvZiBGX0JBVENIICovCi0JaWYgKCF1YmxrX2Rldl9yZWFkeSh1YikpIHsKJiM0MzsJaWYgKCF1YmxrX3ZhbGlkYXRlX3VzZXJfcGlkKHViLCB1Ymxrc3J2X3BpZCkpIHsKIAkJcmV0ID0gLUVJTlZBTDsKIAkJZ290byBvdXRfdW5sb2NrOwogCX0KQEAgLTUwNzEsNyAmIzQzOzUwODQsNiBAQCBzdGF0aWMgaW50IHVibGtfY3RybF9zdGFydF9yZWNvdmVyeShzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKQogCQlnb3RvIG91dF91bmxvY2s7CiAJfQogCXByX2RldmVsKCYjMzQ7JXM6IHN0YXJ0IHJlY292ZXJ5IGZvciBkZXYgaWQgJWRcbiYjMzQ7LCBfX2Z1bmNfXywgdWItJmd0O3ViX251bWJlcik7Ci0JaW5pdF9jb21wbGV0aW9uKCZhbXA7dWItJmd0O2NvbXBsZXRpb24pOwogCXJldCA9IDA7CiAgb3V0X3VubG9jazoKIAltdXRleF91bmxvY2soJmFtcDt1Yi0mZ3Q7bXV0ZXgpOwpAQCAtNTA4NywxNiAmIzQzOzUwOTksMTcgQEAgc3RhdGljIGludCB1YmxrX2N0cmxfZW5kX3JlY292ZXJ5KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsCiAJcHJfZGV2ZWwoJiMzNDslczogV2FpdGluZyBmb3IgYWxsIEZFVENIX1JFUXMsIGRldiBpZCAlZC4uLlxuJiMzNDssIF9fZnVuY19fLAogCQkgaGVhZGVyLSZndDtkZXZfaWQpOwogCi0JaWYgKHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZSgmYW1wO3ViLSZndDtjb21wbGV0aW9uKSkKJiM0MzsJaWYgKHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2sodWIpKQogCQlyZXR1cm4gLUVJTlRSOwogCiAJcHJfZGV2ZWwoJiMzNDslczogQWxsIEZFVENIX1JFUXMgcmVjZWl2ZWQsIGRldiBpZCAlZFxuJiMzNDssIF9fZnVuY19fLAogCQkgaGVhZGVyLSZndDtkZXZfaWQpOwogCi0JaWYgKCF1YmxrX3ZhbGlkYXRlX3VzZXJfcGlkKHViLCB1Ymxrc3J2X3BpZCkpCi0JCXJldHVybiAtRUlOVkFMOwomIzQzOwlpZiAoIXVibGtfdmFsaWRhdGVfdXNlcl9waWQodWIsIHVibGtzcnZfcGlkKSkgewomIzQzOwkJcmV0ID0gLUVJTlZBTDsKJiM0MzsJCWdvdG8gb3V0X3VubG9jazsKJiM0MzsJfQogCi0JbXV0ZXhfbG9jaygmYW1wO3ViLSZndDttdXRleCk7CiAJaWYgKHVibGtfbm9zcnZfc2hvdWxkX3N0b3BfZGV2KHViKSkKIAkJZ290byBvdXRfdW5sb2NrOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE0OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNTYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVXNlcnNwYWNlIEJsb2NrIERldmljZSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCYjMzk7cyBtYWtpbmcgc29tZSBjaGFuZ2VzIHRvIGBkcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmNgLiBSaWdodCBhd2F5LCB0aGF0IHRlbGxzIG1lIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIFVzZXJzcGFjZSBCbG9jayBEZXZpY2UgRHJpdmVyLCB3aGljaCBJJiMzOTttIGZhbWlsaWFyIHdpdGgg4oCTIGl0JiMzOTtzIGEgY3JpdGljYWwgcGllY2UgZm9yIGV4cG9zaW5nIGJsb2NrIGRldmljZXMgdG8gdXNlcnNwYWNlLCBvZnRlbiB1c2VmdWwgaW4gdmlydHVhbGl6YXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IHZlcmlmeSB0aGUgYnJvYWRlciBjb250ZXh0IG9mIHRoaXMgZHJpdmVyOyBJIGtub3cgdGhhdCBpdCBuZWVkcyBgQkxLX0RFVl9VQkxLYCBlbmFibGVkIGluIHRoZSBjb25maWcuCgpUaGUgcGF0Y2gmIzM5O3MgY29yZSBtb2RpZmljYXRpb24gc2VlbXMgdG8gaW52b2x2ZSByZXBsYWNpbmcgYHN0cnVjdCBjb21wbGV0aW9uYCB3aXRoIGB3YWl0X3Zhcl9ldmVudF9pbnRlcnJ1cHRpYmxlYCBhbmQgYHdha2VfdXBfdmFyYCBmb3Igc3luY2hyb25pemluZyBxdWV1ZSByZWFkaW5lc3MuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHNpZ25hbC93YWl0IHBhdHRlcm4sIGFuZCBJIHNlZSB0aGV5JiMzOTt2ZSBhbHNvIGludHJvZHVjZWQgYSBuZXcgZnVuY3Rpb24sIGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYC4gVGhlIG5hbWUgaXMgcHJldHR5IGRlc2NyaXB0aXZlLiBJdCBsb29rcyBsaWtlIHRoaXMgbmV3IGZ1bmN0aW9uIGRvZXMgcHJlY2lzZWx5IHdoYXQgaXQgc2F5cyDigJMgd2FpdHMgZm9yIGFsbCB0aGUgcXVldWVzIHRvIHJlcG9ydCB0aGF0IHRoZXkmIzM5O3JlIHJlYWR5IGFuZCB0aGVuIGFjcXVpcmVzIGB1Yi0mZ3Q7bXV0ZXhgLiBUaGF0JiMzOTtzIGxpa2VseSBhIGNyaXRpY2FsIHNlY3Rpb24gcHJvdGVjdGVkIGJ5IHRoZSBtdXRleC4KCk5vdywgdGhlIGltcG9ydGFudCBwYXJ0OiBpdCBzZWVtcyB0aGF0IGB1YmxrX2N0cmxfc3RhcnRfZGV2YCBhbmQgYHVibGtfY3RybF9lbmRfcmVjb3ZlcnlgIGFyZSBiZWluZyBtb2RpZmllZCB0byAqdXNlKiB0aGlzIG5ldyBmdW5jdGlvbi4gRnJvbSBteSBleHBlcmllbmNlLCB0aGVzZSBhcmUgbGlrZWx5IHRoZSBjb250cm9sIHBhdGhzIGZvciBzdGFydGluZyB0aGUgZGV2aWNlIGFuZCBlbmRpbmcgYSByZWNvdmVyeSBwcm9jZXNzLiBUaGlzIHN1Z2dlc3RzIHRoZSBwYXRjaCBpcyBlbnN1cmluZyB0aGVzZSBjb250cm9sIHBhdGhzIG5vdyBwcm9wZXJseSB3YWl0IGZvciB0aGUgcXVldWVzIHRvIGJlIHJlYWR5IGFuZCBhY3F1aXJlIHRoZSBuZWNlc3NhcnkgbG9jayBiZWZvcmUgcHJvY2VlZGluZywgd2hpY2ggaXMgYSB2ZXJ5IHJlYXNvbmFibGUgY2hhbmdlIGZvciBlbnN1cmluZyBkYXRhIGludGVncml0eSBhbmQgcmVsaWFibGUgb3BlcmF0aW9uLiBUaGlzIGlzIGxpa2VseSBhbiBpbXByb3ZlbWVudCB0byBob3cgaXQgaGFuZGxlcyB0aGUgb3ZlcmFsbCBpbml0aWFsaXphdGlvbiBhbmQgcmVjb3Zlcnkgc3RhdGUsIGFuZCBuZWVkcyB0byBiZSBmdWxseSBldmFsdWF0ZWQgd2l0aGluIHRoaXMgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCTEtfREVWX1VCTEsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWc9MzE1PWNvbmZpZyBCTEtfREVWX1JCRFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMjctXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzI4OmNvbmZpZyBCTEtfREVWX1VCTEtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMjktXHR0cmlzdGF0ZSBcJiMzNDtVc2Vyc3BhY2UgYmxvY2sgZHJpdmVyIChFeHBlcmltZW50YWwpXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTMzNz1jb25maWcgQkxLREVWX1VCTEtfTEVHQUNZX09QQ09ERVNcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMzgtXHRib29sIFwmIzM0O1N1cHBvcnQgbGVnYWN5IGNvbW1hbmQgb3Bjb2RlXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzM5Olx0ZGVwZW5kcyBvbiBCTEtfREVWX1VCTEtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zNDAtXHRkZWZhdWx0IHlcbi0tXG5kcml2ZXJzL2Jsb2NrL01ha2VmaWxlPTM4PW9iai0kKENPTkZJR19CTEtfREVWX1JVU1RfTlVMTCkgJiM0Mzs9IHJudWxsL1xuZHJpdmVycy9ibG9jay9NYWtlZmlsZS0zOS1cbmRyaXZlcnMvYmxvY2svTWFrZWZpbGU6NDA6b2JqLSQoQ09ORklHX0JMS19ERVZfVUJMSylcdFx0XHQmIzQzOz0gdWJsa19kcnYub1xuZHJpdmVycy9ibG9jay9NYWtlZmlsZS00MS1vYmotJChDT05GSUdfQkxLX0RFVl9aT05FRF9MT09QKSAmIzQzOz0gemxvb3Aub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE0OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNDkKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoaXM6CgoqKkluaXRpYWwgQXNzZXNzbWVudCBvZiB1YmxrIERyaXZlciBDb25maWd1cmF0aW9uIGFuZCBDb250cm9sIEZsb3cqKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBgQkxLX0RFVl9VQkxLYCBpcyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGguIE5vdywgdGhlIHBhdGNoIGZvY3VzZXMgb24gYHVibGtfZHJ2LmNgLCBzbyBsZXQmIzM5O3Mgem9vbSBpbiBvbiB0aGF0LiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gYHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2tgIGFuZCB0aGUgZnVuY3Rpb25zIHRoYXQgY2FsbCBpdC4gVGhhdCBzZWVtcyBsaWtlIGEgY3JpdGljYWwgc3luY2hyb25pemF0aW9uIHBvaW50LiBUaGUgY2FsbGVycyBhcmUgYHVibGtfY3RybF9zdGFydF9kZXZgIGFuZCBgdWJsa19jdHJsX2VuZF9yZWNvdmVyeWAuIFJpZ2h0LCB0aG9zZSBzb3VuZCBsaWtlIGNvbnRyb2wgY29tbWFuZHMgc3BlY2lmaWMgdG8gdGhlIHVibGsgZGV2aWNlIGl0c2VsZi4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRob3NlIGNvbW1hbmRzIGFuZCB0aGUgYHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2tgIGZ1bmN0aW9uLiBOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gd2hhdCBmdW5jdGlvbnMgYXJlIGtleSBoZXJlOgoKKiAgIGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYAoqICAgYHVibGtfY3RybF9zdGFydF9kZXZgCiogICBgdWJsa19jdHJsX2VuZF9yZWNvdmVyeWAKKiAgIGB1YmxrX21hcmtfaW9fcmVhZHlgCgpJdCB3b3VsZCBiZSBhIGdvb2QgaWRlYSB0byBlbnN1cmUgdGhhdCYjMzk7cyBhbGwsIGJ1dCBsZXQgbWUgY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay91YmxrX2Rydi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svdWJsa19kcnYuYz00NDA5PXN0YXRpYyBib29sIHVibGtfdmFsaWRhdGVfdXNlcl9waWQoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgcGlkX3QgdWJsa3Nydl9waWQpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ0MjMtICovXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NDQyNDpzdGF0aWMgaW50IHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2soc3RydWN0IHVibGtfZGV2aWNlICp1YilcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00NDI1LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NDQzOD1zdGF0aWMgaW50IHVibGtfY3RybF9zdGFydF9kZXYoc3RydWN0IHVibGtfZGV2aWNlICp1Yixcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDUxOS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo0NTIwOlx0aWYgKHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2sodWIpKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ1MjEtXHRcdHJldHVybiAtRUlOVFI7XG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTUwOTM9c3RhdGljIGludCB1YmxrX2N0cmxfZW5kX3JlY292ZXJ5KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUxMDEtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTEwMjpcdGlmICh1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrKHViKSlcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MTAzLVx0XHRyZXR1cm4gLUVJTlRSO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE0OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4ODYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVWJsayBTeW5jaHJvbml6YXRpb24gRml4KioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJiMzOTttIHNlZWluZywgdGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQgdGlnaHRlbmluZyB1cCBzeW5jaHJvbml6YXRpb24gd2l0aGluIHRoZSB1YmxrIGNvbnRyb2wgcGF0aC4gSXQgc2VlbXMgbGlrZSB3ZSYjMzk7dmUgZ290IGEgcmFjZSBjb25kaXRpb24g4oCTIHRoZSBkZXZpY2UgKmNvdWxkKiBiZWNvbWUgdW5hdmFpbGFibGUgYWZ0ZXIgYmVpbmcgd29rZW4gdXAsIGJ1dCBiZWZvcmUgdGhlIG11dGV4IGxvY2sgaXMgYWNxdWlyZWQuIFRoZSBmaXggZGlyZWN0bHkgYWRkcmVzc2VzIHRoaXMgYnkgcmUtY2hlY2tpbmcgYHVibGtfZGV2X3JlYWR5KHViKWAgdW5kZXIgdGhlIG11dGV4IGFuZCB3YWl0aW5nIGFnYWluIGlmIG5lY2Vzc2FyeSwgd2hpY2ggaXMgYSBzb2xpZCBhcHByb2FjaCB0byBwcmV2ZW50IHRoYXQuIFRoZXkmIzM5O3ZlIHN3YXBwZWQgb3V0IGEgYHN0cnVjdCBjb21wbGV0aW9uYCBmb3IgYHdhaXRfdmFyX2V2ZW50X2ludGVycnVwdGlibGVgIHdpdGggYSBjdXN0b20gd2FpdCBsb29wIGluIGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYC4gTWFrZXMgc2Vuc2Ug4oCTIG1vcmUgZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlciB0aGUgd2FpdCBzdGF0ZS4KClRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBkaXJlY3Qgc3luY2hyb25pemF0aW9uIGZpeCwgYWZmZWN0aW5nIHRoZSBjb250cm9sIGZsb3cgYW5kIHN0YXRlIHRyYW5zaXRpb25zIG9mIHVibGssIG1lYW5pbmcgaXQmIzM5O3MgYWJzb2x1dGVseSB3b3J0aCB0aHJvd2luZyBmdXp6aW5nIGF0IGl0LiBXZSBuZWVkIHRvIHJlYWxseSBoYW1tZXIgb24gdGhpcyBmaXggdG8gbWFrZSBzdXJlIGl0IGhvbGRzIHVwIHVuZGVyIHN0cmVzcyBhbmQgYWxsIGVkZ2UgY2FzZXMgYXJlIGhhbmRsZWQuCgpLZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIHdoZW4gdGVzdGluZyBhbmQgZnV6emluZyBhcmUgYHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2tgLCBgdWJsa19jdHJsX3N0YXJ0X2RldmAsIGB1YmxrX2N0cmxfZW5kX3JlY292ZXJ5YCwgYW5kIGB1YmxrX21hcmtfaW9fcmVhZHlgLiBUaG9zZSBhcmUgdGhlIGNvcmUgYXJlYXMgd2hlcmUgdGhpcyBzeW5jaHJvbml6YXRpb24gbG9naWMgaXMgYmVpbmcgYXBwbGllZC4KCkFuZCwgb2YgY291cnNlLCB0aGUgYEJMS19ERVZfVUJMS2AgY29uZmlnIGhhcyB0byBiZSBlbmFibGVkIGZvciB0aGlzIHRvIGV2ZW4gbWF0dGVyLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlncyBpbiBwbGF5IGhlcmUsIGp1c3QgdG8gYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTQ6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJMS19ERVZfVUJMSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWc9MzE1PWNvbmZpZyBCTEtfREVWX1JCRFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMjctXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzI4OmNvbmZpZyBCTEtfREVWX1VCTEtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMjktXHR0cmlzdGF0ZSBcJiMzNDtVc2Vyc3BhY2UgYmxvY2sgZHJpdmVyIChFeHBlcmltZW50YWwpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTQ6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU4NgoJCQkJCQkJb3V0cHV0OiAxNTgKCQkJCQkJCXRob3VnaHRzOiAxNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRmluYWxpemluZyB0aGUgRnV6emluZyBTdHJhdGVneSBmb3IgVWJsayBEcml2ZXIgU3luY2hyb25pemF0aW9uKioKCkFscmlnaHQsIGl0JiMzOTtzIHNldHRsZWQuIGBCTEtfREVWX1VCTEtgIGlzIHRoZSBjb25maWd1cmF0aW9uIHdlIG5lZWQgdG8gdGFyZ2V0LiBObyBuZWVkIHRvIG92ZXJjb21wbGljYXRlIHRoaW5nczsgdGhhdCYjMzk7cyB0aGUgYmFzZSB3ZSYjMzk7bGwgYnVpbGQgb24uCgpOb3csIHRvIHNvbGlkaWZ5IHRoZSBmdXp6aW5nIHBsYW4uIExldCYjMzk7cyBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyBpbiBwbGFjZSBmb3IgdGhlIGZpbmFsIHJlc3BvbnNlLgoKYFdvcnRoRnV6emluZ2A6IEFic29sdXRlbHkuIFRoaXMgaXMgYSBjcml0aWNhbCBwYXRjaC4KCmBGb2N1c1N5bWJvbHNgOiBJJiMzOTt2ZSBpZGVudGlmaWVkIHRoZSBrZXkgZnVuY3Rpb25zIGZvciBjb25jZW50cmF0ZWQgZnV6emluZzogYHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2tgLCBgdWJsa19jdHJsX3N0YXJ0X2RldmAsIGB1YmxrX2N0cmxfZW5kX3JlY292ZXJ5YCwgYW5kIGB1YmxrX21hcmtfaW9fcmVhZHlgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGRpcmVjdGx5IGludm9sdmVkIGluIHRoZSBzeW5jaHJvbml6YXRpb24gbG9naWMgdGhlIHBhdGNoIGlzIG1vZGlmeWluZy4KCmBFbmFibGVDb25maWdzYDogSnVzdCB0aGUgb25lLCBgQkxLX0RFVl9VQkxLYCwgd2hpY2ggaXMgcHJlY2lzZWx5IHdoYXQgd2Ugd2FudC4KCmBSZWFzb25pbmdgOiBUaGUgcGF0Y2ggaXRzZWxmIGNoYW5nZXMgaG93IHRoZSB1YmxrIGRyaXZlciBoYW5kbGVzIGRldmljZSBzdGF0ZSB0cmFuc2l0aW9ucyBhbmQgc3luY2hyb25pemF0aW9uIGluIGl0cyBjb250cm9sIHBhdGguIFNwZWNpZmljYWxseSwgdGhleSYjMzk7dmUgcmVwbGFjZWQgYSBzaW1wbGUgY29tcGxldGlvbiB3aXRoIGEgY3VzdG9tIHdhaXQgbG9vcCAoYHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2tgKSB0byBhZGRyZXNzIGEgcmFjZSBjb25kaXRpb24uIFRoaXMgaXMgYSAqZnVuY3Rpb25hbCBjaGFuZ2UqIGluIGhvdyB0aGUgZGV2aWNlJiMzOTtzIHJlYWR5IHN0YXRlIGlzIG1hbmFnZWQuIFRoYXQmIzM5O3MgYSB0ZXh0Ym9vayBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFdlIG5lZWQgdG8gZXhwb3NlIGFueSBsdXJraW5nIGNvbmN1cnJlbmN5IGlzc3VlcyBpbiB0aGlzIG5ldyBhcHByb2FjaC4gSSBmZWVsIGdvb2QgYWJvdXQgdGhpcyBwbGFuOyBpdCBzaG91bGQgYmUgY29tcHJlaGVuc2l2ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTQ6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfVUJMSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2smIzM0OywKICAgICYjMzQ7dWJsa19jdHJsX3N0YXJ0X2RldiYjMzQ7LAogICAgJiMzNDt1YmxrX2N0cmxfZW5kX3JlY292ZXJ5JiMzNDssCiAgICAmIzM0O3VibGtfbWFya19pb19yZWFkeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3luY2hyb25pemF0aW9uIGxvZ2ljIGluIHRoZSB1YmxrIGRyaXZlciYjMzk7cyBjb250cm9sIHBhdGgsIHJlcGxhY2luZyBhIGNvbXBsZXRpb24gd2l0aCBhIGN1c3RvbSB3YWl0IGxvb3AgKGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYCkgdG8gZml4IGEgcmFjZSBjb25kaXRpb24gd2hlcmUgdGhlIGRldmljZSBjb3VsZCBiZWNvbWUgdW5yZWFkeSBiZXR3ZWVuIHdha2V1cCBhbmQgbXV0ZXggYWNxdWlzaXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBkZXZpY2Ugc3RhdGUgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfVUJMSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2smIzM0OywKICAgICYjMzQ7dWJsa19jdHJsX3N0YXJ0X2RldiYjMzQ7LAogICAgJiMzNDt1YmxrX2N0cmxfZW5kX3JlY292ZXJ5JiMzNDssCiAgICAmIzM0O3VibGtfbWFya19pb19yZWFkeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3luY2hyb25pemF0aW9uIGxvZ2ljIGluIHRoZSB1YmxrIGRyaXZlciYjMzk7cyBjb250cm9sIHBhdGgsIHJlcGxhY2luZyBhIGNvbXBsZXRpb24gd2l0aCBhIGN1c3RvbSB3YWl0IGxvb3AgKGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYCkgdG8gZml4IGEgcmFjZSBjb25kaXRpb24gd2hlcmUgdGhlIGRldmljZSBjb3VsZCBiZWNvbWUgdW5yZWFkeSBiZXR3ZWVuIHdha2V1cCBhbmQgbXV0ZXggYWNxdWlzaXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBkZXZpY2Ugc3RhdGUgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNDoyMToyNS4zNzM1ODAxMTdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDYwMjE4Njc2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX1VCTEtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrXCIsXG4gICAgXCJ1YmxrX2N0cmxfc3RhcnRfZGV2XCIsXG4gICAgXCJ1YmxrX2N0cmxfZW5kX3JlY292ZXJ5XCIsXG4gICAgXCJ1YmxrX21hcmtfaW9fcmVhZHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3luY2hyb25pemF0aW9uIGxvZ2ljIGluIHRoZSB1YmxrIGRyaXZlcidzIGNvbnRyb2wgcGF0aCwgcmVwbGFjaW5nIGEgY29tcGxldGlvbiB3aXRoIGEgY3VzdG9tIHdhaXQgbG9vcCAoYHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2tgKSB0byBmaXggYSByYWNlIGNvbmRpdGlvbiB3aGVyZSB0aGUgZGV2aWNlIGNvdWxkIGJlY29tZSB1bnJlYWR5IGJldHdlZW4gd2FrZXVwIGFuZCBtdXRleCBhY3F1aXNpdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGRldmljZSBzdGF0ZSBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTQ6MjE6MjUuMzczNTg1MTM3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mjg0NzE3MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhMGRlNWYyN2M2MDg2ODcwMTIyYTBlNWIzYzViYTg4NGIxNjRkNGY3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDE5IDE0OjIxOjI0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svdWJsa19kcnYuYyBiL2RyaXZlcnMvYmxvY2svdWJsa19kcnYuY1xcbmluZGV4IGMyYzExZjJhMDFlNzAxLi40Y2E2ZWM3MzhjOTMwMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmNcXG5AQCAtMTksNiArMTksNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZXJybm8uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21ham9yLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC93YWl0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC93YWl0X2JpdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvYmxrZGV2LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbml0LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zd2FwLmhcXHUwMDNlXFxuQEAgLTI2LDcgKzI3LDYgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NvbXBhdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbXV0ZXguaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3dyaXRlYmFjay5oXFx1MDAzZVxcbi0jaW5jbHVkZSBcXHUwMDNjbGludXgvY29tcGxldGlvbi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaGlnaG1lbS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc3lzZnMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21pc2NkZXZpY2UuaFxcdTAwM2VcXG5AQCAtMzI3LDcgKzMyNyw2IEBAIHN0cnVjdCB1YmxrX2RldmljZSB7XFxuIFxcbiBcXHRzdHJ1Y3QgdWJsa19wYXJhbXNcXHRwYXJhbXM7XFxuIFxcbi1cXHRzdHJ1Y3QgY29tcGxldGlvblxcdGNvbXBsZXRpb247XFxuIFxcdHUzMlxcdFxcdFxcdG5yX3F1ZXVlX3JlYWR5O1xcbiBcXHRib29sIFxcdFxcdFxcdHVucHJpdmlsZWdlZF9kYWVtb25zO1xcbiBcXHRzdHJ1Y3QgbXV0ZXggY2FuY2VsX211dGV4O1xcbkBAIC0zMDU0LDEyICszMDUzLDEyIEBAIHN0YXRpYyB2b2lkIHVibGtfbWFya19pb19yZWFkeShzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLCB1MTYgcV9pZCxcXG4gXFx0aWYgKHVibGtfZGV2X3JlYWR5KHViKSkge1xcbiBcXHRcXHQvKlxcbiBcXHRcXHQgKiBBbGwgcXVldWVzIHJlYWR5IC0gY2xlYXIgZGV2aWNlLWxldmVsIGNhbmNlbGluZyBmbGFnXFxuLVxcdFxcdCAqIGFuZCBjb21wbGV0ZSB0aGUgcmVjb3ZlcnkvaW5pdGlhbGl6YXRpb24uXFxuK1xcdFxcdCAqIGFuZCB3YWtlIHVibGtfZGV2X3JlYWR5KCkgd2FpdGVycy5cXG4gXFx0XFx0ICovXFxuIFxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnViLVxcdTAwM2VjYW5jZWxfbXV0ZXgpO1xcbiBcXHRcXHR1Yi1cXHUwMDNlY2FuY2VsaW5nID0gZmFsc2U7XFxuIFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2dWItXFx1MDAzZWNhbmNlbF9tdXRleCk7XFxuLVxcdFxcdGNvbXBsZXRlX2FsbChcXHUwMDI2dWItXFx1MDAzZWNvbXBsZXRpb24pO1xcbitcXHRcXHR3YWtlX3VwX3ZhcihcXHUwMDI2dWItXFx1MDAzZW5yX3F1ZXVlX3JlYWR5KTtcXG4gXFx0fVxcbiB9XFxuIFxcbkBAIC00MjczLDcgKzQyNzIsNiBAQCBzdGF0aWMgaW50IHVibGtfaW5pdF9xdWV1ZXMoc3RydWN0IHVibGtfZGV2aWNlICp1YilcXG4gXFx0XFx0XFx0Z290byBmYWlsO1xcbiBcXHR9XFxuIFxcbi1cXHRpbml0X2NvbXBsZXRpb24oXFx1MDAyNnViLVxcdTAwM2Vjb21wbGV0aW9uKTtcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbiAgZmFpbDpcXG5AQCAtNDQxNyw2ICs0NDE1LDI2IEBAIHN0YXRpYyBib29sIHVibGtfdmFsaWRhdGVfdXNlcl9waWQoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgcGlkX3QgdWJsa3Nydl9waWQpXFxuIFxcdHJldHVybiB1Yi1cXHUwMDNldWJsa3Nydl90Z2lkID09IHVibGtzcnZfcGlkO1xcbiB9XFxuIFxcbisvKlxcbisgKiBXYWl0IHVudGlsIGFsbCBxdWV1ZXMgaGF2ZSBmZXRjaGVkIHRoZWlyIEkvTyBjb21tYW5kcywgYW5kIHJldHVybiB3aXRoXFxuKyAqIHViLVxcdTAwM2VtdXRleCBoZWxkIGFuZCByZWFkaW5lc3MgZ3VhcmFudGVlZDogdGhlbiBldmVyeSBxdWV1ZSdzIC1cXHUwMDNlY2FuY2VsaW5nXFxuKyAqIGlzIGNsZWFyZWQuIFJlYWR5IG1heSByZWdyZXNzIGJldHdlZW4gd2FrZXVwIGFuZCBtdXRleF9sb2NrKCkgKEZfQkFUQ0hcXG4rICogVU5QUkVQLCBkYWVtb24gZGVhdGgpLCBzbyByZS1jaGVjayBpdCB1bmRlciB0aGUgbXV0ZXggYW5kIHdhaXQgYWdhaW4uXFxuKyAqL1xcbitzdGF0aWMgaW50IHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2soc3RydWN0IHVibGtfZGV2aWNlICp1YilcXG4re1xcbitcXHR3aGlsZSAodHJ1ZSkge1xcbitcXHRcXHRpZiAod2FpdF92YXJfZXZlbnRfaW50ZXJydXB0aWJsZShcXHUwMDI2dWItXFx1MDAzZW5yX3F1ZXVlX3JlYWR5LFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgdWJsa19kZXZfcmVhZHkodWIpKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU5UUjtcXG4rXFxuK1xcdFxcdG11dGV4X2xvY2soXFx1MDAyNnViLVxcdTAwM2VtdXRleCk7XFxuK1xcdFxcdGlmICh1YmxrX2Rldl9yZWFkeSh1YikpXFxuK1xcdFxcdFxcdHJldHVybiAwO1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnViLVxcdTAwM2VtdXRleCk7XFxuK1xcdH1cXG4rfVxcbitcXG4gc3RhdGljIGludCB1YmxrX2N0cmxfc3RhcnRfZGV2KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuIFxcdFxcdGNvbnN0IHN0cnVjdCB1Ymxrc3J2X2N0cmxfY21kICpoZWFkZXIpXFxuIHtcXG5AQCAtNDQ5OSwxNSArNDUxNywxMCBAQCBzdGF0aWMgaW50IHVibGtfY3RybF9zdGFydF9kZXYoc3RydWN0IHVibGtfZGV2aWNlICp1YixcXG4gXFx0XFx0fTtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZShcXHUwMDI2dWItXFx1MDAzZWNvbXBsZXRpb24pICE9IDApXFxuK1xcdGlmICh1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrKHViKSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5UUjtcXG4gXFxuLVxcdGlmICghdWJsa192YWxpZGF0ZV91c2VyX3BpZCh1YiwgdWJsa3Nydl9waWQpKVxcbi1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNnViLVxcdTAwM2VtdXRleCk7XFxuLVxcdC8qIGRldmljZSBtYXkgYmVjb21lIG5vdCByZWFkeSBpbiBjYXNlIG9mIEZfQkFUQ0ggKi9cXG4tXFx0aWYgKCF1YmxrX2Rldl9yZWFkeSh1YikpIHtcXG4rXFx0aWYgKCF1YmxrX3ZhbGlkYXRlX3VzZXJfcGlkKHViLCB1Ymxrc3J2X3BpZCkpIHtcXG4gXFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4gXFx0XFx0Z290byBvdXRfdW5sb2NrO1xcbiBcXHR9XFxuQEAgLTUwNzEsNyArNTA4NCw2IEBAIHN0YXRpYyBpbnQgdWJsa19jdHJsX3N0YXJ0X3JlY292ZXJ5KHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXFxuIFxcdFxcdGdvdG8gb3V0X3VubG9jaztcXG4gXFx0fVxcbiBcXHRwcl9kZXZlbChcXFwiJXM6IHN0YXJ0IHJlY292ZXJ5IGZvciBkZXYgaWQgJWRcXFxcblxcXCIsIF9fZnVuY19fLCB1Yi1cXHUwMDNldWJfbnVtYmVyKTtcXG4tXFx0aW5pdF9jb21wbGV0aW9uKFxcdTAwMjZ1Yi1cXHUwMDNlY29tcGxldGlvbik7XFxuIFxcdHJldCA9IDA7XFxuICBvdXRfdW5sb2NrOlxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNnViLVxcdTAwM2VtdXRleCk7XFxuQEAgLTUwODcsMTYgKzUwOTksMTcgQEAgc3RhdGljIGludCB1YmxrX2N0cmxfZW5kX3JlY292ZXJ5KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuIFxcdHByX2RldmVsKFxcXCIlczogV2FpdGluZyBmb3IgYWxsIEZFVENIX1JFUXMsIGRldiBpZCAlZC4uLlxcXFxuXFxcIiwgX19mdW5jX18sXFxuIFxcdFxcdCBoZWFkZXItXFx1MDAzZWRldl9pZCk7XFxuIFxcbi1cXHRpZiAod2FpdF9mb3JfY29tcGxldGlvbl9pbnRlcnJ1cHRpYmxlKFxcdTAwMjZ1Yi1cXHUwMDNlY29tcGxldGlvbikpXFxuK1xcdGlmICh1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrKHViKSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5UUjtcXG4gXFxuIFxcdHByX2RldmVsKFxcXCIlczogQWxsIEZFVENIX1JFUXMgcmVjZWl2ZWQsIGRldiBpZCAlZFxcXFxuXFxcIiwgX19mdW5jX18sXFxuIFxcdFxcdCBoZWFkZXItXFx1MDAzZWRldl9pZCk7XFxuIFxcbi1cXHRpZiAoIXVibGtfdmFsaWRhdGVfdXNlcl9waWQodWIsIHVibGtzcnZfcGlkKSlcXG4tXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdGlmICghdWJsa192YWxpZGF0ZV91c2VyX3BpZCh1YiwgdWJsa3Nydl9waWQpKSB7XFxuK1xcdFxcdHJldCA9IC1FSU5WQUw7XFxuK1xcdFxcdGdvdG8gb3V0X3VubG9jaztcXG4rXFx0fVxcbiBcXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2dWItXFx1MDAzZW11dGV4KTtcXG4gXFx0aWYgKHVibGtfbm9zcnZfc2hvdWxkX3N0b3BfZGV2KHViKSlcXG4gXFx0XFx0Z290byBvdXRfdW5sb2NrO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTQ6MjE6MjUuODAyNzM2NTg4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDE3MzAyMDc4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX1VCTEtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrXCIsXG4gICAgXCJ1YmxrX2N0cmxfc3RhcnRfZGV2XCIsXG4gICAgXCJ1YmxrX2N0cmxfZW5kX3JlY292ZXJ5XCIsXG4gICAgXCJ1YmxrX21hcmtfaW9fcmVhZHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3luY2hyb25pemF0aW9uIGxvZ2ljIGluIHRoZSB1YmxrIGRyaXZlcidzIGNvbnRyb2wgcGF0aCwgcmVwbGFjaW5nIGEgY29tcGxldGlvbiB3aXRoIGEgY3VzdG9tIHdhaXQgbG9vcCAoYHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2tgKSB0byBmaXggYSByYWNlIGNvbmRpdGlvbiB3aGVyZSB0aGUgZGV2aWNlIGNvdWxkIGJlY29tZSB1bnJlYWR5IGJldHdlZW4gd2FrZXVwIGFuZCBtdXRleCBhY3F1aXNpdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGRldmljZSBzdGF0ZSBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhMGRlNWYyN2M2MDg2ODcwMTIyYTBlNWIzYzViYTg4NGIxNjRkNGY3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTkgMTQ6MjE6MjQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMgYi9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmNcbmluZGV4IGMyYzExZjJhMDFlNzAxLi40Y2E2ZWM3MzhjOTMwMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svdWJsa19kcnYuY1xuKysrIGIvZHJpdmVycy9ibG9jay91YmxrX2Rydi5jXG5AQCAtMTksNiArMTksNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vycm5vLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tYWpvci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdF9iaXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Jsa2Rldi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW5pdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3dhcC5oXHUwMDNlXG5AQCAtMjYsNyArMjcsNiBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBhdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbXV0ZXguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3dyaXRlYmFjay5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGxldGlvbi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaGlnaG1lbS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3lzZnMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21pc2NkZXZpY2UuaFx1MDAzZVxuQEAgLTMyNyw3ICszMjcsNiBAQCBzdHJ1Y3QgdWJsa19kZXZpY2Uge1xuIFxuIFx0c3RydWN0IHVibGtfcGFyYW1zXHRwYXJhbXM7XG4gXG4tXHRzdHJ1Y3QgY29tcGxldGlvblx0Y29tcGxldGlvbjtcbiBcdHUzMlx0XHRcdG5yX3F1ZXVlX3JlYWR5O1xuIFx0Ym9vbCBcdFx0XHR1bnByaXZpbGVnZWRfZGFlbW9ucztcbiBcdHN0cnVjdCBtdXRleCBjYW5jZWxfbXV0ZXg7XG5AQCAtMzA1NCwxMiArMzA1MywxMiBAQCBzdGF0aWMgdm9pZCB1YmxrX21hcmtfaW9fcmVhZHkoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgdTE2IHFfaWQsXG4gXHRpZiAodWJsa19kZXZfcmVhZHkodWIpKSB7XG4gXHRcdC8qXG4gXHRcdCAqIEFsbCBxdWV1ZXMgcmVhZHkgLSBjbGVhciBkZXZpY2UtbGV2ZWwgY2FuY2VsaW5nIGZsYWdcbi1cdFx0ICogYW5kIGNvbXBsZXRlIHRoZSByZWNvdmVyeS9pbml0aWFsaXphdGlvbi5cbitcdFx0ICogYW5kIHdha2UgdWJsa19kZXZfcmVhZHkoKSB3YWl0ZXJzLlxuIFx0XHQgKi9cbiBcdFx0bXV0ZXhfbG9jayhcdTAwMjZ1Yi1cdTAwM2VjYW5jZWxfbXV0ZXgpO1xuIFx0XHR1Yi1cdTAwM2VjYW5jZWxpbmcgPSBmYWxzZTtcbiBcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnViLVx1MDAzZWNhbmNlbF9tdXRleCk7XG4tXHRcdGNvbXBsZXRlX2FsbChcdTAwMjZ1Yi1cdTAwM2Vjb21wbGV0aW9uKTtcbitcdFx0d2FrZV91cF92YXIoXHUwMDI2dWItXHUwMDNlbnJfcXVldWVfcmVhZHkpO1xuIFx0fVxuIH1cbiBcbkBAIC00MjczLDcgKzQyNzIsNiBAQCBzdGF0aWMgaW50IHVibGtfaW5pdF9xdWV1ZXMoc3RydWN0IHVibGtfZGV2aWNlICp1YilcbiBcdFx0XHRnb3RvIGZhaWw7XG4gXHR9XG4gXG4tXHRpbml0X2NvbXBsZXRpb24oXHUwMDI2dWItXHUwMDNlY29tcGxldGlvbik7XG4gXHRyZXR1cm4gMDtcbiBcbiAgZmFpbDpcbkBAIC00NDE3LDYgKzQ0MTUsMjYgQEAgc3RhdGljIGJvb2wgdWJsa192YWxpZGF0ZV91c2VyX3BpZChzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLCBwaWRfdCB1Ymxrc3J2X3BpZClcbiBcdHJldHVybiB1Yi1cdTAwM2V1Ymxrc3J2X3RnaWQgPT0gdWJsa3Nydl9waWQ7XG4gfVxuIFxuKy8qXG4rICogV2FpdCB1bnRpbCBhbGwgcXVldWVzIGhhdmUgZmV0Y2hlZCB0aGVpciBJL08gY29tbWFuZHMsIGFuZCByZXR1cm4gd2l0aFxuKyAqIHViLVx1MDAzZW11dGV4IGhlbGQgYW5kIHJlYWRpbmVzcyBndWFyYW50ZWVkOiB0aGVuIGV2ZXJ5IHF1ZXVlJ3MgLVx1MDAzZWNhbmNlbGluZ1xuKyAqIGlzIGNsZWFyZWQuIFJlYWR5IG1heSByZWdyZXNzIGJldHdlZW4gd2FrZXVwIGFuZCBtdXRleF9sb2NrKCkgKEZfQkFUQ0hcbisgKiBVTlBSRVAsIGRhZW1vbiBkZWF0aCksIHNvIHJlLWNoZWNrIGl0IHVuZGVyIHRoZSBtdXRleCBhbmQgd2FpdCBhZ2Fpbi5cbisgKi9cbitzdGF0aWMgaW50IHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2soc3RydWN0IHVibGtfZGV2aWNlICp1Yilcbit7XG4rXHR3aGlsZSAodHJ1ZSkge1xuK1x0XHRpZiAod2FpdF92YXJfZXZlbnRfaW50ZXJydXB0aWJsZShcdTAwMjZ1Yi1cdTAwM2Vucl9xdWV1ZV9yZWFkeSxcbitcdFx0XHRcdFx0XHQgdWJsa19kZXZfcmVhZHkodWIpKSlcbitcdFx0XHRyZXR1cm4gLUVJTlRSO1xuK1xuK1x0XHRtdXRleF9sb2NrKFx1MDAyNnViLVx1MDAzZW11dGV4KTtcbitcdFx0aWYgKHVibGtfZGV2X3JlYWR5KHViKSlcbitcdFx0XHRyZXR1cm4gMDtcbitcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnViLVx1MDAzZW11dGV4KTtcbitcdH1cbit9XG4rXG4gc3RhdGljIGludCB1YmxrX2N0cmxfc3RhcnRfZGV2KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG4gXHRcdGNvbnN0IHN0cnVjdCB1Ymxrc3J2X2N0cmxfY21kICpoZWFkZXIpXG4ge1xuQEAgLTQ0OTksMTUgKzQ1MTcsMTAgQEAgc3RhdGljIGludCB1YmxrX2N0cmxfc3RhcnRfZGV2KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG4gXHRcdH07XG4gXHR9XG4gXG4tXHRpZiAod2FpdF9mb3JfY29tcGxldGlvbl9pbnRlcnJ1cHRpYmxlKFx1MDAyNnViLVx1MDAzZWNvbXBsZXRpb24pICE9IDApXG4rXHRpZiAodWJsa193YWl0X2Rldl9yZWFkeV9hbmRfbG9jayh1YikpXG4gXHRcdHJldHVybiAtRUlOVFI7XG4gXG4tXHRpZiAoIXVibGtfdmFsaWRhdGVfdXNlcl9waWQodWIsIHVibGtzcnZfcGlkKSlcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNnViLVx1MDAzZW11dGV4KTtcbi1cdC8qIGRldmljZSBtYXkgYmVjb21lIG5vdCByZWFkeSBpbiBjYXNlIG9mIEZfQkFUQ0ggKi9cbi1cdGlmICghdWJsa19kZXZfcmVhZHkodWIpKSB7XG4rXHRpZiAoIXVibGtfdmFsaWRhdGVfdXNlcl9waWQodWIsIHVibGtzcnZfcGlkKSkge1xuIFx0XHRyZXQgPSAtRUlOVkFMO1xuIFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXHR9XG5AQCAtNTA3MSw3ICs1MDg0LDYgQEAgc3RhdGljIGludCB1YmxrX2N0cmxfc3RhcnRfcmVjb3Zlcnkoc3RydWN0IHVibGtfZGV2aWNlICp1YilcbiBcdFx0Z290byBvdXRfdW5sb2NrO1xuIFx0fVxuIFx0cHJfZGV2ZWwoXCIlczogc3RhcnQgcmVjb3ZlcnkgZm9yIGRldiBpZCAlZFxcblwiLCBfX2Z1bmNfXywgdWItXHUwMDNldWJfbnVtYmVyKTtcbi1cdGluaXRfY29tcGxldGlvbihcdTAwMjZ1Yi1cdTAwM2Vjb21wbGV0aW9uKTtcbiBcdHJldCA9IDA7XG4gIG91dF91bmxvY2s6XG4gXHRtdXRleF91bmxvY2soXHUwMDI2dWItXHUwMDNlbXV0ZXgpO1xuQEAgLTUwODcsMTYgKzUwOTksMTcgQEAgc3RhdGljIGludCB1YmxrX2N0cmxfZW5kX3JlY292ZXJ5KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG4gXHRwcl9kZXZlbChcIiVzOiBXYWl0aW5nIGZvciBhbGwgRkVUQ0hfUkVRcywgZGV2IGlkICVkLi4uXFxuXCIsIF9fZnVuY19fLFxuIFx0XHQgaGVhZGVyLVx1MDAzZWRldl9pZCk7XG4gXG4tXHRpZiAod2FpdF9mb3JfY29tcGxldGlvbl9pbnRlcnJ1cHRpYmxlKFx1MDAyNnViLVx1MDAzZWNvbXBsZXRpb24pKVxuK1x0aWYgKHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2sodWIpKVxuIFx0XHRyZXR1cm4gLUVJTlRSO1xuIFxuIFx0cHJfZGV2ZWwoXCIlczogQWxsIEZFVENIX1JFUXMgcmVjZWl2ZWQsIGRldiBpZCAlZFxcblwiLCBfX2Z1bmNfXyxcbiBcdFx0IGhlYWRlci1cdTAwM2VkZXZfaWQpO1xuIFxuLVx0aWYgKCF1YmxrX3ZhbGlkYXRlX3VzZXJfcGlkKHViLCB1Ymxrc3J2X3BpZCkpXG4tXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0aWYgKCF1YmxrX3ZhbGlkYXRlX3VzZXJfcGlkKHViLCB1Ymxrc3J2X3BpZCkpIHtcbitcdFx0cmV0ID0gLUVJTlZBTDtcbitcdFx0Z290byBvdXRfdW5sb2NrO1xuK1x0fVxuIFxuLVx0bXV0ZXhfbG9jayhcdTAwMjZ1Yi1cdTAwM2VtdXRleCk7XG4gXHRpZiAodWJsa19ub3Nydl9zaG91bGRfc3RvcF9kZXYodWIpKVxuIFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNDoyMToyNS44MDI3Mzc5MzhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDA4NzgxODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFVzZXJzcGFjZSBCbG9jayBEZXZpY2UgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0J3MgbWFraW5nIHNvbWUgY2hhbmdlcyB0byBgZHJpdmVycy9ibG9jay91YmxrX2Rydi5jYC4gUmlnaHQgYXdheSwgdGhhdCB0ZWxscyBtZSB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIFVzZXJzcGFjZSBCbG9jayBEZXZpY2UgRHJpdmVyLCB3aGljaCBJJ20gZmFtaWxpYXIgd2l0aCDigJMgaXQncyBhIGNyaXRpY2FsIHBpZWNlIGZvciBleHBvc2luZyBibG9jayBkZXZpY2VzIHRvIHVzZXJzcGFjZSwgb2Z0ZW4gdXNlZnVsIGluIHZpcnR1YWxpemF0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIGJyb2FkZXIgY29udGV4dCBvZiB0aGlzIGRyaXZlcjsgSSBrbm93IHRoYXQgaXQgbmVlZHMgYEJMS19ERVZfVUJMS2AgZW5hYmxlZCBpbiB0aGUgY29uZmlnLlxuXG5UaGUgcGF0Y2gncyBjb3JlIG1vZGlmaWNhdGlvbiBzZWVtcyB0byBpbnZvbHZlIHJlcGxhY2luZyBgc3RydWN0IGNvbXBsZXRpb25gIHdpdGggYHdhaXRfdmFyX2V2ZW50X2ludGVycnVwdGlibGVgIGFuZCBgd2FrZV91cF92YXJgIGZvciBzeW5jaHJvbml6aW5nIHF1ZXVlIHJlYWRpbmVzcy4gVGhhdCdzIGEgY2xhc3NpYyBzaWduYWwvd2FpdCBwYXR0ZXJuLCBhbmQgSSBzZWUgdGhleSd2ZSBhbHNvIGludHJvZHVjZWQgYSBuZXcgZnVuY3Rpb24sIGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYC4gVGhlIG5hbWUgaXMgcHJldHR5IGRlc2NyaXB0aXZlLiBJdCBsb29rcyBsaWtlIHRoaXMgbmV3IGZ1bmN0aW9uIGRvZXMgcHJlY2lzZWx5IHdoYXQgaXQgc2F5cyDigJMgd2FpdHMgZm9yIGFsbCB0aGUgcXVldWVzIHRvIHJlcG9ydCB0aGF0IHRoZXkncmUgcmVhZHkgYW5kIHRoZW4gYWNxdWlyZXMgYHViLVx1MDAzZW11dGV4YC4gVGhhdCdzIGxpa2VseSBhIGNyaXRpY2FsIHNlY3Rpb24gcHJvdGVjdGVkIGJ5IHRoZSBtdXRleC5cblxuTm93LCB0aGUgaW1wb3J0YW50IHBhcnQ6IGl0IHNlZW1zIHRoYXQgYHVibGtfY3RybF9zdGFydF9kZXZgIGFuZCBgdWJsa19jdHJsX2VuZF9yZWNvdmVyeWAgYXJlIGJlaW5nIG1vZGlmaWVkIHRvICp1c2UqIHRoaXMgbmV3IGZ1bmN0aW9uLiBGcm9tIG15IGV4cGVyaWVuY2UsIHRoZXNlIGFyZSBsaWtlbHkgdGhlIGNvbnRyb2wgcGF0aHMgZm9yIHN0YXJ0aW5nIHRoZSBkZXZpY2UgYW5kIGVuZGluZyBhIHJlY292ZXJ5IHByb2Nlc3MuIFRoaXMgc3VnZ2VzdHMgdGhlIHBhdGNoIGlzIGVuc3VyaW5nIHRoZXNlIGNvbnRyb2wgcGF0aHMgbm93IHByb3Blcmx5IHdhaXQgZm9yIHRoZSBxdWV1ZXMgdG8gYmUgcmVhZHkgYW5kIGFjcXVpcmUgdGhlIG5lY2Vzc2FyeSBsb2NrIGJlZm9yZSBwcm9jZWVkaW5nLCB3aGljaCBpcyBhIHZlcnkgcmVhc29uYWJsZSBjaGFuZ2UgZm9yIGVuc3VyaW5nIGRhdGEgaW50ZWdyaXR5IGFuZCByZWxpYWJsZSBvcGVyYXRpb24uIFRoaXMgaXMgbGlrZWx5IGFuIGltcHJvdmVtZW50IHRvIGhvdyBpdCBoYW5kbGVzIHRoZSBvdmVyYWxsIGluaXRpYWxpemF0aW9uIGFuZCByZWNvdmVyeSBzdGF0ZSwgYW5kIG5lZWRzIHRvIGJlIGZ1bGx5IGV2YWx1YXRlZCB3aXRoaW4gdGhpcyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTU2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTQ6MjE6MzEuMjExNTIyNjE3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MDA3MjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJMS19ERVZfVUJMS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL0tjb25maWc9MzE1PWNvbmZpZyBCTEtfREVWX1JCRFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTMyNy1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzI4OmNvbmZpZyBCTEtfREVWX1VCTEtcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzI5LVxcdHRyaXN0YXRlIFxcXCJVc2Vyc3BhY2UgYmxvY2sgZHJpdmVyIChFeHBlcmltZW50YWwpXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTMzNz1jb25maWcgQkxLREVWX1VCTEtfTEVHQUNZX09QQ09ERVNcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzM4LVxcdGJvb2wgXFxcIlN1cHBvcnQgbGVnYWN5IGNvbW1hbmQgb3Bjb2RlXFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzozMzk6XFx0ZGVwZW5kcyBvbiBCTEtfREVWX1VCTEtcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzQwLVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9ibG9jay9NYWtlZmlsZT0zOD1vYmotJChDT05GSUdfQkxLX0RFVl9SVVNUX05VTEwpICs9IHJudWxsL1xcbmRyaXZlcnMvYmxvY2svTWFrZWZpbGUtMzktXFxuZHJpdmVycy9ibG9jay9NYWtlZmlsZTo0MDpvYmotJChDT05GSUdfQkxLX0RFVl9VQkxLKVxcdFxcdFxcdCs9IHVibGtfZHJ2Lm9cXG5kcml2ZXJzL2Jsb2NrL01ha2VmaWxlLTQxLW9iai0kKENPTkZJR19CTEtfREVWX1pPTkVEX0xPT1ApICs9IHpsb29wLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTQ6MjE6MzEuMjcwNTM2NTM2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEwNDc2MDY5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGlzOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiB1YmxrIERyaXZlciBDb25maWd1cmF0aW9uIGFuZCBDb250cm9sIEZsb3cqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIGBCTEtfREVWX1VCTEtgIGlzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gd2UncmUgZGVhbGluZyB3aXRoLiBOb3csIHRoZSBwYXRjaCBmb2N1c2VzIG9uIGB1YmxrX2Rydi5jYCwgc28gbGV0J3Mgem9vbSBpbiBvbiB0aGF0LiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gYHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2tgIGFuZCB0aGUgZnVuY3Rpb25zIHRoYXQgY2FsbCBpdC4gVGhhdCBzZWVtcyBsaWtlIGEgY3JpdGljYWwgc3luY2hyb25pemF0aW9uIHBvaW50LiBUaGUgY2FsbGVycyBhcmUgYHVibGtfY3RybF9zdGFydF9kZXZgIGFuZCBgdWJsa19jdHJsX2VuZF9yZWNvdmVyeWAuIFJpZ2h0LCB0aG9zZSBzb3VuZCBsaWtlIGNvbnRyb2wgY29tbWFuZHMgc3BlY2lmaWMgdG8gdGhlIHVibGsgZGV2aWNlIGl0c2VsZi4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhvc2UgY29tbWFuZHMgYW5kIHRoZSBgdWJsa193YWl0X2Rldl9yZWFkeV9hbmRfbG9ja2AgZnVuY3Rpb24uIE5vdywgbGV0J3MgbmFpbCBkb3duIHdoYXQgZnVuY3Rpb25zIGFyZSBrZXkgaGVyZTpcblxuKiAgIGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYFxuKiAgIGB1YmxrX2N0cmxfc3RhcnRfZGV2YFxuKiAgIGB1YmxrX2N0cmxfZW5kX3JlY292ZXJ5YFxuKiAgIGB1YmxrX21hcmtfaW9fcmVhZHlgXG5cbkl0IHdvdWxkIGJlIGEgZ29vZCBpZGVhIHRvIGVuc3VyZSB0aGF0J3MgYWxsLCBidXQgbGV0IG1lIGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNDksIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTQ6MjE6MzUuMzc1Mjk4ODI0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MTExODI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay91YmxrX2Rydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz00NDA5PXN0YXRpYyBib29sIHVibGtfdmFsaWRhdGVfdXNlcl9waWQoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgcGlkX3QgdWJsa3Nydl9waWQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDQyMy0gKi9cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NDQyNDpzdGF0aWMgaW50IHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2soc3RydWN0IHVibGtfZGV2aWNlICp1YilcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDQyNS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NDQzOD1zdGF0aWMgaW50IHVibGtfY3RybF9zdGFydF9kZXYoc3RydWN0IHVibGtfZGV2aWNlICp1YixcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00NTE5LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo0NTIwOlxcdGlmICh1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrKHViKSlcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDUyMS1cXHRcXHRyZXR1cm4gLUVJTlRSO1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTUwOTM9c3RhdGljIGludCB1YmxrX2N0cmxfZW5kX3JlY292ZXJ5KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTEwMS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTEwMjpcXHRpZiAodWJsa193YWl0X2Rldl9yZWFkeV9hbmRfbG9jayh1YikpXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUxMDMtXFx0XFx0cmV0dXJuIC1FSU5UUjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTQ6MjE6MzUuNDMzNDE0NTgyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMyNzkzODcxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBVYmxrIFN5bmNocm9uaXphdGlvbiBGaXgqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJ20gc2VlaW5nLCB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCB0aWdodGVuaW5nIHVwIHN5bmNocm9uaXphdGlvbiB3aXRoaW4gdGhlIHVibGsgY29udHJvbCBwYXRoLiBJdCBzZWVtcyBsaWtlIHdlJ3ZlIGdvdCBhIHJhY2UgY29uZGl0aW9uIOKAkyB0aGUgZGV2aWNlICpjb3VsZCogYmVjb21lIHVuYXZhaWxhYmxlIGFmdGVyIGJlaW5nIHdva2VuIHVwLCBidXQgYmVmb3JlIHRoZSBtdXRleCBsb2NrIGlzIGFjcXVpcmVkLiBUaGUgZml4IGRpcmVjdGx5IGFkZHJlc3NlcyB0aGlzIGJ5IHJlLWNoZWNraW5nIGB1YmxrX2Rldl9yZWFkeSh1YilgIHVuZGVyIHRoZSBtdXRleCBhbmQgd2FpdGluZyBhZ2FpbiBpZiBuZWNlc3NhcnksIHdoaWNoIGlzIGEgc29saWQgYXBwcm9hY2ggdG8gcHJldmVudCB0aGF0LiBUaGV5J3ZlIHN3YXBwZWQgb3V0IGEgYHN0cnVjdCBjb21wbGV0aW9uYCBmb3IgYHdhaXRfdmFyX2V2ZW50X2ludGVycnVwdGlibGVgIHdpdGggYSBjdXN0b20gd2FpdCBsb29wIGluIGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYC4gTWFrZXMgc2Vuc2Ug4oCTIG1vcmUgZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlciB0aGUgd2FpdCBzdGF0ZS5cblxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGRpcmVjdCBzeW5jaHJvbml6YXRpb24gZml4LCBhZmZlY3RpbmcgdGhlIGNvbnRyb2wgZmxvdyBhbmQgc3RhdGUgdHJhbnNpdGlvbnMgb2YgdWJsaywgbWVhbmluZyBpdCdzIGFic29sdXRlbHkgd29ydGggdGhyb3dpbmcgZnV6emluZyBhdCBpdC4gV2UgbmVlZCB0byByZWFsbHkgaGFtbWVyIG9uIHRoaXMgZml4IHRvIG1ha2Ugc3VyZSBpdCBob2xkcyB1cCB1bmRlciBzdHJlc3MgYW5kIGFsbCBlZGdlIGNhc2VzIGFyZSBoYW5kbGVkLlxuXG5LZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIHdoZW4gdGVzdGluZyBhbmQgZnV6emluZyBhcmUgYHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2tgLCBgdWJsa19jdHJsX3N0YXJ0X2RldmAsIGB1YmxrX2N0cmxfZW5kX3JlY292ZXJ5YCwgYW5kIGB1YmxrX21hcmtfaW9fcmVhZHlgLiBUaG9zZSBhcmUgdGhlIGNvcmUgYXJlYXMgd2hlcmUgdGhpcyBzeW5jaHJvbml6YXRpb24gbG9naWMgaXMgYmVpbmcgYXBwbGllZC5cblxuQW5kLCBvZiBjb3Vyc2UsIHRoZSBgQkxLX0RFVl9VQkxLYCBjb25maWcgaGFzIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgdG8gZXZlbiBtYXR0ZXIuIExldCdzIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlncyBpbiBwbGF5IGhlcmUsIGp1c3QgdG8gYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4ODYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTQ6MjE6NDAuNzYxMzU1MzQzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzQ1NDQxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9VQkxLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL0tjb25maWc9MzE1PWNvbmZpZyBCTEtfREVWX1JCRFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTMyNy1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzI4OmNvbmZpZyBCTEtfREVWX1VCTEtcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzI5LVxcdHRyaXN0YXRlIFxcXCJVc2Vyc3BhY2UgYmxvY2sgZHJpdmVyIChFeHBlcmltZW50YWwpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNDoyMTo0MC44Njg4MzE1ODFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDIzNDc1ODQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZpbmFsaXppbmcgdGhlIEZ1enppbmcgU3RyYXRlZ3kgZm9yIFVibGsgRHJpdmVyIFN5bmNocm9uaXphdGlvbioqXG5cbkFscmlnaHQsIGl0J3Mgc2V0dGxlZC4gYEJMS19ERVZfVUJMS2AgaXMgdGhlIGNvbmZpZ3VyYXRpb24gd2UgbmVlZCB0byB0YXJnZXQuIE5vIG5lZWQgdG8gb3ZlcmNvbXBsaWNhdGUgdGhpbmdzOyB0aGF0J3MgdGhlIGJhc2Ugd2UnbGwgYnVpbGQgb24uXG5cbk5vdywgdG8gc29saWRpZnkgdGhlIGZ1enppbmcgcGxhbi4gTGV0J3MgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgaW4gcGxhY2UgZm9yIHRoZSBmaW5hbCByZXNwb25zZS5cblxuYFdvcnRoRnV6emluZ2A6IEFic29sdXRlbHkuIFRoaXMgaXMgYSBjcml0aWNhbCBwYXRjaC5cblxuYEZvY3VzU3ltYm9sc2A6IEkndmUgaWRlbnRpZmllZCB0aGUga2V5IGZ1bmN0aW9ucyBmb3IgY29uY2VudHJhdGVkIGZ1enppbmc6IGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYCwgYHVibGtfY3RybF9zdGFydF9kZXZgLCBgdWJsa19jdHJsX2VuZF9yZWNvdmVyeWAsIGFuZCBgdWJsa19tYXJrX2lvX3JlYWR5YC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBkaXJlY3RseSBpbnZvbHZlZCBpbiB0aGUgc3luY2hyb25pemF0aW9uIGxvZ2ljIHRoZSBwYXRjaCBpcyBtb2RpZnlpbmcuXG5cbmBFbmFibGVDb25maWdzYDogSnVzdCB0aGUgb25lLCBgQkxLX0RFVl9VQkxLYCwgd2hpY2ggaXMgcHJlY2lzZWx5IHdoYXQgd2Ugd2FudC5cblxuYFJlYXNvbmluZ2A6IFRoZSBwYXRjaCBpdHNlbGYgY2hhbmdlcyBob3cgdGhlIHVibGsgZHJpdmVyIGhhbmRsZXMgZGV2aWNlIHN0YXRlIHRyYW5zaXRpb25zIGFuZCBzeW5jaHJvbml6YXRpb24gaW4gaXRzIGNvbnRyb2wgcGF0aC4gU3BlY2lmaWNhbGx5LCB0aGV5J3ZlIHJlcGxhY2VkIGEgc2ltcGxlIGNvbXBsZXRpb24gd2l0aCBhIGN1c3RvbSB3YWl0IGxvb3AgKGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYCkgdG8gYWRkcmVzcyBhIHJhY2UgY29uZGl0aW9uLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwgY2hhbmdlKiBpbiBob3cgdGhlIGRldmljZSdzIHJlYWR5IHN0YXRlIGlzIG1hbmFnZWQuIFRoYXQncyBhIHRleHRib29rIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gV2UgbmVlZCB0byBleHBvc2UgYW55IGx1cmtpbmcgY29uY3VycmVuY3kgaXNzdWVzIGluIHRoaXMgbmV3IGFwcHJvYWNoLiBJIGZlZWwgZ29vZCBhYm91dCB0aGlzIHBsYW47IGl0IHNob3VsZCBiZSBjb21wcmVoZW5zaXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTg2LCJPdXRwdXRUb2tlbnMiOjE1OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNDoyMTo0NS44OTIzMTA1MjlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzQ0MTI4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9VQkxLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidWJsa193YWl0X2Rldl9yZWFkeV9hbmRfbG9ja1wiLFxuICAgIFwidWJsa19jdHJsX3N0YXJ0X2RldlwiLFxuICAgIFwidWJsa19jdHJsX2VuZF9yZWNvdmVyeVwiLFxuICAgIFwidWJsa19tYXJrX2lvX3JlYWR5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHN5bmNocm9uaXphdGlvbiBsb2dpYyBpbiB0aGUgdWJsayBkcml2ZXIncyBjb250cm9sIHBhdGgsIHJlcGxhY2luZyBhIGNvbXBsZXRpb24gd2l0aCBhIGN1c3RvbSB3YWl0IGxvb3AgKGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYCkgdG8gZml4IGEgcmFjZSBjb25kaXRpb24gd2hlcmUgdGhlIGRldmljZSBjb3VsZCBiZWNvbWUgdW5yZWFkeSBiZXR3ZWVuIHdha2V1cCBhbmQgbXV0ZXggYWNxdWlzaXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBkZXZpY2Ugc3RhdGUgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9VQkxLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidWJsa193YWl0X2Rldl9yZWFkeV9hbmRfbG9ja1wiLFxuICAgIFwidWJsa19jdHJsX3N0YXJ0X2RldlwiLFxuICAgIFwidWJsa19jdHJsX2VuZF9yZWNvdmVyeVwiLFxuICAgIFwidWJsa19tYXJrX2lvX3JlYWR5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHN5bmNocm9uaXphdGlvbiBsb2dpYyBpbiB0aGUgdWJsayBkcml2ZXIncyBjb250cm9sIHBhdGgsIHJlcGxhY2luZyBhIGNvbXBsZXRpb24gd2l0aCBhIGN1c3RvbSB3YWl0IGxvb3AgKGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYCkgdG8gZml4IGEgcmFjZSBjb25kaXRpb24gd2hlcmUgdGhlIGRldmljZSBjb3VsZCBiZWNvbWUgdW5yZWFkeSBiZXR3ZWVuIHdha2V1cCBhbmQgbXV0ZXggYWNxdWlzaXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBkZXZpY2Ugc3RhdGUgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmq288[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-19 13:47:58 +0000 UTC FinishedAt: 2026-07-19 14:21:47 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "c6859eed755df351a3978b33cb92365f9b3e8f06", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_UBLK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "c6859eed755df351a3978b33cb92365f9b3e8f06", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_UBLK" ], "series_id": "2f17c956-424f-4a32-9ac2-19d2279e269b" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ublk_wait_dev_ready_and_lock", "ublk_ctrl_start_dev", "ublk_ctrl_end_recovery", "ublk_mark_io_ready" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE0OjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfVUJMSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2smIzM0OywKICAgICYjMzQ7dWJsa19jdHJsX3N0YXJ0X2RldiYjMzQ7LAogICAgJiMzNDt1YmxrX2N0cmxfZW5kX3JlY292ZXJ5JiMzNDssCiAgICAmIzM0O3VibGtfbWFya19pb19yZWFkeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3luY2hyb25pemF0aW9uIGxvZ2ljIGluIHRoZSB1YmxrIGRyaXZlciYjMzk7cyBjb250cm9sIHBhdGgsIHJlcGxhY2luZyBhIGNvbXBsZXRpb24gd2l0aCBhIGN1c3RvbSB3YWl0IGxvb3AgKGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYCkgdG8gZml4IGEgcmFjZSBjb25kaXRpb24gd2hlcmUgdGhlIGRldmljZSBjb3VsZCBiZWNvbWUgdW5yZWFkeSBiZXR3ZWVuIHdha2V1cCBhbmQgbXV0ZXggYWNxdWlzaXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBkZXZpY2Ugc3RhdGUgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTQ6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhMGRlNWYyN2M2MDg2ODcwMTIyYTBlNWIzYzViYTg4NGIxNjRkNGY3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTkgMTQ6MjE6MjQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay91YmxrX2Rydi5jIGIvZHJpdmVycy9ibG9jay91YmxrX2Rydi5jXG5pbmRleCBjMmMxMWYyYTAxZTcwMS4uNGNhNmVjNzM4YzkzMDIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svdWJsa19kcnYuY1xuQEAgLTE5LDYgJiM0MzsxOSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJybm8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21ham9yLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC93YWl0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdF9iaXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Jsa2Rldi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW5pdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3dhcC5oXHUwMDNlXG5AQCAtMjYsNyAmIzQzOzI3LDYgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jb21wYXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L211dGV4LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC93cml0ZWJhY2suaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBsZXRpb24uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2hpZ2htZW0uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3N5c2ZzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9taXNjZGV2aWNlLmhcdTAwM2VcbkBAIC0zMjcsNyAmIzQzOzMyNyw2IEBAIHN0cnVjdCB1YmxrX2RldmljZSB7XG4gXG4gXHRzdHJ1Y3QgdWJsa19wYXJhbXNcdHBhcmFtcztcbiBcbi1cdHN0cnVjdCBjb21wbGV0aW9uXHRjb21wbGV0aW9uO1xuIFx0dTMyXHRcdFx0bnJfcXVldWVfcmVhZHk7XG4gXHRib29sIFx0XHRcdHVucHJpdmlsZWdlZF9kYWVtb25zO1xuIFx0c3RydWN0IG11dGV4IGNhbmNlbF9tdXRleDtcbkBAIC0zMDU0LDEyICYjNDM7MzA1MywxMiBAQCBzdGF0aWMgdm9pZCB1YmxrX21hcmtfaW9fcmVhZHkoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgdTE2IHFfaWQsXG4gXHRpZiAodWJsa19kZXZfcmVhZHkodWIpKSB7XG4gXHRcdC8qXG4gXHRcdCAqIEFsbCBxdWV1ZXMgcmVhZHkgLSBjbGVhciBkZXZpY2UtbGV2ZWwgY2FuY2VsaW5nIGZsYWdcbi1cdFx0ICogYW5kIGNvbXBsZXRlIHRoZSByZWNvdmVyeS9pbml0aWFsaXphdGlvbi5cbiYjNDM7XHRcdCAqIGFuZCB3YWtlIHVibGtfZGV2X3JlYWR5KCkgd2FpdGVycy5cbiBcdFx0ICovXG4gXHRcdG11dGV4X2xvY2soXHUwMDI2dWItXHUwMDNlY2FuY2VsX211dGV4KTtcbiBcdFx0dWItXHUwMDNlY2FuY2VsaW5nID0gZmFsc2U7XG4gXHRcdG11dGV4X3VubG9jayhcdTAwMjZ1Yi1cdTAwM2VjYW5jZWxfbXV0ZXgpO1xuLVx0XHRjb21wbGV0ZV9hbGwoXHUwMDI2dWItXHUwMDNlY29tcGxldGlvbik7XG4mIzQzO1x0XHR3YWtlX3VwX3ZhcihcdTAwMjZ1Yi1cdTAwM2Vucl9xdWV1ZV9yZWFkeSk7XG4gXHR9XG4gfVxuIFxuQEAgLTQyNzMsNyAmIzQzOzQyNzIsNiBAQCBzdGF0aWMgaW50IHVibGtfaW5pdF9xdWV1ZXMoc3RydWN0IHVibGtfZGV2aWNlICp1YilcbiBcdFx0XHRnb3RvIGZhaWw7XG4gXHR9XG4gXG4tXHRpbml0X2NvbXBsZXRpb24oXHUwMDI2dWItXHUwMDNlY29tcGxldGlvbik7XG4gXHRyZXR1cm4gMDtcbiBcbiAgZmFpbDpcbkBAIC00NDE3LDYgJiM0Mzs0NDE1LDI2IEBAIHN0YXRpYyBib29sIHVibGtfdmFsaWRhdGVfdXNlcl9waWQoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgcGlkX3QgdWJsa3Nydl9waWQpXG4gXHRyZXR1cm4gdWItXHUwMDNldWJsa3Nydl90Z2lkID09IHVibGtzcnZfcGlkO1xuIH1cbiBcbiYjNDM7LypcbiYjNDM7ICogV2FpdCB1bnRpbCBhbGwgcXVldWVzIGhhdmUgZmV0Y2hlZCB0aGVpciBJL08gY29tbWFuZHMsIGFuZCByZXR1cm4gd2l0aFxuJiM0MzsgKiB1Yi1cdTAwM2VtdXRleCBoZWxkIGFuZCByZWFkaW5lc3MgZ3VhcmFudGVlZDogdGhlbiBldmVyeSBxdWV1ZSYjMzk7cyAtXHUwMDNlY2FuY2VsaW5nXG4mIzQzOyAqIGlzIGNsZWFyZWQuIFJlYWR5IG1heSByZWdyZXNzIGJldHdlZW4gd2FrZXVwIGFuZCBtdXRleF9sb2NrKCkgKEZfQkFUQ0hcbiYjNDM7ICogVU5QUkVQLCBkYWVtb24gZGVhdGgpLCBzbyByZS1jaGVjayBpdCB1bmRlciB0aGUgbXV0ZXggYW5kIHdhaXQgYWdhaW4uXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW50IHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2soc3RydWN0IHVibGtfZGV2aWNlICp1YilcbiYjNDM7e1xuJiM0MztcdHdoaWxlICh0cnVlKSB7XG4mIzQzO1x0XHRpZiAod2FpdF92YXJfZXZlbnRfaW50ZXJydXB0aWJsZShcdTAwMjZ1Yi1cdTAwM2Vucl9xdWV1ZV9yZWFkeSxcbiYjNDM7XHRcdFx0XHRcdFx0IHVibGtfZGV2X3JlYWR5KHViKSkpXG4mIzQzO1x0XHRcdHJldHVybiAtRUlOVFI7XG4mIzQzO1xuJiM0MztcdFx0bXV0ZXhfbG9jayhcdTAwMjZ1Yi1cdTAwM2VtdXRleCk7XG4mIzQzO1x0XHRpZiAodWJsa19kZXZfcmVhZHkodWIpKVxuJiM0MztcdFx0XHRyZXR1cm4gMDtcbiYjNDM7XHRcdG11dGV4X3VubG9jayhcdTAwMjZ1Yi1cdTAwM2VtdXRleCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgdWJsa19jdHJsX3N0YXJ0X2RldihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuIFx0XHRjb25zdCBzdHJ1Y3QgdWJsa3Nydl9jdHJsX2NtZCAqaGVhZGVyKVxuIHtcbkBAIC00NDk5LDE1ICYjNDM7NDUxNywxMCBAQCBzdGF0aWMgaW50IHVibGtfY3RybF9zdGFydF9kZXYoc3RydWN0IHVibGtfZGV2aWNlICp1YixcbiBcdFx0fTtcbiBcdH1cbiBcbi1cdGlmICh3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVwdGlibGUoXHUwMDI2dWItXHUwMDNlY29tcGxldGlvbikgIT0gMClcbiYjNDM7XHRpZiAodWJsa193YWl0X2Rldl9yZWFkeV9hbmRfbG9jayh1YikpXG4gXHRcdHJldHVybiAtRUlOVFI7XG4gXG4tXHRpZiAoIXVibGtfdmFsaWRhdGVfdXNlcl9waWQodWIsIHVibGtzcnZfcGlkKSlcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNnViLVx1MDAzZW11dGV4KTtcbi1cdC8qIGRldmljZSBtYXkgYmVjb21lIG5vdCByZWFkeSBpbiBjYXNlIG9mIEZfQkFUQ0ggKi9cbi1cdGlmICghdWJsa19kZXZfcmVhZHkodWIpKSB7XG4mIzQzO1x0aWYgKCF1YmxrX3ZhbGlkYXRlX3VzZXJfcGlkKHViLCB1Ymxrc3J2X3BpZCkpIHtcbiBcdFx0cmV0ID0gLUVJTlZBTDtcbiBcdFx0Z290byBvdXRfdW5sb2NrO1xuIFx0fVxuQEAgLTUwNzEsNyAmIzQzOzUwODQsNiBAQCBzdGF0aWMgaW50IHVibGtfY3RybF9zdGFydF9yZWNvdmVyeShzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxuIFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXHR9XG4gXHRwcl9kZXZlbChcJiMzNDslczogc3RhcnQgcmVjb3ZlcnkgZm9yIGRldiBpZCAlZFxcblwmIzM0OywgX19mdW5jX18sIHViLVx1MDAzZXViX251bWJlcik7XG4tXHRpbml0X2NvbXBsZXRpb24oXHUwMDI2dWItXHUwMDNlY29tcGxldGlvbik7XG4gXHRyZXQgPSAwO1xuICBvdXRfdW5sb2NrOlxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnViLVx1MDAzZW11dGV4KTtcbkBAIC01MDg3LDE2ICYjNDM7NTA5OSwxNyBAQCBzdGF0aWMgaW50IHVibGtfY3RybF9lbmRfcmVjb3Zlcnkoc3RydWN0IHVibGtfZGV2aWNlICp1YixcbiBcdHByX2RldmVsKFwmIzM0OyVzOiBXYWl0aW5nIGZvciBhbGwgRkVUQ0hfUkVRcywgZGV2IGlkICVkLi4uXFxuXCYjMzQ7LCBfX2Z1bmNfXyxcbiBcdFx0IGhlYWRlci1cdTAwM2VkZXZfaWQpO1xuIFxuLVx0aWYgKHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZShcdTAwMjZ1Yi1cdTAwM2Vjb21wbGV0aW9uKSlcbiYjNDM7XHRpZiAodWJsa193YWl0X2Rldl9yZWFkeV9hbmRfbG9jayh1YikpXG4gXHRcdHJldHVybiAtRUlOVFI7XG4gXG4gXHRwcl9kZXZlbChcJiMzNDslczogQWxsIEZFVENIX1JFUXMgcmVjZWl2ZWQsIGRldiBpZCAlZFxcblwmIzM0OywgX19mdW5jX18sXG4gXHRcdCBoZWFkZXItXHUwMDNlZGV2X2lkKTtcbiBcbi1cdGlmICghdWJsa192YWxpZGF0ZV91c2VyX3BpZCh1YiwgdWJsa3Nydl9waWQpKVxuLVx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRpZiAoIXVibGtfdmFsaWRhdGVfdXNlcl9waWQodWIsIHVibGtzcnZfcGlkKSkge1xuJiM0MztcdFx0cmV0ID0gLUVJTlZBTDtcbiYjNDM7XHRcdGdvdG8gb3V0X3VubG9jaztcbiYjNDM7XHR9XG4gXG4tXHRtdXRleF9sb2NrKFx1MDAyNnViLVx1MDAzZW11dGV4KTtcbiBcdGlmICh1YmxrX25vc3J2X3Nob3VsZF9zdG9wX2Rldih1YikpXG4gXHRcdGdvdG8gb3V0X3VubG9jaztcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNDoyMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfREVWX1VCTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrJiMzNDssCiAgICAmIzM0O3VibGtfY3RybF9zdGFydF9kZXYmIzM0OywKICAgICYjMzQ7dWJsa19jdHJsX2VuZF9yZWNvdmVyeSYjMzQ7LAogICAgJiMzNDt1YmxrX21hcmtfaW9fcmVhZHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHN5bmNocm9uaXphdGlvbiBsb2dpYyBpbiB0aGUgdWJsayBkcml2ZXImIzM5O3MgY29udHJvbCBwYXRoLCByZXBsYWNpbmcgYSBjb21wbGV0aW9uIHdpdGggYSBjdXN0b20gd2FpdCBsb29wIChgdWJsa193YWl0X2Rldl9yZWFkeV9hbmRfbG9ja2ApIHRvIGZpeCBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIHRoZSBkZXZpY2UgY291bGQgYmVjb21lIHVucmVhZHkgYmV0d2VlbiB3YWtldXAgYW5kIG11dGV4IGFjcXVpc2l0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gZGV2aWNlIHN0YXRlIG1hbmFnZW1lbnQgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhMGRlNWYyN2M2MDg2ODcwMTIyYTBlNWIzYzViYTg4NGIxNjRkNGY3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMTkgMTQ6MjE6MjQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMgYi9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMKaW5kZXggYzJjMTFmMmEwMWU3MDEuLjRjYTZlYzczOGM5MzAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay91YmxrX2Rydi5jCkBAIC0xOSw2ICYjNDM7MTksNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2Vycm5vLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbWFqb3IuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC93YWl0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3dhaXRfYml0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvYmxrZGV2LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaW5pdC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3N3YXAuaCZndDsKQEAgLTI2LDcgJiM0MzsyNyw2IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvY29tcGF0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbXV0ZXguaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC93cml0ZWJhY2suaCZndDsKLSNpbmNsdWRlICZsdDtsaW51eC9jb21wbGV0aW9uLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaGlnaG1lbS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3N5c2ZzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbWlzY2RldmljZS5oJmd0OwpAQCAtMzI3LDcgJiM0MzszMjcsNiBAQCBzdHJ1Y3QgdWJsa19kZXZpY2UgewogCiAJc3RydWN0IHVibGtfcGFyYW1zCXBhcmFtczsKIAotCXN0cnVjdCBjb21wbGV0aW9uCWNvbXBsZXRpb247CiAJdTMyCQkJbnJfcXVldWVfcmVhZHk7CiAJYm9vbCAJCQl1bnByaXZpbGVnZWRfZGFlbW9uczsKIAlzdHJ1Y3QgbXV0ZXggY2FuY2VsX211dGV4OwpAQCAtMzA1NCwxMiAmIzQzOzMwNTMsMTIgQEAgc3RhdGljIHZvaWQgdWJsa19tYXJrX2lvX3JlYWR5KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsIHUxNiBxX2lkLAogCWlmICh1YmxrX2Rldl9yZWFkeSh1YikpIHsKIAkJLyoKIAkJICogQWxsIHF1ZXVlcyByZWFkeSAtIGNsZWFyIGRldmljZS1sZXZlbCBjYW5jZWxpbmcgZmxhZwotCQkgKiBhbmQgY29tcGxldGUgdGhlIHJlY292ZXJ5L2luaXRpYWxpemF0aW9uLgomIzQzOwkJICogYW5kIHdha2UgdWJsa19kZXZfcmVhZHkoKSB3YWl0ZXJzLgogCQkgKi8KIAkJbXV0ZXhfbG9jaygmYW1wO3ViLSZndDtjYW5jZWxfbXV0ZXgpOwogCQl1Yi0mZ3Q7Y2FuY2VsaW5nID0gZmFsc2U7CiAJCW11dGV4X3VubG9jaygmYW1wO3ViLSZndDtjYW5jZWxfbXV0ZXgpOwotCQljb21wbGV0ZV9hbGwoJmFtcDt1Yi0mZ3Q7Y29tcGxldGlvbik7CiYjNDM7CQl3YWtlX3VwX3ZhcigmYW1wO3ViLSZndDtucl9xdWV1ZV9yZWFkeSk7CiAJfQogfQogCkBAIC00MjczLDcgJiM0Mzs0MjcyLDYgQEAgc3RhdGljIGludCB1YmxrX2luaXRfcXVldWVzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIpCiAJCQlnb3RvIGZhaWw7CiAJfQogCi0JaW5pdF9jb21wbGV0aW9uKCZhbXA7dWItJmd0O2NvbXBsZXRpb24pOwogCXJldHVybiAwOwogCiAgZmFpbDoKQEAgLTQ0MTcsNiAmIzQzOzQ0MTUsMjYgQEAgc3RhdGljIGJvb2wgdWJsa192YWxpZGF0ZV91c2VyX3BpZChzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLCBwaWRfdCB1Ymxrc3J2X3BpZCkKIAlyZXR1cm4gdWItJmd0O3VibGtzcnZfdGdpZCA9PSB1Ymxrc3J2X3BpZDsKIH0KIAomIzQzOy8qCiYjNDM7ICogV2FpdCB1bnRpbCBhbGwgcXVldWVzIGhhdmUgZmV0Y2hlZCB0aGVpciBJL08gY29tbWFuZHMsIGFuZCByZXR1cm4gd2l0aAomIzQzOyAqIHViLSZndDttdXRleCBoZWxkIGFuZCByZWFkaW5lc3MgZ3VhcmFudGVlZDogdGhlbiBldmVyeSBxdWV1ZSYjMzk7cyAtJmd0O2NhbmNlbGluZwomIzQzOyAqIGlzIGNsZWFyZWQuIFJlYWR5IG1heSByZWdyZXNzIGJldHdlZW4gd2FrZXVwIGFuZCBtdXRleF9sb2NrKCkgKEZfQkFUQ0gKJiM0MzsgKiBVTlBSRVAsIGRhZW1vbiBkZWF0aCksIHNvIHJlLWNoZWNrIGl0IHVuZGVyIHRoZSBtdXRleCBhbmQgd2FpdCBhZ2Fpbi4KJiM0MzsgKi8KJiM0MztzdGF0aWMgaW50IHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2soc3RydWN0IHVibGtfZGV2aWNlICp1YikKJiM0Mzt7CiYjNDM7CXdoaWxlICh0cnVlKSB7CiYjNDM7CQlpZiAod2FpdF92YXJfZXZlbnRfaW50ZXJydXB0aWJsZSgmYW1wO3ViLSZndDtucl9xdWV1ZV9yZWFkeSwKJiM0MzsJCQkJCQkgdWJsa19kZXZfcmVhZHkodWIpKSkKJiM0MzsJCQlyZXR1cm4gLUVJTlRSOwomIzQzOwomIzQzOwkJbXV0ZXhfbG9jaygmYW1wO3ViLSZndDttdXRleCk7CiYjNDM7CQlpZiAodWJsa19kZXZfcmVhZHkodWIpKQomIzQzOwkJCXJldHVybiAwOwomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7dWItJmd0O211dGV4KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgdWJsa19jdHJsX3N0YXJ0X2RldihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLAogCQljb25zdCBzdHJ1Y3QgdWJsa3Nydl9jdHJsX2NtZCAqaGVhZGVyKQogewpAQCAtNDQ5OSwxNSAmIzQzOzQ1MTcsMTAgQEAgc3RhdGljIGludCB1YmxrX2N0cmxfc3RhcnRfZGV2KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsCiAJCX07CiAJfQogCi0JaWYgKHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZSgmYW1wO3ViLSZndDtjb21wbGV0aW9uKSAhPSAwKQomIzQzOwlpZiAodWJsa193YWl0X2Rldl9yZWFkeV9hbmRfbG9jayh1YikpCiAJCXJldHVybiAtRUlOVFI7CiAKLQlpZiAoIXVibGtfdmFsaWRhdGVfdXNlcl9waWQodWIsIHVibGtzcnZfcGlkKSkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQltdXRleF9sb2NrKCZhbXA7dWItJmd0O211dGV4KTsKLQkvKiBkZXZpY2UgbWF5IGJlY29tZSBub3QgcmVhZHkgaW4gY2FzZSBvZiBGX0JBVENIICovCi0JaWYgKCF1YmxrX2Rldl9yZWFkeSh1YikpIHsKJiM0MzsJaWYgKCF1YmxrX3ZhbGlkYXRlX3VzZXJfcGlkKHViLCB1Ymxrc3J2X3BpZCkpIHsKIAkJcmV0ID0gLUVJTlZBTDsKIAkJZ290byBvdXRfdW5sb2NrOwogCX0KQEAgLTUwNzEsNyAmIzQzOzUwODQsNiBAQCBzdGF0aWMgaW50IHVibGtfY3RybF9zdGFydF9yZWNvdmVyeShzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKQogCQlnb3RvIG91dF91bmxvY2s7CiAJfQogCXByX2RldmVsKCYjMzQ7JXM6IHN0YXJ0IHJlY292ZXJ5IGZvciBkZXYgaWQgJWRcbiYjMzQ7LCBfX2Z1bmNfXywgdWItJmd0O3ViX251bWJlcik7Ci0JaW5pdF9jb21wbGV0aW9uKCZhbXA7dWItJmd0O2NvbXBsZXRpb24pOwogCXJldCA9IDA7CiAgb3V0X3VubG9jazoKIAltdXRleF91bmxvY2soJmFtcDt1Yi0mZ3Q7bXV0ZXgpOwpAQCAtNTA4NywxNiAmIzQzOzUwOTksMTcgQEAgc3RhdGljIGludCB1YmxrX2N0cmxfZW5kX3JlY292ZXJ5KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsCiAJcHJfZGV2ZWwoJiMzNDslczogV2FpdGluZyBmb3IgYWxsIEZFVENIX1JFUXMsIGRldiBpZCAlZC4uLlxuJiMzNDssIF9fZnVuY19fLAogCQkgaGVhZGVyLSZndDtkZXZfaWQpOwogCi0JaWYgKHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZSgmYW1wO3ViLSZndDtjb21wbGV0aW9uKSkKJiM0MzsJaWYgKHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2sodWIpKQogCQlyZXR1cm4gLUVJTlRSOwogCiAJcHJfZGV2ZWwoJiMzNDslczogQWxsIEZFVENIX1JFUXMgcmVjZWl2ZWQsIGRldiBpZCAlZFxuJiMzNDssIF9fZnVuY19fLAogCQkgaGVhZGVyLSZndDtkZXZfaWQpOwogCi0JaWYgKCF1YmxrX3ZhbGlkYXRlX3VzZXJfcGlkKHViLCB1Ymxrc3J2X3BpZCkpCi0JCXJldHVybiAtRUlOVkFMOwomIzQzOwlpZiAoIXVibGtfdmFsaWRhdGVfdXNlcl9waWQodWIsIHVibGtzcnZfcGlkKSkgewomIzQzOwkJcmV0ID0gLUVJTlZBTDsKJiM0MzsJCWdvdG8gb3V0X3VubG9jazsKJiM0MzsJfQogCi0JbXV0ZXhfbG9jaygmYW1wO3ViLSZndDttdXRleCk7CiAJaWYgKHVibGtfbm9zcnZfc2hvdWxkX3N0b3BfZGV2KHViKSkKIAkJZ290byBvdXRfdW5sb2NrOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE0OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNTYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVXNlcnNwYWNlIEJsb2NrIERldmljZSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCYjMzk7cyBtYWtpbmcgc29tZSBjaGFuZ2VzIHRvIGBkcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmNgLiBSaWdodCBhd2F5LCB0aGF0IHRlbGxzIG1lIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIFVzZXJzcGFjZSBCbG9jayBEZXZpY2UgRHJpdmVyLCB3aGljaCBJJiMzOTttIGZhbWlsaWFyIHdpdGgg4oCTIGl0JiMzOTtzIGEgY3JpdGljYWwgcGllY2UgZm9yIGV4cG9zaW5nIGJsb2NrIGRldmljZXMgdG8gdXNlcnNwYWNlLCBvZnRlbiB1c2VmdWwgaW4gdmlydHVhbGl6YXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IHZlcmlmeSB0aGUgYnJvYWRlciBjb250ZXh0IG9mIHRoaXMgZHJpdmVyOyBJIGtub3cgdGhhdCBpdCBuZWVkcyBgQkxLX0RFVl9VQkxLYCBlbmFibGVkIGluIHRoZSBjb25maWcuCgpUaGUgcGF0Y2gmIzM5O3MgY29yZSBtb2RpZmljYXRpb24gc2VlbXMgdG8gaW52b2x2ZSByZXBsYWNpbmcgYHN0cnVjdCBjb21wbGV0aW9uYCB3aXRoIGB3YWl0X3Zhcl9ldmVudF9pbnRlcnJ1cHRpYmxlYCBhbmQgYHdha2VfdXBfdmFyYCBmb3Igc3luY2hyb25pemluZyBxdWV1ZSByZWFkaW5lc3MuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHNpZ25hbC93YWl0IHBhdHRlcm4sIGFuZCBJIHNlZSB0aGV5JiMzOTt2ZSBhbHNvIGludHJvZHVjZWQgYSBuZXcgZnVuY3Rpb24sIGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYC4gVGhlIG5hbWUgaXMgcHJldHR5IGRlc2NyaXB0aXZlLiBJdCBsb29rcyBsaWtlIHRoaXMgbmV3IGZ1bmN0aW9uIGRvZXMgcHJlY2lzZWx5IHdoYXQgaXQgc2F5cyDigJMgd2FpdHMgZm9yIGFsbCB0aGUgcXVldWVzIHRvIHJlcG9ydCB0aGF0IHRoZXkmIzM5O3JlIHJlYWR5IGFuZCB0aGVuIGFjcXVpcmVzIGB1Yi0mZ3Q7bXV0ZXhgLiBUaGF0JiMzOTtzIGxpa2VseSBhIGNyaXRpY2FsIHNlY3Rpb24gcHJvdGVjdGVkIGJ5IHRoZSBtdXRleC4KCk5vdywgdGhlIGltcG9ydGFudCBwYXJ0OiBpdCBzZWVtcyB0aGF0IGB1YmxrX2N0cmxfc3RhcnRfZGV2YCBhbmQgYHVibGtfY3RybF9lbmRfcmVjb3ZlcnlgIGFyZSBiZWluZyBtb2RpZmllZCB0byAqdXNlKiB0aGlzIG5ldyBmdW5jdGlvbi4gRnJvbSBteSBleHBlcmllbmNlLCB0aGVzZSBhcmUgbGlrZWx5IHRoZSBjb250cm9sIHBhdGhzIGZvciBzdGFydGluZyB0aGUgZGV2aWNlIGFuZCBlbmRpbmcgYSByZWNvdmVyeSBwcm9jZXNzLiBUaGlzIHN1Z2dlc3RzIHRoZSBwYXRjaCBpcyBlbnN1cmluZyB0aGVzZSBjb250cm9sIHBhdGhzIG5vdyBwcm9wZXJseSB3YWl0IGZvciB0aGUgcXVldWVzIHRvIGJlIHJlYWR5IGFuZCBhY3F1aXJlIHRoZSBuZWNlc3NhcnkgbG9jayBiZWZvcmUgcHJvY2VlZGluZywgd2hpY2ggaXMgYSB2ZXJ5IHJlYXNvbmFibGUgY2hhbmdlIGZvciBlbnN1cmluZyBkYXRhIGludGVncml0eSBhbmQgcmVsaWFibGUgb3BlcmF0aW9uLiBUaGlzIGlzIGxpa2VseSBhbiBpbXByb3ZlbWVudCB0byBob3cgaXQgaGFuZGxlcyB0aGUgb3ZlcmFsbCBpbml0aWFsaXphdGlvbiBhbmQgcmVjb3Zlcnkgc3RhdGUsIGFuZCBuZWVkcyB0byBiZSBmdWxseSBldmFsdWF0ZWQgd2l0aGluIHRoaXMgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCTEtfREVWX1VCTEsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWc9MzE1PWNvbmZpZyBCTEtfREVWX1JCRFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMjctXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzI4OmNvbmZpZyBCTEtfREVWX1VCTEtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMjktXHR0cmlzdGF0ZSBcJiMzNDtVc2Vyc3BhY2UgYmxvY2sgZHJpdmVyIChFeHBlcmltZW50YWwpXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTMzNz1jb25maWcgQkxLREVWX1VCTEtfTEVHQUNZX09QQ09ERVNcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMzgtXHRib29sIFwmIzM0O1N1cHBvcnQgbGVnYWN5IGNvbW1hbmQgb3Bjb2RlXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzM5Olx0ZGVwZW5kcyBvbiBCTEtfREVWX1VCTEtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zNDAtXHRkZWZhdWx0IHlcbi0tXG5kcml2ZXJzL2Jsb2NrL01ha2VmaWxlPTM4PW9iai0kKENPTkZJR19CTEtfREVWX1JVU1RfTlVMTCkgJiM0Mzs9IHJudWxsL1xuZHJpdmVycy9ibG9jay9NYWtlZmlsZS0zOS1cbmRyaXZlcnMvYmxvY2svTWFrZWZpbGU6NDA6b2JqLSQoQ09ORklHX0JMS19ERVZfVUJMSylcdFx0XHQmIzQzOz0gdWJsa19kcnYub1xuZHJpdmVycy9ibG9jay9NYWtlZmlsZS00MS1vYmotJChDT05GSUdfQkxLX0RFVl9aT05FRF9MT09QKSAmIzQzOz0gemxvb3Aub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE0OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNDkKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoaXM6CgoqKkluaXRpYWwgQXNzZXNzbWVudCBvZiB1YmxrIERyaXZlciBDb25maWd1cmF0aW9uIGFuZCBDb250cm9sIEZsb3cqKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBgQkxLX0RFVl9VQkxLYCBpcyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGguIE5vdywgdGhlIHBhdGNoIGZvY3VzZXMgb24gYHVibGtfZHJ2LmNgLCBzbyBsZXQmIzM5O3Mgem9vbSBpbiBvbiB0aGF0LiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gYHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2tgIGFuZCB0aGUgZnVuY3Rpb25zIHRoYXQgY2FsbCBpdC4gVGhhdCBzZWVtcyBsaWtlIGEgY3JpdGljYWwgc3luY2hyb25pemF0aW9uIHBvaW50LiBUaGUgY2FsbGVycyBhcmUgYHVibGtfY3RybF9zdGFydF9kZXZgIGFuZCBgdWJsa19jdHJsX2VuZF9yZWNvdmVyeWAuIFJpZ2h0LCB0aG9zZSBzb3VuZCBsaWtlIGNvbnRyb2wgY29tbWFuZHMgc3BlY2lmaWMgdG8gdGhlIHVibGsgZGV2aWNlIGl0c2VsZi4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRob3NlIGNvbW1hbmRzIGFuZCB0aGUgYHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2tgIGZ1bmN0aW9uLiBOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gd2hhdCBmdW5jdGlvbnMgYXJlIGtleSBoZXJlOgoKKiAgIGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYAoqICAgYHVibGtfY3RybF9zdGFydF9kZXZgCiogICBgdWJsa19jdHJsX2VuZF9yZWNvdmVyeWAKKiAgIGB1YmxrX21hcmtfaW9fcmVhZHlgCgpJdCB3b3VsZCBiZSBhIGdvb2QgaWRlYSB0byBlbnN1cmUgdGhhdCYjMzk7cyBhbGwsIGJ1dCBsZXQgbWUgY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay91YmxrX2Rydi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svdWJsa19kcnYuYz00NDA5PXN0YXRpYyBib29sIHVibGtfdmFsaWRhdGVfdXNlcl9waWQoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgcGlkX3QgdWJsa3Nydl9waWQpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ0MjMtICovXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NDQyNDpzdGF0aWMgaW50IHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2soc3RydWN0IHVibGtfZGV2aWNlICp1YilcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00NDI1LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NDQzOD1zdGF0aWMgaW50IHVibGtfY3RybF9zdGFydF9kZXYoc3RydWN0IHVibGtfZGV2aWNlICp1Yixcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDUxOS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo0NTIwOlx0aWYgKHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2sodWIpKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ1MjEtXHRcdHJldHVybiAtRUlOVFI7XG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTUwOTM9c3RhdGljIGludCB1YmxrX2N0cmxfZW5kX3JlY292ZXJ5KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUxMDEtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTEwMjpcdGlmICh1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrKHViKSlcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MTAzLVx0XHRyZXR1cm4gLUVJTlRSO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE0OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4ODYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVWJsayBTeW5jaHJvbml6YXRpb24gRml4KioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJiMzOTttIHNlZWluZywgdGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQgdGlnaHRlbmluZyB1cCBzeW5jaHJvbml6YXRpb24gd2l0aGluIHRoZSB1YmxrIGNvbnRyb2wgcGF0aC4gSXQgc2VlbXMgbGlrZSB3ZSYjMzk7dmUgZ290IGEgcmFjZSBjb25kaXRpb24g4oCTIHRoZSBkZXZpY2UgKmNvdWxkKiBiZWNvbWUgdW5hdmFpbGFibGUgYWZ0ZXIgYmVpbmcgd29rZW4gdXAsIGJ1dCBiZWZvcmUgdGhlIG11dGV4IGxvY2sgaXMgYWNxdWlyZWQuIFRoZSBmaXggZGlyZWN0bHkgYWRkcmVzc2VzIHRoaXMgYnkgcmUtY2hlY2tpbmcgYHVibGtfZGV2X3JlYWR5KHViKWAgdW5kZXIgdGhlIG11dGV4IGFuZCB3YWl0aW5nIGFnYWluIGlmIG5lY2Vzc2FyeSwgd2hpY2ggaXMgYSBzb2xpZCBhcHByb2FjaCB0byBwcmV2ZW50IHRoYXQuIFRoZXkmIzM5O3ZlIHN3YXBwZWQgb3V0IGEgYHN0cnVjdCBjb21wbGV0aW9uYCBmb3IgYHdhaXRfdmFyX2V2ZW50X2ludGVycnVwdGlibGVgIHdpdGggYSBjdXN0b20gd2FpdCBsb29wIGluIGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYC4gTWFrZXMgc2Vuc2Ug4oCTIG1vcmUgZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlciB0aGUgd2FpdCBzdGF0ZS4KClRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBkaXJlY3Qgc3luY2hyb25pemF0aW9uIGZpeCwgYWZmZWN0aW5nIHRoZSBjb250cm9sIGZsb3cgYW5kIHN0YXRlIHRyYW5zaXRpb25zIG9mIHVibGssIG1lYW5pbmcgaXQmIzM5O3MgYWJzb2x1dGVseSB3b3J0aCB0aHJvd2luZyBmdXp6aW5nIGF0IGl0LiBXZSBuZWVkIHRvIHJlYWxseSBoYW1tZXIgb24gdGhpcyBmaXggdG8gbWFrZSBzdXJlIGl0IGhvbGRzIHVwIHVuZGVyIHN0cmVzcyBhbmQgYWxsIGVkZ2UgY2FzZXMgYXJlIGhhbmRsZWQuCgpLZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIHdoZW4gdGVzdGluZyBhbmQgZnV6emluZyBhcmUgYHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2tgLCBgdWJsa19jdHJsX3N0YXJ0X2RldmAsIGB1YmxrX2N0cmxfZW5kX3JlY292ZXJ5YCwgYW5kIGB1YmxrX21hcmtfaW9fcmVhZHlgLiBUaG9zZSBhcmUgdGhlIGNvcmUgYXJlYXMgd2hlcmUgdGhpcyBzeW5jaHJvbml6YXRpb24gbG9naWMgaXMgYmVpbmcgYXBwbGllZC4KCkFuZCwgb2YgY291cnNlLCB0aGUgYEJMS19ERVZfVUJMS2AgY29uZmlnIGhhcyB0byBiZSBlbmFibGVkIGZvciB0aGlzIHRvIGV2ZW4gbWF0dGVyLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlncyBpbiBwbGF5IGhlcmUsIGp1c3QgdG8gYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTQ6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJMS19ERVZfVUJMSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWc9MzE1PWNvbmZpZyBCTEtfREVWX1JCRFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMjctXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzI4OmNvbmZpZyBCTEtfREVWX1VCTEtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMjktXHR0cmlzdGF0ZSBcJiMzNDtVc2Vyc3BhY2UgYmxvY2sgZHJpdmVyIChFeHBlcmltZW50YWwpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTQ6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU4NgoJCQkJCQkJb3V0cHV0OiAxNTgKCQkJCQkJCXRob3VnaHRzOiAxNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRmluYWxpemluZyB0aGUgRnV6emluZyBTdHJhdGVneSBmb3IgVWJsayBEcml2ZXIgU3luY2hyb25pemF0aW9uKioKCkFscmlnaHQsIGl0JiMzOTtzIHNldHRsZWQuIGBCTEtfREVWX1VCTEtgIGlzIHRoZSBjb25maWd1cmF0aW9uIHdlIG5lZWQgdG8gdGFyZ2V0LiBObyBuZWVkIHRvIG92ZXJjb21wbGljYXRlIHRoaW5nczsgdGhhdCYjMzk7cyB0aGUgYmFzZSB3ZSYjMzk7bGwgYnVpbGQgb24uCgpOb3csIHRvIHNvbGlkaWZ5IHRoZSBmdXp6aW5nIHBsYW4uIExldCYjMzk7cyBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyBpbiBwbGFjZSBmb3IgdGhlIGZpbmFsIHJlc3BvbnNlLgoKYFdvcnRoRnV6emluZ2A6IEFic29sdXRlbHkuIFRoaXMgaXMgYSBjcml0aWNhbCBwYXRjaC4KCmBGb2N1c1N5bWJvbHNgOiBJJiMzOTt2ZSBpZGVudGlmaWVkIHRoZSBrZXkgZnVuY3Rpb25zIGZvciBjb25jZW50cmF0ZWQgZnV6emluZzogYHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2tgLCBgdWJsa19jdHJsX3N0YXJ0X2RldmAsIGB1YmxrX2N0cmxfZW5kX3JlY292ZXJ5YCwgYW5kIGB1YmxrX21hcmtfaW9fcmVhZHlgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGRpcmVjdGx5IGludm9sdmVkIGluIHRoZSBzeW5jaHJvbml6YXRpb24gbG9naWMgdGhlIHBhdGNoIGlzIG1vZGlmeWluZy4KCmBFbmFibGVDb25maWdzYDogSnVzdCB0aGUgb25lLCBgQkxLX0RFVl9VQkxLYCwgd2hpY2ggaXMgcHJlY2lzZWx5IHdoYXQgd2Ugd2FudC4KCmBSZWFzb25pbmdgOiBUaGUgcGF0Y2ggaXRzZWxmIGNoYW5nZXMgaG93IHRoZSB1YmxrIGRyaXZlciBoYW5kbGVzIGRldmljZSBzdGF0ZSB0cmFuc2l0aW9ucyBhbmQgc3luY2hyb25pemF0aW9uIGluIGl0cyBjb250cm9sIHBhdGguIFNwZWNpZmljYWxseSwgdGhleSYjMzk7dmUgcmVwbGFjZWQgYSBzaW1wbGUgY29tcGxldGlvbiB3aXRoIGEgY3VzdG9tIHdhaXQgbG9vcCAoYHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2tgKSB0byBhZGRyZXNzIGEgcmFjZSBjb25kaXRpb24uIFRoaXMgaXMgYSAqZnVuY3Rpb25hbCBjaGFuZ2UqIGluIGhvdyB0aGUgZGV2aWNlJiMzOTtzIHJlYWR5IHN0YXRlIGlzIG1hbmFnZWQuIFRoYXQmIzM5O3MgYSB0ZXh0Ym9vayBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFdlIG5lZWQgdG8gZXhwb3NlIGFueSBsdXJraW5nIGNvbmN1cnJlbmN5IGlzc3VlcyBpbiB0aGlzIG5ldyBhcHByb2FjaC4gSSBmZWVsIGdvb2QgYWJvdXQgdGhpcyBwbGFuOyBpdCBzaG91bGQgYmUgY29tcHJlaGVuc2l2ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTQ6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfVUJMSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2smIzM0OywKICAgICYjMzQ7dWJsa19jdHJsX3N0YXJ0X2RldiYjMzQ7LAogICAgJiMzNDt1YmxrX2N0cmxfZW5kX3JlY292ZXJ5JiMzNDssCiAgICAmIzM0O3VibGtfbWFya19pb19yZWFkeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3luY2hyb25pemF0aW9uIGxvZ2ljIGluIHRoZSB1YmxrIGRyaXZlciYjMzk7cyBjb250cm9sIHBhdGgsIHJlcGxhY2luZyBhIGNvbXBsZXRpb24gd2l0aCBhIGN1c3RvbSB3YWl0IGxvb3AgKGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYCkgdG8gZml4IGEgcmFjZSBjb25kaXRpb24gd2hlcmUgdGhlIGRldmljZSBjb3VsZCBiZWNvbWUgdW5yZWFkeSBiZXR3ZWVuIHdha2V1cCBhbmQgbXV0ZXggYWNxdWlzaXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBkZXZpY2Ugc3RhdGUgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfVUJMSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2smIzM0OywKICAgICYjMzQ7dWJsa19jdHJsX3N0YXJ0X2RldiYjMzQ7LAogICAgJiMzNDt1YmxrX2N0cmxfZW5kX3JlY292ZXJ5JiMzNDssCiAgICAmIzM0O3VibGtfbWFya19pb19yZWFkeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3luY2hyb25pemF0aW9uIGxvZ2ljIGluIHRoZSB1YmxrIGRyaXZlciYjMzk7cyBjb250cm9sIHBhdGgsIHJlcGxhY2luZyBhIGNvbXBsZXRpb24gd2l0aCBhIGN1c3RvbSB3YWl0IGxvb3AgKGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYCkgdG8gZml4IGEgcmFjZSBjb25kaXRpb24gd2hlcmUgdGhlIGRldmljZSBjb3VsZCBiZWNvbWUgdW5yZWFkeSBiZXR3ZWVuIHdha2V1cCBhbmQgbXV0ZXggYWNxdWlzaXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBkZXZpY2Ugc3RhdGUgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNDoyMToyNS4zNzM1ODAxMTdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDYwMjE4Njc2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX1VCTEtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrXCIsXG4gICAgXCJ1YmxrX2N0cmxfc3RhcnRfZGV2XCIsXG4gICAgXCJ1YmxrX2N0cmxfZW5kX3JlY292ZXJ5XCIsXG4gICAgXCJ1YmxrX21hcmtfaW9fcmVhZHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3luY2hyb25pemF0aW9uIGxvZ2ljIGluIHRoZSB1YmxrIGRyaXZlcidzIGNvbnRyb2wgcGF0aCwgcmVwbGFjaW5nIGEgY29tcGxldGlvbiB3aXRoIGEgY3VzdG9tIHdhaXQgbG9vcCAoYHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2tgKSB0byBmaXggYSByYWNlIGNvbmRpdGlvbiB3aGVyZSB0aGUgZGV2aWNlIGNvdWxkIGJlY29tZSB1bnJlYWR5IGJldHdlZW4gd2FrZXVwIGFuZCBtdXRleCBhY3F1aXNpdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGRldmljZSBzdGF0ZSBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTQ6MjE6MjUuMzczNTg1MTM3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mjg0NzE3MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhMGRlNWYyN2M2MDg2ODcwMTIyYTBlNWIzYzViYTg4NGIxNjRkNGY3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDE5IDE0OjIxOjI0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svdWJsa19kcnYuYyBiL2RyaXZlcnMvYmxvY2svdWJsa19kcnYuY1xcbmluZGV4IGMyYzExZjJhMDFlNzAxLi40Y2E2ZWM3MzhjOTMwMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmNcXG5AQCAtMTksNiArMTksNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZXJybm8uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21ham9yLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC93YWl0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC93YWl0X2JpdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvYmxrZGV2LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbml0LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zd2FwLmhcXHUwMDNlXFxuQEAgLTI2LDcgKzI3LDYgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NvbXBhdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbXV0ZXguaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3dyaXRlYmFjay5oXFx1MDAzZVxcbi0jaW5jbHVkZSBcXHUwMDNjbGludXgvY29tcGxldGlvbi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaGlnaG1lbS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc3lzZnMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21pc2NkZXZpY2UuaFxcdTAwM2VcXG5AQCAtMzI3LDcgKzMyNyw2IEBAIHN0cnVjdCB1YmxrX2RldmljZSB7XFxuIFxcbiBcXHRzdHJ1Y3QgdWJsa19wYXJhbXNcXHRwYXJhbXM7XFxuIFxcbi1cXHRzdHJ1Y3QgY29tcGxldGlvblxcdGNvbXBsZXRpb247XFxuIFxcdHUzMlxcdFxcdFxcdG5yX3F1ZXVlX3JlYWR5O1xcbiBcXHRib29sIFxcdFxcdFxcdHVucHJpdmlsZWdlZF9kYWVtb25zO1xcbiBcXHRzdHJ1Y3QgbXV0ZXggY2FuY2VsX211dGV4O1xcbkBAIC0zMDU0LDEyICszMDUzLDEyIEBAIHN0YXRpYyB2b2lkIHVibGtfbWFya19pb19yZWFkeShzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLCB1MTYgcV9pZCxcXG4gXFx0aWYgKHVibGtfZGV2X3JlYWR5KHViKSkge1xcbiBcXHRcXHQvKlxcbiBcXHRcXHQgKiBBbGwgcXVldWVzIHJlYWR5IC0gY2xlYXIgZGV2aWNlLWxldmVsIGNhbmNlbGluZyBmbGFnXFxuLVxcdFxcdCAqIGFuZCBjb21wbGV0ZSB0aGUgcmVjb3ZlcnkvaW5pdGlhbGl6YXRpb24uXFxuK1xcdFxcdCAqIGFuZCB3YWtlIHVibGtfZGV2X3JlYWR5KCkgd2FpdGVycy5cXG4gXFx0XFx0ICovXFxuIFxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnViLVxcdTAwM2VjYW5jZWxfbXV0ZXgpO1xcbiBcXHRcXHR1Yi1cXHUwMDNlY2FuY2VsaW5nID0gZmFsc2U7XFxuIFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2dWItXFx1MDAzZWNhbmNlbF9tdXRleCk7XFxuLVxcdFxcdGNvbXBsZXRlX2FsbChcXHUwMDI2dWItXFx1MDAzZWNvbXBsZXRpb24pO1xcbitcXHRcXHR3YWtlX3VwX3ZhcihcXHUwMDI2dWItXFx1MDAzZW5yX3F1ZXVlX3JlYWR5KTtcXG4gXFx0fVxcbiB9XFxuIFxcbkBAIC00MjczLDcgKzQyNzIsNiBAQCBzdGF0aWMgaW50IHVibGtfaW5pdF9xdWV1ZXMoc3RydWN0IHVibGtfZGV2aWNlICp1YilcXG4gXFx0XFx0XFx0Z290byBmYWlsO1xcbiBcXHR9XFxuIFxcbi1cXHRpbml0X2NvbXBsZXRpb24oXFx1MDAyNnViLVxcdTAwM2Vjb21wbGV0aW9uKTtcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbiAgZmFpbDpcXG5AQCAtNDQxNyw2ICs0NDE1LDI2IEBAIHN0YXRpYyBib29sIHVibGtfdmFsaWRhdGVfdXNlcl9waWQoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgcGlkX3QgdWJsa3Nydl9waWQpXFxuIFxcdHJldHVybiB1Yi1cXHUwMDNldWJsa3Nydl90Z2lkID09IHVibGtzcnZfcGlkO1xcbiB9XFxuIFxcbisvKlxcbisgKiBXYWl0IHVudGlsIGFsbCBxdWV1ZXMgaGF2ZSBmZXRjaGVkIHRoZWlyIEkvTyBjb21tYW5kcywgYW5kIHJldHVybiB3aXRoXFxuKyAqIHViLVxcdTAwM2VtdXRleCBoZWxkIGFuZCByZWFkaW5lc3MgZ3VhcmFudGVlZDogdGhlbiBldmVyeSBxdWV1ZSdzIC1cXHUwMDNlY2FuY2VsaW5nXFxuKyAqIGlzIGNsZWFyZWQuIFJlYWR5IG1heSByZWdyZXNzIGJldHdlZW4gd2FrZXVwIGFuZCBtdXRleF9sb2NrKCkgKEZfQkFUQ0hcXG4rICogVU5QUkVQLCBkYWVtb24gZGVhdGgpLCBzbyByZS1jaGVjayBpdCB1bmRlciB0aGUgbXV0ZXggYW5kIHdhaXQgYWdhaW4uXFxuKyAqL1xcbitzdGF0aWMgaW50IHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2soc3RydWN0IHVibGtfZGV2aWNlICp1YilcXG4re1xcbitcXHR3aGlsZSAodHJ1ZSkge1xcbitcXHRcXHRpZiAod2FpdF92YXJfZXZlbnRfaW50ZXJydXB0aWJsZShcXHUwMDI2dWItXFx1MDAzZW5yX3F1ZXVlX3JlYWR5LFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgdWJsa19kZXZfcmVhZHkodWIpKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU5UUjtcXG4rXFxuK1xcdFxcdG11dGV4X2xvY2soXFx1MDAyNnViLVxcdTAwM2VtdXRleCk7XFxuK1xcdFxcdGlmICh1YmxrX2Rldl9yZWFkeSh1YikpXFxuK1xcdFxcdFxcdHJldHVybiAwO1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnViLVxcdTAwM2VtdXRleCk7XFxuK1xcdH1cXG4rfVxcbitcXG4gc3RhdGljIGludCB1YmxrX2N0cmxfc3RhcnRfZGV2KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuIFxcdFxcdGNvbnN0IHN0cnVjdCB1Ymxrc3J2X2N0cmxfY21kICpoZWFkZXIpXFxuIHtcXG5AQCAtNDQ5OSwxNSArNDUxNywxMCBAQCBzdGF0aWMgaW50IHVibGtfY3RybF9zdGFydF9kZXYoc3RydWN0IHVibGtfZGV2aWNlICp1YixcXG4gXFx0XFx0fTtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZShcXHUwMDI2dWItXFx1MDAzZWNvbXBsZXRpb24pICE9IDApXFxuK1xcdGlmICh1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrKHViKSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5UUjtcXG4gXFxuLVxcdGlmICghdWJsa192YWxpZGF0ZV91c2VyX3BpZCh1YiwgdWJsa3Nydl9waWQpKVxcbi1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNnViLVxcdTAwM2VtdXRleCk7XFxuLVxcdC8qIGRldmljZSBtYXkgYmVjb21lIG5vdCByZWFkeSBpbiBjYXNlIG9mIEZfQkFUQ0ggKi9cXG4tXFx0aWYgKCF1YmxrX2Rldl9yZWFkeSh1YikpIHtcXG4rXFx0aWYgKCF1YmxrX3ZhbGlkYXRlX3VzZXJfcGlkKHViLCB1Ymxrc3J2X3BpZCkpIHtcXG4gXFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4gXFx0XFx0Z290byBvdXRfdW5sb2NrO1xcbiBcXHR9XFxuQEAgLTUwNzEsNyArNTA4NCw2IEBAIHN0YXRpYyBpbnQgdWJsa19jdHJsX3N0YXJ0X3JlY292ZXJ5KHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXFxuIFxcdFxcdGdvdG8gb3V0X3VubG9jaztcXG4gXFx0fVxcbiBcXHRwcl9kZXZlbChcXFwiJXM6IHN0YXJ0IHJlY292ZXJ5IGZvciBkZXYgaWQgJWRcXFxcblxcXCIsIF9fZnVuY19fLCB1Yi1cXHUwMDNldWJfbnVtYmVyKTtcXG4tXFx0aW5pdF9jb21wbGV0aW9uKFxcdTAwMjZ1Yi1cXHUwMDNlY29tcGxldGlvbik7XFxuIFxcdHJldCA9IDA7XFxuICBvdXRfdW5sb2NrOlxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNnViLVxcdTAwM2VtdXRleCk7XFxuQEAgLTUwODcsMTYgKzUwOTksMTcgQEAgc3RhdGljIGludCB1YmxrX2N0cmxfZW5kX3JlY292ZXJ5KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuIFxcdHByX2RldmVsKFxcXCIlczogV2FpdGluZyBmb3IgYWxsIEZFVENIX1JFUXMsIGRldiBpZCAlZC4uLlxcXFxuXFxcIiwgX19mdW5jX18sXFxuIFxcdFxcdCBoZWFkZXItXFx1MDAzZWRldl9pZCk7XFxuIFxcbi1cXHRpZiAod2FpdF9mb3JfY29tcGxldGlvbl9pbnRlcnJ1cHRpYmxlKFxcdTAwMjZ1Yi1cXHUwMDNlY29tcGxldGlvbikpXFxuK1xcdGlmICh1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrKHViKSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5UUjtcXG4gXFxuIFxcdHByX2RldmVsKFxcXCIlczogQWxsIEZFVENIX1JFUXMgcmVjZWl2ZWQsIGRldiBpZCAlZFxcXFxuXFxcIiwgX19mdW5jX18sXFxuIFxcdFxcdCBoZWFkZXItXFx1MDAzZWRldl9pZCk7XFxuIFxcbi1cXHRpZiAoIXVibGtfdmFsaWRhdGVfdXNlcl9waWQodWIsIHVibGtzcnZfcGlkKSlcXG4tXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdGlmICghdWJsa192YWxpZGF0ZV91c2VyX3BpZCh1YiwgdWJsa3Nydl9waWQpKSB7XFxuK1xcdFxcdHJldCA9IC1FSU5WQUw7XFxuK1xcdFxcdGdvdG8gb3V0X3VubG9jaztcXG4rXFx0fVxcbiBcXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2dWItXFx1MDAzZW11dGV4KTtcXG4gXFx0aWYgKHVibGtfbm9zcnZfc2hvdWxkX3N0b3BfZGV2KHViKSlcXG4gXFx0XFx0Z290byBvdXRfdW5sb2NrO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTQ6MjE6MjUuODAyNzM2NTg4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDE3MzAyMDc4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX1VCTEtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrXCIsXG4gICAgXCJ1YmxrX2N0cmxfc3RhcnRfZGV2XCIsXG4gICAgXCJ1YmxrX2N0cmxfZW5kX3JlY292ZXJ5XCIsXG4gICAgXCJ1YmxrX21hcmtfaW9fcmVhZHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3luY2hyb25pemF0aW9uIGxvZ2ljIGluIHRoZSB1YmxrIGRyaXZlcidzIGNvbnRyb2wgcGF0aCwgcmVwbGFjaW5nIGEgY29tcGxldGlvbiB3aXRoIGEgY3VzdG9tIHdhaXQgbG9vcCAoYHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2tgKSB0byBmaXggYSByYWNlIGNvbmRpdGlvbiB3aGVyZSB0aGUgZGV2aWNlIGNvdWxkIGJlY29tZSB1bnJlYWR5IGJldHdlZW4gd2FrZXVwIGFuZCBtdXRleCBhY3F1aXNpdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGRldmljZSBzdGF0ZSBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhMGRlNWYyN2M2MDg2ODcwMTIyYTBlNWIzYzViYTg4NGIxNjRkNGY3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTkgMTQ6MjE6MjQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMgYi9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmNcbmluZGV4IGMyYzExZjJhMDFlNzAxLi40Y2E2ZWM3MzhjOTMwMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svdWJsa19kcnYuY1xuKysrIGIvZHJpdmVycy9ibG9jay91YmxrX2Rydi5jXG5AQCAtMTksNiArMTksNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vycm5vLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tYWpvci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdF9iaXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Jsa2Rldi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW5pdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3dhcC5oXHUwMDNlXG5AQCAtMjYsNyArMjcsNiBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBhdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbXV0ZXguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3dyaXRlYmFjay5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGxldGlvbi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaGlnaG1lbS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3lzZnMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21pc2NkZXZpY2UuaFx1MDAzZVxuQEAgLTMyNyw3ICszMjcsNiBAQCBzdHJ1Y3QgdWJsa19kZXZpY2Uge1xuIFxuIFx0c3RydWN0IHVibGtfcGFyYW1zXHRwYXJhbXM7XG4gXG4tXHRzdHJ1Y3QgY29tcGxldGlvblx0Y29tcGxldGlvbjtcbiBcdHUzMlx0XHRcdG5yX3F1ZXVlX3JlYWR5O1xuIFx0Ym9vbCBcdFx0XHR1bnByaXZpbGVnZWRfZGFlbW9ucztcbiBcdHN0cnVjdCBtdXRleCBjYW5jZWxfbXV0ZXg7XG5AQCAtMzA1NCwxMiArMzA1MywxMiBAQCBzdGF0aWMgdm9pZCB1YmxrX21hcmtfaW9fcmVhZHkoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgdTE2IHFfaWQsXG4gXHRpZiAodWJsa19kZXZfcmVhZHkodWIpKSB7XG4gXHRcdC8qXG4gXHRcdCAqIEFsbCBxdWV1ZXMgcmVhZHkgLSBjbGVhciBkZXZpY2UtbGV2ZWwgY2FuY2VsaW5nIGZsYWdcbi1cdFx0ICogYW5kIGNvbXBsZXRlIHRoZSByZWNvdmVyeS9pbml0aWFsaXphdGlvbi5cbitcdFx0ICogYW5kIHdha2UgdWJsa19kZXZfcmVhZHkoKSB3YWl0ZXJzLlxuIFx0XHQgKi9cbiBcdFx0bXV0ZXhfbG9jayhcdTAwMjZ1Yi1cdTAwM2VjYW5jZWxfbXV0ZXgpO1xuIFx0XHR1Yi1cdTAwM2VjYW5jZWxpbmcgPSBmYWxzZTtcbiBcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnViLVx1MDAzZWNhbmNlbF9tdXRleCk7XG4tXHRcdGNvbXBsZXRlX2FsbChcdTAwMjZ1Yi1cdTAwM2Vjb21wbGV0aW9uKTtcbitcdFx0d2FrZV91cF92YXIoXHUwMDI2dWItXHUwMDNlbnJfcXVldWVfcmVhZHkpO1xuIFx0fVxuIH1cbiBcbkBAIC00MjczLDcgKzQyNzIsNiBAQCBzdGF0aWMgaW50IHVibGtfaW5pdF9xdWV1ZXMoc3RydWN0IHVibGtfZGV2aWNlICp1YilcbiBcdFx0XHRnb3RvIGZhaWw7XG4gXHR9XG4gXG4tXHRpbml0X2NvbXBsZXRpb24oXHUwMDI2dWItXHUwMDNlY29tcGxldGlvbik7XG4gXHRyZXR1cm4gMDtcbiBcbiAgZmFpbDpcbkBAIC00NDE3LDYgKzQ0MTUsMjYgQEAgc3RhdGljIGJvb2wgdWJsa192YWxpZGF0ZV91c2VyX3BpZChzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLCBwaWRfdCB1Ymxrc3J2X3BpZClcbiBcdHJldHVybiB1Yi1cdTAwM2V1Ymxrc3J2X3RnaWQgPT0gdWJsa3Nydl9waWQ7XG4gfVxuIFxuKy8qXG4rICogV2FpdCB1bnRpbCBhbGwgcXVldWVzIGhhdmUgZmV0Y2hlZCB0aGVpciBJL08gY29tbWFuZHMsIGFuZCByZXR1cm4gd2l0aFxuKyAqIHViLVx1MDAzZW11dGV4IGhlbGQgYW5kIHJlYWRpbmVzcyBndWFyYW50ZWVkOiB0aGVuIGV2ZXJ5IHF1ZXVlJ3MgLVx1MDAzZWNhbmNlbGluZ1xuKyAqIGlzIGNsZWFyZWQuIFJlYWR5IG1heSByZWdyZXNzIGJldHdlZW4gd2FrZXVwIGFuZCBtdXRleF9sb2NrKCkgKEZfQkFUQ0hcbisgKiBVTlBSRVAsIGRhZW1vbiBkZWF0aCksIHNvIHJlLWNoZWNrIGl0IHVuZGVyIHRoZSBtdXRleCBhbmQgd2FpdCBhZ2Fpbi5cbisgKi9cbitzdGF0aWMgaW50IHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2soc3RydWN0IHVibGtfZGV2aWNlICp1Yilcbit7XG4rXHR3aGlsZSAodHJ1ZSkge1xuK1x0XHRpZiAod2FpdF92YXJfZXZlbnRfaW50ZXJydXB0aWJsZShcdTAwMjZ1Yi1cdTAwM2Vucl9xdWV1ZV9yZWFkeSxcbitcdFx0XHRcdFx0XHQgdWJsa19kZXZfcmVhZHkodWIpKSlcbitcdFx0XHRyZXR1cm4gLUVJTlRSO1xuK1xuK1x0XHRtdXRleF9sb2NrKFx1MDAyNnViLVx1MDAzZW11dGV4KTtcbitcdFx0aWYgKHVibGtfZGV2X3JlYWR5KHViKSlcbitcdFx0XHRyZXR1cm4gMDtcbitcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnViLVx1MDAzZW11dGV4KTtcbitcdH1cbit9XG4rXG4gc3RhdGljIGludCB1YmxrX2N0cmxfc3RhcnRfZGV2KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG4gXHRcdGNvbnN0IHN0cnVjdCB1Ymxrc3J2X2N0cmxfY21kICpoZWFkZXIpXG4ge1xuQEAgLTQ0OTksMTUgKzQ1MTcsMTAgQEAgc3RhdGljIGludCB1YmxrX2N0cmxfc3RhcnRfZGV2KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG4gXHRcdH07XG4gXHR9XG4gXG4tXHRpZiAod2FpdF9mb3JfY29tcGxldGlvbl9pbnRlcnJ1cHRpYmxlKFx1MDAyNnViLVx1MDAzZWNvbXBsZXRpb24pICE9IDApXG4rXHRpZiAodWJsa193YWl0X2Rldl9yZWFkeV9hbmRfbG9jayh1YikpXG4gXHRcdHJldHVybiAtRUlOVFI7XG4gXG4tXHRpZiAoIXVibGtfdmFsaWRhdGVfdXNlcl9waWQodWIsIHVibGtzcnZfcGlkKSlcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNnViLVx1MDAzZW11dGV4KTtcbi1cdC8qIGRldmljZSBtYXkgYmVjb21lIG5vdCByZWFkeSBpbiBjYXNlIG9mIEZfQkFUQ0ggKi9cbi1cdGlmICghdWJsa19kZXZfcmVhZHkodWIpKSB7XG4rXHRpZiAoIXVibGtfdmFsaWRhdGVfdXNlcl9waWQodWIsIHVibGtzcnZfcGlkKSkge1xuIFx0XHRyZXQgPSAtRUlOVkFMO1xuIFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXHR9XG5AQCAtNTA3MSw3ICs1MDg0LDYgQEAgc3RhdGljIGludCB1YmxrX2N0cmxfc3RhcnRfcmVjb3Zlcnkoc3RydWN0IHVibGtfZGV2aWNlICp1YilcbiBcdFx0Z290byBvdXRfdW5sb2NrO1xuIFx0fVxuIFx0cHJfZGV2ZWwoXCIlczogc3RhcnQgcmVjb3ZlcnkgZm9yIGRldiBpZCAlZFxcblwiLCBfX2Z1bmNfXywgdWItXHUwMDNldWJfbnVtYmVyKTtcbi1cdGluaXRfY29tcGxldGlvbihcdTAwMjZ1Yi1cdTAwM2Vjb21wbGV0aW9uKTtcbiBcdHJldCA9IDA7XG4gIG91dF91bmxvY2s6XG4gXHRtdXRleF91bmxvY2soXHUwMDI2dWItXHUwMDNlbXV0ZXgpO1xuQEAgLTUwODcsMTYgKzUwOTksMTcgQEAgc3RhdGljIGludCB1YmxrX2N0cmxfZW5kX3JlY292ZXJ5KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG4gXHRwcl9kZXZlbChcIiVzOiBXYWl0aW5nIGZvciBhbGwgRkVUQ0hfUkVRcywgZGV2IGlkICVkLi4uXFxuXCIsIF9fZnVuY19fLFxuIFx0XHQgaGVhZGVyLVx1MDAzZWRldl9pZCk7XG4gXG4tXHRpZiAod2FpdF9mb3JfY29tcGxldGlvbl9pbnRlcnJ1cHRpYmxlKFx1MDAyNnViLVx1MDAzZWNvbXBsZXRpb24pKVxuK1x0aWYgKHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2sodWIpKVxuIFx0XHRyZXR1cm4gLUVJTlRSO1xuIFxuIFx0cHJfZGV2ZWwoXCIlczogQWxsIEZFVENIX1JFUXMgcmVjZWl2ZWQsIGRldiBpZCAlZFxcblwiLCBfX2Z1bmNfXyxcbiBcdFx0IGhlYWRlci1cdTAwM2VkZXZfaWQpO1xuIFxuLVx0aWYgKCF1YmxrX3ZhbGlkYXRlX3VzZXJfcGlkKHViLCB1Ymxrc3J2X3BpZCkpXG4tXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0aWYgKCF1YmxrX3ZhbGlkYXRlX3VzZXJfcGlkKHViLCB1Ymxrc3J2X3BpZCkpIHtcbitcdFx0cmV0ID0gLUVJTlZBTDtcbitcdFx0Z290byBvdXRfdW5sb2NrO1xuK1x0fVxuIFxuLVx0bXV0ZXhfbG9jayhcdTAwMjZ1Yi1cdTAwM2VtdXRleCk7XG4gXHRpZiAodWJsa19ub3Nydl9zaG91bGRfc3RvcF9kZXYodWIpKVxuIFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNDoyMToyNS44MDI3Mzc5MzhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDA4NzgxODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFVzZXJzcGFjZSBCbG9jayBEZXZpY2UgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0J3MgbWFraW5nIHNvbWUgY2hhbmdlcyB0byBgZHJpdmVycy9ibG9jay91YmxrX2Rydi5jYC4gUmlnaHQgYXdheSwgdGhhdCB0ZWxscyBtZSB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIFVzZXJzcGFjZSBCbG9jayBEZXZpY2UgRHJpdmVyLCB3aGljaCBJJ20gZmFtaWxpYXIgd2l0aCDigJMgaXQncyBhIGNyaXRpY2FsIHBpZWNlIGZvciBleHBvc2luZyBibG9jayBkZXZpY2VzIHRvIHVzZXJzcGFjZSwgb2Z0ZW4gdXNlZnVsIGluIHZpcnR1YWxpemF0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIGJyb2FkZXIgY29udGV4dCBvZiB0aGlzIGRyaXZlcjsgSSBrbm93IHRoYXQgaXQgbmVlZHMgYEJMS19ERVZfVUJMS2AgZW5hYmxlZCBpbiB0aGUgY29uZmlnLlxuXG5UaGUgcGF0Y2gncyBjb3JlIG1vZGlmaWNhdGlvbiBzZWVtcyB0byBpbnZvbHZlIHJlcGxhY2luZyBgc3RydWN0IGNvbXBsZXRpb25gIHdpdGggYHdhaXRfdmFyX2V2ZW50X2ludGVycnVwdGlibGVgIGFuZCBgd2FrZV91cF92YXJgIGZvciBzeW5jaHJvbml6aW5nIHF1ZXVlIHJlYWRpbmVzcy4gVGhhdCdzIGEgY2xhc3NpYyBzaWduYWwvd2FpdCBwYXR0ZXJuLCBhbmQgSSBzZWUgdGhleSd2ZSBhbHNvIGludHJvZHVjZWQgYSBuZXcgZnVuY3Rpb24sIGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYC4gVGhlIG5hbWUgaXMgcHJldHR5IGRlc2NyaXB0aXZlLiBJdCBsb29rcyBsaWtlIHRoaXMgbmV3IGZ1bmN0aW9uIGRvZXMgcHJlY2lzZWx5IHdoYXQgaXQgc2F5cyDigJMgd2FpdHMgZm9yIGFsbCB0aGUgcXVldWVzIHRvIHJlcG9ydCB0aGF0IHRoZXkncmUgcmVhZHkgYW5kIHRoZW4gYWNxdWlyZXMgYHViLVx1MDAzZW11dGV4YC4gVGhhdCdzIGxpa2VseSBhIGNyaXRpY2FsIHNlY3Rpb24gcHJvdGVjdGVkIGJ5IHRoZSBtdXRleC5cblxuTm93LCB0aGUgaW1wb3J0YW50IHBhcnQ6IGl0IHNlZW1zIHRoYXQgYHVibGtfY3RybF9zdGFydF9kZXZgIGFuZCBgdWJsa19jdHJsX2VuZF9yZWNvdmVyeWAgYXJlIGJlaW5nIG1vZGlmaWVkIHRvICp1c2UqIHRoaXMgbmV3IGZ1bmN0aW9uLiBGcm9tIG15IGV4cGVyaWVuY2UsIHRoZXNlIGFyZSBsaWtlbHkgdGhlIGNvbnRyb2wgcGF0aHMgZm9yIHN0YXJ0aW5nIHRoZSBkZXZpY2UgYW5kIGVuZGluZyBhIHJlY292ZXJ5IHByb2Nlc3MuIFRoaXMgc3VnZ2VzdHMgdGhlIHBhdGNoIGlzIGVuc3VyaW5nIHRoZXNlIGNvbnRyb2wgcGF0aHMgbm93IHByb3Blcmx5IHdhaXQgZm9yIHRoZSBxdWV1ZXMgdG8gYmUgcmVhZHkgYW5kIGFjcXVpcmUgdGhlIG5lY2Vzc2FyeSBsb2NrIGJlZm9yZSBwcm9jZWVkaW5nLCB3aGljaCBpcyBhIHZlcnkgcmVhc29uYWJsZSBjaGFuZ2UgZm9yIGVuc3VyaW5nIGRhdGEgaW50ZWdyaXR5IGFuZCByZWxpYWJsZSBvcGVyYXRpb24uIFRoaXMgaXMgbGlrZWx5IGFuIGltcHJvdmVtZW50IHRvIGhvdyBpdCBoYW5kbGVzIHRoZSBvdmVyYWxsIGluaXRpYWxpemF0aW9uIGFuZCByZWNvdmVyeSBzdGF0ZSwgYW5kIG5lZWRzIHRvIGJlIGZ1bGx5IGV2YWx1YXRlZCB3aXRoaW4gdGhpcyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTU2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTQ6MjE6MzEuMjExNTIyNjE3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MDA3MjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJMS19ERVZfVUJMS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL0tjb25maWc9MzE1PWNvbmZpZyBCTEtfREVWX1JCRFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTMyNy1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzI4OmNvbmZpZyBCTEtfREVWX1VCTEtcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzI5LVxcdHRyaXN0YXRlIFxcXCJVc2Vyc3BhY2UgYmxvY2sgZHJpdmVyIChFeHBlcmltZW50YWwpXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTMzNz1jb25maWcgQkxLREVWX1VCTEtfTEVHQUNZX09QQ09ERVNcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzM4LVxcdGJvb2wgXFxcIlN1cHBvcnQgbGVnYWN5IGNvbW1hbmQgb3Bjb2RlXFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzozMzk6XFx0ZGVwZW5kcyBvbiBCTEtfREVWX1VCTEtcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzQwLVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9ibG9jay9NYWtlZmlsZT0zOD1vYmotJChDT05GSUdfQkxLX0RFVl9SVVNUX05VTEwpICs9IHJudWxsL1xcbmRyaXZlcnMvYmxvY2svTWFrZWZpbGUtMzktXFxuZHJpdmVycy9ibG9jay9NYWtlZmlsZTo0MDpvYmotJChDT05GSUdfQkxLX0RFVl9VQkxLKVxcdFxcdFxcdCs9IHVibGtfZHJ2Lm9cXG5kcml2ZXJzL2Jsb2NrL01ha2VmaWxlLTQxLW9iai0kKENPTkZJR19CTEtfREVWX1pPTkVEX0xPT1ApICs9IHpsb29wLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTQ6MjE6MzEuMjcwNTM2NTM2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEwNDc2MDY5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGlzOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiB1YmxrIERyaXZlciBDb25maWd1cmF0aW9uIGFuZCBDb250cm9sIEZsb3cqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIGBCTEtfREVWX1VCTEtgIGlzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gd2UncmUgZGVhbGluZyB3aXRoLiBOb3csIHRoZSBwYXRjaCBmb2N1c2VzIG9uIGB1YmxrX2Rydi5jYCwgc28gbGV0J3Mgem9vbSBpbiBvbiB0aGF0LiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gYHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2tgIGFuZCB0aGUgZnVuY3Rpb25zIHRoYXQgY2FsbCBpdC4gVGhhdCBzZWVtcyBsaWtlIGEgY3JpdGljYWwgc3luY2hyb25pemF0aW9uIHBvaW50LiBUaGUgY2FsbGVycyBhcmUgYHVibGtfY3RybF9zdGFydF9kZXZgIGFuZCBgdWJsa19jdHJsX2VuZF9yZWNvdmVyeWAuIFJpZ2h0LCB0aG9zZSBzb3VuZCBsaWtlIGNvbnRyb2wgY29tbWFuZHMgc3BlY2lmaWMgdG8gdGhlIHVibGsgZGV2aWNlIGl0c2VsZi4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhvc2UgY29tbWFuZHMgYW5kIHRoZSBgdWJsa193YWl0X2Rldl9yZWFkeV9hbmRfbG9ja2AgZnVuY3Rpb24uIE5vdywgbGV0J3MgbmFpbCBkb3duIHdoYXQgZnVuY3Rpb25zIGFyZSBrZXkgaGVyZTpcblxuKiAgIGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYFxuKiAgIGB1YmxrX2N0cmxfc3RhcnRfZGV2YFxuKiAgIGB1YmxrX2N0cmxfZW5kX3JlY292ZXJ5YFxuKiAgIGB1YmxrX21hcmtfaW9fcmVhZHlgXG5cbkl0IHdvdWxkIGJlIGEgZ29vZCBpZGVhIHRvIGVuc3VyZSB0aGF0J3MgYWxsLCBidXQgbGV0IG1lIGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNDksIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTQ6MjE6MzUuMzc1Mjk4ODI0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MTExODI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay91YmxrX2Rydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz00NDA5PXN0YXRpYyBib29sIHVibGtfdmFsaWRhdGVfdXNlcl9waWQoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgcGlkX3QgdWJsa3Nydl9waWQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDQyMy0gKi9cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NDQyNDpzdGF0aWMgaW50IHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2soc3RydWN0IHVibGtfZGV2aWNlICp1YilcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDQyNS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NDQzOD1zdGF0aWMgaW50IHVibGtfY3RybF9zdGFydF9kZXYoc3RydWN0IHVibGtfZGV2aWNlICp1YixcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00NTE5LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo0NTIwOlxcdGlmICh1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrKHViKSlcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDUyMS1cXHRcXHRyZXR1cm4gLUVJTlRSO1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTUwOTM9c3RhdGljIGludCB1YmxrX2N0cmxfZW5kX3JlY292ZXJ5KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTEwMS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTEwMjpcXHRpZiAodWJsa193YWl0X2Rldl9yZWFkeV9hbmRfbG9jayh1YikpXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUxMDMtXFx0XFx0cmV0dXJuIC1FSU5UUjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTQ6MjE6MzUuNDMzNDE0NTgyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMyNzkzODcxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBVYmxrIFN5bmNocm9uaXphdGlvbiBGaXgqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJ20gc2VlaW5nLCB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCB0aWdodGVuaW5nIHVwIHN5bmNocm9uaXphdGlvbiB3aXRoaW4gdGhlIHVibGsgY29udHJvbCBwYXRoLiBJdCBzZWVtcyBsaWtlIHdlJ3ZlIGdvdCBhIHJhY2UgY29uZGl0aW9uIOKAkyB0aGUgZGV2aWNlICpjb3VsZCogYmVjb21lIHVuYXZhaWxhYmxlIGFmdGVyIGJlaW5nIHdva2VuIHVwLCBidXQgYmVmb3JlIHRoZSBtdXRleCBsb2NrIGlzIGFjcXVpcmVkLiBUaGUgZml4IGRpcmVjdGx5IGFkZHJlc3NlcyB0aGlzIGJ5IHJlLWNoZWNraW5nIGB1YmxrX2Rldl9yZWFkeSh1YilgIHVuZGVyIHRoZSBtdXRleCBhbmQgd2FpdGluZyBhZ2FpbiBpZiBuZWNlc3NhcnksIHdoaWNoIGlzIGEgc29saWQgYXBwcm9hY2ggdG8gcHJldmVudCB0aGF0LiBUaGV5J3ZlIHN3YXBwZWQgb3V0IGEgYHN0cnVjdCBjb21wbGV0aW9uYCBmb3IgYHdhaXRfdmFyX2V2ZW50X2ludGVycnVwdGlibGVgIHdpdGggYSBjdXN0b20gd2FpdCBsb29wIGluIGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYC4gTWFrZXMgc2Vuc2Ug4oCTIG1vcmUgZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlciB0aGUgd2FpdCBzdGF0ZS5cblxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGRpcmVjdCBzeW5jaHJvbml6YXRpb24gZml4LCBhZmZlY3RpbmcgdGhlIGNvbnRyb2wgZmxvdyBhbmQgc3RhdGUgdHJhbnNpdGlvbnMgb2YgdWJsaywgbWVhbmluZyBpdCdzIGFic29sdXRlbHkgd29ydGggdGhyb3dpbmcgZnV6emluZyBhdCBpdC4gV2UgbmVlZCB0byByZWFsbHkgaGFtbWVyIG9uIHRoaXMgZml4IHRvIG1ha2Ugc3VyZSBpdCBob2xkcyB1cCB1bmRlciBzdHJlc3MgYW5kIGFsbCBlZGdlIGNhc2VzIGFyZSBoYW5kbGVkLlxuXG5LZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIHdoZW4gdGVzdGluZyBhbmQgZnV6emluZyBhcmUgYHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2tgLCBgdWJsa19jdHJsX3N0YXJ0X2RldmAsIGB1YmxrX2N0cmxfZW5kX3JlY292ZXJ5YCwgYW5kIGB1YmxrX21hcmtfaW9fcmVhZHlgLiBUaG9zZSBhcmUgdGhlIGNvcmUgYXJlYXMgd2hlcmUgdGhpcyBzeW5jaHJvbml6YXRpb24gbG9naWMgaXMgYmVpbmcgYXBwbGllZC5cblxuQW5kLCBvZiBjb3Vyc2UsIHRoZSBgQkxLX0RFVl9VQkxLYCBjb25maWcgaGFzIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgdG8gZXZlbiBtYXR0ZXIuIExldCdzIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlncyBpbiBwbGF5IGhlcmUsIGp1c3QgdG8gYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4ODYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTQ6MjE6NDAuNzYxMzU1MzQzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzQ1NDQxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9VQkxLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL0tjb25maWc9MzE1PWNvbmZpZyBCTEtfREVWX1JCRFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTMyNy1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzI4OmNvbmZpZyBCTEtfREVWX1VCTEtcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzI5LVxcdHRyaXN0YXRlIFxcXCJVc2Vyc3BhY2UgYmxvY2sgZHJpdmVyIChFeHBlcmltZW50YWwpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNDoyMTo0MC44Njg4MzE1ODFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDIzNDc1ODQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZpbmFsaXppbmcgdGhlIEZ1enppbmcgU3RyYXRlZ3kgZm9yIFVibGsgRHJpdmVyIFN5bmNocm9uaXphdGlvbioqXG5cbkFscmlnaHQsIGl0J3Mgc2V0dGxlZC4gYEJMS19ERVZfVUJMS2AgaXMgdGhlIGNvbmZpZ3VyYXRpb24gd2UgbmVlZCB0byB0YXJnZXQuIE5vIG5lZWQgdG8gb3ZlcmNvbXBsaWNhdGUgdGhpbmdzOyB0aGF0J3MgdGhlIGJhc2Ugd2UnbGwgYnVpbGQgb24uXG5cbk5vdywgdG8gc29saWRpZnkgdGhlIGZ1enppbmcgcGxhbi4gTGV0J3MgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgaW4gcGxhY2UgZm9yIHRoZSBmaW5hbCByZXNwb25zZS5cblxuYFdvcnRoRnV6emluZ2A6IEFic29sdXRlbHkuIFRoaXMgaXMgYSBjcml0aWNhbCBwYXRjaC5cblxuYEZvY3VzU3ltYm9sc2A6IEkndmUgaWRlbnRpZmllZCB0aGUga2V5IGZ1bmN0aW9ucyBmb3IgY29uY2VudHJhdGVkIGZ1enppbmc6IGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYCwgYHVibGtfY3RybF9zdGFydF9kZXZgLCBgdWJsa19jdHJsX2VuZF9yZWNvdmVyeWAsIGFuZCBgdWJsa19tYXJrX2lvX3JlYWR5YC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBkaXJlY3RseSBpbnZvbHZlZCBpbiB0aGUgc3luY2hyb25pemF0aW9uIGxvZ2ljIHRoZSBwYXRjaCBpcyBtb2RpZnlpbmcuXG5cbmBFbmFibGVDb25maWdzYDogSnVzdCB0aGUgb25lLCBgQkxLX0RFVl9VQkxLYCwgd2hpY2ggaXMgcHJlY2lzZWx5IHdoYXQgd2Ugd2FudC5cblxuYFJlYXNvbmluZ2A6IFRoZSBwYXRjaCBpdHNlbGYgY2hhbmdlcyBob3cgdGhlIHVibGsgZHJpdmVyIGhhbmRsZXMgZGV2aWNlIHN0YXRlIHRyYW5zaXRpb25zIGFuZCBzeW5jaHJvbml6YXRpb24gaW4gaXRzIGNvbnRyb2wgcGF0aC4gU3BlY2lmaWNhbGx5LCB0aGV5J3ZlIHJlcGxhY2VkIGEgc2ltcGxlIGNvbXBsZXRpb24gd2l0aCBhIGN1c3RvbSB3YWl0IGxvb3AgKGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYCkgdG8gYWRkcmVzcyBhIHJhY2UgY29uZGl0aW9uLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwgY2hhbmdlKiBpbiBob3cgdGhlIGRldmljZSdzIHJlYWR5IHN0YXRlIGlzIG1hbmFnZWQuIFRoYXQncyBhIHRleHRib29rIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gV2UgbmVlZCB0byBleHBvc2UgYW55IGx1cmtpbmcgY29uY3VycmVuY3kgaXNzdWVzIGluIHRoaXMgbmV3IGFwcHJvYWNoLiBJIGZlZWwgZ29vZCBhYm91dCB0aGlzIHBsYW47IGl0IHNob3VsZCBiZSBjb21wcmVoZW5zaXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTg2LCJPdXRwdXRUb2tlbnMiOjE1OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNDoyMTo0NS44OTIzMTA1MjlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzQ0MTI4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9VQkxLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidWJsa193YWl0X2Rldl9yZWFkeV9hbmRfbG9ja1wiLFxuICAgIFwidWJsa19jdHJsX3N0YXJ0X2RldlwiLFxuICAgIFwidWJsa19jdHJsX2VuZF9yZWNvdmVyeVwiLFxuICAgIFwidWJsa19tYXJrX2lvX3JlYWR5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHN5bmNocm9uaXphdGlvbiBsb2dpYyBpbiB0aGUgdWJsayBkcml2ZXIncyBjb250cm9sIHBhdGgsIHJlcGxhY2luZyBhIGNvbXBsZXRpb24gd2l0aCBhIGN1c3RvbSB3YWl0IGxvb3AgKGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYCkgdG8gZml4IGEgcmFjZSBjb25kaXRpb24gd2hlcmUgdGhlIGRldmljZSBjb3VsZCBiZWNvbWUgdW5yZWFkeSBiZXR3ZWVuIHdha2V1cCBhbmQgbXV0ZXggYWNxdWlzaXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBkZXZpY2Ugc3RhdGUgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9VQkxLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidWJsa193YWl0X2Rldl9yZWFkeV9hbmRfbG9ja1wiLFxuICAgIFwidWJsa19jdHJsX3N0YXJ0X2RldlwiLFxuICAgIFwidWJsa19jdHJsX2VuZF9yZWNvdmVyeVwiLFxuICAgIFwidWJsa19tYXJrX2lvX3JlYWR5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHN5bmNocm9uaXphdGlvbiBsb2dpYyBpbiB0aGUgdWJsayBkcml2ZXIncyBjb250cm9sIHBhdGgsIHJlcGxhY2luZyBhIGNvbXBsZXRpb24gd2l0aCBhIGN1c3RvbSB3YWl0IGxvb3AgKGB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrYCkgdG8gZml4IGEgcmFjZSBjb25kaXRpb24gd2hlcmUgdGhlIGRldmljZSBjb3VsZCBiZWNvbWUgdW5yZWFkeSBiZXR3ZWVuIHdha2V1cCBhbmQgbXV0ZXggYWNxdWlzaXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBkZXZpY2Ugc3RhdGUgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmq288[1] Phase: Succeeded StartedAt: 2026-07-19 14:21:51 +0000 UTC FinishedAt: 2026-07-19 14:21:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmq288[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-19 14:21:51 +0000 UTC FinishedAt: 2026-07-19 14:21:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmq288[2] Phase: Succeeded StartedAt: 2026-07-19 14:21:51 +0000 UTC FinishedAt: 2026-07-19 16:41:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-19 14:21:51 +0000 UTC FinishedAt: 2026-07-19 16:41:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-19 14:21:51 +0000 UTC FinishedAt: 2026-07-19 14:22:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-19 14:21:51 +0000 UTC FinishedAt: 2026-07-19 14:21:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowmq288/series-workflowmq288-convert-artifact-2671813670/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-19 14:22:01 +0000 UTC FinishedAt: 2026-07-19 14:55:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-19 14:22:01 +0000 UTC FinishedAt: 2026-07-19 14:55:00 +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:*4d29b207-a9ec-42c3-8b64-833a1bfd0431,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-workflowmq288/series-workflowmq288-convert-artifact-2671813670/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": "e8f2b7ba-57b2-4d72-9502-b5b75284fd30", "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-workflowmq288/series-workflowmq288-build-action-3506881724/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-19 14:22:01 +0000 UTC FinishedAt: 2026-07-19 14:54:51 +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:*4d29b207-a9ec-42c3-8b64-833a1bfd0431,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-workflowmq288/series-workflowmq288-convert-artifact-2671813670/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": "e8f2b7ba-57b2-4d72-9502-b5b75284fd30", "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-workflowmq288/series-workflowmq288-build-action-3506881724/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-19 14:55:00 +0000 UTC FinishedAt: 2026-07-19 14:55:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-19 14:55:00 +0000 UTC FinishedAt: 2026-07-19 14:55:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-19 14:55:00 +0000 UTC FinishedAt: 2026-07-19 14:55:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-19 14:55:00 +0000 UTC FinishedAt: 2026-07-19 14:55:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowmq288/series-workflowmq288-convert-artifact-1229081465/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-19 14:55:22 +0000 UTC FinishedAt: 2026-07-19 14:57:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-19 14:55:22 +0000 UTC FinishedAt: 2026-07-19 14:57:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e8f2b7ba-57b2-4d72-9502-b5b75284fd30,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-workflowmq288/series-workflowmq288-build-action-3506881724/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-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-19 14:57:17 +0000 UTC FinishedAt: 2026-07-19 14:57:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-19 14:57:17 +0000 UTC FinishedAt: 2026-07-19 14:57:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-19 14:57:17 +0000 UTC FinishedAt: 2026-07-19 15:46:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-19 14:57:17 +0000 UTC FinishedAt: 2026-07-19 15:46:18 +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:*4d29b207-a9ec-42c3-8b64-833a1bfd0431,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-workflowmq288/series-workflowmq288-convert-artifact-1229081465/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": "dbbe1460-b778-4253-8562-1a648a6a3d6e", "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-workflowmq288/series-workflowmq288-build-action-211684693/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-19 14:57:17 +0000 UTC FinishedAt: 2026-07-19 15:46:08 +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:*4d29b207-a9ec-42c3-8b64-833a1bfd0431,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-workflowmq288/series-workflowmq288-convert-artifact-1229081465/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": "dbbe1460-b778-4253-8562-1a648a6a3d6e", "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-workflowmq288/series-workflowmq288-build-action-211684693/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-19 15:46:18 +0000 UTC FinishedAt: 2026-07-19 15:46:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-19 15:46:18 +0000 UTC FinishedAt: 2026-07-19 15:46:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-19 15:46:18 +0000 UTC FinishedAt: 2026-07-19 15:48:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-19 15:46:18 +0000 UTC FinishedAt: 2026-07-19 15:48:17 +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:*dbbe1460-b778-4253-8562-1a648a6a3d6e,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-workflowmq288/series-workflowmq288-build-action-211684693/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-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-19 15:48:27 +0000 UTC FinishedAt: 2026-07-19 16:41:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-19 15:48:27 +0000 UTC FinishedAt: 2026-07-19 16:41:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"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:*e8f2b7ba-57b2-4d72-9502-b5b75284fd30,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*dbbe1460-b778-4253-8562-1a648a6a3d6e,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-workflowmq288/series-workflowmq288-build-action-3506881724/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-workflowmq288/series-workflowmq288-build-action-211684693/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-19 15:48:27 +0000 UTC FinishedAt: 2026-07-19 15:48:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-19 15:48:27 +0000 UTC FinishedAt: 2026-07-19 15:48:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"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-workflowmq288/series-workflowmq288-convert-artifact-2795198446/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-19 15:48:27 +0000 UTC FinishedAt: 2026-07-19 15:48:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-19 15:48:27 +0000 UTC FinishedAt: 2026-07-19 15:48:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-19 15:48:27 +0000 UTC FinishedAt: 2026-07-19 15:48:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-19 15:48:37 +0000 UTC FinishedAt: 2026-07-19 16:41:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmq288[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_wait_dev_ready_and_lock","ublk_ctrl_start_dev","ublk_ctrl_end_recovery","ublk_mark_io_ready"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c6859eed755df351a3978b33cb92365f9b3e8f06","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"2f17c956-424f-4a32-9ac2-19d2279e269b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-19 15:48:37 +0000 UTC FinishedAt: 2026-07-19 16:41:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e8f2b7ba-57b2-4d72-9502-b5b75284fd30,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*dbbe1460-b778-4253-8562-1a648a6a3d6e,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-workflowmq288/series-workflowmq288-build-action-3506881724/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-workflowmq288/series-workflowmq288-build-action-211684693/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-workflowmq288/series-workflowmq288-convert-artifact-2795198446/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,}