Name: series-workflowv598x Phase: Succeeded StartedAt: 2026-08-02 13:12:42 +0000 UTC FinishedAt: 2026-08-02 17:27:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv598x[0] Phase: Succeeded StartedAt: 2026-08-02 13:12:42 +0000 UTC FinishedAt: 2026-08-02 13:45:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv598x[0].run-triage Phase: Succeeded StartedAt: 2026-08-02 13:12:42 +0000 UTC FinishedAt: 2026-08-02 13:45:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "SYN_COOKIES" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "SYN_COOKIES" ], "series_id": "2b0fca3d-9b75-496f-9cc2-074a2010bc00" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "bpf_tcp_check_syncookie", "bpf_tcp_gen_syncookie" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-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+CgkJCTx0ZD4yMDI2LzA4LzAyIDEzOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtTWU5fQ09PS0lFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl90Y3BfY2hlY2tfc3luY29va2llJiMzNDssCiAgICAmIzM0O2JwZl90Y3BfZ2VuX3N5bmNvb2tpZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCBub24tZnVsbCBzb2NrZXRzIChsaWtlIHJlcXVlc3Qgb3IgdGltZXdhaXQgc29ja2V0cykgZnJvbSBiZWluZyBwYXNzZWQgdG8gdGhlIGJwZl90Y3BfY2hlY2tfc3luY29va2llIGFuZCBicGZfdGNwX2dlbl9zeW5jb29raWUgQlBGIGhlbHBlcnMsIHdoaWNoIGNvdWxkIGxlYWQgdG8gaW52YWxpZCBtZW1vcnkgYWNjZXNzZXMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIGhlbHBlcnMgd2l0aCB2YXJpb3VzIHNvY2tldCB0eXBlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMzozMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDA3NGVlMjIyMjg5ZjgzODc1OGRhN2NkOWE0YzE0NTE3MmVhMTZlNjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDEzOjMzOjMxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2ZpbHRlci5jIGIvbmV0L2NvcmUvZmlsdGVyLmNcbmluZGV4IGI0NDZhYThiZTVjMzcuLmFmZGNmZGY0MTQ4OWYgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9maWx0ZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvZmlsdGVyLmNcbkBAIC03Njc4LDYgJiM0Mzs3Njc4LDkgQEAgQlBGX0NBTExfNShicGZfdGNwX2NoZWNrX3N5bmNvb2tpZSwgc3RydWN0IHNvY2sgKiwgc2ssIHZvaWQgKiwgaXBoLCB1MzIsIGlwaF9sZW5cbiBcdGlmICh1bmxpa2VseSghc2sgfHwgdGhfbGVuIFx1MDAzYyBzaXplb2YoKnRoKSkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuJiM0MztcdGlmICghc2tfZnVsbHNvY2soc2spKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0Lyogc2tfbGlzdGVuZXIoKSBhbGxvd3MgVENQX05FV19TWU5fUkVDViwgd2hpY2ggbWFrZXMgbm8gc2Vuc2UgaGVyZS4gKi9cbiBcdGlmIChzay1cdTAwM2Vza19wcm90b2NvbCAhPSBJUFBST1RPX1RDUCB8fCBzay1cdTAwM2Vza19zdGF0ZSAhPSBUQ1BfTElTVEVOKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbkBAIC03NzUyLDYgJiM0Mzs3NzU1LDkgQEAgQlBGX0NBTExfNShicGZfdGNwX2dlbl9zeW5jb29raWUsIHN0cnVjdCBzb2NrICosIHNrLCB2b2lkICosIGlwaCwgdTMyLCBpcGhfbGVuLFxuIFx0aWYgKHVubGlrZWx5KCFzayB8fCB0aF9sZW4gXHUwMDNjIHNpemVvZigqdGgpIHx8IHRoX2xlbiAhPSB0aC1cdTAwM2Vkb2ZmICogNCkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuJiM0MztcdGlmICghc2tfZnVsbHNvY2soc2spKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0aWYgKHNrLVx1MDAzZXNrX3Byb3RvY29sICE9IElQUFJPVE9fVENQIHx8IHNrLVx1MDAzZXNrX3N0YXRlICE9IFRDUF9MSVNURU4pXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEzOjMzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjExbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7U1lOX0NPT0tJRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfdGNwX2NoZWNrX3N5bmNvb2tpZSYjMzQ7LAogICAgJiMzNDticGZfdGNwX2dlbl9zeW5jb29raWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIHByZXZlbnQgbm9uLWZ1bGwgc29ja2V0cyAobGlrZSByZXF1ZXN0IG9yIHRpbWV3YWl0IHNvY2tldHMpIGZyb20gYmVpbmcgcGFzc2VkIHRvIHRoZSBicGZfdGNwX2NoZWNrX3N5bmNvb2tpZSBhbmQgYnBmX3RjcF9nZW5fc3luY29va2llIEJQRiBoZWxwZXJzLCB3aGljaCBjb3VsZCBsZWFkIHRvIGludmFsaWQgbWVtb3J5IGFjY2Vzc2VzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBoZWxwZXJzIHdpdGggdmFyaW91cyBzb2NrZXQgdHlwZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwNzRlZTIyMjI4OWY4Mzg3NThkYTdjZDlhNGMxNDUxNzJlYTE2ZTYzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMiAxMzozMzozMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9jb3JlL2ZpbHRlci5jIGIvbmV0L2NvcmUvZmlsdGVyLmMKaW5kZXggYjQ0NmFhOGJlNWMzNy4uYWZkY2ZkZjQxNDg5ZiAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvZmlsdGVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvZmlsdGVyLmMKQEAgLTc2NzgsNiAmIzQzOzc2NzgsOSBAQCBCUEZfQ0FMTF81KGJwZl90Y3BfY2hlY2tfc3luY29va2llLCBzdHJ1Y3Qgc29jayAqLCBzaywgdm9pZCAqLCBpcGgsIHUzMiwgaXBoX2xlbgogCWlmICh1bmxpa2VseSghc2sgfHwgdGhfbGVuICZsdDsgc2l6ZW9mKCp0aCkpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAomIzQzOwlpZiAoIXNrX2Z1bGxzb2NrKHNrKSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwogCS8qIHNrX2xpc3RlbmVyKCkgYWxsb3dzIFRDUF9ORVdfU1lOX1JFQ1YsIHdoaWNoIG1ha2VzIG5vIHNlbnNlIGhlcmUuICovCiAJaWYgKHNrLSZndDtza19wcm90b2NvbCAhPSBJUFBST1RPX1RDUCB8fCBzay0mZ3Q7c2tfc3RhdGUgIT0gVENQX0xJU1RFTikKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC03NzUyLDYgJiM0Mzs3NzU1LDkgQEAgQlBGX0NBTExfNShicGZfdGNwX2dlbl9zeW5jb29raWUsIHN0cnVjdCBzb2NrICosIHNrLCB2b2lkICosIGlwaCwgdTMyLCBpcGhfbGVuLAogCWlmICh1bmxpa2VseSghc2sgfHwgdGhfbGVuICZsdDsgc2l6ZW9mKCp0aCkgfHwgdGhfbGVuICE9IHRoLSZndDtkb2ZmICogNCkpCiAJCXJldHVybiAtRUlOVkFMOwogCiYjNDM7CWlmICghc2tfZnVsbHNvY2soc2spKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJaWYgKHNrLSZndDtza19wcm90b2NvbCAhPSBJUFBST1RPX1RDUCB8fCBzay0mZ3Q7c2tfc3RhdGUgIT0gVENQX0xJU1RFTikKIAkJcmV0dXJuIC1FSU5WQUw7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTM6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzMgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCUEYgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbmV0L2NvcmUvZmlsdGVyLmNgLiBUaGF0IGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbiDigJMgZmlsdGVyIGNvZGUgY2FuIGdldCByZWFsbHkgY29tcGxleC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhZGRpbmcgYCFza19mdWxsc29jayhzaylgIGNoZWNrcyB0byBgYnBmX3RjcF9jaGVja19zeW5jb29raWVgIGFuZCBgYnBmX3RjcF9nZW5fc3luY29va2llYC4gUmlnaHQsIHRob3NlIGFyZSBCUEYgaGVscGVycywgc28gdGhhdCYjMzk7cyBhIGtleSBkZXRhaWwuIFRoZSBvYnZpb3VzIHF1ZXN0aW9ucyBwb3AgdXA6IGFyZSB0aGVzZSBmdW5jdGlvbnMgYWN0dWFsbHkgKnJlYWNoYWJsZSogaW4gYSB0eXBpY2FsIGNvbmZpZ3VyYXRpb24sIGFuZCwgaWYgc28sIHVuZGVyIHdoYXQgY2lyY3Vtc3RhbmNlcz8gV2hhdCBrZXJuZWwgY29uZmlncyBhcmUgcmVxdWlyZWQgZm9yIHRoaXMgdG8gZXZlbiB0YWtlIGVmZmVjdD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4ZWN1dGlvbiBwYXRoIGhlcmUuCgpNeSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZC4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGViYXNlIGFuZCBzZWFyY2ggZm9yIGluc3RhbmNlcyBvZiBgYnBmX3RjcF9jaGVja19zeW5jb29raWVgIGFuZCBgYnBmX3RjcF9nZW5fc3luY29va2llYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb250ZXh0IGFuZCBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTM6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX3RjcF9jaGVja19zeW5jb29raWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS9maWx0ZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9maWx0ZXIuYz03NjY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NrYl9lY25fc2V0X2NlX3Byb3RvID0ge1xuLS1cbm5ldC9jb3JlL2ZpbHRlci5jLTc2NzEtXG5uZXQvY29yZS9maWx0ZXIuYzo3NjcyOkJQRl9DQUxMXzUoYnBmX3RjcF9jaGVja19zeW5jb29raWUsIHN0cnVjdCBzb2NrICosIHNrLCB2b2lkICosIGlwaCwgdTMyLCBpcGhfbGVuLFxubmV0L2NvcmUvZmlsdGVyLmMtNzY3My1cdCAgIHN0cnVjdCB0Y3BoZHIgKiwgdGgsIHUzMiwgdGhfbGVuKVxuLS1cbm5ldC9jb3JlL2ZpbHRlci5jLTc3MzUtXG5uZXQvY29yZS9maWx0ZXIuYzo3NzM2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3RjcF9jaGVja19zeW5jb29raWVfcHJvdG8gPSB7XG5uZXQvY29yZS9maWx0ZXIuYzo3NzM3Olx0LmZ1bmNcdFx0PSBicGZfdGNwX2NoZWNrX3N5bmNvb2tpZSxcbm5ldC9jb3JlL2ZpbHRlci5jLTc3MzgtXHQuZ3BsX29ubHlcdD0gdHJ1ZSxcbi0tXG5uZXQvY29yZS9maWx0ZXIuYz04NDY0PXRjX2Nsc19hY3RfZnVuY19wcm90byhlbnVtIGJwZl9mdW5jX2lkIGZ1bmNfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5uZXQvY29yZS9maWx0ZXIuYy04NTc0LVx0Y2FzZSBCUEZfRlVOQ190Y3BfY2hlY2tfc3luY29va2llOlxubmV0L2NvcmUvZmlsdGVyLmM6ODU3NTpcdFx0cmV0dXJuIFx1MDAyNmJwZl90Y3BfY2hlY2tfc3luY29va2llX3Byb3RvO1xubmV0L2NvcmUvZmlsdGVyLmMtODU3Ni1cdGNhc2UgQlBGX0ZVTkNfc2tiX2Vjbl9zZXRfY2U6XG4tLVxubmV0L2NvcmUvZmlsdGVyLmM9ODYwMT14ZHBfZnVuY19wcm90byhlbnVtIGJwZl9mdW5jX2lkIGZ1bmNfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5uZXQvY29yZS9maWx0ZXIuYy04NjM5LVx0Y2FzZSBCUEZfRlVOQ190Y3BfY2hlY2tfc3luY29va2llOlxubmV0L2NvcmUvZmlsdGVyLmM6ODY0MDpcdFx0cmV0dXJuIFx1MDAyNmJwZl90Y3BfY2hlY2tfc3luY29va2llX3Byb3RvO1xubmV0L2NvcmUvZmlsdGVyLmMtODY0MS1cdGNhc2UgQlBGX0ZVTkNfdGNwX2dlbl9zeW5jb29raWU6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTM6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA5OQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgQlBGIEhlbHBlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O0FoLCBpdCYjMzk7cyB0aWdodGVuaW5nIHVwIHRoZSB1c2Ugb2YgYGJwZl90Y3BfY2hlY2tfc3luY29va2llYCBhbmQgYGJwZl90Y3BfZ2VuX3N5bmNvb2tpZWAuJiMzNDsgVGhlc2UgYXJlIHRoZSBCUEYgaGVscGVycyB0aGF0IHdvcmsgd2l0aGluIHRoZSBUQyBhbmQgWERQIHdvcmxkcywgcmlnaHQ/IEFuZCB0aGUgY2hhbmdlIGlzIGEgc2FuaXR5IGNoZWNrIOKAkyB0aGV5IGFyZSBwcmV2ZW50aW5nIHRoZSB1c2Ugb2YgdGhlc2UgaGVscGVycyBvbiBub24tZnVsbCBzb2NrZXRzLCBsaWtlIHJlcXVlc3Qgb3IgdGltZXdhaXQgc29ja2V0cywgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgZ29vZCwgdGFyZ2V0ZWQgaW1wcm92ZW1lbnQuCgpOb3csIG15IGV4cGVydCBicmFpbiBpbW1lZGlhdGVseSBqdW1wcyB0byBjb25maWd1cmF0aW9uLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkga25vdyBhbGwgdGhlIGltcGxpY2F0aW9ucy4gSSBrbm93IGBuZXQvY29yZS9maWx0ZXIuY2AgaXMgaW52b2x2ZWQsIGFuZCB0aGF0IGlzIHVzdWFsbHkgdGllZCB0byBgQ09ORklHX05FVGAuIEJ1dCB0aGVzZSBCUEYgaGVscGVycyBhcmUgKnVzdWFsbHkqIGdvdmVybmVkIGJ5IGBDT05GSUdfQlBGX1NZU0NBTExgIGFuZCBgQ09ORklHX0NHUk9VUF9CUEZgLCBvciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLCBzbyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYWxsIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGNvcnJlY3QuCgpMZXQgbWUgdGFrZSBhIGxvb2sgYXQgYG5ldC9jb3JlL01ha2VmaWxlYCBhbmQgY29uZmlybSB3aGljaCBjb25maWd1cmF0aW9ucyBhcmUgdHJ1bHkgbmVjZXNzYXJ5IGZvciB0aGlzIGNoYW5nZSB0byBiZSBlZmZlY3RpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTM6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmlsdGVyLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9NYWtlZmlsZT0xMj1vYmoteVx0XHQgICAgICYjNDM7PSBkZXYubyBkZXZfYXBpLm8gZGV2X2FkZHJfbGlzdHMubyBkc3QubyBuZXRldmVudC5vIFxcXG5uZXQvY29yZS9NYWtlZmlsZToxMzpcdFx0XHRuZWlnaGJvdXIubyBydG5ldGxpbmsubyB1dGlscy5vIGxpbmtfd2F0Y2gubyBmaWx0ZXIubyBcXFxubmV0L2NvcmUvTWFrZWZpbGUtMTQtXHRcdFx0c29ja19kaWFnLm8gZGV2X2lvY3RsLm8gdHNvLm8gc29ja19yZXVzZXBvcnQubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEzOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NTcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgZmlsdGVyLm9gIE1vZHVsZSYjMzk7cyBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSBrbm93IHRoYXQgYGZpbHRlci5vYCBnZXRzIGJ1aWx0IHVuY29uZGl0aW9uYWxseSB3aGVuIGBDT05GSUdfTkVUYCBpcyBzZXQuIFRoYXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gSG93ZXZlciwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBgYnBmX3RjcF9jaGVja19zeW5jb29raWVgLiBUaGUgbmFtZSByaW5ncyBhIGJlbGwsIGFuZCBJJiMzOTttIHByZXR0eSBzdXJlIGl0IGhhcyBzb21lIGRlcGVuZGVuY3kgb24gYENPTkZJR19TWU5fQ09PS0lFU2AuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCwgYmVjYXVzZSBpZiBgYnBmX3RjcF9jaGVja19zeW5jb29raWVgIGlzbiYjMzk7dCBwcm9wZXJseSBndWFyZGVkLCB3ZSBjb3VsZCBzZWUgc29tZSB1bmV4cGVjdGVkIGJ1aWxkIGFydGlmYWN0cyBvciBldmVuIHJ1bnRpbWUgYmVoYXZpb3IuIFRpbWUgdG8gZGVsdmUgaW50byB0aGUgY29kZS4gSSYjMzk7bGwgdGFrZSBhIGxvb2sgYXQgYG5ldC9jb3JlL2ZpbHRlci5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDc2NzIuIFRoYXQmIzM5O3MgbGlrZWx5IHdoZXJlIHRoZSByZWxldmFudCBjb2RlIGlzLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgZ29pbmcgb24gaW4gdGhhdCBzZWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEzOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2NvcmUvZmlsdGVyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3NjYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs3NjYwOlx0XHR9XG43NjYxOlx0XG43NjYyOlx0XHRyZXR1cm4gaW5zbiAtIGluc25fYnVmO1xuNzY2MzpcdH1cbjc2NjQ6XHRcbjc2NjU6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9za2JfZWNuX3NldF9jZV9wcm90byA9IHtcbjc2NjY6XHRcdC5mdW5jICAgICAgICAgICA9IGJwZl9za2JfZWNuX3NldF9jZSxcbjc2Njc6XHRcdC5ncGxfb25seSAgICAgICA9IGZhbHNlLFxuNzY2ODpcdFx0LnJldF90eXBlICAgICAgID0gUkVUX0lOVEVHRVIsXG43NjY5Olx0XHQuYXJnMV90eXBlICAgICAgPSBBUkdfUFRSX1RPX0NUWCxcbjc2NzA6XHR9O1xuNzY3MTpcdFxuNzY3MjpcdEJQRl9DQUxMXzUoYnBmX3RjcF9jaGVja19zeW5jb29raWUsIHN0cnVjdCBzb2NrICosIHNrLCB2b2lkICosIGlwaCwgdTMyLCBpcGhfbGVuLFxuNzY3MzpcdFx0ICAgc3RydWN0IHRjcGhkciAqLCB0aCwgdTMyLCB0aF9sZW4pXG43Njc0Olx0e1xuNzY3NTpcdCNpZmRlZiBDT05GSUdfU1lOX0NPT0tJRVNcbjc2NzY6XHRcdGludCByZXQ7XG43Njc3Olx0XG43Njc4Olx0XHRpZiAodW5saWtlbHkoIXNrIHx8IHRoX2xlbiBcdTAwM2Mgc2l6ZW9mKCp0aCkpKVxuNzY3OTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjc2ODA6XHRcbjc2ODE6XHRcdGlmICghc2tfZnVsbHNvY2soc2spKVxuNzY4MjpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjc2ODM6XHRcbjc2ODQ6XHRcdC8qIHNrX2xpc3RlbmVyKCkgYWxsb3dzIFRDUF9ORVdfU1lOX1JFQ1YsIHdoaWNoIG1ha2VzIG5vIHNlbnNlIGhlcmUuICovXG43Njg1Olx0XHRpZiAoc2stXHUwMDNlc2tfcHJvdG9jb2wgIT0gSVBQUk9UT19UQ1AgfHwgc2stXHUwMDNlc2tfc3RhdGUgIT0gVENQX0xJU1RFTilcbjc2ODY6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG43Njg3Olx0XG43Njg4Olx0XHRpZiAoIVJFQURfT05DRShzb2NrX25ldChzayktXHUwMDNlaXB2NC5zeXNjdGxfdGNwX3N5bmNvb2tpZXMpKVxuNzY4OTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjc2OTA6XHRcbjc2OTE6XHRcdGlmICghdGgtXHUwMDNlYWNrIHx8IHRoLVx1MDAzZXJzdCB8fCB0aC1cdTAwM2VzeW4pXG43NjkyOlx0XHRcdHJldHVybiAtRU5PRU5UO1xuNzY5MzpcdFxuNzY5NDpcdFx0aWYgKHVubGlrZWx5KGlwaF9sZW4gXHUwMDNjIHNpemVvZihzdHJ1Y3QgaXBoZHIpKSlcbjc2OTU6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG43Njk2Olx0XG43Njk3Olx0XHRpZiAodGNwX3N5bnFfbm9fcmVjZW50X292ZXJmbG93KHNrKSlcbjc2OTg6XHRcdFx0cmV0dXJuIC1FTk9FTlQ7XG43Njk5Olx0XG43NzAwOlx0XHQvKiBCb3RoIHN0cnVjdCBpcGhkciBhbmQgc3RydWN0IGlwdjZoZHIgaGF2ZSB0aGUgdmVyc2lvbiBmaWVsZCBhdCB0aGVcbjc3MDE6XHRcdCAqIHNhbWUgb2Zmc2V0IHNvIHdlIGNhbiBjYXN0IHRvIHRoZSBzaG9ydGVyIGhlYWRlciAoc3RydWN0IGlwaGRyKS5cbjc3MDI6XHRcdCAqL1xuNzcwMzpcdFx0c3dpdGNoICgoKHN0cnVjdCBpcGhkciAqKWlwaCktXHUwMDNldmVyc2lvbikge1xuNzcwNDpcdFx0Y2FzZSA0OlxuNzcwNTpcdFx0XHRpZiAoc2stXHUwMDNlc2tfZmFtaWx5ID09IEFGX0lORVQ2IFx1MDAyNlx1MDAyNiBpcHY2X29ubHlfc29jayhzaykpXG43NzA2Olx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG43NzA3Olx0XG43NzA4Olx0XHRcdHJldCA9IF9fY29va2llX3Y0X2NoZWNrKChzdHJ1Y3QgaXBoZHIgKilpcGgsIHRoKTtcbjc3MDk6XHRcdFx0YnJlYWs7XG43NzEwOlx0XG43NzExOlx0I2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG43NzEyOlx0XHRjYXNlIDY6XG43NzEzOlx0XHRcdGlmICh1bmxpa2VseShpcGhfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IGlwdjZoZHIpKSlcbjc3MTQ6XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjc3MTU6XHRcbjc3MTY6XHRcdFx0aWYgKHNrLVx1MDAzZXNrX2ZhbWlseSAhPSBBRl9JTkVUNilcbjc3MTc6XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjc3MTg6XHRcbjc3MTk6XHRcdFx0cmV0ID0gX19jb29raWVfdjZfY2hlY2soKHN0cnVjdCBpcHY2aGRyICopaXBoLCB0aCk7XG43NzIwOlx0XHRcdGJyZWFrO1xuNzcyMTpcdCNlbmRpZiAvKiBDT05GSUdfSVBWNiAqL1xuNzcyMjpcdFxuNzcyMzpcdFx0ZGVmYXVsdDpcbjc3MjQ6XHRcdFx0cmV0dXJuIC1FUFJPVE9OT1NVUFBPUlQ7XG43NzI1Olx0XHR9XG43NzI2Olx0XG43NzI3Olx0XHRpZiAocmV0IFx1MDAzZSAwKVxuNzcyODpcdFx0XHRyZXR1cm4gMDtcbjc3Mjk6XHRcbjc3MzA6XHRcdHJldHVybiAtRU5PRU5UO1xuNzczMTpcdCNlbHNlXG43NzMyOlx0XHRyZXR1cm4gLUVOT1RTVVBQO1xuNzczMzpcdCNlbmRpZlxuNzczNDpcdH1cbjc3MzU6XHRcbjc3MzY6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl90Y3BfY2hlY2tfc3luY29va2llX3Byb3RvID0ge1xuNzczNzpcdFx0LmZ1bmNcdFx0PSBicGZfdGNwX2NoZWNrX3N5bmNvb2tpZSxcbjc3Mzg6XHRcdC5ncGxfb25seVx0PSB0cnVlLFxuNzczOTpcdFx0LnBrdF9hY2Nlc3NcdD0gdHJ1ZSxcbjc3NDA6XHRcdC5yZXRfdHlwZVx0PSBSRVRfSU5URUdFUixcbjc3NDE6XHRcdC5hcmcxX3R5cGVcdD0gQVJHX1BUUl9UT19CVEZfSURfU09DS19DT01NT04sXG43NzQyOlx0XHQuYXJnMl90eXBlXHQ9IEFSR19QVFJfVE9fTUVNIHwgTUVNX1JET05MWSxcbjc3NDM6XHRcdC5hcmczX3R5cGVcdD0gQVJHX0NPTlNUX1NJWkUsXG43NzQ0Olx0XHQuYXJnNF90eXBlXHQ9IEFSR19QVFJfVE9fTUVNIHwgTUVNX1JET05MWSxcbjc3NDU6XHRcdC5hcmc1X3R5cGVcdD0gQVJHX0NPTlNUX1NJWkUsXG43NzQ2Olx0fTtcbjc3NDc6XHRcbjc3NDg6XHRCUEZfQ0FMTF81KGJwZl90Y3BfZ2VuX3N5bmNvb2tpZSwgc3RydWN0IHNvY2sgKiwgc2ssIHZvaWQgKiwgaXBoLCB1MzIsIGlwaF9sZW4sXG43NzQ5Olx0XHQgICBzdHJ1Y3QgdGNwaGRyICosIHRoLCB1MzIsIHRoX2xlbilcbjc3NTA6XHR7XG43NzUxOlx0I2lmZGVmIENPTkZJR19TWU5fQ09PS0lFU1xuNzc1MjpcdFx0dTMyIGNvb2tpZTtcbjc3NTM6XHRcdHUxNiBtc3M7XG43NzU0Olx0XG43NzU1Olx0XHRpZiAodW5saWtlbHkoIXNrIHx8IHRoX2xlbiBcdTAwM2Mgc2l6ZW9mKCp0aCkgfHwgdGhfbGVuICE9IHRoLVx1MDAzZWRvZmYgKiA0KSlcbjc3NTY6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG43NzU3Olx0XG43NzU4Olx0XHRpZiAoIXNrX2Z1bGxzb2NrKHNrKSlcbjc3NTk6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTM6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjEwbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0NjgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBpcyBhYm91dCBpbnRlZ3JhdGluZyBCUEYgd2l0aCBUQ1Agc3luY29va2llcy4gSSBzZWUgd2UgZGVmaW5pdGVseSBuZWVkIGBDT05GSUdfU1lOX0NPT0tJRVNgIGVuYWJsZWQsIHRoYXQmIzM5O3MgYSBnaXZlbi4gQW5kIHNpbmNlIHdlJiMzOTtyZSB1c2luZyBCUEYsIG5hdHVyYWxseSwgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgcmVxdWlyZWQgYXMgd2VsbC4gVGhlIGNvcmUgZnVuY3Rpb25zIGhlcmUgYXJlIGBicGZfdGNwX2NoZWNrX3N5bmNvb2tpZWAgYW5kIGBicGZfdGNwX2dlbl9zeW5jb29raWVgIOKAkyB0aGVzZSBhcmUgdGhlIEJQRiBoZWxwZXJzIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gVGhleSYjMzk7cmUgZGVzaWduZWQgdG8gYmUgY2FsbGVkIGZyb20gd2l0aGluIEJQRiBwcm9ncmFtcywgd2hpY2ggbWFrZXMgc2Vuc2UuCgpUaGUgY3J1Y2lhbCBwYXJ0IG9mIHRoaXMgcGF0Y2ggaXMgdGhlIGFkZGl0aW9uIG9mIHRoZSBgIXNrX2Z1bGxzb2NrKHNrKWAgY2hlY2suIFRoaXMgaXMgaW1wb3J0YW50OiBpdCBwcmV2ZW50cyB0aGUgaGVscGVycyBmcm9tIGJlaW5nIGNhbGxlZCB3aXRoIHNvY2tldHMgdGhhdCBhcmVuJiMzOTt0IGZ1bGx5IGVzdGFibGlzaGVkLCBsaWtlIHJlcXVlc3Qgc29ja2V0cyBvciB0aG9zZSBpbiB0aGUgVElNRS1XQUlUIHN0YXRlLiBUaGF0JiMzOTtzIGEgc29saWQgZGVmZW5zaXZlIG1lYXN1cmUgYmVjYXVzZSB0cnlpbmcgdG8gYWNjZXNzIGZpZWxkcyBvbiB0aGVzZSBub24tZnVsbCBzb2NrZXRzIHRoYXQgYXJlbiYjMzk7dCBndWFyYW50ZWVkIHRvIGV4aXN0IGNvdWxkIGxlYWQgdG8gYSBjcmFzaCBvciBvdGhlciB1bmRlc2lyYWJsZSBiZWhhdmlvci4gSXQmIzM5O3MgYSBjbGFzc2ljIGV4YW1wbGUgb2YgYSBwb3RlbnRpYWwgbnVsbC1wb2ludGVyIGRlcmVmZXJlbmNlIG9yIHNpbWlsYXIgaXNzdWUuCgpUbyB2ZXJpZnkgdGhpcyBwYXRjaCwgSSYjMzk7ZCBuZWVkIHRvIGNyYWZ0IGEgQlBGIHByb2dyYW0gdGhhdCBpbnRlbnRpb25hbGx5IGNhbGxzIGVpdGhlciBgYnBmX3RjcF9jaGVja19zeW5jb29raWVgIG9yIGBicGZfdGNwX2dlbl9zeW5jb29raWVgIHdpdGggYSBub24tZnVsbCBzb2NrZXQgYXMgYW4gYXJndW1lbnQuIEkgd2lsbCBhbHNvIGhhdmUgdG8gbWFrZSBzdXJlIHRvIGVuYWJsZSB0aGUgY29ycmVjdCBjb25maWdzIHdoaWNoIGFyZSBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYENPTkZJR19TWU5fQ09PS0lFU2AgYW5kIGBDT05GSUdfTkVUYC4gSSBzaG91bGQgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgQ09ORklHX1NZTl9DT09LSUVTYCBpcyB0aGUgKmV4YWN0KiBuYW1lIGFuZCBub3Qgc29tZXRoaW5nIHNpbWlsYXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEzOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTWU5fQ09PS0lFUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz0yNTk9Y29uZmlnIElQX1BJTVNNX1YyXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0yNjctXG5uZXQvaXB2NC9LY29uZmlnOjI2ODpjb25maWcgU1lOX0NPT0tJRVNcbm5ldC9pcHY0L0tjb25maWctMjY5LVx0Ym9vbCBcJiMzNDtJUDogVENQIHN5bmNvb2tpZSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEzOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMDYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKT2theSwgZGVmaW5pdGVseSBgU1lOX0NPT0tJRVNgLCB0aGF0JiMzOTtzIHdoYXQgd2UmIzM5O3JlIGFmdGVyLiBOb3csIGxldCYjMzk7cyBzZWUgd2hhdCBlbHNlIG1pZ2h0IGJlIGNvbm5lY3RlZCB0byB0aGlzLiBUaGUgZnVuY3Rpb24gcHJvdG90eXBlcywgYHRjX2Nsc19hY3RfZnVuY19wcm90b2AgYW5kIGB4ZHBfZnVuY19wcm90b2AsIGFyZSB3aGVyZSB0aGUgaGVscGVycyBhcmUgZXhwb3NlZC4gSG1tLCBzbyBgQ09ORklHX05FVF9DTFNfQUNUYCBhbmQgYENPTkZJR19YRFBfU09DS0VUU2AgY291bGQgYmUgaW5kaXJlY3RseSByZWxldmFudC4gQnV0IHJlYWxseSwgdGhlIGNydWNpYWwgb25lIGhlcmUgaXMgbGlrZWx5IGBDT05GSUdfQlBGX1NZU0NBTExgLgoKSG9sZCBvbi4uLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZy4gSXMgYHRjX2Nsc19hY3RfZnVuY19wcm90b2AgY29tcGlsZWQgKmNvbmRpdGlvbmFsbHkqIG9uIGBDT05GSUdfTkVUX0NMU19CUEZgIG9yIGBDT05GSUdfQlBGX1NZU0NBTExgPyBUaGF0IHNvdW5kcyByaWdodC4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCBtZSBqdW1wIGludG8gYG5ldC9jb3JlL2ZpbHRlci5jYCBhbmQgY29uZmlybSBob3cgYHRjX2Nsc19hY3RfZnVuY19wcm90b2AgaXMgYWN0dWFsbHkgZGVmaW5lZCBpbiByZWxhdGlvbiB0byB0aG9zZSBvdGhlciBjb25maWdzLiBJIHdhbnQgdG8gc2VlIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBpbiBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMzo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y19jbHNfYWN0X2Z1bmNfcHJvdG8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS9maWx0ZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9maWx0ZXIuYz04NDYzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gKlxubmV0L2NvcmUvZmlsdGVyLmM6ODQ2NDp0Y19jbHNfYWN0X2Z1bmNfcHJvdG8oZW51bSBicGZfZnVuY19pZCBmdW5jX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG5uZXQvY29yZS9maWx0ZXIuYy04NDY1LXtcbi0tXG5uZXQvY29yZS9maWx0ZXIuYz0xMTM0Nj1jb25zdCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX29wcyB0Y19jbHNfYWN0X3ZlcmlmaWVyX29wcyA9IHtcbm5ldC9jb3JlL2ZpbHRlci5jOjExMzQ3Olx0LmdldF9mdW5jX3Byb3RvXHRcdD0gdGNfY2xzX2FjdF9mdW5jX3Byb3RvLFxubmV0L2NvcmUvZmlsdGVyLmMtMTEzNDgtXHQuaXNfdmFsaWRfYWNjZXNzXHQ9IHRjX2Nsc19hY3RfaXNfdmFsaWRfYWNjZXNzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMzo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODIwCgkJCQkJCQlvdXRwdXQ6IDEzOAoJCQkJCQkJdGhvdWdodHM6IDI2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIEkgcmVjb2duaXplIHRoYXQgYHRjX2Nsc19hY3RfdmVyaWZpZXJfb3BzYCBpcyByZWxldmFudCBoZXJlLCBzcGVjaWZpY2FsbHkgZm9yIGBCUEZfUFJPR19UWVBFX1NDSEVEX0NMU2AgYW5kIGBCUEZfUFJPR19UWVBFX1NDSEVEX0FDVGAuIFJpZ2h0LCB0aG9zZSBhcmUgdGhlIGVCUEYgcHJvZ3JhbSB0eXBlcyB0aGF0IGFyZSByZWxldmFudCB0byB0aGlzIHdvcmssIGFuZCB0aGV5JiMzOTtyZSBvbmx5IGF2YWlsYWJsZSBpZiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBlbmFibGVkLiBNYWtlcyBzZW5zZS4gQW5kIHNpbmNlIHdlIGFyZSBkZWFsaW5nIHdpdGggc3luY29va2llcywgYFNZTl9DT09LSUVTYCBpcyBhbm90aGVyIGtleSBjb25maWcgdG8ga2VlcCBpbiBtaW5kLgoKVGhlIGNvcmUgaXNzdWUgc2VlbXMgdG8gYmUgYXJvdW5kIGBicGZfdGNwX2NoZWNrX3N5bmNvb2tpZWAgYW5kIGBicGZfdGNwX2dlbl9zeW5jb29raWVgLiBUaGUgcGF0Y2gmIzM5O3MgcmVhc29uaW5nIGlzIGNsZWFyOyBpdOKAmXMgYSBmdW5jdGlvbmFsIGZpeCwgcHJldmVudGluZyBhIGNyYXNoIG9yIG1lbW9yeSBjb3JydXB0aW9uIHdoZW4gYSAqbm9uLWZ1bGwqIHNvY2tldCDigJMgbGlrZSBhIHJlcXVlc3Qgb3IgVElNRV9XQUlUIHNvY2tldCDigJMgaXMgZXJyb25lb3VzbHkgcGFzc2VkIHRvIHRoZXNlIEJQRiBoZWxwZXJzLiBUaGlzIGlzIGEgY2xhc3NpYyB2dWxuZXJhYmlsaXR5IHZlY3RvciwgZWFzeSB0byBtaXNzLiBUaGlzIHBhdGNoIGFwcGVhcnMgdG8gYmUgZG9pbmcgZXhhY3RseSB3aGF0IEkgd291bGQgZXhwZWN0IGluIHRoaXMgc2l0dWF0aW9uLCBhZGRpbmcgYSBjaGVjayB0byBhdm9pZCB0aGUgaXNzdWUgYWx0b2dldGhlci4KClRoZSBwYXRjaCYjMzk7cyBpbXBhY3QgaXMgc2lnbmlmaWNhbnQuIEdpdmVuIHRoZSBwb3RlbnRpYWwgZm9yIGNyYXNoZXMgYW5kIG1lbW9yeSBlcnJvcnMsIGZ1enppbmcgdGhpcyBhcmVhIGlzIGNyaXRpY2FsLiBXZSBuZWVkIHRvIHRocm93IGEgdmFyaWV0eSBvZiBzb2NrZXQgdHlwZXMgYXQgdGhvc2UgaGVscGVycywgZXNwZWNpYWxseSB0aGUgbm9uLWZ1bGwgb25lcyBtZW50aW9uZWQsIGFuZCB2ZXJpZnkgdGhhdCB0aGUgZml4IGlzIHJvYnVzdC4gVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIHB1cnN1aW5nIHdpdGggYSBmdXp6aW5nIGNhbXBhaWduLgoKU28sIHRvIHN1bW1hcml6ZTogdGhlIHJlbGV2YW50IGNvbmZpZ3MgYXJlIGBCUEZfU1lTQ0FMTGAgYW5kIGBTWU5fQ09PS0lFU2AuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIGludmVzdGlnYXRlIGFyZSBgYnBmX3RjcF9jaGVja19zeW5jb29raWVgIGFuZCBgYnBmX3RjcF9nZW5fc3luY29va2llYC4gTGV0JiMzOTtzIGdldCBmdXp6aW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMzo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7U1lOX0NPT0tJRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfdGNwX2NoZWNrX3N5bmNvb2tpZSYjMzQ7LAogICAgJiMzNDticGZfdGNwX2dlbl9zeW5jb29raWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIHByZXZlbnQgbm9uLWZ1bGwgc29ja2V0cyAobGlrZSByZXF1ZXN0IG9yIHRpbWV3YWl0IHNvY2tldHMpIGZyb20gYmVpbmcgcGFzc2VkIHRvIHRoZSBicGZfdGNwX2NoZWNrX3N5bmNvb2tpZSBhbmQgYnBmX3RjcF9nZW5fc3luY29va2llIEJQRiBoZWxwZXJzLCB3aGljaCBjb3VsZCBsZWFkIHRvIGludmFsaWQgbWVtb3J5IGFjY2Vzc2VzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBoZWxwZXJzIHdpdGggdmFyaW91cyBzb2NrZXQgdHlwZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O1NZTl9DT09LSUVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX3RjcF9jaGVja19zeW5jb29raWUmIzM0OywKICAgICYjMzQ7YnBmX3RjcF9nZW5fc3luY29va2llJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IG5vbi1mdWxsIHNvY2tldHMgKGxpa2UgcmVxdWVzdCBvciB0aW1ld2FpdCBzb2NrZXRzKSBmcm9tIGJlaW5nIHBhc3NlZCB0byB0aGUgYnBmX3RjcF9jaGVja19zeW5jb29raWUgYW5kIGJwZl90Y3BfZ2VuX3N5bmNvb2tpZSBCUEYgaGVscGVycywgd2hpY2ggY291bGQgbGVhZCB0byBpbnZhbGlkIG1lbW9yeSBhY2Nlc3Nlcy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2UgaGVscGVycyB3aXRoIHZhcmlvdXMgc29ja2V0IHR5cGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTM6MzM6MzIuNDM3NzI0Nzg5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkyMTkxMDIyNDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJTWU5fQ09PS0lFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl90Y3BfY2hlY2tfc3luY29va2llXCIsXG4gICAgXCJicGZfdGNwX2dlbl9zeW5jb29raWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCBub24tZnVsbCBzb2NrZXRzIChsaWtlIHJlcXVlc3Qgb3IgdGltZXdhaXQgc29ja2V0cykgZnJvbSBiZWluZyBwYXNzZWQgdG8gdGhlIGJwZl90Y3BfY2hlY2tfc3luY29va2llIGFuZCBicGZfdGNwX2dlbl9zeW5jb29raWUgQlBGIGhlbHBlcnMsIHdoaWNoIGNvdWxkIGxlYWQgdG8gaW52YWxpZCBtZW1vcnkgYWNjZXNzZXMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIGhlbHBlcnMgd2l0aCB2YXJpb3VzIHNvY2tldCB0eXBlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTM6MzM6MzIuNDM3NzMyODA5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDEzNzgxNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwNzRlZTIyMjI4OWY4Mzg3NThkYTdjZDlhNGMxNDUxNzJlYTE2ZTYzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDIgMTM6MzM6MzEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZmlsdGVyLmMgYi9uZXQvY29yZS9maWx0ZXIuY1xcbmluZGV4IGI0NDZhYThiZTVjMzcuLmFmZGNmZGY0MTQ4OWYgMTAwNjQ0XFxuLS0tIGEvbmV0L2NvcmUvZmlsdGVyLmNcXG4rKysgYi9uZXQvY29yZS9maWx0ZXIuY1xcbkBAIC03Njc4LDYgKzc2NzgsOSBAQCBCUEZfQ0FMTF81KGJwZl90Y3BfY2hlY2tfc3luY29va2llLCBzdHJ1Y3Qgc29jayAqLCBzaywgdm9pZCAqLCBpcGgsIHUzMiwgaXBoX2xlblxcbiBcXHRpZiAodW5saWtlbHkoIXNrIHx8IHRoX2xlbiBcXHUwMDNjIHNpemVvZigqdGgpKSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbitcXHRpZiAoIXNrX2Z1bGxzb2NrKHNrKSlcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbiBcXHQvKiBza19saXN0ZW5lcigpIGFsbG93cyBUQ1BfTkVXX1NZTl9SRUNWLCB3aGljaCBtYWtlcyBubyBzZW5zZSBoZXJlLiAqL1xcbiBcXHRpZiAoc2stXFx1MDAzZXNrX3Byb3RvY29sICE9IElQUFJPVE9fVENQIHx8IHNrLVxcdTAwM2Vza19zdGF0ZSAhPSBUQ1BfTElTVEVOKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5AQCAtNzc1Miw2ICs3NzU1LDkgQEAgQlBGX0NBTExfNShicGZfdGNwX2dlbl9zeW5jb29raWUsIHN0cnVjdCBzb2NrICosIHNrLCB2b2lkICosIGlwaCwgdTMyLCBpcGhfbGVuLFxcbiBcXHRpZiAodW5saWtlbHkoIXNrIHx8IHRoX2xlbiBcXHUwMDNjIHNpemVvZigqdGgpIHx8IHRoX2xlbiAhPSB0aC1cXHUwMDNlZG9mZiAqIDQpKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuK1xcdGlmICghc2tfZnVsbHNvY2soc2spKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdGlmIChzay1cXHUwMDNlc2tfcHJvdG9jb2wgIT0gSVBQUk9UT19UQ1AgfHwgc2stXFx1MDAzZXNrX3N0YXRlICE9IFRDUF9MSVNURU4pXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTM6MzM6MzMuMDQwMTM3NzExWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjkxNTg4NTk3NzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJTWU5fQ09PS0lFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl90Y3BfY2hlY2tfc3luY29va2llXCIsXG4gICAgXCJicGZfdGNwX2dlbl9zeW5jb29raWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCBub24tZnVsbCBzb2NrZXRzIChsaWtlIHJlcXVlc3Qgb3IgdGltZXdhaXQgc29ja2V0cykgZnJvbSBiZWluZyBwYXNzZWQgdG8gdGhlIGJwZl90Y3BfY2hlY2tfc3luY29va2llIGFuZCBicGZfdGNwX2dlbl9zeW5jb29raWUgQlBGIGhlbHBlcnMsIHdoaWNoIGNvdWxkIGxlYWQgdG8gaW52YWxpZCBtZW1vcnkgYWNjZXNzZXMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIGhlbHBlcnMgd2l0aCB2YXJpb3VzIHNvY2tldCB0eXBlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDc0ZWUyMjIyODlmODM4NzU4ZGE3Y2Q5YTRjMTQ1MTcyZWExNmU2M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDIgMTM6MzM6MzEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvY29yZS9maWx0ZXIuYyBiL25ldC9jb3JlL2ZpbHRlci5jXG5pbmRleCBiNDQ2YWE4YmU1YzM3Li5hZmRjZmRmNDE0ODlmIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZmlsdGVyLmNcbisrKyBiL25ldC9jb3JlL2ZpbHRlci5jXG5AQCAtNzY3OCw2ICs3Njc4LDkgQEAgQlBGX0NBTExfNShicGZfdGNwX2NoZWNrX3N5bmNvb2tpZSwgc3RydWN0IHNvY2sgKiwgc2ssIHZvaWQgKiwgaXBoLCB1MzIsIGlwaF9sZW5cbiBcdGlmICh1bmxpa2VseSghc2sgfHwgdGhfbGVuIFx1MDAzYyBzaXplb2YoKnRoKSkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuK1x0aWYgKCFza19mdWxsc29jayhzaykpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuIFx0Lyogc2tfbGlzdGVuZXIoKSBhbGxvd3MgVENQX05FV19TWU5fUkVDViwgd2hpY2ggbWFrZXMgbm8gc2Vuc2UgaGVyZS4gKi9cbiBcdGlmIChzay1cdTAwM2Vza19wcm90b2NvbCAhPSBJUFBST1RPX1RDUCB8fCBzay1cdTAwM2Vza19zdGF0ZSAhPSBUQ1BfTElTVEVOKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbkBAIC03NzUyLDYgKzc3NTUsOSBAQCBCUEZfQ0FMTF81KGJwZl90Y3BfZ2VuX3N5bmNvb2tpZSwgc3RydWN0IHNvY2sgKiwgc2ssIHZvaWQgKiwgaXBoLCB1MzIsIGlwaF9sZW4sXG4gXHRpZiAodW5saWtlbHkoIXNrIHx8IHRoX2xlbiBcdTAwM2Mgc2l6ZW9mKCp0aCkgfHwgdGhfbGVuICE9IHRoLVx1MDAzZWRvZmYgKiA0KSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4rXHRpZiAoIXNrX2Z1bGxzb2NrKHNrKSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHRpZiAoc2stXHUwMDNlc2tfcHJvdG9jb2wgIT0gSVBQUk9UT19UQ1AgfHwgc2stXHUwMDNlc2tfc3RhdGUgIT0gVENQX0xJU1RFTilcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMzozMzozMy4wNDAxNDAyNzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjc1Mzg3MzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJQRiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9jb3JlL2ZpbHRlci5jYC4gVGhhdCBpbW1lZGlhdGVseSBncmFicyBteSBhdHRlbnRpb24g4oCTIGZpbHRlciBjb2RlIGNhbiBnZXQgcmVhbGx5IGNvbXBsZXguIEl0IGxvb2tzIGxpa2UgaXQncyBhZGRpbmcgYCFza19mdWxsc29jayhzaylgIGNoZWNrcyB0byBgYnBmX3RjcF9jaGVja19zeW5jb29raWVgIGFuZCBgYnBmX3RjcF9nZW5fc3luY29va2llYC4gUmlnaHQsIHRob3NlIGFyZSBCUEYgaGVscGVycywgc28gdGhhdCdzIGEga2V5IGRldGFpbC4gVGhlIG9idmlvdXMgcXVlc3Rpb25zIHBvcCB1cDogYXJlIHRoZXNlIGZ1bmN0aW9ucyBhY3R1YWxseSAqcmVhY2hhYmxlKiBpbiBhIHR5cGljYWwgY29uZmlndXJhdGlvbiwgYW5kLCBpZiBzbywgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzPyBXaGF0IGtlcm5lbCBjb25maWdzIGFyZSByZXF1aXJlZCBmb3IgdGhpcyB0byBldmVuIHRha2UgZWZmZWN0PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhlY3V0aW9uIHBhdGggaGVyZS5cblxuTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlYmFzZSBhbmQgc2VhcmNoIGZvciBpbnN0YW5jZXMgb2YgYGJwZl90Y3BfY2hlY2tfc3luY29va2llYCBhbmQgYGJwZl90Y3BfZ2VuX3N5bmNvb2tpZWAuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29udGV4dCBhbmQgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjMyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTM6MzM6MzYuNzE1NTMwNjM4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjg3MTU3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfdGNwX2NoZWNrX3N5bmNvb2tpZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY29yZS9maWx0ZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9maWx0ZXIuYz03NjY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NrYl9lY25fc2V0X2NlX3Byb3RvID0ge1xcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmMtNzY3MS1cXG5uZXQvY29yZS9maWx0ZXIuYzo3NjcyOkJQRl9DQUxMXzUoYnBmX3RjcF9jaGVja19zeW5jb29raWUsIHN0cnVjdCBzb2NrICosIHNrLCB2b2lkICosIGlwaCwgdTMyLCBpcGhfbGVuLFxcbm5ldC9jb3JlL2ZpbHRlci5jLTc2NzMtXFx0ICAgc3RydWN0IHRjcGhkciAqLCB0aCwgdTMyLCB0aF9sZW4pXFxuLS1cXG5uZXQvY29yZS9maWx0ZXIuYy03NzM1LVxcbm5ldC9jb3JlL2ZpbHRlci5jOjc3MzY6c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfdGNwX2NoZWNrX3N5bmNvb2tpZV9wcm90byA9IHtcXG5uZXQvY29yZS9maWx0ZXIuYzo3NzM3OlxcdC5mdW5jXFx0XFx0PSBicGZfdGNwX2NoZWNrX3N5bmNvb2tpZSxcXG5uZXQvY29yZS9maWx0ZXIuYy03NzM4LVxcdC5ncGxfb25seVxcdD0gdHJ1ZSxcXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jPTg0NjQ9dGNfY2xzX2FjdF9mdW5jX3Byb3RvKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmMtODU3NC1cXHRjYXNlIEJQRl9GVU5DX3RjcF9jaGVja19zeW5jb29raWU6XFxubmV0L2NvcmUvZmlsdGVyLmM6ODU3NTpcXHRcXHRyZXR1cm4gXFx1MDAyNmJwZl90Y3BfY2hlY2tfc3luY29va2llX3Byb3RvO1xcbm5ldC9jb3JlL2ZpbHRlci5jLTg1NzYtXFx0Y2FzZSBCUEZfRlVOQ19za2JfZWNuX3NldF9jZTpcXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jPTg2MDE9eGRwX2Z1bmNfcHJvdG8oZW51bSBicGZfZnVuY19pZCBmdW5jX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5uZXQvY29yZS9maWx0ZXIuYy04NjM5LVxcdGNhc2UgQlBGX0ZVTkNfdGNwX2NoZWNrX3N5bmNvb2tpZTpcXG5uZXQvY29yZS9maWx0ZXIuYzo4NjQwOlxcdFxcdHJldHVybiBcXHUwMDI2YnBmX3RjcF9jaGVja19zeW5jb29raWVfcHJvdG87XFxubmV0L2NvcmUvZmlsdGVyLmMtODY0MS1cXHRjYXNlIEJQRl9GVU5DX3RjcF9nZW5fc3luY29va2llOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMzozMzozNi44Mzg0MTA5NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MjI1NTY5MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEJQRiBIZWxwZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwiQWgsIGl0J3MgdGlnaHRlbmluZyB1cCB0aGUgdXNlIG9mIGBicGZfdGNwX2NoZWNrX3N5bmNvb2tpZWAgYW5kIGBicGZfdGNwX2dlbl9zeW5jb29raWVgLlwiIFRoZXNlIGFyZSB0aGUgQlBGIGhlbHBlcnMgdGhhdCB3b3JrIHdpdGhpbiB0aGUgVEMgYW5kIFhEUCB3b3JsZHMsIHJpZ2h0PyBBbmQgdGhlIGNoYW5nZSBpcyBhIHNhbml0eSBjaGVjayDigJMgdGhleSBhcmUgcHJldmVudGluZyB0aGUgdXNlIG9mIHRoZXNlIGhlbHBlcnMgb24gbm9uLWZ1bGwgc29ja2V0cywgbGlrZSByZXF1ZXN0IG9yIHRpbWV3YWl0IHNvY2tldHMsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGdvb2QsIHRhcmdldGVkIGltcHJvdmVtZW50LlxuXG5Ob3csIG15IGV4cGVydCBicmFpbiBpbW1lZGlhdGVseSBqdW1wcyB0byBjb25maWd1cmF0aW9uLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkga25vdyBhbGwgdGhlIGltcGxpY2F0aW9ucy4gSSBrbm93IGBuZXQvY29yZS9maWx0ZXIuY2AgaXMgaW52b2x2ZWQsIGFuZCB0aGF0IGlzIHVzdWFsbHkgdGllZCB0byBgQ09ORklHX05FVGAuIEJ1dCB0aGVzZSBCUEYgaGVscGVycyBhcmUgKnVzdWFsbHkqIGdvdmVybmVkIGJ5IGBDT05GSUdfQlBGX1NZU0NBTExgIGFuZCBgQ09ORklHX0NHUk9VUF9CUEZgLCBvciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLCBzbyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYWxsIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGNvcnJlY3QuXG5cbkxldCBtZSB0YWtlIGEgbG9vayBhdCBgbmV0L2NvcmUvTWFrZWZpbGVgIGFuZCBjb25maXJtIHdoaWNoIGNvbmZpZ3VyYXRpb25zIGFyZSB0cnVseSBuZWNlc3NhcnkgZm9yIHRoaXMgY2hhbmdlIHRvIGJlIGVmZmVjdGl2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA5OSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMzozMzo0MS41NjA5NzQ3NzFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyNzk4MjYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZpbHRlci5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlPTEyPW9iai15XFx0XFx0ICAgICArPSBkZXYubyBkZXZfYXBpLm8gZGV2X2FkZHJfbGlzdHMubyBkc3QubyBuZXRldmVudC5vIFxcXFxcXG5uZXQvY29yZS9NYWtlZmlsZToxMzpcXHRcXHRcXHRuZWlnaGJvdXIubyBydG5ldGxpbmsubyB1dGlscy5vIGxpbmtfd2F0Y2gubyBmaWx0ZXIubyBcXFxcXFxubmV0L2NvcmUvTWFrZWZpbGUtMTQtXFx0XFx0XFx0c29ja19kaWFnLm8gZGV2X2lvY3RsLm8gdHNvLm8gc29ja19yZXVzZXBvcnQubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEzOjMzOjQxLjcwMzc4MjEzMloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0Mjc1NjYzNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBmaWx0ZXIub2AgTW9kdWxlJ3MgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBrbm93IHRoYXQgYGZpbHRlci5vYCBnZXRzIGJ1aWx0IHVuY29uZGl0aW9uYWxseSB3aGVuIGBDT05GSUdfTkVUYCBpcyBzZXQuIFRoYXQncyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBIb3dldmVyLCBJJ20gdGhpbmtpbmcgYWJvdXQgYGJwZl90Y3BfY2hlY2tfc3luY29va2llYC4gVGhlIG5hbWUgcmluZ3MgYSBiZWxsLCBhbmQgSSdtIHByZXR0eSBzdXJlIGl0IGhhcyBzb21lIGRlcGVuZGVuY3kgb24gYENPTkZJR19TWU5fQ09PS0lFU2AuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCwgYmVjYXVzZSBpZiBgYnBmX3RjcF9jaGVja19zeW5jb29raWVgIGlzbid0IHByb3Blcmx5IGd1YXJkZWQsIHdlIGNvdWxkIHNlZSBzb21lIHVuZXhwZWN0ZWQgYnVpbGQgYXJ0aWZhY3RzIG9yIGV2ZW4gcnVudGltZSBiZWhhdmlvci4gVGltZSB0byBkZWx2ZSBpbnRvIHRoZSBjb2RlLiBJJ2xsIHRha2UgYSBsb29rIGF0IGBuZXQvY29yZS9maWx0ZXIuY2AsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA3NjcyLiBUaGF0J3MgbGlrZWx5IHdoZXJlIHRoZSByZWxldmFudCBjb2RlIGlzLiBMZXQncyBzZWUgd2hhdCdzIGFjdHVhbGx5IGdvaW5nIG9uIGluIHRoYXQgc2VjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY1NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEzOjMzOjQ1LjEzMTM1MTMxNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1MTY5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvY29yZS9maWx0ZXIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NjYwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNzY2MDpcXHRcXHR9XFxuNzY2MTpcXHRcXG43NjYyOlxcdFxcdHJldHVybiBpbnNuIC0gaW5zbl9idWY7XFxuNzY2MzpcXHR9XFxuNzY2NDpcXHRcXG43NjY1OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NrYl9lY25fc2V0X2NlX3Byb3RvID0ge1xcbjc2NjY6XFx0XFx0LmZ1bmMgICAgICAgICAgID0gYnBmX3NrYl9lY25fc2V0X2NlLFxcbjc2Njc6XFx0XFx0LmdwbF9vbmx5ICAgICAgID0gZmFsc2UsXFxuNzY2ODpcXHRcXHQucmV0X3R5cGUgICAgICAgPSBSRVRfSU5URUdFUixcXG43NjY5OlxcdFxcdC5hcmcxX3R5cGUgICAgICA9IEFSR19QVFJfVE9fQ1RYLFxcbjc2NzA6XFx0fTtcXG43NjcxOlxcdFxcbjc2NzI6XFx0QlBGX0NBTExfNShicGZfdGNwX2NoZWNrX3N5bmNvb2tpZSwgc3RydWN0IHNvY2sgKiwgc2ssIHZvaWQgKiwgaXBoLCB1MzIsIGlwaF9sZW4sXFxuNzY3MzpcXHRcXHQgICBzdHJ1Y3QgdGNwaGRyICosIHRoLCB1MzIsIHRoX2xlbilcXG43Njc0OlxcdHtcXG43Njc1OlxcdCNpZmRlZiBDT05GSUdfU1lOX0NPT0tJRVNcXG43Njc2OlxcdFxcdGludCByZXQ7XFxuNzY3NzpcXHRcXG43Njc4OlxcdFxcdGlmICh1bmxpa2VseSghc2sgfHwgdGhfbGVuIFxcdTAwM2Mgc2l6ZW9mKCp0aCkpKVxcbjc2Nzk6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuNzY4MDpcXHRcXG43NjgxOlxcdFxcdGlmICghc2tfZnVsbHNvY2soc2spKVxcbjc2ODI6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuNzY4MzpcXHRcXG43Njg0OlxcdFxcdC8qIHNrX2xpc3RlbmVyKCkgYWxsb3dzIFRDUF9ORVdfU1lOX1JFQ1YsIHdoaWNoIG1ha2VzIG5vIHNlbnNlIGhlcmUuICovXFxuNzY4NTpcXHRcXHRpZiAoc2stXFx1MDAzZXNrX3Byb3RvY29sICE9IElQUFJPVE9fVENQIHx8IHNrLVxcdTAwM2Vza19zdGF0ZSAhPSBUQ1BfTElTVEVOKVxcbjc2ODY6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuNzY4NzpcXHRcXG43Njg4OlxcdFxcdGlmICghUkVBRF9PTkNFKHNvY2tfbmV0KHNrKS1cXHUwMDNlaXB2NC5zeXNjdGxfdGNwX3N5bmNvb2tpZXMpKVxcbjc2ODk6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuNzY5MDpcXHRcXG43NjkxOlxcdFxcdGlmICghdGgtXFx1MDAzZWFjayB8fCB0aC1cXHUwMDNlcnN0IHx8IHRoLVxcdTAwM2VzeW4pXFxuNzY5MjpcXHRcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG43NjkzOlxcdFxcbjc2OTQ6XFx0XFx0aWYgKHVubGlrZWx5KGlwaF9sZW4gXFx1MDAzYyBzaXplb2Yoc3RydWN0IGlwaGRyKSkpXFxuNzY5NTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG43Njk2OlxcdFxcbjc2OTc6XFx0XFx0aWYgKHRjcF9zeW5xX25vX3JlY2VudF9vdmVyZmxvdyhzaykpXFxuNzY5ODpcXHRcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG43Njk5OlxcdFxcbjc3MDA6XFx0XFx0LyogQm90aCBzdHJ1Y3QgaXBoZHIgYW5kIHN0cnVjdCBpcHY2aGRyIGhhdmUgdGhlIHZlcnNpb24gZmllbGQgYXQgdGhlXFxuNzcwMTpcXHRcXHQgKiBzYW1lIG9mZnNldCBzbyB3ZSBjYW4gY2FzdCB0byB0aGUgc2hvcnRlciBoZWFkZXIgKHN0cnVjdCBpcGhkcikuXFxuNzcwMjpcXHRcXHQgKi9cXG43NzAzOlxcdFxcdHN3aXRjaCAoKChzdHJ1Y3QgaXBoZHIgKilpcGgpLVxcdTAwM2V2ZXJzaW9uKSB7XFxuNzcwNDpcXHRcXHRjYXNlIDQ6XFxuNzcwNTpcXHRcXHRcXHRpZiAoc2stXFx1MDAzZXNrX2ZhbWlseSA9PSBBRl9JTkVUNiBcXHUwMDI2XFx1MDAyNiBpcHY2X29ubHlfc29jayhzaykpXFxuNzcwNjpcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG43NzA3OlxcdFxcbjc3MDg6XFx0XFx0XFx0cmV0ID0gX19jb29raWVfdjRfY2hlY2soKHN0cnVjdCBpcGhkciAqKWlwaCwgdGgpO1xcbjc3MDk6XFx0XFx0XFx0YnJlYWs7XFxuNzcxMDpcXHRcXG43NzExOlxcdCNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxcbjc3MTI6XFx0XFx0Y2FzZSA2Olxcbjc3MTM6XFx0XFx0XFx0aWYgKHVubGlrZWx5KGlwaF9sZW4gXFx1MDAzYyBzaXplb2Yoc3RydWN0IGlwdjZoZHIpKSlcXG43NzE0OlxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjc3MTU6XFx0XFxuNzcxNjpcXHRcXHRcXHRpZiAoc2stXFx1MDAzZXNrX2ZhbWlseSAhPSBBRl9JTkVUNilcXG43NzE3OlxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjc3MTg6XFx0XFxuNzcxOTpcXHRcXHRcXHRyZXQgPSBfX2Nvb2tpZV92Nl9jaGVjaygoc3RydWN0IGlwdjZoZHIgKilpcGgsIHRoKTtcXG43NzIwOlxcdFxcdFxcdGJyZWFrO1xcbjc3MjE6XFx0I2VuZGlmIC8qIENPTkZJR19JUFY2ICovXFxuNzcyMjpcXHRcXG43NzIzOlxcdFxcdGRlZmF1bHQ6XFxuNzcyNDpcXHRcXHRcXHRyZXR1cm4gLUVQUk9UT05PU1VQUE9SVDtcXG43NzI1OlxcdFxcdH1cXG43NzI2OlxcdFxcbjc3Mjc6XFx0XFx0aWYgKHJldCBcXHUwMDNlIDApXFxuNzcyODpcXHRcXHRcXHRyZXR1cm4gMDtcXG43NzI5OlxcdFxcbjc3MzA6XFx0XFx0cmV0dXJuIC1FTk9FTlQ7XFxuNzczMTpcXHQjZWxzZVxcbjc3MzI6XFx0XFx0cmV0dXJuIC1FTk9UU1VQUDtcXG43NzMzOlxcdCNlbmRpZlxcbjc3MzQ6XFx0fVxcbjc3MzU6XFx0XFxuNzczNjpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl90Y3BfY2hlY2tfc3luY29va2llX3Byb3RvID0ge1xcbjc3Mzc6XFx0XFx0LmZ1bmNcXHRcXHQ9IGJwZl90Y3BfY2hlY2tfc3luY29va2llLFxcbjc3Mzg6XFx0XFx0LmdwbF9vbmx5XFx0PSB0cnVlLFxcbjc3Mzk6XFx0XFx0LnBrdF9hY2Nlc3NcXHQ9IHRydWUsXFxuNzc0MDpcXHRcXHQucmV0X3R5cGVcXHQ9IFJFVF9JTlRFR0VSLFxcbjc3NDE6XFx0XFx0LmFyZzFfdHlwZVxcdD0gQVJHX1BUUl9UT19CVEZfSURfU09DS19DT01NT04sXFxuNzc0MjpcXHRcXHQuYXJnMl90eXBlXFx0PSBBUkdfUFRSX1RPX01FTSB8IE1FTV9SRE9OTFksXFxuNzc0MzpcXHRcXHQuYXJnM190eXBlXFx0PSBBUkdfQ09OU1RfU0laRSxcXG43NzQ0OlxcdFxcdC5hcmc0X3R5cGVcXHQ9IEFSR19QVFJfVE9fTUVNIHwgTUVNX1JET05MWSxcXG43NzQ1OlxcdFxcdC5hcmc1X3R5cGVcXHQ9IEFSR19DT05TVF9TSVpFLFxcbjc3NDY6XFx0fTtcXG43NzQ3OlxcdFxcbjc3NDg6XFx0QlBGX0NBTExfNShicGZfdGNwX2dlbl9zeW5jb29raWUsIHN0cnVjdCBzb2NrICosIHNrLCB2b2lkICosIGlwaCwgdTMyLCBpcGhfbGVuLFxcbjc3NDk6XFx0XFx0ICAgc3RydWN0IHRjcGhkciAqLCB0aCwgdTMyLCB0aF9sZW4pXFxuNzc1MDpcXHR7XFxuNzc1MTpcXHQjaWZkZWYgQ09ORklHX1NZTl9DT09LSUVTXFxuNzc1MjpcXHRcXHR1MzIgY29va2llO1xcbjc3NTM6XFx0XFx0dTE2IG1zcztcXG43NzU0OlxcdFxcbjc3NTU6XFx0XFx0aWYgKHVubGlrZWx5KCFzayB8fCB0aF9sZW4gXFx1MDAzYyBzaXplb2YoKnRoKSB8fCB0aF9sZW4gIT0gdGgtXFx1MDAzZWRvZmYgKiA0KSlcXG43NzU2OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjc3NTc6XFx0XFxuNzc1ODpcXHRcXHRpZiAoIXNrX2Z1bGxzb2NrKHNrKSlcXG43NzU5OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMzozMzo0NS4xMzIyMDcwNTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDUzOTczMzkzMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGFib3V0IGludGVncmF0aW5nIEJQRiB3aXRoIFRDUCBzeW5jb29raWVzLiBJIHNlZSB3ZSBkZWZpbml0ZWx5IG5lZWQgYENPTkZJR19TWU5fQ09PS0lFU2AgZW5hYmxlZCwgdGhhdCdzIGEgZ2l2ZW4uIEFuZCBzaW5jZSB3ZSdyZSB1c2luZyBCUEYsIG5hdHVyYWxseSwgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgcmVxdWlyZWQgYXMgd2VsbC4gVGhlIGNvcmUgZnVuY3Rpb25zIGhlcmUgYXJlIGBicGZfdGNwX2NoZWNrX3N5bmNvb2tpZWAgYW5kIGBicGZfdGNwX2dlbl9zeW5jb29raWVgIOKAkyB0aGVzZSBhcmUgdGhlIEJQRiBoZWxwZXJzIHRoYXQgd2UncmUgZGVhbGluZyB3aXRoLiBUaGV5J3JlIGRlc2lnbmVkIHRvIGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBCUEYgcHJvZ3JhbXMsIHdoaWNoIG1ha2VzIHNlbnNlLlxuXG5UaGUgY3J1Y2lhbCBwYXJ0IG9mIHRoaXMgcGF0Y2ggaXMgdGhlIGFkZGl0aW9uIG9mIHRoZSBgIXNrX2Z1bGxzb2NrKHNrKWAgY2hlY2suIFRoaXMgaXMgaW1wb3J0YW50OiBpdCBwcmV2ZW50cyB0aGUgaGVscGVycyBmcm9tIGJlaW5nIGNhbGxlZCB3aXRoIHNvY2tldHMgdGhhdCBhcmVuJ3QgZnVsbHkgZXN0YWJsaXNoZWQsIGxpa2UgcmVxdWVzdCBzb2NrZXRzIG9yIHRob3NlIGluIHRoZSBUSU1FLVdBSVQgc3RhdGUuIFRoYXQncyBhIHNvbGlkIGRlZmVuc2l2ZSBtZWFzdXJlIGJlY2F1c2UgdHJ5aW5nIHRvIGFjY2VzcyBmaWVsZHMgb24gdGhlc2Ugbm9uLWZ1bGwgc29ja2V0cyB0aGF0IGFyZW4ndCBndWFyYW50ZWVkIHRvIGV4aXN0IGNvdWxkIGxlYWQgdG8gYSBjcmFzaCBvciBvdGhlciB1bmRlc2lyYWJsZSBiZWhhdmlvci4gSXQncyBhIGNsYXNzaWMgZXhhbXBsZSBvZiBhIHBvdGVudGlhbCBudWxsLXBvaW50ZXIgZGVyZWZlcmVuY2Ugb3Igc2ltaWxhciBpc3N1ZS5cblxuVG8gdmVyaWZ5IHRoaXMgcGF0Y2gsIEknZCBuZWVkIHRvIGNyYWZ0IGEgQlBGIHByb2dyYW0gdGhhdCBpbnRlbnRpb25hbGx5IGNhbGxzIGVpdGhlciBgYnBmX3RjcF9jaGVja19zeW5jb29raWVgIG9yIGBicGZfdGNwX2dlbl9zeW5jb29raWVgIHdpdGggYSBub24tZnVsbCBzb2NrZXQgYXMgYW4gYXJndW1lbnQuIEkgd2lsbCBhbHNvIGhhdmUgdG8gbWFrZSBzdXJlIHRvIGVuYWJsZSB0aGUgY29ycmVjdCBjb25maWdzIHdoaWNoIGFyZSBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYENPTkZJR19TWU5fQ09PS0lFU2AgYW5kIGBDT05GSUdfTkVUYC4gSSBzaG91bGQgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgQ09ORklHX1NZTl9DT09LSUVTYCBpcyB0aGUgKmV4YWN0KiBuYW1lIGFuZCBub3Qgc29tZXRoaW5nIHNpbWlsYXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NjgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMzo0Mzo1MC41Mjk1NDg2MjhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwOTc1NDg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTWU5fQ09PS0lFU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9MjU5PWNvbmZpZyBJUF9QSU1TTV9WMlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0yNjctXFxubmV0L2lwdjQvS2NvbmZpZzoyNjg6Y29uZmlnIFNZTl9DT09LSUVTXFxubmV0L2lwdjQvS2NvbmZpZy0yNjktXFx0Ym9vbCBcXFwiSVA6IFRDUCBzeW5jb29raWUgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTM6NDM6NTAuNjIwNTI5MjMyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MDAwNTA4NDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuT2theSwgZGVmaW5pdGVseSBgU1lOX0NPT0tJRVNgLCB0aGF0J3Mgd2hhdCB3ZSdyZSBhZnRlci4gTm93LCBsZXQncyBzZWUgd2hhdCBlbHNlIG1pZ2h0IGJlIGNvbm5lY3RlZCB0byB0aGlzLiBUaGUgZnVuY3Rpb24gcHJvdG90eXBlcywgYHRjX2Nsc19hY3RfZnVuY19wcm90b2AgYW5kIGB4ZHBfZnVuY19wcm90b2AsIGFyZSB3aGVyZSB0aGUgaGVscGVycyBhcmUgZXhwb3NlZC4gSG1tLCBzbyBgQ09ORklHX05FVF9DTFNfQUNUYCBhbmQgYENPTkZJR19YRFBfU09DS0VUU2AgY291bGQgYmUgaW5kaXJlY3RseSByZWxldmFudC4gQnV0IHJlYWxseSwgdGhlIGNydWNpYWwgb25lIGhlcmUgaXMgbGlrZWx5IGBDT05GSUdfQlBGX1NZU0NBTExgLlxuXG5Ib2xkIG9uLi4uIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBJcyBgdGNfY2xzX2FjdF9mdW5jX3Byb3RvYCBjb21waWxlZCAqY29uZGl0aW9uYWxseSogb24gYENPTkZJR19ORVRfQ0xTX0JQRmAgb3IgYENPTkZJR19CUEZfU1lTQ0FMTGA/IFRoYXQgc291bmRzIHJpZ2h0LiBKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIGp1bXAgaW50byBgbmV0L2NvcmUvZmlsdGVyLmNgIGFuZCBjb25maXJtIGhvdyBgdGNfY2xzX2FjdF9mdW5jX3Byb3RvYCBpcyBhY3R1YWxseSBkZWZpbmVkIGluIHJlbGF0aW9uIHRvIHRob3NlIG90aGVyIGNvbmZpZ3MuIEkgd2FudCB0byBzZWUgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGluIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyMDYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTM6NDQ6NTguNjIxMDQwNVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyMTcyOTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjX2Nsc19hY3RfZnVuY19wcm90b1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY29yZS9maWx0ZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9maWx0ZXIuYz04NDYzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gKlxcbm5ldC9jb3JlL2ZpbHRlci5jOjg0NjQ6dGNfY2xzX2FjdF9mdW5jX3Byb3RvKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbm5ldC9jb3JlL2ZpbHRlci5jLTg0NjUte1xcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmM9MTEzNDY9Y29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9vcHMgdGNfY2xzX2FjdF92ZXJpZmllcl9vcHMgPSB7XFxubmV0L2NvcmUvZmlsdGVyLmM6MTEzNDc6XFx0LmdldF9mdW5jX3Byb3RvXFx0XFx0PSB0Y19jbHNfYWN0X2Z1bmNfcHJvdG8sXFxubmV0L2NvcmUvZmlsdGVyLmMtMTEzNDgtXFx0LmlzX3ZhbGlkX2FjY2Vzc1xcdD0gdGNfY2xzX2FjdF9pc192YWxpZF9hY2Nlc3MsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEzOjQ0OjU4LjczMzIyMzE2NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzUwNzAwMDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIEkgcmVjb2duaXplIHRoYXQgYHRjX2Nsc19hY3RfdmVyaWZpZXJfb3BzYCBpcyByZWxldmFudCBoZXJlLCBzcGVjaWZpY2FsbHkgZm9yIGBCUEZfUFJPR19UWVBFX1NDSEVEX0NMU2AgYW5kIGBCUEZfUFJPR19UWVBFX1NDSEVEX0FDVGAuIFJpZ2h0LCB0aG9zZSBhcmUgdGhlIGVCUEYgcHJvZ3JhbSB0eXBlcyB0aGF0IGFyZSByZWxldmFudCB0byB0aGlzIHdvcmssIGFuZCB0aGV5J3JlIG9ubHkgYXZhaWxhYmxlIGlmIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGVuYWJsZWQuIE1ha2VzIHNlbnNlLiBBbmQgc2luY2Ugd2UgYXJlIGRlYWxpbmcgd2l0aCBzeW5jb29raWVzLCBgU1lOX0NPT0tJRVNgIGlzIGFub3RoZXIga2V5IGNvbmZpZyB0byBrZWVwIGluIG1pbmQuXG5cblRoZSBjb3JlIGlzc3VlIHNlZW1zIHRvIGJlIGFyb3VuZCBgYnBmX3RjcF9jaGVja19zeW5jb29raWVgIGFuZCBgYnBmX3RjcF9nZW5fc3luY29va2llYC4gVGhlIHBhdGNoJ3MgcmVhc29uaW5nIGlzIGNsZWFyOyBpdOKAmXMgYSBmdW5jdGlvbmFsIGZpeCwgcHJldmVudGluZyBhIGNyYXNoIG9yIG1lbW9yeSBjb3JydXB0aW9uIHdoZW4gYSAqbm9uLWZ1bGwqIHNvY2tldCDigJMgbGlrZSBhIHJlcXVlc3Qgb3IgVElNRV9XQUlUIHNvY2tldCDigJMgaXMgZXJyb25lb3VzbHkgcGFzc2VkIHRvIHRoZXNlIEJQRiBoZWxwZXJzLiBUaGlzIGlzIGEgY2xhc3NpYyB2dWxuZXJhYmlsaXR5IHZlY3RvciwgZWFzeSB0byBtaXNzLiBUaGlzIHBhdGNoIGFwcGVhcnMgdG8gYmUgZG9pbmcgZXhhY3RseSB3aGF0IEkgd291bGQgZXhwZWN0IGluIHRoaXMgc2l0dWF0aW9uLCBhZGRpbmcgYSBjaGVjayB0byBhdm9pZCB0aGUgaXNzdWUgYWx0b2dldGhlci5cblxuVGhlIHBhdGNoJ3MgaW1wYWN0IGlzIHNpZ25pZmljYW50LiBHaXZlbiB0aGUgcG90ZW50aWFsIGZvciBjcmFzaGVzIGFuZCBtZW1vcnkgZXJyb3JzLCBmdXp6aW5nIHRoaXMgYXJlYSBpcyBjcml0aWNhbC4gV2UgbmVlZCB0byB0aHJvdyBhIHZhcmlldHkgb2Ygc29ja2V0IHR5cGVzIGF0IHRob3NlIGhlbHBlcnMsIGVzcGVjaWFsbHkgdGhlIG5vbi1mdWxsIG9uZXMgbWVudGlvbmVkLCBhbmQgdmVyaWZ5IHRoYXQgdGhlIGZpeCBpcyByb2J1c3QuIFRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBwdXJzdWluZyB3aXRoIGEgZnV6emluZyBjYW1wYWlnbi5cblxuU28sIHRvIHN1bW1hcml6ZTogdGhlIHJlbGV2YW50IGNvbmZpZ3MgYXJlIGBCUEZfU1lTQ0FMTGAgYW5kIGBTWU5fQ09PS0lFU2AuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIGludmVzdGlnYXRlIGFyZSBgYnBmX3RjcF9jaGVja19zeW5jb29raWVgIGFuZCBgYnBmX3RjcF9nZW5fc3luY29va2llYC4gTGV0J3MgZ2V0IGZ1enppbmchXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4MjAsIk91dHB1dFRva2VucyI6MTM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEzOjQ1OjA0LjQ4MzkyNTkxNloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDgwNDQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIlNZTl9DT09LSUVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX3RjcF9jaGVja19zeW5jb29raWVcIixcbiAgICBcImJwZl90Y3BfZ2VuX3N5bmNvb2tpZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IG5vbi1mdWxsIHNvY2tldHMgKGxpa2UgcmVxdWVzdCBvciB0aW1ld2FpdCBzb2NrZXRzKSBmcm9tIGJlaW5nIHBhc3NlZCB0byB0aGUgYnBmX3RjcF9jaGVja19zeW5jb29raWUgYW5kIGJwZl90Y3BfZ2VuX3N5bmNvb2tpZSBCUEYgaGVscGVycywgd2hpY2ggY291bGQgbGVhZCB0byBpbnZhbGlkIG1lbW9yeSBhY2Nlc3Nlcy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2UgaGVscGVycyB3aXRoIHZhcmlvdXMgc29ja2V0IHR5cGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJTWU5fQ09PS0lFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl90Y3BfY2hlY2tfc3luY29va2llXCIsXG4gICAgXCJicGZfdGNwX2dlbl9zeW5jb29raWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCBub24tZnVsbCBzb2NrZXRzIChsaWtlIHJlcXVlc3Qgb3IgdGltZXdhaXQgc29ja2V0cykgZnJvbSBiZWluZyBwYXNzZWQgdG8gdGhlIGJwZl90Y3BfY2hlY2tfc3luY29va2llIGFuZCBicGZfdGNwX2dlbl9zeW5jb29raWUgQlBGIGhlbHBlcnMsIHdoaWNoIGNvdWxkIGxlYWQgdG8gaW52YWxpZCBtZW1vcnkgYWNjZXNzZXMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIGhlbHBlcnMgd2l0aCB2YXJpb3VzIHNvY2tldCB0eXBlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowv598x[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-02 13:12:42 +0000 UTC FinishedAt: 2026-08-02 13:45:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "SYN_COOKIES" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "SYN_COOKIES" ], "series_id": "2b0fca3d-9b75-496f-9cc2-074a2010bc00" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "bpf_tcp_check_syncookie", "bpf_tcp_gen_syncookie" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-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+CgkJCTx0ZD4yMDI2LzA4LzAyIDEzOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtTWU5fQ09PS0lFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl90Y3BfY2hlY2tfc3luY29va2llJiMzNDssCiAgICAmIzM0O2JwZl90Y3BfZ2VuX3N5bmNvb2tpZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCBub24tZnVsbCBzb2NrZXRzIChsaWtlIHJlcXVlc3Qgb3IgdGltZXdhaXQgc29ja2V0cykgZnJvbSBiZWluZyBwYXNzZWQgdG8gdGhlIGJwZl90Y3BfY2hlY2tfc3luY29va2llIGFuZCBicGZfdGNwX2dlbl9zeW5jb29raWUgQlBGIGhlbHBlcnMsIHdoaWNoIGNvdWxkIGxlYWQgdG8gaW52YWxpZCBtZW1vcnkgYWNjZXNzZXMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIGhlbHBlcnMgd2l0aCB2YXJpb3VzIHNvY2tldCB0eXBlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMzozMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDA3NGVlMjIyMjg5ZjgzODc1OGRhN2NkOWE0YzE0NTE3MmVhMTZlNjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDEzOjMzOjMxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2ZpbHRlci5jIGIvbmV0L2NvcmUvZmlsdGVyLmNcbmluZGV4IGI0NDZhYThiZTVjMzcuLmFmZGNmZGY0MTQ4OWYgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9maWx0ZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvZmlsdGVyLmNcbkBAIC03Njc4LDYgJiM0Mzs3Njc4LDkgQEAgQlBGX0NBTExfNShicGZfdGNwX2NoZWNrX3N5bmNvb2tpZSwgc3RydWN0IHNvY2sgKiwgc2ssIHZvaWQgKiwgaXBoLCB1MzIsIGlwaF9sZW5cbiBcdGlmICh1bmxpa2VseSghc2sgfHwgdGhfbGVuIFx1MDAzYyBzaXplb2YoKnRoKSkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuJiM0MztcdGlmICghc2tfZnVsbHNvY2soc2spKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0Lyogc2tfbGlzdGVuZXIoKSBhbGxvd3MgVENQX05FV19TWU5fUkVDViwgd2hpY2ggbWFrZXMgbm8gc2Vuc2UgaGVyZS4gKi9cbiBcdGlmIChzay1cdTAwM2Vza19wcm90b2NvbCAhPSBJUFBST1RPX1RDUCB8fCBzay1cdTAwM2Vza19zdGF0ZSAhPSBUQ1BfTElTVEVOKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbkBAIC03NzUyLDYgJiM0Mzs3NzU1LDkgQEAgQlBGX0NBTExfNShicGZfdGNwX2dlbl9zeW5jb29raWUsIHN0cnVjdCBzb2NrICosIHNrLCB2b2lkICosIGlwaCwgdTMyLCBpcGhfbGVuLFxuIFx0aWYgKHVubGlrZWx5KCFzayB8fCB0aF9sZW4gXHUwMDNjIHNpemVvZigqdGgpIHx8IHRoX2xlbiAhPSB0aC1cdTAwM2Vkb2ZmICogNCkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuJiM0MztcdGlmICghc2tfZnVsbHNvY2soc2spKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0aWYgKHNrLVx1MDAzZXNrX3Byb3RvY29sICE9IElQUFJPVE9fVENQIHx8IHNrLVx1MDAzZXNrX3N0YXRlICE9IFRDUF9MSVNURU4pXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEzOjMzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjExbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7U1lOX0NPT0tJRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfdGNwX2NoZWNrX3N5bmNvb2tpZSYjMzQ7LAogICAgJiMzNDticGZfdGNwX2dlbl9zeW5jb29raWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIHByZXZlbnQgbm9uLWZ1bGwgc29ja2V0cyAobGlrZSByZXF1ZXN0IG9yIHRpbWV3YWl0IHNvY2tldHMpIGZyb20gYmVpbmcgcGFzc2VkIHRvIHRoZSBicGZfdGNwX2NoZWNrX3N5bmNvb2tpZSBhbmQgYnBmX3RjcF9nZW5fc3luY29va2llIEJQRiBoZWxwZXJzLCB3aGljaCBjb3VsZCBsZWFkIHRvIGludmFsaWQgbWVtb3J5IGFjY2Vzc2VzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBoZWxwZXJzIHdpdGggdmFyaW91cyBzb2NrZXQgdHlwZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwNzRlZTIyMjI4OWY4Mzg3NThkYTdjZDlhNGMxNDUxNzJlYTE2ZTYzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMiAxMzozMzozMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9jb3JlL2ZpbHRlci5jIGIvbmV0L2NvcmUvZmlsdGVyLmMKaW5kZXggYjQ0NmFhOGJlNWMzNy4uYWZkY2ZkZjQxNDg5ZiAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvZmlsdGVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvZmlsdGVyLmMKQEAgLTc2NzgsNiAmIzQzOzc2NzgsOSBAQCBCUEZfQ0FMTF81KGJwZl90Y3BfY2hlY2tfc3luY29va2llLCBzdHJ1Y3Qgc29jayAqLCBzaywgdm9pZCAqLCBpcGgsIHUzMiwgaXBoX2xlbgogCWlmICh1bmxpa2VseSghc2sgfHwgdGhfbGVuICZsdDsgc2l6ZW9mKCp0aCkpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAomIzQzOwlpZiAoIXNrX2Z1bGxzb2NrKHNrKSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwogCS8qIHNrX2xpc3RlbmVyKCkgYWxsb3dzIFRDUF9ORVdfU1lOX1JFQ1YsIHdoaWNoIG1ha2VzIG5vIHNlbnNlIGhlcmUuICovCiAJaWYgKHNrLSZndDtza19wcm90b2NvbCAhPSBJUFBST1RPX1RDUCB8fCBzay0mZ3Q7c2tfc3RhdGUgIT0gVENQX0xJU1RFTikKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC03NzUyLDYgJiM0Mzs3NzU1LDkgQEAgQlBGX0NBTExfNShicGZfdGNwX2dlbl9zeW5jb29raWUsIHN0cnVjdCBzb2NrICosIHNrLCB2b2lkICosIGlwaCwgdTMyLCBpcGhfbGVuLAogCWlmICh1bmxpa2VseSghc2sgfHwgdGhfbGVuICZsdDsgc2l6ZW9mKCp0aCkgfHwgdGhfbGVuICE9IHRoLSZndDtkb2ZmICogNCkpCiAJCXJldHVybiAtRUlOVkFMOwogCiYjNDM7CWlmICghc2tfZnVsbHNvY2soc2spKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJaWYgKHNrLSZndDtza19wcm90b2NvbCAhPSBJUFBST1RPX1RDUCB8fCBzay0mZ3Q7c2tfc3RhdGUgIT0gVENQX0xJU1RFTikKIAkJcmV0dXJuIC1FSU5WQUw7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTM6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzMgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCUEYgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbmV0L2NvcmUvZmlsdGVyLmNgLiBUaGF0IGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbiDigJMgZmlsdGVyIGNvZGUgY2FuIGdldCByZWFsbHkgY29tcGxleC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhZGRpbmcgYCFza19mdWxsc29jayhzaylgIGNoZWNrcyB0byBgYnBmX3RjcF9jaGVja19zeW5jb29raWVgIGFuZCBgYnBmX3RjcF9nZW5fc3luY29va2llYC4gUmlnaHQsIHRob3NlIGFyZSBCUEYgaGVscGVycywgc28gdGhhdCYjMzk7cyBhIGtleSBkZXRhaWwuIFRoZSBvYnZpb3VzIHF1ZXN0aW9ucyBwb3AgdXA6IGFyZSB0aGVzZSBmdW5jdGlvbnMgYWN0dWFsbHkgKnJlYWNoYWJsZSogaW4gYSB0eXBpY2FsIGNvbmZpZ3VyYXRpb24sIGFuZCwgaWYgc28sIHVuZGVyIHdoYXQgY2lyY3Vtc3RhbmNlcz8gV2hhdCBrZXJuZWwgY29uZmlncyBhcmUgcmVxdWlyZWQgZm9yIHRoaXMgdG8gZXZlbiB0YWtlIGVmZmVjdD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4ZWN1dGlvbiBwYXRoIGhlcmUuCgpNeSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZC4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGViYXNlIGFuZCBzZWFyY2ggZm9yIGluc3RhbmNlcyBvZiBgYnBmX3RjcF9jaGVja19zeW5jb29raWVgIGFuZCBgYnBmX3RjcF9nZW5fc3luY29va2llYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb250ZXh0IGFuZCBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTM6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX3RjcF9jaGVja19zeW5jb29raWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS9maWx0ZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9maWx0ZXIuYz03NjY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NrYl9lY25fc2V0X2NlX3Byb3RvID0ge1xuLS1cbm5ldC9jb3JlL2ZpbHRlci5jLTc2NzEtXG5uZXQvY29yZS9maWx0ZXIuYzo3NjcyOkJQRl9DQUxMXzUoYnBmX3RjcF9jaGVja19zeW5jb29raWUsIHN0cnVjdCBzb2NrICosIHNrLCB2b2lkICosIGlwaCwgdTMyLCBpcGhfbGVuLFxubmV0L2NvcmUvZmlsdGVyLmMtNzY3My1cdCAgIHN0cnVjdCB0Y3BoZHIgKiwgdGgsIHUzMiwgdGhfbGVuKVxuLS1cbm5ldC9jb3JlL2ZpbHRlci5jLTc3MzUtXG5uZXQvY29yZS9maWx0ZXIuYzo3NzM2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3RjcF9jaGVja19zeW5jb29raWVfcHJvdG8gPSB7XG5uZXQvY29yZS9maWx0ZXIuYzo3NzM3Olx0LmZ1bmNcdFx0PSBicGZfdGNwX2NoZWNrX3N5bmNvb2tpZSxcbm5ldC9jb3JlL2ZpbHRlci5jLTc3MzgtXHQuZ3BsX29ubHlcdD0gdHJ1ZSxcbi0tXG5uZXQvY29yZS9maWx0ZXIuYz04NDY0PXRjX2Nsc19hY3RfZnVuY19wcm90byhlbnVtIGJwZl9mdW5jX2lkIGZ1bmNfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5uZXQvY29yZS9maWx0ZXIuYy04NTc0LVx0Y2FzZSBCUEZfRlVOQ190Y3BfY2hlY2tfc3luY29va2llOlxubmV0L2NvcmUvZmlsdGVyLmM6ODU3NTpcdFx0cmV0dXJuIFx1MDAyNmJwZl90Y3BfY2hlY2tfc3luY29va2llX3Byb3RvO1xubmV0L2NvcmUvZmlsdGVyLmMtODU3Ni1cdGNhc2UgQlBGX0ZVTkNfc2tiX2Vjbl9zZXRfY2U6XG4tLVxubmV0L2NvcmUvZmlsdGVyLmM9ODYwMT14ZHBfZnVuY19wcm90byhlbnVtIGJwZl9mdW5jX2lkIGZ1bmNfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5uZXQvY29yZS9maWx0ZXIuYy04NjM5LVx0Y2FzZSBCUEZfRlVOQ190Y3BfY2hlY2tfc3luY29va2llOlxubmV0L2NvcmUvZmlsdGVyLmM6ODY0MDpcdFx0cmV0dXJuIFx1MDAyNmJwZl90Y3BfY2hlY2tfc3luY29va2llX3Byb3RvO1xubmV0L2NvcmUvZmlsdGVyLmMtODY0MS1cdGNhc2UgQlBGX0ZVTkNfdGNwX2dlbl9zeW5jb29raWU6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTM6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA5OQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgQlBGIEhlbHBlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O0FoLCBpdCYjMzk7cyB0aWdodGVuaW5nIHVwIHRoZSB1c2Ugb2YgYGJwZl90Y3BfY2hlY2tfc3luY29va2llYCBhbmQgYGJwZl90Y3BfZ2VuX3N5bmNvb2tpZWAuJiMzNDsgVGhlc2UgYXJlIHRoZSBCUEYgaGVscGVycyB0aGF0IHdvcmsgd2l0aGluIHRoZSBUQyBhbmQgWERQIHdvcmxkcywgcmlnaHQ/IEFuZCB0aGUgY2hhbmdlIGlzIGEgc2FuaXR5IGNoZWNrIOKAkyB0aGV5IGFyZSBwcmV2ZW50aW5nIHRoZSB1c2Ugb2YgdGhlc2UgaGVscGVycyBvbiBub24tZnVsbCBzb2NrZXRzLCBsaWtlIHJlcXVlc3Qgb3IgdGltZXdhaXQgc29ja2V0cywgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgZ29vZCwgdGFyZ2V0ZWQgaW1wcm92ZW1lbnQuCgpOb3csIG15IGV4cGVydCBicmFpbiBpbW1lZGlhdGVseSBqdW1wcyB0byBjb25maWd1cmF0aW9uLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkga25vdyBhbGwgdGhlIGltcGxpY2F0aW9ucy4gSSBrbm93IGBuZXQvY29yZS9maWx0ZXIuY2AgaXMgaW52b2x2ZWQsIGFuZCB0aGF0IGlzIHVzdWFsbHkgdGllZCB0byBgQ09ORklHX05FVGAuIEJ1dCB0aGVzZSBCUEYgaGVscGVycyBhcmUgKnVzdWFsbHkqIGdvdmVybmVkIGJ5IGBDT05GSUdfQlBGX1NZU0NBTExgIGFuZCBgQ09ORklHX0NHUk9VUF9CUEZgLCBvciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLCBzbyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYWxsIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGNvcnJlY3QuCgpMZXQgbWUgdGFrZSBhIGxvb2sgYXQgYG5ldC9jb3JlL01ha2VmaWxlYCBhbmQgY29uZmlybSB3aGljaCBjb25maWd1cmF0aW9ucyBhcmUgdHJ1bHkgbmVjZXNzYXJ5IGZvciB0aGlzIGNoYW5nZSB0byBiZSBlZmZlY3RpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTM6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmlsdGVyLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9NYWtlZmlsZT0xMj1vYmoteVx0XHQgICAgICYjNDM7PSBkZXYubyBkZXZfYXBpLm8gZGV2X2FkZHJfbGlzdHMubyBkc3QubyBuZXRldmVudC5vIFxcXG5uZXQvY29yZS9NYWtlZmlsZToxMzpcdFx0XHRuZWlnaGJvdXIubyBydG5ldGxpbmsubyB1dGlscy5vIGxpbmtfd2F0Y2gubyBmaWx0ZXIubyBcXFxubmV0L2NvcmUvTWFrZWZpbGUtMTQtXHRcdFx0c29ja19kaWFnLm8gZGV2X2lvY3RsLm8gdHNvLm8gc29ja19yZXVzZXBvcnQubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEzOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NTcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgZmlsdGVyLm9gIE1vZHVsZSYjMzk7cyBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSBrbm93IHRoYXQgYGZpbHRlci5vYCBnZXRzIGJ1aWx0IHVuY29uZGl0aW9uYWxseSB3aGVuIGBDT05GSUdfTkVUYCBpcyBzZXQuIFRoYXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gSG93ZXZlciwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBgYnBmX3RjcF9jaGVja19zeW5jb29raWVgLiBUaGUgbmFtZSByaW5ncyBhIGJlbGwsIGFuZCBJJiMzOTttIHByZXR0eSBzdXJlIGl0IGhhcyBzb21lIGRlcGVuZGVuY3kgb24gYENPTkZJR19TWU5fQ09PS0lFU2AuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCwgYmVjYXVzZSBpZiBgYnBmX3RjcF9jaGVja19zeW5jb29raWVgIGlzbiYjMzk7dCBwcm9wZXJseSBndWFyZGVkLCB3ZSBjb3VsZCBzZWUgc29tZSB1bmV4cGVjdGVkIGJ1aWxkIGFydGlmYWN0cyBvciBldmVuIHJ1bnRpbWUgYmVoYXZpb3IuIFRpbWUgdG8gZGVsdmUgaW50byB0aGUgY29kZS4gSSYjMzk7bGwgdGFrZSBhIGxvb2sgYXQgYG5ldC9jb3JlL2ZpbHRlci5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDc2NzIuIFRoYXQmIzM5O3MgbGlrZWx5IHdoZXJlIHRoZSByZWxldmFudCBjb2RlIGlzLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgZ29pbmcgb24gaW4gdGhhdCBzZWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEzOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2NvcmUvZmlsdGVyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3NjYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs3NjYwOlx0XHR9XG43NjYxOlx0XG43NjYyOlx0XHRyZXR1cm4gaW5zbiAtIGluc25fYnVmO1xuNzY2MzpcdH1cbjc2NjQ6XHRcbjc2NjU6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9za2JfZWNuX3NldF9jZV9wcm90byA9IHtcbjc2NjY6XHRcdC5mdW5jICAgICAgICAgICA9IGJwZl9za2JfZWNuX3NldF9jZSxcbjc2Njc6XHRcdC5ncGxfb25seSAgICAgICA9IGZhbHNlLFxuNzY2ODpcdFx0LnJldF90eXBlICAgICAgID0gUkVUX0lOVEVHRVIsXG43NjY5Olx0XHQuYXJnMV90eXBlICAgICAgPSBBUkdfUFRSX1RPX0NUWCxcbjc2NzA6XHR9O1xuNzY3MTpcdFxuNzY3MjpcdEJQRl9DQUxMXzUoYnBmX3RjcF9jaGVja19zeW5jb29raWUsIHN0cnVjdCBzb2NrICosIHNrLCB2b2lkICosIGlwaCwgdTMyLCBpcGhfbGVuLFxuNzY3MzpcdFx0ICAgc3RydWN0IHRjcGhkciAqLCB0aCwgdTMyLCB0aF9sZW4pXG43Njc0Olx0e1xuNzY3NTpcdCNpZmRlZiBDT05GSUdfU1lOX0NPT0tJRVNcbjc2NzY6XHRcdGludCByZXQ7XG43Njc3Olx0XG43Njc4Olx0XHRpZiAodW5saWtlbHkoIXNrIHx8IHRoX2xlbiBcdTAwM2Mgc2l6ZW9mKCp0aCkpKVxuNzY3OTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjc2ODA6XHRcbjc2ODE6XHRcdGlmICghc2tfZnVsbHNvY2soc2spKVxuNzY4MjpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjc2ODM6XHRcbjc2ODQ6XHRcdC8qIHNrX2xpc3RlbmVyKCkgYWxsb3dzIFRDUF9ORVdfU1lOX1JFQ1YsIHdoaWNoIG1ha2VzIG5vIHNlbnNlIGhlcmUuICovXG43Njg1Olx0XHRpZiAoc2stXHUwMDNlc2tfcHJvdG9jb2wgIT0gSVBQUk9UT19UQ1AgfHwgc2stXHUwMDNlc2tfc3RhdGUgIT0gVENQX0xJU1RFTilcbjc2ODY6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG43Njg3Olx0XG43Njg4Olx0XHRpZiAoIVJFQURfT05DRShzb2NrX25ldChzayktXHUwMDNlaXB2NC5zeXNjdGxfdGNwX3N5bmNvb2tpZXMpKVxuNzY4OTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjc2OTA6XHRcbjc2OTE6XHRcdGlmICghdGgtXHUwMDNlYWNrIHx8IHRoLVx1MDAzZXJzdCB8fCB0aC1cdTAwM2VzeW4pXG43NjkyOlx0XHRcdHJldHVybiAtRU5PRU5UO1xuNzY5MzpcdFxuNzY5NDpcdFx0aWYgKHVubGlrZWx5KGlwaF9sZW4gXHUwMDNjIHNpemVvZihzdHJ1Y3QgaXBoZHIpKSlcbjc2OTU6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG43Njk2Olx0XG43Njk3Olx0XHRpZiAodGNwX3N5bnFfbm9fcmVjZW50X292ZXJmbG93KHNrKSlcbjc2OTg6XHRcdFx0cmV0dXJuIC1FTk9FTlQ7XG43Njk5Olx0XG43NzAwOlx0XHQvKiBCb3RoIHN0cnVjdCBpcGhkciBhbmQgc3RydWN0IGlwdjZoZHIgaGF2ZSB0aGUgdmVyc2lvbiBmaWVsZCBhdCB0aGVcbjc3MDE6XHRcdCAqIHNhbWUgb2Zmc2V0IHNvIHdlIGNhbiBjYXN0IHRvIHRoZSBzaG9ydGVyIGhlYWRlciAoc3RydWN0IGlwaGRyKS5cbjc3MDI6XHRcdCAqL1xuNzcwMzpcdFx0c3dpdGNoICgoKHN0cnVjdCBpcGhkciAqKWlwaCktXHUwMDNldmVyc2lvbikge1xuNzcwNDpcdFx0Y2FzZSA0OlxuNzcwNTpcdFx0XHRpZiAoc2stXHUwMDNlc2tfZmFtaWx5ID09IEFGX0lORVQ2IFx1MDAyNlx1MDAyNiBpcHY2X29ubHlfc29jayhzaykpXG43NzA2Olx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG43NzA3Olx0XG43NzA4Olx0XHRcdHJldCA9IF9fY29va2llX3Y0X2NoZWNrKChzdHJ1Y3QgaXBoZHIgKilpcGgsIHRoKTtcbjc3MDk6XHRcdFx0YnJlYWs7XG43NzEwOlx0XG43NzExOlx0I2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG43NzEyOlx0XHRjYXNlIDY6XG43NzEzOlx0XHRcdGlmICh1bmxpa2VseShpcGhfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IGlwdjZoZHIpKSlcbjc3MTQ6XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjc3MTU6XHRcbjc3MTY6XHRcdFx0aWYgKHNrLVx1MDAzZXNrX2ZhbWlseSAhPSBBRl9JTkVUNilcbjc3MTc6XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjc3MTg6XHRcbjc3MTk6XHRcdFx0cmV0ID0gX19jb29raWVfdjZfY2hlY2soKHN0cnVjdCBpcHY2aGRyICopaXBoLCB0aCk7XG43NzIwOlx0XHRcdGJyZWFrO1xuNzcyMTpcdCNlbmRpZiAvKiBDT05GSUdfSVBWNiAqL1xuNzcyMjpcdFxuNzcyMzpcdFx0ZGVmYXVsdDpcbjc3MjQ6XHRcdFx0cmV0dXJuIC1FUFJPVE9OT1NVUFBPUlQ7XG43NzI1Olx0XHR9XG43NzI2Olx0XG43NzI3Olx0XHRpZiAocmV0IFx1MDAzZSAwKVxuNzcyODpcdFx0XHRyZXR1cm4gMDtcbjc3Mjk6XHRcbjc3MzA6XHRcdHJldHVybiAtRU5PRU5UO1xuNzczMTpcdCNlbHNlXG43NzMyOlx0XHRyZXR1cm4gLUVOT1RTVVBQO1xuNzczMzpcdCNlbmRpZlxuNzczNDpcdH1cbjc3MzU6XHRcbjc3MzY6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl90Y3BfY2hlY2tfc3luY29va2llX3Byb3RvID0ge1xuNzczNzpcdFx0LmZ1bmNcdFx0PSBicGZfdGNwX2NoZWNrX3N5bmNvb2tpZSxcbjc3Mzg6XHRcdC5ncGxfb25seVx0PSB0cnVlLFxuNzczOTpcdFx0LnBrdF9hY2Nlc3NcdD0gdHJ1ZSxcbjc3NDA6XHRcdC5yZXRfdHlwZVx0PSBSRVRfSU5URUdFUixcbjc3NDE6XHRcdC5hcmcxX3R5cGVcdD0gQVJHX1BUUl9UT19CVEZfSURfU09DS19DT01NT04sXG43NzQyOlx0XHQuYXJnMl90eXBlXHQ9IEFSR19QVFJfVE9fTUVNIHwgTUVNX1JET05MWSxcbjc3NDM6XHRcdC5hcmczX3R5cGVcdD0gQVJHX0NPTlNUX1NJWkUsXG43NzQ0Olx0XHQuYXJnNF90eXBlXHQ9IEFSR19QVFJfVE9fTUVNIHwgTUVNX1JET05MWSxcbjc3NDU6XHRcdC5hcmc1X3R5cGVcdD0gQVJHX0NPTlNUX1NJWkUsXG43NzQ2Olx0fTtcbjc3NDc6XHRcbjc3NDg6XHRCUEZfQ0FMTF81KGJwZl90Y3BfZ2VuX3N5bmNvb2tpZSwgc3RydWN0IHNvY2sgKiwgc2ssIHZvaWQgKiwgaXBoLCB1MzIsIGlwaF9sZW4sXG43NzQ5Olx0XHQgICBzdHJ1Y3QgdGNwaGRyICosIHRoLCB1MzIsIHRoX2xlbilcbjc3NTA6XHR7XG43NzUxOlx0I2lmZGVmIENPTkZJR19TWU5fQ09PS0lFU1xuNzc1MjpcdFx0dTMyIGNvb2tpZTtcbjc3NTM6XHRcdHUxNiBtc3M7XG43NzU0Olx0XG43NzU1Olx0XHRpZiAodW5saWtlbHkoIXNrIHx8IHRoX2xlbiBcdTAwM2Mgc2l6ZW9mKCp0aCkgfHwgdGhfbGVuICE9IHRoLVx1MDAzZWRvZmYgKiA0KSlcbjc3NTY6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG43NzU3Olx0XG43NzU4Olx0XHRpZiAoIXNrX2Z1bGxzb2NrKHNrKSlcbjc3NTk6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTM6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjEwbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0NjgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBpcyBhYm91dCBpbnRlZ3JhdGluZyBCUEYgd2l0aCBUQ1Agc3luY29va2llcy4gSSBzZWUgd2UgZGVmaW5pdGVseSBuZWVkIGBDT05GSUdfU1lOX0NPT0tJRVNgIGVuYWJsZWQsIHRoYXQmIzM5O3MgYSBnaXZlbi4gQW5kIHNpbmNlIHdlJiMzOTtyZSB1c2luZyBCUEYsIG5hdHVyYWxseSwgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgcmVxdWlyZWQgYXMgd2VsbC4gVGhlIGNvcmUgZnVuY3Rpb25zIGhlcmUgYXJlIGBicGZfdGNwX2NoZWNrX3N5bmNvb2tpZWAgYW5kIGBicGZfdGNwX2dlbl9zeW5jb29raWVgIOKAkyB0aGVzZSBhcmUgdGhlIEJQRiBoZWxwZXJzIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gVGhleSYjMzk7cmUgZGVzaWduZWQgdG8gYmUgY2FsbGVkIGZyb20gd2l0aGluIEJQRiBwcm9ncmFtcywgd2hpY2ggbWFrZXMgc2Vuc2UuCgpUaGUgY3J1Y2lhbCBwYXJ0IG9mIHRoaXMgcGF0Y2ggaXMgdGhlIGFkZGl0aW9uIG9mIHRoZSBgIXNrX2Z1bGxzb2NrKHNrKWAgY2hlY2suIFRoaXMgaXMgaW1wb3J0YW50OiBpdCBwcmV2ZW50cyB0aGUgaGVscGVycyBmcm9tIGJlaW5nIGNhbGxlZCB3aXRoIHNvY2tldHMgdGhhdCBhcmVuJiMzOTt0IGZ1bGx5IGVzdGFibGlzaGVkLCBsaWtlIHJlcXVlc3Qgc29ja2V0cyBvciB0aG9zZSBpbiB0aGUgVElNRS1XQUlUIHN0YXRlLiBUaGF0JiMzOTtzIGEgc29saWQgZGVmZW5zaXZlIG1lYXN1cmUgYmVjYXVzZSB0cnlpbmcgdG8gYWNjZXNzIGZpZWxkcyBvbiB0aGVzZSBub24tZnVsbCBzb2NrZXRzIHRoYXQgYXJlbiYjMzk7dCBndWFyYW50ZWVkIHRvIGV4aXN0IGNvdWxkIGxlYWQgdG8gYSBjcmFzaCBvciBvdGhlciB1bmRlc2lyYWJsZSBiZWhhdmlvci4gSXQmIzM5O3MgYSBjbGFzc2ljIGV4YW1wbGUgb2YgYSBwb3RlbnRpYWwgbnVsbC1wb2ludGVyIGRlcmVmZXJlbmNlIG9yIHNpbWlsYXIgaXNzdWUuCgpUbyB2ZXJpZnkgdGhpcyBwYXRjaCwgSSYjMzk7ZCBuZWVkIHRvIGNyYWZ0IGEgQlBGIHByb2dyYW0gdGhhdCBpbnRlbnRpb25hbGx5IGNhbGxzIGVpdGhlciBgYnBmX3RjcF9jaGVja19zeW5jb29raWVgIG9yIGBicGZfdGNwX2dlbl9zeW5jb29raWVgIHdpdGggYSBub24tZnVsbCBzb2NrZXQgYXMgYW4gYXJndW1lbnQuIEkgd2lsbCBhbHNvIGhhdmUgdG8gbWFrZSBzdXJlIHRvIGVuYWJsZSB0aGUgY29ycmVjdCBjb25maWdzIHdoaWNoIGFyZSBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYENPTkZJR19TWU5fQ09PS0lFU2AgYW5kIGBDT05GSUdfTkVUYC4gSSBzaG91bGQgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgQ09ORklHX1NZTl9DT09LSUVTYCBpcyB0aGUgKmV4YWN0KiBuYW1lIGFuZCBub3Qgc29tZXRoaW5nIHNpbWlsYXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEzOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTWU5fQ09PS0lFUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz0yNTk9Y29uZmlnIElQX1BJTVNNX1YyXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0yNjctXG5uZXQvaXB2NC9LY29uZmlnOjI2ODpjb25maWcgU1lOX0NPT0tJRVNcbm5ldC9pcHY0L0tjb25maWctMjY5LVx0Ym9vbCBcJiMzNDtJUDogVENQIHN5bmNvb2tpZSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEzOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMDYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKT2theSwgZGVmaW5pdGVseSBgU1lOX0NPT0tJRVNgLCB0aGF0JiMzOTtzIHdoYXQgd2UmIzM5O3JlIGFmdGVyLiBOb3csIGxldCYjMzk7cyBzZWUgd2hhdCBlbHNlIG1pZ2h0IGJlIGNvbm5lY3RlZCB0byB0aGlzLiBUaGUgZnVuY3Rpb24gcHJvdG90eXBlcywgYHRjX2Nsc19hY3RfZnVuY19wcm90b2AgYW5kIGB4ZHBfZnVuY19wcm90b2AsIGFyZSB3aGVyZSB0aGUgaGVscGVycyBhcmUgZXhwb3NlZC4gSG1tLCBzbyBgQ09ORklHX05FVF9DTFNfQUNUYCBhbmQgYENPTkZJR19YRFBfU09DS0VUU2AgY291bGQgYmUgaW5kaXJlY3RseSByZWxldmFudC4gQnV0IHJlYWxseSwgdGhlIGNydWNpYWwgb25lIGhlcmUgaXMgbGlrZWx5IGBDT05GSUdfQlBGX1NZU0NBTExgLgoKSG9sZCBvbi4uLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZy4gSXMgYHRjX2Nsc19hY3RfZnVuY19wcm90b2AgY29tcGlsZWQgKmNvbmRpdGlvbmFsbHkqIG9uIGBDT05GSUdfTkVUX0NMU19CUEZgIG9yIGBDT05GSUdfQlBGX1NZU0NBTExgPyBUaGF0IHNvdW5kcyByaWdodC4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCBtZSBqdW1wIGludG8gYG5ldC9jb3JlL2ZpbHRlci5jYCBhbmQgY29uZmlybSBob3cgYHRjX2Nsc19hY3RfZnVuY19wcm90b2AgaXMgYWN0dWFsbHkgZGVmaW5lZCBpbiByZWxhdGlvbiB0byB0aG9zZSBvdGhlciBjb25maWdzLiBJIHdhbnQgdG8gc2VlIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBpbiBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMzo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y19jbHNfYWN0X2Z1bmNfcHJvdG8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS9maWx0ZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9maWx0ZXIuYz04NDYzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gKlxubmV0L2NvcmUvZmlsdGVyLmM6ODQ2NDp0Y19jbHNfYWN0X2Z1bmNfcHJvdG8oZW51bSBicGZfZnVuY19pZCBmdW5jX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG5uZXQvY29yZS9maWx0ZXIuYy04NDY1LXtcbi0tXG5uZXQvY29yZS9maWx0ZXIuYz0xMTM0Nj1jb25zdCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX29wcyB0Y19jbHNfYWN0X3ZlcmlmaWVyX29wcyA9IHtcbm5ldC9jb3JlL2ZpbHRlci5jOjExMzQ3Olx0LmdldF9mdW5jX3Byb3RvXHRcdD0gdGNfY2xzX2FjdF9mdW5jX3Byb3RvLFxubmV0L2NvcmUvZmlsdGVyLmMtMTEzNDgtXHQuaXNfdmFsaWRfYWNjZXNzXHQ9IHRjX2Nsc19hY3RfaXNfdmFsaWRfYWNjZXNzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMzo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODIwCgkJCQkJCQlvdXRwdXQ6IDEzOAoJCQkJCQkJdGhvdWdodHM6IDI2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIEkgcmVjb2duaXplIHRoYXQgYHRjX2Nsc19hY3RfdmVyaWZpZXJfb3BzYCBpcyByZWxldmFudCBoZXJlLCBzcGVjaWZpY2FsbHkgZm9yIGBCUEZfUFJPR19UWVBFX1NDSEVEX0NMU2AgYW5kIGBCUEZfUFJPR19UWVBFX1NDSEVEX0FDVGAuIFJpZ2h0LCB0aG9zZSBhcmUgdGhlIGVCUEYgcHJvZ3JhbSB0eXBlcyB0aGF0IGFyZSByZWxldmFudCB0byB0aGlzIHdvcmssIGFuZCB0aGV5JiMzOTtyZSBvbmx5IGF2YWlsYWJsZSBpZiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBlbmFibGVkLiBNYWtlcyBzZW5zZS4gQW5kIHNpbmNlIHdlIGFyZSBkZWFsaW5nIHdpdGggc3luY29va2llcywgYFNZTl9DT09LSUVTYCBpcyBhbm90aGVyIGtleSBjb25maWcgdG8ga2VlcCBpbiBtaW5kLgoKVGhlIGNvcmUgaXNzdWUgc2VlbXMgdG8gYmUgYXJvdW5kIGBicGZfdGNwX2NoZWNrX3N5bmNvb2tpZWAgYW5kIGBicGZfdGNwX2dlbl9zeW5jb29raWVgLiBUaGUgcGF0Y2gmIzM5O3MgcmVhc29uaW5nIGlzIGNsZWFyOyBpdOKAmXMgYSBmdW5jdGlvbmFsIGZpeCwgcHJldmVudGluZyBhIGNyYXNoIG9yIG1lbW9yeSBjb3JydXB0aW9uIHdoZW4gYSAqbm9uLWZ1bGwqIHNvY2tldCDigJMgbGlrZSBhIHJlcXVlc3Qgb3IgVElNRV9XQUlUIHNvY2tldCDigJMgaXMgZXJyb25lb3VzbHkgcGFzc2VkIHRvIHRoZXNlIEJQRiBoZWxwZXJzLiBUaGlzIGlzIGEgY2xhc3NpYyB2dWxuZXJhYmlsaXR5IHZlY3RvciwgZWFzeSB0byBtaXNzLiBUaGlzIHBhdGNoIGFwcGVhcnMgdG8gYmUgZG9pbmcgZXhhY3RseSB3aGF0IEkgd291bGQgZXhwZWN0IGluIHRoaXMgc2l0dWF0aW9uLCBhZGRpbmcgYSBjaGVjayB0byBhdm9pZCB0aGUgaXNzdWUgYWx0b2dldGhlci4KClRoZSBwYXRjaCYjMzk7cyBpbXBhY3QgaXMgc2lnbmlmaWNhbnQuIEdpdmVuIHRoZSBwb3RlbnRpYWwgZm9yIGNyYXNoZXMgYW5kIG1lbW9yeSBlcnJvcnMsIGZ1enppbmcgdGhpcyBhcmVhIGlzIGNyaXRpY2FsLiBXZSBuZWVkIHRvIHRocm93IGEgdmFyaWV0eSBvZiBzb2NrZXQgdHlwZXMgYXQgdGhvc2UgaGVscGVycywgZXNwZWNpYWxseSB0aGUgbm9uLWZ1bGwgb25lcyBtZW50aW9uZWQsIGFuZCB2ZXJpZnkgdGhhdCB0aGUgZml4IGlzIHJvYnVzdC4gVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIHB1cnN1aW5nIHdpdGggYSBmdXp6aW5nIGNhbXBhaWduLgoKU28sIHRvIHN1bW1hcml6ZTogdGhlIHJlbGV2YW50IGNvbmZpZ3MgYXJlIGBCUEZfU1lTQ0FMTGAgYW5kIGBTWU5fQ09PS0lFU2AuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIGludmVzdGlnYXRlIGFyZSBgYnBmX3RjcF9jaGVja19zeW5jb29raWVgIGFuZCBgYnBmX3RjcF9nZW5fc3luY29va2llYC4gTGV0JiMzOTtzIGdldCBmdXp6aW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMzo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7U1lOX0NPT0tJRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfdGNwX2NoZWNrX3N5bmNvb2tpZSYjMzQ7LAogICAgJiMzNDticGZfdGNwX2dlbl9zeW5jb29raWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIHByZXZlbnQgbm9uLWZ1bGwgc29ja2V0cyAobGlrZSByZXF1ZXN0IG9yIHRpbWV3YWl0IHNvY2tldHMpIGZyb20gYmVpbmcgcGFzc2VkIHRvIHRoZSBicGZfdGNwX2NoZWNrX3N5bmNvb2tpZSBhbmQgYnBmX3RjcF9nZW5fc3luY29va2llIEJQRiBoZWxwZXJzLCB3aGljaCBjb3VsZCBsZWFkIHRvIGludmFsaWQgbWVtb3J5IGFjY2Vzc2VzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBoZWxwZXJzIHdpdGggdmFyaW91cyBzb2NrZXQgdHlwZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O1NZTl9DT09LSUVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX3RjcF9jaGVja19zeW5jb29raWUmIzM0OywKICAgICYjMzQ7YnBmX3RjcF9nZW5fc3luY29va2llJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IG5vbi1mdWxsIHNvY2tldHMgKGxpa2UgcmVxdWVzdCBvciB0aW1ld2FpdCBzb2NrZXRzKSBmcm9tIGJlaW5nIHBhc3NlZCB0byB0aGUgYnBmX3RjcF9jaGVja19zeW5jb29raWUgYW5kIGJwZl90Y3BfZ2VuX3N5bmNvb2tpZSBCUEYgaGVscGVycywgd2hpY2ggY291bGQgbGVhZCB0byBpbnZhbGlkIG1lbW9yeSBhY2Nlc3Nlcy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2UgaGVscGVycyB3aXRoIHZhcmlvdXMgc29ja2V0IHR5cGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTM6MzM6MzIuNDM3NzI0Nzg5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkyMTkxMDIyNDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJTWU5fQ09PS0lFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl90Y3BfY2hlY2tfc3luY29va2llXCIsXG4gICAgXCJicGZfdGNwX2dlbl9zeW5jb29raWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCBub24tZnVsbCBzb2NrZXRzIChsaWtlIHJlcXVlc3Qgb3IgdGltZXdhaXQgc29ja2V0cykgZnJvbSBiZWluZyBwYXNzZWQgdG8gdGhlIGJwZl90Y3BfY2hlY2tfc3luY29va2llIGFuZCBicGZfdGNwX2dlbl9zeW5jb29raWUgQlBGIGhlbHBlcnMsIHdoaWNoIGNvdWxkIGxlYWQgdG8gaW52YWxpZCBtZW1vcnkgYWNjZXNzZXMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIGhlbHBlcnMgd2l0aCB2YXJpb3VzIHNvY2tldCB0eXBlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTM6MzM6MzIuNDM3NzMyODA5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDEzNzgxNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwNzRlZTIyMjI4OWY4Mzg3NThkYTdjZDlhNGMxNDUxNzJlYTE2ZTYzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDIgMTM6MzM6MzEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZmlsdGVyLmMgYi9uZXQvY29yZS9maWx0ZXIuY1xcbmluZGV4IGI0NDZhYThiZTVjMzcuLmFmZGNmZGY0MTQ4OWYgMTAwNjQ0XFxuLS0tIGEvbmV0L2NvcmUvZmlsdGVyLmNcXG4rKysgYi9uZXQvY29yZS9maWx0ZXIuY1xcbkBAIC03Njc4LDYgKzc2NzgsOSBAQCBCUEZfQ0FMTF81KGJwZl90Y3BfY2hlY2tfc3luY29va2llLCBzdHJ1Y3Qgc29jayAqLCBzaywgdm9pZCAqLCBpcGgsIHUzMiwgaXBoX2xlblxcbiBcXHRpZiAodW5saWtlbHkoIXNrIHx8IHRoX2xlbiBcXHUwMDNjIHNpemVvZigqdGgpKSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbitcXHRpZiAoIXNrX2Z1bGxzb2NrKHNrKSlcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbiBcXHQvKiBza19saXN0ZW5lcigpIGFsbG93cyBUQ1BfTkVXX1NZTl9SRUNWLCB3aGljaCBtYWtlcyBubyBzZW5zZSBoZXJlLiAqL1xcbiBcXHRpZiAoc2stXFx1MDAzZXNrX3Byb3RvY29sICE9IElQUFJPVE9fVENQIHx8IHNrLVxcdTAwM2Vza19zdGF0ZSAhPSBUQ1BfTElTVEVOKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5AQCAtNzc1Miw2ICs3NzU1LDkgQEAgQlBGX0NBTExfNShicGZfdGNwX2dlbl9zeW5jb29raWUsIHN0cnVjdCBzb2NrICosIHNrLCB2b2lkICosIGlwaCwgdTMyLCBpcGhfbGVuLFxcbiBcXHRpZiAodW5saWtlbHkoIXNrIHx8IHRoX2xlbiBcXHUwMDNjIHNpemVvZigqdGgpIHx8IHRoX2xlbiAhPSB0aC1cXHUwMDNlZG9mZiAqIDQpKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuK1xcdGlmICghc2tfZnVsbHNvY2soc2spKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdGlmIChzay1cXHUwMDNlc2tfcHJvdG9jb2wgIT0gSVBQUk9UT19UQ1AgfHwgc2stXFx1MDAzZXNrX3N0YXRlICE9IFRDUF9MSVNURU4pXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTM6MzM6MzMuMDQwMTM3NzExWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjkxNTg4NTk3NzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJTWU5fQ09PS0lFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl90Y3BfY2hlY2tfc3luY29va2llXCIsXG4gICAgXCJicGZfdGNwX2dlbl9zeW5jb29raWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCBub24tZnVsbCBzb2NrZXRzIChsaWtlIHJlcXVlc3Qgb3IgdGltZXdhaXQgc29ja2V0cykgZnJvbSBiZWluZyBwYXNzZWQgdG8gdGhlIGJwZl90Y3BfY2hlY2tfc3luY29va2llIGFuZCBicGZfdGNwX2dlbl9zeW5jb29raWUgQlBGIGhlbHBlcnMsIHdoaWNoIGNvdWxkIGxlYWQgdG8gaW52YWxpZCBtZW1vcnkgYWNjZXNzZXMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIGhlbHBlcnMgd2l0aCB2YXJpb3VzIHNvY2tldCB0eXBlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDc0ZWUyMjIyODlmODM4NzU4ZGE3Y2Q5YTRjMTQ1MTcyZWExNmU2M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDIgMTM6MzM6MzEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvY29yZS9maWx0ZXIuYyBiL25ldC9jb3JlL2ZpbHRlci5jXG5pbmRleCBiNDQ2YWE4YmU1YzM3Li5hZmRjZmRmNDE0ODlmIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZmlsdGVyLmNcbisrKyBiL25ldC9jb3JlL2ZpbHRlci5jXG5AQCAtNzY3OCw2ICs3Njc4LDkgQEAgQlBGX0NBTExfNShicGZfdGNwX2NoZWNrX3N5bmNvb2tpZSwgc3RydWN0IHNvY2sgKiwgc2ssIHZvaWQgKiwgaXBoLCB1MzIsIGlwaF9sZW5cbiBcdGlmICh1bmxpa2VseSghc2sgfHwgdGhfbGVuIFx1MDAzYyBzaXplb2YoKnRoKSkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuK1x0aWYgKCFza19mdWxsc29jayhzaykpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuIFx0Lyogc2tfbGlzdGVuZXIoKSBhbGxvd3MgVENQX05FV19TWU5fUkVDViwgd2hpY2ggbWFrZXMgbm8gc2Vuc2UgaGVyZS4gKi9cbiBcdGlmIChzay1cdTAwM2Vza19wcm90b2NvbCAhPSBJUFBST1RPX1RDUCB8fCBzay1cdTAwM2Vza19zdGF0ZSAhPSBUQ1BfTElTVEVOKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbkBAIC03NzUyLDYgKzc3NTUsOSBAQCBCUEZfQ0FMTF81KGJwZl90Y3BfZ2VuX3N5bmNvb2tpZSwgc3RydWN0IHNvY2sgKiwgc2ssIHZvaWQgKiwgaXBoLCB1MzIsIGlwaF9sZW4sXG4gXHRpZiAodW5saWtlbHkoIXNrIHx8IHRoX2xlbiBcdTAwM2Mgc2l6ZW9mKCp0aCkgfHwgdGhfbGVuICE9IHRoLVx1MDAzZWRvZmYgKiA0KSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4rXHRpZiAoIXNrX2Z1bGxzb2NrKHNrKSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHRpZiAoc2stXHUwMDNlc2tfcHJvdG9jb2wgIT0gSVBQUk9UT19UQ1AgfHwgc2stXHUwMDNlc2tfc3RhdGUgIT0gVENQX0xJU1RFTilcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMzozMzozMy4wNDAxNDAyNzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjc1Mzg3MzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJQRiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9jb3JlL2ZpbHRlci5jYC4gVGhhdCBpbW1lZGlhdGVseSBncmFicyBteSBhdHRlbnRpb24g4oCTIGZpbHRlciBjb2RlIGNhbiBnZXQgcmVhbGx5IGNvbXBsZXguIEl0IGxvb2tzIGxpa2UgaXQncyBhZGRpbmcgYCFza19mdWxsc29jayhzaylgIGNoZWNrcyB0byBgYnBmX3RjcF9jaGVja19zeW5jb29raWVgIGFuZCBgYnBmX3RjcF9nZW5fc3luY29va2llYC4gUmlnaHQsIHRob3NlIGFyZSBCUEYgaGVscGVycywgc28gdGhhdCdzIGEga2V5IGRldGFpbC4gVGhlIG9idmlvdXMgcXVlc3Rpb25zIHBvcCB1cDogYXJlIHRoZXNlIGZ1bmN0aW9ucyBhY3R1YWxseSAqcmVhY2hhYmxlKiBpbiBhIHR5cGljYWwgY29uZmlndXJhdGlvbiwgYW5kLCBpZiBzbywgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzPyBXaGF0IGtlcm5lbCBjb25maWdzIGFyZSByZXF1aXJlZCBmb3IgdGhpcyB0byBldmVuIHRha2UgZWZmZWN0PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhlY3V0aW9uIHBhdGggaGVyZS5cblxuTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlYmFzZSBhbmQgc2VhcmNoIGZvciBpbnN0YW5jZXMgb2YgYGJwZl90Y3BfY2hlY2tfc3luY29va2llYCBhbmQgYGJwZl90Y3BfZ2VuX3N5bmNvb2tpZWAuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29udGV4dCBhbmQgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjMyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTM6MzM6MzYuNzE1NTMwNjM4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjg3MTU3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfdGNwX2NoZWNrX3N5bmNvb2tpZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY29yZS9maWx0ZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9maWx0ZXIuYz03NjY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NrYl9lY25fc2V0X2NlX3Byb3RvID0ge1xcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmMtNzY3MS1cXG5uZXQvY29yZS9maWx0ZXIuYzo3NjcyOkJQRl9DQUxMXzUoYnBmX3RjcF9jaGVja19zeW5jb29raWUsIHN0cnVjdCBzb2NrICosIHNrLCB2b2lkICosIGlwaCwgdTMyLCBpcGhfbGVuLFxcbm5ldC9jb3JlL2ZpbHRlci5jLTc2NzMtXFx0ICAgc3RydWN0IHRjcGhkciAqLCB0aCwgdTMyLCB0aF9sZW4pXFxuLS1cXG5uZXQvY29yZS9maWx0ZXIuYy03NzM1LVxcbm5ldC9jb3JlL2ZpbHRlci5jOjc3MzY6c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfdGNwX2NoZWNrX3N5bmNvb2tpZV9wcm90byA9IHtcXG5uZXQvY29yZS9maWx0ZXIuYzo3NzM3OlxcdC5mdW5jXFx0XFx0PSBicGZfdGNwX2NoZWNrX3N5bmNvb2tpZSxcXG5uZXQvY29yZS9maWx0ZXIuYy03NzM4LVxcdC5ncGxfb25seVxcdD0gdHJ1ZSxcXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jPTg0NjQ9dGNfY2xzX2FjdF9mdW5jX3Byb3RvKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmMtODU3NC1cXHRjYXNlIEJQRl9GVU5DX3RjcF9jaGVja19zeW5jb29raWU6XFxubmV0L2NvcmUvZmlsdGVyLmM6ODU3NTpcXHRcXHRyZXR1cm4gXFx1MDAyNmJwZl90Y3BfY2hlY2tfc3luY29va2llX3Byb3RvO1xcbm5ldC9jb3JlL2ZpbHRlci5jLTg1NzYtXFx0Y2FzZSBCUEZfRlVOQ19za2JfZWNuX3NldF9jZTpcXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jPTg2MDE9eGRwX2Z1bmNfcHJvdG8oZW51bSBicGZfZnVuY19pZCBmdW5jX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5uZXQvY29yZS9maWx0ZXIuYy04NjM5LVxcdGNhc2UgQlBGX0ZVTkNfdGNwX2NoZWNrX3N5bmNvb2tpZTpcXG5uZXQvY29yZS9maWx0ZXIuYzo4NjQwOlxcdFxcdHJldHVybiBcXHUwMDI2YnBmX3RjcF9jaGVja19zeW5jb29raWVfcHJvdG87XFxubmV0L2NvcmUvZmlsdGVyLmMtODY0MS1cXHRjYXNlIEJQRl9GVU5DX3RjcF9nZW5fc3luY29va2llOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMzozMzozNi44Mzg0MTA5NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MjI1NTY5MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEJQRiBIZWxwZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwiQWgsIGl0J3MgdGlnaHRlbmluZyB1cCB0aGUgdXNlIG9mIGBicGZfdGNwX2NoZWNrX3N5bmNvb2tpZWAgYW5kIGBicGZfdGNwX2dlbl9zeW5jb29raWVgLlwiIFRoZXNlIGFyZSB0aGUgQlBGIGhlbHBlcnMgdGhhdCB3b3JrIHdpdGhpbiB0aGUgVEMgYW5kIFhEUCB3b3JsZHMsIHJpZ2h0PyBBbmQgdGhlIGNoYW5nZSBpcyBhIHNhbml0eSBjaGVjayDigJMgdGhleSBhcmUgcHJldmVudGluZyB0aGUgdXNlIG9mIHRoZXNlIGhlbHBlcnMgb24gbm9uLWZ1bGwgc29ja2V0cywgbGlrZSByZXF1ZXN0IG9yIHRpbWV3YWl0IHNvY2tldHMsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGdvb2QsIHRhcmdldGVkIGltcHJvdmVtZW50LlxuXG5Ob3csIG15IGV4cGVydCBicmFpbiBpbW1lZGlhdGVseSBqdW1wcyB0byBjb25maWd1cmF0aW9uLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkga25vdyBhbGwgdGhlIGltcGxpY2F0aW9ucy4gSSBrbm93IGBuZXQvY29yZS9maWx0ZXIuY2AgaXMgaW52b2x2ZWQsIGFuZCB0aGF0IGlzIHVzdWFsbHkgdGllZCB0byBgQ09ORklHX05FVGAuIEJ1dCB0aGVzZSBCUEYgaGVscGVycyBhcmUgKnVzdWFsbHkqIGdvdmVybmVkIGJ5IGBDT05GSUdfQlBGX1NZU0NBTExgIGFuZCBgQ09ORklHX0NHUk9VUF9CUEZgLCBvciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLCBzbyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYWxsIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGNvcnJlY3QuXG5cbkxldCBtZSB0YWtlIGEgbG9vayBhdCBgbmV0L2NvcmUvTWFrZWZpbGVgIGFuZCBjb25maXJtIHdoaWNoIGNvbmZpZ3VyYXRpb25zIGFyZSB0cnVseSBuZWNlc3NhcnkgZm9yIHRoaXMgY2hhbmdlIHRvIGJlIGVmZmVjdGl2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA5OSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMzozMzo0MS41NjA5NzQ3NzFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyNzk4MjYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZpbHRlci5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlPTEyPW9iai15XFx0XFx0ICAgICArPSBkZXYubyBkZXZfYXBpLm8gZGV2X2FkZHJfbGlzdHMubyBkc3QubyBuZXRldmVudC5vIFxcXFxcXG5uZXQvY29yZS9NYWtlZmlsZToxMzpcXHRcXHRcXHRuZWlnaGJvdXIubyBydG5ldGxpbmsubyB1dGlscy5vIGxpbmtfd2F0Y2gubyBmaWx0ZXIubyBcXFxcXFxubmV0L2NvcmUvTWFrZWZpbGUtMTQtXFx0XFx0XFx0c29ja19kaWFnLm8gZGV2X2lvY3RsLm8gdHNvLm8gc29ja19yZXVzZXBvcnQubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEzOjMzOjQxLjcwMzc4MjEzMloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0Mjc1NjYzNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBmaWx0ZXIub2AgTW9kdWxlJ3MgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBrbm93IHRoYXQgYGZpbHRlci5vYCBnZXRzIGJ1aWx0IHVuY29uZGl0aW9uYWxseSB3aGVuIGBDT05GSUdfTkVUYCBpcyBzZXQuIFRoYXQncyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBIb3dldmVyLCBJJ20gdGhpbmtpbmcgYWJvdXQgYGJwZl90Y3BfY2hlY2tfc3luY29va2llYC4gVGhlIG5hbWUgcmluZ3MgYSBiZWxsLCBhbmQgSSdtIHByZXR0eSBzdXJlIGl0IGhhcyBzb21lIGRlcGVuZGVuY3kgb24gYENPTkZJR19TWU5fQ09PS0lFU2AuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCwgYmVjYXVzZSBpZiBgYnBmX3RjcF9jaGVja19zeW5jb29raWVgIGlzbid0IHByb3Blcmx5IGd1YXJkZWQsIHdlIGNvdWxkIHNlZSBzb21lIHVuZXhwZWN0ZWQgYnVpbGQgYXJ0aWZhY3RzIG9yIGV2ZW4gcnVudGltZSBiZWhhdmlvci4gVGltZSB0byBkZWx2ZSBpbnRvIHRoZSBjb2RlLiBJJ2xsIHRha2UgYSBsb29rIGF0IGBuZXQvY29yZS9maWx0ZXIuY2AsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA3NjcyLiBUaGF0J3MgbGlrZWx5IHdoZXJlIHRoZSByZWxldmFudCBjb2RlIGlzLiBMZXQncyBzZWUgd2hhdCdzIGFjdHVhbGx5IGdvaW5nIG9uIGluIHRoYXQgc2VjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY1NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEzOjMzOjQ1LjEzMTM1MTMxNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1MTY5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvY29yZS9maWx0ZXIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NjYwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNzY2MDpcXHRcXHR9XFxuNzY2MTpcXHRcXG43NjYyOlxcdFxcdHJldHVybiBpbnNuIC0gaW5zbl9idWY7XFxuNzY2MzpcXHR9XFxuNzY2NDpcXHRcXG43NjY1OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NrYl9lY25fc2V0X2NlX3Byb3RvID0ge1xcbjc2NjY6XFx0XFx0LmZ1bmMgICAgICAgICAgID0gYnBmX3NrYl9lY25fc2V0X2NlLFxcbjc2Njc6XFx0XFx0LmdwbF9vbmx5ICAgICAgID0gZmFsc2UsXFxuNzY2ODpcXHRcXHQucmV0X3R5cGUgICAgICAgPSBSRVRfSU5URUdFUixcXG43NjY5OlxcdFxcdC5hcmcxX3R5cGUgICAgICA9IEFSR19QVFJfVE9fQ1RYLFxcbjc2NzA6XFx0fTtcXG43NjcxOlxcdFxcbjc2NzI6XFx0QlBGX0NBTExfNShicGZfdGNwX2NoZWNrX3N5bmNvb2tpZSwgc3RydWN0IHNvY2sgKiwgc2ssIHZvaWQgKiwgaXBoLCB1MzIsIGlwaF9sZW4sXFxuNzY3MzpcXHRcXHQgICBzdHJ1Y3QgdGNwaGRyICosIHRoLCB1MzIsIHRoX2xlbilcXG43Njc0OlxcdHtcXG43Njc1OlxcdCNpZmRlZiBDT05GSUdfU1lOX0NPT0tJRVNcXG43Njc2OlxcdFxcdGludCByZXQ7XFxuNzY3NzpcXHRcXG43Njc4OlxcdFxcdGlmICh1bmxpa2VseSghc2sgfHwgdGhfbGVuIFxcdTAwM2Mgc2l6ZW9mKCp0aCkpKVxcbjc2Nzk6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuNzY4MDpcXHRcXG43NjgxOlxcdFxcdGlmICghc2tfZnVsbHNvY2soc2spKVxcbjc2ODI6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuNzY4MzpcXHRcXG43Njg0OlxcdFxcdC8qIHNrX2xpc3RlbmVyKCkgYWxsb3dzIFRDUF9ORVdfU1lOX1JFQ1YsIHdoaWNoIG1ha2VzIG5vIHNlbnNlIGhlcmUuICovXFxuNzY4NTpcXHRcXHRpZiAoc2stXFx1MDAzZXNrX3Byb3RvY29sICE9IElQUFJPVE9fVENQIHx8IHNrLVxcdTAwM2Vza19zdGF0ZSAhPSBUQ1BfTElTVEVOKVxcbjc2ODY6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuNzY4NzpcXHRcXG43Njg4OlxcdFxcdGlmICghUkVBRF9PTkNFKHNvY2tfbmV0KHNrKS1cXHUwMDNlaXB2NC5zeXNjdGxfdGNwX3N5bmNvb2tpZXMpKVxcbjc2ODk6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuNzY5MDpcXHRcXG43NjkxOlxcdFxcdGlmICghdGgtXFx1MDAzZWFjayB8fCB0aC1cXHUwMDNlcnN0IHx8IHRoLVxcdTAwM2VzeW4pXFxuNzY5MjpcXHRcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG43NjkzOlxcdFxcbjc2OTQ6XFx0XFx0aWYgKHVubGlrZWx5KGlwaF9sZW4gXFx1MDAzYyBzaXplb2Yoc3RydWN0IGlwaGRyKSkpXFxuNzY5NTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG43Njk2OlxcdFxcbjc2OTc6XFx0XFx0aWYgKHRjcF9zeW5xX25vX3JlY2VudF9vdmVyZmxvdyhzaykpXFxuNzY5ODpcXHRcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG43Njk5OlxcdFxcbjc3MDA6XFx0XFx0LyogQm90aCBzdHJ1Y3QgaXBoZHIgYW5kIHN0cnVjdCBpcHY2aGRyIGhhdmUgdGhlIHZlcnNpb24gZmllbGQgYXQgdGhlXFxuNzcwMTpcXHRcXHQgKiBzYW1lIG9mZnNldCBzbyB3ZSBjYW4gY2FzdCB0byB0aGUgc2hvcnRlciBoZWFkZXIgKHN0cnVjdCBpcGhkcikuXFxuNzcwMjpcXHRcXHQgKi9cXG43NzAzOlxcdFxcdHN3aXRjaCAoKChzdHJ1Y3QgaXBoZHIgKilpcGgpLVxcdTAwM2V2ZXJzaW9uKSB7XFxuNzcwNDpcXHRcXHRjYXNlIDQ6XFxuNzcwNTpcXHRcXHRcXHRpZiAoc2stXFx1MDAzZXNrX2ZhbWlseSA9PSBBRl9JTkVUNiBcXHUwMDI2XFx1MDAyNiBpcHY2X29ubHlfc29jayhzaykpXFxuNzcwNjpcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG43NzA3OlxcdFxcbjc3MDg6XFx0XFx0XFx0cmV0ID0gX19jb29raWVfdjRfY2hlY2soKHN0cnVjdCBpcGhkciAqKWlwaCwgdGgpO1xcbjc3MDk6XFx0XFx0XFx0YnJlYWs7XFxuNzcxMDpcXHRcXG43NzExOlxcdCNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxcbjc3MTI6XFx0XFx0Y2FzZSA2Olxcbjc3MTM6XFx0XFx0XFx0aWYgKHVubGlrZWx5KGlwaF9sZW4gXFx1MDAzYyBzaXplb2Yoc3RydWN0IGlwdjZoZHIpKSlcXG43NzE0OlxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjc3MTU6XFx0XFxuNzcxNjpcXHRcXHRcXHRpZiAoc2stXFx1MDAzZXNrX2ZhbWlseSAhPSBBRl9JTkVUNilcXG43NzE3OlxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjc3MTg6XFx0XFxuNzcxOTpcXHRcXHRcXHRyZXQgPSBfX2Nvb2tpZV92Nl9jaGVjaygoc3RydWN0IGlwdjZoZHIgKilpcGgsIHRoKTtcXG43NzIwOlxcdFxcdFxcdGJyZWFrO1xcbjc3MjE6XFx0I2VuZGlmIC8qIENPTkZJR19JUFY2ICovXFxuNzcyMjpcXHRcXG43NzIzOlxcdFxcdGRlZmF1bHQ6XFxuNzcyNDpcXHRcXHRcXHRyZXR1cm4gLUVQUk9UT05PU1VQUE9SVDtcXG43NzI1OlxcdFxcdH1cXG43NzI2OlxcdFxcbjc3Mjc6XFx0XFx0aWYgKHJldCBcXHUwMDNlIDApXFxuNzcyODpcXHRcXHRcXHRyZXR1cm4gMDtcXG43NzI5OlxcdFxcbjc3MzA6XFx0XFx0cmV0dXJuIC1FTk9FTlQ7XFxuNzczMTpcXHQjZWxzZVxcbjc3MzI6XFx0XFx0cmV0dXJuIC1FTk9UU1VQUDtcXG43NzMzOlxcdCNlbmRpZlxcbjc3MzQ6XFx0fVxcbjc3MzU6XFx0XFxuNzczNjpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl90Y3BfY2hlY2tfc3luY29va2llX3Byb3RvID0ge1xcbjc3Mzc6XFx0XFx0LmZ1bmNcXHRcXHQ9IGJwZl90Y3BfY2hlY2tfc3luY29va2llLFxcbjc3Mzg6XFx0XFx0LmdwbF9vbmx5XFx0PSB0cnVlLFxcbjc3Mzk6XFx0XFx0LnBrdF9hY2Nlc3NcXHQ9IHRydWUsXFxuNzc0MDpcXHRcXHQucmV0X3R5cGVcXHQ9IFJFVF9JTlRFR0VSLFxcbjc3NDE6XFx0XFx0LmFyZzFfdHlwZVxcdD0gQVJHX1BUUl9UT19CVEZfSURfU09DS19DT01NT04sXFxuNzc0MjpcXHRcXHQuYXJnMl90eXBlXFx0PSBBUkdfUFRSX1RPX01FTSB8IE1FTV9SRE9OTFksXFxuNzc0MzpcXHRcXHQuYXJnM190eXBlXFx0PSBBUkdfQ09OU1RfU0laRSxcXG43NzQ0OlxcdFxcdC5hcmc0X3R5cGVcXHQ9IEFSR19QVFJfVE9fTUVNIHwgTUVNX1JET05MWSxcXG43NzQ1OlxcdFxcdC5hcmc1X3R5cGVcXHQ9IEFSR19DT05TVF9TSVpFLFxcbjc3NDY6XFx0fTtcXG43NzQ3OlxcdFxcbjc3NDg6XFx0QlBGX0NBTExfNShicGZfdGNwX2dlbl9zeW5jb29raWUsIHN0cnVjdCBzb2NrICosIHNrLCB2b2lkICosIGlwaCwgdTMyLCBpcGhfbGVuLFxcbjc3NDk6XFx0XFx0ICAgc3RydWN0IHRjcGhkciAqLCB0aCwgdTMyLCB0aF9sZW4pXFxuNzc1MDpcXHR7XFxuNzc1MTpcXHQjaWZkZWYgQ09ORklHX1NZTl9DT09LSUVTXFxuNzc1MjpcXHRcXHR1MzIgY29va2llO1xcbjc3NTM6XFx0XFx0dTE2IG1zcztcXG43NzU0OlxcdFxcbjc3NTU6XFx0XFx0aWYgKHVubGlrZWx5KCFzayB8fCB0aF9sZW4gXFx1MDAzYyBzaXplb2YoKnRoKSB8fCB0aF9sZW4gIT0gdGgtXFx1MDAzZWRvZmYgKiA0KSlcXG43NzU2OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjc3NTc6XFx0XFxuNzc1ODpcXHRcXHRpZiAoIXNrX2Z1bGxzb2NrKHNrKSlcXG43NzU5OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMzozMzo0NS4xMzIyMDcwNTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDUzOTczMzkzMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGFib3V0IGludGVncmF0aW5nIEJQRiB3aXRoIFRDUCBzeW5jb29raWVzLiBJIHNlZSB3ZSBkZWZpbml0ZWx5IG5lZWQgYENPTkZJR19TWU5fQ09PS0lFU2AgZW5hYmxlZCwgdGhhdCdzIGEgZ2l2ZW4uIEFuZCBzaW5jZSB3ZSdyZSB1c2luZyBCUEYsIG5hdHVyYWxseSwgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgcmVxdWlyZWQgYXMgd2VsbC4gVGhlIGNvcmUgZnVuY3Rpb25zIGhlcmUgYXJlIGBicGZfdGNwX2NoZWNrX3N5bmNvb2tpZWAgYW5kIGBicGZfdGNwX2dlbl9zeW5jb29raWVgIOKAkyB0aGVzZSBhcmUgdGhlIEJQRiBoZWxwZXJzIHRoYXQgd2UncmUgZGVhbGluZyB3aXRoLiBUaGV5J3JlIGRlc2lnbmVkIHRvIGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBCUEYgcHJvZ3JhbXMsIHdoaWNoIG1ha2VzIHNlbnNlLlxuXG5UaGUgY3J1Y2lhbCBwYXJ0IG9mIHRoaXMgcGF0Y2ggaXMgdGhlIGFkZGl0aW9uIG9mIHRoZSBgIXNrX2Z1bGxzb2NrKHNrKWAgY2hlY2suIFRoaXMgaXMgaW1wb3J0YW50OiBpdCBwcmV2ZW50cyB0aGUgaGVscGVycyBmcm9tIGJlaW5nIGNhbGxlZCB3aXRoIHNvY2tldHMgdGhhdCBhcmVuJ3QgZnVsbHkgZXN0YWJsaXNoZWQsIGxpa2UgcmVxdWVzdCBzb2NrZXRzIG9yIHRob3NlIGluIHRoZSBUSU1FLVdBSVQgc3RhdGUuIFRoYXQncyBhIHNvbGlkIGRlZmVuc2l2ZSBtZWFzdXJlIGJlY2F1c2UgdHJ5aW5nIHRvIGFjY2VzcyBmaWVsZHMgb24gdGhlc2Ugbm9uLWZ1bGwgc29ja2V0cyB0aGF0IGFyZW4ndCBndWFyYW50ZWVkIHRvIGV4aXN0IGNvdWxkIGxlYWQgdG8gYSBjcmFzaCBvciBvdGhlciB1bmRlc2lyYWJsZSBiZWhhdmlvci4gSXQncyBhIGNsYXNzaWMgZXhhbXBsZSBvZiBhIHBvdGVudGlhbCBudWxsLXBvaW50ZXIgZGVyZWZlcmVuY2Ugb3Igc2ltaWxhciBpc3N1ZS5cblxuVG8gdmVyaWZ5IHRoaXMgcGF0Y2gsIEknZCBuZWVkIHRvIGNyYWZ0IGEgQlBGIHByb2dyYW0gdGhhdCBpbnRlbnRpb25hbGx5IGNhbGxzIGVpdGhlciBgYnBmX3RjcF9jaGVja19zeW5jb29raWVgIG9yIGBicGZfdGNwX2dlbl9zeW5jb29raWVgIHdpdGggYSBub24tZnVsbCBzb2NrZXQgYXMgYW4gYXJndW1lbnQuIEkgd2lsbCBhbHNvIGhhdmUgdG8gbWFrZSBzdXJlIHRvIGVuYWJsZSB0aGUgY29ycmVjdCBjb25maWdzIHdoaWNoIGFyZSBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYENPTkZJR19TWU5fQ09PS0lFU2AgYW5kIGBDT05GSUdfTkVUYC4gSSBzaG91bGQgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgQ09ORklHX1NZTl9DT09LSUVTYCBpcyB0aGUgKmV4YWN0KiBuYW1lIGFuZCBub3Qgc29tZXRoaW5nIHNpbWlsYXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NjgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMzo0Mzo1MC41Mjk1NDg2MjhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwOTc1NDg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTWU5fQ09PS0lFU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9MjU5PWNvbmZpZyBJUF9QSU1TTV9WMlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0yNjctXFxubmV0L2lwdjQvS2NvbmZpZzoyNjg6Y29uZmlnIFNZTl9DT09LSUVTXFxubmV0L2lwdjQvS2NvbmZpZy0yNjktXFx0Ym9vbCBcXFwiSVA6IFRDUCBzeW5jb29raWUgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTM6NDM6NTAuNjIwNTI5MjMyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MDAwNTA4NDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuT2theSwgZGVmaW5pdGVseSBgU1lOX0NPT0tJRVNgLCB0aGF0J3Mgd2hhdCB3ZSdyZSBhZnRlci4gTm93LCBsZXQncyBzZWUgd2hhdCBlbHNlIG1pZ2h0IGJlIGNvbm5lY3RlZCB0byB0aGlzLiBUaGUgZnVuY3Rpb24gcHJvdG90eXBlcywgYHRjX2Nsc19hY3RfZnVuY19wcm90b2AgYW5kIGB4ZHBfZnVuY19wcm90b2AsIGFyZSB3aGVyZSB0aGUgaGVscGVycyBhcmUgZXhwb3NlZC4gSG1tLCBzbyBgQ09ORklHX05FVF9DTFNfQUNUYCBhbmQgYENPTkZJR19YRFBfU09DS0VUU2AgY291bGQgYmUgaW5kaXJlY3RseSByZWxldmFudC4gQnV0IHJlYWxseSwgdGhlIGNydWNpYWwgb25lIGhlcmUgaXMgbGlrZWx5IGBDT05GSUdfQlBGX1NZU0NBTExgLlxuXG5Ib2xkIG9uLi4uIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBJcyBgdGNfY2xzX2FjdF9mdW5jX3Byb3RvYCBjb21waWxlZCAqY29uZGl0aW9uYWxseSogb24gYENPTkZJR19ORVRfQ0xTX0JQRmAgb3IgYENPTkZJR19CUEZfU1lTQ0FMTGA/IFRoYXQgc291bmRzIHJpZ2h0LiBKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIGp1bXAgaW50byBgbmV0L2NvcmUvZmlsdGVyLmNgIGFuZCBjb25maXJtIGhvdyBgdGNfY2xzX2FjdF9mdW5jX3Byb3RvYCBpcyBhY3R1YWxseSBkZWZpbmVkIGluIHJlbGF0aW9uIHRvIHRob3NlIG90aGVyIGNvbmZpZ3MuIEkgd2FudCB0byBzZWUgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGluIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyMDYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTM6NDQ6NTguNjIxMDQwNVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyMTcyOTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjX2Nsc19hY3RfZnVuY19wcm90b1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY29yZS9maWx0ZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9maWx0ZXIuYz04NDYzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gKlxcbm5ldC9jb3JlL2ZpbHRlci5jOjg0NjQ6dGNfY2xzX2FjdF9mdW5jX3Byb3RvKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbm5ldC9jb3JlL2ZpbHRlci5jLTg0NjUte1xcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmM9MTEzNDY9Y29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9vcHMgdGNfY2xzX2FjdF92ZXJpZmllcl9vcHMgPSB7XFxubmV0L2NvcmUvZmlsdGVyLmM6MTEzNDc6XFx0LmdldF9mdW5jX3Byb3RvXFx0XFx0PSB0Y19jbHNfYWN0X2Z1bmNfcHJvdG8sXFxubmV0L2NvcmUvZmlsdGVyLmMtMTEzNDgtXFx0LmlzX3ZhbGlkX2FjY2Vzc1xcdD0gdGNfY2xzX2FjdF9pc192YWxpZF9hY2Nlc3MsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEzOjQ0OjU4LjczMzIyMzE2NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzUwNzAwMDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIEkgcmVjb2duaXplIHRoYXQgYHRjX2Nsc19hY3RfdmVyaWZpZXJfb3BzYCBpcyByZWxldmFudCBoZXJlLCBzcGVjaWZpY2FsbHkgZm9yIGBCUEZfUFJPR19UWVBFX1NDSEVEX0NMU2AgYW5kIGBCUEZfUFJPR19UWVBFX1NDSEVEX0FDVGAuIFJpZ2h0LCB0aG9zZSBhcmUgdGhlIGVCUEYgcHJvZ3JhbSB0eXBlcyB0aGF0IGFyZSByZWxldmFudCB0byB0aGlzIHdvcmssIGFuZCB0aGV5J3JlIG9ubHkgYXZhaWxhYmxlIGlmIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGVuYWJsZWQuIE1ha2VzIHNlbnNlLiBBbmQgc2luY2Ugd2UgYXJlIGRlYWxpbmcgd2l0aCBzeW5jb29raWVzLCBgU1lOX0NPT0tJRVNgIGlzIGFub3RoZXIga2V5IGNvbmZpZyB0byBrZWVwIGluIG1pbmQuXG5cblRoZSBjb3JlIGlzc3VlIHNlZW1zIHRvIGJlIGFyb3VuZCBgYnBmX3RjcF9jaGVja19zeW5jb29raWVgIGFuZCBgYnBmX3RjcF9nZW5fc3luY29va2llYC4gVGhlIHBhdGNoJ3MgcmVhc29uaW5nIGlzIGNsZWFyOyBpdOKAmXMgYSBmdW5jdGlvbmFsIGZpeCwgcHJldmVudGluZyBhIGNyYXNoIG9yIG1lbW9yeSBjb3JydXB0aW9uIHdoZW4gYSAqbm9uLWZ1bGwqIHNvY2tldCDigJMgbGlrZSBhIHJlcXVlc3Qgb3IgVElNRV9XQUlUIHNvY2tldCDigJMgaXMgZXJyb25lb3VzbHkgcGFzc2VkIHRvIHRoZXNlIEJQRiBoZWxwZXJzLiBUaGlzIGlzIGEgY2xhc3NpYyB2dWxuZXJhYmlsaXR5IHZlY3RvciwgZWFzeSB0byBtaXNzLiBUaGlzIHBhdGNoIGFwcGVhcnMgdG8gYmUgZG9pbmcgZXhhY3RseSB3aGF0IEkgd291bGQgZXhwZWN0IGluIHRoaXMgc2l0dWF0aW9uLCBhZGRpbmcgYSBjaGVjayB0byBhdm9pZCB0aGUgaXNzdWUgYWx0b2dldGhlci5cblxuVGhlIHBhdGNoJ3MgaW1wYWN0IGlzIHNpZ25pZmljYW50LiBHaXZlbiB0aGUgcG90ZW50aWFsIGZvciBjcmFzaGVzIGFuZCBtZW1vcnkgZXJyb3JzLCBmdXp6aW5nIHRoaXMgYXJlYSBpcyBjcml0aWNhbC4gV2UgbmVlZCB0byB0aHJvdyBhIHZhcmlldHkgb2Ygc29ja2V0IHR5cGVzIGF0IHRob3NlIGhlbHBlcnMsIGVzcGVjaWFsbHkgdGhlIG5vbi1mdWxsIG9uZXMgbWVudGlvbmVkLCBhbmQgdmVyaWZ5IHRoYXQgdGhlIGZpeCBpcyByb2J1c3QuIFRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBwdXJzdWluZyB3aXRoIGEgZnV6emluZyBjYW1wYWlnbi5cblxuU28sIHRvIHN1bW1hcml6ZTogdGhlIHJlbGV2YW50IGNvbmZpZ3MgYXJlIGBCUEZfU1lTQ0FMTGAgYW5kIGBTWU5fQ09PS0lFU2AuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIGludmVzdGlnYXRlIGFyZSBgYnBmX3RjcF9jaGVja19zeW5jb29raWVgIGFuZCBgYnBmX3RjcF9nZW5fc3luY29va2llYC4gTGV0J3MgZ2V0IGZ1enppbmchXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4MjAsIk91dHB1dFRva2VucyI6MTM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEzOjQ1OjA0LjQ4MzkyNTkxNloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDgwNDQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIlNZTl9DT09LSUVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX3RjcF9jaGVja19zeW5jb29raWVcIixcbiAgICBcImJwZl90Y3BfZ2VuX3N5bmNvb2tpZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IG5vbi1mdWxsIHNvY2tldHMgKGxpa2UgcmVxdWVzdCBvciB0aW1ld2FpdCBzb2NrZXRzKSBmcm9tIGJlaW5nIHBhc3NlZCB0byB0aGUgYnBmX3RjcF9jaGVja19zeW5jb29raWUgYW5kIGJwZl90Y3BfZ2VuX3N5bmNvb2tpZSBCUEYgaGVscGVycywgd2hpY2ggY291bGQgbGVhZCB0byBpbnZhbGlkIG1lbW9yeSBhY2Nlc3Nlcy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2UgaGVscGVycyB3aXRoIHZhcmlvdXMgc29ja2V0IHR5cGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJTWU5fQ09PS0lFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl90Y3BfY2hlY2tfc3luY29va2llXCIsXG4gICAgXCJicGZfdGNwX2dlbl9zeW5jb29raWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCBub24tZnVsbCBzb2NrZXRzIChsaWtlIHJlcXVlc3Qgb3IgdGltZXdhaXQgc29ja2V0cykgZnJvbSBiZWluZyBwYXNzZWQgdG8gdGhlIGJwZl90Y3BfY2hlY2tfc3luY29va2llIGFuZCBicGZfdGNwX2dlbl9zeW5jb29raWUgQlBGIGhlbHBlcnMsIHdoaWNoIGNvdWxkIGxlYWQgdG8gaW52YWxpZCBtZW1vcnkgYWNjZXNzZXMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIGhlbHBlcnMgd2l0aCB2YXJpb3VzIHNvY2tldCB0eXBlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowv598x[1] Phase: Succeeded StartedAt: 2026-08-02 13:45:26 +0000 UTC FinishedAt: 2026-08-02 13:45:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv598x[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-02 13:45:26 +0000 UTC FinishedAt: 2026-08-02 13:45:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv598x[2] Phase: Succeeded StartedAt: 2026-08-02 13:45:26 +0000 UTC FinishedAt: 2026-08-02 17:27:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-02 13:45:26 +0000 UTC FinishedAt: 2026-08-02 17:27:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-02 13:45:26 +0000 UTC FinishedAt: 2026-08-02 13:45:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-02 13:45:26 +0000 UTC FinishedAt: 2026-08-02 13:45:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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-workflowv598x/series-workflowv598x-convert-artifact-2566081979/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-02 13:45:36 +0000 UTC FinishedAt: 2026-08-02 14:01:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-02 13:45:36 +0000 UTC FinishedAt: 2026-08-02 14:01:41 +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:*e8322a36-d31c-4d99-b5b1-0ecdcae82f5a,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-workflowv598x/series-workflowv598x-convert-artifact-2566081979/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": "d8e09ada-dbd5-4af0-9ae8-076bd824bd13", "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-workflowv598x/series-workflowv598x-build-action-1757961209/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-02 13:45:36 +0000 UTC FinishedAt: 2026-08-02 14:01:31 +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:*e8322a36-d31c-4d99-b5b1-0ecdcae82f5a,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-workflowv598x/series-workflowv598x-convert-artifact-2566081979/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": "d8e09ada-dbd5-4af0-9ae8-076bd824bd13", "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-workflowv598x/series-workflowv598x-build-action-1757961209/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-02 14:01:41 +0000 UTC FinishedAt: 2026-08-02 14:01:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-02 14:01:41 +0000 UTC FinishedAt: 2026-08-02 14:01:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-02 14:01:41 +0000 UTC FinishedAt: 2026-08-02 14:01:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-02 14:01:41 +0000 UTC FinishedAt: 2026-08-02 14:01:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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-workflowv598x/series-workflowv598x-convert-artifact-733061394/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-02 14:01:51 +0000 UTC FinishedAt: 2026-08-02 14:03:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-02 14:01:51 +0000 UTC FinishedAt: 2026-08-02 14:03:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d8e09ada-dbd5-4af0-9ae8-076bd824bd13,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-workflowv598x/series-workflowv598x-build-action-1757961209/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-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-02 14:03:51 +0000 UTC FinishedAt: 2026-08-02 14:03:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-02 14:03:51 +0000 UTC FinishedAt: 2026-08-02 14:03:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-02 14:03:51 +0000 UTC FinishedAt: 2026-08-02 14:23:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-02 14:03:51 +0000 UTC FinishedAt: 2026-08-02 14:23:42 +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:*e8322a36-d31c-4d99-b5b1-0ecdcae82f5a,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-workflowv598x/series-workflowv598x-convert-artifact-733061394/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": "f127f057-95ba-4d05-89bb-12737a9755b3", "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-workflowv598x/series-workflowv598x-build-action-3205111206/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-02 14:03:51 +0000 UTC FinishedAt: 2026-08-02 14:23:32 +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:*e8322a36-d31c-4d99-b5b1-0ecdcae82f5a,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-workflowv598x/series-workflowv598x-convert-artifact-733061394/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": "f127f057-95ba-4d05-89bb-12737a9755b3", "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-workflowv598x/series-workflowv598x-build-action-3205111206/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-02 14:23:42 +0000 UTC FinishedAt: 2026-08-02 14:23:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-02 14:23:42 +0000 UTC FinishedAt: 2026-08-02 14:23:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-02 14:23:42 +0000 UTC FinishedAt: 2026-08-02 14:25:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-02 14:23:42 +0000 UTC FinishedAt: 2026-08-02 14:25:29 +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:*f127f057-95ba-4d05-89bb-12737a9755b3,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-workflowv598x/series-workflowv598x-build-action-3205111206/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-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-02 14:25:40 +0000 UTC FinishedAt: 2026-08-02 17:27:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-02 14:25:40 +0000 UTC FinishedAt: 2026-08-02 17:27:43 +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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"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:*d8e09ada-dbd5-4af0-9ae8-076bd824bd13,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f127f057-95ba-4d05-89bb-12737a9755b3,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-workflowv598x/series-workflowv598x-build-action-1757961209/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-workflowv598x/series-workflowv598x-build-action-3205111206/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-02 14:25:40 +0000 UTC FinishedAt: 2026-08-02 14:25:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-02 14:25:40 +0000 UTC FinishedAt: 2026-08-02 14:25:47 +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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"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-workflowv598x/series-workflowv598x-convert-artifact-172808295/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-02 14:25:40 +0000 UTC FinishedAt: 2026-08-02 14:25:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-02 14:25:40 +0000 UTC FinishedAt: 2026-08-02 14:25:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-02 14:25:40 +0000 UTC FinishedAt: 2026-08-02 14:25:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-02 14:25:51 +0000 UTC FinishedAt: 2026-08-02 17:27:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv598x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_tcp_check_syncookie","bpf_tcp_gen_syncookie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","SYN_COOKIES"],"series_id":"2b0fca3d-9b75-496f-9cc2-074a2010bc00","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-02 14:25:51 +0000 UTC FinishedAt: 2026-08-02 17:27:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d8e09ada-dbd5-4af0-9ae8-076bd824bd13,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f127f057-95ba-4d05-89bb-12737a9755b3,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-workflowv598x/series-workflowv598x-build-action-1757961209/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-workflowv598x/series-workflowv598x-build-action-3205111206/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-workflowv598x/series-workflowv598x-convert-artifact-172808295/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,}