Name: series-workflow4rhl7 Phase: Succeeded StartedAt: 2026-08-09 09:17:32 +0000 UTC FinishedAt: 2026-08-09 13:40:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4rhl7[0] Phase: Succeeded StartedAt: 2026-08-09 09:17:32 +0000 UTC FinishedAt: 2026-08-09 10:00:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4rhl7[0].run-triage Phase: Succeeded StartedAt: 2026-08-09 09:17:32 +0000 UTC FinishedAt: 2026-08-09 10:00:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dd057113ac7ba5bdd2aed3d9405305911152f911", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_CLS_ACT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dd057113ac7ba5bdd2aed3d9405305911152f911", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_CLS_ACT" ], "series_id": "441c0025-c4ec-46c2-b131-a2f8ddf02c9f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [], "corpus_urls": [ "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+CgkJCTx0ZD4yMDI2LzA4LzA5IDA5OjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0FDVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB3YXkgYGEtXHUwMDNlZ290b19jaGFpbmAgaXMgZGVyZWZlcmVuY2VkIGluIGB0Y2ZfYWN0aW9uX2V4ZWNgIGFuZCBwYXNzZWQgdG8gYHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjYC4gSXQgcmVwbGFjZXMgYW4gYHJjdV9hY2Nlc3NfcG9pbnRlcmAgY2hlY2sgZm9sbG93ZWQgYnkgYSBzZXBhcmF0ZSBgcmN1X2RlcmVmZXJlbmNlX2JoYCB3aXRoIGEgc2luZ2xlIGByY3VfZGVyZWZlcmVuY2VfYmhgIGNhbGwsIHBhc3NpbmcgdGhlIHJlc3VsdGluZyBwb2ludGVyIHRvIHRoZSBoZWxwZXIgZnVuY3Rpb24uIFRoaXMgaXMgYSBsb2dpYy9SQ1UgZml4IHRoYXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGNyZWF0aW5nIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhpcyBjb2RlIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMpIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRyYWZmaWMgY29udHJvbCBhY3Rpb24gZXhlY3V0aW9uIHBhdGggKGB0Y2ZfYWN0aW9uX2V4ZWNgKSBieSBlbnN1cmluZyBgYS1cdTAwM2Vnb3RvX2NoYWluYCBpcyBkZXJlZmVyZW5jZWQgb25seSBvbmNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBkYXRhcGF0aC4gU2luY2UgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIGEgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbiwgbm8gc3BlY2lmaWMgZm9jdXMgc3ltYm9scyBhcmUgcHJvdmlkZWQgdG8gYXZvaWQgc2tld2luZyB0aGUgZnV6emVyJiMzOTtzIGRpc3RyaWJ1dGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwOTo1ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDUyNTc3YzI1ZmE1YTA5OTE1OThlMmRlNjI3YWYxOWFiNWZiZTA1ZDBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyA5IDA5OjU4OjU2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfYXBpLmMgYi9uZXQvc2NoZWQvYWN0X2FwaS5jXG5pbmRleCBmMTQxNjM0ZGYyMTQ4Li42MDBiNzgwNGJlZmQyIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL2FjdF9hcGkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL2FjdF9hcGkuY1xuQEAgLTQxLDExICYjNDM7NDEsOSBAQCBpbnQgdGNmX2Rldl9xdWV1ZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsIGludCAoKnhtaXQpKHN0cnVjdCBza19idWZmICpza2IpKVxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTCh0Y2ZfZGV2X3F1ZXVlX3htaXQpO1xuIFxuLXN0YXRpYyB2b2lkIHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEsXG4mIzQzO3N0YXRpYyB2b2lkIHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjKGNvbnN0IHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluLFxuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCB0Y2ZfcmVzdWx0ICpyZXMpXG4ge1xuLVx0Y29uc3Qgc3RydWN0IHRjZl9jaGFpbiAqY2hhaW4gPSByY3VfZGVyZWZlcmVuY2VfYmgoYS1cdTAwM2Vnb3RvX2NoYWluKTtcbi1cbiBcdHJlcy1cdTAwM2Vnb3RvX3RwID0gcmN1X2RlcmVmZXJlbmNlX2JoKGNoYWluLVx1MDAzZWZpbHRlcl9jaGFpbik7XG4gfVxuIFxuQEAgLTExNzAsMTIgJiM0MzsxMTY4LDE0IEBAIGludCB0Y2ZfYWN0aW9uX2V4ZWMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRjX2FjdGlvbiAqKmFjdGlvbnMsXG4gXHRcdFx0XHRcdHJldHVybiBUQ19BQ1RfT0s7XG4gXHRcdFx0fVxuIFx0XHR9IGVsc2UgaWYgKFRDX0FDVF9FWFRfQ01QKHJldCwgVENfQUNUX0dPVE9fQ0hBSU4pKSB7XG4tXHRcdFx0aWYgKHVubGlrZWx5KCFyY3VfYWNjZXNzX3BvaW50ZXIoYS1cdTAwM2Vnb3RvX2NoYWluKSkpIHtcbiYjNDM7XHRcdFx0c3RydWN0IHRjZl9jaGFpbiAqY2hhaW4gPSByY3VfZGVyZWZlcmVuY2VfYmgoYS1cdTAwM2Vnb3RvX2NoYWluKTtcbiYjNDM7XG4mIzQzO1x0XHRcdGlmICh1bmxpa2VseSghY2hhaW4pKSB7XG4gXHRcdFx0XHR0Y2Zfc2V0X2Ryb3BfcmVhc29uKHNrYixcbiBcdFx0XHRcdFx0XHQgICAgU0tCX0RST1BfUkVBU09OX1RDX0NIQUlOX05PVEZPVU5EKTtcbiBcdFx0XHRcdHJldHVybiBUQ19BQ1RfU0hPVDtcbiBcdFx0XHR9XG4tXHRcdFx0dGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWMoYSwgcmVzKTtcbiYjNDM7XHRcdFx0dGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWMoY2hhaW4sIHJlcyk7XG4gXHRcdH1cbiBcbiBcdFx0aWYgKHJldCAhPSBUQ19BQ1RfUElQRSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwOTo1ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGluIHRoZSB0cmFmZmljIGNvbnRyb2wgYWN0aW9uIGV4ZWN1dGlvbiBwYXRoIChgdGNmX2FjdGlvbl9leGVjYCkgYnkgZW5zdXJpbmcgYGEtXHUwMDNlZ290b19jaGFpbmAgaXMgZGVyZWZlcmVuY2VkIG9ubHkgb25jZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgZGF0YXBhdGguIFNpbmNlIHRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyBhIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb24sIG5vIHNwZWNpZmljIGZvY3VzIHN5bWJvbHMgYXJlIHByb3ZpZGVkIHRvIGF2b2lkIHNrZXdpbmcgdGhlIGZ1enplciYjMzk7cyBkaXN0cmlidXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1MjU3N2MyNWZhNWEwOTkxNTk4ZTJkZTYyN2FmMTlhYjVmYmUwNWQwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgOSAwOTo1ODo1NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfYXBpLmMgYi9uZXQvc2NoZWQvYWN0X2FwaS5jCmluZGV4IGYxNDE2MzRkZjIxNDguLjYwMGI3ODA0YmVmZDIgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9hY3RfYXBpLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL2FjdF9hcGkuYwpAQCAtNDEsMTEgJiM0Mzs0MSw5IEBAIGludCB0Y2ZfZGV2X3F1ZXVlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICgqeG1pdCkoc3RydWN0IHNrX2J1ZmYgKnNrYikpCiB9CiBFWFBPUlRfU1lNQk9MX0dQTCh0Y2ZfZGV2X3F1ZXVlX3htaXQpOwogCi1zdGF0aWMgdm9pZCB0Y2ZfYWN0aW9uX2dvdG9fY2hhaW5fZXhlYyhjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphLAomIzQzO3N0YXRpYyB2b2lkIHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjKGNvbnN0IHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluLAogCQkJCSAgICAgICBzdHJ1Y3QgdGNmX3Jlc3VsdCAqcmVzKQogewotCWNvbnN0IHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluID0gcmN1X2RlcmVmZXJlbmNlX2JoKGEtJmd0O2dvdG9fY2hhaW4pOwotCiAJcmVzLSZndDtnb3RvX3RwID0gcmN1X2RlcmVmZXJlbmNlX2JoKGNoYWluLSZndDtmaWx0ZXJfY2hhaW4pOwogfQogCkBAIC0xMTcwLDEyICYjNDM7MTE2OCwxNCBAQCBpbnQgdGNmX2FjdGlvbl9leGVjKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB0Y19hY3Rpb24gKiphY3Rpb25zLAogCQkJCQlyZXR1cm4gVENfQUNUX09LOwogCQkJfQogCQl9IGVsc2UgaWYgKFRDX0FDVF9FWFRfQ01QKHJldCwgVENfQUNUX0dPVE9fQ0hBSU4pKSB7Ci0JCQlpZiAodW5saWtlbHkoIXJjdV9hY2Nlc3NfcG9pbnRlcihhLSZndDtnb3RvX2NoYWluKSkpIHsKJiM0MzsJCQlzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbiA9IHJjdV9kZXJlZmVyZW5jZV9iaChhLSZndDtnb3RvX2NoYWluKTsKJiM0MzsKJiM0MzsJCQlpZiAodW5saWtlbHkoIWNoYWluKSkgewogCQkJCXRjZl9zZXRfZHJvcF9yZWFzb24oc2tiLAogCQkJCQkJICAgIFNLQl9EUk9QX1JFQVNPTl9UQ19DSEFJTl9OT1RGT1VORCk7CiAJCQkJcmV0dXJuIFRDX0FDVF9TSE9UOwogCQkJfQotCQkJdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWMoYSwgcmVzKTsKJiM0MzsJCQl0Y2ZfYWN0aW9uX2dvdG9fY2hhaW5fZXhlYyhjaGFpbiwgcmVzKTsKIAkJfQogCiAJCWlmIChyZXQgIT0gVENfQUNUX1BJUEUpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA5OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyOTQKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA3NDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVHJhZmZpYyBDb250cm9sIEFjdGlvbiBDaGFpbiBNb2RpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvc2NoZWQvYWN0X2FwaS5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgY2hhbmdpbmcgaG93IHdlIGhhbmRsZSB0aGUgZ290byBjaGFpbiB3aXRoaW4gYSB0cmFmZmljIGNvbnRyb2wgYWN0aW9uLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIGxpa2UgdGhlIGNoYW5nZSBpbnZvbHZlcyB0YWtpbmcgYHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluYCBkaXJlY3RseSBpbiBgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWNgIGluc3RlYWQgb2YgdGhlIG1vcmUgZ2VuZXJhbCBgc3RydWN0IHRjX2FjdGlvbiAqYWAuIFRoZSBrZXkgc2hpZnQgYXBwZWFycyB0byBiZSB0aGF0IGBhLSZndDtnb3RvX2NoYWluYCBpcyBub3cgZGVyZWZlcmVuY2VkIGluIGB0Y2ZfYWN0aW9uX2V4ZWNgIGl0c2VsZiwgcmF0aGVyIHRoYW4gd2l0aGluIHRoZSBgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWNgIGZ1bmN0aW9uLiBUaGlzIHBvdGVudGlhbGx5IG1pdGlnYXRlcyBhIHJhY2UgY29uZGl0aW9uIG9yIG1lbW9yeSBzYWZldHkgaXNzdWXigJRsaWtlbHkgZW5zdXJpbmcgdGhlIGNoYWluIGlzbiYjMzk7dCBhY2Nlc3NlZCBhZnRlciBpdCYjMzk7cyBiZWVuIGZyZWVkIG9yIGJlY29tZSBpbnZhbGlkLgoKTm93LCBhIHJlZCBmbGFnIHBvcHMgdXA6IGB0Y2ZfYWN0aW9uX2V4ZWNgIGlzIGEgKmhvdCBwYXRoKiBmdW5jdGlvbi4gSXQmIzM5O3MgY2FsbGVkIGZvciAqZXZlcnkqIHBhY2tldCB0aGF0IGhpdHMgYSBUQyBhY3Rpb24uIFRoYXQgbWVhbnMgcGVyZm9ybWFuY2UgaXMgY3JpdGljYWwgaGVyZS4gSSBuZWVkIHRvIGJlIGRvdWJseSBzdXJlIG9mIHRoZSBjb3JyZWN0bmVzcyBhbmQgc3RhYmlsaXR5IG9mIHRoaXMgY2hhbmdlLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGNvbnNpZGVyIGZ1enppbmcgaXQgaGVhdmlseSwgZ2l2ZW4gaXRzIGNyaXRpY2FsIG5hdHVyZS4KCkxldCYjMzk7cyBkaXNzZWN0IHRoaXMgZnVydGhlci4gTG9va2luZyBhdCB0aGUgY29kZSwgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIGRlcmVmZXJlbmNpbmcgYGEtJmd0O2dvdG9fY2hhaW5gLiBCZWNhdXNlIGB0Y2ZfYWN0aW9uX2V4ZWNgIGlzIGhvdCwgSSBtdXN0IGF2b2lkIHNrZXdpbmcgdGhlIHRlc3QgZGlzdHJpYnV0aW9uIHdpdGggdGhpcyBwYXRjaC4gSSBzaG91bGQgY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIGZ1bmN0aW9ucyBhZmZlY3RlZCBpbiB0aGlzIHBhdGNoLiBCYXNlZCBvbiB0aGUgcGF0Y2gsIGl0IHNlZW1zIGxpa2UgYHRjZl9hY3Rpb25fZXhlY2AgYW5kIGB0Y2ZfYWN0aW9uX2dvdG9fY2hhaW5fZXhlY2AgYXJlIHRoZSBvbmx5IG1vZGlmaWVkIGZ1bmN0aW9ucy4gYHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjYCBpcyBzdGF0aWMsIHdoaWNoIGlzIGdvb2QgdG8gYXZvaWQgYXMgYSBmb2N1cyBzeW1ib2wuIGB0Y2ZfYWN0aW9uX2V4ZWNgIGlzIGFuIGV4cG9ydGVkIEFQSSBmdW5jdGlvbiBpbiBkYXRhcGF0aC4gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgaG90IHBhdGggZnVuY3Rpb24sIGFjY29yZGluZyB0byB0aGUgZ3VpZGFuY2UsIEkgc2hvdWxkbiYjMzk7dCBsaXN0IGl0IGluIGBGb2N1c1N5bWJvbHNgLgoKT2theSwgdGhlcmUgYXJlIG5vIG90aGVyIGZ1bmN0aW9ucy4gR2l2ZW4gdGhlIGluc3RydWN0aW9ucyB0byBhdm9pZCBob3QtcGF0aCBhbmQgaW50ZXJuYWwgc3RhdGljIGZ1bmN0aW9ucywgdGhlIGBGb2N1c1N5bWJvbHNgIGVudHJ5IHNob3VsZCBiZSBlbXB0eS4KCkZpbmFsbHksIEkgc2hvdWxkIGNoZWNrIHRoZSBjb25maWc6IHRoaXMgY29kZSBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfTkVUX0NMU19BQ1RgIGlzIGVuYWJsZWQsIHdoaWNoIGlzIHN0YW5kYXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA5OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29iai0uKmFjdF9hcGkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL01ha2VmaWxlPTEwPW9iai0kKENPTkZJR19ORVRfQ0xTKVx0XHQmIzQzOz0gY2xzX2FwaS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX05FVF9DTFNfQUNUKVx0JiM0Mzs9IGFjdF9hcGkub1xubmV0L3NjaGVkL01ha2VmaWxlLTEyLW9iai0kKENPTkZJR19ORVRfQUNUX1BPTElDRSlcdCYjNDM7PSBhY3RfcG9saWNlLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwOTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjUyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIGBDT05GSUdfTkVUX0NMU19BQ1RgKioKCkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgcmV2b2x2ZXMgYXJvdW5kIGBDT05GSUdfTkVUX0NMU19BQ1RgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBpbW1lZGlhdGVseSBkaXZlIGludG8gaXRzIGRlcGVuZGVuY2llcy4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgYW5kIHVuZGVyc3RhbmRpbmcgaXRzIHBsYWNlIGluIHRoZSBkZXBlbmRlbmN5IHRyZWUgaXMga2V5IHRvIGNvbXByZWhlbmRpbmcgaXRzIHJvbGUgYW5kIHBvdGVudGlhbCBpbXBhY3QuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IGlmIGl0IHJlbGllcyBvbiBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgb3IgZmVhdHVyZXMuIFRoaXMga25vd2xlZGdlIGlzIGNydWNpYWwgZm9yIHRyb3VibGVzaG9vdGluZywgb3B0aW1pemluZywgb3Igc2ltcGx5IGVuc3VyaW5nIGEgc3RhYmxlIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA5OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfQ0xTX0FDVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTY5MD1jb25maWcgTkVUX0VNQVRDSF9JUFRcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy03MDEtXG5uZXQvc2NoZWQvS2NvbmZpZzo3MDI6Y29uZmlnIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03MDMtXHRib29sIFwmIzM0O0FjdGlvbnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwOTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTE2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIGBuZXQvc2NoZWQvS2NvbmZpZ2AqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgYG5ldC9zY2hlZC9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNzAyLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoYXQgYXJlYS4gSXQmIzM5O3MgbGlrZWx5IHJlbGF0ZWQgdG8gdHJhZmZpYyBzaGFwaW5nIG9yIHF1ZXVlaW5nIGRpc2NpcGxpbmVzLCBnaXZlbiB0aGUgZGlyZWN0b3J5LiBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBxdWljayBvdmVydmlldyBvZiB0aGUgYXZhaWxhYmxlIGZlYXR1cmVzIGFuZCBkZXBlbmRlbmNpZXMuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHVuZGVyc3RhbmRpbmcgaG93IHNwZWNpZmljIG9wdGlvbnMgbWlnaHQgYmUgaW5mbHVlbmNpbmcgdGhlIHBlcmZvcm1hbmNlIG9yIGZ1bmN0aW9uYWxpdHkgSSYjMzk7bSBzZWVpbmcgZWxzZXdoZXJlLiBUaGlzIGluaXRpYWwgaW52ZXN0aWdhdGlvbiB3aWxsIGhlbHAgbmFycm93IGRvd24gdGhlIHNjb3BlIG9mIHdoYXQgSSYjMzk7bSBsb29raW5nIGF0LiBJJiMzOTttIGV4cGVjdGluZyB0byBlaXRoZXIgcmVmcmVzaCBteSBtZW1vcnkgb2Yga25vd24gb3B0aW9ucyBvciBlbmNvdW50ZXIgc29tZXRoaW5nIG5ldyB0aGF0IG1pZ2h0IHNwYXJrIGEgbmV3IGxpbmUgb2YgZW5xdWlyeS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA5OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2OTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDY5MDpcdGNvbmZpZyBORVRfRU1BVENIX0lQVFxuIDY5MTpcdFx0dHJpc3RhdGUgXCYjMzQ7SVB0YWJsZXMgTWF0Y2hlc1wmIzM0O1xuIDY5MjpcdFx0ZGVwZW5kcyBvbiBORVRfRU1BVENIIFx1MDAyNlx1MDAyNiBORVRGSUxURVIgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUl9YVEFCTEVTXG4gNjkzOlx0XHRoZWxwXG4gNjk0Olx0XHQgIFNheSBZIGhlcmUgdG8gYmUgYWJsZSB0byBjbGFzc2lmeSBwYWNrZXRzIGJhc2VkIG9uIGlwdGFibGVzXG4gNjk1Olx0XHQgIG1hdGNoZXMuXG4gNjk2Olx0XHQgIEN1cnJlbnQgc3VwcG9ydGVkIG1hdGNoIGlzIFwmIzM0O3BvbGljeVwmIzM0OyB3aGljaCBhbGxvd3MgcGFja2V0IGNsYXNzaWZpY2F0aW9uXG4gNjk3Olx0XHQgIGJhc2VkIG9uIElQc2VjIHBvbGljeSB0aGF0IHdhcyB1c2VkIGR1cmluZyBkZWNhcHN1bGF0aW9uXG4gNjk4Olx0XG4gNjk5Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiA3MDA6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGVtX2lwdC5cbiA3MDE6XHRcbiA3MDI6XHRjb25maWcgTkVUX0NMU19BQ1RcbiA3MDM6XHRcdGJvb2wgXCYjMzQ7QWN0aW9uc1wmIzM0O1xuIDcwNDpcdFx0c2VsZWN0IE5FVF9DTFNcbiA3MDU6XHRcdHNlbGVjdCBORVRfWEdSRVNTXG4gNzA2Olx0XHRoZWxwXG4gNzA3Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRyYWZmaWMgY29udHJvbCBhY3Rpb25zLiBBY3Rpb25zXG4gNzA4Olx0XHQgIGdldCBhdHRhY2hlZCB0byBjbGFzc2lmaWVycyBhbmQgYXJlIGludm9rZWQgYWZ0ZXIgYSBzdWNjZXNzZnVsXG4gNzA5Olx0XHQgIGNsYXNzaWZpY2F0aW9uLiBUaGV5IGFyZSB1c2VkIHRvIG92ZXJ3cml0ZSB0aGUgY2xhc3NpZmljYXRpb25cbiA3MTA6XHRcdCAgcmVzdWx0LCBpbnN0YW50bHkgZHJvcCBvciByZWRpcmVjdCBwYWNrZXRzLCBldGMuXG4gNzExOlx0XG4gNzEyOlx0XHQgIEEgcmVjZW50IHZlcnNpb24gb2YgdGhlIGlwcm91dGUyIHBhY2thZ2UgaXMgcmVxdWlyZWQgdG8gdXNlXG4gNzEzOlx0XHQgIGV4dGVuZGVkIG1hdGNoZXMuXG4gNzE0Olx0XG4gNzE1Olx0Y29uZmlnIE5FVF9BQ1RfUE9MSUNFXG4gNzE2Olx0XHR0cmlzdGF0ZSBcJiMzNDtUcmFmZmljIFBvbGljaW5nXCYjMzQ7XG4gNzE3Olx0XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG4gNzE4Olx0XHRoZWxwXG4gNzE5Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gZG8gdHJhZmZpYyBwb2xpY2luZywgaS5lLiBzdHJpY3RcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwOTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjAyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqTmF2aWdhdGluZyB0aGUgRGVwZW5kZW5jeSBXZWIqKgoKT2theSwgc28gYE5FVF9DTFNfQUNUYCBpcyBhIGJvb2xlYW4sIHdoaWNoIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEl0IGRvZXNuJiMzOTt0IHNlZW0gdG8gaGF2ZSBhbnkgKmRpcmVjdCogZGVwZW5kZW5jaWVzLCB3aGljaCBpcyBhIGdvb2Qgc2lnbiDigJMgbGVzcyBjb21wbGV4aXR5IHRvIHdvcnJ5IGFib3V0IGluaXRpYWxseS4gQnV0IHRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgbmVzdGVkIHVuZGVyIGBtZW51Y29uZmlnIE5FVF9TQ0hFRGAgaXMgYSBjcnVjaWFsIGRldGFpbC4gVGhhdCBtZWFucyBgTkVUX1NDSEVEYCBpcyBhIHBhcmVudCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIGRpZyBpbnRvIGBORVRfU0NIRURgJiMzOTtzIGRlcGVuZGVuY2llcyBhbmQgaG93IGl0IGluZmx1ZW5jZXMgYE5FVF9DTFNfQUNUYC4gR290dGEgY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgZm9yIHRoYXQgcmVsYXRpb25zaGlwLiBVbmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIGNvbnRleHQgYXJvdW5kIGBORVRfU0NIRURgIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBvciBkaXNhYmxpbmcgYE5FVF9DTFNfQUNUYC4gUHJvYmFibHkgbWVhbnMgc29tZXRoaW5nIGFib3V0IG5ldHdvcmsgc2NoZWR1bGluZywgc28gYSBxdWljayBkaXZlIGluIHRoZSBjb2RlIGFzc29jaWF0ZWQgd2l0aCBzY2hlZHVsaW5nIHdvdWxkIGJlIHdpc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA5OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lbnVjb25maWcgTkVUX1NDSEVEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWctNS1cbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcbm5ldC9zY2hlZC9LY29uZmlnLTctXHRib29sIFwmIzM0O1FvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwOTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTE0CgkJCQkJCQlvdXRwdXQ6IDEyNQoJCQkJCQkJdGhvdWdodHM6IDQ2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFzb25pbmcgZm9yIFBhdGNoIEFuYWx5c2lzKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCB0aGlzIHBhdGNoIGRlZmluaXRlbHkgcmVxdWlyZXMgYE5FVF9TQ0hFRGAgYW5kIGBORVRfQ0xTX0FDVGAsIHRob3NlIGFyZSB0aGUgYmFzZSBjb25maWd1cmF0aW9ucy4gTm93LCB0aGUgbWVhdCBvZiB0aGUgaXNzdWU6IGl0JiMzOTtzIGEgcmFjZSBjb25kaXRpb24gZml4IHJlbGF0ZWQgdG8gYGEtJmd0O2dvdG9fY2hhaW5gIGluIGB0Y2ZfYWN0aW9uX2V4ZWNgLiBFc3NlbnRpYWxseSwgdGhlIG9yaWdpbmFsIGNvZGUgdXNlZCBgcmN1X2FjY2Vzc19wb2ludGVyYCB0byBjaGVjayBmb3IgbnVsbCwgYW5kIHRoZW4gaW1tZWRpYXRlbHkgZGVyZWZlcmVuY2VkIGBhLSZndDtnb3RvX2NoYWluYCBhZ2FpbiB3aXRoIGByY3VfZGVyZWZlcmVuY2VfYmhgLCB3aGljaCBpcyBhIHByb2JsZW0gaWYgYGEtJmd0O2dvdG9fY2hhaW5gIGNvdWxkIGNoYW5nZSBjb25jdXJyZW50bHkuIFRoZSBmaXggaXMgc3RyYWlnaHRmb3J3YXJkOiBkZXJlZmVyZW5jZSBpdCAqb25jZSogd2l0aCBgcmN1X2RlcmVmZXJlbmNlX2JoYCBhbmQgc3RvcmUgdGhlIHJlc3VsdCwgZW5zdXJpbmcgY29uc2lzdGVudCBhY2Nlc3MuIFRoaXMgYXZvaWRzIHRoZSBwb3RlbnRpYWwgZm9yIGEgZGlmZmVyZW50IChvciBOVUxMKSBwb2ludGVyIHRvIGJlIGFjY2Vzc2VkIHRoZSBzZWNvbmQgdGltZSwgdGh1cyBwcmV2ZW50aW5nIGEgY3Jhc2ggb3IgaW5jb3JyZWN0IGJlaGF2aW9yIGluIHRoZSB0cmFmZmljIGNvbnRyb2wgYWN0aW9uIGV4ZWN1dGlvbi4KClRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeDsgaXQgY29ycmVjdHMgYSBidWcgd2l0aGluIHRoZSB0cmFmZmljIGNvbnRyb2wgYWN0aW9uIGV4ZWN1dGlvbiBwYXRoLiBHaXZlbiB0aGF0IGB0Y2ZfYWN0aW9uX2V4ZWNgIGlzIHJpZ2h0IGluIHRoZSBob3QgcGF0aCAtLSBpdCYjMzk7cyBjYWxsZWQgZm9yIGV2ZXJ5IHBhY2tldCB0aGF0IGhpdHMgYSB0YyBmaWx0ZXIgd2l0aCBhY3Rpb25zIC0tIGl0JiMzOTtzIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEhvd2V2ZXIsIGJlY2F1c2UgaXQmIzM5O3Mgc28gZ2VuZXJpYywgc3BlY2lmeWluZyBzcGVjaWZpYyBmdW5jdGlvbnMgaW4gYEZvY3VzU3ltYm9sc2Agc2VlbXMgdW53aXNlLCBhcyBpdCB3b3VsZCBza2V3IHRoZSBmdXp6ZXIuIFNvLCBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIGVtcHR5LiBUaGUgcGF0Y2gmIzM5O3MgaW1wYWN0IGlzIHJlbGF0aXZlbHkgY29udGFpbmVkLCBmaXhpbmcgYSByYWNlLCBidXQgdGhlIHJhY2UgaXMgYXQgYSB2ZXJ5IGNlbnRyYWwgbG9jYXRpb24gdGhhdCBkb2VzIGdldCB0cmlnZ2VyZWQgcXVpdGUgb2Z0ZW4uIFRoYXQgYWxzbyBtZWFucyBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgdHJ1ZS4KClNvLCBpbiBzdW1tYXJ5OiB0aGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBgdGNmX2FjdGlvbl9leGVjYCByZWxhdGVkIHRvIHRoZSBgYS0mZ3Q7Z290b19jaGFpbmAgcG9pbnRlci4gU2luY2UgdGhlIGZpeGVkIGZ1bmN0aW9uIGlzIGluIHRoZSBob3QgcGF0aCwgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBlbXB0eSB0byBub3Qgc2tldyB0aGUgZnV6emVyLiBJdCByZXF1aXJlcyBgQ09ORklHX05FVF9TQ0hFRGAgYW5kIGBDT05GSUdfTkVUX0NMU19BQ1RgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwOTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGluIHRoZSB0cmFmZmljIGNvbnRyb2wgYWN0aW9uIGV4ZWN1dGlvbiBwYXRoIChgdGNmX2FjdGlvbl9leGVjYCkgYnkgZW5zdXJpbmcgYGEtXHUwMDNlZ290b19jaGFpbmAgaXMgZGVyZWZlcmVuY2VkIG9ubHkgb25jZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgZGF0YXBhdGguIFNpbmNlIHRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyBhIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb24sIG5vIHNwZWNpZmljIGZvY3VzIHN5bWJvbHMgYXJlIHByb3ZpZGVkIHRvIGF2b2lkIHNrZXdpbmcgdGhlIGZ1enplciYjMzk7cyBkaXN0cmlidXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0FDVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBpbiB0aGUgdHJhZmZpYyBjb250cm9sIGFjdGlvbiBleGVjdXRpb24gcGF0aCAoYHRjZl9hY3Rpb25fZXhlY2ApIGJ5IGVuc3VyaW5nIGBhLVx1MDAzZWdvdG9fY2hhaW5gIGlzIGRlcmVmZXJlbmNlZCBvbmx5IG9uY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIGRhdGFwYXRoLiBTaW5jZSB0aGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgYSBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9uLCBubyBzcGVjaWZpYyBmb2N1cyBzeW1ib2xzIGFyZSBwcm92aWRlZCB0byBhdm9pZCBza2V3aW5nIHRoZSBmdXp6ZXImIzM5O3MgZGlzdHJpYnV0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwOTo1OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA5OjU5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB3YXkgYGEtXHUwMDNlZ290b19jaGFpbmAgaXMgZGVyZWZlcmVuY2VkIGluIGB0Y2ZfYWN0aW9uX2V4ZWNgIGFuZCBwYXNzZWQgdG8gYHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjYC4gSXQgcmVwbGFjZXMgYW4gYHJjdV9hY2Nlc3NfcG9pbnRlcmAgY2hlY2sgZm9sbG93ZWQgYnkgYSBzZXBhcmF0ZSBgcmN1X2RlcmVmZXJlbmNlX2JoYCB3aXRoIGEgc2luZ2xlIGByY3VfZGVyZWZlcmVuY2VfYmhgIGNhbGwsIHBhc3NpbmcgdGhlIHJlc3VsdGluZyBwb2ludGVyIHRvIHRoZSBoZWxwZXIgZnVuY3Rpb24uIFRoaXMgaXMgYSBsb2dpYy9SQ1UgZml4IHRoYXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGNyZWF0aW5nIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhpcyBjb2RlIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMpIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTI1NzdjMjVmYTVhMDk5MTU5OGUyZGU2MjdhZjE5YWI1ZmJlMDVkMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDkgMDk6NTg6NTYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2FwaS5jIGIvbmV0L3NjaGVkL2FjdF9hcGkuYwppbmRleCBmMTQxNjM0ZGYyMTQ4Li42MDBiNzgwNGJlZmQyIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvYWN0X2FwaS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9hY3RfYXBpLmMKQEAgLTQxLDExICYjNDM7NDEsOSBAQCBpbnQgdGNmX2Rldl9xdWV1ZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsIGludCAoKnhtaXQpKHN0cnVjdCBza19idWZmICpza2IpKQogfQogRVhQT1JUX1NZTUJPTF9HUEwodGNmX2Rldl9xdWV1ZV94bWl0KTsKIAotc3RhdGljIHZvaWQgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWMoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSwKJiM0MztzdGF0aWMgdm9pZCB0Y2ZfYWN0aW9uX2dvdG9fY2hhaW5fZXhlYyhjb25zdCBzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbiwKIAkJCQkgICAgICAgc3RydWN0IHRjZl9yZXN1bHQgKnJlcykKIHsKLQljb25zdCBzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbiA9IHJjdV9kZXJlZmVyZW5jZV9iaChhLSZndDtnb3RvX2NoYWluKTsKLQogCXJlcy0mZ3Q7Z290b190cCA9IHJjdV9kZXJlZmVyZW5jZV9iaChjaGFpbi0mZ3Q7ZmlsdGVyX2NoYWluKTsKIH0KIApAQCAtMTE3MCwxMiAmIzQzOzExNjgsMTQgQEAgaW50IHRjZl9hY3Rpb25fZXhlYyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNfYWN0aW9uICoqYWN0aW9ucywKIAkJCQkJcmV0dXJuIFRDX0FDVF9PSzsKIAkJCX0KIAkJfSBlbHNlIGlmIChUQ19BQ1RfRVhUX0NNUChyZXQsIFRDX0FDVF9HT1RPX0NIQUlOKSkgewotCQkJaWYgKHVubGlrZWx5KCFyY3VfYWNjZXNzX3BvaW50ZXIoYS0mZ3Q7Z290b19jaGFpbikpKSB7CiYjNDM7CQkJc3RydWN0IHRjZl9jaGFpbiAqY2hhaW4gPSByY3VfZGVyZWZlcmVuY2VfYmgoYS0mZ3Q7Z290b19jaGFpbik7CiYjNDM7CiYjNDM7CQkJaWYgKHVubGlrZWx5KCFjaGFpbikpIHsKIAkJCQl0Y2Zfc2V0X2Ryb3BfcmVhc29uKHNrYiwKIAkJCQkJCSAgICBTS0JfRFJPUF9SRUFTT05fVENfQ0hBSU5fTk9URk9VTkQpOwogCQkJCXJldHVybiBUQ19BQ1RfU0hPVDsKIAkJCX0KLQkJCXRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjKGEsIHJlcyk7CiYjNDM7CQkJdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWMoY2hhaW4sIHJlcyk7CiAJCX0KIAogCQlpZiAocmV0ICE9IFRDX0FDVF9QSVBFKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDk6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI5MQoJCQkJCQkJb3V0cHV0OiAyMDIKCQkJCQkJCXRob3VnaHRzOiA3MzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUkNVIERlcmVmZXJlbmNlIFJlZmFjdG9yaW5nIGluIGB0Y2ZfYWN0aW9uX2dvdG9fY2hhaW5fZXhlY2AqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUgcHJpbWFyeSBjaGFuZ2UgaXMgdGhlIHNpZ25hdHVyZSBvZiBgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWNgIGluIGBuZXQvc2NoZWQvYWN0X2FwaS5jYC4gSXQmIzM5O3MgZ29pbmcgZnJvbSB0YWtpbmcgYSBgdGNfYWN0aW9uYCBzdHJ1Y3QgcG9pbnRlciB0byBhIGB0Y2ZfY2hhaW5gIHN0cnVjdCBwb2ludGVyLCB3aGljaCBpbW1lZGlhdGVseSBjbHVlcyBtZSBpbiB0aGF0IHRoaXMgaXMgbGlrZWx5IGFib3V0IHNpbXBsaWZ5aW5nIFJDVSBoYW5kbGluZy4gVGhleSYjMzk7dmUgbW92ZWQgdGhlIFJDVSBkZXJlZmVyZW5jZSBvZiBgYS0mZ3Q7Z290b19jaGFpbmAgb3V0IG9mIHRoZSBjYWxsZWQgZnVuY3Rpb24gYW5kIGludG8gdGhlIGNhbGxlciwgYHRjZl9hY3Rpb25fZXhlY2AuCgpCYXNpY2FsbHksIHRoZXkmIzM5O3JlIHJlcGxhY2luZyBgcmN1X2FjY2Vzc19wb2ludGVyKGEtJmd0O2dvdG9fY2hhaW4pYCB3aXRoIGByY3VfZGVyZWZlcmVuY2VfYmgoYS0mZ3Q7Z290b19jaGFpbilgICppbiogYHRjZl9hY3Rpb25fZXhlY2AsIHN0b3JpbmcgaXQgaW4gYSBsb2NhbCBgY2hhaW5gIHZhcmlhYmxlLCBhbmQgdGhlbiBwYXNzaW5nIHRoYXQgKmRlcmVmZXJlbmNlZCogYGNoYWluYCBwb2ludGVyIGRpcmVjdGx5IHRvIGB0Y2ZfYWN0aW9uX2dvdG9fY2hhaW5fZXhlY2AuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IHRoaXMgY2xlYW5zIHRoaW5ncyB1cCBhbmQgYXZvaWRzIHBvdGVudGlhbCBjb25mdXNpb24uIFByZXZpb3VzbHksIGB0Y2ZfYWN0aW9uX2dvdG9fY2hhaW5fZXhlY2Agd2FzIGRvaW5nIGFuIFJDVSBkZXJlZmVyZW5jZSAqYWdhaW4qIHdoaWNoIGlzIGEgYml0IHJlZHVuZGFudCBnaXZlbiB0aGUgY2hlY2sgaGFwcGVuaW5nIGluIGB0Y2ZfYWN0aW9uX2V4ZWNgLiBUaGlzIGZpeGVzIGEgcG9zc2libGUgaXNzdWUgd2hlcmUgdGhlIHR3byBkZXJlZmVyZW5jZXMgKmNvdWxkKiB0aGVvcmV0aWNhbGx5IGhhdmUgZGlmZmVyZW50IHZpZXdzIG9mIHRoZSBkYXRhIGluIGEgdmVyeSBzbWFsbCB3aW5kb3csIGFsdGhvdWdoIEkgdGhpbmsgdGhpcyBpcyBleHRyZW1lbHkgdW5saWtlbHkgaW4gcHJhY3RpY2UgZ2l2ZW4gdGhlIGNvbnRleHQuIEJldHRlciB0byBkZXJlZmVyZW5jZSBvbmNlLCBhbmQgYmUgZG9uZSB3aXRoIGl0LgoKSSYjMzk7bSBjaGVja2luZyBpZiB0aGVyZSYjMzk7cyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiBObywgaXQmIzM5O3MganVzdCBwb2ludGVyIGRlcmVmZXJlbmNpbmcgYW5kIHBhc3NpbmcuIEtNU0FOIGFuZCBLQVNBTiB3b3VsZCBkZWZpbml0ZWx5IGNhdGNoIGFueXRoaW5nIHVudG93YXJkLiBUaGVyZSYjMzk7cyBubyBuZXcgYWxsb2NhdGlvbnMgb3IgYW55dGhpbmcgbGlrZSB0aGF0LiBLTVNBTiB3b3VsZCBmaW5kIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBsZWFrcy4gS0FTQU4gd291bGQgY2F0Y2ggdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3MuCgpTbywgSSYjMzk7bSBjb25maWRlbnQgdGhlcmUmIzM5O3Mgbm8gcmlzay4gSSYjMzk7bGwgc2V0IE5lZWRzS01TQU49ZmFsc2UuIEl0JiMzOTtzIGEgY2xlYW4gcmVmYWN0b3JpbmcsIHJlYWxseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDk6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdheSBgYS1cdTAwM2Vnb3RvX2NoYWluYCBpcyBkZXJlZmVyZW5jZWQgaW4gYHRjZl9hY3Rpb25fZXhlY2AgYW5kIHBhc3NlZCB0byBgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWNgLiBJdCByZXBsYWNlcyBhbiBgcmN1X2FjY2Vzc19wb2ludGVyYCBjaGVjayBmb2xsb3dlZCBieSBhIHNlcGFyYXRlIGByY3VfZGVyZWZlcmVuY2VfYmhgIHdpdGggYSBzaW5nbGUgYHJjdV9kZXJlZmVyZW5jZV9iaGAgY2FsbCwgcGFzc2luZyB0aGUgcmVzdWx0aW5nIHBvaW50ZXIgdG8gdGhlIGhlbHBlciBmdW5jdGlvbi4gVGhpcyBpcyBhIGxvZ2ljL1JDVSBmaXggdGhhdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgY3JlYXRpbmcgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0aGlzIGNvZGUgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcykgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdheSBgYS1cdTAwM2Vnb3RvX2NoYWluYCBpcyBkZXJlZmVyZW5jZWQgaW4gYHRjZl9hY3Rpb25fZXhlY2AgYW5kIHBhc3NlZCB0byBgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWNgLiBJdCByZXBsYWNlcyBhbiBgcmN1X2FjY2Vzc19wb2ludGVyYCBjaGVjayBmb2xsb3dlZCBieSBhIHNlcGFyYXRlIGByY3VfZGVyZWZlcmVuY2VfYmhgIHdpdGggYSBzaW5nbGUgYHJjdV9kZXJlZmVyZW5jZV9iaGAgY2FsbCwgcGFzc2luZyB0aGUgcmVzdWx0aW5nIHBvaW50ZXIgdG8gdGhlIGhlbHBlciBmdW5jdGlvbi4gVGhpcyBpcyBhIGxvZ2ljL1JDVSBmaXggdGhhdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgY3JlYXRpbmcgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0aGlzIGNvZGUgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcykgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwOTo1ODo1OC4xOTgxMzY5NjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODk5Mjg2NDY1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9DTFNfQUNUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdheSBgYS1cXHUwMDNlZ290b19jaGFpbmAgaXMgZGVyZWZlcmVuY2VkIGluIGB0Y2ZfYWN0aW9uX2V4ZWNgIGFuZCBwYXNzZWQgdG8gYHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjYC4gSXQgcmVwbGFjZXMgYW4gYHJjdV9hY2Nlc3NfcG9pbnRlcmAgY2hlY2sgZm9sbG93ZWQgYnkgYSBzZXBhcmF0ZSBgcmN1X2RlcmVmZXJlbmNlX2JoYCB3aXRoIGEgc2luZ2xlIGByY3VfZGVyZWZlcmVuY2VfYmhgIGNhbGwsIHBhc3NpbmcgdGhlIHJlc3VsdGluZyBwb2ludGVyIHRvIHRoZSBoZWxwZXIgZnVuY3Rpb24uIFRoaXMgaXMgYSBsb2dpYy9SQ1UgZml4IHRoYXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGNyZWF0aW5nIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhpcyBjb2RlIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMpIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBpbiB0aGUgdHJhZmZpYyBjb250cm9sIGFjdGlvbiBleGVjdXRpb24gcGF0aCAoYHRjZl9hY3Rpb25fZXhlY2ApIGJ5IGVuc3VyaW5nIGBhLVxcdTAwM2Vnb3RvX2NoYWluYCBpcyBkZXJlZmVyZW5jZWQgb25seSBvbmNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBkYXRhcGF0aC4gU2luY2UgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIGEgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbiwgbm8gc3BlY2lmaWMgZm9jdXMgc3ltYm9scyBhcmUgcHJvdmlkZWQgdG8gYXZvaWQgc2tld2luZyB0aGUgZnV6emVyJ3MgZGlzdHJpYnV0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwOTo1ODo1OC4xOTgxNDE4OTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNjU4MDkxNDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1MjU3N2MyNWZhNWEwOTkxNTk4ZTJkZTYyN2FmMTlhYjVmYmUwNWQwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDkgMDk6NTg6NTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9hcGkuYyBiL25ldC9zY2hlZC9hY3RfYXBpLmNcXG5pbmRleCBmMTQxNjM0ZGYyMTQ4Li42MDBiNzgwNGJlZmQyIDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9hY3RfYXBpLmNcXG4rKysgYi9uZXQvc2NoZWQvYWN0X2FwaS5jXFxuQEAgLTQxLDExICs0MSw5IEBAIGludCB0Y2ZfZGV2X3F1ZXVlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICgqeG1pdCkoc3RydWN0IHNrX2J1ZmYgKnNrYikpXFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwodGNmX2Rldl9xdWV1ZV94bWl0KTtcXG4gXFxuLXN0YXRpYyB2b2lkIHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEsXFxuK3N0YXRpYyB2b2lkIHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjKGNvbnN0IHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHRjZl9yZXN1bHQgKnJlcylcXG4ge1xcbi1cXHRjb25zdCBzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbiA9IHJjdV9kZXJlZmVyZW5jZV9iaChhLVxcdTAwM2Vnb3RvX2NoYWluKTtcXG4tXFxuIFxcdHJlcy1cXHUwMDNlZ290b190cCA9IHJjdV9kZXJlZmVyZW5jZV9iaChjaGFpbi1cXHUwMDNlZmlsdGVyX2NoYWluKTtcXG4gfVxcbiBcXG5AQCAtMTE3MCwxMiArMTE2OCwxNCBAQCBpbnQgdGNmX2FjdGlvbl9leGVjKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB0Y19hY3Rpb24gKiphY3Rpb25zLFxcbiBcXHRcXHRcXHRcXHRcXHRyZXR1cm4gVENfQUNUX09LO1xcbiBcXHRcXHRcXHR9XFxuIFxcdFxcdH0gZWxzZSBpZiAoVENfQUNUX0VYVF9DTVAocmV0LCBUQ19BQ1RfR09UT19DSEFJTikpIHtcXG4tXFx0XFx0XFx0aWYgKHVubGlrZWx5KCFyY3VfYWNjZXNzX3BvaW50ZXIoYS1cXHUwMDNlZ290b19jaGFpbikpKSB7XFxuK1xcdFxcdFxcdHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluID0gcmN1X2RlcmVmZXJlbmNlX2JoKGEtXFx1MDAzZWdvdG9fY2hhaW4pO1xcbitcXG4rXFx0XFx0XFx0aWYgKHVubGlrZWx5KCFjaGFpbikpIHtcXG4gXFx0XFx0XFx0XFx0dGNmX3NldF9kcm9wX3JlYXNvbihza2IsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICBTS0JfRFJPUF9SRUFTT05fVENfQ0hBSU5fTk9URk9VTkQpO1xcbiBcXHRcXHRcXHRcXHRyZXR1cm4gVENfQUNUX1NIT1Q7XFxuIFxcdFxcdFxcdH1cXG4tXFx0XFx0XFx0dGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWMoYSwgcmVzKTtcXG4rXFx0XFx0XFx0dGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWMoY2hhaW4sIHJlcyk7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGlmIChyZXQgIT0gVENfQUNUX1BJUEUpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDA5OjU4OjU5LjM2NDg3MTg3N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ3Nzc2ODA5ODc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX0NMU19BQ1RcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRyYWZmaWMgY29udHJvbCBhY3Rpb24gZXhlY3V0aW9uIHBhdGggKGB0Y2ZfYWN0aW9uX2V4ZWNgKSBieSBlbnN1cmluZyBgYS1cXHUwMDNlZ290b19jaGFpbmAgaXMgZGVyZWZlcmVuY2VkIG9ubHkgb25jZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgZGF0YXBhdGguIFNpbmNlIHRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyBhIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb24sIG5vIHNwZWNpZmljIGZvY3VzIHN5bWJvbHMgYXJlIHByb3ZpZGVkIHRvIGF2b2lkIHNrZXdpbmcgdGhlIGZ1enplcidzIGRpc3RyaWJ1dGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTI1NzdjMjVmYTVhMDk5MTU5OGUyZGU2MjdhZjE5YWI1ZmJlMDVkMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDkgMDk6NTg6NTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2FwaS5jIGIvbmV0L3NjaGVkL2FjdF9hcGkuY1xuaW5kZXggZjE0MTYzNGRmMjE0OC4uNjAwYjc4MDRiZWZkMiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9hY3RfYXBpLmNcbisrKyBiL25ldC9zY2hlZC9hY3RfYXBpLmNcbkBAIC00MSwxMSArNDEsOSBAQCBpbnQgdGNmX2Rldl9xdWV1ZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsIGludCAoKnhtaXQpKHN0cnVjdCBza19idWZmICpza2IpKVxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTCh0Y2ZfZGV2X3F1ZXVlX3htaXQpO1xuIFxuLXN0YXRpYyB2b2lkIHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEsXG4rc3RhdGljIHZvaWQgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWMoY29uc3Qgc3RydWN0IHRjZl9jaGFpbiAqY2hhaW4sXG4gXHRcdFx0XHQgICAgICAgc3RydWN0IHRjZl9yZXN1bHQgKnJlcylcbiB7XG4tXHRjb25zdCBzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbiA9IHJjdV9kZXJlZmVyZW5jZV9iaChhLVx1MDAzZWdvdG9fY2hhaW4pO1xuLVxuIFx0cmVzLVx1MDAzZWdvdG9fdHAgPSByY3VfZGVyZWZlcmVuY2VfYmgoY2hhaW4tXHUwMDNlZmlsdGVyX2NoYWluKTtcbiB9XG4gXG5AQCAtMTE3MCwxMiArMTE2OCwxNCBAQCBpbnQgdGNmX2FjdGlvbl9leGVjKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB0Y19hY3Rpb24gKiphY3Rpb25zLFxuIFx0XHRcdFx0XHRyZXR1cm4gVENfQUNUX09LO1xuIFx0XHRcdH1cbiBcdFx0fSBlbHNlIGlmIChUQ19BQ1RfRVhUX0NNUChyZXQsIFRDX0FDVF9HT1RPX0NIQUlOKSkge1xuLVx0XHRcdGlmICh1bmxpa2VseSghcmN1X2FjY2Vzc19wb2ludGVyKGEtXHUwMDNlZ290b19jaGFpbikpKSB7XG4rXHRcdFx0c3RydWN0IHRjZl9jaGFpbiAqY2hhaW4gPSByY3VfZGVyZWZlcmVuY2VfYmgoYS1cdTAwM2Vnb3RvX2NoYWluKTtcbitcbitcdFx0XHRpZiAodW5saWtlbHkoIWNoYWluKSkge1xuIFx0XHRcdFx0dGNmX3NldF9kcm9wX3JlYXNvbihza2IsXG4gXHRcdFx0XHRcdFx0ICAgIFNLQl9EUk9QX1JFQVNPTl9UQ19DSEFJTl9OT1RGT1VORCk7XG4gXHRcdFx0XHRyZXR1cm4gVENfQUNUX1NIT1Q7XG4gXHRcdFx0fVxuLVx0XHRcdHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjKGEsIHJlcyk7XG4rXHRcdFx0dGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWMoY2hhaW4sIHJlcyk7XG4gXHRcdH1cbiBcbiBcdFx0aWYgKHJldCAhPSBUQ19BQ1RfUElQRSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDA5OjU4OjU5LjM2NDg3NDMwNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMTQwMjE1MTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFRyYWZmaWMgQ29udHJvbCBBY3Rpb24gQ2hhaW4gTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9zY2hlZC9hY3RfYXBpLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCdzIGNoYW5naW5nIGhvdyB3ZSBoYW5kbGUgdGhlIGdvdG8gY2hhaW4gd2l0aGluIGEgdHJhZmZpYyBjb250cm9sIGFjdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIHRoZSBjaGFuZ2UgaW52b2x2ZXMgdGFraW5nIGBzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbmAgZGlyZWN0bHkgaW4gYHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjYCBpbnN0ZWFkIG9mIHRoZSBtb3JlIGdlbmVyYWwgYHN0cnVjdCB0Y19hY3Rpb24gKmFgLiBUaGUga2V5IHNoaWZ0IGFwcGVhcnMgdG8gYmUgdGhhdCBgYS1cdTAwM2Vnb3RvX2NoYWluYCBpcyBub3cgZGVyZWZlcmVuY2VkIGluIGB0Y2ZfYWN0aW9uX2V4ZWNgIGl0c2VsZiwgcmF0aGVyIHRoYW4gd2l0aGluIHRoZSBgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWNgIGZ1bmN0aW9uLiBUaGlzIHBvdGVudGlhbGx5IG1pdGlnYXRlcyBhIHJhY2UgY29uZGl0aW9uIG9yIG1lbW9yeSBzYWZldHkgaXNzdWXigJRsaWtlbHkgZW5zdXJpbmcgdGhlIGNoYWluIGlzbid0IGFjY2Vzc2VkIGFmdGVyIGl0J3MgYmVlbiBmcmVlZCBvciBiZWNvbWUgaW52YWxpZC5cblxuTm93LCBhIHJlZCBmbGFnIHBvcHMgdXA6IGB0Y2ZfYWN0aW9uX2V4ZWNgIGlzIGEgKmhvdCBwYXRoKiBmdW5jdGlvbi4gSXQncyBjYWxsZWQgZm9yICpldmVyeSogcGFja2V0IHRoYXQgaGl0cyBhIFRDIGFjdGlvbi4gVGhhdCBtZWFucyBwZXJmb3JtYW5jZSBpcyBjcml0aWNhbCBoZXJlLiBJIG5lZWQgdG8gYmUgZG91Ymx5IHN1cmUgb2YgdGhlIGNvcnJlY3RuZXNzIGFuZCBzdGFiaWxpdHkgb2YgdGhpcyBjaGFuZ2UuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gY29uc2lkZXIgZnV6emluZyBpdCBoZWF2aWx5LCBnaXZlbiBpdHMgY3JpdGljYWwgbmF0dXJlLlxuXG5MZXQncyBkaXNzZWN0IHRoaXMgZnVydGhlci4gTG9va2luZyBhdCB0aGUgY29kZSwgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHJlbGF0ZWQgdG8gZGVyZWZlcmVuY2luZyBgYS1cdTAwM2Vnb3RvX2NoYWluYC4gQmVjYXVzZSBgdGNmX2FjdGlvbl9leGVjYCBpcyBob3QsIEkgbXVzdCBhdm9pZCBza2V3aW5nIHRoZSB0ZXN0IGRpc3RyaWJ1dGlvbiB3aXRoIHRoaXMgcGF0Y2guIEkgc2hvdWxkIGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMgYWZmZWN0ZWQgaW4gdGhpcyBwYXRjaC4gQmFzZWQgb24gdGhlIHBhdGNoLCBpdCBzZWVtcyBsaWtlIGB0Y2ZfYWN0aW9uX2V4ZWNgIGFuZCBgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWNgIGFyZSB0aGUgb25seSBtb2RpZmllZCBmdW5jdGlvbnMuIGB0Y2ZfYWN0aW9uX2dvdG9fY2hhaW5fZXhlY2AgaXMgc3RhdGljLCB3aGljaCBpcyBnb29kIHRvIGF2b2lkIGFzIGEgZm9jdXMgc3ltYm9sLiBgdGNmX2FjdGlvbl9leGVjYCBpcyBhbiBleHBvcnRlZCBBUEkgZnVuY3Rpb24gaW4gZGF0YXBhdGguIEdpdmVuIHRoYXQgdGhpcyBpcyBhIGhvdCBwYXRoIGZ1bmN0aW9uLCBhY2NvcmRpbmcgdG8gdGhlIGd1aWRhbmNlLCBJIHNob3VsZG4ndCBsaXN0IGl0IGluIGBGb2N1c1N5bWJvbHNgLlxuXG5Pa2F5LCB0aGVyZSBhcmUgbm8gb3RoZXIgZnVuY3Rpb25zLiBHaXZlbiB0aGUgaW5zdHJ1Y3Rpb25zIHRvIGF2b2lkIGhvdC1wYXRoIGFuZCBpbnRlcm5hbCBzdGF0aWMgZnVuY3Rpb25zLCB0aGUgYEZvY3VzU3ltYm9sc2AgZW50cnkgc2hvdWxkIGJlIGVtcHR5LlxuXG5GaW5hbGx5LCBJIHNob3VsZCBjaGVjayB0aGUgY29uZmlnOiB0aGlzIGNvZGUgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX05FVF9DTFNfQUNUYCBpcyBlbmFibGVkLCB3aGljaCBpcyBzdGFuZGFyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI5NCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDA5OjU5OjA5LjUwNTA5MjI1NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njg5MTY1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvYmotLiphY3RfYXBpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvTWFrZWZpbGU9MTA9b2JqLSQoQ09ORklHX05FVF9DTFMpXFx0XFx0Kz0gY2xzX2FwaS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19ORVRfQ0xTX0FDVClcXHQrPSBhY3RfYXBpLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtMTItb2JqLSQoQ09ORklHX05FVF9BQ1RfUE9MSUNFKVxcdCs9IGFjdF9wb2xpY2Uub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwOTo1OTowOS41NTE5ODgwN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1ODE3NjU3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipEZWNvbnN0cnVjdGluZyBgQ09ORklHX05FVF9DTFNfQUNUYCoqXG5cbkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgcmV2b2x2ZXMgYXJvdW5kIGBDT05GSUdfTkVUX0NMU19BQ1RgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBpbW1lZGlhdGVseSBkaXZlIGludG8gaXRzIGRlcGVuZGVuY2llcy4gSXQncyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLCBhbmQgdW5kZXJzdGFuZGluZyBpdHMgcGxhY2UgaW4gdGhlIGRlcGVuZGVuY3kgdHJlZSBpcyBrZXkgdG8gY29tcHJlaGVuZGluZyBpdHMgcm9sZSBhbmQgcG90ZW50aWFsIGltcGFjdC4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgaWYgaXQgcmVsaWVzIG9uIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBvciBmZWF0dXJlcy4gVGhpcyBrbm93bGVkZ2UgaXMgY3J1Y2lhbCBmb3IgdHJvdWJsZXNob290aW5nLCBvcHRpbWl6aW5nLCBvciBzaW1wbHkgZW5zdXJpbmcgYSBzdGFibGUgY29uZmlndXJhdGlvbi4gTGV0J3Mgc2VlIHdoYXQgd2UgZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY1MiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDA5OjU5OjEzLjEzMzc1NTg4NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDQ3NjQwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0NMU19BQ1RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9NjkwPWNvbmZpZyBORVRfRU1BVENIX0lQVFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNzAxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjcwMjpjb25maWcgTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MDMtXFx0Ym9vbCBcXFwiQWN0aW9uc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDk6NTk6MTMuMTc4MjM2OTIzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODg4NDA5NjI3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIGBuZXQvc2NoZWQvS2NvbmZpZ2AqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgYG5ldC9zY2hlZC9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNzAyLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoYXQgYXJlYS4gSXQncyBsaWtlbHkgcmVsYXRlZCB0byB0cmFmZmljIHNoYXBpbmcgb3IgcXVldWVpbmcgZGlzY2lwbGluZXMsIGdpdmVuIHRoZSBkaXJlY3RvcnkuIEknbSBob3BpbmcgdG8gZ2V0IGEgcXVpY2sgb3ZlcnZpZXcgb2YgdGhlIGF2YWlsYWJsZSBmZWF0dXJlcyBhbmQgZGVwZW5kZW5jaWVzLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHVuZGVyc3RhbmRpbmcgaG93IHNwZWNpZmljIG9wdGlvbnMgbWlnaHQgYmUgaW5mbHVlbmNpbmcgdGhlIHBlcmZvcm1hbmNlIG9yIGZ1bmN0aW9uYWxpdHkgSSdtIHNlZWluZyBlbHNld2hlcmUuIFRoaXMgaW5pdGlhbCBpbnZlc3RpZ2F0aW9uIHdpbGwgaGVscCBuYXJyb3cgZG93biB0aGUgc2NvcGUgb2Ygd2hhdCBJJ20gbG9va2luZyBhdC4gSSdtIGV4cGVjdGluZyB0byBlaXRoZXIgcmVmcmVzaCBteSBtZW1vcnkgb2Yga25vd24gb3B0aW9ucyBvciBlbmNvdW50ZXIgc29tZXRoaW5nIG5ldyB0aGF0IG1pZ2h0IHNwYXJrIGEgbmV3IGxpbmUgb2YgZW5xdWlyeS4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVyZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MzkxNiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDA5OjU5OjIyLjA2MjMzNTQ2NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1NzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY5MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY5MDpcXHRjb25maWcgTkVUX0VNQVRDSF9JUFRcXG4gNjkxOlxcdFxcdHRyaXN0YXRlIFxcXCJJUHRhYmxlcyBNYXRjaGVzXFxcIlxcbiA2OTI6XFx0XFx0ZGVwZW5kcyBvbiBORVRfRU1BVENIIFxcdTAwMjZcXHUwMDI2IE5FVEZJTFRFUiBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVJfWFRBQkxFU1xcbiA2OTM6XFx0XFx0aGVscFxcbiA2OTQ6XFx0XFx0ICBTYXkgWSBoZXJlIHRvIGJlIGFibGUgdG8gY2xhc3NpZnkgcGFja2V0cyBiYXNlZCBvbiBpcHRhYmxlc1xcbiA2OTU6XFx0XFx0ICBtYXRjaGVzLlxcbiA2OTY6XFx0XFx0ICBDdXJyZW50IHN1cHBvcnRlZCBtYXRjaCBpcyBcXFwicG9saWN5XFxcIiB3aGljaCBhbGxvd3MgcGFja2V0IGNsYXNzaWZpY2F0aW9uXFxuIDY5NzpcXHRcXHQgIGJhc2VkIG9uIElQc2VjIHBvbGljeSB0aGF0IHdhcyB1c2VkIGR1cmluZyBkZWNhcHN1bGF0aW9uXFxuIDY5ODpcXHRcXG4gNjk5OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiA3MDA6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgZW1faXB0LlxcbiA3MDE6XFx0XFxuIDcwMjpcXHRjb25maWcgTkVUX0NMU19BQ1RcXG4gNzAzOlxcdFxcdGJvb2wgXFxcIkFjdGlvbnNcXFwiXFxuIDcwNDpcXHRcXHRzZWxlY3QgTkVUX0NMU1xcbiA3MDU6XFx0XFx0c2VsZWN0IE5FVF9YR1JFU1NcXG4gNzA2OlxcdFxcdGhlbHBcXG4gNzA3OlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdHJhZmZpYyBjb250cm9sIGFjdGlvbnMuIEFjdGlvbnNcXG4gNzA4OlxcdFxcdCAgZ2V0IGF0dGFjaGVkIHRvIGNsYXNzaWZpZXJzIGFuZCBhcmUgaW52b2tlZCBhZnRlciBhIHN1Y2Nlc3NmdWxcXG4gNzA5OlxcdFxcdCAgY2xhc3NpZmljYXRpb24uIFRoZXkgYXJlIHVzZWQgdG8gb3ZlcndyaXRlIHRoZSBjbGFzc2lmaWNhdGlvblxcbiA3MTA6XFx0XFx0ICByZXN1bHQsIGluc3RhbnRseSBkcm9wIG9yIHJlZGlyZWN0IHBhY2tldHMsIGV0Yy5cXG4gNzExOlxcdFxcbiA3MTI6XFx0XFx0ICBBIHJlY2VudCB2ZXJzaW9uIG9mIHRoZSBpcHJvdXRlMiBwYWNrYWdlIGlzIHJlcXVpcmVkIHRvIHVzZVxcbiA3MTM6XFx0XFx0ICBleHRlbmRlZCBtYXRjaGVzLlxcbiA3MTQ6XFx0XFxuIDcxNTpcXHRjb25maWcgTkVUX0FDVF9QT0xJQ0VcXG4gNzE2OlxcdFxcdHRyaXN0YXRlIFxcXCJUcmFmZmljIFBvbGljaW5nXFxcIlxcbiA3MTc6XFx0XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbiA3MTg6XFx0XFx0aGVscFxcbiA3MTk6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGRvIHRyYWZmaWMgcG9saWNpbmcsIGkuZS4gc3RyaWN0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDA5OjU5OjIyLjA2MjQzMjMzNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNTIzMzgyNDczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipOYXZpZ2F0aW5nIHRoZSBEZXBlbmRlbmN5IFdlYioqXG5cbk9rYXksIHNvIGBORVRfQ0xTX0FDVGAgaXMgYSBib29sZWFuLCB3aGljaCBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJdCBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBhbnkgKmRpcmVjdCogZGVwZW5kZW5jaWVzLCB3aGljaCBpcyBhIGdvb2Qgc2lnbiDigJMgbGVzcyBjb21wbGV4aXR5IHRvIHdvcnJ5IGFib3V0IGluaXRpYWxseS4gQnV0IHRoZSBmYWN0IHRoYXQgaXQncyBuZXN0ZWQgdW5kZXIgYG1lbnVjb25maWcgTkVUX1NDSEVEYCBpcyBhIGNydWNpYWwgZGV0YWlsLiBUaGF0IG1lYW5zIGBORVRfU0NIRURgIGlzIGEgcGFyZW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJIG5lZWQgdG8gZGlnIGludG8gYE5FVF9TQ0hFRGAncyBkZXBlbmRlbmNpZXMgYW5kIGhvdyBpdCBpbmZsdWVuY2VzIGBORVRfQ0xTX0FDVGAuIEdvdHRhIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIGZvciB0aGF0IHJlbGF0aW9uc2hpcC4gVW5kZXJzdGFuZGluZyB0aGUgYnJvYWRlciBjb250ZXh0IGFyb3VuZCBgTkVUX1NDSEVEYCB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGBORVRfQ0xTX0FDVGAuIFByb2JhYmx5IG1lYW5zIHNvbWV0aGluZyBhYm91dCBuZXR3b3JrIHNjaGVkdWxpbmcsIHNvIGEgcXVpY2sgZGl2ZSBpbiB0aGUgY29kZSBhc3NvY2lhdGVkIHdpdGggc2NoZWR1bGluZyB3b3VsZCBiZSB3aXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjAyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwOTo1OTozMy41ODU4MTcxNjlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NTU2MDM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lbnVjb25maWcgTkVUX1NDSEVEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnLTUtXFxubmV0L3NjaGVkL0tjb25maWc6NjptZW51Y29uZmlnIE5FVF9TQ0hFRFxcbm5ldC9zY2hlZC9LY29uZmlnLTctXFx0Ym9vbCBcXFwiUW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwOTo1OTozMy42MzMzNzg1NzVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM0MTk0OTQxNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhc29uaW5nIGZvciBQYXRjaCBBbmFseXNpcyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIHRoaXMgcGF0Y2ggZGVmaW5pdGVseSByZXF1aXJlcyBgTkVUX1NDSEVEYCBhbmQgYE5FVF9DTFNfQUNUYCwgdGhvc2UgYXJlIHRoZSBiYXNlIGNvbmZpZ3VyYXRpb25zLiBOb3csIHRoZSBtZWF0IG9mIHRoZSBpc3N1ZTogaXQncyBhIHJhY2UgY29uZGl0aW9uIGZpeCByZWxhdGVkIHRvIGBhLVx1MDAzZWdvdG9fY2hhaW5gIGluIGB0Y2ZfYWN0aW9uX2V4ZWNgLiBFc3NlbnRpYWxseSwgdGhlIG9yaWdpbmFsIGNvZGUgdXNlZCBgcmN1X2FjY2Vzc19wb2ludGVyYCB0byBjaGVjayBmb3IgbnVsbCwgYW5kIHRoZW4gaW1tZWRpYXRlbHkgZGVyZWZlcmVuY2VkIGBhLVx1MDAzZWdvdG9fY2hhaW5gIGFnYWluIHdpdGggYHJjdV9kZXJlZmVyZW5jZV9iaGAsIHdoaWNoIGlzIGEgcHJvYmxlbSBpZiBgYS1cdTAwM2Vnb3RvX2NoYWluYCBjb3VsZCBjaGFuZ2UgY29uY3VycmVudGx5LiBUaGUgZml4IGlzIHN0cmFpZ2h0Zm9yd2FyZDogZGVyZWZlcmVuY2UgaXQgKm9uY2UqIHdpdGggYHJjdV9kZXJlZmVyZW5jZV9iaGAgYW5kIHN0b3JlIHRoZSByZXN1bHQsIGVuc3VyaW5nIGNvbnNpc3RlbnQgYWNjZXNzLiBUaGlzIGF2b2lkcyB0aGUgcG90ZW50aWFsIGZvciBhIGRpZmZlcmVudCAob3IgTlVMTCkgcG9pbnRlciB0byBiZSBhY2Nlc3NlZCB0aGUgc2Vjb25kIHRpbWUsIHRodXMgcHJldmVudGluZyBhIGNyYXNoIG9yIGluY29ycmVjdCBiZWhhdmlvciBpbiB0aGUgdHJhZmZpYyBjb250cm9sIGFjdGlvbiBleGVjdXRpb24uXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeDsgaXQgY29ycmVjdHMgYSBidWcgd2l0aGluIHRoZSB0cmFmZmljIGNvbnRyb2wgYWN0aW9uIGV4ZWN1dGlvbiBwYXRoLiBHaXZlbiB0aGF0IGB0Y2ZfYWN0aW9uX2V4ZWNgIGlzIHJpZ2h0IGluIHRoZSBob3QgcGF0aCAtLSBpdCdzIGNhbGxlZCBmb3IgZXZlcnkgcGFja2V0IHRoYXQgaGl0cyBhIHRjIGZpbHRlciB3aXRoIGFjdGlvbnMgLS0gaXQncyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBIb3dldmVyLCBiZWNhdXNlIGl0J3Mgc28gZ2VuZXJpYywgc3BlY2lmeWluZyBzcGVjaWZpYyBmdW5jdGlvbnMgaW4gYEZvY3VzU3ltYm9sc2Agc2VlbXMgdW53aXNlLCBhcyBpdCB3b3VsZCBza2V3IHRoZSBmdXp6ZXIuIFNvLCBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIGVtcHR5LiBUaGUgcGF0Y2gncyBpbXBhY3QgaXMgcmVsYXRpdmVseSBjb250YWluZWQsIGZpeGluZyBhIHJhY2UsIGJ1dCB0aGUgcmFjZSBpcyBhdCBhIHZlcnkgY2VudHJhbCBsb2NhdGlvbiB0aGF0IGRvZXMgZ2V0IHRyaWdnZXJlZCBxdWl0ZSBvZnRlbi4gVGhhdCBhbHNvIG1lYW5zIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSB0cnVlLlxuXG5TbywgaW4gc3VtbWFyeTogdGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gYHRjZl9hY3Rpb25fZXhlY2AgcmVsYXRlZCB0byB0aGUgYGEtXHUwMDNlZ290b19jaGFpbmAgcG9pbnRlci4gU2luY2UgdGhlIGZpeGVkIGZ1bmN0aW9uIGlzIGluIHRoZSBob3QgcGF0aCwgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBlbXB0eSB0byBub3Qgc2tldyB0aGUgZnV6emVyLiBJdCByZXF1aXJlcyBgQ09ORklHX05FVF9TQ0hFRGAgYW5kIGBDT05GSUdfTkVUX0NMU19BQ1RgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTE0LCJPdXRwdXRUb2tlbnMiOjEyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwOTo1OTo0Ny4wNTI4NzU5NjhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODgwMjIxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSEVEXCIsXG4gICAgXCJORVRfQ0xTX0FDVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBpbiB0aGUgdHJhZmZpYyBjb250cm9sIGFjdGlvbiBleGVjdXRpb24gcGF0aCAoYHRjZl9hY3Rpb25fZXhlY2ApIGJ5IGVuc3VyaW5nIGBhLVxcdTAwM2Vnb3RvX2NoYWluYCBpcyBkZXJlZmVyZW5jZWQgb25seSBvbmNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBkYXRhcGF0aC4gU2luY2UgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIGEgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbiwgbm8gc3BlY2lmaWMgZm9jdXMgc3ltYm9scyBhcmUgcHJvdmlkZWQgdG8gYXZvaWQgc2tld2luZyB0aGUgZnV6emVyJ3MgZGlzdHJpYnV0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX0NMU19BQ1RcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRyYWZmaWMgY29udHJvbCBhY3Rpb24gZXhlY3V0aW9uIHBhdGggKGB0Y2ZfYWN0aW9uX2V4ZWNgKSBieSBlbnN1cmluZyBgYS1cXHUwMDNlZ290b19jaGFpbmAgaXMgZGVyZWZlcmVuY2VkIG9ubHkgb25jZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgZGF0YXBhdGguIFNpbmNlIHRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyBhIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb24sIG5vIHNwZWNpZmljIGZvY3VzIHN5bWJvbHMgYXJlIHByb3ZpZGVkIHRvIGF2b2lkIHNrZXdpbmcgdGhlIGZ1enplcidzIGRpc3RyaWJ1dGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDk6NTk6NDcuMTQxNjg2MjUzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDA0OTMwMDA2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDA5OjU5OjQ3LjE0MjIzMTczMloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDA0ODc0NzgzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdheSBgYS1cXHUwMDNlZ290b19jaGFpbmAgaXMgZGVyZWZlcmVuY2VkIGluIGB0Y2ZfYWN0aW9uX2V4ZWNgIGFuZCBwYXNzZWQgdG8gYHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjYC4gSXQgcmVwbGFjZXMgYW4gYHJjdV9hY2Nlc3NfcG9pbnRlcmAgY2hlY2sgZm9sbG93ZWQgYnkgYSBzZXBhcmF0ZSBgcmN1X2RlcmVmZXJlbmNlX2JoYCB3aXRoIGEgc2luZ2xlIGByY3VfZGVyZWZlcmVuY2VfYmhgIGNhbGwsIHBhc3NpbmcgdGhlIHJlc3VsdGluZyBwb2ludGVyIHRvIHRoZSBoZWxwZXIgZnVuY3Rpb24uIFRoaXMgaXMgYSBsb2dpYy9SQ1UgZml4IHRoYXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGNyZWF0aW5nIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhpcyBjb2RlIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMpIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1MjU3N2MyNWZhNWEwOTkxNTk4ZTJkZTYyN2FmMTlhYjVmYmUwNWQwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgOSAwOTo1ODo1NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfYXBpLmMgYi9uZXQvc2NoZWQvYWN0X2FwaS5jXG5pbmRleCBmMTQxNjM0ZGYyMTQ4Li42MDBiNzgwNGJlZmQyIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL2FjdF9hcGkuY1xuKysrIGIvbmV0L3NjaGVkL2FjdF9hcGkuY1xuQEAgLTQxLDExICs0MSw5IEBAIGludCB0Y2ZfZGV2X3F1ZXVlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICgqeG1pdCkoc3RydWN0IHNrX2J1ZmYgKnNrYikpXG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHRjZl9kZXZfcXVldWVfeG1pdCk7XG4gXG4tc3RhdGljIHZvaWQgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWMoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcbitzdGF0aWMgdm9pZCB0Y2ZfYWN0aW9uX2dvdG9fY2hhaW5fZXhlYyhjb25zdCBzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbixcbiBcdFx0XHRcdCAgICAgICBzdHJ1Y3QgdGNmX3Jlc3VsdCAqcmVzKVxuIHtcbi1cdGNvbnN0IHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluID0gcmN1X2RlcmVmZXJlbmNlX2JoKGEtXHUwMDNlZ290b19jaGFpbik7XG4tXG4gXHRyZXMtXHUwMDNlZ290b190cCA9IHJjdV9kZXJlZmVyZW5jZV9iaChjaGFpbi1cdTAwM2VmaWx0ZXJfY2hhaW4pO1xuIH1cbiBcbkBAIC0xMTcwLDEyICsxMTY4LDE0IEBAIGludCB0Y2ZfYWN0aW9uX2V4ZWMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRjX2FjdGlvbiAqKmFjdGlvbnMsXG4gXHRcdFx0XHRcdHJldHVybiBUQ19BQ1RfT0s7XG4gXHRcdFx0fVxuIFx0XHR9IGVsc2UgaWYgKFRDX0FDVF9FWFRfQ01QKHJldCwgVENfQUNUX0dPVE9fQ0hBSU4pKSB7XG4tXHRcdFx0aWYgKHVubGlrZWx5KCFyY3VfYWNjZXNzX3BvaW50ZXIoYS1cdTAwM2Vnb3RvX2NoYWluKSkpIHtcbitcdFx0XHRzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbiA9IHJjdV9kZXJlZmVyZW5jZV9iaChhLVx1MDAzZWdvdG9fY2hhaW4pO1xuK1xuK1x0XHRcdGlmICh1bmxpa2VseSghY2hhaW4pKSB7XG4gXHRcdFx0XHR0Y2Zfc2V0X2Ryb3BfcmVhc29uKHNrYixcbiBcdFx0XHRcdFx0XHQgICAgU0tCX0RST1BfUkVBU09OX1RDX0NIQUlOX05PVEZPVU5EKTtcbiBcdFx0XHRcdHJldHVybiBUQ19BQ1RfU0hPVDtcbiBcdFx0XHR9XG4tXHRcdFx0dGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWMoYSwgcmVzKTtcbitcdFx0XHR0Y2ZfYWN0aW9uX2dvdG9fY2hhaW5fZXhlYyhjaGFpbiwgcmVzKTtcbiBcdFx0fVxuIFxuIFx0XHRpZiAocmV0ICE9IFRDX0FDVF9QSVBFKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDk6NTk6NDcuMTQyMjM0MDgyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMDQ4NzIwMTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJDVSBEZXJlZmVyZW5jZSBSZWZhY3RvcmluZyBpbiBgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWNgKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBwcmltYXJ5IGNoYW5nZSBpcyB0aGUgc2lnbmF0dXJlIG9mIGB0Y2ZfYWN0aW9uX2dvdG9fY2hhaW5fZXhlY2AgaW4gYG5ldC9zY2hlZC9hY3RfYXBpLmNgLiBJdCdzIGdvaW5nIGZyb20gdGFraW5nIGEgYHRjX2FjdGlvbmAgc3RydWN0IHBvaW50ZXIgdG8gYSBgdGNmX2NoYWluYCBzdHJ1Y3QgcG9pbnRlciwgd2hpY2ggaW1tZWRpYXRlbHkgY2x1ZXMgbWUgaW4gdGhhdCB0aGlzIGlzIGxpa2VseSBhYm91dCBzaW1wbGlmeWluZyBSQ1UgaGFuZGxpbmcuIFRoZXkndmUgbW92ZWQgdGhlIFJDVSBkZXJlZmVyZW5jZSBvZiBgYS1cdTAwM2Vnb3RvX2NoYWluYCBvdXQgb2YgdGhlIGNhbGxlZCBmdW5jdGlvbiBhbmQgaW50byB0aGUgY2FsbGVyLCBgdGNmX2FjdGlvbl9leGVjYC5cblxuQmFzaWNhbGx5LCB0aGV5J3JlIHJlcGxhY2luZyBgcmN1X2FjY2Vzc19wb2ludGVyKGEtXHUwMDNlZ290b19jaGFpbilgIHdpdGggYHJjdV9kZXJlZmVyZW5jZV9iaChhLVx1MDAzZWdvdG9fY2hhaW4pYCAqaW4qIGB0Y2ZfYWN0aW9uX2V4ZWNgLCBzdG9yaW5nIGl0IGluIGEgbG9jYWwgYGNoYWluYCB2YXJpYWJsZSwgYW5kIHRoZW4gcGFzc2luZyB0aGF0ICpkZXJlZmVyZW5jZWQqIGBjaGFpbmAgcG9pbnRlciBkaXJlY3RseSB0byBgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWNgLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IHRoaXMgY2xlYW5zIHRoaW5ncyB1cCBhbmQgYXZvaWRzIHBvdGVudGlhbCBjb25mdXNpb24uIFByZXZpb3VzbHksIGB0Y2ZfYWN0aW9uX2dvdG9fY2hhaW5fZXhlY2Agd2FzIGRvaW5nIGFuIFJDVSBkZXJlZmVyZW5jZSAqYWdhaW4qIHdoaWNoIGlzIGEgYml0IHJlZHVuZGFudCBnaXZlbiB0aGUgY2hlY2sgaGFwcGVuaW5nIGluIGB0Y2ZfYWN0aW9uX2V4ZWNgLiBUaGlzIGZpeGVzIGEgcG9zc2libGUgaXNzdWUgd2hlcmUgdGhlIHR3byBkZXJlZmVyZW5jZXMgKmNvdWxkKiB0aGVvcmV0aWNhbGx5IGhhdmUgZGlmZmVyZW50IHZpZXdzIG9mIHRoZSBkYXRhIGluIGEgdmVyeSBzbWFsbCB3aW5kb3csIGFsdGhvdWdoIEkgdGhpbmsgdGhpcyBpcyBleHRyZW1lbHkgdW5saWtlbHkgaW4gcHJhY3RpY2UgZ2l2ZW4gdGhlIGNvbnRleHQuIEJldHRlciB0byBkZXJlZmVyZW5jZSBvbmNlLCBhbmQgYmUgZG9uZSB3aXRoIGl0LlxuXG5JJ20gY2hlY2tpbmcgaWYgdGhlcmUncyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiBObywgaXQncyBqdXN0IHBvaW50ZXIgZGVyZWZlcmVuY2luZyBhbmQgcGFzc2luZy4gS01TQU4gYW5kIEtBU0FOIHdvdWxkIGRlZmluaXRlbHkgY2F0Y2ggYW55dGhpbmcgdW50b3dhcmQuIFRoZXJlJ3Mgbm8gbmV3IGFsbG9jYXRpb25zIG9yIGFueXRoaW5nIGxpa2UgdGhhdC4gS01TQU4gd291bGQgZmluZCBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgbGVha3MuIEtBU0FOIHdvdWxkIGNhdGNoIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzLlxuXG5TbywgSSdtIGNvbmZpZGVudCB0aGVyZSdzIG5vIHJpc2suIEknbGwgc2V0IE5lZWRzS01TQU49ZmFsc2UuIEl0J3MgYSBjbGVhbiByZWZhY3RvcmluZywgcmVhbGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjkxLCJPdXRwdXRUb2tlbnMiOjIwMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDA5OjU5OjU3LjE5MDk1ODM3NloiLCJTZXEiOjE2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdheSBgYS1cXHUwMDNlZ290b19jaGFpbmAgaXMgZGVyZWZlcmVuY2VkIGluIGB0Y2ZfYWN0aW9uX2V4ZWNgIGFuZCBwYXNzZWQgdG8gYHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjYC4gSXQgcmVwbGFjZXMgYW4gYHJjdV9hY2Nlc3NfcG9pbnRlcmAgY2hlY2sgZm9sbG93ZWQgYnkgYSBzZXBhcmF0ZSBgcmN1X2RlcmVmZXJlbmNlX2JoYCB3aXRoIGEgc2luZ2xlIGByY3VfZGVyZWZlcmVuY2VfYmhgIGNhbGwsIHBhc3NpbmcgdGhlIHJlc3VsdGluZyBwb2ludGVyIHRvIHRoZSBoZWxwZXIgZnVuY3Rpb24uIFRoaXMgaXMgYSBsb2dpYy9SQ1UgZml4IHRoYXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGNyZWF0aW5nIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhpcyBjb2RlIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMpIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgd2F5IGBhLVxcdTAwM2Vnb3RvX2NoYWluYCBpcyBkZXJlZmVyZW5jZWQgaW4gYHRjZl9hY3Rpb25fZXhlY2AgYW5kIHBhc3NlZCB0byBgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWNgLiBJdCByZXBsYWNlcyBhbiBgcmN1X2FjY2Vzc19wb2ludGVyYCBjaGVjayBmb2xsb3dlZCBieSBhIHNlcGFyYXRlIGByY3VfZGVyZWZlcmVuY2VfYmhgIHdpdGggYSBzaW5nbGUgYHJjdV9kZXJlZmVyZW5jZV9iaGAgY2FsbCwgcGFzc2luZyB0aGUgcmVzdWx0aW5nIHBvaW50ZXIgdG8gdGhlIGhlbHBlciBmdW5jdGlvbi4gVGhpcyBpcyBhIGxvZ2ljL1JDVSBmaXggdGhhdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgY3JlYXRpbmcgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0aGlzIGNvZGUgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcykgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4rhl7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-09 09:17:32 +0000 UTC FinishedAt: 2026-08-09 09:59:58 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dd057113ac7ba5bdd2aed3d9405305911152f911", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_CLS_ACT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dd057113ac7ba5bdd2aed3d9405305911152f911", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_CLS_ACT" ], "series_id": "441c0025-c4ec-46c2-b131-a2f8ddf02c9f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [], "corpus_urls": [ "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+CgkJCTx0ZD4yMDI2LzA4LzA5IDA5OjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0FDVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB3YXkgYGEtXHUwMDNlZ290b19jaGFpbmAgaXMgZGVyZWZlcmVuY2VkIGluIGB0Y2ZfYWN0aW9uX2V4ZWNgIGFuZCBwYXNzZWQgdG8gYHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjYC4gSXQgcmVwbGFjZXMgYW4gYHJjdV9hY2Nlc3NfcG9pbnRlcmAgY2hlY2sgZm9sbG93ZWQgYnkgYSBzZXBhcmF0ZSBgcmN1X2RlcmVmZXJlbmNlX2JoYCB3aXRoIGEgc2luZ2xlIGByY3VfZGVyZWZlcmVuY2VfYmhgIGNhbGwsIHBhc3NpbmcgdGhlIHJlc3VsdGluZyBwb2ludGVyIHRvIHRoZSBoZWxwZXIgZnVuY3Rpb24uIFRoaXMgaXMgYSBsb2dpYy9SQ1UgZml4IHRoYXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGNyZWF0aW5nIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhpcyBjb2RlIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMpIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRyYWZmaWMgY29udHJvbCBhY3Rpb24gZXhlY3V0aW9uIHBhdGggKGB0Y2ZfYWN0aW9uX2V4ZWNgKSBieSBlbnN1cmluZyBgYS1cdTAwM2Vnb3RvX2NoYWluYCBpcyBkZXJlZmVyZW5jZWQgb25seSBvbmNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBkYXRhcGF0aC4gU2luY2UgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIGEgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbiwgbm8gc3BlY2lmaWMgZm9jdXMgc3ltYm9scyBhcmUgcHJvdmlkZWQgdG8gYXZvaWQgc2tld2luZyB0aGUgZnV6emVyJiMzOTtzIGRpc3RyaWJ1dGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwOTo1ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDUyNTc3YzI1ZmE1YTA5OTE1OThlMmRlNjI3YWYxOWFiNWZiZTA1ZDBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyA5IDA5OjU4OjU2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfYXBpLmMgYi9uZXQvc2NoZWQvYWN0X2FwaS5jXG5pbmRleCBmMTQxNjM0ZGYyMTQ4Li42MDBiNzgwNGJlZmQyIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL2FjdF9hcGkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL2FjdF9hcGkuY1xuQEAgLTQxLDExICYjNDM7NDEsOSBAQCBpbnQgdGNmX2Rldl9xdWV1ZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsIGludCAoKnhtaXQpKHN0cnVjdCBza19idWZmICpza2IpKVxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTCh0Y2ZfZGV2X3F1ZXVlX3htaXQpO1xuIFxuLXN0YXRpYyB2b2lkIHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEsXG4mIzQzO3N0YXRpYyB2b2lkIHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjKGNvbnN0IHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluLFxuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCB0Y2ZfcmVzdWx0ICpyZXMpXG4ge1xuLVx0Y29uc3Qgc3RydWN0IHRjZl9jaGFpbiAqY2hhaW4gPSByY3VfZGVyZWZlcmVuY2VfYmgoYS1cdTAwM2Vnb3RvX2NoYWluKTtcbi1cbiBcdHJlcy1cdTAwM2Vnb3RvX3RwID0gcmN1X2RlcmVmZXJlbmNlX2JoKGNoYWluLVx1MDAzZWZpbHRlcl9jaGFpbik7XG4gfVxuIFxuQEAgLTExNzAsMTIgJiM0MzsxMTY4LDE0IEBAIGludCB0Y2ZfYWN0aW9uX2V4ZWMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRjX2FjdGlvbiAqKmFjdGlvbnMsXG4gXHRcdFx0XHRcdHJldHVybiBUQ19BQ1RfT0s7XG4gXHRcdFx0fVxuIFx0XHR9IGVsc2UgaWYgKFRDX0FDVF9FWFRfQ01QKHJldCwgVENfQUNUX0dPVE9fQ0hBSU4pKSB7XG4tXHRcdFx0aWYgKHVubGlrZWx5KCFyY3VfYWNjZXNzX3BvaW50ZXIoYS1cdTAwM2Vnb3RvX2NoYWluKSkpIHtcbiYjNDM7XHRcdFx0c3RydWN0IHRjZl9jaGFpbiAqY2hhaW4gPSByY3VfZGVyZWZlcmVuY2VfYmgoYS1cdTAwM2Vnb3RvX2NoYWluKTtcbiYjNDM7XG4mIzQzO1x0XHRcdGlmICh1bmxpa2VseSghY2hhaW4pKSB7XG4gXHRcdFx0XHR0Y2Zfc2V0X2Ryb3BfcmVhc29uKHNrYixcbiBcdFx0XHRcdFx0XHQgICAgU0tCX0RST1BfUkVBU09OX1RDX0NIQUlOX05PVEZPVU5EKTtcbiBcdFx0XHRcdHJldHVybiBUQ19BQ1RfU0hPVDtcbiBcdFx0XHR9XG4tXHRcdFx0dGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWMoYSwgcmVzKTtcbiYjNDM7XHRcdFx0dGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWMoY2hhaW4sIHJlcyk7XG4gXHRcdH1cbiBcbiBcdFx0aWYgKHJldCAhPSBUQ19BQ1RfUElQRSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwOTo1ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGluIHRoZSB0cmFmZmljIGNvbnRyb2wgYWN0aW9uIGV4ZWN1dGlvbiBwYXRoIChgdGNmX2FjdGlvbl9leGVjYCkgYnkgZW5zdXJpbmcgYGEtXHUwMDNlZ290b19jaGFpbmAgaXMgZGVyZWZlcmVuY2VkIG9ubHkgb25jZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgZGF0YXBhdGguIFNpbmNlIHRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyBhIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb24sIG5vIHNwZWNpZmljIGZvY3VzIHN5bWJvbHMgYXJlIHByb3ZpZGVkIHRvIGF2b2lkIHNrZXdpbmcgdGhlIGZ1enplciYjMzk7cyBkaXN0cmlidXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1MjU3N2MyNWZhNWEwOTkxNTk4ZTJkZTYyN2FmMTlhYjVmYmUwNWQwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgOSAwOTo1ODo1NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfYXBpLmMgYi9uZXQvc2NoZWQvYWN0X2FwaS5jCmluZGV4IGYxNDE2MzRkZjIxNDguLjYwMGI3ODA0YmVmZDIgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9hY3RfYXBpLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL2FjdF9hcGkuYwpAQCAtNDEsMTEgJiM0Mzs0MSw5IEBAIGludCB0Y2ZfZGV2X3F1ZXVlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICgqeG1pdCkoc3RydWN0IHNrX2J1ZmYgKnNrYikpCiB9CiBFWFBPUlRfU1lNQk9MX0dQTCh0Y2ZfZGV2X3F1ZXVlX3htaXQpOwogCi1zdGF0aWMgdm9pZCB0Y2ZfYWN0aW9uX2dvdG9fY2hhaW5fZXhlYyhjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphLAomIzQzO3N0YXRpYyB2b2lkIHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjKGNvbnN0IHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluLAogCQkJCSAgICAgICBzdHJ1Y3QgdGNmX3Jlc3VsdCAqcmVzKQogewotCWNvbnN0IHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluID0gcmN1X2RlcmVmZXJlbmNlX2JoKGEtJmd0O2dvdG9fY2hhaW4pOwotCiAJcmVzLSZndDtnb3RvX3RwID0gcmN1X2RlcmVmZXJlbmNlX2JoKGNoYWluLSZndDtmaWx0ZXJfY2hhaW4pOwogfQogCkBAIC0xMTcwLDEyICYjNDM7MTE2OCwxNCBAQCBpbnQgdGNmX2FjdGlvbl9leGVjKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB0Y19hY3Rpb24gKiphY3Rpb25zLAogCQkJCQlyZXR1cm4gVENfQUNUX09LOwogCQkJfQogCQl9IGVsc2UgaWYgKFRDX0FDVF9FWFRfQ01QKHJldCwgVENfQUNUX0dPVE9fQ0hBSU4pKSB7Ci0JCQlpZiAodW5saWtlbHkoIXJjdV9hY2Nlc3NfcG9pbnRlcihhLSZndDtnb3RvX2NoYWluKSkpIHsKJiM0MzsJCQlzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbiA9IHJjdV9kZXJlZmVyZW5jZV9iaChhLSZndDtnb3RvX2NoYWluKTsKJiM0MzsKJiM0MzsJCQlpZiAodW5saWtlbHkoIWNoYWluKSkgewogCQkJCXRjZl9zZXRfZHJvcF9yZWFzb24oc2tiLAogCQkJCQkJICAgIFNLQl9EUk9QX1JFQVNPTl9UQ19DSEFJTl9OT1RGT1VORCk7CiAJCQkJcmV0dXJuIFRDX0FDVF9TSE9UOwogCQkJfQotCQkJdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWMoYSwgcmVzKTsKJiM0MzsJCQl0Y2ZfYWN0aW9uX2dvdG9fY2hhaW5fZXhlYyhjaGFpbiwgcmVzKTsKIAkJfQogCiAJCWlmIChyZXQgIT0gVENfQUNUX1BJUEUpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA5OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyOTQKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA3NDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVHJhZmZpYyBDb250cm9sIEFjdGlvbiBDaGFpbiBNb2RpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvc2NoZWQvYWN0X2FwaS5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgY2hhbmdpbmcgaG93IHdlIGhhbmRsZSB0aGUgZ290byBjaGFpbiB3aXRoaW4gYSB0cmFmZmljIGNvbnRyb2wgYWN0aW9uLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIGxpa2UgdGhlIGNoYW5nZSBpbnZvbHZlcyB0YWtpbmcgYHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluYCBkaXJlY3RseSBpbiBgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWNgIGluc3RlYWQgb2YgdGhlIG1vcmUgZ2VuZXJhbCBgc3RydWN0IHRjX2FjdGlvbiAqYWAuIFRoZSBrZXkgc2hpZnQgYXBwZWFycyB0byBiZSB0aGF0IGBhLSZndDtnb3RvX2NoYWluYCBpcyBub3cgZGVyZWZlcmVuY2VkIGluIGB0Y2ZfYWN0aW9uX2V4ZWNgIGl0c2VsZiwgcmF0aGVyIHRoYW4gd2l0aGluIHRoZSBgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWNgIGZ1bmN0aW9uLiBUaGlzIHBvdGVudGlhbGx5IG1pdGlnYXRlcyBhIHJhY2UgY29uZGl0aW9uIG9yIG1lbW9yeSBzYWZldHkgaXNzdWXigJRsaWtlbHkgZW5zdXJpbmcgdGhlIGNoYWluIGlzbiYjMzk7dCBhY2Nlc3NlZCBhZnRlciBpdCYjMzk7cyBiZWVuIGZyZWVkIG9yIGJlY29tZSBpbnZhbGlkLgoKTm93LCBhIHJlZCBmbGFnIHBvcHMgdXA6IGB0Y2ZfYWN0aW9uX2V4ZWNgIGlzIGEgKmhvdCBwYXRoKiBmdW5jdGlvbi4gSXQmIzM5O3MgY2FsbGVkIGZvciAqZXZlcnkqIHBhY2tldCB0aGF0IGhpdHMgYSBUQyBhY3Rpb24uIFRoYXQgbWVhbnMgcGVyZm9ybWFuY2UgaXMgY3JpdGljYWwgaGVyZS4gSSBuZWVkIHRvIGJlIGRvdWJseSBzdXJlIG9mIHRoZSBjb3JyZWN0bmVzcyBhbmQgc3RhYmlsaXR5IG9mIHRoaXMgY2hhbmdlLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGNvbnNpZGVyIGZ1enppbmcgaXQgaGVhdmlseSwgZ2l2ZW4gaXRzIGNyaXRpY2FsIG5hdHVyZS4KCkxldCYjMzk7cyBkaXNzZWN0IHRoaXMgZnVydGhlci4gTG9va2luZyBhdCB0aGUgY29kZSwgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIGRlcmVmZXJlbmNpbmcgYGEtJmd0O2dvdG9fY2hhaW5gLiBCZWNhdXNlIGB0Y2ZfYWN0aW9uX2V4ZWNgIGlzIGhvdCwgSSBtdXN0IGF2b2lkIHNrZXdpbmcgdGhlIHRlc3QgZGlzdHJpYnV0aW9uIHdpdGggdGhpcyBwYXRjaC4gSSBzaG91bGQgY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIGZ1bmN0aW9ucyBhZmZlY3RlZCBpbiB0aGlzIHBhdGNoLiBCYXNlZCBvbiB0aGUgcGF0Y2gsIGl0IHNlZW1zIGxpa2UgYHRjZl9hY3Rpb25fZXhlY2AgYW5kIGB0Y2ZfYWN0aW9uX2dvdG9fY2hhaW5fZXhlY2AgYXJlIHRoZSBvbmx5IG1vZGlmaWVkIGZ1bmN0aW9ucy4gYHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjYCBpcyBzdGF0aWMsIHdoaWNoIGlzIGdvb2QgdG8gYXZvaWQgYXMgYSBmb2N1cyBzeW1ib2wuIGB0Y2ZfYWN0aW9uX2V4ZWNgIGlzIGFuIGV4cG9ydGVkIEFQSSBmdW5jdGlvbiBpbiBkYXRhcGF0aC4gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgaG90IHBhdGggZnVuY3Rpb24sIGFjY29yZGluZyB0byB0aGUgZ3VpZGFuY2UsIEkgc2hvdWxkbiYjMzk7dCBsaXN0IGl0IGluIGBGb2N1c1N5bWJvbHNgLgoKT2theSwgdGhlcmUgYXJlIG5vIG90aGVyIGZ1bmN0aW9ucy4gR2l2ZW4gdGhlIGluc3RydWN0aW9ucyB0byBhdm9pZCBob3QtcGF0aCBhbmQgaW50ZXJuYWwgc3RhdGljIGZ1bmN0aW9ucywgdGhlIGBGb2N1c1N5bWJvbHNgIGVudHJ5IHNob3VsZCBiZSBlbXB0eS4KCkZpbmFsbHksIEkgc2hvdWxkIGNoZWNrIHRoZSBjb25maWc6IHRoaXMgY29kZSBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfTkVUX0NMU19BQ1RgIGlzIGVuYWJsZWQsIHdoaWNoIGlzIHN0YW5kYXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA5OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29iai0uKmFjdF9hcGkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL01ha2VmaWxlPTEwPW9iai0kKENPTkZJR19ORVRfQ0xTKVx0XHQmIzQzOz0gY2xzX2FwaS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX05FVF9DTFNfQUNUKVx0JiM0Mzs9IGFjdF9hcGkub1xubmV0L3NjaGVkL01ha2VmaWxlLTEyLW9iai0kKENPTkZJR19ORVRfQUNUX1BPTElDRSlcdCYjNDM7PSBhY3RfcG9saWNlLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwOTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjUyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIGBDT05GSUdfTkVUX0NMU19BQ1RgKioKCkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgcmV2b2x2ZXMgYXJvdW5kIGBDT05GSUdfTkVUX0NMU19BQ1RgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBpbW1lZGlhdGVseSBkaXZlIGludG8gaXRzIGRlcGVuZGVuY2llcy4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgYW5kIHVuZGVyc3RhbmRpbmcgaXRzIHBsYWNlIGluIHRoZSBkZXBlbmRlbmN5IHRyZWUgaXMga2V5IHRvIGNvbXByZWhlbmRpbmcgaXRzIHJvbGUgYW5kIHBvdGVudGlhbCBpbXBhY3QuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IGlmIGl0IHJlbGllcyBvbiBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgb3IgZmVhdHVyZXMuIFRoaXMga25vd2xlZGdlIGlzIGNydWNpYWwgZm9yIHRyb3VibGVzaG9vdGluZywgb3B0aW1pemluZywgb3Igc2ltcGx5IGVuc3VyaW5nIGEgc3RhYmxlIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA5OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfQ0xTX0FDVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTY5MD1jb25maWcgTkVUX0VNQVRDSF9JUFRcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy03MDEtXG5uZXQvc2NoZWQvS2NvbmZpZzo3MDI6Y29uZmlnIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03MDMtXHRib29sIFwmIzM0O0FjdGlvbnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwOTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTE2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIGBuZXQvc2NoZWQvS2NvbmZpZ2AqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgYG5ldC9zY2hlZC9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNzAyLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoYXQgYXJlYS4gSXQmIzM5O3MgbGlrZWx5IHJlbGF0ZWQgdG8gdHJhZmZpYyBzaGFwaW5nIG9yIHF1ZXVlaW5nIGRpc2NpcGxpbmVzLCBnaXZlbiB0aGUgZGlyZWN0b3J5LiBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBxdWljayBvdmVydmlldyBvZiB0aGUgYXZhaWxhYmxlIGZlYXR1cmVzIGFuZCBkZXBlbmRlbmNpZXMuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHVuZGVyc3RhbmRpbmcgaG93IHNwZWNpZmljIG9wdGlvbnMgbWlnaHQgYmUgaW5mbHVlbmNpbmcgdGhlIHBlcmZvcm1hbmNlIG9yIGZ1bmN0aW9uYWxpdHkgSSYjMzk7bSBzZWVpbmcgZWxzZXdoZXJlLiBUaGlzIGluaXRpYWwgaW52ZXN0aWdhdGlvbiB3aWxsIGhlbHAgbmFycm93IGRvd24gdGhlIHNjb3BlIG9mIHdoYXQgSSYjMzk7bSBsb29raW5nIGF0LiBJJiMzOTttIGV4cGVjdGluZyB0byBlaXRoZXIgcmVmcmVzaCBteSBtZW1vcnkgb2Yga25vd24gb3B0aW9ucyBvciBlbmNvdW50ZXIgc29tZXRoaW5nIG5ldyB0aGF0IG1pZ2h0IHNwYXJrIGEgbmV3IGxpbmUgb2YgZW5xdWlyeS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA5OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2OTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDY5MDpcdGNvbmZpZyBORVRfRU1BVENIX0lQVFxuIDY5MTpcdFx0dHJpc3RhdGUgXCYjMzQ7SVB0YWJsZXMgTWF0Y2hlc1wmIzM0O1xuIDY5MjpcdFx0ZGVwZW5kcyBvbiBORVRfRU1BVENIIFx1MDAyNlx1MDAyNiBORVRGSUxURVIgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUl9YVEFCTEVTXG4gNjkzOlx0XHRoZWxwXG4gNjk0Olx0XHQgIFNheSBZIGhlcmUgdG8gYmUgYWJsZSB0byBjbGFzc2lmeSBwYWNrZXRzIGJhc2VkIG9uIGlwdGFibGVzXG4gNjk1Olx0XHQgIG1hdGNoZXMuXG4gNjk2Olx0XHQgIEN1cnJlbnQgc3VwcG9ydGVkIG1hdGNoIGlzIFwmIzM0O3BvbGljeVwmIzM0OyB3aGljaCBhbGxvd3MgcGFja2V0IGNsYXNzaWZpY2F0aW9uXG4gNjk3Olx0XHQgIGJhc2VkIG9uIElQc2VjIHBvbGljeSB0aGF0IHdhcyB1c2VkIGR1cmluZyBkZWNhcHN1bGF0aW9uXG4gNjk4Olx0XG4gNjk5Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiA3MDA6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGVtX2lwdC5cbiA3MDE6XHRcbiA3MDI6XHRjb25maWcgTkVUX0NMU19BQ1RcbiA3MDM6XHRcdGJvb2wgXCYjMzQ7QWN0aW9uc1wmIzM0O1xuIDcwNDpcdFx0c2VsZWN0IE5FVF9DTFNcbiA3MDU6XHRcdHNlbGVjdCBORVRfWEdSRVNTXG4gNzA2Olx0XHRoZWxwXG4gNzA3Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRyYWZmaWMgY29udHJvbCBhY3Rpb25zLiBBY3Rpb25zXG4gNzA4Olx0XHQgIGdldCBhdHRhY2hlZCB0byBjbGFzc2lmaWVycyBhbmQgYXJlIGludm9rZWQgYWZ0ZXIgYSBzdWNjZXNzZnVsXG4gNzA5Olx0XHQgIGNsYXNzaWZpY2F0aW9uLiBUaGV5IGFyZSB1c2VkIHRvIG92ZXJ3cml0ZSB0aGUgY2xhc3NpZmljYXRpb25cbiA3MTA6XHRcdCAgcmVzdWx0LCBpbnN0YW50bHkgZHJvcCBvciByZWRpcmVjdCBwYWNrZXRzLCBldGMuXG4gNzExOlx0XG4gNzEyOlx0XHQgIEEgcmVjZW50IHZlcnNpb24gb2YgdGhlIGlwcm91dGUyIHBhY2thZ2UgaXMgcmVxdWlyZWQgdG8gdXNlXG4gNzEzOlx0XHQgIGV4dGVuZGVkIG1hdGNoZXMuXG4gNzE0Olx0XG4gNzE1Olx0Y29uZmlnIE5FVF9BQ1RfUE9MSUNFXG4gNzE2Olx0XHR0cmlzdGF0ZSBcJiMzNDtUcmFmZmljIFBvbGljaW5nXCYjMzQ7XG4gNzE3Olx0XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG4gNzE4Olx0XHRoZWxwXG4gNzE5Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gZG8gdHJhZmZpYyBwb2xpY2luZywgaS5lLiBzdHJpY3RcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwOTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjAyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqTmF2aWdhdGluZyB0aGUgRGVwZW5kZW5jeSBXZWIqKgoKT2theSwgc28gYE5FVF9DTFNfQUNUYCBpcyBhIGJvb2xlYW4sIHdoaWNoIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEl0IGRvZXNuJiMzOTt0IHNlZW0gdG8gaGF2ZSBhbnkgKmRpcmVjdCogZGVwZW5kZW5jaWVzLCB3aGljaCBpcyBhIGdvb2Qgc2lnbiDigJMgbGVzcyBjb21wbGV4aXR5IHRvIHdvcnJ5IGFib3V0IGluaXRpYWxseS4gQnV0IHRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgbmVzdGVkIHVuZGVyIGBtZW51Y29uZmlnIE5FVF9TQ0hFRGAgaXMgYSBjcnVjaWFsIGRldGFpbC4gVGhhdCBtZWFucyBgTkVUX1NDSEVEYCBpcyBhIHBhcmVudCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIGRpZyBpbnRvIGBORVRfU0NIRURgJiMzOTtzIGRlcGVuZGVuY2llcyBhbmQgaG93IGl0IGluZmx1ZW5jZXMgYE5FVF9DTFNfQUNUYC4gR290dGEgY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgZm9yIHRoYXQgcmVsYXRpb25zaGlwLiBVbmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIGNvbnRleHQgYXJvdW5kIGBORVRfU0NIRURgIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBvciBkaXNhYmxpbmcgYE5FVF9DTFNfQUNUYC4gUHJvYmFibHkgbWVhbnMgc29tZXRoaW5nIGFib3V0IG5ldHdvcmsgc2NoZWR1bGluZywgc28gYSBxdWljayBkaXZlIGluIHRoZSBjb2RlIGFzc29jaWF0ZWQgd2l0aCBzY2hlZHVsaW5nIHdvdWxkIGJlIHdpc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA5OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lbnVjb25maWcgTkVUX1NDSEVEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWctNS1cbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcbm5ldC9zY2hlZC9LY29uZmlnLTctXHRib29sIFwmIzM0O1FvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwOTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTE0CgkJCQkJCQlvdXRwdXQ6IDEyNQoJCQkJCQkJdGhvdWdodHM6IDQ2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFzb25pbmcgZm9yIFBhdGNoIEFuYWx5c2lzKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCB0aGlzIHBhdGNoIGRlZmluaXRlbHkgcmVxdWlyZXMgYE5FVF9TQ0hFRGAgYW5kIGBORVRfQ0xTX0FDVGAsIHRob3NlIGFyZSB0aGUgYmFzZSBjb25maWd1cmF0aW9ucy4gTm93LCB0aGUgbWVhdCBvZiB0aGUgaXNzdWU6IGl0JiMzOTtzIGEgcmFjZSBjb25kaXRpb24gZml4IHJlbGF0ZWQgdG8gYGEtJmd0O2dvdG9fY2hhaW5gIGluIGB0Y2ZfYWN0aW9uX2V4ZWNgLiBFc3NlbnRpYWxseSwgdGhlIG9yaWdpbmFsIGNvZGUgdXNlZCBgcmN1X2FjY2Vzc19wb2ludGVyYCB0byBjaGVjayBmb3IgbnVsbCwgYW5kIHRoZW4gaW1tZWRpYXRlbHkgZGVyZWZlcmVuY2VkIGBhLSZndDtnb3RvX2NoYWluYCBhZ2FpbiB3aXRoIGByY3VfZGVyZWZlcmVuY2VfYmhgLCB3aGljaCBpcyBhIHByb2JsZW0gaWYgYGEtJmd0O2dvdG9fY2hhaW5gIGNvdWxkIGNoYW5nZSBjb25jdXJyZW50bHkuIFRoZSBmaXggaXMgc3RyYWlnaHRmb3J3YXJkOiBkZXJlZmVyZW5jZSBpdCAqb25jZSogd2l0aCBgcmN1X2RlcmVmZXJlbmNlX2JoYCBhbmQgc3RvcmUgdGhlIHJlc3VsdCwgZW5zdXJpbmcgY29uc2lzdGVudCBhY2Nlc3MuIFRoaXMgYXZvaWRzIHRoZSBwb3RlbnRpYWwgZm9yIGEgZGlmZmVyZW50IChvciBOVUxMKSBwb2ludGVyIHRvIGJlIGFjY2Vzc2VkIHRoZSBzZWNvbmQgdGltZSwgdGh1cyBwcmV2ZW50aW5nIGEgY3Jhc2ggb3IgaW5jb3JyZWN0IGJlaGF2aW9yIGluIHRoZSB0cmFmZmljIGNvbnRyb2wgYWN0aW9uIGV4ZWN1dGlvbi4KClRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeDsgaXQgY29ycmVjdHMgYSBidWcgd2l0aGluIHRoZSB0cmFmZmljIGNvbnRyb2wgYWN0aW9uIGV4ZWN1dGlvbiBwYXRoLiBHaXZlbiB0aGF0IGB0Y2ZfYWN0aW9uX2V4ZWNgIGlzIHJpZ2h0IGluIHRoZSBob3QgcGF0aCAtLSBpdCYjMzk7cyBjYWxsZWQgZm9yIGV2ZXJ5IHBhY2tldCB0aGF0IGhpdHMgYSB0YyBmaWx0ZXIgd2l0aCBhY3Rpb25zIC0tIGl0JiMzOTtzIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEhvd2V2ZXIsIGJlY2F1c2UgaXQmIzM5O3Mgc28gZ2VuZXJpYywgc3BlY2lmeWluZyBzcGVjaWZpYyBmdW5jdGlvbnMgaW4gYEZvY3VzU3ltYm9sc2Agc2VlbXMgdW53aXNlLCBhcyBpdCB3b3VsZCBza2V3IHRoZSBmdXp6ZXIuIFNvLCBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIGVtcHR5LiBUaGUgcGF0Y2gmIzM5O3MgaW1wYWN0IGlzIHJlbGF0aXZlbHkgY29udGFpbmVkLCBmaXhpbmcgYSByYWNlLCBidXQgdGhlIHJhY2UgaXMgYXQgYSB2ZXJ5IGNlbnRyYWwgbG9jYXRpb24gdGhhdCBkb2VzIGdldCB0cmlnZ2VyZWQgcXVpdGUgb2Z0ZW4uIFRoYXQgYWxzbyBtZWFucyBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgdHJ1ZS4KClNvLCBpbiBzdW1tYXJ5OiB0aGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBgdGNmX2FjdGlvbl9leGVjYCByZWxhdGVkIHRvIHRoZSBgYS0mZ3Q7Z290b19jaGFpbmAgcG9pbnRlci4gU2luY2UgdGhlIGZpeGVkIGZ1bmN0aW9uIGlzIGluIHRoZSBob3QgcGF0aCwgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBlbXB0eSB0byBub3Qgc2tldyB0aGUgZnV6emVyLiBJdCByZXF1aXJlcyBgQ09ORklHX05FVF9TQ0hFRGAgYW5kIGBDT05GSUdfTkVUX0NMU19BQ1RgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwOTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGluIHRoZSB0cmFmZmljIGNvbnRyb2wgYWN0aW9uIGV4ZWN1dGlvbiBwYXRoIChgdGNmX2FjdGlvbl9leGVjYCkgYnkgZW5zdXJpbmcgYGEtXHUwMDNlZ290b19jaGFpbmAgaXMgZGVyZWZlcmVuY2VkIG9ubHkgb25jZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgZGF0YXBhdGguIFNpbmNlIHRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyBhIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb24sIG5vIHNwZWNpZmljIGZvY3VzIHN5bWJvbHMgYXJlIHByb3ZpZGVkIHRvIGF2b2lkIHNrZXdpbmcgdGhlIGZ1enplciYjMzk7cyBkaXN0cmlidXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0FDVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBpbiB0aGUgdHJhZmZpYyBjb250cm9sIGFjdGlvbiBleGVjdXRpb24gcGF0aCAoYHRjZl9hY3Rpb25fZXhlY2ApIGJ5IGVuc3VyaW5nIGBhLVx1MDAzZWdvdG9fY2hhaW5gIGlzIGRlcmVmZXJlbmNlZCBvbmx5IG9uY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIGRhdGFwYXRoLiBTaW5jZSB0aGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgYSBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9uLCBubyBzcGVjaWZpYyBmb2N1cyBzeW1ib2xzIGFyZSBwcm92aWRlZCB0byBhdm9pZCBza2V3aW5nIHRoZSBmdXp6ZXImIzM5O3MgZGlzdHJpYnV0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwOTo1OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDA5OjU5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB3YXkgYGEtXHUwMDNlZ290b19jaGFpbmAgaXMgZGVyZWZlcmVuY2VkIGluIGB0Y2ZfYWN0aW9uX2V4ZWNgIGFuZCBwYXNzZWQgdG8gYHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjYC4gSXQgcmVwbGFjZXMgYW4gYHJjdV9hY2Nlc3NfcG9pbnRlcmAgY2hlY2sgZm9sbG93ZWQgYnkgYSBzZXBhcmF0ZSBgcmN1X2RlcmVmZXJlbmNlX2JoYCB3aXRoIGEgc2luZ2xlIGByY3VfZGVyZWZlcmVuY2VfYmhgIGNhbGwsIHBhc3NpbmcgdGhlIHJlc3VsdGluZyBwb2ludGVyIHRvIHRoZSBoZWxwZXIgZnVuY3Rpb24uIFRoaXMgaXMgYSBsb2dpYy9SQ1UgZml4IHRoYXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGNyZWF0aW5nIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhpcyBjb2RlIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMpIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTI1NzdjMjVmYTVhMDk5MTU5OGUyZGU2MjdhZjE5YWI1ZmJlMDVkMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDkgMDk6NTg6NTYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2FwaS5jIGIvbmV0L3NjaGVkL2FjdF9hcGkuYwppbmRleCBmMTQxNjM0ZGYyMTQ4Li42MDBiNzgwNGJlZmQyIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvYWN0X2FwaS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9hY3RfYXBpLmMKQEAgLTQxLDExICYjNDM7NDEsOSBAQCBpbnQgdGNmX2Rldl9xdWV1ZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsIGludCAoKnhtaXQpKHN0cnVjdCBza19idWZmICpza2IpKQogfQogRVhQT1JUX1NZTUJPTF9HUEwodGNmX2Rldl9xdWV1ZV94bWl0KTsKIAotc3RhdGljIHZvaWQgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWMoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSwKJiM0MztzdGF0aWMgdm9pZCB0Y2ZfYWN0aW9uX2dvdG9fY2hhaW5fZXhlYyhjb25zdCBzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbiwKIAkJCQkgICAgICAgc3RydWN0IHRjZl9yZXN1bHQgKnJlcykKIHsKLQljb25zdCBzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbiA9IHJjdV9kZXJlZmVyZW5jZV9iaChhLSZndDtnb3RvX2NoYWluKTsKLQogCXJlcy0mZ3Q7Z290b190cCA9IHJjdV9kZXJlZmVyZW5jZV9iaChjaGFpbi0mZ3Q7ZmlsdGVyX2NoYWluKTsKIH0KIApAQCAtMTE3MCwxMiAmIzQzOzExNjgsMTQgQEAgaW50IHRjZl9hY3Rpb25fZXhlYyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNfYWN0aW9uICoqYWN0aW9ucywKIAkJCQkJcmV0dXJuIFRDX0FDVF9PSzsKIAkJCX0KIAkJfSBlbHNlIGlmIChUQ19BQ1RfRVhUX0NNUChyZXQsIFRDX0FDVF9HT1RPX0NIQUlOKSkgewotCQkJaWYgKHVubGlrZWx5KCFyY3VfYWNjZXNzX3BvaW50ZXIoYS0mZ3Q7Z290b19jaGFpbikpKSB7CiYjNDM7CQkJc3RydWN0IHRjZl9jaGFpbiAqY2hhaW4gPSByY3VfZGVyZWZlcmVuY2VfYmgoYS0mZ3Q7Z290b19jaGFpbik7CiYjNDM7CiYjNDM7CQkJaWYgKHVubGlrZWx5KCFjaGFpbikpIHsKIAkJCQl0Y2Zfc2V0X2Ryb3BfcmVhc29uKHNrYiwKIAkJCQkJCSAgICBTS0JfRFJPUF9SRUFTT05fVENfQ0hBSU5fTk9URk9VTkQpOwogCQkJCXJldHVybiBUQ19BQ1RfU0hPVDsKIAkJCX0KLQkJCXRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjKGEsIHJlcyk7CiYjNDM7CQkJdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWMoY2hhaW4sIHJlcyk7CiAJCX0KIAogCQlpZiAocmV0ICE9IFRDX0FDVF9QSVBFKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDk6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI5MQoJCQkJCQkJb3V0cHV0OiAyMDIKCQkJCQkJCXRob3VnaHRzOiA3MzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUkNVIERlcmVmZXJlbmNlIFJlZmFjdG9yaW5nIGluIGB0Y2ZfYWN0aW9uX2dvdG9fY2hhaW5fZXhlY2AqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUgcHJpbWFyeSBjaGFuZ2UgaXMgdGhlIHNpZ25hdHVyZSBvZiBgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWNgIGluIGBuZXQvc2NoZWQvYWN0X2FwaS5jYC4gSXQmIzM5O3MgZ29pbmcgZnJvbSB0YWtpbmcgYSBgdGNfYWN0aW9uYCBzdHJ1Y3QgcG9pbnRlciB0byBhIGB0Y2ZfY2hhaW5gIHN0cnVjdCBwb2ludGVyLCB3aGljaCBpbW1lZGlhdGVseSBjbHVlcyBtZSBpbiB0aGF0IHRoaXMgaXMgbGlrZWx5IGFib3V0IHNpbXBsaWZ5aW5nIFJDVSBoYW5kbGluZy4gVGhleSYjMzk7dmUgbW92ZWQgdGhlIFJDVSBkZXJlZmVyZW5jZSBvZiBgYS0mZ3Q7Z290b19jaGFpbmAgb3V0IG9mIHRoZSBjYWxsZWQgZnVuY3Rpb24gYW5kIGludG8gdGhlIGNhbGxlciwgYHRjZl9hY3Rpb25fZXhlY2AuCgpCYXNpY2FsbHksIHRoZXkmIzM5O3JlIHJlcGxhY2luZyBgcmN1X2FjY2Vzc19wb2ludGVyKGEtJmd0O2dvdG9fY2hhaW4pYCB3aXRoIGByY3VfZGVyZWZlcmVuY2VfYmgoYS0mZ3Q7Z290b19jaGFpbilgICppbiogYHRjZl9hY3Rpb25fZXhlY2AsIHN0b3JpbmcgaXQgaW4gYSBsb2NhbCBgY2hhaW5gIHZhcmlhYmxlLCBhbmQgdGhlbiBwYXNzaW5nIHRoYXQgKmRlcmVmZXJlbmNlZCogYGNoYWluYCBwb2ludGVyIGRpcmVjdGx5IHRvIGB0Y2ZfYWN0aW9uX2dvdG9fY2hhaW5fZXhlY2AuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IHRoaXMgY2xlYW5zIHRoaW5ncyB1cCBhbmQgYXZvaWRzIHBvdGVudGlhbCBjb25mdXNpb24uIFByZXZpb3VzbHksIGB0Y2ZfYWN0aW9uX2dvdG9fY2hhaW5fZXhlY2Agd2FzIGRvaW5nIGFuIFJDVSBkZXJlZmVyZW5jZSAqYWdhaW4qIHdoaWNoIGlzIGEgYml0IHJlZHVuZGFudCBnaXZlbiB0aGUgY2hlY2sgaGFwcGVuaW5nIGluIGB0Y2ZfYWN0aW9uX2V4ZWNgLiBUaGlzIGZpeGVzIGEgcG9zc2libGUgaXNzdWUgd2hlcmUgdGhlIHR3byBkZXJlZmVyZW5jZXMgKmNvdWxkKiB0aGVvcmV0aWNhbGx5IGhhdmUgZGlmZmVyZW50IHZpZXdzIG9mIHRoZSBkYXRhIGluIGEgdmVyeSBzbWFsbCB3aW5kb3csIGFsdGhvdWdoIEkgdGhpbmsgdGhpcyBpcyBleHRyZW1lbHkgdW5saWtlbHkgaW4gcHJhY3RpY2UgZ2l2ZW4gdGhlIGNvbnRleHQuIEJldHRlciB0byBkZXJlZmVyZW5jZSBvbmNlLCBhbmQgYmUgZG9uZSB3aXRoIGl0LgoKSSYjMzk7bSBjaGVja2luZyBpZiB0aGVyZSYjMzk7cyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiBObywgaXQmIzM5O3MganVzdCBwb2ludGVyIGRlcmVmZXJlbmNpbmcgYW5kIHBhc3NpbmcuIEtNU0FOIGFuZCBLQVNBTiB3b3VsZCBkZWZpbml0ZWx5IGNhdGNoIGFueXRoaW5nIHVudG93YXJkLiBUaGVyZSYjMzk7cyBubyBuZXcgYWxsb2NhdGlvbnMgb3IgYW55dGhpbmcgbGlrZSB0aGF0LiBLTVNBTiB3b3VsZCBmaW5kIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBsZWFrcy4gS0FTQU4gd291bGQgY2F0Y2ggdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3MuCgpTbywgSSYjMzk7bSBjb25maWRlbnQgdGhlcmUmIzM5O3Mgbm8gcmlzay4gSSYjMzk7bGwgc2V0IE5lZWRzS01TQU49ZmFsc2UuIEl0JiMzOTtzIGEgY2xlYW4gcmVmYWN0b3JpbmcsIHJlYWxseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDk6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdheSBgYS1cdTAwM2Vnb3RvX2NoYWluYCBpcyBkZXJlZmVyZW5jZWQgaW4gYHRjZl9hY3Rpb25fZXhlY2AgYW5kIHBhc3NlZCB0byBgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWNgLiBJdCByZXBsYWNlcyBhbiBgcmN1X2FjY2Vzc19wb2ludGVyYCBjaGVjayBmb2xsb3dlZCBieSBhIHNlcGFyYXRlIGByY3VfZGVyZWZlcmVuY2VfYmhgIHdpdGggYSBzaW5nbGUgYHJjdV9kZXJlZmVyZW5jZV9iaGAgY2FsbCwgcGFzc2luZyB0aGUgcmVzdWx0aW5nIHBvaW50ZXIgdG8gdGhlIGhlbHBlciBmdW5jdGlvbi4gVGhpcyBpcyBhIGxvZ2ljL1JDVSBmaXggdGhhdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgY3JlYXRpbmcgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0aGlzIGNvZGUgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcykgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdheSBgYS1cdTAwM2Vnb3RvX2NoYWluYCBpcyBkZXJlZmVyZW5jZWQgaW4gYHRjZl9hY3Rpb25fZXhlY2AgYW5kIHBhc3NlZCB0byBgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWNgLiBJdCByZXBsYWNlcyBhbiBgcmN1X2FjY2Vzc19wb2ludGVyYCBjaGVjayBmb2xsb3dlZCBieSBhIHNlcGFyYXRlIGByY3VfZGVyZWZlcmVuY2VfYmhgIHdpdGggYSBzaW5nbGUgYHJjdV9kZXJlZmVyZW5jZV9iaGAgY2FsbCwgcGFzc2luZyB0aGUgcmVzdWx0aW5nIHBvaW50ZXIgdG8gdGhlIGhlbHBlciBmdW5jdGlvbi4gVGhpcyBpcyBhIGxvZ2ljL1JDVSBmaXggdGhhdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgY3JlYXRpbmcgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0aGlzIGNvZGUgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcykgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwOTo1ODo1OC4xOTgxMzY5NjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODk5Mjg2NDY1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9DTFNfQUNUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdheSBgYS1cXHUwMDNlZ290b19jaGFpbmAgaXMgZGVyZWZlcmVuY2VkIGluIGB0Y2ZfYWN0aW9uX2V4ZWNgIGFuZCBwYXNzZWQgdG8gYHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjYC4gSXQgcmVwbGFjZXMgYW4gYHJjdV9hY2Nlc3NfcG9pbnRlcmAgY2hlY2sgZm9sbG93ZWQgYnkgYSBzZXBhcmF0ZSBgcmN1X2RlcmVmZXJlbmNlX2JoYCB3aXRoIGEgc2luZ2xlIGByY3VfZGVyZWZlcmVuY2VfYmhgIGNhbGwsIHBhc3NpbmcgdGhlIHJlc3VsdGluZyBwb2ludGVyIHRvIHRoZSBoZWxwZXIgZnVuY3Rpb24uIFRoaXMgaXMgYSBsb2dpYy9SQ1UgZml4IHRoYXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGNyZWF0aW5nIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhpcyBjb2RlIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMpIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBpbiB0aGUgdHJhZmZpYyBjb250cm9sIGFjdGlvbiBleGVjdXRpb24gcGF0aCAoYHRjZl9hY3Rpb25fZXhlY2ApIGJ5IGVuc3VyaW5nIGBhLVxcdTAwM2Vnb3RvX2NoYWluYCBpcyBkZXJlZmVyZW5jZWQgb25seSBvbmNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBkYXRhcGF0aC4gU2luY2UgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIGEgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbiwgbm8gc3BlY2lmaWMgZm9jdXMgc3ltYm9scyBhcmUgcHJvdmlkZWQgdG8gYXZvaWQgc2tld2luZyB0aGUgZnV6emVyJ3MgZGlzdHJpYnV0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwOTo1ODo1OC4xOTgxNDE4OTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNjU4MDkxNDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1MjU3N2MyNWZhNWEwOTkxNTk4ZTJkZTYyN2FmMTlhYjVmYmUwNWQwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDkgMDk6NTg6NTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9hcGkuYyBiL25ldC9zY2hlZC9hY3RfYXBpLmNcXG5pbmRleCBmMTQxNjM0ZGYyMTQ4Li42MDBiNzgwNGJlZmQyIDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9hY3RfYXBpLmNcXG4rKysgYi9uZXQvc2NoZWQvYWN0X2FwaS5jXFxuQEAgLTQxLDExICs0MSw5IEBAIGludCB0Y2ZfZGV2X3F1ZXVlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICgqeG1pdCkoc3RydWN0IHNrX2J1ZmYgKnNrYikpXFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwodGNmX2Rldl9xdWV1ZV94bWl0KTtcXG4gXFxuLXN0YXRpYyB2b2lkIHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEsXFxuK3N0YXRpYyB2b2lkIHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjKGNvbnN0IHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHRjZl9yZXN1bHQgKnJlcylcXG4ge1xcbi1cXHRjb25zdCBzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbiA9IHJjdV9kZXJlZmVyZW5jZV9iaChhLVxcdTAwM2Vnb3RvX2NoYWluKTtcXG4tXFxuIFxcdHJlcy1cXHUwMDNlZ290b190cCA9IHJjdV9kZXJlZmVyZW5jZV9iaChjaGFpbi1cXHUwMDNlZmlsdGVyX2NoYWluKTtcXG4gfVxcbiBcXG5AQCAtMTE3MCwxMiArMTE2OCwxNCBAQCBpbnQgdGNmX2FjdGlvbl9leGVjKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB0Y19hY3Rpb24gKiphY3Rpb25zLFxcbiBcXHRcXHRcXHRcXHRcXHRyZXR1cm4gVENfQUNUX09LO1xcbiBcXHRcXHRcXHR9XFxuIFxcdFxcdH0gZWxzZSBpZiAoVENfQUNUX0VYVF9DTVAocmV0LCBUQ19BQ1RfR09UT19DSEFJTikpIHtcXG4tXFx0XFx0XFx0aWYgKHVubGlrZWx5KCFyY3VfYWNjZXNzX3BvaW50ZXIoYS1cXHUwMDNlZ290b19jaGFpbikpKSB7XFxuK1xcdFxcdFxcdHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluID0gcmN1X2RlcmVmZXJlbmNlX2JoKGEtXFx1MDAzZWdvdG9fY2hhaW4pO1xcbitcXG4rXFx0XFx0XFx0aWYgKHVubGlrZWx5KCFjaGFpbikpIHtcXG4gXFx0XFx0XFx0XFx0dGNmX3NldF9kcm9wX3JlYXNvbihza2IsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICBTS0JfRFJPUF9SRUFTT05fVENfQ0hBSU5fTk9URk9VTkQpO1xcbiBcXHRcXHRcXHRcXHRyZXR1cm4gVENfQUNUX1NIT1Q7XFxuIFxcdFxcdFxcdH1cXG4tXFx0XFx0XFx0dGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWMoYSwgcmVzKTtcXG4rXFx0XFx0XFx0dGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWMoY2hhaW4sIHJlcyk7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGlmIChyZXQgIT0gVENfQUNUX1BJUEUpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDA5OjU4OjU5LjM2NDg3MTg3N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ3Nzc2ODA5ODc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX0NMU19BQ1RcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRyYWZmaWMgY29udHJvbCBhY3Rpb24gZXhlY3V0aW9uIHBhdGggKGB0Y2ZfYWN0aW9uX2V4ZWNgKSBieSBlbnN1cmluZyBgYS1cXHUwMDNlZ290b19jaGFpbmAgaXMgZGVyZWZlcmVuY2VkIG9ubHkgb25jZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgZGF0YXBhdGguIFNpbmNlIHRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyBhIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb24sIG5vIHNwZWNpZmljIGZvY3VzIHN5bWJvbHMgYXJlIHByb3ZpZGVkIHRvIGF2b2lkIHNrZXdpbmcgdGhlIGZ1enplcidzIGRpc3RyaWJ1dGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTI1NzdjMjVmYTVhMDk5MTU5OGUyZGU2MjdhZjE5YWI1ZmJlMDVkMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDkgMDk6NTg6NTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2FwaS5jIGIvbmV0L3NjaGVkL2FjdF9hcGkuY1xuaW5kZXggZjE0MTYzNGRmMjE0OC4uNjAwYjc4MDRiZWZkMiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9hY3RfYXBpLmNcbisrKyBiL25ldC9zY2hlZC9hY3RfYXBpLmNcbkBAIC00MSwxMSArNDEsOSBAQCBpbnQgdGNmX2Rldl9xdWV1ZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsIGludCAoKnhtaXQpKHN0cnVjdCBza19idWZmICpza2IpKVxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTCh0Y2ZfZGV2X3F1ZXVlX3htaXQpO1xuIFxuLXN0YXRpYyB2b2lkIHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEsXG4rc3RhdGljIHZvaWQgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWMoY29uc3Qgc3RydWN0IHRjZl9jaGFpbiAqY2hhaW4sXG4gXHRcdFx0XHQgICAgICAgc3RydWN0IHRjZl9yZXN1bHQgKnJlcylcbiB7XG4tXHRjb25zdCBzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbiA9IHJjdV9kZXJlZmVyZW5jZV9iaChhLVx1MDAzZWdvdG9fY2hhaW4pO1xuLVxuIFx0cmVzLVx1MDAzZWdvdG9fdHAgPSByY3VfZGVyZWZlcmVuY2VfYmgoY2hhaW4tXHUwMDNlZmlsdGVyX2NoYWluKTtcbiB9XG4gXG5AQCAtMTE3MCwxMiArMTE2OCwxNCBAQCBpbnQgdGNmX2FjdGlvbl9leGVjKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB0Y19hY3Rpb24gKiphY3Rpb25zLFxuIFx0XHRcdFx0XHRyZXR1cm4gVENfQUNUX09LO1xuIFx0XHRcdH1cbiBcdFx0fSBlbHNlIGlmIChUQ19BQ1RfRVhUX0NNUChyZXQsIFRDX0FDVF9HT1RPX0NIQUlOKSkge1xuLVx0XHRcdGlmICh1bmxpa2VseSghcmN1X2FjY2Vzc19wb2ludGVyKGEtXHUwMDNlZ290b19jaGFpbikpKSB7XG4rXHRcdFx0c3RydWN0IHRjZl9jaGFpbiAqY2hhaW4gPSByY3VfZGVyZWZlcmVuY2VfYmgoYS1cdTAwM2Vnb3RvX2NoYWluKTtcbitcbitcdFx0XHRpZiAodW5saWtlbHkoIWNoYWluKSkge1xuIFx0XHRcdFx0dGNmX3NldF9kcm9wX3JlYXNvbihza2IsXG4gXHRcdFx0XHRcdFx0ICAgIFNLQl9EUk9QX1JFQVNPTl9UQ19DSEFJTl9OT1RGT1VORCk7XG4gXHRcdFx0XHRyZXR1cm4gVENfQUNUX1NIT1Q7XG4gXHRcdFx0fVxuLVx0XHRcdHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjKGEsIHJlcyk7XG4rXHRcdFx0dGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWMoY2hhaW4sIHJlcyk7XG4gXHRcdH1cbiBcbiBcdFx0aWYgKHJldCAhPSBUQ19BQ1RfUElQRSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDA5OjU4OjU5LjM2NDg3NDMwNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMTQwMjE1MTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFRyYWZmaWMgQ29udHJvbCBBY3Rpb24gQ2hhaW4gTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9zY2hlZC9hY3RfYXBpLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCdzIGNoYW5naW5nIGhvdyB3ZSBoYW5kbGUgdGhlIGdvdG8gY2hhaW4gd2l0aGluIGEgdHJhZmZpYyBjb250cm9sIGFjdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIHRoZSBjaGFuZ2UgaW52b2x2ZXMgdGFraW5nIGBzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbmAgZGlyZWN0bHkgaW4gYHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjYCBpbnN0ZWFkIG9mIHRoZSBtb3JlIGdlbmVyYWwgYHN0cnVjdCB0Y19hY3Rpb24gKmFgLiBUaGUga2V5IHNoaWZ0IGFwcGVhcnMgdG8gYmUgdGhhdCBgYS1cdTAwM2Vnb3RvX2NoYWluYCBpcyBub3cgZGVyZWZlcmVuY2VkIGluIGB0Y2ZfYWN0aW9uX2V4ZWNgIGl0c2VsZiwgcmF0aGVyIHRoYW4gd2l0aGluIHRoZSBgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWNgIGZ1bmN0aW9uLiBUaGlzIHBvdGVudGlhbGx5IG1pdGlnYXRlcyBhIHJhY2UgY29uZGl0aW9uIG9yIG1lbW9yeSBzYWZldHkgaXNzdWXigJRsaWtlbHkgZW5zdXJpbmcgdGhlIGNoYWluIGlzbid0IGFjY2Vzc2VkIGFmdGVyIGl0J3MgYmVlbiBmcmVlZCBvciBiZWNvbWUgaW52YWxpZC5cblxuTm93LCBhIHJlZCBmbGFnIHBvcHMgdXA6IGB0Y2ZfYWN0aW9uX2V4ZWNgIGlzIGEgKmhvdCBwYXRoKiBmdW5jdGlvbi4gSXQncyBjYWxsZWQgZm9yICpldmVyeSogcGFja2V0IHRoYXQgaGl0cyBhIFRDIGFjdGlvbi4gVGhhdCBtZWFucyBwZXJmb3JtYW5jZSBpcyBjcml0aWNhbCBoZXJlLiBJIG5lZWQgdG8gYmUgZG91Ymx5IHN1cmUgb2YgdGhlIGNvcnJlY3RuZXNzIGFuZCBzdGFiaWxpdHkgb2YgdGhpcyBjaGFuZ2UuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gY29uc2lkZXIgZnV6emluZyBpdCBoZWF2aWx5LCBnaXZlbiBpdHMgY3JpdGljYWwgbmF0dXJlLlxuXG5MZXQncyBkaXNzZWN0IHRoaXMgZnVydGhlci4gTG9va2luZyBhdCB0aGUgY29kZSwgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHJlbGF0ZWQgdG8gZGVyZWZlcmVuY2luZyBgYS1cdTAwM2Vnb3RvX2NoYWluYC4gQmVjYXVzZSBgdGNmX2FjdGlvbl9leGVjYCBpcyBob3QsIEkgbXVzdCBhdm9pZCBza2V3aW5nIHRoZSB0ZXN0IGRpc3RyaWJ1dGlvbiB3aXRoIHRoaXMgcGF0Y2guIEkgc2hvdWxkIGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMgYWZmZWN0ZWQgaW4gdGhpcyBwYXRjaC4gQmFzZWQgb24gdGhlIHBhdGNoLCBpdCBzZWVtcyBsaWtlIGB0Y2ZfYWN0aW9uX2V4ZWNgIGFuZCBgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWNgIGFyZSB0aGUgb25seSBtb2RpZmllZCBmdW5jdGlvbnMuIGB0Y2ZfYWN0aW9uX2dvdG9fY2hhaW5fZXhlY2AgaXMgc3RhdGljLCB3aGljaCBpcyBnb29kIHRvIGF2b2lkIGFzIGEgZm9jdXMgc3ltYm9sLiBgdGNmX2FjdGlvbl9leGVjYCBpcyBhbiBleHBvcnRlZCBBUEkgZnVuY3Rpb24gaW4gZGF0YXBhdGguIEdpdmVuIHRoYXQgdGhpcyBpcyBhIGhvdCBwYXRoIGZ1bmN0aW9uLCBhY2NvcmRpbmcgdG8gdGhlIGd1aWRhbmNlLCBJIHNob3VsZG4ndCBsaXN0IGl0IGluIGBGb2N1c1N5bWJvbHNgLlxuXG5Pa2F5LCB0aGVyZSBhcmUgbm8gb3RoZXIgZnVuY3Rpb25zLiBHaXZlbiB0aGUgaW5zdHJ1Y3Rpb25zIHRvIGF2b2lkIGhvdC1wYXRoIGFuZCBpbnRlcm5hbCBzdGF0aWMgZnVuY3Rpb25zLCB0aGUgYEZvY3VzU3ltYm9sc2AgZW50cnkgc2hvdWxkIGJlIGVtcHR5LlxuXG5GaW5hbGx5LCBJIHNob3VsZCBjaGVjayB0aGUgY29uZmlnOiB0aGlzIGNvZGUgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX05FVF9DTFNfQUNUYCBpcyBlbmFibGVkLCB3aGljaCBpcyBzdGFuZGFyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI5NCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDA5OjU5OjA5LjUwNTA5MjI1NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njg5MTY1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvYmotLiphY3RfYXBpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvTWFrZWZpbGU9MTA9b2JqLSQoQ09ORklHX05FVF9DTFMpXFx0XFx0Kz0gY2xzX2FwaS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19ORVRfQ0xTX0FDVClcXHQrPSBhY3RfYXBpLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtMTItb2JqLSQoQ09ORklHX05FVF9BQ1RfUE9MSUNFKVxcdCs9IGFjdF9wb2xpY2Uub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwOTo1OTowOS41NTE5ODgwN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1ODE3NjU3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipEZWNvbnN0cnVjdGluZyBgQ09ORklHX05FVF9DTFNfQUNUYCoqXG5cbkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgcmV2b2x2ZXMgYXJvdW5kIGBDT05GSUdfTkVUX0NMU19BQ1RgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBpbW1lZGlhdGVseSBkaXZlIGludG8gaXRzIGRlcGVuZGVuY2llcy4gSXQncyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLCBhbmQgdW5kZXJzdGFuZGluZyBpdHMgcGxhY2UgaW4gdGhlIGRlcGVuZGVuY3kgdHJlZSBpcyBrZXkgdG8gY29tcHJlaGVuZGluZyBpdHMgcm9sZSBhbmQgcG90ZW50aWFsIGltcGFjdC4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgaWYgaXQgcmVsaWVzIG9uIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBvciBmZWF0dXJlcy4gVGhpcyBrbm93bGVkZ2UgaXMgY3J1Y2lhbCBmb3IgdHJvdWJsZXNob290aW5nLCBvcHRpbWl6aW5nLCBvciBzaW1wbHkgZW5zdXJpbmcgYSBzdGFibGUgY29uZmlndXJhdGlvbi4gTGV0J3Mgc2VlIHdoYXQgd2UgZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY1MiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDA5OjU5OjEzLjEzMzc1NTg4NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDQ3NjQwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0NMU19BQ1RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9NjkwPWNvbmZpZyBORVRfRU1BVENIX0lQVFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNzAxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjcwMjpjb25maWcgTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MDMtXFx0Ym9vbCBcXFwiQWN0aW9uc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDk6NTk6MTMuMTc4MjM2OTIzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODg4NDA5NjI3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIGBuZXQvc2NoZWQvS2NvbmZpZ2AqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgYG5ldC9zY2hlZC9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNzAyLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoYXQgYXJlYS4gSXQncyBsaWtlbHkgcmVsYXRlZCB0byB0cmFmZmljIHNoYXBpbmcgb3IgcXVldWVpbmcgZGlzY2lwbGluZXMsIGdpdmVuIHRoZSBkaXJlY3RvcnkuIEknbSBob3BpbmcgdG8gZ2V0IGEgcXVpY2sgb3ZlcnZpZXcgb2YgdGhlIGF2YWlsYWJsZSBmZWF0dXJlcyBhbmQgZGVwZW5kZW5jaWVzLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHVuZGVyc3RhbmRpbmcgaG93IHNwZWNpZmljIG9wdGlvbnMgbWlnaHQgYmUgaW5mbHVlbmNpbmcgdGhlIHBlcmZvcm1hbmNlIG9yIGZ1bmN0aW9uYWxpdHkgSSdtIHNlZWluZyBlbHNld2hlcmUuIFRoaXMgaW5pdGlhbCBpbnZlc3RpZ2F0aW9uIHdpbGwgaGVscCBuYXJyb3cgZG93biB0aGUgc2NvcGUgb2Ygd2hhdCBJJ20gbG9va2luZyBhdC4gSSdtIGV4cGVjdGluZyB0byBlaXRoZXIgcmVmcmVzaCBteSBtZW1vcnkgb2Yga25vd24gb3B0aW9ucyBvciBlbmNvdW50ZXIgc29tZXRoaW5nIG5ldyB0aGF0IG1pZ2h0IHNwYXJrIGEgbmV3IGxpbmUgb2YgZW5xdWlyeS4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVyZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MzkxNiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDA5OjU5OjIyLjA2MjMzNTQ2NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1NzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY5MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY5MDpcXHRjb25maWcgTkVUX0VNQVRDSF9JUFRcXG4gNjkxOlxcdFxcdHRyaXN0YXRlIFxcXCJJUHRhYmxlcyBNYXRjaGVzXFxcIlxcbiA2OTI6XFx0XFx0ZGVwZW5kcyBvbiBORVRfRU1BVENIIFxcdTAwMjZcXHUwMDI2IE5FVEZJTFRFUiBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVJfWFRBQkxFU1xcbiA2OTM6XFx0XFx0aGVscFxcbiA2OTQ6XFx0XFx0ICBTYXkgWSBoZXJlIHRvIGJlIGFibGUgdG8gY2xhc3NpZnkgcGFja2V0cyBiYXNlZCBvbiBpcHRhYmxlc1xcbiA2OTU6XFx0XFx0ICBtYXRjaGVzLlxcbiA2OTY6XFx0XFx0ICBDdXJyZW50IHN1cHBvcnRlZCBtYXRjaCBpcyBcXFwicG9saWN5XFxcIiB3aGljaCBhbGxvd3MgcGFja2V0IGNsYXNzaWZpY2F0aW9uXFxuIDY5NzpcXHRcXHQgIGJhc2VkIG9uIElQc2VjIHBvbGljeSB0aGF0IHdhcyB1c2VkIGR1cmluZyBkZWNhcHN1bGF0aW9uXFxuIDY5ODpcXHRcXG4gNjk5OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiA3MDA6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgZW1faXB0LlxcbiA3MDE6XFx0XFxuIDcwMjpcXHRjb25maWcgTkVUX0NMU19BQ1RcXG4gNzAzOlxcdFxcdGJvb2wgXFxcIkFjdGlvbnNcXFwiXFxuIDcwNDpcXHRcXHRzZWxlY3QgTkVUX0NMU1xcbiA3MDU6XFx0XFx0c2VsZWN0IE5FVF9YR1JFU1NcXG4gNzA2OlxcdFxcdGhlbHBcXG4gNzA3OlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdHJhZmZpYyBjb250cm9sIGFjdGlvbnMuIEFjdGlvbnNcXG4gNzA4OlxcdFxcdCAgZ2V0IGF0dGFjaGVkIHRvIGNsYXNzaWZpZXJzIGFuZCBhcmUgaW52b2tlZCBhZnRlciBhIHN1Y2Nlc3NmdWxcXG4gNzA5OlxcdFxcdCAgY2xhc3NpZmljYXRpb24uIFRoZXkgYXJlIHVzZWQgdG8gb3ZlcndyaXRlIHRoZSBjbGFzc2lmaWNhdGlvblxcbiA3MTA6XFx0XFx0ICByZXN1bHQsIGluc3RhbnRseSBkcm9wIG9yIHJlZGlyZWN0IHBhY2tldHMsIGV0Yy5cXG4gNzExOlxcdFxcbiA3MTI6XFx0XFx0ICBBIHJlY2VudCB2ZXJzaW9uIG9mIHRoZSBpcHJvdXRlMiBwYWNrYWdlIGlzIHJlcXVpcmVkIHRvIHVzZVxcbiA3MTM6XFx0XFx0ICBleHRlbmRlZCBtYXRjaGVzLlxcbiA3MTQ6XFx0XFxuIDcxNTpcXHRjb25maWcgTkVUX0FDVF9QT0xJQ0VcXG4gNzE2OlxcdFxcdHRyaXN0YXRlIFxcXCJUcmFmZmljIFBvbGljaW5nXFxcIlxcbiA3MTc6XFx0XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbiA3MTg6XFx0XFx0aGVscFxcbiA3MTk6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGRvIHRyYWZmaWMgcG9saWNpbmcsIGkuZS4gc3RyaWN0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDA5OjU5OjIyLjA2MjQzMjMzNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNTIzMzgyNDczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipOYXZpZ2F0aW5nIHRoZSBEZXBlbmRlbmN5IFdlYioqXG5cbk9rYXksIHNvIGBORVRfQ0xTX0FDVGAgaXMgYSBib29sZWFuLCB3aGljaCBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJdCBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBhbnkgKmRpcmVjdCogZGVwZW5kZW5jaWVzLCB3aGljaCBpcyBhIGdvb2Qgc2lnbiDigJMgbGVzcyBjb21wbGV4aXR5IHRvIHdvcnJ5IGFib3V0IGluaXRpYWxseS4gQnV0IHRoZSBmYWN0IHRoYXQgaXQncyBuZXN0ZWQgdW5kZXIgYG1lbnVjb25maWcgTkVUX1NDSEVEYCBpcyBhIGNydWNpYWwgZGV0YWlsLiBUaGF0IG1lYW5zIGBORVRfU0NIRURgIGlzIGEgcGFyZW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJIG5lZWQgdG8gZGlnIGludG8gYE5FVF9TQ0hFRGAncyBkZXBlbmRlbmNpZXMgYW5kIGhvdyBpdCBpbmZsdWVuY2VzIGBORVRfQ0xTX0FDVGAuIEdvdHRhIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIGZvciB0aGF0IHJlbGF0aW9uc2hpcC4gVW5kZXJzdGFuZGluZyB0aGUgYnJvYWRlciBjb250ZXh0IGFyb3VuZCBgTkVUX1NDSEVEYCB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGBORVRfQ0xTX0FDVGAuIFByb2JhYmx5IG1lYW5zIHNvbWV0aGluZyBhYm91dCBuZXR3b3JrIHNjaGVkdWxpbmcsIHNvIGEgcXVpY2sgZGl2ZSBpbiB0aGUgY29kZSBhc3NvY2lhdGVkIHdpdGggc2NoZWR1bGluZyB3b3VsZCBiZSB3aXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjAyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwOTo1OTozMy41ODU4MTcxNjlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NTU2MDM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lbnVjb25maWcgTkVUX1NDSEVEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnLTUtXFxubmV0L3NjaGVkL0tjb25maWc6NjptZW51Y29uZmlnIE5FVF9TQ0hFRFxcbm5ldC9zY2hlZC9LY29uZmlnLTctXFx0Ym9vbCBcXFwiUW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwOTo1OTozMy42MzMzNzg1NzVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM0MTk0OTQxNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhc29uaW5nIGZvciBQYXRjaCBBbmFseXNpcyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIHRoaXMgcGF0Y2ggZGVmaW5pdGVseSByZXF1aXJlcyBgTkVUX1NDSEVEYCBhbmQgYE5FVF9DTFNfQUNUYCwgdGhvc2UgYXJlIHRoZSBiYXNlIGNvbmZpZ3VyYXRpb25zLiBOb3csIHRoZSBtZWF0IG9mIHRoZSBpc3N1ZTogaXQncyBhIHJhY2UgY29uZGl0aW9uIGZpeCByZWxhdGVkIHRvIGBhLVx1MDAzZWdvdG9fY2hhaW5gIGluIGB0Y2ZfYWN0aW9uX2V4ZWNgLiBFc3NlbnRpYWxseSwgdGhlIG9yaWdpbmFsIGNvZGUgdXNlZCBgcmN1X2FjY2Vzc19wb2ludGVyYCB0byBjaGVjayBmb3IgbnVsbCwgYW5kIHRoZW4gaW1tZWRpYXRlbHkgZGVyZWZlcmVuY2VkIGBhLVx1MDAzZWdvdG9fY2hhaW5gIGFnYWluIHdpdGggYHJjdV9kZXJlZmVyZW5jZV9iaGAsIHdoaWNoIGlzIGEgcHJvYmxlbSBpZiBgYS1cdTAwM2Vnb3RvX2NoYWluYCBjb3VsZCBjaGFuZ2UgY29uY3VycmVudGx5LiBUaGUgZml4IGlzIHN0cmFpZ2h0Zm9yd2FyZDogZGVyZWZlcmVuY2UgaXQgKm9uY2UqIHdpdGggYHJjdV9kZXJlZmVyZW5jZV9iaGAgYW5kIHN0b3JlIHRoZSByZXN1bHQsIGVuc3VyaW5nIGNvbnNpc3RlbnQgYWNjZXNzLiBUaGlzIGF2b2lkcyB0aGUgcG90ZW50aWFsIGZvciBhIGRpZmZlcmVudCAob3IgTlVMTCkgcG9pbnRlciB0byBiZSBhY2Nlc3NlZCB0aGUgc2Vjb25kIHRpbWUsIHRodXMgcHJldmVudGluZyBhIGNyYXNoIG9yIGluY29ycmVjdCBiZWhhdmlvciBpbiB0aGUgdHJhZmZpYyBjb250cm9sIGFjdGlvbiBleGVjdXRpb24uXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeDsgaXQgY29ycmVjdHMgYSBidWcgd2l0aGluIHRoZSB0cmFmZmljIGNvbnRyb2wgYWN0aW9uIGV4ZWN1dGlvbiBwYXRoLiBHaXZlbiB0aGF0IGB0Y2ZfYWN0aW9uX2V4ZWNgIGlzIHJpZ2h0IGluIHRoZSBob3QgcGF0aCAtLSBpdCdzIGNhbGxlZCBmb3IgZXZlcnkgcGFja2V0IHRoYXQgaGl0cyBhIHRjIGZpbHRlciB3aXRoIGFjdGlvbnMgLS0gaXQncyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBIb3dldmVyLCBiZWNhdXNlIGl0J3Mgc28gZ2VuZXJpYywgc3BlY2lmeWluZyBzcGVjaWZpYyBmdW5jdGlvbnMgaW4gYEZvY3VzU3ltYm9sc2Agc2VlbXMgdW53aXNlLCBhcyBpdCB3b3VsZCBza2V3IHRoZSBmdXp6ZXIuIFNvLCBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIGVtcHR5LiBUaGUgcGF0Y2gncyBpbXBhY3QgaXMgcmVsYXRpdmVseSBjb250YWluZWQsIGZpeGluZyBhIHJhY2UsIGJ1dCB0aGUgcmFjZSBpcyBhdCBhIHZlcnkgY2VudHJhbCBsb2NhdGlvbiB0aGF0IGRvZXMgZ2V0IHRyaWdnZXJlZCBxdWl0ZSBvZnRlbi4gVGhhdCBhbHNvIG1lYW5zIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSB0cnVlLlxuXG5TbywgaW4gc3VtbWFyeTogdGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gYHRjZl9hY3Rpb25fZXhlY2AgcmVsYXRlZCB0byB0aGUgYGEtXHUwMDNlZ290b19jaGFpbmAgcG9pbnRlci4gU2luY2UgdGhlIGZpeGVkIGZ1bmN0aW9uIGlzIGluIHRoZSBob3QgcGF0aCwgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBlbXB0eSB0byBub3Qgc2tldyB0aGUgZnV6emVyLiBJdCByZXF1aXJlcyBgQ09ORklHX05FVF9TQ0hFRGAgYW5kIGBDT05GSUdfTkVUX0NMU19BQ1RgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTE0LCJPdXRwdXRUb2tlbnMiOjEyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwOTo1OTo0Ny4wNTI4NzU5NjhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODgwMjIxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSEVEXCIsXG4gICAgXCJORVRfQ0xTX0FDVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBpbiB0aGUgdHJhZmZpYyBjb250cm9sIGFjdGlvbiBleGVjdXRpb24gcGF0aCAoYHRjZl9hY3Rpb25fZXhlY2ApIGJ5IGVuc3VyaW5nIGBhLVxcdTAwM2Vnb3RvX2NoYWluYCBpcyBkZXJlZmVyZW5jZWQgb25seSBvbmNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBkYXRhcGF0aC4gU2luY2UgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIGEgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbiwgbm8gc3BlY2lmaWMgZm9jdXMgc3ltYm9scyBhcmUgcHJvdmlkZWQgdG8gYXZvaWQgc2tld2luZyB0aGUgZnV6emVyJ3MgZGlzdHJpYnV0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX0NMU19BQ1RcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRyYWZmaWMgY29udHJvbCBhY3Rpb24gZXhlY3V0aW9uIHBhdGggKGB0Y2ZfYWN0aW9uX2V4ZWNgKSBieSBlbnN1cmluZyBgYS1cXHUwMDNlZ290b19jaGFpbmAgaXMgZGVyZWZlcmVuY2VkIG9ubHkgb25jZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgZGF0YXBhdGguIFNpbmNlIHRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyBhIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb24sIG5vIHNwZWNpZmljIGZvY3VzIHN5bWJvbHMgYXJlIHByb3ZpZGVkIHRvIGF2b2lkIHNrZXdpbmcgdGhlIGZ1enplcidzIGRpc3RyaWJ1dGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDk6NTk6NDcuMTQxNjg2MjUzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDA0OTMwMDA2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDA5OjU5OjQ3LjE0MjIzMTczMloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDA0ODc0NzgzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdheSBgYS1cXHUwMDNlZ290b19jaGFpbmAgaXMgZGVyZWZlcmVuY2VkIGluIGB0Y2ZfYWN0aW9uX2V4ZWNgIGFuZCBwYXNzZWQgdG8gYHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjYC4gSXQgcmVwbGFjZXMgYW4gYHJjdV9hY2Nlc3NfcG9pbnRlcmAgY2hlY2sgZm9sbG93ZWQgYnkgYSBzZXBhcmF0ZSBgcmN1X2RlcmVmZXJlbmNlX2JoYCB3aXRoIGEgc2luZ2xlIGByY3VfZGVyZWZlcmVuY2VfYmhgIGNhbGwsIHBhc3NpbmcgdGhlIHJlc3VsdGluZyBwb2ludGVyIHRvIHRoZSBoZWxwZXIgZnVuY3Rpb24uIFRoaXMgaXMgYSBsb2dpYy9SQ1UgZml4IHRoYXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGNyZWF0aW5nIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhpcyBjb2RlIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMpIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1MjU3N2MyNWZhNWEwOTkxNTk4ZTJkZTYyN2FmMTlhYjVmYmUwNWQwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgOSAwOTo1ODo1NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfYXBpLmMgYi9uZXQvc2NoZWQvYWN0X2FwaS5jXG5pbmRleCBmMTQxNjM0ZGYyMTQ4Li42MDBiNzgwNGJlZmQyIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL2FjdF9hcGkuY1xuKysrIGIvbmV0L3NjaGVkL2FjdF9hcGkuY1xuQEAgLTQxLDExICs0MSw5IEBAIGludCB0Y2ZfZGV2X3F1ZXVlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICgqeG1pdCkoc3RydWN0IHNrX2J1ZmYgKnNrYikpXG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHRjZl9kZXZfcXVldWVfeG1pdCk7XG4gXG4tc3RhdGljIHZvaWQgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWMoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcbitzdGF0aWMgdm9pZCB0Y2ZfYWN0aW9uX2dvdG9fY2hhaW5fZXhlYyhjb25zdCBzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbixcbiBcdFx0XHRcdCAgICAgICBzdHJ1Y3QgdGNmX3Jlc3VsdCAqcmVzKVxuIHtcbi1cdGNvbnN0IHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluID0gcmN1X2RlcmVmZXJlbmNlX2JoKGEtXHUwMDNlZ290b19jaGFpbik7XG4tXG4gXHRyZXMtXHUwMDNlZ290b190cCA9IHJjdV9kZXJlZmVyZW5jZV9iaChjaGFpbi1cdTAwM2VmaWx0ZXJfY2hhaW4pO1xuIH1cbiBcbkBAIC0xMTcwLDEyICsxMTY4LDE0IEBAIGludCB0Y2ZfYWN0aW9uX2V4ZWMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRjX2FjdGlvbiAqKmFjdGlvbnMsXG4gXHRcdFx0XHRcdHJldHVybiBUQ19BQ1RfT0s7XG4gXHRcdFx0fVxuIFx0XHR9IGVsc2UgaWYgKFRDX0FDVF9FWFRfQ01QKHJldCwgVENfQUNUX0dPVE9fQ0hBSU4pKSB7XG4tXHRcdFx0aWYgKHVubGlrZWx5KCFyY3VfYWNjZXNzX3BvaW50ZXIoYS1cdTAwM2Vnb3RvX2NoYWluKSkpIHtcbitcdFx0XHRzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbiA9IHJjdV9kZXJlZmVyZW5jZV9iaChhLVx1MDAzZWdvdG9fY2hhaW4pO1xuK1xuK1x0XHRcdGlmICh1bmxpa2VseSghY2hhaW4pKSB7XG4gXHRcdFx0XHR0Y2Zfc2V0X2Ryb3BfcmVhc29uKHNrYixcbiBcdFx0XHRcdFx0XHQgICAgU0tCX0RST1BfUkVBU09OX1RDX0NIQUlOX05PVEZPVU5EKTtcbiBcdFx0XHRcdHJldHVybiBUQ19BQ1RfU0hPVDtcbiBcdFx0XHR9XG4tXHRcdFx0dGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWMoYSwgcmVzKTtcbitcdFx0XHR0Y2ZfYWN0aW9uX2dvdG9fY2hhaW5fZXhlYyhjaGFpbiwgcmVzKTtcbiBcdFx0fVxuIFxuIFx0XHRpZiAocmV0ICE9IFRDX0FDVF9QSVBFKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDk6NTk6NDcuMTQyMjM0MDgyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMDQ4NzIwMTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJDVSBEZXJlZmVyZW5jZSBSZWZhY3RvcmluZyBpbiBgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWNgKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBwcmltYXJ5IGNoYW5nZSBpcyB0aGUgc2lnbmF0dXJlIG9mIGB0Y2ZfYWN0aW9uX2dvdG9fY2hhaW5fZXhlY2AgaW4gYG5ldC9zY2hlZC9hY3RfYXBpLmNgLiBJdCdzIGdvaW5nIGZyb20gdGFraW5nIGEgYHRjX2FjdGlvbmAgc3RydWN0IHBvaW50ZXIgdG8gYSBgdGNmX2NoYWluYCBzdHJ1Y3QgcG9pbnRlciwgd2hpY2ggaW1tZWRpYXRlbHkgY2x1ZXMgbWUgaW4gdGhhdCB0aGlzIGlzIGxpa2VseSBhYm91dCBzaW1wbGlmeWluZyBSQ1UgaGFuZGxpbmcuIFRoZXkndmUgbW92ZWQgdGhlIFJDVSBkZXJlZmVyZW5jZSBvZiBgYS1cdTAwM2Vnb3RvX2NoYWluYCBvdXQgb2YgdGhlIGNhbGxlZCBmdW5jdGlvbiBhbmQgaW50byB0aGUgY2FsbGVyLCBgdGNmX2FjdGlvbl9leGVjYC5cblxuQmFzaWNhbGx5LCB0aGV5J3JlIHJlcGxhY2luZyBgcmN1X2FjY2Vzc19wb2ludGVyKGEtXHUwMDNlZ290b19jaGFpbilgIHdpdGggYHJjdV9kZXJlZmVyZW5jZV9iaChhLVx1MDAzZWdvdG9fY2hhaW4pYCAqaW4qIGB0Y2ZfYWN0aW9uX2V4ZWNgLCBzdG9yaW5nIGl0IGluIGEgbG9jYWwgYGNoYWluYCB2YXJpYWJsZSwgYW5kIHRoZW4gcGFzc2luZyB0aGF0ICpkZXJlZmVyZW5jZWQqIGBjaGFpbmAgcG9pbnRlciBkaXJlY3RseSB0byBgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWNgLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IHRoaXMgY2xlYW5zIHRoaW5ncyB1cCBhbmQgYXZvaWRzIHBvdGVudGlhbCBjb25mdXNpb24uIFByZXZpb3VzbHksIGB0Y2ZfYWN0aW9uX2dvdG9fY2hhaW5fZXhlY2Agd2FzIGRvaW5nIGFuIFJDVSBkZXJlZmVyZW5jZSAqYWdhaW4qIHdoaWNoIGlzIGEgYml0IHJlZHVuZGFudCBnaXZlbiB0aGUgY2hlY2sgaGFwcGVuaW5nIGluIGB0Y2ZfYWN0aW9uX2V4ZWNgLiBUaGlzIGZpeGVzIGEgcG9zc2libGUgaXNzdWUgd2hlcmUgdGhlIHR3byBkZXJlZmVyZW5jZXMgKmNvdWxkKiB0aGVvcmV0aWNhbGx5IGhhdmUgZGlmZmVyZW50IHZpZXdzIG9mIHRoZSBkYXRhIGluIGEgdmVyeSBzbWFsbCB3aW5kb3csIGFsdGhvdWdoIEkgdGhpbmsgdGhpcyBpcyBleHRyZW1lbHkgdW5saWtlbHkgaW4gcHJhY3RpY2UgZ2l2ZW4gdGhlIGNvbnRleHQuIEJldHRlciB0byBkZXJlZmVyZW5jZSBvbmNlLCBhbmQgYmUgZG9uZSB3aXRoIGl0LlxuXG5JJ20gY2hlY2tpbmcgaWYgdGhlcmUncyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiBObywgaXQncyBqdXN0IHBvaW50ZXIgZGVyZWZlcmVuY2luZyBhbmQgcGFzc2luZy4gS01TQU4gYW5kIEtBU0FOIHdvdWxkIGRlZmluaXRlbHkgY2F0Y2ggYW55dGhpbmcgdW50b3dhcmQuIFRoZXJlJ3Mgbm8gbmV3IGFsbG9jYXRpb25zIG9yIGFueXRoaW5nIGxpa2UgdGhhdC4gS01TQU4gd291bGQgZmluZCBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgbGVha3MuIEtBU0FOIHdvdWxkIGNhdGNoIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzLlxuXG5TbywgSSdtIGNvbmZpZGVudCB0aGVyZSdzIG5vIHJpc2suIEknbGwgc2V0IE5lZWRzS01TQU49ZmFsc2UuIEl0J3MgYSBjbGVhbiByZWZhY3RvcmluZywgcmVhbGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjkxLCJPdXRwdXRUb2tlbnMiOjIwMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDA5OjU5OjU3LjE5MDk1ODM3NloiLCJTZXEiOjE2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdheSBgYS1cXHUwMDNlZ290b19jaGFpbmAgaXMgZGVyZWZlcmVuY2VkIGluIGB0Y2ZfYWN0aW9uX2V4ZWNgIGFuZCBwYXNzZWQgdG8gYHRjZl9hY3Rpb25fZ290b19jaGFpbl9leGVjYC4gSXQgcmVwbGFjZXMgYW4gYHJjdV9hY2Nlc3NfcG9pbnRlcmAgY2hlY2sgZm9sbG93ZWQgYnkgYSBzZXBhcmF0ZSBgcmN1X2RlcmVmZXJlbmNlX2JoYCB3aXRoIGEgc2luZ2xlIGByY3VfZGVyZWZlcmVuY2VfYmhgIGNhbGwsIHBhc3NpbmcgdGhlIHJlc3VsdGluZyBwb2ludGVyIHRvIHRoZSBoZWxwZXIgZnVuY3Rpb24uIFRoaXMgaXMgYSBsb2dpYy9SQ1UgZml4IHRoYXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGNyZWF0aW5nIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhpcyBjb2RlIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMpIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgd2F5IGBhLVxcdTAwM2Vnb3RvX2NoYWluYCBpcyBkZXJlZmVyZW5jZWQgaW4gYHRjZl9hY3Rpb25fZXhlY2AgYW5kIHBhc3NlZCB0byBgdGNmX2FjdGlvbl9nb3RvX2NoYWluX2V4ZWNgLiBJdCByZXBsYWNlcyBhbiBgcmN1X2FjY2Vzc19wb2ludGVyYCBjaGVjayBmb2xsb3dlZCBieSBhIHNlcGFyYXRlIGByY3VfZGVyZWZlcmVuY2VfYmhgIHdpdGggYSBzaW5nbGUgYHJjdV9kZXJlZmVyZW5jZV9iaGAgY2FsbCwgcGFzc2luZyB0aGUgcmVzdWx0aW5nIHBvaW50ZXIgdG8gdGhlIGhlbHBlciBmdW5jdGlvbi4gVGhpcyBpcyBhIGxvZ2ljL1JDVSBmaXggdGhhdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgY3JlYXRpbmcgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0aGlzIGNvZGUgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcykgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4rhl7[1] Phase: Succeeded StartedAt: 2026-08-09 10:00:08 +0000 UTC FinishedAt: 2026-08-09 10:00:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4rhl7[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-09 10:00:08 +0000 UTC FinishedAt: 2026-08-09 10:00:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4rhl7[2] Phase: Succeeded StartedAt: 2026-08-09 10:00:08 +0000 UTC FinishedAt: 2026-08-09 13:40:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-09 10:00:08 +0000 UTC FinishedAt: 2026-08-09 13:40:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-09 10:00:08 +0000 UTC FinishedAt: 2026-08-09 10:00:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-09 10:00:08 +0000 UTC FinishedAt: 2026-08-09 10:00:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflow4rhl7/series-workflow4rhl7-convert-artifact-103892121/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-09 10:00:18 +0000 UTC FinishedAt: 2026-08-09 10:16:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-09 10:00:18 +0000 UTC FinishedAt: 2026-08-09 10:16:53 +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:*854d1ead-c2a9-42ec-8573-34c78fbcd0d4,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-workflow4rhl7/series-workflow4rhl7-convert-artifact-103892121/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": "8f3c8343-be24-4879-b25d-d00165a8ee46", "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-workflow4rhl7/series-workflow4rhl7-build-action-4280969271/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-09 10:00:18 +0000 UTC FinishedAt: 2026-08-09 10:16:43 +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:*854d1ead-c2a9-42ec-8573-34c78fbcd0d4,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-workflow4rhl7/series-workflow4rhl7-convert-artifact-103892121/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": "8f3c8343-be24-4879-b25d-d00165a8ee46", "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-workflow4rhl7/series-workflow4rhl7-build-action-4280969271/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-09 10:16:53 +0000 UTC FinishedAt: 2026-08-09 10:16:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-09 10:16:53 +0000 UTC FinishedAt: 2026-08-09 10:16:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-09 10:16:53 +0000 UTC FinishedAt: 2026-08-09 10:17:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-09 10:16:53 +0000 UTC FinishedAt: 2026-08-09 10:16:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflow4rhl7/series-workflow4rhl7-convert-artifact-639534956/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-09 10:17:03 +0000 UTC FinishedAt: 2026-08-09 10:18:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-09 10:17:03 +0000 UTC FinishedAt: 2026-08-09 10:18:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8f3c8343-be24-4879-b25d-d00165a8ee46,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-workflow4rhl7/series-workflow4rhl7-build-action-4280969271/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-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-09 10:18:54 +0000 UTC FinishedAt: 2026-08-09 10:18:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-09 10:18:54 +0000 UTC FinishedAt: 2026-08-09 10:18:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-09 10:18:54 +0000 UTC FinishedAt: 2026-08-09 10:35:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-09 10:18:54 +0000 UTC FinishedAt: 2026-08-09 10:35:26 +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:*854d1ead-c2a9-42ec-8573-34c78fbcd0d4,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-workflow4rhl7/series-workflow4rhl7-convert-artifact-639534956/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": "4cee9873-7811-4389-891f-2d70e6be35c0", "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-workflow4rhl7/series-workflow4rhl7-build-action-883252744/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-09 10:18:54 +0000 UTC FinishedAt: 2026-08-09 10:35:16 +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:*854d1ead-c2a9-42ec-8573-34c78fbcd0d4,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-workflow4rhl7/series-workflow4rhl7-convert-artifact-639534956/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": "4cee9873-7811-4389-891f-2d70e6be35c0", "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-workflow4rhl7/series-workflow4rhl7-build-action-883252744/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-09 10:35:26 +0000 UTC FinishedAt: 2026-08-09 10:35:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-09 10:35:26 +0000 UTC FinishedAt: 2026-08-09 10:35:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-09 10:35:26 +0000 UTC FinishedAt: 2026-08-09 10:37:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-09 10:35:26 +0000 UTC FinishedAt: 2026-08-09 10:37:15 +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:*4cee9873-7811-4389-891f-2d70e6be35c0,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-workflow4rhl7/series-workflow4rhl7-build-action-883252744/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-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-09 10:37:25 +0000 UTC FinishedAt: 2026-08-09 13:40:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-09 10:37:25 +0000 UTC FinishedAt: 2026-08-09 13:40:12 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"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:*8f3c8343-be24-4879-b25d-d00165a8ee46,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4cee9873-7811-4389-891f-2d70e6be35c0,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-workflow4rhl7/series-workflow4rhl7-build-action-4280969271/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-workflow4rhl7/series-workflow4rhl7-build-action-883252744/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-09 10:37:25 +0000 UTC FinishedAt: 2026-08-09 10:37:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-09 10:37:25 +0000 UTC FinishedAt: 2026-08-09 10:37:29 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"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-workflow4rhl7/series-workflow4rhl7-convert-artifact-3366995029/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-09 10:37:25 +0000 UTC FinishedAt: 2026-08-09 10:37:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-09 10:37:25 +0000 UTC FinishedAt: 2026-08-09 10:37:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-09 10:37:25 +0000 UTC FinishedAt: 2026-08-09 10:37:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-09 10:37:35 +0000 UTC FinishedAt: 2026-08-09 13:40:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4rhl7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT"],"series_id":"441c0025-c4ec-46c2-b131-a2f8ddf02c9f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-09 10:37:35 +0000 UTC FinishedAt: 2026-08-09 13:40:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8f3c8343-be24-4879-b25d-d00165a8ee46,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4cee9873-7811-4389-891f-2d70e6be35c0,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-workflow4rhl7/series-workflow4rhl7-build-action-4280969271/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-workflow4rhl7/series-workflow4rhl7-build-action-883252744/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-workflow4rhl7/series-workflow4rhl7-convert-artifact-3366995029/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,}