Name: series-workflowznvww Phase: Succeeded StartedAt: 2026-07-06 13:40:01 +0000 UTC FinishedAt: 2026-07-06 18:43:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvww[0] Phase: Succeeded StartedAt: 2026-07-06 13:40:01 +0000 UTC FinishedAt: 2026-07-06 14:12:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvww[0].run-triage Phase: Succeeded StartedAt: 2026-07-06 13:40:01 +0000 UTC FinishedAt: 2026-07-06 14:12:31 +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": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFS_FS" ], "series_id": "0d423c7d-496d-4624-b557-776c19c6e244" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "hfs_cat_validate_found_cnid", "hfs_cat_find_brec", "hfs_read_inode", "hfs_file_lookup", "hfs_fill_super" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA2IDE0OjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZCYjMzQ7LAogICAgJiMzNDtoZnNfY2F0X2ZpbmRfYnJlYyYjMzQ7LAogICAgJiMzNDtoZnNfcmVhZF9pbm9kZSYjMzQ7LAogICAgJiMzNDtoZnNfZmlsZV9sb29rdXAmIzM0OywKICAgICYjMzQ7aGZzX2ZpbGxfc3VwZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBDTklEIGluIEhGUyBjYXRhbG9nIHJlY29yZHMgYW5kIGlub2RlcyB0byBwcmV2ZW50IHVzaW5nIGludmFsaWQgb3IgY29ycnVwdGVkIGNhdGFsb2cgcmVjb3Jkcy4gSXQgbW9kaWZpZXMgY29yZSBIRlMgZnVuY3Rpb25zIGxpa2UgaGZzX3JlYWRfaW5vZGUsIGhmc19jYXRfZmluZF9icmVjLCBhbmQgaGZzX2ZpbGxfc3VwZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgSEZTIGZpbGVzeXN0ZW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgdmFsaWRhdGlvbiBsb2dpYyB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAxNDoxMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDE2MzczNDI0NDAzODMyNjZiNmM0ZmU0Y2ZmMWZkMmYyYzE3YzYwOWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCA2IDE0OjEwOjM1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2hmcy9jYXRhbG9nLmMgYi9mcy9oZnMvY2F0YWxvZy5jXG5pbmRleCAxYmZhMzZkNzFlMjQ3YS4uNTBlZTcwOWQ5NjZmNjMgMTAwNjQ0XG4tLS0gYS9mcy9oZnMvY2F0YWxvZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvY2F0YWxvZy5jXG5AQCAtMTgyLDYgJiM0MzsxODIsNDMgQEAgaW50IGhmc19jYXRfa2V5Y21wKGNvbnN0IGJ0cmVlX2tleSAqa2V5MSwgY29uc3QgYnRyZWVfa2V5ICprZXkyKVxuIFx0XHRcdCAga2V5Mi1cdTAwM2VjYXQuQ05hbWUubmFtZSwga2V5Mi1cdTAwM2VjYXQuQ05hbWUubGVuKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgdTMyIGNuaWQpXG4mIzQzO3tcbiYjNDM7XHRoZnNfY2F0X3JlYyByZWM7XG4mIzQzO1x0dTMyIGZvdW5kX2NuaWQ7XG4mIzQzO1x0c2l6ZV90IHJlY19sZW47XG4mIzQzO1xuJiM0MztcdGlmIChmZC1cdTAwM2VlbnRyeWxlbmd0aCBcdTAwM2M9IDApXG4mIzQzO1x0XHRyZXR1cm4gLUVJTztcbiYjNDM7XG4mIzQzO1x0cmVjX2xlbiA9IGZkLVx1MDAzZWVudHJ5bGVuZ3RoO1xuJiM0MztcdGlmIChyZWNfbGVuIFx1MDAzZSBzaXplb2YocmVjKSlcbiYjNDM7XHRcdHJldHVybiAtRUlPO1xuJiM0MztcbiYjNDM7XHRtZW1zZXQoXHUwMDI2cmVjLCAwLCBzaXplb2YocmVjKSk7XG4mIzQzO1x0aGZzX2Jub2RlX3JlYWQoZmQtXHUwMDNlYm5vZGUsIFx1MDAyNnJlYywgZmQtXHUwMDNlZW50cnlvZmZzZXQsIHJlY19sZW4pO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHJlYy50eXBlKSB7XG4mIzQzO1x0Y2FzZSBIRlNfQ0RSX0ZJTDpcbiYjNDM7XHRcdGlmIChyZWNfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IGhmc19jYXRfZmlsZSkpXG4mIzQzO1x0XHRcdHJldHVybiAtRUlPO1xuJiM0MztcdFx0Zm91bmRfY25pZCA9IGJlMzJfdG9fY3B1KHJlYy5maWxlLkZsTnVtKTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgSEZTX0NEUl9ESVI6XG4mIzQzO1x0XHRpZiAocmVjX2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBoZnNfY2F0X2RpcikpXG4mIzQzO1x0XHRcdHJldHVybiAtRUlPO1xuJiM0MztcdFx0Zm91bmRfY25pZCA9IGJlMzJfdG9fY3B1KHJlYy5kaXIuRGlySUQpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHJldHVybiAtRUlPO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKGZvdW5kX2NuaWQgIT0gY25pZClcbiYjNDM7XHRcdHJldHVybiAtRUlPO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiAvKiBUcnkgdG8gZ2V0IGEgY2F0YWxvZyBlbnRyeSBmb3IgZ2l2ZW4gY2F0YWxvZyBpZCAqL1xuIC8vIG1vdmUgdG8gcmVhZF9zdXBlcj8/P1xuIGludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcbkBAIC0yMDgsNyAmIzQzOzI0NSwxMiBAQCBpbnQgaGZzX2NhdF9maW5kX2JyZWMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsXG4gXHRcdHJldHVybiAtRUlPO1xuIFx0fVxuIFx0bWVtY3B5KGZkLVx1MDAzZXNlYXJjaF9rZXktXHUwMDNlY2F0LkNOYW1lLm5hbWUsIHJlYy50aHJlYWQuQ05hbWUubmFtZSwgbGVuKTtcbi1cdHJldHVybiBoZnNfYnJlY19maW5kKGZkKTtcbiYjNDM7XG4mIzQzO1x0cmVzID0gaGZzX2JyZWNfZmluZChmZCk7XG4mIzQzO1x0aWYgKHJlcylcbiYjNDM7XHRcdHJldHVybiByZXM7XG4mIzQzO1xuJiM0MztcdHJldHVybiBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWQoZmQsIGNuaWQpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lXG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2hmc19mcy5oIGIvZnMvaGZzL2hmc19mcy5oXG5pbmRleCBmMzYyNDUxNGZjYjAzMC4uNjcwNjM4ZjE3NDM4Y2UgMTAwNjQ0XG4tLS0gYS9mcy9oZnMvaGZzX2ZzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmcy9oZnNfZnMuaFxuQEAgLTE1NSw2ICYjNDM7MTU1LDI1IEBAIGV4dGVybiBpbnQgaGZzX2NhdF9tb3ZlKHUzMiBjbmlkLCBzdHJ1Y3QgaW5vZGUgKnNyY19kaXIsXG4gZXh0ZXJuIHZvaWQgaGZzX2NhdF9idWlsZF9rZXkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgYnRyZWVfa2V5ICprZXksXG4gXHRcdFx0ICAgICAgdTMyIHBhcmVudCwgY29uc3Qgc3RydWN0IHFzdHIgKm5hbWUpO1xuIFxuJiM0MzsvKlxuJiM0MzsgKiBWYWxpZGF0ZSB0aGUgQ05JRCBvZiBhIGNhdGFsb2cgcmVjb3JkLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGlubGluZSBib29sIGhmc19pc192YWxpZF9jbmlkKHUzMiBjbmlkLCB1OCB0eXBlKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGxpa2VseShjbmlkIFx1MDAzZT0gSEZTX0ZJUlNUVVNFUl9DTklEKSlcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKGNuaWQpIHtcbiYjNDM7XHRjYXNlIEhGU19ST09UX0NOSUQ6XG4mIzQzO1x0XHRyZXR1cm4gdHlwZSA9PSBIRlNfQ0RSX0RJUjtcbiYjNDM7XHRjYXNlIEhGU19FWFRfQ05JRDpcbiYjNDM7XHRjYXNlIEhGU19DQVRfQ05JRDpcbiYjNDM7XHRcdHJldHVybiB0eXBlID09IEhGU19DRFJfRklMO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIC8qIGRpci5jICovXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaGZzX2Rpcl9vcGVyYXRpb25zO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBoZnNfZGlyX2lub2RlX29wZXJhdGlvbnM7XG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2lub2RlLmMgYi9mcy9oZnMvaW5vZGUuY1xuaW5kZXggYWM0YTkwNTVjNWMwZWEuLmVlMTBhOTI1N2ExMzhhIDEwMDY0NFxuLS0tIGEvZnMvaGZzL2lub2RlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmcy9pbm9kZS5jXG5AQCAtMzY3LDYgJiM0MzszNjcsOSBAQCBzdGF0aWMgaW50IGhmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpXG4gXHRyZWMgPSBpZGF0YS1cdTAwM2VyZWM7XG4gXHRzd2l0Y2ggKHJlYy1cdTAwM2V0eXBlKSB7XG4gXHRjYXNlIEhGU19DRFJfRklMOlxuJiM0MztcdFx0aWYgKCFoZnNfaXNfdmFsaWRfY25pZChiZTMyX3RvX2NwdShyZWMtXHUwMDNlZmlsZS5GbE51bSksIHJlYy1cdTAwM2V0eXBlKSlcbiYjNDM7XHRcdFx0cmV0dXJuIC1FSU87XG4mIzQzO1xuIFx0XHRpZiAoIUhGU19JU19SU1JDKGlub2RlKSkge1xuIFx0XHRcdGhmc19pbm9kZV9yZWFkX2ZvcmsoaW5vZGUsIHJlYy1cdTAwM2VmaWxlLkV4dFJlYywgcmVjLVx1MDAzZWZpbGUuTGdMZW4sXG4gXHRcdFx0XHRcdCAgICByZWMtXHUwMDNlZmlsZS5QeUxlbiwgYmUxNl90b19jcHUocmVjLVx1MDAzZWZpbGUuQ2xwU2l6ZSkpO1xuQEAgLTM5MCw2ICYjNDM7MzkzLDkgQEAgc3RhdGljIGludCBoZnNfcmVhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkYXRhKVxuIFx0XHRpbm9kZS1cdTAwM2VpX21hcHBpbmctXHUwMDNlYV9vcHMgPSBcdTAwMjZoZnNfYW9wcztcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEhGU19DRFJfRElSOlxuJiM0MztcdFx0aWYgKCFoZnNfaXNfdmFsaWRfY25pZChiZTMyX3RvX2NwdShyZWMtXHUwMDNlZGlyLkRpcklEKSwgcmVjLVx1MDAzZXR5cGUpKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVJTztcbiYjNDM7XG4gXHRcdGlub2RlLVx1MDAzZWlfaW5vID0gYmUzMl90b19jcHUocmVjLVx1MDAzZWRpci5EaXJJRCk7XG4gXHRcdGlub2RlLVx1MDAzZWlfc2l6ZSA9IGJlMTZfdG9fY3B1KHJlYy1cdTAwM2VkaXIuVmFsKSAmIzQzOyAyO1xuIFx0XHRIRlNfSShpbm9kZSktXHUwMDNlZnNfYmxvY2tzID0gMDtcbkBAIC01NzEsMTIgJiM0Mzs1NzcsMTIgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmhmc19maWxlX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuIFx0cmVzID0gaGZzX2JyZWNfcmVhZChcdTAwMjZmZCwgXHUwMDI2cmVjLCBzaXplb2YocmVjKSk7XG4gXHRpZiAoIXJlcykge1xuIFx0XHRzdHJ1Y3QgaGZzX2lnZXRfZGF0YSBpZGF0YSA9IHsgTlVMTCwgXHUwMDI2cmVjIH07XG4tXHRcdGhmc19yZWFkX2lub2RlKGlub2RlLCBcdTAwMjZpZGF0YSk7XG4mIzQzO1x0XHRyZXMgPSBoZnNfcmVhZF9pbm9kZShpbm9kZSwgXHUwMDI2aWRhdGEpO1xuIFx0fVxuIFx0aGZzX2ZpbmRfZXhpdChcdTAwMjZmZCk7XG4tXHRpZiAocmVzKSB7XG4mIzQzO1x0aWYgKHJlcyB8fCBpc19iYWRfaW5vZGUoaW5vZGUpKSB7XG4gXHRcdGlwdXQoaW5vZGUpO1xuLVx0XHRyZXR1cm4gRVJSX1BUUihyZXMpO1xuJiM0MztcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTyk7XG4gXHR9XG4gXHRIRlNfSShpbm9kZSktXHUwMDNlcnNyY19pbm9kZSA9IGRpcjtcbiBcdEhGU19JKGRpciktXHUwMDNlcnNyY19pbm9kZSA9IGlub2RlO1xuZGlmZiAtLWdpdCBhL2ZzL2hmcy9zdXBlci5jIGIvZnMvaGZzL3N1cGVyLmNcbmluZGV4IGE0NjZjNDAxZjZiYjI2Li45OGI4MDc5NWJjZGU5YSAxMDA2NDRcbi0tLSBhL2ZzL2hmcy9zdXBlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvc3VwZXIuY1xuQEAgLTM3Miw2ICYjNDM7MzcyLDExIEBAIHN0YXRpYyBpbnQgaGZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuIFx0aWYgKCFyb290X2lub2RlKVxuIFx0XHRnb3RvIGJhaWxfbm9fcm9vdDtcbiBcbiYjNDM7XHRpZiAoaXNfYmFkX2lub2RlKHJvb3RfaW5vZGUpKSB7XG4mIzQzO1x0XHRpcHV0KHJvb3RfaW5vZGUpO1xuJiM0MztcdFx0Z290byBiYWlsX25vX3Jvb3Q7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHNldF9kZWZhdWx0X2Rfb3Aoc2IsIFx1MDAyNmhmc19kZW50cnlfb3BlcmF0aW9ucyk7XG4gXHRyZXMgPSAtRU5PTUVNO1xuIFx0c2ItXHUwMDNlc19yb290ID0gZF9tYWtlX3Jvb3Qocm9vdF9pbm9kZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTQ6MTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SEZTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkJiMzNDssCiAgICAmIzM0O2hmc19jYXRfZmluZF9icmVjJiMzNDssCiAgICAmIzM0O2hmc19yZWFkX2lub2RlJiMzNDssCiAgICAmIzM0O2hmc19maWxlX2xvb2t1cCYjMzQ7LAogICAgJiMzNDtoZnNfZmlsbF9zdXBlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIENOSUQgaW4gSEZTIGNhdGFsb2cgcmVjb3JkcyBhbmQgaW5vZGVzIHRvIHByZXZlbnQgdXNpbmcgaW52YWxpZCBvciBjb3JydXB0ZWQgY2F0YWxvZyByZWNvcmRzLiBJdCBtb2RpZmllcyBjb3JlIEhGUyBmdW5jdGlvbnMgbGlrZSBoZnNfcmVhZF9pbm9kZSwgaGZzX2NhdF9maW5kX2JyZWMsIGFuZCBoZnNfZmlsbF9zdXBlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBIRlMgZmlsZXN5c3RlbSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG5ldyB2YWxpZGF0aW9uIGxvZ2ljIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxNjM3MzQyNDQwMzgzMjY2YjZjNGZlNGNmZjFmZDJmMmMxN2M2MDlmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgNiAxNDoxMDozNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2hmcy9jYXRhbG9nLmMgYi9mcy9oZnMvY2F0YWxvZy5jCmluZGV4IDFiZmEzNmQ3MWUyNDdhLi41MGVlNzA5ZDk2NmY2MyAxMDA2NDQKLS0tIGEvZnMvaGZzL2NhdGFsb2cuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvY2F0YWxvZy5jCkBAIC0xODIsNiAmIzQzOzE4Miw0MyBAQCBpbnQgaGZzX2NhdF9rZXljbXAoY29uc3QgYnRyZWVfa2V5ICprZXkxLCBjb25zdCBidHJlZV9rZXkgKmtleTIpCiAJCQkgIGtleTItJmd0O2NhdC5DTmFtZS5uYW1lLCBrZXkyLSZndDtjYXQuQ05hbWUubGVuKTsKIH0KIAomIzQzO3N0YXRpYyBpbnQgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgdTMyIGNuaWQpCiYjNDM7ewomIzQzOwloZnNfY2F0X3JlYyByZWM7CiYjNDM7CXUzMiBmb3VuZF9jbmlkOwomIzQzOwlzaXplX3QgcmVjX2xlbjsKJiM0MzsKJiM0MzsJaWYgKGZkLSZndDtlbnRyeWxlbmd0aCAmbHQ7PSAwKQomIzQzOwkJcmV0dXJuIC1FSU87CiYjNDM7CiYjNDM7CXJlY19sZW4gPSBmZC0mZ3Q7ZW50cnlsZW5ndGg7CiYjNDM7CWlmIChyZWNfbGVuICZndDsgc2l6ZW9mKHJlYykpCiYjNDM7CQlyZXR1cm4gLUVJTzsKJiM0MzsKJiM0MzsJbWVtc2V0KCZhbXA7cmVjLCAwLCBzaXplb2YocmVjKSk7CiYjNDM7CWhmc19ibm9kZV9yZWFkKGZkLSZndDtibm9kZSwgJmFtcDtyZWMsIGZkLSZndDtlbnRyeW9mZnNldCwgcmVjX2xlbik7CiYjNDM7CiYjNDM7CXN3aXRjaCAocmVjLnR5cGUpIHsKJiM0MzsJY2FzZSBIRlNfQ0RSX0ZJTDoKJiM0MzsJCWlmIChyZWNfbGVuICZsdDsgc2l6ZW9mKHN0cnVjdCBoZnNfY2F0X2ZpbGUpKQomIzQzOwkJCXJldHVybiAtRUlPOwomIzQzOwkJZm91bmRfY25pZCA9IGJlMzJfdG9fY3B1KHJlYy5maWxlLkZsTnVtKTsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIEhGU19DRFJfRElSOgomIzQzOwkJaWYgKHJlY19sZW4gJmx0OyBzaXplb2Yoc3RydWN0IGhmc19jYXRfZGlyKSkKJiM0MzsJCQlyZXR1cm4gLUVJTzsKJiM0MzsJCWZvdW5kX2NuaWQgPSBiZTMyX3RvX2NwdShyZWMuZGlyLkRpcklEKTsKJiM0MzsJCWJyZWFrOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcmV0dXJuIC1FSU87CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKGZvdW5kX2NuaWQgIT0gY25pZCkKJiM0MzsJCXJldHVybiAtRUlPOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiAvKiBUcnkgdG8gZ2V0IGEgY2F0YWxvZyBlbnRyeSBmb3IgZ2l2ZW4gY2F0YWxvZyBpZCAqLwogLy8gbW92ZSB0byByZWFkX3N1cGVyPz8/CiBpbnQgaGZzX2NhdF9maW5kX2JyZWMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsCkBAIC0yMDgsNyAmIzQzOzI0NSwxMiBAQCBpbnQgaGZzX2NhdF9maW5kX2JyZWMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsCiAJCXJldHVybiAtRUlPOwogCX0KIAltZW1jcHkoZmQtJmd0O3NlYXJjaF9rZXktJmd0O2NhdC5DTmFtZS5uYW1lLCByZWMudGhyZWFkLkNOYW1lLm5hbWUsIGxlbik7Ci0JcmV0dXJuIGhmc19icmVjX2ZpbmQoZmQpOwomIzQzOwomIzQzOwlyZXMgPSBoZnNfYnJlY19maW5kKGZkKTsKJiM0MzsJaWYgKHJlcykKJiM0MzsJCXJldHVybiByZXM7CiYjNDM7CiYjNDM7CXJldHVybiBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWQoZmQsIGNuaWQpOwogfQogCiBzdGF0aWMgaW5saW5lCmRpZmYgLS1naXQgYS9mcy9oZnMvaGZzX2ZzLmggYi9mcy9oZnMvaGZzX2ZzLmgKaW5kZXggZjM2MjQ1MTRmY2IwMzAuLjY3MDYzOGYxNzQzOGNlIDEwMDY0NAotLS0gYS9mcy9oZnMvaGZzX2ZzLmgKJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzL2hmc19mcy5oCkBAIC0xNTUsNiAmIzQzOzE1NSwyNSBAQCBleHRlcm4gaW50IGhmc19jYXRfbW92ZSh1MzIgY25pZCwgc3RydWN0IGlub2RlICpzcmNfZGlyLAogZXh0ZXJuIHZvaWQgaGZzX2NhdF9idWlsZF9rZXkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgYnRyZWVfa2V5ICprZXksCiAJCQkgICAgICB1MzIgcGFyZW50LCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSk7CiAKJiM0MzsvKgomIzQzOyAqIFZhbGlkYXRlIHRoZSBDTklEIG9mIGEgY2F0YWxvZyByZWNvcmQuCiYjNDM7ICovCiYjNDM7c3RhdGljIGlubGluZSBib29sIGhmc19pc192YWxpZF9jbmlkKHUzMiBjbmlkLCB1OCB0eXBlKQomIzQzO3sKJiM0MzsJaWYgKGxpa2VseShjbmlkICZndDs9IEhGU19GSVJTVFVTRVJfQ05JRCkpCiYjNDM7CQlyZXR1cm4gdHJ1ZTsKJiM0MzsKJiM0MzsJc3dpdGNoIChjbmlkKSB7CiYjNDM7CWNhc2UgSEZTX1JPT1RfQ05JRDoKJiM0MzsJCXJldHVybiB0eXBlID09IEhGU19DRFJfRElSOwomIzQzOwljYXNlIEhGU19FWFRfQ05JRDoKJiM0MzsJY2FzZSBIRlNfQ0FUX0NOSUQ6CiYjNDM7CQlyZXR1cm4gdHlwZSA9PSBIRlNfQ0RSX0ZJTDsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIC8qIGRpci5jICovCiBleHRlcm4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBoZnNfZGlyX29wZXJhdGlvbnM7CiBleHRlcm4gY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgaGZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zOwpkaWZmIC0tZ2l0IGEvZnMvaGZzL2lub2RlLmMgYi9mcy9oZnMvaW5vZGUuYwppbmRleCBhYzRhOTA1NWM1YzBlYS4uZWUxMGE5MjU3YTEzOGEgMTAwNjQ0Ci0tLSBhL2ZzL2hmcy9pbm9kZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmcy9pbm9kZS5jCkBAIC0zNjcsNiAmIzQzOzM2Nyw5IEBAIHN0YXRpYyBpbnQgaGZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCAqZGF0YSkKIAlyZWMgPSBpZGF0YS0mZ3Q7cmVjOwogCXN3aXRjaCAocmVjLSZndDt0eXBlKSB7CiAJY2FzZSBIRlNfQ0RSX0ZJTDoKJiM0MzsJCWlmICghaGZzX2lzX3ZhbGlkX2NuaWQoYmUzMl90b19jcHUocmVjLSZndDtmaWxlLkZsTnVtKSwgcmVjLSZndDt0eXBlKSkKJiM0MzsJCQlyZXR1cm4gLUVJTzsKJiM0MzsKIAkJaWYgKCFIRlNfSVNfUlNSQyhpbm9kZSkpIHsKIAkJCWhmc19pbm9kZV9yZWFkX2ZvcmsoaW5vZGUsIHJlYy0mZ3Q7ZmlsZS5FeHRSZWMsIHJlYy0mZ3Q7ZmlsZS5MZ0xlbiwKIAkJCQkJICAgIHJlYy0mZ3Q7ZmlsZS5QeUxlbiwgYmUxNl90b19jcHUocmVjLSZndDtmaWxlLkNscFNpemUpKTsKQEAgLTM5MCw2ICYjNDM7MzkzLDkgQEAgc3RhdGljIGludCBoZnNfcmVhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkYXRhKQogCQlpbm9kZS0mZ3Q7aV9tYXBwaW5nLSZndDthX29wcyA9ICZhbXA7aGZzX2FvcHM7CiAJCWJyZWFrOwogCWNhc2UgSEZTX0NEUl9ESVI6CiYjNDM7CQlpZiAoIWhmc19pc192YWxpZF9jbmlkKGJlMzJfdG9fY3B1KHJlYy0mZ3Q7ZGlyLkRpcklEKSwgcmVjLSZndDt0eXBlKSkKJiM0MzsJCQlyZXR1cm4gLUVJTzsKJiM0MzsKIAkJaW5vZGUtJmd0O2lfaW5vID0gYmUzMl90b19jcHUocmVjLSZndDtkaXIuRGlySUQpOwogCQlpbm9kZS0mZ3Q7aV9zaXplID0gYmUxNl90b19jcHUocmVjLSZndDtkaXIuVmFsKSAmIzQzOyAyOwogCQlIRlNfSShpbm9kZSktJmd0O2ZzX2Jsb2NrcyA9IDA7CkBAIC01NzEsMTIgJiM0Mzs1NzcsMTIgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmhmc19maWxlX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LAogCXJlcyA9IGhmc19icmVjX3JlYWQoJmFtcDtmZCwgJmFtcDtyZWMsIHNpemVvZihyZWMpKTsKIAlpZiAoIXJlcykgewogCQlzdHJ1Y3QgaGZzX2lnZXRfZGF0YSBpZGF0YSA9IHsgTlVMTCwgJmFtcDtyZWMgfTsKLQkJaGZzX3JlYWRfaW5vZGUoaW5vZGUsICZhbXA7aWRhdGEpOwomIzQzOwkJcmVzID0gaGZzX3JlYWRfaW5vZGUoaW5vZGUsICZhbXA7aWRhdGEpOwogCX0KIAloZnNfZmluZF9leGl0KCZhbXA7ZmQpOwotCWlmIChyZXMpIHsKJiM0MzsJaWYgKHJlcyB8fCBpc19iYWRfaW5vZGUoaW5vZGUpKSB7CiAJCWlwdXQoaW5vZGUpOwotCQlyZXR1cm4gRVJSX1BUUihyZXMpOwomIzQzOwkJcmV0dXJuIEVSUl9QVFIoLUVJTyk7CiAJfQogCUhGU19JKGlub2RlKS0mZ3Q7cnNyY19pbm9kZSA9IGRpcjsKIAlIRlNfSShkaXIpLSZndDtyc3JjX2lub2RlID0gaW5vZGU7CmRpZmYgLS1naXQgYS9mcy9oZnMvc3VwZXIuYyBiL2ZzL2hmcy9zdXBlci5jCmluZGV4IGE0NjZjNDAxZjZiYjI2Li45OGI4MDc5NWJjZGU5YSAxMDA2NDQKLS0tIGEvZnMvaGZzL3N1cGVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzL3N1cGVyLmMKQEAgLTM3Miw2ICYjNDM7MzcyLDExIEBAIHN0YXRpYyBpbnQgaGZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQogCWlmICghcm9vdF9pbm9kZSkKIAkJZ290byBiYWlsX25vX3Jvb3Q7CiAKJiM0MzsJaWYgKGlzX2JhZF9pbm9kZShyb290X2lub2RlKSkgewomIzQzOwkJaXB1dChyb290X2lub2RlKTsKJiM0MzsJCWdvdG8gYmFpbF9ub19yb290OwomIzQzOwl9CiYjNDM7CiAJc2V0X2RlZmF1bHRfZF9vcChzYiwgJmFtcDtoZnNfZGVudHJ5X29wZXJhdGlvbnMpOwogCXJlcyA9IC1FTk9NRU07CiAJc2ItJmd0O3Nfcm9vdCA9IGRfbWFrZV9yb290KHJvb3RfaW5vZGUpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAxNDoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjMxCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEhGUyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgZGlnZ2luZyBpbnRvIHRoZSBIRlMgZmlsZXN5c3RlbSBjb2RlLiBTZWVtcyBsaWtlIHRoZSBjb3JlIG1vZGlmaWNhdGlvbnMgYXJlIGZvY3VzZWQgb24gYWRkaW5nIENOSUQgdmFsaWRhdGlvbiwgd2hpY2ggaXMgYSBnb29kIG1vdmUuIFRoZXkmIzM5O3JlIHRvdWNoaW5nIGBjYXRhbG9nLmNgLCBgaGZzX2ZzLmhgLCBgaW5vZGUuY2AsIGFuZCBgc3VwZXIuY2AsIHNvIGl0JiMzOTtzIGEgcHJldHR5IGludmFzaXZlIGNoYW5nZSB0byBob3cgdGhlIGZpbGVzeXN0ZW0gb3BlcmF0ZXMuCgpTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgaG9va2luZyBpbnRvIGBoZnNfY2F0X2ZpbmRfYnJlY2AsIGBoZnNfcmVhZF9pbm9kZWAsIGBoZnNfZmlsZV9sb29rdXBgLCBhbmQgYGhmc19maWxsX3N1cGVyYC4gQmFzaWNhbGx5LCB0aGV5JiMzOTtyZSBzcHJpbmtsaW5nIGBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRgIGFuZCBgaGZzX2lzX3ZhbGlkX2NuaWRgIGNoZWNrcyB0aHJvdWdob3V0IHRoZSBpbm9kZSBhbmQgY2F0YWxvZyBsb29rdXAgcHJvY2Vzc2VzLiBUaGUgY2hhbmdlIHRvIGBoZnNfZmlsZV9sb29rdXBgIHRvIGFjY291bnQgZm9yIGEgYmFkIGBoZnNfcmVhZF9pbm9kZWAgcmV0dXJuLCBhbmQgc2ltaWxhciBjaGVja3Mgb24gdGhlIHJvb3QgaW5vZGUgaW4gYGhmc19maWxsX3N1cGVyYCwgYXJlIGFsbCBjb25zaXN0ZW50IHdpdGggaGFyZGVuaW5nIHRoZSBzeXN0ZW0gYWdhaW5zdCBpbnZhbGlkIGNhdGFsb2cgcmVjb3Jkcy4gVGhpcyBpcyBhbGwgYWJvdXQgcHJldmVudGluZyBjcmFzaGVzIGFuZCBkYXRhIGNvcnJ1cHRpb24gc3RlbW1pbmcgZnJvbSB0aG9zZSBraW5kcyBvZiBiYWQgcmVjb3Jkcy4KClRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3QgYSBidWcgZml4LiBUaGVyZWZvcmUsIGZ1enppbmcgaXMgYWJzb2x1dGVseSBlc3NlbnRpYWwgdG8gZW5zdXJlIGl0cyBzdGFiaWxpdHkgYW5kIHJlbGlhYmlsaXR5LiBXZSBuZWVkIHRvIGhhbW1lciB0aGlzIG5ldyBDTklEIHZhbGlkYXRpb24gd2l0aCBhbGwgc29ydHMgb2YgY3JhenkgaW5wdXRzIHRvIG1ha2Ugc3VyZSBpdCBoYW5kbGVzIGV2ZXJ5IGVkZ2UgY2FzZSB3aXRob3V0IGJsb3dpbmcgdXAuCgpSaWdodCwgbm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBjb25maWcgb3B0aW9ucyBmb3IgSEZTLiBgQ09ORklHX0hGU19GU2AgaXMgdGhlIG1vc3QgbGlrZWx5IGNhbmRpZGF0ZSwgc28gSSYjMzk7bGwgY2hlY2sgYGZzL2hmcy9LY29uZmlnYCB0byBjb25maXJtIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBvcHRpb25zIEkgbmVlZCB0byBiZSBhd2FyZSBvZiBmb3IgYnVpbGQgb3IgdGVzdGluZyBwdXJwb3Nlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAxNDoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSEZTX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvaGZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2hmcy9LY29uZmlnOjI6Y29uZmlnIEhGU19GU1xuZnMvaGZzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0FwcGxlIE1hY2ludG9zaCBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTQ6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM0NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEhGUyBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgSEZTX0ZTYCBjb25maWd1cmF0aW9uLiBUaW1lIHRvIHBpbnBvaW50IHRoZSBrZXkgZnVuY3Rpb24gbW9kaWZpY2F0aW9ucyBhbmQgYWRkaXRpb25zLiBCYXNlZCBvbiB0aGUgY29kZSwgaXQgc2VlbXMgbGlrZSBgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkYCBpcyBhIG5ld2x5IGludHJvZHVjZWQgZnVuY3Rpb24uIEkgY2FuIGFsc28gc2VlIHRoYXQgYGhmc19jYXRfZmluZF9icmVjYCwgYGhmc19pc192YWxpZF9jbmlkYCwgYGhmc19yZWFkX2lub2RlYCwgYGhmc19maWxlX2xvb2t1cGAsIGFuZCBgaGZzX2ZpbGxfc3VwZXJgIGhhdmUgYWxsIGJlZW4gdG91Y2hlZC4KCk5vdywgbGV0JiMzOTtzIGRldGVybWluZSB0aGUgc2NvcGUgb2YgdGhlc2UgZnVuY3Rpb25zLiBgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkYCBpcyBzdGF0aWMg4oCTIHRoYXQgbmFycm93cyBpdHMgcG90ZW50aWFsIGltcGFjdC4gYGhmc19jYXRfZmluZF9icmVjYCBpcyBleHBvcnRlZCwgbWVhbmluZyBpdCYjMzk7cyBnbG9iYWwgYW5kIGNvdWxkIGJlIGNhbGxlZCBmcm9tIGFueXdoZXJlLiBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCwgYW5kIGBoZnNfZmlsbF9zdXBlcmAgYXJlIGFsbCBzdGF0aWMsIGtlZXBpbmcgdGhlaXIgc2NvcGUgbW9yZSBsaW1pdGVkLgoKU2luY2UgYGhmc19jYXRfZmluZF9icmVjYCBpcyBleHBvcnRlZCwgdGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQgZGlnZ2luZyBpbiBvcmRlciB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGlzIGluZmx1ZW5jaW5nIHRoZSBmaWxlc3lzdGVtIGJlaGF2aW9yLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlIGluIGBmcy9oZnMvY2F0YWxvZy5jYCBmb3IgdGhpcyBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAxNDoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoZnNfY2F0X2ZpbmRfYnJlYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2hmcy9jYXRhbG9nLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaGZzL2NhdGFsb2cuYz0xODU9c3RhdGljIGludCBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWQoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLCB1MzIgY25pZClcbi0tXG5mcy9oZnMvY2F0YWxvZy5jLTIyMy0vLyBtb3ZlIHRvIHJlYWRfc3VwZXI/Pz9cbmZzL2hmcy9jYXRhbG9nLmM6MjI0OmludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcbmZzL2hmcy9jYXRhbG9nLmMtMjI1LVx0XHQgICAgICBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTQ6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAxOAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBIRlMmIzQzOyBJbm9kZSBPcGVyYXRpb25zKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhlIEhGUyYjNDM7IGZpbGVzeXN0ZW0gaGFuZGxlcyBpbm9kZSBvcGVyYXRpb25zLCBzcGVjaWZpY2FsbHkgZmlsZSBsb29rdXBzIGFuZCB0aGUgcmVhZCBwcm9jZXNzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGBmcy9oZnMvaW5vZGUuY2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbnMgZm9yIGBoZnNfcmVhZF9pbm9kZWAsIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgYWN0dWFsbHkgcmVhZGluZyBhbiBpbm9kZSYjMzk7cyBkYXRhIGZyb20gZGlzayBhbmQgcG9wdWxhdGluZyB0aGUgYGlub2RlYCBzdHJ1Y3R1cmUsIGFuZCBgaGZzX2ZpbGVfbG9va3VwYCwgd2hpY2ggSSYjMzk7bSBwcmV0dHkgY2VydGFpbiBoYW5kbGVzIHRoZSBjcnVjaWFsIHN0ZXAgb2YgbG9jYXRpbmcgYSBmaWxlJiMzOTtzIGlub2RlIHdpdGhpbiB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZS4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSB0d28gd29yayBpbiBjb25jZXJ0LCBwYXJ0aWN1bGFybHkgdGhlIGludGVycGxheSBiZXR3ZWVuIHRoZSBCLXRyZWUgdHJhdmVyc2FsIHVzZWQgZm9yIGxvb2t1cHMgYW5kIHRoZSBpbm9kZSBsb2FkaW5nIHByb2Nlc3MgaXRzZWxmLiBJIHdhbnQgdG8gc2VlIGlmIHRoZSBjYWNoaW5nIHN0cmF0ZWdpZXMgYXJlIHNlbnNpYmxlLiBUaGlzJiMzOTtsbCByZXF1aXJlIGEgY2xvc2UgbG9vayBhdCBob3cgdGhlIGNvZGUgbWFuYWdlcyBkYXRhIGJ1ZmZlcnMsIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIGFuZCBlcnJvciBoYW5kbGluZyBkdXJpbmcgSS9PLiBBbnkgY2xldmVyIG9wdGltaXphdGlvbiBpcyBhbHNvIHNvbWV0aGluZyBJJiMzOTtkIHdhbnQgdG8gY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTQ6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGZzX3JlYWRfaW5vZGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9oZnMvaW5vZGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9oZnMvaW5vZGUuYz0zMjU9c3RhdGljIGludCBoZnNfdGVzdF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkYXRhKVxuLS1cbmZzL2hmcy9pbm9kZS5jLTM0Mi0vKlxuZnMvaGZzL2lub2RlLmM6MzQzOiAqIGhmc19yZWFkX2lub2RlXG5mcy9oZnMvaW5vZGUuYy0zNDQtICovXG5mcy9oZnMvaW5vZGUuYzozNDU6c3RhdGljIGludCBoZnNfcmVhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkYXRhKVxuZnMvaGZzL2lub2RlLmMtMzQ2LXtcbi0tXG5mcy9oZnMvaW5vZGUuYz00MjU9c3RydWN0IGlub2RlICpoZnNfaWdldChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgaGZzX2NhdF9rZXkgKmtleSwgaGZzX2NhdF9yZWMgKnJlYylcbi0tXG5mcy9oZnMvaW5vZGUuYy00NDAtXHR9XG5mcy9oZnMvaW5vZGUuYzo0NDE6XHRpbm9kZSA9IGlnZXQ1X2xvY2tlZChzYiwgY25pZCwgaGZzX3Rlc3RfaW5vZGUsIGhmc19yZWFkX2lub2RlLCBcdTAwMjZkYXRhKTtcbmZzL2hmcy9pbm9kZS5jLTQ0Mi1cdGlmIChpbm9kZSBcdTAwMjZcdTAwMjYgKGlub2RlX3N0YXRlX3JlYWRfb25jZShpbm9kZSkgXHUwMDI2IElfTkVXKSlcbi0tXG5mcy9oZnMvaW5vZGUuYz01NTI9c3RhdGljIHN0cnVjdCBkZW50cnkgKmhmc19maWxlX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuLS1cbmZzL2hmcy9pbm9kZS5jLTU3OS1cdFx0c3RydWN0IGhmc19pZ2V0X2RhdGEgaWRhdGEgPSB7IE5VTEwsIFx1MDAyNnJlYyB9O1xuZnMvaGZzL2lub2RlLmM6NTgwOlx0XHRyZXMgPSBoZnNfcmVhZF9pbm9kZShpbm9kZSwgXHUwMDI2aWRhdGEpO1xuZnMvaGZzL2lub2RlLmMtNTgxLVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDE0OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3NDAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqRGl2aW5nIGludG8gdGhlIEhGUyYjNDM7IEZpbGVzeXN0ZW0gU3VwZXJibG9jayBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIEhGUyYjNDM7IHN1cGVyYmxvY2sgaW5pdGlhbGl6YXRpb24uIEkga25vdyB0aGF0IGBmcy9oZnMvc3VwZXIuY2AgaXMgdGhlIGxpa2VseSBwbGFjZSB0byBmaW5kIHRoZSBgaGZzX2ZpbGxfc3VwZXJgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHRoZSBvbmUgdGhhdCBoYW5kbGVzIHBvcHVsYXRpbmcgdGhlIHN1cGVyYmxvY2sgZGF0YSBzdHJ1Y3R1cmUgd2hlbiBtb3VudGluZyB0aGUgZmlsZXN5c3RlbSwgc28gaXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUga2VybmVsIHJlY29nbml6ZXMgYW5kIHNldHMgdXAgYW4gSEZTJiM0Mzsgdm9sdW1lLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIGhvdyBpdCBoYW5kbGVzIHRoaW5ncyBsaWtlIHRoZSB2b2x1bWUgaGVhZGVyLCBhbGxvY2F0aW9uIGJpdG1hcHMsIGNhdGFsb2cgdHJlZXMsIGFuZCBhbGwgdGhhdCBmdW4gc3R1ZmYuIExldCYjMzk7cyBzZWUgd2hhdCBpbnRlcmVzdGluZyB0cmlja3Mgb3Igb3B0aW1pemF0aW9ucyBhcmUgaW4gcGxheSB0aGVyZS4gSSYjMzk7bSBlc3BlY2lhbGx5IGN1cmlvdXMgYWJvdXQgYW55IHBvdGVudGlhbCBnb3RjaGFzIG9yIGVkZ2UgY2FzZXMgdGhlIGNvZGUgbWlnaHQgYWRkcmVzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTQ6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGZzX2ZpbGxfc3VwZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9oZnMvc3VwZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9oZnMvc3VwZXIuYz0yMjA9c3RhdGljIGludCBoZnNfcGFyc2VfcGFyYW0oc3RydWN0IGZzX2NvbnRleHQgKmZjLCBzdHJ1Y3QgZnNfcGFyYW1ldGVyICpwYXJhbSlcbi0tXG5mcy9oZnMvc3VwZXIuYy0zMTUtICovXG5mcy9oZnMvc3VwZXIuYzozMTY6c3RhdGljIGludCBoZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG5mcy9oZnMvc3VwZXIuYy0zMTcte1xuLS1cbmZzL2hmcy9zdXBlci5jPTM5OD1zdGF0aWMgaW50IGhmc19nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG5mcy9oZnMvc3VwZXIuYy0zOTkte1xuZnMvaGZzL3N1cGVyLmM6NDAwOlx0cmV0dXJuIGdldF90cmVlX2JkZXYoZmMsIGhmc19maWxsX3N1cGVyKTtcbmZzL2hmcy9zdXBlci5jLTQwMS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDE0OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxODMKCQkJCQkJCW91dHB1dDogMTc1CgkJCQkJCQl0aG91Z2h0czogMjk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIHRoZSBIRlMgRmlsZXN5c3RlbSBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIGZvciBhIGZ1enppbmcgcGxhbi4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIENOSUQgdmFsaWRhdGlvbiB3aXRoaW4gdGhlIEhGUyBmaWxlc3lzdGVtLCB3aGljaCBtZWFucyB3ZSBuZWVkIHRvIGVuc3VyZSB0aGlzIG5ldyBsb2dpYyBpcyByb2J1c3QgYW5kIGRvZXNuJiMzOTt0IGNyZWF0ZSBhbnkgbmV3IHZ1bG5lcmFiaWxpdGllcyBvciByZWdyZXNzaW9ucy4gQmFzZWQgb24gdGhlIHNvdXJjZSBhbmQgbXkgdW5kZXJzdGFuZGluZywgdGhlIGtleSBmdW5jdGlvbnMgdG8gdGFyZ2V0IGFyZToKCiogICBgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkYAoqICAgYGhmc19jYXRfZmluZF9icmVjYAoqICAgYGhmc19yZWFkX2lub2RlYAoqICAgYGhmc19maWxlX2xvb2t1cGAKKiAgIGBoZnNfZmlsbF9zdXBlcmAKCmBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRgIGlzIHN0YXRpYywgYnV0IHNpbmNlIHN5emthbGxlciBjYW4gcmVzb2x2ZSBpdCwgd2UgbWF5IGFzIHdlbGwgaW5jbHVkZSBpdCBpbiBvdXIgZnVuY3Rpb24gbGlzdC4gV2UgbmVlZCB0byBtYWtlIHN1cmUgU3l6a2FsbGVyIGhhcyBubyBpc3N1ZXMgcmVzb2x2aW5nIGl0LCBvdGhlcndpc2UsIHdlIHdvdWxkIGRyb3AgaXQuCgpUaGUgZnVuY3Rpb25zIGBoZnNfcmVhZF9pbm9kZWAsIGBoZnNfY2F0X2ZpbmRfYnJlY2AsIGFuZCBgaGZzX2ZpbGxfc3VwZXJgIGFyZSBiZWluZyBkaXJlY3RseSBtb2RpZmllZCB3aXRoIHRoaXMgYWRkZWQgdmFsaWRhdGlvbi4gVGhlcmVmb3JlLCB3ZSBzaG91bGQgZGVmaW5pdGVseSBwcmlvcml0aXplIHRoZW0gd2hlbiBzZXR0aW5nIHVwIHRoZSBmdXp6aW5nIHRhcmdldHMuIGBoZnNfZmlsZV9sb29rdXBgIGlzIGFsc28gaW1wb3J0YW50IGFzIGl0IGlzIGxpa2VseSBpbnZvbHZlZCBpbiB0aGUgbG9va3VwIG9mIGNhdGFsb2cgcmVjb3Jkcywgd2hpY2ggd291bGQgYmUgYWZmZWN0ZWQgYnkgdGhlIGFkZGVkIHZhbGlkYXRpb24uIGBoZnNfZmlsbF9zdXBlcmAgd291bGQgYWxzbyBiZSBpbmNsdWRlZCBhcyBpdCBpbnZvbHZlcyB0aGUgbW91bnRpbmcgYW5kIGludGlhbGl6YXRpb24gb2YgdGhlIGZpbGUgc3lzdGVtLgoKVGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb24gaXMgYEhGU19GU2AuIFdlJiMzOTtsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGVuYWJsZWQgaW4gdGhlIGZ1enppbmcgZW52aXJvbm1lbnQgdG8gZXhlcmNpc2UgdGhlIGNvZGUuIFRoaXMgd2lsbCBiZSB0aGUgZmlyc3Qgc3RlcCBpbiBzZXR0aW5nIHVwIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LgoKVGhlIGZ1bmRhbWVudGFsIGdvYWwgaGVyZSBpcyB0byBmZWVkIHRoZSBmdXp6ZXIgYSBkaXZlcnNlIHNldCBvZiBpbnB1dHMsIGVzcGVjaWFsbHkgY3JhZnRlZCB0byB0ZXN0IHRoZSBuZXcgQ05JRCB2YWxpZGF0aW9uIGNoZWNrcywgYW5kIHdhdGNoIGZvciBhbnkgY3Jhc2hlcywgaGFuZ3MsIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3Igd2l0aGluIHRoZXNlIGNyaXRpY2FsIEhGUyBmdW5jdGlvbnMuIFdlJiMzOTtsbCBiZSBvbiB0aGUgbG9va291dCBmb3IgZWRnZSBjYXNlcyBhbmQgY29ycnVwdGVkIGRhdGEgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBieXBhc3Mgb3IgdHJpZ2dlciBmbGF3cyBpbiB0aGUgdmFsaWRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTQ6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZCYjMzQ7LAogICAgJiMzNDtoZnNfY2F0X2ZpbmRfYnJlYyYjMzQ7LAogICAgJiMzNDtoZnNfcmVhZF9pbm9kZSYjMzQ7LAogICAgJiMzNDtoZnNfZmlsZV9sb29rdXAmIzM0OywKICAgICYjMzQ7aGZzX2ZpbGxfc3VwZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBDTklEIGluIEhGUyBjYXRhbG9nIHJlY29yZHMgYW5kIGlub2RlcyB0byBwcmV2ZW50IHVzaW5nIGludmFsaWQgb3IgY29ycnVwdGVkIGNhdGFsb2cgcmVjb3Jkcy4gSXQgbW9kaWZpZXMgY29yZSBIRlMgZnVuY3Rpb25zIGxpa2UgaGZzX3JlYWRfaW5vZGUsIGhmc19jYXRfZmluZF9icmVjLCBhbmQgaGZzX2ZpbGxfc3VwZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgSEZTIGZpbGVzeXN0ZW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgdmFsaWRhdGlvbiBsb2dpYyB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SEZTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkJiMzNDssCiAgICAmIzM0O2hmc19jYXRfZmluZF9icmVjJiMzNDssCiAgICAmIzM0O2hmc19yZWFkX2lub2RlJiMzNDssCiAgICAmIzM0O2hmc19maWxlX2xvb2t1cCYjMzQ7LAogICAgJiMzNDtoZnNfZmlsbF9zdXBlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIENOSUQgaW4gSEZTIGNhdGFsb2cgcmVjb3JkcyBhbmQgaW5vZGVzIHRvIHByZXZlbnQgdXNpbmcgaW52YWxpZCBvciBjb3JydXB0ZWQgY2F0YWxvZyByZWNvcmRzLiBJdCBtb2RpZmllcyBjb3JlIEhGUyBmdW5jdGlvbnMgbGlrZSBoZnNfcmVhZF9pbm9kZSwgaGZzX2NhdF9maW5kX2JyZWMsIGFuZCBoZnNfZmlsbF9zdXBlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBIRlMgZmlsZXN5c3RlbSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG5ldyB2YWxpZGF0aW9uIGxvZ2ljIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDZUMTQ6MTA6MzcuMzQzOTM0NjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDIyNjE4NjIxNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkXCIsXG4gICAgXCJoZnNfY2F0X2ZpbmRfYnJlY1wiLFxuICAgIFwiaGZzX3JlYWRfaW5vZGVcIixcbiAgICBcImhmc19maWxlX2xvb2t1cFwiLFxuICAgIFwiaGZzX2ZpbGxfc3VwZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIENOSUQgaW4gSEZTIGNhdGFsb2cgcmVjb3JkcyBhbmQgaW5vZGVzIHRvIHByZXZlbnQgdXNpbmcgaW52YWxpZCBvciBjb3JydXB0ZWQgY2F0YWxvZyByZWNvcmRzLiBJdCBtb2RpZmllcyBjb3JlIEhGUyBmdW5jdGlvbnMgbGlrZSBoZnNfcmVhZF9pbm9kZSwgaGZzX2NhdF9maW5kX2JyZWMsIGFuZCBoZnNfZmlsbF9zdXBlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBIRlMgZmlsZXN5c3RlbSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG5ldyB2YWxpZGF0aW9uIGxvZ2ljIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDE0OjEwOjM3LjM0Mzk0MDc1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzEwMTQxNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxNjM3MzQyNDQwMzgzMjY2YjZjNGZlNGNmZjFmZDJmMmMxN2M2MDlmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDYgMTQ6MTA6MzUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2NhdGFsb2cuYyBiL2ZzL2hmcy9jYXRhbG9nLmNcXG5pbmRleCAxYmZhMzZkNzFlMjQ3YS4uNTBlZTcwOWQ5NjZmNjMgMTAwNjQ0XFxuLS0tIGEvZnMvaGZzL2NhdGFsb2cuY1xcbisrKyBiL2ZzL2hmcy9jYXRhbG9nLmNcXG5AQCAtMTgyLDYgKzE4Miw0MyBAQCBpbnQgaGZzX2NhdF9rZXljbXAoY29uc3QgYnRyZWVfa2V5ICprZXkxLCBjb25zdCBidHJlZV9rZXkgKmtleTIpXFxuIFxcdFxcdFxcdCAga2V5Mi1cXHUwMDNlY2F0LkNOYW1lLm5hbWUsIGtleTItXFx1MDAzZWNhdC5DTmFtZS5sZW4pO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZChzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsIHUzMiBjbmlkKVxcbit7XFxuK1xcdGhmc19jYXRfcmVjIHJlYztcXG4rXFx0dTMyIGZvdW5kX2NuaWQ7XFxuK1xcdHNpemVfdCByZWNfbGVuO1xcbitcXG4rXFx0aWYgKGZkLVxcdTAwM2VlbnRyeWxlbmd0aCBcXHUwMDNjPSAwKVxcbitcXHRcXHRyZXR1cm4gLUVJTztcXG4rXFxuK1xcdHJlY19sZW4gPSBmZC1cXHUwMDNlZW50cnlsZW5ndGg7XFxuK1xcdGlmIChyZWNfbGVuIFxcdTAwM2Ugc2l6ZW9mKHJlYykpXFxuK1xcdFxcdHJldHVybiAtRUlPO1xcbitcXG4rXFx0bWVtc2V0KFxcdTAwMjZyZWMsIDAsIHNpemVvZihyZWMpKTtcXG4rXFx0aGZzX2Jub2RlX3JlYWQoZmQtXFx1MDAzZWJub2RlLCBcXHUwMDI2cmVjLCBmZC1cXHUwMDNlZW50cnlvZmZzZXQsIHJlY19sZW4pO1xcbitcXG4rXFx0c3dpdGNoIChyZWMudHlwZSkge1xcbitcXHRjYXNlIEhGU19DRFJfRklMOlxcbitcXHRcXHRpZiAocmVjX2xlbiBcXHUwMDNjIHNpemVvZihzdHJ1Y3QgaGZzX2NhdF9maWxlKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcdFxcdGZvdW5kX2NuaWQgPSBiZTMyX3RvX2NwdShyZWMuZmlsZS5GbE51bSk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIEhGU19DRFJfRElSOlxcbitcXHRcXHRpZiAocmVjX2xlbiBcXHUwMDNjIHNpemVvZihzdHJ1Y3QgaGZzX2NhdF9kaXIpKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4rXFx0XFx0Zm91bmRfY25pZCA9IGJlMzJfdG9fY3B1KHJlYy5kaXIuRGlySUQpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChmb3VuZF9jbmlkICE9IGNuaWQpXFxuK1xcdFxcdHJldHVybiAtRUlPO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuIC8qIFRyeSB0byBnZXQgYSBjYXRhbG9nIGVudHJ5IGZvciBnaXZlbiBjYXRhbG9nIGlkICovXFxuIC8vIG1vdmUgdG8gcmVhZF9zdXBlcj8/P1xcbiBpbnQgaGZzX2NhdF9maW5kX2JyZWMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsXFxuQEAgLTIwOCw3ICsyNDUsMTIgQEAgaW50IGhmc19jYXRfZmluZF9icmVjKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBjbmlkLFxcbiBcXHRcXHRyZXR1cm4gLUVJTztcXG4gXFx0fVxcbiBcXHRtZW1jcHkoZmQtXFx1MDAzZXNlYXJjaF9rZXktXFx1MDAzZWNhdC5DTmFtZS5uYW1lLCByZWMudGhyZWFkLkNOYW1lLm5hbWUsIGxlbik7XFxuLVxcdHJldHVybiBoZnNfYnJlY19maW5kKGZkKTtcXG4rXFxuK1xcdHJlcyA9IGhmc19icmVjX2ZpbmQoZmQpO1xcbitcXHRpZiAocmVzKVxcbitcXHRcXHRyZXR1cm4gcmVzO1xcbitcXG4rXFx0cmV0dXJuIGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZChmZCwgY25pZCk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbmxpbmVcXG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2hmc19mcy5oIGIvZnMvaGZzL2hmc19mcy5oXFxuaW5kZXggZjM2MjQ1MTRmY2IwMzAuLjY3MDYzOGYxNzQzOGNlIDEwMDY0NFxcbi0tLSBhL2ZzL2hmcy9oZnNfZnMuaFxcbisrKyBiL2ZzL2hmcy9oZnNfZnMuaFxcbkBAIC0xNTUsNiArMTU1LDI1IEBAIGV4dGVybiBpbnQgaGZzX2NhdF9tb3ZlKHUzMiBjbmlkLCBzdHJ1Y3QgaW5vZGUgKnNyY19kaXIsXFxuIGV4dGVybiB2b2lkIGhmc19jYXRfYnVpbGRfa2V5KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGJ0cmVlX2tleSAqa2V5LFxcbiBcXHRcXHRcXHQgICAgICB1MzIgcGFyZW50LCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSk7XFxuIFxcbisvKlxcbisgKiBWYWxpZGF0ZSB0aGUgQ05JRCBvZiBhIGNhdGFsb2cgcmVjb3JkLlxcbisgKi9cXG4rc3RhdGljIGlubGluZSBib29sIGhmc19pc192YWxpZF9jbmlkKHUzMiBjbmlkLCB1OCB0eXBlKVxcbit7XFxuK1xcdGlmIChsaWtlbHkoY25pZCBcXHUwMDNlPSBIRlNfRklSU1RVU0VSX0NOSUQpKVxcbitcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFxuK1xcdHN3aXRjaCAoY25pZCkge1xcbitcXHRjYXNlIEhGU19ST09UX0NOSUQ6XFxuK1xcdFxcdHJldHVybiB0eXBlID09IEhGU19DRFJfRElSO1xcbitcXHRjYXNlIEhGU19FWFRfQ05JRDpcXG4rXFx0Y2FzZSBIRlNfQ0FUX0NOSUQ6XFxuK1xcdFxcdHJldHVybiB0eXBlID09IEhGU19DRFJfRklMO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4rfVxcbitcXG4gLyogZGlyLmMgKi9cXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaGZzX2Rpcl9vcGVyYXRpb25zO1xcbiBleHRlcm4gY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgaGZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zO1xcbmRpZmYgLS1naXQgYS9mcy9oZnMvaW5vZGUuYyBiL2ZzL2hmcy9pbm9kZS5jXFxuaW5kZXggYWM0YTkwNTVjNWMwZWEuLmVlMTBhOTI1N2ExMzhhIDEwMDY0NFxcbi0tLSBhL2ZzL2hmcy9pbm9kZS5jXFxuKysrIGIvZnMvaGZzL2lub2RlLmNcXG5AQCAtMzY3LDYgKzM2Nyw5IEBAIHN0YXRpYyBpbnQgaGZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCAqZGF0YSlcXG4gXFx0cmVjID0gaWRhdGEtXFx1MDAzZXJlYztcXG4gXFx0c3dpdGNoIChyZWMtXFx1MDAzZXR5cGUpIHtcXG4gXFx0Y2FzZSBIRlNfQ0RSX0ZJTDpcXG4rXFx0XFx0aWYgKCFoZnNfaXNfdmFsaWRfY25pZChiZTMyX3RvX2NwdShyZWMtXFx1MDAzZWZpbGUuRmxOdW0pLCByZWMtXFx1MDAzZXR5cGUpKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4rXFxuIFxcdFxcdGlmICghSEZTX0lTX1JTUkMoaW5vZGUpKSB7XFxuIFxcdFxcdFxcdGhmc19pbm9kZV9yZWFkX2ZvcmsoaW5vZGUsIHJlYy1cXHUwMDNlZmlsZS5FeHRSZWMsIHJlYy1cXHUwMDNlZmlsZS5MZ0xlbixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgIHJlYy1cXHUwMDNlZmlsZS5QeUxlbiwgYmUxNl90b19jcHUocmVjLVxcdTAwM2VmaWxlLkNscFNpemUpKTtcXG5AQCAtMzkwLDYgKzM5Myw5IEBAIHN0YXRpYyBpbnQgaGZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCAqZGF0YSlcXG4gXFx0XFx0aW5vZGUtXFx1MDAzZWlfbWFwcGluZy1cXHUwMDNlYV9vcHMgPSBcXHUwMDI2aGZzX2FvcHM7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEhGU19DRFJfRElSOlxcbitcXHRcXHRpZiAoIWhmc19pc192YWxpZF9jbmlkKGJlMzJfdG9fY3B1KHJlYy1cXHUwMDNlZGlyLkRpcklEKSwgcmVjLVxcdTAwM2V0eXBlKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcbiBcXHRcXHRpbm9kZS1cXHUwMDNlaV9pbm8gPSBiZTMyX3RvX2NwdShyZWMtXFx1MDAzZWRpci5EaXJJRCk7XFxuIFxcdFxcdGlub2RlLVxcdTAwM2VpX3NpemUgPSBiZTE2X3RvX2NwdShyZWMtXFx1MDAzZWRpci5WYWwpICsgMjtcXG4gXFx0XFx0SEZTX0koaW5vZGUpLVxcdTAwM2Vmc19ibG9ja3MgPSAwO1xcbkBAIC01NzEsMTIgKzU3NywxMiBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqaGZzX2ZpbGVfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuIFxcdHJlcyA9IGhmc19icmVjX3JlYWQoXFx1MDAyNmZkLCBcXHUwMDI2cmVjLCBzaXplb2YocmVjKSk7XFxuIFxcdGlmICghcmVzKSB7XFxuIFxcdFxcdHN0cnVjdCBoZnNfaWdldF9kYXRhIGlkYXRhID0geyBOVUxMLCBcXHUwMDI2cmVjIH07XFxuLVxcdFxcdGhmc19yZWFkX2lub2RlKGlub2RlLCBcXHUwMDI2aWRhdGEpO1xcbitcXHRcXHRyZXMgPSBoZnNfcmVhZF9pbm9kZShpbm9kZSwgXFx1MDAyNmlkYXRhKTtcXG4gXFx0fVxcbiBcXHRoZnNfZmluZF9leGl0KFxcdTAwMjZmZCk7XFxuLVxcdGlmIChyZXMpIHtcXG4rXFx0aWYgKHJlcyB8fCBpc19iYWRfaW5vZGUoaW5vZGUpKSB7XFxuIFxcdFxcdGlwdXQoaW5vZGUpO1xcbi1cXHRcXHRyZXR1cm4gRVJSX1BUUihyZXMpO1xcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlPKTtcXG4gXFx0fVxcbiBcXHRIRlNfSShpbm9kZSktXFx1MDAzZXJzcmNfaW5vZGUgPSBkaXI7XFxuIFxcdEhGU19JKGRpciktXFx1MDAzZXJzcmNfaW5vZGUgPSBpbm9kZTtcXG5kaWZmIC0tZ2l0IGEvZnMvaGZzL3N1cGVyLmMgYi9mcy9oZnMvc3VwZXIuY1xcbmluZGV4IGE0NjZjNDAxZjZiYjI2Li45OGI4MDc5NWJjZGU5YSAxMDA2NDRcXG4tLS0gYS9mcy9oZnMvc3VwZXIuY1xcbisrKyBiL2ZzL2hmcy9zdXBlci5jXFxuQEAgLTM3Miw2ICszNzIsMTEgQEAgc3RhdGljIGludCBoZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuIFxcdGlmICghcm9vdF9pbm9kZSlcXG4gXFx0XFx0Z290byBiYWlsX25vX3Jvb3Q7XFxuIFxcbitcXHRpZiAoaXNfYmFkX2lub2RlKHJvb3RfaW5vZGUpKSB7XFxuK1xcdFxcdGlwdXQocm9vdF9pbm9kZSk7XFxuK1xcdFxcdGdvdG8gYmFpbF9ub19yb290O1xcbitcXHR9XFxuK1xcbiBcXHRzZXRfZGVmYXVsdF9kX29wKHNiLCBcXHUwMDI2aGZzX2RlbnRyeV9vcGVyYXRpb25zKTtcXG4gXFx0cmVzID0gLUVOT01FTTtcXG4gXFx0c2ItXFx1MDAzZXNfcm9vdCA9IGRfbWFrZV9yb290KHJvb3RfaW5vZGUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxNDoxMDozOC4wMTU5OTU0NTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMTU4OTc4OTEwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRcIixcbiAgICBcImhmc19jYXRfZmluZF9icmVjXCIsXG4gICAgXCJoZnNfcmVhZF9pbm9kZVwiLFxuICAgIFwiaGZzX2ZpbGVfbG9va3VwXCIsXG4gICAgXCJoZnNfZmlsbF9zdXBlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgQ05JRCBpbiBIRlMgY2F0YWxvZyByZWNvcmRzIGFuZCBpbm9kZXMgdG8gcHJldmVudCB1c2luZyBpbnZhbGlkIG9yIGNvcnJ1cHRlZCBjYXRhbG9nIHJlY29yZHMuIEl0IG1vZGlmaWVzIGNvcmUgSEZTIGZ1bmN0aW9ucyBsaWtlIGhmc19yZWFkX2lub2RlLCBoZnNfY2F0X2ZpbmRfYnJlYywgYW5kIGhmc19maWxsX3N1cGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIEhGUyBmaWxlc3lzdGVtIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IHZhbGlkYXRpb24gbG9naWMgd29ya3MgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxNjM3MzQyNDQwMzgzMjY2YjZjNGZlNGNmZjFmZDJmMmMxN2M2MDlmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgNiAxNDoxMDozNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2hmcy9jYXRhbG9nLmMgYi9mcy9oZnMvY2F0YWxvZy5jXG5pbmRleCAxYmZhMzZkNzFlMjQ3YS4uNTBlZTcwOWQ5NjZmNjMgMTAwNjQ0XG4tLS0gYS9mcy9oZnMvY2F0YWxvZy5jXG4rKysgYi9mcy9oZnMvY2F0YWxvZy5jXG5AQCAtMTgyLDYgKzE4Miw0MyBAQCBpbnQgaGZzX2NhdF9rZXljbXAoY29uc3QgYnRyZWVfa2V5ICprZXkxLCBjb25zdCBidHJlZV9rZXkgKmtleTIpXG4gXHRcdFx0ICBrZXkyLVx1MDAzZWNhdC5DTmFtZS5uYW1lLCBrZXkyLVx1MDAzZWNhdC5DTmFtZS5sZW4pO1xuIH1cbiBcbitzdGF0aWMgaW50IGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZChzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsIHUzMiBjbmlkKVxuK3tcbitcdGhmc19jYXRfcmVjIHJlYztcbitcdHUzMiBmb3VuZF9jbmlkO1xuK1x0c2l6ZV90IHJlY19sZW47XG4rXG4rXHRpZiAoZmQtXHUwMDNlZW50cnlsZW5ndGggXHUwMDNjPSAwKVxuK1x0XHRyZXR1cm4gLUVJTztcbitcbitcdHJlY19sZW4gPSBmZC1cdTAwM2VlbnRyeWxlbmd0aDtcbitcdGlmIChyZWNfbGVuIFx1MDAzZSBzaXplb2YocmVjKSlcbitcdFx0cmV0dXJuIC1FSU87XG4rXG4rXHRtZW1zZXQoXHUwMDI2cmVjLCAwLCBzaXplb2YocmVjKSk7XG4rXHRoZnNfYm5vZGVfcmVhZChmZC1cdTAwM2Vibm9kZSwgXHUwMDI2cmVjLCBmZC1cdTAwM2VlbnRyeW9mZnNldCwgcmVjX2xlbik7XG4rXG4rXHRzd2l0Y2ggKHJlYy50eXBlKSB7XG4rXHRjYXNlIEhGU19DRFJfRklMOlxuK1x0XHRpZiAocmVjX2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBoZnNfY2F0X2ZpbGUpKVxuK1x0XHRcdHJldHVybiAtRUlPO1xuK1x0XHRmb3VuZF9jbmlkID0gYmUzMl90b19jcHUocmVjLmZpbGUuRmxOdW0pO1xuK1x0XHRicmVhaztcbitcdGNhc2UgSEZTX0NEUl9ESVI6XG4rXHRcdGlmIChyZWNfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IGhmc19jYXRfZGlyKSlcbitcdFx0XHRyZXR1cm4gLUVJTztcbitcdFx0Zm91bmRfY25pZCA9IGJlMzJfdG9fY3B1KHJlYy5kaXIuRGlySUQpO1xuK1x0XHRicmVhaztcbitcdGRlZmF1bHQ6XG4rXHRcdHJldHVybiAtRUlPO1xuK1x0fVxuK1xuK1x0aWYgKGZvdW5kX2NuaWQgIT0gY25pZClcbitcdFx0cmV0dXJuIC1FSU87XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gLyogVHJ5IHRvIGdldCBhIGNhdGFsb2cgZW50cnkgZm9yIGdpdmVuIGNhdGFsb2cgaWQgKi9cbiAvLyBtb3ZlIHRvIHJlYWRfc3VwZXI/Pz9cbiBpbnQgaGZzX2NhdF9maW5kX2JyZWMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsXG5AQCAtMjA4LDcgKzI0NSwxMiBAQCBpbnQgaGZzX2NhdF9maW5kX2JyZWMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsXG4gXHRcdHJldHVybiAtRUlPO1xuIFx0fVxuIFx0bWVtY3B5KGZkLVx1MDAzZXNlYXJjaF9rZXktXHUwMDNlY2F0LkNOYW1lLm5hbWUsIHJlYy50aHJlYWQuQ05hbWUubmFtZSwgbGVuKTtcbi1cdHJldHVybiBoZnNfYnJlY19maW5kKGZkKTtcbitcbitcdHJlcyA9IGhmc19icmVjX2ZpbmQoZmQpO1xuK1x0aWYgKHJlcylcbitcdFx0cmV0dXJuIHJlcztcbitcbitcdHJldHVybiBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWQoZmQsIGNuaWQpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lXG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2hmc19mcy5oIGIvZnMvaGZzL2hmc19mcy5oXG5pbmRleCBmMzYyNDUxNGZjYjAzMC4uNjcwNjM4ZjE3NDM4Y2UgMTAwNjQ0XG4tLS0gYS9mcy9oZnMvaGZzX2ZzLmhcbisrKyBiL2ZzL2hmcy9oZnNfZnMuaFxuQEAgLTE1NSw2ICsxNTUsMjUgQEAgZXh0ZXJuIGludCBoZnNfY2F0X21vdmUodTMyIGNuaWQsIHN0cnVjdCBpbm9kZSAqc3JjX2RpcixcbiBleHRlcm4gdm9pZCBoZnNfY2F0X2J1aWxkX2tleShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBidHJlZV9rZXkgKmtleSxcbiBcdFx0XHQgICAgICB1MzIgcGFyZW50LCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSk7XG4gXG4rLypcbisgKiBWYWxpZGF0ZSB0aGUgQ05JRCBvZiBhIGNhdGFsb2cgcmVjb3JkLlxuKyAqL1xuK3N0YXRpYyBpbmxpbmUgYm9vbCBoZnNfaXNfdmFsaWRfY25pZCh1MzIgY25pZCwgdTggdHlwZSlcbit7XG4rXHRpZiAobGlrZWx5KGNuaWQgXHUwMDNlPSBIRlNfRklSU1RVU0VSX0NOSUQpKVxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcbitcdHN3aXRjaCAoY25pZCkge1xuK1x0Y2FzZSBIRlNfUk9PVF9DTklEOlxuK1x0XHRyZXR1cm4gdHlwZSA9PSBIRlNfQ0RSX0RJUjtcbitcdGNhc2UgSEZTX0VYVF9DTklEOlxuK1x0Y2FzZSBIRlNfQ0FUX0NOSUQ6XG4rXHRcdHJldHVybiB0eXBlID09IEhGU19DRFJfRklMO1xuK1x0ZGVmYXVsdDpcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0fVxuK31cbitcbiAvKiBkaXIuYyAqL1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGhmc19kaXJfb3BlcmF0aW9ucztcbiBleHRlcm4gY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgaGZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zO1xuZGlmZiAtLWdpdCBhL2ZzL2hmcy9pbm9kZS5jIGIvZnMvaGZzL2lub2RlLmNcbmluZGV4IGFjNGE5MDU1YzVjMGVhLi5lZTEwYTkyNTdhMTM4YSAxMDA2NDRcbi0tLSBhL2ZzL2hmcy9pbm9kZS5jXG4rKysgYi9mcy9oZnMvaW5vZGUuY1xuQEAgLTM2Nyw2ICszNjcsOSBAQCBzdGF0aWMgaW50IGhmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpXG4gXHRyZWMgPSBpZGF0YS1cdTAwM2VyZWM7XG4gXHRzd2l0Y2ggKHJlYy1cdTAwM2V0eXBlKSB7XG4gXHRjYXNlIEhGU19DRFJfRklMOlxuK1x0XHRpZiAoIWhmc19pc192YWxpZF9jbmlkKGJlMzJfdG9fY3B1KHJlYy1cdTAwM2VmaWxlLkZsTnVtKSwgcmVjLVx1MDAzZXR5cGUpKVxuK1x0XHRcdHJldHVybiAtRUlPO1xuK1xuIFx0XHRpZiAoIUhGU19JU19SU1JDKGlub2RlKSkge1xuIFx0XHRcdGhmc19pbm9kZV9yZWFkX2ZvcmsoaW5vZGUsIHJlYy1cdTAwM2VmaWxlLkV4dFJlYywgcmVjLVx1MDAzZWZpbGUuTGdMZW4sXG4gXHRcdFx0XHRcdCAgICByZWMtXHUwMDNlZmlsZS5QeUxlbiwgYmUxNl90b19jcHUocmVjLVx1MDAzZWZpbGUuQ2xwU2l6ZSkpO1xuQEAgLTM5MCw2ICszOTMsOSBAQCBzdGF0aWMgaW50IGhmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpXG4gXHRcdGlub2RlLVx1MDAzZWlfbWFwcGluZy1cdTAwM2VhX29wcyA9IFx1MDAyNmhmc19hb3BzO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgSEZTX0NEUl9ESVI6XG4rXHRcdGlmICghaGZzX2lzX3ZhbGlkX2NuaWQoYmUzMl90b19jcHUocmVjLVx1MDAzZWRpci5EaXJJRCksIHJlYy1cdTAwM2V0eXBlKSlcbitcdFx0XHRyZXR1cm4gLUVJTztcbitcbiBcdFx0aW5vZGUtXHUwMDNlaV9pbm8gPSBiZTMyX3RvX2NwdShyZWMtXHUwMDNlZGlyLkRpcklEKTtcbiBcdFx0aW5vZGUtXHUwMDNlaV9zaXplID0gYmUxNl90b19jcHUocmVjLVx1MDAzZWRpci5WYWwpICsgMjtcbiBcdFx0SEZTX0koaW5vZGUpLVx1MDAzZWZzX2Jsb2NrcyA9IDA7XG5AQCAtNTcxLDEyICs1NzcsMTIgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmhmc19maWxlX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuIFx0cmVzID0gaGZzX2JyZWNfcmVhZChcdTAwMjZmZCwgXHUwMDI2cmVjLCBzaXplb2YocmVjKSk7XG4gXHRpZiAoIXJlcykge1xuIFx0XHRzdHJ1Y3QgaGZzX2lnZXRfZGF0YSBpZGF0YSA9IHsgTlVMTCwgXHUwMDI2cmVjIH07XG4tXHRcdGhmc19yZWFkX2lub2RlKGlub2RlLCBcdTAwMjZpZGF0YSk7XG4rXHRcdHJlcyA9IGhmc19yZWFkX2lub2RlKGlub2RlLCBcdTAwMjZpZGF0YSk7XG4gXHR9XG4gXHRoZnNfZmluZF9leGl0KFx1MDAyNmZkKTtcbi1cdGlmIChyZXMpIHtcbitcdGlmIChyZXMgfHwgaXNfYmFkX2lub2RlKGlub2RlKSkge1xuIFx0XHRpcHV0KGlub2RlKTtcbi1cdFx0cmV0dXJuIEVSUl9QVFIocmVzKTtcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTyk7XG4gXHR9XG4gXHRIRlNfSShpbm9kZSktXHUwMDNlcnNyY19pbm9kZSA9IGRpcjtcbiBcdEhGU19JKGRpciktXHUwMDNlcnNyY19pbm9kZSA9IGlub2RlO1xuZGlmZiAtLWdpdCBhL2ZzL2hmcy9zdXBlci5jIGIvZnMvaGZzL3N1cGVyLmNcbmluZGV4IGE0NjZjNDAxZjZiYjI2Li45OGI4MDc5NWJjZGU5YSAxMDA2NDRcbi0tLSBhL2ZzL2hmcy9zdXBlci5jXG4rKysgYi9mcy9oZnMvc3VwZXIuY1xuQEAgLTM3Miw2ICszNzIsMTEgQEAgc3RhdGljIGludCBoZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4gXHRpZiAoIXJvb3RfaW5vZGUpXG4gXHRcdGdvdG8gYmFpbF9ub19yb290O1xuIFxuK1x0aWYgKGlzX2JhZF9pbm9kZShyb290X2lub2RlKSkge1xuK1x0XHRpcHV0KHJvb3RfaW5vZGUpO1xuK1x0XHRnb3RvIGJhaWxfbm9fcm9vdDtcbitcdH1cbitcbiBcdHNldF9kZWZhdWx0X2Rfb3Aoc2IsIFx1MDAyNmhmc19kZW50cnlfb3BlcmF0aW9ucyk7XG4gXHRyZXMgPSAtRU5PTUVNO1xuIFx0c2ItXHUwMDNlc19yb290ID0gZF9tYWtlX3Jvb3Qocm9vdF9pbm9kZSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxNDoxMDozOC4wMTU5OTc5MDFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjA0NTc0NzgxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBIRlMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIGRpZ2dpbmcgaW50byB0aGUgSEZTIGZpbGVzeXN0ZW0gY29kZS4gU2VlbXMgbGlrZSB0aGUgY29yZSBtb2RpZmljYXRpb25zIGFyZSBmb2N1c2VkIG9uIGFkZGluZyBDTklEIHZhbGlkYXRpb24sIHdoaWNoIGlzIGEgZ29vZCBtb3ZlLiBUaGV5J3JlIHRvdWNoaW5nIGBjYXRhbG9nLmNgLCBgaGZzX2ZzLmhgLCBgaW5vZGUuY2AsIGFuZCBgc3VwZXIuY2AsIHNvIGl0J3MgYSBwcmV0dHkgaW52YXNpdmUgY2hhbmdlIHRvIGhvdyB0aGUgZmlsZXN5c3RlbSBvcGVyYXRlcy5cblxuU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIHRoZXkncmUgaG9va2luZyBpbnRvIGBoZnNfY2F0X2ZpbmRfYnJlY2AsIGBoZnNfcmVhZF9pbm9kZWAsIGBoZnNfZmlsZV9sb29rdXBgLCBhbmQgYGhmc19maWxsX3N1cGVyYC4gQmFzaWNhbGx5LCB0aGV5J3JlIHNwcmlua2xpbmcgYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgYW5kIGBoZnNfaXNfdmFsaWRfY25pZGAgY2hlY2tzIHRocm91Z2hvdXQgdGhlIGlub2RlIGFuZCBjYXRhbG9nIGxvb2t1cCBwcm9jZXNzZXMuIFRoZSBjaGFuZ2UgdG8gYGhmc19maWxlX2xvb2t1cGAgdG8gYWNjb3VudCBmb3IgYSBiYWQgYGhmc19yZWFkX2lub2RlYCByZXR1cm4sIGFuZCBzaW1pbGFyIGNoZWNrcyBvbiB0aGUgcm9vdCBpbm9kZSBpbiBgaGZzX2ZpbGxfc3VwZXJgLCBhcmUgYWxsIGNvbnNpc3RlbnQgd2l0aCBoYXJkZW5pbmcgdGhlIHN5c3RlbSBhZ2FpbnN0IGludmFsaWQgY2F0YWxvZyByZWNvcmRzLiBUaGlzIGlzIGFsbCBhYm91dCBwcmV2ZW50aW5nIGNyYXNoZXMgYW5kIGRhdGEgY29ycnVwdGlvbiBzdGVtbWluZyBmcm9tIHRob3NlIGtpbmRzIG9mIGJhZCByZWNvcmRzLlxuXG5UaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgYnVnIGZpeC4gVGhlcmVmb3JlLCBmdXp6aW5nIGlzIGFic29sdXRlbHkgZXNzZW50aWFsIHRvIGVuc3VyZSBpdHMgc3RhYmlsaXR5IGFuZCByZWxpYWJpbGl0eS4gV2UgbmVlZCB0byBoYW1tZXIgdGhpcyBuZXcgQ05JRCB2YWxpZGF0aW9uIHdpdGggYWxsIHNvcnRzIG9mIGNyYXp5IGlucHV0cyB0byBtYWtlIHN1cmUgaXQgaGFuZGxlcyBldmVyeSBlZGdlIGNhc2Ugd2l0aG91dCBibG93aW5nIHVwLlxuXG5SaWdodCwgbm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBjb25maWcgb3B0aW9ucyBmb3IgSEZTLiBgQ09ORklHX0hGU19GU2AgaXMgdGhlIG1vc3QgbGlrZWx5IGNhbmRpZGF0ZSwgc28gSSdsbCBjaGVjayBgZnMvaGZzL0tjb25maWdgIHRvIGNvbmZpcm0gYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIG9wdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIGZvciBidWlsZCBvciB0ZXN0aW5nIHB1cnBvc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjMxLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMTQ6MTE6MDAuMDYxNzQ4MTYxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1NzA1MDY3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSEZTX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2hmcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2hmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvaGZzL0tjb25maWc6Mjpjb25maWcgSEZTX0ZTXFxuZnMvaGZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiQXBwbGUgTWFjaW50b3NoIGZpbGUgc3lzdGVtIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDE0OjExOjAwLjcxODgxMDgxM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNjA4NTU4OTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSEZTIEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBgSEZTX0ZTYCBjb25maWd1cmF0aW9uLiBUaW1lIHRvIHBpbnBvaW50IHRoZSBrZXkgZnVuY3Rpb24gbW9kaWZpY2F0aW9ucyBhbmQgYWRkaXRpb25zLiBCYXNlZCBvbiB0aGUgY29kZSwgaXQgc2VlbXMgbGlrZSBgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkYCBpcyBhIG5ld2x5IGludHJvZHVjZWQgZnVuY3Rpb24uIEkgY2FuIGFsc28gc2VlIHRoYXQgYGhmc19jYXRfZmluZF9icmVjYCwgYGhmc19pc192YWxpZF9jbmlkYCwgYGhmc19yZWFkX2lub2RlYCwgYGhmc19maWxlX2xvb2t1cGAsIGFuZCBgaGZzX2ZpbGxfc3VwZXJgIGhhdmUgYWxsIGJlZW4gdG91Y2hlZC5cblxuTm93LCBsZXQncyBkZXRlcm1pbmUgdGhlIHNjb3BlIG9mIHRoZXNlIGZ1bmN0aW9ucy4gYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgaXMgc3RhdGljIOKAkyB0aGF0IG5hcnJvd3MgaXRzIHBvdGVudGlhbCBpbXBhY3QuIGBoZnNfY2F0X2ZpbmRfYnJlY2AgaXMgZXhwb3J0ZWQsIG1lYW5pbmcgaXQncyBnbG9iYWwgYW5kIGNvdWxkIGJlIGNhbGxlZCBmcm9tIGFueXdoZXJlLiBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCwgYW5kIGBoZnNfZmlsbF9zdXBlcmAgYXJlIGFsbCBzdGF0aWMsIGtlZXBpbmcgdGhlaXIgc2NvcGUgbW9yZSBsaW1pdGVkLlxuXG5TaW5jZSBgaGZzX2NhdF9maW5kX2JyZWNgIGlzIGV4cG9ydGVkLCB0aGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0IGRpZ2dpbmcgaW4gb3JkZXIgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBpcyBpbmZsdWVuY2luZyB0aGUgZmlsZXN5c3RlbSBiZWhhdmlvci4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlIGluIGBmcy9oZnMvY2F0YWxvZy5jYCBmb3IgdGhpcyBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM0NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxNDoxMTo0MS4zMjczNzE2MTFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA4NDQ3NDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhmc19jYXRfZmluZF9icmVjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2hmcy9jYXRhbG9nLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaGZzL2NhdGFsb2cuYz0xODU9c3RhdGljIGludCBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWQoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLCB1MzIgY25pZClcXG4tLVxcbmZzL2hmcy9jYXRhbG9nLmMtMjIzLS8vIG1vdmUgdG8gcmVhZF9zdXBlcj8/P1xcbmZzL2hmcy9jYXRhbG9nLmM6MjI0OmludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcXG5mcy9oZnMvY2F0YWxvZy5jLTIyNS1cXHRcXHQgICAgICBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDE0OjExOjQxLjUzNTgyNDQ0NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NDMxNjczNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBIRlMrIElub2RlIE9wZXJhdGlvbnMqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhlIEhGUysgZmlsZXN5c3RlbSBoYW5kbGVzIGlub2RlIG9wZXJhdGlvbnMsIHNwZWNpZmljYWxseSBmaWxlIGxvb2t1cHMgYW5kIHRoZSByZWFkIHByb2Nlc3MuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYGZzL2hmcy9pbm9kZS5jYC4gVGhhdCdzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbnMgZm9yIGBoZnNfcmVhZF9pbm9kZWAsIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgYWN0dWFsbHkgcmVhZGluZyBhbiBpbm9kZSdzIGRhdGEgZnJvbSBkaXNrIGFuZCBwb3B1bGF0aW5nIHRoZSBgaW5vZGVgIHN0cnVjdHVyZSwgYW5kIGBoZnNfZmlsZV9sb29rdXBgLCB3aGljaCBJJ20gcHJldHR5IGNlcnRhaW4gaGFuZGxlcyB0aGUgY3J1Y2lhbCBzdGVwIG9mIGxvY2F0aW5nIGEgZmlsZSdzIGlub2RlIHdpdGhpbiB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZS4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHR3byB3b3JrIGluIGNvbmNlcnQsIHBhcnRpY3VsYXJseSB0aGUgaW50ZXJwbGF5IGJldHdlZW4gdGhlIEItdHJlZSB0cmF2ZXJzYWwgdXNlZCBmb3IgbG9va3VwcyBhbmQgdGhlIGlub2RlIGxvYWRpbmcgcHJvY2VzcyBpdHNlbGYuIEkgd2FudCB0byBzZWUgaWYgdGhlIGNhY2hpbmcgc3RyYXRlZ2llcyBhcmUgc2Vuc2libGUuIFRoaXMnbGwgcmVxdWlyZSBhIGNsb3NlIGxvb2sgYXQgaG93IHRoZSBjb2RlIG1hbmFnZXMgZGF0YSBidWZmZXJzLCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBhbmQgZXJyb3IgaGFuZGxpbmcgZHVyaW5nIEkvTy4gQW55IGNsZXZlciBvcHRpbWl6YXRpb24gaXMgYWxzbyBzb21ldGhpbmcgSSdkIHdhbnQgdG8gY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMTgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxNDoxMTo0NS4zNzg5OTM5NjZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAxNDc0NjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhmc19yZWFkX2lub2RlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2hmcy9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2hmcy9pbm9kZS5jPTMyNT1zdGF0aWMgaW50IGhmc190ZXN0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpXFxuLS1cXG5mcy9oZnMvaW5vZGUuYy0zNDItLypcXG5mcy9oZnMvaW5vZGUuYzozNDM6ICogaGZzX3JlYWRfaW5vZGVcXG5mcy9oZnMvaW5vZGUuYy0zNDQtICovXFxuZnMvaGZzL2lub2RlLmM6MzQ1OnN0YXRpYyBpbnQgaGZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCAqZGF0YSlcXG5mcy9oZnMvaW5vZGUuYy0zNDYte1xcbi0tXFxuZnMvaGZzL2lub2RlLmM9NDI1PXN0cnVjdCBpbm9kZSAqaGZzX2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGhmc19jYXRfa2V5ICprZXksIGhmc19jYXRfcmVjICpyZWMpXFxuLS1cXG5mcy9oZnMvaW5vZGUuYy00NDAtXFx0fVxcbmZzL2hmcy9pbm9kZS5jOjQ0MTpcXHRpbm9kZSA9IGlnZXQ1X2xvY2tlZChzYiwgY25pZCwgaGZzX3Rlc3RfaW5vZGUsIGhmc19yZWFkX2lub2RlLCBcXHUwMDI2ZGF0YSk7XFxuZnMvaGZzL2lub2RlLmMtNDQyLVxcdGlmIChpbm9kZSBcXHUwMDI2XFx1MDAyNiAoaW5vZGVfc3RhdGVfcmVhZF9vbmNlKGlub2RlKSBcXHUwMDI2IElfTkVXKSlcXG4tLVxcbmZzL2hmcy9pbm9kZS5jPTU1Mj1zdGF0aWMgc3RydWN0IGRlbnRyeSAqaGZzX2ZpbGVfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuLS1cXG5mcy9oZnMvaW5vZGUuYy01NzktXFx0XFx0c3RydWN0IGhmc19pZ2V0X2RhdGEgaWRhdGEgPSB7IE5VTEwsIFxcdTAwMjZyZWMgfTtcXG5mcy9oZnMvaW5vZGUuYzo1ODA6XFx0XFx0cmVzID0gaGZzX3JlYWRfaW5vZGUoaW5vZGUsIFxcdTAwMjZpZGF0YSk7XFxuZnMvaGZzL2lub2RlLmMtNTgxLVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMTQ6MTE6NDUuNTgwNDc2NjY2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI1NDcxMzIxOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipEaXZpbmcgaW50byB0aGUgSEZTKyBGaWxlc3lzdGVtIFN1cGVyYmxvY2sgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIEhGUysgc3VwZXJibG9jayBpbml0aWFsaXphdGlvbi4gSSBrbm93IHRoYXQgYGZzL2hmcy9zdXBlci5jYCBpcyB0aGUgbGlrZWx5IHBsYWNlIHRvIGZpbmQgdGhlIGBoZnNfZmlsbF9zdXBlcmAgZnVuY3Rpb24uIFRoYXQncyB0aGUgb25lIHRoYXQgaGFuZGxlcyBwb3B1bGF0aW5nIHRoZSBzdXBlcmJsb2NrIGRhdGEgc3RydWN0dXJlIHdoZW4gbW91bnRpbmcgdGhlIGZpbGVzeXN0ZW0sIHNvIGl0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUga2VybmVsIHJlY29nbml6ZXMgYW5kIHNldHMgdXAgYW4gSEZTKyB2b2x1bWUuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgaG93IGl0IGhhbmRsZXMgdGhpbmdzIGxpa2UgdGhlIHZvbHVtZSBoZWFkZXIsIGFsbG9jYXRpb24gYml0bWFwcywgY2F0YWxvZyB0cmVlcywgYW5kIGFsbCB0aGF0IGZ1biBzdHVmZi4gTGV0J3Mgc2VlIHdoYXQgaW50ZXJlc3RpbmcgdHJpY2tzIG9yIG9wdGltaXphdGlvbnMgYXJlIGluIHBsYXkgdGhlcmUuIEknbSBlc3BlY2lhbGx5IGN1cmlvdXMgYWJvdXQgYW55IHBvdGVudGlhbCBnb3RjaGFzIG9yIGVkZ2UgY2FzZXMgdGhlIGNvZGUgbWlnaHQgYWRkcmVzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc0MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDE0OjExOjU4LjEyNzYxMDg2OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcwMTQ1NDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhmc19maWxsX3N1cGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2hmcy9zdXBlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2hmcy9zdXBlci5jPTIyMD1zdGF0aWMgaW50IGhmc19wYXJzZV9wYXJhbShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBmc19wYXJhbWV0ZXIgKnBhcmFtKVxcbi0tXFxuZnMvaGZzL3N1cGVyLmMtMzE1LSAqL1xcbmZzL2hmcy9zdXBlci5jOjMxNjpzdGF0aWMgaW50IGhmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG5mcy9oZnMvc3VwZXIuYy0zMTcte1xcbi0tXFxuZnMvaGZzL3N1cGVyLmM9Mzk4PXN0YXRpYyBpbnQgaGZzX2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG5mcy9oZnMvc3VwZXIuYy0zOTkte1xcbmZzL2hmcy9zdXBlci5jOjQwMDpcXHRyZXR1cm4gZ2V0X3RyZWVfYmRldihmYywgaGZzX2ZpbGxfc3VwZXIpO1xcbmZzL2hmcy9zdXBlci5jLTQwMS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDE0OjExOjU4LjI5Nzc2NjU3OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTA1NTE5MDM0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciB0aGUgSEZTIEZpbGVzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gZm9yIGEgZnV6emluZyBwbGFuLiBUaGlzIHBhdGNoIGludHJvZHVjZXMgQ05JRCB2YWxpZGF0aW9uIHdpdGhpbiB0aGUgSEZTIGZpbGVzeXN0ZW0sIHdoaWNoIG1lYW5zIHdlIG5lZWQgdG8gZW5zdXJlIHRoaXMgbmV3IGxvZ2ljIGlzIHJvYnVzdCBhbmQgZG9lc24ndCBjcmVhdGUgYW55IG5ldyB2dWxuZXJhYmlsaXRpZXMgb3IgcmVncmVzc2lvbnMuIEJhc2VkIG9uIHRoZSBzb3VyY2UgYW5kIG15IHVuZGVyc3RhbmRpbmcsIHRoZSBrZXkgZnVuY3Rpb25zIHRvIHRhcmdldCBhcmU6XG5cbiogICBgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkYFxuKiAgIGBoZnNfY2F0X2ZpbmRfYnJlY2BcbiogICBgaGZzX3JlYWRfaW5vZGVgXG4qICAgYGhmc19maWxlX2xvb2t1cGBcbiogICBgaGZzX2ZpbGxfc3VwZXJgXG5cbmBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRgIGlzIHN0YXRpYywgYnV0IHNpbmNlIHN5emthbGxlciBjYW4gcmVzb2x2ZSBpdCwgd2UgbWF5IGFzIHdlbGwgaW5jbHVkZSBpdCBpbiBvdXIgZnVuY3Rpb24gbGlzdC4gV2UgbmVlZCB0byBtYWtlIHN1cmUgU3l6a2FsbGVyIGhhcyBubyBpc3N1ZXMgcmVzb2x2aW5nIGl0LCBvdGhlcndpc2UsIHdlIHdvdWxkIGRyb3AgaXQuXG5cblRoZSBmdW5jdGlvbnMgYGhmc19yZWFkX2lub2RlYCwgYGhmc19jYXRfZmluZF9icmVjYCwgYW5kIGBoZnNfZmlsbF9zdXBlcmAgYXJlIGJlaW5nIGRpcmVjdGx5IG1vZGlmaWVkIHdpdGggdGhpcyBhZGRlZCB2YWxpZGF0aW9uLiBUaGVyZWZvcmUsIHdlIHNob3VsZCBkZWZpbml0ZWx5IHByaW9yaXRpemUgdGhlbSB3aGVuIHNldHRpbmcgdXAgdGhlIGZ1enppbmcgdGFyZ2V0cy4gYGhmc19maWxlX2xvb2t1cGAgaXMgYWxzbyBpbXBvcnRhbnQgYXMgaXQgaXMgbGlrZWx5IGludm9sdmVkIGluIHRoZSBsb29rdXAgb2YgY2F0YWxvZyByZWNvcmRzLCB3aGljaCB3b3VsZCBiZSBhZmZlY3RlZCBieSB0aGUgYWRkZWQgdmFsaWRhdGlvbi4gYGhmc19maWxsX3N1cGVyYCB3b3VsZCBhbHNvIGJlIGluY2x1ZGVkIGFzIGl0IGludm9sdmVzIHRoZSBtb3VudGluZyBhbmQgaW50aWFsaXphdGlvbiBvZiB0aGUgZmlsZSBzeXN0ZW0uXG5cblRoZSByZWxldmFudCBjb25maWcgb3B0aW9uIGlzIGBIRlNfRlNgLiBXZSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGVuYWJsZWQgaW4gdGhlIGZ1enppbmcgZW52aXJvbm1lbnQgdG8gZXhlcmNpc2UgdGhlIGNvZGUuIFRoaXMgd2lsbCBiZSB0aGUgZmlyc3Qgc3RlcCBpbiBzZXR0aW5nIHVwIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LlxuXG5UaGUgZnVuZGFtZW50YWwgZ29hbCBoZXJlIGlzIHRvIGZlZWQgdGhlIGZ1enplciBhIGRpdmVyc2Ugc2V0IG9mIGlucHV0cywgZXNwZWNpYWxseSBjcmFmdGVkIHRvIHRlc3QgdGhlIG5ldyBDTklEIHZhbGlkYXRpb24gY2hlY2tzLCBhbmQgd2F0Y2ggZm9yIGFueSBjcmFzaGVzLCBoYW5ncywgb3IgdW5leHBlY3RlZCBiZWhhdmlvciB3aXRoaW4gdGhlc2UgY3JpdGljYWwgSEZTIGZ1bmN0aW9ucy4gV2UnbGwgYmUgb24gdGhlIGxvb2tvdXQgZm9yIGVkZ2UgY2FzZXMgYW5kIGNvcnJ1cHRlZCBkYXRhIHRoYXQgY291bGQgcG90ZW50aWFsbHkgYnlwYXNzIG9yIHRyaWdnZXIgZmxhd3MgaW4gdGhlIHZhbGlkYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxODMsIk91dHB1dFRva2VucyI6MTc1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDE0OjEyOjE5LjM1Mjk1OTc2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUyODE5MzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRcIixcbiAgICBcImhmc19jYXRfZmluZF9icmVjXCIsXG4gICAgXCJoZnNfcmVhZF9pbm9kZVwiLFxuICAgIFwiaGZzX2ZpbGVfbG9va3VwXCIsXG4gICAgXCJoZnNfZmlsbF9zdXBlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgQ05JRCBpbiBIRlMgY2F0YWxvZyByZWNvcmRzIGFuZCBpbm9kZXMgdG8gcHJldmVudCB1c2luZyBpbnZhbGlkIG9yIGNvcnJ1cHRlZCBjYXRhbG9nIHJlY29yZHMuIEl0IG1vZGlmaWVzIGNvcmUgSEZTIGZ1bmN0aW9ucyBsaWtlIGhmc19yZWFkX2lub2RlLCBoZnNfY2F0X2ZpbmRfYnJlYywgYW5kIGhmc19maWxsX3N1cGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIEhGUyBmaWxlc3lzdGVtIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IHZhbGlkYXRpb24gbG9naWMgd29ya3MgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRcIixcbiAgICBcImhmc19jYXRfZmluZF9icmVjXCIsXG4gICAgXCJoZnNfcmVhZF9pbm9kZVwiLFxuICAgIFwiaGZzX2ZpbGVfbG9va3VwXCIsXG4gICAgXCJoZnNfZmlsbF9zdXBlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgQ05JRCBpbiBIRlMgY2F0YWxvZyByZWNvcmRzIGFuZCBpbm9kZXMgdG8gcHJldmVudCB1c2luZyBpbnZhbGlkIG9yIGNvcnJ1cHRlZCBjYXRhbG9nIHJlY29yZHMuIEl0IG1vZGlmaWVzIGNvcmUgSEZTIGZ1bmN0aW9ucyBsaWtlIGhmc19yZWFkX2lub2RlLCBoZnNfY2F0X2ZpbmRfYnJlYywgYW5kIGhmc19maWxsX3N1cGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIEhGUyBmaWxlc3lzdGVtIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IHZhbGlkYXRpb24gbG9naWMgd29ya3MgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowznvww[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-06 13:40:01 +0000 UTC FinishedAt: 2026-07-06 14:12:21 +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": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFS_FS" ], "series_id": "0d423c7d-496d-4624-b557-776c19c6e244" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "hfs_cat_validate_found_cnid", "hfs_cat_find_brec", "hfs_read_inode", "hfs_file_lookup", "hfs_fill_super" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA2IDE0OjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZCYjMzQ7LAogICAgJiMzNDtoZnNfY2F0X2ZpbmRfYnJlYyYjMzQ7LAogICAgJiMzNDtoZnNfcmVhZF9pbm9kZSYjMzQ7LAogICAgJiMzNDtoZnNfZmlsZV9sb29rdXAmIzM0OywKICAgICYjMzQ7aGZzX2ZpbGxfc3VwZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBDTklEIGluIEhGUyBjYXRhbG9nIHJlY29yZHMgYW5kIGlub2RlcyB0byBwcmV2ZW50IHVzaW5nIGludmFsaWQgb3IgY29ycnVwdGVkIGNhdGFsb2cgcmVjb3Jkcy4gSXQgbW9kaWZpZXMgY29yZSBIRlMgZnVuY3Rpb25zIGxpa2UgaGZzX3JlYWRfaW5vZGUsIGhmc19jYXRfZmluZF9icmVjLCBhbmQgaGZzX2ZpbGxfc3VwZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgSEZTIGZpbGVzeXN0ZW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgdmFsaWRhdGlvbiBsb2dpYyB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAxNDoxMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDE2MzczNDI0NDAzODMyNjZiNmM0ZmU0Y2ZmMWZkMmYyYzE3YzYwOWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCA2IDE0OjEwOjM1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2hmcy9jYXRhbG9nLmMgYi9mcy9oZnMvY2F0YWxvZy5jXG5pbmRleCAxYmZhMzZkNzFlMjQ3YS4uNTBlZTcwOWQ5NjZmNjMgMTAwNjQ0XG4tLS0gYS9mcy9oZnMvY2F0YWxvZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvY2F0YWxvZy5jXG5AQCAtMTgyLDYgJiM0MzsxODIsNDMgQEAgaW50IGhmc19jYXRfa2V5Y21wKGNvbnN0IGJ0cmVlX2tleSAqa2V5MSwgY29uc3QgYnRyZWVfa2V5ICprZXkyKVxuIFx0XHRcdCAga2V5Mi1cdTAwM2VjYXQuQ05hbWUubmFtZSwga2V5Mi1cdTAwM2VjYXQuQ05hbWUubGVuKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgdTMyIGNuaWQpXG4mIzQzO3tcbiYjNDM7XHRoZnNfY2F0X3JlYyByZWM7XG4mIzQzO1x0dTMyIGZvdW5kX2NuaWQ7XG4mIzQzO1x0c2l6ZV90IHJlY19sZW47XG4mIzQzO1xuJiM0MztcdGlmIChmZC1cdTAwM2VlbnRyeWxlbmd0aCBcdTAwM2M9IDApXG4mIzQzO1x0XHRyZXR1cm4gLUVJTztcbiYjNDM7XG4mIzQzO1x0cmVjX2xlbiA9IGZkLVx1MDAzZWVudHJ5bGVuZ3RoO1xuJiM0MztcdGlmIChyZWNfbGVuIFx1MDAzZSBzaXplb2YocmVjKSlcbiYjNDM7XHRcdHJldHVybiAtRUlPO1xuJiM0MztcbiYjNDM7XHRtZW1zZXQoXHUwMDI2cmVjLCAwLCBzaXplb2YocmVjKSk7XG4mIzQzO1x0aGZzX2Jub2RlX3JlYWQoZmQtXHUwMDNlYm5vZGUsIFx1MDAyNnJlYywgZmQtXHUwMDNlZW50cnlvZmZzZXQsIHJlY19sZW4pO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHJlYy50eXBlKSB7XG4mIzQzO1x0Y2FzZSBIRlNfQ0RSX0ZJTDpcbiYjNDM7XHRcdGlmIChyZWNfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IGhmc19jYXRfZmlsZSkpXG4mIzQzO1x0XHRcdHJldHVybiAtRUlPO1xuJiM0MztcdFx0Zm91bmRfY25pZCA9IGJlMzJfdG9fY3B1KHJlYy5maWxlLkZsTnVtKTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgSEZTX0NEUl9ESVI6XG4mIzQzO1x0XHRpZiAocmVjX2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBoZnNfY2F0X2RpcikpXG4mIzQzO1x0XHRcdHJldHVybiAtRUlPO1xuJiM0MztcdFx0Zm91bmRfY25pZCA9IGJlMzJfdG9fY3B1KHJlYy5kaXIuRGlySUQpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHJldHVybiAtRUlPO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKGZvdW5kX2NuaWQgIT0gY25pZClcbiYjNDM7XHRcdHJldHVybiAtRUlPO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiAvKiBUcnkgdG8gZ2V0IGEgY2F0YWxvZyBlbnRyeSBmb3IgZ2l2ZW4gY2F0YWxvZyBpZCAqL1xuIC8vIG1vdmUgdG8gcmVhZF9zdXBlcj8/P1xuIGludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcbkBAIC0yMDgsNyAmIzQzOzI0NSwxMiBAQCBpbnQgaGZzX2NhdF9maW5kX2JyZWMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsXG4gXHRcdHJldHVybiAtRUlPO1xuIFx0fVxuIFx0bWVtY3B5KGZkLVx1MDAzZXNlYXJjaF9rZXktXHUwMDNlY2F0LkNOYW1lLm5hbWUsIHJlYy50aHJlYWQuQ05hbWUubmFtZSwgbGVuKTtcbi1cdHJldHVybiBoZnNfYnJlY19maW5kKGZkKTtcbiYjNDM7XG4mIzQzO1x0cmVzID0gaGZzX2JyZWNfZmluZChmZCk7XG4mIzQzO1x0aWYgKHJlcylcbiYjNDM7XHRcdHJldHVybiByZXM7XG4mIzQzO1xuJiM0MztcdHJldHVybiBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWQoZmQsIGNuaWQpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lXG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2hmc19mcy5oIGIvZnMvaGZzL2hmc19mcy5oXG5pbmRleCBmMzYyNDUxNGZjYjAzMC4uNjcwNjM4ZjE3NDM4Y2UgMTAwNjQ0XG4tLS0gYS9mcy9oZnMvaGZzX2ZzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmcy9oZnNfZnMuaFxuQEAgLTE1NSw2ICYjNDM7MTU1LDI1IEBAIGV4dGVybiBpbnQgaGZzX2NhdF9tb3ZlKHUzMiBjbmlkLCBzdHJ1Y3QgaW5vZGUgKnNyY19kaXIsXG4gZXh0ZXJuIHZvaWQgaGZzX2NhdF9idWlsZF9rZXkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgYnRyZWVfa2V5ICprZXksXG4gXHRcdFx0ICAgICAgdTMyIHBhcmVudCwgY29uc3Qgc3RydWN0IHFzdHIgKm5hbWUpO1xuIFxuJiM0MzsvKlxuJiM0MzsgKiBWYWxpZGF0ZSB0aGUgQ05JRCBvZiBhIGNhdGFsb2cgcmVjb3JkLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGlubGluZSBib29sIGhmc19pc192YWxpZF9jbmlkKHUzMiBjbmlkLCB1OCB0eXBlKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGxpa2VseShjbmlkIFx1MDAzZT0gSEZTX0ZJUlNUVVNFUl9DTklEKSlcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKGNuaWQpIHtcbiYjNDM7XHRjYXNlIEhGU19ST09UX0NOSUQ6XG4mIzQzO1x0XHRyZXR1cm4gdHlwZSA9PSBIRlNfQ0RSX0RJUjtcbiYjNDM7XHRjYXNlIEhGU19FWFRfQ05JRDpcbiYjNDM7XHRjYXNlIEhGU19DQVRfQ05JRDpcbiYjNDM7XHRcdHJldHVybiB0eXBlID09IEhGU19DRFJfRklMO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIC8qIGRpci5jICovXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaGZzX2Rpcl9vcGVyYXRpb25zO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBoZnNfZGlyX2lub2RlX29wZXJhdGlvbnM7XG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2lub2RlLmMgYi9mcy9oZnMvaW5vZGUuY1xuaW5kZXggYWM0YTkwNTVjNWMwZWEuLmVlMTBhOTI1N2ExMzhhIDEwMDY0NFxuLS0tIGEvZnMvaGZzL2lub2RlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmcy9pbm9kZS5jXG5AQCAtMzY3LDYgJiM0MzszNjcsOSBAQCBzdGF0aWMgaW50IGhmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpXG4gXHRyZWMgPSBpZGF0YS1cdTAwM2VyZWM7XG4gXHRzd2l0Y2ggKHJlYy1cdTAwM2V0eXBlKSB7XG4gXHRjYXNlIEhGU19DRFJfRklMOlxuJiM0MztcdFx0aWYgKCFoZnNfaXNfdmFsaWRfY25pZChiZTMyX3RvX2NwdShyZWMtXHUwMDNlZmlsZS5GbE51bSksIHJlYy1cdTAwM2V0eXBlKSlcbiYjNDM7XHRcdFx0cmV0dXJuIC1FSU87XG4mIzQzO1xuIFx0XHRpZiAoIUhGU19JU19SU1JDKGlub2RlKSkge1xuIFx0XHRcdGhmc19pbm9kZV9yZWFkX2ZvcmsoaW5vZGUsIHJlYy1cdTAwM2VmaWxlLkV4dFJlYywgcmVjLVx1MDAzZWZpbGUuTGdMZW4sXG4gXHRcdFx0XHRcdCAgICByZWMtXHUwMDNlZmlsZS5QeUxlbiwgYmUxNl90b19jcHUocmVjLVx1MDAzZWZpbGUuQ2xwU2l6ZSkpO1xuQEAgLTM5MCw2ICYjNDM7MzkzLDkgQEAgc3RhdGljIGludCBoZnNfcmVhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkYXRhKVxuIFx0XHRpbm9kZS1cdTAwM2VpX21hcHBpbmctXHUwMDNlYV9vcHMgPSBcdTAwMjZoZnNfYW9wcztcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEhGU19DRFJfRElSOlxuJiM0MztcdFx0aWYgKCFoZnNfaXNfdmFsaWRfY25pZChiZTMyX3RvX2NwdShyZWMtXHUwMDNlZGlyLkRpcklEKSwgcmVjLVx1MDAzZXR5cGUpKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVJTztcbiYjNDM7XG4gXHRcdGlub2RlLVx1MDAzZWlfaW5vID0gYmUzMl90b19jcHUocmVjLVx1MDAzZWRpci5EaXJJRCk7XG4gXHRcdGlub2RlLVx1MDAzZWlfc2l6ZSA9IGJlMTZfdG9fY3B1KHJlYy1cdTAwM2VkaXIuVmFsKSAmIzQzOyAyO1xuIFx0XHRIRlNfSShpbm9kZSktXHUwMDNlZnNfYmxvY2tzID0gMDtcbkBAIC01NzEsMTIgJiM0Mzs1NzcsMTIgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmhmc19maWxlX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuIFx0cmVzID0gaGZzX2JyZWNfcmVhZChcdTAwMjZmZCwgXHUwMDI2cmVjLCBzaXplb2YocmVjKSk7XG4gXHRpZiAoIXJlcykge1xuIFx0XHRzdHJ1Y3QgaGZzX2lnZXRfZGF0YSBpZGF0YSA9IHsgTlVMTCwgXHUwMDI2cmVjIH07XG4tXHRcdGhmc19yZWFkX2lub2RlKGlub2RlLCBcdTAwMjZpZGF0YSk7XG4mIzQzO1x0XHRyZXMgPSBoZnNfcmVhZF9pbm9kZShpbm9kZSwgXHUwMDI2aWRhdGEpO1xuIFx0fVxuIFx0aGZzX2ZpbmRfZXhpdChcdTAwMjZmZCk7XG4tXHRpZiAocmVzKSB7XG4mIzQzO1x0aWYgKHJlcyB8fCBpc19iYWRfaW5vZGUoaW5vZGUpKSB7XG4gXHRcdGlwdXQoaW5vZGUpO1xuLVx0XHRyZXR1cm4gRVJSX1BUUihyZXMpO1xuJiM0MztcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTyk7XG4gXHR9XG4gXHRIRlNfSShpbm9kZSktXHUwMDNlcnNyY19pbm9kZSA9IGRpcjtcbiBcdEhGU19JKGRpciktXHUwMDNlcnNyY19pbm9kZSA9IGlub2RlO1xuZGlmZiAtLWdpdCBhL2ZzL2hmcy9zdXBlci5jIGIvZnMvaGZzL3N1cGVyLmNcbmluZGV4IGE0NjZjNDAxZjZiYjI2Li45OGI4MDc5NWJjZGU5YSAxMDA2NDRcbi0tLSBhL2ZzL2hmcy9zdXBlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvc3VwZXIuY1xuQEAgLTM3Miw2ICYjNDM7MzcyLDExIEBAIHN0YXRpYyBpbnQgaGZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuIFx0aWYgKCFyb290X2lub2RlKVxuIFx0XHRnb3RvIGJhaWxfbm9fcm9vdDtcbiBcbiYjNDM7XHRpZiAoaXNfYmFkX2lub2RlKHJvb3RfaW5vZGUpKSB7XG4mIzQzO1x0XHRpcHV0KHJvb3RfaW5vZGUpO1xuJiM0MztcdFx0Z290byBiYWlsX25vX3Jvb3Q7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHNldF9kZWZhdWx0X2Rfb3Aoc2IsIFx1MDAyNmhmc19kZW50cnlfb3BlcmF0aW9ucyk7XG4gXHRyZXMgPSAtRU5PTUVNO1xuIFx0c2ItXHUwMDNlc19yb290ID0gZF9tYWtlX3Jvb3Qocm9vdF9pbm9kZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTQ6MTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SEZTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkJiMzNDssCiAgICAmIzM0O2hmc19jYXRfZmluZF9icmVjJiMzNDssCiAgICAmIzM0O2hmc19yZWFkX2lub2RlJiMzNDssCiAgICAmIzM0O2hmc19maWxlX2xvb2t1cCYjMzQ7LAogICAgJiMzNDtoZnNfZmlsbF9zdXBlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIENOSUQgaW4gSEZTIGNhdGFsb2cgcmVjb3JkcyBhbmQgaW5vZGVzIHRvIHByZXZlbnQgdXNpbmcgaW52YWxpZCBvciBjb3JydXB0ZWQgY2F0YWxvZyByZWNvcmRzLiBJdCBtb2RpZmllcyBjb3JlIEhGUyBmdW5jdGlvbnMgbGlrZSBoZnNfcmVhZF9pbm9kZSwgaGZzX2NhdF9maW5kX2JyZWMsIGFuZCBoZnNfZmlsbF9zdXBlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBIRlMgZmlsZXN5c3RlbSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG5ldyB2YWxpZGF0aW9uIGxvZ2ljIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxNjM3MzQyNDQwMzgzMjY2YjZjNGZlNGNmZjFmZDJmMmMxN2M2MDlmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgNiAxNDoxMDozNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2hmcy9jYXRhbG9nLmMgYi9mcy9oZnMvY2F0YWxvZy5jCmluZGV4IDFiZmEzNmQ3MWUyNDdhLi41MGVlNzA5ZDk2NmY2MyAxMDA2NDQKLS0tIGEvZnMvaGZzL2NhdGFsb2cuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvY2F0YWxvZy5jCkBAIC0xODIsNiAmIzQzOzE4Miw0MyBAQCBpbnQgaGZzX2NhdF9rZXljbXAoY29uc3QgYnRyZWVfa2V5ICprZXkxLCBjb25zdCBidHJlZV9rZXkgKmtleTIpCiAJCQkgIGtleTItJmd0O2NhdC5DTmFtZS5uYW1lLCBrZXkyLSZndDtjYXQuQ05hbWUubGVuKTsKIH0KIAomIzQzO3N0YXRpYyBpbnQgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgdTMyIGNuaWQpCiYjNDM7ewomIzQzOwloZnNfY2F0X3JlYyByZWM7CiYjNDM7CXUzMiBmb3VuZF9jbmlkOwomIzQzOwlzaXplX3QgcmVjX2xlbjsKJiM0MzsKJiM0MzsJaWYgKGZkLSZndDtlbnRyeWxlbmd0aCAmbHQ7PSAwKQomIzQzOwkJcmV0dXJuIC1FSU87CiYjNDM7CiYjNDM7CXJlY19sZW4gPSBmZC0mZ3Q7ZW50cnlsZW5ndGg7CiYjNDM7CWlmIChyZWNfbGVuICZndDsgc2l6ZW9mKHJlYykpCiYjNDM7CQlyZXR1cm4gLUVJTzsKJiM0MzsKJiM0MzsJbWVtc2V0KCZhbXA7cmVjLCAwLCBzaXplb2YocmVjKSk7CiYjNDM7CWhmc19ibm9kZV9yZWFkKGZkLSZndDtibm9kZSwgJmFtcDtyZWMsIGZkLSZndDtlbnRyeW9mZnNldCwgcmVjX2xlbik7CiYjNDM7CiYjNDM7CXN3aXRjaCAocmVjLnR5cGUpIHsKJiM0MzsJY2FzZSBIRlNfQ0RSX0ZJTDoKJiM0MzsJCWlmIChyZWNfbGVuICZsdDsgc2l6ZW9mKHN0cnVjdCBoZnNfY2F0X2ZpbGUpKQomIzQzOwkJCXJldHVybiAtRUlPOwomIzQzOwkJZm91bmRfY25pZCA9IGJlMzJfdG9fY3B1KHJlYy5maWxlLkZsTnVtKTsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIEhGU19DRFJfRElSOgomIzQzOwkJaWYgKHJlY19sZW4gJmx0OyBzaXplb2Yoc3RydWN0IGhmc19jYXRfZGlyKSkKJiM0MzsJCQlyZXR1cm4gLUVJTzsKJiM0MzsJCWZvdW5kX2NuaWQgPSBiZTMyX3RvX2NwdShyZWMuZGlyLkRpcklEKTsKJiM0MzsJCWJyZWFrOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcmV0dXJuIC1FSU87CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKGZvdW5kX2NuaWQgIT0gY25pZCkKJiM0MzsJCXJldHVybiAtRUlPOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiAvKiBUcnkgdG8gZ2V0IGEgY2F0YWxvZyBlbnRyeSBmb3IgZ2l2ZW4gY2F0YWxvZyBpZCAqLwogLy8gbW92ZSB0byByZWFkX3N1cGVyPz8/CiBpbnQgaGZzX2NhdF9maW5kX2JyZWMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsCkBAIC0yMDgsNyAmIzQzOzI0NSwxMiBAQCBpbnQgaGZzX2NhdF9maW5kX2JyZWMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsCiAJCXJldHVybiAtRUlPOwogCX0KIAltZW1jcHkoZmQtJmd0O3NlYXJjaF9rZXktJmd0O2NhdC5DTmFtZS5uYW1lLCByZWMudGhyZWFkLkNOYW1lLm5hbWUsIGxlbik7Ci0JcmV0dXJuIGhmc19icmVjX2ZpbmQoZmQpOwomIzQzOwomIzQzOwlyZXMgPSBoZnNfYnJlY19maW5kKGZkKTsKJiM0MzsJaWYgKHJlcykKJiM0MzsJCXJldHVybiByZXM7CiYjNDM7CiYjNDM7CXJldHVybiBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWQoZmQsIGNuaWQpOwogfQogCiBzdGF0aWMgaW5saW5lCmRpZmYgLS1naXQgYS9mcy9oZnMvaGZzX2ZzLmggYi9mcy9oZnMvaGZzX2ZzLmgKaW5kZXggZjM2MjQ1MTRmY2IwMzAuLjY3MDYzOGYxNzQzOGNlIDEwMDY0NAotLS0gYS9mcy9oZnMvaGZzX2ZzLmgKJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzL2hmc19mcy5oCkBAIC0xNTUsNiAmIzQzOzE1NSwyNSBAQCBleHRlcm4gaW50IGhmc19jYXRfbW92ZSh1MzIgY25pZCwgc3RydWN0IGlub2RlICpzcmNfZGlyLAogZXh0ZXJuIHZvaWQgaGZzX2NhdF9idWlsZF9rZXkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgYnRyZWVfa2V5ICprZXksCiAJCQkgICAgICB1MzIgcGFyZW50LCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSk7CiAKJiM0MzsvKgomIzQzOyAqIFZhbGlkYXRlIHRoZSBDTklEIG9mIGEgY2F0YWxvZyByZWNvcmQuCiYjNDM7ICovCiYjNDM7c3RhdGljIGlubGluZSBib29sIGhmc19pc192YWxpZF9jbmlkKHUzMiBjbmlkLCB1OCB0eXBlKQomIzQzO3sKJiM0MzsJaWYgKGxpa2VseShjbmlkICZndDs9IEhGU19GSVJTVFVTRVJfQ05JRCkpCiYjNDM7CQlyZXR1cm4gdHJ1ZTsKJiM0MzsKJiM0MzsJc3dpdGNoIChjbmlkKSB7CiYjNDM7CWNhc2UgSEZTX1JPT1RfQ05JRDoKJiM0MzsJCXJldHVybiB0eXBlID09IEhGU19DRFJfRElSOwomIzQzOwljYXNlIEhGU19FWFRfQ05JRDoKJiM0MzsJY2FzZSBIRlNfQ0FUX0NOSUQ6CiYjNDM7CQlyZXR1cm4gdHlwZSA9PSBIRlNfQ0RSX0ZJTDsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIC8qIGRpci5jICovCiBleHRlcm4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBoZnNfZGlyX29wZXJhdGlvbnM7CiBleHRlcm4gY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgaGZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zOwpkaWZmIC0tZ2l0IGEvZnMvaGZzL2lub2RlLmMgYi9mcy9oZnMvaW5vZGUuYwppbmRleCBhYzRhOTA1NWM1YzBlYS4uZWUxMGE5MjU3YTEzOGEgMTAwNjQ0Ci0tLSBhL2ZzL2hmcy9pbm9kZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmcy9pbm9kZS5jCkBAIC0zNjcsNiAmIzQzOzM2Nyw5IEBAIHN0YXRpYyBpbnQgaGZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCAqZGF0YSkKIAlyZWMgPSBpZGF0YS0mZ3Q7cmVjOwogCXN3aXRjaCAocmVjLSZndDt0eXBlKSB7CiAJY2FzZSBIRlNfQ0RSX0ZJTDoKJiM0MzsJCWlmICghaGZzX2lzX3ZhbGlkX2NuaWQoYmUzMl90b19jcHUocmVjLSZndDtmaWxlLkZsTnVtKSwgcmVjLSZndDt0eXBlKSkKJiM0MzsJCQlyZXR1cm4gLUVJTzsKJiM0MzsKIAkJaWYgKCFIRlNfSVNfUlNSQyhpbm9kZSkpIHsKIAkJCWhmc19pbm9kZV9yZWFkX2ZvcmsoaW5vZGUsIHJlYy0mZ3Q7ZmlsZS5FeHRSZWMsIHJlYy0mZ3Q7ZmlsZS5MZ0xlbiwKIAkJCQkJICAgIHJlYy0mZ3Q7ZmlsZS5QeUxlbiwgYmUxNl90b19jcHUocmVjLSZndDtmaWxlLkNscFNpemUpKTsKQEAgLTM5MCw2ICYjNDM7MzkzLDkgQEAgc3RhdGljIGludCBoZnNfcmVhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkYXRhKQogCQlpbm9kZS0mZ3Q7aV9tYXBwaW5nLSZndDthX29wcyA9ICZhbXA7aGZzX2FvcHM7CiAJCWJyZWFrOwogCWNhc2UgSEZTX0NEUl9ESVI6CiYjNDM7CQlpZiAoIWhmc19pc192YWxpZF9jbmlkKGJlMzJfdG9fY3B1KHJlYy0mZ3Q7ZGlyLkRpcklEKSwgcmVjLSZndDt0eXBlKSkKJiM0MzsJCQlyZXR1cm4gLUVJTzsKJiM0MzsKIAkJaW5vZGUtJmd0O2lfaW5vID0gYmUzMl90b19jcHUocmVjLSZndDtkaXIuRGlySUQpOwogCQlpbm9kZS0mZ3Q7aV9zaXplID0gYmUxNl90b19jcHUocmVjLSZndDtkaXIuVmFsKSAmIzQzOyAyOwogCQlIRlNfSShpbm9kZSktJmd0O2ZzX2Jsb2NrcyA9IDA7CkBAIC01NzEsMTIgJiM0Mzs1NzcsMTIgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmhmc19maWxlX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LAogCXJlcyA9IGhmc19icmVjX3JlYWQoJmFtcDtmZCwgJmFtcDtyZWMsIHNpemVvZihyZWMpKTsKIAlpZiAoIXJlcykgewogCQlzdHJ1Y3QgaGZzX2lnZXRfZGF0YSBpZGF0YSA9IHsgTlVMTCwgJmFtcDtyZWMgfTsKLQkJaGZzX3JlYWRfaW5vZGUoaW5vZGUsICZhbXA7aWRhdGEpOwomIzQzOwkJcmVzID0gaGZzX3JlYWRfaW5vZGUoaW5vZGUsICZhbXA7aWRhdGEpOwogCX0KIAloZnNfZmluZF9leGl0KCZhbXA7ZmQpOwotCWlmIChyZXMpIHsKJiM0MzsJaWYgKHJlcyB8fCBpc19iYWRfaW5vZGUoaW5vZGUpKSB7CiAJCWlwdXQoaW5vZGUpOwotCQlyZXR1cm4gRVJSX1BUUihyZXMpOwomIzQzOwkJcmV0dXJuIEVSUl9QVFIoLUVJTyk7CiAJfQogCUhGU19JKGlub2RlKS0mZ3Q7cnNyY19pbm9kZSA9IGRpcjsKIAlIRlNfSShkaXIpLSZndDtyc3JjX2lub2RlID0gaW5vZGU7CmRpZmYgLS1naXQgYS9mcy9oZnMvc3VwZXIuYyBiL2ZzL2hmcy9zdXBlci5jCmluZGV4IGE0NjZjNDAxZjZiYjI2Li45OGI4MDc5NWJjZGU5YSAxMDA2NDQKLS0tIGEvZnMvaGZzL3N1cGVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzL3N1cGVyLmMKQEAgLTM3Miw2ICYjNDM7MzcyLDExIEBAIHN0YXRpYyBpbnQgaGZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQogCWlmICghcm9vdF9pbm9kZSkKIAkJZ290byBiYWlsX25vX3Jvb3Q7CiAKJiM0MzsJaWYgKGlzX2JhZF9pbm9kZShyb290X2lub2RlKSkgewomIzQzOwkJaXB1dChyb290X2lub2RlKTsKJiM0MzsJCWdvdG8gYmFpbF9ub19yb290OwomIzQzOwl9CiYjNDM7CiAJc2V0X2RlZmF1bHRfZF9vcChzYiwgJmFtcDtoZnNfZGVudHJ5X29wZXJhdGlvbnMpOwogCXJlcyA9IC1FTk9NRU07CiAJc2ItJmd0O3Nfcm9vdCA9IGRfbWFrZV9yb290KHJvb3RfaW5vZGUpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAxNDoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjMxCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEhGUyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgZGlnZ2luZyBpbnRvIHRoZSBIRlMgZmlsZXN5c3RlbSBjb2RlLiBTZWVtcyBsaWtlIHRoZSBjb3JlIG1vZGlmaWNhdGlvbnMgYXJlIGZvY3VzZWQgb24gYWRkaW5nIENOSUQgdmFsaWRhdGlvbiwgd2hpY2ggaXMgYSBnb29kIG1vdmUuIFRoZXkmIzM5O3JlIHRvdWNoaW5nIGBjYXRhbG9nLmNgLCBgaGZzX2ZzLmhgLCBgaW5vZGUuY2AsIGFuZCBgc3VwZXIuY2AsIHNvIGl0JiMzOTtzIGEgcHJldHR5IGludmFzaXZlIGNoYW5nZSB0byBob3cgdGhlIGZpbGVzeXN0ZW0gb3BlcmF0ZXMuCgpTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgaG9va2luZyBpbnRvIGBoZnNfY2F0X2ZpbmRfYnJlY2AsIGBoZnNfcmVhZF9pbm9kZWAsIGBoZnNfZmlsZV9sb29rdXBgLCBhbmQgYGhmc19maWxsX3N1cGVyYC4gQmFzaWNhbGx5LCB0aGV5JiMzOTtyZSBzcHJpbmtsaW5nIGBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRgIGFuZCBgaGZzX2lzX3ZhbGlkX2NuaWRgIGNoZWNrcyB0aHJvdWdob3V0IHRoZSBpbm9kZSBhbmQgY2F0YWxvZyBsb29rdXAgcHJvY2Vzc2VzLiBUaGUgY2hhbmdlIHRvIGBoZnNfZmlsZV9sb29rdXBgIHRvIGFjY291bnQgZm9yIGEgYmFkIGBoZnNfcmVhZF9pbm9kZWAgcmV0dXJuLCBhbmQgc2ltaWxhciBjaGVja3Mgb24gdGhlIHJvb3QgaW5vZGUgaW4gYGhmc19maWxsX3N1cGVyYCwgYXJlIGFsbCBjb25zaXN0ZW50IHdpdGggaGFyZGVuaW5nIHRoZSBzeXN0ZW0gYWdhaW5zdCBpbnZhbGlkIGNhdGFsb2cgcmVjb3Jkcy4gVGhpcyBpcyBhbGwgYWJvdXQgcHJldmVudGluZyBjcmFzaGVzIGFuZCBkYXRhIGNvcnJ1cHRpb24gc3RlbW1pbmcgZnJvbSB0aG9zZSBraW5kcyBvZiBiYWQgcmVjb3Jkcy4KClRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3QgYSBidWcgZml4LiBUaGVyZWZvcmUsIGZ1enppbmcgaXMgYWJzb2x1dGVseSBlc3NlbnRpYWwgdG8gZW5zdXJlIGl0cyBzdGFiaWxpdHkgYW5kIHJlbGlhYmlsaXR5LiBXZSBuZWVkIHRvIGhhbW1lciB0aGlzIG5ldyBDTklEIHZhbGlkYXRpb24gd2l0aCBhbGwgc29ydHMgb2YgY3JhenkgaW5wdXRzIHRvIG1ha2Ugc3VyZSBpdCBoYW5kbGVzIGV2ZXJ5IGVkZ2UgY2FzZSB3aXRob3V0IGJsb3dpbmcgdXAuCgpSaWdodCwgbm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBjb25maWcgb3B0aW9ucyBmb3IgSEZTLiBgQ09ORklHX0hGU19GU2AgaXMgdGhlIG1vc3QgbGlrZWx5IGNhbmRpZGF0ZSwgc28gSSYjMzk7bGwgY2hlY2sgYGZzL2hmcy9LY29uZmlnYCB0byBjb25maXJtIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBvcHRpb25zIEkgbmVlZCB0byBiZSBhd2FyZSBvZiBmb3IgYnVpbGQgb3IgdGVzdGluZyBwdXJwb3Nlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAxNDoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSEZTX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvaGZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2hmcy9LY29uZmlnOjI6Y29uZmlnIEhGU19GU1xuZnMvaGZzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0FwcGxlIE1hY2ludG9zaCBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTQ6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM0NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEhGUyBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgSEZTX0ZTYCBjb25maWd1cmF0aW9uLiBUaW1lIHRvIHBpbnBvaW50IHRoZSBrZXkgZnVuY3Rpb24gbW9kaWZpY2F0aW9ucyBhbmQgYWRkaXRpb25zLiBCYXNlZCBvbiB0aGUgY29kZSwgaXQgc2VlbXMgbGlrZSBgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkYCBpcyBhIG5ld2x5IGludHJvZHVjZWQgZnVuY3Rpb24uIEkgY2FuIGFsc28gc2VlIHRoYXQgYGhmc19jYXRfZmluZF9icmVjYCwgYGhmc19pc192YWxpZF9jbmlkYCwgYGhmc19yZWFkX2lub2RlYCwgYGhmc19maWxlX2xvb2t1cGAsIGFuZCBgaGZzX2ZpbGxfc3VwZXJgIGhhdmUgYWxsIGJlZW4gdG91Y2hlZC4KCk5vdywgbGV0JiMzOTtzIGRldGVybWluZSB0aGUgc2NvcGUgb2YgdGhlc2UgZnVuY3Rpb25zLiBgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkYCBpcyBzdGF0aWMg4oCTIHRoYXQgbmFycm93cyBpdHMgcG90ZW50aWFsIGltcGFjdC4gYGhmc19jYXRfZmluZF9icmVjYCBpcyBleHBvcnRlZCwgbWVhbmluZyBpdCYjMzk7cyBnbG9iYWwgYW5kIGNvdWxkIGJlIGNhbGxlZCBmcm9tIGFueXdoZXJlLiBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCwgYW5kIGBoZnNfZmlsbF9zdXBlcmAgYXJlIGFsbCBzdGF0aWMsIGtlZXBpbmcgdGhlaXIgc2NvcGUgbW9yZSBsaW1pdGVkLgoKU2luY2UgYGhmc19jYXRfZmluZF9icmVjYCBpcyBleHBvcnRlZCwgdGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQgZGlnZ2luZyBpbiBvcmRlciB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGlzIGluZmx1ZW5jaW5nIHRoZSBmaWxlc3lzdGVtIGJlaGF2aW9yLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlIGluIGBmcy9oZnMvY2F0YWxvZy5jYCBmb3IgdGhpcyBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAxNDoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoZnNfY2F0X2ZpbmRfYnJlYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2hmcy9jYXRhbG9nLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaGZzL2NhdGFsb2cuYz0xODU9c3RhdGljIGludCBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWQoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLCB1MzIgY25pZClcbi0tXG5mcy9oZnMvY2F0YWxvZy5jLTIyMy0vLyBtb3ZlIHRvIHJlYWRfc3VwZXI/Pz9cbmZzL2hmcy9jYXRhbG9nLmM6MjI0OmludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcbmZzL2hmcy9jYXRhbG9nLmMtMjI1LVx0XHQgICAgICBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTQ6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAxOAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBIRlMmIzQzOyBJbm9kZSBPcGVyYXRpb25zKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhlIEhGUyYjNDM7IGZpbGVzeXN0ZW0gaGFuZGxlcyBpbm9kZSBvcGVyYXRpb25zLCBzcGVjaWZpY2FsbHkgZmlsZSBsb29rdXBzIGFuZCB0aGUgcmVhZCBwcm9jZXNzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGBmcy9oZnMvaW5vZGUuY2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbnMgZm9yIGBoZnNfcmVhZF9pbm9kZWAsIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgYWN0dWFsbHkgcmVhZGluZyBhbiBpbm9kZSYjMzk7cyBkYXRhIGZyb20gZGlzayBhbmQgcG9wdWxhdGluZyB0aGUgYGlub2RlYCBzdHJ1Y3R1cmUsIGFuZCBgaGZzX2ZpbGVfbG9va3VwYCwgd2hpY2ggSSYjMzk7bSBwcmV0dHkgY2VydGFpbiBoYW5kbGVzIHRoZSBjcnVjaWFsIHN0ZXAgb2YgbG9jYXRpbmcgYSBmaWxlJiMzOTtzIGlub2RlIHdpdGhpbiB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZS4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSB0d28gd29yayBpbiBjb25jZXJ0LCBwYXJ0aWN1bGFybHkgdGhlIGludGVycGxheSBiZXR3ZWVuIHRoZSBCLXRyZWUgdHJhdmVyc2FsIHVzZWQgZm9yIGxvb2t1cHMgYW5kIHRoZSBpbm9kZSBsb2FkaW5nIHByb2Nlc3MgaXRzZWxmLiBJIHdhbnQgdG8gc2VlIGlmIHRoZSBjYWNoaW5nIHN0cmF0ZWdpZXMgYXJlIHNlbnNpYmxlLiBUaGlzJiMzOTtsbCByZXF1aXJlIGEgY2xvc2UgbG9vayBhdCBob3cgdGhlIGNvZGUgbWFuYWdlcyBkYXRhIGJ1ZmZlcnMsIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIGFuZCBlcnJvciBoYW5kbGluZyBkdXJpbmcgSS9PLiBBbnkgY2xldmVyIG9wdGltaXphdGlvbiBpcyBhbHNvIHNvbWV0aGluZyBJJiMzOTtkIHdhbnQgdG8gY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTQ6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGZzX3JlYWRfaW5vZGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9oZnMvaW5vZGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9oZnMvaW5vZGUuYz0zMjU9c3RhdGljIGludCBoZnNfdGVzdF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkYXRhKVxuLS1cbmZzL2hmcy9pbm9kZS5jLTM0Mi0vKlxuZnMvaGZzL2lub2RlLmM6MzQzOiAqIGhmc19yZWFkX2lub2RlXG5mcy9oZnMvaW5vZGUuYy0zNDQtICovXG5mcy9oZnMvaW5vZGUuYzozNDU6c3RhdGljIGludCBoZnNfcmVhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkYXRhKVxuZnMvaGZzL2lub2RlLmMtMzQ2LXtcbi0tXG5mcy9oZnMvaW5vZGUuYz00MjU9c3RydWN0IGlub2RlICpoZnNfaWdldChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgaGZzX2NhdF9rZXkgKmtleSwgaGZzX2NhdF9yZWMgKnJlYylcbi0tXG5mcy9oZnMvaW5vZGUuYy00NDAtXHR9XG5mcy9oZnMvaW5vZGUuYzo0NDE6XHRpbm9kZSA9IGlnZXQ1X2xvY2tlZChzYiwgY25pZCwgaGZzX3Rlc3RfaW5vZGUsIGhmc19yZWFkX2lub2RlLCBcdTAwMjZkYXRhKTtcbmZzL2hmcy9pbm9kZS5jLTQ0Mi1cdGlmIChpbm9kZSBcdTAwMjZcdTAwMjYgKGlub2RlX3N0YXRlX3JlYWRfb25jZShpbm9kZSkgXHUwMDI2IElfTkVXKSlcbi0tXG5mcy9oZnMvaW5vZGUuYz01NTI9c3RhdGljIHN0cnVjdCBkZW50cnkgKmhmc19maWxlX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuLS1cbmZzL2hmcy9pbm9kZS5jLTU3OS1cdFx0c3RydWN0IGhmc19pZ2V0X2RhdGEgaWRhdGEgPSB7IE5VTEwsIFx1MDAyNnJlYyB9O1xuZnMvaGZzL2lub2RlLmM6NTgwOlx0XHRyZXMgPSBoZnNfcmVhZF9pbm9kZShpbm9kZSwgXHUwMDI2aWRhdGEpO1xuZnMvaGZzL2lub2RlLmMtNTgxLVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDE0OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3NDAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqRGl2aW5nIGludG8gdGhlIEhGUyYjNDM7IEZpbGVzeXN0ZW0gU3VwZXJibG9jayBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIEhGUyYjNDM7IHN1cGVyYmxvY2sgaW5pdGlhbGl6YXRpb24uIEkga25vdyB0aGF0IGBmcy9oZnMvc3VwZXIuY2AgaXMgdGhlIGxpa2VseSBwbGFjZSB0byBmaW5kIHRoZSBgaGZzX2ZpbGxfc3VwZXJgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHRoZSBvbmUgdGhhdCBoYW5kbGVzIHBvcHVsYXRpbmcgdGhlIHN1cGVyYmxvY2sgZGF0YSBzdHJ1Y3R1cmUgd2hlbiBtb3VudGluZyB0aGUgZmlsZXN5c3RlbSwgc28gaXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUga2VybmVsIHJlY29nbml6ZXMgYW5kIHNldHMgdXAgYW4gSEZTJiM0Mzsgdm9sdW1lLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIGhvdyBpdCBoYW5kbGVzIHRoaW5ncyBsaWtlIHRoZSB2b2x1bWUgaGVhZGVyLCBhbGxvY2F0aW9uIGJpdG1hcHMsIGNhdGFsb2cgdHJlZXMsIGFuZCBhbGwgdGhhdCBmdW4gc3R1ZmYuIExldCYjMzk7cyBzZWUgd2hhdCBpbnRlcmVzdGluZyB0cmlja3Mgb3Igb3B0aW1pemF0aW9ucyBhcmUgaW4gcGxheSB0aGVyZS4gSSYjMzk7bSBlc3BlY2lhbGx5IGN1cmlvdXMgYWJvdXQgYW55IHBvdGVudGlhbCBnb3RjaGFzIG9yIGVkZ2UgY2FzZXMgdGhlIGNvZGUgbWlnaHQgYWRkcmVzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTQ6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGZzX2ZpbGxfc3VwZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9oZnMvc3VwZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9oZnMvc3VwZXIuYz0yMjA9c3RhdGljIGludCBoZnNfcGFyc2VfcGFyYW0oc3RydWN0IGZzX2NvbnRleHQgKmZjLCBzdHJ1Y3QgZnNfcGFyYW1ldGVyICpwYXJhbSlcbi0tXG5mcy9oZnMvc3VwZXIuYy0zMTUtICovXG5mcy9oZnMvc3VwZXIuYzozMTY6c3RhdGljIGludCBoZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG5mcy9oZnMvc3VwZXIuYy0zMTcte1xuLS1cbmZzL2hmcy9zdXBlci5jPTM5OD1zdGF0aWMgaW50IGhmc19nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG5mcy9oZnMvc3VwZXIuYy0zOTkte1xuZnMvaGZzL3N1cGVyLmM6NDAwOlx0cmV0dXJuIGdldF90cmVlX2JkZXYoZmMsIGhmc19maWxsX3N1cGVyKTtcbmZzL2hmcy9zdXBlci5jLTQwMS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDE0OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxODMKCQkJCQkJCW91dHB1dDogMTc1CgkJCQkJCQl0aG91Z2h0czogMjk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIHRoZSBIRlMgRmlsZXN5c3RlbSBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIGZvciBhIGZ1enppbmcgcGxhbi4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIENOSUQgdmFsaWRhdGlvbiB3aXRoaW4gdGhlIEhGUyBmaWxlc3lzdGVtLCB3aGljaCBtZWFucyB3ZSBuZWVkIHRvIGVuc3VyZSB0aGlzIG5ldyBsb2dpYyBpcyByb2J1c3QgYW5kIGRvZXNuJiMzOTt0IGNyZWF0ZSBhbnkgbmV3IHZ1bG5lcmFiaWxpdGllcyBvciByZWdyZXNzaW9ucy4gQmFzZWQgb24gdGhlIHNvdXJjZSBhbmQgbXkgdW5kZXJzdGFuZGluZywgdGhlIGtleSBmdW5jdGlvbnMgdG8gdGFyZ2V0IGFyZToKCiogICBgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkYAoqICAgYGhmc19jYXRfZmluZF9icmVjYAoqICAgYGhmc19yZWFkX2lub2RlYAoqICAgYGhmc19maWxlX2xvb2t1cGAKKiAgIGBoZnNfZmlsbF9zdXBlcmAKCmBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRgIGlzIHN0YXRpYywgYnV0IHNpbmNlIHN5emthbGxlciBjYW4gcmVzb2x2ZSBpdCwgd2UgbWF5IGFzIHdlbGwgaW5jbHVkZSBpdCBpbiBvdXIgZnVuY3Rpb24gbGlzdC4gV2UgbmVlZCB0byBtYWtlIHN1cmUgU3l6a2FsbGVyIGhhcyBubyBpc3N1ZXMgcmVzb2x2aW5nIGl0LCBvdGhlcndpc2UsIHdlIHdvdWxkIGRyb3AgaXQuCgpUaGUgZnVuY3Rpb25zIGBoZnNfcmVhZF9pbm9kZWAsIGBoZnNfY2F0X2ZpbmRfYnJlY2AsIGFuZCBgaGZzX2ZpbGxfc3VwZXJgIGFyZSBiZWluZyBkaXJlY3RseSBtb2RpZmllZCB3aXRoIHRoaXMgYWRkZWQgdmFsaWRhdGlvbi4gVGhlcmVmb3JlLCB3ZSBzaG91bGQgZGVmaW5pdGVseSBwcmlvcml0aXplIHRoZW0gd2hlbiBzZXR0aW5nIHVwIHRoZSBmdXp6aW5nIHRhcmdldHMuIGBoZnNfZmlsZV9sb29rdXBgIGlzIGFsc28gaW1wb3J0YW50IGFzIGl0IGlzIGxpa2VseSBpbnZvbHZlZCBpbiB0aGUgbG9va3VwIG9mIGNhdGFsb2cgcmVjb3Jkcywgd2hpY2ggd291bGQgYmUgYWZmZWN0ZWQgYnkgdGhlIGFkZGVkIHZhbGlkYXRpb24uIGBoZnNfZmlsbF9zdXBlcmAgd291bGQgYWxzbyBiZSBpbmNsdWRlZCBhcyBpdCBpbnZvbHZlcyB0aGUgbW91bnRpbmcgYW5kIGludGlhbGl6YXRpb24gb2YgdGhlIGZpbGUgc3lzdGVtLgoKVGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb24gaXMgYEhGU19GU2AuIFdlJiMzOTtsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGVuYWJsZWQgaW4gdGhlIGZ1enppbmcgZW52aXJvbm1lbnQgdG8gZXhlcmNpc2UgdGhlIGNvZGUuIFRoaXMgd2lsbCBiZSB0aGUgZmlyc3Qgc3RlcCBpbiBzZXR0aW5nIHVwIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LgoKVGhlIGZ1bmRhbWVudGFsIGdvYWwgaGVyZSBpcyB0byBmZWVkIHRoZSBmdXp6ZXIgYSBkaXZlcnNlIHNldCBvZiBpbnB1dHMsIGVzcGVjaWFsbHkgY3JhZnRlZCB0byB0ZXN0IHRoZSBuZXcgQ05JRCB2YWxpZGF0aW9uIGNoZWNrcywgYW5kIHdhdGNoIGZvciBhbnkgY3Jhc2hlcywgaGFuZ3MsIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3Igd2l0aGluIHRoZXNlIGNyaXRpY2FsIEhGUyBmdW5jdGlvbnMuIFdlJiMzOTtsbCBiZSBvbiB0aGUgbG9va291dCBmb3IgZWRnZSBjYXNlcyBhbmQgY29ycnVwdGVkIGRhdGEgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBieXBhc3Mgb3IgdHJpZ2dlciBmbGF3cyBpbiB0aGUgdmFsaWRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTQ6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZCYjMzQ7LAogICAgJiMzNDtoZnNfY2F0X2ZpbmRfYnJlYyYjMzQ7LAogICAgJiMzNDtoZnNfcmVhZF9pbm9kZSYjMzQ7LAogICAgJiMzNDtoZnNfZmlsZV9sb29rdXAmIzM0OywKICAgICYjMzQ7aGZzX2ZpbGxfc3VwZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBDTklEIGluIEhGUyBjYXRhbG9nIHJlY29yZHMgYW5kIGlub2RlcyB0byBwcmV2ZW50IHVzaW5nIGludmFsaWQgb3IgY29ycnVwdGVkIGNhdGFsb2cgcmVjb3Jkcy4gSXQgbW9kaWZpZXMgY29yZSBIRlMgZnVuY3Rpb25zIGxpa2UgaGZzX3JlYWRfaW5vZGUsIGhmc19jYXRfZmluZF9icmVjLCBhbmQgaGZzX2ZpbGxfc3VwZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgSEZTIGZpbGVzeXN0ZW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgdmFsaWRhdGlvbiBsb2dpYyB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SEZTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkJiMzNDssCiAgICAmIzM0O2hmc19jYXRfZmluZF9icmVjJiMzNDssCiAgICAmIzM0O2hmc19yZWFkX2lub2RlJiMzNDssCiAgICAmIzM0O2hmc19maWxlX2xvb2t1cCYjMzQ7LAogICAgJiMzNDtoZnNfZmlsbF9zdXBlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIENOSUQgaW4gSEZTIGNhdGFsb2cgcmVjb3JkcyBhbmQgaW5vZGVzIHRvIHByZXZlbnQgdXNpbmcgaW52YWxpZCBvciBjb3JydXB0ZWQgY2F0YWxvZyByZWNvcmRzLiBJdCBtb2RpZmllcyBjb3JlIEhGUyBmdW5jdGlvbnMgbGlrZSBoZnNfcmVhZF9pbm9kZSwgaGZzX2NhdF9maW5kX2JyZWMsIGFuZCBoZnNfZmlsbF9zdXBlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBIRlMgZmlsZXN5c3RlbSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG5ldyB2YWxpZGF0aW9uIGxvZ2ljIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDZUMTQ6MTA6MzcuMzQzOTM0NjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDIyNjE4NjIxNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkXCIsXG4gICAgXCJoZnNfY2F0X2ZpbmRfYnJlY1wiLFxuICAgIFwiaGZzX3JlYWRfaW5vZGVcIixcbiAgICBcImhmc19maWxlX2xvb2t1cFwiLFxuICAgIFwiaGZzX2ZpbGxfc3VwZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIENOSUQgaW4gSEZTIGNhdGFsb2cgcmVjb3JkcyBhbmQgaW5vZGVzIHRvIHByZXZlbnQgdXNpbmcgaW52YWxpZCBvciBjb3JydXB0ZWQgY2F0YWxvZyByZWNvcmRzLiBJdCBtb2RpZmllcyBjb3JlIEhGUyBmdW5jdGlvbnMgbGlrZSBoZnNfcmVhZF9pbm9kZSwgaGZzX2NhdF9maW5kX2JyZWMsIGFuZCBoZnNfZmlsbF9zdXBlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBIRlMgZmlsZXN5c3RlbSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG5ldyB2YWxpZGF0aW9uIGxvZ2ljIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDE0OjEwOjM3LjM0Mzk0MDc1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzEwMTQxNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxNjM3MzQyNDQwMzgzMjY2YjZjNGZlNGNmZjFmZDJmMmMxN2M2MDlmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDYgMTQ6MTA6MzUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2NhdGFsb2cuYyBiL2ZzL2hmcy9jYXRhbG9nLmNcXG5pbmRleCAxYmZhMzZkNzFlMjQ3YS4uNTBlZTcwOWQ5NjZmNjMgMTAwNjQ0XFxuLS0tIGEvZnMvaGZzL2NhdGFsb2cuY1xcbisrKyBiL2ZzL2hmcy9jYXRhbG9nLmNcXG5AQCAtMTgyLDYgKzE4Miw0MyBAQCBpbnQgaGZzX2NhdF9rZXljbXAoY29uc3QgYnRyZWVfa2V5ICprZXkxLCBjb25zdCBidHJlZV9rZXkgKmtleTIpXFxuIFxcdFxcdFxcdCAga2V5Mi1cXHUwMDNlY2F0LkNOYW1lLm5hbWUsIGtleTItXFx1MDAzZWNhdC5DTmFtZS5sZW4pO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZChzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsIHUzMiBjbmlkKVxcbit7XFxuK1xcdGhmc19jYXRfcmVjIHJlYztcXG4rXFx0dTMyIGZvdW5kX2NuaWQ7XFxuK1xcdHNpemVfdCByZWNfbGVuO1xcbitcXG4rXFx0aWYgKGZkLVxcdTAwM2VlbnRyeWxlbmd0aCBcXHUwMDNjPSAwKVxcbitcXHRcXHRyZXR1cm4gLUVJTztcXG4rXFxuK1xcdHJlY19sZW4gPSBmZC1cXHUwMDNlZW50cnlsZW5ndGg7XFxuK1xcdGlmIChyZWNfbGVuIFxcdTAwM2Ugc2l6ZW9mKHJlYykpXFxuK1xcdFxcdHJldHVybiAtRUlPO1xcbitcXG4rXFx0bWVtc2V0KFxcdTAwMjZyZWMsIDAsIHNpemVvZihyZWMpKTtcXG4rXFx0aGZzX2Jub2RlX3JlYWQoZmQtXFx1MDAzZWJub2RlLCBcXHUwMDI2cmVjLCBmZC1cXHUwMDNlZW50cnlvZmZzZXQsIHJlY19sZW4pO1xcbitcXG4rXFx0c3dpdGNoIChyZWMudHlwZSkge1xcbitcXHRjYXNlIEhGU19DRFJfRklMOlxcbitcXHRcXHRpZiAocmVjX2xlbiBcXHUwMDNjIHNpemVvZihzdHJ1Y3QgaGZzX2NhdF9maWxlKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcdFxcdGZvdW5kX2NuaWQgPSBiZTMyX3RvX2NwdShyZWMuZmlsZS5GbE51bSk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIEhGU19DRFJfRElSOlxcbitcXHRcXHRpZiAocmVjX2xlbiBcXHUwMDNjIHNpemVvZihzdHJ1Y3QgaGZzX2NhdF9kaXIpKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4rXFx0XFx0Zm91bmRfY25pZCA9IGJlMzJfdG9fY3B1KHJlYy5kaXIuRGlySUQpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChmb3VuZF9jbmlkICE9IGNuaWQpXFxuK1xcdFxcdHJldHVybiAtRUlPO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuIC8qIFRyeSB0byBnZXQgYSBjYXRhbG9nIGVudHJ5IGZvciBnaXZlbiBjYXRhbG9nIGlkICovXFxuIC8vIG1vdmUgdG8gcmVhZF9zdXBlcj8/P1xcbiBpbnQgaGZzX2NhdF9maW5kX2JyZWMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsXFxuQEAgLTIwOCw3ICsyNDUsMTIgQEAgaW50IGhmc19jYXRfZmluZF9icmVjKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBjbmlkLFxcbiBcXHRcXHRyZXR1cm4gLUVJTztcXG4gXFx0fVxcbiBcXHRtZW1jcHkoZmQtXFx1MDAzZXNlYXJjaF9rZXktXFx1MDAzZWNhdC5DTmFtZS5uYW1lLCByZWMudGhyZWFkLkNOYW1lLm5hbWUsIGxlbik7XFxuLVxcdHJldHVybiBoZnNfYnJlY19maW5kKGZkKTtcXG4rXFxuK1xcdHJlcyA9IGhmc19icmVjX2ZpbmQoZmQpO1xcbitcXHRpZiAocmVzKVxcbitcXHRcXHRyZXR1cm4gcmVzO1xcbitcXG4rXFx0cmV0dXJuIGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZChmZCwgY25pZCk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbmxpbmVcXG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2hmc19mcy5oIGIvZnMvaGZzL2hmc19mcy5oXFxuaW5kZXggZjM2MjQ1MTRmY2IwMzAuLjY3MDYzOGYxNzQzOGNlIDEwMDY0NFxcbi0tLSBhL2ZzL2hmcy9oZnNfZnMuaFxcbisrKyBiL2ZzL2hmcy9oZnNfZnMuaFxcbkBAIC0xNTUsNiArMTU1LDI1IEBAIGV4dGVybiBpbnQgaGZzX2NhdF9tb3ZlKHUzMiBjbmlkLCBzdHJ1Y3QgaW5vZGUgKnNyY19kaXIsXFxuIGV4dGVybiB2b2lkIGhmc19jYXRfYnVpbGRfa2V5KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGJ0cmVlX2tleSAqa2V5LFxcbiBcXHRcXHRcXHQgICAgICB1MzIgcGFyZW50LCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSk7XFxuIFxcbisvKlxcbisgKiBWYWxpZGF0ZSB0aGUgQ05JRCBvZiBhIGNhdGFsb2cgcmVjb3JkLlxcbisgKi9cXG4rc3RhdGljIGlubGluZSBib29sIGhmc19pc192YWxpZF9jbmlkKHUzMiBjbmlkLCB1OCB0eXBlKVxcbit7XFxuK1xcdGlmIChsaWtlbHkoY25pZCBcXHUwMDNlPSBIRlNfRklSU1RVU0VSX0NOSUQpKVxcbitcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFxuK1xcdHN3aXRjaCAoY25pZCkge1xcbitcXHRjYXNlIEhGU19ST09UX0NOSUQ6XFxuK1xcdFxcdHJldHVybiB0eXBlID09IEhGU19DRFJfRElSO1xcbitcXHRjYXNlIEhGU19FWFRfQ05JRDpcXG4rXFx0Y2FzZSBIRlNfQ0FUX0NOSUQ6XFxuK1xcdFxcdHJldHVybiB0eXBlID09IEhGU19DRFJfRklMO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4rfVxcbitcXG4gLyogZGlyLmMgKi9cXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaGZzX2Rpcl9vcGVyYXRpb25zO1xcbiBleHRlcm4gY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgaGZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zO1xcbmRpZmYgLS1naXQgYS9mcy9oZnMvaW5vZGUuYyBiL2ZzL2hmcy9pbm9kZS5jXFxuaW5kZXggYWM0YTkwNTVjNWMwZWEuLmVlMTBhOTI1N2ExMzhhIDEwMDY0NFxcbi0tLSBhL2ZzL2hmcy9pbm9kZS5jXFxuKysrIGIvZnMvaGZzL2lub2RlLmNcXG5AQCAtMzY3LDYgKzM2Nyw5IEBAIHN0YXRpYyBpbnQgaGZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCAqZGF0YSlcXG4gXFx0cmVjID0gaWRhdGEtXFx1MDAzZXJlYztcXG4gXFx0c3dpdGNoIChyZWMtXFx1MDAzZXR5cGUpIHtcXG4gXFx0Y2FzZSBIRlNfQ0RSX0ZJTDpcXG4rXFx0XFx0aWYgKCFoZnNfaXNfdmFsaWRfY25pZChiZTMyX3RvX2NwdShyZWMtXFx1MDAzZWZpbGUuRmxOdW0pLCByZWMtXFx1MDAzZXR5cGUpKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4rXFxuIFxcdFxcdGlmICghSEZTX0lTX1JTUkMoaW5vZGUpKSB7XFxuIFxcdFxcdFxcdGhmc19pbm9kZV9yZWFkX2ZvcmsoaW5vZGUsIHJlYy1cXHUwMDNlZmlsZS5FeHRSZWMsIHJlYy1cXHUwMDNlZmlsZS5MZ0xlbixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgIHJlYy1cXHUwMDNlZmlsZS5QeUxlbiwgYmUxNl90b19jcHUocmVjLVxcdTAwM2VmaWxlLkNscFNpemUpKTtcXG5AQCAtMzkwLDYgKzM5Myw5IEBAIHN0YXRpYyBpbnQgaGZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCAqZGF0YSlcXG4gXFx0XFx0aW5vZGUtXFx1MDAzZWlfbWFwcGluZy1cXHUwMDNlYV9vcHMgPSBcXHUwMDI2aGZzX2FvcHM7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEhGU19DRFJfRElSOlxcbitcXHRcXHRpZiAoIWhmc19pc192YWxpZF9jbmlkKGJlMzJfdG9fY3B1KHJlYy1cXHUwMDNlZGlyLkRpcklEKSwgcmVjLVxcdTAwM2V0eXBlKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcbiBcXHRcXHRpbm9kZS1cXHUwMDNlaV9pbm8gPSBiZTMyX3RvX2NwdShyZWMtXFx1MDAzZWRpci5EaXJJRCk7XFxuIFxcdFxcdGlub2RlLVxcdTAwM2VpX3NpemUgPSBiZTE2X3RvX2NwdShyZWMtXFx1MDAzZWRpci5WYWwpICsgMjtcXG4gXFx0XFx0SEZTX0koaW5vZGUpLVxcdTAwM2Vmc19ibG9ja3MgPSAwO1xcbkBAIC01NzEsMTIgKzU3NywxMiBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqaGZzX2ZpbGVfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuIFxcdHJlcyA9IGhmc19icmVjX3JlYWQoXFx1MDAyNmZkLCBcXHUwMDI2cmVjLCBzaXplb2YocmVjKSk7XFxuIFxcdGlmICghcmVzKSB7XFxuIFxcdFxcdHN0cnVjdCBoZnNfaWdldF9kYXRhIGlkYXRhID0geyBOVUxMLCBcXHUwMDI2cmVjIH07XFxuLVxcdFxcdGhmc19yZWFkX2lub2RlKGlub2RlLCBcXHUwMDI2aWRhdGEpO1xcbitcXHRcXHRyZXMgPSBoZnNfcmVhZF9pbm9kZShpbm9kZSwgXFx1MDAyNmlkYXRhKTtcXG4gXFx0fVxcbiBcXHRoZnNfZmluZF9leGl0KFxcdTAwMjZmZCk7XFxuLVxcdGlmIChyZXMpIHtcXG4rXFx0aWYgKHJlcyB8fCBpc19iYWRfaW5vZGUoaW5vZGUpKSB7XFxuIFxcdFxcdGlwdXQoaW5vZGUpO1xcbi1cXHRcXHRyZXR1cm4gRVJSX1BUUihyZXMpO1xcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlPKTtcXG4gXFx0fVxcbiBcXHRIRlNfSShpbm9kZSktXFx1MDAzZXJzcmNfaW5vZGUgPSBkaXI7XFxuIFxcdEhGU19JKGRpciktXFx1MDAzZXJzcmNfaW5vZGUgPSBpbm9kZTtcXG5kaWZmIC0tZ2l0IGEvZnMvaGZzL3N1cGVyLmMgYi9mcy9oZnMvc3VwZXIuY1xcbmluZGV4IGE0NjZjNDAxZjZiYjI2Li45OGI4MDc5NWJjZGU5YSAxMDA2NDRcXG4tLS0gYS9mcy9oZnMvc3VwZXIuY1xcbisrKyBiL2ZzL2hmcy9zdXBlci5jXFxuQEAgLTM3Miw2ICszNzIsMTEgQEAgc3RhdGljIGludCBoZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuIFxcdGlmICghcm9vdF9pbm9kZSlcXG4gXFx0XFx0Z290byBiYWlsX25vX3Jvb3Q7XFxuIFxcbitcXHRpZiAoaXNfYmFkX2lub2RlKHJvb3RfaW5vZGUpKSB7XFxuK1xcdFxcdGlwdXQocm9vdF9pbm9kZSk7XFxuK1xcdFxcdGdvdG8gYmFpbF9ub19yb290O1xcbitcXHR9XFxuK1xcbiBcXHRzZXRfZGVmYXVsdF9kX29wKHNiLCBcXHUwMDI2aGZzX2RlbnRyeV9vcGVyYXRpb25zKTtcXG4gXFx0cmVzID0gLUVOT01FTTtcXG4gXFx0c2ItXFx1MDAzZXNfcm9vdCA9IGRfbWFrZV9yb290KHJvb3RfaW5vZGUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxNDoxMDozOC4wMTU5OTU0NTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMTU4OTc4OTEwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRcIixcbiAgICBcImhmc19jYXRfZmluZF9icmVjXCIsXG4gICAgXCJoZnNfcmVhZF9pbm9kZVwiLFxuICAgIFwiaGZzX2ZpbGVfbG9va3VwXCIsXG4gICAgXCJoZnNfZmlsbF9zdXBlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgQ05JRCBpbiBIRlMgY2F0YWxvZyByZWNvcmRzIGFuZCBpbm9kZXMgdG8gcHJldmVudCB1c2luZyBpbnZhbGlkIG9yIGNvcnJ1cHRlZCBjYXRhbG9nIHJlY29yZHMuIEl0IG1vZGlmaWVzIGNvcmUgSEZTIGZ1bmN0aW9ucyBsaWtlIGhmc19yZWFkX2lub2RlLCBoZnNfY2F0X2ZpbmRfYnJlYywgYW5kIGhmc19maWxsX3N1cGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIEhGUyBmaWxlc3lzdGVtIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IHZhbGlkYXRpb24gbG9naWMgd29ya3MgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxNjM3MzQyNDQwMzgzMjY2YjZjNGZlNGNmZjFmZDJmMmMxN2M2MDlmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgNiAxNDoxMDozNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2hmcy9jYXRhbG9nLmMgYi9mcy9oZnMvY2F0YWxvZy5jXG5pbmRleCAxYmZhMzZkNzFlMjQ3YS4uNTBlZTcwOWQ5NjZmNjMgMTAwNjQ0XG4tLS0gYS9mcy9oZnMvY2F0YWxvZy5jXG4rKysgYi9mcy9oZnMvY2F0YWxvZy5jXG5AQCAtMTgyLDYgKzE4Miw0MyBAQCBpbnQgaGZzX2NhdF9rZXljbXAoY29uc3QgYnRyZWVfa2V5ICprZXkxLCBjb25zdCBidHJlZV9rZXkgKmtleTIpXG4gXHRcdFx0ICBrZXkyLVx1MDAzZWNhdC5DTmFtZS5uYW1lLCBrZXkyLVx1MDAzZWNhdC5DTmFtZS5sZW4pO1xuIH1cbiBcbitzdGF0aWMgaW50IGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZChzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsIHUzMiBjbmlkKVxuK3tcbitcdGhmc19jYXRfcmVjIHJlYztcbitcdHUzMiBmb3VuZF9jbmlkO1xuK1x0c2l6ZV90IHJlY19sZW47XG4rXG4rXHRpZiAoZmQtXHUwMDNlZW50cnlsZW5ndGggXHUwMDNjPSAwKVxuK1x0XHRyZXR1cm4gLUVJTztcbitcbitcdHJlY19sZW4gPSBmZC1cdTAwM2VlbnRyeWxlbmd0aDtcbitcdGlmIChyZWNfbGVuIFx1MDAzZSBzaXplb2YocmVjKSlcbitcdFx0cmV0dXJuIC1FSU87XG4rXG4rXHRtZW1zZXQoXHUwMDI2cmVjLCAwLCBzaXplb2YocmVjKSk7XG4rXHRoZnNfYm5vZGVfcmVhZChmZC1cdTAwM2Vibm9kZSwgXHUwMDI2cmVjLCBmZC1cdTAwM2VlbnRyeW9mZnNldCwgcmVjX2xlbik7XG4rXG4rXHRzd2l0Y2ggKHJlYy50eXBlKSB7XG4rXHRjYXNlIEhGU19DRFJfRklMOlxuK1x0XHRpZiAocmVjX2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBoZnNfY2F0X2ZpbGUpKVxuK1x0XHRcdHJldHVybiAtRUlPO1xuK1x0XHRmb3VuZF9jbmlkID0gYmUzMl90b19jcHUocmVjLmZpbGUuRmxOdW0pO1xuK1x0XHRicmVhaztcbitcdGNhc2UgSEZTX0NEUl9ESVI6XG4rXHRcdGlmIChyZWNfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IGhmc19jYXRfZGlyKSlcbitcdFx0XHRyZXR1cm4gLUVJTztcbitcdFx0Zm91bmRfY25pZCA9IGJlMzJfdG9fY3B1KHJlYy5kaXIuRGlySUQpO1xuK1x0XHRicmVhaztcbitcdGRlZmF1bHQ6XG4rXHRcdHJldHVybiAtRUlPO1xuK1x0fVxuK1xuK1x0aWYgKGZvdW5kX2NuaWQgIT0gY25pZClcbitcdFx0cmV0dXJuIC1FSU87XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gLyogVHJ5IHRvIGdldCBhIGNhdGFsb2cgZW50cnkgZm9yIGdpdmVuIGNhdGFsb2cgaWQgKi9cbiAvLyBtb3ZlIHRvIHJlYWRfc3VwZXI/Pz9cbiBpbnQgaGZzX2NhdF9maW5kX2JyZWMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsXG5AQCAtMjA4LDcgKzI0NSwxMiBAQCBpbnQgaGZzX2NhdF9maW5kX2JyZWMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsXG4gXHRcdHJldHVybiAtRUlPO1xuIFx0fVxuIFx0bWVtY3B5KGZkLVx1MDAzZXNlYXJjaF9rZXktXHUwMDNlY2F0LkNOYW1lLm5hbWUsIHJlYy50aHJlYWQuQ05hbWUubmFtZSwgbGVuKTtcbi1cdHJldHVybiBoZnNfYnJlY19maW5kKGZkKTtcbitcbitcdHJlcyA9IGhmc19icmVjX2ZpbmQoZmQpO1xuK1x0aWYgKHJlcylcbitcdFx0cmV0dXJuIHJlcztcbitcbitcdHJldHVybiBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWQoZmQsIGNuaWQpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lXG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2hmc19mcy5oIGIvZnMvaGZzL2hmc19mcy5oXG5pbmRleCBmMzYyNDUxNGZjYjAzMC4uNjcwNjM4ZjE3NDM4Y2UgMTAwNjQ0XG4tLS0gYS9mcy9oZnMvaGZzX2ZzLmhcbisrKyBiL2ZzL2hmcy9oZnNfZnMuaFxuQEAgLTE1NSw2ICsxNTUsMjUgQEAgZXh0ZXJuIGludCBoZnNfY2F0X21vdmUodTMyIGNuaWQsIHN0cnVjdCBpbm9kZSAqc3JjX2RpcixcbiBleHRlcm4gdm9pZCBoZnNfY2F0X2J1aWxkX2tleShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBidHJlZV9rZXkgKmtleSxcbiBcdFx0XHQgICAgICB1MzIgcGFyZW50LCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSk7XG4gXG4rLypcbisgKiBWYWxpZGF0ZSB0aGUgQ05JRCBvZiBhIGNhdGFsb2cgcmVjb3JkLlxuKyAqL1xuK3N0YXRpYyBpbmxpbmUgYm9vbCBoZnNfaXNfdmFsaWRfY25pZCh1MzIgY25pZCwgdTggdHlwZSlcbit7XG4rXHRpZiAobGlrZWx5KGNuaWQgXHUwMDNlPSBIRlNfRklSU1RVU0VSX0NOSUQpKVxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcbitcdHN3aXRjaCAoY25pZCkge1xuK1x0Y2FzZSBIRlNfUk9PVF9DTklEOlxuK1x0XHRyZXR1cm4gdHlwZSA9PSBIRlNfQ0RSX0RJUjtcbitcdGNhc2UgSEZTX0VYVF9DTklEOlxuK1x0Y2FzZSBIRlNfQ0FUX0NOSUQ6XG4rXHRcdHJldHVybiB0eXBlID09IEhGU19DRFJfRklMO1xuK1x0ZGVmYXVsdDpcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0fVxuK31cbitcbiAvKiBkaXIuYyAqL1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGhmc19kaXJfb3BlcmF0aW9ucztcbiBleHRlcm4gY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgaGZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zO1xuZGlmZiAtLWdpdCBhL2ZzL2hmcy9pbm9kZS5jIGIvZnMvaGZzL2lub2RlLmNcbmluZGV4IGFjNGE5MDU1YzVjMGVhLi5lZTEwYTkyNTdhMTM4YSAxMDA2NDRcbi0tLSBhL2ZzL2hmcy9pbm9kZS5jXG4rKysgYi9mcy9oZnMvaW5vZGUuY1xuQEAgLTM2Nyw2ICszNjcsOSBAQCBzdGF0aWMgaW50IGhmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpXG4gXHRyZWMgPSBpZGF0YS1cdTAwM2VyZWM7XG4gXHRzd2l0Y2ggKHJlYy1cdTAwM2V0eXBlKSB7XG4gXHRjYXNlIEhGU19DRFJfRklMOlxuK1x0XHRpZiAoIWhmc19pc192YWxpZF9jbmlkKGJlMzJfdG9fY3B1KHJlYy1cdTAwM2VmaWxlLkZsTnVtKSwgcmVjLVx1MDAzZXR5cGUpKVxuK1x0XHRcdHJldHVybiAtRUlPO1xuK1xuIFx0XHRpZiAoIUhGU19JU19SU1JDKGlub2RlKSkge1xuIFx0XHRcdGhmc19pbm9kZV9yZWFkX2ZvcmsoaW5vZGUsIHJlYy1cdTAwM2VmaWxlLkV4dFJlYywgcmVjLVx1MDAzZWZpbGUuTGdMZW4sXG4gXHRcdFx0XHRcdCAgICByZWMtXHUwMDNlZmlsZS5QeUxlbiwgYmUxNl90b19jcHUocmVjLVx1MDAzZWZpbGUuQ2xwU2l6ZSkpO1xuQEAgLTM5MCw2ICszOTMsOSBAQCBzdGF0aWMgaW50IGhmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpXG4gXHRcdGlub2RlLVx1MDAzZWlfbWFwcGluZy1cdTAwM2VhX29wcyA9IFx1MDAyNmhmc19hb3BzO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgSEZTX0NEUl9ESVI6XG4rXHRcdGlmICghaGZzX2lzX3ZhbGlkX2NuaWQoYmUzMl90b19jcHUocmVjLVx1MDAzZWRpci5EaXJJRCksIHJlYy1cdTAwM2V0eXBlKSlcbitcdFx0XHRyZXR1cm4gLUVJTztcbitcbiBcdFx0aW5vZGUtXHUwMDNlaV9pbm8gPSBiZTMyX3RvX2NwdShyZWMtXHUwMDNlZGlyLkRpcklEKTtcbiBcdFx0aW5vZGUtXHUwMDNlaV9zaXplID0gYmUxNl90b19jcHUocmVjLVx1MDAzZWRpci5WYWwpICsgMjtcbiBcdFx0SEZTX0koaW5vZGUpLVx1MDAzZWZzX2Jsb2NrcyA9IDA7XG5AQCAtNTcxLDEyICs1NzcsMTIgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmhmc19maWxlX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuIFx0cmVzID0gaGZzX2JyZWNfcmVhZChcdTAwMjZmZCwgXHUwMDI2cmVjLCBzaXplb2YocmVjKSk7XG4gXHRpZiAoIXJlcykge1xuIFx0XHRzdHJ1Y3QgaGZzX2lnZXRfZGF0YSBpZGF0YSA9IHsgTlVMTCwgXHUwMDI2cmVjIH07XG4tXHRcdGhmc19yZWFkX2lub2RlKGlub2RlLCBcdTAwMjZpZGF0YSk7XG4rXHRcdHJlcyA9IGhmc19yZWFkX2lub2RlKGlub2RlLCBcdTAwMjZpZGF0YSk7XG4gXHR9XG4gXHRoZnNfZmluZF9leGl0KFx1MDAyNmZkKTtcbi1cdGlmIChyZXMpIHtcbitcdGlmIChyZXMgfHwgaXNfYmFkX2lub2RlKGlub2RlKSkge1xuIFx0XHRpcHV0KGlub2RlKTtcbi1cdFx0cmV0dXJuIEVSUl9QVFIocmVzKTtcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTyk7XG4gXHR9XG4gXHRIRlNfSShpbm9kZSktXHUwMDNlcnNyY19pbm9kZSA9IGRpcjtcbiBcdEhGU19JKGRpciktXHUwMDNlcnNyY19pbm9kZSA9IGlub2RlO1xuZGlmZiAtLWdpdCBhL2ZzL2hmcy9zdXBlci5jIGIvZnMvaGZzL3N1cGVyLmNcbmluZGV4IGE0NjZjNDAxZjZiYjI2Li45OGI4MDc5NWJjZGU5YSAxMDA2NDRcbi0tLSBhL2ZzL2hmcy9zdXBlci5jXG4rKysgYi9mcy9oZnMvc3VwZXIuY1xuQEAgLTM3Miw2ICszNzIsMTEgQEAgc3RhdGljIGludCBoZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4gXHRpZiAoIXJvb3RfaW5vZGUpXG4gXHRcdGdvdG8gYmFpbF9ub19yb290O1xuIFxuK1x0aWYgKGlzX2JhZF9pbm9kZShyb290X2lub2RlKSkge1xuK1x0XHRpcHV0KHJvb3RfaW5vZGUpO1xuK1x0XHRnb3RvIGJhaWxfbm9fcm9vdDtcbitcdH1cbitcbiBcdHNldF9kZWZhdWx0X2Rfb3Aoc2IsIFx1MDAyNmhmc19kZW50cnlfb3BlcmF0aW9ucyk7XG4gXHRyZXMgPSAtRU5PTUVNO1xuIFx0c2ItXHUwMDNlc19yb290ID0gZF9tYWtlX3Jvb3Qocm9vdF9pbm9kZSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxNDoxMDozOC4wMTU5OTc5MDFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjA0NTc0NzgxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBIRlMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIGRpZ2dpbmcgaW50byB0aGUgSEZTIGZpbGVzeXN0ZW0gY29kZS4gU2VlbXMgbGlrZSB0aGUgY29yZSBtb2RpZmljYXRpb25zIGFyZSBmb2N1c2VkIG9uIGFkZGluZyBDTklEIHZhbGlkYXRpb24sIHdoaWNoIGlzIGEgZ29vZCBtb3ZlLiBUaGV5J3JlIHRvdWNoaW5nIGBjYXRhbG9nLmNgLCBgaGZzX2ZzLmhgLCBgaW5vZGUuY2AsIGFuZCBgc3VwZXIuY2AsIHNvIGl0J3MgYSBwcmV0dHkgaW52YXNpdmUgY2hhbmdlIHRvIGhvdyB0aGUgZmlsZXN5c3RlbSBvcGVyYXRlcy5cblxuU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIHRoZXkncmUgaG9va2luZyBpbnRvIGBoZnNfY2F0X2ZpbmRfYnJlY2AsIGBoZnNfcmVhZF9pbm9kZWAsIGBoZnNfZmlsZV9sb29rdXBgLCBhbmQgYGhmc19maWxsX3N1cGVyYC4gQmFzaWNhbGx5LCB0aGV5J3JlIHNwcmlua2xpbmcgYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgYW5kIGBoZnNfaXNfdmFsaWRfY25pZGAgY2hlY2tzIHRocm91Z2hvdXQgdGhlIGlub2RlIGFuZCBjYXRhbG9nIGxvb2t1cCBwcm9jZXNzZXMuIFRoZSBjaGFuZ2UgdG8gYGhmc19maWxlX2xvb2t1cGAgdG8gYWNjb3VudCBmb3IgYSBiYWQgYGhmc19yZWFkX2lub2RlYCByZXR1cm4sIGFuZCBzaW1pbGFyIGNoZWNrcyBvbiB0aGUgcm9vdCBpbm9kZSBpbiBgaGZzX2ZpbGxfc3VwZXJgLCBhcmUgYWxsIGNvbnNpc3RlbnQgd2l0aCBoYXJkZW5pbmcgdGhlIHN5c3RlbSBhZ2FpbnN0IGludmFsaWQgY2F0YWxvZyByZWNvcmRzLiBUaGlzIGlzIGFsbCBhYm91dCBwcmV2ZW50aW5nIGNyYXNoZXMgYW5kIGRhdGEgY29ycnVwdGlvbiBzdGVtbWluZyBmcm9tIHRob3NlIGtpbmRzIG9mIGJhZCByZWNvcmRzLlxuXG5UaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgYnVnIGZpeC4gVGhlcmVmb3JlLCBmdXp6aW5nIGlzIGFic29sdXRlbHkgZXNzZW50aWFsIHRvIGVuc3VyZSBpdHMgc3RhYmlsaXR5IGFuZCByZWxpYWJpbGl0eS4gV2UgbmVlZCB0byBoYW1tZXIgdGhpcyBuZXcgQ05JRCB2YWxpZGF0aW9uIHdpdGggYWxsIHNvcnRzIG9mIGNyYXp5IGlucHV0cyB0byBtYWtlIHN1cmUgaXQgaGFuZGxlcyBldmVyeSBlZGdlIGNhc2Ugd2l0aG91dCBibG93aW5nIHVwLlxuXG5SaWdodCwgbm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBjb25maWcgb3B0aW9ucyBmb3IgSEZTLiBgQ09ORklHX0hGU19GU2AgaXMgdGhlIG1vc3QgbGlrZWx5IGNhbmRpZGF0ZSwgc28gSSdsbCBjaGVjayBgZnMvaGZzL0tjb25maWdgIHRvIGNvbmZpcm0gYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIG9wdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIGZvciBidWlsZCBvciB0ZXN0aW5nIHB1cnBvc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjMxLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMTQ6MTE6MDAuMDYxNzQ4MTYxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1NzA1MDY3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSEZTX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2hmcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2hmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvaGZzL0tjb25maWc6Mjpjb25maWcgSEZTX0ZTXFxuZnMvaGZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiQXBwbGUgTWFjaW50b3NoIGZpbGUgc3lzdGVtIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDE0OjExOjAwLjcxODgxMDgxM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNjA4NTU4OTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSEZTIEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBgSEZTX0ZTYCBjb25maWd1cmF0aW9uLiBUaW1lIHRvIHBpbnBvaW50IHRoZSBrZXkgZnVuY3Rpb24gbW9kaWZpY2F0aW9ucyBhbmQgYWRkaXRpb25zLiBCYXNlZCBvbiB0aGUgY29kZSwgaXQgc2VlbXMgbGlrZSBgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkYCBpcyBhIG5ld2x5IGludHJvZHVjZWQgZnVuY3Rpb24uIEkgY2FuIGFsc28gc2VlIHRoYXQgYGhmc19jYXRfZmluZF9icmVjYCwgYGhmc19pc192YWxpZF9jbmlkYCwgYGhmc19yZWFkX2lub2RlYCwgYGhmc19maWxlX2xvb2t1cGAsIGFuZCBgaGZzX2ZpbGxfc3VwZXJgIGhhdmUgYWxsIGJlZW4gdG91Y2hlZC5cblxuTm93LCBsZXQncyBkZXRlcm1pbmUgdGhlIHNjb3BlIG9mIHRoZXNlIGZ1bmN0aW9ucy4gYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgaXMgc3RhdGljIOKAkyB0aGF0IG5hcnJvd3MgaXRzIHBvdGVudGlhbCBpbXBhY3QuIGBoZnNfY2F0X2ZpbmRfYnJlY2AgaXMgZXhwb3J0ZWQsIG1lYW5pbmcgaXQncyBnbG9iYWwgYW5kIGNvdWxkIGJlIGNhbGxlZCBmcm9tIGFueXdoZXJlLiBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCwgYW5kIGBoZnNfZmlsbF9zdXBlcmAgYXJlIGFsbCBzdGF0aWMsIGtlZXBpbmcgdGhlaXIgc2NvcGUgbW9yZSBsaW1pdGVkLlxuXG5TaW5jZSBgaGZzX2NhdF9maW5kX2JyZWNgIGlzIGV4cG9ydGVkLCB0aGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0IGRpZ2dpbmcgaW4gb3JkZXIgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBpcyBpbmZsdWVuY2luZyB0aGUgZmlsZXN5c3RlbSBiZWhhdmlvci4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlIGluIGBmcy9oZnMvY2F0YWxvZy5jYCBmb3IgdGhpcyBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM0NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxNDoxMTo0MS4zMjczNzE2MTFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA4NDQ3NDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhmc19jYXRfZmluZF9icmVjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2hmcy9jYXRhbG9nLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaGZzL2NhdGFsb2cuYz0xODU9c3RhdGljIGludCBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWQoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLCB1MzIgY25pZClcXG4tLVxcbmZzL2hmcy9jYXRhbG9nLmMtMjIzLS8vIG1vdmUgdG8gcmVhZF9zdXBlcj8/P1xcbmZzL2hmcy9jYXRhbG9nLmM6MjI0OmludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcXG5mcy9oZnMvY2F0YWxvZy5jLTIyNS1cXHRcXHQgICAgICBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDE0OjExOjQxLjUzNTgyNDQ0NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NDMxNjczNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBIRlMrIElub2RlIE9wZXJhdGlvbnMqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhlIEhGUysgZmlsZXN5c3RlbSBoYW5kbGVzIGlub2RlIG9wZXJhdGlvbnMsIHNwZWNpZmljYWxseSBmaWxlIGxvb2t1cHMgYW5kIHRoZSByZWFkIHByb2Nlc3MuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYGZzL2hmcy9pbm9kZS5jYC4gVGhhdCdzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbnMgZm9yIGBoZnNfcmVhZF9pbm9kZWAsIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgYWN0dWFsbHkgcmVhZGluZyBhbiBpbm9kZSdzIGRhdGEgZnJvbSBkaXNrIGFuZCBwb3B1bGF0aW5nIHRoZSBgaW5vZGVgIHN0cnVjdHVyZSwgYW5kIGBoZnNfZmlsZV9sb29rdXBgLCB3aGljaCBJJ20gcHJldHR5IGNlcnRhaW4gaGFuZGxlcyB0aGUgY3J1Y2lhbCBzdGVwIG9mIGxvY2F0aW5nIGEgZmlsZSdzIGlub2RlIHdpdGhpbiB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZS4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHR3byB3b3JrIGluIGNvbmNlcnQsIHBhcnRpY3VsYXJseSB0aGUgaW50ZXJwbGF5IGJldHdlZW4gdGhlIEItdHJlZSB0cmF2ZXJzYWwgdXNlZCBmb3IgbG9va3VwcyBhbmQgdGhlIGlub2RlIGxvYWRpbmcgcHJvY2VzcyBpdHNlbGYuIEkgd2FudCB0byBzZWUgaWYgdGhlIGNhY2hpbmcgc3RyYXRlZ2llcyBhcmUgc2Vuc2libGUuIFRoaXMnbGwgcmVxdWlyZSBhIGNsb3NlIGxvb2sgYXQgaG93IHRoZSBjb2RlIG1hbmFnZXMgZGF0YSBidWZmZXJzLCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBhbmQgZXJyb3IgaGFuZGxpbmcgZHVyaW5nIEkvTy4gQW55IGNsZXZlciBvcHRpbWl6YXRpb24gaXMgYWxzbyBzb21ldGhpbmcgSSdkIHdhbnQgdG8gY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMTgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxNDoxMTo0NS4zNzg5OTM5NjZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAxNDc0NjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhmc19yZWFkX2lub2RlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2hmcy9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2hmcy9pbm9kZS5jPTMyNT1zdGF0aWMgaW50IGhmc190ZXN0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpXFxuLS1cXG5mcy9oZnMvaW5vZGUuYy0zNDItLypcXG5mcy9oZnMvaW5vZGUuYzozNDM6ICogaGZzX3JlYWRfaW5vZGVcXG5mcy9oZnMvaW5vZGUuYy0zNDQtICovXFxuZnMvaGZzL2lub2RlLmM6MzQ1OnN0YXRpYyBpbnQgaGZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCAqZGF0YSlcXG5mcy9oZnMvaW5vZGUuYy0zNDYte1xcbi0tXFxuZnMvaGZzL2lub2RlLmM9NDI1PXN0cnVjdCBpbm9kZSAqaGZzX2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGhmc19jYXRfa2V5ICprZXksIGhmc19jYXRfcmVjICpyZWMpXFxuLS1cXG5mcy9oZnMvaW5vZGUuYy00NDAtXFx0fVxcbmZzL2hmcy9pbm9kZS5jOjQ0MTpcXHRpbm9kZSA9IGlnZXQ1X2xvY2tlZChzYiwgY25pZCwgaGZzX3Rlc3RfaW5vZGUsIGhmc19yZWFkX2lub2RlLCBcXHUwMDI2ZGF0YSk7XFxuZnMvaGZzL2lub2RlLmMtNDQyLVxcdGlmIChpbm9kZSBcXHUwMDI2XFx1MDAyNiAoaW5vZGVfc3RhdGVfcmVhZF9vbmNlKGlub2RlKSBcXHUwMDI2IElfTkVXKSlcXG4tLVxcbmZzL2hmcy9pbm9kZS5jPTU1Mj1zdGF0aWMgc3RydWN0IGRlbnRyeSAqaGZzX2ZpbGVfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuLS1cXG5mcy9oZnMvaW5vZGUuYy01NzktXFx0XFx0c3RydWN0IGhmc19pZ2V0X2RhdGEgaWRhdGEgPSB7IE5VTEwsIFxcdTAwMjZyZWMgfTtcXG5mcy9oZnMvaW5vZGUuYzo1ODA6XFx0XFx0cmVzID0gaGZzX3JlYWRfaW5vZGUoaW5vZGUsIFxcdTAwMjZpZGF0YSk7XFxuZnMvaGZzL2lub2RlLmMtNTgxLVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMTQ6MTE6NDUuNTgwNDc2NjY2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI1NDcxMzIxOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipEaXZpbmcgaW50byB0aGUgSEZTKyBGaWxlc3lzdGVtIFN1cGVyYmxvY2sgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIEhGUysgc3VwZXJibG9jayBpbml0aWFsaXphdGlvbi4gSSBrbm93IHRoYXQgYGZzL2hmcy9zdXBlci5jYCBpcyB0aGUgbGlrZWx5IHBsYWNlIHRvIGZpbmQgdGhlIGBoZnNfZmlsbF9zdXBlcmAgZnVuY3Rpb24uIFRoYXQncyB0aGUgb25lIHRoYXQgaGFuZGxlcyBwb3B1bGF0aW5nIHRoZSBzdXBlcmJsb2NrIGRhdGEgc3RydWN0dXJlIHdoZW4gbW91bnRpbmcgdGhlIGZpbGVzeXN0ZW0sIHNvIGl0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUga2VybmVsIHJlY29nbml6ZXMgYW5kIHNldHMgdXAgYW4gSEZTKyB2b2x1bWUuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgaG93IGl0IGhhbmRsZXMgdGhpbmdzIGxpa2UgdGhlIHZvbHVtZSBoZWFkZXIsIGFsbG9jYXRpb24gYml0bWFwcywgY2F0YWxvZyB0cmVlcywgYW5kIGFsbCB0aGF0IGZ1biBzdHVmZi4gTGV0J3Mgc2VlIHdoYXQgaW50ZXJlc3RpbmcgdHJpY2tzIG9yIG9wdGltaXphdGlvbnMgYXJlIGluIHBsYXkgdGhlcmUuIEknbSBlc3BlY2lhbGx5IGN1cmlvdXMgYWJvdXQgYW55IHBvdGVudGlhbCBnb3RjaGFzIG9yIGVkZ2UgY2FzZXMgdGhlIGNvZGUgbWlnaHQgYWRkcmVzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc0MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDE0OjExOjU4LjEyNzYxMDg2OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcwMTQ1NDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhmc19maWxsX3N1cGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2hmcy9zdXBlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2hmcy9zdXBlci5jPTIyMD1zdGF0aWMgaW50IGhmc19wYXJzZV9wYXJhbShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBmc19wYXJhbWV0ZXIgKnBhcmFtKVxcbi0tXFxuZnMvaGZzL3N1cGVyLmMtMzE1LSAqL1xcbmZzL2hmcy9zdXBlci5jOjMxNjpzdGF0aWMgaW50IGhmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG5mcy9oZnMvc3VwZXIuYy0zMTcte1xcbi0tXFxuZnMvaGZzL3N1cGVyLmM9Mzk4PXN0YXRpYyBpbnQgaGZzX2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG5mcy9oZnMvc3VwZXIuYy0zOTkte1xcbmZzL2hmcy9zdXBlci5jOjQwMDpcXHRyZXR1cm4gZ2V0X3RyZWVfYmRldihmYywgaGZzX2ZpbGxfc3VwZXIpO1xcbmZzL2hmcy9zdXBlci5jLTQwMS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDE0OjExOjU4LjI5Nzc2NjU3OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTA1NTE5MDM0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciB0aGUgSEZTIEZpbGVzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gZm9yIGEgZnV6emluZyBwbGFuLiBUaGlzIHBhdGNoIGludHJvZHVjZXMgQ05JRCB2YWxpZGF0aW9uIHdpdGhpbiB0aGUgSEZTIGZpbGVzeXN0ZW0sIHdoaWNoIG1lYW5zIHdlIG5lZWQgdG8gZW5zdXJlIHRoaXMgbmV3IGxvZ2ljIGlzIHJvYnVzdCBhbmQgZG9lc24ndCBjcmVhdGUgYW55IG5ldyB2dWxuZXJhYmlsaXRpZXMgb3IgcmVncmVzc2lvbnMuIEJhc2VkIG9uIHRoZSBzb3VyY2UgYW5kIG15IHVuZGVyc3RhbmRpbmcsIHRoZSBrZXkgZnVuY3Rpb25zIHRvIHRhcmdldCBhcmU6XG5cbiogICBgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkYFxuKiAgIGBoZnNfY2F0X2ZpbmRfYnJlY2BcbiogICBgaGZzX3JlYWRfaW5vZGVgXG4qICAgYGhmc19maWxlX2xvb2t1cGBcbiogICBgaGZzX2ZpbGxfc3VwZXJgXG5cbmBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRgIGlzIHN0YXRpYywgYnV0IHNpbmNlIHN5emthbGxlciBjYW4gcmVzb2x2ZSBpdCwgd2UgbWF5IGFzIHdlbGwgaW5jbHVkZSBpdCBpbiBvdXIgZnVuY3Rpb24gbGlzdC4gV2UgbmVlZCB0byBtYWtlIHN1cmUgU3l6a2FsbGVyIGhhcyBubyBpc3N1ZXMgcmVzb2x2aW5nIGl0LCBvdGhlcndpc2UsIHdlIHdvdWxkIGRyb3AgaXQuXG5cblRoZSBmdW5jdGlvbnMgYGhmc19yZWFkX2lub2RlYCwgYGhmc19jYXRfZmluZF9icmVjYCwgYW5kIGBoZnNfZmlsbF9zdXBlcmAgYXJlIGJlaW5nIGRpcmVjdGx5IG1vZGlmaWVkIHdpdGggdGhpcyBhZGRlZCB2YWxpZGF0aW9uLiBUaGVyZWZvcmUsIHdlIHNob3VsZCBkZWZpbml0ZWx5IHByaW9yaXRpemUgdGhlbSB3aGVuIHNldHRpbmcgdXAgdGhlIGZ1enppbmcgdGFyZ2V0cy4gYGhmc19maWxlX2xvb2t1cGAgaXMgYWxzbyBpbXBvcnRhbnQgYXMgaXQgaXMgbGlrZWx5IGludm9sdmVkIGluIHRoZSBsb29rdXAgb2YgY2F0YWxvZyByZWNvcmRzLCB3aGljaCB3b3VsZCBiZSBhZmZlY3RlZCBieSB0aGUgYWRkZWQgdmFsaWRhdGlvbi4gYGhmc19maWxsX3N1cGVyYCB3b3VsZCBhbHNvIGJlIGluY2x1ZGVkIGFzIGl0IGludm9sdmVzIHRoZSBtb3VudGluZyBhbmQgaW50aWFsaXphdGlvbiBvZiB0aGUgZmlsZSBzeXN0ZW0uXG5cblRoZSByZWxldmFudCBjb25maWcgb3B0aW9uIGlzIGBIRlNfRlNgLiBXZSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGVuYWJsZWQgaW4gdGhlIGZ1enppbmcgZW52aXJvbm1lbnQgdG8gZXhlcmNpc2UgdGhlIGNvZGUuIFRoaXMgd2lsbCBiZSB0aGUgZmlyc3Qgc3RlcCBpbiBzZXR0aW5nIHVwIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LlxuXG5UaGUgZnVuZGFtZW50YWwgZ29hbCBoZXJlIGlzIHRvIGZlZWQgdGhlIGZ1enplciBhIGRpdmVyc2Ugc2V0IG9mIGlucHV0cywgZXNwZWNpYWxseSBjcmFmdGVkIHRvIHRlc3QgdGhlIG5ldyBDTklEIHZhbGlkYXRpb24gY2hlY2tzLCBhbmQgd2F0Y2ggZm9yIGFueSBjcmFzaGVzLCBoYW5ncywgb3IgdW5leHBlY3RlZCBiZWhhdmlvciB3aXRoaW4gdGhlc2UgY3JpdGljYWwgSEZTIGZ1bmN0aW9ucy4gV2UnbGwgYmUgb24gdGhlIGxvb2tvdXQgZm9yIGVkZ2UgY2FzZXMgYW5kIGNvcnJ1cHRlZCBkYXRhIHRoYXQgY291bGQgcG90ZW50aWFsbHkgYnlwYXNzIG9yIHRyaWdnZXIgZmxhd3MgaW4gdGhlIHZhbGlkYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxODMsIk91dHB1dFRva2VucyI6MTc1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDE0OjEyOjE5LjM1Mjk1OTc2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUyODE5MzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRcIixcbiAgICBcImhmc19jYXRfZmluZF9icmVjXCIsXG4gICAgXCJoZnNfcmVhZF9pbm9kZVwiLFxuICAgIFwiaGZzX2ZpbGVfbG9va3VwXCIsXG4gICAgXCJoZnNfZmlsbF9zdXBlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgQ05JRCBpbiBIRlMgY2F0YWxvZyByZWNvcmRzIGFuZCBpbm9kZXMgdG8gcHJldmVudCB1c2luZyBpbnZhbGlkIG9yIGNvcnJ1cHRlZCBjYXRhbG9nIHJlY29yZHMuIEl0IG1vZGlmaWVzIGNvcmUgSEZTIGZ1bmN0aW9ucyBsaWtlIGhmc19yZWFkX2lub2RlLCBoZnNfY2F0X2ZpbmRfYnJlYywgYW5kIGhmc19maWxsX3N1cGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIEhGUyBmaWxlc3lzdGVtIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IHZhbGlkYXRpb24gbG9naWMgd29ya3MgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRcIixcbiAgICBcImhmc19jYXRfZmluZF9icmVjXCIsXG4gICAgXCJoZnNfcmVhZF9pbm9kZVwiLFxuICAgIFwiaGZzX2ZpbGVfbG9va3VwXCIsXG4gICAgXCJoZnNfZmlsbF9zdXBlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgQ05JRCBpbiBIRlMgY2F0YWxvZyByZWNvcmRzIGFuZCBpbm9kZXMgdG8gcHJldmVudCB1c2luZyBpbnZhbGlkIG9yIGNvcnJ1cHRlZCBjYXRhbG9nIHJlY29yZHMuIEl0IG1vZGlmaWVzIGNvcmUgSEZTIGZ1bmN0aW9ucyBsaWtlIGhmc19yZWFkX2lub2RlLCBoZnNfY2F0X2ZpbmRfYnJlYywgYW5kIGhmc19maWxsX3N1cGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIEhGUyBmaWxlc3lzdGVtIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IHZhbGlkYXRpb24gbG9naWMgd29ya3MgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowznvww[1] Phase: Succeeded StartedAt: 2026-07-06 14:12:31 +0000 UTC FinishedAt: 2026-07-06 14:12:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvww[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-06 14:12:31 +0000 UTC FinishedAt: 2026-07-06 14:12:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvww[2] Phase: Succeeded StartedAt: 2026-07-06 14:12:31 +0000 UTC FinishedAt: 2026-07-06 18:43:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 14:12:31 +0000 UTC FinishedAt: 2026-07-06 18:43:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 14:12:31 +0000 UTC FinishedAt: 2026-07-06 14:13:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 14:12:31 +0000 UTC FinishedAt: 2026-07-06 14:13:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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-workflowznvww/series-workflowznvww-convert-artifact-4035653590/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 14:13:16 +0000 UTC FinishedAt: 2026-07-06 14:56:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 14:13:16 +0000 UTC FinishedAt: 2026-07-06 14:56:33 +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:*d8cf5c74-ba17-452c-af0a-a63dd3f75765,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-workflowznvww/series-workflowznvww-convert-artifact-4035653590/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": "77b85de9-1865-4859-af85-823ba9ea0010", "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-workflowznvww/series-workflowznvww-build-action-699403372/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 14:13:16 +0000 UTC FinishedAt: 2026-07-06 14:56:22 +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:*d8cf5c74-ba17-452c-af0a-a63dd3f75765,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-workflowznvww/series-workflowznvww-convert-artifact-4035653590/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": "77b85de9-1865-4859-af85-823ba9ea0010", "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-workflowznvww/series-workflowznvww-build-action-699403372/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 14:56:33 +0000 UTC FinishedAt: 2026-07-06 14:56:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 14:56:34 +0000 UTC FinishedAt: 2026-07-06 14:56:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 14:56:34 +0000 UTC FinishedAt: 2026-07-06 14:57:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 14:56:34 +0000 UTC FinishedAt: 2026-07-06 14:56:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-workflowznvww/series-workflowznvww-convert-artifact-2235209577/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 14:57:29 +0000 UTC FinishedAt: 2026-07-06 14:59:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 14:57:29 +0000 UTC FinishedAt: 2026-07-06 14:59:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*77b85de9-1865-4859-af85-823ba9ea0010,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-workflowznvww/series-workflowznvww-build-action-699403372/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-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 14:59:38 +0000 UTC FinishedAt: 2026-07-06 14:59:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 14:59:38 +0000 UTC FinishedAt: 2026-07-06 14:59:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 14:59:38 +0000 UTC FinishedAt: 2026-07-06 15:38:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 14:59:38 +0000 UTC FinishedAt: 2026-07-06 15:38:37 +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:*d8cf5c74-ba17-452c-af0a-a63dd3f75765,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-workflowznvww/series-workflowznvww-convert-artifact-2235209577/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": "b6091d2f-a440-4650-b182-abda851a383a", "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-workflowznvww/series-workflowznvww-build-action-2431571781/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 14:59:38 +0000 UTC FinishedAt: 2026-07-06 15:38:27 +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:*d8cf5c74-ba17-452c-af0a-a63dd3f75765,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-workflowznvww/series-workflowznvww-convert-artifact-2235209577/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": "b6091d2f-a440-4650-b182-abda851a383a", "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-workflowznvww/series-workflowznvww-build-action-2431571781/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 15:38:37 +0000 UTC FinishedAt: 2026-07-06 15:38:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 15:38:37 +0000 UTC FinishedAt: 2026-07-06 15:38:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 15:38:37 +0000 UTC FinishedAt: 2026-07-06 15:40:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 15:38:37 +0000 UTC FinishedAt: 2026-07-06 15:40: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:*b6091d2f-a440-4650-b182-abda851a383a,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-workflowznvww/series-workflowznvww-build-action-2431571781/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-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 15:40:42 +0000 UTC FinishedAt: 2026-07-06 18:43:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 15:40:42 +0000 UTC FinishedAt: 2026-07-06 18:43:29 +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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"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:*77b85de9-1865-4859-af85-823ba9ea0010,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b6091d2f-a440-4650-b182-abda851a383a,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-workflowznvww/series-workflowznvww-build-action-699403372/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-workflowznvww/series-workflowznvww-build-action-2431571781/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 15:40:42 +0000 UTC FinishedAt: 2026-07-06 15:41:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 15:40:42 +0000 UTC FinishedAt: 2026-07-06 15:40:51 +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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"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-workflowznvww/series-workflowznvww-convert-artifact-4254867390/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 15:40:42 +0000 UTC FinishedAt: 2026-07-06 15:40:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 15:40:42 +0000 UTC FinishedAt: 2026-07-06 15:40:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 15:40:42 +0000 UTC FinishedAt: 2026-07-06 15:40:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 15:41:02 +0000 UTC FinishedAt: 2026-07-06 18:43:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvww[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_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_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"0d423c7d-496d-4624-b557-776c19c6e244","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-06 15:41:02 +0000 UTC FinishedAt: 2026-07-06 18:43:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*77b85de9-1865-4859-af85-823ba9ea0010,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b6091d2f-a440-4650-b182-abda851a383a,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-workflowznvww/series-workflowznvww-build-action-699403372/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-workflowznvww/series-workflowznvww-build-action-2431571781/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-workflowznvww/series-workflowznvww-convert-artifact-4254867390/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,}