Name: series-workflow888bd Phase: Succeeded StartedAt: 2026-07-09 10:24:26 +0000 UTC FinishedAt: 2026-07-09 14:53:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow888bd[0] Phase: Succeeded StartedAt: 2026-07-09 10:24:26 +0000 UTC FinishedAt: 2026-07-09 10:33:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow888bd[0].run-triage Phase: Succeeded StartedAt: 2026-07-09 10:24:26 +0000 UTC FinishedAt: 2026-07-09 10:33:04 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BINFMT_MISC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BINFMT_MISC" ], "series_id": "95c9b048-eddd-4250-b1ec-6efa1cb19ea7" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "load_misc_binary", "bm_entry_write", "bm_status_write", "bm_evict_inode", "add_entry", "get_binfmt_handler", "search_binfmt_handler", "remove_binfmt_handler" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDEwOjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JJTkZNVF9NSVNDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bG9hZF9taXNjX2JpbmFyeSYjMzQ7LAogICAgJiMzNDtibV9lbnRyeV93cml0ZSYjMzQ7LAogICAgJiMzNDtibV9zdGF0dXNfd3JpdGUmIzM0OywKICAgICYjMzQ7Ym1fZXZpY3RfaW5vZGUmIzM0OywKICAgICYjMzQ7YWRkX2VudHJ5JiMzNDssCiAgICAmIzM0O2dldF9iaW5mbXRfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtzZWFyY2hfYmluZm10X2hhbmRsZXImIzM0OywKICAgICYjMzQ7cmVtb3ZlX2JpbmZtdF9oYW5kbGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlcyBvZiBgYmluZm10X21pc2NgIGZyb20gYSBkb3VibHktbGlua2VkIGxpc3Qgd2l0aCBhIHJ3bG9jayB0byBhbiBSQ1UtcHJvdGVjdGVkIGhhc2ggbGlzdCB3aXRoIGEgc3BpbmxvY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGNvcmUgbG9naWMgb2YgYGJpbmZtdF9taXNjYCByZWdpc3RyYXRpb24sIHVucmVnaXN0cmF0aW9uLCBhbmQgYmluYXJ5IGV4ZWN1dGlvbi4gSXQgaXMgd29ydGggZnV6emluZyB0byBlbnN1cmUgdGhlIG5ldyBSQ1UgbG9naWMgYW5kIGxvY2tsZXNzIHRyYXZlcnNhbCBkbyBub3QgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucywgdXNlLWFmdGVyLWZyZWUsIG9yIG90aGVyIG1lbW9yeSBzYWZldHkgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDEwOjMyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTI5MTc1Nzg3Mzc3YTc4M2JmMjllZWNmZTQyZjQzYTUzZGM3N2FmZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDkgMTA6MzI6MjUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvYmluZm10X21pc2MuYyBiL2ZzL2JpbmZtdF9taXNjLmNcbmluZGV4IDg0MzQ5ZmNiOTNmMTNhLi4wZjA0NzA5YTBhMzlmNSAxMDA2NDRcbi0tLSBhL2ZzL2JpbmZtdF9taXNjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2JpbmZtdF9taXNjLmNcbkBAIC0yNCw2ICYjNDM7MjQsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BhZ2VtYXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25hbWVpLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb3VudC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JjdWxpc3QuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZzX2NvbnRleHQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3N5c2NhbGxzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXG5AQCAtNDgsNyAmIzQzOzQ5LDcgQEAgZW51bSB7RW5hYmxlZCwgTWFnaWN9O1xuICNkZWZpbmUgTUlTQ19GTVRfT1BFTl9GSUxFICgxVUwgXHUwMDNjXHUwMDNjIDI4KVxuIFxuIHR5cGVkZWYgc3RydWN0IHtcbi1cdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbiYjNDM7XHRzdHJ1Y3QgaGxpc3Rfbm9kZSBub2RlO1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcdFx0LyogdHlwZSwgc3RhdHVzLCBldGMuICovXG4gXHRpbnQgb2Zmc2V0O1x0XHRcdC8qIG9mZnNldCBvZiBtYWdpYyAqL1xuIFx0aW50IHNpemU7XHRcdFx0Lyogc2l6ZSBvZiBtYWdpYy9tYXNrICovXG5AQCAtNTksNiAmIzQzOzYwLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qge1xuIFx0c3RydWN0IGRlbnRyeSAqZGVudHJ5O1xuIFx0c3RydWN0IGZpbGUgKmludGVycF9maWxlO1xuIFx0cmVmY291bnRfdCB1c2VycztcdFx0Lyogc3luYyByZW1vdmFsIHdpdGggbG9hZF9taXNjX2JpbmFyeSgpICovXG4mIzQzO1x0c3RydWN0IHJjdV9oZWFkIHJjdTtcbiB9IE5vZGU7XG4gXG4gc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGJtX2ZzX3R5cGU7XG5AQCAtODYsNiAmIzQzOzg4LDggQEAgc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGJtX2ZzX3R5cGU7XG4gICogU2VhcmNoIGZvciBhIGJpbmFyeSB0eXBlIGhhbmRsZXIgZm9yIEBicHJtIGluIHRoZSBsaXN0IG9mIHJlZ2lzdGVyZWQgYmluYXJ5XG4gICogdHlwZSBoYW5kbGVycy5cbiAgKlxuJiM0MzsgKiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgUkNVIHJlYWQgbG9jay5cbiYjNDM7ICpcbiAgKiBSZXR1cm46IGJpbmFyeSB0eXBlIGxpc3QgZW50cnkgb24gc3VjY2VzcywgTlVMTCBvbiBmYWlsdXJlXG4gICovXG4gc3RhdGljIE5vZGUgKnNlYXJjaF9iaW5mbXRfaGFuZGxlcihzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2MsXG5AQCAtOTUsNyAmIzQzOzk5LDcgQEAgc3RhdGljIE5vZGUgKnNlYXJjaF9iaW5mbXRfaGFuZGxlcihzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2MsXG4gXHROb2RlICplO1xuIFxuIFx0LyogV2FsayBhbGwgdGhlIHJlZ2lzdGVyZWQgaGFuZGxlcnMuICovXG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGUsIFx1MDAyNm1pc2MtXHUwMDNlZW50cmllcywgbGlzdCkge1xuJiM0MztcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShlLCBcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXMsIG5vZGUpIHtcbiBcdFx0Y2hhciAqcztcbiBcdFx0aW50IGo7XG4gXG5AQCAtMTM0LDcgJiM0MzsxMzgsMTAgQEAgc3RhdGljIE5vZGUgKnNlYXJjaF9iaW5mbXRfaGFuZGxlcihzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2MsXG4gICogQGJwcm06IGJpbmFyeSBmb3Igd2hpY2ggd2UgYXJlIGxvb2tpbmcgZm9yIGEgaGFuZGxlclxuICAqXG4gICogVHJ5IHRvIGZpbmQgYSBiaW5mbXQgaGFuZGxlciBmb3IgdGhlIGJpbmFyeSB0eXBlLiBJZiBvbmUgaXMgZm91bmQgdGFrZSBhXG4tICogcmVmZXJlbmNlIHRvIHByb3RlY3QgYWdhaW5zdCByZW1vdmFsIHZpYSBibV97ZW50cnksc3RhdHVzfV93cml0ZSgpLlxuJiM0MzsgKiByZWZlcmVuY2UgdG8gcHJvdGVjdCBhZ2FpbnN0IHJlbW92YWwgdmlhIGJtX3tlbnRyeSxzdGF0dXN9X3dyaXRlKCkuIFRoZVxuJiM0MzsgKiByZWZjb3VudCBvZiBhbiBlbnRyeSBjYW4gb25seSBkcm9wIHRvIHplcm8gb25jZSBpdCBoYXMgYmVlbiB1bmxpbmtlZCBhbmRcbiYjNDM7ICogYSByZXN0YXJ0ZWQgc2VhcmNoIGNhbm5vdCBmaW5kIGFuIHVubGlua2VkIGVudHJ5IGFnYWluIHNvIHRoZSByZXRyeSBsb29wXG4mIzQzOyAqIGlzIGJvdW5kZWQuXG4gICpcbiAgKiBSZXR1cm46IGJpbmFyeSB0eXBlIGxpc3QgZW50cnkgb24gc3VjY2VzcywgTlVMTCBvbiBmYWlsdXJlXG4gICovXG5AQCAtMTQzLDExICYjNDM7MTUwLDEwIEBAIHN0YXRpYyBOb2RlICpnZXRfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLFxuIHtcbiBcdE5vZGUgKmU7XG4gXG4tXHRyZWFkX2xvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuLVx0ZSA9IHNlYXJjaF9iaW5mbXRfaGFuZGxlcihtaXNjLCBicHJtKTtcbi1cdGlmIChlKVxuLVx0XHRyZWZjb3VudF9pbmMoXHUwMDI2ZS1cdTAwM2V1c2Vycyk7XG4tXHRyZWFkX3VubG9jayhcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXNfbG9jayk7XG4mIzQzO1x0Z3VhcmQocmN1KSgpO1xuJiM0MztcdGRvIHtcbiYjNDM7XHRcdGUgPSBzZWFyY2hfYmluZm10X2hhbmRsZXIobWlzYywgYnBybSk7XG4mIzQzO1x0fSB3aGlsZSAoZSBcdTAwMjZcdTAwMjYgIXJlZmNvdW50X2luY19ub3RfemVybyhcdTAwMjZlLVx1MDAzZXVzZXJzKSk7XG4gXHRyZXR1cm4gZTtcbiB9XG4gXG5AQCAtMTY0LDcgJiM0MzsxNzAsOCBAQCBzdGF0aWMgdm9pZCBwdXRfYmluZm10X2hhbmRsZXIoTm9kZSAqZSlcbiBcdGlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2ZS1cdTAwM2V1c2VycykpIHtcbiBcdFx0aWYgKGUtXHUwMDNlZmxhZ3MgXHUwMDI2IE1JU0NfRk1UX09QRU5fRklMRSlcbiBcdFx0XHRmaWxwX2Nsb3NlKGUtXHUwMDNlaW50ZXJwX2ZpbGUsIE5VTEwpO1xuLVx0XHRrZnJlZShlKTtcbiYjNDM7XHRcdC8qIExvY2tsZXNzIHdhbGtlcnMgbWF5IHN0aWxsIGRlcmVmZXJlbmNlIHRoaXMgZW50cnkuICovXG4mIzQzO1x0XHRrZnJlZV9yY3UoZSwgcmN1KTtcbiBcdH1cbiB9XG4gXG5AQCAtMjA4LDcgJiM0MzsyMTUsNyBAQCBzdGF0aWMgaW50IGxvYWRfbWlzY19iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbiBcdHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYztcbiBcbiBcdG1pc2MgPSBsb2FkX2JpbmZtdF9taXNjKCk7XG4tXHRpZiAoIW1pc2MtXHUwMDNlZW5hYmxlZClcbiYjNDM7XHRpZiAoIVJFQURfT05DRShtaXNjLVx1MDAzZWVuYWJsZWQpKVxuIFx0XHRyZXR1cm4gcmV0dmFsO1xuIFxuIFx0Zm10ID0gZ2V0X2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0pO1xuQEAgLTY1NCw4ICYjNDM7NjYxLDggQEAgc3RhdGljIHN0cnVjdCBiaW5mbXRfbWlzYyAqaV9iaW5mbXRfbWlzYyhzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuICAqXG4gICogSWYgdGhlIC1cdTAwM2VldmljdCBjYWxsIHdhcyBub3QgY2F1c2VkIGJ5IGEgc3VwZXIgYmxvY2sgc2h1dGRvd24gYnV0IGJ5IGEgd3JpdGVcbiAgKiB0byByZW1vdmUgdGhlIGVudHJ5IG9yIGFsbCBlbnRyaWVzIHZpYSBibV97ZW50cnksc3RhdHVzfV93cml0ZSgpIHRoZSBlbnRyeVxuLSAqIHdpbGwgaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBsaXN0LiBXZSBrZWVwIHRoZSBsaXN0X2VtcHR5KCkgY2hlY2tcbi0gKiB0byBtYWtlIHRoYXQgZXhwbGljaXQuXG4mIzQzOyAqIHdpbGwgaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBsaXN0LiBXZSBrZWVwIHRoZSBobGlzdF91bmhhc2hlZCgpXG4mIzQzOyAqIGNoZWNrIHRvIG1ha2UgdGhhdCBleHBsaWNpdC5cbiAqL1xuIHN0YXRpYyB2b2lkIGJtX2V2aWN0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4ge1xuQEAgLTY2NywxMCAmIzQzOzY3NCwxMCBAQCBzdGF0aWMgdm9pZCBibV9ldmljdF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuIFx0XHRzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2M7XG4gXG4gXHRcdG1pc2MgPSBpX2JpbmZtdF9taXNjKGlub2RlKTtcbi1cdFx0d3JpdGVfbG9jayhcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXNfbG9jayk7XG4tXHRcdGlmICghbGlzdF9lbXB0eShcdTAwMjZlLVx1MDAzZWxpc3QpKVxuLVx0XHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2ZS1cdTAwM2VsaXN0KTtcbi1cdFx0d3JpdGVfdW5sb2NrKFx1MDAyNm1pc2MtXHUwMDNlZW50cmllc19sb2NrKTtcbiYjNDM7XHRcdHNwaW5fbG9jayhcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXNfbG9jayk7XG4mIzQzO1x0XHRpZiAoIWhsaXN0X3VuaGFzaGVkKFx1MDAyNmUtXHUwMDNlbm9kZSkpXG4mIzQzO1x0XHRcdGhsaXN0X2RlbF9pbml0X3JjdShcdTAwMjZlLVx1MDAzZW5vZGUpO1xuJiM0MztcdFx0c3Bpbl91bmxvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuIFx0XHRwdXRfYmluZm10X2hhbmRsZXIoZSk7XG4gXHR9XG4gfVxuQEAgLTY4OSw5ICYjNDM7Njk2LDkgQEAgc3RhdGljIHZvaWQgYm1fZXZpY3RfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSlcbiAgKi9cbiBzdGF0aWMgdm9pZCByZW1vdmVfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLCBOb2RlICplKVxuIHtcbi1cdHdyaXRlX2xvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuLVx0bGlzdF9kZWxfaW5pdChcdTAwMjZlLVx1MDAzZWxpc3QpO1xuLVx0d3JpdGVfdW5sb2NrKFx1MDAyNm1pc2MtXHUwMDNlZW50cmllc19sb2NrKTtcbiYjNDM7XHRzcGluX2xvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuJiM0MztcdGhsaXN0X2RlbF9pbml0X3JjdShcdTAwMjZlLVx1MDAzZW5vZGUpO1xuJiM0MztcdHNwaW5fdW5sb2NrKFx1MDAyNm1pc2MtXHUwMDNlZW50cmllc19sb2NrKTtcbiBcdGxvY2tlZF9yZWN1cnNpdmVfcmVtb3ZhbChlLVx1MDAzZWRlbnRyeSwgTlVMTCk7XG4gfVxuIFxuQEAgLTc0MiwxMSAmIzQzOzc0OSwxMyBAQCBzdGF0aWMgc3NpemVfdCBibV9lbnRyeV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlcixcbiBcdFx0ICogdmlhIGJtX3tlbnRyeSxyZWdpc3RlcixzdGF0dXN9X3dyaXRlKCkgaW5vZGVfbG9jaygpIG9uIHRoZVxuIFx0XHQgKiByb290IGlub2RlIG11c3QgYmUgaGVsZC5cbiBcdFx0ICogVGhlIGxvY2sgaXMgZXhjbHVzaXZlIGVuc3VyaW5nIHRoYXQgdGhlIGxpc3QgY2FuJiMzOTt0IGJlXG4tXHRcdCAqIG1vZGlmaWVkLiBPbmx5IGxvYWRfbWlzY19iaW5hcnkoKSBjYW4gYWNjZXNzIGJ1dCBkb2VzIHNvXG4tXHRcdCAqIHJlYWQtb25seS4gU28gd2Ugb25seSBuZWVkIHRvIHRha2UgdGhlIHdyaXRlIGxvY2sgd2hlbiB3ZVxuLVx0XHQgKiBhY3R1YWxseSByZW1vdmUgdGhlIGVudHJ5IGZyb20gdGhlIGxpc3QuXG4mIzQzO1x0XHQgKiBtb2RpZmllZC4gT25seSBsb2FkX21pc2NfYmluYXJ5KCkgY2FuIGFjY2VzcyB0aGUgbGlzdFxuJiM0MztcdFx0ICogY29uY3VycmVudGx5IGFuZCBpdCBkb2VzIHNvIHVuZGVyIFJDVS4gU28gZW50cmllc19sb2NrIG9ubHlcbiYjNDM7XHRcdCAqIG5lZWRzIHRvIGJlIGhlbGQgd2hlbiBhbiBlbnRyeSBpcyBhY3R1YWxseSB1bmxpbmtlZCB0b1xuJiM0MztcdFx0ICogc2VyaWFsaXplIGFnYWluc3QgYm1fZXZpY3RfaW5vZGUoKSBkdXJpbmcgdW1vdW50IHdoaWNoXG4mIzQzO1x0XHQgKiB1bmxpbmtzIHdpdGhvdXQgaG9sZGluZyBpbm9kZV9sb2NrLlxuIFx0XHQgKi9cbi1cdFx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNmUtXHUwMDNlbGlzdCkpXG4mIzQzO1x0XHRpZiAoIWhsaXN0X3VuaGFzaGVkKFx1MDAyNmUtXHUwMDNlbm9kZSkpXG4gXHRcdFx0cmVtb3ZlX2JpbmZtdF9oYW5kbGVyKGlfYmluZm10X21pc2MoaW5vZGUpLCBlKTtcbiBcbiBcdFx0aW5vZGVfdW5sb2NrKGlub2RlKTtcbkBAIC03ODksOSAmIzQzOzc5OCw5IEBAIHN0YXRpYyBpbnQgYWRkX2VudHJ5KE5vZGUgKmUsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4gXG4gXHRkX21ha2VfcGVyc2lzdGVudChkZW50cnksIGlub2RlKTtcbiBcdG1pc2MgPSBpX2JpbmZtdF9taXNjKGlub2RlKTtcbi1cdHdyaXRlX2xvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuLVx0bGlzdF9hZGQoXHUwMDI2ZS1cdTAwM2VsaXN0LCBcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXMpO1xuLVx0d3JpdGVfdW5sb2NrKFx1MDAyNm1pc2MtXHUwMDNlZW50cmllc19sb2NrKTtcbiYjNDM7XHRzcGluX2xvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuJiM0MztcdGhsaXN0X2FkZF9oZWFkX3JjdShcdTAwMjZlLVx1MDAzZW5vZGUsIFx1MDAyNm1pc2MtXHUwMDNlZW50cmllcyk7XG4mIzQzO1x0c3Bpbl91bmxvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuIFx0c2ltcGxlX2RvbmVfY3JlYXRpbmcoZGVudHJ5KTtcbiBcdHJldHVybiAwO1xuIH1cbkBAIC04NTQsNyAmIzQzOzg2Myw3IEBAIGJtX3N0YXR1c19yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbmJ5dGVzLCBsb2ZmX3QgKnBwb3MpXG4gXHRjaGFyICpzO1xuIFxuIFx0bWlzYyA9IGlfYmluZm10X21pc2MoZmlsZV9pbm9kZShmaWxlKSk7XG4tXHRzID0gbWlzYy1cdTAwM2VlbmFibGVkID8gXCYjMzQ7ZW5hYmxlZFxcblwmIzM0OyA6IFwmIzM0O2Rpc2FibGVkXFxuXCYjMzQ7O1xuJiM0MztcdHMgPSBSRUFEX09OQ0UobWlzYy1cdTAwM2VlbmFibGVkKSA/IFwmIzM0O2VuYWJsZWRcXG5cJiMzNDsgOiBcJiMzNDtkaXNhYmxlZFxcblwmIzM0OztcbiBcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcihidWYsIG5ieXRlcywgcHBvcywgcywgc3RybGVuKHMpKTtcbiB9XG4gXG5AQCAtODYzLDE4ICYjNDM7ODcyLDE5IEBAIHN0YXRpYyBzc2l6ZV90IGJtX3N0YXR1c193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlcixcbiB7XG4gXHRzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2M7XG4gXHRpbnQgcmVzID0gcGFyc2VfY29tbWFuZChidWZmZXIsIGNvdW50KTtcbi1cdE5vZGUgKmUsICpuZXh0O1xuJiM0MztcdHN0cnVjdCBobGlzdF9ub2RlICpuZXh0O1xuIFx0c3RydWN0IGlub2RlICppbm9kZTtcbiYjNDM7XHROb2RlICplO1xuIFxuIFx0bWlzYyA9IGlfYmluZm10X21pc2MoZmlsZV9pbm9kZShmaWxlKSk7XG4gXHRzd2l0Y2ggKHJlcykge1xuIFx0Y2FzZSAxOlxuIFx0XHQvKiBEaXNhYmxlIGFsbCBoYW5kbGVycy4gKi9cbi1cdFx0bWlzYy1cdTAwM2VlbmFibGVkID0gZmFsc2U7XG4mIzQzO1x0XHRXUklURV9PTkNFKG1pc2MtXHUwMDNlZW5hYmxlZCwgZmFsc2UpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgMjpcbiBcdFx0LyogRW5hYmxlIGFsbCBoYW5kbGVycy4gKi9cbi1cdFx0bWlzYy1cdTAwM2VlbmFibGVkID0gdHJ1ZTtcbiYjNDM7XHRcdFdSSVRFX09OQ0UobWlzYy1cdTAwM2VlbmFibGVkLCB0cnVlKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIDM6XG4gXHRcdC8qIERlbGV0ZSBhbGwgaGFuZGxlcnMuICovXG5AQCAtODg2LDExICYjNDM7ODk2LDEzIEBAIHN0YXRpYyBzc2l6ZV90IGJtX3N0YXR1c193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlcixcbiBcdFx0ICogdmlhIGJtX3tlbnRyeSxyZWdpc3RlcixzdGF0dXN9X3dyaXRlKCkgaW5vZGVfbG9jaygpIG9uIHRoZVxuIFx0XHQgKiByb290IGlub2RlIG11c3QgYmUgaGVsZC5cbiBcdFx0ICogVGhlIGxvY2sgaXMgZXhjbHVzaXZlIGVuc3VyaW5nIHRoYXQgdGhlIGxpc3QgY2FuJiMzOTt0IGJlXG4tXHRcdCAqIG1vZGlmaWVkLiBPbmx5IGxvYWRfbWlzY19iaW5hcnkoKSBjYW4gYWNjZXNzIGJ1dCBkb2VzIHNvXG4tXHRcdCAqIHJlYWQtb25seS4gU28gd2Ugb25seSBuZWVkIHRvIHRha2UgdGhlIHdyaXRlIGxvY2sgd2hlbiB3ZVxuLVx0XHQgKiBhY3R1YWxseSByZW1vdmUgdGhlIGVudHJ5IGZyb20gdGhlIGxpc3QuXG4mIzQzO1x0XHQgKiBtb2RpZmllZC4gT25seSBsb2FkX21pc2NfYmluYXJ5KCkgY2FuIGFjY2VzcyB0aGUgbGlzdFxuJiM0MztcdFx0ICogY29uY3VycmVudGx5IGFuZCBpdCBkb2VzIHNvIHVuZGVyIFJDVS4gU28gZW50cmllc19sb2NrIG9ubHlcbiYjNDM7XHRcdCAqIG5lZWRzIHRvIGJlIGhlbGQgd2hlbiBhbiBlbnRyeSBpcyBhY3R1YWxseSB1bmxpbmtlZCB0b1xuJiM0MztcdFx0ICogc2VyaWFsaXplIGFnYWluc3QgYm1fZXZpY3RfaW5vZGUoKSBkdXJpbmcgdW1vdW50IHdoaWNoXG4mIzQzO1x0XHQgKiB1bmxpbmtzIHdpdGhvdXQgaG9sZGluZyBpbm9kZV9sb2NrLlxuIFx0XHQgKi9cbi1cdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGUsIG5leHQsIFx1MDAyNm1pc2MtXHUwMDNlZW50cmllcywgbGlzdClcbiYjNDM7XHRcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZSwgbmV4dCwgXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzLCBub2RlKVxuIFx0XHRcdHJlbW92ZV9iaW5mbXRfaGFuZGxlcihtaXNjLCBlKTtcbiBcbiBcdFx0aW5vZGVfdW5sb2NrKGlub2RlKTtcbkBAIC05NjUsOCAmIzQzOzk3Nyw4IEBAIHN0YXRpYyBpbnQgYm1fZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4gXHRcdGlmICghbWlzYylcbiBcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbi1cdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzKTtcbi1cdFx0cndsb2NrX2luaXQoXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuJiM0MztcdFx0SU5JVF9ITElTVF9IRUFEKFx1MDAyNm1pc2MtXHUwMDNlZW50cmllcyk7XG4mIzQzO1x0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXNfbG9jayk7XG4gXG4gXHRcdC8qIFBhaXJzIHdpdGggc21wX2xvYWRfYWNxdWlyZSgpIGluIGxvYWRfYmluZm10X21pc2MoKS4gKi9cbiBcdFx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2dXNlcl9ucy1cdTAwM2ViaW5mbXRfbWlzYywgbWlzYyk7XG5AQCAtOTgzLDcgJiM0Mzs5OTUsNyBAQCBzdGF0aWMgaW50IGJtX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuIFx0ICogc29tZW9uZSBtb3VudHMgYmluZm10X21pc2MgZm9yIHRoZSBmaXJzdCB0aW1lIG9yIGFnYWluIHdlIHNpbXBseVxuIFx0ICogcmVzZXQgLVx1MDAzZWVuYWJsZWQgdG8gdHJ1ZS5cbiBcdCAqL1xuLVx0bWlzYy1cdTAwM2VlbmFibGVkID0gdHJ1ZTtcbiYjNDM7XHRXUklURV9PTkNFKG1pc2MtXHUwMDNlZW5hYmxlZCwgdHJ1ZSk7XG4gXG4gXHRlcnIgPSBzaW1wbGVfZmlsbF9zdXBlcihzYiwgQklORk1URlNfTUFHSUMsIGJtX2ZpbGVzKTtcbiBcdGlmICghZXJyKVxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYmluZm10cy5oIGIvaW5jbHVkZS9saW51eC9iaW5mbXRzLmhcbmluZGV4IDJjNzdlMzgzZTczNzU3Li43ZTczMzNiN2JiMGYxMSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYmluZm10cy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaFxuQEAgLTEwMSw4ICYjNDM7MTAxLDggQEAgc3RydWN0IGxpbnV4X2JpbmZtdCB7XG4gXG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX0JJTkZNVF9NSVNDKVxuIHN0cnVjdCBiaW5mbXRfbWlzYyB7XG4tXHRzdHJ1Y3QgbGlzdF9oZWFkIGVudHJpZXM7XG4tXHRyd2xvY2tfdCBlbnRyaWVzX2xvY2s7XG4mIzQzO1x0c3RydWN0IGhsaXN0X2hlYWQgZW50cmllcztcbiYjNDM7XHRzcGlubG9ja190IGVudHJpZXNfbG9jaztcbiBcdGJvb2wgZW5hYmxlZDtcbiB9IF9fcmFuZG9taXplX2xheW91dDtcbiBcbmRpZmYgLS1naXQgYS9rZXJuZWwvdXNlci5jIGIva2VybmVsL3VzZXIuY1xuaW5kZXggN2FlZjRlNjc5YTZhMGMuLjIxYmFmZGMxMTM3OTU2IDEwMDY0NFxuLS0tIGEva2VybmVsL3VzZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL3VzZXIuY1xuQEAgLTIzLDkgJiM0MzsyMyw5IEBAXG4gXG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX0JJTkZNVF9NSVNDKVxuIHN0cnVjdCBiaW5mbXRfbWlzYyBpbml0X2JpbmZtdF9taXNjID0ge1xuLVx0LmVudHJpZXMgPSBMSVNUX0hFQURfSU5JVChpbml0X2JpbmZtdF9taXNjLmVudHJpZXMpLFxuJiM0MztcdC5lbnRyaWVzID0gSExJU1RfSEVBRF9JTklULFxuIFx0LmVuYWJsZWQgPSB0cnVlLFxuLVx0LmVudHJpZXNfbG9jayA9IF9fUldfTE9DS19VTkxPQ0tFRChpbml0X2JpbmZtdF9taXNjLmVudHJpZXNfbG9jayksXG4mIzQzO1x0LmVudHJpZXNfbG9jayA9IF9fU1BJTl9MT0NLX1VOTE9DS0VEKGluaXRfYmluZm10X21pc2MuZW50cmllc19sb2NrKSxcbiB9O1xuIEVYUE9SVF9TWU1CT0xfR1BMKGluaXRfYmluZm10X21pc2MpO1xuICNlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDEwOjMyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JJTkZNVF9NSVNDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bG9hZF9taXNjX2JpbmFyeSYjMzQ7LAogICAgJiMzNDtibV9lbnRyeV93cml0ZSYjMzQ7LAogICAgJiMzNDtibV9zdGF0dXNfd3JpdGUmIzM0OywKICAgICYjMzQ7Ym1fZXZpY3RfaW5vZGUmIzM0OywKICAgICYjMzQ7YWRkX2VudHJ5JiMzNDssCiAgICAmIzM0O2dldF9iaW5mbXRfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtzZWFyY2hfYmluZm10X2hhbmRsZXImIzM0OywKICAgICYjMzQ7cmVtb3ZlX2JpbmZtdF9oYW5kbGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlcyBvZiBgYmluZm10X21pc2NgIGZyb20gYSBkb3VibHktbGlua2VkIGxpc3Qgd2l0aCBhIHJ3bG9jayB0byBhbiBSQ1UtcHJvdGVjdGVkIGhhc2ggbGlzdCB3aXRoIGEgc3BpbmxvY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGNvcmUgbG9naWMgb2YgYGJpbmZtdF9taXNjYCByZWdpc3RyYXRpb24sIHVucmVnaXN0cmF0aW9uLCBhbmQgYmluYXJ5IGV4ZWN1dGlvbi4gSXQgaXMgd29ydGggZnV6emluZyB0byBlbnN1cmUgdGhlIG5ldyBSQ1UgbG9naWMgYW5kIGxvY2tsZXNzIHRyYXZlcnNhbCBkbyBub3QgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucywgdXNlLWFmdGVyLWZyZWUsIG9yIG90aGVyIG1lbW9yeSBzYWZldHkgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhMjkxNzU3ODczNzdhNzgzYmYyOWVlY2ZlNDJmNDNhNTNkYzc3YWZkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgOSAxMDozMjoyNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9taXNjLmMgYi9mcy9iaW5mbXRfbWlzYy5jCmluZGV4IDg0MzQ5ZmNiOTNmMTNhLi4wZjA0NzA5YTBhMzlmNSAxMDA2NDQKLS0tIGEvZnMvYmluZm10X21pc2MuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9iaW5mbXRfbWlzYy5jCkBAIC0yNCw2ICYjNDM7MjQsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L3BhZ2VtYXAuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9uYW1laS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21vdW50LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3JjdWxpc3QuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9mc19jb250ZXh0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc3lzY2FsbHMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9mcy5oJmd0OwpAQCAtNDgsNyAmIzQzOzQ5LDcgQEAgZW51bSB7RW5hYmxlZCwgTWFnaWN9OwogI2RlZmluZSBNSVNDX0ZNVF9PUEVOX0ZJTEUgKDFVTCAmbHQ7Jmx0OyAyOCkKIAogdHlwZWRlZiBzdHJ1Y3QgewotCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKJiM0MzsJc3RydWN0IGhsaXN0X25vZGUgbm9kZTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwkJLyogdHlwZSwgc3RhdHVzLCBldGMuICovCiAJaW50IG9mZnNldDsJCQkvKiBvZmZzZXQgb2YgbWFnaWMgKi8KIAlpbnQgc2l6ZTsJCQkvKiBzaXplIG9mIG1hZ2ljL21hc2sgKi8KQEAgLTU5LDYgJiM0Mzs2MCw3IEBAIHR5cGVkZWYgc3RydWN0IHsKIAlzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7CiAJc3RydWN0IGZpbGUgKmludGVycF9maWxlOwogCXJlZmNvdW50X3QgdXNlcnM7CQkvKiBzeW5jIHJlbW92YWwgd2l0aCBsb2FkX21pc2NfYmluYXJ5KCkgKi8KJiM0MzsJc3RydWN0IHJjdV9oZWFkIHJjdTsKIH0gTm9kZTsKIAogc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGJtX2ZzX3R5cGU7CkBAIC04Niw2ICYjNDM7ODgsOCBAQCBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgYm1fZnNfdHlwZTsKICAqIFNlYXJjaCBmb3IgYSBiaW5hcnkgdHlwZSBoYW5kbGVyIGZvciBAYnBybSBpbiB0aGUgbGlzdCBvZiByZWdpc3RlcmVkIGJpbmFyeQogICogdHlwZSBoYW5kbGVycy4KICAqCiYjNDM7ICogVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIFJDVSByZWFkIGxvY2suCiYjNDM7ICoKICAqIFJldHVybjogYmluYXJ5IHR5cGUgbGlzdCBlbnRyeSBvbiBzdWNjZXNzLCBOVUxMIG9uIGZhaWx1cmUKICAqLwogc3RhdGljIE5vZGUgKnNlYXJjaF9iaW5mbXRfaGFuZGxlcihzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2MsCkBAIC05NSw3ICYjNDM7OTksNyBAQCBzdGF0aWMgTm9kZSAqc2VhcmNoX2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYywKIAlOb2RlICplOwogCiAJLyogV2FsayBhbGwgdGhlIHJlZ2lzdGVyZWQgaGFuZGxlcnMuICovCi0JbGlzdF9mb3JfZWFjaF9lbnRyeShlLCAmYW1wO21pc2MtJmd0O2VudHJpZXMsIGxpc3QpIHsKJiM0MzsJaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGUsICZhbXA7bWlzYy0mZ3Q7ZW50cmllcywgbm9kZSkgewogCQljaGFyICpzOwogCQlpbnQgajsKIApAQCAtMTM0LDcgJiM0MzsxMzgsMTAgQEAgc3RhdGljIE5vZGUgKnNlYXJjaF9iaW5mbXRfaGFuZGxlcihzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2MsCiAgKiBAYnBybTogYmluYXJ5IGZvciB3aGljaCB3ZSBhcmUgbG9va2luZyBmb3IgYSBoYW5kbGVyCiAgKgogICogVHJ5IHRvIGZpbmQgYSBiaW5mbXQgaGFuZGxlciBmb3IgdGhlIGJpbmFyeSB0eXBlLiBJZiBvbmUgaXMgZm91bmQgdGFrZSBhCi0gKiByZWZlcmVuY2UgdG8gcHJvdGVjdCBhZ2FpbnN0IHJlbW92YWwgdmlhIGJtX3tlbnRyeSxzdGF0dXN9X3dyaXRlKCkuCiYjNDM7ICogcmVmZXJlbmNlIHRvIHByb3RlY3QgYWdhaW5zdCByZW1vdmFsIHZpYSBibV97ZW50cnksc3RhdHVzfV93cml0ZSgpLiBUaGUKJiM0MzsgKiByZWZjb3VudCBvZiBhbiBlbnRyeSBjYW4gb25seSBkcm9wIHRvIHplcm8gb25jZSBpdCBoYXMgYmVlbiB1bmxpbmtlZCBhbmQKJiM0MzsgKiBhIHJlc3RhcnRlZCBzZWFyY2ggY2Fubm90IGZpbmQgYW4gdW5saW5rZWQgZW50cnkgYWdhaW4gc28gdGhlIHJldHJ5IGxvb3AKJiM0MzsgKiBpcyBib3VuZGVkLgogICoKICAqIFJldHVybjogYmluYXJ5IHR5cGUgbGlzdCBlbnRyeSBvbiBzdWNjZXNzLCBOVUxMIG9uIGZhaWx1cmUKICAqLwpAQCAtMTQzLDExICYjNDM7MTUwLDEwIEBAIHN0YXRpYyBOb2RlICpnZXRfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLAogewogCU5vZGUgKmU7CiAKLQlyZWFkX2xvY2soJmFtcDttaXNjLSZndDtlbnRyaWVzX2xvY2spOwotCWUgPSBzZWFyY2hfYmluZm10X2hhbmRsZXIobWlzYywgYnBybSk7Ci0JaWYgKGUpCi0JCXJlZmNvdW50X2luYygmYW1wO2UtJmd0O3VzZXJzKTsKLQlyZWFkX3VubG9jaygmYW1wO21pc2MtJmd0O2VudHJpZXNfbG9jayk7CiYjNDM7CWd1YXJkKHJjdSkoKTsKJiM0MzsJZG8gewomIzQzOwkJZSA9IHNlYXJjaF9iaW5mbXRfaGFuZGxlcihtaXNjLCBicHJtKTsKJiM0MzsJfSB3aGlsZSAoZSAmYW1wOyZhbXA7ICFyZWZjb3VudF9pbmNfbm90X3plcm8oJmFtcDtlLSZndDt1c2VycykpOwogCXJldHVybiBlOwogfQogCkBAIC0xNjQsNyAmIzQzOzE3MCw4IEBAIHN0YXRpYyB2b2lkIHB1dF9iaW5mbXRfaGFuZGxlcihOb2RlICplKQogCWlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoJmFtcDtlLSZndDt1c2VycykpIHsKIAkJaWYgKGUtJmd0O2ZsYWdzICZhbXA7IE1JU0NfRk1UX09QRU5fRklMRSkKIAkJCWZpbHBfY2xvc2UoZS0mZ3Q7aW50ZXJwX2ZpbGUsIE5VTEwpOwotCQlrZnJlZShlKTsKJiM0MzsJCS8qIExvY2tsZXNzIHdhbGtlcnMgbWF5IHN0aWxsIGRlcmVmZXJlbmNlIHRoaXMgZW50cnkuICovCiYjNDM7CQlrZnJlZV9yY3UoZSwgcmN1KTsKIAl9CiB9CiAKQEAgLTIwOCw3ICYjNDM7MjE1LDcgQEAgc3RhdGljIGludCBsb2FkX21pc2NfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pCiAJc3RydWN0IGJpbmZtdF9taXNjICptaXNjOwogCiAJbWlzYyA9IGxvYWRfYmluZm10X21pc2MoKTsKLQlpZiAoIW1pc2MtJmd0O2VuYWJsZWQpCiYjNDM7CWlmICghUkVBRF9PTkNFKG1pc2MtJmd0O2VuYWJsZWQpKQogCQlyZXR1cm4gcmV0dmFsOwogCiAJZm10ID0gZ2V0X2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0pOwpAQCAtNjU0LDggJiM0Mzs2NjEsOCBAQCBzdGF0aWMgc3RydWN0IGJpbmZtdF9taXNjICppX2JpbmZtdF9taXNjKHN0cnVjdCBpbm9kZSAqaW5vZGUpCiAgKgogICogSWYgdGhlIC0mZ3Q7ZXZpY3QgY2FsbCB3YXMgbm90IGNhdXNlZCBieSBhIHN1cGVyIGJsb2NrIHNodXRkb3duIGJ1dCBieSBhIHdyaXRlCiAgKiB0byByZW1vdmUgdGhlIGVudHJ5IG9yIGFsbCBlbnRyaWVzIHZpYSBibV97ZW50cnksc3RhdHVzfV93cml0ZSgpIHRoZSBlbnRyeQotICogd2lsbCBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVkIGZyb20gdGhlIGxpc3QuIFdlIGtlZXAgdGhlIGxpc3RfZW1wdHkoKSBjaGVjawotICogdG8gbWFrZSB0aGF0IGV4cGxpY2l0LgomIzQzOyAqIHdpbGwgaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBsaXN0LiBXZSBrZWVwIHRoZSBobGlzdF91bmhhc2hlZCgpCiYjNDM7ICogY2hlY2sgdG8gbWFrZSB0aGF0IGV4cGxpY2l0LgogKi8KIHN0YXRpYyB2b2lkIGJtX2V2aWN0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpCiB7CkBAIC02NjcsMTAgJiM0Mzs2NzQsMTAgQEAgc3RhdGljIHZvaWQgYm1fZXZpY3RfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSkKIAkJc3RydWN0IGJpbmZtdF9taXNjICptaXNjOwogCiAJCW1pc2MgPSBpX2JpbmZtdF9taXNjKGlub2RlKTsKLQkJd3JpdGVfbG9jaygmYW1wO21pc2MtJmd0O2VudHJpZXNfbG9jayk7Ci0JCWlmICghbGlzdF9lbXB0eSgmYW1wO2UtJmd0O2xpc3QpKQotCQkJbGlzdF9kZWxfaW5pdCgmYW1wO2UtJmd0O2xpc3QpOwotCQl3cml0ZV91bmxvY2soJmFtcDttaXNjLSZndDtlbnRyaWVzX2xvY2spOwomIzQzOwkJc3Bpbl9sb2NrKCZhbXA7bWlzYy0mZ3Q7ZW50cmllc19sb2NrKTsKJiM0MzsJCWlmICghaGxpc3RfdW5oYXNoZWQoJmFtcDtlLSZndDtub2RlKSkKJiM0MzsJCQlobGlzdF9kZWxfaW5pdF9yY3UoJmFtcDtlLSZndDtub2RlKTsKJiM0MzsJCXNwaW5fdW5sb2NrKCZhbXA7bWlzYy0mZ3Q7ZW50cmllc19sb2NrKTsKIAkJcHV0X2JpbmZtdF9oYW5kbGVyKGUpOwogCX0KIH0KQEAgLTY4OSw5ICYjNDM7Njk2LDkgQEAgc3RhdGljIHZvaWQgYm1fZXZpY3RfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSkKICAqLwogc3RhdGljIHZvaWQgcmVtb3ZlX2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYywgTm9kZSAqZSkKIHsKLQl3cml0ZV9sb2NrKCZhbXA7bWlzYy0mZ3Q7ZW50cmllc19sb2NrKTsKLQlsaXN0X2RlbF9pbml0KCZhbXA7ZS0mZ3Q7bGlzdCk7Ci0Jd3JpdGVfdW5sb2NrKCZhbXA7bWlzYy0mZ3Q7ZW50cmllc19sb2NrKTsKJiM0MzsJc3Bpbl9sb2NrKCZhbXA7bWlzYy0mZ3Q7ZW50cmllc19sb2NrKTsKJiM0MzsJaGxpc3RfZGVsX2luaXRfcmN1KCZhbXA7ZS0mZ3Q7bm9kZSk7CiYjNDM7CXNwaW5fdW5sb2NrKCZhbXA7bWlzYy0mZ3Q7ZW50cmllc19sb2NrKTsKIAlsb2NrZWRfcmVjdXJzaXZlX3JlbW92YWwoZS0mZ3Q7ZGVudHJ5LCBOVUxMKTsKIH0KIApAQCAtNzQyLDExICYjNDM7NzQ5LDEzIEBAIHN0YXRpYyBzc2l6ZV90IGJtX2VudHJ5X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLAogCQkgKiB2aWEgYm1fe2VudHJ5LHJlZ2lzdGVyLHN0YXR1c31fd3JpdGUoKSBpbm9kZV9sb2NrKCkgb24gdGhlCiAJCSAqIHJvb3QgaW5vZGUgbXVzdCBiZSBoZWxkLgogCQkgKiBUaGUgbG9jayBpcyBleGNsdXNpdmUgZW5zdXJpbmcgdGhhdCB0aGUgbGlzdCBjYW4mIzM5O3QgYmUKLQkJICogbW9kaWZpZWQuIE9ubHkgbG9hZF9taXNjX2JpbmFyeSgpIGNhbiBhY2Nlc3MgYnV0IGRvZXMgc28KLQkJICogcmVhZC1vbmx5LiBTbyB3ZSBvbmx5IG5lZWQgdG8gdGFrZSB0aGUgd3JpdGUgbG9jayB3aGVuIHdlCi0JCSAqIGFjdHVhbGx5IHJlbW92ZSB0aGUgZW50cnkgZnJvbSB0aGUgbGlzdC4KJiM0MzsJCSAqIG1vZGlmaWVkLiBPbmx5IGxvYWRfbWlzY19iaW5hcnkoKSBjYW4gYWNjZXNzIHRoZSBsaXN0CiYjNDM7CQkgKiBjb25jdXJyZW50bHkgYW5kIGl0IGRvZXMgc28gdW5kZXIgUkNVLiBTbyBlbnRyaWVzX2xvY2sgb25seQomIzQzOwkJICogbmVlZHMgdG8gYmUgaGVsZCB3aGVuIGFuIGVudHJ5IGlzIGFjdHVhbGx5IHVubGlua2VkIHRvCiYjNDM7CQkgKiBzZXJpYWxpemUgYWdhaW5zdCBibV9ldmljdF9pbm9kZSgpIGR1cmluZyB1bW91bnQgd2hpY2gKJiM0MzsJCSAqIHVubGlua3Mgd2l0aG91dCBob2xkaW5nIGlub2RlX2xvY2suCiAJCSAqLwotCQlpZiAoIWxpc3RfZW1wdHkoJmFtcDtlLSZndDtsaXN0KSkKJiM0MzsJCWlmICghaGxpc3RfdW5oYXNoZWQoJmFtcDtlLSZndDtub2RlKSkKIAkJCXJlbW92ZV9iaW5mbXRfaGFuZGxlcihpX2JpbmZtdF9taXNjKGlub2RlKSwgZSk7CiAKIAkJaW5vZGVfdW5sb2NrKGlub2RlKTsKQEAgLTc4OSw5ICYjNDM7Nzk4LDkgQEAgc3RhdGljIGludCBhZGRfZW50cnkoTm9kZSAqZSwgc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKIAogCWRfbWFrZV9wZXJzaXN0ZW50KGRlbnRyeSwgaW5vZGUpOwogCW1pc2MgPSBpX2JpbmZtdF9taXNjKGlub2RlKTsKLQl3cml0ZV9sb2NrKCZhbXA7bWlzYy0mZ3Q7ZW50cmllc19sb2NrKTsKLQlsaXN0X2FkZCgmYW1wO2UtJmd0O2xpc3QsICZhbXA7bWlzYy0mZ3Q7ZW50cmllcyk7Ci0Jd3JpdGVfdW5sb2NrKCZhbXA7bWlzYy0mZ3Q7ZW50cmllc19sb2NrKTsKJiM0MzsJc3Bpbl9sb2NrKCZhbXA7bWlzYy0mZ3Q7ZW50cmllc19sb2NrKTsKJiM0MzsJaGxpc3RfYWRkX2hlYWRfcmN1KCZhbXA7ZS0mZ3Q7bm9kZSwgJmFtcDttaXNjLSZndDtlbnRyaWVzKTsKJiM0MzsJc3Bpbl91bmxvY2soJmFtcDttaXNjLSZndDtlbnRyaWVzX2xvY2spOwogCXNpbXBsZV9kb25lX2NyZWF0aW5nKGRlbnRyeSk7CiAJcmV0dXJuIDA7CiB9CkBAIC04NTQsNyAmIzQzOzg2Myw3IEBAIGJtX3N0YXR1c19yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbmJ5dGVzLCBsb2ZmX3QgKnBwb3MpCiAJY2hhciAqczsKIAogCW1pc2MgPSBpX2JpbmZtdF9taXNjKGZpbGVfaW5vZGUoZmlsZSkpOwotCXMgPSBtaXNjLSZndDtlbmFibGVkID8gJiMzNDtlbmFibGVkXG4mIzM0OyA6ICYjMzQ7ZGlzYWJsZWRcbiYjMzQ7OwomIzQzOwlzID0gUkVBRF9PTkNFKG1pc2MtJmd0O2VuYWJsZWQpID8gJiMzNDtlbmFibGVkXG4mIzM0OyA6ICYjMzQ7ZGlzYWJsZWRcbiYjMzQ7OwogCXJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcihidWYsIG5ieXRlcywgcHBvcywgcywgc3RybGVuKHMpKTsKIH0KIApAQCAtODYzLDE4ICYjNDM7ODcyLDE5IEBAIHN0YXRpYyBzc2l6ZV90IGJtX3N0YXR1c193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwKIHsKIAlzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2M7CiAJaW50IHJlcyA9IHBhcnNlX2NvbW1hbmQoYnVmZmVyLCBjb3VudCk7Ci0JTm9kZSAqZSwgKm5leHQ7CiYjNDM7CXN0cnVjdCBobGlzdF9ub2RlICpuZXh0OwogCXN0cnVjdCBpbm9kZSAqaW5vZGU7CiYjNDM7CU5vZGUgKmU7CiAKIAltaXNjID0gaV9iaW5mbXRfbWlzYyhmaWxlX2lub2RlKGZpbGUpKTsKIAlzd2l0Y2ggKHJlcykgewogCWNhc2UgMToKIAkJLyogRGlzYWJsZSBhbGwgaGFuZGxlcnMuICovCi0JCW1pc2MtJmd0O2VuYWJsZWQgPSBmYWxzZTsKJiM0MzsJCVdSSVRFX09OQ0UobWlzYy0mZ3Q7ZW5hYmxlZCwgZmFsc2UpOwogCQlicmVhazsKIAljYXNlIDI6CiAJCS8qIEVuYWJsZSBhbGwgaGFuZGxlcnMuICovCi0JCW1pc2MtJmd0O2VuYWJsZWQgPSB0cnVlOwomIzQzOwkJV1JJVEVfT05DRShtaXNjLSZndDtlbmFibGVkLCB0cnVlKTsKIAkJYnJlYWs7CiAJY2FzZSAzOgogCQkvKiBEZWxldGUgYWxsIGhhbmRsZXJzLiAqLwpAQCAtODg2LDExICYjNDM7ODk2LDEzIEBAIHN0YXRpYyBzc2l6ZV90IGJtX3N0YXR1c193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwKIAkJICogdmlhIGJtX3tlbnRyeSxyZWdpc3RlcixzdGF0dXN9X3dyaXRlKCkgaW5vZGVfbG9jaygpIG9uIHRoZQogCQkgKiByb290IGlub2RlIG11c3QgYmUgaGVsZC4KIAkJICogVGhlIGxvY2sgaXMgZXhjbHVzaXZlIGVuc3VyaW5nIHRoYXQgdGhlIGxpc3QgY2FuJiMzOTt0IGJlCi0JCSAqIG1vZGlmaWVkLiBPbmx5IGxvYWRfbWlzY19iaW5hcnkoKSBjYW4gYWNjZXNzIGJ1dCBkb2VzIHNvCi0JCSAqIHJlYWQtb25seS4gU28gd2Ugb25seSBuZWVkIHRvIHRha2UgdGhlIHdyaXRlIGxvY2sgd2hlbiB3ZQotCQkgKiBhY3R1YWxseSByZW1vdmUgdGhlIGVudHJ5IGZyb20gdGhlIGxpc3QuCiYjNDM7CQkgKiBtb2RpZmllZC4gT25seSBsb2FkX21pc2NfYmluYXJ5KCkgY2FuIGFjY2VzcyB0aGUgbGlzdAomIzQzOwkJICogY29uY3VycmVudGx5IGFuZCBpdCBkb2VzIHNvIHVuZGVyIFJDVS4gU28gZW50cmllc19sb2NrIG9ubHkKJiM0MzsJCSAqIG5lZWRzIHRvIGJlIGhlbGQgd2hlbiBhbiBlbnRyeSBpcyBhY3R1YWxseSB1bmxpbmtlZCB0bwomIzQzOwkJICogc2VyaWFsaXplIGFnYWluc3QgYm1fZXZpY3RfaW5vZGUoKSBkdXJpbmcgdW1vdW50IHdoaWNoCiYjNDM7CQkgKiB1bmxpbmtzIHdpdGhvdXQgaG9sZGluZyBpbm9kZV9sb2NrLgogCQkgKi8KLQkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGUsIG5leHQsICZhbXA7bWlzYy0mZ3Q7ZW50cmllcywgbGlzdCkKJiM0MzsJCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZSwgbmV4dCwgJmFtcDttaXNjLSZndDtlbnRyaWVzLCBub2RlKQogCQkJcmVtb3ZlX2JpbmZtdF9oYW5kbGVyKG1pc2MsIGUpOwogCiAJCWlub2RlX3VubG9jayhpbm9kZSk7CkBAIC05NjUsOCAmIzQzOzk3Nyw4IEBAIHN0YXRpYyBpbnQgYm1fZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCiAJCWlmICghbWlzYykKIAkJCXJldHVybiAtRU5PTUVNOwogCi0JCUlOSVRfTElTVF9IRUFEKCZhbXA7bWlzYy0mZ3Q7ZW50cmllcyk7Ci0JCXJ3bG9ja19pbml0KCZhbXA7bWlzYy0mZ3Q7ZW50cmllc19sb2NrKTsKJiM0MzsJCUlOSVRfSExJU1RfSEVBRCgmYW1wO21pc2MtJmd0O2VudHJpZXMpOwomIzQzOwkJc3Bpbl9sb2NrX2luaXQoJmFtcDttaXNjLSZndDtlbnRyaWVzX2xvY2spOwogCiAJCS8qIFBhaXJzIHdpdGggc21wX2xvYWRfYWNxdWlyZSgpIGluIGxvYWRfYmluZm10X21pc2MoKS4gKi8KIAkJc21wX3N0b3JlX3JlbGVhc2UoJmFtcDt1c2VyX25zLSZndDtiaW5mbXRfbWlzYywgbWlzYyk7CkBAIC05ODMsNyAmIzQzOzk5NSw3IEBAIHN0YXRpYyBpbnQgYm1fZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCiAJICogc29tZW9uZSBtb3VudHMgYmluZm10X21pc2MgZm9yIHRoZSBmaXJzdCB0aW1lIG9yIGFnYWluIHdlIHNpbXBseQogCSAqIHJlc2V0IC0mZ3Q7ZW5hYmxlZCB0byB0cnVlLgogCSAqLwotCW1pc2MtJmd0O2VuYWJsZWQgPSB0cnVlOwomIzQzOwlXUklURV9PTkNFKG1pc2MtJmd0O2VuYWJsZWQsIHRydWUpOwogCiAJZXJyID0gc2ltcGxlX2ZpbGxfc3VwZXIoc2IsIEJJTkZNVEZTX01BR0lDLCBibV9maWxlcyk7CiAJaWYgKCFlcnIpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCBiL2luY2x1ZGUvbGludXgvYmluZm10cy5oCmluZGV4IDJjNzdlMzgzZTczNzU3Li43ZTczMzNiN2JiMGYxMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9iaW5mbXRzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9iaW5mbXRzLmgKQEAgLTEwMSw4ICYjNDM7MTAxLDggQEAgc3RydWN0IGxpbnV4X2JpbmZtdCB7CiAKICNpZiBJU19FTkFCTEVEKENPTkZJR19CSU5GTVRfTUlTQykKIHN0cnVjdCBiaW5mbXRfbWlzYyB7Ci0Jc3RydWN0IGxpc3RfaGVhZCBlbnRyaWVzOwotCXJ3bG9ja190IGVudHJpZXNfbG9jazsKJiM0MzsJc3RydWN0IGhsaXN0X2hlYWQgZW50cmllczsKJiM0MzsJc3BpbmxvY2tfdCBlbnRyaWVzX2xvY2s7CiAJYm9vbCBlbmFibGVkOwogfSBfX3JhbmRvbWl6ZV9sYXlvdXQ7CiAKZGlmZiAtLWdpdCBhL2tlcm5lbC91c2VyLmMgYi9rZXJuZWwvdXNlci5jCmluZGV4IDdhZWY0ZTY3OWE2YTBjLi4yMWJhZmRjMTEzNzk1NiAxMDA2NDQKLS0tIGEva2VybmVsL3VzZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvdXNlci5jCkBAIC0yMyw5ICYjNDM7MjMsOSBAQAogCiAjaWYgSVNfRU5BQkxFRChDT05GSUdfQklORk1UX01JU0MpCiBzdHJ1Y3QgYmluZm10X21pc2MgaW5pdF9iaW5mbXRfbWlzYyA9IHsKLQkuZW50cmllcyA9IExJU1RfSEVBRF9JTklUKGluaXRfYmluZm10X21pc2MuZW50cmllcyksCiYjNDM7CS5lbnRyaWVzID0gSExJU1RfSEVBRF9JTklULAogCS5lbmFibGVkID0gdHJ1ZSwKLQkuZW50cmllc19sb2NrID0gX19SV19MT0NLX1VOTE9DS0VEKGluaXRfYmluZm10X21pc2MuZW50cmllc19sb2NrKSwKJiM0MzsJLmVudHJpZXNfbG9jayA9IF9fU1BJTl9MT0NLX1VOTE9DS0VEKGluaXRfYmluZm10X21pc2MuZW50cmllc19sb2NrKSwKIH07CiBFWFBPUlRfU1lNQk9MX0dQTChpbml0X2JpbmZtdF9taXNjKTsKICNlbmRpZgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxMDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTQwCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNDAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQmluZm10X01pc2MgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCYjMzk7cyBtYWtpbmcgc29tZSBmdW5kYW1lbnRhbCBjaGFuZ2VzIHRvIHRoZSBiaW5mbXRfbWlzYyBzdWJzeXN0ZW0uIFRoaXMgaXMgYSBjb3JlIGtlcm5lbCBhcmVhLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgbWlzY2VsbGFuZW91cyBiaW5hcnkgZm9ybWF0cy4gVGhlIHBhdGNoIHRvdWNoZXMgYGZzL2JpbmZtdF9taXNjLmNgLCBgaW5jbHVkZS9saW51eC9iaW5mbXRzLmhgLCBhbmQgYGtlcm5lbC91c2VyLmNgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyB0aGlzIGFzIHBvdGVudGlhbGx5IHNpZ25pZmljYW50LgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBhcHBlYXJzIHRvIGJlIGEgc3dpdGNoIGZyb20gYSBkb3VibHktbGlua2VkIGxpc3QgKGBzdHJ1Y3QgbGlzdF9oZWFkYCkgdG8gYSBoYXNoIGxpc3QgKGBzdHJ1Y3QgaGxpc3RfaGVhZGApIGZvciB0aGUgYGVudHJpZXNgIGxpc3QgaW4gYHN0cnVjdCBiaW5mbXRfbWlzY2AuIFdlJiMzOTtyZSBhbHNvIHNlZWluZyBhIGxvY2sgdXBncmFkZS4gVGhlIHBhdGNoIGNoYW5nZXMgYGVudHJpZXNfbG9ja2AgZnJvbSBhIHJlYWQtd3JpdGUgbG9jayAoYHJ3bG9ja190YCkgdG8gYSBzcGlubG9jayAoYHNwaW5sb2NrX3RgKS4gVGhpcyBzdWdnZXN0cyBhIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIHRob3VnaCBpdCBhbHNvIGluY3JlYXNlcyB0aGUgcmlzayBvZiBjb250ZW50aW9uIGluIGNlcnRhaW4gc2NlbmFyaW9zLiBJdCBhbHNvIHNlZW1zIHRoZXkmIzM5O3JlIGxldmVyYWdpbmcgUkNVIChSZWFkLUNvcHktVXBkYXRlKSBmb3IgbG9ja2xlc3MgdHJhdmVyc2FsIGluIGBnZXRfYmluZm10X2hhbmRsZXJgIGFuZCBgc2VhcmNoX2JpbmZtdF9oYW5kbGVyYCwgd2hpY2ggaXMgYW4gaW50ZXJlc3RpbmcgZGVzaWduIGNob2ljZS4gVGhpcyBkZWZpbml0ZWx5IGNhbGxzIGZvciBzb21lIGNhcmVmdWwgc2NydXRpbnkuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhpcyBpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gQW55IGNoYW5nZSB0byBjb3JlIGtlcm5lbCBsb2dpYyB3YXJyYW50cyBhIHRob3JvdWdoIGV4YW1pbmF0aW9uIGZvciBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGFuZCBlZGdlIGNhc2VzLiBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyBhZmZlY3RlZCB0byBkaXJlY3QgbXkgZnV6emluZyBlZmZvcnRzLgoKTGV0JiMzOTtzIHNlZeKApiBCYXNlZCBvbiB0aGUgZGlmZiwgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIG1vZGlmaWVkIG9yIGRpcmVjdGx5IGludm9sdmVkOiBgc2VhcmNoX2JpbmZtdF9oYW5kbGVyYCwgYGdldF9iaW5mbXRfaGFuZGxlcmAsIGBwdXRfYmluZm10X2hhbmRsZXJgLCBgbG9hZF9taXNjX2JpbmFyeWAsIGBibV9ldmljdF9pbm9kZWAsIGByZW1vdmVfYmluZm10X2hhbmRsZXJgLCBgYm1fZW50cnlfd3JpdGVgLCBgYWRkX2VudHJ5YCwgYGJtX3N0YXR1c19yZWFkYCwgYGJtX3N0YXR1c193cml0ZWAsIGFuZCBgYm1fZmlsbF9zdXBlcmAuCgpPa2F5LCBzbyBgbG9hZF9taXNjX2JpbmFyeWAgaXMgdGhlIG1vbmV5IHNob3Qg4oCTIGl0JiMzOTtzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciBiaW5hcnkgZXhlY3V0aW9uIHRocm91Z2ggYmluZm10X21pc2MuIGBibV9lbnRyeV93cml0ZWAsIGBibV9zdGF0dXNfd3JpdGVgLCBhbmQgYGJtX3N0YXR1c19yZWFkYCBhcmUgdGhlIHVzZXItc3BhY2UgaW50ZXJmYWNlcyBmb3IgY29uZmlndXJpbmcgYmluZm10X21pc2MuIGBibV9ldmljdF9pbm9kZWAgaGFuZGxlcyBpbm9kZSBldmljdGlvbiwgc28gaXQmIzM5O3MgcHJvYmFibHkgbGVzcyBjcml0aWNhbCBmcm9tIGEgZGlyZWN0IGF0dGFjayBzdXJmYWNlIHBlcnNwZWN0aXZlIGJ1dCBzdGlsbCByZWxldmFudCBmb3Igc3RhYmlsaXR5LgoKQmVmb3JlIEkgZ28gZnVydGhlciwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaGUgY29kZSBzZWVtcyB0byBiZSBndWFyZGVkIGJ5IGBDT05GSUdfQklORk1UX01JU0NgLiBJIHNob3VsZCBxdWlja2x5IHZlcmlmeSB0aGlzIGJ5IGNoZWNraW5nIGBmcy9LY29uZmlnLmJpbmZtdGAgb3IgYGZzL01ha2VmaWxlYCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBidWlsZC10aW1lIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxMDozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCSU5GTVRfTUlTQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9LY29uZmlnLmJpbmZtdD0xMzg9Y29uZmlnIEJJTkZNVF9aRkxBVFxuLS1cbmZzL0tjb25maWcuYmluZm10LTE0NC1cbmZzL0tjb25maWcuYmluZm10OjE0NTpjb25maWcgQklORk1UX01JU0NcbmZzL0tjb25maWcuYmluZm10LTE0Ni1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbCBzdXBwb3J0IGZvciBNSVNDIGJpbmFyaWVzXCYjMzQ7XG4tLVxuZnMvTWFrZWZpbGU9MzQ9b2JqLSQoQ09ORklHX0ZJTEVfTE9DS0lORykgICAgICAmIzQzOz0gbG9ja3Mub1xuZnMvTWFrZWZpbGU6MzU6b2JqLSQoQ09ORklHX0JJTkZNVF9NSVNDKVx0JiM0Mzs9IGJpbmZtdF9taXNjLm9cbmZzL01ha2VmaWxlLTM2LW9iai0kKENPTkZJR19CSU5GTVRfU0NSSVBUKVx0JiM0Mzs9IGJpbmZtdF9zY3JpcHQub1xuLS1cbmZzL2ZpbGVfdGFibGUuYz0xNjU9c3RhdGljIGludCBfX2luaXQgaW5pdF9mc19zdGF0X3N5c2N0bHModm9pZClcbi0tXG5mcy9maWxlX3RhYmxlLmMtMTY3LVx0cmVnaXN0ZXJfc3lzY3RsX2luaXQoXCYjMzQ7ZnNcJiMzNDssIGZzX3N0YXRfc3lzY3Rscyk7XG5mcy9maWxlX3RhYmxlLmM6MTY4Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0JJTkZNVF9NSVNDKSkge1xuZnMvZmlsZV90YWJsZS5jLTE2OS1cdFx0c3RydWN0IGN0bF90YWJsZV9oZWFkZXIgKmhkcjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxMDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDI3CgkJCQkJCQlvdXRwdXQ6IDY2CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBCSU5GTVRfTUlTQyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gd2UmIzM5O3JlIGxvb2tpbmcgYXQgaXMgYEJJTkZNVF9NSVNDYC4gIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBUaW1lIHRvIGRpdmUgaW50byB0aGUgaW1wbGVtZW50YXRpb24uIE15IGZpcnN0IHN0ZXAgaXMgdG8gY3JhY2sgb3BlbiBgZnMvYmluZm10X21pc2MuY2AuIEkgbmVlZCB0byByZXZpZXcgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGlzIHNwZWNpZmljIGZlYXR1cmUgaW4gTGludXgsIGFuZCBpZGVudGlmeSB0aGUgY29yZSBmdW5jdGlvbnMgdGhhdCBoYW5kbGUgdGhpcyBmdW5jdGlvbmFsaXR5LiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlcmFjdGlvbnMgb2YgdGhlIHJlbGV2YW50IGZpbGVzIGFuZCBmdW5jdGlvbnMuIEkgbmVlZCB0byBiZSBzdXJlIEkmIzM5O20gYWNyb3NzIHRoZSBiYXNpY3MgYmVmb3JlIGRpZ2dpbmcgYW55IGRlZXBlci4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDEwOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oc3RhdGljfGludHx2b2lkKS4qIChsb2FkX21pc2NfYmluYXJ5fGJtX2VudHJ5X3dyaXRlfGJtX3N0YXR1c193cml0ZXxibV9ldmljdF9pbm9kZXxhZGRfZW50cnkpXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYmluZm10X21pc2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9iaW5mbXRfbWlzYy5jPTE4OT1zdGF0aWMgc3RydWN0IGJpbmZtdF9taXNjICpsb2FkX2JpbmZtdF9taXNjKHZvaWQpXG4tLVxuZnMvYmluZm10X21pc2MuYy0yMDktICovXG5mcy9iaW5mbXRfbWlzYy5jOjIxMDpzdGF0aWMgaW50IGxvYWRfbWlzY19iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbmZzL2JpbmZtdF9taXNjLmMtMjExLXtcbi0tXG5mcy9iaW5mbXRfbWlzYy5jPTY0OT1zdGF0aWMgc3RydWN0IGJpbmZtdF9taXNjICppX2JpbmZtdF9taXNjKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4tLVxuZnMvYmluZm10X21pc2MuYy02NjYtKi9cbmZzL2JpbmZtdF9taXNjLmM6NjY3OnN0YXRpYyB2b2lkIGJtX2V2aWN0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG5mcy9iaW5mbXRfbWlzYy5jLTY2OC17XG4tLVxuZnMvYmluZm10X21pc2MuYz03MDg9Ym1fZW50cnlfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IG5ieXRlcywgbG9mZl90ICpwcG9zKVxuLS1cbmZzL2JpbmZtdF9taXNjLmMtNzI1LVxuZnMvYmluZm10X21pc2MuYzo3MjY6c3RhdGljIHNzaXplX3QgYm1fZW50cnlfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsXG5mcy9iaW5mbXRfbWlzYy5jLTcyNy1cdFx0XHRcdHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxuLS1cbmZzL2JpbmZtdF9taXNjLmM9NzcwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGJtX2VudHJ5X29wZXJhdGlvbnMgPSB7XG4tLVxuZnMvYmluZm10X21pc2MuYy03NzgtLyogYWRkIHRvIGZpbGVzeXN0ZW0gKi9cbmZzL2JpbmZtdF9taXNjLmM6Nzc5OnN0YXRpYyBpbnQgYWRkX2VudHJ5KE5vZGUgKmUsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy9iaW5mbXRfbWlzYy5jLTc4MC17XG4tLVxuZnMvYmluZm10X21pc2MuYz04NjA9Ym1fc3RhdHVzX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICpidWYsIHNpemVfdCBuYnl0ZXMsIGxvZmZfdCAqcHBvcylcbi0tXG5mcy9iaW5mbXRfbWlzYy5jLTg2OS1cbmZzL2JpbmZtdF9taXNjLmM6ODcwOnN0YXRpYyBzc2l6ZV90IGJtX3N0YXR1c193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlcixcbmZzL2JpbmZtdF9taXNjLmMtODcxLVx0XHRzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxMDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjIzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBGdW5jdGlvbiBTY29wZSBpbiB0aGUgS2VybmVsIE1vZHVsZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zOiBgbG9hZF9taXNjX2JpbmFyeWAsIGBibV9ldmljdF9pbm9kZWAsIGBibV9lbnRyeV93cml0ZWAsIGBhZGRfZW50cnlgLCBhbmQgYGJtX3N0YXR1c193cml0ZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZWlyIHNjb3BlIHdpdGhpbiB0aGlzIG1vZHVsZS4gVGhlIGZpcnN0IHRoaW5nIEkmIzM5O2xsIGRvIGlzIGNvbmZpcm0gd2hldGhlciB0aGVzZSBhcmUgc3RhdGljIG9yIG5vdC4gQSBxdWljayBjaGVjayByZXZlYWxzIHRoYXQgYGFkZF9lbnRyeWAgaXMgc3RhdGljLCBhcyBpcyBgYm1fZXZpY3RfaW5vZGVgLCBhbmQgYWxzbyBgYm1fZW50cnlfd3JpdGVgIGFuZCBhbHNvIGBibV9zdGF0dXNfd3JpdGVgLCBhbmQgYWxzbyBgbG9hZF9taXNjX2JpbmFyeWAuCgpXYWl0IGEgbWludXRlLCBgbG9hZF9taXNjX2JpbmFyeWAuLi4gSSByZW1lbWJlciBzZWVpbmcgdGhhdCBuYW1lIHNvbWV3aGVyZSBiZWZvcmUuIEl0JiMzOTtzIHVzZWQgaW4gdGhlIGBsaW51eF9iaW5mbXRgIHN0cnVjdC4gSSB0aGluayBpdCYjMzk7cyByZWdpc3RlcmVkIGluIHRoZSBrZXJuZWwgYXMgYSBiaW5hcnkgZm9ybWF0IGhhbmRsZXIuIEJldHRlciBkb3VibGUtY2hlY2sgYGZzL2JpbmZtdF9taXNjLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpbnRlZ3JhdGVzIHdpdGggdGhlIHdpZGVyIGtlcm5lbCBiaW5hcnkgaGFuZGxpbmcgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxMDozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdHJ1Y3QgbGludXhfYmluZm10JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYmluZm10X21pc2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9iaW5mbXRfbWlzYy5jPTEwMjI9c3RhdGljIGludCBibV9pbml0X2ZzX2NvbnRleHQoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuLS1cbmZzL2JpbmZtdF9taXNjLmMtMTAyNy1cbmZzL2JpbmZtdF9taXNjLmM6MTAyODpzdGF0aWMgc3RydWN0IGxpbnV4X2JpbmZtdCBtaXNjX2Zvcm1hdCA9IHtcbmZzL2JpbmZtdF9taXNjLmMtMTAyOS1cdC5tb2R1bGUgPSBUSElTX01PRFVMRSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxMDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NzU1CgkJCQkJCQlvdXRwdXQ6IDIwMAoJCQkJCQkJdGhvdWdodHM6IDQ3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYGJpbmZtdF9taXNjYCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHJpZ2h0IG9mZiB0aGUgYmF0LCBgbG9hZF9taXNjX2JpbmFyeWAgaXMgY2xlYXJseSB0aGUgYC5sb2FkX2JpbmFyeWAgY2FsbGJhY2suIE1ha2VzIHNlbnNlLiBgYm1fZW50cnlfd3JpdGVgIGFuZCBgYm1fc3RhdHVzX3dyaXRlYCBhcmUgdGhlIGAud3JpdGVgIGNhbGxiYWNrcyBmb3IgdGhlIGBiaW5mbXRfbWlzY2AgZmlsZXN5c3RlbSwgYW5kIGBibV9ldmljdF9pbm9kZWAgaXMgdGhlIGAuZXZpY3RfaW5vZGVgIGNhbGxiYWNrLiBUaGVzZSBhcmUgYWxsIGNyaXRpY2FsIGVudHJ5IHBvaW50cywgdGhlIGZ1bmN0aW9ucyB0aGF0IGludGVyYWN0IGRpcmVjdGx5IHdpdGggdGhlIGNvcmUgbG9naWMuCgpUaGVzZSBmb3VyLCBhbG9uZyB3aXRoIGBhZGRfZW50cnlgLCBgZ2V0X2JpbmZtdF9oYW5kbGVyYCwgYHNlYXJjaF9iaW5mbXRfaGFuZGxlcmAsIGFuZCBgcmVtb3ZlX2JpbmZtdF9oYW5kbGVyYCBhcmUgZGVmaW5pdGUgY2FuZGlkYXRlcyBmb3IgYEZvY3VzU3ltYm9sc2AuIEhvbGQgb24gdGhvdWdoLCBgZ2V0X2JpbmZtdF9oYW5kbGVyYCBhbmQgYHNlYXJjaF9iaW5mbXRfaGFuZGxlcmAgYWxzbyBsb29rIGxpa2UgdGhleSYjMzk7cmUgYmVpbmcgKm1vZGlmaWVkKiBpbiBhIHNpZ25pZmljYW50IHdheSwgcGFydGljdWxhcmx5IHdpdGggcmVzcGVjdCB0byB0aGF0IFJDVSBsb2dpYy4gWXVwLCB0aG9zZSBuZWVkIHRvIGJlIGluY2x1ZGVkLgoKQmVmb3JlIEkgbG9jayB0aGF0IGRvd24sIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIGltcGFjdGVkLiBUaGUgcGF0Y2ggdG91Y2hlcyBgZnMvYmluZm10X21pc2MuY2AsIGBpbmNsdWRlL2xpbnV4L2JpbmZtdHMuaGAsIGFuZCBga2VybmVsL3VzZXIuY2AsIHdoaWNoIG1ha2VzIGBDT05GSUdfQklORk1UX01JU0NgIHRoZSBvYnZpb3VzIHByaW1hcnkgb25lLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSByYXRpb25hbGUuIFRoaXMgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgdGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlcyBvZiBgYmluZm10X21pc2NgLiBJdCYjMzk7cyBtb3ZpbmcgZnJvbSBhIGRvdWJseS1saW5rZWQgbGlzdCBwcm90ZWN0ZWQgYnkgYSByZWFkLXdyaXRlIGxvY2sgdG8gYW4gUkNVLXByb3RlY3RlZCBoYXNoIGxpc3Qgd2l0aCBhIHNwaW5sb2NrLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwgY2hhbmdlKjsgaXQmIzM5O3MgYWx0ZXJpbmcgdGhlIHJlZ2lzdHJhdGlvbiwgdW5yZWdpc3RyYXRpb24sIGFuZCBleGVjdXRpb24gbG9naWMgb2YgYGJpbmZtdF9taXNjYC4gVGhhdCYjMzk7cyBhIGh1Z2UgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLiBXZSBuZWVkIHRvIGZ1enogdGhpcyBhZ2dyZXNzaXZlbHkgdG8gZW5zdXJlIHRoZSBuZXcgUkNVIGxvZ2ljIGFuZCBsb2NrbGVzcyB0cmF2ZXJzYWwgZG9uJiMzOTt0IGludHJvZHVjZSBhbnkgbmFzdHkgcmFjZSBjb25kaXRpb25zLCB1c2UtYWZ0ZXItZnJlZXMsIG9yIG90aGVyIG1lbW9yeSBzYWZldHkgaXNzdWVzLgoKU28sIGhlcmUmIzM5O3MgbXkgYEZvY3VzU3ltYm9sc2A6CgotICAgYGxvYWRfbWlzY19iaW5hcnlgCi0gICBgYm1fZW50cnlfd3JpdGVgCi0gICBgYm1fc3RhdHVzX3dyaXRlYAotICAgYGJtX2V2aWN0X2lub2RlYAotICAgYGFkZF9lbnRyeWAKLSAgIGBnZXRfYmluZm10X2hhbmRsZXJgCi0gICBgc2VhcmNoX2JpbmZtdF9oYW5kbGVyYAotICAgYHJlbW92ZV9iaW5mbXRfaGFuZGxlcmAKCkFuZCB0aGUgYEVuYWJsZUNvbmZpZ3NgOgoKLSAgIGBCSU5GTVRfTUlTQ2AKCkkmIzM5O20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxMDozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QklORk1UX01JU0MmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsb2FkX21pc2NfYmluYXJ5JiMzNDssCiAgICAmIzM0O2JtX2VudHJ5X3dyaXRlJiMzNDssCiAgICAmIzM0O2JtX3N0YXR1c193cml0ZSYjMzQ7LAogICAgJiMzNDtibV9ldmljdF9pbm9kZSYjMzQ7LAogICAgJiMzNDthZGRfZW50cnkmIzM0OywKICAgICYjMzQ7Z2V0X2JpbmZtdF9oYW5kbGVyJiMzNDssCiAgICAmIzM0O3NlYXJjaF9iaW5mbXRfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtyZW1vdmVfYmluZm10X2hhbmRsZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIG9mIGBiaW5mbXRfbWlzY2AgZnJvbSBhIGRvdWJseS1saW5rZWQgbGlzdCB3aXRoIGEgcndsb2NrIHRvIGFuIFJDVS1wcm90ZWN0ZWQgaGFzaCBsaXN0IHdpdGggYSBzcGlubG9jay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgY29yZSBsb2dpYyBvZiBgYmluZm10X21pc2NgIHJlZ2lzdHJhdGlvbiwgdW5yZWdpc3RyYXRpb24sIGFuZCBiaW5hcnkgZXhlY3V0aW9uLiBJdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgbmV3IFJDVSBsb2dpYyBhbmQgbG9ja2xlc3MgdHJhdmVyc2FsIGRvIG5vdCBpbnRyb2R1Y2UgcmFjZSBjb25kaXRpb25zLCB1c2UtYWZ0ZXItZnJlZSwgb3Igb3RoZXIgbWVtb3J5IHNhZmV0eSBpc3N1ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JJTkZNVF9NSVNDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bG9hZF9taXNjX2JpbmFyeSYjMzQ7LAogICAgJiMzNDtibV9lbnRyeV93cml0ZSYjMzQ7LAogICAgJiMzNDtibV9zdGF0dXNfd3JpdGUmIzM0OywKICAgICYjMzQ7Ym1fZXZpY3RfaW5vZGUmIzM0OywKICAgICYjMzQ7YWRkX2VudHJ5JiMzNDssCiAgICAmIzM0O2dldF9iaW5mbXRfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtzZWFyY2hfYmluZm10X2hhbmRsZXImIzM0OywKICAgICYjMzQ7cmVtb3ZlX2JpbmZtdF9oYW5kbGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlcyBvZiBgYmluZm10X21pc2NgIGZyb20gYSBkb3VibHktbGlua2VkIGxpc3Qgd2l0aCBhIHJ3bG9jayB0byBhbiBSQ1UtcHJvdGVjdGVkIGhhc2ggbGlzdCB3aXRoIGEgc3BpbmxvY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGNvcmUgbG9naWMgb2YgYGJpbmZtdF9taXNjYCByZWdpc3RyYXRpb24sIHVucmVnaXN0cmF0aW9uLCBhbmQgYmluYXJ5IGV4ZWN1dGlvbi4gSXQgaXMgd29ydGggZnV6emluZyB0byBlbnN1cmUgdGhlIG5ldyBSQ1UgbG9naWMgYW5kIGxvY2tsZXNzIHRyYXZlcnNhbCBkbyBub3QgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucywgdXNlLWFmdGVyLWZyZWUsIG9yIG90aGVyIG1lbW9yeSBzYWZldHkgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDlUMTA6MzI6MjcuMTg0MTA0MjE0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYxMDAwOTc4ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQklORk1UX01JU0NcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJsb2FkX21pc2NfYmluYXJ5XCIsXG4gICAgXCJibV9lbnRyeV93cml0ZVwiLFxuICAgIFwiYm1fc3RhdHVzX3dyaXRlXCIsXG4gICAgXCJibV9ldmljdF9pbm9kZVwiLFxuICAgIFwiYWRkX2VudHJ5XCIsXG4gICAgXCJnZXRfYmluZm10X2hhbmRsZXJcIixcbiAgICBcInNlYXJjaF9iaW5mbXRfaGFuZGxlclwiLFxuICAgIFwicmVtb3ZlX2JpbmZtdF9oYW5kbGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIG9mIGBiaW5mbXRfbWlzY2AgZnJvbSBhIGRvdWJseS1saW5rZWQgbGlzdCB3aXRoIGEgcndsb2NrIHRvIGFuIFJDVS1wcm90ZWN0ZWQgaGFzaCBsaXN0IHdpdGggYSBzcGlubG9jay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgY29yZSBsb2dpYyBvZiBgYmluZm10X21pc2NgIHJlZ2lzdHJhdGlvbiwgdW5yZWdpc3RyYXRpb24sIGFuZCBiaW5hcnkgZXhlY3V0aW9uLiBJdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgbmV3IFJDVSBsb2dpYyBhbmQgbG9ja2xlc3MgdHJhdmVyc2FsIGRvIG5vdCBpbnRyb2R1Y2UgcmFjZSBjb25kaXRpb25zLCB1c2UtYWZ0ZXItZnJlZSwgb3Igb3RoZXIgbWVtb3J5IHNhZmV0eSBpc3N1ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDEwOjMyOjI3LjE4NDEwODk2NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI4MjU1NzU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTI5MTc1Nzg3Mzc3YTc4M2JmMjllZWNmZTQyZjQzYTUzZGM3N2FmZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCA5IDEwOjMyOjI1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9taXNjLmMgYi9mcy9iaW5mbXRfbWlzYy5jXFxuaW5kZXggODQzNDlmY2I5M2YxM2EuLjBmMDQ3MDlhMGEzOWY1IDEwMDY0NFxcbi0tLSBhL2ZzL2JpbmZtdF9taXNjLmNcXG4rKysgYi9mcy9iaW5mbXRfbWlzYy5jXFxuQEAgLTI0LDYgKzI0LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BhZ2VtYXAuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25hbWVpLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb3VudC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcmN1bGlzdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZnNfY29udGV4dC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc3lzY2FsbHMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2ZzLmhcXHUwMDNlXFxuQEAgLTQ4LDcgKzQ5LDcgQEAgZW51bSB7RW5hYmxlZCwgTWFnaWN9O1xcbiAjZGVmaW5lIE1JU0NfRk1UX09QRU5fRklMRSAoMVVMIFxcdTAwM2NcXHUwMDNjIDI4KVxcbiBcXG4gdHlwZWRlZiBzdHJ1Y3Qge1xcbi1cXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XFxuK1xcdHN0cnVjdCBobGlzdF9ub2RlIG5vZGU7XFxuIFxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFx0XFx0LyogdHlwZSwgc3RhdHVzLCBldGMuICovXFxuIFxcdGludCBvZmZzZXQ7XFx0XFx0XFx0Lyogb2Zmc2V0IG9mIG1hZ2ljICovXFxuIFxcdGludCBzaXplO1xcdFxcdFxcdC8qIHNpemUgb2YgbWFnaWMvbWFzayAqL1xcbkBAIC01OSw2ICs2MCw3IEBAIHR5cGVkZWYgc3RydWN0IHtcXG4gXFx0c3RydWN0IGRlbnRyeSAqZGVudHJ5O1xcbiBcXHRzdHJ1Y3QgZmlsZSAqaW50ZXJwX2ZpbGU7XFxuIFxcdHJlZmNvdW50X3QgdXNlcnM7XFx0XFx0Lyogc3luYyByZW1vdmFsIHdpdGggbG9hZF9taXNjX2JpbmFyeSgpICovXFxuK1xcdHN0cnVjdCByY3VfaGVhZCByY3U7XFxuIH0gTm9kZTtcXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBibV9mc190eXBlO1xcbkBAIC04Niw2ICs4OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBibV9mc190eXBlO1xcbiAgKiBTZWFyY2ggZm9yIGEgYmluYXJ5IHR5cGUgaGFuZGxlciBmb3IgQGJwcm0gaW4gdGhlIGxpc3Qgb2YgcmVnaXN0ZXJlZCBiaW5hcnlcXG4gICogdHlwZSBoYW5kbGVycy5cXG4gICpcXG4rICogVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIFJDVSByZWFkIGxvY2suXFxuKyAqXFxuICAqIFJldHVybjogYmluYXJ5IHR5cGUgbGlzdCBlbnRyeSBvbiBzdWNjZXNzLCBOVUxMIG9uIGZhaWx1cmVcXG4gICovXFxuIHN0YXRpYyBOb2RlICpzZWFyY2hfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLFxcbkBAIC05NSw3ICs5OSw3IEBAIHN0YXRpYyBOb2RlICpzZWFyY2hfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLFxcbiBcXHROb2RlICplO1xcbiBcXG4gXFx0LyogV2FsayBhbGwgdGhlIHJlZ2lzdGVyZWQgaGFuZGxlcnMuICovXFxuLVxcdGxpc3RfZm9yX2VhY2hfZW50cnkoZSwgXFx1MDAyNm1pc2MtXFx1MDAzZWVudHJpZXMsIGxpc3QpIHtcXG4rXFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGUsIFxcdTAwMjZtaXNjLVxcdTAwM2VlbnRyaWVzLCBub2RlKSB7XFxuIFxcdFxcdGNoYXIgKnM7XFxuIFxcdFxcdGludCBqO1xcbiBcXG5AQCAtMTM0LDcgKzEzOCwxMCBAQCBzdGF0aWMgTm9kZSAqc2VhcmNoX2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYyxcXG4gICogQGJwcm06IGJpbmFyeSBmb3Igd2hpY2ggd2UgYXJlIGxvb2tpbmcgZm9yIGEgaGFuZGxlclxcbiAgKlxcbiAgKiBUcnkgdG8gZmluZCBhIGJpbmZtdCBoYW5kbGVyIGZvciB0aGUgYmluYXJ5IHR5cGUuIElmIG9uZSBpcyBmb3VuZCB0YWtlIGFcXG4tICogcmVmZXJlbmNlIHRvIHByb3RlY3QgYWdhaW5zdCByZW1vdmFsIHZpYSBibV97ZW50cnksc3RhdHVzfV93cml0ZSgpLlxcbisgKiByZWZlcmVuY2UgdG8gcHJvdGVjdCBhZ2FpbnN0IHJlbW92YWwgdmlhIGJtX3tlbnRyeSxzdGF0dXN9X3dyaXRlKCkuIFRoZVxcbisgKiByZWZjb3VudCBvZiBhbiBlbnRyeSBjYW4gb25seSBkcm9wIHRvIHplcm8gb25jZSBpdCBoYXMgYmVlbiB1bmxpbmtlZCBhbmRcXG4rICogYSByZXN0YXJ0ZWQgc2VhcmNoIGNhbm5vdCBmaW5kIGFuIHVubGlua2VkIGVudHJ5IGFnYWluIHNvIHRoZSByZXRyeSBsb29wXFxuKyAqIGlzIGJvdW5kZWQuXFxuICAqXFxuICAqIFJldHVybjogYmluYXJ5IHR5cGUgbGlzdCBlbnRyeSBvbiBzdWNjZXNzLCBOVUxMIG9uIGZhaWx1cmVcXG4gICovXFxuQEAgLTE0MywxMSArMTUwLDEwIEBAIHN0YXRpYyBOb2RlICpnZXRfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLFxcbiB7XFxuIFxcdE5vZGUgKmU7XFxuIFxcbi1cXHRyZWFkX2xvY2soXFx1MDAyNm1pc2MtXFx1MDAzZWVudHJpZXNfbG9jayk7XFxuLVxcdGUgPSBzZWFyY2hfYmluZm10X2hhbmRsZXIobWlzYywgYnBybSk7XFxuLVxcdGlmIChlKVxcbi1cXHRcXHRyZWZjb3VudF9pbmMoXFx1MDAyNmUtXFx1MDAzZXVzZXJzKTtcXG4tXFx0cmVhZF91bmxvY2soXFx1MDAyNm1pc2MtXFx1MDAzZWVudHJpZXNfbG9jayk7XFxuK1xcdGd1YXJkKHJjdSkoKTtcXG4rXFx0ZG8ge1xcbitcXHRcXHRlID0gc2VhcmNoX2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0pO1xcbitcXHR9IHdoaWxlIChlIFxcdTAwMjZcXHUwMDI2ICFyZWZjb3VudF9pbmNfbm90X3plcm8oXFx1MDAyNmUtXFx1MDAzZXVzZXJzKSk7XFxuIFxcdHJldHVybiBlO1xcbiB9XFxuIFxcbkBAIC0xNjQsNyArMTcwLDggQEAgc3RhdGljIHZvaWQgcHV0X2JpbmZtdF9oYW5kbGVyKE5vZGUgKmUpXFxuIFxcdGlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoXFx1MDAyNmUtXFx1MDAzZXVzZXJzKSkge1xcbiBcXHRcXHRpZiAoZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBNSVNDX0ZNVF9PUEVOX0ZJTEUpXFxuIFxcdFxcdFxcdGZpbHBfY2xvc2UoZS1cXHUwMDNlaW50ZXJwX2ZpbGUsIE5VTEwpO1xcbi1cXHRcXHRrZnJlZShlKTtcXG4rXFx0XFx0LyogTG9ja2xlc3Mgd2Fsa2VycyBtYXkgc3RpbGwgZGVyZWZlcmVuY2UgdGhpcyBlbnRyeS4gKi9cXG4rXFx0XFx0a2ZyZWVfcmN1KGUsIHJjdSk7XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtMjA4LDcgKzIxNSw3IEBAIHN0YXRpYyBpbnQgbG9hZF9taXNjX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbiBcXHRzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2M7XFxuIFxcbiBcXHRtaXNjID0gbG9hZF9iaW5mbXRfbWlzYygpO1xcbi1cXHRpZiAoIW1pc2MtXFx1MDAzZWVuYWJsZWQpXFxuK1xcdGlmICghUkVBRF9PTkNFKG1pc2MtXFx1MDAzZWVuYWJsZWQpKVxcbiBcXHRcXHRyZXR1cm4gcmV0dmFsO1xcbiBcXG4gXFx0Zm10ID0gZ2V0X2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0pO1xcbkBAIC02NTQsOCArNjYxLDggQEAgc3RhdGljIHN0cnVjdCBiaW5mbXRfbWlzYyAqaV9iaW5mbXRfbWlzYyhzdHJ1Y3QgaW5vZGUgKmlub2RlKVxcbiAgKlxcbiAgKiBJZiB0aGUgLVxcdTAwM2VldmljdCBjYWxsIHdhcyBub3QgY2F1c2VkIGJ5IGEgc3VwZXIgYmxvY2sgc2h1dGRvd24gYnV0IGJ5IGEgd3JpdGVcXG4gICogdG8gcmVtb3ZlIHRoZSBlbnRyeSBvciBhbGwgZW50cmllcyB2aWEgYm1fe2VudHJ5LHN0YXR1c31fd3JpdGUoKSB0aGUgZW50cnlcXG4tICogd2lsbCBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVkIGZyb20gdGhlIGxpc3QuIFdlIGtlZXAgdGhlIGxpc3RfZW1wdHkoKSBjaGVja1xcbi0gKiB0byBtYWtlIHRoYXQgZXhwbGljaXQuXFxuKyAqIHdpbGwgaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBsaXN0LiBXZSBrZWVwIHRoZSBobGlzdF91bmhhc2hlZCgpXFxuKyAqIGNoZWNrIHRvIG1ha2UgdGhhdCBleHBsaWNpdC5cXG4gKi9cXG4gc3RhdGljIHZvaWQgYm1fZXZpY3RfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSlcXG4ge1xcbkBAIC02NjcsMTAgKzY3NCwxMCBAQCBzdGF0aWMgdm9pZCBibV9ldmljdF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKVxcbiBcXHRcXHRzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2M7XFxuIFxcbiBcXHRcXHRtaXNjID0gaV9iaW5mbXRfbWlzYyhpbm9kZSk7XFxuLVxcdFxcdHdyaXRlX2xvY2soXFx1MDAyNm1pc2MtXFx1MDAzZWVudHJpZXNfbG9jayk7XFxuLVxcdFxcdGlmICghbGlzdF9lbXB0eShcXHUwMDI2ZS1cXHUwMDNlbGlzdCkpXFxuLVxcdFxcdFxcdGxpc3RfZGVsX2luaXQoXFx1MDAyNmUtXFx1MDAzZWxpc3QpO1xcbi1cXHRcXHR3cml0ZV91bmxvY2soXFx1MDAyNm1pc2MtXFx1MDAzZWVudHJpZXNfbG9jayk7XFxuK1xcdFxcdHNwaW5fbG9jayhcXHUwMDI2bWlzYy1cXHUwMDNlZW50cmllc19sb2NrKTtcXG4rXFx0XFx0aWYgKCFobGlzdF91bmhhc2hlZChcXHUwMDI2ZS1cXHUwMDNlbm9kZSkpXFxuK1xcdFxcdFxcdGhsaXN0X2RlbF9pbml0X3JjdShcXHUwMDI2ZS1cXHUwMDNlbm9kZSk7XFxuK1xcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZtaXNjLVxcdTAwM2VlbnRyaWVzX2xvY2spO1xcbiBcXHRcXHRwdXRfYmluZm10X2hhbmRsZXIoZSk7XFxuIFxcdH1cXG4gfVxcbkBAIC02ODksOSArNjk2LDkgQEAgc3RhdGljIHZvaWQgYm1fZXZpY3RfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSlcXG4gICovXFxuIHN0YXRpYyB2b2lkIHJlbW92ZV9iaW5mbXRfaGFuZGxlcihzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2MsIE5vZGUgKmUpXFxuIHtcXG4tXFx0d3JpdGVfbG9jayhcXHUwMDI2bWlzYy1cXHUwMDNlZW50cmllc19sb2NrKTtcXG4tXFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2ZS1cXHUwMDNlbGlzdCk7XFxuLVxcdHdyaXRlX3VubG9jayhcXHUwMDI2bWlzYy1cXHUwMDNlZW50cmllc19sb2NrKTtcXG4rXFx0c3Bpbl9sb2NrKFxcdTAwMjZtaXNjLVxcdTAwM2VlbnRyaWVzX2xvY2spO1xcbitcXHRobGlzdF9kZWxfaW5pdF9yY3UoXFx1MDAyNmUtXFx1MDAzZW5vZGUpO1xcbitcXHRzcGluX3VubG9jayhcXHUwMDI2bWlzYy1cXHUwMDNlZW50cmllc19sb2NrKTtcXG4gXFx0bG9ja2VkX3JlY3Vyc2l2ZV9yZW1vdmFsKGUtXFx1MDAzZWRlbnRyeSwgTlVMTCk7XFxuIH1cXG4gXFxuQEAgLTc0MiwxMSArNzQ5LDEzIEBAIHN0YXRpYyBzc2l6ZV90IGJtX2VudHJ5X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLFxcbiBcXHRcXHQgKiB2aWEgYm1fe2VudHJ5LHJlZ2lzdGVyLHN0YXR1c31fd3JpdGUoKSBpbm9kZV9sb2NrKCkgb24gdGhlXFxuIFxcdFxcdCAqIHJvb3QgaW5vZGUgbXVzdCBiZSBoZWxkLlxcbiBcXHRcXHQgKiBUaGUgbG9jayBpcyBleGNsdXNpdmUgZW5zdXJpbmcgdGhhdCB0aGUgbGlzdCBjYW4ndCBiZVxcbi1cXHRcXHQgKiBtb2RpZmllZC4gT25seSBsb2FkX21pc2NfYmluYXJ5KCkgY2FuIGFjY2VzcyBidXQgZG9lcyBzb1xcbi1cXHRcXHQgKiByZWFkLW9ubHkuIFNvIHdlIG9ubHkgbmVlZCB0byB0YWtlIHRoZSB3cml0ZSBsb2NrIHdoZW4gd2VcXG4tXFx0XFx0ICogYWN0dWFsbHkgcmVtb3ZlIHRoZSBlbnRyeSBmcm9tIHRoZSBsaXN0LlxcbitcXHRcXHQgKiBtb2RpZmllZC4gT25seSBsb2FkX21pc2NfYmluYXJ5KCkgY2FuIGFjY2VzcyB0aGUgbGlzdFxcbitcXHRcXHQgKiBjb25jdXJyZW50bHkgYW5kIGl0IGRvZXMgc28gdW5kZXIgUkNVLiBTbyBlbnRyaWVzX2xvY2sgb25seVxcbitcXHRcXHQgKiBuZWVkcyB0byBiZSBoZWxkIHdoZW4gYW4gZW50cnkgaXMgYWN0dWFsbHkgdW5saW5rZWQgdG9cXG4rXFx0XFx0ICogc2VyaWFsaXplIGFnYWluc3QgYm1fZXZpY3RfaW5vZGUoKSBkdXJpbmcgdW1vdW50IHdoaWNoXFxuK1xcdFxcdCAqIHVubGlua3Mgd2l0aG91dCBob2xkaW5nIGlub2RlX2xvY2suXFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRpZiAoIWxpc3RfZW1wdHkoXFx1MDAyNmUtXFx1MDAzZWxpc3QpKVxcbitcXHRcXHRpZiAoIWhsaXN0X3VuaGFzaGVkKFxcdTAwMjZlLVxcdTAwM2Vub2RlKSlcXG4gXFx0XFx0XFx0cmVtb3ZlX2JpbmZtdF9oYW5kbGVyKGlfYmluZm10X21pc2MoaW5vZGUpLCBlKTtcXG4gXFxuIFxcdFxcdGlub2RlX3VubG9jayhpbm9kZSk7XFxuQEAgLTc4OSw5ICs3OTgsOSBAQCBzdGF0aWMgaW50IGFkZF9lbnRyeShOb2RlICplLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbiBcXG4gXFx0ZF9tYWtlX3BlcnNpc3RlbnQoZGVudHJ5LCBpbm9kZSk7XFxuIFxcdG1pc2MgPSBpX2JpbmZtdF9taXNjKGlub2RlKTtcXG4tXFx0d3JpdGVfbG9jayhcXHUwMDI2bWlzYy1cXHUwMDNlZW50cmllc19sb2NrKTtcXG4tXFx0bGlzdF9hZGQoXFx1MDAyNmUtXFx1MDAzZWxpc3QsIFxcdTAwMjZtaXNjLVxcdTAwM2VlbnRyaWVzKTtcXG4tXFx0d3JpdGVfdW5sb2NrKFxcdTAwMjZtaXNjLVxcdTAwM2VlbnRyaWVzX2xvY2spO1xcbitcXHRzcGluX2xvY2soXFx1MDAyNm1pc2MtXFx1MDAzZWVudHJpZXNfbG9jayk7XFxuK1xcdGhsaXN0X2FkZF9oZWFkX3JjdShcXHUwMDI2ZS1cXHUwMDNlbm9kZSwgXFx1MDAyNm1pc2MtXFx1MDAzZWVudHJpZXMpO1xcbitcXHRzcGluX3VubG9jayhcXHUwMDI2bWlzYy1cXHUwMDNlZW50cmllc19sb2NrKTtcXG4gXFx0c2ltcGxlX2RvbmVfY3JlYXRpbmcoZGVudHJ5KTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5AQCAtODU0LDcgKzg2Myw3IEBAIGJtX3N0YXR1c19yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbmJ5dGVzLCBsb2ZmX3QgKnBwb3MpXFxuIFxcdGNoYXIgKnM7XFxuIFxcbiBcXHRtaXNjID0gaV9iaW5mbXRfbWlzYyhmaWxlX2lub2RlKGZpbGUpKTtcXG4tXFx0cyA9IG1pc2MtXFx1MDAzZWVuYWJsZWQgPyBcXFwiZW5hYmxlZFxcXFxuXFxcIiA6IFxcXCJkaXNhYmxlZFxcXFxuXFxcIjtcXG4rXFx0cyA9IFJFQURfT05DRShtaXNjLVxcdTAwM2VlbmFibGVkKSA/IFxcXCJlbmFibGVkXFxcXG5cXFwiIDogXFxcImRpc2FibGVkXFxcXG5cXFwiO1xcbiBcXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIoYnVmLCBuYnl0ZXMsIHBwb3MsIHMsIHN0cmxlbihzKSk7XFxuIH1cXG4gXFxuQEAgLTg2MywxOCArODcyLDE5IEBAIHN0YXRpYyBzc2l6ZV90IGJtX3N0YXR1c193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlcixcXG4ge1xcbiBcXHRzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2M7XFxuIFxcdGludCByZXMgPSBwYXJzZV9jb21tYW5kKGJ1ZmZlciwgY291bnQpO1xcbi1cXHROb2RlICplLCAqbmV4dDtcXG4rXFx0c3RydWN0IGhsaXN0X25vZGUgKm5leHQ7XFxuIFxcdHN0cnVjdCBpbm9kZSAqaW5vZGU7XFxuK1xcdE5vZGUgKmU7XFxuIFxcbiBcXHRtaXNjID0gaV9iaW5mbXRfbWlzYyhmaWxlX2lub2RlKGZpbGUpKTtcXG4gXFx0c3dpdGNoIChyZXMpIHtcXG4gXFx0Y2FzZSAxOlxcbiBcXHRcXHQvKiBEaXNhYmxlIGFsbCBoYW5kbGVycy4gKi9cXG4tXFx0XFx0bWlzYy1cXHUwMDNlZW5hYmxlZCA9IGZhbHNlO1xcbitcXHRcXHRXUklURV9PTkNFKG1pc2MtXFx1MDAzZWVuYWJsZWQsIGZhbHNlKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgMjpcXG4gXFx0XFx0LyogRW5hYmxlIGFsbCBoYW5kbGVycy4gKi9cXG4tXFx0XFx0bWlzYy1cXHUwMDNlZW5hYmxlZCA9IHRydWU7XFxuK1xcdFxcdFdSSVRFX09OQ0UobWlzYy1cXHUwMDNlZW5hYmxlZCwgdHJ1ZSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIDM6XFxuIFxcdFxcdC8qIERlbGV0ZSBhbGwgaGFuZGxlcnMuICovXFxuQEAgLTg4NiwxMSArODk2LDEzIEBAIHN0YXRpYyBzc2l6ZV90IGJtX3N0YXR1c193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlcixcXG4gXFx0XFx0ICogdmlhIGJtX3tlbnRyeSxyZWdpc3RlcixzdGF0dXN9X3dyaXRlKCkgaW5vZGVfbG9jaygpIG9uIHRoZVxcbiBcXHRcXHQgKiByb290IGlub2RlIG11c3QgYmUgaGVsZC5cXG4gXFx0XFx0ICogVGhlIGxvY2sgaXMgZXhjbHVzaXZlIGVuc3VyaW5nIHRoYXQgdGhlIGxpc3QgY2FuJ3QgYmVcXG4tXFx0XFx0ICogbW9kaWZpZWQuIE9ubHkgbG9hZF9taXNjX2JpbmFyeSgpIGNhbiBhY2Nlc3MgYnV0IGRvZXMgc29cXG4tXFx0XFx0ICogcmVhZC1vbmx5LiBTbyB3ZSBvbmx5IG5lZWQgdG8gdGFrZSB0aGUgd3JpdGUgbG9jayB3aGVuIHdlXFxuLVxcdFxcdCAqIGFjdHVhbGx5IHJlbW92ZSB0aGUgZW50cnkgZnJvbSB0aGUgbGlzdC5cXG4rXFx0XFx0ICogbW9kaWZpZWQuIE9ubHkgbG9hZF9taXNjX2JpbmFyeSgpIGNhbiBhY2Nlc3MgdGhlIGxpc3RcXG4rXFx0XFx0ICogY29uY3VycmVudGx5IGFuZCBpdCBkb2VzIHNvIHVuZGVyIFJDVS4gU28gZW50cmllc19sb2NrIG9ubHlcXG4rXFx0XFx0ICogbmVlZHMgdG8gYmUgaGVsZCB3aGVuIGFuIGVudHJ5IGlzIGFjdHVhbGx5IHVubGlua2VkIHRvXFxuK1xcdFxcdCAqIHNlcmlhbGl6ZSBhZ2FpbnN0IGJtX2V2aWN0X2lub2RlKCkgZHVyaW5nIHVtb3VudCB3aGljaFxcbitcXHRcXHQgKiB1bmxpbmtzIHdpdGhvdXQgaG9sZGluZyBpbm9kZV9sb2NrLlxcbiBcXHRcXHQgKi9cXG4tXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGUsIG5leHQsIFxcdTAwMjZtaXNjLVxcdTAwM2VlbnRyaWVzLCBsaXN0KVxcbitcXHRcXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGUsIG5leHQsIFxcdTAwMjZtaXNjLVxcdTAwM2VlbnRyaWVzLCBub2RlKVxcbiBcXHRcXHRcXHRyZW1vdmVfYmluZm10X2hhbmRsZXIobWlzYywgZSk7XFxuIFxcbiBcXHRcXHRpbm9kZV91bmxvY2soaW5vZGUpO1xcbkBAIC05NjUsOCArOTc3LDggQEAgc3RhdGljIGludCBibV9maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG4gXFx0XFx0aWYgKCFtaXNjKVxcbiBcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuLVxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZtaXNjLVxcdTAwM2VlbnRyaWVzKTtcXG4tXFx0XFx0cndsb2NrX2luaXQoXFx1MDAyNm1pc2MtXFx1MDAzZWVudHJpZXNfbG9jayk7XFxuK1xcdFxcdElOSVRfSExJU1RfSEVBRChcXHUwMDI2bWlzYy1cXHUwMDNlZW50cmllcyk7XFxuK1xcdFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZtaXNjLVxcdTAwM2VlbnRyaWVzX2xvY2spO1xcbiBcXG4gXFx0XFx0LyogUGFpcnMgd2l0aCBzbXBfbG9hZF9hY3F1aXJlKCkgaW4gbG9hZF9iaW5mbXRfbWlzYygpLiAqL1xcbiBcXHRcXHRzbXBfc3RvcmVfcmVsZWFzZShcXHUwMDI2dXNlcl9ucy1cXHUwMDNlYmluZm10X21pc2MsIG1pc2MpO1xcbkBAIC05ODMsNyArOTk1LDcgQEAgc3RhdGljIGludCBibV9maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG4gXFx0ICogc29tZW9uZSBtb3VudHMgYmluZm10X21pc2MgZm9yIHRoZSBmaXJzdCB0aW1lIG9yIGFnYWluIHdlIHNpbXBseVxcbiBcXHQgKiByZXNldCAtXFx1MDAzZWVuYWJsZWQgdG8gdHJ1ZS5cXG4gXFx0ICovXFxuLVxcdG1pc2MtXFx1MDAzZWVuYWJsZWQgPSB0cnVlO1xcbitcXHRXUklURV9PTkNFKG1pc2MtXFx1MDAzZWVuYWJsZWQsIHRydWUpO1xcbiBcXG4gXFx0ZXJyID0gc2ltcGxlX2ZpbGxfc3VwZXIoc2IsIEJJTkZNVEZTX01BR0lDLCBibV9maWxlcyk7XFxuIFxcdGlmICghZXJyKVxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCBiL2luY2x1ZGUvbGludXgvYmluZm10cy5oXFxuaW5kZXggMmM3N2UzODNlNzM3NTcuLjdlNzMzM2I3YmIwZjExIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvYmluZm10cy5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9iaW5mbXRzLmhcXG5AQCAtMTAxLDggKzEwMSw4IEBAIHN0cnVjdCBsaW51eF9iaW5mbXQge1xcbiBcXG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX0JJTkZNVF9NSVNDKVxcbiBzdHJ1Y3QgYmluZm10X21pc2Mge1xcbi1cXHRzdHJ1Y3QgbGlzdF9oZWFkIGVudHJpZXM7XFxuLVxcdHJ3bG9ja190IGVudHJpZXNfbG9jaztcXG4rXFx0c3RydWN0IGhsaXN0X2hlYWQgZW50cmllcztcXG4rXFx0c3BpbmxvY2tfdCBlbnRyaWVzX2xvY2s7XFxuIFxcdGJvb2wgZW5hYmxlZDtcXG4gfSBfX3JhbmRvbWl6ZV9sYXlvdXQ7XFxuIFxcbmRpZmYgLS1naXQgYS9rZXJuZWwvdXNlci5jIGIva2VybmVsL3VzZXIuY1xcbmluZGV4IDdhZWY0ZTY3OWE2YTBjLi4yMWJhZmRjMTEzNzk1NiAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvdXNlci5jXFxuKysrIGIva2VybmVsL3VzZXIuY1xcbkBAIC0yMyw5ICsyMyw5IEBAXFxuIFxcbiAjaWYgSVNfRU5BQkxFRChDT05GSUdfQklORk1UX01JU0MpXFxuIHN0cnVjdCBiaW5mbXRfbWlzYyBpbml0X2JpbmZtdF9taXNjID0ge1xcbi1cXHQuZW50cmllcyA9IExJU1RfSEVBRF9JTklUKGluaXRfYmluZm10X21pc2MuZW50cmllcyksXFxuK1xcdC5lbnRyaWVzID0gSExJU1RfSEVBRF9JTklULFxcbiBcXHQuZW5hYmxlZCA9IHRydWUsXFxuLVxcdC5lbnRyaWVzX2xvY2sgPSBfX1JXX0xPQ0tfVU5MT0NLRUQoaW5pdF9iaW5mbXRfbWlzYy5lbnRyaWVzX2xvY2spLFxcbitcXHQuZW50cmllc19sb2NrID0gX19TUElOX0xPQ0tfVU5MT0NLRUQoaW5pdF9iaW5mbXRfbWlzYy5lbnRyaWVzX2xvY2spLFxcbiB9O1xcbiBFWFBPUlRfU1lNQk9MX0dQTChpbml0X2JpbmZtdF9taXNjKTtcXG4gI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDEwOjMyOjI3LjcxMzExMjI5MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjU1NzEwODA2NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQklORk1UX01JU0NcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJsb2FkX21pc2NfYmluYXJ5XCIsXG4gICAgXCJibV9lbnRyeV93cml0ZVwiLFxuICAgIFwiYm1fc3RhdHVzX3dyaXRlXCIsXG4gICAgXCJibV9ldmljdF9pbm9kZVwiLFxuICAgIFwiYWRkX2VudHJ5XCIsXG4gICAgXCJnZXRfYmluZm10X2hhbmRsZXJcIixcbiAgICBcInNlYXJjaF9iaW5mbXRfaGFuZGxlclwiLFxuICAgIFwicmVtb3ZlX2JpbmZtdF9oYW5kbGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIG9mIGBiaW5mbXRfbWlzY2AgZnJvbSBhIGRvdWJseS1saW5rZWQgbGlzdCB3aXRoIGEgcndsb2NrIHRvIGFuIFJDVS1wcm90ZWN0ZWQgaGFzaCBsaXN0IHdpdGggYSBzcGlubG9jay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgY29yZSBsb2dpYyBvZiBgYmluZm10X21pc2NgIHJlZ2lzdHJhdGlvbiwgdW5yZWdpc3RyYXRpb24sIGFuZCBiaW5hcnkgZXhlY3V0aW9uLiBJdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgbmV3IFJDVSBsb2dpYyBhbmQgbG9ja2xlc3MgdHJhdmVyc2FsIGRvIG5vdCBpbnRyb2R1Y2UgcmFjZSBjb25kaXRpb25zLCB1c2UtYWZ0ZXItZnJlZSwgb3Igb3RoZXIgbWVtb3J5IHNhZmV0eSBpc3N1ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTI5MTc1Nzg3Mzc3YTc4M2JmMjllZWNmZTQyZjQzYTUzZGM3N2FmZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDkgMTA6MzI6MjUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9iaW5mbXRfbWlzYy5jIGIvZnMvYmluZm10X21pc2MuY1xuaW5kZXggODQzNDlmY2I5M2YxM2EuLjBmMDQ3MDlhMGEzOWY1IDEwMDY0NFxuLS0tIGEvZnMvYmluZm10X21pc2MuY1xuKysrIGIvZnMvYmluZm10X21pc2MuY1xuQEAgLTI0LDYgKzI0LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wYWdlbWFwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uYW1laS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW91bnQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JjdWxpc3QuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZzX2NvbnRleHQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3N5c2NhbGxzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXG5AQCAtNDgsNyArNDksNyBAQCBlbnVtIHtFbmFibGVkLCBNYWdpY307XG4gI2RlZmluZSBNSVNDX0ZNVF9PUEVOX0ZJTEUgKDFVTCBcdTAwM2NcdTAwM2MgMjgpXG4gXG4gdHlwZWRlZiBzdHJ1Y3Qge1xuLVx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuK1x0c3RydWN0IGhsaXN0X25vZGUgbm9kZTtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XHRcdC8qIHR5cGUsIHN0YXR1cywgZXRjLiAqL1xuIFx0aW50IG9mZnNldDtcdFx0XHQvKiBvZmZzZXQgb2YgbWFnaWMgKi9cbiBcdGludCBzaXplO1x0XHRcdC8qIHNpemUgb2YgbWFnaWMvbWFzayAqL1xuQEAgLTU5LDYgKzYwLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qge1xuIFx0c3RydWN0IGRlbnRyeSAqZGVudHJ5O1xuIFx0c3RydWN0IGZpbGUgKmludGVycF9maWxlO1xuIFx0cmVmY291bnRfdCB1c2VycztcdFx0Lyogc3luYyByZW1vdmFsIHdpdGggbG9hZF9taXNjX2JpbmFyeSgpICovXG4rXHRzdHJ1Y3QgcmN1X2hlYWQgcmN1O1xuIH0gTm9kZTtcbiBcbiBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgYm1fZnNfdHlwZTtcbkBAIC04Niw2ICs4OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBibV9mc190eXBlO1xuICAqIFNlYXJjaCBmb3IgYSBiaW5hcnkgdHlwZSBoYW5kbGVyIGZvciBAYnBybSBpbiB0aGUgbGlzdCBvZiByZWdpc3RlcmVkIGJpbmFyeVxuICAqIHR5cGUgaGFuZGxlcnMuXG4gICpcbisgKiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgUkNVIHJlYWQgbG9jay5cbisgKlxuICAqIFJldHVybjogYmluYXJ5IHR5cGUgbGlzdCBlbnRyeSBvbiBzdWNjZXNzLCBOVUxMIG9uIGZhaWx1cmVcbiAgKi9cbiBzdGF0aWMgTm9kZSAqc2VhcmNoX2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYyxcbkBAIC05NSw3ICs5OSw3IEBAIHN0YXRpYyBOb2RlICpzZWFyY2hfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLFxuIFx0Tm9kZSAqZTtcbiBcbiBcdC8qIFdhbGsgYWxsIHRoZSByZWdpc3RlcmVkIGhhbmRsZXJzLiAqL1xuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeShlLCBcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXMsIGxpc3QpIHtcbitcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShlLCBcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXMsIG5vZGUpIHtcbiBcdFx0Y2hhciAqcztcbiBcdFx0aW50IGo7XG4gXG5AQCAtMTM0LDcgKzEzOCwxMCBAQCBzdGF0aWMgTm9kZSAqc2VhcmNoX2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYyxcbiAgKiBAYnBybTogYmluYXJ5IGZvciB3aGljaCB3ZSBhcmUgbG9va2luZyBmb3IgYSBoYW5kbGVyXG4gICpcbiAgKiBUcnkgdG8gZmluZCBhIGJpbmZtdCBoYW5kbGVyIGZvciB0aGUgYmluYXJ5IHR5cGUuIElmIG9uZSBpcyBmb3VuZCB0YWtlIGFcbi0gKiByZWZlcmVuY2UgdG8gcHJvdGVjdCBhZ2FpbnN0IHJlbW92YWwgdmlhIGJtX3tlbnRyeSxzdGF0dXN9X3dyaXRlKCkuXG4rICogcmVmZXJlbmNlIHRvIHByb3RlY3QgYWdhaW5zdCByZW1vdmFsIHZpYSBibV97ZW50cnksc3RhdHVzfV93cml0ZSgpLiBUaGVcbisgKiByZWZjb3VudCBvZiBhbiBlbnRyeSBjYW4gb25seSBkcm9wIHRvIHplcm8gb25jZSBpdCBoYXMgYmVlbiB1bmxpbmtlZCBhbmRcbisgKiBhIHJlc3RhcnRlZCBzZWFyY2ggY2Fubm90IGZpbmQgYW4gdW5saW5rZWQgZW50cnkgYWdhaW4gc28gdGhlIHJldHJ5IGxvb3BcbisgKiBpcyBib3VuZGVkLlxuICAqXG4gICogUmV0dXJuOiBiaW5hcnkgdHlwZSBsaXN0IGVudHJ5IG9uIHN1Y2Nlc3MsIE5VTEwgb24gZmFpbHVyZVxuICAqL1xuQEAgLTE0MywxMSArMTUwLDEwIEBAIHN0YXRpYyBOb2RlICpnZXRfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLFxuIHtcbiBcdE5vZGUgKmU7XG4gXG4tXHRyZWFkX2xvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuLVx0ZSA9IHNlYXJjaF9iaW5mbXRfaGFuZGxlcihtaXNjLCBicHJtKTtcbi1cdGlmIChlKVxuLVx0XHRyZWZjb3VudF9pbmMoXHUwMDI2ZS1cdTAwM2V1c2Vycyk7XG4tXHRyZWFkX3VubG9jayhcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXNfbG9jayk7XG4rXHRndWFyZChyY3UpKCk7XG4rXHRkbyB7XG4rXHRcdGUgPSBzZWFyY2hfYmluZm10X2hhbmRsZXIobWlzYywgYnBybSk7XG4rXHR9IHdoaWxlIChlIFx1MDAyNlx1MDAyNiAhcmVmY291bnRfaW5jX25vdF96ZXJvKFx1MDAyNmUtXHUwMDNldXNlcnMpKTtcbiBcdHJldHVybiBlO1xuIH1cbiBcbkBAIC0xNjQsNyArMTcwLDggQEAgc3RhdGljIHZvaWQgcHV0X2JpbmZtdF9oYW5kbGVyKE5vZGUgKmUpXG4gXHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNmUtXHUwMDNldXNlcnMpKSB7XG4gXHRcdGlmIChlLVx1MDAzZWZsYWdzIFx1MDAyNiBNSVNDX0ZNVF9PUEVOX0ZJTEUpXG4gXHRcdFx0ZmlscF9jbG9zZShlLVx1MDAzZWludGVycF9maWxlLCBOVUxMKTtcbi1cdFx0a2ZyZWUoZSk7XG4rXHRcdC8qIExvY2tsZXNzIHdhbGtlcnMgbWF5IHN0aWxsIGRlcmVmZXJlbmNlIHRoaXMgZW50cnkuICovXG4rXHRcdGtmcmVlX3JjdShlLCByY3UpO1xuIFx0fVxuIH1cbiBcbkBAIC0yMDgsNyArMjE1LDcgQEAgc3RhdGljIGludCBsb2FkX21pc2NfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4gXHRzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2M7XG4gXG4gXHRtaXNjID0gbG9hZF9iaW5mbXRfbWlzYygpO1xuLVx0aWYgKCFtaXNjLVx1MDAzZWVuYWJsZWQpXG4rXHRpZiAoIVJFQURfT05DRShtaXNjLVx1MDAzZWVuYWJsZWQpKVxuIFx0XHRyZXR1cm4gcmV0dmFsO1xuIFxuIFx0Zm10ID0gZ2V0X2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0pO1xuQEAgLTY1NCw4ICs2NjEsOCBAQCBzdGF0aWMgc3RydWN0IGJpbmZtdF9taXNjICppX2JpbmZtdF9taXNjKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4gICpcbiAgKiBJZiB0aGUgLVx1MDAzZWV2aWN0IGNhbGwgd2FzIG5vdCBjYXVzZWQgYnkgYSBzdXBlciBibG9jayBzaHV0ZG93biBidXQgYnkgYSB3cml0ZVxuICAqIHRvIHJlbW92ZSB0aGUgZW50cnkgb3IgYWxsIGVudHJpZXMgdmlhIGJtX3tlbnRyeSxzdGF0dXN9X3dyaXRlKCkgdGhlIGVudHJ5XG4tICogd2lsbCBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVkIGZyb20gdGhlIGxpc3QuIFdlIGtlZXAgdGhlIGxpc3RfZW1wdHkoKSBjaGVja1xuLSAqIHRvIG1ha2UgdGhhdCBleHBsaWNpdC5cbisgKiB3aWxsIGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgbGlzdC4gV2Uga2VlcCB0aGUgaGxpc3RfdW5oYXNoZWQoKVxuKyAqIGNoZWNrIHRvIG1ha2UgdGhhdCBleHBsaWNpdC5cbiAqL1xuIHN0YXRpYyB2b2lkIGJtX2V2aWN0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4ge1xuQEAgLTY2NywxMCArNjc0LDEwIEBAIHN0YXRpYyB2b2lkIGJtX2V2aWN0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4gXHRcdHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYztcbiBcbiBcdFx0bWlzYyA9IGlfYmluZm10X21pc2MoaW5vZGUpO1xuLVx0XHR3cml0ZV9sb2NrKFx1MDAyNm1pc2MtXHUwMDNlZW50cmllc19sb2NrKTtcbi1cdFx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNmUtXHUwMDNlbGlzdCkpXG4tXHRcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZlLVx1MDAzZWxpc3QpO1xuLVx0XHR3cml0ZV91bmxvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuK1x0XHRzcGluX2xvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuK1x0XHRpZiAoIWhsaXN0X3VuaGFzaGVkKFx1MDAyNmUtXHUwMDNlbm9kZSkpXG4rXHRcdFx0aGxpc3RfZGVsX2luaXRfcmN1KFx1MDAyNmUtXHUwMDNlbm9kZSk7XG4rXHRcdHNwaW5fdW5sb2NrKFx1MDAyNm1pc2MtXHUwMDNlZW50cmllc19sb2NrKTtcbiBcdFx0cHV0X2JpbmZtdF9oYW5kbGVyKGUpO1xuIFx0fVxuIH1cbkBAIC02ODksOSArNjk2LDkgQEAgc3RhdGljIHZvaWQgYm1fZXZpY3RfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSlcbiAgKi9cbiBzdGF0aWMgdm9pZCByZW1vdmVfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLCBOb2RlICplKVxuIHtcbi1cdHdyaXRlX2xvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuLVx0bGlzdF9kZWxfaW5pdChcdTAwMjZlLVx1MDAzZWxpc3QpO1xuLVx0d3JpdGVfdW5sb2NrKFx1MDAyNm1pc2MtXHUwMDNlZW50cmllc19sb2NrKTtcbitcdHNwaW5fbG9jayhcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXNfbG9jayk7XG4rXHRobGlzdF9kZWxfaW5pdF9yY3UoXHUwMDI2ZS1cdTAwM2Vub2RlKTtcbitcdHNwaW5fdW5sb2NrKFx1MDAyNm1pc2MtXHUwMDNlZW50cmllc19sb2NrKTtcbiBcdGxvY2tlZF9yZWN1cnNpdmVfcmVtb3ZhbChlLVx1MDAzZWRlbnRyeSwgTlVMTCk7XG4gfVxuIFxuQEAgLTc0MiwxMSArNzQ5LDEzIEBAIHN0YXRpYyBzc2l6ZV90IGJtX2VudHJ5X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLFxuIFx0XHQgKiB2aWEgYm1fe2VudHJ5LHJlZ2lzdGVyLHN0YXR1c31fd3JpdGUoKSBpbm9kZV9sb2NrKCkgb24gdGhlXG4gXHRcdCAqIHJvb3QgaW5vZGUgbXVzdCBiZSBoZWxkLlxuIFx0XHQgKiBUaGUgbG9jayBpcyBleGNsdXNpdmUgZW5zdXJpbmcgdGhhdCB0aGUgbGlzdCBjYW4ndCBiZVxuLVx0XHQgKiBtb2RpZmllZC4gT25seSBsb2FkX21pc2NfYmluYXJ5KCkgY2FuIGFjY2VzcyBidXQgZG9lcyBzb1xuLVx0XHQgKiByZWFkLW9ubHkuIFNvIHdlIG9ubHkgbmVlZCB0byB0YWtlIHRoZSB3cml0ZSBsb2NrIHdoZW4gd2Vcbi1cdFx0ICogYWN0dWFsbHkgcmVtb3ZlIHRoZSBlbnRyeSBmcm9tIHRoZSBsaXN0LlxuK1x0XHQgKiBtb2RpZmllZC4gT25seSBsb2FkX21pc2NfYmluYXJ5KCkgY2FuIGFjY2VzcyB0aGUgbGlzdFxuK1x0XHQgKiBjb25jdXJyZW50bHkgYW5kIGl0IGRvZXMgc28gdW5kZXIgUkNVLiBTbyBlbnRyaWVzX2xvY2sgb25seVxuK1x0XHQgKiBuZWVkcyB0byBiZSBoZWxkIHdoZW4gYW4gZW50cnkgaXMgYWN0dWFsbHkgdW5saW5rZWQgdG9cbitcdFx0ICogc2VyaWFsaXplIGFnYWluc3QgYm1fZXZpY3RfaW5vZGUoKSBkdXJpbmcgdW1vdW50IHdoaWNoXG4rXHRcdCAqIHVubGlua3Mgd2l0aG91dCBob2xkaW5nIGlub2RlX2xvY2suXG4gXHRcdCAqL1xuLVx0XHRpZiAoIWxpc3RfZW1wdHkoXHUwMDI2ZS1cdTAwM2VsaXN0KSlcbitcdFx0aWYgKCFobGlzdF91bmhhc2hlZChcdTAwMjZlLVx1MDAzZW5vZGUpKVxuIFx0XHRcdHJlbW92ZV9iaW5mbXRfaGFuZGxlcihpX2JpbmZtdF9taXNjKGlub2RlKSwgZSk7XG4gXG4gXHRcdGlub2RlX3VubG9jayhpbm9kZSk7XG5AQCAtNzg5LDkgKzc5OCw5IEBAIHN0YXRpYyBpbnQgYWRkX2VudHJ5KE5vZGUgKmUsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4gXG4gXHRkX21ha2VfcGVyc2lzdGVudChkZW50cnksIGlub2RlKTtcbiBcdG1pc2MgPSBpX2JpbmZtdF9taXNjKGlub2RlKTtcbi1cdHdyaXRlX2xvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuLVx0bGlzdF9hZGQoXHUwMDI2ZS1cdTAwM2VsaXN0LCBcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXMpO1xuLVx0d3JpdGVfdW5sb2NrKFx1MDAyNm1pc2MtXHUwMDNlZW50cmllc19sb2NrKTtcbitcdHNwaW5fbG9jayhcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXNfbG9jayk7XG4rXHRobGlzdF9hZGRfaGVhZF9yY3UoXHUwMDI2ZS1cdTAwM2Vub2RlLCBcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXMpO1xuK1x0c3Bpbl91bmxvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuIFx0c2ltcGxlX2RvbmVfY3JlYXRpbmcoZGVudHJ5KTtcbiBcdHJldHVybiAwO1xuIH1cbkBAIC04NTQsNyArODYzLDcgQEAgYm1fc3RhdHVzX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICpidWYsIHNpemVfdCBuYnl0ZXMsIGxvZmZfdCAqcHBvcylcbiBcdGNoYXIgKnM7XG4gXG4gXHRtaXNjID0gaV9iaW5mbXRfbWlzYyhmaWxlX2lub2RlKGZpbGUpKTtcbi1cdHMgPSBtaXNjLVx1MDAzZWVuYWJsZWQgPyBcImVuYWJsZWRcXG5cIiA6IFwiZGlzYWJsZWRcXG5cIjtcbitcdHMgPSBSRUFEX09OQ0UobWlzYy1cdTAwM2VlbmFibGVkKSA/IFwiZW5hYmxlZFxcblwiIDogXCJkaXNhYmxlZFxcblwiO1xuIFx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKGJ1ZiwgbmJ5dGVzLCBwcG9zLCBzLCBzdHJsZW4ocykpO1xuIH1cbiBcbkBAIC04NjMsMTggKzg3MiwxOSBAQCBzdGF0aWMgc3NpemVfdCBibV9zdGF0dXNfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsXG4ge1xuIFx0c3RydWN0IGJpbmZtdF9taXNjICptaXNjO1xuIFx0aW50IHJlcyA9IHBhcnNlX2NvbW1hbmQoYnVmZmVyLCBjb3VudCk7XG4tXHROb2RlICplLCAqbmV4dDtcbitcdHN0cnVjdCBobGlzdF9ub2RlICpuZXh0O1xuIFx0c3RydWN0IGlub2RlICppbm9kZTtcbitcdE5vZGUgKmU7XG4gXG4gXHRtaXNjID0gaV9iaW5mbXRfbWlzYyhmaWxlX2lub2RlKGZpbGUpKTtcbiBcdHN3aXRjaCAocmVzKSB7XG4gXHRjYXNlIDE6XG4gXHRcdC8qIERpc2FibGUgYWxsIGhhbmRsZXJzLiAqL1xuLVx0XHRtaXNjLVx1MDAzZWVuYWJsZWQgPSBmYWxzZTtcbitcdFx0V1JJVEVfT05DRShtaXNjLVx1MDAzZWVuYWJsZWQsIGZhbHNlKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIDI6XG4gXHRcdC8qIEVuYWJsZSBhbGwgaGFuZGxlcnMuICovXG4tXHRcdG1pc2MtXHUwMDNlZW5hYmxlZCA9IHRydWU7XG4rXHRcdFdSSVRFX09OQ0UobWlzYy1cdTAwM2VlbmFibGVkLCB0cnVlKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIDM6XG4gXHRcdC8qIERlbGV0ZSBhbGwgaGFuZGxlcnMuICovXG5AQCAtODg2LDExICs4OTYsMTMgQEAgc3RhdGljIHNzaXplX3QgYm1fc3RhdHVzX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLFxuIFx0XHQgKiB2aWEgYm1fe2VudHJ5LHJlZ2lzdGVyLHN0YXR1c31fd3JpdGUoKSBpbm9kZV9sb2NrKCkgb24gdGhlXG4gXHRcdCAqIHJvb3QgaW5vZGUgbXVzdCBiZSBoZWxkLlxuIFx0XHQgKiBUaGUgbG9jayBpcyBleGNsdXNpdmUgZW5zdXJpbmcgdGhhdCB0aGUgbGlzdCBjYW4ndCBiZVxuLVx0XHQgKiBtb2RpZmllZC4gT25seSBsb2FkX21pc2NfYmluYXJ5KCkgY2FuIGFjY2VzcyBidXQgZG9lcyBzb1xuLVx0XHQgKiByZWFkLW9ubHkuIFNvIHdlIG9ubHkgbmVlZCB0byB0YWtlIHRoZSB3cml0ZSBsb2NrIHdoZW4gd2Vcbi1cdFx0ICogYWN0dWFsbHkgcmVtb3ZlIHRoZSBlbnRyeSBmcm9tIHRoZSBsaXN0LlxuK1x0XHQgKiBtb2RpZmllZC4gT25seSBsb2FkX21pc2NfYmluYXJ5KCkgY2FuIGFjY2VzcyB0aGUgbGlzdFxuK1x0XHQgKiBjb25jdXJyZW50bHkgYW5kIGl0IGRvZXMgc28gdW5kZXIgUkNVLiBTbyBlbnRyaWVzX2xvY2sgb25seVxuK1x0XHQgKiBuZWVkcyB0byBiZSBoZWxkIHdoZW4gYW4gZW50cnkgaXMgYWN0dWFsbHkgdW5saW5rZWQgdG9cbitcdFx0ICogc2VyaWFsaXplIGFnYWluc3QgYm1fZXZpY3RfaW5vZGUoKSBkdXJpbmcgdW1vdW50IHdoaWNoXG4rXHRcdCAqIHVubGlua3Mgd2l0aG91dCBob2xkaW5nIGlub2RlX2xvY2suXG4gXHRcdCAqL1xuLVx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZSwgbmV4dCwgXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzLCBsaXN0KVxuK1x0XHRobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGUsIG5leHQsIFx1MDAyNm1pc2MtXHUwMDNlZW50cmllcywgbm9kZSlcbiBcdFx0XHRyZW1vdmVfYmluZm10X2hhbmRsZXIobWlzYywgZSk7XG4gXG4gXHRcdGlub2RlX3VubG9jayhpbm9kZSk7XG5AQCAtOTY1LDggKzk3Nyw4IEBAIHN0YXRpYyBpbnQgYm1fZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4gXHRcdGlmICghbWlzYylcbiBcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbi1cdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzKTtcbi1cdFx0cndsb2NrX2luaXQoXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuK1x0XHRJTklUX0hMSVNUX0hFQUQoXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzKTtcbitcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuIFxuIFx0XHQvKiBQYWlycyB3aXRoIHNtcF9sb2FkX2FjcXVpcmUoKSBpbiBsb2FkX2JpbmZtdF9taXNjKCkuICovXG4gXHRcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNnVzZXJfbnMtXHUwMDNlYmluZm10X21pc2MsIG1pc2MpO1xuQEAgLTk4Myw3ICs5OTUsNyBAQCBzdGF0aWMgaW50IGJtX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuIFx0ICogc29tZW9uZSBtb3VudHMgYmluZm10X21pc2MgZm9yIHRoZSBmaXJzdCB0aW1lIG9yIGFnYWluIHdlIHNpbXBseVxuIFx0ICogcmVzZXQgLVx1MDAzZWVuYWJsZWQgdG8gdHJ1ZS5cbiBcdCAqL1xuLVx0bWlzYy1cdTAwM2VlbmFibGVkID0gdHJ1ZTtcbitcdFdSSVRFX09OQ0UobWlzYy1cdTAwM2VlbmFibGVkLCB0cnVlKTtcbiBcbiBcdGVyciA9IHNpbXBsZV9maWxsX3N1cGVyKHNiLCBCSU5GTVRGU19NQUdJQywgYm1fZmlsZXMpO1xuIFx0aWYgKCFlcnIpXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9iaW5mbXRzLmggYi9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaFxuaW5kZXggMmM3N2UzODNlNzM3NTcuLjdlNzMzM2I3YmIwZjExIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9iaW5mbXRzLmhcbisrKyBiL2luY2x1ZGUvbGludXgvYmluZm10cy5oXG5AQCAtMTAxLDggKzEwMSw4IEBAIHN0cnVjdCBsaW51eF9iaW5mbXQge1xuIFxuICNpZiBJU19FTkFCTEVEKENPTkZJR19CSU5GTVRfTUlTQylcbiBzdHJ1Y3QgYmluZm10X21pc2Mge1xuLVx0c3RydWN0IGxpc3RfaGVhZCBlbnRyaWVzO1xuLVx0cndsb2NrX3QgZW50cmllc19sb2NrO1xuK1x0c3RydWN0IGhsaXN0X2hlYWQgZW50cmllcztcbitcdHNwaW5sb2NrX3QgZW50cmllc19sb2NrO1xuIFx0Ym9vbCBlbmFibGVkO1xuIH0gX19yYW5kb21pemVfbGF5b3V0O1xuIFxuZGlmZiAtLWdpdCBhL2tlcm5lbC91c2VyLmMgYi9rZXJuZWwvdXNlci5jXG5pbmRleCA3YWVmNGU2NzlhNmEwYy4uMjFiYWZkYzExMzc5NTYgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvdXNlci5jXG4rKysgYi9rZXJuZWwvdXNlci5jXG5AQCAtMjMsOSArMjMsOSBAQFxuIFxuICNpZiBJU19FTkFCTEVEKENPTkZJR19CSU5GTVRfTUlTQylcbiBzdHJ1Y3QgYmluZm10X21pc2MgaW5pdF9iaW5mbXRfbWlzYyA9IHtcbi1cdC5lbnRyaWVzID0gTElTVF9IRUFEX0lOSVQoaW5pdF9iaW5mbXRfbWlzYy5lbnRyaWVzKSxcbitcdC5lbnRyaWVzID0gSExJU1RfSEVBRF9JTklULFxuIFx0LmVuYWJsZWQgPSB0cnVlLFxuLVx0LmVudHJpZXNfbG9jayA9IF9fUldfTE9DS19VTkxPQ0tFRChpbml0X2JpbmZtdF9taXNjLmVudHJpZXNfbG9jayksXG4rXHQuZW50cmllc19sb2NrID0gX19TUElOX0xPQ0tfVU5MT0NLRUQoaW5pdF9iaW5mbXRfbWlzYy5lbnRyaWVzX2xvY2spLFxuIH07XG4gRVhQT1JUX1NZTUJPTF9HUEwoaW5pdF9iaW5mbXRfbWlzYyk7XG4gI2VuZGlmXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxMDozMjoyNy43MTMxMTM3MTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTA3NDExOTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQmluZm10X01pc2MgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyBtYWtpbmcgc29tZSBmdW5kYW1lbnRhbCBjaGFuZ2VzIHRvIHRoZSBiaW5mbXRfbWlzYyBzdWJzeXN0ZW0uIFRoaXMgaXMgYSBjb3JlIGtlcm5lbCBhcmVhLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgbWlzY2VsbGFuZW91cyBiaW5hcnkgZm9ybWF0cy4gVGhlIHBhdGNoIHRvdWNoZXMgYGZzL2JpbmZtdF9taXNjLmNgLCBgaW5jbHVkZS9saW51eC9iaW5mbXRzLmhgLCBhbmQgYGtlcm5lbC91c2VyLmNgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyB0aGlzIGFzIHBvdGVudGlhbGx5IHNpZ25pZmljYW50LlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIGFwcGVhcnMgdG8gYmUgYSBzd2l0Y2ggZnJvbSBhIGRvdWJseS1saW5rZWQgbGlzdCAoYHN0cnVjdCBsaXN0X2hlYWRgKSB0byBhIGhhc2ggbGlzdCAoYHN0cnVjdCBobGlzdF9oZWFkYCkgZm9yIHRoZSBgZW50cmllc2AgbGlzdCBpbiBgc3RydWN0IGJpbmZtdF9taXNjYC4gV2UncmUgYWxzbyBzZWVpbmcgYSBsb2NrIHVwZ3JhZGUuIFRoZSBwYXRjaCBjaGFuZ2VzIGBlbnRyaWVzX2xvY2tgIGZyb20gYSByZWFkLXdyaXRlIGxvY2sgKGByd2xvY2tfdGApIHRvIGEgc3BpbmxvY2sgKGBzcGlubG9ja190YCkuIFRoaXMgc3VnZ2VzdHMgYSBwb3RlbnRpYWwgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLCB0aG91Z2ggaXQgYWxzbyBpbmNyZWFzZXMgdGhlIHJpc2sgb2YgY29udGVudGlvbiBpbiBjZXJ0YWluIHNjZW5hcmlvcy4gSXQgYWxzbyBzZWVtcyB0aGV5J3JlIGxldmVyYWdpbmcgUkNVIChSZWFkLUNvcHktVXBkYXRlKSBmb3IgbG9ja2xlc3MgdHJhdmVyc2FsIGluIGBnZXRfYmluZm10X2hhbmRsZXJgIGFuZCBgc2VhcmNoX2JpbmZtdF9oYW5kbGVyYCwgd2hpY2ggaXMgYW4gaW50ZXJlc3RpbmcgZGVzaWduIGNob2ljZS4gVGhpcyBkZWZpbml0ZWx5IGNhbGxzIGZvciBzb21lIGNhcmVmdWwgc2NydXRpbnkuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGlzIGlzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBBbnkgY2hhbmdlIHRvIGNvcmUga2VybmVsIGxvZ2ljIHdhcnJhbnRzIGEgdGhvcm91Z2ggZXhhbWluYXRpb24gZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgYW5kIGVkZ2UgY2FzZXMuIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGFmZmVjdGVkIHRvIGRpcmVjdCBteSBmdXp6aW5nIGVmZm9ydHMuXG5cbkxldCdzIHNlZeKApiBCYXNlZCBvbiB0aGUgZGlmZiwgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIG1vZGlmaWVkIG9yIGRpcmVjdGx5IGludm9sdmVkOiBgc2VhcmNoX2JpbmZtdF9oYW5kbGVyYCwgYGdldF9iaW5mbXRfaGFuZGxlcmAsIGBwdXRfYmluZm10X2hhbmRsZXJgLCBgbG9hZF9taXNjX2JpbmFyeWAsIGBibV9ldmljdF9pbm9kZWAsIGByZW1vdmVfYmluZm10X2hhbmRsZXJgLCBgYm1fZW50cnlfd3JpdGVgLCBgYWRkX2VudHJ5YCwgYGJtX3N0YXR1c19yZWFkYCwgYGJtX3N0YXR1c193cml0ZWAsIGFuZCBgYm1fZmlsbF9zdXBlcmAuXG5cbk9rYXksIHNvIGBsb2FkX21pc2NfYmluYXJ5YCBpcyB0aGUgbW9uZXkgc2hvdCDigJMgaXQncyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgYmluYXJ5IGV4ZWN1dGlvbiB0aHJvdWdoIGJpbmZtdF9taXNjLiBgYm1fZW50cnlfd3JpdGVgLCBgYm1fc3RhdHVzX3dyaXRlYCwgYW5kIGBibV9zdGF0dXNfcmVhZGAgYXJlIHRoZSB1c2VyLXNwYWNlIGludGVyZmFjZXMgZm9yIGNvbmZpZ3VyaW5nIGJpbmZtdF9taXNjLiBgYm1fZXZpY3RfaW5vZGVgIGhhbmRsZXMgaW5vZGUgZXZpY3Rpb24sIHNvIGl0J3MgcHJvYmFibHkgbGVzcyBjcml0aWNhbCBmcm9tIGEgZGlyZWN0IGF0dGFjayBzdXJmYWNlIHBlcnNwZWN0aXZlIGJ1dCBzdGlsbCByZWxldmFudCBmb3Igc3RhYmlsaXR5LlxuXG5CZWZvcmUgSSBnbyBmdXJ0aGVyLCBJIG5lZWQgdG8gY29uZmlybSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24uIFRoZSBjb2RlIHNlZW1zIHRvIGJlIGd1YXJkZWQgYnkgYENPTkZJR19CSU5GTVRfTUlTQ2AuIEkgc2hvdWxkIHF1aWNrbHkgdmVyaWZ5IHRoaXMgYnkgY2hlY2tpbmcgYGZzL0tjb25maWcuYmluZm10YCBvciBgZnMvTWFrZWZpbGVgIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGJ1aWxkLXRpbWUgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTQwLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTA6MzI6MzUuNjIwNTI3MzA2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzMyNDAwOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQklORk1UX01JU0NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL0tjb25maWcuYmluZm10PTEzOD1jb25maWcgQklORk1UX1pGTEFUXFxuLS1cXG5mcy9LY29uZmlnLmJpbmZtdC0xNDQtXFxuZnMvS2NvbmZpZy5iaW5mbXQ6MTQ1OmNvbmZpZyBCSU5GTVRfTUlTQ1xcbmZzL0tjb25maWcuYmluZm10LTE0Ni1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsIHN1cHBvcnQgZm9yIE1JU0MgYmluYXJpZXNcXFwiXFxuLS1cXG5mcy9NYWtlZmlsZT0zND1vYmotJChDT05GSUdfRklMRV9MT0NLSU5HKSAgICAgICs9IGxvY2tzLm9cXG5mcy9NYWtlZmlsZTozNTpvYmotJChDT05GSUdfQklORk1UX01JU0MpXFx0Kz0gYmluZm10X21pc2Mub1xcbmZzL01ha2VmaWxlLTM2LW9iai0kKENPTkZJR19CSU5GTVRfU0NSSVBUKVxcdCs9IGJpbmZtdF9zY3JpcHQub1xcbi0tXFxuZnMvZmlsZV90YWJsZS5jPTE2NT1zdGF0aWMgaW50IF9faW5pdCBpbml0X2ZzX3N0YXRfc3lzY3Rscyh2b2lkKVxcbi0tXFxuZnMvZmlsZV90YWJsZS5jLTE2Ny1cXHRyZWdpc3Rlcl9zeXNjdGxfaW5pdChcXFwiZnNcXFwiLCBmc19zdGF0X3N5c2N0bHMpO1xcbmZzL2ZpbGVfdGFibGUuYzoxNjg6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0JJTkZNVF9NSVNDKSkge1xcbmZzL2ZpbGVfdGFibGUuYy0xNjktXFx0XFx0c3RydWN0IGN0bF90YWJsZV9oZWFkZXIgKmhkcjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTA6MzI6MzYuODUzNzczODg1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI1NzY2OTU3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIHRoZSBCSU5GTVRfTUlTQyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgc28gdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiB3ZSdyZSBsb29raW5nIGF0IGlzIGBCSU5GTVRfTUlTQ2AuICBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBUaW1lIHRvIGRpdmUgaW50byB0aGUgaW1wbGVtZW50YXRpb24uIE15IGZpcnN0IHN0ZXAgaXMgdG8gY3JhY2sgb3BlbiBgZnMvYmluZm10X21pc2MuY2AuIEkgbmVlZCB0byByZXZpZXcgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGlzIHNwZWNpZmljIGZlYXR1cmUgaW4gTGludXgsIGFuZCBpZGVudGlmeSB0aGUgY29yZSBmdW5jdGlvbnMgdGhhdCBoYW5kbGUgdGhpcyBmdW5jdGlvbmFsaXR5LiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHVuZGVyc3RhbmRpbmcgdGhlIGludGVyYWN0aW9ucyBvZiB0aGUgcmVsZXZhbnQgZmlsZXMgYW5kIGZ1bmN0aW9ucy4gSSBuZWVkIHRvIGJlIHN1cmUgSSdtIGFjcm9zcyB0aGUgYmFzaWNzIGJlZm9yZSBkaWdnaW5nIGFueSBkZWVwZXIuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0MjcsIk91dHB1dFRva2VucyI6NjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxMDozMjo0MC4xMTE0NDU0MTVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njk2OTk1NzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihzdGF0aWN8aW50fHZvaWQpLiogKGxvYWRfbWlzY19iaW5hcnl8Ym1fZW50cnlfd3JpdGV8Ym1fc3RhdHVzX3dyaXRlfGJtX2V2aWN0X2lub2RlfGFkZF9lbnRyeSlcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9iaW5mbXRfbWlzYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2JpbmZtdF9taXNjLmM9MTg5PXN0YXRpYyBzdHJ1Y3QgYmluZm10X21pc2MgKmxvYWRfYmluZm10X21pc2Modm9pZClcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmMtMjA5LSAqL1xcbmZzL2JpbmZtdF9taXNjLmM6MjEwOnN0YXRpYyBpbnQgbG9hZF9taXNjX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbmZzL2JpbmZtdF9taXNjLmMtMjExLXtcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmM9NjQ5PXN0YXRpYyBzdHJ1Y3QgYmluZm10X21pc2MgKmlfYmluZm10X21pc2Moc3RydWN0IGlub2RlICppbm9kZSlcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmMtNjY2LSovXFxuZnMvYmluZm10X21pc2MuYzo2Njc6c3RhdGljIHZvaWQgYm1fZXZpY3RfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSlcXG5mcy9iaW5mbXRfbWlzYy5jLTY2OC17XFxuLS1cXG5mcy9iaW5mbXRfbWlzYy5jPTcwOD1ibV9lbnRyeV9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbmJ5dGVzLCBsb2ZmX3QgKnBwb3MpXFxuLS1cXG5mcy9iaW5mbXRfbWlzYy5jLTcyNS1cXG5mcy9iaW5mbXRfbWlzYy5jOjcyNjpzdGF0aWMgc3NpemVfdCBibV9lbnRyeV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlcixcXG5mcy9iaW5mbXRfbWlzYy5jLTcyNy1cXHRcXHRcXHRcXHRzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmM9NzcwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGJtX2VudHJ5X29wZXJhdGlvbnMgPSB7XFxuLS1cXG5mcy9iaW5mbXRfbWlzYy5jLTc3OC0vKiBhZGQgdG8gZmlsZXN5c3RlbSAqL1xcbmZzL2JpbmZtdF9taXNjLmM6Nzc5OnN0YXRpYyBpbnQgYWRkX2VudHJ5KE5vZGUgKmUsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuZnMvYmluZm10X21pc2MuYy03ODAte1xcbi0tXFxuZnMvYmluZm10X21pc2MuYz04NjA9Ym1fc3RhdHVzX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICpidWYsIHNpemVfdCBuYnl0ZXMsIGxvZmZfdCAqcHBvcylcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmMtODY5LVxcbmZzL2JpbmZtdF9taXNjLmM6ODcwOnN0YXRpYyBzc2l6ZV90IGJtX3N0YXR1c193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlcixcXG5mcy9iaW5mbXRfbWlzYy5jLTg3MS1cXHRcXHRzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTA6MzI6NDAuMTgxMTUzOTc4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIxNzY5NzU1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRnVuY3Rpb24gU2NvcGUgaW4gdGhlIEtlcm5lbCBNb2R1bGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnM6IGBsb2FkX21pc2NfYmluYXJ5YCwgYGJtX2V2aWN0X2lub2RlYCwgYGJtX2VudHJ5X3dyaXRlYCwgYGFkZF9lbnRyeWAsIGFuZCBgYm1fc3RhdHVzX3dyaXRlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgc2NvcGUgd2l0aGluIHRoaXMgbW9kdWxlLiBUaGUgZmlyc3QgdGhpbmcgSSdsbCBkbyBpcyBjb25maXJtIHdoZXRoZXIgdGhlc2UgYXJlIHN0YXRpYyBvciBub3QuIEEgcXVpY2sgY2hlY2sgcmV2ZWFscyB0aGF0IGBhZGRfZW50cnlgIGlzIHN0YXRpYywgYXMgaXMgYGJtX2V2aWN0X2lub2RlYCwgYW5kIGFsc28gYGJtX2VudHJ5X3dyaXRlYCBhbmQgYWxzbyBgYm1fc3RhdHVzX3dyaXRlYCwgYW5kIGFsc28gYGxvYWRfbWlzY19iaW5hcnlgLlxuXG5XYWl0IGEgbWludXRlLCBgbG9hZF9taXNjX2JpbmFyeWAuLi4gSSByZW1lbWJlciBzZWVpbmcgdGhhdCBuYW1lIHNvbWV3aGVyZSBiZWZvcmUuIEl0J3MgdXNlZCBpbiB0aGUgYGxpbnV4X2JpbmZtdGAgc3RydWN0LiBJIHRoaW5rIGl0J3MgcmVnaXN0ZXJlZCBpbiB0aGUga2VybmVsIGFzIGEgYmluYXJ5IGZvcm1hdCBoYW5kbGVyLiBCZXR0ZXIgZG91YmxlLWNoZWNrIGBmcy9iaW5mbXRfbWlzYy5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZnVuY3Rpb24gaW50ZWdyYXRlcyB3aXRoIHRoZSB3aWRlciBrZXJuZWwgYmluYXJ5IGhhbmRsaW5nIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyMjMsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTA6MzI6NDQuMzk4ODUzNjI1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTcxNDY5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdHJ1Y3QgbGludXhfYmluZm10XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2JpbmZtdF9taXNjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYmluZm10X21pc2MuYz0xMDIyPXN0YXRpYyBpbnQgYm1faW5pdF9mc19jb250ZXh0KHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmMtMTAyNy1cXG5mcy9iaW5mbXRfbWlzYy5jOjEwMjg6c3RhdGljIHN0cnVjdCBsaW51eF9iaW5mbXQgbWlzY19mb3JtYXQgPSB7XFxuZnMvYmluZm10X21pc2MuYy0xMDI5LVxcdC5tb2R1bGUgPSBUSElTX01PRFVMRSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTA6MzI6NDQuNTQ0NTc1MzhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NjQ4NDg5MzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBgYmluZm10X21pc2NgIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHJpZ2h0IG9mZiB0aGUgYmF0LCBgbG9hZF9taXNjX2JpbmFyeWAgaXMgY2xlYXJseSB0aGUgYC5sb2FkX2JpbmFyeWAgY2FsbGJhY2suIE1ha2VzIHNlbnNlLiBgYm1fZW50cnlfd3JpdGVgIGFuZCBgYm1fc3RhdHVzX3dyaXRlYCBhcmUgdGhlIGAud3JpdGVgIGNhbGxiYWNrcyBmb3IgdGhlIGBiaW5mbXRfbWlzY2AgZmlsZXN5c3RlbSwgYW5kIGBibV9ldmljdF9pbm9kZWAgaXMgdGhlIGAuZXZpY3RfaW5vZGVgIGNhbGxiYWNrLiBUaGVzZSBhcmUgYWxsIGNyaXRpY2FsIGVudHJ5IHBvaW50cywgdGhlIGZ1bmN0aW9ucyB0aGF0IGludGVyYWN0IGRpcmVjdGx5IHdpdGggdGhlIGNvcmUgbG9naWMuXG5cblRoZXNlIGZvdXIsIGFsb25nIHdpdGggYGFkZF9lbnRyeWAsIGBnZXRfYmluZm10X2hhbmRsZXJgLCBgc2VhcmNoX2JpbmZtdF9oYW5kbGVyYCwgYW5kIGByZW1vdmVfYmluZm10X2hhbmRsZXJgIGFyZSBkZWZpbml0ZSBjYW5kaWRhdGVzIGZvciBgRm9jdXNTeW1ib2xzYC4gSG9sZCBvbiB0aG91Z2gsIGBnZXRfYmluZm10X2hhbmRsZXJgIGFuZCBgc2VhcmNoX2JpbmZtdF9oYW5kbGVyYCBhbHNvIGxvb2sgbGlrZSB0aGV5J3JlIGJlaW5nICptb2RpZmllZCogaW4gYSBzaWduaWZpY2FudCB3YXksIHBhcnRpY3VsYXJseSB3aXRoIHJlc3BlY3QgdG8gdGhhdCBSQ1UgbG9naWMuIFl1cCwgdGhvc2UgbmVlZCB0byBiZSBpbmNsdWRlZC5cblxuQmVmb3JlIEkgbG9jayB0aGF0IGRvd24sIEknbGwgcXVpY2tseSBjaGVjayBmb3IgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgaW1wYWN0ZWQuIFRoZSBwYXRjaCB0b3VjaGVzIGBmcy9iaW5mbXRfbWlzYy5jYCwgYGluY2x1ZGUvbGludXgvYmluZm10cy5oYCwgYW5kIGBrZXJuZWwvdXNlci5jYCwgd2hpY2ggbWFrZXMgYENPTkZJR19CSU5GTVRfTUlTQ2AgdGhlIG9idmlvdXMgcHJpbWFyeSBvbmUuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSByYXRpb25hbGUuIFRoaXMgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgdGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlcyBvZiBgYmluZm10X21pc2NgLiBJdCdzIG1vdmluZyBmcm9tIGEgZG91Ymx5LWxpbmtlZCBsaXN0IHByb3RlY3RlZCBieSBhIHJlYWQtd3JpdGUgbG9jayB0byBhbiBSQ1UtcHJvdGVjdGVkIGhhc2ggbGlzdCB3aXRoIGEgc3BpbmxvY2suIFRoaXMgaXMgYSAqZnVuY3Rpb25hbCBjaGFuZ2UqOyBpdCdzIGFsdGVyaW5nIHRoZSByZWdpc3RyYXRpb24sIHVucmVnaXN0cmF0aW9uLCBhbmQgZXhlY3V0aW9uIGxvZ2ljIG9mIGBiaW5mbXRfbWlzY2AuIFRoYXQncyBhIGh1Z2UgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLiBXZSBuZWVkIHRvIGZ1enogdGhpcyBhZ2dyZXNzaXZlbHkgdG8gZW5zdXJlIHRoZSBuZXcgUkNVIGxvZ2ljIGFuZCBsb2NrbGVzcyB0cmF2ZXJzYWwgZG9uJ3QgaW50cm9kdWNlIGFueSBuYXN0eSByYWNlIGNvbmRpdGlvbnMsIHVzZS1hZnRlci1mcmVlcywgb3Igb3RoZXIgbWVtb3J5IHNhZmV0eSBpc3N1ZXMuXG5cblNvLCBoZXJlJ3MgbXkgYEZvY3VzU3ltYm9sc2A6XG5cbi0gICBgbG9hZF9taXNjX2JpbmFyeWBcbi0gICBgYm1fZW50cnlfd3JpdGVgXG4tICAgYGJtX3N0YXR1c193cml0ZWBcbi0gICBgYm1fZXZpY3RfaW5vZGVgXG4tICAgYGFkZF9lbnRyeWBcbi0gICBgZ2V0X2JpbmZtdF9oYW5kbGVyYFxuLSAgIGBzZWFyY2hfYmluZm10X2hhbmRsZXJgXG4tICAgYHJlbW92ZV9iaW5mbXRfaGFuZGxlcmBcblxuQW5kIHRoZSBgRW5hYmxlQ29uZmlnc2A6XG5cbi0gICBgQklORk1UX01JU0NgXG5cbkknbSByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3NTUsIk91dHB1dFRva2VucyI6MjAwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDEwOjMyOjUzLjE5MzA2ODAyMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxMTIwNDIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCSU5GTVRfTUlTQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxvYWRfbWlzY19iaW5hcnlcIixcbiAgICBcImJtX2VudHJ5X3dyaXRlXCIsXG4gICAgXCJibV9zdGF0dXNfd3JpdGVcIixcbiAgICBcImJtX2V2aWN0X2lub2RlXCIsXG4gICAgXCJhZGRfZW50cnlcIixcbiAgICBcImdldF9iaW5mbXRfaGFuZGxlclwiLFxuICAgIFwic2VhcmNoX2JpbmZtdF9oYW5kbGVyXCIsXG4gICAgXCJyZW1vdmVfYmluZm10X2hhbmRsZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMgb2YgYGJpbmZtdF9taXNjYCBmcm9tIGEgZG91Ymx5LWxpbmtlZCBsaXN0IHdpdGggYSByd2xvY2sgdG8gYW4gUkNVLXByb3RlY3RlZCBoYXNoIGxpc3Qgd2l0aCBhIHNwaW5sb2NrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHRoZSBjb3JlIGxvZ2ljIG9mIGBiaW5mbXRfbWlzY2AgcmVnaXN0cmF0aW9uLCB1bnJlZ2lzdHJhdGlvbiwgYW5kIGJpbmFyeSBleGVjdXRpb24uIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHRoZSBuZXcgUkNVIGxvZ2ljIGFuZCBsb2NrbGVzcyB0cmF2ZXJzYWwgZG8gbm90IGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMsIHVzZS1hZnRlci1mcmVlLCBvciBvdGhlciBtZW1vcnkgc2FmZXR5IGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCSU5GTVRfTUlTQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxvYWRfbWlzY19iaW5hcnlcIixcbiAgICBcImJtX2VudHJ5X3dyaXRlXCIsXG4gICAgXCJibV9zdGF0dXNfd3JpdGVcIixcbiAgICBcImJtX2V2aWN0X2lub2RlXCIsXG4gICAgXCJhZGRfZW50cnlcIixcbiAgICBcImdldF9iaW5mbXRfaGFuZGxlclwiLFxuICAgIFwic2VhcmNoX2JpbmZtdF9oYW5kbGVyXCIsXG4gICAgXCJyZW1vdmVfYmluZm10X2hhbmRsZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMgb2YgYGJpbmZtdF9taXNjYCBmcm9tIGEgZG91Ymx5LWxpbmtlZCBsaXN0IHdpdGggYSByd2xvY2sgdG8gYW4gUkNVLXByb3RlY3RlZCBoYXNoIGxpc3Qgd2l0aCBhIHNwaW5sb2NrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHRoZSBjb3JlIGxvZ2ljIG9mIGBiaW5mbXRfbWlzY2AgcmVnaXN0cmF0aW9uLCB1bnJlZ2lzdHJhdGlvbiwgYW5kIGJpbmFyeSBleGVjdXRpb24uIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHRoZSBuZXcgUkNVIGxvZ2ljIGFuZCBsb2NrbGVzcyB0cmF2ZXJzYWwgZG8gbm90IGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMsIHVzZS1hZnRlci1mcmVlLCBvciBvdGhlciBtZW1vcnkgc2FmZXR5IGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow888bd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-09 10:24:26 +0000 UTC FinishedAt: 2026-07-09 10:32:54 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BINFMT_MISC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BINFMT_MISC" ], "series_id": "95c9b048-eddd-4250-b1ec-6efa1cb19ea7" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "load_misc_binary", "bm_entry_write", "bm_status_write", "bm_evict_inode", "add_entry", "get_binfmt_handler", "search_binfmt_handler", "remove_binfmt_handler" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDEwOjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JJTkZNVF9NSVNDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bG9hZF9taXNjX2JpbmFyeSYjMzQ7LAogICAgJiMzNDtibV9lbnRyeV93cml0ZSYjMzQ7LAogICAgJiMzNDtibV9zdGF0dXNfd3JpdGUmIzM0OywKICAgICYjMzQ7Ym1fZXZpY3RfaW5vZGUmIzM0OywKICAgICYjMzQ7YWRkX2VudHJ5JiMzNDssCiAgICAmIzM0O2dldF9iaW5mbXRfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtzZWFyY2hfYmluZm10X2hhbmRsZXImIzM0OywKICAgICYjMzQ7cmVtb3ZlX2JpbmZtdF9oYW5kbGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlcyBvZiBgYmluZm10X21pc2NgIGZyb20gYSBkb3VibHktbGlua2VkIGxpc3Qgd2l0aCBhIHJ3bG9jayB0byBhbiBSQ1UtcHJvdGVjdGVkIGhhc2ggbGlzdCB3aXRoIGEgc3BpbmxvY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGNvcmUgbG9naWMgb2YgYGJpbmZtdF9taXNjYCByZWdpc3RyYXRpb24sIHVucmVnaXN0cmF0aW9uLCBhbmQgYmluYXJ5IGV4ZWN1dGlvbi4gSXQgaXMgd29ydGggZnV6emluZyB0byBlbnN1cmUgdGhlIG5ldyBSQ1UgbG9naWMgYW5kIGxvY2tsZXNzIHRyYXZlcnNhbCBkbyBub3QgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucywgdXNlLWFmdGVyLWZyZWUsIG9yIG90aGVyIG1lbW9yeSBzYWZldHkgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDEwOjMyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTI5MTc1Nzg3Mzc3YTc4M2JmMjllZWNmZTQyZjQzYTUzZGM3N2FmZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDkgMTA6MzI6MjUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvYmluZm10X21pc2MuYyBiL2ZzL2JpbmZtdF9taXNjLmNcbmluZGV4IDg0MzQ5ZmNiOTNmMTNhLi4wZjA0NzA5YTBhMzlmNSAxMDA2NDRcbi0tLSBhL2ZzL2JpbmZtdF9taXNjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2JpbmZtdF9taXNjLmNcbkBAIC0yNCw2ICYjNDM7MjQsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BhZ2VtYXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25hbWVpLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb3VudC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JjdWxpc3QuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZzX2NvbnRleHQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3N5c2NhbGxzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXG5AQCAtNDgsNyAmIzQzOzQ5LDcgQEAgZW51bSB7RW5hYmxlZCwgTWFnaWN9O1xuICNkZWZpbmUgTUlTQ19GTVRfT1BFTl9GSUxFICgxVUwgXHUwMDNjXHUwMDNjIDI4KVxuIFxuIHR5cGVkZWYgc3RydWN0IHtcbi1cdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbiYjNDM7XHRzdHJ1Y3QgaGxpc3Rfbm9kZSBub2RlO1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcdFx0LyogdHlwZSwgc3RhdHVzLCBldGMuICovXG4gXHRpbnQgb2Zmc2V0O1x0XHRcdC8qIG9mZnNldCBvZiBtYWdpYyAqL1xuIFx0aW50IHNpemU7XHRcdFx0Lyogc2l6ZSBvZiBtYWdpYy9tYXNrICovXG5AQCAtNTksNiAmIzQzOzYwLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qge1xuIFx0c3RydWN0IGRlbnRyeSAqZGVudHJ5O1xuIFx0c3RydWN0IGZpbGUgKmludGVycF9maWxlO1xuIFx0cmVmY291bnRfdCB1c2VycztcdFx0Lyogc3luYyByZW1vdmFsIHdpdGggbG9hZF9taXNjX2JpbmFyeSgpICovXG4mIzQzO1x0c3RydWN0IHJjdV9oZWFkIHJjdTtcbiB9IE5vZGU7XG4gXG4gc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGJtX2ZzX3R5cGU7XG5AQCAtODYsNiAmIzQzOzg4LDggQEAgc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGJtX2ZzX3R5cGU7XG4gICogU2VhcmNoIGZvciBhIGJpbmFyeSB0eXBlIGhhbmRsZXIgZm9yIEBicHJtIGluIHRoZSBsaXN0IG9mIHJlZ2lzdGVyZWQgYmluYXJ5XG4gICogdHlwZSBoYW5kbGVycy5cbiAgKlxuJiM0MzsgKiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgUkNVIHJlYWQgbG9jay5cbiYjNDM7ICpcbiAgKiBSZXR1cm46IGJpbmFyeSB0eXBlIGxpc3QgZW50cnkgb24gc3VjY2VzcywgTlVMTCBvbiBmYWlsdXJlXG4gICovXG4gc3RhdGljIE5vZGUgKnNlYXJjaF9iaW5mbXRfaGFuZGxlcihzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2MsXG5AQCAtOTUsNyAmIzQzOzk5LDcgQEAgc3RhdGljIE5vZGUgKnNlYXJjaF9iaW5mbXRfaGFuZGxlcihzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2MsXG4gXHROb2RlICplO1xuIFxuIFx0LyogV2FsayBhbGwgdGhlIHJlZ2lzdGVyZWQgaGFuZGxlcnMuICovXG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGUsIFx1MDAyNm1pc2MtXHUwMDNlZW50cmllcywgbGlzdCkge1xuJiM0MztcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShlLCBcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXMsIG5vZGUpIHtcbiBcdFx0Y2hhciAqcztcbiBcdFx0aW50IGo7XG4gXG5AQCAtMTM0LDcgJiM0MzsxMzgsMTAgQEAgc3RhdGljIE5vZGUgKnNlYXJjaF9iaW5mbXRfaGFuZGxlcihzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2MsXG4gICogQGJwcm06IGJpbmFyeSBmb3Igd2hpY2ggd2UgYXJlIGxvb2tpbmcgZm9yIGEgaGFuZGxlclxuICAqXG4gICogVHJ5IHRvIGZpbmQgYSBiaW5mbXQgaGFuZGxlciBmb3IgdGhlIGJpbmFyeSB0eXBlLiBJZiBvbmUgaXMgZm91bmQgdGFrZSBhXG4tICogcmVmZXJlbmNlIHRvIHByb3RlY3QgYWdhaW5zdCByZW1vdmFsIHZpYSBibV97ZW50cnksc3RhdHVzfV93cml0ZSgpLlxuJiM0MzsgKiByZWZlcmVuY2UgdG8gcHJvdGVjdCBhZ2FpbnN0IHJlbW92YWwgdmlhIGJtX3tlbnRyeSxzdGF0dXN9X3dyaXRlKCkuIFRoZVxuJiM0MzsgKiByZWZjb3VudCBvZiBhbiBlbnRyeSBjYW4gb25seSBkcm9wIHRvIHplcm8gb25jZSBpdCBoYXMgYmVlbiB1bmxpbmtlZCBhbmRcbiYjNDM7ICogYSByZXN0YXJ0ZWQgc2VhcmNoIGNhbm5vdCBmaW5kIGFuIHVubGlua2VkIGVudHJ5IGFnYWluIHNvIHRoZSByZXRyeSBsb29wXG4mIzQzOyAqIGlzIGJvdW5kZWQuXG4gICpcbiAgKiBSZXR1cm46IGJpbmFyeSB0eXBlIGxpc3QgZW50cnkgb24gc3VjY2VzcywgTlVMTCBvbiBmYWlsdXJlXG4gICovXG5AQCAtMTQzLDExICYjNDM7MTUwLDEwIEBAIHN0YXRpYyBOb2RlICpnZXRfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLFxuIHtcbiBcdE5vZGUgKmU7XG4gXG4tXHRyZWFkX2xvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuLVx0ZSA9IHNlYXJjaF9iaW5mbXRfaGFuZGxlcihtaXNjLCBicHJtKTtcbi1cdGlmIChlKVxuLVx0XHRyZWZjb3VudF9pbmMoXHUwMDI2ZS1cdTAwM2V1c2Vycyk7XG4tXHRyZWFkX3VubG9jayhcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXNfbG9jayk7XG4mIzQzO1x0Z3VhcmQocmN1KSgpO1xuJiM0MztcdGRvIHtcbiYjNDM7XHRcdGUgPSBzZWFyY2hfYmluZm10X2hhbmRsZXIobWlzYywgYnBybSk7XG4mIzQzO1x0fSB3aGlsZSAoZSBcdTAwMjZcdTAwMjYgIXJlZmNvdW50X2luY19ub3RfemVybyhcdTAwMjZlLVx1MDAzZXVzZXJzKSk7XG4gXHRyZXR1cm4gZTtcbiB9XG4gXG5AQCAtMTY0LDcgJiM0MzsxNzAsOCBAQCBzdGF0aWMgdm9pZCBwdXRfYmluZm10X2hhbmRsZXIoTm9kZSAqZSlcbiBcdGlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2ZS1cdTAwM2V1c2VycykpIHtcbiBcdFx0aWYgKGUtXHUwMDNlZmxhZ3MgXHUwMDI2IE1JU0NfRk1UX09QRU5fRklMRSlcbiBcdFx0XHRmaWxwX2Nsb3NlKGUtXHUwMDNlaW50ZXJwX2ZpbGUsIE5VTEwpO1xuLVx0XHRrZnJlZShlKTtcbiYjNDM7XHRcdC8qIExvY2tsZXNzIHdhbGtlcnMgbWF5IHN0aWxsIGRlcmVmZXJlbmNlIHRoaXMgZW50cnkuICovXG4mIzQzO1x0XHRrZnJlZV9yY3UoZSwgcmN1KTtcbiBcdH1cbiB9XG4gXG5AQCAtMjA4LDcgJiM0MzsyMTUsNyBAQCBzdGF0aWMgaW50IGxvYWRfbWlzY19iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbiBcdHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYztcbiBcbiBcdG1pc2MgPSBsb2FkX2JpbmZtdF9taXNjKCk7XG4tXHRpZiAoIW1pc2MtXHUwMDNlZW5hYmxlZClcbiYjNDM7XHRpZiAoIVJFQURfT05DRShtaXNjLVx1MDAzZWVuYWJsZWQpKVxuIFx0XHRyZXR1cm4gcmV0dmFsO1xuIFxuIFx0Zm10ID0gZ2V0X2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0pO1xuQEAgLTY1NCw4ICYjNDM7NjYxLDggQEAgc3RhdGljIHN0cnVjdCBiaW5mbXRfbWlzYyAqaV9iaW5mbXRfbWlzYyhzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuICAqXG4gICogSWYgdGhlIC1cdTAwM2VldmljdCBjYWxsIHdhcyBub3QgY2F1c2VkIGJ5IGEgc3VwZXIgYmxvY2sgc2h1dGRvd24gYnV0IGJ5IGEgd3JpdGVcbiAgKiB0byByZW1vdmUgdGhlIGVudHJ5IG9yIGFsbCBlbnRyaWVzIHZpYSBibV97ZW50cnksc3RhdHVzfV93cml0ZSgpIHRoZSBlbnRyeVxuLSAqIHdpbGwgaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBsaXN0LiBXZSBrZWVwIHRoZSBsaXN0X2VtcHR5KCkgY2hlY2tcbi0gKiB0byBtYWtlIHRoYXQgZXhwbGljaXQuXG4mIzQzOyAqIHdpbGwgaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBsaXN0LiBXZSBrZWVwIHRoZSBobGlzdF91bmhhc2hlZCgpXG4mIzQzOyAqIGNoZWNrIHRvIG1ha2UgdGhhdCBleHBsaWNpdC5cbiAqL1xuIHN0YXRpYyB2b2lkIGJtX2V2aWN0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4ge1xuQEAgLTY2NywxMCAmIzQzOzY3NCwxMCBAQCBzdGF0aWMgdm9pZCBibV9ldmljdF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuIFx0XHRzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2M7XG4gXG4gXHRcdG1pc2MgPSBpX2JpbmZtdF9taXNjKGlub2RlKTtcbi1cdFx0d3JpdGVfbG9jayhcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXNfbG9jayk7XG4tXHRcdGlmICghbGlzdF9lbXB0eShcdTAwMjZlLVx1MDAzZWxpc3QpKVxuLVx0XHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2ZS1cdTAwM2VsaXN0KTtcbi1cdFx0d3JpdGVfdW5sb2NrKFx1MDAyNm1pc2MtXHUwMDNlZW50cmllc19sb2NrKTtcbiYjNDM7XHRcdHNwaW5fbG9jayhcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXNfbG9jayk7XG4mIzQzO1x0XHRpZiAoIWhsaXN0X3VuaGFzaGVkKFx1MDAyNmUtXHUwMDNlbm9kZSkpXG4mIzQzO1x0XHRcdGhsaXN0X2RlbF9pbml0X3JjdShcdTAwMjZlLVx1MDAzZW5vZGUpO1xuJiM0MztcdFx0c3Bpbl91bmxvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuIFx0XHRwdXRfYmluZm10X2hhbmRsZXIoZSk7XG4gXHR9XG4gfVxuQEAgLTY4OSw5ICYjNDM7Njk2LDkgQEAgc3RhdGljIHZvaWQgYm1fZXZpY3RfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSlcbiAgKi9cbiBzdGF0aWMgdm9pZCByZW1vdmVfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLCBOb2RlICplKVxuIHtcbi1cdHdyaXRlX2xvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuLVx0bGlzdF9kZWxfaW5pdChcdTAwMjZlLVx1MDAzZWxpc3QpO1xuLVx0d3JpdGVfdW5sb2NrKFx1MDAyNm1pc2MtXHUwMDNlZW50cmllc19sb2NrKTtcbiYjNDM7XHRzcGluX2xvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuJiM0MztcdGhsaXN0X2RlbF9pbml0X3JjdShcdTAwMjZlLVx1MDAzZW5vZGUpO1xuJiM0MztcdHNwaW5fdW5sb2NrKFx1MDAyNm1pc2MtXHUwMDNlZW50cmllc19sb2NrKTtcbiBcdGxvY2tlZF9yZWN1cnNpdmVfcmVtb3ZhbChlLVx1MDAzZWRlbnRyeSwgTlVMTCk7XG4gfVxuIFxuQEAgLTc0MiwxMSAmIzQzOzc0OSwxMyBAQCBzdGF0aWMgc3NpemVfdCBibV9lbnRyeV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlcixcbiBcdFx0ICogdmlhIGJtX3tlbnRyeSxyZWdpc3RlcixzdGF0dXN9X3dyaXRlKCkgaW5vZGVfbG9jaygpIG9uIHRoZVxuIFx0XHQgKiByb290IGlub2RlIG11c3QgYmUgaGVsZC5cbiBcdFx0ICogVGhlIGxvY2sgaXMgZXhjbHVzaXZlIGVuc3VyaW5nIHRoYXQgdGhlIGxpc3QgY2FuJiMzOTt0IGJlXG4tXHRcdCAqIG1vZGlmaWVkLiBPbmx5IGxvYWRfbWlzY19iaW5hcnkoKSBjYW4gYWNjZXNzIGJ1dCBkb2VzIHNvXG4tXHRcdCAqIHJlYWQtb25seS4gU28gd2Ugb25seSBuZWVkIHRvIHRha2UgdGhlIHdyaXRlIGxvY2sgd2hlbiB3ZVxuLVx0XHQgKiBhY3R1YWxseSByZW1vdmUgdGhlIGVudHJ5IGZyb20gdGhlIGxpc3QuXG4mIzQzO1x0XHQgKiBtb2RpZmllZC4gT25seSBsb2FkX21pc2NfYmluYXJ5KCkgY2FuIGFjY2VzcyB0aGUgbGlzdFxuJiM0MztcdFx0ICogY29uY3VycmVudGx5IGFuZCBpdCBkb2VzIHNvIHVuZGVyIFJDVS4gU28gZW50cmllc19sb2NrIG9ubHlcbiYjNDM7XHRcdCAqIG5lZWRzIHRvIGJlIGhlbGQgd2hlbiBhbiBlbnRyeSBpcyBhY3R1YWxseSB1bmxpbmtlZCB0b1xuJiM0MztcdFx0ICogc2VyaWFsaXplIGFnYWluc3QgYm1fZXZpY3RfaW5vZGUoKSBkdXJpbmcgdW1vdW50IHdoaWNoXG4mIzQzO1x0XHQgKiB1bmxpbmtzIHdpdGhvdXQgaG9sZGluZyBpbm9kZV9sb2NrLlxuIFx0XHQgKi9cbi1cdFx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNmUtXHUwMDNlbGlzdCkpXG4mIzQzO1x0XHRpZiAoIWhsaXN0X3VuaGFzaGVkKFx1MDAyNmUtXHUwMDNlbm9kZSkpXG4gXHRcdFx0cmVtb3ZlX2JpbmZtdF9oYW5kbGVyKGlfYmluZm10X21pc2MoaW5vZGUpLCBlKTtcbiBcbiBcdFx0aW5vZGVfdW5sb2NrKGlub2RlKTtcbkBAIC03ODksOSAmIzQzOzc5OCw5IEBAIHN0YXRpYyBpbnQgYWRkX2VudHJ5KE5vZGUgKmUsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4gXG4gXHRkX21ha2VfcGVyc2lzdGVudChkZW50cnksIGlub2RlKTtcbiBcdG1pc2MgPSBpX2JpbmZtdF9taXNjKGlub2RlKTtcbi1cdHdyaXRlX2xvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuLVx0bGlzdF9hZGQoXHUwMDI2ZS1cdTAwM2VsaXN0LCBcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXMpO1xuLVx0d3JpdGVfdW5sb2NrKFx1MDAyNm1pc2MtXHUwMDNlZW50cmllc19sb2NrKTtcbiYjNDM7XHRzcGluX2xvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuJiM0MztcdGhsaXN0X2FkZF9oZWFkX3JjdShcdTAwMjZlLVx1MDAzZW5vZGUsIFx1MDAyNm1pc2MtXHUwMDNlZW50cmllcyk7XG4mIzQzO1x0c3Bpbl91bmxvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuIFx0c2ltcGxlX2RvbmVfY3JlYXRpbmcoZGVudHJ5KTtcbiBcdHJldHVybiAwO1xuIH1cbkBAIC04NTQsNyAmIzQzOzg2Myw3IEBAIGJtX3N0YXR1c19yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbmJ5dGVzLCBsb2ZmX3QgKnBwb3MpXG4gXHRjaGFyICpzO1xuIFxuIFx0bWlzYyA9IGlfYmluZm10X21pc2MoZmlsZV9pbm9kZShmaWxlKSk7XG4tXHRzID0gbWlzYy1cdTAwM2VlbmFibGVkID8gXCYjMzQ7ZW5hYmxlZFxcblwmIzM0OyA6IFwmIzM0O2Rpc2FibGVkXFxuXCYjMzQ7O1xuJiM0MztcdHMgPSBSRUFEX09OQ0UobWlzYy1cdTAwM2VlbmFibGVkKSA/IFwmIzM0O2VuYWJsZWRcXG5cJiMzNDsgOiBcJiMzNDtkaXNhYmxlZFxcblwmIzM0OztcbiBcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcihidWYsIG5ieXRlcywgcHBvcywgcywgc3RybGVuKHMpKTtcbiB9XG4gXG5AQCAtODYzLDE4ICYjNDM7ODcyLDE5IEBAIHN0YXRpYyBzc2l6ZV90IGJtX3N0YXR1c193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlcixcbiB7XG4gXHRzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2M7XG4gXHRpbnQgcmVzID0gcGFyc2VfY29tbWFuZChidWZmZXIsIGNvdW50KTtcbi1cdE5vZGUgKmUsICpuZXh0O1xuJiM0MztcdHN0cnVjdCBobGlzdF9ub2RlICpuZXh0O1xuIFx0c3RydWN0IGlub2RlICppbm9kZTtcbiYjNDM7XHROb2RlICplO1xuIFxuIFx0bWlzYyA9IGlfYmluZm10X21pc2MoZmlsZV9pbm9kZShmaWxlKSk7XG4gXHRzd2l0Y2ggKHJlcykge1xuIFx0Y2FzZSAxOlxuIFx0XHQvKiBEaXNhYmxlIGFsbCBoYW5kbGVycy4gKi9cbi1cdFx0bWlzYy1cdTAwM2VlbmFibGVkID0gZmFsc2U7XG4mIzQzO1x0XHRXUklURV9PTkNFKG1pc2MtXHUwMDNlZW5hYmxlZCwgZmFsc2UpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgMjpcbiBcdFx0LyogRW5hYmxlIGFsbCBoYW5kbGVycy4gKi9cbi1cdFx0bWlzYy1cdTAwM2VlbmFibGVkID0gdHJ1ZTtcbiYjNDM7XHRcdFdSSVRFX09OQ0UobWlzYy1cdTAwM2VlbmFibGVkLCB0cnVlKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIDM6XG4gXHRcdC8qIERlbGV0ZSBhbGwgaGFuZGxlcnMuICovXG5AQCAtODg2LDExICYjNDM7ODk2LDEzIEBAIHN0YXRpYyBzc2l6ZV90IGJtX3N0YXR1c193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlcixcbiBcdFx0ICogdmlhIGJtX3tlbnRyeSxyZWdpc3RlcixzdGF0dXN9X3dyaXRlKCkgaW5vZGVfbG9jaygpIG9uIHRoZVxuIFx0XHQgKiByb290IGlub2RlIG11c3QgYmUgaGVsZC5cbiBcdFx0ICogVGhlIGxvY2sgaXMgZXhjbHVzaXZlIGVuc3VyaW5nIHRoYXQgdGhlIGxpc3QgY2FuJiMzOTt0IGJlXG4tXHRcdCAqIG1vZGlmaWVkLiBPbmx5IGxvYWRfbWlzY19iaW5hcnkoKSBjYW4gYWNjZXNzIGJ1dCBkb2VzIHNvXG4tXHRcdCAqIHJlYWQtb25seS4gU28gd2Ugb25seSBuZWVkIHRvIHRha2UgdGhlIHdyaXRlIGxvY2sgd2hlbiB3ZVxuLVx0XHQgKiBhY3R1YWxseSByZW1vdmUgdGhlIGVudHJ5IGZyb20gdGhlIGxpc3QuXG4mIzQzO1x0XHQgKiBtb2RpZmllZC4gT25seSBsb2FkX21pc2NfYmluYXJ5KCkgY2FuIGFjY2VzcyB0aGUgbGlzdFxuJiM0MztcdFx0ICogY29uY3VycmVudGx5IGFuZCBpdCBkb2VzIHNvIHVuZGVyIFJDVS4gU28gZW50cmllc19sb2NrIG9ubHlcbiYjNDM7XHRcdCAqIG5lZWRzIHRvIGJlIGhlbGQgd2hlbiBhbiBlbnRyeSBpcyBhY3R1YWxseSB1bmxpbmtlZCB0b1xuJiM0MztcdFx0ICogc2VyaWFsaXplIGFnYWluc3QgYm1fZXZpY3RfaW5vZGUoKSBkdXJpbmcgdW1vdW50IHdoaWNoXG4mIzQzO1x0XHQgKiB1bmxpbmtzIHdpdGhvdXQgaG9sZGluZyBpbm9kZV9sb2NrLlxuIFx0XHQgKi9cbi1cdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGUsIG5leHQsIFx1MDAyNm1pc2MtXHUwMDNlZW50cmllcywgbGlzdClcbiYjNDM7XHRcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZSwgbmV4dCwgXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzLCBub2RlKVxuIFx0XHRcdHJlbW92ZV9iaW5mbXRfaGFuZGxlcihtaXNjLCBlKTtcbiBcbiBcdFx0aW5vZGVfdW5sb2NrKGlub2RlKTtcbkBAIC05NjUsOCAmIzQzOzk3Nyw4IEBAIHN0YXRpYyBpbnQgYm1fZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4gXHRcdGlmICghbWlzYylcbiBcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbi1cdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzKTtcbi1cdFx0cndsb2NrX2luaXQoXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuJiM0MztcdFx0SU5JVF9ITElTVF9IRUFEKFx1MDAyNm1pc2MtXHUwMDNlZW50cmllcyk7XG4mIzQzO1x0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXNfbG9jayk7XG4gXG4gXHRcdC8qIFBhaXJzIHdpdGggc21wX2xvYWRfYWNxdWlyZSgpIGluIGxvYWRfYmluZm10X21pc2MoKS4gKi9cbiBcdFx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2dXNlcl9ucy1cdTAwM2ViaW5mbXRfbWlzYywgbWlzYyk7XG5AQCAtOTgzLDcgJiM0Mzs5OTUsNyBAQCBzdGF0aWMgaW50IGJtX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuIFx0ICogc29tZW9uZSBtb3VudHMgYmluZm10X21pc2MgZm9yIHRoZSBmaXJzdCB0aW1lIG9yIGFnYWluIHdlIHNpbXBseVxuIFx0ICogcmVzZXQgLVx1MDAzZWVuYWJsZWQgdG8gdHJ1ZS5cbiBcdCAqL1xuLVx0bWlzYy1cdTAwM2VlbmFibGVkID0gdHJ1ZTtcbiYjNDM7XHRXUklURV9PTkNFKG1pc2MtXHUwMDNlZW5hYmxlZCwgdHJ1ZSk7XG4gXG4gXHRlcnIgPSBzaW1wbGVfZmlsbF9zdXBlcihzYiwgQklORk1URlNfTUFHSUMsIGJtX2ZpbGVzKTtcbiBcdGlmICghZXJyKVxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYmluZm10cy5oIGIvaW5jbHVkZS9saW51eC9iaW5mbXRzLmhcbmluZGV4IDJjNzdlMzgzZTczNzU3Li43ZTczMzNiN2JiMGYxMSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYmluZm10cy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaFxuQEAgLTEwMSw4ICYjNDM7MTAxLDggQEAgc3RydWN0IGxpbnV4X2JpbmZtdCB7XG4gXG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX0JJTkZNVF9NSVNDKVxuIHN0cnVjdCBiaW5mbXRfbWlzYyB7XG4tXHRzdHJ1Y3QgbGlzdF9oZWFkIGVudHJpZXM7XG4tXHRyd2xvY2tfdCBlbnRyaWVzX2xvY2s7XG4mIzQzO1x0c3RydWN0IGhsaXN0X2hlYWQgZW50cmllcztcbiYjNDM7XHRzcGlubG9ja190IGVudHJpZXNfbG9jaztcbiBcdGJvb2wgZW5hYmxlZDtcbiB9IF9fcmFuZG9taXplX2xheW91dDtcbiBcbmRpZmYgLS1naXQgYS9rZXJuZWwvdXNlci5jIGIva2VybmVsL3VzZXIuY1xuaW5kZXggN2FlZjRlNjc5YTZhMGMuLjIxYmFmZGMxMTM3OTU2IDEwMDY0NFxuLS0tIGEva2VybmVsL3VzZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL3VzZXIuY1xuQEAgLTIzLDkgJiM0MzsyMyw5IEBAXG4gXG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX0JJTkZNVF9NSVNDKVxuIHN0cnVjdCBiaW5mbXRfbWlzYyBpbml0X2JpbmZtdF9taXNjID0ge1xuLVx0LmVudHJpZXMgPSBMSVNUX0hFQURfSU5JVChpbml0X2JpbmZtdF9taXNjLmVudHJpZXMpLFxuJiM0MztcdC5lbnRyaWVzID0gSExJU1RfSEVBRF9JTklULFxuIFx0LmVuYWJsZWQgPSB0cnVlLFxuLVx0LmVudHJpZXNfbG9jayA9IF9fUldfTE9DS19VTkxPQ0tFRChpbml0X2JpbmZtdF9taXNjLmVudHJpZXNfbG9jayksXG4mIzQzO1x0LmVudHJpZXNfbG9jayA9IF9fU1BJTl9MT0NLX1VOTE9DS0VEKGluaXRfYmluZm10X21pc2MuZW50cmllc19sb2NrKSxcbiB9O1xuIEVYUE9SVF9TWU1CT0xfR1BMKGluaXRfYmluZm10X21pc2MpO1xuICNlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDEwOjMyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JJTkZNVF9NSVNDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bG9hZF9taXNjX2JpbmFyeSYjMzQ7LAogICAgJiMzNDtibV9lbnRyeV93cml0ZSYjMzQ7LAogICAgJiMzNDtibV9zdGF0dXNfd3JpdGUmIzM0OywKICAgICYjMzQ7Ym1fZXZpY3RfaW5vZGUmIzM0OywKICAgICYjMzQ7YWRkX2VudHJ5JiMzNDssCiAgICAmIzM0O2dldF9iaW5mbXRfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtzZWFyY2hfYmluZm10X2hhbmRsZXImIzM0OywKICAgICYjMzQ7cmVtb3ZlX2JpbmZtdF9oYW5kbGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlcyBvZiBgYmluZm10X21pc2NgIGZyb20gYSBkb3VibHktbGlua2VkIGxpc3Qgd2l0aCBhIHJ3bG9jayB0byBhbiBSQ1UtcHJvdGVjdGVkIGhhc2ggbGlzdCB3aXRoIGEgc3BpbmxvY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGNvcmUgbG9naWMgb2YgYGJpbmZtdF9taXNjYCByZWdpc3RyYXRpb24sIHVucmVnaXN0cmF0aW9uLCBhbmQgYmluYXJ5IGV4ZWN1dGlvbi4gSXQgaXMgd29ydGggZnV6emluZyB0byBlbnN1cmUgdGhlIG5ldyBSQ1UgbG9naWMgYW5kIGxvY2tsZXNzIHRyYXZlcnNhbCBkbyBub3QgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucywgdXNlLWFmdGVyLWZyZWUsIG9yIG90aGVyIG1lbW9yeSBzYWZldHkgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhMjkxNzU3ODczNzdhNzgzYmYyOWVlY2ZlNDJmNDNhNTNkYzc3YWZkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgOSAxMDozMjoyNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9taXNjLmMgYi9mcy9iaW5mbXRfbWlzYy5jCmluZGV4IDg0MzQ5ZmNiOTNmMTNhLi4wZjA0NzA5YTBhMzlmNSAxMDA2NDQKLS0tIGEvZnMvYmluZm10X21pc2MuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9iaW5mbXRfbWlzYy5jCkBAIC0yNCw2ICYjNDM7MjQsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L3BhZ2VtYXAuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9uYW1laS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21vdW50LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3JjdWxpc3QuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9mc19jb250ZXh0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc3lzY2FsbHMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9mcy5oJmd0OwpAQCAtNDgsNyAmIzQzOzQ5LDcgQEAgZW51bSB7RW5hYmxlZCwgTWFnaWN9OwogI2RlZmluZSBNSVNDX0ZNVF9PUEVOX0ZJTEUgKDFVTCAmbHQ7Jmx0OyAyOCkKIAogdHlwZWRlZiBzdHJ1Y3QgewotCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKJiM0MzsJc3RydWN0IGhsaXN0X25vZGUgbm9kZTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwkJLyogdHlwZSwgc3RhdHVzLCBldGMuICovCiAJaW50IG9mZnNldDsJCQkvKiBvZmZzZXQgb2YgbWFnaWMgKi8KIAlpbnQgc2l6ZTsJCQkvKiBzaXplIG9mIG1hZ2ljL21hc2sgKi8KQEAgLTU5LDYgJiM0Mzs2MCw3IEBAIHR5cGVkZWYgc3RydWN0IHsKIAlzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7CiAJc3RydWN0IGZpbGUgKmludGVycF9maWxlOwogCXJlZmNvdW50X3QgdXNlcnM7CQkvKiBzeW5jIHJlbW92YWwgd2l0aCBsb2FkX21pc2NfYmluYXJ5KCkgKi8KJiM0MzsJc3RydWN0IHJjdV9oZWFkIHJjdTsKIH0gTm9kZTsKIAogc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGJtX2ZzX3R5cGU7CkBAIC04Niw2ICYjNDM7ODgsOCBAQCBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgYm1fZnNfdHlwZTsKICAqIFNlYXJjaCBmb3IgYSBiaW5hcnkgdHlwZSBoYW5kbGVyIGZvciBAYnBybSBpbiB0aGUgbGlzdCBvZiByZWdpc3RlcmVkIGJpbmFyeQogICogdHlwZSBoYW5kbGVycy4KICAqCiYjNDM7ICogVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIFJDVSByZWFkIGxvY2suCiYjNDM7ICoKICAqIFJldHVybjogYmluYXJ5IHR5cGUgbGlzdCBlbnRyeSBvbiBzdWNjZXNzLCBOVUxMIG9uIGZhaWx1cmUKICAqLwogc3RhdGljIE5vZGUgKnNlYXJjaF9iaW5mbXRfaGFuZGxlcihzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2MsCkBAIC05NSw3ICYjNDM7OTksNyBAQCBzdGF0aWMgTm9kZSAqc2VhcmNoX2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYywKIAlOb2RlICplOwogCiAJLyogV2FsayBhbGwgdGhlIHJlZ2lzdGVyZWQgaGFuZGxlcnMuICovCi0JbGlzdF9mb3JfZWFjaF9lbnRyeShlLCAmYW1wO21pc2MtJmd0O2VudHJpZXMsIGxpc3QpIHsKJiM0MzsJaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGUsICZhbXA7bWlzYy0mZ3Q7ZW50cmllcywgbm9kZSkgewogCQljaGFyICpzOwogCQlpbnQgajsKIApAQCAtMTM0LDcgJiM0MzsxMzgsMTAgQEAgc3RhdGljIE5vZGUgKnNlYXJjaF9iaW5mbXRfaGFuZGxlcihzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2MsCiAgKiBAYnBybTogYmluYXJ5IGZvciB3aGljaCB3ZSBhcmUgbG9va2luZyBmb3IgYSBoYW5kbGVyCiAgKgogICogVHJ5IHRvIGZpbmQgYSBiaW5mbXQgaGFuZGxlciBmb3IgdGhlIGJpbmFyeSB0eXBlLiBJZiBvbmUgaXMgZm91bmQgdGFrZSBhCi0gKiByZWZlcmVuY2UgdG8gcHJvdGVjdCBhZ2FpbnN0IHJlbW92YWwgdmlhIGJtX3tlbnRyeSxzdGF0dXN9X3dyaXRlKCkuCiYjNDM7ICogcmVmZXJlbmNlIHRvIHByb3RlY3QgYWdhaW5zdCByZW1vdmFsIHZpYSBibV97ZW50cnksc3RhdHVzfV93cml0ZSgpLiBUaGUKJiM0MzsgKiByZWZjb3VudCBvZiBhbiBlbnRyeSBjYW4gb25seSBkcm9wIHRvIHplcm8gb25jZSBpdCBoYXMgYmVlbiB1bmxpbmtlZCBhbmQKJiM0MzsgKiBhIHJlc3RhcnRlZCBzZWFyY2ggY2Fubm90IGZpbmQgYW4gdW5saW5rZWQgZW50cnkgYWdhaW4gc28gdGhlIHJldHJ5IGxvb3AKJiM0MzsgKiBpcyBib3VuZGVkLgogICoKICAqIFJldHVybjogYmluYXJ5IHR5cGUgbGlzdCBlbnRyeSBvbiBzdWNjZXNzLCBOVUxMIG9uIGZhaWx1cmUKICAqLwpAQCAtMTQzLDExICYjNDM7MTUwLDEwIEBAIHN0YXRpYyBOb2RlICpnZXRfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLAogewogCU5vZGUgKmU7CiAKLQlyZWFkX2xvY2soJmFtcDttaXNjLSZndDtlbnRyaWVzX2xvY2spOwotCWUgPSBzZWFyY2hfYmluZm10X2hhbmRsZXIobWlzYywgYnBybSk7Ci0JaWYgKGUpCi0JCXJlZmNvdW50X2luYygmYW1wO2UtJmd0O3VzZXJzKTsKLQlyZWFkX3VubG9jaygmYW1wO21pc2MtJmd0O2VudHJpZXNfbG9jayk7CiYjNDM7CWd1YXJkKHJjdSkoKTsKJiM0MzsJZG8gewomIzQzOwkJZSA9IHNlYXJjaF9iaW5mbXRfaGFuZGxlcihtaXNjLCBicHJtKTsKJiM0MzsJfSB3aGlsZSAoZSAmYW1wOyZhbXA7ICFyZWZjb3VudF9pbmNfbm90X3plcm8oJmFtcDtlLSZndDt1c2VycykpOwogCXJldHVybiBlOwogfQogCkBAIC0xNjQsNyAmIzQzOzE3MCw4IEBAIHN0YXRpYyB2b2lkIHB1dF9iaW5mbXRfaGFuZGxlcihOb2RlICplKQogCWlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoJmFtcDtlLSZndDt1c2VycykpIHsKIAkJaWYgKGUtJmd0O2ZsYWdzICZhbXA7IE1JU0NfRk1UX09QRU5fRklMRSkKIAkJCWZpbHBfY2xvc2UoZS0mZ3Q7aW50ZXJwX2ZpbGUsIE5VTEwpOwotCQlrZnJlZShlKTsKJiM0MzsJCS8qIExvY2tsZXNzIHdhbGtlcnMgbWF5IHN0aWxsIGRlcmVmZXJlbmNlIHRoaXMgZW50cnkuICovCiYjNDM7CQlrZnJlZV9yY3UoZSwgcmN1KTsKIAl9CiB9CiAKQEAgLTIwOCw3ICYjNDM7MjE1LDcgQEAgc3RhdGljIGludCBsb2FkX21pc2NfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pCiAJc3RydWN0IGJpbmZtdF9taXNjICptaXNjOwogCiAJbWlzYyA9IGxvYWRfYmluZm10X21pc2MoKTsKLQlpZiAoIW1pc2MtJmd0O2VuYWJsZWQpCiYjNDM7CWlmICghUkVBRF9PTkNFKG1pc2MtJmd0O2VuYWJsZWQpKQogCQlyZXR1cm4gcmV0dmFsOwogCiAJZm10ID0gZ2V0X2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0pOwpAQCAtNjU0LDggJiM0Mzs2NjEsOCBAQCBzdGF0aWMgc3RydWN0IGJpbmZtdF9taXNjICppX2JpbmZtdF9taXNjKHN0cnVjdCBpbm9kZSAqaW5vZGUpCiAgKgogICogSWYgdGhlIC0mZ3Q7ZXZpY3QgY2FsbCB3YXMgbm90IGNhdXNlZCBieSBhIHN1cGVyIGJsb2NrIHNodXRkb3duIGJ1dCBieSBhIHdyaXRlCiAgKiB0byByZW1vdmUgdGhlIGVudHJ5IG9yIGFsbCBlbnRyaWVzIHZpYSBibV97ZW50cnksc3RhdHVzfV93cml0ZSgpIHRoZSBlbnRyeQotICogd2lsbCBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVkIGZyb20gdGhlIGxpc3QuIFdlIGtlZXAgdGhlIGxpc3RfZW1wdHkoKSBjaGVjawotICogdG8gbWFrZSB0aGF0IGV4cGxpY2l0LgomIzQzOyAqIHdpbGwgaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBsaXN0LiBXZSBrZWVwIHRoZSBobGlzdF91bmhhc2hlZCgpCiYjNDM7ICogY2hlY2sgdG8gbWFrZSB0aGF0IGV4cGxpY2l0LgogKi8KIHN0YXRpYyB2b2lkIGJtX2V2aWN0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpCiB7CkBAIC02NjcsMTAgJiM0Mzs2NzQsMTAgQEAgc3RhdGljIHZvaWQgYm1fZXZpY3RfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSkKIAkJc3RydWN0IGJpbmZtdF9taXNjICptaXNjOwogCiAJCW1pc2MgPSBpX2JpbmZtdF9taXNjKGlub2RlKTsKLQkJd3JpdGVfbG9jaygmYW1wO21pc2MtJmd0O2VudHJpZXNfbG9jayk7Ci0JCWlmICghbGlzdF9lbXB0eSgmYW1wO2UtJmd0O2xpc3QpKQotCQkJbGlzdF9kZWxfaW5pdCgmYW1wO2UtJmd0O2xpc3QpOwotCQl3cml0ZV91bmxvY2soJmFtcDttaXNjLSZndDtlbnRyaWVzX2xvY2spOwomIzQzOwkJc3Bpbl9sb2NrKCZhbXA7bWlzYy0mZ3Q7ZW50cmllc19sb2NrKTsKJiM0MzsJCWlmICghaGxpc3RfdW5oYXNoZWQoJmFtcDtlLSZndDtub2RlKSkKJiM0MzsJCQlobGlzdF9kZWxfaW5pdF9yY3UoJmFtcDtlLSZndDtub2RlKTsKJiM0MzsJCXNwaW5fdW5sb2NrKCZhbXA7bWlzYy0mZ3Q7ZW50cmllc19sb2NrKTsKIAkJcHV0X2JpbmZtdF9oYW5kbGVyKGUpOwogCX0KIH0KQEAgLTY4OSw5ICYjNDM7Njk2LDkgQEAgc3RhdGljIHZvaWQgYm1fZXZpY3RfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSkKICAqLwogc3RhdGljIHZvaWQgcmVtb3ZlX2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYywgTm9kZSAqZSkKIHsKLQl3cml0ZV9sb2NrKCZhbXA7bWlzYy0mZ3Q7ZW50cmllc19sb2NrKTsKLQlsaXN0X2RlbF9pbml0KCZhbXA7ZS0mZ3Q7bGlzdCk7Ci0Jd3JpdGVfdW5sb2NrKCZhbXA7bWlzYy0mZ3Q7ZW50cmllc19sb2NrKTsKJiM0MzsJc3Bpbl9sb2NrKCZhbXA7bWlzYy0mZ3Q7ZW50cmllc19sb2NrKTsKJiM0MzsJaGxpc3RfZGVsX2luaXRfcmN1KCZhbXA7ZS0mZ3Q7bm9kZSk7CiYjNDM7CXNwaW5fdW5sb2NrKCZhbXA7bWlzYy0mZ3Q7ZW50cmllc19sb2NrKTsKIAlsb2NrZWRfcmVjdXJzaXZlX3JlbW92YWwoZS0mZ3Q7ZGVudHJ5LCBOVUxMKTsKIH0KIApAQCAtNzQyLDExICYjNDM7NzQ5LDEzIEBAIHN0YXRpYyBzc2l6ZV90IGJtX2VudHJ5X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLAogCQkgKiB2aWEgYm1fe2VudHJ5LHJlZ2lzdGVyLHN0YXR1c31fd3JpdGUoKSBpbm9kZV9sb2NrKCkgb24gdGhlCiAJCSAqIHJvb3QgaW5vZGUgbXVzdCBiZSBoZWxkLgogCQkgKiBUaGUgbG9jayBpcyBleGNsdXNpdmUgZW5zdXJpbmcgdGhhdCB0aGUgbGlzdCBjYW4mIzM5O3QgYmUKLQkJICogbW9kaWZpZWQuIE9ubHkgbG9hZF9taXNjX2JpbmFyeSgpIGNhbiBhY2Nlc3MgYnV0IGRvZXMgc28KLQkJICogcmVhZC1vbmx5LiBTbyB3ZSBvbmx5IG5lZWQgdG8gdGFrZSB0aGUgd3JpdGUgbG9jayB3aGVuIHdlCi0JCSAqIGFjdHVhbGx5IHJlbW92ZSB0aGUgZW50cnkgZnJvbSB0aGUgbGlzdC4KJiM0MzsJCSAqIG1vZGlmaWVkLiBPbmx5IGxvYWRfbWlzY19iaW5hcnkoKSBjYW4gYWNjZXNzIHRoZSBsaXN0CiYjNDM7CQkgKiBjb25jdXJyZW50bHkgYW5kIGl0IGRvZXMgc28gdW5kZXIgUkNVLiBTbyBlbnRyaWVzX2xvY2sgb25seQomIzQzOwkJICogbmVlZHMgdG8gYmUgaGVsZCB3aGVuIGFuIGVudHJ5IGlzIGFjdHVhbGx5IHVubGlua2VkIHRvCiYjNDM7CQkgKiBzZXJpYWxpemUgYWdhaW5zdCBibV9ldmljdF9pbm9kZSgpIGR1cmluZyB1bW91bnQgd2hpY2gKJiM0MzsJCSAqIHVubGlua3Mgd2l0aG91dCBob2xkaW5nIGlub2RlX2xvY2suCiAJCSAqLwotCQlpZiAoIWxpc3RfZW1wdHkoJmFtcDtlLSZndDtsaXN0KSkKJiM0MzsJCWlmICghaGxpc3RfdW5oYXNoZWQoJmFtcDtlLSZndDtub2RlKSkKIAkJCXJlbW92ZV9iaW5mbXRfaGFuZGxlcihpX2JpbmZtdF9taXNjKGlub2RlKSwgZSk7CiAKIAkJaW5vZGVfdW5sb2NrKGlub2RlKTsKQEAgLTc4OSw5ICYjNDM7Nzk4LDkgQEAgc3RhdGljIGludCBhZGRfZW50cnkoTm9kZSAqZSwgc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKIAogCWRfbWFrZV9wZXJzaXN0ZW50KGRlbnRyeSwgaW5vZGUpOwogCW1pc2MgPSBpX2JpbmZtdF9taXNjKGlub2RlKTsKLQl3cml0ZV9sb2NrKCZhbXA7bWlzYy0mZ3Q7ZW50cmllc19sb2NrKTsKLQlsaXN0X2FkZCgmYW1wO2UtJmd0O2xpc3QsICZhbXA7bWlzYy0mZ3Q7ZW50cmllcyk7Ci0Jd3JpdGVfdW5sb2NrKCZhbXA7bWlzYy0mZ3Q7ZW50cmllc19sb2NrKTsKJiM0MzsJc3Bpbl9sb2NrKCZhbXA7bWlzYy0mZ3Q7ZW50cmllc19sb2NrKTsKJiM0MzsJaGxpc3RfYWRkX2hlYWRfcmN1KCZhbXA7ZS0mZ3Q7bm9kZSwgJmFtcDttaXNjLSZndDtlbnRyaWVzKTsKJiM0MzsJc3Bpbl91bmxvY2soJmFtcDttaXNjLSZndDtlbnRyaWVzX2xvY2spOwogCXNpbXBsZV9kb25lX2NyZWF0aW5nKGRlbnRyeSk7CiAJcmV0dXJuIDA7CiB9CkBAIC04NTQsNyAmIzQzOzg2Myw3IEBAIGJtX3N0YXR1c19yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbmJ5dGVzLCBsb2ZmX3QgKnBwb3MpCiAJY2hhciAqczsKIAogCW1pc2MgPSBpX2JpbmZtdF9taXNjKGZpbGVfaW5vZGUoZmlsZSkpOwotCXMgPSBtaXNjLSZndDtlbmFibGVkID8gJiMzNDtlbmFibGVkXG4mIzM0OyA6ICYjMzQ7ZGlzYWJsZWRcbiYjMzQ7OwomIzQzOwlzID0gUkVBRF9PTkNFKG1pc2MtJmd0O2VuYWJsZWQpID8gJiMzNDtlbmFibGVkXG4mIzM0OyA6ICYjMzQ7ZGlzYWJsZWRcbiYjMzQ7OwogCXJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcihidWYsIG5ieXRlcywgcHBvcywgcywgc3RybGVuKHMpKTsKIH0KIApAQCAtODYzLDE4ICYjNDM7ODcyLDE5IEBAIHN0YXRpYyBzc2l6ZV90IGJtX3N0YXR1c193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwKIHsKIAlzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2M7CiAJaW50IHJlcyA9IHBhcnNlX2NvbW1hbmQoYnVmZmVyLCBjb3VudCk7Ci0JTm9kZSAqZSwgKm5leHQ7CiYjNDM7CXN0cnVjdCBobGlzdF9ub2RlICpuZXh0OwogCXN0cnVjdCBpbm9kZSAqaW5vZGU7CiYjNDM7CU5vZGUgKmU7CiAKIAltaXNjID0gaV9iaW5mbXRfbWlzYyhmaWxlX2lub2RlKGZpbGUpKTsKIAlzd2l0Y2ggKHJlcykgewogCWNhc2UgMToKIAkJLyogRGlzYWJsZSBhbGwgaGFuZGxlcnMuICovCi0JCW1pc2MtJmd0O2VuYWJsZWQgPSBmYWxzZTsKJiM0MzsJCVdSSVRFX09OQ0UobWlzYy0mZ3Q7ZW5hYmxlZCwgZmFsc2UpOwogCQlicmVhazsKIAljYXNlIDI6CiAJCS8qIEVuYWJsZSBhbGwgaGFuZGxlcnMuICovCi0JCW1pc2MtJmd0O2VuYWJsZWQgPSB0cnVlOwomIzQzOwkJV1JJVEVfT05DRShtaXNjLSZndDtlbmFibGVkLCB0cnVlKTsKIAkJYnJlYWs7CiAJY2FzZSAzOgogCQkvKiBEZWxldGUgYWxsIGhhbmRsZXJzLiAqLwpAQCAtODg2LDExICYjNDM7ODk2LDEzIEBAIHN0YXRpYyBzc2l6ZV90IGJtX3N0YXR1c193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwKIAkJICogdmlhIGJtX3tlbnRyeSxyZWdpc3RlcixzdGF0dXN9X3dyaXRlKCkgaW5vZGVfbG9jaygpIG9uIHRoZQogCQkgKiByb290IGlub2RlIG11c3QgYmUgaGVsZC4KIAkJICogVGhlIGxvY2sgaXMgZXhjbHVzaXZlIGVuc3VyaW5nIHRoYXQgdGhlIGxpc3QgY2FuJiMzOTt0IGJlCi0JCSAqIG1vZGlmaWVkLiBPbmx5IGxvYWRfbWlzY19iaW5hcnkoKSBjYW4gYWNjZXNzIGJ1dCBkb2VzIHNvCi0JCSAqIHJlYWQtb25seS4gU28gd2Ugb25seSBuZWVkIHRvIHRha2UgdGhlIHdyaXRlIGxvY2sgd2hlbiB3ZQotCQkgKiBhY3R1YWxseSByZW1vdmUgdGhlIGVudHJ5IGZyb20gdGhlIGxpc3QuCiYjNDM7CQkgKiBtb2RpZmllZC4gT25seSBsb2FkX21pc2NfYmluYXJ5KCkgY2FuIGFjY2VzcyB0aGUgbGlzdAomIzQzOwkJICogY29uY3VycmVudGx5IGFuZCBpdCBkb2VzIHNvIHVuZGVyIFJDVS4gU28gZW50cmllc19sb2NrIG9ubHkKJiM0MzsJCSAqIG5lZWRzIHRvIGJlIGhlbGQgd2hlbiBhbiBlbnRyeSBpcyBhY3R1YWxseSB1bmxpbmtlZCB0bwomIzQzOwkJICogc2VyaWFsaXplIGFnYWluc3QgYm1fZXZpY3RfaW5vZGUoKSBkdXJpbmcgdW1vdW50IHdoaWNoCiYjNDM7CQkgKiB1bmxpbmtzIHdpdGhvdXQgaG9sZGluZyBpbm9kZV9sb2NrLgogCQkgKi8KLQkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGUsIG5leHQsICZhbXA7bWlzYy0mZ3Q7ZW50cmllcywgbGlzdCkKJiM0MzsJCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZSwgbmV4dCwgJmFtcDttaXNjLSZndDtlbnRyaWVzLCBub2RlKQogCQkJcmVtb3ZlX2JpbmZtdF9oYW5kbGVyKG1pc2MsIGUpOwogCiAJCWlub2RlX3VubG9jayhpbm9kZSk7CkBAIC05NjUsOCAmIzQzOzk3Nyw4IEBAIHN0YXRpYyBpbnQgYm1fZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCiAJCWlmICghbWlzYykKIAkJCXJldHVybiAtRU5PTUVNOwogCi0JCUlOSVRfTElTVF9IRUFEKCZhbXA7bWlzYy0mZ3Q7ZW50cmllcyk7Ci0JCXJ3bG9ja19pbml0KCZhbXA7bWlzYy0mZ3Q7ZW50cmllc19sb2NrKTsKJiM0MzsJCUlOSVRfSExJU1RfSEVBRCgmYW1wO21pc2MtJmd0O2VudHJpZXMpOwomIzQzOwkJc3Bpbl9sb2NrX2luaXQoJmFtcDttaXNjLSZndDtlbnRyaWVzX2xvY2spOwogCiAJCS8qIFBhaXJzIHdpdGggc21wX2xvYWRfYWNxdWlyZSgpIGluIGxvYWRfYmluZm10X21pc2MoKS4gKi8KIAkJc21wX3N0b3JlX3JlbGVhc2UoJmFtcDt1c2VyX25zLSZndDtiaW5mbXRfbWlzYywgbWlzYyk7CkBAIC05ODMsNyAmIzQzOzk5NSw3IEBAIHN0YXRpYyBpbnQgYm1fZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCiAJICogc29tZW9uZSBtb3VudHMgYmluZm10X21pc2MgZm9yIHRoZSBmaXJzdCB0aW1lIG9yIGFnYWluIHdlIHNpbXBseQogCSAqIHJlc2V0IC0mZ3Q7ZW5hYmxlZCB0byB0cnVlLgogCSAqLwotCW1pc2MtJmd0O2VuYWJsZWQgPSB0cnVlOwomIzQzOwlXUklURV9PTkNFKG1pc2MtJmd0O2VuYWJsZWQsIHRydWUpOwogCiAJZXJyID0gc2ltcGxlX2ZpbGxfc3VwZXIoc2IsIEJJTkZNVEZTX01BR0lDLCBibV9maWxlcyk7CiAJaWYgKCFlcnIpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCBiL2luY2x1ZGUvbGludXgvYmluZm10cy5oCmluZGV4IDJjNzdlMzgzZTczNzU3Li43ZTczMzNiN2JiMGYxMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9iaW5mbXRzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9iaW5mbXRzLmgKQEAgLTEwMSw4ICYjNDM7MTAxLDggQEAgc3RydWN0IGxpbnV4X2JpbmZtdCB7CiAKICNpZiBJU19FTkFCTEVEKENPTkZJR19CSU5GTVRfTUlTQykKIHN0cnVjdCBiaW5mbXRfbWlzYyB7Ci0Jc3RydWN0IGxpc3RfaGVhZCBlbnRyaWVzOwotCXJ3bG9ja190IGVudHJpZXNfbG9jazsKJiM0MzsJc3RydWN0IGhsaXN0X2hlYWQgZW50cmllczsKJiM0MzsJc3BpbmxvY2tfdCBlbnRyaWVzX2xvY2s7CiAJYm9vbCBlbmFibGVkOwogfSBfX3JhbmRvbWl6ZV9sYXlvdXQ7CiAKZGlmZiAtLWdpdCBhL2tlcm5lbC91c2VyLmMgYi9rZXJuZWwvdXNlci5jCmluZGV4IDdhZWY0ZTY3OWE2YTBjLi4yMWJhZmRjMTEzNzk1NiAxMDA2NDQKLS0tIGEva2VybmVsL3VzZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvdXNlci5jCkBAIC0yMyw5ICYjNDM7MjMsOSBAQAogCiAjaWYgSVNfRU5BQkxFRChDT05GSUdfQklORk1UX01JU0MpCiBzdHJ1Y3QgYmluZm10X21pc2MgaW5pdF9iaW5mbXRfbWlzYyA9IHsKLQkuZW50cmllcyA9IExJU1RfSEVBRF9JTklUKGluaXRfYmluZm10X21pc2MuZW50cmllcyksCiYjNDM7CS5lbnRyaWVzID0gSExJU1RfSEVBRF9JTklULAogCS5lbmFibGVkID0gdHJ1ZSwKLQkuZW50cmllc19sb2NrID0gX19SV19MT0NLX1VOTE9DS0VEKGluaXRfYmluZm10X21pc2MuZW50cmllc19sb2NrKSwKJiM0MzsJLmVudHJpZXNfbG9jayA9IF9fU1BJTl9MT0NLX1VOTE9DS0VEKGluaXRfYmluZm10X21pc2MuZW50cmllc19sb2NrKSwKIH07CiBFWFBPUlRfU1lNQk9MX0dQTChpbml0X2JpbmZtdF9taXNjKTsKICNlbmRpZgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxMDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTQwCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNDAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQmluZm10X01pc2MgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCYjMzk7cyBtYWtpbmcgc29tZSBmdW5kYW1lbnRhbCBjaGFuZ2VzIHRvIHRoZSBiaW5mbXRfbWlzYyBzdWJzeXN0ZW0uIFRoaXMgaXMgYSBjb3JlIGtlcm5lbCBhcmVhLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgbWlzY2VsbGFuZW91cyBiaW5hcnkgZm9ybWF0cy4gVGhlIHBhdGNoIHRvdWNoZXMgYGZzL2JpbmZtdF9taXNjLmNgLCBgaW5jbHVkZS9saW51eC9iaW5mbXRzLmhgLCBhbmQgYGtlcm5lbC91c2VyLmNgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyB0aGlzIGFzIHBvdGVudGlhbGx5IHNpZ25pZmljYW50LgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBhcHBlYXJzIHRvIGJlIGEgc3dpdGNoIGZyb20gYSBkb3VibHktbGlua2VkIGxpc3QgKGBzdHJ1Y3QgbGlzdF9oZWFkYCkgdG8gYSBoYXNoIGxpc3QgKGBzdHJ1Y3QgaGxpc3RfaGVhZGApIGZvciB0aGUgYGVudHJpZXNgIGxpc3QgaW4gYHN0cnVjdCBiaW5mbXRfbWlzY2AuIFdlJiMzOTtyZSBhbHNvIHNlZWluZyBhIGxvY2sgdXBncmFkZS4gVGhlIHBhdGNoIGNoYW5nZXMgYGVudHJpZXNfbG9ja2AgZnJvbSBhIHJlYWQtd3JpdGUgbG9jayAoYHJ3bG9ja190YCkgdG8gYSBzcGlubG9jayAoYHNwaW5sb2NrX3RgKS4gVGhpcyBzdWdnZXN0cyBhIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIHRob3VnaCBpdCBhbHNvIGluY3JlYXNlcyB0aGUgcmlzayBvZiBjb250ZW50aW9uIGluIGNlcnRhaW4gc2NlbmFyaW9zLiBJdCBhbHNvIHNlZW1zIHRoZXkmIzM5O3JlIGxldmVyYWdpbmcgUkNVIChSZWFkLUNvcHktVXBkYXRlKSBmb3IgbG9ja2xlc3MgdHJhdmVyc2FsIGluIGBnZXRfYmluZm10X2hhbmRsZXJgIGFuZCBgc2VhcmNoX2JpbmZtdF9oYW5kbGVyYCwgd2hpY2ggaXMgYW4gaW50ZXJlc3RpbmcgZGVzaWduIGNob2ljZS4gVGhpcyBkZWZpbml0ZWx5IGNhbGxzIGZvciBzb21lIGNhcmVmdWwgc2NydXRpbnkuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhpcyBpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gQW55IGNoYW5nZSB0byBjb3JlIGtlcm5lbCBsb2dpYyB3YXJyYW50cyBhIHRob3JvdWdoIGV4YW1pbmF0aW9uIGZvciBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGFuZCBlZGdlIGNhc2VzLiBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyBhZmZlY3RlZCB0byBkaXJlY3QgbXkgZnV6emluZyBlZmZvcnRzLgoKTGV0JiMzOTtzIHNlZeKApiBCYXNlZCBvbiB0aGUgZGlmZiwgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIG1vZGlmaWVkIG9yIGRpcmVjdGx5IGludm9sdmVkOiBgc2VhcmNoX2JpbmZtdF9oYW5kbGVyYCwgYGdldF9iaW5mbXRfaGFuZGxlcmAsIGBwdXRfYmluZm10X2hhbmRsZXJgLCBgbG9hZF9taXNjX2JpbmFyeWAsIGBibV9ldmljdF9pbm9kZWAsIGByZW1vdmVfYmluZm10X2hhbmRsZXJgLCBgYm1fZW50cnlfd3JpdGVgLCBgYWRkX2VudHJ5YCwgYGJtX3N0YXR1c19yZWFkYCwgYGJtX3N0YXR1c193cml0ZWAsIGFuZCBgYm1fZmlsbF9zdXBlcmAuCgpPa2F5LCBzbyBgbG9hZF9taXNjX2JpbmFyeWAgaXMgdGhlIG1vbmV5IHNob3Qg4oCTIGl0JiMzOTtzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciBiaW5hcnkgZXhlY3V0aW9uIHRocm91Z2ggYmluZm10X21pc2MuIGBibV9lbnRyeV93cml0ZWAsIGBibV9zdGF0dXNfd3JpdGVgLCBhbmQgYGJtX3N0YXR1c19yZWFkYCBhcmUgdGhlIHVzZXItc3BhY2UgaW50ZXJmYWNlcyBmb3IgY29uZmlndXJpbmcgYmluZm10X21pc2MuIGBibV9ldmljdF9pbm9kZWAgaGFuZGxlcyBpbm9kZSBldmljdGlvbiwgc28gaXQmIzM5O3MgcHJvYmFibHkgbGVzcyBjcml0aWNhbCBmcm9tIGEgZGlyZWN0IGF0dGFjayBzdXJmYWNlIHBlcnNwZWN0aXZlIGJ1dCBzdGlsbCByZWxldmFudCBmb3Igc3RhYmlsaXR5LgoKQmVmb3JlIEkgZ28gZnVydGhlciwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaGUgY29kZSBzZWVtcyB0byBiZSBndWFyZGVkIGJ5IGBDT05GSUdfQklORk1UX01JU0NgLiBJIHNob3VsZCBxdWlja2x5IHZlcmlmeSB0aGlzIGJ5IGNoZWNraW5nIGBmcy9LY29uZmlnLmJpbmZtdGAgb3IgYGZzL01ha2VmaWxlYCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBidWlsZC10aW1lIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxMDozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCSU5GTVRfTUlTQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9LY29uZmlnLmJpbmZtdD0xMzg9Y29uZmlnIEJJTkZNVF9aRkxBVFxuLS1cbmZzL0tjb25maWcuYmluZm10LTE0NC1cbmZzL0tjb25maWcuYmluZm10OjE0NTpjb25maWcgQklORk1UX01JU0NcbmZzL0tjb25maWcuYmluZm10LTE0Ni1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbCBzdXBwb3J0IGZvciBNSVNDIGJpbmFyaWVzXCYjMzQ7XG4tLVxuZnMvTWFrZWZpbGU9MzQ9b2JqLSQoQ09ORklHX0ZJTEVfTE9DS0lORykgICAgICAmIzQzOz0gbG9ja3Mub1xuZnMvTWFrZWZpbGU6MzU6b2JqLSQoQ09ORklHX0JJTkZNVF9NSVNDKVx0JiM0Mzs9IGJpbmZtdF9taXNjLm9cbmZzL01ha2VmaWxlLTM2LW9iai0kKENPTkZJR19CSU5GTVRfU0NSSVBUKVx0JiM0Mzs9IGJpbmZtdF9zY3JpcHQub1xuLS1cbmZzL2ZpbGVfdGFibGUuYz0xNjU9c3RhdGljIGludCBfX2luaXQgaW5pdF9mc19zdGF0X3N5c2N0bHModm9pZClcbi0tXG5mcy9maWxlX3RhYmxlLmMtMTY3LVx0cmVnaXN0ZXJfc3lzY3RsX2luaXQoXCYjMzQ7ZnNcJiMzNDssIGZzX3N0YXRfc3lzY3Rscyk7XG5mcy9maWxlX3RhYmxlLmM6MTY4Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0JJTkZNVF9NSVNDKSkge1xuZnMvZmlsZV90YWJsZS5jLTE2OS1cdFx0c3RydWN0IGN0bF90YWJsZV9oZWFkZXIgKmhkcjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxMDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDI3CgkJCQkJCQlvdXRwdXQ6IDY2CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBCSU5GTVRfTUlTQyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gd2UmIzM5O3JlIGxvb2tpbmcgYXQgaXMgYEJJTkZNVF9NSVNDYC4gIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBUaW1lIHRvIGRpdmUgaW50byB0aGUgaW1wbGVtZW50YXRpb24uIE15IGZpcnN0IHN0ZXAgaXMgdG8gY3JhY2sgb3BlbiBgZnMvYmluZm10X21pc2MuY2AuIEkgbmVlZCB0byByZXZpZXcgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGlzIHNwZWNpZmljIGZlYXR1cmUgaW4gTGludXgsIGFuZCBpZGVudGlmeSB0aGUgY29yZSBmdW5jdGlvbnMgdGhhdCBoYW5kbGUgdGhpcyBmdW5jdGlvbmFsaXR5LiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlcmFjdGlvbnMgb2YgdGhlIHJlbGV2YW50IGZpbGVzIGFuZCBmdW5jdGlvbnMuIEkgbmVlZCB0byBiZSBzdXJlIEkmIzM5O20gYWNyb3NzIHRoZSBiYXNpY3MgYmVmb3JlIGRpZ2dpbmcgYW55IGRlZXBlci4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDEwOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oc3RhdGljfGludHx2b2lkKS4qIChsb2FkX21pc2NfYmluYXJ5fGJtX2VudHJ5X3dyaXRlfGJtX3N0YXR1c193cml0ZXxibV9ldmljdF9pbm9kZXxhZGRfZW50cnkpXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYmluZm10X21pc2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9iaW5mbXRfbWlzYy5jPTE4OT1zdGF0aWMgc3RydWN0IGJpbmZtdF9taXNjICpsb2FkX2JpbmZtdF9taXNjKHZvaWQpXG4tLVxuZnMvYmluZm10X21pc2MuYy0yMDktICovXG5mcy9iaW5mbXRfbWlzYy5jOjIxMDpzdGF0aWMgaW50IGxvYWRfbWlzY19iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbmZzL2JpbmZtdF9taXNjLmMtMjExLXtcbi0tXG5mcy9iaW5mbXRfbWlzYy5jPTY0OT1zdGF0aWMgc3RydWN0IGJpbmZtdF9taXNjICppX2JpbmZtdF9taXNjKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4tLVxuZnMvYmluZm10X21pc2MuYy02NjYtKi9cbmZzL2JpbmZtdF9taXNjLmM6NjY3OnN0YXRpYyB2b2lkIGJtX2V2aWN0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG5mcy9iaW5mbXRfbWlzYy5jLTY2OC17XG4tLVxuZnMvYmluZm10X21pc2MuYz03MDg9Ym1fZW50cnlfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IG5ieXRlcywgbG9mZl90ICpwcG9zKVxuLS1cbmZzL2JpbmZtdF9taXNjLmMtNzI1LVxuZnMvYmluZm10X21pc2MuYzo3MjY6c3RhdGljIHNzaXplX3QgYm1fZW50cnlfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsXG5mcy9iaW5mbXRfbWlzYy5jLTcyNy1cdFx0XHRcdHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxuLS1cbmZzL2JpbmZtdF9taXNjLmM9NzcwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGJtX2VudHJ5X29wZXJhdGlvbnMgPSB7XG4tLVxuZnMvYmluZm10X21pc2MuYy03NzgtLyogYWRkIHRvIGZpbGVzeXN0ZW0gKi9cbmZzL2JpbmZtdF9taXNjLmM6Nzc5OnN0YXRpYyBpbnQgYWRkX2VudHJ5KE5vZGUgKmUsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy9iaW5mbXRfbWlzYy5jLTc4MC17XG4tLVxuZnMvYmluZm10X21pc2MuYz04NjA9Ym1fc3RhdHVzX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICpidWYsIHNpemVfdCBuYnl0ZXMsIGxvZmZfdCAqcHBvcylcbi0tXG5mcy9iaW5mbXRfbWlzYy5jLTg2OS1cbmZzL2JpbmZtdF9taXNjLmM6ODcwOnN0YXRpYyBzc2l6ZV90IGJtX3N0YXR1c193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlcixcbmZzL2JpbmZtdF9taXNjLmMtODcxLVx0XHRzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxMDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjIzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBGdW5jdGlvbiBTY29wZSBpbiB0aGUgS2VybmVsIE1vZHVsZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zOiBgbG9hZF9taXNjX2JpbmFyeWAsIGBibV9ldmljdF9pbm9kZWAsIGBibV9lbnRyeV93cml0ZWAsIGBhZGRfZW50cnlgLCBhbmQgYGJtX3N0YXR1c193cml0ZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZWlyIHNjb3BlIHdpdGhpbiB0aGlzIG1vZHVsZS4gVGhlIGZpcnN0IHRoaW5nIEkmIzM5O2xsIGRvIGlzIGNvbmZpcm0gd2hldGhlciB0aGVzZSBhcmUgc3RhdGljIG9yIG5vdC4gQSBxdWljayBjaGVjayByZXZlYWxzIHRoYXQgYGFkZF9lbnRyeWAgaXMgc3RhdGljLCBhcyBpcyBgYm1fZXZpY3RfaW5vZGVgLCBhbmQgYWxzbyBgYm1fZW50cnlfd3JpdGVgIGFuZCBhbHNvIGBibV9zdGF0dXNfd3JpdGVgLCBhbmQgYWxzbyBgbG9hZF9taXNjX2JpbmFyeWAuCgpXYWl0IGEgbWludXRlLCBgbG9hZF9taXNjX2JpbmFyeWAuLi4gSSByZW1lbWJlciBzZWVpbmcgdGhhdCBuYW1lIHNvbWV3aGVyZSBiZWZvcmUuIEl0JiMzOTtzIHVzZWQgaW4gdGhlIGBsaW51eF9iaW5mbXRgIHN0cnVjdC4gSSB0aGluayBpdCYjMzk7cyByZWdpc3RlcmVkIGluIHRoZSBrZXJuZWwgYXMgYSBiaW5hcnkgZm9ybWF0IGhhbmRsZXIuIEJldHRlciBkb3VibGUtY2hlY2sgYGZzL2JpbmZtdF9taXNjLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpbnRlZ3JhdGVzIHdpdGggdGhlIHdpZGVyIGtlcm5lbCBiaW5hcnkgaGFuZGxpbmcgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxMDozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdHJ1Y3QgbGludXhfYmluZm10JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYmluZm10X21pc2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9iaW5mbXRfbWlzYy5jPTEwMjI9c3RhdGljIGludCBibV9pbml0X2ZzX2NvbnRleHQoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuLS1cbmZzL2JpbmZtdF9taXNjLmMtMTAyNy1cbmZzL2JpbmZtdF9taXNjLmM6MTAyODpzdGF0aWMgc3RydWN0IGxpbnV4X2JpbmZtdCBtaXNjX2Zvcm1hdCA9IHtcbmZzL2JpbmZtdF9taXNjLmMtMTAyOS1cdC5tb2R1bGUgPSBUSElTX01PRFVMRSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxMDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NzU1CgkJCQkJCQlvdXRwdXQ6IDIwMAoJCQkJCQkJdGhvdWdodHM6IDQ3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYGJpbmZtdF9taXNjYCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHJpZ2h0IG9mZiB0aGUgYmF0LCBgbG9hZF9taXNjX2JpbmFyeWAgaXMgY2xlYXJseSB0aGUgYC5sb2FkX2JpbmFyeWAgY2FsbGJhY2suIE1ha2VzIHNlbnNlLiBgYm1fZW50cnlfd3JpdGVgIGFuZCBgYm1fc3RhdHVzX3dyaXRlYCBhcmUgdGhlIGAud3JpdGVgIGNhbGxiYWNrcyBmb3IgdGhlIGBiaW5mbXRfbWlzY2AgZmlsZXN5c3RlbSwgYW5kIGBibV9ldmljdF9pbm9kZWAgaXMgdGhlIGAuZXZpY3RfaW5vZGVgIGNhbGxiYWNrLiBUaGVzZSBhcmUgYWxsIGNyaXRpY2FsIGVudHJ5IHBvaW50cywgdGhlIGZ1bmN0aW9ucyB0aGF0IGludGVyYWN0IGRpcmVjdGx5IHdpdGggdGhlIGNvcmUgbG9naWMuCgpUaGVzZSBmb3VyLCBhbG9uZyB3aXRoIGBhZGRfZW50cnlgLCBgZ2V0X2JpbmZtdF9oYW5kbGVyYCwgYHNlYXJjaF9iaW5mbXRfaGFuZGxlcmAsIGFuZCBgcmVtb3ZlX2JpbmZtdF9oYW5kbGVyYCBhcmUgZGVmaW5pdGUgY2FuZGlkYXRlcyBmb3IgYEZvY3VzU3ltYm9sc2AuIEhvbGQgb24gdGhvdWdoLCBgZ2V0X2JpbmZtdF9oYW5kbGVyYCBhbmQgYHNlYXJjaF9iaW5mbXRfaGFuZGxlcmAgYWxzbyBsb29rIGxpa2UgdGhleSYjMzk7cmUgYmVpbmcgKm1vZGlmaWVkKiBpbiBhIHNpZ25pZmljYW50IHdheSwgcGFydGljdWxhcmx5IHdpdGggcmVzcGVjdCB0byB0aGF0IFJDVSBsb2dpYy4gWXVwLCB0aG9zZSBuZWVkIHRvIGJlIGluY2x1ZGVkLgoKQmVmb3JlIEkgbG9jayB0aGF0IGRvd24sIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIGltcGFjdGVkLiBUaGUgcGF0Y2ggdG91Y2hlcyBgZnMvYmluZm10X21pc2MuY2AsIGBpbmNsdWRlL2xpbnV4L2JpbmZtdHMuaGAsIGFuZCBga2VybmVsL3VzZXIuY2AsIHdoaWNoIG1ha2VzIGBDT05GSUdfQklORk1UX01JU0NgIHRoZSBvYnZpb3VzIHByaW1hcnkgb25lLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSByYXRpb25hbGUuIFRoaXMgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgdGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlcyBvZiBgYmluZm10X21pc2NgLiBJdCYjMzk7cyBtb3ZpbmcgZnJvbSBhIGRvdWJseS1saW5rZWQgbGlzdCBwcm90ZWN0ZWQgYnkgYSByZWFkLXdyaXRlIGxvY2sgdG8gYW4gUkNVLXByb3RlY3RlZCBoYXNoIGxpc3Qgd2l0aCBhIHNwaW5sb2NrLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwgY2hhbmdlKjsgaXQmIzM5O3MgYWx0ZXJpbmcgdGhlIHJlZ2lzdHJhdGlvbiwgdW5yZWdpc3RyYXRpb24sIGFuZCBleGVjdXRpb24gbG9naWMgb2YgYGJpbmZtdF9taXNjYC4gVGhhdCYjMzk7cyBhIGh1Z2UgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLiBXZSBuZWVkIHRvIGZ1enogdGhpcyBhZ2dyZXNzaXZlbHkgdG8gZW5zdXJlIHRoZSBuZXcgUkNVIGxvZ2ljIGFuZCBsb2NrbGVzcyB0cmF2ZXJzYWwgZG9uJiMzOTt0IGludHJvZHVjZSBhbnkgbmFzdHkgcmFjZSBjb25kaXRpb25zLCB1c2UtYWZ0ZXItZnJlZXMsIG9yIG90aGVyIG1lbW9yeSBzYWZldHkgaXNzdWVzLgoKU28sIGhlcmUmIzM5O3MgbXkgYEZvY3VzU3ltYm9sc2A6CgotICAgYGxvYWRfbWlzY19iaW5hcnlgCi0gICBgYm1fZW50cnlfd3JpdGVgCi0gICBgYm1fc3RhdHVzX3dyaXRlYAotICAgYGJtX2V2aWN0X2lub2RlYAotICAgYGFkZF9lbnRyeWAKLSAgIGBnZXRfYmluZm10X2hhbmRsZXJgCi0gICBgc2VhcmNoX2JpbmZtdF9oYW5kbGVyYAotICAgYHJlbW92ZV9iaW5mbXRfaGFuZGxlcmAKCkFuZCB0aGUgYEVuYWJsZUNvbmZpZ3NgOgoKLSAgIGBCSU5GTVRfTUlTQ2AKCkkmIzM5O20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAxMDozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QklORk1UX01JU0MmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsb2FkX21pc2NfYmluYXJ5JiMzNDssCiAgICAmIzM0O2JtX2VudHJ5X3dyaXRlJiMzNDssCiAgICAmIzM0O2JtX3N0YXR1c193cml0ZSYjMzQ7LAogICAgJiMzNDtibV9ldmljdF9pbm9kZSYjMzQ7LAogICAgJiMzNDthZGRfZW50cnkmIzM0OywKICAgICYjMzQ7Z2V0X2JpbmZtdF9oYW5kbGVyJiMzNDssCiAgICAmIzM0O3NlYXJjaF9iaW5mbXRfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtyZW1vdmVfYmluZm10X2hhbmRsZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIG9mIGBiaW5mbXRfbWlzY2AgZnJvbSBhIGRvdWJseS1saW5rZWQgbGlzdCB3aXRoIGEgcndsb2NrIHRvIGFuIFJDVS1wcm90ZWN0ZWQgaGFzaCBsaXN0IHdpdGggYSBzcGlubG9jay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgY29yZSBsb2dpYyBvZiBgYmluZm10X21pc2NgIHJlZ2lzdHJhdGlvbiwgdW5yZWdpc3RyYXRpb24sIGFuZCBiaW5hcnkgZXhlY3V0aW9uLiBJdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgbmV3IFJDVSBsb2dpYyBhbmQgbG9ja2xlc3MgdHJhdmVyc2FsIGRvIG5vdCBpbnRyb2R1Y2UgcmFjZSBjb25kaXRpb25zLCB1c2UtYWZ0ZXItZnJlZSwgb3Igb3RoZXIgbWVtb3J5IHNhZmV0eSBpc3N1ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JJTkZNVF9NSVNDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bG9hZF9taXNjX2JpbmFyeSYjMzQ7LAogICAgJiMzNDtibV9lbnRyeV93cml0ZSYjMzQ7LAogICAgJiMzNDtibV9zdGF0dXNfd3JpdGUmIzM0OywKICAgICYjMzQ7Ym1fZXZpY3RfaW5vZGUmIzM0OywKICAgICYjMzQ7YWRkX2VudHJ5JiMzNDssCiAgICAmIzM0O2dldF9iaW5mbXRfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtzZWFyY2hfYmluZm10X2hhbmRsZXImIzM0OywKICAgICYjMzQ7cmVtb3ZlX2JpbmZtdF9oYW5kbGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlcyBvZiBgYmluZm10X21pc2NgIGZyb20gYSBkb3VibHktbGlua2VkIGxpc3Qgd2l0aCBhIHJ3bG9jayB0byBhbiBSQ1UtcHJvdGVjdGVkIGhhc2ggbGlzdCB3aXRoIGEgc3BpbmxvY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGNvcmUgbG9naWMgb2YgYGJpbmZtdF9taXNjYCByZWdpc3RyYXRpb24sIHVucmVnaXN0cmF0aW9uLCBhbmQgYmluYXJ5IGV4ZWN1dGlvbi4gSXQgaXMgd29ydGggZnV6emluZyB0byBlbnN1cmUgdGhlIG5ldyBSQ1UgbG9naWMgYW5kIGxvY2tsZXNzIHRyYXZlcnNhbCBkbyBub3QgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucywgdXNlLWFmdGVyLWZyZWUsIG9yIG90aGVyIG1lbW9yeSBzYWZldHkgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDlUMTA6MzI6MjcuMTg0MTA0MjE0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYxMDAwOTc4ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQklORk1UX01JU0NcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJsb2FkX21pc2NfYmluYXJ5XCIsXG4gICAgXCJibV9lbnRyeV93cml0ZVwiLFxuICAgIFwiYm1fc3RhdHVzX3dyaXRlXCIsXG4gICAgXCJibV9ldmljdF9pbm9kZVwiLFxuICAgIFwiYWRkX2VudHJ5XCIsXG4gICAgXCJnZXRfYmluZm10X2hhbmRsZXJcIixcbiAgICBcInNlYXJjaF9iaW5mbXRfaGFuZGxlclwiLFxuICAgIFwicmVtb3ZlX2JpbmZtdF9oYW5kbGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIG9mIGBiaW5mbXRfbWlzY2AgZnJvbSBhIGRvdWJseS1saW5rZWQgbGlzdCB3aXRoIGEgcndsb2NrIHRvIGFuIFJDVS1wcm90ZWN0ZWQgaGFzaCBsaXN0IHdpdGggYSBzcGlubG9jay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgY29yZSBsb2dpYyBvZiBgYmluZm10X21pc2NgIHJlZ2lzdHJhdGlvbiwgdW5yZWdpc3RyYXRpb24sIGFuZCBiaW5hcnkgZXhlY3V0aW9uLiBJdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgbmV3IFJDVSBsb2dpYyBhbmQgbG9ja2xlc3MgdHJhdmVyc2FsIGRvIG5vdCBpbnRyb2R1Y2UgcmFjZSBjb25kaXRpb25zLCB1c2UtYWZ0ZXItZnJlZSwgb3Igb3RoZXIgbWVtb3J5IHNhZmV0eSBpc3N1ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDEwOjMyOjI3LjE4NDEwODk2NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI4MjU1NzU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTI5MTc1Nzg3Mzc3YTc4M2JmMjllZWNmZTQyZjQzYTUzZGM3N2FmZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCA5IDEwOjMyOjI1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9taXNjLmMgYi9mcy9iaW5mbXRfbWlzYy5jXFxuaW5kZXggODQzNDlmY2I5M2YxM2EuLjBmMDQ3MDlhMGEzOWY1IDEwMDY0NFxcbi0tLSBhL2ZzL2JpbmZtdF9taXNjLmNcXG4rKysgYi9mcy9iaW5mbXRfbWlzYy5jXFxuQEAgLTI0LDYgKzI0LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BhZ2VtYXAuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25hbWVpLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb3VudC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcmN1bGlzdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZnNfY29udGV4dC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc3lzY2FsbHMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2ZzLmhcXHUwMDNlXFxuQEAgLTQ4LDcgKzQ5LDcgQEAgZW51bSB7RW5hYmxlZCwgTWFnaWN9O1xcbiAjZGVmaW5lIE1JU0NfRk1UX09QRU5fRklMRSAoMVVMIFxcdTAwM2NcXHUwMDNjIDI4KVxcbiBcXG4gdHlwZWRlZiBzdHJ1Y3Qge1xcbi1cXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XFxuK1xcdHN0cnVjdCBobGlzdF9ub2RlIG5vZGU7XFxuIFxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFx0XFx0LyogdHlwZSwgc3RhdHVzLCBldGMuICovXFxuIFxcdGludCBvZmZzZXQ7XFx0XFx0XFx0Lyogb2Zmc2V0IG9mIG1hZ2ljICovXFxuIFxcdGludCBzaXplO1xcdFxcdFxcdC8qIHNpemUgb2YgbWFnaWMvbWFzayAqL1xcbkBAIC01OSw2ICs2MCw3IEBAIHR5cGVkZWYgc3RydWN0IHtcXG4gXFx0c3RydWN0IGRlbnRyeSAqZGVudHJ5O1xcbiBcXHRzdHJ1Y3QgZmlsZSAqaW50ZXJwX2ZpbGU7XFxuIFxcdHJlZmNvdW50X3QgdXNlcnM7XFx0XFx0Lyogc3luYyByZW1vdmFsIHdpdGggbG9hZF9taXNjX2JpbmFyeSgpICovXFxuK1xcdHN0cnVjdCByY3VfaGVhZCByY3U7XFxuIH0gTm9kZTtcXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBibV9mc190eXBlO1xcbkBAIC04Niw2ICs4OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBibV9mc190eXBlO1xcbiAgKiBTZWFyY2ggZm9yIGEgYmluYXJ5IHR5cGUgaGFuZGxlciBmb3IgQGJwcm0gaW4gdGhlIGxpc3Qgb2YgcmVnaXN0ZXJlZCBiaW5hcnlcXG4gICogdHlwZSBoYW5kbGVycy5cXG4gICpcXG4rICogVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIFJDVSByZWFkIGxvY2suXFxuKyAqXFxuICAqIFJldHVybjogYmluYXJ5IHR5cGUgbGlzdCBlbnRyeSBvbiBzdWNjZXNzLCBOVUxMIG9uIGZhaWx1cmVcXG4gICovXFxuIHN0YXRpYyBOb2RlICpzZWFyY2hfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLFxcbkBAIC05NSw3ICs5OSw3IEBAIHN0YXRpYyBOb2RlICpzZWFyY2hfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLFxcbiBcXHROb2RlICplO1xcbiBcXG4gXFx0LyogV2FsayBhbGwgdGhlIHJlZ2lzdGVyZWQgaGFuZGxlcnMuICovXFxuLVxcdGxpc3RfZm9yX2VhY2hfZW50cnkoZSwgXFx1MDAyNm1pc2MtXFx1MDAzZWVudHJpZXMsIGxpc3QpIHtcXG4rXFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGUsIFxcdTAwMjZtaXNjLVxcdTAwM2VlbnRyaWVzLCBub2RlKSB7XFxuIFxcdFxcdGNoYXIgKnM7XFxuIFxcdFxcdGludCBqO1xcbiBcXG5AQCAtMTM0LDcgKzEzOCwxMCBAQCBzdGF0aWMgTm9kZSAqc2VhcmNoX2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYyxcXG4gICogQGJwcm06IGJpbmFyeSBmb3Igd2hpY2ggd2UgYXJlIGxvb2tpbmcgZm9yIGEgaGFuZGxlclxcbiAgKlxcbiAgKiBUcnkgdG8gZmluZCBhIGJpbmZtdCBoYW5kbGVyIGZvciB0aGUgYmluYXJ5IHR5cGUuIElmIG9uZSBpcyBmb3VuZCB0YWtlIGFcXG4tICogcmVmZXJlbmNlIHRvIHByb3RlY3QgYWdhaW5zdCByZW1vdmFsIHZpYSBibV97ZW50cnksc3RhdHVzfV93cml0ZSgpLlxcbisgKiByZWZlcmVuY2UgdG8gcHJvdGVjdCBhZ2FpbnN0IHJlbW92YWwgdmlhIGJtX3tlbnRyeSxzdGF0dXN9X3dyaXRlKCkuIFRoZVxcbisgKiByZWZjb3VudCBvZiBhbiBlbnRyeSBjYW4gb25seSBkcm9wIHRvIHplcm8gb25jZSBpdCBoYXMgYmVlbiB1bmxpbmtlZCBhbmRcXG4rICogYSByZXN0YXJ0ZWQgc2VhcmNoIGNhbm5vdCBmaW5kIGFuIHVubGlua2VkIGVudHJ5IGFnYWluIHNvIHRoZSByZXRyeSBsb29wXFxuKyAqIGlzIGJvdW5kZWQuXFxuICAqXFxuICAqIFJldHVybjogYmluYXJ5IHR5cGUgbGlzdCBlbnRyeSBvbiBzdWNjZXNzLCBOVUxMIG9uIGZhaWx1cmVcXG4gICovXFxuQEAgLTE0MywxMSArMTUwLDEwIEBAIHN0YXRpYyBOb2RlICpnZXRfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLFxcbiB7XFxuIFxcdE5vZGUgKmU7XFxuIFxcbi1cXHRyZWFkX2xvY2soXFx1MDAyNm1pc2MtXFx1MDAzZWVudHJpZXNfbG9jayk7XFxuLVxcdGUgPSBzZWFyY2hfYmluZm10X2hhbmRsZXIobWlzYywgYnBybSk7XFxuLVxcdGlmIChlKVxcbi1cXHRcXHRyZWZjb3VudF9pbmMoXFx1MDAyNmUtXFx1MDAzZXVzZXJzKTtcXG4tXFx0cmVhZF91bmxvY2soXFx1MDAyNm1pc2MtXFx1MDAzZWVudHJpZXNfbG9jayk7XFxuK1xcdGd1YXJkKHJjdSkoKTtcXG4rXFx0ZG8ge1xcbitcXHRcXHRlID0gc2VhcmNoX2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0pO1xcbitcXHR9IHdoaWxlIChlIFxcdTAwMjZcXHUwMDI2ICFyZWZjb3VudF9pbmNfbm90X3plcm8oXFx1MDAyNmUtXFx1MDAzZXVzZXJzKSk7XFxuIFxcdHJldHVybiBlO1xcbiB9XFxuIFxcbkBAIC0xNjQsNyArMTcwLDggQEAgc3RhdGljIHZvaWQgcHV0X2JpbmZtdF9oYW5kbGVyKE5vZGUgKmUpXFxuIFxcdGlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoXFx1MDAyNmUtXFx1MDAzZXVzZXJzKSkge1xcbiBcXHRcXHRpZiAoZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBNSVNDX0ZNVF9PUEVOX0ZJTEUpXFxuIFxcdFxcdFxcdGZpbHBfY2xvc2UoZS1cXHUwMDNlaW50ZXJwX2ZpbGUsIE5VTEwpO1xcbi1cXHRcXHRrZnJlZShlKTtcXG4rXFx0XFx0LyogTG9ja2xlc3Mgd2Fsa2VycyBtYXkgc3RpbGwgZGVyZWZlcmVuY2UgdGhpcyBlbnRyeS4gKi9cXG4rXFx0XFx0a2ZyZWVfcmN1KGUsIHJjdSk7XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtMjA4LDcgKzIxNSw3IEBAIHN0YXRpYyBpbnQgbG9hZF9taXNjX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbiBcXHRzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2M7XFxuIFxcbiBcXHRtaXNjID0gbG9hZF9iaW5mbXRfbWlzYygpO1xcbi1cXHRpZiAoIW1pc2MtXFx1MDAzZWVuYWJsZWQpXFxuK1xcdGlmICghUkVBRF9PTkNFKG1pc2MtXFx1MDAzZWVuYWJsZWQpKVxcbiBcXHRcXHRyZXR1cm4gcmV0dmFsO1xcbiBcXG4gXFx0Zm10ID0gZ2V0X2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0pO1xcbkBAIC02NTQsOCArNjYxLDggQEAgc3RhdGljIHN0cnVjdCBiaW5mbXRfbWlzYyAqaV9iaW5mbXRfbWlzYyhzdHJ1Y3QgaW5vZGUgKmlub2RlKVxcbiAgKlxcbiAgKiBJZiB0aGUgLVxcdTAwM2VldmljdCBjYWxsIHdhcyBub3QgY2F1c2VkIGJ5IGEgc3VwZXIgYmxvY2sgc2h1dGRvd24gYnV0IGJ5IGEgd3JpdGVcXG4gICogdG8gcmVtb3ZlIHRoZSBlbnRyeSBvciBhbGwgZW50cmllcyB2aWEgYm1fe2VudHJ5LHN0YXR1c31fd3JpdGUoKSB0aGUgZW50cnlcXG4tICogd2lsbCBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVkIGZyb20gdGhlIGxpc3QuIFdlIGtlZXAgdGhlIGxpc3RfZW1wdHkoKSBjaGVja1xcbi0gKiB0byBtYWtlIHRoYXQgZXhwbGljaXQuXFxuKyAqIHdpbGwgaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBsaXN0LiBXZSBrZWVwIHRoZSBobGlzdF91bmhhc2hlZCgpXFxuKyAqIGNoZWNrIHRvIG1ha2UgdGhhdCBleHBsaWNpdC5cXG4gKi9cXG4gc3RhdGljIHZvaWQgYm1fZXZpY3RfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSlcXG4ge1xcbkBAIC02NjcsMTAgKzY3NCwxMCBAQCBzdGF0aWMgdm9pZCBibV9ldmljdF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKVxcbiBcXHRcXHRzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2M7XFxuIFxcbiBcXHRcXHRtaXNjID0gaV9iaW5mbXRfbWlzYyhpbm9kZSk7XFxuLVxcdFxcdHdyaXRlX2xvY2soXFx1MDAyNm1pc2MtXFx1MDAzZWVudHJpZXNfbG9jayk7XFxuLVxcdFxcdGlmICghbGlzdF9lbXB0eShcXHUwMDI2ZS1cXHUwMDNlbGlzdCkpXFxuLVxcdFxcdFxcdGxpc3RfZGVsX2luaXQoXFx1MDAyNmUtXFx1MDAzZWxpc3QpO1xcbi1cXHRcXHR3cml0ZV91bmxvY2soXFx1MDAyNm1pc2MtXFx1MDAzZWVudHJpZXNfbG9jayk7XFxuK1xcdFxcdHNwaW5fbG9jayhcXHUwMDI2bWlzYy1cXHUwMDNlZW50cmllc19sb2NrKTtcXG4rXFx0XFx0aWYgKCFobGlzdF91bmhhc2hlZChcXHUwMDI2ZS1cXHUwMDNlbm9kZSkpXFxuK1xcdFxcdFxcdGhsaXN0X2RlbF9pbml0X3JjdShcXHUwMDI2ZS1cXHUwMDNlbm9kZSk7XFxuK1xcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZtaXNjLVxcdTAwM2VlbnRyaWVzX2xvY2spO1xcbiBcXHRcXHRwdXRfYmluZm10X2hhbmRsZXIoZSk7XFxuIFxcdH1cXG4gfVxcbkBAIC02ODksOSArNjk2LDkgQEAgc3RhdGljIHZvaWQgYm1fZXZpY3RfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSlcXG4gICovXFxuIHN0YXRpYyB2b2lkIHJlbW92ZV9iaW5mbXRfaGFuZGxlcihzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2MsIE5vZGUgKmUpXFxuIHtcXG4tXFx0d3JpdGVfbG9jayhcXHUwMDI2bWlzYy1cXHUwMDNlZW50cmllc19sb2NrKTtcXG4tXFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2ZS1cXHUwMDNlbGlzdCk7XFxuLVxcdHdyaXRlX3VubG9jayhcXHUwMDI2bWlzYy1cXHUwMDNlZW50cmllc19sb2NrKTtcXG4rXFx0c3Bpbl9sb2NrKFxcdTAwMjZtaXNjLVxcdTAwM2VlbnRyaWVzX2xvY2spO1xcbitcXHRobGlzdF9kZWxfaW5pdF9yY3UoXFx1MDAyNmUtXFx1MDAzZW5vZGUpO1xcbitcXHRzcGluX3VubG9jayhcXHUwMDI2bWlzYy1cXHUwMDNlZW50cmllc19sb2NrKTtcXG4gXFx0bG9ja2VkX3JlY3Vyc2l2ZV9yZW1vdmFsKGUtXFx1MDAzZWRlbnRyeSwgTlVMTCk7XFxuIH1cXG4gXFxuQEAgLTc0MiwxMSArNzQ5LDEzIEBAIHN0YXRpYyBzc2l6ZV90IGJtX2VudHJ5X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLFxcbiBcXHRcXHQgKiB2aWEgYm1fe2VudHJ5LHJlZ2lzdGVyLHN0YXR1c31fd3JpdGUoKSBpbm9kZV9sb2NrKCkgb24gdGhlXFxuIFxcdFxcdCAqIHJvb3QgaW5vZGUgbXVzdCBiZSBoZWxkLlxcbiBcXHRcXHQgKiBUaGUgbG9jayBpcyBleGNsdXNpdmUgZW5zdXJpbmcgdGhhdCB0aGUgbGlzdCBjYW4ndCBiZVxcbi1cXHRcXHQgKiBtb2RpZmllZC4gT25seSBsb2FkX21pc2NfYmluYXJ5KCkgY2FuIGFjY2VzcyBidXQgZG9lcyBzb1xcbi1cXHRcXHQgKiByZWFkLW9ubHkuIFNvIHdlIG9ubHkgbmVlZCB0byB0YWtlIHRoZSB3cml0ZSBsb2NrIHdoZW4gd2VcXG4tXFx0XFx0ICogYWN0dWFsbHkgcmVtb3ZlIHRoZSBlbnRyeSBmcm9tIHRoZSBsaXN0LlxcbitcXHRcXHQgKiBtb2RpZmllZC4gT25seSBsb2FkX21pc2NfYmluYXJ5KCkgY2FuIGFjY2VzcyB0aGUgbGlzdFxcbitcXHRcXHQgKiBjb25jdXJyZW50bHkgYW5kIGl0IGRvZXMgc28gdW5kZXIgUkNVLiBTbyBlbnRyaWVzX2xvY2sgb25seVxcbitcXHRcXHQgKiBuZWVkcyB0byBiZSBoZWxkIHdoZW4gYW4gZW50cnkgaXMgYWN0dWFsbHkgdW5saW5rZWQgdG9cXG4rXFx0XFx0ICogc2VyaWFsaXplIGFnYWluc3QgYm1fZXZpY3RfaW5vZGUoKSBkdXJpbmcgdW1vdW50IHdoaWNoXFxuK1xcdFxcdCAqIHVubGlua3Mgd2l0aG91dCBob2xkaW5nIGlub2RlX2xvY2suXFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRpZiAoIWxpc3RfZW1wdHkoXFx1MDAyNmUtXFx1MDAzZWxpc3QpKVxcbitcXHRcXHRpZiAoIWhsaXN0X3VuaGFzaGVkKFxcdTAwMjZlLVxcdTAwM2Vub2RlKSlcXG4gXFx0XFx0XFx0cmVtb3ZlX2JpbmZtdF9oYW5kbGVyKGlfYmluZm10X21pc2MoaW5vZGUpLCBlKTtcXG4gXFxuIFxcdFxcdGlub2RlX3VubG9jayhpbm9kZSk7XFxuQEAgLTc4OSw5ICs3OTgsOSBAQCBzdGF0aWMgaW50IGFkZF9lbnRyeShOb2RlICplLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbiBcXG4gXFx0ZF9tYWtlX3BlcnNpc3RlbnQoZGVudHJ5LCBpbm9kZSk7XFxuIFxcdG1pc2MgPSBpX2JpbmZtdF9taXNjKGlub2RlKTtcXG4tXFx0d3JpdGVfbG9jayhcXHUwMDI2bWlzYy1cXHUwMDNlZW50cmllc19sb2NrKTtcXG4tXFx0bGlzdF9hZGQoXFx1MDAyNmUtXFx1MDAzZWxpc3QsIFxcdTAwMjZtaXNjLVxcdTAwM2VlbnRyaWVzKTtcXG4tXFx0d3JpdGVfdW5sb2NrKFxcdTAwMjZtaXNjLVxcdTAwM2VlbnRyaWVzX2xvY2spO1xcbitcXHRzcGluX2xvY2soXFx1MDAyNm1pc2MtXFx1MDAzZWVudHJpZXNfbG9jayk7XFxuK1xcdGhsaXN0X2FkZF9oZWFkX3JjdShcXHUwMDI2ZS1cXHUwMDNlbm9kZSwgXFx1MDAyNm1pc2MtXFx1MDAzZWVudHJpZXMpO1xcbitcXHRzcGluX3VubG9jayhcXHUwMDI2bWlzYy1cXHUwMDNlZW50cmllc19sb2NrKTtcXG4gXFx0c2ltcGxlX2RvbmVfY3JlYXRpbmcoZGVudHJ5KTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5AQCAtODU0LDcgKzg2Myw3IEBAIGJtX3N0YXR1c19yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbmJ5dGVzLCBsb2ZmX3QgKnBwb3MpXFxuIFxcdGNoYXIgKnM7XFxuIFxcbiBcXHRtaXNjID0gaV9iaW5mbXRfbWlzYyhmaWxlX2lub2RlKGZpbGUpKTtcXG4tXFx0cyA9IG1pc2MtXFx1MDAzZWVuYWJsZWQgPyBcXFwiZW5hYmxlZFxcXFxuXFxcIiA6IFxcXCJkaXNhYmxlZFxcXFxuXFxcIjtcXG4rXFx0cyA9IFJFQURfT05DRShtaXNjLVxcdTAwM2VlbmFibGVkKSA/IFxcXCJlbmFibGVkXFxcXG5cXFwiIDogXFxcImRpc2FibGVkXFxcXG5cXFwiO1xcbiBcXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIoYnVmLCBuYnl0ZXMsIHBwb3MsIHMsIHN0cmxlbihzKSk7XFxuIH1cXG4gXFxuQEAgLTg2MywxOCArODcyLDE5IEBAIHN0YXRpYyBzc2l6ZV90IGJtX3N0YXR1c193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlcixcXG4ge1xcbiBcXHRzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2M7XFxuIFxcdGludCByZXMgPSBwYXJzZV9jb21tYW5kKGJ1ZmZlciwgY291bnQpO1xcbi1cXHROb2RlICplLCAqbmV4dDtcXG4rXFx0c3RydWN0IGhsaXN0X25vZGUgKm5leHQ7XFxuIFxcdHN0cnVjdCBpbm9kZSAqaW5vZGU7XFxuK1xcdE5vZGUgKmU7XFxuIFxcbiBcXHRtaXNjID0gaV9iaW5mbXRfbWlzYyhmaWxlX2lub2RlKGZpbGUpKTtcXG4gXFx0c3dpdGNoIChyZXMpIHtcXG4gXFx0Y2FzZSAxOlxcbiBcXHRcXHQvKiBEaXNhYmxlIGFsbCBoYW5kbGVycy4gKi9cXG4tXFx0XFx0bWlzYy1cXHUwMDNlZW5hYmxlZCA9IGZhbHNlO1xcbitcXHRcXHRXUklURV9PTkNFKG1pc2MtXFx1MDAzZWVuYWJsZWQsIGZhbHNlKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgMjpcXG4gXFx0XFx0LyogRW5hYmxlIGFsbCBoYW5kbGVycy4gKi9cXG4tXFx0XFx0bWlzYy1cXHUwMDNlZW5hYmxlZCA9IHRydWU7XFxuK1xcdFxcdFdSSVRFX09OQ0UobWlzYy1cXHUwMDNlZW5hYmxlZCwgdHJ1ZSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIDM6XFxuIFxcdFxcdC8qIERlbGV0ZSBhbGwgaGFuZGxlcnMuICovXFxuQEAgLTg4NiwxMSArODk2LDEzIEBAIHN0YXRpYyBzc2l6ZV90IGJtX3N0YXR1c193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlcixcXG4gXFx0XFx0ICogdmlhIGJtX3tlbnRyeSxyZWdpc3RlcixzdGF0dXN9X3dyaXRlKCkgaW5vZGVfbG9jaygpIG9uIHRoZVxcbiBcXHRcXHQgKiByb290IGlub2RlIG11c3QgYmUgaGVsZC5cXG4gXFx0XFx0ICogVGhlIGxvY2sgaXMgZXhjbHVzaXZlIGVuc3VyaW5nIHRoYXQgdGhlIGxpc3QgY2FuJ3QgYmVcXG4tXFx0XFx0ICogbW9kaWZpZWQuIE9ubHkgbG9hZF9taXNjX2JpbmFyeSgpIGNhbiBhY2Nlc3MgYnV0IGRvZXMgc29cXG4tXFx0XFx0ICogcmVhZC1vbmx5LiBTbyB3ZSBvbmx5IG5lZWQgdG8gdGFrZSB0aGUgd3JpdGUgbG9jayB3aGVuIHdlXFxuLVxcdFxcdCAqIGFjdHVhbGx5IHJlbW92ZSB0aGUgZW50cnkgZnJvbSB0aGUgbGlzdC5cXG4rXFx0XFx0ICogbW9kaWZpZWQuIE9ubHkgbG9hZF9taXNjX2JpbmFyeSgpIGNhbiBhY2Nlc3MgdGhlIGxpc3RcXG4rXFx0XFx0ICogY29uY3VycmVudGx5IGFuZCBpdCBkb2VzIHNvIHVuZGVyIFJDVS4gU28gZW50cmllc19sb2NrIG9ubHlcXG4rXFx0XFx0ICogbmVlZHMgdG8gYmUgaGVsZCB3aGVuIGFuIGVudHJ5IGlzIGFjdHVhbGx5IHVubGlua2VkIHRvXFxuK1xcdFxcdCAqIHNlcmlhbGl6ZSBhZ2FpbnN0IGJtX2V2aWN0X2lub2RlKCkgZHVyaW5nIHVtb3VudCB3aGljaFxcbitcXHRcXHQgKiB1bmxpbmtzIHdpdGhvdXQgaG9sZGluZyBpbm9kZV9sb2NrLlxcbiBcXHRcXHQgKi9cXG4tXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGUsIG5leHQsIFxcdTAwMjZtaXNjLVxcdTAwM2VlbnRyaWVzLCBsaXN0KVxcbitcXHRcXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGUsIG5leHQsIFxcdTAwMjZtaXNjLVxcdTAwM2VlbnRyaWVzLCBub2RlKVxcbiBcXHRcXHRcXHRyZW1vdmVfYmluZm10X2hhbmRsZXIobWlzYywgZSk7XFxuIFxcbiBcXHRcXHRpbm9kZV91bmxvY2soaW5vZGUpO1xcbkBAIC05NjUsOCArOTc3LDggQEAgc3RhdGljIGludCBibV9maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG4gXFx0XFx0aWYgKCFtaXNjKVxcbiBcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuLVxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZtaXNjLVxcdTAwM2VlbnRyaWVzKTtcXG4tXFx0XFx0cndsb2NrX2luaXQoXFx1MDAyNm1pc2MtXFx1MDAzZWVudHJpZXNfbG9jayk7XFxuK1xcdFxcdElOSVRfSExJU1RfSEVBRChcXHUwMDI2bWlzYy1cXHUwMDNlZW50cmllcyk7XFxuK1xcdFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZtaXNjLVxcdTAwM2VlbnRyaWVzX2xvY2spO1xcbiBcXG4gXFx0XFx0LyogUGFpcnMgd2l0aCBzbXBfbG9hZF9hY3F1aXJlKCkgaW4gbG9hZF9iaW5mbXRfbWlzYygpLiAqL1xcbiBcXHRcXHRzbXBfc3RvcmVfcmVsZWFzZShcXHUwMDI2dXNlcl9ucy1cXHUwMDNlYmluZm10X21pc2MsIG1pc2MpO1xcbkBAIC05ODMsNyArOTk1LDcgQEAgc3RhdGljIGludCBibV9maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG4gXFx0ICogc29tZW9uZSBtb3VudHMgYmluZm10X21pc2MgZm9yIHRoZSBmaXJzdCB0aW1lIG9yIGFnYWluIHdlIHNpbXBseVxcbiBcXHQgKiByZXNldCAtXFx1MDAzZWVuYWJsZWQgdG8gdHJ1ZS5cXG4gXFx0ICovXFxuLVxcdG1pc2MtXFx1MDAzZWVuYWJsZWQgPSB0cnVlO1xcbitcXHRXUklURV9PTkNFKG1pc2MtXFx1MDAzZWVuYWJsZWQsIHRydWUpO1xcbiBcXG4gXFx0ZXJyID0gc2ltcGxlX2ZpbGxfc3VwZXIoc2IsIEJJTkZNVEZTX01BR0lDLCBibV9maWxlcyk7XFxuIFxcdGlmICghZXJyKVxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCBiL2luY2x1ZGUvbGludXgvYmluZm10cy5oXFxuaW5kZXggMmM3N2UzODNlNzM3NTcuLjdlNzMzM2I3YmIwZjExIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvYmluZm10cy5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9iaW5mbXRzLmhcXG5AQCAtMTAxLDggKzEwMSw4IEBAIHN0cnVjdCBsaW51eF9iaW5mbXQge1xcbiBcXG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX0JJTkZNVF9NSVNDKVxcbiBzdHJ1Y3QgYmluZm10X21pc2Mge1xcbi1cXHRzdHJ1Y3QgbGlzdF9oZWFkIGVudHJpZXM7XFxuLVxcdHJ3bG9ja190IGVudHJpZXNfbG9jaztcXG4rXFx0c3RydWN0IGhsaXN0X2hlYWQgZW50cmllcztcXG4rXFx0c3BpbmxvY2tfdCBlbnRyaWVzX2xvY2s7XFxuIFxcdGJvb2wgZW5hYmxlZDtcXG4gfSBfX3JhbmRvbWl6ZV9sYXlvdXQ7XFxuIFxcbmRpZmYgLS1naXQgYS9rZXJuZWwvdXNlci5jIGIva2VybmVsL3VzZXIuY1xcbmluZGV4IDdhZWY0ZTY3OWE2YTBjLi4yMWJhZmRjMTEzNzk1NiAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvdXNlci5jXFxuKysrIGIva2VybmVsL3VzZXIuY1xcbkBAIC0yMyw5ICsyMyw5IEBAXFxuIFxcbiAjaWYgSVNfRU5BQkxFRChDT05GSUdfQklORk1UX01JU0MpXFxuIHN0cnVjdCBiaW5mbXRfbWlzYyBpbml0X2JpbmZtdF9taXNjID0ge1xcbi1cXHQuZW50cmllcyA9IExJU1RfSEVBRF9JTklUKGluaXRfYmluZm10X21pc2MuZW50cmllcyksXFxuK1xcdC5lbnRyaWVzID0gSExJU1RfSEVBRF9JTklULFxcbiBcXHQuZW5hYmxlZCA9IHRydWUsXFxuLVxcdC5lbnRyaWVzX2xvY2sgPSBfX1JXX0xPQ0tfVU5MT0NLRUQoaW5pdF9iaW5mbXRfbWlzYy5lbnRyaWVzX2xvY2spLFxcbitcXHQuZW50cmllc19sb2NrID0gX19TUElOX0xPQ0tfVU5MT0NLRUQoaW5pdF9iaW5mbXRfbWlzYy5lbnRyaWVzX2xvY2spLFxcbiB9O1xcbiBFWFBPUlRfU1lNQk9MX0dQTChpbml0X2JpbmZtdF9taXNjKTtcXG4gI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDEwOjMyOjI3LjcxMzExMjI5MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjU1NzEwODA2NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQklORk1UX01JU0NcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJsb2FkX21pc2NfYmluYXJ5XCIsXG4gICAgXCJibV9lbnRyeV93cml0ZVwiLFxuICAgIFwiYm1fc3RhdHVzX3dyaXRlXCIsXG4gICAgXCJibV9ldmljdF9pbm9kZVwiLFxuICAgIFwiYWRkX2VudHJ5XCIsXG4gICAgXCJnZXRfYmluZm10X2hhbmRsZXJcIixcbiAgICBcInNlYXJjaF9iaW5mbXRfaGFuZGxlclwiLFxuICAgIFwicmVtb3ZlX2JpbmZtdF9oYW5kbGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIG9mIGBiaW5mbXRfbWlzY2AgZnJvbSBhIGRvdWJseS1saW5rZWQgbGlzdCB3aXRoIGEgcndsb2NrIHRvIGFuIFJDVS1wcm90ZWN0ZWQgaGFzaCBsaXN0IHdpdGggYSBzcGlubG9jay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgY29yZSBsb2dpYyBvZiBgYmluZm10X21pc2NgIHJlZ2lzdHJhdGlvbiwgdW5yZWdpc3RyYXRpb24sIGFuZCBiaW5hcnkgZXhlY3V0aW9uLiBJdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgbmV3IFJDVSBsb2dpYyBhbmQgbG9ja2xlc3MgdHJhdmVyc2FsIGRvIG5vdCBpbnRyb2R1Y2UgcmFjZSBjb25kaXRpb25zLCB1c2UtYWZ0ZXItZnJlZSwgb3Igb3RoZXIgbWVtb3J5IHNhZmV0eSBpc3N1ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTI5MTc1Nzg3Mzc3YTc4M2JmMjllZWNmZTQyZjQzYTUzZGM3N2FmZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDkgMTA6MzI6MjUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9iaW5mbXRfbWlzYy5jIGIvZnMvYmluZm10X21pc2MuY1xuaW5kZXggODQzNDlmY2I5M2YxM2EuLjBmMDQ3MDlhMGEzOWY1IDEwMDY0NFxuLS0tIGEvZnMvYmluZm10X21pc2MuY1xuKysrIGIvZnMvYmluZm10X21pc2MuY1xuQEAgLTI0LDYgKzI0LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wYWdlbWFwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uYW1laS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW91bnQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JjdWxpc3QuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZzX2NvbnRleHQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3N5c2NhbGxzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXG5AQCAtNDgsNyArNDksNyBAQCBlbnVtIHtFbmFibGVkLCBNYWdpY307XG4gI2RlZmluZSBNSVNDX0ZNVF9PUEVOX0ZJTEUgKDFVTCBcdTAwM2NcdTAwM2MgMjgpXG4gXG4gdHlwZWRlZiBzdHJ1Y3Qge1xuLVx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuK1x0c3RydWN0IGhsaXN0X25vZGUgbm9kZTtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XHRcdC8qIHR5cGUsIHN0YXR1cywgZXRjLiAqL1xuIFx0aW50IG9mZnNldDtcdFx0XHQvKiBvZmZzZXQgb2YgbWFnaWMgKi9cbiBcdGludCBzaXplO1x0XHRcdC8qIHNpemUgb2YgbWFnaWMvbWFzayAqL1xuQEAgLTU5LDYgKzYwLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qge1xuIFx0c3RydWN0IGRlbnRyeSAqZGVudHJ5O1xuIFx0c3RydWN0IGZpbGUgKmludGVycF9maWxlO1xuIFx0cmVmY291bnRfdCB1c2VycztcdFx0Lyogc3luYyByZW1vdmFsIHdpdGggbG9hZF9taXNjX2JpbmFyeSgpICovXG4rXHRzdHJ1Y3QgcmN1X2hlYWQgcmN1O1xuIH0gTm9kZTtcbiBcbiBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgYm1fZnNfdHlwZTtcbkBAIC04Niw2ICs4OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBibV9mc190eXBlO1xuICAqIFNlYXJjaCBmb3IgYSBiaW5hcnkgdHlwZSBoYW5kbGVyIGZvciBAYnBybSBpbiB0aGUgbGlzdCBvZiByZWdpc3RlcmVkIGJpbmFyeVxuICAqIHR5cGUgaGFuZGxlcnMuXG4gICpcbisgKiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgUkNVIHJlYWQgbG9jay5cbisgKlxuICAqIFJldHVybjogYmluYXJ5IHR5cGUgbGlzdCBlbnRyeSBvbiBzdWNjZXNzLCBOVUxMIG9uIGZhaWx1cmVcbiAgKi9cbiBzdGF0aWMgTm9kZSAqc2VhcmNoX2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYyxcbkBAIC05NSw3ICs5OSw3IEBAIHN0YXRpYyBOb2RlICpzZWFyY2hfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLFxuIFx0Tm9kZSAqZTtcbiBcbiBcdC8qIFdhbGsgYWxsIHRoZSByZWdpc3RlcmVkIGhhbmRsZXJzLiAqL1xuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeShlLCBcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXMsIGxpc3QpIHtcbitcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShlLCBcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXMsIG5vZGUpIHtcbiBcdFx0Y2hhciAqcztcbiBcdFx0aW50IGo7XG4gXG5AQCAtMTM0LDcgKzEzOCwxMCBAQCBzdGF0aWMgTm9kZSAqc2VhcmNoX2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYyxcbiAgKiBAYnBybTogYmluYXJ5IGZvciB3aGljaCB3ZSBhcmUgbG9va2luZyBmb3IgYSBoYW5kbGVyXG4gICpcbiAgKiBUcnkgdG8gZmluZCBhIGJpbmZtdCBoYW5kbGVyIGZvciB0aGUgYmluYXJ5IHR5cGUuIElmIG9uZSBpcyBmb3VuZCB0YWtlIGFcbi0gKiByZWZlcmVuY2UgdG8gcHJvdGVjdCBhZ2FpbnN0IHJlbW92YWwgdmlhIGJtX3tlbnRyeSxzdGF0dXN9X3dyaXRlKCkuXG4rICogcmVmZXJlbmNlIHRvIHByb3RlY3QgYWdhaW5zdCByZW1vdmFsIHZpYSBibV97ZW50cnksc3RhdHVzfV93cml0ZSgpLiBUaGVcbisgKiByZWZjb3VudCBvZiBhbiBlbnRyeSBjYW4gb25seSBkcm9wIHRvIHplcm8gb25jZSBpdCBoYXMgYmVlbiB1bmxpbmtlZCBhbmRcbisgKiBhIHJlc3RhcnRlZCBzZWFyY2ggY2Fubm90IGZpbmQgYW4gdW5saW5rZWQgZW50cnkgYWdhaW4gc28gdGhlIHJldHJ5IGxvb3BcbisgKiBpcyBib3VuZGVkLlxuICAqXG4gICogUmV0dXJuOiBiaW5hcnkgdHlwZSBsaXN0IGVudHJ5IG9uIHN1Y2Nlc3MsIE5VTEwgb24gZmFpbHVyZVxuICAqL1xuQEAgLTE0MywxMSArMTUwLDEwIEBAIHN0YXRpYyBOb2RlICpnZXRfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLFxuIHtcbiBcdE5vZGUgKmU7XG4gXG4tXHRyZWFkX2xvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuLVx0ZSA9IHNlYXJjaF9iaW5mbXRfaGFuZGxlcihtaXNjLCBicHJtKTtcbi1cdGlmIChlKVxuLVx0XHRyZWZjb3VudF9pbmMoXHUwMDI2ZS1cdTAwM2V1c2Vycyk7XG4tXHRyZWFkX3VubG9jayhcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXNfbG9jayk7XG4rXHRndWFyZChyY3UpKCk7XG4rXHRkbyB7XG4rXHRcdGUgPSBzZWFyY2hfYmluZm10X2hhbmRsZXIobWlzYywgYnBybSk7XG4rXHR9IHdoaWxlIChlIFx1MDAyNlx1MDAyNiAhcmVmY291bnRfaW5jX25vdF96ZXJvKFx1MDAyNmUtXHUwMDNldXNlcnMpKTtcbiBcdHJldHVybiBlO1xuIH1cbiBcbkBAIC0xNjQsNyArMTcwLDggQEAgc3RhdGljIHZvaWQgcHV0X2JpbmZtdF9oYW5kbGVyKE5vZGUgKmUpXG4gXHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNmUtXHUwMDNldXNlcnMpKSB7XG4gXHRcdGlmIChlLVx1MDAzZWZsYWdzIFx1MDAyNiBNSVNDX0ZNVF9PUEVOX0ZJTEUpXG4gXHRcdFx0ZmlscF9jbG9zZShlLVx1MDAzZWludGVycF9maWxlLCBOVUxMKTtcbi1cdFx0a2ZyZWUoZSk7XG4rXHRcdC8qIExvY2tsZXNzIHdhbGtlcnMgbWF5IHN0aWxsIGRlcmVmZXJlbmNlIHRoaXMgZW50cnkuICovXG4rXHRcdGtmcmVlX3JjdShlLCByY3UpO1xuIFx0fVxuIH1cbiBcbkBAIC0yMDgsNyArMjE1LDcgQEAgc3RhdGljIGludCBsb2FkX21pc2NfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4gXHRzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2M7XG4gXG4gXHRtaXNjID0gbG9hZF9iaW5mbXRfbWlzYygpO1xuLVx0aWYgKCFtaXNjLVx1MDAzZWVuYWJsZWQpXG4rXHRpZiAoIVJFQURfT05DRShtaXNjLVx1MDAzZWVuYWJsZWQpKVxuIFx0XHRyZXR1cm4gcmV0dmFsO1xuIFxuIFx0Zm10ID0gZ2V0X2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0pO1xuQEAgLTY1NCw4ICs2NjEsOCBAQCBzdGF0aWMgc3RydWN0IGJpbmZtdF9taXNjICppX2JpbmZtdF9taXNjKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4gICpcbiAgKiBJZiB0aGUgLVx1MDAzZWV2aWN0IGNhbGwgd2FzIG5vdCBjYXVzZWQgYnkgYSBzdXBlciBibG9jayBzaHV0ZG93biBidXQgYnkgYSB3cml0ZVxuICAqIHRvIHJlbW92ZSB0aGUgZW50cnkgb3IgYWxsIGVudHJpZXMgdmlhIGJtX3tlbnRyeSxzdGF0dXN9X3dyaXRlKCkgdGhlIGVudHJ5XG4tICogd2lsbCBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVkIGZyb20gdGhlIGxpc3QuIFdlIGtlZXAgdGhlIGxpc3RfZW1wdHkoKSBjaGVja1xuLSAqIHRvIG1ha2UgdGhhdCBleHBsaWNpdC5cbisgKiB3aWxsIGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgbGlzdC4gV2Uga2VlcCB0aGUgaGxpc3RfdW5oYXNoZWQoKVxuKyAqIGNoZWNrIHRvIG1ha2UgdGhhdCBleHBsaWNpdC5cbiAqL1xuIHN0YXRpYyB2b2lkIGJtX2V2aWN0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4ge1xuQEAgLTY2NywxMCArNjc0LDEwIEBAIHN0YXRpYyB2b2lkIGJtX2V2aWN0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4gXHRcdHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYztcbiBcbiBcdFx0bWlzYyA9IGlfYmluZm10X21pc2MoaW5vZGUpO1xuLVx0XHR3cml0ZV9sb2NrKFx1MDAyNm1pc2MtXHUwMDNlZW50cmllc19sb2NrKTtcbi1cdFx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNmUtXHUwMDNlbGlzdCkpXG4tXHRcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZlLVx1MDAzZWxpc3QpO1xuLVx0XHR3cml0ZV91bmxvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuK1x0XHRzcGluX2xvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuK1x0XHRpZiAoIWhsaXN0X3VuaGFzaGVkKFx1MDAyNmUtXHUwMDNlbm9kZSkpXG4rXHRcdFx0aGxpc3RfZGVsX2luaXRfcmN1KFx1MDAyNmUtXHUwMDNlbm9kZSk7XG4rXHRcdHNwaW5fdW5sb2NrKFx1MDAyNm1pc2MtXHUwMDNlZW50cmllc19sb2NrKTtcbiBcdFx0cHV0X2JpbmZtdF9oYW5kbGVyKGUpO1xuIFx0fVxuIH1cbkBAIC02ODksOSArNjk2LDkgQEAgc3RhdGljIHZvaWQgYm1fZXZpY3RfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSlcbiAgKi9cbiBzdGF0aWMgdm9pZCByZW1vdmVfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLCBOb2RlICplKVxuIHtcbi1cdHdyaXRlX2xvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuLVx0bGlzdF9kZWxfaW5pdChcdTAwMjZlLVx1MDAzZWxpc3QpO1xuLVx0d3JpdGVfdW5sb2NrKFx1MDAyNm1pc2MtXHUwMDNlZW50cmllc19sb2NrKTtcbitcdHNwaW5fbG9jayhcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXNfbG9jayk7XG4rXHRobGlzdF9kZWxfaW5pdF9yY3UoXHUwMDI2ZS1cdTAwM2Vub2RlKTtcbitcdHNwaW5fdW5sb2NrKFx1MDAyNm1pc2MtXHUwMDNlZW50cmllc19sb2NrKTtcbiBcdGxvY2tlZF9yZWN1cnNpdmVfcmVtb3ZhbChlLVx1MDAzZWRlbnRyeSwgTlVMTCk7XG4gfVxuIFxuQEAgLTc0MiwxMSArNzQ5LDEzIEBAIHN0YXRpYyBzc2l6ZV90IGJtX2VudHJ5X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLFxuIFx0XHQgKiB2aWEgYm1fe2VudHJ5LHJlZ2lzdGVyLHN0YXR1c31fd3JpdGUoKSBpbm9kZV9sb2NrKCkgb24gdGhlXG4gXHRcdCAqIHJvb3QgaW5vZGUgbXVzdCBiZSBoZWxkLlxuIFx0XHQgKiBUaGUgbG9jayBpcyBleGNsdXNpdmUgZW5zdXJpbmcgdGhhdCB0aGUgbGlzdCBjYW4ndCBiZVxuLVx0XHQgKiBtb2RpZmllZC4gT25seSBsb2FkX21pc2NfYmluYXJ5KCkgY2FuIGFjY2VzcyBidXQgZG9lcyBzb1xuLVx0XHQgKiByZWFkLW9ubHkuIFNvIHdlIG9ubHkgbmVlZCB0byB0YWtlIHRoZSB3cml0ZSBsb2NrIHdoZW4gd2Vcbi1cdFx0ICogYWN0dWFsbHkgcmVtb3ZlIHRoZSBlbnRyeSBmcm9tIHRoZSBsaXN0LlxuK1x0XHQgKiBtb2RpZmllZC4gT25seSBsb2FkX21pc2NfYmluYXJ5KCkgY2FuIGFjY2VzcyB0aGUgbGlzdFxuK1x0XHQgKiBjb25jdXJyZW50bHkgYW5kIGl0IGRvZXMgc28gdW5kZXIgUkNVLiBTbyBlbnRyaWVzX2xvY2sgb25seVxuK1x0XHQgKiBuZWVkcyB0byBiZSBoZWxkIHdoZW4gYW4gZW50cnkgaXMgYWN0dWFsbHkgdW5saW5rZWQgdG9cbitcdFx0ICogc2VyaWFsaXplIGFnYWluc3QgYm1fZXZpY3RfaW5vZGUoKSBkdXJpbmcgdW1vdW50IHdoaWNoXG4rXHRcdCAqIHVubGlua3Mgd2l0aG91dCBob2xkaW5nIGlub2RlX2xvY2suXG4gXHRcdCAqL1xuLVx0XHRpZiAoIWxpc3RfZW1wdHkoXHUwMDI2ZS1cdTAwM2VsaXN0KSlcbitcdFx0aWYgKCFobGlzdF91bmhhc2hlZChcdTAwMjZlLVx1MDAzZW5vZGUpKVxuIFx0XHRcdHJlbW92ZV9iaW5mbXRfaGFuZGxlcihpX2JpbmZtdF9taXNjKGlub2RlKSwgZSk7XG4gXG4gXHRcdGlub2RlX3VubG9jayhpbm9kZSk7XG5AQCAtNzg5LDkgKzc5OCw5IEBAIHN0YXRpYyBpbnQgYWRkX2VudHJ5KE5vZGUgKmUsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4gXG4gXHRkX21ha2VfcGVyc2lzdGVudChkZW50cnksIGlub2RlKTtcbiBcdG1pc2MgPSBpX2JpbmZtdF9taXNjKGlub2RlKTtcbi1cdHdyaXRlX2xvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuLVx0bGlzdF9hZGQoXHUwMDI2ZS1cdTAwM2VsaXN0LCBcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXMpO1xuLVx0d3JpdGVfdW5sb2NrKFx1MDAyNm1pc2MtXHUwMDNlZW50cmllc19sb2NrKTtcbitcdHNwaW5fbG9jayhcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXNfbG9jayk7XG4rXHRobGlzdF9hZGRfaGVhZF9yY3UoXHUwMDI2ZS1cdTAwM2Vub2RlLCBcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXMpO1xuK1x0c3Bpbl91bmxvY2soXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuIFx0c2ltcGxlX2RvbmVfY3JlYXRpbmcoZGVudHJ5KTtcbiBcdHJldHVybiAwO1xuIH1cbkBAIC04NTQsNyArODYzLDcgQEAgYm1fc3RhdHVzX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICpidWYsIHNpemVfdCBuYnl0ZXMsIGxvZmZfdCAqcHBvcylcbiBcdGNoYXIgKnM7XG4gXG4gXHRtaXNjID0gaV9iaW5mbXRfbWlzYyhmaWxlX2lub2RlKGZpbGUpKTtcbi1cdHMgPSBtaXNjLVx1MDAzZWVuYWJsZWQgPyBcImVuYWJsZWRcXG5cIiA6IFwiZGlzYWJsZWRcXG5cIjtcbitcdHMgPSBSRUFEX09OQ0UobWlzYy1cdTAwM2VlbmFibGVkKSA/IFwiZW5hYmxlZFxcblwiIDogXCJkaXNhYmxlZFxcblwiO1xuIFx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKGJ1ZiwgbmJ5dGVzLCBwcG9zLCBzLCBzdHJsZW4ocykpO1xuIH1cbiBcbkBAIC04NjMsMTggKzg3MiwxOSBAQCBzdGF0aWMgc3NpemVfdCBibV9zdGF0dXNfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsXG4ge1xuIFx0c3RydWN0IGJpbmZtdF9taXNjICptaXNjO1xuIFx0aW50IHJlcyA9IHBhcnNlX2NvbW1hbmQoYnVmZmVyLCBjb3VudCk7XG4tXHROb2RlICplLCAqbmV4dDtcbitcdHN0cnVjdCBobGlzdF9ub2RlICpuZXh0O1xuIFx0c3RydWN0IGlub2RlICppbm9kZTtcbitcdE5vZGUgKmU7XG4gXG4gXHRtaXNjID0gaV9iaW5mbXRfbWlzYyhmaWxlX2lub2RlKGZpbGUpKTtcbiBcdHN3aXRjaCAocmVzKSB7XG4gXHRjYXNlIDE6XG4gXHRcdC8qIERpc2FibGUgYWxsIGhhbmRsZXJzLiAqL1xuLVx0XHRtaXNjLVx1MDAzZWVuYWJsZWQgPSBmYWxzZTtcbitcdFx0V1JJVEVfT05DRShtaXNjLVx1MDAzZWVuYWJsZWQsIGZhbHNlKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIDI6XG4gXHRcdC8qIEVuYWJsZSBhbGwgaGFuZGxlcnMuICovXG4tXHRcdG1pc2MtXHUwMDNlZW5hYmxlZCA9IHRydWU7XG4rXHRcdFdSSVRFX09OQ0UobWlzYy1cdTAwM2VlbmFibGVkLCB0cnVlKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIDM6XG4gXHRcdC8qIERlbGV0ZSBhbGwgaGFuZGxlcnMuICovXG5AQCAtODg2LDExICs4OTYsMTMgQEAgc3RhdGljIHNzaXplX3QgYm1fc3RhdHVzX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLFxuIFx0XHQgKiB2aWEgYm1fe2VudHJ5LHJlZ2lzdGVyLHN0YXR1c31fd3JpdGUoKSBpbm9kZV9sb2NrKCkgb24gdGhlXG4gXHRcdCAqIHJvb3QgaW5vZGUgbXVzdCBiZSBoZWxkLlxuIFx0XHQgKiBUaGUgbG9jayBpcyBleGNsdXNpdmUgZW5zdXJpbmcgdGhhdCB0aGUgbGlzdCBjYW4ndCBiZVxuLVx0XHQgKiBtb2RpZmllZC4gT25seSBsb2FkX21pc2NfYmluYXJ5KCkgY2FuIGFjY2VzcyBidXQgZG9lcyBzb1xuLVx0XHQgKiByZWFkLW9ubHkuIFNvIHdlIG9ubHkgbmVlZCB0byB0YWtlIHRoZSB3cml0ZSBsb2NrIHdoZW4gd2Vcbi1cdFx0ICogYWN0dWFsbHkgcmVtb3ZlIHRoZSBlbnRyeSBmcm9tIHRoZSBsaXN0LlxuK1x0XHQgKiBtb2RpZmllZC4gT25seSBsb2FkX21pc2NfYmluYXJ5KCkgY2FuIGFjY2VzcyB0aGUgbGlzdFxuK1x0XHQgKiBjb25jdXJyZW50bHkgYW5kIGl0IGRvZXMgc28gdW5kZXIgUkNVLiBTbyBlbnRyaWVzX2xvY2sgb25seVxuK1x0XHQgKiBuZWVkcyB0byBiZSBoZWxkIHdoZW4gYW4gZW50cnkgaXMgYWN0dWFsbHkgdW5saW5rZWQgdG9cbitcdFx0ICogc2VyaWFsaXplIGFnYWluc3QgYm1fZXZpY3RfaW5vZGUoKSBkdXJpbmcgdW1vdW50IHdoaWNoXG4rXHRcdCAqIHVubGlua3Mgd2l0aG91dCBob2xkaW5nIGlub2RlX2xvY2suXG4gXHRcdCAqL1xuLVx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZSwgbmV4dCwgXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzLCBsaXN0KVxuK1x0XHRobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGUsIG5leHQsIFx1MDAyNm1pc2MtXHUwMDNlZW50cmllcywgbm9kZSlcbiBcdFx0XHRyZW1vdmVfYmluZm10X2hhbmRsZXIobWlzYywgZSk7XG4gXG4gXHRcdGlub2RlX3VubG9jayhpbm9kZSk7XG5AQCAtOTY1LDggKzk3Nyw4IEBAIHN0YXRpYyBpbnQgYm1fZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4gXHRcdGlmICghbWlzYylcbiBcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbi1cdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzKTtcbi1cdFx0cndsb2NrX2luaXQoXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuK1x0XHRJTklUX0hMSVNUX0hFQUQoXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzKTtcbitcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2bWlzYy1cdTAwM2VlbnRyaWVzX2xvY2spO1xuIFxuIFx0XHQvKiBQYWlycyB3aXRoIHNtcF9sb2FkX2FjcXVpcmUoKSBpbiBsb2FkX2JpbmZtdF9taXNjKCkuICovXG4gXHRcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNnVzZXJfbnMtXHUwMDNlYmluZm10X21pc2MsIG1pc2MpO1xuQEAgLTk4Myw3ICs5OTUsNyBAQCBzdGF0aWMgaW50IGJtX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuIFx0ICogc29tZW9uZSBtb3VudHMgYmluZm10X21pc2MgZm9yIHRoZSBmaXJzdCB0aW1lIG9yIGFnYWluIHdlIHNpbXBseVxuIFx0ICogcmVzZXQgLVx1MDAzZWVuYWJsZWQgdG8gdHJ1ZS5cbiBcdCAqL1xuLVx0bWlzYy1cdTAwM2VlbmFibGVkID0gdHJ1ZTtcbitcdFdSSVRFX09OQ0UobWlzYy1cdTAwM2VlbmFibGVkLCB0cnVlKTtcbiBcbiBcdGVyciA9IHNpbXBsZV9maWxsX3N1cGVyKHNiLCBCSU5GTVRGU19NQUdJQywgYm1fZmlsZXMpO1xuIFx0aWYgKCFlcnIpXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9iaW5mbXRzLmggYi9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaFxuaW5kZXggMmM3N2UzODNlNzM3NTcuLjdlNzMzM2I3YmIwZjExIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9iaW5mbXRzLmhcbisrKyBiL2luY2x1ZGUvbGludXgvYmluZm10cy5oXG5AQCAtMTAxLDggKzEwMSw4IEBAIHN0cnVjdCBsaW51eF9iaW5mbXQge1xuIFxuICNpZiBJU19FTkFCTEVEKENPTkZJR19CSU5GTVRfTUlTQylcbiBzdHJ1Y3QgYmluZm10X21pc2Mge1xuLVx0c3RydWN0IGxpc3RfaGVhZCBlbnRyaWVzO1xuLVx0cndsb2NrX3QgZW50cmllc19sb2NrO1xuK1x0c3RydWN0IGhsaXN0X2hlYWQgZW50cmllcztcbitcdHNwaW5sb2NrX3QgZW50cmllc19sb2NrO1xuIFx0Ym9vbCBlbmFibGVkO1xuIH0gX19yYW5kb21pemVfbGF5b3V0O1xuIFxuZGlmZiAtLWdpdCBhL2tlcm5lbC91c2VyLmMgYi9rZXJuZWwvdXNlci5jXG5pbmRleCA3YWVmNGU2NzlhNmEwYy4uMjFiYWZkYzExMzc5NTYgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvdXNlci5jXG4rKysgYi9rZXJuZWwvdXNlci5jXG5AQCAtMjMsOSArMjMsOSBAQFxuIFxuICNpZiBJU19FTkFCTEVEKENPTkZJR19CSU5GTVRfTUlTQylcbiBzdHJ1Y3QgYmluZm10X21pc2MgaW5pdF9iaW5mbXRfbWlzYyA9IHtcbi1cdC5lbnRyaWVzID0gTElTVF9IRUFEX0lOSVQoaW5pdF9iaW5mbXRfbWlzYy5lbnRyaWVzKSxcbitcdC5lbnRyaWVzID0gSExJU1RfSEVBRF9JTklULFxuIFx0LmVuYWJsZWQgPSB0cnVlLFxuLVx0LmVudHJpZXNfbG9jayA9IF9fUldfTE9DS19VTkxPQ0tFRChpbml0X2JpbmZtdF9taXNjLmVudHJpZXNfbG9jayksXG4rXHQuZW50cmllc19sb2NrID0gX19TUElOX0xPQ0tfVU5MT0NLRUQoaW5pdF9iaW5mbXRfbWlzYy5lbnRyaWVzX2xvY2spLFxuIH07XG4gRVhQT1JUX1NZTUJPTF9HUEwoaW5pdF9iaW5mbXRfbWlzYyk7XG4gI2VuZGlmXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxMDozMjoyNy43MTMxMTM3MTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTA3NDExOTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQmluZm10X01pc2MgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyBtYWtpbmcgc29tZSBmdW5kYW1lbnRhbCBjaGFuZ2VzIHRvIHRoZSBiaW5mbXRfbWlzYyBzdWJzeXN0ZW0uIFRoaXMgaXMgYSBjb3JlIGtlcm5lbCBhcmVhLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgbWlzY2VsbGFuZW91cyBiaW5hcnkgZm9ybWF0cy4gVGhlIHBhdGNoIHRvdWNoZXMgYGZzL2JpbmZtdF9taXNjLmNgLCBgaW5jbHVkZS9saW51eC9iaW5mbXRzLmhgLCBhbmQgYGtlcm5lbC91c2VyLmNgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyB0aGlzIGFzIHBvdGVudGlhbGx5IHNpZ25pZmljYW50LlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIGFwcGVhcnMgdG8gYmUgYSBzd2l0Y2ggZnJvbSBhIGRvdWJseS1saW5rZWQgbGlzdCAoYHN0cnVjdCBsaXN0X2hlYWRgKSB0byBhIGhhc2ggbGlzdCAoYHN0cnVjdCBobGlzdF9oZWFkYCkgZm9yIHRoZSBgZW50cmllc2AgbGlzdCBpbiBgc3RydWN0IGJpbmZtdF9taXNjYC4gV2UncmUgYWxzbyBzZWVpbmcgYSBsb2NrIHVwZ3JhZGUuIFRoZSBwYXRjaCBjaGFuZ2VzIGBlbnRyaWVzX2xvY2tgIGZyb20gYSByZWFkLXdyaXRlIGxvY2sgKGByd2xvY2tfdGApIHRvIGEgc3BpbmxvY2sgKGBzcGlubG9ja190YCkuIFRoaXMgc3VnZ2VzdHMgYSBwb3RlbnRpYWwgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLCB0aG91Z2ggaXQgYWxzbyBpbmNyZWFzZXMgdGhlIHJpc2sgb2YgY29udGVudGlvbiBpbiBjZXJ0YWluIHNjZW5hcmlvcy4gSXQgYWxzbyBzZWVtcyB0aGV5J3JlIGxldmVyYWdpbmcgUkNVIChSZWFkLUNvcHktVXBkYXRlKSBmb3IgbG9ja2xlc3MgdHJhdmVyc2FsIGluIGBnZXRfYmluZm10X2hhbmRsZXJgIGFuZCBgc2VhcmNoX2JpbmZtdF9oYW5kbGVyYCwgd2hpY2ggaXMgYW4gaW50ZXJlc3RpbmcgZGVzaWduIGNob2ljZS4gVGhpcyBkZWZpbml0ZWx5IGNhbGxzIGZvciBzb21lIGNhcmVmdWwgc2NydXRpbnkuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGlzIGlzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBBbnkgY2hhbmdlIHRvIGNvcmUga2VybmVsIGxvZ2ljIHdhcnJhbnRzIGEgdGhvcm91Z2ggZXhhbWluYXRpb24gZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgYW5kIGVkZ2UgY2FzZXMuIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGFmZmVjdGVkIHRvIGRpcmVjdCBteSBmdXp6aW5nIGVmZm9ydHMuXG5cbkxldCdzIHNlZeKApiBCYXNlZCBvbiB0aGUgZGlmZiwgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIG1vZGlmaWVkIG9yIGRpcmVjdGx5IGludm9sdmVkOiBgc2VhcmNoX2JpbmZtdF9oYW5kbGVyYCwgYGdldF9iaW5mbXRfaGFuZGxlcmAsIGBwdXRfYmluZm10X2hhbmRsZXJgLCBgbG9hZF9taXNjX2JpbmFyeWAsIGBibV9ldmljdF9pbm9kZWAsIGByZW1vdmVfYmluZm10X2hhbmRsZXJgLCBgYm1fZW50cnlfd3JpdGVgLCBgYWRkX2VudHJ5YCwgYGJtX3N0YXR1c19yZWFkYCwgYGJtX3N0YXR1c193cml0ZWAsIGFuZCBgYm1fZmlsbF9zdXBlcmAuXG5cbk9rYXksIHNvIGBsb2FkX21pc2NfYmluYXJ5YCBpcyB0aGUgbW9uZXkgc2hvdCDigJMgaXQncyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgYmluYXJ5IGV4ZWN1dGlvbiB0aHJvdWdoIGJpbmZtdF9taXNjLiBgYm1fZW50cnlfd3JpdGVgLCBgYm1fc3RhdHVzX3dyaXRlYCwgYW5kIGBibV9zdGF0dXNfcmVhZGAgYXJlIHRoZSB1c2VyLXNwYWNlIGludGVyZmFjZXMgZm9yIGNvbmZpZ3VyaW5nIGJpbmZtdF9taXNjLiBgYm1fZXZpY3RfaW5vZGVgIGhhbmRsZXMgaW5vZGUgZXZpY3Rpb24sIHNvIGl0J3MgcHJvYmFibHkgbGVzcyBjcml0aWNhbCBmcm9tIGEgZGlyZWN0IGF0dGFjayBzdXJmYWNlIHBlcnNwZWN0aXZlIGJ1dCBzdGlsbCByZWxldmFudCBmb3Igc3RhYmlsaXR5LlxuXG5CZWZvcmUgSSBnbyBmdXJ0aGVyLCBJIG5lZWQgdG8gY29uZmlybSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24uIFRoZSBjb2RlIHNlZW1zIHRvIGJlIGd1YXJkZWQgYnkgYENPTkZJR19CSU5GTVRfTUlTQ2AuIEkgc2hvdWxkIHF1aWNrbHkgdmVyaWZ5IHRoaXMgYnkgY2hlY2tpbmcgYGZzL0tjb25maWcuYmluZm10YCBvciBgZnMvTWFrZWZpbGVgIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGJ1aWxkLXRpbWUgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTQwLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTA6MzI6MzUuNjIwNTI3MzA2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzMyNDAwOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQklORk1UX01JU0NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL0tjb25maWcuYmluZm10PTEzOD1jb25maWcgQklORk1UX1pGTEFUXFxuLS1cXG5mcy9LY29uZmlnLmJpbmZtdC0xNDQtXFxuZnMvS2NvbmZpZy5iaW5mbXQ6MTQ1OmNvbmZpZyBCSU5GTVRfTUlTQ1xcbmZzL0tjb25maWcuYmluZm10LTE0Ni1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsIHN1cHBvcnQgZm9yIE1JU0MgYmluYXJpZXNcXFwiXFxuLS1cXG5mcy9NYWtlZmlsZT0zND1vYmotJChDT05GSUdfRklMRV9MT0NLSU5HKSAgICAgICs9IGxvY2tzLm9cXG5mcy9NYWtlZmlsZTozNTpvYmotJChDT05GSUdfQklORk1UX01JU0MpXFx0Kz0gYmluZm10X21pc2Mub1xcbmZzL01ha2VmaWxlLTM2LW9iai0kKENPTkZJR19CSU5GTVRfU0NSSVBUKVxcdCs9IGJpbmZtdF9zY3JpcHQub1xcbi0tXFxuZnMvZmlsZV90YWJsZS5jPTE2NT1zdGF0aWMgaW50IF9faW5pdCBpbml0X2ZzX3N0YXRfc3lzY3Rscyh2b2lkKVxcbi0tXFxuZnMvZmlsZV90YWJsZS5jLTE2Ny1cXHRyZWdpc3Rlcl9zeXNjdGxfaW5pdChcXFwiZnNcXFwiLCBmc19zdGF0X3N5c2N0bHMpO1xcbmZzL2ZpbGVfdGFibGUuYzoxNjg6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0JJTkZNVF9NSVNDKSkge1xcbmZzL2ZpbGVfdGFibGUuYy0xNjktXFx0XFx0c3RydWN0IGN0bF90YWJsZV9oZWFkZXIgKmhkcjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTA6MzI6MzYuODUzNzczODg1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI1NzY2OTU3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIHRoZSBCSU5GTVRfTUlTQyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgc28gdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiB3ZSdyZSBsb29raW5nIGF0IGlzIGBCSU5GTVRfTUlTQ2AuICBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBUaW1lIHRvIGRpdmUgaW50byB0aGUgaW1wbGVtZW50YXRpb24uIE15IGZpcnN0IHN0ZXAgaXMgdG8gY3JhY2sgb3BlbiBgZnMvYmluZm10X21pc2MuY2AuIEkgbmVlZCB0byByZXZpZXcgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGlzIHNwZWNpZmljIGZlYXR1cmUgaW4gTGludXgsIGFuZCBpZGVudGlmeSB0aGUgY29yZSBmdW5jdGlvbnMgdGhhdCBoYW5kbGUgdGhpcyBmdW5jdGlvbmFsaXR5LiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHVuZGVyc3RhbmRpbmcgdGhlIGludGVyYWN0aW9ucyBvZiB0aGUgcmVsZXZhbnQgZmlsZXMgYW5kIGZ1bmN0aW9ucy4gSSBuZWVkIHRvIGJlIHN1cmUgSSdtIGFjcm9zcyB0aGUgYmFzaWNzIGJlZm9yZSBkaWdnaW5nIGFueSBkZWVwZXIuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0MjcsIk91dHB1dFRva2VucyI6NjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQxMDozMjo0MC4xMTE0NDU0MTVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njk2OTk1NzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihzdGF0aWN8aW50fHZvaWQpLiogKGxvYWRfbWlzY19iaW5hcnl8Ym1fZW50cnlfd3JpdGV8Ym1fc3RhdHVzX3dyaXRlfGJtX2V2aWN0X2lub2RlfGFkZF9lbnRyeSlcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9iaW5mbXRfbWlzYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2JpbmZtdF9taXNjLmM9MTg5PXN0YXRpYyBzdHJ1Y3QgYmluZm10X21pc2MgKmxvYWRfYmluZm10X21pc2Modm9pZClcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmMtMjA5LSAqL1xcbmZzL2JpbmZtdF9taXNjLmM6MjEwOnN0YXRpYyBpbnQgbG9hZF9taXNjX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbmZzL2JpbmZtdF9taXNjLmMtMjExLXtcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmM9NjQ5PXN0YXRpYyBzdHJ1Y3QgYmluZm10X21pc2MgKmlfYmluZm10X21pc2Moc3RydWN0IGlub2RlICppbm9kZSlcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmMtNjY2LSovXFxuZnMvYmluZm10X21pc2MuYzo2Njc6c3RhdGljIHZvaWQgYm1fZXZpY3RfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSlcXG5mcy9iaW5mbXRfbWlzYy5jLTY2OC17XFxuLS1cXG5mcy9iaW5mbXRfbWlzYy5jPTcwOD1ibV9lbnRyeV9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbmJ5dGVzLCBsb2ZmX3QgKnBwb3MpXFxuLS1cXG5mcy9iaW5mbXRfbWlzYy5jLTcyNS1cXG5mcy9iaW5mbXRfbWlzYy5jOjcyNjpzdGF0aWMgc3NpemVfdCBibV9lbnRyeV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlcixcXG5mcy9iaW5mbXRfbWlzYy5jLTcyNy1cXHRcXHRcXHRcXHRzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmM9NzcwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGJtX2VudHJ5X29wZXJhdGlvbnMgPSB7XFxuLS1cXG5mcy9iaW5mbXRfbWlzYy5jLTc3OC0vKiBhZGQgdG8gZmlsZXN5c3RlbSAqL1xcbmZzL2JpbmZtdF9taXNjLmM6Nzc5OnN0YXRpYyBpbnQgYWRkX2VudHJ5KE5vZGUgKmUsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuZnMvYmluZm10X21pc2MuYy03ODAte1xcbi0tXFxuZnMvYmluZm10X21pc2MuYz04NjA9Ym1fc3RhdHVzX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICpidWYsIHNpemVfdCBuYnl0ZXMsIGxvZmZfdCAqcHBvcylcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmMtODY5LVxcbmZzL2JpbmZtdF9taXNjLmM6ODcwOnN0YXRpYyBzc2l6ZV90IGJtX3N0YXR1c193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlcixcXG5mcy9iaW5mbXRfbWlzYy5jLTg3MS1cXHRcXHRzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTA6MzI6NDAuMTgxMTUzOTc4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIxNzY5NzU1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRnVuY3Rpb24gU2NvcGUgaW4gdGhlIEtlcm5lbCBNb2R1bGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnM6IGBsb2FkX21pc2NfYmluYXJ5YCwgYGJtX2V2aWN0X2lub2RlYCwgYGJtX2VudHJ5X3dyaXRlYCwgYGFkZF9lbnRyeWAsIGFuZCBgYm1fc3RhdHVzX3dyaXRlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgc2NvcGUgd2l0aGluIHRoaXMgbW9kdWxlLiBUaGUgZmlyc3QgdGhpbmcgSSdsbCBkbyBpcyBjb25maXJtIHdoZXRoZXIgdGhlc2UgYXJlIHN0YXRpYyBvciBub3QuIEEgcXVpY2sgY2hlY2sgcmV2ZWFscyB0aGF0IGBhZGRfZW50cnlgIGlzIHN0YXRpYywgYXMgaXMgYGJtX2V2aWN0X2lub2RlYCwgYW5kIGFsc28gYGJtX2VudHJ5X3dyaXRlYCBhbmQgYWxzbyBgYm1fc3RhdHVzX3dyaXRlYCwgYW5kIGFsc28gYGxvYWRfbWlzY19iaW5hcnlgLlxuXG5XYWl0IGEgbWludXRlLCBgbG9hZF9taXNjX2JpbmFyeWAuLi4gSSByZW1lbWJlciBzZWVpbmcgdGhhdCBuYW1lIHNvbWV3aGVyZSBiZWZvcmUuIEl0J3MgdXNlZCBpbiB0aGUgYGxpbnV4X2JpbmZtdGAgc3RydWN0LiBJIHRoaW5rIGl0J3MgcmVnaXN0ZXJlZCBpbiB0aGUga2VybmVsIGFzIGEgYmluYXJ5IGZvcm1hdCBoYW5kbGVyLiBCZXR0ZXIgZG91YmxlLWNoZWNrIGBmcy9iaW5mbXRfbWlzYy5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZnVuY3Rpb24gaW50ZWdyYXRlcyB3aXRoIHRoZSB3aWRlciBrZXJuZWwgYmluYXJ5IGhhbmRsaW5nIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyMjMsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTA6MzI6NDQuMzk4ODUzNjI1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTcxNDY5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdHJ1Y3QgbGludXhfYmluZm10XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2JpbmZtdF9taXNjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYmluZm10X21pc2MuYz0xMDIyPXN0YXRpYyBpbnQgYm1faW5pdF9mc19jb250ZXh0KHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmMtMTAyNy1cXG5mcy9iaW5mbXRfbWlzYy5jOjEwMjg6c3RhdGljIHN0cnVjdCBsaW51eF9iaW5mbXQgbWlzY19mb3JtYXQgPSB7XFxuZnMvYmluZm10X21pc2MuYy0xMDI5LVxcdC5tb2R1bGUgPSBUSElTX01PRFVMRSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMTA6MzI6NDQuNTQ0NTc1MzhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NjQ4NDg5MzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBgYmluZm10X21pc2NgIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHJpZ2h0IG9mZiB0aGUgYmF0LCBgbG9hZF9taXNjX2JpbmFyeWAgaXMgY2xlYXJseSB0aGUgYC5sb2FkX2JpbmFyeWAgY2FsbGJhY2suIE1ha2VzIHNlbnNlLiBgYm1fZW50cnlfd3JpdGVgIGFuZCBgYm1fc3RhdHVzX3dyaXRlYCBhcmUgdGhlIGAud3JpdGVgIGNhbGxiYWNrcyBmb3IgdGhlIGBiaW5mbXRfbWlzY2AgZmlsZXN5c3RlbSwgYW5kIGBibV9ldmljdF9pbm9kZWAgaXMgdGhlIGAuZXZpY3RfaW5vZGVgIGNhbGxiYWNrLiBUaGVzZSBhcmUgYWxsIGNyaXRpY2FsIGVudHJ5IHBvaW50cywgdGhlIGZ1bmN0aW9ucyB0aGF0IGludGVyYWN0IGRpcmVjdGx5IHdpdGggdGhlIGNvcmUgbG9naWMuXG5cblRoZXNlIGZvdXIsIGFsb25nIHdpdGggYGFkZF9lbnRyeWAsIGBnZXRfYmluZm10X2hhbmRsZXJgLCBgc2VhcmNoX2JpbmZtdF9oYW5kbGVyYCwgYW5kIGByZW1vdmVfYmluZm10X2hhbmRsZXJgIGFyZSBkZWZpbml0ZSBjYW5kaWRhdGVzIGZvciBgRm9jdXNTeW1ib2xzYC4gSG9sZCBvbiB0aG91Z2gsIGBnZXRfYmluZm10X2hhbmRsZXJgIGFuZCBgc2VhcmNoX2JpbmZtdF9oYW5kbGVyYCBhbHNvIGxvb2sgbGlrZSB0aGV5J3JlIGJlaW5nICptb2RpZmllZCogaW4gYSBzaWduaWZpY2FudCB3YXksIHBhcnRpY3VsYXJseSB3aXRoIHJlc3BlY3QgdG8gdGhhdCBSQ1UgbG9naWMuIFl1cCwgdGhvc2UgbmVlZCB0byBiZSBpbmNsdWRlZC5cblxuQmVmb3JlIEkgbG9jayB0aGF0IGRvd24sIEknbGwgcXVpY2tseSBjaGVjayBmb3IgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgaW1wYWN0ZWQuIFRoZSBwYXRjaCB0b3VjaGVzIGBmcy9iaW5mbXRfbWlzYy5jYCwgYGluY2x1ZGUvbGludXgvYmluZm10cy5oYCwgYW5kIGBrZXJuZWwvdXNlci5jYCwgd2hpY2ggbWFrZXMgYENPTkZJR19CSU5GTVRfTUlTQ2AgdGhlIG9idmlvdXMgcHJpbWFyeSBvbmUuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSByYXRpb25hbGUuIFRoaXMgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgdGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlcyBvZiBgYmluZm10X21pc2NgLiBJdCdzIG1vdmluZyBmcm9tIGEgZG91Ymx5LWxpbmtlZCBsaXN0IHByb3RlY3RlZCBieSBhIHJlYWQtd3JpdGUgbG9jayB0byBhbiBSQ1UtcHJvdGVjdGVkIGhhc2ggbGlzdCB3aXRoIGEgc3BpbmxvY2suIFRoaXMgaXMgYSAqZnVuY3Rpb25hbCBjaGFuZ2UqOyBpdCdzIGFsdGVyaW5nIHRoZSByZWdpc3RyYXRpb24sIHVucmVnaXN0cmF0aW9uLCBhbmQgZXhlY3V0aW9uIGxvZ2ljIG9mIGBiaW5mbXRfbWlzY2AuIFRoYXQncyBhIGh1Z2UgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLiBXZSBuZWVkIHRvIGZ1enogdGhpcyBhZ2dyZXNzaXZlbHkgdG8gZW5zdXJlIHRoZSBuZXcgUkNVIGxvZ2ljIGFuZCBsb2NrbGVzcyB0cmF2ZXJzYWwgZG9uJ3QgaW50cm9kdWNlIGFueSBuYXN0eSByYWNlIGNvbmRpdGlvbnMsIHVzZS1hZnRlci1mcmVlcywgb3Igb3RoZXIgbWVtb3J5IHNhZmV0eSBpc3N1ZXMuXG5cblNvLCBoZXJlJ3MgbXkgYEZvY3VzU3ltYm9sc2A6XG5cbi0gICBgbG9hZF9taXNjX2JpbmFyeWBcbi0gICBgYm1fZW50cnlfd3JpdGVgXG4tICAgYGJtX3N0YXR1c193cml0ZWBcbi0gICBgYm1fZXZpY3RfaW5vZGVgXG4tICAgYGFkZF9lbnRyeWBcbi0gICBgZ2V0X2JpbmZtdF9oYW5kbGVyYFxuLSAgIGBzZWFyY2hfYmluZm10X2hhbmRsZXJgXG4tICAgYHJlbW92ZV9iaW5mbXRfaGFuZGxlcmBcblxuQW5kIHRoZSBgRW5hYmxlQ29uZmlnc2A6XG5cbi0gICBgQklORk1UX01JU0NgXG5cbkknbSByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3NTUsIk91dHB1dFRva2VucyI6MjAwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDEwOjMyOjUzLjE5MzA2ODAyMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxMTIwNDIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCSU5GTVRfTUlTQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxvYWRfbWlzY19iaW5hcnlcIixcbiAgICBcImJtX2VudHJ5X3dyaXRlXCIsXG4gICAgXCJibV9zdGF0dXNfd3JpdGVcIixcbiAgICBcImJtX2V2aWN0X2lub2RlXCIsXG4gICAgXCJhZGRfZW50cnlcIixcbiAgICBcImdldF9iaW5mbXRfaGFuZGxlclwiLFxuICAgIFwic2VhcmNoX2JpbmZtdF9oYW5kbGVyXCIsXG4gICAgXCJyZW1vdmVfYmluZm10X2hhbmRsZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMgb2YgYGJpbmZtdF9taXNjYCBmcm9tIGEgZG91Ymx5LWxpbmtlZCBsaXN0IHdpdGggYSByd2xvY2sgdG8gYW4gUkNVLXByb3RlY3RlZCBoYXNoIGxpc3Qgd2l0aCBhIHNwaW5sb2NrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHRoZSBjb3JlIGxvZ2ljIG9mIGBiaW5mbXRfbWlzY2AgcmVnaXN0cmF0aW9uLCB1bnJlZ2lzdHJhdGlvbiwgYW5kIGJpbmFyeSBleGVjdXRpb24uIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHRoZSBuZXcgUkNVIGxvZ2ljIGFuZCBsb2NrbGVzcyB0cmF2ZXJzYWwgZG8gbm90IGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMsIHVzZS1hZnRlci1mcmVlLCBvciBvdGhlciBtZW1vcnkgc2FmZXR5IGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCSU5GTVRfTUlTQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxvYWRfbWlzY19iaW5hcnlcIixcbiAgICBcImJtX2VudHJ5X3dyaXRlXCIsXG4gICAgXCJibV9zdGF0dXNfd3JpdGVcIixcbiAgICBcImJtX2V2aWN0X2lub2RlXCIsXG4gICAgXCJhZGRfZW50cnlcIixcbiAgICBcImdldF9iaW5mbXRfaGFuZGxlclwiLFxuICAgIFwic2VhcmNoX2JpbmZtdF9oYW5kbGVyXCIsXG4gICAgXCJyZW1vdmVfYmluZm10X2hhbmRsZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMgb2YgYGJpbmZtdF9taXNjYCBmcm9tIGEgZG91Ymx5LWxpbmtlZCBsaXN0IHdpdGggYSByd2xvY2sgdG8gYW4gUkNVLXByb3RlY3RlZCBoYXNoIGxpc3Qgd2l0aCBhIHNwaW5sb2NrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHRoZSBjb3JlIGxvZ2ljIG9mIGBiaW5mbXRfbWlzY2AgcmVnaXN0cmF0aW9uLCB1bnJlZ2lzdHJhdGlvbiwgYW5kIGJpbmFyeSBleGVjdXRpb24uIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHRoZSBuZXcgUkNVIGxvZ2ljIGFuZCBsb2NrbGVzcyB0cmF2ZXJzYWwgZG8gbm90IGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMsIHVzZS1hZnRlci1mcmVlLCBvciBvdGhlciBtZW1vcnkgc2FmZXR5IGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow888bd[1] Phase: Succeeded StartedAt: 2026-07-09 10:33:04 +0000 UTC FinishedAt: 2026-07-09 10:33:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow888bd[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-09 10:33:04 +0000 UTC FinishedAt: 2026-07-09 10:33:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow888bd[2] Phase: Succeeded StartedAt: 2026-07-09 10:33:04 +0000 UTC FinishedAt: 2026-07-09 14:53:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-09 10:33:04 +0000 UTC FinishedAt: 2026-07-09 14:53:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-09 10:33:04 +0000 UTC FinishedAt: 2026-07-09 10:33:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-09 10:33:04 +0000 UTC FinishedAt: 2026-07-09 10:33:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},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-workflow888bd/series-workflow888bd-convert-artifact-1009849337/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-09 10:33:57 +0000 UTC FinishedAt: 2026-07-09 11:10:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-09 10:33:57 +0000 UTC FinishedAt: 2026-07-09 11:10:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*925f47ea-7c64-4fe1-a8a2-af6626a4f9ed,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-workflow888bd/series-workflow888bd-convert-artifact-1009849337/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": "59a87094-788e-46bb-a8fb-5e0677138379", "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-workflow888bd/series-workflow888bd-build-action-3662261527/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-09 10:33:57 +0000 UTC FinishedAt: 2026-07-09 11:09:16 +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:*925f47ea-7c64-4fe1-a8a2-af6626a4f9ed,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-workflow888bd/series-workflow888bd-convert-artifact-1009849337/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": "59a87094-788e-46bb-a8fb-5e0677138379", "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-workflow888bd/series-workflow888bd-build-action-3662261527/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-09 11:10:00 +0000 UTC FinishedAt: 2026-07-09 11:10:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-09 11:10:00 +0000 UTC FinishedAt: 2026-07-09 11:10:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-09 11:10:00 +0000 UTC FinishedAt: 2026-07-09 11:12:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-09 11:10:00 +0000 UTC FinishedAt: 2026-07-09 11:10:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},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-workflow888bd/series-workflow888bd-convert-artifact-766956492/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-09 11:12:17 +0000 UTC FinishedAt: 2026-07-09 11:14:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-09 11:12:17 +0000 UTC FinishedAt: 2026-07-09 11:14:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*59a87094-788e-46bb-a8fb-5e0677138379,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-workflow888bd/series-workflow888bd-build-action-3662261527/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-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-09 11:14:52 +0000 UTC FinishedAt: 2026-07-09 11:14:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-09 11:14:52 +0000 UTC FinishedAt: 2026-07-09 11:14:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-09 11:14:52 +0000 UTC FinishedAt: 2026-07-09 11:47:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-09 11:14:52 +0000 UTC FinishedAt: 2026-07-09 11:47:55 +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:*925f47ea-7c64-4fe1-a8a2-af6626a4f9ed,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-workflow888bd/series-workflow888bd-convert-artifact-766956492/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": "84067c0d-1de2-4561-b2c6-fa58e413b113", "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-workflow888bd/series-workflow888bd-build-action-269558248/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-09 11:14:52 +0000 UTC FinishedAt: 2026-07-09 11:47:45 +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:*925f47ea-7c64-4fe1-a8a2-af6626a4f9ed,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-workflow888bd/series-workflow888bd-convert-artifact-766956492/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": "84067c0d-1de2-4561-b2c6-fa58e413b113", "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-workflow888bd/series-workflow888bd-build-action-269558248/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-09 11:47:55 +0000 UTC FinishedAt: 2026-07-09 11:47:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-09 11:47:55 +0000 UTC FinishedAt: 2026-07-09 11:47:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-09 11:47:55 +0000 UTC FinishedAt: 2026-07-09 11:50:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-09 11:47:55 +0000 UTC FinishedAt: 2026-07-09 11:49:54 +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:*84067c0d-1de2-4561-b2c6-fa58e413b113,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-workflow888bd/series-workflow888bd-build-action-269558248/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-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-09 11:50:05 +0000 UTC FinishedAt: 2026-07-09 14:53:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-09 11:50:05 +0000 UTC FinishedAt: 2026-07-09 14:53:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},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:*59a87094-788e-46bb-a8fb-5e0677138379,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*84067c0d-1de2-4561-b2c6-fa58e413b113,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-workflow888bd/series-workflow888bd-build-action-3662261527/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-workflow888bd/series-workflow888bd-build-action-269558248/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-09 11:50:05 +0000 UTC FinishedAt: 2026-07-09 11:50:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-09 11:50:05 +0000 UTC FinishedAt: 2026-07-09 11:50:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},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-workflow888bd/series-workflow888bd-convert-artifact-370954805/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-09 11:50:05 +0000 UTC FinishedAt: 2026-07-09 11:50:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-09 11:50:05 +0000 UTC FinishedAt: 2026-07-09 11:50:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-09 11:50:06 +0000 UTC FinishedAt: 2026-07-09 11:50:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-09 11:50:20 +0000 UTC FinishedAt: 2026-07-09 14:53:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow888bd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["load_misc_binary","bm_entry_write","bm_status_write","bm_evict_inode","add_entry","get_binfmt_handler","search_binfmt_handler","remove_binfmt_handler"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC"],"series_id":"95c9b048-eddd-4250-b1ec-6efa1cb19ea7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-09 11:50:20 +0000 UTC FinishedAt: 2026-07-09 14:52:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*59a87094-788e-46bb-a8fb-5e0677138379,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*84067c0d-1de2-4561-b2c6-fa58e413b113,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-workflow888bd/series-workflow888bd-build-action-3662261527/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-workflow888bd/series-workflow888bd-build-action-269558248/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-workflow888bd/series-workflow888bd-convert-artifact-370954805/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,}