Name: series-workflow49cxg Phase: Succeeded StartedAt: 2026-06-25 04:24:23 +0000 UTC FinishedAt: 2026-06-25 08:33:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49cxg[0] Phase: Succeeded StartedAt: 2026-06-25 04:24:23 +0000 UTC FinishedAt: 2026-06-25 04:35:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49cxg[0].run-triage Phase: Succeeded StartedAt: 2026-06-25 04:24:23 +0000 UTC FinishedAt: 2026-06-25 04:35:14 +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": "ab9de95c9cf952332ab79453b4b5d1bfca8e514f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "ab9de95c9cf952332ab79453b4b5d1bfca8e514f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "f04d06fd-a78b-4ee5-9bb0-7a800ca61568" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_xattr_inode_cache_find", "__ext4_iget", "ext4_iget_match" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA0OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmQmIzM0OywKICAgICYjMzQ7X19leHQ0X2lnZXQmIzM0OywKICAgICYjMzQ7ZXh0NF9pZ2V0X21hdGNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBleHQ0IGlub2RlIGxvb2t1cCBsb2dpYyB0byBzdXBwb3J0IGEgbm9uLWJsb2NraW5nIG1vZGUgKEVYVDRfSUdFVF9OT1dBSVQpIHVzaW5nIGZpbmRfaW5vZGVfbm93YWl0IGFuZCBhIGN1c3RvbSBtYXRjaCBmdW5jdGlvbi4gVGhpcyBpcyBhcHBsaWVkIHRvIGV4dGVuZGVkIGF0dHJpYnV0ZSAoRUEpIGlub2RlIGxvb2t1cHMgdG8gcHJldmVudCBibG9ja2luZyBvbiBmcmVlaW5nIGlub2Rlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA0OjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjMyNGQ3NmEwYWFlNmY2ZmRjMmE1MjE5NWVkMjI3NTMwZjgzMGE5NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVuIDI1IDA0OjM0OjQwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvZXh0NC5oIGIvZnMvZXh0NC9leHQ0LmhcbmluZGV4IGIzN2MxMzZlYTNhYjMzLi5jNzZkZDBiZGQzZDg2MCAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQvZXh0NC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L2V4dDQuaFxuQEAgLTMxNDQsNyAmIzQzOzMxNDQsOCBAQCB0eXBlZGVmIGVudW0ge1xuIFx0RVhUNF9JR0VUX1NQRUNJQUwgPVx0MHgwMDAxLCAvKiBPSyB0byBpZ2V0IGEgc3lzdGVtIGlub2RlICovXG4gXHRFWFQ0X0lHRVRfSEFORExFID0gXHQweDAwMDIsXHQvKiBJbm9kZSAjIGlzIGZyb20gYSBoYW5kbGUgKi9cbiBcdEVYVDRfSUdFVF9CQUQgPVx0XHQweDAwMDQsIC8qIEFsbG93IHRvIGlnZXQgYSBiYWQgaW5vZGUgKi9cbi1cdEVYVDRfSUdFVF9FQV9JTk9ERSA9XHQweDAwMDhcdC8qIElub2RlIHNob3VsZCBjb250YWluIGFuIEVBIHZhbHVlICovXG4mIzQzO1x0RVhUNF9JR0VUX0VBX0lOT0RFID1cdDB4MDAwOCxcdC8qIElub2RlIHNob3VsZCBjb250YWluIGFuIEVBIHZhbHVlICovXG4mIzQzO1x0RVhUNF9JR0VUX05PV0FJVCA9XHQweDAwMTBcdC8qIE5vbi1ibG9ja2luZyBsb29rdXAgKHNraXAgaWYgZnJlZWluZykgKi9cbiB9IGV4dDRfaWdldF9mbGFncztcbiBcbiBleHRlcm4gc3RydWN0IGlub2RlICpfX2V4dDRfaWdldChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1bnNpZ25lZCBsb25nIGlubyxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2lub2RlLmMgYi9mcy9leHQ0L2lub2RlLmNcbmluZGV4IGNlOTk4MDdjNWY1YjJjLi40MmE3OThmMzMzZDMwYSAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQvaW5vZGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC9pbm9kZS5jXG5AQCAtNTI3MCw2ICYjNDM7NTI3MCwyNCBAQCB2b2lkIGV4dDRfc2V0X2lub2RlX21hcHBpbmdfb3JkZXIoc3RydWN0IGlub2RlICppbm9kZSlcbiBcdG1hcHBpbmdfc2V0X2ZvbGlvX29yZGVyX3JhbmdlKGlub2RlLVx1MDAzZWlfbWFwcGluZywgbWluX29yZGVyLCBtYXhfb3JkZXIpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBleHQ0X2lnZXRfbWF0Y2goc3RydWN0IGlub2RlICppbm9kZSwgdTY0IGlubywgdm9pZCAqZGF0YSlcbiYjNDM7e1xuJiM0MztcdGJvb2wgKmlzX2ZyZWVpbmcgPSBkYXRhO1xuJiM0MztcbiYjNDM7XHRpZiAoaW5vZGUtXHUwMDNlaV9pbm8gIT0gaW5vKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0c3Bpbl9sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4mIzQzO1x0aWYgKGlub2RlX3N0YXRlX3JlYWQoaW5vZGUpIFx1MDAyNiAoSV9GUkVFSU5HIHwgSV9XSUxMX0ZSRUUgfCBJX0NSRUFUSU5HKSkge1xuJiM0MztcdFx0aWYgKGlzX2ZyZWVpbmcpXG4mIzQzO1x0XHRcdCppc19mcmVlaW5nID0gdHJ1ZTtcbiYjNDM7XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4mIzQzO1x0XHRyZXR1cm4gLTE7XG4mIzQzO1x0fVxuJiM0MztcdF9faWdldChpbm9kZSk7XG4mIzQzO1x0c3Bpbl91bmxvY2soXHUwMDI2aW5vZGUtXHUwMDNlaV9sb2NrKTtcbiYjNDM7XHRyZXR1cm4gMTtcbiYjNDM7fVxuJiM0MztcbiBzdHJ1Y3QgaW5vZGUgKl9fZXh0NF9pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vLFxuIFx0XHRcdCAgZXh0NF9pZ2V0X2ZsYWdzIGZsYWdzLCBjb25zdCBjaGFyICpmdW5jdGlvbixcbiBcdFx0XHQgIHVuc2lnbmVkIGludCBsaW5lKVxuQEAgLTUyOTgsOSAmIzQzOzUzMTYsMjYgQEAgc3RydWN0IGlub2RlICpfX2V4dDRfaWdldChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1bnNpZ25lZCBsb25nIGlubyxcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVGU0NPUlJVUFRFRCk7XG4gXHR9XG4gXG4tXHRpbm9kZSA9IGlnZXRfbG9ja2VkKHNiLCBpbm8pO1xuLVx0aWYgKCFpbm9kZSlcbi1cdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4mIzQzO1x0aWYgKGZsYWdzIFx1MDAyNiBFWFQ0X0lHRVRfTk9XQUlUKSB7XG4mIzQzO1x0XHRib29sIGlzX2ZyZWVpbmcgPSBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0XHRpbm9kZSA9IGZpbmRfaW5vZGVfbm93YWl0KHNiLCBpbm8sIGV4dDRfaWdldF9tYXRjaCwgXHUwMDI2aXNfZnJlZWluZyk7XG4mIzQzO1x0XHRpZiAoaXNfZnJlZWluZylcbiYjNDM7XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVTVEFMRSk7XG4mIzQzO1x0XHRpZiAoIWlub2RlKSB7XG4mIzQzO1x0XHRcdGlub2RlID0gaWdldF9sb2NrZWQoc2IsIGlubyk7XG4mIzQzO1x0XHRcdGlmICghaW5vZGUpXG4mIzQzO1x0XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRpZiAoaW5vZGVfc3RhdGVfcmVhZF9vbmNlKGlub2RlKSBcdTAwMjYgSV9ORVcpXG4mIzQzO1x0XHRcdFx0d2FpdF9vbl9uZXdfaW5vZGUoaW5vZGUpO1xuJiM0MztcdFx0fVxuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRpbm9kZSA9IGlnZXRfbG9ja2VkKHNiLCBpbm8pO1xuJiM0MztcdFx0aWYgKCFpbm9kZSlcbiYjNDM7XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGlmICghKGlub2RlX3N0YXRlX3JlYWRfb25jZShpbm9kZSkgXHUwMDI2IElfTkVXKSkge1xuIFx0XHRyZXQgPSBjaGVja19pZ290X2lub2RlKGlub2RlLCBmbGFncywgZnVuY3Rpb24sIGxpbmUpO1xuIFx0XHRpZiAocmV0KSB7XG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC94YXR0ci5jIGIvZnMvZXh0NC94YXR0ci5jXG5pbmRleCA5ODJhMWY4MzFlMjI4Mi4uMjFiNTY3MGQ4NTAzY2EgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L3hhdHRyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQveGF0dHIuY1xuQEAgLTE1NTAsNyAmIzQzOzE1NTAsNyBAQCBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmQoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgdm9pZCAqdmFsdWUsXG4gXG4gXHR3aGlsZSAoY2UpIHtcbiBcdFx0ZWFfaW5vZGUgPSBleHQ0X2lnZXQoaW5vZGUtXHUwMDNlaV9zYiwgY2UtXHUwMDNlZV92YWx1ZSxcbi1cdFx0XHRcdCAgICAgRVhUNF9JR0VUX0VBX0lOT0RFKTtcbiYjNDM7XHRcdFx0XHQgICAgIEVYVDRfSUdFVF9FQV9JTk9ERSB8IEVYVDRfSUdFVF9OT1dBSVQpO1xuIFx0XHRpZiAoSVNfRVJSKGVhX2lub2RlKSlcbiBcdFx0XHRnb3RvIG5leHRfZW50cnk7XG4gXHRcdGV4dDRfeGF0dHJfaW5vZGVfc2V0X2NsYXNzKGVhX2lub2RlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNDozNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kJiMzNDssCiAgICAmIzM0O19fZXh0NF9pZ2V0JiMzNDssCiAgICAmIzM0O2V4dDRfaWdldF9tYXRjaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXh0NCBpbm9kZSBsb29rdXAgbG9naWMgdG8gc3VwcG9ydCBhIG5vbi1ibG9ja2luZyBtb2RlIChFWFQ0X0lHRVRfTk9XQUlUKSB1c2luZyBmaW5kX2lub2RlX25vd2FpdCBhbmQgYSBjdXN0b20gbWF0Y2ggZnVuY3Rpb24uIFRoaXMgaXMgYXBwbGllZCB0byBleHRlbmRlZCBhdHRyaWJ1dGUgKEVBKSBpbm9kZSBsb29rdXBzIHRvIHByZXZlbnQgYmxvY2tpbmcgb24gZnJlZWluZyBpbm9kZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZXh0NCBmaWxlc3lzdGVtIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjMyNGQ3NmEwYWFlNmY2ZmRjMmE1MjE5NWVkMjI3NTMwZjgzMGE5NgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVuIDI1IDA0OjM0OjQwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHQ0LmggYi9mcy9leHQ0L2V4dDQuaAppbmRleCBiMzdjMTM2ZWEzYWIzMy4uYzc2ZGQwYmRkM2Q4NjAgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvZXh0NC5oCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvZXh0NC5oCkBAIC0zMTQ0LDcgJiM0MzszMTQ0LDggQEAgdHlwZWRlZiBlbnVtIHsKIAlFWFQ0X0lHRVRfU1BFQ0lBTCA9CTB4MDAwMSwgLyogT0sgdG8gaWdldCBhIHN5c3RlbSBpbm9kZSAqLwogCUVYVDRfSUdFVF9IQU5ETEUgPSAJMHgwMDAyLAkvKiBJbm9kZSAjIGlzIGZyb20gYSBoYW5kbGUgKi8KIAlFWFQ0X0lHRVRfQkFEID0JCTB4MDAwNCwgLyogQWxsb3cgdG8gaWdldCBhIGJhZCBpbm9kZSAqLwotCUVYVDRfSUdFVF9FQV9JTk9ERSA9CTB4MDAwOAkvKiBJbm9kZSBzaG91bGQgY29udGFpbiBhbiBFQSB2YWx1ZSAqLwomIzQzOwlFWFQ0X0lHRVRfRUFfSU5PREUgPQkweDAwMDgsCS8qIElub2RlIHNob3VsZCBjb250YWluIGFuIEVBIHZhbHVlICovCiYjNDM7CUVYVDRfSUdFVF9OT1dBSVQgPQkweDAwMTAJLyogTm9uLWJsb2NraW5nIGxvb2t1cCAoc2tpcCBpZiBmcmVlaW5nKSAqLwogfSBleHQ0X2lnZXRfZmxhZ3M7CiAKIGV4dGVybiBzdHJ1Y3QgaW5vZGUgKl9fZXh0NF9pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vLApkaWZmIC0tZ2l0IGEvZnMvZXh0NC9pbm9kZS5jIGIvZnMvZXh0NC9pbm9kZS5jCmluZGV4IGNlOTk4MDdjNWY1YjJjLi40MmE3OThmMzMzZDMwYSAxMDA2NDQKLS0tIGEvZnMvZXh0NC9pbm9kZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvaW5vZGUuYwpAQCAtNTI3MCw2ICYjNDM7NTI3MCwyNCBAQCB2b2lkIGV4dDRfc2V0X2lub2RlX21hcHBpbmdfb3JkZXIoc3RydWN0IGlub2RlICppbm9kZSkKIAltYXBwaW5nX3NldF9mb2xpb19vcmRlcl9yYW5nZShpbm9kZS0mZ3Q7aV9tYXBwaW5nLCBtaW5fb3JkZXIsIG1heF9vcmRlcik7CiB9CiAKJiM0MztzdGF0aWMgaW50IGV4dDRfaWdldF9tYXRjaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1NjQgaW5vLCB2b2lkICpkYXRhKQomIzQzO3sKJiM0MzsJYm9vbCAqaXNfZnJlZWluZyA9IGRhdGE7CiYjNDM7CiYjNDM7CWlmIChpbm9kZS0mZ3Q7aV9pbm8gIT0gaW5vKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CXNwaW5fbG9jaygmYW1wO2lub2RlLSZndDtpX2xvY2spOwomIzQzOwlpZiAoaW5vZGVfc3RhdGVfcmVhZChpbm9kZSkgJmFtcDsgKElfRlJFRUlORyB8IElfV0lMTF9GUkVFIHwgSV9DUkVBVElORykpIHsKJiM0MzsJCWlmIChpc19mcmVlaW5nKQomIzQzOwkJCSppc19mcmVlaW5nID0gdHJ1ZTsKJiM0MzsJCXNwaW5fdW5sb2NrKCZhbXA7aW5vZGUtJmd0O2lfbG9jayk7CiYjNDM7CQlyZXR1cm4gLTE7CiYjNDM7CX0KJiM0MzsJX19pZ2V0KGlub2RlKTsKJiM0MzsJc3Bpbl91bmxvY2soJmFtcDtpbm9kZS0mZ3Q7aV9sb2NrKTsKJiM0MzsJcmV0dXJuIDE7CiYjNDM7fQomIzQzOwogc3RydWN0IGlub2RlICpfX2V4dDRfaWdldChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1bnNpZ25lZCBsb25nIGlubywKIAkJCSAgZXh0NF9pZ2V0X2ZsYWdzIGZsYWdzLCBjb25zdCBjaGFyICpmdW5jdGlvbiwKIAkJCSAgdW5zaWduZWQgaW50IGxpbmUpCkBAIC01Mjk4LDkgJiM0Mzs1MzE2LDI2IEBAIHN0cnVjdCBpbm9kZSAqX19leHQ0X2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBpbm8sCiAJCXJldHVybiBFUlJfUFRSKC1FRlNDT1JSVVBURUQpOwogCX0KIAotCWlub2RlID0gaWdldF9sb2NrZWQoc2IsIGlubyk7Ci0JaWYgKCFpbm9kZSkKLQkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiYjNDM7CWlmIChmbGFncyAmYW1wOyBFWFQ0X0lHRVRfTk9XQUlUKSB7CiYjNDM7CQlib29sIGlzX2ZyZWVpbmcgPSBmYWxzZTsKJiM0MzsKJiM0MzsJCWlub2RlID0gZmluZF9pbm9kZV9ub3dhaXQoc2IsIGlubywgZXh0NF9pZ2V0X21hdGNoLCAmYW1wO2lzX2ZyZWVpbmcpOwomIzQzOwkJaWYgKGlzX2ZyZWVpbmcpCiYjNDM7CQkJcmV0dXJuIEVSUl9QVFIoLUVTVEFMRSk7CiYjNDM7CQlpZiAoIWlub2RlKSB7CiYjNDM7CQkJaW5vZGUgPSBpZ2V0X2xvY2tlZChzYiwgaW5vKTsKJiM0MzsJCQlpZiAoIWlub2RlKQomIzQzOwkJCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKJiM0MzsJCX0gZWxzZSB7CiYjNDM7CQkJaWYgKGlub2RlX3N0YXRlX3JlYWRfb25jZShpbm9kZSkgJmFtcDsgSV9ORVcpCiYjNDM7CQkJCXdhaXRfb25fbmV3X2lub2RlKGlub2RlKTsKJiM0MzsJCX0KJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWlub2RlID0gaWdldF9sb2NrZWQoc2IsIGlubyk7CiYjNDM7CQlpZiAoIWlub2RlKQomIzQzOwkJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwomIzQzOwl9CiYjNDM7CiAJaWYgKCEoaW5vZGVfc3RhdGVfcmVhZF9vbmNlKGlub2RlKSAmYW1wOyBJX05FVykpIHsKIAkJcmV0ID0gY2hlY2tfaWdvdF9pbm9kZShpbm9kZSwgZmxhZ3MsIGZ1bmN0aW9uLCBsaW5lKTsKIAkJaWYgKHJldCkgewpkaWZmIC0tZ2l0IGEvZnMvZXh0NC94YXR0ci5jIGIvZnMvZXh0NC94YXR0ci5jCmluZGV4IDk4MmExZjgzMWUyMjgyLi4yMWI1NjcwZDg1MDNjYSAxMDA2NDQKLS0tIGEvZnMvZXh0NC94YXR0ci5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQveGF0dHIuYwpAQCAtMTU1MCw3ICYjNDM7MTU1MCw3IEBAIGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICp2YWx1ZSwKIAogCXdoaWxlIChjZSkgewogCQllYV9pbm9kZSA9IGV4dDRfaWdldChpbm9kZS0mZ3Q7aV9zYiwgY2UtJmd0O2VfdmFsdWUsCi0JCQkJICAgICBFWFQ0X0lHRVRfRUFfSU5PREUpOwomIzQzOwkJCQkgICAgIEVYVDRfSUdFVF9FQV9JTk9ERSB8IEVYVDRfSUdFVF9OT1dBSVQpOwogCQlpZiAoSVNfRVJSKGVhX2lub2RlKSkKIAkJCWdvdG8gbmV4dF9lbnRyeTsKIAkJZXh0NF94YXR0cl9pbm9kZV9zZXRfY2xhc3MoZWFfaW5vZGUpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTE2CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgZXh0NCBJbm9kZSBGZXRjaGluZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIGV4dDQgZmlsZXN5c3RlbSBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGludGVyZXN0aW5nLiBJdCB0b3VjaGVzIHRocmVlIGtleSBmaWxlczogYGV4dDQuaGAsIGBpbm9kZS5jYCwgYW5kIGB4YXR0ci5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbnRyb2R1Y2luZyBhIG5ldyBmbGFnLCBgRVhUNF9JR0VUX05PV0FJVGAsIHdoaWNoIGlzIGFkZGVkIHRvIHRoZSBgZXh0NF9pZ2V0X2ZsYWdzYCBlbnVtLgoKTXkgaW1tZWRpYXRlIHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGlzIGZsYWcgaXMgZGVzaWduZWQgdG8gbW9kaWZ5IHRoZSBpbm9kZSBmZXRjaGluZyBiZWhhdmlvciB3aXRoaW4gZXh0NC4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggYWx0ZXJzIGBfX2V4dDRfaWdldGAgdG8gaGFuZGxlIHRoaXMgbmV3IGZsYWcuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgZ29pbmcgdG8gdXNlIGBmaW5kX2lub2RlX25vd2FpdGAgYW5kIGEgY3VzdG9tIG1hdGNoIGZ1bmN0aW9uLCBgZXh0NF9pZ2V0X21hdGNoYCwgZm9yIHRoZSBuZXcgZnVuY3Rpb25hbGl0eS4gRnVydGhlcm1vcmUsIGBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmRgIGlzIHVwZGF0ZWQgdG8gdXRpbGl6ZSBgRVhUNF9JR0VUX05PV0FJVGAgd2hlbiBmZXRjaGluZyBFeHRlbmRlZCBBdHRyaWJ1dGUgKEVBKSBpbm9kZXMuCgpFc3NlbnRpYWxseSwgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCBzZWVtcyB3ZSYjMzk7cmUgdHJ5aW5nIHRvIG9wdGltaXplIHRoZSBpbm9kZSBmZXRjaCBwYXRoLCBwYXJ0aWN1bGFybHkgZm9yIEVBIGlub2RlcywgYnkgYXZvaWRpbmcgYmxvY2tpbmcgd2hpbGUgaW5vZGVzIGFyZSBmcmVlZC4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIGJsb2NraW5nIGNhbiBoYXZlIG5vdGljZWFibGUgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zLgoKTGV0JiMzOTtzIHF1aWNrbHkgdmVyaWZ5IHRoZSBmdW5jdGlvbnMgaW1wYWN0ZWQ6IEkmIzM5O2xsIG5lZWQgdG8gZXhhbWluZSBgZXh0NF9pZ2V0X21hdGNoYCAod2hpY2ggaXMgbmV3KSwgYF9fZXh0NF9pZ2V0YCwgYW5kIGBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmRgIGluIGRldGFpbC4KCkJhc2VkIG9uIHRoaXMgdW5kZXJzdGFuZGluZywgSSB0aGluayB0aGlzIG1vZGlmaWNhdGlvbiBtZXJpdHMgZnV6emluZy4gVGhlcmVmb3JlLCBJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuIEkgbmVlZCB0byBzZXQgdGhlIGBGb2N1c1N5bWJvbHNgIHRvIGBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmRgLCBgX19leHQ0X2lnZXRgLCBhbmQgYGV4dDRfaWdldF9tYXRjaGAuIEkgYWxzbyBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcmVsZXZhbnQgY29uZmlncyBhcmUgZW5hYmxlZDogYEVYVDRfRlNgIGFuZCBgRVhUNF9GU19YQVRUUmAuIE5vdyBsZXQmIzM5O3MgY29uZmlybSB0aG9zZSBjb25maWdzIGFyZSBjb3JyZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA0OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBFWFQ0X0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvZXh0NC9LY29uZmlnOjI6Y29uZmlnIEVYVDRfRlNcbmZzL2V4dDQvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7VGhlIEV4dGVuZGVkIDQgKGV4dDQpIGZpbGVzeXN0ZW1cJiMzNDtcbi0tXG5mcy9leHQ0L0tjb25maWc9MzU9Y29uZmlnIEVYVDRfVVNFX0ZPUl9FWFQyXG4tLVxuZnMvZXh0NC9LY29uZmlnLTQ1LVxuZnMvZXh0NC9LY29uZmlnOjQ2OmNvbmZpZyBFWFQ0X0ZTX1BPU0lYX0FDTFxuZnMvZXh0NC9LY29uZmlnLTQ3LVx0Ym9vbCBcJiMzNDtFeHQ0IFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG4tLVxuZnMvZXh0NC9LY29uZmlnLTU1LVxuZnMvZXh0NC9LY29uZmlnOjU2OmNvbmZpZyBFWFQ0X0ZTX1NFQ1VSSVRZXG5mcy9leHQ0L0tjb25maWctNTctXHRib29sIFwmIzM0O0V4dDQgU2VjdXJpdHkgTGFiZWxzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDQ6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg2NgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZToKCioqQ2hlY2tpbmcgRVhUNCBYYXR0ciBDb21waWxhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgcXVpY2tseSBnZXQgdG8gdGhlIGNvcmUgb2YgdGhpcy4gSSBuZWVkIHRvIHZlcmlmeSBob3cgdGhlIGBFWFQ0X0ZTX1hBVFRSYCBmZWF0dXJlIGZsYWcgaXMgaGFuZGxlZCBpbiB0aGlzIGJ1aWxkLiBJcyBpdCBhIGRpc3RpbmN0IGVudGl0eSwgb3IgaXMgaXQgcGFydCBvZiB0aGUgYnJvYWRlciBgRVhUNF9GU2AgZGVmaW5pdGlvbj8gTXkgaW5zdGluY3RzIHRlbGwgbWUgdGhlIHhhdHRyIGZ1bmN0aW9ucyB3aWxsIGJlIGNvbXBpbGVkIGluIGEgY2VydGFpbiBtb2R1bGUuCgpJIHJlY2FsbCBzZWVpbmcgYGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZGDigJQgdGhhdCYjMzk7cyB0aGUgdGVsbHRhbGUgaW5kaWNhdG9yLCByZXNpZGluZyBzcGVjaWZpY2FsbHkgd2l0aGluIGBmcy9leHQ0L3hhdHRyLmNgLiBTbyBteSBmb2N1cyBzaGlmdHMgdG8gdGhlIGBmcy9leHQ0L01ha2VmaWxlYC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gbG9vayB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBwcm9jZXNzIGFuZCBob3cgdGhlIGluY2x1c2lvbiBvZiBgeGF0dHIuY2AgaXMgZ292ZXJuZWQuIEl0JiMzOTtzIHRoZSBNYWtlZmlsZSB0aGF0IHdpbGwgcmV2ZWFsIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBsb2dpYyBhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBFWFQ0X0ZTX1hBVFRSYCBhbmQgb3RoZXIgZmVhdHVyZSBmbGFncy4gSSBleHBlY3QgdG8gc2VlIGRlcGVuZGVuY2llcyBvciBkZWZpbmVzIHRoYXQgY2xhcmlmeSB0aGlzIHBvaW50IGltbWVkaWF0ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA0OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hhdHRyLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leHQ0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvTWFrZWZpbGU9OD1leHQ0LXlcdDo9IGJhbGxvYy5vIGJpdG1hcC5vIGJsb2NrX3ZhbGlkaXR5Lm8gZGlyLm8gZXh0NF9qYmQyLm8gZXh0ZW50cy5vIFxcXG4tLVxuZnMvZXh0NC9NYWtlZmlsZS0xMS1cdFx0bW1wLm8gbW92ZV9leHRlbnQubyBuYW1laS5vIHBhZ2UtaW8ubyByZWFkcGFnZS5vIHJlc2l6ZS5vIFxcXG5mcy9leHQ0L01ha2VmaWxlOjEyOlx0XHRzdXBlci5vIHN5bWxpbmsubyBzeXNmcy5vIHhhdHRyLm8geGF0dHJfaHVyZC5vIHhhdHRyX3RydXN0ZWQubyBcXFxuZnMvZXh0NC9NYWtlZmlsZS0xMy1cdFx0eGF0dHJfdXNlci5vIGZhc3RfY29tbWl0Lm8gb3JwaGFuLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzYwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBFWFQ0IEZpbGVzeXN0ZW0mIzM5O3MgWGF0dHIgQ29tcGlsYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBub3RpY2luZyB0aGF0IGB4YXR0ci5vYCBhbHdheXMgZ2V0cyBidWlsdCB3aGVuIGBFWFQ0X0ZTYCBpcyBhY3RpdmF0ZWQsIHdoaWNoIG1ha2VzIHNlbnNlIGluaXRpYWxseS4gQnV0LCBJIG5lZWQgdG8gZGlnIGEgbGl0dGxlIGRlZXBlci4gV2hhdCBhYm91dCB0aG9zZSBvdGhlciBjb25maWd1cmF0aW9ucywgeW91IGtub3csIGBFWFQ0X0ZTX1BPU0lYX0FDTGAgYW5kIGBFWFQ0X0ZTX1NFQ1VSSVRZYD8gVGhleSYjMzk7cmUgdmVyeSBsaWtlbHkgdG8gbGV2ZXJhZ2UgZXh0ZW5kZWQgYXR0cmlidXRlcywgc28gdGhhdCBtYWtlcyBtZSBxdWVzdGlvbiB3aGV0aGVyIHRoZSB4YXR0ciBjb21wb25lbnQgaXMgKnRydWx5KiBhbHdheXMgY29tcGlsZWQgb3IgaWYgaXQgaGFzIGRlcGVuZGVuY2llcy4KCkkmIzM5O2xsIGNsYXJpZnkgdGhpcyBieSBleGFtaW5pbmcgYGZzL2V4dDQveGF0dHIuY2AgYmVjYXVzZSwgSSBuZWVkIHRvIGtub3cgd2h5IGl0JiMzOTtzIGFsd2F5cyBpbmNsdWRlZC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZGAgYW5kIHNlZSBpZiB0aGF0IGhlbHBzIG1lIHBpZWNlIHRvZ2V0aGVyIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHdoYXQgdGhlIGV4YWN0IGNyaXRlcmlhIGZvciBjb21waWxhdGlvbiBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leHQ0L3hhdHRyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC94YXR0ci5jPTE1MjY9c3RhdGljIHN0cnVjdCBpbm9kZSAqXG5mcy9leHQ0L3hhdHRyLmM6MTUyNzpleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmQoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgdm9pZCAqdmFsdWUsXG5mcy9leHQ0L3hhdHRyLmMtMTUyOC1cdFx0XHQgICAgc2l6ZV90IHZhbHVlX2xlbiwgdTMyIGhhc2gpXG4tLVxuZnMvZXh0NC94YXR0ci5jPTE1Nzg9c3RhdGljIHN0cnVjdCBpbm9kZSAqZXh0NF94YXR0cl9pbm9kZV9sb29rdXBfY3JlYXRlKGhhbmRsZV90ICpoYW5kbGUsXG4tLVxuZnMvZXh0NC94YXR0ci5jLTE1OTAtXHRoYXNoID0gZXh0NF94YXR0cl9pbm9kZV9oYXNoKEVYVDRfU0IoaW5vZGUtXHUwMDNlaV9zYiksIHZhbHVlLCB2YWx1ZV9sZW4pO1xuZnMvZXh0NC94YXR0ci5jOjE1OTE6XHRlYV9pbm9kZSA9IGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZChpbm9kZSwgdmFsdWUsIHZhbHVlX2xlbiwgaGFzaCk7XG5mcy9leHQ0L3hhdHRyLmMtMTU5Mi1cdGlmIChlYV9pbm9kZSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA0OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MzgKCQkJCQkJCW91dHB1dDogMTQzCgkJCQkJCQl0aG91Z2h0czogNDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBFWFQ0IElub2RlIExvb2t1cCBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgYEVYVDRfRlNgIGNvbmZpZ3VyYXRpb24gaXMgY2xlYXJseSByZWxldmFudCBoZXJlLCB0aGF0JiMzOTtzIHRoZSBiYXNlLiBCdXQgbGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBzdXBwb3J0aW5nIGNvbmZpZ3Mgd2UgbmVlZCB0byBjb25zaWRlci4gUmlnaHQsIHRoZSBwYXRjaCBtb2RpZmllcyBgZnMvZXh0NC9pbm9kZS5jYCBhbmQgYGZzL2V4dDQveGF0dHIuY2Agd2hpY2ggY29uZmlybXMgdGhlIGluaXRpYWwgZm9jdXMuCgpMZXQmIzM5O3MgZm9jdXMgb24gdGhlIGtleSBzeW1ib2xzOiBgZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kYCwgYF9fZXh0NF9pZ2V0YCwgYW5kIGBleHQ0X2lnZXRfbWF0Y2hgLiBUaGV5IHdpbGwgbGlrZWx5IGJlIHRoZSBjcml0aWNhbCBhcmVhcy4KClRoZSBjb3JlIG9mIHRoaXMgY2hhbmdlIHNlZW1zIHRvIGJlIGludHJvZHVjaW5nIGEgbmV3IGZsYWcsIGBFWFQ0X0lHRVRfTk9XQUlUYCwgdG8gYGV4dDRfaWdldF9mbGFnc2AuICBFc3NlbnRpYWxseSwgdGhlIHBhdGNoIGFsdGVycyBgX19leHQ0X2lnZXRgIHRvIHVzZSBhIG5vbi1ibG9ja2luZyBpbm9kZSBsb29rdXAgdXNpbmcgYGZpbmRfaW5vZGVfbm93YWl0YCBhbmQgYSBzcGVjaWFsaXplZCBtYXRjaCBmdW5jdGlvbiwgYGV4dDRfaWdldF9tYXRjaGAuICBUaGlzIG5vbi1ibG9ja2luZyBiZWhhdmlvciBpcyBzcGVjaWZpY2FsbHkgaW1wbGVtZW50ZWQgd2l0aGluIGBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmRgLCB3aGljaCBpcyBkZXNpZ25lZCB0byBwcmV2ZW50IGJsb2NraW5nIHdoZW4gZnJlZWluZyBleHRlbmRlZCBhdHRyaWJ1dGUgKEVBKSBpbm9kZXMuIFRoYXQmIzM5O3MgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgaGVhcnQgb2YgdGhlIGV4dDQgaW5vZGUgbG9va3VwIGFuZCBleHRlbmRlZCBhdHRyaWJ1dGUgaGFuZGxpbmcuICBJdCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSwgd2hpY2ggbWVhbnMgaXQgc2hvdWxkIGJlIGEgdGFyZ2V0IGZvciBmdXp6aW5nLgoKSSYjMzk7bGwgcXVpY2tseSBjb25maXJtIHdoZXRoZXIgYGZpbmRfaW5vZGVfbm93YWl0YCBpcyBhIHN0YW5kYXJkIGtlcm5lbCBmdW5jdGlvbiBvciBpZiBpdCB3YXMgaW50cm9kdWNlZCBpbiBhbm90aGVyIHBhdGNoLiBJdCBhcHBlYXJzIHRvIGJlIHN0YW5kYXJkIG9yIGF0IGxlYXN0IGEgcmVjZW50IGFkZGl0aW9uLiBUaGlzIHJlaW5mb3JjZXMgdGhhdCB0aGUgcGF0Y2ggcmVwcmVzZW50cyBhIGxlZ2l0aW1hdGUgZnVuY3Rpb25hbCBlbmhhbmNlbWVudC4KCkFscmlnaHQsIGxldCYjMzk7cyBjb25zb2xpZGF0ZSB0aGUgZmluZGluZ3MuCgoqKldvcnRoRnV6emluZzogVHJ1ZSoqCgoqKkZvY3VzU3ltYm9sczoqKiBgZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kYCwgYF9fZXh0NF9pZ2V0YCwgYGV4dDRfaWdldF9tYXRjaGAKCioqRW5hYmxlQ29uZmlnczoqKiBgRVhUNF9GU2AKCioqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXh0NCBpbm9kZSBsb29rdXAgcHJvY2VzcyB0byBzdXBwb3J0IGEgbm9uLWJsb2NraW5nIGFwcHJvYWNoIChgRVhUNF9JR0VUX05PV0FJVGApIHVzaW5nIGBmaW5kX2lub2RlX25vd2FpdGAgYWxvbmcgd2l0aCBhIGN1c3RvbSBtYXRjaCBmdW5jdGlvbi4gVGhpcyBuZXcgYmVoYXZpb3IgaXMgc3BlY2lmaWNhbGx5IGFwcGxpZWQgdG8gZXh0ZW5kZWQgYXR0cmlidXRlIChFQSkgaW5vZGUgbG9va3VwcywgcHJldmVudGluZyBhbnkgYmxvY2tpbmcgb24gZnJlZWluZyB0aGVzZSBpbm9kZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiBpbiB0aGUgZXh0NCBmaWxlc3lzdGVtLCBhbmQgc2hvdWxkIGFic29sdXRlbHkgYmUgZnV6emVkIGFzIGEgcmVzdWx0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZCYjMzQ7LAogICAgJiMzNDtfX2V4dDRfaWdldCYjMzQ7LAogICAgJiMzNDtleHQ0X2lnZXRfbWF0Y2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGV4dDQgaW5vZGUgbG9va3VwIGxvZ2ljIHRvIHN1cHBvcnQgYSBub24tYmxvY2tpbmcgbW9kZSAoRVhUNF9JR0VUX05PV0FJVCkgdXNpbmcgZmluZF9pbm9kZV9ub3dhaXQgYW5kIGEgY3VzdG9tIG1hdGNoIGZ1bmN0aW9uLiBUaGlzIGlzIGFwcGxpZWQgdG8gZXh0ZW5kZWQgYXR0cmlidXRlIChFQSkgaW5vZGUgbG9va3VwcyB0byBwcmV2ZW50IGJsb2NraW5nIG9uIGZyZWVpbmcgaW5vZGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGV4dDQgZmlsZXN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmQmIzM0OywKICAgICYjMzQ7X19leHQ0X2lnZXQmIzM0OywKICAgICYjMzQ7ZXh0NF9pZ2V0X21hdGNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBleHQ0IGlub2RlIGxvb2t1cCBsb2dpYyB0byBzdXBwb3J0IGEgbm9uLWJsb2NraW5nIG1vZGUgKEVYVDRfSUdFVF9OT1dBSVQpIHVzaW5nIGZpbmRfaW5vZGVfbm93YWl0IGFuZCBhIGN1c3RvbSBtYXRjaCBmdW5jdGlvbi4gVGhpcyBpcyBhcHBsaWVkIHRvIGV4dGVuZGVkIGF0dHJpYnV0ZSAoRUEpIGlub2RlIGxvb2t1cHMgdG8gcHJldmVudCBibG9ja2luZyBvbiBmcmVlaW5nIGlub2Rlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDQ6MzQ6NDIuMDMxMDU3NTMzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA3NDQyNjgzNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZFwiLFxuICAgIFwiX19leHQ0X2lnZXRcIixcbiAgICBcImV4dDRfaWdldF9tYXRjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBleHQ0IGlub2RlIGxvb2t1cCBsb2dpYyB0byBzdXBwb3J0IGEgbm9uLWJsb2NraW5nIG1vZGUgKEVYVDRfSUdFVF9OT1dBSVQpIHVzaW5nIGZpbmRfaW5vZGVfbm93YWl0IGFuZCBhIGN1c3RvbSBtYXRjaCBmdW5jdGlvbi4gVGhpcyBpcyBhcHBsaWVkIHRvIGV4dGVuZGVkIGF0dHJpYnV0ZSAoRUEpIGlub2RlIGxvb2t1cHMgdG8gcHJldmVudCBibG9ja2luZyBvbiBmcmVlaW5nIGlub2Rlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNDozNDo0Mi4wMzEwNjQyNDNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMzk5NDU1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDIzMjRkNzZhMGFhZTZmNmZkYzJhNTIxOTVlZDIyNzUzMGY4MzBhOTZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdW4gMjUgMDQ6MzQ6NDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHQ0LmggYi9mcy9leHQ0L2V4dDQuaFxcbmluZGV4IGIzN2MxMzZlYTNhYjMzLi5jNzZkZDBiZGQzZDg2MCAxMDA2NDRcXG4tLS0gYS9mcy9leHQ0L2V4dDQuaFxcbisrKyBiL2ZzL2V4dDQvZXh0NC5oXFxuQEAgLTMxNDQsNyArMzE0NCw4IEBAIHR5cGVkZWYgZW51bSB7XFxuIFxcdEVYVDRfSUdFVF9TUEVDSUFMID1cXHQweDAwMDEsIC8qIE9LIHRvIGlnZXQgYSBzeXN0ZW0gaW5vZGUgKi9cXG4gXFx0RVhUNF9JR0VUX0hBTkRMRSA9IFxcdDB4MDAwMixcXHQvKiBJbm9kZSAjIGlzIGZyb20gYSBoYW5kbGUgKi9cXG4gXFx0RVhUNF9JR0VUX0JBRCA9XFx0XFx0MHgwMDA0LCAvKiBBbGxvdyB0byBpZ2V0IGEgYmFkIGlub2RlICovXFxuLVxcdEVYVDRfSUdFVF9FQV9JTk9ERSA9XFx0MHgwMDA4XFx0LyogSW5vZGUgc2hvdWxkIGNvbnRhaW4gYW4gRUEgdmFsdWUgKi9cXG4rXFx0RVhUNF9JR0VUX0VBX0lOT0RFID1cXHQweDAwMDgsXFx0LyogSW5vZGUgc2hvdWxkIGNvbnRhaW4gYW4gRUEgdmFsdWUgKi9cXG4rXFx0RVhUNF9JR0VUX05PV0FJVCA9XFx0MHgwMDEwXFx0LyogTm9uLWJsb2NraW5nIGxvb2t1cCAoc2tpcCBpZiBmcmVlaW5nKSAqL1xcbiB9IGV4dDRfaWdldF9mbGFncztcXG4gXFxuIGV4dGVybiBzdHJ1Y3QgaW5vZGUgKl9fZXh0NF9pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vLFxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2lub2RlLmMgYi9mcy9leHQ0L2lub2RlLmNcXG5pbmRleCBjZTk5ODA3YzVmNWIyYy4uNDJhNzk4ZjMzM2QzMGEgMTAwNjQ0XFxuLS0tIGEvZnMvZXh0NC9pbm9kZS5jXFxuKysrIGIvZnMvZXh0NC9pbm9kZS5jXFxuQEAgLTUyNzAsNiArNTI3MCwyNCBAQCB2b2lkIGV4dDRfc2V0X2lub2RlX21hcHBpbmdfb3JkZXIoc3RydWN0IGlub2RlICppbm9kZSlcXG4gXFx0bWFwcGluZ19zZXRfZm9saW9fb3JkZXJfcmFuZ2UoaW5vZGUtXFx1MDAzZWlfbWFwcGluZywgbWluX29yZGVyLCBtYXhfb3JkZXIpO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IGV4dDRfaWdldF9tYXRjaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1NjQgaW5vLCB2b2lkICpkYXRhKVxcbit7XFxuK1xcdGJvb2wgKmlzX2ZyZWVpbmcgPSBkYXRhO1xcbitcXG4rXFx0aWYgKGlub2RlLVxcdTAwM2VpX2lubyAhPSBpbm8pXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHRzcGluX2xvY2soXFx1MDAyNmlub2RlLVxcdTAwM2VpX2xvY2spO1xcbitcXHRpZiAoaW5vZGVfc3RhdGVfcmVhZChpbm9kZSkgXFx1MDAyNiAoSV9GUkVFSU5HIHwgSV9XSUxMX0ZSRUUgfCBJX0NSRUFUSU5HKSkge1xcbitcXHRcXHRpZiAoaXNfZnJlZWluZylcXG4rXFx0XFx0XFx0KmlzX2ZyZWVpbmcgPSB0cnVlO1xcbitcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2aW5vZGUtXFx1MDAzZWlfbG9jayk7XFxuK1xcdFxcdHJldHVybiAtMTtcXG4rXFx0fVxcbitcXHRfX2lnZXQoaW5vZGUpO1xcbitcXHRzcGluX3VubG9jayhcXHUwMDI2aW5vZGUtXFx1MDAzZWlfbG9jayk7XFxuK1xcdHJldHVybiAxO1xcbit9XFxuK1xcbiBzdHJ1Y3QgaW5vZGUgKl9fZXh0NF9pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vLFxcbiBcXHRcXHRcXHQgIGV4dDRfaWdldF9mbGFncyBmbGFncywgY29uc3QgY2hhciAqZnVuY3Rpb24sXFxuIFxcdFxcdFxcdCAgdW5zaWduZWQgaW50IGxpbmUpXFxuQEAgLTUyOTgsOSArNTMxNiwyNiBAQCBzdHJ1Y3QgaW5vZGUgKl9fZXh0NF9pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vLFxcbiBcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUZTQ09SUlVQVEVEKTtcXG4gXFx0fVxcbiBcXG4tXFx0aW5vZGUgPSBpZ2V0X2xvY2tlZChzYiwgaW5vKTtcXG4tXFx0aWYgKCFpbm9kZSlcXG4tXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxuK1xcdGlmIChmbGFncyBcXHUwMDI2IEVYVDRfSUdFVF9OT1dBSVQpIHtcXG4rXFx0XFx0Ym9vbCBpc19mcmVlaW5nID0gZmFsc2U7XFxuK1xcbitcXHRcXHRpbm9kZSA9IGZpbmRfaW5vZGVfbm93YWl0KHNiLCBpbm8sIGV4dDRfaWdldF9tYXRjaCwgXFx1MDAyNmlzX2ZyZWVpbmcpO1xcbitcXHRcXHRpZiAoaXNfZnJlZWluZylcXG4rXFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVTVEFMRSk7XFxuK1xcdFxcdGlmICghaW5vZGUpIHtcXG4rXFx0XFx0XFx0aW5vZGUgPSBpZ2V0X2xvY2tlZChzYiwgaW5vKTtcXG4rXFx0XFx0XFx0aWYgKCFpbm9kZSlcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdGlmIChpbm9kZV9zdGF0ZV9yZWFkX29uY2UoaW5vZGUpIFxcdTAwMjYgSV9ORVcpXFxuK1xcdFxcdFxcdFxcdHdhaXRfb25fbmV3X2lub2RlKGlub2RlKTtcXG4rXFx0XFx0fVxcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRpbm9kZSA9IGlnZXRfbG9ja2VkKHNiLCBpbm8pO1xcbitcXHRcXHRpZiAoIWlub2RlKVxcbitcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcXG4rXFx0fVxcbitcXG4gXFx0aWYgKCEoaW5vZGVfc3RhdGVfcmVhZF9vbmNlKGlub2RlKSBcXHUwMDI2IElfTkVXKSkge1xcbiBcXHRcXHRyZXQgPSBjaGVja19pZ290X2lub2RlKGlub2RlLCBmbGFncywgZnVuY3Rpb24sIGxpbmUpO1xcbiBcXHRcXHRpZiAocmV0KSB7XFxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQveGF0dHIuYyBiL2ZzL2V4dDQveGF0dHIuY1xcbmluZGV4IDk4MmExZjgzMWUyMjgyLi4yMWI1NjcwZDg1MDNjYSAxMDA2NDRcXG4tLS0gYS9mcy9leHQ0L3hhdHRyLmNcXG4rKysgYi9mcy9leHQ0L3hhdHRyLmNcXG5AQCAtMTU1MCw3ICsxNTUwLDcgQEAgZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKnZhbHVlLFxcbiBcXG4gXFx0d2hpbGUgKGNlKSB7XFxuIFxcdFxcdGVhX2lub2RlID0gZXh0NF9pZ2V0KGlub2RlLVxcdTAwM2VpX3NiLCBjZS1cXHUwMDNlZV92YWx1ZSxcXG4tXFx0XFx0XFx0XFx0ICAgICBFWFQ0X0lHRVRfRUFfSU5PREUpO1xcbitcXHRcXHRcXHRcXHQgICAgIEVYVDRfSUdFVF9FQV9JTk9ERSB8IEVYVDRfSUdFVF9OT1dBSVQpO1xcbiBcXHRcXHRpZiAoSVNfRVJSKGVhX2lub2RlKSlcXG4gXFx0XFx0XFx0Z290byBuZXh0X2VudHJ5O1xcbiBcXHRcXHRleHQ0X3hhdHRyX2lub2RlX3NldF9jbGFzcyhlYV9pbm9kZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA0OjM0OjQyLjU1NjAyNTQ3M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjAyMTkyODYxNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZFwiLFxuICAgIFwiX19leHQ0X2lnZXRcIixcbiAgICBcImV4dDRfaWdldF9tYXRjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBleHQ0IGlub2RlIGxvb2t1cCBsb2dpYyB0byBzdXBwb3J0IGEgbm9uLWJsb2NraW5nIG1vZGUgKEVYVDRfSUdFVF9OT1dBSVQpIHVzaW5nIGZpbmRfaW5vZGVfbm93YWl0IGFuZCBhIGN1c3RvbSBtYXRjaCBmdW5jdGlvbi4gVGhpcyBpcyBhcHBsaWVkIHRvIGV4dGVuZGVkIGF0dHJpYnV0ZSAoRUEpIGlub2RlIGxvb2t1cHMgdG8gcHJldmVudCBibG9ja2luZyBvbiBmcmVlaW5nIGlub2Rlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDIzMjRkNzZhMGFhZTZmNmZkYzJhNTIxOTVlZDIyNzUzMGY4MzBhOTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1biAyNSAwNDozNDo0MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvZXh0NC5oIGIvZnMvZXh0NC9leHQ0LmhcbmluZGV4IGIzN2MxMzZlYTNhYjMzLi5jNzZkZDBiZGQzZDg2MCAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQvZXh0NC5oXG4rKysgYi9mcy9leHQ0L2V4dDQuaFxuQEAgLTMxNDQsNyArMzE0NCw4IEBAIHR5cGVkZWYgZW51bSB7XG4gXHRFWFQ0X0lHRVRfU1BFQ0lBTCA9XHQweDAwMDEsIC8qIE9LIHRvIGlnZXQgYSBzeXN0ZW0gaW5vZGUgKi9cbiBcdEVYVDRfSUdFVF9IQU5ETEUgPSBcdDB4MDAwMixcdC8qIElub2RlICMgaXMgZnJvbSBhIGhhbmRsZSAqL1xuIFx0RVhUNF9JR0VUX0JBRCA9XHRcdDB4MDAwNCwgLyogQWxsb3cgdG8gaWdldCBhIGJhZCBpbm9kZSAqL1xuLVx0RVhUNF9JR0VUX0VBX0lOT0RFID1cdDB4MDAwOFx0LyogSW5vZGUgc2hvdWxkIGNvbnRhaW4gYW4gRUEgdmFsdWUgKi9cbitcdEVYVDRfSUdFVF9FQV9JTk9ERSA9XHQweDAwMDgsXHQvKiBJbm9kZSBzaG91bGQgY29udGFpbiBhbiBFQSB2YWx1ZSAqL1xuK1x0RVhUNF9JR0VUX05PV0FJVCA9XHQweDAwMTBcdC8qIE5vbi1ibG9ja2luZyBsb29rdXAgKHNraXAgaWYgZnJlZWluZykgKi9cbiB9IGV4dDRfaWdldF9mbGFncztcbiBcbiBleHRlcm4gc3RydWN0IGlub2RlICpfX2V4dDRfaWdldChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1bnNpZ25lZCBsb25nIGlubyxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2lub2RlLmMgYi9mcy9leHQ0L2lub2RlLmNcbmluZGV4IGNlOTk4MDdjNWY1YjJjLi40MmE3OThmMzMzZDMwYSAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQvaW5vZGUuY1xuKysrIGIvZnMvZXh0NC9pbm9kZS5jXG5AQCAtNTI3MCw2ICs1MjcwLDI0IEBAIHZvaWQgZXh0NF9zZXRfaW5vZGVfbWFwcGluZ19vcmRlcihzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuIFx0bWFwcGluZ19zZXRfZm9saW9fb3JkZXJfcmFuZ2UoaW5vZGUtXHUwMDNlaV9tYXBwaW5nLCBtaW5fb3JkZXIsIG1heF9vcmRlcik7XG4gfVxuIFxuK3N0YXRpYyBpbnQgZXh0NF9pZ2V0X21hdGNoKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHU2NCBpbm8sIHZvaWQgKmRhdGEpXG4re1xuK1x0Ym9vbCAqaXNfZnJlZWluZyA9IGRhdGE7XG4rXG4rXHRpZiAoaW5vZGUtXHUwMDNlaV9pbm8gIT0gaW5vKVxuK1x0XHRyZXR1cm4gMDtcbitcdHNwaW5fbG9jayhcdTAwMjZpbm9kZS1cdTAwM2VpX2xvY2spO1xuK1x0aWYgKGlub2RlX3N0YXRlX3JlYWQoaW5vZGUpIFx1MDAyNiAoSV9GUkVFSU5HIHwgSV9XSUxMX0ZSRUUgfCBJX0NSRUFUSU5HKSkge1xuK1x0XHRpZiAoaXNfZnJlZWluZylcbitcdFx0XHQqaXNfZnJlZWluZyA9IHRydWU7XG4rXHRcdHNwaW5fdW5sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4rXHRcdHJldHVybiAtMTtcbitcdH1cbitcdF9faWdldChpbm9kZSk7XG4rXHRzcGluX3VubG9jayhcdTAwMjZpbm9kZS1cdTAwM2VpX2xvY2spO1xuK1x0cmV0dXJuIDE7XG4rfVxuK1xuIHN0cnVjdCBpbm9kZSAqX19leHQ0X2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBpbm8sXG4gXHRcdFx0ICBleHQ0X2lnZXRfZmxhZ3MgZmxhZ3MsIGNvbnN0IGNoYXIgKmZ1bmN0aW9uLFxuIFx0XHRcdCAgdW5zaWduZWQgaW50IGxpbmUpXG5AQCAtNTI5OCw5ICs1MzE2LDI2IEBAIHN0cnVjdCBpbm9kZSAqX19leHQ0X2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBpbm8sXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FRlNDT1JSVVBURUQpO1xuIFx0fVxuIFxuLVx0aW5vZGUgPSBpZ2V0X2xvY2tlZChzYiwgaW5vKTtcbi1cdGlmICghaW5vZGUpXG4tXHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuK1x0aWYgKGZsYWdzIFx1MDAyNiBFWFQ0X0lHRVRfTk9XQUlUKSB7XG4rXHRcdGJvb2wgaXNfZnJlZWluZyA9IGZhbHNlO1xuK1xuK1x0XHRpbm9kZSA9IGZpbmRfaW5vZGVfbm93YWl0KHNiLCBpbm8sIGV4dDRfaWdldF9tYXRjaCwgXHUwMDI2aXNfZnJlZWluZyk7XG4rXHRcdGlmIChpc19mcmVlaW5nKVxuK1x0XHRcdHJldHVybiBFUlJfUFRSKC1FU1RBTEUpO1xuK1x0XHRpZiAoIWlub2RlKSB7XG4rXHRcdFx0aW5vZGUgPSBpZ2V0X2xvY2tlZChzYiwgaW5vKTtcbitcdFx0XHRpZiAoIWlub2RlKVxuK1x0XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0aWYgKGlub2RlX3N0YXRlX3JlYWRfb25jZShpbm9kZSkgXHUwMDI2IElfTkVXKVxuK1x0XHRcdFx0d2FpdF9vbl9uZXdfaW5vZGUoaW5vZGUpO1xuK1x0XHR9XG4rXHR9IGVsc2Uge1xuK1x0XHRpbm9kZSA9IGlnZXRfbG9ja2VkKHNiLCBpbm8pO1xuK1x0XHRpZiAoIWlub2RlKVxuK1x0XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuK1x0fVxuK1xuIFx0aWYgKCEoaW5vZGVfc3RhdGVfcmVhZF9vbmNlKGlub2RlKSBcdTAwMjYgSV9ORVcpKSB7XG4gXHRcdHJldCA9IGNoZWNrX2lnb3RfaW5vZGUoaW5vZGUsIGZsYWdzLCBmdW5jdGlvbiwgbGluZSk7XG4gXHRcdGlmIChyZXQpIHtcbmRpZmYgLS1naXQgYS9mcy9leHQ0L3hhdHRyLmMgYi9mcy9leHQ0L3hhdHRyLmNcbmluZGV4IDk4MmExZjgzMWUyMjgyLi4yMWI1NjcwZDg1MDNjYSAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQveGF0dHIuY1xuKysrIGIvZnMvZXh0NC94YXR0ci5jXG5AQCAtMTU1MCw3ICsxNTUwLDcgQEAgZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKnZhbHVlLFxuIFxuIFx0d2hpbGUgKGNlKSB7XG4gXHRcdGVhX2lub2RlID0gZXh0NF9pZ2V0KGlub2RlLVx1MDAzZWlfc2IsIGNlLVx1MDAzZWVfdmFsdWUsXG4tXHRcdFx0XHQgICAgIEVYVDRfSUdFVF9FQV9JTk9ERSk7XG4rXHRcdFx0XHQgICAgIEVYVDRfSUdFVF9FQV9JTk9ERSB8IEVYVDRfSUdFVF9OT1dBSVQpO1xuIFx0XHRpZiAoSVNfRVJSKGVhX2lub2RlKSlcbiBcdFx0XHRnb3RvIG5leHRfZW50cnk7XG4gXHRcdGV4dDRfeGF0dHJfaW5vZGVfc2V0X2NsYXNzKGVhX2lub2RlKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA0OjM0OjQyLjU1NjAyODAyM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NzgzMDc5NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBleHQ0IElub2RlIEZldGNoaW5nIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIGV4dDQgZmlsZXN5c3RlbSBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGludGVyZXN0aW5nLiBJdCB0b3VjaGVzIHRocmVlIGtleSBmaWxlczogYGV4dDQuaGAsIGBpbm9kZS5jYCwgYW5kIGB4YXR0ci5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbnRyb2R1Y2luZyBhIG5ldyBmbGFnLCBgRVhUNF9JR0VUX05PV0FJVGAsIHdoaWNoIGlzIGFkZGVkIHRvIHRoZSBgZXh0NF9pZ2V0X2ZsYWdzYCBlbnVtLlxuXG5NeSBpbW1lZGlhdGUgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoaXMgZmxhZyBpcyBkZXNpZ25lZCB0byBtb2RpZnkgdGhlIGlub2RlIGZldGNoaW5nIGJlaGF2aW9yIHdpdGhpbiBleHQ0LiBTcGVjaWZpY2FsbHksIHRoZSBwYXRjaCBhbHRlcnMgYF9fZXh0NF9pZ2V0YCB0byBoYW5kbGUgdGhpcyBuZXcgZmxhZy4gSXQgbG9va3MgbGlrZSBpdCdzIGdvaW5nIHRvIHVzZSBgZmluZF9pbm9kZV9ub3dhaXRgIGFuZCBhIGN1c3RvbSBtYXRjaCBmdW5jdGlvbiwgYGV4dDRfaWdldF9tYXRjaGAsIGZvciB0aGUgbmV3IGZ1bmN0aW9uYWxpdHkuIEZ1cnRoZXJtb3JlLCBgZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kYCBpcyB1cGRhdGVkIHRvIHV0aWxpemUgYEVYVDRfSUdFVF9OT1dBSVRgIHdoZW4gZmV0Y2hpbmcgRXh0ZW5kZWQgQXR0cmlidXRlIChFQSkgaW5vZGVzLlxuXG5Fc3NlbnRpYWxseSwgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCBzZWVtcyB3ZSdyZSB0cnlpbmcgdG8gb3B0aW1pemUgdGhlIGlub2RlIGZldGNoIHBhdGgsIHBhcnRpY3VsYXJseSBmb3IgRUEgaW5vZGVzLCBieSBhdm9pZGluZyBibG9ja2luZyB3aGlsZSBpbm9kZXMgYXJlIGZyZWVkLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgYmxvY2tpbmcgY2FuIGhhdmUgbm90aWNlYWJsZSBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMuXG5cbkxldCdzIHF1aWNrbHkgdmVyaWZ5IHRoZSBmdW5jdGlvbnMgaW1wYWN0ZWQ6IEknbGwgbmVlZCB0byBleGFtaW5lIGBleHQ0X2lnZXRfbWF0Y2hgICh3aGljaCBpcyBuZXcpLCBgX19leHQ0X2lnZXRgLCBhbmQgYGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZGAgaW4gZGV0YWlsLlxuXG5CYXNlZCBvbiB0aGlzIHVuZGVyc3RhbmRpbmcsIEkgdGhpbmsgdGhpcyBtb2RpZmljYXRpb24gbWVyaXRzIGZ1enppbmcuIFRoZXJlZm9yZSwgSSB3aWxsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLiBJIG5lZWQgdG8gc2V0IHRoZSBgRm9jdXNTeW1ib2xzYCB0byBgZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kYCwgYF9fZXh0NF9pZ2V0YCwgYW5kIGBleHQ0X2lnZXRfbWF0Y2hgLiBJIGFsc28gbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJlbGV2YW50IGNvbmZpZ3MgYXJlIGVuYWJsZWQ6IGBFWFQ0X0ZTYCBhbmQgYEVYVDRfRlNfWEFUVFJgLiBOb3cgbGV0J3MgY29uZmlybSB0aG9zZSBjb25maWdzIGFyZSBjb3JyZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTE2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDQ6MzQ6NDguMjM0MzM4NTIyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2Mzg3MzU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBFWFQ0X0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leHQ0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9leHQ0L0tjb25maWc6Mjpjb25maWcgRVhUNF9GU1xcbmZzL2V4dDQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJUaGUgRXh0ZW5kZWQgNCAoZXh0NCkgZmlsZXN5c3RlbVxcXCJcXG4tLVxcbmZzL2V4dDQvS2NvbmZpZz0zNT1jb25maWcgRVhUNF9VU0VfRk9SX0VYVDJcXG4tLVxcbmZzL2V4dDQvS2NvbmZpZy00NS1cXG5mcy9leHQ0L0tjb25maWc6NDY6Y29uZmlnIEVYVDRfRlNfUE9TSVhfQUNMXFxuZnMvZXh0NC9LY29uZmlnLTQ3LVxcdGJvb2wgXFxcIkV4dDQgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuLS1cXG5mcy9leHQ0L0tjb25maWctNTUtXFxuZnMvZXh0NC9LY29uZmlnOjU2OmNvbmZpZyBFWFQ0X0ZTX1NFQ1VSSVRZXFxuZnMvZXh0NC9LY29uZmlnLTU3LVxcdGJvb2wgXFxcIkV4dDQgU2VjdXJpdHkgTGFiZWxzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNDozNDo0OC4zMjA3MzE2N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNDQzNjE2NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBjb25zaWRlcmluZyBteSBleHBlcnRpc2U6XG5cbioqQ2hlY2tpbmcgRVhUNCBYYXR0ciBDb21waWxhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIHF1aWNrbHkgZ2V0IHRvIHRoZSBjb3JlIG9mIHRoaXMuIEkgbmVlZCB0byB2ZXJpZnkgaG93IHRoZSBgRVhUNF9GU19YQVRUUmAgZmVhdHVyZSBmbGFnIGlzIGhhbmRsZWQgaW4gdGhpcyBidWlsZC4gSXMgaXQgYSBkaXN0aW5jdCBlbnRpdHksIG9yIGlzIGl0IHBhcnQgb2YgdGhlIGJyb2FkZXIgYEVYVDRfRlNgIGRlZmluaXRpb24/IE15IGluc3RpbmN0cyB0ZWxsIG1lIHRoZSB4YXR0ciBmdW5jdGlvbnMgd2lsbCBiZSBjb21waWxlZCBpbiBhIGNlcnRhaW4gbW9kdWxlLlxuXG5JIHJlY2FsbCBzZWVpbmcgYGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZGDigJQgdGhhdCdzIHRoZSB0ZWxsdGFsZSBpbmRpY2F0b3IsIHJlc2lkaW5nIHNwZWNpZmljYWxseSB3aXRoaW4gYGZzL2V4dDQveGF0dHIuY2AuIFNvIG15IGZvY3VzIHNoaWZ0cyB0byB0aGUgYGZzL2V4dDQvTWFrZWZpbGVgLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGxvb2sgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgaG93IHRoZSBpbmNsdXNpb24gb2YgYHhhdHRyLmNgIGlzIGdvdmVybmVkLiBJdCdzIHRoZSBNYWtlZmlsZSB0aGF0IHdpbGwgcmV2ZWFsIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBsb2dpYyBhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBFWFQ0X0ZTX1hBVFRSYCBhbmQgb3RoZXIgZmVhdHVyZSBmbGFncy4gSSBleHBlY3QgdG8gc2VlIGRlcGVuZGVuY2llcyBvciBkZWZpbmVzIHRoYXQgY2xhcmlmeSB0aGlzIHBvaW50IGltbWVkaWF0ZWx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozODY2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDQ6MzQ6NTEuNTY1MDk1NTE3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0OTQ4MDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhhdHRyLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXh0NC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leHQ0L01ha2VmaWxlPTg9ZXh0NC15XFx0Oj0gYmFsbG9jLm8gYml0bWFwLm8gYmxvY2tfdmFsaWRpdHkubyBkaXIubyBleHQ0X2piZDIubyBleHRlbnRzLm8gXFxcXFxcbi0tXFxuZnMvZXh0NC9NYWtlZmlsZS0xMS1cXHRcXHRtbXAubyBtb3ZlX2V4dGVudC5vIG5hbWVpLm8gcGFnZS1pby5vIHJlYWRwYWdlLm8gcmVzaXplLm8gXFxcXFxcbmZzL2V4dDQvTWFrZWZpbGU6MTI6XFx0XFx0c3VwZXIubyBzeW1saW5rLm8gc3lzZnMubyB4YXR0ci5vIHhhdHRyX2h1cmQubyB4YXR0cl90cnVzdGVkLm8gXFxcXFxcbmZzL2V4dDQvTWFrZWZpbGUtMTMtXFx0XFx0eGF0dHJfdXNlci5vIGZhc3RfY29tbWl0Lm8gb3JwaGFuLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDQ6MzQ6NTEuNjQwMDQ5OTI2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY0MTQ2Mzc0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIEVYVDQgRmlsZXN5c3RlbSdzIFhhdHRyIENvbXBpbGF0aW9uKipcblxuT2theSwgc28gSSdtIG5vdGljaW5nIHRoYXQgYHhhdHRyLm9gIGFsd2F5cyBnZXRzIGJ1aWx0IHdoZW4gYEVYVDRfRlNgIGlzIGFjdGl2YXRlZCwgd2hpY2ggbWFrZXMgc2Vuc2UgaW5pdGlhbGx5LiBCdXQsIEkgbmVlZCB0byBkaWcgYSBsaXR0bGUgZGVlcGVyLiBXaGF0IGFib3V0IHRob3NlIG90aGVyIGNvbmZpZ3VyYXRpb25zLCB5b3Uga25vdywgYEVYVDRfRlNfUE9TSVhfQUNMYCBhbmQgYEVYVDRfRlNfU0VDVVJJVFlgPyBUaGV5J3JlIHZlcnkgbGlrZWx5IHRvIGxldmVyYWdlIGV4dGVuZGVkIGF0dHJpYnV0ZXMsIHNvIHRoYXQgbWFrZXMgbWUgcXVlc3Rpb24gd2hldGhlciB0aGUgeGF0dHIgY29tcG9uZW50IGlzICp0cnVseSogYWx3YXlzIGNvbXBpbGVkIG9yIGlmIGl0IGhhcyBkZXBlbmRlbmNpZXMuXG5cbkknbGwgY2xhcmlmeSB0aGlzIGJ5IGV4YW1pbmluZyBgZnMvZXh0NC94YXR0ci5jYCBiZWNhdXNlLCBJIG5lZWQgdG8ga25vdyB3aHkgaXQncyBhbHdheXMgaW5jbHVkZWQuIExldCdzIHN0YXJ0IHdpdGggYGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZGAgYW5kIHNlZSBpZiB0aGF0IGhlbHBzIG1lIHBpZWNlIHRvZ2V0aGVyIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHdoYXQgdGhlIGV4YWN0IGNyaXRlcmlhIGZvciBjb21waWxhdGlvbiBpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM2MCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA0OjM0OjU1LjI4MTUxNjUzNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjU3ODA3NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQveGF0dHIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leHQ0L3hhdHRyLmM9MTUyNj1zdGF0aWMgc3RydWN0IGlub2RlICpcXG5mcy9leHQ0L3hhdHRyLmM6MTUyNzpleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmQoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgdm9pZCAqdmFsdWUsXFxuZnMvZXh0NC94YXR0ci5jLTE1MjgtXFx0XFx0XFx0ICAgIHNpemVfdCB2YWx1ZV9sZW4sIHUzMiBoYXNoKVxcbi0tXFxuZnMvZXh0NC94YXR0ci5jPTE1Nzg9c3RhdGljIHN0cnVjdCBpbm9kZSAqZXh0NF94YXR0cl9pbm9kZV9sb29rdXBfY3JlYXRlKGhhbmRsZV90ICpoYW5kbGUsXFxuLS1cXG5mcy9leHQ0L3hhdHRyLmMtMTU5MC1cXHRoYXNoID0gZXh0NF94YXR0cl9pbm9kZV9oYXNoKEVYVDRfU0IoaW5vZGUtXFx1MDAzZWlfc2IpLCB2YWx1ZSwgdmFsdWVfbGVuKTtcXG5mcy9leHQ0L3hhdHRyLmM6MTU5MTpcXHRlYV9pbm9kZSA9IGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZChpbm9kZSwgdmFsdWUsIHZhbHVlX2xlbiwgaGFzaCk7XFxuZnMvZXh0NC94YXR0ci5jLTE1OTItXFx0aWYgKGVhX2lub2RlKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA0OjM0OjU1LjQwNzMwMTQxMloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcyMDQ4NzE0MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIEVYVDQgSW5vZGUgTG9va3VwIFBhdGNoKipcblxuT2theSwgc28gdGhlIGBFWFQ0X0ZTYCBjb25maWd1cmF0aW9uIGlzIGNsZWFybHkgcmVsZXZhbnQgaGVyZSwgdGhhdCdzIHRoZSBiYXNlLiBCdXQgbGV0J3MgbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgc3VwcG9ydGluZyBjb25maWdzIHdlIG5lZWQgdG8gY29uc2lkZXIuIFJpZ2h0LCB0aGUgcGF0Y2ggbW9kaWZpZXMgYGZzL2V4dDQvaW5vZGUuY2AgYW5kIGBmcy9leHQ0L3hhdHRyLmNgIHdoaWNoIGNvbmZpcm1zIHRoZSBpbml0aWFsIGZvY3VzLlxuXG5MZXQncyBmb2N1cyBvbiB0aGUga2V5IHN5bWJvbHM6IGBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmRgLCBgX19leHQ0X2lnZXRgLCBhbmQgYGV4dDRfaWdldF9tYXRjaGAuIFRoZXkgd2lsbCBsaWtlbHkgYmUgdGhlIGNyaXRpY2FsIGFyZWFzLlxuXG5UaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBzZWVtcyB0byBiZSBpbnRyb2R1Y2luZyBhIG5ldyBmbGFnLCBgRVhUNF9JR0VUX05PV0FJVGAsIHRvIGBleHQ0X2lnZXRfZmxhZ3NgLiAgRXNzZW50aWFsbHksIHRoZSBwYXRjaCBhbHRlcnMgYF9fZXh0NF9pZ2V0YCB0byB1c2UgYSBub24tYmxvY2tpbmcgaW5vZGUgbG9va3VwIHVzaW5nIGBmaW5kX2lub2RlX25vd2FpdGAgYW5kIGEgc3BlY2lhbGl6ZWQgbWF0Y2ggZnVuY3Rpb24sIGBleHQ0X2lnZXRfbWF0Y2hgLiAgVGhpcyBub24tYmxvY2tpbmcgYmVoYXZpb3IgaXMgc3BlY2lmaWNhbGx5IGltcGxlbWVudGVkIHdpdGhpbiBgZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kYCwgd2hpY2ggaXMgZGVzaWduZWQgdG8gcHJldmVudCBibG9ja2luZyB3aGVuIGZyZWVpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIChFQSkgaW5vZGVzLiBUaGF0J3MgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgaGVhcnQgb2YgdGhlIGV4dDQgaW5vZGUgbG9va3VwIGFuZCBleHRlbmRlZCBhdHRyaWJ1dGUgaGFuZGxpbmcuICBJdCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSwgd2hpY2ggbWVhbnMgaXQgc2hvdWxkIGJlIGEgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5JJ2xsIHF1aWNrbHkgY29uZmlybSB3aGV0aGVyIGBmaW5kX2lub2RlX25vd2FpdGAgaXMgYSBzdGFuZGFyZCBrZXJuZWwgZnVuY3Rpb24gb3IgaWYgaXQgd2FzIGludHJvZHVjZWQgaW4gYW5vdGhlciBwYXRjaC4gSXQgYXBwZWFycyB0byBiZSBzdGFuZGFyZCBvciBhdCBsZWFzdCBhIHJlY2VudCBhZGRpdGlvbi4gVGhpcyByZWluZm9yY2VzIHRoYXQgdGhlIHBhdGNoIHJlcHJlc2VudHMgYSBsZWdpdGltYXRlIGZ1bmN0aW9uYWwgZW5oYW5jZW1lbnQuXG5cbkFscmlnaHQsIGxldCdzIGNvbnNvbGlkYXRlIHRoZSBmaW5kaW5ncy5cblxuKipXb3J0aEZ1enppbmc6IFRydWUqKlxuXG4qKkZvY3VzU3ltYm9sczoqKiBgZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kYCwgYF9fZXh0NF9pZ2V0YCwgYGV4dDRfaWdldF9tYXRjaGBcblxuKipFbmFibGVDb25maWdzOioqIGBFWFQ0X0ZTYFxuXG4qKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGV4dDQgaW5vZGUgbG9va3VwIHByb2Nlc3MgdG8gc3VwcG9ydCBhIG5vbi1ibG9ja2luZyBhcHByb2FjaCAoYEVYVDRfSUdFVF9OT1dBSVRgKSB1c2luZyBgZmluZF9pbm9kZV9ub3dhaXRgIGFsb25nIHdpdGggYSBjdXN0b20gbWF0Y2ggZnVuY3Rpb24uIFRoaXMgbmV3IGJlaGF2aW9yIGlzIHNwZWNpZmljYWxseSBhcHBsaWVkIHRvIGV4dGVuZGVkIGF0dHJpYnV0ZSAoRUEpIGlub2RlIGxvb2t1cHMsIHByZXZlbnRpbmcgYW55IGJsb2NraW5nIG9uIGZyZWVpbmcgdGhlc2UgaW5vZGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gaW4gdGhlIGV4dDQgZmlsZXN5c3RlbSwgYW5kIHNob3VsZCBhYnNvbHV0ZWx5IGJlIGZ1enplZCBhcyBhIHJlc3VsdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkzOCwiT3V0cHV0VG9rZW5zIjoxNDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDQ6MzU6MDIuNjEyMTc0OTMxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzMTI5MzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kXCIsXG4gICAgXCJfX2V4dDRfaWdldFwiLFxuICAgIFwiZXh0NF9pZ2V0X21hdGNoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGV4dDQgaW5vZGUgbG9va3VwIGxvZ2ljIHRvIHN1cHBvcnQgYSBub24tYmxvY2tpbmcgbW9kZSAoRVhUNF9JR0VUX05PV0FJVCkgdXNpbmcgZmluZF9pbm9kZV9ub3dhaXQgYW5kIGEgY3VzdG9tIG1hdGNoIGZ1bmN0aW9uLiBUaGlzIGlzIGFwcGxpZWQgdG8gZXh0ZW5kZWQgYXR0cmlidXRlIChFQSkgaW5vZGUgbG9va3VwcyB0byBwcmV2ZW50IGJsb2NraW5nIG9uIGZyZWVpbmcgaW5vZGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGV4dDQgZmlsZXN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZFwiLFxuICAgIFwiX19leHQ0X2lnZXRcIixcbiAgICBcImV4dDRfaWdldF9tYXRjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBleHQ0IGlub2RlIGxvb2t1cCBsb2dpYyB0byBzdXBwb3J0IGEgbm9uLWJsb2NraW5nIG1vZGUgKEVYVDRfSUdFVF9OT1dBSVQpIHVzaW5nIGZpbmRfaW5vZGVfbm93YWl0IGFuZCBhIGN1c3RvbSBtYXRjaCBmdW5jdGlvbi4gVGhpcyBpcyBhcHBsaWVkIHRvIGV4dGVuZGVkIGF0dHJpYnV0ZSAoRUEpIGlub2RlIGxvb2t1cHMgdG8gcHJldmVudCBibG9ja2luZyBvbiBmcmVlaW5nIGlub2Rlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow49cxg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-25 04:24:23 +0000 UTC FinishedAt: 2026-06-25 04:35:04 +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": "ab9de95c9cf952332ab79453b4b5d1bfca8e514f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "ab9de95c9cf952332ab79453b4b5d1bfca8e514f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "f04d06fd-a78b-4ee5-9bb0-7a800ca61568" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_xattr_inode_cache_find", "__ext4_iget", "ext4_iget_match" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA0OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmQmIzM0OywKICAgICYjMzQ7X19leHQ0X2lnZXQmIzM0OywKICAgICYjMzQ7ZXh0NF9pZ2V0X21hdGNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBleHQ0IGlub2RlIGxvb2t1cCBsb2dpYyB0byBzdXBwb3J0IGEgbm9uLWJsb2NraW5nIG1vZGUgKEVYVDRfSUdFVF9OT1dBSVQpIHVzaW5nIGZpbmRfaW5vZGVfbm93YWl0IGFuZCBhIGN1c3RvbSBtYXRjaCBmdW5jdGlvbi4gVGhpcyBpcyBhcHBsaWVkIHRvIGV4dGVuZGVkIGF0dHJpYnV0ZSAoRUEpIGlub2RlIGxvb2t1cHMgdG8gcHJldmVudCBibG9ja2luZyBvbiBmcmVlaW5nIGlub2Rlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA0OjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjMyNGQ3NmEwYWFlNmY2ZmRjMmE1MjE5NWVkMjI3NTMwZjgzMGE5NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVuIDI1IDA0OjM0OjQwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvZXh0NC5oIGIvZnMvZXh0NC9leHQ0LmhcbmluZGV4IGIzN2MxMzZlYTNhYjMzLi5jNzZkZDBiZGQzZDg2MCAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQvZXh0NC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L2V4dDQuaFxuQEAgLTMxNDQsNyAmIzQzOzMxNDQsOCBAQCB0eXBlZGVmIGVudW0ge1xuIFx0RVhUNF9JR0VUX1NQRUNJQUwgPVx0MHgwMDAxLCAvKiBPSyB0byBpZ2V0IGEgc3lzdGVtIGlub2RlICovXG4gXHRFWFQ0X0lHRVRfSEFORExFID0gXHQweDAwMDIsXHQvKiBJbm9kZSAjIGlzIGZyb20gYSBoYW5kbGUgKi9cbiBcdEVYVDRfSUdFVF9CQUQgPVx0XHQweDAwMDQsIC8qIEFsbG93IHRvIGlnZXQgYSBiYWQgaW5vZGUgKi9cbi1cdEVYVDRfSUdFVF9FQV9JTk9ERSA9XHQweDAwMDhcdC8qIElub2RlIHNob3VsZCBjb250YWluIGFuIEVBIHZhbHVlICovXG4mIzQzO1x0RVhUNF9JR0VUX0VBX0lOT0RFID1cdDB4MDAwOCxcdC8qIElub2RlIHNob3VsZCBjb250YWluIGFuIEVBIHZhbHVlICovXG4mIzQzO1x0RVhUNF9JR0VUX05PV0FJVCA9XHQweDAwMTBcdC8qIE5vbi1ibG9ja2luZyBsb29rdXAgKHNraXAgaWYgZnJlZWluZykgKi9cbiB9IGV4dDRfaWdldF9mbGFncztcbiBcbiBleHRlcm4gc3RydWN0IGlub2RlICpfX2V4dDRfaWdldChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1bnNpZ25lZCBsb25nIGlubyxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2lub2RlLmMgYi9mcy9leHQ0L2lub2RlLmNcbmluZGV4IGNlOTk4MDdjNWY1YjJjLi40MmE3OThmMzMzZDMwYSAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQvaW5vZGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC9pbm9kZS5jXG5AQCAtNTI3MCw2ICYjNDM7NTI3MCwyNCBAQCB2b2lkIGV4dDRfc2V0X2lub2RlX21hcHBpbmdfb3JkZXIoc3RydWN0IGlub2RlICppbm9kZSlcbiBcdG1hcHBpbmdfc2V0X2ZvbGlvX29yZGVyX3JhbmdlKGlub2RlLVx1MDAzZWlfbWFwcGluZywgbWluX29yZGVyLCBtYXhfb3JkZXIpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBleHQ0X2lnZXRfbWF0Y2goc3RydWN0IGlub2RlICppbm9kZSwgdTY0IGlubywgdm9pZCAqZGF0YSlcbiYjNDM7e1xuJiM0MztcdGJvb2wgKmlzX2ZyZWVpbmcgPSBkYXRhO1xuJiM0MztcbiYjNDM7XHRpZiAoaW5vZGUtXHUwMDNlaV9pbm8gIT0gaW5vKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0c3Bpbl9sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4mIzQzO1x0aWYgKGlub2RlX3N0YXRlX3JlYWQoaW5vZGUpIFx1MDAyNiAoSV9GUkVFSU5HIHwgSV9XSUxMX0ZSRUUgfCBJX0NSRUFUSU5HKSkge1xuJiM0MztcdFx0aWYgKGlzX2ZyZWVpbmcpXG4mIzQzO1x0XHRcdCppc19mcmVlaW5nID0gdHJ1ZTtcbiYjNDM7XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4mIzQzO1x0XHRyZXR1cm4gLTE7XG4mIzQzO1x0fVxuJiM0MztcdF9faWdldChpbm9kZSk7XG4mIzQzO1x0c3Bpbl91bmxvY2soXHUwMDI2aW5vZGUtXHUwMDNlaV9sb2NrKTtcbiYjNDM7XHRyZXR1cm4gMTtcbiYjNDM7fVxuJiM0MztcbiBzdHJ1Y3QgaW5vZGUgKl9fZXh0NF9pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vLFxuIFx0XHRcdCAgZXh0NF9pZ2V0X2ZsYWdzIGZsYWdzLCBjb25zdCBjaGFyICpmdW5jdGlvbixcbiBcdFx0XHQgIHVuc2lnbmVkIGludCBsaW5lKVxuQEAgLTUyOTgsOSAmIzQzOzUzMTYsMjYgQEAgc3RydWN0IGlub2RlICpfX2V4dDRfaWdldChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1bnNpZ25lZCBsb25nIGlubyxcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVGU0NPUlJVUFRFRCk7XG4gXHR9XG4gXG4tXHRpbm9kZSA9IGlnZXRfbG9ja2VkKHNiLCBpbm8pO1xuLVx0aWYgKCFpbm9kZSlcbi1cdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4mIzQzO1x0aWYgKGZsYWdzIFx1MDAyNiBFWFQ0X0lHRVRfTk9XQUlUKSB7XG4mIzQzO1x0XHRib29sIGlzX2ZyZWVpbmcgPSBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0XHRpbm9kZSA9IGZpbmRfaW5vZGVfbm93YWl0KHNiLCBpbm8sIGV4dDRfaWdldF9tYXRjaCwgXHUwMDI2aXNfZnJlZWluZyk7XG4mIzQzO1x0XHRpZiAoaXNfZnJlZWluZylcbiYjNDM7XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVTVEFMRSk7XG4mIzQzO1x0XHRpZiAoIWlub2RlKSB7XG4mIzQzO1x0XHRcdGlub2RlID0gaWdldF9sb2NrZWQoc2IsIGlubyk7XG4mIzQzO1x0XHRcdGlmICghaW5vZGUpXG4mIzQzO1x0XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRpZiAoaW5vZGVfc3RhdGVfcmVhZF9vbmNlKGlub2RlKSBcdTAwMjYgSV9ORVcpXG4mIzQzO1x0XHRcdFx0d2FpdF9vbl9uZXdfaW5vZGUoaW5vZGUpO1xuJiM0MztcdFx0fVxuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRpbm9kZSA9IGlnZXRfbG9ja2VkKHNiLCBpbm8pO1xuJiM0MztcdFx0aWYgKCFpbm9kZSlcbiYjNDM7XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGlmICghKGlub2RlX3N0YXRlX3JlYWRfb25jZShpbm9kZSkgXHUwMDI2IElfTkVXKSkge1xuIFx0XHRyZXQgPSBjaGVja19pZ290X2lub2RlKGlub2RlLCBmbGFncywgZnVuY3Rpb24sIGxpbmUpO1xuIFx0XHRpZiAocmV0KSB7XG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC94YXR0ci5jIGIvZnMvZXh0NC94YXR0ci5jXG5pbmRleCA5ODJhMWY4MzFlMjI4Mi4uMjFiNTY3MGQ4NTAzY2EgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L3hhdHRyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQveGF0dHIuY1xuQEAgLTE1NTAsNyAmIzQzOzE1NTAsNyBAQCBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmQoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgdm9pZCAqdmFsdWUsXG4gXG4gXHR3aGlsZSAoY2UpIHtcbiBcdFx0ZWFfaW5vZGUgPSBleHQ0X2lnZXQoaW5vZGUtXHUwMDNlaV9zYiwgY2UtXHUwMDNlZV92YWx1ZSxcbi1cdFx0XHRcdCAgICAgRVhUNF9JR0VUX0VBX0lOT0RFKTtcbiYjNDM7XHRcdFx0XHQgICAgIEVYVDRfSUdFVF9FQV9JTk9ERSB8IEVYVDRfSUdFVF9OT1dBSVQpO1xuIFx0XHRpZiAoSVNfRVJSKGVhX2lub2RlKSlcbiBcdFx0XHRnb3RvIG5leHRfZW50cnk7XG4gXHRcdGV4dDRfeGF0dHJfaW5vZGVfc2V0X2NsYXNzKGVhX2lub2RlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNDozNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kJiMzNDssCiAgICAmIzM0O19fZXh0NF9pZ2V0JiMzNDssCiAgICAmIzM0O2V4dDRfaWdldF9tYXRjaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXh0NCBpbm9kZSBsb29rdXAgbG9naWMgdG8gc3VwcG9ydCBhIG5vbi1ibG9ja2luZyBtb2RlIChFWFQ0X0lHRVRfTk9XQUlUKSB1c2luZyBmaW5kX2lub2RlX25vd2FpdCBhbmQgYSBjdXN0b20gbWF0Y2ggZnVuY3Rpb24uIFRoaXMgaXMgYXBwbGllZCB0byBleHRlbmRlZCBhdHRyaWJ1dGUgKEVBKSBpbm9kZSBsb29rdXBzIHRvIHByZXZlbnQgYmxvY2tpbmcgb24gZnJlZWluZyBpbm9kZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZXh0NCBmaWxlc3lzdGVtIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjMyNGQ3NmEwYWFlNmY2ZmRjMmE1MjE5NWVkMjI3NTMwZjgzMGE5NgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVuIDI1IDA0OjM0OjQwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHQ0LmggYi9mcy9leHQ0L2V4dDQuaAppbmRleCBiMzdjMTM2ZWEzYWIzMy4uYzc2ZGQwYmRkM2Q4NjAgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvZXh0NC5oCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvZXh0NC5oCkBAIC0zMTQ0LDcgJiM0MzszMTQ0LDggQEAgdHlwZWRlZiBlbnVtIHsKIAlFWFQ0X0lHRVRfU1BFQ0lBTCA9CTB4MDAwMSwgLyogT0sgdG8gaWdldCBhIHN5c3RlbSBpbm9kZSAqLwogCUVYVDRfSUdFVF9IQU5ETEUgPSAJMHgwMDAyLAkvKiBJbm9kZSAjIGlzIGZyb20gYSBoYW5kbGUgKi8KIAlFWFQ0X0lHRVRfQkFEID0JCTB4MDAwNCwgLyogQWxsb3cgdG8gaWdldCBhIGJhZCBpbm9kZSAqLwotCUVYVDRfSUdFVF9FQV9JTk9ERSA9CTB4MDAwOAkvKiBJbm9kZSBzaG91bGQgY29udGFpbiBhbiBFQSB2YWx1ZSAqLwomIzQzOwlFWFQ0X0lHRVRfRUFfSU5PREUgPQkweDAwMDgsCS8qIElub2RlIHNob3VsZCBjb250YWluIGFuIEVBIHZhbHVlICovCiYjNDM7CUVYVDRfSUdFVF9OT1dBSVQgPQkweDAwMTAJLyogTm9uLWJsb2NraW5nIGxvb2t1cCAoc2tpcCBpZiBmcmVlaW5nKSAqLwogfSBleHQ0X2lnZXRfZmxhZ3M7CiAKIGV4dGVybiBzdHJ1Y3QgaW5vZGUgKl9fZXh0NF9pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vLApkaWZmIC0tZ2l0IGEvZnMvZXh0NC9pbm9kZS5jIGIvZnMvZXh0NC9pbm9kZS5jCmluZGV4IGNlOTk4MDdjNWY1YjJjLi40MmE3OThmMzMzZDMwYSAxMDA2NDQKLS0tIGEvZnMvZXh0NC9pbm9kZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvaW5vZGUuYwpAQCAtNTI3MCw2ICYjNDM7NTI3MCwyNCBAQCB2b2lkIGV4dDRfc2V0X2lub2RlX21hcHBpbmdfb3JkZXIoc3RydWN0IGlub2RlICppbm9kZSkKIAltYXBwaW5nX3NldF9mb2xpb19vcmRlcl9yYW5nZShpbm9kZS0mZ3Q7aV9tYXBwaW5nLCBtaW5fb3JkZXIsIG1heF9vcmRlcik7CiB9CiAKJiM0MztzdGF0aWMgaW50IGV4dDRfaWdldF9tYXRjaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1NjQgaW5vLCB2b2lkICpkYXRhKQomIzQzO3sKJiM0MzsJYm9vbCAqaXNfZnJlZWluZyA9IGRhdGE7CiYjNDM7CiYjNDM7CWlmIChpbm9kZS0mZ3Q7aV9pbm8gIT0gaW5vKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CXNwaW5fbG9jaygmYW1wO2lub2RlLSZndDtpX2xvY2spOwomIzQzOwlpZiAoaW5vZGVfc3RhdGVfcmVhZChpbm9kZSkgJmFtcDsgKElfRlJFRUlORyB8IElfV0lMTF9GUkVFIHwgSV9DUkVBVElORykpIHsKJiM0MzsJCWlmIChpc19mcmVlaW5nKQomIzQzOwkJCSppc19mcmVlaW5nID0gdHJ1ZTsKJiM0MzsJCXNwaW5fdW5sb2NrKCZhbXA7aW5vZGUtJmd0O2lfbG9jayk7CiYjNDM7CQlyZXR1cm4gLTE7CiYjNDM7CX0KJiM0MzsJX19pZ2V0KGlub2RlKTsKJiM0MzsJc3Bpbl91bmxvY2soJmFtcDtpbm9kZS0mZ3Q7aV9sb2NrKTsKJiM0MzsJcmV0dXJuIDE7CiYjNDM7fQomIzQzOwogc3RydWN0IGlub2RlICpfX2V4dDRfaWdldChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1bnNpZ25lZCBsb25nIGlubywKIAkJCSAgZXh0NF9pZ2V0X2ZsYWdzIGZsYWdzLCBjb25zdCBjaGFyICpmdW5jdGlvbiwKIAkJCSAgdW5zaWduZWQgaW50IGxpbmUpCkBAIC01Mjk4LDkgJiM0Mzs1MzE2LDI2IEBAIHN0cnVjdCBpbm9kZSAqX19leHQ0X2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBpbm8sCiAJCXJldHVybiBFUlJfUFRSKC1FRlNDT1JSVVBURUQpOwogCX0KIAotCWlub2RlID0gaWdldF9sb2NrZWQoc2IsIGlubyk7Ci0JaWYgKCFpbm9kZSkKLQkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiYjNDM7CWlmIChmbGFncyAmYW1wOyBFWFQ0X0lHRVRfTk9XQUlUKSB7CiYjNDM7CQlib29sIGlzX2ZyZWVpbmcgPSBmYWxzZTsKJiM0MzsKJiM0MzsJCWlub2RlID0gZmluZF9pbm9kZV9ub3dhaXQoc2IsIGlubywgZXh0NF9pZ2V0X21hdGNoLCAmYW1wO2lzX2ZyZWVpbmcpOwomIzQzOwkJaWYgKGlzX2ZyZWVpbmcpCiYjNDM7CQkJcmV0dXJuIEVSUl9QVFIoLUVTVEFMRSk7CiYjNDM7CQlpZiAoIWlub2RlKSB7CiYjNDM7CQkJaW5vZGUgPSBpZ2V0X2xvY2tlZChzYiwgaW5vKTsKJiM0MzsJCQlpZiAoIWlub2RlKQomIzQzOwkJCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKJiM0MzsJCX0gZWxzZSB7CiYjNDM7CQkJaWYgKGlub2RlX3N0YXRlX3JlYWRfb25jZShpbm9kZSkgJmFtcDsgSV9ORVcpCiYjNDM7CQkJCXdhaXRfb25fbmV3X2lub2RlKGlub2RlKTsKJiM0MzsJCX0KJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWlub2RlID0gaWdldF9sb2NrZWQoc2IsIGlubyk7CiYjNDM7CQlpZiAoIWlub2RlKQomIzQzOwkJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwomIzQzOwl9CiYjNDM7CiAJaWYgKCEoaW5vZGVfc3RhdGVfcmVhZF9vbmNlKGlub2RlKSAmYW1wOyBJX05FVykpIHsKIAkJcmV0ID0gY2hlY2tfaWdvdF9pbm9kZShpbm9kZSwgZmxhZ3MsIGZ1bmN0aW9uLCBsaW5lKTsKIAkJaWYgKHJldCkgewpkaWZmIC0tZ2l0IGEvZnMvZXh0NC94YXR0ci5jIGIvZnMvZXh0NC94YXR0ci5jCmluZGV4IDk4MmExZjgzMWUyMjgyLi4yMWI1NjcwZDg1MDNjYSAxMDA2NDQKLS0tIGEvZnMvZXh0NC94YXR0ci5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQveGF0dHIuYwpAQCAtMTU1MCw3ICYjNDM7MTU1MCw3IEBAIGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICp2YWx1ZSwKIAogCXdoaWxlIChjZSkgewogCQllYV9pbm9kZSA9IGV4dDRfaWdldChpbm9kZS0mZ3Q7aV9zYiwgY2UtJmd0O2VfdmFsdWUsCi0JCQkJICAgICBFWFQ0X0lHRVRfRUFfSU5PREUpOwomIzQzOwkJCQkgICAgIEVYVDRfSUdFVF9FQV9JTk9ERSB8IEVYVDRfSUdFVF9OT1dBSVQpOwogCQlpZiAoSVNfRVJSKGVhX2lub2RlKSkKIAkJCWdvdG8gbmV4dF9lbnRyeTsKIAkJZXh0NF94YXR0cl9pbm9kZV9zZXRfY2xhc3MoZWFfaW5vZGUpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTE2CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgZXh0NCBJbm9kZSBGZXRjaGluZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIGV4dDQgZmlsZXN5c3RlbSBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGludGVyZXN0aW5nLiBJdCB0b3VjaGVzIHRocmVlIGtleSBmaWxlczogYGV4dDQuaGAsIGBpbm9kZS5jYCwgYW5kIGB4YXR0ci5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbnRyb2R1Y2luZyBhIG5ldyBmbGFnLCBgRVhUNF9JR0VUX05PV0FJVGAsIHdoaWNoIGlzIGFkZGVkIHRvIHRoZSBgZXh0NF9pZ2V0X2ZsYWdzYCBlbnVtLgoKTXkgaW1tZWRpYXRlIHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGlzIGZsYWcgaXMgZGVzaWduZWQgdG8gbW9kaWZ5IHRoZSBpbm9kZSBmZXRjaGluZyBiZWhhdmlvciB3aXRoaW4gZXh0NC4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggYWx0ZXJzIGBfX2V4dDRfaWdldGAgdG8gaGFuZGxlIHRoaXMgbmV3IGZsYWcuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgZ29pbmcgdG8gdXNlIGBmaW5kX2lub2RlX25vd2FpdGAgYW5kIGEgY3VzdG9tIG1hdGNoIGZ1bmN0aW9uLCBgZXh0NF9pZ2V0X21hdGNoYCwgZm9yIHRoZSBuZXcgZnVuY3Rpb25hbGl0eS4gRnVydGhlcm1vcmUsIGBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmRgIGlzIHVwZGF0ZWQgdG8gdXRpbGl6ZSBgRVhUNF9JR0VUX05PV0FJVGAgd2hlbiBmZXRjaGluZyBFeHRlbmRlZCBBdHRyaWJ1dGUgKEVBKSBpbm9kZXMuCgpFc3NlbnRpYWxseSwgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCBzZWVtcyB3ZSYjMzk7cmUgdHJ5aW5nIHRvIG9wdGltaXplIHRoZSBpbm9kZSBmZXRjaCBwYXRoLCBwYXJ0aWN1bGFybHkgZm9yIEVBIGlub2RlcywgYnkgYXZvaWRpbmcgYmxvY2tpbmcgd2hpbGUgaW5vZGVzIGFyZSBmcmVlZC4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIGJsb2NraW5nIGNhbiBoYXZlIG5vdGljZWFibGUgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zLgoKTGV0JiMzOTtzIHF1aWNrbHkgdmVyaWZ5IHRoZSBmdW5jdGlvbnMgaW1wYWN0ZWQ6IEkmIzM5O2xsIG5lZWQgdG8gZXhhbWluZSBgZXh0NF9pZ2V0X21hdGNoYCAod2hpY2ggaXMgbmV3KSwgYF9fZXh0NF9pZ2V0YCwgYW5kIGBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmRgIGluIGRldGFpbC4KCkJhc2VkIG9uIHRoaXMgdW5kZXJzdGFuZGluZywgSSB0aGluayB0aGlzIG1vZGlmaWNhdGlvbiBtZXJpdHMgZnV6emluZy4gVGhlcmVmb3JlLCBJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuIEkgbmVlZCB0byBzZXQgdGhlIGBGb2N1c1N5bWJvbHNgIHRvIGBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmRgLCBgX19leHQ0X2lnZXRgLCBhbmQgYGV4dDRfaWdldF9tYXRjaGAuIEkgYWxzbyBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcmVsZXZhbnQgY29uZmlncyBhcmUgZW5hYmxlZDogYEVYVDRfRlNgIGFuZCBgRVhUNF9GU19YQVRUUmAuIE5vdyBsZXQmIzM5O3MgY29uZmlybSB0aG9zZSBjb25maWdzIGFyZSBjb3JyZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA0OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBFWFQ0X0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvZXh0NC9LY29uZmlnOjI6Y29uZmlnIEVYVDRfRlNcbmZzL2V4dDQvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7VGhlIEV4dGVuZGVkIDQgKGV4dDQpIGZpbGVzeXN0ZW1cJiMzNDtcbi0tXG5mcy9leHQ0L0tjb25maWc9MzU9Y29uZmlnIEVYVDRfVVNFX0ZPUl9FWFQyXG4tLVxuZnMvZXh0NC9LY29uZmlnLTQ1LVxuZnMvZXh0NC9LY29uZmlnOjQ2OmNvbmZpZyBFWFQ0X0ZTX1BPU0lYX0FDTFxuZnMvZXh0NC9LY29uZmlnLTQ3LVx0Ym9vbCBcJiMzNDtFeHQ0IFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG4tLVxuZnMvZXh0NC9LY29uZmlnLTU1LVxuZnMvZXh0NC9LY29uZmlnOjU2OmNvbmZpZyBFWFQ0X0ZTX1NFQ1VSSVRZXG5mcy9leHQ0L0tjb25maWctNTctXHRib29sIFwmIzM0O0V4dDQgU2VjdXJpdHkgTGFiZWxzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDQ6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg2NgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZToKCioqQ2hlY2tpbmcgRVhUNCBYYXR0ciBDb21waWxhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgcXVpY2tseSBnZXQgdG8gdGhlIGNvcmUgb2YgdGhpcy4gSSBuZWVkIHRvIHZlcmlmeSBob3cgdGhlIGBFWFQ0X0ZTX1hBVFRSYCBmZWF0dXJlIGZsYWcgaXMgaGFuZGxlZCBpbiB0aGlzIGJ1aWxkLiBJcyBpdCBhIGRpc3RpbmN0IGVudGl0eSwgb3IgaXMgaXQgcGFydCBvZiB0aGUgYnJvYWRlciBgRVhUNF9GU2AgZGVmaW5pdGlvbj8gTXkgaW5zdGluY3RzIHRlbGwgbWUgdGhlIHhhdHRyIGZ1bmN0aW9ucyB3aWxsIGJlIGNvbXBpbGVkIGluIGEgY2VydGFpbiBtb2R1bGUuCgpJIHJlY2FsbCBzZWVpbmcgYGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZGDigJQgdGhhdCYjMzk7cyB0aGUgdGVsbHRhbGUgaW5kaWNhdG9yLCByZXNpZGluZyBzcGVjaWZpY2FsbHkgd2l0aGluIGBmcy9leHQ0L3hhdHRyLmNgLiBTbyBteSBmb2N1cyBzaGlmdHMgdG8gdGhlIGBmcy9leHQ0L01ha2VmaWxlYC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gbG9vayB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBwcm9jZXNzIGFuZCBob3cgdGhlIGluY2x1c2lvbiBvZiBgeGF0dHIuY2AgaXMgZ292ZXJuZWQuIEl0JiMzOTtzIHRoZSBNYWtlZmlsZSB0aGF0IHdpbGwgcmV2ZWFsIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBsb2dpYyBhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBFWFQ0X0ZTX1hBVFRSYCBhbmQgb3RoZXIgZmVhdHVyZSBmbGFncy4gSSBleHBlY3QgdG8gc2VlIGRlcGVuZGVuY2llcyBvciBkZWZpbmVzIHRoYXQgY2xhcmlmeSB0aGlzIHBvaW50IGltbWVkaWF0ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA0OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hhdHRyLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leHQ0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvTWFrZWZpbGU9OD1leHQ0LXlcdDo9IGJhbGxvYy5vIGJpdG1hcC5vIGJsb2NrX3ZhbGlkaXR5Lm8gZGlyLm8gZXh0NF9qYmQyLm8gZXh0ZW50cy5vIFxcXG4tLVxuZnMvZXh0NC9NYWtlZmlsZS0xMS1cdFx0bW1wLm8gbW92ZV9leHRlbnQubyBuYW1laS5vIHBhZ2UtaW8ubyByZWFkcGFnZS5vIHJlc2l6ZS5vIFxcXG5mcy9leHQ0L01ha2VmaWxlOjEyOlx0XHRzdXBlci5vIHN5bWxpbmsubyBzeXNmcy5vIHhhdHRyLm8geGF0dHJfaHVyZC5vIHhhdHRyX3RydXN0ZWQubyBcXFxuZnMvZXh0NC9NYWtlZmlsZS0xMy1cdFx0eGF0dHJfdXNlci5vIGZhc3RfY29tbWl0Lm8gb3JwaGFuLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzYwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBFWFQ0IEZpbGVzeXN0ZW0mIzM5O3MgWGF0dHIgQ29tcGlsYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBub3RpY2luZyB0aGF0IGB4YXR0ci5vYCBhbHdheXMgZ2V0cyBidWlsdCB3aGVuIGBFWFQ0X0ZTYCBpcyBhY3RpdmF0ZWQsIHdoaWNoIG1ha2VzIHNlbnNlIGluaXRpYWxseS4gQnV0LCBJIG5lZWQgdG8gZGlnIGEgbGl0dGxlIGRlZXBlci4gV2hhdCBhYm91dCB0aG9zZSBvdGhlciBjb25maWd1cmF0aW9ucywgeW91IGtub3csIGBFWFQ0X0ZTX1BPU0lYX0FDTGAgYW5kIGBFWFQ0X0ZTX1NFQ1VSSVRZYD8gVGhleSYjMzk7cmUgdmVyeSBsaWtlbHkgdG8gbGV2ZXJhZ2UgZXh0ZW5kZWQgYXR0cmlidXRlcywgc28gdGhhdCBtYWtlcyBtZSBxdWVzdGlvbiB3aGV0aGVyIHRoZSB4YXR0ciBjb21wb25lbnQgaXMgKnRydWx5KiBhbHdheXMgY29tcGlsZWQgb3IgaWYgaXQgaGFzIGRlcGVuZGVuY2llcy4KCkkmIzM5O2xsIGNsYXJpZnkgdGhpcyBieSBleGFtaW5pbmcgYGZzL2V4dDQveGF0dHIuY2AgYmVjYXVzZSwgSSBuZWVkIHRvIGtub3cgd2h5IGl0JiMzOTtzIGFsd2F5cyBpbmNsdWRlZC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZGAgYW5kIHNlZSBpZiB0aGF0IGhlbHBzIG1lIHBpZWNlIHRvZ2V0aGVyIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHdoYXQgdGhlIGV4YWN0IGNyaXRlcmlhIGZvciBjb21waWxhdGlvbiBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leHQ0L3hhdHRyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC94YXR0ci5jPTE1MjY9c3RhdGljIHN0cnVjdCBpbm9kZSAqXG5mcy9leHQ0L3hhdHRyLmM6MTUyNzpleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmQoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgdm9pZCAqdmFsdWUsXG5mcy9leHQ0L3hhdHRyLmMtMTUyOC1cdFx0XHQgICAgc2l6ZV90IHZhbHVlX2xlbiwgdTMyIGhhc2gpXG4tLVxuZnMvZXh0NC94YXR0ci5jPTE1Nzg9c3RhdGljIHN0cnVjdCBpbm9kZSAqZXh0NF94YXR0cl9pbm9kZV9sb29rdXBfY3JlYXRlKGhhbmRsZV90ICpoYW5kbGUsXG4tLVxuZnMvZXh0NC94YXR0ci5jLTE1OTAtXHRoYXNoID0gZXh0NF94YXR0cl9pbm9kZV9oYXNoKEVYVDRfU0IoaW5vZGUtXHUwMDNlaV9zYiksIHZhbHVlLCB2YWx1ZV9sZW4pO1xuZnMvZXh0NC94YXR0ci5jOjE1OTE6XHRlYV9pbm9kZSA9IGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZChpbm9kZSwgdmFsdWUsIHZhbHVlX2xlbiwgaGFzaCk7XG5mcy9leHQ0L3hhdHRyLmMtMTU5Mi1cdGlmIChlYV9pbm9kZSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA0OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MzgKCQkJCQkJCW91dHB1dDogMTQzCgkJCQkJCQl0aG91Z2h0czogNDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBFWFQ0IElub2RlIExvb2t1cCBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgYEVYVDRfRlNgIGNvbmZpZ3VyYXRpb24gaXMgY2xlYXJseSByZWxldmFudCBoZXJlLCB0aGF0JiMzOTtzIHRoZSBiYXNlLiBCdXQgbGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBzdXBwb3J0aW5nIGNvbmZpZ3Mgd2UgbmVlZCB0byBjb25zaWRlci4gUmlnaHQsIHRoZSBwYXRjaCBtb2RpZmllcyBgZnMvZXh0NC9pbm9kZS5jYCBhbmQgYGZzL2V4dDQveGF0dHIuY2Agd2hpY2ggY29uZmlybXMgdGhlIGluaXRpYWwgZm9jdXMuCgpMZXQmIzM5O3MgZm9jdXMgb24gdGhlIGtleSBzeW1ib2xzOiBgZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kYCwgYF9fZXh0NF9pZ2V0YCwgYW5kIGBleHQ0X2lnZXRfbWF0Y2hgLiBUaGV5IHdpbGwgbGlrZWx5IGJlIHRoZSBjcml0aWNhbCBhcmVhcy4KClRoZSBjb3JlIG9mIHRoaXMgY2hhbmdlIHNlZW1zIHRvIGJlIGludHJvZHVjaW5nIGEgbmV3IGZsYWcsIGBFWFQ0X0lHRVRfTk9XQUlUYCwgdG8gYGV4dDRfaWdldF9mbGFnc2AuICBFc3NlbnRpYWxseSwgdGhlIHBhdGNoIGFsdGVycyBgX19leHQ0X2lnZXRgIHRvIHVzZSBhIG5vbi1ibG9ja2luZyBpbm9kZSBsb29rdXAgdXNpbmcgYGZpbmRfaW5vZGVfbm93YWl0YCBhbmQgYSBzcGVjaWFsaXplZCBtYXRjaCBmdW5jdGlvbiwgYGV4dDRfaWdldF9tYXRjaGAuICBUaGlzIG5vbi1ibG9ja2luZyBiZWhhdmlvciBpcyBzcGVjaWZpY2FsbHkgaW1wbGVtZW50ZWQgd2l0aGluIGBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmRgLCB3aGljaCBpcyBkZXNpZ25lZCB0byBwcmV2ZW50IGJsb2NraW5nIHdoZW4gZnJlZWluZyBleHRlbmRlZCBhdHRyaWJ1dGUgKEVBKSBpbm9kZXMuIFRoYXQmIzM5O3MgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgaGVhcnQgb2YgdGhlIGV4dDQgaW5vZGUgbG9va3VwIGFuZCBleHRlbmRlZCBhdHRyaWJ1dGUgaGFuZGxpbmcuICBJdCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSwgd2hpY2ggbWVhbnMgaXQgc2hvdWxkIGJlIGEgdGFyZ2V0IGZvciBmdXp6aW5nLgoKSSYjMzk7bGwgcXVpY2tseSBjb25maXJtIHdoZXRoZXIgYGZpbmRfaW5vZGVfbm93YWl0YCBpcyBhIHN0YW5kYXJkIGtlcm5lbCBmdW5jdGlvbiBvciBpZiBpdCB3YXMgaW50cm9kdWNlZCBpbiBhbm90aGVyIHBhdGNoLiBJdCBhcHBlYXJzIHRvIGJlIHN0YW5kYXJkIG9yIGF0IGxlYXN0IGEgcmVjZW50IGFkZGl0aW9uLiBUaGlzIHJlaW5mb3JjZXMgdGhhdCB0aGUgcGF0Y2ggcmVwcmVzZW50cyBhIGxlZ2l0aW1hdGUgZnVuY3Rpb25hbCBlbmhhbmNlbWVudC4KCkFscmlnaHQsIGxldCYjMzk7cyBjb25zb2xpZGF0ZSB0aGUgZmluZGluZ3MuCgoqKldvcnRoRnV6emluZzogVHJ1ZSoqCgoqKkZvY3VzU3ltYm9sczoqKiBgZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kYCwgYF9fZXh0NF9pZ2V0YCwgYGV4dDRfaWdldF9tYXRjaGAKCioqRW5hYmxlQ29uZmlnczoqKiBgRVhUNF9GU2AKCioqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXh0NCBpbm9kZSBsb29rdXAgcHJvY2VzcyB0byBzdXBwb3J0IGEgbm9uLWJsb2NraW5nIGFwcHJvYWNoIChgRVhUNF9JR0VUX05PV0FJVGApIHVzaW5nIGBmaW5kX2lub2RlX25vd2FpdGAgYWxvbmcgd2l0aCBhIGN1c3RvbSBtYXRjaCBmdW5jdGlvbi4gVGhpcyBuZXcgYmVoYXZpb3IgaXMgc3BlY2lmaWNhbGx5IGFwcGxpZWQgdG8gZXh0ZW5kZWQgYXR0cmlidXRlIChFQSkgaW5vZGUgbG9va3VwcywgcHJldmVudGluZyBhbnkgYmxvY2tpbmcgb24gZnJlZWluZyB0aGVzZSBpbm9kZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiBpbiB0aGUgZXh0NCBmaWxlc3lzdGVtLCBhbmQgc2hvdWxkIGFic29sdXRlbHkgYmUgZnV6emVkIGFzIGEgcmVzdWx0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZCYjMzQ7LAogICAgJiMzNDtfX2V4dDRfaWdldCYjMzQ7LAogICAgJiMzNDtleHQ0X2lnZXRfbWF0Y2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGV4dDQgaW5vZGUgbG9va3VwIGxvZ2ljIHRvIHN1cHBvcnQgYSBub24tYmxvY2tpbmcgbW9kZSAoRVhUNF9JR0VUX05PV0FJVCkgdXNpbmcgZmluZF9pbm9kZV9ub3dhaXQgYW5kIGEgY3VzdG9tIG1hdGNoIGZ1bmN0aW9uLiBUaGlzIGlzIGFwcGxpZWQgdG8gZXh0ZW5kZWQgYXR0cmlidXRlIChFQSkgaW5vZGUgbG9va3VwcyB0byBwcmV2ZW50IGJsb2NraW5nIG9uIGZyZWVpbmcgaW5vZGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGV4dDQgZmlsZXN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmQmIzM0OywKICAgICYjMzQ7X19leHQ0X2lnZXQmIzM0OywKICAgICYjMzQ7ZXh0NF9pZ2V0X21hdGNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBleHQ0IGlub2RlIGxvb2t1cCBsb2dpYyB0byBzdXBwb3J0IGEgbm9uLWJsb2NraW5nIG1vZGUgKEVYVDRfSUdFVF9OT1dBSVQpIHVzaW5nIGZpbmRfaW5vZGVfbm93YWl0IGFuZCBhIGN1c3RvbSBtYXRjaCBmdW5jdGlvbi4gVGhpcyBpcyBhcHBsaWVkIHRvIGV4dGVuZGVkIGF0dHJpYnV0ZSAoRUEpIGlub2RlIGxvb2t1cHMgdG8gcHJldmVudCBibG9ja2luZyBvbiBmcmVlaW5nIGlub2Rlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDQ6MzQ6NDIuMDMxMDU3NTMzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA3NDQyNjgzNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZFwiLFxuICAgIFwiX19leHQ0X2lnZXRcIixcbiAgICBcImV4dDRfaWdldF9tYXRjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBleHQ0IGlub2RlIGxvb2t1cCBsb2dpYyB0byBzdXBwb3J0IGEgbm9uLWJsb2NraW5nIG1vZGUgKEVYVDRfSUdFVF9OT1dBSVQpIHVzaW5nIGZpbmRfaW5vZGVfbm93YWl0IGFuZCBhIGN1c3RvbSBtYXRjaCBmdW5jdGlvbi4gVGhpcyBpcyBhcHBsaWVkIHRvIGV4dGVuZGVkIGF0dHJpYnV0ZSAoRUEpIGlub2RlIGxvb2t1cHMgdG8gcHJldmVudCBibG9ja2luZyBvbiBmcmVlaW5nIGlub2Rlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNDozNDo0Mi4wMzEwNjQyNDNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMzk5NDU1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDIzMjRkNzZhMGFhZTZmNmZkYzJhNTIxOTVlZDIyNzUzMGY4MzBhOTZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdW4gMjUgMDQ6MzQ6NDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHQ0LmggYi9mcy9leHQ0L2V4dDQuaFxcbmluZGV4IGIzN2MxMzZlYTNhYjMzLi5jNzZkZDBiZGQzZDg2MCAxMDA2NDRcXG4tLS0gYS9mcy9leHQ0L2V4dDQuaFxcbisrKyBiL2ZzL2V4dDQvZXh0NC5oXFxuQEAgLTMxNDQsNyArMzE0NCw4IEBAIHR5cGVkZWYgZW51bSB7XFxuIFxcdEVYVDRfSUdFVF9TUEVDSUFMID1cXHQweDAwMDEsIC8qIE9LIHRvIGlnZXQgYSBzeXN0ZW0gaW5vZGUgKi9cXG4gXFx0RVhUNF9JR0VUX0hBTkRMRSA9IFxcdDB4MDAwMixcXHQvKiBJbm9kZSAjIGlzIGZyb20gYSBoYW5kbGUgKi9cXG4gXFx0RVhUNF9JR0VUX0JBRCA9XFx0XFx0MHgwMDA0LCAvKiBBbGxvdyB0byBpZ2V0IGEgYmFkIGlub2RlICovXFxuLVxcdEVYVDRfSUdFVF9FQV9JTk9ERSA9XFx0MHgwMDA4XFx0LyogSW5vZGUgc2hvdWxkIGNvbnRhaW4gYW4gRUEgdmFsdWUgKi9cXG4rXFx0RVhUNF9JR0VUX0VBX0lOT0RFID1cXHQweDAwMDgsXFx0LyogSW5vZGUgc2hvdWxkIGNvbnRhaW4gYW4gRUEgdmFsdWUgKi9cXG4rXFx0RVhUNF9JR0VUX05PV0FJVCA9XFx0MHgwMDEwXFx0LyogTm9uLWJsb2NraW5nIGxvb2t1cCAoc2tpcCBpZiBmcmVlaW5nKSAqL1xcbiB9IGV4dDRfaWdldF9mbGFncztcXG4gXFxuIGV4dGVybiBzdHJ1Y3QgaW5vZGUgKl9fZXh0NF9pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vLFxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2lub2RlLmMgYi9mcy9leHQ0L2lub2RlLmNcXG5pbmRleCBjZTk5ODA3YzVmNWIyYy4uNDJhNzk4ZjMzM2QzMGEgMTAwNjQ0XFxuLS0tIGEvZnMvZXh0NC9pbm9kZS5jXFxuKysrIGIvZnMvZXh0NC9pbm9kZS5jXFxuQEAgLTUyNzAsNiArNTI3MCwyNCBAQCB2b2lkIGV4dDRfc2V0X2lub2RlX21hcHBpbmdfb3JkZXIoc3RydWN0IGlub2RlICppbm9kZSlcXG4gXFx0bWFwcGluZ19zZXRfZm9saW9fb3JkZXJfcmFuZ2UoaW5vZGUtXFx1MDAzZWlfbWFwcGluZywgbWluX29yZGVyLCBtYXhfb3JkZXIpO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IGV4dDRfaWdldF9tYXRjaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1NjQgaW5vLCB2b2lkICpkYXRhKVxcbit7XFxuK1xcdGJvb2wgKmlzX2ZyZWVpbmcgPSBkYXRhO1xcbitcXG4rXFx0aWYgKGlub2RlLVxcdTAwM2VpX2lubyAhPSBpbm8pXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHRzcGluX2xvY2soXFx1MDAyNmlub2RlLVxcdTAwM2VpX2xvY2spO1xcbitcXHRpZiAoaW5vZGVfc3RhdGVfcmVhZChpbm9kZSkgXFx1MDAyNiAoSV9GUkVFSU5HIHwgSV9XSUxMX0ZSRUUgfCBJX0NSRUFUSU5HKSkge1xcbitcXHRcXHRpZiAoaXNfZnJlZWluZylcXG4rXFx0XFx0XFx0KmlzX2ZyZWVpbmcgPSB0cnVlO1xcbitcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2aW5vZGUtXFx1MDAzZWlfbG9jayk7XFxuK1xcdFxcdHJldHVybiAtMTtcXG4rXFx0fVxcbitcXHRfX2lnZXQoaW5vZGUpO1xcbitcXHRzcGluX3VubG9jayhcXHUwMDI2aW5vZGUtXFx1MDAzZWlfbG9jayk7XFxuK1xcdHJldHVybiAxO1xcbit9XFxuK1xcbiBzdHJ1Y3QgaW5vZGUgKl9fZXh0NF9pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vLFxcbiBcXHRcXHRcXHQgIGV4dDRfaWdldF9mbGFncyBmbGFncywgY29uc3QgY2hhciAqZnVuY3Rpb24sXFxuIFxcdFxcdFxcdCAgdW5zaWduZWQgaW50IGxpbmUpXFxuQEAgLTUyOTgsOSArNTMxNiwyNiBAQCBzdHJ1Y3QgaW5vZGUgKl9fZXh0NF9pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vLFxcbiBcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUZTQ09SUlVQVEVEKTtcXG4gXFx0fVxcbiBcXG4tXFx0aW5vZGUgPSBpZ2V0X2xvY2tlZChzYiwgaW5vKTtcXG4tXFx0aWYgKCFpbm9kZSlcXG4tXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxuK1xcdGlmIChmbGFncyBcXHUwMDI2IEVYVDRfSUdFVF9OT1dBSVQpIHtcXG4rXFx0XFx0Ym9vbCBpc19mcmVlaW5nID0gZmFsc2U7XFxuK1xcbitcXHRcXHRpbm9kZSA9IGZpbmRfaW5vZGVfbm93YWl0KHNiLCBpbm8sIGV4dDRfaWdldF9tYXRjaCwgXFx1MDAyNmlzX2ZyZWVpbmcpO1xcbitcXHRcXHRpZiAoaXNfZnJlZWluZylcXG4rXFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVTVEFMRSk7XFxuK1xcdFxcdGlmICghaW5vZGUpIHtcXG4rXFx0XFx0XFx0aW5vZGUgPSBpZ2V0X2xvY2tlZChzYiwgaW5vKTtcXG4rXFx0XFx0XFx0aWYgKCFpbm9kZSlcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdGlmIChpbm9kZV9zdGF0ZV9yZWFkX29uY2UoaW5vZGUpIFxcdTAwMjYgSV9ORVcpXFxuK1xcdFxcdFxcdFxcdHdhaXRfb25fbmV3X2lub2RlKGlub2RlKTtcXG4rXFx0XFx0fVxcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRpbm9kZSA9IGlnZXRfbG9ja2VkKHNiLCBpbm8pO1xcbitcXHRcXHRpZiAoIWlub2RlKVxcbitcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcXG4rXFx0fVxcbitcXG4gXFx0aWYgKCEoaW5vZGVfc3RhdGVfcmVhZF9vbmNlKGlub2RlKSBcXHUwMDI2IElfTkVXKSkge1xcbiBcXHRcXHRyZXQgPSBjaGVja19pZ290X2lub2RlKGlub2RlLCBmbGFncywgZnVuY3Rpb24sIGxpbmUpO1xcbiBcXHRcXHRpZiAocmV0KSB7XFxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQveGF0dHIuYyBiL2ZzL2V4dDQveGF0dHIuY1xcbmluZGV4IDk4MmExZjgzMWUyMjgyLi4yMWI1NjcwZDg1MDNjYSAxMDA2NDRcXG4tLS0gYS9mcy9leHQ0L3hhdHRyLmNcXG4rKysgYi9mcy9leHQ0L3hhdHRyLmNcXG5AQCAtMTU1MCw3ICsxNTUwLDcgQEAgZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKnZhbHVlLFxcbiBcXG4gXFx0d2hpbGUgKGNlKSB7XFxuIFxcdFxcdGVhX2lub2RlID0gZXh0NF9pZ2V0KGlub2RlLVxcdTAwM2VpX3NiLCBjZS1cXHUwMDNlZV92YWx1ZSxcXG4tXFx0XFx0XFx0XFx0ICAgICBFWFQ0X0lHRVRfRUFfSU5PREUpO1xcbitcXHRcXHRcXHRcXHQgICAgIEVYVDRfSUdFVF9FQV9JTk9ERSB8IEVYVDRfSUdFVF9OT1dBSVQpO1xcbiBcXHRcXHRpZiAoSVNfRVJSKGVhX2lub2RlKSlcXG4gXFx0XFx0XFx0Z290byBuZXh0X2VudHJ5O1xcbiBcXHRcXHRleHQ0X3hhdHRyX2lub2RlX3NldF9jbGFzcyhlYV9pbm9kZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA0OjM0OjQyLjU1NjAyNTQ3M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjAyMTkyODYxNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZFwiLFxuICAgIFwiX19leHQ0X2lnZXRcIixcbiAgICBcImV4dDRfaWdldF9tYXRjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBleHQ0IGlub2RlIGxvb2t1cCBsb2dpYyB0byBzdXBwb3J0IGEgbm9uLWJsb2NraW5nIG1vZGUgKEVYVDRfSUdFVF9OT1dBSVQpIHVzaW5nIGZpbmRfaW5vZGVfbm93YWl0IGFuZCBhIGN1c3RvbSBtYXRjaCBmdW5jdGlvbi4gVGhpcyBpcyBhcHBsaWVkIHRvIGV4dGVuZGVkIGF0dHJpYnV0ZSAoRUEpIGlub2RlIGxvb2t1cHMgdG8gcHJldmVudCBibG9ja2luZyBvbiBmcmVlaW5nIGlub2Rlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDIzMjRkNzZhMGFhZTZmNmZkYzJhNTIxOTVlZDIyNzUzMGY4MzBhOTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1biAyNSAwNDozNDo0MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvZXh0NC5oIGIvZnMvZXh0NC9leHQ0LmhcbmluZGV4IGIzN2MxMzZlYTNhYjMzLi5jNzZkZDBiZGQzZDg2MCAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQvZXh0NC5oXG4rKysgYi9mcy9leHQ0L2V4dDQuaFxuQEAgLTMxNDQsNyArMzE0NCw4IEBAIHR5cGVkZWYgZW51bSB7XG4gXHRFWFQ0X0lHRVRfU1BFQ0lBTCA9XHQweDAwMDEsIC8qIE9LIHRvIGlnZXQgYSBzeXN0ZW0gaW5vZGUgKi9cbiBcdEVYVDRfSUdFVF9IQU5ETEUgPSBcdDB4MDAwMixcdC8qIElub2RlICMgaXMgZnJvbSBhIGhhbmRsZSAqL1xuIFx0RVhUNF9JR0VUX0JBRCA9XHRcdDB4MDAwNCwgLyogQWxsb3cgdG8gaWdldCBhIGJhZCBpbm9kZSAqL1xuLVx0RVhUNF9JR0VUX0VBX0lOT0RFID1cdDB4MDAwOFx0LyogSW5vZGUgc2hvdWxkIGNvbnRhaW4gYW4gRUEgdmFsdWUgKi9cbitcdEVYVDRfSUdFVF9FQV9JTk9ERSA9XHQweDAwMDgsXHQvKiBJbm9kZSBzaG91bGQgY29udGFpbiBhbiBFQSB2YWx1ZSAqL1xuK1x0RVhUNF9JR0VUX05PV0FJVCA9XHQweDAwMTBcdC8qIE5vbi1ibG9ja2luZyBsb29rdXAgKHNraXAgaWYgZnJlZWluZykgKi9cbiB9IGV4dDRfaWdldF9mbGFncztcbiBcbiBleHRlcm4gc3RydWN0IGlub2RlICpfX2V4dDRfaWdldChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1bnNpZ25lZCBsb25nIGlubyxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2lub2RlLmMgYi9mcy9leHQ0L2lub2RlLmNcbmluZGV4IGNlOTk4MDdjNWY1YjJjLi40MmE3OThmMzMzZDMwYSAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQvaW5vZGUuY1xuKysrIGIvZnMvZXh0NC9pbm9kZS5jXG5AQCAtNTI3MCw2ICs1MjcwLDI0IEBAIHZvaWQgZXh0NF9zZXRfaW5vZGVfbWFwcGluZ19vcmRlcihzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuIFx0bWFwcGluZ19zZXRfZm9saW9fb3JkZXJfcmFuZ2UoaW5vZGUtXHUwMDNlaV9tYXBwaW5nLCBtaW5fb3JkZXIsIG1heF9vcmRlcik7XG4gfVxuIFxuK3N0YXRpYyBpbnQgZXh0NF9pZ2V0X21hdGNoKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHU2NCBpbm8sIHZvaWQgKmRhdGEpXG4re1xuK1x0Ym9vbCAqaXNfZnJlZWluZyA9IGRhdGE7XG4rXG4rXHRpZiAoaW5vZGUtXHUwMDNlaV9pbm8gIT0gaW5vKVxuK1x0XHRyZXR1cm4gMDtcbitcdHNwaW5fbG9jayhcdTAwMjZpbm9kZS1cdTAwM2VpX2xvY2spO1xuK1x0aWYgKGlub2RlX3N0YXRlX3JlYWQoaW5vZGUpIFx1MDAyNiAoSV9GUkVFSU5HIHwgSV9XSUxMX0ZSRUUgfCBJX0NSRUFUSU5HKSkge1xuK1x0XHRpZiAoaXNfZnJlZWluZylcbitcdFx0XHQqaXNfZnJlZWluZyA9IHRydWU7XG4rXHRcdHNwaW5fdW5sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4rXHRcdHJldHVybiAtMTtcbitcdH1cbitcdF9faWdldChpbm9kZSk7XG4rXHRzcGluX3VubG9jayhcdTAwMjZpbm9kZS1cdTAwM2VpX2xvY2spO1xuK1x0cmV0dXJuIDE7XG4rfVxuK1xuIHN0cnVjdCBpbm9kZSAqX19leHQ0X2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBpbm8sXG4gXHRcdFx0ICBleHQ0X2lnZXRfZmxhZ3MgZmxhZ3MsIGNvbnN0IGNoYXIgKmZ1bmN0aW9uLFxuIFx0XHRcdCAgdW5zaWduZWQgaW50IGxpbmUpXG5AQCAtNTI5OCw5ICs1MzE2LDI2IEBAIHN0cnVjdCBpbm9kZSAqX19leHQ0X2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBpbm8sXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FRlNDT1JSVVBURUQpO1xuIFx0fVxuIFxuLVx0aW5vZGUgPSBpZ2V0X2xvY2tlZChzYiwgaW5vKTtcbi1cdGlmICghaW5vZGUpXG4tXHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuK1x0aWYgKGZsYWdzIFx1MDAyNiBFWFQ0X0lHRVRfTk9XQUlUKSB7XG4rXHRcdGJvb2wgaXNfZnJlZWluZyA9IGZhbHNlO1xuK1xuK1x0XHRpbm9kZSA9IGZpbmRfaW5vZGVfbm93YWl0KHNiLCBpbm8sIGV4dDRfaWdldF9tYXRjaCwgXHUwMDI2aXNfZnJlZWluZyk7XG4rXHRcdGlmIChpc19mcmVlaW5nKVxuK1x0XHRcdHJldHVybiBFUlJfUFRSKC1FU1RBTEUpO1xuK1x0XHRpZiAoIWlub2RlKSB7XG4rXHRcdFx0aW5vZGUgPSBpZ2V0X2xvY2tlZChzYiwgaW5vKTtcbitcdFx0XHRpZiAoIWlub2RlKVxuK1x0XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0aWYgKGlub2RlX3N0YXRlX3JlYWRfb25jZShpbm9kZSkgXHUwMDI2IElfTkVXKVxuK1x0XHRcdFx0d2FpdF9vbl9uZXdfaW5vZGUoaW5vZGUpO1xuK1x0XHR9XG4rXHR9IGVsc2Uge1xuK1x0XHRpbm9kZSA9IGlnZXRfbG9ja2VkKHNiLCBpbm8pO1xuK1x0XHRpZiAoIWlub2RlKVxuK1x0XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuK1x0fVxuK1xuIFx0aWYgKCEoaW5vZGVfc3RhdGVfcmVhZF9vbmNlKGlub2RlKSBcdTAwMjYgSV9ORVcpKSB7XG4gXHRcdHJldCA9IGNoZWNrX2lnb3RfaW5vZGUoaW5vZGUsIGZsYWdzLCBmdW5jdGlvbiwgbGluZSk7XG4gXHRcdGlmIChyZXQpIHtcbmRpZmYgLS1naXQgYS9mcy9leHQ0L3hhdHRyLmMgYi9mcy9leHQ0L3hhdHRyLmNcbmluZGV4IDk4MmExZjgzMWUyMjgyLi4yMWI1NjcwZDg1MDNjYSAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQveGF0dHIuY1xuKysrIGIvZnMvZXh0NC94YXR0ci5jXG5AQCAtMTU1MCw3ICsxNTUwLDcgQEAgZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKnZhbHVlLFxuIFxuIFx0d2hpbGUgKGNlKSB7XG4gXHRcdGVhX2lub2RlID0gZXh0NF9pZ2V0KGlub2RlLVx1MDAzZWlfc2IsIGNlLVx1MDAzZWVfdmFsdWUsXG4tXHRcdFx0XHQgICAgIEVYVDRfSUdFVF9FQV9JTk9ERSk7XG4rXHRcdFx0XHQgICAgIEVYVDRfSUdFVF9FQV9JTk9ERSB8IEVYVDRfSUdFVF9OT1dBSVQpO1xuIFx0XHRpZiAoSVNfRVJSKGVhX2lub2RlKSlcbiBcdFx0XHRnb3RvIG5leHRfZW50cnk7XG4gXHRcdGV4dDRfeGF0dHJfaW5vZGVfc2V0X2NsYXNzKGVhX2lub2RlKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA0OjM0OjQyLjU1NjAyODAyM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NzgzMDc5NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBleHQ0IElub2RlIEZldGNoaW5nIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIGV4dDQgZmlsZXN5c3RlbSBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGludGVyZXN0aW5nLiBJdCB0b3VjaGVzIHRocmVlIGtleSBmaWxlczogYGV4dDQuaGAsIGBpbm9kZS5jYCwgYW5kIGB4YXR0ci5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbnRyb2R1Y2luZyBhIG5ldyBmbGFnLCBgRVhUNF9JR0VUX05PV0FJVGAsIHdoaWNoIGlzIGFkZGVkIHRvIHRoZSBgZXh0NF9pZ2V0X2ZsYWdzYCBlbnVtLlxuXG5NeSBpbW1lZGlhdGUgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoaXMgZmxhZyBpcyBkZXNpZ25lZCB0byBtb2RpZnkgdGhlIGlub2RlIGZldGNoaW5nIGJlaGF2aW9yIHdpdGhpbiBleHQ0LiBTcGVjaWZpY2FsbHksIHRoZSBwYXRjaCBhbHRlcnMgYF9fZXh0NF9pZ2V0YCB0byBoYW5kbGUgdGhpcyBuZXcgZmxhZy4gSXQgbG9va3MgbGlrZSBpdCdzIGdvaW5nIHRvIHVzZSBgZmluZF9pbm9kZV9ub3dhaXRgIGFuZCBhIGN1c3RvbSBtYXRjaCBmdW5jdGlvbiwgYGV4dDRfaWdldF9tYXRjaGAsIGZvciB0aGUgbmV3IGZ1bmN0aW9uYWxpdHkuIEZ1cnRoZXJtb3JlLCBgZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kYCBpcyB1cGRhdGVkIHRvIHV0aWxpemUgYEVYVDRfSUdFVF9OT1dBSVRgIHdoZW4gZmV0Y2hpbmcgRXh0ZW5kZWQgQXR0cmlidXRlIChFQSkgaW5vZGVzLlxuXG5Fc3NlbnRpYWxseSwgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCBzZWVtcyB3ZSdyZSB0cnlpbmcgdG8gb3B0aW1pemUgdGhlIGlub2RlIGZldGNoIHBhdGgsIHBhcnRpY3VsYXJseSBmb3IgRUEgaW5vZGVzLCBieSBhdm9pZGluZyBibG9ja2luZyB3aGlsZSBpbm9kZXMgYXJlIGZyZWVkLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgYmxvY2tpbmcgY2FuIGhhdmUgbm90aWNlYWJsZSBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMuXG5cbkxldCdzIHF1aWNrbHkgdmVyaWZ5IHRoZSBmdW5jdGlvbnMgaW1wYWN0ZWQ6IEknbGwgbmVlZCB0byBleGFtaW5lIGBleHQ0X2lnZXRfbWF0Y2hgICh3aGljaCBpcyBuZXcpLCBgX19leHQ0X2lnZXRgLCBhbmQgYGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZGAgaW4gZGV0YWlsLlxuXG5CYXNlZCBvbiB0aGlzIHVuZGVyc3RhbmRpbmcsIEkgdGhpbmsgdGhpcyBtb2RpZmljYXRpb24gbWVyaXRzIGZ1enppbmcuIFRoZXJlZm9yZSwgSSB3aWxsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLiBJIG5lZWQgdG8gc2V0IHRoZSBgRm9jdXNTeW1ib2xzYCB0byBgZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kYCwgYF9fZXh0NF9pZ2V0YCwgYW5kIGBleHQ0X2lnZXRfbWF0Y2hgLiBJIGFsc28gbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJlbGV2YW50IGNvbmZpZ3MgYXJlIGVuYWJsZWQ6IGBFWFQ0X0ZTYCBhbmQgYEVYVDRfRlNfWEFUVFJgLiBOb3cgbGV0J3MgY29uZmlybSB0aG9zZSBjb25maWdzIGFyZSBjb3JyZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTE2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDQ6MzQ6NDguMjM0MzM4NTIyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2Mzg3MzU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBFWFQ0X0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leHQ0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9leHQ0L0tjb25maWc6Mjpjb25maWcgRVhUNF9GU1xcbmZzL2V4dDQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJUaGUgRXh0ZW5kZWQgNCAoZXh0NCkgZmlsZXN5c3RlbVxcXCJcXG4tLVxcbmZzL2V4dDQvS2NvbmZpZz0zNT1jb25maWcgRVhUNF9VU0VfRk9SX0VYVDJcXG4tLVxcbmZzL2V4dDQvS2NvbmZpZy00NS1cXG5mcy9leHQ0L0tjb25maWc6NDY6Y29uZmlnIEVYVDRfRlNfUE9TSVhfQUNMXFxuZnMvZXh0NC9LY29uZmlnLTQ3LVxcdGJvb2wgXFxcIkV4dDQgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuLS1cXG5mcy9leHQ0L0tjb25maWctNTUtXFxuZnMvZXh0NC9LY29uZmlnOjU2OmNvbmZpZyBFWFQ0X0ZTX1NFQ1VSSVRZXFxuZnMvZXh0NC9LY29uZmlnLTU3LVxcdGJvb2wgXFxcIkV4dDQgU2VjdXJpdHkgTGFiZWxzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNDozNDo0OC4zMjA3MzE2N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNDQzNjE2NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBjb25zaWRlcmluZyBteSBleHBlcnRpc2U6XG5cbioqQ2hlY2tpbmcgRVhUNCBYYXR0ciBDb21waWxhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIHF1aWNrbHkgZ2V0IHRvIHRoZSBjb3JlIG9mIHRoaXMuIEkgbmVlZCB0byB2ZXJpZnkgaG93IHRoZSBgRVhUNF9GU19YQVRUUmAgZmVhdHVyZSBmbGFnIGlzIGhhbmRsZWQgaW4gdGhpcyBidWlsZC4gSXMgaXQgYSBkaXN0aW5jdCBlbnRpdHksIG9yIGlzIGl0IHBhcnQgb2YgdGhlIGJyb2FkZXIgYEVYVDRfRlNgIGRlZmluaXRpb24/IE15IGluc3RpbmN0cyB0ZWxsIG1lIHRoZSB4YXR0ciBmdW5jdGlvbnMgd2lsbCBiZSBjb21waWxlZCBpbiBhIGNlcnRhaW4gbW9kdWxlLlxuXG5JIHJlY2FsbCBzZWVpbmcgYGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZGDigJQgdGhhdCdzIHRoZSB0ZWxsdGFsZSBpbmRpY2F0b3IsIHJlc2lkaW5nIHNwZWNpZmljYWxseSB3aXRoaW4gYGZzL2V4dDQveGF0dHIuY2AuIFNvIG15IGZvY3VzIHNoaWZ0cyB0byB0aGUgYGZzL2V4dDQvTWFrZWZpbGVgLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGxvb2sgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgaG93IHRoZSBpbmNsdXNpb24gb2YgYHhhdHRyLmNgIGlzIGdvdmVybmVkLiBJdCdzIHRoZSBNYWtlZmlsZSB0aGF0IHdpbGwgcmV2ZWFsIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBsb2dpYyBhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBFWFQ0X0ZTX1hBVFRSYCBhbmQgb3RoZXIgZmVhdHVyZSBmbGFncy4gSSBleHBlY3QgdG8gc2VlIGRlcGVuZGVuY2llcyBvciBkZWZpbmVzIHRoYXQgY2xhcmlmeSB0aGlzIHBvaW50IGltbWVkaWF0ZWx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozODY2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDQ6MzQ6NTEuNTY1MDk1NTE3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0OTQ4MDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhhdHRyLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXh0NC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leHQ0L01ha2VmaWxlPTg9ZXh0NC15XFx0Oj0gYmFsbG9jLm8gYml0bWFwLm8gYmxvY2tfdmFsaWRpdHkubyBkaXIubyBleHQ0X2piZDIubyBleHRlbnRzLm8gXFxcXFxcbi0tXFxuZnMvZXh0NC9NYWtlZmlsZS0xMS1cXHRcXHRtbXAubyBtb3ZlX2V4dGVudC5vIG5hbWVpLm8gcGFnZS1pby5vIHJlYWRwYWdlLm8gcmVzaXplLm8gXFxcXFxcbmZzL2V4dDQvTWFrZWZpbGU6MTI6XFx0XFx0c3VwZXIubyBzeW1saW5rLm8gc3lzZnMubyB4YXR0ci5vIHhhdHRyX2h1cmQubyB4YXR0cl90cnVzdGVkLm8gXFxcXFxcbmZzL2V4dDQvTWFrZWZpbGUtMTMtXFx0XFx0eGF0dHJfdXNlci5vIGZhc3RfY29tbWl0Lm8gb3JwaGFuLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDQ6MzQ6NTEuNjQwMDQ5OTI2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY0MTQ2Mzc0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIEVYVDQgRmlsZXN5c3RlbSdzIFhhdHRyIENvbXBpbGF0aW9uKipcblxuT2theSwgc28gSSdtIG5vdGljaW5nIHRoYXQgYHhhdHRyLm9gIGFsd2F5cyBnZXRzIGJ1aWx0IHdoZW4gYEVYVDRfRlNgIGlzIGFjdGl2YXRlZCwgd2hpY2ggbWFrZXMgc2Vuc2UgaW5pdGlhbGx5LiBCdXQsIEkgbmVlZCB0byBkaWcgYSBsaXR0bGUgZGVlcGVyLiBXaGF0IGFib3V0IHRob3NlIG90aGVyIGNvbmZpZ3VyYXRpb25zLCB5b3Uga25vdywgYEVYVDRfRlNfUE9TSVhfQUNMYCBhbmQgYEVYVDRfRlNfU0VDVVJJVFlgPyBUaGV5J3JlIHZlcnkgbGlrZWx5IHRvIGxldmVyYWdlIGV4dGVuZGVkIGF0dHJpYnV0ZXMsIHNvIHRoYXQgbWFrZXMgbWUgcXVlc3Rpb24gd2hldGhlciB0aGUgeGF0dHIgY29tcG9uZW50IGlzICp0cnVseSogYWx3YXlzIGNvbXBpbGVkIG9yIGlmIGl0IGhhcyBkZXBlbmRlbmNpZXMuXG5cbkknbGwgY2xhcmlmeSB0aGlzIGJ5IGV4YW1pbmluZyBgZnMvZXh0NC94YXR0ci5jYCBiZWNhdXNlLCBJIG5lZWQgdG8ga25vdyB3aHkgaXQncyBhbHdheXMgaW5jbHVkZWQuIExldCdzIHN0YXJ0IHdpdGggYGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZGAgYW5kIHNlZSBpZiB0aGF0IGhlbHBzIG1lIHBpZWNlIHRvZ2V0aGVyIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHdoYXQgdGhlIGV4YWN0IGNyaXRlcmlhIGZvciBjb21waWxhdGlvbiBpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM2MCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA0OjM0OjU1LjI4MTUxNjUzNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjU3ODA3NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQveGF0dHIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leHQ0L3hhdHRyLmM9MTUyNj1zdGF0aWMgc3RydWN0IGlub2RlICpcXG5mcy9leHQ0L3hhdHRyLmM6MTUyNzpleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmQoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgdm9pZCAqdmFsdWUsXFxuZnMvZXh0NC94YXR0ci5jLTE1MjgtXFx0XFx0XFx0ICAgIHNpemVfdCB2YWx1ZV9sZW4sIHUzMiBoYXNoKVxcbi0tXFxuZnMvZXh0NC94YXR0ci5jPTE1Nzg9c3RhdGljIHN0cnVjdCBpbm9kZSAqZXh0NF94YXR0cl9pbm9kZV9sb29rdXBfY3JlYXRlKGhhbmRsZV90ICpoYW5kbGUsXFxuLS1cXG5mcy9leHQ0L3hhdHRyLmMtMTU5MC1cXHRoYXNoID0gZXh0NF94YXR0cl9pbm9kZV9oYXNoKEVYVDRfU0IoaW5vZGUtXFx1MDAzZWlfc2IpLCB2YWx1ZSwgdmFsdWVfbGVuKTtcXG5mcy9leHQ0L3hhdHRyLmM6MTU5MTpcXHRlYV9pbm9kZSA9IGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZChpbm9kZSwgdmFsdWUsIHZhbHVlX2xlbiwgaGFzaCk7XFxuZnMvZXh0NC94YXR0ci5jLTE1OTItXFx0aWYgKGVhX2lub2RlKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA0OjM0OjU1LjQwNzMwMTQxMloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcyMDQ4NzE0MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIEVYVDQgSW5vZGUgTG9va3VwIFBhdGNoKipcblxuT2theSwgc28gdGhlIGBFWFQ0X0ZTYCBjb25maWd1cmF0aW9uIGlzIGNsZWFybHkgcmVsZXZhbnQgaGVyZSwgdGhhdCdzIHRoZSBiYXNlLiBCdXQgbGV0J3MgbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgc3VwcG9ydGluZyBjb25maWdzIHdlIG5lZWQgdG8gY29uc2lkZXIuIFJpZ2h0LCB0aGUgcGF0Y2ggbW9kaWZpZXMgYGZzL2V4dDQvaW5vZGUuY2AgYW5kIGBmcy9leHQ0L3hhdHRyLmNgIHdoaWNoIGNvbmZpcm1zIHRoZSBpbml0aWFsIGZvY3VzLlxuXG5MZXQncyBmb2N1cyBvbiB0aGUga2V5IHN5bWJvbHM6IGBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmRgLCBgX19leHQ0X2lnZXRgLCBhbmQgYGV4dDRfaWdldF9tYXRjaGAuIFRoZXkgd2lsbCBsaWtlbHkgYmUgdGhlIGNyaXRpY2FsIGFyZWFzLlxuXG5UaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBzZWVtcyB0byBiZSBpbnRyb2R1Y2luZyBhIG5ldyBmbGFnLCBgRVhUNF9JR0VUX05PV0FJVGAsIHRvIGBleHQ0X2lnZXRfZmxhZ3NgLiAgRXNzZW50aWFsbHksIHRoZSBwYXRjaCBhbHRlcnMgYF9fZXh0NF9pZ2V0YCB0byB1c2UgYSBub24tYmxvY2tpbmcgaW5vZGUgbG9va3VwIHVzaW5nIGBmaW5kX2lub2RlX25vd2FpdGAgYW5kIGEgc3BlY2lhbGl6ZWQgbWF0Y2ggZnVuY3Rpb24sIGBleHQ0X2lnZXRfbWF0Y2hgLiAgVGhpcyBub24tYmxvY2tpbmcgYmVoYXZpb3IgaXMgc3BlY2lmaWNhbGx5IGltcGxlbWVudGVkIHdpdGhpbiBgZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kYCwgd2hpY2ggaXMgZGVzaWduZWQgdG8gcHJldmVudCBibG9ja2luZyB3aGVuIGZyZWVpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIChFQSkgaW5vZGVzLiBUaGF0J3MgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgaGVhcnQgb2YgdGhlIGV4dDQgaW5vZGUgbG9va3VwIGFuZCBleHRlbmRlZCBhdHRyaWJ1dGUgaGFuZGxpbmcuICBJdCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSwgd2hpY2ggbWVhbnMgaXQgc2hvdWxkIGJlIGEgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5JJ2xsIHF1aWNrbHkgY29uZmlybSB3aGV0aGVyIGBmaW5kX2lub2RlX25vd2FpdGAgaXMgYSBzdGFuZGFyZCBrZXJuZWwgZnVuY3Rpb24gb3IgaWYgaXQgd2FzIGludHJvZHVjZWQgaW4gYW5vdGhlciBwYXRjaC4gSXQgYXBwZWFycyB0byBiZSBzdGFuZGFyZCBvciBhdCBsZWFzdCBhIHJlY2VudCBhZGRpdGlvbi4gVGhpcyByZWluZm9yY2VzIHRoYXQgdGhlIHBhdGNoIHJlcHJlc2VudHMgYSBsZWdpdGltYXRlIGZ1bmN0aW9uYWwgZW5oYW5jZW1lbnQuXG5cbkFscmlnaHQsIGxldCdzIGNvbnNvbGlkYXRlIHRoZSBmaW5kaW5ncy5cblxuKipXb3J0aEZ1enppbmc6IFRydWUqKlxuXG4qKkZvY3VzU3ltYm9sczoqKiBgZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kYCwgYF9fZXh0NF9pZ2V0YCwgYGV4dDRfaWdldF9tYXRjaGBcblxuKipFbmFibGVDb25maWdzOioqIGBFWFQ0X0ZTYFxuXG4qKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGV4dDQgaW5vZGUgbG9va3VwIHByb2Nlc3MgdG8gc3VwcG9ydCBhIG5vbi1ibG9ja2luZyBhcHByb2FjaCAoYEVYVDRfSUdFVF9OT1dBSVRgKSB1c2luZyBgZmluZF9pbm9kZV9ub3dhaXRgIGFsb25nIHdpdGggYSBjdXN0b20gbWF0Y2ggZnVuY3Rpb24uIFRoaXMgbmV3IGJlaGF2aW9yIGlzIHNwZWNpZmljYWxseSBhcHBsaWVkIHRvIGV4dGVuZGVkIGF0dHJpYnV0ZSAoRUEpIGlub2RlIGxvb2t1cHMsIHByZXZlbnRpbmcgYW55IGJsb2NraW5nIG9uIGZyZWVpbmcgdGhlc2UgaW5vZGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gaW4gdGhlIGV4dDQgZmlsZXN5c3RlbSwgYW5kIHNob3VsZCBhYnNvbHV0ZWx5IGJlIGZ1enplZCBhcyBhIHJlc3VsdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkzOCwiT3V0cHV0VG9rZW5zIjoxNDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDQ6MzU6MDIuNjEyMTc0OTMxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzMTI5MzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kXCIsXG4gICAgXCJfX2V4dDRfaWdldFwiLFxuICAgIFwiZXh0NF9pZ2V0X21hdGNoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGV4dDQgaW5vZGUgbG9va3VwIGxvZ2ljIHRvIHN1cHBvcnQgYSBub24tYmxvY2tpbmcgbW9kZSAoRVhUNF9JR0VUX05PV0FJVCkgdXNpbmcgZmluZF9pbm9kZV9ub3dhaXQgYW5kIGEgY3VzdG9tIG1hdGNoIGZ1bmN0aW9uLiBUaGlzIGlzIGFwcGxpZWQgdG8gZXh0ZW5kZWQgYXR0cmlidXRlIChFQSkgaW5vZGUgbG9va3VwcyB0byBwcmV2ZW50IGJsb2NraW5nIG9uIGZyZWVpbmcgaW5vZGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGV4dDQgZmlsZXN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZFwiLFxuICAgIFwiX19leHQ0X2lnZXRcIixcbiAgICBcImV4dDRfaWdldF9tYXRjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBleHQ0IGlub2RlIGxvb2t1cCBsb2dpYyB0byBzdXBwb3J0IGEgbm9uLWJsb2NraW5nIG1vZGUgKEVYVDRfSUdFVF9OT1dBSVQpIHVzaW5nIGZpbmRfaW5vZGVfbm93YWl0IGFuZCBhIGN1c3RvbSBtYXRjaCBmdW5jdGlvbi4gVGhpcyBpcyBhcHBsaWVkIHRvIGV4dGVuZGVkIGF0dHJpYnV0ZSAoRUEpIGlub2RlIGxvb2t1cHMgdG8gcHJldmVudCBibG9ja2luZyBvbiBmcmVlaW5nIGlub2Rlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow49cxg[1] Phase: Succeeded StartedAt: 2026-06-25 04:35:14 +0000 UTC FinishedAt: 2026-06-25 04:35:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49cxg[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-25 04:35:14 +0000 UTC FinishedAt: 2026-06-25 04:35:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49cxg[2] Phase: Succeeded StartedAt: 2026-06-25 04:35:14 +0000 UTC FinishedAt: 2026-06-25 08:33:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-25 04:35:14 +0000 UTC FinishedAt: 2026-06-25 08:33:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 04:35:14 +0000 UTC FinishedAt: 2026-06-25 04:35:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 04:35:14 +0000 UTC FinishedAt: 2026-06-25 04:35:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"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-workflow49cxg/series-workflow49cxg-convert-artifact-901985185/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 04:35:24 +0000 UTC FinishedAt: 2026-06-25 04:58:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 04:35:24 +0000 UTC FinishedAt: 2026-06-25 04:58: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:*24f233f4-4b49-4135-991e-1a652cdf5c2d,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-workflow49cxg/series-workflow49cxg-convert-artifact-901985185/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": "0a8e9300-8f38-42d5-9663-f75141592c95", "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-workflow49cxg/series-workflow49cxg-build-action-373557967/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 04:35:24 +0000 UTC FinishedAt: 2026-06-25 04:57:18 +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:*24f233f4-4b49-4135-991e-1a652cdf5c2d,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-workflow49cxg/series-workflow49cxg-convert-artifact-901985185/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": "0a8e9300-8f38-42d5-9663-f75141592c95", "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-workflow49cxg/series-workflow49cxg-build-action-373557967/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 04:58:15 +0000 UTC FinishedAt: 2026-06-25 04:58:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 04:58:15 +0000 UTC FinishedAt: 2026-06-25 04:58:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 04:58:15 +0000 UTC FinishedAt: 2026-06-25 04:58:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 04:58:15 +0000 UTC FinishedAt: 2026-06-25 04:58:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-workflow49cxg/series-workflow49cxg-convert-artifact-2108081140/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 04:58:36 +0000 UTC FinishedAt: 2026-06-25 05:00:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 04:58:36 +0000 UTC FinishedAt: 2026-06-25 05:00:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0a8e9300-8f38-42d5-9663-f75141592c95,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-workflow49cxg/series-workflow49cxg-build-action-373557967/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-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 05:00:43 +0000 UTC FinishedAt: 2026-06-25 05:00:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 05:00:43 +0000 UTC FinishedAt: 2026-06-25 05:00:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 05:00:43 +0000 UTC FinishedAt: 2026-06-25 05:27:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 05:00:43 +0000 UTC FinishedAt: 2026-06-25 05:27:26 +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:*24f233f4-4b49-4135-991e-1a652cdf5c2d,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-workflow49cxg/series-workflow49cxg-convert-artifact-2108081140/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": "312de83e-2689-4b31-96c9-b57ef13bb527", "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-workflow49cxg/series-workflow49cxg-build-action-837155008/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 05:00:43 +0000 UTC FinishedAt: 2026-06-25 05:27:16 +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:*24f233f4-4b49-4135-991e-1a652cdf5c2d,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-workflow49cxg/series-workflow49cxg-convert-artifact-2108081140/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": "312de83e-2689-4b31-96c9-b57ef13bb527", "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-workflow49cxg/series-workflow49cxg-build-action-837155008/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 05:27:26 +0000 UTC FinishedAt: 2026-06-25 05:27:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 05:27:26 +0000 UTC FinishedAt: 2026-06-25 05:27:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 05:27:26 +0000 UTC FinishedAt: 2026-06-25 05:29:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 05:27:26 +0000 UTC FinishedAt: 2026-06-25 05:29:32 +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:*312de83e-2689-4b31-96c9-b57ef13bb527,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-workflow49cxg/series-workflow49cxg-build-action-837155008/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-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 05:29:42 +0000 UTC FinishedAt: 2026-06-25 08:33:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 05:29:42 +0000 UTC FinishedAt: 2026-06-25 08:33:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"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:*0a8e9300-8f38-42d5-9663-f75141592c95,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*312de83e-2689-4b31-96c9-b57ef13bb527,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-workflow49cxg/series-workflow49cxg-build-action-373557967/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-workflow49cxg/series-workflow49cxg-build-action-837155008/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 05:29:42 +0000 UTC FinishedAt: 2026-06-25 05:30:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 05:29:42 +0000 UTC FinishedAt: 2026-06-25 05:30:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"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-workflow49cxg/series-workflow49cxg-convert-artifact-2471464989/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 05:29:42 +0000 UTC FinishedAt: 2026-06-25 05:29:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 05:29:42 +0000 UTC FinishedAt: 2026-06-25 05:29:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 05:29:42 +0000 UTC FinishedAt: 2026-06-25 05:29:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 05:30:55 +0000 UTC FinishedAt: 2026-06-25 08:33:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49cxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_cache_find","__ext4_iget","ext4_iget_match"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"f04d06fd-a78b-4ee5-9bb0-7a800ca61568","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-06-25 05:30:55 +0000 UTC FinishedAt: 2026-06-25 08:33:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0a8e9300-8f38-42d5-9663-f75141592c95,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*312de83e-2689-4b31-96c9-b57ef13bb527,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-workflow49cxg/series-workflow49cxg-build-action-373557967/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-workflow49cxg/series-workflow49cxg-build-action-837155008/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-workflow49cxg/series-workflow49cxg-convert-artifact-2471464989/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,}