Name: series-workflowvhvzs Phase: Succeeded StartedAt: 2026-07-02 12:51:11 +0000 UTC FinishedAt: 2026-07-02 17:32:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhvzs[0] Phase: Succeeded StartedAt: 2026-07-02 12:51:11 +0000 UTC FinishedAt: 2026-07-02 13:03:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhvzs[0].run-triage Phase: Succeeded StartedAt: 2026-07-02 12:51:11 +0000 UTC FinishedAt: 2026-07-02 13:03:32 +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": "4a50a141f05a8d1737661b19ee22ff8455b94409", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFSPLUS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "4a50a141f05a8d1737661b19ee22ff8455b94409", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFSPLUS_FS" ], "series_id": "49fd1c17-2d02-4c42-9675-0137fc89fb3a" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "__hfs_brec_find", "hfs_brec_goto", "hfs_bnode_find", "hfs_brec_lenoff", "hfs_brec_keylen", "hfs_brec_remove" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAyIDEzOjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU1BMVVNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2hmc19icmVjX2ZpbmQmIzM0OywKICAgICYjMzQ7aGZzX2JyZWNfZ290byYjMzQ7LAogICAgJiMzNDtoZnNfYm5vZGVfZmluZCYjMzQ7LAogICAgJiMzNDtoZnNfYnJlY19sZW5vZmYmIzM0OywKICAgICYjMzQ7aGZzX2JyZWNfa2V5bGVuJiMzNDssCiAgICAmIzM0O2hmc19icmVjX3JlbW92ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBhbmQgdmFsaWRhdGlvbiBmb3IgSEZTJiM0MzsgYi10cmVlIHJlY29yZHMgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBsb2dpYyBlcnJvcnMgd2hlbiBwYXJzaW5nIGNvcnJ1cHRlZCBmaWxlc3lzdGVtIGltYWdlcy4gRnV6emluZyB3aXRoIGNvcnJ1cHRlZCBpbWFnZXMgd2lsbCBoZWxwIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlc2UgY2hlY2tzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEzOjAyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNmJhMTA0NzhjMjJjNjExYmI5ZDhkMGM5Y2YyZDFmNzJkYzE1OWEzN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIgMTM6MDI6NDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvaGZzcGx1cy9iZmluZC5jIGIvZnMvaGZzcGx1cy9iZmluZC5jXG5pbmRleCA5YTU1ZmE2ZDUyOTQyOS4uMzYzZmFmMjE0YTFjNjUgMTAwNjQ0XG4tLS0gYS9mcy9oZnNwbHVzL2JmaW5kLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmc3BsdXMvYmZpbmQuY1xuQEAgLTEwOCwxNSAmIzQzOzEwOCwyOCBAQCBpbnQgX19oZnNfYnJlY19maW5kKHN0cnVjdCBoZnNfYm5vZGUgKmJub2RlLCBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsXG4gXHRpbnQgYiwgZTtcbiBcdGludCByZXM7XG4gXG4mIzQzO1x0ZmQtXHUwMDNlcmVjb3JkID0gLTE7XG4mIzQzO1x0ZmQtXHUwMDNla2V5b2Zmc2V0ID0gLTE7XG4mIzQzO1x0ZmQtXHUwMDNla2V5bGVuZ3RoID0gLTE7XG4mIzQzO1x0ZmQtXHUwMDNlZW50cnlvZmZzZXQgPSAtMTtcbiYjNDM7XHRmZC1cdTAwM2VlbnRyeWxlbmd0aCA9IC0xO1xuJiM0MztcbiBcdEJVR19PTighcmVjX2ZvdW5kKTtcbiYjNDM7XHRpZiAoIWhmc19ibm9kZV9udW1fcmVjc192YWxpZChibm9kZSkpIHtcbiYjNDM7XHRcdHJlcyA9IC1FSU87XG4mIzQzO1x0XHRnb3RvIGZhaWw7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGIgPSAwO1xuIFx0ZSA9IGJub2RlLVx1MDAzZW51bV9yZWNzIC0gMTtcbiBcdHJlcyA9IC1FTk9FTlQ7XG4mIzQzO1x0aWYgKGJub2RlLVx1MDAzZW51bV9yZWNzID09IDApXG4mIzQzO1x0XHRnb3RvIGZhaWw7XG4gXHRkbyB7XG4gXHRcdHJlYyA9IChlICYjNDM7IGIpIC8gMjtcbiBcdFx0bGVuID0gaGZzX2JyZWNfbGVub2ZmKGJub2RlLCByZWMsIFx1MDAyNm9mZik7XG4gXHRcdGtleWxlbiA9IGhmc19icmVjX2tleWxlbihibm9kZSwgcmVjKTtcbi1cdFx0aWYgKGtleWxlbiA9PSAwKSB7XG4mIzQzO1x0XHRpZiAoa2V5bGVuID09IDAgfHwga2V5bGVuIFx1MDAzZT0gbGVuKSB7XG4gXHRcdFx0cmVzID0gLUVJTlZBTDtcbiBcdFx0XHRnb3RvIGZhaWw7XG4gXHRcdH1cbkBAIC0xMzAsNyAmIzQzOzE0Myw3IEBAIGludCBfX2hmc19icmVjX2ZpbmQoc3RydWN0IGhmc19ibm9kZSAqYm5vZGUsIHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCxcbiBcdGlmIChyZWMgIT0gZSBcdTAwMjZcdTAwMjYgZSBcdTAwM2U9IDApIHtcbiBcdFx0bGVuID0gaGZzX2JyZWNfbGVub2ZmKGJub2RlLCBlLCBcdTAwMjZvZmYpO1xuIFx0XHRrZXlsZW4gPSBoZnNfYnJlY19rZXlsZW4oYm5vZGUsIGUpO1xuLVx0XHRpZiAoa2V5bGVuID09IDApIHtcbiYjNDM7XHRcdGlmIChrZXlsZW4gPT0gMCB8fCBrZXlsZW4gXHUwMDNlPSBsZW4pIHtcbiBcdFx0XHRyZXMgPSAtRUlOVkFMO1xuIFx0XHRcdGdvdG8gZmFpbDtcbiBcdFx0fVxuQEAgLTIzMiw2ICYjNDM7MjQ1LDE0IEBAIGludCBoZnNfYnJlY19nb3RvKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgaW50IGNudClcbiBcbiBcdGJub2RlID0gZmQtXHUwMDNlYm5vZGU7XG4gXHR0cmVlID0gYm5vZGUtXHUwMDNldHJlZTtcbiYjNDM7XHRpZiAoIWhmc19ibm9kZV9udW1fcmVjc192YWxpZChibm9kZSkpIHtcbiYjNDM7XHRcdHJlcyA9IC1FSU87XG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4mIzQzO1x0aWYgKGJub2RlLVx1MDAzZW51bV9yZWNzID09IDApIHtcbiYjNDM7XHRcdHJlcyA9IC1FTk9FTlQ7XG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4gXG4gXHRpZiAoY250IFx1MDAzYyAwKSB7XG4gXHRcdGNudCA9IC1jbnQ7XG5AQCAtMjc0LDcgJiM0MzsyOTUsNyBAQCBpbnQgaGZzX2JyZWNfZ290byhzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsIGludCBjbnQpXG4gXG4gXHRsZW4gPSBoZnNfYnJlY19sZW5vZmYoYm5vZGUsIGZkLVx1MDAzZXJlY29yZCwgXHUwMDI2b2ZmKTtcbiBcdGtleWxlbiA9IGhmc19icmVjX2tleWxlbihibm9kZSwgZmQtXHUwMDNlcmVjb3JkKTtcbi1cdGlmIChrZXlsZW4gPT0gMCkge1xuJiM0MztcdGlmIChrZXlsZW4gPT0gMCB8fCBrZXlsZW4gXHUwMDNlPSBsZW4pIHtcbiBcdFx0cmVzID0gLUVJTlZBTDtcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvZnMvaGZzcGx1cy9ibm9kZS5jIGIvZnMvaGZzcGx1cy9ibm9kZS5jXG5pbmRleCBkMDg4ZmI3ZWIwZGZhMy4uZjE4NWMwMTJkMDkwMjYgMTAwNjQ0XG4tLS0gYS9mcy9oZnNwbHVzL2Jub2RlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmc3BsdXMvYm5vZGUuY1xuQEAgLTM1MiwxNSAmIzQzOzM1MiwyMiBAQCB2b2lkIGhmc19ibm9kZV9kdW1wKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUpXG4gXHRzdHJ1Y3QgaGZzX2Jub2RlX2Rlc2MgZGVzYztcbiBcdF9fYmUzMiBjbmlkO1xuIFx0aW50IGksIG9mZiwga2V5X29mZjtcbiYjNDM7XHR1MTYgbnVtX3JlY3M7XG4gXG4gXHRoZnNfZGJnKFwmIzM0O25vZGUgJWRcXG5cJiMzNDssIG5vZGUtXHUwMDNldGhpcyk7XG4gXHRoZnNfYm5vZGVfcmVhZChub2RlLCBcdTAwMjZkZXNjLCAwLCBzaXplb2YoZGVzYykpO1xuJiM0MztcdG51bV9yZWNzID0gbm9kZS1cdTAwM2VudW1fcmVjcztcbiBcdGhmc19kYmcoXCYjMzQ7bmV4dCAlZCwgcHJldiAlZCwgdHlwZSAlZCwgaGVpZ2h0ICVkLCBudW1fcmVjcyAlZFxcblwmIzM0OyxcbiBcdFx0YmUzMl90b19jcHUoZGVzYy5uZXh0KSwgYmUzMl90b19jcHUoZGVzYy5wcmV2KSxcbiBcdFx0ZGVzYy50eXBlLCBkZXNjLmhlaWdodCwgYmUxNl90b19jcHUoZGVzYy5udW1fcmVjcykpO1xuIFxuJiM0MztcdGlmICghaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkKG5vZGUpKSB7XG4mIzQzO1x0XHRoZnNfZGJnKFwmIzM0O2ludmFsaWQgbnVtX3JlY3MgJXVcXG5cJiMzNDssIG51bV9yZWNzKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0b2ZmID0gbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZSAtIDI7XG4tXHRmb3IgKGkgPSBiZTE2X3RvX2NwdShkZXNjLm51bV9yZWNzKTsgaSBcdTAwM2U9IDA7IG9mZiAtPSAyLCBpLS0pIHtcbiYjNDM7XHRmb3IgKGkgPSBudW1fcmVjczsgaSBcdTAwM2U9IDA7IG9mZiAtPSAyLCBpLS0pIHtcbiBcdFx0a2V5X29mZiA9IGhmc19ibm9kZV9yZWFkX3UxNihub2RlLCBvZmYpO1xuIFx0XHRoZnNfZGJnKFwmIzM0OyBrZXlfb2ZmICVkXCYjMzQ7LCBrZXlfb2ZmKTtcbiBcdFx0aWYgKGkgXHUwMDI2XHUwMDI2IG5vZGUtXHUwMDNldHlwZSA9PSBIRlNfTk9ERV9JTkRFWCkge1xuQEAgLTU3OSw2ICYjNDM7NTg2LDkgQEAgc3RydWN0IGhmc19ibm9kZSAqaGZzX2Jub2RlX2ZpbmQoc3RydWN0IGhmc19idHJlZSAqdHJlZSwgdTMyIG51bSlcbiBcdFx0Z290byBub2RlX2Vycm9yO1xuIFx0fVxuIFxuJiM0MztcdGlmICghaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkKG5vZGUpKVxuJiM0MztcdFx0Z290byBub2RlX2Vycm9yO1xuJiM0MztcbiBcdHJlY19vZmYgPSB0cmVlLVx1MDAzZW5vZGVfc2l6ZSAtIDI7XG4gXHRvZmYgPSBoZnNfYm5vZGVfcmVhZF91MTYobm9kZSwgcmVjX29mZik7XG4gXHRpZiAob2ZmICE9IHNpemVvZihzdHJ1Y3QgaGZzX2Jub2RlX2Rlc2MpKVxuQEAgLTU4Niw5ICYjNDM7NTk2LDcgQEAgc3RydWN0IGhmc19ibm9kZSAqaGZzX2Jub2RlX2ZpbmQoc3RydWN0IGhmc19idHJlZSAqdHJlZSwgdTMyIG51bSlcbiBcdGZvciAoaSA9IDE7IGkgXHUwMDNjPSBub2RlLVx1MDAzZW51bV9yZWNzOyBvZmYgPSBuZXh0X29mZiwgaSYjNDM7JiM0MzspIHtcbiBcdFx0cmVjX29mZiAtPSAyO1xuIFx0XHRuZXh0X29mZiA9IGhmc19ibm9kZV9yZWFkX3UxNihub2RlLCByZWNfb2ZmKTtcbi1cdFx0aWYgKG5leHRfb2ZmIFx1MDAzYz0gb2ZmIHx8XG4tXHRcdCAgICBuZXh0X29mZiBcdTAwM2UgdHJlZS1cdTAwM2Vub2RlX3NpemUgfHxcbi1cdFx0ICAgIG5leHRfb2ZmIFx1MDAyNiAxKVxuJiM0MztcdFx0aWYgKCFoZnNfYnJlY19yYW5nZV92YWxpZChub2RlLCBvZmYsIG5leHRfb2ZmLCByZWNfb2ZmKSlcbiBcdFx0XHRnb3RvIG5vZGVfZXJyb3I7XG4gXHRcdGVudHJ5X3NpemUgPSBuZXh0X29mZiAtIG9mZjtcbiBcdFx0aWYgKG5vZGUtXHUwMDNldHlwZSAhPSBIRlNfTk9ERV9JTkRFWCBcdTAwMjZcdTAwMjZcbmRpZmYgLS1naXQgYS9mcy9oZnNwbHVzL2JyZWMuYyBiL2ZzL2hmc3BsdXMvYnJlYy5jXG5pbmRleCBlM2RmODkyODQwNzlkYi4uZmUyZTA2MzY3OThjZWMgMTAwNjQ0XG4tLS0gYS9mcy9oZnNwbHVzL2JyZWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzcGx1cy9icmVjLmNcbkBAIC0yMCwzOCAmIzQzOzIwLDQ0IEBAIHN0YXRpYyBpbnQgaGZzX2J0cmVlX2luY19oZWlnaHQoc3RydWN0IGhmc19idHJlZSAqKTtcbiB1MTYgaGZzX2JyZWNfbGVub2ZmKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUxNiByZWMsIHUxNiAqb2ZmKVxuIHtcbiBcdF9fYmUxNiByZXR2YWxbMl07XG4tXHR1MTYgZGF0YW9mZjtcbiYjNDM7XHR1MTYgZGF0YV9vZmY7XG4mIzQzO1x0dTE2IG5leHRfb2ZmO1xuIFxuLVx0ZGF0YW9mZiA9IG5vZGUtXHUwMDNldHJlZS1cdTAwM2Vub2RlX3NpemUgLSAocmVjICYjNDM7IDIpICogMjtcbi1cdGhmc19ibm9kZV9yZWFkKG5vZGUsIHJldHZhbCwgZGF0YW9mZiwgNCk7XG4mIzQzO1x0aWYgKCFoZnNfYnJlY19yZWNvcmRfdmFsaWQobm9kZSwgcmVjKSkge1xuJiM0MztcdFx0Km9mZiA9IDA7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGRhdGFfb2ZmID0gbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZSAtIChyZWMgJiM0MzsgMikgKiAyO1xuJiM0MztcdGhmc19ibm9kZV9yZWFkKG5vZGUsIHJldHZhbCwgZGF0YV9vZmYsIDQpO1xuIFx0Km9mZiA9IGJlMTZfdG9fY3B1KHJldHZhbFsxXSk7XG4tXHRyZXR1cm4gYmUxNl90b19jcHUocmV0dmFsWzBdKSAtICpvZmY7XG4mIzQzO1x0bmV4dF9vZmYgPSBiZTE2X3RvX2NwdShyZXR2YWxbMF0pO1xuJiM0MztcdGlmICghaGZzX2JyZWNfcmFuZ2VfdmFsaWQobm9kZSwgKm9mZiwgbmV4dF9vZmYsIGRhdGFfb2ZmKSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdHJldHVybiBuZXh0X29mZiAtICpvZmY7XG4gfVxuIFxuIC8qIEdldCB0aGUgbGVuZ3RoIG9mIHRoZSBrZXkgZnJvbSBhIGtleWVkIHJlY29yZCAqL1xuIHUxNiBoZnNfYnJlY19rZXlsZW4oc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTE2IHJlYylcbiB7XG4tXHR1MTYgcmV0dmFsLCByZWNvZmY7XG4mIzQzO1x0dTE2IHJldHZhbCwgcmVjb2ZmLCBsZW47XG4gXG4gXHRpZiAobm9kZS1cdTAwM2V0eXBlICE9IEhGU19OT0RFX0lOREVYIFx1MDAyNlx1MDAyNiBub2RlLVx1MDAzZXR5cGUgIT0gSEZTX05PREVfTEVBRilcbiBcdFx0cmV0dXJuIDA7XG4mIzQzO1x0aWYgKCFoZnNfYnJlY19yZWNvcmRfdmFsaWQobm9kZSwgcmVjKSlcbiYjNDM7XHRcdHJldHVybiAwO1xuIFxuIFx0aWYgKChub2RlLVx1MDAzZXR5cGUgPT0gSEZTX05PREVfSU5ERVgpIFx1MDAyNlx1MDAyNlxuIFx0ICAgIShub2RlLVx1MDAzZXRyZWUtXHUwMDNlYXR0cmlidXRlcyBcdTAwMjYgSEZTX1RSRUVfVkFSSURYS0VZUykgXHUwMDI2XHUwMDI2XG4gXHQgICAobm9kZS1cdTAwM2V0cmVlLVx1MDAzZWNuaWQgIT0gSEZTUExVU19BVFRSX0NOSUQpKSB7XG4gXHRcdHJldHZhbCA9IG5vZGUtXHUwMDNldHJlZS1cdTAwM2VtYXhfa2V5X2xlbiAmIzQzOyAyO1xuIFx0fSBlbHNlIHtcbi1cdFx0cmVjb2ZmID0gaGZzX2Jub2RlX3JlYWRfdTE2KG5vZGUsXG4tXHRcdFx0bm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZSAtIChyZWMgJiM0MzsgMSkgKiAyKTtcbi1cdFx0aWYgKCFyZWNvZmYpXG4tXHRcdFx0cmV0dXJuIDA7XG4tXHRcdGlmIChyZWNvZmYgXHUwMDNlIG5vZGUtXHUwMDNldHJlZS1cdTAwM2Vub2RlX3NpemUgLSAyKSB7XG4tXHRcdFx0cHJfZXJyKFwmIzM0O3JlY29mZiAlZCB0b28gbGFyZ2VcXG5cJiMzNDssIHJlY29mZik7XG4mIzQzO1x0XHRsZW4gPSBoZnNfYnJlY19sZW5vZmYobm9kZSwgcmVjLCBcdTAwMjZyZWNvZmYpO1xuJiM0MztcdFx0aWYgKGxlbiA9PSAwKVxuIFx0XHRcdHJldHVybiAwO1xuLVx0XHR9XG4gXG4gXHRcdHJldHZhbCA9IGhmc19ibm9kZV9yZWFkX3UxNihub2RlLCByZWNvZmYpICYjNDM7IDI7XG4tXHRcdGlmIChyZXR2YWwgXHUwMDNlIG5vZGUtXHUwMDNldHJlZS1cdTAwM2VtYXhfa2V5X2xlbiAmIzQzOyAyKSB7XG4mIzQzO1x0XHRpZiAocmV0dmFsIFx1MDAzZT0gbGVuIHx8IHJldHZhbCBcdTAwM2Ugbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW1heF9rZXlfbGVuICYjNDM7IDIpIHtcbiBcdFx0XHRwcl9lcnIoXCYjMzQ7a2V5bGVuICVkIHRvbyBsYXJnZVxcblwmIzM0OyxcbiBcdFx0XHRcdHJldHZhbCk7XG4gXHRcdFx0cmV0dmFsID0gMDtcbkBAIC0xODUsMTAgJiM0MzsxOTEsMTUgQEAgaW50IGhmc19icmVjX3JlbW92ZShzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQpXG4gXHR0cmVlID0gZmQtXHUwMDNldHJlZTtcbiBcdG5vZGUgPSBmZC1cdTAwM2Vibm9kZTtcbiBhZ2FpbjpcbiYjNDM7XHRpZiAoIWhmc19icmVjX3JlY29yZF92YWxpZChub2RlLCBmZC1cdTAwM2VyZWNvcmQpKVxuJiM0MztcdFx0cmV0dXJuIC1FSU87XG4mIzQzO1xuIFx0cmVjX29mZiA9IHRyZWUtXHUwMDNlbm9kZV9zaXplIC0gKGZkLVx1MDAzZXJlY29yZCAmIzQzOyAyKSAqIDI7XG4gXHRlbmRfb2ZmID0gdHJlZS1cdTAwM2Vub2RlX3NpemUgLSAobm9kZS1cdTAwM2VudW1fcmVjcyAmIzQzOyAxKSAqIDI7XG4gXG4gXHRpZiAobm9kZS1cdTAwM2V0eXBlID09IEhGU19OT0RFX0xFQUYpIHtcbiYjNDM7XHRcdGlmICh0cmVlLVx1MDAzZWxlYWZfY291bnQgPT0gMClcbiYjNDM7XHRcdFx0cmV0dXJuIC1FSU87XG4gXHRcdHRyZWUtXHUwMDNlbGVhZl9jb3VudC0tO1xuIFx0XHRtYXJrX2lub2RlX2RpcnR5KHRyZWUtXHUwMDNlaW5vZGUpO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvaGZzcGx1c19mcy5oIGIvZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmhcbmluZGV4IGVjMDRiODJhZDkyNzg3Li43YTM0NWM0ZDFjMDY0MCAxMDA2NDRcbi0tLSBhL2ZzL2hmc3BsdXMvaGZzcGx1c19mcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaFxuQEAgLTU4Nyw2ICYjNDM7NTg3LDY4IEBAIGJvb2wgaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBvZmYpXG4gXHRyZXR1cm4gaXNfdmFsaWQ7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW5saW5lXG4mIzQzO2Jvb2wgaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUpXG4mIzQzO3tcbiYjNDM7XHR1MzIgbm9kZV9zaXplO1xuJiM0MztcdHUzMiByZWNfb2ZmX3NpemU7XG4mIzQzO1x0dTMyIHJlY19vZmZfdGFiX3NpemU7XG4mIzQzO1x0dTMyIHJlY19hcmVhX3NpemU7XG4mIzQzO1xuJiM0MztcdGlmICghbm9kZSB8fCAhbm9kZS1cdTAwM2V0cmVlKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRub2RlX3NpemUgPSBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplO1xuJiM0MztcdHJlY19vZmZfc2l6ZSA9IHNpemVvZihfX2JlMTYpO1xuJiM0MztcdGlmIChub2RlX3NpemUgXHUwMDNjIHNpemVvZihzdHJ1Y3QgaGZzX2Jub2RlX2Rlc2MpICYjNDM7IHJlY19vZmZfc2l6ZSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0cmVjX2FyZWFfc2l6ZSA9IG5vZGVfc2l6ZSAtIHNpemVvZihzdHJ1Y3QgaGZzX2Jub2RlX2Rlc2MpO1xuJiM0MztcdHJlY19vZmZfdGFiX3NpemUgPSAoKHUzMilub2RlLVx1MDAzZW51bV9yZWNzICYjNDM7IDEpICogcmVjX29mZl9zaXplO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmVjX29mZl90YWJfc2l6ZSBcdTAwM2M9IHJlY19hcmVhX3NpemU7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbmxpbmVcbiYjNDM7Ym9vbCBoZnNfYnJlY19yZWNvcmRfdmFsaWQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgaW50IHJlY29yZClcbiYjNDM7e1xuJiM0MztcdGlmICghaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkKG5vZGUpKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdGlmIChyZWNvcmQgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZWNvcmQgXHUwMDNjIG5vZGUtXHUwMDNlbnVtX3JlY3M7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbmxpbmVcbiYjNDM7Ym9vbCBoZnNfYnJlY19yYW5nZV92YWxpZChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MTYgb2ZmLCB1MTYgbmV4dF9vZmYsXG4mIzQzO1x0XHRcdCAgdTE2IHJlY19vZmYpXG4mIzQzO3tcbiYjNDM7XHR1MzIgcmVjX29mZl9zaXplO1xuJiM0MztcdHUzMiByZWNfb2ZmX3RhYl9zaXplO1xuJiM0MztcdHUzMiByZWNfb2ZmX3RhYl9zdGFydDtcbiYjNDM7XG4mIzQzO1x0aWYgKCFub2RlIHx8ICFub2RlLVx1MDAzZXRyZWUpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdGlmIChvZmYgXHUwMDNjIHNpemVvZihzdHJ1Y3QgaGZzX2Jub2RlX2Rlc2MpIHx8IChvZmYgXHUwMDI2IDEpKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRpZiAobmV4dF9vZmYgXHUwMDNjPSBvZmYgfHxcbiYjNDM7XHRcdG5leHRfb2ZmIFx1MDAzZSBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplIHx8XG4mIzQzO1x0XHRuZXh0X29mZiBcdTAwM2UgcmVjX29mZiB8fFxuJiM0MztcdFx0KG5leHRfb2ZmIFx1MDAyNiAxKSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0cmVjX29mZl9zaXplID0gc2l6ZW9mKF9fYmUxNik7XG4mIzQzO1x0cmVjX29mZl90YWJfc2l6ZSA9ICgodTMyKW5vZGUtXHUwMDNlbnVtX3JlY3MgJiM0MzsgMSkgKiByZWNfb2ZmX3NpemU7XG4mIzQzO1x0cmVjX29mZl90YWJfc3RhcnQgPSBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplIC0gcmVjX29mZl90YWJfc2l6ZTtcbiYjNDM7XHRpZiAobmV4dF9vZmYgXHUwMDNlIHJlY19vZmZfdGFiX3N0YXJ0KVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW5saW5lXG4gdTMyIGNoZWNrX2FuZF9jb3JyZWN0X3JlcXVlc3RlZF9sZW5ndGgoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG9mZiwgdTMyIGxlbilcbiB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTM6MDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SEZTUExVU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19faGZzX2JyZWNfZmluZCYjMzQ7LAogICAgJiMzNDtoZnNfYnJlY19nb3RvJiMzNDssCiAgICAmIzM0O2hmc19ibm9kZV9maW5kJiMzNDssCiAgICAmIzM0O2hmc19icmVjX2xlbm9mZiYjMzQ7LAogICAgJiMzNDtoZnNfYnJlY19rZXlsZW4mIzM0OywKICAgICYjMzQ7aGZzX2JyZWNfcmVtb3ZlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIGFuZCB2YWxpZGF0aW9uIGZvciBIRlMmIzQzOyBiLXRyZWUgcmVjb3JkcyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYW5kIGxvZ2ljIGVycm9ycyB3aGVuIHBhcnNpbmcgY29ycnVwdGVkIGZpbGVzeXN0ZW0gaW1hZ2VzLiBGdXp6aW5nIHdpdGggY29ycnVwdGVkIGltYWdlcyB3aWxsIGhlbHAgdmVyaWZ5IHRoZSBjb3JyZWN0bmVzcyBvZiB0aGVzZSBjaGVja3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDZiYTEwNDc4YzIyYzYxMWJiOWQ4ZDBjOWNmMmQxZjcyZGMxNTlhMzcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAyIDEzOjAyOjQ5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvaGZzcGx1cy9iZmluZC5jIGIvZnMvaGZzcGx1cy9iZmluZC5jCmluZGV4IDlhNTVmYTZkNTI5NDI5Li4zNjNmYWYyMTRhMWM2NSAxMDA2NDQKLS0tIGEvZnMvaGZzcGx1cy9iZmluZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmc3BsdXMvYmZpbmQuYwpAQCAtMTA4LDE1ICYjNDM7MTA4LDI4IEBAIGludCBfX2hmc19icmVjX2ZpbmQoc3RydWN0IGhmc19ibm9kZSAqYm5vZGUsIHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwKIAlpbnQgYiwgZTsKIAlpbnQgcmVzOwogCiYjNDM7CWZkLSZndDtyZWNvcmQgPSAtMTsKJiM0MzsJZmQtJmd0O2tleW9mZnNldCA9IC0xOwomIzQzOwlmZC0mZ3Q7a2V5bGVuZ3RoID0gLTE7CiYjNDM7CWZkLSZndDtlbnRyeW9mZnNldCA9IC0xOwomIzQzOwlmZC0mZ3Q7ZW50cnlsZW5ndGggPSAtMTsKJiM0MzsKIAlCVUdfT04oIXJlY19mb3VuZCk7CiYjNDM7CWlmICghaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkKGJub2RlKSkgewomIzQzOwkJcmVzID0gLUVJTzsKJiM0MzsJCWdvdG8gZmFpbDsKJiM0MzsJfQomIzQzOwogCWIgPSAwOwogCWUgPSBibm9kZS0mZ3Q7bnVtX3JlY3MgLSAxOwogCXJlcyA9IC1FTk9FTlQ7CiYjNDM7CWlmIChibm9kZS0mZ3Q7bnVtX3JlY3MgPT0gMCkKJiM0MzsJCWdvdG8gZmFpbDsKIAlkbyB7CiAJCXJlYyA9IChlICYjNDM7IGIpIC8gMjsKIAkJbGVuID0gaGZzX2JyZWNfbGVub2ZmKGJub2RlLCByZWMsICZhbXA7b2ZmKTsKIAkJa2V5bGVuID0gaGZzX2JyZWNfa2V5bGVuKGJub2RlLCByZWMpOwotCQlpZiAoa2V5bGVuID09IDApIHsKJiM0MzsJCWlmIChrZXlsZW4gPT0gMCB8fCBrZXlsZW4gJmd0Oz0gbGVuKSB7CiAJCQlyZXMgPSAtRUlOVkFMOwogCQkJZ290byBmYWlsOwogCQl9CkBAIC0xMzAsNyAmIzQzOzE0Myw3IEBAIGludCBfX2hmc19icmVjX2ZpbmQoc3RydWN0IGhmc19ibm9kZSAqYm5vZGUsIHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwKIAlpZiAocmVjICE9IGUgJmFtcDsmYW1wOyBlICZndDs9IDApIHsKIAkJbGVuID0gaGZzX2JyZWNfbGVub2ZmKGJub2RlLCBlLCAmYW1wO29mZik7CiAJCWtleWxlbiA9IGhmc19icmVjX2tleWxlbihibm9kZSwgZSk7Ci0JCWlmIChrZXlsZW4gPT0gMCkgewomIzQzOwkJaWYgKGtleWxlbiA9PSAwIHx8IGtleWxlbiAmZ3Q7PSBsZW4pIHsKIAkJCXJlcyA9IC1FSU5WQUw7CiAJCQlnb3RvIGZhaWw7CiAJCX0KQEAgLTIzMiw2ICYjNDM7MjQ1LDE0IEBAIGludCBoZnNfYnJlY19nb3RvKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgaW50IGNudCkKIAogCWJub2RlID0gZmQtJmd0O2Jub2RlOwogCXRyZWUgPSBibm9kZS0mZ3Q7dHJlZTsKJiM0MzsJaWYgKCFoZnNfYm5vZGVfbnVtX3JlY3NfdmFsaWQoYm5vZGUpKSB7CiYjNDM7CQlyZXMgPSAtRUlPOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsJaWYgKGJub2RlLSZndDtudW1fcmVjcyA9PSAwKSB7CiYjNDM7CQlyZXMgPSAtRU5PRU5UOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KIAogCWlmIChjbnQgJmx0OyAwKSB7CiAJCWNudCA9IC1jbnQ7CkBAIC0yNzQsNyAmIzQzOzI5NSw3IEBAIGludCBoZnNfYnJlY19nb3RvKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgaW50IGNudCkKIAogCWxlbiA9IGhmc19icmVjX2xlbm9mZihibm9kZSwgZmQtJmd0O3JlY29yZCwgJmFtcDtvZmYpOwogCWtleWxlbiA9IGhmc19icmVjX2tleWxlbihibm9kZSwgZmQtJmd0O3JlY29yZCk7Ci0JaWYgKGtleWxlbiA9PSAwKSB7CiYjNDM7CWlmIChrZXlsZW4gPT0gMCB8fCBrZXlsZW4gJmd0Oz0gbGVuKSB7CiAJCXJlcyA9IC1FSU5WQUw7CiAJCWdvdG8gb3V0OwogCX0KZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvYm5vZGUuYyBiL2ZzL2hmc3BsdXMvYm5vZGUuYwppbmRleCBkMDg4ZmI3ZWIwZGZhMy4uZjE4NWMwMTJkMDkwMjYgMTAwNjQ0Ci0tLSBhL2ZzL2hmc3BsdXMvYm5vZGUuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnNwbHVzL2Jub2RlLmMKQEAgLTM1MiwxNSAmIzQzOzM1MiwyMiBAQCB2b2lkIGhmc19ibm9kZV9kdW1wKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUpCiAJc3RydWN0IGhmc19ibm9kZV9kZXNjIGRlc2M7CiAJX19iZTMyIGNuaWQ7CiAJaW50IGksIG9mZiwga2V5X29mZjsKJiM0MzsJdTE2IG51bV9yZWNzOwogCiAJaGZzX2RiZygmIzM0O25vZGUgJWRcbiYjMzQ7LCBub2RlLSZndDt0aGlzKTsKIAloZnNfYm5vZGVfcmVhZChub2RlLCAmYW1wO2Rlc2MsIDAsIHNpemVvZihkZXNjKSk7CiYjNDM7CW51bV9yZWNzID0gbm9kZS0mZ3Q7bnVtX3JlY3M7CiAJaGZzX2RiZygmIzM0O25leHQgJWQsIHByZXYgJWQsIHR5cGUgJWQsIGhlaWdodCAlZCwgbnVtX3JlY3MgJWRcbiYjMzQ7LAogCQliZTMyX3RvX2NwdShkZXNjLm5leHQpLCBiZTMyX3RvX2NwdShkZXNjLnByZXYpLAogCQlkZXNjLnR5cGUsIGRlc2MuaGVpZ2h0LCBiZTE2X3RvX2NwdShkZXNjLm51bV9yZWNzKSk7CiAKJiM0MzsJaWYgKCFoZnNfYm5vZGVfbnVtX3JlY3NfdmFsaWQobm9kZSkpIHsKJiM0MzsJCWhmc19kYmcoJiMzNDtpbnZhbGlkIG51bV9yZWNzICV1XG4mIzM0OywgbnVtX3JlY3MpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiAJb2ZmID0gbm9kZS0mZ3Q7dHJlZS0mZ3Q7bm9kZV9zaXplIC0gMjsKLQlmb3IgKGkgPSBiZTE2X3RvX2NwdShkZXNjLm51bV9yZWNzKTsgaSAmZ3Q7PSAwOyBvZmYgLT0gMiwgaS0tKSB7CiYjNDM7CWZvciAoaSA9IG51bV9yZWNzOyBpICZndDs9IDA7IG9mZiAtPSAyLCBpLS0pIHsKIAkJa2V5X29mZiA9IGhmc19ibm9kZV9yZWFkX3UxNihub2RlLCBvZmYpOwogCQloZnNfZGJnKCYjMzQ7IGtleV9vZmYgJWQmIzM0Oywga2V5X29mZik7CiAJCWlmIChpICZhbXA7JmFtcDsgbm9kZS0mZ3Q7dHlwZSA9PSBIRlNfTk9ERV9JTkRFWCkgewpAQCAtNTc5LDYgJiM0Mzs1ODYsOSBAQCBzdHJ1Y3QgaGZzX2Jub2RlICpoZnNfYm5vZGVfZmluZChzdHJ1Y3QgaGZzX2J0cmVlICp0cmVlLCB1MzIgbnVtKQogCQlnb3RvIG5vZGVfZXJyb3I7CiAJfQogCiYjNDM7CWlmICghaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkKG5vZGUpKQomIzQzOwkJZ290byBub2RlX2Vycm9yOwomIzQzOwogCXJlY19vZmYgPSB0cmVlLSZndDtub2RlX3NpemUgLSAyOwogCW9mZiA9IGhmc19ibm9kZV9yZWFkX3UxNihub2RlLCByZWNfb2ZmKTsKIAlpZiAob2ZmICE9IHNpemVvZihzdHJ1Y3QgaGZzX2Jub2RlX2Rlc2MpKQpAQCAtNTg2LDkgJiM0Mzs1OTYsNyBAQCBzdHJ1Y3QgaGZzX2Jub2RlICpoZnNfYm5vZGVfZmluZChzdHJ1Y3QgaGZzX2J0cmVlICp0cmVlLCB1MzIgbnVtKQogCWZvciAoaSA9IDE7IGkgJmx0Oz0gbm9kZS0mZ3Q7bnVtX3JlY3M7IG9mZiA9IG5leHRfb2ZmLCBpJiM0MzsmIzQzOykgewogCQlyZWNfb2ZmIC09IDI7CiAJCW5leHRfb2ZmID0gaGZzX2Jub2RlX3JlYWRfdTE2KG5vZGUsIHJlY19vZmYpOwotCQlpZiAobmV4dF9vZmYgJmx0Oz0gb2ZmIHx8Ci0JCSAgICBuZXh0X29mZiAmZ3Q7IHRyZWUtJmd0O25vZGVfc2l6ZSB8fAotCQkgICAgbmV4dF9vZmYgJmFtcDsgMSkKJiM0MzsJCWlmICghaGZzX2JyZWNfcmFuZ2VfdmFsaWQobm9kZSwgb2ZmLCBuZXh0X29mZiwgcmVjX29mZikpCiAJCQlnb3RvIG5vZGVfZXJyb3I7CiAJCWVudHJ5X3NpemUgPSBuZXh0X29mZiAtIG9mZjsKIAkJaWYgKG5vZGUtJmd0O3R5cGUgIT0gSEZTX05PREVfSU5ERVggJmFtcDsmYW1wOwpkaWZmIC0tZ2l0IGEvZnMvaGZzcGx1cy9icmVjLmMgYi9mcy9oZnNwbHVzL2JyZWMuYwppbmRleCBlM2RmODkyODQwNzlkYi4uZmUyZTA2MzY3OThjZWMgMTAwNjQ0Ci0tLSBhL2ZzL2hmc3BsdXMvYnJlYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmc3BsdXMvYnJlYy5jCkBAIC0yMCwzOCAmIzQzOzIwLDQ0IEBAIHN0YXRpYyBpbnQgaGZzX2J0cmVlX2luY19oZWlnaHQoc3RydWN0IGhmc19idHJlZSAqKTsKIHUxNiBoZnNfYnJlY19sZW5vZmYoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTE2IHJlYywgdTE2ICpvZmYpCiB7CiAJX19iZTE2IHJldHZhbFsyXTsKLQl1MTYgZGF0YW9mZjsKJiM0MzsJdTE2IGRhdGFfb2ZmOwomIzQzOwl1MTYgbmV4dF9vZmY7CiAKLQlkYXRhb2ZmID0gbm9kZS0mZ3Q7dHJlZS0mZ3Q7bm9kZV9zaXplIC0gKHJlYyAmIzQzOyAyKSAqIDI7Ci0JaGZzX2Jub2RlX3JlYWQobm9kZSwgcmV0dmFsLCBkYXRhb2ZmLCA0KTsKJiM0MzsJaWYgKCFoZnNfYnJlY19yZWNvcmRfdmFsaWQobm9kZSwgcmVjKSkgewomIzQzOwkJKm9mZiA9IDA7CiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJfQomIzQzOwomIzQzOwlkYXRhX29mZiA9IG5vZGUtJmd0O3RyZWUtJmd0O25vZGVfc2l6ZSAtIChyZWMgJiM0MzsgMikgKiAyOwomIzQzOwloZnNfYm5vZGVfcmVhZChub2RlLCByZXR2YWwsIGRhdGFfb2ZmLCA0KTsKIAkqb2ZmID0gYmUxNl90b19jcHUocmV0dmFsWzFdKTsKLQlyZXR1cm4gYmUxNl90b19jcHUocmV0dmFsWzBdKSAtICpvZmY7CiYjNDM7CW5leHRfb2ZmID0gYmUxNl90b19jcHUocmV0dmFsWzBdKTsKJiM0MzsJaWYgKCFoZnNfYnJlY19yYW5nZV92YWxpZChub2RlLCAqb2ZmLCBuZXh0X29mZiwgZGF0YV9vZmYpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CXJldHVybiBuZXh0X29mZiAtICpvZmY7CiB9CiAKIC8qIEdldCB0aGUgbGVuZ3RoIG9mIHRoZSBrZXkgZnJvbSBhIGtleWVkIHJlY29yZCAqLwogdTE2IGhmc19icmVjX2tleWxlbihzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MTYgcmVjKQogewotCXUxNiByZXR2YWwsIHJlY29mZjsKJiM0MzsJdTE2IHJldHZhbCwgcmVjb2ZmLCBsZW47CiAKIAlpZiAobm9kZS0mZ3Q7dHlwZSAhPSBIRlNfTk9ERV9JTkRFWCAmYW1wOyZhbXA7IG5vZGUtJmd0O3R5cGUgIT0gSEZTX05PREVfTEVBRikKIAkJcmV0dXJuIDA7CiYjNDM7CWlmICghaGZzX2JyZWNfcmVjb3JkX3ZhbGlkKG5vZGUsIHJlYykpCiYjNDM7CQlyZXR1cm4gMDsKIAogCWlmICgobm9kZS0mZ3Q7dHlwZSA9PSBIRlNfTk9ERV9JTkRFWCkgJmFtcDsmYW1wOwogCSAgICEobm9kZS0mZ3Q7dHJlZS0mZ3Q7YXR0cmlidXRlcyAmYW1wOyBIRlNfVFJFRV9WQVJJRFhLRVlTKSAmYW1wOyZhbXA7CiAJICAgKG5vZGUtJmd0O3RyZWUtJmd0O2NuaWQgIT0gSEZTUExVU19BVFRSX0NOSUQpKSB7CiAJCXJldHZhbCA9IG5vZGUtJmd0O3RyZWUtJmd0O21heF9rZXlfbGVuICYjNDM7IDI7CiAJfSBlbHNlIHsKLQkJcmVjb2ZmID0gaGZzX2Jub2RlX3JlYWRfdTE2KG5vZGUsCi0JCQlub2RlLSZndDt0cmVlLSZndDtub2RlX3NpemUgLSAocmVjICYjNDM7IDEpICogMik7Ci0JCWlmICghcmVjb2ZmKQotCQkJcmV0dXJuIDA7Ci0JCWlmIChyZWNvZmYgJmd0OyBub2RlLSZndDt0cmVlLSZndDtub2RlX3NpemUgLSAyKSB7Ci0JCQlwcl9lcnIoJiMzNDtyZWNvZmYgJWQgdG9vIGxhcmdlXG4mIzM0OywgcmVjb2ZmKTsKJiM0MzsJCWxlbiA9IGhmc19icmVjX2xlbm9mZihub2RlLCByZWMsICZhbXA7cmVjb2ZmKTsKJiM0MzsJCWlmIChsZW4gPT0gMCkKIAkJCXJldHVybiAwOwotCQl9CiAKIAkJcmV0dmFsID0gaGZzX2Jub2RlX3JlYWRfdTE2KG5vZGUsIHJlY29mZikgJiM0MzsgMjsKLQkJaWYgKHJldHZhbCAmZ3Q7IG5vZGUtJmd0O3RyZWUtJmd0O21heF9rZXlfbGVuICYjNDM7IDIpIHsKJiM0MzsJCWlmIChyZXR2YWwgJmd0Oz0gbGVuIHx8IHJldHZhbCAmZ3Q7IG5vZGUtJmd0O3RyZWUtJmd0O21heF9rZXlfbGVuICYjNDM7IDIpIHsKIAkJCXByX2VycigmIzM0O2tleWxlbiAlZCB0b28gbGFyZ2VcbiYjMzQ7LAogCQkJCXJldHZhbCk7CiAJCQlyZXR2YWwgPSAwOwpAQCAtMTg1LDEwICYjNDM7MTkxLDE1IEBAIGludCBoZnNfYnJlY19yZW1vdmUoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkKQogCXRyZWUgPSBmZC0mZ3Q7dHJlZTsKIAlub2RlID0gZmQtJmd0O2Jub2RlOwogYWdhaW46CiYjNDM7CWlmICghaGZzX2JyZWNfcmVjb3JkX3ZhbGlkKG5vZGUsIGZkLSZndDtyZWNvcmQpKQomIzQzOwkJcmV0dXJuIC1FSU87CiYjNDM7CiAJcmVjX29mZiA9IHRyZWUtJmd0O25vZGVfc2l6ZSAtIChmZC0mZ3Q7cmVjb3JkICYjNDM7IDIpICogMjsKIAllbmRfb2ZmID0gdHJlZS0mZ3Q7bm9kZV9zaXplIC0gKG5vZGUtJmd0O251bV9yZWNzICYjNDM7IDEpICogMjsKIAogCWlmIChub2RlLSZndDt0eXBlID09IEhGU19OT0RFX0xFQUYpIHsKJiM0MzsJCWlmICh0cmVlLSZndDtsZWFmX2NvdW50ID09IDApCiYjNDM7CQkJcmV0dXJuIC1FSU87CiAJCXRyZWUtJmd0O2xlYWZfY291bnQtLTsKIAkJbWFya19pbm9kZV9kaXJ0eSh0cmVlLSZndDtpbm9kZSk7CiAJfQpkaWZmIC0tZ2l0IGEvZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmggYi9mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaAppbmRleCBlYzA0YjgyYWQ5Mjc4Ny4uN2EzNDVjNGQxYzA2NDAgMTAwNjQ0Ci0tLSBhL2ZzL2hmc3BsdXMvaGZzcGx1c19mcy5oCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmc3BsdXMvaGZzcGx1c19mcy5oCkBAIC01ODcsNiAmIzQzOzU4Nyw2OCBAQCBib29sIGlzX2Jub2RlX29mZnNldF92YWxpZChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgb2ZmKQogCXJldHVybiBpc192YWxpZDsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUKJiM0Mztib29sIGhmc19ibm9kZV9udW1fcmVjc192YWxpZChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlKQomIzQzO3sKJiM0MzsJdTMyIG5vZGVfc2l6ZTsKJiM0MzsJdTMyIHJlY19vZmZfc2l6ZTsKJiM0MzsJdTMyIHJlY19vZmZfdGFiX3NpemU7CiYjNDM7CXUzMiByZWNfYXJlYV9zaXplOwomIzQzOwomIzQzOwlpZiAoIW5vZGUgfHwgIW5vZGUtJmd0O3RyZWUpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CW5vZGVfc2l6ZSA9IG5vZGUtJmd0O3RyZWUtJmd0O25vZGVfc2l6ZTsKJiM0MzsJcmVjX29mZl9zaXplID0gc2l6ZW9mKF9fYmUxNik7CiYjNDM7CWlmIChub2RlX3NpemUgJmx0OyBzaXplb2Yoc3RydWN0IGhmc19ibm9kZV9kZXNjKSAmIzQzOyByZWNfb2ZmX3NpemUpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CXJlY19hcmVhX3NpemUgPSBub2RlX3NpemUgLSBzaXplb2Yoc3RydWN0IGhmc19ibm9kZV9kZXNjKTsKJiM0MzsJcmVjX29mZl90YWJfc2l6ZSA9ICgodTMyKW5vZGUtJmd0O251bV9yZWNzICYjNDM7IDEpICogcmVjX29mZl9zaXplOwomIzQzOwomIzQzOwlyZXR1cm4gcmVjX29mZl90YWJfc2l6ZSAmbHQ7PSByZWNfYXJlYV9zaXplOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lCiYjNDM7Ym9vbCBoZnNfYnJlY19yZWNvcmRfdmFsaWQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgaW50IHJlY29yZCkKJiM0Mzt7CiYjNDM7CWlmICghaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkKG5vZGUpKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwlpZiAocmVjb3JkICZsdDsgMCkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJlY29yZCAmbHQ7IG5vZGUtJmd0O251bV9yZWNzOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lCiYjNDM7Ym9vbCBoZnNfYnJlY19yYW5nZV92YWxpZChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MTYgb2ZmLCB1MTYgbmV4dF9vZmYsCiYjNDM7CQkJICB1MTYgcmVjX29mZikKJiM0Mzt7CiYjNDM7CXUzMiByZWNfb2ZmX3NpemU7CiYjNDM7CXUzMiByZWNfb2ZmX3RhYl9zaXplOwomIzQzOwl1MzIgcmVjX29mZl90YWJfc3RhcnQ7CiYjNDM7CiYjNDM7CWlmICghbm9kZSB8fCAhbm9kZS0mZ3Q7dHJlZSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJaWYgKG9mZiAmbHQ7IHNpemVvZihzdHJ1Y3QgaGZzX2Jub2RlX2Rlc2MpIHx8IChvZmYgJmFtcDsgMSkpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CWlmIChuZXh0X29mZiAmbHQ7PSBvZmYgfHwKJiM0MzsJCW5leHRfb2ZmICZndDsgbm9kZS0mZ3Q7dHJlZS0mZ3Q7bm9kZV9zaXplIHx8CiYjNDM7CQluZXh0X29mZiAmZ3Q7IHJlY19vZmYgfHwKJiM0MzsJCShuZXh0X29mZiAmYW1wOyAxKSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJcmVjX29mZl9zaXplID0gc2l6ZW9mKF9fYmUxNik7CiYjNDM7CXJlY19vZmZfdGFiX3NpemUgPSAoKHUzMilub2RlLSZndDtudW1fcmVjcyAmIzQzOyAxKSAqIHJlY19vZmZfc2l6ZTsKJiM0MzsJcmVjX29mZl90YWJfc3RhcnQgPSBub2RlLSZndDt0cmVlLSZndDtub2RlX3NpemUgLSByZWNfb2ZmX3RhYl9zaXplOwomIzQzOwlpZiAobmV4dF9vZmYgJmd0OyByZWNfb2ZmX3RhYl9zdGFydCkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7fQomIzQzOwogc3RhdGljIGlubGluZQogdTMyIGNoZWNrX2FuZF9jb3JyZWN0X3JlcXVlc3RlZF9sZW5ndGgoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG9mZiwgdTMyIGxlbikKIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTM6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMwMwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipWYWxpZGF0aW5nIEhGUyYjNDM7IEItVHJlZSBOb2RlIFJlY29yZHMqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiByZXZpZXdpbmcgdGhpcyBwYXRjaCB0aGF0IGZvY3VzZXMgb24gZW5oYW5jaW5nIHRoZSBpbnRlZ3JpdHkgb2Ygb3VyIEhGUyYjNDM7IGltcGxlbWVudGF0aW9uLiBUaGUgY29yZSBvZiB0aGlzIGlzIGFkZGluZyB2YWxpZGF0aW9uIGNoZWNrcyBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBCLXRyZWUgbm9kZSByZWNvcmRzLiBJdCBzZWVtcyB0aGUgYXV0aG9yIGhhcyBzdHJhdGVnaWNhbGx5IG1vZGlmaWVkIGBmcy9oZnNwbHVzL2JmaW5kLmNgLCBgZnMvaGZzcGx1cy9ibm9kZS5jYCwgYGZzL2hmc3BsdXMvYnJlYy5jYCwgYW5kIGBmcy9oZnNwbHVzL2hmc3BsdXNfZnMuaGAgdG8gaW50cm9kdWNlIHRoZXNlIGNydWNpYWwgc2FmZWd1YXJkcy4gSSYjMzk7bSBzZWVpbmcgbmV3IGZ1bmN0aW9ucyBsaWtlIGBoZnNfYm5vZGVfbnVtX3JlY3NfdmFsaWRgLCBgaGZzX2JyZWNfcmVjb3JkX3ZhbGlkYCwgYW5kIGBoZnNfYnJlY19yYW5nZV92YWxpZGAgYmVpbmcgaW1wbGVtZW50ZWQuIFRoaXMgaXMgcHJldHR5IHN0YW5kYXJkOyB0aGVzZSBjaGVja3MgYXJlIHRoZW4gaW50ZWdyYXRlZCB0byB2YWxpZGF0ZSB0aGUgYm91bmRzIHdoZW5ldmVyIGFjY2Vzc2luZyByZWNvcmRzIHdpdGhpbiB0aGUgQi10cmVlLCBlbnN1cmluZyBkYXRhIGFjY2VzcyByZW1haW5zIHdpdGhpbiB0aGUgZXhwZWN0ZWQgcGFyYW1ldGVycy4KClRoaXMgaXMgZnVuZGFtZW50YWxseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhICp2ZXJ5KiBpbXBvcnRhbnQgb25lLiBJdCYjMzk7cyBkZXNpZ25lZCB0byBtaXRpZ2F0ZSB0aGUgcmlza3Mgb2Ygb3V0LW9mLWJvdW5kcyByZWFkcyBhbmQgd3JpdGVzLCBhcyB3ZWxsIGFzIHByZXZlbnQgbG9naWMgZXJyb3JzIHRoYXQgY291bGQgYXJpc2Ugd2hlbiBkZWFsaW5nIHdpdGggcG90ZW50aWFsbHkgY29ycnVwdGVkIEhGUyYjNDM7IGltYWdlcy4gVGhpcyBraW5kIG9mIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBpcyBleGFjdGx5IHdoYXQgd2Ugd2FudCB0byBzZWUuCgpOb3csIGxldCYjMzk7cyBtYWtlIHN1cmUgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGFyZSBjb3JyZWN0LiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYEhGU1BMVVNfRlNgIGlzIGluZGVlZCB0aGUgY29ycmVjdCBjb25maWcgb3B0aW9uIGZvciBlbmFibGluZyBIRlMmIzQzOy4gVGhhdCBzaG91bGQgYmUgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYGZzL2hmc3BsdXMvS2NvbmZpZ2Agb3Igc29tZXdoZXJlIHNpbWlsYXIgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLgoKSSBzZWUgdGhleSYjMzk7dmUgYWxzbyBtb2RpZmllZCBxdWl0ZSBhIGZldyBmdW5jdGlvbnM6IGBfX2hmc19icmVjX2ZpbmRgLCBgaGZzX2JyZWNfZ290b2AsIGBoZnNfYm5vZGVfZHVtcGAsIGBoZnNfYm5vZGVfZmluZGAsIGBoZnNfYnJlY19sZW5vZmZgLCBgaGZzX2JyZWNfa2V5bGVuYCwgYW5kIGBoZnNfYnJlY19yZW1vdmVgLiBUaGlzIGlzIGV4YWN0bHkgdGhlIHNvcnQgb2YgYXVkaXQgSSYjMzk7ZCBleHBlY3QgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEzOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0hGU1BMVVNfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9oZnNwbHVzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaGZzcGx1cy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9oZnNwbHVzL0tjb25maWc6Mjpjb25maWcgSEZTUExVU19GU1xuZnMvaGZzcGx1cy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtBcHBsZSBFeHRlbmRlZCBIRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbmZzL2hmc3BsdXMvS2NvbmZpZz0xOD1jb25maWcgSEZTUExVU19LVU5JVF9URVNUXG5mcy9oZnNwbHVzL0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgSEZTJiM0MzsgZmlsZXN5c3RlbVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG5mcy9oZnNwbHVzL0tjb25maWc6MjA6XHRkZXBlbmRzIG9uIEhGU1BMVVNfRlMgXHUwMDI2XHUwMDI2IEtVTklUXG5mcy9oZnNwbHVzL0tjb25maWctMjEtXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEzOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyNDYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEhGUyYjNDM7IEZpbGVzeXN0ZW0gSW50ZXJhY3Rpb25zKioKCk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGluIHBsYXkgaGVyZSBpcyBgSEZTUExVU19GU2AuIEdpdmVuIHRoYXQgY29udGV4dCwgSSBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIGZ1bmN0aW9uczogYF9faGZzX2JyZWNfZmluZGAsIGBoZnNfYnJlY19nb3RvYCwgYGhmc19ibm9kZV9kdW1wYCwgYGhmc19ibm9kZV9maW5kYCwgYGhmc19icmVjX2xlbm9mZmAsIGBoZnNfYnJlY19rZXlsZW5gLCBhbmQgYGhmc19icmVjX3JlbW92ZWAuIFRoZXNlIGFyZSBhbGwgd2l0aGluIHRoZSBIRlMmIzQzOyBjb250ZXh0IGFuZCwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgYXJlIGFic29sdXRlbHkga2V5IGNvbXBvbmVudHMgd2hlbiBtb3VudGluZyBhbmQgaW50ZXJhY3Rpbmcgd2l0aCBhbiBIRlMmIzQzOyBmaWxlc3lzdGVtLiBUaGV5JiMzOTtyZSBjbGVhcmx5IHJlYWNoYWJsZSBkdXJpbmcgdHlwaWNhbCBmaWxlIHN5c3RlbSBvcGVyYXRpb25zLgoKTXkgcHJpbWFyeSBmb2N1cyBuZWVkcyB0byBiZSBvbjogYF9faGZzX2JyZWNfZmluZGAsIGBoZnNfYnJlY19nb3RvYCwgYGhmc19ibm9kZV9maW5kYCwgYGhmc19icmVjX2xlbm9mZmAsIGBoZnNfYnJlY19rZXlsZW5gLCBhbmQgYGhmc19icmVjX3JlbW92ZWAuIE5vdywgYmVmb3JlIEkgcHJvY2VlZCB3aXRoIGFueSBkZWVwZXIgYW5hbHlzaXMsIEkgcmVhbGx5IG5lZWQgdG8gdGFrZSBhIHF1aWNrIGxvb2sgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgbWlnaHQgaW1wYWN0IHRoaXMuIEdvdHRhIG1ha2Ugc3VyZSBJJiMzOTttIGNvbnNpZGVyaW5nIGFsbCByZWxldmFudCBmYWN0b3JzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBIRlNQTFVTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvaGZzcGx1cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2hmc3BsdXMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvaGZzcGx1cy9LY29uZmlnOjI6Y29uZmlnIEhGU1BMVVNfRlNcbmZzL2hmc3BsdXMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7QXBwbGUgRXh0ZW5kZWQgSEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9oZnNwbHVzL0tjb25maWctMTctXG5mcy9oZnNwbHVzL0tjb25maWc6MTg6Y29uZmlnIEhGU1BMVVNfS1VOSVRfVEVTVFxuZnMvaGZzcGx1cy9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIEhGUyYjNDM7IGZpbGVzeXN0ZW1cJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4NzIKCQkJCQkJCW91dHB1dDogMTQ3CgkJCQkJCQl0aG91Z2h0czogMTU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEhGUyYjNDM7IFBhdGNoKioKCk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGlzIHN0cmFpZ2h0Zm9yd2FyZDogYEhGU1BMVVNfRlNgLiBUaGUgcGF0Y2ggaXRzZWxmIGxvb2tzIHNvbGlkOyBpdCYjMzk7cyBmdW5jdGlvbmFsbHkgc291bmQgYW5kIGFkZHJlc3NlcyBidWdzIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIGNvcnJ1cHRpb24gaW4gSEZTJiM0MzsgaW1hZ2VzLiBUaGlzIGlzIHByZWNpc2VseSB0aGUga2luZCBvZiB0aGluZyB0aGF0IGNhdGNoZXMgbXkgYXR0ZW50aW9uLiBUaGUgY29yZSBvZiB0aGUgZml4IHJldm9sdmVzIGFyb3VuZCBhZGRpbmcgYm91bmRzIGNoZWNraW5nIHRvIGItdHJlZSByZWNvcmRzLgoKR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgcGF0Y2gsIHdpdGggdGhlIGVtcGhhc2lzIG9uIGlucHV0IHZhbGlkYXRpb24gYW5kIG1pdGlnYXRpbmcgaXNzdWVzIGFyaXNpbmcgZnJvbSBwb3RlbnRpYWxseSBtYWxmb3JtZWQgZGF0YSwgZnV6emluZyBpcyBkZWZpbml0ZWx5IHdhcnJhbnRlZCDigJMgYSByZXNvdW5kaW5nICYjMzQ7VHJ1ZSYjMzQ7LgoKTm93LCBsZXQmIzM5O3MgZHJpbGwgZG93biBvbiB0aGUga2V5IHN5bWJvbHMgdG8gdGFyZ2V0IHdpdGggdGhlIGZ1enplci4gTXkgZm9jdXMgd2lsbCBiZSBvbiBgX19oZnNfYnJlY19maW5kYCwgYGhmc19icmVjX2dvdG9gLCBgaGZzX2Jub2RlX2ZpbmRgLCBgaGZzX2JyZWNfbGVub2ZmYCwgYGhmc19icmVjX2tleWxlbmAsIGFuZCBgaGZzX2JyZWNfcmVtb3ZlYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBjZW50cmFsIHRvIGItdHJlZSByZWNvcmQgaGFuZGxpbmcsIGFuZCB0aGVyZWZvcmUsIHRoZXkgYXJlIHRoZSBwcmltZSBjYW5kaWRhdGVzIHRvIGV4cG9zZSBhbnkgdnVsbmVyYWJpbGl0aWVzIHJlbGF0ZWQgdG8gdGhlIG5ldyBib3VuZHMgY2hlY2tzLgoKTXkgcmVhc29uaW5nIGlzIHRoaXM6IHRoZSBwYXRjaCYjMzk7cyBwdXJwb3NlIGlzIHRvIHZhbGlkYXRlIGFuZCBlbnN1cmUgdGhhdCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBsb2dpY2FsIGVycm9ycyBhcmUgcHJldmVudGVkIHdoZW4gcGFyc2luZyBjb3JydXB0ZWQgSEZTJiM0MzsgZmlsZXN5c3RlbSBpbWFnZXMuIEZ1enppbmcsIHNwZWNpZmljYWxseSB3aXRoIGludGVudGlvbmFsbHkgY29ycnVwdGVkIGltYWdlcywgd2lsbCBwcm92aWRlIHRoZSBtb3N0IGRpcmVjdCBhbmQgZWZmZWN0aXZlIG1lYW5zIHRvIHZlcmlmeSB0aGUgaW50ZWdyaXR5IGFuZCBlZmZlY3RpdmVuZXNzIG9mIHRoZXNlIGFkZGVkIGNoZWNrcy4gV2UgbmVlZCB0byB0aHJvdyBldmVyeXRoaW5nIHdlIGNhbiBhdCB0aGVzZSBmdW5jdGlvbnMgdG8gbWFrZSBzdXJlIHRoZSBmaXggaG9sZHMgdXAgdW5kZXIgcHJlc3N1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTM6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU1BMVVNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2hmc19icmVjX2ZpbmQmIzM0OywKICAgICYjMzQ7aGZzX2JyZWNfZ290byYjMzQ7LAogICAgJiMzNDtoZnNfYm5vZGVfZmluZCYjMzQ7LAogICAgJiMzNDtoZnNfYnJlY19sZW5vZmYmIzM0OywKICAgICYjMzQ7aGZzX2JyZWNfa2V5bGVuJiMzNDssCiAgICAmIzM0O2hmc19icmVjX3JlbW92ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBhbmQgdmFsaWRhdGlvbiBmb3IgSEZTJiM0MzsgYi10cmVlIHJlY29yZHMgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBsb2dpYyBlcnJvcnMgd2hlbiBwYXJzaW5nIGNvcnJ1cHRlZCBmaWxlc3lzdGVtIGltYWdlcy4gRnV6emluZyB3aXRoIGNvcnJ1cHRlZCBpbWFnZXMgd2lsbCBoZWxwIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlc2UgY2hlY2tzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtIRlNQTFVTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19oZnNfYnJlY19maW5kJiMzNDssCiAgICAmIzM0O2hmc19icmVjX2dvdG8mIzM0OywKICAgICYjMzQ7aGZzX2Jub2RlX2ZpbmQmIzM0OywKICAgICYjMzQ7aGZzX2JyZWNfbGVub2ZmJiMzNDssCiAgICAmIzM0O2hmc19icmVjX2tleWxlbiYjMzQ7LAogICAgJiMzNDtoZnNfYnJlY19yZW1vdmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgYW5kIHZhbGlkYXRpb24gZm9yIEhGUyYjNDM7IGItdHJlZSByZWNvcmRzIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgbG9naWMgZXJyb3JzIHdoZW4gcGFyc2luZyBjb3JydXB0ZWQgZmlsZXN5c3RlbSBpbWFnZXMuIEZ1enppbmcgd2l0aCBjb3JydXB0ZWQgaW1hZ2VzIHdpbGwgaGVscCB2ZXJpZnkgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZXNlIGNoZWNrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEzOjAyOjUxLjExMTc2NDk5NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NjM3NjE5MzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhGU1BMVVNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2hmc19icmVjX2ZpbmRcIixcbiAgICBcImhmc19icmVjX2dvdG9cIixcbiAgICBcImhmc19ibm9kZV9maW5kXCIsXG4gICAgXCJoZnNfYnJlY19sZW5vZmZcIixcbiAgICBcImhmc19icmVjX2tleWxlblwiLFxuICAgIFwiaGZzX2JyZWNfcmVtb3ZlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgYW5kIHZhbGlkYXRpb24gZm9yIEhGUysgYi10cmVlIHJlY29yZHMgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBsb2dpYyBlcnJvcnMgd2hlbiBwYXJzaW5nIGNvcnJ1cHRlZCBmaWxlc3lzdGVtIGltYWdlcy4gRnV6emluZyB3aXRoIGNvcnJ1cHRlZCBpbWFnZXMgd2lsbCBoZWxwIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlc2UgY2hlY2tzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMzowMjo1MS4xMTE3NzE4NTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3MjEyODc0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDZiYTEwNDc4YzIyYzYxMWJiOWQ4ZDBjOWNmMmQxZjcyZGMxNTlhMzdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMiAxMzowMjo0OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9oZnNwbHVzL2JmaW5kLmMgYi9mcy9oZnNwbHVzL2JmaW5kLmNcXG5pbmRleCA5YTU1ZmE2ZDUyOTQyOS4uMzYzZmFmMjE0YTFjNjUgMTAwNjQ0XFxuLS0tIGEvZnMvaGZzcGx1cy9iZmluZC5jXFxuKysrIGIvZnMvaGZzcGx1cy9iZmluZC5jXFxuQEAgLTEwOCwxNSArMTA4LDI4IEBAIGludCBfX2hmc19icmVjX2ZpbmQoc3RydWN0IGhmc19ibm9kZSAqYm5vZGUsIHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCxcXG4gXFx0aW50IGIsIGU7XFxuIFxcdGludCByZXM7XFxuIFxcbitcXHRmZC1cXHUwMDNlcmVjb3JkID0gLTE7XFxuK1xcdGZkLVxcdTAwM2VrZXlvZmZzZXQgPSAtMTtcXG4rXFx0ZmQtXFx1MDAzZWtleWxlbmd0aCA9IC0xO1xcbitcXHRmZC1cXHUwMDNlZW50cnlvZmZzZXQgPSAtMTtcXG4rXFx0ZmQtXFx1MDAzZWVudHJ5bGVuZ3RoID0gLTE7XFxuK1xcbiBcXHRCVUdfT04oIXJlY19mb3VuZCk7XFxuK1xcdGlmICghaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkKGJub2RlKSkge1xcbitcXHRcXHRyZXMgPSAtRUlPO1xcbitcXHRcXHRnb3RvIGZhaWw7XFxuK1xcdH1cXG4rXFxuIFxcdGIgPSAwO1xcbiBcXHRlID0gYm5vZGUtXFx1MDAzZW51bV9yZWNzIC0gMTtcXG4gXFx0cmVzID0gLUVOT0VOVDtcXG4rXFx0aWYgKGJub2RlLVxcdTAwM2VudW1fcmVjcyA9PSAwKVxcbitcXHRcXHRnb3RvIGZhaWw7XFxuIFxcdGRvIHtcXG4gXFx0XFx0cmVjID0gKGUgKyBiKSAvIDI7XFxuIFxcdFxcdGxlbiA9IGhmc19icmVjX2xlbm9mZihibm9kZSwgcmVjLCBcXHUwMDI2b2ZmKTtcXG4gXFx0XFx0a2V5bGVuID0gaGZzX2JyZWNfa2V5bGVuKGJub2RlLCByZWMpO1xcbi1cXHRcXHRpZiAoa2V5bGVuID09IDApIHtcXG4rXFx0XFx0aWYgKGtleWxlbiA9PSAwIHx8IGtleWxlbiBcXHUwMDNlPSBsZW4pIHtcXG4gXFx0XFx0XFx0cmVzID0gLUVJTlZBTDtcXG4gXFx0XFx0XFx0Z290byBmYWlsO1xcbiBcXHRcXHR9XFxuQEAgLTEzMCw3ICsxNDMsNyBAQCBpbnQgX19oZnNfYnJlY19maW5kKHN0cnVjdCBoZnNfYm5vZGUgKmJub2RlLCBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsXFxuIFxcdGlmIChyZWMgIT0gZSBcXHUwMDI2XFx1MDAyNiBlIFxcdTAwM2U9IDApIHtcXG4gXFx0XFx0bGVuID0gaGZzX2JyZWNfbGVub2ZmKGJub2RlLCBlLCBcXHUwMDI2b2ZmKTtcXG4gXFx0XFx0a2V5bGVuID0gaGZzX2JyZWNfa2V5bGVuKGJub2RlLCBlKTtcXG4tXFx0XFx0aWYgKGtleWxlbiA9PSAwKSB7XFxuK1xcdFxcdGlmIChrZXlsZW4gPT0gMCB8fCBrZXlsZW4gXFx1MDAzZT0gbGVuKSB7XFxuIFxcdFxcdFxcdHJlcyA9IC1FSU5WQUw7XFxuIFxcdFxcdFxcdGdvdG8gZmFpbDtcXG4gXFx0XFx0fVxcbkBAIC0yMzIsNiArMjQ1LDE0IEBAIGludCBoZnNfYnJlY19nb3RvKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgaW50IGNudClcXG4gXFxuIFxcdGJub2RlID0gZmQtXFx1MDAzZWJub2RlO1xcbiBcXHR0cmVlID0gYm5vZGUtXFx1MDAzZXRyZWU7XFxuK1xcdGlmICghaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkKGJub2RlKSkge1xcbitcXHRcXHRyZXMgPSAtRUlPO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbitcXHRpZiAoYm5vZGUtXFx1MDAzZW51bV9yZWNzID09IDApIHtcXG4rXFx0XFx0cmVzID0gLUVOT0VOVDtcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4gXFxuIFxcdGlmIChjbnQgXFx1MDAzYyAwKSB7XFxuIFxcdFxcdGNudCA9IC1jbnQ7XFxuQEAgLTI3NCw3ICsyOTUsNyBAQCBpbnQgaGZzX2JyZWNfZ290byhzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsIGludCBjbnQpXFxuIFxcbiBcXHRsZW4gPSBoZnNfYnJlY19sZW5vZmYoYm5vZGUsIGZkLVxcdTAwM2VyZWNvcmQsIFxcdTAwMjZvZmYpO1xcbiBcXHRrZXlsZW4gPSBoZnNfYnJlY19rZXlsZW4oYm5vZGUsIGZkLVxcdTAwM2VyZWNvcmQpO1xcbi1cXHRpZiAoa2V5bGVuID09IDApIHtcXG4rXFx0aWYgKGtleWxlbiA9PSAwIHx8IGtleWxlbiBcXHUwMDNlPSBsZW4pIHtcXG4gXFx0XFx0cmVzID0gLUVJTlZBTDtcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcdH1cXG5kaWZmIC0tZ2l0IGEvZnMvaGZzcGx1cy9ibm9kZS5jIGIvZnMvaGZzcGx1cy9ibm9kZS5jXFxuaW5kZXggZDA4OGZiN2ViMGRmYTMuLmYxODVjMDEyZDA5MDI2IDEwMDY0NFxcbi0tLSBhL2ZzL2hmc3BsdXMvYm5vZGUuY1xcbisrKyBiL2ZzL2hmc3BsdXMvYm5vZGUuY1xcbkBAIC0zNTIsMTUgKzM1MiwyMiBAQCB2b2lkIGhmc19ibm9kZV9kdW1wKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUpXFxuIFxcdHN0cnVjdCBoZnNfYm5vZGVfZGVzYyBkZXNjO1xcbiBcXHRfX2JlMzIgY25pZDtcXG4gXFx0aW50IGksIG9mZiwga2V5X29mZjtcXG4rXFx0dTE2IG51bV9yZWNzO1xcbiBcXG4gXFx0aGZzX2RiZyhcXFwibm9kZSAlZFxcXFxuXFxcIiwgbm9kZS1cXHUwMDNldGhpcyk7XFxuIFxcdGhmc19ibm9kZV9yZWFkKG5vZGUsIFxcdTAwMjZkZXNjLCAwLCBzaXplb2YoZGVzYykpO1xcbitcXHRudW1fcmVjcyA9IG5vZGUtXFx1MDAzZW51bV9yZWNzO1xcbiBcXHRoZnNfZGJnKFxcXCJuZXh0ICVkLCBwcmV2ICVkLCB0eXBlICVkLCBoZWlnaHQgJWQsIG51bV9yZWNzICVkXFxcXG5cXFwiLFxcbiBcXHRcXHRiZTMyX3RvX2NwdShkZXNjLm5leHQpLCBiZTMyX3RvX2NwdShkZXNjLnByZXYpLFxcbiBcXHRcXHRkZXNjLnR5cGUsIGRlc2MuaGVpZ2h0LCBiZTE2X3RvX2NwdShkZXNjLm51bV9yZWNzKSk7XFxuIFxcbitcXHRpZiAoIWhmc19ibm9kZV9udW1fcmVjc192YWxpZChub2RlKSkge1xcbitcXHRcXHRoZnNfZGJnKFxcXCJpbnZhbGlkIG51bV9yZWNzICV1XFxcXG5cXFwiLCBudW1fcmVjcyk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4gXFx0b2ZmID0gbm9kZS1cXHUwMDNldHJlZS1cXHUwMDNlbm9kZV9zaXplIC0gMjtcXG4tXFx0Zm9yIChpID0gYmUxNl90b19jcHUoZGVzYy5udW1fcmVjcyk7IGkgXFx1MDAzZT0gMDsgb2ZmIC09IDIsIGktLSkge1xcbitcXHRmb3IgKGkgPSBudW1fcmVjczsgaSBcXHUwMDNlPSAwOyBvZmYgLT0gMiwgaS0tKSB7XFxuIFxcdFxcdGtleV9vZmYgPSBoZnNfYm5vZGVfcmVhZF91MTYobm9kZSwgb2ZmKTtcXG4gXFx0XFx0aGZzX2RiZyhcXFwiIGtleV9vZmYgJWRcXFwiLCBrZXlfb2ZmKTtcXG4gXFx0XFx0aWYgKGkgXFx1MDAyNlxcdTAwMjYgbm9kZS1cXHUwMDNldHlwZSA9PSBIRlNfTk9ERV9JTkRFWCkge1xcbkBAIC01NzksNiArNTg2LDkgQEAgc3RydWN0IGhmc19ibm9kZSAqaGZzX2Jub2RlX2ZpbmQoc3RydWN0IGhmc19idHJlZSAqdHJlZSwgdTMyIG51bSlcXG4gXFx0XFx0Z290byBub2RlX2Vycm9yO1xcbiBcXHR9XFxuIFxcbitcXHRpZiAoIWhmc19ibm9kZV9udW1fcmVjc192YWxpZChub2RlKSlcXG4rXFx0XFx0Z290byBub2RlX2Vycm9yO1xcbitcXG4gXFx0cmVjX29mZiA9IHRyZWUtXFx1MDAzZW5vZGVfc2l6ZSAtIDI7XFxuIFxcdG9mZiA9IGhmc19ibm9kZV9yZWFkX3UxNihub2RlLCByZWNfb2ZmKTtcXG4gXFx0aWYgKG9mZiAhPSBzaXplb2Yoc3RydWN0IGhmc19ibm9kZV9kZXNjKSlcXG5AQCAtNTg2LDkgKzU5Niw3IEBAIHN0cnVjdCBoZnNfYm5vZGUgKmhmc19ibm9kZV9maW5kKHN0cnVjdCBoZnNfYnRyZWUgKnRyZWUsIHUzMiBudW0pXFxuIFxcdGZvciAoaSA9IDE7IGkgXFx1MDAzYz0gbm9kZS1cXHUwMDNlbnVtX3JlY3M7IG9mZiA9IG5leHRfb2ZmLCBpKyspIHtcXG4gXFx0XFx0cmVjX29mZiAtPSAyO1xcbiBcXHRcXHRuZXh0X29mZiA9IGhmc19ibm9kZV9yZWFkX3UxNihub2RlLCByZWNfb2ZmKTtcXG4tXFx0XFx0aWYgKG5leHRfb2ZmIFxcdTAwM2M9IG9mZiB8fFxcbi1cXHRcXHQgICAgbmV4dF9vZmYgXFx1MDAzZSB0cmVlLVxcdTAwM2Vub2RlX3NpemUgfHxcXG4tXFx0XFx0ICAgIG5leHRfb2ZmIFxcdTAwMjYgMSlcXG4rXFx0XFx0aWYgKCFoZnNfYnJlY19yYW5nZV92YWxpZChub2RlLCBvZmYsIG5leHRfb2ZmLCByZWNfb2ZmKSlcXG4gXFx0XFx0XFx0Z290byBub2RlX2Vycm9yO1xcbiBcXHRcXHRlbnRyeV9zaXplID0gbmV4dF9vZmYgLSBvZmY7XFxuIFxcdFxcdGlmIChub2RlLVxcdTAwM2V0eXBlICE9IEhGU19OT0RFX0lOREVYIFxcdTAwMjZcXHUwMDI2XFxuZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvYnJlYy5jIGIvZnMvaGZzcGx1cy9icmVjLmNcXG5pbmRleCBlM2RmODkyODQwNzlkYi4uZmUyZTA2MzY3OThjZWMgMTAwNjQ0XFxuLS0tIGEvZnMvaGZzcGx1cy9icmVjLmNcXG4rKysgYi9mcy9oZnNwbHVzL2JyZWMuY1xcbkBAIC0yMCwzOCArMjAsNDQgQEAgc3RhdGljIGludCBoZnNfYnRyZWVfaW5jX2hlaWdodChzdHJ1Y3QgaGZzX2J0cmVlICopO1xcbiB1MTYgaGZzX2JyZWNfbGVub2ZmKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUxNiByZWMsIHUxNiAqb2ZmKVxcbiB7XFxuIFxcdF9fYmUxNiByZXR2YWxbMl07XFxuLVxcdHUxNiBkYXRhb2ZmO1xcbitcXHR1MTYgZGF0YV9vZmY7XFxuK1xcdHUxNiBuZXh0X29mZjtcXG4gXFxuLVxcdGRhdGFvZmYgPSBub2RlLVxcdTAwM2V0cmVlLVxcdTAwM2Vub2RlX3NpemUgLSAocmVjICsgMikgKiAyO1xcbi1cXHRoZnNfYm5vZGVfcmVhZChub2RlLCByZXR2YWwsIGRhdGFvZmYsIDQpO1xcbitcXHRpZiAoIWhmc19icmVjX3JlY29yZF92YWxpZChub2RlLCByZWMpKSB7XFxuK1xcdFxcdCpvZmYgPSAwO1xcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbitcXG4rXFx0ZGF0YV9vZmYgPSBub2RlLVxcdTAwM2V0cmVlLVxcdTAwM2Vub2RlX3NpemUgLSAocmVjICsgMikgKiAyO1xcbitcXHRoZnNfYm5vZGVfcmVhZChub2RlLCByZXR2YWwsIGRhdGFfb2ZmLCA0KTtcXG4gXFx0Km9mZiA9IGJlMTZfdG9fY3B1KHJldHZhbFsxXSk7XFxuLVxcdHJldHVybiBiZTE2X3RvX2NwdShyZXR2YWxbMF0pIC0gKm9mZjtcXG4rXFx0bmV4dF9vZmYgPSBiZTE2X3RvX2NwdShyZXR2YWxbMF0pO1xcbitcXHRpZiAoIWhmc19icmVjX3JhbmdlX3ZhbGlkKG5vZGUsICpvZmYsIG5leHRfb2ZmLCBkYXRhX29mZikpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHRyZXR1cm4gbmV4dF9vZmYgLSAqb2ZmO1xcbiB9XFxuIFxcbiAvKiBHZXQgdGhlIGxlbmd0aCBvZiB0aGUga2V5IGZyb20gYSBrZXllZCByZWNvcmQgKi9cXG4gdTE2IGhmc19icmVjX2tleWxlbihzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MTYgcmVjKVxcbiB7XFxuLVxcdHUxNiByZXR2YWwsIHJlY29mZjtcXG4rXFx0dTE2IHJldHZhbCwgcmVjb2ZmLCBsZW47XFxuIFxcbiBcXHRpZiAobm9kZS1cXHUwMDNldHlwZSAhPSBIRlNfTk9ERV9JTkRFWCBcXHUwMDI2XFx1MDAyNiBub2RlLVxcdTAwM2V0eXBlICE9IEhGU19OT0RFX0xFQUYpXFxuIFxcdFxcdHJldHVybiAwO1xcbitcXHRpZiAoIWhmc19icmVjX3JlY29yZF92YWxpZChub2RlLCByZWMpKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4gXFxuIFxcdGlmICgobm9kZS1cXHUwMDNldHlwZSA9PSBIRlNfTk9ERV9JTkRFWCkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIShub2RlLVxcdTAwM2V0cmVlLVxcdTAwM2VhdHRyaWJ1dGVzIFxcdTAwMjYgSEZTX1RSRUVfVkFSSURYS0VZUykgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgKG5vZGUtXFx1MDAzZXRyZWUtXFx1MDAzZWNuaWQgIT0gSEZTUExVU19BVFRSX0NOSUQpKSB7XFxuIFxcdFxcdHJldHZhbCA9IG5vZGUtXFx1MDAzZXRyZWUtXFx1MDAzZW1heF9rZXlfbGVuICsgMjtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0cmVjb2ZmID0gaGZzX2Jub2RlX3JlYWRfdTE2KG5vZGUsXFxuLVxcdFxcdFxcdG5vZGUtXFx1MDAzZXRyZWUtXFx1MDAzZW5vZGVfc2l6ZSAtIChyZWMgKyAxKSAqIDIpO1xcbi1cXHRcXHRpZiAoIXJlY29mZilcXG4tXFx0XFx0XFx0cmV0dXJuIDA7XFxuLVxcdFxcdGlmIChyZWNvZmYgXFx1MDAzZSBub2RlLVxcdTAwM2V0cmVlLVxcdTAwM2Vub2RlX3NpemUgLSAyKSB7XFxuLVxcdFxcdFxcdHByX2VycihcXFwicmVjb2ZmICVkIHRvbyBsYXJnZVxcXFxuXFxcIiwgcmVjb2ZmKTtcXG4rXFx0XFx0bGVuID0gaGZzX2JyZWNfbGVub2ZmKG5vZGUsIHJlYywgXFx1MDAyNnJlY29mZik7XFxuK1xcdFxcdGlmIChsZW4gPT0gMClcXG4gXFx0XFx0XFx0cmV0dXJuIDA7XFxuLVxcdFxcdH1cXG4gXFxuIFxcdFxcdHJldHZhbCA9IGhmc19ibm9kZV9yZWFkX3UxNihub2RlLCByZWNvZmYpICsgMjtcXG4tXFx0XFx0aWYgKHJldHZhbCBcXHUwMDNlIG5vZGUtXFx1MDAzZXRyZWUtXFx1MDAzZW1heF9rZXlfbGVuICsgMikge1xcbitcXHRcXHRpZiAocmV0dmFsIFxcdTAwM2U9IGxlbiB8fCByZXR2YWwgXFx1MDAzZSBub2RlLVxcdTAwM2V0cmVlLVxcdTAwM2VtYXhfa2V5X2xlbiArIDIpIHtcXG4gXFx0XFx0XFx0cHJfZXJyKFxcXCJrZXlsZW4gJWQgdG9vIGxhcmdlXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHRyZXR2YWwpO1xcbiBcXHRcXHRcXHRyZXR2YWwgPSAwO1xcbkBAIC0xODUsMTAgKzE5MSwxNSBAQCBpbnQgaGZzX2JyZWNfcmVtb3ZlKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZClcXG4gXFx0dHJlZSA9IGZkLVxcdTAwM2V0cmVlO1xcbiBcXHRub2RlID0gZmQtXFx1MDAzZWJub2RlO1xcbiBhZ2FpbjpcXG4rXFx0aWYgKCFoZnNfYnJlY19yZWNvcmRfdmFsaWQobm9kZSwgZmQtXFx1MDAzZXJlY29yZCkpXFxuK1xcdFxcdHJldHVybiAtRUlPO1xcbitcXG4gXFx0cmVjX29mZiA9IHRyZWUtXFx1MDAzZW5vZGVfc2l6ZSAtIChmZC1cXHUwMDNlcmVjb3JkICsgMikgKiAyO1xcbiBcXHRlbmRfb2ZmID0gdHJlZS1cXHUwMDNlbm9kZV9zaXplIC0gKG5vZGUtXFx1MDAzZW51bV9yZWNzICsgMSkgKiAyO1xcbiBcXG4gXFx0aWYgKG5vZGUtXFx1MDAzZXR5cGUgPT0gSEZTX05PREVfTEVBRikge1xcbitcXHRcXHRpZiAodHJlZS1cXHUwMDNlbGVhZl9jb3VudCA9PSAwKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4gXFx0XFx0dHJlZS1cXHUwMDNlbGVhZl9jb3VudC0tO1xcbiBcXHRcXHRtYXJrX2lub2RlX2RpcnR5KHRyZWUtXFx1MDAzZWlub2RlKTtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaCBiL2ZzL2hmc3BsdXMvaGZzcGx1c19mcy5oXFxuaW5kZXggZWMwNGI4MmFkOTI3ODcuLjdhMzQ1YzRkMWMwNjQwIDEwMDY0NFxcbi0tLSBhL2ZzL2hmc3BsdXMvaGZzcGx1c19mcy5oXFxuKysrIGIvZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmhcXG5AQCAtNTg3LDYgKzU4Nyw2OCBAQCBib29sIGlzX2Jub2RlX29mZnNldF92YWxpZChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgb2ZmKVxcbiBcXHRyZXR1cm4gaXNfdmFsaWQ7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbmxpbmVcXG4rYm9vbCBoZnNfYm5vZGVfbnVtX3JlY3NfdmFsaWQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSlcXG4re1xcbitcXHR1MzIgbm9kZV9zaXplO1xcbitcXHR1MzIgcmVjX29mZl9zaXplO1xcbitcXHR1MzIgcmVjX29mZl90YWJfc2l6ZTtcXG4rXFx0dTMyIHJlY19hcmVhX3NpemU7XFxuK1xcbitcXHRpZiAoIW5vZGUgfHwgIW5vZGUtXFx1MDAzZXRyZWUpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdG5vZGVfc2l6ZSA9IG5vZGUtXFx1MDAzZXRyZWUtXFx1MDAzZW5vZGVfc2l6ZTtcXG4rXFx0cmVjX29mZl9zaXplID0gc2l6ZW9mKF9fYmUxNik7XFxuK1xcdGlmIChub2RlX3NpemUgXFx1MDAzYyBzaXplb2Yoc3RydWN0IGhmc19ibm9kZV9kZXNjKSArIHJlY19vZmZfc2l6ZSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0cmVjX2FyZWFfc2l6ZSA9IG5vZGVfc2l6ZSAtIHNpemVvZihzdHJ1Y3QgaGZzX2Jub2RlX2Rlc2MpO1xcbitcXHRyZWNfb2ZmX3RhYl9zaXplID0gKCh1MzIpbm9kZS1cXHUwMDNlbnVtX3JlY3MgKyAxKSAqIHJlY19vZmZfc2l6ZTtcXG4rXFxuK1xcdHJldHVybiByZWNfb2ZmX3RhYl9zaXplIFxcdTAwM2M9IHJlY19hcmVhX3NpemU7XFxuK31cXG4rXFxuK3N0YXRpYyBpbmxpbmVcXG4rYm9vbCBoZnNfYnJlY19yZWNvcmRfdmFsaWQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgaW50IHJlY29yZClcXG4re1xcbitcXHRpZiAoIWhmc19ibm9kZV9udW1fcmVjc192YWxpZChub2RlKSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHRpZiAocmVjb3JkIFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0cmV0dXJuIHJlY29yZCBcXHUwMDNjIG5vZGUtXFx1MDAzZW51bV9yZWNzO1xcbit9XFxuK1xcbitzdGF0aWMgaW5saW5lXFxuK2Jvb2wgaGZzX2JyZWNfcmFuZ2VfdmFsaWQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTE2IG9mZiwgdTE2IG5leHRfb2ZmLFxcbitcXHRcXHRcXHQgIHUxNiByZWNfb2ZmKVxcbit7XFxuK1xcdHUzMiByZWNfb2ZmX3NpemU7XFxuK1xcdHUzMiByZWNfb2ZmX3RhYl9zaXplO1xcbitcXHR1MzIgcmVjX29mZl90YWJfc3RhcnQ7XFxuK1xcbitcXHRpZiAoIW5vZGUgfHwgIW5vZGUtXFx1MDAzZXRyZWUpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdGlmIChvZmYgXFx1MDAzYyBzaXplb2Yoc3RydWN0IGhmc19ibm9kZV9kZXNjKSB8fCAob2ZmIFxcdTAwMjYgMSkpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdGlmIChuZXh0X29mZiBcXHUwMDNjPSBvZmYgfHxcXG4rXFx0XFx0bmV4dF9vZmYgXFx1MDAzZSBub2RlLVxcdTAwM2V0cmVlLVxcdTAwM2Vub2RlX3NpemUgfHxcXG4rXFx0XFx0bmV4dF9vZmYgXFx1MDAzZSByZWNfb2ZmIHx8XFxuK1xcdFxcdChuZXh0X29mZiBcXHUwMDI2IDEpKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRyZWNfb2ZmX3NpemUgPSBzaXplb2YoX19iZTE2KTtcXG4rXFx0cmVjX29mZl90YWJfc2l6ZSA9ICgodTMyKW5vZGUtXFx1MDAzZW51bV9yZWNzICsgMSkgKiByZWNfb2ZmX3NpemU7XFxuK1xcdHJlY19vZmZfdGFiX3N0YXJ0ID0gbm9kZS1cXHUwMDNldHJlZS1cXHUwMDNlbm9kZV9zaXplIC0gcmVjX29mZl90YWJfc2l6ZTtcXG4rXFx0aWYgKG5leHRfb2ZmIFxcdTAwM2UgcmVjX29mZl90YWJfc3RhcnQpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdHJldHVybiB0cnVlO1xcbit9XFxuK1xcbiBzdGF0aWMgaW5saW5lXFxuIHUzMiBjaGVja19hbmRfY29ycmVjdF9yZXF1ZXN0ZWRfbGVuZ3RoKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBvZmYsIHUzMiBsZW4pXFxuIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTM6MDI6NTEuODg1MDEwNDk3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzg2NDM1OTEzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIRlNQTFVTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19oZnNfYnJlY19maW5kXCIsXG4gICAgXCJoZnNfYnJlY19nb3RvXCIsXG4gICAgXCJoZnNfYm5vZGVfZmluZFwiLFxuICAgIFwiaGZzX2JyZWNfbGVub2ZmXCIsXG4gICAgXCJoZnNfYnJlY19rZXlsZW5cIixcbiAgICBcImhmc19icmVjX3JlbW92ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIGFuZCB2YWxpZGF0aW9uIGZvciBIRlMrIGItdHJlZSByZWNvcmRzIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgbG9naWMgZXJyb3JzIHdoZW4gcGFyc2luZyBjb3JydXB0ZWQgZmlsZXN5c3RlbSBpbWFnZXMuIEZ1enppbmcgd2l0aCBjb3JydXB0ZWQgaW1hZ2VzIHdpbGwgaGVscCB2ZXJpZnkgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZXNlIGNoZWNrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2YmExMDQ3OGMyMmM2MTFiYjlkOGQwYzljZjJkMWY3MmRjMTU5YTM3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAxMzowMjo0OSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvYmZpbmQuYyBiL2ZzL2hmc3BsdXMvYmZpbmQuY1xuaW5kZXggOWE1NWZhNmQ1Mjk0MjkuLjM2M2ZhZjIxNGExYzY1IDEwMDY0NFxuLS0tIGEvZnMvaGZzcGx1cy9iZmluZC5jXG4rKysgYi9mcy9oZnNwbHVzL2JmaW5kLmNcbkBAIC0xMDgsMTUgKzEwOCwyOCBAQCBpbnQgX19oZnNfYnJlY19maW5kKHN0cnVjdCBoZnNfYm5vZGUgKmJub2RlLCBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsXG4gXHRpbnQgYiwgZTtcbiBcdGludCByZXM7XG4gXG4rXHRmZC1cdTAwM2VyZWNvcmQgPSAtMTtcbitcdGZkLVx1MDAzZWtleW9mZnNldCA9IC0xO1xuK1x0ZmQtXHUwMDNla2V5bGVuZ3RoID0gLTE7XG4rXHRmZC1cdTAwM2VlbnRyeW9mZnNldCA9IC0xO1xuK1x0ZmQtXHUwMDNlZW50cnlsZW5ndGggPSAtMTtcbitcbiBcdEJVR19PTighcmVjX2ZvdW5kKTtcbitcdGlmICghaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkKGJub2RlKSkge1xuK1x0XHRyZXMgPSAtRUlPO1xuK1x0XHRnb3RvIGZhaWw7XG4rXHR9XG4rXG4gXHRiID0gMDtcbiBcdGUgPSBibm9kZS1cdTAwM2VudW1fcmVjcyAtIDE7XG4gXHRyZXMgPSAtRU5PRU5UO1xuK1x0aWYgKGJub2RlLVx1MDAzZW51bV9yZWNzID09IDApXG4rXHRcdGdvdG8gZmFpbDtcbiBcdGRvIHtcbiBcdFx0cmVjID0gKGUgKyBiKSAvIDI7XG4gXHRcdGxlbiA9IGhmc19icmVjX2xlbm9mZihibm9kZSwgcmVjLCBcdTAwMjZvZmYpO1xuIFx0XHRrZXlsZW4gPSBoZnNfYnJlY19rZXlsZW4oYm5vZGUsIHJlYyk7XG4tXHRcdGlmIChrZXlsZW4gPT0gMCkge1xuK1x0XHRpZiAoa2V5bGVuID09IDAgfHwga2V5bGVuIFx1MDAzZT0gbGVuKSB7XG4gXHRcdFx0cmVzID0gLUVJTlZBTDtcbiBcdFx0XHRnb3RvIGZhaWw7XG4gXHRcdH1cbkBAIC0xMzAsNyArMTQzLDcgQEAgaW50IF9faGZzX2JyZWNfZmluZChzdHJ1Y3QgaGZzX2Jub2RlICpibm9kZSwgc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLFxuIFx0aWYgKHJlYyAhPSBlIFx1MDAyNlx1MDAyNiBlIFx1MDAzZT0gMCkge1xuIFx0XHRsZW4gPSBoZnNfYnJlY19sZW5vZmYoYm5vZGUsIGUsIFx1MDAyNm9mZik7XG4gXHRcdGtleWxlbiA9IGhmc19icmVjX2tleWxlbihibm9kZSwgZSk7XG4tXHRcdGlmIChrZXlsZW4gPT0gMCkge1xuK1x0XHRpZiAoa2V5bGVuID09IDAgfHwga2V5bGVuIFx1MDAzZT0gbGVuKSB7XG4gXHRcdFx0cmVzID0gLUVJTlZBTDtcbiBcdFx0XHRnb3RvIGZhaWw7XG4gXHRcdH1cbkBAIC0yMzIsNiArMjQ1LDE0IEBAIGludCBoZnNfYnJlY19nb3RvKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgaW50IGNudClcbiBcbiBcdGJub2RlID0gZmQtXHUwMDNlYm5vZGU7XG4gXHR0cmVlID0gYm5vZGUtXHUwMDNldHJlZTtcbitcdGlmICghaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkKGJub2RlKSkge1xuK1x0XHRyZXMgPSAtRUlPO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcdGlmIChibm9kZS1cdTAwM2VudW1fcmVjcyA9PSAwKSB7XG4rXHRcdHJlcyA9IC1FTk9FTlQ7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fVxuIFxuIFx0aWYgKGNudCBcdTAwM2MgMCkge1xuIFx0XHRjbnQgPSAtY250O1xuQEAgLTI3NCw3ICsyOTUsNyBAQCBpbnQgaGZzX2JyZWNfZ290byhzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsIGludCBjbnQpXG4gXG4gXHRsZW4gPSBoZnNfYnJlY19sZW5vZmYoYm5vZGUsIGZkLVx1MDAzZXJlY29yZCwgXHUwMDI2b2ZmKTtcbiBcdGtleWxlbiA9IGhmc19icmVjX2tleWxlbihibm9kZSwgZmQtXHUwMDNlcmVjb3JkKTtcbi1cdGlmIChrZXlsZW4gPT0gMCkge1xuK1x0aWYgKGtleWxlbiA9PSAwIHx8IGtleWxlbiBcdTAwM2U9IGxlbikge1xuIFx0XHRyZXMgPSAtRUlOVkFMO1xuIFx0XHRnb3RvIG91dDtcbiBcdH1cbmRpZmYgLS1naXQgYS9mcy9oZnNwbHVzL2Jub2RlLmMgYi9mcy9oZnNwbHVzL2Jub2RlLmNcbmluZGV4IGQwODhmYjdlYjBkZmEzLi5mMTg1YzAxMmQwOTAyNiAxMDA2NDRcbi0tLSBhL2ZzL2hmc3BsdXMvYm5vZGUuY1xuKysrIGIvZnMvaGZzcGx1cy9ibm9kZS5jXG5AQCAtMzUyLDE1ICszNTIsMjIgQEAgdm9pZCBoZnNfYm5vZGVfZHVtcChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlKVxuIFx0c3RydWN0IGhmc19ibm9kZV9kZXNjIGRlc2M7XG4gXHRfX2JlMzIgY25pZDtcbiBcdGludCBpLCBvZmYsIGtleV9vZmY7XG4rXHR1MTYgbnVtX3JlY3M7XG4gXG4gXHRoZnNfZGJnKFwibm9kZSAlZFxcblwiLCBub2RlLVx1MDAzZXRoaXMpO1xuIFx0aGZzX2Jub2RlX3JlYWQobm9kZSwgXHUwMDI2ZGVzYywgMCwgc2l6ZW9mKGRlc2MpKTtcbitcdG51bV9yZWNzID0gbm9kZS1cdTAwM2VudW1fcmVjcztcbiBcdGhmc19kYmcoXCJuZXh0ICVkLCBwcmV2ICVkLCB0eXBlICVkLCBoZWlnaHQgJWQsIG51bV9yZWNzICVkXFxuXCIsXG4gXHRcdGJlMzJfdG9fY3B1KGRlc2MubmV4dCksIGJlMzJfdG9fY3B1KGRlc2MucHJldiksXG4gXHRcdGRlc2MudHlwZSwgZGVzYy5oZWlnaHQsIGJlMTZfdG9fY3B1KGRlc2MubnVtX3JlY3MpKTtcbiBcbitcdGlmICghaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkKG5vZGUpKSB7XG4rXHRcdGhmc19kYmcoXCJpbnZhbGlkIG51bV9yZWNzICV1XFxuXCIsIG51bV9yZWNzKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuIFx0b2ZmID0gbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZSAtIDI7XG4tXHRmb3IgKGkgPSBiZTE2X3RvX2NwdShkZXNjLm51bV9yZWNzKTsgaSBcdTAwM2U9IDA7IG9mZiAtPSAyLCBpLS0pIHtcbitcdGZvciAoaSA9IG51bV9yZWNzOyBpIFx1MDAzZT0gMDsgb2ZmIC09IDIsIGktLSkge1xuIFx0XHRrZXlfb2ZmID0gaGZzX2Jub2RlX3JlYWRfdTE2KG5vZGUsIG9mZik7XG4gXHRcdGhmc19kYmcoXCIga2V5X29mZiAlZFwiLCBrZXlfb2ZmKTtcbiBcdFx0aWYgKGkgXHUwMDI2XHUwMDI2IG5vZGUtXHUwMDNldHlwZSA9PSBIRlNfTk9ERV9JTkRFWCkge1xuQEAgLTU3OSw2ICs1ODYsOSBAQCBzdHJ1Y3QgaGZzX2Jub2RlICpoZnNfYm5vZGVfZmluZChzdHJ1Y3QgaGZzX2J0cmVlICp0cmVlLCB1MzIgbnVtKVxuIFx0XHRnb3RvIG5vZGVfZXJyb3I7XG4gXHR9XG4gXG4rXHRpZiAoIWhmc19ibm9kZV9udW1fcmVjc192YWxpZChub2RlKSlcbitcdFx0Z290byBub2RlX2Vycm9yO1xuK1xuIFx0cmVjX29mZiA9IHRyZWUtXHUwMDNlbm9kZV9zaXplIC0gMjtcbiBcdG9mZiA9IGhmc19ibm9kZV9yZWFkX3UxNihub2RlLCByZWNfb2ZmKTtcbiBcdGlmIChvZmYgIT0gc2l6ZW9mKHN0cnVjdCBoZnNfYm5vZGVfZGVzYykpXG5AQCAtNTg2LDkgKzU5Niw3IEBAIHN0cnVjdCBoZnNfYm5vZGUgKmhmc19ibm9kZV9maW5kKHN0cnVjdCBoZnNfYnRyZWUgKnRyZWUsIHUzMiBudW0pXG4gXHRmb3IgKGkgPSAxOyBpIFx1MDAzYz0gbm9kZS1cdTAwM2VudW1fcmVjczsgb2ZmID0gbmV4dF9vZmYsIGkrKykge1xuIFx0XHRyZWNfb2ZmIC09IDI7XG4gXHRcdG5leHRfb2ZmID0gaGZzX2Jub2RlX3JlYWRfdTE2KG5vZGUsIHJlY19vZmYpO1xuLVx0XHRpZiAobmV4dF9vZmYgXHUwMDNjPSBvZmYgfHxcbi1cdFx0ICAgIG5leHRfb2ZmIFx1MDAzZSB0cmVlLVx1MDAzZW5vZGVfc2l6ZSB8fFxuLVx0XHQgICAgbmV4dF9vZmYgXHUwMDI2IDEpXG4rXHRcdGlmICghaGZzX2JyZWNfcmFuZ2VfdmFsaWQobm9kZSwgb2ZmLCBuZXh0X29mZiwgcmVjX29mZikpXG4gXHRcdFx0Z290byBub2RlX2Vycm9yO1xuIFx0XHRlbnRyeV9zaXplID0gbmV4dF9vZmYgLSBvZmY7XG4gXHRcdGlmIChub2RlLVx1MDAzZXR5cGUgIT0gSEZTX05PREVfSU5ERVggXHUwMDI2XHUwMDI2XG5kaWZmIC0tZ2l0IGEvZnMvaGZzcGx1cy9icmVjLmMgYi9mcy9oZnNwbHVzL2JyZWMuY1xuaW5kZXggZTNkZjg5Mjg0MDc5ZGIuLmZlMmUwNjM2Nzk4Y2VjIDEwMDY0NFxuLS0tIGEvZnMvaGZzcGx1cy9icmVjLmNcbisrKyBiL2ZzL2hmc3BsdXMvYnJlYy5jXG5AQCAtMjAsMzggKzIwLDQ0IEBAIHN0YXRpYyBpbnQgaGZzX2J0cmVlX2luY19oZWlnaHQoc3RydWN0IGhmc19idHJlZSAqKTtcbiB1MTYgaGZzX2JyZWNfbGVub2ZmKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUxNiByZWMsIHUxNiAqb2ZmKVxuIHtcbiBcdF9fYmUxNiByZXR2YWxbMl07XG4tXHR1MTYgZGF0YW9mZjtcbitcdHUxNiBkYXRhX29mZjtcbitcdHUxNiBuZXh0X29mZjtcbiBcbi1cdGRhdGFvZmYgPSBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplIC0gKHJlYyArIDIpICogMjtcbi1cdGhmc19ibm9kZV9yZWFkKG5vZGUsIHJldHZhbCwgZGF0YW9mZiwgNCk7XG4rXHRpZiAoIWhmc19icmVjX3JlY29yZF92YWxpZChub2RlLCByZWMpKSB7XG4rXHRcdCpvZmYgPSAwO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbitcbitcdGRhdGFfb2ZmID0gbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZSAtIChyZWMgKyAyKSAqIDI7XG4rXHRoZnNfYm5vZGVfcmVhZChub2RlLCByZXR2YWwsIGRhdGFfb2ZmLCA0KTtcbiBcdCpvZmYgPSBiZTE2X3RvX2NwdShyZXR2YWxbMV0pO1xuLVx0cmV0dXJuIGJlMTZfdG9fY3B1KHJldHZhbFswXSkgLSAqb2ZmO1xuK1x0bmV4dF9vZmYgPSBiZTE2X3RvX2NwdShyZXR2YWxbMF0pO1xuK1x0aWYgKCFoZnNfYnJlY19yYW5nZV92YWxpZChub2RlLCAqb2ZmLCBuZXh0X29mZiwgZGF0YV9vZmYpKVxuK1x0XHRyZXR1cm4gMDtcbitcdHJldHVybiBuZXh0X29mZiAtICpvZmY7XG4gfVxuIFxuIC8qIEdldCB0aGUgbGVuZ3RoIG9mIHRoZSBrZXkgZnJvbSBhIGtleWVkIHJlY29yZCAqL1xuIHUxNiBoZnNfYnJlY19rZXlsZW4oc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTE2IHJlYylcbiB7XG4tXHR1MTYgcmV0dmFsLCByZWNvZmY7XG4rXHR1MTYgcmV0dmFsLCByZWNvZmYsIGxlbjtcbiBcbiBcdGlmIChub2RlLVx1MDAzZXR5cGUgIT0gSEZTX05PREVfSU5ERVggXHUwMDI2XHUwMDI2IG5vZGUtXHUwMDNldHlwZSAhPSBIRlNfTk9ERV9MRUFGKVxuIFx0XHRyZXR1cm4gMDtcbitcdGlmICghaGZzX2JyZWNfcmVjb3JkX3ZhbGlkKG5vZGUsIHJlYykpXG4rXHRcdHJldHVybiAwO1xuIFxuIFx0aWYgKChub2RlLVx1MDAzZXR5cGUgPT0gSEZTX05PREVfSU5ERVgpIFx1MDAyNlx1MDAyNlxuIFx0ICAgIShub2RlLVx1MDAzZXRyZWUtXHUwMDNlYXR0cmlidXRlcyBcdTAwMjYgSEZTX1RSRUVfVkFSSURYS0VZUykgXHUwMDI2XHUwMDI2XG4gXHQgICAobm9kZS1cdTAwM2V0cmVlLVx1MDAzZWNuaWQgIT0gSEZTUExVU19BVFRSX0NOSUQpKSB7XG4gXHRcdHJldHZhbCA9IG5vZGUtXHUwMDNldHJlZS1cdTAwM2VtYXhfa2V5X2xlbiArIDI7XG4gXHR9IGVsc2Uge1xuLVx0XHRyZWNvZmYgPSBoZnNfYm5vZGVfcmVhZF91MTYobm9kZSxcbi1cdFx0XHRub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplIC0gKHJlYyArIDEpICogMik7XG4tXHRcdGlmICghcmVjb2ZmKVxuLVx0XHRcdHJldHVybiAwO1xuLVx0XHRpZiAocmVjb2ZmIFx1MDAzZSBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplIC0gMikge1xuLVx0XHRcdHByX2VycihcInJlY29mZiAlZCB0b28gbGFyZ2VcXG5cIiwgcmVjb2ZmKTtcbitcdFx0bGVuID0gaGZzX2JyZWNfbGVub2ZmKG5vZGUsIHJlYywgXHUwMDI2cmVjb2ZmKTtcbitcdFx0aWYgKGxlbiA9PSAwKVxuIFx0XHRcdHJldHVybiAwO1xuLVx0XHR9XG4gXG4gXHRcdHJldHZhbCA9IGhmc19ibm9kZV9yZWFkX3UxNihub2RlLCByZWNvZmYpICsgMjtcbi1cdFx0aWYgKHJldHZhbCBcdTAwM2Ugbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW1heF9rZXlfbGVuICsgMikge1xuK1x0XHRpZiAocmV0dmFsIFx1MDAzZT0gbGVuIHx8IHJldHZhbCBcdTAwM2Ugbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW1heF9rZXlfbGVuICsgMikge1xuIFx0XHRcdHByX2VycihcImtleWxlbiAlZCB0b28gbGFyZ2VcXG5cIixcbiBcdFx0XHRcdHJldHZhbCk7XG4gXHRcdFx0cmV0dmFsID0gMDtcbkBAIC0xODUsMTAgKzE5MSwxNSBAQCBpbnQgaGZzX2JyZWNfcmVtb3ZlKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZClcbiBcdHRyZWUgPSBmZC1cdTAwM2V0cmVlO1xuIFx0bm9kZSA9IGZkLVx1MDAzZWJub2RlO1xuIGFnYWluOlxuK1x0aWYgKCFoZnNfYnJlY19yZWNvcmRfdmFsaWQobm9kZSwgZmQtXHUwMDNlcmVjb3JkKSlcbitcdFx0cmV0dXJuIC1FSU87XG4rXG4gXHRyZWNfb2ZmID0gdHJlZS1cdTAwM2Vub2RlX3NpemUgLSAoZmQtXHUwMDNlcmVjb3JkICsgMikgKiAyO1xuIFx0ZW5kX29mZiA9IHRyZWUtXHUwMDNlbm9kZV9zaXplIC0gKG5vZGUtXHUwMDNlbnVtX3JlY3MgKyAxKSAqIDI7XG4gXG4gXHRpZiAobm9kZS1cdTAwM2V0eXBlID09IEhGU19OT0RFX0xFQUYpIHtcbitcdFx0aWYgKHRyZWUtXHUwMDNlbGVhZl9jb3VudCA9PSAwKVxuK1x0XHRcdHJldHVybiAtRUlPO1xuIFx0XHR0cmVlLVx1MDAzZWxlYWZfY291bnQtLTtcbiBcdFx0bWFya19pbm9kZV9kaXJ0eSh0cmVlLVx1MDAzZWlub2RlKTtcbiBcdH1cbmRpZmYgLS1naXQgYS9mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaCBiL2ZzL2hmc3BsdXMvaGZzcGx1c19mcy5oXG5pbmRleCBlYzA0YjgyYWQ5Mjc4Ny4uN2EzNDVjNGQxYzA2NDAgMTAwNjQ0XG4tLS0gYS9mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaFxuKysrIGIvZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmhcbkBAIC01ODcsNiArNTg3LDY4IEBAIGJvb2wgaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBvZmYpXG4gXHRyZXR1cm4gaXNfdmFsaWQ7XG4gfVxuIFxuK3N0YXRpYyBpbmxpbmVcbitib29sIGhmc19ibm9kZV9udW1fcmVjc192YWxpZChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlKVxuK3tcbitcdHUzMiBub2RlX3NpemU7XG4rXHR1MzIgcmVjX29mZl9zaXplO1xuK1x0dTMyIHJlY19vZmZfdGFiX3NpemU7XG4rXHR1MzIgcmVjX2FyZWFfc2l6ZTtcbitcbitcdGlmICghbm9kZSB8fCAhbm9kZS1cdTAwM2V0cmVlKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRub2RlX3NpemUgPSBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplO1xuK1x0cmVjX29mZl9zaXplID0gc2l6ZW9mKF9fYmUxNik7XG4rXHRpZiAobm9kZV9zaXplIFx1MDAzYyBzaXplb2Yoc3RydWN0IGhmc19ibm9kZV9kZXNjKSArIHJlY19vZmZfc2l6ZSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0cmVjX2FyZWFfc2l6ZSA9IG5vZGVfc2l6ZSAtIHNpemVvZihzdHJ1Y3QgaGZzX2Jub2RlX2Rlc2MpO1xuK1x0cmVjX29mZl90YWJfc2l6ZSA9ICgodTMyKW5vZGUtXHUwMDNlbnVtX3JlY3MgKyAxKSAqIHJlY19vZmZfc2l6ZTtcbitcbitcdHJldHVybiByZWNfb2ZmX3RhYl9zaXplIFx1MDAzYz0gcmVjX2FyZWFfc2l6ZTtcbit9XG4rXG4rc3RhdGljIGlubGluZVxuK2Jvb2wgaGZzX2JyZWNfcmVjb3JkX3ZhbGlkKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIGludCByZWNvcmQpXG4re1xuK1x0aWYgKCFoZnNfYm5vZGVfbnVtX3JlY3NfdmFsaWQobm9kZSkpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcdGlmIChyZWNvcmQgXHUwMDNjIDApXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdHJldHVybiByZWNvcmQgXHUwMDNjIG5vZGUtXHUwMDNlbnVtX3JlY3M7XG4rfVxuK1xuK3N0YXRpYyBpbmxpbmVcbitib29sIGhmc19icmVjX3JhbmdlX3ZhbGlkKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUxNiBvZmYsIHUxNiBuZXh0X29mZixcbitcdFx0XHQgIHUxNiByZWNfb2ZmKVxuK3tcbitcdHUzMiByZWNfb2ZmX3NpemU7XG4rXHR1MzIgcmVjX29mZl90YWJfc2l6ZTtcbitcdHUzMiByZWNfb2ZmX3RhYl9zdGFydDtcbitcbitcdGlmICghbm9kZSB8fCAhbm9kZS1cdTAwM2V0cmVlKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRpZiAob2ZmIFx1MDAzYyBzaXplb2Yoc3RydWN0IGhmc19ibm9kZV9kZXNjKSB8fCAob2ZmIFx1MDAyNiAxKSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0aWYgKG5leHRfb2ZmIFx1MDAzYz0gb2ZmIHx8XG4rXHRcdG5leHRfb2ZmIFx1MDAzZSBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplIHx8XG4rXHRcdG5leHRfb2ZmIFx1MDAzZSByZWNfb2ZmIHx8XG4rXHRcdChuZXh0X29mZiBcdTAwMjYgMSkpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdHJlY19vZmZfc2l6ZSA9IHNpemVvZihfX2JlMTYpO1xuK1x0cmVjX29mZl90YWJfc2l6ZSA9ICgodTMyKW5vZGUtXHUwMDNlbnVtX3JlY3MgKyAxKSAqIHJlY19vZmZfc2l6ZTtcbitcdHJlY19vZmZfdGFiX3N0YXJ0ID0gbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZSAtIHJlY19vZmZfdGFiX3NpemU7XG4rXHRpZiAobmV4dF9vZmYgXHUwMDNlIHJlY19vZmZfdGFiX3N0YXJ0KVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG4rXG4gc3RhdGljIGlubGluZVxuIHUzMiBjaGVja19hbmRfY29ycmVjdF9yZXF1ZXN0ZWRfbGVuZ3RoKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBvZmYsIHUzMiBsZW4pXG4ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTM6MDI6NTEuODg1MDI3MDM3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjUzMTI0NjI1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipWYWxpZGF0aW5nIEhGUysgQi1UcmVlIE5vZGUgUmVjb3JkcyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiByZXZpZXdpbmcgdGhpcyBwYXRjaCB0aGF0IGZvY3VzZXMgb24gZW5oYW5jaW5nIHRoZSBpbnRlZ3JpdHkgb2Ygb3VyIEhGUysgaW1wbGVtZW50YXRpb24uIFRoZSBjb3JlIG9mIHRoaXMgaXMgYWRkaW5nIHZhbGlkYXRpb24gY2hlY2tzIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIEItdHJlZSBub2RlIHJlY29yZHMuIEl0IHNlZW1zIHRoZSBhdXRob3IgaGFzIHN0cmF0ZWdpY2FsbHkgbW9kaWZpZWQgYGZzL2hmc3BsdXMvYmZpbmQuY2AsIGBmcy9oZnNwbHVzL2Jub2RlLmNgLCBgZnMvaGZzcGx1cy9icmVjLmNgLCBhbmQgYGZzL2hmc3BsdXMvaGZzcGx1c19mcy5oYCB0byBpbnRyb2R1Y2UgdGhlc2UgY3J1Y2lhbCBzYWZlZ3VhcmRzLiBJJ20gc2VlaW5nIG5ldyBmdW5jdGlvbnMgbGlrZSBgaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkYCwgYGhmc19icmVjX3JlY29yZF92YWxpZGAsIGFuZCBgaGZzX2JyZWNfcmFuZ2VfdmFsaWRgIGJlaW5nIGltcGxlbWVudGVkLiBUaGlzIGlzIHByZXR0eSBzdGFuZGFyZDsgdGhlc2UgY2hlY2tzIGFyZSB0aGVuIGludGVncmF0ZWQgdG8gdmFsaWRhdGUgdGhlIGJvdW5kcyB3aGVuZXZlciBhY2Nlc3NpbmcgcmVjb3JkcyB3aXRoaW4gdGhlIEItdHJlZSwgZW5zdXJpbmcgZGF0YSBhY2Nlc3MgcmVtYWlucyB3aXRoaW4gdGhlIGV4cGVjdGVkIHBhcmFtZXRlcnMuXG5cblRoaXMgaXMgZnVuZGFtZW50YWxseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhICp2ZXJ5KiBpbXBvcnRhbnQgb25lLiBJdCdzIGRlc2lnbmVkIHRvIG1pdGlnYXRlIHRoZSByaXNrcyBvZiBvdXQtb2YtYm91bmRzIHJlYWRzIGFuZCB3cml0ZXMsIGFzIHdlbGwgYXMgcHJldmVudCBsb2dpYyBlcnJvcnMgdGhhdCBjb3VsZCBhcmlzZSB3aGVuIGRlYWxpbmcgd2l0aCBwb3RlbnRpYWxseSBjb3JydXB0ZWQgSEZTKyBpbWFnZXMuIFRoaXMga2luZCBvZiBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgaXMgZXhhY3RseSB3aGF0IHdlIHdhbnQgdG8gc2VlLlxuXG5Ob3csIGxldCdzIG1ha2Ugc3VyZSB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgYXJlIGNvcnJlY3QuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgSEZTUExVU19GU2AgaXMgaW5kZWVkIHRoZSBjb3JyZWN0IGNvbmZpZyBvcHRpb24gZm9yIGVuYWJsaW5nIEhGUysuIFRoYXQgc2hvdWxkIGJlIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYGZzL2hmc3BsdXMvS2NvbmZpZ2Agb3Igc29tZXdoZXJlIHNpbWlsYXIgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLlxuXG5JIHNlZSB0aGV5J3ZlIGFsc28gbW9kaWZpZWQgcXVpdGUgYSBmZXcgZnVuY3Rpb25zOiBgX19oZnNfYnJlY19maW5kYCwgYGhmc19icmVjX2dvdG9gLCBgaGZzX2Jub2RlX2R1bXBgLCBgaGZzX2Jub2RlX2ZpbmRgLCBgaGZzX2JyZWNfbGVub2ZmYCwgYGhmc19icmVjX2tleWxlbmAsIGFuZCBgaGZzX2JyZWNfcmVtb3ZlYC4gVGhpcyBpcyBleGFjdGx5IHRoZSBzb3J0IG9mIGF1ZGl0IEknZCBleHBlY3QgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzAzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTM6MDI6NTguNDE2Mjc3Mjk3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNTMwNDUyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJIRlNQTFVTX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2hmc3BsdXMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9oZnNwbHVzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9oZnNwbHVzL0tjb25maWc6Mjpjb25maWcgSEZTUExVU19GU1xcbmZzL2hmc3BsdXMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJBcHBsZSBFeHRlbmRlZCBIRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG4tLVxcbmZzL2hmc3BsdXMvS2NvbmZpZz0xOD1jb25maWcgSEZTUExVU19LVU5JVF9URVNUXFxuZnMvaGZzcGx1cy9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgSEZTKyBmaWxlc3lzdGVtXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuZnMvaGZzcGx1cy9LY29uZmlnOjIwOlxcdGRlcGVuZHMgb24gSEZTUExVU19GUyBcXHUwMDI2XFx1MDAyNiBLVU5JVFxcbmZzL2hmc3BsdXMvS2NvbmZpZy0yMS1cXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMzowMjo1OC43NDE1ODc2OTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjQ5MDk3NDEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBIRlMrIEZpbGVzeXN0ZW0gSW50ZXJhY3Rpb25zKipcblxuT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gaW4gcGxheSBoZXJlIGlzIGBIRlNQTFVTX0ZTYC4gR2l2ZW4gdGhhdCBjb250ZXh0LCBJIG5lZWQgdG8gZm9jdXMgb24gdGhlc2UgZnVuY3Rpb25zOiBgX19oZnNfYnJlY19maW5kYCwgYGhmc19icmVjX2dvdG9gLCBgaGZzX2Jub2RlX2R1bXBgLCBgaGZzX2Jub2RlX2ZpbmRgLCBgaGZzX2JyZWNfbGVub2ZmYCwgYGhmc19icmVjX2tleWxlbmAsIGFuZCBgaGZzX2JyZWNfcmVtb3ZlYC4gVGhlc2UgYXJlIGFsbCB3aXRoaW4gdGhlIEhGUysgY29udGV4dCBhbmQsIGJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcsIGFyZSBhYnNvbHV0ZWx5IGtleSBjb21wb25lbnRzIHdoZW4gbW91bnRpbmcgYW5kIGludGVyYWN0aW5nIHdpdGggYW4gSEZTKyBmaWxlc3lzdGVtLiBUaGV5J3JlIGNsZWFybHkgcmVhY2hhYmxlIGR1cmluZyB0eXBpY2FsIGZpbGUgc3lzdGVtIG9wZXJhdGlvbnMuXG5cbk15IHByaW1hcnkgZm9jdXMgbmVlZHMgdG8gYmUgb246IGBfX2hmc19icmVjX2ZpbmRgLCBgaGZzX2JyZWNfZ290b2AsIGBoZnNfYm5vZGVfZmluZGAsIGBoZnNfYnJlY19sZW5vZmZgLCBgaGZzX2JyZWNfa2V5bGVuYCwgYW5kIGBoZnNfYnJlY19yZW1vdmVgLiBOb3csIGJlZm9yZSBJIHByb2NlZWQgd2l0aCBhbnkgZGVlcGVyIGFuYWx5c2lzLCBJIHJlYWxseSBuZWVkIHRvIHRha2UgYSBxdWljayBsb29rIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyB0aGF0IG1pZ2h0IGltcGFjdCB0aGlzLiBHb3R0YSBtYWtlIHN1cmUgSSdtIGNvbnNpZGVyaW5nIGFsbCByZWxldmFudCBmYWN0b3JzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjQ2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEzOjAzOjAzLjM5MDY4ODA1NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDI5OTY4NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEhGU1BMVVNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaGZzcGx1cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2hmc3BsdXMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2hmc3BsdXMvS2NvbmZpZzoyOmNvbmZpZyBIRlNQTFVTX0ZTXFxuZnMvaGZzcGx1cy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkFwcGxlIEV4dGVuZGVkIEhGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvaGZzcGx1cy9LY29uZmlnLTE3LVxcbmZzL2hmc3BsdXMvS2NvbmZpZzoxODpjb25maWcgSEZTUExVU19LVU5JVF9URVNUXFxuZnMvaGZzcGx1cy9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgSEZTKyBmaWxlc3lzdGVtXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEzOjAzOjAzLjUzMzY5MDIyMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NTA0MzgwNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSEZTKyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGlzIHN0cmFpZ2h0Zm9yd2FyZDogYEhGU1BMVVNfRlNgLiBUaGUgcGF0Y2ggaXRzZWxmIGxvb2tzIHNvbGlkOyBpdCdzIGZ1bmN0aW9uYWxseSBzb3VuZCBhbmQgYWRkcmVzc2VzIGJ1Z3Mgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gY29ycnVwdGlvbiBpbiBIRlMrIGltYWdlcy4gVGhpcyBpcyBwcmVjaXNlbHkgdGhlIGtpbmQgb2YgdGhpbmcgdGhhdCBjYXRjaGVzIG15IGF0dGVudGlvbi4gVGhlIGNvcmUgb2YgdGhlIGZpeCByZXZvbHZlcyBhcm91bmQgYWRkaW5nIGJvdW5kcyBjaGVja2luZyB0byBiLXRyZWUgcmVjb3Jkcy5cblxuR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgcGF0Y2gsIHdpdGggdGhlIGVtcGhhc2lzIG9uIGlucHV0IHZhbGlkYXRpb24gYW5kIG1pdGlnYXRpbmcgaXNzdWVzIGFyaXNpbmcgZnJvbSBwb3RlbnRpYWxseSBtYWxmb3JtZWQgZGF0YSwgZnV6emluZyBpcyBkZWZpbml0ZWx5IHdhcnJhbnRlZCDigJMgYSByZXNvdW5kaW5nIFwiVHJ1ZVwiLlxuXG5Ob3csIGxldCdzIGRyaWxsIGRvd24gb24gdGhlIGtleSBzeW1ib2xzIHRvIHRhcmdldCB3aXRoIHRoZSBmdXp6ZXIuIE15IGZvY3VzIHdpbGwgYmUgb24gYF9faGZzX2JyZWNfZmluZGAsIGBoZnNfYnJlY19nb3RvYCwgYGhmc19ibm9kZV9maW5kYCwgYGhmc19icmVjX2xlbm9mZmAsIGBoZnNfYnJlY19rZXlsZW5gLCBhbmQgYGhmc19icmVjX3JlbW92ZWAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY2VudHJhbCB0byBiLXRyZWUgcmVjb3JkIGhhbmRsaW5nLCBhbmQgdGhlcmVmb3JlLCB0aGV5IGFyZSB0aGUgcHJpbWUgY2FuZGlkYXRlcyB0byBleHBvc2UgYW55IHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIHRoZSBuZXcgYm91bmRzIGNoZWNrcy5cblxuTXkgcmVhc29uaW5nIGlzIHRoaXM6IHRoZSBwYXRjaCdzIHB1cnBvc2UgaXMgdG8gdmFsaWRhdGUgYW5kIGVuc3VyZSB0aGF0IG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYW5kIGxvZ2ljYWwgZXJyb3JzIGFyZSBwcmV2ZW50ZWQgd2hlbiBwYXJzaW5nIGNvcnJ1cHRlZCBIRlMrIGZpbGVzeXN0ZW0gaW1hZ2VzLiBGdXp6aW5nLCBzcGVjaWZpY2FsbHkgd2l0aCBpbnRlbnRpb25hbGx5IGNvcnJ1cHRlZCBpbWFnZXMsIHdpbGwgcHJvdmlkZSB0aGUgbW9zdCBkaXJlY3QgYW5kIGVmZmVjdGl2ZSBtZWFucyB0byB2ZXJpZnkgdGhlIGludGVncml0eSBhbmQgZWZmZWN0aXZlbmVzcyBvZiB0aGVzZSBhZGRlZCBjaGVja3MuIFdlIG5lZWQgdG8gdGhyb3cgZXZlcnl0aGluZyB3ZSBjYW4gYXQgdGhlc2UgZnVuY3Rpb25zIHRvIG1ha2Ugc3VyZSB0aGUgZml4IGhvbGRzIHVwIHVuZGVyIHByZXNzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODcyLCJPdXRwdXRUb2tlbnMiOjE0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMzowMzowOS40ODQxMzA2MTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NTIzMjExMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSEZTUExVU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9faGZzX2JyZWNfZmluZFwiLFxuICAgIFwiaGZzX2JyZWNfZ290b1wiLFxuICAgIFwiaGZzX2Jub2RlX2ZpbmRcIixcbiAgICBcImhmc19icmVjX2xlbm9mZlwiLFxuICAgIFwiaGZzX2JyZWNfa2V5bGVuXCIsXG4gICAgXCJoZnNfYnJlY19yZW1vdmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBhbmQgdmFsaWRhdGlvbiBmb3IgSEZTKyBiLXRyZWUgcmVjb3JkcyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYW5kIGxvZ2ljIGVycm9ycyB3aGVuIHBhcnNpbmcgY29ycnVwdGVkIGZpbGVzeXN0ZW0gaW1hZ2VzLiBGdXp6aW5nIHdpdGggY29ycnVwdGVkIGltYWdlcyB3aWxsIGhlbHAgdmVyaWZ5IHRoZSBjb3JyZWN0bmVzcyBvZiB0aGVzZSBjaGVja3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSEZTUExVU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9faGZzX2JyZWNfZmluZFwiLFxuICAgIFwiaGZzX2JyZWNfZ290b1wiLFxuICAgIFwiaGZzX2Jub2RlX2ZpbmRcIixcbiAgICBcImhmc19icmVjX2xlbm9mZlwiLFxuICAgIFwiaGZzX2JyZWNfa2V5bGVuXCIsXG4gICAgXCJoZnNfYnJlY19yZW1vdmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBhbmQgdmFsaWRhdGlvbiBmb3IgSEZTKyBiLXRyZWUgcmVjb3JkcyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYW5kIGxvZ2ljIGVycm9ycyB3aGVuIHBhcnNpbmcgY29ycnVwdGVkIGZpbGVzeXN0ZW0gaW1hZ2VzLiBGdXp6aW5nIHdpdGggY29ycnVwdGVkIGltYWdlcyB3aWxsIGhlbHAgdmVyaWZ5IHRoZSBjb3JyZWN0bmVzcyBvZiB0aGVzZSBjaGVja3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvhvzs[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-02 12:51:11 +0000 UTC FinishedAt: 2026-07-02 13:03:11 +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": "4a50a141f05a8d1737661b19ee22ff8455b94409", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFSPLUS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "4a50a141f05a8d1737661b19ee22ff8455b94409", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFSPLUS_FS" ], "series_id": "49fd1c17-2d02-4c42-9675-0137fc89fb3a" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "__hfs_brec_find", "hfs_brec_goto", "hfs_bnode_find", "hfs_brec_lenoff", "hfs_brec_keylen", "hfs_brec_remove" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAyIDEzOjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU1BMVVNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2hmc19icmVjX2ZpbmQmIzM0OywKICAgICYjMzQ7aGZzX2JyZWNfZ290byYjMzQ7LAogICAgJiMzNDtoZnNfYm5vZGVfZmluZCYjMzQ7LAogICAgJiMzNDtoZnNfYnJlY19sZW5vZmYmIzM0OywKICAgICYjMzQ7aGZzX2JyZWNfa2V5bGVuJiMzNDssCiAgICAmIzM0O2hmc19icmVjX3JlbW92ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBhbmQgdmFsaWRhdGlvbiBmb3IgSEZTJiM0MzsgYi10cmVlIHJlY29yZHMgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBsb2dpYyBlcnJvcnMgd2hlbiBwYXJzaW5nIGNvcnJ1cHRlZCBmaWxlc3lzdGVtIGltYWdlcy4gRnV6emluZyB3aXRoIGNvcnJ1cHRlZCBpbWFnZXMgd2lsbCBoZWxwIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlc2UgY2hlY2tzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEzOjAyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNmJhMTA0NzhjMjJjNjExYmI5ZDhkMGM5Y2YyZDFmNzJkYzE1OWEzN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIgMTM6MDI6NDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvaGZzcGx1cy9iZmluZC5jIGIvZnMvaGZzcGx1cy9iZmluZC5jXG5pbmRleCA5YTU1ZmE2ZDUyOTQyOS4uMzYzZmFmMjE0YTFjNjUgMTAwNjQ0XG4tLS0gYS9mcy9oZnNwbHVzL2JmaW5kLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmc3BsdXMvYmZpbmQuY1xuQEAgLTEwOCwxNSAmIzQzOzEwOCwyOCBAQCBpbnQgX19oZnNfYnJlY19maW5kKHN0cnVjdCBoZnNfYm5vZGUgKmJub2RlLCBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsXG4gXHRpbnQgYiwgZTtcbiBcdGludCByZXM7XG4gXG4mIzQzO1x0ZmQtXHUwMDNlcmVjb3JkID0gLTE7XG4mIzQzO1x0ZmQtXHUwMDNla2V5b2Zmc2V0ID0gLTE7XG4mIzQzO1x0ZmQtXHUwMDNla2V5bGVuZ3RoID0gLTE7XG4mIzQzO1x0ZmQtXHUwMDNlZW50cnlvZmZzZXQgPSAtMTtcbiYjNDM7XHRmZC1cdTAwM2VlbnRyeWxlbmd0aCA9IC0xO1xuJiM0MztcbiBcdEJVR19PTighcmVjX2ZvdW5kKTtcbiYjNDM7XHRpZiAoIWhmc19ibm9kZV9udW1fcmVjc192YWxpZChibm9kZSkpIHtcbiYjNDM7XHRcdHJlcyA9IC1FSU87XG4mIzQzO1x0XHRnb3RvIGZhaWw7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGIgPSAwO1xuIFx0ZSA9IGJub2RlLVx1MDAzZW51bV9yZWNzIC0gMTtcbiBcdHJlcyA9IC1FTk9FTlQ7XG4mIzQzO1x0aWYgKGJub2RlLVx1MDAzZW51bV9yZWNzID09IDApXG4mIzQzO1x0XHRnb3RvIGZhaWw7XG4gXHRkbyB7XG4gXHRcdHJlYyA9IChlICYjNDM7IGIpIC8gMjtcbiBcdFx0bGVuID0gaGZzX2JyZWNfbGVub2ZmKGJub2RlLCByZWMsIFx1MDAyNm9mZik7XG4gXHRcdGtleWxlbiA9IGhmc19icmVjX2tleWxlbihibm9kZSwgcmVjKTtcbi1cdFx0aWYgKGtleWxlbiA9PSAwKSB7XG4mIzQzO1x0XHRpZiAoa2V5bGVuID09IDAgfHwga2V5bGVuIFx1MDAzZT0gbGVuKSB7XG4gXHRcdFx0cmVzID0gLUVJTlZBTDtcbiBcdFx0XHRnb3RvIGZhaWw7XG4gXHRcdH1cbkBAIC0xMzAsNyAmIzQzOzE0Myw3IEBAIGludCBfX2hmc19icmVjX2ZpbmQoc3RydWN0IGhmc19ibm9kZSAqYm5vZGUsIHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCxcbiBcdGlmIChyZWMgIT0gZSBcdTAwMjZcdTAwMjYgZSBcdTAwM2U9IDApIHtcbiBcdFx0bGVuID0gaGZzX2JyZWNfbGVub2ZmKGJub2RlLCBlLCBcdTAwMjZvZmYpO1xuIFx0XHRrZXlsZW4gPSBoZnNfYnJlY19rZXlsZW4oYm5vZGUsIGUpO1xuLVx0XHRpZiAoa2V5bGVuID09IDApIHtcbiYjNDM7XHRcdGlmIChrZXlsZW4gPT0gMCB8fCBrZXlsZW4gXHUwMDNlPSBsZW4pIHtcbiBcdFx0XHRyZXMgPSAtRUlOVkFMO1xuIFx0XHRcdGdvdG8gZmFpbDtcbiBcdFx0fVxuQEAgLTIzMiw2ICYjNDM7MjQ1LDE0IEBAIGludCBoZnNfYnJlY19nb3RvKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgaW50IGNudClcbiBcbiBcdGJub2RlID0gZmQtXHUwMDNlYm5vZGU7XG4gXHR0cmVlID0gYm5vZGUtXHUwMDNldHJlZTtcbiYjNDM7XHRpZiAoIWhmc19ibm9kZV9udW1fcmVjc192YWxpZChibm9kZSkpIHtcbiYjNDM7XHRcdHJlcyA9IC1FSU87XG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4mIzQzO1x0aWYgKGJub2RlLVx1MDAzZW51bV9yZWNzID09IDApIHtcbiYjNDM7XHRcdHJlcyA9IC1FTk9FTlQ7XG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4gXG4gXHRpZiAoY250IFx1MDAzYyAwKSB7XG4gXHRcdGNudCA9IC1jbnQ7XG5AQCAtMjc0LDcgJiM0MzsyOTUsNyBAQCBpbnQgaGZzX2JyZWNfZ290byhzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsIGludCBjbnQpXG4gXG4gXHRsZW4gPSBoZnNfYnJlY19sZW5vZmYoYm5vZGUsIGZkLVx1MDAzZXJlY29yZCwgXHUwMDI2b2ZmKTtcbiBcdGtleWxlbiA9IGhmc19icmVjX2tleWxlbihibm9kZSwgZmQtXHUwMDNlcmVjb3JkKTtcbi1cdGlmIChrZXlsZW4gPT0gMCkge1xuJiM0MztcdGlmIChrZXlsZW4gPT0gMCB8fCBrZXlsZW4gXHUwMDNlPSBsZW4pIHtcbiBcdFx0cmVzID0gLUVJTlZBTDtcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvZnMvaGZzcGx1cy9ibm9kZS5jIGIvZnMvaGZzcGx1cy9ibm9kZS5jXG5pbmRleCBkMDg4ZmI3ZWIwZGZhMy4uZjE4NWMwMTJkMDkwMjYgMTAwNjQ0XG4tLS0gYS9mcy9oZnNwbHVzL2Jub2RlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmc3BsdXMvYm5vZGUuY1xuQEAgLTM1MiwxNSAmIzQzOzM1MiwyMiBAQCB2b2lkIGhmc19ibm9kZV9kdW1wKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUpXG4gXHRzdHJ1Y3QgaGZzX2Jub2RlX2Rlc2MgZGVzYztcbiBcdF9fYmUzMiBjbmlkO1xuIFx0aW50IGksIG9mZiwga2V5X29mZjtcbiYjNDM7XHR1MTYgbnVtX3JlY3M7XG4gXG4gXHRoZnNfZGJnKFwmIzM0O25vZGUgJWRcXG5cJiMzNDssIG5vZGUtXHUwMDNldGhpcyk7XG4gXHRoZnNfYm5vZGVfcmVhZChub2RlLCBcdTAwMjZkZXNjLCAwLCBzaXplb2YoZGVzYykpO1xuJiM0MztcdG51bV9yZWNzID0gbm9kZS1cdTAwM2VudW1fcmVjcztcbiBcdGhmc19kYmcoXCYjMzQ7bmV4dCAlZCwgcHJldiAlZCwgdHlwZSAlZCwgaGVpZ2h0ICVkLCBudW1fcmVjcyAlZFxcblwmIzM0OyxcbiBcdFx0YmUzMl90b19jcHUoZGVzYy5uZXh0KSwgYmUzMl90b19jcHUoZGVzYy5wcmV2KSxcbiBcdFx0ZGVzYy50eXBlLCBkZXNjLmhlaWdodCwgYmUxNl90b19jcHUoZGVzYy5udW1fcmVjcykpO1xuIFxuJiM0MztcdGlmICghaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkKG5vZGUpKSB7XG4mIzQzO1x0XHRoZnNfZGJnKFwmIzM0O2ludmFsaWQgbnVtX3JlY3MgJXVcXG5cJiMzNDssIG51bV9yZWNzKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0b2ZmID0gbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZSAtIDI7XG4tXHRmb3IgKGkgPSBiZTE2X3RvX2NwdShkZXNjLm51bV9yZWNzKTsgaSBcdTAwM2U9IDA7IG9mZiAtPSAyLCBpLS0pIHtcbiYjNDM7XHRmb3IgKGkgPSBudW1fcmVjczsgaSBcdTAwM2U9IDA7IG9mZiAtPSAyLCBpLS0pIHtcbiBcdFx0a2V5X29mZiA9IGhmc19ibm9kZV9yZWFkX3UxNihub2RlLCBvZmYpO1xuIFx0XHRoZnNfZGJnKFwmIzM0OyBrZXlfb2ZmICVkXCYjMzQ7LCBrZXlfb2ZmKTtcbiBcdFx0aWYgKGkgXHUwMDI2XHUwMDI2IG5vZGUtXHUwMDNldHlwZSA9PSBIRlNfTk9ERV9JTkRFWCkge1xuQEAgLTU3OSw2ICYjNDM7NTg2LDkgQEAgc3RydWN0IGhmc19ibm9kZSAqaGZzX2Jub2RlX2ZpbmQoc3RydWN0IGhmc19idHJlZSAqdHJlZSwgdTMyIG51bSlcbiBcdFx0Z290byBub2RlX2Vycm9yO1xuIFx0fVxuIFxuJiM0MztcdGlmICghaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkKG5vZGUpKVxuJiM0MztcdFx0Z290byBub2RlX2Vycm9yO1xuJiM0MztcbiBcdHJlY19vZmYgPSB0cmVlLVx1MDAzZW5vZGVfc2l6ZSAtIDI7XG4gXHRvZmYgPSBoZnNfYm5vZGVfcmVhZF91MTYobm9kZSwgcmVjX29mZik7XG4gXHRpZiAob2ZmICE9IHNpemVvZihzdHJ1Y3QgaGZzX2Jub2RlX2Rlc2MpKVxuQEAgLTU4Niw5ICYjNDM7NTk2LDcgQEAgc3RydWN0IGhmc19ibm9kZSAqaGZzX2Jub2RlX2ZpbmQoc3RydWN0IGhmc19idHJlZSAqdHJlZSwgdTMyIG51bSlcbiBcdGZvciAoaSA9IDE7IGkgXHUwMDNjPSBub2RlLVx1MDAzZW51bV9yZWNzOyBvZmYgPSBuZXh0X29mZiwgaSYjNDM7JiM0MzspIHtcbiBcdFx0cmVjX29mZiAtPSAyO1xuIFx0XHRuZXh0X29mZiA9IGhmc19ibm9kZV9yZWFkX3UxNihub2RlLCByZWNfb2ZmKTtcbi1cdFx0aWYgKG5leHRfb2ZmIFx1MDAzYz0gb2ZmIHx8XG4tXHRcdCAgICBuZXh0X29mZiBcdTAwM2UgdHJlZS1cdTAwM2Vub2RlX3NpemUgfHxcbi1cdFx0ICAgIG5leHRfb2ZmIFx1MDAyNiAxKVxuJiM0MztcdFx0aWYgKCFoZnNfYnJlY19yYW5nZV92YWxpZChub2RlLCBvZmYsIG5leHRfb2ZmLCByZWNfb2ZmKSlcbiBcdFx0XHRnb3RvIG5vZGVfZXJyb3I7XG4gXHRcdGVudHJ5X3NpemUgPSBuZXh0X29mZiAtIG9mZjtcbiBcdFx0aWYgKG5vZGUtXHUwMDNldHlwZSAhPSBIRlNfTk9ERV9JTkRFWCBcdTAwMjZcdTAwMjZcbmRpZmYgLS1naXQgYS9mcy9oZnNwbHVzL2JyZWMuYyBiL2ZzL2hmc3BsdXMvYnJlYy5jXG5pbmRleCBlM2RmODkyODQwNzlkYi4uZmUyZTA2MzY3OThjZWMgMTAwNjQ0XG4tLS0gYS9mcy9oZnNwbHVzL2JyZWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzcGx1cy9icmVjLmNcbkBAIC0yMCwzOCAmIzQzOzIwLDQ0IEBAIHN0YXRpYyBpbnQgaGZzX2J0cmVlX2luY19oZWlnaHQoc3RydWN0IGhmc19idHJlZSAqKTtcbiB1MTYgaGZzX2JyZWNfbGVub2ZmKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUxNiByZWMsIHUxNiAqb2ZmKVxuIHtcbiBcdF9fYmUxNiByZXR2YWxbMl07XG4tXHR1MTYgZGF0YW9mZjtcbiYjNDM7XHR1MTYgZGF0YV9vZmY7XG4mIzQzO1x0dTE2IG5leHRfb2ZmO1xuIFxuLVx0ZGF0YW9mZiA9IG5vZGUtXHUwMDNldHJlZS1cdTAwM2Vub2RlX3NpemUgLSAocmVjICYjNDM7IDIpICogMjtcbi1cdGhmc19ibm9kZV9yZWFkKG5vZGUsIHJldHZhbCwgZGF0YW9mZiwgNCk7XG4mIzQzO1x0aWYgKCFoZnNfYnJlY19yZWNvcmRfdmFsaWQobm9kZSwgcmVjKSkge1xuJiM0MztcdFx0Km9mZiA9IDA7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGRhdGFfb2ZmID0gbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZSAtIChyZWMgJiM0MzsgMikgKiAyO1xuJiM0MztcdGhmc19ibm9kZV9yZWFkKG5vZGUsIHJldHZhbCwgZGF0YV9vZmYsIDQpO1xuIFx0Km9mZiA9IGJlMTZfdG9fY3B1KHJldHZhbFsxXSk7XG4tXHRyZXR1cm4gYmUxNl90b19jcHUocmV0dmFsWzBdKSAtICpvZmY7XG4mIzQzO1x0bmV4dF9vZmYgPSBiZTE2X3RvX2NwdShyZXR2YWxbMF0pO1xuJiM0MztcdGlmICghaGZzX2JyZWNfcmFuZ2VfdmFsaWQobm9kZSwgKm9mZiwgbmV4dF9vZmYsIGRhdGFfb2ZmKSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdHJldHVybiBuZXh0X29mZiAtICpvZmY7XG4gfVxuIFxuIC8qIEdldCB0aGUgbGVuZ3RoIG9mIHRoZSBrZXkgZnJvbSBhIGtleWVkIHJlY29yZCAqL1xuIHUxNiBoZnNfYnJlY19rZXlsZW4oc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTE2IHJlYylcbiB7XG4tXHR1MTYgcmV0dmFsLCByZWNvZmY7XG4mIzQzO1x0dTE2IHJldHZhbCwgcmVjb2ZmLCBsZW47XG4gXG4gXHRpZiAobm9kZS1cdTAwM2V0eXBlICE9IEhGU19OT0RFX0lOREVYIFx1MDAyNlx1MDAyNiBub2RlLVx1MDAzZXR5cGUgIT0gSEZTX05PREVfTEVBRilcbiBcdFx0cmV0dXJuIDA7XG4mIzQzO1x0aWYgKCFoZnNfYnJlY19yZWNvcmRfdmFsaWQobm9kZSwgcmVjKSlcbiYjNDM7XHRcdHJldHVybiAwO1xuIFxuIFx0aWYgKChub2RlLVx1MDAzZXR5cGUgPT0gSEZTX05PREVfSU5ERVgpIFx1MDAyNlx1MDAyNlxuIFx0ICAgIShub2RlLVx1MDAzZXRyZWUtXHUwMDNlYXR0cmlidXRlcyBcdTAwMjYgSEZTX1RSRUVfVkFSSURYS0VZUykgXHUwMDI2XHUwMDI2XG4gXHQgICAobm9kZS1cdTAwM2V0cmVlLVx1MDAzZWNuaWQgIT0gSEZTUExVU19BVFRSX0NOSUQpKSB7XG4gXHRcdHJldHZhbCA9IG5vZGUtXHUwMDNldHJlZS1cdTAwM2VtYXhfa2V5X2xlbiAmIzQzOyAyO1xuIFx0fSBlbHNlIHtcbi1cdFx0cmVjb2ZmID0gaGZzX2Jub2RlX3JlYWRfdTE2KG5vZGUsXG4tXHRcdFx0bm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZSAtIChyZWMgJiM0MzsgMSkgKiAyKTtcbi1cdFx0aWYgKCFyZWNvZmYpXG4tXHRcdFx0cmV0dXJuIDA7XG4tXHRcdGlmIChyZWNvZmYgXHUwMDNlIG5vZGUtXHUwMDNldHJlZS1cdTAwM2Vub2RlX3NpemUgLSAyKSB7XG4tXHRcdFx0cHJfZXJyKFwmIzM0O3JlY29mZiAlZCB0b28gbGFyZ2VcXG5cJiMzNDssIHJlY29mZik7XG4mIzQzO1x0XHRsZW4gPSBoZnNfYnJlY19sZW5vZmYobm9kZSwgcmVjLCBcdTAwMjZyZWNvZmYpO1xuJiM0MztcdFx0aWYgKGxlbiA9PSAwKVxuIFx0XHRcdHJldHVybiAwO1xuLVx0XHR9XG4gXG4gXHRcdHJldHZhbCA9IGhmc19ibm9kZV9yZWFkX3UxNihub2RlLCByZWNvZmYpICYjNDM7IDI7XG4tXHRcdGlmIChyZXR2YWwgXHUwMDNlIG5vZGUtXHUwMDNldHJlZS1cdTAwM2VtYXhfa2V5X2xlbiAmIzQzOyAyKSB7XG4mIzQzO1x0XHRpZiAocmV0dmFsIFx1MDAzZT0gbGVuIHx8IHJldHZhbCBcdTAwM2Ugbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW1heF9rZXlfbGVuICYjNDM7IDIpIHtcbiBcdFx0XHRwcl9lcnIoXCYjMzQ7a2V5bGVuICVkIHRvbyBsYXJnZVxcblwmIzM0OyxcbiBcdFx0XHRcdHJldHZhbCk7XG4gXHRcdFx0cmV0dmFsID0gMDtcbkBAIC0xODUsMTAgJiM0MzsxOTEsMTUgQEAgaW50IGhmc19icmVjX3JlbW92ZShzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQpXG4gXHR0cmVlID0gZmQtXHUwMDNldHJlZTtcbiBcdG5vZGUgPSBmZC1cdTAwM2Vibm9kZTtcbiBhZ2FpbjpcbiYjNDM7XHRpZiAoIWhmc19icmVjX3JlY29yZF92YWxpZChub2RlLCBmZC1cdTAwM2VyZWNvcmQpKVxuJiM0MztcdFx0cmV0dXJuIC1FSU87XG4mIzQzO1xuIFx0cmVjX29mZiA9IHRyZWUtXHUwMDNlbm9kZV9zaXplIC0gKGZkLVx1MDAzZXJlY29yZCAmIzQzOyAyKSAqIDI7XG4gXHRlbmRfb2ZmID0gdHJlZS1cdTAwM2Vub2RlX3NpemUgLSAobm9kZS1cdTAwM2VudW1fcmVjcyAmIzQzOyAxKSAqIDI7XG4gXG4gXHRpZiAobm9kZS1cdTAwM2V0eXBlID09IEhGU19OT0RFX0xFQUYpIHtcbiYjNDM7XHRcdGlmICh0cmVlLVx1MDAzZWxlYWZfY291bnQgPT0gMClcbiYjNDM7XHRcdFx0cmV0dXJuIC1FSU87XG4gXHRcdHRyZWUtXHUwMDNlbGVhZl9jb3VudC0tO1xuIFx0XHRtYXJrX2lub2RlX2RpcnR5KHRyZWUtXHUwMDNlaW5vZGUpO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvaGZzcGx1c19mcy5oIGIvZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmhcbmluZGV4IGVjMDRiODJhZDkyNzg3Li43YTM0NWM0ZDFjMDY0MCAxMDA2NDRcbi0tLSBhL2ZzL2hmc3BsdXMvaGZzcGx1c19mcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaFxuQEAgLTU4Nyw2ICYjNDM7NTg3LDY4IEBAIGJvb2wgaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBvZmYpXG4gXHRyZXR1cm4gaXNfdmFsaWQ7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW5saW5lXG4mIzQzO2Jvb2wgaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUpXG4mIzQzO3tcbiYjNDM7XHR1MzIgbm9kZV9zaXplO1xuJiM0MztcdHUzMiByZWNfb2ZmX3NpemU7XG4mIzQzO1x0dTMyIHJlY19vZmZfdGFiX3NpemU7XG4mIzQzO1x0dTMyIHJlY19hcmVhX3NpemU7XG4mIzQzO1xuJiM0MztcdGlmICghbm9kZSB8fCAhbm9kZS1cdTAwM2V0cmVlKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRub2RlX3NpemUgPSBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplO1xuJiM0MztcdHJlY19vZmZfc2l6ZSA9IHNpemVvZihfX2JlMTYpO1xuJiM0MztcdGlmIChub2RlX3NpemUgXHUwMDNjIHNpemVvZihzdHJ1Y3QgaGZzX2Jub2RlX2Rlc2MpICYjNDM7IHJlY19vZmZfc2l6ZSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0cmVjX2FyZWFfc2l6ZSA9IG5vZGVfc2l6ZSAtIHNpemVvZihzdHJ1Y3QgaGZzX2Jub2RlX2Rlc2MpO1xuJiM0MztcdHJlY19vZmZfdGFiX3NpemUgPSAoKHUzMilub2RlLVx1MDAzZW51bV9yZWNzICYjNDM7IDEpICogcmVjX29mZl9zaXplO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmVjX29mZl90YWJfc2l6ZSBcdTAwM2M9IHJlY19hcmVhX3NpemU7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbmxpbmVcbiYjNDM7Ym9vbCBoZnNfYnJlY19yZWNvcmRfdmFsaWQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgaW50IHJlY29yZClcbiYjNDM7e1xuJiM0MztcdGlmICghaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkKG5vZGUpKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdGlmIChyZWNvcmQgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZWNvcmQgXHUwMDNjIG5vZGUtXHUwMDNlbnVtX3JlY3M7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbmxpbmVcbiYjNDM7Ym9vbCBoZnNfYnJlY19yYW5nZV92YWxpZChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MTYgb2ZmLCB1MTYgbmV4dF9vZmYsXG4mIzQzO1x0XHRcdCAgdTE2IHJlY19vZmYpXG4mIzQzO3tcbiYjNDM7XHR1MzIgcmVjX29mZl9zaXplO1xuJiM0MztcdHUzMiByZWNfb2ZmX3RhYl9zaXplO1xuJiM0MztcdHUzMiByZWNfb2ZmX3RhYl9zdGFydDtcbiYjNDM7XG4mIzQzO1x0aWYgKCFub2RlIHx8ICFub2RlLVx1MDAzZXRyZWUpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdGlmIChvZmYgXHUwMDNjIHNpemVvZihzdHJ1Y3QgaGZzX2Jub2RlX2Rlc2MpIHx8IChvZmYgXHUwMDI2IDEpKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRpZiAobmV4dF9vZmYgXHUwMDNjPSBvZmYgfHxcbiYjNDM7XHRcdG5leHRfb2ZmIFx1MDAzZSBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplIHx8XG4mIzQzO1x0XHRuZXh0X29mZiBcdTAwM2UgcmVjX29mZiB8fFxuJiM0MztcdFx0KG5leHRfb2ZmIFx1MDAyNiAxKSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0cmVjX29mZl9zaXplID0gc2l6ZW9mKF9fYmUxNik7XG4mIzQzO1x0cmVjX29mZl90YWJfc2l6ZSA9ICgodTMyKW5vZGUtXHUwMDNlbnVtX3JlY3MgJiM0MzsgMSkgKiByZWNfb2ZmX3NpemU7XG4mIzQzO1x0cmVjX29mZl90YWJfc3RhcnQgPSBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplIC0gcmVjX29mZl90YWJfc2l6ZTtcbiYjNDM7XHRpZiAobmV4dF9vZmYgXHUwMDNlIHJlY19vZmZfdGFiX3N0YXJ0KVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW5saW5lXG4gdTMyIGNoZWNrX2FuZF9jb3JyZWN0X3JlcXVlc3RlZF9sZW5ndGgoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG9mZiwgdTMyIGxlbilcbiB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTM6MDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SEZTUExVU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19faGZzX2JyZWNfZmluZCYjMzQ7LAogICAgJiMzNDtoZnNfYnJlY19nb3RvJiMzNDssCiAgICAmIzM0O2hmc19ibm9kZV9maW5kJiMzNDssCiAgICAmIzM0O2hmc19icmVjX2xlbm9mZiYjMzQ7LAogICAgJiMzNDtoZnNfYnJlY19rZXlsZW4mIzM0OywKICAgICYjMzQ7aGZzX2JyZWNfcmVtb3ZlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIGFuZCB2YWxpZGF0aW9uIGZvciBIRlMmIzQzOyBiLXRyZWUgcmVjb3JkcyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYW5kIGxvZ2ljIGVycm9ycyB3aGVuIHBhcnNpbmcgY29ycnVwdGVkIGZpbGVzeXN0ZW0gaW1hZ2VzLiBGdXp6aW5nIHdpdGggY29ycnVwdGVkIGltYWdlcyB3aWxsIGhlbHAgdmVyaWZ5IHRoZSBjb3JyZWN0bmVzcyBvZiB0aGVzZSBjaGVja3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDZiYTEwNDc4YzIyYzYxMWJiOWQ4ZDBjOWNmMmQxZjcyZGMxNTlhMzcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAyIDEzOjAyOjQ5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvaGZzcGx1cy9iZmluZC5jIGIvZnMvaGZzcGx1cy9iZmluZC5jCmluZGV4IDlhNTVmYTZkNTI5NDI5Li4zNjNmYWYyMTRhMWM2NSAxMDA2NDQKLS0tIGEvZnMvaGZzcGx1cy9iZmluZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmc3BsdXMvYmZpbmQuYwpAQCAtMTA4LDE1ICYjNDM7MTA4LDI4IEBAIGludCBfX2hmc19icmVjX2ZpbmQoc3RydWN0IGhmc19ibm9kZSAqYm5vZGUsIHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwKIAlpbnQgYiwgZTsKIAlpbnQgcmVzOwogCiYjNDM7CWZkLSZndDtyZWNvcmQgPSAtMTsKJiM0MzsJZmQtJmd0O2tleW9mZnNldCA9IC0xOwomIzQzOwlmZC0mZ3Q7a2V5bGVuZ3RoID0gLTE7CiYjNDM7CWZkLSZndDtlbnRyeW9mZnNldCA9IC0xOwomIzQzOwlmZC0mZ3Q7ZW50cnlsZW5ndGggPSAtMTsKJiM0MzsKIAlCVUdfT04oIXJlY19mb3VuZCk7CiYjNDM7CWlmICghaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkKGJub2RlKSkgewomIzQzOwkJcmVzID0gLUVJTzsKJiM0MzsJCWdvdG8gZmFpbDsKJiM0MzsJfQomIzQzOwogCWIgPSAwOwogCWUgPSBibm9kZS0mZ3Q7bnVtX3JlY3MgLSAxOwogCXJlcyA9IC1FTk9FTlQ7CiYjNDM7CWlmIChibm9kZS0mZ3Q7bnVtX3JlY3MgPT0gMCkKJiM0MzsJCWdvdG8gZmFpbDsKIAlkbyB7CiAJCXJlYyA9IChlICYjNDM7IGIpIC8gMjsKIAkJbGVuID0gaGZzX2JyZWNfbGVub2ZmKGJub2RlLCByZWMsICZhbXA7b2ZmKTsKIAkJa2V5bGVuID0gaGZzX2JyZWNfa2V5bGVuKGJub2RlLCByZWMpOwotCQlpZiAoa2V5bGVuID09IDApIHsKJiM0MzsJCWlmIChrZXlsZW4gPT0gMCB8fCBrZXlsZW4gJmd0Oz0gbGVuKSB7CiAJCQlyZXMgPSAtRUlOVkFMOwogCQkJZ290byBmYWlsOwogCQl9CkBAIC0xMzAsNyAmIzQzOzE0Myw3IEBAIGludCBfX2hmc19icmVjX2ZpbmQoc3RydWN0IGhmc19ibm9kZSAqYm5vZGUsIHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwKIAlpZiAocmVjICE9IGUgJmFtcDsmYW1wOyBlICZndDs9IDApIHsKIAkJbGVuID0gaGZzX2JyZWNfbGVub2ZmKGJub2RlLCBlLCAmYW1wO29mZik7CiAJCWtleWxlbiA9IGhmc19icmVjX2tleWxlbihibm9kZSwgZSk7Ci0JCWlmIChrZXlsZW4gPT0gMCkgewomIzQzOwkJaWYgKGtleWxlbiA9PSAwIHx8IGtleWxlbiAmZ3Q7PSBsZW4pIHsKIAkJCXJlcyA9IC1FSU5WQUw7CiAJCQlnb3RvIGZhaWw7CiAJCX0KQEAgLTIzMiw2ICYjNDM7MjQ1LDE0IEBAIGludCBoZnNfYnJlY19nb3RvKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgaW50IGNudCkKIAogCWJub2RlID0gZmQtJmd0O2Jub2RlOwogCXRyZWUgPSBibm9kZS0mZ3Q7dHJlZTsKJiM0MzsJaWYgKCFoZnNfYm5vZGVfbnVtX3JlY3NfdmFsaWQoYm5vZGUpKSB7CiYjNDM7CQlyZXMgPSAtRUlPOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsJaWYgKGJub2RlLSZndDtudW1fcmVjcyA9PSAwKSB7CiYjNDM7CQlyZXMgPSAtRU5PRU5UOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KIAogCWlmIChjbnQgJmx0OyAwKSB7CiAJCWNudCA9IC1jbnQ7CkBAIC0yNzQsNyAmIzQzOzI5NSw3IEBAIGludCBoZnNfYnJlY19nb3RvKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgaW50IGNudCkKIAogCWxlbiA9IGhmc19icmVjX2xlbm9mZihibm9kZSwgZmQtJmd0O3JlY29yZCwgJmFtcDtvZmYpOwogCWtleWxlbiA9IGhmc19icmVjX2tleWxlbihibm9kZSwgZmQtJmd0O3JlY29yZCk7Ci0JaWYgKGtleWxlbiA9PSAwKSB7CiYjNDM7CWlmIChrZXlsZW4gPT0gMCB8fCBrZXlsZW4gJmd0Oz0gbGVuKSB7CiAJCXJlcyA9IC1FSU5WQUw7CiAJCWdvdG8gb3V0OwogCX0KZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvYm5vZGUuYyBiL2ZzL2hmc3BsdXMvYm5vZGUuYwppbmRleCBkMDg4ZmI3ZWIwZGZhMy4uZjE4NWMwMTJkMDkwMjYgMTAwNjQ0Ci0tLSBhL2ZzL2hmc3BsdXMvYm5vZGUuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnNwbHVzL2Jub2RlLmMKQEAgLTM1MiwxNSAmIzQzOzM1MiwyMiBAQCB2b2lkIGhmc19ibm9kZV9kdW1wKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUpCiAJc3RydWN0IGhmc19ibm9kZV9kZXNjIGRlc2M7CiAJX19iZTMyIGNuaWQ7CiAJaW50IGksIG9mZiwga2V5X29mZjsKJiM0MzsJdTE2IG51bV9yZWNzOwogCiAJaGZzX2RiZygmIzM0O25vZGUgJWRcbiYjMzQ7LCBub2RlLSZndDt0aGlzKTsKIAloZnNfYm5vZGVfcmVhZChub2RlLCAmYW1wO2Rlc2MsIDAsIHNpemVvZihkZXNjKSk7CiYjNDM7CW51bV9yZWNzID0gbm9kZS0mZ3Q7bnVtX3JlY3M7CiAJaGZzX2RiZygmIzM0O25leHQgJWQsIHByZXYgJWQsIHR5cGUgJWQsIGhlaWdodCAlZCwgbnVtX3JlY3MgJWRcbiYjMzQ7LAogCQliZTMyX3RvX2NwdShkZXNjLm5leHQpLCBiZTMyX3RvX2NwdShkZXNjLnByZXYpLAogCQlkZXNjLnR5cGUsIGRlc2MuaGVpZ2h0LCBiZTE2X3RvX2NwdShkZXNjLm51bV9yZWNzKSk7CiAKJiM0MzsJaWYgKCFoZnNfYm5vZGVfbnVtX3JlY3NfdmFsaWQobm9kZSkpIHsKJiM0MzsJCWhmc19kYmcoJiMzNDtpbnZhbGlkIG51bV9yZWNzICV1XG4mIzM0OywgbnVtX3JlY3MpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiAJb2ZmID0gbm9kZS0mZ3Q7dHJlZS0mZ3Q7bm9kZV9zaXplIC0gMjsKLQlmb3IgKGkgPSBiZTE2X3RvX2NwdShkZXNjLm51bV9yZWNzKTsgaSAmZ3Q7PSAwOyBvZmYgLT0gMiwgaS0tKSB7CiYjNDM7CWZvciAoaSA9IG51bV9yZWNzOyBpICZndDs9IDA7IG9mZiAtPSAyLCBpLS0pIHsKIAkJa2V5X29mZiA9IGhmc19ibm9kZV9yZWFkX3UxNihub2RlLCBvZmYpOwogCQloZnNfZGJnKCYjMzQ7IGtleV9vZmYgJWQmIzM0Oywga2V5X29mZik7CiAJCWlmIChpICZhbXA7JmFtcDsgbm9kZS0mZ3Q7dHlwZSA9PSBIRlNfTk9ERV9JTkRFWCkgewpAQCAtNTc5LDYgJiM0Mzs1ODYsOSBAQCBzdHJ1Y3QgaGZzX2Jub2RlICpoZnNfYm5vZGVfZmluZChzdHJ1Y3QgaGZzX2J0cmVlICp0cmVlLCB1MzIgbnVtKQogCQlnb3RvIG5vZGVfZXJyb3I7CiAJfQogCiYjNDM7CWlmICghaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkKG5vZGUpKQomIzQzOwkJZ290byBub2RlX2Vycm9yOwomIzQzOwogCXJlY19vZmYgPSB0cmVlLSZndDtub2RlX3NpemUgLSAyOwogCW9mZiA9IGhmc19ibm9kZV9yZWFkX3UxNihub2RlLCByZWNfb2ZmKTsKIAlpZiAob2ZmICE9IHNpemVvZihzdHJ1Y3QgaGZzX2Jub2RlX2Rlc2MpKQpAQCAtNTg2LDkgJiM0Mzs1OTYsNyBAQCBzdHJ1Y3QgaGZzX2Jub2RlICpoZnNfYm5vZGVfZmluZChzdHJ1Y3QgaGZzX2J0cmVlICp0cmVlLCB1MzIgbnVtKQogCWZvciAoaSA9IDE7IGkgJmx0Oz0gbm9kZS0mZ3Q7bnVtX3JlY3M7IG9mZiA9IG5leHRfb2ZmLCBpJiM0MzsmIzQzOykgewogCQlyZWNfb2ZmIC09IDI7CiAJCW5leHRfb2ZmID0gaGZzX2Jub2RlX3JlYWRfdTE2KG5vZGUsIHJlY19vZmYpOwotCQlpZiAobmV4dF9vZmYgJmx0Oz0gb2ZmIHx8Ci0JCSAgICBuZXh0X29mZiAmZ3Q7IHRyZWUtJmd0O25vZGVfc2l6ZSB8fAotCQkgICAgbmV4dF9vZmYgJmFtcDsgMSkKJiM0MzsJCWlmICghaGZzX2JyZWNfcmFuZ2VfdmFsaWQobm9kZSwgb2ZmLCBuZXh0X29mZiwgcmVjX29mZikpCiAJCQlnb3RvIG5vZGVfZXJyb3I7CiAJCWVudHJ5X3NpemUgPSBuZXh0X29mZiAtIG9mZjsKIAkJaWYgKG5vZGUtJmd0O3R5cGUgIT0gSEZTX05PREVfSU5ERVggJmFtcDsmYW1wOwpkaWZmIC0tZ2l0IGEvZnMvaGZzcGx1cy9icmVjLmMgYi9mcy9oZnNwbHVzL2JyZWMuYwppbmRleCBlM2RmODkyODQwNzlkYi4uZmUyZTA2MzY3OThjZWMgMTAwNjQ0Ci0tLSBhL2ZzL2hmc3BsdXMvYnJlYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmc3BsdXMvYnJlYy5jCkBAIC0yMCwzOCAmIzQzOzIwLDQ0IEBAIHN0YXRpYyBpbnQgaGZzX2J0cmVlX2luY19oZWlnaHQoc3RydWN0IGhmc19idHJlZSAqKTsKIHUxNiBoZnNfYnJlY19sZW5vZmYoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTE2IHJlYywgdTE2ICpvZmYpCiB7CiAJX19iZTE2IHJldHZhbFsyXTsKLQl1MTYgZGF0YW9mZjsKJiM0MzsJdTE2IGRhdGFfb2ZmOwomIzQzOwl1MTYgbmV4dF9vZmY7CiAKLQlkYXRhb2ZmID0gbm9kZS0mZ3Q7dHJlZS0mZ3Q7bm9kZV9zaXplIC0gKHJlYyAmIzQzOyAyKSAqIDI7Ci0JaGZzX2Jub2RlX3JlYWQobm9kZSwgcmV0dmFsLCBkYXRhb2ZmLCA0KTsKJiM0MzsJaWYgKCFoZnNfYnJlY19yZWNvcmRfdmFsaWQobm9kZSwgcmVjKSkgewomIzQzOwkJKm9mZiA9IDA7CiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJfQomIzQzOwomIzQzOwlkYXRhX29mZiA9IG5vZGUtJmd0O3RyZWUtJmd0O25vZGVfc2l6ZSAtIChyZWMgJiM0MzsgMikgKiAyOwomIzQzOwloZnNfYm5vZGVfcmVhZChub2RlLCByZXR2YWwsIGRhdGFfb2ZmLCA0KTsKIAkqb2ZmID0gYmUxNl90b19jcHUocmV0dmFsWzFdKTsKLQlyZXR1cm4gYmUxNl90b19jcHUocmV0dmFsWzBdKSAtICpvZmY7CiYjNDM7CW5leHRfb2ZmID0gYmUxNl90b19jcHUocmV0dmFsWzBdKTsKJiM0MzsJaWYgKCFoZnNfYnJlY19yYW5nZV92YWxpZChub2RlLCAqb2ZmLCBuZXh0X29mZiwgZGF0YV9vZmYpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CXJldHVybiBuZXh0X29mZiAtICpvZmY7CiB9CiAKIC8qIEdldCB0aGUgbGVuZ3RoIG9mIHRoZSBrZXkgZnJvbSBhIGtleWVkIHJlY29yZCAqLwogdTE2IGhmc19icmVjX2tleWxlbihzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MTYgcmVjKQogewotCXUxNiByZXR2YWwsIHJlY29mZjsKJiM0MzsJdTE2IHJldHZhbCwgcmVjb2ZmLCBsZW47CiAKIAlpZiAobm9kZS0mZ3Q7dHlwZSAhPSBIRlNfTk9ERV9JTkRFWCAmYW1wOyZhbXA7IG5vZGUtJmd0O3R5cGUgIT0gSEZTX05PREVfTEVBRikKIAkJcmV0dXJuIDA7CiYjNDM7CWlmICghaGZzX2JyZWNfcmVjb3JkX3ZhbGlkKG5vZGUsIHJlYykpCiYjNDM7CQlyZXR1cm4gMDsKIAogCWlmICgobm9kZS0mZ3Q7dHlwZSA9PSBIRlNfTk9ERV9JTkRFWCkgJmFtcDsmYW1wOwogCSAgICEobm9kZS0mZ3Q7dHJlZS0mZ3Q7YXR0cmlidXRlcyAmYW1wOyBIRlNfVFJFRV9WQVJJRFhLRVlTKSAmYW1wOyZhbXA7CiAJICAgKG5vZGUtJmd0O3RyZWUtJmd0O2NuaWQgIT0gSEZTUExVU19BVFRSX0NOSUQpKSB7CiAJCXJldHZhbCA9IG5vZGUtJmd0O3RyZWUtJmd0O21heF9rZXlfbGVuICYjNDM7IDI7CiAJfSBlbHNlIHsKLQkJcmVjb2ZmID0gaGZzX2Jub2RlX3JlYWRfdTE2KG5vZGUsCi0JCQlub2RlLSZndDt0cmVlLSZndDtub2RlX3NpemUgLSAocmVjICYjNDM7IDEpICogMik7Ci0JCWlmICghcmVjb2ZmKQotCQkJcmV0dXJuIDA7Ci0JCWlmIChyZWNvZmYgJmd0OyBub2RlLSZndDt0cmVlLSZndDtub2RlX3NpemUgLSAyKSB7Ci0JCQlwcl9lcnIoJiMzNDtyZWNvZmYgJWQgdG9vIGxhcmdlXG4mIzM0OywgcmVjb2ZmKTsKJiM0MzsJCWxlbiA9IGhmc19icmVjX2xlbm9mZihub2RlLCByZWMsICZhbXA7cmVjb2ZmKTsKJiM0MzsJCWlmIChsZW4gPT0gMCkKIAkJCXJldHVybiAwOwotCQl9CiAKIAkJcmV0dmFsID0gaGZzX2Jub2RlX3JlYWRfdTE2KG5vZGUsIHJlY29mZikgJiM0MzsgMjsKLQkJaWYgKHJldHZhbCAmZ3Q7IG5vZGUtJmd0O3RyZWUtJmd0O21heF9rZXlfbGVuICYjNDM7IDIpIHsKJiM0MzsJCWlmIChyZXR2YWwgJmd0Oz0gbGVuIHx8IHJldHZhbCAmZ3Q7IG5vZGUtJmd0O3RyZWUtJmd0O21heF9rZXlfbGVuICYjNDM7IDIpIHsKIAkJCXByX2VycigmIzM0O2tleWxlbiAlZCB0b28gbGFyZ2VcbiYjMzQ7LAogCQkJCXJldHZhbCk7CiAJCQlyZXR2YWwgPSAwOwpAQCAtMTg1LDEwICYjNDM7MTkxLDE1IEBAIGludCBoZnNfYnJlY19yZW1vdmUoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkKQogCXRyZWUgPSBmZC0mZ3Q7dHJlZTsKIAlub2RlID0gZmQtJmd0O2Jub2RlOwogYWdhaW46CiYjNDM7CWlmICghaGZzX2JyZWNfcmVjb3JkX3ZhbGlkKG5vZGUsIGZkLSZndDtyZWNvcmQpKQomIzQzOwkJcmV0dXJuIC1FSU87CiYjNDM7CiAJcmVjX29mZiA9IHRyZWUtJmd0O25vZGVfc2l6ZSAtIChmZC0mZ3Q7cmVjb3JkICYjNDM7IDIpICogMjsKIAllbmRfb2ZmID0gdHJlZS0mZ3Q7bm9kZV9zaXplIC0gKG5vZGUtJmd0O251bV9yZWNzICYjNDM7IDEpICogMjsKIAogCWlmIChub2RlLSZndDt0eXBlID09IEhGU19OT0RFX0xFQUYpIHsKJiM0MzsJCWlmICh0cmVlLSZndDtsZWFmX2NvdW50ID09IDApCiYjNDM7CQkJcmV0dXJuIC1FSU87CiAJCXRyZWUtJmd0O2xlYWZfY291bnQtLTsKIAkJbWFya19pbm9kZV9kaXJ0eSh0cmVlLSZndDtpbm9kZSk7CiAJfQpkaWZmIC0tZ2l0IGEvZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmggYi9mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaAppbmRleCBlYzA0YjgyYWQ5Mjc4Ny4uN2EzNDVjNGQxYzA2NDAgMTAwNjQ0Ci0tLSBhL2ZzL2hmc3BsdXMvaGZzcGx1c19mcy5oCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmc3BsdXMvaGZzcGx1c19mcy5oCkBAIC01ODcsNiAmIzQzOzU4Nyw2OCBAQCBib29sIGlzX2Jub2RlX29mZnNldF92YWxpZChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgb2ZmKQogCXJldHVybiBpc192YWxpZDsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUKJiM0Mztib29sIGhmc19ibm9kZV9udW1fcmVjc192YWxpZChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlKQomIzQzO3sKJiM0MzsJdTMyIG5vZGVfc2l6ZTsKJiM0MzsJdTMyIHJlY19vZmZfc2l6ZTsKJiM0MzsJdTMyIHJlY19vZmZfdGFiX3NpemU7CiYjNDM7CXUzMiByZWNfYXJlYV9zaXplOwomIzQzOwomIzQzOwlpZiAoIW5vZGUgfHwgIW5vZGUtJmd0O3RyZWUpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CW5vZGVfc2l6ZSA9IG5vZGUtJmd0O3RyZWUtJmd0O25vZGVfc2l6ZTsKJiM0MzsJcmVjX29mZl9zaXplID0gc2l6ZW9mKF9fYmUxNik7CiYjNDM7CWlmIChub2RlX3NpemUgJmx0OyBzaXplb2Yoc3RydWN0IGhmc19ibm9kZV9kZXNjKSAmIzQzOyByZWNfb2ZmX3NpemUpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CXJlY19hcmVhX3NpemUgPSBub2RlX3NpemUgLSBzaXplb2Yoc3RydWN0IGhmc19ibm9kZV9kZXNjKTsKJiM0MzsJcmVjX29mZl90YWJfc2l6ZSA9ICgodTMyKW5vZGUtJmd0O251bV9yZWNzICYjNDM7IDEpICogcmVjX29mZl9zaXplOwomIzQzOwomIzQzOwlyZXR1cm4gcmVjX29mZl90YWJfc2l6ZSAmbHQ7PSByZWNfYXJlYV9zaXplOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lCiYjNDM7Ym9vbCBoZnNfYnJlY19yZWNvcmRfdmFsaWQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgaW50IHJlY29yZCkKJiM0Mzt7CiYjNDM7CWlmICghaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkKG5vZGUpKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwlpZiAocmVjb3JkICZsdDsgMCkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJlY29yZCAmbHQ7IG5vZGUtJmd0O251bV9yZWNzOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lCiYjNDM7Ym9vbCBoZnNfYnJlY19yYW5nZV92YWxpZChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MTYgb2ZmLCB1MTYgbmV4dF9vZmYsCiYjNDM7CQkJICB1MTYgcmVjX29mZikKJiM0Mzt7CiYjNDM7CXUzMiByZWNfb2ZmX3NpemU7CiYjNDM7CXUzMiByZWNfb2ZmX3RhYl9zaXplOwomIzQzOwl1MzIgcmVjX29mZl90YWJfc3RhcnQ7CiYjNDM7CiYjNDM7CWlmICghbm9kZSB8fCAhbm9kZS0mZ3Q7dHJlZSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJaWYgKG9mZiAmbHQ7IHNpemVvZihzdHJ1Y3QgaGZzX2Jub2RlX2Rlc2MpIHx8IChvZmYgJmFtcDsgMSkpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CWlmIChuZXh0X29mZiAmbHQ7PSBvZmYgfHwKJiM0MzsJCW5leHRfb2ZmICZndDsgbm9kZS0mZ3Q7dHJlZS0mZ3Q7bm9kZV9zaXplIHx8CiYjNDM7CQluZXh0X29mZiAmZ3Q7IHJlY19vZmYgfHwKJiM0MzsJCShuZXh0X29mZiAmYW1wOyAxKSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJcmVjX29mZl9zaXplID0gc2l6ZW9mKF9fYmUxNik7CiYjNDM7CXJlY19vZmZfdGFiX3NpemUgPSAoKHUzMilub2RlLSZndDtudW1fcmVjcyAmIzQzOyAxKSAqIHJlY19vZmZfc2l6ZTsKJiM0MzsJcmVjX29mZl90YWJfc3RhcnQgPSBub2RlLSZndDt0cmVlLSZndDtub2RlX3NpemUgLSByZWNfb2ZmX3RhYl9zaXplOwomIzQzOwlpZiAobmV4dF9vZmYgJmd0OyByZWNfb2ZmX3RhYl9zdGFydCkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7fQomIzQzOwogc3RhdGljIGlubGluZQogdTMyIGNoZWNrX2FuZF9jb3JyZWN0X3JlcXVlc3RlZF9sZW5ndGgoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG9mZiwgdTMyIGxlbikKIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTM6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMwMwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipWYWxpZGF0aW5nIEhGUyYjNDM7IEItVHJlZSBOb2RlIFJlY29yZHMqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiByZXZpZXdpbmcgdGhpcyBwYXRjaCB0aGF0IGZvY3VzZXMgb24gZW5oYW5jaW5nIHRoZSBpbnRlZ3JpdHkgb2Ygb3VyIEhGUyYjNDM7IGltcGxlbWVudGF0aW9uLiBUaGUgY29yZSBvZiB0aGlzIGlzIGFkZGluZyB2YWxpZGF0aW9uIGNoZWNrcyBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBCLXRyZWUgbm9kZSByZWNvcmRzLiBJdCBzZWVtcyB0aGUgYXV0aG9yIGhhcyBzdHJhdGVnaWNhbGx5IG1vZGlmaWVkIGBmcy9oZnNwbHVzL2JmaW5kLmNgLCBgZnMvaGZzcGx1cy9ibm9kZS5jYCwgYGZzL2hmc3BsdXMvYnJlYy5jYCwgYW5kIGBmcy9oZnNwbHVzL2hmc3BsdXNfZnMuaGAgdG8gaW50cm9kdWNlIHRoZXNlIGNydWNpYWwgc2FmZWd1YXJkcy4gSSYjMzk7bSBzZWVpbmcgbmV3IGZ1bmN0aW9ucyBsaWtlIGBoZnNfYm5vZGVfbnVtX3JlY3NfdmFsaWRgLCBgaGZzX2JyZWNfcmVjb3JkX3ZhbGlkYCwgYW5kIGBoZnNfYnJlY19yYW5nZV92YWxpZGAgYmVpbmcgaW1wbGVtZW50ZWQuIFRoaXMgaXMgcHJldHR5IHN0YW5kYXJkOyB0aGVzZSBjaGVja3MgYXJlIHRoZW4gaW50ZWdyYXRlZCB0byB2YWxpZGF0ZSB0aGUgYm91bmRzIHdoZW5ldmVyIGFjY2Vzc2luZyByZWNvcmRzIHdpdGhpbiB0aGUgQi10cmVlLCBlbnN1cmluZyBkYXRhIGFjY2VzcyByZW1haW5zIHdpdGhpbiB0aGUgZXhwZWN0ZWQgcGFyYW1ldGVycy4KClRoaXMgaXMgZnVuZGFtZW50YWxseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhICp2ZXJ5KiBpbXBvcnRhbnQgb25lLiBJdCYjMzk7cyBkZXNpZ25lZCB0byBtaXRpZ2F0ZSB0aGUgcmlza3Mgb2Ygb3V0LW9mLWJvdW5kcyByZWFkcyBhbmQgd3JpdGVzLCBhcyB3ZWxsIGFzIHByZXZlbnQgbG9naWMgZXJyb3JzIHRoYXQgY291bGQgYXJpc2Ugd2hlbiBkZWFsaW5nIHdpdGggcG90ZW50aWFsbHkgY29ycnVwdGVkIEhGUyYjNDM7IGltYWdlcy4gVGhpcyBraW5kIG9mIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBpcyBleGFjdGx5IHdoYXQgd2Ugd2FudCB0byBzZWUuCgpOb3csIGxldCYjMzk7cyBtYWtlIHN1cmUgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGFyZSBjb3JyZWN0LiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYEhGU1BMVVNfRlNgIGlzIGluZGVlZCB0aGUgY29ycmVjdCBjb25maWcgb3B0aW9uIGZvciBlbmFibGluZyBIRlMmIzQzOy4gVGhhdCBzaG91bGQgYmUgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYGZzL2hmc3BsdXMvS2NvbmZpZ2Agb3Igc29tZXdoZXJlIHNpbWlsYXIgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLgoKSSBzZWUgdGhleSYjMzk7dmUgYWxzbyBtb2RpZmllZCBxdWl0ZSBhIGZldyBmdW5jdGlvbnM6IGBfX2hmc19icmVjX2ZpbmRgLCBgaGZzX2JyZWNfZ290b2AsIGBoZnNfYm5vZGVfZHVtcGAsIGBoZnNfYm5vZGVfZmluZGAsIGBoZnNfYnJlY19sZW5vZmZgLCBgaGZzX2JyZWNfa2V5bGVuYCwgYW5kIGBoZnNfYnJlY19yZW1vdmVgLiBUaGlzIGlzIGV4YWN0bHkgdGhlIHNvcnQgb2YgYXVkaXQgSSYjMzk7ZCBleHBlY3QgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEzOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0hGU1BMVVNfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9oZnNwbHVzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaGZzcGx1cy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9oZnNwbHVzL0tjb25maWc6Mjpjb25maWcgSEZTUExVU19GU1xuZnMvaGZzcGx1cy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtBcHBsZSBFeHRlbmRlZCBIRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbmZzL2hmc3BsdXMvS2NvbmZpZz0xOD1jb25maWcgSEZTUExVU19LVU5JVF9URVNUXG5mcy9oZnNwbHVzL0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgSEZTJiM0MzsgZmlsZXN5c3RlbVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG5mcy9oZnNwbHVzL0tjb25maWc6MjA6XHRkZXBlbmRzIG9uIEhGU1BMVVNfRlMgXHUwMDI2XHUwMDI2IEtVTklUXG5mcy9oZnNwbHVzL0tjb25maWctMjEtXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEzOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyNDYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEhGUyYjNDM7IEZpbGVzeXN0ZW0gSW50ZXJhY3Rpb25zKioKCk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGluIHBsYXkgaGVyZSBpcyBgSEZTUExVU19GU2AuIEdpdmVuIHRoYXQgY29udGV4dCwgSSBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIGZ1bmN0aW9uczogYF9faGZzX2JyZWNfZmluZGAsIGBoZnNfYnJlY19nb3RvYCwgYGhmc19ibm9kZV9kdW1wYCwgYGhmc19ibm9kZV9maW5kYCwgYGhmc19icmVjX2xlbm9mZmAsIGBoZnNfYnJlY19rZXlsZW5gLCBhbmQgYGhmc19icmVjX3JlbW92ZWAuIFRoZXNlIGFyZSBhbGwgd2l0aGluIHRoZSBIRlMmIzQzOyBjb250ZXh0IGFuZCwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgYXJlIGFic29sdXRlbHkga2V5IGNvbXBvbmVudHMgd2hlbiBtb3VudGluZyBhbmQgaW50ZXJhY3Rpbmcgd2l0aCBhbiBIRlMmIzQzOyBmaWxlc3lzdGVtLiBUaGV5JiMzOTtyZSBjbGVhcmx5IHJlYWNoYWJsZSBkdXJpbmcgdHlwaWNhbCBmaWxlIHN5c3RlbSBvcGVyYXRpb25zLgoKTXkgcHJpbWFyeSBmb2N1cyBuZWVkcyB0byBiZSBvbjogYF9faGZzX2JyZWNfZmluZGAsIGBoZnNfYnJlY19nb3RvYCwgYGhmc19ibm9kZV9maW5kYCwgYGhmc19icmVjX2xlbm9mZmAsIGBoZnNfYnJlY19rZXlsZW5gLCBhbmQgYGhmc19icmVjX3JlbW92ZWAuIE5vdywgYmVmb3JlIEkgcHJvY2VlZCB3aXRoIGFueSBkZWVwZXIgYW5hbHlzaXMsIEkgcmVhbGx5IG5lZWQgdG8gdGFrZSBhIHF1aWNrIGxvb2sgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgbWlnaHQgaW1wYWN0IHRoaXMuIEdvdHRhIG1ha2Ugc3VyZSBJJiMzOTttIGNvbnNpZGVyaW5nIGFsbCByZWxldmFudCBmYWN0b3JzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBIRlNQTFVTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvaGZzcGx1cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2hmc3BsdXMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvaGZzcGx1cy9LY29uZmlnOjI6Y29uZmlnIEhGU1BMVVNfRlNcbmZzL2hmc3BsdXMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7QXBwbGUgRXh0ZW5kZWQgSEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9oZnNwbHVzL0tjb25maWctMTctXG5mcy9oZnNwbHVzL0tjb25maWc6MTg6Y29uZmlnIEhGU1BMVVNfS1VOSVRfVEVTVFxuZnMvaGZzcGx1cy9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIEhGUyYjNDM7IGZpbGVzeXN0ZW1cJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4NzIKCQkJCQkJCW91dHB1dDogMTQ3CgkJCQkJCQl0aG91Z2h0czogMTU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEhGUyYjNDM7IFBhdGNoKioKCk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGlzIHN0cmFpZ2h0Zm9yd2FyZDogYEhGU1BMVVNfRlNgLiBUaGUgcGF0Y2ggaXRzZWxmIGxvb2tzIHNvbGlkOyBpdCYjMzk7cyBmdW5jdGlvbmFsbHkgc291bmQgYW5kIGFkZHJlc3NlcyBidWdzIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIGNvcnJ1cHRpb24gaW4gSEZTJiM0MzsgaW1hZ2VzLiBUaGlzIGlzIHByZWNpc2VseSB0aGUga2luZCBvZiB0aGluZyB0aGF0IGNhdGNoZXMgbXkgYXR0ZW50aW9uLiBUaGUgY29yZSBvZiB0aGUgZml4IHJldm9sdmVzIGFyb3VuZCBhZGRpbmcgYm91bmRzIGNoZWNraW5nIHRvIGItdHJlZSByZWNvcmRzLgoKR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgcGF0Y2gsIHdpdGggdGhlIGVtcGhhc2lzIG9uIGlucHV0IHZhbGlkYXRpb24gYW5kIG1pdGlnYXRpbmcgaXNzdWVzIGFyaXNpbmcgZnJvbSBwb3RlbnRpYWxseSBtYWxmb3JtZWQgZGF0YSwgZnV6emluZyBpcyBkZWZpbml0ZWx5IHdhcnJhbnRlZCDigJMgYSByZXNvdW5kaW5nICYjMzQ7VHJ1ZSYjMzQ7LgoKTm93LCBsZXQmIzM5O3MgZHJpbGwgZG93biBvbiB0aGUga2V5IHN5bWJvbHMgdG8gdGFyZ2V0IHdpdGggdGhlIGZ1enplci4gTXkgZm9jdXMgd2lsbCBiZSBvbiBgX19oZnNfYnJlY19maW5kYCwgYGhmc19icmVjX2dvdG9gLCBgaGZzX2Jub2RlX2ZpbmRgLCBgaGZzX2JyZWNfbGVub2ZmYCwgYGhmc19icmVjX2tleWxlbmAsIGFuZCBgaGZzX2JyZWNfcmVtb3ZlYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBjZW50cmFsIHRvIGItdHJlZSByZWNvcmQgaGFuZGxpbmcsIGFuZCB0aGVyZWZvcmUsIHRoZXkgYXJlIHRoZSBwcmltZSBjYW5kaWRhdGVzIHRvIGV4cG9zZSBhbnkgdnVsbmVyYWJpbGl0aWVzIHJlbGF0ZWQgdG8gdGhlIG5ldyBib3VuZHMgY2hlY2tzLgoKTXkgcmVhc29uaW5nIGlzIHRoaXM6IHRoZSBwYXRjaCYjMzk7cyBwdXJwb3NlIGlzIHRvIHZhbGlkYXRlIGFuZCBlbnN1cmUgdGhhdCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBsb2dpY2FsIGVycm9ycyBhcmUgcHJldmVudGVkIHdoZW4gcGFyc2luZyBjb3JydXB0ZWQgSEZTJiM0MzsgZmlsZXN5c3RlbSBpbWFnZXMuIEZ1enppbmcsIHNwZWNpZmljYWxseSB3aXRoIGludGVudGlvbmFsbHkgY29ycnVwdGVkIGltYWdlcywgd2lsbCBwcm92aWRlIHRoZSBtb3N0IGRpcmVjdCBhbmQgZWZmZWN0aXZlIG1lYW5zIHRvIHZlcmlmeSB0aGUgaW50ZWdyaXR5IGFuZCBlZmZlY3RpdmVuZXNzIG9mIHRoZXNlIGFkZGVkIGNoZWNrcy4gV2UgbmVlZCB0byB0aHJvdyBldmVyeXRoaW5nIHdlIGNhbiBhdCB0aGVzZSBmdW5jdGlvbnMgdG8gbWFrZSBzdXJlIHRoZSBmaXggaG9sZHMgdXAgdW5kZXIgcHJlc3N1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTM6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU1BMVVNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2hmc19icmVjX2ZpbmQmIzM0OywKICAgICYjMzQ7aGZzX2JyZWNfZ290byYjMzQ7LAogICAgJiMzNDtoZnNfYm5vZGVfZmluZCYjMzQ7LAogICAgJiMzNDtoZnNfYnJlY19sZW5vZmYmIzM0OywKICAgICYjMzQ7aGZzX2JyZWNfa2V5bGVuJiMzNDssCiAgICAmIzM0O2hmc19icmVjX3JlbW92ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBhbmQgdmFsaWRhdGlvbiBmb3IgSEZTJiM0MzsgYi10cmVlIHJlY29yZHMgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBsb2dpYyBlcnJvcnMgd2hlbiBwYXJzaW5nIGNvcnJ1cHRlZCBmaWxlc3lzdGVtIGltYWdlcy4gRnV6emluZyB3aXRoIGNvcnJ1cHRlZCBpbWFnZXMgd2lsbCBoZWxwIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlc2UgY2hlY2tzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtIRlNQTFVTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19oZnNfYnJlY19maW5kJiMzNDssCiAgICAmIzM0O2hmc19icmVjX2dvdG8mIzM0OywKICAgICYjMzQ7aGZzX2Jub2RlX2ZpbmQmIzM0OywKICAgICYjMzQ7aGZzX2JyZWNfbGVub2ZmJiMzNDssCiAgICAmIzM0O2hmc19icmVjX2tleWxlbiYjMzQ7LAogICAgJiMzNDtoZnNfYnJlY19yZW1vdmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgYW5kIHZhbGlkYXRpb24gZm9yIEhGUyYjNDM7IGItdHJlZSByZWNvcmRzIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgbG9naWMgZXJyb3JzIHdoZW4gcGFyc2luZyBjb3JydXB0ZWQgZmlsZXN5c3RlbSBpbWFnZXMuIEZ1enppbmcgd2l0aCBjb3JydXB0ZWQgaW1hZ2VzIHdpbGwgaGVscCB2ZXJpZnkgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZXNlIGNoZWNrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEzOjAyOjUxLjExMTc2NDk5NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NjM3NjE5MzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhGU1BMVVNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2hmc19icmVjX2ZpbmRcIixcbiAgICBcImhmc19icmVjX2dvdG9cIixcbiAgICBcImhmc19ibm9kZV9maW5kXCIsXG4gICAgXCJoZnNfYnJlY19sZW5vZmZcIixcbiAgICBcImhmc19icmVjX2tleWxlblwiLFxuICAgIFwiaGZzX2JyZWNfcmVtb3ZlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgYW5kIHZhbGlkYXRpb24gZm9yIEhGUysgYi10cmVlIHJlY29yZHMgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBsb2dpYyBlcnJvcnMgd2hlbiBwYXJzaW5nIGNvcnJ1cHRlZCBmaWxlc3lzdGVtIGltYWdlcy4gRnV6emluZyB3aXRoIGNvcnJ1cHRlZCBpbWFnZXMgd2lsbCBoZWxwIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlc2UgY2hlY2tzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMzowMjo1MS4xMTE3NzE4NTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3MjEyODc0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDZiYTEwNDc4YzIyYzYxMWJiOWQ4ZDBjOWNmMmQxZjcyZGMxNTlhMzdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMiAxMzowMjo0OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9oZnNwbHVzL2JmaW5kLmMgYi9mcy9oZnNwbHVzL2JmaW5kLmNcXG5pbmRleCA5YTU1ZmE2ZDUyOTQyOS4uMzYzZmFmMjE0YTFjNjUgMTAwNjQ0XFxuLS0tIGEvZnMvaGZzcGx1cy9iZmluZC5jXFxuKysrIGIvZnMvaGZzcGx1cy9iZmluZC5jXFxuQEAgLTEwOCwxNSArMTA4LDI4IEBAIGludCBfX2hmc19icmVjX2ZpbmQoc3RydWN0IGhmc19ibm9kZSAqYm5vZGUsIHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCxcXG4gXFx0aW50IGIsIGU7XFxuIFxcdGludCByZXM7XFxuIFxcbitcXHRmZC1cXHUwMDNlcmVjb3JkID0gLTE7XFxuK1xcdGZkLVxcdTAwM2VrZXlvZmZzZXQgPSAtMTtcXG4rXFx0ZmQtXFx1MDAzZWtleWxlbmd0aCA9IC0xO1xcbitcXHRmZC1cXHUwMDNlZW50cnlvZmZzZXQgPSAtMTtcXG4rXFx0ZmQtXFx1MDAzZWVudHJ5bGVuZ3RoID0gLTE7XFxuK1xcbiBcXHRCVUdfT04oIXJlY19mb3VuZCk7XFxuK1xcdGlmICghaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkKGJub2RlKSkge1xcbitcXHRcXHRyZXMgPSAtRUlPO1xcbitcXHRcXHRnb3RvIGZhaWw7XFxuK1xcdH1cXG4rXFxuIFxcdGIgPSAwO1xcbiBcXHRlID0gYm5vZGUtXFx1MDAzZW51bV9yZWNzIC0gMTtcXG4gXFx0cmVzID0gLUVOT0VOVDtcXG4rXFx0aWYgKGJub2RlLVxcdTAwM2VudW1fcmVjcyA9PSAwKVxcbitcXHRcXHRnb3RvIGZhaWw7XFxuIFxcdGRvIHtcXG4gXFx0XFx0cmVjID0gKGUgKyBiKSAvIDI7XFxuIFxcdFxcdGxlbiA9IGhmc19icmVjX2xlbm9mZihibm9kZSwgcmVjLCBcXHUwMDI2b2ZmKTtcXG4gXFx0XFx0a2V5bGVuID0gaGZzX2JyZWNfa2V5bGVuKGJub2RlLCByZWMpO1xcbi1cXHRcXHRpZiAoa2V5bGVuID09IDApIHtcXG4rXFx0XFx0aWYgKGtleWxlbiA9PSAwIHx8IGtleWxlbiBcXHUwMDNlPSBsZW4pIHtcXG4gXFx0XFx0XFx0cmVzID0gLUVJTlZBTDtcXG4gXFx0XFx0XFx0Z290byBmYWlsO1xcbiBcXHRcXHR9XFxuQEAgLTEzMCw3ICsxNDMsNyBAQCBpbnQgX19oZnNfYnJlY19maW5kKHN0cnVjdCBoZnNfYm5vZGUgKmJub2RlLCBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsXFxuIFxcdGlmIChyZWMgIT0gZSBcXHUwMDI2XFx1MDAyNiBlIFxcdTAwM2U9IDApIHtcXG4gXFx0XFx0bGVuID0gaGZzX2JyZWNfbGVub2ZmKGJub2RlLCBlLCBcXHUwMDI2b2ZmKTtcXG4gXFx0XFx0a2V5bGVuID0gaGZzX2JyZWNfa2V5bGVuKGJub2RlLCBlKTtcXG4tXFx0XFx0aWYgKGtleWxlbiA9PSAwKSB7XFxuK1xcdFxcdGlmIChrZXlsZW4gPT0gMCB8fCBrZXlsZW4gXFx1MDAzZT0gbGVuKSB7XFxuIFxcdFxcdFxcdHJlcyA9IC1FSU5WQUw7XFxuIFxcdFxcdFxcdGdvdG8gZmFpbDtcXG4gXFx0XFx0fVxcbkBAIC0yMzIsNiArMjQ1LDE0IEBAIGludCBoZnNfYnJlY19nb3RvKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgaW50IGNudClcXG4gXFxuIFxcdGJub2RlID0gZmQtXFx1MDAzZWJub2RlO1xcbiBcXHR0cmVlID0gYm5vZGUtXFx1MDAzZXRyZWU7XFxuK1xcdGlmICghaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkKGJub2RlKSkge1xcbitcXHRcXHRyZXMgPSAtRUlPO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbitcXHRpZiAoYm5vZGUtXFx1MDAzZW51bV9yZWNzID09IDApIHtcXG4rXFx0XFx0cmVzID0gLUVOT0VOVDtcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4gXFxuIFxcdGlmIChjbnQgXFx1MDAzYyAwKSB7XFxuIFxcdFxcdGNudCA9IC1jbnQ7XFxuQEAgLTI3NCw3ICsyOTUsNyBAQCBpbnQgaGZzX2JyZWNfZ290byhzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsIGludCBjbnQpXFxuIFxcbiBcXHRsZW4gPSBoZnNfYnJlY19sZW5vZmYoYm5vZGUsIGZkLVxcdTAwM2VyZWNvcmQsIFxcdTAwMjZvZmYpO1xcbiBcXHRrZXlsZW4gPSBoZnNfYnJlY19rZXlsZW4oYm5vZGUsIGZkLVxcdTAwM2VyZWNvcmQpO1xcbi1cXHRpZiAoa2V5bGVuID09IDApIHtcXG4rXFx0aWYgKGtleWxlbiA9PSAwIHx8IGtleWxlbiBcXHUwMDNlPSBsZW4pIHtcXG4gXFx0XFx0cmVzID0gLUVJTlZBTDtcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcdH1cXG5kaWZmIC0tZ2l0IGEvZnMvaGZzcGx1cy9ibm9kZS5jIGIvZnMvaGZzcGx1cy9ibm9kZS5jXFxuaW5kZXggZDA4OGZiN2ViMGRmYTMuLmYxODVjMDEyZDA5MDI2IDEwMDY0NFxcbi0tLSBhL2ZzL2hmc3BsdXMvYm5vZGUuY1xcbisrKyBiL2ZzL2hmc3BsdXMvYm5vZGUuY1xcbkBAIC0zNTIsMTUgKzM1MiwyMiBAQCB2b2lkIGhmc19ibm9kZV9kdW1wKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUpXFxuIFxcdHN0cnVjdCBoZnNfYm5vZGVfZGVzYyBkZXNjO1xcbiBcXHRfX2JlMzIgY25pZDtcXG4gXFx0aW50IGksIG9mZiwga2V5X29mZjtcXG4rXFx0dTE2IG51bV9yZWNzO1xcbiBcXG4gXFx0aGZzX2RiZyhcXFwibm9kZSAlZFxcXFxuXFxcIiwgbm9kZS1cXHUwMDNldGhpcyk7XFxuIFxcdGhmc19ibm9kZV9yZWFkKG5vZGUsIFxcdTAwMjZkZXNjLCAwLCBzaXplb2YoZGVzYykpO1xcbitcXHRudW1fcmVjcyA9IG5vZGUtXFx1MDAzZW51bV9yZWNzO1xcbiBcXHRoZnNfZGJnKFxcXCJuZXh0ICVkLCBwcmV2ICVkLCB0eXBlICVkLCBoZWlnaHQgJWQsIG51bV9yZWNzICVkXFxcXG5cXFwiLFxcbiBcXHRcXHRiZTMyX3RvX2NwdShkZXNjLm5leHQpLCBiZTMyX3RvX2NwdShkZXNjLnByZXYpLFxcbiBcXHRcXHRkZXNjLnR5cGUsIGRlc2MuaGVpZ2h0LCBiZTE2X3RvX2NwdShkZXNjLm51bV9yZWNzKSk7XFxuIFxcbitcXHRpZiAoIWhmc19ibm9kZV9udW1fcmVjc192YWxpZChub2RlKSkge1xcbitcXHRcXHRoZnNfZGJnKFxcXCJpbnZhbGlkIG51bV9yZWNzICV1XFxcXG5cXFwiLCBudW1fcmVjcyk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4gXFx0b2ZmID0gbm9kZS1cXHUwMDNldHJlZS1cXHUwMDNlbm9kZV9zaXplIC0gMjtcXG4tXFx0Zm9yIChpID0gYmUxNl90b19jcHUoZGVzYy5udW1fcmVjcyk7IGkgXFx1MDAzZT0gMDsgb2ZmIC09IDIsIGktLSkge1xcbitcXHRmb3IgKGkgPSBudW1fcmVjczsgaSBcXHUwMDNlPSAwOyBvZmYgLT0gMiwgaS0tKSB7XFxuIFxcdFxcdGtleV9vZmYgPSBoZnNfYm5vZGVfcmVhZF91MTYobm9kZSwgb2ZmKTtcXG4gXFx0XFx0aGZzX2RiZyhcXFwiIGtleV9vZmYgJWRcXFwiLCBrZXlfb2ZmKTtcXG4gXFx0XFx0aWYgKGkgXFx1MDAyNlxcdTAwMjYgbm9kZS1cXHUwMDNldHlwZSA9PSBIRlNfTk9ERV9JTkRFWCkge1xcbkBAIC01NzksNiArNTg2LDkgQEAgc3RydWN0IGhmc19ibm9kZSAqaGZzX2Jub2RlX2ZpbmQoc3RydWN0IGhmc19idHJlZSAqdHJlZSwgdTMyIG51bSlcXG4gXFx0XFx0Z290byBub2RlX2Vycm9yO1xcbiBcXHR9XFxuIFxcbitcXHRpZiAoIWhmc19ibm9kZV9udW1fcmVjc192YWxpZChub2RlKSlcXG4rXFx0XFx0Z290byBub2RlX2Vycm9yO1xcbitcXG4gXFx0cmVjX29mZiA9IHRyZWUtXFx1MDAzZW5vZGVfc2l6ZSAtIDI7XFxuIFxcdG9mZiA9IGhmc19ibm9kZV9yZWFkX3UxNihub2RlLCByZWNfb2ZmKTtcXG4gXFx0aWYgKG9mZiAhPSBzaXplb2Yoc3RydWN0IGhmc19ibm9kZV9kZXNjKSlcXG5AQCAtNTg2LDkgKzU5Niw3IEBAIHN0cnVjdCBoZnNfYm5vZGUgKmhmc19ibm9kZV9maW5kKHN0cnVjdCBoZnNfYnRyZWUgKnRyZWUsIHUzMiBudW0pXFxuIFxcdGZvciAoaSA9IDE7IGkgXFx1MDAzYz0gbm9kZS1cXHUwMDNlbnVtX3JlY3M7IG9mZiA9IG5leHRfb2ZmLCBpKyspIHtcXG4gXFx0XFx0cmVjX29mZiAtPSAyO1xcbiBcXHRcXHRuZXh0X29mZiA9IGhmc19ibm9kZV9yZWFkX3UxNihub2RlLCByZWNfb2ZmKTtcXG4tXFx0XFx0aWYgKG5leHRfb2ZmIFxcdTAwM2M9IG9mZiB8fFxcbi1cXHRcXHQgICAgbmV4dF9vZmYgXFx1MDAzZSB0cmVlLVxcdTAwM2Vub2RlX3NpemUgfHxcXG4tXFx0XFx0ICAgIG5leHRfb2ZmIFxcdTAwMjYgMSlcXG4rXFx0XFx0aWYgKCFoZnNfYnJlY19yYW5nZV92YWxpZChub2RlLCBvZmYsIG5leHRfb2ZmLCByZWNfb2ZmKSlcXG4gXFx0XFx0XFx0Z290byBub2RlX2Vycm9yO1xcbiBcXHRcXHRlbnRyeV9zaXplID0gbmV4dF9vZmYgLSBvZmY7XFxuIFxcdFxcdGlmIChub2RlLVxcdTAwM2V0eXBlICE9IEhGU19OT0RFX0lOREVYIFxcdTAwMjZcXHUwMDI2XFxuZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvYnJlYy5jIGIvZnMvaGZzcGx1cy9icmVjLmNcXG5pbmRleCBlM2RmODkyODQwNzlkYi4uZmUyZTA2MzY3OThjZWMgMTAwNjQ0XFxuLS0tIGEvZnMvaGZzcGx1cy9icmVjLmNcXG4rKysgYi9mcy9oZnNwbHVzL2JyZWMuY1xcbkBAIC0yMCwzOCArMjAsNDQgQEAgc3RhdGljIGludCBoZnNfYnRyZWVfaW5jX2hlaWdodChzdHJ1Y3QgaGZzX2J0cmVlICopO1xcbiB1MTYgaGZzX2JyZWNfbGVub2ZmKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUxNiByZWMsIHUxNiAqb2ZmKVxcbiB7XFxuIFxcdF9fYmUxNiByZXR2YWxbMl07XFxuLVxcdHUxNiBkYXRhb2ZmO1xcbitcXHR1MTYgZGF0YV9vZmY7XFxuK1xcdHUxNiBuZXh0X29mZjtcXG4gXFxuLVxcdGRhdGFvZmYgPSBub2RlLVxcdTAwM2V0cmVlLVxcdTAwM2Vub2RlX3NpemUgLSAocmVjICsgMikgKiAyO1xcbi1cXHRoZnNfYm5vZGVfcmVhZChub2RlLCByZXR2YWwsIGRhdGFvZmYsIDQpO1xcbitcXHRpZiAoIWhmc19icmVjX3JlY29yZF92YWxpZChub2RlLCByZWMpKSB7XFxuK1xcdFxcdCpvZmYgPSAwO1xcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbitcXG4rXFx0ZGF0YV9vZmYgPSBub2RlLVxcdTAwM2V0cmVlLVxcdTAwM2Vub2RlX3NpemUgLSAocmVjICsgMikgKiAyO1xcbitcXHRoZnNfYm5vZGVfcmVhZChub2RlLCByZXR2YWwsIGRhdGFfb2ZmLCA0KTtcXG4gXFx0Km9mZiA9IGJlMTZfdG9fY3B1KHJldHZhbFsxXSk7XFxuLVxcdHJldHVybiBiZTE2X3RvX2NwdShyZXR2YWxbMF0pIC0gKm9mZjtcXG4rXFx0bmV4dF9vZmYgPSBiZTE2X3RvX2NwdShyZXR2YWxbMF0pO1xcbitcXHRpZiAoIWhmc19icmVjX3JhbmdlX3ZhbGlkKG5vZGUsICpvZmYsIG5leHRfb2ZmLCBkYXRhX29mZikpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHRyZXR1cm4gbmV4dF9vZmYgLSAqb2ZmO1xcbiB9XFxuIFxcbiAvKiBHZXQgdGhlIGxlbmd0aCBvZiB0aGUga2V5IGZyb20gYSBrZXllZCByZWNvcmQgKi9cXG4gdTE2IGhmc19icmVjX2tleWxlbihzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MTYgcmVjKVxcbiB7XFxuLVxcdHUxNiByZXR2YWwsIHJlY29mZjtcXG4rXFx0dTE2IHJldHZhbCwgcmVjb2ZmLCBsZW47XFxuIFxcbiBcXHRpZiAobm9kZS1cXHUwMDNldHlwZSAhPSBIRlNfTk9ERV9JTkRFWCBcXHUwMDI2XFx1MDAyNiBub2RlLVxcdTAwM2V0eXBlICE9IEhGU19OT0RFX0xFQUYpXFxuIFxcdFxcdHJldHVybiAwO1xcbitcXHRpZiAoIWhmc19icmVjX3JlY29yZF92YWxpZChub2RlLCByZWMpKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4gXFxuIFxcdGlmICgobm9kZS1cXHUwMDNldHlwZSA9PSBIRlNfTk9ERV9JTkRFWCkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIShub2RlLVxcdTAwM2V0cmVlLVxcdTAwM2VhdHRyaWJ1dGVzIFxcdTAwMjYgSEZTX1RSRUVfVkFSSURYS0VZUykgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgKG5vZGUtXFx1MDAzZXRyZWUtXFx1MDAzZWNuaWQgIT0gSEZTUExVU19BVFRSX0NOSUQpKSB7XFxuIFxcdFxcdHJldHZhbCA9IG5vZGUtXFx1MDAzZXRyZWUtXFx1MDAzZW1heF9rZXlfbGVuICsgMjtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0cmVjb2ZmID0gaGZzX2Jub2RlX3JlYWRfdTE2KG5vZGUsXFxuLVxcdFxcdFxcdG5vZGUtXFx1MDAzZXRyZWUtXFx1MDAzZW5vZGVfc2l6ZSAtIChyZWMgKyAxKSAqIDIpO1xcbi1cXHRcXHRpZiAoIXJlY29mZilcXG4tXFx0XFx0XFx0cmV0dXJuIDA7XFxuLVxcdFxcdGlmIChyZWNvZmYgXFx1MDAzZSBub2RlLVxcdTAwM2V0cmVlLVxcdTAwM2Vub2RlX3NpemUgLSAyKSB7XFxuLVxcdFxcdFxcdHByX2VycihcXFwicmVjb2ZmICVkIHRvbyBsYXJnZVxcXFxuXFxcIiwgcmVjb2ZmKTtcXG4rXFx0XFx0bGVuID0gaGZzX2JyZWNfbGVub2ZmKG5vZGUsIHJlYywgXFx1MDAyNnJlY29mZik7XFxuK1xcdFxcdGlmIChsZW4gPT0gMClcXG4gXFx0XFx0XFx0cmV0dXJuIDA7XFxuLVxcdFxcdH1cXG4gXFxuIFxcdFxcdHJldHZhbCA9IGhmc19ibm9kZV9yZWFkX3UxNihub2RlLCByZWNvZmYpICsgMjtcXG4tXFx0XFx0aWYgKHJldHZhbCBcXHUwMDNlIG5vZGUtXFx1MDAzZXRyZWUtXFx1MDAzZW1heF9rZXlfbGVuICsgMikge1xcbitcXHRcXHRpZiAocmV0dmFsIFxcdTAwM2U9IGxlbiB8fCByZXR2YWwgXFx1MDAzZSBub2RlLVxcdTAwM2V0cmVlLVxcdTAwM2VtYXhfa2V5X2xlbiArIDIpIHtcXG4gXFx0XFx0XFx0cHJfZXJyKFxcXCJrZXlsZW4gJWQgdG9vIGxhcmdlXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHRyZXR2YWwpO1xcbiBcXHRcXHRcXHRyZXR2YWwgPSAwO1xcbkBAIC0xODUsMTAgKzE5MSwxNSBAQCBpbnQgaGZzX2JyZWNfcmVtb3ZlKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZClcXG4gXFx0dHJlZSA9IGZkLVxcdTAwM2V0cmVlO1xcbiBcXHRub2RlID0gZmQtXFx1MDAzZWJub2RlO1xcbiBhZ2FpbjpcXG4rXFx0aWYgKCFoZnNfYnJlY19yZWNvcmRfdmFsaWQobm9kZSwgZmQtXFx1MDAzZXJlY29yZCkpXFxuK1xcdFxcdHJldHVybiAtRUlPO1xcbitcXG4gXFx0cmVjX29mZiA9IHRyZWUtXFx1MDAzZW5vZGVfc2l6ZSAtIChmZC1cXHUwMDNlcmVjb3JkICsgMikgKiAyO1xcbiBcXHRlbmRfb2ZmID0gdHJlZS1cXHUwMDNlbm9kZV9zaXplIC0gKG5vZGUtXFx1MDAzZW51bV9yZWNzICsgMSkgKiAyO1xcbiBcXG4gXFx0aWYgKG5vZGUtXFx1MDAzZXR5cGUgPT0gSEZTX05PREVfTEVBRikge1xcbitcXHRcXHRpZiAodHJlZS1cXHUwMDNlbGVhZl9jb3VudCA9PSAwKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4gXFx0XFx0dHJlZS1cXHUwMDNlbGVhZl9jb3VudC0tO1xcbiBcXHRcXHRtYXJrX2lub2RlX2RpcnR5KHRyZWUtXFx1MDAzZWlub2RlKTtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaCBiL2ZzL2hmc3BsdXMvaGZzcGx1c19mcy5oXFxuaW5kZXggZWMwNGI4MmFkOTI3ODcuLjdhMzQ1YzRkMWMwNjQwIDEwMDY0NFxcbi0tLSBhL2ZzL2hmc3BsdXMvaGZzcGx1c19mcy5oXFxuKysrIGIvZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmhcXG5AQCAtNTg3LDYgKzU4Nyw2OCBAQCBib29sIGlzX2Jub2RlX29mZnNldF92YWxpZChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgb2ZmKVxcbiBcXHRyZXR1cm4gaXNfdmFsaWQ7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbmxpbmVcXG4rYm9vbCBoZnNfYm5vZGVfbnVtX3JlY3NfdmFsaWQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSlcXG4re1xcbitcXHR1MzIgbm9kZV9zaXplO1xcbitcXHR1MzIgcmVjX29mZl9zaXplO1xcbitcXHR1MzIgcmVjX29mZl90YWJfc2l6ZTtcXG4rXFx0dTMyIHJlY19hcmVhX3NpemU7XFxuK1xcbitcXHRpZiAoIW5vZGUgfHwgIW5vZGUtXFx1MDAzZXRyZWUpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdG5vZGVfc2l6ZSA9IG5vZGUtXFx1MDAzZXRyZWUtXFx1MDAzZW5vZGVfc2l6ZTtcXG4rXFx0cmVjX29mZl9zaXplID0gc2l6ZW9mKF9fYmUxNik7XFxuK1xcdGlmIChub2RlX3NpemUgXFx1MDAzYyBzaXplb2Yoc3RydWN0IGhmc19ibm9kZV9kZXNjKSArIHJlY19vZmZfc2l6ZSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0cmVjX2FyZWFfc2l6ZSA9IG5vZGVfc2l6ZSAtIHNpemVvZihzdHJ1Y3QgaGZzX2Jub2RlX2Rlc2MpO1xcbitcXHRyZWNfb2ZmX3RhYl9zaXplID0gKCh1MzIpbm9kZS1cXHUwMDNlbnVtX3JlY3MgKyAxKSAqIHJlY19vZmZfc2l6ZTtcXG4rXFxuK1xcdHJldHVybiByZWNfb2ZmX3RhYl9zaXplIFxcdTAwM2M9IHJlY19hcmVhX3NpemU7XFxuK31cXG4rXFxuK3N0YXRpYyBpbmxpbmVcXG4rYm9vbCBoZnNfYnJlY19yZWNvcmRfdmFsaWQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgaW50IHJlY29yZClcXG4re1xcbitcXHRpZiAoIWhmc19ibm9kZV9udW1fcmVjc192YWxpZChub2RlKSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHRpZiAocmVjb3JkIFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0cmV0dXJuIHJlY29yZCBcXHUwMDNjIG5vZGUtXFx1MDAzZW51bV9yZWNzO1xcbit9XFxuK1xcbitzdGF0aWMgaW5saW5lXFxuK2Jvb2wgaGZzX2JyZWNfcmFuZ2VfdmFsaWQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTE2IG9mZiwgdTE2IG5leHRfb2ZmLFxcbitcXHRcXHRcXHQgIHUxNiByZWNfb2ZmKVxcbit7XFxuK1xcdHUzMiByZWNfb2ZmX3NpemU7XFxuK1xcdHUzMiByZWNfb2ZmX3RhYl9zaXplO1xcbitcXHR1MzIgcmVjX29mZl90YWJfc3RhcnQ7XFxuK1xcbitcXHRpZiAoIW5vZGUgfHwgIW5vZGUtXFx1MDAzZXRyZWUpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdGlmIChvZmYgXFx1MDAzYyBzaXplb2Yoc3RydWN0IGhmc19ibm9kZV9kZXNjKSB8fCAob2ZmIFxcdTAwMjYgMSkpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdGlmIChuZXh0X29mZiBcXHUwMDNjPSBvZmYgfHxcXG4rXFx0XFx0bmV4dF9vZmYgXFx1MDAzZSBub2RlLVxcdTAwM2V0cmVlLVxcdTAwM2Vub2RlX3NpemUgfHxcXG4rXFx0XFx0bmV4dF9vZmYgXFx1MDAzZSByZWNfb2ZmIHx8XFxuK1xcdFxcdChuZXh0X29mZiBcXHUwMDI2IDEpKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRyZWNfb2ZmX3NpemUgPSBzaXplb2YoX19iZTE2KTtcXG4rXFx0cmVjX29mZl90YWJfc2l6ZSA9ICgodTMyKW5vZGUtXFx1MDAzZW51bV9yZWNzICsgMSkgKiByZWNfb2ZmX3NpemU7XFxuK1xcdHJlY19vZmZfdGFiX3N0YXJ0ID0gbm9kZS1cXHUwMDNldHJlZS1cXHUwMDNlbm9kZV9zaXplIC0gcmVjX29mZl90YWJfc2l6ZTtcXG4rXFx0aWYgKG5leHRfb2ZmIFxcdTAwM2UgcmVjX29mZl90YWJfc3RhcnQpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdHJldHVybiB0cnVlO1xcbit9XFxuK1xcbiBzdGF0aWMgaW5saW5lXFxuIHUzMiBjaGVja19hbmRfY29ycmVjdF9yZXF1ZXN0ZWRfbGVuZ3RoKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBvZmYsIHUzMiBsZW4pXFxuIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTM6MDI6NTEuODg1MDEwNDk3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzg2NDM1OTEzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIRlNQTFVTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19oZnNfYnJlY19maW5kXCIsXG4gICAgXCJoZnNfYnJlY19nb3RvXCIsXG4gICAgXCJoZnNfYm5vZGVfZmluZFwiLFxuICAgIFwiaGZzX2JyZWNfbGVub2ZmXCIsXG4gICAgXCJoZnNfYnJlY19rZXlsZW5cIixcbiAgICBcImhmc19icmVjX3JlbW92ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIGFuZCB2YWxpZGF0aW9uIGZvciBIRlMrIGItdHJlZSByZWNvcmRzIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgbG9naWMgZXJyb3JzIHdoZW4gcGFyc2luZyBjb3JydXB0ZWQgZmlsZXN5c3RlbSBpbWFnZXMuIEZ1enppbmcgd2l0aCBjb3JydXB0ZWQgaW1hZ2VzIHdpbGwgaGVscCB2ZXJpZnkgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZXNlIGNoZWNrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2YmExMDQ3OGMyMmM2MTFiYjlkOGQwYzljZjJkMWY3MmRjMTU5YTM3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAxMzowMjo0OSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvYmZpbmQuYyBiL2ZzL2hmc3BsdXMvYmZpbmQuY1xuaW5kZXggOWE1NWZhNmQ1Mjk0MjkuLjM2M2ZhZjIxNGExYzY1IDEwMDY0NFxuLS0tIGEvZnMvaGZzcGx1cy9iZmluZC5jXG4rKysgYi9mcy9oZnNwbHVzL2JmaW5kLmNcbkBAIC0xMDgsMTUgKzEwOCwyOCBAQCBpbnQgX19oZnNfYnJlY19maW5kKHN0cnVjdCBoZnNfYm5vZGUgKmJub2RlLCBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsXG4gXHRpbnQgYiwgZTtcbiBcdGludCByZXM7XG4gXG4rXHRmZC1cdTAwM2VyZWNvcmQgPSAtMTtcbitcdGZkLVx1MDAzZWtleW9mZnNldCA9IC0xO1xuK1x0ZmQtXHUwMDNla2V5bGVuZ3RoID0gLTE7XG4rXHRmZC1cdTAwM2VlbnRyeW9mZnNldCA9IC0xO1xuK1x0ZmQtXHUwMDNlZW50cnlsZW5ndGggPSAtMTtcbitcbiBcdEJVR19PTighcmVjX2ZvdW5kKTtcbitcdGlmICghaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkKGJub2RlKSkge1xuK1x0XHRyZXMgPSAtRUlPO1xuK1x0XHRnb3RvIGZhaWw7XG4rXHR9XG4rXG4gXHRiID0gMDtcbiBcdGUgPSBibm9kZS1cdTAwM2VudW1fcmVjcyAtIDE7XG4gXHRyZXMgPSAtRU5PRU5UO1xuK1x0aWYgKGJub2RlLVx1MDAzZW51bV9yZWNzID09IDApXG4rXHRcdGdvdG8gZmFpbDtcbiBcdGRvIHtcbiBcdFx0cmVjID0gKGUgKyBiKSAvIDI7XG4gXHRcdGxlbiA9IGhmc19icmVjX2xlbm9mZihibm9kZSwgcmVjLCBcdTAwMjZvZmYpO1xuIFx0XHRrZXlsZW4gPSBoZnNfYnJlY19rZXlsZW4oYm5vZGUsIHJlYyk7XG4tXHRcdGlmIChrZXlsZW4gPT0gMCkge1xuK1x0XHRpZiAoa2V5bGVuID09IDAgfHwga2V5bGVuIFx1MDAzZT0gbGVuKSB7XG4gXHRcdFx0cmVzID0gLUVJTlZBTDtcbiBcdFx0XHRnb3RvIGZhaWw7XG4gXHRcdH1cbkBAIC0xMzAsNyArMTQzLDcgQEAgaW50IF9faGZzX2JyZWNfZmluZChzdHJ1Y3QgaGZzX2Jub2RlICpibm9kZSwgc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLFxuIFx0aWYgKHJlYyAhPSBlIFx1MDAyNlx1MDAyNiBlIFx1MDAzZT0gMCkge1xuIFx0XHRsZW4gPSBoZnNfYnJlY19sZW5vZmYoYm5vZGUsIGUsIFx1MDAyNm9mZik7XG4gXHRcdGtleWxlbiA9IGhmc19icmVjX2tleWxlbihibm9kZSwgZSk7XG4tXHRcdGlmIChrZXlsZW4gPT0gMCkge1xuK1x0XHRpZiAoa2V5bGVuID09IDAgfHwga2V5bGVuIFx1MDAzZT0gbGVuKSB7XG4gXHRcdFx0cmVzID0gLUVJTlZBTDtcbiBcdFx0XHRnb3RvIGZhaWw7XG4gXHRcdH1cbkBAIC0yMzIsNiArMjQ1LDE0IEBAIGludCBoZnNfYnJlY19nb3RvKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgaW50IGNudClcbiBcbiBcdGJub2RlID0gZmQtXHUwMDNlYm5vZGU7XG4gXHR0cmVlID0gYm5vZGUtXHUwMDNldHJlZTtcbitcdGlmICghaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkKGJub2RlKSkge1xuK1x0XHRyZXMgPSAtRUlPO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcdGlmIChibm9kZS1cdTAwM2VudW1fcmVjcyA9PSAwKSB7XG4rXHRcdHJlcyA9IC1FTk9FTlQ7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fVxuIFxuIFx0aWYgKGNudCBcdTAwM2MgMCkge1xuIFx0XHRjbnQgPSAtY250O1xuQEAgLTI3NCw3ICsyOTUsNyBAQCBpbnQgaGZzX2JyZWNfZ290byhzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsIGludCBjbnQpXG4gXG4gXHRsZW4gPSBoZnNfYnJlY19sZW5vZmYoYm5vZGUsIGZkLVx1MDAzZXJlY29yZCwgXHUwMDI2b2ZmKTtcbiBcdGtleWxlbiA9IGhmc19icmVjX2tleWxlbihibm9kZSwgZmQtXHUwMDNlcmVjb3JkKTtcbi1cdGlmIChrZXlsZW4gPT0gMCkge1xuK1x0aWYgKGtleWxlbiA9PSAwIHx8IGtleWxlbiBcdTAwM2U9IGxlbikge1xuIFx0XHRyZXMgPSAtRUlOVkFMO1xuIFx0XHRnb3RvIG91dDtcbiBcdH1cbmRpZmYgLS1naXQgYS9mcy9oZnNwbHVzL2Jub2RlLmMgYi9mcy9oZnNwbHVzL2Jub2RlLmNcbmluZGV4IGQwODhmYjdlYjBkZmEzLi5mMTg1YzAxMmQwOTAyNiAxMDA2NDRcbi0tLSBhL2ZzL2hmc3BsdXMvYm5vZGUuY1xuKysrIGIvZnMvaGZzcGx1cy9ibm9kZS5jXG5AQCAtMzUyLDE1ICszNTIsMjIgQEAgdm9pZCBoZnNfYm5vZGVfZHVtcChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlKVxuIFx0c3RydWN0IGhmc19ibm9kZV9kZXNjIGRlc2M7XG4gXHRfX2JlMzIgY25pZDtcbiBcdGludCBpLCBvZmYsIGtleV9vZmY7XG4rXHR1MTYgbnVtX3JlY3M7XG4gXG4gXHRoZnNfZGJnKFwibm9kZSAlZFxcblwiLCBub2RlLVx1MDAzZXRoaXMpO1xuIFx0aGZzX2Jub2RlX3JlYWQobm9kZSwgXHUwMDI2ZGVzYywgMCwgc2l6ZW9mKGRlc2MpKTtcbitcdG51bV9yZWNzID0gbm9kZS1cdTAwM2VudW1fcmVjcztcbiBcdGhmc19kYmcoXCJuZXh0ICVkLCBwcmV2ICVkLCB0eXBlICVkLCBoZWlnaHQgJWQsIG51bV9yZWNzICVkXFxuXCIsXG4gXHRcdGJlMzJfdG9fY3B1KGRlc2MubmV4dCksIGJlMzJfdG9fY3B1KGRlc2MucHJldiksXG4gXHRcdGRlc2MudHlwZSwgZGVzYy5oZWlnaHQsIGJlMTZfdG9fY3B1KGRlc2MubnVtX3JlY3MpKTtcbiBcbitcdGlmICghaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkKG5vZGUpKSB7XG4rXHRcdGhmc19kYmcoXCJpbnZhbGlkIG51bV9yZWNzICV1XFxuXCIsIG51bV9yZWNzKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuIFx0b2ZmID0gbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZSAtIDI7XG4tXHRmb3IgKGkgPSBiZTE2X3RvX2NwdShkZXNjLm51bV9yZWNzKTsgaSBcdTAwM2U9IDA7IG9mZiAtPSAyLCBpLS0pIHtcbitcdGZvciAoaSA9IG51bV9yZWNzOyBpIFx1MDAzZT0gMDsgb2ZmIC09IDIsIGktLSkge1xuIFx0XHRrZXlfb2ZmID0gaGZzX2Jub2RlX3JlYWRfdTE2KG5vZGUsIG9mZik7XG4gXHRcdGhmc19kYmcoXCIga2V5X29mZiAlZFwiLCBrZXlfb2ZmKTtcbiBcdFx0aWYgKGkgXHUwMDI2XHUwMDI2IG5vZGUtXHUwMDNldHlwZSA9PSBIRlNfTk9ERV9JTkRFWCkge1xuQEAgLTU3OSw2ICs1ODYsOSBAQCBzdHJ1Y3QgaGZzX2Jub2RlICpoZnNfYm5vZGVfZmluZChzdHJ1Y3QgaGZzX2J0cmVlICp0cmVlLCB1MzIgbnVtKVxuIFx0XHRnb3RvIG5vZGVfZXJyb3I7XG4gXHR9XG4gXG4rXHRpZiAoIWhmc19ibm9kZV9udW1fcmVjc192YWxpZChub2RlKSlcbitcdFx0Z290byBub2RlX2Vycm9yO1xuK1xuIFx0cmVjX29mZiA9IHRyZWUtXHUwMDNlbm9kZV9zaXplIC0gMjtcbiBcdG9mZiA9IGhmc19ibm9kZV9yZWFkX3UxNihub2RlLCByZWNfb2ZmKTtcbiBcdGlmIChvZmYgIT0gc2l6ZW9mKHN0cnVjdCBoZnNfYm5vZGVfZGVzYykpXG5AQCAtNTg2LDkgKzU5Niw3IEBAIHN0cnVjdCBoZnNfYm5vZGUgKmhmc19ibm9kZV9maW5kKHN0cnVjdCBoZnNfYnRyZWUgKnRyZWUsIHUzMiBudW0pXG4gXHRmb3IgKGkgPSAxOyBpIFx1MDAzYz0gbm9kZS1cdTAwM2VudW1fcmVjczsgb2ZmID0gbmV4dF9vZmYsIGkrKykge1xuIFx0XHRyZWNfb2ZmIC09IDI7XG4gXHRcdG5leHRfb2ZmID0gaGZzX2Jub2RlX3JlYWRfdTE2KG5vZGUsIHJlY19vZmYpO1xuLVx0XHRpZiAobmV4dF9vZmYgXHUwMDNjPSBvZmYgfHxcbi1cdFx0ICAgIG5leHRfb2ZmIFx1MDAzZSB0cmVlLVx1MDAzZW5vZGVfc2l6ZSB8fFxuLVx0XHQgICAgbmV4dF9vZmYgXHUwMDI2IDEpXG4rXHRcdGlmICghaGZzX2JyZWNfcmFuZ2VfdmFsaWQobm9kZSwgb2ZmLCBuZXh0X29mZiwgcmVjX29mZikpXG4gXHRcdFx0Z290byBub2RlX2Vycm9yO1xuIFx0XHRlbnRyeV9zaXplID0gbmV4dF9vZmYgLSBvZmY7XG4gXHRcdGlmIChub2RlLVx1MDAzZXR5cGUgIT0gSEZTX05PREVfSU5ERVggXHUwMDI2XHUwMDI2XG5kaWZmIC0tZ2l0IGEvZnMvaGZzcGx1cy9icmVjLmMgYi9mcy9oZnNwbHVzL2JyZWMuY1xuaW5kZXggZTNkZjg5Mjg0MDc5ZGIuLmZlMmUwNjM2Nzk4Y2VjIDEwMDY0NFxuLS0tIGEvZnMvaGZzcGx1cy9icmVjLmNcbisrKyBiL2ZzL2hmc3BsdXMvYnJlYy5jXG5AQCAtMjAsMzggKzIwLDQ0IEBAIHN0YXRpYyBpbnQgaGZzX2J0cmVlX2luY19oZWlnaHQoc3RydWN0IGhmc19idHJlZSAqKTtcbiB1MTYgaGZzX2JyZWNfbGVub2ZmKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUxNiByZWMsIHUxNiAqb2ZmKVxuIHtcbiBcdF9fYmUxNiByZXR2YWxbMl07XG4tXHR1MTYgZGF0YW9mZjtcbitcdHUxNiBkYXRhX29mZjtcbitcdHUxNiBuZXh0X29mZjtcbiBcbi1cdGRhdGFvZmYgPSBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplIC0gKHJlYyArIDIpICogMjtcbi1cdGhmc19ibm9kZV9yZWFkKG5vZGUsIHJldHZhbCwgZGF0YW9mZiwgNCk7XG4rXHRpZiAoIWhmc19icmVjX3JlY29yZF92YWxpZChub2RlLCByZWMpKSB7XG4rXHRcdCpvZmYgPSAwO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbitcbitcdGRhdGFfb2ZmID0gbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZSAtIChyZWMgKyAyKSAqIDI7XG4rXHRoZnNfYm5vZGVfcmVhZChub2RlLCByZXR2YWwsIGRhdGFfb2ZmLCA0KTtcbiBcdCpvZmYgPSBiZTE2X3RvX2NwdShyZXR2YWxbMV0pO1xuLVx0cmV0dXJuIGJlMTZfdG9fY3B1KHJldHZhbFswXSkgLSAqb2ZmO1xuK1x0bmV4dF9vZmYgPSBiZTE2X3RvX2NwdShyZXR2YWxbMF0pO1xuK1x0aWYgKCFoZnNfYnJlY19yYW5nZV92YWxpZChub2RlLCAqb2ZmLCBuZXh0X29mZiwgZGF0YV9vZmYpKVxuK1x0XHRyZXR1cm4gMDtcbitcdHJldHVybiBuZXh0X29mZiAtICpvZmY7XG4gfVxuIFxuIC8qIEdldCB0aGUgbGVuZ3RoIG9mIHRoZSBrZXkgZnJvbSBhIGtleWVkIHJlY29yZCAqL1xuIHUxNiBoZnNfYnJlY19rZXlsZW4oc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTE2IHJlYylcbiB7XG4tXHR1MTYgcmV0dmFsLCByZWNvZmY7XG4rXHR1MTYgcmV0dmFsLCByZWNvZmYsIGxlbjtcbiBcbiBcdGlmIChub2RlLVx1MDAzZXR5cGUgIT0gSEZTX05PREVfSU5ERVggXHUwMDI2XHUwMDI2IG5vZGUtXHUwMDNldHlwZSAhPSBIRlNfTk9ERV9MRUFGKVxuIFx0XHRyZXR1cm4gMDtcbitcdGlmICghaGZzX2JyZWNfcmVjb3JkX3ZhbGlkKG5vZGUsIHJlYykpXG4rXHRcdHJldHVybiAwO1xuIFxuIFx0aWYgKChub2RlLVx1MDAzZXR5cGUgPT0gSEZTX05PREVfSU5ERVgpIFx1MDAyNlx1MDAyNlxuIFx0ICAgIShub2RlLVx1MDAzZXRyZWUtXHUwMDNlYXR0cmlidXRlcyBcdTAwMjYgSEZTX1RSRUVfVkFSSURYS0VZUykgXHUwMDI2XHUwMDI2XG4gXHQgICAobm9kZS1cdTAwM2V0cmVlLVx1MDAzZWNuaWQgIT0gSEZTUExVU19BVFRSX0NOSUQpKSB7XG4gXHRcdHJldHZhbCA9IG5vZGUtXHUwMDNldHJlZS1cdTAwM2VtYXhfa2V5X2xlbiArIDI7XG4gXHR9IGVsc2Uge1xuLVx0XHRyZWNvZmYgPSBoZnNfYm5vZGVfcmVhZF91MTYobm9kZSxcbi1cdFx0XHRub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplIC0gKHJlYyArIDEpICogMik7XG4tXHRcdGlmICghcmVjb2ZmKVxuLVx0XHRcdHJldHVybiAwO1xuLVx0XHRpZiAocmVjb2ZmIFx1MDAzZSBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplIC0gMikge1xuLVx0XHRcdHByX2VycihcInJlY29mZiAlZCB0b28gbGFyZ2VcXG5cIiwgcmVjb2ZmKTtcbitcdFx0bGVuID0gaGZzX2JyZWNfbGVub2ZmKG5vZGUsIHJlYywgXHUwMDI2cmVjb2ZmKTtcbitcdFx0aWYgKGxlbiA9PSAwKVxuIFx0XHRcdHJldHVybiAwO1xuLVx0XHR9XG4gXG4gXHRcdHJldHZhbCA9IGhmc19ibm9kZV9yZWFkX3UxNihub2RlLCByZWNvZmYpICsgMjtcbi1cdFx0aWYgKHJldHZhbCBcdTAwM2Ugbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW1heF9rZXlfbGVuICsgMikge1xuK1x0XHRpZiAocmV0dmFsIFx1MDAzZT0gbGVuIHx8IHJldHZhbCBcdTAwM2Ugbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW1heF9rZXlfbGVuICsgMikge1xuIFx0XHRcdHByX2VycihcImtleWxlbiAlZCB0b28gbGFyZ2VcXG5cIixcbiBcdFx0XHRcdHJldHZhbCk7XG4gXHRcdFx0cmV0dmFsID0gMDtcbkBAIC0xODUsMTAgKzE5MSwxNSBAQCBpbnQgaGZzX2JyZWNfcmVtb3ZlKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZClcbiBcdHRyZWUgPSBmZC1cdTAwM2V0cmVlO1xuIFx0bm9kZSA9IGZkLVx1MDAzZWJub2RlO1xuIGFnYWluOlxuK1x0aWYgKCFoZnNfYnJlY19yZWNvcmRfdmFsaWQobm9kZSwgZmQtXHUwMDNlcmVjb3JkKSlcbitcdFx0cmV0dXJuIC1FSU87XG4rXG4gXHRyZWNfb2ZmID0gdHJlZS1cdTAwM2Vub2RlX3NpemUgLSAoZmQtXHUwMDNlcmVjb3JkICsgMikgKiAyO1xuIFx0ZW5kX29mZiA9IHRyZWUtXHUwMDNlbm9kZV9zaXplIC0gKG5vZGUtXHUwMDNlbnVtX3JlY3MgKyAxKSAqIDI7XG4gXG4gXHRpZiAobm9kZS1cdTAwM2V0eXBlID09IEhGU19OT0RFX0xFQUYpIHtcbitcdFx0aWYgKHRyZWUtXHUwMDNlbGVhZl9jb3VudCA9PSAwKVxuK1x0XHRcdHJldHVybiAtRUlPO1xuIFx0XHR0cmVlLVx1MDAzZWxlYWZfY291bnQtLTtcbiBcdFx0bWFya19pbm9kZV9kaXJ0eSh0cmVlLVx1MDAzZWlub2RlKTtcbiBcdH1cbmRpZmYgLS1naXQgYS9mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaCBiL2ZzL2hmc3BsdXMvaGZzcGx1c19mcy5oXG5pbmRleCBlYzA0YjgyYWQ5Mjc4Ny4uN2EzNDVjNGQxYzA2NDAgMTAwNjQ0XG4tLS0gYS9mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaFxuKysrIGIvZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmhcbkBAIC01ODcsNiArNTg3LDY4IEBAIGJvb2wgaXNfYm5vZGVfb2Zmc2V0X3ZhbGlkKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBvZmYpXG4gXHRyZXR1cm4gaXNfdmFsaWQ7XG4gfVxuIFxuK3N0YXRpYyBpbmxpbmVcbitib29sIGhmc19ibm9kZV9udW1fcmVjc192YWxpZChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlKVxuK3tcbitcdHUzMiBub2RlX3NpemU7XG4rXHR1MzIgcmVjX29mZl9zaXplO1xuK1x0dTMyIHJlY19vZmZfdGFiX3NpemU7XG4rXHR1MzIgcmVjX2FyZWFfc2l6ZTtcbitcbitcdGlmICghbm9kZSB8fCAhbm9kZS1cdTAwM2V0cmVlKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRub2RlX3NpemUgPSBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplO1xuK1x0cmVjX29mZl9zaXplID0gc2l6ZW9mKF9fYmUxNik7XG4rXHRpZiAobm9kZV9zaXplIFx1MDAzYyBzaXplb2Yoc3RydWN0IGhmc19ibm9kZV9kZXNjKSArIHJlY19vZmZfc2l6ZSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0cmVjX2FyZWFfc2l6ZSA9IG5vZGVfc2l6ZSAtIHNpemVvZihzdHJ1Y3QgaGZzX2Jub2RlX2Rlc2MpO1xuK1x0cmVjX29mZl90YWJfc2l6ZSA9ICgodTMyKW5vZGUtXHUwMDNlbnVtX3JlY3MgKyAxKSAqIHJlY19vZmZfc2l6ZTtcbitcbitcdHJldHVybiByZWNfb2ZmX3RhYl9zaXplIFx1MDAzYz0gcmVjX2FyZWFfc2l6ZTtcbit9XG4rXG4rc3RhdGljIGlubGluZVxuK2Jvb2wgaGZzX2JyZWNfcmVjb3JkX3ZhbGlkKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIGludCByZWNvcmQpXG4re1xuK1x0aWYgKCFoZnNfYm5vZGVfbnVtX3JlY3NfdmFsaWQobm9kZSkpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcdGlmIChyZWNvcmQgXHUwMDNjIDApXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdHJldHVybiByZWNvcmQgXHUwMDNjIG5vZGUtXHUwMDNlbnVtX3JlY3M7XG4rfVxuK1xuK3N0YXRpYyBpbmxpbmVcbitib29sIGhmc19icmVjX3JhbmdlX3ZhbGlkKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUxNiBvZmYsIHUxNiBuZXh0X29mZixcbitcdFx0XHQgIHUxNiByZWNfb2ZmKVxuK3tcbitcdHUzMiByZWNfb2ZmX3NpemU7XG4rXHR1MzIgcmVjX29mZl90YWJfc2l6ZTtcbitcdHUzMiByZWNfb2ZmX3RhYl9zdGFydDtcbitcbitcdGlmICghbm9kZSB8fCAhbm9kZS1cdTAwM2V0cmVlKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRpZiAob2ZmIFx1MDAzYyBzaXplb2Yoc3RydWN0IGhmc19ibm9kZV9kZXNjKSB8fCAob2ZmIFx1MDAyNiAxKSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0aWYgKG5leHRfb2ZmIFx1MDAzYz0gb2ZmIHx8XG4rXHRcdG5leHRfb2ZmIFx1MDAzZSBub2RlLVx1MDAzZXRyZWUtXHUwMDNlbm9kZV9zaXplIHx8XG4rXHRcdG5leHRfb2ZmIFx1MDAzZSByZWNfb2ZmIHx8XG4rXHRcdChuZXh0X29mZiBcdTAwMjYgMSkpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdHJlY19vZmZfc2l6ZSA9IHNpemVvZihfX2JlMTYpO1xuK1x0cmVjX29mZl90YWJfc2l6ZSA9ICgodTMyKW5vZGUtXHUwMDNlbnVtX3JlY3MgKyAxKSAqIHJlY19vZmZfc2l6ZTtcbitcdHJlY19vZmZfdGFiX3N0YXJ0ID0gbm9kZS1cdTAwM2V0cmVlLVx1MDAzZW5vZGVfc2l6ZSAtIHJlY19vZmZfdGFiX3NpemU7XG4rXHRpZiAobmV4dF9vZmYgXHUwMDNlIHJlY19vZmZfdGFiX3N0YXJ0KVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG4rXG4gc3RhdGljIGlubGluZVxuIHUzMiBjaGVja19hbmRfY29ycmVjdF9yZXF1ZXN0ZWRfbGVuZ3RoKHN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsIHUzMiBvZmYsIHUzMiBsZW4pXG4ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTM6MDI6NTEuODg1MDI3MDM3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjUzMTI0NjI1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipWYWxpZGF0aW5nIEhGUysgQi1UcmVlIE5vZGUgUmVjb3JkcyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiByZXZpZXdpbmcgdGhpcyBwYXRjaCB0aGF0IGZvY3VzZXMgb24gZW5oYW5jaW5nIHRoZSBpbnRlZ3JpdHkgb2Ygb3VyIEhGUysgaW1wbGVtZW50YXRpb24uIFRoZSBjb3JlIG9mIHRoaXMgaXMgYWRkaW5nIHZhbGlkYXRpb24gY2hlY2tzIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIEItdHJlZSBub2RlIHJlY29yZHMuIEl0IHNlZW1zIHRoZSBhdXRob3IgaGFzIHN0cmF0ZWdpY2FsbHkgbW9kaWZpZWQgYGZzL2hmc3BsdXMvYmZpbmQuY2AsIGBmcy9oZnNwbHVzL2Jub2RlLmNgLCBgZnMvaGZzcGx1cy9icmVjLmNgLCBhbmQgYGZzL2hmc3BsdXMvaGZzcGx1c19mcy5oYCB0byBpbnRyb2R1Y2UgdGhlc2UgY3J1Y2lhbCBzYWZlZ3VhcmRzLiBJJ20gc2VlaW5nIG5ldyBmdW5jdGlvbnMgbGlrZSBgaGZzX2Jub2RlX251bV9yZWNzX3ZhbGlkYCwgYGhmc19icmVjX3JlY29yZF92YWxpZGAsIGFuZCBgaGZzX2JyZWNfcmFuZ2VfdmFsaWRgIGJlaW5nIGltcGxlbWVudGVkLiBUaGlzIGlzIHByZXR0eSBzdGFuZGFyZDsgdGhlc2UgY2hlY2tzIGFyZSB0aGVuIGludGVncmF0ZWQgdG8gdmFsaWRhdGUgdGhlIGJvdW5kcyB3aGVuZXZlciBhY2Nlc3NpbmcgcmVjb3JkcyB3aXRoaW4gdGhlIEItdHJlZSwgZW5zdXJpbmcgZGF0YSBhY2Nlc3MgcmVtYWlucyB3aXRoaW4gdGhlIGV4cGVjdGVkIHBhcmFtZXRlcnMuXG5cblRoaXMgaXMgZnVuZGFtZW50YWxseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhICp2ZXJ5KiBpbXBvcnRhbnQgb25lLiBJdCdzIGRlc2lnbmVkIHRvIG1pdGlnYXRlIHRoZSByaXNrcyBvZiBvdXQtb2YtYm91bmRzIHJlYWRzIGFuZCB3cml0ZXMsIGFzIHdlbGwgYXMgcHJldmVudCBsb2dpYyBlcnJvcnMgdGhhdCBjb3VsZCBhcmlzZSB3aGVuIGRlYWxpbmcgd2l0aCBwb3RlbnRpYWxseSBjb3JydXB0ZWQgSEZTKyBpbWFnZXMuIFRoaXMga2luZCBvZiBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgaXMgZXhhY3RseSB3aGF0IHdlIHdhbnQgdG8gc2VlLlxuXG5Ob3csIGxldCdzIG1ha2Ugc3VyZSB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgYXJlIGNvcnJlY3QuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgSEZTUExVU19GU2AgaXMgaW5kZWVkIHRoZSBjb3JyZWN0IGNvbmZpZyBvcHRpb24gZm9yIGVuYWJsaW5nIEhGUysuIFRoYXQgc2hvdWxkIGJlIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYGZzL2hmc3BsdXMvS2NvbmZpZ2Agb3Igc29tZXdoZXJlIHNpbWlsYXIgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLlxuXG5JIHNlZSB0aGV5J3ZlIGFsc28gbW9kaWZpZWQgcXVpdGUgYSBmZXcgZnVuY3Rpb25zOiBgX19oZnNfYnJlY19maW5kYCwgYGhmc19icmVjX2dvdG9gLCBgaGZzX2Jub2RlX2R1bXBgLCBgaGZzX2Jub2RlX2ZpbmRgLCBgaGZzX2JyZWNfbGVub2ZmYCwgYGhmc19icmVjX2tleWxlbmAsIGFuZCBgaGZzX2JyZWNfcmVtb3ZlYC4gVGhpcyBpcyBleGFjdGx5IHRoZSBzb3J0IG9mIGF1ZGl0IEknZCBleHBlY3QgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzAzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTM6MDI6NTguNDE2Mjc3Mjk3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNTMwNDUyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJIRlNQTFVTX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2hmc3BsdXMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9oZnNwbHVzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9oZnNwbHVzL0tjb25maWc6Mjpjb25maWcgSEZTUExVU19GU1xcbmZzL2hmc3BsdXMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJBcHBsZSBFeHRlbmRlZCBIRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG4tLVxcbmZzL2hmc3BsdXMvS2NvbmZpZz0xOD1jb25maWcgSEZTUExVU19LVU5JVF9URVNUXFxuZnMvaGZzcGx1cy9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgSEZTKyBmaWxlc3lzdGVtXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuZnMvaGZzcGx1cy9LY29uZmlnOjIwOlxcdGRlcGVuZHMgb24gSEZTUExVU19GUyBcXHUwMDI2XFx1MDAyNiBLVU5JVFxcbmZzL2hmc3BsdXMvS2NvbmZpZy0yMS1cXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMzowMjo1OC43NDE1ODc2OTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjQ5MDk3NDEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBIRlMrIEZpbGVzeXN0ZW0gSW50ZXJhY3Rpb25zKipcblxuT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gaW4gcGxheSBoZXJlIGlzIGBIRlNQTFVTX0ZTYC4gR2l2ZW4gdGhhdCBjb250ZXh0LCBJIG5lZWQgdG8gZm9jdXMgb24gdGhlc2UgZnVuY3Rpb25zOiBgX19oZnNfYnJlY19maW5kYCwgYGhmc19icmVjX2dvdG9gLCBgaGZzX2Jub2RlX2R1bXBgLCBgaGZzX2Jub2RlX2ZpbmRgLCBgaGZzX2JyZWNfbGVub2ZmYCwgYGhmc19icmVjX2tleWxlbmAsIGFuZCBgaGZzX2JyZWNfcmVtb3ZlYC4gVGhlc2UgYXJlIGFsbCB3aXRoaW4gdGhlIEhGUysgY29udGV4dCBhbmQsIGJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcsIGFyZSBhYnNvbHV0ZWx5IGtleSBjb21wb25lbnRzIHdoZW4gbW91bnRpbmcgYW5kIGludGVyYWN0aW5nIHdpdGggYW4gSEZTKyBmaWxlc3lzdGVtLiBUaGV5J3JlIGNsZWFybHkgcmVhY2hhYmxlIGR1cmluZyB0eXBpY2FsIGZpbGUgc3lzdGVtIG9wZXJhdGlvbnMuXG5cbk15IHByaW1hcnkgZm9jdXMgbmVlZHMgdG8gYmUgb246IGBfX2hmc19icmVjX2ZpbmRgLCBgaGZzX2JyZWNfZ290b2AsIGBoZnNfYm5vZGVfZmluZGAsIGBoZnNfYnJlY19sZW5vZmZgLCBgaGZzX2JyZWNfa2V5bGVuYCwgYW5kIGBoZnNfYnJlY19yZW1vdmVgLiBOb3csIGJlZm9yZSBJIHByb2NlZWQgd2l0aCBhbnkgZGVlcGVyIGFuYWx5c2lzLCBJIHJlYWxseSBuZWVkIHRvIHRha2UgYSBxdWljayBsb29rIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyB0aGF0IG1pZ2h0IGltcGFjdCB0aGlzLiBHb3R0YSBtYWtlIHN1cmUgSSdtIGNvbnNpZGVyaW5nIGFsbCByZWxldmFudCBmYWN0b3JzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjQ2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEzOjAzOjAzLjM5MDY4ODA1NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDI5OTY4NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEhGU1BMVVNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaGZzcGx1cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2hmc3BsdXMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2hmc3BsdXMvS2NvbmZpZzoyOmNvbmZpZyBIRlNQTFVTX0ZTXFxuZnMvaGZzcGx1cy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkFwcGxlIEV4dGVuZGVkIEhGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvaGZzcGx1cy9LY29uZmlnLTE3LVxcbmZzL2hmc3BsdXMvS2NvbmZpZzoxODpjb25maWcgSEZTUExVU19LVU5JVF9URVNUXFxuZnMvaGZzcGx1cy9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgSEZTKyBmaWxlc3lzdGVtXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEzOjAzOjAzLjUzMzY5MDIyMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NTA0MzgwNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSEZTKyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGlzIHN0cmFpZ2h0Zm9yd2FyZDogYEhGU1BMVVNfRlNgLiBUaGUgcGF0Y2ggaXRzZWxmIGxvb2tzIHNvbGlkOyBpdCdzIGZ1bmN0aW9uYWxseSBzb3VuZCBhbmQgYWRkcmVzc2VzIGJ1Z3Mgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gY29ycnVwdGlvbiBpbiBIRlMrIGltYWdlcy4gVGhpcyBpcyBwcmVjaXNlbHkgdGhlIGtpbmQgb2YgdGhpbmcgdGhhdCBjYXRjaGVzIG15IGF0dGVudGlvbi4gVGhlIGNvcmUgb2YgdGhlIGZpeCByZXZvbHZlcyBhcm91bmQgYWRkaW5nIGJvdW5kcyBjaGVja2luZyB0byBiLXRyZWUgcmVjb3Jkcy5cblxuR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgcGF0Y2gsIHdpdGggdGhlIGVtcGhhc2lzIG9uIGlucHV0IHZhbGlkYXRpb24gYW5kIG1pdGlnYXRpbmcgaXNzdWVzIGFyaXNpbmcgZnJvbSBwb3RlbnRpYWxseSBtYWxmb3JtZWQgZGF0YSwgZnV6emluZyBpcyBkZWZpbml0ZWx5IHdhcnJhbnRlZCDigJMgYSByZXNvdW5kaW5nIFwiVHJ1ZVwiLlxuXG5Ob3csIGxldCdzIGRyaWxsIGRvd24gb24gdGhlIGtleSBzeW1ib2xzIHRvIHRhcmdldCB3aXRoIHRoZSBmdXp6ZXIuIE15IGZvY3VzIHdpbGwgYmUgb24gYF9faGZzX2JyZWNfZmluZGAsIGBoZnNfYnJlY19nb3RvYCwgYGhmc19ibm9kZV9maW5kYCwgYGhmc19icmVjX2xlbm9mZmAsIGBoZnNfYnJlY19rZXlsZW5gLCBhbmQgYGhmc19icmVjX3JlbW92ZWAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY2VudHJhbCB0byBiLXRyZWUgcmVjb3JkIGhhbmRsaW5nLCBhbmQgdGhlcmVmb3JlLCB0aGV5IGFyZSB0aGUgcHJpbWUgY2FuZGlkYXRlcyB0byBleHBvc2UgYW55IHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIHRoZSBuZXcgYm91bmRzIGNoZWNrcy5cblxuTXkgcmVhc29uaW5nIGlzIHRoaXM6IHRoZSBwYXRjaCdzIHB1cnBvc2UgaXMgdG8gdmFsaWRhdGUgYW5kIGVuc3VyZSB0aGF0IG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYW5kIGxvZ2ljYWwgZXJyb3JzIGFyZSBwcmV2ZW50ZWQgd2hlbiBwYXJzaW5nIGNvcnJ1cHRlZCBIRlMrIGZpbGVzeXN0ZW0gaW1hZ2VzLiBGdXp6aW5nLCBzcGVjaWZpY2FsbHkgd2l0aCBpbnRlbnRpb25hbGx5IGNvcnJ1cHRlZCBpbWFnZXMsIHdpbGwgcHJvdmlkZSB0aGUgbW9zdCBkaXJlY3QgYW5kIGVmZmVjdGl2ZSBtZWFucyB0byB2ZXJpZnkgdGhlIGludGVncml0eSBhbmQgZWZmZWN0aXZlbmVzcyBvZiB0aGVzZSBhZGRlZCBjaGVja3MuIFdlIG5lZWQgdG8gdGhyb3cgZXZlcnl0aGluZyB3ZSBjYW4gYXQgdGhlc2UgZnVuY3Rpb25zIHRvIG1ha2Ugc3VyZSB0aGUgZml4IGhvbGRzIHVwIHVuZGVyIHByZXNzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODcyLCJPdXRwdXRUb2tlbnMiOjE0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMzowMzowOS40ODQxMzA2MTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NTIzMjExMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSEZTUExVU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9faGZzX2JyZWNfZmluZFwiLFxuICAgIFwiaGZzX2JyZWNfZ290b1wiLFxuICAgIFwiaGZzX2Jub2RlX2ZpbmRcIixcbiAgICBcImhmc19icmVjX2xlbm9mZlwiLFxuICAgIFwiaGZzX2JyZWNfa2V5bGVuXCIsXG4gICAgXCJoZnNfYnJlY19yZW1vdmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBhbmQgdmFsaWRhdGlvbiBmb3IgSEZTKyBiLXRyZWUgcmVjb3JkcyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYW5kIGxvZ2ljIGVycm9ycyB3aGVuIHBhcnNpbmcgY29ycnVwdGVkIGZpbGVzeXN0ZW0gaW1hZ2VzLiBGdXp6aW5nIHdpdGggY29ycnVwdGVkIGltYWdlcyB3aWxsIGhlbHAgdmVyaWZ5IHRoZSBjb3JyZWN0bmVzcyBvZiB0aGVzZSBjaGVja3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSEZTUExVU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9faGZzX2JyZWNfZmluZFwiLFxuICAgIFwiaGZzX2JyZWNfZ290b1wiLFxuICAgIFwiaGZzX2Jub2RlX2ZpbmRcIixcbiAgICBcImhmc19icmVjX2xlbm9mZlwiLFxuICAgIFwiaGZzX2JyZWNfa2V5bGVuXCIsXG4gICAgXCJoZnNfYnJlY19yZW1vdmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBhbmQgdmFsaWRhdGlvbiBmb3IgSEZTKyBiLXRyZWUgcmVjb3JkcyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYW5kIGxvZ2ljIGVycm9ycyB3aGVuIHBhcnNpbmcgY29ycnVwdGVkIGZpbGVzeXN0ZW0gaW1hZ2VzLiBGdXp6aW5nIHdpdGggY29ycnVwdGVkIGltYWdlcyB3aWxsIGhlbHAgdmVyaWZ5IHRoZSBjb3JyZWN0bmVzcyBvZiB0aGVzZSBjaGVja3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvhvzs[1] Phase: Succeeded StartedAt: 2026-07-02 13:03:32 +0000 UTC FinishedAt: 2026-07-02 13:03:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhvzs[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-02 13:03:32 +0000 UTC FinishedAt: 2026-07-02 13:03:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhvzs[2] Phase: Succeeded StartedAt: 2026-07-02 13:03:32 +0000 UTC FinishedAt: 2026-07-02 17:32:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-02 13:03:32 +0000 UTC FinishedAt: 2026-07-02 17:32:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","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-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-02 13:03:32 +0000 UTC FinishedAt: 2026-07-02 13:04:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-02 13:03:32 +0000 UTC FinishedAt: 2026-07-02 13:03:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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-workflowvhvzs/series-workflowvhvzs-convert-artifact-871805720/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-02 13:04:16 +0000 UTC FinishedAt: 2026-07-02 13:43:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-02 13:04:16 +0000 UTC FinishedAt: 2026-07-02 13:43:55 +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:*8a6e5c3e-344f-4b73-ae85-a79149e9898a,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-workflowvhvzs/series-workflowvhvzs-convert-artifact-871805720/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": "413f5f54-f48f-4d5a-9f75-6d3189a6a668", "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-workflowvhvzs/series-workflowvhvzs-build-action-2451959886/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-02 13:04:16 +0000 UTC FinishedAt: 2026-07-02 13:42:52 +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:*8a6e5c3e-344f-4b73-ae85-a79149e9898a,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-workflowvhvzs/series-workflowvhvzs-convert-artifact-871805720/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": "413f5f54-f48f-4d5a-9f75-6d3189a6a668", "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-workflowvhvzs/series-workflowvhvzs-build-action-2451959886/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-02 13:43:55 +0000 UTC FinishedAt: 2026-07-02 13:43:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-02 13:43:55 +0000 UTC FinishedAt: 2026-07-02 13:43:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-02 13:43:55 +0000 UTC FinishedAt: 2026-07-02 13:44:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-02 13:43:55 +0000 UTC FinishedAt: 2026-07-02 13:44:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","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-workflowvhvzs/series-workflowvhvzs-convert-artifact-1939400831/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-02 13:44:23 +0000 UTC FinishedAt: 2026-07-02 13:46:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-02 13:44:23 +0000 UTC FinishedAt: 2026-07-02 13:46:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*413f5f54-f48f-4d5a-9f75-6d3189a6a668,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-workflowvhvzs/series-workflowvhvzs-build-action-2451959886/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-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-02 13:46:39 +0000 UTC FinishedAt: 2026-07-02 13:46:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-02 13:46:39 +0000 UTC FinishedAt: 2026-07-02 13:46:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-02 13:46:39 +0000 UTC FinishedAt: 2026-07-02 14:26:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-02 13:46:39 +0000 UTC FinishedAt: 2026-07-02 14:26:23 +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:*8a6e5c3e-344f-4b73-ae85-a79149e9898a,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-workflowvhvzs/series-workflowvhvzs-convert-artifact-1939400831/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": "84ad90b8-fa38-4ba8-bc31-ffd8bc31fc8e", "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-workflowvhvzs/series-workflowvhvzs-build-action-3484135059/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-02 13:46:39 +0000 UTC FinishedAt: 2026-07-02 14:26:13 +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:*8a6e5c3e-344f-4b73-ae85-a79149e9898a,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-workflowvhvzs/series-workflowvhvzs-convert-artifact-1939400831/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": "84ad90b8-fa38-4ba8-bc31-ffd8bc31fc8e", "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-workflowvhvzs/series-workflowvhvzs-build-action-3484135059/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-02 14:26:23 +0000 UTC FinishedAt: 2026-07-02 14:26:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-02 14:26:23 +0000 UTC FinishedAt: 2026-07-02 14:26:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-02 14:26:23 +0000 UTC FinishedAt: 2026-07-02 14:28:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-02 14:26:23 +0000 UTC FinishedAt: 2026-07-02 14:28: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:*84ad90b8-fa38-4ba8-bc31-ffd8bc31fc8e,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-workflowvhvzs/series-workflowvhvzs-build-action-3484135059/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-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-02 14:28:42 +0000 UTC FinishedAt: 2026-07-02 17:32:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-02 14:28:42 +0000 UTC FinishedAt: 2026-07-02 17:32:10 +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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"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:*413f5f54-f48f-4d5a-9f75-6d3189a6a668,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*84ad90b8-fa38-4ba8-bc31-ffd8bc31fc8e,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-workflowvhvzs/series-workflowvhvzs-build-action-2451959886/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-workflowvhvzs/series-workflowvhvzs-build-action-3484135059/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-02 14:28:42 +0000 UTC FinishedAt: 2026-07-02 14:28:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-02 14:28:42 +0000 UTC FinishedAt: 2026-07-02 14:28: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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"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-workflowvhvzs/series-workflowvhvzs-convert-artifact-229329432/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-02 14:28:42 +0000 UTC FinishedAt: 2026-07-02 14:28:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-02 14:28:42 +0000 UTC FinishedAt: 2026-07-02 14:28:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-02 14:28:42 +0000 UTC FinishedAt: 2026-07-02 14:28:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-02 14:28:52 +0000 UTC FinishedAt: 2026-07-02 17:32:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhvzs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_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":["__hfs_brec_find","hfs_brec_goto","hfs_bnode_find","hfs_brec_lenoff","hfs_brec_keylen","hfs_brec_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"49fd1c17-2d02-4c42-9675-0137fc89fb3a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-02 14:28:52 +0000 UTC FinishedAt: 2026-07-02 17:32:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*413f5f54-f48f-4d5a-9f75-6d3189a6a668,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*84ad90b8-fa38-4ba8-bc31-ffd8bc31fc8e,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-workflowvhvzs/series-workflowvhvzs-build-action-2451959886/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-workflowvhvzs/series-workflowvhvzs-build-action-3484135059/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-workflowvhvzs/series-workflowvhvzs-convert-artifact-229329432/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,}