Name: series-workflowpvh2q Phase: Succeeded StartedAt: 2026-07-17 22:55:07 +0000 UTC FinishedAt: 2026-07-18 00:19:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvh2q[0] Phase: Succeeded StartedAt: 2026-07-17 22:55:07 +0000 UTC FinishedAt: 2026-07-17 23:09:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvh2q[0].run-triage Phase: Succeeded StartedAt: 2026-07-17 22:55:07 +0000 UTC FinishedAt: 2026-07-17 23:09:06 +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": "1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "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": "1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "series_id": "22a1b910-b30e-4235-a94d-0f6a0e9bc7dc" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "hppa_sdiv64", "hppa_sdiv64_rem", "emit_alu_r64", "emit_alu_r32", "emit_call_libgcc_ll" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIzOjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtocHBhX3NkaXY2NCYjMzQ7LAogICAgJiMzNDtocHBhX3NkaXY2NF9yZW0mIzM0OywKICAgICYjMzQ7ZW1pdF9hbHVfcjY0JiMzNDssCiAgICAmIzM0O2VtaXRfYWx1X3IzMiYjMzQ7LAogICAgJiMzNDtlbWl0X2NhbGxfbGliZ2NjX2xsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3Igc2lnbmVkIGRpdmlzaW9uIGFuZCBtb2R1bG8gb3BlcmF0aW9ucyB0byB0aGUgUEEtUklTQyBCUEYgSklUIGNvbXBpbGVyLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCB3aGVuIHJ1bm5pbmcgQlBGIHByb2dyYW1zIG9uIFBBLVJJU0MgKHdoaWNoIGNhbiBiZSBlbXVsYXRlZCBpbiBRRU1VKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMzowODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQzOTlkZmJhNmM3MzYxZTBjNGNlMDVmNWU3OWFiZGRkZGEwMjQzY2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxNyAyMzowODoyMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oIGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaFxuaW5kZXggOGI4ODk2OTU5ZjA0NDkuLjA3NDExNWM5M2M5MDljIDEwMDY0NFxuLS0tIGEvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaFxuQEAgLTQ2Nyw2ICYjNDM7NDY3LDggQEAgc3RhdGljIGlubGluZSB1MzIgaHBwYV90MjFfaW5zbih1OCBvcGNvZGUsIHU4IHIyLCB1OCByMSwgdTggZXh0OCwgdTggdClcbiBcbiB1NjQgaHBwYV9kaXY2NCh1NjQgZGl2LCB1NjQgZGl2aXNvcik7XG4gdTY0IGhwcGFfZGl2NjRfcmVtKHU2NCBkaXYsIHU2NCBkaXZpc29yKTtcbiYjNDM7dTY0IGhwcGFfc2RpdjY0KHU2NCBkaXYsIHU2NCBkaXZpc29yKTtcbiYjNDM7dTY0IGhwcGFfc2RpdjY0X3JlbSh1NjQgZGl2LCB1NjQgZGl2aXNvcik7XG4gXG4gLyogSGVscGVyIGZ1bmN0aW9ucyB0aGF0IGVtaXQgSFBQQSBpbnN0cnVjdGlvbnMgd2hlbiBwb3NzaWJsZS4gKi9cbiBcbmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jXG5pbmRleCA1ZmYwY2Y5MjVmZTk1My4uZWVhMGEzNGEzYmZlZTcgMTAwNjQ0XG4tLS0gYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmNcbkBAIC0zMjEsNiAmIzQzOzMyMSw4IEBAIHN0YXRpYyB2b2lkIGJwZl9wdXRfcmVnMzIoY29uc3QgczggKnJlZywgY29uc3QgczggKnNyYyxcbiBleHRlcm4gdm9pZCAkJG11bEkodm9pZCk7XG4gZXh0ZXJuIHZvaWQgJCRkaXZVKHZvaWQpO1xuIGV4dGVybiB2b2lkICQkcmVtVSh2b2lkKTtcbiYjNDM7ZXh0ZXJuIHZvaWQgJCRkaXZJKHZvaWQpO1xuJiM0MztleHRlcm4gdm9pZCAkJHJlbUkodm9pZCk7XG4gXG4gc3RhdGljIHZvaWQgZW1pdF9jYWxsX21pbGxpY29kZSh2b2lkICpmdW5jLCBjb25zdCBzOCBhcmcwLFxuIFx0XHRjb25zdCBzOCBhcmcxLCB1OCBvcGNvZGUsIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgpXG5AQCAtNTYyLDEyICYjNDM7NTY0LDE0IEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X2kzMihjb25zdCBzOCAqZHN0LCBzMzIgaW1tLFxuIH1cbiBcbiBzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoY29uc3QgczggKmRzdCwgY29uc3QgczggKnNyYyxcbi1cdFx0XHQgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCwgY29uc3QgdTggb3ApXG4mIzQzO1x0XHRcdCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LCBjb25zdCB1OCBvcCxcbiYjNDM7XHRcdFx0IGJvb2wgaXNfc2lnbmVkKVxuIHtcbiBcdGNvbnN0IHM4ICp0bXAxID0gcmVnbWFwW1RNUF9SRUdfMV07XG4gXHRjb25zdCBzOCAqdG1wMiA9IHJlZ21hcFtUTVBfUkVHXzJdO1xuIFx0Y29uc3QgczggKnJkO1xuIFx0Y29uc3QgczggKnJzID0gYnBmX2dldF9yZWc2NChzcmMsIHRtcDIsIGN0eCk7XG4mIzQzO1x0dm9pZCAqZnVuYztcbiBcbiBcdGlmIChvcCA9PSBCUEZfTU9WKVxuIFx0XHRyZCA9IGJwZl9nZXRfcmVnNjRfcmVmKGRzdCwgdG1wMSwgZmFsc2UsIGN0eCk7XG5AQCAtNjA0LDEwICYjNDM7NjA4LDEyIEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChjb25zdCBzOCAqZHN0LCBjb25zdCBzOCAqc3JjLFxuIFx0XHRlbWl0X2NhbGxfbGliZ2NjX2xsKF9fbXVsZGkzLCByZCwgcnMsIG9wLCBjdHgpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQlBGX0RJVjpcbi1cdFx0ZW1pdF9jYWxsX2xpYmdjY19sbChcdTAwMjZocHBhX2RpdjY0LCByZCwgcnMsIG9wLCBjdHgpO1xuJiM0MztcdFx0ZnVuYyA9IGlzX3NpZ25lZCA/IFx1MDAyNmhwcGFfc2RpdjY0IDogXHUwMDI2aHBwYV9kaXY2NDtcbiYjNDM7XHRcdGVtaXRfY2FsbF9saWJnY2NfbGwoZnVuYywgcmQsIHJzLCBvcCwgY3R4KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJQRl9NT0Q6XG4tXHRcdGVtaXRfY2FsbF9saWJnY2NfbGwoXHUwMDI2aHBwYV9kaXY2NF9yZW0sIHJkLCBycywgb3AsIGN0eCk7XG4mIzQzO1x0XHRmdW5jID0gaXNfc2lnbmVkID8gXHUwMDI2aHBwYV9zZGl2NjRfcmVtIDogXHUwMDI2aHBwYV9kaXY2NF9yZW07XG4mIzQzO1x0XHRlbWl0X2NhbGxfbGliZ2NjX2xsKGZ1bmMsIHJkLCBycywgb3AsIGN0eCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCUEZfTFNIOlxuIFx0XHRlbWl0X2NhbGxfbGliZ2NjX2xsKF9fYXNobGRpMywgcmQsIHJzLCBvcCwgY3R4KTtcbkBAIC02MzAsNyAmIzQzOzYzNiw4IEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChjb25zdCBzOCAqZHN0LCBjb25zdCBzOCAqc3JjLFxuIH1cbiBcbiBzdGF0aWMgdm9pZCBlbWl0X2FsdV9yMzIoY29uc3QgczggKmRzdCwgY29uc3QgczggKnNyYyxcbi1cdFx0XHQgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCwgY29uc3QgdTggb3ApXG4mIzQzO1x0XHRcdCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LCBjb25zdCB1OCBvcCxcbiYjNDM7XHRcdFx0IGJvb2wgaXNfc2lnbmVkKVxuIHtcbiBcdGNvbnN0IHM4ICp0bXAxID0gcmVnbWFwW1RNUF9SRUdfMV07XG4gXHRjb25zdCBzOCAqdG1wMiA9IHJlZ21hcFtUTVBfUkVHXzJdO1xuQEAgLTY2NiwxMCAmIzQzOzY3MywxMiBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9yMzIoY29uc3QgczggKmRzdCwgY29uc3QgczggKnNyYyxcbiBcdFx0ZW1pdF9jYWxsX21pbGxpY29kZSgkJG11bEksIGxvKHJkKSwgbG8ocnMpLCBvcCwgY3R4KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJQRl9ESVY6XG4tXHRcdGVtaXRfY2FsbF9taWxsaWNvZGUoJCRkaXZVLCBsbyhyZCksIGxvKHJzKSwgb3AsIGN0eCk7XG4mIzQzO1x0XHRlbWl0X2NhbGxfbWlsbGljb2RlKGlzX3NpZ25lZCA/ICQkZGl2SSA6ICQkZGl2VSxcbiYjNDM7XHRcdFx0XHQgICAgbG8ocmQpLCBsbyhycyksIG9wLCBjdHgpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQlBGX01PRDpcbi1cdFx0ZW1pdF9jYWxsX21pbGxpY29kZSgkJHJlbVUsIGxvKHJkKSwgbG8ocnMpLCBvcCwgY3R4KTtcbiYjNDM7XHRcdGVtaXRfY2FsbF9taWxsaWNvZGUoaXNfc2lnbmVkID8gJCRyZW1JIDogJCRyZW1VLFxuJiM0MztcdFx0XHRcdCAgICBsbyhyZCksIGxvKHJzKSwgb3AsIGN0eCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCUEZfTFNIOlxuIFx0XHRlbWl0KGhwcGFfc3ViaSgweDFmLCBsbyhycyksIEhQUEFfUkVHX1QwKSwgY3R4KTtcbkBAIC0xMTYzLDEyICYjNDM7MTE3MiwxMiBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LFxuIFx0XHRcdGVtaXRfaW1tMzIodG1wMiwgaW1tLCBjdHgpO1xuIFx0XHRcdHNyYyA9IHRtcDI7XG4gXHRcdH1cbi1cdFx0ZW1pdF9hbHVfcjY0KGRzdCwgc3JjLCBjdHgsIEJQRl9PUChjb2RlKSk7XG4mIzQzO1x0XHRlbWl0X2FsdV9yNjQoZHN0LCBzcmMsIGN0eCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XG4gXHRcdGJyZWFrO1xuIFxuIFx0LyogZHN0ID0gLWRzdCAqL1xuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTkVHOlxuLVx0XHRlbWl0X2FsdV9yNjQoZHN0LCB0bXAyLCBjdHgsIEJQRl9PUChjb2RlKSk7XG4mIzQzO1x0XHRlbWl0X2FsdV9yNjQoZHN0LCB0bXAyLCBjdHgsIEJQRl9PUChjb2RlKSwgZmFsc2UpO1xuIFx0XHRicmVhaztcbiBcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PViB8IEJQRl9LOlxuQEAgLTEyMTEsNyAmIzQzOzEyMjAsNyBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LFxuIFx0XHRcdGVtaXRfaW1tMzIodG1wMiwgaW1tLCBjdHgpO1xuIFx0XHRcdHNyYyA9IHRtcDI7XG4gXHRcdH1cbi1cdFx0ZW1pdF9hbHVfcjMyKGRzdCwgc3JjLCBjdHgsIEJQRl9PUChjb2RlKSk7XG4mIzQzO1x0XHRlbWl0X2FsdV9yMzIoZHN0LCBzcmMsIGN0eCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XG4gXHRcdGJyZWFrO1xuIFxuIFx0LyogZHN0ID0gZHN0IE9QIGltbSAqL1xuQEAgLTEyMzYsNyAmIzQzOzEyNDUsNyBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LFxuIFx0XHQgKiBzcmMgaXMgaWdub3JlZC0tLWNob29zZSB0bXAyIGFzIGEgZHVtbXkgcmVnaXN0ZXIgc2luY2UgaXRcbiBcdFx0ICogaXMgbm90IG9uIHRoZSBzdGFjay5cbiBcdFx0ICovXG4tXHRcdGVtaXRfYWx1X3IzMihkc3QsIHRtcDIsIGN0eCwgQlBGX09QKGNvZGUpKTtcbiYjNDM7XHRcdGVtaXRfYWx1X3IzMihkc3QsIHRtcDIsIGN0eCwgQlBGX09QKGNvZGUpLCBmYWxzZSk7XG4gXHRcdGJyZWFrO1xuIFxuIFx0LyogZHN0ID0gQlNXQVAjI2ltbShkc3QpICovXG5kaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wNjQuY1xuaW5kZXggNTRiMGQ1ZTI1ZTAyNDYuLmMzMjZmYTczN2VjOGM1IDEwMDY0NFxuLS0tIGEvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXA2NC5jXG5AQCAtNTAyLDE0ICYjNDM7NTAyLDE5IEBAIHN0YXRpYyB2b2lkIGVtaXRfY2FsbCh1NjQgYWRkciwgYm9vbCBmaXhlZCwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eClcbiBcdGVtaXRfaHBwYV9jb3B5KEhQUEFfUkVHX1JFVDAsIHJlZ21hcFtCUEZfUkVHXzBdLCBjdHgpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBlbWl0X2NhbGxfbGliZ2NjX2xsKHZvaWQgKmZ1bmMsIGNvbnN0IHM4IGFyZzAsXG4tXHRcdGNvbnN0IHM4IGFyZzEsIHU4IG9wY29kZSwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eClcbiYjNDM7c3RhdGljIHZvaWQgZW1pdF9jYWxsX2xpYmdjY19sbCh2b2lkICpmdW5jLCBjb25zdCBzOCBhcmcwLCBjb25zdCBzOCBhcmcxLFxuJiM0MztcdFx0dTggb3Bjb2RlLCBib29sIGlzX3NpZ25lZCwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eClcbiB7XG4gXHR1NjQgZnVuY19hZGRyO1xuIFxuIFx0aWYgKEJQRl9DTEFTUyhvcGNvZGUpID09IEJQRl9BTFUpIHtcbi1cdFx0ZW1pdF9ocHBhNjRfemV4dDMyKGFyZzAsIEhQUEFfUkVHX0FSRzAsIGN0eCk7XG4tXHRcdGVtaXRfaHBwYTY0X3pleHQzMihhcmcxLCBIUFBBX1JFR19BUkcxLCBjdHgpO1xuJiM0MztcdFx0aWYgKGlzX3NpZ25lZCkge1xuJiM0MztcdFx0XHRlbWl0X2hwcGE2NF9zZXh0MzIoYXJnMCwgSFBQQV9SRUdfQVJHMCwgY3R4KTtcbiYjNDM7XHRcdFx0ZW1pdF9ocHBhNjRfc2V4dDMyKGFyZzEsIEhQUEFfUkVHX0FSRzEsIGN0eCk7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRlbWl0X2hwcGE2NF96ZXh0MzIoYXJnMCwgSFBQQV9SRUdfQVJHMCwgY3R4KTtcbiYjNDM7XHRcdFx0ZW1pdF9ocHBhNjRfemV4dDMyKGFyZzEsIEhQUEFfUkVHX0FSRzEsIGN0eCk7XG4mIzQzO1x0XHR9XG4gXHR9IGVsc2Uge1xuIFx0XHRlbWl0X2hwcGFfY29weShhcmcwLCBIUFBBX1JFR19BUkcwLCBjdHgpO1xuIFx0XHRlbWl0X2hwcGFfY29weShhcmcxLCBIUFBBX1JFR19BUkcxLCBjdHgpO1xuQEAgLTYwMCw2ICYjNDM7NjA1LDggQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCxcbiBcdHU4IHJkID0gLTEsIHJzID0gLTEsIGNvZGUgPSBpbnNuLVx1MDAzZWNvZGU7XG4gXHRzMTYgb2ZmID0gaW5zbi1cdTAwM2VvZmY7XG4gXHRzMzIgaW1tID0gaW5zbi1cdTAwM2VpbW07XG4mIzQzO1x0Ym9vbCBpc19zaWduZWQ7XG4mIzQzO1x0dm9pZCAqZnVuYztcbiBcbiBcdGluaXRfcmVncyhcdTAwMjZyZCwgXHUwMDI2cnMsIGluc24sIGN0eCk7XG4gXG5AQCAtNjU2LDI5ICYjNDM7NjYzLDM5IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsXG4gXHRcdGZhbGx0aHJvdWdoO1xuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX1g6XG4tXHRcdGVtaXRfY2FsbF9saWJnY2NfbGwoX19tdWxkaTMsIHJkLCBycywgY29kZSwgY3R4KTtcbiYjNDM7XHRcdGVtaXRfY2FsbF9saWJnY2NfbGwoX19tdWxkaTMsIHJkLCBycywgY29kZSwgZmFsc2UsIGN0eCk7XG4gXHRcdGlmICghaXM2NCBcdTAwMjZcdTAwMjYgIWF1eC1cdTAwM2V2ZXJpZmllcl96ZXh0KVxuIFx0XHRcdGVtaXRfemV4dF8zMihyZCwgY3R4KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfSzpcbi1cdFx0ZW1pdF9pbW0oSFBQQV9SRUdfVDEsIGlzNjQgPyAoczY0KShzMzIpaW1tIDogKHUzMilpbW0sIEhQUEFfUkVHX1QyLCBjdHgpO1xuJiM0MztcdFx0aXNfc2lnbmVkID0gKG9mZiA9PSAxKTtcbiYjNDM7XHRcdGVtaXRfaW1tKEhQUEFfUkVHX1QxLFxuJiM0MztcdFx0XHQgaXM2NCB8fCBpc19zaWduZWQgPyAoczY0KShzMzIpaW1tIDogKHUzMilpbW0sXG4mIzQzO1x0XHRcdCBIUFBBX1JFR19UMiwgY3R4KTtcbiBcdFx0cnMgPSBIUFBBX1JFR19UMTtcbiBcdFx0ZmFsbHRocm91Z2g7XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfWDpcbi1cdFx0ZW1pdF9jYWxsX2xpYmdjY19sbChcdTAwMjZocHBhX2RpdjY0LCByZCwgcnMsIGNvZGUsIGN0eCk7XG4mIzQzO1x0XHRpc19zaWduZWQgPSAob2ZmID09IDEpO1xuJiM0MztcdFx0ZnVuYyA9IGlzX3NpZ25lZCA/IFx1MDAyNmhwcGFfc2RpdjY0IDogXHUwMDI2aHBwYV9kaXY2NDtcbiYjNDM7XHRcdGVtaXRfY2FsbF9saWJnY2NfbGwoZnVuYywgcmQsIHJzLCBjb2RlLCBpc19zaWduZWQsIGN0eCk7XG4gXHRcdGlmICghaXM2NCBcdTAwMjZcdTAwMjYgIWF1eC1cdTAwM2V2ZXJpZmllcl96ZXh0KVxuIFx0XHRcdGVtaXRfemV4dF8zMihyZCwgY3R4KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfSzpcbi1cdFx0ZW1pdF9pbW0oSFBQQV9SRUdfVDEsIGlzNjQgPyAoczY0KShzMzIpaW1tIDogKHUzMilpbW0sIEhQUEFfUkVHX1QyLCBjdHgpO1xuJiM0MztcdFx0aXNfc2lnbmVkID0gKG9mZiA9PSAxKTtcbiYjNDM7XHRcdGVtaXRfaW1tKEhQUEFfUkVHX1QxLFxuJiM0MztcdFx0XHQgaXM2NCB8fCBpc19zaWduZWQgPyAoczY0KShzMzIpaW1tIDogKHUzMilpbW0sXG4mIzQzO1x0XHRcdCBIUFBBX1JFR19UMiwgY3R4KTtcbiBcdFx0cnMgPSBIUFBBX1JFR19UMTtcbiBcdFx0ZmFsbHRocm91Z2g7XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfWDpcbi1cdFx0ZW1pdF9jYWxsX2xpYmdjY19sbChcdTAwMjZocHBhX2RpdjY0X3JlbSwgcmQsIHJzLCBjb2RlLCBjdHgpO1xuJiM0MztcdFx0aXNfc2lnbmVkID0gKG9mZiA9PSAxKTtcbiYjNDM7XHRcdGZ1bmMgPSBpc19zaWduZWQgPyBcdTAwMjZocHBhX3NkaXY2NF9yZW0gOiBcdTAwMjZocHBhX2RpdjY0X3JlbTtcbiYjNDM7XHRcdGVtaXRfY2FsbF9saWJnY2NfbGwoZnVuYywgcmQsIHJzLCBjb2RlLCBpc19zaWduZWQsIGN0eCk7XG4gXHRcdGlmICghaXM2NCBcdTAwMjZcdTAwMjYgIWF1eC1cdTAwM2V2ZXJpZmllcl96ZXh0KVxuIFx0XHRcdGVtaXRfemV4dF8zMihyZCwgY3R4KTtcbiBcdFx0YnJlYWs7XG5kaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jIGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jXG5pbmRleCAxNzI3NzAxMzI0NDBkYi4uYTJmOTMyMDJhMmVmOWMgMTAwNjQ0XG4tLS0gYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuY1xuQEAgLTE5MCwzICYjNDM7MTkwLDE3IEBAIHU2NCBocHBhX2RpdjY0X3JlbSh1NjQgZGl2LCB1NjQgZGl2aXNvcilcbiBcdGRpdjY0X3U2NF9yZW0oZGl2LCBkaXZpc29yLCBcdTAwMjZyZW0pO1xuIFx0cmV0dXJuIHJlbTtcbiB9XG4mIzQzO1xuJiM0Mzt1NjQgaHBwYV9zZGl2NjQodTY0IGRpdiwgdTY0IGRpdmlzb3IpXG4mIzQzO3tcbiYjNDM7XHRzNjQgc2RpdiA9IGRpdjY0X3M2NCgoczY0KWRpdiwgKHM2NClkaXZpc29yKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuICh1NjQpc2RpdjtcbiYjNDM7fVxuJiM0MztcbiYjNDM7dTY0IGhwcGFfc2RpdjY0X3JlbSh1NjQgZGl2LCB1NjQgZGl2aXNvcilcbiYjNDM7e1xuJiM0MztcdHM2NCBzZGl2ID0gZGl2NjRfczY0KChzNjQpZGl2LCAoczY0KWRpdmlzb3IpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gKHU2NCkoKHM2NClkaXYgLSBzZGl2ICogKHM2NClkaXZpc29yKTtcbiYjNDM7fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIzOjA4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtocHBhX3NkaXY2NCYjMzQ7LAogICAgJiMzNDtocHBhX3NkaXY2NF9yZW0mIzM0OywKICAgICYjMzQ7ZW1pdF9hbHVfcjY0JiMzNDssCiAgICAmIzM0O2VtaXRfYWx1X3IzMiYjMzQ7LAogICAgJiMzNDtlbWl0X2NhbGxfbGliZ2NjX2xsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3Igc2lnbmVkIGRpdmlzaW9uIGFuZCBtb2R1bG8gb3BlcmF0aW9ucyB0byB0aGUgUEEtUklTQyBCUEYgSklUIGNvbXBpbGVyLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCB3aGVuIHJ1bm5pbmcgQlBGIHByb2dyYW1zIG9uIFBBLVJJU0MgKHdoaWNoIGNhbiBiZSBlbXVsYXRlZCBpbiBRRU1VKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDM5OWRmYmE2YzczNjFlMGM0Y2UwNWY1ZTc5YWJkZGRkYTAyNDNjZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDE3IDIzOjA4OjIzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaCBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0LmgKaW5kZXggOGI4ODk2OTU5ZjA0NDkuLjA3NDExNWM5M2M5MDljIDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0LmgKQEAgLTQ2Nyw2ICYjNDM7NDY3LDggQEAgc3RhdGljIGlubGluZSB1MzIgaHBwYV90MjFfaW5zbih1OCBvcGNvZGUsIHU4IHIyLCB1OCByMSwgdTggZXh0OCwgdTggdCkKIAogdTY0IGhwcGFfZGl2NjQodTY0IGRpdiwgdTY0IGRpdmlzb3IpOwogdTY0IGhwcGFfZGl2NjRfcmVtKHU2NCBkaXYsIHU2NCBkaXZpc29yKTsKJiM0Mzt1NjQgaHBwYV9zZGl2NjQodTY0IGRpdiwgdTY0IGRpdmlzb3IpOwomIzQzO3U2NCBocHBhX3NkaXY2NF9yZW0odTY0IGRpdiwgdTY0IGRpdmlzb3IpOwogCiAvKiBIZWxwZXIgZnVuY3Rpb25zIHRoYXQgZW1pdCBIUFBBIGluc3RydWN0aW9ucyB3aGVuIHBvc3NpYmxlLiAqLwogCmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jCmluZGV4IDVmZjBjZjkyNWZlOTUzLi5lZWEwYTM0YTNiZmVlNyAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMKQEAgLTMyMSw2ICYjNDM7MzIxLDggQEAgc3RhdGljIHZvaWQgYnBmX3B1dF9yZWczMihjb25zdCBzOCAqcmVnLCBjb25zdCBzOCAqc3JjLAogZXh0ZXJuIHZvaWQgJCRtdWxJKHZvaWQpOwogZXh0ZXJuIHZvaWQgJCRkaXZVKHZvaWQpOwogZXh0ZXJuIHZvaWQgJCRyZW1VKHZvaWQpOwomIzQzO2V4dGVybiB2b2lkICQkZGl2SSh2b2lkKTsKJiM0MztleHRlcm4gdm9pZCAkJHJlbUkodm9pZCk7CiAKIHN0YXRpYyB2b2lkIGVtaXRfY2FsbF9taWxsaWNvZGUodm9pZCAqZnVuYywgY29uc3QgczggYXJnMCwKIAkJY29uc3QgczggYXJnMSwgdTggb3Bjb2RlLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4KQpAQCAtNTYyLDEyICYjNDM7NTY0LDE0IEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X2kzMihjb25zdCBzOCAqZHN0LCBzMzIgaW1tLAogfQogCiBzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoY29uc3QgczggKmRzdCwgY29uc3QgczggKnNyYywKLQkJCSBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LCBjb25zdCB1OCBvcCkKJiM0MzsJCQkgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCwgY29uc3QgdTggb3AsCiYjNDM7CQkJIGJvb2wgaXNfc2lnbmVkKQogewogCWNvbnN0IHM4ICp0bXAxID0gcmVnbWFwW1RNUF9SRUdfMV07CiAJY29uc3QgczggKnRtcDIgPSByZWdtYXBbVE1QX1JFR18yXTsKIAljb25zdCBzOCAqcmQ7CiAJY29uc3QgczggKnJzID0gYnBmX2dldF9yZWc2NChzcmMsIHRtcDIsIGN0eCk7CiYjNDM7CXZvaWQgKmZ1bmM7CiAKIAlpZiAob3AgPT0gQlBGX01PVikKIAkJcmQgPSBicGZfZ2V0X3JlZzY0X3JlZihkc3QsIHRtcDEsIGZhbHNlLCBjdHgpOwpAQCAtNjA0LDEwICYjNDM7NjA4LDEyIEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChjb25zdCBzOCAqZHN0LCBjb25zdCBzOCAqc3JjLAogCQllbWl0X2NhbGxfbGliZ2NjX2xsKF9fbXVsZGkzLCByZCwgcnMsIG9wLCBjdHgpOwogCQlicmVhazsKIAljYXNlIEJQRl9ESVY6Ci0JCWVtaXRfY2FsbF9saWJnY2NfbGwoJmFtcDtocHBhX2RpdjY0LCByZCwgcnMsIG9wLCBjdHgpOwomIzQzOwkJZnVuYyA9IGlzX3NpZ25lZCA/ICZhbXA7aHBwYV9zZGl2NjQgOiAmYW1wO2hwcGFfZGl2NjQ7CiYjNDM7CQllbWl0X2NhbGxfbGliZ2NjX2xsKGZ1bmMsIHJkLCBycywgb3AsIGN0eCk7CiAJCWJyZWFrOwogCWNhc2UgQlBGX01PRDoKLQkJZW1pdF9jYWxsX2xpYmdjY19sbCgmYW1wO2hwcGFfZGl2NjRfcmVtLCByZCwgcnMsIG9wLCBjdHgpOwomIzQzOwkJZnVuYyA9IGlzX3NpZ25lZCA/ICZhbXA7aHBwYV9zZGl2NjRfcmVtIDogJmFtcDtocHBhX2RpdjY0X3JlbTsKJiM0MzsJCWVtaXRfY2FsbF9saWJnY2NfbGwoZnVuYywgcmQsIHJzLCBvcCwgY3R4KTsKIAkJYnJlYWs7CiAJY2FzZSBCUEZfTFNIOgogCQllbWl0X2NhbGxfbGliZ2NjX2xsKF9fYXNobGRpMywgcmQsIHJzLCBvcCwgY3R4KTsKQEAgLTYzMCw3ICYjNDM7NjM2LDggQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KGNvbnN0IHM4ICpkc3QsIGNvbnN0IHM4ICpzcmMsCiB9CiAKIHN0YXRpYyB2b2lkIGVtaXRfYWx1X3IzMihjb25zdCBzOCAqZHN0LCBjb25zdCBzOCAqc3JjLAotCQkJIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IG9wKQomIzQzOwkJCSBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LCBjb25zdCB1OCBvcCwKJiM0MzsJCQkgYm9vbCBpc19zaWduZWQpCiB7CiAJY29uc3QgczggKnRtcDEgPSByZWdtYXBbVE1QX1JFR18xXTsKIAljb25zdCBzOCAqdG1wMiA9IHJlZ21hcFtUTVBfUkVHXzJdOwpAQCAtNjY2LDEwICYjNDM7NjczLDEyIEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X3IzMihjb25zdCBzOCAqZHN0LCBjb25zdCBzOCAqc3JjLAogCQllbWl0X2NhbGxfbWlsbGljb2RlKCQkbXVsSSwgbG8ocmQpLCBsbyhycyksIG9wLCBjdHgpOwogCQlicmVhazsKIAljYXNlIEJQRl9ESVY6Ci0JCWVtaXRfY2FsbF9taWxsaWNvZGUoJCRkaXZVLCBsbyhyZCksIGxvKHJzKSwgb3AsIGN0eCk7CiYjNDM7CQllbWl0X2NhbGxfbWlsbGljb2RlKGlzX3NpZ25lZCA/ICQkZGl2SSA6ICQkZGl2VSwKJiM0MzsJCQkJICAgIGxvKHJkKSwgbG8ocnMpLCBvcCwgY3R4KTsKIAkJYnJlYWs7CiAJY2FzZSBCUEZfTU9EOgotCQllbWl0X2NhbGxfbWlsbGljb2RlKCQkcmVtVSwgbG8ocmQpLCBsbyhycyksIG9wLCBjdHgpOwomIzQzOwkJZW1pdF9jYWxsX21pbGxpY29kZShpc19zaWduZWQgPyAkJHJlbUkgOiAkJHJlbVUsCiYjNDM7CQkJCSAgICBsbyhyZCksIGxvKHJzKSwgb3AsIGN0eCk7CiAJCWJyZWFrOwogCWNhc2UgQlBGX0xTSDoKIAkJZW1pdChocHBhX3N1YmkoMHgxZiwgbG8ocnMpLCBIUFBBX1JFR19UMCksIGN0eCk7CkBAIC0xMTYzLDEyICYjNDM7MTE3MiwxMiBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LAogCQkJZW1pdF9pbW0zMih0bXAyLCBpbW0sIGN0eCk7CiAJCQlzcmMgPSB0bXAyOwogCQl9Ci0JCWVtaXRfYWx1X3I2NChkc3QsIHNyYywgY3R4LCBCUEZfT1AoY29kZSkpOwomIzQzOwkJZW1pdF9hbHVfcjY0KGRzdCwgc3JjLCBjdHgsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpOwogCQlicmVhazsKIAogCS8qIGRzdCA9IC1kc3QgKi8KIAljYXNlIEJQRl9BTFU2NCB8IEJQRl9ORUc6Ci0JCWVtaXRfYWx1X3I2NChkc3QsIHRtcDIsIGN0eCwgQlBGX09QKGNvZGUpKTsKJiM0MzsJCWVtaXRfYWx1X3I2NChkc3QsIHRtcDIsIGN0eCwgQlBGX09QKGNvZGUpLCBmYWxzZSk7CiAJCWJyZWFrOwogCiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9WIHwgQlBGX0s6CkBAIC0xMjExLDcgJiM0MzsxMjIwLDcgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCwKIAkJCWVtaXRfaW1tMzIodG1wMiwgaW1tLCBjdHgpOwogCQkJc3JjID0gdG1wMjsKIAkJfQotCQllbWl0X2FsdV9yMzIoZHN0LCBzcmMsIGN0eCwgQlBGX09QKGNvZGUpKTsKJiM0MzsJCWVtaXRfYWx1X3IzMihkc3QsIHNyYywgY3R4LCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTsKIAkJYnJlYWs7CiAKIAkvKiBkc3QgPSBkc3QgT1AgaW1tICovCkBAIC0xMjM2LDcgJiM0MzsxMjQ1LDcgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCwKIAkJICogc3JjIGlzIGlnbm9yZWQtLS1jaG9vc2UgdG1wMiBhcyBhIGR1bW15IHJlZ2lzdGVyIHNpbmNlIGl0CiAJCSAqIGlzIG5vdCBvbiB0aGUgc3RhY2suCiAJCSAqLwotCQllbWl0X2FsdV9yMzIoZHN0LCB0bXAyLCBjdHgsIEJQRl9PUChjb2RlKSk7CiYjNDM7CQllbWl0X2FsdV9yMzIoZHN0LCB0bXAyLCBjdHgsIEJQRl9PUChjb2RlKSwgZmFsc2UpOwogCQlicmVhazsKIAogCS8qIGRzdCA9IEJTV0FQIyNpbW0oZHN0KSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wNjQuYwppbmRleCA1NGIwZDVlMjVlMDI0Ni4uYzMyNmZhNzM3ZWM4YzUgMTAwNjQ0Ci0tLSBhL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXA2NC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXA2NC5jCkBAIC01MDIsMTQgJiM0Mzs1MDIsMTkgQEAgc3RhdGljIHZvaWQgZW1pdF9jYWxsKHU2NCBhZGRyLCBib29sIGZpeGVkLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4KQogCWVtaXRfaHBwYV9jb3B5KEhQUEFfUkVHX1JFVDAsIHJlZ21hcFtCUEZfUkVHXzBdLCBjdHgpOwogfQogCi1zdGF0aWMgdm9pZCBlbWl0X2NhbGxfbGliZ2NjX2xsKHZvaWQgKmZ1bmMsIGNvbnN0IHM4IGFyZzAsCi0JCWNvbnN0IHM4IGFyZzEsIHU4IG9wY29kZSwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCkKJiM0MztzdGF0aWMgdm9pZCBlbWl0X2NhbGxfbGliZ2NjX2xsKHZvaWQgKmZ1bmMsIGNvbnN0IHM4IGFyZzAsIGNvbnN0IHM4IGFyZzEsCiYjNDM7CQl1OCBvcGNvZGUsIGJvb2wgaXNfc2lnbmVkLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4KQogewogCXU2NCBmdW5jX2FkZHI7CiAKIAlpZiAoQlBGX0NMQVNTKG9wY29kZSkgPT0gQlBGX0FMVSkgewotCQllbWl0X2hwcGE2NF96ZXh0MzIoYXJnMCwgSFBQQV9SRUdfQVJHMCwgY3R4KTsKLQkJZW1pdF9ocHBhNjRfemV4dDMyKGFyZzEsIEhQUEFfUkVHX0FSRzEsIGN0eCk7CiYjNDM7CQlpZiAoaXNfc2lnbmVkKSB7CiYjNDM7CQkJZW1pdF9ocHBhNjRfc2V4dDMyKGFyZzAsIEhQUEFfUkVHX0FSRzAsIGN0eCk7CiYjNDM7CQkJZW1pdF9ocHBhNjRfc2V4dDMyKGFyZzEsIEhQUEFfUkVHX0FSRzEsIGN0eCk7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWVtaXRfaHBwYTY0X3pleHQzMihhcmcwLCBIUFBBX1JFR19BUkcwLCBjdHgpOwomIzQzOwkJCWVtaXRfaHBwYTY0X3pleHQzMihhcmcxLCBIUFBBX1JFR19BUkcxLCBjdHgpOwomIzQzOwkJfQogCX0gZWxzZSB7CiAJCWVtaXRfaHBwYV9jb3B5KGFyZzAsIEhQUEFfUkVHX0FSRzAsIGN0eCk7CiAJCWVtaXRfaHBwYV9jb3B5KGFyZzEsIEhQUEFfUkVHX0FSRzEsIGN0eCk7CkBAIC02MDAsNiAmIzQzOzYwNSw4IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsCiAJdTggcmQgPSAtMSwgcnMgPSAtMSwgY29kZSA9IGluc24tJmd0O2NvZGU7CiAJczE2IG9mZiA9IGluc24tJmd0O29mZjsKIAlzMzIgaW1tID0gaW5zbi0mZ3Q7aW1tOwomIzQzOwlib29sIGlzX3NpZ25lZDsKJiM0MzsJdm9pZCAqZnVuYzsKIAogCWluaXRfcmVncygmYW1wO3JkLCAmYW1wO3JzLCBpbnNuLCBjdHgpOwogCkBAIC02NTYsMjkgJiM0Mzs2NjMsMzkgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCwKIAkJZmFsbHRocm91Z2g7CiAJY2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9YOgogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX01VTCB8IEJQRl9YOgotCQllbWl0X2NhbGxfbGliZ2NjX2xsKF9fbXVsZGkzLCByZCwgcnMsIGNvZGUsIGN0eCk7CiYjNDM7CQllbWl0X2NhbGxfbGliZ2NjX2xsKF9fbXVsZGkzLCByZCwgcnMsIGNvZGUsIGZhbHNlLCBjdHgpOwogCQlpZiAoIWlzNjQgJmFtcDsmYW1wOyAhYXV4LSZndDt2ZXJpZmllcl96ZXh0KQogCQkJZW1pdF96ZXh0XzMyKHJkLCBjdHgpOwogCQlicmVhazsKIAljYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX0s6CiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX0s6Ci0JCWVtaXRfaW1tKEhQUEFfUkVHX1QxLCBpczY0ID8gKHM2NCkoczMyKWltbSA6ICh1MzIpaW1tLCBIUFBBX1JFR19UMiwgY3R4KTsKJiM0MzsJCWlzX3NpZ25lZCA9IChvZmYgPT0gMSk7CiYjNDM7CQllbWl0X2ltbShIUFBBX1JFR19UMSwKJiM0MzsJCQkgaXM2NCB8fCBpc19zaWduZWQgPyAoczY0KShzMzIpaW1tIDogKHUzMilpbW0sCiYjNDM7CQkJIEhQUEFfUkVHX1QyLCBjdHgpOwogCQlycyA9IEhQUEFfUkVHX1QxOwogCQlmYWxsdGhyb3VnaDsKIAljYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX1g6CiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX1g6Ci0JCWVtaXRfY2FsbF9saWJnY2NfbGwoJmFtcDtocHBhX2RpdjY0LCByZCwgcnMsIGNvZGUsIGN0eCk7CiYjNDM7CQlpc19zaWduZWQgPSAob2ZmID09IDEpOwomIzQzOwkJZnVuYyA9IGlzX3NpZ25lZCA/ICZhbXA7aHBwYV9zZGl2NjQgOiAmYW1wO2hwcGFfZGl2NjQ7CiYjNDM7CQllbWl0X2NhbGxfbGliZ2NjX2xsKGZ1bmMsIHJkLCBycywgY29kZSwgaXNfc2lnbmVkLCBjdHgpOwogCQlpZiAoIWlzNjQgJmFtcDsmYW1wOyAhYXV4LSZndDt2ZXJpZmllcl96ZXh0KQogCQkJZW1pdF96ZXh0XzMyKHJkLCBjdHgpOwogCQlicmVhazsKIAljYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX0s6CiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX0s6Ci0JCWVtaXRfaW1tKEhQUEFfUkVHX1QxLCBpczY0ID8gKHM2NCkoczMyKWltbSA6ICh1MzIpaW1tLCBIUFBBX1JFR19UMiwgY3R4KTsKJiM0MzsJCWlzX3NpZ25lZCA9IChvZmYgPT0gMSk7CiYjNDM7CQllbWl0X2ltbShIUFBBX1JFR19UMSwKJiM0MzsJCQkgaXM2NCB8fCBpc19zaWduZWQgPyAoczY0KShzMzIpaW1tIDogKHUzMilpbW0sCiYjNDM7CQkJIEhQUEFfUkVHX1QyLCBjdHgpOwogCQlycyA9IEhQUEFfUkVHX1QxOwogCQlmYWxsdGhyb3VnaDsKIAljYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6CiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX1g6Ci0JCWVtaXRfY2FsbF9saWJnY2NfbGwoJmFtcDtocHBhX2RpdjY0X3JlbSwgcmQsIHJzLCBjb2RlLCBjdHgpOwomIzQzOwkJaXNfc2lnbmVkID0gKG9mZiA9PSAxKTsKJiM0MzsJCWZ1bmMgPSBpc19zaWduZWQgPyAmYW1wO2hwcGFfc2RpdjY0X3JlbSA6ICZhbXA7aHBwYV9kaXY2NF9yZW07CiYjNDM7CQllbWl0X2NhbGxfbGliZ2NjX2xsKGZ1bmMsIHJkLCBycywgY29kZSwgaXNfc2lnbmVkLCBjdHgpOwogCQlpZiAoIWlzNjQgJmFtcDsmYW1wOyAhYXV4LSZndDt2ZXJpZmllcl96ZXh0KQogCQkJZW1pdF96ZXh0XzMyKHJkLCBjdHgpOwogCQlicmVhazsKZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuYwppbmRleCAxNzI3NzAxMzI0NDBkYi4uYTJmOTMyMDJhMmVmOWMgMTAwNjQ0Ci0tLSBhL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb3JlLmMKQEAgLTE5MCwzICYjNDM7MTkwLDE3IEBAIHU2NCBocHBhX2RpdjY0X3JlbSh1NjQgZGl2LCB1NjQgZGl2aXNvcikKIAlkaXY2NF91NjRfcmVtKGRpdiwgZGl2aXNvciwgJmFtcDtyZW0pOwogCXJldHVybiByZW07CiB9CiYjNDM7CiYjNDM7dTY0IGhwcGFfc2RpdjY0KHU2NCBkaXYsIHU2NCBkaXZpc29yKQomIzQzO3sKJiM0MzsJczY0IHNkaXYgPSBkaXY2NF9zNjQoKHM2NClkaXYsIChzNjQpZGl2aXNvcik7CiYjNDM7CiYjNDM7CXJldHVybiAodTY0KXNkaXY7CiYjNDM7fQomIzQzOwomIzQzO3U2NCBocHBhX3NkaXY2NF9yZW0odTY0IGRpdiwgdTY0IGRpdmlzb3IpCiYjNDM7ewomIzQzOwlzNjQgc2RpdiA9IGRpdjY0X3M2NCgoczY0KWRpdiwgKHM2NClkaXZpc29yKTsKJiM0MzsKJiM0MzsJcmV0dXJuICh1NjQpKChzNjQpZGl2IC0gc2RpdiAqIChzNjQpZGl2aXNvcik7CiYjNDM7fQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMzowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTM3CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBBLVJJU0MgQlBGIEpJVCBQYXRjaCBBbmFseXNpcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IGFkZHMgc2lnbmVkIGRpdmlzaW9uIGFuZCBtb2R1bG8gc3VwcG9ydCAoYHNkaXZgLCBgc21vZGApIHRvIHRoZSBCUEYgSklUIGNvbXBpbGVyLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBQQS1SSVNDIGFyY2hpdGVjdHVyZS4gVGhlIGNvZGUgY2hhbmdlcyBhcmUgaW4gdGhlIGBhcmNoL3BhcmlzYy9uZXQvYCBkaXJlY3RvcnksIHdoaWNoIG1ha2VzIGl0IGFyY2hpdGVjdHVyZS1zcGVjaWZpYy4gTmF0dXJhbGx5LCBpdCYjMzk7cyBvbmx5IGdvaW5nIHRvIGJlIGNvbXBpbGVkIGlmIHRoZSBrZXJuZWwgaXMgY29uZmlndXJlZCBmb3IgUEEtUklTQy4KCk15IGZpcnN0IHRob3VnaHQgaXMgYWJvdXQgZnV6emluZy4gV2UgdHlwaWNhbGx5IHNlZSBmdXp6aW5nIG9uIHg4Nl82NCwgQVJNNjQsIFJJU0MtViwgYW5kIHRoZSBsaWtlLiBEb2VzIHN5emthbGxlciBldmVuIHRhcmdldCBQQS1SSVNDPyBJIG5lZWQgdG8gY2hlY2suIEV2ZW4gaWYgaXQgZG9lc24mIzM5O3QgKmN1cnJlbnRseSogZnV6eiBQQS1SSVNDLCBpdOKAmXMgc3RpbGwgZ29vZCB0byBoYXZlIHRoZSBjb2RlIHRoZXJlIGZvciBzb21lb25lIHdobyAqZG9lcyogcnVuIGl0IG9uIHRoYXQgYXJjaGl0ZWN0dXJlLiBIb3dldmVyLCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoZSBpbnN0cnVjdGlvbnMgZm9yIGNvZGUgZnV6emluZy4gVGhlcmUgbWlnaHQgYmUgY29kZSBwYXRocyB3aGljaCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEx1Y2tpbHksIFFFTVUgKmRvZXMqIHN1cHBvcnQgUEEtUklTQyBlbXVsYXRpb24gKGBxZW11LXN5c3RlbS1ocHBhYCkuIFNvIHRoYXQmIzM5O3Mgbm90IGEgY29uY2Vybi4KCk5vdyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBuZWNlc3Nhcnkga2VybmVsIGNvbmZpZ3VyYXRpb24uIFdlJiMzOTtsbCBuZWVkIGBDT05GSUdfQlBGX0pJVGAgZm9yIHN1cmUsIGFuZCBvYnZpb3VzbHkgYENPTkZJR19QQVJJU0NgLiBMZXQgbWUganVzdCBkb3VibGUgY2hlY2sgdGhlIEtjb25maWcgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIFBBLVJJU0MgcmVsYXRlZCBkZXRhaWxzIGZvciBgQlBGX0pJVGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjM6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlBGX0pJVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcGFyaXNjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcGFyaXNjL0tjb25maWc9Mj1jb25maWcgUEFSSVNDXG4tLVxuYXJjaC9wYXJpc2MvS2NvbmZpZy03Mi1cdHNlbGVjdCBIQVZFX0FSQ0hfVFJBQ0VIT09LXG5hcmNoL3BhcmlzYy9LY29uZmlnOjczOlx0c2VsZWN0IEhBVkVfRUJQRl9KSVRcbmFyY2gvcGFyaXNjL0tjb25maWc6NzQ6XHRzZWxlY3QgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVFxuYXJjaC9wYXJpc2MvS2NvbmZpZy03NS1cdHNlbGVjdCBIQVZFX1JFR1NfQU5EX1NUQUNLX0FDQ0VTU19BUElcbi0tXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGUtMi1cbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZTozOm9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb3JlLm9cbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZS00LVxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlPTU9aWZlcSAoJChDT05GSUdfNjRCSVQpLHkpXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGU6NjpcdG9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb21wNjQub1xuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlLTctZWxzZVxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlOjg6XHRvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29tcDMyLm9cbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZS05LWVuZGlmXG4tLVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaC04LVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaDo5OiNpZm5kZWYgX0JQRl9KSVRfSFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaDoxMDojZGVmaW5lIF9CUEZfSklUX0hcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtMTEtXG4tLVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaD00Nzg9aW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCxcbi0tXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oLTQ4MC1cbmFyY2gvcGFyaXNjL25ldC9icGZfaml0Lmg6NDgxOiNlbmRpZiAvKiBfQlBGX0pJVF9IICovXG4tLVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMtMzItICogICAgICAgICAgICAgICAgICYjNDM7LS0tLS0tLS0tLSYjNDM7IFx1MDAzYz0gKHNwIC0gNCAqIE5SX1NBVkVEX1JFR0lTVEVSU1xuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmM6MzM6ICogICAgICAgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgLSA0ICogQlBGX0pJVF9TQ1JBVENIX1JFR1MpXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy0zNC0gKiAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8XG4tLVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmM9NDM9ZW51bSB7XG4tLVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMtNTQtXHRCUEZfUjBfVEVNUF9MTyxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jOjU1Olx0QlBGX0pJVF9TQ1JBVENIX1JFR1MsXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy01Ni19O1xuLS1cbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jLTY4LVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmM6Njk6I2RlZmluZSBUTVBfUkVHXzFcdChNQVhfQlBGX0pJVF9SRUcgJiM0MzsgMClcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jOjcwOiNkZWZpbmUgVE1QX1JFR18yXHQoTUFYX0JQRl9KSVRfUkVHICYjNDM7IDEpXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYzo3MTojZGVmaW5lIFRNUF9SRUdfUjBcdChNQVhfQlBGX0pJVF9SRUcgJiM0MzsgMilcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jLTcyLVxuLS1cbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jPTE0NzY9dm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgpXG4tLVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTQ5Ny1cdC8qIG1ha2Ugc3BhY2UgZm9yIEJQRiByZWdpc3RlcnMgb24gc3RhY2suICovXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYzoxNDk4Olx0c3RhY2tfYWRqdXN0ICYjNDM7PSBCUEZfSklUX1NDUkFUQ0hfUkVHUyAqIFJFR19TSVpFO1xuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTQ5OS1cdC8qIG1ha2Ugc3BhY2UgZm9yIEJQRiBzdGFjay4gKi9cbi0tXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xNjEwLVx0XHRpZiAoUkVHX1dBU19TRUVOKGN0eCwgbG8ocmVnKSkpXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYzoxNjExOlx0XHRcdGVtaXQoaHBwYV9sZG8oLVJFR19TSVpFICogKE5SX1NBVkVEX1JFR0lTVEVSUyAmIzQzOyBCUEZfSklUX1NDUkFUQ0hfUkVHUyksXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xNjEyLVx0XHRcdFx0SFBQQV9SRUdfU1AsIGxvKHJlZykpLCBjdHgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIzOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0MzkKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA1MzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQQS1SSVNDIEJQRiBKSVQgQ29tcGlsZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIHRoZSBQQS1SSVNDIGFyY2hpdGVjdHVyZSYjMzk7cyBCUEYgSklUIGNvbXBpbGVyLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBtb2RpZmljYXRpb25zIHRvIGBhcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuY2AsIGBhcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wNjQuY2AsIGFuZCBgYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jYC4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSB0aGUgYWRkaXRpb24gb2YgYGhwcGFfc2RpdjY0YCBhbmQgYGhwcGFfc2RpdjY0X3JlbWAgdG8gYGJwZl9qaXRfY29yZS5jYCwgcGx1cyBzb21lIG1vZGlmaWNhdGlvbnMgaW4gdGhlIDMyLWJpdCBhbmQgNjQtYml0IGNvbXBpbGF0aW9uIGZpbGVzLgoKVGhlIGtleSBmdW5jdGlvbnMgdG8gY29uY2VudHJhdGUgb24gYXJlOiBgYnBmX2ppdF9lbWl0X2luc25gLCBgZW1pdF9hbHVfcjY0YCwgYGVtaXRfYWx1X3IzMmAsIGBlbWl0X2NhbGxfbGliZ2NjX2xsYCwgYGhwcGFfc2RpdjY0YCwgYW5kIGBocHBhX3NkaXY2NF9yZW1gLiBUaGVzZSBhcmUgb2J2aW91c2x5IHdoZXJlIHRoZSBuZXcgY29kZSBvciB0aGUgYWx0ZXJlZCBjb2RlIHJlc2lkZXMuIFRoZSBgQlBGX0pJVGAgY29uZmlnIHNlZW1zIHJlbGV2YW50IGhlcmUsIG5hdHVyYWxseS4KClRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIHdhcnJhbnQgZnV6emluZz8gQWJzb2x1dGVseS4gSXTigJlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEpJVCBjb21waWxlciwgYW5kIHRob3NlIGFyZSBhbHdheXMgZ29vZCB0YXJnZXRzLiBOb3csIHRoZSBwb3RlbnRpYWwgcHJvYmxlbSBpcyB0aGF0IFN5emthbGxlciwgaW4gaXRzIGRlZmF1bHQgc2V0dXAsIGRvZXNuJiMzOTt0IG5hdGl2ZWx5IHN1cHBvcnQgUEEtUklTQyBmdXp6aW5nLiBCdXQsIHdhaXQsIHRoZSBub3RlcyBzcGVjaWZ5IHRoYXQgaXQgKmNhbiogYmUgY29uZmlndXJlZCBpZiBRRU1VIHN1cHBvcnRzIGl0LiBBbmQgaXQgZG9lcy4gR3JlYXQuIEl0IG1lbnRpb25zIHNvbWV0aGluZyBhYm91dCAmIzM0O2ltcG9zc2libGUgY29kZSBwYXRocyYjMzQ7IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBidXQgc2luY2UgUUVNVSBzdXBwb3J0cyBQQS1SSVNDLCB0aGlzIHNob3VsZG4mIzM5O3QgYmUgYSBwcm9ibGVtLgoKTm93LCB3aGljaCBmdW5jdGlvbiBpcyB0aGUgYmVzdCB0byBmb2N1cyBvbj8gYGJwZl9qaXRfZW1pdF9pbnNuYCBpcyBhIGJpdCBnZW5lcmljIGZvciB0aGUgSklUIGNvbXBpbGVyLCBidXQgaXQmIzM5O3Mgd2hlcmUgdGhlIGNoYW5nZXMgb2NjdXIgc28gaXQmIzM5O3MgcHJvYmFibHkgaW1wb3J0YW50LiBgZW1pdF9hbHVfcjY0YCBhbmQgYGVtaXRfYWx1X3IzMmAgYWxzbyBzb3VuZCBsaWtlIGdvb2QgY2FuZGlkYXRlcyB0byBsb29rIGF0LiBBbmQgYGhwcGFfc2RpdjY0YCBhbmQgYGhwcGFfc2RpdjY0X3JlbWAgc291bmQgbGlrZSBnb2xkLWxldmVsIHRhcmdldGVkIGZ1bmN0aW9ucyBiZWNhdXNlIHRoZXkgYXJlIHF1aXRlIHNwZWNpZmljLgoKSSBuZWVkIHRvIG5haWwgZG93biB0aGUgZXhhY3Qgc2lnbmF0dXJlIG9mIGBicGZfaml0X2VtaXRfaW5zbmAgaW4gYGFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXA2NC5jYCwgdG8gdW5kZXJzdGFuZCBpdHMgaW5wdXRzIGFuZCBvdXRwdXRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIzOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9qaXRfZW1pdF9pbnNuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmM9NTU5PXN0YXRpYyB2b2lkIGVtaXRfc3RvcmUoY29uc3QgczggcmQsIGNvbnN0IHM4IHJzLCBzMTYgb2ZmLFxuLS1cbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXA2NC5jLTU5Ni1cbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXA2NC5jOjU5NzppbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmMtNTk4LVx0XHQgICAgICBib29sIGV4dHJhX3Bhc3MpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjM6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODczNwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQQS1SSVNDIEpJVCBDb21waWxhdGlvbiBmb3IgNjQtYml0IERpdmlzaW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIDY0LWJpdCBkaXZpc2lvbiBpbXBsZW1lbnRhdGlvbiB3aXRoaW4gdGhpcyBQQS1SSVNDIEpJVCBjb21waWxlci4gSSBrbm93IGhvdyBjcml0aWNhbCBlZmZpY2llbnQgZGl2aXNpb24gaXMgaW4gYW55IEJQRiBjb250ZXh0LCBhbmQgSSYjMzk7bSBndWVzc2luZyB0aGVyZSYjMzk7cyBwb3RlbnRpYWwgZm9yIG9wdGltaXphdGlvbiBoZXJlLiBNeSBpbW1lZGlhdGUgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlc2Ugc3BlY2lmaWMgZnVuY3Rpb25zOiBgaHBwYV9zZGl2NjRgLCBgaHBwYV9zZGl2NjRfcmVtYCwgYGVtaXRfYWx1X3I2NGAsIGBlbWl0X2FsdV9yMzJgLCBhbmQgYGVtaXRfY2FsbF9saWJnY2NfbGxgLiBUaGV5IGFyZSB0aGUgbGlrZWx5IGtleSBwbGF5ZXJzIGluIGhvdyB0aGlzIGFyY2hpdGVjdHVyZSBoYW5kbGVzIHNpZ25lZCA2NC1iaXQgZGl2aXNpb24uCgpSaWdodCwgc28gd2hlcmUmIzM5O3MgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQ/IEdpdmVuIHRoZSBjb250ZXh0LCB0aGUgZnVuY3Rpb24gYGVtaXRfYWx1X3I2NGAgbG9va3MgbGlrZSBhIGdvb2QganVtcGluZy1vZmYgcG9pbnQuIEl04oCZcyBwcm9iYWJseSB0aGUgbG93ZXItbGV2ZWwgZnVuY3Rpb24gdGhhdCBlbWl0cyB0aGUgYWN0dWFsIEFMVSBpbnN0cnVjdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYGFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIHZpZXcgb24gaG93IDY0LWJpdCBkaXZpc2lvbiBpcyBiZWluZyBsb3dlcmVkIGludG8gdGhlIElTQS4gTGV04oCZcyBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBnb2luZyBvbiBpbiB0aGVyZS4uLiBJJiMzOTttIGV4cGVjdGluZyB0aGlzIHRvIHNoZWQgbGlnaHQgb24gd2hldGhlciBvciBub3QgdGhleSBhcmUgdXNpbmcgZGlyZWN0IGluc3RydWN0aW9ucywgbGlicmFyeSBjYWxscywgb3Igc29tZSBjb21iaW5hdGlvbiBvZiB0aGUgdHdvLiBVbmRlcnN0YW5kaW5nIHRoYXQgcXVpY2tseSB3aWxsIGJlIGNydWNpYWwgdG8gZnVydGhlciBhbmFseXNpcyBhbmQgcG90ZW50aWFsIG9wdGltaXphdGlvbiwgYXMgd2VsbCBhcyBmaW5kaW5nIGFyZWFzIHdoZXJlIHRoaXMgY291bGQgYmUgaW5saW5lZCBmb3IgZWZmaWNpZW5jeSBvciBwb3RlbnRpYWxseSBpbXByb3ZlZCB2aWEgaW5zdHJ1Y3Rpb24gc2VsZWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIzOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VtaXRfYWx1X3I2NCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jPTUxMT1zdGF0aWMgdm9pZCBlbWl0X2FsdV9pMzIoY29uc3QgczggKmRzdCwgczMyIGltbSxcbi0tXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy01NjUtXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYzo1NjY6c3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KGNvbnN0IHM4ICpkc3QsIGNvbnN0IHM4ICpzcmMsXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy01NjctXHRcdFx0IHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IG9wLFxuLS1cbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jPTExMjU9aW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCxcbi0tXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xMTc0LVx0XHR9XG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYzoxMTc1Olx0XHRlbWl0X2FsdV9yNjQoZHN0LCBzcmMsIGN0eCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xMTc2LVx0XHRicmVhaztcbi0tXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xMTc5LVx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTkVHOlxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmM6MTE4MDpcdFx0ZW1pdF9hbHVfcjY0KGRzdCwgdG1wMiwgY3R4LCBCUEZfT1AoY29kZSksIGZhbHNlKTtcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jLTExODEtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIzOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2NTIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIFJlcXVpcmVtZW50cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIEluaXRpYWxseSwgSSBzYXcgYEJQRl9KSVRgIGFuZCBgUEFSSVNDYCBsaXN0ZWQuIEhvbGQgb24gYSBzZWNvbmQsIHRoYXQgZG9lc24mIzM5O3QgbWFrZSBzZW5zZS4gYFBBUklTQ2AgaXMgYW4gKmFyY2hpdGVjdHVyZSosIG5vdCBhIGNvbmZpZ3VyYWJsZSBvcHRpb24geW91IHRvZ2dsZSBvbiBvciBvZmYgaW4gYSBjb25maWd1cmF0aW9uIGZpbGUgbGlrZSBhIGAuY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gYmUgbW9yZSBwcmVjaXNlIGhlcmUuIEkgc2hvdWxkIGp1c3QgbGlzdCBgQlBGX0pJVGAgc2luY2UgdGhhdCYjMzk7cyBhIGxlZ2l0aW1hdGUgY29uZmlndXJhdGlvbiBzZXR0aW5nLgoKSG1tLCBidXQgd2FpdCwgdGhlIGluc3RydWN0aW9ucyBhcmUgcXVpdGUgY2xlYXI6ICYjMzQ7RG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0IHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4mIzM0OyBJcyBgQlBGX0pJVGAgc3BlY2lmaWMgKmVub3VnaCo/IFdlbGwsIGNvbnNpZGVyaW5nIHRoaXMgaXMgcmVsYXRlZCB0byBCUEYgSklUIGNvZGUsIHllYWgsIGl0IHNlZW1zIGFwcHJvcHJpYXRlbHkgdGFyZ2V0ZWQuIEl0JiMzOTtzIG5vdCBzb21ldGhpbmcgYnJvYWRseSBlbmFibGVkIGFjcm9zcyBldmVyeSBzeXN0ZW0uIEl0JiMzOTtzIGRpcmVjdGx5IHRpZWQgdG8gdGhlIEpJVCBmdW5jdGlvbmFsaXR5LgoKTm93LCBhIHF1aWNrIHNhbml0eSBjaGVjay4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgQlBGX0pJVGAgaXNuJiMzOTt0IGFscmVhZHkgZW5hYmxlZCBieSBkZWZhdWx0IGluIHN5emJvdC4gSXQgdXN1YWxseSBpcywgYnV0IEkgc2hvdWxkIGxpc3QgaXQgYW55d2F5IHRvIGJlIGV4dHJhIHN1cmUgdGhlIGludGVudGlvbiBpcyB1bmRlcnN0b29kLiBBbHdheXMgZ29vZCB0byBiZSBleHBsaWNpdC4KClJpZ2h0LCBJJiMzOTtsbCBnbyB0aHJvdWdoIHRoZSBjb25maWd1cmF0aW9ucyBhZ2FpbiB0byBjaGVjayBmb3IgYW55IG90aGVyIG9uZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIzOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3BhcmlzYy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcGFyaXNjL25ldC9NYWtlZmlsZS0yLVxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvcmUub1xuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlLTQtXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGU6NTppZmVxICgkKENPTkZJR182NEJJVCkseSlcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZTo2Olx0b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXA2NC5vXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGUtNy1lbHNlXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGU6ODpcdG9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb21wMzIub1xuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlLTktZW5kaWZcbi0tXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oPTI1PWVudW0ge1xuLS1cbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtNDQtXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oOjQ1OiNpZmRlZiBDT05GSUdfNjRCSVRcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtNDYtXHRIUFBBX1JFR19UQ0NcdCAgICAgPSAzLFxuLS1cbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtNTctXHRIUFBBX1JFR19UMiA9XHRIUFBBX1JFR19BUkc0LFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaDo1ODojaWZuZGVmIENPTkZJR182NEJJVFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaC01OS1cdEhQUEFfUkVHX1QzID1cdEhQUEFfUkVHX0FSRzUsXHQvKiBub3QgdXNlZCBpbiA2NC1iaXQgKi9cbi0tXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oPTY1PXN0cnVjdCBocHBhX2ppdF9jb250ZXh0IHtcbi0tXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oLTE4MC0jZGVmaW5lIGhwcGFfY29tYnQocjEsIHIyLCB0YXJnZXRfYWRkciwgY29uZGl0aW9uLCBub3ApIFxcXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oOjE4MTpcdGhwcGFfdDExX2luc24oSVNfRU5BQkxFRChDT05GSUdfNjRCSVQpID8gMHgyNyA6IDB4MjAsIFxcXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oLTE4Mi1cdFx0cjIsIHIxLCBjb25kaXRpb24sIHRhcmdldF9hZGRyLCBub3ApXHRcdC8qIGNvbWJ0LGNvbmQsbiByMSxyMixhZGRyICovXG4tLVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaC0xOTQtI2RlZmluZSBocHBhX2NvbWJmKHIxLCByMiwgdGFyZ2V0X2FkZHIsIGNvbmRpdGlvbiwgbm9wKSBcXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaDoxOTU6XHRocHBhX3QxMV9pbnNuKElTX0VOQUJMRUQoQ09ORklHXzY0QklUKSA/IDB4MmYgOiAweDIyLCBcXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaC0xOTYtXHRcdHIyLCByMSwgY29uZGl0aW9uLCB0YXJnZXRfYWRkciwgbm9wKVx0XHQvKiBjb21iZixjb25kLG4gcjEscjIsYWRkciAqL1xuLS1cbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtMjA4LS8qIDY0LWJpdCBpbnN0cnVjdGlvbnMgKi9cbmFyY2gvcGFyaXNjL25ldC9icGZfaml0Lmg6MjA5OiNpZmRlZiBDT05GSUdfNjRCSVRcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtMjEwLSNkZWZpbmUgaHBwYTY0X2xkZF9yZWcocmVnLCBiLCB0YXJnZXQpIFxcXG4tLVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaD0zNjU9c3RhdGljIGlubGluZSB1bnNpZ25lZCByZV9hc3NlbWJsZV8xNCh1bnNpZ25lZCBhczE0KVxuLS1cbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtMzcwLVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaDozNzE6I2lmZGVmIENPTkZJR182NEJJVFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaC0zNzItc3RhdGljIGlubGluZSB1bnNpZ25lZCByZV9hc3NlbWJsZV8xNih1bnNpZ25lZCBhczE2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMzowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTAzNgoJCQkJCQkJb3V0cHV0OiAxNDQKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUEEtUklTQyBCUEYgSklUIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgUEEtUklTQyBhcmNoaXRlY3R1cmUmIzM5O3MgQlBGIEpJVCBjb21waWxlci4gV2hpbGUgYDY0QklUYCBpcyAqdGVjaG5pY2FsbHkqIHJlbGV2YW50IGR1ZSB0byBpdHMgZ2VuZXJhbCBuYXR1cmUsIHRoZSBjb3JlIG9mIHRoaXMgaXMgZGVmaW5pdGVseSBgQlBGX0pJVGAuIFRoYXQmIzM5O3MgdGhlIG9uZSBJIG5lZWQgdG8gZm9jdXMgb24uCgpMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIGNsZWFybHkuIFRoaXMgcGF0Y2ggaXMgYWJzb2x1dGVseSB3b3J0aCBmdXp6aW5nIOKAkyBgV29ydGhGdXp6aW5nOiB0cnVlYC4gVGhlIHJlYXNvbiBpcyBzb2xpZDogSXQmIzM5O3MgaW50cm9kdWNpbmcgbmV3IHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgd2l0aGluIHRoZSBQQS1SSVNDIEJQRiBKSVQgY29tcGlsZXIuIFRoaXMgaXMgYXJjaGl0ZWN0dXJhbCBmdW5jdGlvbmFsaXR5IHRoYXQmIzM5O3Mgc3BlY2lmaWMgdG8gUEEtUklTQywgYW5kIGNyaXRpY2FsbHksICpyZWFjaGFibGUqIHdoZW4gcnVubmluZyBCUEYgcHJvZ3JhbXMgb24gdGhhdCBhcmNoaXRlY3R1cmUuIFRoZSBmYWN0IHRoYXQgUEEtUklTQyBjYW4gYmUgZW11bGF0ZWQgdXNpbmcgUUVNVSBpcyBhIGh1Z2UgYm9udXMsIG1lYW5pbmcgdGVzdGluZyB0aGlzIGlzIGNvbXBsZXRlbHkgZmVhc2libGUuCgpUaGUgZnVuY3Rpb25zIEkgbmVlZCB0byB0YXJnZXQgZm9yIGRlZXAgZGl2ZXMgYXJlOiBgaHBwYV9zZGl2NjRgLCBgaHBwYV9zZGl2NjRfcmVtYCwgYGVtaXRfYWx1X3I2NGAsIGBlbWl0X2FsdV9yMzJgLCBhbmQgYGVtaXRfY2FsbF9saWJnY2NfbGxgLiBUaGVzZSBhcmUgdGhlIGtleSBzeW1ib2xzLCBhcyB0aGV5IGFyZSBsaWtlbHkgd2hlcmUgdGhlIG5ldyBvcGVyYXRpb25zIGFyZSBpbXBsZW1lbnRlZC4gQW5kIHRoZSBlbmFibGluZyBjb25maWcsIHRoZSBvbmUgdGhhdCBtYWtlcyB0aGlzIGFsbCBwb3NzaWJsZSwgaXMgYEJQRl9KSVRgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMzowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hwcGFfc2RpdjY0JiMzNDssCiAgICAmIzM0O2hwcGFfc2RpdjY0X3JlbSYjMzQ7LAogICAgJiMzNDtlbWl0X2FsdV9yNjQmIzM0OywKICAgICYjMzQ7ZW1pdF9hbHVfcjMyJiMzNDssCiAgICAmIzM0O2VtaXRfY2FsbF9saWJnY2NfbGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zIHRvIHRoZSBQQS1SSVNDIEJQRiBKSVQgY29tcGlsZXIuIFRoaXMgaXMgZnVuY3Rpb25hbCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSB0aGF0IGNhbiBiZSByZWFjaGVkIHdoZW4gcnVubmluZyBCUEYgcHJvZ3JhbXMgb24gUEEtUklTQyAod2hpY2ggY2FuIGJlIGVtdWxhdGVkIGluIFFFTVUpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aHBwYV9zZGl2NjQmIzM0OywKICAgICYjMzQ7aHBwYV9zZGl2NjRfcmVtJiMzNDssCiAgICAmIzM0O2VtaXRfYWx1X3I2NCYjMzQ7LAogICAgJiMzNDtlbWl0X2FsdV9yMzImIzM0OywKICAgICYjMzQ7ZW1pdF9jYWxsX2xpYmdjY19sbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgdG8gdGhlIFBBLVJJU0MgQlBGIEpJVCBjb21waWxlci4gVGhpcyBpcyBmdW5jdGlvbmFsIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgd2hlbiBydW5uaW5nIEJQRiBwcm9ncmFtcyBvbiBQQS1SSVNDICh3aGljaCBjYW4gYmUgZW11bGF0ZWQgaW4gUUVNVSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xN1QyMzowODoyNS4xOTg1NjQwNzdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODg4MTU2NTc0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaHBwYV9zZGl2NjRcIixcbiAgICBcImhwcGFfc2RpdjY0X3JlbVwiLFxuICAgIFwiZW1pdF9hbHVfcjY0XCIsXG4gICAgXCJlbWl0X2FsdV9yMzJcIixcbiAgICBcImVtaXRfY2FsbF9saWJnY2NfbGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgdG8gdGhlIFBBLVJJU0MgQlBGIEpJVCBjb21waWxlci4gVGhpcyBpcyBmdW5jdGlvbmFsIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgd2hlbiBydW5uaW5nIEJQRiBwcm9ncmFtcyBvbiBQQS1SSVNDICh3aGljaCBjYW4gYmUgZW11bGF0ZWQgaW4gUUVNVSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIzOjA4OjI1LjE5ODU3MTU3N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEwODEwMzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNDM5OWRmYmE2YzczNjFlMGM0Y2UwNWY1ZTc5YWJkZGRkYTAyNDNjZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAxNyAyMzowODoyMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oIGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaFxcbmluZGV4IDhiODg5Njk1OWYwNDQ5Li4wNzQxMTVjOTNjOTA5YyAxMDA2NDRcXG4tLS0gYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oXFxuKysrIGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaFxcbkBAIC00NjcsNiArNDY3LDggQEAgc3RhdGljIGlubGluZSB1MzIgaHBwYV90MjFfaW5zbih1OCBvcGNvZGUsIHU4IHIyLCB1OCByMSwgdTggZXh0OCwgdTggdClcXG4gXFxuIHU2NCBocHBhX2RpdjY0KHU2NCBkaXYsIHU2NCBkaXZpc29yKTtcXG4gdTY0IGhwcGFfZGl2NjRfcmVtKHU2NCBkaXYsIHU2NCBkaXZpc29yKTtcXG4rdTY0IGhwcGFfc2RpdjY0KHU2NCBkaXYsIHU2NCBkaXZpc29yKTtcXG4rdTY0IGhwcGFfc2RpdjY0X3JlbSh1NjQgZGl2LCB1NjQgZGl2aXNvcik7XFxuIFxcbiAvKiBIZWxwZXIgZnVuY3Rpb25zIHRoYXQgZW1pdCBIUFBBIGluc3RydWN0aW9ucyB3aGVuIHBvc3NpYmxlLiAqL1xcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMgYi9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuY1xcbmluZGV4IDVmZjBjZjkyNWZlOTUzLi5lZWEwYTM0YTNiZmVlNyAxMDA2NDRcXG4tLS0gYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuY1xcbisrKyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jXFxuQEAgLTMyMSw2ICszMjEsOCBAQCBzdGF0aWMgdm9pZCBicGZfcHV0X3JlZzMyKGNvbnN0IHM4ICpyZWcsIGNvbnN0IHM4ICpzcmMsXFxuIGV4dGVybiB2b2lkICQkbXVsSSh2b2lkKTtcXG4gZXh0ZXJuIHZvaWQgJCRkaXZVKHZvaWQpO1xcbiBleHRlcm4gdm9pZCAkJHJlbVUodm9pZCk7XFxuK2V4dGVybiB2b2lkICQkZGl2SSh2b2lkKTtcXG4rZXh0ZXJuIHZvaWQgJCRyZW1JKHZvaWQpO1xcbiBcXG4gc3RhdGljIHZvaWQgZW1pdF9jYWxsX21pbGxpY29kZSh2b2lkICpmdW5jLCBjb25zdCBzOCBhcmcwLFxcbiBcXHRcXHRjb25zdCBzOCBhcmcxLCB1OCBvcGNvZGUsIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgpXFxuQEAgLTU2MiwxMiArNTY0LDE0IEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X2kzMihjb25zdCBzOCAqZHN0LCBzMzIgaW1tLFxcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoY29uc3QgczggKmRzdCwgY29uc3QgczggKnNyYyxcXG4tXFx0XFx0XFx0IHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IG9wKVxcbitcXHRcXHRcXHQgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCwgY29uc3QgdTggb3AsXFxuK1xcdFxcdFxcdCBib29sIGlzX3NpZ25lZClcXG4ge1xcbiBcXHRjb25zdCBzOCAqdG1wMSA9IHJlZ21hcFtUTVBfUkVHXzFdO1xcbiBcXHRjb25zdCBzOCAqdG1wMiA9IHJlZ21hcFtUTVBfUkVHXzJdO1xcbiBcXHRjb25zdCBzOCAqcmQ7XFxuIFxcdGNvbnN0IHM4ICpycyA9IGJwZl9nZXRfcmVnNjQoc3JjLCB0bXAyLCBjdHgpO1xcbitcXHR2b2lkICpmdW5jO1xcbiBcXG4gXFx0aWYgKG9wID09IEJQRl9NT1YpXFxuIFxcdFxcdHJkID0gYnBmX2dldF9yZWc2NF9yZWYoZHN0LCB0bXAxLCBmYWxzZSwgY3R4KTtcXG5AQCAtNjA0LDEwICs2MDgsMTIgQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KGNvbnN0IHM4ICpkc3QsIGNvbnN0IHM4ICpzcmMsXFxuIFxcdFxcdGVtaXRfY2FsbF9saWJnY2NfbGwoX19tdWxkaTMsIHJkLCBycywgb3AsIGN0eCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJQRl9ESVY6XFxuLVxcdFxcdGVtaXRfY2FsbF9saWJnY2NfbGwoXFx1MDAyNmhwcGFfZGl2NjQsIHJkLCBycywgb3AsIGN0eCk7XFxuK1xcdFxcdGZ1bmMgPSBpc19zaWduZWQgPyBcXHUwMDI2aHBwYV9zZGl2NjQgOiBcXHUwMDI2aHBwYV9kaXY2NDtcXG4rXFx0XFx0ZW1pdF9jYWxsX2xpYmdjY19sbChmdW5jLCByZCwgcnMsIG9wLCBjdHgpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCUEZfTU9EOlxcbi1cXHRcXHRlbWl0X2NhbGxfbGliZ2NjX2xsKFxcdTAwMjZocHBhX2RpdjY0X3JlbSwgcmQsIHJzLCBvcCwgY3R4KTtcXG4rXFx0XFx0ZnVuYyA9IGlzX3NpZ25lZCA/IFxcdTAwMjZocHBhX3NkaXY2NF9yZW0gOiBcXHUwMDI2aHBwYV9kaXY2NF9yZW07XFxuK1xcdFxcdGVtaXRfY2FsbF9saWJnY2NfbGwoZnVuYywgcmQsIHJzLCBvcCwgY3R4KTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQlBGX0xTSDpcXG4gXFx0XFx0ZW1pdF9jYWxsX2xpYmdjY19sbChfX2FzaGxkaTMsIHJkLCBycywgb3AsIGN0eCk7XFxuQEAgLTYzMCw3ICs2MzYsOCBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoY29uc3QgczggKmRzdCwgY29uc3QgczggKnNyYyxcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgZW1pdF9hbHVfcjMyKGNvbnN0IHM4ICpkc3QsIGNvbnN0IHM4ICpzcmMsXFxuLVxcdFxcdFxcdCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LCBjb25zdCB1OCBvcClcXG4rXFx0XFx0XFx0IHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IG9wLFxcbitcXHRcXHRcXHQgYm9vbCBpc19zaWduZWQpXFxuIHtcXG4gXFx0Y29uc3QgczggKnRtcDEgPSByZWdtYXBbVE1QX1JFR18xXTtcXG4gXFx0Y29uc3QgczggKnRtcDIgPSByZWdtYXBbVE1QX1JFR18yXTtcXG5AQCAtNjY2LDEwICs2NzMsMTIgQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfcjMyKGNvbnN0IHM4ICpkc3QsIGNvbnN0IHM4ICpzcmMsXFxuIFxcdFxcdGVtaXRfY2FsbF9taWxsaWNvZGUoJCRtdWxJLCBsbyhyZCksIGxvKHJzKSwgb3AsIGN0eCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJQRl9ESVY6XFxuLVxcdFxcdGVtaXRfY2FsbF9taWxsaWNvZGUoJCRkaXZVLCBsbyhyZCksIGxvKHJzKSwgb3AsIGN0eCk7XFxuK1xcdFxcdGVtaXRfY2FsbF9taWxsaWNvZGUoaXNfc2lnbmVkID8gJCRkaXZJIDogJCRkaXZVLFxcbitcXHRcXHRcXHRcXHQgICAgbG8ocmQpLCBsbyhycyksIG9wLCBjdHgpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCUEZfTU9EOlxcbi1cXHRcXHRlbWl0X2NhbGxfbWlsbGljb2RlKCQkcmVtVSwgbG8ocmQpLCBsbyhycyksIG9wLCBjdHgpO1xcbitcXHRcXHRlbWl0X2NhbGxfbWlsbGljb2RlKGlzX3NpZ25lZCA/ICQkcmVtSSA6ICQkcmVtVSxcXG4rXFx0XFx0XFx0XFx0ICAgIGxvKHJkKSwgbG8ocnMpLCBvcCwgY3R4KTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQlBGX0xTSDpcXG4gXFx0XFx0ZW1pdChocHBhX3N1YmkoMHgxZiwgbG8ocnMpLCBIUFBBX1JFR19UMCksIGN0eCk7XFxuQEAgLTExNjMsMTIgKzExNzIsMTIgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCxcXG4gXFx0XFx0XFx0ZW1pdF9pbW0zMih0bXAyLCBpbW0sIGN0eCk7XFxuIFxcdFxcdFxcdHNyYyA9IHRtcDI7XFxuIFxcdFxcdH1cXG4tXFx0XFx0ZW1pdF9hbHVfcjY0KGRzdCwgc3JjLCBjdHgsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfYWx1X3I2NChkc3QsIHNyYywgY3R4LCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcbiBcXHQvKiBkc3QgPSAtZHN0ICovXFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX05FRzpcXG4tXFx0XFx0ZW1pdF9hbHVfcjY0KGRzdCwgdG1wMiwgY3R4LCBCUEZfT1AoY29kZSkpO1xcbitcXHRcXHRlbWl0X2FsdV9yNjQoZHN0LCB0bXAyLCBjdHgsIEJQRl9PUChjb2RlKSwgZmFsc2UpO1xcbiBcXHRcXHRicmVhaztcXG4gXFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PViB8IEJQRl9LOlxcbkBAIC0xMjExLDcgKzEyMjAsNyBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LFxcbiBcXHRcXHRcXHRlbWl0X2ltbTMyKHRtcDIsIGltbSwgY3R4KTtcXG4gXFx0XFx0XFx0c3JjID0gdG1wMjtcXG4gXFx0XFx0fVxcbi1cXHRcXHRlbWl0X2FsdV9yMzIoZHN0LCBzcmMsIGN0eCwgQlBGX09QKGNvZGUpKTtcXG4rXFx0XFx0ZW1pdF9hbHVfcjMyKGRzdCwgc3JjLCBjdHgsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFxuIFxcdC8qIGRzdCA9IGRzdCBPUCBpbW0gKi9cXG5AQCAtMTIzNiw3ICsxMjQ1LDcgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCxcXG4gXFx0XFx0ICogc3JjIGlzIGlnbm9yZWQtLS1jaG9vc2UgdG1wMiBhcyBhIGR1bW15IHJlZ2lzdGVyIHNpbmNlIGl0XFxuIFxcdFxcdCAqIGlzIG5vdCBvbiB0aGUgc3RhY2suXFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRlbWl0X2FsdV9yMzIoZHN0LCB0bXAyLCBjdHgsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfYWx1X3IzMihkc3QsIHRtcDIsIGN0eCwgQlBGX09QKGNvZGUpLCBmYWxzZSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXG4gXFx0LyogZHN0ID0gQlNXQVAjI2ltbShkc3QpICovXFxuZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG5pbmRleCA1NGIwZDVlMjVlMDI0Ni4uYzMyNmZhNzM3ZWM4YzUgMTAwNjQ0XFxuLS0tIGEvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG4rKysgYi9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wNjQuY1xcbkBAIC01MDIsMTQgKzUwMiwxOSBAQCBzdGF0aWMgdm9pZCBlbWl0X2NhbGwodTY0IGFkZHIsIGJvb2wgZml4ZWQsIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgpXFxuIFxcdGVtaXRfaHBwYV9jb3B5KEhQUEFfUkVHX1JFVDAsIHJlZ21hcFtCUEZfUkVHXzBdLCBjdHgpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBlbWl0X2NhbGxfbGliZ2NjX2xsKHZvaWQgKmZ1bmMsIGNvbnN0IHM4IGFyZzAsXFxuLVxcdFxcdGNvbnN0IHM4IGFyZzEsIHU4IG9wY29kZSwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eClcXG4rc3RhdGljIHZvaWQgZW1pdF9jYWxsX2xpYmdjY19sbCh2b2lkICpmdW5jLCBjb25zdCBzOCBhcmcwLCBjb25zdCBzOCBhcmcxLFxcbitcXHRcXHR1OCBvcGNvZGUsIGJvb2wgaXNfc2lnbmVkLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4KVxcbiB7XFxuIFxcdHU2NCBmdW5jX2FkZHI7XFxuIFxcbiBcXHRpZiAoQlBGX0NMQVNTKG9wY29kZSkgPT0gQlBGX0FMVSkge1xcbi1cXHRcXHRlbWl0X2hwcGE2NF96ZXh0MzIoYXJnMCwgSFBQQV9SRUdfQVJHMCwgY3R4KTtcXG4tXFx0XFx0ZW1pdF9ocHBhNjRfemV4dDMyKGFyZzEsIEhQUEFfUkVHX0FSRzEsIGN0eCk7XFxuK1xcdFxcdGlmIChpc19zaWduZWQpIHtcXG4rXFx0XFx0XFx0ZW1pdF9ocHBhNjRfc2V4dDMyKGFyZzAsIEhQUEFfUkVHX0FSRzAsIGN0eCk7XFxuK1xcdFxcdFxcdGVtaXRfaHBwYTY0X3NleHQzMihhcmcxLCBIUFBBX1JFR19BUkcxLCBjdHgpO1xcbitcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRlbWl0X2hwcGE2NF96ZXh0MzIoYXJnMCwgSFBQQV9SRUdfQVJHMCwgY3R4KTtcXG4rXFx0XFx0XFx0ZW1pdF9ocHBhNjRfemV4dDMyKGFyZzEsIEhQUEFfUkVHX0FSRzEsIGN0eCk7XFxuK1xcdFxcdH1cXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0ZW1pdF9ocHBhX2NvcHkoYXJnMCwgSFBQQV9SRUdfQVJHMCwgY3R4KTtcXG4gXFx0XFx0ZW1pdF9ocHBhX2NvcHkoYXJnMSwgSFBQQV9SRUdfQVJHMSwgY3R4KTtcXG5AQCAtNjAwLDYgKzYwNSw4IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsXFxuIFxcdHU4IHJkID0gLTEsIHJzID0gLTEsIGNvZGUgPSBpbnNuLVxcdTAwM2Vjb2RlO1xcbiBcXHRzMTYgb2ZmID0gaW5zbi1cXHUwMDNlb2ZmO1xcbiBcXHRzMzIgaW1tID0gaW5zbi1cXHUwMDNlaW1tO1xcbitcXHRib29sIGlzX3NpZ25lZDtcXG4rXFx0dm9pZCAqZnVuYztcXG4gXFxuIFxcdGluaXRfcmVncyhcXHUwMDI2cmQsIFxcdTAwMjZycywgaW5zbiwgY3R4KTtcXG4gXFxuQEAgLTY1NiwyOSArNjYzLDM5IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsXFxuIFxcdFxcdGZhbGx0aHJvdWdoO1xcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX1g6XFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01VTCB8IEJQRl9YOlxcbi1cXHRcXHRlbWl0X2NhbGxfbGliZ2NjX2xsKF9fbXVsZGkzLCByZCwgcnMsIGNvZGUsIGN0eCk7XFxuK1xcdFxcdGVtaXRfY2FsbF9saWJnY2NfbGwoX19tdWxkaTMsIHJkLCBycywgY29kZSwgZmFsc2UsIGN0eCk7XFxuIFxcdFxcdGlmICghaXM2NCBcXHUwMDI2XFx1MDAyNiAhYXV4LVxcdTAwM2V2ZXJpZmllcl96ZXh0KVxcbiBcXHRcXHRcXHRlbWl0X3pleHRfMzIocmQsIGN0eCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX0s6XFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9LOlxcbi1cXHRcXHRlbWl0X2ltbShIUFBBX1JFR19UMSwgaXM2NCA/IChzNjQpKHMzMilpbW0gOiAodTMyKWltbSwgSFBQQV9SRUdfVDIsIGN0eCk7XFxuK1xcdFxcdGlzX3NpZ25lZCA9IChvZmYgPT0gMSk7XFxuK1xcdFxcdGVtaXRfaW1tKEhQUEFfUkVHX1QxLFxcbitcXHRcXHRcXHQgaXM2NCB8fCBpc19zaWduZWQgPyAoczY0KShzMzIpaW1tIDogKHUzMilpbW0sXFxuK1xcdFxcdFxcdCBIUFBBX1JFR19UMiwgY3R4KTtcXG4gXFx0XFx0cnMgPSBIUFBBX1JFR19UMTtcXG4gXFx0XFx0ZmFsbHRocm91Z2g7XFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9ESVYgfCBCUEZfWDpcXG4gXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX1g6XFxuLVxcdFxcdGVtaXRfY2FsbF9saWJnY2NfbGwoXFx1MDAyNmhwcGFfZGl2NjQsIHJkLCBycywgY29kZSwgY3R4KTtcXG4rXFx0XFx0aXNfc2lnbmVkID0gKG9mZiA9PSAxKTtcXG4rXFx0XFx0ZnVuYyA9IGlzX3NpZ25lZCA/IFxcdTAwMjZocHBhX3NkaXY2NCA6IFxcdTAwMjZocHBhX2RpdjY0O1xcbitcXHRcXHRlbWl0X2NhbGxfbGliZ2NjX2xsKGZ1bmMsIHJkLCBycywgY29kZSwgaXNfc2lnbmVkLCBjdHgpO1xcbiBcXHRcXHRpZiAoIWlzNjQgXFx1MDAyNlxcdTAwMjYgIWF1eC1cXHUwMDNldmVyaWZpZXJfemV4dClcXG4gXFx0XFx0XFx0ZW1pdF96ZXh0XzMyKHJkLCBjdHgpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9LOlxcbiBcXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfSzpcXG4tXFx0XFx0ZW1pdF9pbW0oSFBQQV9SRUdfVDEsIGlzNjQgPyAoczY0KShzMzIpaW1tIDogKHUzMilpbW0sIEhQUEFfUkVHX1QyLCBjdHgpO1xcbitcXHRcXHRpc19zaWduZWQgPSAob2ZmID09IDEpO1xcbitcXHRcXHRlbWl0X2ltbShIUFBBX1JFR19UMSxcXG4rXFx0XFx0XFx0IGlzNjQgfHwgaXNfc2lnbmVkID8gKHM2NCkoczMyKWltbSA6ICh1MzIpaW1tLFxcbitcXHRcXHRcXHQgSFBQQV9SRUdfVDIsIGN0eCk7XFxuIFxcdFxcdHJzID0gSFBQQV9SRUdfVDE7XFxuIFxcdFxcdGZhbGx0aHJvdWdoO1xcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6XFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9YOlxcbi1cXHRcXHRlbWl0X2NhbGxfbGliZ2NjX2xsKFxcdTAwMjZocHBhX2RpdjY0X3JlbSwgcmQsIHJzLCBjb2RlLCBjdHgpO1xcbitcXHRcXHRpc19zaWduZWQgPSAob2ZmID09IDEpO1xcbitcXHRcXHRmdW5jID0gaXNfc2lnbmVkID8gXFx1MDAyNmhwcGFfc2RpdjY0X3JlbSA6IFxcdTAwMjZocHBhX2RpdjY0X3JlbTtcXG4rXFx0XFx0ZW1pdF9jYWxsX2xpYmdjY19sbChmdW5jLCByZCwgcnMsIGNvZGUsIGlzX3NpZ25lZCwgY3R4KTtcXG4gXFx0XFx0aWYgKCFpczY0IFxcdTAwMjZcXHUwMDI2ICFhdXgtXFx1MDAzZXZlcmlmaWVyX3pleHQpXFxuIFxcdFxcdFxcdGVtaXRfemV4dF8zMihyZCwgY3R4KTtcXG4gXFx0XFx0YnJlYWs7XFxuZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuY1xcbmluZGV4IDE3Mjc3MDEzMjQ0MGRiLi5hMmY5MzIwMmEyZWY5YyAxMDA2NDRcXG4tLS0gYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb3JlLmNcXG4rKysgYi9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb3JlLmNcXG5AQCAtMTkwLDMgKzE5MCwxNyBAQCB1NjQgaHBwYV9kaXY2NF9yZW0odTY0IGRpdiwgdTY0IGRpdmlzb3IpXFxuIFxcdGRpdjY0X3U2NF9yZW0oZGl2LCBkaXZpc29yLCBcXHUwMDI2cmVtKTtcXG4gXFx0cmV0dXJuIHJlbTtcXG4gfVxcbitcXG4rdTY0IGhwcGFfc2RpdjY0KHU2NCBkaXYsIHU2NCBkaXZpc29yKVxcbit7XFxuK1xcdHM2NCBzZGl2ID0gZGl2NjRfczY0KChzNjQpZGl2LCAoczY0KWRpdmlzb3IpO1xcbitcXG4rXFx0cmV0dXJuICh1NjQpc2RpdjtcXG4rfVxcbitcXG4rdTY0IGhwcGFfc2RpdjY0X3JlbSh1NjQgZGl2LCB1NjQgZGl2aXNvcilcXG4re1xcbitcXHRzNjQgc2RpdiA9IGRpdjY0X3M2NCgoczY0KWRpdiwgKHM2NClkaXZpc29yKTtcXG4rXFxuK1xcdHJldHVybiAodTY0KSgoczY0KWRpdiAtIHNkaXYgKiAoczY0KWRpdmlzb3IpO1xcbit9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIzOjA4OjI1LjgxMDM1OTE2NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgyNjk3NTU4MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhwcGFfc2RpdjY0XCIsXG4gICAgXCJocHBhX3NkaXY2NF9yZW1cIixcbiAgICBcImVtaXRfYWx1X3I2NFwiLFxuICAgIFwiZW1pdF9hbHVfcjMyXCIsXG4gICAgXCJlbWl0X2NhbGxfbGliZ2NjX2xsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zIHRvIHRoZSBQQS1SSVNDIEJQRiBKSVQgY29tcGlsZXIuIFRoaXMgaXMgZnVuY3Rpb25hbCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSB0aGF0IGNhbiBiZSByZWFjaGVkIHdoZW4gcnVubmluZyBCUEYgcHJvZ3JhbXMgb24gUEEtUklTQyAod2hpY2ggY2FuIGJlIGVtdWxhdGVkIGluIFFFTVUpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQzOTlkZmJhNmM3MzYxZTBjNGNlMDVmNWU3OWFiZGRkZGEwMjQzY2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxNyAyMzowODoyMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL25ldC9icGZfaml0LmggYi9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oXG5pbmRleCA4Yjg4OTY5NTlmMDQ0OS4uMDc0MTE1YzkzYzkwOWMgMTAwNjQ0XG4tLS0gYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oXG4rKysgYi9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oXG5AQCAtNDY3LDYgKzQ2Nyw4IEBAIHN0YXRpYyBpbmxpbmUgdTMyIGhwcGFfdDIxX2luc24odTggb3Bjb2RlLCB1OCByMiwgdTggcjEsIHU4IGV4dDgsIHU4IHQpXG4gXG4gdTY0IGhwcGFfZGl2NjQodTY0IGRpdiwgdTY0IGRpdmlzb3IpO1xuIHU2NCBocHBhX2RpdjY0X3JlbSh1NjQgZGl2LCB1NjQgZGl2aXNvcik7XG4rdTY0IGhwcGFfc2RpdjY0KHU2NCBkaXYsIHU2NCBkaXZpc29yKTtcbit1NjQgaHBwYV9zZGl2NjRfcmVtKHU2NCBkaXYsIHU2NCBkaXZpc29yKTtcbiBcbiAvKiBIZWxwZXIgZnVuY3Rpb25zIHRoYXQgZW1pdCBIUFBBIGluc3RydWN0aW9ucyB3aGVuIHBvc3NpYmxlLiAqL1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jIGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmNcbmluZGV4IDVmZjBjZjkyNWZlOTUzLi5lZWEwYTM0YTNiZmVlNyAxMDA2NDRcbi0tLSBhL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jXG4rKysgYi9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuY1xuQEAgLTMyMSw2ICszMjEsOCBAQCBzdGF0aWMgdm9pZCBicGZfcHV0X3JlZzMyKGNvbnN0IHM4ICpyZWcsIGNvbnN0IHM4ICpzcmMsXG4gZXh0ZXJuIHZvaWQgJCRtdWxJKHZvaWQpO1xuIGV4dGVybiB2b2lkICQkZGl2VSh2b2lkKTtcbiBleHRlcm4gdm9pZCAkJHJlbVUodm9pZCk7XG4rZXh0ZXJuIHZvaWQgJCRkaXZJKHZvaWQpO1xuK2V4dGVybiB2b2lkICQkcmVtSSh2b2lkKTtcbiBcbiBzdGF0aWMgdm9pZCBlbWl0X2NhbGxfbWlsbGljb2RlKHZvaWQgKmZ1bmMsIGNvbnN0IHM4IGFyZzAsXG4gXHRcdGNvbnN0IHM4IGFyZzEsIHU4IG9wY29kZSwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eClcbkBAIC01NjIsMTIgKzU2NCwxNCBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9pMzIoY29uc3QgczggKmRzdCwgczMyIGltbSxcbiB9XG4gXG4gc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KGNvbnN0IHM4ICpkc3QsIGNvbnN0IHM4ICpzcmMsXG4tXHRcdFx0IHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IG9wKVxuK1x0XHRcdCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LCBjb25zdCB1OCBvcCxcbitcdFx0XHQgYm9vbCBpc19zaWduZWQpXG4ge1xuIFx0Y29uc3QgczggKnRtcDEgPSByZWdtYXBbVE1QX1JFR18xXTtcbiBcdGNvbnN0IHM4ICp0bXAyID0gcmVnbWFwW1RNUF9SRUdfMl07XG4gXHRjb25zdCBzOCAqcmQ7XG4gXHRjb25zdCBzOCAqcnMgPSBicGZfZ2V0X3JlZzY0KHNyYywgdG1wMiwgY3R4KTtcbitcdHZvaWQgKmZ1bmM7XG4gXG4gXHRpZiAob3AgPT0gQlBGX01PVilcbiBcdFx0cmQgPSBicGZfZ2V0X3JlZzY0X3JlZihkc3QsIHRtcDEsIGZhbHNlLCBjdHgpO1xuQEAgLTYwNCwxMCArNjA4LDEyIEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChjb25zdCBzOCAqZHN0LCBjb25zdCBzOCAqc3JjLFxuIFx0XHRlbWl0X2NhbGxfbGliZ2NjX2xsKF9fbXVsZGkzLCByZCwgcnMsIG9wLCBjdHgpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQlBGX0RJVjpcbi1cdFx0ZW1pdF9jYWxsX2xpYmdjY19sbChcdTAwMjZocHBhX2RpdjY0LCByZCwgcnMsIG9wLCBjdHgpO1xuK1x0XHRmdW5jID0gaXNfc2lnbmVkID8gXHUwMDI2aHBwYV9zZGl2NjQgOiBcdTAwMjZocHBhX2RpdjY0O1xuK1x0XHRlbWl0X2NhbGxfbGliZ2NjX2xsKGZ1bmMsIHJkLCBycywgb3AsIGN0eCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCUEZfTU9EOlxuLVx0XHRlbWl0X2NhbGxfbGliZ2NjX2xsKFx1MDAyNmhwcGFfZGl2NjRfcmVtLCByZCwgcnMsIG9wLCBjdHgpO1xuK1x0XHRmdW5jID0gaXNfc2lnbmVkID8gXHUwMDI2aHBwYV9zZGl2NjRfcmVtIDogXHUwMDI2aHBwYV9kaXY2NF9yZW07XG4rXHRcdGVtaXRfY2FsbF9saWJnY2NfbGwoZnVuYywgcmQsIHJzLCBvcCwgY3R4KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJQRl9MU0g6XG4gXHRcdGVtaXRfY2FsbF9saWJnY2NfbGwoX19hc2hsZGkzLCByZCwgcnMsIG9wLCBjdHgpO1xuQEAgLTYzMCw3ICs2MzYsOCBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoY29uc3QgczggKmRzdCwgY29uc3QgczggKnNyYyxcbiB9XG4gXG4gc3RhdGljIHZvaWQgZW1pdF9hbHVfcjMyKGNvbnN0IHM4ICpkc3QsIGNvbnN0IHM4ICpzcmMsXG4tXHRcdFx0IHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IG9wKVxuK1x0XHRcdCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LCBjb25zdCB1OCBvcCxcbitcdFx0XHQgYm9vbCBpc19zaWduZWQpXG4ge1xuIFx0Y29uc3QgczggKnRtcDEgPSByZWdtYXBbVE1QX1JFR18xXTtcbiBcdGNvbnN0IHM4ICp0bXAyID0gcmVnbWFwW1RNUF9SRUdfMl07XG5AQCAtNjY2LDEwICs2NzMsMTIgQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfcjMyKGNvbnN0IHM4ICpkc3QsIGNvbnN0IHM4ICpzcmMsXG4gXHRcdGVtaXRfY2FsbF9taWxsaWNvZGUoJCRtdWxJLCBsbyhyZCksIGxvKHJzKSwgb3AsIGN0eCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCUEZfRElWOlxuLVx0XHRlbWl0X2NhbGxfbWlsbGljb2RlKCQkZGl2VSwgbG8ocmQpLCBsbyhycyksIG9wLCBjdHgpO1xuK1x0XHRlbWl0X2NhbGxfbWlsbGljb2RlKGlzX3NpZ25lZCA/ICQkZGl2SSA6ICQkZGl2VSxcbitcdFx0XHRcdCAgICBsbyhyZCksIGxvKHJzKSwgb3AsIGN0eCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCUEZfTU9EOlxuLVx0XHRlbWl0X2NhbGxfbWlsbGljb2RlKCQkcmVtVSwgbG8ocmQpLCBsbyhycyksIG9wLCBjdHgpO1xuK1x0XHRlbWl0X2NhbGxfbWlsbGljb2RlKGlzX3NpZ25lZCA/ICQkcmVtSSA6ICQkcmVtVSxcbitcdFx0XHRcdCAgICBsbyhyZCksIGxvKHJzKSwgb3AsIGN0eCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCUEZfTFNIOlxuIFx0XHRlbWl0KGhwcGFfc3ViaSgweDFmLCBsbyhycyksIEhQUEFfUkVHX1QwKSwgY3R4KTtcbkBAIC0xMTYzLDEyICsxMTcyLDEyIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsXG4gXHRcdFx0ZW1pdF9pbW0zMih0bXAyLCBpbW0sIGN0eCk7XG4gXHRcdFx0c3JjID0gdG1wMjtcbiBcdFx0fVxuLVx0XHRlbWl0X2FsdV9yNjQoZHN0LCBzcmMsIGN0eCwgQlBGX09QKGNvZGUpKTtcbitcdFx0ZW1pdF9hbHVfcjY0KGRzdCwgc3JjLCBjdHgsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xuIFx0XHRicmVhaztcbiBcbiBcdC8qIGRzdCA9IC1kc3QgKi9cbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX05FRzpcbi1cdFx0ZW1pdF9hbHVfcjY0KGRzdCwgdG1wMiwgY3R4LCBCUEZfT1AoY29kZSkpO1xuK1x0XHRlbWl0X2FsdV9yNjQoZHN0LCB0bXAyLCBjdHgsIEJQRl9PUChjb2RlKSwgZmFsc2UpO1xuIFx0XHRicmVhaztcbiBcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PViB8IEJQRl9LOlxuQEAgLTEyMTEsNyArMTIyMCw3IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsXG4gXHRcdFx0ZW1pdF9pbW0zMih0bXAyLCBpbW0sIGN0eCk7XG4gXHRcdFx0c3JjID0gdG1wMjtcbiBcdFx0fVxuLVx0XHRlbWl0X2FsdV9yMzIoZHN0LCBzcmMsIGN0eCwgQlBGX09QKGNvZGUpKTtcbitcdFx0ZW1pdF9hbHVfcjMyKGRzdCwgc3JjLCBjdHgsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xuIFx0XHRicmVhaztcbiBcbiBcdC8qIGRzdCA9IGRzdCBPUCBpbW0gKi9cbkBAIC0xMjM2LDcgKzEyNDUsNyBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LFxuIFx0XHQgKiBzcmMgaXMgaWdub3JlZC0tLWNob29zZSB0bXAyIGFzIGEgZHVtbXkgcmVnaXN0ZXIgc2luY2UgaXRcbiBcdFx0ICogaXMgbm90IG9uIHRoZSBzdGFjay5cbiBcdFx0ICovXG4tXHRcdGVtaXRfYWx1X3IzMihkc3QsIHRtcDIsIGN0eCwgQlBGX09QKGNvZGUpKTtcbitcdFx0ZW1pdF9hbHVfcjMyKGRzdCwgdG1wMiwgY3R4LCBCUEZfT1AoY29kZSksIGZhbHNlKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHQvKiBkc3QgPSBCU1dBUCMjaW1tKGRzdCkgKi9cbmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXA2NC5jXG5pbmRleCA1NGIwZDVlMjVlMDI0Ni4uYzMyNmZhNzM3ZWM4YzUgMTAwNjQ0XG4tLS0gYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wNjQuY1xuKysrIGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmNcbkBAIC01MDIsMTQgKzUwMiwxOSBAQCBzdGF0aWMgdm9pZCBlbWl0X2NhbGwodTY0IGFkZHIsIGJvb2wgZml4ZWQsIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgpXG4gXHRlbWl0X2hwcGFfY29weShIUFBBX1JFR19SRVQwLCByZWdtYXBbQlBGX1JFR18wXSwgY3R4KTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgZW1pdF9jYWxsX2xpYmdjY19sbCh2b2lkICpmdW5jLCBjb25zdCBzOCBhcmcwLFxuLVx0XHRjb25zdCBzOCBhcmcxLCB1OCBvcGNvZGUsIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgpXG4rc3RhdGljIHZvaWQgZW1pdF9jYWxsX2xpYmdjY19sbCh2b2lkICpmdW5jLCBjb25zdCBzOCBhcmcwLCBjb25zdCBzOCBhcmcxLFxuK1x0XHR1OCBvcGNvZGUsIGJvb2wgaXNfc2lnbmVkLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4KVxuIHtcbiBcdHU2NCBmdW5jX2FkZHI7XG4gXG4gXHRpZiAoQlBGX0NMQVNTKG9wY29kZSkgPT0gQlBGX0FMVSkge1xuLVx0XHRlbWl0X2hwcGE2NF96ZXh0MzIoYXJnMCwgSFBQQV9SRUdfQVJHMCwgY3R4KTtcbi1cdFx0ZW1pdF9ocHBhNjRfemV4dDMyKGFyZzEsIEhQUEFfUkVHX0FSRzEsIGN0eCk7XG4rXHRcdGlmIChpc19zaWduZWQpIHtcbitcdFx0XHRlbWl0X2hwcGE2NF9zZXh0MzIoYXJnMCwgSFBQQV9SRUdfQVJHMCwgY3R4KTtcbitcdFx0XHRlbWl0X2hwcGE2NF9zZXh0MzIoYXJnMSwgSFBQQV9SRUdfQVJHMSwgY3R4KTtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRlbWl0X2hwcGE2NF96ZXh0MzIoYXJnMCwgSFBQQV9SRUdfQVJHMCwgY3R4KTtcbitcdFx0XHRlbWl0X2hwcGE2NF96ZXh0MzIoYXJnMSwgSFBQQV9SRUdfQVJHMSwgY3R4KTtcbitcdFx0fVxuIFx0fSBlbHNlIHtcbiBcdFx0ZW1pdF9ocHBhX2NvcHkoYXJnMCwgSFBQQV9SRUdfQVJHMCwgY3R4KTtcbiBcdFx0ZW1pdF9ocHBhX2NvcHkoYXJnMSwgSFBQQV9SRUdfQVJHMSwgY3R4KTtcbkBAIC02MDAsNiArNjA1LDggQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCxcbiBcdHU4IHJkID0gLTEsIHJzID0gLTEsIGNvZGUgPSBpbnNuLVx1MDAzZWNvZGU7XG4gXHRzMTYgb2ZmID0gaW5zbi1cdTAwM2VvZmY7XG4gXHRzMzIgaW1tID0gaW5zbi1cdTAwM2VpbW07XG4rXHRib29sIGlzX3NpZ25lZDtcbitcdHZvaWQgKmZ1bmM7XG4gXG4gXHRpbml0X3JlZ3MoXHUwMDI2cmQsIFx1MDAyNnJzLCBpbnNuLCBjdHgpO1xuIFxuQEAgLTY1NiwyOSArNjYzLDM5IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsXG4gXHRcdGZhbGx0aHJvdWdoO1xuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX1g6XG4tXHRcdGVtaXRfY2FsbF9saWJnY2NfbGwoX19tdWxkaTMsIHJkLCBycywgY29kZSwgY3R4KTtcbitcdFx0ZW1pdF9jYWxsX2xpYmdjY19sbChfX211bGRpMywgcmQsIHJzLCBjb2RlLCBmYWxzZSwgY3R4KTtcbiBcdFx0aWYgKCFpczY0IFx1MDAyNlx1MDAyNiAhYXV4LVx1MDAzZXZlcmlmaWVyX3pleHQpXG4gXHRcdFx0ZW1pdF96ZXh0XzMyKHJkLCBjdHgpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9ESVYgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9LOlxuLVx0XHRlbWl0X2ltbShIUFBBX1JFR19UMSwgaXM2NCA/IChzNjQpKHMzMilpbW0gOiAodTMyKWltbSwgSFBQQV9SRUdfVDIsIGN0eCk7XG4rXHRcdGlzX3NpZ25lZCA9IChvZmYgPT0gMSk7XG4rXHRcdGVtaXRfaW1tKEhQUEFfUkVHX1QxLFxuK1x0XHRcdCBpczY0IHx8IGlzX3NpZ25lZCA/IChzNjQpKHMzMilpbW0gOiAodTMyKWltbSxcbitcdFx0XHQgSFBQQV9SRUdfVDIsIGN0eCk7XG4gXHRcdHJzID0gSFBQQV9SRUdfVDE7XG4gXHRcdGZhbGx0aHJvdWdoO1xuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX1g6XG4tXHRcdGVtaXRfY2FsbF9saWJnY2NfbGwoXHUwMDI2aHBwYV9kaXY2NCwgcmQsIHJzLCBjb2RlLCBjdHgpO1xuK1x0XHRpc19zaWduZWQgPSAob2ZmID09IDEpO1xuK1x0XHRmdW5jID0gaXNfc2lnbmVkID8gXHUwMDI2aHBwYV9zZGl2NjQgOiBcdTAwMjZocHBhX2RpdjY0O1xuK1x0XHRlbWl0X2NhbGxfbGliZ2NjX2xsKGZ1bmMsIHJkLCBycywgY29kZSwgaXNfc2lnbmVkLCBjdHgpO1xuIFx0XHRpZiAoIWlzNjQgXHUwMDI2XHUwMDI2ICFhdXgtXHUwMDNldmVyaWZpZXJfemV4dClcbiBcdFx0XHRlbWl0X3pleHRfMzIocmQsIGN0eCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX0s6XG4tXHRcdGVtaXRfaW1tKEhQUEFfUkVHX1QxLCBpczY0ID8gKHM2NCkoczMyKWltbSA6ICh1MzIpaW1tLCBIUFBBX1JFR19UMiwgY3R4KTtcbitcdFx0aXNfc2lnbmVkID0gKG9mZiA9PSAxKTtcbitcdFx0ZW1pdF9pbW0oSFBQQV9SRUdfVDEsXG4rXHRcdFx0IGlzNjQgfHwgaXNfc2lnbmVkID8gKHM2NCkoczMyKWltbSA6ICh1MzIpaW1tLFxuK1x0XHRcdCBIUFBBX1JFR19UMiwgY3R4KTtcbiBcdFx0cnMgPSBIUFBBX1JFR19UMTtcbiBcdFx0ZmFsbHRocm91Z2g7XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfWDpcbi1cdFx0ZW1pdF9jYWxsX2xpYmdjY19sbChcdTAwMjZocHBhX2RpdjY0X3JlbSwgcmQsIHJzLCBjb2RlLCBjdHgpO1xuK1x0XHRpc19zaWduZWQgPSAob2ZmID09IDEpO1xuK1x0XHRmdW5jID0gaXNfc2lnbmVkID8gXHUwMDI2aHBwYV9zZGl2NjRfcmVtIDogXHUwMDI2aHBwYV9kaXY2NF9yZW07XG4rXHRcdGVtaXRfY2FsbF9saWJnY2NfbGwoZnVuYywgcmQsIHJzLCBjb2RlLCBpc19zaWduZWQsIGN0eCk7XG4gXHRcdGlmICghaXM2NCBcdTAwMjZcdTAwMjYgIWF1eC1cdTAwM2V2ZXJpZmllcl96ZXh0KVxuIFx0XHRcdGVtaXRfemV4dF8zMihyZCwgY3R4KTtcbiBcdFx0YnJlYWs7XG5kaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jIGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jXG5pbmRleCAxNzI3NzAxMzI0NDBkYi4uYTJmOTMyMDJhMmVmOWMgMTAwNjQ0XG4tLS0gYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb3JlLmNcbisrKyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuY1xuQEAgLTE5MCwzICsxOTAsMTcgQEAgdTY0IGhwcGFfZGl2NjRfcmVtKHU2NCBkaXYsIHU2NCBkaXZpc29yKVxuIFx0ZGl2NjRfdTY0X3JlbShkaXYsIGRpdmlzb3IsIFx1MDAyNnJlbSk7XG4gXHRyZXR1cm4gcmVtO1xuIH1cbitcbit1NjQgaHBwYV9zZGl2NjQodTY0IGRpdiwgdTY0IGRpdmlzb3IpXG4re1xuK1x0czY0IHNkaXYgPSBkaXY2NF9zNjQoKHM2NClkaXYsIChzNjQpZGl2aXNvcik7XG4rXG4rXHRyZXR1cm4gKHU2NClzZGl2O1xuK31cbitcbit1NjQgaHBwYV9zZGl2NjRfcmVtKHU2NCBkaXYsIHU2NCBkaXZpc29yKVxuK3tcbitcdHM2NCBzZGl2ID0gZGl2NjRfczY0KChzNjQpZGl2LCAoczY0KWRpdmlzb3IpO1xuK1xuK1x0cmV0dXJuICh1NjQpKChzNjQpZGl2IC0gc2RpdiAqIChzNjQpZGl2aXNvcik7XG4rfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjM6MDg6MjUuODEwMzYyNzU0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk1MTUyMjgyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQQS1SSVNDIEJQRiBKSVQgUGF0Y2ggQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgYWRkcyBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBzdXBwb3J0IChgc2RpdmAsIGBzbW9kYCkgdG8gdGhlIEJQRiBKSVQgY29tcGlsZXIsIHNwZWNpZmljYWxseSBmb3IgdGhlIFBBLVJJU0MgYXJjaGl0ZWN0dXJlLiBUaGUgY29kZSBjaGFuZ2VzIGFyZSBpbiB0aGUgYGFyY2gvcGFyaXNjL25ldC9gIGRpcmVjdG9yeSwgd2hpY2ggbWFrZXMgaXQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljLiBOYXR1cmFsbHksIGl0J3Mgb25seSBnb2luZyB0byBiZSBjb21waWxlZCBpZiB0aGUga2VybmVsIGlzIGNvbmZpZ3VyZWQgZm9yIFBBLVJJU0MuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMgYWJvdXQgZnV6emluZy4gV2UgdHlwaWNhbGx5IHNlZSBmdXp6aW5nIG9uIHg4Nl82NCwgQVJNNjQsIFJJU0MtViwgYW5kIHRoZSBsaWtlLiBEb2VzIHN5emthbGxlciBldmVuIHRhcmdldCBQQS1SSVNDPyBJIG5lZWQgdG8gY2hlY2suIEV2ZW4gaWYgaXQgZG9lc24ndCAqY3VycmVudGx5KiBmdXp6IFBBLVJJU0MsIGl04oCZcyBzdGlsbCBnb29kIHRvIGhhdmUgdGhlIGNvZGUgdGhlcmUgZm9yIHNvbWVvbmUgd2hvICpkb2VzKiBydW4gaXQgb24gdGhhdCBhcmNoaXRlY3R1cmUuIEhvd2V2ZXIsIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhlIGluc3RydWN0aW9ucyBmb3IgY29kZSBmdXp6aW5nLiBUaGVyZSBtaWdodCBiZSBjb2RlIHBhdGhzIHdoaWNoIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gTHVja2lseSwgUUVNVSAqZG9lcyogc3VwcG9ydCBQQS1SSVNDIGVtdWxhdGlvbiAoYHFlbXUtc3lzdGVtLWhwcGFgKS4gU28gdGhhdCdzIG5vdCBhIGNvbmNlcm4uXG5cbk5vdyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIG5lY2Vzc2FyeSBrZXJuZWwgY29uZmlndXJhdGlvbi4gV2UnbGwgbmVlZCBgQ09ORklHX0JQRl9KSVRgIGZvciBzdXJlLCBhbmQgb2J2aW91c2x5IGBDT05GSUdfUEFSSVNDYC4gTGV0IG1lIGp1c3QgZG91YmxlIGNoZWNrIHRoZSBLY29uZmlnIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBQQS1SSVNDIHJlbGF0ZWQgZGV0YWlscyBmb3IgYEJQRl9KSVRgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTM3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjM6MDg6MzEuNzYxODg4MjA4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMTcyNjc5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJCUEZfSklUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcGFyaXNjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcGFyaXNjL0tjb25maWc9Mj1jb25maWcgUEFSSVNDXFxuLS1cXG5hcmNoL3BhcmlzYy9LY29uZmlnLTcyLVxcdHNlbGVjdCBIQVZFX0FSQ0hfVFJBQ0VIT09LXFxuYXJjaC9wYXJpc2MvS2NvbmZpZzo3MzpcXHRzZWxlY3QgSEFWRV9FQlBGX0pJVFxcbmFyY2gvcGFyaXNjL0tjb25maWc6NzQ6XFx0c2VsZWN0IEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVRcXG5hcmNoL3BhcmlzYy9LY29uZmlnLTc1LVxcdHNlbGVjdCBIQVZFX1JFR1NfQU5EX1NUQUNLX0FDQ0VTU19BUElcXG4tLVxcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZS0yLVxcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZTozOm9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvcmUub1xcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZS00LVxcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZT01PWlmZXEgKCQoQ09ORklHXzY0QklUKSx5KVxcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZTo2OlxcdG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXA2NC5vXFxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlLTctZWxzZVxcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZTo4OlxcdG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXAzMi5vXFxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlLTktZW5kaWZcXG4tLVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtOC1cXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oOjk6I2lmbmRlZiBfQlBGX0pJVF9IXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaDoxMDojZGVmaW5lIF9CUEZfSklUX0hcXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oLTExLVxcbi0tXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaD00Nzg9aW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCxcXG4tLVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtNDgwLVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0Lmg6NDgxOiNlbmRpZiAvKiBfQlBGX0pJVF9IICovXFxuLS1cXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy0zMi0gKiAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0rIFxcdTAwM2M9IChzcCAtIDQgKiBOUl9TQVZFRF9SRUdJU1RFUlNcXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYzozMzogKiAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAtIDQgKiBCUEZfSklUX1NDUkFUQ0hfUkVHUylcXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy0zNC0gKiAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8XFxuLS1cXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYz00Mz1lbnVtIHtcXG4tLVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jLTU0LVxcdEJQRl9SMF9URU1QX0xPLFxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jOjU1OlxcdEJQRl9KSVRfU0NSQVRDSF9SRUdTLFxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jLTU2LX07XFxuLS1cXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy02OC1cXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYzo2OTojZGVmaW5lIFRNUF9SRUdfMVxcdChNQVhfQlBGX0pJVF9SRUcgKyAwKVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jOjcwOiNkZWZpbmUgVE1QX1JFR18yXFx0KE1BWF9CUEZfSklUX1JFRyArIDEpXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmM6NzE6I2RlZmluZSBUTVBfUkVHX1IwXFx0KE1BWF9CUEZfSklUX1JFRyArIDIpXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMtNzItXFxuLS1cXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYz0xNDc2PXZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4KVxcbi0tXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTQ5Ny1cXHQvKiBtYWtlIHNwYWNlIGZvciBCUEYgcmVnaXN0ZXJzIG9uIHN0YWNrLiAqL1xcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jOjE0OTg6XFx0c3RhY2tfYWRqdXN0ICs9IEJQRl9KSVRfU0NSQVRDSF9SRUdTICogUkVHX1NJWkU7XFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTQ5OS1cXHQvKiBtYWtlIHNwYWNlIGZvciBCUEYgc3RhY2suICovXFxuLS1cXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xNjEwLVxcdFxcdGlmIChSRUdfV0FTX1NFRU4oY3R4LCBsbyhyZWcpKSlcXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYzoxNjExOlxcdFxcdFxcdGVtaXQoaHBwYV9sZG8oLVJFR19TSVpFICogKE5SX1NBVkVEX1JFR0lTVEVSUyArIEJQRl9KSVRfU0NSQVRDSF9SRUdTKSxcXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xNjEyLVxcdFxcdFxcdFxcdEhQUEFfUkVHX1NQLCBsbyhyZWcpKSwgY3R4KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjM6MDg6MzIuMDgzNjIxNjIxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE4OTc3MzQxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBBLVJJU0MgQlBGIEpJVCBDb21waWxlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIHRoZSBQQS1SSVNDIGFyY2hpdGVjdHVyZSdzIEJQRiBKSVQgY29tcGlsZXIuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgbGlrZSB3ZSdyZSBkZWFsaW5nIHdpdGggbW9kaWZpY2F0aW9ucyB0byBgYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmNgLCBgYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmNgLCBhbmQgYGFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuY2AuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgdGhlIGFkZGl0aW9uIG9mIGBocHBhX3NkaXY2NGAgYW5kIGBocHBhX3NkaXY2NF9yZW1gIHRvIGBicGZfaml0X2NvcmUuY2AsIHBsdXMgc29tZSBtb2RpZmljYXRpb25zIGluIHRoZSAzMi1iaXQgYW5kIDY0LWJpdCBjb21waWxhdGlvbiBmaWxlcy5cblxuVGhlIGtleSBmdW5jdGlvbnMgdG8gY29uY2VudHJhdGUgb24gYXJlOiBgYnBmX2ppdF9lbWl0X2luc25gLCBgZW1pdF9hbHVfcjY0YCwgYGVtaXRfYWx1X3IzMmAsIGBlbWl0X2NhbGxfbGliZ2NjX2xsYCwgYGhwcGFfc2RpdjY0YCwgYW5kIGBocHBhX3NkaXY2NF9yZW1gLiBUaGVzZSBhcmUgb2J2aW91c2x5IHdoZXJlIHRoZSBuZXcgY29kZSBvciB0aGUgYWx0ZXJlZCBjb2RlIHJlc2lkZXMuIFRoZSBgQlBGX0pJVGAgY29uZmlnIHNlZW1zIHJlbGV2YW50IGhlcmUsIG5hdHVyYWxseS5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgd2FycmFudCBmdXp6aW5nPyBBYnNvbHV0ZWx5LiBJdOKAmXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSklUIGNvbXBpbGVyLCBhbmQgdGhvc2UgYXJlIGFsd2F5cyBnb29kIHRhcmdldHMuIE5vdywgdGhlIHBvdGVudGlhbCBwcm9ibGVtIGlzIHRoYXQgU3l6a2FsbGVyLCBpbiBpdHMgZGVmYXVsdCBzZXR1cCwgZG9lc24ndCBuYXRpdmVseSBzdXBwb3J0IFBBLVJJU0MgZnV6emluZy4gQnV0LCB3YWl0LCB0aGUgbm90ZXMgc3BlY2lmeSB0aGF0IGl0ICpjYW4qIGJlIGNvbmZpZ3VyZWQgaWYgUUVNVSBzdXBwb3J0cyBpdC4gQW5kIGl0IGRvZXMuIEdyZWF0LiBJdCBtZW50aW9ucyBzb21ldGhpbmcgYWJvdXQgXCJpbXBvc3NpYmxlIGNvZGUgcGF0aHNcIiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgYnV0IHNpbmNlIFFFTVUgc3VwcG9ydHMgUEEtUklTQywgdGhpcyBzaG91bGRuJ3QgYmUgYSBwcm9ibGVtLlxuXG5Ob3csIHdoaWNoIGZ1bmN0aW9uIGlzIHRoZSBiZXN0IHRvIGZvY3VzIG9uPyBgYnBmX2ppdF9lbWl0X2luc25gIGlzIGEgYml0IGdlbmVyaWMgZm9yIHRoZSBKSVQgY29tcGlsZXIsIGJ1dCBpdCdzIHdoZXJlIHRoZSBjaGFuZ2VzIG9jY3VyIHNvIGl0J3MgcHJvYmFibHkgaW1wb3J0YW50LiBgZW1pdF9hbHVfcjY0YCBhbmQgYGVtaXRfYWx1X3IzMmAgYWxzbyBzb3VuZCBsaWtlIGdvb2QgY2FuZGlkYXRlcyB0byBsb29rIGF0LiBBbmQgYGhwcGFfc2RpdjY0YCBhbmQgYGhwcGFfc2RpdjY0X3JlbWAgc291bmQgbGlrZSBnb2xkLWxldmVsIHRhcmdldGVkIGZ1bmN0aW9ucyBiZWNhdXNlIHRoZXkgYXJlIHF1aXRlIHNwZWNpZmljLlxuXG5JIG5lZWQgdG8gbmFpbCBkb3duIHRoZSBleGFjdCBzaWduYXR1cmUgb2YgYGJwZl9qaXRfZW1pdF9pbnNuYCBpbiBgYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmNgLCB0byB1bmRlcnN0YW5kIGl0cyBpbnB1dHMgYW5kIG91dHB1dHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0MzksIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjM6MDg6MzkuMjczMzk2N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzIyNjgxOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2ppdF9lbWl0X2luc25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmM9NTU5PXN0YXRpYyB2b2lkIGVtaXRfc3RvcmUoY29uc3QgczggcmQsIGNvbnN0IHM4IHJzLCBzMTYgb2ZmLFxcbi0tXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmMtNTk2LVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXA2NC5jOjU5NzppbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LFxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXA2NC5jLTU5OC1cXHRcXHQgICAgICBib29sIGV4dHJhX3Bhc3MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIzOjA4OjM5LjQwNTY2OTk0OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNjM3NzM3NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBBLVJJU0MgSklUIENvbXBpbGF0aW9uIGZvciA2NC1iaXQgRGl2aXNpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSA2NC1iaXQgZGl2aXNpb24gaW1wbGVtZW50YXRpb24gd2l0aGluIHRoaXMgUEEtUklTQyBKSVQgY29tcGlsZXIuIEkga25vdyBob3cgY3JpdGljYWwgZWZmaWNpZW50IGRpdmlzaW9uIGlzIGluIGFueSBCUEYgY29udGV4dCwgYW5kIEknbSBndWVzc2luZyB0aGVyZSdzIHBvdGVudGlhbCBmb3Igb3B0aW1pemF0aW9uIGhlcmUuIE15IGltbWVkaWF0ZSBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGVzZSBzcGVjaWZpYyBmdW5jdGlvbnM6IGBocHBhX3NkaXY2NGAsIGBocHBhX3NkaXY2NF9yZW1gLCBgZW1pdF9hbHVfcjY0YCwgYGVtaXRfYWx1X3IzMmAsIGFuZCBgZW1pdF9jYWxsX2xpYmdjY19sbGAuIFRoZXkgYXJlIHRoZSBsaWtlbHkga2V5IHBsYXllcnMgaW4gaG93IHRoaXMgYXJjaGl0ZWN0dXJlIGhhbmRsZXMgc2lnbmVkIDY0LWJpdCBkaXZpc2lvbi5cblxuUmlnaHQsIHNvIHdoZXJlJ3MgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQ/IEdpdmVuIHRoZSBjb250ZXh0LCB0aGUgZnVuY3Rpb24gYGVtaXRfYWx1X3I2NGAgbG9va3MgbGlrZSBhIGdvb2QganVtcGluZy1vZmYgcG9pbnQuIEl04oCZcyBwcm9iYWJseSB0aGUgbG93ZXItbGV2ZWwgZnVuY3Rpb24gdGhhdCBlbWl0cyB0aGUgYWN0dWFsIEFMVSBpbnN0cnVjdGlvbnMuIEknbGwgbmVlZCB0byBkaWcgaW50byBgYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgc29saWQgdmlldyBvbiBob3cgNjQtYml0IGRpdmlzaW9uIGlzIGJlaW5nIGxvd2VyZWQgaW50byB0aGUgSVNBLiBMZXTigJlzIHNlZSB3aGF0J3MgYWN0dWFsbHkgZ29pbmcgb24gaW4gdGhlcmUuLi4gSSdtIGV4cGVjdGluZyB0aGlzIHRvIHNoZWQgbGlnaHQgb24gd2hldGhlciBvciBub3QgdGhleSBhcmUgdXNpbmcgZGlyZWN0IGluc3RydWN0aW9ucywgbGlicmFyeSBjYWxscywgb3Igc29tZSBjb21iaW5hdGlvbiBvZiB0aGUgdHdvLiBVbmRlcnN0YW5kaW5nIHRoYXQgcXVpY2tseSB3aWxsIGJlIGNydWNpYWwgdG8gZnVydGhlciBhbmFseXNpcyBhbmQgcG90ZW50aWFsIG9wdGltaXphdGlvbiwgYXMgd2VsbCBhcyBmaW5kaW5nIGFyZWFzIHdoZXJlIHRoaXMgY291bGQgYmUgaW5saW5lZCBmb3IgZWZmaWNpZW5jeSBvciBwb3RlbnRpYWxseSBpbXByb3ZlZCB2aWEgaW5zdHJ1Y3Rpb24gc2VsZWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzM3LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjM6MDg6NDMuNDY5NDQ1Mzk4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzI2NDg1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlbWl0X2FsdV9yNjRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmM9NTExPXN0YXRpYyB2b2lkIGVtaXRfYWx1X2kzMihjb25zdCBzOCAqZHN0LCBzMzIgaW1tLFxcbi0tXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMtNTY1LVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jOjU2NjpzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoY29uc3QgczggKmRzdCwgY29uc3QgczggKnNyYyxcXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy01NjctXFx0XFx0XFx0IHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IG9wLFxcbi0tXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmM9MTEyNT1pbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LFxcbi0tXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTE3NC1cXHRcXHR9XFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmM6MTE3NTpcXHRcXHRlbWl0X2FsdV9yNjQoZHN0LCBzcmMsIGN0eCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTE3Ni1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jLTExNzktXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTkVHOlxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jOjExODA6XFx0XFx0ZW1pdF9hbHVfcjY0KGRzdCwgdG1wMiwgY3R4LCBCUEZfT1AoY29kZSksIGZhbHNlKTtcXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xMTgxLVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QyMzowODo0My41OTI3MTYwNTZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mjg5NDk5MTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gSW5pdGlhbGx5LCBJIHNhdyBgQlBGX0pJVGAgYW5kIGBQQVJJU0NgIGxpc3RlZC4gSG9sZCBvbiBhIHNlY29uZCwgdGhhdCBkb2Vzbid0IG1ha2Ugc2Vuc2UuIGBQQVJJU0NgIGlzIGFuICphcmNoaXRlY3R1cmUqLCBub3QgYSBjb25maWd1cmFibGUgb3B0aW9uIHlvdSB0b2dnbGUgb24gb3Igb2ZmIGluIGEgY29uZmlndXJhdGlvbiBmaWxlIGxpa2UgYSBgLmNvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIGJlIG1vcmUgcHJlY2lzZSBoZXJlLiBJIHNob3VsZCBqdXN0IGxpc3QgYEJQRl9KSVRgIHNpbmNlIHRoYXQncyBhIGxlZ2l0aW1hdGUgY29uZmlndXJhdGlvbiBzZXR0aW5nLlxuXG5IbW0sIGJ1dCB3YWl0LCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSBxdWl0ZSBjbGVhcjogXCJEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLlwiIElzIGBCUEZfSklUYCBzcGVjaWZpYyAqZW5vdWdoKj8gV2VsbCwgY29uc2lkZXJpbmcgdGhpcyBpcyByZWxhdGVkIHRvIEJQRiBKSVQgY29kZSwgeWVhaCwgaXQgc2VlbXMgYXBwcm9wcmlhdGVseSB0YXJnZXRlZC4gSXQncyBub3Qgc29tZXRoaW5nIGJyb2FkbHkgZW5hYmxlZCBhY3Jvc3MgZXZlcnkgc3lzdGVtLiBJdCdzIGRpcmVjdGx5IHRpZWQgdG8gdGhlIEpJVCBmdW5jdGlvbmFsaXR5LlxuXG5Ob3csIGEgcXVpY2sgc2FuaXR5IGNoZWNrLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBCUEZfSklUYCBpc24ndCBhbHJlYWR5IGVuYWJsZWQgYnkgZGVmYXVsdCBpbiBzeXpib3QuIEl0IHVzdWFsbHkgaXMsIGJ1dCBJIHNob3VsZCBsaXN0IGl0IGFueXdheSB0byBiZSBleHRyYSBzdXJlIHRoZSBpbnRlbnRpb24gaXMgdW5kZXJzdG9vZC4gQWx3YXlzIGdvb2QgdG8gYmUgZXhwbGljaXQuXG5cblJpZ2h0LCBJJ2xsIGdvIHRocm91Z2ggdGhlIGNvbmZpZ3VyYXRpb25zIGFnYWluIHRvIGNoZWNrIGZvciBhbnkgb3RoZXIgb25lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTY1MiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QyMzowODo0Ny44ODIyNDUyNjJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzM3OTU0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcGFyaXNjL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlLTItXFxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29yZS5vXFxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlLTQtXFxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlOjU6aWZlcSAoJChDT05GSUdfNjRCSVQpLHkpXFxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlOjY6XFx0b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcDY0Lm9cXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGUtNy1lbHNlXFxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlOjg6XFx0b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcDMyLm9cXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGUtOS1lbmRpZlxcbi0tXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaD0yNT1lbnVtIHtcXG4tLVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtNDQtXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaDo0NTojaWZkZWYgQ09ORklHXzY0QklUXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaC00Ni1cXHRIUFBBX1JFR19UQ0NcXHQgICAgID0gMyxcXG4tLVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtNTctXFx0SFBQQV9SRUdfVDIgPVxcdEhQUEFfUkVHX0FSRzQsXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaDo1ODojaWZuZGVmIENPTkZJR182NEJJVFxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtNTktXFx0SFBQQV9SRUdfVDMgPVxcdEhQUEFfUkVHX0FSRzUsXFx0Lyogbm90IHVzZWQgaW4gNjQtYml0ICovXFxuLS1cXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oPTY1PXN0cnVjdCBocHBhX2ppdF9jb250ZXh0IHtcXG4tLVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtMTgwLSNkZWZpbmUgaHBwYV9jb21idChyMSwgcjIsIHRhcmdldF9hZGRyLCBjb25kaXRpb24sIG5vcCkgXFxcXFxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0Lmg6MTgxOlxcdGhwcGFfdDExX2luc24oSVNfRU5BQkxFRChDT05GSUdfNjRCSVQpID8gMHgyNyA6IDB4MjAsIFxcXFxcXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oLTE4Mi1cXHRcXHRyMiwgcjEsIGNvbmRpdGlvbiwgdGFyZ2V0X2FkZHIsIG5vcClcXHRcXHQvKiBjb21idCxjb25kLG4gcjEscjIsYWRkciAqL1xcbi0tXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaC0xOTQtI2RlZmluZSBocHBhX2NvbWJmKHIxLCByMiwgdGFyZ2V0X2FkZHIsIGNvbmRpdGlvbiwgbm9wKSBcXFxcXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaDoxOTU6XFx0aHBwYV90MTFfaW5zbihJU19FTkFCTEVEKENPTkZJR182NEJJVCkgPyAweDJmIDogMHgyMiwgXFxcXFxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtMTk2LVxcdFxcdHIyLCByMSwgY29uZGl0aW9uLCB0YXJnZXRfYWRkciwgbm9wKVxcdFxcdC8qIGNvbWJmLGNvbmQsbiByMSxyMixhZGRyICovXFxuLS1cXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oLTIwOC0vKiA2NC1iaXQgaW5zdHJ1Y3Rpb25zICovXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaDoyMDk6I2lmZGVmIENPTkZJR182NEJJVFxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtMjEwLSNkZWZpbmUgaHBwYTY0X2xkZF9yZWcocmVnLCBiLCB0YXJnZXQpIFxcXFxcXG4tLVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0Lmg9MzY1PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgcmVfYXNzZW1ibGVfMTQodW5zaWduZWQgYXMxNClcXG4tLVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtMzcwLVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0Lmg6MzcxOiNpZmRlZiBDT05GSUdfNjRCSVRcXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oLTM3Mi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIHJlX2Fzc2VtYmxlXzE2KHVuc2lnbmVkIGFzMTYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIzOjA4OjQ4LjAwNTYzMjA1OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzA5MTc3MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBBLVJJU0MgQlBGIEpJVCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBQQS1SSVNDIGFyY2hpdGVjdHVyZSdzIEJQRiBKSVQgY29tcGlsZXIuIFdoaWxlIGA2NEJJVGAgaXMgKnRlY2huaWNhbGx5KiByZWxldmFudCBkdWUgdG8gaXRzIGdlbmVyYWwgbmF0dXJlLCB0aGUgY29yZSBvZiB0aGlzIGlzIGRlZmluaXRlbHkgYEJQRl9KSVRgLiBUaGF0J3MgdGhlIG9uZSBJIG5lZWQgdG8gZm9jdXMgb24uXG5cbkxldCdzIGJyZWFrIHRoaXMgZG93biBjbGVhcmx5LiBUaGlzIHBhdGNoIGlzIGFic29sdXRlbHkgd29ydGggZnV6emluZyDigJMgYFdvcnRoRnV6emluZzogdHJ1ZWAuIFRoZSByZWFzb24gaXMgc29saWQ6IEl0J3MgaW50cm9kdWNpbmcgbmV3IHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgd2l0aGluIHRoZSBQQS1SSVNDIEJQRiBKSVQgY29tcGlsZXIuIFRoaXMgaXMgYXJjaGl0ZWN0dXJhbCBmdW5jdGlvbmFsaXR5IHRoYXQncyBzcGVjaWZpYyB0byBQQS1SSVNDLCBhbmQgY3JpdGljYWxseSwgKnJlYWNoYWJsZSogd2hlbiBydW5uaW5nIEJQRiBwcm9ncmFtcyBvbiB0aGF0IGFyY2hpdGVjdHVyZS4gVGhlIGZhY3QgdGhhdCBQQS1SSVNDIGNhbiBiZSBlbXVsYXRlZCB1c2luZyBRRU1VIGlzIGEgaHVnZSBib251cywgbWVhbmluZyB0ZXN0aW5nIHRoaXMgaXMgY29tcGxldGVseSBmZWFzaWJsZS5cblxuVGhlIGZ1bmN0aW9ucyBJIG5lZWQgdG8gdGFyZ2V0IGZvciBkZWVwIGRpdmVzIGFyZTogYGhwcGFfc2RpdjY0YCwgYGhwcGFfc2RpdjY0X3JlbWAsIGBlbWl0X2FsdV9yNjRgLCBgZW1pdF9hbHVfcjMyYCwgYW5kIGBlbWl0X2NhbGxfbGliZ2NjX2xsYC4gVGhlc2UgYXJlIHRoZSBrZXkgc3ltYm9scywgYXMgdGhleSBhcmUgbGlrZWx5IHdoZXJlIHRoZSBuZXcgb3BlcmF0aW9ucyBhcmUgaW1wbGVtZW50ZWQuIEFuZCB0aGUgZW5hYmxpbmcgY29uZmlnLCB0aGUgb25lIHRoYXQgbWFrZXMgdGhpcyBhbGwgcG9zc2libGUsIGlzIGBCUEZfSklUYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwMzYsIk91dHB1dFRva2VucyI6MTQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIzOjA4OjUzLjcxNDgyMTEyN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2NTI4NzQxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhwcGFfc2RpdjY0XCIsXG4gICAgXCJocHBhX3NkaXY2NF9yZW1cIixcbiAgICBcImVtaXRfYWx1X3I2NFwiLFxuICAgIFwiZW1pdF9hbHVfcjMyXCIsXG4gICAgXCJlbWl0X2NhbGxfbGliZ2NjX2xsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zIHRvIHRoZSBQQS1SSVNDIEJQRiBKSVQgY29tcGlsZXIuIFRoaXMgaXMgZnVuY3Rpb25hbCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSB0aGF0IGNhbiBiZSByZWFjaGVkIHdoZW4gcnVubmluZyBCUEYgcHJvZ3JhbXMgb24gUEEtUklTQyAod2hpY2ggY2FuIGJlIGVtdWxhdGVkIGluIFFFTVUpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJocHBhX3NkaXY2NFwiLFxuICAgIFwiaHBwYV9zZGl2NjRfcmVtXCIsXG4gICAgXCJlbWl0X2FsdV9yNjRcIixcbiAgICBcImVtaXRfYWx1X3IzMlwiLFxuICAgIFwiZW1pdF9jYWxsX2xpYmdjY19sbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3Igc2lnbmVkIGRpdmlzaW9uIGFuZCBtb2R1bG8gb3BlcmF0aW9ucyB0byB0aGUgUEEtUklTQyBCUEYgSklUIGNvbXBpbGVyLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCB3aGVuIHJ1bm5pbmcgQlBGIHByb2dyYW1zIG9uIFBBLVJJU0MgKHdoaWNoIGNhbiBiZSBlbXVsYXRlZCBpbiBRRU1VKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowpvh2q[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-17 22:55:07 +0000 UTC FinishedAt: 2026-07-17 23:08:56 +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": "1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "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": "1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "series_id": "22a1b910-b30e-4235-a94d-0f6a0e9bc7dc" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "hppa_sdiv64", "hppa_sdiv64_rem", "emit_alu_r64", "emit_alu_r32", "emit_call_libgcc_ll" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIzOjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtocHBhX3NkaXY2NCYjMzQ7LAogICAgJiMzNDtocHBhX3NkaXY2NF9yZW0mIzM0OywKICAgICYjMzQ7ZW1pdF9hbHVfcjY0JiMzNDssCiAgICAmIzM0O2VtaXRfYWx1X3IzMiYjMzQ7LAogICAgJiMzNDtlbWl0X2NhbGxfbGliZ2NjX2xsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3Igc2lnbmVkIGRpdmlzaW9uIGFuZCBtb2R1bG8gb3BlcmF0aW9ucyB0byB0aGUgUEEtUklTQyBCUEYgSklUIGNvbXBpbGVyLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCB3aGVuIHJ1bm5pbmcgQlBGIHByb2dyYW1zIG9uIFBBLVJJU0MgKHdoaWNoIGNhbiBiZSBlbXVsYXRlZCBpbiBRRU1VKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMzowODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQzOTlkZmJhNmM3MzYxZTBjNGNlMDVmNWU3OWFiZGRkZGEwMjQzY2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxNyAyMzowODoyMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oIGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaFxuaW5kZXggOGI4ODk2OTU5ZjA0NDkuLjA3NDExNWM5M2M5MDljIDEwMDY0NFxuLS0tIGEvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaFxuQEAgLTQ2Nyw2ICYjNDM7NDY3LDggQEAgc3RhdGljIGlubGluZSB1MzIgaHBwYV90MjFfaW5zbih1OCBvcGNvZGUsIHU4IHIyLCB1OCByMSwgdTggZXh0OCwgdTggdClcbiBcbiB1NjQgaHBwYV9kaXY2NCh1NjQgZGl2LCB1NjQgZGl2aXNvcik7XG4gdTY0IGhwcGFfZGl2NjRfcmVtKHU2NCBkaXYsIHU2NCBkaXZpc29yKTtcbiYjNDM7dTY0IGhwcGFfc2RpdjY0KHU2NCBkaXYsIHU2NCBkaXZpc29yKTtcbiYjNDM7dTY0IGhwcGFfc2RpdjY0X3JlbSh1NjQgZGl2LCB1NjQgZGl2aXNvcik7XG4gXG4gLyogSGVscGVyIGZ1bmN0aW9ucyB0aGF0IGVtaXQgSFBQQSBpbnN0cnVjdGlvbnMgd2hlbiBwb3NzaWJsZS4gKi9cbiBcbmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jXG5pbmRleCA1ZmYwY2Y5MjVmZTk1My4uZWVhMGEzNGEzYmZlZTcgMTAwNjQ0XG4tLS0gYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmNcbkBAIC0zMjEsNiAmIzQzOzMyMSw4IEBAIHN0YXRpYyB2b2lkIGJwZl9wdXRfcmVnMzIoY29uc3QgczggKnJlZywgY29uc3QgczggKnNyYyxcbiBleHRlcm4gdm9pZCAkJG11bEkodm9pZCk7XG4gZXh0ZXJuIHZvaWQgJCRkaXZVKHZvaWQpO1xuIGV4dGVybiB2b2lkICQkcmVtVSh2b2lkKTtcbiYjNDM7ZXh0ZXJuIHZvaWQgJCRkaXZJKHZvaWQpO1xuJiM0MztleHRlcm4gdm9pZCAkJHJlbUkodm9pZCk7XG4gXG4gc3RhdGljIHZvaWQgZW1pdF9jYWxsX21pbGxpY29kZSh2b2lkICpmdW5jLCBjb25zdCBzOCBhcmcwLFxuIFx0XHRjb25zdCBzOCBhcmcxLCB1OCBvcGNvZGUsIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgpXG5AQCAtNTYyLDEyICYjNDM7NTY0LDE0IEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X2kzMihjb25zdCBzOCAqZHN0LCBzMzIgaW1tLFxuIH1cbiBcbiBzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoY29uc3QgczggKmRzdCwgY29uc3QgczggKnNyYyxcbi1cdFx0XHQgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCwgY29uc3QgdTggb3ApXG4mIzQzO1x0XHRcdCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LCBjb25zdCB1OCBvcCxcbiYjNDM7XHRcdFx0IGJvb2wgaXNfc2lnbmVkKVxuIHtcbiBcdGNvbnN0IHM4ICp0bXAxID0gcmVnbWFwW1RNUF9SRUdfMV07XG4gXHRjb25zdCBzOCAqdG1wMiA9IHJlZ21hcFtUTVBfUkVHXzJdO1xuIFx0Y29uc3QgczggKnJkO1xuIFx0Y29uc3QgczggKnJzID0gYnBmX2dldF9yZWc2NChzcmMsIHRtcDIsIGN0eCk7XG4mIzQzO1x0dm9pZCAqZnVuYztcbiBcbiBcdGlmIChvcCA9PSBCUEZfTU9WKVxuIFx0XHRyZCA9IGJwZl9nZXRfcmVnNjRfcmVmKGRzdCwgdG1wMSwgZmFsc2UsIGN0eCk7XG5AQCAtNjA0LDEwICYjNDM7NjA4LDEyIEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChjb25zdCBzOCAqZHN0LCBjb25zdCBzOCAqc3JjLFxuIFx0XHRlbWl0X2NhbGxfbGliZ2NjX2xsKF9fbXVsZGkzLCByZCwgcnMsIG9wLCBjdHgpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQlBGX0RJVjpcbi1cdFx0ZW1pdF9jYWxsX2xpYmdjY19sbChcdTAwMjZocHBhX2RpdjY0LCByZCwgcnMsIG9wLCBjdHgpO1xuJiM0MztcdFx0ZnVuYyA9IGlzX3NpZ25lZCA/IFx1MDAyNmhwcGFfc2RpdjY0IDogXHUwMDI2aHBwYV9kaXY2NDtcbiYjNDM7XHRcdGVtaXRfY2FsbF9saWJnY2NfbGwoZnVuYywgcmQsIHJzLCBvcCwgY3R4KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJQRl9NT0Q6XG4tXHRcdGVtaXRfY2FsbF9saWJnY2NfbGwoXHUwMDI2aHBwYV9kaXY2NF9yZW0sIHJkLCBycywgb3AsIGN0eCk7XG4mIzQzO1x0XHRmdW5jID0gaXNfc2lnbmVkID8gXHUwMDI2aHBwYV9zZGl2NjRfcmVtIDogXHUwMDI2aHBwYV9kaXY2NF9yZW07XG4mIzQzO1x0XHRlbWl0X2NhbGxfbGliZ2NjX2xsKGZ1bmMsIHJkLCBycywgb3AsIGN0eCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCUEZfTFNIOlxuIFx0XHRlbWl0X2NhbGxfbGliZ2NjX2xsKF9fYXNobGRpMywgcmQsIHJzLCBvcCwgY3R4KTtcbkBAIC02MzAsNyAmIzQzOzYzNiw4IEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChjb25zdCBzOCAqZHN0LCBjb25zdCBzOCAqc3JjLFxuIH1cbiBcbiBzdGF0aWMgdm9pZCBlbWl0X2FsdV9yMzIoY29uc3QgczggKmRzdCwgY29uc3QgczggKnNyYyxcbi1cdFx0XHQgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCwgY29uc3QgdTggb3ApXG4mIzQzO1x0XHRcdCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LCBjb25zdCB1OCBvcCxcbiYjNDM7XHRcdFx0IGJvb2wgaXNfc2lnbmVkKVxuIHtcbiBcdGNvbnN0IHM4ICp0bXAxID0gcmVnbWFwW1RNUF9SRUdfMV07XG4gXHRjb25zdCBzOCAqdG1wMiA9IHJlZ21hcFtUTVBfUkVHXzJdO1xuQEAgLTY2NiwxMCAmIzQzOzY3MywxMiBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9yMzIoY29uc3QgczggKmRzdCwgY29uc3QgczggKnNyYyxcbiBcdFx0ZW1pdF9jYWxsX21pbGxpY29kZSgkJG11bEksIGxvKHJkKSwgbG8ocnMpLCBvcCwgY3R4KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJQRl9ESVY6XG4tXHRcdGVtaXRfY2FsbF9taWxsaWNvZGUoJCRkaXZVLCBsbyhyZCksIGxvKHJzKSwgb3AsIGN0eCk7XG4mIzQzO1x0XHRlbWl0X2NhbGxfbWlsbGljb2RlKGlzX3NpZ25lZCA/ICQkZGl2SSA6ICQkZGl2VSxcbiYjNDM7XHRcdFx0XHQgICAgbG8ocmQpLCBsbyhycyksIG9wLCBjdHgpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQlBGX01PRDpcbi1cdFx0ZW1pdF9jYWxsX21pbGxpY29kZSgkJHJlbVUsIGxvKHJkKSwgbG8ocnMpLCBvcCwgY3R4KTtcbiYjNDM7XHRcdGVtaXRfY2FsbF9taWxsaWNvZGUoaXNfc2lnbmVkID8gJCRyZW1JIDogJCRyZW1VLFxuJiM0MztcdFx0XHRcdCAgICBsbyhyZCksIGxvKHJzKSwgb3AsIGN0eCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCUEZfTFNIOlxuIFx0XHRlbWl0KGhwcGFfc3ViaSgweDFmLCBsbyhycyksIEhQUEFfUkVHX1QwKSwgY3R4KTtcbkBAIC0xMTYzLDEyICYjNDM7MTE3MiwxMiBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LFxuIFx0XHRcdGVtaXRfaW1tMzIodG1wMiwgaW1tLCBjdHgpO1xuIFx0XHRcdHNyYyA9IHRtcDI7XG4gXHRcdH1cbi1cdFx0ZW1pdF9hbHVfcjY0KGRzdCwgc3JjLCBjdHgsIEJQRl9PUChjb2RlKSk7XG4mIzQzO1x0XHRlbWl0X2FsdV9yNjQoZHN0LCBzcmMsIGN0eCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XG4gXHRcdGJyZWFrO1xuIFxuIFx0LyogZHN0ID0gLWRzdCAqL1xuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTkVHOlxuLVx0XHRlbWl0X2FsdV9yNjQoZHN0LCB0bXAyLCBjdHgsIEJQRl9PUChjb2RlKSk7XG4mIzQzO1x0XHRlbWl0X2FsdV9yNjQoZHN0LCB0bXAyLCBjdHgsIEJQRl9PUChjb2RlKSwgZmFsc2UpO1xuIFx0XHRicmVhaztcbiBcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PViB8IEJQRl9LOlxuQEAgLTEyMTEsNyAmIzQzOzEyMjAsNyBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LFxuIFx0XHRcdGVtaXRfaW1tMzIodG1wMiwgaW1tLCBjdHgpO1xuIFx0XHRcdHNyYyA9IHRtcDI7XG4gXHRcdH1cbi1cdFx0ZW1pdF9hbHVfcjMyKGRzdCwgc3JjLCBjdHgsIEJQRl9PUChjb2RlKSk7XG4mIzQzO1x0XHRlbWl0X2FsdV9yMzIoZHN0LCBzcmMsIGN0eCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XG4gXHRcdGJyZWFrO1xuIFxuIFx0LyogZHN0ID0gZHN0IE9QIGltbSAqL1xuQEAgLTEyMzYsNyAmIzQzOzEyNDUsNyBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LFxuIFx0XHQgKiBzcmMgaXMgaWdub3JlZC0tLWNob29zZSB0bXAyIGFzIGEgZHVtbXkgcmVnaXN0ZXIgc2luY2UgaXRcbiBcdFx0ICogaXMgbm90IG9uIHRoZSBzdGFjay5cbiBcdFx0ICovXG4tXHRcdGVtaXRfYWx1X3IzMihkc3QsIHRtcDIsIGN0eCwgQlBGX09QKGNvZGUpKTtcbiYjNDM7XHRcdGVtaXRfYWx1X3IzMihkc3QsIHRtcDIsIGN0eCwgQlBGX09QKGNvZGUpLCBmYWxzZSk7XG4gXHRcdGJyZWFrO1xuIFxuIFx0LyogZHN0ID0gQlNXQVAjI2ltbShkc3QpICovXG5kaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wNjQuY1xuaW5kZXggNTRiMGQ1ZTI1ZTAyNDYuLmMzMjZmYTczN2VjOGM1IDEwMDY0NFxuLS0tIGEvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXA2NC5jXG5AQCAtNTAyLDE0ICYjNDM7NTAyLDE5IEBAIHN0YXRpYyB2b2lkIGVtaXRfY2FsbCh1NjQgYWRkciwgYm9vbCBmaXhlZCwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eClcbiBcdGVtaXRfaHBwYV9jb3B5KEhQUEFfUkVHX1JFVDAsIHJlZ21hcFtCUEZfUkVHXzBdLCBjdHgpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBlbWl0X2NhbGxfbGliZ2NjX2xsKHZvaWQgKmZ1bmMsIGNvbnN0IHM4IGFyZzAsXG4tXHRcdGNvbnN0IHM4IGFyZzEsIHU4IG9wY29kZSwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eClcbiYjNDM7c3RhdGljIHZvaWQgZW1pdF9jYWxsX2xpYmdjY19sbCh2b2lkICpmdW5jLCBjb25zdCBzOCBhcmcwLCBjb25zdCBzOCBhcmcxLFxuJiM0MztcdFx0dTggb3Bjb2RlLCBib29sIGlzX3NpZ25lZCwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eClcbiB7XG4gXHR1NjQgZnVuY19hZGRyO1xuIFxuIFx0aWYgKEJQRl9DTEFTUyhvcGNvZGUpID09IEJQRl9BTFUpIHtcbi1cdFx0ZW1pdF9ocHBhNjRfemV4dDMyKGFyZzAsIEhQUEFfUkVHX0FSRzAsIGN0eCk7XG4tXHRcdGVtaXRfaHBwYTY0X3pleHQzMihhcmcxLCBIUFBBX1JFR19BUkcxLCBjdHgpO1xuJiM0MztcdFx0aWYgKGlzX3NpZ25lZCkge1xuJiM0MztcdFx0XHRlbWl0X2hwcGE2NF9zZXh0MzIoYXJnMCwgSFBQQV9SRUdfQVJHMCwgY3R4KTtcbiYjNDM7XHRcdFx0ZW1pdF9ocHBhNjRfc2V4dDMyKGFyZzEsIEhQUEFfUkVHX0FSRzEsIGN0eCk7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRlbWl0X2hwcGE2NF96ZXh0MzIoYXJnMCwgSFBQQV9SRUdfQVJHMCwgY3R4KTtcbiYjNDM7XHRcdFx0ZW1pdF9ocHBhNjRfemV4dDMyKGFyZzEsIEhQUEFfUkVHX0FSRzEsIGN0eCk7XG4mIzQzO1x0XHR9XG4gXHR9IGVsc2Uge1xuIFx0XHRlbWl0X2hwcGFfY29weShhcmcwLCBIUFBBX1JFR19BUkcwLCBjdHgpO1xuIFx0XHRlbWl0X2hwcGFfY29weShhcmcxLCBIUFBBX1JFR19BUkcxLCBjdHgpO1xuQEAgLTYwMCw2ICYjNDM7NjA1LDggQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCxcbiBcdHU4IHJkID0gLTEsIHJzID0gLTEsIGNvZGUgPSBpbnNuLVx1MDAzZWNvZGU7XG4gXHRzMTYgb2ZmID0gaW5zbi1cdTAwM2VvZmY7XG4gXHRzMzIgaW1tID0gaW5zbi1cdTAwM2VpbW07XG4mIzQzO1x0Ym9vbCBpc19zaWduZWQ7XG4mIzQzO1x0dm9pZCAqZnVuYztcbiBcbiBcdGluaXRfcmVncyhcdTAwMjZyZCwgXHUwMDI2cnMsIGluc24sIGN0eCk7XG4gXG5AQCAtNjU2LDI5ICYjNDM7NjYzLDM5IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsXG4gXHRcdGZhbGx0aHJvdWdoO1xuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX1g6XG4tXHRcdGVtaXRfY2FsbF9saWJnY2NfbGwoX19tdWxkaTMsIHJkLCBycywgY29kZSwgY3R4KTtcbiYjNDM7XHRcdGVtaXRfY2FsbF9saWJnY2NfbGwoX19tdWxkaTMsIHJkLCBycywgY29kZSwgZmFsc2UsIGN0eCk7XG4gXHRcdGlmICghaXM2NCBcdTAwMjZcdTAwMjYgIWF1eC1cdTAwM2V2ZXJpZmllcl96ZXh0KVxuIFx0XHRcdGVtaXRfemV4dF8zMihyZCwgY3R4KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfSzpcbi1cdFx0ZW1pdF9pbW0oSFBQQV9SRUdfVDEsIGlzNjQgPyAoczY0KShzMzIpaW1tIDogKHUzMilpbW0sIEhQUEFfUkVHX1QyLCBjdHgpO1xuJiM0MztcdFx0aXNfc2lnbmVkID0gKG9mZiA9PSAxKTtcbiYjNDM7XHRcdGVtaXRfaW1tKEhQUEFfUkVHX1QxLFxuJiM0MztcdFx0XHQgaXM2NCB8fCBpc19zaWduZWQgPyAoczY0KShzMzIpaW1tIDogKHUzMilpbW0sXG4mIzQzO1x0XHRcdCBIUFBBX1JFR19UMiwgY3R4KTtcbiBcdFx0cnMgPSBIUFBBX1JFR19UMTtcbiBcdFx0ZmFsbHRocm91Z2g7XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfWDpcbi1cdFx0ZW1pdF9jYWxsX2xpYmdjY19sbChcdTAwMjZocHBhX2RpdjY0LCByZCwgcnMsIGNvZGUsIGN0eCk7XG4mIzQzO1x0XHRpc19zaWduZWQgPSAob2ZmID09IDEpO1xuJiM0MztcdFx0ZnVuYyA9IGlzX3NpZ25lZCA/IFx1MDAyNmhwcGFfc2RpdjY0IDogXHUwMDI2aHBwYV9kaXY2NDtcbiYjNDM7XHRcdGVtaXRfY2FsbF9saWJnY2NfbGwoZnVuYywgcmQsIHJzLCBjb2RlLCBpc19zaWduZWQsIGN0eCk7XG4gXHRcdGlmICghaXM2NCBcdTAwMjZcdTAwMjYgIWF1eC1cdTAwM2V2ZXJpZmllcl96ZXh0KVxuIFx0XHRcdGVtaXRfemV4dF8zMihyZCwgY3R4KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfSzpcbi1cdFx0ZW1pdF9pbW0oSFBQQV9SRUdfVDEsIGlzNjQgPyAoczY0KShzMzIpaW1tIDogKHUzMilpbW0sIEhQUEFfUkVHX1QyLCBjdHgpO1xuJiM0MztcdFx0aXNfc2lnbmVkID0gKG9mZiA9PSAxKTtcbiYjNDM7XHRcdGVtaXRfaW1tKEhQUEFfUkVHX1QxLFxuJiM0MztcdFx0XHQgaXM2NCB8fCBpc19zaWduZWQgPyAoczY0KShzMzIpaW1tIDogKHUzMilpbW0sXG4mIzQzO1x0XHRcdCBIUFBBX1JFR19UMiwgY3R4KTtcbiBcdFx0cnMgPSBIUFBBX1JFR19UMTtcbiBcdFx0ZmFsbHRocm91Z2g7XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfWDpcbi1cdFx0ZW1pdF9jYWxsX2xpYmdjY19sbChcdTAwMjZocHBhX2RpdjY0X3JlbSwgcmQsIHJzLCBjb2RlLCBjdHgpO1xuJiM0MztcdFx0aXNfc2lnbmVkID0gKG9mZiA9PSAxKTtcbiYjNDM7XHRcdGZ1bmMgPSBpc19zaWduZWQgPyBcdTAwMjZocHBhX3NkaXY2NF9yZW0gOiBcdTAwMjZocHBhX2RpdjY0X3JlbTtcbiYjNDM7XHRcdGVtaXRfY2FsbF9saWJnY2NfbGwoZnVuYywgcmQsIHJzLCBjb2RlLCBpc19zaWduZWQsIGN0eCk7XG4gXHRcdGlmICghaXM2NCBcdTAwMjZcdTAwMjYgIWF1eC1cdTAwM2V2ZXJpZmllcl96ZXh0KVxuIFx0XHRcdGVtaXRfemV4dF8zMihyZCwgY3R4KTtcbiBcdFx0YnJlYWs7XG5kaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jIGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jXG5pbmRleCAxNzI3NzAxMzI0NDBkYi4uYTJmOTMyMDJhMmVmOWMgMTAwNjQ0XG4tLS0gYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuY1xuQEAgLTE5MCwzICYjNDM7MTkwLDE3IEBAIHU2NCBocHBhX2RpdjY0X3JlbSh1NjQgZGl2LCB1NjQgZGl2aXNvcilcbiBcdGRpdjY0X3U2NF9yZW0oZGl2LCBkaXZpc29yLCBcdTAwMjZyZW0pO1xuIFx0cmV0dXJuIHJlbTtcbiB9XG4mIzQzO1xuJiM0Mzt1NjQgaHBwYV9zZGl2NjQodTY0IGRpdiwgdTY0IGRpdmlzb3IpXG4mIzQzO3tcbiYjNDM7XHRzNjQgc2RpdiA9IGRpdjY0X3M2NCgoczY0KWRpdiwgKHM2NClkaXZpc29yKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuICh1NjQpc2RpdjtcbiYjNDM7fVxuJiM0MztcbiYjNDM7dTY0IGhwcGFfc2RpdjY0X3JlbSh1NjQgZGl2LCB1NjQgZGl2aXNvcilcbiYjNDM7e1xuJiM0MztcdHM2NCBzZGl2ID0gZGl2NjRfczY0KChzNjQpZGl2LCAoczY0KWRpdmlzb3IpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gKHU2NCkoKHM2NClkaXYgLSBzZGl2ICogKHM2NClkaXZpc29yKTtcbiYjNDM7fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIzOjA4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtocHBhX3NkaXY2NCYjMzQ7LAogICAgJiMzNDtocHBhX3NkaXY2NF9yZW0mIzM0OywKICAgICYjMzQ7ZW1pdF9hbHVfcjY0JiMzNDssCiAgICAmIzM0O2VtaXRfYWx1X3IzMiYjMzQ7LAogICAgJiMzNDtlbWl0X2NhbGxfbGliZ2NjX2xsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3Igc2lnbmVkIGRpdmlzaW9uIGFuZCBtb2R1bG8gb3BlcmF0aW9ucyB0byB0aGUgUEEtUklTQyBCUEYgSklUIGNvbXBpbGVyLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCB3aGVuIHJ1bm5pbmcgQlBGIHByb2dyYW1zIG9uIFBBLVJJU0MgKHdoaWNoIGNhbiBiZSBlbXVsYXRlZCBpbiBRRU1VKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDM5OWRmYmE2YzczNjFlMGM0Y2UwNWY1ZTc5YWJkZGRkYTAyNDNjZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDE3IDIzOjA4OjIzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaCBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0LmgKaW5kZXggOGI4ODk2OTU5ZjA0NDkuLjA3NDExNWM5M2M5MDljIDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0LmgKQEAgLTQ2Nyw2ICYjNDM7NDY3LDggQEAgc3RhdGljIGlubGluZSB1MzIgaHBwYV90MjFfaW5zbih1OCBvcGNvZGUsIHU4IHIyLCB1OCByMSwgdTggZXh0OCwgdTggdCkKIAogdTY0IGhwcGFfZGl2NjQodTY0IGRpdiwgdTY0IGRpdmlzb3IpOwogdTY0IGhwcGFfZGl2NjRfcmVtKHU2NCBkaXYsIHU2NCBkaXZpc29yKTsKJiM0Mzt1NjQgaHBwYV9zZGl2NjQodTY0IGRpdiwgdTY0IGRpdmlzb3IpOwomIzQzO3U2NCBocHBhX3NkaXY2NF9yZW0odTY0IGRpdiwgdTY0IGRpdmlzb3IpOwogCiAvKiBIZWxwZXIgZnVuY3Rpb25zIHRoYXQgZW1pdCBIUFBBIGluc3RydWN0aW9ucyB3aGVuIHBvc3NpYmxlLiAqLwogCmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jCmluZGV4IDVmZjBjZjkyNWZlOTUzLi5lZWEwYTM0YTNiZmVlNyAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMKQEAgLTMyMSw2ICYjNDM7MzIxLDggQEAgc3RhdGljIHZvaWQgYnBmX3B1dF9yZWczMihjb25zdCBzOCAqcmVnLCBjb25zdCBzOCAqc3JjLAogZXh0ZXJuIHZvaWQgJCRtdWxJKHZvaWQpOwogZXh0ZXJuIHZvaWQgJCRkaXZVKHZvaWQpOwogZXh0ZXJuIHZvaWQgJCRyZW1VKHZvaWQpOwomIzQzO2V4dGVybiB2b2lkICQkZGl2SSh2b2lkKTsKJiM0MztleHRlcm4gdm9pZCAkJHJlbUkodm9pZCk7CiAKIHN0YXRpYyB2b2lkIGVtaXRfY2FsbF9taWxsaWNvZGUodm9pZCAqZnVuYywgY29uc3QgczggYXJnMCwKIAkJY29uc3QgczggYXJnMSwgdTggb3Bjb2RlLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4KQpAQCAtNTYyLDEyICYjNDM7NTY0LDE0IEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X2kzMihjb25zdCBzOCAqZHN0LCBzMzIgaW1tLAogfQogCiBzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoY29uc3QgczggKmRzdCwgY29uc3QgczggKnNyYywKLQkJCSBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LCBjb25zdCB1OCBvcCkKJiM0MzsJCQkgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCwgY29uc3QgdTggb3AsCiYjNDM7CQkJIGJvb2wgaXNfc2lnbmVkKQogewogCWNvbnN0IHM4ICp0bXAxID0gcmVnbWFwW1RNUF9SRUdfMV07CiAJY29uc3QgczggKnRtcDIgPSByZWdtYXBbVE1QX1JFR18yXTsKIAljb25zdCBzOCAqcmQ7CiAJY29uc3QgczggKnJzID0gYnBmX2dldF9yZWc2NChzcmMsIHRtcDIsIGN0eCk7CiYjNDM7CXZvaWQgKmZ1bmM7CiAKIAlpZiAob3AgPT0gQlBGX01PVikKIAkJcmQgPSBicGZfZ2V0X3JlZzY0X3JlZihkc3QsIHRtcDEsIGZhbHNlLCBjdHgpOwpAQCAtNjA0LDEwICYjNDM7NjA4LDEyIEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChjb25zdCBzOCAqZHN0LCBjb25zdCBzOCAqc3JjLAogCQllbWl0X2NhbGxfbGliZ2NjX2xsKF9fbXVsZGkzLCByZCwgcnMsIG9wLCBjdHgpOwogCQlicmVhazsKIAljYXNlIEJQRl9ESVY6Ci0JCWVtaXRfY2FsbF9saWJnY2NfbGwoJmFtcDtocHBhX2RpdjY0LCByZCwgcnMsIG9wLCBjdHgpOwomIzQzOwkJZnVuYyA9IGlzX3NpZ25lZCA/ICZhbXA7aHBwYV9zZGl2NjQgOiAmYW1wO2hwcGFfZGl2NjQ7CiYjNDM7CQllbWl0X2NhbGxfbGliZ2NjX2xsKGZ1bmMsIHJkLCBycywgb3AsIGN0eCk7CiAJCWJyZWFrOwogCWNhc2UgQlBGX01PRDoKLQkJZW1pdF9jYWxsX2xpYmdjY19sbCgmYW1wO2hwcGFfZGl2NjRfcmVtLCByZCwgcnMsIG9wLCBjdHgpOwomIzQzOwkJZnVuYyA9IGlzX3NpZ25lZCA/ICZhbXA7aHBwYV9zZGl2NjRfcmVtIDogJmFtcDtocHBhX2RpdjY0X3JlbTsKJiM0MzsJCWVtaXRfY2FsbF9saWJnY2NfbGwoZnVuYywgcmQsIHJzLCBvcCwgY3R4KTsKIAkJYnJlYWs7CiAJY2FzZSBCUEZfTFNIOgogCQllbWl0X2NhbGxfbGliZ2NjX2xsKF9fYXNobGRpMywgcmQsIHJzLCBvcCwgY3R4KTsKQEAgLTYzMCw3ICYjNDM7NjM2LDggQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KGNvbnN0IHM4ICpkc3QsIGNvbnN0IHM4ICpzcmMsCiB9CiAKIHN0YXRpYyB2b2lkIGVtaXRfYWx1X3IzMihjb25zdCBzOCAqZHN0LCBjb25zdCBzOCAqc3JjLAotCQkJIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IG9wKQomIzQzOwkJCSBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LCBjb25zdCB1OCBvcCwKJiM0MzsJCQkgYm9vbCBpc19zaWduZWQpCiB7CiAJY29uc3QgczggKnRtcDEgPSByZWdtYXBbVE1QX1JFR18xXTsKIAljb25zdCBzOCAqdG1wMiA9IHJlZ21hcFtUTVBfUkVHXzJdOwpAQCAtNjY2LDEwICYjNDM7NjczLDEyIEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X3IzMihjb25zdCBzOCAqZHN0LCBjb25zdCBzOCAqc3JjLAogCQllbWl0X2NhbGxfbWlsbGljb2RlKCQkbXVsSSwgbG8ocmQpLCBsbyhycyksIG9wLCBjdHgpOwogCQlicmVhazsKIAljYXNlIEJQRl9ESVY6Ci0JCWVtaXRfY2FsbF9taWxsaWNvZGUoJCRkaXZVLCBsbyhyZCksIGxvKHJzKSwgb3AsIGN0eCk7CiYjNDM7CQllbWl0X2NhbGxfbWlsbGljb2RlKGlzX3NpZ25lZCA/ICQkZGl2SSA6ICQkZGl2VSwKJiM0MzsJCQkJICAgIGxvKHJkKSwgbG8ocnMpLCBvcCwgY3R4KTsKIAkJYnJlYWs7CiAJY2FzZSBCUEZfTU9EOgotCQllbWl0X2NhbGxfbWlsbGljb2RlKCQkcmVtVSwgbG8ocmQpLCBsbyhycyksIG9wLCBjdHgpOwomIzQzOwkJZW1pdF9jYWxsX21pbGxpY29kZShpc19zaWduZWQgPyAkJHJlbUkgOiAkJHJlbVUsCiYjNDM7CQkJCSAgICBsbyhyZCksIGxvKHJzKSwgb3AsIGN0eCk7CiAJCWJyZWFrOwogCWNhc2UgQlBGX0xTSDoKIAkJZW1pdChocHBhX3N1YmkoMHgxZiwgbG8ocnMpLCBIUFBBX1JFR19UMCksIGN0eCk7CkBAIC0xMTYzLDEyICYjNDM7MTE3MiwxMiBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LAogCQkJZW1pdF9pbW0zMih0bXAyLCBpbW0sIGN0eCk7CiAJCQlzcmMgPSB0bXAyOwogCQl9Ci0JCWVtaXRfYWx1X3I2NChkc3QsIHNyYywgY3R4LCBCUEZfT1AoY29kZSkpOwomIzQzOwkJZW1pdF9hbHVfcjY0KGRzdCwgc3JjLCBjdHgsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpOwogCQlicmVhazsKIAogCS8qIGRzdCA9IC1kc3QgKi8KIAljYXNlIEJQRl9BTFU2NCB8IEJQRl9ORUc6Ci0JCWVtaXRfYWx1X3I2NChkc3QsIHRtcDIsIGN0eCwgQlBGX09QKGNvZGUpKTsKJiM0MzsJCWVtaXRfYWx1X3I2NChkc3QsIHRtcDIsIGN0eCwgQlBGX09QKGNvZGUpLCBmYWxzZSk7CiAJCWJyZWFrOwogCiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9WIHwgQlBGX0s6CkBAIC0xMjExLDcgJiM0MzsxMjIwLDcgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCwKIAkJCWVtaXRfaW1tMzIodG1wMiwgaW1tLCBjdHgpOwogCQkJc3JjID0gdG1wMjsKIAkJfQotCQllbWl0X2FsdV9yMzIoZHN0LCBzcmMsIGN0eCwgQlBGX09QKGNvZGUpKTsKJiM0MzsJCWVtaXRfYWx1X3IzMihkc3QsIHNyYywgY3R4LCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTsKIAkJYnJlYWs7CiAKIAkvKiBkc3QgPSBkc3QgT1AgaW1tICovCkBAIC0xMjM2LDcgJiM0MzsxMjQ1LDcgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCwKIAkJICogc3JjIGlzIGlnbm9yZWQtLS1jaG9vc2UgdG1wMiBhcyBhIGR1bW15IHJlZ2lzdGVyIHNpbmNlIGl0CiAJCSAqIGlzIG5vdCBvbiB0aGUgc3RhY2suCiAJCSAqLwotCQllbWl0X2FsdV9yMzIoZHN0LCB0bXAyLCBjdHgsIEJQRl9PUChjb2RlKSk7CiYjNDM7CQllbWl0X2FsdV9yMzIoZHN0LCB0bXAyLCBjdHgsIEJQRl9PUChjb2RlKSwgZmFsc2UpOwogCQlicmVhazsKIAogCS8qIGRzdCA9IEJTV0FQIyNpbW0oZHN0KSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wNjQuYwppbmRleCA1NGIwZDVlMjVlMDI0Ni4uYzMyNmZhNzM3ZWM4YzUgMTAwNjQ0Ci0tLSBhL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXA2NC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXA2NC5jCkBAIC01MDIsMTQgJiM0Mzs1MDIsMTkgQEAgc3RhdGljIHZvaWQgZW1pdF9jYWxsKHU2NCBhZGRyLCBib29sIGZpeGVkLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4KQogCWVtaXRfaHBwYV9jb3B5KEhQUEFfUkVHX1JFVDAsIHJlZ21hcFtCUEZfUkVHXzBdLCBjdHgpOwogfQogCi1zdGF0aWMgdm9pZCBlbWl0X2NhbGxfbGliZ2NjX2xsKHZvaWQgKmZ1bmMsIGNvbnN0IHM4IGFyZzAsCi0JCWNvbnN0IHM4IGFyZzEsIHU4IG9wY29kZSwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCkKJiM0MztzdGF0aWMgdm9pZCBlbWl0X2NhbGxfbGliZ2NjX2xsKHZvaWQgKmZ1bmMsIGNvbnN0IHM4IGFyZzAsIGNvbnN0IHM4IGFyZzEsCiYjNDM7CQl1OCBvcGNvZGUsIGJvb2wgaXNfc2lnbmVkLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4KQogewogCXU2NCBmdW5jX2FkZHI7CiAKIAlpZiAoQlBGX0NMQVNTKG9wY29kZSkgPT0gQlBGX0FMVSkgewotCQllbWl0X2hwcGE2NF96ZXh0MzIoYXJnMCwgSFBQQV9SRUdfQVJHMCwgY3R4KTsKLQkJZW1pdF9ocHBhNjRfemV4dDMyKGFyZzEsIEhQUEFfUkVHX0FSRzEsIGN0eCk7CiYjNDM7CQlpZiAoaXNfc2lnbmVkKSB7CiYjNDM7CQkJZW1pdF9ocHBhNjRfc2V4dDMyKGFyZzAsIEhQUEFfUkVHX0FSRzAsIGN0eCk7CiYjNDM7CQkJZW1pdF9ocHBhNjRfc2V4dDMyKGFyZzEsIEhQUEFfUkVHX0FSRzEsIGN0eCk7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWVtaXRfaHBwYTY0X3pleHQzMihhcmcwLCBIUFBBX1JFR19BUkcwLCBjdHgpOwomIzQzOwkJCWVtaXRfaHBwYTY0X3pleHQzMihhcmcxLCBIUFBBX1JFR19BUkcxLCBjdHgpOwomIzQzOwkJfQogCX0gZWxzZSB7CiAJCWVtaXRfaHBwYV9jb3B5KGFyZzAsIEhQUEFfUkVHX0FSRzAsIGN0eCk7CiAJCWVtaXRfaHBwYV9jb3B5KGFyZzEsIEhQUEFfUkVHX0FSRzEsIGN0eCk7CkBAIC02MDAsNiAmIzQzOzYwNSw4IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsCiAJdTggcmQgPSAtMSwgcnMgPSAtMSwgY29kZSA9IGluc24tJmd0O2NvZGU7CiAJczE2IG9mZiA9IGluc24tJmd0O29mZjsKIAlzMzIgaW1tID0gaW5zbi0mZ3Q7aW1tOwomIzQzOwlib29sIGlzX3NpZ25lZDsKJiM0MzsJdm9pZCAqZnVuYzsKIAogCWluaXRfcmVncygmYW1wO3JkLCAmYW1wO3JzLCBpbnNuLCBjdHgpOwogCkBAIC02NTYsMjkgJiM0Mzs2NjMsMzkgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCwKIAkJZmFsbHRocm91Z2g7CiAJY2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9YOgogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX01VTCB8IEJQRl9YOgotCQllbWl0X2NhbGxfbGliZ2NjX2xsKF9fbXVsZGkzLCByZCwgcnMsIGNvZGUsIGN0eCk7CiYjNDM7CQllbWl0X2NhbGxfbGliZ2NjX2xsKF9fbXVsZGkzLCByZCwgcnMsIGNvZGUsIGZhbHNlLCBjdHgpOwogCQlpZiAoIWlzNjQgJmFtcDsmYW1wOyAhYXV4LSZndDt2ZXJpZmllcl96ZXh0KQogCQkJZW1pdF96ZXh0XzMyKHJkLCBjdHgpOwogCQlicmVhazsKIAljYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX0s6CiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX0s6Ci0JCWVtaXRfaW1tKEhQUEFfUkVHX1QxLCBpczY0ID8gKHM2NCkoczMyKWltbSA6ICh1MzIpaW1tLCBIUFBBX1JFR19UMiwgY3R4KTsKJiM0MzsJCWlzX3NpZ25lZCA9IChvZmYgPT0gMSk7CiYjNDM7CQllbWl0X2ltbShIUFBBX1JFR19UMSwKJiM0MzsJCQkgaXM2NCB8fCBpc19zaWduZWQgPyAoczY0KShzMzIpaW1tIDogKHUzMilpbW0sCiYjNDM7CQkJIEhQUEFfUkVHX1QyLCBjdHgpOwogCQlycyA9IEhQUEFfUkVHX1QxOwogCQlmYWxsdGhyb3VnaDsKIAljYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX1g6CiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX1g6Ci0JCWVtaXRfY2FsbF9saWJnY2NfbGwoJmFtcDtocHBhX2RpdjY0LCByZCwgcnMsIGNvZGUsIGN0eCk7CiYjNDM7CQlpc19zaWduZWQgPSAob2ZmID09IDEpOwomIzQzOwkJZnVuYyA9IGlzX3NpZ25lZCA/ICZhbXA7aHBwYV9zZGl2NjQgOiAmYW1wO2hwcGFfZGl2NjQ7CiYjNDM7CQllbWl0X2NhbGxfbGliZ2NjX2xsKGZ1bmMsIHJkLCBycywgY29kZSwgaXNfc2lnbmVkLCBjdHgpOwogCQlpZiAoIWlzNjQgJmFtcDsmYW1wOyAhYXV4LSZndDt2ZXJpZmllcl96ZXh0KQogCQkJZW1pdF96ZXh0XzMyKHJkLCBjdHgpOwogCQlicmVhazsKIAljYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX0s6CiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX0s6Ci0JCWVtaXRfaW1tKEhQUEFfUkVHX1QxLCBpczY0ID8gKHM2NCkoczMyKWltbSA6ICh1MzIpaW1tLCBIUFBBX1JFR19UMiwgY3R4KTsKJiM0MzsJCWlzX3NpZ25lZCA9IChvZmYgPT0gMSk7CiYjNDM7CQllbWl0X2ltbShIUFBBX1JFR19UMSwKJiM0MzsJCQkgaXM2NCB8fCBpc19zaWduZWQgPyAoczY0KShzMzIpaW1tIDogKHUzMilpbW0sCiYjNDM7CQkJIEhQUEFfUkVHX1QyLCBjdHgpOwogCQlycyA9IEhQUEFfUkVHX1QxOwogCQlmYWxsdGhyb3VnaDsKIAljYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6CiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX1g6Ci0JCWVtaXRfY2FsbF9saWJnY2NfbGwoJmFtcDtocHBhX2RpdjY0X3JlbSwgcmQsIHJzLCBjb2RlLCBjdHgpOwomIzQzOwkJaXNfc2lnbmVkID0gKG9mZiA9PSAxKTsKJiM0MzsJCWZ1bmMgPSBpc19zaWduZWQgPyAmYW1wO2hwcGFfc2RpdjY0X3JlbSA6ICZhbXA7aHBwYV9kaXY2NF9yZW07CiYjNDM7CQllbWl0X2NhbGxfbGliZ2NjX2xsKGZ1bmMsIHJkLCBycywgY29kZSwgaXNfc2lnbmVkLCBjdHgpOwogCQlpZiAoIWlzNjQgJmFtcDsmYW1wOyAhYXV4LSZndDt2ZXJpZmllcl96ZXh0KQogCQkJZW1pdF96ZXh0XzMyKHJkLCBjdHgpOwogCQlicmVhazsKZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuYwppbmRleCAxNzI3NzAxMzI0NDBkYi4uYTJmOTMyMDJhMmVmOWMgMTAwNjQ0Ci0tLSBhL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb3JlLmMKQEAgLTE5MCwzICYjNDM7MTkwLDE3IEBAIHU2NCBocHBhX2RpdjY0X3JlbSh1NjQgZGl2LCB1NjQgZGl2aXNvcikKIAlkaXY2NF91NjRfcmVtKGRpdiwgZGl2aXNvciwgJmFtcDtyZW0pOwogCXJldHVybiByZW07CiB9CiYjNDM7CiYjNDM7dTY0IGhwcGFfc2RpdjY0KHU2NCBkaXYsIHU2NCBkaXZpc29yKQomIzQzO3sKJiM0MzsJczY0IHNkaXYgPSBkaXY2NF9zNjQoKHM2NClkaXYsIChzNjQpZGl2aXNvcik7CiYjNDM7CiYjNDM7CXJldHVybiAodTY0KXNkaXY7CiYjNDM7fQomIzQzOwomIzQzO3U2NCBocHBhX3NkaXY2NF9yZW0odTY0IGRpdiwgdTY0IGRpdmlzb3IpCiYjNDM7ewomIzQzOwlzNjQgc2RpdiA9IGRpdjY0X3M2NCgoczY0KWRpdiwgKHM2NClkaXZpc29yKTsKJiM0MzsKJiM0MzsJcmV0dXJuICh1NjQpKChzNjQpZGl2IC0gc2RpdiAqIChzNjQpZGl2aXNvcik7CiYjNDM7fQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMzowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTM3CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBBLVJJU0MgQlBGIEpJVCBQYXRjaCBBbmFseXNpcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IGFkZHMgc2lnbmVkIGRpdmlzaW9uIGFuZCBtb2R1bG8gc3VwcG9ydCAoYHNkaXZgLCBgc21vZGApIHRvIHRoZSBCUEYgSklUIGNvbXBpbGVyLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBQQS1SSVNDIGFyY2hpdGVjdHVyZS4gVGhlIGNvZGUgY2hhbmdlcyBhcmUgaW4gdGhlIGBhcmNoL3BhcmlzYy9uZXQvYCBkaXJlY3RvcnksIHdoaWNoIG1ha2VzIGl0IGFyY2hpdGVjdHVyZS1zcGVjaWZpYy4gTmF0dXJhbGx5LCBpdCYjMzk7cyBvbmx5IGdvaW5nIHRvIGJlIGNvbXBpbGVkIGlmIHRoZSBrZXJuZWwgaXMgY29uZmlndXJlZCBmb3IgUEEtUklTQy4KCk15IGZpcnN0IHRob3VnaHQgaXMgYWJvdXQgZnV6emluZy4gV2UgdHlwaWNhbGx5IHNlZSBmdXp6aW5nIG9uIHg4Nl82NCwgQVJNNjQsIFJJU0MtViwgYW5kIHRoZSBsaWtlLiBEb2VzIHN5emthbGxlciBldmVuIHRhcmdldCBQQS1SSVNDPyBJIG5lZWQgdG8gY2hlY2suIEV2ZW4gaWYgaXQgZG9lc24mIzM5O3QgKmN1cnJlbnRseSogZnV6eiBQQS1SSVNDLCBpdOKAmXMgc3RpbGwgZ29vZCB0byBoYXZlIHRoZSBjb2RlIHRoZXJlIGZvciBzb21lb25lIHdobyAqZG9lcyogcnVuIGl0IG9uIHRoYXQgYXJjaGl0ZWN0dXJlLiBIb3dldmVyLCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoZSBpbnN0cnVjdGlvbnMgZm9yIGNvZGUgZnV6emluZy4gVGhlcmUgbWlnaHQgYmUgY29kZSBwYXRocyB3aGljaCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEx1Y2tpbHksIFFFTVUgKmRvZXMqIHN1cHBvcnQgUEEtUklTQyBlbXVsYXRpb24gKGBxZW11LXN5c3RlbS1ocHBhYCkuIFNvIHRoYXQmIzM5O3Mgbm90IGEgY29uY2Vybi4KCk5vdyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBuZWNlc3Nhcnkga2VybmVsIGNvbmZpZ3VyYXRpb24uIFdlJiMzOTtsbCBuZWVkIGBDT05GSUdfQlBGX0pJVGAgZm9yIHN1cmUsIGFuZCBvYnZpb3VzbHkgYENPTkZJR19QQVJJU0NgLiBMZXQgbWUganVzdCBkb3VibGUgY2hlY2sgdGhlIEtjb25maWcgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIFBBLVJJU0MgcmVsYXRlZCBkZXRhaWxzIGZvciBgQlBGX0pJVGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjM6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlBGX0pJVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcGFyaXNjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcGFyaXNjL0tjb25maWc9Mj1jb25maWcgUEFSSVNDXG4tLVxuYXJjaC9wYXJpc2MvS2NvbmZpZy03Mi1cdHNlbGVjdCBIQVZFX0FSQ0hfVFJBQ0VIT09LXG5hcmNoL3BhcmlzYy9LY29uZmlnOjczOlx0c2VsZWN0IEhBVkVfRUJQRl9KSVRcbmFyY2gvcGFyaXNjL0tjb25maWc6NzQ6XHRzZWxlY3QgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVFxuYXJjaC9wYXJpc2MvS2NvbmZpZy03NS1cdHNlbGVjdCBIQVZFX1JFR1NfQU5EX1NUQUNLX0FDQ0VTU19BUElcbi0tXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGUtMi1cbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZTozOm9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb3JlLm9cbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZS00LVxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlPTU9aWZlcSAoJChDT05GSUdfNjRCSVQpLHkpXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGU6NjpcdG9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb21wNjQub1xuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlLTctZWxzZVxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlOjg6XHRvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29tcDMyLm9cbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZS05LWVuZGlmXG4tLVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaC04LVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaDo5OiNpZm5kZWYgX0JQRl9KSVRfSFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaDoxMDojZGVmaW5lIF9CUEZfSklUX0hcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtMTEtXG4tLVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaD00Nzg9aW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCxcbi0tXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oLTQ4MC1cbmFyY2gvcGFyaXNjL25ldC9icGZfaml0Lmg6NDgxOiNlbmRpZiAvKiBfQlBGX0pJVF9IICovXG4tLVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMtMzItICogICAgICAgICAgICAgICAgICYjNDM7LS0tLS0tLS0tLSYjNDM7IFx1MDAzYz0gKHNwIC0gNCAqIE5SX1NBVkVEX1JFR0lTVEVSU1xuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmM6MzM6ICogICAgICAgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgLSA0ICogQlBGX0pJVF9TQ1JBVENIX1JFR1MpXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy0zNC0gKiAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8XG4tLVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmM9NDM9ZW51bSB7XG4tLVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMtNTQtXHRCUEZfUjBfVEVNUF9MTyxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jOjU1Olx0QlBGX0pJVF9TQ1JBVENIX1JFR1MsXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy01Ni19O1xuLS1cbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jLTY4LVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmM6Njk6I2RlZmluZSBUTVBfUkVHXzFcdChNQVhfQlBGX0pJVF9SRUcgJiM0MzsgMClcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jOjcwOiNkZWZpbmUgVE1QX1JFR18yXHQoTUFYX0JQRl9KSVRfUkVHICYjNDM7IDEpXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYzo3MTojZGVmaW5lIFRNUF9SRUdfUjBcdChNQVhfQlBGX0pJVF9SRUcgJiM0MzsgMilcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jLTcyLVxuLS1cbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jPTE0NzY9dm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgpXG4tLVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTQ5Ny1cdC8qIG1ha2Ugc3BhY2UgZm9yIEJQRiByZWdpc3RlcnMgb24gc3RhY2suICovXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYzoxNDk4Olx0c3RhY2tfYWRqdXN0ICYjNDM7PSBCUEZfSklUX1NDUkFUQ0hfUkVHUyAqIFJFR19TSVpFO1xuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTQ5OS1cdC8qIG1ha2Ugc3BhY2UgZm9yIEJQRiBzdGFjay4gKi9cbi0tXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xNjEwLVx0XHRpZiAoUkVHX1dBU19TRUVOKGN0eCwgbG8ocmVnKSkpXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYzoxNjExOlx0XHRcdGVtaXQoaHBwYV9sZG8oLVJFR19TSVpFICogKE5SX1NBVkVEX1JFR0lTVEVSUyAmIzQzOyBCUEZfSklUX1NDUkFUQ0hfUkVHUyksXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xNjEyLVx0XHRcdFx0SFBQQV9SRUdfU1AsIGxvKHJlZykpLCBjdHgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIzOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0MzkKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA1MzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQQS1SSVNDIEJQRiBKSVQgQ29tcGlsZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIHRoZSBQQS1SSVNDIGFyY2hpdGVjdHVyZSYjMzk7cyBCUEYgSklUIGNvbXBpbGVyLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBtb2RpZmljYXRpb25zIHRvIGBhcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuY2AsIGBhcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wNjQuY2AsIGFuZCBgYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jYC4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSB0aGUgYWRkaXRpb24gb2YgYGhwcGFfc2RpdjY0YCBhbmQgYGhwcGFfc2RpdjY0X3JlbWAgdG8gYGJwZl9qaXRfY29yZS5jYCwgcGx1cyBzb21lIG1vZGlmaWNhdGlvbnMgaW4gdGhlIDMyLWJpdCBhbmQgNjQtYml0IGNvbXBpbGF0aW9uIGZpbGVzLgoKVGhlIGtleSBmdW5jdGlvbnMgdG8gY29uY2VudHJhdGUgb24gYXJlOiBgYnBmX2ppdF9lbWl0X2luc25gLCBgZW1pdF9hbHVfcjY0YCwgYGVtaXRfYWx1X3IzMmAsIGBlbWl0X2NhbGxfbGliZ2NjX2xsYCwgYGhwcGFfc2RpdjY0YCwgYW5kIGBocHBhX3NkaXY2NF9yZW1gLiBUaGVzZSBhcmUgb2J2aW91c2x5IHdoZXJlIHRoZSBuZXcgY29kZSBvciB0aGUgYWx0ZXJlZCBjb2RlIHJlc2lkZXMuIFRoZSBgQlBGX0pJVGAgY29uZmlnIHNlZW1zIHJlbGV2YW50IGhlcmUsIG5hdHVyYWxseS4KClRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIHdhcnJhbnQgZnV6emluZz8gQWJzb2x1dGVseS4gSXTigJlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEpJVCBjb21waWxlciwgYW5kIHRob3NlIGFyZSBhbHdheXMgZ29vZCB0YXJnZXRzLiBOb3csIHRoZSBwb3RlbnRpYWwgcHJvYmxlbSBpcyB0aGF0IFN5emthbGxlciwgaW4gaXRzIGRlZmF1bHQgc2V0dXAsIGRvZXNuJiMzOTt0IG5hdGl2ZWx5IHN1cHBvcnQgUEEtUklTQyBmdXp6aW5nLiBCdXQsIHdhaXQsIHRoZSBub3RlcyBzcGVjaWZ5IHRoYXQgaXQgKmNhbiogYmUgY29uZmlndXJlZCBpZiBRRU1VIHN1cHBvcnRzIGl0LiBBbmQgaXQgZG9lcy4gR3JlYXQuIEl0IG1lbnRpb25zIHNvbWV0aGluZyBhYm91dCAmIzM0O2ltcG9zc2libGUgY29kZSBwYXRocyYjMzQ7IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBidXQgc2luY2UgUUVNVSBzdXBwb3J0cyBQQS1SSVNDLCB0aGlzIHNob3VsZG4mIzM5O3QgYmUgYSBwcm9ibGVtLgoKTm93LCB3aGljaCBmdW5jdGlvbiBpcyB0aGUgYmVzdCB0byBmb2N1cyBvbj8gYGJwZl9qaXRfZW1pdF9pbnNuYCBpcyBhIGJpdCBnZW5lcmljIGZvciB0aGUgSklUIGNvbXBpbGVyLCBidXQgaXQmIzM5O3Mgd2hlcmUgdGhlIGNoYW5nZXMgb2NjdXIgc28gaXQmIzM5O3MgcHJvYmFibHkgaW1wb3J0YW50LiBgZW1pdF9hbHVfcjY0YCBhbmQgYGVtaXRfYWx1X3IzMmAgYWxzbyBzb3VuZCBsaWtlIGdvb2QgY2FuZGlkYXRlcyB0byBsb29rIGF0LiBBbmQgYGhwcGFfc2RpdjY0YCBhbmQgYGhwcGFfc2RpdjY0X3JlbWAgc291bmQgbGlrZSBnb2xkLWxldmVsIHRhcmdldGVkIGZ1bmN0aW9ucyBiZWNhdXNlIHRoZXkgYXJlIHF1aXRlIHNwZWNpZmljLgoKSSBuZWVkIHRvIG5haWwgZG93biB0aGUgZXhhY3Qgc2lnbmF0dXJlIG9mIGBicGZfaml0X2VtaXRfaW5zbmAgaW4gYGFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXA2NC5jYCwgdG8gdW5kZXJzdGFuZCBpdHMgaW5wdXRzIGFuZCBvdXRwdXRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIzOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9qaXRfZW1pdF9pbnNuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmM9NTU5PXN0YXRpYyB2b2lkIGVtaXRfc3RvcmUoY29uc3QgczggcmQsIGNvbnN0IHM4IHJzLCBzMTYgb2ZmLFxuLS1cbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXA2NC5jLTU5Ni1cbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXA2NC5jOjU5NzppbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmMtNTk4LVx0XHQgICAgICBib29sIGV4dHJhX3Bhc3MpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjM6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODczNwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQQS1SSVNDIEpJVCBDb21waWxhdGlvbiBmb3IgNjQtYml0IERpdmlzaW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIDY0LWJpdCBkaXZpc2lvbiBpbXBsZW1lbnRhdGlvbiB3aXRoaW4gdGhpcyBQQS1SSVNDIEpJVCBjb21waWxlci4gSSBrbm93IGhvdyBjcml0aWNhbCBlZmZpY2llbnQgZGl2aXNpb24gaXMgaW4gYW55IEJQRiBjb250ZXh0LCBhbmQgSSYjMzk7bSBndWVzc2luZyB0aGVyZSYjMzk7cyBwb3RlbnRpYWwgZm9yIG9wdGltaXphdGlvbiBoZXJlLiBNeSBpbW1lZGlhdGUgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlc2Ugc3BlY2lmaWMgZnVuY3Rpb25zOiBgaHBwYV9zZGl2NjRgLCBgaHBwYV9zZGl2NjRfcmVtYCwgYGVtaXRfYWx1X3I2NGAsIGBlbWl0X2FsdV9yMzJgLCBhbmQgYGVtaXRfY2FsbF9saWJnY2NfbGxgLiBUaGV5IGFyZSB0aGUgbGlrZWx5IGtleSBwbGF5ZXJzIGluIGhvdyB0aGlzIGFyY2hpdGVjdHVyZSBoYW5kbGVzIHNpZ25lZCA2NC1iaXQgZGl2aXNpb24uCgpSaWdodCwgc28gd2hlcmUmIzM5O3MgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQ/IEdpdmVuIHRoZSBjb250ZXh0LCB0aGUgZnVuY3Rpb24gYGVtaXRfYWx1X3I2NGAgbG9va3MgbGlrZSBhIGdvb2QganVtcGluZy1vZmYgcG9pbnQuIEl04oCZcyBwcm9iYWJseSB0aGUgbG93ZXItbGV2ZWwgZnVuY3Rpb24gdGhhdCBlbWl0cyB0aGUgYWN0dWFsIEFMVSBpbnN0cnVjdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYGFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIHZpZXcgb24gaG93IDY0LWJpdCBkaXZpc2lvbiBpcyBiZWluZyBsb3dlcmVkIGludG8gdGhlIElTQS4gTGV04oCZcyBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBnb2luZyBvbiBpbiB0aGVyZS4uLiBJJiMzOTttIGV4cGVjdGluZyB0aGlzIHRvIHNoZWQgbGlnaHQgb24gd2hldGhlciBvciBub3QgdGhleSBhcmUgdXNpbmcgZGlyZWN0IGluc3RydWN0aW9ucywgbGlicmFyeSBjYWxscywgb3Igc29tZSBjb21iaW5hdGlvbiBvZiB0aGUgdHdvLiBVbmRlcnN0YW5kaW5nIHRoYXQgcXVpY2tseSB3aWxsIGJlIGNydWNpYWwgdG8gZnVydGhlciBhbmFseXNpcyBhbmQgcG90ZW50aWFsIG9wdGltaXphdGlvbiwgYXMgd2VsbCBhcyBmaW5kaW5nIGFyZWFzIHdoZXJlIHRoaXMgY291bGQgYmUgaW5saW5lZCBmb3IgZWZmaWNpZW5jeSBvciBwb3RlbnRpYWxseSBpbXByb3ZlZCB2aWEgaW5zdHJ1Y3Rpb24gc2VsZWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIzOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VtaXRfYWx1X3I2NCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jPTUxMT1zdGF0aWMgdm9pZCBlbWl0X2FsdV9pMzIoY29uc3QgczggKmRzdCwgczMyIGltbSxcbi0tXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy01NjUtXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYzo1NjY6c3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KGNvbnN0IHM4ICpkc3QsIGNvbnN0IHM4ICpzcmMsXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy01NjctXHRcdFx0IHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IG9wLFxuLS1cbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jPTExMjU9aW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCxcbi0tXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xMTc0LVx0XHR9XG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYzoxMTc1Olx0XHRlbWl0X2FsdV9yNjQoZHN0LCBzcmMsIGN0eCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xMTc2LVx0XHRicmVhaztcbi0tXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xMTc5LVx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTkVHOlxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmM6MTE4MDpcdFx0ZW1pdF9hbHVfcjY0KGRzdCwgdG1wMiwgY3R4LCBCUEZfT1AoY29kZSksIGZhbHNlKTtcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jLTExODEtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIzOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2NTIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIFJlcXVpcmVtZW50cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIEluaXRpYWxseSwgSSBzYXcgYEJQRl9KSVRgIGFuZCBgUEFSSVNDYCBsaXN0ZWQuIEhvbGQgb24gYSBzZWNvbmQsIHRoYXQgZG9lc24mIzM5O3QgbWFrZSBzZW5zZS4gYFBBUklTQ2AgaXMgYW4gKmFyY2hpdGVjdHVyZSosIG5vdCBhIGNvbmZpZ3VyYWJsZSBvcHRpb24geW91IHRvZ2dsZSBvbiBvciBvZmYgaW4gYSBjb25maWd1cmF0aW9uIGZpbGUgbGlrZSBhIGAuY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gYmUgbW9yZSBwcmVjaXNlIGhlcmUuIEkgc2hvdWxkIGp1c3QgbGlzdCBgQlBGX0pJVGAgc2luY2UgdGhhdCYjMzk7cyBhIGxlZ2l0aW1hdGUgY29uZmlndXJhdGlvbiBzZXR0aW5nLgoKSG1tLCBidXQgd2FpdCwgdGhlIGluc3RydWN0aW9ucyBhcmUgcXVpdGUgY2xlYXI6ICYjMzQ7RG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0IHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4mIzM0OyBJcyBgQlBGX0pJVGAgc3BlY2lmaWMgKmVub3VnaCo/IFdlbGwsIGNvbnNpZGVyaW5nIHRoaXMgaXMgcmVsYXRlZCB0byBCUEYgSklUIGNvZGUsIHllYWgsIGl0IHNlZW1zIGFwcHJvcHJpYXRlbHkgdGFyZ2V0ZWQuIEl0JiMzOTtzIG5vdCBzb21ldGhpbmcgYnJvYWRseSBlbmFibGVkIGFjcm9zcyBldmVyeSBzeXN0ZW0uIEl0JiMzOTtzIGRpcmVjdGx5IHRpZWQgdG8gdGhlIEpJVCBmdW5jdGlvbmFsaXR5LgoKTm93LCBhIHF1aWNrIHNhbml0eSBjaGVjay4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgQlBGX0pJVGAgaXNuJiMzOTt0IGFscmVhZHkgZW5hYmxlZCBieSBkZWZhdWx0IGluIHN5emJvdC4gSXQgdXN1YWxseSBpcywgYnV0IEkgc2hvdWxkIGxpc3QgaXQgYW55d2F5IHRvIGJlIGV4dHJhIHN1cmUgdGhlIGludGVudGlvbiBpcyB1bmRlcnN0b29kLiBBbHdheXMgZ29vZCB0byBiZSBleHBsaWNpdC4KClJpZ2h0LCBJJiMzOTtsbCBnbyB0aHJvdWdoIHRoZSBjb25maWd1cmF0aW9ucyBhZ2FpbiB0byBjaGVjayBmb3IgYW55IG90aGVyIG9uZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIzOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3BhcmlzYy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcGFyaXNjL25ldC9NYWtlZmlsZS0yLVxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvcmUub1xuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlLTQtXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGU6NTppZmVxICgkKENPTkZJR182NEJJVCkseSlcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZTo2Olx0b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXA2NC5vXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGUtNy1lbHNlXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGU6ODpcdG9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb21wMzIub1xuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlLTktZW5kaWZcbi0tXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oPTI1PWVudW0ge1xuLS1cbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtNDQtXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oOjQ1OiNpZmRlZiBDT05GSUdfNjRCSVRcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtNDYtXHRIUFBBX1JFR19UQ0NcdCAgICAgPSAzLFxuLS1cbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtNTctXHRIUFBBX1JFR19UMiA9XHRIUFBBX1JFR19BUkc0LFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaDo1ODojaWZuZGVmIENPTkZJR182NEJJVFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaC01OS1cdEhQUEFfUkVHX1QzID1cdEhQUEFfUkVHX0FSRzUsXHQvKiBub3QgdXNlZCBpbiA2NC1iaXQgKi9cbi0tXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oPTY1PXN0cnVjdCBocHBhX2ppdF9jb250ZXh0IHtcbi0tXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oLTE4MC0jZGVmaW5lIGhwcGFfY29tYnQocjEsIHIyLCB0YXJnZXRfYWRkciwgY29uZGl0aW9uLCBub3ApIFxcXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oOjE4MTpcdGhwcGFfdDExX2luc24oSVNfRU5BQkxFRChDT05GSUdfNjRCSVQpID8gMHgyNyA6IDB4MjAsIFxcXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oLTE4Mi1cdFx0cjIsIHIxLCBjb25kaXRpb24sIHRhcmdldF9hZGRyLCBub3ApXHRcdC8qIGNvbWJ0LGNvbmQsbiByMSxyMixhZGRyICovXG4tLVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaC0xOTQtI2RlZmluZSBocHBhX2NvbWJmKHIxLCByMiwgdGFyZ2V0X2FkZHIsIGNvbmRpdGlvbiwgbm9wKSBcXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaDoxOTU6XHRocHBhX3QxMV9pbnNuKElTX0VOQUJMRUQoQ09ORklHXzY0QklUKSA/IDB4MmYgOiAweDIyLCBcXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaC0xOTYtXHRcdHIyLCByMSwgY29uZGl0aW9uLCB0YXJnZXRfYWRkciwgbm9wKVx0XHQvKiBjb21iZixjb25kLG4gcjEscjIsYWRkciAqL1xuLS1cbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtMjA4LS8qIDY0LWJpdCBpbnN0cnVjdGlvbnMgKi9cbmFyY2gvcGFyaXNjL25ldC9icGZfaml0Lmg6MjA5OiNpZmRlZiBDT05GSUdfNjRCSVRcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtMjEwLSNkZWZpbmUgaHBwYTY0X2xkZF9yZWcocmVnLCBiLCB0YXJnZXQpIFxcXG4tLVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaD0zNjU9c3RhdGljIGlubGluZSB1bnNpZ25lZCByZV9hc3NlbWJsZV8xNCh1bnNpZ25lZCBhczE0KVxuLS1cbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtMzcwLVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaDozNzE6I2lmZGVmIENPTkZJR182NEJJVFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaC0zNzItc3RhdGljIGlubGluZSB1bnNpZ25lZCByZV9hc3NlbWJsZV8xNih1bnNpZ25lZCBhczE2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMzowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTAzNgoJCQkJCQkJb3V0cHV0OiAxNDQKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUEEtUklTQyBCUEYgSklUIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgUEEtUklTQyBhcmNoaXRlY3R1cmUmIzM5O3MgQlBGIEpJVCBjb21waWxlci4gV2hpbGUgYDY0QklUYCBpcyAqdGVjaG5pY2FsbHkqIHJlbGV2YW50IGR1ZSB0byBpdHMgZ2VuZXJhbCBuYXR1cmUsIHRoZSBjb3JlIG9mIHRoaXMgaXMgZGVmaW5pdGVseSBgQlBGX0pJVGAuIFRoYXQmIzM5O3MgdGhlIG9uZSBJIG5lZWQgdG8gZm9jdXMgb24uCgpMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIGNsZWFybHkuIFRoaXMgcGF0Y2ggaXMgYWJzb2x1dGVseSB3b3J0aCBmdXp6aW5nIOKAkyBgV29ydGhGdXp6aW5nOiB0cnVlYC4gVGhlIHJlYXNvbiBpcyBzb2xpZDogSXQmIzM5O3MgaW50cm9kdWNpbmcgbmV3IHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgd2l0aGluIHRoZSBQQS1SSVNDIEJQRiBKSVQgY29tcGlsZXIuIFRoaXMgaXMgYXJjaGl0ZWN0dXJhbCBmdW5jdGlvbmFsaXR5IHRoYXQmIzM5O3Mgc3BlY2lmaWMgdG8gUEEtUklTQywgYW5kIGNyaXRpY2FsbHksICpyZWFjaGFibGUqIHdoZW4gcnVubmluZyBCUEYgcHJvZ3JhbXMgb24gdGhhdCBhcmNoaXRlY3R1cmUuIFRoZSBmYWN0IHRoYXQgUEEtUklTQyBjYW4gYmUgZW11bGF0ZWQgdXNpbmcgUUVNVSBpcyBhIGh1Z2UgYm9udXMsIG1lYW5pbmcgdGVzdGluZyB0aGlzIGlzIGNvbXBsZXRlbHkgZmVhc2libGUuCgpUaGUgZnVuY3Rpb25zIEkgbmVlZCB0byB0YXJnZXQgZm9yIGRlZXAgZGl2ZXMgYXJlOiBgaHBwYV9zZGl2NjRgLCBgaHBwYV9zZGl2NjRfcmVtYCwgYGVtaXRfYWx1X3I2NGAsIGBlbWl0X2FsdV9yMzJgLCBhbmQgYGVtaXRfY2FsbF9saWJnY2NfbGxgLiBUaGVzZSBhcmUgdGhlIGtleSBzeW1ib2xzLCBhcyB0aGV5IGFyZSBsaWtlbHkgd2hlcmUgdGhlIG5ldyBvcGVyYXRpb25zIGFyZSBpbXBsZW1lbnRlZC4gQW5kIHRoZSBlbmFibGluZyBjb25maWcsIHRoZSBvbmUgdGhhdCBtYWtlcyB0aGlzIGFsbCBwb3NzaWJsZSwgaXMgYEJQRl9KSVRgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMzowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hwcGFfc2RpdjY0JiMzNDssCiAgICAmIzM0O2hwcGFfc2RpdjY0X3JlbSYjMzQ7LAogICAgJiMzNDtlbWl0X2FsdV9yNjQmIzM0OywKICAgICYjMzQ7ZW1pdF9hbHVfcjMyJiMzNDssCiAgICAmIzM0O2VtaXRfY2FsbF9saWJnY2NfbGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zIHRvIHRoZSBQQS1SSVNDIEJQRiBKSVQgY29tcGlsZXIuIFRoaXMgaXMgZnVuY3Rpb25hbCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSB0aGF0IGNhbiBiZSByZWFjaGVkIHdoZW4gcnVubmluZyBCUEYgcHJvZ3JhbXMgb24gUEEtUklTQyAod2hpY2ggY2FuIGJlIGVtdWxhdGVkIGluIFFFTVUpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aHBwYV9zZGl2NjQmIzM0OywKICAgICYjMzQ7aHBwYV9zZGl2NjRfcmVtJiMzNDssCiAgICAmIzM0O2VtaXRfYWx1X3I2NCYjMzQ7LAogICAgJiMzNDtlbWl0X2FsdV9yMzImIzM0OywKICAgICYjMzQ7ZW1pdF9jYWxsX2xpYmdjY19sbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgdG8gdGhlIFBBLVJJU0MgQlBGIEpJVCBjb21waWxlci4gVGhpcyBpcyBmdW5jdGlvbmFsIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgd2hlbiBydW5uaW5nIEJQRiBwcm9ncmFtcyBvbiBQQS1SSVNDICh3aGljaCBjYW4gYmUgZW11bGF0ZWQgaW4gUUVNVSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xN1QyMzowODoyNS4xOTg1NjQwNzdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODg4MTU2NTc0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaHBwYV9zZGl2NjRcIixcbiAgICBcImhwcGFfc2RpdjY0X3JlbVwiLFxuICAgIFwiZW1pdF9hbHVfcjY0XCIsXG4gICAgXCJlbWl0X2FsdV9yMzJcIixcbiAgICBcImVtaXRfY2FsbF9saWJnY2NfbGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgdG8gdGhlIFBBLVJJU0MgQlBGIEpJVCBjb21waWxlci4gVGhpcyBpcyBmdW5jdGlvbmFsIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgd2hlbiBydW5uaW5nIEJQRiBwcm9ncmFtcyBvbiBQQS1SSVNDICh3aGljaCBjYW4gYmUgZW11bGF0ZWQgaW4gUUVNVSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIzOjA4OjI1LjE5ODU3MTU3N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEwODEwMzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNDM5OWRmYmE2YzczNjFlMGM0Y2UwNWY1ZTc5YWJkZGRkYTAyNDNjZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAxNyAyMzowODoyMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oIGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaFxcbmluZGV4IDhiODg5Njk1OWYwNDQ5Li4wNzQxMTVjOTNjOTA5YyAxMDA2NDRcXG4tLS0gYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oXFxuKysrIGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaFxcbkBAIC00NjcsNiArNDY3LDggQEAgc3RhdGljIGlubGluZSB1MzIgaHBwYV90MjFfaW5zbih1OCBvcGNvZGUsIHU4IHIyLCB1OCByMSwgdTggZXh0OCwgdTggdClcXG4gXFxuIHU2NCBocHBhX2RpdjY0KHU2NCBkaXYsIHU2NCBkaXZpc29yKTtcXG4gdTY0IGhwcGFfZGl2NjRfcmVtKHU2NCBkaXYsIHU2NCBkaXZpc29yKTtcXG4rdTY0IGhwcGFfc2RpdjY0KHU2NCBkaXYsIHU2NCBkaXZpc29yKTtcXG4rdTY0IGhwcGFfc2RpdjY0X3JlbSh1NjQgZGl2LCB1NjQgZGl2aXNvcik7XFxuIFxcbiAvKiBIZWxwZXIgZnVuY3Rpb25zIHRoYXQgZW1pdCBIUFBBIGluc3RydWN0aW9ucyB3aGVuIHBvc3NpYmxlLiAqL1xcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMgYi9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuY1xcbmluZGV4IDVmZjBjZjkyNWZlOTUzLi5lZWEwYTM0YTNiZmVlNyAxMDA2NDRcXG4tLS0gYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuY1xcbisrKyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jXFxuQEAgLTMyMSw2ICszMjEsOCBAQCBzdGF0aWMgdm9pZCBicGZfcHV0X3JlZzMyKGNvbnN0IHM4ICpyZWcsIGNvbnN0IHM4ICpzcmMsXFxuIGV4dGVybiB2b2lkICQkbXVsSSh2b2lkKTtcXG4gZXh0ZXJuIHZvaWQgJCRkaXZVKHZvaWQpO1xcbiBleHRlcm4gdm9pZCAkJHJlbVUodm9pZCk7XFxuK2V4dGVybiB2b2lkICQkZGl2SSh2b2lkKTtcXG4rZXh0ZXJuIHZvaWQgJCRyZW1JKHZvaWQpO1xcbiBcXG4gc3RhdGljIHZvaWQgZW1pdF9jYWxsX21pbGxpY29kZSh2b2lkICpmdW5jLCBjb25zdCBzOCBhcmcwLFxcbiBcXHRcXHRjb25zdCBzOCBhcmcxLCB1OCBvcGNvZGUsIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgpXFxuQEAgLTU2MiwxMiArNTY0LDE0IEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X2kzMihjb25zdCBzOCAqZHN0LCBzMzIgaW1tLFxcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoY29uc3QgczggKmRzdCwgY29uc3QgczggKnNyYyxcXG4tXFx0XFx0XFx0IHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IG9wKVxcbitcXHRcXHRcXHQgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCwgY29uc3QgdTggb3AsXFxuK1xcdFxcdFxcdCBib29sIGlzX3NpZ25lZClcXG4ge1xcbiBcXHRjb25zdCBzOCAqdG1wMSA9IHJlZ21hcFtUTVBfUkVHXzFdO1xcbiBcXHRjb25zdCBzOCAqdG1wMiA9IHJlZ21hcFtUTVBfUkVHXzJdO1xcbiBcXHRjb25zdCBzOCAqcmQ7XFxuIFxcdGNvbnN0IHM4ICpycyA9IGJwZl9nZXRfcmVnNjQoc3JjLCB0bXAyLCBjdHgpO1xcbitcXHR2b2lkICpmdW5jO1xcbiBcXG4gXFx0aWYgKG9wID09IEJQRl9NT1YpXFxuIFxcdFxcdHJkID0gYnBmX2dldF9yZWc2NF9yZWYoZHN0LCB0bXAxLCBmYWxzZSwgY3R4KTtcXG5AQCAtNjA0LDEwICs2MDgsMTIgQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KGNvbnN0IHM4ICpkc3QsIGNvbnN0IHM4ICpzcmMsXFxuIFxcdFxcdGVtaXRfY2FsbF9saWJnY2NfbGwoX19tdWxkaTMsIHJkLCBycywgb3AsIGN0eCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJQRl9ESVY6XFxuLVxcdFxcdGVtaXRfY2FsbF9saWJnY2NfbGwoXFx1MDAyNmhwcGFfZGl2NjQsIHJkLCBycywgb3AsIGN0eCk7XFxuK1xcdFxcdGZ1bmMgPSBpc19zaWduZWQgPyBcXHUwMDI2aHBwYV9zZGl2NjQgOiBcXHUwMDI2aHBwYV9kaXY2NDtcXG4rXFx0XFx0ZW1pdF9jYWxsX2xpYmdjY19sbChmdW5jLCByZCwgcnMsIG9wLCBjdHgpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCUEZfTU9EOlxcbi1cXHRcXHRlbWl0X2NhbGxfbGliZ2NjX2xsKFxcdTAwMjZocHBhX2RpdjY0X3JlbSwgcmQsIHJzLCBvcCwgY3R4KTtcXG4rXFx0XFx0ZnVuYyA9IGlzX3NpZ25lZCA/IFxcdTAwMjZocHBhX3NkaXY2NF9yZW0gOiBcXHUwMDI2aHBwYV9kaXY2NF9yZW07XFxuK1xcdFxcdGVtaXRfY2FsbF9saWJnY2NfbGwoZnVuYywgcmQsIHJzLCBvcCwgY3R4KTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQlBGX0xTSDpcXG4gXFx0XFx0ZW1pdF9jYWxsX2xpYmdjY19sbChfX2FzaGxkaTMsIHJkLCBycywgb3AsIGN0eCk7XFxuQEAgLTYzMCw3ICs2MzYsOCBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoY29uc3QgczggKmRzdCwgY29uc3QgczggKnNyYyxcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgZW1pdF9hbHVfcjMyKGNvbnN0IHM4ICpkc3QsIGNvbnN0IHM4ICpzcmMsXFxuLVxcdFxcdFxcdCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LCBjb25zdCB1OCBvcClcXG4rXFx0XFx0XFx0IHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IG9wLFxcbitcXHRcXHRcXHQgYm9vbCBpc19zaWduZWQpXFxuIHtcXG4gXFx0Y29uc3QgczggKnRtcDEgPSByZWdtYXBbVE1QX1JFR18xXTtcXG4gXFx0Y29uc3QgczggKnRtcDIgPSByZWdtYXBbVE1QX1JFR18yXTtcXG5AQCAtNjY2LDEwICs2NzMsMTIgQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfcjMyKGNvbnN0IHM4ICpkc3QsIGNvbnN0IHM4ICpzcmMsXFxuIFxcdFxcdGVtaXRfY2FsbF9taWxsaWNvZGUoJCRtdWxJLCBsbyhyZCksIGxvKHJzKSwgb3AsIGN0eCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJQRl9ESVY6XFxuLVxcdFxcdGVtaXRfY2FsbF9taWxsaWNvZGUoJCRkaXZVLCBsbyhyZCksIGxvKHJzKSwgb3AsIGN0eCk7XFxuK1xcdFxcdGVtaXRfY2FsbF9taWxsaWNvZGUoaXNfc2lnbmVkID8gJCRkaXZJIDogJCRkaXZVLFxcbitcXHRcXHRcXHRcXHQgICAgbG8ocmQpLCBsbyhycyksIG9wLCBjdHgpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCUEZfTU9EOlxcbi1cXHRcXHRlbWl0X2NhbGxfbWlsbGljb2RlKCQkcmVtVSwgbG8ocmQpLCBsbyhycyksIG9wLCBjdHgpO1xcbitcXHRcXHRlbWl0X2NhbGxfbWlsbGljb2RlKGlzX3NpZ25lZCA/ICQkcmVtSSA6ICQkcmVtVSxcXG4rXFx0XFx0XFx0XFx0ICAgIGxvKHJkKSwgbG8ocnMpLCBvcCwgY3R4KTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQlBGX0xTSDpcXG4gXFx0XFx0ZW1pdChocHBhX3N1YmkoMHgxZiwgbG8ocnMpLCBIUFBBX1JFR19UMCksIGN0eCk7XFxuQEAgLTExNjMsMTIgKzExNzIsMTIgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCxcXG4gXFx0XFx0XFx0ZW1pdF9pbW0zMih0bXAyLCBpbW0sIGN0eCk7XFxuIFxcdFxcdFxcdHNyYyA9IHRtcDI7XFxuIFxcdFxcdH1cXG4tXFx0XFx0ZW1pdF9hbHVfcjY0KGRzdCwgc3JjLCBjdHgsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfYWx1X3I2NChkc3QsIHNyYywgY3R4LCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcbiBcXHQvKiBkc3QgPSAtZHN0ICovXFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX05FRzpcXG4tXFx0XFx0ZW1pdF9hbHVfcjY0KGRzdCwgdG1wMiwgY3R4LCBCUEZfT1AoY29kZSkpO1xcbitcXHRcXHRlbWl0X2FsdV9yNjQoZHN0LCB0bXAyLCBjdHgsIEJQRl9PUChjb2RlKSwgZmFsc2UpO1xcbiBcXHRcXHRicmVhaztcXG4gXFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PViB8IEJQRl9LOlxcbkBAIC0xMjExLDcgKzEyMjAsNyBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LFxcbiBcXHRcXHRcXHRlbWl0X2ltbTMyKHRtcDIsIGltbSwgY3R4KTtcXG4gXFx0XFx0XFx0c3JjID0gdG1wMjtcXG4gXFx0XFx0fVxcbi1cXHRcXHRlbWl0X2FsdV9yMzIoZHN0LCBzcmMsIGN0eCwgQlBGX09QKGNvZGUpKTtcXG4rXFx0XFx0ZW1pdF9hbHVfcjMyKGRzdCwgc3JjLCBjdHgsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFxuIFxcdC8qIGRzdCA9IGRzdCBPUCBpbW0gKi9cXG5AQCAtMTIzNiw3ICsxMjQ1LDcgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCxcXG4gXFx0XFx0ICogc3JjIGlzIGlnbm9yZWQtLS1jaG9vc2UgdG1wMiBhcyBhIGR1bW15IHJlZ2lzdGVyIHNpbmNlIGl0XFxuIFxcdFxcdCAqIGlzIG5vdCBvbiB0aGUgc3RhY2suXFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRlbWl0X2FsdV9yMzIoZHN0LCB0bXAyLCBjdHgsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfYWx1X3IzMihkc3QsIHRtcDIsIGN0eCwgQlBGX09QKGNvZGUpLCBmYWxzZSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXG4gXFx0LyogZHN0ID0gQlNXQVAjI2ltbShkc3QpICovXFxuZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG5pbmRleCA1NGIwZDVlMjVlMDI0Ni4uYzMyNmZhNzM3ZWM4YzUgMTAwNjQ0XFxuLS0tIGEvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG4rKysgYi9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wNjQuY1xcbkBAIC01MDIsMTQgKzUwMiwxOSBAQCBzdGF0aWMgdm9pZCBlbWl0X2NhbGwodTY0IGFkZHIsIGJvb2wgZml4ZWQsIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgpXFxuIFxcdGVtaXRfaHBwYV9jb3B5KEhQUEFfUkVHX1JFVDAsIHJlZ21hcFtCUEZfUkVHXzBdLCBjdHgpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBlbWl0X2NhbGxfbGliZ2NjX2xsKHZvaWQgKmZ1bmMsIGNvbnN0IHM4IGFyZzAsXFxuLVxcdFxcdGNvbnN0IHM4IGFyZzEsIHU4IG9wY29kZSwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eClcXG4rc3RhdGljIHZvaWQgZW1pdF9jYWxsX2xpYmdjY19sbCh2b2lkICpmdW5jLCBjb25zdCBzOCBhcmcwLCBjb25zdCBzOCBhcmcxLFxcbitcXHRcXHR1OCBvcGNvZGUsIGJvb2wgaXNfc2lnbmVkLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4KVxcbiB7XFxuIFxcdHU2NCBmdW5jX2FkZHI7XFxuIFxcbiBcXHRpZiAoQlBGX0NMQVNTKG9wY29kZSkgPT0gQlBGX0FMVSkge1xcbi1cXHRcXHRlbWl0X2hwcGE2NF96ZXh0MzIoYXJnMCwgSFBQQV9SRUdfQVJHMCwgY3R4KTtcXG4tXFx0XFx0ZW1pdF9ocHBhNjRfemV4dDMyKGFyZzEsIEhQUEFfUkVHX0FSRzEsIGN0eCk7XFxuK1xcdFxcdGlmIChpc19zaWduZWQpIHtcXG4rXFx0XFx0XFx0ZW1pdF9ocHBhNjRfc2V4dDMyKGFyZzAsIEhQUEFfUkVHX0FSRzAsIGN0eCk7XFxuK1xcdFxcdFxcdGVtaXRfaHBwYTY0X3NleHQzMihhcmcxLCBIUFBBX1JFR19BUkcxLCBjdHgpO1xcbitcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRlbWl0X2hwcGE2NF96ZXh0MzIoYXJnMCwgSFBQQV9SRUdfQVJHMCwgY3R4KTtcXG4rXFx0XFx0XFx0ZW1pdF9ocHBhNjRfemV4dDMyKGFyZzEsIEhQUEFfUkVHX0FSRzEsIGN0eCk7XFxuK1xcdFxcdH1cXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0ZW1pdF9ocHBhX2NvcHkoYXJnMCwgSFBQQV9SRUdfQVJHMCwgY3R4KTtcXG4gXFx0XFx0ZW1pdF9ocHBhX2NvcHkoYXJnMSwgSFBQQV9SRUdfQVJHMSwgY3R4KTtcXG5AQCAtNjAwLDYgKzYwNSw4IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsXFxuIFxcdHU4IHJkID0gLTEsIHJzID0gLTEsIGNvZGUgPSBpbnNuLVxcdTAwM2Vjb2RlO1xcbiBcXHRzMTYgb2ZmID0gaW5zbi1cXHUwMDNlb2ZmO1xcbiBcXHRzMzIgaW1tID0gaW5zbi1cXHUwMDNlaW1tO1xcbitcXHRib29sIGlzX3NpZ25lZDtcXG4rXFx0dm9pZCAqZnVuYztcXG4gXFxuIFxcdGluaXRfcmVncyhcXHUwMDI2cmQsIFxcdTAwMjZycywgaW5zbiwgY3R4KTtcXG4gXFxuQEAgLTY1NiwyOSArNjYzLDM5IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsXFxuIFxcdFxcdGZhbGx0aHJvdWdoO1xcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX1g6XFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01VTCB8IEJQRl9YOlxcbi1cXHRcXHRlbWl0X2NhbGxfbGliZ2NjX2xsKF9fbXVsZGkzLCByZCwgcnMsIGNvZGUsIGN0eCk7XFxuK1xcdFxcdGVtaXRfY2FsbF9saWJnY2NfbGwoX19tdWxkaTMsIHJkLCBycywgY29kZSwgZmFsc2UsIGN0eCk7XFxuIFxcdFxcdGlmICghaXM2NCBcXHUwMDI2XFx1MDAyNiAhYXV4LVxcdTAwM2V2ZXJpZmllcl96ZXh0KVxcbiBcXHRcXHRcXHRlbWl0X3pleHRfMzIocmQsIGN0eCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX0s6XFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9LOlxcbi1cXHRcXHRlbWl0X2ltbShIUFBBX1JFR19UMSwgaXM2NCA/IChzNjQpKHMzMilpbW0gOiAodTMyKWltbSwgSFBQQV9SRUdfVDIsIGN0eCk7XFxuK1xcdFxcdGlzX3NpZ25lZCA9IChvZmYgPT0gMSk7XFxuK1xcdFxcdGVtaXRfaW1tKEhQUEFfUkVHX1QxLFxcbitcXHRcXHRcXHQgaXM2NCB8fCBpc19zaWduZWQgPyAoczY0KShzMzIpaW1tIDogKHUzMilpbW0sXFxuK1xcdFxcdFxcdCBIUFBBX1JFR19UMiwgY3R4KTtcXG4gXFx0XFx0cnMgPSBIUFBBX1JFR19UMTtcXG4gXFx0XFx0ZmFsbHRocm91Z2g7XFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9ESVYgfCBCUEZfWDpcXG4gXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX1g6XFxuLVxcdFxcdGVtaXRfY2FsbF9saWJnY2NfbGwoXFx1MDAyNmhwcGFfZGl2NjQsIHJkLCBycywgY29kZSwgY3R4KTtcXG4rXFx0XFx0aXNfc2lnbmVkID0gKG9mZiA9PSAxKTtcXG4rXFx0XFx0ZnVuYyA9IGlzX3NpZ25lZCA/IFxcdTAwMjZocHBhX3NkaXY2NCA6IFxcdTAwMjZocHBhX2RpdjY0O1xcbitcXHRcXHRlbWl0X2NhbGxfbGliZ2NjX2xsKGZ1bmMsIHJkLCBycywgY29kZSwgaXNfc2lnbmVkLCBjdHgpO1xcbiBcXHRcXHRpZiAoIWlzNjQgXFx1MDAyNlxcdTAwMjYgIWF1eC1cXHUwMDNldmVyaWZpZXJfemV4dClcXG4gXFx0XFx0XFx0ZW1pdF96ZXh0XzMyKHJkLCBjdHgpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9LOlxcbiBcXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfSzpcXG4tXFx0XFx0ZW1pdF9pbW0oSFBQQV9SRUdfVDEsIGlzNjQgPyAoczY0KShzMzIpaW1tIDogKHUzMilpbW0sIEhQUEFfUkVHX1QyLCBjdHgpO1xcbitcXHRcXHRpc19zaWduZWQgPSAob2ZmID09IDEpO1xcbitcXHRcXHRlbWl0X2ltbShIUFBBX1JFR19UMSxcXG4rXFx0XFx0XFx0IGlzNjQgfHwgaXNfc2lnbmVkID8gKHM2NCkoczMyKWltbSA6ICh1MzIpaW1tLFxcbitcXHRcXHRcXHQgSFBQQV9SRUdfVDIsIGN0eCk7XFxuIFxcdFxcdHJzID0gSFBQQV9SRUdfVDE7XFxuIFxcdFxcdGZhbGx0aHJvdWdoO1xcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6XFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9YOlxcbi1cXHRcXHRlbWl0X2NhbGxfbGliZ2NjX2xsKFxcdTAwMjZocHBhX2RpdjY0X3JlbSwgcmQsIHJzLCBjb2RlLCBjdHgpO1xcbitcXHRcXHRpc19zaWduZWQgPSAob2ZmID09IDEpO1xcbitcXHRcXHRmdW5jID0gaXNfc2lnbmVkID8gXFx1MDAyNmhwcGFfc2RpdjY0X3JlbSA6IFxcdTAwMjZocHBhX2RpdjY0X3JlbTtcXG4rXFx0XFx0ZW1pdF9jYWxsX2xpYmdjY19sbChmdW5jLCByZCwgcnMsIGNvZGUsIGlzX3NpZ25lZCwgY3R4KTtcXG4gXFx0XFx0aWYgKCFpczY0IFxcdTAwMjZcXHUwMDI2ICFhdXgtXFx1MDAzZXZlcmlmaWVyX3pleHQpXFxuIFxcdFxcdFxcdGVtaXRfemV4dF8zMihyZCwgY3R4KTtcXG4gXFx0XFx0YnJlYWs7XFxuZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuY1xcbmluZGV4IDE3Mjc3MDEzMjQ0MGRiLi5hMmY5MzIwMmEyZWY5YyAxMDA2NDRcXG4tLS0gYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb3JlLmNcXG4rKysgYi9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb3JlLmNcXG5AQCAtMTkwLDMgKzE5MCwxNyBAQCB1NjQgaHBwYV9kaXY2NF9yZW0odTY0IGRpdiwgdTY0IGRpdmlzb3IpXFxuIFxcdGRpdjY0X3U2NF9yZW0oZGl2LCBkaXZpc29yLCBcXHUwMDI2cmVtKTtcXG4gXFx0cmV0dXJuIHJlbTtcXG4gfVxcbitcXG4rdTY0IGhwcGFfc2RpdjY0KHU2NCBkaXYsIHU2NCBkaXZpc29yKVxcbit7XFxuK1xcdHM2NCBzZGl2ID0gZGl2NjRfczY0KChzNjQpZGl2LCAoczY0KWRpdmlzb3IpO1xcbitcXG4rXFx0cmV0dXJuICh1NjQpc2RpdjtcXG4rfVxcbitcXG4rdTY0IGhwcGFfc2RpdjY0X3JlbSh1NjQgZGl2LCB1NjQgZGl2aXNvcilcXG4re1xcbitcXHRzNjQgc2RpdiA9IGRpdjY0X3M2NCgoczY0KWRpdiwgKHM2NClkaXZpc29yKTtcXG4rXFxuK1xcdHJldHVybiAodTY0KSgoczY0KWRpdiAtIHNkaXYgKiAoczY0KWRpdmlzb3IpO1xcbit9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIzOjA4OjI1LjgxMDM1OTE2NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgyNjk3NTU4MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhwcGFfc2RpdjY0XCIsXG4gICAgXCJocHBhX3NkaXY2NF9yZW1cIixcbiAgICBcImVtaXRfYWx1X3I2NFwiLFxuICAgIFwiZW1pdF9hbHVfcjMyXCIsXG4gICAgXCJlbWl0X2NhbGxfbGliZ2NjX2xsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zIHRvIHRoZSBQQS1SSVNDIEJQRiBKSVQgY29tcGlsZXIuIFRoaXMgaXMgZnVuY3Rpb25hbCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSB0aGF0IGNhbiBiZSByZWFjaGVkIHdoZW4gcnVubmluZyBCUEYgcHJvZ3JhbXMgb24gUEEtUklTQyAod2hpY2ggY2FuIGJlIGVtdWxhdGVkIGluIFFFTVUpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQzOTlkZmJhNmM3MzYxZTBjNGNlMDVmNWU3OWFiZGRkZGEwMjQzY2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxNyAyMzowODoyMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL25ldC9icGZfaml0LmggYi9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oXG5pbmRleCA4Yjg4OTY5NTlmMDQ0OS4uMDc0MTE1YzkzYzkwOWMgMTAwNjQ0XG4tLS0gYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oXG4rKysgYi9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oXG5AQCAtNDY3LDYgKzQ2Nyw4IEBAIHN0YXRpYyBpbmxpbmUgdTMyIGhwcGFfdDIxX2luc24odTggb3Bjb2RlLCB1OCByMiwgdTggcjEsIHU4IGV4dDgsIHU4IHQpXG4gXG4gdTY0IGhwcGFfZGl2NjQodTY0IGRpdiwgdTY0IGRpdmlzb3IpO1xuIHU2NCBocHBhX2RpdjY0X3JlbSh1NjQgZGl2LCB1NjQgZGl2aXNvcik7XG4rdTY0IGhwcGFfc2RpdjY0KHU2NCBkaXYsIHU2NCBkaXZpc29yKTtcbit1NjQgaHBwYV9zZGl2NjRfcmVtKHU2NCBkaXYsIHU2NCBkaXZpc29yKTtcbiBcbiAvKiBIZWxwZXIgZnVuY3Rpb25zIHRoYXQgZW1pdCBIUFBBIGluc3RydWN0aW9ucyB3aGVuIHBvc3NpYmxlLiAqL1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jIGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmNcbmluZGV4IDVmZjBjZjkyNWZlOTUzLi5lZWEwYTM0YTNiZmVlNyAxMDA2NDRcbi0tLSBhL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jXG4rKysgYi9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuY1xuQEAgLTMyMSw2ICszMjEsOCBAQCBzdGF0aWMgdm9pZCBicGZfcHV0X3JlZzMyKGNvbnN0IHM4ICpyZWcsIGNvbnN0IHM4ICpzcmMsXG4gZXh0ZXJuIHZvaWQgJCRtdWxJKHZvaWQpO1xuIGV4dGVybiB2b2lkICQkZGl2VSh2b2lkKTtcbiBleHRlcm4gdm9pZCAkJHJlbVUodm9pZCk7XG4rZXh0ZXJuIHZvaWQgJCRkaXZJKHZvaWQpO1xuK2V4dGVybiB2b2lkICQkcmVtSSh2b2lkKTtcbiBcbiBzdGF0aWMgdm9pZCBlbWl0X2NhbGxfbWlsbGljb2RlKHZvaWQgKmZ1bmMsIGNvbnN0IHM4IGFyZzAsXG4gXHRcdGNvbnN0IHM4IGFyZzEsIHU4IG9wY29kZSwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eClcbkBAIC01NjIsMTIgKzU2NCwxNCBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9pMzIoY29uc3QgczggKmRzdCwgczMyIGltbSxcbiB9XG4gXG4gc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KGNvbnN0IHM4ICpkc3QsIGNvbnN0IHM4ICpzcmMsXG4tXHRcdFx0IHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IG9wKVxuK1x0XHRcdCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LCBjb25zdCB1OCBvcCxcbitcdFx0XHQgYm9vbCBpc19zaWduZWQpXG4ge1xuIFx0Y29uc3QgczggKnRtcDEgPSByZWdtYXBbVE1QX1JFR18xXTtcbiBcdGNvbnN0IHM4ICp0bXAyID0gcmVnbWFwW1RNUF9SRUdfMl07XG4gXHRjb25zdCBzOCAqcmQ7XG4gXHRjb25zdCBzOCAqcnMgPSBicGZfZ2V0X3JlZzY0KHNyYywgdG1wMiwgY3R4KTtcbitcdHZvaWQgKmZ1bmM7XG4gXG4gXHRpZiAob3AgPT0gQlBGX01PVilcbiBcdFx0cmQgPSBicGZfZ2V0X3JlZzY0X3JlZihkc3QsIHRtcDEsIGZhbHNlLCBjdHgpO1xuQEAgLTYwNCwxMCArNjA4LDEyIEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChjb25zdCBzOCAqZHN0LCBjb25zdCBzOCAqc3JjLFxuIFx0XHRlbWl0X2NhbGxfbGliZ2NjX2xsKF9fbXVsZGkzLCByZCwgcnMsIG9wLCBjdHgpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQlBGX0RJVjpcbi1cdFx0ZW1pdF9jYWxsX2xpYmdjY19sbChcdTAwMjZocHBhX2RpdjY0LCByZCwgcnMsIG9wLCBjdHgpO1xuK1x0XHRmdW5jID0gaXNfc2lnbmVkID8gXHUwMDI2aHBwYV9zZGl2NjQgOiBcdTAwMjZocHBhX2RpdjY0O1xuK1x0XHRlbWl0X2NhbGxfbGliZ2NjX2xsKGZ1bmMsIHJkLCBycywgb3AsIGN0eCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCUEZfTU9EOlxuLVx0XHRlbWl0X2NhbGxfbGliZ2NjX2xsKFx1MDAyNmhwcGFfZGl2NjRfcmVtLCByZCwgcnMsIG9wLCBjdHgpO1xuK1x0XHRmdW5jID0gaXNfc2lnbmVkID8gXHUwMDI2aHBwYV9zZGl2NjRfcmVtIDogXHUwMDI2aHBwYV9kaXY2NF9yZW07XG4rXHRcdGVtaXRfY2FsbF9saWJnY2NfbGwoZnVuYywgcmQsIHJzLCBvcCwgY3R4KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJQRl9MU0g6XG4gXHRcdGVtaXRfY2FsbF9saWJnY2NfbGwoX19hc2hsZGkzLCByZCwgcnMsIG9wLCBjdHgpO1xuQEAgLTYzMCw3ICs2MzYsOCBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoY29uc3QgczggKmRzdCwgY29uc3QgczggKnNyYyxcbiB9XG4gXG4gc3RhdGljIHZvaWQgZW1pdF9hbHVfcjMyKGNvbnN0IHM4ICpkc3QsIGNvbnN0IHM4ICpzcmMsXG4tXHRcdFx0IHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IG9wKVxuK1x0XHRcdCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LCBjb25zdCB1OCBvcCxcbitcdFx0XHQgYm9vbCBpc19zaWduZWQpXG4ge1xuIFx0Y29uc3QgczggKnRtcDEgPSByZWdtYXBbVE1QX1JFR18xXTtcbiBcdGNvbnN0IHM4ICp0bXAyID0gcmVnbWFwW1RNUF9SRUdfMl07XG5AQCAtNjY2LDEwICs2NzMsMTIgQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfcjMyKGNvbnN0IHM4ICpkc3QsIGNvbnN0IHM4ICpzcmMsXG4gXHRcdGVtaXRfY2FsbF9taWxsaWNvZGUoJCRtdWxJLCBsbyhyZCksIGxvKHJzKSwgb3AsIGN0eCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCUEZfRElWOlxuLVx0XHRlbWl0X2NhbGxfbWlsbGljb2RlKCQkZGl2VSwgbG8ocmQpLCBsbyhycyksIG9wLCBjdHgpO1xuK1x0XHRlbWl0X2NhbGxfbWlsbGljb2RlKGlzX3NpZ25lZCA/ICQkZGl2SSA6ICQkZGl2VSxcbitcdFx0XHRcdCAgICBsbyhyZCksIGxvKHJzKSwgb3AsIGN0eCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCUEZfTU9EOlxuLVx0XHRlbWl0X2NhbGxfbWlsbGljb2RlKCQkcmVtVSwgbG8ocmQpLCBsbyhycyksIG9wLCBjdHgpO1xuK1x0XHRlbWl0X2NhbGxfbWlsbGljb2RlKGlzX3NpZ25lZCA/ICQkcmVtSSA6ICQkcmVtVSxcbitcdFx0XHRcdCAgICBsbyhyZCksIGxvKHJzKSwgb3AsIGN0eCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCUEZfTFNIOlxuIFx0XHRlbWl0KGhwcGFfc3ViaSgweDFmLCBsbyhycyksIEhQUEFfUkVHX1QwKSwgY3R4KTtcbkBAIC0xMTYzLDEyICsxMTcyLDEyIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsXG4gXHRcdFx0ZW1pdF9pbW0zMih0bXAyLCBpbW0sIGN0eCk7XG4gXHRcdFx0c3JjID0gdG1wMjtcbiBcdFx0fVxuLVx0XHRlbWl0X2FsdV9yNjQoZHN0LCBzcmMsIGN0eCwgQlBGX09QKGNvZGUpKTtcbitcdFx0ZW1pdF9hbHVfcjY0KGRzdCwgc3JjLCBjdHgsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xuIFx0XHRicmVhaztcbiBcbiBcdC8qIGRzdCA9IC1kc3QgKi9cbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX05FRzpcbi1cdFx0ZW1pdF9hbHVfcjY0KGRzdCwgdG1wMiwgY3R4LCBCUEZfT1AoY29kZSkpO1xuK1x0XHRlbWl0X2FsdV9yNjQoZHN0LCB0bXAyLCBjdHgsIEJQRl9PUChjb2RlKSwgZmFsc2UpO1xuIFx0XHRicmVhaztcbiBcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PViB8IEJQRl9LOlxuQEAgLTEyMTEsNyArMTIyMCw3IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsXG4gXHRcdFx0ZW1pdF9pbW0zMih0bXAyLCBpbW0sIGN0eCk7XG4gXHRcdFx0c3JjID0gdG1wMjtcbiBcdFx0fVxuLVx0XHRlbWl0X2FsdV9yMzIoZHN0LCBzcmMsIGN0eCwgQlBGX09QKGNvZGUpKTtcbitcdFx0ZW1pdF9hbHVfcjMyKGRzdCwgc3JjLCBjdHgsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xuIFx0XHRicmVhaztcbiBcbiBcdC8qIGRzdCA9IGRzdCBPUCBpbW0gKi9cbkBAIC0xMjM2LDcgKzEyNDUsNyBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LFxuIFx0XHQgKiBzcmMgaXMgaWdub3JlZC0tLWNob29zZSB0bXAyIGFzIGEgZHVtbXkgcmVnaXN0ZXIgc2luY2UgaXRcbiBcdFx0ICogaXMgbm90IG9uIHRoZSBzdGFjay5cbiBcdFx0ICovXG4tXHRcdGVtaXRfYWx1X3IzMihkc3QsIHRtcDIsIGN0eCwgQlBGX09QKGNvZGUpKTtcbitcdFx0ZW1pdF9hbHVfcjMyKGRzdCwgdG1wMiwgY3R4LCBCUEZfT1AoY29kZSksIGZhbHNlKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHQvKiBkc3QgPSBCU1dBUCMjaW1tKGRzdCkgKi9cbmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXA2NC5jXG5pbmRleCA1NGIwZDVlMjVlMDI0Ni4uYzMyNmZhNzM3ZWM4YzUgMTAwNjQ0XG4tLS0gYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wNjQuY1xuKysrIGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmNcbkBAIC01MDIsMTQgKzUwMiwxOSBAQCBzdGF0aWMgdm9pZCBlbWl0X2NhbGwodTY0IGFkZHIsIGJvb2wgZml4ZWQsIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgpXG4gXHRlbWl0X2hwcGFfY29weShIUFBBX1JFR19SRVQwLCByZWdtYXBbQlBGX1JFR18wXSwgY3R4KTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgZW1pdF9jYWxsX2xpYmdjY19sbCh2b2lkICpmdW5jLCBjb25zdCBzOCBhcmcwLFxuLVx0XHRjb25zdCBzOCBhcmcxLCB1OCBvcGNvZGUsIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgpXG4rc3RhdGljIHZvaWQgZW1pdF9jYWxsX2xpYmdjY19sbCh2b2lkICpmdW5jLCBjb25zdCBzOCBhcmcwLCBjb25zdCBzOCBhcmcxLFxuK1x0XHR1OCBvcGNvZGUsIGJvb2wgaXNfc2lnbmVkLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4KVxuIHtcbiBcdHU2NCBmdW5jX2FkZHI7XG4gXG4gXHRpZiAoQlBGX0NMQVNTKG9wY29kZSkgPT0gQlBGX0FMVSkge1xuLVx0XHRlbWl0X2hwcGE2NF96ZXh0MzIoYXJnMCwgSFBQQV9SRUdfQVJHMCwgY3R4KTtcbi1cdFx0ZW1pdF9ocHBhNjRfemV4dDMyKGFyZzEsIEhQUEFfUkVHX0FSRzEsIGN0eCk7XG4rXHRcdGlmIChpc19zaWduZWQpIHtcbitcdFx0XHRlbWl0X2hwcGE2NF9zZXh0MzIoYXJnMCwgSFBQQV9SRUdfQVJHMCwgY3R4KTtcbitcdFx0XHRlbWl0X2hwcGE2NF9zZXh0MzIoYXJnMSwgSFBQQV9SRUdfQVJHMSwgY3R4KTtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRlbWl0X2hwcGE2NF96ZXh0MzIoYXJnMCwgSFBQQV9SRUdfQVJHMCwgY3R4KTtcbitcdFx0XHRlbWl0X2hwcGE2NF96ZXh0MzIoYXJnMSwgSFBQQV9SRUdfQVJHMSwgY3R4KTtcbitcdFx0fVxuIFx0fSBlbHNlIHtcbiBcdFx0ZW1pdF9ocHBhX2NvcHkoYXJnMCwgSFBQQV9SRUdfQVJHMCwgY3R4KTtcbiBcdFx0ZW1pdF9ocHBhX2NvcHkoYXJnMSwgSFBQQV9SRUdfQVJHMSwgY3R4KTtcbkBAIC02MDAsNiArNjA1LDggQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCxcbiBcdHU4IHJkID0gLTEsIHJzID0gLTEsIGNvZGUgPSBpbnNuLVx1MDAzZWNvZGU7XG4gXHRzMTYgb2ZmID0gaW5zbi1cdTAwM2VvZmY7XG4gXHRzMzIgaW1tID0gaW5zbi1cdTAwM2VpbW07XG4rXHRib29sIGlzX3NpZ25lZDtcbitcdHZvaWQgKmZ1bmM7XG4gXG4gXHRpbml0X3JlZ3MoXHUwMDI2cmQsIFx1MDAyNnJzLCBpbnNuLCBjdHgpO1xuIFxuQEAgLTY1NiwyOSArNjYzLDM5IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsXG4gXHRcdGZhbGx0aHJvdWdoO1xuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX1g6XG4tXHRcdGVtaXRfY2FsbF9saWJnY2NfbGwoX19tdWxkaTMsIHJkLCBycywgY29kZSwgY3R4KTtcbitcdFx0ZW1pdF9jYWxsX2xpYmdjY19sbChfX211bGRpMywgcmQsIHJzLCBjb2RlLCBmYWxzZSwgY3R4KTtcbiBcdFx0aWYgKCFpczY0IFx1MDAyNlx1MDAyNiAhYXV4LVx1MDAzZXZlcmlmaWVyX3pleHQpXG4gXHRcdFx0ZW1pdF96ZXh0XzMyKHJkLCBjdHgpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9ESVYgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9LOlxuLVx0XHRlbWl0X2ltbShIUFBBX1JFR19UMSwgaXM2NCA/IChzNjQpKHMzMilpbW0gOiAodTMyKWltbSwgSFBQQV9SRUdfVDIsIGN0eCk7XG4rXHRcdGlzX3NpZ25lZCA9IChvZmYgPT0gMSk7XG4rXHRcdGVtaXRfaW1tKEhQUEFfUkVHX1QxLFxuK1x0XHRcdCBpczY0IHx8IGlzX3NpZ25lZCA/IChzNjQpKHMzMilpbW0gOiAodTMyKWltbSxcbitcdFx0XHQgSFBQQV9SRUdfVDIsIGN0eCk7XG4gXHRcdHJzID0gSFBQQV9SRUdfVDE7XG4gXHRcdGZhbGx0aHJvdWdoO1xuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX1g6XG4tXHRcdGVtaXRfY2FsbF9saWJnY2NfbGwoXHUwMDI2aHBwYV9kaXY2NCwgcmQsIHJzLCBjb2RlLCBjdHgpO1xuK1x0XHRpc19zaWduZWQgPSAob2ZmID09IDEpO1xuK1x0XHRmdW5jID0gaXNfc2lnbmVkID8gXHUwMDI2aHBwYV9zZGl2NjQgOiBcdTAwMjZocHBhX2RpdjY0O1xuK1x0XHRlbWl0X2NhbGxfbGliZ2NjX2xsKGZ1bmMsIHJkLCBycywgY29kZSwgaXNfc2lnbmVkLCBjdHgpO1xuIFx0XHRpZiAoIWlzNjQgXHUwMDI2XHUwMDI2ICFhdXgtXHUwMDNldmVyaWZpZXJfemV4dClcbiBcdFx0XHRlbWl0X3pleHRfMzIocmQsIGN0eCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX0s6XG4tXHRcdGVtaXRfaW1tKEhQUEFfUkVHX1QxLCBpczY0ID8gKHM2NCkoczMyKWltbSA6ICh1MzIpaW1tLCBIUFBBX1JFR19UMiwgY3R4KTtcbitcdFx0aXNfc2lnbmVkID0gKG9mZiA9PSAxKTtcbitcdFx0ZW1pdF9pbW0oSFBQQV9SRUdfVDEsXG4rXHRcdFx0IGlzNjQgfHwgaXNfc2lnbmVkID8gKHM2NCkoczMyKWltbSA6ICh1MzIpaW1tLFxuK1x0XHRcdCBIUFBBX1JFR19UMiwgY3R4KTtcbiBcdFx0cnMgPSBIUFBBX1JFR19UMTtcbiBcdFx0ZmFsbHRocm91Z2g7XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfWDpcbi1cdFx0ZW1pdF9jYWxsX2xpYmdjY19sbChcdTAwMjZocHBhX2RpdjY0X3JlbSwgcmQsIHJzLCBjb2RlLCBjdHgpO1xuK1x0XHRpc19zaWduZWQgPSAob2ZmID09IDEpO1xuK1x0XHRmdW5jID0gaXNfc2lnbmVkID8gXHUwMDI2aHBwYV9zZGl2NjRfcmVtIDogXHUwMDI2aHBwYV9kaXY2NF9yZW07XG4rXHRcdGVtaXRfY2FsbF9saWJnY2NfbGwoZnVuYywgcmQsIHJzLCBjb2RlLCBpc19zaWduZWQsIGN0eCk7XG4gXHRcdGlmICghaXM2NCBcdTAwMjZcdTAwMjYgIWF1eC1cdTAwM2V2ZXJpZmllcl96ZXh0KVxuIFx0XHRcdGVtaXRfemV4dF8zMihyZCwgY3R4KTtcbiBcdFx0YnJlYWs7XG5kaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jIGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jXG5pbmRleCAxNzI3NzAxMzI0NDBkYi4uYTJmOTMyMDJhMmVmOWMgMTAwNjQ0XG4tLS0gYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb3JlLmNcbisrKyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuY1xuQEAgLTE5MCwzICsxOTAsMTcgQEAgdTY0IGhwcGFfZGl2NjRfcmVtKHU2NCBkaXYsIHU2NCBkaXZpc29yKVxuIFx0ZGl2NjRfdTY0X3JlbShkaXYsIGRpdmlzb3IsIFx1MDAyNnJlbSk7XG4gXHRyZXR1cm4gcmVtO1xuIH1cbitcbit1NjQgaHBwYV9zZGl2NjQodTY0IGRpdiwgdTY0IGRpdmlzb3IpXG4re1xuK1x0czY0IHNkaXYgPSBkaXY2NF9zNjQoKHM2NClkaXYsIChzNjQpZGl2aXNvcik7XG4rXG4rXHRyZXR1cm4gKHU2NClzZGl2O1xuK31cbitcbit1NjQgaHBwYV9zZGl2NjRfcmVtKHU2NCBkaXYsIHU2NCBkaXZpc29yKVxuK3tcbitcdHM2NCBzZGl2ID0gZGl2NjRfczY0KChzNjQpZGl2LCAoczY0KWRpdmlzb3IpO1xuK1xuK1x0cmV0dXJuICh1NjQpKChzNjQpZGl2IC0gc2RpdiAqIChzNjQpZGl2aXNvcik7XG4rfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjM6MDg6MjUuODEwMzYyNzU0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk1MTUyMjgyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQQS1SSVNDIEJQRiBKSVQgUGF0Y2ggQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgYWRkcyBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBzdXBwb3J0IChgc2RpdmAsIGBzbW9kYCkgdG8gdGhlIEJQRiBKSVQgY29tcGlsZXIsIHNwZWNpZmljYWxseSBmb3IgdGhlIFBBLVJJU0MgYXJjaGl0ZWN0dXJlLiBUaGUgY29kZSBjaGFuZ2VzIGFyZSBpbiB0aGUgYGFyY2gvcGFyaXNjL25ldC9gIGRpcmVjdG9yeSwgd2hpY2ggbWFrZXMgaXQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljLiBOYXR1cmFsbHksIGl0J3Mgb25seSBnb2luZyB0byBiZSBjb21waWxlZCBpZiB0aGUga2VybmVsIGlzIGNvbmZpZ3VyZWQgZm9yIFBBLVJJU0MuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMgYWJvdXQgZnV6emluZy4gV2UgdHlwaWNhbGx5IHNlZSBmdXp6aW5nIG9uIHg4Nl82NCwgQVJNNjQsIFJJU0MtViwgYW5kIHRoZSBsaWtlLiBEb2VzIHN5emthbGxlciBldmVuIHRhcmdldCBQQS1SSVNDPyBJIG5lZWQgdG8gY2hlY2suIEV2ZW4gaWYgaXQgZG9lc24ndCAqY3VycmVudGx5KiBmdXp6IFBBLVJJU0MsIGl04oCZcyBzdGlsbCBnb29kIHRvIGhhdmUgdGhlIGNvZGUgdGhlcmUgZm9yIHNvbWVvbmUgd2hvICpkb2VzKiBydW4gaXQgb24gdGhhdCBhcmNoaXRlY3R1cmUuIEhvd2V2ZXIsIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhlIGluc3RydWN0aW9ucyBmb3IgY29kZSBmdXp6aW5nLiBUaGVyZSBtaWdodCBiZSBjb2RlIHBhdGhzIHdoaWNoIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gTHVja2lseSwgUUVNVSAqZG9lcyogc3VwcG9ydCBQQS1SSVNDIGVtdWxhdGlvbiAoYHFlbXUtc3lzdGVtLWhwcGFgKS4gU28gdGhhdCdzIG5vdCBhIGNvbmNlcm4uXG5cbk5vdyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIG5lY2Vzc2FyeSBrZXJuZWwgY29uZmlndXJhdGlvbi4gV2UnbGwgbmVlZCBgQ09ORklHX0JQRl9KSVRgIGZvciBzdXJlLCBhbmQgb2J2aW91c2x5IGBDT05GSUdfUEFSSVNDYC4gTGV0IG1lIGp1c3QgZG91YmxlIGNoZWNrIHRoZSBLY29uZmlnIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBQQS1SSVNDIHJlbGF0ZWQgZGV0YWlscyBmb3IgYEJQRl9KSVRgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTM3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjM6MDg6MzEuNzYxODg4MjA4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMTcyNjc5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJCUEZfSklUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcGFyaXNjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcGFyaXNjL0tjb25maWc9Mj1jb25maWcgUEFSSVNDXFxuLS1cXG5hcmNoL3BhcmlzYy9LY29uZmlnLTcyLVxcdHNlbGVjdCBIQVZFX0FSQ0hfVFJBQ0VIT09LXFxuYXJjaC9wYXJpc2MvS2NvbmZpZzo3MzpcXHRzZWxlY3QgSEFWRV9FQlBGX0pJVFxcbmFyY2gvcGFyaXNjL0tjb25maWc6NzQ6XFx0c2VsZWN0IEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVRcXG5hcmNoL3BhcmlzYy9LY29uZmlnLTc1LVxcdHNlbGVjdCBIQVZFX1JFR1NfQU5EX1NUQUNLX0FDQ0VTU19BUElcXG4tLVxcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZS0yLVxcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZTozOm9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvcmUub1xcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZS00LVxcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZT01PWlmZXEgKCQoQ09ORklHXzY0QklUKSx5KVxcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZTo2OlxcdG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXA2NC5vXFxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlLTctZWxzZVxcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZTo4OlxcdG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXAzMi5vXFxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlLTktZW5kaWZcXG4tLVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtOC1cXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oOjk6I2lmbmRlZiBfQlBGX0pJVF9IXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaDoxMDojZGVmaW5lIF9CUEZfSklUX0hcXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oLTExLVxcbi0tXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaD00Nzg9aW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGhwcGFfaml0X2NvbnRleHQgKmN0eCxcXG4tLVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtNDgwLVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0Lmg6NDgxOiNlbmRpZiAvKiBfQlBGX0pJVF9IICovXFxuLS1cXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy0zMi0gKiAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0rIFxcdTAwM2M9IChzcCAtIDQgKiBOUl9TQVZFRF9SRUdJU1RFUlNcXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYzozMzogKiAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAtIDQgKiBCUEZfSklUX1NDUkFUQ0hfUkVHUylcXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy0zNC0gKiAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8XFxuLS1cXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYz00Mz1lbnVtIHtcXG4tLVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jLTU0LVxcdEJQRl9SMF9URU1QX0xPLFxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jOjU1OlxcdEJQRl9KSVRfU0NSQVRDSF9SRUdTLFxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jLTU2LX07XFxuLS1cXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy02OC1cXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYzo2OTojZGVmaW5lIFRNUF9SRUdfMVxcdChNQVhfQlBGX0pJVF9SRUcgKyAwKVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jOjcwOiNkZWZpbmUgVE1QX1JFR18yXFx0KE1BWF9CUEZfSklUX1JFRyArIDEpXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmM6NzE6I2RlZmluZSBUTVBfUkVHX1IwXFx0KE1BWF9CUEZfSklUX1JFRyArIDIpXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMtNzItXFxuLS1cXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYz0xNDc2PXZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4KVxcbi0tXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTQ5Ny1cXHQvKiBtYWtlIHNwYWNlIGZvciBCUEYgcmVnaXN0ZXJzIG9uIHN0YWNrLiAqL1xcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jOjE0OTg6XFx0c3RhY2tfYWRqdXN0ICs9IEJQRl9KSVRfU0NSQVRDSF9SRUdTICogUkVHX1NJWkU7XFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTQ5OS1cXHQvKiBtYWtlIHNwYWNlIGZvciBCUEYgc3RhY2suICovXFxuLS1cXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xNjEwLVxcdFxcdGlmIChSRUdfV0FTX1NFRU4oY3R4LCBsbyhyZWcpKSlcXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYzoxNjExOlxcdFxcdFxcdGVtaXQoaHBwYV9sZG8oLVJFR19TSVpFICogKE5SX1NBVkVEX1JFR0lTVEVSUyArIEJQRl9KSVRfU0NSQVRDSF9SRUdTKSxcXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xNjEyLVxcdFxcdFxcdFxcdEhQUEFfUkVHX1NQLCBsbyhyZWcpKSwgY3R4KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjM6MDg6MzIuMDgzNjIxNjIxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE4OTc3MzQxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBBLVJJU0MgQlBGIEpJVCBDb21waWxlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIHRoZSBQQS1SSVNDIGFyY2hpdGVjdHVyZSdzIEJQRiBKSVQgY29tcGlsZXIuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgbGlrZSB3ZSdyZSBkZWFsaW5nIHdpdGggbW9kaWZpY2F0aW9ucyB0byBgYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmNgLCBgYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmNgLCBhbmQgYGFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuY2AuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgdGhlIGFkZGl0aW9uIG9mIGBocHBhX3NkaXY2NGAgYW5kIGBocHBhX3NkaXY2NF9yZW1gIHRvIGBicGZfaml0X2NvcmUuY2AsIHBsdXMgc29tZSBtb2RpZmljYXRpb25zIGluIHRoZSAzMi1iaXQgYW5kIDY0LWJpdCBjb21waWxhdGlvbiBmaWxlcy5cblxuVGhlIGtleSBmdW5jdGlvbnMgdG8gY29uY2VudHJhdGUgb24gYXJlOiBgYnBmX2ppdF9lbWl0X2luc25gLCBgZW1pdF9hbHVfcjY0YCwgYGVtaXRfYWx1X3IzMmAsIGBlbWl0X2NhbGxfbGliZ2NjX2xsYCwgYGhwcGFfc2RpdjY0YCwgYW5kIGBocHBhX3NkaXY2NF9yZW1gLiBUaGVzZSBhcmUgb2J2aW91c2x5IHdoZXJlIHRoZSBuZXcgY29kZSBvciB0aGUgYWx0ZXJlZCBjb2RlIHJlc2lkZXMuIFRoZSBgQlBGX0pJVGAgY29uZmlnIHNlZW1zIHJlbGV2YW50IGhlcmUsIG5hdHVyYWxseS5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgd2FycmFudCBmdXp6aW5nPyBBYnNvbHV0ZWx5LiBJdOKAmXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSklUIGNvbXBpbGVyLCBhbmQgdGhvc2UgYXJlIGFsd2F5cyBnb29kIHRhcmdldHMuIE5vdywgdGhlIHBvdGVudGlhbCBwcm9ibGVtIGlzIHRoYXQgU3l6a2FsbGVyLCBpbiBpdHMgZGVmYXVsdCBzZXR1cCwgZG9lc24ndCBuYXRpdmVseSBzdXBwb3J0IFBBLVJJU0MgZnV6emluZy4gQnV0LCB3YWl0LCB0aGUgbm90ZXMgc3BlY2lmeSB0aGF0IGl0ICpjYW4qIGJlIGNvbmZpZ3VyZWQgaWYgUUVNVSBzdXBwb3J0cyBpdC4gQW5kIGl0IGRvZXMuIEdyZWF0LiBJdCBtZW50aW9ucyBzb21ldGhpbmcgYWJvdXQgXCJpbXBvc3NpYmxlIGNvZGUgcGF0aHNcIiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgYnV0IHNpbmNlIFFFTVUgc3VwcG9ydHMgUEEtUklTQywgdGhpcyBzaG91bGRuJ3QgYmUgYSBwcm9ibGVtLlxuXG5Ob3csIHdoaWNoIGZ1bmN0aW9uIGlzIHRoZSBiZXN0IHRvIGZvY3VzIG9uPyBgYnBmX2ppdF9lbWl0X2luc25gIGlzIGEgYml0IGdlbmVyaWMgZm9yIHRoZSBKSVQgY29tcGlsZXIsIGJ1dCBpdCdzIHdoZXJlIHRoZSBjaGFuZ2VzIG9jY3VyIHNvIGl0J3MgcHJvYmFibHkgaW1wb3J0YW50LiBgZW1pdF9hbHVfcjY0YCBhbmQgYGVtaXRfYWx1X3IzMmAgYWxzbyBzb3VuZCBsaWtlIGdvb2QgY2FuZGlkYXRlcyB0byBsb29rIGF0LiBBbmQgYGhwcGFfc2RpdjY0YCBhbmQgYGhwcGFfc2RpdjY0X3JlbWAgc291bmQgbGlrZSBnb2xkLWxldmVsIHRhcmdldGVkIGZ1bmN0aW9ucyBiZWNhdXNlIHRoZXkgYXJlIHF1aXRlIHNwZWNpZmljLlxuXG5JIG5lZWQgdG8gbmFpbCBkb3duIHRoZSBleGFjdCBzaWduYXR1cmUgb2YgYGJwZl9qaXRfZW1pdF9pbnNuYCBpbiBgYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmNgLCB0byB1bmRlcnN0YW5kIGl0cyBpbnB1dHMgYW5kIG91dHB1dHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0MzksIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjM6MDg6MzkuMjczMzk2N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzIyNjgxOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2ppdF9lbWl0X2luc25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmM9NTU5PXN0YXRpYyB2b2lkIGVtaXRfc3RvcmUoY29uc3QgczggcmQsIGNvbnN0IHM4IHJzLCBzMTYgb2ZmLFxcbi0tXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDY0LmMtNTk2LVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXA2NC5jOjU5NzppbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LFxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXA2NC5jLTU5OC1cXHRcXHQgICAgICBib29sIGV4dHJhX3Bhc3MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIzOjA4OjM5LjQwNTY2OTk0OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNjM3NzM3NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBBLVJJU0MgSklUIENvbXBpbGF0aW9uIGZvciA2NC1iaXQgRGl2aXNpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSA2NC1iaXQgZGl2aXNpb24gaW1wbGVtZW50YXRpb24gd2l0aGluIHRoaXMgUEEtUklTQyBKSVQgY29tcGlsZXIuIEkga25vdyBob3cgY3JpdGljYWwgZWZmaWNpZW50IGRpdmlzaW9uIGlzIGluIGFueSBCUEYgY29udGV4dCwgYW5kIEknbSBndWVzc2luZyB0aGVyZSdzIHBvdGVudGlhbCBmb3Igb3B0aW1pemF0aW9uIGhlcmUuIE15IGltbWVkaWF0ZSBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGVzZSBzcGVjaWZpYyBmdW5jdGlvbnM6IGBocHBhX3NkaXY2NGAsIGBocHBhX3NkaXY2NF9yZW1gLCBgZW1pdF9hbHVfcjY0YCwgYGVtaXRfYWx1X3IzMmAsIGFuZCBgZW1pdF9jYWxsX2xpYmdjY19sbGAuIFRoZXkgYXJlIHRoZSBsaWtlbHkga2V5IHBsYXllcnMgaW4gaG93IHRoaXMgYXJjaGl0ZWN0dXJlIGhhbmRsZXMgc2lnbmVkIDY0LWJpdCBkaXZpc2lvbi5cblxuUmlnaHQsIHNvIHdoZXJlJ3MgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQ/IEdpdmVuIHRoZSBjb250ZXh0LCB0aGUgZnVuY3Rpb24gYGVtaXRfYWx1X3I2NGAgbG9va3MgbGlrZSBhIGdvb2QganVtcGluZy1vZmYgcG9pbnQuIEl04oCZcyBwcm9iYWJseSB0aGUgbG93ZXItbGV2ZWwgZnVuY3Rpb24gdGhhdCBlbWl0cyB0aGUgYWN0dWFsIEFMVSBpbnN0cnVjdGlvbnMuIEknbGwgbmVlZCB0byBkaWcgaW50byBgYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgc29saWQgdmlldyBvbiBob3cgNjQtYml0IGRpdmlzaW9uIGlzIGJlaW5nIGxvd2VyZWQgaW50byB0aGUgSVNBLiBMZXTigJlzIHNlZSB3aGF0J3MgYWN0dWFsbHkgZ29pbmcgb24gaW4gdGhlcmUuLi4gSSdtIGV4cGVjdGluZyB0aGlzIHRvIHNoZWQgbGlnaHQgb24gd2hldGhlciBvciBub3QgdGhleSBhcmUgdXNpbmcgZGlyZWN0IGluc3RydWN0aW9ucywgbGlicmFyeSBjYWxscywgb3Igc29tZSBjb21iaW5hdGlvbiBvZiB0aGUgdHdvLiBVbmRlcnN0YW5kaW5nIHRoYXQgcXVpY2tseSB3aWxsIGJlIGNydWNpYWwgdG8gZnVydGhlciBhbmFseXNpcyBhbmQgcG90ZW50aWFsIG9wdGltaXphdGlvbiwgYXMgd2VsbCBhcyBmaW5kaW5nIGFyZWFzIHdoZXJlIHRoaXMgY291bGQgYmUgaW5saW5lZCBmb3IgZWZmaWNpZW5jeSBvciBwb3RlbnRpYWxseSBpbXByb3ZlZCB2aWEgaW5zdHJ1Y3Rpb24gc2VsZWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzM3LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjM6MDg6NDMuNDY5NDQ1Mzk4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzI2NDg1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlbWl0X2FsdV9yNjRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmM9NTExPXN0YXRpYyB2b2lkIGVtaXRfYWx1X2kzMihjb25zdCBzOCAqZHN0LCBzMzIgaW1tLFxcbi0tXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMtNTY1LVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jOjU2NjpzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoY29uc3QgczggKmRzdCwgY29uc3QgczggKnNyYyxcXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy01NjctXFx0XFx0XFx0IHN0cnVjdCBocHBhX2ppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IG9wLFxcbi0tXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmM9MTEyNT1pbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgaHBwYV9qaXRfY29udGV4dCAqY3R4LFxcbi0tXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTE3NC1cXHRcXHR9XFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmM6MTE3NTpcXHRcXHRlbWl0X2FsdV9yNjQoZHN0LCBzcmMsIGN0eCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTE3Ni1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jLTExNzktXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTkVHOlxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvbXAzMi5jOjExODA6XFx0XFx0ZW1pdF9hbHVfcjY0KGRzdCwgdG1wMiwgY3R4LCBCUEZfT1AoY29kZSksIGZhbHNlKTtcXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xMTgxLVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QyMzowODo0My41OTI3MTYwNTZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mjg5NDk5MTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gSW5pdGlhbGx5LCBJIHNhdyBgQlBGX0pJVGAgYW5kIGBQQVJJU0NgIGxpc3RlZC4gSG9sZCBvbiBhIHNlY29uZCwgdGhhdCBkb2Vzbid0IG1ha2Ugc2Vuc2UuIGBQQVJJU0NgIGlzIGFuICphcmNoaXRlY3R1cmUqLCBub3QgYSBjb25maWd1cmFibGUgb3B0aW9uIHlvdSB0b2dnbGUgb24gb3Igb2ZmIGluIGEgY29uZmlndXJhdGlvbiBmaWxlIGxpa2UgYSBgLmNvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIGJlIG1vcmUgcHJlY2lzZSBoZXJlLiBJIHNob3VsZCBqdXN0IGxpc3QgYEJQRl9KSVRgIHNpbmNlIHRoYXQncyBhIGxlZ2l0aW1hdGUgY29uZmlndXJhdGlvbiBzZXR0aW5nLlxuXG5IbW0sIGJ1dCB3YWl0LCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSBxdWl0ZSBjbGVhcjogXCJEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLlwiIElzIGBCUEZfSklUYCBzcGVjaWZpYyAqZW5vdWdoKj8gV2VsbCwgY29uc2lkZXJpbmcgdGhpcyBpcyByZWxhdGVkIHRvIEJQRiBKSVQgY29kZSwgeWVhaCwgaXQgc2VlbXMgYXBwcm9wcmlhdGVseSB0YXJnZXRlZC4gSXQncyBub3Qgc29tZXRoaW5nIGJyb2FkbHkgZW5hYmxlZCBhY3Jvc3MgZXZlcnkgc3lzdGVtLiBJdCdzIGRpcmVjdGx5IHRpZWQgdG8gdGhlIEpJVCBmdW5jdGlvbmFsaXR5LlxuXG5Ob3csIGEgcXVpY2sgc2FuaXR5IGNoZWNrLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBCUEZfSklUYCBpc24ndCBhbHJlYWR5IGVuYWJsZWQgYnkgZGVmYXVsdCBpbiBzeXpib3QuIEl0IHVzdWFsbHkgaXMsIGJ1dCBJIHNob3VsZCBsaXN0IGl0IGFueXdheSB0byBiZSBleHRyYSBzdXJlIHRoZSBpbnRlbnRpb24gaXMgdW5kZXJzdG9vZC4gQWx3YXlzIGdvb2QgdG8gYmUgZXhwbGljaXQuXG5cblJpZ2h0LCBJJ2xsIGdvIHRocm91Z2ggdGhlIGNvbmZpZ3VyYXRpb25zIGFnYWluIHRvIGNoZWNrIGZvciBhbnkgb3RoZXIgb25lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTY1MiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QyMzowODo0Ny44ODIyNDUyNjJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzM3OTU0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcGFyaXNjL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlLTItXFxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29yZS5vXFxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlLTQtXFxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlOjU6aWZlcSAoJChDT05GSUdfNjRCSVQpLHkpXFxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlOjY6XFx0b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcDY0Lm9cXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGUtNy1lbHNlXFxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlOjg6XFx0b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcDMyLm9cXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGUtOS1lbmRpZlxcbi0tXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaD0yNT1lbnVtIHtcXG4tLVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtNDQtXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaDo0NTojaWZkZWYgQ09ORklHXzY0QklUXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaC00Ni1cXHRIUFBBX1JFR19UQ0NcXHQgICAgID0gMyxcXG4tLVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtNTctXFx0SFBQQV9SRUdfVDIgPVxcdEhQUEFfUkVHX0FSRzQsXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaDo1ODojaWZuZGVmIENPTkZJR182NEJJVFxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtNTktXFx0SFBQQV9SRUdfVDMgPVxcdEhQUEFfUkVHX0FSRzUsXFx0Lyogbm90IHVzZWQgaW4gNjQtYml0ICovXFxuLS1cXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oPTY1PXN0cnVjdCBocHBhX2ppdF9jb250ZXh0IHtcXG4tLVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtMTgwLSNkZWZpbmUgaHBwYV9jb21idChyMSwgcjIsIHRhcmdldF9hZGRyLCBjb25kaXRpb24sIG5vcCkgXFxcXFxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0Lmg6MTgxOlxcdGhwcGFfdDExX2luc24oSVNfRU5BQkxFRChDT05GSUdfNjRCSVQpID8gMHgyNyA6IDB4MjAsIFxcXFxcXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oLTE4Mi1cXHRcXHRyMiwgcjEsIGNvbmRpdGlvbiwgdGFyZ2V0X2FkZHIsIG5vcClcXHRcXHQvKiBjb21idCxjb25kLG4gcjEscjIsYWRkciAqL1xcbi0tXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaC0xOTQtI2RlZmluZSBocHBhX2NvbWJmKHIxLCByMiwgdGFyZ2V0X2FkZHIsIGNvbmRpdGlvbiwgbm9wKSBcXFxcXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaDoxOTU6XFx0aHBwYV90MTFfaW5zbihJU19FTkFCTEVEKENPTkZJR182NEJJVCkgPyAweDJmIDogMHgyMiwgXFxcXFxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtMTk2LVxcdFxcdHIyLCByMSwgY29uZGl0aW9uLCB0YXJnZXRfYWRkciwgbm9wKVxcdFxcdC8qIGNvbWJmLGNvbmQsbiByMSxyMixhZGRyICovXFxuLS1cXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oLTIwOC0vKiA2NC1iaXQgaW5zdHJ1Y3Rpb25zICovXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXQuaDoyMDk6I2lmZGVmIENPTkZJR182NEJJVFxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtMjEwLSNkZWZpbmUgaHBwYTY0X2xkZF9yZWcocmVnLCBiLCB0YXJnZXQpIFxcXFxcXG4tLVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0Lmg9MzY1PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgcmVfYXNzZW1ibGVfMTQodW5zaWduZWQgYXMxNClcXG4tLVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0LmgtMzcwLVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0Lmg6MzcxOiNpZmRlZiBDT05GSUdfNjRCSVRcXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdC5oLTM3Mi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIHJlX2Fzc2VtYmxlXzE2KHVuc2lnbmVkIGFzMTYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIzOjA4OjQ4LjAwNTYzMjA1OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzA5MTc3MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBBLVJJU0MgQlBGIEpJVCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBQQS1SSVNDIGFyY2hpdGVjdHVyZSdzIEJQRiBKSVQgY29tcGlsZXIuIFdoaWxlIGA2NEJJVGAgaXMgKnRlY2huaWNhbGx5KiByZWxldmFudCBkdWUgdG8gaXRzIGdlbmVyYWwgbmF0dXJlLCB0aGUgY29yZSBvZiB0aGlzIGlzIGRlZmluaXRlbHkgYEJQRl9KSVRgLiBUaGF0J3MgdGhlIG9uZSBJIG5lZWQgdG8gZm9jdXMgb24uXG5cbkxldCdzIGJyZWFrIHRoaXMgZG93biBjbGVhcmx5LiBUaGlzIHBhdGNoIGlzIGFic29sdXRlbHkgd29ydGggZnV6emluZyDigJMgYFdvcnRoRnV6emluZzogdHJ1ZWAuIFRoZSByZWFzb24gaXMgc29saWQ6IEl0J3MgaW50cm9kdWNpbmcgbmV3IHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgd2l0aGluIHRoZSBQQS1SSVNDIEJQRiBKSVQgY29tcGlsZXIuIFRoaXMgaXMgYXJjaGl0ZWN0dXJhbCBmdW5jdGlvbmFsaXR5IHRoYXQncyBzcGVjaWZpYyB0byBQQS1SSVNDLCBhbmQgY3JpdGljYWxseSwgKnJlYWNoYWJsZSogd2hlbiBydW5uaW5nIEJQRiBwcm9ncmFtcyBvbiB0aGF0IGFyY2hpdGVjdHVyZS4gVGhlIGZhY3QgdGhhdCBQQS1SSVNDIGNhbiBiZSBlbXVsYXRlZCB1c2luZyBRRU1VIGlzIGEgaHVnZSBib251cywgbWVhbmluZyB0ZXN0aW5nIHRoaXMgaXMgY29tcGxldGVseSBmZWFzaWJsZS5cblxuVGhlIGZ1bmN0aW9ucyBJIG5lZWQgdG8gdGFyZ2V0IGZvciBkZWVwIGRpdmVzIGFyZTogYGhwcGFfc2RpdjY0YCwgYGhwcGFfc2RpdjY0X3JlbWAsIGBlbWl0X2FsdV9yNjRgLCBgZW1pdF9hbHVfcjMyYCwgYW5kIGBlbWl0X2NhbGxfbGliZ2NjX2xsYC4gVGhlc2UgYXJlIHRoZSBrZXkgc3ltYm9scywgYXMgdGhleSBhcmUgbGlrZWx5IHdoZXJlIHRoZSBuZXcgb3BlcmF0aW9ucyBhcmUgaW1wbGVtZW50ZWQuIEFuZCB0aGUgZW5hYmxpbmcgY29uZmlnLCB0aGUgb25lIHRoYXQgbWFrZXMgdGhpcyBhbGwgcG9zc2libGUsIGlzIGBCUEZfSklUYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwMzYsIk91dHB1dFRva2VucyI6MTQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIzOjA4OjUzLjcxNDgyMTEyN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2NTI4NzQxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhwcGFfc2RpdjY0XCIsXG4gICAgXCJocHBhX3NkaXY2NF9yZW1cIixcbiAgICBcImVtaXRfYWx1X3I2NFwiLFxuICAgIFwiZW1pdF9hbHVfcjMyXCIsXG4gICAgXCJlbWl0X2NhbGxfbGliZ2NjX2xsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zIHRvIHRoZSBQQS1SSVNDIEJQRiBKSVQgY29tcGlsZXIuIFRoaXMgaXMgZnVuY3Rpb25hbCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSB0aGF0IGNhbiBiZSByZWFjaGVkIHdoZW4gcnVubmluZyBCUEYgcHJvZ3JhbXMgb24gUEEtUklTQyAod2hpY2ggY2FuIGJlIGVtdWxhdGVkIGluIFFFTVUpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJocHBhX3NkaXY2NFwiLFxuICAgIFwiaHBwYV9zZGl2NjRfcmVtXCIsXG4gICAgXCJlbWl0X2FsdV9yNjRcIixcbiAgICBcImVtaXRfYWx1X3IzMlwiLFxuICAgIFwiZW1pdF9jYWxsX2xpYmdjY19sbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3Igc2lnbmVkIGRpdmlzaW9uIGFuZCBtb2R1bG8gb3BlcmF0aW9ucyB0byB0aGUgUEEtUklTQyBCUEYgSklUIGNvbXBpbGVyLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCB3aGVuIHJ1bm5pbmcgQlBGIHByb2dyYW1zIG9uIFBBLVJJU0MgKHdoaWNoIGNhbiBiZSBlbXVsYXRlZCBpbiBRRU1VKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowpvh2q[1] Phase: Succeeded StartedAt: 2026-07-17 23:09:06 +0000 UTC FinishedAt: 2026-07-17 23:09:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvh2q[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-17 23:09:06 +0000 UTC FinishedAt: 2026-07-17 23:09:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvh2q[2] Phase: Succeeded StartedAt: 2026-07-17 23:09:06 +0000 UTC FinishedAt: 2026-07-18 00:19:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-17 23:09:07 +0000 UTC FinishedAt: 2026-07-18 00:19:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-17 23:09:07 +0000 UTC FinishedAt: 2026-07-17 23:09:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-17 23:09:07 +0000 UTC FinishedAt: 2026-07-17 23:09:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-workflowpvh2q/series-workflowpvh2q-convert-artifact-326051674/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-17 23:09:18 +0000 UTC FinishedAt: 2026-07-17 23:38:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-17 23:09:18 +0000 UTC FinishedAt: 2026-07-17 23:38:59 +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:*1b4bfa7d-ec4c-4cb5-9bd4-04ec31298f77,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-workflowpvh2q/series-workflowpvh2q-convert-artifact-326051674/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": "16a8e387-a230-46c3-b7fe-165139f1ea11", "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-workflowpvh2q/series-workflowpvh2q-build-action-2963102728/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-17 23:09:18 +0000 UTC FinishedAt: 2026-07-17 23:38:30 +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:*1b4bfa7d-ec4c-4cb5-9bd4-04ec31298f77,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-workflowpvh2q/series-workflowpvh2q-convert-artifact-326051674/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": "16a8e387-a230-46c3-b7fe-165139f1ea11", "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-workflowpvh2q/series-workflowpvh2q-build-action-2963102728/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-17 23:38:59 +0000 UTC FinishedAt: 2026-07-17 23:38:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-17 23:38:59 +0000 UTC FinishedAt: 2026-07-17 23:38:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-17 23:38:59 +0000 UTC FinishedAt: 2026-07-17 23:39:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-17 23:38:59 +0000 UTC FinishedAt: 2026-07-17 23:39:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-workflowpvh2q/series-workflowpvh2q-convert-artifact-2545583541/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-17 23:39:19 +0000 UTC FinishedAt: 2026-07-17 23:41:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-17 23:39:19 +0000 UTC FinishedAt: 2026-07-17 23:41:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*16a8e387-a230-46c3-b7fe-165139f1ea11,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-workflowpvh2q/series-workflowpvh2q-build-action-2963102728/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-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-17 23:41:18 +0000 UTC FinishedAt: 2026-07-17 23:41:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-17 23:41:18 +0000 UTC FinishedAt: 2026-07-17 23:41:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-17 23:41:18 +0000 UTC FinishedAt: 2026-07-18 00:13:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-17 23:41:18 +0000 UTC FinishedAt: 2026-07-18 00:13:59 +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:*1b4bfa7d-ec4c-4cb5-9bd4-04ec31298f77,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-workflowpvh2q/series-workflowpvh2q-convert-artifact-2545583541/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": "7f1206c6-e7b9-45b4-8b49-fa6b7a907a59", "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-workflowpvh2q/series-workflowpvh2q-build-action-742831809/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-17 23:41:18 +0000 UTC FinishedAt: 2026-07-18 00:13:49 +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:*1b4bfa7d-ec4c-4cb5-9bd4-04ec31298f77,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-workflowpvh2q/series-workflowpvh2q-convert-artifact-2545583541/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": "7f1206c6-e7b9-45b4-8b49-fa6b7a907a59", "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-workflowpvh2q/series-workflowpvh2q-build-action-742831809/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-18 00:13:59 +0000 UTC FinishedAt: 2026-07-18 00:13:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-18 00:13:59 +0000 UTC FinishedAt: 2026-07-18 00:13:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-18 00:13:59 +0000 UTC FinishedAt: 2026-07-18 00:16:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-18 00:13:59 +0000 UTC FinishedAt: 2026-07-18 00:15:58 +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:*7f1206c6-e7b9-45b4-8b49-fa6b7a907a59,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-workflowpvh2q/series-workflowpvh2q-build-action-742831809/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-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-18 00:16:08 +0000 UTC FinishedAt: 2026-07-18 00:19:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-18 00:16:08 +0000 UTC FinishedAt: 2026-07-18 00:19:03 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*16a8e387-a230-46c3-b7fe-165139f1ea11,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7f1206c6-e7b9-45b4-8b49-fa6b7a907a59,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-workflowpvh2q/series-workflowpvh2q-build-action-2963102728/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-workflowpvh2q/series-workflowpvh2q-build-action-742831809/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-18 00:16:08 +0000 UTC FinishedAt: 2026-07-18 00:16:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-18 00:16:08 +0000 UTC FinishedAt: 2026-07-18 00:16:15 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpvh2q/series-workflowpvh2q-convert-artifact-236847514/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-18 00:16:08 +0000 UTC FinishedAt: 2026-07-18 00:16:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-18 00:16:08 +0000 UTC FinishedAt: 2026-07-18 00:16:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-18 00:16:08 +0000 UTC FinishedAt: 2026-07-18 00:16:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-18 00:16:33 +0000 UTC FinishedAt: 2026-07-18 00:19:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvh2q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hppa_sdiv64","hppa_sdiv64_rem","emit_alu_r64","emit_alu_r32","emit_call_libgcc_ll"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"22a1b910-b30e-4235-a94d-0f6a0e9bc7dc","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-18 00:16:33 +0000 UTC FinishedAt: 2026-07-18 00:18:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*16a8e387-a230-46c3-b7fe-165139f1ea11,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7f1206c6-e7b9-45b4-8b49-fa6b7a907a59,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-workflowpvh2q/series-workflowpvh2q-build-action-2963102728/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-workflowpvh2q/series-workflowpvh2q-build-action-742831809/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-workflowpvh2q/series-workflowpvh2q-convert-artifact-236847514/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,}