Name: series-workflow2tpmj Phase: Succeeded StartedAt: 2026-07-20 03:41:18 +0000 UTC FinishedAt: 2026-07-20 06:26:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tpmj[0] Phase: Succeeded StartedAt: 2026-07-20 03:41:18 +0000 UTC FinishedAt: 2026-07-20 04:17:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tpmj[0].run-triage Phase: Succeeded StartedAt: 2026-07-20 03:41:18 +0000 UTC FinishedAt: 2026-07-20 04:17:59 +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": "1590cf0329716306e948a8fc29f1d3ee87d3989f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_BSG", "SCSI", "IO_URING" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "1590cf0329716306e948a8fc29f1d3ee87d3989f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_BSG", "SCSI", "IO_URING" ], "series_id": "d917167a-42e5-4239-9a96-754548b7d534" }, "track": "KASAN", "fuzz": { "focus": [ "io_uring" ], "focus_symbols": [ "scsi_bsg_uring_cmd", "scsi_bsg_map_user_buffer" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDA0OjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfQlNHJiMzNDssCiAgICAmIzM0O1NDU0kmIzM0OywKICAgICYjMzQ7SU9fVVJJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3NpX2JzZ191cmluZ19jbWQmIzM0OywKICAgICYjMzQ7c2NzaV9ic2dfbWFwX3VzZXJfYnVmZmVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIFNDU0kgQlNHIGlvX3VyaW5nIGludGVncmF0aW9uLCBmaXhpbmcgVE9DVE9VIHZ1bG5lcmFiaWxpdGllcyBieSBzbmFwc2hvdHRpbmcgU1FFIGZpZWxkcyBhbmQgY2hhbmdpbmcgdGhlIGJ1ZmZlciBtYXBwaW5nIGxvZ2ljLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSB2aWEgaW9fdXJpbmcgY29tbWFuZHMgdG8gU0NTSSBCU0cgZGV2aWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwNDoxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGRkNjkxZmEwOTIzMjFjNzVjYjg0MmY5YjlkZjAxZTI4NGE4YWM3NGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyMCAwNDoxNjoyMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYyBiL2RyaXZlcnMvc2NzaS9zY3NpX2JzZy5jXG5pbmRleCBlODBkZWM1MzE3NGVhYy4uZjkwZDE5ZmRiZDhlYTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3Njc2kvc2NzaV9ic2cuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zY3NpL3Njc2lfYnNnLmNcbkBAIC03NiwxMiAmIzQzOzc2LDkgQEAgc3RhdGljIGVudW0gcnFfZW5kX2lvX3JldCBzY3NpX2JzZ191cmluZ19jbWRfZG9uZShzdHJ1Y3QgcmVxdWVzdCAqcmVxLFxuIFxuIHN0YXRpYyBpbnQgc2NzaV9ic2dfbWFwX3VzZXJfYnVmZmVyKHN0cnVjdCByZXF1ZXN0ICpyZXEsXG4gXHRcdFx0XHQgICAgc3RydWN0IGlvX3VyaW5nX2NtZCAqaW91Y21kLFxuLVx0XHRcdFx0ICAgIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncywgZ2ZwX3QgZ2ZwX21hc2spXG4mIzQzO1x0XHRcdFx0ICAgIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncywgYm9vbCBpc193cml0ZSxcbiYjNDM7XHRcdFx0XHQgICAgdTY0IGJ1Zl9hZGRyLCB1bnNpZ25lZCBsb25nIGJ1Zl9sZW4pXG4ge1xuLVx0Y29uc3Qgc3RydWN0IGJzZ191cmluZ19jbWQgKmNtZCA9IGlvX3VyaW5nX3NxZTEyOF9jbWQoaW91Y21kLVx1MDAzZXNxZSwgc3RydWN0IGJzZ191cmluZ19jbWQpO1xuLVx0Ym9vbCBpc193cml0ZSA9IGNtZC1cdTAwM2Vkb3V0X3hmZXJfbGVuIFx1MDAzZSAwO1xuLVx0dTY0IGJ1Zl9hZGRyID0gaXNfd3JpdGUgPyBjbWQtXHUwMDNlZG91dF94ZmVycCA6IGNtZC1cdTAwM2VkaW5feGZlcnA7XG4tXHR1bnNpZ25lZCBsb25nIGJ1Zl9sZW4gPSBpc193cml0ZSA/IGNtZC1cdTAwM2Vkb3V0X3hmZXJfbGVuIDogY21kLVx1MDAzZWRpbl94ZmVyX2xlbjtcbiBcdHN0cnVjdCBpb3ZfaXRlciBpdGVyO1xuIFx0aW50IHJldDtcbiBcbkBAIC05MSwxMCAmIzQzOzg4LDEwIEBAIHN0YXRpYyBpbnQgc2NzaV9ic2dfbWFwX3VzZXJfYnVmZmVyKHN0cnVjdCByZXF1ZXN0ICpyZXEsXG4gXHRcdFx0XHRcdFx0XHUwMDI2aXRlciwgaW91Y21kLCBpc3N1ZV9mbGFncyk7XG4gXHRcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdFx0cmV0dXJuIHJldDtcbi1cdFx0cmV0ID0gYmxrX3JxX21hcF91c2VyX2lvdihyZXEtXHUwMDNlcSwgcmVxLCBOVUxMLCBcdTAwMjZpdGVyLCBnZnBfbWFzayk7XG4mIzQzO1x0XHRyZXQgPSBibGtfcnFfbWFwX3VzZXJfaW92KHJlcS1cdTAwM2VxLCByZXEsIE5VTEwsIFx1MDAyNml0ZXIsIEdGUF9LRVJORUwpO1xuIFx0fSBlbHNlIHtcbiBcdFx0cmV0ID0gYmxrX3JxX21hcF91c2VyKHJlcS1cdTAwM2VxLCByZXEsIE5VTEwsIHVwdHI2NChidWZfYWRkciksXG4tXHRcdFx0XHQgICAgICBidWZfbGVuLCBnZnBfbWFzayk7XG4mIzQzO1x0XHRcdFx0ICAgICAgYnVmX2xlbiwgR0ZQX0tFUk5FTCk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gcmV0O1xuQEAgLTEwNCwyMSAmIzQzOzEwMSwyOCBAQCBzdGF0aWMgaW50IHNjc2lfYnNnX3VyaW5nX2NtZChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IGlvX3VyaW5nX2NtZCAqaW91Y1xuIFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MsIGJvb2wgb3Blbl9mb3Jfd3JpdGUpXG4ge1xuIFx0c3RydWN0IHNjc2lfYnNnX3VyaW5nX2NtZF9wZHUgKnBkdSA9IHNjc2lfYnNnX3VyaW5nX2NtZF9wZHUoaW91Y21kKTtcbi1cdGNvbnN0IHN0cnVjdCBic2dfdXJpbmdfY21kICpjbWQgPSBpb191cmluZ19zcWUxMjhfY21kKGlvdWNtZC1cdTAwM2VzcWUsIHN0cnVjdCBic2dfdXJpbmdfY21kKTtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgYnNnX3VyaW5nX2NtZCAqY21kID1cbiYjNDM7XHRcdGlvX3VyaW5nX3NxZTEyOF9jbWQoaW91Y21kLVx1MDAzZXNxZSwgc3RydWN0IGJzZ191cmluZ19jbWQpO1xuIFx0c3RydWN0IHNjc2lfY21uZCAqc2NtZDtcbiBcdHN0cnVjdCByZXF1ZXN0ICpyZXE7XG4gXHRibGtfbXFfcmVxX2ZsYWdzX3QgYmxrX2ZsYWdzID0gMDtcbi1cdGdmcF90IGdmcF9tYXNrID0gR0ZQX0tFUk5FTDtcbiYjNDM7XHQvKiBTbmFwc2hvdCBTUUUgZmllbGRzIHVzZWQgZm9yIHZhbGlkYXRpb24gYW5kIGJ1ZmZlciBtYXBwaW5nLiAqL1xuJiM0MztcdHU2NCByZXF1ZXN0ID0gUkVBRF9PTkNFKGNtZC1cdTAwM2VyZXF1ZXN0KTtcbiYjNDM7XHR1MzIgcmVxdWVzdF9sZW4gPSBSRUFEX09OQ0UoY21kLVx1MDAzZXJlcXVlc3RfbGVuKTtcbiYjNDM7XHR1NjQgZG91dF94ZmVycCA9IFJFQURfT05DRShjbWQtXHUwMDNlZG91dF94ZmVycCk7XG4mIzQzO1x0dTMyIGRvdXRfeGZlcl9sZW4gPSBSRUFEX09OQ0UoY21kLVx1MDAzZWRvdXRfeGZlcl9sZW4pO1xuJiM0MztcdHU2NCBkaW5feGZlcnAgPSBSRUFEX09OQ0UoY21kLVx1MDAzZWRpbl94ZmVycCk7XG4mIzQzO1x0dTMyIGRpbl94ZmVyX2xlbiA9IFJFQURfT05DRShjbWQtXHUwMDNlZGluX3hmZXJfbGVuKTtcbiBcdGludCByZXQ7XG4gXG4gXHRpZiAoY21kLVx1MDAzZXByb3RvY29sICE9IEJTR19QUk9UT0NPTF9TQ1NJIHx8XG4gXHQgICAgY21kLVx1MDAzZXN1YnByb3RvY29sICE9IEJTR19TVUJfUFJPVE9DT0xfU0NTSV9DTUQpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0aWYgKCFjbWQtXHUwMDNlcmVxdWVzdCB8fCBjbWQtXHUwMDNlcmVxdWVzdF9sZW4gPT0gMClcbiYjNDM7XHRpZiAoIXJlcXVlc3QgfHwgcmVxdWVzdF9sZW4gPT0gMClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRpZiAoY21kLVx1MDAzZWRvdXRfeGZlcl9sZW4gXHUwMDI2XHUwMDI2IGNtZC1cdTAwM2VkaW5feGZlcl9sZW4pIHtcbiYjNDM7XHRpZiAoZG91dF94ZmVyX2xlbiBcdTAwMjZcdTAwMjYgZGluX3hmZXJfbGVuKSB7XG4gXHRcdHByX3dhcm5fb25jZShcJiMzNDtCSURJIHN1cHBvcnQgaW4gYnNnIGhhcyBiZWVuIHJlbW92ZWQuXFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFx0fVxuQEAgLTEyNiwyNSAmIzQzOzEzMCwyMyBAQCBzdGF0aWMgaW50IHNjc2lfYnNnX3VyaW5nX2NtZChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IGlvX3VyaW5nX2NtZCAqaW91Y1xuIFx0aWYgKGNtZC1cdTAwM2Vkb3V0X2lvdmVjX2NvdW50IFx1MDAzZSAwIHx8IGNtZC1cdTAwM2VkaW5faW92ZWNfY291bnQgXHUwMDNlIDApXG4gXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcbi1cdGlmIChpc3N1ZV9mbGFncyBcdTAwMjYgSU9fVVJJTkdfRl9OT05CTE9DSykge1xuJiM0MztcdGlmIChpc3N1ZV9mbGFncyBcdTAwMjYgSU9fVVJJTkdfRl9OT05CTE9DSylcbiBcdFx0YmxrX2ZsYWdzID0gQkxLX01RX1JFUV9OT1dBSVQ7XG4tXHRcdGdmcF9tYXNrID0gR0ZQX05PV0FJVDtcbi1cdH1cbiBcbi1cdHJlcSA9IHNjc2lfYWxsb2NfcmVxdWVzdChxLCBjbWQtXHUwMDNlZG91dF94ZmVyX2xlbiA/XG4mIzQzO1x0cmVxID0gc2NzaV9hbGxvY19yZXF1ZXN0KHEsIGRvdXRfeGZlcl9sZW4gP1xuIFx0XHRcdFx0IFJFUV9PUF9EUlZfT1VUIDogUkVRX09QX0RSVl9JTiwgYmxrX2ZsYWdzKTtcbiBcdGlmIChJU19FUlIocmVxKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIocmVxKTtcbiBcbiBcdHNjbWQgPSBibGtfbXFfcnFfdG9fcGR1KHJlcSk7XG4tXHRpZiAoY21kLVx1MDAzZXJlcXVlc3RfbGVuIFx1MDAzZSBzaXplb2Yoc2NtZC1cdTAwM2VjbW5kKSkge1xuJiM0MztcdGlmIChyZXF1ZXN0X2xlbiBcdTAwM2Ugc2l6ZW9mKHNjbWQtXHUwMDNlY21uZCkpIHtcbiBcdFx0cmV0ID0gLUVJTlZBTDtcbiBcdFx0Z290byBvdXRfZnJlZV9yZXE7XG4gXHR9XG4tXHRzY21kLVx1MDAzZWNtZF9sZW4gPSBjbWQtXHUwMDNlcmVxdWVzdF9sZW47XG4mIzQzO1x0c2NtZC1cdTAwM2VjbWRfbGVuID0gcmVxdWVzdF9sZW47XG4gXHRzY21kLVx1MDAzZWFsbG93ZWQgPSBTR19ERUZBVUxUX1JFVFJJRVM7XG4gXG4tXHRpZiAoY29weV9mcm9tX3VzZXIoc2NtZC1cdTAwM2VjbW5kLCB1cHRyNjQoY21kLVx1MDAzZXJlcXVlc3QpLCBjbWQtXHUwMDNlcmVxdWVzdF9sZW4pKSB7XG4mIzQzO1x0aWYgKGNvcHlfZnJvbV91c2VyKHNjbWQtXHUwMDNlY21uZCwgdXB0cjY0KHJlcXVlc3QpLCByZXF1ZXN0X2xlbikpIHtcbiBcdFx0cmV0ID0gLUVGQVVMVDtcbiBcdFx0Z290byBvdXRfZnJlZV9yZXE7XG4gXHR9XG5AQCAtMTU4LDggJiM0MzsxNjAsMTMgQEAgc3RhdGljIGludCBzY3NpX2JzZ191cmluZ19jbWQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBpb191cmluZ19jbWQgKmlvdWNcbiBcdHNjbWQtXHUwMDNlc2Vuc2VfbGVuID0gY21kLVx1MDAzZW1heF9yZXNwb25zZV9sZW4gP1xuIFx0XHRtaW4oY21kLVx1MDAzZW1heF9yZXNwb25zZV9sZW4sIFNDU0lfU0VOU0VfQlVGRkVSU0laRSkgOiBTQ1NJX1NFTlNFX0JVRkZFUlNJWkU7XG4gXG4tXHRpZiAoY21kLVx1MDAzZWRvdXRfeGZlcl9sZW4gfHwgY21kLVx1MDAzZWRpbl94ZmVyX2xlbikge1xuLVx0XHRyZXQgPSBzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXIocmVxLCBpb3VjbWQsIGlzc3VlX2ZsYWdzLCBnZnBfbWFzayk7XG4mIzQzO1x0aWYgKGRvdXRfeGZlcl9sZW4gfHwgZGluX3hmZXJfbGVuKSB7XG4mIzQzO1x0XHRib29sIGlzX3dyaXRlID0gZG91dF94ZmVyX2xlbiBcdTAwM2UgMDtcbiYjNDM7XHRcdHU2NCBidWZfYWRkciA9IGlzX3dyaXRlID8gZG91dF94ZmVycCA6IGRpbl94ZmVycDtcbiYjNDM7XHRcdHVuc2lnbmVkIGxvbmcgYnVmX2xlbiA9IGlzX3dyaXRlID8gZG91dF94ZmVyX2xlbiA6IGRpbl94ZmVyX2xlbjtcbiYjNDM7XG4mIzQzO1x0XHRyZXQgPSBzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXIocmVxLCBpb3VjbWQsIGlzc3VlX2ZsYWdzLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIGlzX3dyaXRlLCBidWZfYWRkciwgYnVmX2xlbik7XG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0Z290byBvdXRfZnJlZV9yZXE7XG4gXHRcdHBkdS1cdTAwM2ViaW8gPSByZXEtXHUwMDNlYmlvO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDA0OjE2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfQlNHJiMzNDssCiAgICAmIzM0O1NDU0kmIzM0OywKICAgICYjMzQ7SU9fVVJJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3NpX2JzZ191cmluZ19jbWQmIzM0OywKICAgICYjMzQ7c2NzaV9ic2dfbWFwX3VzZXJfYnVmZmVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIFNDU0kgQlNHIGlvX3VyaW5nIGludGVncmF0aW9uLCBmaXhpbmcgVE9DVE9VIHZ1bG5lcmFiaWxpdGllcyBieSBzbmFwc2hvdHRpbmcgU1FFIGZpZWxkcyBhbmQgY2hhbmdpbmcgdGhlIGJ1ZmZlciBtYXBwaW5nIGxvZ2ljLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSB2aWEgaW9fdXJpbmcgY29tbWFuZHMgdG8gU0NTSSBCU0cgZGV2aWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZGQ2OTFmYTA5MjMyMWM3NWNiODQyZjliOWRmMDFlMjg0YThhYzc0ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDIwIDA0OjE2OjIxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Njc2lfYnNnLmMgYi9kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYwppbmRleCBlODBkZWM1MzE3NGVhYy4uZjkwZDE5ZmRiZDhlYTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zY3NpX2JzZy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvc2NzaS9zY3NpX2JzZy5jCkBAIC03NiwxMiAmIzQzOzc2LDkgQEAgc3RhdGljIGVudW0gcnFfZW5kX2lvX3JldCBzY3NpX2JzZ191cmluZ19jbWRfZG9uZShzdHJ1Y3QgcmVxdWVzdCAqcmVxLAogCiBzdGF0aWMgaW50IHNjc2lfYnNnX21hcF91c2VyX2J1ZmZlcihzdHJ1Y3QgcmVxdWVzdCAqcmVxLAogCQkJCSAgICBzdHJ1Y3QgaW9fdXJpbmdfY21kICppb3VjbWQsCi0JCQkJICAgIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncywgZ2ZwX3QgZ2ZwX21hc2spCiYjNDM7CQkJCSAgICB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MsIGJvb2wgaXNfd3JpdGUsCiYjNDM7CQkJCSAgICB1NjQgYnVmX2FkZHIsIHVuc2lnbmVkIGxvbmcgYnVmX2xlbikKIHsKLQljb25zdCBzdHJ1Y3QgYnNnX3VyaW5nX2NtZCAqY21kID0gaW9fdXJpbmdfc3FlMTI4X2NtZChpb3VjbWQtJmd0O3NxZSwgc3RydWN0IGJzZ191cmluZ19jbWQpOwotCWJvb2wgaXNfd3JpdGUgPSBjbWQtJmd0O2RvdXRfeGZlcl9sZW4gJmd0OyAwOwotCXU2NCBidWZfYWRkciA9IGlzX3dyaXRlID8gY21kLSZndDtkb3V0X3hmZXJwIDogY21kLSZndDtkaW5feGZlcnA7Ci0JdW5zaWduZWQgbG9uZyBidWZfbGVuID0gaXNfd3JpdGUgPyBjbWQtJmd0O2RvdXRfeGZlcl9sZW4gOiBjbWQtJmd0O2Rpbl94ZmVyX2xlbjsKIAlzdHJ1Y3QgaW92X2l0ZXIgaXRlcjsKIAlpbnQgcmV0OwogCkBAIC05MSwxMCAmIzQzOzg4LDEwIEBAIHN0YXRpYyBpbnQgc2NzaV9ic2dfbWFwX3VzZXJfYnVmZmVyKHN0cnVjdCByZXF1ZXN0ICpyZXEsCiAJCQkJCQkmYW1wO2l0ZXIsIGlvdWNtZCwgaXNzdWVfZmxhZ3MpOwogCQlpZiAocmV0ICZsdDsgMCkKIAkJCXJldHVybiByZXQ7Ci0JCXJldCA9IGJsa19ycV9tYXBfdXNlcl9pb3YocmVxLSZndDtxLCByZXEsIE5VTEwsICZhbXA7aXRlciwgZ2ZwX21hc2spOwomIzQzOwkJcmV0ID0gYmxrX3JxX21hcF91c2VyX2lvdihyZXEtJmd0O3EsIHJlcSwgTlVMTCwgJmFtcDtpdGVyLCBHRlBfS0VSTkVMKTsKIAl9IGVsc2UgewogCQlyZXQgPSBibGtfcnFfbWFwX3VzZXIocmVxLSZndDtxLCByZXEsIE5VTEwsIHVwdHI2NChidWZfYWRkciksCi0JCQkJICAgICAgYnVmX2xlbiwgZ2ZwX21hc2spOwomIzQzOwkJCQkgICAgICBidWZfbGVuLCBHRlBfS0VSTkVMKTsKIAl9CiAKIAlyZXR1cm4gcmV0OwpAQCAtMTA0LDIxICYjNDM7MTAxLDI4IEBAIHN0YXRpYyBpbnQgc2NzaV9ic2dfdXJpbmdfY21kKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgaW9fdXJpbmdfY21kICppb3VjCiAJCQkgICAgICAgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzLCBib29sIG9wZW5fZm9yX3dyaXRlKQogewogCXN0cnVjdCBzY3NpX2JzZ191cmluZ19jbWRfcGR1ICpwZHUgPSBzY3NpX2JzZ191cmluZ19jbWRfcGR1KGlvdWNtZCk7Ci0JY29uc3Qgc3RydWN0IGJzZ191cmluZ19jbWQgKmNtZCA9IGlvX3VyaW5nX3NxZTEyOF9jbWQoaW91Y21kLSZndDtzcWUsIHN0cnVjdCBic2dfdXJpbmdfY21kKTsKJiM0MzsJY29uc3Qgc3RydWN0IGJzZ191cmluZ19jbWQgKmNtZCA9CiYjNDM7CQlpb191cmluZ19zcWUxMjhfY21kKGlvdWNtZC0mZ3Q7c3FlLCBzdHJ1Y3QgYnNnX3VyaW5nX2NtZCk7CiAJc3RydWN0IHNjc2lfY21uZCAqc2NtZDsKIAlzdHJ1Y3QgcmVxdWVzdCAqcmVxOwogCWJsa19tcV9yZXFfZmxhZ3NfdCBibGtfZmxhZ3MgPSAwOwotCWdmcF90IGdmcF9tYXNrID0gR0ZQX0tFUk5FTDsKJiM0MzsJLyogU25hcHNob3QgU1FFIGZpZWxkcyB1c2VkIGZvciB2YWxpZGF0aW9uIGFuZCBidWZmZXIgbWFwcGluZy4gKi8KJiM0MzsJdTY0IHJlcXVlc3QgPSBSRUFEX09OQ0UoY21kLSZndDtyZXF1ZXN0KTsKJiM0MzsJdTMyIHJlcXVlc3RfbGVuID0gUkVBRF9PTkNFKGNtZC0mZ3Q7cmVxdWVzdF9sZW4pOwomIzQzOwl1NjQgZG91dF94ZmVycCA9IFJFQURfT05DRShjbWQtJmd0O2RvdXRfeGZlcnApOwomIzQzOwl1MzIgZG91dF94ZmVyX2xlbiA9IFJFQURfT05DRShjbWQtJmd0O2RvdXRfeGZlcl9sZW4pOwomIzQzOwl1NjQgZGluX3hmZXJwID0gUkVBRF9PTkNFKGNtZC0mZ3Q7ZGluX3hmZXJwKTsKJiM0MzsJdTMyIGRpbl94ZmVyX2xlbiA9IFJFQURfT05DRShjbWQtJmd0O2Rpbl94ZmVyX2xlbik7CiAJaW50IHJldDsKIAogCWlmIChjbWQtJmd0O3Byb3RvY29sICE9IEJTR19QUk9UT0NPTF9TQ1NJIHx8CiAJICAgIGNtZC0mZ3Q7c3VicHJvdG9jb2wgIT0gQlNHX1NVQl9QUk9UT0NPTF9TQ1NJX0NNRCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlpZiAoIWNtZC0mZ3Q7cmVxdWVzdCB8fCBjbWQtJmd0O3JlcXVlc3RfbGVuID09IDApCiYjNDM7CWlmICghcmVxdWVzdCB8fCByZXF1ZXN0X2xlbiA9PSAwKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCWlmIChjbWQtJmd0O2RvdXRfeGZlcl9sZW4gJmFtcDsmYW1wOyBjbWQtJmd0O2Rpbl94ZmVyX2xlbikgewomIzQzOwlpZiAoZG91dF94ZmVyX2xlbiAmYW1wOyZhbXA7IGRpbl94ZmVyX2xlbikgewogCQlwcl93YXJuX29uY2UoJiMzNDtCSURJIHN1cHBvcnQgaW4gYnNnIGhhcyBiZWVuIHJlbW92ZWQuXG4mIzM0Oyk7CiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAl9CkBAIC0xMjYsMjUgJiM0MzsxMzAsMjMgQEAgc3RhdGljIGludCBzY3NpX2JzZ191cmluZ19jbWQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBpb191cmluZ19jbWQgKmlvdWMKIAlpZiAoY21kLSZndDtkb3V0X2lvdmVjX2NvdW50ICZndDsgMCB8fCBjbWQtJmd0O2Rpbl9pb3ZlY19jb3VudCAmZ3Q7IDApCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCWlmIChpc3N1ZV9mbGFncyAmYW1wOyBJT19VUklOR19GX05PTkJMT0NLKSB7CiYjNDM7CWlmIChpc3N1ZV9mbGFncyAmYW1wOyBJT19VUklOR19GX05PTkJMT0NLKQogCQlibGtfZmxhZ3MgPSBCTEtfTVFfUkVRX05PV0FJVDsKLQkJZ2ZwX21hc2sgPSBHRlBfTk9XQUlUOwotCX0KIAotCXJlcSA9IHNjc2lfYWxsb2NfcmVxdWVzdChxLCBjbWQtJmd0O2RvdXRfeGZlcl9sZW4gPwomIzQzOwlyZXEgPSBzY3NpX2FsbG9jX3JlcXVlc3QocSwgZG91dF94ZmVyX2xlbiA/CiAJCQkJIFJFUV9PUF9EUlZfT1VUIDogUkVRX09QX0RSVl9JTiwgYmxrX2ZsYWdzKTsKIAlpZiAoSVNfRVJSKHJlcSkpCiAJCXJldHVybiBQVFJfRVJSKHJlcSk7CiAKIAlzY21kID0gYmxrX21xX3JxX3RvX3BkdShyZXEpOwotCWlmIChjbWQtJmd0O3JlcXVlc3RfbGVuICZndDsgc2l6ZW9mKHNjbWQtJmd0O2NtbmQpKSB7CiYjNDM7CWlmIChyZXF1ZXN0X2xlbiAmZ3Q7IHNpemVvZihzY21kLSZndDtjbW5kKSkgewogCQlyZXQgPSAtRUlOVkFMOwogCQlnb3RvIG91dF9mcmVlX3JlcTsKIAl9Ci0Jc2NtZC0mZ3Q7Y21kX2xlbiA9IGNtZC0mZ3Q7cmVxdWVzdF9sZW47CiYjNDM7CXNjbWQtJmd0O2NtZF9sZW4gPSByZXF1ZXN0X2xlbjsKIAlzY21kLSZndDthbGxvd2VkID0gU0dfREVGQVVMVF9SRVRSSUVTOwogCi0JaWYgKGNvcHlfZnJvbV91c2VyKHNjbWQtJmd0O2NtbmQsIHVwdHI2NChjbWQtJmd0O3JlcXVlc3QpLCBjbWQtJmd0O3JlcXVlc3RfbGVuKSkgewomIzQzOwlpZiAoY29weV9mcm9tX3VzZXIoc2NtZC0mZ3Q7Y21uZCwgdXB0cjY0KHJlcXVlc3QpLCByZXF1ZXN0X2xlbikpIHsKIAkJcmV0ID0gLUVGQVVMVDsKIAkJZ290byBvdXRfZnJlZV9yZXE7CiAJfQpAQCAtMTU4LDggJiM0MzsxNjAsMTMgQEAgc3RhdGljIGludCBzY3NpX2JzZ191cmluZ19jbWQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBpb191cmluZ19jbWQgKmlvdWMKIAlzY21kLSZndDtzZW5zZV9sZW4gPSBjbWQtJmd0O21heF9yZXNwb25zZV9sZW4gPwogCQltaW4oY21kLSZndDttYXhfcmVzcG9uc2VfbGVuLCBTQ1NJX1NFTlNFX0JVRkZFUlNJWkUpIDogU0NTSV9TRU5TRV9CVUZGRVJTSVpFOwogCi0JaWYgKGNtZC0mZ3Q7ZG91dF94ZmVyX2xlbiB8fCBjbWQtJmd0O2Rpbl94ZmVyX2xlbikgewotCQlyZXQgPSBzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXIocmVxLCBpb3VjbWQsIGlzc3VlX2ZsYWdzLCBnZnBfbWFzayk7CiYjNDM7CWlmIChkb3V0X3hmZXJfbGVuIHx8IGRpbl94ZmVyX2xlbikgewomIzQzOwkJYm9vbCBpc193cml0ZSA9IGRvdXRfeGZlcl9sZW4gJmd0OyAwOwomIzQzOwkJdTY0IGJ1Zl9hZGRyID0gaXNfd3JpdGUgPyBkb3V0X3hmZXJwIDogZGluX3hmZXJwOwomIzQzOwkJdW5zaWduZWQgbG9uZyBidWZfbGVuID0gaXNfd3JpdGUgPyBkb3V0X3hmZXJfbGVuIDogZGluX3hmZXJfbGVuOwomIzQzOwomIzQzOwkJcmV0ID0gc2NzaV9ic2dfbWFwX3VzZXJfYnVmZmVyKHJlcSwgaW91Y21kLCBpc3N1ZV9mbGFncywKJiM0MzsJCQkJCSAgICAgICBpc193cml0ZSwgYnVmX2FkZHIsIGJ1Zl9sZW4pOwogCQlpZiAocmV0KQogCQkJZ290byBvdXRfZnJlZV9yZXE7CiAJCXBkdS0mZ3Q7YmlvID0gcmVxLSZndDtiaW87CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDA0OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NDkKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgU0NTSSBCU0cgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0JiMzOTtzIHRvdWNoaW5nIGBkcml2ZXJzL3Njc2kvc2NzaV9ic2cuY2AsIHNwZWNpZmljYWxseSBtZXNzaW5nIHdpdGggYHNjc2lfYnNnX3VyaW5nX2NtZGAgYW5kIGBzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXJgLiBJIHNlZSB0aGV5JiMzOTtyZSB1c2luZyBgUkVBRF9PTkNFYCB0byBzbmFwc2hvdCBzb21lIFNRRSBmaWVsZHMuIFNtYXJ0IG1vdmUg4oCTIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIGdvb2Qgd2F5IHRvIG1pdGlnYXRlIFRPQ1RPVSB2dWxuZXJhYmlsaXRpZXMsIG1ha2luZyBzdXJlIHRoZSB2YWx1ZXMgZG9uJiMzOTt0IGdldCBjaGFuZ2VkIGJldHdlZW4gd2hlbiB0aGV5JiMzOTtyZSBjaGVja2VkIGFuZCB3aGVuIHRoZXkmIzM5O3JlIHVzZWQuIFJlbW92aW5nIHRoZSBgZ2ZwX21hc2tgIGZyb20gYHNjc2lfYnNnX21hcF91c2VyX2J1ZmZlcmAgYW5kIGhhcmRjb2RpbmcgYEdGUF9LRVJORUxgIGlzIGFuIGludGVyZXN0aW5nIGNob2ljZTsgSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB3aHkgdGhleSBtYWRlIHRoYXQgZGVjaXNpb24uIFNlZW1zIGxpa2UgYSBkZWxpYmVyYXRlIHRyYWRlLW9mZi4KClRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBjb3JlIG1vZGlmaWNhdGlvbiB0byBob3cgdGhlIFNDU0kgQmxvY2sgU3Vic3lzdGVtIEdhdGV3YXkgKEJTRykgaW50ZXJhY3RzIHdpdGggaW9fdXJpbmcuIFRoaXMgZGVmaW5pdGVseSBuZWVkcyBzb21lIHNlcmlvdXMgZnV6emluZyBhdHRlbnRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlncyBhcmUgcmVxdWlyZWQgdG8gZW5hYmxlIHRoZSByZWxldmFudCBwYXJ0cyBvZiB0aGUgY29kZS4gTGV0IG1lIHF1aWNrbHkgdXNlIGBncmVwcGVyYCB0byBzZWUgaWYgSSBjYW4gcGlucG9pbnQgdGhlIGNvbmZpZyBvcHRpb25zIGFzc29jaWF0ZWQgd2l0aCBgZHJpdmVycy9zY3NpL3Njc2lfYnNnLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDA0OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Njc2lfYnNnLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Njc2kvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc2NzaS9NYWtlZmlsZT0xNjk9c2NzaV9tb2QtJChDT05GSUdfU0NTSV9ESClcdCYjNDM7PSBzY3NpX2RoLm9cbmRyaXZlcnMvc2NzaS9NYWtlZmlsZToxNzA6c2NzaV9tb2QtJChDT05GSUdfQkxLX0RFVl9CU0cpXHQmIzQzOz0gc2NzaV9ic2cub1xuZHJpdmVycy9zY3NpL01ha2VmaWxlLTE3MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwNDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTM1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyB0aGUgQmxvY2sgRGV2aWNlIFNHIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzLiBUaGUgY29uZmlnIGluIHF1ZXN0aW9uIGlzIGBCTEtfREVWX0JTR2AuIEZpcnN0IGluc3RpbmN0IGlzIHRvIHF1aWNrbHkgY2hlY2ssIGlzIHRoYXQgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzZXR0aW5nPyBQcm9iYWJseSBub3QsIHRoZXJlIGFyZSBvZnRlbiByZWxhdGVkIG9wdGlvbnMuIExldCBtZSBxdWlja2x5IHNjYW4gZm9yIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLgoKT2theSwgdGltZSB0byBkaWcgZGVlcGVyLiBJJiMzOTtsbCBuZWVkIHRvIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuIFRoZSBLY29uZmlnIGZpbGVzIGFyZSB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBsb2dpYyBsaXZlcy4gTGV0IG1lIGhlYWQgb3ZlciB0byBgZHJpdmVycy9zY3NpL0tjb25maWdgIGFuZCBzZWFyY2ggZm9yIGBCTEtfREVWX0JTR2AuIFRoYXQgc2hvdWxkIHRlbGwgbWUgdGhlIGRlcGVuZGVuY2llcywgcG90ZW50aWFsbHkgcmVsYXRlZCBvcHRpb25zLCBhbmQgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIHRoaXMgc3BlY2lmaWMgYmxvY2sgZGV2aWNlIFNHIHNldHRpbmcuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDA0OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfREVWX0JTRyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9LY29uZmlnPTQ1PWNvbmZpZyBCTEtfQ0dST1VQX1BVTlRfQklPXG4tLVxuYmxvY2svS2NvbmZpZy00Ny1cbmJsb2NrL0tjb25maWc6NDg6Y29uZmlnIEJMS19ERVZfQlNHX0NPTU1PTlxuYmxvY2svS2NvbmZpZy00OS1cdHRyaXN0YXRlXG4tLVxuYmxvY2svS2NvbmZpZz01MT1jb25maWcgQkxLX0lDUVxuLS1cbmJsb2NrL0tjb25maWctNTMtXG5ibG9jay9LY29uZmlnOjU0OmNvbmZpZyBCTEtfREVWX0JTR0xJQlxuYmxvY2svS2NvbmZpZy01NS1cdGJvb2wgXCYjMzQ7QmxvY2sgbGF5ZXIgU0cgc3VwcG9ydCB2NCBoZWxwZXIgbGliXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMDQ6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUyMAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFscmVhZHkgcHJldHR5IGZhbWlsaWFyIHdpdGggdGhlIExpbnV4IGtlcm5lbCBhbmQgaXRzIGNvbmZpZ3VyYXRpb24gc3lzdGVtOgoKKipDaGVja2luZyB0aGUgS2NvbmZpZyBmb3IgQkxLX0RFVl9CU0cqKgoKSG1tLCBzbyBgQkxLX0RFVl9CU0dgIGlzIGZsYWdnZWQgYXMgYmVpbmcgd2l0aGluIGBibG9jay9LY29uZmlnYD8gVGhhdCYjMzk7cyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIEl0IG1lYW5zIHRoZSBmZWF0dXJlIGlzIGxpa2VseSBjb250cm9sbGVkIGJ5IGEgY29uZmlndXJhdGlvbiBvcHRpb24gZGVjbGFyZWQgdGhlcmUuIExldCYjMzk7cyBpbW1lZGlhdGVseSBnbyBhbmQgKnZlcmlmeSogdGhhdCBpdCBpcyBpbmRlZWQgZGVmaW5lZCB3aXRoaW4gYGJsb2NrL0tjb25maWdgLiBUaGlzIHdpbGwgYWxsb3cgbWUgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcywgZGVmYXVsdHMsIGhlbHAgdGV4dCBhbmQgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgZGVwZW5kIG9uIG9yIHJlbGF0ZSB0byBgQkxLX0RFVl9CU0dgLiBFc3NlbnRpYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgb3B0aW9uIGZpdHMgaW50byB0aGUgbGFyZ2VyIHBpY3R1cmUgb2YgYmxvY2sgZGV2aWNlIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoZSBrZXJuZWwuIEkgY2FuIHRoZW4gdXNlIHRoYXQgaW5mb3JtYXRpb24gdG8gYWRqdXN0IGNvbmZpZ3VyYXRpb25zIGFjY29yZGluZ2x5LCB0byBkZXRlcm1pbmUgd2hhdCYjMzk7cyBhdmFpbGFibGUgYW5kIHdoYXQgc2V0dGluZ3MgYWZmZWN0IGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDA0OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfREVWX0JTRyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9LY29uZmlnPTQ1PWNvbmZpZyBCTEtfQ0dST1VQX1BVTlRfQklPXG4tLVxuYmxvY2svS2NvbmZpZy00Ny1cbmJsb2NrL0tjb25maWc6NDg6Y29uZmlnIEJMS19ERVZfQlNHX0NPTU1PTlxuYmxvY2svS2NvbmZpZy00OS1cdHRyaXN0YXRlXG4tLVxuYmxvY2svS2NvbmZpZz01MT1jb25maWcgQkxLX0lDUVxuLS1cbmJsb2NrL0tjb25maWctNTMtXG5ibG9jay9LY29uZmlnOjU0OmNvbmZpZyBCTEtfREVWX0JTR0xJQlxuYmxvY2svS2NvbmZpZy01NS1cdGJvb2wgXCYjMzQ7QmxvY2sgbGF5ZXIgU0cgc3VwcG9ydCB2NCBoZWxwZXIgbGliXCYjMzQ7XG4tLVxuZHJpdmVycy9zY3NpL0tjb25maWc9MTMxPWNvbmZpZyBDSFJfREVWX1NHXG4tLVxuZHJpdmVycy9zY3NpL0tjb25maWctMTU1LVxuZHJpdmVycy9zY3NpL0tjb25maWc6MTU2OmNvbmZpZyBCTEtfREVWX0JTR1xuZHJpdmVycy9zY3NpL0tjb25maWctMTU3LVx0Ym9vbCBcJiMzNDsvZGV2L2JzZyBzdXBwb3J0IChTRyB2NClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwNDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDAxCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIEJMS1xfREVWXF9CU0cgaW9cX3VyaW5nIEludGVncmF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIGl0IGxvb2tzIGxpa2UgdGhlIGBCTEtfREVWX0JTR2Agb3B0aW9uIGlzIGRlZmluZWQgd2l0aGluIGBkcml2ZXJzL3Njc2kvS2NvbmZpZ2AuIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBPZiBjb3Vyc2UsIHNpbmNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggU0NTSSBibG9jayBkZXZpY2VzIHVzaW5nIEJTRywgaXQmIzM5O3MgcHJldHR5IG9idmlvdXMgdGhhdCBgU0NTSWAgaXRzZWxmIG5lZWRzIHRvIGJlIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWcuIFRoYXQmIzM5O3MgYSBnaXZlbi4gQW5kIGdpdmVuIHRoYXQgd2UgYXJlIGludGVncmF0aW5nIGlvXF91cmluZyB3aXRoIEJTRywgYElPX1VSSU5HYCBzdXBwb3J0IGlzIGFsc28gYSBtdXN0LiBOb3csIHRoYXQgaXMgYSBmYWlybHkgc3RyYWlnaHRmb3J3YXJkIHJlcXVpcmVtZW50IGZvciB0aGlzIGtpbmQgb2YgaW50ZWdyYXRpb24uCgpOb3csIHRvIGdldCBkb3duIHRvIHNwZWNpZmljcywgSSBuZWVkIHRvIHNlZSB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uLiBJIHNob3VsZCBjaGVjayBgc2NzaV9ic2dfdXJpbmdfY21kYCBpbiBgZHJpdmVycy9zY3NpL3Njc2lfYnNnLmNgLiBUaGF0IGlzIHdoZXJlIHRoZSBpb1xfdXJpbmcgY29tbWFuZCBoYW5kbGluZyBmb3IgQlNHIGRldmljZSBjb21tdW5pY2F0aW9uIGlzIGxpa2VseSBoYW5kbGVkLiBUaGlzIGlzIHRoZSBjb2RlIHRoYXQgaW50ZXJlc3RzIG1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwNDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY3NpX2JzZ191cmluZ19jbWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Njc2kvc2NzaV9ic2cuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0xNi0gKi9cbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jOjE3OnN0cnVjdCBzY3NpX2JzZ191cmluZ19jbWRfcGR1IHtcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTE4LVx0c3RydWN0IGJpbyAqYmlvO1x0XHQvKiBtYXBwZWQgdXNlciBidWZmZXIsIHVubWFwIGluIHRhc2sgd29yayAqL1xuLS1cbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTIxLX07XG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYzoyMjpzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3Qgc2NzaV9ic2dfdXJpbmdfY21kX3BkdSkgXHUwMDNjPSBzaXplb2ZfZmllbGQoc3RydWN0IGlvX3VyaW5nX2NtZCwgcGR1KSk7XG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0yMy1cbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jOjI0OnN0YXRpYyBpbmxpbmUgc3RydWN0IHNjc2lfYnNnX3VyaW5nX2NtZF9wZHUgKnNjc2lfYnNnX3VyaW5nX2NtZF9wZHUoXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0yNS1cdHN0cnVjdCBpb191cmluZ19jbWQgKmlvdWNtZClcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTI2LXtcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jOjI3Olx0cmV0dXJuIGlvX3VyaW5nX2NtZF90b19wZHUoaW91Y21kLCBzdHJ1Y3Qgc2NzaV9ic2dfdXJpbmdfY21kX3BkdSk7XG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0yOC19XG4tLVxuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmM9MzE9c3RhdGljIHZvaWQgc2NzaV9ic2dfdXJpbmdfdGFza19jYihzdHJ1Y3QgaW9fdHdfcmVxIHR3X3JlcSwgaW9fdHdfdG9rZW5fdCB0dylcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0zMy1cdHN0cnVjdCBpb191cmluZ19jbWQgKmlvdWNtZCA9IGlvX3VyaW5nX2NtZF9mcm9tX3R3KHR3X3JlcSk7XG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYzozNDpcdHN0cnVjdCBzY3NpX2JzZ191cmluZ19jbWRfcGR1ICpwZHUgPSBzY3NpX2JzZ191cmluZ19jbWRfcGR1KGlvdWNtZCk7XG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0zNS1cdHN0cnVjdCByZXF1ZXN0ICpycSA9IHBkdS1cdTAwM2VyZXE7XG4tLVxuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmMtNjYtXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYzo2NzpzdGF0aWMgZW51bSBycV9lbmRfaW9fcmV0IHNjc2lfYnNnX3VyaW5nX2NtZF9kb25lKHN0cnVjdCByZXF1ZXN0ICpyZXEsXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy02OC1cdFx0XHRcdFx0XHQgIGJsa19zdGF0dXNfdCBzdGF0dXMsXG4tLVxuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmM9Nzc9c3RhdGljIGludCBzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXIoc3RydWN0IHJlcXVlc3QgKnJlcSxcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy05OS1cbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jOjEwMDpzdGF0aWMgaW50IHNjc2lfYnNnX3VyaW5nX2NtZChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IGlvX3VyaW5nX2NtZCAqaW91Y21kLFxuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmMtMTAxLVx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MsIGJvb2wgb3Blbl9mb3Jfd3JpdGUpXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0xMDIte1xuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmM6MTAzOlx0c3RydWN0IHNjc2lfYnNnX3VyaW5nX2NtZF9wZHUgKnBkdSA9IHNjc2lfYnNnX3VyaW5nX2NtZF9wZHUoaW91Y21kKTtcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTEwNC1cdGNvbnN0IHN0cnVjdCBic2dfdXJpbmdfY21kICpjbWQgPVxuLS1cbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTE3OS1cbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jOjE4MDpcdHJlcS1cdTAwM2VlbmRfaW8gPSBzY3NpX2JzZ191cmluZ19jbWRfZG9uZTtcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTE4MS1cdHJlcS1cdTAwM2VlbmRfaW9fZGF0YSA9IGlvdWNtZDtcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYz0yNzk9c3RydWN0IGJzZ19kZXZpY2UgKnNjc2lfYnNnX3JlZ2lzdGVyX3F1ZXVlKHN0cnVjdCBzY3NpX2RldmljZSAqc2Rldilcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0yODItXHRcdFx0ZGV2X25hbWUoXHUwMDI2c2Rldi1cdTAwM2VzZGV2X2dlbmRldiksIHNjc2lfYnNnX3NnX2lvX2ZuLFxuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmM6MjgzOlx0XHRcdHNjc2lfYnNnX3VyaW5nX2NtZCk7XG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0yODQtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwNDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDExCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gdGhlIFNDU0ktQmxvY2svaW9fdXJpbmcgSW50ZWdyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBzY3NpX2JzZ191cmluZ19jbWRgIGZ1bmN0aW9uLiBJdCBzZWVtcyBpdCYjMzk7cyBiZWluZyBwYXNzZWQgYWxvbmcgdG8gYGJzZ19zZXR1cF9xdWV1ZWAsIHdoaWNoIEkmIzM5O2QgYXNzdW1lIHJlc2lkZXMgaW4gYGJsb2NrL2JzZy5jYC4gTXkgcHJpbWFyeSBpbnRlcmVzdCBoZXJlLCB0aGUgY2VudHJhbCBmb2N1cywgcmV2b2x2ZXMgYXJvdW5kIHRoZSBpbnRlcmFjdGlvbiBvZiBgc2NzaV9ic2dfdXJpbmdfY21kYCBhbmQsIGltcG9ydGFudGx5LCBgc2NzaV9ic2dfbWFwX3VzZXJfYnVmZmVyYC4gVGhvc2UgYXJlIHRoZSBjcml0aWNhbCBzeW1ib2xzIHRvIGtlZXAgYW4gZXllIG9uIGFzIEkgZGlnIGludG8gdGhpcy4KCkkmIzM5O3ZlIGdvdCBhIGNvdXBsZSBvZiBrZXkgY29uZmlndXJhdGlvbiBzeW1ib2xzIHRvIGtlZXAgaW4gbWluZDogYEJMS19ERVZfQlNHYCBhbmQsIG9mIGNvdXJzZSwgYElPX1VSSU5HYC4gSnVzdCBhIHF1aWNrIGNoZWNr4oCmIEkmIzM5O2xsIHZlcmlmeSB0aGF0IGBJT19VUklOR2AgaXMgaW5kZWVkIHRoZSBjb3JyZWN0IGNvbmZpZyBuYW1lLiBXYW50IHRvIGJlIHN1cmUgSSYjMzk7bSB1c2luZyB0aGUgcmlnaHQgbGFiZWxzIGFzIEkgd29yayB0aHJvdWdoIHRoaXMuIAoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwNDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU9fVVJJTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5pdC9LY29uZmlnPTE5MDc9Y29uZmlnIEFJT1xuLS1cbmluaXQvS2NvbmZpZy0xOTE0LVxuaW5pdC9LY29uZmlnOjE5MTU6Y29uZmlnIElPX1VSSU5HXG5pbml0L0tjb25maWctMTkxNi1cdGJvb2wgXCYjMzQ7RW5hYmxlIElPIHVyaW5nIHN1cHBvcnRcJiMzNDsgaWYgRVhQRVJUXG4tLVxuaW5pdC9LY29uZmlnPTE5MjQ9Y29uZmlnIEdDT1ZfUFJPRklMRV9VUklOR1xuLS1cbmluaXQvS2NvbmZpZy0xOTM2LVxuaW5pdC9LY29uZmlnOjE5Mzc6Y29uZmlnIElPX1VSSU5HX01PQ0tfRklMRVxuaW5pdC9LY29uZmlnLTE5MzgtXHR0cmlzdGF0ZSBcJiMzNDtFbmFibGUgaW9fdXJpbmcgbW9jayBmaWxlcyAoRXhwZXJpbWVudGFsKVwmIzM0OyBpZiBFWFBFUlRcbi0tXG5pb191cmluZy9LY29uZmlnLTUtXG5pb191cmluZy9LY29uZmlnOjY6Y29uZmlnIElPX1VSSU5HX1pDUlhcbmlvX3VyaW5nL0tjb25maWctNy1cdGRlZl9ib29sIHlcbi0tXG5pb191cmluZy9LY29uZmlnLTEyLVxuaW9fdXJpbmcvS2NvbmZpZzoxMzpjb25maWcgSU9fVVJJTkdfQlBGXG5pb191cmluZy9LY29uZmlnLTE0LVx0ZGVmX2Jvb2wgeVxuLS1cbmlvX3VyaW5nL0tjb25maWctMTctXG5pb191cmluZy9LY29uZmlnOjE4OmNvbmZpZyBJT19VUklOR19CUEZfT1BTXG5pb191cmluZy9LY29uZmlnLTE5LVx0ZGVmX2Jvb2wgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwNDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDM5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZToKCioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBEYXRhIFBsYW5lKioKCkFscmlnaHQsIHRoZSBpbml0aWFsIGh1bmNoIGFib3V0IGBJT19VUklOR2AgYmVpbmcgdGhlIGtleSBzZWVtcyByaWdodC4gTXkgaW50dWl0aW9uIGlzIHNwb3Qgb24g4oCTIGl0JiMzOTtzIHRoZSBtb2Rlcm4sIGhpZ2gtcGVyZm9ybWFuY2UgYXBwcm9hY2guIEJ1dCB3YWl0LCBiZWZvcmUgSSBnZXQgdG9vIGNhcnJpZWQgYXdheSwgbGV0JiMzOTtzIHN0ZXAgYmFjayBmb3IgYSBtb21lbnQuIEkgbmVlZCB0byBlbnN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbCwgZXNwZWNpYWxseSB3aGVuIHRhbGtpbmcgYWJvdXQgZGF0YSBtb3ZlbWVudC4gV2hhdCBhYm91dCBTQ1NJPyBJdCYjMzk7cyBiZWVuIGFyb3VuZCBmb3IgYWdlcyBhbmQgc3RpbGwgcGxheXMgYSByb2xlIGluIHZhcmlvdXMgc3RvcmFnZSBzY2VuYXJpb3MuIEkgbmVlZCB0byBjb25zaWRlciB0aGF0IGxlZ2FjeSBzdXBwb3J0LgoKT2theSwgbGV0IG1lIGp1c3QgY29uZmlybSB0aGF0IGBCTEtfREVWX0JTR2AgaXMgcHJvcGVybHkgc3VwcG9ydGVkIHdoZW4gYFNDU0lgIGlzIGFsc28uIFRoYXQgYEtjb25maWdgIGVudHJ5IGluIGBkcml2ZXJzL3Njc2kvYOKApiB5ZXAsIHRoZXJlIGl0IGlzLiBMb29rcyBsaWtlIGBCTEtfREVWX0JTR2AgaXMgY29udGluZ2VudCBvbiBgU0NTSWAuIEdvb2QuIEtlZXBpbmcgYWxsIHRoZSByZWxhdGVkIGRlcGVuZGVuY2llcyBzdHJhaWdodCBpcyBoYWxmIHRoZSBiYXR0bGUuIFRoaXMgY29uZmlybXMgdGhhdCBJIGhhdmVuJiMzOTt0IGlnbm9yZWQgYSBwb3RlbnRpYWxseSBzaWduaWZpY2FudCBhc3BlY3Qgb2YgYmxvY2sgZGV2aWNlIGludGVyYWN0aW9uLCBlc3BlY2lhbGx5IGlmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggb2xkZXIgaGFyZHdhcmUgb3Igc3BlY2lmaWMgZW50ZXJwcmlzZSBzdG9yYWdlIGNvbmZpZ3VyYXRpb25zLiBTbywgdGhlIHBpY3R1cmUgaXMgbW9yZSBjb21wbGV0ZSBub3csIGFuZCBJIGNhbiBiZSBjb25maWRlbnQgaW4gbXkgYXNzZXNzbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMDQ6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJMS19ERVZfQlNHJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zY3NpL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zY3NpL0tjb25maWc9MTMxPWNvbmZpZyBDSFJfREVWX1NHXG4tLVxuZHJpdmVycy9zY3NpL0tjb25maWctMTU1LVxuZHJpdmVycy9zY3NpL0tjb25maWc6MTU2OmNvbmZpZyBCTEtfREVWX0JTR1xuZHJpdmVycy9zY3NpL0tjb25maWctMTU3LVx0Ym9vbCBcJiMzNDsvZGV2L2JzZyBzdXBwb3J0IChTRyB2NClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMDQ6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ3OAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHJlYWRpbmcgYW5kIHByb2Nlc3NpbmcgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uOgoKKipBbmFseXppbmcgdGhlIFNDU0kgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBTQ1NJIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgdGV4dCBkaXJlY3RzIG1lIHRvIGBkcml2ZXJzL3Njc2kvS2NvbmZpZ2AsIGFuZCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMTU2LiBJJiMzOTttIGFzc3VtaW5nIHRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGZvciB0aGUgU0NTSSBzdWJzeXN0ZW0gYXJlIGxpa2VseSBkZWZpbmVkLiBUaGlzIGZpbGUgaXMgcHJvYmFibHkgdGhlIGNlbnRyYWwgc291cmNlIGZvciBhbGwgb2YgdGhlIGRpZmZlcmVudCBTQ1NJIGRyaXZlcnMgYW5kIHRoZWlyIGNvbXBpbGUtdGltZSBjaG9pY2VzLiBJIGV4cGVjdCB0byBmaW5kIGRlcGVuZGVuY2llcywgZGVmYXVsdCB2YWx1ZXMsIGhlbHAgdGV4dCwgYW5kIGxpa2VseSBzb21lIGNvbmRpdGlvbmFsIGxvZ2ljIGJhc2VkIG9uIG90aGVyIHN5c3RlbSBjb25maWd1cmF0aW9ucy4gSXQgd2lsbCBiZSBpbnRlcmVzdGluZyB0byBzZWUgaG93IHRoZSBkZXZlbG9wZXJzIGhhdmUgc3RydWN0dXJlZCB0aGUgb3B0aW9ucyBhbmQgd2hpY2ggYXNwZWN0cyBhcmUgbW9zdCBwcm9taW5lbnRseSBmZWF0dXJlZC4gSG9wZWZ1bGx5LCBpdCBpcyB3ZWxsLWNvbW1lbnRlZCBzbyBJIGNhbiBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIGRlc2lnbiBjaG9pY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwNDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvc2NzaS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQ1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNDU6XHRcdCAgKFx1MDAzY2h0dHA6Ly9jZHJkYW8uc291cmNlZm9yZ2UubmV0L1x1MDAzZSkuIENkcGFyYW5vaWEgaXMgYSBoaWdoXG4gMTQ2Olx0XHQgIHF1YWxpdHkgZGlnaXRhbCByZWFkZXIgb2YgYXVkaW8gQ0RzIChcdTAwM2NodHRwOi8vd3d3LnhpcGgub3JnL3BhcmFub2lhL1x1MDAzZSkuXG4gMTQ3Olx0XHQgIEZvciBvdGhlciBkZXZpY2VzLCBpdCYjMzk7cyBwb3NzaWJsZSB0aGF0IHlvdSYjMzk7bGwgaGF2ZSB0byB3cml0ZSB0aGVcbiAxNDg6XHRcdCAgZHJpdmVyIHNvZnR3YXJlIHlvdXJzZWxmLiBQbGVhc2UgcmVhZCB0aGUgZmlsZVxuIDE0OTpcdFx0ICBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vc2NzaS9zY3NpLWdlbmVyaWMucnN0XHUwMDNlIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIDE1MDpcdFxuIDE1MTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlIGFuZCByZWFkXG4gMTUyOlx0XHQgIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9zY3NpL3Njc2kucnN0XHUwMDNlLiBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNnLlxuIDE1MzpcdFxuIDE1NDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuIDE1NTpcdFxuIDE1NjpcdGNvbmZpZyBCTEtfREVWX0JTR1xuIDE1NzpcdFx0Ym9vbCBcJiMzNDsvZGV2L2JzZyBzdXBwb3J0IChTRyB2NClcJiMzNDtcbiAxNTg6XHRcdGRlcGVuZHMgb24gU0NTSVxuIDE1OTpcdFx0ZGVmYXVsdCB5XG4gMTYwOlx0XHRoZWxwXG4gMTYxOlx0XHQgIFNheWluZyBZIGhlcmUgd2lsbCBlbmFibGUgZ2VuZXJpYyBTRyAoU0NTSSBnZW5lcmljKSB2NCBzdXBwb3J0XG4gMTYyOlx0XHQgIGZvciBhbnkgU0NTSSBkZXZpY2UuXG4gMTYzOlx0XG4gMTY0Olx0XHQgIFRoaXMgb3B0aW9uIGlzIHJlcXVpcmVkIGJ5IFVERVYgdG8gYWNjZXNzIGRldmljZSBzZXJpYWwgbnVtYmVycywgZXRjLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwNDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDUwCgkJCQkJCQlvdXRwdXQ6IDEyMgoJCQkJCQkJdGhvdWdodHM6IDE3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGlzIEtlcm5lbCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGRpcmVjdGx5IGltcGFjdHMgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gYEJMS19ERVZfQlNHYCBhbmQgYFNDU0lgLCBhbmQgaXRzIGFsc28gcmVsYXRlZCB0byBgSU9fVVJJTkdgLiBTaW5jZSB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGluIHRoZSBpb191cmluZyBpbnRlZ3JhdGlvbiB3aXRoIFNDU0kgQlNHLCBJJiMzOTttIGdvaW5nIHRvIGV4cGxpY2l0bHkgaW5jbHVkZSBgQkxLX0RFVl9CU0dgLCBgU0NTSWAsIGFuZCBgSU9fVVJJTkdgIGluIG15IGVuYWJsZSBjb25maWd1cmF0aW9ucy4gVGhhdCBmZWVscyBsaWtlIHRoZSBtb3N0IGRpcmVjdCBhbmQgYWNjdXJhdGUgYXBwcm9hY2guCgpUaGUgcHJpbWFyeSBmb2N1cyBoZXJlIGlzIG9uIGFkZHJlc3NpbmcgVGltZS1vZi1DaGVjay10by1UaW1lLW9mLVVzZSAoVE9DVE9VKSB2dWxuZXJhYmlsaXRpZXMgd2l0aGluIHRoZSBpb191cmluZyBjb21tYW5kcyB0YXJnZXRpbmcgU0NTSSBCbG9jayBTRyAoU2NhdHRlci1HYXRoZXIpIGRldmljZXMuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgZml4aW5nIHRoZXNlIHZ1bG5lcmFiaWxpdGllcyBieSBzbmFwc2hvdHRpbmcgU1FFIChTdWJtaXNzaW9uIFF1ZXVlIEVudHJ5KSBmaWVsZHMsIGFuZCB0aGV5JiMzOTtyZSBhbHNvIGFsdGVyaW5nIHRoZSB1c2VyIGJ1ZmZlciBtYXBwaW5nIGxvZ2ljLiBUaGlzIGlzIGRlZmluaXRlbHkgZnVuY3Rpb25hbCBhbmQsIGNydWNpYWxseSwgcmVhY2hhYmxlIHRocm91Z2ggaW9fdXJpbmcgY29tbWFuZHMgdGhhdCBhcmUgZGlyZWN0ZWQgYXQgU0NTSSBCU0cgZGV2aWNlcy4gSXQgbWVhbnMgSSBuZWVkIHRvIGJlIGV4dHJhIHZpZ2lsYW50IHdoZW4gcmV2aWV3aW5nIHRoaXMuCgpJIHNob3VsZCBhbHNvIGRvdWJsZS1jaGVjayB3aGV0aGVyIG90aGVyIGZ1bmN0aW9ucyBhcmUgbW9kaWZpZWQgdGhhdCBhcmUgbm90IGltbWVkaWF0ZWx5IG9idmlvdXMgZnJvbSB0aGUgZGVzY3JpcHRpb24uIEkmIzM5O20gc2VlaW5nIGNoYW5nZXMgdG8gYHNjc2lfYnNnX3VyaW5nX2NtZGAgYW5kIGBzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXJgIGluIHRoZSBkaWZmLgoKSSYjMzk7bSBzYXRpc2ZpZWQgd2l0aCB0aGlzIHJldmlldyBhbmQgd2lsbCBwcm9jZWVkIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMDQ6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfQlNHJiMzNDssCiAgICAmIzM0O1NDU0kmIzM0OywKICAgICYjMzQ7SU9fVVJJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3NpX2JzZ191cmluZ19jbWQmIzM0OywKICAgICYjMzQ7c2NzaV9ic2dfbWFwX3VzZXJfYnVmZmVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIFNDU0kgQlNHIGlvX3VyaW5nIGludGVncmF0aW9uLCBmaXhpbmcgVE9DVE9VIHZ1bG5lcmFiaWxpdGllcyBieSBzbmFwc2hvdHRpbmcgU1FFIGZpZWxkcyBhbmQgY2hhbmdpbmcgdGhlIGJ1ZmZlciBtYXBwaW5nIGxvZ2ljLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSB2aWEgaW9fdXJpbmcgY29tbWFuZHMgdG8gU0NTSSBCU0cgZGV2aWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9CU0cmIzM0OywKICAgICYjMzQ7U0NTSSYjMzQ7LAogICAgJiMzNDtJT19VUklORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Njc2lfYnNnX3VyaW5nX2NtZCYjMzQ7LAogICAgJiMzNDtzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgU0NTSSBCU0cgaW9fdXJpbmcgaW50ZWdyYXRpb24sIGZpeGluZyBUT0NUT1UgdnVsbmVyYWJpbGl0aWVzIGJ5IHNuYXBzaG90dGluZyBTUUUgZmllbGRzIGFuZCBjaGFuZ2luZyB0aGUgYnVmZmVyIG1hcHBpbmcgbG9naWMuIFRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIHZpYSBpb191cmluZyBjb21tYW5kcyB0byBTQ1NJIEJTRyBkZXZpY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjBUMDQ6MTY6MjIuNjc3OTg4OTc1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk1MDY3NjA4MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9CU0dcIixcbiAgICBcIlNDU0lcIixcbiAgICBcIklPX1VSSU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2NzaV9ic2dfdXJpbmdfY21kXCIsXG4gICAgXCJzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBTQ1NJIEJTRyBpb191cmluZyBpbnRlZ3JhdGlvbiwgZml4aW5nIFRPQ1RPVSB2dWxuZXJhYmlsaXRpZXMgYnkgc25hcHNob3R0aW5nIFNRRSBmaWVsZHMgYW5kIGNoYW5naW5nIHRoZSBidWZmZXIgbWFwcGluZyBsb2dpYy4gVGhpcyBpcyBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgdmlhIGlvX3VyaW5nIGNvbW1hbmRzIHRvIFNDU0kgQlNHIGRldmljZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDA0OjE2OjIyLjY3ODAwNDY5NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc2MzY1NzQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZGQ2OTFmYTA5MjMyMWM3NWNiODQyZjliOWRmMDFlMjg0YThhYzc0ZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAyMCAwNDoxNjoyMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYyBiL2RyaXZlcnMvc2NzaS9zY3NpX2JzZy5jXFxuaW5kZXggZTgwZGVjNTMxNzRlYWMuLmY5MGQxOWZkYmQ4ZWE2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvc2NzaS9zY3NpX2JzZy5jXFxuKysrIGIvZHJpdmVycy9zY3NpL3Njc2lfYnNnLmNcXG5AQCAtNzYsMTIgKzc2LDkgQEAgc3RhdGljIGVudW0gcnFfZW5kX2lvX3JldCBzY3NpX2JzZ191cmluZ19jbWRfZG9uZShzdHJ1Y3QgcmVxdWVzdCAqcmVxLFxcbiBcXG4gc3RhdGljIGludCBzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXIoc3RydWN0IHJlcXVlc3QgKnJlcSxcXG4gXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBpb191cmluZ19jbWQgKmlvdWNtZCxcXG4tXFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncywgZ2ZwX3QgZ2ZwX21hc2spXFxuK1xcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MsIGJvb2wgaXNfd3JpdGUsXFxuK1xcdFxcdFxcdFxcdCAgICB1NjQgYnVmX2FkZHIsIHVuc2lnbmVkIGxvbmcgYnVmX2xlbilcXG4ge1xcbi1cXHRjb25zdCBzdHJ1Y3QgYnNnX3VyaW5nX2NtZCAqY21kID0gaW9fdXJpbmdfc3FlMTI4X2NtZChpb3VjbWQtXFx1MDAzZXNxZSwgc3RydWN0IGJzZ191cmluZ19jbWQpO1xcbi1cXHRib29sIGlzX3dyaXRlID0gY21kLVxcdTAwM2Vkb3V0X3hmZXJfbGVuIFxcdTAwM2UgMDtcXG4tXFx0dTY0IGJ1Zl9hZGRyID0gaXNfd3JpdGUgPyBjbWQtXFx1MDAzZWRvdXRfeGZlcnAgOiBjbWQtXFx1MDAzZWRpbl94ZmVycDtcXG4tXFx0dW5zaWduZWQgbG9uZyBidWZfbGVuID0gaXNfd3JpdGUgPyBjbWQtXFx1MDAzZWRvdXRfeGZlcl9sZW4gOiBjbWQtXFx1MDAzZWRpbl94ZmVyX2xlbjtcXG4gXFx0c3RydWN0IGlvdl9pdGVyIGl0ZXI7XFxuIFxcdGludCByZXQ7XFxuIFxcbkBAIC05MSwxMCArODgsMTAgQEAgc3RhdGljIGludCBzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXIoc3RydWN0IHJlcXVlc3QgKnJlcSxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNml0ZXIsIGlvdWNtZCwgaXNzdWVfZmxhZ3MpO1xcbiBcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4tXFx0XFx0cmV0ID0gYmxrX3JxX21hcF91c2VyX2lvdihyZXEtXFx1MDAzZXEsIHJlcSwgTlVMTCwgXFx1MDAyNml0ZXIsIGdmcF9tYXNrKTtcXG4rXFx0XFx0cmV0ID0gYmxrX3JxX21hcF91c2VyX2lvdihyZXEtXFx1MDAzZXEsIHJlcSwgTlVMTCwgXFx1MDAyNml0ZXIsIEdGUF9LRVJORUwpO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRyZXQgPSBibGtfcnFfbWFwX3VzZXIocmVxLVxcdTAwM2VxLCByZXEsIE5VTEwsIHVwdHI2NChidWZfYWRkciksXFxuLVxcdFxcdFxcdFxcdCAgICAgIGJ1Zl9sZW4sIGdmcF9tYXNrKTtcXG4rXFx0XFx0XFx0XFx0ICAgICAgYnVmX2xlbiwgR0ZQX0tFUk5FTCk7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuQEAgLTEwNCwyMSArMTAxLDI4IEBAIHN0YXRpYyBpbnQgc2NzaV9ic2dfdXJpbmdfY21kKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgaW9fdXJpbmdfY21kICppb3VjXFxuIFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MsIGJvb2wgb3Blbl9mb3Jfd3JpdGUpXFxuIHtcXG4gXFx0c3RydWN0IHNjc2lfYnNnX3VyaW5nX2NtZF9wZHUgKnBkdSA9IHNjc2lfYnNnX3VyaW5nX2NtZF9wZHUoaW91Y21kKTtcXG4tXFx0Y29uc3Qgc3RydWN0IGJzZ191cmluZ19jbWQgKmNtZCA9IGlvX3VyaW5nX3NxZTEyOF9jbWQoaW91Y21kLVxcdTAwM2VzcWUsIHN0cnVjdCBic2dfdXJpbmdfY21kKTtcXG4rXFx0Y29uc3Qgc3RydWN0IGJzZ191cmluZ19jbWQgKmNtZCA9XFxuK1xcdFxcdGlvX3VyaW5nX3NxZTEyOF9jbWQoaW91Y21kLVxcdTAwM2VzcWUsIHN0cnVjdCBic2dfdXJpbmdfY21kKTtcXG4gXFx0c3RydWN0IHNjc2lfY21uZCAqc2NtZDtcXG4gXFx0c3RydWN0IHJlcXVlc3QgKnJlcTtcXG4gXFx0YmxrX21xX3JlcV9mbGFnc190IGJsa19mbGFncyA9IDA7XFxuLVxcdGdmcF90IGdmcF9tYXNrID0gR0ZQX0tFUk5FTDtcXG4rXFx0LyogU25hcHNob3QgU1FFIGZpZWxkcyB1c2VkIGZvciB2YWxpZGF0aW9uIGFuZCBidWZmZXIgbWFwcGluZy4gKi9cXG4rXFx0dTY0IHJlcXVlc3QgPSBSRUFEX09OQ0UoY21kLVxcdTAwM2VyZXF1ZXN0KTtcXG4rXFx0dTMyIHJlcXVlc3RfbGVuID0gUkVBRF9PTkNFKGNtZC1cXHUwMDNlcmVxdWVzdF9sZW4pO1xcbitcXHR1NjQgZG91dF94ZmVycCA9IFJFQURfT05DRShjbWQtXFx1MDAzZWRvdXRfeGZlcnApO1xcbitcXHR1MzIgZG91dF94ZmVyX2xlbiA9IFJFQURfT05DRShjbWQtXFx1MDAzZWRvdXRfeGZlcl9sZW4pO1xcbitcXHR1NjQgZGluX3hmZXJwID0gUkVBRF9PTkNFKGNtZC1cXHUwMDNlZGluX3hmZXJwKTtcXG4rXFx0dTMyIGRpbl94ZmVyX2xlbiA9IFJFQURfT05DRShjbWQtXFx1MDAzZWRpbl94ZmVyX2xlbik7XFxuIFxcdGludCByZXQ7XFxuIFxcbiBcXHRpZiAoY21kLVxcdTAwM2Vwcm90b2NvbCAhPSBCU0dfUFJPVE9DT0xfU0NTSSB8fFxcbiBcXHQgICAgY21kLVxcdTAwM2VzdWJwcm90b2NvbCAhPSBCU0dfU1VCX1BST1RPQ09MX1NDU0lfQ01EKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuLVxcdGlmICghY21kLVxcdTAwM2VyZXF1ZXN0IHx8IGNtZC1cXHUwMDNlcmVxdWVzdF9sZW4gPT0gMClcXG4rXFx0aWYgKCFyZXF1ZXN0IHx8IHJlcXVlc3RfbGVuID09IDApXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4tXFx0aWYgKGNtZC1cXHUwMDNlZG91dF94ZmVyX2xlbiBcXHUwMDI2XFx1MDAyNiBjbWQtXFx1MDAzZWRpbl94ZmVyX2xlbikge1xcbitcXHRpZiAoZG91dF94ZmVyX2xlbiBcXHUwMDI2XFx1MDAyNiBkaW5feGZlcl9sZW4pIHtcXG4gXFx0XFx0cHJfd2Fybl9vbmNlKFxcXCJCSURJIHN1cHBvcnQgaW4gYnNnIGhhcyBiZWVuIHJlbW92ZWQuXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXHR9XFxuQEAgLTEyNiwyNSArMTMwLDIzIEBAIHN0YXRpYyBpbnQgc2NzaV9ic2dfdXJpbmdfY21kKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgaW9fdXJpbmdfY21kICppb3VjXFxuIFxcdGlmIChjbWQtXFx1MDAzZWRvdXRfaW92ZWNfY291bnQgXFx1MDAzZSAwIHx8IGNtZC1cXHUwMDNlZGluX2lvdmVjX2NvdW50IFxcdTAwM2UgMClcXG4gXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXG4tXFx0aWYgKGlzc3VlX2ZsYWdzIFxcdTAwMjYgSU9fVVJJTkdfRl9OT05CTE9DSykge1xcbitcXHRpZiAoaXNzdWVfZmxhZ3MgXFx1MDAyNiBJT19VUklOR19GX05PTkJMT0NLKVxcbiBcXHRcXHRibGtfZmxhZ3MgPSBCTEtfTVFfUkVRX05PV0FJVDtcXG4tXFx0XFx0Z2ZwX21hc2sgPSBHRlBfTk9XQUlUO1xcbi1cXHR9XFxuIFxcbi1cXHRyZXEgPSBzY3NpX2FsbG9jX3JlcXVlc3QocSwgY21kLVxcdTAwM2Vkb3V0X3hmZXJfbGVuID9cXG4rXFx0cmVxID0gc2NzaV9hbGxvY19yZXF1ZXN0KHEsIGRvdXRfeGZlcl9sZW4gP1xcbiBcXHRcXHRcXHRcXHQgUkVRX09QX0RSVl9PVVQgOiBSRVFfT1BfRFJWX0lOLCBibGtfZmxhZ3MpO1xcbiBcXHRpZiAoSVNfRVJSKHJlcSkpXFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKHJlcSk7XFxuIFxcbiBcXHRzY21kID0gYmxrX21xX3JxX3RvX3BkdShyZXEpO1xcbi1cXHRpZiAoY21kLVxcdTAwM2VyZXF1ZXN0X2xlbiBcXHUwMDNlIHNpemVvZihzY21kLVxcdTAwM2VjbW5kKSkge1xcbitcXHRpZiAocmVxdWVzdF9sZW4gXFx1MDAzZSBzaXplb2Yoc2NtZC1cXHUwMDNlY21uZCkpIHtcXG4gXFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4gXFx0XFx0Z290byBvdXRfZnJlZV9yZXE7XFxuIFxcdH1cXG4tXFx0c2NtZC1cXHUwMDNlY21kX2xlbiA9IGNtZC1cXHUwMDNlcmVxdWVzdF9sZW47XFxuK1xcdHNjbWQtXFx1MDAzZWNtZF9sZW4gPSByZXF1ZXN0X2xlbjtcXG4gXFx0c2NtZC1cXHUwMDNlYWxsb3dlZCA9IFNHX0RFRkFVTFRfUkVUUklFUztcXG4gXFxuLVxcdGlmIChjb3B5X2Zyb21fdXNlcihzY21kLVxcdTAwM2VjbW5kLCB1cHRyNjQoY21kLVxcdTAwM2VyZXF1ZXN0KSwgY21kLVxcdTAwM2VyZXF1ZXN0X2xlbikpIHtcXG4rXFx0aWYgKGNvcHlfZnJvbV91c2VyKHNjbWQtXFx1MDAzZWNtbmQsIHVwdHI2NChyZXF1ZXN0KSwgcmVxdWVzdF9sZW4pKSB7XFxuIFxcdFxcdHJldCA9IC1FRkFVTFQ7XFxuIFxcdFxcdGdvdG8gb3V0X2ZyZWVfcmVxO1xcbiBcXHR9XFxuQEAgLTE1OCw4ICsxNjAsMTMgQEAgc3RhdGljIGludCBzY3NpX2JzZ191cmluZ19jbWQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBpb191cmluZ19jbWQgKmlvdWNcXG4gXFx0c2NtZC1cXHUwMDNlc2Vuc2VfbGVuID0gY21kLVxcdTAwM2VtYXhfcmVzcG9uc2VfbGVuID9cXG4gXFx0XFx0bWluKGNtZC1cXHUwMDNlbWF4X3Jlc3BvbnNlX2xlbiwgU0NTSV9TRU5TRV9CVUZGRVJTSVpFKSA6IFNDU0lfU0VOU0VfQlVGRkVSU0laRTtcXG4gXFxuLVxcdGlmIChjbWQtXFx1MDAzZWRvdXRfeGZlcl9sZW4gfHwgY21kLVxcdTAwM2VkaW5feGZlcl9sZW4pIHtcXG4tXFx0XFx0cmV0ID0gc2NzaV9ic2dfbWFwX3VzZXJfYnVmZmVyKHJlcSwgaW91Y21kLCBpc3N1ZV9mbGFncywgZ2ZwX21hc2spO1xcbitcXHRpZiAoZG91dF94ZmVyX2xlbiB8fCBkaW5feGZlcl9sZW4pIHtcXG4rXFx0XFx0Ym9vbCBpc193cml0ZSA9IGRvdXRfeGZlcl9sZW4gXFx1MDAzZSAwO1xcbitcXHRcXHR1NjQgYnVmX2FkZHIgPSBpc193cml0ZSA/IGRvdXRfeGZlcnAgOiBkaW5feGZlcnA7XFxuK1xcdFxcdHVuc2lnbmVkIGxvbmcgYnVmX2xlbiA9IGlzX3dyaXRlID8gZG91dF94ZmVyX2xlbiA6IGRpbl94ZmVyX2xlbjtcXG4rXFxuK1xcdFxcdHJldCA9IHNjc2lfYnNnX21hcF91c2VyX2J1ZmZlcihyZXEsIGlvdWNtZCwgaXNzdWVfZmxhZ3MsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICBpc193cml0ZSwgYnVmX2FkZHIsIGJ1Zl9sZW4pO1xcbiBcXHRcXHRpZiAocmV0KVxcbiBcXHRcXHRcXHRnb3RvIG91dF9mcmVlX3JlcTtcXG4gXFx0XFx0cGR1LVxcdTAwM2ViaW8gPSByZXEtXFx1MDAzZWJpbztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMDQ6MTY6MjMuMjU1NDMwODdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4OTI5MzA2OTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfQlNHXCIsXG4gICAgXCJTQ1NJXCIsXG4gICAgXCJJT19VUklOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjc2lfYnNnX3VyaW5nX2NtZFwiLFxuICAgIFwic2NzaV9ic2dfbWFwX3VzZXJfYnVmZmVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgU0NTSSBCU0cgaW9fdXJpbmcgaW50ZWdyYXRpb24sIGZpeGluZyBUT0NUT1UgdnVsbmVyYWJpbGl0aWVzIGJ5IHNuYXBzaG90dGluZyBTUUUgZmllbGRzIGFuZCBjaGFuZ2luZyB0aGUgYnVmZmVyIG1hcHBpbmcgbG9naWMuIFRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIHZpYSBpb191cmluZyBjb21tYW5kcyB0byBTQ1NJIEJTRyBkZXZpY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGRkNjkxZmEwOTIzMjFjNzVjYjg0MmY5YjlkZjAxZTI4NGE4YWM3NGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyMCAwNDoxNjoyMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zY3NpX2JzZy5jIGIvZHJpdmVycy9zY3NpL3Njc2lfYnNnLmNcbmluZGV4IGU4MGRlYzUzMTc0ZWFjLi5mOTBkMTlmZGJkOGVhNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvc2NzaS9zY3NpX2JzZy5jXG4rKysgYi9kcml2ZXJzL3Njc2kvc2NzaV9ic2cuY1xuQEAgLTc2LDEyICs3Niw5IEBAIHN0YXRpYyBlbnVtIHJxX2VuZF9pb19yZXQgc2NzaV9ic2dfdXJpbmdfY21kX2RvbmUoc3RydWN0IHJlcXVlc3QgKnJlcSxcbiBcbiBzdGF0aWMgaW50IHNjc2lfYnNnX21hcF91c2VyX2J1ZmZlcihzdHJ1Y3QgcmVxdWVzdCAqcmVxLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBpb191cmluZ19jbWQgKmlvdWNtZCxcbi1cdFx0XHRcdCAgICB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MsIGdmcF90IGdmcF9tYXNrKVxuK1x0XHRcdFx0ICAgIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncywgYm9vbCBpc193cml0ZSxcbitcdFx0XHRcdCAgICB1NjQgYnVmX2FkZHIsIHVuc2lnbmVkIGxvbmcgYnVmX2xlbilcbiB7XG4tXHRjb25zdCBzdHJ1Y3QgYnNnX3VyaW5nX2NtZCAqY21kID0gaW9fdXJpbmdfc3FlMTI4X2NtZChpb3VjbWQtXHUwMDNlc3FlLCBzdHJ1Y3QgYnNnX3VyaW5nX2NtZCk7XG4tXHRib29sIGlzX3dyaXRlID0gY21kLVx1MDAzZWRvdXRfeGZlcl9sZW4gXHUwMDNlIDA7XG4tXHR1NjQgYnVmX2FkZHIgPSBpc193cml0ZSA/IGNtZC1cdTAwM2Vkb3V0X3hmZXJwIDogY21kLVx1MDAzZWRpbl94ZmVycDtcbi1cdHVuc2lnbmVkIGxvbmcgYnVmX2xlbiA9IGlzX3dyaXRlID8gY21kLVx1MDAzZWRvdXRfeGZlcl9sZW4gOiBjbWQtXHUwMDNlZGluX3hmZXJfbGVuO1xuIFx0c3RydWN0IGlvdl9pdGVyIGl0ZXI7XG4gXHRpbnQgcmV0O1xuIFxuQEAgLTkxLDEwICs4OCwxMCBAQCBzdGF0aWMgaW50IHNjc2lfYnNnX21hcF91c2VyX2J1ZmZlcihzdHJ1Y3QgcmVxdWVzdCAqcmVxLFxuIFx0XHRcdFx0XHRcdFx1MDAyNml0ZXIsIGlvdWNtZCwgaXNzdWVfZmxhZ3MpO1xuIFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIFx0XHRcdHJldHVybiByZXQ7XG4tXHRcdHJldCA9IGJsa19ycV9tYXBfdXNlcl9pb3YocmVxLVx1MDAzZXEsIHJlcSwgTlVMTCwgXHUwMDI2aXRlciwgZ2ZwX21hc2spO1xuK1x0XHRyZXQgPSBibGtfcnFfbWFwX3VzZXJfaW92KHJlcS1cdTAwM2VxLCByZXEsIE5VTEwsIFx1MDAyNml0ZXIsIEdGUF9LRVJORUwpO1xuIFx0fSBlbHNlIHtcbiBcdFx0cmV0ID0gYmxrX3JxX21hcF91c2VyKHJlcS1cdTAwM2VxLCByZXEsIE5VTEwsIHVwdHI2NChidWZfYWRkciksXG4tXHRcdFx0XHQgICAgICBidWZfbGVuLCBnZnBfbWFzayk7XG4rXHRcdFx0XHQgICAgICBidWZfbGVuLCBHRlBfS0VSTkVMKTtcbiBcdH1cbiBcbiBcdHJldHVybiByZXQ7XG5AQCAtMTA0LDIxICsxMDEsMjggQEAgc3RhdGljIGludCBzY3NpX2JzZ191cmluZ19jbWQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBpb191cmluZ19jbWQgKmlvdWNcbiBcdFx0XHQgICAgICAgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzLCBib29sIG9wZW5fZm9yX3dyaXRlKVxuIHtcbiBcdHN0cnVjdCBzY3NpX2JzZ191cmluZ19jbWRfcGR1ICpwZHUgPSBzY3NpX2JzZ191cmluZ19jbWRfcGR1KGlvdWNtZCk7XG4tXHRjb25zdCBzdHJ1Y3QgYnNnX3VyaW5nX2NtZCAqY21kID0gaW9fdXJpbmdfc3FlMTI4X2NtZChpb3VjbWQtXHUwMDNlc3FlLCBzdHJ1Y3QgYnNnX3VyaW5nX2NtZCk7XG4rXHRjb25zdCBzdHJ1Y3QgYnNnX3VyaW5nX2NtZCAqY21kID1cbitcdFx0aW9fdXJpbmdfc3FlMTI4X2NtZChpb3VjbWQtXHUwMDNlc3FlLCBzdHJ1Y3QgYnNnX3VyaW5nX2NtZCk7XG4gXHRzdHJ1Y3Qgc2NzaV9jbW5kICpzY21kO1xuIFx0c3RydWN0IHJlcXVlc3QgKnJlcTtcbiBcdGJsa19tcV9yZXFfZmxhZ3NfdCBibGtfZmxhZ3MgPSAwO1xuLVx0Z2ZwX3QgZ2ZwX21hc2sgPSBHRlBfS0VSTkVMO1xuK1x0LyogU25hcHNob3QgU1FFIGZpZWxkcyB1c2VkIGZvciB2YWxpZGF0aW9uIGFuZCBidWZmZXIgbWFwcGluZy4gKi9cbitcdHU2NCByZXF1ZXN0ID0gUkVBRF9PTkNFKGNtZC1cdTAwM2VyZXF1ZXN0KTtcbitcdHUzMiByZXF1ZXN0X2xlbiA9IFJFQURfT05DRShjbWQtXHUwMDNlcmVxdWVzdF9sZW4pO1xuK1x0dTY0IGRvdXRfeGZlcnAgPSBSRUFEX09OQ0UoY21kLVx1MDAzZWRvdXRfeGZlcnApO1xuK1x0dTMyIGRvdXRfeGZlcl9sZW4gPSBSRUFEX09OQ0UoY21kLVx1MDAzZWRvdXRfeGZlcl9sZW4pO1xuK1x0dTY0IGRpbl94ZmVycCA9IFJFQURfT05DRShjbWQtXHUwMDNlZGluX3hmZXJwKTtcbitcdHUzMiBkaW5feGZlcl9sZW4gPSBSRUFEX09OQ0UoY21kLVx1MDAzZWRpbl94ZmVyX2xlbik7XG4gXHRpbnQgcmV0O1xuIFxuIFx0aWYgKGNtZC1cdTAwM2Vwcm90b2NvbCAhPSBCU0dfUFJPVE9DT0xfU0NTSSB8fFxuIFx0ICAgIGNtZC1cdTAwM2VzdWJwcm90b2NvbCAhPSBCU0dfU1VCX1BST1RPQ09MX1NDU0lfQ01EKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbi1cdGlmICghY21kLVx1MDAzZXJlcXVlc3QgfHwgY21kLVx1MDAzZXJlcXVlc3RfbGVuID09IDApXG4rXHRpZiAoIXJlcXVlc3QgfHwgcmVxdWVzdF9sZW4gPT0gMClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRpZiAoY21kLVx1MDAzZWRvdXRfeGZlcl9sZW4gXHUwMDI2XHUwMDI2IGNtZC1cdTAwM2VkaW5feGZlcl9sZW4pIHtcbitcdGlmIChkb3V0X3hmZXJfbGVuIFx1MDAyNlx1MDAyNiBkaW5feGZlcl9sZW4pIHtcbiBcdFx0cHJfd2Fybl9vbmNlKFwiQklESSBzdXBwb3J0IGluIGJzZyBoYXMgYmVlbiByZW1vdmVkLlxcblwiKTtcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFx0fVxuQEAgLTEyNiwyNSArMTMwLDIzIEBAIHN0YXRpYyBpbnQgc2NzaV9ic2dfdXJpbmdfY21kKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgaW9fdXJpbmdfY21kICppb3VjXG4gXHRpZiAoY21kLVx1MDAzZWRvdXRfaW92ZWNfY291bnQgXHUwMDNlIDAgfHwgY21kLVx1MDAzZWRpbl9pb3ZlY19jb3VudCBcdTAwM2UgMClcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuLVx0aWYgKGlzc3VlX2ZsYWdzIFx1MDAyNiBJT19VUklOR19GX05PTkJMT0NLKSB7XG4rXHRpZiAoaXNzdWVfZmxhZ3MgXHUwMDI2IElPX1VSSU5HX0ZfTk9OQkxPQ0spXG4gXHRcdGJsa19mbGFncyA9IEJMS19NUV9SRVFfTk9XQUlUO1xuLVx0XHRnZnBfbWFzayA9IEdGUF9OT1dBSVQ7XG4tXHR9XG4gXG4tXHRyZXEgPSBzY3NpX2FsbG9jX3JlcXVlc3QocSwgY21kLVx1MDAzZWRvdXRfeGZlcl9sZW4gP1xuK1x0cmVxID0gc2NzaV9hbGxvY19yZXF1ZXN0KHEsIGRvdXRfeGZlcl9sZW4gP1xuIFx0XHRcdFx0IFJFUV9PUF9EUlZfT1VUIDogUkVRX09QX0RSVl9JTiwgYmxrX2ZsYWdzKTtcbiBcdGlmIChJU19FUlIocmVxKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIocmVxKTtcbiBcbiBcdHNjbWQgPSBibGtfbXFfcnFfdG9fcGR1KHJlcSk7XG4tXHRpZiAoY21kLVx1MDAzZXJlcXVlc3RfbGVuIFx1MDAzZSBzaXplb2Yoc2NtZC1cdTAwM2VjbW5kKSkge1xuK1x0aWYgKHJlcXVlc3RfbGVuIFx1MDAzZSBzaXplb2Yoc2NtZC1cdTAwM2VjbW5kKSkge1xuIFx0XHRyZXQgPSAtRUlOVkFMO1xuIFx0XHRnb3RvIG91dF9mcmVlX3JlcTtcbiBcdH1cbi1cdHNjbWQtXHUwMDNlY21kX2xlbiA9IGNtZC1cdTAwM2VyZXF1ZXN0X2xlbjtcbitcdHNjbWQtXHUwMDNlY21kX2xlbiA9IHJlcXVlc3RfbGVuO1xuIFx0c2NtZC1cdTAwM2VhbGxvd2VkID0gU0dfREVGQVVMVF9SRVRSSUVTO1xuIFxuLVx0aWYgKGNvcHlfZnJvbV91c2VyKHNjbWQtXHUwMDNlY21uZCwgdXB0cjY0KGNtZC1cdTAwM2VyZXF1ZXN0KSwgY21kLVx1MDAzZXJlcXVlc3RfbGVuKSkge1xuK1x0aWYgKGNvcHlfZnJvbV91c2VyKHNjbWQtXHUwMDNlY21uZCwgdXB0cjY0KHJlcXVlc3QpLCByZXF1ZXN0X2xlbikpIHtcbiBcdFx0cmV0ID0gLUVGQVVMVDtcbiBcdFx0Z290byBvdXRfZnJlZV9yZXE7XG4gXHR9XG5AQCAtMTU4LDggKzE2MCwxMyBAQCBzdGF0aWMgaW50IHNjc2lfYnNnX3VyaW5nX2NtZChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IGlvX3VyaW5nX2NtZCAqaW91Y1xuIFx0c2NtZC1cdTAwM2VzZW5zZV9sZW4gPSBjbWQtXHUwMDNlbWF4X3Jlc3BvbnNlX2xlbiA/XG4gXHRcdG1pbihjbWQtXHUwMDNlbWF4X3Jlc3BvbnNlX2xlbiwgU0NTSV9TRU5TRV9CVUZGRVJTSVpFKSA6IFNDU0lfU0VOU0VfQlVGRkVSU0laRTtcbiBcbi1cdGlmIChjbWQtXHUwMDNlZG91dF94ZmVyX2xlbiB8fCBjbWQtXHUwMDNlZGluX3hmZXJfbGVuKSB7XG4tXHRcdHJldCA9IHNjc2lfYnNnX21hcF91c2VyX2J1ZmZlcihyZXEsIGlvdWNtZCwgaXNzdWVfZmxhZ3MsIGdmcF9tYXNrKTtcbitcdGlmIChkb3V0X3hmZXJfbGVuIHx8IGRpbl94ZmVyX2xlbikge1xuK1x0XHRib29sIGlzX3dyaXRlID0gZG91dF94ZmVyX2xlbiBcdTAwM2UgMDtcbitcdFx0dTY0IGJ1Zl9hZGRyID0gaXNfd3JpdGUgPyBkb3V0X3hmZXJwIDogZGluX3hmZXJwO1xuK1x0XHR1bnNpZ25lZCBsb25nIGJ1Zl9sZW4gPSBpc193cml0ZSA/IGRvdXRfeGZlcl9sZW4gOiBkaW5feGZlcl9sZW47XG4rXG4rXHRcdHJldCA9IHNjc2lfYnNnX21hcF91c2VyX2J1ZmZlcihyZXEsIGlvdWNtZCwgaXNzdWVfZmxhZ3MsXG4rXHRcdFx0XHRcdCAgICAgICBpc193cml0ZSwgYnVmX2FkZHIsIGJ1Zl9sZW4pO1xuIFx0XHRpZiAocmV0KVxuIFx0XHRcdGdvdG8gb3V0X2ZyZWVfcmVxO1xuIFx0XHRwZHUtXHUwMDNlYmlvID0gcmVxLVx1MDAzZWJpbztcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDA0OjE2OjIzLjI1NTQ2MDg2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUxMzI1MDI0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBTQ1NJIEJTRyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0J3MgdG91Y2hpbmcgYGRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jYCwgc3BlY2lmaWNhbGx5IG1lc3Npbmcgd2l0aCBgc2NzaV9ic2dfdXJpbmdfY21kYCBhbmQgYHNjc2lfYnNnX21hcF91c2VyX2J1ZmZlcmAuIEkgc2VlIHRoZXkncmUgdXNpbmcgYFJFQURfT05DRWAgdG8gc25hcHNob3Qgc29tZSBTUUUgZmllbGRzLiBTbWFydCBtb3ZlIOKAkyB0aGF0J3MgZGVmaW5pdGVseSBhIGdvb2Qgd2F5IHRvIG1pdGlnYXRlIFRPQ1RPVSB2dWxuZXJhYmlsaXRpZXMsIG1ha2luZyBzdXJlIHRoZSB2YWx1ZXMgZG9uJ3QgZ2V0IGNoYW5nZWQgYmV0d2VlbiB3aGVuIHRoZXkncmUgY2hlY2tlZCBhbmQgd2hlbiB0aGV5J3JlIHVzZWQuIFJlbW92aW5nIHRoZSBgZ2ZwX21hc2tgIGZyb20gYHNjc2lfYnNnX21hcF91c2VyX2J1ZmZlcmAgYW5kIGhhcmRjb2RpbmcgYEdGUF9LRVJORUxgIGlzIGFuIGludGVyZXN0aW5nIGNob2ljZTsgSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHdoeSB0aGV5IG1hZGUgdGhhdCBkZWNpc2lvbi4gU2VlbXMgbGlrZSBhIGRlbGliZXJhdGUgdHJhZGUtb2ZmLlxuXG5UaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgY29yZSBtb2RpZmljYXRpb24gdG8gaG93IHRoZSBTQ1NJIEJsb2NrIFN1YnN5c3RlbSBHYXRld2F5IChCU0cpIGludGVyYWN0cyB3aXRoIGlvX3VyaW5nLiBUaGlzIGRlZmluaXRlbHkgbmVlZHMgc29tZSBzZXJpb3VzIGZ1enppbmcgYXR0ZW50aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZ3MgYXJlIHJlcXVpcmVkIHRvIGVuYWJsZSB0aGUgcmVsZXZhbnQgcGFydHMgb2YgdGhlIGNvZGUuIExldCBtZSBxdWlja2x5IHVzZSBgZ3JlcHBlcmAgdG8gc2VlIGlmIEkgY2FuIHBpbnBvaW50IHRoZSBjb25maWcgb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggYGRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU0OSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDA0OjE2OjI3Ljc2ODcxMzc1MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTk2NjE5OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2NzaV9ic2cub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Njc2kvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvc2NzaS9NYWtlZmlsZT0xNjk9c2NzaV9tb2QtJChDT05GSUdfU0NTSV9ESClcXHQrPSBzY3NpX2RoLm9cXG5kcml2ZXJzL3Njc2kvTWFrZWZpbGU6MTcwOnNjc2lfbW9kLSQoQ09ORklHX0JMS19ERVZfQlNHKVxcdCs9IHNjc2lfYnNnLm9cXG5kcml2ZXJzL3Njc2kvTWFrZWZpbGUtMTcxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwNDoxNjoyNy45ODgzODY0NThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTA5MTg3Njg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBCbG9jayBEZXZpY2UgU0cgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIEknbSBkaXZpbmcgaW50byB0aGlzLiBUaGUgY29uZmlnIGluIHF1ZXN0aW9uIGlzIGBCTEtfREVWX0JTR2AuIEZpcnN0IGluc3RpbmN0IGlzIHRvIHF1aWNrbHkgY2hlY2ssIGlzIHRoYXQgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzZXR0aW5nPyBQcm9iYWJseSBub3QsIHRoZXJlIGFyZSBvZnRlbiByZWxhdGVkIG9wdGlvbnMuIExldCBtZSBxdWlja2x5IHNjYW4gZm9yIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBkZWVwZXIuIEknbGwgbmVlZCB0byBnbyBkaXJlY3RseSB0byB0aGUgc291cmNlLiBUaGUgS2NvbmZpZyBmaWxlcyBhcmUgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gbG9naWMgbGl2ZXMuIExldCBtZSBoZWFkIG92ZXIgdG8gYGRyaXZlcnMvc2NzaS9LY29uZmlnYCBhbmQgc2VhcmNoIGZvciBgQkxLX0RFVl9CU0dgLiBUaGF0IHNob3VsZCB0ZWxsIG1lIHRoZSBkZXBlbmRlbmNpZXMsIHBvdGVudGlhbGx5IHJlbGF0ZWQgb3B0aW9ucywgYW5kIHdoYXQncyBnb2luZyBvbiB3aXRoIHRoaXMgc3BlY2lmaWMgYmxvY2sgZGV2aWNlIFNHIHNldHRpbmcuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTM1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMDQ6MTY6MzAuODk3NTc2NDU1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDYzODAzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9CU0dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL0tjb25maWc9NDU9Y29uZmlnIEJMS19DR1JPVVBfUFVOVF9CSU9cXG4tLVxcbmJsb2NrL0tjb25maWctNDctXFxuYmxvY2svS2NvbmZpZzo0ODpjb25maWcgQkxLX0RFVl9CU0dfQ09NTU9OXFxuYmxvY2svS2NvbmZpZy00OS1cXHR0cmlzdGF0ZVxcbi0tXFxuYmxvY2svS2NvbmZpZz01MT1jb25maWcgQkxLX0lDUVxcbi0tXFxuYmxvY2svS2NvbmZpZy01My1cXG5ibG9jay9LY29uZmlnOjU0OmNvbmZpZyBCTEtfREVWX0JTR0xJQlxcbmJsb2NrL0tjb25maWctNTUtXFx0Ym9vbCBcXFwiQmxvY2sgbGF5ZXIgU0cgc3VwcG9ydCB2NCBoZWxwZXIgbGliXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwNDoxNjozMS4wMjIyMjMyOThaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODE2OTk3NTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbHJlYWR5IHByZXR0eSBmYW1pbGlhciB3aXRoIHRoZSBMaW51eCBrZXJuZWwgYW5kIGl0cyBjb25maWd1cmF0aW9uIHN5c3RlbTpcblxuKipDaGVja2luZyB0aGUgS2NvbmZpZyBmb3IgQkxLX0RFVl9CU0cqKlxuXG5IbW0sIHNvIGBCTEtfREVWX0JTR2AgaXMgZmxhZ2dlZCBhcyBiZWluZyB3aXRoaW4gYGJsb2NrL0tjb25maWdgPyBUaGF0J3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LiBJdCBtZWFucyB0aGUgZmVhdHVyZSBpcyBsaWtlbHkgY29udHJvbGxlZCBieSBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGRlY2xhcmVkIHRoZXJlLiBMZXQncyBpbW1lZGlhdGVseSBnbyBhbmQgKnZlcmlmeSogdGhhdCBpdCBpcyBpbmRlZWQgZGVmaW5lZCB3aXRoaW4gYGJsb2NrL0tjb25maWdgLiBUaGlzIHdpbGwgYWxsb3cgbWUgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcywgZGVmYXVsdHMsIGhlbHAgdGV4dCBhbmQgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgZGVwZW5kIG9uIG9yIHJlbGF0ZSB0byBgQkxLX0RFVl9CU0dgLiBFc3NlbnRpYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgb3B0aW9uIGZpdHMgaW50byB0aGUgbGFyZ2VyIHBpY3R1cmUgb2YgYmxvY2sgZGV2aWNlIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoZSBrZXJuZWwuIEkgY2FuIHRoZW4gdXNlIHRoYXQgaW5mb3JtYXRpb24gdG8gYWRqdXN0IGNvbmZpZ3VyYXRpb25zIGFjY29yZGluZ2x5LCB0byBkZXRlcm1pbmUgd2hhdCdzIGF2YWlsYWJsZSBhbmQgd2hhdCBzZXR0aW5ncyBhZmZlY3QgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MjAsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwNDoxNjozMy44MzkyMjMwNTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI0NzAyNjc3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9CU0dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL0tjb25maWc9NDU9Y29uZmlnIEJMS19DR1JPVVBfUFVOVF9CSU9cXG4tLVxcbmJsb2NrL0tjb25maWctNDctXFxuYmxvY2svS2NvbmZpZzo0ODpjb25maWcgQkxLX0RFVl9CU0dfQ09NTU9OXFxuYmxvY2svS2NvbmZpZy00OS1cXHR0cmlzdGF0ZVxcbi0tXFxuYmxvY2svS2NvbmZpZz01MT1jb25maWcgQkxLX0lDUVxcbi0tXFxuYmxvY2svS2NvbmZpZy01My1cXG5ibG9jay9LY29uZmlnOjU0OmNvbmZpZyBCTEtfREVWX0JTR0xJQlxcbmJsb2NrL0tjb25maWctNTUtXFx0Ym9vbCBcXFwiQmxvY2sgbGF5ZXIgU0cgc3VwcG9ydCB2NCBoZWxwZXIgbGliXFxcIlxcbi0tXFxuZHJpdmVycy9zY3NpL0tjb25maWc9MTMxPWNvbmZpZyBDSFJfREVWX1NHXFxuLS1cXG5kcml2ZXJzL3Njc2kvS2NvbmZpZy0xNTUtXFxuZHJpdmVycy9zY3NpL0tjb25maWc6MTU2OmNvbmZpZyBCTEtfREVWX0JTR1xcbmRyaXZlcnMvc2NzaS9LY29uZmlnLTE1Ny1cXHRib29sIFxcXCIvZGV2L2JzZyBzdXBwb3J0IChTRyB2NClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDA0OjE2OjM4LjA4NjI1NDg1NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTA5NDYyNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktlcm5lbCBDb25maWd1cmF0aW9uIGZvciBCTEtcXF9ERVZcXF9CU0cgaW9cXF91cmluZyBJbnRlZ3JhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIHNlZSwgaXQgbG9va3MgbGlrZSB0aGUgYEJMS19ERVZfQlNHYCBvcHRpb24gaXMgZGVmaW5lZCB3aXRoaW4gYGRyaXZlcnMvc2NzaS9LY29uZmlnYC4gVGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gT2YgY291cnNlLCBzaW5jZSB3ZSdyZSBkZWFsaW5nIHdpdGggU0NTSSBibG9jayBkZXZpY2VzIHVzaW5nIEJTRywgaXQncyBwcmV0dHkgb2J2aW91cyB0aGF0IGBTQ1NJYCBpdHNlbGYgbmVlZHMgdG8gYmUgZW5hYmxlZCBpbiB0aGUga2VybmVsIGNvbmZpZy4gVGhhdCdzIGEgZ2l2ZW4uIEFuZCBnaXZlbiB0aGF0IHdlIGFyZSBpbnRlZ3JhdGluZyBpb1xcX3VyaW5nIHdpdGggQlNHLCBgSU9fVVJJTkdgIHN1cHBvcnQgaXMgYWxzbyBhIG11c3QuIE5vdywgdGhhdCBpcyBhIGZhaXJseSBzdHJhaWdodGZvcndhcmQgcmVxdWlyZW1lbnQgZm9yIHRoaXMga2luZCBvZiBpbnRlZ3JhdGlvbi5cblxuTm93LCB0byBnZXQgZG93biB0byBzcGVjaWZpY3MsIEkgbmVlZCB0byBzZWUgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbi4gSSBzaG91bGQgY2hlY2sgYHNjc2lfYnNnX3VyaW5nX2NtZGAgaW4gYGRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jYC4gVGhhdCBpcyB3aGVyZSB0aGUgaW9cXF91cmluZyBjb21tYW5kIGhhbmRsaW5nIGZvciBCU0cgZGV2aWNlIGNvbW11bmljYXRpb24gaXMgbGlrZWx5IGhhbmRsZWQuIFRoaXMgaXMgdGhlIGNvZGUgdGhhdCBpbnRlcmVzdHMgbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMDEsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwNDoxNjo0MS40NzcyMDM0ODRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjA4MDk5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3NpX2JzZ191cmluZ19jbWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zY3NpL3Njc2lfYnNnLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zY3NpL3Njc2lfYnNnLmMtMTYtICovXFxuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmM6MTc6c3RydWN0IHNjc2lfYnNnX3VyaW5nX2NtZF9wZHUge1xcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTE4LVxcdHN0cnVjdCBiaW8gKmJpbztcXHRcXHQvKiBtYXBwZWQgdXNlciBidWZmZXIsIHVubWFwIGluIHRhc2sgd29yayAqL1xcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmMtMjEtfTtcXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYzoyMjpzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3Qgc2NzaV9ic2dfdXJpbmdfY21kX3BkdSkgXFx1MDAzYz0gc2l6ZW9mX2ZpZWxkKHN0cnVjdCBpb191cmluZ19jbWQsIHBkdSkpO1xcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTIzLVxcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jOjI0OnN0YXRpYyBpbmxpbmUgc3RydWN0IHNjc2lfYnNnX3VyaW5nX2NtZF9wZHUgKnNjc2lfYnNnX3VyaW5nX2NtZF9wZHUoXFxuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmMtMjUtXFx0c3RydWN0IGlvX3VyaW5nX2NtZCAqaW91Y21kKVxcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTI2LXtcXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYzoyNzpcXHRyZXR1cm4gaW9fdXJpbmdfY21kX3RvX3BkdShpb3VjbWQsIHN0cnVjdCBzY3NpX2JzZ191cmluZ19jbWRfcGR1KTtcXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0yOC19XFxuLS1cXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYz0zMT1zdGF0aWMgdm9pZCBzY3NpX2JzZ191cmluZ190YXNrX2NiKHN0cnVjdCBpb190d19yZXEgdHdfcmVxLCBpb190d190b2tlbl90IHR3KVxcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmMtMzMtXFx0c3RydWN0IGlvX3VyaW5nX2NtZCAqaW91Y21kID0gaW9fdXJpbmdfY21kX2Zyb21fdHcodHdfcmVxKTtcXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYzozNDpcXHRzdHJ1Y3Qgc2NzaV9ic2dfdXJpbmdfY21kX3BkdSAqcGR1ID0gc2NzaV9ic2dfdXJpbmdfY21kX3BkdShpb3VjbWQpO1xcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTM1LVxcdHN0cnVjdCByZXF1ZXN0ICpycSA9IHBkdS1cXHUwMDNlcmVxO1xcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmMtNjYtXFxuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmM6Njc6c3RhdGljIGVudW0gcnFfZW5kX2lvX3JldCBzY3NpX2JzZ191cmluZ19jbWRfZG9uZShzdHJ1Y3QgcmVxdWVzdCAqcmVxLFxcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTY4LVxcdFxcdFxcdFxcdFxcdFxcdCAgYmxrX3N0YXR1c190IHN0YXR1cyxcXG4tLVxcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jPTc3PXN0YXRpYyBpbnQgc2NzaV9ic2dfbWFwX3VzZXJfYnVmZmVyKHN0cnVjdCByZXF1ZXN0ICpyZXEsXFxuLS1cXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy05OS1cXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYzoxMDA6c3RhdGljIGludCBzY3NpX2JzZ191cmluZ19jbWQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBpb191cmluZ19jbWQgKmlvdWNtZCxcXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0xMDEtXFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncywgYm9vbCBvcGVuX2Zvcl93cml0ZSlcXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0xMDIte1xcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jOjEwMzpcXHRzdHJ1Y3Qgc2NzaV9ic2dfdXJpbmdfY21kX3BkdSAqcGR1ID0gc2NzaV9ic2dfdXJpbmdfY21kX3BkdShpb3VjbWQpO1xcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTEwNC1cXHRjb25zdCBzdHJ1Y3QgYnNnX3VyaW5nX2NtZCAqY21kID1cXG4tLVxcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTE3OS1cXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYzoxODA6XFx0cmVxLVxcdTAwM2VlbmRfaW8gPSBzY3NpX2JzZ191cmluZ19jbWRfZG9uZTtcXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0xODEtXFx0cmVxLVxcdTAwM2VlbmRfaW9fZGF0YSA9IGlvdWNtZDtcXG4tLVxcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jPTI3OT1zdHJ1Y3QgYnNnX2RldmljZSAqc2NzaV9ic2dfcmVnaXN0ZXJfcXVldWUoc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2KVxcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmMtMjgyLVxcdFxcdFxcdGRldl9uYW1lKFxcdTAwMjZzZGV2LVxcdTAwM2VzZGV2X2dlbmRldiksIHNjc2lfYnNnX3NnX2lvX2ZuLFxcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jOjI4MzpcXHRcXHRcXHRzY3NpX2JzZ191cmluZ19jbWQpO1xcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTI4NC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDA0OjE2OjQxLjYzMzI5MTM3NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjM4NzA5OTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gdGhlIFNDU0ktQmxvY2svaW9fdXJpbmcgSW50ZWdyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgc2NzaV9ic2dfdXJpbmdfY21kYCBmdW5jdGlvbi4gSXQgc2VlbXMgaXQncyBiZWluZyBwYXNzZWQgYWxvbmcgdG8gYGJzZ19zZXR1cF9xdWV1ZWAsIHdoaWNoIEknZCBhc3N1bWUgcmVzaWRlcyBpbiBgYmxvY2svYnNnLmNgLiBNeSBwcmltYXJ5IGludGVyZXN0IGhlcmUsIHRoZSBjZW50cmFsIGZvY3VzLCByZXZvbHZlcyBhcm91bmQgdGhlIGludGVyYWN0aW9uIG9mIGBzY3NpX2JzZ191cmluZ19jbWRgIGFuZCwgaW1wb3J0YW50bHksIGBzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXJgLiBUaG9zZSBhcmUgdGhlIGNyaXRpY2FsIHN5bWJvbHMgdG8ga2VlcCBhbiBleWUgb24gYXMgSSBkaWcgaW50byB0aGlzLlxuXG5JJ3ZlIGdvdCBhIGNvdXBsZSBvZiBrZXkgY29uZmlndXJhdGlvbiBzeW1ib2xzIHRvIGtlZXAgaW4gbWluZDogYEJMS19ERVZfQlNHYCBhbmQsIG9mIGNvdXJzZSwgYElPX1VSSU5HYC4gSnVzdCBhIHF1aWNrIGNoZWNr4oCmIEknbGwgdmVyaWZ5IHRoYXQgYElPX1VSSU5HYCBpcyBpbmRlZWQgdGhlIGNvcnJlY3QgY29uZmlnIG5hbWUuIFdhbnQgdG8gYmUgc3VyZSBJJ20gdXNpbmcgdGhlIHJpZ2h0IGxhYmVscyBhcyBJIHdvcmsgdGhyb3VnaCB0aGlzLiBcblxuXG4iLCJJbnB1dFRva2VucyI6NjQxMSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwNDoxNjo0NS4yNzIwMDM1NThaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMDA2MDg3MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElPX1VSSU5HXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbml0L0tjb25maWc9MTkwNz1jb25maWcgQUlPXFxuLS1cXG5pbml0L0tjb25maWctMTkxNC1cXG5pbml0L0tjb25maWc6MTkxNTpjb25maWcgSU9fVVJJTkdcXG5pbml0L0tjb25maWctMTkxNi1cXHRib29sIFxcXCJFbmFibGUgSU8gdXJpbmcgc3VwcG9ydFxcXCIgaWYgRVhQRVJUXFxuLS1cXG5pbml0L0tjb25maWc9MTkyND1jb25maWcgR0NPVl9QUk9GSUxFX1VSSU5HXFxuLS1cXG5pbml0L0tjb25maWctMTkzNi1cXG5pbml0L0tjb25maWc6MTkzNzpjb25maWcgSU9fVVJJTkdfTU9DS19GSUxFXFxuaW5pdC9LY29uZmlnLTE5MzgtXFx0dHJpc3RhdGUgXFxcIkVuYWJsZSBpb191cmluZyBtb2NrIGZpbGVzIChFeHBlcmltZW50YWwpXFxcIiBpZiBFWFBFUlRcXG4tLVxcbmlvX3VyaW5nL0tjb25maWctNS1cXG5pb191cmluZy9LY29uZmlnOjY6Y29uZmlnIElPX1VSSU5HX1pDUlhcXG5pb191cmluZy9LY29uZmlnLTctXFx0ZGVmX2Jvb2wgeVxcbi0tXFxuaW9fdXJpbmcvS2NvbmZpZy0xMi1cXG5pb191cmluZy9LY29uZmlnOjEzOmNvbmZpZyBJT19VUklOR19CUEZcXG5pb191cmluZy9LY29uZmlnLTE0LVxcdGRlZl9ib29sIHlcXG4tLVxcbmlvX3VyaW5nL0tjb25maWctMTctXFxuaW9fdXJpbmcvS2NvbmZpZzoxODpjb25maWcgSU9fVVJJTkdfQlBGX09QU1xcbmlvX3VyaW5nL0tjb25maWctMTktXFx0ZGVmX2Jvb2wgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwNDoxNjo1MC4zNzI2MTc0MDVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY4ODI3NDQ3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBEYXRhIFBsYW5lKipcblxuQWxyaWdodCwgdGhlIGluaXRpYWwgaHVuY2ggYWJvdXQgYElPX1VSSU5HYCBiZWluZyB0aGUga2V5IHNlZW1zIHJpZ2h0LiBNeSBpbnR1aXRpb24gaXMgc3BvdCBvbiDigJMgaXQncyB0aGUgbW9kZXJuLCBoaWdoLXBlcmZvcm1hbmNlIGFwcHJvYWNoLiBCdXQgd2FpdCwgYmVmb3JlIEkgZ2V0IHRvbyBjYXJyaWVkIGF3YXksIGxldCdzIHN0ZXAgYmFjayBmb3IgYSBtb21lbnQuIEkgbmVlZCB0byBlbnN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsLCBlc3BlY2lhbGx5IHdoZW4gdGFsa2luZyBhYm91dCBkYXRhIG1vdmVtZW50LiBXaGF0IGFib3V0IFNDU0k/IEl0J3MgYmVlbiBhcm91bmQgZm9yIGFnZXMgYW5kIHN0aWxsIHBsYXlzIGEgcm9sZSBpbiB2YXJpb3VzIHN0b3JhZ2Ugc2NlbmFyaW9zLiBJIG5lZWQgdG8gY29uc2lkZXIgdGhhdCBsZWdhY3kgc3VwcG9ydC5cblxuT2theSwgbGV0IG1lIGp1c3QgY29uZmlybSB0aGF0IGBCTEtfREVWX0JTR2AgaXMgcHJvcGVybHkgc3VwcG9ydGVkIHdoZW4gYFNDU0lgIGlzIGFsc28uIFRoYXQgYEtjb25maWdgIGVudHJ5IGluIGBkcml2ZXJzL3Njc2kvYOKApiB5ZXAsIHRoZXJlIGl0IGlzLiBMb29rcyBsaWtlIGBCTEtfREVWX0JTR2AgaXMgY29udGluZ2VudCBvbiBgU0NTSWAuIEdvb2QuIEtlZXBpbmcgYWxsIHRoZSByZWxhdGVkIGRlcGVuZGVuY2llcyBzdHJhaWdodCBpcyBoYWxmIHRoZSBiYXR0bGUuIFRoaXMgY29uZmlybXMgdGhhdCBJIGhhdmVuJ3QgaWdub3JlZCBhIHBvdGVudGlhbGx5IHNpZ25pZmljYW50IGFzcGVjdCBvZiBibG9jayBkZXZpY2UgaW50ZXJhY3Rpb24sIGVzcGVjaWFsbHkgaWYgd2UncmUgZGVhbGluZyB3aXRoIG9sZGVyIGhhcmR3YXJlIG9yIHNwZWNpZmljIGVudGVycHJpc2Ugc3RvcmFnZSBjb25maWd1cmF0aW9ucy4gU28sIHRoZSBwaWN0dXJlIGlzIG1vcmUgY29tcGxldGUgbm93LCBhbmQgSSBjYW4gYmUgY29uZmlkZW50IGluIG15IGFzc2Vzc21lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMzksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwNDoxNjo1NC4wNjA4OTQ2MjVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDk0NzYyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9CU0dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zY3NpL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zY3NpL0tjb25maWc9MTMxPWNvbmZpZyBDSFJfREVWX1NHXFxuLS1cXG5kcml2ZXJzL3Njc2kvS2NvbmZpZy0xNTUtXFxuZHJpdmVycy9zY3NpL0tjb25maWc6MTU2OmNvbmZpZyBCTEtfREVWX0JTR1xcbmRyaXZlcnMvc2NzaS9LY29uZmlnLTE1Ny1cXHRib29sIFxcXCIvZGV2L2JzZyBzdXBwb3J0IChTRyB2NClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDA0OjE2OjU0LjI0NTg0ODQ1NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTAzNzAxODI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSByZWFkaW5nIGFuZCBwcm9jZXNzaW5nIHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvbjpcblxuKipBbmFseXppbmcgdGhlIFNDU0kgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIFNDU0kgY29uZmlndXJhdGlvbiBvcHRpb25zLiBMZXQncyBzZWUuLi4gdGhlIHRleHQgZGlyZWN0cyBtZSB0byBgZHJpdmVycy9zY3NpL0tjb25maWdgLCBhbmQgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDE1Ni4gSSdtIGFzc3VtaW5nIHRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGZvciB0aGUgU0NTSSBzdWJzeXN0ZW0gYXJlIGxpa2VseSBkZWZpbmVkLiBUaGlzIGZpbGUgaXMgcHJvYmFibHkgdGhlIGNlbnRyYWwgc291cmNlIGZvciBhbGwgb2YgdGhlIGRpZmZlcmVudCBTQ1NJIGRyaXZlcnMgYW5kIHRoZWlyIGNvbXBpbGUtdGltZSBjaG9pY2VzLiBJIGV4cGVjdCB0byBmaW5kIGRlcGVuZGVuY2llcywgZGVmYXVsdCB2YWx1ZXMsIGhlbHAgdGV4dCwgYW5kIGxpa2VseSBzb21lIGNvbmRpdGlvbmFsIGxvZ2ljIGJhc2VkIG9uIG90aGVyIHN5c3RlbSBjb25maWd1cmF0aW9ucy4gSXQgd2lsbCBiZSBpbnRlcmVzdGluZyB0byBzZWUgaG93IHRoZSBkZXZlbG9wZXJzIGhhdmUgc3RydWN0dXJlZCB0aGUgb3B0aW9ucyBhbmQgd2hpY2ggYXNwZWN0cyBhcmUgbW9zdCBwcm9taW5lbnRseSBmZWF0dXJlZC4gSG9wZWZ1bGx5LCBpdCBpcyB3ZWxsLWNvbW1lbnRlZCBzbyBJIGNhbiBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIGRlc2lnbiBjaG9pY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDc4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMDQ6MTY6NTcuMTQ5NTUyNzYxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3Njc2kvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNDUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNDU6XFx0XFx0ICAoXFx1MDAzY2h0dHA6Ly9jZHJkYW8uc291cmNlZm9yZ2UubmV0L1xcdTAwM2UpLiBDZHBhcmFub2lhIGlzIGEgaGlnaFxcbiAxNDY6XFx0XFx0ICBxdWFsaXR5IGRpZ2l0YWwgcmVhZGVyIG9mIGF1ZGlvIENEcyAoXFx1MDAzY2h0dHA6Ly93d3cueGlwaC5vcmcvcGFyYW5vaWEvXFx1MDAzZSkuXFxuIDE0NzpcXHRcXHQgIEZvciBvdGhlciBkZXZpY2VzLCBpdCdzIHBvc3NpYmxlIHRoYXQgeW91J2xsIGhhdmUgdG8gd3JpdGUgdGhlXFxuIDE0ODpcXHRcXHQgIGRyaXZlciBzb2Z0d2FyZSB5b3Vyc2VsZi4gUGxlYXNlIHJlYWQgdGhlIGZpbGVcXG4gMTQ5OlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9zY3NpL3Njc2ktZ2VuZXJpYy5yc3RcXHUwMDNlIGZvciBtb3JlIGluZm9ybWF0aW9uLlxcbiAxNTA6XFx0XFxuIDE1MTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUgYW5kIHJlYWRcXG4gMTUyOlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9zY3NpL3Njc2kucnN0XFx1MDAzZS4gVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzZy5cXG4gMTUzOlxcdFxcbiAxNTQ6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAxNTU6XFx0XFxuIDE1NjpcXHRjb25maWcgQkxLX0RFVl9CU0dcXG4gMTU3OlxcdFxcdGJvb2wgXFxcIi9kZXYvYnNnIHN1cHBvcnQgKFNHIHY0KVxcXCJcXG4gMTU4OlxcdFxcdGRlcGVuZHMgb24gU0NTSVxcbiAxNTk6XFx0XFx0ZGVmYXVsdCB5XFxuIDE2MDpcXHRcXHRoZWxwXFxuIDE2MTpcXHRcXHQgIFNheWluZyBZIGhlcmUgd2lsbCBlbmFibGUgZ2VuZXJpYyBTRyAoU0NTSSBnZW5lcmljKSB2NCBzdXBwb3J0XFxuIDE2MjpcXHRcXHQgIGZvciBhbnkgU0NTSSBkZXZpY2UuXFxuIDE2MzpcXHRcXG4gMTY0OlxcdFxcdCAgVGhpcyBvcHRpb24gaXMgcmVxdWlyZWQgYnkgVURFViB0byBhY2Nlc3MgZGV2aWNlIHNlcmlhbCBudW1iZXJzLCBldGMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDA0OjE2OjU3LjE0OTY4MDE5MVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODM5NTUzODcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoaXMgS2VybmVsIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBkaXJlY3RseSBpbXBhY3RzIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGBCTEtfREVWX0JTR2AgYW5kIGBTQ1NJYCwgYW5kIGl0cyBhbHNvIHJlbGF0ZWQgdG8gYElPX1VSSU5HYC4gU2luY2UgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBpbiB0aGUgaW9fdXJpbmcgaW50ZWdyYXRpb24gd2l0aCBTQ1NJIEJTRywgSSdtIGdvaW5nIHRvIGV4cGxpY2l0bHkgaW5jbHVkZSBgQkxLX0RFVl9CU0dgLCBgU0NTSWAsIGFuZCBgSU9fVVJJTkdgIGluIG15IGVuYWJsZSBjb25maWd1cmF0aW9ucy4gVGhhdCBmZWVscyBsaWtlIHRoZSBtb3N0IGRpcmVjdCBhbmQgYWNjdXJhdGUgYXBwcm9hY2guXG5cblRoZSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgb24gYWRkcmVzc2luZyBUaW1lLW9mLUNoZWNrLXRvLVRpbWUtb2YtVXNlIChUT0NUT1UpIHZ1bG5lcmFiaWxpdGllcyB3aXRoaW4gdGhlIGlvX3VyaW5nIGNvbW1hbmRzIHRhcmdldGluZyBTQ1NJIEJsb2NrIFNHIChTY2F0dGVyLUdhdGhlcikgZGV2aWNlcy4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIGZpeGluZyB0aGVzZSB2dWxuZXJhYmlsaXRpZXMgYnkgc25hcHNob3R0aW5nIFNRRSAoU3VibWlzc2lvbiBRdWV1ZSBFbnRyeSkgZmllbGRzLCBhbmQgdGhleSdyZSBhbHNvIGFsdGVyaW5nIHRoZSB1c2VyIGJ1ZmZlciBtYXBwaW5nIGxvZ2ljLiBUaGlzIGlzIGRlZmluaXRlbHkgZnVuY3Rpb25hbCBhbmQsIGNydWNpYWxseSwgcmVhY2hhYmxlIHRocm91Z2ggaW9fdXJpbmcgY29tbWFuZHMgdGhhdCBhcmUgZGlyZWN0ZWQgYXQgU0NTSSBCU0cgZGV2aWNlcy4gSXQgbWVhbnMgSSBuZWVkIHRvIGJlIGV4dHJhIHZpZ2lsYW50IHdoZW4gcmV2aWV3aW5nIHRoaXMuXG5cbkkgc2hvdWxkIGFsc28gZG91YmxlLWNoZWNrIHdoZXRoZXIgb3RoZXIgZnVuY3Rpb25zIGFyZSBtb2RpZmllZCB0aGF0IGFyZSBub3QgaW1tZWRpYXRlbHkgb2J2aW91cyBmcm9tIHRoZSBkZXNjcmlwdGlvbi4gSSdtIHNlZWluZyBjaGFuZ2VzIHRvIGBzY3NpX2JzZ191cmluZ19jbWRgIGFuZCBgc2NzaV9ic2dfbWFwX3VzZXJfYnVmZmVyYCBpbiB0aGUgZGlmZi5cblxuSSdtIHNhdGlzZmllZCB3aXRoIHRoaXMgcmV2aWV3IGFuZCB3aWxsIHByb2NlZWQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDUwLCJPdXRwdXRUb2tlbnMiOjEyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDA0OjE3OjAxLjk4OTIzNjE1M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NTQ5NTgwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9CU0dcIixcbiAgICBcIlNDU0lcIixcbiAgICBcIklPX1VSSU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2NzaV9ic2dfdXJpbmdfY21kXCIsXG4gICAgXCJzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBTQ1NJIEJTRyBpb191cmluZyBpbnRlZ3JhdGlvbiwgZml4aW5nIFRPQ1RPVSB2dWxuZXJhYmlsaXRpZXMgYnkgc25hcHNob3R0aW5nIFNRRSBmaWVsZHMgYW5kIGNoYW5naW5nIHRoZSBidWZmZXIgbWFwcGluZyBsb2dpYy4gVGhpcyBpcyBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgdmlhIGlvX3VyaW5nIGNvbW1hbmRzIHRvIFNDU0kgQlNHIGRldmljZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9CU0dcIixcbiAgICBcIlNDU0lcIixcbiAgICBcIklPX1VSSU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2NzaV9ic2dfdXJpbmdfY21kXCIsXG4gICAgXCJzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBTQ1NJIEJTRyBpb191cmluZyBpbnRlZ3JhdGlvbiwgZml4aW5nIFRPQ1RPVSB2dWxuZXJhYmlsaXRpZXMgYnkgc25hcHNob3R0aW5nIFNRRSBmaWVsZHMgYW5kIGNoYW5naW5nIHRoZSBidWZmZXIgbWFwcGluZyBsb2dpYy4gVGhpcyBpcyBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgdmlhIGlvX3VyaW5nIGNvbW1hbmRzIHRvIFNDU0kgQlNHIGRldmljZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow2tpmj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-20 03:41:18 +0000 UTC FinishedAt: 2026-07-20 04:17:03 +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": "1590cf0329716306e948a8fc29f1d3ee87d3989f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_BSG", "SCSI", "IO_URING" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "1590cf0329716306e948a8fc29f1d3ee87d3989f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_BSG", "SCSI", "IO_URING" ], "series_id": "d917167a-42e5-4239-9a96-754548b7d534" }, "track": "KASAN", "fuzz": { "focus": [ "io_uring" ], "focus_symbols": [ "scsi_bsg_uring_cmd", "scsi_bsg_map_user_buffer" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDA0OjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfQlNHJiMzNDssCiAgICAmIzM0O1NDU0kmIzM0OywKICAgICYjMzQ7SU9fVVJJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3NpX2JzZ191cmluZ19jbWQmIzM0OywKICAgICYjMzQ7c2NzaV9ic2dfbWFwX3VzZXJfYnVmZmVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIFNDU0kgQlNHIGlvX3VyaW5nIGludGVncmF0aW9uLCBmaXhpbmcgVE9DVE9VIHZ1bG5lcmFiaWxpdGllcyBieSBzbmFwc2hvdHRpbmcgU1FFIGZpZWxkcyBhbmQgY2hhbmdpbmcgdGhlIGJ1ZmZlciBtYXBwaW5nIGxvZ2ljLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSB2aWEgaW9fdXJpbmcgY29tbWFuZHMgdG8gU0NTSSBCU0cgZGV2aWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwNDoxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGRkNjkxZmEwOTIzMjFjNzVjYjg0MmY5YjlkZjAxZTI4NGE4YWM3NGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyMCAwNDoxNjoyMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYyBiL2RyaXZlcnMvc2NzaS9zY3NpX2JzZy5jXG5pbmRleCBlODBkZWM1MzE3NGVhYy4uZjkwZDE5ZmRiZDhlYTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3Njc2kvc2NzaV9ic2cuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zY3NpL3Njc2lfYnNnLmNcbkBAIC03NiwxMiAmIzQzOzc2LDkgQEAgc3RhdGljIGVudW0gcnFfZW5kX2lvX3JldCBzY3NpX2JzZ191cmluZ19jbWRfZG9uZShzdHJ1Y3QgcmVxdWVzdCAqcmVxLFxuIFxuIHN0YXRpYyBpbnQgc2NzaV9ic2dfbWFwX3VzZXJfYnVmZmVyKHN0cnVjdCByZXF1ZXN0ICpyZXEsXG4gXHRcdFx0XHQgICAgc3RydWN0IGlvX3VyaW5nX2NtZCAqaW91Y21kLFxuLVx0XHRcdFx0ICAgIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncywgZ2ZwX3QgZ2ZwX21hc2spXG4mIzQzO1x0XHRcdFx0ICAgIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncywgYm9vbCBpc193cml0ZSxcbiYjNDM7XHRcdFx0XHQgICAgdTY0IGJ1Zl9hZGRyLCB1bnNpZ25lZCBsb25nIGJ1Zl9sZW4pXG4ge1xuLVx0Y29uc3Qgc3RydWN0IGJzZ191cmluZ19jbWQgKmNtZCA9IGlvX3VyaW5nX3NxZTEyOF9jbWQoaW91Y21kLVx1MDAzZXNxZSwgc3RydWN0IGJzZ191cmluZ19jbWQpO1xuLVx0Ym9vbCBpc193cml0ZSA9IGNtZC1cdTAwM2Vkb3V0X3hmZXJfbGVuIFx1MDAzZSAwO1xuLVx0dTY0IGJ1Zl9hZGRyID0gaXNfd3JpdGUgPyBjbWQtXHUwMDNlZG91dF94ZmVycCA6IGNtZC1cdTAwM2VkaW5feGZlcnA7XG4tXHR1bnNpZ25lZCBsb25nIGJ1Zl9sZW4gPSBpc193cml0ZSA/IGNtZC1cdTAwM2Vkb3V0X3hmZXJfbGVuIDogY21kLVx1MDAzZWRpbl94ZmVyX2xlbjtcbiBcdHN0cnVjdCBpb3ZfaXRlciBpdGVyO1xuIFx0aW50IHJldDtcbiBcbkBAIC05MSwxMCAmIzQzOzg4LDEwIEBAIHN0YXRpYyBpbnQgc2NzaV9ic2dfbWFwX3VzZXJfYnVmZmVyKHN0cnVjdCByZXF1ZXN0ICpyZXEsXG4gXHRcdFx0XHRcdFx0XHUwMDI2aXRlciwgaW91Y21kLCBpc3N1ZV9mbGFncyk7XG4gXHRcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdFx0cmV0dXJuIHJldDtcbi1cdFx0cmV0ID0gYmxrX3JxX21hcF91c2VyX2lvdihyZXEtXHUwMDNlcSwgcmVxLCBOVUxMLCBcdTAwMjZpdGVyLCBnZnBfbWFzayk7XG4mIzQzO1x0XHRyZXQgPSBibGtfcnFfbWFwX3VzZXJfaW92KHJlcS1cdTAwM2VxLCByZXEsIE5VTEwsIFx1MDAyNml0ZXIsIEdGUF9LRVJORUwpO1xuIFx0fSBlbHNlIHtcbiBcdFx0cmV0ID0gYmxrX3JxX21hcF91c2VyKHJlcS1cdTAwM2VxLCByZXEsIE5VTEwsIHVwdHI2NChidWZfYWRkciksXG4tXHRcdFx0XHQgICAgICBidWZfbGVuLCBnZnBfbWFzayk7XG4mIzQzO1x0XHRcdFx0ICAgICAgYnVmX2xlbiwgR0ZQX0tFUk5FTCk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gcmV0O1xuQEAgLTEwNCwyMSAmIzQzOzEwMSwyOCBAQCBzdGF0aWMgaW50IHNjc2lfYnNnX3VyaW5nX2NtZChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IGlvX3VyaW5nX2NtZCAqaW91Y1xuIFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MsIGJvb2wgb3Blbl9mb3Jfd3JpdGUpXG4ge1xuIFx0c3RydWN0IHNjc2lfYnNnX3VyaW5nX2NtZF9wZHUgKnBkdSA9IHNjc2lfYnNnX3VyaW5nX2NtZF9wZHUoaW91Y21kKTtcbi1cdGNvbnN0IHN0cnVjdCBic2dfdXJpbmdfY21kICpjbWQgPSBpb191cmluZ19zcWUxMjhfY21kKGlvdWNtZC1cdTAwM2VzcWUsIHN0cnVjdCBic2dfdXJpbmdfY21kKTtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgYnNnX3VyaW5nX2NtZCAqY21kID1cbiYjNDM7XHRcdGlvX3VyaW5nX3NxZTEyOF9jbWQoaW91Y21kLVx1MDAzZXNxZSwgc3RydWN0IGJzZ191cmluZ19jbWQpO1xuIFx0c3RydWN0IHNjc2lfY21uZCAqc2NtZDtcbiBcdHN0cnVjdCByZXF1ZXN0ICpyZXE7XG4gXHRibGtfbXFfcmVxX2ZsYWdzX3QgYmxrX2ZsYWdzID0gMDtcbi1cdGdmcF90IGdmcF9tYXNrID0gR0ZQX0tFUk5FTDtcbiYjNDM7XHQvKiBTbmFwc2hvdCBTUUUgZmllbGRzIHVzZWQgZm9yIHZhbGlkYXRpb24gYW5kIGJ1ZmZlciBtYXBwaW5nLiAqL1xuJiM0MztcdHU2NCByZXF1ZXN0ID0gUkVBRF9PTkNFKGNtZC1cdTAwM2VyZXF1ZXN0KTtcbiYjNDM7XHR1MzIgcmVxdWVzdF9sZW4gPSBSRUFEX09OQ0UoY21kLVx1MDAzZXJlcXVlc3RfbGVuKTtcbiYjNDM7XHR1NjQgZG91dF94ZmVycCA9IFJFQURfT05DRShjbWQtXHUwMDNlZG91dF94ZmVycCk7XG4mIzQzO1x0dTMyIGRvdXRfeGZlcl9sZW4gPSBSRUFEX09OQ0UoY21kLVx1MDAzZWRvdXRfeGZlcl9sZW4pO1xuJiM0MztcdHU2NCBkaW5feGZlcnAgPSBSRUFEX09OQ0UoY21kLVx1MDAzZWRpbl94ZmVycCk7XG4mIzQzO1x0dTMyIGRpbl94ZmVyX2xlbiA9IFJFQURfT05DRShjbWQtXHUwMDNlZGluX3hmZXJfbGVuKTtcbiBcdGludCByZXQ7XG4gXG4gXHRpZiAoY21kLVx1MDAzZXByb3RvY29sICE9IEJTR19QUk9UT0NPTF9TQ1NJIHx8XG4gXHQgICAgY21kLVx1MDAzZXN1YnByb3RvY29sICE9IEJTR19TVUJfUFJPVE9DT0xfU0NTSV9DTUQpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0aWYgKCFjbWQtXHUwMDNlcmVxdWVzdCB8fCBjbWQtXHUwMDNlcmVxdWVzdF9sZW4gPT0gMClcbiYjNDM7XHRpZiAoIXJlcXVlc3QgfHwgcmVxdWVzdF9sZW4gPT0gMClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRpZiAoY21kLVx1MDAzZWRvdXRfeGZlcl9sZW4gXHUwMDI2XHUwMDI2IGNtZC1cdTAwM2VkaW5feGZlcl9sZW4pIHtcbiYjNDM7XHRpZiAoZG91dF94ZmVyX2xlbiBcdTAwMjZcdTAwMjYgZGluX3hmZXJfbGVuKSB7XG4gXHRcdHByX3dhcm5fb25jZShcJiMzNDtCSURJIHN1cHBvcnQgaW4gYnNnIGhhcyBiZWVuIHJlbW92ZWQuXFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFx0fVxuQEAgLTEyNiwyNSAmIzQzOzEzMCwyMyBAQCBzdGF0aWMgaW50IHNjc2lfYnNnX3VyaW5nX2NtZChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IGlvX3VyaW5nX2NtZCAqaW91Y1xuIFx0aWYgKGNtZC1cdTAwM2Vkb3V0X2lvdmVjX2NvdW50IFx1MDAzZSAwIHx8IGNtZC1cdTAwM2VkaW5faW92ZWNfY291bnQgXHUwMDNlIDApXG4gXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcbi1cdGlmIChpc3N1ZV9mbGFncyBcdTAwMjYgSU9fVVJJTkdfRl9OT05CTE9DSykge1xuJiM0MztcdGlmIChpc3N1ZV9mbGFncyBcdTAwMjYgSU9fVVJJTkdfRl9OT05CTE9DSylcbiBcdFx0YmxrX2ZsYWdzID0gQkxLX01RX1JFUV9OT1dBSVQ7XG4tXHRcdGdmcF9tYXNrID0gR0ZQX05PV0FJVDtcbi1cdH1cbiBcbi1cdHJlcSA9IHNjc2lfYWxsb2NfcmVxdWVzdChxLCBjbWQtXHUwMDNlZG91dF94ZmVyX2xlbiA/XG4mIzQzO1x0cmVxID0gc2NzaV9hbGxvY19yZXF1ZXN0KHEsIGRvdXRfeGZlcl9sZW4gP1xuIFx0XHRcdFx0IFJFUV9PUF9EUlZfT1VUIDogUkVRX09QX0RSVl9JTiwgYmxrX2ZsYWdzKTtcbiBcdGlmIChJU19FUlIocmVxKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIocmVxKTtcbiBcbiBcdHNjbWQgPSBibGtfbXFfcnFfdG9fcGR1KHJlcSk7XG4tXHRpZiAoY21kLVx1MDAzZXJlcXVlc3RfbGVuIFx1MDAzZSBzaXplb2Yoc2NtZC1cdTAwM2VjbW5kKSkge1xuJiM0MztcdGlmIChyZXF1ZXN0X2xlbiBcdTAwM2Ugc2l6ZW9mKHNjbWQtXHUwMDNlY21uZCkpIHtcbiBcdFx0cmV0ID0gLUVJTlZBTDtcbiBcdFx0Z290byBvdXRfZnJlZV9yZXE7XG4gXHR9XG4tXHRzY21kLVx1MDAzZWNtZF9sZW4gPSBjbWQtXHUwMDNlcmVxdWVzdF9sZW47XG4mIzQzO1x0c2NtZC1cdTAwM2VjbWRfbGVuID0gcmVxdWVzdF9sZW47XG4gXHRzY21kLVx1MDAzZWFsbG93ZWQgPSBTR19ERUZBVUxUX1JFVFJJRVM7XG4gXG4tXHRpZiAoY29weV9mcm9tX3VzZXIoc2NtZC1cdTAwM2VjbW5kLCB1cHRyNjQoY21kLVx1MDAzZXJlcXVlc3QpLCBjbWQtXHUwMDNlcmVxdWVzdF9sZW4pKSB7XG4mIzQzO1x0aWYgKGNvcHlfZnJvbV91c2VyKHNjbWQtXHUwMDNlY21uZCwgdXB0cjY0KHJlcXVlc3QpLCByZXF1ZXN0X2xlbikpIHtcbiBcdFx0cmV0ID0gLUVGQVVMVDtcbiBcdFx0Z290byBvdXRfZnJlZV9yZXE7XG4gXHR9XG5AQCAtMTU4LDggJiM0MzsxNjAsMTMgQEAgc3RhdGljIGludCBzY3NpX2JzZ191cmluZ19jbWQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBpb191cmluZ19jbWQgKmlvdWNcbiBcdHNjbWQtXHUwMDNlc2Vuc2VfbGVuID0gY21kLVx1MDAzZW1heF9yZXNwb25zZV9sZW4gP1xuIFx0XHRtaW4oY21kLVx1MDAzZW1heF9yZXNwb25zZV9sZW4sIFNDU0lfU0VOU0VfQlVGRkVSU0laRSkgOiBTQ1NJX1NFTlNFX0JVRkZFUlNJWkU7XG4gXG4tXHRpZiAoY21kLVx1MDAzZWRvdXRfeGZlcl9sZW4gfHwgY21kLVx1MDAzZWRpbl94ZmVyX2xlbikge1xuLVx0XHRyZXQgPSBzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXIocmVxLCBpb3VjbWQsIGlzc3VlX2ZsYWdzLCBnZnBfbWFzayk7XG4mIzQzO1x0aWYgKGRvdXRfeGZlcl9sZW4gfHwgZGluX3hmZXJfbGVuKSB7XG4mIzQzO1x0XHRib29sIGlzX3dyaXRlID0gZG91dF94ZmVyX2xlbiBcdTAwM2UgMDtcbiYjNDM7XHRcdHU2NCBidWZfYWRkciA9IGlzX3dyaXRlID8gZG91dF94ZmVycCA6IGRpbl94ZmVycDtcbiYjNDM7XHRcdHVuc2lnbmVkIGxvbmcgYnVmX2xlbiA9IGlzX3dyaXRlID8gZG91dF94ZmVyX2xlbiA6IGRpbl94ZmVyX2xlbjtcbiYjNDM7XG4mIzQzO1x0XHRyZXQgPSBzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXIocmVxLCBpb3VjbWQsIGlzc3VlX2ZsYWdzLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIGlzX3dyaXRlLCBidWZfYWRkciwgYnVmX2xlbik7XG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0Z290byBvdXRfZnJlZV9yZXE7XG4gXHRcdHBkdS1cdTAwM2ViaW8gPSByZXEtXHUwMDNlYmlvO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDA0OjE2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfQlNHJiMzNDssCiAgICAmIzM0O1NDU0kmIzM0OywKICAgICYjMzQ7SU9fVVJJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3NpX2JzZ191cmluZ19jbWQmIzM0OywKICAgICYjMzQ7c2NzaV9ic2dfbWFwX3VzZXJfYnVmZmVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIFNDU0kgQlNHIGlvX3VyaW5nIGludGVncmF0aW9uLCBmaXhpbmcgVE9DVE9VIHZ1bG5lcmFiaWxpdGllcyBieSBzbmFwc2hvdHRpbmcgU1FFIGZpZWxkcyBhbmQgY2hhbmdpbmcgdGhlIGJ1ZmZlciBtYXBwaW5nIGxvZ2ljLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSB2aWEgaW9fdXJpbmcgY29tbWFuZHMgdG8gU0NTSSBCU0cgZGV2aWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZGQ2OTFmYTA5MjMyMWM3NWNiODQyZjliOWRmMDFlMjg0YThhYzc0ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDIwIDA0OjE2OjIxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Njc2lfYnNnLmMgYi9kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYwppbmRleCBlODBkZWM1MzE3NGVhYy4uZjkwZDE5ZmRiZDhlYTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zY3NpX2JzZy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvc2NzaS9zY3NpX2JzZy5jCkBAIC03NiwxMiAmIzQzOzc2LDkgQEAgc3RhdGljIGVudW0gcnFfZW5kX2lvX3JldCBzY3NpX2JzZ191cmluZ19jbWRfZG9uZShzdHJ1Y3QgcmVxdWVzdCAqcmVxLAogCiBzdGF0aWMgaW50IHNjc2lfYnNnX21hcF91c2VyX2J1ZmZlcihzdHJ1Y3QgcmVxdWVzdCAqcmVxLAogCQkJCSAgICBzdHJ1Y3QgaW9fdXJpbmdfY21kICppb3VjbWQsCi0JCQkJICAgIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncywgZ2ZwX3QgZ2ZwX21hc2spCiYjNDM7CQkJCSAgICB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MsIGJvb2wgaXNfd3JpdGUsCiYjNDM7CQkJCSAgICB1NjQgYnVmX2FkZHIsIHVuc2lnbmVkIGxvbmcgYnVmX2xlbikKIHsKLQljb25zdCBzdHJ1Y3QgYnNnX3VyaW5nX2NtZCAqY21kID0gaW9fdXJpbmdfc3FlMTI4X2NtZChpb3VjbWQtJmd0O3NxZSwgc3RydWN0IGJzZ191cmluZ19jbWQpOwotCWJvb2wgaXNfd3JpdGUgPSBjbWQtJmd0O2RvdXRfeGZlcl9sZW4gJmd0OyAwOwotCXU2NCBidWZfYWRkciA9IGlzX3dyaXRlID8gY21kLSZndDtkb3V0X3hmZXJwIDogY21kLSZndDtkaW5feGZlcnA7Ci0JdW5zaWduZWQgbG9uZyBidWZfbGVuID0gaXNfd3JpdGUgPyBjbWQtJmd0O2RvdXRfeGZlcl9sZW4gOiBjbWQtJmd0O2Rpbl94ZmVyX2xlbjsKIAlzdHJ1Y3QgaW92X2l0ZXIgaXRlcjsKIAlpbnQgcmV0OwogCkBAIC05MSwxMCAmIzQzOzg4LDEwIEBAIHN0YXRpYyBpbnQgc2NzaV9ic2dfbWFwX3VzZXJfYnVmZmVyKHN0cnVjdCByZXF1ZXN0ICpyZXEsCiAJCQkJCQkmYW1wO2l0ZXIsIGlvdWNtZCwgaXNzdWVfZmxhZ3MpOwogCQlpZiAocmV0ICZsdDsgMCkKIAkJCXJldHVybiByZXQ7Ci0JCXJldCA9IGJsa19ycV9tYXBfdXNlcl9pb3YocmVxLSZndDtxLCByZXEsIE5VTEwsICZhbXA7aXRlciwgZ2ZwX21hc2spOwomIzQzOwkJcmV0ID0gYmxrX3JxX21hcF91c2VyX2lvdihyZXEtJmd0O3EsIHJlcSwgTlVMTCwgJmFtcDtpdGVyLCBHRlBfS0VSTkVMKTsKIAl9IGVsc2UgewogCQlyZXQgPSBibGtfcnFfbWFwX3VzZXIocmVxLSZndDtxLCByZXEsIE5VTEwsIHVwdHI2NChidWZfYWRkciksCi0JCQkJICAgICAgYnVmX2xlbiwgZ2ZwX21hc2spOwomIzQzOwkJCQkgICAgICBidWZfbGVuLCBHRlBfS0VSTkVMKTsKIAl9CiAKIAlyZXR1cm4gcmV0OwpAQCAtMTA0LDIxICYjNDM7MTAxLDI4IEBAIHN0YXRpYyBpbnQgc2NzaV9ic2dfdXJpbmdfY21kKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgaW9fdXJpbmdfY21kICppb3VjCiAJCQkgICAgICAgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzLCBib29sIG9wZW5fZm9yX3dyaXRlKQogewogCXN0cnVjdCBzY3NpX2JzZ191cmluZ19jbWRfcGR1ICpwZHUgPSBzY3NpX2JzZ191cmluZ19jbWRfcGR1KGlvdWNtZCk7Ci0JY29uc3Qgc3RydWN0IGJzZ191cmluZ19jbWQgKmNtZCA9IGlvX3VyaW5nX3NxZTEyOF9jbWQoaW91Y21kLSZndDtzcWUsIHN0cnVjdCBic2dfdXJpbmdfY21kKTsKJiM0MzsJY29uc3Qgc3RydWN0IGJzZ191cmluZ19jbWQgKmNtZCA9CiYjNDM7CQlpb191cmluZ19zcWUxMjhfY21kKGlvdWNtZC0mZ3Q7c3FlLCBzdHJ1Y3QgYnNnX3VyaW5nX2NtZCk7CiAJc3RydWN0IHNjc2lfY21uZCAqc2NtZDsKIAlzdHJ1Y3QgcmVxdWVzdCAqcmVxOwogCWJsa19tcV9yZXFfZmxhZ3NfdCBibGtfZmxhZ3MgPSAwOwotCWdmcF90IGdmcF9tYXNrID0gR0ZQX0tFUk5FTDsKJiM0MzsJLyogU25hcHNob3QgU1FFIGZpZWxkcyB1c2VkIGZvciB2YWxpZGF0aW9uIGFuZCBidWZmZXIgbWFwcGluZy4gKi8KJiM0MzsJdTY0IHJlcXVlc3QgPSBSRUFEX09OQ0UoY21kLSZndDtyZXF1ZXN0KTsKJiM0MzsJdTMyIHJlcXVlc3RfbGVuID0gUkVBRF9PTkNFKGNtZC0mZ3Q7cmVxdWVzdF9sZW4pOwomIzQzOwl1NjQgZG91dF94ZmVycCA9IFJFQURfT05DRShjbWQtJmd0O2RvdXRfeGZlcnApOwomIzQzOwl1MzIgZG91dF94ZmVyX2xlbiA9IFJFQURfT05DRShjbWQtJmd0O2RvdXRfeGZlcl9sZW4pOwomIzQzOwl1NjQgZGluX3hmZXJwID0gUkVBRF9PTkNFKGNtZC0mZ3Q7ZGluX3hmZXJwKTsKJiM0MzsJdTMyIGRpbl94ZmVyX2xlbiA9IFJFQURfT05DRShjbWQtJmd0O2Rpbl94ZmVyX2xlbik7CiAJaW50IHJldDsKIAogCWlmIChjbWQtJmd0O3Byb3RvY29sICE9IEJTR19QUk9UT0NPTF9TQ1NJIHx8CiAJICAgIGNtZC0mZ3Q7c3VicHJvdG9jb2wgIT0gQlNHX1NVQl9QUk9UT0NPTF9TQ1NJX0NNRCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlpZiAoIWNtZC0mZ3Q7cmVxdWVzdCB8fCBjbWQtJmd0O3JlcXVlc3RfbGVuID09IDApCiYjNDM7CWlmICghcmVxdWVzdCB8fCByZXF1ZXN0X2xlbiA9PSAwKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCWlmIChjbWQtJmd0O2RvdXRfeGZlcl9sZW4gJmFtcDsmYW1wOyBjbWQtJmd0O2Rpbl94ZmVyX2xlbikgewomIzQzOwlpZiAoZG91dF94ZmVyX2xlbiAmYW1wOyZhbXA7IGRpbl94ZmVyX2xlbikgewogCQlwcl93YXJuX29uY2UoJiMzNDtCSURJIHN1cHBvcnQgaW4gYnNnIGhhcyBiZWVuIHJlbW92ZWQuXG4mIzM0Oyk7CiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAl9CkBAIC0xMjYsMjUgJiM0MzsxMzAsMjMgQEAgc3RhdGljIGludCBzY3NpX2JzZ191cmluZ19jbWQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBpb191cmluZ19jbWQgKmlvdWMKIAlpZiAoY21kLSZndDtkb3V0X2lvdmVjX2NvdW50ICZndDsgMCB8fCBjbWQtJmd0O2Rpbl9pb3ZlY19jb3VudCAmZ3Q7IDApCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCWlmIChpc3N1ZV9mbGFncyAmYW1wOyBJT19VUklOR19GX05PTkJMT0NLKSB7CiYjNDM7CWlmIChpc3N1ZV9mbGFncyAmYW1wOyBJT19VUklOR19GX05PTkJMT0NLKQogCQlibGtfZmxhZ3MgPSBCTEtfTVFfUkVRX05PV0FJVDsKLQkJZ2ZwX21hc2sgPSBHRlBfTk9XQUlUOwotCX0KIAotCXJlcSA9IHNjc2lfYWxsb2NfcmVxdWVzdChxLCBjbWQtJmd0O2RvdXRfeGZlcl9sZW4gPwomIzQzOwlyZXEgPSBzY3NpX2FsbG9jX3JlcXVlc3QocSwgZG91dF94ZmVyX2xlbiA/CiAJCQkJIFJFUV9PUF9EUlZfT1VUIDogUkVRX09QX0RSVl9JTiwgYmxrX2ZsYWdzKTsKIAlpZiAoSVNfRVJSKHJlcSkpCiAJCXJldHVybiBQVFJfRVJSKHJlcSk7CiAKIAlzY21kID0gYmxrX21xX3JxX3RvX3BkdShyZXEpOwotCWlmIChjbWQtJmd0O3JlcXVlc3RfbGVuICZndDsgc2l6ZW9mKHNjbWQtJmd0O2NtbmQpKSB7CiYjNDM7CWlmIChyZXF1ZXN0X2xlbiAmZ3Q7IHNpemVvZihzY21kLSZndDtjbW5kKSkgewogCQlyZXQgPSAtRUlOVkFMOwogCQlnb3RvIG91dF9mcmVlX3JlcTsKIAl9Ci0Jc2NtZC0mZ3Q7Y21kX2xlbiA9IGNtZC0mZ3Q7cmVxdWVzdF9sZW47CiYjNDM7CXNjbWQtJmd0O2NtZF9sZW4gPSByZXF1ZXN0X2xlbjsKIAlzY21kLSZndDthbGxvd2VkID0gU0dfREVGQVVMVF9SRVRSSUVTOwogCi0JaWYgKGNvcHlfZnJvbV91c2VyKHNjbWQtJmd0O2NtbmQsIHVwdHI2NChjbWQtJmd0O3JlcXVlc3QpLCBjbWQtJmd0O3JlcXVlc3RfbGVuKSkgewomIzQzOwlpZiAoY29weV9mcm9tX3VzZXIoc2NtZC0mZ3Q7Y21uZCwgdXB0cjY0KHJlcXVlc3QpLCByZXF1ZXN0X2xlbikpIHsKIAkJcmV0ID0gLUVGQVVMVDsKIAkJZ290byBvdXRfZnJlZV9yZXE7CiAJfQpAQCAtMTU4LDggJiM0MzsxNjAsMTMgQEAgc3RhdGljIGludCBzY3NpX2JzZ191cmluZ19jbWQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBpb191cmluZ19jbWQgKmlvdWMKIAlzY21kLSZndDtzZW5zZV9sZW4gPSBjbWQtJmd0O21heF9yZXNwb25zZV9sZW4gPwogCQltaW4oY21kLSZndDttYXhfcmVzcG9uc2VfbGVuLCBTQ1NJX1NFTlNFX0JVRkZFUlNJWkUpIDogU0NTSV9TRU5TRV9CVUZGRVJTSVpFOwogCi0JaWYgKGNtZC0mZ3Q7ZG91dF94ZmVyX2xlbiB8fCBjbWQtJmd0O2Rpbl94ZmVyX2xlbikgewotCQlyZXQgPSBzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXIocmVxLCBpb3VjbWQsIGlzc3VlX2ZsYWdzLCBnZnBfbWFzayk7CiYjNDM7CWlmIChkb3V0X3hmZXJfbGVuIHx8IGRpbl94ZmVyX2xlbikgewomIzQzOwkJYm9vbCBpc193cml0ZSA9IGRvdXRfeGZlcl9sZW4gJmd0OyAwOwomIzQzOwkJdTY0IGJ1Zl9hZGRyID0gaXNfd3JpdGUgPyBkb3V0X3hmZXJwIDogZGluX3hmZXJwOwomIzQzOwkJdW5zaWduZWQgbG9uZyBidWZfbGVuID0gaXNfd3JpdGUgPyBkb3V0X3hmZXJfbGVuIDogZGluX3hmZXJfbGVuOwomIzQzOwomIzQzOwkJcmV0ID0gc2NzaV9ic2dfbWFwX3VzZXJfYnVmZmVyKHJlcSwgaW91Y21kLCBpc3N1ZV9mbGFncywKJiM0MzsJCQkJCSAgICAgICBpc193cml0ZSwgYnVmX2FkZHIsIGJ1Zl9sZW4pOwogCQlpZiAocmV0KQogCQkJZ290byBvdXRfZnJlZV9yZXE7CiAJCXBkdS0mZ3Q7YmlvID0gcmVxLSZndDtiaW87CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDA0OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NDkKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgU0NTSSBCU0cgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0JiMzOTtzIHRvdWNoaW5nIGBkcml2ZXJzL3Njc2kvc2NzaV9ic2cuY2AsIHNwZWNpZmljYWxseSBtZXNzaW5nIHdpdGggYHNjc2lfYnNnX3VyaW5nX2NtZGAgYW5kIGBzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXJgLiBJIHNlZSB0aGV5JiMzOTtyZSB1c2luZyBgUkVBRF9PTkNFYCB0byBzbmFwc2hvdCBzb21lIFNRRSBmaWVsZHMuIFNtYXJ0IG1vdmUg4oCTIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIGdvb2Qgd2F5IHRvIG1pdGlnYXRlIFRPQ1RPVSB2dWxuZXJhYmlsaXRpZXMsIG1ha2luZyBzdXJlIHRoZSB2YWx1ZXMgZG9uJiMzOTt0IGdldCBjaGFuZ2VkIGJldHdlZW4gd2hlbiB0aGV5JiMzOTtyZSBjaGVja2VkIGFuZCB3aGVuIHRoZXkmIzM5O3JlIHVzZWQuIFJlbW92aW5nIHRoZSBgZ2ZwX21hc2tgIGZyb20gYHNjc2lfYnNnX21hcF91c2VyX2J1ZmZlcmAgYW5kIGhhcmRjb2RpbmcgYEdGUF9LRVJORUxgIGlzIGFuIGludGVyZXN0aW5nIGNob2ljZTsgSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB3aHkgdGhleSBtYWRlIHRoYXQgZGVjaXNpb24uIFNlZW1zIGxpa2UgYSBkZWxpYmVyYXRlIHRyYWRlLW9mZi4KClRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBjb3JlIG1vZGlmaWNhdGlvbiB0byBob3cgdGhlIFNDU0kgQmxvY2sgU3Vic3lzdGVtIEdhdGV3YXkgKEJTRykgaW50ZXJhY3RzIHdpdGggaW9fdXJpbmcuIFRoaXMgZGVmaW5pdGVseSBuZWVkcyBzb21lIHNlcmlvdXMgZnV6emluZyBhdHRlbnRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlncyBhcmUgcmVxdWlyZWQgdG8gZW5hYmxlIHRoZSByZWxldmFudCBwYXJ0cyBvZiB0aGUgY29kZS4gTGV0IG1lIHF1aWNrbHkgdXNlIGBncmVwcGVyYCB0byBzZWUgaWYgSSBjYW4gcGlucG9pbnQgdGhlIGNvbmZpZyBvcHRpb25zIGFzc29jaWF0ZWQgd2l0aCBgZHJpdmVycy9zY3NpL3Njc2lfYnNnLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDA0OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Njc2lfYnNnLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Njc2kvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc2NzaS9NYWtlZmlsZT0xNjk9c2NzaV9tb2QtJChDT05GSUdfU0NTSV9ESClcdCYjNDM7PSBzY3NpX2RoLm9cbmRyaXZlcnMvc2NzaS9NYWtlZmlsZToxNzA6c2NzaV9tb2QtJChDT05GSUdfQkxLX0RFVl9CU0cpXHQmIzQzOz0gc2NzaV9ic2cub1xuZHJpdmVycy9zY3NpL01ha2VmaWxlLTE3MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwNDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTM1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyB0aGUgQmxvY2sgRGV2aWNlIFNHIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzLiBUaGUgY29uZmlnIGluIHF1ZXN0aW9uIGlzIGBCTEtfREVWX0JTR2AuIEZpcnN0IGluc3RpbmN0IGlzIHRvIHF1aWNrbHkgY2hlY2ssIGlzIHRoYXQgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzZXR0aW5nPyBQcm9iYWJseSBub3QsIHRoZXJlIGFyZSBvZnRlbiByZWxhdGVkIG9wdGlvbnMuIExldCBtZSBxdWlja2x5IHNjYW4gZm9yIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLgoKT2theSwgdGltZSB0byBkaWcgZGVlcGVyLiBJJiMzOTtsbCBuZWVkIHRvIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuIFRoZSBLY29uZmlnIGZpbGVzIGFyZSB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBsb2dpYyBsaXZlcy4gTGV0IG1lIGhlYWQgb3ZlciB0byBgZHJpdmVycy9zY3NpL0tjb25maWdgIGFuZCBzZWFyY2ggZm9yIGBCTEtfREVWX0JTR2AuIFRoYXQgc2hvdWxkIHRlbGwgbWUgdGhlIGRlcGVuZGVuY2llcywgcG90ZW50aWFsbHkgcmVsYXRlZCBvcHRpb25zLCBhbmQgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIHRoaXMgc3BlY2lmaWMgYmxvY2sgZGV2aWNlIFNHIHNldHRpbmcuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDA0OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfREVWX0JTRyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9LY29uZmlnPTQ1PWNvbmZpZyBCTEtfQ0dST1VQX1BVTlRfQklPXG4tLVxuYmxvY2svS2NvbmZpZy00Ny1cbmJsb2NrL0tjb25maWc6NDg6Y29uZmlnIEJMS19ERVZfQlNHX0NPTU1PTlxuYmxvY2svS2NvbmZpZy00OS1cdHRyaXN0YXRlXG4tLVxuYmxvY2svS2NvbmZpZz01MT1jb25maWcgQkxLX0lDUVxuLS1cbmJsb2NrL0tjb25maWctNTMtXG5ibG9jay9LY29uZmlnOjU0OmNvbmZpZyBCTEtfREVWX0JTR0xJQlxuYmxvY2svS2NvbmZpZy01NS1cdGJvb2wgXCYjMzQ7QmxvY2sgbGF5ZXIgU0cgc3VwcG9ydCB2NCBoZWxwZXIgbGliXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMDQ6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUyMAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFscmVhZHkgcHJldHR5IGZhbWlsaWFyIHdpdGggdGhlIExpbnV4IGtlcm5lbCBhbmQgaXRzIGNvbmZpZ3VyYXRpb24gc3lzdGVtOgoKKipDaGVja2luZyB0aGUgS2NvbmZpZyBmb3IgQkxLX0RFVl9CU0cqKgoKSG1tLCBzbyBgQkxLX0RFVl9CU0dgIGlzIGZsYWdnZWQgYXMgYmVpbmcgd2l0aGluIGBibG9jay9LY29uZmlnYD8gVGhhdCYjMzk7cyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIEl0IG1lYW5zIHRoZSBmZWF0dXJlIGlzIGxpa2VseSBjb250cm9sbGVkIGJ5IGEgY29uZmlndXJhdGlvbiBvcHRpb24gZGVjbGFyZWQgdGhlcmUuIExldCYjMzk7cyBpbW1lZGlhdGVseSBnbyBhbmQgKnZlcmlmeSogdGhhdCBpdCBpcyBpbmRlZWQgZGVmaW5lZCB3aXRoaW4gYGJsb2NrL0tjb25maWdgLiBUaGlzIHdpbGwgYWxsb3cgbWUgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcywgZGVmYXVsdHMsIGhlbHAgdGV4dCBhbmQgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgZGVwZW5kIG9uIG9yIHJlbGF0ZSB0byBgQkxLX0RFVl9CU0dgLiBFc3NlbnRpYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgb3B0aW9uIGZpdHMgaW50byB0aGUgbGFyZ2VyIHBpY3R1cmUgb2YgYmxvY2sgZGV2aWNlIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoZSBrZXJuZWwuIEkgY2FuIHRoZW4gdXNlIHRoYXQgaW5mb3JtYXRpb24gdG8gYWRqdXN0IGNvbmZpZ3VyYXRpb25zIGFjY29yZGluZ2x5LCB0byBkZXRlcm1pbmUgd2hhdCYjMzk7cyBhdmFpbGFibGUgYW5kIHdoYXQgc2V0dGluZ3MgYWZmZWN0IGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDA0OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfREVWX0JTRyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9LY29uZmlnPTQ1PWNvbmZpZyBCTEtfQ0dST1VQX1BVTlRfQklPXG4tLVxuYmxvY2svS2NvbmZpZy00Ny1cbmJsb2NrL0tjb25maWc6NDg6Y29uZmlnIEJMS19ERVZfQlNHX0NPTU1PTlxuYmxvY2svS2NvbmZpZy00OS1cdHRyaXN0YXRlXG4tLVxuYmxvY2svS2NvbmZpZz01MT1jb25maWcgQkxLX0lDUVxuLS1cbmJsb2NrL0tjb25maWctNTMtXG5ibG9jay9LY29uZmlnOjU0OmNvbmZpZyBCTEtfREVWX0JTR0xJQlxuYmxvY2svS2NvbmZpZy01NS1cdGJvb2wgXCYjMzQ7QmxvY2sgbGF5ZXIgU0cgc3VwcG9ydCB2NCBoZWxwZXIgbGliXCYjMzQ7XG4tLVxuZHJpdmVycy9zY3NpL0tjb25maWc9MTMxPWNvbmZpZyBDSFJfREVWX1NHXG4tLVxuZHJpdmVycy9zY3NpL0tjb25maWctMTU1LVxuZHJpdmVycy9zY3NpL0tjb25maWc6MTU2OmNvbmZpZyBCTEtfREVWX0JTR1xuZHJpdmVycy9zY3NpL0tjb25maWctMTU3LVx0Ym9vbCBcJiMzNDsvZGV2L2JzZyBzdXBwb3J0IChTRyB2NClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwNDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDAxCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIEJMS1xfREVWXF9CU0cgaW9cX3VyaW5nIEludGVncmF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIGl0IGxvb2tzIGxpa2UgdGhlIGBCTEtfREVWX0JTR2Agb3B0aW9uIGlzIGRlZmluZWQgd2l0aGluIGBkcml2ZXJzL3Njc2kvS2NvbmZpZ2AuIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBPZiBjb3Vyc2UsIHNpbmNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggU0NTSSBibG9jayBkZXZpY2VzIHVzaW5nIEJTRywgaXQmIzM5O3MgcHJldHR5IG9idmlvdXMgdGhhdCBgU0NTSWAgaXRzZWxmIG5lZWRzIHRvIGJlIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWcuIFRoYXQmIzM5O3MgYSBnaXZlbi4gQW5kIGdpdmVuIHRoYXQgd2UgYXJlIGludGVncmF0aW5nIGlvXF91cmluZyB3aXRoIEJTRywgYElPX1VSSU5HYCBzdXBwb3J0IGlzIGFsc28gYSBtdXN0LiBOb3csIHRoYXQgaXMgYSBmYWlybHkgc3RyYWlnaHRmb3J3YXJkIHJlcXVpcmVtZW50IGZvciB0aGlzIGtpbmQgb2YgaW50ZWdyYXRpb24uCgpOb3csIHRvIGdldCBkb3duIHRvIHNwZWNpZmljcywgSSBuZWVkIHRvIHNlZSB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uLiBJIHNob3VsZCBjaGVjayBgc2NzaV9ic2dfdXJpbmdfY21kYCBpbiBgZHJpdmVycy9zY3NpL3Njc2lfYnNnLmNgLiBUaGF0IGlzIHdoZXJlIHRoZSBpb1xfdXJpbmcgY29tbWFuZCBoYW5kbGluZyBmb3IgQlNHIGRldmljZSBjb21tdW5pY2F0aW9uIGlzIGxpa2VseSBoYW5kbGVkLiBUaGlzIGlzIHRoZSBjb2RlIHRoYXQgaW50ZXJlc3RzIG1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwNDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY3NpX2JzZ191cmluZ19jbWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Njc2kvc2NzaV9ic2cuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0xNi0gKi9cbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jOjE3OnN0cnVjdCBzY3NpX2JzZ191cmluZ19jbWRfcGR1IHtcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTE4LVx0c3RydWN0IGJpbyAqYmlvO1x0XHQvKiBtYXBwZWQgdXNlciBidWZmZXIsIHVubWFwIGluIHRhc2sgd29yayAqL1xuLS1cbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTIxLX07XG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYzoyMjpzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3Qgc2NzaV9ic2dfdXJpbmdfY21kX3BkdSkgXHUwMDNjPSBzaXplb2ZfZmllbGQoc3RydWN0IGlvX3VyaW5nX2NtZCwgcGR1KSk7XG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0yMy1cbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jOjI0OnN0YXRpYyBpbmxpbmUgc3RydWN0IHNjc2lfYnNnX3VyaW5nX2NtZF9wZHUgKnNjc2lfYnNnX3VyaW5nX2NtZF9wZHUoXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0yNS1cdHN0cnVjdCBpb191cmluZ19jbWQgKmlvdWNtZClcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTI2LXtcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jOjI3Olx0cmV0dXJuIGlvX3VyaW5nX2NtZF90b19wZHUoaW91Y21kLCBzdHJ1Y3Qgc2NzaV9ic2dfdXJpbmdfY21kX3BkdSk7XG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0yOC19XG4tLVxuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmM9MzE9c3RhdGljIHZvaWQgc2NzaV9ic2dfdXJpbmdfdGFza19jYihzdHJ1Y3QgaW9fdHdfcmVxIHR3X3JlcSwgaW9fdHdfdG9rZW5fdCB0dylcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0zMy1cdHN0cnVjdCBpb191cmluZ19jbWQgKmlvdWNtZCA9IGlvX3VyaW5nX2NtZF9mcm9tX3R3KHR3X3JlcSk7XG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYzozNDpcdHN0cnVjdCBzY3NpX2JzZ191cmluZ19jbWRfcGR1ICpwZHUgPSBzY3NpX2JzZ191cmluZ19jbWRfcGR1KGlvdWNtZCk7XG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0zNS1cdHN0cnVjdCByZXF1ZXN0ICpycSA9IHBkdS1cdTAwM2VyZXE7XG4tLVxuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmMtNjYtXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYzo2NzpzdGF0aWMgZW51bSBycV9lbmRfaW9fcmV0IHNjc2lfYnNnX3VyaW5nX2NtZF9kb25lKHN0cnVjdCByZXF1ZXN0ICpyZXEsXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy02OC1cdFx0XHRcdFx0XHQgIGJsa19zdGF0dXNfdCBzdGF0dXMsXG4tLVxuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmM9Nzc9c3RhdGljIGludCBzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXIoc3RydWN0IHJlcXVlc3QgKnJlcSxcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy05OS1cbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jOjEwMDpzdGF0aWMgaW50IHNjc2lfYnNnX3VyaW5nX2NtZChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IGlvX3VyaW5nX2NtZCAqaW91Y21kLFxuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmMtMTAxLVx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MsIGJvb2wgb3Blbl9mb3Jfd3JpdGUpXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0xMDIte1xuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmM6MTAzOlx0c3RydWN0IHNjc2lfYnNnX3VyaW5nX2NtZF9wZHUgKnBkdSA9IHNjc2lfYnNnX3VyaW5nX2NtZF9wZHUoaW91Y21kKTtcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTEwNC1cdGNvbnN0IHN0cnVjdCBic2dfdXJpbmdfY21kICpjbWQgPVxuLS1cbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTE3OS1cbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jOjE4MDpcdHJlcS1cdTAwM2VlbmRfaW8gPSBzY3NpX2JzZ191cmluZ19jbWRfZG9uZTtcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTE4MS1cdHJlcS1cdTAwM2VlbmRfaW9fZGF0YSA9IGlvdWNtZDtcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYz0yNzk9c3RydWN0IGJzZ19kZXZpY2UgKnNjc2lfYnNnX3JlZ2lzdGVyX3F1ZXVlKHN0cnVjdCBzY3NpX2RldmljZSAqc2Rldilcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0yODItXHRcdFx0ZGV2X25hbWUoXHUwMDI2c2Rldi1cdTAwM2VzZGV2X2dlbmRldiksIHNjc2lfYnNnX3NnX2lvX2ZuLFxuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmM6MjgzOlx0XHRcdHNjc2lfYnNnX3VyaW5nX2NtZCk7XG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0yODQtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwNDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDExCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gdGhlIFNDU0ktQmxvY2svaW9fdXJpbmcgSW50ZWdyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBzY3NpX2JzZ191cmluZ19jbWRgIGZ1bmN0aW9uLiBJdCBzZWVtcyBpdCYjMzk7cyBiZWluZyBwYXNzZWQgYWxvbmcgdG8gYGJzZ19zZXR1cF9xdWV1ZWAsIHdoaWNoIEkmIzM5O2QgYXNzdW1lIHJlc2lkZXMgaW4gYGJsb2NrL2JzZy5jYC4gTXkgcHJpbWFyeSBpbnRlcmVzdCBoZXJlLCB0aGUgY2VudHJhbCBmb2N1cywgcmV2b2x2ZXMgYXJvdW5kIHRoZSBpbnRlcmFjdGlvbiBvZiBgc2NzaV9ic2dfdXJpbmdfY21kYCBhbmQsIGltcG9ydGFudGx5LCBgc2NzaV9ic2dfbWFwX3VzZXJfYnVmZmVyYC4gVGhvc2UgYXJlIHRoZSBjcml0aWNhbCBzeW1ib2xzIHRvIGtlZXAgYW4gZXllIG9uIGFzIEkgZGlnIGludG8gdGhpcy4KCkkmIzM5O3ZlIGdvdCBhIGNvdXBsZSBvZiBrZXkgY29uZmlndXJhdGlvbiBzeW1ib2xzIHRvIGtlZXAgaW4gbWluZDogYEJMS19ERVZfQlNHYCBhbmQsIG9mIGNvdXJzZSwgYElPX1VSSU5HYC4gSnVzdCBhIHF1aWNrIGNoZWNr4oCmIEkmIzM5O2xsIHZlcmlmeSB0aGF0IGBJT19VUklOR2AgaXMgaW5kZWVkIHRoZSBjb3JyZWN0IGNvbmZpZyBuYW1lLiBXYW50IHRvIGJlIHN1cmUgSSYjMzk7bSB1c2luZyB0aGUgcmlnaHQgbGFiZWxzIGFzIEkgd29yayB0aHJvdWdoIHRoaXMuIAoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwNDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU9fVVJJTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5pdC9LY29uZmlnPTE5MDc9Y29uZmlnIEFJT1xuLS1cbmluaXQvS2NvbmZpZy0xOTE0LVxuaW5pdC9LY29uZmlnOjE5MTU6Y29uZmlnIElPX1VSSU5HXG5pbml0L0tjb25maWctMTkxNi1cdGJvb2wgXCYjMzQ7RW5hYmxlIElPIHVyaW5nIHN1cHBvcnRcJiMzNDsgaWYgRVhQRVJUXG4tLVxuaW5pdC9LY29uZmlnPTE5MjQ9Y29uZmlnIEdDT1ZfUFJPRklMRV9VUklOR1xuLS1cbmluaXQvS2NvbmZpZy0xOTM2LVxuaW5pdC9LY29uZmlnOjE5Mzc6Y29uZmlnIElPX1VSSU5HX01PQ0tfRklMRVxuaW5pdC9LY29uZmlnLTE5MzgtXHR0cmlzdGF0ZSBcJiMzNDtFbmFibGUgaW9fdXJpbmcgbW9jayBmaWxlcyAoRXhwZXJpbWVudGFsKVwmIzM0OyBpZiBFWFBFUlRcbi0tXG5pb191cmluZy9LY29uZmlnLTUtXG5pb191cmluZy9LY29uZmlnOjY6Y29uZmlnIElPX1VSSU5HX1pDUlhcbmlvX3VyaW5nL0tjb25maWctNy1cdGRlZl9ib29sIHlcbi0tXG5pb191cmluZy9LY29uZmlnLTEyLVxuaW9fdXJpbmcvS2NvbmZpZzoxMzpjb25maWcgSU9fVVJJTkdfQlBGXG5pb191cmluZy9LY29uZmlnLTE0LVx0ZGVmX2Jvb2wgeVxuLS1cbmlvX3VyaW5nL0tjb25maWctMTctXG5pb191cmluZy9LY29uZmlnOjE4OmNvbmZpZyBJT19VUklOR19CUEZfT1BTXG5pb191cmluZy9LY29uZmlnLTE5LVx0ZGVmX2Jvb2wgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwNDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDM5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZToKCioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBEYXRhIFBsYW5lKioKCkFscmlnaHQsIHRoZSBpbml0aWFsIGh1bmNoIGFib3V0IGBJT19VUklOR2AgYmVpbmcgdGhlIGtleSBzZWVtcyByaWdodC4gTXkgaW50dWl0aW9uIGlzIHNwb3Qgb24g4oCTIGl0JiMzOTtzIHRoZSBtb2Rlcm4sIGhpZ2gtcGVyZm9ybWFuY2UgYXBwcm9hY2guIEJ1dCB3YWl0LCBiZWZvcmUgSSBnZXQgdG9vIGNhcnJpZWQgYXdheSwgbGV0JiMzOTtzIHN0ZXAgYmFjayBmb3IgYSBtb21lbnQuIEkgbmVlZCB0byBlbnN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbCwgZXNwZWNpYWxseSB3aGVuIHRhbGtpbmcgYWJvdXQgZGF0YSBtb3ZlbWVudC4gV2hhdCBhYm91dCBTQ1NJPyBJdCYjMzk7cyBiZWVuIGFyb3VuZCBmb3IgYWdlcyBhbmQgc3RpbGwgcGxheXMgYSByb2xlIGluIHZhcmlvdXMgc3RvcmFnZSBzY2VuYXJpb3MuIEkgbmVlZCB0byBjb25zaWRlciB0aGF0IGxlZ2FjeSBzdXBwb3J0LgoKT2theSwgbGV0IG1lIGp1c3QgY29uZmlybSB0aGF0IGBCTEtfREVWX0JTR2AgaXMgcHJvcGVybHkgc3VwcG9ydGVkIHdoZW4gYFNDU0lgIGlzIGFsc28uIFRoYXQgYEtjb25maWdgIGVudHJ5IGluIGBkcml2ZXJzL3Njc2kvYOKApiB5ZXAsIHRoZXJlIGl0IGlzLiBMb29rcyBsaWtlIGBCTEtfREVWX0JTR2AgaXMgY29udGluZ2VudCBvbiBgU0NTSWAuIEdvb2QuIEtlZXBpbmcgYWxsIHRoZSByZWxhdGVkIGRlcGVuZGVuY2llcyBzdHJhaWdodCBpcyBoYWxmIHRoZSBiYXR0bGUuIFRoaXMgY29uZmlybXMgdGhhdCBJIGhhdmVuJiMzOTt0IGlnbm9yZWQgYSBwb3RlbnRpYWxseSBzaWduaWZpY2FudCBhc3BlY3Qgb2YgYmxvY2sgZGV2aWNlIGludGVyYWN0aW9uLCBlc3BlY2lhbGx5IGlmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggb2xkZXIgaGFyZHdhcmUgb3Igc3BlY2lmaWMgZW50ZXJwcmlzZSBzdG9yYWdlIGNvbmZpZ3VyYXRpb25zLiBTbywgdGhlIHBpY3R1cmUgaXMgbW9yZSBjb21wbGV0ZSBub3csIGFuZCBJIGNhbiBiZSBjb25maWRlbnQgaW4gbXkgYXNzZXNzbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMDQ6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJMS19ERVZfQlNHJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zY3NpL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zY3NpL0tjb25maWc9MTMxPWNvbmZpZyBDSFJfREVWX1NHXG4tLVxuZHJpdmVycy9zY3NpL0tjb25maWctMTU1LVxuZHJpdmVycy9zY3NpL0tjb25maWc6MTU2OmNvbmZpZyBCTEtfREVWX0JTR1xuZHJpdmVycy9zY3NpL0tjb25maWctMTU3LVx0Ym9vbCBcJiMzNDsvZGV2L2JzZyBzdXBwb3J0IChTRyB2NClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMDQ6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ3OAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHJlYWRpbmcgYW5kIHByb2Nlc3NpbmcgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uOgoKKipBbmFseXppbmcgdGhlIFNDU0kgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBTQ1NJIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgdGV4dCBkaXJlY3RzIG1lIHRvIGBkcml2ZXJzL3Njc2kvS2NvbmZpZ2AsIGFuZCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMTU2LiBJJiMzOTttIGFzc3VtaW5nIHRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGZvciB0aGUgU0NTSSBzdWJzeXN0ZW0gYXJlIGxpa2VseSBkZWZpbmVkLiBUaGlzIGZpbGUgaXMgcHJvYmFibHkgdGhlIGNlbnRyYWwgc291cmNlIGZvciBhbGwgb2YgdGhlIGRpZmZlcmVudCBTQ1NJIGRyaXZlcnMgYW5kIHRoZWlyIGNvbXBpbGUtdGltZSBjaG9pY2VzLiBJIGV4cGVjdCB0byBmaW5kIGRlcGVuZGVuY2llcywgZGVmYXVsdCB2YWx1ZXMsIGhlbHAgdGV4dCwgYW5kIGxpa2VseSBzb21lIGNvbmRpdGlvbmFsIGxvZ2ljIGJhc2VkIG9uIG90aGVyIHN5c3RlbSBjb25maWd1cmF0aW9ucy4gSXQgd2lsbCBiZSBpbnRlcmVzdGluZyB0byBzZWUgaG93IHRoZSBkZXZlbG9wZXJzIGhhdmUgc3RydWN0dXJlZCB0aGUgb3B0aW9ucyBhbmQgd2hpY2ggYXNwZWN0cyBhcmUgbW9zdCBwcm9taW5lbnRseSBmZWF0dXJlZC4gSG9wZWZ1bGx5LCBpdCBpcyB3ZWxsLWNvbW1lbnRlZCBzbyBJIGNhbiBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIGRlc2lnbiBjaG9pY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwNDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvc2NzaS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQ1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNDU6XHRcdCAgKFx1MDAzY2h0dHA6Ly9jZHJkYW8uc291cmNlZm9yZ2UubmV0L1x1MDAzZSkuIENkcGFyYW5vaWEgaXMgYSBoaWdoXG4gMTQ2Olx0XHQgIHF1YWxpdHkgZGlnaXRhbCByZWFkZXIgb2YgYXVkaW8gQ0RzIChcdTAwM2NodHRwOi8vd3d3LnhpcGgub3JnL3BhcmFub2lhL1x1MDAzZSkuXG4gMTQ3Olx0XHQgIEZvciBvdGhlciBkZXZpY2VzLCBpdCYjMzk7cyBwb3NzaWJsZSB0aGF0IHlvdSYjMzk7bGwgaGF2ZSB0byB3cml0ZSB0aGVcbiAxNDg6XHRcdCAgZHJpdmVyIHNvZnR3YXJlIHlvdXJzZWxmLiBQbGVhc2UgcmVhZCB0aGUgZmlsZVxuIDE0OTpcdFx0ICBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vc2NzaS9zY3NpLWdlbmVyaWMucnN0XHUwMDNlIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIDE1MDpcdFxuIDE1MTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlIGFuZCByZWFkXG4gMTUyOlx0XHQgIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9zY3NpL3Njc2kucnN0XHUwMDNlLiBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNnLlxuIDE1MzpcdFxuIDE1NDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuIDE1NTpcdFxuIDE1NjpcdGNvbmZpZyBCTEtfREVWX0JTR1xuIDE1NzpcdFx0Ym9vbCBcJiMzNDsvZGV2L2JzZyBzdXBwb3J0IChTRyB2NClcJiMzNDtcbiAxNTg6XHRcdGRlcGVuZHMgb24gU0NTSVxuIDE1OTpcdFx0ZGVmYXVsdCB5XG4gMTYwOlx0XHRoZWxwXG4gMTYxOlx0XHQgIFNheWluZyBZIGhlcmUgd2lsbCBlbmFibGUgZ2VuZXJpYyBTRyAoU0NTSSBnZW5lcmljKSB2NCBzdXBwb3J0XG4gMTYyOlx0XHQgIGZvciBhbnkgU0NTSSBkZXZpY2UuXG4gMTYzOlx0XG4gMTY0Olx0XHQgIFRoaXMgb3B0aW9uIGlzIHJlcXVpcmVkIGJ5IFVERVYgdG8gYWNjZXNzIGRldmljZSBzZXJpYWwgbnVtYmVycywgZXRjLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwNDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDUwCgkJCQkJCQlvdXRwdXQ6IDEyMgoJCQkJCQkJdGhvdWdodHM6IDE3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGlzIEtlcm5lbCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGRpcmVjdGx5IGltcGFjdHMgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gYEJMS19ERVZfQlNHYCBhbmQgYFNDU0lgLCBhbmQgaXRzIGFsc28gcmVsYXRlZCB0byBgSU9fVVJJTkdgLiBTaW5jZSB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGluIHRoZSBpb191cmluZyBpbnRlZ3JhdGlvbiB3aXRoIFNDU0kgQlNHLCBJJiMzOTttIGdvaW5nIHRvIGV4cGxpY2l0bHkgaW5jbHVkZSBgQkxLX0RFVl9CU0dgLCBgU0NTSWAsIGFuZCBgSU9fVVJJTkdgIGluIG15IGVuYWJsZSBjb25maWd1cmF0aW9ucy4gVGhhdCBmZWVscyBsaWtlIHRoZSBtb3N0IGRpcmVjdCBhbmQgYWNjdXJhdGUgYXBwcm9hY2guCgpUaGUgcHJpbWFyeSBmb2N1cyBoZXJlIGlzIG9uIGFkZHJlc3NpbmcgVGltZS1vZi1DaGVjay10by1UaW1lLW9mLVVzZSAoVE9DVE9VKSB2dWxuZXJhYmlsaXRpZXMgd2l0aGluIHRoZSBpb191cmluZyBjb21tYW5kcyB0YXJnZXRpbmcgU0NTSSBCbG9jayBTRyAoU2NhdHRlci1HYXRoZXIpIGRldmljZXMuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgZml4aW5nIHRoZXNlIHZ1bG5lcmFiaWxpdGllcyBieSBzbmFwc2hvdHRpbmcgU1FFIChTdWJtaXNzaW9uIFF1ZXVlIEVudHJ5KSBmaWVsZHMsIGFuZCB0aGV5JiMzOTtyZSBhbHNvIGFsdGVyaW5nIHRoZSB1c2VyIGJ1ZmZlciBtYXBwaW5nIGxvZ2ljLiBUaGlzIGlzIGRlZmluaXRlbHkgZnVuY3Rpb25hbCBhbmQsIGNydWNpYWxseSwgcmVhY2hhYmxlIHRocm91Z2ggaW9fdXJpbmcgY29tbWFuZHMgdGhhdCBhcmUgZGlyZWN0ZWQgYXQgU0NTSSBCU0cgZGV2aWNlcy4gSXQgbWVhbnMgSSBuZWVkIHRvIGJlIGV4dHJhIHZpZ2lsYW50IHdoZW4gcmV2aWV3aW5nIHRoaXMuCgpJIHNob3VsZCBhbHNvIGRvdWJsZS1jaGVjayB3aGV0aGVyIG90aGVyIGZ1bmN0aW9ucyBhcmUgbW9kaWZpZWQgdGhhdCBhcmUgbm90IGltbWVkaWF0ZWx5IG9idmlvdXMgZnJvbSB0aGUgZGVzY3JpcHRpb24uIEkmIzM5O20gc2VlaW5nIGNoYW5nZXMgdG8gYHNjc2lfYnNnX3VyaW5nX2NtZGAgYW5kIGBzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXJgIGluIHRoZSBkaWZmLgoKSSYjMzk7bSBzYXRpc2ZpZWQgd2l0aCB0aGlzIHJldmlldyBhbmQgd2lsbCBwcm9jZWVkIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMDQ6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfQlNHJiMzNDssCiAgICAmIzM0O1NDU0kmIzM0OywKICAgICYjMzQ7SU9fVVJJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3NpX2JzZ191cmluZ19jbWQmIzM0OywKICAgICYjMzQ7c2NzaV9ic2dfbWFwX3VzZXJfYnVmZmVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIFNDU0kgQlNHIGlvX3VyaW5nIGludGVncmF0aW9uLCBmaXhpbmcgVE9DVE9VIHZ1bG5lcmFiaWxpdGllcyBieSBzbmFwc2hvdHRpbmcgU1FFIGZpZWxkcyBhbmQgY2hhbmdpbmcgdGhlIGJ1ZmZlciBtYXBwaW5nIGxvZ2ljLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSB2aWEgaW9fdXJpbmcgY29tbWFuZHMgdG8gU0NTSSBCU0cgZGV2aWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9CU0cmIzM0OywKICAgICYjMzQ7U0NTSSYjMzQ7LAogICAgJiMzNDtJT19VUklORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Njc2lfYnNnX3VyaW5nX2NtZCYjMzQ7LAogICAgJiMzNDtzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgU0NTSSBCU0cgaW9fdXJpbmcgaW50ZWdyYXRpb24sIGZpeGluZyBUT0NUT1UgdnVsbmVyYWJpbGl0aWVzIGJ5IHNuYXBzaG90dGluZyBTUUUgZmllbGRzIGFuZCBjaGFuZ2luZyB0aGUgYnVmZmVyIG1hcHBpbmcgbG9naWMuIFRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIHZpYSBpb191cmluZyBjb21tYW5kcyB0byBTQ1NJIEJTRyBkZXZpY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjBUMDQ6MTY6MjIuNjc3OTg4OTc1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk1MDY3NjA4MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9CU0dcIixcbiAgICBcIlNDU0lcIixcbiAgICBcIklPX1VSSU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2NzaV9ic2dfdXJpbmdfY21kXCIsXG4gICAgXCJzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBTQ1NJIEJTRyBpb191cmluZyBpbnRlZ3JhdGlvbiwgZml4aW5nIFRPQ1RPVSB2dWxuZXJhYmlsaXRpZXMgYnkgc25hcHNob3R0aW5nIFNRRSBmaWVsZHMgYW5kIGNoYW5naW5nIHRoZSBidWZmZXIgbWFwcGluZyBsb2dpYy4gVGhpcyBpcyBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgdmlhIGlvX3VyaW5nIGNvbW1hbmRzIHRvIFNDU0kgQlNHIGRldmljZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDA0OjE2OjIyLjY3ODAwNDY5NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc2MzY1NzQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZGQ2OTFmYTA5MjMyMWM3NWNiODQyZjliOWRmMDFlMjg0YThhYzc0ZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAyMCAwNDoxNjoyMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYyBiL2RyaXZlcnMvc2NzaS9zY3NpX2JzZy5jXFxuaW5kZXggZTgwZGVjNTMxNzRlYWMuLmY5MGQxOWZkYmQ4ZWE2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvc2NzaS9zY3NpX2JzZy5jXFxuKysrIGIvZHJpdmVycy9zY3NpL3Njc2lfYnNnLmNcXG5AQCAtNzYsMTIgKzc2LDkgQEAgc3RhdGljIGVudW0gcnFfZW5kX2lvX3JldCBzY3NpX2JzZ191cmluZ19jbWRfZG9uZShzdHJ1Y3QgcmVxdWVzdCAqcmVxLFxcbiBcXG4gc3RhdGljIGludCBzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXIoc3RydWN0IHJlcXVlc3QgKnJlcSxcXG4gXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBpb191cmluZ19jbWQgKmlvdWNtZCxcXG4tXFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncywgZ2ZwX3QgZ2ZwX21hc2spXFxuK1xcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MsIGJvb2wgaXNfd3JpdGUsXFxuK1xcdFxcdFxcdFxcdCAgICB1NjQgYnVmX2FkZHIsIHVuc2lnbmVkIGxvbmcgYnVmX2xlbilcXG4ge1xcbi1cXHRjb25zdCBzdHJ1Y3QgYnNnX3VyaW5nX2NtZCAqY21kID0gaW9fdXJpbmdfc3FlMTI4X2NtZChpb3VjbWQtXFx1MDAzZXNxZSwgc3RydWN0IGJzZ191cmluZ19jbWQpO1xcbi1cXHRib29sIGlzX3dyaXRlID0gY21kLVxcdTAwM2Vkb3V0X3hmZXJfbGVuIFxcdTAwM2UgMDtcXG4tXFx0dTY0IGJ1Zl9hZGRyID0gaXNfd3JpdGUgPyBjbWQtXFx1MDAzZWRvdXRfeGZlcnAgOiBjbWQtXFx1MDAzZWRpbl94ZmVycDtcXG4tXFx0dW5zaWduZWQgbG9uZyBidWZfbGVuID0gaXNfd3JpdGUgPyBjbWQtXFx1MDAzZWRvdXRfeGZlcl9sZW4gOiBjbWQtXFx1MDAzZWRpbl94ZmVyX2xlbjtcXG4gXFx0c3RydWN0IGlvdl9pdGVyIGl0ZXI7XFxuIFxcdGludCByZXQ7XFxuIFxcbkBAIC05MSwxMCArODgsMTAgQEAgc3RhdGljIGludCBzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXIoc3RydWN0IHJlcXVlc3QgKnJlcSxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNml0ZXIsIGlvdWNtZCwgaXNzdWVfZmxhZ3MpO1xcbiBcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4tXFx0XFx0cmV0ID0gYmxrX3JxX21hcF91c2VyX2lvdihyZXEtXFx1MDAzZXEsIHJlcSwgTlVMTCwgXFx1MDAyNml0ZXIsIGdmcF9tYXNrKTtcXG4rXFx0XFx0cmV0ID0gYmxrX3JxX21hcF91c2VyX2lvdihyZXEtXFx1MDAzZXEsIHJlcSwgTlVMTCwgXFx1MDAyNml0ZXIsIEdGUF9LRVJORUwpO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRyZXQgPSBibGtfcnFfbWFwX3VzZXIocmVxLVxcdTAwM2VxLCByZXEsIE5VTEwsIHVwdHI2NChidWZfYWRkciksXFxuLVxcdFxcdFxcdFxcdCAgICAgIGJ1Zl9sZW4sIGdmcF9tYXNrKTtcXG4rXFx0XFx0XFx0XFx0ICAgICAgYnVmX2xlbiwgR0ZQX0tFUk5FTCk7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuQEAgLTEwNCwyMSArMTAxLDI4IEBAIHN0YXRpYyBpbnQgc2NzaV9ic2dfdXJpbmdfY21kKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgaW9fdXJpbmdfY21kICppb3VjXFxuIFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MsIGJvb2wgb3Blbl9mb3Jfd3JpdGUpXFxuIHtcXG4gXFx0c3RydWN0IHNjc2lfYnNnX3VyaW5nX2NtZF9wZHUgKnBkdSA9IHNjc2lfYnNnX3VyaW5nX2NtZF9wZHUoaW91Y21kKTtcXG4tXFx0Y29uc3Qgc3RydWN0IGJzZ191cmluZ19jbWQgKmNtZCA9IGlvX3VyaW5nX3NxZTEyOF9jbWQoaW91Y21kLVxcdTAwM2VzcWUsIHN0cnVjdCBic2dfdXJpbmdfY21kKTtcXG4rXFx0Y29uc3Qgc3RydWN0IGJzZ191cmluZ19jbWQgKmNtZCA9XFxuK1xcdFxcdGlvX3VyaW5nX3NxZTEyOF9jbWQoaW91Y21kLVxcdTAwM2VzcWUsIHN0cnVjdCBic2dfdXJpbmdfY21kKTtcXG4gXFx0c3RydWN0IHNjc2lfY21uZCAqc2NtZDtcXG4gXFx0c3RydWN0IHJlcXVlc3QgKnJlcTtcXG4gXFx0YmxrX21xX3JlcV9mbGFnc190IGJsa19mbGFncyA9IDA7XFxuLVxcdGdmcF90IGdmcF9tYXNrID0gR0ZQX0tFUk5FTDtcXG4rXFx0LyogU25hcHNob3QgU1FFIGZpZWxkcyB1c2VkIGZvciB2YWxpZGF0aW9uIGFuZCBidWZmZXIgbWFwcGluZy4gKi9cXG4rXFx0dTY0IHJlcXVlc3QgPSBSRUFEX09OQ0UoY21kLVxcdTAwM2VyZXF1ZXN0KTtcXG4rXFx0dTMyIHJlcXVlc3RfbGVuID0gUkVBRF9PTkNFKGNtZC1cXHUwMDNlcmVxdWVzdF9sZW4pO1xcbitcXHR1NjQgZG91dF94ZmVycCA9IFJFQURfT05DRShjbWQtXFx1MDAzZWRvdXRfeGZlcnApO1xcbitcXHR1MzIgZG91dF94ZmVyX2xlbiA9IFJFQURfT05DRShjbWQtXFx1MDAzZWRvdXRfeGZlcl9sZW4pO1xcbitcXHR1NjQgZGluX3hmZXJwID0gUkVBRF9PTkNFKGNtZC1cXHUwMDNlZGluX3hmZXJwKTtcXG4rXFx0dTMyIGRpbl94ZmVyX2xlbiA9IFJFQURfT05DRShjbWQtXFx1MDAzZWRpbl94ZmVyX2xlbik7XFxuIFxcdGludCByZXQ7XFxuIFxcbiBcXHRpZiAoY21kLVxcdTAwM2Vwcm90b2NvbCAhPSBCU0dfUFJPVE9DT0xfU0NTSSB8fFxcbiBcXHQgICAgY21kLVxcdTAwM2VzdWJwcm90b2NvbCAhPSBCU0dfU1VCX1BST1RPQ09MX1NDU0lfQ01EKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuLVxcdGlmICghY21kLVxcdTAwM2VyZXF1ZXN0IHx8IGNtZC1cXHUwMDNlcmVxdWVzdF9sZW4gPT0gMClcXG4rXFx0aWYgKCFyZXF1ZXN0IHx8IHJlcXVlc3RfbGVuID09IDApXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4tXFx0aWYgKGNtZC1cXHUwMDNlZG91dF94ZmVyX2xlbiBcXHUwMDI2XFx1MDAyNiBjbWQtXFx1MDAzZWRpbl94ZmVyX2xlbikge1xcbitcXHRpZiAoZG91dF94ZmVyX2xlbiBcXHUwMDI2XFx1MDAyNiBkaW5feGZlcl9sZW4pIHtcXG4gXFx0XFx0cHJfd2Fybl9vbmNlKFxcXCJCSURJIHN1cHBvcnQgaW4gYnNnIGhhcyBiZWVuIHJlbW92ZWQuXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXHR9XFxuQEAgLTEyNiwyNSArMTMwLDIzIEBAIHN0YXRpYyBpbnQgc2NzaV9ic2dfdXJpbmdfY21kKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgaW9fdXJpbmdfY21kICppb3VjXFxuIFxcdGlmIChjbWQtXFx1MDAzZWRvdXRfaW92ZWNfY291bnQgXFx1MDAzZSAwIHx8IGNtZC1cXHUwMDNlZGluX2lvdmVjX2NvdW50IFxcdTAwM2UgMClcXG4gXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXG4tXFx0aWYgKGlzc3VlX2ZsYWdzIFxcdTAwMjYgSU9fVVJJTkdfRl9OT05CTE9DSykge1xcbitcXHRpZiAoaXNzdWVfZmxhZ3MgXFx1MDAyNiBJT19VUklOR19GX05PTkJMT0NLKVxcbiBcXHRcXHRibGtfZmxhZ3MgPSBCTEtfTVFfUkVRX05PV0FJVDtcXG4tXFx0XFx0Z2ZwX21hc2sgPSBHRlBfTk9XQUlUO1xcbi1cXHR9XFxuIFxcbi1cXHRyZXEgPSBzY3NpX2FsbG9jX3JlcXVlc3QocSwgY21kLVxcdTAwM2Vkb3V0X3hmZXJfbGVuID9cXG4rXFx0cmVxID0gc2NzaV9hbGxvY19yZXF1ZXN0KHEsIGRvdXRfeGZlcl9sZW4gP1xcbiBcXHRcXHRcXHRcXHQgUkVRX09QX0RSVl9PVVQgOiBSRVFfT1BfRFJWX0lOLCBibGtfZmxhZ3MpO1xcbiBcXHRpZiAoSVNfRVJSKHJlcSkpXFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKHJlcSk7XFxuIFxcbiBcXHRzY21kID0gYmxrX21xX3JxX3RvX3BkdShyZXEpO1xcbi1cXHRpZiAoY21kLVxcdTAwM2VyZXF1ZXN0X2xlbiBcXHUwMDNlIHNpemVvZihzY21kLVxcdTAwM2VjbW5kKSkge1xcbitcXHRpZiAocmVxdWVzdF9sZW4gXFx1MDAzZSBzaXplb2Yoc2NtZC1cXHUwMDNlY21uZCkpIHtcXG4gXFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4gXFx0XFx0Z290byBvdXRfZnJlZV9yZXE7XFxuIFxcdH1cXG4tXFx0c2NtZC1cXHUwMDNlY21kX2xlbiA9IGNtZC1cXHUwMDNlcmVxdWVzdF9sZW47XFxuK1xcdHNjbWQtXFx1MDAzZWNtZF9sZW4gPSByZXF1ZXN0X2xlbjtcXG4gXFx0c2NtZC1cXHUwMDNlYWxsb3dlZCA9IFNHX0RFRkFVTFRfUkVUUklFUztcXG4gXFxuLVxcdGlmIChjb3B5X2Zyb21fdXNlcihzY21kLVxcdTAwM2VjbW5kLCB1cHRyNjQoY21kLVxcdTAwM2VyZXF1ZXN0KSwgY21kLVxcdTAwM2VyZXF1ZXN0X2xlbikpIHtcXG4rXFx0aWYgKGNvcHlfZnJvbV91c2VyKHNjbWQtXFx1MDAzZWNtbmQsIHVwdHI2NChyZXF1ZXN0KSwgcmVxdWVzdF9sZW4pKSB7XFxuIFxcdFxcdHJldCA9IC1FRkFVTFQ7XFxuIFxcdFxcdGdvdG8gb3V0X2ZyZWVfcmVxO1xcbiBcXHR9XFxuQEAgLTE1OCw4ICsxNjAsMTMgQEAgc3RhdGljIGludCBzY3NpX2JzZ191cmluZ19jbWQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBpb191cmluZ19jbWQgKmlvdWNcXG4gXFx0c2NtZC1cXHUwMDNlc2Vuc2VfbGVuID0gY21kLVxcdTAwM2VtYXhfcmVzcG9uc2VfbGVuID9cXG4gXFx0XFx0bWluKGNtZC1cXHUwMDNlbWF4X3Jlc3BvbnNlX2xlbiwgU0NTSV9TRU5TRV9CVUZGRVJTSVpFKSA6IFNDU0lfU0VOU0VfQlVGRkVSU0laRTtcXG4gXFxuLVxcdGlmIChjbWQtXFx1MDAzZWRvdXRfeGZlcl9sZW4gfHwgY21kLVxcdTAwM2VkaW5feGZlcl9sZW4pIHtcXG4tXFx0XFx0cmV0ID0gc2NzaV9ic2dfbWFwX3VzZXJfYnVmZmVyKHJlcSwgaW91Y21kLCBpc3N1ZV9mbGFncywgZ2ZwX21hc2spO1xcbitcXHRpZiAoZG91dF94ZmVyX2xlbiB8fCBkaW5feGZlcl9sZW4pIHtcXG4rXFx0XFx0Ym9vbCBpc193cml0ZSA9IGRvdXRfeGZlcl9sZW4gXFx1MDAzZSAwO1xcbitcXHRcXHR1NjQgYnVmX2FkZHIgPSBpc193cml0ZSA/IGRvdXRfeGZlcnAgOiBkaW5feGZlcnA7XFxuK1xcdFxcdHVuc2lnbmVkIGxvbmcgYnVmX2xlbiA9IGlzX3dyaXRlID8gZG91dF94ZmVyX2xlbiA6IGRpbl94ZmVyX2xlbjtcXG4rXFxuK1xcdFxcdHJldCA9IHNjc2lfYnNnX21hcF91c2VyX2J1ZmZlcihyZXEsIGlvdWNtZCwgaXNzdWVfZmxhZ3MsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICBpc193cml0ZSwgYnVmX2FkZHIsIGJ1Zl9sZW4pO1xcbiBcXHRcXHRpZiAocmV0KVxcbiBcXHRcXHRcXHRnb3RvIG91dF9mcmVlX3JlcTtcXG4gXFx0XFx0cGR1LVxcdTAwM2ViaW8gPSByZXEtXFx1MDAzZWJpbztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMDQ6MTY6MjMuMjU1NDMwODdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4OTI5MzA2OTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfQlNHXCIsXG4gICAgXCJTQ1NJXCIsXG4gICAgXCJJT19VUklOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjc2lfYnNnX3VyaW5nX2NtZFwiLFxuICAgIFwic2NzaV9ic2dfbWFwX3VzZXJfYnVmZmVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgU0NTSSBCU0cgaW9fdXJpbmcgaW50ZWdyYXRpb24sIGZpeGluZyBUT0NUT1UgdnVsbmVyYWJpbGl0aWVzIGJ5IHNuYXBzaG90dGluZyBTUUUgZmllbGRzIGFuZCBjaGFuZ2luZyB0aGUgYnVmZmVyIG1hcHBpbmcgbG9naWMuIFRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIHZpYSBpb191cmluZyBjb21tYW5kcyB0byBTQ1NJIEJTRyBkZXZpY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGRkNjkxZmEwOTIzMjFjNzVjYjg0MmY5YjlkZjAxZTI4NGE4YWM3NGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyMCAwNDoxNjoyMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zY3NpX2JzZy5jIGIvZHJpdmVycy9zY3NpL3Njc2lfYnNnLmNcbmluZGV4IGU4MGRlYzUzMTc0ZWFjLi5mOTBkMTlmZGJkOGVhNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvc2NzaS9zY3NpX2JzZy5jXG4rKysgYi9kcml2ZXJzL3Njc2kvc2NzaV9ic2cuY1xuQEAgLTc2LDEyICs3Niw5IEBAIHN0YXRpYyBlbnVtIHJxX2VuZF9pb19yZXQgc2NzaV9ic2dfdXJpbmdfY21kX2RvbmUoc3RydWN0IHJlcXVlc3QgKnJlcSxcbiBcbiBzdGF0aWMgaW50IHNjc2lfYnNnX21hcF91c2VyX2J1ZmZlcihzdHJ1Y3QgcmVxdWVzdCAqcmVxLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBpb191cmluZ19jbWQgKmlvdWNtZCxcbi1cdFx0XHRcdCAgICB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MsIGdmcF90IGdmcF9tYXNrKVxuK1x0XHRcdFx0ICAgIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncywgYm9vbCBpc193cml0ZSxcbitcdFx0XHRcdCAgICB1NjQgYnVmX2FkZHIsIHVuc2lnbmVkIGxvbmcgYnVmX2xlbilcbiB7XG4tXHRjb25zdCBzdHJ1Y3QgYnNnX3VyaW5nX2NtZCAqY21kID0gaW9fdXJpbmdfc3FlMTI4X2NtZChpb3VjbWQtXHUwMDNlc3FlLCBzdHJ1Y3QgYnNnX3VyaW5nX2NtZCk7XG4tXHRib29sIGlzX3dyaXRlID0gY21kLVx1MDAzZWRvdXRfeGZlcl9sZW4gXHUwMDNlIDA7XG4tXHR1NjQgYnVmX2FkZHIgPSBpc193cml0ZSA/IGNtZC1cdTAwM2Vkb3V0X3hmZXJwIDogY21kLVx1MDAzZWRpbl94ZmVycDtcbi1cdHVuc2lnbmVkIGxvbmcgYnVmX2xlbiA9IGlzX3dyaXRlID8gY21kLVx1MDAzZWRvdXRfeGZlcl9sZW4gOiBjbWQtXHUwMDNlZGluX3hmZXJfbGVuO1xuIFx0c3RydWN0IGlvdl9pdGVyIGl0ZXI7XG4gXHRpbnQgcmV0O1xuIFxuQEAgLTkxLDEwICs4OCwxMCBAQCBzdGF0aWMgaW50IHNjc2lfYnNnX21hcF91c2VyX2J1ZmZlcihzdHJ1Y3QgcmVxdWVzdCAqcmVxLFxuIFx0XHRcdFx0XHRcdFx1MDAyNml0ZXIsIGlvdWNtZCwgaXNzdWVfZmxhZ3MpO1xuIFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIFx0XHRcdHJldHVybiByZXQ7XG4tXHRcdHJldCA9IGJsa19ycV9tYXBfdXNlcl9pb3YocmVxLVx1MDAzZXEsIHJlcSwgTlVMTCwgXHUwMDI2aXRlciwgZ2ZwX21hc2spO1xuK1x0XHRyZXQgPSBibGtfcnFfbWFwX3VzZXJfaW92KHJlcS1cdTAwM2VxLCByZXEsIE5VTEwsIFx1MDAyNml0ZXIsIEdGUF9LRVJORUwpO1xuIFx0fSBlbHNlIHtcbiBcdFx0cmV0ID0gYmxrX3JxX21hcF91c2VyKHJlcS1cdTAwM2VxLCByZXEsIE5VTEwsIHVwdHI2NChidWZfYWRkciksXG4tXHRcdFx0XHQgICAgICBidWZfbGVuLCBnZnBfbWFzayk7XG4rXHRcdFx0XHQgICAgICBidWZfbGVuLCBHRlBfS0VSTkVMKTtcbiBcdH1cbiBcbiBcdHJldHVybiByZXQ7XG5AQCAtMTA0LDIxICsxMDEsMjggQEAgc3RhdGljIGludCBzY3NpX2JzZ191cmluZ19jbWQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBpb191cmluZ19jbWQgKmlvdWNcbiBcdFx0XHQgICAgICAgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzLCBib29sIG9wZW5fZm9yX3dyaXRlKVxuIHtcbiBcdHN0cnVjdCBzY3NpX2JzZ191cmluZ19jbWRfcGR1ICpwZHUgPSBzY3NpX2JzZ191cmluZ19jbWRfcGR1KGlvdWNtZCk7XG4tXHRjb25zdCBzdHJ1Y3QgYnNnX3VyaW5nX2NtZCAqY21kID0gaW9fdXJpbmdfc3FlMTI4X2NtZChpb3VjbWQtXHUwMDNlc3FlLCBzdHJ1Y3QgYnNnX3VyaW5nX2NtZCk7XG4rXHRjb25zdCBzdHJ1Y3QgYnNnX3VyaW5nX2NtZCAqY21kID1cbitcdFx0aW9fdXJpbmdfc3FlMTI4X2NtZChpb3VjbWQtXHUwMDNlc3FlLCBzdHJ1Y3QgYnNnX3VyaW5nX2NtZCk7XG4gXHRzdHJ1Y3Qgc2NzaV9jbW5kICpzY21kO1xuIFx0c3RydWN0IHJlcXVlc3QgKnJlcTtcbiBcdGJsa19tcV9yZXFfZmxhZ3NfdCBibGtfZmxhZ3MgPSAwO1xuLVx0Z2ZwX3QgZ2ZwX21hc2sgPSBHRlBfS0VSTkVMO1xuK1x0LyogU25hcHNob3QgU1FFIGZpZWxkcyB1c2VkIGZvciB2YWxpZGF0aW9uIGFuZCBidWZmZXIgbWFwcGluZy4gKi9cbitcdHU2NCByZXF1ZXN0ID0gUkVBRF9PTkNFKGNtZC1cdTAwM2VyZXF1ZXN0KTtcbitcdHUzMiByZXF1ZXN0X2xlbiA9IFJFQURfT05DRShjbWQtXHUwMDNlcmVxdWVzdF9sZW4pO1xuK1x0dTY0IGRvdXRfeGZlcnAgPSBSRUFEX09OQ0UoY21kLVx1MDAzZWRvdXRfeGZlcnApO1xuK1x0dTMyIGRvdXRfeGZlcl9sZW4gPSBSRUFEX09OQ0UoY21kLVx1MDAzZWRvdXRfeGZlcl9sZW4pO1xuK1x0dTY0IGRpbl94ZmVycCA9IFJFQURfT05DRShjbWQtXHUwMDNlZGluX3hmZXJwKTtcbitcdHUzMiBkaW5feGZlcl9sZW4gPSBSRUFEX09OQ0UoY21kLVx1MDAzZWRpbl94ZmVyX2xlbik7XG4gXHRpbnQgcmV0O1xuIFxuIFx0aWYgKGNtZC1cdTAwM2Vwcm90b2NvbCAhPSBCU0dfUFJPVE9DT0xfU0NTSSB8fFxuIFx0ICAgIGNtZC1cdTAwM2VzdWJwcm90b2NvbCAhPSBCU0dfU1VCX1BST1RPQ09MX1NDU0lfQ01EKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbi1cdGlmICghY21kLVx1MDAzZXJlcXVlc3QgfHwgY21kLVx1MDAzZXJlcXVlc3RfbGVuID09IDApXG4rXHRpZiAoIXJlcXVlc3QgfHwgcmVxdWVzdF9sZW4gPT0gMClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRpZiAoY21kLVx1MDAzZWRvdXRfeGZlcl9sZW4gXHUwMDI2XHUwMDI2IGNtZC1cdTAwM2VkaW5feGZlcl9sZW4pIHtcbitcdGlmIChkb3V0X3hmZXJfbGVuIFx1MDAyNlx1MDAyNiBkaW5feGZlcl9sZW4pIHtcbiBcdFx0cHJfd2Fybl9vbmNlKFwiQklESSBzdXBwb3J0IGluIGJzZyBoYXMgYmVlbiByZW1vdmVkLlxcblwiKTtcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFx0fVxuQEAgLTEyNiwyNSArMTMwLDIzIEBAIHN0YXRpYyBpbnQgc2NzaV9ic2dfdXJpbmdfY21kKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgaW9fdXJpbmdfY21kICppb3VjXG4gXHRpZiAoY21kLVx1MDAzZWRvdXRfaW92ZWNfY291bnQgXHUwMDNlIDAgfHwgY21kLVx1MDAzZWRpbl9pb3ZlY19jb3VudCBcdTAwM2UgMClcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuLVx0aWYgKGlzc3VlX2ZsYWdzIFx1MDAyNiBJT19VUklOR19GX05PTkJMT0NLKSB7XG4rXHRpZiAoaXNzdWVfZmxhZ3MgXHUwMDI2IElPX1VSSU5HX0ZfTk9OQkxPQ0spXG4gXHRcdGJsa19mbGFncyA9IEJMS19NUV9SRVFfTk9XQUlUO1xuLVx0XHRnZnBfbWFzayA9IEdGUF9OT1dBSVQ7XG4tXHR9XG4gXG4tXHRyZXEgPSBzY3NpX2FsbG9jX3JlcXVlc3QocSwgY21kLVx1MDAzZWRvdXRfeGZlcl9sZW4gP1xuK1x0cmVxID0gc2NzaV9hbGxvY19yZXF1ZXN0KHEsIGRvdXRfeGZlcl9sZW4gP1xuIFx0XHRcdFx0IFJFUV9PUF9EUlZfT1VUIDogUkVRX09QX0RSVl9JTiwgYmxrX2ZsYWdzKTtcbiBcdGlmIChJU19FUlIocmVxKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIocmVxKTtcbiBcbiBcdHNjbWQgPSBibGtfbXFfcnFfdG9fcGR1KHJlcSk7XG4tXHRpZiAoY21kLVx1MDAzZXJlcXVlc3RfbGVuIFx1MDAzZSBzaXplb2Yoc2NtZC1cdTAwM2VjbW5kKSkge1xuK1x0aWYgKHJlcXVlc3RfbGVuIFx1MDAzZSBzaXplb2Yoc2NtZC1cdTAwM2VjbW5kKSkge1xuIFx0XHRyZXQgPSAtRUlOVkFMO1xuIFx0XHRnb3RvIG91dF9mcmVlX3JlcTtcbiBcdH1cbi1cdHNjbWQtXHUwMDNlY21kX2xlbiA9IGNtZC1cdTAwM2VyZXF1ZXN0X2xlbjtcbitcdHNjbWQtXHUwMDNlY21kX2xlbiA9IHJlcXVlc3RfbGVuO1xuIFx0c2NtZC1cdTAwM2VhbGxvd2VkID0gU0dfREVGQVVMVF9SRVRSSUVTO1xuIFxuLVx0aWYgKGNvcHlfZnJvbV91c2VyKHNjbWQtXHUwMDNlY21uZCwgdXB0cjY0KGNtZC1cdTAwM2VyZXF1ZXN0KSwgY21kLVx1MDAzZXJlcXVlc3RfbGVuKSkge1xuK1x0aWYgKGNvcHlfZnJvbV91c2VyKHNjbWQtXHUwMDNlY21uZCwgdXB0cjY0KHJlcXVlc3QpLCByZXF1ZXN0X2xlbikpIHtcbiBcdFx0cmV0ID0gLUVGQVVMVDtcbiBcdFx0Z290byBvdXRfZnJlZV9yZXE7XG4gXHR9XG5AQCAtMTU4LDggKzE2MCwxMyBAQCBzdGF0aWMgaW50IHNjc2lfYnNnX3VyaW5nX2NtZChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IGlvX3VyaW5nX2NtZCAqaW91Y1xuIFx0c2NtZC1cdTAwM2VzZW5zZV9sZW4gPSBjbWQtXHUwMDNlbWF4X3Jlc3BvbnNlX2xlbiA/XG4gXHRcdG1pbihjbWQtXHUwMDNlbWF4X3Jlc3BvbnNlX2xlbiwgU0NTSV9TRU5TRV9CVUZGRVJTSVpFKSA6IFNDU0lfU0VOU0VfQlVGRkVSU0laRTtcbiBcbi1cdGlmIChjbWQtXHUwMDNlZG91dF94ZmVyX2xlbiB8fCBjbWQtXHUwMDNlZGluX3hmZXJfbGVuKSB7XG4tXHRcdHJldCA9IHNjc2lfYnNnX21hcF91c2VyX2J1ZmZlcihyZXEsIGlvdWNtZCwgaXNzdWVfZmxhZ3MsIGdmcF9tYXNrKTtcbitcdGlmIChkb3V0X3hmZXJfbGVuIHx8IGRpbl94ZmVyX2xlbikge1xuK1x0XHRib29sIGlzX3dyaXRlID0gZG91dF94ZmVyX2xlbiBcdTAwM2UgMDtcbitcdFx0dTY0IGJ1Zl9hZGRyID0gaXNfd3JpdGUgPyBkb3V0X3hmZXJwIDogZGluX3hmZXJwO1xuK1x0XHR1bnNpZ25lZCBsb25nIGJ1Zl9sZW4gPSBpc193cml0ZSA/IGRvdXRfeGZlcl9sZW4gOiBkaW5feGZlcl9sZW47XG4rXG4rXHRcdHJldCA9IHNjc2lfYnNnX21hcF91c2VyX2J1ZmZlcihyZXEsIGlvdWNtZCwgaXNzdWVfZmxhZ3MsXG4rXHRcdFx0XHRcdCAgICAgICBpc193cml0ZSwgYnVmX2FkZHIsIGJ1Zl9sZW4pO1xuIFx0XHRpZiAocmV0KVxuIFx0XHRcdGdvdG8gb3V0X2ZyZWVfcmVxO1xuIFx0XHRwZHUtXHUwMDNlYmlvID0gcmVxLVx1MDAzZWJpbztcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDA0OjE2OjIzLjI1NTQ2MDg2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUxMzI1MDI0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBTQ1NJIEJTRyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0J3MgdG91Y2hpbmcgYGRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jYCwgc3BlY2lmaWNhbGx5IG1lc3Npbmcgd2l0aCBgc2NzaV9ic2dfdXJpbmdfY21kYCBhbmQgYHNjc2lfYnNnX21hcF91c2VyX2J1ZmZlcmAuIEkgc2VlIHRoZXkncmUgdXNpbmcgYFJFQURfT05DRWAgdG8gc25hcHNob3Qgc29tZSBTUUUgZmllbGRzLiBTbWFydCBtb3ZlIOKAkyB0aGF0J3MgZGVmaW5pdGVseSBhIGdvb2Qgd2F5IHRvIG1pdGlnYXRlIFRPQ1RPVSB2dWxuZXJhYmlsaXRpZXMsIG1ha2luZyBzdXJlIHRoZSB2YWx1ZXMgZG9uJ3QgZ2V0IGNoYW5nZWQgYmV0d2VlbiB3aGVuIHRoZXkncmUgY2hlY2tlZCBhbmQgd2hlbiB0aGV5J3JlIHVzZWQuIFJlbW92aW5nIHRoZSBgZ2ZwX21hc2tgIGZyb20gYHNjc2lfYnNnX21hcF91c2VyX2J1ZmZlcmAgYW5kIGhhcmRjb2RpbmcgYEdGUF9LRVJORUxgIGlzIGFuIGludGVyZXN0aW5nIGNob2ljZTsgSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHdoeSB0aGV5IG1hZGUgdGhhdCBkZWNpc2lvbi4gU2VlbXMgbGlrZSBhIGRlbGliZXJhdGUgdHJhZGUtb2ZmLlxuXG5UaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgY29yZSBtb2RpZmljYXRpb24gdG8gaG93IHRoZSBTQ1NJIEJsb2NrIFN1YnN5c3RlbSBHYXRld2F5IChCU0cpIGludGVyYWN0cyB3aXRoIGlvX3VyaW5nLiBUaGlzIGRlZmluaXRlbHkgbmVlZHMgc29tZSBzZXJpb3VzIGZ1enppbmcgYXR0ZW50aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZ3MgYXJlIHJlcXVpcmVkIHRvIGVuYWJsZSB0aGUgcmVsZXZhbnQgcGFydHMgb2YgdGhlIGNvZGUuIExldCBtZSBxdWlja2x5IHVzZSBgZ3JlcHBlcmAgdG8gc2VlIGlmIEkgY2FuIHBpbnBvaW50IHRoZSBjb25maWcgb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggYGRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU0OSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDA0OjE2OjI3Ljc2ODcxMzc1MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTk2NjE5OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2NzaV9ic2cub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Njc2kvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvc2NzaS9NYWtlZmlsZT0xNjk9c2NzaV9tb2QtJChDT05GSUdfU0NTSV9ESClcXHQrPSBzY3NpX2RoLm9cXG5kcml2ZXJzL3Njc2kvTWFrZWZpbGU6MTcwOnNjc2lfbW9kLSQoQ09ORklHX0JMS19ERVZfQlNHKVxcdCs9IHNjc2lfYnNnLm9cXG5kcml2ZXJzL3Njc2kvTWFrZWZpbGUtMTcxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwNDoxNjoyNy45ODgzODY0NThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTA5MTg3Njg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBCbG9jayBEZXZpY2UgU0cgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIEknbSBkaXZpbmcgaW50byB0aGlzLiBUaGUgY29uZmlnIGluIHF1ZXN0aW9uIGlzIGBCTEtfREVWX0JTR2AuIEZpcnN0IGluc3RpbmN0IGlzIHRvIHF1aWNrbHkgY2hlY2ssIGlzIHRoYXQgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzZXR0aW5nPyBQcm9iYWJseSBub3QsIHRoZXJlIGFyZSBvZnRlbiByZWxhdGVkIG9wdGlvbnMuIExldCBtZSBxdWlja2x5IHNjYW4gZm9yIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBkZWVwZXIuIEknbGwgbmVlZCB0byBnbyBkaXJlY3RseSB0byB0aGUgc291cmNlLiBUaGUgS2NvbmZpZyBmaWxlcyBhcmUgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gbG9naWMgbGl2ZXMuIExldCBtZSBoZWFkIG92ZXIgdG8gYGRyaXZlcnMvc2NzaS9LY29uZmlnYCBhbmQgc2VhcmNoIGZvciBgQkxLX0RFVl9CU0dgLiBUaGF0IHNob3VsZCB0ZWxsIG1lIHRoZSBkZXBlbmRlbmNpZXMsIHBvdGVudGlhbGx5IHJlbGF0ZWQgb3B0aW9ucywgYW5kIHdoYXQncyBnb2luZyBvbiB3aXRoIHRoaXMgc3BlY2lmaWMgYmxvY2sgZGV2aWNlIFNHIHNldHRpbmcuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTM1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMDQ6MTY6MzAuODk3NTc2NDU1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDYzODAzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9CU0dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL0tjb25maWc9NDU9Y29uZmlnIEJMS19DR1JPVVBfUFVOVF9CSU9cXG4tLVxcbmJsb2NrL0tjb25maWctNDctXFxuYmxvY2svS2NvbmZpZzo0ODpjb25maWcgQkxLX0RFVl9CU0dfQ09NTU9OXFxuYmxvY2svS2NvbmZpZy00OS1cXHR0cmlzdGF0ZVxcbi0tXFxuYmxvY2svS2NvbmZpZz01MT1jb25maWcgQkxLX0lDUVxcbi0tXFxuYmxvY2svS2NvbmZpZy01My1cXG5ibG9jay9LY29uZmlnOjU0OmNvbmZpZyBCTEtfREVWX0JTR0xJQlxcbmJsb2NrL0tjb25maWctNTUtXFx0Ym9vbCBcXFwiQmxvY2sgbGF5ZXIgU0cgc3VwcG9ydCB2NCBoZWxwZXIgbGliXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwNDoxNjozMS4wMjIyMjMyOThaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODE2OTk3NTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbHJlYWR5IHByZXR0eSBmYW1pbGlhciB3aXRoIHRoZSBMaW51eCBrZXJuZWwgYW5kIGl0cyBjb25maWd1cmF0aW9uIHN5c3RlbTpcblxuKipDaGVja2luZyB0aGUgS2NvbmZpZyBmb3IgQkxLX0RFVl9CU0cqKlxuXG5IbW0sIHNvIGBCTEtfREVWX0JTR2AgaXMgZmxhZ2dlZCBhcyBiZWluZyB3aXRoaW4gYGJsb2NrL0tjb25maWdgPyBUaGF0J3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LiBJdCBtZWFucyB0aGUgZmVhdHVyZSBpcyBsaWtlbHkgY29udHJvbGxlZCBieSBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGRlY2xhcmVkIHRoZXJlLiBMZXQncyBpbW1lZGlhdGVseSBnbyBhbmQgKnZlcmlmeSogdGhhdCBpdCBpcyBpbmRlZWQgZGVmaW5lZCB3aXRoaW4gYGJsb2NrL0tjb25maWdgLiBUaGlzIHdpbGwgYWxsb3cgbWUgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcywgZGVmYXVsdHMsIGhlbHAgdGV4dCBhbmQgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgZGVwZW5kIG9uIG9yIHJlbGF0ZSB0byBgQkxLX0RFVl9CU0dgLiBFc3NlbnRpYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgb3B0aW9uIGZpdHMgaW50byB0aGUgbGFyZ2VyIHBpY3R1cmUgb2YgYmxvY2sgZGV2aWNlIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoZSBrZXJuZWwuIEkgY2FuIHRoZW4gdXNlIHRoYXQgaW5mb3JtYXRpb24gdG8gYWRqdXN0IGNvbmZpZ3VyYXRpb25zIGFjY29yZGluZ2x5LCB0byBkZXRlcm1pbmUgd2hhdCdzIGF2YWlsYWJsZSBhbmQgd2hhdCBzZXR0aW5ncyBhZmZlY3QgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MjAsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwNDoxNjozMy44MzkyMjMwNTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI0NzAyNjc3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9CU0dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL0tjb25maWc9NDU9Y29uZmlnIEJMS19DR1JPVVBfUFVOVF9CSU9cXG4tLVxcbmJsb2NrL0tjb25maWctNDctXFxuYmxvY2svS2NvbmZpZzo0ODpjb25maWcgQkxLX0RFVl9CU0dfQ09NTU9OXFxuYmxvY2svS2NvbmZpZy00OS1cXHR0cmlzdGF0ZVxcbi0tXFxuYmxvY2svS2NvbmZpZz01MT1jb25maWcgQkxLX0lDUVxcbi0tXFxuYmxvY2svS2NvbmZpZy01My1cXG5ibG9jay9LY29uZmlnOjU0OmNvbmZpZyBCTEtfREVWX0JTR0xJQlxcbmJsb2NrL0tjb25maWctNTUtXFx0Ym9vbCBcXFwiQmxvY2sgbGF5ZXIgU0cgc3VwcG9ydCB2NCBoZWxwZXIgbGliXFxcIlxcbi0tXFxuZHJpdmVycy9zY3NpL0tjb25maWc9MTMxPWNvbmZpZyBDSFJfREVWX1NHXFxuLS1cXG5kcml2ZXJzL3Njc2kvS2NvbmZpZy0xNTUtXFxuZHJpdmVycy9zY3NpL0tjb25maWc6MTU2OmNvbmZpZyBCTEtfREVWX0JTR1xcbmRyaXZlcnMvc2NzaS9LY29uZmlnLTE1Ny1cXHRib29sIFxcXCIvZGV2L2JzZyBzdXBwb3J0IChTRyB2NClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDA0OjE2OjM4LjA4NjI1NDg1NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTA5NDYyNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktlcm5lbCBDb25maWd1cmF0aW9uIGZvciBCTEtcXF9ERVZcXF9CU0cgaW9cXF91cmluZyBJbnRlZ3JhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIHNlZSwgaXQgbG9va3MgbGlrZSB0aGUgYEJMS19ERVZfQlNHYCBvcHRpb24gaXMgZGVmaW5lZCB3aXRoaW4gYGRyaXZlcnMvc2NzaS9LY29uZmlnYC4gVGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gT2YgY291cnNlLCBzaW5jZSB3ZSdyZSBkZWFsaW5nIHdpdGggU0NTSSBibG9jayBkZXZpY2VzIHVzaW5nIEJTRywgaXQncyBwcmV0dHkgb2J2aW91cyB0aGF0IGBTQ1NJYCBpdHNlbGYgbmVlZHMgdG8gYmUgZW5hYmxlZCBpbiB0aGUga2VybmVsIGNvbmZpZy4gVGhhdCdzIGEgZ2l2ZW4uIEFuZCBnaXZlbiB0aGF0IHdlIGFyZSBpbnRlZ3JhdGluZyBpb1xcX3VyaW5nIHdpdGggQlNHLCBgSU9fVVJJTkdgIHN1cHBvcnQgaXMgYWxzbyBhIG11c3QuIE5vdywgdGhhdCBpcyBhIGZhaXJseSBzdHJhaWdodGZvcndhcmQgcmVxdWlyZW1lbnQgZm9yIHRoaXMga2luZCBvZiBpbnRlZ3JhdGlvbi5cblxuTm93LCB0byBnZXQgZG93biB0byBzcGVjaWZpY3MsIEkgbmVlZCB0byBzZWUgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbi4gSSBzaG91bGQgY2hlY2sgYHNjc2lfYnNnX3VyaW5nX2NtZGAgaW4gYGRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jYC4gVGhhdCBpcyB3aGVyZSB0aGUgaW9cXF91cmluZyBjb21tYW5kIGhhbmRsaW5nIGZvciBCU0cgZGV2aWNlIGNvbW11bmljYXRpb24gaXMgbGlrZWx5IGhhbmRsZWQuIFRoaXMgaXMgdGhlIGNvZGUgdGhhdCBpbnRlcmVzdHMgbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMDEsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwNDoxNjo0MS40NzcyMDM0ODRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjA4MDk5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3NpX2JzZ191cmluZ19jbWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zY3NpL3Njc2lfYnNnLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zY3NpL3Njc2lfYnNnLmMtMTYtICovXFxuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmM6MTc6c3RydWN0IHNjc2lfYnNnX3VyaW5nX2NtZF9wZHUge1xcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTE4LVxcdHN0cnVjdCBiaW8gKmJpbztcXHRcXHQvKiBtYXBwZWQgdXNlciBidWZmZXIsIHVubWFwIGluIHRhc2sgd29yayAqL1xcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmMtMjEtfTtcXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYzoyMjpzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3Qgc2NzaV9ic2dfdXJpbmdfY21kX3BkdSkgXFx1MDAzYz0gc2l6ZW9mX2ZpZWxkKHN0cnVjdCBpb191cmluZ19jbWQsIHBkdSkpO1xcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTIzLVxcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jOjI0OnN0YXRpYyBpbmxpbmUgc3RydWN0IHNjc2lfYnNnX3VyaW5nX2NtZF9wZHUgKnNjc2lfYnNnX3VyaW5nX2NtZF9wZHUoXFxuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmMtMjUtXFx0c3RydWN0IGlvX3VyaW5nX2NtZCAqaW91Y21kKVxcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTI2LXtcXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYzoyNzpcXHRyZXR1cm4gaW9fdXJpbmdfY21kX3RvX3BkdShpb3VjbWQsIHN0cnVjdCBzY3NpX2JzZ191cmluZ19jbWRfcGR1KTtcXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0yOC19XFxuLS1cXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYz0zMT1zdGF0aWMgdm9pZCBzY3NpX2JzZ191cmluZ190YXNrX2NiKHN0cnVjdCBpb190d19yZXEgdHdfcmVxLCBpb190d190b2tlbl90IHR3KVxcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmMtMzMtXFx0c3RydWN0IGlvX3VyaW5nX2NtZCAqaW91Y21kID0gaW9fdXJpbmdfY21kX2Zyb21fdHcodHdfcmVxKTtcXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYzozNDpcXHRzdHJ1Y3Qgc2NzaV9ic2dfdXJpbmdfY21kX3BkdSAqcGR1ID0gc2NzaV9ic2dfdXJpbmdfY21kX3BkdShpb3VjbWQpO1xcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTM1LVxcdHN0cnVjdCByZXF1ZXN0ICpycSA9IHBkdS1cXHUwMDNlcmVxO1xcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmMtNjYtXFxuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmM6Njc6c3RhdGljIGVudW0gcnFfZW5kX2lvX3JldCBzY3NpX2JzZ191cmluZ19jbWRfZG9uZShzdHJ1Y3QgcmVxdWVzdCAqcmVxLFxcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTY4LVxcdFxcdFxcdFxcdFxcdFxcdCAgYmxrX3N0YXR1c190IHN0YXR1cyxcXG4tLVxcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jPTc3PXN0YXRpYyBpbnQgc2NzaV9ic2dfbWFwX3VzZXJfYnVmZmVyKHN0cnVjdCByZXF1ZXN0ICpyZXEsXFxuLS1cXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy05OS1cXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYzoxMDA6c3RhdGljIGludCBzY3NpX2JzZ191cmluZ19jbWQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBpb191cmluZ19jbWQgKmlvdWNtZCxcXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0xMDEtXFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncywgYm9vbCBvcGVuX2Zvcl93cml0ZSlcXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0xMDIte1xcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jOjEwMzpcXHRzdHJ1Y3Qgc2NzaV9ic2dfdXJpbmdfY21kX3BkdSAqcGR1ID0gc2NzaV9ic2dfdXJpbmdfY21kX3BkdShpb3VjbWQpO1xcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTEwNC1cXHRjb25zdCBzdHJ1Y3QgYnNnX3VyaW5nX2NtZCAqY21kID1cXG4tLVxcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTE3OS1cXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYzoxODA6XFx0cmVxLVxcdTAwM2VlbmRfaW8gPSBzY3NpX2JzZ191cmluZ19jbWRfZG9uZTtcXG5kcml2ZXJzL3Njc2kvc2NzaV9ic2cuYy0xODEtXFx0cmVxLVxcdTAwM2VlbmRfaW9fZGF0YSA9IGlvdWNtZDtcXG4tLVxcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jPTI3OT1zdHJ1Y3QgYnNnX2RldmljZSAqc2NzaV9ic2dfcmVnaXN0ZXJfcXVldWUoc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2KVxcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfYnNnLmMtMjgyLVxcdFxcdFxcdGRldl9uYW1lKFxcdTAwMjZzZGV2LVxcdTAwM2VzZGV2X2dlbmRldiksIHNjc2lfYnNnX3NnX2lvX2ZuLFxcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jOjI4MzpcXHRcXHRcXHRzY3NpX2JzZ191cmluZ19jbWQpO1xcbmRyaXZlcnMvc2NzaS9zY3NpX2JzZy5jLTI4NC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDA0OjE2OjQxLjYzMzI5MTM3NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjM4NzA5OTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gdGhlIFNDU0ktQmxvY2svaW9fdXJpbmcgSW50ZWdyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgc2NzaV9ic2dfdXJpbmdfY21kYCBmdW5jdGlvbi4gSXQgc2VlbXMgaXQncyBiZWluZyBwYXNzZWQgYWxvbmcgdG8gYGJzZ19zZXR1cF9xdWV1ZWAsIHdoaWNoIEknZCBhc3N1bWUgcmVzaWRlcyBpbiBgYmxvY2svYnNnLmNgLiBNeSBwcmltYXJ5IGludGVyZXN0IGhlcmUsIHRoZSBjZW50cmFsIGZvY3VzLCByZXZvbHZlcyBhcm91bmQgdGhlIGludGVyYWN0aW9uIG9mIGBzY3NpX2JzZ191cmluZ19jbWRgIGFuZCwgaW1wb3J0YW50bHksIGBzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXJgLiBUaG9zZSBhcmUgdGhlIGNyaXRpY2FsIHN5bWJvbHMgdG8ga2VlcCBhbiBleWUgb24gYXMgSSBkaWcgaW50byB0aGlzLlxuXG5JJ3ZlIGdvdCBhIGNvdXBsZSBvZiBrZXkgY29uZmlndXJhdGlvbiBzeW1ib2xzIHRvIGtlZXAgaW4gbWluZDogYEJMS19ERVZfQlNHYCBhbmQsIG9mIGNvdXJzZSwgYElPX1VSSU5HYC4gSnVzdCBhIHF1aWNrIGNoZWNr4oCmIEknbGwgdmVyaWZ5IHRoYXQgYElPX1VSSU5HYCBpcyBpbmRlZWQgdGhlIGNvcnJlY3QgY29uZmlnIG5hbWUuIFdhbnQgdG8gYmUgc3VyZSBJJ20gdXNpbmcgdGhlIHJpZ2h0IGxhYmVscyBhcyBJIHdvcmsgdGhyb3VnaCB0aGlzLiBcblxuXG4iLCJJbnB1dFRva2VucyI6NjQxMSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwNDoxNjo0NS4yNzIwMDM1NThaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMDA2MDg3MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElPX1VSSU5HXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbml0L0tjb25maWc9MTkwNz1jb25maWcgQUlPXFxuLS1cXG5pbml0L0tjb25maWctMTkxNC1cXG5pbml0L0tjb25maWc6MTkxNTpjb25maWcgSU9fVVJJTkdcXG5pbml0L0tjb25maWctMTkxNi1cXHRib29sIFxcXCJFbmFibGUgSU8gdXJpbmcgc3VwcG9ydFxcXCIgaWYgRVhQRVJUXFxuLS1cXG5pbml0L0tjb25maWc9MTkyND1jb25maWcgR0NPVl9QUk9GSUxFX1VSSU5HXFxuLS1cXG5pbml0L0tjb25maWctMTkzNi1cXG5pbml0L0tjb25maWc6MTkzNzpjb25maWcgSU9fVVJJTkdfTU9DS19GSUxFXFxuaW5pdC9LY29uZmlnLTE5MzgtXFx0dHJpc3RhdGUgXFxcIkVuYWJsZSBpb191cmluZyBtb2NrIGZpbGVzIChFeHBlcmltZW50YWwpXFxcIiBpZiBFWFBFUlRcXG4tLVxcbmlvX3VyaW5nL0tjb25maWctNS1cXG5pb191cmluZy9LY29uZmlnOjY6Y29uZmlnIElPX1VSSU5HX1pDUlhcXG5pb191cmluZy9LY29uZmlnLTctXFx0ZGVmX2Jvb2wgeVxcbi0tXFxuaW9fdXJpbmcvS2NvbmZpZy0xMi1cXG5pb191cmluZy9LY29uZmlnOjEzOmNvbmZpZyBJT19VUklOR19CUEZcXG5pb191cmluZy9LY29uZmlnLTE0LVxcdGRlZl9ib29sIHlcXG4tLVxcbmlvX3VyaW5nL0tjb25maWctMTctXFxuaW9fdXJpbmcvS2NvbmZpZzoxODpjb25maWcgSU9fVVJJTkdfQlBGX09QU1xcbmlvX3VyaW5nL0tjb25maWctMTktXFx0ZGVmX2Jvb2wgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwNDoxNjo1MC4zNzI2MTc0MDVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY4ODI3NDQ3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBEYXRhIFBsYW5lKipcblxuQWxyaWdodCwgdGhlIGluaXRpYWwgaHVuY2ggYWJvdXQgYElPX1VSSU5HYCBiZWluZyB0aGUga2V5IHNlZW1zIHJpZ2h0LiBNeSBpbnR1aXRpb24gaXMgc3BvdCBvbiDigJMgaXQncyB0aGUgbW9kZXJuLCBoaWdoLXBlcmZvcm1hbmNlIGFwcHJvYWNoLiBCdXQgd2FpdCwgYmVmb3JlIEkgZ2V0IHRvbyBjYXJyaWVkIGF3YXksIGxldCdzIHN0ZXAgYmFjayBmb3IgYSBtb21lbnQuIEkgbmVlZCB0byBlbnN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsLCBlc3BlY2lhbGx5IHdoZW4gdGFsa2luZyBhYm91dCBkYXRhIG1vdmVtZW50LiBXaGF0IGFib3V0IFNDU0k/IEl0J3MgYmVlbiBhcm91bmQgZm9yIGFnZXMgYW5kIHN0aWxsIHBsYXlzIGEgcm9sZSBpbiB2YXJpb3VzIHN0b3JhZ2Ugc2NlbmFyaW9zLiBJIG5lZWQgdG8gY29uc2lkZXIgdGhhdCBsZWdhY3kgc3VwcG9ydC5cblxuT2theSwgbGV0IG1lIGp1c3QgY29uZmlybSB0aGF0IGBCTEtfREVWX0JTR2AgaXMgcHJvcGVybHkgc3VwcG9ydGVkIHdoZW4gYFNDU0lgIGlzIGFsc28uIFRoYXQgYEtjb25maWdgIGVudHJ5IGluIGBkcml2ZXJzL3Njc2kvYOKApiB5ZXAsIHRoZXJlIGl0IGlzLiBMb29rcyBsaWtlIGBCTEtfREVWX0JTR2AgaXMgY29udGluZ2VudCBvbiBgU0NTSWAuIEdvb2QuIEtlZXBpbmcgYWxsIHRoZSByZWxhdGVkIGRlcGVuZGVuY2llcyBzdHJhaWdodCBpcyBoYWxmIHRoZSBiYXR0bGUuIFRoaXMgY29uZmlybXMgdGhhdCBJIGhhdmVuJ3QgaWdub3JlZCBhIHBvdGVudGlhbGx5IHNpZ25pZmljYW50IGFzcGVjdCBvZiBibG9jayBkZXZpY2UgaW50ZXJhY3Rpb24sIGVzcGVjaWFsbHkgaWYgd2UncmUgZGVhbGluZyB3aXRoIG9sZGVyIGhhcmR3YXJlIG9yIHNwZWNpZmljIGVudGVycHJpc2Ugc3RvcmFnZSBjb25maWd1cmF0aW9ucy4gU28sIHRoZSBwaWN0dXJlIGlzIG1vcmUgY29tcGxldGUgbm93LCBhbmQgSSBjYW4gYmUgY29uZmlkZW50IGluIG15IGFzc2Vzc21lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMzksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwNDoxNjo1NC4wNjA4OTQ2MjVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDk0NzYyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9CU0dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zY3NpL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zY3NpL0tjb25maWc9MTMxPWNvbmZpZyBDSFJfREVWX1NHXFxuLS1cXG5kcml2ZXJzL3Njc2kvS2NvbmZpZy0xNTUtXFxuZHJpdmVycy9zY3NpL0tjb25maWc6MTU2OmNvbmZpZyBCTEtfREVWX0JTR1xcbmRyaXZlcnMvc2NzaS9LY29uZmlnLTE1Ny1cXHRib29sIFxcXCIvZGV2L2JzZyBzdXBwb3J0IChTRyB2NClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDA0OjE2OjU0LjI0NTg0ODQ1NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTAzNzAxODI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSByZWFkaW5nIGFuZCBwcm9jZXNzaW5nIHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvbjpcblxuKipBbmFseXppbmcgdGhlIFNDU0kgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIFNDU0kgY29uZmlndXJhdGlvbiBvcHRpb25zLiBMZXQncyBzZWUuLi4gdGhlIHRleHQgZGlyZWN0cyBtZSB0byBgZHJpdmVycy9zY3NpL0tjb25maWdgLCBhbmQgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDE1Ni4gSSdtIGFzc3VtaW5nIHRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGZvciB0aGUgU0NTSSBzdWJzeXN0ZW0gYXJlIGxpa2VseSBkZWZpbmVkLiBUaGlzIGZpbGUgaXMgcHJvYmFibHkgdGhlIGNlbnRyYWwgc291cmNlIGZvciBhbGwgb2YgdGhlIGRpZmZlcmVudCBTQ1NJIGRyaXZlcnMgYW5kIHRoZWlyIGNvbXBpbGUtdGltZSBjaG9pY2VzLiBJIGV4cGVjdCB0byBmaW5kIGRlcGVuZGVuY2llcywgZGVmYXVsdCB2YWx1ZXMsIGhlbHAgdGV4dCwgYW5kIGxpa2VseSBzb21lIGNvbmRpdGlvbmFsIGxvZ2ljIGJhc2VkIG9uIG90aGVyIHN5c3RlbSBjb25maWd1cmF0aW9ucy4gSXQgd2lsbCBiZSBpbnRlcmVzdGluZyB0byBzZWUgaG93IHRoZSBkZXZlbG9wZXJzIGhhdmUgc3RydWN0dXJlZCB0aGUgb3B0aW9ucyBhbmQgd2hpY2ggYXNwZWN0cyBhcmUgbW9zdCBwcm9taW5lbnRseSBmZWF0dXJlZC4gSG9wZWZ1bGx5LCBpdCBpcyB3ZWxsLWNvbW1lbnRlZCBzbyBJIGNhbiBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIGRlc2lnbiBjaG9pY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDc4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMDQ6MTY6NTcuMTQ5NTUyNzYxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3Njc2kvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNDUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNDU6XFx0XFx0ICAoXFx1MDAzY2h0dHA6Ly9jZHJkYW8uc291cmNlZm9yZ2UubmV0L1xcdTAwM2UpLiBDZHBhcmFub2lhIGlzIGEgaGlnaFxcbiAxNDY6XFx0XFx0ICBxdWFsaXR5IGRpZ2l0YWwgcmVhZGVyIG9mIGF1ZGlvIENEcyAoXFx1MDAzY2h0dHA6Ly93d3cueGlwaC5vcmcvcGFyYW5vaWEvXFx1MDAzZSkuXFxuIDE0NzpcXHRcXHQgIEZvciBvdGhlciBkZXZpY2VzLCBpdCdzIHBvc3NpYmxlIHRoYXQgeW91J2xsIGhhdmUgdG8gd3JpdGUgdGhlXFxuIDE0ODpcXHRcXHQgIGRyaXZlciBzb2Z0d2FyZSB5b3Vyc2VsZi4gUGxlYXNlIHJlYWQgdGhlIGZpbGVcXG4gMTQ5OlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9zY3NpL3Njc2ktZ2VuZXJpYy5yc3RcXHUwMDNlIGZvciBtb3JlIGluZm9ybWF0aW9uLlxcbiAxNTA6XFx0XFxuIDE1MTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUgYW5kIHJlYWRcXG4gMTUyOlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9zY3NpL3Njc2kucnN0XFx1MDAzZS4gVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzZy5cXG4gMTUzOlxcdFxcbiAxNTQ6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAxNTU6XFx0XFxuIDE1NjpcXHRjb25maWcgQkxLX0RFVl9CU0dcXG4gMTU3OlxcdFxcdGJvb2wgXFxcIi9kZXYvYnNnIHN1cHBvcnQgKFNHIHY0KVxcXCJcXG4gMTU4OlxcdFxcdGRlcGVuZHMgb24gU0NTSVxcbiAxNTk6XFx0XFx0ZGVmYXVsdCB5XFxuIDE2MDpcXHRcXHRoZWxwXFxuIDE2MTpcXHRcXHQgIFNheWluZyBZIGhlcmUgd2lsbCBlbmFibGUgZ2VuZXJpYyBTRyAoU0NTSSBnZW5lcmljKSB2NCBzdXBwb3J0XFxuIDE2MjpcXHRcXHQgIGZvciBhbnkgU0NTSSBkZXZpY2UuXFxuIDE2MzpcXHRcXG4gMTY0OlxcdFxcdCAgVGhpcyBvcHRpb24gaXMgcmVxdWlyZWQgYnkgVURFViB0byBhY2Nlc3MgZGV2aWNlIHNlcmlhbCBudW1iZXJzLCBldGMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDA0OjE2OjU3LjE0OTY4MDE5MVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODM5NTUzODcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoaXMgS2VybmVsIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBkaXJlY3RseSBpbXBhY3RzIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGBCTEtfREVWX0JTR2AgYW5kIGBTQ1NJYCwgYW5kIGl0cyBhbHNvIHJlbGF0ZWQgdG8gYElPX1VSSU5HYC4gU2luY2UgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBpbiB0aGUgaW9fdXJpbmcgaW50ZWdyYXRpb24gd2l0aCBTQ1NJIEJTRywgSSdtIGdvaW5nIHRvIGV4cGxpY2l0bHkgaW5jbHVkZSBgQkxLX0RFVl9CU0dgLCBgU0NTSWAsIGFuZCBgSU9fVVJJTkdgIGluIG15IGVuYWJsZSBjb25maWd1cmF0aW9ucy4gVGhhdCBmZWVscyBsaWtlIHRoZSBtb3N0IGRpcmVjdCBhbmQgYWNjdXJhdGUgYXBwcm9hY2guXG5cblRoZSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgb24gYWRkcmVzc2luZyBUaW1lLW9mLUNoZWNrLXRvLVRpbWUtb2YtVXNlIChUT0NUT1UpIHZ1bG5lcmFiaWxpdGllcyB3aXRoaW4gdGhlIGlvX3VyaW5nIGNvbW1hbmRzIHRhcmdldGluZyBTQ1NJIEJsb2NrIFNHIChTY2F0dGVyLUdhdGhlcikgZGV2aWNlcy4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIGZpeGluZyB0aGVzZSB2dWxuZXJhYmlsaXRpZXMgYnkgc25hcHNob3R0aW5nIFNRRSAoU3VibWlzc2lvbiBRdWV1ZSBFbnRyeSkgZmllbGRzLCBhbmQgdGhleSdyZSBhbHNvIGFsdGVyaW5nIHRoZSB1c2VyIGJ1ZmZlciBtYXBwaW5nIGxvZ2ljLiBUaGlzIGlzIGRlZmluaXRlbHkgZnVuY3Rpb25hbCBhbmQsIGNydWNpYWxseSwgcmVhY2hhYmxlIHRocm91Z2ggaW9fdXJpbmcgY29tbWFuZHMgdGhhdCBhcmUgZGlyZWN0ZWQgYXQgU0NTSSBCU0cgZGV2aWNlcy4gSXQgbWVhbnMgSSBuZWVkIHRvIGJlIGV4dHJhIHZpZ2lsYW50IHdoZW4gcmV2aWV3aW5nIHRoaXMuXG5cbkkgc2hvdWxkIGFsc28gZG91YmxlLWNoZWNrIHdoZXRoZXIgb3RoZXIgZnVuY3Rpb25zIGFyZSBtb2RpZmllZCB0aGF0IGFyZSBub3QgaW1tZWRpYXRlbHkgb2J2aW91cyBmcm9tIHRoZSBkZXNjcmlwdGlvbi4gSSdtIHNlZWluZyBjaGFuZ2VzIHRvIGBzY3NpX2JzZ191cmluZ19jbWRgIGFuZCBgc2NzaV9ic2dfbWFwX3VzZXJfYnVmZmVyYCBpbiB0aGUgZGlmZi5cblxuSSdtIHNhdGlzZmllZCB3aXRoIHRoaXMgcmV2aWV3IGFuZCB3aWxsIHByb2NlZWQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDUwLCJPdXRwdXRUb2tlbnMiOjEyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDA0OjE3OjAxLjk4OTIzNjE1M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NTQ5NTgwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9CU0dcIixcbiAgICBcIlNDU0lcIixcbiAgICBcIklPX1VSSU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2NzaV9ic2dfdXJpbmdfY21kXCIsXG4gICAgXCJzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBTQ1NJIEJTRyBpb191cmluZyBpbnRlZ3JhdGlvbiwgZml4aW5nIFRPQ1RPVSB2dWxuZXJhYmlsaXRpZXMgYnkgc25hcHNob3R0aW5nIFNRRSBmaWVsZHMgYW5kIGNoYW5naW5nIHRoZSBidWZmZXIgbWFwcGluZyBsb2dpYy4gVGhpcyBpcyBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgdmlhIGlvX3VyaW5nIGNvbW1hbmRzIHRvIFNDU0kgQlNHIGRldmljZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9CU0dcIixcbiAgICBcIlNDU0lcIixcbiAgICBcIklPX1VSSU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2NzaV9ic2dfdXJpbmdfY21kXCIsXG4gICAgXCJzY3NpX2JzZ19tYXBfdXNlcl9idWZmZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBTQ1NJIEJTRyBpb191cmluZyBpbnRlZ3JhdGlvbiwgZml4aW5nIFRPQ1RPVSB2dWxuZXJhYmlsaXRpZXMgYnkgc25hcHNob3R0aW5nIFNRRSBmaWVsZHMgYW5kIGNoYW5naW5nIHRoZSBidWZmZXIgbWFwcGluZyBsb2dpYy4gVGhpcyBpcyBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgdmlhIGlvX3VyaW5nIGNvbW1hbmRzIHRvIFNDU0kgQlNHIGRldmljZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow2tpmj[1] Phase: Succeeded StartedAt: 2026-07-20 04:17:59 +0000 UTC FinishedAt: 2026-07-20 04:17:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tpmj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-20 04:17:59 +0000 UTC FinishedAt: 2026-07-20 04:17:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tpmj[2] Phase: Succeeded StartedAt: 2026-07-20 04:17:59 +0000 UTC FinishedAt: 2026-07-20 06:26:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 04:17:59 +0000 UTC FinishedAt: 2026-07-20 06:26:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 04:17:59 +0000 UTC FinishedAt: 2026-07-20 04:19:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 04:17:59 +0000 UTC FinishedAt: 2026-07-20 04:19:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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-workflow2tpmj/series-workflow2tpmj-convert-artifact-210050580/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 04:19:15 +0000 UTC FinishedAt: 2026-07-20 04:56:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 04:19:15 +0000 UTC FinishedAt: 2026-07-20 04:56:15 +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:*3a1aa509-623b-4730-9c95-81a944f152ee,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-workflow2tpmj/series-workflow2tpmj-convert-artifact-210050580/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": "bcc5cd0b-5a99-4959-b866-d0706e3b30e5", "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-workflow2tpmj/series-workflow2tpmj-build-action-2078845586/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 04:19:15 +0000 UTC FinishedAt: 2026-07-20 04:56:05 +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:*3a1aa509-623b-4730-9c95-81a944f152ee,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-workflow2tpmj/series-workflow2tpmj-convert-artifact-210050580/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": "bcc5cd0b-5a99-4959-b866-d0706e3b30e5", "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-workflow2tpmj/series-workflow2tpmj-build-action-2078845586/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 04:56:15 +0000 UTC FinishedAt: 2026-07-20 04:56:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 04:56:15 +0000 UTC FinishedAt: 2026-07-20 04:56:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 04:56:15 +0000 UTC FinishedAt: 2026-07-20 04:56:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 04:56:15 +0000 UTC FinishedAt: 2026-07-20 04:56:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-workflow2tpmj/series-workflow2tpmj-convert-artifact-578788819/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 04:56:25 +0000 UTC FinishedAt: 2026-07-20 04:58:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 04:56:25 +0000 UTC FinishedAt: 2026-07-20 04:58:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bcc5cd0b-5a99-4959-b866-d0706e3b30e5,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-workflow2tpmj/series-workflow2tpmj-build-action-2078845586/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-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 04:58:22 +0000 UTC FinishedAt: 2026-07-20 04:58:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 04:58:22 +0000 UTC FinishedAt: 2026-07-20 04:58:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 04:58:22 +0000 UTC FinishedAt: 2026-07-20 05:40:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 04:58:22 +0000 UTC FinishedAt: 2026-07-20 05:40:43 +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:*3a1aa509-623b-4730-9c95-81a944f152ee,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-workflow2tpmj/series-workflow2tpmj-convert-artifact-578788819/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": "444be066-2fbd-4bab-8b3e-bbb903a3ffc0", "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-workflow2tpmj/series-workflow2tpmj-build-action-1467339527/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 04:58:22 +0000 UTC FinishedAt: 2026-07-20 05:40:33 +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:*3a1aa509-623b-4730-9c95-81a944f152ee,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-workflow2tpmj/series-workflow2tpmj-convert-artifact-578788819/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": "444be066-2fbd-4bab-8b3e-bbb903a3ffc0", "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-workflow2tpmj/series-workflow2tpmj-build-action-1467339527/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 05:40:43 +0000 UTC FinishedAt: 2026-07-20 05:40:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 05:40:43 +0000 UTC FinishedAt: 2026-07-20 05:40:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 05:40:43 +0000 UTC FinishedAt: 2026-07-20 05:42:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 05:40:43 +0000 UTC FinishedAt: 2026-07-20 05:42:39 +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:*444be066-2fbd-4bab-8b3e-bbb903a3ffc0,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-workflow2tpmj/series-workflow2tpmj-build-action-1467339527/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-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 05:42:49 +0000 UTC FinishedAt: 2026-07-20 06:26:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 05:42:49 +0000 UTC FinishedAt: 2026-07-20 06:26:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"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:*bcc5cd0b-5a99-4959-b866-d0706e3b30e5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*444be066-2fbd-4bab-8b3e-bbb903a3ffc0,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-workflow2tpmj/series-workflow2tpmj-build-action-2078845586/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-workflow2tpmj/series-workflow2tpmj-build-action-1467339527/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 05:42:49 +0000 UTC FinishedAt: 2026-07-20 05:43:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 05:42:49 +0000 UTC FinishedAt: 2026-07-20 05:43:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"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-workflow2tpmj/series-workflow2tpmj-convert-artifact-516756300/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 05:42:49 +0000 UTC FinishedAt: 2026-07-20 05:42:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 05:42:49 +0000 UTC FinishedAt: 2026-07-20 05:42:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 05:42:49 +0000 UTC FinishedAt: 2026-07-20 05:42:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 05:43:10 +0000 UTC FinishedAt: 2026-07-20 06:26:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tpmj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"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/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["scsi_bsg_uring_cmd","scsi_bsg_map_user_buffer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_BSG","SCSI","IO_URING"],"series_id":"d917167a-42e5-4239-9a96-754548b7d534","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-20 05:43:10 +0000 UTC FinishedAt: 2026-07-20 06:25:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bcc5cd0b-5a99-4959-b866-d0706e3b30e5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*444be066-2fbd-4bab-8b3e-bbb903a3ffc0,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-workflow2tpmj/series-workflow2tpmj-build-action-2078845586/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-workflow2tpmj/series-workflow2tpmj-build-action-1467339527/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-workflow2tpmj/series-workflow2tpmj-convert-artifact-516756300/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,}